From c5140a28bc0cb9c243f5d98b139e7a33c547c335 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Sat, 5 Jan 2013 14:30:15 -0500 Subject: [PATCH] Add aloha as core module Module from srsgores/devel moved from downloaded/calipso-aloha-master to core/aloha --- modules/core/aloha/.gitignore | 1 + modules/core/aloha/aloha.js | 90 + modules/core/aloha/package.json | 12 + .../aloha/static/css/aloha-common-extra.css | 23 + modules/core/aloha/static/css/aloha-core.css | 21 + modules/core/aloha/static/css/aloha-reset.css | 25 + .../core/aloha/static/css/aloha-sidebar.css | 218 + modules/core/aloha/static/css/aloha.css | 143 + modules/core/aloha/static/img/arrow-down.png | Bin 0 -> 276 bytes modules/core/aloha/static/img/arrow-left.png | Bin 0 -> 273 bytes modules/core/aloha/static/img/arrow.png | Bin 0 -> 494 bytes modules/core/aloha/static/img/base-multi.png | Bin 0 -> 2492 bytes modules/core/aloha/static/img/base.png | Bin 0 -> 3762 bytes modules/core/aloha/static/img/bg.png | Bin 0 -> 205446 bytes .../aloha/static/img/breadcrumb-divider.png | Bin 0 -> 226 bytes .../core/aloha/static/img/gentics-logo.png | Bin 0 -> 2014 bytes modules/core/aloha/static/img/grabhandle.png | Bin 0 -> 112 bytes modules/core/aloha/static/img/maximize.png | Bin 0 -> 123 bytes .../core/aloha/static/img/multisplit-base.jpg | Bin 0 -> 929 bytes .../aloha/static/img/multisplit-close.gif | Bin 0 -> 210 bytes .../core/aloha/static/img/multisplit-open.gif | Bin 0 -> 207 bytes modules/core/aloha/static/img/pin.png | Bin 0 -> 333 bytes .../core/aloha/static/img/removeformat.png | Bin 0 -> 193 bytes modules/core/aloha/static/img/text_indent.png | Bin 0 -> 290 bytes .../aloha/static/img/text_indent_remove.png | Bin 0 -> 288 bytes .../static/lib/aloha-jquery-noconflict.js | 12 + modules/core/aloha/static/lib/aloha.js | 476 + .../core/aloha/static/lib/aloha/block-jump.js | 149 + .../core/aloha/static/lib/aloha/command.js | 277 + .../core/aloha/static/lib/aloha/console.js | 343 + .../static/lib/aloha/contenthandlermanager.js | 79 + modules/core/aloha/static/lib/aloha/core.js | 482 + .../core/aloha/static/lib/aloha/ecma5shims.js | 327 + .../core/aloha/static/lib/aloha/editable.js | 931 + modules/core/aloha/static/lib/aloha/engine.js | 8553 +++++++++ .../core/aloha/static/lib/aloha/ephemera.js | 474 + .../core/aloha/static/lib/aloha/ierange-m2.js | 29 + .../aloha/static/lib/aloha/jquery.aloha.js | 540 + modules/core/aloha/static/lib/aloha/markup.js | 1265 ++ .../aloha/static/lib/aloha/nls/ca/i18n.js | 11 + .../aloha/static/lib/aloha/nls/de/i18n.js | 11 + .../core/aloha/static/lib/aloha/nls/i18n.js | 20 + .../aloha/static/lib/aloha/nls/mk/i18n.js | 11 + .../aloha/static/lib/aloha/nls/pt-br/i18n.js | 11 + .../aloha/static/lib/aloha/nls/ru/i18n.js | 11 + .../aloha/static/lib/aloha/nls/uk/i18n.js | 11 + .../static/lib/aloha/nls/zh-hans/i18n.js | 11 + .../core/aloha/static/lib/aloha/observable.js | 111 + modules/core/aloha/static/lib/aloha/plugin.js | 278 + .../aloha/static/lib/aloha/pluginmanager.js | 149 + .../core/aloha/static/lib/aloha/rangy-core.js | 30 + .../core/aloha/static/lib/aloha/registry.js | 133 + .../core/aloha/static/lib/aloha/repository.js | 254 + .../static/lib/aloha/repositorymanager.js | 658 + .../static/lib/aloha/repositoryobjects.js | 159 + .../core/aloha/static/lib/aloha/selection.js | 2389 +++ .../core/aloha/static/lib/aloha/sidebar.js | 1040 ++ modules/core/aloha/static/lib/css.js | 467 + modules/core/aloha/static/lib/i18n.js | 192 + modules/core/aloha/static/lib/require.js | 2062 +++ modules/core/aloha/static/lib/text.js | 288 + modules/core/aloha/static/lib/util/arrays.js | 208 + modules/core/aloha/static/lib/util/browser.js | 32 + modules/core/aloha/static/lib/util/class.js | 81 + modules/core/aloha/static/lib/util/dom.js | 1702 ++ modules/core/aloha/static/lib/util/dom2.js | 253 + .../core/aloha/static/lib/util/functions.js | 41 + modules/core/aloha/static/lib/util/json2.js | 464 + modules/core/aloha/static/lib/util/lang.js | 89 + modules/core/aloha/static/lib/util/maps.js | 108 + modules/core/aloha/static/lib/util/misc.js | 51 + .../core/aloha/static/lib/util/position.js | 176 + modules/core/aloha/static/lib/util/range.js | 917 + modules/core/aloha/static/lib/util/strings.js | 85 + modules/core/aloha/static/lib/util/trees.js | 328 + .../core/aloha/static/lib/vendor/3rdparty.txt | 70 + .../aloha/static/lib/vendor/amplify.store.js | 302 + modules/core/aloha/static/lib/vendor/class.js | 82 + .../aloha/static/lib/vendor/grid.locale.de.js | 144 + .../aloha/static/lib/vendor/grid.locale.en.js | 139 + .../aloha/static/lib/vendor/ierange-m2.js | 544 + .../aloha/static/lib/vendor/jquery-1.5.1.js | 8306 +++++++++ .../aloha/static/lib/vendor/jquery-1.6.1.js | 8936 +++++++++ .../aloha/static/lib/vendor/jquery-1.6.js | 8853 +++++++++ .../aloha/static/lib/vendor/jquery-1.7.1.js | 9251 ++++++++++ .../aloha/static/lib/vendor/jquery-1.7.2.js | 9407 ++++++++++ .../vendor/jquery-ui-1.9.0.custom-aloha.js | 15335 ++++++++++++++++ .../aloha/static/lib/vendor/jquery.jqgrid.js | 8066 ++++++++ .../aloha/static/lib/vendor/jquery.jstree.js | 5901 ++++++ .../lib/vendor/jquery.layout-1.3.0-rc30.7.js | 6375 +++++++ .../lib/vendor/pubsub/js/pubsub-unminified.js | 187 + .../static/lib/vendor/pubsub/js/pubsub.js | 46 + .../aloha/static/lib/vendor/rangy-core.js | 3292 ++++ .../vendor/repository-browser/css/jstree.css | 106 + .../css/repository-browser.css | 1054 ++ .../img/arrow-000-medium.png | Bin 0 -> 370 bytes .../repository-browser/img/arrow-180.png | Bin 0 -> 537 bytes .../img/arrow-315-medium.png | Bin 0 -> 327 bytes .../repository-browser/img/arrow-stop-180.png | Bin 0 -> 612 bytes .../repository-browser/img/arrow-stop.png | Bin 0 -> 606 bytes .../vendor/repository-browser/img/arrow.png | Bin 0 -> 531 bytes .../img/control-stop-square-small.png | Bin 0 -> 256 bytes .../img/folder-horizontal-open.png | Bin 0 -> 465 bytes .../repository-browser/img/folder-open.png | Bin 0 -> 585 bytes .../repository-browser/img/magnifier-left.png | Bin 0 -> 636 bytes .../vendor/repository-browser/img/page.png | Bin 0 -> 582 bytes .../vendor/repository-browser/img/picture.png | Bin 0 -> 553 bytes .../img/sort-alphabet-descending.png | Bin 0 -> 402 bytes .../repository-browser/img/sort-alphabet.png | Bin 0 -> 404 bytes .../repository-browser/img/throbber.gif | Bin 0 -> 1440 bytes .../js/repository-browser-unminified.js | 1391 ++ .../js/repository-browser.js | 423 + .../core/aloha/static/lib/vendor/sanitize.js | 280 + .../static/plugins/common/abbr/css/abbr.css | 3 + .../plugins/common/abbr/img/remabbr.png | Bin 0 -> 262 bytes .../plugins/common/abbr/lib/abbr-plugin.js | 297 + .../static/plugins/common/abbr/nls/ca/i18n.js | 6 + .../static/plugins/common/abbr/nls/de/i18n.js | 6 + .../static/plugins/common/abbr/nls/i18n.js | 15 + .../static/plugins/common/abbr/nls/mk/i18n.js | 6 + .../plugins/common/abbr/nls/pt-br/i18n.js | 6 + .../static/plugins/common/abbr/nls/ru/i18n.js | 6 + .../static/plugins/common/abbr/nls/uk/i18n.js | 6 + .../plugins/common/abbr/nls/zh-hans/i18n.js | 6 + .../static/plugins/common/abbr/package.json | 1 + .../aloha/static/plugins/common/align/LICENSE | 166 + .../aloha/static/plugins/common/align/README | 12 + .../static/plugins/common/align/css/align.css | 31 + .../static/plugins/common/align/img/align.png | Bin 0 -> 127 bytes .../plugins/common/align/lib/align-plugin.js | 470 + .../plugins/common/align/nls/ca/i18n.js | 6 + .../plugins/common/align/nls/de/i18n.js | 6 + .../static/plugins/common/align/nls/i18n.js | 18 + .../plugins/common/align/nls/mk/i18n.js | 6 + .../plugins/common/align/nls/pt-br/i18n.js | 6 + .../plugins/common/align/nls/ru/i18n.js | 6 + .../plugins/common/align/nls/uk/i18n.js | 6 + .../plugins/common/align/nls/zh-hans/i18n.js | 6 + .../static/plugins/common/align/package.json | 2 + .../aloha/static/plugins/common/block/README | 0 .../static/plugins/common/block/css/block.css | 120 + .../common/block/img/toolbar-draghandle.gif | Bin 0 -> 178 bytes .../plugins/common/block/lib/block-plugin.js | 333 + .../static/plugins/common/block/lib/block.js | 1285 ++ .../common/block/lib/blockcontenthandler.js | 120 + .../plugins/common/block/lib/blockmanager.js | 585 + .../static/plugins/common/block/lib/editor.js | 333 + .../plugins/common/block/lib/editormanager.js | 55 + .../block/lib/sidebarattributeeditor.js | 126 + .../plugins/common/block/nls/ca/i18n.js | 3 + .../plugins/common/block/nls/de/i18n.js | 3 + .../static/plugins/common/block/nls/i18n.js | 12 + .../plugins/common/block/nls/mk/i18n.js | 3 + .../plugins/common/block/nls/pt-br/i18n.js | 3 + .../plugins/common/block/nls/ru/i18n.js | 3 + .../plugins/common/block/nls/uk/i18n.js | 3 + .../plugins/common/block/nls/zh-hans/i18n.js | 3 + .../static/plugins/common/block/package.json | 11 + .../characterpicker/css/characterpicker.css | 43 + .../common/characterpicker/img/icon.png | Bin 0 -> 226 bytes .../lib/characterpicker-plugin.js | 345 + .../common/characterpicker/nls/ca/i18n.js | 3 + .../common/characterpicker/nls/de/i18n.js | 3 + .../common/characterpicker/nls/i18n.js | 12 + .../common/characterpicker/nls/mk/i18n.js | 3 + .../common/characterpicker/nls/pt-br/i18n.js | 3 + .../common/characterpicker/nls/ru/i18n.js | 3 + .../common/characterpicker/nls/uk/i18n.js | 3 + .../characterpicker/nls/zh-hans/i18n.js | 3 + .../plugins/common/commands/css/abbr.css | 0 .../common/commands/lib/commands-plugin.js | 33 + .../plugins/common/commands/lib/inserthtml.js | 126 + .../plugins/common/commands/package.json | 1 + .../plugins/common/contenthandler/README.md | 0 .../lib/blockelementcontenthandler.js | 144 + .../lib/contenthandler-plugin.js | 52 + .../lib/genericcontenthandler.js | 283 + .../lib/oembedcontenthandler.js | 494 + .../lib/sanitizecontenthandler.js | 186 + .../contenthandler/lib/wordcontenthandler.js | 420 + .../common/contenthandler/package.json | 1 + .../dom-to-xhtml/lib/dom-to-xhtml-plugin.js | 67 + .../common/dom-to-xhtml/lib/dom-to-xhtml.js | 408 + .../static/plugins/common/format/img/em.png | Bin 0 -> 178 bytes .../plugins/common/format/img/strong.png | Bin 0 -> 206 bytes .../common/format/lib/format-plugin.js | 620 + .../plugins/common/format/nls/ca/i18n.js | 52 + .../plugins/common/format/nls/de/i18n.js | 52 + .../static/plugins/common/format/nls/i18n.js | 61 + .../plugins/common/format/nls/mk/i18n.js | 52 + .../plugins/common/format/nls/pt-br/i18n.js | 52 + .../plugins/common/format/nls/ru/i18n.js | 52 + .../plugins/common/format/nls/uk/i18n.js | 52 + .../plugins/common/format/nls/zh-hans/i18n.js | 52 + .../css/highlighteditables.css | 14 + .../lib/highlighteditables-plugin.js | 100 + .../common/highlighteditables/package.json | 1 + .../horizontalruler/css/horizontalruler.css | 3 + .../common/horizontalruler/img/icon.png | Bin 0 -> 104 bytes .../lib/horizontalruler-plugin.js | 89 + .../common/horizontalruler/nls/ca/i18n.js | 3 + .../common/horizontalruler/nls/de/i18n.js | 3 + .../common/horizontalruler/nls/i18n.js | 12 + .../common/horizontalruler/nls/mk/i18n.js | 3 + .../common/horizontalruler/nls/pt-br/i18n.js | 3 + .../common/horizontalruler/nls/ru/i18n.js | 3 + .../common/horizontalruler/nls/uk/i18n.js | 3 + .../horizontalruler/nls/zh-hans/i18n.js | 3 + .../static/plugins/common/image/README.md | 66 + .../static/plugins/common/image/css/image.css | 134 + .../plugins/common/image/demo/crop.html | 84 + .../static/plugins/common/image/demo/crop.php | 21 + .../plugins/common/image/demo/cropnresize.jpg | Bin 0 -> 74949 bytes .../plugins/common/image/demo/index.html | 124 + .../static/plugins/common/image/img/blank.jpg | Bin 0 -> 685 bytes .../plugins/common/image/img/crop-buttons.gif | Bin 0 -> 856 bytes .../plugins/common/image/img/cropnresize.png | Bin 0 -> 1259 bytes .../plugins/common/image/img/handle-sw.png | Bin 0 -> 614 bytes .../common/image/img/image-align-left.png | Bin 0 -> 697 bytes .../common/image/img/image-align-none.png | Bin 0 -> 630 bytes .../common/image/img/image-align-right.png | Bin 0 -> 666 bytes .../plugins/common/image/img/image-border.png | Bin 0 -> 204 bytes .../plugins/common/image/img/image-title.png | Bin 0 -> 556 bytes .../static/plugins/common/image/img/image.gif | Bin 0 -> 613 bytes .../common/image/img/padding-decrease.gif | Bin 0 -> 358 bytes .../common/image/img/padding-increase.gif | Bin 0 -> 358 bytes .../static/plugins/common/image/img/page.png | Bin 0 -> 582 bytes .../common/image/img/size-decrease.gif | Bin 0 -> 345 bytes .../common/image/img/size-increase.gif | Bin 0 -> 241 bytes .../common/image/lib/image-floatingMenu.js | 298 + .../common/image/lib/image-plugin-actions.js | 0 .../plugins/common/image/lib/image-plugin.js | 1302 ++ .../plugins/common/image/nls/ca/i18n.js | 32 + .../plugins/common/image/nls/de/i18n.js | 32 + .../static/plugins/common/image/nls/i18n.js | 41 + .../plugins/common/image/nls/mk/i18n.js | 32 + .../plugins/common/image/nls/pt-br/i18n.js | 32 + .../plugins/common/image/nls/ru/i18n.js | 32 + .../plugins/common/image/nls/uk/i18n.js | 32 + .../plugins/common/image/nls/zh-hans/i18n.js | 32 + .../static/plugins/common/image/package.json | 1 + .../static/plugins/common/image/test/test.css | 12 + .../plugins/common/image/test/test.html | 40 + .../common/image/vendor/jcrop/jcrop.gif | Bin 0 -> 323 bytes .../image/vendor/jcrop/jquery.jcrop.css | 57 + .../image/vendor/jcrop/jquery.jcrop.min.js | 831 + .../image/vendor/mousewheel/mousewheel.js | 93 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 154 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 154 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 87 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 103 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 115 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 95 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 1986 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 88 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 126 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 3702 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 3702 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 3702 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 3702 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 3702 bytes .../static/plugins/common/link/css/link.css | 58 + .../plugins/common/link/extra/delicious.js | 265 + .../plugins/common/link/extra/linklist.js | 251 + .../plugins/common/link/extra/slowlinklist.js | 251 + .../plugins/common/link/lib/link-plugin.js | 783 + .../static/plugins/common/link/nls/ca/i18n.js | 14 + .../static/plugins/common/link/nls/de/i18n.js | 14 + .../static/plugins/common/link/nls/i18n.js | 23 + .../static/plugins/common/link/nls/mk/i18n.js | 14 + .../plugins/common/link/nls/pt-br/i18n.js | 14 + .../static/plugins/common/link/nls/ru/i18n.js | 14 + .../static/plugins/common/link/nls/uk/i18n.js | 14 + .../plugins/common/link/nls/zh-hans/i18n.js | 14 + .../plugins/common/list/lib/list-plugin.js | 866 + .../static/plugins/common/list/nls/ca/i18n.js | 7 + .../static/plugins/common/list/nls/de/i18n.js | 7 + .../static/plugins/common/list/nls/i18n.js | 16 + .../static/plugins/common/list/nls/mk/i18n.js | 7 + .../plugins/common/list/nls/pt-br/i18n.js | 7 + .../static/plugins/common/list/nls/ru/i18n.js | 7 + .../static/plugins/common/list/nls/uk/i18n.js | 7 + .../plugins/common/list/nls/zh-hans/i18n.js | 7 + .../static/plugins/common/list/package.json | 1 + .../static/plugins/common/paste/README.md | 1 + .../plugins/common/paste/lib/paste-plugin.js | 250 + .../static/plugins/common/paste/package.json | 8 + .../static/plugins/common/table/css/table.css | 133 + .../static/plugins/common/table/img/down.cur | Bin 0 -> 183 bytes .../static/plugins/common/table/img/left.cur | Bin 0 -> 55 bytes .../plugins/common/table/img/table_layout.png | Bin 0 -> 11120 bytes .../plugins/common/table/img/wai-green.png | Bin 0 -> 501 bytes .../plugins/common/table/img/wai-red.png | Bin 0 -> 664 bytes .../plugins/common/table/lib/table-cell.js | 479 + .../common/table/lib/table-create-layer.js | 213 + .../common/table/lib/table-plugin-utils.js | 356 + .../plugins/common/table/lib/table-plugin.js | 1501 ++ .../common/table/lib/table-selection.js | 440 + .../static/plugins/common/table/lib/table.js | 1537 ++ .../plugins/common/table/nls/ca/i18n.js | 28 + .../plugins/common/table/nls/de/i18n.js | 28 + .../static/plugins/common/table/nls/i18n.js | 37 + .../plugins/common/table/nls/mk/i18n.js | 28 + .../plugins/common/table/nls/pt-br/i18n.js | 28 + .../plugins/common/table/nls/ru/i18n.js | 28 + .../plugins/common/table/nls/uk/i18n.js | 28 + .../plugins/common/table/nls/zh-hans/i18n.js | 28 + .../static/plugins/common/table/package.json | 1 + .../plugins/common/ui/css/jquery-ui-1.9m6.css | 872 + .../aloha/static/plugins/common/ui/css/ui.css | 933 + .../plugins/common/ui/img/blockquote.png | Bin 0 -> 698 bytes .../common/ui/img/character-picker.png | Bin 0 -> 226 bytes .../aloha/static/plugins/common/ui/img/em.png | Bin 0 -> 178 bytes .../plugins/common/ui/img/format-block.png | Bin 0 -> 2492 bytes .../plugins/common/ui/img/format-inline.png | Bin 0 -> 3553 bytes .../static/plugins/common/ui/img/indent.png | Bin 0 -> 290 bytes .../img/jqueryui/ui-icons_222222_256x240.png | Bin 0 -> 3702 bytes .../static/plugins/common/ui/img/justify.png | Bin 0 -> 128 bytes .../common/ui/img/language-annotation.png | Bin 0 -> 849 bytes .../static/plugins/common/ui/img/metaview.png | Bin 0 -> 135 bytes .../plugins/common/ui/img/metaview/anchor.png | Bin 0 -> 213 bytes .../common/ui/img/metaview/blockquote.png | Bin 0 -> 135 bytes .../common/ui/img/metaview/caption.png | Bin 0 -> 122 bytes .../plugins/common/ui/img/metaview/cite.png | Bin 0 -> 395 bytes .../plugins/common/ui/img/metaview/dd.png | Bin 0 -> 87 bytes .../plugins/common/ui/img/metaview/div.png | Bin 0 -> 99 bytes .../plugins/common/ui/img/metaview/dl.png | Bin 0 -> 86 bytes .../plugins/common/ui/img/metaview/dt.png | Bin 0 -> 87 bytes .../plugins/common/ui/img/metaview/h1.png | Bin 0 -> 111 bytes .../plugins/common/ui/img/metaview/h2.png | Bin 0 -> 116 bytes .../plugins/common/ui/img/metaview/h3.png | Bin 0 -> 114 bytes .../plugins/common/ui/img/metaview/h4.png | Bin 0 -> 115 bytes .../plugins/common/ui/img/metaview/h5.png | Bin 0 -> 116 bytes .../plugins/common/ui/img/metaview/h6.png | Bin 0 -> 116 bytes .../plugins/common/ui/img/metaview/p.png | Bin 0 -> 113 bytes .../plugins/common/ui/img/metaview/pre.png | Bin 0 -> 122 bytes .../plugins/common/ui/img/metaview/q.png | Bin 0 -> 241 bytes .../plugins/common/ui/img/metaview/table.png | Bin 0 -> 116 bytes .../plugins/common/ui/img/metaview/td.png | Bin 0 -> 87 bytes .../plugins/common/ui/img/metaview/th.png | Bin 0 -> 91 bytes .../common/ui/img/multisplit-close.gif | Bin 0 -> 210 bytes .../plugins/common/ui/img/multisplit-open.gif | Bin 0 -> 207 bytes .../static/plugins/common/ui/img/outdent.png | Bin 0 -> 288 bytes .../static/plugins/common/ui/img/quote.png | Bin 0 -> 241 bytes .../plugins/common/ui/img/removeformat.png | Bin 0 -> 193 bytes .../static/plugins/common/ui/img/strong.png | Bin 0 -> 206 bytes .../static/plugins/common/ui/img/tree.png | Bin 0 -> 649 bytes .../static/plugins/common/ui/lib/arena.js | 11 + .../plugins/common/ui/lib/autocomplete.js | 66 + .../static/plugins/common/ui/lib/button.js | 115 + .../static/plugins/common/ui/lib/component.js | 120 + .../static/plugins/common/ui/lib/container.js | 213 + .../static/plugins/common/ui/lib/context.js | 51 + .../static/plugins/common/ui/lib/dialog.js | 161 + .../static/plugins/common/ui/lib/floating.js | 392 + .../plugins/common/ui/lib/menuButton.js | 165 + .../plugins/common/ui/lib/multiSplit.js | 231 + .../ui/lib/port-helper-attribute-field.js | 429 + .../common/ui/lib/port-helper-multi-split.js | 66 + .../static/plugins/common/ui/lib/scopes.js | 183 + .../static/plugins/common/ui/lib/settings.js | 207 + .../plugins/common/ui/lib/subguarded.js | 179 + .../static/plugins/common/ui/lib/surface.js | 101 + .../aloha/static/plugins/common/ui/lib/tab.js | 275 + .../static/plugins/common/ui/lib/text.js | 34 + .../plugins/common/ui/lib/toggleButton.js | 57 + .../static/plugins/common/ui/lib/toolbar.js | 244 + .../static/plugins/common/ui/lib/ui-plugin.js | 159 + .../aloha/static/plugins/common/ui/lib/ui.js | 178 + .../static/plugins/common/ui/lib/utils.js | 104 + .../static/plugins/common/ui/nls/ca/i18n.js | 44 + .../static/plugins/common/ui/nls/de/i18n.js | 44 + .../static/plugins/common/ui/nls/i18n.js | 72 + .../static/plugins/common/ui/nls/mk/i18n.js | 44 + .../plugins/common/ui/nls/pt-br/i18n.js | 44 + .../static/plugins/common/ui/nls/ru/i18n.js | 44 + .../static/plugins/common/ui/nls/uk/i18n.js | 44 + .../plugins/common/ui/nls/zh-hans/i18n.js | 44 + .../ui/vendor/jquery-ui-autocomplete-html.js | 42 + .../static/plugins/common/undo/demo/index.css | 67 + .../plugins/common/undo/demo/index.html | 117 + .../plugins/common/undo/lib/undo-plugin.js | 165 + .../static/plugins/common/undo/package.json | 7 + .../vendor/diff_match_patch_uncompressed.js | 2168 +++ .../static/plugins/common/undo/vendor/undo.js | 126 + .../static/plugins/extra/attributes/README | 0 .../extra/attributes/css/attributes.css | 37 + .../extra/attributes/lib/attributes-plugin.js | 243 + .../plugins/extra/attributes/nls/ca/i18n.js | 5 + .../plugins/extra/attributes/nls/de/i18n.js | 5 + .../plugins/extra/attributes/nls/i18n.js | 14 + .../plugins/extra/attributes/nls/mk/i18n.js | 5 + .../extra/attributes/nls/pt-br/i18n.js | 5 + .../plugins/extra/attributes/nls/ru/i18n.js | 5 + .../plugins/extra/attributes/nls/uk/i18n.js | 5 + .../extra/attributes/nls/zh-hans/i18n.js | 5 + .../captioned-image/css/captioned-image.css | 33 + .../lib/captioned-image-plugin.js | 544 + .../aloha/static/plugins/extra/cite/README | 0 .../static/plugins/extra/cite/css/cite.css | 56 + .../plugins/extra/cite/img/blockquote.png | Bin 0 -> 698 bytes .../plugins/extra/cite/img/icon_cite.png | Bin 0 -> 241 bytes .../plugins/extra/cite/lib/cite-plugin.js | 603 + .../static/plugins/extra/cite/nls/ca/i18n.js | 4 + .../static/plugins/extra/cite/nls/de/i18n.js | 4 + .../static/plugins/extra/cite/nls/i18n.js | 13 + .../static/plugins/extra/cite/nls/mk/i18n.js | 4 + .../plugins/extra/cite/nls/pt-br/i18n.js | 4 + .../static/plugins/extra/cite/nls/ru/i18n.js | 4 + .../static/plugins/extra/cite/nls/uk/i18n.js | 4 + .../plugins/extra/cite/nls/zh-hans/i18n.js | 4 + .../static/plugins/extra/cite/package.json | 1 + .../plugins/extra/comments/img/add-icon.png | Bin 0 -> 10427 bytes .../static/plugins/extra/comments/img/add.png | Bin 0 -> 2237 bytes .../plugins/extra/comments/img/comments.png | Bin 0 -> 954 bytes .../static/plugins/extra/comments/img/hr.png | Bin 0 -> 75 bytes .../plugins/extra/comments/img/textbox.png | Bin 0 -> 1387 bytes .../extra/comments/lib/comments-plugin.js | 918 + .../plugins/extra/comments/lib/comments.css | 358 + .../plugins/extra/comments/package.json | 1 + .../plugins/extra/draganddropfiles/README.md | 5 + .../plugins/extra/draganddropfiles/TODO.md | 2 + .../extra/draganddropfiles/demo/.gitignore | 4 + .../extra/draganddropfiles/demo/index.css | 65 + .../extra/draganddropfiles/demo/index.html | 131 + .../draganddropfiles/demo/migration/index.css | 199 + .../demo/migration/index.html | 365 + .../demo/specs/DragnDropnImage.graphml | 677 + .../extra/draganddropfiles/demo/style.css | 65 + .../draganddropfiles/demo/upload.php.example | 29 + .../extra/draganddropfiles/img/cross.png | Bin 0 -> 600 bytes .../extra/draganddropfiles/img/hourglass.png | Bin 0 -> 688 bytes .../extra/draganddropfiles/img/loading.gif | Bin 0 -> 770 bytes .../extra/draganddropfiles/img/page.png | Bin 0 -> 582 bytes .../extra/draganddropfiles/img/tick.png | Bin 0 -> 481 bytes .../lib/draganddropfiles-plugin.js | 4 + .../draganddropfiles/lib/dragndropfiles.css | 116 + .../draganddropfiles/lib/dragndropfiles.js | 378 + .../lib/dropfilesrepository.js | 375 + .../extra/draganddropfiles/nls/ca/i18n.js | 3 + .../extra/draganddropfiles/nls/de/i18n.js | 3 + .../extra/draganddropfiles/nls/i18n.js | 12 + .../extra/draganddropfiles/nls/mk/i18n.js | 3 + .../extra/draganddropfiles/nls/pt-br/i18n.js | 3 + .../extra/draganddropfiles/nls/ru/i18n.js | 3 + .../extra/draganddropfiles/nls/uk/i18n.js | 3 + .../draganddropfiles/nls/zh-hans/i18n.js | 3 + .../extra/draganddropfiles/package.json | 1 + .../extra/flag-icons/img/flags/LICENSE | 2 + .../plugins/extra/flag-icons/img/flags/aa.png | Bin 0 -> 243 bytes .../plugins/extra/flag-icons/img/flags/ab.png | Bin 0 -> 306 bytes .../plugins/extra/flag-icons/img/flags/ad.png | Bin 0 -> 454 bytes .../plugins/extra/flag-icons/img/flags/ae.png | Bin 0 -> 277 bytes .../plugins/extra/flag-icons/img/flags/af.png | Bin 0 -> 420 bytes .../plugins/extra/flag-icons/img/flags/ag.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/ai.png | Bin 0 -> 516 bytes .../plugins/extra/flag-icons/img/flags/ak.png | Bin 0 -> 159 bytes .../plugins/extra/flag-icons/img/flags/al.png | Bin 0 -> 434 bytes .../plugins/extra/flag-icons/img/flags/am.png | Bin 0 -> 332 bytes .../plugins/extra/flag-icons/img/flags/an.png | Bin 0 -> 365 bytes .../plugins/extra/flag-icons/img/flags/ao.png | Bin 0 -> 395 bytes .../plugins/extra/flag-icons/img/flags/ar.png | Bin 0 -> 367 bytes .../plugins/extra/flag-icons/img/flags/as.png | Bin 0 -> 540 bytes .../plugins/extra/flag-icons/img/flags/at.png | Bin 0 -> 290 bytes .../plugins/extra/flag-icons/img/flags/au.png | Bin 0 -> 580 bytes .../plugins/extra/flag-icons/img/flags/av.png | Bin 0 -> 98 bytes .../plugins/extra/flag-icons/img/flags/aw.png | Bin 0 -> 393 bytes .../plugins/extra/flag-icons/img/flags/ax.png | Bin 0 -> 480 bytes .../plugins/extra/flag-icons/img/flags/ay.png | Bin 0 -> 525 bytes .../plugins/extra/flag-icons/img/flags/az.png | Bin 0 -> 423 bytes .../plugins/extra/flag-icons/img/flags/ba.png | Bin 0 -> 471 bytes .../plugins/extra/flag-icons/img/flags/bb.png | Bin 0 -> 403 bytes .../plugins/extra/flag-icons/img/flags/bd.png | Bin 0 -> 372 bytes .../plugins/extra/flag-icons/img/flags/be.png | Bin 0 -> 294 bytes .../plugins/extra/flag-icons/img/flags/bf.png | Bin 0 -> 341 bytes .../plugins/extra/flag-icons/img/flags/bg.png | Bin 0 -> 320 bytes .../plugins/extra/flag-icons/img/flags/bh.png | Bin 0 -> 345 bytes .../plugins/extra/flag-icons/img/flags/bi.png | Bin 0 -> 566 bytes .../plugins/extra/flag-icons/img/flags/bj.png | Bin 0 -> 311 bytes .../plugins/extra/flag-icons/img/flags/bm.png | Bin 0 -> 499 bytes .../plugins/extra/flag-icons/img/flags/bn.png | Bin 0 -> 502 bytes .../plugins/extra/flag-icons/img/flags/bo.png | Bin 0 -> 341 bytes .../plugins/extra/flag-icons/img/flags/br.png | Bin 0 -> 486 bytes .../plugins/extra/flag-icons/img/flags/bs.png | Bin 0 -> 391 bytes .../plugins/extra/flag-icons/img/flags/bt.png | Bin 0 -> 471 bytes .../plugins/extra/flag-icons/img/flags/bv.png | Bin 0 -> 397 bytes .../plugins/extra/flag-icons/img/flags/bw.png | Bin 0 -> 327 bytes .../plugins/extra/flag-icons/img/flags/by.png | Bin 0 -> 382 bytes .../plugins/extra/flag-icons/img/flags/bz.png | Bin 0 -> 476 bytes .../plugins/extra/flag-icons/img/flags/ca.png | Bin 0 -> 471 bytes .../extra/flag-icons/img/flags/catalonia.png | Bin 0 -> 353 bytes .../plugins/extra/flag-icons/img/flags/cc.png | Bin 0 -> 496 bytes .../plugins/extra/flag-icons/img/flags/cd.png | Bin 0 -> 477 bytes .../plugins/extra/flag-icons/img/flags/ce.png | Bin 0 -> 110 bytes .../plugins/extra/flag-icons/img/flags/cf.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/cg.png | Bin 0 -> 380 bytes .../plugins/extra/flag-icons/img/flags/ch.png | Bin 0 -> 239 bytes .../plugins/extra/flag-icons/img/flags/ci.png | Bin 0 -> 306 bytes .../plugins/extra/flag-icons/img/flags/ck.png | Bin 0 -> 495 bytes .../plugins/extra/flag-icons/img/flags/cl.png | Bin 0 -> 324 bytes .../plugins/extra/flag-icons/img/flags/cm.png | Bin 0 -> 347 bytes .../plugins/extra/flag-icons/img/flags/cn.png | Bin 0 -> 349 bytes .../plugins/extra/flag-icons/img/flags/co.png | Bin 0 -> 330 bytes .../plugins/extra/flag-icons/img/flags/cr.png | Bin 0 -> 349 bytes .../plugins/extra/flag-icons/img/flags/cs.png | Bin 0 -> 321 bytes .../plugins/extra/flag-icons/img/flags/cu.png | Bin 0 -> 445 bytes .../plugins/extra/flag-icons/img/flags/cv.png | Bin 0 -> 441 bytes .../plugins/extra/flag-icons/img/flags/cx.png | Bin 0 -> 498 bytes .../plugins/extra/flag-icons/img/flags/cy.png | Bin 0 -> 337 bytes .../plugins/extra/flag-icons/img/flags/cz.png | Bin 0 -> 367 bytes .../plugins/extra/flag-icons/img/flags/da.png | Bin 0 -> 352 bytes .../plugins/extra/flag-icons/img/flags/de.png | Bin 0 -> 364 bytes .../plugins/extra/flag-icons/img/flags/dj.png | Bin 0 -> 430 bytes .../plugins/extra/flag-icons/img/flags/dk.png | Bin 0 -> 352 bytes .../plugins/extra/flag-icons/img/flags/dm.png | Bin 0 -> 508 bytes .../plugins/extra/flag-icons/img/flags/do.png | Bin 0 -> 368 bytes .../plugins/extra/flag-icons/img/flags/dv.png | Bin 0 -> 173 bytes .../plugins/extra/flag-icons/img/flags/dz.png | Bin 0 -> 454 bytes .../plugins/extra/flag-icons/img/flags/ec.png | Bin 0 -> 355 bytes .../plugins/extra/flag-icons/img/flags/ee.png | Bin 0 -> 297 bytes .../plugins/extra/flag-icons/img/flags/eg.png | Bin 0 -> 348 bytes .../plugins/extra/flag-icons/img/flags/eh.png | Bin 0 -> 388 bytes .../plugins/extra/flag-icons/img/flags/el.png | Bin 0 -> 391 bytes .../plugins/extra/flag-icons/img/flags/en.png | Bin 0 -> 378 bytes .../plugins/extra/flag-icons/img/flags/eo.png | Bin 0 -> 144 bytes .../plugins/extra/flag-icons/img/flags/er.png | Bin 0 -> 497 bytes .../plugins/extra/flag-icons/img/flags/es.png | Bin 0 -> 344 bytes .../plugins/extra/flag-icons/img/flags/et.png | Bin 0 -> 445 bytes .../plugins/extra/flag-icons/img/flags/eu.png | Bin 0 -> 227 bytes .../flag-icons/img/flags/europeanunion.png | Bin 0 -> 418 bytes .../plugins/extra/flag-icons/img/flags/fa.png | Bin 0 -> 157 bytes .../extra/flag-icons/img/flags/fam.png | Bin 0 -> 350 bytes .../plugins/extra/flag-icons/img/flags/ff.png | Bin 0 -> 178 bytes .../plugins/extra/flag-icons/img/flags/fi.png | Bin 0 -> 368 bytes .../plugins/extra/flag-icons/img/flags/fj.png | Bin 0 -> 517 bytes .../plugins/extra/flag-icons/img/flags/fk.png | Bin 0 -> 526 bytes .../plugins/extra/flag-icons/img/flags/fm.png | Bin 0 -> 409 bytes .../plugins/extra/flag-icons/img/flags/fo.png | Bin 0 -> 377 bytes .../plugins/extra/flag-icons/img/flags/fr.png | Bin 0 -> 369 bytes .../plugins/extra/flag-icons/img/flags/fy.png | Bin 0 -> 590 bytes .../plugins/extra/flag-icons/img/flags/ga.png | Bin 0 -> 342 bytes .../plugins/extra/flag-icons/img/flags/gb.png | Bin 0 -> 545 bytes .../plugins/extra/flag-icons/img/flags/gd.png | Bin 0 -> 461 bytes .../plugins/extra/flag-icons/img/flags/ge.png | Bin 0 -> 493 bytes .../plugins/extra/flag-icons/img/flags/gf.png | Bin 0 -> 369 bytes .../plugins/extra/flag-icons/img/flags/gh.png | Bin 0 -> 336 bytes .../plugins/extra/flag-icons/img/flags/gi.png | Bin 0 -> 369 bytes .../plugins/extra/flag-icons/img/flags/gl.png | Bin 0 -> 351 bytes .../plugins/extra/flag-icons/img/flags/gm.png | Bin 0 -> 363 bytes .../plugins/extra/flag-icons/img/flags/gn.png | Bin 0 -> 319 bytes .../plugins/extra/flag-icons/img/flags/gp.png | Bin 0 -> 353 bytes .../plugins/extra/flag-icons/img/flags/gq.png | Bin 0 -> 405 bytes .../plugins/extra/flag-icons/img/flags/gr.png | Bin 0 -> 391 bytes .../plugins/extra/flag-icons/img/flags/gs.png | Bin 0 -> 522 bytes .../plugins/extra/flag-icons/img/flags/gt.png | Bin 0 -> 333 bytes .../plugins/extra/flag-icons/img/flags/gu.png | Bin 0 -> 384 bytes .../plugins/extra/flag-icons/img/flags/gv.png | Bin 0 -> 219 bytes .../plugins/extra/flag-icons/img/flags/gw.png | Bin 0 -> 346 bytes .../plugins/extra/flag-icons/img/flags/gy.png | Bin 0 -> 521 bytes .../plugins/extra/flag-icons/img/flags/ha.png | Bin 0 -> 341 bytes .../plugins/extra/flag-icons/img/flags/he.png | Bin 0 -> 161 bytes .../plugins/extra/flag-icons/img/flags/hi.png | Bin 0 -> 377 bytes .../plugins/extra/flag-icons/img/flags/hk.png | Bin 0 -> 393 bytes .../plugins/extra/flag-icons/img/flags/hm.png | Bin 0 -> 580 bytes .../plugins/extra/flag-icons/img/flags/hn.png | Bin 0 -> 411 bytes .../plugins/extra/flag-icons/img/flags/ho.png | Bin 0 -> 323 bytes .../plugins/extra/flag-icons/img/flags/hr.png | Bin 0 -> 386 bytes .../plugins/extra/flag-icons/img/flags/ht.png | Bin 0 -> 327 bytes .../plugins/extra/flag-icons/img/flags/hu.png | Bin 0 -> 293 bytes .../plugins/extra/flag-icons/img/flags/hy.png | Bin 0 -> 121 bytes .../plugins/extra/flag-icons/img/flags/hz.png | Bin 0 -> 92 bytes .../plugins/extra/flag-icons/img/flags/id.png | Bin 0 -> 301 bytes .../plugins/extra/flag-icons/img/flags/ie.png | Bin 0 -> 333 bytes .../plugins/extra/flag-icons/img/flags/ig.png | Bin 0 -> 86 bytes .../plugins/extra/flag-icons/img/flags/ii.png | Bin 0 -> 349 bytes .../plugins/extra/flag-icons/img/flags/il.png | Bin 0 -> 326 bytes .../plugins/extra/flag-icons/img/flags/in.png | Bin 0 -> 377 bytes .../plugins/extra/flag-icons/img/flags/io.png | Bin 0 -> 575 bytes .../plugins/extra/flag-icons/img/flags/iq.png | Bin 0 -> 403 bytes .../plugins/extra/flag-icons/img/flags/ir.png | Bin 0 -> 398 bytes .../plugins/extra/flag-icons/img/flags/is.png | Bin 0 -> 410 bytes .../plugins/extra/flag-icons/img/flags/it.png | Bin 0 -> 283 bytes .../plugins/extra/flag-icons/img/flags/ja.png | Bin 0 -> 307 bytes .../plugins/extra/flag-icons/img/flags/jm.png | Bin 0 -> 508 bytes .../plugins/extra/flag-icons/img/flags/jo.png | Bin 0 -> 353 bytes .../plugins/extra/flag-icons/img/flags/jp.png | Bin 0 -> 307 bytes .../plugins/extra/flag-icons/img/flags/jv.png | Bin 0 -> 177 bytes .../plugins/extra/flag-icons/img/flags/ka.png | Bin 0 -> 162 bytes .../plugins/extra/flag-icons/img/flags/ke.png | Bin 0 -> 435 bytes .../plugins/extra/flag-icons/img/flags/kg.png | Bin 0 -> 354 bytes .../plugins/extra/flag-icons/img/flags/kh.png | Bin 0 -> 422 bytes .../plugins/extra/flag-icons/img/flags/ki.png | Bin 0 -> 523 bytes .../plugins/extra/flag-icons/img/flags/kk.png | Bin 0 -> 234 bytes .../plugins/extra/flag-icons/img/flags/kl.png | Bin 0 -> 268 bytes .../plugins/extra/flag-icons/img/flags/km.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/kn.png | Bin 0 -> 480 bytes .../plugins/extra/flag-icons/img/flags/ko.png | Bin 0 -> 507 bytes .../plugins/extra/flag-icons/img/flags/kp.png | Bin 0 -> 424 bytes .../plugins/extra/flag-icons/img/flags/kr.png | Bin 0 -> 507 bytes .../plugins/extra/flag-icons/img/flags/ks.png | Bin 0 -> 249 bytes .../plugins/extra/flag-icons/img/flags/ku.png | Bin 0 -> 183 bytes .../plugins/extra/flag-icons/img/flags/kv.png | Bin 0 -> 95 bytes .../plugins/extra/flag-icons/img/flags/kw.png | Bin 0 -> 351 bytes .../plugins/extra/flag-icons/img/flags/ky.png | Bin 0 -> 532 bytes .../plugins/extra/flag-icons/img/flags/kz.png | Bin 0 -> 459 bytes .../plugins/extra/flag-icons/img/flags/la.png | Bin 0 -> 263 bytes .../plugins/extra/flag-icons/img/flags/lb.png | Bin 0 -> 393 bytes .../plugins/extra/flag-icons/img/flags/lc.png | Bin 0 -> 462 bytes .../plugins/extra/flag-icons/img/flags/lg.png | Bin 0 -> 173 bytes .../plugins/extra/flag-icons/img/flags/li.png | Bin 0 -> 399 bytes .../plugins/extra/flag-icons/img/flags/lk.png | Bin 0 -> 464 bytes .../plugins/extra/flag-icons/img/flags/ln.png | Bin 0 -> 251 bytes .../plugins/extra/flag-icons/img/flags/lo.png | Bin 0 -> 149 bytes .../plugins/extra/flag-icons/img/flags/lr.png | Bin 0 -> 365 bytes .../plugins/extra/flag-icons/img/flags/ls.png | Bin 0 -> 500 bytes .../plugins/extra/flag-icons/img/flags/lt.png | Bin 0 -> 345 bytes .../plugins/extra/flag-icons/img/flags/lu.png | Bin 0 -> 338 bytes .../plugins/extra/flag-icons/img/flags/lv.png | Bin 0 -> 339 bytes .../plugins/extra/flag-icons/img/flags/ly.png | Bin 0 -> 277 bytes .../plugins/extra/flag-icons/img/flags/ma.png | Bin 0 -> 293 bytes .../plugins/extra/flag-icons/img/flags/mc.png | Bin 0 -> 254 bytes .../plugins/extra/flag-icons/img/flags/md.png | Bin 0 -> 404 bytes .../plugins/extra/flag-icons/img/flags/me.png | Bin 0 -> 394 bytes .../plugins/extra/flag-icons/img/flags/mg.png | Bin 0 -> 313 bytes .../plugins/extra/flag-icons/img/flags/mh.png | Bin 0 -> 518 bytes .../plugins/extra/flag-icons/img/flags/mi.png | Bin 0 -> 300 bytes .../plugins/extra/flag-icons/img/flags/mk.png | Bin 0 -> 449 bytes .../plugins/extra/flag-icons/img/flags/ml.png | Bin 0 -> 322 bytes .../plugins/extra/flag-icons/img/flags/mm.png | Bin 0 -> 336 bytes .../plugins/extra/flag-icons/img/flags/mn.png | Bin 0 -> 343 bytes .../plugins/extra/flag-icons/img/flags/mo.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/mp.png | Bin 0 -> 481 bytes .../plugins/extra/flag-icons/img/flags/mq.png | Bin 0 -> 541 bytes .../plugins/extra/flag-icons/img/flags/mr.png | Bin 0 -> 408 bytes .../plugins/extra/flag-icons/img/flags/ms.png | Bin 0 -> 497 bytes .../plugins/extra/flag-icons/img/flags/mt.png | Bin 0 -> 296 bytes .../plugins/extra/flag-icons/img/flags/mu.png | Bin 0 -> 360 bytes .../plugins/extra/flag-icons/img/flags/mv.png | Bin 0 -> 391 bytes .../plugins/extra/flag-icons/img/flags/mw.png | Bin 0 -> 365 bytes .../plugins/extra/flag-icons/img/flags/mx.png | Bin 0 -> 424 bytes .../plugins/extra/flag-icons/img/flags/my.png | Bin 0 -> 464 bytes .../plugins/extra/flag-icons/img/flags/mz.png | Bin 0 -> 439 bytes .../plugins/extra/flag-icons/img/flags/na.png | Bin 0 -> 559 bytes .../plugins/extra/flag-icons/img/flags/nb.png | Bin 0 -> 397 bytes .../plugins/extra/flag-icons/img/flags/nc.png | Bin 0 -> 470 bytes .../plugins/extra/flag-icons/img/flags/nd.png | Bin 0 -> 523 bytes .../plugins/extra/flag-icons/img/flags/ne.png | Bin 0 -> 393 bytes .../plugins/extra/flag-icons/img/flags/nf.png | Bin 0 -> 474 bytes .../plugins/extra/flag-icons/img/flags/ng.png | Bin 0 -> 341 bytes .../plugins/extra/flag-icons/img/flags/ni.png | Bin 0 -> 372 bytes .../plugins/extra/flag-icons/img/flags/nl.png | Bin 0 -> 310 bytes .../plugins/extra/flag-icons/img/flags/nn.png | Bin 0 -> 397 bytes .../plugins/extra/flag-icons/img/flags/no.png | Bin 0 -> 397 bytes .../plugins/extra/flag-icons/img/flags/np.png | Bin 0 -> 349 bytes .../plugins/extra/flag-icons/img/flags/nr.png | Bin 0 -> 391 bytes .../plugins/extra/flag-icons/img/flags/nu.png | Bin 0 -> 468 bytes .../plugins/extra/flag-icons/img/flags/nv.png | Bin 0 -> 432 bytes .../plugins/extra/flag-icons/img/flags/ny.png | Bin 0 -> 227 bytes .../plugins/extra/flag-icons/img/flags/nz.png | Bin 0 -> 529 bytes .../plugins/extra/flag-icons/img/flags/oc.png | Bin 0 -> 369 bytes .../plugins/extra/flag-icons/img/flags/om.png | Bin 0 -> 339 bytes .../plugins/extra/flag-icons/img/flags/or.png | Bin 0 -> 377 bytes .../plugins/extra/flag-icons/img/flags/os.png | Bin 0 -> 92 bytes .../plugins/extra/flag-icons/img/flags/pa.png | Bin 0 -> 390 bytes .../plugins/extra/flag-icons/img/flags/pe.png | Bin 0 -> 264 bytes .../plugins/extra/flag-icons/img/flags/pf.png | Bin 0 -> 379 bytes .../plugins/extra/flag-icons/img/flags/pg.png | Bin 0 -> 438 bytes .../plugins/extra/flag-icons/img/flags/ph.png | Bin 0 -> 416 bytes .../plugins/extra/flag-icons/img/flags/pk.png | Bin 0 -> 448 bytes .../plugins/extra/flag-icons/img/flags/pl.png | Bin 0 -> 243 bytes .../plugins/extra/flag-icons/img/flags/pm.png | Bin 0 -> 572 bytes .../plugins/extra/flag-icons/img/flags/pn.png | Bin 0 -> 547 bytes .../plugins/extra/flag-icons/img/flags/pr.png | Bin 0 -> 445 bytes .../plugins/extra/flag-icons/img/flags/ps.png | Bin 0 -> 348 bytes .../plugins/extra/flag-icons/img/flags/pt.png | Bin 0 -> 407 bytes .../plugins/extra/flag-icons/img/flags/pw.png | Bin 0 -> 424 bytes .../plugins/extra/flag-icons/img/flags/py.png | Bin 0 -> 344 bytes .../plugins/extra/flag-icons/img/flags/qa.png | Bin 0 -> 343 bytes .../plugins/extra/flag-icons/img/flags/re.png | Bin 0 -> 369 bytes .../plugins/extra/flag-icons/img/flags/rm.png | Bin 0 -> 333 bytes .../plugins/extra/flag-icons/img/flags/rn.png | Bin 0 -> 357 bytes .../plugins/extra/flag-icons/img/flags/ro.png | Bin 0 -> 333 bytes .../plugins/extra/flag-icons/img/flags/rs.png | Bin 0 -> 376 bytes .../plugins/extra/flag-icons/img/flags/ru.png | Bin 0 -> 299 bytes .../plugins/extra/flag-icons/img/flags/rw.png | Bin 0 -> 382 bytes .../plugins/extra/flag-icons/img/flags/sa.png | Bin 0 -> 428 bytes .../plugins/extra/flag-icons/img/flags/sb.png | Bin 0 -> 520 bytes .../plugins/extra/flag-icons/img/flags/sc.png | Bin 0 -> 481 bytes .../extra/flag-icons/img/flags/scotland.png | Bin 0 -> 554 bytes .../plugins/extra/flag-icons/img/flags/sd.png | Bin 0 -> 364 bytes .../plugins/extra/flag-icons/img/flags/se.png | Bin 0 -> 389 bytes .../plugins/extra/flag-icons/img/flags/sg.png | Bin 0 -> 350 bytes .../plugins/extra/flag-icons/img/flags/sh.png | Bin 0 -> 524 bytes .../plugins/extra/flag-icons/img/flags/si.png | Bin 0 -> 383 bytes .../plugins/extra/flag-icons/img/flags/sj.png | Bin 0 -> 397 bytes .../plugins/extra/flag-icons/img/flags/sk.png | Bin 0 -> 439 bytes .../plugins/extra/flag-icons/img/flags/sl.png | Bin 0 -> 321 bytes .../plugins/extra/flag-icons/img/flags/sm.png | Bin 0 -> 396 bytes .../plugins/extra/flag-icons/img/flags/sn.png | Bin 0 -> 356 bytes .../plugins/extra/flag-icons/img/flags/so.png | Bin 0 -> 376 bytes .../plugins/extra/flag-icons/img/flags/sq.png | Bin 0 -> 266 bytes .../plugins/extra/flag-icons/img/flags/sr.png | Bin 0 -> 370 bytes .../plugins/extra/flag-icons/img/flags/ss.png | Bin 0 -> 260 bytes .../plugins/extra/flag-icons/img/flags/st.png | Bin 0 -> 429 bytes .../plugins/extra/flag-icons/img/flags/su.png | Bin 0 -> 86 bytes .../plugins/extra/flag-icons/img/flags/sv.png | Bin 0 -> 373 bytes .../plugins/extra/flag-icons/img/flags/sw.png | Bin 0 -> 331 bytes .../plugins/extra/flag-icons/img/flags/sy.png | Bin 0 -> 322 bytes .../plugins/extra/flag-icons/img/flags/sz.png | Bin 0 -> 508 bytes .../plugins/extra/flag-icons/img/flags/ta.png | Bin 0 -> 292 bytes .../plugins/extra/flag-icons/img/flags/tc.png | Bin 0 -> 509 bytes .../plugins/extra/flag-icons/img/flags/td.png | Bin 0 -> 378 bytes .../plugins/extra/flag-icons/img/flags/te.png | Bin 0 -> 377 bytes .../plugins/extra/flag-icons/img/flags/tf.png | Bin 0 -> 399 bytes .../plugins/extra/flag-icons/img/flags/tg.png | Bin 0 -> 165 bytes .../plugins/extra/flag-icons/img/flags/th.png | Bin 0 -> 327 bytes .../plugins/extra/flag-icons/img/flags/ti.png | Bin 0 -> 344 bytes .../plugins/extra/flag-icons/img/flags/tj.png | Bin 0 -> 367 bytes .../plugins/extra/flag-icons/img/flags/tk.png | Bin 0 -> 522 bytes .../plugins/extra/flag-icons/img/flags/tl.png | Bin 0 -> 395 bytes .../plugins/extra/flag-icons/img/flags/tm.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/tn.png | Bin 0 -> 367 bytes .../plugins/extra/flag-icons/img/flags/to.png | Bin 0 -> 302 bytes .../plugins/extra/flag-icons/img/flags/tr.png | Bin 0 -> 366 bytes .../plugins/extra/flag-icons/img/flags/tt.png | Bin 0 -> 486 bytes .../plugins/extra/flag-icons/img/flags/tv.png | Bin 0 -> 443 bytes .../plugins/extra/flag-icons/img/flags/tw.png | Bin 0 -> 330 bytes .../plugins/extra/flag-icons/img/flags/ty.png | Bin 0 -> 185 bytes .../plugins/extra/flag-icons/img/flags/tz.png | Bin 0 -> 514 bytes .../plugins/extra/flag-icons/img/flags/ua.png | Bin 0 -> 304 bytes .../plugins/extra/flag-icons/img/flags/ug.png | Bin 0 -> 388 bytes .../plugins/extra/flag-icons/img/flags/uk.png | Bin 0 -> 324 bytes .../plugins/extra/flag-icons/img/flags/um.png | Bin 0 -> 455 bytes .../plugins/extra/flag-icons/img/flags/ur.png | Bin 0 -> 198 bytes .../plugins/extra/flag-icons/img/flags/us.png | Bin 0 -> 492 bytes .../plugins/extra/flag-icons/img/flags/uy.png | Bin 0 -> 411 bytes .../plugins/extra/flag-icons/img/flags/uz.png | Bin 0 -> 411 bytes .../plugins/extra/flag-icons/img/flags/va.png | Bin 0 -> 419 bytes .../plugins/extra/flag-icons/img/flags/vc.png | Bin 0 -> 412 bytes .../plugins/extra/flag-icons/img/flags/ve.png | Bin 0 -> 412 bytes .../plugins/extra/flag-icons/img/flags/vg.png | Bin 0 -> 510 bytes .../plugins/extra/flag-icons/img/flags/vi.png | Bin 0 -> 523 bytes .../plugins/extra/flag-icons/img/flags/vn.png | Bin 0 -> 324 bytes .../plugins/extra/flag-icons/img/flags/vo.png | Bin 0 -> 437 bytes .../plugins/extra/flag-icons/img/flags/vu.png | Bin 0 -> 450 bytes .../plugins/extra/flag-icons/img/flags/wa.png | Bin 0 -> 294 bytes .../extra/flag-icons/img/flags/wales.png | Bin 0 -> 557 bytes .../plugins/extra/flag-icons/img/flags/wf.png | Bin 0 -> 438 bytes .../plugins/extra/flag-icons/img/flags/wo.png | Bin 0 -> 356 bytes .../plugins/extra/flag-icons/img/flags/ws.png | Bin 0 -> 352 bytes .../plugins/extra/flag-icons/img/flags/xh.png | Bin 0 -> 153 bytes .../plugins/extra/flag-icons/img/flags/ye.png | Bin 0 -> 302 bytes .../plugins/extra/flag-icons/img/flags/yt.png | Bin 0 -> 456 bytes .../plugins/extra/flag-icons/img/flags/za.png | Bin 0 -> 523 bytes .../plugins/extra/flag-icons/img/flags/zh.png | Bin 0 -> 349 bytes .../plugins/extra/flag-icons/img/flags/zm.png | Bin 0 -> 359 bytes .../plugins/extra/flag-icons/img/flags/zw.png | Bin 0 -> 462 bytes .../extra/flag-icons/lib/flag-icons-plugin.js | 46 + .../plugins/extra/formatlesspaste/README.md | 1 + .../extra/formatlesspaste/css/formatless.css | 9 + .../extra/formatlesspaste/img/button.png | Bin 0 -> 266 bytes .../formatlesspaste/lib/formatlesshandler.js | 93 + .../lib/formatlesspaste-plugin.js | 220 + .../extra/formatlesspaste/nls/ca/i18n.js | 3 + .../extra/formatlesspaste/nls/de/i18n.js | 3 + .../plugins/extra/formatlesspaste/nls/i18n.js | 12 + .../extra/formatlesspaste/nls/mk/i18n.js | 3 + .../extra/formatlesspaste/nls/pt-br/i18n.js | 3 + .../extra/formatlesspaste/nls/ru/i18n.js | 3 + .../extra/formatlesspaste/nls/uk/i18n.js | 3 + .../extra/formatlesspaste/nls/zh-hans/i18n.js | 3 + .../extra/formatlesspaste/package.json | 8 + .../plugins/extra/googletranslate/README.md | 22 + .../googletranslate/css/googletranslate.css | 15 + .../plugins/extra/googletranslate/img/ad.png | Bin 0 -> 454 bytes .../plugins/extra/googletranslate/img/ae.png | Bin 0 -> 277 bytes .../plugins/extra/googletranslate/img/af.png | Bin 0 -> 420 bytes .../plugins/extra/googletranslate/img/ag.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/ai.png | Bin 0 -> 516 bytes .../plugins/extra/googletranslate/img/al.png | Bin 0 -> 434 bytes .../plugins/extra/googletranslate/img/am.png | Bin 0 -> 332 bytes .../plugins/extra/googletranslate/img/an.png | Bin 0 -> 365 bytes .../plugins/extra/googletranslate/img/ao.png | Bin 0 -> 395 bytes .../plugins/extra/googletranslate/img/ar.png | Bin 0 -> 367 bytes .../plugins/extra/googletranslate/img/as.png | Bin 0 -> 540 bytes .../plugins/extra/googletranslate/img/at.png | Bin 0 -> 290 bytes .../plugins/extra/googletranslate/img/au.png | Bin 0 -> 580 bytes .../plugins/extra/googletranslate/img/aw.png | Bin 0 -> 393 bytes .../plugins/extra/googletranslate/img/ax.png | Bin 0 -> 480 bytes .../plugins/extra/googletranslate/img/az.png | Bin 0 -> 423 bytes .../plugins/extra/googletranslate/img/ba.png | Bin 0 -> 471 bytes .../plugins/extra/googletranslate/img/bb.png | Bin 0 -> 403 bytes .../plugins/extra/googletranslate/img/bd.png | Bin 0 -> 372 bytes .../plugins/extra/googletranslate/img/be.png | Bin 0 -> 294 bytes .../plugins/extra/googletranslate/img/bf.png | Bin 0 -> 341 bytes .../plugins/extra/googletranslate/img/bg.png | Bin 0 -> 320 bytes .../plugins/extra/googletranslate/img/bh.png | Bin 0 -> 345 bytes .../plugins/extra/googletranslate/img/bi.png | Bin 0 -> 566 bytes .../plugins/extra/googletranslate/img/bj.png | Bin 0 -> 311 bytes .../plugins/extra/googletranslate/img/bm.png | Bin 0 -> 499 bytes .../plugins/extra/googletranslate/img/bn.png | Bin 0 -> 502 bytes .../plugins/extra/googletranslate/img/bo.png | Bin 0 -> 341 bytes .../plugins/extra/googletranslate/img/br.png | Bin 0 -> 486 bytes .../plugins/extra/googletranslate/img/bs.png | Bin 0 -> 391 bytes .../plugins/extra/googletranslate/img/bt.png | Bin 0 -> 471 bytes .../plugins/extra/googletranslate/img/bv.png | Bin 0 -> 397 bytes .../plugins/extra/googletranslate/img/bw.png | Bin 0 -> 327 bytes .../plugins/extra/googletranslate/img/by.png | Bin 0 -> 382 bytes .../plugins/extra/googletranslate/img/bz.png | Bin 0 -> 476 bytes .../plugins/extra/googletranslate/img/ca.png | Bin 0 -> 471 bytes .../extra/googletranslate/img/catalonia.png | Bin 0 -> 353 bytes .../plugins/extra/googletranslate/img/cc.png | Bin 0 -> 496 bytes .../plugins/extra/googletranslate/img/cd.png | Bin 0 -> 477 bytes .../plugins/extra/googletranslate/img/cf.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/cg.png | Bin 0 -> 380 bytes .../plugins/extra/googletranslate/img/ch.png | Bin 0 -> 239 bytes .../plugins/extra/googletranslate/img/ci.png | Bin 0 -> 306 bytes .../plugins/extra/googletranslate/img/ck.png | Bin 0 -> 495 bytes .../plugins/extra/googletranslate/img/cl.png | Bin 0 -> 324 bytes .../plugins/extra/googletranslate/img/cm.png | Bin 0 -> 347 bytes .../plugins/extra/googletranslate/img/cn.png | Bin 0 -> 349 bytes .../plugins/extra/googletranslate/img/co.png | Bin 0 -> 330 bytes .../plugins/extra/googletranslate/img/cr.png | Bin 0 -> 349 bytes .../plugins/extra/googletranslate/img/cs.png | Bin 0 -> 321 bytes .../plugins/extra/googletranslate/img/cu.png | Bin 0 -> 445 bytes .../plugins/extra/googletranslate/img/cv.png | Bin 0 -> 441 bytes .../plugins/extra/googletranslate/img/cx.png | Bin 0 -> 498 bytes .../plugins/extra/googletranslate/img/cy.png | Bin 0 -> 337 bytes .../plugins/extra/googletranslate/img/cz.png | Bin 0 -> 367 bytes .../plugins/extra/googletranslate/img/de.png | Bin 0 -> 364 bytes .../plugins/extra/googletranslate/img/dj.png | Bin 0 -> 430 bytes .../plugins/extra/googletranslate/img/dk.png | Bin 0 -> 352 bytes .../plugins/extra/googletranslate/img/dm.png | Bin 0 -> 508 bytes .../plugins/extra/googletranslate/img/do.png | Bin 0 -> 368 bytes .../plugins/extra/googletranslate/img/dz.png | Bin 0 -> 454 bytes .../plugins/extra/googletranslate/img/ec.png | Bin 0 -> 355 bytes .../plugins/extra/googletranslate/img/ee.png | Bin 0 -> 297 bytes .../plugins/extra/googletranslate/img/eg.png | Bin 0 -> 348 bytes .../plugins/extra/googletranslate/img/eh.png | Bin 0 -> 388 bytes .../plugins/extra/googletranslate/img/en.png | Bin 0 -> 378 bytes .../plugins/extra/googletranslate/img/er.png | Bin 0 -> 497 bytes .../plugins/extra/googletranslate/img/es.png | Bin 0 -> 344 bytes .../plugins/extra/googletranslate/img/et.png | Bin 0 -> 445 bytes .../googletranslate/img/europeanunion.png | Bin 0 -> 418 bytes .../plugins/extra/googletranslate/img/fam.png | Bin 0 -> 350 bytes .../plugins/extra/googletranslate/img/fi.png | Bin 0 -> 368 bytes .../plugins/extra/googletranslate/img/fj.png | Bin 0 -> 517 bytes .../plugins/extra/googletranslate/img/fk.png | Bin 0 -> 526 bytes .../plugins/extra/googletranslate/img/fm.png | Bin 0 -> 409 bytes .../plugins/extra/googletranslate/img/fo.png | Bin 0 -> 377 bytes .../plugins/extra/googletranslate/img/fr.png | Bin 0 -> 369 bytes .../plugins/extra/googletranslate/img/ga.png | Bin 0 -> 342 bytes .../plugins/extra/googletranslate/img/gb.png | Bin 0 -> 545 bytes .../plugins/extra/googletranslate/img/gd.png | Bin 0 -> 461 bytes .../plugins/extra/googletranslate/img/ge.png | Bin 0 -> 493 bytes .../plugins/extra/googletranslate/img/gf.png | Bin 0 -> 369 bytes .../plugins/extra/googletranslate/img/gh.png | Bin 0 -> 336 bytes .../plugins/extra/googletranslate/img/gi.png | Bin 0 -> 369 bytes .../plugins/extra/googletranslate/img/gl.png | Bin 0 -> 351 bytes .../plugins/extra/googletranslate/img/gm.png | Bin 0 -> 363 bytes .../plugins/extra/googletranslate/img/gn.png | Bin 0 -> 319 bytes .../plugins/extra/googletranslate/img/gp.png | Bin 0 -> 353 bytes .../plugins/extra/googletranslate/img/gq.png | Bin 0 -> 405 bytes .../plugins/extra/googletranslate/img/gr.png | Bin 0 -> 391 bytes .../plugins/extra/googletranslate/img/gs.png | Bin 0 -> 522 bytes .../plugins/extra/googletranslate/img/gt.png | Bin 0 -> 333 bytes .../plugins/extra/googletranslate/img/gu.png | Bin 0 -> 384 bytes .../plugins/extra/googletranslate/img/gw.png | Bin 0 -> 346 bytes .../plugins/extra/googletranslate/img/gy.png | Bin 0 -> 521 bytes .../plugins/extra/googletranslate/img/hk.png | Bin 0 -> 393 bytes .../plugins/extra/googletranslate/img/hm.png | Bin 0 -> 580 bytes .../plugins/extra/googletranslate/img/hn.png | Bin 0 -> 411 bytes .../plugins/extra/googletranslate/img/hr.png | Bin 0 -> 386 bytes .../plugins/extra/googletranslate/img/ht.png | Bin 0 -> 327 bytes .../plugins/extra/googletranslate/img/hu.png | Bin 0 -> 293 bytes .../plugins/extra/googletranslate/img/id.png | Bin 0 -> 301 bytes .../plugins/extra/googletranslate/img/ie.png | Bin 0 -> 333 bytes .../plugins/extra/googletranslate/img/il.png | Bin 0 -> 326 bytes .../plugins/extra/googletranslate/img/in.png | Bin 0 -> 377 bytes .../plugins/extra/googletranslate/img/io.png | Bin 0 -> 575 bytes .../plugins/extra/googletranslate/img/iq.png | Bin 0 -> 403 bytes .../plugins/extra/googletranslate/img/ir.png | Bin 0 -> 398 bytes .../plugins/extra/googletranslate/img/is.png | Bin 0 -> 410 bytes .../plugins/extra/googletranslate/img/it.png | Bin 0 -> 283 bytes .../plugins/extra/googletranslate/img/jm.png | Bin 0 -> 508 bytes .../plugins/extra/googletranslate/img/jo.png | Bin 0 -> 353 bytes .../plugins/extra/googletranslate/img/jp.png | Bin 0 -> 307 bytes .../plugins/extra/googletranslate/img/ke.png | Bin 0 -> 435 bytes .../plugins/extra/googletranslate/img/kg.png | Bin 0 -> 354 bytes .../plugins/extra/googletranslate/img/kh.png | Bin 0 -> 422 bytes .../plugins/extra/googletranslate/img/ki.png | Bin 0 -> 551 bytes .../plugins/extra/googletranslate/img/km.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/kn.png | Bin 0 -> 480 bytes .../plugins/extra/googletranslate/img/kp.png | Bin 0 -> 424 bytes .../plugins/extra/googletranslate/img/kr.png | Bin 0 -> 507 bytes .../plugins/extra/googletranslate/img/kw.png | Bin 0 -> 351 bytes .../plugins/extra/googletranslate/img/ky.png | Bin 0 -> 532 bytes .../plugins/extra/googletranslate/img/kz.png | Bin 0 -> 459 bytes .../plugins/extra/googletranslate/img/la.png | Bin 0 -> 415 bytes .../plugins/extra/googletranslate/img/lb.png | Bin 0 -> 393 bytes .../plugins/extra/googletranslate/img/lc.png | Bin 0 -> 462 bytes .../plugins/extra/googletranslate/img/li.png | Bin 0 -> 399 bytes .../plugins/extra/googletranslate/img/lk.png | Bin 0 -> 464 bytes .../plugins/extra/googletranslate/img/lr.png | Bin 0 -> 365 bytes .../plugins/extra/googletranslate/img/ls.png | Bin 0 -> 500 bytes .../plugins/extra/googletranslate/img/lt.png | Bin 0 -> 345 bytes .../plugins/extra/googletranslate/img/lu.png | Bin 0 -> 338 bytes .../plugins/extra/googletranslate/img/lv.png | Bin 0 -> 339 bytes .../plugins/extra/googletranslate/img/ly.png | Bin 0 -> 277 bytes .../plugins/extra/googletranslate/img/ma.png | Bin 0 -> 293 bytes .../plugins/extra/googletranslate/img/mc.png | Bin 0 -> 254 bytes .../plugins/extra/googletranslate/img/md.png | Bin 0 -> 404 bytes .../plugins/extra/googletranslate/img/me.png | Bin 0 -> 394 bytes .../plugins/extra/googletranslate/img/mg.png | Bin 0 -> 313 bytes .../plugins/extra/googletranslate/img/mh.png | Bin 0 -> 518 bytes .../plugins/extra/googletranslate/img/mk.png | Bin 0 -> 449 bytes .../plugins/extra/googletranslate/img/ml.png | Bin 0 -> 322 bytes .../plugins/extra/googletranslate/img/mm.png | Bin 0 -> 336 bytes .../plugins/extra/googletranslate/img/mn.png | Bin 0 -> 343 bytes .../plugins/extra/googletranslate/img/mo.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/mp.png | Bin 0 -> 481 bytes .../plugins/extra/googletranslate/img/mq.png | Bin 0 -> 541 bytes .../plugins/extra/googletranslate/img/mr.png | Bin 0 -> 408 bytes .../plugins/extra/googletranslate/img/ms.png | Bin 0 -> 497 bytes .../plugins/extra/googletranslate/img/mt.png | Bin 0 -> 296 bytes .../plugins/extra/googletranslate/img/mu.png | Bin 0 -> 360 bytes .../plugins/extra/googletranslate/img/mv.png | Bin 0 -> 391 bytes .../plugins/extra/googletranslate/img/mw.png | Bin 0 -> 365 bytes .../plugins/extra/googletranslate/img/mx.png | Bin 0 -> 424 bytes .../plugins/extra/googletranslate/img/my.png | Bin 0 -> 464 bytes .../plugins/extra/googletranslate/img/mz.png | Bin 0 -> 439 bytes .../plugins/extra/googletranslate/img/na.png | Bin 0 -> 559 bytes .../plugins/extra/googletranslate/img/nc.png | Bin 0 -> 470 bytes .../plugins/extra/googletranslate/img/ne.png | Bin 0 -> 393 bytes .../plugins/extra/googletranslate/img/nf.png | Bin 0 -> 474 bytes .../plugins/extra/googletranslate/img/ng.png | Bin 0 -> 341 bytes .../plugins/extra/googletranslate/img/ni.png | Bin 0 -> 372 bytes .../plugins/extra/googletranslate/img/nl.png | Bin 0 -> 310 bytes .../plugins/extra/googletranslate/img/no.png | Bin 0 -> 397 bytes .../plugins/extra/googletranslate/img/np.png | Bin 0 -> 349 bytes .../plugins/extra/googletranslate/img/nr.png | Bin 0 -> 391 bytes .../plugins/extra/googletranslate/img/nu.png | Bin 0 -> 468 bytes .../plugins/extra/googletranslate/img/nz.png | Bin 0 -> 529 bytes .../plugins/extra/googletranslate/img/om.png | Bin 0 -> 339 bytes .../plugins/extra/googletranslate/img/pa.png | Bin 0 -> 390 bytes .../plugins/extra/googletranslate/img/pe.png | Bin 0 -> 264 bytes .../plugins/extra/googletranslate/img/pf.png | Bin 0 -> 379 bytes .../plugins/extra/googletranslate/img/pg.png | Bin 0 -> 438 bytes .../plugins/extra/googletranslate/img/ph.png | Bin 0 -> 416 bytes .../plugins/extra/googletranslate/img/pk.png | Bin 0 -> 448 bytes .../plugins/extra/googletranslate/img/pl.png | Bin 0 -> 243 bytes .../plugins/extra/googletranslate/img/pm.png | Bin 0 -> 572 bytes .../plugins/extra/googletranslate/img/pn.png | Bin 0 -> 547 bytes .../plugins/extra/googletranslate/img/pr.png | Bin 0 -> 445 bytes .../plugins/extra/googletranslate/img/ps.png | Bin 0 -> 348 bytes .../plugins/extra/googletranslate/img/pt.png | Bin 0 -> 407 bytes .../plugins/extra/googletranslate/img/pw.png | Bin 0 -> 424 bytes .../plugins/extra/googletranslate/img/py.png | Bin 0 -> 344 bytes .../plugins/extra/googletranslate/img/qa.png | Bin 0 -> 343 bytes .../plugins/extra/googletranslate/img/re.png | Bin 0 -> 369 bytes .../plugins/extra/googletranslate/img/ro.png | Bin 0 -> 333 bytes .../plugins/extra/googletranslate/img/rs.png | Bin 0 -> 376 bytes .../plugins/extra/googletranslate/img/ru.png | Bin 0 -> 299 bytes .../plugins/extra/googletranslate/img/rw.png | Bin 0 -> 382 bytes .../plugins/extra/googletranslate/img/sa.png | Bin 0 -> 428 bytes .../plugins/extra/googletranslate/img/sb.png | Bin 0 -> 520 bytes .../plugins/extra/googletranslate/img/sc.png | Bin 0 -> 481 bytes .../extra/googletranslate/img/scotland.png | Bin 0 -> 554 bytes .../plugins/extra/googletranslate/img/sd.png | Bin 0 -> 364 bytes .../plugins/extra/googletranslate/img/se.png | Bin 0 -> 389 bytes .../plugins/extra/googletranslate/img/sg.png | Bin 0 -> 350 bytes .../plugins/extra/googletranslate/img/sh.png | Bin 0 -> 524 bytes .../plugins/extra/googletranslate/img/si.png | Bin 0 -> 383 bytes .../plugins/extra/googletranslate/img/sj.png | Bin 0 -> 397 bytes .../plugins/extra/googletranslate/img/sk.png | Bin 0 -> 439 bytes .../plugins/extra/googletranslate/img/sl.png | Bin 0 -> 321 bytes .../plugins/extra/googletranslate/img/sm.png | Bin 0 -> 396 bytes .../plugins/extra/googletranslate/img/sn.png | Bin 0 -> 356 bytes .../plugins/extra/googletranslate/img/so.png | Bin 0 -> 376 bytes .../plugins/extra/googletranslate/img/sr.png | Bin 0 -> 370 bytes .../plugins/extra/googletranslate/img/st.png | Bin 0 -> 429 bytes .../plugins/extra/googletranslate/img/sv.png | Bin 0 -> 373 bytes .../plugins/extra/googletranslate/img/sy.png | Bin 0 -> 322 bytes .../plugins/extra/googletranslate/img/sz.png | Bin 0 -> 508 bytes .../plugins/extra/googletranslate/img/tc.png | Bin 0 -> 509 bytes .../plugins/extra/googletranslate/img/td.png | Bin 0 -> 378 bytes .../plugins/extra/googletranslate/img/tf.png | Bin 0 -> 399 bytes .../plugins/extra/googletranslate/img/tg.png | Bin 0 -> 410 bytes .../plugins/extra/googletranslate/img/th.png | Bin 0 -> 327 bytes .../plugins/extra/googletranslate/img/tj.png | Bin 0 -> 367 bytes .../plugins/extra/googletranslate/img/tk.png | Bin 0 -> 522 bytes .../plugins/extra/googletranslate/img/tl.png | Bin 0 -> 395 bytes .../plugins/extra/googletranslate/img/tm.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/tn.png | Bin 0 -> 367 bytes .../plugins/extra/googletranslate/img/to.png | Bin 0 -> 302 bytes .../plugins/extra/googletranslate/img/tr.png | Bin 0 -> 366 bytes .../plugins/extra/googletranslate/img/tt.png | Bin 0 -> 486 bytes .../plugins/extra/googletranslate/img/tv.png | Bin 0 -> 443 bytes .../plugins/extra/googletranslate/img/tw.png | Bin 0 -> 330 bytes .../plugins/extra/googletranslate/img/tz.png | Bin 0 -> 514 bytes .../plugins/extra/googletranslate/img/ua.png | Bin 0 -> 304 bytes .../plugins/extra/googletranslate/img/ug.png | Bin 0 -> 388 bytes .../plugins/extra/googletranslate/img/um.png | Bin 0 -> 455 bytes .../plugins/extra/googletranslate/img/us.png | Bin 0 -> 492 bytes .../plugins/extra/googletranslate/img/uy.png | Bin 0 -> 411 bytes .../plugins/extra/googletranslate/img/uz.png | Bin 0 -> 411 bytes .../plugins/extra/googletranslate/img/va.png | Bin 0 -> 419 bytes .../plugins/extra/googletranslate/img/vc.png | Bin 0 -> 412 bytes .../plugins/extra/googletranslate/img/ve.png | Bin 0 -> 412 bytes .../plugins/extra/googletranslate/img/vg.png | Bin 0 -> 510 bytes .../plugins/extra/googletranslate/img/vi.png | Bin 0 -> 523 bytes .../plugins/extra/googletranslate/img/vn.png | Bin 0 -> 324 bytes .../plugins/extra/googletranslate/img/vu.png | Bin 0 -> 450 bytes .../extra/googletranslate/img/wales.png | Bin 0 -> 557 bytes .../plugins/extra/googletranslate/img/wf.png | Bin 0 -> 438 bytes .../plugins/extra/googletranslate/img/ws.png | Bin 0 -> 352 bytes .../plugins/extra/googletranslate/img/ye.png | Bin 0 -> 302 bytes .../plugins/extra/googletranslate/img/yt.png | Bin 0 -> 456 bytes .../plugins/extra/googletranslate/img/za.png | Bin 0 -> 523 bytes .../plugins/extra/googletranslate/img/zm.png | Bin 0 -> 359 bytes .../plugins/extra/googletranslate/img/zw.png | Bin 0 -> 462 bytes .../lib/googletranslate-plugin.js | 202 + .../extra/googletranslate/package.json | 1 + .../static/plugins/extra/headerids/README | 0 .../plugins/extra/headerids/css/headerids.css | 14 + .../extra/headerids/lib/headerids-plugin.js | 169 + .../plugins/extra/headerids/nls/ca/i18n.js | 6 + .../plugins/extra/headerids/nls/de/i18n.js | 6 + .../plugins/extra/headerids/nls/i18n.js | 15 + .../plugins/extra/headerids/nls/mk/i18n.js | 6 + .../plugins/extra/headerids/nls/pt-br/i18n.js | 6 + .../plugins/extra/headerids/nls/ru/i18n.js | 6 + .../plugins/extra/headerids/nls/uk/i18n.js | 6 + .../extra/headerids/nls/zh-hans/i18n.js | 6 + .../static/plugins/extra/hints/README.md | 12 + .../static/plugins/extra/hints/css/hints.css | 133 + .../plugins/extra/hints/lib/hints-plugin.js | 97 + .../static/plugins/extra/hints/package.json | 9 + .../plugins/extra/hints/vendor/tipsy.js | 272 + .../static/plugins/extra/imagebrowser/README | 0 .../imagebrowser/lib/imagebrowser-plugin.js | 151 + .../plugins/extra/imagebrowser/nls/ca/i18n.js | 6 + .../plugins/extra/imagebrowser/nls/de/i18n.js | 6 + .../plugins/extra/imagebrowser/nls/i18n.js | 15 + .../plugins/extra/imagebrowser/nls/mk/i18n.js | 6 + .../extra/imagebrowser/nls/pt-br/i18n.js | 6 + .../plugins/extra/imagebrowser/nls/ru/i18n.js | 6 + .../plugins/extra/imagebrowser/nls/uk/i18n.js | 6 + .../extra/imagebrowser/nls/zh-hans/i18n.js | 6 + .../static/plugins/extra/linkbrowser/README | 0 .../extra/linkbrowser/img/flags/ad.png | Bin 0 -> 454 bytes .../extra/linkbrowser/img/flags/ae.png | Bin 0 -> 277 bytes .../extra/linkbrowser/img/flags/af.png | Bin 0 -> 420 bytes .../extra/linkbrowser/img/flags/ag.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/ai.png | Bin 0 -> 516 bytes .../extra/linkbrowser/img/flags/al.png | Bin 0 -> 434 bytes .../extra/linkbrowser/img/flags/am.png | Bin 0 -> 332 bytes .../extra/linkbrowser/img/flags/an.png | Bin 0 -> 365 bytes .../extra/linkbrowser/img/flags/ao.png | Bin 0 -> 395 bytes .../extra/linkbrowser/img/flags/ar.png | Bin 0 -> 367 bytes .../extra/linkbrowser/img/flags/as.png | Bin 0 -> 540 bytes .../extra/linkbrowser/img/flags/at.png | Bin 0 -> 290 bytes .../extra/linkbrowser/img/flags/au.png | Bin 0 -> 580 bytes .../extra/linkbrowser/img/flags/aw.png | Bin 0 -> 393 bytes .../extra/linkbrowser/img/flags/ax.png | Bin 0 -> 480 bytes .../extra/linkbrowser/img/flags/az.png | Bin 0 -> 423 bytes .../extra/linkbrowser/img/flags/ba.png | Bin 0 -> 471 bytes .../extra/linkbrowser/img/flags/bb.png | Bin 0 -> 403 bytes .../extra/linkbrowser/img/flags/bd.png | Bin 0 -> 372 bytes .../extra/linkbrowser/img/flags/be.png | Bin 0 -> 294 bytes .../extra/linkbrowser/img/flags/bf.png | Bin 0 -> 341 bytes .../extra/linkbrowser/img/flags/bg.png | Bin 0 -> 320 bytes .../extra/linkbrowser/img/flags/bh.png | Bin 0 -> 345 bytes .../extra/linkbrowser/img/flags/bi.png | Bin 0 -> 566 bytes .../extra/linkbrowser/img/flags/bj.png | Bin 0 -> 311 bytes .../extra/linkbrowser/img/flags/bm.png | Bin 0 -> 499 bytes .../extra/linkbrowser/img/flags/bn.png | Bin 0 -> 502 bytes .../extra/linkbrowser/img/flags/bo.png | Bin 0 -> 341 bytes .../extra/linkbrowser/img/flags/br.png | Bin 0 -> 486 bytes .../extra/linkbrowser/img/flags/bs.png | Bin 0 -> 391 bytes .../extra/linkbrowser/img/flags/bt.png | Bin 0 -> 471 bytes .../extra/linkbrowser/img/flags/bv.png | Bin 0 -> 397 bytes .../extra/linkbrowser/img/flags/bw.png | Bin 0 -> 327 bytes .../extra/linkbrowser/img/flags/by.png | Bin 0 -> 382 bytes .../extra/linkbrowser/img/flags/bz.png | Bin 0 -> 476 bytes .../extra/linkbrowser/img/flags/ca.png | Bin 0 -> 471 bytes .../extra/linkbrowser/img/flags/catalonia.png | Bin 0 -> 353 bytes .../extra/linkbrowser/img/flags/cc.png | Bin 0 -> 496 bytes .../extra/linkbrowser/img/flags/cd.png | Bin 0 -> 477 bytes .../extra/linkbrowser/img/flags/cf.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/cg.png | Bin 0 -> 380 bytes .../extra/linkbrowser/img/flags/ch.png | Bin 0 -> 239 bytes .../extra/linkbrowser/img/flags/ci.png | Bin 0 -> 306 bytes .../extra/linkbrowser/img/flags/ck.png | Bin 0 -> 495 bytes .../extra/linkbrowser/img/flags/cl.png | Bin 0 -> 324 bytes .../extra/linkbrowser/img/flags/cm.png | Bin 0 -> 347 bytes .../extra/linkbrowser/img/flags/cn.png | Bin 0 -> 349 bytes .../extra/linkbrowser/img/flags/co.png | Bin 0 -> 330 bytes .../extra/linkbrowser/img/flags/cr.png | Bin 0 -> 349 bytes .../extra/linkbrowser/img/flags/cs.png | Bin 0 -> 321 bytes .../extra/linkbrowser/img/flags/cu.png | Bin 0 -> 445 bytes .../extra/linkbrowser/img/flags/cv.png | Bin 0 -> 441 bytes .../extra/linkbrowser/img/flags/cx.png | Bin 0 -> 498 bytes .../extra/linkbrowser/img/flags/cy.png | Bin 0 -> 337 bytes .../extra/linkbrowser/img/flags/cz.png | Bin 0 -> 367 bytes .../extra/linkbrowser/img/flags/de.png | Bin 0 -> 364 bytes .../extra/linkbrowser/img/flags/dj.png | Bin 0 -> 430 bytes .../extra/linkbrowser/img/flags/dk.png | Bin 0 -> 352 bytes .../extra/linkbrowser/img/flags/dm.png | Bin 0 -> 508 bytes .../extra/linkbrowser/img/flags/do.png | Bin 0 -> 368 bytes .../extra/linkbrowser/img/flags/dz.png | Bin 0 -> 454 bytes .../extra/linkbrowser/img/flags/ec.png | Bin 0 -> 355 bytes .../extra/linkbrowser/img/flags/ee.png | Bin 0 -> 297 bytes .../extra/linkbrowser/img/flags/eg.png | Bin 0 -> 348 bytes .../extra/linkbrowser/img/flags/eh.png | Bin 0 -> 388 bytes .../extra/linkbrowser/img/flags/en.png | Bin 0 -> 378 bytes .../extra/linkbrowser/img/flags/er.png | Bin 0 -> 497 bytes .../extra/linkbrowser/img/flags/es.png | Bin 0 -> 344 bytes .../extra/linkbrowser/img/flags/et.png | Bin 0 -> 445 bytes .../linkbrowser/img/flags/europeanunion.png | Bin 0 -> 418 bytes .../extra/linkbrowser/img/flags/fam.png | Bin 0 -> 350 bytes .../extra/linkbrowser/img/flags/fi.png | Bin 0 -> 368 bytes .../extra/linkbrowser/img/flags/fj.png | Bin 0 -> 517 bytes .../extra/linkbrowser/img/flags/fk.png | Bin 0 -> 526 bytes .../extra/linkbrowser/img/flags/fm.png | Bin 0 -> 409 bytes .../extra/linkbrowser/img/flags/fo.png | Bin 0 -> 377 bytes .../extra/linkbrowser/img/flags/fr.png | Bin 0 -> 369 bytes .../extra/linkbrowser/img/flags/ga.png | Bin 0 -> 342 bytes .../extra/linkbrowser/img/flags/gb.png | Bin 0 -> 545 bytes .../extra/linkbrowser/img/flags/gd.png | Bin 0 -> 461 bytes .../extra/linkbrowser/img/flags/ge.png | Bin 0 -> 493 bytes .../extra/linkbrowser/img/flags/gf.png | Bin 0 -> 369 bytes .../extra/linkbrowser/img/flags/gh.png | Bin 0 -> 336 bytes .../extra/linkbrowser/img/flags/gi.png | Bin 0 -> 369 bytes .../extra/linkbrowser/img/flags/gl.png | Bin 0 -> 351 bytes .../extra/linkbrowser/img/flags/gm.png | Bin 0 -> 363 bytes .../extra/linkbrowser/img/flags/gn.png | Bin 0 -> 319 bytes .../extra/linkbrowser/img/flags/gp.png | Bin 0 -> 353 bytes .../extra/linkbrowser/img/flags/gq.png | Bin 0 -> 405 bytes .../extra/linkbrowser/img/flags/gr.png | Bin 0 -> 391 bytes .../extra/linkbrowser/img/flags/gs.png | Bin 0 -> 522 bytes .../extra/linkbrowser/img/flags/gt.png | Bin 0 -> 333 bytes .../extra/linkbrowser/img/flags/gu.png | Bin 0 -> 384 bytes .../extra/linkbrowser/img/flags/gw.png | Bin 0 -> 346 bytes .../extra/linkbrowser/img/flags/gy.png | Bin 0 -> 521 bytes .../extra/linkbrowser/img/flags/hk.png | Bin 0 -> 393 bytes .../extra/linkbrowser/img/flags/hm.png | Bin 0 -> 580 bytes .../extra/linkbrowser/img/flags/hn.png | Bin 0 -> 411 bytes .../extra/linkbrowser/img/flags/hr.png | Bin 0 -> 386 bytes .../extra/linkbrowser/img/flags/ht.png | Bin 0 -> 327 bytes .../extra/linkbrowser/img/flags/hu.png | Bin 0 -> 293 bytes .../extra/linkbrowser/img/flags/id.png | Bin 0 -> 301 bytes .../extra/linkbrowser/img/flags/ie.png | Bin 0 -> 333 bytes .../extra/linkbrowser/img/flags/il.png | Bin 0 -> 326 bytes .../extra/linkbrowser/img/flags/in.png | Bin 0 -> 377 bytes .../extra/linkbrowser/img/flags/io.png | Bin 0 -> 575 bytes .../extra/linkbrowser/img/flags/iq.png | Bin 0 -> 403 bytes .../extra/linkbrowser/img/flags/ir.png | Bin 0 -> 398 bytes .../extra/linkbrowser/img/flags/is.png | Bin 0 -> 410 bytes .../extra/linkbrowser/img/flags/it.png | Bin 0 -> 283 bytes .../extra/linkbrowser/img/flags/jm.png | Bin 0 -> 508 bytes .../extra/linkbrowser/img/flags/jo.png | Bin 0 -> 353 bytes .../extra/linkbrowser/img/flags/jp.png | Bin 0 -> 307 bytes .../extra/linkbrowser/img/flags/ke.png | Bin 0 -> 435 bytes .../extra/linkbrowser/img/flags/kg.png | Bin 0 -> 354 bytes .../extra/linkbrowser/img/flags/kh.png | Bin 0 -> 422 bytes .../extra/linkbrowser/img/flags/ki.png | Bin 0 -> 551 bytes .../extra/linkbrowser/img/flags/km.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/kn.png | Bin 0 -> 480 bytes .../extra/linkbrowser/img/flags/kp.png | Bin 0 -> 424 bytes .../extra/linkbrowser/img/flags/kr.png | Bin 0 -> 507 bytes .../extra/linkbrowser/img/flags/kw.png | Bin 0 -> 351 bytes .../extra/linkbrowser/img/flags/ky.png | Bin 0 -> 532 bytes .../extra/linkbrowser/img/flags/kz.png | Bin 0 -> 459 bytes .../extra/linkbrowser/img/flags/la.png | Bin 0 -> 415 bytes .../extra/linkbrowser/img/flags/lb.png | Bin 0 -> 393 bytes .../extra/linkbrowser/img/flags/lc.png | Bin 0 -> 462 bytes .../extra/linkbrowser/img/flags/li.png | Bin 0 -> 399 bytes .../extra/linkbrowser/img/flags/lk.png | Bin 0 -> 464 bytes .../extra/linkbrowser/img/flags/lr.png | Bin 0 -> 365 bytes .../extra/linkbrowser/img/flags/ls.png | Bin 0 -> 500 bytes .../extra/linkbrowser/img/flags/lt.png | Bin 0 -> 345 bytes .../extra/linkbrowser/img/flags/lu.png | Bin 0 -> 338 bytes .../extra/linkbrowser/img/flags/lv.png | Bin 0 -> 339 bytes .../extra/linkbrowser/img/flags/ly.png | Bin 0 -> 277 bytes .../extra/linkbrowser/img/flags/ma.png | Bin 0 -> 293 bytes .../extra/linkbrowser/img/flags/mc.png | Bin 0 -> 254 bytes .../extra/linkbrowser/img/flags/md.png | Bin 0 -> 404 bytes .../extra/linkbrowser/img/flags/me.png | Bin 0 -> 394 bytes .../extra/linkbrowser/img/flags/mg.png | Bin 0 -> 313 bytes .../extra/linkbrowser/img/flags/mh.png | Bin 0 -> 518 bytes .../extra/linkbrowser/img/flags/mk.png | Bin 0 -> 449 bytes .../extra/linkbrowser/img/flags/ml.png | Bin 0 -> 322 bytes .../extra/linkbrowser/img/flags/mm.png | Bin 0 -> 336 bytes .../extra/linkbrowser/img/flags/mn.png | Bin 0 -> 343 bytes .../extra/linkbrowser/img/flags/mo.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/mp.png | Bin 0 -> 481 bytes .../extra/linkbrowser/img/flags/mq.png | Bin 0 -> 541 bytes .../extra/linkbrowser/img/flags/mr.png | Bin 0 -> 408 bytes .../extra/linkbrowser/img/flags/ms.png | Bin 0 -> 497 bytes .../extra/linkbrowser/img/flags/mt.png | Bin 0 -> 296 bytes .../extra/linkbrowser/img/flags/mu.png | Bin 0 -> 360 bytes .../extra/linkbrowser/img/flags/mv.png | Bin 0 -> 391 bytes .../extra/linkbrowser/img/flags/mw.png | Bin 0 -> 365 bytes .../extra/linkbrowser/img/flags/mx.png | Bin 0 -> 424 bytes .../extra/linkbrowser/img/flags/my.png | Bin 0 -> 464 bytes .../extra/linkbrowser/img/flags/mz.png | Bin 0 -> 439 bytes .../extra/linkbrowser/img/flags/na.png | Bin 0 -> 559 bytes .../extra/linkbrowser/img/flags/nc.png | Bin 0 -> 470 bytes .../extra/linkbrowser/img/flags/ne.png | Bin 0 -> 393 bytes .../extra/linkbrowser/img/flags/nf.png | Bin 0 -> 474 bytes .../extra/linkbrowser/img/flags/ng.png | Bin 0 -> 341 bytes .../extra/linkbrowser/img/flags/ni.png | Bin 0 -> 372 bytes .../extra/linkbrowser/img/flags/nl.png | Bin 0 -> 310 bytes .../extra/linkbrowser/img/flags/no.png | Bin 0 -> 397 bytes .../extra/linkbrowser/img/flags/np.png | Bin 0 -> 349 bytes .../extra/linkbrowser/img/flags/nr.png | Bin 0 -> 391 bytes .../extra/linkbrowser/img/flags/nu.png | Bin 0 -> 468 bytes .../extra/linkbrowser/img/flags/nz.png | Bin 0 -> 529 bytes .../extra/linkbrowser/img/flags/om.png | Bin 0 -> 339 bytes .../extra/linkbrowser/img/flags/pa.png | Bin 0 -> 390 bytes .../extra/linkbrowser/img/flags/pe.png | Bin 0 -> 264 bytes .../extra/linkbrowser/img/flags/pf.png | Bin 0 -> 379 bytes .../extra/linkbrowser/img/flags/pg.png | Bin 0 -> 438 bytes .../extra/linkbrowser/img/flags/ph.png | Bin 0 -> 416 bytes .../extra/linkbrowser/img/flags/pk.png | Bin 0 -> 448 bytes .../extra/linkbrowser/img/flags/pl.png | Bin 0 -> 243 bytes .../extra/linkbrowser/img/flags/pm.png | Bin 0 -> 572 bytes .../extra/linkbrowser/img/flags/pn.png | Bin 0 -> 547 bytes .../extra/linkbrowser/img/flags/pr.png | Bin 0 -> 445 bytes .../extra/linkbrowser/img/flags/ps.png | Bin 0 -> 348 bytes .../extra/linkbrowser/img/flags/pt.png | Bin 0 -> 407 bytes .../extra/linkbrowser/img/flags/pw.png | Bin 0 -> 424 bytes .../extra/linkbrowser/img/flags/py.png | Bin 0 -> 344 bytes .../extra/linkbrowser/img/flags/qa.png | Bin 0 -> 343 bytes .../extra/linkbrowser/img/flags/re.png | Bin 0 -> 369 bytes .../extra/linkbrowser/img/flags/ro.png | Bin 0 -> 333 bytes .../extra/linkbrowser/img/flags/rs.png | Bin 0 -> 376 bytes .../extra/linkbrowser/img/flags/ru.png | Bin 0 -> 299 bytes .../extra/linkbrowser/img/flags/rw.png | Bin 0 -> 382 bytes .../extra/linkbrowser/img/flags/sa.png | Bin 0 -> 428 bytes .../extra/linkbrowser/img/flags/sb.png | Bin 0 -> 520 bytes .../extra/linkbrowser/img/flags/sc.png | Bin 0 -> 481 bytes .../extra/linkbrowser/img/flags/scotland.png | Bin 0 -> 554 bytes .../extra/linkbrowser/img/flags/sd.png | Bin 0 -> 364 bytes .../extra/linkbrowser/img/flags/se.png | Bin 0 -> 389 bytes .../extra/linkbrowser/img/flags/sg.png | Bin 0 -> 350 bytes .../extra/linkbrowser/img/flags/sh.png | Bin 0 -> 524 bytes .../extra/linkbrowser/img/flags/si.png | Bin 0 -> 383 bytes .../extra/linkbrowser/img/flags/sj.png | Bin 0 -> 397 bytes .../extra/linkbrowser/img/flags/sk.png | Bin 0 -> 439 bytes .../extra/linkbrowser/img/flags/sl.png | Bin 0 -> 321 bytes .../extra/linkbrowser/img/flags/sm.png | Bin 0 -> 396 bytes .../extra/linkbrowser/img/flags/sn.png | Bin 0 -> 356 bytes .../extra/linkbrowser/img/flags/so.png | Bin 0 -> 376 bytes .../extra/linkbrowser/img/flags/sr.png | Bin 0 -> 370 bytes .../extra/linkbrowser/img/flags/st.png | Bin 0 -> 429 bytes .../extra/linkbrowser/img/flags/sv.png | Bin 0 -> 373 bytes .../extra/linkbrowser/img/flags/sy.png | Bin 0 -> 322 bytes .../extra/linkbrowser/img/flags/sz.png | Bin 0 -> 508 bytes .../extra/linkbrowser/img/flags/tc.png | Bin 0 -> 509 bytes .../extra/linkbrowser/img/flags/td.png | Bin 0 -> 378 bytes .../extra/linkbrowser/img/flags/tf.png | Bin 0 -> 399 bytes .../extra/linkbrowser/img/flags/tg.png | Bin 0 -> 410 bytes .../extra/linkbrowser/img/flags/th.png | Bin 0 -> 327 bytes .../extra/linkbrowser/img/flags/tj.png | Bin 0 -> 367 bytes .../extra/linkbrowser/img/flags/tk.png | Bin 0 -> 522 bytes .../extra/linkbrowser/img/flags/tl.png | Bin 0 -> 395 bytes .../extra/linkbrowser/img/flags/tm.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/tn.png | Bin 0 -> 367 bytes .../extra/linkbrowser/img/flags/to.png | Bin 0 -> 302 bytes .../extra/linkbrowser/img/flags/tr.png | Bin 0 -> 366 bytes .../extra/linkbrowser/img/flags/tt.png | Bin 0 -> 486 bytes .../extra/linkbrowser/img/flags/tv.png | Bin 0 -> 443 bytes .../extra/linkbrowser/img/flags/tw.png | Bin 0 -> 330 bytes .../extra/linkbrowser/img/flags/tz.png | Bin 0 -> 514 bytes .../extra/linkbrowser/img/flags/ua.png | Bin 0 -> 304 bytes .../extra/linkbrowser/img/flags/ug.png | Bin 0 -> 388 bytes .../extra/linkbrowser/img/flags/um.png | Bin 0 -> 455 bytes .../extra/linkbrowser/img/flags/us.png | Bin 0 -> 492 bytes .../extra/linkbrowser/img/flags/uy.png | Bin 0 -> 411 bytes .../extra/linkbrowser/img/flags/uz.png | Bin 0 -> 411 bytes .../extra/linkbrowser/img/flags/va.png | Bin 0 -> 419 bytes .../extra/linkbrowser/img/flags/vc.png | Bin 0 -> 412 bytes .../extra/linkbrowser/img/flags/ve.png | Bin 0 -> 412 bytes .../extra/linkbrowser/img/flags/vg.png | Bin 0 -> 510 bytes .../extra/linkbrowser/img/flags/vi.png | Bin 0 -> 523 bytes .../extra/linkbrowser/img/flags/vn.png | Bin 0 -> 324 bytes .../extra/linkbrowser/img/flags/vu.png | Bin 0 -> 450 bytes .../extra/linkbrowser/img/flags/wales.png | Bin 0 -> 557 bytes .../extra/linkbrowser/img/flags/wf.png | Bin 0 -> 438 bytes .../extra/linkbrowser/img/flags/ws.png | Bin 0 -> 352 bytes .../extra/linkbrowser/img/flags/ye.png | Bin 0 -> 302 bytes .../extra/linkbrowser/img/flags/yt.png | Bin 0 -> 456 bytes .../extra/linkbrowser/img/flags/za.png | Bin 0 -> 523 bytes .../extra/linkbrowser/img/flags/zm.png | Bin 0 -> 359 bytes .../extra/linkbrowser/img/flags/zw.png | Bin 0 -> 462 bytes .../linkbrowser/lib/linkbrowser-plugin.js | 150 + .../plugins/extra/linkbrowser/nls/ca/i18n.js | 6 + .../plugins/extra/linkbrowser/nls/de/i18n.js | 6 + .../plugins/extra/linkbrowser/nls/i18n.js | 15 + .../plugins/extra/linkbrowser/nls/mk/i18n.js | 6 + .../extra/linkbrowser/nls/pt-br/i18n.js | 6 + .../plugins/extra/linkbrowser/nls/ru/i18n.js | 6 + .../plugins/extra/linkbrowser/nls/uk/i18n.js | 6 + .../extra/linkbrowser/nls/zh-hans/i18n.js | 6 + .../plugins/extra/linkchecker/demo/index.css | 67 + .../plugins/extra/linkchecker/demo/index.html | 113 + .../plugins/extra/linkchecker/nls/ca/i18n.js | 28 + .../plugins/extra/linkchecker/nls/de/i18n.js | 28 + .../plugins/extra/linkchecker/nls/i18n.js | 37 + .../plugins/extra/linkchecker/nls/mk/i18n.js | 28 + .../extra/linkchecker/nls/pt-br/i18n.js | 28 + .../plugins/extra/linkchecker/nls/ru/i18n.js | 28 + .../plugins/extra/linkchecker/nls/uk/i18n.js | 28 + .../extra/linkchecker/nls/zh-hans/i18n.js | 28 + .../plugins/extra/linkchecker/package.json | 1 + .../extra/linkchecker/proxy.php.example | 244 + .../extra/linkchecker/src/linkchecker.css | 14 + .../extra/linkchecker/src/linkchecker.js | 269 + .../listenforcer/lib/listenforcer-plugin.js | 190 + .../static/plugins/extra/metaview/README | 0 .../plugins/extra/metaview/css/metaview.css | 162 + .../plugins/extra/metaview/img/anchor.png | Bin 0 -> 213 bytes .../plugins/extra/metaview/img/blockquote.png | Bin 0 -> 135 bytes .../plugins/extra/metaview/img/button.png | Bin 0 -> 135 bytes .../plugins/extra/metaview/img/caption.png | Bin 0 -> 122 bytes .../plugins/extra/metaview/img/cite.png | Bin 0 -> 395 bytes .../static/plugins/extra/metaview/img/dd.png | Bin 0 -> 87 bytes .../static/plugins/extra/metaview/img/div.png | Bin 0 -> 99 bytes .../static/plugins/extra/metaview/img/dl.png | Bin 0 -> 86 bytes .../static/plugins/extra/metaview/img/dt.png | Bin 0 -> 87 bytes .../static/plugins/extra/metaview/img/h1.png | Bin 0 -> 111 bytes .../static/plugins/extra/metaview/img/h2.png | Bin 0 -> 116 bytes .../static/plugins/extra/metaview/img/h3.png | Bin 0 -> 114 bytes .../static/plugins/extra/metaview/img/h4.png | Bin 0 -> 115 bytes .../static/plugins/extra/metaview/img/h5.png | Bin 0 -> 116 bytes .../static/plugins/extra/metaview/img/h6.png | Bin 0 -> 116 bytes .../static/plugins/extra/metaview/img/hr.png | Bin 0 -> 104 bytes .../plugins/extra/metaview/img/icon_cite.png | Bin 0 -> 241 bytes .../static/plugins/extra/metaview/img/p.png | Bin 0 -> 113 bytes .../static/plugins/extra/metaview/img/pre.png | Bin 0 -> 122 bytes .../plugins/extra/metaview/img/table.png | Bin 0 -> 116 bytes .../static/plugins/extra/metaview/img/td.png | Bin 0 -> 87 bytes .../static/plugins/extra/metaview/img/th.png | Bin 0 -> 91 bytes .../extra/metaview/lib/metaview-plugin.js | 101 + .../plugins/extra/metaview/nls/ca/i18n.js | 3 + .../plugins/extra/metaview/nls/de/i18n.js | 3 + .../static/plugins/extra/metaview/nls/i18n.js | 12 + .../plugins/extra/metaview/nls/mk/i18n.js | 3 + .../plugins/extra/metaview/nls/pt-br/i18n.js | 3 + .../plugins/extra/metaview/nls/ru/i18n.js | 3 + .../plugins/extra/metaview/nls/uk/i18n.js | 3 + .../extra/metaview/nls/zh-hans/i18n.js | 3 + .../plugins/extra/numerated-headers/README | 0 .../css/numerated-headers.css | 9 + .../extra/numerated-headers/demo/index.css | 199 + .../extra/numerated-headers/demo/index.html | 147 + .../numerated-headers/demo/js/aloha-config.js | 115 + .../extra/numerated-headers/img/headers.png | Bin 0 -> 136 bytes .../lib/numerated-headers-plugin.js | 413 + .../extra/numerated-headers/nls/ca/i18n.js | 5 + .../extra/numerated-headers/nls/de/i18n.js | 5 + .../extra/numerated-headers/nls/i18n.js | 14 + .../extra/numerated-headers/nls/mk/i18n.js | 5 + .../extra/numerated-headers/nls/pt-br/i18n.js | 5 + .../extra/numerated-headers/nls/ru/i18n.js | 5 + .../extra/numerated-headers/nls/uk/i18n.js | 5 + .../numerated-headers/nls/zh-hans/i18n.js | 5 + .../plugins/extra/profiler/css/profiler.css | 35 + .../extra/profiler/lib/profiler-plugin.js | 304 + .../plugins/extra/proxy/adapter/proxy.php | 248 + .../plugins/extra/proxy/lib/proxy-plugin.js | 38 + .../static/plugins/extra/ribbon/README.md | 8 + .../plugins/extra/ribbon/css/ribbon.css | 61 + .../plugins/extra/ribbon/img/fade-in.png | Bin 0 -> 278 bytes .../plugins/extra/ribbon/img/fade-out.png | Bin 0 -> 292 bytes .../plugins/extra/ribbon/lib/ribbon-plugin.js | 138 + .../static/plugins/extra/ribbon/package.json | 1 + .../extra/sourceview/css/sourceview.css | 18 + .../extra/sourceview/lib/sourceview-plugin.js | 251 + .../extra/sourceview/vendor/htmlbeautifier.js | 468 + .../aloha/static/plugins/extra/speak/README | 0 .../static/plugins/extra/speak/css/speak.css | 3 + .../plugins/extra/speak/img/speaker.png | Bin 0 -> 760 bytes .../plugins/extra/speak/lib/speak-plugin.js | 63 + .../static/plugins/extra/speak/lib/speak.js | 3 + .../static/plugins/extra/speak/package.json | 1 + .../plugins/extra/toc/lib/toc-plugin.js | 402 + .../static/plugins/extra/toc/nls/ca/i18n.js | 3 + .../static/plugins/extra/toc/nls/de/i18n.js | 3 + .../static/plugins/extra/toc/nls/i18n.js | 12 + .../static/plugins/extra/toc/nls/mk/i18n.js | 3 + .../plugins/extra/toc/nls/pt-br/i18n.js | 3 + .../static/plugins/extra/toc/nls/ru/i18n.js | 3 + .../static/plugins/extra/toc/nls/uk/i18n.js | 3 + .../plugins/extra/toc/nls/zh-hans/i18n.js | 3 + .../static/plugins/extra/toc/package.json | 1 + .../static/plugins/extra/wai-lang/README.md | 11 + .../plugins/extra/wai-lang/css/wai-lang.css | 28 + .../plugins/extra/wai-lang/img/button.png | Bin 0 -> 849 bytes .../extra/wai-lang/img/remove-button.png | Bin 0 -> 866 bytes .../plugins/extra/wai-lang/lib/iso639-1-de.js | 594 + .../plugins/extra/wai-lang/lib/iso639-1-en.js | 594 + .../plugins/extra/wai-lang/lib/iso639-2-de.js | 1569 ++ .../plugins/extra/wai-lang/lib/iso639-2-en.js | 1569 ++ .../plugins/extra/wai-lang/lib/languages.js | 174 + .../extra/wai-lang/lib/wai-lang-plugin.js | 384 + .../plugins/extra/wai-lang/nls/ca/i18n.js | 5 + .../plugins/extra/wai-lang/nls/de/i18n.js | 5 + .../static/plugins/extra/wai-lang/nls/i18n.js | 14 + .../plugins/extra/wai-lang/nls/mk/i18n.js | 5 + .../plugins/extra/wai-lang/nls/pt-br/i18n.js | 5 + .../plugins/extra/wai-lang/nls/ru/i18n.js | 5 + .../plugins/extra/wai-lang/nls/uk/i18n.js | 5 + .../extra/wai-lang/nls/zh-hans/i18n.js | 5 + .../aloha/static/plugins/extra/zemanta/README | 5 + .../css/zemanta-widget-alohaeditor.css | 24 + .../extra/zemanta/img/zemanta-mini-logo.png | Bin 0 -> 622 bytes .../extra/zemanta/lib/zemanta-plugin.js | 259 + .../plugins/extra/zemanta/nls/ca/i18n.js | 5 + .../plugins/extra/zemanta/nls/de/i18n.js | 5 + .../static/plugins/extra/zemanta/nls/i18n.js | 14 + .../plugins/extra/zemanta/nls/mk/i18n.js | 5 + .../plugins/extra/zemanta/nls/pt-br/i18n.js | 5 + .../plugins/extra/zemanta/nls/ru/i18n.js | 5 + .../plugins/extra/zemanta/nls/uk/i18n.js | 5 + .../plugins/extra/zemanta/nls/zh-hans/i18n.js | 5 + modules/core/aloha/static/sass/aloha.scss | 139 + .../aloha/static/test/AlohaEditorLogo.png | Bin 0 -> 14324 bytes .../static/test/helper-generatetests.html | 37 + modules/core/aloha/static/test/index.html | 63 + .../test/manual/blocks-caret-positioning.html | 50 + .../aloha/static/test/manual/hotkeys.html | 1392 ++ .../aloha/static/test/manual/sandbox.html | 46 + .../aloha/static/test/manual/testbox.html | 192 + .../core/aloha/static/test/manual/testbox.js | 328 + modules/core/aloha/static/test/style.css | 24 + .../aloha/static/test/unit/apply-markup.js | 243 + .../aloha/static/test/unit/applymarkup.html | 93 + modules/core/aloha/static/test/unit/bold.html | 487 + .../aloha/static/test/unit/commands/bold.html | 617 + .../test/unit/commands/browser_results.txt | 55 + .../test/unit/commands/create_link.html | 383 + .../static/test/unit/commands/debugging.html | 75 + .../test/unit/commands/format_block.html | 870 + .../static/test/unit/commands/indent.html | 162 + .../test/unit/commands/insertorderedlist.html | 279 + .../unit/commands/insertunorderedlist.html | 280 + .../static/test/unit/commands/italic.html | 426 + .../static/test/unit/commands/outdent.html | 142 + .../test/unit/commands/remove_format.html | 451 + .../test/unit/commands/strikethrough.html | 337 + .../static/test/unit/commands/subscript.html | 390 + .../test/unit/commands/superscript.html | 394 + .../static/test/unit/commands/underline.html | 380 + .../static/test/unit/commands/unlink.html | 151 + .../aloha/static/test/unit/commandtest.css | 19 + .../aloha/static/test/unit/commandtest.js | 262 + .../static/test/unit/contenthandler.html | 142 + .../contenthandler/example-docx-expected.html | 108 + .../contenthandler/example-docx-start.html | 645 + .../test/unit/contenthandler/example.doc | Bin 0 -> 35840 bytes .../test/unit/contenthandler/example.docx | Bin 0 -> 77647 bytes .../test/unit/contenthandler/example.htm | 382 + .../test/unit/contenthandler/example.odt | Bin 0 -> 9669 bytes .../test/unit/contenthandler/example.pdf | Bin 0 -> 85278 bytes .../test/unit/contenthandler/example.rtf | 1 + .../test/unit/contenthandler/example.txt | 1 + .../contenthandler/html-basic-expected.html | 6 + .../unit/contenthandler/html-expected.html | 6 + .../html-restricted-expected.html | 1 + .../test/unit/contenthandler/html-start.html | 1 + .../test/unit/contenthandler/html-value.html | 5 + .../unit/contenthandler/html2-expected.html | 31 + .../test/unit/contenthandler/html2-start.html | 1 + .../test/unit/contenthandler/html2-value.html | 31 + .../test/unit/contenthandler/html3-value.html | 23 + .../test/unit/contenthandler/html4-value.html | 17 + .../test/unit/contenthandler/html5-value.html | 25 + .../test/unit/contenthandler/html6-value.html | 22 + .../test/unit/contenthandler/html7-value.html | 54 + .../contenthandler/libreoffice-expected.html | 8 + .../contenthandler/libreoffice-start.html | 3 + .../contenthandler/libreoffice-value.html | 3 + .../unit/contenthandler/rte-expected.html | 27 + .../contenthandler/rte-expected.source.html | 27 + .../test/unit/contenthandler/rte-start.html | 1 + .../test/unit/contenthandler/rte-value.html | 27 + .../unit/contenthandler/txt-expected.html | 4 + .../test/unit/contenthandler/txt-start.html | 1 + .../test/unit/contenthandler/txt-value.html | 25 + .../test/unit/contenthandlermanager.html | 45 + .../test/unit/contenthandlermanagertest.js | 127 + .../static/test/unit/contenthandlertest.js | 117 + modules/core/aloha/static/test/unit/core.html | 57 + .../static/test/unit/core/ephemera-tests.js | 86 + .../aloha/static/test/unit/core/index.html | 54 + .../core/aloha/static/test/unit/coretests.js | 145 + .../core/aloha/static/test/unit/delete.html | 58 + .../core/aloha/static/test/unit/deletetest.js | 1401 ++ modules/core/aloha/static/test/unit/ecma5.js | 237 + .../core/aloha/static/test/unit/editable.html | 472 + .../aloha/static/test/unit/editabletests.js | 535 + .../aloha/static/test/unit/forwarddelete.html | 58 + .../static/test/unit/forwarddeletetest.js | 1441 ++ .../aloha/static/test/unit/htmlbeautifier.js | 468 + .../core/aloha/static/test/unit/indent.html | 162 + .../aloha/static/test/unit/inserthtml.html | 427 + .../static/test/unit/insertlinebreak.html | 684 + .../static/test/unit/insertorderedlist.html | 235 + .../static/test/unit/insertparagraph.html | 625 + .../static/test/unit/insertparagraphtest.js | 367 + .../static/test/unit/insertunorderedlist.html | 235 + modules/core/aloha/static/test/unit/list.html | 313 + .../core/aloha/static/test/unit/outdent.html | 139 + .../aloha/static/test/unit/plugin-blocks.html | 47 + .../static/test/unit/plugin-blocktests.js | 501 + .../aloha/static/test/unit/pluginapi.html | 65 + .../aloha/static/test/unit/pluginapitests.js | 232 + .../test/unit/plugins/dom-to-xhtml-tests.html | 54 + .../test/unit/plugins/dom-to-xhtml-tests.js | 314 + .../static/test/unit/plugins/ui-tests.js | 44 + .../aloha/static/test/unit/plugins/ui.html | 54 + .../static/test/unit/plugintest1/css/test.js | 5 + .../test/unit/plugintest1/lib/component.js | 13 + .../unit/plugintest1/lib/componenttype.js | 14 + .../plugintest1/lib/plugintest1-plugin.js | 48 + .../static/test/unit/plugintest1/lib/test.js | 5 + .../static/test/unit/plugintest1/nls/de.json | 3 + .../test/unit/plugintest1/nls/de/i18n.js | 3 + .../static/test/unit/plugintest1/nls/en.json | 3 + .../test/unit/plugintest1/nls/en/i18n.js | 3 + .../static/test/unit/plugintest1/nls/i18n.js | 6 + .../static/test/unit/plugintest1/res/test.js | 5 + .../test/unit/plugintest1/res/test.json | 1 + .../test/unit/plugintest1/vendor/test.js | 5 + .../aloha/static/test/unit/plugintest2/README | 0 .../test/unit/plugintest2/lib/component.js | 14 + .../unit/plugintest2/lib/jquery.alohaTest.js | 5 + .../plugintest2/lib/plugintest2-plugin.js | 34 + .../static/test/unit/plugintest2/nls/en.json | 3 + .../test/unit/plugintest2/nls/en/i18n.js | 3 + .../static/test/unit/plugintest2/nls/i18n.js | 4 + .../test/unit/plugintest2/res/test.json | 1 + .../aloha/static/test/unit/remove-markup.js | 293 + .../aloha/static/test/unit/removemarkup.html | 88 + .../aloha/static/test/unit/repository.html | 56 + .../aloha/static/test/unit/repository2.html | 59 + .../aloha/static/test/unit/repositorytests.js | 547 + .../static/test/unit/repositorytests2.js | 513 + .../aloha/static/test/unit/selection1.html | 51 + .../aloha/static/test/unit/selection2.html | 51 + .../aloha/static/test/unit/selection3.html | 51 + .../aloha/static/test/unit/selectiontest.js | 896 + .../core/aloha/static/test/unit/table.html | 47 + .../core/aloha/static/test/unit/tabletests.js | 795 + .../core/aloha/static/test/unit/testutils.js | 502 + .../static/test/unit/util/arrays-tests.js | 37 + .../aloha/static/test/unit/util/dom2-tests.js | 29 + .../aloha/static/test/unit/util/index.html | 54 + .../static/test/unit/util/strings-tests.js | 24 + .../static/test/unit/util/trees-tests.js | 246 + .../aloha/static/test/unit/wailangrepo.html | 63 + .../static/test/unit/wailangrepotests.js | 109 + .../aloha/static/test/vendor/jquery-1.2.1.js | 3312 ++++ .../aloha/static/test/vendor/jquery-1.5.1.js | 8306 +++++++++ .../aloha/static/test/vendor/jquery-1.6.1.js | 8924 +++++++++ .../static/test/vendor/jquery.simulate.js | 152 + .../core/aloha/static/test/vendor/qunit.css | 259 + .../core/aloha/static/test/vendor/qunit.js | 1549 ++ .../aloha/static/test/vendor/swarminject.js | 9 + .../core/aloha/templates/aloha.script.html | 11 + modules/core/aloha/templates/aloha.style.html | 2 + test/config.test.js | 2 +- 1575 files changed, 207897 insertions(+), 1 deletion(-) create mode 100644 modules/core/aloha/.gitignore create mode 100644 modules/core/aloha/aloha.js create mode 100644 modules/core/aloha/package.json create mode 100644 modules/core/aloha/static/css/aloha-common-extra.css create mode 100644 modules/core/aloha/static/css/aloha-core.css create mode 100644 modules/core/aloha/static/css/aloha-reset.css create mode 100644 modules/core/aloha/static/css/aloha-sidebar.css create mode 100644 modules/core/aloha/static/css/aloha.css create mode 100644 modules/core/aloha/static/img/arrow-down.png create mode 100644 modules/core/aloha/static/img/arrow-left.png create mode 100644 modules/core/aloha/static/img/arrow.png create mode 100644 modules/core/aloha/static/img/base-multi.png create mode 100644 modules/core/aloha/static/img/base.png create mode 100644 modules/core/aloha/static/img/bg.png create mode 100644 modules/core/aloha/static/img/breadcrumb-divider.png create mode 100644 modules/core/aloha/static/img/gentics-logo.png create mode 100644 modules/core/aloha/static/img/grabhandle.png create mode 100644 modules/core/aloha/static/img/maximize.png create mode 100644 modules/core/aloha/static/img/multisplit-base.jpg create mode 100644 modules/core/aloha/static/img/multisplit-close.gif create mode 100644 modules/core/aloha/static/img/multisplit-open.gif create mode 100644 modules/core/aloha/static/img/pin.png create mode 100644 modules/core/aloha/static/img/removeformat.png create mode 100644 modules/core/aloha/static/img/text_indent.png create mode 100644 modules/core/aloha/static/img/text_indent_remove.png create mode 100644 modules/core/aloha/static/lib/aloha-jquery-noconflict.js create mode 100644 modules/core/aloha/static/lib/aloha.js create mode 100644 modules/core/aloha/static/lib/aloha/block-jump.js create mode 100644 modules/core/aloha/static/lib/aloha/command.js create mode 100644 modules/core/aloha/static/lib/aloha/console.js create mode 100644 modules/core/aloha/static/lib/aloha/contenthandlermanager.js create mode 100644 modules/core/aloha/static/lib/aloha/core.js create mode 100644 modules/core/aloha/static/lib/aloha/ecma5shims.js create mode 100644 modules/core/aloha/static/lib/aloha/editable.js create mode 100644 modules/core/aloha/static/lib/aloha/engine.js create mode 100644 modules/core/aloha/static/lib/aloha/ephemera.js create mode 100644 modules/core/aloha/static/lib/aloha/ierange-m2.js create mode 100644 modules/core/aloha/static/lib/aloha/jquery.aloha.js create mode 100644 modules/core/aloha/static/lib/aloha/markup.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/de/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/lib/aloha/observable.js create mode 100644 modules/core/aloha/static/lib/aloha/plugin.js create mode 100644 modules/core/aloha/static/lib/aloha/pluginmanager.js create mode 100644 modules/core/aloha/static/lib/aloha/rangy-core.js create mode 100644 modules/core/aloha/static/lib/aloha/registry.js create mode 100644 modules/core/aloha/static/lib/aloha/repository.js create mode 100644 modules/core/aloha/static/lib/aloha/repositorymanager.js create mode 100644 modules/core/aloha/static/lib/aloha/repositoryobjects.js create mode 100644 modules/core/aloha/static/lib/aloha/selection.js create mode 100644 modules/core/aloha/static/lib/aloha/sidebar.js create mode 100644 modules/core/aloha/static/lib/css.js create mode 100644 modules/core/aloha/static/lib/i18n.js create mode 100644 modules/core/aloha/static/lib/require.js create mode 100644 modules/core/aloha/static/lib/text.js create mode 100644 modules/core/aloha/static/lib/util/arrays.js create mode 100644 modules/core/aloha/static/lib/util/browser.js create mode 100644 modules/core/aloha/static/lib/util/class.js create mode 100644 modules/core/aloha/static/lib/util/dom.js create mode 100644 modules/core/aloha/static/lib/util/dom2.js create mode 100644 modules/core/aloha/static/lib/util/functions.js create mode 100644 modules/core/aloha/static/lib/util/json2.js create mode 100644 modules/core/aloha/static/lib/util/lang.js create mode 100644 modules/core/aloha/static/lib/util/maps.js create mode 100644 modules/core/aloha/static/lib/util/misc.js create mode 100644 modules/core/aloha/static/lib/util/position.js create mode 100644 modules/core/aloha/static/lib/util/range.js create mode 100644 modules/core/aloha/static/lib/util/strings.js create mode 100644 modules/core/aloha/static/lib/util/trees.js create mode 100644 modules/core/aloha/static/lib/vendor/3rdparty.txt create mode 100644 modules/core/aloha/static/lib/vendor/amplify.store.js create mode 100644 modules/core/aloha/static/lib/vendor/class.js create mode 100644 modules/core/aloha/static/lib/vendor/grid.locale.de.js create mode 100644 modules/core/aloha/static/lib/vendor/grid.locale.en.js create mode 100644 modules/core/aloha/static/lib/vendor/ierange-m2.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-1.5.1.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-1.6.1.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-1.6.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-1.7.1.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-1.7.2.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery-ui-1.9.0.custom-aloha.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery.jqgrid.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery.jstree.js create mode 100644 modules/core/aloha/static/lib/vendor/jquery.layout-1.3.0-rc30.7.js create mode 100644 modules/core/aloha/static/lib/vendor/pubsub/js/pubsub-unminified.js create mode 100644 modules/core/aloha/static/lib/vendor/pubsub/js/pubsub.js create mode 100644 modules/core/aloha/static/lib/vendor/rangy-core.js create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/css/jstree.css create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/css/repository-browser.css create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow-000-medium.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow-180.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow-315-medium.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow-stop-180.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow-stop.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/arrow.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/control-stop-square-small.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/folder-horizontal-open.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/folder-open.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/magnifier-left.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/page.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/picture.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/sort-alphabet-descending.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/sort-alphabet.png create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/img/throbber.gif create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/js/repository-browser-unminified.js create mode 100644 modules/core/aloha/static/lib/vendor/repository-browser/js/repository-browser.js create mode 100644 modules/core/aloha/static/lib/vendor/sanitize.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/css/abbr.css create mode 100644 modules/core/aloha/static/plugins/common/abbr/img/remabbr.png create mode 100644 modules/core/aloha/static/plugins/common/abbr/lib/abbr-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/abbr/package.json create mode 100644 modules/core/aloha/static/plugins/common/align/LICENSE create mode 100644 modules/core/aloha/static/plugins/common/align/README create mode 100644 modules/core/aloha/static/plugins/common/align/css/align.css create mode 100644 modules/core/aloha/static/plugins/common/align/img/align.png create mode 100644 modules/core/aloha/static/plugins/common/align/lib/align-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/align/package.json create mode 100644 modules/core/aloha/static/plugins/common/block/README create mode 100644 modules/core/aloha/static/plugins/common/block/css/block.css create mode 100644 modules/core/aloha/static/plugins/common/block/img/toolbar-draghandle.gif create mode 100644 modules/core/aloha/static/plugins/common/block/lib/block-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/block.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/blockcontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/blockmanager.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/editor.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/editormanager.js create mode 100644 modules/core/aloha/static/plugins/common/block/lib/sidebarattributeeditor.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/block/package.json create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/css/characterpicker.css create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/img/icon.png create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/lib/characterpicker-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/characterpicker/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/commands/css/abbr.css create mode 100644 modules/core/aloha/static/plugins/common/commands/lib/commands-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/commands/lib/inserthtml.js create mode 100644 modules/core/aloha/static/plugins/common/commands/package.json create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/README.md create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/blockelementcontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/contenthandler-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/genericcontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/oembedcontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/sanitizecontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/lib/wordcontenthandler.js create mode 100644 modules/core/aloha/static/plugins/common/contenthandler/package.json create mode 100644 modules/core/aloha/static/plugins/common/dom-to-xhtml/lib/dom-to-xhtml-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/dom-to-xhtml/lib/dom-to-xhtml.js create mode 100644 modules/core/aloha/static/plugins/common/format/img/em.png create mode 100644 modules/core/aloha/static/plugins/common/format/img/strong.png create mode 100644 modules/core/aloha/static/plugins/common/format/lib/format-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/format/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/highlighteditables/css/highlighteditables.css create mode 100644 modules/core/aloha/static/plugins/common/highlighteditables/lib/highlighteditables-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/highlighteditables/package.json create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/css/horizontalruler.css create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/img/icon.png create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/lib/horizontalruler-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/horizontalruler/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/README.md create mode 100644 modules/core/aloha/static/plugins/common/image/css/image.css create mode 100644 modules/core/aloha/static/plugins/common/image/demo/crop.html create mode 100644 modules/core/aloha/static/plugins/common/image/demo/crop.php create mode 100644 modules/core/aloha/static/plugins/common/image/demo/cropnresize.jpg create mode 100644 modules/core/aloha/static/plugins/common/image/demo/index.html create mode 100644 modules/core/aloha/static/plugins/common/image/img/blank.jpg create mode 100644 modules/core/aloha/static/plugins/common/image/img/crop-buttons.gif create mode 100644 modules/core/aloha/static/plugins/common/image/img/cropnresize.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/handle-sw.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image-align-left.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image-align-none.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image-align-right.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image-border.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image-title.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/image.gif create mode 100644 modules/core/aloha/static/plugins/common/image/img/padding-decrease.gif create mode 100644 modules/core/aloha/static/plugins/common/image/img/padding-increase.gif create mode 100644 modules/core/aloha/static/plugins/common/image/img/page.png create mode 100644 modules/core/aloha/static/plugins/common/image/img/size-decrease.gif create mode 100644 modules/core/aloha/static/plugins/common/image/img/size-increase.gif create mode 100644 modules/core/aloha/static/plugins/common/image/lib/image-floatingMenu.js create mode 100644 modules/core/aloha/static/plugins/common/image/lib/image-plugin-actions.js create mode 100644 modules/core/aloha/static/plugins/common/image/lib/image-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/image/package.json create mode 100644 modules/core/aloha/static/plugins/common/image/test/test.css create mode 100644 modules/core/aloha/static/plugins/common/image/test/test.html create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/jcrop/jcrop.gif create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/jcrop/jquery.jcrop.css create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/jcrop/jquery.jcrop.min.js create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/mousewheel/mousewheel.js create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/link/css/link.css create mode 100644 modules/core/aloha/static/plugins/common/link/extra/delicious.js create mode 100644 modules/core/aloha/static/plugins/common/link/extra/linklist.js create mode 100644 modules/core/aloha/static/plugins/common/link/extra/slowlinklist.js create mode 100644 modules/core/aloha/static/plugins/common/link/lib/link-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/link/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/lib/list-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/list/package.json create mode 100644 modules/core/aloha/static/plugins/common/paste/README.md create mode 100644 modules/core/aloha/static/plugins/common/paste/lib/paste-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/paste/package.json create mode 100644 modules/core/aloha/static/plugins/common/table/css/table.css create mode 100644 modules/core/aloha/static/plugins/common/table/img/down.cur create mode 100644 modules/core/aloha/static/plugins/common/table/img/left.cur create mode 100644 modules/core/aloha/static/plugins/common/table/img/table_layout.png create mode 100644 modules/core/aloha/static/plugins/common/table/img/wai-green.png create mode 100644 modules/core/aloha/static/plugins/common/table/img/wai-red.png create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table-cell.js create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table-create-layer.js create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table-plugin-utils.js create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table-selection.js create mode 100644 modules/core/aloha/static/plugins/common/table/lib/table.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/table/package.json create mode 100644 modules/core/aloha/static/plugins/common/ui/css/jquery-ui-1.9m6.css create mode 100644 modules/core/aloha/static/plugins/common/ui/css/ui.css create mode 100644 modules/core/aloha/static/plugins/common/ui/img/blockquote.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/character-picker.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/em.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/format-block.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/format-inline.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/indent.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/jqueryui/ui-icons_222222_256x240.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/justify.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/language-annotation.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/anchor.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/blockquote.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/caption.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/cite.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/dd.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/div.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/dl.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/dt.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h1.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h2.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h3.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h4.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h5.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/h6.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/p.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/pre.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/q.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/table.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/td.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/metaview/th.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/multisplit-close.gif create mode 100644 modules/core/aloha/static/plugins/common/ui/img/multisplit-open.gif create mode 100644 modules/core/aloha/static/plugins/common/ui/img/outdent.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/quote.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/removeformat.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/strong.png create mode 100644 modules/core/aloha/static/plugins/common/ui/img/tree.png create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/arena.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/autocomplete.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/button.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/component.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/container.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/context.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/dialog.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/floating.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/menuButton.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/multiSplit.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/port-helper-attribute-field.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/port-helper-multi-split.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/scopes.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/settings.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/subguarded.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/surface.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/tab.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/text.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/toggleButton.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/toolbar.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/ui-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/ui.js create mode 100644 modules/core/aloha/static/plugins/common/ui/lib/utils.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/common/ui/vendor/jquery-ui-autocomplete-html.js create mode 100644 modules/core/aloha/static/plugins/common/undo/demo/index.css create mode 100644 modules/core/aloha/static/plugins/common/undo/demo/index.html create mode 100644 modules/core/aloha/static/plugins/common/undo/lib/undo-plugin.js create mode 100644 modules/core/aloha/static/plugins/common/undo/package.json create mode 100644 modules/core/aloha/static/plugins/common/undo/vendor/diff_match_patch_uncompressed.js create mode 100644 modules/core/aloha/static/plugins/common/undo/vendor/undo.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/README create mode 100644 modules/core/aloha/static/plugins/extra/attributes/css/attributes.css create mode 100644 modules/core/aloha/static/plugins/extra/attributes/lib/attributes-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/attributes/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/captioned-image/css/captioned-image.css create mode 100644 modules/core/aloha/static/plugins/extra/captioned-image/lib/captioned-image-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/README create mode 100644 modules/core/aloha/static/plugins/extra/cite/css/cite.css create mode 100644 modules/core/aloha/static/plugins/extra/cite/img/blockquote.png create mode 100644 modules/core/aloha/static/plugins/extra/cite/img/icon_cite.png create mode 100644 modules/core/aloha/static/plugins/extra/cite/lib/cite-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/cite/package.json create mode 100644 modules/core/aloha/static/plugins/extra/comments/img/add-icon.png create mode 100644 modules/core/aloha/static/plugins/extra/comments/img/add.png create mode 100644 modules/core/aloha/static/plugins/extra/comments/img/comments.png create mode 100644 modules/core/aloha/static/plugins/extra/comments/img/hr.png create mode 100644 modules/core/aloha/static/plugins/extra/comments/img/textbox.png create mode 100644 modules/core/aloha/static/plugins/extra/comments/lib/comments-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/comments/lib/comments.css create mode 100644 modules/core/aloha/static/plugins/extra/comments/package.json create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/README.md create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/TODO.md create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/.gitignore create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/index.css create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/index.html create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/migration/index.css create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/migration/index.html create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/style.css create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/demo/upload.php.example create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/img/cross.png create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/img/hourglass.png create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/img/loading.gif create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/img/page.png create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/img/tick.png create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.css create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dropfilesrepository.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/draganddropfiles/package.json create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/LICENSE create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ab.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ad.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ae.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/af.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ag.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ai.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ak.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/al.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/am.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/an.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ao.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ar.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/as.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/at.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/au.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/av.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ax.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ay.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/az.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ba.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bb.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bd.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/be.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bj.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/br.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bs.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/by.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ca.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/catalonia.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cd.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ce.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ch.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ci.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ck.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/co.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cs.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cx.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/da.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/de.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dj.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/do.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ec.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ee.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/el.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/en.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/er.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/es.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/et.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/europeanunion.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fam.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ff.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fj.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ga.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gb.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gd.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ge.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gp.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gq.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gs.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ha.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/he.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ho.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ht.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/id.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ie.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ig.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ii.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/il.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/in.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/io.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/iq.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ir.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/is.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/it.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ja.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jp.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ka.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ke.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ki.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/km.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ko.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kp.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ks.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ku.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ky.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/la.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lb.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/li.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ln.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ls.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ly.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ma.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/md.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/me.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ml.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mp.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mq.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ms.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mx.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/my.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/na.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nb.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nd.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ne.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ng.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ni.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/no.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/np.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ny.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/oc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/om.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/or.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/os.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pe.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ph.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ps.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/py.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/qa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/re.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ro.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rs.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ru.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sb.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/scotland.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sd.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/se.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/si.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sj.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/so.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sq.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ss.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/st.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/su.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ta.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/td.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/te.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/th.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ti.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tj.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tl.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/to.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tr.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tv.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ty.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ua.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ug.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/uk.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/um.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ur.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/us.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/uy.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/uz.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/va.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vc.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ve.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vg.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vi.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vn.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vu.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wa.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wales.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wf.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wo.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ws.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/xh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ye.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/yt.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/za.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/zh.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/zm.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/img/flags/zw.png create mode 100644 modules/core/aloha/static/plugins/extra/flag-icons/lib/flag-icons-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/README.md create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/css/formatless.css create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/img/button.png create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/lib/formatlesshandler.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/formatlesspaste/package.json create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/README.md create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/css/googletranslate.css create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ad.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ae.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/af.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ag.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ai.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/al.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/am.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/an.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ao.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ar.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/as.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/at.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/au.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/aw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ax.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/az.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ba.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bb.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bd.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/be.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bi.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bj.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bo.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/br.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bs.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/by.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/bz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ca.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/catalonia.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cd.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ch.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ci.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ck.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/co.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cs.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cx.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cy.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/cz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/de.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/dj.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/dk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/dm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/do.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/dz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ec.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ee.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/eg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/eh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/en.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/er.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/es.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/et.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/europeanunion.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fam.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fi.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fj.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fo.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/fr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ga.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gb.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gd.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ge.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gi.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gp.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gq.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gs.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/gy.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/hk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/hm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/hn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/hr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ht.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/hu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/id.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ie.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/il.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/in.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/io.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/iq.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ir.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/is.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/it.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/jm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/jo.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/jp.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ke.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ki.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/km.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kp.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ky.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/kz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/la.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lb.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/li.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ls.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/lv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ly.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ma.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/md.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/me.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ml.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mo.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mp.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mq.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ms.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mx.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/my.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/mz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/na.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ne.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ng.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ni.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/no.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/np.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/nz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/om.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pa.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pe.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ph.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ps.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/pw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/py.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/qa.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/re.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ro.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/rs.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ru.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/rw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sa.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sb.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/scotland.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sd.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/se.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sh.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/si.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sj.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/so.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/st.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sy.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/sz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/td.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/th.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tj.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tk.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tl.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/to.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tr.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tv.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/tz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ua.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ug.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/um.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/us.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/uy.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/uz.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/va.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/vc.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ve.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/vg.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/vi.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/vn.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/vu.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/wales.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/wf.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ws.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/ye.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/yt.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/za.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/zm.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/img/zw.png create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/lib/googletranslate-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/googletranslate/package.json create mode 100644 modules/core/aloha/static/plugins/extra/headerids/README create mode 100644 modules/core/aloha/static/plugins/extra/headerids/css/headerids.css create mode 100644 modules/core/aloha/static/plugins/extra/headerids/lib/headerids-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/headerids/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/hints/README.md create mode 100644 modules/core/aloha/static/plugins/extra/hints/css/hints.css create mode 100644 modules/core/aloha/static/plugins/extra/hints/lib/hints-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/hints/package.json create mode 100644 modules/core/aloha/static/plugins/extra/hints/vendor/tipsy.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/README create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/lib/imagebrowser-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/imagebrowser/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/README create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ad.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ae.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/af.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ag.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ai.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/al.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/am.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/an.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ao.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ar.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/as.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/at.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/au.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/aw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ax.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/az.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ba.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bb.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bd.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/be.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bi.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bj.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bo.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/br.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bs.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/by.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ca.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/catalonia.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cd.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ch.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ci.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ck.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/co.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cs.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cx.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cy.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/de.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dj.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/do.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ec.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ee.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/eg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/eh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/en.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/er.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/es.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/et.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/europeanunion.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fam.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fi.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fj.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fo.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ga.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gb.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gd.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ge.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gi.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gp.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gq.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gs.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gy.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ht.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/id.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ie.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/il.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/in.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/io.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/iq.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ir.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/is.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/it.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jo.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jp.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ke.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ki.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/km.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kp.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ky.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/la.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lb.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/li.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ls.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ly.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ma.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/md.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/me.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ml.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mo.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mp.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mq.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ms.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mx.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/my.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/na.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ne.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ng.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ni.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/no.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/np.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/om.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pa.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pe.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ph.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ps.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/py.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/qa.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/re.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ro.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/rs.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ru.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/rw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sa.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sb.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/scotland.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sd.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/se.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sh.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/si.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sj.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/so.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/st.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sy.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/td.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/th.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tj.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tk.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tl.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/to.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tr.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tv.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ua.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ug.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/um.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/us.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/uy.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/uz.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/va.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vc.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ve.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vg.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vi.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vn.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vu.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/wales.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/wf.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ws.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ye.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/yt.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/za.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/zm.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/zw.png create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkbrowser/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/demo/index.css create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/demo/index.html create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/package.json create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/proxy.php.example create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.css create mode 100644 modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.js create mode 100644 modules/core/aloha/static/plugins/extra/listenforcer/lib/listenforcer-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/README create mode 100644 modules/core/aloha/static/plugins/extra/metaview/css/metaview.css create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/anchor.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/blockquote.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/button.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/caption.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/cite.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/dd.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/div.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/dl.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/dt.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h1.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h2.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h3.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h4.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h5.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/h6.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/hr.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/icon_cite.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/p.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/pre.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/table.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/td.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/img/th.png create mode 100644 modules/core/aloha/static/plugins/extra/metaview/lib/metaview-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/metaview/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/README create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/css/numerated-headers.css create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.css create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.html create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/demo/js/aloha-config.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/img/headers.png create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/numerated-headers/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/profiler/css/profiler.css create mode 100644 modules/core/aloha/static/plugins/extra/profiler/lib/profiler-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/proxy/adapter/proxy.php create mode 100644 modules/core/aloha/static/plugins/extra/proxy/lib/proxy-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/README.md create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/css/ribbon.css create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/img/fade-in.png create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/img/fade-out.png create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/lib/ribbon-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/ribbon/package.json create mode 100644 modules/core/aloha/static/plugins/extra/sourceview/css/sourceview.css create mode 100644 modules/core/aloha/static/plugins/extra/sourceview/lib/sourceview-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/sourceview/vendor/htmlbeautifier.js create mode 100644 modules/core/aloha/static/plugins/extra/speak/README create mode 100644 modules/core/aloha/static/plugins/extra/speak/css/speak.css create mode 100644 modules/core/aloha/static/plugins/extra/speak/img/speaker.png create mode 100644 modules/core/aloha/static/plugins/extra/speak/lib/speak-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/speak/lib/speak.js create mode 100644 modules/core/aloha/static/plugins/extra/speak/package.json create mode 100644 modules/core/aloha/static/plugins/extra/toc/lib/toc-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/toc/package.json create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/README.md create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/css/wai-lang.css create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/img/button.png create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/img/remove-button.png create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/iso639-1-de.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/iso639-1-en.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/iso639-2-de.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/iso639-2-en.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/languages.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/lib/wai-lang-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/wai-lang/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/README create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/css/zemanta-widget-alohaeditor.css create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/img/zemanta-mini-logo.png create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/lib/zemanta-plugin.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/ca/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/de/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/mk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/pt-br/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/ru/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/uk/i18n.js create mode 100644 modules/core/aloha/static/plugins/extra/zemanta/nls/zh-hans/i18n.js create mode 100644 modules/core/aloha/static/sass/aloha.scss create mode 100644 modules/core/aloha/static/test/AlohaEditorLogo.png create mode 100644 modules/core/aloha/static/test/helper-generatetests.html create mode 100644 modules/core/aloha/static/test/index.html create mode 100644 modules/core/aloha/static/test/manual/blocks-caret-positioning.html create mode 100644 modules/core/aloha/static/test/manual/hotkeys.html create mode 100644 modules/core/aloha/static/test/manual/sandbox.html create mode 100644 modules/core/aloha/static/test/manual/testbox.html create mode 100644 modules/core/aloha/static/test/manual/testbox.js create mode 100644 modules/core/aloha/static/test/style.css create mode 100644 modules/core/aloha/static/test/unit/apply-markup.js create mode 100644 modules/core/aloha/static/test/unit/applymarkup.html create mode 100644 modules/core/aloha/static/test/unit/bold.html create mode 100644 modules/core/aloha/static/test/unit/commands/bold.html create mode 100644 modules/core/aloha/static/test/unit/commands/browser_results.txt create mode 100644 modules/core/aloha/static/test/unit/commands/create_link.html create mode 100644 modules/core/aloha/static/test/unit/commands/debugging.html create mode 100644 modules/core/aloha/static/test/unit/commands/format_block.html create mode 100644 modules/core/aloha/static/test/unit/commands/indent.html create mode 100644 modules/core/aloha/static/test/unit/commands/insertorderedlist.html create mode 100644 modules/core/aloha/static/test/unit/commands/insertunorderedlist.html create mode 100644 modules/core/aloha/static/test/unit/commands/italic.html create mode 100644 modules/core/aloha/static/test/unit/commands/outdent.html create mode 100644 modules/core/aloha/static/test/unit/commands/remove_format.html create mode 100644 modules/core/aloha/static/test/unit/commands/strikethrough.html create mode 100644 modules/core/aloha/static/test/unit/commands/subscript.html create mode 100644 modules/core/aloha/static/test/unit/commands/superscript.html create mode 100644 modules/core/aloha/static/test/unit/commands/underline.html create mode 100644 modules/core/aloha/static/test/unit/commands/unlink.html create mode 100644 modules/core/aloha/static/test/unit/commandtest.css create mode 100644 modules/core/aloha/static/test/unit/commandtest.js create mode 100644 modules/core/aloha/static/test/unit/contenthandler.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example-docx-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example-docx-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.doc create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.docx create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.htm create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.odt create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.pdf create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.rtf create mode 100644 modules/core/aloha/static/test/unit/contenthandler/example.txt create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html-basic-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html-restricted-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html2-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html2-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html2-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html3-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html4-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html5-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html6-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/html7-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/libreoffice-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/libreoffice-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/libreoffice-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/rte-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/rte-expected.source.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/rte-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/rte-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/txt-expected.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/txt-start.html create mode 100644 modules/core/aloha/static/test/unit/contenthandler/txt-value.html create mode 100644 modules/core/aloha/static/test/unit/contenthandlermanager.html create mode 100644 modules/core/aloha/static/test/unit/contenthandlermanagertest.js create mode 100644 modules/core/aloha/static/test/unit/contenthandlertest.js create mode 100644 modules/core/aloha/static/test/unit/core.html create mode 100644 modules/core/aloha/static/test/unit/core/ephemera-tests.js create mode 100644 modules/core/aloha/static/test/unit/core/index.html create mode 100644 modules/core/aloha/static/test/unit/coretests.js create mode 100644 modules/core/aloha/static/test/unit/delete.html create mode 100644 modules/core/aloha/static/test/unit/deletetest.js create mode 100644 modules/core/aloha/static/test/unit/ecma5.js create mode 100644 modules/core/aloha/static/test/unit/editable.html create mode 100644 modules/core/aloha/static/test/unit/editabletests.js create mode 100644 modules/core/aloha/static/test/unit/forwarddelete.html create mode 100644 modules/core/aloha/static/test/unit/forwarddeletetest.js create mode 100644 modules/core/aloha/static/test/unit/htmlbeautifier.js create mode 100644 modules/core/aloha/static/test/unit/indent.html create mode 100644 modules/core/aloha/static/test/unit/inserthtml.html create mode 100644 modules/core/aloha/static/test/unit/insertlinebreak.html create mode 100644 modules/core/aloha/static/test/unit/insertorderedlist.html create mode 100644 modules/core/aloha/static/test/unit/insertparagraph.html create mode 100644 modules/core/aloha/static/test/unit/insertparagraphtest.js create mode 100644 modules/core/aloha/static/test/unit/insertunorderedlist.html create mode 100644 modules/core/aloha/static/test/unit/list.html create mode 100644 modules/core/aloha/static/test/unit/outdent.html create mode 100644 modules/core/aloha/static/test/unit/plugin-blocks.html create mode 100644 modules/core/aloha/static/test/unit/plugin-blocktests.js create mode 100644 modules/core/aloha/static/test/unit/pluginapi.html create mode 100644 modules/core/aloha/static/test/unit/pluginapitests.js create mode 100644 modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.html create mode 100644 modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.js create mode 100644 modules/core/aloha/static/test/unit/plugins/ui-tests.js create mode 100644 modules/core/aloha/static/test/unit/plugins/ui.html create mode 100644 modules/core/aloha/static/test/unit/plugintest1/css/test.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/lib/component.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/lib/componenttype.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/lib/plugintest1-plugin.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/lib/test.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/nls/de.json create mode 100644 modules/core/aloha/static/test/unit/plugintest1/nls/de/i18n.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/nls/en.json create mode 100644 modules/core/aloha/static/test/unit/plugintest1/nls/en/i18n.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/nls/i18n.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/res/test.js create mode 100644 modules/core/aloha/static/test/unit/plugintest1/res/test.json create mode 100644 modules/core/aloha/static/test/unit/plugintest1/vendor/test.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/README create mode 100644 modules/core/aloha/static/test/unit/plugintest2/lib/component.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/lib/jquery.alohaTest.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/lib/plugintest2-plugin.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/nls/en.json create mode 100644 modules/core/aloha/static/test/unit/plugintest2/nls/en/i18n.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/nls/i18n.js create mode 100644 modules/core/aloha/static/test/unit/plugintest2/res/test.json create mode 100644 modules/core/aloha/static/test/unit/remove-markup.js create mode 100644 modules/core/aloha/static/test/unit/removemarkup.html create mode 100644 modules/core/aloha/static/test/unit/repository.html create mode 100644 modules/core/aloha/static/test/unit/repository2.html create mode 100644 modules/core/aloha/static/test/unit/repositorytests.js create mode 100644 modules/core/aloha/static/test/unit/repositorytests2.js create mode 100644 modules/core/aloha/static/test/unit/selection1.html create mode 100644 modules/core/aloha/static/test/unit/selection2.html create mode 100644 modules/core/aloha/static/test/unit/selection3.html create mode 100644 modules/core/aloha/static/test/unit/selectiontest.js create mode 100644 modules/core/aloha/static/test/unit/table.html create mode 100644 modules/core/aloha/static/test/unit/tabletests.js create mode 100644 modules/core/aloha/static/test/unit/testutils.js create mode 100644 modules/core/aloha/static/test/unit/util/arrays-tests.js create mode 100644 modules/core/aloha/static/test/unit/util/dom2-tests.js create mode 100644 modules/core/aloha/static/test/unit/util/index.html create mode 100644 modules/core/aloha/static/test/unit/util/strings-tests.js create mode 100644 modules/core/aloha/static/test/unit/util/trees-tests.js create mode 100644 modules/core/aloha/static/test/unit/wailangrepo.html create mode 100644 modules/core/aloha/static/test/unit/wailangrepotests.js create mode 100644 modules/core/aloha/static/test/vendor/jquery-1.2.1.js create mode 100644 modules/core/aloha/static/test/vendor/jquery-1.5.1.js create mode 100644 modules/core/aloha/static/test/vendor/jquery-1.6.1.js create mode 100644 modules/core/aloha/static/test/vendor/jquery.simulate.js create mode 100644 modules/core/aloha/static/test/vendor/qunit.css create mode 100644 modules/core/aloha/static/test/vendor/qunit.js create mode 100644 modules/core/aloha/static/test/vendor/swarminject.js create mode 100644 modules/core/aloha/templates/aloha.script.html create mode 100644 modules/core/aloha/templates/aloha.style.html diff --git a/modules/core/aloha/.gitignore b/modules/core/aloha/.gitignore new file mode 100644 index 000000000..f613dac7f --- /dev/null +++ b/modules/core/aloha/.gitignore @@ -0,0 +1 @@ +.redcar/ diff --git a/modules/core/aloha/aloha.js b/modules/core/aloha/aloha.js new file mode 100644 index 000000000..78e447be5 --- /dev/null +++ b/modules/core/aloha/aloha.js @@ -0,0 +1,90 @@ +/** + * Enable rich forms (Aloha Editor) + */ +var rootpath = process.cwd() + '/', + path = require('path'), + calipso = require(path.join(rootpath, 'lib/calipso')); + +/** + * Turns form date elements into jQUery UI Datepickers + * REQUIRES jQuery & jQuery UI to be included in the theme ... + */ +exports = module.exports = { + init:init, + route:route, + disable:disable, + reload:reload, + depends:["content", "contentTypes"] +}; + +/** + * ROute + */ +function route(req, res, module, app, next) { + + module.router.route(req, res, next); + +}; + +/** + *Init + */ +function init(module, app, next) { + + calipso.lib.step( + function defineRoutes() { + // Add a route to every page, ideally just do it on form pages, but can't tell atm + module.router.addRoute(/.*/, allPages, { + end:false, + template:'aloha.script', + block:'scripts.aloha' + }, this.parallel()); + module.router.addRoute(/.*/, allPages, { + end:false, + template:'aloha.style', + block:'styles.aloha' + }, this.parallel()); + }, + function done() { + app.use(calipso.lib.express["static"](__dirname + '/static')); + next(); + }); +}; + +/** + * Every page block function + */ +function allPages(req, res, template, block, next) { + + calipso.theme.renderItem(req, res, template, block, {}, next); + +}; + +/** + * Show a blank page to enable the rich form preview + * This requires that you have a layout called preview, that basically has no header, footer, navigation + * etc. or you wont get desired results. + */ +function showPreview(req, res, template, block, next) { + + res.layout = "preview"; + next(); + +}; + + +/* + * Disable - same as reload + */ +function disable() { + reload(); +} + +/** + * Reload + */ +function reload() { + + // Reset the Form methods to their defaults + // TODO! +} \ No newline at end of file diff --git a/modules/core/aloha/package.json b/modules/core/aloha/package.json new file mode 100644 index 000000000..53d9e3962 --- /dev/null +++ b/modules/core/aloha/package.json @@ -0,0 +1,12 @@ +{ + "name":"aloha", + "label":"Aloha Rich Text Editor", + "description":"Enables the Aloha editor for text area controls.", + "version":"0.1.0", + "homepage":"http://github.com/nhemsley/calipso-aloha", + "repository":{ + "type":"git", + "url":"git://github.com/nhemsley/calipso-aloha.git" + }, + "author":"Nicholas Hemsley " +} diff --git a/modules/core/aloha/static/css/aloha-common-extra.css b/modules/core/aloha/static/css/aloha-common-extra.css new file mode 100644 index 000000000..1592648b8 --- /dev/null +++ b/modules/core/aloha/static/css/aloha-common-extra.css @@ -0,0 +1,23 @@ +/* This file should only contain import statements, only one each for + * the core and plugins, so that it is easy to make variations of this + * file that exclude some plugins. + */ +@import "aloha-core.css"; +@import "../plugins/common/abbr/css/abbr.css"; +@import "../plugins/common/ui/css/ui.css"; +@import "../plugins/common/link/css/link.css"; +@import "../plugins/common/characterpicker/css/characterpicker.css"; +@import "../plugins/common/highlighteditables/css/highlighteditables.css"; +@import "../plugins/common/horizontalruler/css/horizontalruler.css"; +@import "../plugins/common/block/css/block.css"; +@import "../plugins/common/align/css/align.css"; +@import "../plugins/common/image/css/image.css"; +@import "../plugins/common/table/css/table.css"; +@import "../plugins/extra/cite/css/cite.css"; +@import "../plugins/extra/formatlesspaste/css/formatless.css"; +@import "../plugins/extra/wai-lang/css/wai-lang.css"; +@import "../plugins/extra/numerated-headers/css/numerated-headers.css"; +@import "../plugins/extra/ribbon/css/ribbon.css"; +@import "../plugins/extra/headerids/css/headerids.css"; +@import "../plugins/extra/metaview/css/metaview.css"; + diff --git a/modules/core/aloha/static/css/aloha-core.css b/modules/core/aloha/static/css/aloha-core.css new file mode 100644 index 000000000..0712fdca3 --- /dev/null +++ b/modules/core/aloha/static/css/aloha-core.css @@ -0,0 +1,21 @@ +@import "aloha-reset.css"; +@import "aloha-sidebar.css"; +@import "../lib/vendor/repository-browser/css/repository-browser.css"; + +.aloha-editable { + min-height: 1.2em; + outline: none; +} + +.aloha-editable ::selection, +.aloha-editable ::-moz-selection { + background: #80B5F2; + color: white; +} + +.aloha-textarea { + overflow: hidden; + border: 1px solid #ccc; + padding: 6px; + overflow: auto; +} diff --git a/modules/core/aloha/static/css/aloha-reset.css b/modules/core/aloha/static/css/aloha-reset.css new file mode 100644 index 000000000..7dc1bea7d --- /dev/null +++ b/modules/core/aloha/static/css/aloha-reset.css @@ -0,0 +1,25 @@ +/** + * Aloha CSS reset. + * Original by Eric Meyer. Modified for use in Aloha. + * Every element used in the Aloha Editor UI should have a an appropriate reset here. + */ + +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +.aloha div, .aloha span, .aloha button, .aloha a, .aloha img, +.aloha ol, .aloha ul, .aloha li, .aloha label { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +/* HTML5 display-role reset for older browsers */ +.aloha ol, .aloha ul { + list-style: none; +} diff --git a/modules/core/aloha/static/css/aloha-sidebar.css b/modules/core/aloha/static/css/aloha-sidebar.css new file mode 100644 index 000000000..f94681276 --- /dev/null +++ b/modules/core/aloha/static/css/aloha-sidebar.css @@ -0,0 +1,218 @@ +.aloha-sidebar-bar { + z-index: 999999999; + position: fixed; + top: 0; + left: 0; + text-align: left; + font-family: Arial, sans-serif; + font-size: 12px; + border-right: 1px solid #888; + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); + box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); +} + +.aloha-sidebar-bar.aloha-sidebar-right { + left: auto; + right: 0; + border-right-width: 0; + border-left: 1px solid #888; +} + +.aloha-sidebar-inner { + position: relative; + background-color: #ccc; + background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0.0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%); + background-image: -moz-radial-gradient(rgba(0, 0, 0, 0.0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%); +} + +.aloha-sidebar-panels { + margin: 0; + padding: 15px 0; +} + +.aloha-sidebar-panels li { + overflow: hidden; + margin: 0; + padding: 0 15px; +} + +.aloha-sidebar-panel-top { + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; +} + +.aloha-sidebar-panel-content.aloha-sidebar-panel-bottom { + padding-bottom: 0; + -webkit-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 5px; + -moz-border-radius-bottomright: 5px; + border-bottom-width: 1px; +} + +.aloha-sidebar-panel-title { + position: relative; + overflow: hidden; + padding: 8px 0 0 8px; + border: 1px solid rgba(0, 0, 0, 0.3); + border-bottom-width: 0; + background-color: #303539; + background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0.00, #6c6f74), color-stop(0.05, #4c4f54), color-stop(0.10, #3f4448), color-stop(0.45, #383d41), color-stop(0.50, #303539), color-stop(0.95, #33363b)); + background-image: -moz-linear-gradient(center top, #6c6f74 0%, #4c4f54 5%, #3f4448 10%, #383d41 45%, #303539 50%, #33363b 95%); + color: #ccc; + cursor: pointer; + font-size: 13px; + font-weight: bold; + line-height: 1.5em; + text-shadow: 0 0 6px #23262b; +} + +.aloha-sidebar-panel-title:hover { + color: #fff; +} + +.aloha-sidebar-panel-title-arrow { + position: absolute; + top: 8px; + left: 8px; + width: 16px; + height: 16px; + background: url(../img/arrow.png) no-repeat center center; + opacity: 0.3; +} + +.aloha-sidebar-panel-title:hover .aloha-sidebar-panel-title-arrow { + opacity: 0.9; +} + +.aloha-sidebar-panel-title .aloha-sidebar-panel-title-arrow.aloha-sidebar-panel-title-arrow-down { + background-image: url(../img/arrow-down.png); +} + +.aloha-sidebar-panel-title-text { + margin-left: 24px; + white-space: nowrap; +} + +.aloha-sidebar-panel-content { + overflow: hidden; + height: 5px; + background: #303539; +} + +.aloha-sidebar-panel-content-inner { + margin: 5px 0 0; + padding: 0; + color: #888; + background: #fff; + background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0.0) 50%, rgba(0, 0, 0, 0.1) 90%, rgba(0, 0, 0, 0.2) 100%); + background-image: -moz-radial-gradient(rgba(0, 0, 0, 0.0) 50%, rgba(0, 0, 0, 0.1) 90%, rgba(0, 0, 0, 0.2) 100%); +} + +.aloha-sidebar-panel-content input { + margin: 5px; + padding: 5px; +} + +.aloha-sidebar-handle { + position: absolute; + top: 30px; + right: -30px; + width: 40px; + height: 30px; + overflow: hidden; + background-color: #303539; + background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0.00, #6c6f74), color-stop(0.05, #4c4f54), color-stop(0.10, #3f4448), color-stop(0.45, #383d41), color-stop(0.50, #303539), color-stop(0.95, #33363b)); + background-image: -moz-linear-gradient(center top, #6c6f74 0%, #4c4f54 5%, #3f4448 10%, #383d41 45%, #303539 50%, #33363b 95%); + cursor: pointer; + + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); + box-shadow: 0px 0px 10px rgba(0, 0, 0, .5); + + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; +} + +.aloha-sidebar-right .aloha-sidebar-handle { + left: -30px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -webkit-border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0px; + + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-bottomleft: 5px; + -webkit-border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; +} + +.aloha-sidebar-handle-icon { + display: block; + position: absolute; + top: 5px; + right: 5px; + background: url(../img/arrow.png) no-repeat center center; + width: 20px; + height: 20px; + opacity: 0.5; +} + +.aloha-sidebar-right .aloha-sidebar-handle-icon { + left: 5px; + right: auto; +} + +.aloha-sidebar-handle-icon.aloha-sidebar-handle-icon-left { + background-image: url(../img/arrow-left.png); +} + +.aloha-sidebar-panel-parent-path { + background-color: #303539; + background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0.00, #6c6f74), color-stop(0.05, #4c4f54), color-stop(0.10, #3f4448), color-stop(0.45, #383d41), color-stop(0.50, #303539), color-stop(0.95, #33363b)); + background-image: -moz-linear-gradient(center top, #6c6f74 0%, #4c4f54 5%, #3f4448 10%, #383d41 45%, #303539 50%, #33363b 95%); + color: #fff; + cursor: pointer; + font-size: 12px; + text-shadow: 0 0 6px #23262b; + white-space: nowrap; + line-height: 1em; +} + +.aloha-sidebar-panel-parent-path:hover { + opacity: 0.9; +} + +.aloha-sidebar-panel-parent-path span { + display: inline-block; + padding: 0 10px 0 5px; + background: url(../img/breadcrumb-divider.png) no-repeat right center; + opacity: 0.25; + line-height: 1.6em; +} + +.aloha-sidebar-panel-parent-path span:first-child { + font-weight: bold; + opacity: 0.8; +} + +.aloha-sidebar-panel-parent-path span:last-child { + background: none; +} + +.aloha-sidebar-panel-parent-content { + padding: 4px; + background-image: -webkit-gradient(linear, center top, center bottom, color-stop(0.0, rgba(0, 0, 0, 0.25)), color-stop(0.05, rgba(0, 0, 0, 0.0))); + background-image: -moz-linear-gradient(center top, rgba(0, 0, 0, 0.25) 0%, rgba(0, 0, 0, 0.0) 5%); +} diff --git a/modules/core/aloha/static/css/aloha.css b/modules/core/aloha/static/css/aloha.css new file mode 100644 index 000000000..f68ddd069 --- /dev/null +++ b/modules/core/aloha/static/css/aloha.css @@ -0,0 +1,143 @@ +.aloha ol, .aloha ul { + list-style: none +} + +.aloha-sidebar-bar { + z-index: 999999999; + position: fixed; + top: 0; + left: 0; + border-right: 1px solid #d9d9d9; + -webkit-box-shadow: 0 0 0.76923em rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 0 0.76923em rgba(0, 0, 0, 0.5); + box-shadow: 0 0 0.76923em rgba(0, 0, 0, 0.5) +} + +.aloha-sidebar-bar.aloha-sidebar-right { + left: auto; + right: 0; + border-right-width: 0; + border-left: 1px solid #888888 +} + +.aloha-sidebar-inner { + position: relative; + background-color: #cccccc; + background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(20%, rgba(0, 0, 0, 0)), color-stop(80%, rgba(0, 0, 0, 0.2)), color-stop(100%, rgba(0, 0, 0, 0.3))); + background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%); + background-image: -moz-radial-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%); + background-image: -o-radial-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%); + background-image: radial-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%) +} + +.aloha-sidebar-panels { + padding: 1em 0 +} + +.aloha-sidebar-panels li { + overflow: hidden; + padding: 0 1em +} + +.aloha-sidebar-panel-top, .aloha-sidebar-panel-content.aloha-sidebar-panel-bottom { + -webkit-border-radius: 0.3663em; + -moz-border-radius: 0.3663em; + -ms-border-radius: 0.3663em; + -o-border-radius: 0.3663em; + border-radius: 0.3663em +} + +.aloha-metaview p { + background-image: url(../plugins/extra/metaview/img/p.png) +} + +.aloha-metaview pre { + background-image: url(../plugins/extra/metaview/img/pre.png) +} + +.aloha-metaview h1 { + background-image: url(../plugins/extra/metaview/img/h1.png) +} + +.aloha-metaview h2 { + background-image: url(../plugins/extra/metaview/img/h2.png) +} + +.aloha-metaview h3 { + background-image: url(../plugins/extra/metaview/img/h3.png) +} + +.aloha-metaview h4 { + background-image: url(../plugins/extra/metaview/img/h4.png) +} + +.aloha-metaview h5 { + background-image: url(../plugins/extra/metaview/img/h5.png) +} + +.aloha-metaview h6 { + background-image: url(../plugins/extra/metaview/img/h6.png) +} + +.aloha-metaview blockquote { + background-image: url(../plugins/extra/metaview/img/blockquote.png) +} + +.aloha-metaview div { + background-image: url(../plugins/extra/metaview/img/div.png) +} + +.aloha-metaview dl { + background-image: url(../plugins/extra/metaview/img/dl.png) +} + +.aloha-metaview dt { + background-image: url(../plugins/extra/metaview/img/dt.png) +} + +.aloha-metaview dd { + background-image: url(../plugins/extra/metaview/img/dd.png) +} + +.aloha-metaview td { + background-image: url(../plugins/extra/metaview/img/td.png) +} + +.aloha-metaview th { + background-image: url(../plugins/extra/metaview/img/th.png) +} + +.aloha-metaview table { + background-image: url(../plugins/extra/metaview/img/table.png) +} + +.aloha-metaview caption { + background-image: url(../plugins/extra/metaview/img/caption.png) +} + +.aloha-metaview hr { + background-image: url(../plugins/extra/metaview/img/hr.png) +} + +.aloha-metaview abbr[title], .aloha-metaview dfn[title] { + border-bottom: 1px dotted; + cursor: help +} + +.aloha-metaview [lang] { + background-image: url(../plugins/extra/wai-lang/img/button.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center +} + +.aloha-metaview q { + background-image: url(../plugins/extra/metaview/img/icon_cite.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center +} diff --git a/modules/core/aloha/static/img/arrow-down.png b/modules/core/aloha/static/img/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..295f87eda876295a368d632e6d7a8b8b2c5e502d GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!L4Z$)tFEqYWo6~cl`HSvy9X3| z`}Qr6goCE0rs>nC@7lGiyuAF^uU}bNSuznd!a!-Rk|4j}#I`jzr9RqgaWfe42&@5$ zc6z!vhE&|rJ?|-WM1jXS(6~ZD;OD>Xx!rxMBK~Y=Oes9L);iJ8*zofYg+1B~Z_V^u zc;B2UcV6mpsQp>}DlzY63j6oIDDLc^{5$oX%`4VldmKzZF`nC@7lGiyuAF^uU}bNSuznd!a!-Rk|4j}#I`jzr9RqgaWfe42&@5$ zwt2cZhE&{g?T-{004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy}bV)=(R2Ufr!7)fwVE_Q&@BMdm>S>B+)?x%k`O&!m0R3fR)oB_CwDl=oOLV^?NC zv#AxNs*UYapxXn%BUL2Md%2G)0mk;7{oQtz@K33w+{^X2d1%RN>==kK%uUnPB^*_H?Ke%E@0TMvs kup{~v1^epicC|(R1C+OxpKm0+`Tzg`07*qoM6N<$g2?#RK>z>% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/base-multi.png b/modules/core/aloha/static/img/base-multi.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b0885a9dd49da4228424de601b69761d905cc7 GIT binary patch literal 2492 zcmai$c{~%28^`C2Ir4Q=h}=0ha-@ugvB;Jqauu`8SGkRdkYVnthH0)GS>)<)AB}RX z@7GdNCX30D`xy1zPruji_t)=_-#^dwdY-?Y&+Bh3|1Omat#Dq?#Baz6?&Q1#p3l@tN z7Z=B5GB-9hnwy*J>+4HON_u*Fs;jHFx3@oi`gCw`5F8wg$Kx>=jK9CX7YtSb0Pvr- zg<3day;e%ovZh~%S}ljtTcg)T*=%N*M0twO$d7k@T!}LBBo)Mhy<0>vFcF~qb9wQn zQB`CeQKxO9I`S3G;lZcx$c`f?+p30BHI1KHHh&*OFox|_(v^mPNvhkf_-eI_%TZWpe zrpoy^DUdSpbYR&B(4VTm_UAcIDtOsxvo>;Gapfg7v&zFR^45nX5$6KuII#f)ou73Byi8!Ow`*qgRRMwz z22s%W8)-XC1ra?<69N$>&An>^Cg%ZP%Du21ZPowuJL+;`;r3h zMPUmdYEvghMc7QTB2mpioL=S^Nquw zSXD^^gWcC`JTzm0`GQN?PcA;6(d6KHv|HTE&DG?`BW`)hx=&{Jb^86mflSgj;so@W zaE7;l31kEz9O?__K9stmZxx3|r4#j`f zM%upFoJL!OuZX7#kXrCSy{FyHUj87o<;xyb0Xku1wIO#n*OL1kVtG>+O z&~?bHn1tu>LVmAeoDVpF3$2^qibt2WKb;No|k~z?|l@3&Wg*YSr>D{u#HMb5Dg6&xAS3 z^6~1bdwjk*nBZK$5&BXKt6X?HZuc6-vknOIROA61Ny5GAz?LQpRf4O$BR0&os&SQ_ z0AEIw%_ZBVRy0T}ZH|kv?hi|LS1f9%x=FjKq<_pYBP5cd@2cJgea{0S!o{UdVH!u1 z6wcg7DsNs_N`EV2r4va008DsXlM$=`2qUektBEc&vqEokD>q*KDEwxK-y+|-eKOY` zI_`HrI6JWO)V{O`NT!558H=(nos9%*n3`y5d|bpXHeCGMT4kdlkqD^ipIbjtP0vNX z9{uv<%^c3hjx))stSQo6t+u@YmSU1)q#YZ2(;ilCujK>8j0VXWAj>=^a_w`N09>9!%dmM8+{0kEg5jAQy$Z&*L!6l80;R zDupw4a>p6i7qjQHU*ni}7(W-c^$gG{_yf#XtY;Q(QgED|K_;+_%Ss;Ec=E0^t;Py4 zuqUYKQHF8P1JeU`yb|Ol|xKIZWILMc@-L+h-*;wq}0Z*{(t*A3}=0-p-1NUB!o?;Os2D0Z|ZkQaMrH_yHrLk@Wl1jiiBW&v$nPNO3}3oaZ&R^iSzrPM%6a-wqAIA*j~ ztQh?H1!Xj1VGnhOSZ=tbLWqNQzzScHk&WKH^If#9pncOZ-}An;_==g6DY`3gp7>VP z6z80(4{kw(W%Io|nKHFsAG?D=m0ja%GCM6!b<;{a{qZ$rw+3E*rPtY!*Y@38(+t0W zLHnDx?6xr8Cy@gXL9)Lt*ciOK-_2%I^P-~tCR+I{qqQfM zDEK5x;VDh6dt*Oc@o0{#|GY)S%2^M{zzN^O2_Zxd5?J{Piuc^D8{h2I_45oyj3h4W zl>M>3P)RhZLFUDzuOC%XKWG!enE}L(t#+ z!Zj9cZb~Kf4^o)vP&72S*~YwaYhIU2uj`HAyP8q#oAWpXD#JsQ(bv0HWok1hn@C$& z$#+<MVV4jHF-zx7{J!b0s7R^C-Gmmc**?$ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/base.png b/modules/core/aloha/static/img/base.png new file mode 100644 index 0000000000000000000000000000000000000000..b37b2b374e9bbe15232820443313f6e8a8034604 GIT binary patch literal 3762 zcmV;j4o&fiP)e%oVhhwwdA#dP4esfhC7-2*x9`|vn1%*Ip=$3 z?#%q=ZZ3E3=l*^(yTn9OG+nJ^n`#F${hTg0Xq4{;hoTj$Hnz+0feY-4VxlRUI*`gL zK8NJ#OQQErG+p~?;J|_LsB8H%F5h+rm=^9h4H<>s!rYA~HJY{I1l8nK$6?}%8jZ9d z-~h0_s2u?MHq_T`{2|YIgwx?;XF+|;%24r4C5vcX z>#GAObexJkGy}C4onJkkYu;<^*I?cB6wP>M;iXPk7Y<_3($a0r$T5!o4-9Cy{pQ=D z`)%E!Z?C=$qeqUJ4FKJO*<@_3bl#E|IJjzi`Gv=KeD~$Ac0<*D`&z1cSGH93uL@N4 z-5;omb3@f*+iSmEy~E?Xbwg{_jDo5{Wd#sRfwJU5yWT1OW#aZxh*TYy=@dg9n6t`J12E z140{wC!QbeL_!bJPNe<}mkMTH0n5fY(3UX(4lSGj%>}fKb+oPS-*a>T6a&n=a*B4m zB{RU2^@?V^f)^hFOYky6OlUu6&fK`3ci#&)-f$D#a`SCOx55p-xDg1@Ab-P#Uj_x( zCJ)5Ce;Hyjk3h_-2Ke#jHb|;yf@dq5Vd#E8JnivAY*8D;ZCk44jO@r2gNhmDSI&2FUe$ib63?B-|!!|s>Rd{{%T>}-SPyj0_ExEo=?>^qR?!SgR z;(AbFx#wLyVanvm-GkYz-u^L6E%ia_9)K4-0eE5WWtg--0Fw>`U^1#A08=YkVA}pR zNc8|r-CYlh3QE-gOD6)%CGT;|_RKrlux%f_ms{K}T&oha;juITBQ*b{04DhoCjyum zdl7)JUIZxC7OI^=Ob;+D8|(%5Q2nxH%YfvKbLY+lJSOrJ-7n*T^-uxKW$~u=68W&) zNdQY@A;=&h%6=wn-HPHFc$DKbJeIIusPYCKq6x$&iBVsFb6$Ono{b&^EYzp0ducr= z6!y`0U=$u`!`o2I-joNHZ#4uc1{nVg`m)#_KkEUJwqZgIFs}kId%p6( z4goMWalBf98SS}^a!v=xEGDx+S-Jy22CMUKxCJrv1 zA3b^$^Jc{pi!%=}z6rvoK*3=V1_^AO&HxzNno(E)a$v`EZ;2=C_S_R=>c|`5=QU?F z$JyEM18!9}+&KAe9e~6kL_9Wz5RLY%KT~`{8kPJ4w7mVc`DAVC&EC+um;h(xQz$Ic zy45o$VSlv@_WEm3nKMN=9t$Cwf!Ei52nw$cwuTOYz4+owi+}gf!|+=o%pV;15F}1W z@&Le3L;yQ=>QpeXt5aYWYtWSkl`2AH9&jKc<9;fdgpcZc!o_J zV$aJuyfA%w^ys}Ko=t$q{`fdN@%WQ4WbhDJy2SA)wuJ*&U0oeCHa1d#F>sZXl)xvS zd;*6K9fHl9H^a%3Ct=sFU2@CaA$+in!H0(kjQ|XFu7ig@ z)dEm{{s}!W^8l0oDhVdld^Ka=DQjR1US`(75LCm44LgE42$IL+0o>R@be&0n8S5>A zz|F?#%r!8<+o2Ebt$0!4;VW;Cp$MEbOh>->ALcaP?)7?c(lB9|gOzE&H{M#Pe-Il( zi1dLU7GUBKBDWWY&#*79ld08@D})CmZx5OGK+7w=5G-^Xy@PL~$2!`EeL{s_)Ym{g z9(s1{8lWeq8cz=}4lJIm!i$f$Xz}FH38P@p6Hme5L4#q$@DZ>eYeA~0zuWDmA;dFh z&d>)d3n4PEYv<0LaNxiJICkt9Y}&L5PM=977euBbqVn;kL0O;m)u1n6$oL~IBEft17GZcmo9Zog$Ps1QJWfHudnN{p` zI+OL^2ivk`3ti(napDA=KYt#*FbXjiLOg!_IN&FoBn4RMltR_VRyg!2qx>4I%P-)r`Faz$Dwn z0Bc;kcI~AjM~*b&{TVDNYhjm&er|RRELIRg>|r5{=3sRe!;ZEf+u-dc0aneSq4B^H zOztGK>;DG*Hh8P{qW(oY_o+h{>@`4WF<7x*-aufPg;&wGqDM2{npZ*A zzF_>=2{0;QH2it=b3|ilK865u)X34KEfM}U?IoD^R%S)f)}r>1Vs36OtY5#Lg6hJB z3n;c8#x`{z)KGYg-r7}K1C#$Am?QuNYhYX)Ui{@{k>eluGD!96>+^741(UuFua~J1 zqF{4JL|@`m_o`L9kufCR9`SQyomrU#ptx+bm%j#>5LCEDo{3b26HT*UncbW`(FSA3j)%nY ziI6lQ36c{3LX|jyC=r!J+LB=0bK?N}<F<9z%o(u%eTxl$DhMu8X0Ug~Bq{ zm6w;(_C0&{z=t1xC|CoN{3VX>af-L)K&~eM%XhZ6E2E&TT{BnKQoX$NKPVQalt>cy zun=HY?Ykae`cNW93UH$lO9(WKjF7g=MAyfB9}*AQQN_yGN8|$;x53LN`4EN>1i00l zuNjE}p@WCWUH}hy4@mx}sN?}CcMaqdg36Yh0x7oVA(`Z)%yZO4B34KGV0}{J#OM#w zhWRNe!LM)#Q~!~R8MyR9a7h5{>fghvd)2aiSGEgwBG%KKtAVHy%Q4YpJqfqL%P08| zhE(eMw@2}h0Xz6s{U3NDo>jVSVoLg7r%rqKJ;&0v?1hV9!Gd=oYkn5dJG6{-OP4N# zH{VEiC6m4cdg(FIB=I|l#)Lq!sOU>XH1W+F78Jd4x;DwbJ(@@aUeSN&Xo}P?(MSIq cl^K!d-DP)R)lewT5crO)CY3;(l}=ZGQZkvFx^qCBru<>LkCK=hvr{`spv2i2chIS2B8a^&NHy1su4 z-9cOum&7G;DdiAxNn8?_HNZvt*(koh#qe=ij)jj)|7UR}Fgb`zeb5n?#3gY_To$jP z<5B^1#3dkgU@Jsis`*|5M(TeS3l8Ek$gObVlDI5l@#3Z-4k>#UB&mi-el$HW1HAyz0C~ zkb_Fxs@FBKJcBvl_rdSOe+^;|s)5O&04w5B`6QkOAR@?t0xk(F=76{)F12@3n1jH9 z$*piLT!x+l*3qy$gRoMVm+gll!DaEDxD2%oRrp<0Do&Aec!-~^h9apUVh*Zd5dOTy z`_OZsa5~x}_soGtUq>J0`Cu!a7EH{6=OG^s;*zjp4hXCI+Ro_bKpz#%0dZM9N9cWj zW6S{$`4E@-^AeZRth^NO2`lD66BW#XJ}wEX@Vg}he7OjL$-27c%p32GFV!$;{zJQzh{fL-Q#=ic%?6avquYQcc)~~@NF3Yj-aj6ej{~t!gxGZACB@ej~m&9fLzZ2q; zxYVz~Brf%D1JcK3Ii`)vm{0rZBagUL=sZANDm2WFWoLo7Brc<>!Q@t3n2VDJ?zp|h z|IP4gn9A|`=FrE!PY&3Ms}y7Djxw+#>axN{>)dMdh$$hDxFjx#%OVypE{j-ma9PA+ z!zFP^Tn4&DPFxa~#AP)Ch)d#qhiexAboM;vX!LfY!YTenUn9o_%PZCb(8}g1vhfU<&Ed7q=El3bSbt~fYw4fA8+OmY=C`40<~4G}rB^J=FHHBxl5QWN zeQeGdW4h_n39@HXxLFQ+>flm=`^RkZ{54$>PX#O1-G_qM;XSAO}T)jfV}@$xl?WH83u z93HmJV2~bmak$k3dJ|mwXb)F!_HW7Xl{*pKc0yd%H3xCo$^nx<9A9=vr=63nk?BlK zFQ3klk5iZ|hrmH#02l}WC-_fXLgabK0RrTIzjhKNy%twPqa}|p_R*+5JIJo~KMt47zjg9pWBuNTjLI5}*J3V>yVE0!4 z^^Y;U^cG;dKLAL5w+FTV;lipBnwNj?H?hdyw>H+b>ZZ~q#HuK5seD>350|!%^{q_v@ z1kdG|Lm+?{xDuhHm;ohRR`SciK}6sTkiBHFba54UwY%S1U)=|Az*@G&Xq+C;b%)#m z^Z9)&Dlq?I?>~SwOR~c}@H?5;{r>q^Rj+(?Racpmw#~5HlJw(u1VHjqU06;zsbwekcLwPl_`8s#Wx;Y z4iCQXWto2Pxd^(qe?#6n48HT>vR4HMC{Vv46~6q;>+d=D&qp3_ovrfVFSI!Nv*t7= zY|cI1oqFS|t=O8Vf6q@;v+;*z<@JBwd;Ie6?F*^oJpLcHo1;%2{1pI5t1zHF=uk`Q zKq!!O{#3)|yKp(odlxRnt83`h-qFDei$U0Q-1TN)mZ*OJo9#jKBh(d@8 zxO#;PU&^Yr(#&H%2=N*)u&d7=`c&99qhnVt{mbT`f9@ZTnCTC!@xXu3d8slpb#~!* zdq4g1zpmgF1VQ40yFOXW9r}4a_r3p{f28?by-shYtRnX#C*Ix$jmo7Yn-o^Wu#U=U;%7^beGXrS~UNl%*yLA z{boQ^D%h8HX^c1?yEmfpSkctig4*Ee1LpY8tql(Sr9;25`t;?GJp1>OgT7zKL@ae5SZ& z_V52Ph$Xr%wxpZVPD-w^PY7Em+ z+)sjN0dPNB+Ml-{E`QXc{Qc;k!E9ds8GYrq9vGbdWxm~Wyb&0_nkiT65g-%_g#lw_ zQ@8{WF{oFJR{{iUga~+Yt;YjNnf?1d%Eun~*{3=5;A_CuA8EK;SiJYyLHDt1rPAp4 z(he8u6|6)QcpO5{2v`fPCDPwtq4OJuF&R{zXc64qK@SVIZP1s>q|Zmh{W6EDS2-5N zociFk+0XyfgKu2;-N8ps|L!zFr9c@%f7I>N9I=M&tNV3s#0z7!<{&arFz2O-+*o!G#}j z7fh(?epL-NTx?7(uy8AVyaVAf^l3hsKEHTEUTPUx8z5p)1O(un2baV46aYUFVNcYu z;GVH-V(rpf0Qm31rO(P2`HorAEdlxR>H5C3)1I(*u ze)_dne(k~Eec_jRaiq)}woEU9iYTEQ&Kv;%*#s_;&GG=CFOZ9&+G_LAz6Y6}`E2o% z^^+GKC{O$$Q~L`H*^dNVt~N(kv%!bHIOv7v>(v9Ni;Sz~G8JQpoJUb)*Z?N>!DveLr{{=&Vge~8s0$Dah91Q^PxtTjX}!81Ki1}+zq!cqQ!|+V%WFJ%_HLqb znMgwVqJWaM3=jRKw5UC?{N-oNKha2Y!5syMD~R5bmpAf$Fs^!$i^I%+;@@ z_gwxXdt~+1F^+wDjeCAR{3at~Z@gvesEl6jb{~6cdEvkuFyHI4{Evu4DC{nEk93y1qbp~YFqxS&)_|<9s)Z-Zv&G86DpSX&2uH%RQ4)25 z;%$M;Tkj)IFRwk|pIfQQ=@tfqiUD|Q;8OO2LEH7ED4_S$vGHmp@%vR^{wY8;tpAx<6n@K3kNtvb*5)neb1%HGgGJBQw|J9IRt6tkZ4-&}={93ua3&*Q#&kb9FJkJ*GHL7CJ<^je;W z|7w@9W1g@6pGz2o1D{#q{+}E` zpwT$fh@xlqI?mNz@9}RpSB`(b-8DS{r%GrHmd!cB1DSJ_tYsYGv1+aV{)wp<0&A`U z`cAfr-llB-%7v9<%?oSw=GiraGx);cG6$;2&C)gzOlbJwpBTdNkddP!zILQ>zB*c2 z0NU?(gS*t7C{C{)7(6{M;fg~LbUW}90oa>C54Ql9yBULQ^=x|lzL@CYsa3nLyo5;W zMYH1`;!TnD=QOM zTiuWS(~{o(t(X2st}gr@4IhFSLvXztgf8;qi*|?zgr48lf)!JNa);-^kB*X>2F-4{ojvM{@5bb|GWXqeOiCV zlfFEKDJkj&3P=2&OEmr?L-7Nl`Tw4x^tmpz|4Bms*ZZ{p`8ZkC6YGF`#PeQ4W@5{M zpX95jBk_rO_xRsz{7P7Aq<0W5neX*J`Hi)e17BQSAq*^`2(qynvc+!(ScH$4%6xEq z;?=Qo`MKSW^J1s_=ogn3PMs}s#0Yi>0icR{-TXoU0H@%+{$Nd(jocw65>IToxpBac>*9F1q6e)0tPU$Zp}~-=K;ltMThO}87?>0S14P|d!`5u zRxe@A;*X?}+urlc7UjCvv9$8Ec45$;?5kim5llN3rUT_jxpo+|iwPjUxY~ z0p|JHpZ%?%xaXfoYF?WC3S%$+T_R(_gaEe@E;j2bG3iZF>Sp6?zP+|1{kdpo&q5c0YBPD|qAs0`Q!Y3wX z`Sbs&NiY4ABf;v`$R7T=*_9KY4d!0>yY9ZFXQqfs0>*;~dCyWi(d4~xELRw_{yDtONIE-+S&*IXnAqw={zGcf`L83C4e9lD9$@RQmXKgiRm{c zE9K_^zuma5^m>o~=G@#}ulG9y{XSL|MGzDMOHi&5g%MsoqHGEi0(caW*+nwtXga!!==nilxY`Ldh?hz~0j#Zg>Xlixjz{sOpo0SKJEERc ztuay7>_aOjKmfC&N_}U<6GRjr3OqJSbYk?91a|39DO@JryTH3O69k>9%`Qg3t7K*d5}(eWK;ex6s7})fccJr%Xi`OPpY9+z@LP)xbn!^LHmJ!=CUJy zFtrb9&oTY-uObMTXmhxf;m?*JxiegDUO%dlv|c1R^GEQ=FOpK?AJjtogS7j|FJ8IW zcpz!K$i&F$cciNA+U&=EGvwHBRO3o3iKuu5=k~PY4ImhTuuFI#r079@wT~^y`ZYB` z8Padm$sWB(<;P-L|8O7qOBvyeVxu;mQ3B%$5FCatPEE18bRmAEH(D_{Y+6CaMWa8uuGtZ7u|8C(||H2^ZJJ6ZLqO5pv;;Ihpf zj4BC~_p7U-I+~easteI7pj-7DiXjjo)9q}vgg-^07v=W$v2&e2ZPCQu@qp>B&OY|- zwD;NnZlucVqZP^q+-tvq$rsVMw1sib9fQkZX%xbR-zS^6kMhi8n85SRxW-DiIQG|9 zR*yYt+;1~Be&(IzLSXUgmCyW&&rf`<-oRNy+4()wg8-;UJ*bb-PKNjb6p)P)VzHq8 zkij30Q~Pr(*n=&K(;?rBbm<0$vIzji0HF=|dZ*3A($a?>8=v@=5qcZI*14nKTUtE%!j*IQZW|Cx5CVYr zNMMj4M2)c0X;Ld36JryspoBp{h-{dc6%d4PHdh%H^Vs9#$5?#MUf3eaF4nCq8BC4{7`ruZh(KWapnYH^%Cp%h z=U^kWQ_EJ=i3yxQ$}mweDuF1OZmw?;^^|M^m%RNQ}9>TR(|ql)qH{R(KBy5TskjrEH8cb9~*!CrI7|@gz%Q&QowsiDnv);NxxMk zf2~FGk&tMnLjSZPG04qAjFOT)U&DQHjrao@{Vyk!eh#8>L%O2Fqh5(6IP6HiR4~|A zvc-j z8qCdbDUfsG?3z{q7_s@>~Xe-JlMEfo3ai`_OY12GnhGEm3U zt+lb^)#{P4Bzg6wvDjx?t&`uHzlv)&F+qq|1?MPNDwrfek?HzF`4p177NPN_VBTdne1K@4W-zlHOA9u4`YrBI#;&C*X2Ov5_V3 z0z*YgiAs2s6bIQm=mMeX4gsP7 zynS$~6<5s97|sxw-iAw51u%#hP*4<5L;!`p7Zy@a%Xe_@4HHOvG6*IavjL+~G#}cy z3jj!9Laj+bPYbx|%(z!5TcK|00-j-_TMWima#u}#fvQ8q5}Sb0Fc?&9)Dw~J+ZEO8 z4#TAYybG6a&d6tkcVOzyEj;$$75&frn@UU&MTE{FQHAbnzd`x=zXNd%baR2etOw6q zf=gs)qag7ag{|Qp|6dbN--oyq0WxFoY05A3a{gLU`+|&*oO#<+Hp{CIy)fuL`FE>H zX+E%&0928^!{sn93gOCSn*XO5RB8M#2M~oc|EmBuH-@PcY_OF|4e^N;YJauE(%*lD zv7bFi@7t$HpN=qP4+=pgr}ViNt^Z-1_(M(N`_@?a<^4P%eLj^aMh=mQM^JDEF9ipF zVrBL2pQ=B1?pHb=IrE$2_VCZFaQC07|EdJF{%uy-?E9_Dmp}Fg?KQhzH7+3Fyk}g6 zpP1Uea(|_IA&$e>w`kA!!tHy$wRX?fR+gtOyPPlx02t&2pB))3eth47-yT8@tfuLq ze}4Jm`=7gT8p$#gh=YK;$M^HmW5*V%NeL^4H&&J>o@yOOs7=G(y1J1HKq_x`}8Z(n+3@p}u{#BOWzE+RL| zRTV81tRMo$7%*GFD1Z#}Tv|{$Qf20SGxL?P>Pv66A%bi6kN3ZR?O<@GgCRg=FHv*= zJX#C!$0|gpMw)hC?V>>Ut@t=8M8&1%DR;V+$mI?Oi|*FoXkDH{VleNU?%D&D)9=XR z8@JxBsJe>FFU=Tp4kHebb-*W#;(VxH>wRm>qBy+kVWblWwlLkI#f1!-Ifw`bKm{jt ztUbiI4LF>X7NQ|!npWQ5e}0ff#Z4-4MVScj2jlXhHQ@jNpk4IFuccYF;|&HuL;yuq zNko{6gpnXwuqMdfDOUVH`f#~1@0|vh?`Xi(+4+b6pKkCIzg9~q+W=9;h%j&|_RIfA z!rt?!N#0Jl975)xOZ%Q*p!~ou5fnp>ffpew3jTa2)xTD%eSxu&vu`Wgpq4Q3i=}vUH7~asiP)#vt_& z7JBsOmi_UMgvH8B!OBbjq`bd0>Ui+44_-}ioZ@QIsYu`U#T=?W`c}hu!#R8=2 z*@xjT>^pGvNTcy}yURY7d%Z`#Fnjgx7xIiKw0IBujpfhnn|bwMrTiiQz*iUMf8yU< zy;SMUUPiqWHqF4<@d4+6Vu~s~1mPO8ba4e4tcY{-xumzE*gD z@a5*(k>6iln(hchvVKT??|GJ^teY+$#=5G|Ck`$n_FA3pjV(0+^jd*b@p@xixe z58CHfufwJ65iY?UFA+XGu@cVI7l75bLGls!v>3}?UOdd%9=2Bi2HiDW0swe?H6-}p zRMU=^&;JRLim@|5Xt^k^9W=bQ0WO`60h4_(``g9@88BddO4Jwe;^1QS;$W@hrHv8R zA*1(W_~0PZf#G0WUI=a218}P4Oa1oLQlSJQ=unfv(bx_eVP$?Ox$OTCF56zPA{(4E zIG_p~EtQr68w~cocJF++y!E_y;S#{`4ofQwOOO9Q+~6mErIt{!7Ewh2!Quz2;I0B@ z&u}ToZHG$$jf75#ox!&C~2H>T+Py(#?FklJ5drt#Mov7Do_6HPUqOi zgVT#o+4!|zE$=V-0Yy=8?mL5nOHa>#TyLH`*i@c;?9gI3Q-AGkf=htH#KA)H*uFD=42NAm8R5kvdxA>)$9 zhPX9W9CTbh1q1+Aq*t-zp;44!ibRP`QUCyW_4T#vhmuQzAzW^Nha5;j-(heme*)oB ze$?O+kl>wm=JE@J&X51fWP`f3$PkJk2uW71K-xh}03v&V%Wc76F=A{c~6(||Ku`*rz`ZI8l&h`FroipeU=;K zE2C(xFo+3CDYn|eXEDB2M+_7T<1jytNfZP`p_IYdQl0O8_A39`dq-%`R%>T}C%I?- zg^*I+64yONx5WG()@lpoer@`t?%@+3TYMurQaO#3m)~TR1Y5+(V@+cyD=>UE$cvm0 zRBAlb7A9KFVS+L{UT(MJXeEzq-FFgU;aa z(#wm7mtS8_bfAdcWWR@oyqVL!+&naLWaNS%`5pe)MA@0Oeg3;k2%u(jxZJou6%`MM zDuhprXVFaKWuSj2@6qntlV)(B)|5tkD0_ZkinBcopvbmxIs6p_i@7|&S6dDH(8My3 zzLTV4dmW3a#_F$Bj2Ye{uY&4fZ^M(FJZDSh`9y0l-mrK!;8c?@}j+IyVg5= zsmwpA*LZEM`+0iZkvsjc&Rx6qnSW={b2YS7)dO!5E`tzh&eQwHZQB223hCA;KYEqQ zFJ5N!f8D13KUt*ou?vJpx@4~=wEn>Xn*VeLGg?spOIJyrTt!M5ID-U=<`C^)qwyE6 z()eFz)c&{Q)c@BJBmem_rT1P2qaX?bWB^L_BUd@_OIP{9NWwq(`ysFYy_ojJgsDd| zW`1IJ`O&|TEuZ+ArRBz>3nW#`m47?I%fD()wO?EOalq`f(RO^vs21j?3p4LI949VIp2>SyQh%ZBDZ zK2GPiCke(gf~jRti|<;J$JS{4Puql_oxvO%gGPisP{lsFpYku(sQ=7WM1V}Nqfq|I zOK8c``OPWZKbzqxQaT@AS4 zc(BXTi&ZZD-e^!Ptls_RH`>Mv0)$fGdk3nu^MJky$nqyg#s+sGbe9)7x3s`BE6WG) zTJ5MtCJ1rfAxXmI$S7mwas&V{-)Zmv-Py~Z{K~a!j||N_kRu~wMpW7F*NEdgsTwSNkO`{Ki@Z5D5o9u#f5c_C0Tm%-%vDy|JU? z&+LD4e;SWPsPiD})wW^;bdT?JR}V(MSv9!fH!7GweQh0NVwxCoR-Iub&#Q$m#s%qD z1Je)0q8LiXQn$ehz`*6xD}{!sw;1fO9X1asniwz!c@uCc@51HnYVX!Q_jl6!LI4PF zXL3Hic8G2-R6V;lS{KcJ~aIlV)EPSlAzlg{X@x) z{QhKvGKxX>y5rY5O70sWkA%_-3*^6JIaFcueh!6Lf_>V7=AB^~VSmVKYQ@#AF%@Zrg)19@X z)oL+Vm?sSazBTCYyU=cqEu|UKXz=j91H9H;A$P^P_O7%#dMQn56-(JCXJ!Dz0E0Y7 z#PI0kv<2!{I^Bm~SX+tT=(K9>(6Y3$fX^~~y9p{(Mn*7|8pc=v*)2@m$(L|3$R`3D z!~-25H>p&eI>zrCFQ)F>_o|4@zX^!yjT{>NLE6h6oqK9FK>=C+-tgYDc41Yf?wJZj zq__ifkJ8gC_xsn@jM+(YDeK`<9~z@o_G zz|w%?V)Jl#YAgf#Z&Snuet@iDNs}Ra=pf5&HUky z_xfk3RIc7Oxa_B+FD@aR52EOma^|a(_zLxJLK;_hOQi z@+Vv9zTZ=DnaP7ov|E!F=I9{XIIzf5t)mw!g6|uUB(bu8T zQM&_328)Bi-C0pEQ7W${*31G3=nKuYPyhC{i{?U>UMJQNiDSqz)>c1%IYZF_laPBjrom&HGM3f>$@H?rL3F zEvs8W?O>g2EJQ#-U3s6^F_7twwG(Zi15o5E&YA*20B}A=%;*}!7Vxe;DO}hTF4u!8 zOvP6rEwM(0w)YrY!?_AZ+bDo4NE1UH72#UHjku-#li?bP_URZH3k46stP`3*U;z*6 zESL(aH82&>01#qXvQNyj8f|3vj;kT~xgbm+wfx{JnnXW4|(9qhbtrzYXFm z*Z>i;E4VZw>DhVL8U=1E{3YK9qz_FTeOo7}1F^ef&%L=}N z<2ymfvVe^YC9fzR)bFedP_RM3KQ5;nTwMI{$x7u{Zr8)#Zm*sELMfPjP9(o_XG#7q;^x(8HC(^3~V_#l<)_-RHnNtMyfJ6>( zLWD5R!DMt)Xhj2_S&caVyERrrhpCScTE$d6_T&Wk5PY$<=~eEKnFi5`4%wLkQXzfn zD1J6UHAKP&r75IzY z2K7>mk@PKqOQWhKUtF0Ixs(W93=R_jDxiR@7i(y`5lH!0eI)b<-2hC zjs(nRlLvmIHq!8wI!RHW;xTye1*onUS$c;_MiCn$C}1}+=o$K;Y>60LT?o0Y7YCZ^GKl0Rj>R08B#7jQo zg)C-PW9p+_%*Z6_3PiRIIt^0B?&}aFef)A6G)5|lh`UkG67Z}|IO$d~@f2u*4Grx@ zqP2ykc>KipTJvzu<>zwx*R1gPt#6q3HX5CC`G8l`ltcsp6qxUIb-Rt&$ueGVwOK1A ztYsbXmoLBX(=!KW|7daU;Od|cK?vS+s8r_9j_>c64+i~TTU{P&d&hL)u|V8uk_voj zah3$(bf-D;#K_o0Xw9-l(LwF?SnBoY$1(fj5-+bVMMi|z=C6??Bl(A?CoX<+VwzeQ z&5Dr~K+ead4^JMsYqY<%O24&2UKEHiyq@;Wi>u2sADo=J3UuE(Ro2FG@7yp1sSyBt z=BOR2GJ0a>h&79c;F6B>BG!Y5xHG5Y>(q2Ak&bBdFhG{F{1i|1hb#VtO2kd0|{2hb| z0gUS4kawp`!WGO=B?UT^x;iI_fHCXGFQh<*`qh&22TMk-OFR)&K_nW;@GO&cZml8G zG$4C$e7Yi5dZn?jag{J(e-t*nZ;m?p6bg=<)$B5vru4j!Da>aOiC_ihGhv`$fr=FZ z^TS^%76Kp;5b1+n0uF$kNWtcBgE0+&ycH1lqY(f8Ee2TLYBxnjq1wCp?7fL^-LrE3 z83yw&(Fm5PL=HP}{Jxtx@OrI6P=v_X-DFdDk(EX$kKK)sVHMOn0B|{B;|MOUg6nKJ zCnbOY17i?x_*}copNnHojw!?;nOE=%$ks1#WJ8v!0z#$$0!G+35%3ExYjHT$UQ&rq735N@_!l zfg*=AbKc{iu#I)s@x#m08ew&D9tlHoBfQ*gRUaD}ZIr^W`*xm_5|NGPA%Ub`a!IXxCq4+K zJXy+C!<85X%&_E6ysSOM{^jNr-4w(C+ruSzim{03y_1>5!R>;}$hksfIoqeHtEP)> z{8|bKs1kOds2bELrWO)U)sQ&Im`tu1V?0p2nYA}ja5cJTjC|lG^=co%0tzDAzn(Ks zKG!MP$#Mng-6{7&&UFvrPnWEjT~|Yi@frgMa%)Qn!7`W(laHzT*cB^c%~~MzLBJS~ z=w)=+G)jOgqHbs@00FF#W*N=41Io>fyRF%0r99_#T8lI+WjIDwBBlCns?#yooU?k*2W_D z#RIL=-*`CazIr&l@*M&{PXnljilC6gN+;*{-76Fs#2$R>yM*UGCY&KX_$YqzNy7aP z6PpN8hp3}fsS}wpQPBn?8)n)y!bBhbhKC=k#83{&jX|9P>;W#f+suOViZh1s(Gov3 zX!H2!J^XqR@Wp-)i4$T~#DwHNrzm>F^RJSvy@=#3!qscYpv@p_@w-wn_mmHOt~ND= ztB=ziu&Sevz1TQ(cMG_0&s{L;$ksT1S%(G#9?Ne7cxk+2w6c7j*Mh~RUMxLMhCbB!DnUc{w5~#xRnvqC=!66U?CFWX|pItRhqUuwr<)-{Dslu9$M+MlUVSW4%HUFj!gS4euCKON>V`zc6)RsnV#d-VAcH zopzEMu{go0CvJ=qwp$b^#1Yr}J^px3{^6!b_O=>blZPg8?YT)> zIf&VTs{{dLc3_J`{qbO=)CctT!lhdEgM;`tN>=7TZ!kBW3E*JI1k+6s(*-a?;p?mj z1krv}vkCQAYTjQ9tVt2MS+``tlw@cC1ZaxLZsBtH>)jeQH~;{sZjb=0P$+m6G6&9& z0HbISB1AX}`aUGIQJUD%0z;&(U7(9Kkrv2M3ujrxIa9NCpNQDjyKuQ7?_IdO6ISHv zibMI*Yai~v@rA>|%F~$sWg1BZM>v!+ieR1R-xiM7%N43dF++nLj4l$L`z`#nr${f{ zPkQgqlT6$TKBbb3;u`lOi*q3BjeVNN@ZO%|KTZoyO~n*8#(Tiu43F}r;POUN$Wd~& z>>E4S{h!9wXAdpRzW3Lr;&3evh*vLSFMJ2T_B8aDspL&C0cryfOFcHc;@5b7b&gLu zLq6-Vlt#_!vmaSIS0mW}o~!ZxN19=6`g=fci$R-bd(FqbUn`M_LDX+c15SiYm7nXS ze14#d_5CxyMS1$6q}9>DA9&`HGM=6GVidloK`z z!XU<#7upA(@YQO)B5l{9eYQ)xIKm7Q-1DvT{NbTBo|g(W-QtxQ7`V8EyAUH`NMKV+ zA8#Vn6u*{{J=ef>D$va^gNU9~nRly9)ndjU?y&F4;vz&VdL{l)I#;9daLUZ_QTryX z>Euwk^5VVa@}aq28;m6sVLs0|m!|vf^?t+{v%EP?fs3hPtUF_RSOZK&|=aQ zSy?8ToZ_MJspb%vkgBS#<^=*MN@R=ylCg5>jgOB_-gkMnFUwiV^2!Q9o`W%n_fSem zD+$Ic?;9E6Xrpl&07$ebxH=fj6%kX09sAEz5ZMQt! zJB;eOT=hy2SsGJ~@K(WUr!mK+*au1IRn!=fVNJR1FXSM9W%YpVICMuVYQf{+-Vx$^ z#$N)`Ta_#;l=AbdNA>U~$ zOeUhcMpsQGS_X<+8JDR?3&s8Q3IEKp*g`>Mi&kU^nVlTw2MtC_R{_1ffTLyAizRF3 z)>ZR*46#SojENU^YEL9u!X9tJ$U(2?0wb+WOe@Xs-l)gBK7rkfdK|!DO#om~FCI0y zLgt`Qa9&t-P^eH8A*t-A5>^?phGyZZn~bIp>Es1#zNkbP0x?-VC?OmqbS*6NM7Fr` z4G&}y^-%>o*}m1ae<$bNdOPpJNLGWj}gxP5riNr2(T)`Co{+Y(t9eC zF}by@W35|;%k@S?8MCtS6=>Edoa0s_O&Pe53^6vUivN-zf7z^5aQ$7 zdZQ$SzzYA`M7%dMlr^%oXSem5|U zwWLJN`)x%;xiJKTKEE(1+|PyO)67hL7bDruV34@RT?=z#C!>8=zgs1lng76DzcBVY zCx3qY52-BO>#mF+wh}NX+ViFRSLg0}&-A|Ll3y8|j_fRu;G5M8o%vcMYrTc}WgvVA1PsLO}zl@n_Q(P`l zyjT$Rd%UFZS5@!k_jTF#WRhiyqb}(Wu^RTza;mJOh?B@ z&H~+ASeGI?*tn3k^P{}l5|ACwV;Zp(SKF8))tX7d*6jqGBEL2*Twut5g6AYAJhCR( zg*~)aSUYyr`)J1d*8(H$VW~RQ4?OGA9^q01r%JoXqOR{Ba;{)dWb}1_2Lu_a<$Z`Z zGnB&$GohsYq6i@{<6)e~9$hX>lzYfgL|oL(JPr_Qh*!!oPh>r@fkpt9c~M^;7gJdU z{JU`ZE?jOPE>#`l%_WRSMpBKUkjG5+4H^1=V& ziwY~<*MH|{k_%s`EiPT*|5XUDj3guiMz^+jPZj=3C*xi)GF8Zw%IgT`{vS5 zKmW^>(X>}^l^pPxSPd@TykZUs~qJDrEWu)KKk?BX2V#W{=(5QWd4 zx-a|jgGYWan+~SVwws5ZX}7~>r$wi^N}gw+3gr@Uxk_d&(rRMT6pR__*5Vk(Cr|-V zK$WVoIQ8_43^4(9W3in9wq7GFB{)^`yx=31Dv1aH*FY%0|9W)+v4*hle0F^5>5uF? zFn{}AN_&UZ#j}gY=f69DSJBE5dwrS*lI-5k-~07l^h?&u@0)#jE;fPXz{C3&tdT_k zhet4&n?L{n;L_8V?rooLPivtdfLD^SQuoB?PP`~a(%bMtt`5F??LK{GC9+P?ZQ&9; ziuv#q(F2n&0KL7#rJu~+SUu*STS2-7g5C1UNQ6}!Z%EEL3>gLyyK#8p*^lF-7!DIs zpcDbf$-0m39cxJ`ya@O`uT|k2*>~oS$Xp*VJG(A2VBRx6u=}d#5cGBcj*^bxo|zWg z5?{2<1hY8xNSivkFW2z1AtUx^C8iiicHn4m&v$AD4_(J}xKIJbHb|7u`O3O5FO zI2U_-7RVJs+?m6|wQb;X-A$n9U_OJ@bQ}#1fCy47VwguPLsxn}!kGiaw!%zg1|wm4 z>1?-ipzTsKlTb_sMwbWe@Tv7RAjF{(<<8%c zKTU86@FoG%N5$Iw&ljiv)j@Od*AW|`60%h?Mvz|4|Fi4)otmYrvKi!Uko2JiCeP_j zeFQ%AKf|8+BFRgCk9HjMWY6<|P$g-^_+SWVds2(D9b9hLo>H9p8?(X0gFScl*N&Un zFNxp@gNSCc;QyNm->3^^1kuf-47CLw7JZK8N5{~^pX=7{`q*y) zEt;)|{(i6d{x3CZQc>M<7O64R`+fdev*+G3IsJ!JD_3tRZtP(3zWMK^?|b84jgqc~ z#0Q#GPITSOU87mQ)92FDt|Tkt3NxyDM*e(3c3~QcK>`mR5JPm|EY**sxJ5(v+hh2PKvu<0Hwo_R=hyAYbSxr3xF;oyhYnE6DyRz7&>OCag(d||xWY<}>!7UyRcy(6)fK~eBzQsyW3 zA9$t`Md!D;w(;D`^2dJp>cyZndl`d8eZfSf#>oSRnN>(d@gfAqfcFdrebTiR@?IB* zB4Q9#5Ls_^KR%8oB}8?7dba9fuKO?a3#O{$4`B2hc*l_b?t@O`{tjz zBv{Y>Bcn_<##OU|{(O_5Rw5cnzyW|a+RUml8}2JHcda?odTFh0)B=D}f{9@5)Ti!# z;da2b%d%SbyO$rbSNo`#t*;b8P~1f1a*M z!|^5Y_=9EQ$EId6vT_?fvc~zVhsC{`xQ@d#l_E`W?Ndl9-sBFO8$pzedBUJAK5{s# zh!spp2r2@`ke9~^>N8Cn)dzy<0^y5M##xkGjiPX`_G$;0;dp5!f*fMMg)W(pujY$=S|qsqkymqKxB-LGWD5gyjs3 z)IdfMQw9`4P!Yr}BP`_wAo9o%+e&c(&b?vz1uFZ3rMWLZjQ~uXXzRo0}5?lf#ldnvFpxKHl&HGP(J>Oqk88^+Rt9IonEvZY0Yo5~KWqqYu`K0C%-$#zX=w&q*FwL5hMmPlEDB_K@6Zu{@i|A z7rT@m?@|8?i})2Gdp0F|p~m3L6SzpZtYWSu5#z`E9Q~<5e&C79_o+-@1G3uQ((vV!(Ih_x*D zyX37^s`W9%3dSqmdjugVSE!UK6oUaP^H=aiu>mfnR7T@?!%Yi}<#Uq;~t5kVnVjoYpmN}pIK@51u(IoNvYBhfg>tX<-C`DSVt0z{lfkhAi zx106^@rqYK5CN|w)o81j27&8mRb3n$>Af@`#XVDBzIKVc+d;(9S#C2*R}@2ppwcHF zc7(zR6+7ap5tU-VYG;WoED@AKY!p*HFe-rEB`^g5pt!=LsyFJ1F}TyM!*Z>U6^jBM zWh+&=M=_`B*{#5(7Jf22y>d*SUdBoQ$d)m`1u(#QDOe;JE-`EgmjI4{Z{rXg2PL3D z&~q*FG_UaR_zBx6odb$JfP+TUwWV}_?;w|Z0kEMQURr|GWheExK(7$ia7gTU69i9{Pw zsfq8GviwQ{O^gMng2NLSVP6DJq3JppKR|U1u_J(D5L6nd>tbz+S7>`rO;div;Zgu@ zx6jWXWw?CvfSI;t^0UAFL%1ZUvYQmB@}1Oj)j$&HPH?&Y<)#90iDd3eq+>^r6MvR} zZ~iRDr(*IQ;Zgu@o8(f|fk`Mv9>cx*E7W_>fGrQD5eT_gYK@40zf~~Tk2qh>DWS;C zV^NR*zD>aU3&lnTuN%SGo0yWMq-TG%Lhk?K`KgcbMqDteo6k%|2-1vS>JEx0C#U}{ zmGZ5^~1 zffu3*fCs>(meO>W!yj#N_KPF<`WkVo&L>TiU(X%cNDJu;@v$BzD(F9R0FnYwq@?&} zmF^d-m{%i8pU9~E1&AM7r2hvQ`IRb*#~q`8ZdD&1-}jOkn|K96cL&udda_>scBp*d zOH1=Juls@^2zYAHqd7nO_>WIa-Mhb3`UcRs>4?b66P5bn)u{uMXJ;?s@(g1v?ZtUa zIv{RL5S9`U@ZN(e-ddtsonSd4%X5Z%0!$F#8+9;teV_tkQ16&Y%Jna|)~e6<``FM@ zI8V)3K3uIZQ?BqwOV{}N+6n-m9EeLi))-p`7Wc3&>@@$ z01q~?MD>Kx=>{5csd1#fR<2h77Pjic#`cnJn0;p1)KO4{QlrF8a9K^SHK+A#`*8m1 ziiABR9C%bc&?68*3CU0#h5(Bf1!UbGGXk~;(#tTCqGU*sJ=dl8o0Ijk zHjb9J_@9=E?n*c4E%r``gYHU)esh2?^hS3ING~-tx&(w&DG?K3FnCdvq0~-L{6tJ} ztbYDh+z%BO){gOm6#}s+YzdbD0m6#poJ9b$3%DHSIV>;YnM4T@ycq1Y0Y$J@mPhT3 zDMgp|^no_g435^PirGPIicR2hUH=BxNs-xZ*&ZEf0lG(+sJfN@xUQseG1oT?2KZu$ z00;#<0bWMX8(?QBSisW80=k6(k^zhYogCje59VN~b6Hpf!1xF{+QN>24IN%v3Dg0+ zbEVXn5NmSK?Tvk!1vnt^F-QpjAp=tkX1@xc3*jv(uk6XS&b3Ctv#4VbZ-C6P7k!nP&wL{Pk59zgr>gdrF5_ng8lRYF2n5 zZ}O#stJLqx=zVQJjlX)0&hJg&=Bh~S*4-B^3{pV+I>qPS zbL!XL%8k9y>Adf$=Gx2;x^2m=p+GrgLY^#F1`mvm&DNsm2RB_a^=q@&KJhFbqTb^Rk0gfjRGFv|F>=@F;>gU%6(eQ|+1TI8xs?xG`Re7e0ywDNRZUNP z{KPjkEso~%?V5XLWt@e+WqE)hya8weoR&FK3Is4BoM0b`gg88G0!{!H%RFl=NE^eA zh2}UD1QKEnSMejZA3ZqPu_L8LBGXDc*@@Llt3ke;ji%iJgXKQr4JI&PhEOCTXg(lY zT|w}uK!hbBVnoVRNDvV`iU1CWJU*exllxu)+Ix^xm}0SetoZWmxa}1vX4Be3kOd>~ znmC>X6tjg|e50Sz;jibTA{@Yw5Boq)*7M-8$%{aDFA(4}*KjW_AL3#MFd(vBZOqA0 z?7btWfqXZ>psE$W+#mH4nQXAB)^{uD$*s=YK1V?Es~;D{e7>b1>_2j1kb? zz~x5cn4XEbr@6u}zVU11KlXpdJmibkX`L;-o}r`CAZFwr#Hv%VeqG z-(Sx7Z>=Q_EP>w;f{sDp_+DSRJ1vkXL{&E(teAjh>2Y@X-(uH}LE{AC2J2R8Ai__s zW&F7)`t}`xOY-FW*Vi6dePKG7{ym5;5E{l*M0J<~KFe`s~Gl#DLERU3P%TK&$?RIBmvrKJyluhSeko2FbgIm?|^ zaxu$}ovKvgM{4y8CJdXXhToZ=eeY|XCUK=qIXXn%ZqjYHQSZnGefs?#w1uL%h83YG za#R&D1~WWn0U}7ABh5ChQ9}^KIi%l%P6zKC9aZReS#33OwJM8AiL*rtMR6Sh;b0Uq z6DNFVYS*65MZvqsE13-PEFtrAiu0|e5v(Cp&cUGCM@BfQ>*PJs~tLUjE{eH{qp zc$_#Ogl)h{5K?g{3J6Y=2`VH~LQ(Wm2f1uZ#rb}zHO=H;#JX17S?vo&ufSS^4ZE-7V+n4m_P7>{DB2^^^|0-ZhW&%*C3USA!TUXEe`b_~JjP%h(9 zf<3||fC7e9gnc(*L2>-1P=b3sW25R(tPDtiSGU-vi1Vy^df3YAlxCi z1aUpIa*X1@Phijdk6=P{J1MaU>J=9SJTWT#%<6!DTDKT08~mN9fmdQfKNI2@oXVyz zb(eX*oyEk1IXL|XWDoyUk|0LCLx8>!?rydDd~O$+8o9zS-A2o^?o@thbaK$n89S60 z;HDN|4UVo|3Q0z8hD*@QV#b>s{p^5i-!GwyVJ|wFUs(Hk_rAc6pz0}t8jq!GEX6%q zCmQs>J4X45%f$CAlfFC+C0##Y3zQ&#sfMl%un&$9{GPJZjZD8=JXA{f((Qyx55@p^ z&r+5j&DBrpy2|4ARcr3^rPA5gTdm{Y?RTZ+9nWP0PN%&Cuk?Bcs^0fbl*{Hj{a%=x z09$y}281Kyj5Ws5BBMVTV2prsben4wd5Qwo29(NW(lo>S0*3uUzlTjC$TH~np>QBj zsWm9Fj2wrv0Y^s1*`JgN0}BcO4J5y(Qh#NCz2<!#O2ax>2&~r%Kplk#?g_Pm6w;n7Ubt! zN&foaNYHU81~yUuiaD8-}EoxIMn;!|YOXLeBLN z%m(JM$OgDnltKV>6L{PSE{ARFW~z5p{2Lw7@zQ>2Bxm*l0rp^RnM?f{UFvTSaR|2U zp`B0Ch!@y2Y1OTzBkp3W#zKm53K+nwYfljbhU1s`rnPGC2`-0Pf5Ed%A!Pz8zzE1H zf+t7|+=V&ZayaStCult+OawfjTO0Y*Ei7U2zJ?eOUB#d%f>S6-naQx~6C1R=YmXb2 zi~|O4rz5D_@81ql6Fqb&BWyO9J{R zAs{;}gX|qH)scr&*a!Y5{_GcsT@wu}0KoRwdIc$m{Ir9Yvx4U;F(uV?SCoLWLC7>)bEI=GqKDpt!IKMAJp81D3u6Z-eh*`dJ7jU@1xsl% zrJJYUa)e8*wSurz1##eInWfDIK443WueicIh=& zS-5hUUa7*!)IMySpz4@M?5m4&C#F{xIZ$srIAUyZcdhoKv37Z*+n?;v;wy6x%s;b$ z??X@uK$YPQ*$FN;SFcKBA%~?OEYQ8uIW+m`!55g#=nM!DoG8~=V@%4_r$dnZJzy{*)GahZ!2s@UfT$m3ACo@{aJhHD z)WJ;m+RH~v#j<$Ws=uu_Y`^ayG`9qog5VW?$}3UXQm7z7#NdVh9)IdTA*s!v&DX(3 z+w!icg1YtN6N6&689$%}o$`Z3^RG}^`#vTpp_?(A2%9DE6jQSN*?!LXUQWLp66jEk zC<;a3IGg2sz{iNWDY6D&Re7cFX~%}p2trCc`+eB|7-|ivcYJ=W#S_)B@9z;V_wGPd zguE}5B6GqLXXUD8t?<~JYP(cuoLuARXU*WH-!PI5GLAeZm27q7(R`&uRQCV~ikdQq zu1@jtCkI4FS`5BlBl&QL$_JL{{?Rm2+2pbEf~i=vm*V>|g*aYocG!1t^i9KMYmnac z%-Zt7*9U{i^MgJT1_VinsM5=`8)NYTUcr0C2&D^vga(VjC|H4#F$geF#Uh)2paX^O z@*=I}1=Klg5HdD>fT&!>8vsE>5CK&{Jt6{P5EMmG1p$g8C+l;w*ua7TF%U$SbY;NRuU`%OEB%KKJ$dLkR?~WTdYQ1- z#)&6KSYyDn#1!Zj0J}NJt}$SYIwHDh_(6lvk(>bq2En70hzTVir(l&1^U^_p00SZ@ z3;{xOw3}1(2l!HqEtQclM7#y3__T)>4#aHfK-?gxzzSW$gdkByjj+1gXIN+Z2f5lq z!~%*%z$oX*n8R=xaCnAXW!Oi-eZZ&$tlT18iol3KM+z>fr;WV<_99Tb(v-${IJy7u zXczFif(0Y(aI%u>#X(t}ZtIL*fqb!3l%|JTHJ=s}{z|v*FLz?ocYuJ{ZI25G>+>8r zc6;gu*p)O>0BGT*fu)L(Dvl-=k4Oq+h{S~55Iqg~J|R4yNF>1K(#)!ji%M8(O@#eM z&t(>Y#6V1yARO(2IPX^)R#tH;tQ4Rk8#ISj1m~fd!(==xjSP%NP!Ti80-HJvq9U>P z^-?GRs0yh5X@pAwc&EeVowQ)Tt$?X6m?{lksZw+ytnLXehuM3FOAwqWll_1vOA!)S z)B^;>fulJ6-$4+9Ep58N4Ia%qWSZckaU?1a$A+NU8ezUf5CjmEP|U`;o0xj<2hjcw zMjR@^#yM^S-3q9++&hx+ldX(@?!gKehS!u)zGF-L#K19L1Ao&zC_Jx6%2F)U6(mfs zYp>EvrP*}AKp=@iPz415 zYlKu4amu&|abT$>2_8iNgOIwMUY^k@l#W1T4G{vHexMD#PKVa=B6!aa;d0*$LA8o= z9#O#!`gEJipkRZ5C`oYXfWkRcAqZlOH5AU_)zRzq__K$OW{oIX0}1l637)!kdF++h z%QTl485vW2xrz#e03zhZ@>)9JA~JTt7h?~XD@X5bj9guPZQ<_4XBIJH5Gw#%!=->0 ziYpxPWK2>m;hpo&x)y+FpK9^HLPI}grPya zK0!GoYpYQE==UaiS78n2w z2;0IX4Eq=sXTT6{3xwbn;1WQ&4stA^Qb8!;DWTHC08aWSRUibw%qgyAUJ(#xl{c-#}7*K`6Z(`>lLkV<-Y#?_bBnqo}Vxv9)>Oyrn z2t!ME3Et^&DFA=M;8Fnogu>*ogB%~{ol#cxbDoL}|cF)`T42S^~#A4d#D@h}HJZoL0 zSbCX~=^;J?6Rnd{T1`>mI$X*w;c{5bt0JM{6G6yRg>o@ABszp{1GFQ@f(}iKY zbzk@y1iN%$xm2uWhk7eLy4Skk1Z+Xk>9YK4TLu_r%s69I>99Xe8GX-J6>OF)1MfT98w z2jjCIH?H{6khO_Au2s+^MFj*lk76cD5Cphx!O{y04g1)>W2KSO`JFz-I&cTPtP1JI0e%$VCD-d!O6@Zr?qB;s7_L1xCY=ieVKP*MAt2lW zTn_Ub&}f8wZne+f4MP~h1_nq4zLhJFW(5)jr~-ghxR`lfFcBq+;hF^@gV|^J@YMVH zWTpO1Y1FO&a;MLWOg~!fEWY0MbKe>>XMca;!*~Be^y1;4AN`H-`#T>v`|@H~8%gq+ zd#nBEP<(my`{{e;zco%}!cn`gKkwHnjXj#sl&{Tq1pSis<+n!Gjfynp=X)qHts1Uz-2uAGTI)KL|(= z6c9jwf%jC5;qEXRJX9a)?~mgPBc;++AOip-TyI_e!$06GQ2*xg^7~E?29@w8xHQJn zSy@K=JrE%bBg&N;-a7z{So-}goo*8&!syfi;(7z`3p_)&Me4o($k^ETfqXJ9edsr4 zFV(-(UM-!d*QXDcD{Vk(fxU89Tt0Tjc9KCPj0Bbsj!h1}zq%a1oc6^TOCSIcSRv~x zUw!HojyGdYRqIp>kJ|z+eeMbC0b}=%^+r#Q&z0-tD?qxbm2hCL0!*El1h|xEdAYwd zIJ*4GTz%pBE0(lF1Z1LIV42D59wSq7Qt@;dP^XL+-Kgdi7?9%yEbFbEJsv1f6p;V` z#G@!(`Z#e25Q-%xG3elDnZ<0yCh<4H5S%-fNXQ*-Qv0#`h&%i zT`LfgE$VNhW*5a0<0+xE5kMrz(;=Xaiie;^=2o!AgP5BX9}M43z`BS4BI~0wu?kWl z&>DrTVn{J4jxLrOLJ8;rU;(}2DY^!87;Fjff-6F`w$$>vTr=b#0t!OSiHZBptxOx1 z4FU+b>+ra#WEw#M(T!(4JvDD{_&&mV-@(eTj?-9;nnL7VxO^8b*C)g7Q&Qh|?1Q0i zqbhrYO9AB8;8K9Xz`@k>gfkEdTL(r|H1Ci`M{%eABg!BBzkQ){>a)KRP2T&J0NTKI z;R4%9xjYw6KlE$$NB`=-;K9FjQIGx{xdYLHVY+p=1VF(dyssQ`B6Z{<>svL#Y$+tm z6*01I0apsgATHL$Huo4tU6&_TI*UQ2arLc$O8`d3UO4q*){P#`x$>1UUiwG+;L_>k zdn@-R-+Soi@BY1GpPu@DG?w=+{eJT!ul#Z~DO#4OVmNsBWRT}x(BVCo;fTo`+!NOr z9jRjXM<7b}$~c{WTEd_0VNXWb2Pd$1m(XTP|9@Pi^V<{HQjhYd`bfP7h2GLja~LFbrI(nou0W4mmU<1^9+x$IDib$2gk;~^Jn)TZmM%UwYunsJ(1s6 zYh0Krl@L{)?X)RJ;pI)^#8x(Qrnp6Zb@ zhdz0@IrI3T@09E1vp~8_$RC7JxKck*JF_nh{NXgDg1rHC4%=JAb4UL`|#MTeQ@-A@aSY3JTk%Rn2<_9ZX-erO}eB~ASi`6 zN`xF`oGBWVNkHU!4~mLz2{9^y!9d|rfeH!JG#IChVe?qzVk`(qVCY}#OKZM8v%}tw z<=UW5T3|%zi02i+V-VRA3^ybz5N_(GNOovLw}i{#uP0l{@EF$em}>(!2HtK13Stn# zN{nuUBSYV>id`!}%%0(LSY2_{@qmipLd7>$(L)h(xYm{96RX^J7`=zgh$zoae91N8;Ii4nnAT);2l<0t10+J2DZq_`-Il*-W42W&u)dWV` z6~TjolAuhsRkK8N-rQh&g}?|#KsSL)097HhL(c{Po-)RacL4=Z^@-38KmkD&3{^ye z?z?dLE?nNSio9?hKjbRovPb#au*mc$w*WUkwHx?s+snMAC-97nyZLF~j zxGnlB)vX_0 zdu)HX`~#r4e{Aeq6QxomvNmIwWVBrNi471{Qi1t?FFsnWEj}eGPV)4o$;*BU%neDzwL*P1dx zl@X~h&nnCGZa5$BNQOZG=u5#YYaEsdJc6PKipSy02|_^OtJpXq2m`E52rQ&08duC? zQ`Za_pbr4duUuVyZ@y5K(nJ+8Lg6yh=eTY`5)0GiGVzL1_8}g@iSB^S>j6iHc{ou7 z!z2x?bXcalPLrbmHpGZUjVJHrbgy(jMaAl+h3lc12YLlJ?i2nE3g7~GAkp+2%f z`Y7Uu*I@wNiviG3yOd@Goeo;5vQlJ~%ojmqqHQB?sq74w!!om{`?6lD=#Wx`O(t=p zUBX5SDFIOr3HrHVY{7zuM4fYE)?NVsbW<)6=a5`5eQ-TN7Ze?UctHRoEj$g3lyL-D z3RDI_9~Fxr$W4nHbfLH)a73`xQlY-nP``#40KxmRw?SBTZZ@*A{&Nr*s2W)F8*LyI zArzHsJ8b`yBhlmCNG~w6%HJa``DY6CJ9a z8-1u#zILi)_%NJ~BzUF-otsCSRPry8j2uOHcN){3KABE|t2Y zQIrq6A~@GvonB7+U@XoREO*)f5*l;)?rQDD4_B%L0{L7US?OQ`ivWmaq3F@WV*vrQ zP~wS*{ZAhFcX0WGJ;Np7d+D*_8*>f+@|uVPCxXSYpD_-|$PFo<87>m`y2W>w0R{ye zZag4-eA3J3_RrhLW++uhiE1N|R578&dV?)Y6-bA033pS{UScS004N9;W9YB; zY-hQ%Z>u%U`>AHV6v3dt90j_$ihI}6OcAJ%bFYC9puAs{M+8PFu%dwM0WLwrK$hXx zQZUf>mO`!W01zIejmR$GQf>h*LGctdgB+>Bef8Do(TSDl=#1(p*fLn7h&vy8x4aK9 z5Ud(=Y}w_4$LHfRz64lk<+F-Qd!!Qv6g@Rab# zrZ*<&L4HQao8??h#~R~@(nK@io$GnS5{Rs0Un?+`2vq~9-~k0Zf>ju|Le&bYpjriU z(2FUr0t$rAt&XU!4w*p>$XFp_vmYV2ls|!RDeo}2+`ARIpkT}`!zF;R29>?RrHCM^ z)CVcjh*76EU9EUukRAMUl4O{#K7){JHdvf0`uedAupTDYyji zKq<6*uCX*Hzx>j)6@rRC#Ki8@R_0!8Mcb)Hcs~22O&nqQs&|&8rtce97cR6XNO{rSLiw6Z& zMbI13oNxvG)+!=^4XN0W0r2wtRaT9edSx(}IuzKWhbpzD$lOcj$=XzPu`*R%02)hY7Vqj`>tLem^#y$9N%qA|KeB(hGEsdU zAbE7(HSdasztTIBzp+}9D}Cq}7|ga7&YQy#fMUcjNsR$HIUaM<^Pma@Lf$OMoB0Ie zT-GF#>}qHSXXig*(Ade2 zh+Q?|AyHSYdw(@BW)0cI0vlaF23uFC3%=*ku&}s` z{jxu{im3^BP(~0*0`yWK_>F>9giv567McaD6rc!+g%K-MEr?ni;}|p17O?}sUx&+4 zVL^;|08|BKT#c#q0DpU6>s=p{Z~q!>tpAn(rnRB?8`With&kIitu-`aD0Oo*2@nO5 zo#7I|s!+p$$_6y`d57-!$0;BG>`Osy^6PhqhvWF%sm4hDy@iDn-*2rTVF=z+21cXAtP9T=1Xu2klkv07_B5eg ze@@F-*76QVf>C^$Q@?wJv6B<80J`Vr&-u~8S1v!KFRY3ci*6$26AU%V2*MRv!{ad` zcob|*znsv#t4c=;Ixo)CpYIuqtpJE!-yT+Q9mmS^%gIW#e5i4>ambbfT4$PwH2`2h zb0unoOh3GTwR#;c0RU%guwstXSA&Dq{n^#lq<_6xDb95WRM73raXcasija#A8A5~@!+pk3 zBIkMaIN3UOxonufAcGWf6%df!0D%guZ*N<;-1#0TBo>`X2xh8lCJxtt0swr&`^>0Y zu}HQq8j>|R${V38x}#zaU`)I!c6?1uW6T%VYRJ5`l5Wi{3OGO%Qx+&W%%o7vws1?+ z7;gYizyKuOUbIYs$u8k83vv`}$%2ldeho`|TX%thf$<2cfdCL0K>*bnp0Ui@S|4Np zpz15=LRnZ9Bf8G8R&nZm-xw2Dz~n&wHbv#(?XqBhd*E`I_YQ^2y#r>W7UHIl;#*$_ zyH~grJW9pEvDENd84|yd0XD+rP)d2kcu-mY9n&1GpQ3ut&t8lgQ(w6)i`{D1Y3DFr zgCuMZ>$6%t{KRkf`&a(FJNK_Jp}j@89G0txS`_eDKj+(}kl1qrk`^LprJnIbpm3ZG zES*4T000hQ#CzU@P((45rtj>=?GGx~23;D6RI2riFv#};?3J(OW(}$jDCXKtw7w&og(UVEK>;y>vCw<%DlcDFUW~?Z#()J7#5t+~+%*A0e~>PL)Bq3~7(N*P%6=QmHnON|hgUT3l>%{OQ@tTxxf4 zwF(3QqRRc{x~~Mm*_+p8GAv1>?O7Gp`F=DgZCB6>AgM<*j*eV5BI#aVc&dK9_r0qR z^7N7n-TQ2;ttcXf3MHm+%*h%B5L7Cda+M&ASh>_iT?cCnK@e;W8VDFbfC5%uTSY~& zHb8>mp0s7lSXoRttIznHaa}A;1Ad9*=sAO{7X$EOMOHFbm$&wTeuvmXrWGt zrVMcS&2`sS$d)s_^P#b(;HG38q4k0e;e3y9Im|mm!J`u60grANix*H8juEmTjw`!{ zOAs;8>w&9djYUvEwgUpIxt|6_#Jp*^R1`lI5guu@f|0lhq=2Zps`o1+`1!<`K1g>{ z38LUIatZY-qfTeaMkZIq1gkbY+)_Wb&-vNN$TGq<$4XVe0f5919_?U83W{qU?SSkU zhH|*RK_C28gB(&cSO)rFcE>HT1yoRt@QkXMvD8Sg28e1=QQt|R85rqqFu*n9QC%}= zw~7yO8mp0dA*R#;ig)4iUAWu}V2Uw7T$V!pp5YR}19cBa7Lr_V2Uj(xw(;~n)JSncyc%nxe&_kVXtx@OHxzvq%)e(tbs zy^03qTZT&nJP-xKqXc}z84@!zoG>0P=7wV;XrXi+nAm_<1VL43H;h|c6Pa9W^X@o{7^g3LM(thbOopU{? z?nA5vJSbQ^Pfms$YXldMADzl)_K#eA_SLJ8|Nd*2M`q`jKtd2ff(TUUUGAaTMQRVt zFk(aYB_+-d2Kb>X6I4Ax5>px(p|`XIRxo04D4o_aoz}_*T2?%za-C|mPU;F8Cg70+ zM|i0ym}{=$a;3ex1Z&F}fh!843L=QhVWh#SQjLciqt^l>gPYeS=_{cLLEOfWt;SM# zPidse*wN7p@OzY8j-_ubKg4&IB~XjXwzW|_2E({i$Qp)4l%P@{vYu7M?f@FdhB6!3 z4fWJ}>L*61?W@i1Vm{7b){=WBUiJH`Q-i0jO`6Mnj97G+a5;3qZ3(eB@tebiD%J!+ z-pdcgwfOu7U@zPem7!@`c^D3HPjCrvP%MJrP-L4kq$!1WEXHbY)dgDG9V-Z zq8*gm5+b~5xb#*rhpU7KD{Yg63jp96u2^ZHvysRO#^{#ghoNzdNEbLAJHN0G9UF-3 z>l#yCw&tXDZoG=lm94Dp%oH9Fu%iQ{0)EcIoNl!eo8C;*R{Rx1aI_5p;CII@>J47& z7&Fx~Cg}oR)t9|rtwBc&T|~BKG7*3rD6rBO)pqDzeH3X7jEPeq|I-SW@51HY9j&LW z#Y^7}P5r%*2&%GcxCBrE42(twR1mgyM7xmyggG_q+7s7>$tMW*J^Duk$%P#jc<20X zde`qJ=8-Q{0!mebWEtNp{9}LZ%GLdc8Y53rt6T*n9zFO6?Z$&Y5%ez4fCn+`Agb8@ zep;BZ!u}jq6CqLn@J4ts2>4iD&{E4KC&YkY04R*|{v5)JL2W{9>S%Z;Hpb%W>id2b zcjDPvnIs6gWWco2`l*HHbmQP;Yj5ot9erZ*D-TZ1e|YZc)zO7FY$>1yT80|9py~I0 zqDT)tP&)gH9X)I%sf*WL-AEZ8SXVD(d$Fb$RR>^15K%g>UZ#7li`WRU0s<6pqU^YT ze=Ys!BL~hU<)@eHYQy&9J^5P6OZkmJvdrF^QFb5 z_k63p7DqvV49(c7*TyipXV6|n)g#uzum*A?p0%f3sZpQak2i+0dOldIwH_KBd*z`@ zx&DpWtM@&#x&+=~3J2a}0aXR>U@+ihxR1~5KX`dONnY7(jf}C>qZ$kJ*GY~<9}26jEUB8PUV(JU1U23P{4r+1#*iW(_Jx?(<(+L3Tx{FpsSiyyl*8!J23PS*_?w^H+h~FKoIf38fZW9ZZt8r-UhPm z;O6Z+hk57Wa<_GU1mSY;5==nT#(NjT?gbc}1&MbJmjJ3jWO=l!%%sX%NeKP6a5>CZ zC69w4MW7TK;!6h?OCvKEZ^wi3-KEw1jp-_*2%&SR4R|&Z`cC%$#|x{UI|5&zR+$I1 zeCT~ey7C-RdI`ncI$Qz{;b`PJntSH4L=24*R>K?$VYW~%Cjqe*!xJzr;6yCgP+040 z(Fl{vw;L`y3kx6k^?wJK^$IlwaSl;KM{~{=1NRt{x3cCwIz0Wg!-wI}+S*CY2crN0 zrdl~qsk#iXdbNGjD7%Hr;rXyu+gC>?ez4ay5D~-*otLjmE^UYy1%SeH|ES?pr^c2~ zo|<_Ia10Y;CW?>8Ri^GPQ=6G&?&Wz-_sU=_m;e#Wg%!^$FD^!hJ~q1c$;rv*o#=a> z?sW(d08~K&p*Ar|rCesUxkAzJApin`psEB>LaAP-R3AZ&fui8ia>bvj)-M99Q{~F) zPaZqzrt2dQzS?bZq1Q$5sP~ZOOd;GoInAS!`>#wT@uqMIpeQ}^&4ng_7$L03xfn_J z1eXily9QsqGAc_Q0*MJQL#Z90!iE_9P8|B=7|DkZz0m9D`-`5N5+k=2E)ftbf>N``uI9IoJX@hZ&^B`s%V?w;At3GhnW_7SQ*GHs01^?>EUn z7x6Bu89UYnlf4U_CNu(!{Z zL@?DFBjqw~(1*N0L_mSS5=IF&ity@Clt?{OQS6g2xB>tW8M*SI$*JCh)w(&?>)f9k z6C#3DWjab;J6I{F!18ur=$yml0}$CV26bh;Z1xgcIBjP~u6+6RLxYR+h!_l(Kr9VP z1PFlygoIcb8bcL{AnzT|%a84U*&C6iXXnPcSGt(UAlx>%94cc~SbKfdM%C!v(Iexp zi?GTtg#c+Mop6I!KUuQ+1$zI5r*D z-$9m%7YH#tLdZZ0Rtbi1w}s^LdKOIySW%b|LD~MOL4dHL1uX%PUBD%PU}6{vTz@pI zGmk{HPrH=)m z4H(fhfYz9!FX*x{k^;j$YE6pjte|TnE-QNp_VtZDu_$z_&Rs59X#$%ApsK;^6h;oL z2BSeCL00!y+Og?*);$O!fI-9}OrWGVS;J}y^Pp8h0zidf+u(J?i<$CB(pT*S>es45 z7oh-I_aLGeln|(Uk;Eg_4kBs{IRFp=KtJ-@PoQ&sEdT@&MYM@`zGm!X8zj3^VD+|I zu)p)+a_9PYFa>)Vh*}C-Ls%ID zE>%)5go)ssLXgndces3;7F&*28bOT$MUi14Ri|92M*RIig1^1m{M?i`za3Po3+1tc zK|bdRte^n0ld;d{L-MMaIN}45<9iAo0|KE4O*PDW;i4)*AQ&S6WC+K_F=+z^g%D5N z9pAFFQ}KR_D=Z=E83lhU9DcyT~0^jUP`Rj1$H|yF!uNucahyj>7G`4ilQd2LiW+xWB zK}0}cK|`Lt)ET+^uKxWmciJNz^;og%T{SDHdaN;omFfmya_VuuxB;bU5b#{LZAVMV z`^S^gb5>*k0IW7ji9A|LzOmzrZ(|wFH1mB`ECw+{I1>dCP!U{K>>4hCxPN+XU-R-T z-Y9|x$pL85M?_GdN=%s$0YVcIzwZEzCuiC~xbV`o`&$>9n80ibkI2q&xgp6-^$qwO zR$g9_Ac^j&@2j25`UBsY@0PT$2L{~%{nftcKtaJfWsrNs8jKOJAX!9ktOECy(Qhvz zx~{JsfKw0w?;OT^jIpRHvbncA*=jxoP!r30fET1-0fWch1bzZQhzFn$LyoW{1=GZM zbX#{z0<0hu*TFc!lVU)&Huf=6FjK2?Po;K6kYXnwkY2Gr%ngX&(Em;-d!0tiOlnMhRs_Gvm@+_&jZ>KH0tTkXT+uSZO4(}{D+5pv z1Q=lKz@V*)_qCG9lo)%GBEN*S3&>3isT$xpgs~GVBGLn}wP;BWRVUqrPGmCO0QjJQ zAd+C1K&6GG9g2A&oB;&zf|8&zg-A6QI--8QD)dCeZTv>7MX2DZ71mZ$u-z^8bS?rS zr5s9q)p|vBEkavH!~+5b#JBM-sTo`AfMjnITy89T=fkA{{7HsOfMBl!sh{|0)?0gC z%e|MyNxVHoZP-MLgaIEbdw$z1Vr56T1PCxRea^K4j!T3yA+5aHnXvIoa=Waz%B5HD zn_ay3h3QIc03G&E-79C}kiP@wZ#GvyKb<7M-R=#(X6)EUL+PQ|TY<}=N=udffhDwt z0boQBpc4vLy)v6BW*ET;MW|T8(8t#wf$Fhm!`lOwAy9eB=!t(ZGC}~@EQcXrQg@yQ z2U(kXa`g^v2yv<+5(uihHoYqZ4h(Xtg?|+zelPtevAo>9xcpw4_OGnSlL^r|#dau+J2rMmE5Euih zs44&+$egEQ4U@*uD;%A`5CQ_6_fAGT?U5gglSxD_Z!tdI19aDBNyqwWu>lek2oy@H z^g5Z}C0yeB`GkF=TP}G^mjVO?iwtXG5IUr^>Ei{oRHZT7VfD)w$B6t`f3}BU5c6i? zQb0hAY!oIbn9x#m3l^T4qczq%?$Vq=E5-LbVgxY;vBOIwGN9md#l}Lizs$s46aAnP zu4VmvzdpN)5esZ9&0Mz@u276B1`rWc6%jx&TgVkR$n71;Vneyi{qjWt-C!k^zAKR04st60+bPP90ewA;tgh3;NY@C zQT7a%2n2UEa{EKLqyPW{bfF&Dxph)QWyTwOd{M;oVFO%R@41mJ#vlOTAzreMT1D^(7h~vQWW8EmB|tRTyqrbffxHdI-YQ%Us|ALj@JM7q0R=)stLM0uSPTjXijZWE0}cpF zP(Rj5M)sY5Q(&hYX`X#GX`G*X{ONw5e=3eJ3bDtI!OT90LnJR4h;Vf^3K$HD)cwLEg$DRV|B1Z(F#`im~jO`Mbi40}eCEvUF&Zl9J;E3`2>e zx!zw8#n{Fu`I;kJZr+H?ZR`*Vw~#_^4wpCP;ZZG64?ffNQbmCvFv#`&=mwtlrS^^U zxhA%olY6ERL1m^w^+2UlpJ^=F$SwjJ-8<&fW;Wx`cQInOKq|rG=}3wIAOuoiiWGtn zR1qU+q25^2-VC!eGM81%2?OYG;^aVxVFtrKlu+O$3N8YDED9TrL9_|@t`@x46pU$r z19W)i5`)kd#|t>x!#RaQZlxa>^$4;DxKub+ z#m-b`8TNzstx5Hl8M3WG*Pzf>3Lm%MKwG5}G0QO4RDxX7i0aMhX^ zV@uA)C7{%_;j~ry*1Nfq&<}(z0vG|bi8Y&q4%P{*omc_su}L!Zc-b9r2e{JP!FjyJ z$SCR;@e2-962vN2mp65~?ll0)KqED_q!6|kCJO}K=Rk%LC&RS?CB~Q-V5s^AXKc0Q z9d*?OF#;$E4)2>*Y#f86e>&juUAP1Y_NwMIMg~ki^8Iw|$;WN;dxoF_BD=h=f>)?j zV&1>p45Hs)4;Tb(V!e~^-WuCy>(x5vyP^y;B zZP$mc437Dio5o@YC19EnrbKDcr%TG3^idR#VnrZ~2*xJB*y~`q&Jud}a4CWaAcA)} zS`@f`AM0|w2j_J|tY--gpop>fAjZZa2#8IF7PAWKJYocs7|Mssl&30L{b2o)5wpTD zVM@`p_{n`i-n}->;s7up8^>OVV?YkW2-FmXCxW4EOsqaEhf8cs;u29`0@L3J9}WPB z#P9|=uOcAZS(ihPfTz`Qgp5%_#tayRo`G2{xQ5b{0D&!CA$2iaz;VAgMhGZG(NcgJ zO?LTF)T-@jth)1=%VC+~CSt;wYJ0suMqgI95L=T0!gW9Yh&|X_50@Hy-yIRTSV5ZL zJvN1+4cZm#AjRt%6a@HSQcZ+2Aw`@JP{mo>XQb@H>T$1;>tI?H@0%*RWI#7Or>Yf< zIj{<{-8)>(c+znLSC!=ykWGa*h$4ij)Sj6LMVy?lBUSZuaRAuXYjet@WK1<>)%};`SzW(YAe!ykV{z2ZAh%TBU}P_5vKB# z`%6)Vwf()0q3d;O!B!F51$7_>QBP%Goj9~y&2ss|{Mj^t);~y=X_2niYUg%(5rJu z5CBkkM?EPsfBN-j~ zbjgsY0ww_6txH+im}d;&De??W2lzpXb@>fOG$NSI%%}?o2uguu8NP1-ppxLj1RF*u zN<3a7szuqzv5{`6QCc&BSqA)OBQ(`$$viYVS$uuo*o_)ej0io_b$cHXOgca-B}78h zd#cmbtzj$xH3I0S>f}I#7M_<75VI@SMI9_JqlBW2YJm}GtEG?G&d=q#vYrIIj3Y9R zx(dV=8;52$(BSgIk$XgBmv9Nh0pYQF%f!LLFc(ybjA`4UyB$HyRNt6*1%`0x{OW$; zg3&=2T@&&p!L$`r5Qc8G1PCdB0z}Ym3uOT#L8(|x$OxgDSQ)FU9X-&KXn)lgbJ*c_ zL{(5m3L{~ECkPN@T6VhPec#pSIobN9=rNS>v|-hwbwL6^!BYbn%Zx39n!akPXfuJL z?p;qrGBKhUJc5FP+4MdOLIz~04kGUwfw7}4zySbG%xF)2Ruy_fFIuD)Dgx+R1(!d% z21W0DxCAh_O3&fMUEeJZ{jBf1GDdeY5R;oA6KpBur@az5c7#iS(8Hw!E)*aLoz<&) zM`DbQjhy*&K3I8QGo@!XE|3BZ;Ed1tugO{IdQ9#SbL()a2#9bX3~>qovYoi5=pthe zs-1f1x#6Zp_5hb;gWgF0>t8=!fA$s5C(1vymQ@##7|`qei}z?!!VbDjefg`r=attM zs8;50A6#x6^QClf_e(yf0=t4sfDGl)+z}_y>023tDmlhNTmc0EaEfVEQ86UOaxu^N z^~L#<&o3{3C@Al+9G0ZlqiZv zDa0cfDpF>e5sos!(ML`)@%TYCkpWdS_XvA{OA(AUs4GZYYxq_Zx*dY+a4#4{4BP-M zx#{1-Uxs6*=yfTYD-`WjDw8n>J}`56=82h?E8~^ZCNPVD-{#%Z4-VE|xA%^C(3{}W zkdo12fTA}U^C~WPhzM$ws1k3571(-$ZA2itrE$|a@i+ls53Y+01;UbqED-J*E{Aza zUkumOVMHiGO+h-lfClRq`lGIs?HVo>MGuuQ^>~Aa1YfM8+8<`gD9F^>@VUoF3rMwH5cU(oj_d(jYdZm8vXMVGr&HYq<{?~#q z@_0f(cN8wF2+jyklw;nTDc`IZ>K=5P%?l8S@MV|r{xruX?MU-pL&9?Nb_b15Mn=B+ zsktkkc{P!dERM1M=JWGHU6s=Y{+lG=Z*_7;t1%iHyy|vvx$V#j1wl50%VBG7!07nH zl#YG;oGp*Ma?6%$FTL{K(lgJom<0UmB4BZRoXUsakDR&-3I}9e#Y;1k!b zGIQbdA^)K#4;o{yFif}Al6+a&-zk?#RCo0TNsZxff51tCB~vah-OA<@0V9GB%82cO zI>ZV$I7E~ruv{xLes68XKHpk<-#v}dJW;(oZe(%1Ql+0~q(vdk!o@vn@4MV-nXBFh z9b4Q`r(y#L%9x^w$1{$}j@D|IZ&n#uBvc(jKxAdJ=?@N7s~MR%A)>KZ$p^C%@hTKK}E?2UFdZ&d5!=W!*Ew_8gg$3 zUy4FNM1vCLEF!w#AzGgD_l<_8mR#D+yGM-a1`my2%+?0S|b*{@xh_mBH(YT85r9fLvs*N6_mIz#(0KlBwv{;aju0O7z~Q+ zJkjmTM2Gv^rEQRXo}OasZ6vKvsdIeY;`nHba-Z)7A2O zZs%=E<`yR=00NgQ5B}nB6vuzj4}2Npd)q^l$c=KZ5SIgf);Y!oN-EpKrHBv$=c*Cs z+8JX(rz$>sXfytJ(>F2+TMyPpp8r%gWuP8&6I?2g_pULLuW=@b_&agHYB$GRSLf^< zE&+i!vIyJ2rSBu911uf=OyBOi_q8`8j_*DDLb&E~{)J1qFf&2zKmKdT$36@P55SRw zaMv;HU;7JWpZ^R83&#iJ68Y6R(|YOE;10p1Xt#IxX{!?MWd}RQ?6) zL4pX%V}OOIz=XOk>{=)Wtl_dCf3Uh7{jtRF#P6@JyzjRc7vA@~%S-S3{nh37esOK( zk>6Qfj9xDCpoNm+v2g)G2}+}g_oyqV1ral)xCyM?G(L${&z7A-ML?ix?WW_OES1jO zRjG;t7W0%)x$xs-6X)&Ybs zOOH|`;s_IrQzw=fQir~{8V|lPyU(rkj_x*UlnHIi-ZRoCGKhddSe6be^pMTq67XKZ zLOhc6!YJ%)(?>s7-%&BhCf4*`6eA!aZ#i573`FS$4pRzcH(=m<`B<^oL&WX~mjd`e zkVEBEjA^s^P=;R=EJabiarRQZHnOYDG4tA*1OovSZVfIseCKr7D|StAZwS5_0^mss zklwDqWk~y(OvD31gKQHrQzgI?U@~x>;XWJ2e!mTHIqVF-2yIE z5j+3^un-vjNDQvqr?+r*xH)gPIC*UJ+y}zojiY%+Zp^w4tSV7!76PHF@P;+~oyfA% z&91A;?*`zoc2 zMB(zSZdjv)AquJxBv2Vcvw%DU%tqL^Kx_?p7&32!*Rnnryki#VSW99pMg->yMy{)? zD32myq39z5)_Xl(A8BtkzM3$f015ykL8M!Z-&AeTNmNfM&RE8{g?*Z|XyC z5iS7~CBR}ZIPrKCMGy(FvjehkT$^%N+mC4B$9M7k72#BMS&miJ04vgAnJxxFwo+ZY zoFGx(INVqS@@+t*aCOrsG#lVjfXo;=SU}%$xD){aTp~~j=XM1K-J)Xp3hX4g1dm4! zlnBPlOIx<542v)rlNbQa{YY`PIj-kc@P07t;@07E+j7Z0{$fF~Vi1XL30zD$YBLt0 z=$0;;1Q{AEw*0VsbD+F+xI~6O+DF%Yz>I@%coWs!R@mAzT>j`A6zyF8_N&PEu4*=L zxpDvJe={4KxodFY-#%hjet^|JVj~m_B3m#8_$1_K%gP%)&$E?)3ZUvSK1Wp{Y@pJ> z_$3gf3Vf@S@QLLM99@0-7>DkE1xW9}4Rr^{_dWH~bC*v2-I`#+nBcnO<8-isU49m0 zB1D7{;A~*{e`EO1+C9c<5k8F34a>N_j!#4}A~#7O3dkL{a*F(}&y$QErX*HwdE+>r zWUc0>zi4gg#T**@rm*+lj}`^u90UPk4P-f)_uP~A_|T*G(meAjiF4SZkT(PFTb6gb zW6xWeSTsUab!)gZL&x9bIY%!o^J348w%x+R0*FB2Vc%qx<3}bsL154CG_H}*pFI${ zhcBi9pb(aj$|Ms_rI_+`)f0%p-qe6au>zqO02IM_j|e0xJW{Q3goJ+?=d6i^yo;y< zV;FVLPZ<09W@|E9u7uOoD$7}lHHO2Zjjh(#?~lyu<6-dlA}~AXRlN7M9EIl|k47&} znBehOd+o;MG^HnkAOy0*TTuk3idU!u_r!_6|MAI%MSpEy^Gpky1RD%&Y$y~R&+K<+ z%bM}%_&pQXT&w5I)q!Cr0}TNe3BkRiJwaACnPaG45hKVZF2F>f$Orgt7fA=hkE+Nv zQEY`x(-zV_1#|-|D1yZ<=eTb#hVo%^Sf(p0JMMwd%{(k#H@5Jw2>Ye!KFD#$<2Y>kb z!(aLCnNPP?np4~T&(vrsxLS@w@Ctyahq%OeKP*03s94Hvh!xo+~W4SvF`Q*rW>+!M4SE}{$tNR|GxmZ0^ z!{rWSqcNTd1V2#bo}MdRedfxE-Z!ouV`YF~wuMXZ*pqd_!;N!0!r3MUJ?e9G(1o;* zh`FtBIfR6b!yh&nKszJ*-n{jzgCpCitrW_gh3>J%*`{rp0ztNgOD9T=gzaw)*i^^Nv?=mQT9u08!8(>oKkXJ4e` zn*;%<=cbsd-~z+ZhT~`ZCH}_)AEjA8fE~S;YOh6c={uOt8G`f@m;eRJ9=<;^!c%iE z@bL@Z{Q&oV{`8$NI01;p$KLp<3)fCulJ3k>V+^0RkSpKB;!#9rC9sm%6+SgxC;J1n7zQ2S>)Q-Yeo?URkOw ziyZ3aIqh_S0aU>n!&t3CppuUj`I(dBlT@Q{6<7nfGS_s@gQ!A209CXUGd3}{C48?e zwGPjpo}+i+DinrqC6hu_lu$o}003I0QPGh!Tf#Ri!DLld%9Us`i2(qdwRYu1y|Hq% zRzI-X>xHlNy2l8@V6ERJckaexXvHvAs}dFY?2)9@9jjD*XyhsYKxw3OZstP=&DHN; zIn=$-!5GWUB3%;-sIvI{JS(kE*idDhI-vwuEM62v*InZS!HmbtVx+gldU!Fisd7w2 zalIb&`j}glT&{<$Eg`|-uo9rdCWreUi&@U(k0En1djCF5J-);+;d6hWz1T9{+1_-2 zsfT6|mdf}v1Kk=f>m*E3$M*{IE3Hy|-$V?gTf#?T7mKP)L~RLKmy|#Z36`GhZ27%W zaw(K3NW`;54Co%<5&%j`Kv)kJ0k;Df*kYkq(@u^Nvn>Y+;9^5CT~2rO1uVmhG>5^t z6_c!tAXpSdBm_bryX|l(BIst<_6N9Yosv0RX_&}1_XsXdM#EIQMTue)$V5Sg#OGRI z8i3p(xD>&AgQ%>Zre+M+Uf+ewJ3D6K9hL$>?f~5vL3Q-m>ZwniF8EYnN1v;NQTAai z1~jj}h95N1{ye5~2oscxk(s-5tsgk}*=twCw+sH^$`2@C{6kFEBgmRqYtWzs7yzsY znH7FJvYdMTkK&2xdp{VDop|a_-S|UO_3wUsZT08=iFZU-pQ6-1kJ<#m3@Zf*!P;3G z?SH@>1m=fe*?)b7-drE=EJPNu6(lT!Zt;P%0zfVSFRm%G&DQuzasJ0X`tZ!f zQYERwxbYIpTHc3D zk%gS)g(d#rQaZx@{(~oG>aPSz)C3d|D>6G#sqmpnWgf73r9$C{z-mN@q6lEH)&3~e zOJ@(i@31b7EgfEcZIz;1V3S~dMI(ebGS_F>K#PnrF?C{MVoHRF2!i0nWA>E^ADfyV zTK-Z})bv+-anW(dn)6NRUh85bdz17~$$A~=^)Tip$>m1E*}|71JA#!3TBLL&BPOIO z5g<39Spb7zu=u$y{nwT!&B;;c3k`}iuXg5J#`iRGsUz>@n7|?-K!hnJXul805SReH z4wsWs2Lzmh<*ekr3yrbaHqb$7U){Rd<#iMCBE$%H;dvHMj@cG2H|8nh1T=u9&Eaxe z;Iw!SR$>}s6|)mmD2S}(C2=0G+j5Y{WA;~&@{Z@P)q7Kj5QrMwtP(AELB>!#B8nxX zAVSHJy-6gutS5kq-~f>jL4lzLARtHE8MDsMA?|zYFF@>Wu{|rCD-!BKz9c z-aq)gKP1c@3W$0{AuMvfEM0z|m||pt=+FKnzFMdF@BbP4q4!bxnNP!D07(M>>{sYN z^*uiJi@#X>nGd|@TUax<`r->S@>{?Aq42)D3E%fV@-Kaj;`tYdj73!u5ik~t0t|>k z-l)PyKIm&7_~17P>>`^dxz=nx`7f*QIFgT1>ys;Eg5Lo?FJNK|%xS!RJUk z0?6(SJXHu#K6W7DL-$U;IyyPJ&S&Pza{Jh?eE-@5r`K|@27o|4pFdLSeB`|+o&nl> zeX*Q9J$LxuyuS9pat8Pm>92tI)E=7P-pLX7Gy4yI32QyTwW}+Wr!TKQ_MOFCI)#8Z zBx`~zkjf;8VPhl^19=Y_tb#F!DwvpBxxw+#i2L_dR*oE*mH26F0kX6?%A zzLnQjYQ1Z{8!Aw)$LY>GO-!c=2p$DMftY}@gaicF0S)B7DaubyuXa|tZI>28R}Xsc zrL)+&Ktz`(b& z(fkKX6E@$Od9-9P_ceO9p3Jd*66acVV_zRFckC=u3&EiTzWty z!cwA;5JLs%Vq|rAfEq!W#Do>(SUES9Xa(?l0SC9(o05gptRJ7j)5b`9U9>peSI3SR zwCEtFKyDXY3aADklbJ}|0|3PPUe&N-!Gj3ihlrVKi5UG82A2ZxE?n+C1#cf*7Lu)A z`&54UYlmd%nZ$N45JfREF~*;7W%Sz0HyVZ#g4x9RxB>~vcSc4ycKN&f+}P0vIQ3&n zQ2O>A@EuhfP13P{@9J0izxNmMNfps8)NW!BEEQ2+C^`PWg9`sicZnqX1G2^MV)lK| zP9FcLA^!9mbKUHtr@MvyUdhW`0IS9`iov;T%N-SkluW*$GFk2|>wDWlbLP9> zjVAx#kEn+w@-QULQ|!bT{X+-&dM)BNGbLDS5njE9|A+sa^rIgmI(`^=`6c+&2O)~U z2&uwE03S@dIo8Yp#0$%hq=ln1HBR{-{0~^~Fn6C~Ff-n59J$-MBBTB4>%`Zt)tR5i z*nqIzC;Q@8O{ZG=aOJTle_vojw2E|b<%us#et03NQ1*W4yw@mhzRB9RFO#kns12?I zhDY)q#5E8>*d<&dAm9+bd^JN^xc7sKj8Bc81^^fvuU$FW2#%j`<>edaZ40;*2>yZFLt|E{&vfeDeK4^D|1mUyy3D=Va16y=Jwoy(V(r=NR$?vdx(BAKyZ zK`@YvBCt7J4tK)3IUE*k?mJKmC#M?oh)LfpTmp!ZtD}d<=4<=w zBWveZk2lXX%Xv2^Yv%|#G8k$r4MWH)@T}2C1q8tg*rky0o5iSiZWON+-2xD7U@&&5 zA|1k|0FGji-g&qj{(zWuWdeA>EZfNXB3@+b=%b^5w=B>VYnh#Fq*S>Qqzwie~g6?_5%Fty4LTI4X%K3*W ze5-CKBbY7jcLBtC!7ue3AAb1HBga1SvMG;!>z2p2v0lAcyYg8*`>Pc@_bmS^kNKTS zK;0{dY`+5px@vi_AM!U!IhCLw>t*~P+RyoYpXS*Echj%c$z6^SAyfd}-4iWB4wx{+ zo;^?SkNz$)&>z6UB7EiR@Z3xIi3vFaZJo}MEw3%L?L^PaKT+)Z<59i_7ti^Sg7`mj76a zIeY)*+};4XDh0pz#J(#hj!wP^_+3B$gEaadzkcqMr#k}1Kz|vNb*P^jB|bb!;*>vg zU}n}WbS{1Wm22;Psb}e_Y#M%>s>EUumP0D5V4?ucN~b}-hJi#k&{y| zluB{)cJJ*XcQdW|wYYz6aG<-`vYpeH5btj`y4e724nsUP0VYHQ#0Z#;J{(a{uZT5> z2tM!On`_{=G6Io3ow?kYH%to14zQ}Q!5D}r!qysy+Vzq?BLLtPB12R$1eeyR`IwmK zMti#PJC3hfqL1!hlS*`HEBH{T_@@_-`%7)WtgEFWL_i16H7U5D&=(8H2DmhM_K9$h z2xT=C0st1liE;+VEHJ=qp=MX6@f^W08bM!IIKbah)O@H&=1yEHD%Y~AEH!wesS zy??ZCN0QlHLPafmeob&nFO(A zROrqToS zM;|WVg-d|ot%ggV^&ae>|N4i6OTR|!TKJ%Ztgk|@P_IY)2ki{g@_e&yDFJ2^^ooE% z9PqCYCV%kHIo@yGAKd-pKCDf@2z1|!2wtJyzw+Eq*eicfvh7zewK_l1&UvwuGgk?T zw^SMot?FucUM&^;gMs0&x4axxxat<@E&T?O{RCm@qa-#$eZIFRT9rryj6t7yo}!!c zRH=jvx_sk3k8$+lAK{=XPsM^WhOpOzz{380m|yw@{1cDDzxp@OYNOx!KCV8378&~o z13oC0^x8rkT)TE(_l?)5!wZ)P^MWJeQ)`W1_?d5PHN!$0vJ#c zzH%j_RGPo%qmRrCg1}w@*f-UZ+QMv^WYx?=JR_2uoo_`-E%cF zU=#pR5UT`@1Q0SStaiKO7f&xtJ=+m-xfw1Qf(cuxAU%R^GZ00rVK!A*$;0~w*~E3g zysdjX2<^48gX3_J`S$bXQ14u8+N#ncrz1H68=}jAhmjhLms&w=67PMKcMD7|hz={e z%wrQn+(^jU83_2n038DC9feCHfqc1 zGsdx`!h$$tSdR$;MvbAS1`rAvcI8lv3U^DuVU(7E1$8(SBjAC$1Wbrf(tt<|sr5vW zbvsGR^R>QZQ0xeog2HHwsmCk3gbFE^dJUE%95I1p!^*Nife=s|`UqtVC{suWp}S6H zUKk5n#S$R|K!U}fc$5?;eGDCp6bKLiD#JMDemF=JumX-I#zkl+uTToR2)kAx8*9Xu z0(6if7`$XaXVd53r;05Gh#df(#JeCt8o5Z48&mE>S%4nm4U)#-L$5s%NsWkrdK5*( z;?)2ZFH$ZJ8F zV|0L;1lh_32@o2g-OBlg1Ld3bfHGi^&4c|~VQNtDAGP|NJo*TF^0ON5d*Tm_aOGCu zGHWg0@2`I4fnxTlN=eu7CPqXEyyvOajDJ{(hz!W4aJf+mlOuQqj1U3V=imbdGoK_l z@d;uHP%U;z!vX--B3Xw2Z~p;Yn*(EEq>lf00D0^%Ce1Jcfe{c33I>mgL81`-!3*fG z{T4Dv$;T!cG*|eG6nwzM6bk9Y2$Bv6R@>z7e~+(y_S4Tut#*DV5E)#)_(1S@_W&qd>E-6yNB(t4wTNQ^?@>S)#*tqA)+Gj~*N`M!50|zC=&i%0 z41Z9FP(HaoT>1F>?)pv;S`P%TzcKgZzj|SDyh8v2DBP8J{|g^H^xVj3eRh`s*7)*w z&pq)+SJMb1h!|)sl8k#A4;(~AkU&Vzt+2XSqPr@%;lCrqZ>#_qPrRtCW+;AJa{6$CH>0_Y|iP5>{0q7-9RqsOPu zn(fct1@4Wtqy9=8!EOnc02+Wf+34Bn^4xBqLNix$uda?u$5WUdMrSb$rQZbxWD-ja zxv5_jcN5%N5CaH;;wezNK#EEqi{EUs;>99Va9Au&47v_H3ldCaitxxtmw@&jU?M0M zdktC60`PcNu){HU>t1l z!WpO*5xNu!`B2)cpo}?V%AG$waQQA=0t9cJ1(rWv%zp19!TDdtm;#jqk?rqi?x9u> z`Rh`!uUYVK8X>VjunBBcJS-(4|3E_i#^o0{)w?KzEBF35(;r+k)%{E1*pU|uWWZLw z*vc6os~3+HD{tKG7k@Aob3;c64(pg&qAdGrA%wb}*1D#U|UlVD-#3G00*hYvj^ zNsG|gB$G;FrDUTyU?>BMAs)#Da2xtL$ACd+H zC1kzia+@=lTbIkQ3WW+UEv92f&dt8})ZGW428!v4^10*naP-ABZwLeg<_j^eURXW+ z{?Yo}ZosSE?2cW|BofsdQnoO*R1a1m2(Uo^;sQ(O*Pt{8QDq%d>IVMTs(=ATDU(P{M1-RB$?22Q zk^vq?058faJ$jN;C!s-^NFqRST@M%9K6tErb-VSm`>WUd{_bJD+6A%0Y8$}M;+Ff! zd}n_!T|EovX6?n(RqN08@p*=@wW}Yub%dpz4Qv3nof{|_y2^>hDq_UQHhwDcooupL z9S~qqk!=IJN4FQ&h`tzB^8*05Jqw#xah{G6En%fTFU9qmQ8u#273hAlTtC z2?P~T3X~i#9V`Qc0s{a;Xao?!5g}3m%BU!YCI(P3FuZ{T3~>1>zDSG-5(D^Mf`*eg z$h_?bxE5C22C21RP-+NeG)6=O<+?Resy1aG&euXo`RAb5)wF&xajb{`jhlR*1;N;|^k5Hf{oE#l{V zPOX#k%e4?M5b1i@LWGjSd}8?fQspnL_IN^{H%0f%bcd;FnZED-!X(Ykz`kV5Q`Gn0 zCBAU9mo6avYvp>$JmUK;ishF`SVM~pf(U=p_?%aQQpisNXS~uehDdc=xCCG`K$HL^ zBcA&zzA^#(A46OQ=(ccqb5E)|%*P}c()9iRWzjDl`y|LbzvqVd4xFja|Yk%1$`}Yk) zFG3I|6;gGGF$7tj;k5kH+UiGsH!!6%iHL@h%k>6QSs&BygE8RK>ypdc3YWt?fony; zcdz!w$0pi$O^nxG8yTxF+FI^XS%bQJ*l4w~I8c12OKLD1a+!ot~w*65YxK4L8Z zqA*jdl8shy0>0Cwf2j@Lf*T;49{}0jpQFnVm#v4S>p;7iuRHHOY3}YATmlq%PP*78 z6tgW{Dvmkn(Rp!4-yyC<&KqL{k~Iqs#LN<8QQAq~7*M9U3Nl8clx5mRho z;U1|^W9VAwf((mLP)dl@9Ebztc0$*?aQV(p=B-#nHyBLh7yj_D^sbOcGd zZ~UVVlxBbX1M$L_A8}`Xjd1=CDY1eA1ksjnS|@NgvV5+qWD498Tmk?l!T27*`7e>S z=RnM!;1VOlvqNH$v=4(mU;yx0LFMETf=_$^5uyCT>$uJj19;&jWB>5WkNZFT;#l!Je@J<`i933j=*K>uM&sk_STXH3!_MqwOc-Nb zL0T@CzTR2>=x-#Z(vQQTT6_~!aR|nFFb3ig2oi+dz@_XBE{8PC3rjhF^t}r+Yb&i$ zfCrCHyfz(rMFjv=;bOhqlTnMH~mB(zA8 zLVpdxgUBx6(tt~m!5XM;To+IyEjT*g_Mk0)>xy1^$rsl z)Pu*w5}{*J+=0UA5?)}nfrL+gc8LtrtsuyFC^Ng5qldcD&RF(j7*KW^TgG_DYiZ;WH^9*CA7x zL`BvO%m7w;z%s%dBD28k4}XP4gf&7*H!hP19z#JDWE#UhjMVT9Ko$^M7-(*A< z^izbZ;{D~i_swxMtE#F|#Q;D2RrLnahWBeD_{$YB3s~bEorgbL@B7A+2x138?3lHS zsy#xiqAhCI9@P)3YSbonY-+aDtk$SKYKuLqC~EInYVY~W_xCTH*E#38pZmJ5_w~ag z-?odb=3txM{DtF?(Q{i1y00yNqWFNtodsg`JIH2O9tq9qvB&15!(ZRWeGY%GAMZ~V z|D_wOa0(M*M~jAP@*z0zt(!c_8yCU`JsW8*b3Lf*@g#~puc8CRCGVeehyEYlzL#htvA8AZBJzsAe3Xrn zzW}NeVva4zz(DuLt--g5U$W7|f(YZdaJIP2du%5!W1@3%7HRt%;haK)1mC@I-)E(% zd(!VF^!UrmBLEiv+Rm=jjx26tb@AEuYc2-V76yMPT(1_og*G<0Pev!a?Cd;#Qx;&K zT5XI2-E5`0L^=`d%|0S@0=*;lAeMJCZ1Gx2?{YsegaCQ1XEiQwE<8FOd*OY(_9IJ*uE~*?icnaVgGdqd zgqagCy(05A+$GWz@d__l*8w3uy%d}CYB@imWRs=dcdom!+v%Tudu>-;BZSe|z7q+5-13CZMa7eAMtfPp1p(n{|-23Tbd6OZ#M>PTgA(xVLFu zesigC{d0hW!v77PsnUG;_W-@t>swtxexv^D8&!6{oi*MV5%5c_-7D}>Fhz~;)eEbH z2eEvT&h$bmII~9Qt~k)5ZHB_!-{wpR9YH=Rq{R&~r=*m|&&_(%l z8#(ts%=E_DoL06p9dvV^4l(`3c!0%*hj##9e`OVHWbh zMPliFvQHY8qH%VP1EbkqbrLHYn;D}=NS7VZeZBU3`e9vRuh6eK$GKMqW)r>Ed1WH2 zPi^^L^o(D_D{>?*y-r?iPdXMdG z-~1B?$Xjxu2s;hu&?~Q@KqkVQ)Ax#kFB(#MT6Iyze!zD0uBd_ja)la&wZbJEn4);A*83u@Ehu20 zFkwBNM|lN8sR+p9bN$QdZTaym>$wzG_2OSE({TF*xZryKGyVp!_sYHEevF@0DBzsp z!`8Z?D!WkQI^9ZkM&0aygMDNeakw$zgDL zy{Nu9vukqH!}umd8Ib`1gBIBSqw^UYF+&mz3LB~TM2}dYjut%XlVe?qScs^FQw32D z(Q_j8a}J+L-U$OIG)s-VaX;81Nz z1Dex{e7Ee*M}u||4dC`C^bdi5;i_n*_pkCi5*YHV>;5#;bjq@!j4F#sxF!~O5bRcl zTK+$$w#!7#y{NR2;_rs|a`+0vc~W*#SMu>ho-pzNym57MFN;?0eiNht+A|6cnafHa zY_E5=Dv-SM_w|~i-Is^kL>g4#Z!HGR1HDU(g;JUC>iQTHQt13cZAwraz*VCV)(9c>oR$&0%GH!=FN9n z4KepE3LP~vTeVVai$%k@1#|llWry!`sQAFzPx9^psg>wWNG1naC{1|`v81gg=+Qf^ zfJ3T(7MHaVKZo?n->q>{nfPdukeYjQ6tS|^zl>7F(MuwWlPJ$$IAfXz_Xpjr8J3~Pr>{>ZJo@W&efP05 zX}c(d!_dN^oMmSt3Np0LzFGDioV2QMmE?|NbKOlRf5?%DaehVBAIHS76L9=78kaAk z8?7e|p$&G*Yia(kbphxMpQNbfa*rls6A0Pj*2?Wtg+JZ>Yyj-9uuufgoEYc$bKFUy zSBQ#%zvG|kWE3~^vHvuyVWyb8deM#Gcm;XHw{$4Rv)uKYgY~LHS-hT8_oOF)ta~g+ zIa;2coPGgHs-&hna6+HLhabQg?a*x&p#@ESJ4E;0NK}?&#`-8G_NTII+DE>&R(wH8 z-@-9h!)uR5Da^Fb`b&C&0vj=n3~7cRIy|~h4+iNm)ATGroCF)SOAO?!30+P3N7n!8 zlBblk+lh^cxz3JzP!6$JWZxzYx06cwyyR;170nJ01*@0g&9W=Cl0)TaEWsR4-C|<@g{g@M-pUSnmsJ{*B zQ-n#8y!Nk6b^e7GGmESs*9nZ+A14SK#=6-EfVzbUTPkmGlE~%%UeOKm4zAC&`afT$ z5p^8kD7eDj`bV5g7q5pF$pr%|cQDn#txir4kD_Rn8DkUfHRRfO3Absvlst^wNL>EI z!s5Qk#63)52aQS)ra>&*J)V3zF05=4-%v(&LRkXg*M9;j<*x#UidJE%ND8$NAYfeC~WaZHkI?&U3ZvvF>J)pk{G zKNfiM+dcTHwcG(`S(6*3gd|g>>W%}}(GuEy{p596! zpUFB#gpU)QHc#Ibik=6YOWw{MhC zs@<-vxNcn_Gl|H$i`};@e}xQpLtkszrch0BGy^D$MTzcFsAjTs2V7MNMq%wj>LOrm z+-Vx2c?M3SO(f8WN(2G8l%#^G-pH8!;u(NJFpzK{bd_t4ROrVB9}PHugmxlqt8u28 z6k*+D&F}_(YM!54A_u7D(|s0ODV5On)P*+?w5)q4hNFCWKaz0&<~Tn_qWj$p>Ezmk ztGD@@fcH*t&5eWY{&@UY{nsc84yO;FMhO!?KK&j>bpJQ&*Rh3o*3yoql<_wNtYQ+4 z>->O#L4TwN=wj5KDx$rUT%^ALvG9xR_y!kgS|n4!rEYdJdi<`ErtX&>+T7i?VQ%B^ z8Ab!I_VcrEB#o01w=6yIwF}Cl2iXY3(x1B5LL$VR*{Oqs?)Bl&qi-?!hZeF%=X zKO$NDF&8cSR);pMn}!PKHaCBN1%x{WUfLJku3I1ijwrwA5^N%AXxJX5&dDsus9zS0 z3o4AmZwX?17$pW@X_dD@l{W+C6$;agV@b;&;+gFYjHh`Xut;ZUet332&93sLK@VQvFb2KlWQZeC8u9nIn&tob+ zs?|e@0kUu=qh`_P;60C}r_&OJ)Q_es-o6BG9-Ao9eM(%mlcYDg49(@A}0fQy@OXq~z4C+|j zzD7R)EF0*L%2-4%0m%eCV+n75eqUmI(@VFC9<)LlGv&k zBM5}NJ0Pt9_OLa^f1PH4PRNp6t36^NzG2^)6VfNcJn-$;kp}FjNq%!PlM2k{JSB>| zah&^)tFYep(FLCiuqGLr&u9A``~FU|xC1_vzX-^>pSs@WWQ(MQqh$$CF~ilvGZs}U}dh(aDL8HsZ{yM(1$_z^o1K(V`A=94zN z^#{Iaoa~FW*2Y?IsjEf;?VbRp&teO47;s9BwUxei5LBAJapG_37VS^zW&a+C9%mqv z(htWTSGT#RneQT|O3B`d#y8FIPDi@py`DGaU=Spf-(LCceqD{J$c<-S))hCPrId|& zfck=krsqjXLd8CCkJ$J}&5z~u8*#uZ&wg1*XLcSe( z#Pf!fo)`nc7g56Fpam%Fm|$uuP)Ut%mRzG<*-0NKkhZj1R1i>4KB_4%rmsq|R6&~2 z?b>oDYrbZrJUA)4zSM#eFkX2Cwdc(GjL-o`VeV3Ts;I;-L|!&4aaSfZZy3O#pz>QJ zXAK%}?HS%Yv;5fkS^U15z{gpa7q%H29Li`JNLr_(j=rlt1|&ZTxv+qD_Da()@Z*sV zLoi5rr3-`EW9!$2u8cSw zxKVJ8=7^bM?EGLEL#nq5pl$N&d6Px^{ol7%!)D40$2>=@cT`7Ny(5VPE6g8gAXz5M zUUhvJL5!B4)tc4xb@nMkt*u7WpKV%-iH`k~y;Qyn%f4m`Y|~xYvAAQO-uDYS8k7BC zm+*CoX@$m~6fb8*Hhcf;P4K7R=dp2t(URsf&puZLHZp_-sd()yAE{P#3`X-V%Cz(q z`2YyO2jWXZPJj(nnP!!S7&+^04K{+vDM!}F4C8O{$Nvc0sFov(N zj3N|-F1x2z%p>k1wvdjo)H8G?dg+ z;1;6#mhKPghpsP|hilJ5StW&oLF6sKG}2`%z>*xlOLy)OH%alX64X(^%5$@g(c&x8}WYe~raQ_1vG#?x6MtrCb| zP#-f6K#c58{M|X)^CUYM7?2ws=v|uG)>yUpnD94JRMvbq^p#Ms6H!`laIG-CJ?OFy zx#Sl%t!PP%zec;Pt1Uaia#aUb{%b@8XvzAc@+AyFjH_K?X@8;CwX|)e0!%23N#}gb z&7bkF)t}g!IL0=yQTJ6Q5UU=wBCK~X67 z_lXM!+Q#K@j72?DFD5vAALr4FmWWjKXB(fto&F+6v1WzL=etR%I`~0&(1+E5WzE66 z)-XSF;Rr~g5*5SnIB6Sg=lxTGw%^Ci3$Cz`V63+iKb*s8X$5;2R;36MCJvsXt%rfz zm!epN-mqDplc%AL@D`E+)_Fg?^^bU+kiYK>I<^m>QdL!?S(WqKq|ZCHKU7q{8bKW_ zp>6`~LVp`a@fxbLHaBH|mY#|209?-;b8Z}u{?Ab%UompjF z$zSR0eK_2ut?Yviw39Aq1MDLT^#DMFLwg_D_zyCCa~AKn!p3vRzI=>iL4 zQozrH)C0GO*dQ(FWBElL#|M}~Y5uRDINooKr?Egm1!T0lR9kz-n)qyl|5Qke9)(0T zjk4gsX2AJP-WInWaC{1uapdI!fvQptqZI-C=mmEJtx&OJTs6VaS9n++=M!~dC%3I1 znm`&Su8jrJxeTe+Kdv{TwdC#pek&=}T z9XbyG<_$}BhX~Eqv(HSb<2Mv#RVEauFQB@1=bsb-f>bQzHE&w>*(6WOY^Hws6L$c{ zU_>Azqfk2Y@Ma`yL&njjLS)h7t=oa}BgS9Nec7dduD;#P{c8Kvnie6PC^Vxyi^UveM5YE`Mpr{4T1EX;Kg{aw#eKf^92R0dr7_Ej$wUFU-`y4 zh>JMnm~8Hyi0%SUA+544#9%ADJIyR)b9gU~Ak@#Za!EVyJ1Hr^(Y(HHj$&Vq2yNO_ z$6)%`my%=2O4?wPJYirV<)TVq9puWQ3#N{pu#6CSC5ske6j$xk%a(-yzbdab=#dCF(wsDXrFH_W%g zfEz%1`w6TO}iNc-`GR zL`sCp+5|`<6#et?#Nga#I!Hi@97c!$Gy(oXfuPDEW(R@(Uh|DFM7r?)z|&ehedoQy z>*YvMP0Wt4t{{eyH@i-BTIYH#S!X@kA&m|yFeAr0ZN40X+Qub5Q$)C^CnG~wbyHjUO#=2XC12TMAO9|nLx#RR;hh`sxHpL<(%q2?Kd#+5YCg-(=J z2`_O?v)aPIDaeSNFP4t7`S>K;H&x?P9@_hWrSMPAB5QF#>ot?J;>~mEpIfK=)#uq+h214>2gYMj4=&GsgBLI5nJ%7acQ=8g{4l#%&gBN+)tqMf zYVXC;1vp~GW#JD)nz^eA@822)w&EVd5Sh==x>OK^xMr8zts=ZV;E6`{@rj5!90kR@ z>ye|PMvIVo$ln<(yUOH0@8Z#D{zDI_)ll%jnUx~^D)Uii%FWHFTU9=J1&Q*o9Caa7vcz=b+=Y4~f5%<*4bCR~j+#@st5J-m}j!DqHG7ogC~uK6q4wYq%EUzORc$ zG*AH|N@|FvJ5QI5u$Qdk*aJ4Dt{kUtc6y}Y#hl;A=3!ei$0c=*!r~5J2X22(icT4R z{K-&C{na?Ld$>aD81YtQp$b@ncy@P-dHE1|p$O6D=B*XF- zx$K@(Ql`8TJqjJ=yoKuSd>s?R#qX4s$@ux$Kts?h;o48^EKak|PYISGOJfJIOGqDu*(XS4?bv0Kfo6cs zANU8?p+Kih1X>@6jG3O~dl}T=1Ho#}O?9DMvz=lcf3=>F>L8M`MFq zc<0uE8*Z;_iHF&Y!^>(ho#=wO>2>u|c!(e)pTe=XFzxvY{}k&zryf7X?R7)wf-mu~ zMbP`SG5+$y8+-YlKcJ??#`XZ65z7mpsE(bS*fzJ!G(>MFohIJ&Z%}0pIb~2YE?a>h zsMUs9l7dC7gEMZP{1xmh5Y~b(Yfx%SutcvYZ;@yI_v6KEA-AdNUwj5I#8PG3rVpr0 zX)8g{DDh<4oyYbCwBd1m7r*BOX?*6VX7->{PX?i5vGbN%`9vdZIll)F#|NmTHY~|I zxOE6{?Bv=yEMtF^G9E<@<6@%tSnrwlf;@l1yvk1)H{-n2$n&xF3IecUwUjj6oo?y&SUB7-K}51i)Sy_UAvw64EZ*Vu zXDPkz9|q8&RDVo_U!`Fr;}iN^2?2c7Jny0ieFHb7bM%^Me!O~6`&+Ab4=`Qm=@Upu zua(Q%7{{03_B;uZk93NRR>HPGhE?PVP=FQ6ZlQCnEv6 zF&E1je0(MFBp(S#%&s#DLq95;4(BU{tN|c+2~d!F`~%p*90;6;*fZ+q_(os< zbD$)z&jDo75wpQFzJBVixbc8ibHPAx%H4yV+SZ5DK3c&}j_I5kr(wFvcIpmG^KnhD zY-9+04r-N33PH2g+$Yh3WWLYbF_L74e+D>id8yx^y5D>{0zph5^oGLB=b5rnXX=|Pb{ zjK*^xdnt8sK2F^d&Os`>c-aza<7p?Om%?HC&PNeOOY}pY>a^E3uJv_|Pu#zEF!4NW za%_1wDT;LxiZYBh?#I(-ooBk9CYaR74}CcZ0M-Q!{?i)*MfK{S*C51wU)8Okq_0Sb zDnaxFiid0NMC;PF3x(gb$;C1SJOOPUPCkZ5ZXw!wibH~pmNSxzr4wYc4L@h;g<9aG zkHI8f2|}*<0$t-JQSCY>WK|^2l)>gh7*9WU@Ln-&ZnFptQ0^w2Nsf`eQeNZ_X(1hEJ zP1BeLTQ*xaQ{g3giskW5cqPAwl|8~v(OWKZnnpR1qy?i5#rRe~FysaJ=FH_W3!~As z;1;3fBlf$mg_5uQNLS#dK}MRR+c}H=;a?`WE=N|OYFiR*cwuV6fG7~9B6ly&b41*O zxCM4^S7T~1wO>k@x4t>S>UY^ls{kK6|2U4bEI#*`L+(Kz=HM=T2?%(wttmmJHfhdQ zyCpvF6&e9YIui*+9NLGU|9aUucznC%X<;sO$_1}`fSn~uBlePHl4i-o7_u}5ZrDN3 z4Z1c3$8LsWj!g85!~hD-8BJ`ro}WGG4i=SPH^kRH_kTa6|s3*<=>ei}klB>L=gDD+`dr_1#4 zVI8_x$8;}Lo?msEb6U5iCrCG_PaI);;K_U@pIHhSj`%(#gZYS}F`O!Zn@82#`b0NV_2X7i%TN}9Q zmB9tUP`s!l(sr_2`_#d7-El%H8?y?2i**nwQ)_k*M9DSjl^~uhbcsum8fp8>h1W=V zH#}|V|Et3Hl82a$DlqFQo#n&Bw;%88)E(~2d%$fkLlv05YZxu{C#Bp^u`hqsXs0+J?_s6ABIF4Ru1WL2A@FFrZM&-E} zmGWSvx=b+ELp%0F=29Wq(}br4OmdJvua=vBA>oK1{QbmcIKxyZTVqv}R3K%HVs!A4 z`{x|0eB!X$waL4KANDzKLvMVts%h=(DnHPTbmVf74eTpuoT}4k0zX=`5j4ilDxz_i zP-QK^Ck|thD4{}B7rL)BXwfIh*1*+DXdY04!$ndy{B+@6lFg@-m34?ZUwqtnF%lAC z5x}2sioqBrBWf@rFTZaKKN=92>3=XKOY=_f}4~lgnrXtTqCz|ujsVCEc{3gqXv=Kv*-EmE1%hQj&Kc_1Z< z1{|eHJ^wG4nE(EZ^1tuR-+?b@E);bfC$_+g{h@CEXb|Y^}GL4rf{Il0j=Zy8+s&$A&1!z$J z-N^fCD@DVqWv*E3Hsu1WGf%K$>&Iz_1ys#v1fn9re!D1bA+iGWBq9VSZL-|X2Szi0 zaoL~my8v(GULX8w0S6v%b(yRkMj%KdHt{;4v}rDZ2X-|IXlx#_sHoCwJigE5v3Xbo zdllwV_+Xk2*0FU(77W>B6 zgfK;Sys>vuF!C6c;IY$zC@22fS0%5dJN?QrkUryGs0!myXrcu_sudlX6aZX^5e6 z^Ik4hgA_-Yx*%{o0$X(}REghdLM?7v6^m2?w|Ul|X!P?HxFQwYNSo2SL_$A&S;VDZ zdJ+Rxc-6v37<#Nxofqv}uZ<~U4QHrNFQSM#g|ImHWandDWWMOk^SA2%kt$^*i^v)b z9T=MptXh{!u*4)2qW9|Bw)(bGoJ3mU4Kon5fanqS7Av{E!%!n-Qs9~DAT0{F_vE#s z%G}E8Bq9&|(e?@%M;Oz`ZTSsQ2>-IrBjnNXn)AO3d3hNS-|zk^^PO1D#rzCODnnor zuXAbqe_gcg6oNapwH2)n2@v3voN4fqvW{-dRvq#I8YN=1#=TvNNl4=0!Aw^qsA3bT zx@d;H#t5qfv51lN8fz2$D&P7!l?X1f~hm4-8Xt7qPnub>KpVps|ec;bxYOvCVFIU3n$aud>NY&{Hb)}DAtMW94 zLvm!WTsg@iUz0_(*hq(B8wwFrtt4qOTh#Ja?2|a@~qu49*cF`5Hj2N_mQbliO%7RRtGQVOEPv z-aTV1SH3+#a@BBnueM|=+%uQi;fJ_l@=*CK`1}Bb&+L+`=Ho^f@8tytcmfaO>5H@1 z!QN$UB!6SBl^?u;uNx)8>PO*o z$}qEMZSEg-QftUFzy*3YH~&xPA&6Wp+&2nj7)7LTRTv$|av?M+@b>XqqU-iXb2%PU z$%K{g)Mm8xiIT#q2ApaCTb5y|CAczFj#14TpO|Dtxot_qSJ%f zy!{(GG520e1VO25yCh2mm~^h^nC$_cyEHp^y%sfLWGty0wlJj+d|z8AM)W>h(=Htb z#)1Y$+P(#Mzo^!JD$oO&(9p6Ztwje+RLSZ_PW^b>)vM#O{Iq#(Ew0&x#tFXE35c>z zkL``*z>+f?mXjZB&R%=h$dc5Xoj*AFInVLa>Aw+3sxDYFJI1cDkkrFGF%)1_sfYP* zR1GSdCC*!^j0TS4-2NaQjd+-?Own>hLPIO;x{0G*ua*pj1dA~VN>m>@o0Xq+mQJDc zt#~yhHSmlWQ=@GJ&b~`&&p$RLA9RIASiZMnwFZ*xEV~x6r2XvI(^kexfXD`{d>OOT z@&hX4754z9e5wL*kQ5LQn?I&VkEa9c)@^^WwEaKImtsMjHcMPKDMtw7sjWaq@&F!E zpYoJm757BOa|8iMrX@6>9U!6}IHi`H7bzX2^kvNOl&dBTGB+jQ#Mb~Wl7dT*>HTC+ zwEn!!(zX2(;{HF_!d<_5dq$(xzq7imWGlBPeeq7- z=cv`5_eRq;gkSjx#4y z?QUq^=_-Z{npV9xW_BG->B16;>Ui#-JWiZKXHLigRj~v|fq02yDlY^&<0pv}?sUAi z0>lQP_(x1q@8Oq4zdGLD%cnexSWR5@q9`UH@3PY{I5bxMVXnAvAHXVq(gziKi|_Nn zb^&{H=#a8HY*vs)KykIQQ1V&v##OzDF;q;Da~SOdO-Pg;RmKBS;YTr5fwFz{+GP$J ztO?|{Nc$#2UfaaIkh-_nR1IwP~tVoTobQ0~|F z|EjneA`!(#cm%?#6$ZFX36Ey==+tW`vI!0K7K1#4INnHw7er5A#b_6)A_!ub0hhCs z^VYpr8UQp8JM9ah{L)FX!h^i;qc)$Q3Co1HrV%TzZ?%O@8tc<4!KZ8AWu?8FFD6Yp z&k}`r8@xc^cq%Gg_U3mi)k?~mR}y*0?&^_5g_`&(XJF1*WgILr4nXL+)M5ka!2elia%wq{(4tI7nvb4`xo0Ts{I+?izw zMwlm6@C9f)RatYhm?+~BFJtDHTtf2?6R?vHbSA2X&uktY2s_zRJXD*uYvI$N04jq~ ztSK;5OdbYp7a9!MVux)(zfywLFzPgHCKSi+5%v!mEg9@WaUIzq#507`(}3P{G!PLS zbegEa2_oqHyUvtoPFkziWy}7!nZkOaRRmV(6W$M?7{4w{}!sdoe)p3kP0{o_=!oC<%VA!7UKDXAWb47X7_YtUm>FPg0HHX zba+wNwO`G_WtXSqI{3O8E}#*GJ+D3s=O2U_)W-mQH5E}u;` zb59gnDQtS&O`pS^x*lv5xOL&iD%m(w*rNadcwOF%T?gz;)Dl-onWolSN*`z$f(8=p ze5wX6yka$KYj_TbJG*2aHFgi5Hbu{)46_IjHY(GlptCFdwtyD1pG zT{tPSGXuz`s>PHa*07rUUgepozl5MHQthn276AXaefD}~oDU5|MbSsveIlTwBoBOv z+fk_)=RM5^RfmaSI)5jK=Ie!v3?91d<0KOaA&xN%LZkmgQrntE?KTLvXq_4KWH(%B zeD|k}t+qZ6{UD&8rbtx{@hf-X{ZdnL@uqZ71&arT>P#1Fe<$>=VHf=-x-~o2ybUkKXpWs zpy-rc^ed8rrz(|(yhyaS;+M*eE!FUt6dqQPcQPXTpl2^3_{x@F!NP?xQi-||jQwfj zGRf@~{sKK+AZ|ipWVlCDkovi5szYeHD)7~Tcss5Ht+0K)DQ@!RKaRFh$H1c>j5J!A z+Goy#B+70bS7IR{tlU1Ue~_~5?`^78w}3j!(-z8pIeiV~oJ@6~#~~7I<|(H50Qb+G zQ*V~3Lh}wTw$*r_XL_x_B1&MCI@FN9+A?e3Wd(EB@B|Z)74R&D21P#Wk*M5)t~ft5 zEmnJ~<+Byir4!?I{}m@@Z|0h|``w_na6Ey6LG>RL1e~Omgy%MDYDC|=?Jj#-VJl+Y zKbcGfm=#Wa?oWT`&-|M&-~npD!u}mBym$*1A3&ddo?Fr_%9JxGGL@d(em0kJw(l$T zMr~7*t8p>`gP8n&zadFDoZpbg{(5hu220ww#*c5pV@&=RKPqOO>BIZ9LOm<2feR7) zK=Gr@mI_-IUrPeO$m@V28(T(+$N1qY0wr=4yvoyPTlxHC`$HpMuRe&VxJjOYpiX3G zz~f|+Nwg8kWS)l5(J+qYP)PYRJoW(Dni+!ch%%*GjlSvG@;c+3;HSOL zi$)z7+^RM0*n%>1+Eg={-O{6Nf!nA!tn2^s}V9VZoCFj$a`p-%ajR4q8DmLhZ zv?7hftl?omcj7r$2p8yrFm5bbCKcz zZ7_cM&M+#f(h}T`l1JAQh=Wd1!rIVBru+06J0ZWCpa4~{#y}E1jAT1*wwpkmz7P4>I2HJK`3e)#RcV>(tu`r-k6D+D5>fisXX+K?XN0yxzdHtnYl=Imtv;p_P_nVi7byPfk>ya*=*g>j zhjv;nH^EmDcrh-Fi|QaK)JnkT&ogQI=()$Q6IU+R{fEwh)m%LNc(G!V+AUqeDtB5t zn5HRZVf5|{yL^FMvgMv-m~#;TnB#&n%UrQTBVL~5@+cwkeeb(6$Ae=|9}jk?oJm&S zdW6gQdS(un#s1Iij`J2i`W~GG&6PiqigYF~1tAJ0lgUSV0j)w)L@FR4Yrg1j>Pmlr z;dim`#$v6^fY2aZS#{Ko4ksZb-mm8kjxwxR@UC&{d>QX{!8PC1v|F>; zO6TM~&hR>o{{EiTbt@#^gwzP#F_hlg-)=O;*b(s*uyPHFBkwl57Z&%vq5QV>L zx6cVkXUq^iGWhtFAZsin2gSh(uI$`U29{&amw-fUJJj65smjtcIz~ZtX-j^+(HMYB zE#yme0y8Ep&G-q8J-adtsv$|9@{}RM+K}K`BX^DQGBQ`2hd2UPo2w-(1~t^?qV6<_ zLbJDkQfDw*MjXi^j-ir7g`ugDNc-XfgiKBOvRd&deT;sNR|XDpF3Uoamai(icSTNw ztVnmo|5pRQ+N4e04uW_fI6<(MNxOrNo6(Cy|Gr^+@6I#RowA8XB?W$hY9PfG(H^5C z^9&t2T<_r9sNp22PAWzmFUAP)9quYiQUm{{p@p{888yQ_CO(b$WSZ?aBx&q9JhUN{ z)ld4K;Qb-ka(`>WJ@5y;EEcmZN@FijKpEi3oB47#to_b`K9>-%CX^TXm~5^rHuVg4 z*~?}mkh8O_rm{+=z60Gq8SQ=T30#Fn@=S2I3EmPjbU3RnHg2pyF7mJDOM z+h)&fzUH4b7f_V=D1U0V8L-mpL)WU!-(=kUB>dmP`+7aj!9KnR%X`^*us;XR9HwP& z+d);iwihLksFnBJQF1$4ivjh!HP_dh2GX7_(zCo~=1+bqvDJ5k{J=bdg1C{Pr>s&m zU~CAWP)!fmO#mGSVK~0PC?ABw)@@ZThc1%&9~WB?Ufj9S$xF`;hv4rc{Cy+w?=EVAoP2!&o>fnPpnbzg{!;PiwR^gJ5qz62DI0bR=XT`5FCBHE@K& zS^cX9mucb(p+7hTfT>W52h!V&t3xO&4}2nO8ePR&?X|kn3w~Y={=U&Z)^*GCDB_(l z3?W{Q+|HrvCK%O6mB0Ru5YdSCB_npa~Hp?7lS-w za&+H*5=S^hyCe$ZR@Ao!E2>Bc+3mR)HtIk65JR2bZN;V{tYbd-w}rRKAm=4A`9I$m zIAdx~A}N3Zk#AKT8CHg8`)AB}y1?yyyEBC1Z`ZQUcer~r0z{5NP|8EQ7S=-h|I0fL z(I%!y$I0Z3e-fox+MkffbOk2E5=kRexVoSKSLUzGs5e-j~>$#D$(<#tBADgT zESbB)Czs2zsGD(TS|<;yW&8WtskqP4AgXd174~^i>A2pCnTC#j!+SLAOaH9+WE)dh zKFDXsDj@=AhUFP)CgeEJeU$C7Jl?NBB{J9q{`^Jedf>sy*uI3uHkVVn@S@wzA5c1( z$l&>26a+}jLwqz~=Cb%Jv5Rcnjx>qg2!VuR@#w?KtZKpv2-C?7w!+5I(upxS*1(Y0 zK(EQtJ(eK1nW>UML81GlH#Nf~=6>5p{&XhYL1}b8?k)KI5Q)ghOw^G$Mg<;DB^Cs< z5e|ZOL&ZUb$q5c0g~2bWFiM<}I{3;X%}a*{YKt#e{cms9^}Vk;{ua4?q=`VxsuwD% ze?PjzTVIhoXT8|iI37K$U9W>Rd^7Z#!GDl(J0$)RZzd!d*mEW#xv7KrC5LGM=2Yoe zhVg(U$tA3xiFGW@_dc*l#csTfFe&t?^*HaSJ|;UQE&U!9lUEyF&vp=r?xePUt^QGz zl9G~&NLKurm+J|8ho~it?C4oQMbr4>`RQkJW=|<86Hbx&pw;u(&DfAw{%$4D9<$df zrh7KT3UiOx1%BsoZHGVlK+K~NTENXk#jYfPL7)_}angnqK7JOhKfwo^aDS)Es3YXZ z1f60O(Z(x^WFQN?zw_fvLB@SV`{%b=2j4PicWFI)*?M=t4^)Nb>L<6;eVx6BB!0^o zeHiqhX$W~UoK(z{3P#0GhQ1hI*~MK^+K6dqj9kZ0jMA1#t9!{Gk4@2qQ1fZj$x2Z-p|J0O< zzGhqEpCJ*YL+7LP$qp|P>dl-SJ|2Abp-~To^MIK zlXO}=xPRGO=DVNP^H=wUGcJI6X~yVc*feP2@bi6qokh$Q{~`%T{{eR^nF}xcXJ1Qu ztSr*?#?8>_&3y^Rc#h*FnLu+hAjZ+6T(v~Ova;gl4;4BQ7xe^N64syaTK4y_pyC2z zIB|?Gd^Q3C%zo}2eyCJUeT-;?2!53vYjC5qHMx>7{#^XjEkZ<9LS5XG3jz)0wJF2f z!0nZ9odY*6tNG9UH|L7Y&S+!sM^9M+_%ObpZ_Xsvf<}dg37@!*G=x)-1;NU+{2*Fk z0+C=)y%mg;UizrF_-LWTamak{*wk?J&9ZAcFEN|BLXCoXz|nFiF858MpP(owX;+$^ zz2#20tWo`3n&-7I{adNr?2VJL;J8N^5kzAmA#4CPCue*X&%~NhuBW*PTrm0XE4N{G z!YB$7Y%ExY)H!0-RA5w!CqgsbWYM^T1 zg6UonQ?ao3`I-`x@DCt=A)Yo(#>S`7*h)&J3lL1#D=VnW^qv}fAgafZ%EjGb-DOz; zkmT)qchYx=iad^UDMBma&TN5EGNXCf$$B+LwssrpXl^3I@Pef)@A z!O@Xmw`TbV>{96cO`AQZ64!ab(U;_DjH^9#JfC+GwtkRNZsTjAEV~d^^bBHRocWNK z$%kGJOSKo@1oR|DuXV7v`mM)SE`3w}Ti+730hkbwJ;0>_JmPXhp-A@Qk9-6>c8b6R z;2oeq00amg+!@4w8~jC-<)M>rb_UoXAqhf^%0AS-2kgCAse?M80AyEi32+@SpMC2k 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

cbbaGODV84S#C(zg#-tKWxe8@CN4HJq(>f=j1^ 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 YB^&8m(IHu$%QFHtmJZYsb4J4d0A;S&^Z)<= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/breadcrumb-divider.png b/modules/core/aloha/static/img/breadcrumb-divider.png new file mode 100644 index 0000000000000000000000000000000000000000..3c069384a2a7e590e3a1e8e88a621207f6ad5a37 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs9>8<6~|#v2QyR(iTPhE&{Yy==&J$Uvg)q0@qF zb;lR8m@PzYnjffCwB1>-`hjE>&qDSWs$SdtW^y^%I^UNs;d&-L&*4Grq(3W@dh$zF zc;)O&Yz<$?8Bq|jurk4Iv6FFv(^{u?akm{o8CgCOAsJF-v7~klp+RHas2~-pOU5!Fi`8rLDe-3hBLS aEpymrf6^*$+XJAZ89ZJ6T-G@yGywqdh*rV? literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/gentics-logo.png b/modules/core/aloha/static/img/gentics-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a67cace4eb8d2428eb205636891b94b5bde80b93 GIT binary patch literal 2014 zcmV<42O;>0P)X1^@s6wkGG*000N2NklVlFaR!@Aki(>+52oSj65m@A4e@o#*`C^K#x- z@qdWLE5)AfX!M-1?(5>xm&eE3FWz-{$15LIPyH`2XP4GytNbDJN5lL z_KrVyL!mCM7P7qIaMBP7PKiW<1VjRfYvUynl*cQFiwM@K+xLyF9@#fF_d)dahkie+ z!}}_y*)`K*?H^r-GhQE=J zKWdEU^)tPdJU8FG=g{s~-ZyJso5QHY)M?{1`B#ID}CU`+~Z3pUV5|{T;(nKOi6qHg7M_t}JbDoDEJO%_- z*SZ9s<0L1N5MqR22}%e80f7)m9n8(Q*;w8BZW7G$z2)Z8#bA~@I$1~KRT2}FPZ3ok z5>YV#296*~VXdJmYLr0G z4q`w;AQjlv*}-tD;?%h%Cfd!d)EW1DvzZC`lyXKZ2?H_=8bd@O+jl{t!X?o12Wi%# zHnvWo$M@q@Aj>k8(rgU|)W$Kl=O&B`v>G|yJFKxkZ>njk?_}B#R zyuD5u6#=0)Y%v&ls^NfP=_yT#DHO&)iV{!}g+?KuBT57ivTT55fcS_ghd6+UCSpt= zNi_TBJ6K~`Umqed5_L`tK=4H8n46tuSQMN+ca>qUU~b_sd4!^nS2Yq9dvBhmu4>l0C53T} zkB`x8PIBS=RrF2XKbRyt8Xl^HHy?$F*G?UTG)`H%hgNDF`q`%MKt%#~QRFGD%i@bPysvVpOEgQ)x@3gm&-*l_3Hm zkR}bhcPy^-*eo@Li&SO6mgRPeY$QrV2TNUey1K!7t?1U8*u5anf9uiXUwz=v7gD8K zF9ezTtVAtIGEiFLHkhBJY>Y6vM`GJZOd(u>pe2-2wa2n{BPxn)yV^vA7$Z@GbwW`X z%Gy&_0aF`BHT0_jg<_aAST;g0Y)I%Ys;544O_;XJkY;j5{CI7WcD7tU`NXgdI64n|GCh47e zkr<|=o}8-Y4t(mReD_1&e*3cAR|Rw2B_17;cR^_tIKSBA#OX~6BUGhh%M7_$7+&M(;o17f-~0Tro0K~Fe%k3rg<9C59q{q9 z%iUd0;#Z89pGGptrBVYgtW=i%#xf7wx4`{JAAacZdlz2&r_(od#QOKRI&foa8~yJX wNuT}Q@$-3qSTWyeKl${Rj{aJy4>w}{10j_a6PqF`sQ>@~07*qoM6N<$g0gG6(*OVf literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/grabhandle.png b/modules/core/aloha/static/img/grabhandle.png new file mode 100644 index 0000000000000000000000000000000000000000..bd403f707142ac98c7320a42b9dd7afaa49c538f GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^f5<@I7Ffv5z^=fcdhtzU22cTmr>mdK II;Vst0Coi*D*ylh literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/maximize.png b/modules/core/aloha/static/img/maximize.png new file mode 100644 index 0000000000000000000000000000000000000000..c686332126c549b280f88e7489065e595bdd2276 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W~#0(^7eq%odq&Ne7LR|m<|8EQiQ_aLy00o&! zg8YIR{^?8;QU>zmJzX3_IIbrrIIyi+DCiK>(8%iHwKj?={js{@t_zF|2eg=H9%^2( Q2&k07)78&qol`;+0Q}$~k^lez literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/multisplit-base.jpg b/modules/core/aloha/static/img/multisplit-base.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85522a5d7cbfb77e54d7051282bb88cdc13bddef GIT binary patch literal 929 zcmex=i3*BJ!6k`h{6D}T z$ibk+V8YBO$iO7X$SlbC{|JLL10w?yGb1Ad0qDsn+Mu9?(yo#gZUDGb0-WYODmVY#?)o1I}g)f3?rQ zYC6^EcrGiO=l7dqN$=TodrTf$`EBdxKIg%doObrX%8iR`p6~l|Jd4ji;N{-o_dybD>(c$M7UU)nkRUBPrH1j=&jhX zrVNeBq{T`$6=mNSd-tEVQ9sMJvf!$-nDh#N+jo=vjwIbPoOJbtDo?Zu)`)fp#ExaKO|>R35vnP9m5yCQKBiBOk!TSR_YKA(44 z?0TG0;h_YPo~s^H%l@po`qglocda+eFQ;b2!WkVOQpL<7?C8uC;a(co-S10rGZ4X8-^I literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/multisplit-open.gif b/modules/core/aloha/static/img/multisplit-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..0463694d37bbfb79950b3d7eb686de9f0974fa93 GIT binary patch literal 207 zcmZ?wbhEHbtzt6mNaPW8y2L%vFFoo)SPw%(L4-&RSDUz%=)`SIkC^BDpuD>g2OWa1u Wn{AgrE^vRiDRWca`xsXa25SH;B}sq) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/pin.png b/modules/core/aloha/static/img/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbd5404e939499df992c126ff2db377332f07dc GIT binary patch literal 333 zcmV-T0kZyyP)Q`_r}J?l$4aDq@=mIxrBs-yjZB>0000NbW%=J zN;j7Kfvk)0C>E3tO*#KhSdp7K93v;&||w80nD$%(R1bo#wb^1&I;yy zllVMG;F~8_ZF7FpVtJG f1{xsRbUTZGxw0{HCZ5bz00000NkvXXu0mjfIPsFP literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/removeformat.png b/modules/core/aloha/static/img/removeformat.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2909f88c53cc550f2c3b065ccbd87fe852026e GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!N`Oy@E0DhP{r{OWXVTJIwA~|T zY&r%Mx&7+PgvAFA-+Na$Y19Az|Jy%JI0Y1CED7=pW^j0RBMr#$_H=O!skqg9-cjg) z0*7;;*3wA@|9@XgJe3jqv%G)JgvSs3l1g0~BIZt?U(NsS+SxtJ*Kaww;@hSl4o9|Z oFugLbv1EHm>Z)HgvNb=M^cYzLZl(q_1C3?yboFyt=akR{0HYsJ6951J literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/text_indent.png b/modules/core/aloha/static/img/text_indent.png new file mode 100644 index 0000000000000000000000000000000000000000..650ae3512d7967f4be5a742c3869f0bae949a958 GIT binary patch literal 290 zcmV+-0p0$IP)FNSLUTi!Nb7O(GkN7$g%PK`Ew5H#)7xE_kVnWhMXoq`19w_R89xB owzmJV1s1ZcA3l6w9DJDx0Bb}h@Y{$NOaK4?07*qoM6N<$f+YQq2mk;8 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/img/text_indent_remove.png b/modules/core/aloha/static/img/text_indent_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c76bdc9674cef62e3767a9f4ed16f70003123 GIT binary patch literal 288 zcmV+*0pI?KP) ztcx@y*-e-jnHe6w`OeTACBsOP7aS|EYf8#-tmWq5_%}OI66^v`PtPkb+kXE13AY*M zt%naE>R^OH^vq{hmZnRAB^(_cF}#2r8_%CV=b&yZczb*Q#}{bGX##{lfBsD6bYN?1 m`yX3iA=~=l!w1H}mze-jOAqh_1C4J00000 "bundle-path/link") + * names - an array of plugin names (the same as the given + * array with the bundle-name stripped) + */ + function getPluginLoadConfig(plugins) { + var paths = {}, + entryPoints = [], + names = [], + baseUrlByName = {}, + map = {}, + parts, + bundleName, + pluginName, + basePath = Aloha.settings.basePath || '', + bundlePath, + bundles = Aloha.settings.bundles || {}, + i; + for (i = 0; i < plugins.length; i++) { + parts = plugins[i].split('/'); + bundleName = parts[0]; + pluginName = parts[1]; + if (bundles[bundleName]) { + bundlePath = basePath + bundles[bundleName]; + } else { + bundlePath = basePath + '../plugins/' + bundleName; + } + mergePluginPaths(paths, bundlePath, pluginName); + baseUrlByName[pluginName] = bundlePath + '/' + pluginName; + entryPoints.push(pluginName + '/' + pluginName + '-plugin'); + map[pluginName] = {'jquery':'aloha/jquery'}; + } + return { + paths:paths, + entryPoints:entryPoints, + baseUrlByName:baseUrlByName, + names:names, + map:map + }; + } + + /** + * Merges properites of all given arguments into a new one. + * Duplicate properties will be "seived" out. + * Works in a similar way to jQuery.extend. + * Necessary because we must not assume that jquery was already + * loaded. + */ + function mergeObjects() { + var clone = {}; + var objects = Array.prototype.slice.call(arguments); + var name; + var i; + var obj; + for (i = 0; i < objects.length; i++) { + obj = objects[i]; + for (name in obj) { + if (obj.hasOwnProperty(name)) { + clone[name] = objects[i][name]; + } + } + } + return clone; + } + + function createDefine(name, module) { + define(name, function () { + return module; + }); + } + + function load() { + + Aloha.defaults = {}; + Aloha.settings = Aloha.settings || {}; + + var loadConfig = getLoadConfig(); + var pluginConfig = getPluginLoadConfig(loadConfig.plugins); + + Aloha.settings.baseUrl = loadConfig.baseUrl; + Aloha.settings.loadedPlugins = pluginConfig.names; + Aloha.settings._pluginBaseUrlByName = pluginConfig.baseUrlByName; + + var coreMap = { + 'aloha':{'jquery':'aloha/jquery'}, + 'aloha/jquery':{'jquery':'jquery'}, // avoid a circular dependency + 'jqueryui':{'jquery':'aloha/jquery'}, + 'vendor':{'jquery':'aloha/jquery'}, + 'util':{'jquery':'aloha/jquery'}, + 'RepositoryBrowser':{'jquery':'aloha/jquery'}, + 'jstree':{'jquery':'aloha/jquery'}, + 'jqgrid':{'jquery':'aloha/jquery'}, + 'jqgrid-locale-en':{'jquery':'aloha/jquery'}, + 'jqgrid-locale-de':{'jquery':'aloha/jquery'}, + 'jquery-layout':{'jquery':'aloha/jquery'} + }; + + /** + * Map the 'jquery' module to the 'aloha/jquery' module. This + * enforces Aloha modules to always use aloha/jquery instead of + * jquery. One could also just write + * define(['aloha/jquery']... to require Aloha's jquery, but + * this is problematic in vendor files that don't know anything + * about Aloha. Each key in the map is either the module name, + * or the firs part of the module name. For example, the mapping + * under the key 'aloha' will take effect for all modules with + * names like aloha/xxx. When a new 'paths' entry is added + * (browserPaths or other), an entry should also be added the + * moduleMap to rename the jquery dependency. + * See also define('aloha/jquery', ... below. + */ + var moduleMap = mergeObjects(coreMap, pluginConfig.map) + + var defaultConfig = { + context:'aloha', + config:{ + i18n:{ + locale:Aloha.settings.locale || 'en' + } + }, + baseUrl:Aloha.settings.baseUrl, + map:moduleMap + }; + + var DependencyManagement = global.__DEPS__ || (global.__DEPS__ = {}); + + DependencyManagement.lang = defaultConfig.locale; + + var defaultPaths = { + jquery:'vendor/jquery-1.7.2', + jqueryui:'vendor/jquery-ui-1.9.0.custom-aloha' + }; + + var browserPaths = { + PubSub:'vendor/pubsub/js/pubsub-unminified', + 'Class':'vendor/class', + RepositoryBrowser:'vendor/repository-browser/js/repository-browser-unminified', + jstree:'vendor/jquery.jstree', // Mutates jquery + jqgrid:'vendor/jquery.jqgrid', // Mutates jquery + 'jquery-layout':'vendor/jquery.layout-1.3.0-rc30.7', // Mutates jquery + 'jqgrid-locale-en':'vendor/grid.locale.en', // Mutates jqgrid + 'jqgrid-locale-de':'vendor/grid.locale.de', // Mutates jqgrid + 'repository-browser-i18n-de':'vendor/repository-browser/js/repository-browser-unminified', + 'repository-browser-i18n-en':'vendor/repository-browser/js/repository-browser-unminified' + }; + + var requireConfig = mergeObjects( + defaultConfig, + Aloha.settings.requireConfig + ); + + requireConfig.paths = mergeObjects( + defaultPaths, + browserPaths, + pluginConfig.paths, + requireConfig.paths + ); + + // Create define() wrappers that will provide the initialized objects that + // the user passes into Aloha via require() calls. + var predefinedModules = Aloha.settings.predefinedModules || {}; + + if (Aloha.settings.jQuery) { + predefinedModules.jquery = Aloha.settings.jQuery; + } + + var moduleName; + for (moduleName in predefinedModules) { + if (predefinedModules.hasOwnProperty(moduleName)) { + createDefine(moduleName, predefinedModules[moduleName]); + delete requireConfig.paths[moduleName]; + } + } + + // Configure require and expose the Aloha.require. + var alohaRequire = require.config(requireConfig); + + Aloha.require = function (callback) { + // Pass the Aloha object to the given callback. + if (1 === arguments.length && typeof callback === 'function') { + return alohaRequire(['aloha'], callback); + } + return alohaRequire.apply(this, arguments); + }; + + var deferredReady; + + Aloha.bind = function (type, fn) { + Aloha.require(['aloha/jquery'], function (jQuery) { + // We will only need to load jQuery once ... + Aloha.bind = function (type, fn) { + deferredReady = deferredReady || jQuery.Deferred(); + if ('aloha-ready' === type) { + if ('alohaReady' !== Aloha.stage) { + deferredReady.done(fn); + } else { + fn(); + } + } else { + jQuery(Aloha, 'body').bind(type, fn); + } + return this; + }; + Aloha.bind(type, fn); + }); + return this; + }; + + Aloha.trigger = function (type, data) { + Aloha.require(['aloha/jquery'], function (jQuery) { + Aloha.trigger = function (type, data) { + deferredReady = deferredReady || jQuery.Deferred(); + if ('aloha-ready' === type) { + jQuery(deferredReady.resolve); + } + jQuery(Aloha, 'body').trigger(type, data); + return this; + }; + Aloha.trigger(type, data); + }); + return this; + }; + + Aloha.unbind = function (typeOrEvent) { + Aloha.require(['aloha/jquery'], function (jQuery) { + Aloha.unbind = function (typeOrEvent) { + jQuery(Aloha, 'body').unbind(typeOrEvent); + }; + Aloha.unbind(typeOrEvent); + }); + }; + + Aloha.ready = function (fn) { + this.bind('aloha-ready', fn); + return this; + }; + + /** + * This makes sure that all Aloha modules will receive the same jQuery. + * + * This is a workaround for when a user includes his own + * jQuery _after_ aloha.js has been loaded. + * + * If multiple 'jquery's are included in the page, each version + * will make its own call to define(), and depending on when an + * Aloha module is loaded, it may receive a different + * 'jquery'. However, 'aloha/jquery' will not be redefined and + * will therefore point always to only one particular version. + * + * !!Important!! to be certain that 'aloha/jquery' points to + * the jQuery intended for Aloha, it can't be loaded + * dynamically, because if a user loads his own jQuery after + * aloha.js, then there is no way to tell whether it is the + * user's jQuery or Aloha's jQuery that has finished + * loading. Instead, jQuery must be loaded before aloha.js and + * passed in to us. + */ + var jQueryThatWasPassedToUs = Aloha.settings.jQuery; + define('aloha/jquery', ['jquery'], function (jQuery) { + // We prefer Aloha.settings.jQuery, since a dynamically loaded + // jQuery may have been redefined by a user's jQuery. + return jQueryThatWasPassedToUs || jQuery; + }); + + // Initialize this early so that the user doesn't have to use + // Aloha.ready(). + Aloha.jQuery = jQueryThatWasPassedToUs; + + define('aloha', [ + 'aloha/jquery', + 'util/json2', + 'aloha/rangy-core', + 'util/class', + 'util/lang', + 'util/range', + 'util/dom', + 'aloha/core', + 'aloha/editable', + 'aloha/console', + 'aloha/markup', + 'aloha/plugin', + 'aloha/selection', + 'aloha/command', + 'aloha/jquery.aloha', + 'aloha/sidebar', + 'util/position', + 'aloha/repositorymanager', + 'aloha/repository', + 'aloha/repositoryobjects', + 'aloha/contenthandlermanager' + ], function (jQuery) { + + // Set it again in case jQuery was loaded asynchronously. + Aloha.jQuery = jQuery; + + // Some core files provide default settings in Aloha.defaults. + Aloha.settings = jQuery.extendObjects(true, {}, Aloha.defaults, Aloha.settings); + + return Aloha; + }); + + // TODO aloha should not make the require call itself. Instead, + // user code should require and initialize aloha. + Aloha.stage = 'loadingAloha'; + require(requireConfig, ['aloha', 'aloha/jquery'], function (Aloha, jQuery) { + Aloha.stage = 'loadPlugins'; + require(requireConfig, pluginConfig.entryPoints, function () { + jQuery(function () { + // Rangy must be initialized only after the body + // is available since it accesses the body + // element during initialization. + window.rangy.init(); + // The same for Aloha, but probably only because it + // depends on rangy. + Aloha.init(); + }); + }); + }); + } // end load() + + global.Aloha = global.Aloha || {}; + if (global.Aloha.deferInit || isDeferInit()) { + global.Aloha.deferInit = load; + } else { + // Unless init is deferred above, aloha mus be loaded + // immediately in the development version, but later in the + // compiled version. The reason loading must be delayed in the + // compiled version is that the "include" directive in the r.js + // build profile, which lists the plugins that will be compiled + // into aloha.js, will include the plugins *after* this + // file. Since the require() call that loads the plugins is in + // this file, it will not see any of the plugin's defines that + // come after this file. The call to Aloha._load is only made in + // compiled mode in closure-end.frag. The call to load() below + // is only made in development mode because the excludeStart and + // excludeEnd r.js pragmas will exclude everything inbetween in + // the compiled version. + // TODO ideally the bootstrap file should not make the require + // call at all. Instead, user code should require and + // initialize aloha. + Aloha._load = load; + //>>excludeStart("alohaLoadInEndClosure", pragmas.alohaLoadInEndClosure); + load(); + //>>excludeEnd("alohaLoadInEndClosure"); + } +}(window)); diff --git a/modules/core/aloha/static/lib/aloha/block-jump.js b/modules/core/aloha/static/lib/aloha/block-jump.js new file mode 100644 index 000000000..d73e40735 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/block-jump.js @@ -0,0 +1,149 @@ +/* block-jump.js is part of the Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * Implements some logic related to moving the cursor keys across blocks. + * + * In the following example + * + * "some text...[]some text" + * + * when one moves the cursor indicated by "[]" to the left, the entire + * non-contenteditable block is skipped. The same for moving the cursor + * right across the block. + * + * TODO: actually, the block shouldn't be skipped, it should be + * selected/highlighted first. + * TODO: this file currently doesn't contain all the code to implement + * block jumping. Some of it is currently implemented in markup.js. + */ +define([ + 'aloha/core', + 'jquery', + 'aloha/console' +], function (Aloha, $, console) { + 'use strict'; + + var zeroWidthNode = null; + + /** + * Replaces the text in given text with the given text. + * + * @param node + * A text node attached to the DOM. + * @param text + * A string that is to replace the text of the given text node. + */ + function replaceMergeTextNode(node, text) { + node.deleteData(0, node.length); + if ('' !== text) { + if (node.nextSibling && 3 === node.nextSibling.nodeType) { + node.nextSibling.insertData(0, text); + } else if (node.previousSibling && 3 === node.previousSibling.nodeType) { + node.previousSibling.insertData(node.previousSibling.length, text); + } else { + node.insertData(0, text); + } + } + // We don't remove the node immediately to avoid intefering with a + // caller's range object that may have a start or end containers + // equal to this node. Removing it in a timeout may still interfere + // with the selection, but that was not a problem during testing. + setTimeout(function () { + if (0 === node.length) { + $(node).remove(); + } + }, 0); + } + + /** + * Removes a previously inserted zero width text node. + * See insertZeroWidthTextNodeFix(). + */ + function removeZeroWidthTextNodeFix() { + if (!zeroWidthNode) { + return; + } + // We want to only replace a single zero-width character to avoid + // interfering with the other zero-width whitespace hack that makes + // empty lines visible in IE7. + var text = zeroWidthNode.nodeValue.replace(/\u200b/, ''); + if (text === zeroWidthNode.nodeValue) { + console.warn('Expected to remove the zero width text node fix, but couldn\'t find it'); + } + replaceMergeTextNode(zeroWidthNode, text); + zeroWidthNode = null; + } + + /** + * Inserts a zero width text node before or after a block. + * + * There is a problem where some browsers can't select the boundary + * between some contenteditable content and non-contenteditable + * content. For example, if in the example at the top of the file + * the selection were one step to the right "...s[]ome..." + * and the left cursor key were pressed, then the selection would + * just disappear or be stuck between the span and the text node. + * + * To work around this problem a zero width text node is inserted + * before or after a block. + * + * The inserted zero width text node will be removed automatically + * when it isn't necessary any more (on selection change or on + * editable.getContents()). + * + * TODO: In retrospect, a better alternative may be to simply wrap + * every inlin-block with an editable span. + * @param block + * The DOM element for a block before or after which the zero + * width text node will be inserted. + * @param isGoingLeft + * True if the zero width text node is to be inserted after + * the block element, or false if the zero width text node is + * to be inserted before the block element. + * @return + * The text node that was inserted. + */ + function insertZeroWidthTextNodeFix(block, isGoingLeft) { + removeZeroWidthTextNodeFix(); + zeroWidthNode = document.createTextNode("\u200b"); + if (isGoingLeft) { + $(block).after(zeroWidthNode); + } else { + $(block).before(zeroWidthNode); + } + Aloha.bind('aloha-selection-changed', function (event) { + removeZeroWidthTextNodeFix(); + Aloha.unbind(event); + }); + return zeroWidthNode; + } + + return { + removeZeroWidthTextNodeFix:removeZeroWidthTextNodeFix, + insertZeroWidthTextNodeFix:insertZeroWidthTextNodeFix + }; +}); diff --git a/modules/core/aloha/static/lib/aloha/command.js b/modules/core/aloha/static/lib/aloha/command.js new file mode 100644 index 000000000..f761de5cc --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/command.js @@ -0,0 +1,277 @@ +/* command.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'aloha/registry', + 'aloha/engine', + 'util/dom', + 'aloha/contenthandlermanager' +], function (Aloha, Registry, Engine, Dom, ContentHandlerManager) { + "use strict"; + + // Action: What the command does when executed via execCommand(). Every command defined + // in CommandManager specification has an action defined for it in the relevant section. For example, + // the bold command's action generally makes the current selection bold, or removes bold if + // the selection is already bold. An editing toolbar might provide buttons that execute the + // action for a command if clicked, or a script might run an action without user interaction + // to achieve some particular effect. + // + // Indeterminate: A boolean value returned by queryCommandIndeterm(), depending on the + // current state of the document. Generally, a command that has a state defined will be + // indeterminate if the state is true for part but not all of the current selection, and a + // command that has a value defined will be indeterminate if different parts of the + // selection have different values. An editing toolbar might display a button or control + // in a special way if the command is indeterminate, like showing a "bold" button as + // partially depressed, or leaving a font size selector blank instead of showing the font + // size of the current selection. As a rule, a command can only be indeterminate if its + // state is false, supposing it has a state. + // + // State: A boolean value returned by queryCommandState(), depending on the current state + // of the document. The state of a command is true if it is already in effect, in some + // sense specific to the command. Most commands that have a state defined will take opposite + // actions depending on whether the state is true or false, such as making the selection + // bold if the state is false and removing bold if the state is true. Others will just + // have no effect if the state is true, like the justifyCenter command. Still others will + // have the same effect regardless, like the styleWithCss command. An editing toolbar might + // display a button or control differently depending on the state and indeterminacy of the + // command. + // + // Value: A string returned by queryCommandValue(), depending on the current state of the + // document. A command usually has a value instead of a state if the property it modifies + // can take more than two different values, like the foreColor command. If the command is + // indeterminate, its value is generally based on the start of the selection. Otherwise, + // in most cases the value holds true for the entire selection, but see the justifyCenter + // command and its three companions for an exception. An editing toolbar might display the + // value of a command as selected in a drop-down or filled in in a text box, if the command + // isn't indeterminate. + // + // Relevant CSS property: CommandManager is defined for certain inline formatting commands, and + // is used in algorithms specific to those commands. It is an implementation detail, and + // is not exposed to authors. If a command does not have a relevant CSS property + // specified, it defaults to null. + + var CommandManager = { + + execCommand:function (commandId, showUi, value, range) { + var evtObj = { + commandId:commandId, + preventDefault:false + }; + Aloha.trigger('aloha-command-will-execute', evtObj); + + if (evtObj.preventDefault === true) { + return; + } + // Read current selection if not passed + if (!range) { + if (!Aloha.getSelection().getRangeCount()) { + return; + } + range = Aloha.getSelection().getRangeAt(0); + } + + // For the insertHTML command we provide contenthandler API + if (commandId.toLowerCase() === 'inserthtml') { + //if (typeof Aloha.settings.contentHandler.insertHtml === 'undefined') { + // use all registered content handler; used for copy & paste atm (or write log message) + // Aloha.settings.contentHandler.insertHtml = Aloha.defaults.contentHandler.insertHtml; + //} + value = ContentHandlerManager.handleContent(value, { + contenthandler:Aloha.settings.contentHandler.insertHtml, + command:'insertHtml' + }); + } + + Engine.execCommand(commandId, showUi, value, range); + + if (Aloha.getSelection().getRangeCount()) { + // Read range after engine modification + range = Aloha.getSelection().getRangeAt(0); + + // FIX: doCleanup should work with W3C range + var startnode = range.commonAncestorContainer; + if (startnode.parentNode) { + startnode = startnode.parentNode; + } + var rangeObject = new window.GENTICS.Utils.RangeObject(); + rangeObject.startContainer = range.startContainer; + rangeObject.startOffset = range.startOffset; + rangeObject.endContainer = range.endContainer; + rangeObject.endOffset = range.endOffset; + Dom.doCleanup({ + merge:true, + removeempty:false + }, rangeObject, startnode); + rangeObject.select(); + } + + Aloha.trigger('aloha-command-executed', commandId); + }, + + // If command is available and not disabled or the active range is not null + // the command is enabled + queryCommandEnabled:function (commandId, range) { + + // Take current selection if not passed + if (!range) { + if (!Aloha.getSelection().getRangeCount()) { + return; + } + range = Aloha.getSelection().getRangeAt(0); + } + return Engine.queryCommandEnabled(commandId, range); + }, + + // "Return true if command is indeterminate, otherwise false." + queryCommandIndeterm:function (commandId, range) { + + // Take current selection if not passed + if (!range) { + if (!Aloha.getSelection().getRangeCount()) { + return; + } + range = Aloha.getSelection().getRangeAt(0); + } + return Engine.queryCommandIndeterm(commandId, range); + + }, + + queryCommandState:function (commandId, range) { + + // Take current selection if not passed + if (!range) { + if (!Aloha.getSelection().getRangeCount()) { + return; + } + range = Aloha.getSelection().getRangeAt(0); + } + return Engine.queryCommandState(commandId, range); + + }, + + // "When the queryCommandSupported(command) method on the HTMLDocument + // interface is invoked, the user agent must return true if command is + // supported, and false otherwise." + queryCommandSupported:function (commandId) { + + return Engine.queryCommandSupported(commandId); + }, + + queryCommandValue:function (commandId, range) { + + // Take current selection if not passed + if (!range) { + if (!Aloha.getSelection().getRangeCount()) { + return; + } + range = Aloha.getSelection().getRangeAt(0); + } + + // "Return command's value." + return Engine.queryCommandValue(commandId, range); + }, + querySupportedCommands:function () { + + var commands = [], + command; + + for (command in Engine.commands) { + if (Engine.commands.hasOwnProperty(command)) { + commands.push(command); + } + } + return commands; + } + }; + + // create an instance + CommandManager = new (Registry.extend(CommandManager))(); + + /** + * Executes a registered command. + * http://aryeh.name/spec/editing/editing.html#methods-of-the-htmldocument-interface + * @method + * @param command name of the command + * @param showUI has no effect for Aloha Editor and is only here because in spec... + * @param value depends on the used command and it impementation + * @range optional a range on which the command will be executed if not specified + * the current selection will be used as range + */ + Aloha.execCommand = CommandManager.execCommand; + + /** + * Check wheater the command in enabled. + * If command is not supported, raise a NOT_SUPPORTED_ERR exception. + * @param command name of the command + * @return true if command is enabled, false otherwise. + */ + Aloha.queryCommandEnabled = CommandManager.queryCommandEnabled; + + /** + * Check if the command has an indetermed state. + * If command is not supported, a NOT_SUPPORTED_ERR exception is thrown + * If command has no indeterminacy, INVALID_ACCESS_ERR exception is thrown + * If command is not enabled, return false. + * @param command name of the command + * @range optional a range on which the command will be executed if not specified + * the current selection will be used as range + * @return true if command is indeterminate, otherwise false. + */ + Aloha.queryCommandIndeterm = CommandManager.queryCommandIndeterm; + + /** + * Returns the state of a given command + * If command is not supported, a NOT_SUPPORTED_ERR exception is thrown + * If command has no state, an INVALID_ACCESS_ERR exception is thrown + * If command is not enabled, return false + * If the state override for command is set, it returns the state + * @param command name of the command + * @return state override or true if command's state is true, otherwise false. + */ + Aloha.queryCommandState = CommandManager.queryCommandState; + + /** + * Check if a given command is supported + * @return true if command is supported, and false otherwise. + */ + Aloha.queryCommandSupported = CommandManager.queryCommandSupported; + + /** + * Returns the Value of a given Command + * If command is not supported, a NOT_SUPPORTED_ERR exception is thrown + * If command is not enabled, returns an empty string + * If command is "fontSize" and its value override is set, an integer + * number of pixels is returned as font size for the result. + * If the value override for command is set, it returns that. + * @return command's value. + */ + Aloha.queryCommandValue = CommandManager.queryCommandValue; + + Aloha.querySupportedCommands = CommandManager.querySupportedCommands; + + return CommandManager; +}); diff --git a/modules/core/aloha/static/lib/aloha/console.js b/modules/core/aloha/static/lib/aloha/console.js new file mode 100644 index 000000000..692c264a8 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/console.js @@ -0,0 +1,343 @@ +/* console.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'util/class', + 'jquery' +], function (Aloha, Class, jQuery) { + "use strict"; + + /** + * This is the aloha Log + * @namespace Aloha + * @class Log + * @singleton + */ + var AlohaConsole = Class.extend({ + /** + * Initialize the logging + * @hide + */ + init:function () { + + // initialize the logging settings (if not present) + if (typeof Aloha.settings.logLevels === 'undefined' || !Aloha.settings.logLevels) { + Aloha.settings.logLevels = { + 'error':true, + 'warn':true + }; + } + + // initialize the logHistory settings (if not present) + if (typeof Aloha.settings.logHistory === 'undefined' || !Aloha.settings.logHistory) { + Aloha.settings.logHistory = {}; + } + // set the default values for the loghistory + if (!Aloha.settings.logHistory.maxEntries) { + Aloha.settings.logHistory.maxEntries = 100; + } + if (!Aloha.settings.logHistory.highWaterMark) { + Aloha.settings.logHistory.highWaterMark = 90; + } + if (!Aloha.settings.logHistory.levels) { + Aloha.settings.logHistory.levels = { + 'error':true, + 'warn':true + }; + } + this.flushLogHistory(); + + Aloha.trigger('aloha-logger-ready'); + }, + + /** + * Log History as array of Message Objects. Every object has the properties + * 'level', 'component' and 'message' + * @property + * @type Array + * @hide + */ + logHistory:[], + + /** + * Flag, which is set as soon as the highWaterMark for the log history is reached. + * This flag is reset on every call of flushLogHistory() + * @hide + */ + highWaterMarkReached:false, + + /** + * Logs a message to the console + * @method + * @param {String} level Level of the log ('error', 'warn' or 'info', 'debug') + * @param {String} component Component that calls the log + * @param {String} message log message + */ + log:function (level, component, message) { + + + // log ('Logging message'); + if (typeof component === 'undefined') { + message = level; + } + if (typeof component !== 'string' && component && component.toString) { + component = component.toString(); + } + + // log ('warn', 'Warning message'); + if (typeof message === 'undefined') { + message = component; + component = undefined; + } + + if (typeof level === 'undefined' || !level) { + level = 'log'; + } + + level = level.toLowerCase(); + + if (typeof Aloha.settings.logLevels === "undefined") { + return; + } + + // now check whether the log level is activated + if (!Aloha.settings.logLevels[level]) { + return; + } + + component = component || "Unkown Aloha Component"; + + this.addToLogHistory({ + 'level':level, + 'component':component, + 'message':message, + 'date':new Date() + }); + + var console = window.console; + + switch (level) { + case 'error': + if (window.console && console.error) { + // FIXME: + // Using console.error rather than throwing an error is very + // problematic because we get not stack. + // We ought to consider doing the following: + // throw component + ': ' + message; + if (!component && !message) { + console.error("Error occured without message and component"); + } else { + console.error(component + ': ' + message); + } + } + break; + case 'warn': + if (window.console && console.warn) { + console.warn(component + ': ' + message); + } + break; + case 'info': + if (window.console && console.info) { + console.info(component + ': ' + message); + } + break; + case 'debug': + if (window.console && console.log) { + console.log(component + ' [' + level + ']: ' + message); + } + break; + default: + if (window.console && console.log) { + console.log(component + ' [' + level + ']: ' + message); + } + break; + } + }, + + /** + * Log a message of log level 'error' + * @method + * @param {String} component Component that calls the log + * @param {String} message log message + */ + error:function (component, message) { + this.log('error', component, message); + }, + + /** + * Log a message of log level 'warn' + * @method + * @param {String} component Component that calls the log + * @param {String} message log message + */ + warn:function (component, message) { + this.log('warn', component, message); + }, + + /** + * Log a message of log level 'info' + * @method + * @param {String} component Component that calls the log + * @param {String} message log message + */ + info:function (component, message) { + this.log('info', component, message); + }, + + /** + * Log a message of log level 'debug' + * @param {String} component Component that calls the log + * @param {String} message log message + */ + debug:function (component, message) { + this.log('debug', component, message); + }, + + /** + * Methods to mark function as deprecated for developers. + * @param {String} component String that calls the log + * @param {String} message log message + */ + deprecated:function (component, message) { + this.log('warn', component, message); + // help the developer to locate the call. + if (Aloha.settings.logLevels.deprecated) { + throw new Error(message); + } + }, + + /** + * Check whether the given log level is currently enabled + * @param {String} level + * @return true when log level is enabled, false if not + */ + isLogLevelEnabled:function (level) { + return Aloha.settings && Aloha.settings.logLevels && Aloha.settings.logLevels[level]; + }, + + /** + * Check whether error logging is enabled + * @return true if error logging is enabled, false if not + */ + isErrorEnabled:function () { + return this.isLogLevelEnabled('error'); + }, + + /** + * Check whether warn logging is enabled + * @return true if warn logging is enabled, false if not + */ + isWarnEnabled:function () { + return this.isLogLevelEnabled('warn'); + }, + + /** + * Check whether info logging is enabled + * @return true if info logging is enabled, false if not + */ + isInfoEnabled:function () { + return this.isLogLevelEnabled('info'); + }, + + /** + * Check whether debug logging is enabled + * @return true if debug logging is enabled, false if not + */ + isDebugEnabled:function () { + return this.isLogLevelEnabled('debug'); + }, + + /** + * Add the given entry to the log history. Check whether the highWaterMark has been reached, and fire an event if yes. + * @param {Object} entry entry to be added to the log history + * @hide + */ + addToLogHistory:function (entry) { + + if (!Aloha.settings.logHistory) { + this.init(); + } + + // when maxEntries is set to something illegal, we do nothing (log history is disabled) + // check whether the level is one we like to have logged + if (Aloha.settings.logHistory.maxEntries <= 0 || !Aloha.settings.logHistory.levels[entry.level]) { + + return; + } + + // first add the entry as last element to the history array + this.logHistory.push(entry); + + // check whether the highWaterMark was reached, if so, fire an event + if (!this.highWaterMarkReached) { + + if (this.logHistory.length >= Aloha.settings.logHistory.maxEntries * Aloha.settings.logHistory.highWaterMark / 100) { + + // fire the event + Aloha.trigger('aloha-log-full'); + // set the flag (so we will not fire the event again until the logHistory is flushed) + this.highWaterMarkReached = true; + } + } + + // check whether the log is full and eventually remove the oldest entries + // @todo remove old entries when aloha-log-full event is triggered + while (this.logHistory.length > Aloha.settings.logHistory.maxEntries) { + this.logHistory.shift(); + } + }, + + /** + * Get the log history + * @return log history as array of objects + * @hide + */ + getLogHistory:function () { + return this.logHistory; + }, + + /** + * Flush the log history. Remove all log entries and reset the flag for the highWaterMark + * @return void + * @hide + */ + flushLogHistory:function () { + this.logHistory = []; + this.highWaterMarkReached = false; + } + }); + + /** + * Create the Log object + * @hide + */ + AlohaConsole = new AlohaConsole(); + + // add to log namespace for compatiblility. + Aloha.Log = Aloha.Console = AlohaConsole; + return AlohaConsole; +}); diff --git a/modules/core/aloha/static/lib/aloha/contenthandlermanager.js b/modules/core/aloha/static/lib/aloha/contenthandlermanager.js new file mode 100644 index 000000000..4d8dae687 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/contenthandlermanager.js @@ -0,0 +1,79 @@ +/* contenthandlermanager.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/registry', + 'util/class', + 'aloha/console' +], function (Registry, Class, console) { + 'use strict'; + + /** + * Create an contentHandler from the given definition. Acts as a factory + * method for contentHandler. + * + * @param {ContentHandlerManager} definition + */ + var ContentHandlerManager = Registry.extend({ + + createHandler:function (definition) { + if (typeof definition.handleContent !== 'function') { + throw 'ContentHandler has no function handleContent().'; + } + var AbstractContentHandler = Class.extend({ + handleContent:function (content) { + // Implement in subclass! + } + }, definition); + return new AbstractContentHandler(); + }, + + handleContent:function (content, options) { + var manager = this; + var handlers = options.contenthandler || manager.getIds(); + var handler; + var i; + for (i = 0; i < handlers.length; i++) { + handler = manager.get(handlers[i]); + if (handler) { + if (typeof handler.handleContent === 'function') { + content = handler.handleContent(content, options); + } else { + console.error( + 'A valid content handler needs the method handleContent.' + ); + } + } + if (null === content) { + break; + } + } + return content; + } + }); + + return new ContentHandlerManager(); +}); diff --git a/modules/core/aloha/static/lib/aloha/core.js b/modules/core/aloha/static/lib/aloha/core.js new file mode 100644 index 000000000..08afbfaf0 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/core.js @@ -0,0 +1,482 @@ +/* core.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'jquery', + 'aloha/pluginmanager' +], function (jQuery, PluginManager) { + "use strict"; + + var Aloha = window.Aloha; + //---------------------------------------- + // Private variables + //---------------------------------------- + + /** + * Base Aloha Object + * @namespace Aloha + * @class Aloha The Aloha base object, which contains all the core functionality + * @singleton + */ + jQuery.extend(true, Aloha, { + + /** + * The Aloha Editor Version we are using + * It should be set by us and updated for the particular branch + * @property + */ + version:'${version}', + + /** + * Array of editables that are managed by Aloha + * @property + * @type Array + */ + editables:[], + + /** + * The currently active editable is referenced here + * @property + * @type Aloha.Editable + */ + activeEditable:null, + + /** + * settings object, which will contain all Aloha settings + * @cfg {Object} object Aloha's settings + */ + settings:{}, + + /** + * defaults object, which will contain all Aloha defaults + * @cfg {Object} object Aloha's settings + */ + defaults:{}, + + /** + * Namespace for ui components + */ + ui:{}, + + /** + * This represents the name of the users OS. Could be: + * 'Mac', 'Linux', 'Win', 'Unix', 'Unknown' + * @property + * @type string + */ + OSName:'Unknown', + + /** + * Which stage is the aloha init process at? + * @property + * @type string + */ + stage:'loadingAloha', + + /** + * A list of loaded plugin names. Available after the + * "loadPlugins" stage. + * + * @property + * @type array + * @internal + */ + loadedPlugins:[], + + /** + * Maps names of plugins (link) to the base URL (../plugins/common/link). + */ + _pluginBaseUrlByName:{}, + + /** + * Initialize the initialization process + */ + init:function () { + // Load & Initialise + Aloha.stage = 'initAloha'; + Aloha.initAloha(function () { + Aloha.stage = 'initPlugins'; + Aloha.initPlugins(function () { + Aloha.stage = 'initGui'; + Aloha.initGui(function () { + Aloha.stage = 'alohaReady'; + Aloha.trigger('aloha-ready'); + }); + }); + }); + }, + + /** + * Returns list of loaded plugins (without Bundle name) + * + * @return array + */ + getLoadedPlugins:function () { + return this.loadedPlugins; + }, + + /** + * Returns true if a certain plugin is loaded, false otherwise. + */ + isPluginLoaded:function (pluginName) { + var found = false; + jQuery.each(this.loadedPlugins, function () { + if (pluginName.toString() === this.toString()) { + found = true; + } + }); + return found; + }, + + /** + * Initialise Aloha + */ + initAloha:function (next) { + var $html = jQuery('html'); + + // check browser version on init + // this has to be revamped, as + if ((jQuery.browser.webkit && parseInt(jQuery.browser.version, 10) < 20) // Chrome/Safari 4 + || (jQuery.browser.mozilla && parseFloat(jQuery.browser.version) < 1.9) // FF 3.5 + || (jQuery.browser.msie && jQuery.browser.version < 7) // IE 7 + || (jQuery.browser.opera && jQuery.browser.version < 11)) { // right now, Opera needs some work + if (window.console && window.console.log) { + window.console.log('Your browser is not supported.'); + } + } + + // register the body click event to blur editables + jQuery('html').mousedown(function (e) { + // This is a hack to prevent a click into a modal dialog from blurring the editable. + if (Aloha.activeEditable && !jQuery(".aloha-dialog").is(':visible') && !Aloha.eventHandled) { + Aloha.activeEditable.blur(); + Aloha.activeEditable = null; + } + }).mouseup(function (e) { + Aloha.eventHandled = false; + }); + + + // add class to body to denote browser + if (jQuery.browser.webkit) { + $html.addClass('aloha-webkit'); + } else if (jQuery.browser.opera) { + $html.addClass('aloha-opera'); + } else if (jQuery.browser.msie) { + $html.addClass('aloha-ie' + parseInt(jQuery.browser.version, 10)); + } else if (jQuery.browser.mozilla) { + $html.addClass('aloha-mozilla'); + } + + // Initialise the base path to the aloha files + Aloha.settings.base = Aloha.getAlohaUrl(); + + // initialize the Log + Aloha.Log.init(); + + // initialize the error handler for general javascript errors + if (Aloha.settings.errorhandling) { + window.onerror = function (msg, url, linenumber) { + Aloha.Log.error(Aloha, 'Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + linenumber); + // TODO eventually add a message to the message line? + return true; + }; + } + + // OS detection + if (navigator.appVersion.indexOf('Win') != -1) { + Aloha.OSName = 'Win'; + } + if (navigator.appVersion.indexOf('Mac') != -1) { + Aloha.OSName = 'Mac'; + } + if (navigator.appVersion.indexOf('X11') != -1) { + Aloha.OSName = 'Unix'; + } + if (navigator.appVersion.indexOf('Linux') != -1) { + Aloha.OSName = 'Linux'; + } + + // Forward + next(); + }, + + /** + * Loads plugins Aloha + * @return void + */ + initPlugins:function (next) { + PluginManager.init(next, this.getLoadedPlugins()); + }, + + /** + * Loads GUI components + * @return void + */ + initGui:function (next) { + var i, editablesLength; + + Aloha.RepositoryManager.init(); + + // activate registered editables + for (i = 0, editablesLength = Aloha.editables.length; i < editablesLength; i++) { + if (!Aloha.editables[i].ready) { + Aloha.editables[i].init(); + } + } + + // Forward + next(); + }, + + /** + * Activates editable and deactivates all other Editables + * @param {Editable} editable the Editable to be activated + * @return void + */ + activateEditable:function (editable) { + var i; + + // Don't cache Aloha.editables.length since editables may be removed on blur. + for (i = 0; i < Aloha.editables.length; i++) { + if (Aloha.editables[i] != editable && Aloha.editables[i].isActive) { + Aloha.editables[i].blur(); + } + } + + Aloha.activeEditable = editable; + }, + + /** + * Returns the current Editable + * @return {Editable} returns the active Editable + */ + getActiveEditable:function () { + return Aloha.activeEditable; + }, + + /** + * deactivated the current Editable + * @return void + */ + deactivateEditable:function () { + + if (typeof Aloha.activeEditable === 'undefined' || Aloha.activeEditable === null) { + return; + } + + // blur the editable + Aloha.activeEditable.blur(); + Aloha.activeEditable = null; + }, + + /** + * Gets an editable by an ID or null if no Editable with that ID registered. + * @param {string} id the element id to look for. + * @return {Aloha.Editable} editable + */ + getEditableById:function (id) { + var i, editablesLength; + + // if the element is a textarea than route to the editable div + if (jQuery('#' + id).get(0).nodeName.toLowerCase() === 'textarea') { + id = id + '-aloha'; + } + + // serach all editables for id + for (i = 0, editablesLength = Aloha.editables.length; i < editablesLength; i++) { + if (Aloha.editables[i].getId() == id) { + return Aloha.editables[i]; + } + } + + return null; + }, + + /** + * Checks whether an object is a registered Aloha Editable. + * @param {jQuery} obj the jQuery object to be checked. + * @return {boolean} + */ + isEditable:function (obj) { + var i, editablesLength; + + for (i = 0, editablesLength = Aloha.editables.length; i < editablesLength; i++) { + if (Aloha.editables[i].originalObj.get(0) === obj) { + return true; + } + } + return false; + }, + + /** + * Get the nearest editable parent of the given jQuery object + * @param {jQuery} $obj jQuery object + * @return {Aloha.Editable} editable or undefined if none found + */ + getEditableHost:function ($obj) { + var $parents, i, $editable, editablesLength = Aloha.editables.length; + if (!$obj) { + return; + } + + $parents = $obj.parents().andSelf().each(function () { + for (i = 0; i < editablesLength; i++) { + if (Aloha.editables[i].originalObj.get(0) === this) { + $editable = Aloha.editables[i]; + return false; + } + } + }); + + return $editable; + }, + + /** + * Logs a message to the console + * @param level Level of the log ("error", "warn" or "info", "debug") + * @param component Component that calls the log + * @param message log message + * @return void + * @hide + */ + log:function (level, component, message) { + if (typeof Aloha.Log !== "undefined") { + Aloha.Log.log(level, component, message); + } + }, + + /** + * Register the given editable + * @param editable editable to register + * @return void + * @hide + */ + registerEditable:function (editable) { + Aloha.editables.push(editable); + }, + + /** + * Unregister the given editable. It will be deactivated and removed from editables. + * @param editable editable to unregister + * @return void + * @hide + */ + unregisterEditable:function (editable) { + var id = jQuery.inArray(editable, Aloha.editables); + if (id != -1) { + Aloha.editables.splice(id, 1); + } + }, + + /** + * String representation + * @hide + */ + toString:function () { + return 'Aloha'; + }, + + /** + * Check whether at least one editable was modified + * @method + * @return {boolean} true when at least one editable was modified, false if not + */ + isModified:function () { + var i; + + // check if something needs top be saved + for (i = 0; i < Aloha.editables.length; i++) { + if (Aloha.editables[i].isModified && Aloha.editables[i].isModified()) { + return true; + } + } + + return false; + }, + + /** + * Determines the Aloha Url + * Uses Aloha.settings.baseUrl if set. + * @method + * @return {String} alohaUrl + */ + getAlohaUrl:function (suffix) { + return Aloha.settings.baseUrl; + }, + + /** + * Gets the plugin's url. + * + * @method + * @param {string} name The name with which the plugin was registered + * with. + * @return {string} The fully qualified url of this plugin. + */ + getPluginUrl:function (name) { + var url; + + if (name) { + url = Aloha.settings._pluginBaseUrlByName[name]; + if (url) { + //Check if url is absolute and attach base url if it is not + if (!url.match("^(\/|http[s]?:).*")) { + url = Aloha.getAlohaUrl() + '/' + url; + } + } + } + return url; + }, + + /** + * Disable object resizing by executing command 'enableObjectResizing', + * if the browser supports this + */ + disableObjectResizing:function () { + try { + // this will disable browsers image resizing facilities + // disable resize handles + var supported; + try { + supported = document.queryCommandSupported('enableObjectResizing'); + } catch (e) { + supported = false; + Aloha.Log.log('enableObjectResizing is not supported.'); + } + + if (supported) { + document.execCommand('enableObjectResizing', false, false); + Aloha.Log.log('enableObjectResizing disabled.'); + } + } catch (e2) { + Aloha.Log.error(e2, 'Could not disable enableObjectResizing'); + // this is just for others, who will not support disabling enableObjectResizing + } + } + }); + + return Aloha; +}); diff --git a/modules/core/aloha/static/lib/aloha/ecma5shims.js b/modules/core/aloha/static/lib/aloha/ecma5shims.js new file mode 100644 index 000000000..ce87fdd96 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/ecma5shims.js @@ -0,0 +1,327 @@ +/** + * ecma5schims.js - Shim for ECMA5 compatibility + * (http://en.wikipedia.org/wiki/Shim_%28computing%29) + * + * A shim library that implements common functions that are missing on some + * environments in order to complete ECMA5 compatibility across all major + * browsers. + * + * TODO: This code needs to be refactored so as to conform to Aloha coding + * standards. It is also severly lacking in documentation. Please take + * note of: https://github.com/alohaeditor/Aloha-Editor/wiki/Commit-Checklist . + */ + +define([], function () { + 'use strict'; + var $_; + + var shims = { + // Function bind + bind:function (owner) { + var obj = this.obj || this; + var native_method = Function.prototype.bind; + var args = Array.prototype.slice.call(arguments, 1); + + if (native_method) { + return native_method.apply(obj, arguments); + } + return function () { + return obj.apply(owner, arguments.length === 0 ? args : args.concat(Array.prototype.slice.call(arguments))); + }; + }, + + // String trim + trim:function () { + var obj = this.obj || this; + var native_method = String.prototype.trim; + + if (native_method) { + return native_method.call(obj); + } + return obj.replace(/^\s+/, '').replace(/\s+$/, ''); + }, + + // Array methods + // i optional + indexOf:function (find, i) { + var obj = this.obj || this; + var native_method = Array.prototype.indexOf; + + if (native_method) { + return native_method.call(obj, find, i); + } + if (i === undefined) { + i = 0; + } + if (i < 0) { + i += obj.length; + } + if (i < 0) { + i = 0; + } + var n; + for (n = obj.length; i < n; i++) { + if (undefined !== obj[i] && obj[i] === find) { + return i; + } + } + return -1; + }, + + // that optional + forEach:function (action, that) { + var obj = this.obj || this; + var native_method = Array.prototype.forEach; + + if (native_method) { + return native_method.call(obj, action, that); + } + var i, n; + for (i = 0, n = obj.length; i < n; i++) { + if (undefined !== obj[i]) { + action.call(that, obj[i], i, obj); + } + } + }, + + // that optional + // chain optional + map:function (mapper, that, chain) { + var obj = this.obj || this; + var native_method = Array.prototype.map; + var returnWrapper = (typeof arguments[arguments.length - 1] == "boolean") ? Array.prototype.pop.call(arguments) : false; + var result = []; + + if (native_method) { + result = native_method.call(obj, mapper, that); + } else { + var other = []; + var i, n; + for (i = 0, n = obj.length; i < n; i++) { + if (undefined !== obj[i]) { + other[i] = mapper.call(that, obj[i], i, obj); + } + } + result = other; + } + + return returnWrapper ? $_(result) : result; + }, + + // that optional + // chain optional + filter:function (filterFunc, that, chain) { + var obj = this.obj || this; + var native_method = Array.prototype.filter; + var returnWrapper = (typeof arguments[arguments.length - 1] == "boolean") ? Array.prototype.pop.call(arguments) : false; + var result = []; + + if (native_method) { + result = native_method.call(obj, filterFunc, that); + } else { + var other = [], + v, + i, + n; + for (i = 0, n = obj.length; i < n; i++) { + if (undefined !== obj[i] && filterFunc.call(that, v = obj[i], i, obj)) { + other.push(v); + } + } + result = other; + } + + return returnWrapper ? $_(result) : result; + }, + + // that optional + every:function (tester, that) { + var obj = this.obj || this; + var native_method = Array.prototype.every; + + if (native_method) { + return native_method.call(obj, tester, that); + } + var i, n; + for (i = 0, n = obj.length; i < n; i++) { + if (undefined !== obj[i] && !tester.call(that, obj[i], i, obj)) { + return false; + } + } + return true; + }, + + // that optional + some:function (tester, that) { + var obj = this.obj || this; + var native_method = Array.prototype.some; + + if (native_method) { + return native_method.call(obj, tester, that); + } + var i, n; + for (i = 0, n = obj.length; i < n; i++) { + if (undefined !== obj[i] && tester.call(that, obj[i], i, obj)) { + return true; + } + } + return false; + }, + + // Since IE7 doesn't support 'hasAttribute' method on nodes + // TODO: raise an exception if the object is not an node + hasAttribute:function (attr) { + var obj = this.obj || this; + var native_method = obj.hasAttribute; + + if (native_method) { + return obj.hasAttribute(attr); + } + return !!obj.getAttribute(attr); + } + + }; + + $_ = function (obj) { + var Wrapper = function () { + }; + Wrapper.prototype = shims; + + var wrapper_instance = new Wrapper(); + wrapper_instance.obj = obj; + return wrapper_instance; + }; + + var shim; + for (shim in shims) { + if (shims.hasOwnProperty(shim)) { + $_[shim] = shims[shim]; + } + } + + + // Node constants + // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1841493061 + if (typeof window.Node != 'undefined') { + $_.Node = window.Node; + } else { + $_.Node = { + 'ELEMENT_NODE':1, + 'ATTRIBUTE_NODE':2, + 'TEXT_NODE':3, + 'CDATA_SECTION_NODE':4, + 'ENTITY_REFERENCE_NODE':5, + 'ENTITY_NODE':6, + 'PROCESSING_INSTRUCTION_NODE':7, + 'COMMENT_NODE':8, + 'DOCUMENT_NODE':9, + 'DOCUMENT_TYPE_NODE':10, + 'DOCUMENT_FRAGMENT_NODE':11, + 'NOTATION_NODE':12, + //The two nodes are disconnected. Order between disconnected nodes is always implementation-specific. + 'DOCUMENT_POSITION_DISCONNECTED':0x01, + //The second node precedes the reference node. + 'DOCUMENT_POSITION_PRECEDING':0x02, + //The node follows the reference node. + 'DOCUMENT_POSITION_FOLLOWING':0x04, + //The node contains the reference node. A node which contains is always preceding, too. + 'DOCUMENT_POSITION_CONTAINS':0x08, + //The node is contained by the reference node. A node which is contained is always following, too. + 'DOCUMENT_POSITION_CONTAINED_BY':0x10, + //The determination of preceding versus following is implementation-specific. + 'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC':0x20 + }; + } + + //node.ownerDocument gives the document object, which isn't the right info for a disconnect + function getRootParent(node) { + var parent = null; + + if (node) { + do { + parent = node; + } while (null != (node = node.parentNode)); + } + + return parent; + } + + //Compare Position - MIT Licensed, John Resig; http://ejohn.org/blog/comparing-document-position/ + //Already checked for equality and disconnect + function comparePosition(node1, node2) { + return (node1.contains(node2) && 16) + (node2.contains(node1) && 8) + (node1.sourceIndex >= 0 && node2.sourceIndex >= 0 ? (node1.sourceIndex < node2.sourceIndex && 4) + (node1.sourceIndex > node2.sourceIndex && 2) : 1); + } + + //get a node with a sourceIndex to use + function getUseNode(node) { + //if the node already has a sourceIndex, use that node + if (null != node.sourceIndex) { + return node; + } + //otherwise, insert a comment (which has a sourceIndex but minimal DOM impact) before the node and use that + return node.parentNode.insertBefore(document.createComment(""), node); + } + + // http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition + // FIXME: Check if the DOMNode prototype can be set. + $_.compareDocumentPosition = function (node1, node2) { + + if (document.documentElement.compareDocumentPosition) { + return node1.compareDocumentPosition(node2); + } + + if (!document.documentElement.contains) { + throw 'neither compareDocumentPosition nor contains is supported by this browser.'; + } + + if (node1 == node2) { + return 0; + } + + //if they don't have the same parent, there's a disconnect + if (getRootParent(node1) != getRootParent(node2)) { + return 1; + } + + //use this if both nodes have a sourceIndex (text nodes don't) + if (null != node1.sourceIndex && null != node2.sourceIndex) { + return comparePosition(node1, node2); + } + + //document will definitely contain the other node + if (node1 == document) { + return 20; + } + if (node2 == document) { + return 10; + } + + //get sourceIndexes to use for both nodes + var useNode1 = getUseNode(node1), + useNode2 = getUseNode(node2); + + //call this function again to get the result + var result = comparePosition(useNode1, useNode2); + + //clean up if needed + if (node1 != useNode1) { + useNode1.parentNode.removeChild(useNode1); + } + if (node2 != useNode2) { + useNode2.parentNode.removeChild(useNode2); + } + return result; + }; + + $_.getComputedStyle = function (node, style) { + if (window.getComputedStyle) { + return window.getComputedStyle(node, style); + } + if (node.currentStyle) { + return node.currentStyle; + } + return null; + }; + + return $_; +}); diff --git a/modules/core/aloha/static/lib/aloha/editable.js b/modules/core/aloha/static/lib/aloha/editable.js new file mode 100644 index 000000000..7a93d5359 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/editable.js @@ -0,0 +1,931 @@ +/* editable.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'util/class', + 'jquery', + 'aloha/pluginmanager', + 'aloha/selection', + 'aloha/markup', + 'aloha/contenthandlermanager', + 'aloha/console', + 'aloha/block-jump', + 'aloha/ephemera', + 'util/dom2' +], function (Aloha, Class, jQuery, PluginManager, Selection, Markup, ContentHandlerManager, console, BlockJump, Ephemera, Dom) { + 'use strict'; + + var unescape = window.unescape, + GENTICS = window.GENTICS, + + // True, if the next editable activate event should not be handled + ignoreNextActivateEvent = false; + + /** + * A cache to hold information derived, and used in getContents(). + * @type {object)>} + * @private + */ + var editableContentCache = {}; + + // default supported and custom content handler settings + // @TODO move to new config when implemented in Aloha + Aloha.defaults.contentHandler = {}; + Aloha.defaults.contentHandler.initEditable = ['blockelement', 'sanitize']; + Aloha.defaults.contentHandler.getContents = ['blockelement', 'sanitize', 'basic']; + + // The insertHtml contenthandler ( paste ) will, by default, use all + // registered content handlers. + //Aloha.defaults.contentHandler.insertHtml = void 0; + + if (typeof Aloha.settings.contentHandler === 'undefined') { + Aloha.settings.contentHandler = {}; + } + + var defaultContentSerializer = function (editableElement) { + return jQuery(editableElement).html(); + }; + + var contentSerializer = defaultContentSerializer; + + /** + * Editable object + * @namespace Aloha + * @class Editable + * @method + * @constructor + * @param {Object} obj jQuery object reference to the object + */ + Aloha.Editable = Class.extend({ + + _constructor:function (obj) { + // check wheter the object has an ID otherwise generate and set + // globally unique ID + if (!obj.attr('id')) { + obj.attr('id', GENTICS.Utils.guid()); + } + + // store object reference + this.obj = obj; + this.originalObj = obj; + this.ready = false; + + // delimiters, timer and idle for smartContentChange + // smartContentChange triggers -- tab: '\u0009' - space: '\u0020' - enter: 'Enter' + // backspace: U+0008 - delete: U+007F + this.sccDelimiters = [':', ';', '.', '!', '?', ',', + unescape('%u0009'), unescape('%u0020'), unescape('%u0008'), unescape('%u007F'), 'Enter']; + this.sccIdle = 5000; + this.sccDelay = 500; + this.sccTimerIdle = false; + this.sccTimerDelay = false; + + // see keyset http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/keyset.html + this.keyCodeMap = { + 93:'Apps', // The Application key + 18:'Alt', // The Alt ( Menu ) key. + 20:'CapsLock', // The Caps Lock ( Capital ) key. + 17:'Control', // The Control ( Ctrl ) key. + 40:'Down', // The Down Arrow key. + 35:'End', // The End key. + 13:'Enter', // The Enter key. + 112:'F1', // The F1 key. + 113:'F2', // The F2 key. + 114:'F3', // The F3 key. + 115:'F4', // The F4 key. + 116:'F5', // The F5 key. + 117:'F6', // The F6 key. + 118:'F7', // The F7 key. + 119:'F8', // The F8 key. + 120:'F9', // The F9 key. + 121:'F10', // The F10 key. + 122:'F11', // The F11 key. + 123:'F12', // The F12 key. + + // Anybody knows the keycode for F13-F24? + 36:'Home', // The Home key. + 45:'Insert', // The Insert ( Ins ) key. + 37:'Left', // The Left Arrow key. + 224:'Meta', // The Meta key. + 34:'PageDown', // The Page Down ( Next ) key. + 33:'PageUp', // The Page Up key. + 19:'Pause', // The Pause key. + 44:'PrintScreen', // The Print Screen ( PrintScrn, SnapShot ) key. + 39:'Right', // The Right Arrow key. + 145:'Scroll', // The scroll lock key + 16:'Shift', // The Shift key. + 38:'Up', // The Up Arrow key. + 91:'Win', // The left Windows Logo key. + 92:'Win' // The right Windows Logo key. + }; + + this.placeholderClass = 'aloha-placeholder'; + + Aloha.registerEditable(this); + }, + + /** + * Initialize the editable + * @return void + * @hide + */ + init:function () { + var me = this; + + // TODO make editables their own settings. + this.settings = Aloha.settings; + + // smartContentChange settings + // @TODO move to new config when implemented in Aloha + if (Aloha.settings && Aloha.settings.smartContentChange) { + if (Aloha.settings.smartContentChange.delimiters) { + this.sccDelimiters = Aloha.settings.smartContentChange.delimiters; + } + + if (Aloha.settings.smartContentChange.idle) { + this.sccIdle = Aloha.settings.smartContentChange.idle; + } + + if (Aloha.settings.smartContentChange.delay) { + this.sccDelay = Aloha.settings.smartContentChange.delay; + } + } + + // check if Aloha can handle the obj as Editable + if (!this.check(this.obj)) { + //Aloha.log( 'warn', this, 'Aloha cannot handle {' + this.obj[0].nodeName + '}' ); + this.destroy(); + return; + } + + // apply content handler to clean up content + if (typeof Aloha.settings.contentHandler.getContents === 'undefined') { + Aloha.settings.contentHandler.getContents = Aloha.defaults.contentHandler.getContents; + } + + // apply content handler to clean up content + if (typeof Aloha.settings.contentHandler.initEditable === 'undefined') { + Aloha.settings.contentHandler.initEditable = Aloha.defaults.contentHandler.initEditable; + } + + var content = me.obj.html(); + content = ContentHandlerManager.handleContent(content, { + contenthandler:Aloha.settings.contentHandler.initEditable, + command:'initEditable' + }); + me.obj.html(content); + + // only initialize the editable when Aloha is fully ready (including plugins) + Aloha.bind('aloha-ready', function () { + // initialize the object + me.obj.addClass('aloha-editable').contentEditable(true); + + // add focus event to the object to activate + me.obj.mousedown(function (e) { + // check whether the mousedown was already handled + if (!Aloha.eventHandled) { + Aloha.eventHandled = true; + return me.activate(e); + } + }); + + me.obj.mouseup(function (e) { + Aloha.eventHandled = false; + }); + + me.obj.focus(function (e) { + return me.activate(e); + }); + + // by catching the keydown we can prevent the browser from doing its own thing + // if it does not handle the keyStroke it returns true and therefore all other + // events (incl. browser's) continue + //me.obj.keydown( function( event ) { + //me.obj.add('.aloha-block', me.obj).live('keydown', function (event) { // live not working but would be usefull + me.obj.add('.aloha-block', me.obj).keydown(function (event) { + var letEventPass = Markup.preProcessKeyStrokes(event); + me.keyCode = event.which; + + if (!letEventPass) { + // the event will not proceed to key press, therefore trigger smartContentChange + me.smartContentChange(event); + } + return letEventPass; + }); + + // handle keypress + me.obj.keypress(function (event) { + // triggers a smartContentChange to get the right charcode + // To test try http://www.w3.org/2002/09/tests/keys.html + Aloha.activeEditable.smartContentChange(event); + }); + + // handle shortcut keys + me.obj.keyup(function (event) { + if (event.keyCode === 27) { + Aloha.deactivateEditable(); + return false; + } + }); + + // register the onSelectionChange Event with the Editable field + me.obj.contentEditableSelectionChange(function (event) { + Selection.onChange(me.obj, event); + return me.obj; + }); + + // mark the editable as unmodified + me.setUnmodified(); + + // we don't do the sanitizing on aloha ready, since some plugins add elements into the content and bind + // events to it. If we sanitize by replacing the html, all events would get lost. TODO: think about a + // better solution for the sanitizing, without destroying the events apply content handler to clean up content + // var content = me.obj.html(); + // if ( typeof Aloha.settings.contentHandler.initEditable === 'undefined' ) { + // Aloha.settings.contentHandler.initEditable = Aloha.defaults.contentHandler.initEditable; + // } + // content = ContentHandlerManager.handleContent( content, { + // contenthandler: Aloha.settings.contentHandler.initEditable + // } ); + // me.obj.html( content ); + + me.snapshotContent = me.getContents(); + + // FF bug: check for empty editable contents ( no
; no whitespace ) + if (jQuery.browser.mozilla) { + me.initEmptyEditable(); + } + + me.initPlaceholder(); + + me.ready = true; + + // disable object resizing. + // we do this in here and with a slight delay, because + // starting with FF 15, this would cause a JS error + // if done before the first DOM object is made contentEditable. + window.setTimeout(function () { + Aloha.disableObjectResizing(); + }, 20); + + // throw a new event when the editable has been created + /** + * @event editableCreated fires after a new editable has been created, eg. via $( '#editme' ).aloha() + * The event is triggered in Aloha's global scope Aloha + * @param {Event} e the event object + * @param {Array} a an array which contains a reference to the currently created editable on its first position + */ + Aloha.trigger('aloha-editable-created', [me]); + }); + }, + + /** + * True, if this editable is active for editing + * @property + * @type boolean + */ + isActive:false, + + /** + * stores the original content to determine if it has been modified + * @hide + */ + originalContent:null, + + /** + * every time a selection is made in the current editable the selection has to + * be saved for further use + * @hide + */ + range:undefined, + + /** + * Check if object can be edited by Aloha Editor + * @return {boolean } editable true if Aloha Editor can handle else false + * @hide + */ + check:function () { + /* TODO check those elements + 'map', 'meter', 'object', 'output', 'progress', 'samp', + 'time', 'area', 'datalist', 'figure', 'kbd', 'keygen', + 'mark', 'math', 'wbr', 'area', + */ + + // Extract El + var me = this, + obj = this.obj, + el = obj.get(0), + nodeName = el.nodeName.toLowerCase(), + + // supported elements + textElements = ['a', 'abbr', 'address', 'article', 'aside', 'b', 'bdo', 'blockquote', 'cite', 'code', 'command', 'del', 'details', 'dfn', 'div', 'dl', 'em', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'i', 'ins', 'menu', 'nav', 'p', 'pre', 'q', 'ruby', 'section', 'small', 'span', 'strong', 'sub', 'sup', 'var'], + i, + div; + + for (i = 0; i < textElements.length; ++i) { + if (nodeName === textElements[i]) { + return true; + } + } + + // special handled elements + switch (nodeName) { + case 'label': + case 'button': + // TODO need some special handling. + break; + case 'textarea': + case 'input': + // Create a div alongside the textarea + div = jQuery('

').insertAfter(obj); + + // Resize the div to the textarea and + // Populate the div with the value of the textarea + // Then, hide the textarea + div.height(obj.height()).width(obj.width()).html(obj.val()); + + obj.hide(); + + // Attach a onsubmit to the form to place the HTML of the + // div back into the textarea + obj.parents('form:first').submit(function () { + obj.val(me.getContents()); + }); + + // Swap textarea reference with the new div + this.obj = div; + + // Supported + return true; + default: + break; + } + + // the following elements are not supported + /* + 'canvas', 'audio', 'br', 'embed', 'fieldset', 'hgroup', 'hr', + 'iframe', 'img', 'input', 'map', 'script', 'select', 'style', + 'svg', 'table', 'ul', 'video', 'ol', 'form', 'noscript', + */ + return false; + }, + + /** + * Init Placeholder + * + * @return void + */ + initPlaceholder:function () { + if (Aloha.settings.placeholder && this.isEmpty()) { + this.addPlaceholder(); + } + }, + + /** + * Check if the conteneditable is empty. + * + * @return {Boolean} + */ + isEmpty:function () { + var editableTrimedContent = jQuery.trim(this.getContents()), + onlyBrTag = (editableTrimedContent === '
') ? true : false; + return (editableTrimedContent.length === 0 || onlyBrTag); + }, + + /** + * Check if the editable div is not empty. Fixes a FF browser bug + * see issue: https://github.com/alohaeditor/Aloha-Editor/issues/269 + * + * @return {undefined} + */ + initEmptyEditable:function () { + var obj = this.obj; + if (this.empty(this.getContents())) { + jQuery(obj).prepend('
'); + } + }, + + /** + * Add placeholder in editable + * + * @return void + */ + addPlaceholder:function () { + var div = jQuery('
'), + span = jQuery(''), + el, + obj = this.obj; + if (GENTICS.Utils.Dom.allowsNesting(obj[0], div[0])) { + el = div; + } else { + el = span; + } + if (jQuery("." + this.placeholderClass, obj).length !== 0) { + return; + } + jQuery.each(Aloha.settings.placeholder, function (selector, selectorConfig) { + if (obj.is(selector)) { + el.html(selectorConfig); + } + }); + if (!el.is(':empty')) { + el.addClass(this.placeholderClass) + .addClass('aloha-ephemera'); + jQuery(obj).append(el); + } + jQuery('br', obj).remove(); + }, + + /** + * remove placeholder from contenteditable. If setCursor is true, + * will also set the cursor to the start of the selection. However, + * this will be ASYNCHRONOUS, so if you rely on the fact that + * the placeholder is removed after calling this method, setCursor + * should be false ( or not set ) + * + * @return void + */ + removePlaceholder:function (obj, setCursor) { + var placeholderClass = this.placeholderClass, + range; + if (jQuery("." + this.placeholderClass, obj).length === 0) { + return; + } + // set the cursor // remove placeholder + if (setCursor === true) { + window.setTimeout(function () { + range = new Selection.SelectionRange(); + range.startContainer = range.endContainer = obj.get(0); + range.startOffset = range.endOffset = 0; + jQuery('.' + placeholderClass, obj).remove(); + range.select(); + + }, 100); + } else { + jQuery('.' + placeholderClass, obj).remove(); + } + }, + + /** + * destroy the editable + * @return void + */ + destroy:function () { + // leave the element just to get sure + if (this === Aloha.getActiveEditable()) { + this.blur(); + } + + // special handled elements + switch (this.originalObj.get(0).nodeName.toLowerCase()) { + case 'label': + case 'button': + // TODO need some special handling. + break; + case 'textarea': + case 'input': + // restore content to original textarea + this.originalObj.val(this.getContents()); + this.obj.remove(); + this.originalObj.show(); + break; + default: + break; + } + + // now the editable is not ready any more + this.ready = false; + + // remove the placeholder if needed. + this.removePlaceholder(this.obj); + + // initialize the object and disable contentEditable + // unbind all events + // TODO should only unbind the specific handlers. + this.obj.removeClass('aloha-editable').contentEditable(false).unbind('mousedown click dblclick focus keydown keypress keyup'); + + /* TODO remove this event, it should implemented as bind and unbind + // register the onSelectionChange Event with the Editable field + this.obj.contentEditableSelectionChange( function( event ) { + Aloha.Selection.onChange( me.obj, event ); + return me.obj; + } ); + */ + + // throw a new event when the editable has been created + /** + * @event editableCreated fires after a new editable has been destroyes, eg. via $( '#editme' ).mahalo() + * The event is triggered in Aloha's global scope Aloha + * @param {Event} e the event object + * @param {Array} a an array which contains a reference to the currently created editable on its first position + */ + Aloha.trigger('aloha-editable-destroyed', [this]); + + // finally register the editable with Aloha + Aloha.unregisterEditable(this); + }, + + /** + * marks the editables current state as unmodified. Use this method to inform the editable + * that it's contents have been saved + * @method + */ + setUnmodified:function () { + this.originalContent = this.getContents(); + }, + + /** + * check if the editable has been modified during the edit process# + * @method + * @return boolean true if the editable has been modified, false otherwise + */ + isModified:function () { + return this.originalContent !== this.getContents(); + }, + + /** + * String representation of the object + * @method + * @return Aloha.Editable + */ + toString:function () { + return 'Aloha.Editable'; + }, + + /** + * check whether the editable has been disabled + */ + isDisabled:function () { + return !this.obj.contentEditable() || this.obj.contentEditable() === 'false'; + }, + + /** + * disable this editable + * a disabled editable cannot be written on by keyboard + */ + disable:function () { + return this.isDisabled() || this.obj.contentEditable(false); + }, + + /** + * enable this editable + * reenables a disabled editable to be writteable again + */ + enable:function () { + return this.isDisabled() && this.obj.contentEditable(true); + }, + + + /** + * activates an Editable for editing + * disables all other active items + * @method + */ + activate:function (e) { + // get active Editable before setting the new one. + var oldActive = Aloha.getActiveEditable(); + + // We need to ommit this call when this flag is set to true. + // This flag will only be set to true before the removePlaceholder method + // is called since that method invokes a focus event which will again trigger + // this method. We want to avoid double invokation of this method. + if (ignoreNextActivateEvent) { + ignoreNextActivateEvent = false; + return; + } + + // handle special case in which a nested editable is focused by a click + // in this case the "focus" event would be triggered on the parent element + // which actually shifts the focus away to it's parent. this if is here to + // prevent this situation + if (e && e.type === 'focus' && oldActive !== null && oldActive.obj.parent().get(0) === e.currentTarget) { + return; + } + + // leave immediately if this is already the active editable + if (this.isActive || this.isDisabled()) { + // we don't want parent editables to be triggered as well, so return false + return; + } + + this.obj.addClass('aloha-editable-active'); + + Aloha.activateEditable(this); + + ignoreNextActivateEvent = true; + this.removePlaceholder(this.obj, true); + ignoreNextActivateEvent = false; + + this.isActive = true; + + /** + * @event editableActivated fires after the editable has been activated by clicking on it. + * This event is triggered in Aloha's global scope Aloha + * @param {Event} e the event object + * @param {Array} a an array which contains a reference to last active editable on its first position, as well + * as the currently active editable on it's second position + */ + // trigger a 'general' editableActivated event + Aloha.trigger('aloha-editable-activated', { + 'oldActive':oldActive, + 'editable':this + }); + }, + + /** + * handle the blur event + * this must not be attached to the blur event, which will trigger far too often + * eg. when a table within an editable is selected + * @hide + */ + blur:function () { + this.obj.blur(); + this.isActive = false; + this.initPlaceholder(); + this.obj.removeClass('aloha-editable-active'); + + /** + * @event editableDeactivated fires after the editable has been activated by clicking on it. + * This event is triggered in Aloha's global scope Aloha + * @param {Event} e the event object + * @param {Array} a an array which contains a reference to this editable + */ + Aloha.trigger('aloha-editable-deactivated', { + editable:this + }); + + /** + * @event smartContentChanged + */ + Aloha.activeEditable.smartContentChange({ + type:'blur' + }, null); + }, + + /** + * check if the string is empty + * used for zerowidth check + * @return true if empty or string is null, false otherwise + * @hide + */ + empty:function (str) { + // br is needed for chrome + return (null === str) || (jQuery.trim(str) === '' || str === '
'); + }, + + /** + * Get the contents of this editable as a HTML string or child node DOM + * objects. + * + * @param {boolean} asObject Whether or not to retreive the contents of + * this editable as child node objects or as + * HTML string. + * @return {string|jQuery.} Contents of the editable as + * DOM objects or an HTML string. + */ + getContents:function (asObject) { + var raw = this.obj.html(); + var cache = editableContentCache[this.getId()]; + + if (!cache || raw !== cache.raw) { + + BlockJump.removeZeroWidthTextNodeFix(); + + var $clone = this.obj.clone(false); + this.removePlaceholder($clone); + $clone = jQuery(Ephemera.prune($clone[0])); + PluginManager.makeClean($clone); + + // TODO rewrite ContentHandlerManager to accept DOM trees instead of strings + $clone = jQuery('
' + ContentHandlerManager.handleContent($clone.html(), { + contenthandler:Aloha.settings.contentHandler.getContents, + command:'getContents' + }) + '
'); + + cache = editableContentCache[this.getId()] = {}; + cache.raw = raw; + cache.element = $clone; + } + + if (asObject) { + return cache.element.clone().contents(); + } + + if (null == cache.serialized) { + cache.serialized = contentSerializer(cache.element[0]); + } + return cache.serialized; + }, + + /** + * Set the contents of this editable as a HTML string + * @param content as html + * @param return as object or html string + * @return contents of the editable + */ + setContents:function (content, asObject) { + var reactivate = null; + + if (Aloha.getActiveEditable() === this) { + Aloha.deactivateEditable(); + reactivate = this; + } + + this.obj.html(content); + + if (null !== reactivate) { + reactivate.activate(); + } + + this.smartContentChange({ + type:'set-contents' + }); + + return asObject ? this.obj.contents() : contentSerializer(this.obj[0]); + }, + + /** + * Get the id of this editable + * @method + * @return id of this editable + */ + getId:function () { + return this.obj.attr('id'); + }, + + /** + * Generates and signals a smartContentChange event. + * + * A smart content change occurs when a special editing action, or a + * combination of interactions are performed by the user during the + * course of editing within an editable. + * The smart content change event would therefore signal to any + * component that is listening to this event, that content has been + * inserted into the editable that may need to be prococessed in a + * special way + * This is used for smart actions within the content/while editing. + * @param {Event} event + * @hide + */ + smartContentChange:function (event) { + var me = this, + uniChar = null, + re, + match; + + // ignore meta keys like crtl+v or crtl+l and so on + if (event && (event.metaKey || event.crtlKey || event.altKey)) { + return false; + } + + if (event && event.originalEvent) { + // regex to strip unicode + re = new RegExp("U\\+(\\w{4})"); + match = re.exec(event.originalEvent.keyIdentifier); + + // Use among browsers reliable which http://api.jquery.com/keypress + uniChar = (this.keyCodeMap[this.keyCode] || String.fromCharCode(event.which) || 'unknown'); + } + + var snapshot = null; + + function getSnapshotContent() { + if (null == snapshot) { + snapshot = me.getSnapshotContent(); + } + return snapshot; + } + + // handle "Enter" -- it's not "U+1234" -- when returned via "event.originalEvent.keyIdentifier" + // reference: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/keyset.html + if (jQuery.inArray(uniChar, this.sccDelimiters) >= 0) { + clearTimeout(this.sccTimerIdle); + clearTimeout(this.sccTimerDelay); + + this.sccTimerDelay = window.setTimeout(function () { + Aloha.trigger('aloha-smart-content-changed', { + 'editable':me, + 'keyIdentifier':event.originalEvent.keyIdentifier, + 'keyCode':event.keyCode, + 'char':uniChar, + 'triggerType':'keypress', // keypress, timer, blur, paste + 'getSnapshotContent':getSnapshotContent + }); + + console.debug('Aloha.Editable', 'smartContentChanged: event type keypress triggered'); + }, this.sccDelay); + } else if (event && event.type === 'paste') { + Aloha.trigger('aloha-smart-content-changed', { + 'editable':me, + 'keyIdentifier':null, + 'keyCode':null, + 'char':null, + 'triggerType':'paste', + 'getSnapshotContent':getSnapshotContent + }); + + } else if (event && event.type === 'blur') { + Aloha.trigger('aloha-smart-content-changed', { + 'editable':me, + 'keyIdentifier':null, + 'keyCode':null, + 'char':null, + 'triggerType':'blur', + 'getSnapshotContent':getSnapshotContent + }); + + } else if (event && event.type === 'block-change') { + Aloha.trigger('aloha-smart-content-changed', { + 'editable':me, + 'keyIdentifier':null, + 'keyCode':null, + 'char':null, + 'triggerType':'block-change', + 'getSnapshotContent':getSnapshotContent + }); + + } else if (uniChar !== null) { + // in the rare case idle time is lower then delay time + clearTimeout(this.sccTimerDelay); + clearTimeout(this.sccTimerIdle); + this.sccTimerIdle = window.setTimeout(function () { + Aloha.trigger('aloha-smart-content-changed', { + 'editable':me, + 'keyIdentifier':null, + 'keyCode':null, + 'char':null, + 'triggerType':'idle', + 'getSnapshotContent':getSnapshotContent + }); + }, this.sccIdle); + } + }, + + /** + * Get a snapshot of the active editable as a HTML string + * @hide + * @return snapshot of the editable + */ + getSnapshotContent:function () { + var ret = this.snapshotContent; + this.snapshotContent = this.getContents(); + return ret; + } + }); + + /** + * Sets the content serializer function. + * + * The default content serializer will just call the jQuery.html() + * function on the editable element (which gets the innerHTML property). + * + * This method is a static class method and will affect the result + * of editable.getContents() for all editables that have been or + * will be constructed. + * + * @param {!Function} serializerFunction + * A function that accepts a DOM element and returns the serialized + * XHTML of the element contents (excluding the start and end tag of + * the passed element). + * @api + */ + Aloha.Editable.setContentSerializer = function (serializerFunction) { + contentSerializer = serializerFunction; + }; + + /** + * Gets the content serializer function. + * + * @see Aloha.Editable.setContentSerializer() + * @api + * @return {!Function} + * The serializer function. + */ + Aloha.Editable.getContentSerializer = function () { + return contentSerializer; + }; +}); diff --git a/modules/core/aloha/static/lib/aloha/engine.js b/modules/core/aloha/static/lib/aloha/engine.js new file mode 100644 index 000000000..65de80de3 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/engine.js @@ -0,0 +1,8553 @@ +define(['aloha/core', 'aloha/ecma5shims', 'jquery'], function (Aloha, $_, jQuery) { + "use strict"; + + function hasAttribute(obj, attr) { + var native_method = obj.hasAttribute; + if (native_method) { + return obj.hasAttribute(attr); + } + return (typeof obj.attributes[attr] != "undefined"); + } + + var htmlNamespace = "http://www.w3.org/1999/xhtml"; + + var cssStylingFlag = false; + + // This is bad :( + var globalRange = null; + + // Commands are stored in a dictionary where we call their actions and such + var commands = {}; + + /////////////////////////////////////////////////////////////////////////////// + ////////////////////////////// Utility functions ////////////////////////////// + /////////////////////////////////////////////////////////////////////////////// + //@{ + + // Opera 11 puts HTML elements in the null namespace, it seems. + function isHtmlNamespace(ns) { + return ns === null || !ns || ns === htmlNamespace; + } + + // "An HTML element is an Element whose namespace is the HTML namespace." + // + // I allow an extra argument to more easily check whether something is a + // particular HTML element, like isNamedHtmlElement(node, 'OL'). It accepts arrays + // too, like isHtmlElementInArray(node, ["OL", "UL"]) to check if it's an ol or ul. + // TODO This function was prominent during profiling. Remove it + // and replace with calls to isAnyHtmlElement, isNamedHtmlElement + // and is isMappedHtmlElement. + function isHtmlElement_obsolete(node, tags) { + if (typeof tags == "string") { + tags = [tags]; + } + if (typeof tags == "object") { + tags = $_(tags).map(function (tag) { + return tag.toUpperCase(); + }); + } + return node && node.nodeType == 1 && isHtmlNamespace(node.namespaceURI) && (typeof tags == "undefined" || $_(tags).indexOf(node.tagName) != -1); + } + + function isAnyHtmlElement(node) { + return node && node.nodeType == 1 && isHtmlNamespace(node.namespaceURI); + } + + // name should be uppercase + function isNamedHtmlElement(node, name) { + return node && node.nodeType == 1 && isHtmlNamespace(node.namespaceURI) + // This function is passed in a mix of upper and lower case names + && name.toUpperCase() === node.nodeName; + } + + // TODO remove when isHtmlElementInArray is removed + function arrayContainsInsensitive(array, str) { + var i, len; + str = str.toUpperCase(); + for (i = 0, len = array.length; i < len; i++) { + if (array[i].toUpperCase() === str) { + return true; + } + } + return false; + } + + // TODO replace calls to this function with calls to isMappedHtmlElement() + function isHtmlElementInArray(node, array) { + return node && node.nodeType == 1 && isHtmlNamespace(node.namespaceURI) + // This function is passed in a mix of upper and lower case names + && arrayContainsInsensitive(array, node.nodeName); + } + + // map must have all-uppercase keys + function isMappedHtmlElement(node, map) { + return node && node.nodeType == 1 && isHtmlNamespace(node.namespaceURI) && map[node.nodeName]; + } + + /** + * Method to count the number of styles in the given style + */ + function getStyleLength(node) { + var s; + var styleLength = 0; + + if (!node) { + return 0; + } + + if (!node.style) { + return 0; + } + + // some browsers support .length on styles + if (typeof node.style.length !== 'undefined') { + return node.style.length; + } + + /*jslint forin: true*/ //not sure whether node.style.hasOwnProperty is valid + for (s in node.style) { + if (node.style[s] && node.style[s] !== 0 && node.style[s] !== 'false') { + styleLength++; + } + } + /*jslint forin: false*/ + + return styleLength; + } + + function toArray(obj) { + if (!obj) { + return null; + } + var array = [], + i, + l = obj.length; + // iterate backwards ensuring that length is an UInt32 + i = l >>> 0; + while (i--) { + array[i] = obj[i]; + } + return array; + } + + function nextNodeDescendants(node) { + while (node && !node.nextSibling) { + node = node.parentNode; + } + if (!node) { + return null; + } + return node.nextSibling; + } + + function nextNode(node) { + if (node.hasChildNodes()) { + return node.firstChild; + } + return nextNodeDescendants(node); + } + + function previousNode(node) { + if (node.previousSibling) { + node = node.previousSibling; + while (node.hasChildNodes()) { + node = node.lastChild; + } + return node; + } + if (node.parentNode && node.parentNode.nodeType == $_.Node.ELEMENT_NODE) { + return node.parentNode; + } + return null; + } + + /** + * Returns true if ancestor is an ancestor of descendant, false otherwise. + */ + function isAncestor(ancestor, descendant) { + return ancestor && descendant && Boolean($_.compareDocumentPosition(ancestor, descendant) & $_.Node.DOCUMENT_POSITION_CONTAINED_BY); + } + + /** + * Returns true if ancestor is an ancestor of or equal to descendant, false + * otherwise. + */ + function isAncestorContainer(ancestor, descendant) { + return (ancestor || descendant) && (ancestor == descendant || isAncestor(ancestor, descendant)); + } + + /** + * Returns true if descendant is a descendant of ancestor, false otherwise. + */ + function isDescendant(descendant, ancestor) { + return ancestor && descendant && Boolean($_.compareDocumentPosition(ancestor, descendant) & $_.Node.DOCUMENT_POSITION_CONTAINED_BY); + } + + /** + * Returns true if node1 is before node2 in tree order, false otherwise. + */ + function isBefore(node1, node2) { + return Boolean($_.compareDocumentPosition(node1, node2) & $_.Node.DOCUMENT_POSITION_FOLLOWING); + } + + /** + * Returns true if node1 is after node2 in tree order, false otherwise. + */ + function isAfter(node1, node2) { + return Boolean($_.compareDocumentPosition(node1, node2) & $_.Node.DOCUMENT_POSITION_PRECEDING); + } + + function getAncestors(node) { + var ancestors = []; + while (node.parentNode) { + ancestors.unshift(node.parentNode); + node = node.parentNode; + } + return ancestors; + } + + function getDescendants(node) { + var descendants = []; + var stop = nextNodeDescendants(node); + while (null != (node = nextNode(node)) && node != stop) { + descendants.push(node); + } + return descendants; + } + + function convertProperty(property) { + // Special-case for now + var map = { + "fontFamily":"font-family", + "fontSize":"font-size", + "fontStyle":"font-style", + "fontWeight":"font-weight", + "textDecoration":"text-decoration" + }; + if (typeof map[property] != "undefined") { + return map[property]; + } + + return property; + } + + // Return the value for the given CSS size, or undefined if there + // is none. + function cssSizeToLegacy(cssVal) { + return { + "xx-small":1, + "small":2, + "medium":3, + "large":4, + "x-large":5, + "xx-large":6, + "xxx-large":7 + }[cssVal]; + } + + // Return the CSS size given a legacy size. + function legacySizeToCss(legacyVal) { + return { + 1:"xx-small", + 2:"small", + 3:"medium", + 4:"large", + 5:"x-large", + 6:"xx-large", + 7:"xxx-large" + }[legacyVal]; + } + + // "the directionality" from HTML. I don't bother caring about non-HTML + // elements. + // + // "The directionality of an element is either 'ltr' or 'rtl', and is + // determined as per the first appropriate set of steps from the following + // list:" + function getDirectionality(element) { + // "If the element's dir attribute is in the ltr state + // The directionality of the element is 'ltr'." + if (element.dir == "ltr") { + return "ltr"; + } + + // "If the element's dir attribute is in the rtl state + // The directionality of the element is 'rtl'." + if (element.dir == "rtl") { + return "rtl"; + } + + // "If the element's dir attribute is in the auto state + // "If the element is a bdi element and the dir attribute is not in a + // defined state (i.e. it is not present or has an invalid value) + // [lots of complicated stuff] + // + // Skip this, since no browser implements it anyway. + + // "If the element is a root element and the dir attribute is not in a + // defined state (i.e. it is not present or has an invalid value) + // The directionality of the element is 'ltr'." + if (!isAnyHtmlElement(element.parentNode)) { + return "ltr"; + } + + // "If the element has a parent element and the dir attribute is not in a + // defined state (i.e. it is not present or has an invalid value) + // The directionality of the element is the same as the element's + // parent element's directionality." + return getDirectionality(element.parentNode); + } + + //@} + + /////////////////////////////////////////////////////////////////////////////// + ///////////////////////////// DOM Range functions ///////////////////////////// + /////////////////////////////////////////////////////////////////////////////// + //@{ + + function getNodeIndex(node) { + var ret = 0; + while (node.previousSibling) { + ret++; + node = node.previousSibling; + } + return ret; + } + + // "The length of a Node node is the following, depending on node: + // + // ProcessingInstruction + // DocumentType + // Always 0. + // Text + // Comment + // node's length. + // Any other node + // node's childNodes's length." + function getNodeLength(node) { + switch (node.nodeType) { + case $_.Node.PROCESSING_INSTRUCTION_NODE: + case $_.Node.DOCUMENT_TYPE_NODE: + return 0; + + case $_.Node.TEXT_NODE: + case $_.Node.COMMENT_NODE: + return node.length; + + default: + return node.childNodes.length; + } + } + + /** + * The position of two boundary points relative to one another, as defined by + * DOM Range. + */ + function getPosition(nodeA, offsetA, nodeB, offsetB) { + // "If node A is the same as node B, return equal if offset A equals offset + // B, before if offset A is less than offset B, and after if offset A is + // greater than offset B." + if (nodeA == nodeB) { + if (offsetA == offsetB) { + return "equal"; + } + if (offsetA < offsetB) { + return "before"; + } + if (offsetA > offsetB) { + return "after"; + } + } + + var documentPosition = $_.compareDocumentPosition(nodeB, nodeA); + // "If node A is after node B in tree order, compute the position of (node + // B, offset B) relative to (node A, offset A). If it is before, return + // after. If it is after, return before." + if (documentPosition & $_.Node.DOCUMENT_POSITION_FOLLOWING) { + var pos = getPosition(nodeB, offsetB, nodeA, offsetA); + if (pos == "before") { + return "after"; + } + if (pos == "after") { + return "before"; + } + } + + // "If node A is an ancestor of node B:" + if (documentPosition & $_.Node.DOCUMENT_POSITION_CONTAINS) { + // "Let child equal node B." + var child = nodeB; + + // "While child is not a child of node A, set child to its parent." + while (child.parentNode != nodeA) { + child = child.parentNode; + } + + // "If the index of child is less than offset A, return after." + if (getNodeIndex(child) < offsetA) { + return "after"; + } + } + + // "Return before." + return "before"; + } + + /** + * Returns the furthest ancestor of a Node as defined by DOM Range. + */ + function getFurthestAncestor(node) { + var root = node; + while (root.parentNode != null) { + root = root.parentNode; + } + return root; + } + + /** + * "contained" as defined by DOM Range: "A Node node is contained in a range + * range if node's furthest ancestor is the same as range's root, and (node, 0) + * is after range's start, and (node, length of node) is before range's end." + */ + function isContained(node, range) { + var pos1 = getPosition(node, 0, range.startContainer, range.startOffset); + if (pos1 !== "after") { + return false; + } + var pos2 = getPosition(node, getNodeLength(node), range.endContainer, range.endOffset); + if (pos2 !== "before") { + return false; + } + return getFurthestAncestor(node) == getFurthestAncestor(range.startContainer); + } + + /** + * Return all nodes contained in range that the provided function returns true + * for, omitting any with an ancestor already being returned. + */ + function getContainedNodes(range, condition) { + if (typeof condition == "undefined") { + condition = function () { + return true; + }; + } + var node = range.startContainer; + if (node.hasChildNodes() && range.startOffset < node.childNodes.length) { + // A child is contained + node = node.childNodes[range.startOffset]; + } else if (range.startOffset == getNodeLength(node)) { + // No descendant can be contained + node = nextNodeDescendants(node); + } else { + // No children; this node at least can't be contained + node = nextNode(node); + } + + var stop = range.endContainer; + if (stop.hasChildNodes() && range.endOffset < stop.childNodes.length) { + // The node after the last contained node is a child + stop = stop.childNodes[range.endOffset]; + } else { + // This node and/or some of its children might be contained + stop = nextNodeDescendants(stop); + } + + var nodeList = []; + while (isBefore(node, stop)) { + if (isContained(node, range) && condition(node)) { + nodeList.push(node); + node = nextNodeDescendants(node); + continue; + } + node = nextNode(node); + } + return nodeList; + } + + /** + * As above, but includes nodes with an ancestor that's already been returned. + */ + function getAllContainedNodes(range, condition) { + if (typeof condition == "undefined") { + condition = function () { + return true; + }; + } + var node = range.startContainer; + if (node.hasChildNodes() && range.startOffset < node.childNodes.length) { + // A child is contained + node = node.childNodes[range.startOffset]; + } else if (range.startOffset == getNodeLength(node)) { + // No descendant can be contained + node = nextNodeDescendants(node); + } else { + // No children; this node at least can't be contained + node = nextNode(node); + } + + var stop = range.endContainer; + if (stop.hasChildNodes() && range.endOffset < stop.childNodes.length) { + // The node after the last contained node is a child + stop = stop.childNodes[range.endOffset]; + } else { + // This node and/or some of its children might be contained + stop = nextNodeDescendants(stop); + } + + var nodeList = []; + while (isBefore(node, stop)) { + if (isContained(node, range) && condition(node)) { + nodeList.push(node); + } + node = nextNode(node); + } + return nodeList; + } + + // Returns either null, or something of the form rgb(x, y, z), or something of + // the form rgb(x, y, z, w) with w != 0. + function normalizeColor(color) { + if (color.toLowerCase() == "currentcolor") { + return null; + } + + var outerSpan = document.createElement("span"); + document.body.appendChild(outerSpan); + outerSpan.style.color = "black"; + + var innerSpan = document.createElement("span"); + outerSpan.appendChild(innerSpan); + innerSpan.style.color = color; + color = $_.getComputedStyle(innerSpan).color; + + if (color == "rgb(0, 0, 0)") { + // Maybe it's really black, maybe it's invalid. + outerSpan.color = "white"; + color = $_.getComputedStyle(innerSpan).color; + if (color != "rgb(0, 0, 0)") { + return null; + } + } + + document.body.removeChild(outerSpan); + + // I rely on the fact that browsers generally provide consistent syntax for + // getComputedStyle(), although it's not standardized. There are only two + // exceptions I found: + if (/^rgba\([0-9]+, [0-9]+, [0-9]+, 1\)$/.test(color)) { + // IE10PP2 seems to do this sometimes. + return color.replace("rgba", "rgb").replace(", 1)", ")"); + } + if (color == "transparent") { + // IE10PP2, Firefox 7.0a2, and Opera 11.50 all return "transparent" if + // the specified value is "transparent". + return "rgba(0, 0, 0, 0)"; + } + return color; + } + + // Returns either null, or something of the form #xxxxxx, or the color itself + // if it's a valid keyword. + function parseSimpleColor(color) { + color = color.toLowerCase(); + if ($_(["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"]).indexOf(color) != -1) { + return color; + } + + color = normalizeColor(color); + var matches = /^rgb\(([0-9]+), ([0-9]+), ([0-9]+)\)$/.exec(color); + if (matches) { + return "#" + parseInt(matches[1], 10).toString(16).replace(/^.$/, "0$&") + parseInt(matches[2], 10).toString(16).replace(/^.$/, "0$&") + parseInt(matches[3], 10).toString(16).replace(/^.$/, "0$&"); + } + return null; + } + + //@} + + ////////////////////////////////////////////////////////////////////////////// + /////////////////////////// Edit command functions /////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////////////////////// + ///// Methods of the HTMLDocument interface ///// + ///////////////////////////////////////////////// + //@{ + + var getStateOverride, + setStateOverride, + unsetStateOverride, + getValueOverride, + setValueOverride, + unsetValueOverride; + + var executionStackDepth = 0; + + // Helper function for fontSize's action plus queryOutputHelper. It's just the + // middle of fontSize's action, ripped out into its own function. + function normalizeFontSize(value) { + // "Strip leading and trailing whitespace from value." + // + // Cheap hack, not following the actual algorithm. + value = $_(value).trim(); + + // "If value is a valid floating point number, or would be a valid + // floating point number if a single leading "+" character were + // stripped:" + if (/^[\-+]?[0-9]+(\.[0-9]+)?([eE][\-+]?[0-9]+)?$/.test(value)) { + var mode; + + // "If the first character of value is "+", delete the character + // and let mode be "relative-plus"." + if (value[0] == "+") { + value = value.slice(1); + mode = "relative-plus"; + // "Otherwise, if the first character of value is "-", delete the + // character and let mode be "relative-minus"." + } else if (value[0] == "-") { + value = value.slice(1); + mode = "relative-minus"; + // "Otherwise, let mode be "absolute"." + } else { + mode = "absolute"; + } + + // "Apply the rules for parsing non-negative integers to value, and + // let number be the result." + // + // Another cheap hack. + var num = parseInt(value, 10); + + // "If mode is "relative-plus", add three to number." + if (mode == "relative-plus") { + num += 3; + } + + // "If mode is "relative-minus", negate number, then add three to + // it." + if (mode == "relative-minus") { + num = 3 - num; + } + + // "If number is less than one, let number equal 1." + if (num < 1) { + num = 1; + } + + // "If number is greater than seven, let number equal 7." + if (num > 7) { + num = 7; + } + + // "Set value to the string here corresponding to number:" [table + // omitted] + value = { + 1:"xx-small", + 2:"small", + 3:"medium", + 4:"large", + 5:"x-large", + 6:"xx-large", + 7:"xxx-large" + }[num]; + } + + return value; + } + + function getLegacyFontSize(size) { + // For convenience in other places in my code, I handle all sizes, not just + // pixel sizes as the spec says. This means pixel sizes have to be passed + // in suffixed with "px", not as plain numbers. + size = normalizeFontSize(size); + + if (jQuery.inArray(size, ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"]) == -1 && !/^[0-9]+(\.[0-9]+)?(cm|mm|in|pt|pc|px)$/.test(size)) { + // There is no sensible legacy size for things like "2em". + return null; + } + + var font = document.createElement("font"); + document.body.appendChild(font); + if (size == "xxx-large") { + font.size = 7; + } else { + font.style.fontSize = size; + } + var pixelSize = parseInt($_.getComputedStyle(font).fontSize, 10); + document.body.removeChild(font); + + // "Let returned size be 1." + var returnedSize = 1; + + // "While returned size is less than 7:" + while (returnedSize < 7) { + // "Let lower bound be the resolved value of "font-size" in pixels + // of a font element whose size attribute is set to returned size." + font = document.createElement("font"); + font.size = returnedSize; + document.body.appendChild(font); + var lowerBound = parseInt($_.getComputedStyle(font).fontSize, 10); + + // "Let upper bound be the resolved value of "font-size" in pixels + // of a font element whose size attribute is set to one plus + // returned size." + font.size = 1 + returnedSize; + var upperBound = parseInt($_.getComputedStyle(font).fontSize, 10); + document.body.removeChild(font); + + // "Let average be the average of upper bound and lower bound." + var average = (upperBound + lowerBound) / 2; + + // "If pixel size is less than average, return the one-element + // string consisting of the digit returned size." + if (pixelSize < average) { + return String(returnedSize); + } + + // "Add one to returned size." + returnedSize++; + } + + // "Return "7"." + return "7"; + } + + // Helper function for common behavior. + function editCommandMethod(command, prop, range, callback) { + var ret; + + // Set up our global range magic, but only if we're the outermost function + if (executionStackDepth == 0 && typeof range != "undefined") { + globalRange = range; + } else if (executionStackDepth == 0) { + globalRange = null; + globalRange = range; + } + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + // + // We can't throw a real one, but a string will do for our purposes. + if (!commands.hasOwnProperty(command)) { + throw "NOT_SUPPORTED_ERR"; + } + + // "If command has no action, raise an INVALID_ACCESS_ERR exception." + // "If command has no indeterminacy, raise an INVALID_ACCESS_ERR + // exception." + // "If command has no state, raise an INVALID_ACCESS_ERR exception." + // "If command has no value, raise an INVALID_ACCESS_ERR exception." + if (prop != "enabled" && !commands[command].hasOwnProperty(prop)) { + throw "INVALID_ACCESS_ERR"; + } + + executionStackDepth++; + try { + ret = callback(); + } catch (e) { + executionStackDepth--; + throw e; + } + executionStackDepth--; + return ret; + } + + function myQueryCommandEnabled(command, range) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + command = command.toLowerCase(); + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + return editCommandMethod(command, "action", range, (function (command) { + return function () { + // "Among commands defined in this specification, those listed in + // Miscellaneous commands are always enabled. The other commands defined + // here are enabled if the active range is not null, and disabled + // otherwise." + return jQuery.inArray(command, ["copy", "cut", "paste", "selectall", "stylewithcss", "usecss"]) != -1 || range !== null; + }; + }(command))); + } + + function setActiveRange(range) { + var rangeObject = new window.GENTICS.Utils.RangeObject(); + + rangeObject.startContainer = range.startContainer; + rangeObject.startOffset = range.startOffset; + rangeObject.endContainer = range.endContainer; + rangeObject.endOffset = range.endOffset; + + rangeObject.select(); + } + + function myExecCommand(commandArg, showUiArg, valueArg, range) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + var command = commandArg.toLowerCase(); + var showUi = showUiArg; + var value = valueArg; + + // "If only one argument was provided, let show UI be false." + // + // If range was passed, I can't actually detect how many args were passed + // . . . + if (arguments.length == 1 || (arguments.length >= 4 && typeof showUi == "undefined")) { + showUi = false; + } + + // "If only one or two arguments were provided, let value be the empty + // string." + if (arguments.length <= 2 || (arguments.length >= 4 && typeof value == "undefined")) { + value = ""; + } + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + // + // "If command has no action, raise an INVALID_ACCESS_ERR exception." + return editCommandMethod(command, "action", range, (function (command, showUi, value) { + return function () { + // "If command is not enabled, return false." + if (!myQueryCommandEnabled(command)) { + return false; + } + + // "Take the action for command, passing value to the instructions as an + // argument." + commands[command].action(value, range); + + // always fix the range after the command is complete + setActiveRange(range); + + // "Return true." + return true; + }; + }(command, showUi, value))); + } + + function myQueryCommandIndeterm(command, range) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + command = command.toLowerCase(); + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + // + // "If command has no indeterminacy, raise an INVALID_ACCESS_ERR + // exception." + return editCommandMethod(command, "indeterm", range, (function (command) { + return function () { + // "If command is not enabled, return false." + if (!myQueryCommandEnabled(command, range)) { + return false; + } + + // "Return true if command is indeterminate, otherwise false." + return commands[command].indeterm(range); + }; + }(command))); + } + + function myQueryCommandState(command, range) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + command = command.toLowerCase(); + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + // + // "If command has no state, raise an INVALID_ACCESS_ERR exception." + return editCommandMethod(command, "state", range, (function (command) { + return function () { + // "If command is not enabled, return false." + if (!myQueryCommandEnabled(command, range)) { + return false; + } + + // "If the state override for command is set, return it." + if (typeof getStateOverride(command, range) != "undefined") { + return getStateOverride(command, range); + } + + // "Return true if command's state is true, otherwise false." + return commands[command].state(range); + }; + }(command))); + } + + // "When the queryCommandSupported(command) method on the HTMLDocument + // interface is invoked, the user agent must return true if command is + // supported, and false otherwise." + function myQueryCommandSupported(command) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + command = command.toLowerCase(); + + return commands.hasOwnProperty(command); + } + + function myQueryCommandValue(command, range) { + // "All of these methods must treat their command argument ASCII + // case-insensitively." + command = command.toLowerCase(); + + // "If command is not supported, raise a NOT_SUPPORTED_ERR exception." + // + // "If command has no value, raise an INVALID_ACCESS_ERR exception." + return editCommandMethod(command, "value", range, function () { + // "If command is not enabled, return the empty string." + if (!myQueryCommandEnabled(command, range)) { + return ""; + } + + // "If command is "fontSize" and its value override is set, convert the + // value override to an integer number of pixels and return the legacy + // font size for the result." + if (command == "fontsize" && getValueOverride("fontsize", range) !== undefined) { + return getLegacyFontSize(getValueOverride("fontsize", range)); + } + + // "If the value override for command is set, return it." + if (typeof getValueOverride(command, range) != "undefined") { + return getValueOverride(command, range); + } + + // "Return command's value." + return commands[command].value(range); + }); + } + + //@} + + ////////////////////////////// + ///// Common definitions ///// + ////////////////////////////// + //@{ + + // "A prohibited paragraph child name is "address", "article", "aside", + // "blockquote", "caption", "center", "col", "colgroup", "dd", "details", + // "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", + // "form", "h1", "h2", "h3", "h4", "h5", "h6", "header", "hgroup", "hr", "li", + // "listing", "menu", "nav", "ol", "p", "plaintext", "pre", "section", + // "summary", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "ul", or + // "xmp"." + var prohibitedParagraphChildNamesMap = { + "ADDRESS":true, + "ARTICLE":true, + "ASIDE":true, + "BLOCKQUOTE":true, + "CAPTION":true, + "CENTER":true, + "COL":true, + "COLGROUP":true, + "DD":true, + "DETAILS":true, + "DIR":true, + "DIV":true, + "DL":true, + "DT":true, + "FIELDSET":true, + "FIGCAPTION":true, + "FIGURE":true, + "FOOTER":true, + "FORM":true, + "H1":true, + "H2":true, + "H3":true, + "H4":true, + "H5":true, + "H6":true, + "HEADER":true, + "HGROUP":true, + "HR":true, + "LI":true, + "LISTING":true, + "MENU":true, + "NAV":true, + "OL":true, + "P":true, + "PLAINTEXT":true, + "PRE":true, + "SECTION":true, + "SUMMARY":true, + "TABLE":true, + "TBODY":true, + "TD":true, + "TFOOT":true, + "TH":true, + "THEAD":true, + "TR":true, + "UL":true, + "XMP":true + }; + + // "A prohibited paragraph child is an HTML element whose local name is a + // prohibited paragraph child name." + function isProhibitedParagraphChild(node) { + return isMappedHtmlElement(node, prohibitedParagraphChildNamesMap); + } + + var nonBlockDisplayValuesMap = { + "inline":true, + "inline-block":true, + "inline-table":true, + "none":true + }; + + // "A block node is either an Element whose "display" property does not have + // resolved value "inline" or "inline-block" or "inline-table" or "none", or a + // Document, or a DocumentFragment." + function isBlockNode(node) { + return node && ((node.nodeType == $_.Node.ELEMENT_NODE && !nonBlockDisplayValuesMap[$_.getComputedStyle(node).display]) || node.nodeType == $_.Node.DOCUMENT_NODE || node.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE); + } + + // "An inline node is a node that is not a block node." + function isInlineNode(node) { + return node && !isBlockNode(node); + } + + // "An editing host is a node that is either an Element with a contenteditable + // attribute set to the true state, or the Element child of a Document whose + // designMode is enabled." + function isEditingHost(node) { + return node && node.nodeType == $_.Node.ELEMENT_NODE && (node.contentEditable == "true" || (node.parentNode && node.parentNode.nodeType == $_.Node.DOCUMENT_NODE && node.parentNode.designMode == "on")); + } + + // "Something is editable if it is a node which is not an editing host, does + // not have a contenteditable attribute set to the false state, and whose + // parent is an editing host or editable." + function isEditable(node) { + // This is slightly a lie, because we're excluding non-HTML elements with + // contentEditable attributes. + return node && !isEditingHost(node) && (node.nodeType != $_.Node.ELEMENT_NODE || node.contentEditable != "false" || jQuery(node).hasClass('aloha-table-wrapper')) && (isEditingHost(node.parentNode) || isEditable(node.parentNode)); + } + + // Helper function, not defined in the spec + function hasEditableDescendants(node) { + var i; + for (i = 0; i < node.childNodes.length; i++) { + if (isEditable(node.childNodes[i]) || hasEditableDescendants(node.childNodes[i])) { + return true; + } + } + return false; + } + + // "The editing host of node is null if node is neither editable nor an editing + // host; node itself, if node is an editing host; or the nearest ancestor of + // node that is an editing host, if node is editable." + function getEditingHostOf(node) { + if (isEditingHost(node)) { + return node; + } + if (isEditable(node)) { + var ancestor = node.parentNode; + while (!isEditingHost(ancestor)) { + ancestor = ancestor.parentNode; + } + return ancestor; + } + return null; + } + + // "Two nodes are in the same editing host if the editing host of the first is + // non-null and the same as the editing host of the second." + function inSameEditingHost(node1, node2) { + return getEditingHostOf(node1) && getEditingHostOf(node1) == getEditingHostOf(node2); + } + + // "A collapsed line break is a br that begins a line box which has nothing + // else in it, and therefore has zero height." + function isCollapsedLineBreak(br) { + if (!isNamedHtmlElement(br, 'br')) { + return false; + } + + // Add a zwsp after it and see if that changes the height of the nearest + // non-inline parent. Note: this is not actually reliable, because the + // parent might have a fixed height or something. + var ref = br.parentNode; + while ($_.getComputedStyle(ref).display == "inline") { + ref = ref.parentNode; + } + + var origStyle = { + height:ref.style.height, + maxHeight:ref.style.maxHeight, + minHeight:ref.style.minHeight + }; + + ref.style.height = 'auto'; + ref.style.maxHeight = 'none'; + if (!(jQuery.browser.msie && jQuery.browser.version < 8)) { + ref.style.minHeight = '0'; + } + var space = document.createTextNode('\u200b'); + var origHeight = ref.offsetHeight; + if (origHeight == 0) { + throw 'isCollapsedLineBreak: original height is zero, bug?'; + } + br.parentNode.insertBefore(space, br.nextSibling); + var finalHeight = ref.offsetHeight; + space.parentNode.removeChild(space); + + ref.style.height = origStyle.height; + ref.style.maxHeight = origStyle.maxHeight; + if (!(jQuery.browser.msie && jQuery.browser.version < 8)) { + ref.style.minHeight = origStyle.minHeight; + } + + // Allow some leeway in case the zwsp didn't create a whole new line, but + // only made an existing line slightly higher. Firefox 6.0a2 shows this + // behavior when the first line is bold. + return origHeight < finalHeight - 5; + } + + // "An extraneous line break is a br that has no visual effect, in that + // removing it from the DOM would not change layout, except that a br that is + // the sole child of an li is not extraneous." + function isExtraneousLineBreak(br) { + + if (!isNamedHtmlElement(br, 'br')) { + return false; + } + + if (isNamedHtmlElement(br.parentNode, "li") && br.parentNode.childNodes.length == 1) { + return false; + } + + // Make the line break disappear and see if that changes the block's + // height. Yes, this is an absurd hack. We have to reset height etc. on + // the reference node because otherwise its height won't change if it's not + // auto. + var ref = br.parentNode; + while ($_.getComputedStyle(ref).display == "inline") { + ref = ref.parentNode; + } + + var origStyle = { + height:ref.style.height, + maxHeight:ref.style.maxHeight, + minHeight:ref.style.minHeight, + contentEditable:ref.contentEditable + }; + + ref.style.height = 'auto'; + ref.style.maxHeight = 'none'; + ref.style.minHeight = '0'; + // IE7 would ignore display:none in contentEditable, so we temporarily set it to false + if (jQuery.browser.msie && jQuery.browser.version <= 7) { + ref.contentEditable = 'false'; + } + + var origHeight = ref.offsetHeight; + if (origHeight == 0) { + throw "isExtraneousLineBreak: original height is zero, bug?"; + } + + var origBrDisplay = br.style.display; + br.style.display = 'none'; + var finalHeight = ref.offsetHeight; + + // Restore original styles to the touched elements. + ref.style.height = origStyle.height; + ref.style.maxHeight = origStyle.maxHeight; + ref.style.minHeight = origStyle.minHeight; + // reset contentEditable for IE7 + if (jQuery.browser.msie && jQuery.browser.version <= 7) { + ref.contentEditable = origStyle.contentEditable; + } + br.style.display = origBrDisplay; + + // https://github.com/alohaeditor/Aloha-Editor/issues/516 + // look like it works in msie > 7 + /* if (jQuery.browser.msie && jQuery.browser.version < 8) { + br.removeAttribute("style"); + ref.removeAttribute("style"); + } */ + + return origHeight == finalHeight; + } + + // "A whitespace node is either a Text node whose data is the empty string; or + // a Text node whose data consists only of one or more tabs (0x0009), line + // feeds (0x000A), carriage returns (0x000D), and/or spaces (0x0020), and whose + // parent is an Element whose resolved value for "white-space" is "normal" or + // "nowrap"; or a Text node whose data consists only of one or more tabs + // (0x0009), carriage returns (0x000D), and/or spaces (0x0020), and whose + // parent is an Element whose resolved value for "white-space" is "pre-line"." + function isWhitespaceNode(node) { + return node && node.nodeType == $_.Node.TEXT_NODE && (node.data == "" || (/^[\t\n\r ]+$/.test(node.data) && node.parentNode && node.parentNode.nodeType == $_.Node.ELEMENT_NODE && jQuery.inArray($_.getComputedStyle(node.parentNode).whiteSpace, ["normal", "nowrap"]) != -1) || (/^[\t\r ]+$/.test(node.data) && node.parentNode && node.parentNode.nodeType == $_.Node.ELEMENT_NODE && $_.getComputedStyle(node.parentNode).whiteSpace == "pre-line") || (/^[\t\n\r ]+$/.test(node.data) && node.parentNode && node.parentNode.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE)); + } + + /** + * Collapse sequences of ignorable whitespace (tab (0x0009), line feed (0x000A), carriage return (0x000D), space (0x0020)) to only one space. + * Preserve the given range if necessary. + * @param node text node + * @param range range + */ + function collapseWhitespace(node, range) { + // "If node is neither editable nor an editing host, abort these steps." + if (!isEditable(node) && !isEditingHost(node)) { + return; + } + + // if the given node is not a text node, return + if (!node || node.nodeType !== $_.Node.TEXT_NODE) { + return; + } + + // if the node is in a pre or pre-wrap node, return + if (jQuery.inArray($_.getComputedStyle(node.parentNode).whiteSpace, ["pre", "pre-wrap"]) != -1) { + return; + } + + // if the given node does not contain sequences of at least two consecutive ignorable whitespace characters, return + if (!/[\t\n\r ]{2,}/.test(node.data)) { + return; + } + + var newData = ''; + var correctStart = range.startContainer == node; + var correctEnd = range.endContainer == node; + var wsFound = false; + var i; + + // iterate through the node data + for (i = 0; i < node.data.length; ++i) { + if (/[\t\n\r ]/.test(node.data.substr(i, 1))) { + // found a whitespace + if (!wsFound) { + // this is the first whitespace in the current sequence + // add a whitespace to the new data sequence + newData += ' '; + // remember that we found a whitespace + wsFound = true; + } else { + // this is not the first whitespace in the sequence, so omit this character + if (correctStart && newData.length < range.startOffset) { + range.startOffset--; + } + if (correctEnd && newData.length < range.endOffset) { + range.endOffset--; + } + } + } else { + newData += node.data.substr(i, 1); + wsFound = false; + } + } + + // set the new data + node.data = newData; + } + + // "node is a collapsed whitespace node if the following algorithm returns + // true:" + function isCollapsedWhitespaceNode(node) { + // "If node is not a whitespace node, return false." + if (!isWhitespaceNode(node)) { + return false; + } + + // "If node's data is the empty string, return true." + if (node.data == "") { + return true; + } + + // "Let ancestor be node's parent." + var ancestor = node.parentNode; + + // "If ancestor is null, return true." + if (!ancestor) { + return true; + } + + // "If the "display" property of some ancestor of node has resolved value + // "none", return true." + if ($_(getAncestors(node)).some(function (ancestor) { + return ancestor.nodeType == $_.Node.ELEMENT_NODE && $_.getComputedStyle(ancestor).display == "none"; + })) { + return true; + } + + // "While ancestor is not a block node and its parent is not null, set + // ancestor to its parent." + while (!isBlockNode(ancestor) && ancestor.parentNode) { + ancestor = ancestor.parentNode; + } + + // "Let reference be node." + var reference = node; + + // "While reference is a descendant of ancestor:" + while (reference != ancestor) { + // "Let reference be the node before it in tree order." + reference = previousNode(reference); + + // "If reference is a block node or a br, return true." + if (isBlockNode(reference) || isNamedHtmlElement(reference, 'br')) { + return true; + } + + // "If reference is a Text node that is not a whitespace node, or is an + // img, break from this loop." + if ((reference.nodeType == $_.Node.TEXT_NODE && !isWhitespaceNode(reference)) || isNamedHtmlElement(reference, 'img')) { + break; + } + } + + // "Let reference be node." + reference = node; + + // "While reference is a descendant of ancestor:" + var stop = nextNodeDescendants(ancestor); + while (reference != stop) { + // "Let reference be the node after it in tree order, or null if there + // is no such node." + reference = nextNode(reference); + + // "If reference is a block node or a br, return true." + if (isBlockNode(reference) || isNamedHtmlElement(reference, 'br')) { + return true; + } + + // "If reference is a Text node that is not a whitespace node, or is an + // img, break from this loop." + if ((reference && reference.nodeType == $_.Node.TEXT_NODE && !isWhitespaceNode(reference)) || isNamedHtmlElement(reference, 'img')) { + break; + } + } + + // "Return false." + return false; + } + + // "Something is visible if it is a node that either is a block node, or a Text + // node that is not a collapsed whitespace node, or an img, or a br that is not + // an extraneous line break, or any node with a visible descendant; excluding + // any node with an ancestor container Element whose "display" property has + // resolved value "none"." + function isVisible(node) { + var i; + + if (!node) { + return false; + } + + if ($_(getAncestors(node).concat(node)) + .filter(function (node) { + return node.nodeType == $_.Node.ELEMENT_NODE; + }, true) + .some(function (node) { + return $_.getComputedStyle(node).display == "none"; + })) { + return false; + } + + if (isBlockNode(node) || (node.nodeType == $_.Node.TEXT_NODE && !isCollapsedWhitespaceNode(node)) || isNamedHtmlElement(node, 'img') || (isNamedHtmlElement(node, 'br') && !isExtraneousLineBreak(node))) { + return true; + } + + for (i = 0; i < node.childNodes.length; i++) { + if (isVisible(node.childNodes[i])) { + return true; + } + } + + return false; + } + + // "Something is invisible if it is a node that is not visible." + function isInvisible(node) { + return node && !isVisible(node); + } + + // "A collapsed block prop is either a collapsed line break that is not an + // extraneous line break, or an Element that is an inline node and whose + // children are all either invisible or collapsed block props and that has at + // least one child that is a collapsed block prop." + function isCollapsedBlockProp(node) { + var i; + + if (isCollapsedLineBreak(node) && !isExtraneousLineBreak(node)) { + return true; + } + + if (!isInlineNode(node) || node.nodeType != $_.Node.ELEMENT_NODE) { + return false; + } + + var hasCollapsedBlockPropChild = false; + for (i = 0; i < node.childNodes.length; i++) { + if (!isInvisible(node.childNodes[i]) && !isCollapsedBlockProp(node.childNodes[i])) { + return false; + } + if (isCollapsedBlockProp(node.childNodes[i])) { + hasCollapsedBlockPropChild = true; + } + } + + return hasCollapsedBlockPropChild; + } + + // Please note: This method is deprecated and will be removed. + // Every command should use the value and range parameter. + // + // "The active range is the first range in the Selection given by calling + // getSelection() on the context object, or null if there is no such range." + // + // We cheat and return globalRange if that's defined. We also ensure that the + // active range meets the requirements that selection boundary points are + // supposed to meet, i.e., that the nodes are both Text or Element nodes that + // descend from a Document. + function getActiveRange() { + var ret; + if (globalRange) { + ret = globalRange; + } else if (Aloha.getSelection().rangeCount) { + ret = Aloha.getSelection().getRangeAt(0); + } else { + return null; + } + if (jQuery.inArray(ret.startContainer.nodeType, [$_.Node.TEXT_NODE, $_.Node.ELEMENT_NODE]) == -1 || jQuery.inArray(ret.endContainer.nodeType, [$_.Node.TEXT_NODE, $_.Node.ELEMENT_NODE]) == -1 || !ret.startContainer.ownerDocument || !ret.endContainer.ownerDocument || !isDescendant(ret.startContainer, ret.startContainer.ownerDocument) || !isDescendant(ret.endContainer, ret.endContainer.ownerDocument)) { + throw "Invalid active range; test bug?"; + } + return ret; + } + + // "For some commands, each HTMLDocument must have a boolean state override + // and/or a string value override. These do not change the command's state or + // value, but change the way some algorithms behave, as specified in those + // algorithms' definitions. Initially, both must be unset for every command. + // Whenever the number of ranges in the Selection changes to something + // different, and whenever a boundary point of the range at a given index in + // the Selection changes to something different, the state override and value + // override must be unset for every command." + // + // We implement this crudely by using setters and getters. To verify that the + // selection hasn't changed, we copy the active range and just check the + // endpoints match. This isn't really correct, but it's good enough for us. + // Unset state/value overrides are undefined. We put everything in a function + // so no one can access anything except via the provided functions, since + // otherwise callers might mistakenly use outdated overrides (if the selection + // has changed). + (function () { + var stateOverrides = {}; + var valueOverrides = {}; + var storedRange = null; + + function resetOverrides(range) { + if (!storedRange || storedRange.startContainer != range.startContainer || storedRange.endContainer != range.endContainer || storedRange.startOffset != range.startOffset || storedRange.endOffset != range.endOffset) { + stateOverrides = {}; + valueOverrides = {}; + storedRange = range.cloneRange(); + } + } + + getStateOverride = function (command, range) { + resetOverrides(range); + return stateOverrides[command]; + }; + + setStateOverride = function (command, newState, range) { + resetOverrides(range); + stateOverrides[command] = newState; + }; + + unsetStateOverride = function (command, range) { + resetOverrides(range); + delete stateOverrides[command]; + }; + + getValueOverride = function (command, range) { + resetOverrides(range); + return valueOverrides[command]; + }; + + // "The value override for the backColor command must be the same as the + // value override for the hiliteColor command, such that setting one sets + // the other to the same thing and unsetting one unsets the other." + setValueOverride = function (command, newValue, range) { + resetOverrides(range); + valueOverrides[command] = newValue; + if (command == "backcolor") { + valueOverrides.hilitecolor = newValue; + } else if (command == "hilitecolor") { + valueOverrides.backcolor = newValue; + } + }; + + unsetValueOverride = function (command, range) { + resetOverrides(range); + delete valueOverrides[command]; + if (command == "backcolor") { + delete valueOverrides.hilitecolor; + } else if (command == "hilitecolor") { + delete valueOverrides.backcolor; + } + }; + }()); + + //@} + + ///////////////////////////// + ///// Common algorithms ///// + ///////////////////////////// + + ///// Assorted common algorithms ///// + //@{ + + function movePreservingRanges(node, newParent, newIndex, range) { + // For convenience, I allow newIndex to be -1 to mean "insert at the end". + if (newIndex == -1) { + newIndex = newParent.childNodes.length; + } + + // "When the user agent is to move a Node to a new location, preserving + // ranges, it must remove the Node from its original parent (if any), then + // insert it in the new location. In doing so, however, it must ignore the + // regular range mutation rules, and instead follow these rules:" + + // "Let node be the moved Node, old parent and old index be the old parent + // (which may be null) and index, and new parent and new index be the new + // parent and index." + var oldParent = node.parentNode; + var oldIndex = getNodeIndex(node); + var i; + + // We only even attempt to preserve the global range object and the ranges + // in the selection, not every range out there (the latter is probably + // impossible). + var ranges = [range]; + for (i = 0; i < Aloha.getSelection().rangeCount; i++) { + ranges.push(Aloha.getSelection().getRangeAt(i)); + } + var boundaryPoints = []; + $_(ranges).forEach(function (range) { + boundaryPoints.push([range.startContainer, range.startOffset]); + boundaryPoints.push([range.endContainer, range.endOffset]); + }); + + $_(boundaryPoints).forEach(function (boundaryPoint) { + // "If a boundary point's node is the same as or a descendant of node, + // leave it unchanged, so it moves to the new location." + // + // No modifications necessary. + + // "If a boundary point's node is new parent and its offset is greater + // than new index, add one to its offset." + if (boundaryPoint[0] == newParent && boundaryPoint[1] > newIndex) { + boundaryPoint[1]++; + } + + // "If a boundary point's node is old parent and its offset is old index or + // old index + 1, set its node to new parent and add new index − old index + // to its offset." + if (boundaryPoint[0] == oldParent && (boundaryPoint[1] == oldIndex || boundaryPoint[1] == oldIndex + 1)) { + boundaryPoint[0] = newParent; + boundaryPoint[1] += newIndex - oldIndex; + } + + // "If a boundary point's node is old parent and its offset is greater than + // old index + 1, subtract one from its offset." + if (boundaryPoint[0] == oldParent && boundaryPoint[1] > oldIndex + 1) { + boundaryPoint[1]--; + } + }); + + // Now actually move it and preserve the ranges. + if (newParent.childNodes.length == newIndex) { + newParent.appendChild(node); + } else { + newParent.insertBefore(node, newParent.childNodes[newIndex]); + } + + // if we're off actual node boundaries this implies that the move was + // part of a deletion process (backspace). If that's the case we + // attempt to fix this by restoring the range to the first index of + // the node that has been moved + var newRange = null; + if (boundaryPoints[0][1] > boundaryPoints[0][0].childNodes.length && boundaryPoints[1][1] > boundaryPoints[1][0].childNodes.length) { + range.setStart(node, 0); + range.setEnd(node, 0); + } else { + range.setStart(boundaryPoints[0][0], boundaryPoints[0][1]); + range.setEnd(boundaryPoints[1][0], boundaryPoints[1][1]); + + Aloha.getSelection().removeAllRanges(); + for (i = 1; i < ranges.length; i++) { + newRange = Aloha.createRange(); + newRange.setStart(boundaryPoints[2 * i][0], boundaryPoints[2 * i][1]); + newRange.setEnd(boundaryPoints[2 * i + 1][0], boundaryPoints[2 * i + 1][1]); + Aloha.getSelection().addRange(newRange); + } + if (newRange) { + range = newRange; + } + } + } + + /** + * Copy all non empty attributes from an existing to a new element + * + * @param {dom} element The source DOM element + * @param {dom} newElement The new DOM element which will get the attributes of the source DOM element + * @return void + */ + function copyAttributes(element, newElement) { + + // This is an IE7 workaround. We identified three places that were connected + // to the mysterious ie7 crash: + // 1. Add attribute to dom element (Initialization of jquery-ui sortable) + // 2. Access the jquery expando attribute. Just reading the name is + // sufficient to make the browser vulnerable for the crash (Press enter) + // 3. On editable blur the Aloha.editables[0].getContents(); gets invoked. + // This invokation somehow crashes the ie7. We assume that the access of + // shared expando attribute updates internal references which are not + // correclty handled during clone(); + if (jQuery.browser.msie && jQuery.browser.version >= 7 && typeof element.attributes[jQuery.expando] !== 'undefined') { + jQuery(element).removeAttr(jQuery.expando); + } + + var attrs = element.attributes; + var i; + for (i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + // attr.specified is an IE specific check to exclude attributes that were never really set. + if (typeof attr.specified === "undefined" || attr.specified) { + if (typeof newElement.setAttributeNS === 'function') { + newElement.setAttributeNS(attr.namespaceURI, attr.name, attr.value); + } else { + // fixes https://github.com/alohaeditor/Aloha-Editor/issues/515 + newElement.setAttribute(attr.name, attr.value); + } + } + } + } + + function setTagName(element, newName, range) { + // "If element is an HTML element with local name equal to new name, return + // element." + if (isNamedHtmlElement(element, newName)) { + return element; + } + + // "If element's parent is null, return element." + if (!element.parentNode) { + return element; + } + + // "Let replacement element be the result of calling createElement(new + // name) on the ownerDocument of element." + var replacementElement = element.ownerDocument.createElement(newName); + + // "Insert replacement element into element's parent immediately before + // element." + element.parentNode.insertBefore(replacementElement, element); + + // "Copy all attributes of element to replacement element, in order." + copyAttributes(element, replacementElement); + + // "While element has children, append the first child of element as the + // last child of replacement element, preserving ranges." + while (element.childNodes.length) { + movePreservingRanges(element.firstChild, replacementElement, replacementElement.childNodes.length, range); + } + + // "Remove element from its parent." + element.parentNode.removeChild(element); + + // if the range still uses the old element, we modify it to the new one + if (range.startContainer === element) { + range.startContainer = replacementElement; + } + if (range.endContainer === element) { + range.endContainer = replacementElement; + } + + // "Return replacement element." + return replacementElement; + } + + function removeExtraneousLineBreaksBefore(node) { + // "Let ref be the previousSibling of node." + var ref = node.previousSibling; + + // "If ref is null, abort these steps." + if (!ref) { + return; + } + + // "While ref has children, set ref to its lastChild." + while (ref.hasChildNodes()) { + ref = ref.lastChild; + } + + // "While ref is invisible but not an extraneous line break, and ref does + // not equal node's parent, set ref to the node before it in tree order." + while (isInvisible(ref) && !isExtraneousLineBreak(ref) && ref != node.parentNode) { + ref = previousNode(ref); + } + + // "If ref is an editable extraneous line break, remove it from its + // parent." + if (isEditable(ref) && isExtraneousLineBreak(ref)) { + ref.parentNode.removeChild(ref); + } + } + + function removeExtraneousLineBreaksAtTheEndOf(node) { + // "Let ref be node." + var ref = node; + + // "While ref has children, set ref to its lastChild." + while (ref.hasChildNodes()) { + ref = ref.lastChild; + } + + // "While ref is invisible but not an extraneous line break, and ref does + // not equal node, set ref to the node before it in tree order." + while (isInvisible(ref) && !isExtraneousLineBreak(ref) && ref != node) { + ref = previousNode(ref); + } + + // "If ref is an editable extraneous line break, remove it from its + // parent." + if (isEditable(ref) && isExtraneousLineBreak(ref)) { + ref.parentNode.removeChild(ref); + } + } + + // "To remove extraneous line breaks from a node, first remove extraneous line + // breaks before it, then remove extraneous line breaks at the end of it." + function removeExtraneousLineBreaksFrom(node) { + removeExtraneousLineBreaksBefore(node); + removeExtraneousLineBreaksAtTheEndOf(node); + } + + //@} + ///// Wrapping a list of nodes ///// + //@{ + + function wrap(nodeList, siblingCriteria, newParentInstructions, range) { + var i; + + // "If not provided, sibling criteria returns false and new parent + // instructions returns null." + if (typeof siblingCriteria == "undefined") { + siblingCriteria = function () { + return false; + }; + } + if (typeof newParentInstructions == "undefined") { + newParentInstructions = function () { + return null; + }; + } + + // "If node list is empty, or the first member of node list is not + // editable, return null and abort these steps." + if (!nodeList.length || !isEditable(nodeList[0])) { + return null; + } + + // "If node list's last member is an inline node that's not a br, and node + // list's last member's nextSibling is a br, append that br to node list." + if (isInlineNode(nodeList[nodeList.length - 1]) && !isNamedHtmlElement(nodeList[nodeList.length - 1], "br") && isNamedHtmlElement(nodeList[nodeList.length - 1].nextSibling, "br")) { + nodeList.push(nodeList[nodeList.length - 1].nextSibling); + } + + // "If the previousSibling of the first member of node list is editable and + // running sibling criteria on it returns true, let new parent be the + // previousSibling of the first member of node list." + var newParent; + if (isEditable(nodeList[0].previousSibling) && siblingCriteria(nodeList[0].previousSibling)) { + newParent = nodeList[0].previousSibling; + + // "Otherwise, if the nextSibling of the last member of node list is + // editable and running sibling criteria on it returns true, let new parent + // be the nextSibling of the last member of node list." + } else if (isEditable(nodeList[nodeList.length - 1].nextSibling) && siblingCriteria(nodeList[nodeList.length - 1].nextSibling)) { + newParent = nodeList[nodeList.length - 1].nextSibling; + + // "Otherwise, run new parent instructions, and let new parent be the + // result." + } else { + newParent = newParentInstructions(); + } + + // "If new parent is null, abort these steps and return null." + if (!newParent) { + return null; + } + + // "If new parent's parent is null:" + if (!newParent.parentNode) { + // "Insert new parent into the parent of the first member of node list + // immediately before the first member of node list." + nodeList[0].parentNode.insertBefore(newParent, nodeList[0]); + + // "If any range has a boundary point with node equal to the parent of + // new parent and offset equal to the index of new parent, add one to + // that boundary point's offset." + // + // Try to fix range + var startContainer = range.startContainer, + startOffset = range.startOffset, + endContainer = range.endContainer, + endOffset = range.endOffset; + if (startContainer == newParent.parentNode && startOffset >= getNodeIndex(newParent)) { + range.setStart(startContainer, startOffset + 1); + } + if (endContainer == newParent.parentNode && endOffset >= getNodeIndex(newParent)) { + range.setEnd(endContainer, endOffset + 1); + } + + // Only try to fix the global range. TODO remove globalRange here + if (globalRange && globalRange !== range) { + startContainer = globalRange.startContainer; + startOffset = globalRange.startOffset; + endContainer = globalRange.endContainer; + endOffset = globalRange.endOffset; + if (startContainer == newParent.parentNode && startOffset >= getNodeIndex(newParent)) { + globalRange.setStart(startContainer, startOffset + 1); + } + if (endContainer == newParent.parentNode && endOffset >= getNodeIndex(newParent)) { + globalRange.setEnd(endContainer, endOffset + 1); + } + } + } + + // "Let original parent be the parent of the first member of node list." + var originalParent = nodeList[0].parentNode; + + // "If new parent is before the first member of node list in tree order:" + if (isBefore(newParent, nodeList[0])) { + // "If new parent is not an inline node, but the last child of new + // parent and the first member of node list are both inline nodes, and + // the last child of new parent is not a br, call createElement("br") + // on the ownerDocument of new parent and append the result as the last + // child of new parent." + if (!isInlineNode(newParent) && isInlineNode(newParent.lastChild) && isInlineNode(nodeList[0]) && !isNamedHtmlElement(newParent.lastChild, "BR")) { + newParent.appendChild(newParent.ownerDocument.createElement("br")); + } + + // "For each node in node list, append node as the last child of new + // parent, preserving ranges." + for (i = 0; i < nodeList.length; i++) { + movePreservingRanges(nodeList[i], newParent, -1, range); + } + + // "Otherwise:" + } else { + // "If new parent is not an inline node, but the first child of new + // parent and the last member of node list are both inline nodes, and + // the last member of node list is not a br, call createElement("br") + // on the ownerDocument of new parent and insert the result as the + // first child of new parent." + if (!isInlineNode(newParent) && isInlineNode(newParent.firstChild) && isInlineNode(nodeList[nodeList.length - 1]) && !isNamedHtmlElement(nodeList[nodeList.length - 1], "BR")) { + newParent.insertBefore(newParent.ownerDocument.createElement("br"), newParent.firstChild); + } + + // "For each node in node list, in reverse order, insert node as the + // first child of new parent, preserving ranges." + for (i = nodeList.length - 1; i >= 0; i--) { + movePreservingRanges(nodeList[i], newParent, 0, range); + } + } + + // "If original parent is editable and has no children, remove it from its + // parent." + if (isEditable(originalParent) && !originalParent.hasChildNodes()) { + originalParent.parentNode.removeChild(originalParent); + } + + // "If new parent's nextSibling is editable and running sibling criteria on + // it returns true:" + if (isEditable(newParent.nextSibling) && siblingCriteria(newParent.nextSibling)) { + // "If new parent is not an inline node, but new parent's last child + // and new parent's nextSibling's first child are both inline nodes, + // and new parent's last child is not a br, call createElement("br") on + // the ownerDocument of new parent and append the result as the last + // child of new parent." + if (!isInlineNode(newParent) && isInlineNode(newParent.lastChild) && isInlineNode(newParent.nextSibling.firstChild) && !isNamedHtmlElement(newParent.lastChild, "BR")) { + newParent.appendChild(newParent.ownerDocument.createElement("br")); + } + + // "While new parent's nextSibling has children, append its first child + // as the last child of new parent, preserving ranges." + while (newParent.nextSibling.hasChildNodes()) { + movePreservingRanges(newParent.nextSibling.firstChild, newParent, -1, range); + } + + // "Remove new parent's nextSibling from its parent." + newParent.parentNode.removeChild(newParent.nextSibling); + } + + // "Remove extraneous line breaks from new parent." + removeExtraneousLineBreaksFrom(newParent); + + // "Return new parent." + return newParent; + } + + + //@} + ///// Allowed children ///// + //@{ + + // "A name of an element with inline contents is "a", "abbr", "b", "bdi", + // "bdo", "cite", "code", "dfn", "em", "h1", "h2", "h3", "h4", "h5", "h6", "i", + // "kbd", "mark", "p", "pre", "q", "rp", "rt", "ruby", "s", "samp", "small", + // "span", "strong", "sub", "sup", "u", "var", "acronym", "listing", "strike", + // "xmp", "big", "blink", "font", "marquee", "nobr", or "tt"." + var namesOfElementsWithInlineContentsMap = { + "A":true, + "ABBR":true, + "B":true, + "BDI":true, + "BDO":true, + "CITE":true, + "CODE":true, + "DFN":true, + "EM":true, + "H1":true, + "H2":true, + "H3":true, + "H4":true, + "H5":true, + "H6":true, + "I":true, + "KBD":true, + "MARK":true, + "P":true, + "PRE":true, + "Q":true, + "RP":true, + "RT":true, + "RUBY":true, + "S":true, + "SAMP":true, + "SMALL":true, + "SPAN":true, + "STRONG":true, + "SUB":true, + "SUP":true, + "U":true, + "VAR":true, + "ACRONYM":true, + "LISTING":true, + "STRIKE":true, + "XMP":true, + "BIG":true, + "BLINK":true, + "FONT":true, + "MARQUEE":true, + "NOBR":true, + "TT":true + }; + + + var tableRelatedElements = { + "colgroup":true, + "table":true, + "tbody":true, + "tfoot":true, + "thead":true, + "tr":true + }; + + var scriptRelatedElements = { + "script":true, + "style":true, + "plaintext":true, + "xmp":true + }; + + var prohibitedHeadingNestingMap = jQuery.extend({ + "H1":true, + "H2":true, + "H3":true, + "H4":true, + "H5":true, + "H6":true + }, prohibitedParagraphChildNamesMap); + var prohibitedTableNestingMap = { + "CAPTION":true, + "COL":true, + "COLGROUP":true, + "TBODY":true, + "TD":true, + "TFOOT":true, + "TH":true, + "THEAD":true, + "TR":true + }; + var prohibitedDefNestingMap = { + "DD":true, + "DT":true + }; + var prohibitedNestingCombinationsMap = { + "A":jQuery.extend({ + "A":true + }, prohibitedParagraphChildNamesMap), + "DD":prohibitedDefNestingMap, + "DT":prohibitedDefNestingMap, + "LI":{ + "LI":true + }, + "NOBR":jQuery.extend({ + "NOBR":true + }, prohibitedParagraphChildNamesMap), + "H1":prohibitedHeadingNestingMap, + "H2":prohibitedHeadingNestingMap, + "H3":prohibitedHeadingNestingMap, + "H4":prohibitedHeadingNestingMap, + "H5":prohibitedHeadingNestingMap, + "H6":prohibitedHeadingNestingMap, + "TD":prohibitedTableNestingMap, + "TH":prohibitedTableNestingMap, + // this is the same as namesOfElementsWithInlineContentsMap excluding a and h1-h6 elements above + "ABBR":prohibitedParagraphChildNamesMap, + "B":prohibitedParagraphChildNamesMap, + "BDI":prohibitedParagraphChildNamesMap, + "BDO":prohibitedParagraphChildNamesMap, + "CITE":prohibitedParagraphChildNamesMap, + "CODE":prohibitedParagraphChildNamesMap, + "DFN":prohibitedParagraphChildNamesMap, + "EM":prohibitedParagraphChildNamesMap, + "I":prohibitedParagraphChildNamesMap, + "KBD":prohibitedParagraphChildNamesMap, + "MARK":prohibitedParagraphChildNamesMap, + "P":prohibitedParagraphChildNamesMap, + "PRE":prohibitedParagraphChildNamesMap, + "Q":prohibitedParagraphChildNamesMap, + "RP":prohibitedParagraphChildNamesMap, + "RT":prohibitedParagraphChildNamesMap, + "RUBY":prohibitedParagraphChildNamesMap, + "S":prohibitedParagraphChildNamesMap, + "SAMP":prohibitedParagraphChildNamesMap, + "SMALL":prohibitedParagraphChildNamesMap, + "SPAN":prohibitedParagraphChildNamesMap, + "STRONG":prohibitedParagraphChildNamesMap, + "SUB":prohibitedParagraphChildNamesMap, + "SUP":prohibitedParagraphChildNamesMap, + "U":prohibitedParagraphChildNamesMap, + "VAR":prohibitedParagraphChildNamesMap, + "ACRONYM":prohibitedParagraphChildNamesMap, + "LISTING":prohibitedParagraphChildNamesMap, + "STRIKE":prohibitedParagraphChildNamesMap, + "XMP":prohibitedParagraphChildNamesMap, + "BIG":prohibitedParagraphChildNamesMap, + "BLINK":prohibitedParagraphChildNamesMap, + "FONT":prohibitedParagraphChildNamesMap, + "MARQUEE":prohibitedParagraphChildNamesMap, + "TT":prohibitedParagraphChildNamesMap + }; + + // "An element with inline contents is an HTML element whose local name is a + // name of an element with inline contents." + function isElementWithInlineContents(node) { + return isMappedHtmlElement(node, namesOfElementsWithInlineContentsMap); + } + + function isAllowedChild(child, parent_) { + // "If parent is "colgroup", "table", "tbody", "tfoot", "thead", "tr", or + // an HTML element with local name equal to one of those, and child is a + // Text node whose data does not consist solely of space characters, return + // false." + if ((tableRelatedElements[parent_] || isHtmlElementInArray(parent_, ["colgroup", "table", "tbody", "tfoot", "thead", "tr"])) && typeof child == "object" && child.nodeType == $_.Node.TEXT_NODE && !/^[ \t\n\f\r]*$/.test(child.data)) { + return false; + } + + // "If parent is "script", "style", "plaintext", or "xmp", or an HTML + // element with local name equal to one of those, and child is not a Text + // node, return false." + if ((scriptRelatedElements[parent_] || isHtmlElementInArray(parent_, ["script", "style", "plaintext", "xmp"])) && (typeof child != "object" || child.nodeType != $_.Node.TEXT_NODE)) { + return false; + } + + // "If child is a Document, DocumentFragment, or DocumentType, return + // false." + if (typeof child == "object" && (child.nodeType == $_.Node.DOCUMENT_NODE || child.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE || child.nodeType == $_.Node.DOCUMENT_TYPE_NODE)) { + return false; + } + + // "If child is an HTML element, set child to the local name of child." + if (isAnyHtmlElement(child)) { + child = child.tagName.toLowerCase(); + } + + // "If child is not a string, return true." + if (typeof child != "string") { + return true; + } + + // "If parent is an HTML element:" + if (isAnyHtmlElement(parent_)) { + // "If child is "a", and parent or some ancestor of parent is an a, + // return false." + // + // "If child is a prohibited paragraph child name and parent or some + // ancestor of parent is an element with inline contents, return + // false." + // + // "If child is "h1", "h2", "h3", "h4", "h5", or "h6", and parent or + // some ancestor of parent is an HTML element with local name "h1", + // "h2", "h3", "h4", "h5", or "h6", return false." + var ancestor = parent_; + while (ancestor) { + if (child == "a" && isNamedHtmlElement(ancestor, 'a')) { + return false; + } + if (prohibitedParagraphChildNamesMap[child.toUpperCase()] && isElementWithInlineContents(ancestor)) { + return false; + } + if (/^h[1-6]$/.test(child) && isAnyHtmlElement(ancestor) && /^H[1-6]$/.test(ancestor.tagName)) { + return false; + } + ancestor = ancestor.parentNode; + } + + // "Let parent be the local name of parent." + parent_ = parent_.tagName.toLowerCase(); + } + + // "If parent is an Element or DocumentFragment, return true." + if (typeof parent_ == "object" && (parent_.nodeType == $_.Node.ELEMENT_NODE || parent_.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE)) { + return true; + } + + // "If parent is not a string, return false." + if (typeof parent_ != "string") { + return false; + } + + // "If parent is on the left-hand side of an entry on the following list, + // then return true if child is listed on the right-hand side of that + // entry, and false otherwise." + switch (parent_) { + case "colgroup": + return child == "col"; + case "table": + return jQuery.inArray(child, ["caption", "col", "colgroup", "tbody", "td", "tfoot", "th", "thead", "tr"]) != -1; + case "tbody": + case "thead": + case "tfoot": + return jQuery.inArray(child, ["td", "th", "tr"]) != -1; + case "tr": + return jQuery.inArray(child, ["td", "th"]) != -1; + case "dl": + return jQuery.inArray(child, ["dt", "dd"]) != -1; + case "dir": + case "ol": + case "ul": + return jQuery.inArray(child, ["dir", "li", "ol", "ul"]) != -1; + case "hgroup": + return (/^h[1-6]$/).test(child); + } + + // "If child is "body", "caption", "col", "colgroup", "frame", "frameset", + // "head", "html", "tbody", "td", "tfoot", "th", "thead", or "tr", return + // false." + if (jQuery.inArray(child, ["body", "caption", "col", "colgroup", "frame", "frameset", "head", "html", "tbody", "td", "tfoot", "th", "thead", "tr"]) != -1) { + return false; + } + + // "If child is "dd" or "dt" and parent is not "dl", return false." + if (jQuery.inArray(child, ["dd", "dt"]) != -1 && parent_ != "dl") { + return false; + } + + // "If child is "li" and parent is not "ol" or "ul", return false." + if (child == "li" && parent_ != "ol" && parent_ != "ul") { + return false; + } + + // "If parent is on the left-hand side of an entry on the following list + // and child is listed on the right-hand side of that entry, return false." + var leftSide = prohibitedNestingCombinationsMap[parent_.toUpperCase()]; + if (leftSide) { + var rightSide = leftSide[child.toUpperCase()]; + if (rightSide) { + return false; + } + } + + // "Return true." + return true; + } + + + //@} + + ////////////////////////////////////// + ///// Inline formatting commands ///// + ////////////////////////////////////// + + ///// Inline formatting command definitions ///// + //@{ + + // "A node node is effectively contained in a range range if range is not + // collapsed, and at least one of the following holds:" + function isEffectivelyContained(node, range) { + if (range.collapsed) { + return false; + } + + // "node is contained in range." + if (isContained(node, range)) { + return true; + } + + // "node is range's start node, it is a Text node, and its length is + // different from range's start offset." + if (node == range.startContainer && node.nodeType == $_.Node.TEXT_NODE && getNodeLength(node) != range.startOffset) { + return true; + } + + // "node is range's end node, it is a Text node, and range's end offset is + // not 0." + if (node == range.endContainer && node.nodeType == $_.Node.TEXT_NODE && range.endOffset != 0) { + return true; + } + + // "node has at least one child; and all its children are effectively + // contained in range; and either range's start node is not a descendant of + // node or is not a Text node or range's start offset is zero; and either + // range's end node is not a descendant of node or is not a Text node or + // range's end offset is its end node's length." + if (node.hasChildNodes() && $_(node.childNodes).every(function (child) { + return isEffectivelyContained(child, range); + }) + && (!isDescendant(range.startContainer, node) + || range.startContainer.nodeType != $_.Node.TEXT_NODE + || range.startOffset == 0) + && (!isDescendant(range.endContainer, node) + || range.endContainer.nodeType != $_.Node.TEXT_NODE + || range.endOffset == getNodeLength(range.endContainer))) { + return true; + } + + return false; + } + + // Like get(All)ContainedNodes(), but for effectively contained nodes. + function getEffectivelyContainedNodes(range, condition) { + if (typeof condition == "undefined") { + condition = function () { + return true; + }; + } + var node = range.startContainer; + while (isEffectivelyContained(node.parentNode, range)) { + node = node.parentNode; + } + + var stop = nextNodeDescendants(range.endContainer); + + var nodeList = []; + while (isBefore(node, stop)) { + if (isEffectivelyContained(node, range) && condition(node)) { + nodeList.push(node); + node = nextNodeDescendants(node); + continue; + } + node = nextNode(node); + } + return nodeList; + } + + function getAllEffectivelyContainedNodes(range, condition) { + if (typeof condition == "undefined") { + condition = function () { + return true; + }; + } + var node = range.startContainer; + while (isEffectivelyContained(node.parentNode, range)) { + node = node.parentNode; + } + + var stop = nextNodeDescendants(range.endContainer); + + var nodeList = []; + while (isBefore(node, stop)) { + if (isEffectivelyContained(node, range) && condition(node)) { + nodeList.push(node); + } + node = nextNode(node); + } + return nodeList; + } + + // "A modifiable element is a b, em, i, s, span, strong, sub, sup, or u element + // with no attributes except possibly style; or a font element with no + // attributes except possibly style, color, face, and/or size; or an a element + // with no attributes except possibly style and/or href." + function isModifiableElement(node) { + if (!isAnyHtmlElement(node)) { + return false; + } + + if (jQuery.inArray(node.tagName, ["B", "EM", "I", "S", "SPAN", "STRIKE", "STRONG", "SUB", "SUP", "U"]) != -1) { + if (node.attributes.length == 0) { + return true; + } + + if (node.attributes.length == 1 && hasAttribute(node, "style")) { + return true; + } + } + + if (node.tagName == "FONT" || node.tagName == "A") { + var numAttrs = node.attributes.length; + + if (hasAttribute(node, "style")) { + numAttrs--; + } + + if (node.tagName == "FONT") { + if (hasAttribute(node, "color")) { + numAttrs--; + } + + if (hasAttribute(node, "face")) { + numAttrs--; + } + + if (hasAttribute(node, "size")) { + numAttrs--; + } + } + + if (node.tagName == "A" && hasAttribute(node, "href")) { + numAttrs--; + } + + if (numAttrs == 0) { + return true; + } + } + + return false; + } + + function isSimpleModifiableElement(node) { + // "A simple modifiable element is an HTML element for which at least one + // of the following holds:" + if (!isAnyHtmlElement(node)) { + return false; + } + + // Only these elements can possibly be a simple modifiable element. + if (jQuery.inArray(node.tagName, ["A", "B", "EM", "FONT", "I", "S", "SPAN", "STRIKE", "STRONG", "SUB", "SUP", "U"]) == -1) { + return false; + } + + // "It is an a, b, em, font, i, s, span, strike, strong, sub, sup, or u + // element with no attributes." + if (node.attributes.length == 0) { + return true; + } + + // If it's got more than one attribute, everything after this fails. + if (node.attributes.length > 1) { + return false; + } + + // "It is an a, b, em, font, i, s, span, strike, strong, sub, sup, or u + // element with exactly one attribute, which is style, which sets no CSS + // properties (including invalid or unrecognized properties)." + // + // Not gonna try for invalid or unrecognized. + if (hasAttribute(node, "style") && getStyleLength(node) == 0) { + return true; + } + + // "It is an a element with exactly one attribute, which is href." + if (node.tagName == "A" && hasAttribute(node, "href")) { + return true; + } + + // "It is a font element with exactly one attribute, which is either color, + // face, or size." + if (node.tagName == "FONT" && (hasAttribute(node, "color") || hasAttribute(node, "face") || hasAttribute(node, "size"))) { + return true; + } + + // "It is a b or strong element with exactly one attribute, which is style, + // and the style attribute sets exactly one CSS property (including invalid + // or unrecognized properties), which is "font-weight"." + if ((node.tagName == "B" || node.tagName == "STRONG") && hasAttribute(node, "style") && getStyleLength(node) == 1 && node.style.fontWeight != "") { + return true; + } + + // "It is an i or em element with exactly one attribute, which is style, + // and the style attribute sets exactly one CSS property (including invalid + // or unrecognized properties), which is "font-style"." + if ((node.tagName == "I" || node.tagName == "EM") && hasAttribute(node, "style") && getStyleLength(node) == 1 && node.style.fontStyle != "") { + return true; + } + + // "It is an a, font, or span element with exactly one attribute, which is + // style, and the style attribute sets exactly one CSS property (including + // invalid or unrecognized properties), and that property is not + // "text-decoration"." + if ((node.tagName == "A" || node.tagName == "FONT" || node.tagName == "SPAN") && hasAttribute(node, "style") && getStyleLength(node) == 1 && node.style.textDecoration == "") { + return true; + } + + // "It is an a, font, s, span, strike, or u element with exactly one + // attribute, which is style, and the style attribute sets exactly one CSS + // property (including invalid or unrecognized properties), which is + // "text-decoration", which is set to "line-through" or "underline" or + // "overline" or "none"." + if (jQuery.inArray(node.tagName, ["A", "FONT", "S", "SPAN", "STRIKE", "U"]) != -1 && hasAttribute(node, "style") && getStyleLength(node) == 1 && (node.style.textDecoration == "line-through" || node.style.textDecoration == "underline" || node.style.textDecoration == "overline" || node.style.textDecoration == "none")) { + return true; + } + + return false; + } + + // "Two quantities are equivalent values for a command if either both are null, + // or both are strings and they're equal and the command does not define any + // equivalent values, or both are strings and the command defines equivalent + // values and they match the definition." + function areEquivalentValues(command, val1, val2) { + if (val1 === null && val2 === null) { + return true; + } + + if (typeof val1 == "string" && typeof val2 == "string" && val1 == val2 && !(commands[command].hasOwnProperty("equivalentValues"))) { + return true; + } + + if (typeof val1 == "string" && typeof val2 == "string" && commands[command].hasOwnProperty("equivalentValues") && commands[command].equivalentValues(val1, val2)) { + return true; + } + + return false; + } + + // "Two quantities are loosely equivalent values for a command if either they + // are equivalent values for the command, or if the command is the fontSize + // command; one of the quantities is one of "xx-small", "small", "medium", + // "large", "x-large", "xx-large", or "xxx-large"; and the other quantity is + // the resolved value of "font-size" on a font element whose size attribute has + // the corresponding value set ("1" through "7" respectively)." + function areLooselyEquivalentValues(command, val1, val2) { + if (areEquivalentValues(command, val1, val2)) { + return true; + } + + if (command != "fontsize" || typeof val1 != "string" || typeof val2 != "string") { + return false; + } + + // Static variables in JavaScript? + var callee = areLooselyEquivalentValues; + if (callee.sizeMap === undefined) { + callee.sizeMap = {}; + var font = document.createElement("font"); + document.body.appendChild(font); + $_(["xx-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"]).forEach(function (keyword) { + font.size = cssSizeToLegacy(keyword); + callee.sizeMap[keyword] = $_.getComputedStyle(font).fontSize; + }); + document.body.removeChild(font); + } + + return val1 === callee.sizeMap[val2] || val2 === callee.sizeMap[val1]; + } + + //@} + ///// Assorted inline formatting command algorithms ///// + //@{ + + function getEffectiveCommandValue(node, command) { + // "If neither node nor its parent is an Element, return null." + if (node.nodeType != $_.Node.ELEMENT_NODE && (!node.parentNode || node.parentNode.nodeType != $_.Node.ELEMENT_NODE)) { + return null; + } + + // "If node is not an Element, return the effective command value of its + // parent for command." + if (node.nodeType != $_.Node.ELEMENT_NODE) { + return getEffectiveCommandValue(node.parentNode, command); + } + + // "If command is "createLink" or "unlink":" + if (command == "createlink" || command == "unlink") { + // "While node is not null, and is not an a element that has an href + // attribute, set node to its parent." + while (node && (!isAnyHtmlElement(node) || node.tagName != "A" || !hasAttribute(node, "href"))) { + node = node.parentNode; + } + + // "If node is null, return null." + if (!node) { + return null; + } + + // "Return the value of node's href attribute." + return node.getAttribute("href"); + } + + // "If command is "backColor" or "hiliteColor":" + if (command == "backcolor" || command == "hilitecolor") { + // "While the resolved value of "background-color" on node is any + // fully transparent value, and node's parent is an Element, set + // node to its parent." + // + // Another lame hack to avoid flawed APIs. + while (($_.getComputedStyle(node).backgroundColor == "rgba(0, 0, 0, 0)" || $_.getComputedStyle(node).backgroundColor === "" || $_.getComputedStyle(node).backgroundColor == "transparent") && node.parentNode && node.parentNode.nodeType == $_.Node.ELEMENT_NODE) { + node = node.parentNode; + } + + // "If the resolved value of "background-color" on node is a fully + // transparent value, return "rgb(255, 255, 255)"." + if ($_.getComputedStyle(node).backgroundColor == "rgba(0, 0, 0, 0)" || $_.getComputedStyle(node).backgroundColor === "" || $_.getComputedStyle(node).backgroundColor == "transparent") { + return "rgb(255, 255, 255)"; + } + + // "Otherwise, return the resolved value of "background-color" for + // node." + return $_.getComputedStyle(node).backgroundColor; + } + + // "If command is "subscript" or "superscript":" + if (command == "subscript" || command == "superscript") { + // "Let affected by subscript and affected by superscript be two + // boolean variables, both initially false." + var affectedBySubscript = false; + var affectedBySuperscript = false; + + // "While node is an inline node:" + while (isInlineNode(node)) { + var verticalAlign = $_.getComputedStyle(node).verticalAlign; + + // "If node is a sub, set affected by subscript to true." + if (isNamedHtmlElement(node, 'sub')) { + affectedBySubscript = true; + // "Otherwise, if node is a sup, set affected by superscript to + // true." + } else if (isNamedHtmlElement(node, 'sup')) { + affectedBySuperscript = true; + } + + // "Set node to its parent." + node = node.parentNode; + } + + // "If affected by subscript and affected by superscript are both true, + // return the string "mixed"." + if (affectedBySubscript && affectedBySuperscript) { + return "mixed"; + } + + // "If affected by subscript is true, return "subscript"." + if (affectedBySubscript) { + return "subscript"; + } + + // "If affected by superscript is true, return "superscript"." + if (affectedBySuperscript) { + return "superscript"; + } + + // "Return null." + return null; + } + + // "If command is "strikethrough", and the "text-decoration" property of + // node or any of its ancestors has resolved value containing + // "line-through", return "line-through". Otherwise, return null." + if (command == "strikethrough") { + do { + if ($_.getComputedStyle(node).textDecoration.indexOf("line-through") != -1) { + return "line-through"; + } + node = node.parentNode; + } while (node && node.nodeType == $_.Node.ELEMENT_NODE); + return null; + } + + // "If command is "underline", and the "text-decoration" property of node + // or any of its ancestors has resolved value containing "underline", + // return "underline". Otherwise, return null." + if (command == "underline") { + do { + if ($_.getComputedStyle(node).textDecoration.indexOf("underline") != -1) { + return "underline"; + } + node = node.parentNode; + } while (node && node.nodeType == $_.Node.ELEMENT_NODE); + return null; + } + + if (!commands[command].hasOwnProperty("relevantCssProperty")) { + throw "Bug: no relevantCssProperty for " + command + " in getEffectiveCommandValue"; + } + + // "Return the resolved value for node of the relevant CSS property for + // command." + return $_.getComputedStyle(node)[commands[command].relevantCssProperty].toString(); + } + + function getSpecifiedCommandValue(element, command) { + // "If command is "backColor" or "hiliteColor" and element's display + // property does not have resolved value "inline", return null." + if ((command == "backcolor" || command == "hilitecolor") && $_.getComputedStyle(element).display != "inline") { + return null; + } + + // "If command is "createLink" or "unlink":" + if (command == "createlink" || command == "unlink") { + // "If element is an a element and has an href attribute, return the + // value of that attribute." + if (isAnyHtmlElement(element) && element.tagName == "A" && hasAttribute(element, "href")) { + return element.getAttribute("href"); + } + + // "Return null." + return null; + } + + // "If command is "subscript" or "superscript":" + if (command == "subscript" || command == "superscript") { + // "If element is a sup, return "superscript"." + if (isNamedHtmlElement(element, 'sup')) { + return "superscript"; + } + + // "If element is a sub, return "subscript"." + if (isNamedHtmlElement(element, 'sub')) { + return "subscript"; + } + + // "Return null." + return null; + } + + // "If command is "strikethrough", and element has a style attribute set, + // and that attribute sets "text-decoration":" + if (command == "strikethrough" && element.style.textDecoration != "") { + // "If element's style attribute sets "text-decoration" to a value + // containing "line-through", return "line-through"." + if (element.style.textDecoration.indexOf("line-through") != -1) { + return "line-through"; + } + + // "Return null." + return null; + } + + // "If command is "strikethrough" and element is a s or strike element, + // return "line-through"." + if (command == "strikethrough" && isHtmlElementInArray(element, ["S", "STRIKE"])) { + return "line-through"; + } + + // "If command is "underline", and element has a style attribute set, and + // that attribute sets "text-decoration":" + if (command == "underline" && element.style.textDecoration != "") { + // "If element's style attribute sets "text-decoration" to a value + // containing "underline", return "underline"." + if (element.style.textDecoration.indexOf("underline") != -1) { + return "underline"; + } + + // "Return null." + return null; + } + + // "If command is "underline" and element is a u element, return + // "underline"." + if (command == "underline" && isNamedHtmlElement(element, 'U')) { + return "underline"; + } + + // "Let property be the relevant CSS property for command." + var property = commands[command].relevantCssProperty; + + // "If property is null, return null." + if (property === null) { + return null; + } + + // "If element has a style attribute set, and that attribute has the + // effect of setting property, return the value that it sets property to." + if (element.style[property] != "") { + return element.style[property]; + } + + // "If element is a font element that has an attribute whose effect is + // to create a presentational hint for property, return the value that the + // hint sets property to. (For a size of 7, this will be the non-CSS value + // "xxx-large".)" + if (isHtmlNamespace(element.namespaceURI) && element.tagName == "FONT") { + if (property == "color" && hasAttribute(element, "color")) { + return element.color; + } + if (property == "fontFamily" && hasAttribute(element, "face")) { + return element.face; + } + if (property == "fontSize" && hasAttribute(element, "size")) { + // This is not even close to correct in general. + var size = parseInt(element.size, 10); + if (size < 1) { + size = 1; + } + if (size > 7) { + size = 7; + } + return { + 1:"xx-small", + 2:"small", + 3:"medium", + 4:"large", + 5:"x-large", + 6:"xx-large", + 7:"xxx-large" + }[size]; + } + } + + // "If element is in the following list, and property is equal to the + // CSS property name listed for it, return the string listed for it." + // + // A list follows, whose meaning is copied here. + if (property == "fontWeight" && (element.tagName == "B" || element.tagName == "STRONG")) { + return "bold"; + } + if (property == "fontStyle" && (element.tagName == "I" || element.tagName == "EM")) { + return "italic"; + } + + // "Return null." + return null; + } + + function reorderModifiableDescendants(node, command, newValue, range) { + // "Let candidate equal node." + var candidate = node; + + // "While candidate is a modifiable element, and candidate has exactly one + // child, and that child is also a modifiable element, and candidate is not + // a simple modifiable element or candidate's specified command value for + // command is not equivalent to new value, set candidate to its child." + while (isModifiableElement(candidate) && candidate.childNodes.length == 1 && isModifiableElement(candidate.firstChild) && (!isSimpleModifiableElement(candidate) || !areEquivalentValues(command, getSpecifiedCommandValue(candidate, command), newValue))) { + candidate = candidate.firstChild; + } + + // "If candidate is node, or is not a simple modifiable element, or its + // specified command value is not equivalent to new value, or its effective + // command value is not loosely equivalent to new value, abort these + // steps." + if (candidate == node || !isSimpleModifiableElement(candidate) || !areEquivalentValues(command, getSpecifiedCommandValue(candidate, command), newValue) || !areLooselyEquivalentValues(command, getEffectiveCommandValue(candidate, command), newValue)) { + return; + } + + // "While candidate has children, insert the first child of candidate into + // candidate's parent immediately before candidate, preserving ranges." + while (candidate.hasChildNodes()) { + movePreservingRanges(candidate.firstChild, candidate.parentNode, getNodeIndex(candidate), range); + } + + // "Insert candidate into node's parent immediately after node." + node.parentNode.insertBefore(candidate, node.nextSibling); + + // "Append the node as the last child of candidate, preserving ranges." + movePreservingRanges(node, candidate, -1, range); + } + + var recordValuesCommands = ["subscript", "bold", "fontname", "fontsize", "forecolor", "hilitecolor", "italic", "strikethrough", "underline"]; + + function recordValues(nodeList) { + // "Let values be a list of (node, command, specified command value) + // triples, initially empty." + var values = []; + + // "For each node in node list, for each command in the list "subscript", + // "bold", "fontName", "fontSize", "foreColor", "hiliteColor", "italic", + // "strikethrough", and "underline" in that order:" + + // Ensure we have a plain array to avoid the potential performance + // overhead of a NodeList + var nodes = jQuery.makeArray(nodeList); + var i, j; + var node; + var command; + var ancestor; + var specifiedCommandValue; + for (i = 0; i < nodes.length; i++) { + node = nodes[i]; + for (j = 0; j < recordValuesCommands.length; j++) { + command = recordValuesCommands[j]; + + // "Let ancestor equal node." + ancestor = node; + + // "If ancestor is not an Element, set it to its parent." + if (ancestor.nodeType != 1) { + ancestor = ancestor.parentNode; + } + + // "While ancestor is an Element and its specified command value + // for command is null, set it to its parent." + specifiedCommandValue = null; + while (ancestor && ancestor.nodeType == 1 && (specifiedCommandValue = getSpecifiedCommandValue(ancestor, command)) === null) { + ancestor = ancestor.parentNode; + } + + // "If ancestor is an Element, add (node, command, ancestor's + // specified command value for command) to values. Otherwise add + // (node, command, null) to values." + values.push([node, command, specifiedCommandValue]); + } + } + + // "Return values." + return values; + } + + //@} + ///// Clearing an element's value ///// + //@{ + + function clearValue(element, command, range) { + // "If element is not editable, return the empty list." + if (!isEditable(element)) { + return []; + } + + // "If element's specified command value for command is null, return the + // empty list." + if (getSpecifiedCommandValue(element, command) === null) { + return []; + } + + // "If element is a simple modifiable element:" + if (isSimpleModifiableElement(element)) { + // "Let children be the children of element." + var children = Array.prototype.slice.call(toArray(element.childNodes)); + + // "For each child in children, insert child into element's parent + // immediately before element, preserving ranges." + var i; + for (i = 0; i < children.length; i++) { + movePreservingRanges(children[i], element.parentNode, getNodeIndex(element), range); + } + + // "Remove element from its parent." + element.parentNode.removeChild(element); + + // "Return children." + return children; + } + + // "If command is "strikethrough", and element has a style attribute that + // sets "text-decoration" to some value containing "line-through", delete + // "line-through" from the value." + if (command == "strikethrough" && element.style.textDecoration.indexOf("line-through") != -1) { + if (element.style.textDecoration == "line-through") { + element.style.textDecoration = ""; + } else { + element.style.textDecoration = element.style.textDecoration.replace("line-through", ""); + } + if (element.getAttribute("style") == "") { + element.removeAttribute("style"); + } + } + + // "If command is "underline", and element has a style attribute that sets + // "text-decoration" to some value containing "underline", delete + // "underline" from the value." + if (command == "underline" && element.style.textDecoration.indexOf("underline") != -1) { + if (element.style.textDecoration == "underline") { + element.style.textDecoration = ""; + } else { + element.style.textDecoration = element.style.textDecoration.replace("underline", ""); + } + if (element.getAttribute("style") == "") { + element.removeAttribute("style"); + } + } + + // "If the relevant CSS property for command is not null, unset the CSS + // property property of element." + if (commands[command].relevantCssProperty !== null) { + element.style[commands[command].relevantCssProperty] = ''; + if (element.getAttribute("style") == "") { + element.removeAttribute("style"); + } + } + + // "If element is a font element:" + if (isHtmlNamespace(element.namespaceURI) && element.tagName == "FONT") { + // "If command is "foreColor", unset element's color attribute, if set." + if (command == "forecolor") { + element.removeAttribute("color"); + } + + // "If command is "fontName", unset element's face attribute, if set." + if (command == "fontname") { + element.removeAttribute("face"); + } + + // "If command is "fontSize", unset element's size attribute, if set." + if (command == "fontsize") { + element.removeAttribute("size"); + } + } + + // "If element is an a element and command is "createLink" or "unlink", + // unset the href property of element." + if (isNamedHtmlElement(element, 'A') && (command == "createlink" || command == "unlink")) { + element.removeAttribute("href"); + } + + // "If element's specified command value for command is null, return the + // empty list." + if (getSpecifiedCommandValue(element, command) === null) { + return []; + } + + // "Set the tag name of element to "span", and return the one-node list + // consisting of the result." + return [setTagName(element, "span", range)]; + } + + //@} + ///// Forcing the value of a node ///// + //@{ + + function forceValue(node, command, newValue, range) { + var children = []; + var i; + var specifiedValue; + + // "If node's parent is null, abort this algorithm." + if (!node.parentNode) { + return; + } + + // "If new value is null, abort this algorithm." + if (newValue === null) { + return; + } + + // "If node is an allowed child of "span":" + if (isAllowedChild(node, "span")) { + // "Reorder modifiable descendants of node's previousSibling." + reorderModifiableDescendants(node.previousSibling, command, newValue, range); + + // "Reorder modifiable descendants of node's nextSibling." + reorderModifiableDescendants(node.nextSibling, command, newValue, range); + + // "Wrap the one-node list consisting of node, with sibling criteria + // returning true for a simple modifiable element whose specified + // command value is equivalent to new value and whose effective command + // value is loosely equivalent to new value and false otherwise, and + // with new parent instructions returning null." + wrap( + [node], + function (node) { + return isSimpleModifiableElement(node) && areEquivalentValues(command, getSpecifiedCommandValue(node, command), newValue) && areLooselyEquivalentValues(command, getEffectiveCommandValue(node, command), newValue); + }, + function () { + return null; + }, + range + ); + } + + // "If the effective command value of command is loosely equivalent to new + // value on node, abort this algorithm." + if (areLooselyEquivalentValues(command, getEffectiveCommandValue(node, command), newValue)) { + return; + } + + // "If node is not an allowed child of "span":" + if (!isAllowedChild(node, "span")) { + // "Let children be all children of node, omitting any that are + // Elements whose specified command value for command is neither null + // nor equivalent to new value." + for (i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType == $_.Node.ELEMENT_NODE) { + specifiedValue = getSpecifiedCommandValue(node.childNodes[i], command); + + if (specifiedValue !== null && !areEquivalentValues(command, newValue, specifiedValue)) { + continue; + } + } + children.push(node.childNodes[i]); + } + + // "Force the value of each Node in children, with command and new + // value as in this invocation of the algorithm." + for (i = 0; i < children.length; i++) { + forceValue(children[i], command, newValue, range); + } + + // "Abort this algorithm." + return; + } + + // "If the effective command value of command is loosely equivalent to new + // value on node, abort this algorithm." + if (areLooselyEquivalentValues(command, getEffectiveCommandValue(node, command), newValue)) { + return; + } + + // "Let new parent be null." + var newParent = null; + + // "If the CSS styling flag is false:" + if (!cssStylingFlag) { + // "If command is "bold" and new value is "bold", let new parent be the + // result of calling createElement("b") on the ownerDocument of node." + if (command == "bold" && (newValue == "bold" || newValue == "700")) { + newParent = node.ownerDocument.createElement("b"); + } + + // "If command is "italic" and new value is "italic", let new parent be + // the result of calling createElement("i") on the ownerDocument of + // node." + if (command == "italic" && newValue == "italic") { + newParent = node.ownerDocument.createElement("i"); + } + + // "If command is "strikethrough" and new value is "line-through", let + // new parent be the result of calling createElement("s") on the + // ownerDocument of node." + if (command == "strikethrough" && newValue == "line-through") { + newParent = node.ownerDocument.createElement("s"); + } + + // "If command is "underline" and new value is "underline", let new + // parent be the result of calling createElement("u") on the + // ownerDocument of node." + if (command == "underline" && newValue == "underline") { + newParent = node.ownerDocument.createElement("u"); + } + + // "If command is "foreColor", and new value is fully opaque with red, + // green, and blue components in the range 0 to 255:" + if (command == "forecolor" && parseSimpleColor(newValue)) { + // "Let new parent be the result of calling createElement("span") + // on the ownerDocument of node." + // NOTE: modified this process to create span elements with style attributes + // instead of oldschool font tags with color attributes + newParent = node.ownerDocument.createElement("span"); + + // "If new value is an extended color keyword, set the color + // attribute of new parent to new value." + // + // "Otherwise, set the color attribute of new parent to the result + // of applying the rules for serializing simple color values to new + // value (interpreted as a simple color)." + jQuery(newParent).css('color', parseSimpleColor(newValue)); + } + + // "If command is "fontName", let new parent be the result of calling + // createElement("font") on the ownerDocument of node, then set the + // face attribute of new parent to new value." + if (command == "fontname") { + newParent = node.ownerDocument.createElement("font"); + newParent.face = newValue; + } + } + + // "If command is "createLink" or "unlink":" + if (command == "createlink" || command == "unlink") { + // "Let new parent be the result of calling createElement("a") on the + // ownerDocument of node." + newParent = node.ownerDocument.createElement("a"); + + // "Set the href attribute of new parent to new value." + newParent.setAttribute("href", newValue); + + // "Let ancestor be node's parent." + var ancestor = node.parentNode; + + // "While ancestor is not null:" + while (ancestor) { + // "If ancestor is an a, set the tag name of ancestor to "span", + // and let ancestor be the result." + if (isNamedHtmlElement(ancestor, 'A')) { + ancestor = setTagName(ancestor, "span", range); + } + + // "Set ancestor to its parent." + ancestor = ancestor.parentNode; + } + } + + // "If command is "fontSize"; and new value is one of "xx-small", "small", + // "medium", "large", "x-large", "xx-large", or "xxx-large"; and either the + // CSS styling flag is false, or new value is "xxx-large": let new parent + // be the result of calling createElement("font") on the ownerDocument of + // node, then set the size attribute of new parent to the number from the + // following table based on new value: [table omitted]" + if (command == "fontsize" && jQuery.inArray(newValue, ["xx-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"]) != -1 && (!cssStylingFlag || newValue == "xxx-large")) { + newParent = node.ownerDocument.createElement("font"); + newParent.size = cssSizeToLegacy(newValue); + } + + // "If command is "subscript" or "superscript" and new value is + // "subscript", let new parent be the result of calling + // createElement("sub") on the ownerDocument of node." + if ((command == "subscript" || command == "superscript") && newValue == "subscript") { + newParent = node.ownerDocument.createElement("sub"); + } + + // "If command is "subscript" or "superscript" and new value is + // "superscript", let new parent be the result of calling + // createElement("sup") on the ownerDocument of node." + if ((command == "subscript" || command == "superscript") && newValue == "superscript") { + newParent = node.ownerDocument.createElement("sup"); + } + + // "If new parent is null, let new parent be the result of calling + // createElement("span") on the ownerDocument of node." + if (!newParent) { + newParent = node.ownerDocument.createElement("span"); + } + + // "Insert new parent in node's parent before node." + node.parentNode.insertBefore(newParent, node); + + // "If the effective command value of command for new parent is not loosely + // equivalent to new value, and the relevant CSS property for command is + // not null, set that CSS property of new parent to new value (if the new + // value would be valid)." + var property = commands[command].relevantCssProperty; + if (property !== null && !areLooselyEquivalentValues(command, getEffectiveCommandValue(newParent, command), newValue)) { + newParent.style[property] = newValue; + } + + // "If command is "strikethrough", and new value is "line-through", and the + // effective command value of "strikethrough" for new parent is not + // "line-through", set the "text-decoration" property of new parent to + // "line-through"." + if (command == "strikethrough" && newValue == "line-through" && getEffectiveCommandValue(newParent, "strikethrough") != "line-through") { + newParent.style.textDecoration = "line-through"; + } + + // "If command is "underline", and new value is "underline", and the + // effective command value of "underline" for new parent is not + // "underline", set the "text-decoration" property of new parent to + // "underline"." + if (command == "underline" && newValue == "underline" && getEffectiveCommandValue(newParent, "underline") != "underline") { + newParent.style.textDecoration = "underline"; + } + + // "Append node to new parent as its last child, preserving ranges." + movePreservingRanges(node, newParent, newParent.childNodes.length, range); + + // "If node is an Element and the effective command value of command for + // node is not loosely equivalent to new value:" + if (node.nodeType == $_.Node.ELEMENT_NODE && !areEquivalentValues(command, getEffectiveCommandValue(node, command), newValue)) { + // "Insert node into the parent of new parent before new parent, + // preserving ranges." + movePreservingRanges(node, newParent.parentNode, getNodeIndex(newParent), range); + + // "Remove new parent from its parent." + newParent.parentNode.removeChild(newParent); + + // "Let children be all children of node, omitting any that are + // Elements whose specified command value for command is neither null + // nor equivalent to new value." + children = []; + for (i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType == $_.Node.ELEMENT_NODE) { + specifiedValue = getSpecifiedCommandValue(node.childNodes[i], command); + + if (specifiedValue !== null && !areEquivalentValues(command, newValue, specifiedValue)) { + continue; + } + } + children.push(node.childNodes[i]); + } + + // "Force the value of each Node in children, with command and new + // value as in this invocation of the algorithm." + for (i = 0; i < children.length; i++) { + forceValue(children[i], command, newValue, range); + } + } + } + + //@} + ///// Pushing down values ///// + //@{ + + function pushDownValues(node, command, newValue, range) { + // "If node's parent is not an Element, abort this algorithm." + if (!node.parentNode || node.parentNode.nodeType != $_.Node.ELEMENT_NODE) { + return; + } + + // "If the effective command value of command is loosely equivalent to new + // value on node, abort this algorithm." + if (areLooselyEquivalentValues(command, getEffectiveCommandValue(node, command), newValue)) { + return; + } + + // "Let current ancestor be node's parent." + var currentAncestor = node.parentNode; + + // "Let ancestor list be a list of Nodes, initially empty." + var ancestorList = []; + + // "While current ancestor is an editable Element and the effective command + // value of command is not loosely equivalent to new value on it, append + // current ancestor to ancestor list, then set current ancestor to its + // parent." + while (isEditable(currentAncestor) && currentAncestor.nodeType == $_.Node.ELEMENT_NODE && !areLooselyEquivalentValues(command, getEffectiveCommandValue(currentAncestor, command), newValue)) { + ancestorList.push(currentAncestor); + currentAncestor = currentAncestor.parentNode; + } + + // "If ancestor list is empty, abort this algorithm." + if (!ancestorList.length) { + return; + } + + // "Let propagated value be the specified command value of command on the + // last member of ancestor list." + var propagatedValue = getSpecifiedCommandValue(ancestorList[ancestorList.length - 1], command); + + // "If propagated value is null and is not equal to new value, abort this + // algorithm." + if (propagatedValue === null && propagatedValue != newValue) { + return; + } + + // "If the effective command value for the parent of the last member of + // ancestor list is not loosely equivalent to new value, and new value is + // not null, abort this algorithm." + if (newValue !== null && !areLooselyEquivalentValues(command, getEffectiveCommandValue(ancestorList[ancestorList.length - 1].parentNode, command), newValue)) { + return; + } + + // "While ancestor list is not empty:" + while (ancestorList.length) { + // "Let current ancestor be the last member of ancestor list." + // "Remove the last member from ancestor list." + currentAncestor = ancestorList.pop(); + + // "If the specified command value of current ancestor for command is + // not null, set propagated value to that value." + if (getSpecifiedCommandValue(currentAncestor, command) !== null) { + propagatedValue = getSpecifiedCommandValue(currentAncestor, command); + } + + // "Let children be the children of current ancestor." + var children = Array.prototype.slice.call(toArray(currentAncestor.childNodes)); + + // "If the specified command value of current ancestor for command is + // not null, clear the value of current ancestor." + if (getSpecifiedCommandValue(currentAncestor, command) !== null) { + clearValue(currentAncestor, command, range); + } + + // "For every child in children:" + var i; + for (i = 0; i < children.length; i++) { + var child = children[i]; + + // "If child is node, continue with the next child." + if (child == node) { + continue; + } + + // "If child is an Element whose specified command value for + // command is neither null nor equivalent to propagated value, + // continue with the next child." + if (child.nodeType == $_.Node.ELEMENT_NODE && getSpecifiedCommandValue(child, command) !== null && !areEquivalentValues(command, propagatedValue, getSpecifiedCommandValue(child, command))) { + continue; + } + + // "If child is the last member of ancestor list, continue with the + // next child." + if (child == ancestorList[ancestorList.length - 1]) { + continue; + } + + // "Force the value of child, with command as in this algorithm + // and new value equal to propagated value." + forceValue(child, command, propagatedValue, range); + } + } + } + + function restoreValues(values, range) { + // "For each (node, command, value) triple in values:" + $_(values).forEach(function (triple) { + var node = triple[0]; + var command = triple[1]; + var value = triple[2]; + + // "Let ancestor equal node." + var ancestor = node; + + // "If ancestor is not an Element, set it to its parent." + if (!ancestor || ancestor.nodeType != $_.Node.ELEMENT_NODE) { + ancestor = ancestor.parentNode; + } + + // "While ancestor is an Element and its specified command value for + // command is null, set it to its parent." + while (ancestor && ancestor.nodeType == $_.Node.ELEMENT_NODE && getSpecifiedCommandValue(ancestor, command) === null) { + ancestor = ancestor.parentNode; + } + + // "If value is null and ancestor is an Element, push down values on + // node for command, with new value null." + if (value === null && ancestor && ancestor.nodeType == $_.Node.ELEMENT_NODE) { + pushDownValues(node, command, null, range); + + // "Otherwise, if ancestor is an Element and its specified command + // value for command is not equivalent to value, or if ancestor is not + // an Element and value is not null, force the value of command to + // value on node." + } else if ((ancestor && ancestor.nodeType == $_.Node.ELEMENT_NODE && !areEquivalentValues(command, getSpecifiedCommandValue(ancestor, command), value)) || ((!ancestor || ancestor.nodeType != $_.Node.ELEMENT_NODE) && value !== null)) { + forceValue(node, command, value, range); + } + }); + } + + //@} + ///// Setting the selection's value ///// + //@{ + + function setSelectionValue(command, newValue, range) { + + // Use current selected range if no range passed + range = range || getActiveRange(); + + // "If there is no editable text node effectively contained in the active + // range:" + if (!$_(getAllEffectivelyContainedNodes(range)).filter(function (node) { + return node.nodeType == $_.Node.TEXT_NODE; + }, true).some(isEditable)) { + // "If command has inline command activated values, set the state + // override to true if new value is among them and false if it's not." + if (commands[command].hasOwnProperty("inlineCommandActivatedValues")) { + setStateOverride( + command, + $_(commands[command].inlineCommandActivatedValues).indexOf(newValue) != -1, + range + ); + } + + // "If command is "subscript", unset the state override for + // "superscript"." + if (command == "subscript") { + unsetStateOverride("superscript", range); + } + + // "If command is "superscript", unset the state override for + // "subscript"." + if (command == "superscript") { + unsetStateOverride("subscript", range); + } + + // "If new value is null, unset the value override (if any)." + if (newValue === null) { + unsetValueOverride(command, range); + + // "Otherwise, if command has a value specified, set the value override + // to new value." + } else if (commands[command].hasOwnProperty("value")) { + setValueOverride(command, newValue, range); + } + + // "Abort these steps." + return; + } + + // "If the active range's start node is an editable Text node, and its + // start offset is neither zero nor its start node's length, call + // splitText() on the active range's start node, with argument equal to the + // active range's start offset. Then set the active range's start node to + // the result, and its start offset to zero." + if (isEditable(range.startContainer) && range.startContainer.nodeType == $_.Node.TEXT_NODE && range.startOffset != 0 && range.startOffset != getNodeLength(range.startContainer)) { + // Account for browsers not following range mutation rules + var newNode = range.startContainer.splitText(range.startOffset); + var newActiveRange = Aloha.createRange(); + if (range.startContainer == range.endContainer) { + var newEndOffset = range.endOffset - range.startOffset; + newActiveRange.setEnd(newNode, newEndOffset); + range.setEnd(newNode, newEndOffset); + } + newActiveRange.setStart(newNode, 0); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(newActiveRange); + + range.setStart(newNode, 0); + } + + // "If the active range's end node is an editable Text node, and its end + // offset is neither zero nor its end node's length, call splitText() on + // the active range's end node, with argument equal to the active range's + // end offset." + if (isEditable(range.endContainer) && range.endContainer.nodeType == $_.Node.TEXT_NODE && range.endOffset != 0 && range.endOffset != getNodeLength(range.endContainer)) { + // IE seems to mutate the range incorrectly here, so we need correction + // here as well. The active range will be temporarily in orphaned + // nodes, so calling getActiveRange() after splitText() but before + // fixing the range will throw an exception. + // TODO: check if this is still neccessary + var activeRange = range; + var newStart = [activeRange.startContainer, activeRange.startOffset]; + var newEnd = [activeRange.endContainer, activeRange.endOffset]; + activeRange.endContainer.splitText(activeRange.endOffset); + activeRange.setStart(newStart[0], newStart[1]); + activeRange.setEnd(newEnd[0], newEnd[1]); + + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(activeRange); + } + + // "Let element list be all editable Elements effectively contained in the + // active range. + // + // "For each element in element list, clear the value of element." + $_(getAllEffectivelyContainedNodes(getActiveRange(), function (node) { + return isEditable(node) && node.nodeType == $_.Node.ELEMENT_NODE; + })).forEach(function (element) { + clearValue(element, command, range); + }); + + // "Let node list be all editable nodes effectively contained in the active + // range. + // + // "For each node in node list:" + $_(getAllEffectivelyContainedNodes(range, isEditable)).forEach(function (node) { + // "Push down values on node." + pushDownValues(node, command, newValue, range); + + // "Force the value of node." + forceValue(node, command, newValue, range); + }); + } + + /** + * attempt to retrieve a block like a table or an Aloha Block + * which is located one step right of the current caret position. + * If an appropriate element is found it will be returned or + * false otherwise + * + * @param {element} node current node we're in + * @param {number} offset current offset within that node + * + * @return the dom node if found or false if no appropriate + * element was found + */ + function getBlockAtNextPosition(node, offset) { + var i; + + // if we're inside a text node we first have to check + // if there is nothing but tabs, newlines or the like + // after our current cursor position + if (node.nodeType === $_.Node.TEXT_NODE && offset < node.length) { + for (i = offset; i < node.length; i++) { + if ((node.data.charAt(i) !== '\t' && node.data.charAt(i) !== '\r' && node.data.charAt(i) !== '\n') || node.data.charCodeAt(i) === 160) { //   + // this is a character that has to be deleted first + return false; + } + } + } + + // try the most simple approach first: the next sibling + // is a table + if (node.nextSibling && node.nextSibling.className && node.nextSibling.className.indexOf("aloha-table-wrapper") >= 0) { + return node.nextSibling; + } + + // since we got only ignorable whitespace here determine if + // our nodes parents next sibling is a table + if (node.parentNode && node.parentNode.nextSibling && node.parentNode.nextSibling.className && node.parentNode.nextSibling.className.indexOf("aloha-table-wrapper") >= 0) { + return node.parentNode.nextSibling; + } + + // our parents nextsibling is a pure whitespace node such as + // generated by sourcecode indentation so we'll check for + // the next next sibling + if (node.parentNode && node.parentNode.nextSibling && isWhitespaceNode(node.parentNode.nextSibling) && node.parentNode.nextSibling.nextSibling && node.parentNode.nextSibling.nextSibling.className && node.parentNode.nextSibling.nextSibling.className.indexOf("aloha-table-wrapper") >= 0) { + return node.parentNode.nextSibling.nextSibling; + } + + // Note: the search above works for tables, since they cannot be + // nested deeply in paragraphs and other formatting tags. If this code + // is extended to work also for other blocks, the search probably needs to be adapted + } + + /** + * Attempt to retrieve a block like a table or an Aloha Block + * which is located right before the current position. + * If an appropriate element is found, it will be returned or + * false otherwise + * + * @param {element} node current node + * @param {offset} offset current offset + * + * @return dom node of found or false if no appropriate + * element was found + */ + function getBlockAtPreviousPosition(node, offset) { + var i; + + if (node.nodeType === $_.Node.TEXT_NODE && offset > 0) { + for (i = offset - 1; i >= 0; i--) { + if ((node.data.charAt(i) !== '\t' && node.data.charAt(i) !== '\r' && node.data.charAt(i) !== '\n') || node.data.charCodeAt(i) === 160) { //   + // this is a character that has to be deleted first + return false; + } + } + } + + // try the previous sibling + if (node.previousSibling && node.previousSibling.className && node.previousSibling.className.indexOf("aloha-table-wrapper") >= 0) { + return node.previousSibling; + } + + // try the parent's previous sibling + if (node.parentNode && node.parentNode.previousSibling && node.parentNode.previousSibling.className && node.parentNode.previousSibling.className.indexOf("aloha-table-wrapper") >= 0) { + return node.parentNode.previousSibling; + } + + // the parent's previous sibling might be a whitespace node + if (node.parentNode && node.parentNode.previousSibling && isWhitespaceNode(node.parentNode.previousSibling) && node.parentNode.previousSibling.previousSibling && node.parentNode.previousSibling.previousSibling.className && node.parentNode.previousSibling.previousSibling.className.indexOf('aloha-table-wrapper') >= 0) { + return node.parentNode.previousSibling.previousSibling; + } + + // Note: the search above works for tables, since they cannot be + // nested deeply in paragraphs and other formatting tags. If this code + // is extended to work also for other blocks, the search probably needs to be adapted + + return false; + } + + // "A boundary point (node, offset) is a block start point if either node's + // parent is null and offset is zero; or node has a child with index offset − + // 1, and that child is either a visible block node or a visible br." + function isBlockStartPoint(node, offset) { + return (!node.parentNode && offset == 0) || (0 <= offset - 1 && offset - 1 < node.childNodes.length && isVisible(node.childNodes[offset - 1]) && (isBlockNode(node.childNodes[offset - 1]) || isNamedHtmlElement(node.childNodes[offset - 1], "br"))); + } + + // "A boundary point (node, offset) is a block end point if either node's + // parent is null and offset is node's length; or node has a child with index + // offset, and that child is a visible block node." + function isBlockEndPoint(node, offset) { + return (!node.parentNode && offset == getNodeLength(node)) || (offset < node.childNodes.length && isVisible(node.childNodes[offset]) && isBlockNode(node.childNodes[offset])); + } + + // "A boundary point is a block boundary point if it is either a block start + // point or a block end point." + function isBlockBoundaryPoint(node, offset) { + return isBlockStartPoint(node, offset) || isBlockEndPoint(node, offset); + } + + function followsLineBreak(node) { + // "Let offset be zero." + var offset = 0; + + // "While (node, offset) is not a block boundary point:" + while (!isBlockBoundaryPoint(node, offset)) { + // "If node has a visible child with index offset minus one, return + // false." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && isVisible(node.childNodes[offset - 1])) { + return false; + } + + // "If offset is zero or node has no children, set offset to node's + // index, then set node to its parent." + if (offset == 0 || !node.hasChildNodes()) { + offset = getNodeIndex(node); + node = node.parentNode; + + // "Otherwise, set node to its child with index offset minus one, then + // set offset to node's length." + } else { + node = node.childNodes[offset - 1]; + offset = getNodeLength(node); + } + } + + // "Return true." + return true; + } + + function precedesLineBreak(node) { + // "Let offset be node's length." + var offset = getNodeLength(node); + + // "While (node, offset) is not a block boundary point:" + while (!isBlockBoundaryPoint(node, offset)) { + // "If node has a visible child with index offset, return false." + if (offset < node.childNodes.length && isVisible(node.childNodes[offset])) { + return false; + } + + // "If offset is node's length or node has no children, set offset to + // one plus node's index, then set node to its parent." + if (offset == getNodeLength(node) || !node.hasChildNodes()) { + offset = 1 + getNodeIndex(node); + node = node.parentNode; + + // "Otherwise, set node to its child with index offset and set offset + // to zero." + } else { + node = node.childNodes[offset]; + offset = 0; + } + } + + // "Return true." + return true; + } + + //@} + ///// Splitting a node list's parent ///// + //@{ + + function splitParent(nodeList, range) { + var i; + + // "Let original parent be the parent of the first member of node list." + var originalParent = nodeList[0].parentNode; + + // "If original parent is not editable or its parent is null, do nothing + // and abort these steps." + if (!isEditable(originalParent) || !originalParent.parentNode) { + return; + } + + // "If the first child of original parent is in node list, remove + // extraneous line breaks before original parent." + if (jQuery.inArray(originalParent.firstChild, nodeList) != -1) { + removeExtraneousLineBreaksBefore(originalParent); + } + + var firstChildInNodeList = jQuery.inArray(originalParent.firstChild, nodeList) != -1; + var lastChildInNodeList = jQuery.inArray(originalParent.lastChild, nodeList) != -1; + + // "If the first child of original parent is in node list, and original + // parent follows a line break, set follows line break to true. Otherwise, + // set follows line break to false." + var followsLineBreak_ = firstChildInNodeList && followsLineBreak(originalParent); + + // "If the last child of original parent is in node list, and original + // parent precedes a line break, set precedes line break to true. + // Otherwise, set precedes line break to false." + var precedesLineBreak_ = lastChildInNodeList && precedesLineBreak(originalParent); + + // "If the first child of original parent is not in node list, but its last + // child is:" + if (!firstChildInNodeList && lastChildInNodeList) { + // "For each node in node list, in reverse order, insert node into the + // parent of original parent immediately after original parent, + // preserving ranges." + for (i = nodeList.length - 1; i >= 0; i--) { + movePreservingRanges(nodeList[i], originalParent.parentNode, 1 + getNodeIndex(originalParent), range); + } + + // "If precedes line break is true, and the last member of node list + // does not precede a line break, call createElement("br") on the + // context object and insert the result immediately after the last + // member of node list." + if (precedesLineBreak_ && !precedesLineBreak(nodeList[nodeList.length - 1])) { + nodeList[nodeList.length - 1].parentNode.insertBefore(document.createElement("br"), nodeList[nodeList.length - 1].nextSibling); + } + + // "Remove extraneous line breaks at the end of original parent." + removeExtraneousLineBreaksAtTheEndOf(originalParent); + + // "Abort these steps." + return; + } + + // "If the first child of original parent is not in node list:" + if (!firstChildInNodeList) { + // "Let cloned parent be the result of calling cloneNode(false) on + // original parent." + var clonedParent = originalParent.cloneNode(false); + + // "If original parent has an id attribute, unset it." + originalParent.removeAttribute("id"); + + // "Insert cloned parent into the parent of original parent immediately + // before original parent." + originalParent.parentNode.insertBefore(clonedParent, originalParent); + + // "While the previousSibling of the first member of node list is not + // null, append the first child of original parent as the last child of + // cloned parent, preserving ranges." + while (nodeList[0].previousSibling) { + movePreservingRanges(originalParent.firstChild, clonedParent, clonedParent.childNodes.length, range); + } + } + + // "For each node in node list, insert node into the parent of original + // parent immediately before original parent, preserving ranges." + for (i = 0; i < nodeList.length; i++) { + movePreservingRanges(nodeList[i], originalParent.parentNode, getNodeIndex(originalParent), range); + } + + // "If follows line break is true, and the first member of node list does + // not follow a line break, call createElement("br") on the context object + // and insert the result immediately before the first member of node list." + if (followsLineBreak_ && !followsLineBreak(nodeList[0])) { + nodeList[0].parentNode.insertBefore(document.createElement("br"), nodeList[0]); + } + + // "If the last member of node list is an inline node other than a br, and + // the first child of original parent is a br, and original parent is not + // an inline node, remove the first child of original parent from original + // parent." + if (isInlineNode(nodeList[nodeList.length - 1]) && !isNamedHtmlElement(nodeList[nodeList.length - 1], "br") && isNamedHtmlElement(originalParent.firstChild, "br") && !isInlineNode(originalParent)) { + originalParent.removeChild(originalParent.firstChild); + } + + // "If original parent has no children:" + if (!originalParent.hasChildNodes()) { + // if the current range is collapsed and at the end of the originalParent.parentNode + // the offset will not be available anymore after the next step (remove child) + // that's why we need to fix the range to prevent a bogus offset + if (originalParent.parentNode === range.startContainer && originalParent.parentNode === range.endContainer && range.startContainer === range.endContainer && range.startOffset === range.endOffset && originalParent.parentNode.childNodes.length === range.startOffset) { + range.startOffset = originalParent.parentNode.childNodes.length - 1; + range.endOffset = range.startOffset; + } + + // "Remove original parent from its parent." + originalParent.parentNode.removeChild(originalParent); + + // "If precedes line break is true, and the last member of node list + // does not precede a line break, call createElement("br") on the + // context object and insert the result immediately after the last + // member of node list." + if (precedesLineBreak_ && !precedesLineBreak(nodeList[nodeList.length - 1])) { + nodeList[nodeList.length - 1].parentNode.insertBefore(document.createElement("br"), nodeList[nodeList.length - 1].nextSibling); + } + + // "Otherwise, remove extraneous line breaks before original parent." + } else { + removeExtraneousLineBreaksBefore(originalParent); + } + + // "If node list's last member's nextSibling is null, but its parent is not + // null, remove extraneous line breaks at the end of node list's last + // member's parent." + if (!nodeList[nodeList.length - 1].nextSibling && nodeList[nodeList.length - 1].parentNode) { + removeExtraneousLineBreaksAtTheEndOf(nodeList[nodeList.length - 1].parentNode); + } + } + + //@} + ///// The backColor command ///// + //@{ + commands.backcolor = { + // Copy-pasted, same as hiliteColor + action:function (value, range) { + // Action is further copy-pasted, same as foreColor + + // "If value is not a valid CSS color, prepend "#" to it." + // + // "If value is still not a valid CSS color, or if it is currentColor, + // abort these steps and do nothing." + // + // Cheap hack for testing, no attempt to be comprehensive. + if (/^([0-9a-fA-F]{3}){1,2}$/.test(value)) { + value = "#" + value; + } + if (!/^(rgba?|hsla?)\(.*\)$/.test(value) && !parseSimpleColor(value) && value.toLowerCase() != "transparent") { + return; + } + + // "Set the selection's value to value." + setSelectionValue("backcolor", value, range); + }, + standardInlineValueCommand:true, + relevantCssProperty:"backgroundColor", + equivalentValues:function (val1, val2) { + // "Either both strings are valid CSS colors and have the same red, + // green, blue, and alpha components, or neither string is a valid CSS + // color." + return normalizeColor(val1) === normalizeColor(val2); + } + }; + + //@} + ///// The bold command ///// + //@{ + commands.bold = { + action:function (value, range) { + // "If queryCommandState("bold") returns true, set the selection's + // value to "normal". Otherwise set the selection's value to "bold"." + if (myQueryCommandState("bold", range)) { + setSelectionValue("bold", "normal", range); + } else { + setSelectionValue("bold", "bold", range); + } + }, + inlineCommandActivatedValues:["bold", "600", "700", "800", "900"], + relevantCssProperty:"fontWeight", + equivalentValues:function (val1, val2) { + // "Either the two strings are equal, or one is "bold" and the other is + // "700", or one is "normal" and the other is "400"." + return val1 == val2 || (val1 == "bold" && val2 == "700") || (val1 == "700" && val2 == "bold") || (val1 == "normal" && val2 == "400") || (val1 == "400" && val2 == "normal"); + } + }; + + //@} + ///// The createLink command ///// + //@{ + commands.createlink = { + action:function (value, range) { + // "If value is the empty string, abort these steps and do nothing." + if (value === "") { + return; + } + + // "For each editable a element that has an href attribute and is an + // ancestor of some node effectively contained in the active range, set + // that a element's href attribute to value." + // + // TODO: We don't actually do this in tree order, not that it matters + // unless you're spying with mutation events. + $_(getAllEffectivelyContainedNodes(getActiveRange())).forEach(function (node) { + $_(getAncestors(node)).forEach(function (ancestor) { + if (isEditable(ancestor) && isNamedHtmlElement(ancestor, 'a') && hasAttribute(ancestor, "href")) { + ancestor.setAttribute("href", value); + } + }); + }); + + // "Set the selection's value to value." + setSelectionValue("createlink", value, range); + }, + standardInlineValueCommand:true + }; + + //@} + ///// The fontName command ///// + //@{ + commands.fontname = { + action:function (value, range) { + // "Set the selection's value to value." + setSelectionValue("fontname", value, range); + }, + standardInlineValueCommand:true, + relevantCssProperty:"fontFamily" + }; + + //@} + ///// The fontSize command ///// + //@{ + + commands.fontsize = { + action:function (value, range) { + // "If value is the empty string, abort these steps and do nothing." + if (value === "") { + return; + } + + value = normalizeFontSize(value); + + // "If value is not one of the strings "xx-small", "x-small", "small", + // "medium", "large", "x-large", "xx-large", "xxx-large", and is not a + // valid CSS absolute length, then abort these steps and do nothing." + // + // More cheap hacks to skip valid CSS absolute length checks. + if (jQuery.inArray(value, ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"]) == -1 && !/^[0-9]+(\.[0-9]+)?(cm|mm|in|pt|pc)$/.test(value)) { + return; + } + + // "Set the selection's value to value." + setSelectionValue("fontsize", value, range); + }, + indeterm:function () { + // "True if among editable Text nodes that are effectively contained in + // the active range, there are two that have distinct effective command + // values. Otherwise false." + return $_(getAllEffectivelyContainedNodes(getActiveRange(), function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })).map(function (node) { + return getEffectiveCommandValue(node, "fontsize"); + }, true).filter(function (value, i, arr) { + return $_(arr.slice(0, i)).indexOf(value) == -1; + }).length >= 2; + }, + value:function (range) { + // "Let pixel size be the effective command value of the first editable + // Text node that is effectively contained in the active range, or if + // there is no such node, the effective command value of the active + // range's start node, in either case interpreted as a number of + // pixels." + var node = getAllEffectivelyContainedNodes(range, function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })[0]; + if (node === undefined) { + node = range.startContainer; + } + var pixelSize = getEffectiveCommandValue(node, "fontsize"); + + // "Return the legacy font size for pixel size." + return getLegacyFontSize(pixelSize); + }, + relevantCssProperty:"fontSize" + }; + + //@} + ///// The foreColor command ///// + //@{ + commands.forecolor = { + action:function (value, range) { + // Copy-pasted, same as backColor and hiliteColor + + // "If value is not a valid CSS color, prepend "#" to it." + // + // "If value is still not a valid CSS color, or if it is currentColor, + // abort these steps and do nothing." + // + // Cheap hack for testing, no attempt to be comprehensive. + if (/^([0-9a-fA-F]{3}){1,2}$/.test(value)) { + value = "#" + value; + } + if (!/^(rgba?|hsla?)\(.*\)$/.test(value) && !parseSimpleColor(value) && value.toLowerCase() != "transparent") { + return; + } + + // "Set the selection's value to value." + setSelectionValue("forecolor", value, range); + }, + standardInlineValueCommand:true, + relevantCssProperty:"color", + equivalentValues:function (val1, val2) { + // "Either both strings are valid CSS colors and have the same red, + // green, blue, and alpha components, or neither string is a valid CSS + // color." + return normalizeColor(val1) === normalizeColor(val2); + } + }; + + //@} + ///// The hiliteColor command ///// + //@{ + commands.hilitecolor = { + // Copy-pasted, same as backColor + action:function (value, range) { + // Action is further copy-pasted, same as foreColor + + // "If value is not a valid CSS color, prepend "#" to it." + // + // "If value is still not a valid CSS color, or if it is currentColor, + // abort these steps and do nothing." + // + // Cheap hack for testing, no attempt to be comprehensive. + if (/^([0-9a-fA-F]{3}){1,2}$/.test(value)) { + value = "#" + value; + } + if (!/^(rgba?|hsla?)\(.*\)$/.test(value) && !parseSimpleColor(value) && value.toLowerCase() != "transparent") { + return; + } + + // "Set the selection's value to value." + setSelectionValue("hilitecolor", value, range); + }, + indeterm:function () { + // "True if among editable Text nodes that are effectively contained in + // the active range, there are two that have distinct effective command + // values. Otherwise false." + return $_(getAllEffectivelyContainedNodes(getActiveRange(), function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })).map(function (node) { + return getEffectiveCommandValue(node, "hilitecolor"); + }, true).filter(function (value, i, arr) { + return $_(arr.slice(0, i)).indexOf(value) == -1; + }).length >= 2; + }, + standardInlineValueCommand:true, + relevantCssProperty:"backgroundColor", + equivalentValues:function (val1, val2) { + // "Either both strings are valid CSS colors and have the same red, + // green, blue, and alpha components, or neither string is a valid CSS + // color." + return normalizeColor(val1) === normalizeColor(val2); + } + }; + + //@} + ///// The italic command ///// + //@{ + commands.italic = { + action:function (value, range) { + // "If queryCommandState("italic") returns true, set the selection's + // value to "normal". Otherwise set the selection's value to "italic"." + if (myQueryCommandState("italic", range)) { + setSelectionValue("italic", "normal", range); + } else { + setSelectionValue("italic", "italic", range); + } + }, + inlineCommandActivatedValues:["italic", "oblique"], + relevantCssProperty:"fontStyle" + }; + + //@} + ///// The removeFormat command ///// + //@{ + commands.removeformat = { + action:function (value, range) { + var newEnd, newStart, newNode; + + // "A removeFormat candidate is an editable HTML element with local + // name "abbr", "acronym", "b", "bdi", "bdo", "big", "blink", "cite", + // "code", "dfn", "em", "font", "i", "ins", "kbd", "mark", "nobr", "q", + // "s", "samp", "small", "span", "strike", "strong", "sub", "sup", + // "tt", "u", or "var"." + function isRemoveFormatCandidate(node) { + return isEditable(node) && isHtmlElementInArray(node, ["abbr", "acronym", "b", "bdi", "bdo", "big", "blink", "cite", "code", "dfn", "em", "font", "i", "ins", "kbd", "mark", "nobr", "q", "s", "samp", "small", "span", "strike", "strong", "sub", "sup", "tt", "u", "var"]); + } + + // "Let elements to remove be a list of every removeFormat candidate + // effectively contained in the active range." + var elementsToRemove = getAllEffectivelyContainedNodes(getActiveRange(), isRemoveFormatCandidate); + + // "For each element in elements to remove:" + $_(elementsToRemove).forEach(function (element) { + // "While element has children, insert the first child of element + // into the parent of element immediately before element, + // preserving ranges." + while (element.hasChildNodes()) { + movePreservingRanges(element.firstChild, element.parentNode, getNodeIndex(element), getActiveRange()); + } + + // "Remove element from its parent." + element.parentNode.removeChild(element); + }); + + // "If the active range's start node is an editable Text node, and its + // start offset is neither zero nor its start node's length, call + // splitText() on the active range's start node, with argument equal to + // the active range's start offset. Then set the active range's start + // node to the result, and its start offset to zero." + if (isEditable(getActiveRange().startContainer) && getActiveRange().startContainer.nodeType == $_.Node.TEXT_NODE && getActiveRange().startOffset != 0 && getActiveRange().startOffset != getNodeLength(getActiveRange().startContainer)) { + // Account for browsers not following range mutation rules + if (getActiveRange().startContainer == getActiveRange().endContainer) { + newEnd = getActiveRange().endOffset - getActiveRange().startOffset; + newNode = getActiveRange().startContainer.splitText(getActiveRange().startOffset); + getActiveRange().setStart(newNode, 0); + getActiveRange().setEnd(newNode, newEnd); + } else { + getActiveRange().setStart(getActiveRange().startContainer.splitText(getActiveRange().startOffset), 0); + } + } + + // "If the active range's end node is an editable Text node, and its + // end offset is neither zero nor its end node's length, call + // splitText() on the active range's end node, with argument equal to + // the active range's end offset." + if (isEditable(getActiveRange().endContainer) && getActiveRange().endContainer.nodeType == $_.Node.TEXT_NODE && getActiveRange().endOffset != 0 && getActiveRange().endOffset != getNodeLength(getActiveRange().endContainer)) { + // IE seems to mutate the range incorrectly here, so we need + // correction here as well. Have to be careful to set the range to + // something not including the text node so that getActiveRange() + // doesn't throw an exception due to a temporarily detached + // endpoint. + newStart = [getActiveRange().startContainer, getActiveRange().startOffset]; + newEnd = [getActiveRange().endContainer, getActiveRange().endOffset]; + getActiveRange().setEnd(document.documentElement, 0); + newEnd[0].splitText(newEnd[1]); + getActiveRange().setStart(newStart[0], newStart[1]); + getActiveRange().setEnd(newEnd[0], newEnd[1]); + } + + // "Let node list consist of all editable nodes effectively contained + // in the active range." + // + // "For each node in node list, while node's parent is a removeFormat + // candidate in the same editing host as node, split the parent of the + // one-node list consisting of node." + $_(getAllEffectivelyContainedNodes(getActiveRange(), isEditable)).forEach(function (node) { + while (isRemoveFormatCandidate(node.parentNode) && inSameEditingHost(node.parentNode, node)) { + splitParent([node], getActiveRange()); + } + }); + + // "For each of the entries in the following list, in the given order, + // set the selection's value to null, with command as given." + $_(["subscript", "bold", "fontname", "fontsize", "forecolor", "hilitecolor", "italic", "strikethrough", "underline"]).forEach(function (command) { + setSelectionValue(command, null, range); + }); + } + }; + + //@} + ///// The strikethrough command ///// + //@{ + commands.strikethrough = { + action:function (value, range) { + // "If queryCommandState("strikethrough") returns true, set the + // selection's value to null. Otherwise set the selection's value to + // "line-through"." + if (myQueryCommandState("strikethrough", range)) { + setSelectionValue("strikethrough", null, range); + } else { + setSelectionValue("strikethrough", "line-through", range); + } + }, + inlineCommandActivatedValues:["line-through"] + }; + + //@} + ///// The subscript command ///// + //@{ + commands.subscript = { + action:function (value, range) { + // "Call queryCommandState("subscript"), and let state be the result." + var state = myQueryCommandState("subscript", range); + + // "Set the selection's value to null." + setSelectionValue("subscript", null, range); + + // "If state is false, set the selection's value to "subscript"." + if (!state) { + setSelectionValue("subscript", "subscript", range); + } + }, + indeterm:function () { + // "True if either among editable Text nodes that are effectively + // contained in the active range, there is at least one with effective + // command value "subscript" and at least one with some other effective + // command value; or if there is some editable Text node effectively + // contained in the active range with effective command value "mixed". + // Otherwise false." + var nodes = getAllEffectivelyContainedNodes(getActiveRange(), function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + }); + return (($_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "subscript") == "subscript"; + }) + && $_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "subscript") != "subscript"; + })) + || $_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "subscript") == "mixed"; + })); + }, + inlineCommandActivatedValues:["subscript"] + }; + + //@} + ///// The superscript command ///// + //@{ + commands.superscript = { + action:function (value, range) { + // "Call queryCommandState("superscript"), and let state be the + // result." + var state = myQueryCommandState("superscript", range); + + // "Set the selection's value to null." + setSelectionValue("superscript", null, range); + + // "If state is false, set the selection's value to "superscript"." + if (!state) { + setSelectionValue("superscript", "superscript", range); + } + }, + indeterm:function () { + // "True if either among editable Text nodes that are effectively + // contained in the active range, there is at least one with effective + // command value "superscript" and at least one with some other + // effective command value; or if there is some editable Text node + // effectively contained in the active range with effective command + // value "mixed". Otherwise false." + var nodes = getAllEffectivelyContainedNodes( + getActiveRange(), + function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + } + ); + return (($_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "superscript") == "superscript"; + }) + && $_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "superscript") != "superscript"; + })) + || $_(nodes).some(function (node) { + return getEffectiveCommandValue(node, "superscript") == "mixed"; + })); + }, + inlineCommandActivatedValues:["superscript"] + }; + + //@} + ///// The underline command ///// + //@{ + commands.underline = { + action:function (value, range) { + // "If queryCommandState("underline") returns true, set the selection's + // value to null. Otherwise set the selection's value to "underline"." + if (myQueryCommandState("underline", range)) { + setSelectionValue("underline", null, range); + } else { + setSelectionValue("underline", "underline", range); + } + }, + inlineCommandActivatedValues:["underline"] + }; + + //@} + ///// The unlink command ///// + //@{ + commands.unlink = { + action:function () { + // "Let hyperlinks be a list of every a element that has an href + // attribute and is contained in the active range or is an ancestor of + // one of its boundary points." + // + // As usual, take care to ensure it's tree order. The correctness of + // the following is left as an exercise for the reader. + var range = getActiveRange(); + var hyperlinks = []; + var node; + for (node = range.startContainer; node; node = node.parentNode) { + if (isNamedHtmlElement(node, 'A') && hasAttribute(node, "href")) { + hyperlinks.unshift(node); + } + } + for (node = range.startContainer; node != nextNodeDescendants(range.endContainer); node = nextNode(node)) { + if (isNamedHtmlElement(node, 'A') && hasAttribute(node, "href") && (isContained(node, range) || isAncestor(node, range.endContainer) || node == range.endContainer)) { + hyperlinks.push(node); + } + } + + // "Clear the value of each member of hyperlinks." + var i; + for (i = 0; i < hyperlinks.length; i++) { + clearValue(hyperlinks[i], "unlink", range); + } + }, + standardInlineValueCommand:true + }; + + //@} + + ///////////////////////////////////// + ///// Block formatting commands ///// + ///////////////////////////////////// + + ///// Block formatting command definitions ///// + //@{ + + // "An indentation element is either a blockquote, or a div that has a style + // attribute that sets "margin" or some subproperty of it." + function isIndentationElement(node) { + if (!isAnyHtmlElement(node)) { + return false; + } + + if (node.tagName == "BLOCKQUOTE") { + return true; + } + + if (node.tagName != "DIV") { + return false; + } + + if (typeof node.style.length !== 'undefined') { + var i; + for (i = 0; i < node.style.length; i++) { + // Approximate check + if (/^(-[a-z]+-)?margin/.test(node.style[i])) { + return true; + } + } + } else { + var s; + /*jslint forin: true*/ //not sure whether node.style.hasOwnProperty is valid + for (s in node.style) { + if (/^(-[a-z]+-)?margin/.test(s) && node.style[s] && node.style[s] !== 0) { + return true; + } + } + /*jslint forin: false*/ + } + + return false; + } + + // "A simple indentation element is an indentation element that has no + // attributes other than one or more of + // + // * "a style attribute that sets no properties other than "margin", "border", + // "padding", or subproperties of those; + // * "a class attribute; + // * "a dir attribute." + function isSimpleIndentationElement(node) { + if (!isIndentationElement(node)) { + return false; + } + + if (node.tagName != "BLOCKQUOTE" && node.tagName != "DIV") { + return false; + } + + var i; + for (i = 0; i < node.attributes.length; i++) { + if (!isHtmlNamespace(node.attributes[i].namespaceURI) || jQuery.inArray(node.attributes[i].name, ["style", "class", "dir"]) == -1) { + return false; + } + } + + if (typeof node.style.length !== 'undefined') { + for (i = 0; i < node.style.length; i++) { + // This is approximate, but it works well enough for my purposes. + if (!/^(-[a-z]+-)?(margin|border|padding)/.test(node.style[i])) { + return false; + } + } + } else { + var s; + /*jslint forin: true*/ //not sure whether node.style.hasOwnProperty is valid + for (s in node.style) { + // This is approximate, but it works well enough for my purposes. + if (!/^(-[a-z]+-)?(margin|border|padding)/.test(s) && node.style[s] && node.style[s] !== 0 && node.style[s] !== 'false') { + return false; + } + } + /*jslint forin: false*/ + } + + return true; + } + + // "A non-list single-line container is an HTML element with local name + // "address", "div", "h1", "h2", "h3", "h4", "h5", "h6", "listing", "p", "pre", + // or "xmp"." + function isNonListSingleLineContainer(node) { + return isHtmlElementInArray(node, ["address", "div", "h1", "h2", "h3", "h4", "h5", "h6", "listing", "p", "pre", "xmp"]); + } + + // "A single-line container is either a non-list single-line container, or an + // HTML element with local name "li", "dt", or "dd"." + function isSingleLineContainer(node) { + return isNonListSingleLineContainer(node) || isHtmlElementInArray(node, ["li", "dt", "dd"]); + } + + // "The default single-line container name is "p"." + var defaultSingleLineContainerName = "p"; + + //@} + ///// Check whether the given element is an end break ///// + //@{ + function isEndBreak(element) { + return (isNamedHtmlElement(element, 'br') && element.parentNode.lastChild === element); + } + + //@} + ///// Create an end break ///// + //@{ + function createEndBreak() { + return document.createElement("br"); + } + + /** + * Ensure the container is editable + * E.g. when called for an empty paragraph or header, and the browser is not IE, + * we need to append a br (marked with class aloha-end-br) + * For IE7, there is a special behaviour that will append zero-width whitespace + * @param {DOMNode} container + */ + function ensureContainerEditable(container) { + if (!container) { + return; + } + + if (isNamedHtmlElement(container.lastChild, "br")) { + return; + } + + if ($_(container.childNodes).some(isVisible)) { + return; + } + + if (!jQuery.browser.msie) { + // for normal browsers, the end-br will do + container.appendChild(createEndBreak()); + } else if (jQuery.browser.msie && jQuery.browser.version <= 7 && isHtmlElementInArray(container, ["p", "h1", "h2", "h3", "h4", "h5", "h6", "pre", "blockquote"])) { + // for IE7, we need to insert a text node containing a single zero-width whitespace character + if (!container.firstChild) { + container.appendChild(document.createTextNode('\u200b')); + } + } + } + + //@} + ///// Assorted block formatting command algorithms ///// + //@{ + + function fixDisallowedAncestors(node, range) { + var i; + + // "If node is not editable, abort these steps." + if (!isEditable(node)) { + return; + } + + // "If node is not an allowed child of any of its ancestors in the same + // editing host, and is not an HTML element with local name equal to the + // default single-line container name:" + if ($_(getAncestors(node)).every(function (ancestor) { + return !inSameEditingHost(node, ancestor) || !isAllowedChild(node, ancestor); + }) + && !isHtmlElement_obsolete(node, defaultSingleLineContainerName)) { + // "If node is a dd or dt, wrap the one-node list consisting of node, + // with sibling criteria returning true for any dl with no attributes + // and false otherwise, and new parent instructions returning the + // result of calling createElement("dl") on the context object. Then + // abort these steps." + if (isHtmlElementInArray(node, ["dd", "dt"])) { + wrap( + [node], + function (sibling) { + return isNamedHtmlElement(sibling, 'dl') && !sibling.attributes.length; + }, + function () { + return document.createElement("dl"); + }, + range + ); + return; + } + + // "If node is not a prohibited paragraph child, abort these steps." + if (!isProhibitedParagraphChild(node)) { + return; + } + + // "Set the tag name of node to the default single-line container name, + // and let node be the result." + node = setTagName(node, defaultSingleLineContainerName, range); + + ensureContainerEditable(node); + + // "Fix disallowed ancestors of node." + fixDisallowedAncestors(node, range); + + // "Let descendants be all descendants of node." + var descendants = getDescendants(node); + + // "Fix disallowed ancestors of each member of descendants." + for (i = 0; i < descendants.length; i++) { + fixDisallowedAncestors(descendants[i], range); + } + + // "Abort these steps." + return; + } + + // "Record the values of the one-node list consisting of node, and let + // values be the result." + var values = recordValues([node]); + var newStartOffset, newEndOffset; + + // "While node is not an allowed child of its parent, split the parent of + // the one-node list consisting of node." + while (!isAllowedChild(node, node.parentNode)) { + // If the parent contains only this node and possibly empty text nodes, we rather want to unwrap the node, instead of splitting. + // With splitting, we would get empty nodes, like: + // split:

foo

->

foo

(bad) + // unwrap:

foo

->

foo

(good) + + // First remove empty text nodes that are children of the parent and correct the range if necessary + // we do this to have the node being the only child of its parent, so that we can replace the parent with the node + for (i = node.parentNode.childNodes.length - 1; i >= 0; --i) { + if (node.parentNode.childNodes[i].nodeType == 3 && node.parentNode.childNodes[i].data.length == 0) { + // we remove the empty text node + node.parentNode.removeChild(node.parentNode.childNodes[i]); + + // if the range points to somewhere behind the removed text node, we reduce the offset + if (range.startContainer == node.parentNode && range.startOffset > i) { + range.startOffset--; + } + if (range.endContainer == node.parentNode && range.endOffset > i) { + range.endOffset--; + } + } + } + + // now that the parent has only the node as child (because we + // removed any existing empty text nodes), we can safely unwrap the + // node's contents, and correct the range if necessary + if (node.parentNode.childNodes.length == 1) { + newStartOffset = range.startOffset; + newEndOffset = range.endOffset; + + if (range.startContainer === node.parentNode && range.startOffset > getNodeIndex(node)) { + // the node (1 element) will be replaced by its contents (contents().length elements) + newStartOffset = range.startOffset + (jQuery(node).contents().length - 1); + } + if (range.endContainer === node.parentNode && range.endOffset > getNodeIndex(node)) { + // the node (1 element) will be replaced by its contents (contents().length elements) + newEndOffset = range.endOffset + (jQuery(node).contents().length - 1); + } + jQuery(node).contents().unwrap(); + range.startOffset = newStartOffset; + range.endOffset = newEndOffset; + // after unwrapping, we are done + break; + } else { + // store the original parent + var originalParent = node.parentNode; + splitParent([node], range); + // check whether the parent did not change, so the split did not work, e.g. + // because we already reached the editing host itself. + // this situation can occur, e.g. when we insert a paragraph into an contenteditable span + // in such cases, we just unwrap the contents of the paragraph + if (originalParent === node.parentNode) { + // so we unwrap now + newStartOffset = range.startOffset; + newEndOffset = range.endOffset; + + if (range.startContainer === node.parentNode && range.startOffset > getNodeIndex(node)) { + // the node (1 element) will be replaced by its contents (contents().length elements) + newStartOffset = range.startOffset + (jQuery(node).contents().length - 1); + } + if (range.endContainer === node.parentNode && range.endOffset > getNodeIndex(node)) { + // the node (1 element) will be replaced by its contents (contents().length elements) + newEndOffset = range.endOffset + (jQuery(node).contents().length - 1); + } + jQuery(node).contents().unwrap(); + range.startOffset = newStartOffset; + range.endOffset = newEndOffset; + // after unwrapping, we are done + break; + } + } + } + + // "Restore the values from values." + restoreValues(values, range); + } + + /** + * This method "normalizes" sublists of the given item (which is supposed to be a LI): + * If sublists are found in the LI element, they are moved directly into the outer list. + * @param item item + * @param range range, which will be modified if necessary + */ + function normalizeSublists(item, range) { + // "If item is not an li or it is not editable or its parent is not + // editable, abort these steps." + if (!isNamedHtmlElement(item, 'LI') || !isEditable(item) || !isEditable(item.parentNode)) { + return; + } + + // "Let new item be null." + var newItem = null; + + function isOlUl(node) { + return isHtmlElementInArray(node, ["OL", "UL"]); + } + + // "While item has an ol or ul child:" + while ($_(item.childNodes).some(isOlUl)) { + // "Let child be the last child of item." + var child = item.lastChild; + + // "If child is an ol or ul, or new item is null and child is a Text + // node whose data consists of zero of more space characters:" + if (isHtmlElementInArray(child, ["OL", "UL"]) || (!newItem && child.nodeType == $_.Node.TEXT_NODE && /^[ \t\n\f\r]*$/.test(child.data))) { + // "Set new item to null." + newItem = null; + + // "Insert child into the parent of item immediately following + // item, preserving ranges." + movePreservingRanges(child, item.parentNode, 1 + getNodeIndex(item), range); + + // "Otherwise:" + } else { + // "If new item is null, let new item be the result of calling + // createElement("li") on the ownerDocument of item, then insert + // new item into the parent of item immediately after item." + if (!newItem) { + newItem = item.ownerDocument.createElement("li"); + item.parentNode.insertBefore(newItem, item.nextSibling); + } + + // "Insert child into new item as its first child, preserving + // ranges." + movePreservingRanges(child, newItem, 0, range); + } + } + } + + /** + * This method is the exact opposite of normalizeSublists. + * List nodes directly nested into each other are corrected to be nested in li elements (so that the resulting lists conform the html5 specification) + * @param item list node + * @param range range, which is preserved when modifying the list + */ + function unNormalizeSublists(item, range) { + // "If item is not an ol or ol or it is not editable or its parent is not + // editable, abort these steps." + if (!isHtmlElementInArray(item, ["OL", "UL"]) || !isEditable(item)) { + return; + } + + var $list = jQuery(item); + $list.children("ol,ul").each(function (index, sublist) { + if (isNamedHtmlElement(sublist.previousSibling, "LI")) { + // move the sublist into the LI + movePreservingRanges(sublist, sublist.previousSibling, sublist.previousSibling.childNodes.length, range); + } + }); + } + + //@} + ///// Block-extending a range ///// + //@{ + + function blockExtend(range) { + // "Let start node, start offset, end node, and end offset be the start + // and end nodes and offsets of the range." + var startNode = range.startContainer; + var startOffset = range.startOffset; + var endNode = range.endContainer; + var endOffset = range.endOffset; + + // "If some ancestor container of start node is an li, set start offset to + // the index of the last such li in tree order, and set start node to that + // li's parent." + var liAncestors = $_(getAncestors(startNode).concat(startNode)).filter(function (ancestor) { + return isNamedHtmlElement(ancestor, 'li'); + }).slice(-1); + if (liAncestors.length) { + startOffset = getNodeIndex(liAncestors[0]); + startNode = liAncestors[0].parentNode; + } + + // "If (start node, start offset) is not a block start point, repeat the + // following steps:" + if (!isBlockStartPoint(startNode, startOffset)) { + do { + // "If start offset is zero, set it to start node's index, then set + // start node to its parent." + if (startOffset == 0) { + startOffset = getNodeIndex(startNode); + startNode = startNode.parentNode; + + // "Otherwise, subtract one from start offset." + } else { + startOffset--; + } + + // "If (start node, start offset) is a block boundary point, break from + // this loop." + } while (!isBlockBoundaryPoint(startNode, startOffset)); + } + + // "While start offset is zero and start node's parent is not null, set + // start offset to start node's index, then set start node to its parent." + while (startOffset == 0 && startNode.parentNode) { + startOffset = getNodeIndex(startNode); + startNode = startNode.parentNode; + } + + // "If some ancestor container of end node is an li, set end offset to one + // plus the index of the last such li in tree order, and set end node to + // that li's parent." + liAncestors = $_(getAncestors(endNode).concat(endNode)).filter(function (ancestor) { + return isNamedHtmlElement(ancestor, 'li'); + }).slice(-1); + if (liAncestors.length) { + endOffset = 1 + getNodeIndex(liAncestors[0]); + endNode = liAncestors[0].parentNode; + } + + // "If (end node, end offset) is not a block end point, repeat the + // following steps:" + if (!isBlockEndPoint(endNode, endOffset)) { + do { + // "If end offset is end node's length, set it to one plus end node's + // index, then set end node to its parent." + if (endOffset == getNodeLength(endNode)) { + endOffset = 1 + getNodeIndex(endNode); + endNode = endNode.parentNode; + + // "Otherwise, add one to end offset. + } else { + endOffset++; + } + + // "If (end node, end offset) is a block boundary point, break from + // this loop." + } while (!isBlockBoundaryPoint(endNode, endOffset)); + } + + // "While end offset is end node's length and end node's parent is not + // null, set end offset to one plus end node's index, then set end node to + // its parent." + while (endOffset == getNodeLength(endNode) && endNode.parentNode) { + endOffset = 1 + getNodeIndex(endNode); + endNode = endNode.parentNode; + } + + // "Let new range be a new range whose start and end nodes and offsets + // are start node, start offset, end node, and end offset." + var newRange = Aloha.createRange(); + newRange.setStart(startNode, startOffset); + newRange.setEnd(endNode, endOffset); + + // "Return new range." + return newRange; + } + + function getSelectionListState() { + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node list be a list of nodes, initially empty." + // + // "For each node contained in new range, append node to node list if the + // last member of node list (if any) is not an ancestor of node; node is + // editable; node is not an indentation element; and node is either an ol + // or ul, or the child of an ol or ul, or an allowed child of "li"." + var nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && !isIndentationElement(node) && (isHtmlElementInArray(node, ["ol", "ul"]) || isHtmlElementInArray(node.parentNode, ["ol", "ul"]) || isAllowedChild(node, "li")); + }); + + // "If node list is empty, return "none"." + if (!nodeList.length) { + return "none"; + } + + // "If every member of node list is either an ol or the child of an ol or + // the child of an li child of an ol, and none is a ul or an ancestor of a + // ul, return "ol"." + if ($_(nodeList).every(function (node) { + return (isNamedHtmlElement(node, 'ol') + || isNamedHtmlElement(node.parentNode, "ol") + || (isNamedHtmlElement(node.parentNode, "li") + && isNamedHtmlElement(node.parentNode.parentNode, "ol"))); + }) + && !$_(nodeList).some(function (node) { + return isNamedHtmlElement(node, 'ul') || (node.querySelector && node.querySelector("ul")); + })) { + return "ol"; + } + + // "If every member of node list is either a ul or the child of a ul or the + // child of an li child of a ul, and none is an ol or an ancestor of an ol, + // return "ul"." + if ($_(nodeList).every(function (node) { + return (isNamedHtmlElement(node, 'ul') + || isNamedHtmlElement(node.parentNode, "ul") + || (isNamedHtmlElement(node.parentNode, "li") + && isNamedHtmlElement(node.parentNode.parentNode, "ul"))); + }) + && !$_(nodeList).some(function (node) { + return isNamedHtmlElement(node, 'ol') || (node.querySelector && node.querySelector("ol")); + })) { + return "ul"; + } + + var hasOl = $_(nodeList).some(function (node) { + return (isNamedHtmlElement(node, 'ol') + || isNamedHtmlElement(node.parentNode, "ol") + || (node.querySelector && node.querySelector("ol")) + || (isNamedHtmlElement(node.parentNode, "li") + && isNamedHtmlElement(node.parentNode.parentNode, "ol"))); + }); + var hasUl = $_(nodeList).some(function (node) { + return (isNamedHtmlElement(node, 'ul') + || isNamedHtmlElement(node.parentNode, "ul") + || (node.querySelector && node.querySelector("ul")) + || (isNamedHtmlElement(node.parentNode, "li") + && isNamedHtmlElement(node.parentNode.parentNode, "ul"))); + }); + // "If some member of node list is either an ol or the child or ancestor of + // an ol or the child of an li child of an ol, and some member of node list + // is either a ul or the child or ancestor of a ul or the child of an li + // child of a ul, return "mixed"." + if (hasOl && hasUl) { + return "mixed"; + } + + // "If some member of node list is either an ol or the child or ancestor of + // an ol or the child of an li child of an ol, return "mixed ol"." + if (hasOl) { + return "mixed ol"; + } + + // "If some member of node list is either a ul or the child or ancestor of + // a ul or the child of an li child of a ul, return "mixed ul"." + if (hasUl) { + return "mixed ul"; + } + + // "Return "none"." + return "none"; + } + + function getAlignmentValue(node) { + // "While node is neither null nor an Element, or it is an Element but its + // "display" property has resolved value "inline" or "none", set node to + // its parent." + while ((node && node.nodeType != $_.Node.ELEMENT_NODE) || (node.nodeType == $_.Node.ELEMENT_NODE && jQuery.inArray($_.getComputedStyle(node).display, ["inline", "none"]) != -1)) { + node = node.parentNode; + } + + // "If node is not an Element, return "left"." + if (!node || node.nodeType != $_.Node.ELEMENT_NODE) { + return "left"; + } + + var resolvedValue = $_.getComputedStyle(node).textAlign + // Hack around browser non-standardness + .replace(/^-(moz|webkit)-/, "").replace(/^auto$/, "start"); + + // "If node's "text-align" property has resolved value "start", return + // "left" if the directionality of node is "ltr", "right" if it is "rtl"." + if (resolvedValue == "start") { + return getDirectionality(node) == "ltr" ? "left" : "right"; + } + + // "If node's "text-align" property has resolved value "end", return + // "right" if the directionality of node is "ltr", "left" if it is "rtl"." + if (resolvedValue == "end") { + return getDirectionality(node) == "ltr" ? "right" : "left"; + } + + // "If node's "text-align" property has resolved value "center", "justify", + // "left", or "right", return that value." + if (jQuery.inArray(resolvedValue, ["center", "justify", "left", "right"]) != -1) { + return resolvedValue; + } + + // "Return "left"." + return "left"; + } + + //@} + ///// Recording and restoring overrides ///// + //@{ + + function recordCurrentOverrides(range) { + // "Let overrides be a list of (string, string or boolean) ordered pairs, + // initially empty." + var overrides = []; + + // "If there is a value override for "createLink", add ("createLink", value + // override for "createLink") to overrides." + if (getValueOverride("createlink", range) !== undefined) { + overrides.push(["createlink", getValueOverride("createlink", range)]); + } + + // "For each command in the list "bold", "italic", "strikethrough", + // "subscript", "superscript", "underline", in order: if there is a state + // override for command, add (command, command's state override) to + // overrides." + $_(["bold", "italic", "strikethrough", "subscript", "superscript", "underline"]).forEach(function (command) { + if (getStateOverride(command, range) !== undefined) { + overrides.push([command, getStateOverride(command, range)]); + } + }); + + // "For each command in the list "fontName", "fontSize", "foreColor", + // "hiliteColor", in order: if there is a value override for command, add + // (command, command's value override) to overrides." + $_(["fontname", "fontsize", "forecolor", "hilitecolor"]).forEach(function (command) { + if (getValueOverride(command, range) !== undefined) { + overrides.push([command, getValueOverride(command, range)]); + } + }); + + // "Return overrides." + return overrides; + } + + function recordCurrentStatesAndValues(range) { + // "Let overrides be a list of (string, string or boolean) ordered pairs, + // initially empty." + var overrides = []; + + // "Let node be the first editable Text node effectively contained in the + // active range, or null if there is none." + var node = $_(getAllEffectivelyContainedNodes(range)).filter(function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })[0]; + + // "If node is null, return overrides." + if (!node) { + return overrides; + } + + // "Add ("createLink", value for "createLink") to overrides." + overrides.push(["createlink", commands.createlink.value(range)]); + + // "For each command in the list "bold", "italic", "strikethrough", + // "subscript", "superscript", "underline", in order: if node's effective + // command value for command is one of its inline command activated values, + // add (command, true) to overrides, and otherwise add (command, false) to + // overrides." + $_(["bold", "italic", "strikethrough", "subscript", "superscript", "underline"]).forEach(function (command) { + if ($_(commands[command].inlineCommandActivatedValues).indexOf(getEffectiveCommandValue(node, command)) != -1) { + overrides.push([command, true]); + } else { + overrides.push([command, false]); + } + }); + + // "For each command in the list "fontName", "foreColor", "hiliteColor", in + // order: add (command, command's value) to overrides." + + $_(["fontname", "fontsize", "forecolor", "hilitecolor"]).forEach(function (command) { + overrides.push([command, commands[command].value(range)]); + }); + + // "Add ("fontSize", node's effective command value for "fontSize") to + // overrides." + overrides.push(["fontsize", getEffectiveCommandValue(node, "fontsize")]); + + // "Return overrides." + return overrides; + } + + function restoreStatesAndValues(overrides, range) { + var i; + var command; + var override; + // "Let node be the first editable Text node effectively contained in the + // active range, or null if there is none." + var node = $_(getAllEffectivelyContainedNodes(range)).filter(function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })[0]; + + function isEditableTextNode(node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + } + + // "If node is not null, then for each (command, override) pair in + // overrides, in order:" + if (node) { + + for (i = 0; i < overrides.length; i++) { + command = overrides[i][0]; + override = overrides[i][1]; + + // "If override is a boolean, and queryCommandState(command) + // returns something different from override, call + // execCommand(command)." + if (typeof override == "boolean" && myQueryCommandState(command, range) != override) { + myExecCommand(command); + + // "Otherwise, if override is a string, and command is not + // "fontSize", and queryCommandValue(command) returns something not + // equivalent to override, call execCommand(command, false, + // override)." + } else if (typeof override == "string" && command != "fontsize" && !areEquivalentValues(command, myQueryCommandValue(command, range), override)) { + myExecCommand(command, false, override, range); + + // "Otherwise, if override is a string; and command is "fontSize"; + // and either there is a value override for "fontSize" that is not + // equal to override, or there is no value override for "fontSize" + // and node's effective command value for "fontSize" is not loosely + // equivalent to override: call execCommand("fontSize", false, + // override)." + } else if (typeof override == "string" + && command == "fontsize" + && ((getValueOverride("fontsize", range) !== undefined + && getValueOverride("fontsize", range) !== override) + || (getValueOverride("fontsize", range) === undefined + && !areLooselyEquivalentValues(command, getEffectiveCommandValue(node, "fontsize"), override)))) { + myExecCommand("fontsize", false, override, range); + + // "Otherwise, continue this loop from the beginning." + } else { + continue; + } + + // "Set node to the first editable Text node effectively contained + // in the active range, if there is one." + node = $_(getAllEffectivelyContainedNodes(range)).filter(isEditableTextNode)[0] || node; + } + + // "Otherwise, for each (command, override) pair in overrides, in order:" + } else { + for (i = 0; i < overrides.length; i++) { + command = overrides[i][0]; + override = overrides[i][1]; + + // "If override is a boolean, set the state override for command to + // override." + if (typeof override == "boolean") { + setStateOverride(command, override, range); + } + + // "If override is a string, set the value override for command to + // override." + if (typeof override == "string") { + setValueOverride(command, override, range); + } + } + } + } + + //@} + ///// Canonical space sequences ///// + //@{ + + function canonicalSpaceSequence(n, nonBreakingStart, nonBreakingEnd) { + // "If n is zero, return the empty string." + if (n == 0) { + return ""; + } + + // "If n is one and both non-breaking start and non-breaking end are false, + // return a single space (U+0020)." + if (n == 1 && !nonBreakingStart && !nonBreakingEnd) { + return " "; + } + + // "If n is one, return a single non-breaking space (U+00A0)." + if (n == 1) { + return "\xa0"; + } + + // "Let buffer be the empty string." + var buffer = ""; + + // "If non-breaking start is true, let repeated pair be U+00A0 U+0020. + // Otherwise, let it be U+0020 U+00A0." + var repeatedPair; + if (nonBreakingStart) { + repeatedPair = "\xa0 "; + } else { + repeatedPair = " \xa0"; + } + + // "While n is greater than three, append repeated pair to buffer and + // subtract two from n." + while (n > 3) { + buffer += repeatedPair; + n -= 2; + } + + // "If n is three, append a three-element string to buffer depending on + // non-breaking start and non-breaking end:" + if (n == 3) { + buffer += !nonBreakingStart && !nonBreakingEnd ? " \xa0 " : nonBreakingStart && !nonBreakingEnd ? "\xa0\xa0 " : !nonBreakingStart && nonBreakingEnd ? " \xa0\xa0" : nonBreakingStart && nonBreakingEnd ? "\xa0 \xa0" : "impossible"; + + // "Otherwise, append a two-element string to buffer depending on + // non-breaking start and non-breaking end:" + } else { + buffer += !nonBreakingStart && !nonBreakingEnd ? "\xa0 " : nonBreakingStart && !nonBreakingEnd ? "\xa0 " : !nonBreakingStart && nonBreakingEnd ? " \xa0" : nonBreakingStart && nonBreakingEnd ? "\xa0\xa0" : "impossible"; + } + + // "Return buffer." + return buffer; + } + + function canonicalizeWhitespace(node, offset) { + // "If node is neither editable nor an editing host, abort these steps." + if (!isEditable(node) && !isEditingHost(node)) { + return; + } + + // "Let start node equal node and let start offset equal offset." + var startNode = node; + var startOffset = offset; + + // "Repeat the following steps:" + while (true) { + // "If start node has a child in the same editing host with index start + // offset minus one, set start node to that child, then set start + // offset to start node's length." + if (0 <= startOffset - 1 && inSameEditingHost(startNode, startNode.childNodes[startOffset - 1])) { + startNode = startNode.childNodes[startOffset - 1]; + startOffset = getNodeLength(startNode); + + // "Otherwise, if start offset is zero and start node does not follow a + // line break and start node's parent is in the same editing host, set + // start offset to start node's index, then set start node to its + // parent." + } else if (startOffset == 0 && !followsLineBreak(startNode) && inSameEditingHost(startNode, startNode.parentNode)) { + startOffset = getNodeIndex(startNode); + startNode = startNode.parentNode; + + // "Otherwise, if start node is a Text node and its parent's resolved + // value for "white-space" is neither "pre" nor "pre-wrap" and start + // offset is not zero and the (start offset − 1)st element of start + // node's data is a space (0x0020) or non-breaking space (0x00A0), + // subtract one from start offset." + } else if (startNode.nodeType == $_.Node.TEXT_NODE && jQuery.inArray($_.getComputedStyle(startNode.parentNode).whiteSpace, ["pre", "pre-wrap"]) == -1 && startOffset != 0 && /[ \xa0]/.test(startNode.data[startOffset - 1])) { + startOffset--; + + // "Otherwise, break from this loop." + } else { + break; + } + } + + // "Let end node equal start node and end offset equal start offset." + var endNode = startNode; + var endOffset = startOffset; + + // "Let length equal zero." + var length = 0; + + // "Let follows space be false." + var followsSpace = false; + + // "Repeat the following steps:" + while (true) { + // "If end node has a child in the same editing host with index end + // offset, set end node to that child, then set end offset to zero." + if (endOffset < endNode.childNodes.length && inSameEditingHost(endNode, endNode.childNodes[endOffset])) { + endNode = endNode.childNodes[endOffset]; + endOffset = 0; + + // "Otherwise, if end offset is end node's length and end node does not + // precede a line break and end node's parent is in the same editing + // host, set end offset to one plus end node's index, then set end node + // to its parent." + } else if (endOffset == getNodeLength(endNode) && !precedesLineBreak(endNode) && inSameEditingHost(endNode, endNode.parentNode)) { + endOffset = 1 + getNodeIndex(endNode); + endNode = endNode.parentNode; + + // "Otherwise, if end node is a Text node and its parent's resolved + // value for "white-space" is neither "pre" nor "pre-wrap" and end + // offset is not end node's length and the end offsetth element of + // end node's data is a space (0x0020) or non-breaking space (0x00A0):" + } else if (endNode.nodeType == $_.Node.TEXT_NODE && jQuery.inArray($_.getComputedStyle(endNode.parentNode).whiteSpace, ["pre", "pre-wrap"]) == -1 && endOffset != getNodeLength(endNode) && /[ \xa0]/.test(endNode.data[endOffset])) { + // "If follows space is true and the end offsetth element of end + // node's data is a space (0x0020), call deleteData(end offset, 1) + // on end node, then continue this loop from the beginning." + if (followsSpace && " " == endNode.data[endOffset]) { + endNode.deleteData(endOffset, 1); + continue; + } + + // "Set follows space to true if the end offsetth element of end + // node's data is a space (0x0020), false otherwise." + followsSpace = " " == endNode.data[endOffset]; + + // "Add one to end offset." + endOffset++; + + // "Add one to length." + length++; + + // "Otherwise, break from this loop." + } else { + break; + } + } + + // "Let replacement whitespace be the canonical space sequence of length + // length. non-breaking start is true if start offset is zero and start + // node follows a line break, and false otherwise. non-breaking end is true + // if end offset is end node's length and end node precedes a line break, + // and false otherwise." + var replacementWhitespace = canonicalSpaceSequence(length, startOffset == 0 && followsLineBreak(startNode), endOffset == getNodeLength(endNode) && precedesLineBreak(endNode)); + + // "While (start node, start offset) is before (end node, end offset):" + while (getPosition(startNode, startOffset, endNode, endOffset) == "before") { + // "If start node has a child with index start offset, set start node + // to that child, then set start offset to zero." + if (startOffset < startNode.childNodes.length) { + startNode = startNode.childNodes[startOffset]; + startOffset = 0; + + // "Otherwise, if start node is not a Text node or if start offset is + // start node's length, set start offset to one plus start node's + // index, then set start node to its parent." + } else if (startNode.nodeType != $_.Node.TEXT_NODE || startOffset == getNodeLength(startNode)) { + startOffset = 1 + getNodeIndex(startNode); + startNode = startNode.parentNode; + + // "Otherwise:" + } else { + // "Remove the first element from replacement whitespace, and let + // element be that element." + var element = replacementWhitespace[0]; + replacementWhitespace = replacementWhitespace.slice(1); + + // "If element is not the same as the start offsetth element of + // start node's data:" + if (element != startNode.data[startOffset]) { + // "Call insertData(start offset, element) on start node." + startNode.insertData(startOffset, element); + + // "Call deleteData(start offset + 1, 1) on start node." + startNode.deleteData(startOffset + 1, 1); + } + + // "Add one to start offset." + startOffset++; + } + } + } + + //@} + ///// Deleting the contents of a range ///// + //@{ + + function deleteContents(arg1, arg2, arg3, arg4, arg5) { + // We accept several different calling conventions: + // + // 1) A single argument, which is a range. + // + // 2) Two arguments, the first being a range and the second flags. + // + // 3) Four arguments, the start and end of a range. + // + // 4) Five arguments, the start and end of a range plus flags. + // + // The flags argument is a dictionary that can have up to two keys, + // blockMerging and stripWrappers, whose corresponding values are + // interpreted as boolean. E.g., {stripWrappers: false}. + var range; + var flags = {}; + var i; + + if (arguments.length < 3) { + range = arg1; + } else { + range = Aloha.createRange(); + range.setStart(arg1, arg2); + range.setEnd(arg3, arg4); + } + if (arguments.length == 2) { + flags = arg2; + } + if (arguments.length == 5) { + flags = arg5; + } + + var blockMerging = null != flags.blockMerging ? !!flags.blockMerging : true; + var stripWrappers = null != flags.stripWrappers ? !!flags.stripWrappers : true; + + // "If range is null, abort these steps and do nothing." + if (!range) { + return; + } + + // "Let start node, start offset, end node, and end offset be range's start + // and end nodes and offsets." + var startNode = range.startContainer; + var startOffset = range.startOffset; + var endNode = range.endContainer; + var endOffset = range.endOffset; + var referenceNode; + + // "While start node has at least one child:" + while (startNode.hasChildNodes()) { + // "If start offset is start node's length, and start node's parent is + // in the same editing host, and start node is an inline node, set + // start offset to one plus the index of start node, then set start + // node to its parent and continue this loop from the beginning." + if (startOffset == getNodeLength(startNode) && inSameEditingHost(startNode, startNode.parentNode) && isInlineNode(startNode)) { + startOffset = 1 + getNodeIndex(startNode); + startNode = startNode.parentNode; + continue; + } + + // "If start offset is start node's length, break from this loop." + if (startOffset == getNodeLength(startNode)) { + break; + } + + // "Let reference node be the child of start node with index equal to + // start offset." + referenceNode = startNode.childNodes[startOffset]; + + // "If reference node is a block node or an Element with no children, + // or is neither an Element nor a Text node, break from this loop." + if (isBlockNode(referenceNode) || (referenceNode.nodeType == $_.Node.ELEMENT_NODE && !referenceNode.hasChildNodes()) || (referenceNode.nodeType != $_.Node.ELEMENT_NODE && referenceNode.nodeType != $_.Node.TEXT_NODE)) { + break; + } + + // "Set start node to reference node and start offset to 0." + startNode = referenceNode; + startOffset = 0; + } + + // "While end node has at least one child:" + while (endNode.hasChildNodes()) { + // "If end offset is 0, and end node's parent is in the same editing + // host, and end node is an inline node, set end offset to the index of + // end node, then set end node to its parent and continue this loop + // from the beginning." + if (endOffset == 0 && inSameEditingHost(endNode, endNode.parentNode) && isInlineNode(endNode)) { + endOffset = getNodeIndex(endNode); + endNode = endNode.parentNode; + continue; + } + + // "If end offset is 0, break from this loop." + if (endOffset == 0) { + break; + } + + // "Let reference node be the child of end node with index equal to end + // offset minus one." + referenceNode = endNode.childNodes[endOffset - 1]; + + // "If reference node is a block node or an Element with no children, + // or is neither an Element nor a Text node, break from this loop." + if (isBlockNode(referenceNode) || (referenceNode.nodeType == $_.Node.ELEMENT_NODE && !referenceNode.hasChildNodes()) || (referenceNode.nodeType != $_.Node.ELEMENT_NODE && referenceNode.nodeType != $_.Node.TEXT_NODE)) { + break; + } + + // "Set end node to reference node and end offset to the length of + // reference node." + endNode = referenceNode; + endOffset = getNodeLength(referenceNode); + } + + // "If (end node, end offset) is not after (start node, start offset), set + // range's end to its start and abort these steps." + if (getPosition(endNode, endOffset, startNode, startOffset) !== "after") { + range.setEnd(range.startContainer, range.startOffset); + return; + } + + // "If start node is a Text node and start offset is 0, set start offset to + // the index of start node, then set start node to its parent." + // Commented out for unknown reason + //if (startNode.nodeType == $_.Node.TEXT_NODE && startOffset == 0 && startNode != endNode) { + // startOffset = getNodeIndex(startNode); + // startNode = startNode.parentNode; + //} + + // "If end node is a Text node and end offset is its length, set end offset + // to one plus the index of end node, then set end node to its parent." + if (endNode.nodeType == $_.Node.TEXT_NODE && endOffset == getNodeLength(endNode) && startNode != endNode) { + endOffset = 1 + getNodeIndex(endNode); + endNode = endNode.parentNode; + } + + // "Set range's start to (start node, start offset) and its end to (end + // node, end offset)." + range.setStart(startNode, startOffset); + range.setEnd(endNode, endOffset); + + // "Let start block be the start node of range." + var startBlock = range.startContainer; + + // "While start block's parent is in the same editing host and start block + // is an inline node, set start block to its parent." + while (inSameEditingHost(startBlock, startBlock.parentNode) && isInlineNode(startBlock)) { + startBlock = startBlock.parentNode; + } + + // "If start block is neither a block node nor an editing host, or "span" + // is not an allowed child of start block, or start block is a td or th, + // set start block to null." + if ((!isBlockNode(startBlock) && !isEditingHost(startBlock)) || !isAllowedChild("span", startBlock) || isHtmlElementInArray(startBlock, ["td", "th"])) { + startBlock = null; + } + + // "Let end block be the end node of range." + var endBlock = range.endContainer; + + // "While end block's parent is in the same editing host and end block is + // an inline node, set end block to its parent." + while (inSameEditingHost(endBlock, endBlock.parentNode) && isInlineNode(endBlock)) { + endBlock = endBlock.parentNode; + } + + // "If end block is neither a block node nor an editing host, or "span" is + // not an allowed child of end block, or end block is a td or th, set end + // block to null." + if ((!isBlockNode(endBlock) && !isEditingHost(endBlock)) || !isAllowedChild("span", endBlock) || isHtmlElementInArray(endBlock, ["td", "th"])) { + endBlock = null; + } + + // "Record current states and values, and let overrides be the result." + var overrides = recordCurrentStatesAndValues(range); + var parent_; + // "If start node and end node are the same, and start node is an editable + // Text node:" + if (startNode == endNode && isEditable(startNode) && startNode.nodeType == $_.Node.TEXT_NODE) { + // "Let parent be the parent of node." + parent_ = startNode.parentNode; + + // "Call deleteData(start offset, end offset − start offset) on start + // node." + startNode.deleteData(startOffset, endOffset - startOffset); + + // if deleting the text moved two spaces together, we replace the left one by a  , which makes the two spaces a visible + // two space sequence + if (startOffset > 0 && startNode.data.substr(startOffset - 1, 1) === ' ' && startOffset < startNode.data.length && startNode.data.substr(startOffset, 1) === ' ') { + startNode.replaceData(startOffset - 1, 1, '\xa0'); + } + + // "Canonicalize whitespace at (start node, start offset)." + canonicalizeWhitespace(startNode, startOffset); + + // "Set range's end to its start." + // Ok, also set the range's start to its start, because modifying the text + // might have somehow corrupted the range + range.setStart(range.startContainer, range.startOffset); + range.setEnd(range.startContainer, range.startOffset); + + // "Restore states and values from overrides." + restoreStatesAndValues(overrides, range); + + // "If parent is editable or an editing host, is not an inline node, + // and has no children, call createElement("br") on the context object + // and append the result as the last child of parent." + // only do this, if the offsetHeight is 0 + if ((isEditable(parent_) || isEditingHost(parent_)) && !isInlineNode(parent_)) { + // TODO is this always correct? + ensureContainerEditable(parent_); + } + + // "Abort these steps." + return; + } + + // "If start node is an editable Text node, call deleteData() on it, with + // start offset as the first argument and (length of start node − start + // offset) as the second argument." + if (isEditable(startNode) && startNode.nodeType == $_.Node.TEXT_NODE) { + startNode.deleteData(startOffset, getNodeLength(startNode) - startOffset); + } + + // "Let node list be a list of nodes, initially empty." + // + // "For each node contained in range, append node to node list if the last + // member of node list (if any) is not an ancestor of node; node is + // editable; and node is not a thead, tbody, tfoot, tr, th, or td." + var nodeList = getContainedNodes( + range, + function (node) { + return isEditable(node) && !isHtmlElementInArray(node, ["thead", "tbody", "tfoot", "tr", "th", "td"]); + } + ); + + // "For each node in node list:" + for (i = 0; i < nodeList.length; i++) { + var node = nodeList[i]; + + // "Let parent be the parent of node." + parent_ = node.parentNode; + + // "Remove node from parent." + parent_.removeChild(node); + + // "If strip wrappers is true or parent is not an ancestor container of + // start node, while parent is an editable inline node with length 0, + // let grandparent be the parent of parent, then remove parent from + // grandparent, then set parent to grandparent." + if (stripWrappers || (!isAncestor(parent_, startNode) && parent_ != startNode)) { + while (isEditable(parent_) && isInlineNode(parent_) && getNodeLength(parent_) == 0) { + var grandparent = parent_.parentNode; + grandparent.removeChild(parent_); + parent_ = grandparent; + } + } + + // "If parent is editable or an editing host, is not an inline node, + // and has no children, call createElement("br") on the context object + // and append the result as the last child of parent." + // only do this, if the offsetHeight is 0 + if ((isEditable(parent_) || isEditingHost(parent_)) && !isInlineNode(parent_)) { + ensureContainerEditable(parent_); + } + } + + // "If end node is an editable Text node, call deleteData(0, end offset) on + // it." + if (isEditable(endNode) && endNode.nodeType == $_.Node.TEXT_NODE) { + endNode.deleteData(0, endOffset); + } + + // "Canonicalize whitespace at range's start." + canonicalizeWhitespace(range.startContainer, range.startOffset); + + // "Canonicalize whitespace at range's end." + canonicalizeWhitespace(range.endContainer, range.endOffset); + + // "If block merging is false, or start block or end block is null, or + // start block is not in the same editing host as end block, or start block + // and end block are the same:" + if (!blockMerging || !startBlock || !endBlock || !inSameEditingHost(startBlock, endBlock) || startBlock == endBlock) { + // "Set range's end to its start." + range.setEnd(range.startContainer, range.startOffset); + + // "Restore states and values from overrides." + restoreStatesAndValues(overrides, range); + + // "Abort these steps." + return; + } + + // "If start block has one child, which is a collapsed block prop, remove + // its child from it." + if (startBlock.children.length == 1 && isCollapsedBlockProp(startBlock.firstChild)) { + startBlock.removeChild(startBlock.firstChild); + } + + // "If end block has one child, which is a collapsed block prop, remove its + // child from it." + if (endBlock.children.length == 1 && isCollapsedBlockProp(endBlock.firstChild)) { + endBlock.removeChild(endBlock.firstChild); + } + + var values; + // "If start block is an ancestor of end block:" + if (isAncestor(startBlock, endBlock)) { + // "Let reference node be end block." + referenceNode = endBlock; + + // "While reference node is not a child of start block, set reference + // node to its parent." + while (referenceNode.parentNode != startBlock) { + referenceNode = referenceNode.parentNode; + } + + // "Set the start and end of range to (start block, index of reference + // node)." + range.setStart(startBlock, getNodeIndex(referenceNode)); + range.setEnd(startBlock, getNodeIndex(referenceNode)); + + // "If end block has no children:" + if (!endBlock.hasChildNodes()) { + // "While end block is editable and is the only child of its parent + // and is not a child of start block, let parent equal end block, + // then remove end block from parent, then set end block to + // parent." + while (isEditable(endBlock) && endBlock.parentNode.childNodes.length == 1 && endBlock.parentNode != startBlock) { + parent_ = endBlock; + parent_.removeChild(endBlock); + endBlock = parent_; + } + + // "If end block is editable and is not an inline node, and its + // previousSibling and nextSibling are both inline nodes, call + // createElement("br") on the context object and insert it into end + // block's parent immediately after end block." + + if (isEditable(endBlock) && !isInlineNode(endBlock) && isInlineNode(endBlock.previousSibling) && isInlineNode(endBlock.nextSibling)) { + endBlock.parentNode.insertBefore(document.createElement("br"), endBlock.nextSibling); + } + + // "If end block is editable, remove it from its parent." + if (isEditable(endBlock)) { + endBlock.parentNode.removeChild(endBlock); + } + + // "Restore states and values from overrides." + restoreStatesAndValues(overrides, range); + + // "Abort these steps." + return; + } + + // "If end block's firstChild is not an inline node, restore states and + // values from overrides, then abort these steps." + if (!isInlineNode(endBlock.firstChild)) { + restoreStatesAndValues(overrides, range); + return; + } + + // "Let children be a list of nodes, initially empty." + var children = []; + + // "Append the first child of end block to children." + children.push(endBlock.firstChild); + + // "While children's last member is not a br, and children's last + // member's nextSibling is an inline node, append children's last + // member's nextSibling to children." + while (!isNamedHtmlElement(children[children.length - 1], "br") && isInlineNode(children[children.length - 1].nextSibling)) { + children.push(children[children.length - 1].nextSibling); + } + + // "Record the values of children, and let values be the result." + values = recordValues(children); + + // "While children's first member's parent is not start block, split + // the parent of children." + while (children[0].parentNode != startBlock) { + splitParent(children, range); + } + + // "If children's first member's previousSibling is an editable br, + // remove that br from its parent." + if (isEditable(children[0].previousSibling) && isNamedHtmlElement(children[0].previousSibling, "br")) { + children[0].parentNode.removeChild(children[0].previousSibling); + } + + // "Otherwise, if start block is a descendant of end block:" + } else if (isDescendant(startBlock, endBlock)) { + // "Set the start and end of range to (start block, length of start + // block)." + range.setStart(startBlock, getNodeLength(startBlock)); + range.setEnd(startBlock, getNodeLength(startBlock)); + + // "Let reference node be start block." + referenceNode = startBlock; + + // "While reference node is not a child of end block, set reference + // node to its parent." + while (referenceNode.parentNode != endBlock) { + referenceNode = referenceNode.parentNode; + } + + // "If reference node's nextSibling is an inline node and start block's + // lastChild is a br, remove start block's lastChild from it." + if (isInlineNode(referenceNode.nextSibling) && isNamedHtmlElement(startBlock.lastChild, "br")) { + startBlock.removeChild(startBlock.lastChild); + } + + // "Let nodes to move be a list of nodes, initially empty." + var nodesToMove = []; + + // "If reference node's nextSibling is neither null nor a br nor a + // block node, append it to nodes to move." + if (referenceNode.nextSibling && !isNamedHtmlElement(referenceNode.nextSibling, "br") && !isBlockNode(referenceNode.nextSibling)) { + nodesToMove.push(referenceNode.nextSibling); + } + + // "While nodes to move is nonempty and its last member's nextSibling + // is neither null nor a br nor a block node, append it to nodes to + // move." + if (nodesToMove.length && nodesToMove[nodesToMove.length - 1].nextSibling && !isNamedHtmlElement(nodesToMove[nodesToMove.length - 1].nextSibling, "br") && !isBlockNode(nodesToMove[nodesToMove.length - 1].nextSibling)) { + nodesToMove.push(nodesToMove[nodesToMove.length - 1].nextSibling); + } + + // "Record the values of nodes to move, and let values be the result." + values = recordValues(nodesToMove); + + // "For each node in nodes to move, append node as the last child of + // start block, preserving ranges." + $_(nodesToMove).forEach(function (node) { + movePreservingRanges(node, startBlock, -1, range); + }); + + // "If the nextSibling of reference node is a br, remove it from its + // parent." + if (isNamedHtmlElement(referenceNode.nextSibling, "br")) { + referenceNode.parentNode.removeChild(referenceNode.nextSibling); + } + + // "Otherwise:" + } else { + // "Set the start and end of range to (start block, length of start + // block)." + range.setStart(startBlock, getNodeLength(startBlock)); + range.setEnd(startBlock, getNodeLength(startBlock)); + + // "If end block's firstChild is an inline node and start block's + // lastChild is a br, remove start block's lastChild from it." + if (isInlineNode(endBlock.firstChild) && isNamedHtmlElement(startBlock.lastChild, "br")) { + startBlock.removeChild(startBlock.lastChild); + } + + // "Record the values of end block's children, and let values be the + // result." + values = recordValues([].slice.call(toArray(endBlock.childNodes))); + + // "While end block has children, append the first child of end block + // to start block, preserving ranges." + while (endBlock.hasChildNodes()) { + movePreservingRanges(endBlock.firstChild, startBlock, -1, range); + } + + // "While end block has no children, let parent be the parent of end + // block, then remove end block from parent, then set end block to + // parent." + while (!endBlock.hasChildNodes()) { + parent_ = endBlock.parentNode; + parent_.removeChild(endBlock); + endBlock = parent_; + } + } + + // "Restore the values from values." + restoreValues(values, range); + + // "If start block has no children, call createElement("br") on the context + // object and append the result as the last child of start block." + ensureContainerEditable(startBlock); + + // "Restore states and values from overrides." + restoreStatesAndValues(overrides, range); + } + + // "To remove a node node while preserving its descendants, split the parent of + // node's children if it has any. If it has no children, instead remove it from + // its parent." + function removePreservingDescendants(node, range) { + if (node.hasChildNodes()) { + splitParent([].slice.call(toArray(node.childNodes)), range); + } else { + node.parentNode.removeChild(node); + } + } + + //@} + ///// Indenting and outdenting ///// + //@{ + + function cleanLists(node, range) { + // remove any whitespace nodes around list nodes + if (node) { + jQuery(node).find('ul,ol,li').each(function () { + jQuery(this).contents().each(function () { + if (isWhitespaceNode(this)) { + var index = getNodeIndex(this); + + // if the range points to somewhere behind the removed text node, we reduce the offset + if (range.startContainer === this.parentNode && range.startOffset > index) { + range.startOffset--; + } else if (range.startContainer === this) { + // the range starts in the removed text node, let it start right before + range.startContainer = this.parentNode; + range.startOffset = index; + } + // same thing for end of the range + if (range.endContainer === this.parentNode && range.endOffset > index) { + range.endOffset--; + } else if (range.endContainer === this) { + range.endContainer = this.parentNode; + range.endOffset = index; + } + // finally remove the whitespace node + jQuery(this).remove(); + } + }); + }); + } + } + + + //@} + ///// Indenting and outdenting ///// + //@{ + + function indentNodes(nodeList, range) { + // "If node list is empty, do nothing and abort these steps." + if (!nodeList.length) { + return; + } + + // "Let first node be the first member of node list." + var firstNode = nodeList[0]; + + // "If first node's parent is an ol or ul:" + if (isHtmlElementInArray(firstNode.parentNode, ["OL", "UL"])) { + // "Let tag be the local name of the parent of first node." + var tag = firstNode.parentNode.tagName; + + // "Wrap node list, with sibling criteria returning true for an HTML + // element with local name tag and false otherwise, and new parent + // instructions returning the result of calling createElement(tag) on + // the ownerDocument of first node." + wrap( + nodeList, + function (node) { + return isHtmlElement_obsolete(node, tag); + }, + function () { + return firstNode.ownerDocument.createElement(tag); + }, + range + ); + + // "Abort these steps." + return; + } + + // "Wrap node list, with sibling criteria returning true for a simple + // indentation element and false otherwise, and new parent instructions + // returning the result of calling createElement("blockquote") on the + // ownerDocument of first node. Let new parent be the result." + var newParent = wrap( + nodeList, + function (node) { + return isSimpleIndentationElement(node); + }, + function () { + return firstNode.ownerDocument.createElement("blockquote"); + }, + range + ); + + // "Fix disallowed ancestors of new parent." + fixDisallowedAncestors(newParent, range); + } + + function outdentNode(node, range) { + // "If node is not editable, abort these steps." + if (!isEditable(node)) { + return; + } + + // "If node is a simple indentation element, remove node, preserving its + // descendants. Then abort these steps." + if (isSimpleIndentationElement(node)) { + removePreservingDescendants(node, range); + return; + } + + // "If node is an indentation element:" + if (isIndentationElement(node)) { + // "Unset the class and dir attributes of node, if any." + node.removeAttribute("class"); + node.removeAttribute("dir"); + + // "Unset the margin, padding, and border CSS properties of node." + node.style.margin = ""; + node.style.padding = ""; + node.style.border = ""; + if (node.getAttribute("style") == "") { + node.removeAttribute("style"); + } + + // "Set the tag name of node to "div"." + setTagName(node, "div", range); + + // "Abort these steps." + return; + } + + // "Let current ancestor be node's parent." + var currentAncestor = node.parentNode; + + // "Let ancestor list be a list of nodes, initially empty." + var ancestorList = []; + + // "While current ancestor is an editable Element that is neither a simple + // indentation element nor an ol nor a ul, append current ancestor to + // ancestor list and then set current ancestor to its parent." + while (isEditable(currentAncestor) && currentAncestor.nodeType == $_.Node.ELEMENT_NODE && !isSimpleIndentationElement(currentAncestor) && !isHtmlElementInArray(currentAncestor, ["ol", "ul"])) { + ancestorList.push(currentAncestor); + currentAncestor = currentAncestor.parentNode; + } + + // "If current ancestor is not an editable simple indentation element:" + if (!isEditable(currentAncestor) || !isSimpleIndentationElement(currentAncestor)) { + // "Let current ancestor be node's parent." + currentAncestor = node.parentNode; + + // "Let ancestor list be the empty list." + ancestorList = []; + + // "While current ancestor is an editable Element that is neither an + // indentation element nor an ol nor a ul, append current ancestor to + // ancestor list and then set current ancestor to its parent." + while (isEditable(currentAncestor) && currentAncestor.nodeType == $_.Node.ELEMENT_NODE && !isIndentationElement(currentAncestor) && !isHtmlElementInArray(currentAncestor, ["ol", "ul"])) { + ancestorList.push(currentAncestor); + currentAncestor = currentAncestor.parentNode; + } + } + + // "If node is an ol or ul and current ancestor is not an editable + // indentation element:" + if (isHtmlElementInArray(node, ["OL", "UL"]) && (!isEditable(currentAncestor) || !isIndentationElement(currentAncestor))) { + // "Unset the reversed, start, and type attributes of node, if any are + // set." + node.removeAttribute("reversed"); + node.removeAttribute("start"); + node.removeAttribute("type"); + + // "Let children be the children of node." + var children = [].slice.call(toArray(node.childNodes)); + + // "If node has attributes, and its parent is not an ol or ul, set the + // tag name of node to "div"." + if (node.attributes.length && !isHtmlElementInArray(node.parentNode, ["OL", "UL"])) { + setTagName(node, "div", range); + + // "Otherwise:" + } else { + // "Record the values of node's children, and let values be the + // result." + var values = recordValues([].slice.call(toArray(node.childNodes))); + + // "Remove node, preserving its descendants." + removePreservingDescendants(node, range); + + // "Restore the values from values." + restoreValues(values, range); + } + + // "Fix disallowed ancestors of each member of children." + var i; + for (i = 0; i < children.length; i++) { + fixDisallowedAncestors(children[i], range); + } + + // "Abort these steps." + return; + } + + // "If current ancestor is not an editable indentation element, abort these + // steps." + if (!isEditable(currentAncestor) || !isIndentationElement(currentAncestor)) { + return; + } + + // "Append current ancestor to ancestor list." + ancestorList.push(currentAncestor); + + // "Let original ancestor be current ancestor." + var originalAncestor = currentAncestor; + + // "While ancestor list is not empty:" + while (ancestorList.length) { + // "Let current ancestor be the last member of ancestor list." + // + // "Remove the last member of ancestor list." + currentAncestor = ancestorList.pop(); + + // "Let target be the child of current ancestor that is equal to either + // node or the last member of ancestor list." + var target = node.parentNode == currentAncestor ? node : ancestorList[ancestorList.length - 1]; + + // "If target is an inline node that is not a br, and its nextSibling + // is a br, remove target's nextSibling from its parent." + if (isInlineNode(target) && !isNamedHtmlElement(target, 'BR') && isNamedHtmlElement(target.nextSibling, "BR")) { + target.parentNode.removeChild(target.nextSibling); + } + + // "Let preceding siblings be the preceding siblings of target, and let + // following siblings be the following siblings of target." + var precedingSiblings = [].slice.call(toArray(currentAncestor.childNodes), 0, getNodeIndex(target)); + var followingSiblings = [].slice.call(toArray(currentAncestor.childNodes), 1 + getNodeIndex(target)); + + // "Indent preceding siblings." + indentNodes(precedingSiblings, range); + + // "Indent following siblings." + indentNodes(followingSiblings, range); + } + + // "Outdent original ancestor." + outdentNode(originalAncestor, range); + } + + + //@} + ///// Toggling lists ///// + //@{ + + function toggleLists(tagName, range) { + // "Let mode be "disable" if the selection's list state is tag name, and + // "enable" otherwise." + var mode = getSelectionListState() == tagName ? "disable" : "enable"; + + tagName = tagName.toUpperCase(); + + // "Let other tag name be "ol" if tag name is "ul", and "ul" if tag name is + // "ol"." + var otherTagName = tagName == "OL" ? "UL" : "OL"; + + // "Let items be a list of all lis that are ancestor containers of the + // range's start and/or end node." + // + // It's annoying to get this in tree order using functional stuff without + // doing getDescendants(document), which is slow, so I do it imperatively. + var items = []; + (function () { + var ancestorContainer; + for (ancestorContainer = range.endContainer; + ancestorContainer != range.commonAncestorContainer; + ancestorContainer = ancestorContainer.parentNode) { + if (isNamedHtmlElement(ancestorContainer, "li")) { + items.unshift(ancestorContainer); + } + } + for (ancestorContainer = range.startContainer; + ancestorContainer; + ancestorContainer = ancestorContainer.parentNode) { + if (isNamedHtmlElement(ancestorContainer, "li")) { + items.unshift(ancestorContainer); + } + } + }()); + + // "For each item in items, normalize sublists of item." + $_(items).forEach(function (thisArg) { + normalizeSublists(thisArg, range); + }); + + // "Block-extend the range, and let new range be the result." + var newRange = blockExtend(range); + + // "If mode is "enable", then let lists to convert consist of every + // editable HTML element with local name other tag name that is contained + // in new range, and for every list in lists to convert:" + if (mode == "enable") { + $_(getAllContainedNodes(newRange, function (node) { + return isEditable(node) && isHtmlElement_obsolete(node, otherTagName); + })).forEach(function (list) { + // "If list's previousSibling or nextSibling is an editable HTML + // element with local name tag name:" + if ((isEditable(list.previousSibling) && isHtmlElement_obsolete(list.previousSibling, tagName)) || (isEditable(list.nextSibling) && isHtmlElement_obsolete(list.nextSibling, tagName))) { + // "Let children be list's children." + var children = [].slice.call(toArray(list.childNodes)); + + // "Record the values of children, and let values be the + // result." + var values = recordValues(children); + + // "Split the parent of children." + splitParent(children, range); + + // "Wrap children, with sibling criteria returning true for an + // HTML element with local name tag name and false otherwise." + wrap( + children, + function (node) { + return isHtmlElement_obsolete(node, tagName); + }, + function () { + return null; + }, + range + ); + + // "Restore the values from values." + restoreValues(values, range); + + // "Otherwise, set the tag name of list to tag name." + } else { + setTagName(list, tagName, range); + } + }); + } + + // "Let node list be a list of nodes, initially empty." + // + // "For each node node contained in new range, if node is editable; the + // last member of node list (if any) is not an ancestor of node; node + // is not an indentation element; and either node is an ol or ul, or its + // parent is an ol or ul, or it is an allowed child of "li"; then append + // node to node list." + var nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && !isIndentationElement(node) && (isHtmlElementInArray(node, ["OL", "UL"]) || isHtmlElementInArray(node.parentNode, ["OL", "UL"]) || isAllowedChild(node, "li")); + }); + + // "If mode is "enable", remove from node list any ol or ul whose parent is + // not also an ol or ul." + if (mode == "enable") { + nodeList = $_(nodeList).filter(function (node) { + return !isHtmlElementInArray(node, ["ol", "ul"]) || isHtmlElementInArray(node.parentNode, ["ol", "ul"]); + }); + } + + // "If mode is "disable", then while node list is not empty:" + var sublist, values; + + function createLi() { + return document.createElement("li"); + } + + function isOlUl(node) { + return isHtmlElementInArray(node, ["ol", "ul"]); + } + + function makeIsElementPred(tagName) { + return function (node) { + return isHtmlElement_obsolete(node, tagName); + }; + } + + function makeCreateElement(tagName) { + return function () { + return document.createElement(tagName); + }; + } + + function makeCreateElementSublist(tagName, sublist, range) { + return function () { + // "If sublist's first member's parent is not an editable + // simple indentation element, or sublist's first member's + // parent's previousSibling is not an editable HTML element + // with local name tag name, call createElement(tag name) + // on the context object and return the result." + if (!isEditable(sublist[0].parentNode) || !isSimpleIndentationElement(sublist[0].parentNode) || !isEditable(sublist[0].parentNode.previousSibling) || !isHtmlElement_obsolete(sublist[0].parentNode.previousSibling, tagName)) { + return document.createElement(tagName); + } + + // "Let list be sublist's first member's parent's + // previousSibling." + var list = sublist[0].parentNode.previousSibling; + + // "Normalize sublists of list's lastChild." + normalizeSublists(list.lastChild, range); + + // "If list's lastChild is not an editable HTML element + // with local name tag name, call createElement(tag name) + // on the context object, and append the result as the last + // child of list." + if (!isEditable(list.lastChild) || !isHtmlElement_obsolete(list.lastChild, tagName)) { + list.appendChild(document.createElement(tagName)); + } + + // "Return the last child of list." + return list.lastChild; + }; + } + + if (mode == "disable") { + while (nodeList.length) { + // "Let sublist be an empty list of nodes." + sublist = []; + + // "Remove the first member from node list and append it to + // sublist." + sublist.push(nodeList.shift()); + + // "If the first member of sublist is an HTML element with local + // name tag name, outdent it and continue this loop from the + // beginning." + if (isHtmlElement_obsolete(sublist[0], tagName)) { + outdentNode(sublist[0], range); + continue; + } + + // "While node list is not empty, and the first member of node list + // is the nextSibling of the last member of sublist and is not an + // HTML element with local name tag name, remove the first member + // from node list and append it to sublist." + while (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling && !isHtmlElement_obsolete(nodeList[0], tagName)) { + sublist.push(nodeList.shift()); + } + + // "Record the values of sublist, and let values be the result." + values = recordValues(sublist); + + // "Split the parent of sublist." + splitParent(sublist, range); + + // "Fix disallowed ancestors of each member of sublist." + var i; + for (i = 0; i < sublist.length; i++) { + fixDisallowedAncestors(sublist[i], range); + } + + // "Restore the values from values." + restoreValues(values, range); + } + + // "Otherwise, while node list is not empty:" + } else { + while (nodeList.length) { + // "Let sublist be an empty list of nodes." + sublist = []; + + // "While either sublist is empty, or node list is not empty and + // its first member is the nextSibling of sublist's last member:" + while (!sublist.length || (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling)) { + // "If node list's first member is a p or div, set the tag name + // of node list's first member to "li", and append the result + // to sublist. Remove the first member from node list." + if (isHtmlElementInArray(nodeList[0], ["p", "div"])) { + sublist.push(setTagName(nodeList[0], "li", range)); + nodeList.shift(); + + // "Otherwise, if the first member of node list is an li or ol + // or ul, remove it from node list and append it to sublist." + } else if (isHtmlElementInArray(nodeList[0], ["li", "ol", "ul"])) { + sublist.push(nodeList.shift()); + + // "Otherwise:" + } else { + // "Let nodes to wrap be a list of nodes, initially empty." + var nodesToWrap = []; + + // "While nodes to wrap is empty, or node list is not empty + // and its first member is the nextSibling of nodes to + // wrap's last member and the first member of node list is + // an inline node and the last member of nodes to wrap is + // an inline node other than a br, remove the first member + // from node list and append it to nodes to wrap." + while (!nodesToWrap.length || (nodeList.length && nodeList[0] == nodesToWrap[nodesToWrap.length - 1].nextSibling && isInlineNode(nodeList[0]) && isInlineNode(nodesToWrap[nodesToWrap.length - 1]) && !isNamedHtmlElement(nodesToWrap[nodesToWrap.length - 1], "br"))) { + nodesToWrap.push(nodeList.shift()); + } + + // "Wrap nodes to wrap, with new parent instructions + // returning the result of calling createElement("li") on + // the context object. Append the result to sublist." + sublist.push(wrap( + nodesToWrap, + undefined, + createLi, + range + )); + } + } + + // "If sublist's first member's parent is an HTML element with + // local name tag name, or if every member of sublist is an ol or + // ul, continue this loop from the beginning." + if (isHtmlElement_obsolete(sublist[0].parentNode, tagName) || $_(sublist).every(isOlUl)) { + continue; + } + + // "If sublist's first member's parent is an HTML element with + // local name other tag name:" + if (isHtmlElement_obsolete(sublist[0].parentNode, otherTagName)) { + // "Record the values of sublist, and let values be the + // result." + values = recordValues(sublist); + + // "Split the parent of sublist." + splitParent(sublist, range); + + // "Wrap sublist, with sibling criteria returning true for an + // HTML element with local name tag name and false otherwise, + // and new parent instructions returning the result of calling + // createElement(tag name) on the context object." + wrap( + sublist, + makeIsElementPred(tagName), + makeCreateElement(tagName), + range + ); + + // "Restore the values from values." + restoreValues(values, range); + + // "Continue this loop from the beginning." + continue; + } + + // "Wrap sublist, with sibling criteria returning true for an HTML + // element with local name tag name and false otherwise, and new + // parent instructions being the following:" + // . . . + // "Fix disallowed ancestors of the previous step's result." + fixDisallowedAncestors(wrap( + sublist, + makeIsElementPred(tagName), + makeCreateElementSublist(tagName, sublist, range), + range + ), range); + } + } + } + + + //@} + ///// Justifying the selection ///// + //@{ + + function justifySelection(alignment, range) { + + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(range); + + // "Let element list be a list of all editable Elements contained in new + // range that either has an attribute in the HTML namespace whose local + // name is "align", or has a style attribute that sets "text-align", or is + // a center." + var elementList = getAllContainedNodes(newRange, function (node) { + return node.nodeType == $_.Node.ELEMENT_NODE && isEditable(node) + // Ignoring namespaces here + && (hasAttribute(node, "align") || node.style.textAlign != "" || isNamedHtmlElement(node, 'center')); + }); + + // "For each element in element list:" + var i; + for (i = 0; i < elementList.length; i++) { + var element = elementList[i]; + + // "If element has an attribute in the HTML namespace whose local name + // is "align", remove that attribute." + element.removeAttribute("align"); + + // "Unset the CSS property "text-align" on element, if it's set by a + // style attribute." + element.style.textAlign = ""; + if (element.getAttribute("style") == "") { + element.removeAttribute("style"); + } + + // "If element is a div or span or center with no attributes, remove + // it, preserving its descendants." + if (isHtmlElementInArray(element, ["div", "span", "center"]) && !element.attributes.length) { + removePreservingDescendants(element, range); + } + + // "If element is a center with one or more attributes, set the tag + // name of element to "div"." + if (isNamedHtmlElement(element, 'center') && element.attributes.length) { + setTagName(element, "div", range); + } + } + + // "Block-extend the active range, and let new range be the result." + newRange = blockExtend(globalRange); + + // "Let node list be a list of nodes, initially empty." + var nodeList = []; + + // "For each node node contained in new range, append node to node list if + // the last member of node list (if any) is not an ancestor of node; node + // is editable; node is an allowed child of "div"; and node's alignment + // value is not alignment." + nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && isAllowedChild(node, "div") && getAlignmentValue(node) != alignment; + }); + + function makeIsAlignedDiv(alignment) { + return function (node) { + return isNamedHtmlElement(node, 'div') && $_(node.attributes).every(function (attr) { + return (attr.name == "align" && attr.value.toLowerCase() == alignment) || (attr.name == "style" && getStyleLength(node) == 1 && node.style.textAlign == alignment); + }); + }; + } + + function makeCreateAlignedDiv(alignment) { + return function () { + var newParent = document.createElement("div"); + newParent.setAttribute("style", "text-align: " + alignment); + return newParent; + }; + } + + // "While node list is not empty:" + while (nodeList.length) { + // "Let sublist be a list of nodes, initially empty." + var sublist = []; + + // "Remove the first member of node list and append it to sublist." + sublist.push(nodeList.shift()); + + // "While node list is not empty, and the first member of node list is + // the nextSibling of the last member of sublist, remove the first + // member of node list and append it to sublist." + while (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling) { + sublist.push(nodeList.shift()); + } + + // "Wrap sublist. Sibling criteria returns true for any div that has + // one or both of the following two attributes and no other attributes, + // and false otherwise:" + // + // * "An align attribute whose value is an ASCII case-insensitive + // match for alignment. + // * "A style attribute which sets exactly one CSS property + // (including unrecognized or invalid attributes), which is + // "text-align", which is set to alignment. + // + // "New parent instructions are to call createElement("div") on the + // context object, then set its CSS property "text-align" to alignment + // and return the result." + wrap( + sublist, + makeIsAlignedDiv(alignment), + makeCreateAlignedDiv(alignment), + range + ); + } + } + + //@} + ///// Move the given collapsed range over adjacent zero-width whitespace characters. + ///// The range is + //@{ + /** + * Move the given collapsed range over adjacent zero-width whitespace characters. + * If the range is not collapsed or is not contained in a text node, it is not modified + * @param range range to modify + * @param forward {Boolean} true to move forward, false to move backward + */ + function moveOverZWSP(range, forward) { + var offset; + if (!range.collapsed) { + return; + } + + offset = range.startOffset; + + if (forward) { + // check whether the range starts in a text node + if (range.startContainer && range.startContainer.nodeType === $_.Node.TEXT_NODE) { + // move forward (i.e. increase offset) as long as we stay in the text node and have zwsp characters to the right + while (offset < range.startContainer.data.length && range.startContainer.data.charAt(offset) === '\u200b') { + offset++; + } + } + } else { + // check whether the range starts in a text node + if (range.startContainer && range.startContainer.nodeType === $_.Node.TEXT_NODE) { + // move backward (i.e. decrease offset) as long as we stay in the text node and have zwsp characters to the left + while (offset > 0 && range.startContainer.data.charAt(offset - 1) === '\u200b') { + offset--; + } + } + } + + // if the offset was changed, set it back to the collapsed range + if (offset !== range.startOffset) { + range.setStart(range.startContainer, offset); + range.setEnd(range.startContainer, offset); + } + } + + /** + * implementation of the delete command + * will attempt to delete contents within range if non-collapsed + * or delete the character left of the cursor position if range + * is collapsed. Is used to define the behaviour of the backspace + * button. + * + * @param value is just there for compatibility with the commands api. parameter is ignored. + * @param range the range to execute the delete command for + * @return void + */ + commands["delete"] = { + action:function (value, range) { + var i; + + // special behaviour for skipping zero-width whitespaces in IE7 + if (jQuery.browser.msie && jQuery.browser.version <= 7) { + moveOverZWSP(range, false); + } + + // "If the active range is not collapsed, delete the contents of the + // active range and abort these steps." + if (!range.collapsed) { + deleteContents(range); + return; + } + + // "Canonicalize whitespace at (active range's start node, active + // range's start offset)." + canonicalizeWhitespace(range.startContainer, range.startOffset); + + // "Let node and offset be the active range's start node and offset." + var node = range.startContainer; + var offset = range.startOffset; + var isBr = false; + var isHr = false; + + // "Repeat the following steps:" + while (true) { + // we need to reset isBr and isHr on every interation of the loop + if (offset > 0) { + isBr = isNamedHtmlElement(node.childNodes[offset - 1], "br") || false; + isHr = isNamedHtmlElement(node.childNodes[offset - 1], "hr") || false; + } + // "If offset is zero and node's previousSibling is an editable + // invisible node, remove node's previousSibling from its parent." + if (offset == 0 && isEditable(node.previousSibling) && isInvisible(node.previousSibling)) { + node.parentNode.removeChild(node.previousSibling); + continue; + } + // "Otherwise, if node has a child with index offset − 1 and that + // child is an editable invisible node, remove that child from + // node, then subtract one from offset." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && isEditable(node.childNodes[offset - 1]) && (isInvisible(node.childNodes[offset - 1]) || isBr || isHr)) { + node.removeChild(node.childNodes[offset - 1]); + offset--; + if (isBr || isHr) { + range.setStart(node, offset); + range.setEnd(node, offset); + return; + } + continue; + + } + // "Otherwise, if offset is zero and node is an inline node, or if + // node is an invisible node, set offset to the index of node, then + // set node to its parent." + if ((offset == 0 && isInlineNode(node)) || isInvisible(node)) { + offset = getNodeIndex(node); + node = node.parentNode; + continue; + } + // "Otherwise, if node has a child with index offset − 1 and that + // child is an editable a, remove that child from node, preserving + // its descendants. Then abort these steps." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && isEditable(node.childNodes[offset - 1]) && isNamedHtmlElement(node.childNodes[offset - 1], "a")) { + removePreservingDescendants(node.childNodes[offset - 1], range); + return; + + } + // "Otherwise, if node has a child with index offset − 1 and that + // child is not a block node or a br or an img, set node to that + // child, then set offset to the length of node." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && !isBlockNode(node.childNodes[offset - 1]) && !isHtmlElementInArray(node.childNodes[offset - 1], ["br", "img"])) { + node = node.childNodes[offset - 1]; + offset = getNodeLength(node); + continue; + } + // "Otherwise, break from this loop." + // brk is a quick and dirty jslint workaround since I don't want to rewrite this loop + var brk = true; + if (brk) { + break; + } + } + + // if the previous node is an aloha-table we want to delete it + var delBlock = getBlockAtPreviousPosition(node, offset); + if (delBlock) { + delBlock.parentNode.removeChild(delBlock); + return; + } + + // "If node is a Text node and offset is not zero, call collapse(node, + // offset) on the Selection. Then delete the contents of the range with + // start (node, offset − 1) and end (node, offset) and abort these + // steps." + if (node.nodeType == $_.Node.TEXT_NODE && offset != 0) { + range.setStart(node, offset - 1); + range.setEnd(node, offset - 1); + deleteContents(node, offset - 1, node, offset); + return; + } + + // @iebug + // when inserting a special char via the plugin + // there where problems deleting them again with backspace after insertation + // see https://github.com/alohaeditor/Aloha-Editor/issues/517 + if (node.nodeType == $_.Node.TEXT_NODE && offset == 0 && jQuery.browser.msie) { + offset = 1; + range.setStart(node, offset); + range.setEnd(node, offset); + range.startOffset = 0; + deleteContents(range); + return; + } + + // "If node is an inline node, abort these steps." + if (isInlineNode(node)) { + return; + } + + // "If node has a child with index offset − 1 and that child is a br or + // hr or img, call collapse(node, offset) on the Selection. Then delete + // the contents of the range with start (node, offset − 1) and end + // (node, offset) and abort these steps." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && isHtmlElementInArray(node.childNodes[offset - 1], ["br", "hr", "img"])) { + range.setStart(node, offset); + range.setEnd(node, offset); + deleteContents(range); + return; + } + + // "If node is an li or dt or dd and is the first child of its parent, + // and offset is zero:" + if (isHtmlElementInArray(node, ["li", "dt", "dd"]) && node == node.parentNode.firstChild && offset == 0) { + // "Let items be a list of all lis that are ancestors of node." + // + // Remember, must be in tree order. + var items = []; + var ancestor; + for (ancestor = node.parentNode; ancestor; ancestor = ancestor.parentNode) { + if (isNamedHtmlElement(ancestor, 'li')) { + items.unshift(ancestor); + } + } + + // "Normalize sublists of each item in items." + for (i = 0; i < items.length; i++) { + normalizeSublists(items[i], range); + } + + // "Record the values of the one-node list consisting of node, and + // let values be the result." + var values = recordValues([node]); + + // "Split the parent of the one-node list consisting of node." + splitParent([node], range); + + // "Restore the values from values." + restoreValues(values, range); + + // "If node is a dd or dt, and it is not an allowed child of any of + // its ancestors in the same editing host, set the tag name of node + // to the default single-line container name and let node be the + // result." + if (isHtmlElementInArray(node, ["dd", "dt"]) && $_(getAncestors(node)).every(function (ancestor) { + return !inSameEditingHost(node, ancestor) || !isAllowedChild(node, ancestor); + })) { + node = setTagName(node, defaultSingleLineContainerName, range); + } + + // "Fix disallowed ancestors of node." + fixDisallowedAncestors(node, range); + + // fix the lists to be html5 conformant + for (i = 0; i < items.length; i++) { + unNormalizeSublists(items[i].parentNode, range); + } + + // "Abort these steps." + return; + } + + // "Let start node equal node and let start offset equal offset." + var startNode = node; + var startOffset = offset; + + // "Repeat the following steps:" + while (true) { + // "If start offset is zero, set start offset to the index of start + // node and then set start node to its parent." + if (startOffset == 0) { + startOffset = getNodeIndex(startNode); + startNode = startNode.parentNode; + + // "Otherwise, if start node has an editable invisible child with + // index start offset minus one, remove it from start node and + // subtract one from start offset." + } else if (0 <= startOffset - 1 && startOffset - 1 < startNode.childNodes.length && isEditable(startNode.childNodes[startOffset - 1]) && isInvisible(startNode.childNodes[startOffset - 1])) { + startNode.removeChild(startNode.childNodes[startOffset - 1]); + startOffset--; + + // "Otherwise, break from this loop." + } else { + break; + } + } + + // "If offset is zero, and node has an editable ancestor container in + // the same editing host that's an indentation element:" + if (offset == 0 && $_(getAncestors(node).concat(node)).filter(function (ancestor) { + return isEditable(ancestor) && inSameEditingHost(ancestor, node) && isIndentationElement(ancestor); + }).length) { + // "Block-extend the range whose start and end are both (node, 0), + // and let new range be the result." + var newRange = Aloha.createRange(); + newRange.setStart(node, 0); + newRange.setEnd(node, 0); + newRange = blockExtend(newRange); + + // "Let node list be a list of nodes, initially empty." + // + // "For each node current node contained in new range, append + // current node to node list if the last member of node list (if + // any) is not an ancestor of current node, and current node is + // editable but has no editable descendants." + var nodeList = getContainedNodes(newRange, function (currentNode) { + return isEditable(currentNode) && !hasEditableDescendants(currentNode); + }); + + // "Outdent each node in node list." + for (i = 0; i < nodeList.length; i++) { + outdentNode(nodeList[i], range); + } + + // "Abort these steps." + return; + } + + // "If the child of start node with index start offset is a table, + // abort these steps." + if (isNamedHtmlElement(startNode.childNodes[startOffset], "table")) { + return; + } + + // "If start node has a child with index start offset − 1, and that + // child is a table:" + if (0 <= startOffset - 1 && startOffset - 1 < startNode.childNodes.length && isNamedHtmlElement(startNode.childNodes[startOffset - 1], "table")) { + // "Call collapse(start node, start offset − 1) on the context + // object's Selection." + range.setStart(startNode, startOffset - 1); + + // "Call extend(start node, start offset) on the context object's + // Selection." + range.setEnd(startNode, startOffset); + + // "Abort these steps." + return; + } + + // "If offset is zero; and either the child of start node with index + // start offset minus one is an hr, or the child is a br whose + // previousSibling is either a br or not an inline node:" + if (offset == 0 + && (isNamedHtmlElement(startNode.childNodes[startOffset - 1], "hr") + || (isNamedHtmlElement(startNode.childNodes[startOffset - 1], "br") + && (isNamedHtmlElement(startNode.childNodes[startOffset - 1].previousSibling, "br") + || !isInlineNode(startNode.childNodes[startOffset - 1].previousSibling))))) { + // "Call collapse(node, offset) on the Selection." + range.setStart(node, offset); + range.setEnd(node, offset); + + // "Delete the contents of the range with start (start node, start + // offset − 1) and end (start node, start offset)." + deleteContents(startNode, startOffset - 1, startNode, startOffset); + + // "Abort these steps." + return; + } + + // "If the child of start node with index start offset is an li or dt + // or dd, and that child's firstChild is an inline node, and start + // offset is not zero:" + if (isHtmlElementInArray(startNode.childNodes[startOffset], ["li", "dt", "dd"]) && isInlineNode(startNode.childNodes[startOffset].firstChild) && startOffset != 0) { + // "Let previous item be the child of start node with index start + // offset minus one." + var previousItem = startNode.childNodes[startOffset - 1]; + + // "If previous item's lastChild is an inline node other than a br, + // call createElement("br") on the context object and append the + // result as the last child of previous item." + if (isInlineNode(previousItem.lastChild) && !isNamedHtmlElement(previousItem.lastChild, "br")) { + previousItem.appendChild(document.createElement("br")); + } + + // "If previous item's lastChild is an inline node, call + // createElement("br") on the context object and append the result + // as the last child of previous item." + if (isInlineNode(previousItem.lastChild)) { + previousItem.appendChild(document.createElement("br")); + } + } + + // "If the child of start node with index start offset is an li or dt + // or dd, and its previousSibling is also an li or dt or dd, set start + // node to its child with index start offset − 1, then set start offset + // to start node's length, then set node to start node's nextSibling, + // then set offset to 0." + if (isHtmlElementInArray(startNode.childNodes[startOffset], ["li", "dt", "dd"]) && isHtmlElementInArray(startNode.childNodes[startOffset - 1], ["li", "dt", "dd"])) { + startNode = startNode.childNodes[startOffset - 1]; + startOffset = getNodeLength(startNode); + node = startNode.nextSibling; + offset = 0; + + // "Otherwise, while start node has a child with index start offset + // minus one:" + } else { + while (0 <= startOffset - 1 && startOffset - 1 < startNode.childNodes.length) { + // "If start node's child with index start offset minus one is + // editable and invisible, remove it from start node, then + // subtract one from start offset." + if (isEditable(startNode.childNodes[startOffset - 1]) && isInvisible(startNode.childNodes[startOffset - 1])) { + startNode.removeChild(startNode.childNodes[startOffset - 1]); + startOffset--; + + // "Otherwise, set start node to its child with index start + // offset minus one, then set start offset to the length of + // start node." + } else { + startNode = startNode.childNodes[startOffset - 1]; + startOffset = getNodeLength(startNode); + } + } + } + + // "Delete the contents of the range with start (start node, start + // offset) and end (node, offset)." + var delRange = Aloha.createRange(); + delRange.setStart(startNode, startOffset); + delRange.setEnd(node, offset); + deleteContents(delRange); + + if (!isAncestorContainer(document.body, range.startContainer)) { + if (delRange.startContainer.hasChildNodes() || delRange.startContainer.nodeType == $_.Node.TEXT_NODE) { + range.setStart(delRange.startContainer, delRange.startOffset); + range.setEnd(delRange.startContainer, delRange.startOffset); + } else { + range.setStart(delRange.startContainer.parentNode, getNodeIndex(delRange.startContainer)); + range.setEnd(delRange.startContainer.parentNode, getNodeIndex(delRange.startContainer)); + } + } + } + }; + + //@} + ///// The formatBlock command ///// + //@{ + // "A formattable block name is "address", "dd", "div", "dt", "h1", "h2", "h3", + // "h4", "h5", "h6", "p", or "pre"." + var formattableBlockNames = ["address", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "p", "pre"]; + + commands.formatblock = { + action:function (value) { + var i; + + // "If value begins with a "<" character and ends with a ">" character, + // remove the first and last characters from it." + if (/^<.*>$/.test(value)) { + value = value.slice(1, -1); + } + + // "Let value be converted to ASCII lowercase." + value = value.toLowerCase(); + + // "If value is not a formattable block name, abort these steps and do + // nothing." + if ($_(formattableBlockNames).indexOf(value) == -1) { + return; + } + + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node list be an empty list of nodes." + // + // "For each node node contained in new range, append node to node list + // if it is editable, the last member of original node list (if any) is + // not an ancestor of node, node is either a non-list single-line + // container or an allowed child of "p" or a dd or dt, and node is not + // the ancestor of a prohibited paragraph child." + var nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && (isNonListSingleLineContainer(node) || isAllowedChild(node, "p") || isHtmlElementInArray(node, ["dd", "dt"])) && !$_(getDescendants(node)).some(isProhibitedParagraphChild); + }); + + // "Record the values of node list, and let values be the result." + var values = recordValues(nodeList); + + function makeIsEditableElementInSameEditingHostDoesNotContainProhibitedParagraphChildren(node) { + return function (ancestor) { + return (isEditable(ancestor) + && inSameEditingHost(ancestor, node) + && isHtmlElement_obsolete(ancestor, formattableBlockNames) + && !$_(getDescendants(ancestor)).some(isProhibitedParagraphChild)); + }; + } + + function makeIsElementWithoutAttributes(value) { + return function (node) { + return isHtmlElement_obsolete(node, value) && !node.attributes.length; + }; + } + + function returnFalse() { + return false; + } + + function makeCreateElement(value) { + return function () { + return document.createElement(value); + }; + } + + // "For each node in node list, while node is the descendant of an + // editable HTML element in the same editing host, whose local name is + // a formattable block name, and which is not the ancestor of a + // prohibited paragraph child, split the parent of the one-node list + // consisting of node." + for (i = 0; i < nodeList.length; i++) { + var node = nodeList[i]; + while ($_(getAncestors(node)).some(makeIsEditableElementInSameEditingHostDoesNotContainProhibitedParagraphChildren(node))) { + splitParent([node], newRange); + } + } + + // "Restore the values from values." + restoreValues(values, newRange); + + // "While node list is not empty:" + while (nodeList.length) { + var sublist; + + // "If the first member of node list is a single-line + // container:" + if (isSingleLineContainer(nodeList[0])) { + // "Let sublist be the children of the first member of node + // list." + sublist = [].slice.call(toArray(nodeList[0].childNodes)); + + // "Record the values of sublist, and let values be the + // result." + values = recordValues(sublist); + + // "Remove the first member of node list from its parent, + // preserving its descendants." + removePreservingDescendants(nodeList[0], newRange); + + // "Restore the values from values." + restoreValues(values, newRange); + + // "Remove the first member from node list." + nodeList.shift(); + + // "Otherwise:" + } else { + // "Let sublist be an empty list of nodes." + sublist = []; + + // "Remove the first member of node list and append it to + // sublist." + sublist.push(nodeList.shift()); + + // "While node list is not empty, and the first member of + // node list is the nextSibling of the last member of + // sublist, and the first member of node list is not a + // single-line container, and the last member of sublist is + // not a br, remove the first member of node list and + // append it to sublist." + while (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling && !isSingleLineContainer(nodeList[0]) && !isNamedHtmlElement(sublist[sublist.length - 1], "BR")) { + sublist.push(nodeList.shift()); + } + } + + // "Wrap sublist. If value is "div" or "p", sibling criteria + // returns false; otherwise it returns true for an HTML element + // with local name value and no attributes, and false otherwise. + // New parent instructions return the result of running + // createElement(value) on the context object. Then fix disallowed + // ancestors of the result." + fixDisallowedAncestors(wrap( + sublist, + jQuery.inArray(value, ["div", "p"]) == -1 ? makeIsElementWithoutAttributes(value) : returnFalse, + makeCreateElement(value), + newRange + ), newRange); + } + }, + indeterm:function () { + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node list be all visible editable nodes that are contained in + // new range and have no children." + var nodeList = getAllContainedNodes(newRange, function (node) { + return isVisible(node) && isEditable(node) && !node.hasChildNodes(); + }); + + // "If node list is empty, return false." + if (!nodeList.length) { + return false; + } + + // "Let type be null." + var type = null; + + // "For each node in node list:" + var i; + for (i = 0; i < nodeList.length; i++) { + var node = nodeList[i]; + + // "While node's parent is editable and in the same editing host as + // node, and node is not an HTML element whose local name is a + // formattable block name, set node to its parent." + while (isEditable(node.parentNode) && inSameEditingHost(node, node.parentNode) && !isHtmlElement_obsolete(node, formattableBlockNames)) { + node = node.parentNode; + } + + // "Let current type be the empty string." + var currentType = ""; + + // "If node is an editable HTML element whose local name is a + // formattable block name, and node is not the ancestor of a + // prohibited paragraph child, set current type to node's local + // name." + if (isEditable(node) && isHtmlElement_obsolete(node, formattableBlockNames) && !$_(getDescendants(node)).some(isProhibitedParagraphChild)) { + currentType = node.tagName; + } + + // "If type is null, set type to current type." + if (type === null) { + type = currentType; + + // "Otherwise, if type does not equal current type, return true." + } else if (type != currentType) { + return true; + } + } + + // "Return false." + return false; + }, + value:function () { + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node be the first visible editable node that is contained in + // new range and has no children. If there is no such node, return the + // empty string." + var nodes = getAllContainedNodes(newRange, function (node) { + return isVisible(node) && isEditable(node) && !node.hasChildNodes(); + }); + if (!nodes.length) { + return ""; + } + var node = nodes[0]; + + // "While node's parent is editable and in the same editing host as + // node, and node is not an HTML element whose local name is a + // formattable block name, set node to its parent." + while (isEditable(node.parentNode) && inSameEditingHost(node, node.parentNode) && !isHtmlElement_obsolete(node, formattableBlockNames)) { + node = node.parentNode; + } + + // "If node is an editable HTML element whose local name is a + // formattable block name, and node is not the ancestor of a prohibited + // paragraph child, return node's local name, converted to ASCII + // lowercase." + if (isEditable(node) && isHtmlElement_obsolete(node, formattableBlockNames) && !$_(getDescendants(node)).some(isProhibitedParagraphChild)) { + return node.tagName.toLowerCase(); + } + + // "Return the empty string." + return ""; + } + }; + + //@} + ///// The forwardDelete command ///// + //@{ + commands.forwarddelete = { + action:function (value, range) { + // special behaviour for skipping zero-width whitespaces in IE7 + if (jQuery.browser.msie && jQuery.browser.version <= 7) { + moveOverZWSP(range, true); + } + + // "If the active range is not collapsed, delete the contents of the + // active range and abort these steps." + if (!range.collapsed) { + deleteContents(range); + return; + } + + // "Canonicalize whitespace at (active range's start node, active + // range's start offset)." + canonicalizeWhitespace(range.startContainer, range.startOffset); + + // "Let node and offset be the active range's start node and offset." + var node = range.startContainer; + var offset = range.startOffset; + var isBr = false; + var isHr = false; + + // "Repeat the following steps:" + while (true) { + // check whether the next element is a br or hr + // Commented out for unknown reason. + //if (offset < node.childNodes.length) { + // isBr = isHtmlElement_obsolete(node.childNodes[offset], "br") || false; + // isHr = isHtmlElement_obsolete(node.childNodes[offset], "hr") || false; + //} + + // "If offset is the length of node and node's nextSibling is an + // editable invisible node, remove node's nextSibling from its + // parent." + if (offset == getNodeLength(node) && isEditable(node.nextSibling) && isInvisible(node.nextSibling)) { + node.parentNode.removeChild(node.nextSibling); + + // "Otherwise, if node has a child with index offset and that child + // is an editable invisible node, remove that child from node." + } else if (offset < node.childNodes.length && isEditable(node.childNodes[offset]) && (isInvisible(node.childNodes[offset]) || isBr || isHr)) { + node.removeChild(node.childNodes[offset]); + if (isBr || isHr) { + ensureContainerEditable(node); + range.setStart(node, offset); + range.setEnd(node, offset); + return; + } + + // "Otherwise, if node has a child with index offset and that child + // is a collapsed block prop, add one to offset." + } else if (offset < node.childNodes.length && isCollapsedBlockProp(node.childNodes[offset])) { + offset++; + + // "Otherwise, if offset is the length of node and node is an + // inline node, or if node is invisible, set offset to one plus the + // index of node, then set node to its parent." + } else if ((offset == getNodeLength(node) && isInlineNode(node)) || isInvisible(node)) { + offset = 1 + getNodeIndex(node); + node = node.parentNode; + + // "Otherwise, if node has a child with index offset and that child + // is not a block node or a br or an img, set node to that child, + // then set offset to zero." + } else if (offset < node.childNodes.length && !isBlockNode(node.childNodes[offset]) && !isHtmlElementInArray(node.childNodes[offset], ["br", "img"])) { + node = node.childNodes[offset]; + offset = 0; + + // "Otherwise, break from this loop." + } else { + break; + } + } + + // collapse whitespace in the node, if it is a text node + canonicalizeWhitespace(range.startContainer, range.startOffset); + + // if the next node is an aloha-table we want to delete it + var delBlock = getBlockAtNextPosition(node, offset); + if (delBlock) { + delBlock.parentNode.removeChild(delBlock); + return; + } + + var endOffset; + // "If node is a Text node and offset is not node's length:" + if (node.nodeType == $_.Node.TEXT_NODE && offset != getNodeLength(node)) { + // "Call collapse(node, offset) on the Selection." + range.setStart(node, offset); + range.setEnd(node, offset); + + // "Let end offset be offset plus one." + endOffset = offset + 1; + + // "While end offset is not node's length and the end offsetth + // element of node's data has general category M when interpreted + // as a Unicode code point, add one to end offset." + // + // TODO: Not even going to try handling anything beyond the most + // basic combining marks, since I couldn't find a good list. I + // special-case a few Hebrew diacritics too to test basic coverage + // of non-Latin stuff. + while (endOffset != node.length && /^[\u0300-\u036f\u0591-\u05bd\u05c1\u05c2]$/.test(node.data[endOffset])) { + endOffset++; + } + + // "Delete the contents of the range with start (node, offset) and + // end (node, end offset)." + deleteContents(node, offset, node, endOffset); + + // "Abort these steps." + return; + } + + // "If node is an inline node, abort these steps." + if (isInlineNode(node)) { + return; + } + + // "If node has a child with index offset and that child is a br or hr + // or img, call collapse(node, offset) on the Selection. Then delete + // the contents of the range with start (node, offset) and end (node, + // offset + 1) and abort these steps." + if (offset < node.childNodes.length && isHtmlElementInArray(node.childNodes[offset], ["br", "hr", "img"])) { + range.setStart(node, offset); + range.setEnd(node, offset); + deleteContents(node, offset, node, offset + 1); + return; + } + + // "Let end node equal node and let end offset equal offset." + var endNode = node; + endOffset = offset; + + // "Repeat the following steps:" + while (true) { + // "If end offset is the length of end node, set end offset to one + // plus the index of end node and then set end node to its parent." + if (endOffset == getNodeLength(endNode)) { + endOffset = 1 + getNodeIndex(endNode); + endNode = endNode.parentNode; + + // "Otherwise, if end node has a an editable invisible child with + // index end offset, remove it from end node." + } else if (endOffset < endNode.childNodes.length && isEditable(endNode.childNodes[endOffset]) && isInvisible(endNode.childNodes[endOffset])) { + endNode.removeChild(endNode.childNodes[endOffset]); + + // "Otherwise, break from this loop." + } else { + break; + } + } + + // "If the child of end node with index end offset minus one is a + // table, abort these steps." + if (isNamedHtmlElement(endNode.childNodes[endOffset - 1], "table")) { + return; + } + + // "If the child of end node with index end offset is a table:" + if (isNamedHtmlElement(endNode.childNodes[endOffset], "table")) { + // "Call collapse(end node, end offset) on the context object's + // Selection." + range.setStart(endNode, endOffset); + + // "Call extend(end node, end offset + 1) on the context object's + // Selection." + range.setEnd(endNode, endOffset + 1); + + // "Abort these steps." + return; + } + + // "If offset is the length of node, and the child of end node with + // index end offset is an hr or br:" + if (offset == getNodeLength(node) && isHtmlElementInArray(endNode.childNodes[endOffset], ["br", "hr"])) { + // "Call collapse(node, offset) on the Selection." + range.setStart(node, offset); + range.setEnd(node, offset); + + // "Delete the contents of the range with end (end node, end + // offset) and end (end node, end offset + 1)." + deleteContents(endNode, endOffset, endNode, endOffset + 1); + + // "Abort these steps." + return; + } + + // "While end node has a child with index end offset:" + while (endOffset < endNode.childNodes.length) { + // "If end node's child with index end offset is editable and + // invisible, remove it from end node." + if (isEditable(endNode.childNodes[endOffset]) && isInvisible(endNode.childNodes[endOffset])) { + endNode.removeChild(endNode.childNodes[endOffset]); + + // "Otherwise, set end node to its child with index end offset and + // set end offset to zero." + } else { + endNode = endNode.childNodes[endOffset]; + endOffset = 0; + } + } + + // "Delete the contents of the range with start (node, offset) and end + // (end node, end offset)." + deleteContents(node, offset, endNode, endOffset); + } + }; + + //@} + ///// The indent command ///// + //@{ + commands.indent = { + action:function () { + // "Let items be a list of all lis that are ancestor containers of the + // active range's start and/or end node." + // + // Has to be in tree order, remember! + var items = []; + var node; + for (node = getActiveRange().endContainer; node != getActiveRange().commonAncestorContainer; node = node.parentNode) { + if (isNamedHtmlElement(node, "LI")) { + items.unshift(node); + } + } + for (node = getActiveRange().startContainer; node != getActiveRange().commonAncestorContainer; node = node.parentNode) { + if (isNamedHtmlElement(node, "LI")) { + items.unshift(node); + } + } + for (node = getActiveRange().commonAncestorContainer; node; node = node.parentNode) { + if (isNamedHtmlElement(node, "LI")) { + items.unshift(node); + } + } + + // "For each item in items, normalize sublists of item." + var i; + for (i = 0; i < items.length; i++) { + normalizeSublists(items[i], getActiveRange()); + } + + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node list be a list of nodes, initially empty." + var nodeList = []; + + // "For each node node contained in new range, if node is editable and + // is an allowed child of "div" or "ol" and if the last member of node + // list (if any) is not an ancestor of node, append node to node list." + nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && (isAllowedChild(node, "div") || isAllowedChild(node, "ol")); + }); + + // "If the first member of node list is an li whose parent is an ol or + // ul, and its previousSibling is an li as well, normalize sublists of + // its previousSibling." + if (nodeList.length && isNamedHtmlElement(nodeList[0], "LI") && isHtmlElementInArray(nodeList[0].parentNode, ["OL", "UL"]) && isNamedHtmlElement(nodeList[0].previousSibling, "LI")) { + normalizeSublists(nodeList[0].previousSibling, newRange); + } + + // "While node list is not empty:" + while (nodeList.length) { + // "Let sublist be a list of nodes, initially empty." + var sublist = []; + + // "Remove the first member of node list and append it to sublist." + sublist.push(nodeList.shift()); + + // "While the first member of node list is the nextSibling of the + // last member of sublist, remove the first member of node list and + // append it to sublist." + while (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling) { + sublist.push(nodeList.shift()); + } + + // "Indent sublist." + indentNodes(sublist, newRange); + } + } + }; + + //@} + ///// The insertHorizontalRule command ///// + //@{ + commands.inserthorizontalrule = { + action:function (value, range) { + + // "While range's start offset is 0 and its start node's parent is not + // null, set range's start to (parent of start node, index of start + // node)." + while (range.startOffset == 0 && range.startContainer.parentNode) { + range.setStart(range.startContainer.parentNode, getNodeIndex(range.startContainer)); + } + + // "While range's end offset is the length of its end node, and its end + // node's parent is not null, set range's end to (parent of end node, 1 + // + index of start node)." + while (range.endOffset == getNodeLength(range.endContainer) && range.endContainer.parentNode) { + range.setEnd(range.endContainer.parentNode, 1 + getNodeIndex(range.endContainer)); + } + + // "Delete the contents of range, with block merging false." + deleteContents(range, { + blockMerging:false + }); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(getActiveRange().startContainer) && !isEditingHost(getActiveRange().startContainer)) { + return; + } + + // "If the active range's start node is a Text node and its start + // offset is zero, set the active range's start and end to (parent of + // start node, index of start node)." + if (getActiveRange().startContainer.nodeType == $_.Node.TEXT_NODE && getActiveRange().startOffset == 0) { + getActiveRange().setStart(getActiveRange().startContainer.parentNode, getNodeIndex(getActiveRange().startContainer)); + getActiveRange().collapse(true); + } + + // "If the active range's start node is a Text node and its start + // offset is the length of its start node, set the active range's start + // and end to (parent of start node, 1 + index of start node)." + if (getActiveRange().startContainer.nodeType == $_.Node.TEXT_NODE && getActiveRange().startOffset == getNodeLength(getActiveRange().startContainer)) { + getActiveRange().setStart(getActiveRange().startContainer.parentNode, 1 + getNodeIndex(getActiveRange().startContainer)); + getActiveRange().collapse(true); + } + + // "Let hr be the result of calling createElement("hr") on the + // context object." + var hr = document.createElement("hr"); + + // "Run insertNode(hr) on the range." + range.insertNode(hr); + + // "Fix disallowed ancestors of hr." + fixDisallowedAncestors(hr, range); + + // "Run collapse() on the Selection, with first argument equal to the + // parent of hr and the second argument equal to one plus the index of + // hr." + // + // Not everyone actually supports collapse(), so we do it manually + // instead. Also, we need to modify the actual range we're given as + // well, for the sake of autoimplementation.html's range-filling-in. + range.setStart(hr.parentNode, 1 + getNodeIndex(hr)); + range.setEnd(hr.parentNode, 1 + getNodeIndex(hr)); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(range); + } + }; + + //@} + ///// The insertHTML command ///// + //@{ + commands.inserthtml = { + action:function (value, range) { + + + // "Delete the contents of the active range." + deleteContents(range); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(range.startContainer) && !isEditingHost(range.startContainer)) { + return; + } + + // "Let frag be the result of calling createContextualFragment(value) + // on the active range." + var frag = range.createContextualFragment(value); + + // "Let last child be the lastChild of frag." + var lastChild = frag.lastChild; + + // "If last child is null, abort these steps." + if (!lastChild) { + return; + } + + // "Let descendants be all descendants of frag." + var descendants = getDescendants(frag); + + // "If the active range's start node is a block node:" + if (isBlockNode(range.startContainer)) { + // "Let collapsed block props be all editable collapsed block prop + // children of the active range's start node that have index + // greater than or equal to the active range's start offset." + // + // "For each node in collapsed block props, remove node from its + // parent." + $_(range.startContainer.childNodes).filter(function (node, range) { + return isEditable(node) && isCollapsedBlockProp(node) && getNodeIndex(node) >= range.startOffset; + }, true).forEach(function (node) { + node.parentNode.removeChild(node); + }); + } + + // "Call insertNode(frag) on the active range." + range.insertNode(frag); + + // "If the active range's start node is a block node with no visible + // children, call createElement("br") on the context object and append + // the result as the last child of the active range's start node." + if (isBlockNode(range.startContainer)) { + ensureContainerEditable(range.startContainer); + } + + // "Call collapse() on the context object's Selection, with last + // child's parent as the first argument and one plus its index as the + // second." + range.setStart(lastChild.parentNode, 1 + getNodeIndex(lastChild)); + range.setEnd(lastChild.parentNode, 1 + getNodeIndex(lastChild)); + + // "Fix disallowed ancestors of each member of descendants." + var i; + for (i = 0; i < descendants.length; i++) { + fixDisallowedAncestors(descendants[i], range); + } + + setActiveRange(range); + } + }; + + //@} + ///// The insertImage command ///// + //@{ + commands.insertimage = { + action:function (value) { + // "If value is the empty string, abort these steps and do nothing." + if (value === "") { + return; + } + + // "Let range be the active range." + var range = getActiveRange(); + + // "Delete the contents of range, with strip wrappers false." + deleteContents(range, { + stripWrappers:false + }); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(getActiveRange().startContainer) && !isEditingHost(getActiveRange().startContainer)) { + return; + } + + // "If range's start node is a block node whose sole child is a br, and + // its start offset is 0, remove its start node's child from it." + if (isBlockNode(range.startContainer) && range.startContainer.childNodes.length == 1 && isNamedHtmlElement(range.startContainer.firstChild, "br") && range.startOffset == 0) { + range.startContainer.removeChild(range.startContainer.firstChild); + } + + // "Let img be the result of calling createElement("img") on the + // context object." + var img = document.createElement("img"); + + // "Run setAttribute("src", value) on img." + img.setAttribute("src", value); + + // "Run insertNode(img) on the range." + range.insertNode(img); + + // "Run collapse() on the Selection, with first argument equal to the + // parent of img and the second argument equal to one plus the index of + // img." + // + // Not everyone actually supports collapse(), so we do it manually + // instead. Also, we need to modify the actual range we're given as + // well, for the sake of autoimplementation.html's range-filling-in. + range.setStart(img.parentNode, 1 + getNodeIndex(img)); + range.setEnd(img.parentNode, 1 + getNodeIndex(img)); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(range); + + // IE adds width and height attributes for some reason, so remove those + // to actually do what the spec says. + img.removeAttribute("width"); + img.removeAttribute("height"); + } + }; + + //@} + ///// The insertLineBreak command ///// + //@{ + commands.insertlinebreak = { + action:function (value, range) { + // "Delete the contents of the active range, with strip wrappers false." + deleteContents(range, { + stripWrappers:false + }); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(range.startContainer) && !isEditingHost(range.startContainer)) { + return; + } + + // "If the active range's start node is an Element, and "br" is not an + // allowed child of it, abort these steps." + if (range.startContainer.nodeType == $_.Node.ELEMENT_NODE && !isAllowedChild("br", range.startContainer)) { + return; + } + + // "If the active range's start node is not an Element, and "br" is not + // an allowed child of the active range's start node's parent, abort + // these steps." + if (range.startContainer.nodeType != $_.Node.ELEMENT_NODE && !isAllowedChild("br", range.startContainer.parentNode)) { + return; + } + + // "If the active range's start node is a Text node and its start + // offset is zero, call collapse() on the context object's Selection, + // with first argument equal to the active range's start node's parent + // and second argument equal to the active range's start node's index." + var newNode, newOffset; + if (range.startContainer.nodeType == $_.Node.TEXT_NODE && range.startOffset == 0) { + newNode = range.startContainer.parentNode; + newOffset = getNodeIndex(range.startContainer); + Aloha.getSelection().collapse(newNode, newOffset); + range.setStart(newNode, newOffset); + range.setEnd(newNode, newOffset); + } + + // "If the active range's start node is a Text node and its start + // offset is the length of its start node, call collapse() on the + // context object's Selection, with first argument equal to the active + // range's start node's parent and second argument equal to one plus + // the active range's start node's index." + if (range.startContainer.nodeType == $_.Node.TEXT_NODE && range.startOffset == getNodeLength(range.startContainer)) { + newNode = range.startContainer.parentNode; + newOffset = 1 + getNodeIndex(range.startContainer); + Aloha.getSelection().collapse(newNode, newOffset); + range.setStart(newNode, newOffset); + range.setEnd(newNode, newOffset); + } + + // "Let br be the result of calling createElement("br") on the context + // object." + var br = document.createElement("br"); + + // "Call insertNode(br) on the active range." + range.insertNode(br); + + // "Call collapse() on the context object's Selection, with br's parent + // as the first argument and one plus br's index as the second + // argument." + Aloha.getSelection().collapse(br.parentNode, 1 + getNodeIndex(br)); + range.setStart(br.parentNode, 1 + getNodeIndex(br)); + range.setEnd(br.parentNode, 1 + getNodeIndex(br)); + + // "If br is a collapsed line break, call createElement("br") on the + // context object and let extra br be the result, then call + // insertNode(extra br) on the active range." + if (isCollapsedLineBreak(br)) { + // TODO + range.insertNode(createEndBreak()); + + // Compensate for nonstandard implementations of insertNode + Aloha.getSelection().collapse(br.parentNode, 1 + getNodeIndex(br)); + range.setStart(br.parentNode, 1 + getNodeIndex(br)); + range.setEnd(br.parentNode, 1 + getNodeIndex(br)); + } + + // IE7 is adding this styles: height: auto; min-height: 0px; max-height: none; + // with that there is the ugly "IE-editable-outline" + if (jQuery.browser.msie && jQuery.browser.version < 8) { + br.parentNode.removeAttribute("style"); + } + } + }; + + //@} + ///// The insertOrderedList command ///// + //@{ + commands.insertorderedlist = { + // "Toggle lists with tag name "ol"." + action:function (value, range) { + toggleLists("ol", range); + }, + // "True if the selection's list state is "mixed" or "mixed ol", false + // otherwise." + indeterm:function () { + return (/^mixed( ol)?$/).test(getSelectionListState()); + }, + // "True if the selection's list state is "ol", false otherwise." + state:function () { + return getSelectionListState() == "ol"; + } + }; + + var listRelatedElements = { + "LI":true, + "DT":true, + "DD":true + }; + + //@} + ///// The insertParagraph command ///// + //@{ + commands.insertparagraph = { + action:function (value, range) { + var i; + + // "Delete the contents of the active range." + deleteContents(range); + + // clean lists in the editing host, this will remove any whitespace nodes around lists + // because the following algorithm is not prepared to deal with them + cleanLists(getEditingHostOf(range.startContainer), range); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(range.startContainer) && !isEditingHost(range.startContainer)) { + return; + } + + // "Let node and offset be the active range's start node and offset." + var node = range.startContainer; + var offset = range.startOffset; + + // "If node is a Text node, and offset is neither 0 nor the length of + // node, call splitText(offset) on node." + if (node.nodeType == $_.Node.TEXT_NODE && offset != 0 && offset != getNodeLength(node)) { + node.splitText(offset); + } + + // "If node is a Text node and offset is its length, set offset to one + // plus the index of node, then set node to its parent." + if (node.nodeType == $_.Node.TEXT_NODE && offset == getNodeLength(node)) { + offset = 1 + getNodeIndex(node); + node = node.parentNode; + } + + // "If node is a Text or Comment node, set offset to the index of node, + // then set node to its parent." + if (node.nodeType == $_.Node.TEXT_NODE || node.nodeType == $_.Node.COMMENT_NODE) { + offset = getNodeIndex(node); + node = node.parentNode; + } + + // "Call collapse(node, offset) on the context object's Selection." + Aloha.getSelection().collapse(node, offset); + range.setStart(node, offset); + range.setEnd(node, offset); + + // "Let container equal node." + var container = node; + + // "While container is not a single-line container, and container's + // parent is editable and in the same editing host as node, set + // container to its parent." + while (!isSingleLineContainer(container) && isEditable(container.parentNode) && inSameEditingHost(node, container.parentNode)) { + container = container.parentNode; + } + + // "If container is not editable or not in the same editing host as + // node or is not a single-line container:" + if (!isEditable(container) || !inSameEditingHost(container, node) || !isSingleLineContainer(container)) { + // "Let tag be the default single-line container name." + var tag = defaultSingleLineContainerName; + + // "Block-extend the active range, and let new range be the + // result." + var newRange = blockExtend(range); + + // "Let node list be a list of nodes, initially empty." + // + // "Append to node list the first node in tree order that is + // contained in new range and is an allowed child of "p", if any." + var nodeList = getContainedNodes(newRange,function (node) { + return isAllowedChild(node, "p"); + }).slice(0, 1); + + // "If node list is empty:" + if (!nodeList.length) { + // "If tag is not an allowed child of the active range's start + // node, abort these steps." + if (!isAllowedChild(tag, range.startContainer)) { + return; + } + + // "Set container to the result of calling createElement(tag) + // on the context object." + container = document.createElement(tag); + + // "Call insertNode(container) on the active range." + range.insertNode(container); + + // "Call createElement("br") on the context object, and append + // the result as the last child of container." + // TODO not always + container.appendChild(createEndBreak()); + + // "Call collapse(container, 0) on the context object's + // Selection." + // TODO: remove selection from command + Aloha.getSelection().collapse(container, 0); + range.setStart(container, 0); + range.setEnd(container, 0); + + // "Abort these steps." + return; + } + + // "While the nextSibling of the last member of node list is not + // null and is an allowed child of "p", append it to node list." + while (nodeList[nodeList.length - 1].nextSibling && isAllowedChild(nodeList[nodeList.length - 1].nextSibling, "p")) { + nodeList.push(nodeList[nodeList.length - 1].nextSibling); + } + + // "Wrap node list, with sibling criteria returning false and new + // parent instructions returning the result of calling + // createElement(tag) on the context object. Set container to the + // result." + container = wrap( + nodeList, + function () { + return false; + }, + function () { + return document.createElement(tag); + }, + range + ); + } + + // "If container's local name is "address", "listing", or "pre":" + var oldHeight, newHeight; + if (container.tagName == "ADDRESS" || container.tagName == "LISTING" || container.tagName == "PRE") { + // "Let br be the result of calling createElement("br") on the + // context object." + var br = document.createElement("br"); + + // remember the old height + oldHeight = container.offsetHeight; + + // "Call insertNode(br) on the active range." + range.insertNode(br); + + // determine the new height + newHeight = container.offsetHeight; + + // "Call collapse(node, offset + 1) on the context object's + // Selection." + Aloha.getSelection().collapse(node, offset + 1); + range.setStart(node, offset + 1); + range.setEnd(node, offset + 1); + + // "If br is the last descendant of container, let br be the result + // of calling createElement("br") on the context object, then call + // insertNode(br) on the active range." (Fix: only do this, if the container height did not change by inserting a single
) + // + // Work around browser bugs: some browsers select the + // newly-inserted node, not per spec. + if (oldHeight == newHeight && !isDescendant(nextNode(br), container)) { + // TODO check + range.insertNode(createEndBreak()); + Aloha.getSelection().collapse(node, offset + 1); + range.setEnd(node, offset + 1); + } + + // "Abort these steps." + return; + } + + // "If container's local name is "li", "dt", or "dd"; and either it has + // no children or it has a single child and that child is a br:" + if (listRelatedElements[container.tagName] && (!container.hasChildNodes() || (container.childNodes.length == 1 && isNamedHtmlElement(container.firstChild, "br")))) { + // "Split the parent of the one-node list consisting of container." + splitParent([container], range); + + // "If container has no children, call createElement("br") on the + // context object and append the result as the last child of + // container." + // only do this, if inserting the br does NOT modify the offset height of the container + // if (!container.hasChildNodes()) { + // var oldHeight = container.offsetHeight, endBr = createEndBreak(); + // container.appendChild(endBr); + // if (container.offsetHeight !== oldHeight) { + // container.removeChild(endBr); + // } + // } + + // "If container is a dd or dt, and it is not an allowed child of + // any of its ancestors in the same editing host, set the tag name + // of container to the default single-line container name and let + // container be the result." + if (isHtmlElementInArray(container, ["dd", "dt"]) && $_(getAncestors(container)).every(function (ancestor) { + return !inSameEditingHost(container, ancestor) || !isAllowedChild(container, ancestor); + })) { + container = setTagName(container, defaultSingleLineContainerName, range); + } + + // "Fix disallowed ancestors of container." + fixDisallowedAncestors(container, range); + + // fix invalid nested lists + if (isNamedHtmlElement(container, 'li') && isNamedHtmlElement(container.nextSibling, "li") && isHtmlElementInArray(container.nextSibling.firstChild, ["ol", "ul"])) { + // we found a li containing only a br followed by a li containing a list as first element: merge the two li's + var listParent = container.nextSibling, + length = container.nextSibling.childNodes.length; + for (i = 0; i < length; i++) { + // we always move the first child into the container + container.appendChild(listParent.childNodes[0]); + } + listParent.parentNode.removeChild(listParent); + } + + // "Abort these steps." + return; + } + + // "Let new line range be a new range whose start is the same as + // the active range's, and whose end is (container, length of + // container)." + var newLineRange = Aloha.createRange(); + newLineRange.setStart(range.startContainer, range.startOffset); + newLineRange.setEnd(container, getNodeLength(container)); + + // "While new line range's start offset is zero and its start node is + // not container, set its start to (parent of start node, index of + // start node)." + while (newLineRange.startOffset == 0 && newLineRange.startContainer != container) { + newLineRange.setStart(newLineRange.startContainer.parentNode, getNodeIndex(newLineRange.startContainer)); + } + + // "While new line range's start offset is the length of its start node + // and its start node is not container, set its start to (parent of + // start node, 1 + index of start node)." + while (newLineRange.startOffset == getNodeLength(newLineRange.startContainer) && newLineRange.startContainer != container) { + newLineRange.setStart(newLineRange.startContainer.parentNode, 1 + getNodeIndex(newLineRange.startContainer)); + } + + // "Let end of line be true if new line range contains either nothing + // or a single br, and false otherwise." + var containedInNewLineRange = getContainedNodes(newLineRange); + var endOfLine = !containedInNewLineRange.length || (containedInNewLineRange.length == 1 && isNamedHtmlElement(containedInNewLineRange[0], "br")); + + // "If the local name of container is "h1", "h2", "h3", "h4", "h5", or + // "h6", and end of line is true, let new container name be the default + // single-line container name." + var newContainerName; + if (/^H[1-6]$/.test(container.tagName) && endOfLine) { + newContainerName = defaultSingleLineContainerName; + + // "Otherwise, if the local name of container is "dt" and end of line + // is true, let new container name be "dd"." + } else if (container.tagName == "DT" && endOfLine) { + newContainerName = "dd"; + + // "Otherwise, if the local name of container is "dd" and end of line + // is true, let new container name be "dt"." + } else if (container.tagName == "DD" && endOfLine) { + newContainerName = "dt"; + + // "Otherwise, let new container name be the local name of container." + } else { + newContainerName = container.tagName.toLowerCase(); + } + + // "Let new container be the result of calling createElement(new + // container name) on the context object." + var newContainer = document.createElement(newContainerName); + + // "Copy all non empty attributes of the container to new container." + copyAttributes(container, newContainer); + + // "If new container has an id attribute, unset it." + newContainer.removeAttribute("id"); + + // "Insert new container into the parent of container immediately after + // container." + container.parentNode.insertBefore(newContainer, container.nextSibling); + + // "Let contained nodes be all nodes contained in new line range." + var containedNodes = getAllContainedNodes(newLineRange); + + // "Let frag be the result of calling extractContents() on new line + // range." + var frag = newLineRange.extractContents(); + + // "Unset the id attribute (if any) of each Element descendant of frag + // that is not in contained nodes." + var descendants = getDescendants(frag); + for (i = 0; i < descendants.length; i++) { + if (descendants[i].nodeType == $_.Node.ELEMENT_NODE && $_(containedNodes).indexOf(descendants[i]) == -1) { + descendants[i].removeAttribute("id"); + } + } + + var fragChildren = [], + fragChild = frag.firstChild; + if (fragChild) { + do { + if (!isWhitespaceNode(fragChild)) { + fragChildren.push(fragChild); + } + } while (null != (fragChild = fragChild.nextSibling)); + } + + // if newContainer is a li and frag contains only a list, we add a br in the li (but only if the height would not change) + if (isNamedHtmlElement(newContainer, 'li') && fragChildren.length && isHtmlElementInArray(fragChildren[0], ["ul", "ol"])) { + oldHeight = newContainer.offsetHeight; + var endBr = createEndBreak(); + newContainer.appendChild(endBr); + newHeight = newContainer.offsetHeight; + if (oldHeight !== newHeight) { + newContainer.removeChild(endBr); + } + } + + // "Call appendChild(frag) on new container." + newContainer.appendChild(frag); + + // "If container has no visible children, call createElement("br") on + // the context object, and append the result as the last child of + // container." + ensureContainerEditable(container); + + // "If new container has no visible children, call createElement("br") + // on the context object, and append the result as the last child of + // new container." + ensureContainerEditable(newContainer); + + // "Call collapse(new container, 0) on the context object's Selection." + Aloha.getSelection().collapse(newContainer, 0); + range.setStart(newContainer, 0); + range.setEnd(newContainer, 0); + } + }; + + //@} + ///// The insertText command ///// + //@{ + commands.inserttext = { + action:function (value, range) { + var i; + + // "Delete the contents of the active range, with strip wrappers + // false." + deleteContents(range, { + stripWrappers:false + }); + + // "If the active range's start node is neither editable nor an editing + // host, abort these steps." + if (!isEditable(range.startContainer) && !isEditingHost(range.startContainer)) { + return; + } + + // "If value's length is greater than one:" + if (value.length > 1) { + // "For each element el in value, take the action for the + // insertText command, with value equal to el." + for (i = 0; i < value.length; i++) { + commands.inserttext.action(value[i], range); + } + + // "Abort these steps." + return; + } + + // "If value is the empty string, abort these steps." + if (value == "") { + return; + } + + // "If value is a newline (U+00A0), take the action for the + // insertParagraph command and abort these steps." + if (value == "\n") { + commands.insertparagraph.action('', range); + return; + } + + // "Let node and offset be the active range's start node and offset." + var node = range.startContainer; + var offset = range.startOffset; + + // "If node has a child whose index is offset − 1, and that child is a + // Text node, set node to that child, then set offset to node's + // length." + if (0 <= offset - 1 && offset - 1 < node.childNodes.length && node.childNodes[offset - 1].nodeType == $_.Node.TEXT_NODE) { + node = node.childNodes[offset - 1]; + offset = getNodeLength(node); + } + + // "If node has a child whose index is offset, and that child is a Text + // node, set node to that child, then set offset to zero." + if (0 <= offset && offset < node.childNodes.length && node.childNodes[offset].nodeType == $_.Node.TEXT_NODE) { + node = node.childNodes[offset]; + offset = 0; + } + + // "If value is a space (U+0020), and either node is an Element whose + // resolved value for "white-space" is neither "pre" nor "pre-wrap" or + // node is not an Element but its parent is an Element whose resolved + // value for "white-space" is neither "pre" nor "pre-wrap", set value + // to a non-breaking space (U+00A0)." + var refElement = node.nodeType == $_.Node.ELEMENT_NODE ? node : node.parentNode; + if (value == " " && refElement.nodeType == $_.Node.ELEMENT_NODE && jQuery.inArray($_.getComputedStyle(refElement).whiteSpace, ["pre", "pre-wrap"]) == -1) { + value = "\xa0"; + } + + // "Record current overrides, and let overrides be the result." + var overrides = recordCurrentOverrides(range); + + // "If node is a Text node:" + if (node.nodeType == $_.Node.TEXT_NODE) { + // "Call insertData(offset, value) on node." + node.insertData(offset, value); + + // "Call collapse(node, offset) on the context object's Selection." + Aloha.getSelection().collapse(node, offset); + range.setStart(node, offset); + + // "Call extend(node, offset + 1) on the context object's + // Selection." + Aloha.getSelection().extend(node, offset + 1); + range.setEnd(node, offset + 1); + + // "Otherwise:" + } else { + // "If node has only one child, which is a collapsed line break, + // remove its child from it." + // + // FIXME: IE incorrectly returns false here instead of true + // sometimes? + if (node.childNodes.length == 1 && isCollapsedLineBreak(node.firstChild)) { + node.removeChild(node.firstChild); + } + + // "Let text be the result of calling createTextNode(value) on the + // context object." + var text = document.createTextNode(value); + + // "Call insertNode(text) on the active range." + range.insertNode(text); + + // "Call collapse(text, 0) on the context object's Selection." + Aloha.getSelection().collapse(text, 0); + range.setStart(text, 0); + + // "Call extend(text, 1) on the context object's Selection." + Aloha.getSelection().extend(text, 1); + range.setEnd(text, 1); + } + + // "Restore states and values from overrides." + restoreStatesAndValues(overrides); + + // "Canonicalize whitespace at the active range's start." + canonicalizeWhitespace(range.startContainer, range.startOffset); + + // "Canonicalize whitespace at the active range's end." + canonicalizeWhitespace(range.endContainer, range.endOffset); + + // "Call collapseToEnd() on the context object's Selection." + Aloha.getSelection().collapseToEnd(); + range.collapse(false); + } + }; + + //@} + ///// The insertUnorderedList command ///// + //@{ + commands.insertunorderedlist = { + // "Toggle lists with tag name "ul"." + action:function (value, range) { + toggleLists("ul", range); + }, + // "True if the selection's list state is "mixed" or "mixed ul", false + // otherwise." + indeterm:function () { + return (/^mixed( ul)?$/).test(getSelectionListState()); + }, + // "True if the selection's list state is "ul", false otherwise." + state:function () { + return getSelectionListState() == "ul"; + } + }; + + //@} + ///// The justifyCenter command ///// + //@{ + commands.justifycenter = { + // "Justify the selection with alignment "center"." + action:function (value, range) { + justifySelection("center", range); + }, + indeterm:function () { + // "Block-extend the active range. Return true if among visible + // editable nodes that are contained in the result and have no + // children, at least one has alignment value "center" and at least one + // does not. Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return $_(nodes).some(function (node) { + return getAlignmentValue(node) == "center"; + }) + && $_(nodes).some(function (node) { + return getAlignmentValue(node) != "center"; + }); + }, + state:function () { + // "Block-extend the active range. Return true if there is at least one + // visible editable node that is contained in the result and has no + // children, and all such nodes have alignment value "center". + // Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return nodes.length && $_(nodes).every(function (node) { + return getAlignmentValue(node) == "center"; + }); + }, + value:function () { + // "Block-extend the active range, and return the alignment value of + // the first visible editable node that is contained in the result and + // has no children. If there is no such node, return "left"." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + if (nodes.length) { + return getAlignmentValue(nodes[0]); + } + return "left"; + } + }; + + //@} + ///// The justifyFull command ///// + //@{ + commands.justifyfull = { + // "Justify the selection with alignment "justify"." + action:function (value, range) { + justifySelection("justify", range); + }, + indeterm:function () { + // "Block-extend the active range. Return true if among visible + // editable nodes that are contained in the result and have no + // children, at least one has alignment value "justify" and at least + // one does not. Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return $_(nodes).some(function (node) { + return getAlignmentValue(node) == "justify"; + }) + && $_(nodes).some(function (node) { + return getAlignmentValue(node) != "justify"; + }); + }, + state:function () { + // "Block-extend the active range. Return true if there is at least one + // visible editable node that is contained in the result and has no + // children, and all such nodes have alignment value "justify". + // Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return nodes.length && $_(nodes).every(function (node) { + return getAlignmentValue(node) == "justify"; + }); + }, + value:function () { + // "Block-extend the active range, and return the alignment value of + // the first visible editable node that is contained in the result and + // has no children. If there is no such node, return "left"." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + if (nodes.length) { + return getAlignmentValue(nodes[0]); + } + return "left"; + } + }; + + //@} + ///// The justifyLeft command ///// + //@{ + commands.justifyleft = { + // "Justify the selection with alignment "left"." + action:function (value, range) { + justifySelection("left", range); + }, + indeterm:function () { + // "Block-extend the active range. Return true if among visible + // editable nodes that are contained in the result and have no + // children, at least one has alignment value "left" and at least one + // does not. Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return $_(nodes).some(function (node) { + return getAlignmentValue(node) == "left"; + }) + && $_(nodes).some(function (node) { + return getAlignmentValue(node) != "left"; + }); + }, + state:function () { + // "Block-extend the active range. Return true if there is at least one + // visible editable node that is contained in the result and has no + // children, and all such nodes have alignment value "left". Otherwise + // return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return nodes.length && $_(nodes).every(function (node) { + return getAlignmentValue(node) == "left"; + }); + }, + value:function () { + // "Block-extend the active range, and return the alignment value of + // the first visible editable node that is contained in the result and + // has no children. If there is no such node, return "left"." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + if (nodes.length) { + return getAlignmentValue(nodes[0]); + } + return "left"; + } + }; + + //@} + ///// The justifyRight command ///// + //@{ + commands.justifyright = { + // "Justify the selection with alignment "right"." + action:function (value, range) { + justifySelection("right", range); + }, + indeterm:function () { + // "Block-extend the active range. Return true if among visible + // editable nodes that are contained in the result and have no + // children, at least one has alignment value "right" and at least one + // does not. Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return $_(nodes).some(function (node) { + return getAlignmentValue(node) == "right"; + }) + && $_(nodes).some(function (node) { + return getAlignmentValue(node) != "right"; + }); + }, + state:function () { + // "Block-extend the active range. Return true if there is at least one + // visible editable node that is contained in the result and has no + // children, and all such nodes have alignment value "right". + // Otherwise return false." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + return nodes.length && $_(nodes).every(function (node) { + return getAlignmentValue(node) == "right"; + }); + }, + value:function () { + // "Block-extend the active range, and return the alignment value of + // the first visible editable node that is contained in the result and + // has no children. If there is no such node, return "left"." + var nodes = getAllContainedNodes(blockExtend(getActiveRange()), function (node) { + return isEditable(node) && isVisible(node) && !node.hasChildNodes(); + }); + if (nodes.length) { + return getAlignmentValue(nodes[0]); + } + return "left"; + } + }; + + //@} + ///// The outdent command ///// + //@{ + commands.outdent = { + action:function () { + // "Let items be a list of all lis that are ancestor containers of the + // range's start and/or end node." + // + // It's annoying to get this in tree order using functional stuff + // without doing getDescendants(document), which is slow, so I do it + // imperatively. + var items = []; + (function () { + var ancestorContainer; + for (ancestorContainer = getActiveRange().endContainer; + ancestorContainer != getActiveRange().commonAncestorContainer; + ancestorContainer = ancestorContainer.parentNode) { + if (isNamedHtmlElement(ancestorContainer, "li")) { + items.unshift(ancestorContainer); + } + } + for (ancestorContainer = getActiveRange().startContainer; + ancestorContainer; + ancestorContainer = ancestorContainer.parentNode) { + if (isNamedHtmlElement(ancestorContainer, "li")) { + items.unshift(ancestorContainer); + } + } + }()); + + // "For each item in items, normalize sublists of item." + $_(items).forEach(function (thisArg) { + normalizeSublists(thisArg, getActiveRange()); + }); + + // "Block-extend the active range, and let new range be the result." + var newRange = blockExtend(getActiveRange()); + + // "Let node list be a list of nodes, initially empty." + // + // "For each node node contained in new range, append node to node list + // if the last member of node list (if any) is not an ancestor of node; + // node is editable; and either node has no editable descendants, or is + // an ol or ul, or is an li whose parent is an ol or ul." + var nodeList = getContainedNodes(newRange, function (node) { + return isEditable(node) && (!$_(getDescendants(node)).some(isEditable) || isHtmlElementInArray(node, ["ol", "ul"]) || (isNamedHtmlElement(node, 'li') && isHtmlElementInArray(node.parentNode, ["ol", "ul"]))); + }); + + // "While node list is not empty:" + while (nodeList.length) { + // "While the first member of node list is an ol or ul or is not + // the child of an ol or ul, outdent it and remove it from node + // list." + while (nodeList.length && (isHtmlElementInArray(nodeList[0], ["OL", "UL"]) || !isHtmlElementInArray(nodeList[0].parentNode, ["OL", "UL"]))) { + outdentNode(nodeList.shift(), newRange); + } + + // "If node list is empty, break from these substeps." + if (!nodeList.length) { + break; + } + + // "Let sublist be a list of nodes, initially empty." + var sublist = []; + + // "Remove the first member of node list and append it to sublist." + sublist.push(nodeList.shift()); + + // "While the first member of node list is the nextSibling of the + // last member of sublist, and the first member of node list is not + // an ol or ul, remove the first member of node list and append it + // to sublist." + while (nodeList.length && nodeList[0] == sublist[sublist.length - 1].nextSibling && !isHtmlElementInArray(nodeList[0], ["OL", "UL"])) { + sublist.push(nodeList.shift()); + } + + // "Record the values of sublist, and let values be the result." + var values = recordValues(sublist); + + // "Split the parent of sublist, with new parent null." + splitParent(sublist, newRange); + + // "Fix disallowed ancestors of each member of sublist." + $_(sublist).forEach(fixDisallowedAncestors); + + // "Restore the values from values." + restoreValues(values, newRange); + } + } + }; + + //@} + + ////////////////////////////////// + ///// Miscellaneous commands ///// + ////////////////////////////////// + + ///// The selectAll command ///// + //@{ + commands.selectall = { + // Note, this ignores the whole globalRange/getActiveRange() thing and + // works with actual selections. Not suitable for autoimplementation.html. + action:function () { + // "Let target be the body element of the context object." + var target = document.body; + + // "If target is null, let target be the context object's + // documentElement." + if (!target) { + target = document.documentElement; + } + + // "If target is null, call getSelection() on the context object, and + // call removeAllRanges() on the result." + if (!target) { + Aloha.getSelection().removeAllRanges(); + + // "Otherwise, call getSelection() on the context object, and call + // selectAllChildren(target) on the result." + } else { + Aloha.getSelection().selectAllChildren(target); + } + } + }; + + //@} + ///// The styleWithCSS command ///// + //@{ + commands.stylewithcss = { + action:function (value) { + // "If value is an ASCII case-insensitive match for the string + // "false", set the CSS styling flag to false. Otherwise, set the + // CSS styling flag to true." + cssStylingFlag = String(value).toLowerCase() != "false"; + }, + state:function () { + return cssStylingFlag; + } + }; + + //@} + ///// The useCSS command ///// + //@{ + commands.usecss = { + action:function (value) { + // "If value is an ASCII case-insensitive match for the string "false", + // set the CSS styling flag to true. Otherwise, set the CSS styling + // flag to false." + cssStylingFlag = String(value).toLowerCase() == "false"; + } + }; + //@} + + // Some final setup + //@{ + (function () { + // Opera 11.50 doesn't implement Object.keys, so I have to make an explicit + // temporary, which means I need an extra closure to not leak the temporaries + // into the global namespace. >:( + var commandNames = []; + var command; + for (command in commands) { + if (commands.hasOwnProperty(command)) { + commandNames.push(command); + } + } + $_(commandNames).forEach(function (command) { + // "If a command does not have a relevant CSS property specified, it + // defaults to null." + if (null == commands[command].relevantCssProperty) { + commands[command].relevantCssProperty = null; + } + + // "If a command has inline command activated values defined but + // nothing else defines when it is indeterminate, it is indeterminate + // if among editable Text nodes effectively contained in the active + // range, there is at least one whose effective command value is one of + // the given values and at least one whose effective command value is + // not one of the given values." + if (null != commands[command].inlineCommandActivatedValues && null == commands[command].indeterm) { + commands[command].indeterm = function (range) { + var values = $_(getAllEffectivelyContainedNodes(range, function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })) + .map(function (node) { + return getEffectiveCommandValue(node, command); + }); + + var matchingValues = $_(values).filter(function (value) { + return $_(commands[command].inlineCommandActivatedValues).indexOf(value) != -1; + }); + + return matchingValues.length >= 1 && values.length - matchingValues.length >= 1; + }; + } + + // "If a command has inline command activated values defined, its state + // is true if either no editable Text node is effectively contained in + // the active range, and the active range's start node's effective + // command value is one of the given values; or if there is at least + // one editable Text node effectively contained in the active range, + // and all of them have an effective command value equal to one of the + // given values." + if (null != commands[command].inlineCommandActivatedValues) { + commands[command].state = function (range) { + var nodes = getAllEffectivelyContainedNodes(range, function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + }); + + if (nodes.length == 0) { + return $_(commands[command].inlineCommandActivatedValues).indexOf(getEffectiveCommandValue(range.startContainer, command)) != -1; + } + return $_(nodes).every(function (node) { + return $_(commands[command].inlineCommandActivatedValues).indexOf(getEffectiveCommandValue(node, command)) != -1; + }); + }; + } + + // "If a command is a standard inline value command, it is + // indeterminate if among editable Text nodes that are effectively + // contained in the active range, there are two that have distinct + // effective command values. Its value is the effective command value + // of the first editable Text node that is effectively contained in the + // active range, or if there is no such node, the effective command + // value of the active range's start node." + if (null != commands[command].standardInlineValueCommand) { + commands[command].indeterm = function () { + var values = $_(getAllEffectivelyContainedNodes(getActiveRange())).filter(function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + }, true) + .map(function (node) { + return getEffectiveCommandValue(node, command); + }); + var i; + for (i = 1; i < values.length; i++) { + if (values[i] != values[i - 1]) { + return true; + } + } + return false; + }; + + commands[command].value = function (range) { + var refNode = getAllEffectivelyContainedNodes(range, function (node) { + return isEditable(node) && node.nodeType == $_.Node.TEXT_NODE; + })[0]; + + if (typeof refNode == "undefined") { + refNode = range.startContainer; + } + + return getEffectiveCommandValue(refNode, command); + }; + } + }); + }()); + //@} + return { + commands:commands, + execCommand:myExecCommand, + queryCommandIndeterm:myQueryCommandIndeterm, + queryCommandState:myQueryCommandState, + queryCommandValue:myQueryCommandValue, + queryCommandEnabled:myQueryCommandEnabled, + queryCommandSupported:myQueryCommandSupported, + copyAttributes:copyAttributes, + createEndBreak:createEndBreak, + isEndBreak:isEndBreak, + ensureContainerEditable:ensureContainerEditable, + isEditingHost:isEditingHost, + isEditable:isEditable + }; +}); // end define +// vim: foldmarker=@{,@} foldmethod=marker diff --git a/modules/core/aloha/static/lib/aloha/ephemera.js b/modules/core/aloha/static/lib/aloha/ephemera.js new file mode 100644 index 000000000..d46f81b44 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/ephemera.js @@ -0,0 +1,474 @@ +/* ephemera.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * Provides functions to mark the contents of editables as ephemeral. An + * editable's ephemeral content will be pruned before it is being + * returned by editable.getContents(). + * + * It is planned to replace most instances of makeClean() with this + * implementation for improved performance and more importantly, in + * order to have a centralized place that has the control over all + * ephemeral content, which can be leveraged by plugins to provide more + * advanced functionality. + * + * Some examples that would be possible: + * * a HTML source code text box, an interactive tree structure, or + * other kind of DOM visualization, next to the editable, that + * contains just the content of the editable (without ephemeral data) + * and which is updated efficiently in real time after each keystroke. + * + * * change detection algorithms that are able to intelligently ignore + * ephemeral data and which would not trigger unless non-ephemeral + * data is added to the editable. + * + * * When a plugin provides very general functionality over all nodes of + * the DOM, somtimes the plugin may not know what is and what isn't + * supposed to be real content. The functionality provided here makes + * it possible for the plugin to exaclty distinguish real content from + * ephemeral content. + * + * TODO: currently only simple transformations are suppored, like + * marking classes, attributes and elements as ephemeral and removing + * them during the pruning process. + * In the future, support for the block-plugin and custom pruning + * functions should be added. This may be done by letting implementations + * completely control the pruning of a DOM element through a + * function that takes the content+ephemeral-data and returns only + * content - similar to make clean, but for single elements to reduce + * overhead. + */ +define([ + 'jquery', + 'aloha/core', + 'aloha/console', + 'util/strings', + 'util/trees', + 'util/arrays', + 'util/maps', + 'util/dom2', + 'util/functions', + 'util/misc', + 'PubSub' +], function ($, Aloha, console, Strings, Trees, Arrays, Maps, Dom, Functions, Misc, PubSub) { + 'use strict'; + + var ephemeraMap = { + classMap:{ + 'aloha-ephemera-wrapper':true, + 'aloha-ephemera-filler':true, + 'aloha-ephemera-attr':true, + 'aloha-ephemera':true, + // aloha-cleanme is the same as aloha-ephemera. + // TODO: should be replaced with aloha-ephemera throughout + // the codebase and removed here. + 'aloha-cleanme':true + }, + attrMap:{ + 'hidefocus':true, + 'hideFocus':true, + 'tabindex':true, + 'tabIndex':true, + 'contenteditable':['TABLE'], + 'contentEditable':['TABLE'] + }, + attrRxs:[/^(?:nodeIndex|sizcache|sizset|jquery)[\w\d]*$/i], + pruneFns:[] + }; + + var commonClsSubstr = 'aloha-'; + + /** + * Checks whether the given classes contain the substring common to + * all ephemeral classes. If the check fails, an warning will be + * logged and the substring will be set to the empty string which + * voids the performance improvement the common substring would + * otherwise have gained. + */ + function checkCommonSubstr(clss) { + var i, len; + for (i = 0, len = clss.length; i < len; i++) { + if (-1 === clss[i].indexOf(commonClsSubstr)) { + console.warn('Class "' + clss[i] + '" was set to be ephemeral,' + 'which hurts peformance.' + ' Add the common substring "' + commonClsSubstr + '" to the class to fix this problem.'); + commonClsSubstr = ''; + } + } + } + + /** + * Registers ephemeral classes. + * + * An ephemeral class is a non-content class that will be pruned + * from the from the result of editable.getContents(). + * + * The given classes should contain the string 'aloha-' to get the + * benefit of a performance optimization. + * + * Returns a map that contains all classes that were ever registered + * with this function. + * + * Multiple classes may be specified. If none are specified, just + * returns the current ephemeral classes map without modifying it. + * + * Also see ephemera(). + */ + function classes() { + var clss = Array.prototype.slice.call(arguments); + Maps.fillKeys(ephemeraMap.classMap, clss, true); + checkCommonSubstr(clss); + PubSub.pub('aloha.ephemera.classes', { + ephemera:ephemeraMap, + newClasses:clss + }); + } + + /** + * Registers ephemeral attributes by attribute name. + * + * Similar to classes() except applies to entire attributes instead + * of individual classes in the class attribute. + */ + function attributes() { + var attrs = Array.prototype.slice.call(arguments); + Maps.fillKeys(ephemeraMap.attrMap, attrs, true); + PubSub.pub('aloha.ephemera.attributes', { + ephemera:ephemeraMap, + newAttributes:attrs + }); + } + + /** + * Provides access to the global ephemera registry. + * + * If the given argument is not null, sets the global ephemera + * registry to the given value and returns it. Otherwise, just + * returns the global registry. + * + * The given/returned value has the following properties: + * + * The given map may have the following entries + * + * classMap - a map from class name to the value true. + * all classes must have a "aloha-" prefix. + * Use Ehpemera.attributes() to set classes without "aloha-" prefix. + * + * attrMap - a map from attribute name to the value true or to an array + * of element names. If an array of elements is specified, the + * attribute will only be considered ephemeral if it is + * found on an element in the array. + * + * attrRxs - an array of regexes (in object - not string - form: /[a-z].../) + * + * pruneFns - an array of functions that will be called at each pruning step. + * + * When a DOM tree is pruned with prune(elem) without an emap + * argument, the global registry maintained with classes() + * attributes() and ephemera() is used as a default map. If an emap + * argument is specified, the global registry will be ignored and + * the emap argument will be used instead. + * + * When a DOM tree is pruned with prune() + * - classes specified by classMap will be removed + * - attributes specified by attrMap or attrRxs will be removed + * - functions specified by pruneFns will be called as the DOM tree + * is descended into (pre-order), with each node (element, text, + * etc.) as a single argument. The function is free to modify the + * element and return it, or return a new element which will + * replace the given element in the pruned tree. If null or + * undefined is returned, the element will be removed from the + * tree. As per contract of Maps.walkDomInplace, it is allowed to + * insert/remove children in the parent node as long as the given + * node is not removed. + * + * Also see classes() and attributes(). + * + * Note that removal of attributes doesn't always work on IE7 (in + * rare special cases). The dom-to-xhtml plugin can reliably remove + * ephemeral attributes during the serialization step. + */ + function ephemera(emap) { + if (emap) { + ephemeraMap = emap; + } + PubSub.pub('aloha.ephemera', { + ephemera:ephemeraMap + }); + return ephemeraMap; + } + + /** + * Marks an element as ephemeral. + * + * The element will be completely removed when the prune function is + * called on it. + * + * Adds the class 'aloha-ephemera' to the given element. + * + * The class 'aloha-ephemera' can also be added directly without + * recurse to this function, if that is more convenient. + */ + function markElement(elem) { + $(elem).addClass('aloha-ephemera'); + } + + /** + * Marks the attribute of an element as ephemeral. + * + * The attribute will be removed from the element when the prune + * function is called on it. + * + * Multiple attributes can be passed at the same time be separating + * them with a space. + * + * Adds the class 'aloha-ephemera-attr' to the given element. Also + * adds or modifies the 'data-aloha-ephemera-attr' attribute, + * and adds to it the name of the given attribute. + * + * These modifications can be made directly without recurse to this + * function, if that is more convenient. + */ + function markAttr(elem, attr) { + elem = $(elem); + var data = elem.attr('data-aloha-ephemera-attr'); + if (null == data || '' === data) { + data = attr; + } else if (-1 === Arrays.indexOf(Strings.words(data), attr)) { + data += ' ' + attr; + } + elem.attr('data-aloha-ephemera-attr', data); + elem.addClass('aloha-ephemera-attr'); + } + + /** + * Marks an element as a ephemeral, excluding subnodes. + * + * The element will be removed when the prune function is called on + * it, but any children of the wrapper element will remain in its + * place. + * + * A wrapper is an element that wraps a single non-ephemeral + * element. A filler is an element that is wrapped by a single + * non-ephemeral element. This distinction is not important for the + * prune function, which behave the same for both wrappers and + * fillers, but it makes it easier to build more advanced content + * inspection algorithms (also see note at the header of ephemeral.js). + * + * Adds the class 'aloha-ephemera-wrapper' to the given element. + * + * The class 'aloha-ephemera-wrapper' may also be added directly, + * without recurse to this function, if that is more convenient. + * + * NB: a wrapper element must not wrap a filler element. Wrappers + * and fillers are ephermeral. A wrapper must always wrap a + * single _non-ephemeral_ element, and a filler must always fill + * a single _non-ephemeral_ element. + */ + function markWrapper(elem) { + $(elem).addClass('aloha-ephemera-wrapper'); + } + + /** + * Marks an element as ephemeral, excluding subnodes. + * + * Adds the class 'aloha-ephemera-filler' to the given element. + * + * The class 'aloha-ephemera-filler' may also be added directly, + * without recurse to this function, if that is more convenient. + * + * See wrapper() + */ + function markFiller(elem) { + $(elem).addClass('aloha-ephemera-filler'); + } + + /** + * Prunes attributes marked as ephemeral with Ephemera.attributes() + * from the given element. + */ + function pruneMarkedAttrs(elem) { + var $elem = $(elem); + var data = $elem.attr('data-aloha-ephemera-attr'); + var i; + var attrs; + $elem.removeAttr('data-aloha-ephemera-attr'); + if (typeof data === 'string') { + attrs = Strings.words(data); + for (i = 0; i < attrs.length; i++) { + $elem.removeAttr(attrs[i]); + } + } + } + + /** + * Determines whether the given attribute of the given element is + * ephemeral according to the given emap. + * See Ephemera.ephemera() for an explanation of attrMap and attrRxs. + */ + function isAttrEphemeral(elem, attrName, attrMap, attrRxs) { + var mapped = attrMap[attrName]; + if (mapped) { + // The attrMap may either contain boolean true or an array of element names. + if (true === mapped) { + return true; + } + if (-1 !== Arrays.indexOf(mapped, elem.nodeName)) { + return true; + } + } + return Misc.anyRx(attrRxs, attrName); + } + + /** + * Prunes attributes specified with either emap.attrMap or emap.attrRxs. + * See ephemera(). + */ + function pruneEmapAttrs(elem, emap) { + var $elem = null, + attrs = Dom.attrNames(elem), + name, + i, + len; + for (i = 0, len = attrs.length; i < len; i++) { + name = attrs[i]; + if (isAttrEphemeral(elem, name, emap.attrMap, emap.attrRxs)) { + $elem = $elem || $(elem); + $elem.removeAttr(name); + } + } + } + + /** + * Prunes an element of attributes and classes or removes the + * element by returning false. + * + * Elements attributes and classes can either be marked as + * ephemeral, in which case the element itself will contain the + * prune-info, or they can be specified as ephemeral with the given + * emap. + * + * See ephemera() for an explanation of the emap argument. + */ + function pruneElem(elem, emap) { + var className = elem.className; + if (className && -1 !== className.indexOf(commonClsSubstr)) { + var classes = Strings.words(className); + + // Ephemera.markElement() + if (-1 !== Arrays.indexOf(classes, 'aloha-cleanme') || -1 !== Arrays.indexOf(classes, 'aloha-ephemera')) { + $.removeData(elem); // avoids memory leak + return false; // removes the element + } + + // Ephemera.markWrapper() and Ephemera.markFiller() + if (-1 !== Arrays.indexOf(classes, 'aloha-ephemera-wrapper') || -1 !== Arrays.indexOf(classes, 'aloha-ephemera-filler')) { + Dom.moveNextAll(elem.parentNode, elem.firstChild, elem.nextSibling); + $.removeData(elem); + return false; + } + + // Ephemera.markAttr() + if (-1 !== Arrays.indexOf(classes, 'aloha-ephemera-attr')) { + pruneMarkedAttrs(elem); + } + + // Ephemera.classes() and Ehpemera.ephemera({ classMap: {} }) + var persistentClasses = Arrays.filter(classes, function (cls) { + return !emap.classMap[cls]; + }); + if (persistentClasses.length !== classes.length) { + if (0 === persistentClasses.length) { + // Removing the attributes is dangerous. Aloha has a + // jquery patch in place to fix some issue. + $(elem).removeAttr('class'); + } else { + elem.className = persistentClasses.join(' '); + } + } + } + + // Ephemera.attributes() and Ephemera.ephemera({ attrMap: {}, attrRxs: {} }) + pruneEmapAttrs(elem, emap); + + return true; + } + + /** + * Called for each node during the pruning of a DOM tree. + */ + function pruneStep(emap, step, node) { + if (1 === node.nodeType) { + if (!pruneElem(node, emap)) { + return []; + } + node = Trees.walkDomInplace(node, step); + } + + // Ephemera.ephemera({ pruneFns: [] }) + node = Arrays.reduce(emap.pruneFns, node, Arrays.applyNotNull); + if (!node) { + return []; + } + + return [node]; + } + + /** + * Prunes the given element of all ephemeral data. + * + * Elements marked with Ephemera.markElement() will be removed. + * Attributes marked with Ephemera.markAttr() will be removed. + * Elements marked with Ephemera.markWrapper() or + * Ephemera.markFiller() will be replaced with their children. + * + * See ephemera() for an explanation of the emap argument. + * + * All properties of emap, if specified, are required, but may be + * empty. + * + * The element is modified in-place and returned. + */ + function prune(elem, emap) { + emap = emap || ephemeraMap; + + function pruneStepClosure(node) { + return pruneStep(emap, pruneStepClosure, node); + } + + return pruneStepClosure(elem)[0]; + } + + return { + ephemera:ephemera, + classes:classes, + attributes:attributes, + markElement:markElement, + markAttr:markAttr, + markWrapper:markWrapper, + markFiller:markFiller, + prune:prune, + isAttrEphemeral:isAttrEphemeral + }; +}); diff --git a/modules/core/aloha/static/lib/aloha/ierange-m2.js b/modules/core/aloha/static/lib/aloha/ierange-m2.js new file mode 100644 index 000000000..e3c710f82 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/ierange-m2.js @@ -0,0 +1,29 @@ +/* ierange-m2.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define(['vendor/ierange-m2'], function () { + 'use strict'; +}); diff --git a/modules/core/aloha/static/lib/aloha/jquery.aloha.js b/modules/core/aloha/static/lib/aloha/jquery.aloha.js new file mode 100644 index 000000000..82debdbc3 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/jquery.aloha.js @@ -0,0 +1,540 @@ +/* jquery.aloha.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * IMPORTANT! + * Don't add any more custom jquery extensions here. + * Instead use the define(...) mechanism to define a module and to + * import it where you need it. + */ +define([ + 'aloha/core', + 'aloha/selection', + 'jquery', + 'aloha/console' +], function (Aloha, Selection, jQuery, console) { + 'use strict'; + + var XMLSerializer = window.XMLSerializer; + + /** + * jQuery between Extension + * + * insert either html code, a dom object OR a jQuery object inside of an existing text node. + * if the chained jQuery object is not a text node, nothing will happen. + * + * @param content HTML Code, DOM object or jQuery object to be inserted + * @param offset character offset from the start where the content should be inserted + */ + jQuery.fn.between = function (content, offset) { + var offSize, fullText; + + if (this[0].nodeType !== 3) { + // we are not in a text node, just insert the element at the corresponding position + offSize = this.children().size(); + if (offset > offSize) { + offset = offSize; + } + if (offset <= 0) { + this.prepend(content); + } else { + this.children().eq(offset - 1).after(content); + } + } else { + // we are in a text node so we have to split it at the correct position + if (offset <= 0) { + this.before(content); + } else if (offset >= this[0].length) { + this.after(content); + } else { + fullText = this[0].data; + this[0].data = fullText.substring(0, offset); + this.after(fullText.substring(offset, fullText.length)); + this.after(content); + } + } + }; + + /** + * Make the object contenteditable. Care about browser version (name of contenteditable attribute depends on it) + */ + jQuery.fn.contentEditable = function (b) { + // ie does not understand contenteditable but contentEditable + // contentEditable is not xhtml compatible. + var $el = jQuery(this); + var ce = 'contenteditable'; + + // Check + if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) == 7) { + ce = 'contentEditable'; + } + + if (typeof b === 'undefined') { + + // For chrome use this specific attribute. The old ce will only + // return 'inherit' for nested elements of a contenteditable. + // The isContentEditable is a w3c standard compliant property which works in IE7,8,FF36+, Chrome 12+ + if (typeof $el[0] === 'undefined') { + console.warn('The jquery object did not contain any valid elements.'); // die silent + return undefined; + } + if (typeof $el[0].isContentEditable === 'undefined') { + console.warn('Could not determine whether the is editable or not. I assume it is.'); + return true; + } + + return $el[0].isContentEditable; + } + + if (b === '') { + $el.removeAttr(ce); + } else { + if (b && b !== 'false') { + b = 'true'; + } else { + b = 'false'; + } + $el.attr(ce, b); + } + + return $el; + }; + + /** + * jQuery Aloha Plugin + * + * turn all dom elements to continous text + * @return jQuery object for the matched elements + * @api + */ + jQuery.fn.aloha = function () { + var $this = jQuery(this); + + Aloha.bind('aloha-ready', function () { + $this.each(function () { + // create a new aloha editable object for each passed object + if (!Aloha.isEditable(this)) { + new Aloha.Editable(jQuery(this)).init(); + } + }); + }); + + // Chain + return $this; + }; + + /** + * jQuery destroy elements as editable + * + * destroy all mached elements editable capabilities + * @return jQuery object for the matched elements + * @api + */ + jQuery.fn.mahalo = function () { + return this.each(function () { + if (Aloha.isEditable(this)) { + Aloha.getEditableById(jQuery(this).attr('id')).destroy(); + } + }); + }; + + /** + * jQuery alohaText gets contents for an Aloha Editor editable + * + * getContents forall editable + * @return jQuery object for the matched elements + * @api + */ + jQuery.fn.alohaText = function () { + return this.each(function () { + if (Aloha.isEditable(this)) { + Aloha.getEditableById(jQuery(this).attr('id')).getContents(); + } + }); + }; + + /** + * jQuery Extension + * new Event which is triggered whenever a selection (length >= 0) is made in + * an Aloha Editable element + */ + jQuery.fn.contentEditableSelectionChange = function (callback) { + var that = this; + + // update selection when keys are pressed + this.keyup(function (event) { + var rangeObject = Selection.getRangeObject(); + callback(event); + }); + + // update selection on doubleclick (especially important for the first automatic selection, when the Editable is not active yet, but is at the same time activated as the selection occurs + this.dblclick(function (event) { + callback(event); + }); + + // update selection when text is selected + this.mousedown(function (event) { + // remember that a selection was started + that.selectionStarted = true; + }); + + jQuery(document).mouseup(function (event) { + Selection.eventOriginalTarget = that; + if (that.selectionStarted) { + callback(event); + } + Selection.eventOriginalTarget = false; + that.selectionStarted = false; + }); + + return this; + }; + + /** + * Fetch the outerHTML of an Element + * @version 1.0.0 + * @date February 01, 2011 + * @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle} + * @author Benjamin Arthur Lupton {@link http://balupton.com} + * @copyright 2011 Benjamin Arthur Lupton {@link http://balupton.com} + * @license MIT License {@link http://creativecommons.org/licenses/MIT/} + * @return {String} outerHtml + */ + jQuery.fn.outerHtml = jQuery.fn.outerHtml || function () { + var $el = jQuery(this), + el = $el.get(0); + if (typeof el.outerHTML != 'undefined') { + return el.outerHTML; + } + try { + // Gecko-based browsers, Safari, Opera. + return (new XMLSerializer()).serializeToString(el); + } catch (e) { + try { + // Internet Explorer. + return el.xml; + } catch (e2) { + } + } + }; + + jQuery.fn.zap = function () { + return this.each(function () { + jQuery(this.childNodes).insertBefore(this); + }).remove(); + }; + + jQuery.fn.textNodes = function (excludeBreaks, includeEmptyTextNodes) { + var ret = [], + doSomething = function (el) { + var i, childLength; + if ((el.nodeType === 3 && jQuery.trim(el.data) && !includeEmptyTextNodes) || (el.nodeType === 3 && includeEmptyTextNodes) || (el.nodeName == "BR" && !excludeBreaks)) { + ret.push(el); + } else { + for (i = 0, childLength = el.childNodes.length; i < childLength; ++i) { + doSomething(el.childNodes[i]); + } + } + }; + + doSomething(this[0]); + + return jQuery(ret); + }; + + /** + * extendObjects is like jQuery.extend, but it does not extend arrays + */ + jQuery.extendObjects = jQuery.fn.extendObjects = function (arg1, arg2) { + var options, name, src, copy, copyIsArray, clone, + start = 1, + target = arg1 || {}, + length = arguments.length, + deep = false, + i; + + + // Handle a deep copy situation + if (typeof target === "boolean") { + deep = target; + target = arg2 || {}; + // skip the boolean and the target + start = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if (typeof target !== "object" && !jQuery.isFunction(target)) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if (length === start) { + target = this; + --start; + } + + for (i = start; i < length; i++) { + // Only deal with non-null/undefined values + if ((options = arguments[i]) != null) { + // Extend the base object + for (name in options) { + if (options.hasOwnProperty(name)) { + + src = target[name]; + copy = options[name]; + + // Prevent never-ending loop + if (target === copy) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if (deep && copy && (jQuery.isPlainObject(copy) || true === (copyIsArray = jQuery.isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + if (jQuery.isArray(copy)) { + // don't extend arrays + target[name] = copy; + } else { + target[name] = jQuery.extendObjects(deep, clone, copy); + } + + // Don't bring in undefined values + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + } + + // Return the modified object + return target; + }; + + /* + * jQuery Hotkeys Plugin + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Based upon the plugin by Tzury Bar Yochay: + * http://github.com/tzuryby/hotkeys + * + * Original idea by: + * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ + */ + + jQuery.hotkeys = { + version:"0.8", + + specialKeys:{ + 8:"backspace", + 9:"tab", + 13:"return", + 16:"shift", + 17:"ctrl", + 18:"alt", + 19:"pause", + 20:"capslock", + 27:"esc", + 32:"space", + 33:"pageup", + 34:"pagedown", + 35:"end", + 36:"home", + 37:"left", + 38:"up", + 39:"right", + 40:"down", + 45:"insert", + 46:"del", + 96:"0", + 97:"1", + 98:"2", + 99:"3", + 100:"4", + 101:"5", + 102:"6", + 103:"7", + 104:"8", + 105:"9", + 106:"*", + 107:"+", + 109:"-", + 110:".", + 111:"/", + 112:"f1", + 113:"f2", + 114:"f3", + 115:"f4", + 116:"f5", + 117:"f6", + 118:"f7", + 119:"f8", + 120:"f9", + 121:"f10", + 122:"f11", + 123:"f12", + 144:"numlock", + 145:"scroll", + 188:",", + 190:".", + 191:"/", + 224:"meta" + }, + + shiftNums:{ + "`":"~", + "1":"!", + "2":"@", + "3":"#", + "4":"$", + "5":"%", + "6":"^", + "7":"&", + "8":"*", + "9":"(", + "0":")", + "-":"_", + "=":"+", + ";":": ", + "'":"\"", + ",":"<", + ".":">", + "/":"?", + "\\":"|" + } + }; + + function applyKeyHandler(handler, context, args, event) { + // Don't fire in text-accepting inputs that we didn't directly bind to + if (context !== event.target && (/textarea|input|select/i.test(event.target.nodeName) || event.target.type === "text")) { + return; + } + return handler.apply(context, args); + } + + function keyHandler(handleObj) { + var origHandler, keys, handle, i; + + // Only care when a possible input has been specified + if (typeof handleObj.data !== "string") { + return; + } + + origHandler = handleObj.handler; + keys = handleObj.data.toLowerCase().split(" "); + handle = {}; + + for (i = 0; i < keys.length; i++) { + handle[keys[i]] = true; + } + + handleObj.handler = function (event) { + // The original comment that was added with this condition says: + // "Don't fire in contentEditable true elements" + // But this is incorrect. + // What this condition does is it skips hotkey events for + // any target unless it is directly bound. + // The condition event.target.contentEditable !== true will + // always be true, because contentEditable is a string + // attribute that is never strictly equal true. + //if (this !== event.target && event.target.contentEditable !== true) { + //return; + //} + // Below is what this condition really does. Ideally, I'd + // like to remove this condition since it was not there in + // the original implementation by John Resig and it could + // interfere with other plugins, but when I removed it, I + // was unable to input any space characters into an + // editable. + // TODO figure out a way to safely remove this + if (this !== event.target) { + return; + } + + // Keypress represents characters, not special keys + var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which], + modif = "", + character; + + // check combinations (alt|ctrl|shift+anything) + if (event.altKey && special !== "alt") { + modif += "alt+"; + } + + if (event.ctrlKey && special !== "ctrl") { + modif += "ctrl+"; + } + + // TODO: Need to make sure this works consistently across platforms + if (event.metaKey && !event.ctrlKey && special !== "meta") { + modif += "meta+"; + } + + if (event.shiftKey && special !== "shift") { + modif += "shift+"; + } + + if (special) { + if (handle[modif + special]) { + return applyKeyHandler(origHandler, this, arguments, event); + } + } else { + character = String.fromCharCode(event.which).toLowerCase(); + + if (handle[modif + character]) { + return applyKeyHandler(origHandler, this, arguments, event); + } + + if (handle[modif + jQuery.hotkeys.shiftNums[character]]) { + return applyKeyHandler(origHandler, this, arguments, event); + } + + // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" + if (modif === "shift+") { + if (handle[jQuery.hotkeys.shiftNums[character]]) { + return applyKeyHandler(origHandler, this, arguments, event); + } + } + } + }; + } + + jQuery.each(['keydown', 'keyup', 'keypress'], function () { + jQuery.event.special[this] = { + add:keyHandler + }; + }); + +}); diff --git a/modules/core/aloha/static/lib/aloha/markup.js b/modules/core/aloha/static/lib/aloha/markup.js new file mode 100644 index 000000000..dfe691cdc --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/markup.js @@ -0,0 +1,1265 @@ +/* markup.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'util/class', + 'jquery', + 'aloha/ecma5shims', + 'aloha/console', + 'aloha/block-jump' +], function (Aloha, Class, jQuery, shims, console, BlockJump) { + "use strict"; + + var GENTICS = window.GENTICS; + + var isOldIE = !!(jQuery.browser.msie && 9 > parseInt(jQuery.browser.version, 10)); + + function isBR(node) { + return 'BR' === node.nodeName; + } + + function isBlock(node) { + return 'false' === jQuery(node).attr('contenteditable'); + } + + function isTextNode(node) { + return node && 3 === node.nodeType; // Node.TEXT_NODE + } + + function nodeLength(node) { + return !node ? 0 : (isTextNode(node) ? node.length : node.childNodes.length); + } + + /** + * Determines whether the given text node is visible to the the user, + * based on our understanding that browsers will not display + * superfluous white spaces. + * + * @param {HTMLEmenent} node The text node to be checked. + */ + function isVisibleTextNode(node) { + return 0 < node.data.replace(/\s+/g, '').length; + } + + function nextVisibleNode(node) { + if (!node) { + return null; + } + + if (node.nextSibling) { + // Skip over nodes that the user cannot see ... + if (isTextNode(node.nextSibling) && !isVisibleTextNode(node.nextSibling)) { + return nextVisibleNode(node.nextSibling); + } + + // Skip over propping
s ... + if (isBR(node.nextSibling) && node.nextSibling === node.parentNode.lastChild) { + return nextVisibleNode(node.nextSibling); + } + + // Skip over empty editable elements ... + if ('' === node.nextSibling.innerHTML && !isBlock(node.nextSibling)) { + return nextVisibleNode(node.nextSibling); + } + + return node.nextSibling; + } + + if (node.parentNode) { + return nextVisibleNode(node.parentNode); + } + + return null; + } + + function prevVisibleNode(node) { + if (!node) { + return null; + } + + if (node.previousSibling) { + // Skip over nodes that the user cannot see... + if (isTextNode(node.previousSibling) && !isVisibleTextNode(node.previousSibling)) { + return prevVisibleNode(node.previousSibling); + } + + // Skip over empty editable elements ... + if ('' === node.previousSibling.innerHTML && !isBlock(node.previousSibling)) { + return prevVisibleNode(node.previouSibling); + } + + return node.previousSibling; + } + + if (node.parentNode) { + return prevVisibleNode(node.parentNode); + } + + return null; + } + + function isFrontPosition(node, offset) { + return (0 === offset) || (offset <= node.data.length - node.data.replace(/^\s+/, '').length); + } + + function isBlockInsideEditable($block) { + return $block.parent().hasClass('aloha-editable'); + } + + function isEndPosition(node, offset) { + var length = nodeLength(node); + + if (length === offset) { + return true; + } + + var isText = isTextNode(node); + + // If within a text node, then ignore superfluous white-spaces, + // since they are invisible to the user. + if (isText && node.data.replace(/\s+$/, '').length === offset) { + return true; + } + + if (1 === length && !isText) { + return isBR(node.childNodes[0]); + } + + return false; + } + + function blink(node) { + jQuery(node).stop(true).css({ + opacity:0 + }).fadeIn(0).delay(100).fadeIn(function () { + jQuery(node).css({ + opacity:1 + }); + }); + + return node; + } + + function nodeContains(node1, node2) { + return isOldIE ? (shims.compareDocumentPosition(node1, node2) & 16) : 0 < jQuery(node1).find(node2).length; + } + + function isInsidePlaceholder(range) { + var start = range.startContainer; + var end = range.endContainer; + var $placeholder = window.$_alohaPlaceholder; + + return $placeholder.is(start) || $placeholder.is(end) || nodeContains($placeholder[0], start) || nodeContains($placeholder[0], end); + } + + function cleanupPlaceholders(range) { + if (window.$_alohaPlaceholder && !isInsidePlaceholder(range)) { + if (0 === window.$_alohaPlaceholder.html().replace(/^( )*$/, '').length) { + window.$_alohaPlaceholder.remove(); + } + + window.$_alohaPlaceholder = null; + } + } + + /** + * @TODO(petro): We need to be more intelligent about whether we insert a + * block-level placeholder or a phrasing level element. + * @TODO(petro): test with
+   * @TODO: move to block-jump.js
+   */
+  function jumpBlock(block, isGoingLeft, currentRange) {
+    var range = new GENTICS.Utils.RangeObject();
+    var sibling = isGoingLeft ? prevVisibleNode(block) : nextVisibleNode(block);
+
+    if (!sibling || isBlock(sibling)) {
+      var $landing = jQuery('
 
'); + + if (isGoingLeft) { + jQuery(block).before($landing); + } else { + jQuery(block).after($landing); + } + + range.startContainer = range.endContainer = $landing[0]; + range.startOffset = range.endOffset = 0; + + // Clear out any old placeholder first ... + cleanupPlaceholders(range); + + window.$_alohaPlaceholder = $landing; + } else { + + // Don't jump the block yet if the cursor is moving to the + // beginning or end of a text node, or if it is about to leave + // an element node. Both these cases require a hack in some + // browsers. + var moveToBoundaryPositionInIE = ( // To the beginning or end of a text node? + (currentRange.startContainer.nodeType === 3 + && currentRange.startContainer === currentRange.endContainer + && currentRange.startContainer.nodeValue !== "" + && (isGoingLeft ? currentRange.startOffset === 1 : currentRange.endOffset + 1 === currentRange.endContainer.length)) + // Leaving an element node? + || (currentRange.startContainer.nodeType === 1 + && (!currentRange.startOffset + || (currentRange.startContainer.childNodes[currentRange.startOffset] && currentRange.startContainer.childNodes[currentRange.startOffset].nodeType === 1))) + ); + + if (moveToBoundaryPositionInIE) { + // The cursor is moving to the beginning or end of a text + // node, or is leaving an element node, which requires a + // hack in some browsers. + var zeroWidthNode = BlockJump.insertZeroWidthTextNodeFix(block, isGoingLeft); + range.startContainer = range.endContainer = zeroWidthNode; + range.startOffset = range.endOffset = isGoingLeft ? 1 : 0; + } else { + // The selection is already at the boundary position - jump + // the block. + range.startContainer = range.endContainer = sibling; + range.startOffset = range.endOffset = isGoingLeft ? nodeLength(sibling) : 0; + if (!isGoingLeft) { + // Just as above, jumping to the first position right of + // a block requires a hack in some browsers. Jumping + // left seems to be fine. + BlockJump.insertZeroWidthTextNodeFix(block, true); + } + } + cleanupPlaceholders(range); + } + + range.select(); + + Aloha.trigger('aloha-block-selected', block); + Aloha.Selection.preventSelectionChanged(); + } + + /** + * Markup object + */ + Aloha.Markup = Class.extend({ + + /** + * Key handlers for special key codes + */ + keyHandlers:{}, + + /** + * Add a key handler for the given key code + * @param keyCode key code + * @param handler handler function + */ + addKeyHandler:function (keyCode, handler) { + if (!this.keyHandlers[keyCode]) { + this.keyHandlers[keyCode] = []; + } + + this.keyHandlers[keyCode].push(handler); + }, + + /** + * Removes a key handler for the given key code + * @param keyCode key code + */ + removeKeyHandler:function (keyCode) { + if (this.keyHandlers[keyCode]) { + this.keyHandlers[keyCode] = null; + } + }, + + insertBreak:function () { + var range = Aloha.Selection.rangeObject, + nonWSIndex, + nextTextNode, + newBreak; + + if (!range.isCollapsed()) { + this.removeSelectedMarkup(); + } + + newBreak = jQuery('
'); + GENTICS.Utils.Dom.insertIntoDOM(newBreak, range, Aloha.activeEditable.obj); + + nextTextNode = GENTICS.Utils.Dom.searchAdjacentTextNode( + newBreak.parent().get(0), + GENTICS.Utils.Dom.getIndexInParent(newBreak.get(0)) + 1, + false + ); + + if (nextTextNode) { + // trim leading whitespace + nonWSIndex = nextTextNode.data.search(/\S/); + if (nonWSIndex > 0) { + nextTextNode.data = nextTextNode.data.substring(nonWSIndex); + } + } + + range.startContainer = range.endContainer = newBreak.get(0).parentNode; + range.startOffset = range.endOffset = GENTICS.Utils.Dom.getIndexInParent(newBreak.get(0)) + 1; + range.correctRange(); + range.clearCaches(); + range.select(); + }, + + /** + * first method to handle key strokes + * @param event DOM event + * @param rangeObject as provided by Aloha.Selection.getRangeObject(); + * @return "Aloha.Selection" + */ + preProcessKeyStrokes:function (event) { + if (event.type !== 'keydown') { + return false; + } + + var rangeObject, + handlers, + i; + + if (this.keyHandlers[event.keyCode]) { + handlers = this.keyHandlers[event.keyCode]; + for (i = 0; i < handlers.length; ++i) { + if (!handlers[i](event)) { + return false; + } + } + } + + // LEFT (37), RIGHT (39) keys for block detection + if (event.keyCode === 37 || event.keyCode === 39) { + if (Aloha.getSelection().getRangeCount()) { + rangeObject = Aloha.getSelection().getRangeAt(0); + + if (this.processCursor(rangeObject, event.keyCode)) { + cleanupPlaceholders(Aloha.Selection.rangeObject); + return true; + } + } + + return false; + } + + // BACKSPACE + if (event.keyCode === 8) { + event.preventDefault(); // prevent history.back() even on exception + Aloha.execCommand('delete', false); + return false; + } + + // DELETE + if (event.keyCode === 46) { + Aloha.execCommand('forwarddelete', false); + return false; + } + + // ENTER + if (event.keyCode === 13) { + if (event.shiftKey) { + Aloha.execCommand('insertlinebreak', false); + return false; + } + Aloha.execCommand('insertparagraph', false); + return false; + } + + return true; + }, + + /** + * Processing of cursor keys. + * Detect blocks (elements with contenteditable=false) and will select them + * (normally the cursor would simply jump right past them). + * + * For each block that is selected, an 'aloha-block-selected' event will be + * triggered. + * + * TODO: the above is what should happen. Currently we just skip past blocks. + * + * @param {RangyRange} range A range object for the current selection. + * @param {number} keyCode Code of the currently pressed key. + * @return {boolean} False if a block was found, to prevent further events, + * true otherwise. + * @TODO move to block-jump.js + */ + processCursor:function (range, keyCode) { + if (!range.collapsed) { + return true; + } + + BlockJump.removeZeroWidthTextNodeFix(); + + var node = range.startContainer, + selection = Aloha.getSelection(); + + if (!node) { + return true; + } + + var sibling, offset; + + // special handling for moving Cursor around zero-width whitespace in IE7 + if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) <= 7 && isTextNode(node)) { + if (keyCode == 37) { + // moving left -> skip zwsp to the left + offset = range.startOffset; + while (offset > 0 && node.data.charAt(offset - 1) === '\u200b') { + offset--; + } + if (offset != range.startOffset) { + range.setStart(range.startContainer, offset); + range.setEnd(range.startContainer, offset); + selection = Aloha.getSelection(); + selection.removeAllRanges(); + selection.addRange(range); + } + } else if (keyCode == 39) { + // moving right -> skip zwsp to the right + offset = range.startOffset; + while (offset < node.data.length && node.data.charAt(offset) === '\u200b') { + offset++; + } + if (offset != range.startOffset) { + range.setStart(range.startContainer, offset); + range.setEnd(range.startContainer, offset); + selection.removeAllRanges(); + selection.addRange(range); + } + } + } + + // Versions of Internet Explorer that are older that 9, will + // erroneously allow you to enter and edit inside elements which have + // their contenteditable attribute set to false... + if (isOldIE && !jQuery(node).contentEditable()) { + var $parentBlock = jQuery(node).parents('[contenteditable=false]'); + var isInsideBlock = $parentBlock.length > 0; + + if (isInsideBlock) { + if (isBlockInsideEditable($parentBlock)) { + sibling = $parentBlock[0]; + } else { + return true; + } + } + } + + var isLeft; + if (!sibling) { + // True if keyCode denotes LEFT or UP arrow key, otherwise they + // keyCode is for RIGHT or DOWN in which this value will be false. + isLeft = (37 === keyCode || 38 === keyCode); + offset = range.startOffset; + + if (isTextNode(node)) { + if (isLeft) { + var isApproachingFrontPosition = (1 === offset); + if (!isApproachingFrontPosition && !isFrontPosition(node, offset)) { + return true; + } + } else if (!isEndPosition(node, offset)) { + return true; + } + + } else { + node = node.childNodes[offset === nodeLength(node) ? offset - 1 : offset]; + } + + sibling = isLeft ? prevVisibleNode(node) : nextVisibleNode(node); + } + + if (isBlock(sibling)) { + jumpBlock(sibling, isLeft, range); + return false; + } + + return true; + }, + + /** + * method handling shiftEnter + * @param Aloha.Selection.SelectionRange of the current selection + * @return void + */ + processShiftEnter:function (rangeObject) { + this.insertHTMLBreak(rangeObject.getSelectionTree(), rangeObject); + }, + + /** + * method handling Enter + * @param Aloha.Selection.SelectionRange of the current selection + * @return void + */ + processEnter:function (rangeObject) { + if (rangeObject.splitObject) { + // now comes a very evil hack for ie, when the enter is pressed in a text node in an li element, we just append an empty text node + // if ( jQuery.browser.msie + // && GENTICS.Utils.Dom + // .isListElement( rangeObject.splitObject ) ) { + // jQuery( rangeObject.splitObject ).append( + // jQuery( document.createTextNode( '' ) ) ); + // } + this.splitRangeObject(rangeObject); + } else { // if there is no split object, the Editable is the paragraph type itself (e.g. a p or h2) + this.insertHTMLBreak(rangeObject.getSelectionTree(), rangeObject); + } + }, + + /** + * Insert the given html markup at the current selection + * @param html html markup to be inserted + */ + insertHTMLCode:function (html) { + var rangeObject = Aloha.Selection.rangeObject; + this.insertHTMLBreak(rangeObject.getSelectionTree(), rangeObject, jQuery(html)); + }, + + /** + * insert an HTML Break
into current selection + * @param Aloha.Selection.SelectionRange of the current selection + * @return void + */ + insertHTMLBreak:function (selectionTree, rangeObject, inBetweenMarkup) { + var i, + treeLength, + el, + jqEl, + jqElBefore, + jqElAfter, + tmpObject, + offset, + checkObj; + + inBetweenMarkup = inBetweenMarkup || jQuery('
'); + + for (i = 0, treeLength = selectionTree.length; i < treeLength; ++i) { + el = selectionTree[i]; + jqEl = el.domobj ? jQuery(el.domobj) : undefined; + + if (el.selection !== 'none') { // before cursor, leave this part inside the splitObject + if (el.selection == 'collapsed') { + // collapsed selection found (between nodes) + if (i > 0) { + // not at the start, so get the element to the left + jqElBefore = jQuery(selectionTree[i - 1].domobj); + + // and insert the break after it + jqElBefore.after(inBetweenMarkup); + + } else { + // at the start, so get the element to the right + jqElAfter = jQuery(selectionTree[1].domobj); + + // and insert the break before it + jqElAfter.before(inBetweenMarkup); + } + + // now set the range + rangeObject.startContainer = rangeObject.endContainer = inBetweenMarkup[0].parentNode; + rangeObject.startOffset = rangeObject.endOffset = GENTICS.Utils.Dom.getIndexInParent(inBetweenMarkup[0]) + 1; + rangeObject.correctRange(); + + } else if (el.domobj && el.domobj.nodeType === 3) { // textNode + // when the textnode is immediately followed by a blocklevel element (like p, h1, ...) we need to add an additional br in between + if (el.domobj.nextSibling && el.domobj.nextSibling.nodeType == 1 && Aloha.Selection.replacingElements[el.domobj.nextSibling.nodeName.toLowerCase()]) { + // TODO check whether this depends on the browser + jqEl.after('
'); + } + + if (this.needEndingBreak()) { + // when the textnode is the last inside a blocklevel element + // (like p, h1, ...) we need to add an additional br as very + // last object in the blocklevel element + checkObj = el.domobj; + + while (checkObj) { + if (checkObj.nextSibling) { + checkObj = false; + } else { + // go to the parent + checkObj = checkObj.parentNode; + + // found a blocklevel or list element, we are done + if (GENTICS.Utils.Dom.isBlockLevelElement(checkObj) || GENTICS.Utils.Dom.isListElement(checkObj)) { + break; + } + + // reached the limit object, we are done + if (checkObj === rangeObject.limitObject) { + checkObj = false; + } + } + } + + // when we found a blocklevel element, insert a break at the + // end. Mark the break so that it is cleaned when the + // content is fetched. + if (checkObj) { + jQuery(checkObj).append('
'); + } + } + + // insert the break + jqEl.between(inBetweenMarkup, el.startOffset); + + // correct the range + // count the number of previous siblings + offset = 0; + tmpObject = inBetweenMarkup[0]; + while (tmpObject) { + tmpObject = tmpObject.previousSibling; + ++offset; + } + + rangeObject.startContainer = inBetweenMarkup[0].parentNode; + rangeObject.endContainer = inBetweenMarkup[0].parentNode; + rangeObject.startOffset = offset; + rangeObject.endOffset = offset; + rangeObject.correctRange(); + + } else if (el.domobj && el.domobj.nodeType === 1) { // other node, normally a break + if (jqEl.parent().find('br.aloha-ephemera').length === 0) { + // but before putting it, remove all: + jQuery(rangeObject.limitObject).find('br.aloha-ephemera').remove(); + + // now put it: + jQuery(rangeObject.commonAncestorContainer).append(this.getFillUpElement(rangeObject.splitObject)); + } + + jqEl.after(inBetweenMarkup); + + // now set the selection. Since we just added one break do the currect el + // the new position must be el's position + 1. el's position is the index + // of the el in the selection tree, which is i. then we must add + // another +1 because we want to be AFTER the object, not before. therefor +2 + rangeObject.startContainer = rangeObject.commonAncestorContainer; + rangeObject.endContainer = rangeObject.startContainer; + rangeObject.startOffset = i + 2; + rangeObject.endOffset = i + 2; + rangeObject.update(); + } + } + } + rangeObject.select(); + }, + + /** + * Check whether blocklevel elements need breaks at the end to visibly render a newline + * @return true if an ending break is necessary, false if not + */ + needEndingBreak:function () { + // currently, all browser except IE need ending breaks + return !jQuery.browser.msie; + }, + + /** + * Get the currently selected text or false if nothing is selected (or the selection is collapsed) + * @return selected text + */ + getSelectedText:function () { + var rangeObject = Aloha.Selection.rangeObject; + + if (rangeObject.isCollapsed()) { + return false; + } + + return this.getFromSelectionTree(rangeObject.getSelectionTree(), true); + }, + + /** + * Recursive function to get the selected text from the selection tree starting at the given level + * @param selectionTree array of selectiontree elements + * @param astext true when the contents shall be fetched as text, false for getting as html markup + * @return selected text from that level (incluiding all sublevels) + */ + getFromSelectionTree:function (selectionTree, astext) { + var text = '', i, treeLength, el, clone; + for (i = 0, treeLength = selectionTree.length; i < treeLength; i++) { + el = selectionTree[i]; + if (el.selection == 'partial') { + if (el.domobj.nodeType === 3) { + // partial text node selected, get the selected part + text += el.domobj.data.substring(el.startOffset, el.endOffset); + } else if (el.domobj.nodeType === 1 && el.children) { + // partial element node selected, do the recursion into the children + if (astext) { + text += this.getFromSelectionTree(el.children, astext); + } else { + // when the html shall be fetched, we create a clone of + // the element and remove all the children + clone = jQuery(el.domobj.outerHTML).empty(); + // then we do the recursion and add the selection into the clone + clone.html(this.getFromSelectionTree(el.children, astext)); + // finally we get the html of the clone + text += clone.outerHTML(); + } + } + } else if (el.selection == 'full') { + if (el.domobj.nodeType === 3) { + // full text node selected, get the text + text += jQuery(el.domobj).text(); + } else if (el.domobj.nodeType === 1 && el.children) { + // full element node selected, get the html of the node and all children + text += astext ? jQuery(el.domobj).text() : jQuery(el.domobj).outerHTML(); + } + } + } + + return text; + }, + + /** + * Get the currently selected markup or false if nothing is selected (or the selection is collapsed) + * @return {?String} + */ + getSelectedMarkup:function () { + var rangeObject = Aloha.Selection.rangeObject; + return rangeObject.isCollapsed() ? null : this.getFromSelectionTree(rangeObject.getSelectionTree(), false); + }, + + /** + * Remove the currently selected markup + */ + removeSelectedMarkup:function () { + var rangeObject = Aloha.Selection.rangeObject, + newRange; + + if (rangeObject.isCollapsed()) { + return; + } + + newRange = new Aloha.Selection.SelectionRange(); + // remove the selection + this.removeFromSelectionTree(rangeObject.getSelectionTree(), newRange); + + // do a cleanup now (starting with the commonancestorcontainer) + newRange.update(); + GENTICS.Utils.Dom.doCleanup({ + 'merge':true, + 'removeempty':true + }, Aloha.Selection.rangeObject); + Aloha.Selection.rangeObject = newRange; + + // need to set the collapsed selection now + newRange.correctRange(); + newRange.update(); + newRange.select(); + Aloha.Selection.updateSelection(); + }, + + /** + * Recursively remove the selected items, starting with the given level in the selectiontree + * @param selectionTree current level of the selectiontree + * @param newRange new collapsed range to be set after the removal + */ + removeFromSelectionTree:function (selectionTree, newRange) { + // remember the first found partially selected element node (in case we need + // to merge it with the last found partially selected element node) + var firstPartialElement, newdata, i, el, adjacentTextNode, treeLength; + + // iterate through the selection tree + for (i = 0, treeLength = selectionTree.length; i < treeLength; i++) { + el = selectionTree[i]; + + // check the type of selection + if (el.selection == 'partial') { + if (el.domobj.nodeType === 3) { + // partial text node selected, so remove the selected portion + newdata = ''; + if (el.startOffset > 0) { + newdata += el.domobj.data.substring(0, el.startOffset); + } + if (el.endOffset < el.domobj.data.length) { + newdata += el.domobj.data.substring(el.endOffset, el.domobj.data.length); + } + el.domobj.data = newdata; + + // eventually set the new range (if not done before) + if (!newRange.startContainer) { + newRange.startContainer = newRange.endContainer = el.domobj; + newRange.startOffset = newRange.endOffset = el.startOffset; + } + } else if (el.domobj.nodeType === 1 && el.children) { + // partial element node selected, so do the recursion into the children + this.removeFromSelectionTree(el.children, newRange); + + if (firstPartialElement) { + // when the first parially selected element is the same type + // of element, we need to merge them + if (firstPartialElement.nodeName == el.domobj.nodeName) { + // merge the nodes + jQuery(firstPartialElement).append(jQuery(el.domobj).contents()); + + // and remove the latter one + jQuery(el.domobj).remove(); + } + + } else { + // remember this element as first partially selected element + firstPartialElement = el.domobj; + } + } + + } else if (el.selection == 'full') { + // eventually set the new range (if not done before) + if (!newRange.startContainer) { + adjacentTextNode = GENTICS.Utils.Dom.searchAdjacentTextNode( + el.domobj.parentNode, + GENTICS.Utils.Dom.getIndexInParent(el.domobj) + 1, + false, + { + 'blocklevel':false + } + ); + + if (adjacentTextNode) { + newRange.startContainer = newRange.endContainer = adjacentTextNode; + newRange.startOffset = newRange.endOffset = 0; + } else { + newRange.startContainer = newRange.endContainer = el.domobj.parentNode; + newRange.startOffset = newRange.endOffset = GENTICS.Utils.Dom.getIndexInParent(el.domobj) + 1; + } + } + + // full node selected, so just remove it (will also remove all children) + jQuery(el.domobj).remove(); + } + } + }, + + /** + * split passed rangeObject without or with optional markup + * @param Aloha.Selection.SelectionRange of the current selection + * @param markup object (jQuery) to insert in between the split elements + * @return void + */ + splitRangeObject:function (rangeObject, markup) { + // UAAAA: first check where the markup can be inserted... *grrrrr*, then decide where to split + // object which is split up + var splitObject = jQuery(rangeObject.splitObject), + selectionTree, + insertAfterObject, + followUpContainer; + + // update the commonAncestor with the splitObject (so that the selectionTree is correct) + rangeObject.update(rangeObject.splitObject); // set the splitObject as new commonAncestorContainer and update the selectionTree + + // calculate the selection tree. NOTE: it is necessary to do this before + // getting the followupcontainer, since getting the selection tree might + // possibly merge text nodes, which would lead to differences in the followupcontainer + selectionTree = rangeObject.getSelectionTree(); + + // object to be inserted after the splitObject + followUpContainer = this.getSplitFollowUpContainer(rangeObject); + + // now split up the splitObject into itself AND the followUpContainer + this.splitRangeObjectHelper(selectionTree, rangeObject, followUpContainer); // split the current object into itself and the followUpContainer + + // check whether the followupcontainer is still marked for removal + if (followUpContainer.hasClass('preparedForRemoval')) { + // TODO shall we just remove the class or shall we not use the followupcontainer? + followUpContainer.removeClass('preparedForRemoval'); + } + + // now let's find the place, where the followUp is inserted afterwards. normally that's the splitObject itself, but in + // some cases it might be their parent (e.g. inside a list, a

followUp must be inserted outside the list) + insertAfterObject = this.getInsertAfterObject(rangeObject, followUpContainer); + + // now insert the followUpContainer + jQuery(followUpContainer).insertAfter(insertAfterObject); // attach the followUpContainer right after the insertAfterObject + + // in some cases, we want to remove the "empty" splitObject (e.g. LIs, if enter was hit twice) + if (rangeObject.splitObject.nodeName.toLowerCase() === 'li' && !Aloha.Selection.standardTextLevelSemanticsComparator(rangeObject.splitObject, followUpContainer)) { + jQuery(rangeObject.splitObject).remove(); + } + + rangeObject.startContainer = null; + // first check whether the followUpContainer starts with a
+ // if so, place the cursor right before the
+ var followContents = followUpContainer.contents(); + if (followContents.length > 0 && followContents.get(0).nodeType == 1 && followContents.get(0).nodeName.toLowerCase() === 'br') { + rangeObject.startContainer = followUpContainer.get(0); + } + + if (!rangeObject.startContainer) { + // find a possible text node in the followUpContainer and set the selection to it + // if no textnode is available, set the selection to the followup container itself + rangeObject.startContainer = followUpContainer.textNodes(true, true).first().get(0); + } + if (!rangeObject.startContainer) { // if no text node was found, select the parent object of
+ rangeObject.startContainer = followUpContainer.textNodes(false).first().parent().get(0); + } + if (rangeObject.startContainer) { + // the cursor is always at the beginning of the followUp + rangeObject.endContainer = rangeObject.startContainer; + rangeObject.startOffset = 0; + rangeObject.endOffset = 0; + } else { + rangeObject.startContainer = rangeObject.endContainer = followUpContainer.parent().get(0); + rangeObject.startOffset = rangeObject.endOffset = GENTICS.Utils.Dom.getIndexInParent(followUpContainer.get(0)); + } + + // finally update the range object again + rangeObject.update(); + + // now set the selection + rangeObject.select(); + }, + + /** + * method to get the object after which the followUpContainer can be inserted during splitup + * this is a helper method, not needed anywhere else + * @param rangeObject Aloha.Selection.SelectionRange of the current selection + * @param followUpContainer optional jQuery object; if provided the rangeObject will be split and the second part will be insert inside of this object + * @return object after which the followUpContainer can be inserted + */ + getInsertAfterObject:function (rangeObject, followUpContainer) { + var passedSplitObject, i, el; + + for (i = 0; i < rangeObject.markupEffectiveAtStart.length; i++) { + el = rangeObject.markupEffectiveAtStart[i]; + + // check if we have already passed the splitObject (some other markup might come before) + if (el === rangeObject.splitObject) { + passedSplitObject = true; + } + + // if not passed splitObject, skip this markup + if (!passedSplitObject) { + continue; + } + + // once we are passed, check if the followUpContainer is allowed to be inserted into the currents el's parent + if (Aloha.Selection.canTag1WrapTag2(jQuery(el).parent()[0].nodeName, followUpContainer[0].nodeName)) { + return el; + } + } + + return false; + }, + + /** + * @fixme: Someone who knows what this function does, please refactor it. + * 1. splitObject arg is not used at all + * 2. Would be better to use ternary operation would be better than if else statement + * + * method to get the html code for a fillUpElement. this is needed for empty paragraphs etc., so that they take up their expected height + * @param splitObject split object (dom object) + * @return fillUpElement HTML Code + */ + getFillUpElement:function (splitObject) { + if (jQuery.browser.msie) { + return false; + } + return jQuery('
'); + }, + + /** + * removes textNodes from passed array, which only contain contentWhiteSpace (e.g. a \n between two tags) + * @param domArray array of domObjects + * @return void + */ + removeElementContentWhitespaceObj:function (domArray) { + var correction = 0, + removeLater = [], + i, + el, + removeIndex; + + for (i = 0; i < domArray.length; ++i) { + el = domArray[i]; + if (el.isElementContentWhitespace) { + removeLater[removeLater.length] = i; + } + } + + for (i = 0; i < removeLater.length; ++i) { + removeIndex = removeLater[i]; + domArray.splice(removeIndex - correction, 1); + ++correction; + } + }, + + /** + * recursive method to parallelly walk through two dom subtrees, leave elements before startContainer in first subtree and move rest to other + * @param selectionTree tree to iterate over as contained in rangeObject. must be passed separately to allow recursion in the selection tree, but not in the rangeObject + * @param rangeObject Aloha.Selection.SelectionRange of the current selection + * @param followUpContainer optional jQuery object; if provided the rangeObject will be split and the second part will be insert inside of this object + * @param inBetweenMarkup jQuery object to be inserted between the two split parts. will be either a
(if no followUpContainer is passed) OR e.g. a table, which must be inserted between the splitobject AND the follow up + * @return void + */ + splitRangeObjectHelper:function (selectionTree, rangeObject, followUpContainer, inBetweenMarkup) { + if (!followUpContainer) { + Aloha.Log.warn(this, 'no followUpContainer, no inBetweenMarkup, nothing to do...'); + } + + var fillUpElement = this.getFillUpElement(rangeObject.splitObject), + splitObject = jQuery(rangeObject.splitObject), + startMoving = false, + el, + i, + completeText, + jqObj, + mirrorLevel, + parent, + treeLength; + + if (selectionTree.length > 0) { + mirrorLevel = followUpContainer.contents(); + + // if length of mirrorLevel and selectionTree are not equal, the mirrorLevel must be corrected. this happens, when the mirrorLevel contains whitespace textNodes + if (mirrorLevel.length !== selectionTree.length) { + this.removeElementContentWhitespaceObj(mirrorLevel); + } + + for (i = 0, treeLength = selectionTree.length; i < treeLength; ++i) { + el = selectionTree[i]; + + // remove all objects in the mirrorLevel, which are BEFORE the cursor + // OR if the cursor is at the last position of the last Textnode (causing an empty followUpContainer to be appended) + if ((el.selection === 'none' && startMoving === false) || (el.domobj && el.domobj.nodeType === 3 && el === selectionTree[(selectionTree.length - 1)] && el.startOffset === el.domobj.data.length)) { + // iteration is before cursor, leave this part inside the splitObject, remove from followUpContainer + // however if the object to remove is the last existing textNode within the followUpContainer, insert a BR instead + // otherwise the followUpContainer is invalid and takes up no vertical space + + if (followUpContainer.textNodes().length > 1 || (el.domobj.nodeType === 1 && el.children.length === 0)) { + // note: the second part of the if (el.domobj.nodeType === 1 && el.children.length === 0) covers a very special condition, + // where an empty tag is located right before the cursor when pressing enter. In this case the empty tag would not be + // removed correctly otherwise + mirrorLevel.eq(i).remove(); + + } else if (GENTICS.Utils.Dom.isSplitObject(followUpContainer[0])) { + if (fillUpElement) { + followUpContainer.html(fillUpElement); // for your zoological german knowhow: ephemera = Eintagsfliege + } else { + followUpContainer.empty(); + } + + } else { + followUpContainer.empty(); + followUpContainer.addClass('preparedForRemoval'); + } + + continue; + + } else { + // split objects, which are AT the cursor Position or directly above + if (el.selection !== 'none') { // before cursor, leave this part inside the splitObject + // TODO better check for selection == 'partial' here? + if (el.domobj && el.domobj.nodeType === 3 && el.startOffset !== undefined) { + completeText = el.domobj.data; + if (el.startOffset > 0) { // first check, if there will be some text left in the splitObject + el.domobj.data = completeText.substr(0, el.startOffset); + } else if (selectionTree.length > 1) { // if not, check if the splitObject contains more than one node, because then it can be removed. this happens, when ENTER is pressed inside of a textnode, but not at the borders + jQuery(el.domobj).remove(); + } else { // if the "empty" textnode is the last node left in the splitObject, replace it with a ephemera break + // if the parent is a blocklevel element, we insert the fillup element + parent = jQuery(el.domobj).parent(); + if (GENTICS.Utils.Dom.isSplitObject(parent[0])) { + if (fillUpElement) { + parent.html(fillUpElement); + } else { + parent.empty(); + } + + } else { + // if the parent is no blocklevel element and would be empty now, we completely remove it + parent.remove(); + } + } + if (completeText.length - el.startOffset > 0) { + // first check if there is text left to put in the followUpContainer's textnode. this happens, when ENTER is pressed inside of a textnode, but not at the borders + mirrorLevel[i].data = completeText.substr(el.startOffset, completeText.length); + } else if (mirrorLevel.length > 1) { + // if not, check if the followUpContainer contains more than one node, because if yes, the "empty" textnode can be removed + mirrorLevel.eq((i)).remove(); + } else if (GENTICS.Utils.Dom.isBlockLevelElement(followUpContainer[0])) { + // if the "empty" textnode is the last node left in the followUpContainer (which is a blocklevel element), replace it with a ephemera break + if (fillUpElement) { + followUpContainer.html(fillUpElement); + } else { + followUpContainer.empty(); + } + + } else { + // if the "empty" textnode is the last node left in a non-blocklevel element, mark it for removal + followUpContainer.empty(); + followUpContainer.addClass('preparedForRemoval'); + } + } + + startMoving = true; + + if (el.children.length > 0) { + this.splitRangeObjectHelper(el.children, rangeObject, mirrorLevel.eq(i), inBetweenMarkup); + } + + } else { + // remove all objects in the origin, which are AFTER the cursor + if (el.selection === 'none' && startMoving === true) { + // iteration is after cursor, remove from splitObject and leave this part inside the followUpContainer + jqObj = jQuery(el.domobj).remove(); + } + } + } + } + } else { + Aloha.Log.error(this, 'can not split splitObject due to an empty selection tree'); + } + + // and finally cleanup: remove all fillUps > 1 + splitObject.find('br.aloha-ephemera:gt(0)').remove(); // remove all elements greater than (gt) 0, that also means: leave one + followUpContainer.find('br.aloha-ephemera:gt(0)').remove(); // remove all elements greater than (gt) 0, that also means: leave one + + // remove objects prepared for removal + splitObject.find('.preparedForRemoval').remove(); + followUpContainer.find('.preparedForRemoval').remove(); + + // if splitObject / followUp are empty, place a fillUp inside + if (splitObject.contents().length === 0 && GENTICS.Utils.Dom.isSplitObject(splitObject[0]) && fillUpElement) { + splitObject.html(fillUpElement); + } + + if (followUpContainer.contents().length === 0 && GENTICS.Utils.Dom.isSplitObject(followUpContainer[0]) && fillUpElement) { + followUpContainer.html(fillUpElement); + } + }, + + /** + * returns a jQuery object fitting the passed splitObject as follow up object + * examples, + * - when passed a p it will return an empty p (clone of the passed p) + * - when passed an h1, it will return either an h1 (clone of the passed one) or a new p (if the collapsed selection was at the end) + * @param rangeObject Aloha.RangeObject + * @return void + */ + getSplitFollowUpContainer:function (rangeObject) { + var tagName = rangeObject.splitObject.nodeName.toLowerCase(), + returnObj, + inside, + lastObj; + + switch (tagName) { + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + // get the last textnode in the splitobject, but don't consider aloha-cleanme elements + lastObj = jQuery(rangeObject.splitObject).textNodes(':not(.aloha-cleanme)').last()[0]; + // special case: when enter is hit at the end of a heading, the followUp should be a

+ if (lastObj && rangeObject.startContainer === lastObj && rangeObject.startOffset === lastObj.length) { + returnObj = jQuery('

'); + inside = jQuery(rangeObject.splitObject.outerHTML).contents(); + returnObj.append(inside); + return returnObj; + } + break; + + case 'li': + // TODO check whether the li is the last one + // special case: if enter is hit twice inside a list, the next item should be a

(and inserted outside the list) + if (rangeObject.startContainer.nodeName.toLowerCase() === 'br' && jQuery(rangeObject.startContainer).hasClass('aloha-ephemera')) { + returnObj = jQuery('

'); + inside = jQuery(rangeObject.splitObject.outerHTML).contents(); + returnObj.append(inside); + return returnObj; + } + // when the li is the last one and empty, we also just return a

+ if (!rangeObject.splitObject.nextSibling && jQuery.trim(jQuery(rangeObject.splitObject).text()).length === 0) { + returnObj = jQuery('

'); + return returnObj; + } + break; + } + + return jQuery(rangeObject.splitObject.outerHTML); + }, + + /** + * Transform the given domobj into an object with the given new nodeName. + * Preserves the content and all attributes. If a range object is given, also the range will be preserved + * @param domobj dom object to transform + * @param nodeName new node name + * @param range range object + * @api + * @return new object as jQuery object + */ + transformDomObject:function (domobj, nodeName, range) { + // first create the new element + var jqOldObj = jQuery(domobj), + jqNewObj = jQuery('<' + nodeName + '>'), + i, + attributes = jqOldObj[0].cloneNode(false).attributes; + + // TODO what about events? + // copy attributes + if (attributes) { + for (i = 0; i < attributes.length; ++i) { + if (typeof attributes[i].specified === 'undefined' || attributes[i].specified) { + jqNewObj.attr(attributes[i].nodeName, attributes[i].nodeValue); + } + } + } + + // copy inline CSS + if (jqOldObj[0].style && jqOldObj[0].style.cssText) { + jqNewObj[0].style.cssText = jqOldObj[0].style.cssText; + } + + // now move the contents of the old dom object into the new dom object + jqOldObj.contents().appendTo(jqNewObj); + + // finally replace the old object with the new one + jqOldObj.replaceWith(jqNewObj); + + // preserve the range + if (range) { + if (range.startContainer == domobj) { + range.startContainer = jqNewObj.get(0); + } + + if (range.endContainer == domobj) { + range.endContainer = jqNewObj.get(0); + } + } + + return jqNewObj; + }, + + /** + * String representation + * @return {String} + */ + toString:function () { + return 'Aloha.Markup'; + } + + }); + + Aloha.Markup = new Aloha.Markup(); + return Aloha.Markup; +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/ca/i18n.js b/modules/core/aloha/static/lib/aloha/nls/ca/i18n.js new file mode 100644 index 000000000..a86e0d9ef --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/ca/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Abreviació", + "floatingmenu.tab.format":"Format", + "floatingmenu.tab.insert":"Insereix", + "yes":"Sí", + "no":"No", + "cancel":"Cancel·la", + "repository.no_item_found":"No s\'ha trobat cap element.", + "repository.loading":"S\'està carregant", + "repository.no_items_found_yet":"Encara no s\'ha trobat cap element..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/de/i18n.js b/modules/core/aloha/static/lib/aloha/nls/de/i18n.js new file mode 100644 index 000000000..c8d73cca5 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/de/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Abkürzung", + "floatingmenu.tab.format":"Formatieren", + "floatingmenu.tab.insert":"Einfügen", + "yes":"Ja", + "no":"Nein", + "cancel":"Abbrechen", + "repository.no_item_found":"Keinen Eintrag gefunden.", + "repository.loading":"Es wird geladen ...", + "repository.no_items_found_yet":"Suche nach Einträgen ..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/i18n.js b/modules/core/aloha/static/lib/aloha/nls/i18n.js new file mode 100644 index 000000000..64b6129e8 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/i18n.js @@ -0,0 +1,20 @@ +define({ + "root":{ + "plugin.abbr.floatingmenu.tab.abbr":"Abbreviation", + "floatingmenu.tab.format":"Format", + "floatingmenu.tab.insert":"Insert", + "yes":"Yes", + "no":"No", + "cancel":"Cancel", + "repository.no_item_found":"No item found.", + "repository.loading":"Loading", + "repository.no_items_found_yet":"No items found yet..." + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/mk/i18n.js b/modules/core/aloha/static/lib/aloha/nls/mk/i18n.js new file mode 100644 index 000000000..645143da8 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/mk/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Кратенка", + "floatingmenu.tab.format":"Изглед", + "floatingmenu.tab.insert":"Вметни", + "yes":"Да", + "no":"Не", + "cancel":"Откажи", + "repository.no_item_found":"Не е најдено.", + "repository.loading":"Се вчитува", + "repository.no_items_found_yet":"Сеуште ништо не е најдено..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/pt-br/i18n.js b/modules/core/aloha/static/lib/aloha/nls/pt-br/i18n.js new file mode 100644 index 000000000..674d7417b --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/pt-br/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Abreviação", + "floatingmenu.tab.format":"Formatar", + "floatingmenu.tab.insert":"Inserir", + "yes":"Sim", + "no":"Não", + "cancel":"Cancelar", + "repository.no_item_found":"Nenhum item encontrado.", + "repository.loading":"Carregando", + "repository.no_items_found_yet":"Nenhum item encontrado ainda..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/ru/i18n.js b/modules/core/aloha/static/lib/aloha/nls/ru/i18n.js new file mode 100644 index 000000000..d5d46e8c5 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/ru/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Аббревиатура", + "floatingmenu.tab.format":"Форматирование", + "floatingmenu.tab.insert":"Вставить", + "yes":"Да", + "no":"Нет", + "cancel":"Отмена", + "repository.no_item_found":"Объект не найден", + "repository.loading":"Загрузка", + "repository.no_items_found_yet":"Пока что ничего не найдено..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/uk/i18n.js b/modules/core/aloha/static/lib/aloha/nls/uk/i18n.js new file mode 100644 index 000000000..56eb23235 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/uk/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"Абревіатура", + "floatingmenu.tab.format":"Форматування", + "floatingmenu.tab.insert":"Вставити", + "yes":"Так", + "no":"Ні", + "cancel":"Відмінити", + "repository.no_item_found":"Нічого не знайдено", + "repository.loading":"Завантаження", + "repository.no_items_found_yet":"Поки що нічого не знайдено..." +}); diff --git a/modules/core/aloha/static/lib/aloha/nls/zh-hans/i18n.js b/modules/core/aloha/static/lib/aloha/nls/zh-hans/i18n.js new file mode 100644 index 000000000..b8845e194 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/nls/zh-hans/i18n.js @@ -0,0 +1,11 @@ +define({ + "plugin.abbr.floatingmenu.tab.abbr":"缩写", + "floatingmenu.tab.format":"格式", + "floatingmenu.tab.insert":"插入", + "yes":"是", + "no":"否", + "cancel":"取消", + "repository.no_item_found":"没有找到项目。", + "repository.loading":"加载中", + "repository.no_items_found_yet":"找不到项目..." +}); diff --git a/modules/core/aloha/static/lib/aloha/observable.js b/modules/core/aloha/static/lib/aloha/observable.js new file mode 100644 index 000000000..935c753aa --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/observable.js @@ -0,0 +1,111 @@ +/* observable.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'jquery' +], function (jQuery) { + "use strict"; + + var $ = jQuery; + + return { + _eventHandlers:null, + + /** + * Attach a handler to an event + * + * @param {String} eventType A string containing the event name to bind to + * @param {Function} handler A function to execute each time the event is triggered + * @param {Object} scope Optional. Set the scope in which handler is executed + */ + bind:function (eventType, handler, scope) { + this._eventHandlers = this._eventHandlers || {}; + if (!this._eventHandlers[eventType]) { + this._eventHandlers[eventType] = []; + } + this._eventHandlers[eventType].push({ + handler:handler, + scope:(scope || window) + }); + }, + + /** + * Remove a previously-attached event handler + * + * @param {String} eventType A string containing the event name to unbind + * @param {Function} handler The function that is to be no longer executed. Optional. If not given, unregisters all functions for the given event. + */ + unbind:function (eventType, handler) { + this._eventHandlers = this._eventHandlers || {}; + if (!this._eventHandlers[eventType]) { + return; + } + if (!handler) { + // No handler function given, unbind all event handlers for the eventType + this._eventHandlers[eventType] = []; + } else { + this._eventHandlers[eventType] = $.grep(this._eventHandlers[eventType], function (element) { + if (element.handler === handler) { + return false; + } + return true; + }); + } + }, + + /** + * Execute all handlers attached to the given event type. + * All arguments except the eventType are directly passed to the callback function. + * + * @param (String} eventType A string containing the event name for which the event handlers should be invoked. + */ + trigger:function (eventType) { + this._eventHandlers = this._eventHandlers || {}; + if (!this._eventHandlers[eventType]) { + return; + } + + // preparedArguments contains all arguments except the first one. + var preparedArguments = []; + $.each(arguments, function (i, argument) { + if (i > 0) { + preparedArguments.push(argument); + } + }); + + $.each(this._eventHandlers[eventType], function (index, element) { + element.handler.apply(element.scope, preparedArguments); + }); + }, + + /** + * Clears all event handlers. Call this method when cleaning up. + */ + unbindAll:function () { + this._eventHandlers = null; + } + }; +}); diff --git a/modules/core/aloha/static/lib/aloha/plugin.js b/modules/core/aloha/static/lib/aloha/plugin.js new file mode 100644 index 000000000..2d23afe45 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/plugin.js @@ -0,0 +1,278 @@ +/* plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'jquery', + 'util/class', + 'aloha/pluginmanager', + 'aloha/console' +], function (Aloha, jQuery, Class, PluginManager, console) { + "use strict"; + + /** + * Abstract Plugin Object + * @namespace Aloha + * @class Plugin + * @constructor + * @param {String} pluginPrefix unique plugin prefix + */ + var Plugin = Class.extend({ + + name:null, + + /** + * contains the plugin's default settings object + * @cfg {Object} default settings for the plugin + */ + defaults:{}, + + /** + * contains the plugin's settings object + * @cfg {Object} settings the plugins settings stored in an object + */ + settings:{}, + + /** + * Names of other plugins which must be loaded in order for this plugin to + * function. + * @cfg {Array} + */ + dependencies:[], + + _constructor:function (name) { + /** + * Settings of the plugin + */ + if (typeof name !== "string") { + console.error('Cannot initialise unnamed plugin, skipping'); + } else { + this.name = name; + } + }, + + /** + * @return true if dependencies satisfied, false otherwise + */ + checkDependencies:function () { + var dependenciesSatisfied = true, + that = this; + + jQuery.each(this.dependencies, function () { + + if (!Aloha.isPluginLoaded(this)) { + dependenciesSatisfied = false; + console.error('plugin.' + that.name, 'Required plugin "' + this + '" not found.'); + } + }); + + return dependenciesSatisfied; + }, + + /** + * Init method of the plugin. Called from Aloha Core to initialize this plugin + * @return void + * @hide + */ + init:function () { + }, + + /** + * Get the configuration settings for an editable obj. + * Handles both conf arrays or conf objects + *
    + *
  • Array configuration parameters are: + *
    +     * "list": {
    +		 *		config : [ 'b', 'h1' ],
    +		 *		editables : {
    +		 *			'#title'	: [ ],
    +		 *			'div'		: [ 'b', 'i' ],
    +		 *			'.article'	: [ 'h1' ]
    +		 *		}
    +		 *	}
    +     * 
    + * + * The hash keys of the editables are css selectors. For a + * + *
    +     *  
    content
    + *
    + * + * the selectors 'div' and '.article' match and the returned configuration is + * + *
    +     *  [ 'b', 'i', 'h1']
    +     * 
    + * + * The '#title' object would return an empty configuration. + * + *
    +     *  [ ]
    +     * 
    + * + * All other objects would get the 'config' configuration. If config is not set + * the plugin default configuration is returned. + * + *
    +     *  [ 'b', 'h1']
    +     * 
  • + *
  • Object configuration parameters are : + *
    +     *  "image": {
    +		 *		config : { 'img': { 'max_width': '50px',
    +		 *		'max_height': '50px' }},
    +		 *		editables : {
    +		 *			'#title': {},
    +		 *			'div': {'img': {}},
    +		 *			'.article': {'img': { 'max_width': '150px',
    +		 *			'max_height': '150px' }}
    +		 *		}
    +		 *	}
    +     * 
    + * The '#title' object would return an empty configuration.
    + * The 'div' object would return the default configuration.
    + * the '.article' would return : + *
    +     *    {'img': { 'max_width': '150px',
    +		 *		'max_height': '150px' }}
    +     *  
    + *
  • + * + * @param {jQuery} obj jQuery object of an Editable Object + * @return {Array} config A Array with configuration entries + */ + getEditableConfig:function (obj) { + var configObj = null, + configSpecified = false, + that = this; + + if (this.settings.editables) { + // check if the editable's selector matches and if so add its configuration to object configuration + jQuery.each(this.settings.editables, function (selector, selectorConfig) { + var k; + if (obj.is(selector)) { + configSpecified = true; + if (selectorConfig instanceof Array) { + configObj = []; + configObj = jQuery.merge(configObj, selectorConfig); + } else if (typeof selectorConfig === "object") { + configObj = {}; + configObj['aloha-editable-selector'] = selector; + for (k in selectorConfig) { + if (selectorConfig.hasOwnProperty(k)) { + if (selectorConfig[k] instanceof Array) { + //configObj[k] = []; + //configObj[k] = jQuery.extend(true, configObj[k], that.config[k], selectorConfig[k]); + configObj[k] = selectorConfig[k]; + } else if (typeof selectorConfig[k] === "object") { + configObj[k] = {}; + configObj[k] = jQuery.extend(true, configObj[k], that.config[k], selectorConfig[k]); + } else { + configObj[k] = selectorConfig[k]; + } + } + } + } else { + configObj = selectorConfig; + } + } + }); + } + + // fall back to default configuration + if (!configSpecified) { + if (typeof this.settings.config === 'undefined' || !this.settings.config) { + configObj = this.config; + } else { + configObj = this.settings.config; + } + } + + return configObj; + }, + + /** + * Make the given jQuery object (representing an editable) clean for saving + * @param obj jQuery object to make clean + * @return void + */ + makeClean:function (obj) { + }, + + /** + * Make a system-wide unique id out of a plugin-wide unique id by prefixing it with the plugin prefix + * @param id plugin-wide unique id + * @return system-wide unique id + * @hide + * @deprecated + */ + getUID:function (id) { + console.deprecated('plugin', 'getUID() is deprecated. Use plugin.name instead.'); + return this.name; + }, + + /** + * Return string representation of the plugin, which is the prefix + * @return name + * @hide + * @deprecated + */ + toString:function () { + return this.name; + }, + + /** + * Log a plugin message to the logger + * @param level log level + * @param message log message + * @return void + * @hide + * @deprecated + */ + log:function (level, message) { + console.deprecated('plugin', 'log() is deprecated. Use Aloha.console instead.'); + console.log(level, this, message); + } + }); + + /** + * Static method used as factory to create plugins. + * + * @param {String} pluginName name of the plugin + * @param {Object} definition definition of the plugin, should have at least an "init" and "destroy" method. + */ + Plugin.create = function (pluginName, definition) { + + var pluginInstance = new (Plugin.extend(definition))(pluginName); + pluginInstance.settings = jQuery.extendObjects(true, pluginInstance.defaults, Aloha.settings[pluginName]); + PluginManager.register(pluginInstance); + + return pluginInstance; + }; + + return Plugin; +}); diff --git a/modules/core/aloha/static/lib/aloha/pluginmanager.js b/modules/core/aloha/static/lib/aloha/pluginmanager.js new file mode 100644 index 000000000..9002d9464 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/pluginmanager.js @@ -0,0 +1,149 @@ +/* pluginmanager.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +// Do not add dependencies that require depend on aloha/core +define(['jquery', 'util/class'], function (jQuery, Class) { + "use strict"; + + var Aloha = window.Aloha; + + /** + * The Plugin Manager controls the lifecycle of all Aloha Plugins. + * + * @namespace Aloha + * @class PluginManager + * @singleton + */ + return new (Class.extend({ + plugins:{}, + + /** + * Initialize all registered plugins + * @return void + * @hide + */ + init:function (next, userPlugins) { + var me = this, + globalSettings = (Aloha && Aloha.settings) ? Aloha.settings.plugins || {} : {}, + i, + plugin, + pluginName; + + // Global to local settings + for (pluginName in globalSettings) { + + if (globalSettings.hasOwnProperty(pluginName)) { + + plugin = this.plugins[pluginName] || false; + + if (plugin) { + plugin.settings = globalSettings[pluginName] || {}; + } + } + } + + // Default: All loaded plugins are enabled + if (!userPlugins.length) { + + for (pluginName in this.plugins) { + + if (this.plugins.hasOwnProperty(pluginName)) { + userPlugins.push(pluginName); + } + } + } + + // Enable Plugins specified by User + for (i = 0; i < userPlugins.length; ++i) { + + pluginName = userPlugins[i]; + plugin = this.plugins[pluginName] || false; + + if (plugin) { + + plugin.settings = plugin.settings || {}; + + if (typeof plugin.settings.enabled === 'undefined') { + plugin.settings.enabled = true; + } + + if (plugin.settings.enabled) { + if (plugin.checkDependencies()) { + plugin.init(); + } + } + } + } + + next(); + }, + + /** + * Register a plugin + * @param {Plugin} plugin plugin to register + */ + register:function (plugin) { + + if (!plugin.name) { + throw new Error('Plugin does not have an name.'); + } + + if (this.plugins[plugin.name]) { + throw new Error('Already registered the plugin "' + plugin.name + '"!'); + } + + this.plugins[plugin.name] = plugin; + }, + + /** + * Pass the given jQuery object, which represents an editable to all plugins, so that they can make the content clean (prepare for saving) + * @param obj jQuery object representing an editable + * @return void + * @hide + */ + makeClean:function (obj) { + var i, plugin; + // iterate through all registered plugins + for (plugin in this.plugins) { + if (this.plugins.hasOwnProperty(plugin)) { + if (Aloha.Log.isDebugEnabled()) { + Aloha.Log.debug(this, 'Passing contents of HTML Element with id { ' + obj.attr('id') + ' } for cleaning to plugin { ' + plugin + ' }'); + } + this.plugins[plugin].makeClean(obj); + } + } + }, + + /** + * Expose a nice name for the Plugin Manager + * @hide + */ + toString:function () { + return 'pluginmanager'; + } + + }))(); +}); diff --git a/modules/core/aloha/static/lib/aloha/rangy-core.js b/modules/core/aloha/static/lib/aloha/rangy-core.js new file mode 100644 index 000000000..8b57e0e00 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/rangy-core.js @@ -0,0 +1,30 @@ +/* rangy-core.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define('aloha/rangy-core', ['jquery', 'vendor/rangy-core'], function (jQuery) { + 'use strict'; + return window.rangy; +}); diff --git a/modules/core/aloha/static/lib/aloha/registry.js b/modules/core/aloha/static/lib/aloha/registry.js new file mode 100644 index 000000000..5210a4e25 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/registry.js @@ -0,0 +1,133 @@ +/* registry.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/*global define:true */ +/** + * Registry base class. + * TODO: document that it also contains Observable. + * + */ +define([ + 'jquery', + 'aloha/observable', + 'util/class' +], function (jQuery, Observable, Class) { + "use strict"; + + return Class.extend(Observable, { + + /** + * Object containing the registered entries by key. + */ + _entries:null, + + /** + * Array containing the registered ids in order + * of registry + */ + _ids:null, + + _constructor:function () { + this._entries = {}; + this._ids = []; + }, + + /** + * Register an entry with an id + * + * @event register + * @param id id of the registered entry + * @param entry registered entry + */ + register:function (id, entry) { + // TODO check whether an entry with the id is already registered + this._entries[id] = entry; + this._ids.push(id); + this.trigger('register', entry, id); + }, + + /** + * Unregister the entry with given id + * + * @event unregister + * @param id id of the registered entry + */ + unregister:function (id) { + // TODO check whether an entry was registered + var i, oldEntry = this._entries[id]; + delete this._entries[id]; + for (i in this._ids) { + if (this._ids.hasOwnProperty(i) && this._ids[i] === id) { + this._ids.splice(i, 1); + break; + } + } + this.trigger('unregister', oldEntry, id); + }, + + /** + * Get the entry registered with the given id + * + * @param id id of the registered entry + * @return registered entry + */ + get:function (id) { + return this._entries[id]; + }, + + /** + * Check whether an entry was registered with given id + * + * @param id id to check + * @return true if an entry was registered, false if not + */ + has:function (id) { + return (this._entries[id] ? true : false); + }, + + /** + * Get an object mapping the ids (properties) to the registered entries + * Note, that iterating over the properties of the returned object + * will return the entries in an unspecified order + * + * @return object containing the registered entries + */ + getEntries:function () { + // clone the entries so the user does not accidentally modify our _entries object. + return jQuery.extend({}, this._entries); + }, + + /** + * Get the ids of the registered objects as array. + * The array will contain the ids in order of registry + * + * @return array if registered ids + */ + getIds:function () { + return jQuery.extend([], this._ids); + } + }); +}); diff --git a/modules/core/aloha/static/lib/aloha/repository.js b/modules/core/aloha/static/lib/aloha/repository.js new file mode 100644 index 000000000..ec21d7cfe --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/repository.js @@ -0,0 +1,254 @@ +/* repository.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'util/class', + 'aloha/repositorymanager' +], function (Aloha, Class, RepositoryManager) { + "use strict"; + + // var + // $ = jQuery, + // GENTICS = window.GENTICS, + // Aloha = window.Aloha, + // Class = window.Class; + + /** + * Abstract Repository Class. Implement that class for your own repository. + * @namespace Aloha.Repository + * @class Repository + * @constructor + * @param {String} repositoryId unique repository identifier + * @param {String} repositoryName (optional) is the displyed name for this Repository instance + */ + var AbstractRepository = Class.extend({ + _constructor:function (repositoryId, repositoryName) { + /** + * @property repositoryId is the unique Id for this Repository instance + */ + this.repositoryId = repositoryId; + + /** + * contains the repository's settings object + * @property settings {Object} the repository's settings stored in an object + */ + this.settings = {}; + + /** + * @property repositoryName is the name for this Repository instance + */ + this.repositoryName = repositoryName || repositoryId; + + RepositoryManager.register(this); + }, + + /** + * Init method of the repository. Called from Aloha Core to initialize this repository + * @return void + * @hide + */ + init:function () { + }, + + /** + * Searches a repository for object items matching queryString if none found returns null. + * The returned object items must be an array of Aloha.Repository.Object + * +
    
    +     // simple delicious implementation
    +     Aloha.Repositories.myRepository.query = function (params, callback) {
    +
    +		// make local var of this to use in ajax function
    +		var that = this;
    +
    +		// handle each word as tag
    +		var tags = p.queryString.split(' ');
    +
    +		// if we have a query and no tag matching return
    +		if ( p.queryString && tags.length == 0 ) {
    +			callback.call( that, []);
    +			return;
    +		}
    +
    +		// no handling of objectTypeFilter, filter, inFolderId, etc...
    +		// in real implementation you should handle all parameters
    +
    +		jQuery.ajax({ type: "GET",
    +			dataType: "jsonp",
    +			url: 'http://feeds.delicious.com/v2/json/' + tags.join('+'),
    +			success: function(data) {
    +				var items = [];
    +				// convert data to Aloha objects
    +				for (var i = 0; i < data.length; i++) {
    +					if (typeof data[i] != 'function' ) {
    +						items.push(new Aloha.Repository.Document ({
    +							id: data[i].u,
    +							name: data[i].d,
    +							repositoryId: that.repositoryId,
    +							type: 'website',
    +							url: data[i].u
    +						}));
    +					}
    +				}
    +				callback.call( that, items);
    +			}
    +		});
    +	};
    +     
    + * + * @param {object} params object with properties + *
      + *
    • queryString : String
      The query string for full text search
    • + *
    • objectTypeFilter : array (optional)
      Object types that will be returned.
    • + *
    • filter : array (optional)
      Attributes that will be returned.
    • + *
    • inFolderId : boolean (optional)
      This is indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).
    • + *
    • inTreeId : boolean (optional)
      This indicates whether or not a candidate object is a descendant-object of the folder object identified by the given inTreeId (objectId).
    • + *
    • orderBy : array (optional)
      ex. [{lastModificationDate:’DESC’, name:’ASC’}]
    • + *
    • maxItems : Integer (optional)
      number items to return as result
    • + *
    • skipCount : Integer (optional)
      This is tricky in a merged multi repository scenario
    • + *
    • renditionFilter : array (optional)
      Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter
    • + *
    + * @param {function} callback this method must be called with all result items
+ */ + query:null, + /* + query: function( params, callback ) { + if (typeof callback === 'function') { + callback([]); + } + }, + */ + + /** + * Returns all children of a given motherId. + * + * @param {object} params object with properties + *
    + *
  • objectTypeFilter : array (optional)
    Object types that will be returned.
  • + *
  • filter : array (optional)
    Attributes that will be returned.
  • + *
  • inFolderId : boolean (optional)
    This indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).
  • + *
  • orderBy : array (optional)
    ex. [{lastModificationDate:’DESC’, name:’ASC’}]
  • + *
  • maxItems : Integer (optional)
    number items to return as result
  • + *
  • skipCount : Integer (optional)
    This is tricky in a merged multi repository scenario
  • + *
  • renditionFilter : array (optional)
    Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter
  • + *
+ * @param {function} callback this method must be called with all result items + */ + getChildren:null, + /* + getChildren: function( params, callback ) { + if (typeof callback === 'function') { + callback([]); + } + }, + */ + + /** + * Make the given jQuery object (representing an object marked as object of this type) + * clean. All attributes needed for handling should be removed. + * +

+     Aloha.Repositories.myRepository.makeClean = function (obj) {
+		obj.removeAttr('data-myRepository-name');
+	};
+     
+ * @param {jQuery} obj jQuery object to make clean + * @return void + */ + makeClean:function (obj) { + }, + + /** + * This method will be called when a user chooses an item from a repository and wants + * to insert this item in his content. + * Mark or modify an object as needed by that repository for handling, processing or identification. + * Objects can be any DOM object as A, SPAN, ABBR, etc. or + * special objects such as aloha-aloha_block elements. + * (see http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data) + * +

+     Aloha.Repositories.myRepository.markObject = function (obj, resourceItem) {
+		obj.attr('data-myRepository-name').text(resourceItem.name);
+	};
+     
+ * + * + * @param obj jQuery target object to which the repositoryItem will be applied + * @param repositoryItem The selected item. A class constructed from Document or Folder. + * @return void + */ + markObject:function (obj, repositoryItem) { + }, + + /** + * Set a template for rendering objects of this repository + * @param {String} template + * @return void + * @method + */ + setTemplate:function (template) { + if (template) { + this.template = template; + } else { + this.template = null; + } + }, + + /** + * Checks whether the repository has a template + * @return {boolean} true when the repository has a template, false if not + * @method + */ + hasTemplate:function () { + return this.template ? true : false; + }, + + /** + * Get the parsed template + * @return {Object} parsed template + * @method + */ + getTemplate:function () { + return this.template; + }, + + /** + * Get the repositoryItem with given id + * @param itemId {String} id of the repository item to fetch + * @param callback {function} callback function + * @return {Aloha.Repository.Object} item with given id + */ + getObjectById:function (itemId, callback) { + return true; + } + }); + + // expose the AbstractRepository + Aloha.AbstractRepository = AbstractRepository; + + return AbstractRepository; +}); diff --git a/modules/core/aloha/static/lib/aloha/repositorymanager.js b/modules/core/aloha/static/lib/aloha/repositorymanager.js new file mode 100644 index 000000000..b8f115134 --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/repositorymanager.js @@ -0,0 +1,658 @@ +/* repositorymanager.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define(['aloha/core', 'util/class', 'jquery', 'aloha/console'], function (Aloha, Class, jQuery, console) { + 'use strict'; + + /** + * Repository Manager + * @namespace Aloha + * @class RepositoryManager + * @singleton + */ + Aloha.RepositoryManager = Class.extend({ + + repositories:[], + settings:{}, + initialized:false, + + /** + * Initialize all registered repositories + * Before we invoke each repositories init method, we merge the global + * repository settings into each repository's custom settings + * Warning: testing has shown that repositories are maybe not loaded yet + * (found that case in IE7), so don't rely on that in this init function. + * + * @todo: Write unit tests to check that global and custom settings are + * applied correctly + * + * @return void + * @hide + */ + init:function () { + var repositories = this.repositories; + + if (Aloha.settings && Aloha.settings.repositories) { + this.settings = Aloha.settings.repositories; + } + + // use the configured repository manger query timeout or 5 sec + this.settings.timeout = this.settings.timeout || 5000; + + var count_repositories = repositories.length; + var i; + for (i = 0; i < count_repositories; ++i) { + var repository = repositories[i]; + this.initRepository(repository); + } + + this.initialized = true; + }, + + /** + * Register a Repository. + * + * @param {Aloha.Repository} repository Repository to register + */ + register:function (repository) { + if (!this.getRepository(repository.repositoryId)) { + this.repositories.push(repository); + + // If we have initialized already we have to call + // this on our own (late-loading) + if (this.initialized) { + this.initRepository(repository); + } + } else { + console.warn(this, 'A repository with name { ' + repository.repositoryId + ' } already registerd. Ignoring this.'); + } + }, + + /** + * Initializes a repository. + * + * @param {Aloha.Repository} repository Repository to initialize + */ + initRepository:function (repository) { + + if (!repository.settings) { + repository.settings = {}; + } + + if (this.settings[repository.repositoryId]) { + jQuery.extend(repository.settings, this.settings[repository.repositoryId]); + } + + repository.init(); + }, + + /** + * Returns the repository object identified by repositoryId. + * + * @param {String} repositoryId - the name of the repository + * @return {?Aloha.Repository} a repository or null if name not found + */ + getRepository:function (repositoryId) { + var repositories = this.repositories, + i, + j = repositories.length; + + for (i = 0; i < j; ++i) { + if (repositories[i].repositoryId === repositoryId) { + return repositories[i]; + } + } + + return null; + }, + + /** + * Searches a all repositories for repositoryObjects matching query and + * repositoryObjectType. + * +

+     var params = {
+					queryString: 'hello',
+					objectTypeFilter: ['website'],
+					filter: null,
+					inFolderId: null,
+					orderBy: null,
+					maxItems: null,
+					skipCount: null,
+					renditionFilter: null,
+					repositoryId: null
+			};
+     Aloha.RepositoryManager.query( params, function( items ) {
+				// do something with the result items
+				console.log(items);
+			});
+     
+ * + * @param {Object } params object with properties + *
    + *
  • queryString : String
    The query string for full text search
  • + *
  • objectTypeFilter : array (optional)
    Object types that will be returned.
  • + *
  • filter : array (optional)
    Attributes that will be returned.
  • + *
  • inFolderId : boolean (optional)
    This is indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).
  • + *
  • inTreeId : boolean (optional)
    This indicates whether or not a candidate object is a descendant-object of the folder object identified by the given inTreeId (objectId).
  • + *
  • orderBy : array (optional)
    ex. [{lastModificationDate:’DESC’, name:’ASC’}]
  • + *
  • maxItems : Integer (optional)
    number items to return as result
  • + *
  • skipCount : Integer (optional)
    This is tricky in a merged multi repository scenario
  • + *
  • renditionFilter : array (optional)
    Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter
  • + *
+ * @param {Function} callback - defines a callback function( items ) which will be called when all repositories returned their results or after a time out of 5sec. + * "items" is an Array of objects construced with Document/Folder. + * @void + */ + query:function (params, callback) { + var that = this, + repo, + // The merged results, collected from repository responses + allitems = [], + // the merge metainfo, collected from repository responses + allmetainfo = { + numItems:0, + hasMoreItems:false + }, + // The set of repositories towhich we want to delegate work + repositories = [], + // A counting semaphore (working in reverse, ie: 0 means free) + numOpenCallbacks = 0, + // When this timer times-out, whatever has been collected in + // allitems will be returned to the calling client, and + // numOpenCallbacks will be reset to 0 + timer, + i, + j, + /** + * Invoked by each repository when it wants to present its + * results to the manager. + * + * Collects the results from each repository, and decrements + * the numOpenCallbacks semaphore to indicate that there is one + * less repository for which we are waiting a reponse. + * + * If a repository invokes this callback after all + * openCallbacks have been closed (ie: numOpenCallbacks == 0), + * then the repository was too late ("missed the ship"), and + * will be ignored. + * + * If numOpenCallbacks decrements to 0 during this call, it + * means that the the manager is ready to report the results + * back to the client through the queryCallback method. + * + * nb: "this" is reference to the calling repository. + * + * @param {Array} items - Results returned by the repository + * @param {Object} metainfo - optional Metainfo returned by the repository + */ + processResults = function (items, metainfo) { + if (numOpenCallbacks === 0) { + return; + } + + var j = items ? items.length : 0; + + if (j) { + // Add the repositoryId for each item if a negligent + // repository did not do so. + if (!items[0].repositoryId) { + var repoId = this.repositoryId, + i; + for (i = 0; i < j; ++i) { + items[i].repositoryId = repoId; + } + } + + jQuery.merge(allitems, items); + } + + if (metainfo && allmetainfo) { + if (jQuery.isNumeric(metainfo.numItems) && jQuery.isNumeric(allmetainfo.numItems)) { + allmetainfo.numItems += metainfo.numItems; + } else { + allmetainfo.numItems = undefined; + } + + if (typeof metainfo.hasMoreItems === 'boolean' && typeof allmetainfo.hasMoreItems === 'boolean') { + allmetainfo.hasMoreItems = allmetainfo.hasMoreItems || metainfo.hasMoreItems; + } else { + allmetainfo.hasMoreItems = undefined; + } + + if (metainfo.timeout) { + allmetainfo.timeout = true; + } + } else { + // at least one repository did not return metainfo, so + // we have no aggregated metainfo at all + allmetainfo = undefined; + } + console.debug(this, "The repository " + this.repositoryId + " returned with " + j + " results."); + // TODO how to return the metainfo here? + if (--numOpenCallbacks === 0) { + that.queryCallback(callback, allitems, allmetainfo, timer); + } + }; + + // Unless the calling client specifies otherwise, we will wait a + // maximum of 5 seconds for all repositories to be queried and + // respond. 5 seconds is deemed to be the reasonable time to wait + // when querying the repository manager in the context of something + // like autocomplete + var timeout = parseInt(params.timeout, 10) || this.settings.timeout; + timer = window.setTimeout(function () { + if (numOpenCallbacks > 0) { + console.warn(this, numOpenCallbacks + " repositories did not return before the configured timeout of " + timeout + "ms."); + } + numOpenCallbacks = 0; + // store in the metainfo, that a timeout occurred + allmetainfo = allmetainfo || {}; + allmetainfo.timeout = true; + that.queryCallback(callback, allitems, allmetainfo, timer); + }, timeout); + + // If repositoryId or a list of repository ids, is not specified in + // the params object, then we will query all registered + // repositories + if (params.repositoryId) { + repositories.push(this.getRepository(params.repositoryId)); + } else { + repositories = this.repositories; + } + + j = repositories.length; + + var repoQueue = []; + + // We need to know how many callbacks we will open before invoking + // the query method on each, so that as soon as the first one does + // callback, the correct number of open callbacks will be available + // to check. + + for (i = 0; i < j; ++i) { + repo = repositories[i]; + + // if no repositoryId is given query all repositories + // if a repositoryID is given only query if it is the right repository + if ((!params.repositoryId || repo.repositoryId === params.repositoryId) && typeof repo.query === 'function') { + ++numOpenCallbacks; + repoQueue.push(repo); + } + } + + j = repoQueue.length; + + function makeApplyRepoToProcessResults(repo) { + return function () { + processResults.apply(repo, arguments); + }; + } + + for (i = 0; i < j; ++i) { + repo = repoQueue[i]; + repo.query(params, makeApplyRepoToProcessResults(repo)); + } + + // If none of the repositories implemented the query method, then + // don't wait for the timeout, simply report to the client + if (numOpenCallbacks === 0) { + this.queryCallback(callback, allitems, allmetainfo, timer); + } + }, + + /** + * Passes all the results we have collected to the client through the + * callback it specified + * + * @param {Function} callback - Callback specified by client when + * invoking the query method + * @param {Array} items - Results, collected from all repositories + * @param {Object} metainfo - optional object containing metainfo + * @param {Timer} timer - We need to clear this timer + * @return void + * @hide + */ + queryCallback:function (callback, items, metainfo, timer) { + if (timer) { + clearTimeout(timer); + timer = undefined; + } + + // TODO: Implement sorting based on repository specification + // sort items by weight + //items.sort( function( a, b ) { + // return ( b.weight || 0 ) - ( a.weight || 0 ); + //} ); + + // prepare result data for the JSON Reader + var result = { + items:items, + results:items.length + }; + + if (metainfo) { + result.numItems = metainfo.numItems; + result.hasMoreItems = metainfo.hasMoreItems; + result.timeout = metainfo.timeout; + } + + callback.call(this, result); + }, + + /** + * @todo: This method needs to be covered with some unit tests + * + * Returns children items. (see query for an example) + * @param {Object} params - object with properties + *
    + *
  • objectTypeFilter : array (optional)
    Object types that will be returned.
  • + *
  • filter : array (optional)
    Attributes that will be returned.
  • + *
  • inFolderId : boolean (optional)
    This indicates whether or not a candidate object is a child-object of the folder object identified by the given inFolderId (objectId).
  • + *
  • orderBy : array (optional)
    ex. [{lastModificationDate:’DESC’, name:’ASC’}]
  • + *
  • maxItems : Integer (optional)
    number items to return as result
  • + *
  • skipCount : Integer (optional)
    This is tricky in a merged multi repository scenario
  • + *
  • renditionFilter : array (optional)
    Instead of termlist an array of kind or mimetype is expected. If null or array.length == 0 all renditions are returned. See http://docs.oasis-open.org/cmis/CMIS/v1.0/cd04/cmis-spec-v1.0.html#_Ref237323310 for renditionFilter
  • + *
+ * @param {Function} callback - defines a callback function( items ) which will be called when all repositories returned their results or after a time out of 5sec. + * "items" is an Array of objects construced with Document/Folder. + * @void + */ + getChildren:function (params, callback) { + var that = this, + repo, + // The marged results, collected from repository responses + allitems = [], + // The set of repositories towhich we want to delegate work + repositories = [], + // A counting semaphore (working in reverse, ie: 0 means free) + numOpenCallbacks = 0, + // When this timer times-out, whatever has been collected in + // allitems will be returned to the calling client, and + // numOpenCallbacks will be reset to 0 + timer, + i, + j, + processResults = function (items) { + if (numOpenCallbacks === 0) { + return; + } + + if (allitems && items) { + jQuery.merge(allitems, items); + } + + if (--numOpenCallbacks === 0) { + that.getChildrenCallback(callback, allitems, timer); + } + }; + + // If the inFolderId is the default id of 'aloha', then return all + // registered repositories + if (params.inFolderId === 'aloha') { + var repoFilter = params.repositoryFilter, + hasRepoFilter = (repoFilter && repoFilter.length); + + j = this.repositories.length; + + for (i = 0; i < j; ++i) { + repo = this.repositories[i]; + if (!hasRepoFilter || jQuery.inArray(repo.repositoryId, repoFilter) > -1) { + repositories.push(new Aloha.RepositoryFolder({ + id:repo.repositoryId, + name:repo.repositoryName, + repositoryId:repo.repositoryId, + type:'repository', + hasMoreItems:true + })); + } + } + + that.getChildrenCallback(callback, repositories, null); + + return; + } + + repositories = this.repositories; + + var timeout = parseInt(params.timeout, 10) || this.settings.timeout; + timer = window.setTimeout(function () { + numOpenCallbacks = 0; + that.getChildrenCallback(callback, allitems, timer); + }, timeout); + + j = repositories.length; + + function makeApplyRepoToProcessResults(repo) { + return function () { + processResults.apply(repo, arguments); + }; + } + + for (i = 0; i < j; ++i) { + repo = repositories[i]; + + // if no repositoryId is given query all repositories + // if a repositoryID is given only query if it is the right repository + if ((!params.repositoryId || repo.repositoryId === params.repositoryId) && typeof repo.getChildren === 'function') { + ++numOpenCallbacks; + repo.getChildren(params, makeApplyRepoToProcessResults(repo)); + } + } + + if (numOpenCallbacks === 0) { + this.getChildrenCallback(callback, allitems, timer); + } + }, + + /** + * Returns results for getChildren to calling client + * + * @return void + * @hide + */ + getChildrenCallback:function (callback, items, timer) { + if (timer) { + clearTimeout(timer); + timer = undefined; + } + + callback.call(this, items); + }, + + /** + * @fixme: Not tested, but the code for this function does not seem to + * compute repository.makeClean will be undefined + * + * @todo: Rewrite this function header comment so that is clearer + * + * Pass an object, which represents an marked repository to corresponding + * repository, so that it can make the content clean (prepare for saving) + * + * @param {jQuery} obj - representing an editable + * @return void + */ + makeClean:function (obj) { + // iterate through all registered repositories + var that = this, + repository = {}, + i = 0, + j = that.repositories.length; + + // find all repository tags + obj.find('[data-gentics-aloha-repository=' + this.prefix + ']').each(function () { + while (i < j) { + repository.makeClean(obj); + i += 1; + } + console.debug(that, 'Passing contents of HTML Element with id { ' + this.attr('id') + ' } for cleaning to repository { ' + repository.repositoryId + ' }'); + repository.makeClean(this); + }); + }, + + /** + * Marks an object as repository of this type and with this item.id. + * Objects can be any DOM objects as A, SPAN, ABBR, etc. or + * special objects such as aloha-aloha_block elements. + * This method marks the target obj with two private attributes: + * (see http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data) + * * data-gentics-aloha-repository: stores the repositoryId + * * data-gentics-aloha-object-id: stores the object.id + * + * @param {DOMObject} obj - DOM object to mark + * @param {Aloha.Repository.Object} item - the item which is applied to obj, + * if set to null, the data-GENTICS-... attributes are removed + * @return void + */ + markObject:function (obj, item) { + if (!obj) { + return; + } + + if (item) { + var repository = this.getRepository(item.repositoryId); + + if (repository) { + jQuery(obj).attr({ + 'data-gentics-aloha-repository':item.repositoryId, + 'data-gentics-aloha-object-id':item.id + }); + + repository.markObject(obj, item); + } else { + console.error(this, 'Trying to apply a repository { ' + item.name + ' } to an object, but item has no repositoryId.'); + } + } else { + jQuery(obj).removeAttr('data-gentics-aloha-repository').removeAttr('data-gentics-aloha-object-id'); + } + }, + + /** + * Get the object for which the given DOM object is marked from the + * repository. + * + * @param {DOMObject} obj - DOM object which probably is marked + * @param {Function} callback - callback function + */ + getObject:function (obj, callback) { + var that = this, + $obj = jQuery(obj), + repository = this.getRepository($obj.attr('data-gentics-aloha-repository')), + itemId = $obj.attr('data-gentics-aloha-object-id'); + + if (repository && itemId) { + // initialize the item cache (per repository) if not already done + this.itemCache = this.itemCache || []; + this.itemCache[repository.repositoryId] = this.itemCache[repository.repositoryId] || []; + + // when the item is cached, we just call the callback method + if (this.itemCache[repository.repositoryId][itemId]) { + callback.call(this, [this.itemCache[repository.repositoryId][itemId]]); + } else { + // otherwise we get the object from the repository + repository.getObjectById(itemId, function (items) { + // make sure the item is in the cache (for subsequent calls) + that.itemCache[repository.repositoryId][itemId] = items[0]; + callback.call(this, items); + }); + } + } + }, + + /** + * This function gets called by the repository browser when a folder is opened. + * At the moment this forwards the call to the repository only. + * + * @param {object} folder object that gets forwarded + */ + folderOpened:function (folder) { + var repository = this.getRepository(folder.repositoryId); + + if (typeof repository.folderOpened === 'function') { + repository.folderOpened(folder); + } + }, + + /** + * This function gets called by the repository browser when a folder is closed. + * At the moment this forwards the call to the repository only. + * + * @param {object} folder object that gets forwarded + */ + folderClosed:function (folder) { + var repository = this.getRepository(folder.repositoryId); + + if (typeof repository.folderClosed === 'function') { + repository.folderClosed(folder); + } + }, + + /** + * This function gets called by the repository browser when a folder is selected. + * At the moment this forwards the call to the repository only. + * + * @param {object} folder object that gets forwarded + */ + folderSelected:function (folder) { + var repository = this.getRepository(folder.repositoryId); + + if (typeof repository.folderSelected === 'function') { + repository.folderSelected(folder); + } + }, + + /** + * Get the selected folder + * @returns selected folder or undefined + */ + getSelectedFolder:function () { + var i, len = this.repositories.length, + selected; + + for (i = 0; i < len; ++i) { + if (typeof this.repositories[i].getSelectedFolder === 'function') { + selected = this.repositories[i].getSelectedFolder(); + if (selected) { + return selected; + } + } + } + }, + + /** + * @return {String} name of repository manager object + */ + toString:function () { + return 'repositorymanager'; + } + + }); + + Aloha.RepositoryManager = new Aloha.RepositoryManager(); + + // We return the constructor, not the instance of Aloha.RepositoryManager + return Aloha.RepositoryManager; +}); diff --git a/modules/core/aloha/static/lib/aloha/repositoryobjects.js b/modules/core/aloha/static/lib/aloha/repositoryobjects.js new file mode 100644 index 000000000..fea694ccd --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/repositoryobjects.js @@ -0,0 +1,159 @@ +/* repositoryobjects.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'util/class' +], function (Aloha, Class) { + "use strict"; + + var GENTICS = window.GENTICS; + + Aloha.RepositoryObject = function () { + }; + + /** + * @namespace Aloha.Repository + * @class Document + * @constructor + * + * Abstract Document suitable for most Objects.

+ * + * Example: + * +

+   var item = new Aloha.Repository.Document({
+		id: 1,
+		repositoryId: 'myrepository',
+		name: 'Aloha Editor - The HTML5 Editor',
+		type: 'website',
+		url:'http://aloha-editor.com',
+	 });
+   
+ * + * @param {Object} properties An object with the data. + *
    + *
  • id : String
    Unique identifier
  • + *
  • repositoryId : String
    Unique repository identifier
  • + *
  • name : String
    Name of the object. This name is used to display
  • + *
  • type : String
    The specific object type
  • + *
  • partentId : String (optional)
  • + *
  • mimetype : String (optional)
    MIME type of the Content Stream
  • + *
  • filename : String (optional)
    File name of the Content Stream
  • + *
  • length : String (optional)
    Length of the content stream (in bytes)
  • + *
  • url : String (optional)
    URL of the content stream
  • + *
  • renditions : Array (optional)
    Array of different renditions of this object
  • + *
  • localName : String (optional)
    Name of the object. This name is used internally
  • + *
  • createdBy : String (optional)
    User who created the object
  • + *
  • creationDate : Date (optional)
    DateTime when the object was created
  • + *
  • lastModifiedBy : String (optional)
    User who last modified the object
  • + *
  • lastModificationDate : Date (optional)
    DateTime when the object was last modified
  • + *
+ * + */ + Aloha.RepositoryDocument = Class.extend({ + _constructor:function (properties) { + + var p = properties; + + this.type = 'document'; + + // Basic error checking for MUST attributes + if (!p.id || !p.name || !p.repositoryId) { + // Aloha.Log.error(this, "No valid Aloha Object. Missing MUST property"); + return; + } + + GENTICS.Utils.applyProperties(this, properties); + + this.baseType = 'document'; + } + // /** + // * Not implemented method to generate this JS API doc correctly. + // */ + // ,empty = function() } + + }); + + + /** + * @namespace Aloha.Repository + * @class Folder + * @constructor + * Abstract Folder suitable for most strucural Objects.

+ * + * Example: + * +

+   var item = new Aloha.Repository.Folder({
+		id: 2,
+		repositoryId: 'myrepository',
+		name: 'images',
+		type: 'directory',
+		parentId:'/www'
+	 });
+   
+ * @param {Object} properties An object with the data. + *
    + *
  • id : String
    Unique identifier
  • + *
  • repositoryId : String
    Unique repository identifier
  • + *
  • name : String
    Name of the object. This name is used to display
  • + *
  • type : String
    The specific object type
  • + *
  • partentId : String (optional)
  • + *
  • localName : String (optional)
    Name of the object. This name is used internally
  • + *
  • createdBy : String (optional)
    User who created the object
  • + *
  • creationDate : Date (optional)
    DateTime when the object was created
  • + *
  • lastModifiedBy : String (optional)
    User who last modified the object
  • + *
  • lastModificationDate : Date (optional)
    DateTime when the object was last modified
  • + *
+ * + */ + Aloha.RepositoryFolder = Class.extend({ + + _constructor:function (properties) { + + var p = properties; + + this.type = 'folder'; + + // Basic error checking for MUST attributes + if (!p.id || !p.name || !p.repositoryId) { + // Aloha.Log.error(this, "No valid Aloha Object. Missing MUST property"); + return; + } + + GENTICS.Utils.applyProperties(this, properties); + + this.baseType = 'folder'; + + } + // /** + // * Not implemented method to generate this JS API doc correctly. + // */ + // ,empty = function() {}; + + }); +}); diff --git a/modules/core/aloha/static/lib/aloha/selection.js b/modules/core/aloha/static/lib/aloha/selection.js new file mode 100644 index 000000000..568b2ffbc --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/selection.js @@ -0,0 +1,2389 @@ +/* selection.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'jquery', + 'util/class', + 'util/range', + 'util/arrays', + 'util/strings', + 'aloha/console', + 'PubSub', + 'aloha/engine', + 'aloha/ecma5shims', + 'aloha/rangy-core' +], function (Aloha, jQuery, Class, Range, Arrays, Strings, console, PubSub, Engine, e5s) { + "use strict"; + + var GENTICS = window.GENTICS; + + function isCollapsedAndEmptyOrEndBr(rangeObject) { + var firstChild; + if (rangeObject.startContainer !== rangeObject.endContainer) { + return false; + } + // check whether the container starts in an element node + if (rangeObject.startContainer.nodeType != 1) { + return false; + } + firstChild = rangeObject.startContainer.firstChild; + return (!firstChild || (!firstChild.nextSibling && firstChild.nodeName == 'BR')); + } + + function isCollapsedAndEndBr(rangeObject) { + if (rangeObject.startContainer !== rangeObject.endContainer) { + return false; + } + if (rangeObject.startContainer.nodeType != 1) { + return false; + } + return Engine.isEndBreak(rangeObject.startContainer); + } + + var prevStartContext = null; + var prevEndContext = null; + + function makeContextHtml(node, parents) { + var result = [], + parent, + len, + i; + if (1 === node.nodeType && node.nodeName !== 'BODY' && node.nodeName !== 'HTML') { + result.push(node.cloneNode(false).outerHTML); + } else { + result.push('#' + node.nodeType); + } + for (i = 0, len = parents.length; i < len; i++) { + parent = parents[i]; + if (parent.nodeName === 'BODY' || parent.nodeName === 'HTML') { + // Although we limit the ancestors in most cases to the + // active editable, in some cases (copy&paste) the + // parent may be outside. + // On IE7 this means the following code may clone the + // HTML node too, which causes the browser to crash. + // On other browsers, this is just an optimization + // because the body and html elements should probably + // not be considered part of the context of an edit + // operation. + break; + } + result.push(parent.cloneNode(false).outerHTML); + } + return result.join(''); + } + + function getChangedContext(node, context) { + var until = Aloha.activeEditable ? Aloha.activeEditable.obj.parent()[0] : null; + var parents = jQuery(node).parentsUntil(until).get(); + var html = makeContextHtml(node, parents); + var equal = (context && node === context.node && Arrays.equal(context.parents, parents) && html === context.html); + return equal ? null : { + node:node, + parents:parents, + html:html + }; + } + + function triggerSelectionContextChanged(rangeObject, event) { + var startContainer = rangeObject.startContainer; + var endContainer = rangeObject.endContainer; + if (!startContainer || !endContainer) { + console.warn("aloha/selection", "encountered range object without start or end container"); + return; + } + var startContext = getChangedContext(startContainer, prevStartContext); + var endContext = getChangedContext(endContainer, prevEndContext); + if (!startContext && !endContext) { + return; + } + prevStartContext = startContext; + prevEndContext = endContext; + + /** + * @api documented in the guides + */ + PubSub.pub('aloha.selection.context-change', { + range:rangeObject, + event:event + }); + } + + /** + * @namespace Aloha + * @class Selection + * This singleton class always represents the current user selection + * @singleton + */ + var Selection = Class.extend({ + _constructor:function () { + // Pseudo Range Clone being cleaned up for better HTML wrapping support + this.rangeObject = {}; + + this.preventSelectionChangedFlag = false; // will remember if someone urged us to skip the next aloha-selection-changed event + + // define basics first + this.tagHierarchy = { + 'textNode':{}, + 'abbr':{ + 'textNode':true + }, + 'b':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'a':true, + 'del':true, + 'ins':true, + 'u':true, + 'cite':true, + 'q':true, + 'code':true, + 'abbr':true, + 'strong':true + }, + 'pre':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'a':true, + 'del':true, + 'ins':true, + 'u':true, + 'cite':true, + 'q':true, + 'code':true, + 'abbr':true + }, + 'blockquote':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'a':true, + 'del':true, + 'ins':true, + 'u':true, + 'cite':true, + 'q':true, + 'code':true, + 'abbr':true, + 'p':true, + 'h1':true, + 'h2':true, + 'h3':true, + 'h4':true, + 'h5':true, + 'h6':true + }, + 'ins':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'a':true, + 'u':true, + 'p':true, + 'h1':true, + 'h2':true, + 'h3':true, + 'h4':true, + 'h5':true, + 'h6':true + }, + 'ul':{ + 'li':true + }, + 'ol':{ + 'li':true + }, + 'li':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'ul':true, + 'ol':true, + 'h1':true, + 'h2':true, + 'h3':true, + 'h4':true, + 'h5':true, + 'h6':true, + 'del':true, + 'ins':true, + 'u':true, + 'a':true + }, + 'tr':{ + 'td':true, + 'th':true + }, + 'table':{ + 'tr':true + }, + 'div':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'ul':true, + 'ol':true, + 'table':true, + 'h1':true, + 'h2':true, + 'h3':true, + 'h4':true, + 'h5':true, + 'h6':true, + 'del':true, + 'ins':true, + 'u':true, + 'p':true, + 'div':true, + 'pre':true, + 'blockquote':true, + 'a':true + }, + 'h1':{ + 'textNode':true, + 'b':true, + 'i':true, + 'em':true, + 'sup':true, + 'sub':true, + 'br':true, + 'span':true, + 'img':true, + 'a':true, + 'del':true, + 'ins':true, + 'u':true + } + }; + + // now reference the basics for all other equal tags (important: don't forget to include + // the basics itself as reference: 'b' : this.tagHierarchy.b + this.tagHierarchy = { + 'textNode':this.tagHierarchy.textNode, + 'abbr':this.tagHierarchy.abbr, + 'br':this.tagHierarchy.textNode, + 'img':this.tagHierarchy.textNode, + 'b':this.tagHierarchy.b, + 'strong':this.tagHierarchy.b, + 'code':this.tagHierarchy.b, + 'q':this.tagHierarchy.b, + 'blockquote':this.tagHierarchy.blockquote, + 'cite':this.tagHierarchy.b, + 'i':this.tagHierarchy.b, + 'em':this.tagHierarchy.b, + 'sup':this.tagHierarchy.b, + 'sub':this.tagHierarchy.b, + 'span':this.tagHierarchy.b, + 'del':this.tagHierarchy.del, + 'ins':this.tagHierarchy.ins, + 'u':this.tagHierarchy.b, + 'p':this.tagHierarchy.b, + 'pre':this.tagHierarchy.pre, + 'a':this.tagHierarchy.b, + 'ul':this.tagHierarchy.ul, + 'ol':this.tagHierarchy.ol, + 'li':this.tagHierarchy.li, + 'td':this.tagHierarchy.li, + 'div':this.tagHierarchy.div, + 'h1':this.tagHierarchy.h1, + 'h2':this.tagHierarchy.h1, + 'h3':this.tagHierarchy.h1, + 'h4':this.tagHierarchy.h1, + 'h5':this.tagHierarchy.h1, + 'h6':this.tagHierarchy.h1, + 'table':this.tagHierarchy.table + }; + + // When applying this elements to selection they will replace the assigned elements + this.replacingElements = { + 'h1':{ + 'p':true, + 'h1':true, + 'h2':true, + 'h3':true, + 'h4':true, + 'h5':true, + 'h6':true, + 'pre':true, + 'blockquote':true + } + }; + this.replacingElements = { + 'h1':this.replacingElements.h1, + 'h2':this.replacingElements.h1, + 'h3':this.replacingElements.h1, + 'h4':this.replacingElements.h1, + 'h5':this.replacingElements.h1, + 'h6':this.replacingElements.h1, + 'pre':this.replacingElements.h1, + 'p':this.replacingElements.h1, + 'blockquote':this.replacingElements.h1 + }; + this.allowedToStealElements = { + 'h1':{ + 'textNode':true + } + }; + this.allowedToStealElements = { + 'h1':this.allowedToStealElements.h1, + 'h2':this.allowedToStealElements.h1, + 'h3':this.allowedToStealElements.h1, + 'h4':this.allowedToStealElements.h1, + 'h5':this.allowedToStealElements.h1, + 'h6':this.allowedToStealElements.h1, + 'p':this.tagHierarchy.b + }; + }, + + /** + * Class definition of a SelectionTree (relevant for all formatting / markup changes) + * TODO: remove this (was moved to range.js) + * Structure: + * + + * |-domobj: (NOT jQuery) + * |-selection: defines if this node is marked by user [none|partial|full] + * |-children: recursive structure like this + * @hide + */ + SelectionTree:function () { + this.domobj = {}; + this.selection = undefined; + this.children = []; + }, + + /** + * INFO: Method is used for integration with Gentics Aloha, has no use otherwise + * Updates the rangeObject according to the current user selection + * Method is always called on selection change + * @param objectClicked Object that triggered the selectionChange event + * @return true when rangeObject was modified, false otherwise + * @hide + */ + onChange:function (objectClicked, event, timeout) { + if (this.updateSelectionTimeout) { + window.clearTimeout(this.updateSelectionTimeout); + } + + // We have to update the selection in a timeout due to an IE + // bug that is is caused by selecting some text and then + // clicking once inside the selection (which collapses the + // selection inside the previous selection). + var selection = this; + this.updateSelectionTimeout = window.setTimeout(function () { + var range = new Aloha.Selection.SelectionRange(true); + // We have to work around an IE bug that causes the user + // selection to be incorrectly set on the body element + // when the updateSelectionTimeout triggers. The + // selection corrects itself after waiting a while. + if (!range.startContainer || 'HTML' === range.startContainer.nodeName || 'BODY' === range.startContainer.nodeName) { + if (!this.updateSelectionTimeout) { + // First wait 5 millis, then 20 millis, 50 millis, 110 millis etc. + selection.onChange(objectClicked, event, 10 + (timeout || 5) * 2); + } + return; + } + Aloha.Selection._updateSelection(event, range); + }, timeout || 5); + }, + + /** + * prevents the next aloha-selection-changed event from being triggered + */ + preventSelectionChanged:function () { + this.preventSelectionChangedFlag = true; + }, + + /** + * will return wheter selection change event was prevented or not, and reset the preventSelectionChangedFlag + * @return {Boolean} true if aloha-selection-change event was prevented + */ + isSelectionChangedPrevented:function () { + var prevented = this.preventSelectionChangedFlag; + this.preventSelectionChangedFlag = false; + return prevented; + }, + + /** + * Checks if the current rangeObject common ancector container is edtiable + * @return {Boolean} true if current common ancestor is editable + */ + isSelectionEditable:function () { + return (this.rangeObject.commonAncestorContainer && jQuery(this.rangeObject.commonAncestorContainer).contentEditable()); + }, + + /** + * This method checks, if the current rangeObject common ancestor container has a 'data-aloha-floatingmenu-visible' Attribute. + * Needed in Floating Menu for exceptional display of floatingmenu. + */ + isFloatingMenuVisible:function () { + var visible = jQuery(Aloha.Selection.rangeObject.commonAncestorContainer).attr('data-aloha-floatingmenu-visible'); + if (visible !== 'undefined') { + if (visible === 'true') { + return true; + } + return false; + } + return false; + }, + + /** + * INFO: Method is used for integration with Gentics Aloha, has no use otherwise + * Updates the rangeObject according to the current user selection + * Method is always called on selection change + * @param event jQuery browser event object + * @return true when rangeObject was modified, false otherwise + * @hide + */ + updateSelection:function (event) { + return this._updateSelection(event, null); + }, + + /** + * Internal version of updateSelection that adds the range parameter to be + * able to work around an IE bug that caused the current user selection + * sometimes to be on the body element. + * @param {Object} event + * @param {Object} range a substitute for the current user selection. if not provided, + * the current user selection will be used. + * @hide + */ + _updateSelection:function (event, range) { + if (event && event.originalEvent && + true === event.originalEvent.stopSelectionUpdate) { + return false; + } + + if (typeof range === 'undefined') { + return false; + } + + this.rangeObject = range = + range || new Aloha.Selection.SelectionRange(true); + + // Determine the common ancestor container and update the selection + // tree. + range.update(); + + // Workaround for nasty IE bug that allows the user to select + // text nodes inside areas with contenteditable "false" + if (range && range.startContainer && range.endContainer) { + var inEditable = + jQuery(range.commonAncestorContainer) + .closest('.aloha-editable').length > 0; + + if (inEditable) { + var validStartPosition = !(3 === range.startContainer.nodeType && !jQuery(range.startContainer.parentNode).contentEditable()); + + var validEndPosition = !(3 === range.endContainer.nodeType && !jQuery(range.endContainer.parentNode).contentEditable()); + + if (!validStartPosition || !validEndPosition) { + Aloha.getSelection().removeAllRanges(); + return true; + } + } + } + + // check if aloha-selection-changed event has been prevented + if (this.isSelectionChangedPrevented()) { + return true; + } + + Aloha.trigger('aloha-selection-changed-before', [this.rangeObject, event]); + + // throw the event that the selection has changed. Plugins now have the + // chance to react on the currentElements[childCount].children.lengthged selection + Aloha.trigger('aloha-selection-changed', [this.rangeObject, event]); + + triggerSelectionContextChanged(this.rangeObject, event); + + Aloha.trigger('aloha-selection-changed-after', [this.rangeObject, event]); + + return true; + }, + + /** + * creates an object with x items containing all relevant dom objects. + * Structure: + * + + * |-domobj: (NOT jQuery) + * |-selection: defines if this node is marked by user [none|partial|full] + * |-children: recursive structure like this ("x.." because it's then shown last in DOM Browsers...) + * TODO: remove this (was moved to range.js) + * + * @param rangeObject "Aloha clean" range object including a commonAncestorContainer + * @return obj selection + * @hide + */ + getSelectionTree:function (rangeObject) { + if (!rangeObject) { // if called without any parameters, the method acts as getter for this.selectionTree + return this.rangeObject.getSelectionTree(); + } + if (!rangeObject.commonAncestorContainer) { + Aloha.Log.error(this, 'the rangeObject is missing the commonAncestorContainer'); + return false; + } + + this.inselection = false; + + // before getting the selection tree, we do a cleanup + if (GENTICS.Utils.Dom.doCleanup({ 'merge':true }, rangeObject)) { + rangeObject.update(); + rangeObject.select(); + } + + return this.recursiveGetSelectionTree(rangeObject, rangeObject.commonAncestorContainer); + }, + + /** + * Recursive inner function for generating the selection tree. + * TODO: remove this (was moved to range.js) + * @param rangeObject range object + * @param currentObject current DOM object for which the selection tree shall be generated + * @return array of SelectionTree objects for the children of the current DOM object + * @hide + */ + recursiveGetSelectionTree:function (rangeObject, currentObject) { + // get all direct children of the given object + var jQueryCurrentObject = jQuery(currentObject), + childCount = 0, + that = this, + currentElements = []; + + jQueryCurrentObject.contents().each(function (index) { + var selectionType = 'none', + startOffset = false, + endOffset = false, + collapsedFound = false, + i, + elementsLength, + noneFound = false, + partialFound = false, + fullFound = false; + + // check for collapsed selections between nodes + if (rangeObject.isCollapsed() && currentObject === rangeObject.startContainer && rangeObject.startOffset == index) { + // insert an extra selectiontree object for the collapsed selection here + currentElements[childCount] = new Aloha.Selection.SelectionTree(); + currentElements[childCount].selection = 'collapsed'; + currentElements[childCount].domobj = undefined; + that.inselection = false; + collapsedFound = true; + childCount++; + } + + if (!that.inselection && !collapsedFound) { + // the start of the selection was not yet found, so look for it now + // check whether the start of the selection is found here + + // Try to read the nodeType property and return if we do not have permission + // ie.: frame document to an external URL + var nodeType; + try { + nodeType = this.nodeType; + } catch (e) { + return; + } + + // check is dependent on the node type + switch (nodeType) { + case 3: + // text node + if (this === rangeObject.startContainer) { + // the selection starts here + that.inselection = true; + + // when the startoffset is > 0, the selection type is only partial + selectionType = rangeObject.startOffset > 0 ? 'partial' : 'full'; + startOffset = rangeObject.startOffset; + endOffset = this.length; + } + break; + case 1: + // element node + if (this === rangeObject.startContainer && rangeObject.startOffset === 0) { + // the selection starts here + that.inselection = true; + selectionType = 'full'; + } + if (currentObject === rangeObject.startContainer && rangeObject.startOffset === index) { + // the selection starts here + that.inselection = true; + selectionType = 'full'; + } + break; + } + } + + if (that.inselection && !collapsedFound) { + if (selectionType == 'none') { + selectionType = 'full'; + } + // we already found the start of the selection, so look for the end of the selection now + // check whether the end of the selection is found here + + switch (this.nodeType) { + case 3: + // text node + if (this === rangeObject.endContainer) { + // the selection ends here + that.inselection = false; + + // check for partial selection here + if (rangeObject.endOffset < this.length) { + selectionType = 'partial'; + } + if (startOffset === false) { + startOffset = 0; + } + endOffset = rangeObject.endOffset; + } + break; + case 1: + // element node + if (this === rangeObject.endContainer && rangeObject.endOffset === 0) { + that.inselection = false; + } + break; + } + if (currentObject === rangeObject.endContainer && rangeObject.endOffset <= index) { + that.inselection = false; + selectionType = 'none'; + } + } + + // create the current selection tree entry + currentElements[childCount] = new Aloha.Selection.SelectionTree(); + currentElements[childCount].domobj = this; + currentElements[childCount].selection = selectionType; + if (selectionType == 'partial') { + currentElements[childCount].startOffset = startOffset; + currentElements[childCount].endOffset = endOffset; + } + + // now do the recursion step into the current object + currentElements[childCount].children = that.recursiveGetSelectionTree(rangeObject, this); + elementsLength = currentElements[childCount].children.length; + + // check whether a selection was found within the children + if (elementsLength > 0) { + for (i = 0; i < elementsLength; ++i) { + switch (currentElements[childCount].children[i].selection) { + case 'none': + noneFound = true; + break; + case 'full': + fullFound = true; + break; + case 'partial': + partialFound = true; + break; + } + } + + if (partialFound || (fullFound && noneFound)) { + // found at least one 'partial' selection in the children, or both 'full' and 'none', so this element is also 'partial' selected + currentElements[childCount].selection = 'partial'; + } else if (fullFound && !partialFound && !noneFound) { + // only found 'full' selected children, so this element is also 'full' selected + currentElements[childCount].selection = 'full'; + } + } + + childCount++; + }); + + // extra check for collapsed selections at the end of the current element + if (rangeObject.isCollapsed() && currentObject === rangeObject.startContainer && rangeObject.startOffset == currentObject.childNodes.length) { + currentElements[childCount] = new Aloha.Selection.SelectionTree(); + currentElements[childCount].selection = 'collapsed'; + currentElements[childCount].domobj = undefined; + } + + return currentElements; + }, + + /** + * Get the currently selected range + * @return {Aloha.Selection.SelectionRange} currently selected range + * @method + */ + getRangeObject:function () { + return this.rangeObject; + }, + + /** + * method finds out, if a node is within a certain markup or not + * @param rangeObj Aloha rangeObject + * @param startOrEnd boolean; defines, if start or endContainer should be used: false for start, true for end + * @param markupObject jQuery object of the markup to look for + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @param limitObject dom object which limits the search are within the dom. normally this will be the active Editable + * @return true, if the markup is effective on the range objects start or end node + * @hide + */ + isRangeObjectWithinMarkup:function (rangeObject, startOrEnd, markupObject, tagComparator, limitObject) { + var domObj = !startOrEnd ? rangeObject.startContainer : rangeObject.endContainer, + that = this, + parents = jQuery(domObj).parents(), + returnVal = false, + i = -1; + + // check if a comparison method was passed as parameter ... + if (typeof tagComparator !== 'undefined' && typeof tagComparator !== 'function') { + Aloha.Log.error(this, 'parameter tagComparator is not a function'); + } + // ... if not use this as standard tag comparison method + if (typeof tagComparator === 'undefined') { + tagComparator = function (domobj, markupObject) { + return that.standardTextLevelSemanticsComparator(domobj, markupObject); // TODO should actually be this.getStandardTagComparator(markupObject) + }; + } + + if (parents.length > 0) { + parents.each(function () { + // the limit object was reached (normally the Editable Element) + if (this === limitObject) { + Aloha.Log.debug(that, 'reached limit dom obj'); + return false; // break() of jQuery .each(); THIS IS NOT THE FUNCTION RETURN VALUE + } + if (tagComparator(this, markupObject)) { + if (returnVal === false) { + returnVal = []; + } + Aloha.Log.debug(that, 'reached object equal to markup'); + i++; + returnVal[i] = this; + return true; // continue() of jQuery .each(); THIS IS NOT THE FUNCTION RETURN VALUE + } + }); + } + return returnVal; + }, + + /** + * standard method, to compare a domobj and a jquery object for sections and grouping content (e.g. p, h1, h2, ul, ....). + * is always used when no other tag comparator is passed as parameter + * @param domobj domobject to compare with markup + * @param markupObject jQuery object of the markup to compare with domobj + * @return true if objects are equal and false if not + * @hide + */ + standardSectionsAndGroupingContentComparator:function (domobj, markupObject) { + if (domobj.nodeType !== 1) { + Aloha.Log.debug(this, 'only element nodes (nodeType == 1) can be compared'); + return false; + } + if (!markupObject[0].nodeName) { + return false; + } + var elemMap = Aloha.Selection.replacingElements[domobj.nodeName.toLowerCase()]; + return elemMap && elemMap[markupObject[0].nodeName.toLowerCase()]; + }, + + /** + * standard method, to compare a domobj and a jquery object for their tagName (aka span elements, e.g. b, i, sup, span, ...). + * is always used when no other tag comparator is passed as parameter + * @param domobj domobject to compare with markup + * @param markupObject jQuery object of the markup to compare with domobj + * @return true if objects are equal and false if not + * @hide + */ + standardTagNameComparator:function (domobj, markupObject) { + if (domobj.nodeType === 1) { + if (domobj.nodeName != markupObject[0].nodeName) { + return false; + } + return true; + } + Aloha.Log.debug(this, 'only element nodes (nodeType == 1) can be compared'); + return false; + }, + + /** + * standard method, to compare a domobj and a jquery object for text level semantics (aka span elements, e.g. b, i, sup, span, ...). + * is always used when no other tag comparator is passed as parameter + * @param domobj domobject to compare with markup + * @param markupObject jQuery object of the markup to compare with domobj + * @return true if objects are equal and false if not + * @hide + */ + standardTextLevelSemanticsComparator:function (domobj, markupObject) { + // only element nodes can be compared + if (domobj.nodeType === 1) { + if (domobj.nodeName != markupObject[0].nodeName) { + return false; + } + if (!this.standardAttributesComparator(domobj, markupObject)) { + return false; + } + return true; + } + Aloha.Log.debug(this, 'only element nodes (nodeType == 1) can be compared'); + return false; + }, + + + /** + * standard method, to compare attributes of one dom obj and one markup obj (jQuery) + * @param domobj domobject to compare with markup + * @param markupObject jQuery object of the markup to compare with domobj + * @return true if objects are equal and false if not + * @hide + */ + standardAttributesComparator:function (domobj, markupObject) { + var classesA = Strings.words((domobj && domobj.className) || ''); + var classesB = Strings.words((markupObject.length && markupObject[0].className) || ''); + Arrays.sortUnique(classesA); + Arrays.sortUnique(classesB); + return Arrays.equal(classesA, classesB); + }, + + /** + * method finds out, if a node is within a certain markup or not + * @param rangeObj Aloha rangeObject + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return void; TODO: should return true if the markup applied successfully and false if not + * @hide + */ + changeMarkup:function (rangeObject, markupObject, tagComparator) { + var tagName = markupObject[0].tagName.toLowerCase(), + newCAC, + limitObject, + backupRangeObject, + relevantMarkupObjectsAtSelectionStart = this.isRangeObjectWithinMarkup(rangeObject, false, markupObject, tagComparator, limitObject), + relevantMarkupObjectsAtSelectionEnd = this.isRangeObjectWithinMarkup(rangeObject, true, markupObject, tagComparator, limitObject), + nextSibling, + relevantMarkupObjectAfterSelection, + prevSibling, + relevantMarkupObjectBeforeSelection, + extendedRangeObject; + var parentElement; + + // if the element is a replacing element (like p/h1/h2/h3/h4/h5/h6...), which must not wrap each other + // use a clone of rangeObject + if (this.replacingElements[tagName]) { + // backup rangeObject for later selection; + backupRangeObject = rangeObject; + + // create a new range object to not modify the orginal + rangeObject = new this.SelectionRange(rangeObject); + + // either select the active Editable as new commonAncestorContainer (CAC) or use the body + if (Aloha.activeEditable) { + newCAC = Aloha.activeEditable.obj.get(0); + } else { + newCAC = jQuery('body'); + } + // update rangeObject by setting the newCAC and automatically recalculating the selectionTree + rangeObject.update(newCAC); + + // store the information, that the markupObject can be replaced (not must be!!) inside the jQuery markup object + markupObject.isReplacingElement = true; + } else { + // if the element is NOT a replacing element, then something needs to be selected, otherwise it can not be wrapped + // therefor the method can return false, if nothing is selected ( = rangeObject is collapsed) + if (rangeObject.isCollapsed()) { + Aloha.Log.debug(this, 'early returning from applying markup because nothing is currently selected'); + return false; + } + } + + // is Start/End DOM Obj inside the markup to change + if (Aloha.activeEditable) { + limitObject = Aloha.activeEditable.obj[0]; + } else { + limitObject = jQuery('body'); + } + + if (!markupObject.isReplacingElement && rangeObject.startOffset === 0) { // don't care about replacers, because they never extend + if (null != (prevSibling = this.getTextNodeSibling(false, rangeObject.commonAncestorContainer.parentNode, rangeObject.startContainer))) { + relevantMarkupObjectBeforeSelection = this.isRangeObjectWithinMarkup({ + startContainer:prevSibling, + startOffset:0 + }, false, markupObject, tagComparator, limitObject); + } + } + if (!markupObject.isReplacingElement && (rangeObject.endOffset === rangeObject.endContainer.length)) { // don't care about replacers, because they never extend + if (null != (nextSibling = this.getTextNodeSibling(true, rangeObject.commonAncestorContainer.parentNode, rangeObject.endContainer))) { + relevantMarkupObjectAfterSelection = this.isRangeObjectWithinMarkup({ + startContainer:nextSibling, + startOffset:0 + }, false, markupObject, tagComparator, limitObject); + } + } + + // decide what to do (expand or reduce markup) + // Alternative A: from markup to no-markup: markup will be removed in selection; + // reapplied from original markup start to selection start + if (!markupObject.isReplacingElement && (relevantMarkupObjectsAtSelectionStart && !relevantMarkupObjectsAtSelectionEnd)) { + Aloha.Log.info(this, 'markup 2 non-markup'); + this.prepareForRemoval(rangeObject.getSelectionTree(), markupObject, tagComparator); + jQuery(relevantMarkupObjectsAtSelectionStart).addClass('preparedForRemoval'); + this.insertCroppedMarkups(relevantMarkupObjectsAtSelectionStart, rangeObject, false, tagComparator); + } else if (!markupObject.isReplacingElement && relevantMarkupObjectsAtSelectionStart && relevantMarkupObjectsAtSelectionEnd) { + // Alternative B: from markup to markup: + // remove selected markup (=split existing markup if single, shrink if two different) + Aloha.Log.info(this, 'markup 2 markup'); + this.prepareForRemoval(rangeObject.getSelectionTree(), markupObject, tagComparator); + this.splitRelevantMarkupObject(relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd, rangeObject, tagComparator); + } else if (!markupObject.isReplacingElement && ((!relevantMarkupObjectsAtSelectionStart && relevantMarkupObjectsAtSelectionEnd) || relevantMarkupObjectAfterSelection || relevantMarkupObjectBeforeSelection)) { // + // Alternative C: from no-markup to markup OR with next2markup: + // new markup is wrapped from selection start to end of originalmarkup, original is remove afterwards + Aloha.Log.info(this, 'non-markup 2 markup OR with next2markup'); + // move end of rangeObject to end of relevant markups + if (relevantMarkupObjectBeforeSelection && relevantMarkupObjectAfterSelection) { + extendedRangeObject = new Aloha.Selection.SelectionRange(rangeObject); + extendedRangeObject.startContainer = jQuery(relevantMarkupObjectBeforeSelection[relevantMarkupObjectBeforeSelection.length - 1]).textNodes()[0]; + extendedRangeObject.startOffset = 0; + extendedRangeObject.endContainer = jQuery(relevantMarkupObjectAfterSelection[relevantMarkupObjectAfterSelection.length - 1]).textNodes().last()[0]; + extendedRangeObject.endOffset = extendedRangeObject.endContainer.length; + extendedRangeObject.update(); + this.applyMarkup(extendedRangeObject.getSelectionTree(), rangeObject, markupObject, tagComparator); + Aloha.Log.info(this, 'double extending previous markup(previous and after selection), actually wrapping it ...'); + + } else if (relevantMarkupObjectBeforeSelection && !relevantMarkupObjectAfterSelection && !relevantMarkupObjectsAtSelectionEnd) { + this.extendExistingMarkupWithSelection(relevantMarkupObjectBeforeSelection, rangeObject, false, tagComparator); + Aloha.Log.info(this, 'extending previous markup'); + + } else if (relevantMarkupObjectBeforeSelection && !relevantMarkupObjectAfterSelection && relevantMarkupObjectsAtSelectionEnd) { + extendedRangeObject = new Aloha.Selection.SelectionRange(rangeObject); + extendedRangeObject.startContainer = jQuery(relevantMarkupObjectBeforeSelection[relevantMarkupObjectBeforeSelection.length - 1]).textNodes()[0]; + extendedRangeObject.startOffset = 0; + extendedRangeObject.endContainer = jQuery(relevantMarkupObjectsAtSelectionEnd[relevantMarkupObjectsAtSelectionEnd.length - 1]).textNodes().last()[0]; + extendedRangeObject.endOffset = extendedRangeObject.endContainer.length; + extendedRangeObject.update(); + this.applyMarkup(extendedRangeObject.getSelectionTree(), rangeObject, markupObject, tagComparator); + Aloha.Log.info(this, 'double extending previous markup(previous and relevant at the end), actually wrapping it ...'); + + } else if (!relevantMarkupObjectBeforeSelection && relevantMarkupObjectAfterSelection) { + this.extendExistingMarkupWithSelection(relevantMarkupObjectAfterSelection, rangeObject, true, tagComparator); + Aloha.Log.info(this, 'extending following markup backwards'); + + } else { + this.extendExistingMarkupWithSelection(relevantMarkupObjectsAtSelectionEnd, rangeObject, true, tagComparator); + } + } else if (markupObject.isReplacingElement || (!relevantMarkupObjectsAtSelectionStart && !relevantMarkupObjectsAtSelectionEnd && !relevantMarkupObjectBeforeSelection && !relevantMarkupObjectAfterSelection)) { + // Alternative D: no-markup to no-markup: easy + Aloha.Log.info(this, 'non-markup 2 non-markup'); + + // workaround to keep the caret at the right position if it's an empty element + // applyMarkup was not working correctly and has a lot of overhead we don't need in that case + if (isCollapsedAndEmptyOrEndBr(rangeObject)) { + var newMarkup = markupObject.clone(); + + if (isCollapsedAndEndBr(rangeObject)) { + newMarkup[0].appendChild(Engine.createEndBreak()); + } + + // setting the focus is needed for mozilla and IE 7 to have a working rangeObject.select() + if (Aloha.activeEditable && jQuery.browser.mozilla) { + Aloha.activeEditable.obj.focus(); + } + + if (Engine.isEditable(rangeObject.startContainer)) { + Engine.copyAttributes(rangeObject.startContainer, newMarkup[0]); + jQuery(rangeObject.startContainer).after(newMarkup[0]).remove(); + } else if (Engine.isEditingHost(rangeObject.startContainer)) { + jQuery(rangeObject.startContainer).append(newMarkup[0]); + Engine.ensureContainerEditable(newMarkup[0]); + } + + backupRangeObject.startContainer = newMarkup[0]; + backupRangeObject.endContainer = newMarkup[0]; + backupRangeObject.startOffset = 0; + backupRangeObject.endOffset = 0; + return; + } + this.applyMarkup(rangeObject.getSelectionTree(), rangeObject, markupObject, tagComparator, { + setRangeObject2NewMarkup:true + }); + backupRangeObject.startContainer = rangeObject.startContainer; + backupRangeObject.endContainer = rangeObject.endContainer; + backupRangeObject.startOffset = rangeObject.startOffset; + backupRangeObject.endOffset = rangeObject.endOffset; + } + + if (markupObject.isReplacingElement) { + //Check if the startContainer is one of the zapped elements + if (backupRangeObject && backupRangeObject.startContainer.className && backupRangeObject.startContainer.className.indexOf('preparedForRemoval') > -1) { + //var parentElement = jQuery(backupRangeObject.startContainer).closest(markupObject[0].tagName).get(0); + parentElement = jQuery(backupRangeObject.startContainer).parents(markupObject[0].tagName).get(0); + backupRangeObject.startContainer = parentElement; + rangeObject.startContainer = parentElement; + } + //check if the endContainer is one of the zapped elements + if (backupRangeObject && backupRangeObject.endContainer.className && backupRangeObject.endContainer.className.indexOf('preparedForRemoval') > -1) { + //var parentElement = jQuery(backupRangeObject.endContainer).closest(markupObject[0].tagName).get(0); + parentElement = jQuery(backupRangeObject.endContainer).parents(markupObject[0].tagName).get(0); + backupRangeObject.endContainer = parentElement; + rangeObject.endContainer = parentElement; + } + } + // remove all marked items + jQuery('.preparedForRemoval').zap(); + + // recalculate cac and selectionTree + + // update selection + if (markupObject.isReplacingElement) { + //After the zapping we have to check for wrong offsets + if (e5s.Node.ELEMENT_NODE === backupRangeObject.startContainer.nodeType && backupRangeObject.startContainer.childNodes && backupRangeObject.startContainer.childNodes.length < backupRangeObject.startOffset) { + backupRangeObject.startOffset = backupRangeObject.startContainer.childNodes.length; + rangeObject.startOffset = backupRangeObject.startContainer.childNodes.length; + } + if (e5s.Node.ELEMENT_NODE === backupRangeObject.endContainer.nodeType && backupRangeObject.endContainer.childNodes && backupRangeObject.endContainer.childNodes.length < backupRangeObject.endOffset) { + backupRangeObject.endOffset = backupRangeObject.endContainer.childNodes.length; + rangeObject.endOffset = backupRangeObject.endContainer.childNodes.length; + } + rangeObject.endContainer = backupRangeObject.endContainer; + rangeObject.endOffset = backupRangeObject.endOffset; + rangeObject.startContainer = backupRangeObject.startContainer; + rangeObject.startOffset = backupRangeObject.startOffset; + backupRangeObject.update(); + backupRangeObject.select(); + } else { + rangeObject.update(); + rangeObject.select(); + } + }, + + /** + * method compares a JS array of domobjects with a range object and decides, if the rangeObject spans the whole markup objects. method is used to decide if a markup2markup selection can be completely remove or if it must be splitted into 2 separate markups + * @param relevantMarkupObjectsAtSelectionStart JS Array of dom objects, which are parents to the rangeObject.startContainer + * @param relevantMarkupObjectsAtSelectionEnd JS Array of dom objects, which are parents to the rangeObject.endContainer + * @param rangeObj Aloha rangeObject + * @return true, if rangeObjects and markup objects are identical, false otherwise + * @hide + */ + areMarkupObjectsAsLongAsRangeObject:function (relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd, rangeObject) { + var i, el, textNode, relMarkupEnd, relMarkupStart; + + if (rangeObject.startOffset !== 0) { + return false; + } + + for (i = 0, relMarkupStart = relevantMarkupObjectsAtSelectionStart.length; i < relMarkupStart; i++) { + el = jQuery(relevantMarkupObjectsAtSelectionStart[i]); + if (el.textNodes().first()[0] !== rangeObject.startContainer) { + return false; + } + } + + for (i = 0, relMarkupEnd = relevantMarkupObjectsAtSelectionEnd.length; i < relMarkupEnd; i++) { + el = jQuery(relevantMarkupObjectsAtSelectionEnd[i]); + textNode = el.textNodes().last()[0]; + if (textNode !== rangeObject.endContainer || textNode.length != rangeObject.endOffset) { + return false; + } + } + + return true; + }, + + /** + * method used to remove/split markup from a "markup2markup" selection + * @param relevantMarkupObjectsAtSelectionStart JS Array of dom objects, which are parents to the rangeObject.startContainer + * @param relevantMarkupObjectsAtSelectionEnd JS Array of dom objects, which are parents to the rangeObject.endContainer + * @param rangeObj Aloha rangeObject + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return true (always, since no "false" case is currently known...but might be added) + * @hide + */ + splitRelevantMarkupObject:function (relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd, rangeObject, tagComparator) { + // mark them to be deleted + jQuery(relevantMarkupObjectsAtSelectionStart).addClass('preparedForRemoval'); + jQuery(relevantMarkupObjectsAtSelectionEnd).addClass('preparedForRemoval'); + + // check if the rangeObject is identical with the relevantMarkupObjects (in this case the markup can simply be removed) + if (this.areMarkupObjectsAsLongAsRangeObject(relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd, rangeObject)) { + return true; + } + + // find intersection (this can always only be one dom element (namely the highest) because all others will be removed + var relevantMarkupObjectAtSelectionStartAndEnd = this.intersectRelevantMarkupObjects(relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd); + + if (relevantMarkupObjectAtSelectionStartAndEnd) { + this.insertCroppedMarkups([relevantMarkupObjectAtSelectionStartAndEnd], rangeObject, false, tagComparator); + this.insertCroppedMarkups([relevantMarkupObjectAtSelectionStartAndEnd], rangeObject, true, tagComparator); + } else { + this.insertCroppedMarkups(relevantMarkupObjectsAtSelectionStart, rangeObject, false, tagComparator); + this.insertCroppedMarkups(relevantMarkupObjectsAtSelectionEnd, rangeObject, true, tagComparator); + } + return true; + }, + + /** + * method takes two arrays of bottom up dom objects, compares them and returns either the object closest to the root or false + * @param relevantMarkupObjectsAtSelectionStart JS Array of dom objects + * @param relevantMarkupObjectsAtSelectionEnd JS Array of dom objects + * @return dom object closest to the root or false + * @hide + */ + intersectRelevantMarkupObjects:function (relevantMarkupObjectsAtSelectionStart, relevantMarkupObjectsAtSelectionEnd) { + var intersection = false, i, elStart, j, elEnd, relMarkupStart, relMarkupEnd; + if (!relevantMarkupObjectsAtSelectionStart || !relevantMarkupObjectsAtSelectionEnd) { + return intersection; // we can only intersect, if we have to arrays! + } + relMarkupStart = relevantMarkupObjectsAtSelectionStart.length; + relMarkupEnd = relevantMarkupObjectsAtSelectionEnd.length; + for (i = 0; i < relMarkupStart; i++) { + elStart = relevantMarkupObjectsAtSelectionStart[i]; + for (j = 0; j < relMarkupEnd; j++) { + elEnd = relevantMarkupObjectsAtSelectionEnd[j]; + if (elStart === elEnd) { + intersection = elStart; + } + } + } + return intersection; + }, + + /** + * method used to add markup to a nonmarkup2markup selection + * @param relevantMarkupObjects JS Array of dom objects effecting either the start or endContainer of a selection (which should be extended) + * @param rangeObject Aloha rangeObject the markups should be extended to + * @param startOrEnd boolean; defines, if the existing markups should be extended forwards or backwards (is propably redundant and could be found out by comparing start or end container with the markup array dom objects) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return true + * @hide + */ + extendExistingMarkupWithSelection:function (relevantMarkupObjects, rangeObject, startOrEnd, tagComparator) { + var extendMarkupsAtStart, extendMarkupsAtEnd, objects, i, relMarkupLength, el, textnodes, nodeNr; + if (!startOrEnd) { // = Start + // start part of rangeObject should be used, therefor existing markups are cropped at the end + extendMarkupsAtStart = true; + } + if (startOrEnd) { // = End + // end part of rangeObject should be used, therefor existing markups are cropped at start (beginning) + extendMarkupsAtEnd = true; + } + objects = []; + for (i = 0, relMarkupLength = relevantMarkupObjects.length; i < relMarkupLength; i++) { + objects[i] = new this.SelectionRange(); + el = relevantMarkupObjects[i]; + if (extendMarkupsAtEnd && !extendMarkupsAtStart) { + objects[i].startContainer = rangeObject.startContainer; // jQuery(el).contents()[0]; + objects[i].startOffset = rangeObject.startOffset; + textnodes = jQuery(el).textNodes(true); + + nodeNr = textnodes.length - 1; + objects[i].endContainer = textnodes[nodeNr]; + objects[i].endOffset = textnodes[nodeNr].length; + objects[i].update(); + this.applyMarkup(objects[i].getSelectionTree(), rangeObject, this.getClonedMarkup4Wrapping(el), tagComparator, { + setRangeObject2NewMarkup:true + }); + } + if (!extendMarkupsAtEnd && extendMarkupsAtStart) { + textnodes = jQuery(el).textNodes(true); + objects[i].startContainer = textnodes[0]; // jQuery(el).contents()[0]; + objects[i].startOffset = 0; + objects[i].endContainer = rangeObject.endContainer; + objects[i].endOffset = rangeObject.endOffset; + objects[i].update(); + this.applyMarkup(objects[i].getSelectionTree(), rangeObject, this.getClonedMarkup4Wrapping(el), tagComparator, { + setRangeObject2NewMarkup:true + }); + } + } + return true; + }, + + /** + * method creates an empty markup jQuery object from a dom object passed as paramter + * @param domobj domobject to be cloned, cleaned and emptied + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return jQuery wrapper object to be passed to e.g. this.applyMarkup(...) + * @hide + */ + getClonedMarkup4Wrapping:function (domobj) { + var wrapper = jQuery(domobj.outerHTML).removeClass('preparedForRemoval').empty(); + if (wrapper.attr('class').length === 0) { + wrapper.removeAttr('class'); + } + return wrapper; + }, + + /** + * method used to subtract the range object from existing markup. in other words: certain markup is removed from the selections defined by the rangeObject + * @param relevantMarkupObjects JS Array of dom objects effecting either the start or endContainer of a selection (which should be extended) + * @param rangeObject Aloha rangeObject the markups should be removed from + * @param startOrEnd boolean; defines, if the existing markups should be reduced at the beginning of the tag or at the end (is propably redundant and could be found out by comparing start or end container with the markup array dom objects) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return true + * @hide + */ + insertCroppedMarkups:function (relevantMarkupObjects, rangeObject, startOrEnd, tagComparator) { + var cropMarkupsAtEnd, cropMarkupsAtStart, textnodes, objects, i, el, textNodes; + if (!startOrEnd) { // = Start + // start part of rangeObject should be used, therefor existing markups are cropped at the end + cropMarkupsAtEnd = true; + } else { // = End + // end part of rangeObject should be used, therefor existing markups are cropped at start (beginning) + cropMarkupsAtStart = true; + } + objects = []; + for (i = 0; i < relevantMarkupObjects.length; i++) { + objects[i] = new this.SelectionRange(); + el = relevantMarkupObjects[i]; + if (cropMarkupsAtEnd && !cropMarkupsAtStart) { + textNodes = jQuery(el).textNodes(true); + objects[i].startContainer = textNodes[0]; + objects[i].startOffset = 0; + // if the existing markup startContainer & startOffset are equal to the rangeObject startContainer and startOffset, + // then markupobject does not have to be added again, because it would have no content (zero-length) + if (objects[i].startContainer === rangeObject.startContainer && objects[i].startOffset === rangeObject.startOffset) { + continue; + } + if (rangeObject.startOffset === 0) { + objects[i].endContainer = this.getTextNodeSibling(false, el, rangeObject.startContainer); + objects[i].endOffset = objects[i].endContainer.length; + } else { + objects[i].endContainer = rangeObject.startContainer; + objects[i].endOffset = rangeObject.startOffset; + } + + objects[i].update(); + + this.applyMarkup(objects[i].getSelectionTree(), rangeObject, this.getClonedMarkup4Wrapping(el), tagComparator, { + setRangeObject2NextSibling:true + }); + } + + if (!cropMarkupsAtEnd && cropMarkupsAtStart) { + objects[i].startContainer = rangeObject.endContainer; // jQuery(el).contents()[0]; + objects[i].startOffset = rangeObject.endOffset; + textnodes = jQuery(el).textNodes(true); + objects[i].endContainer = textnodes[textnodes.length - 1]; + objects[i].endOffset = textnodes[textnodes.length - 1].length; + objects[i].update(); + this.applyMarkup(objects[i].getSelectionTree(), rangeObject, this.getClonedMarkup4Wrapping(el), tagComparator, { + setRangeObject2PreviousSibling:true + }); + } + } + return true; + }, + + /** + * apply a certain markup to the current selection + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @return void + * @hide + */ + changeMarkupOnSelection:function (markupObject) { + var rangeObject = this.getRangeObject(); + + // change the markup + this.changeMarkup(rangeObject, markupObject, this.getStandardTagComparator(markupObject)); + + // merge text nodes + GENTICS.Utils.Dom.doCleanup({ + 'merge':true + }, rangeObject); + + // update the range and select it + rangeObject.update(); + rangeObject.select(); + this.rangeObject = rangeObject; + }, + + /** + * apply a certain markup to the selection Tree + * @param selectionTree SelectionTree Object markup should be applied to + * @param rangeObject Aloha rangeObject which will be modified to reflect the dom changes, after the markup was applied (only if activated via options) + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @param options JS object, with the following boolean properties: setRangeObject2NewMarkup, setRangeObject2NextSibling, setRangeObject2PreviousSibling + * @return void + * @hide + */ + applyMarkup:function (selectionTree, rangeObject, markupObject, tagComparator, options) { + var optimizedSelectionTree, i, el, breakpoint; + options = options || {}; + // first same tags from within fully selected nodes for removal + this.prepareForRemoval(selectionTree, markupObject, tagComparator); + + // first let's optimize the selection Tree in useful groups which can be wrapped together + optimizedSelectionTree = this.optimizeSelectionTree4Markup(selectionTree, markupObject, tagComparator); + breakpoint = true; + + // now iterate over grouped elements and either recursively dive into object or wrap it as a whole + for (i = 0; i < optimizedSelectionTree.length; i++) { + el = optimizedSelectionTree[i]; + if (el.wrappable) { + this.wrapMarkupAroundSelectionTree(el.elements, rangeObject, markupObject, tagComparator, options); + } else { + Aloha.Log.debug(this, 'dive further into non-wrappable object'); + this.applyMarkup(el.element.children, rangeObject, markupObject, tagComparator, options); + } + } + }, + + /** + * returns the type of the given markup (trying to match HTML5) + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @return string name of the markup type + * @hide + */ + getMarkupType:function (markupObject) { + var nn = jQuery(markupObject)[0].nodeName.toLowerCase(); + if (markupObject.outerHtml) { + Aloha.Log.debug(this, 'Node name detected: ' + nn + ' for: ' + markupObject.outerHtml()); + } + if (nn == '#text') { + return 'textNode'; + } + if (this.replacingElements[nn]) { + return 'sectionOrGroupingContent'; + } + if (this.tagHierarchy[nn]) { + return 'textLevelSemantics'; + } + Aloha.Log.warn(this, 'unknown markup passed to this.getMarkupType(...): ' + markupObject.outerHtml()); + }, + + /** + * returns the standard tag comparator for the given markup object + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @return function tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @hide + */ + getStandardTagComparator:function (markupObject) { + var that = this, + result; + switch (this.getMarkupType(markupObject)) { + case 'textNode': + result = function (p1, p2) { + return false; + }; + break; + + case 'sectionOrGroupingContent': + result = function (domobj, markupObject) { + return that.standardSectionsAndGroupingContentComparator(domobj, markupObject); + }; + break; + + //case 'textLevelSemantics' covered by default + default: + result = function (domobj, markupObject) { + return that.standardTextLevelSemanticsComparator(domobj, markupObject); + }; + break; + } + return result; + }, + + /** + * searches for fully selected equal markup tags + * @param selectionTree SelectionTree Object markup should be applied to + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @return void + * @hide + */ + prepareForRemoval:function (selectionTree, markupObject, tagComparator) { + var that = this, i, el; + + // check if a comparison method was passed as parameter ... + if (typeof tagComparator !== 'undefined' && typeof tagComparator !== 'function') { + Aloha.Log.error(this, 'parameter tagComparator is not a function'); + } + // ... if not use this as standard tag comparison method + if (typeof tagComparator === 'undefined') { + tagComparator = this.getStandardTagComparator(markupObject); + } + for (i = 0; i < selectionTree.length; i++) { + el = selectionTree[i]; + if (el.domobj && (el.selection == 'full' || (el.selection == 'partial' && markupObject.isReplacingElement))) { + // mark for removal + if (el.domobj.nodeType === 1 && tagComparator(el.domobj, markupObject)) { + Aloha.Log.debug(this, 'Marking for removal: ' + el.domobj.nodeName); + jQuery(el.domobj).addClass('preparedForRemoval'); + } + } + if (el.selection != 'none' && el.children.length > 0) { + this.prepareForRemoval(el.children, markupObject, tagComparator); + } + + } + }, + + /** + * searches for fully selected equal markup tags + * @param selectionTree SelectionTree Object markup should be applied to + * @param rangeObject Aloha rangeObject the markup will be applied to + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @param tagComparator method, which is used to compare the dom object and the jQuery markup object. the method must accept 2 parameters, the first is the domobj, the second is the jquery object. if no method is specified, the method this.standardTextLevelSemanticsComparator is used + * @param options JS object, with the following boolean properties: setRangeObject2NewMarkup, setRangeObject2NextSibling, setRangeObject2PreviousSibling + * @return void + * @hide + */ + wrapMarkupAroundSelectionTree:function (selectionTree, rangeObject, markupObject, tagComparator, options) { + // first let's find out if theoretically the whole selection can be wrapped with one tag and save it for later use + var objects2wrap = [], // // this will be used later to collect objects + j = -1, // internal counter, + breakpoint = true, + preText = '', + postText = '', + prevOrNext, + textNode2Start, + textnodes, + newMarkup, + i, + el, + middleText; + + Aloha.Log.debug(this, 'The formatting <' + markupObject[0].tagName + '> will be wrapped around the selection'); + + // now lets iterate over the elements + for (i = 0; i < selectionTree.length; i++) { + el = selectionTree[i]; + + // check if markup is allowed inside the elements parent + if (el.domobj && !this.canTag1WrapTag2(el.domobj.parentNode.tagName.toLowerCase(), markupObject[0].tagName.toLowerCase())) { + Aloha.Log.info(this, 'Skipping the wrapping of <' + markupObject[0].tagName.toLowerCase() + '> because this tag is not allowed inside <' + el.domobj.parentNode.tagName.toLowerCase() + '>'); + continue; + } + + // skip empty text nodes + if (el.domobj && el.domobj.nodeType === 3 && jQuery.trim(el.domobj.nodeValue).length === 0) { + continue; + } + + // partial element, can either be a textnode and therefore be wrapped (at least partially) + // or can be a nodeType == 1 (tag) which must be dived into + if (el.domobj && el.selection == 'partial' && !markupObject.isReplacingElement) { + if (el.startOffset !== undefined && el.endOffset === undefined) { + j++; + preText += el.domobj.data.substr(0, el.startOffset); + el.domobj.data = el.domobj.data.substr(el.startOffset, el.domobj.data.length - el.startOffset); + objects2wrap[j] = el.domobj; + } else if (el.endOffset !== undefined && el.startOffset === undefined) { + j++; + postText += el.domobj.data.substr(el.endOffset, el.domobj.data.length - el.endOffset); + el.domobj.data = el.domobj.data.substr(0, el.endOffset); + objects2wrap[j] = el.domobj; + } else if (el.endOffset !== undefined && el.startOffset !== undefined) { + if (el.startOffset == el.endOffset) { // do not wrap empty selections + Aloha.Log.debug(this, 'skipping empty selection'); + continue; + } + j++; + preText += el.domobj.data.substr(0, el.startOffset); + middleText = el.domobj.data.substr(el.startOffset, el.endOffset - el.startOffset); + postText += el.domobj.data.substr(el.endOffset, el.domobj.data.length - el.endOffset); + el.domobj.data = middleText; + objects2wrap[j] = el.domobj; + } else { + // a partially selected item without selectionStart/EndOffset is a nodeType 1 Element on the way to the textnode + Aloha.Log.debug(this, 'diving into object'); + this.applyMarkup(el.children, rangeObject, markupObject, tagComparator, options); + } + } + // fully selected dom elements can be wrapped as whole element + if (el.domobj && (el.selection == 'full' || (el.selection == 'partial' && markupObject.isReplacingElement))) { + j++; + objects2wrap[j] = el.domobj; + } + } + + if (objects2wrap.length > 0) { + // wrap collected DOM object with markupObject + objects2wrap = jQuery(objects2wrap); + + // make a fix for text nodes in
  • 's in ie + jQuery.each(objects2wrap, function (index, element) { + if (jQuery.browser.msie && element.nodeType == 3 && !element.nextSibling && !element.previousSibling && element.parentNode && element.parentNode.nodeName.toLowerCase() == 'li') { + element.data = jQuery.trim(element.data); + } + }); + + newMarkup = objects2wrap.wrapAll(markupObject).parent(); + newMarkup.before(preText).after(postText); + + if (options.setRangeObject2NewMarkup) { // this is used, when markup is added to normal/normal Text + textnodes = objects2wrap.textNodes(); + + if (textnodes.index(rangeObject.startContainer) != -1) { + rangeObject.startOffset = 0; + } + if (textnodes.index(rangeObject.endContainer) != -1) { + rangeObject.endOffset = rangeObject.endContainer.length; + } + breakpoint = true; + } + if (options.setRangeObject2NextSibling) { + prevOrNext = true; + textNode2Start = newMarkup.textNodes(true).last()[0]; + if (objects2wrap.index(rangeObject.startContainer) != -1) { + rangeObject.startContainer = this.getTextNodeSibling(prevOrNext, newMarkup.parent(), textNode2Start); + rangeObject.startOffset = 0; + } + if (objects2wrap.index(rangeObject.endContainer) != -1) { + rangeObject.endContainer = this.getTextNodeSibling(prevOrNext, newMarkup.parent(), textNode2Start); + rangeObject.endOffset = rangeObject.endOffset - textNode2Start.length; + } + } + if (options.setRangeObject2PreviousSibling) { + prevOrNext = false; + textNode2Start = newMarkup.textNodes(true).first()[0]; + if (objects2wrap.index(rangeObject.startContainer) != -1) { + rangeObject.startContainer = this.getTextNodeSibling(prevOrNext, newMarkup.parent(), textNode2Start); + rangeObject.startOffset = 0; + } + if (objects2wrap.index(rangeObject.endContainer) != -1) { + rangeObject.endContainer = this.getTextNodeSibling(prevOrNext, newMarkup.parent(), textNode2Start); + rangeObject.endOffset = rangeObject.endContainer.length; + } + } + } + }, + + /** + * takes a text node and return either the next recursive text node sibling or the previous + * @param previousOrNext boolean, false for previous, true for next sibling + * @param commonAncestorContainer dom object to be used as root for the sibling search + * @param currentTextNode dom object of the originating text node + * @return dom object of the sibling text node + * @hide + */ + getTextNodeSibling:function (previousOrNext, commonAncestorContainer, currentTextNode) { + var textNodes = jQuery(commonAncestorContainer).textNodes(true), newIndex, index; + + index = textNodes.index(currentTextNode); + if (index == -1) { // currentTextNode was not found + return false; + } + newIndex = index + (!previousOrNext ? -1 : 1); + return textNodes[newIndex] || false; + }, + + /** + * takes a selection tree and groups it into markup wrappable selection trees + * @param selectionTree rangeObject selection tree + * @param markupObject jQuery object of the markup to be applied (e.g. created with obj = jQuery(''); ) + * @return JS array of wrappable selection trees + * @hide + */ + optimizeSelectionTree4Markup:function (selectionTree, markupObject, tagComparator) { + var groupMap = [], + outerGroupIndex = 0, + innerGroupIndex = 0, + that = this, + i, + j, + endPosition, + startPosition; + + if (typeof tagComparator === 'undefined') { + tagComparator = function (domobj, markupObject) { + return that.standardTextLevelSemanticsComparator(markupObject); + }; + } + for (i = 0; i < selectionTree.length; i++) { + // we are just interested in selected item, but not in non-selected items + if (selectionTree[i].domobj && selectionTree[i].selection != 'none') { + if (markupObject.isReplacingElement && tagComparator(markupObject[0], jQuery(selectionTree[i].domobj))) { + if (groupMap[outerGroupIndex] !== undefined) { + outerGroupIndex++; + } + groupMap[outerGroupIndex] = {}; + groupMap[outerGroupIndex].wrappable = true; + groupMap[outerGroupIndex].elements = []; + groupMap[outerGroupIndex].elements[innerGroupIndex] = selectionTree[i]; + outerGroupIndex++; + + } else if (this.canMarkupBeApplied2ElementAsWhole([selectionTree[i]], markupObject)) { + // now check, if the children of our item could be wrapped all together by the markup object + // if yes, add it to the current group + if (groupMap[outerGroupIndex] === undefined) { + groupMap[outerGroupIndex] = {}; + groupMap[outerGroupIndex].wrappable = true; + groupMap[outerGroupIndex].elements = []; + } + if (markupObject.isReplacingElement) { // && selectionTree[i].domobj.nodeType === 3 + /* we found the node to wrap for a replacing element. however there might + * be siblings which should be included as well + * although they are actually not selected. example: + * li + * |-textNode ( .selection = 'none') + * |-textNode (cursor inside, therefor .selection = 'partial') + * |-textNode ( .selection = 'none') + * + * in this case it would be useful to select the previous and following textNodes as well (they might result from a previous DOM manipulation) + * Think about other cases, where the parent is the Editable. In this case we propably only want to select from and until the next
    ?? + * .... many possibilities, here I realize the two described cases + */ + + // first find start element starting from the current element going backwards until sibling 0 + startPosition = i; + for (j = i - 1; j >= 0; j--) { + if (this.canMarkupBeApplied2ElementAsWhole([selectionTree[j]], markupObject) && this.isMarkupAllowedToStealSelectionTreeElement(selectionTree[j], markupObject)) { + startPosition = j; + } else { + break; + } + } + + // now find the end element starting from the current element going forward until the last sibling + endPosition = i; + for (j = i + 1; j < selectionTree.length; j++) { + if (this.canMarkupBeApplied2ElementAsWhole([selectionTree[j]], markupObject) && this.isMarkupAllowedToStealSelectionTreeElement(selectionTree[j], markupObject)) { + endPosition = j; + } else { + break; + } + } + + // now add the elements to the groupMap + innerGroupIndex = 0; + for (j = startPosition; j <= endPosition; j++) { + groupMap[outerGroupIndex].elements[innerGroupIndex] = selectionTree[j]; + groupMap[outerGroupIndex].elements[innerGroupIndex].selection = 'full'; + innerGroupIndex++; + } + innerGroupIndex = 0; + } else { + // normal text level semantics object, no siblings need to be selected + groupMap[outerGroupIndex].elements[innerGroupIndex] = selectionTree[i]; + innerGroupIndex++; + } + } else { + // if no, isolate it in its own group + if (groupMap[outerGroupIndex] !== undefined) { + outerGroupIndex++; + } + groupMap[outerGroupIndex] = {}; + groupMap[outerGroupIndex].wrappable = false; + groupMap[outerGroupIndex].element = selectionTree[i]; + innerGroupIndex = 0; + outerGroupIndex++; + } + } + } + return groupMap; + }, + + /** + * very tricky method, which decides, if a certain markup (normally a replacing markup element like p, h1, blockquote) + * is allowed to extend the user selection to other dom objects (represented as selectionTreeElement) + * to understand the purpose: if the user selection is collapsed inside e.g. some text, which is currently not + * wrapped by the markup to be applied, and therefor the markup does not have an equal markup to replace, then the DOM + * manipulator has to decide which objects to wrap. real example: + *
    + *

    headline

    + * some text blabla bla
    + * more text HERE THE | CURSOR BLINKING and even more bold text + *
    + * when the user now wants to apply e.g. a

    tag, what will be wrapped? it could be useful if the manipulator would actually + * wrap everything inside the div except the

    . but for this purpose someone has to decide, if the markup is + * allowed to wrap certain dom elements in this case the question would be, if the

    is allowed to wrap + * textNodes,
    and and

    . therefore this tricky method should answer the question for those 3 elements + * with true, but for for the

    it should return false. and since the method does not know this, there is a configuration + * for this + * + * @param selectionTree rangeObject selection tree element (only one, not an array of) + * @param markupObject lowercase string of the tag to be verified (e.g. "b") + * @return true if the markup is allowed to wrap the selection tree element, false otherwise + * @hide + */ + isMarkupAllowedToStealSelectionTreeElement:function (selectionTreeElement, markupObject) { + if (!selectionTreeElement.domobj) { + return false; + } + var maybeTextNodeName = selectionTreeElement.domobj.nodeName.toLowerCase(), + nodeName = (maybeTextNodeName == '#text') ? 'textNode' : maybeTextNodeName, + markupName = markupObject[0].nodeName.toLowerCase(), + elemMap = this.allowedToStealElements[markupName]; + return elemMap && elemMap[nodeName]; + }, + + /** + * checks if a selection can be completey wrapped by a certain html tags (helper method for this.optimizeSelectionTree4Markup + * @param selectionTree rangeObject selection tree + * @param markupObject lowercase string of the tag to be verified (e.g. "b") + * @return true if selection can be applied as whole, false otherwise + * @hide + */ + canMarkupBeApplied2ElementAsWhole:function (selectionTree, markupObject) { + var htmlTag, i, el, returnVal; + + if (markupObject.jquery) { + htmlTag = markupObject[0].tagName; + } + if (markupObject.tagName) { + htmlTag = markupObject.tagName; + } + + returnVal = true; + for (i = 0; i < selectionTree.length; i++) { + el = selectionTree[i]; + if (el.domobj && (el.selection != "none" || markupObject.isReplacingElement)) { + // Aloha.Log.debug(this, 'Checking, if <' + htmlTag + '> can be applied to ' + el.domobj.nodeName); + if (!this.canTag1WrapTag2(htmlTag, el.domobj.nodeName)) { + return false; + } + if (el.children.length > 0 && !this.canMarkupBeApplied2ElementAsWhole(el.children, markupObject)) { + return false; + } + } + } + return returnVal; + }, + + /** + * checks if a tag 1 (first parameter) can wrap tag 2 (second parameter). + * IMPORTANT: the method does not verify, if there have to be other tags in between + * Example: this.canTag1WrapTag2("table", "td") will return true, because the method does not take into account, that there has to be a "tr" in between + * @param t1 string: tagname of outer tag to verify, e.g. "b" + * @param t2 string: tagname of inner tag to verify, e.g. "b" + * @return true if tag 1 can wrap tag 2, false otherwise + * @hide + */ + canTag1WrapTag2:function (t1, t2) { + t1 = (t1 == '#text') ? 'textNode' : t1.toLowerCase(); + t2 = (t2 == '#text') ? 'textNode' : t2.toLowerCase(); + var t1Map = this.tagHierarchy[t1]; + if (!t1Map) { + return true; + } + if (!this.tagHierarchy[t2]) { + return true; + } + return t1Map[t2]; + }, + + /** + * Check whether it is allowed to insert the given tag at the start of the + * current selection. This method will check whether the markup effective for + * the start and outside of the editable part (starting with the editable tag + * itself) may wrap the given tag. + * @param tagName {String} name of the tag which shall be inserted + * @return true when it is allowed to insert that tag, false if not + * @hide + */ + mayInsertTag:function (tagName) { + var i; + if (typeof this.rangeObject.unmodifiableMarkupAtStart == 'object') { + // iterate over all DOM elements outside of the editable part + for (i = 0; i < this.rangeObject.unmodifiableMarkupAtStart.length; ++i) { + // check whether an element may not wrap the given + if (!this.canTag1WrapTag2(this.rangeObject.unmodifiableMarkupAtStart[i].nodeName, tagName)) { + // found a DOM element which forbids to insert the given tag, we are done + return false; + } + } + + // all of the found DOM elements allow inserting the given tag + return true; + } + Aloha.Log.warn(this, 'Unable to determine whether tag ' + tagName + ' may be inserted'); + return true; + }, + + /** + * String representation + * @return "Aloha.Selection" + * @hide + */ + toString:function () { + return 'Aloha.Selection'; + }, + + /** + * @namespace Aloha.Selection + * @class SelectionRange + * @extends GENTICS.Utils.RangeObject + * Constructor for a range object. + * Optionally you can pass in a range object that's properties will be assigned to the new range object. + * @param rangeObject A range object thats properties will be assigned to the new range object. + * @constructor + */ + SelectionRange:GENTICS.Utils.RangeObject.extend({ + _constructor:function (rangeObject) { + this._super(rangeObject); + // If a range object was passed in we apply the values to the new range object + if (rangeObject) { + if (rangeObject.commonAncestorContainer) { + this.commonAncestorContainer = rangeObject.commonAncestorContainer; + } + if (rangeObject.selectionTree) { + this.selectionTree = rangeObject.selectionTree; + } + if (rangeObject.limitObject) { + this.limitObject = rangeObject.limitObject; + } + if (rangeObject.markupEffectiveAtStart) { + this.markupEffectiveAtStart = rangeObject.markupEffectiveAtStart; + } + if (rangeObject.unmodifiableMarkupAtStart) { + this.unmodifiableMarkupAtStart = rangeObject.unmodifiableMarkupAtStart; + } + if (rangeObject.splitObject) { + this.splitObject = rangeObject.splitObject; + } + } + }, + + /** + * DOM object of the common ancestor from startContainer and endContainer + * @hide + */ + commonAncestorContainer:undefined, + + /** + * The selection tree + * @hide + */ + selectionTree:undefined, + + /** + * Array of DOM objects effective for the start container and inside the + * editable part (inside the limit object). relevant for the button status + * @hide + */ + markupEffectiveAtStart:[], + + /** + * Array of DOM objects effective for the start container, which lies + * outside of the editable portion (starting with the limit object) + * @hide + */ + unmodifiableMarkupAtStart:[], + + /** + * DOM object being the limit for all markup relevant activities + * @hide + */ + limitObject:undefined, + + /** + * DOM object being split when enter key gets hit + * @hide + */ + splitObject:undefined, + + /** + * Sets the visible selection in the Browser based on the range object. + * If the selection is collapsed, this will result in a blinking cursor, + * otherwise in a text selection. + * @method + */ + select:function () { + // Call Utils' select() + this._super(); + + // update the selection + Aloha.Selection.updateSelection(); + }, + + /** + * Method to update a range object internally + * @param commonAncestorContainer (DOM Object); optional Parameter; if set, the parameter + * will be used instead of the automatically calculated CAC + * @return void + * @hide + */ + update:function (commonAncestorContainer) { + this.updatelimitObject(); + this.updateMarkupEffectiveAtStart(); + this.updateCommonAncestorContainer(commonAncestorContainer); + + // reset the selectiontree (must be recalculated) + this.selectionTree = undefined; + }, + + /** + * Get the selection tree for this range + * TODO: remove this (was moved to range.js) + * @return selection tree + * @hide + */ + getSelectionTree:function () { + // if not yet calculated, do this now + if (!this.selectionTree) { + this.selectionTree = Aloha.Selection.getSelectionTree(this); + } + + return this.selectionTree; + }, + + /** + * TODO: move this to range.js + * Get an array of domobj (in dom tree order) of siblings of the given domobj, which are contained in the selection + * @param domobj dom object to start with + * @return array of siblings of the given domobj, which are also selected + * @hide + */ + getSelectedSiblings:function (domobj) { + var selectionTree = this.getSelectionTree(); + + return this.recursionGetSelectedSiblings(domobj, selectionTree); + }, + + /** + * TODO: move this to range.js + * Recursive method to find the selected siblings of the given domobj (which should be selected as well) + * @param domobj dom object for which the selected siblings shall be found + * @param selectionTree current level of the selection tree + * @return array of selected siblings of dom objects or false if none found + * @hide + */ + recursionGetSelectedSiblings:function (domobj, selectionTree) { + var selectedSiblings = false, + foundObj = false, + i; + + for (i = 0; i < selectionTree.length; ++i) { + if (selectionTree[i].domobj === domobj) { + foundObj = true; + selectedSiblings = []; + } else if (!foundObj && selectionTree[i].children) { + // do the recursion + selectedSiblings = this.recursionGetSelectedSiblings(domobj, selectionTree[i].children); + if (selectedSiblings !== false) { + break; + } + } else if (foundObj && selectionTree[i].domobj && selectionTree[i].selection != 'collapsed' && selectionTree[i].selection != 'none') { + selectedSiblings.push(selectionTree[i].domobj); + } else if (foundObj && selectionTree[i].selection == 'none') { + break; + } + } + + return selectedSiblings; + }, + + /** + * TODO: move this to range.js + * Method updates member var markupEffectiveAtStart and splitObject, which is relevant primarily for button status and enter key behaviour + * @return void + * @hide + */ + updateMarkupEffectiveAtStart:function () { + // reset the current markup + this.markupEffectiveAtStart = []; + this.unmodifiableMarkupAtStart = []; + + var parents = this.getStartContainerParents(), + limitFound = false, + splitObjectWasSet, + i, + el; + + for (i = 0; i < parents.length; i++) { + el = parents[i]; + if (!limitFound && (el !== this.limitObject)) { + this.markupEffectiveAtStart[i] = el; + if (!splitObjectWasSet && GENTICS.Utils.Dom.isSplitObject(el)) { + splitObjectWasSet = true; + this.splitObject = el; + } + } else { + limitFound = true; + this.unmodifiableMarkupAtStart.push(el); + } + } + if (!splitObjectWasSet) { + this.splitObject = false; + } + return; + }, + + /** + * TODO: remove this + * Method updates member var markupEffectiveAtStart, which is relevant primarily for button status + * @return void + * @hide + */ + updatelimitObject:function () { + if (Aloha.editables && Aloha.editables.length > 0) { + var parents = this.getStartContainerParents(), + editables = Aloha.editables, + i, + el, + j, + editable; + for (i = 0; i < parents.length; i++) { + el = parents[i]; + for (j = 0; j < editables.length; j++) { + editable = editables[j].obj[0]; + if (el === editable) { + this.limitObject = el; + return true; + } + } + } + } + this.limitObject = jQuery('body'); + return true; + }, + + /** + * string representation of the range object + * @param verbose set to true for verbose output + * @return string representation of the range object + * @hide + */ + toString:function (verbose) { + if (!verbose) { + return 'Aloha.Selection.SelectionRange'; + } + return 'Aloha.Selection.SelectionRange {start [' + this.startContainer.nodeValue + '] offset ' + this.startOffset + ', end [' + this.endContainer.nodeValue + '] offset ' + this.endOffset + '}'; + } + + }) // SelectionRange + + }); // Selection + + + /** + * This method implements an ugly workaround for a selection problem in ie: + * when the cursor shall be placed at the end of a text node in a li element, that is followed by a nested list, + * the selection would always snap into the first li of the nested list + * therefore, we make sure that the text node ends with a space and place the cursor right before it + */ + function nestedListInIEWorkaround(range) { + var nextSibling; + if (jQuery.browser.msie && range.startContainer === range.endContainer && range.startOffset === range.endOffset && range.startContainer.nodeType == 3 && range.startOffset == range.startContainer.data.length && range.startContainer.nextSibling) { + nextSibling = range.startContainer.nextSibling; + if ('OL' === nextSibling.nodeName || 'UL' === nextSibling.nodeName) { + if (range.startContainer.data[range.startContainer.data.length - 1] == ' ') { + range.startOffset = range.endOffset = range.startOffset - 1; + } else { + range.startContainer.data = range.startContainer.data + ' '; + } + } + } + } + + function correctRange(range) { + nestedListInIEWorkaround(range); + return range; + } + + /** + * Implements Selection http://html5.org/specs/dom-range.html#selection + * @namespace Aloha + * @class Selection This singleton class always represents the + * current user selection + * @singleton + */ + var AlohaSelection = Class.extend({ + + _constructor:function (nativeSelection) { + + this._nativeSelection = nativeSelection; + this.ranges = []; + + // will remember if urged to not change the selection + this.preventChange = false; + + }, + + /** + * Returns the element that contains the start of the selection. Returns null if there's no selection. + * @readonly + * @type Node + */ + anchorNode:null, + + /** + * Returns the offset of the start of the selection relative to the element that contains the start + * of the selection. Returns 0 if there's no selection. + * @readonly + * @type int + */ + anchorOffset:0, + + /** + * Returns the element that contains the end of the selection. + * Returns null if there's no selection. + * @readonly + * @type Node + */ + focusNode:null, + + /** + * Returns the offset of the end of the selection relative to the element that contains the end + * of the selection. Returns 0 if there's no selection. + * @readonly + * @type int + */ + focusOffset:0, + + /** + * Returns true if there's no selection or if the selection is empty. Otherwise, returns false. + * @readonly + * @type boolean + */ + isCollapsed:false, + + /** + * Returns the number of ranges in the selection. + * @readonly + * @type int + */ + rangeCount:0, + + /** + * Replaces the selection with an empty one at the given position. + * @throws a WRONG_DOCUMENT_ERR exception if the given node is in a different document. + * @param parentNode Node of new selection + * @param offest offest of new Selection in parentNode + * @void + */ + collapse:function (parentNode, offset) { + this._nativeSelection.collapse(parentNode, offset); + }, + + /** + * Replaces the selection with an empty one at the position of the start of the current selection. + * @throws an INVALID_STATE_ERR exception if there is no selection. + * @void + */ + collapseToStart:function () { + throw "NOT_IMPLEMENTED"; + }, + + /** + * @void + */ + extend:function (parentNode, offset) { + + }, + + /** + * @param alter DOMString + * @param direction DOMString + * @param granularity DOMString + * @void + */ + modify:function (alter, direction, granularity) { + + }, + + /** + * Replaces the selection with an empty one at the position of the end of the current selection. + * @throws an INVALID_STATE_ERR exception if there is no selection. + * @void + */ + collapseToEnd:function () { + throw "NOT_IMPLEMENTED"; + }, + + /** + * Replaces the selection with one that contains all the contents of the given element. + * @throws a WRONG_DOCUMENT_ERR exception if the given node is in a different document. + * @param parentNode Node the Node fully select + * @void + */ + selectAllChildren:function (parentNode) { + throw "NOT_IMPLEMENTED"; + }, + + /** + * Deletes the contents of the selection + */ + deleteFromDocument:function () { + throw "NOT_IMPLEMENTED"; + }, + + /** + * NB! + * We have serious problem in IE. + * The range that we get in IE is not the same as the range we had set, + * so even if we normalize it during getRangeAt, in IE, we will be + * correcting the range to the "correct" place, but still not the place + * where it was originally set. + * + * Returns the given range. + * The getRangeAt(index) method returns the indexth range in the list. + * NOTE: Aloha Editor only support 1 range! index can only be 0 + * @throws INDEX_SIZE_ERR DOM exception if index is less than zero or + * greater or equal to the value returned by the rangeCount. + * @param index int + * @return Range return the selected range from index + */ + getRangeAt:function (index) { + return correctRange(this._nativeSelection.getRangeAt(index)); + //if ( index < 0 || this.rangeCount ) { + // throw "INDEX_SIZE_ERR DOM"; + //} + //return this._ranges[index]; + }, + + /** + * Adds the given range to the selection. + * The addRange(range) method adds the given range Range object to the list of + * selections, at the end (so the newly added range is the new last range). + * NOTE: Aloha Editor only support 1 range! The added range will replace the + * range at index 0 + * see http://html5.org/specs/dom-range.html#selection note about addRange + * @throws an INVALID_NODE_TYPE_ERR exception if the given Range has a boundary point + * node that's not a Text or Element node, and an INVALID_MODIFICATION_ERR exception + * if it has a boundary point node that doesn't descend from a Document. + * @param range Range adds the range to the selection + * @void + */ + addRange:function (range) { + // set readonly attributes + this._nativeSelection.addRange(range); + // We will correct the range after rangy has processed the native + // selection range, so that our correction will be the final fix on + // the range according to the guarentee's that Aloha wants to make + this._nativeSelection._ranges[0] = correctRange(range); + + // make sure, the old Aloha selection will be updated (until all implementations use the new AlohaSelection) + Aloha.Selection.updateSelection(); + }, + + /** + * Removes the given range from the selection, if the range was one of the ones in the selection. + * NOTE: Aloha Editor only support 1 range! The added range will replace the + * range at with index 0 + * @param range Range removes the range from the selection + * @void + */ + removeRange:function (range) { + this._nativeSelection.removeRange(); + }, + + /** + * Removes all the ranges in the selection. + * @viod + */ + removeAllRanges:function () { + this._nativeSelection.removeAllRanges(); + }, + + /** + * INFO: Method is used for integration with Gentics + * Aloha, has no use otherwise Updates the rangeObject + * according to the current user selection Method is + * always called on selection change + * + * @param event + * jQuery browser event object + * @return true when rangeObject was modified, false + * otherwise + * @hide + */ + refresh:function (event) { + + }, + + /** + * String representation + * + * @return "Aloha.Selection" + * @hide + */ + toString:function () { + return 'Aloha.Selection'; + }, + + getRangeCount:function () { + return this._nativeSelection.rangeCount; + } + + }); + + /** + * A wrapper for the function of the same name in the rangy core-depdency. + * This function should be preferred as it hides the global rangy object. + * For more information look at the following sites: + * http://html5.org/specs/dom-range.html + * @param window optional - specifices the window to get the selection of + */ + Aloha.getSelection = function (target) { + target = (target !== document || target !== window) ? window : target; + // Aloha.Selection.refresh() + // implement Aloha Selection + // TODO cache + return new AlohaSelection(window.rangy.getSelection(target)); + }; + + /** + * A wrapper for the function of the same name in the rangy core-depdency. + * This function should be preferred as it hides the global rangy object. + * Please note: when the range object is not needed anymore, + * invoke the detach method on it. It is currently unknown to me why + * this is required, but that's what it says in the rangy specification. + * For more information look at the following sites: + * http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html + * @param document optional - specifies which document to create the range for + */ + Aloha.createRange = function (givenWindow) { + return window.rangy.createRange(givenWindow); + }; + + var selection = new Selection(); + Aloha.Selection = selection; + + return selection; +}); diff --git a/modules/core/aloha/static/lib/aloha/sidebar.js b/modules/core/aloha/static/lib/aloha/sidebar.js new file mode 100644 index 000000000..752b18fdd --- /dev/null +++ b/modules/core/aloha/static/lib/aloha/sidebar.js @@ -0,0 +1,1040 @@ +/* sidebar.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * @todo: - Make the sidebars resizable using drag handles. + * - Make overlayPage setting settable from external config. + */ + +define([ + 'aloha/core', + 'jquery', + 'aloha/selection', + 'PubSub' +], function (Aloha, $, Selection, PubSub) { + 'use strict'; + + var uid = +(new Date()); + + // Extend jQuery easing animations. + //debugger; + if (!$.easing.easeOutExpo) { + $.extend($.easing, { + easeOutExpo:function (x, t, b, c, d) { + return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; + }, + easeOutElastic:function (x, t, b, c, d) { + var m = Math, + s = 1.70158, + p = 0, + a = c; + if (!t) { + return b; + } + if ((t /= d) == 1) { + return b + c; + } + if (!p) { + p = d * 0.3; + } + if (a < m.abs(c)) { + a = c; + s = p / 4; + } else { + s = p / (2 * m.PI) * m.asin(c / a); + } + return a * m.pow(2, -10 * t) * m.sin((t * d - s) * (2 * m.PI) / p) + c + b; + } + }); + } + + var Panel = function Panel(opts) { + this.id = null; + this.folds = {}; + this.button = null; + this.title = $('
    ' + '' + 'Untitled' + '
    '); + this.content = $('
    ' + '
    ' + '
    ' + '
    ' + '
    '); + this.element = null; + this.effectiveElement = null; + this.expanded = false; + this.isActive = true; + this.init(opts); + }; + + var Sidebar = function Sidebar(opts) { + var sidebar = this; + this.id = 'aloha-sidebar-' + (++uid); + this.panels = {}; + this.container = $('
    ' + '
    ' + '' + '
    ' + '
    ' + '
      ' + '
      ' + '
      '); + this.width = 300; + this.opened = false; + this.isOpen = false; + this.isCompletelyOpen = false; + this.settings = { + // We automatically set this to true when we are in IE, where + // rotating elements using filters causes undesirable rendering + // ugliness. Our solution is to fallback to swapping icon images. + // We set this as a sidebar property so that it can overridden by + // whoever thinks they are smarter than we are. + rotateIcons:!$.browser.msie, + overlayPage:true + }; + + $(function () { + if (!((typeof Aloha.settings.sidebar !== 'undefined') && Aloha.settings.sidebar.disabled)) { + sidebar.init(opts); + } + }); + }; + + /** + * The last calculated view port height. + * @type {number} + */ + var previousViewportHeight = null; + var previousActivePanelIds = null; + + $.extend(Sidebar.prototype, { + + // We build as much of the sidebar as we can before appending it to DOM + // to minimize reflow. + init:function (opts) { + var that = this; + var panels; + + if (typeof opts === 'object') { + panels = opts.panels; + delete opts.panels; + } + + $.extend(this, opts); + + if (typeof panels === 'object') { + $.each(panels, function () { + that.addPanel(this, true); + }); + } + + var bar = this.container; + + if (this.position === 'right') { + bar.addClass('aloha-sidebar-right'); + } + + bar.hide().appendTo($('body')).click(function () { + that.barClicked.apply(that, arguments); + }).find('.aloha-sidebar-panels').width(this.width); + + // IE7 needs us to explicitly set the container width, since it is + // unable to determine it on its own. + bar.width(this.width); + this.width = bar.width(); + + this.updateHeight(); + this.initToggler(); + + this.container.css(this.position === 'right' ? 'marginRight' : 'marginLeft', -this.width); + + if (this.opened) { + this.open(0); + } + + this.toggleHandleIcon(this.isOpen); + this.subscribeToEvents(); + + $(window).resize(function () { + that.updateHeight(); + that.correctHeight(); + }); + + this.correctHeight(); + }, + + show:function () { + this.container.css('display', 'block'); + return this; + }, + + hide:function () { + this.container.css('display', 'none'); + return this; + }, + + /** + * Determines the effective elements at the current selection. + * Iterates through all panels and checks whether the panel should be + * activated for any of the effective elements in the selection. + * + * @param {Aloha.RangeObject} range The current selection range. + */ + checkActivePanels:function (range) { + var effective = []; + + if (typeof range !== 'undefined' && typeof range.markupEffectiveAtStart !== 'undefined') { + var l = range.markupEffectiveAtStart.length; + var i; + for (i = 0; i < l; ++i) { + effective.push($(range.markupEffectiveAtStart[i])); + } + } + + var that = this; + + $.each(this.panels, function () { + that.showActivePanel(this, effective); + }); + + this.correctHeight(); + }, + + subscribeToEvents:function () { + var that = this; + + PubSub.sub('aloha.selection.context-change', function (message) { + if (that.isOpen) { + that.checkActivePanels(message.range); + } + that.lastRange = message.range; + }); + + Aloha.bind('aloha-editable-deactivated', function (event, params) { + if (that.isOpen) { + that.checkActivePanels(); + } + that.lastRange = null; + }); + + this.container.mousedown(function (e) { + e.originalEvent.stopSelectionUpdate = true; + Aloha.eventHandled = true; + }); + + this.container.mouseup(function (e) { + e.originalEvent.stopSelectionUpdate = true; + Aloha.eventHandled = false; + }); + }, + + /** + * Dynamically set appropriate heights for panels. + * The height for each panel is determined by the amount of space that + * is available in the viewport and the number of panels that need to + * share that space. + */ + correctHeight:function () { + if (!this.isOpen) { + return; + } + if (!this.isCompletelyOpen) { + this.correctHeightWhenCompletelyOpen = true; + return; + } + + var viewportHeight = $(window).height(); + var activePanelIds = []; + var panels = []; + var panelId; + for (panelId in this.panels) { + if (this.panels.hasOwnProperty(panelId)) { + if (this.panels[panelId].isActive) { + panels.push(this.panels[panelId]); + activePanelIds.push(panelId); + } + } + } + + if (0 === panels.length) { + return; + } + + activePanelIds = activePanelIds.sort().join(','); + + if (previousActivePanelIds === activePanelIds && previousViewportHeight === viewportHeight) { + return; + } + + previousViewportHeight = viewportHeight; + previousActivePanelIds = activePanelIds; + + var height = this.container.find('.aloha-sidebar-inner').height(); + var remainingHeight = height - ((panels[0].title.outerHeight() + 10) * panels.length); + var panel; + var targetHeight; + var panelInner; + var panelText; + var undone; + var toadd = 0; + var math = Math; + var j; + + while (panels.length > 0 && remainingHeight > 0) { + remainingHeight += toadd; + toadd = 0; + undone = []; + + for (j = panels.length - 1; j >= 0; --j) { + panel = panels[j]; + panelInner = panel.content.find('.aloha-sidebar-panel-content-inner'); + + targetHeight = math.min( + panelInner.height('auto').height(), + math.floor(remainingHeight / (j + 1)) + ); + + panelInner.height(targetHeight); + remainingHeight -= targetHeight; + panelText = panelInner.find('.aloha-sidebar-panel-content-inner-text'); + + if (panelText.height() > targetHeight) { + undone.push(panel); + toadd += targetHeight; + panelInner.css({ + 'overflow-x':'hidden', + 'overflow-y':'scroll' + }); + } else { + panelInner.css('overflow-y', 'hidden'); + } + + if (panel.expanded) { + panel.expand(); + } + } + + panels = undone; + } + }, + + /** + * Checks whether this panel should be activated (ie: made visible) for + * any of the elements specified in a given list of elements. + * + * We have to add a null object to the list of elements to allow us to + * check whether the panel should be visible when we have no effective + * elements in the current selection + * + * @param {object} panel The Panel object we will test + * @param {Array.>} elements The effective + * elements, any of + * which may activate + * the panel. + */ + showActivePanel:function (panel, elements) { + elements.push(null); + + var li = panel.content.parent('li'); + var activeOn = panel.activeOn; + var effective = $(); + var count = 0; + var j = elements.length; + var i; + + for (i = 0; i < j; ++i) { + if (activeOn(elements[i])) { + ++count; + if (elements[i]) { + $.merge(effective, elements[i]); + } + } + } + + if (count) { + panel.activate(effective); + } else { + panel.deactivate(); + } + }, + + /** + * Sets up the functionality, event listeners, and animation of the + * sidebar handle + */ + initToggler:function () { + var that = this; + var bar = this.container; + var icon = bar.find('.aloha-sidebar-handle-icon'); + var toggledClass = 'aloha-sidebar-toggled'; + var bounceTimer; + var isRight = (this.position === 'right'); + + if (this.opened) { + this.rotateHandleArrow(isRight ? 0 : 180, 0); + } + + // configure the position of the sidebar handle + $(function () { + if (typeof Aloha.settings.sidebar !== 'undefined' && Aloha.settings.sidebar.handle && Aloha.settings.sidebar.handle.top) { + $(bar.find('.aloha-sidebar-handle'))[0].style.top = Aloha.settings.sidebar.handle.top; + } + }); + + bar.find('.aloha-sidebar-handle').click(function () { + if (bounceTimer) { + clearInterval(bounceTimer); + } + + icon.stop().css('marginLeft', 4); + + if (that.isOpen) { + $(this).removeClass(toggledClass); + that.close(); + that.isOpen = false; + } else { + $(this).addClass(toggledClass); + that.open(); + that.isOpen = true; + } + }).hover(function () { + var flag = that.isOpen ? -1 : 1; + + if (bounceTimer) { + clearInterval(bounceTimer); + } + + icon.stop(); + + $(this).stop().animate( + isRight ? { + marginLeft:'-=' + (flag * 5) + } : { + marginRight:'-=' + (flag * 5) + }, + 200 + ); + + bounceTimer = setInterval(function () { + flag *= -1; + icon.animate( + isRight ? { + left:'-=' + (flag * 4) + } : { + right:'-=' + (flag * 4) + }, + 300 + ); + }, 300); + }, function () { + if (bounceTimer) { + clearInterval(bounceTimer); + } + + icon.stop().css(isRight ? 'left' : 'right', 5); + + $(this).stop().animate( + isRight ? { + marginLeft:0 + } : { + marginRight:0 + }, + 600, + 'easeOutElastic' + ); + }); + }, + + /** + * Rounds the top corners of the first visible panel, and the bottom + * corners of the last visible panel elements in the panels ul list. + * @deprecated + * @fixme: css3 + */ + roundCorners:function () { + + var bar = this.container; + var lis = bar.find('.aloha-sidebar-panels>li:not(.aloha-sidebar-deactivated)'); + var topClass = 'aloha-sidebar-panel-top'; + var bottomClass = 'aloha-sidebar-panel-bottom'; + + bar.find('.aloha-sidebar-panel-top, .aloha-sidebar-panel-bottom').removeClass(topClass).removeClass(bottomClass); + + lis.first().find('.aloha-sidebar-panel-title').addClass(topClass); + lis.last().find('.aloha-sidebar-panel-content').addClass(bottomClass); + }, + + /** + * Updates the height of the inner div of the sidebar. This is done + * whenever the viewport is resized. + */ + updateHeight:function () { + var h = $(window).height(); + this.container.height(h).find('.aloha-sidebar-inner').height(h); + }, + + /** + * Delegate all sidebar onclick events to the container. + * Then use handleBarclick method until we bubble up to the first + * significant element that we can interact with. + */ + barClicked:function (ev) { + this.handleBarclick($(ev.target)); + }, + + /** + * We handle all click events on the sidebar from here--dispatching + * calls to which ever methods that should be invoked for the each + * interaction. + */ + handleBarclick:function (el) { + if (el.hasClass('aloha-sidebar-panel-title')) { + this.togglePanel(el); + } else if (!el.hasClass('aloha-sidebar-panel-content') && !el.hasClass('aloha-sidebar-handle') && !el.hasClass('aloha-sidebar-bar')) { + this.handleBarclick(el.parent()); + } + }, + + getPanelById:function (id) { + return this.panels[id]; + }, + + getPanelByElement:function (el) { + var li = (el[0].tagName === 'LI') ? el : el.parent('li'); + return this.getPanelById(li[0].id); + }, + + togglePanel:function (el) { + this.getPanelByElement(el).toggle(); + }, + + /** + * Animation to rotate the sidebar arrow + * + * @param {number} angle The angle two which the arrow should rotate + * (0 or 180). + * @param {number|String} duration (Optional) How long the animation + * should play for. + */ + rotateHandleIcon:function (angle, duration) { + var arr = this.container.find('.aloha-sidebar-handle-icon'); + arr.animate({ + angle:angle + }, { + duration:(typeof duration === 'number' || typeof duration === 'string') ? duration : 500, + easing:'easeOutExpo', + step:function (val, fx) { + arr.css({ + '-o-transform':'rotate(' + val + 'deg)', + '-webkit-transform':'rotate(' + val + 'deg)', + '-moz-transform':'rotate(' + val + 'deg)', + '-ms-transform':'rotate(' + val + 'deg)' + // We cannot use Microsoft Internet Explorer filters + // because Microsoft Internet Explore 8 does not support + // Microsoft Internet Explorer filters correctly. It + // breaks the layout + // filter : 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (angle / 90) + ')' + }); + } + }); + }, + + /** + * Sets the handle icon to the "i am opened, click me to close the + * sidebar" state, or vice versa. The direction of the arrow depends + * on whether the sidebar is on the left or right, and whether it is + * in an opened state or not. + * + * @param {boolean} isOpen Whether or not the sidebar is in the opened + * state. + */ + toggleHandleIcon:function (isOpen) { + var isPointingLeft = (this.position === 'right') ^ isOpen; + + if (this.settings.rotateIcons) { + this.rotateHandleIcon(isPointingLeft ? 180 : 0, 0); + } else { + var icon = this.container.find('.aloha-sidebar-handle-icon'); + + if (isPointingLeft) { + icon.addClass('aloha-sidebar-handle-icon-left'); + } else { + icon.removeClass('aloha-sidebar-handle-icon-left'); + } + } + }, + + /** + * Slides the sidebar into view + */ + open:function (duration, callback) { + if (this.isOpen) { + return this; + } + + var isRight = (this.position === 'right'); + var anim = isRight ? { + marginRight:0 + } : { + marginLeft:0 + }; + var sidebar = this; + + this.toggleHandleIcon(true); + this.container.animate(anim, (typeof duration === 'number' || typeof duration === 'string') ? duration : 500, 'easeOutExpo'); + + if (!this.settings.overlayPage) { + $('body').animate( + isRight ? { + marginRight:'+=' + this.width + } : { + marginLeft:'+=' + this.width + }, + 500, + 'easeOutExpo', + function () { + sidebar.isCompletelyOpen = true; + if (sidebar.correctHeightWhenCompletelyOpen) { + sidebar.correctHeight(); + } + } + ); + } + + this.isOpen = true; + this.correctHeight(); + if (this.lastRange) { + this.checkActivePanels(this.lastRange); + } + $('body').trigger('aloha-sidebar-opened', this); + + return this; + }, + + /** + * Slides that sidebar out of view. + */ + close:function (duration, callback) { + if (!this.isOpen) { + return this; + } + + var isRight = (this.position === 'right'); + var anim = isRight ? { + marginRight:-this.width + } : { + marginLeft:-this.width + }; + + this.toggleHandleIcon(false); + this.container.animate(anim, (typeof duration === 'number' || typeof duration === 'string') ? duration : 500, 'easeOutExpo'); + + if (!this.settings.overlayPage) { + $('body').animate( + isRight ? { + marginRight:'-=' + this.width + } : { + marginLeft:'-=' + this.width + }, + 500, + 'easeOutExpo' + ); + } + + this.isOpen = false; + this.isCompletelyOpen = false; + + return this; + }, + + /** + * Activates the given panel and passes to it the given element as the + * the effective that we want it to think activated it. + * + * @param {object|String} panel Panel instance or the id of a panel + * object. + * @param {jQuery} element Element to pass to the panel as effective + * element (the element that activated it). + */ + activatePanel:function (panel, element) { + if (typeof panel === 'string') { + panel = this.getPanelById(panel); + } + + if (panel) { + panel.activate(element); + } + + this.roundCorners(); + + return this; + }, + + /** + * Invokes the expand method for the given panel so that it expands its + * height to display its contents + * + * @param {object|String} panel Panel instance or the id of a panel + * object. + * @param {funtion} callback + */ + expandPanel:function (panel, callback) { + if (typeof panel === 'string') { + panel = this.getPanelById(panel); + } + + if (panel) { + panel.expand(callback); + } + + return this; + }, + + /** + * Collapses the panel contents by invoking the given panel's collapse + * method. + * + * @param {object|String} panel Panel instance or the id of a panel + * object. + * @param {funtion} callback + */ + collapsePanel:function (panel, callback) { + if (typeof panel === 'string') { + panel = this.getPanelById(panel); + } + + if (panel) { + panel.collapse(callback); + } + + return this; + }, + + /** + * Adds a panel to this sidebar instance. + * We try and build as much of the panel DOM as we can before inserting + * it into the DOM in order to reduce reflow. + * + * @param {object} panel - either a panel instance or an associative + * array containing settings for the construction + * of a new panel. + * @param {boolean} deferRounding - (Optional) If true, the rounding-off + * of the top most and bottom most panels + * will not be automatically done. Set + * this to true when adding a lot of panels + * at once. + * @return {object} The newly created panel. + */ + addPanel:function (panel, deferRounding) { + if (!(panel instanceof Panel)) { + if (!panel.width) { + panel.width = this.width; + } + panel.sidebar = this; + panel = new Panel(panel); + } + + this.panels[panel.id] = panel; + this.container.find('.aloha-sidebar-panels').append(panel.element); + this.checkActivePanels(Selection.getRangeObject()); + return panel; + } + + }); + + // ------------------------------------------------------------------------ + // Panel prototype + // ------------------------------------------------------------------------ + $.extend(Panel.prototype, { + + init:function (opts) { + this.setTitle(opts.title).setContent(opts.content); + + delete opts.title; + delete opts.content; + + $.extend(this, opts); + + if (!this.id) { + this.id = 'aloha-sidebar-' + (++uid); + } + + var li = this.element = $('
    • ').append(this.title, this.content); + + if (this.expanded) { + this.content.height('auto'); + } + + this.toggleTitleIcon(this.expanded); + this.coerceActiveOn(); + + // Disable text selection on title element. + this.title.attr('unselectable', 'on').css('-moz-user-select', 'none').each(function () { + this.onselectstart = function () { + return false; + }; + }); + + if (typeof this.onInit === 'function') { + this.onInit.apply(this); + } + }, + + /** + * @param {boolean} isExpanded Whether or not the panel is in an + * expanded state. + */ + toggleTitleIcon:function (isExpanded) { + if (this.sidebar.settings.rotateIcons) { + this.rotateTitleIcon(isExpanded ? 90 : 0); + } else { + var icon = this.title.find('.aloha-sidebar-panel-title-arrow'); + + if (isExpanded) { + icon.addClass('aloha-sidebar-panel-title-arrow-down'); + } else { + icon.removeClass('aloha-sidebar-panel-title-arrow-down'); + } + } + }, + + /** + * Normalizes the activeOn property into a predicate function. + */ + coerceActiveOn:function () { + if (typeof this.activeOn !== 'function') { + var activeOn = this.activeOn; + + this.activeOn = (function () { + var typeofActiveOn = typeof activeOn, + fn; + + if (typeofActiveOn === 'boolean') { + fn = function () { + return activeOn; + }; + } else if (typeofActiveOn === 'undefined') { + fn = function () { + return true; + }; + } else if (typeofActiveOn === 'string') { + fn = function (el) { + return el ? el.is(activeOn) : false; + }; + } else { + fn = function () { + return false; + }; + } + + return fn; + }()); + } + }, + + /** + * Activates (displays) this panel. + */ + activate:function (effective) { + this.isActive = true; + this.content.parent('li').show().removeClass('aloha-sidebar-deactivated'); + this.effectiveElement = effective; + if (typeof this.onActivate === 'function') { + this.onActivate.call(this, effective); + } + }, + + /** + * Hides this panel. + */ + deactivate:function () { + if (!this.isActive) { + return; + } + this.isActive = false; + this.content.parent('li').hide().addClass('aloha-sidebar-deactivated'); + this.effectiveElement = null; + }, + + toggle:function () { + if (this.expanded) { + this.collapse(); + } else { + this.expand(); + } + }, + + /** + * Displays the panel's contents. + */ + expand:function (callback) { + var that = this; + var el = this.content; + var old_h = el.height(); + var new_h = el.height('auto').height(); + el.height(old_h).stop().animate( + {height:new_h}, + 500, + 'easeOutExpo', + function () { + if (typeof callback === 'function') { + callback.call(that); + } + } + ); + this.element.removeClass('collapsed'); + this.toggleTitleIcon(true); + this.expanded = true; + return this; + }, + + /** + * Hides the panel's contents--leaving only it's header. + */ + collapse:function (duration, callback) { + var that = this; + this.element.addClass('collapsed'); + this.content.stop().animate( + { height:5 }, + 250, + 'easeOutExpo', + function () { + if (typeof callback === 'function') { + callback.call(that); + } + } + ); + this.toggleTitleIcon(false); + this.expanded = false; + return this; + }, + + /** + * May also be called by the Sidebar to update title of panel + * + * @param {string} html Markup string, DOM object, or jQuery object. + */ + setTitle:function (html) { + this.title.find('.aloha-sidebar-panel-title-text').html(html); + return this; + }, + + /** + * May also be called by the Sidebar to update content of panel + * + * @param {string|jQuery.|HTMLElement} html Markup string, + * DOM object, or + * jQuery object. + */ + setContent:function (html) { + // We do this so that empty panels don't appear collapsed + if (!html || html === '') { + html = ' '; + } + + this.content.find('.aloha-sidebar-panel-content-inner-text').html(html); + return this; + }, + + rotateTitleIcon:function (angle, duration) { + var arr = this.title.find('.aloha-sidebar-panel-title-arrow'); + arr.animate({ + angle:angle + }, { + duration:(typeof duration === 'number') ? duration : 500, + easing:'easeOutExpo', + step:function (val, fx) { + arr.css({ + '-o-transform':'rotate(' + val + 'deg)', + '-webkit-transform':'rotate(' + val + 'deg)', + '-moz-transform':'rotate(' + val + 'deg)', + '-ms-transform':'rotate(' + val + 'deg)' + // filter : 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (angle / 90) + ')' + }); + } + }); + }, + + /** + * Walks up the ancestors chain for the given effective element, and + * renders subpanels using the specified renderer function. + * + * @param {jQuery.} effective The effective element, whose + * lineage we want to render. + * @param {function} renderer (Optional) function that will render each + * element in the parental + * lineage of the effective + * element. + */ + renderEffectiveParents:function (effective, renderer) { + var el = effective.first(); + var content = []; + var path = []; + var activeOn = this.activeOn; + var l; + var pathRev; + + while (el.length > 0 && !el.is('.aloha-editable')) { + if (activeOn(el)) { + path.push('' + el[0].tagName.toLowerCase() + ''); + l = path.length; + pathRev = []; + while (l--) { + pathRev.push(path[l]); + } + content.push( + '
      ' + + '
      ' + + pathRev.join('') + + '
      ' + + '
      ' + + ((typeof renderer === 'function') ? renderer(el) : '----') + '
      ' + '
      ' + ); + } + el = el.parent(); + } + + this.setContent(content.join('')); + + $('.aloha-sidebar-panel-parent-path').click(function () { + var $content = $(this).parent().find('.aloha-sidebar-panel-parent-content'); + if ($content.hasClass('aloha-sidebar-opened')) { + $content.hide().removeClass('aloha-sidebar-opened'); + } else { + $content.show().addClass('aloha-sidebar-opened'); + } + }); + + this.content.height('auto').find('.aloha-sidebar-panel-content-inner').height('auto'); + } + + }); + + var left = new Sidebar({ + position:'left', + width:250 // TODO define in config + }); + + var right = new Sidebar({ + position:'right', + width:250 // TODO define in config + }); + + Aloha.Sidebar = { + left:left, + right:right + }; + + return Aloha.Sidebar; +}); diff --git a/modules/core/aloha/static/lib/css.js b/modules/core/aloha/static/lib/css.js new file mode 100644 index 000000000..b23ff0f22 --- /dev/null +++ b/modules/core/aloha/static/lib/css.js @@ -0,0 +1,467 @@ +/** MIT License (c) copyright B Cavalier & J Hann */ + +/** + * curl css! plugin + * + * Licensed under the MIT License at: + * http://www.opensource.org/licenses/mit-license.php + * + */ + +(function (global) { + "use strict"; + + /* + * AMD css! plugin + * This plugin will load and wait for css files. This could be handy when + * loading css files as part of a layer or as a way to apply a run-time theme. + * Most browsers do not support the load event handler of the link element. + * Therefore, we have to use other means to detect when a css file loads. + * (The HTML5 spec states that the LINK element should have a load event, but + * not even Chrome 8 or FF4b7 have it, yet. + * http://www.w3.org/TR/html5/semantics.html#the-link-element) + * + * This plugin tries to use the load event and a universal work-around when + * it is invoked the first time. If the load event works, it is used on + * every successive load. Therefore, browsers that support the load event will + * just work (i.e. no need for hacks!). FYI, Feature-detecting the load + * event is tricky since most browsers have a non-functional onload property. + * + * The universal work-around watches a stylesheet until its rules are + * available (not null or undefined). There are nuances, of course, between + * the various browsers. The isLinkReady function accounts for these. + * + * Note: it appears that all browsers load @import'ed stylesheets before + * fully processing the rest of the importing stylesheet. Therefore, we + * don't need to find and wait for any @import rules explicitly. + * + * Note #2: for Opera compatibility, stylesheets must have at least one rule. + * AFAIK, there's no way to tell the difference between an empty sheet and + * one that isn't finished loading in Opera (XD or same-domain). + * + * Options: + * !nowait - does not wait for the stylesheet to be parsed, just loads it + * + * Global configuration options: + * + * cssDeferLoad: Boolean. You can also instruct this plugin to not wait + * for css resources. They'll get loaded asap, but other code won't wait + * for them. This is just like using the !nowait option on every css file. + * + * cssWatchPeriod: if direct load-detection techniques fail, this option + * determines the msec to wait between brute-force checks for rules. The + * default is 50 msec. + * + * You may specify an alternate file extension: + * require('css!myproj/component.less') // --> myproj/component.less + * require('css!myproj/component.scss') // --> myproj/component.scss + * + * When using alternative file extensions, be sure to serve the files from + * the server with the correct mime type (text/css) or some browsers won't + * parse them, causing an error in the plugin. + * + * usage: + * require(['css!myproj/comp']); // load and wait for myproj/comp.css + * define(['css!some/folder/file'], {}); // wait for some/folder/file.css + * require(['css!myWidget!nowait']); + * + * Tested in: + * Firefox 1.5, 2.0, 3.0, 3.5, 3.6, and 4.0b6 + * Safari 3.0.4, 3.2.1, 5.0 + * Chrome 7 (8+ is partly b0rked) + * Opera 9.52, 10.63, and Opera 11.00 + * IE 6, 7, and 8 + * Netscape 7.2 (WTF? SRSLY!) + * Does not work in Safari 2.x :( + * In Chrome 8+, there's no way to wait for cross-domain (XD) stylesheets. + * See comments in the code below. + * TODO: figure out how to be forward-compatible when browsers support HTML5's + * load handler without breaking IE and Opera + */ + + + var + // compressibility shortcuts + onreadystatechange = 'onreadystatechange', + onload = 'onload', + createElement = 'createElement', + // failed is true if RequireJS threw an exception + failed = false, + undef, + insertedSheets = {}, + features = { + // true if the onload event handler works + // "event-link-onload" : false + }, + // this actually tests for absolute urls and root-relative urls + // they're both non-relative + nonRelUrlRe = /^\/|^[^:]*:\/\//, + // Note: this will fail if there are parentheses in the url + findUrlRx = /url\s*\(['"]?([^'"\)]*)['"]?\)/g, + // doc will be undefined during a build + doc = global.document, + // find the head element and set it to it's standard property if nec. + head, + // collection of modules that have been written to the built file + built = {}; + + if (doc) { + head = doc.head || (doc.head = doc.getElementsByTagName('head')[0]); + } + + function has(feature) { + return features[feature]; + } + + /***** load-detection functions *****/ + + function loadHandler(params, cb) { + // We're using 'readystatechange' because IE and Opera happily support both + var link = params.link; + link[onreadystatechange] = link[onload] = function () { + if (!link.readyState || link.readyState == 'complete') { + features["event-link-onload"] = true; + cleanup(params); + cb(); + } + }; + } + + function nameWithExt(name, defaultExt) { + return name.lastIndexOf('.') <= name.lastIndexOf('/') ? + name + '.' + defaultExt : name; + } + + function parseSuffixes(name) { + // creates a dual-structure: both an array and a hashmap + // suffixes[0] is the actual name + var parts = name.split('!'), + suf, i = 1, pair; + while ((suf = parts[i++])) { // double-parens to avoid jslint griping + pair = suf.split('=', 2); + parts[pair[0]] = pair.length == 2 ? pair[1] : true; + } + return parts; + } + + var collectorSheet; + + function createLink(doc, optHref) { + // detect if we need to avoid 31-sheet limit in IE (how to detect this for realz?) + if (document.createStyleSheet) { + if (!collectorSheet) { + collectorSheet = document.createStyleSheet(); + } + if (document.styleSheets.length >= 30) { + moveLinksToCollector(); + } + } + var link = doc[createElement]('link'); + link.rel = "stylesheet"; + link.type = "text/css"; + link.setAttribute('_curl_movable', true); + if (optHref) { + link.href = optHref; + } + return link; + } + + var testEl; + + function styleIsApplied() { + // Chrome 8 hax0rs! + // This is an ugly hack needed by Chrome 8+ which no longer waits for rules + // to be applied to the document before exposing them to javascript. + // Unfortunately, this routine will never fire for XD stylesheets since + // Chrome will also throw an exception if attempting to access the rules + // of an XD stylesheet. Therefore, there's no way to detect the load + // event of XD stylesheets until Google fixes this, preferably with a + // functional load event! As a work-around, use domReady() before + // rendering widgets / components that need the css to be ready. + if (!testEl) { + testEl = doc[createElement]('div'); + testEl.id = '_cssx_load_test'; + head.appendChild(testEl); + } + return doc.defaultView.getComputedStyle(testEl, null).marginTop == '-5px'; + } + + function isLinkReady(link) { + // This routine is a bit fragile: browser vendors seem oblivious to + // the need to know precisely when stylesheets load. Therefore, we need + // to continually test beta browsers until they all support the LINK load + // event like IE and Opera. + var sheet, rules, ready = false; + try { + // webkit's and IE's sheet is null until the sheet is loaded + sheet = link.sheet || link.styleSheet; + // mozilla's sheet throws an exception if trying to access xd rules + rules = sheet.cssRules || sheet.rules; + // webkit's xd sheet returns rules == null + // opera's sheet always returns rules, but length is zero until loaded + // friggin IE doesn't count @import rules as rules, but IE should + // never hit this routine anyways. + ready = rules ? + rules.length > 0 : // || (sheet.imports && sheet.imports.length > 0) : + rules !== undef; + // thanks, Chrome 8+, for this lovely hack. TODO: find a better way + if (ready && {}.toString.call(window.chrome) == '[object Chrome]') { + // fwiw, we'll never get this far if this is an XD stylesheet + sheet.insertRule('#_cssx_load_test{margin-top:-5px;}', 0); + ready = styleIsApplied(); + sheet.deleteRule(0); + } + } + catch (ex) { + // 1000 means FF loaded an xd stylesheet + // other browsers just throw a security error here (IE uses the phrase 'Access is denied') + ready = (ex.code == 1000) || (ex.message.match(/security|denied/i)); + } + return ready; + } + + function ssWatcher(params, cb) { + // watches a stylesheet for loading signs. + if (isLinkReady(params.link)) { + cleanup(params); + cb(); + } + else if (!failed) { + setTimeout(function () { + ssWatcher(params, cb); + }, params.wait); + } + } + + function loadDetector(params, cb) { + // It would be nice to use onload everywhere, but the onload handler + // only works in IE and Opera. + // Detecting it cross-browser is completely impossible, too, since + // THE BROWSERS ARE LIARS! DON'T TELL ME YOU HAVE AN ONLOAD PROPERTY + // IF IT DOESN'T DO ANYTHING! + var loaded; + + function cbOnce() { + if (!loaded) { + loaded = true; + cb(); + } + } + + loadHandler(params, cbOnce); + if (!has("event-link-onload")) { + ssWatcher(params, cbOnce); + } + } + + function cleanup(params) { + var link = params.link; + link[onreadystatechange] = link[onload] = null; + } + + function moveLinksToCollector() { + // IE 6-8 fails when over 31 sheets, so we collect them. + // Note: this hack relies on proper cache headers. + var link, links, collector, pos = 0; + collector = collectorSheet; + collectorSheet = null; // so a new one will be created + links = document.getElementsByTagName('link'); + while ((link = links[pos])) { + if (link.getAttribute('_curl_movable')) { + // move to the collectorSheet (note: bad cache directive will cause a re-download) + collector.addImport(link.href); + // remove from document + link.parentNode && link.parentNode.removeChild(link); + } + else { + // skip this sheet + pos++; + } + } + } + + /***** style element functions *****/ + + var currentStyle; + + function translateUrls(cssText, baseUrl) { + return cssText.replace(findUrlRx, function (all, url) { + return 'url("' + translateUrl(url, baseUrl) + '")'; + }); + } + + function translateUrl(url, parentPath) { + // if this is a relative url + if (!nonRelUrlRe.test(url)) { + // append path onto it + url = parentPath + url; + } + return url; + } + + function createStyle(cssText) { + clearTimeout(createStyle.debouncer); + if (createStyle.accum) { + createStyle.accum.push(cssText); + } + else { + createStyle.accum = [cssText]; + currentStyle = doc.createStyleSheet ? doc.createStyleSheet() : + head.appendChild(doc.createElement('style')); + } + + createStyle.debouncer = setTimeout(function () { + // Note: IE 6-8 won't accept the W3C method for inserting css text + var style, allCssText; + + style = currentStyle; + currentStyle = undef; + + allCssText = createStyle.accum.join('\n'); + createStyle.accum = undef; + + // for safari which chokes on @charset "UTF-8"; + allCssText = allCssText.replace(/.+charset[^;]+;/g, ''); + + // TODO: hoist all @imports to the top of the file to follow w3c spec + + 'cssText' in style ? style.cssText = allCssText : + style.appendChild(doc.createTextNode(allCssText)); + + }, 0); + + return currentStyle; + } + + function createSheetProxy(sheet) { + return { + cssRules:function () { + return sheet.cssRules || sheet.rules; + }, + insertRule:sheet.insertRule || function (text, index) { + var parts = text.split(/\{|\}/g); + sheet.addRule(parts[0], parts[1], index); + return index; + }, + deleteRule:sheet.deleteRule || function (index) { + sheet.removeRule(index); + return index; + }, + sheet:function () { + return sheet; + } + }; + } + + /***** finally! the actual plugin *****/ + + define(/*=='css',==*/ { + + 'normalize':function (resourceId, normalize) { + var resources, normalized; + + if (!resourceId) { + return resourceId; + } + + resources = resourceId.split(","); + normalized = []; + + for (var i = 0, len = resources.length; i < len; i++) { + normalized.push(normalize(resources[i])); + } + + return normalized.join(','); + }, + + 'load':function (resourceId, require, callback, config) { + var resources = (resourceId || '').split(","), + loadingCount = resources.length; + + // all detector functions must ensure that this function only gets + // called once per stylesheet! + function loaded() { + // load/error handler may have executed before stylesheet is + // fully parsed / processed in Opera, so use setTimeout. + // Opera will process before the it next enters the event loop + // (so 0 msec is enough time). + if (--loadingCount == 0) { + // TODO: move this setTimeout to loadHandler + setTimeout(function () { + callback(createSheetProxy(link.sheet || link.styleSheet)); + }, 0); + } + } + + if (!resourceId) { + // return the run-time API + callback({ + 'translateUrls':function (cssText, baseId) { + var baseUrl; + baseUrl = require['toUrl'](baseId); + baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1); + return translateUrls(cssText, baseUrl); + }, + 'injectStyle':function (cssText) { + return createStyle(cssText); + }, + + 'proxySheet':function (sheet) { + // for W3C, `sheet` is a reference to a + + +
      +
      +
      +

      Aloha

      + +

      Etymology

      + +

      The word aloha derives + from the Proto-Polynesian root *qalofa. It has cognates in other Polynesian languages, such as + Samoan alofa + and Māori aroha, also meaning "love."

      + +

      invalid Aloha Editor is the word's most advanced browser + based Editor made with aloha passion.

      + +

      A folk etymology claims that it derives from a compound of the Hawaiian words alo + meaning "presence", "front", "face", or "share"; and + ha, meaning "breath of life" or "essence of life." Although alo does indeed mean "presence" etc., the + word for breath is spelled with a macron + or kahakō over the a (hā) whereas the word aloha does not have a long a.

      + +

      Links are the web's Rocket + Power.

      + +

      Usage

      + +

      Before contact with the West, the words used for greeting were welina and anoai. Today, "aloha kakahiaka" + is the phrase for "good + morning." "Aloha ʻauinalā" means "good afternoon" and "aloha ahiahi" means "good evening." "Aloha kākou" + is a common form of "welcome to all."

      + +

      In modern Hawaiʻi, numerous businesses have aloha in their names, with more than 3 pages of listings in + the Oʻahu phone book alone.

      + +

      Trends

      + +

      Recent trends are popularizing the term elsewhere in the United States. Popular entertainer, Broadway + star and Hollywood actress Bette + Midler, born in Honolulu, uses the greeting frequently in national appearances. The word was also used + frequently in the hit television drama + Hawaii Five-O. In the influential 1982 film comedy Fast Times at Ridgemont High, the eccentric teacher + Mr. Hand makes use of the greeting. The + Aloha Spirit is a major concept in Lilo and Stitch, a very popular Disney series of movies and TV shows, + set in Hawaiʻi. The drama series Lost, + shot in Hawaiʻi, has a thank you note at the end of the credits saying "We thank the people of Hawaiʻi + and their Aloha Spirit". Aloha is a term + also used in the Nickelodeon program Rocket Power.

      +
        +
      • Arguably the most famous historical Hawaiian song, "Aloha ʻOe" was written by the last queen of + Hawaii, Liliʻuokalani. +
      • +
      • The term inspired the name of the ALOHA Protocol introduced in the 1970s by the University of + Hawaii. +
      • +
      • In Hawaii someone can be said to have or show aloha in the way they treat others; whether family, + friend, neighbor or stranger. +
      • +
      +
      +
      +
      + + \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/common/undo/lib/undo-plugin.js b/modules/core/aloha/static/plugins/common/undo/lib/undo-plugin.js new file mode 100644 index 000000000..f82c77c0c --- /dev/null +++ b/modules/core/aloha/static/plugins/common/undo/lib/undo-plugin.js @@ -0,0 +1,165 @@ +/* undo-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['aloha', 'jquery', 'aloha/plugin', 'undo/vendor/undo', 'undo/vendor/diff_match_patch_uncompressed'], + function (Aloha, jQuery, Plugin) { + "use strict"; + var + dmp = new diff_match_patch, + resetFlag = false; + + function reversePatch(patch) { + var reversed = dmp.patch_deepCopy(patch); + for (var i = 0; i < reversed.length; i++) { + for (var j = 0; j < reversed[i].diffs.length; j++) { + reversed[i].diffs[j][0] = -(reversed[i].diffs[j][0]); + } + } + return reversed; + } + + /** + * register the plugin with unique name + */ + return Plugin.create('undo', { + /** + * Initialize the plugin and set initialize flag on true + */ + init:function () { + this.stack = new Undo.Stack(); + var that = this; + var EditCommand = Undo.Command.extend({ + constructor:function (editable, patch) { + this.editable = editable; + this.patch = patch; + }, + execute:function () { + //command object is created after execution. + }, + undo:function () { + this.phase(reversePatch(this.patch)); + }, + redo:function () { + this.phase(this.patch); + }, + phase:function (patch) { + var contents = this.editable.getContents(), + applied = dmp.patch_apply(patch, contents), + newValue = applied[0], + didNotApply = applied[1]; + if (didNotApply.length) { + //error + } + this.reset(newValue); + }, + reset:function (val) { + //we have to trigger a smartContentChange event + //after doing an undo or redo, but we mustn't + //push new commands on the stack, because there + //are no new commands, just the old commands on + //the stack that are undone or redone. + resetFlag = true; + + var reactivate = null; + if (Aloha.getActiveEditable() === this.editable) { + Aloha.deactivateEditable(); + reactivate = this.editable; + } + + this.editable.obj.html(val); + + if (null !== reactivate) { + reactivate.activate(); + } + + //TODO: this is a call to an internal + //function. There should be an API to generate + //new smartContentChangeEvents. + this.editable.smartContentChange({type:'blur'}); + + resetFlag = false; + } + }); + + this.stack.changed = function () { + // update UI + }; + + Aloha.bind('aloha-editable-created', function (e, editable) { + editable.obj.bind('keydown', 'ctrl+z shift+ctrl+z', function (event) { + event.preventDefault(); + if (event.shiftKey) { + that.redo(); + } else { + that.undo(); + } + }); + }); + + Aloha.bind('aloha-smart-content-changed', function (jevent, aevent) { + // The editable only actually makes a snapshot when + // getSnapshotContent is called, so we need to call it now + // to ensure such a snapshot is made at all times, even when + // resetFlag===true, otherwise the snapshot grows stale. + var oldValue = aevent.getSnapshotContent(); + + if (resetFlag) { + return; + } + var newValue = aevent.editable.getContents(), + patch = dmp.patch_make(oldValue, newValue); + // only push an EditCommand if something actually changed. + if (0 !== patch.length) { + that.stack.execute(new EditCommand(aevent.editable, patch)); + } + }); + }, + + + /** + * toString method + * @return string + */ + toString:function () { + return 'undo'; + }, + undo:function () { + if (null !== Aloha.getActiveEditable()) { + Aloha.getActiveEditable().smartContentChange({type:'blur'}); + } + this.stack.canUndo() && this.stack.undo(); + }, + redo:function () { + if (null !== Aloha.getActiveEditable()) { + Aloha.getActiveEditable().smartContentChange({type:'blur'}); + } + this.stack.canRedo() && this.stack.redo(); + }, + stack:undefined // Defined in init above + + }); + }); diff --git a/modules/core/aloha/static/plugins/common/undo/package.json b/modules/core/aloha/static/plugins/common/undo/package.json new file mode 100644 index 000000000..2f7c769eb --- /dev/null +++ b/modules/core/aloha/static/plugins/common/undo/package.json @@ -0,0 +1,7 @@ +{ + "js":[ + "dep/diff_match_patch_uncompressed.js", + "dep/undo.js", + "src/undo.js" + ] +} diff --git a/modules/core/aloha/static/plugins/common/undo/vendor/diff_match_patch_uncompressed.js b/modules/core/aloha/static/plugins/common/undo/vendor/diff_match_patch_uncompressed.js new file mode 100644 index 000000000..d1b27c995 --- /dev/null +++ b/modules/core/aloha/static/plugins/common/undo/vendor/diff_match_patch_uncompressed.js @@ -0,0 +1,2168 @@ +/** + * Diff Match and Patch + * + * Copyright 2006 Google Inc. + * http://code.google.com/p/google-diff-match-patch/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Computes the difference between two texts to create a patch. + * Applies the patch onto another text, allowing for errors. + * @author fraser@google.com (Neil Fraser) + */ + +/** + * Class containing the diff, match and patch methods. + * @constructor + */ +function diff_match_patch() { + + // Defaults. + // Redefine these in your program to override the defaults. + + // Number of seconds to map a diff before giving up (0 for infinity). + this.Diff_Timeout = 1.0; + // Cost of an empty edit operation in terms of edit characters. + this.Diff_EditCost = 4; + // At what point is no match declared (0.0 = perfection, 1.0 = very loose). + this.Match_Threshold = 0.5; + // How far to search for a match (0 = exact location, 1000+ = broad match). + // A match this many characters away from the expected location will add + // 1.0 to the score (0.0 is a perfect match). + this.Match_Distance = 1000; + // When deleting a large block of text (over ~64 characters), how close does + // the contents have to match the expected contents. (0.0 = perfection, + // 1.0 = very loose). Note that Match_Threshold controls how closely the + // end points of a delete need to match. + this.Patch_DeleteThreshold = 0.5; + // Chunk size for context length. + this.Patch_Margin = 4; + + // The number of bits in an int. + this.Match_MaxBits = 32; +} + + +// DIFF FUNCTIONS + + +/** + * The data structure representing a diff is an array of tuples: + * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] + * which means: delete 'Hello', add 'Goodbye' and keep ' world.' + */ +var DIFF_DELETE = -1; +var DIFF_INSERT = 1; +var DIFF_EQUAL = 0; + +/** @typedef {!Array.} */ +diff_match_patch.Diff; + + +/** + * Find the differences between two texts. Simplifies the problem by stripping + * any common prefix or suffix off the texts before diffing. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean=} opt_checklines Optional speedup flag. If present and false, + * then don't run a line-level diff first to identify the changed areas. + * Defaults to true, which does a faster, slightly less optimal diff. + * @param {number} opt_deadline Optional time when the diff should be complete + * by. Used internally for recursive calls. Users should set DiffTimeout + * instead. + * @return {!Array.} Array of diff tuples. + */ +diff_match_patch.prototype.diff_main = function (text1, text2, opt_checklines, opt_deadline) { + // Set a deadline by which time the diff must be complete. + if (typeof opt_deadline == 'undefined') { + if (this.Diff_Timeout <= 0) { + opt_deadline = Number.MAX_VALUE; + } else { + opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000; + } + } + var deadline = opt_deadline; + + // Check for null inputs. + if (text1 == null || text2 == null) { + throw new Error('Null input. (diff_main)'); + } + + // Check for equality (speedup). + if (text1 == text2) { + if (text1) { + return [ + [DIFF_EQUAL, text1] + ]; + } + return []; + } + + if (typeof opt_checklines == 'undefined') { + opt_checklines = true; + } + var checklines = opt_checklines; + + // Trim off common prefix (speedup). + var commonlength = this.diff_commonPrefix(text1, text2); + var commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + + // Trim off common suffix (speedup). + commonlength = this.diff_commonSuffix(text1, text2); + var commonsuffix = text1.substring(text1.length - commonlength); + text1 = text1.substring(0, text1.length - commonlength); + text2 = text2.substring(0, text2.length - commonlength); + + // Compute the diff on the middle block. + var diffs = this.diff_compute_(text1, text2, checklines, deadline); + + // Restore the prefix and suffix. + if (commonprefix) { + diffs.unshift([DIFF_EQUAL, commonprefix]); + } + if (commonsuffix) { + diffs.push([DIFF_EQUAL, commonsuffix]); + } + this.diff_cleanupMerge(diffs); + return diffs; +}; + + +/** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean} checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster, slightly less optimal diff. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_compute_ = function (text1, text2, checklines, deadline) { + var diffs; + + if (!text1) { + // Just add some text (speedup). + return [ + [DIFF_INSERT, text2] + ]; + } + + if (!text2) { + // Just delete some text (speedup). + return [ + [DIFF_DELETE, text1] + ]; + } + + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + var i = longtext.indexOf(shorttext); + if (i != -1) { + // Shorter text is inside the longer text (speedup). + diffs = [ + [DIFF_INSERT, longtext.substring(0, i)], + [DIFF_EQUAL, shorttext], + [DIFF_INSERT, longtext.substring(i + shorttext.length)] + ]; + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) { + diffs[0][0] = diffs[2][0] = DIFF_DELETE; + } + return diffs; + } + + if (shorttext.length == 1) { + // Single character string. + // After the previous speedup, the character can't be an equality. + return [ + [DIFF_DELETE, text1], + [DIFF_INSERT, text2] + ]; + } + longtext = shorttext = null; // Garbage collect. + + // Check to see if the problem can be split in two. + var hm = this.diff_halfMatch_(text1, text2); + if (hm) { + // A half-match was found, sort out the return data. + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + var mid_common = hm[4]; + // Send both pairs off for separate processing. + var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline); + var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); + // Merge the results. + return diffs_a.concat([ + [DIFF_EQUAL, mid_common] + ], diffs_b); + } + + if (checklines && text1.length > 100 && text2.length > 100) { + return this.diff_lineMode_(text1, text2, deadline); + } + + return this.diff_bisect_(text1, text2, deadline); +}; + + +/** + * Do a quick line-level diff on both strings, then rediff the parts for + * greater accuracy. + * This speedup can produce non-minimal diffs. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_lineMode_ = function (text1, text2, deadline) { + // Scan the text on a line-by-line basis first. + var a = this.diff_linesToChars_(text1, text2); + text1 = /** @type {string} */(a[0]); + text2 = /** @type {string} */(a[1]); + var linearray = /** @type {!Array.} */(a[2]); + + var diffs = this.diff_bisect_(text1, text2, deadline); + + // Convert the diff back to original text. + this.diff_charsToLines_(diffs, linearray); + // Eliminate freak matches (e.g. blank lines) + this.diff_cleanupSemantic(diffs); + + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.push([DIFF_EQUAL, '']); + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + count_insert++; + text_insert += diffs[pointer][1]; + break; + case DIFF_DELETE: + count_delete++; + text_delete += diffs[pointer][1]; + break; + case DIFF_EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + var a = this.diff_main(text_delete, text_insert, false, deadline); + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert); + pointer = pointer - count_delete - count_insert; + for (var j = a.length - 1; j >= 0; j--) { + diffs.splice(pointer, 0, a[j]); + } + pointer = pointer + a.length; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + break; + } + pointer++; + } + diffs.pop(); // Remove the dummy entry at the end. + + return diffs; +}; + + +/** + * Find the 'middle snake' of a diff, split the problem in two + * and return the recursively constructed diff. + * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_bisect_ = function (text1, text2, deadline) { + // Cache the text lengths to prevent multiple calls. + var text1_length = text1.length; + var text2_length = text2.length; + var max_d = Math.ceil((text1_length + text2_length) / 2); + var v_offset = max_d; + var v_length = 2 * max_d; + var v1 = new Array(v_length); + var v2 = new Array(v_length); + // Setting all elements to -1 is faster in Chrome & Firefox than mixing + // integers and undefined. + for (var x = 0; x < v_length; x++) { + v1[x] = -1; + v2[x] = -1; + } + v1[v_offset + 1] = 0; + v2[v_offset + 1] = 0; + var delta = text1_length - text2_length; + // If the total number of characters is odd, then the front path will collide + // with the reverse path. + var front = (delta % 2 != 0); + // Offsets for start and end of k loop. + // Prevents mapping of space beyond the grid. + var k1start = 0; + var k1end = 0; + var k2start = 0; + var k2end = 0; + for (var d = 0; d < max_d; d++) { + // Bail out if deadline is reached. + if ((new Date()).getTime() > deadline) { + break; + } + + // Walk the front path one step. + for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + var k1_offset = v_offset + k1; + var x1; + if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) { + x1 = v1[k1_offset + 1]; + } else { + x1 = v1[k1_offset - 1] + 1; + } + var y1 = x1 - k1; + while (x1 < text1_length && y1 < text2_length && + text1.charAt(x1) == text2.charAt(y1)) { + x1++; + y1++; + } + v1[k1_offset] = x1; + if (x1 > text1_length) { + // Ran off the right of the graph. + k1end += 2; + } else if (y1 > text2_length) { + // Ran off the bottom of the graph. + k1start += 2; + } else if (front) { + var k2_offset = v_offset + delta - k1; + if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { + // Mirror x2 onto top-left coordinate system. + var x2 = text1_length - v2[k2_offset]; + if (x1 >= x2) { + // Overlap detected. + return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + } + } + } + } + + // Walk the reverse path one step. + for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + var k2_offset = v_offset + k2; + var x2; + if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) { + x2 = v2[k2_offset + 1]; + } else { + x2 = v2[k2_offset - 1] + 1; + } + var y2 = x2 - k2; + while (x2 < text1_length && y2 < text2_length && + text1.charAt(text1_length - x2 - 1) == + text2.charAt(text2_length - y2 - 1)) { + x2++; + y2++; + } + v2[k2_offset] = x2; + if (x2 > text1_length) { + // Ran off the left of the graph. + k2end += 2; + } else if (y2 > text2_length) { + // Ran off the top of the graph. + k2start += 2; + } else if (!front) { + var k1_offset = v_offset + delta - k2; + if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { + var x1 = v1[k1_offset]; + var y1 = v_offset + x1 - k1_offset; + // Mirror x2 onto top-left coordinate system. + x2 = text1_length - x2; + if (x1 >= x2) { + // Overlap detected. + return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); + } + } + } + } + } + // Diff took too long and hit the deadline or + // number of diffs equals number of characters, no commonality at all. + return [ + [DIFF_DELETE, text1], + [DIFF_INSERT, text2] + ]; +}; + + +/** + * Given the location of the 'middle snake', split the diff in two parts + * and recurse. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} x Index of split point in text1. + * @param {number} y Index of split point in text2. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ +diff_match_patch.prototype.diff_bisectSplit_ = function (text1, text2, x, y, deadline) { + var text1a = text1.substring(0, x); + var text2a = text2.substring(0, y); + var text1b = text1.substring(x); + var text2b = text2.substring(y); + + // Compute both diffs serially. + var diffs = this.diff_main(text1a, text2a, false, deadline); + var diffsb = this.diff_main(text1b, text2b, false, deadline); + + return diffs.concat(diffsb); +}; + + +/** + * Split two texts into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {!Array.>} Three element Array, containing the + * encoded text1, the encoded text2 and the array of unique strings. The + * zeroth element of the array of unique strings is intentionally blank. + * @private + */ +diff_match_patch.prototype.diff_linesToChars_ = function (text1, text2) { + var lineArray = []; // e.g. lineArray[4] == 'Hello\n' + var lineHash = {}; // e.g. lineHash['Hello\n'] == 4 + + // '\x00' is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray[0] = ''; + + /** + * Split a text into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * Modifies linearray and linehash through being a closure. + * @param {string} text String to encode. + * @return {string} Encoded string. + * @private + */ + function diff_linesToCharsMunge_(text) { + var chars = ''; + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + var lineStart = 0; + var lineEnd = -1; + // Keeping our own length variable is faster than looking it up. + var lineArrayLength = lineArray.length; + while (lineEnd < text.length - 1) { + lineEnd = text.indexOf('\n', lineStart); + if (lineEnd == -1) { + lineEnd = text.length - 1; + } + var line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : + (lineHash[line] !== undefined)) { + chars += String.fromCharCode(lineHash[line]); + } else { + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + } + return chars; + } + + var chars1 = diff_linesToCharsMunge_(text1); + var chars2 = diff_linesToCharsMunge_(text2); + return [chars1, chars2, lineArray]; +}; + + +/** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param {!Array.} diffs Array of diff tuples. + * @param {!Array.} lineArray Array of unique strings. + * @private + */ +diff_match_patch.prototype.diff_charsToLines_ = function (diffs, lineArray) { + for (var x = 0; x < diffs.length; x++) { + var chars = diffs[x][1]; + var text = []; + for (var y = 0; y < chars.length; y++) { + text[y] = lineArray[chars.charCodeAt(y)]; + } + diffs[x][1] = text.join(''); + } +}; + + +/** + * Determine the common prefix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the start of each + * string. + */ +diff_match_patch.prototype.diff_commonPrefix = function (text1, text2) { + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { + return 0; + } + // Binary search. + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + var pointerstart = 0; + while (pointermin < pointermid) { + if (text1.substring(pointerstart, pointermid) == + text2.substring(pointerstart, pointermid)) { + pointermin = pointermid; + pointerstart = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; +}; + + +/** + * Determine the common suffix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of each string. + */ +diff_match_patch.prototype.diff_commonSuffix = function (text1, text2) { + // Quick check for common null cases. + if (!text1 || !text2 || + text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { + return 0; + } + // Binary search. + // Performance analysis: http://neil.fraser.name/news/2007/10/09/ + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + var pointerend = 0; + while (pointermin < pointermid) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) == + text2.substring(text2.length - pointermid, text2.length - pointerend)) { + pointermin = pointermid; + pointerend = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; +}; + + +/** + * Determine if the suffix of one string is the prefix of another. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of the first + * string and the start of the second string. + * @private + */ +diff_match_patch.prototype.diff_commonOverlap_ = function (text1, text2) { + // Cache the text lengths to prevent multiple calls. + var text1_length = text1.length; + var text2_length = text2.length; + // Eliminate the null case. + if (text1_length == 0 || text2_length == 0) { + return 0; + } + // Truncate the longer string. + if (text1_length > text2_length) { + text1 = text1.substring(text1_length - text2_length); + } else if (text1_length < text2_length) { + text2 = text2.substring(0, text1_length); + } + var text_length = Math.min(text1_length, text2_length); + // Quick check for the worst case. + if (text1 == text2) { + return text_length; + } + + // Start by looking for a single character match + // and increase length until no match is found. + // Performance analysis: http://neil.fraser.name/news/2010/11/04/ + var best = 0; + var length = 1; + while (true) { + var pattern = text1.substring(text_length - length); + var found = text2.indexOf(pattern); + if (found == -1) { + return best; + } + length += found; + if (found == 0 || text1.substring(text_length - length) == + text2.substring(0, length)) { + best = length; + length++; + } + } +}; + + +/** + * Do the two texts share a substring which is at least half the length of the + * longer text? + * This speedup can produce non-minimal diffs. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {Array.} Five element Array, containing the prefix of + * text1, the suffix of text1, the prefix of text2, the suffix of + * text2 and the common middle. Or null if there was no match. + * @private + */ +diff_match_patch.prototype.diff_halfMatch_ = function (text1, text2) { + if (this.Diff_Timeout <= 0) { + // Don't risk returning a non-optimal diff if we have unlimited time. + return null; + } + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { + return null; // Pointless. + } + var dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Does a substring of shorttext exist within longtext such that the substring + * is at least half the length of longtext? + * Closure, but does not reference any external variables. + * @param {string} longtext Longer string. + * @param {string} shorttext Shorter string. + * @param {number} i Start index of quarter length substring within longtext. + * @return {Array.} Five element Array, containing the prefix of + * longtext, the suffix of longtext, the prefix of shorttext, the suffix + * of shorttext and the common middle. Or null if there was no match. + * @private + */ + function diff_halfMatchI_(longtext, shorttext, i) { + // Start with a 1/4 length substring at position i as a seed. + var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); + var j = -1; + var best_common = ''; + var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; + while ((j = shorttext.indexOf(seed, j + 1)) != -1) { + var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), + shorttext.substring(j)); + var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), + shorttext.substring(0, j)); + if (best_common.length < suffixLength + prefixLength) { + best_common = shorttext.substring(j - suffixLength, j) + + shorttext.substring(j, j + prefixLength); + best_longtext_a = longtext.substring(0, i - suffixLength); + best_longtext_b = longtext.substring(i + prefixLength); + best_shorttext_a = shorttext.substring(0, j - suffixLength); + best_shorttext_b = shorttext.substring(j + prefixLength); + } + } + if (best_common.length * 2 >= longtext.length) { + return [best_longtext_a, best_longtext_b, + best_shorttext_a, best_shorttext_b, best_common]; + } else { + return null; + } + } + + // First check if the second quarter is the seed for a half-match. + var hm1 = diff_halfMatchI_(longtext, shorttext, + Math.ceil(longtext.length / 4)); + // Check again based on the third quarter. + var hm2 = diff_halfMatchI_(longtext, shorttext, + Math.ceil(longtext.length / 2)); + var hm; + if (!hm1 && !hm2) { + return null; + } else if (!hm2) { + hm = hm1; + } else if (!hm1) { + hm = hm2; + } else { + // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + } + + // A half-match was found, sort out the return data. + var text1_a, text1_b, text2_a, text2_b; + if (text1.length > text2.length) { + text1_a = hm[0]; + text1_b = hm[1]; + text2_a = hm[2]; + text2_b = hm[3]; + } else { + text2_a = hm[0]; + text2_b = hm[1]; + text1_a = hm[2]; + text1_b = hm[3]; + } + var mid_common = hm[4]; + return [text1_a, text1_b, text2_a, text2_b, mid_common]; +}; + + +/** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupSemantic = function (diffs) { + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + var lastequality = null; // Always equal to equalities[equalitiesLength-1][1] + var pointer = 0; // Index of current position. + // Number of characters that changed prior to the equality. + var length_insertions1 = 0; + var length_deletions1 = 0; + // Number of characters that changed after the equality. + var length_insertions2 = 0; + var length_deletions2 = 0; + while (pointer < diffs.length) { + if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. + equalities[equalitiesLength++] = pointer; + length_insertions1 = length_insertions2; + length_deletions1 = length_deletions2; + length_insertions2 = 0; + length_deletions2 = 0; + lastequality = /** @type {string} */(diffs[pointer][1]); + } else { // An insertion or deletion. + if (diffs[pointer][0] == DIFF_INSERT) { + length_insertions2 += diffs[pointer][1].length; + } else { + length_deletions2 += diffs[pointer][1].length; + } + if (lastequality !== null && (lastequality.length <= + Math.max(length_insertions1, length_deletions1)) && + (lastequality.length <= Math.max(length_insertions2, + length_deletions2))) { + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, + [DIFF_DELETE, lastequality]); + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + // Throw away the equality we just deleted. + equalitiesLength--; + // Throw away the previous equality (it needs to be reevaluated). + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + length_insertions1 = 0; // Reset the counters. + length_deletions1 = 0; + length_insertions2 = 0; + length_deletions2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + // Normalize the diff. + if (changes) { + this.diff_cleanupMerge(diffs); + } + this.diff_cleanupSemanticLossless(diffs); + + // Find any overlaps between deletions and insertions. + // e.g: abcxxxxdef + // -> abcxxdef + pointer = 1; + while (pointer < diffs.length) { + if (diffs[pointer - 1][0] == DIFF_DELETE && + diffs[pointer][0] == DIFF_INSERT) { + var deletion = /** @type {string} */(diffs[pointer - 1][1]); + var insertion = /** @type {string} */(diffs[pointer][1]); + var overlap_length = this.diff_commonOverlap_(deletion, insertion); + if (overlap_length) { + // Overlap found. Insert an equality and trim the surrounding edits. + diffs.splice(pointer, 0, + [DIFF_EQUAL, insertion.substring(0, overlap_length)]); + diffs[pointer - 1][1] = + deletion.substring(0, deletion.length - overlap_length); + diffs[pointer + 1][1] = insertion.substring(overlap_length); + pointer++; + } + pointer++; + } + pointer++; + } +}; + + +/** + * Look for single edits surrounded on both sides by equalities + * which can be shifted sideways to align the edit to a word boundary. + * e.g: The cat came. -> The cat came. + * @param {!Array.} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupSemanticLossless = function (diffs) { + // Define some regex patterns for matching boundaries. + var punctuation = /[^a-zA-Z0-9]/; + var whitespace = /\s/; + var linebreak = /[\r\n]/; + var blanklineEnd = /\n\r?\n$/; + var blanklineStart = /^\r?\n\r?\n/; + + /** + * Given two strings, compute a score representing whether the internal + * boundary falls on logical boundaries. + * Scores range from 5 (best) to 0 (worst). + * Closure, makes reference to regex patterns defined above. + * @param {string} one First string. + * @param {string} two Second string. + * @return {number} The score. + * @private + */ + function diff_cleanupSemanticScore_(one, two) { + if (!one || !two) { + // Edges are the best. + return 5; + } + + // Each port of this function behaves slightly differently due to + // subtle differences in each language's definition of things like + // 'whitespace'. Since this function's purpose is largely cosmetic, + // the choice has been made to use each language's native features + // rather than force total conformity. + var score = 0; + // One point for non-alphanumeric. + if (one.charAt(one.length - 1).match(punctuation) || + two.charAt(0).match(punctuation)) { + score++; + // Two points for whitespace. + if (one.charAt(one.length - 1).match(whitespace) || + two.charAt(0).match(whitespace)) { + score++; + // Three points for line breaks. + if (one.charAt(one.length - 1).match(linebreak) || + two.charAt(0).match(linebreak)) { + score++; + // Four points for blank lines. + if (one.match(blanklineEnd) || two.match(blanklineStart)) { + score++; + } + } + } + } + return score; + } + + var pointer = 1; + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] == DIFF_EQUAL && + diffs[pointer + 1][0] == DIFF_EQUAL) { + // This is a single edit surrounded by equalities. + var equality1 = /** @type {string} */(diffs[pointer - 1][1]); + var edit = /** @type {string} */(diffs[pointer][1]); + var equality2 = /** @type {string} */(diffs[pointer + 1][1]); + + // First, shift the edit as far left as possible. + var commonOffset = this.diff_commonSuffix(equality1, edit); + if (commonOffset) { + var commonString = edit.substring(edit.length - commonOffset); + equality1 = equality1.substring(0, equality1.length - commonOffset); + edit = commonString + edit.substring(0, edit.length - commonOffset); + equality2 = commonString + equality2; + } + + // Second, step character by character right, looking for the best fit. + var bestEquality1 = equality1; + var bestEdit = edit; + var bestEquality2 = equality2; + var bestScore = diff_cleanupSemanticScore_(equality1, edit) + + diff_cleanupSemanticScore_(edit, equality2); + while (edit.charAt(0) === equality2.charAt(0)) { + equality1 += edit.charAt(0); + edit = edit.substring(1) + equality2.charAt(0); + equality2 = equality2.substring(1); + var score = diff_cleanupSemanticScore_(equality1, edit) + + diff_cleanupSemanticScore_(edit, equality2); + // The >= encourages trailing rather than leading whitespace on edits. + if (score >= bestScore) { + bestScore = score; + bestEquality1 = equality1; + bestEdit = edit; + bestEquality2 = equality2; + } + } + + if (diffs[pointer - 1][1] != bestEquality1) { + // We have an improvement, save it back to the diff. + if (bestEquality1) { + diffs[pointer - 1][1] = bestEquality1; + } else { + diffs.splice(pointer - 1, 1); + pointer--; + } + diffs[pointer][1] = bestEdit; + if (bestEquality2) { + diffs[pointer + 1][1] = bestEquality2; + } else { + diffs.splice(pointer + 1, 1); + pointer--; + } + } + } + pointer++; + } +}; + + +/** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupEfficiency = function (diffs) { + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var equalitiesLength = 0; // Keeping our own length var is faster in JS. + var lastequality = ''; // Always equal to equalities[equalitiesLength-1][1] + var pointer = 0; // Index of current position. + // Is there an insertion operation before the last equality. + var pre_ins = false; + // Is there a deletion operation before the last equality. + var pre_del = false; + // Is there an insertion operation after the last equality. + var post_ins = false; + // Is there a deletion operation after the last equality. + var post_del = false; + while (pointer < diffs.length) { + if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. + if (diffs[pointer][1].length < this.Diff_EditCost && + (post_ins || post_del)) { + // Candidate found. + equalities[equalitiesLength++] = pointer; + pre_ins = post_ins; + pre_del = post_del; + lastequality = diffs[pointer][1]; + } else { + // Not a candidate, and can never become one. + equalitiesLength = 0; + lastequality = ''; + } + post_ins = post_del = false; + } else { // An insertion or deletion. + if (diffs[pointer][0] == DIFF_DELETE) { + post_del = true; + } else { + post_ins = true; + } + /* + * Five types to be split: + * ABXYCD + * AXCD + * ABXC + * AXCD + * ABXC + */ + if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || + ((lastequality.length < this.Diff_EditCost / 2) && + (pre_ins + pre_del + post_ins + post_del) == 3))) { + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, + [DIFF_DELETE, lastequality]); + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; // Throw away the equality we just deleted; + lastequality = ''; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalitiesLength = 0; + } else { + equalitiesLength--; // Throw away the previous equality. + pointer = equalitiesLength > 0 ? + equalities[equalitiesLength - 1] : -1; + post_ins = post_del = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) { + this.diff_cleanupMerge(diffs); + } +}; + + +/** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param {!Array.} diffs Array of diff tuples. + */ +diff_match_patch.prototype.diff_cleanupMerge = function (diffs) { + diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + var commonlength; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + count_insert++; + text_insert += diffs[pointer][1]; + pointer++; + break; + case DIFF_DELETE: + count_delete++; + text_delete += diffs[pointer][1]; + pointer++; + break; + case DIFF_EQUAL: + // Upon reaching an equality, check for prior redundancies. + if (count_delete + count_insert > 1) { + if (count_delete !== 0 && count_insert !== 0) { + // Factor out any common prefixies. + commonlength = this.diff_commonPrefix(text_insert, text_delete); + if (commonlength !== 0) { + if ((pointer - count_delete - count_insert) > 0 && + diffs[pointer - count_delete - count_insert - 1][0] == + DIFF_EQUAL) { + diffs[pointer - count_delete - count_insert - 1][1] += + text_insert.substring(0, commonlength); + } else { + diffs.splice(0, 0, [DIFF_EQUAL, + text_insert.substring(0, commonlength)]); + pointer++; + } + text_insert = text_insert.substring(commonlength); + text_delete = text_delete.substring(commonlength); + } + // Factor out any common suffixies. + commonlength = this.diff_commonSuffix(text_insert, text_delete); + if (commonlength !== 0) { + diffs[pointer][1] = text_insert.substring(text_insert.length - + commonlength) + diffs[pointer][1]; + text_insert = text_insert.substring(0, text_insert.length - + commonlength); + text_delete = text_delete.substring(0, text_delete.length - + commonlength); + } + } + // Delete the offending records and add the merged ones. + if (count_delete === 0) { + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert, [DIFF_INSERT, text_insert]); + } else if (count_insert === 0) { + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert, [DIFF_DELETE, text_delete]); + } else { + diffs.splice(pointer - count_delete - count_insert, + count_delete + count_insert, [DIFF_DELETE, text_delete], + [DIFF_INSERT, text_insert]); + } + pointer = pointer - count_delete - count_insert + + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; + } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { + // Merge this equality with the previous one. + diffs[pointer - 1][1] += diffs[pointer][1]; + diffs.splice(pointer, 1); + } else { + pointer++; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + break; + } + } + if (diffs[diffs.length - 1][1] === '') { + diffs.pop(); // Remove the dummy entry at the end. + } + + // Second pass: look for single edits surrounded on both sides by equalities + // which can be shifted sideways to eliminate an equality. + // e.g: ABAC -> ABAC + var changes = false; + pointer = 1; + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] == DIFF_EQUAL && + diffs[pointer + 1][0] == DIFF_EQUAL) { + // This is a single edit surrounded by equalities. + if (diffs[pointer][1].substring(diffs[pointer][1].length - + diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { + // Shift the edit over the previous equality. + diffs[pointer][1] = diffs[pointer - 1][1] + + diffs[pointer][1].substring(0, diffs[pointer][1].length - + diffs[pointer - 1][1].length); + diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; + diffs.splice(pointer - 1, 1); + changes = true; + } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == + diffs[pointer + 1][1]) { + // Shift the edit over the next equality. + diffs[pointer - 1][1] += diffs[pointer + 1][1]; + diffs[pointer][1] = + diffs[pointer][1].substring(diffs[pointer + 1][1].length) + + diffs[pointer + 1][1]; + diffs.splice(pointer + 1, 1); + changes = true; + } + } + pointer++; + } + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + this.diff_cleanupMerge(diffs); + } +}; + + +/** + * loc is a location in text1, compute and return the equivalent location in + * text2. + * e.g. 'The cat' vs 'The big cat', 1->1, 5->8 + * @param {!Array.} diffs Array of diff tuples. + * @param {number} loc Location within text1. + * @return {number} Location within text2. + */ +diff_match_patch.prototype.diff_xIndex = function (diffs, loc) { + var chars1 = 0; + var chars2 = 0; + var last_chars1 = 0; + var last_chars2 = 0; + var x; + for (x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion. + chars1 += diffs[x][1].length; + } + if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion. + chars2 += diffs[x][1].length; + } + if (chars1 > loc) { // Overshot the location. + break; + } + last_chars1 = chars1; + last_chars2 = chars2; + } + // Was the location was deleted? + if (diffs.length != x && diffs[x][0] === DIFF_DELETE) { + return last_chars2; + } + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); +}; + + +/** + * Convert a diff array into a pretty HTML report. + * @param {!Array.} diffs Array of diff tuples. + * @return {string} HTML representation. + */ +diff_match_patch.prototype.diff_prettyHtml = function (diffs) { + var html = []; + var i = 0; + var pattern_amp = /&/g; + var pattern_lt = //g; + var pattern_para = /\n/g; + for (var x = 0; x < diffs.length; x++) { + var op = diffs[x][0]; // Operation (insert, delete, equal) + var data = diffs[x][1]; // Text of change. + var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<') + .replace(pattern_gt, '>').replace(pattern_para, '¶
      '); + switch (op) { + case DIFF_INSERT: + html[x] = '' + text + ''; + break; + case DIFF_DELETE: + html[x] = '' + text + ''; + break; + case DIFF_EQUAL: + html[x] = '' + text + ''; + break; + } + if (op !== DIFF_DELETE) { + i += data.length; + } + } + return html.join(''); +}; + + +/** + * Compute and return the source text (all equalities and deletions). + * @param {!Array.} diffs Array of diff tuples. + * @return {string} Source text. + */ +diff_match_patch.prototype.diff_text1 = function (diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_INSERT) { + text[x] = diffs[x][1]; + } + } + return text.join(''); +}; + + +/** + * Compute and return the destination text (all equalities and insertions). + * @param {!Array.} diffs Array of diff tuples. + * @return {string} Destination text. + */ +diff_match_patch.prototype.diff_text2 = function (diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + if (diffs[x][0] !== DIFF_DELETE) { + text[x] = diffs[x][1]; + } + } + return text.join(''); +}; + + +/** + * Compute the Levenshtein distance; the number of inserted, deleted or + * substituted characters. + * @param {!Array.} diffs Array of diff tuples. + * @return {number} Number of changes. + */ +diff_match_patch.prototype.diff_levenshtein = function (diffs) { + var levenshtein = 0; + var insertions = 0; + var deletions = 0; + for (var x = 0; x < diffs.length; x++) { + var op = diffs[x][0]; + var data = diffs[x][1]; + switch (op) { + case DIFF_INSERT: + insertions += data.length; + break; + case DIFF_DELETE: + deletions += data.length; + break; + case DIFF_EQUAL: + // A deletion and an insertion is one substitution. + levenshtein += Math.max(insertions, deletions); + insertions = 0; + deletions = 0; + break; + } + } + levenshtein += Math.max(insertions, deletions); + return levenshtein; +}; + + +/** + * Crush the diff into an encoded string which describes the operations + * required to transform text1 into text2. + * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. + * Operations are tab-separated. Inserted text is escaped using %xx notation. + * @param {!Array.} diffs Array of diff tuples. + * @return {string} Delta text. + */ +diff_match_patch.prototype.diff_toDelta = function (diffs) { + var text = []; + for (var x = 0; x < diffs.length; x++) { + switch (diffs[x][0]) { + case DIFF_INSERT: + text[x] = '+' + encodeURI(diffs[x][1]); + break; + case DIFF_DELETE: + text[x] = '-' + diffs[x][1].length; + break; + case DIFF_EQUAL: + text[x] = '=' + diffs[x][1].length; + break; + } + } + return text.join('\t').replace(/%20/g, ' '); +}; + + +/** + * Given the original text1, and an encoded string which describes the + * operations required to transform text1 into text2, compute the full diff. + * @param {string} text1 Source string for the diff. + * @param {string} delta Delta text. + * @return {!Array.} Array of diff tuples. + * @throws {!Error} If invalid input. + */ +diff_match_patch.prototype.diff_fromDelta = function (text1, delta) { + var diffs = []; + var diffsLength = 0; // Keeping our own length var is faster in JS. + var pointer = 0; // Cursor in text1 + var tokens = delta.split(/\t/g); + for (var x = 0; x < tokens.length; x++) { + // Each token begins with a one character parameter which specifies the + // operation of this token (delete, insert, equality). + var param = tokens[x].substring(1); + switch (tokens[x].charAt(0)) { + case '+': + try { + diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)]; + } catch (ex) { + // Malformed URI sequence. + throw new Error('Illegal escape in diff_fromDelta: ' + param); + } + break; + case '-': + // Fall through. + case '=': + var n = parseInt(param, 10); + if (isNaN(n) || n < 0) { + throw new Error('Invalid number in diff_fromDelta: ' + param); + } + var text = text1.substring(pointer, pointer += n); + if (tokens[x].charAt(0) == '=') { + diffs[diffsLength++] = [DIFF_EQUAL, text]; + } else { + diffs[diffsLength++] = [DIFF_DELETE, text]; + } + break; + default: + // Blank tokens are ok (from a trailing \t). + // Anything else is an error. + if (tokens[x]) { + throw new Error('Invalid diff operation in diff_fromDelta: ' + + tokens[x]); + } + } + } + if (pointer != text1.length) { + throw new Error('Delta length (' + pointer + + ') does not equal source text length (' + text1.length + ').'); + } + return diffs; +}; + + +// MATCH FUNCTIONS + + +/** + * Locate the best instance of 'pattern' in 'text' near 'loc'. + * @param {string} text The text to search. + * @param {string} pattern The pattern to search for. + * @param {number} loc The location to search around. + * @return {number} Best match index or -1. + */ +diff_match_patch.prototype.match_main = function (text, pattern, loc) { + // Check for null inputs. + if (text == null || pattern == null || loc == null) { + throw new Error('Null input. (match_main)'); + } + + loc = Math.max(0, Math.min(loc, text.length)); + if (text == pattern) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (!text.length) { + // Nothing to match. + return -1; + } else if (text.substring(loc, loc + pattern.length) == pattern) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + return this.match_bitap_(text, pattern, loc); + } +}; + + +/** + * Locate the best instance of 'pattern' in 'text' near 'loc' using the + * Bitap algorithm. + * @param {string} text The text to search. + * @param {string} pattern The pattern to search for. + * @param {number} loc The location to search around. + * @return {number} Best match index or -1. + * @private + */ +diff_match_patch.prototype.match_bitap_ = function (text, pattern, loc) { + if (pattern.length > this.Match_MaxBits) { + throw new Error('Pattern too long for this browser.'); + } + + // Initialise the alphabet. + var s = this.match_alphabet_(pattern); + + var dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Compute and return the score for a match with e errors and x location. + * Accesses loc and pattern through being a closure. + * @param {number} e Number of errors in match. + * @param {number} x Location of match. + * @return {number} Overall score for match (0.0 = good, 1.0 = bad). + * @private + */ + function match_bitapScore_(e, x) { + var accuracy = e / pattern.length; + var proximity = Math.abs(loc - x); + if (!dmp.Match_Distance) { + // Dodge divide by zero error. + return proximity ? 1.0 : accuracy; + } + return accuracy + (proximity / dmp.Match_Distance); + } + + // Highest score beyond which we give up. + var score_threshold = this.Match_Threshold; + // Is there a nearby exact match? (speedup) + var best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc + pattern.length); + if (best_loc != -1) { + score_threshold = + Math.min(match_bitapScore_(0, best_loc), score_threshold); + } + } + + // Initialise the bit arrays. + var matchmask = 1 << (pattern.length - 1); + best_loc = -1; + + var bin_min, bin_mid; + var bin_max = pattern.length + text.length; + var last_rd; + for (var d = 0; d < pattern.length; d++) { + // Scan for the best match; each iteration allows for one more error. + // Run a binary search to determine how far from 'loc' we can stray at this + // error level. + bin_min = 0; + bin_mid = bin_max; + while (bin_min < bin_mid) { + if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) { + bin_min = bin_mid; + } else { + bin_max = bin_mid; + } + bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min); + } + // Use the result from this iteration as the maximum for the next. + bin_max = bin_mid; + var start = Math.max(1, loc - bin_mid + 1); + var finish = Math.min(loc + bin_mid, text.length) + pattern.length; + + var rd = Array(finish + 2); + rd[finish + 1] = (1 << d) - 1; + for (var j = finish; j >= start; j--) { + // The alphabet (s) is a sparse hash, so the following line generates + // warnings. + var charMatch = s[text.charAt(j - 1)]; + if (d === 0) { // First pass: exact match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; + } else { // Subsequent passes: fuzzy match. + rd[j] = ((rd[j + 1] << 1) | 1) & charMatch | + (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | + last_rd[j + 1]; + } + if (rd[j] & matchmask) { + var score = match_bitapScore_(d, j - 1); + // This match will almost certainly be better than any existing match. + // But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j - 1; + if (best_loc > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(1, 2 * loc - best_loc); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + // No hope for a (better) match at greater error levels. + if (match_bitapScore_(d + 1, loc) > score_threshold) { + break; + } + last_rd = rd; + } + return best_loc; +}; + + +/** + * Initialise the alphabet for the Bitap algorithm. + * @param {string} pattern The text to encode. + * @return {!Object} Hash of character locations. + * @private + */ +diff_match_patch.prototype.match_alphabet_ = function (pattern) { + var s = {}; + for (var i = 0; i < pattern.length; i++) { + s[pattern.charAt(i)] = 0; + } + for (var i = 0; i < pattern.length; i++) { + s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1); + } + return s; +}; + + +// PATCH FUNCTIONS + + +/** + * Increase the context until it is unique, + * but don't let the pattern expand beyond Match_MaxBits. + * @param {!patch_obj} patch The patch to grow. + * @param {string} text Source text. + * @private + */ +diff_match_patch.prototype.patch_addContext_ = function (patch, text) { + if (text.length == 0) { + return; + } + var pattern = text.substring(patch.start2, patch.start2 + patch.length1); + var padding = 0; + + // Look for the first and last matches of pattern in text. If two different + // matches are found, increase the pattern length. + while (text.indexOf(pattern) != text.lastIndexOf(pattern) && + pattern.length < this.Match_MaxBits - this.Patch_Margin - + this.Patch_Margin) { + padding += this.Patch_Margin; + pattern = text.substring(patch.start2 - padding, + patch.start2 + patch.length1 + padding); + } + // Add one chunk for good luck. + padding += this.Patch_Margin; + + // Add the prefix. + var prefix = text.substring(patch.start2 - padding, patch.start2); + if (prefix) { + patch.diffs.unshift([DIFF_EQUAL, prefix]); + } + // Add the suffix. + var suffix = text.substring(patch.start2 + patch.length1, + patch.start2 + patch.length1 + padding); + if (suffix) { + patch.diffs.push([DIFF_EQUAL, suffix]); + } + + // Roll back the start points. + patch.start1 -= prefix.length; + patch.start2 -= prefix.length; + // Extend the lengths. + patch.length1 += prefix.length + suffix.length; + patch.length2 += prefix.length + suffix.length; +}; + + +/** + * Compute a list of patches to turn text1 into text2. + * Use diffs if provided, otherwise compute it ourselves. + * There are four ways to call this function, depending on what data is + * available to the caller: + * Method 1: + * a = text1, b = text2 + * Method 2: + * a = diffs + * Method 3 (optimal): + * a = text1, b = diffs + * Method 4 (deprecated, use method 3): + * a = text1, b = text2, c = diffs + * + * @param {string|!Array.} a text1 (methods 1,3,4) or + * Array of diff tuples for text1 to text2 (method 2). + * @param {string|!Array.} opt_b text2 (methods 1,4) or + * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2). + * @param {string|!Array.} opt_c Array of diff tuples + * for text1 to text2 (method 4) or undefined (methods 1,2,3). + * @return {!Array.} Array of patch objects. + */ +diff_match_patch.prototype.patch_make = function (a, opt_b, opt_c) { + var text1, diffs; + if (typeof a == 'string' && typeof opt_b == 'string' && + typeof opt_c == 'undefined') { + // Method 1: text1, text2 + // Compute diffs from text1 and text2. + text1 = /** @type {string} */(a); + diffs = this.diff_main(text1, /** @type {string} */(opt_b), true); + if (diffs.length > 2) { + this.diff_cleanupSemantic(diffs); + this.diff_cleanupEfficiency(diffs); + } + } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && + typeof opt_c == 'undefined') { + // Method 2: diffs + // Compute text1 from diffs. + diffs = /** @type {!Array.} */(a); + text1 = this.diff_text1(diffs); + } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && + typeof opt_c == 'undefined') { + // Method 3: text1, diffs + text1 = /** @type {string} */(a); + diffs = /** @type {!Array.} */(opt_b); + } else if (typeof a == 'string' && typeof opt_b == 'string' && + opt_c && typeof opt_c == 'object') { + // Method 4: text1, text2, diffs + // text2 is not used. + text1 = /** @type {string} */(a); + diffs = /** @type {!Array.} */(opt_c); + } else { + throw new Error('Unknown call format to patch_make.'); + } + + if (diffs.length === 0) { + return []; // Get rid of the null case. + } + var patches = []; + var patch = new patch_obj(); + var patchDiffLength = 0; // Keeping our own length var is faster in JS. + var char_count1 = 0; // Number of characters into the text1 string. + var char_count2 = 0; // Number of characters into the text2 string. + // Start with text1 (prepatch_text) and apply the diffs until we arrive at + // text2 (postpatch_text). We recreate the patches one by one to determine + // context info. + var prepatch_text = text1; + var postpatch_text = text1; + for (var x = 0; x < diffs.length; x++) { + var diff_type = diffs[x][0]; + var diff_text = diffs[x][1]; + + if (!patchDiffLength && diff_type !== DIFF_EQUAL) { + // A new patch starts here. + patch.start1 = char_count1; + patch.start2 = char_count2; + } + + switch (diff_type) { + case DIFF_INSERT: + patch.diffs[patchDiffLength++] = diffs[x]; + patch.length2 += diff_text.length; + postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + + postpatch_text.substring(char_count2); + break; + case DIFF_DELETE: + patch.length1 += diff_text.length; + patch.diffs[patchDiffLength++] = diffs[x]; + postpatch_text = postpatch_text.substring(0, char_count2) + + postpatch_text.substring(char_count2 + + diff_text.length); + break; + case DIFF_EQUAL: + if (diff_text.length <= 2 * this.Patch_Margin && + patchDiffLength && diffs.length != x + 1) { + // Small equality inside a patch. + patch.diffs[patchDiffLength++] = diffs[x]; + patch.length1 += diff_text.length; + patch.length2 += diff_text.length; + } else if (diff_text.length >= 2 * this.Patch_Margin) { + // Time for a new patch. + if (patchDiffLength) { + this.patch_addContext_(patch, prepatch_text); + patches.push(patch); + patch = new patch_obj(); + patchDiffLength = 0; + // Unlike Unidiff, our patch lists have a rolling context. + // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff + // Update prepatch text & pos to reflect the application of the + // just completed patch. + prepatch_text = postpatch_text; + char_count1 = char_count2; + } + } + break; + } + + // Update the current character count. + if (diff_type !== DIFF_INSERT) { + char_count1 += diff_text.length; + } + if (diff_type !== DIFF_DELETE) { + char_count2 += diff_text.length; + } + } + // Pick up the leftover patch if not empty. + if (patchDiffLength) { + this.patch_addContext_(patch, prepatch_text); + patches.push(patch); + } + + return patches; +}; + + +/** + * Given an array of patches, return another array that is identical. + * @param {!Array.} patches Array of patch objects. + * @return {!Array.} Array of patch objects. + */ +diff_match_patch.prototype.patch_deepCopy = function (patches) { + // Making deep copies is hard in JavaScript. + var patchesCopy = []; + for (var x = 0; x < patches.length; x++) { + var patch = patches[x]; + var patchCopy = new patch_obj(); + patchCopy.diffs = []; + for (var y = 0; y < patch.diffs.length; y++) { + patchCopy.diffs[y] = patch.diffs[y].slice(); + } + patchCopy.start1 = patch.start1; + patchCopy.start2 = patch.start2; + patchCopy.length1 = patch.length1; + patchCopy.length2 = patch.length2; + patchesCopy[x] = patchCopy; + } + return patchesCopy; +}; + + +/** + * Merge a set of patches onto the text. Return a patched text, as well + * as a list of true/false values indicating which patches were applied. + * @param {!Array.} patches Array of patch objects. + * @param {string} text Old text. + * @return {!Array.>} Two element Array, containing the + * new text and an array of boolean values. + */ +diff_match_patch.prototype.patch_apply = function (patches, text) { + if (patches.length == 0) { + return [text, []]; + } + + // Deep copy the patches so that no changes are made to originals. + patches = this.patch_deepCopy(patches); + + var nullPadding = this.patch_addPadding(patches); + text = nullPadding + text + nullPadding; + + this.patch_splitMax(patches); + // delta keeps track of the offset between the expected and actual location + // of the previous patch. If there are patches expected at positions 10 and + // 20, but the first patch was found at 12, delta is 2 and the second patch + // has an effective expected position of 22. + var delta = 0; + var results = []; + for (var x = 0; x < patches.length; x++) { + var expected_loc = patches[x].start2 + delta; + var text1 = this.diff_text1(patches[x].diffs); + var start_loc; + var end_loc = -1; + if (text1.length > this.Match_MaxBits) { + // patch_splitMax will only provide an oversized pattern in the case of + // a monster delete. + start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), + expected_loc); + if (start_loc != -1) { + end_loc = this.match_main(text, + text1.substring(text1.length - this.Match_MaxBits), + expected_loc + text1.length - this.Match_MaxBits); + if (end_loc == -1 || start_loc >= end_loc) { + // Can't find valid trailing context. Drop this patch. + start_loc = -1; + } + } + } else { + start_loc = this.match_main(text, text1, expected_loc); + } + if (start_loc == -1) { + // No match found. :( + results[x] = false; + // Subtract the delta for this failed patch from subsequent patches. + delta -= patches[x].length2 - patches[x].length1; + } else { + // Found a match. :) + results[x] = true; + delta = start_loc - expected_loc; + var text2; + if (end_loc == -1) { + text2 = text.substring(start_loc, start_loc + text1.length); + } else { + text2 = text.substring(start_loc, end_loc + this.Match_MaxBits); + } + if (text1 == text2) { + // Perfect match, just shove the replacement text in. + text = text.substring(0, start_loc) + + this.diff_text2(patches[x].diffs) + + text.substring(start_loc + text1.length); + } else { + // Imperfect match. Run a diff to get a framework of equivalent + // indices. + var diffs = this.diff_main(text1, text2, false); + if (text1.length > this.Match_MaxBits && + this.diff_levenshtein(diffs) / text1.length > + this.Patch_DeleteThreshold) { + // The end points match, but the content is unacceptably bad. + results[x] = false; + } else { + this.diff_cleanupSemanticLossless(diffs); + var index1 = 0; + var index2; + for (var y = 0; y < patches[x].diffs.length; y++) { + var mod = patches[x].diffs[y]; + if (mod[0] !== DIFF_EQUAL) { + index2 = this.diff_xIndex(diffs, index1); + } + if (mod[0] === DIFF_INSERT) { // Insertion + text = text.substring(0, start_loc + index2) + mod[1] + + text.substring(start_loc + index2); + } else if (mod[0] === DIFF_DELETE) { // Deletion + text = text.substring(0, start_loc + index2) + + text.substring(start_loc + this.diff_xIndex(diffs, + index1 + mod[1].length)); + } + if (mod[0] !== DIFF_DELETE) { + index1 += mod[1].length; + } + } + } + } + } + } + // Strip the padding off. + text = text.substring(nullPadding.length, text.length - nullPadding.length); + return [text, results]; +}; + + +/** + * Add some padding on text start and end so that edges can match something. + * Intended to be called only from within patch_apply. + * @param {!Array.} patches Array of patch objects. + * @return {string} The padding string added to each side. + */ +diff_match_patch.prototype.patch_addPadding = function (patches) { + var paddingLength = this.Patch_Margin; + var nullPadding = ''; + for (var x = 1; x <= paddingLength; x++) { + nullPadding += String.fromCharCode(x); + } + + // Bump all the patches forward. + for (var x = 0; x < patches.length; x++) { + patches[x].start1 += paddingLength; + patches[x].start2 += paddingLength; + } + + // Add some padding on start of first diff. + var patch = patches[0]; + var diffs = patch.diffs; + if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) { + // Add nullPadding equality. + diffs.unshift([DIFF_EQUAL, nullPadding]); + patch.start1 -= paddingLength; // Should be 0. + patch.start2 -= paddingLength; // Should be 0. + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs[0][1].length) { + // Grow first equality. + var extraLength = paddingLength - diffs[0][1].length; + diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1]; + patch.start1 -= extraLength; + patch.start2 -= extraLength; + patch.length1 += extraLength; + patch.length2 += extraLength; + } + + // Add some padding on end of last diff. + patch = patches[patches.length - 1]; + diffs = patch.diffs; + if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) { + // Add nullPadding equality. + diffs.push([DIFF_EQUAL, nullPadding]); + patch.length1 += paddingLength; + patch.length2 += paddingLength; + } else if (paddingLength > diffs[diffs.length - 1][1].length) { + // Grow last equality. + var extraLength = paddingLength - diffs[diffs.length - 1][1].length; + diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength); + patch.length1 += extraLength; + patch.length2 += extraLength; + } + + return nullPadding; +}; + + +/** + * Look through the patches and break up any which are longer than the maximum + * limit of the match algorithm. + * Intended to be called only from within patch_apply. + * @param {!Array.} patches Array of patch objects. + */ +diff_match_patch.prototype.patch_splitMax = function (patches) { + var patch_size = this.Match_MaxBits; + for (var x = 0; x < patches.length; x++) { + if (patches[x].length1 > patch_size) { + var bigpatch = patches[x]; + // Remove the big old patch. + patches.splice(x--, 1); + var start1 = bigpatch.start1; + var start2 = bigpatch.start2; + var precontext = ''; + while (bigpatch.diffs.length !== 0) { + // Create one of several smaller patches. + var patch = new patch_obj(); + var empty = true; + patch.start1 = start1 - precontext.length; + patch.start2 = start2 - precontext.length; + if (precontext !== '') { + patch.length1 = patch.length2 = precontext.length; + patch.diffs.push([DIFF_EQUAL, precontext]); + } + while (bigpatch.diffs.length !== 0 && + patch.length1 < patch_size - this.Patch_Margin) { + var diff_type = bigpatch.diffs[0][0]; + var diff_text = bigpatch.diffs[0][1]; + if (diff_type === DIFF_INSERT) { + // Insertions are harmless. + patch.length2 += diff_text.length; + start2 += diff_text.length; + patch.diffs.push(bigpatch.diffs.shift()); + empty = false; + } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && + patch.diffs[0][0] == DIFF_EQUAL && + diff_text.length > 2 * patch_size) { + // This is a large deletion. Let it pass in one chunk. + patch.length1 += diff_text.length; + start1 += diff_text.length; + empty = false; + patch.diffs.push([diff_type, diff_text]); + bigpatch.diffs.shift(); + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, + patch_size - patch.length1 - this.Patch_Margin); + patch.length1 += diff_text.length; + start1 += diff_text.length; + if (diff_type === DIFF_EQUAL) { + patch.length2 += diff_text.length; + start2 += diff_text.length; + } else { + empty = false; + } + patch.diffs.push([diff_type, diff_text]); + if (diff_text == bigpatch.diffs[0][1]) { + bigpatch.diffs.shift(); + } else { + bigpatch.diffs[0][1] = + bigpatch.diffs[0][1].substring(diff_text.length); + } + } + } + // Compute the head context for the next patch. + precontext = this.diff_text2(patch.diffs); + precontext = + precontext.substring(precontext.length - this.Patch_Margin); + // Append the end context for this patch. + var postcontext = this.diff_text1(bigpatch.diffs) + .substring(0, this.Patch_Margin); + if (postcontext !== '') { + patch.length1 += postcontext.length; + patch.length2 += postcontext.length; + if (patch.diffs.length !== 0 && + patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) { + patch.diffs[patch.diffs.length - 1][1] += postcontext; + } else { + patch.diffs.push([DIFF_EQUAL, postcontext]); + } + } + if (!empty) { + patches.splice(++x, 0, patch); + } + } + } + } +}; + + +/** + * Take a list of patches and return a textual representation. + * @param {!Array.} patches Array of patch objects. + * @return {string} Text representation of patches. + */ +diff_match_patch.prototype.patch_toText = function (patches) { + var text = []; + for (var x = 0; x < patches.length; x++) { + text[x] = patches[x]; + } + return text.join(''); +}; + + +/** + * Parse a textual representation of patches and return a list of patch objects. + * @param {string} textline Text representation of patches. + * @return {!Array.} Array of patch objects. + * @throws {!Error} If invalid input. + */ +diff_match_patch.prototype.patch_fromText = function (textline) { + var patches = []; + if (!textline) { + return patches; + } + var text = textline.split('\n'); + var textPointer = 0; + var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; + while (textPointer < text.length) { + var m = text[textPointer].match(patchHeader); + if (!m) { + throw new Error('Invalid patch string: ' + text[textPointer]); + } + var patch = new patch_obj(); + patches.push(patch); + patch.start1 = parseInt(m[1], 10); + if (m[2] === '') { + patch.start1--; + patch.length1 = 1; + } else if (m[2] == '0') { + patch.length1 = 0; + } else { + patch.start1--; + patch.length1 = parseInt(m[2], 10); + } + + patch.start2 = parseInt(m[3], 10); + if (m[4] === '') { + patch.start2--; + patch.length2 = 1; + } else if (m[4] == '0') { + patch.length2 = 0; + } else { + patch.start2--; + patch.length2 = parseInt(m[4], 10); + } + textPointer++; + + while (textPointer < text.length) { + var sign = text[textPointer].charAt(0); + try { + var line = decodeURI(text[textPointer].substring(1)); + } catch (ex) { + // Malformed URI sequence. + throw new Error('Illegal escape in patch_fromText: ' + line); + } + if (sign == '-') { + // Deletion. + patch.diffs.push([DIFF_DELETE, line]); + } else if (sign == '+') { + // Insertion. + patch.diffs.push([DIFF_INSERT, line]); + } else if (sign == ' ') { + // Minor equality. + patch.diffs.push([DIFF_EQUAL, line]); + } else if (sign == '@') { + // Start of next patch. + break; + } else if (sign === '') { + // Blank line? Whatever. + } else { + // WTF? + throw new Error('Invalid patch mode "' + sign + '" in: ' + line); + } + textPointer++; + } + } + return patches; +}; + + +/** + * Class representing one patch operation. + * @constructor + */ +function patch_obj() { + /** @type {!Array.} */ + this.diffs = []; + /** @type {?number} */ + this.start1 = null; + /** @type {?number} */ + this.start2 = null; + /** @type {number} */ + this.length1 = 0; + /** @type {number} */ + this.length2 = 0; +} + + +/** + * Emmulate GNU diff's format. + * Header: @@ -382,8 +481,9 @@ + * Indicies are printed as 1-based, not 0-based. + * @return {string} The GNU diff string. + */ +patch_obj.prototype.toString = function () { + var coords1, coords2; + if (this.length1 === 0) { + coords1 = this.start1 + ',0'; + } else if (this.length1 == 1) { + coords1 = this.start1 + 1; + } else { + coords1 = (this.start1 + 1) + ',' + this.length1; + } + if (this.length2 === 0) { + coords2 = this.start2 + ',0'; + } else if (this.length2 == 1) { + coords2 = this.start2 + 1; + } else { + coords2 = (this.start2 + 1) + ',' + this.length2; + } + var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\n']; + var op; + // Escape the body of the patch with %xx notation. + for (var x = 0; x < this.diffs.length; x++) { + switch (this.diffs[x][0]) { + case DIFF_INSERT: + op = '+'; + break; + case DIFF_DELETE: + op = '-'; + break; + case DIFF_EQUAL: + op = ' '; + break; + } + text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\n'; + } + return text.join('').replace(/%20/g, ' '); +}; + + +// Export these global variables so that they survive Google's JS compiler. +window['diff_match_patch'] = diff_match_patch; +window['patch_obj'] = patch_obj; +window['DIFF_DELETE'] = DIFF_DELETE; +window['DIFF_INSERT'] = DIFF_INSERT; +window['DIFF_EQUAL'] = DIFF_EQUAL; diff --git a/modules/core/aloha/static/plugins/common/undo/vendor/undo.js b/modules/core/aloha/static/plugins/common/undo/vendor/undo.js new file mode 100644 index 000000000..7255defa9 --- /dev/null +++ b/modules/core/aloha/static/plugins/common/undo/vendor/undo.js @@ -0,0 +1,126 @@ +/* + * Undo.js - A undo/redo framework for JavaScript + * + * http://jzaefferer.github.com/undo + * + * Copyright (c) 2011 Jörn Zaefferer + * MIT licensed. + */ +(function () { + 'use strict'; + +// based on Backbone.js' inherits + var ctor = function () { + }; + var inherits = function (parent, protoProps) { + var child; + + if (protoProps && protoProps.hasOwnProperty('constructor')) { + child = protoProps.constructor; + } else { + child = function () { + return parent.apply(this, arguments); + }; + } + + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + + if (protoProps) { + extend(child.prototype, protoProps); + } + + child.prototype.constructor = child; + child.__super__ = parent.prototype; + return child; + }; + + function extend(target, ref) { + var name; + for (name in ref) { + var value = ref[name]; + if (value !== undefined) { + target[ name ] = value; + } + } + return target; + }; + + var Undo; + if (typeof exports !== 'undefined') { + Undo = exports; + } else { + Undo = this.Undo = {}; + } + + Undo.Stack = function () { + this.commands = []; + this.stackPosition = -1; + this.savePosition = -1; + }; + + extend(Undo.Stack.prototype, { + execute:function (command) { + this._clearRedo(); + command.execute(); + this.commands.push(command); + this.stackPosition++; + this.changed(); + }, + undo:function () { + this.commands[this.stackPosition].undo(); + this.stackPosition--; + this.changed(); + }, + canUndo:function () { + return this.stackPosition >= 0; + }, + redo:function () { + this.stackPosition++; + this.commands[this.stackPosition].redo(); + this.changed(); + }, + canRedo:function () { + return this.stackPosition < this.commands.length - 1; + }, + save:function () { + this.savePosition = this.stackPosition; + this.changed(); + }, + dirty:function () { + return this.stackPosition != this.savePosition; + }, + _clearRedo:function () { + // TODO there's probably a more efficient way for this + this.commands = this.commands.slice(0, this.stackPosition + 1); + }, + changed:function () { + // do nothing, override + } + }); + + Undo.Command = function (name) { + this.name = name; + } + + var up = new Error("override me!"); + + extend(Undo.Command.prototype, { + execute:function () { + throw up; + }, + undo:function () { + throw up; + }, + redo:function () { + this.execute(); + } + }); + + Undo.Command.extend = function (protoProps) { + var child = inherits(this, protoProps); + child.extend = Undo.Command.extend; + return child; + }; + +}).call(this); diff --git a/modules/core/aloha/static/plugins/extra/attributes/README b/modules/core/aloha/static/plugins/extra/attributes/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/attributes/css/attributes.css b/modules/core/aloha/static/plugins/extra/attributes/css/attributes.css new file mode 100644 index 000000000..a4788a249 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/css/attributes.css @@ -0,0 +1,37 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ +.aloha-attributes-item label { + display: block; + margin-left: 5px; +} + +.aloha-attributes-item input { + display: block; + width: 190px; + margin-bottom: 10px; + margin-top: 0px; +} + +.aloha-attributes-container h2 { + margin-left: 5px; +} + +.aloha-attributes-newattribute label { + margin-left: 5px; + width: 46px; + margin-right: 12px; + display: inline-block; +} + +.aloha-attributes-newattribute input { + margin-left: 5px; +} + +.aloha-attributes-newattribute button { + margin-left: 5px; + margin-bottom: 5px; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/attributes/lib/attributes-plugin.js b/modules/core/aloha/static/plugins/extra/attributes/lib/attributes-plugin.js new file mode 100644 index 000000000..62db1da59 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/lib/attributes-plugin.js @@ -0,0 +1,243 @@ +/* attributes-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['aloha', 'aloha/plugin', 'aloha/floatingmenu', 'i18n!attributes/nls/i18n', 'i18n!aloha/nls/i18n', 'css!attributes/css/attributes.css'], + function (Aloha, Plugin, FloatingMenu, i18n, i18nCore) { + "use strict"; + + var + jQuery = Aloha.jQuery, + $ = jQuery, + GENTICS = window.GENTICS, + Aloha = window.Aloha; + + return Plugin.create('attributes', { + _constructor:function () { + this._super('attributes'); + }, + + // namespace prefix for this plugin + // Pseudo-namespace prefix + ns:'aloha-attributes', + uid:'attributes', + // namespaced classnames + nsClasses:{}, + + + supplant:function (str, obj) { + return str.replace(/\{([a-z0-9\-\_]+)\}/ig, function (str, p1, offset, s) { + var replacement = obj[p1] || str; + return (typeof replacement == 'function') ? replacement() : replacement; + }); + }, + + /** + * Wrapper to all the supplant method on a given string, taking the + * nsClasses object as the associative array containing the replacement + * pairs + * + * @param {String} str + * @return {String} + */ + renderTemplate:function (str) { + return (typeof str === 'string') ? this.supplant(str, this.nsClasses) : str; + }, + + /** + * Generates a selector string with this component's namepsace prefixed the + * each classname + * + * Usage: + * nsSel('header,', 'main,', 'foooter ul') + * will return + * ".aloha-myplugin-header, .aloha-myplugin-main, .aloha-mypluzgin-footer ul" + * + * @return {String} + */ + nsSel:function () { + var strBldr = [], prx = this.ns; + $.each(arguments, function () { + strBldr.push('.' + (this == '' ? prx : prx + '-' + this)); + }); + return strBldr.join(' ').trim(); + }, + + /** + * Generates s string with this component's namepsace prefixed the each + * classname + * + * Usage: + * nsClass('header', 'innerheaderdiv') + * will return + * "aloha-myplugin-header aloha-myplugin-innerheaderdiv" + * + * @return {String} + */ + nsClass:function () { + var strBldr = [], prx = this.ns; + $.each(arguments, function () { + strBldr.push(this == '' ? prx : prx + '-' + this); + }); + return strBldr.join(' ').trim(); + }, + + config:['true'], + + //activeOn: 'a,span,div,p,q,blockquote,h1,h2,h3,h4,h5,h6,em,i,b', + + activeOn:function (effective) { + if (typeof this.settings.disabled === 'boolean' && this.settings.disabled) { + return false; + } + if (typeof effective != 'undefined' && effective != null) { + return true; + } + return false; + }, + + /** + * Initialize the plugin + */ + init:function () { + var that = this; + this.nsClasses = { + newattributename:this.nsClass('newattributename'), + newattributebutton:this.nsClass('newattributebutton'), + newattributewert:this.nsClass('newattributewert'), + container:this.nsClass('container'), + attribcontainer:this.nsClass('attribcontainer'), + newattribute:this.nsClass('newattribute'), + item:this.nsClass('item'), + element:this.nsClass('element'), + iteminput:this.nsClass('iteminput') + }; + if (typeof this.settings.activeOn !== 'undefined') { + this.activeOn = this.settings.activeOn; + } + Aloha.ready(function (ev, sidebars) { + that.initSidebar(Aloha.Sidebar.right); + }); + }, + + getSidebarContent:function () { + return this.renderTemplate( + '
      \ +

      Element:

      \ +

      Vorhandene Attribute

      \ +
      \ + attribcontainer\ +
      \ + \ +
      \ +

      Neues Attribut

      \ + \ + \ + \ +
      \ + \ +
      ' + ); + }, + + updateSidebarWithAttributes:function () { + var that = this; + var el = this.effective[0]; + var $container = this.content.find(this.nsSel('attribcontainer')); + $container.html(''); + for (var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) { + attr = attrs.item(i) + var item = jQuery(this.renderTemplate('
      ')); + $container.append(item); + } + $container.find(this.nsSel('iteminput')).blur(function () { + var value = jQuery(this).val(); + var name = jQuery(this).attr('data-attrname'); + + if (typeof value == 'undefined' || value == '') { + jQuery(this).parents(that.nsSel('item')).remove(); + pl.correchtHeight(); + } else { + jQuery(el).attr(name, value); + } + }); + var elemheader = this.content.find('#' + this.nsClass('element')); + elemheader.html("Element: " + el.tagName); + }, + + correctHeight:function () { + this.sidebar.correctHeight(); + }, + + initSidebar:function (sidebar) { + var pl = this; + pl.sidebar = sidebar; + var sidebarcontent = this.getSidebarContent(); + sidebar.addPanel({ + + id:pl.nsClass('sidebar-panel'), + title:'Attribute', + content:'', + expanded:true, + activeOn:function (ef) { + return pl.activeOn(ef); + }, + + onInit:function () { + var that = this; + pl.content = this.setContent(sidebarcontent).content; + + pl.content.find('#' + pl.nsClass('newattributebutton')).click(function () { + var name = jQuery('#' + pl.nsClass('newattributename')).val(); + var wert = jQuery('#' + pl.nsClass('newattributewert')).val(); + jQuery('#' + pl.nsClass('newattributename')).val(''); + jQuery('#' + pl.nsClass('newattributewert')).val(''); + jQuery(pl.effective).attr(name, wert); + pl.updateSidebarWithAttributes(); + pl.correchtHeight(); + }); + /* + content.find(nsSel('reset-button')).click(function () { + var content = that.content; + pl.processH(that.effective); + jQuery(that.effective).removeClass('aloha-customized'); + that.content.find(nsSel('input')).val(that.effective.attr('id')); + });*/ + }, + + onActivate:function (effective) { + var that = this; + that.effective = effective; + //DO STUFF HERE + pl.effective = effective; + pl.updateSidebarWithAttributes(); + pl.correctHeight(); + } + + }); + } + }); + }); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/ca/i18n.js new file mode 100644 index 000000000..36373f13c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/ca/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Objectiu", + "headerids.button.reset":"Restableix", + "headerids.button.set":"Estableix" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/de/i18n.js new file mode 100644 index 000000000..5cb791ffb --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/de/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Ziel", + "headerids.button.reset":"Zurücksetzen", + "headerids.button.set":"Setzen" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/i18n.js new file mode 100644 index 000000000..094466ee9 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/i18n.js @@ -0,0 +1,14 @@ +define({ + "root":{ + "headerids.label.target":"Target", + "headerids.button.reset":"Reset", + "headerids.button.set":"Set" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/mk/i18n.js new file mode 100644 index 000000000..f48195f58 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/mk/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Цел", + "headerids.button.reset":"Ресетирај", + "headerids.button.set":"Постави" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/pt-br/i18n.js new file mode 100644 index 000000000..ce74d83a7 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/pt-br/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Alvo", + "headerids.button.reset":"Resetar", + "headerids.button.set":"Definir" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/ru/i18n.js new file mode 100644 index 000000000..39c193d7b --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/ru/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Цель", + "headerids.button.reset":"Сбросить", + "headerids.button.set":"Установить" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/uk/i18n.js new file mode 100644 index 000000000..3511ac506 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/uk/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Ціль", + "headerids.button.reset":"Скинути", + "headerids.button.set":"Встановити" +}); diff --git a/modules/core/aloha/static/plugins/extra/attributes/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/attributes/nls/zh-hans/i18n.js new file mode 100644 index 000000000..eddb64b07 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/attributes/nls/zh-hans/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"目标", + "headerids.button.reset":"重置", + "headerids.button.set":"设置" +}); diff --git a/modules/core/aloha/static/plugins/extra/captioned-image/css/captioned-image.css b/modules/core/aloha/static/plugins/extra/captioned-image/css/captioned-image.css new file mode 100644 index 000000000..5a902713e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/captioned-image/css/captioned-image.css @@ -0,0 +1,33 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2012 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ + +/* The styling for the captioned image "infrastructure", i.e. not for the + captions themselves, which should be provided by the site using it. */ +.aloha-captioned-image-block { + display: inline-block; +} + +.aloha-captioned-image-block.align-left { + float: left; +} + +.aloha-captioned-image-block.align-right { + float: right; +} + +.aloha-captioned-image-block.align-center { + display: block; + text-align: center; +} + +.aloha-captioned-image-block-empty-caption .aloha-captioned-image-caption { + display: none; +} + +.aloha-captioned-image-block-empty-caption.aloha-block-active .aloha-captioned-image-caption { + display: block; +} diff --git a/modules/core/aloha/static/plugins/extra/captioned-image/lib/captioned-image-plugin.js b/modules/core/aloha/static/plugins/extra/captioned-image/lib/captioned-image-plugin.js new file mode 100644 index 000000000..7f5fc9f94 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/captioned-image/lib/captioned-image-plugin.js @@ -0,0 +1,544 @@ +/** + * Captioned Image provides an Aloha block implementation that allows the editor + * to work with images that have captions, such that an image with its + * corresponding caption can be aligned together in an editable. + * It reads and writes to an tag's data-caption and data-align attributes. + * No formatting inside the caption is allowed; only plain text is permitted. + * Four possible alignments are possible: none, left, right, center. + * + * TODO + * ---- + * - Implement makeClean + * - Prevent disallowed content in caption + */ +define([ + 'jquery', + 'aloha/core', + 'aloha/plugin', + 'block/block', + 'block/blockmanager', + 'ui/ui', + 'ui/toggleButton', + 'ui/toolbar', + 'util/maps', + 'aloha/contenthandlermanager', + 'aloha/console', + 'align/align-plugin', // Needed to ensure that we have "alignLeft", and + // "alignRight" components. + // FIXME: use of the css require plugin is deprecated + 'css!captioned-image/css/captioned-image.css' +], function ($, Aloha, Plugin, Block, BlockManager, Ui, ToggleButton, Toolbar, Maps, ContentHandlerManager, console) { + 'use strict'; + + var defaultRenderCSS = '\ + .captioned-image {\ + text-align: center;\ + padding: 0 1em 1em;\ + }\ + .captioned-image.align-right {\ + float: right;\ + padding-right: 0;\ + }\ + .captioned-image.align-left {\ + float: left;\ + padding-left: 0;\ + }\ + .captioned-image.align-center {\ + display: block;\ + text-align: center;\ + }\ + .captioned-image .caption {\ + padding: 0.5em;\ + font-size: 0.9em;\ + background: rgba(0,0,0,0.8);\ + font-family: Arial;\ + color: #fff;\ + text-align: left;\ + min-width: 100px;\ + }\ + .captioned-image.align-center .caption {\ + margin-left: auto;\ + margin-right: auto;\ + }\ + /* Overrides for when the caption is being edited through Aloha Editor. */\ + .aloha-captioned-image-block .captioned-image {\ + padding: 0;\ + }\ + '; + + var settings = ((Aloha.settings && + Aloha.settings.plugins && + Aloha.settings.plugins.captionedImage) || false); + + if (settings.defaultCSS !== false) { + $(' + + +
      +
      +

      Aloha, World!

      + +
      +
      +

      + Aloha in the Hawaiian language means affection, love, peace, compassion and mercy. Since the + middle of the 19th century, it also + has come to be used as an English greeting to say goodbye and hello. Currently, it is + mostly used in the sense of hello; however, + it is used as the above. +

      +
      +
      +

      Etymology

      + +

      + The word aloha + derives from the Proto-Polynesian root *qalofa. It has cognates in other Polynesian languages, + such as Samoan alofa + and Māori aroha, also meaning "love." +

      + + + + + + + + + + + + + + + + + + + + +
      Aloha Editor supports table captions.
      Thisisatable
      withsomedummydata
      totestAlohatables.
      +

      + A folk etymology claims that it derives from a compound of the Hawaiian words alo + meaning "presence", "front", "face", or "share"; and + ha, meaning "breath of life" or "essence of life." Although alo does indeed mean "presence" etc., the + word for breath is spelled with a macron + or kahakō over the a (hā) whereas the word aloha does not have a long a. +

      + +

      Usage

      + +

      + Before contact with the West, the words used for greeting were welina and anoai. Today, "aloha + kakahiaka" is the phrase for "good + morning." "Aloha ʻauinalā" means "good afternoon" and "aloha ahiahi" means "good evening." "Aloha kākou" + is a common form of "welcome to all." +

      + +

      + In modern Hawaiʻi, numerous businesses have aloha in their names, with more than 3 pages of listings in + the Oʻahu phone book alone. +

      + +

      Trends

      + +

      + Recent trends are popularizing the term elsewhere in the United States. Popular entertainer, Broadway + star and Hollywood actress Bette + Midler, born in Honolulu, uses the greeting frequently in national appearances. The word was also used + frequently in the hit television drama + Hawaii Five-O. In the influential 1982 film comedy Fast Times at Ridgemont High, the eccentric teacher + Mr. Hand makes use of the greeting. The + Aloha Spirit is a major concept in Lilo and Stitch, a very popular Disney series of movies and TV shows, + set in Hawaiʻi. The drama series Lost, + shot in Hawaiʻi, has a thank you note at the end of the credits saying "We thank the people of Hawaiʻi + and their Aloha Spirit". Aloha is a term + also used in the Nickelodeon program Rocket Power. +

      + +
        +
      • Arguably the most famous historical Hawaiian song, "Aloha ʻOe" was written by the last queen of + Hawaii, Liliʻuokalani. +
      • +
      • The term inspired the name of the ALOHA Protocol introduced in the 1970s by the University of + Hawaii. +
      • +
      • In Hawaii someone can be said to have or show aloha in the way they treat others; whether family, + friend, neighbor or stranger. +
      • +
      + +

      Placeholder

      + +
      + +

      Inline Placeholder

      + + +
      +
      +
      + + + diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml new file mode 100644 index 000000000..58f3d76e5 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml @@ -0,0 +1,677 @@ + + + + + + + + + + + + + + + + + + + + + DragnDropFiles + + + + + + + + + + ImagePlugin + + + + + + + + + + UploadRepository + + + + + + + + + + target is editable ? + + + + + + + + + + file-type == image + + + + + + + + + + read Image file + + + + + + + + + + + + + + + + + + + + + + + + + + + insert image object + + + + + + + + + + Navigator drop file event + + + + + + + + + + + + + + + + + Event + +DropFilesInEditable(items) + + + + + + + + + + calculate range + + + + + + + + + + Process upload + + + + + + + + + + is upload OK + + + + + + + + + + Event + +FileUploaded(repoItem) + + + + + + + + + + do some src replace + + + + + + + + + + Copyright (c) 2010 Nicolas Karageuzian + + + + + + + + + + + for each file + + + + + + + + + + + Event + +UploadFailure(repoItem) + + + + + + + + + + repoItem: addFileUpload + + + + + + + + + + + for each file + + + + + + + + + + + Event + +DropFilesInPage(itemIds) + + + + + + + + + + trigger + + + + + + + + + + + trigger + + + + + + + + + + + schedule upload + + + + + + + + + + + Invoke + + + + + + + + + + + invoke + + + + + + + + + + + Invoke + + + + + + + + + + + Invoke + + + + + + + + + + + remove image object + + + + + + + + + + (async thread) + + + + + + + + + + + HandleResize + + + + + + + + + + + + + + + + + + + + + + + + + subscribe + + + + + + + + + + + + + subscribe + + + + + + + + + + + + + + + + + + + + + YES + + + + + + + + + + + + + YES + + + + + + + + + + + + + NO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO + + + + + + + + + + + YES + + + + + + + + + + + + + + + + + + + + + Subscribe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/style.css b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/style.css new file mode 100644 index 000000000..5393f1841 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/style.css @@ -0,0 +1,65 @@ +body { + font-family: sans-serif; +} + +body { + background-image: url("images/background.png"); +} + +#bodyContent { + font-size: 0.9em; +} + +h1, h2, h3, h4, h5, h6 { + font-family: sans-serif; + padding-bottom: 0.1em; + padding-top: 0.5em; +} + +h1 { + border-bottom: 1px solid #AAAAAA; +} + +h1 { + font-size: 188%; +} + +h2 { + font-size: 150%; +} + +h3 { + font-size: 132%; +} + +h4 { + font-size: 116%; +} + +h5 { + font-size: 100%; +} + +h6 { + font-size: 80%; +} + +#main { + width: 650px; + margin-top: 40px; + margin-left: auto; + margin-right: auto; + padding: 70px; + background-color: white; + border-radius: 1px; + -moz-border-radius: 1px; + box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); +} + +a.external { + background: url(images/external-link-ltr-icon.png) no-repeat 100% 50%; + padding: 0px 13px 0px 0px; +} + diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/upload.php.example b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/upload.php.example new file mode 100644 index 000000000..14f32361e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/demo/upload.php.example @@ -0,0 +1,29 @@ +writeFile($HTTP_RAW_POST_DATA); + +?> \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/img/cross.png b/modules/core/aloha/static/plugins/extra/draganddropfiles/img/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc6a8c4640daef05e6b7ac03e752d738eda9b23 GIT binary patch literal 600 zcmV-e0;m0nP)qr= zoWsj=xV)*wI)mC;f85)1o^!72KG*NQF97(bYHY}te}6W9pkz%{?2qDLm}$QCMBU}F z^b8E*>^?e~9P~tr^@#%^)(Az=+}gqSXR9A-OUt*r_XaTvuhF5>lM33~yFC+aeS=YV zv||Y%UqJVKYIi0ov$l&r4bmB*lT`H1{!8H9d+51**8t6s%rt+HQFpX<;{d(af+3tP zJmD2_{*obr9#0DVMV#wO7I^a(Je@%!907GlYbOTe4t|`gHV294gnl3dSk)!xB{Qx{e&h@dW_M2Phd-=N9y`RWyhP8mJzB zcT@mP11=A+>IU{wl-q&gh+@)i2^BwglQm7aR{Kc=0?SA#h393HqfB% z_A=GuLrdNSXpE}l1;OH_X^Vcgv;su8P=C6D;=Knr9v)!^1KKR6N+b?Hr>;q;^y>tR zm!>R2@!_O!GI5{RY<3_lAhOo>GV4DdYEKL8V$k4lbKAu_sKc)-T@R-SC>zILMVAS(-OyQX$T9cm=KZ;MiFxk)e4)jl$6tX~Kal2x6N6JX&t0-1Pl&T^!g&H=ZMXa(sLg_M?R2j3L6#C~wW+^8N zWT*iDi3$|NT{6s-1Vpn{Y{p6mlA!%Z4ue!!?3)Ws%k#3J4uf~UX~vsnzA<@(e^sRL zyf1?Rirwy=3pPn}M+szfj-=JYa##)Jp*FJ?`TMa2la7Sb7vbP0g5KGn_1FTPJ#oRX zl4RGyd1Sa6V*6FhttQYhwYBp?zkc);wAQ#`%9Rj<$)dE0a!o|8C?K4vz~oEe$$MIC z9rOPCCyrZU)Pg^Qy=(=AvVaN+*8~w9dG|(m`1gvS$x}lyPz^2DuTj6?S4>!=SPJ|` zGFO$tBr6HBd=1~@B`NF)^Z4kBqHWv*Ri|E2*M)Uz2sWo3&aE^eDIWU;vcgy%x-TI- z`{2U^%?eb5E_C&2G5YkT)P*|1|8_wZ{8eXCVTM$gJE*YS1yW&wRG1?nhF~Nd*7*+* W`US2pOC%5g0000UA1CC zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX2Nu5xCr|b){QRO> z{YQfe2aBWb3n$T|1_m65R7#pA`Xt0^EY*-bmHze6g{DanJf0ULCoB$XoxW?Pf$hmQ zVU|`CpJM@siUPCDlzc3`m8Z|;z_fw^Yz5208C=zyL%fa}wl&JW2#j^i^jm4Q^{Hm? z*ASk2TXcF3^*#Ujw}mi+0EK~8{~=H_cC$8 zw`St>guo)873p4AkMXd6t9|G(?Vcy^YR)7TR))JJGG}U^@1Dzlo%2(jWt)>@q>d2_ z0YHC9i6f++}OgF3_2V+tHl8`kE`o_J+b z$>jipZN2=voZeq!6f3inadtP9FluK$mdO#Y=;E@=UIGRif^?fNeAN>1+H_zwJ{uSo z0Bv|4b@iAECz1_Q5=(@efHu6|b#E>69abib&ORrF6gFm`&7O@;noVmO3M~w{9x$n$ T4k+3CV9CzeOEwq_GFSrukC!JI literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/img/page.png b/modules/core/aloha/static/plugins/extra/draganddropfiles/img/page.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b7ebe941933c67b3db758ffbc4149f3043631f GIT binary patch literal 582 zcmV-M0=fN(P)L*YjEZedC?W7tU`1 zDv6gq`10~6Z=HK|j5-r00U&|6_V2Na-`w=aZ%6i~r;j~$w!HDoou0 z^F%4B(rXxHp4iFo%k|jyqI>Jv`%kEOEHFbtFxLabmyf4s(;p{ufPmd`S8WJFTGM#Pee`u2tfo0IPC6k=iws!4@5W~ URyod=wEzGB07*qoM6N<$f`jG|0{{R3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/img/tick.png b/modules/core/aloha/static/plugins/extra/draganddropfiles/img/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..1988997fe89d20d9a16c7fe81ab73a9db1fa6fcf GIT binary patch literal 481 zcmV<70UrK|P)o0}iQrD{|g+s7K)5jp=(AI<{L;?kz&GQ%I$fOc!jG@s#QQ zE>Mo2+9QjlVV&9prx+mQBG#TL#h>bzJrHB()gNjAjv~iEY00000NkvXXu0mjfWR~7E literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js new file mode 100644 index 000000000..cb4f8002f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js @@ -0,0 +1,4 @@ +define([ 'aloha', 'jquery', 'aloha/plugin', 'draganddropfiles/dragndropfiles'], + function (Aloha, jQuery, Plugin, DragNDrop) { + return DragNDrop; + }); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.css b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.css new file mode 100644 index 000000000..635df674a --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.css @@ -0,0 +1,116 @@ +.GENTICS_drop_file_box { + width: 64px; + height: 64px; + margin: 0; + padding: 0; + float: left; + border: solid 1px grey; +} + +.GENTICS_drop_file_icon { + position: relative; + top: 24px; + left: 24px; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.GENTICS_drop_file_default { + width: 16px; + height: 16px; + margin: 0; + padding: 0; + background-image: url(resources/images/page.png) !important; +} + +.GENTICS_drop_file_details { + position: relative; + top: 24px; + width: 60px; + height: 24px; + text-align: center; +} + +/* Uploader styles */ + +div.x-grid3-header-offset { + display: none; +} + +div.karacos_uploader_status_icon { + position: relative; +} + +.x-grid3-td-progress-cell { + padding: 0; +} + +.x-grid3-td-progress-cell .x-grid3-cell-inner { + padding: 0; + position: relative; + height: 21px; +} + +.x-grid3-cell-inner { + display: bloc; + position: relative; + top: 0; + left: 0; + height: 100%; + width: 100%; + overflow: hidden; + color: black; +} + +.x-grid3-cell-background { + background: #E0E8F3; /*url(../../resources/images/default/qtip/bg.gif) repeat-x scroll 0 -1px;*/ + white-space: nowrap; +} + +.x-grid3-td-progress-cell .low { + background: #11aa11; +} + +.x-grid3-td-progress-cell .medium { + background: #f1fa1a; +} + +.x-grid3-td-progress-cell .high { + background: #ee1111; +} + +.GENTICS_uploader-progress-cell-foreground { + color: #000; + background-color: #9CBFEE; + white-space: nowrap; + overflow: hidden +} + +.GENTICS_uploader-progress-cell-inner-right { + text-align: right; +} + +.GENTICS_uploader-progress-cell-inner-center { + text-align: center; +} + +.GENTICS_uploader-progress-cell .GENTICS_uploader-progress-cell-inner div { + padding: 3px 0 0 4px; +} + +.GENTICS_uploader-progress-cell-inner-right div { + padding: 3px 4px 0 0; + position: relative; +} + +.GENTICS_uploader-progress-cell-inner-center div { + padding: 3px 0 0 0; + position: relative; +} + +.GENTICS_uploader-progress-cell-inner-left div { + padding: 3px 0 0 4px; + position: relative; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.js new file mode 100644 index 000000000..0345957a9 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dragndropfiles.js @@ -0,0 +1,378 @@ +/* dragndropfiles.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +//(function(window, undefined) { +// var +// $ = jQuery = window.alohaQuery || window.jQuery, +// GENTICS = window.GENTICS, +// Aloha = GENTICS.Aloha; +define([ + 'jquery', + 'aloha/plugin', + 'draganddropfiles/dropfilesrepository' +], + function ($, Plugin, DropFilesRepository) { + "use strict"; + var jQuery = $, + GENTICS = window.GENTICS, Aloha = window.Aloha; + return Plugin.create('draganddropfiles', { + + /** + * Default config, each editable may have his own stuff. + */ + config:{'max_file_size':300000, + 'max_file_count':2, + 'upload':{ + 'uploader_instance':new DropFilesRepository('draganddropfilesrepository', 'Dropped Files'), + 'config':{ + 'callback':function (resp) { + return resp; + }, // what to do with the server response, must return the new file location, + // if server return an error, throws an exception (throw "error") + 'method':'POST', + 'url':"", + 'accept':'application/json', + 'file_name_param':"filename", + 'file_name_header':'X-File-Name', + 'extra_headers':{}, //Extra parameters + 'extra_post_data':{}, //Extra parameters + 'send_multipart_form':false, //true for html4 TODO: make browser check + 'image':{ + 'max_width':800, + 'max_height':800 + }, + //'additional_params': {"location":""}, + 'www_encoded':false + } + } + }, + /** + * Add a drop listener to the body of the whole document + */ + init:function () { + var that = this; + // add the listener + that.setBodyDropHandler(); + // stylePath = GENTICS_Aloha_base + '/plugins/com.gentics.aloha.plugins.DragAndDropFiles/style.css'; + // jQuery('head').append(''); + if (that.settings === undefined) { + that.settings = that.config; + } else { + that.settings = jQuery.extend(true, that.config, that.settings); + } + + try { + that.uploader = that.initUploader(that.settings); + } catch (error) { + Aloha.Log.warn(that, error); + Aloha.Log.warn(that, "Error creating uploader, no upload will be processed"); + } + Aloha.bind('aloha-file-upload-prepared', function (event, data) { + if (that.droppedFilesCount >= that.processedFiles) { + Aloha.trigger('aloha-allfiles-upload-prepared'); + } + + }); + Aloha.bind('aloha-allfiles-upload-prepared', function (event, data) { + var len = that.filesObjs.length; + if (that.dropInEditable) { + Aloha.trigger('aloha-drop-files-in-editable', { + 'filesObjs':that.filesObjs, + 'range':that.targetRange, + 'editable':that.targetEditable}); + var edConfig = that.getEditableConfig(that.targetEditable); + while (--len >= 0) { + that.uploader.startFileUpload(that.filesObjs[len].id, edConfig.upload.config); + } + } else { + Aloha.trigger('aloha-drop-files-in-page', that.filesObjs); + while (--len >= 0) { + that.uploader.startFileUpload(that.filesObjs[len].id, that.config.upload.config); + } + } + }); + }, + + /** + * Init a custom uploader + */ + initUploader:function (customConfig) { + var + uploader_instance; + try { + uploader_instance = customConfig.upload.uploader_instance; + } catch (error) { + Aloha.Log.info(this, "Custom class loading error or not specified, using default"); + uploader_instance = new DropFilesRepository('draganddropfilesrepository', 'Dropped Files'); +// if (customConfig.upload.delegate) { +// uploader_instance.delegateUploadEvent = customConfig.upload.delegate; +// } + } + return uploader_instance; + }, + /** + * Prepare upload + */ + prepareFileUpload:function (file) { + var + reader = new FileReader(), + fileObj, + that = this; + reader.file = file; + reader.onloadend = function () { + var currentFile = { + name:this.file.name, + type:this.file.type, + fileSize:this.file.fileSize, + fileName:this.file.fileName, + data:reader.result + }; + that.filesObjs.push(that.uploader.addFileUpload(currentFile)); + that.processedFiles++; + Aloha.trigger('aloha-file-upload-prepared', fileObj); + }; + reader.readAsDataURL(file); + }, + /** + * Our drop event Handler + */ + dropEventHandler:function (event) { + var + that = this, edConfig, len, target, + files = event.dataTransfer.files, dropimg; + this.targetEditable = undefined; + this.droppedFilesCount = files.length; + this.processedFiles = 0; + Aloha.Log.info(that, this.droppedFilesCount + " files have been dropped on the page"); + +// if (jQuery.browser.msie) { +// var textdata = event.dataTransfer.getData('Text'); +// var urldata = event.dataTransfer.getData('URL'); +// var imagedataW = window.event.dataTransfer.getData('URL'); +// var textdataW = window.event.dataTransfer.getData('Text'); +// var x = textdataW; +// } + // if no files where dropped, use default handler + if (!event.dataTransfer && !event.dataTransfer.files) { + event.sink = false; + return true; + } + if (this.droppedFilesCount < 1) { + event.sink = false; + return true; + } + if (event.preventDefault) { + event.preventDefault(); + } else { + event.cancelBubble = true; + } + if (this.droppedFilesCount > that.settings.max_file_count) { + Aloha.Log.warn(that, "too much files dropped"); + if (event.stopPropagation) { + event.stopPropagation(); + } else { + event.returnValue = false; + } + return true; + } + target = jQuery(event.target); + //If drop in editable + if (target.hasClass('aloha-editable')) { + this.targetEditable = target; + target = this.targetEditable.children(':last'); + if (target.hasClass('aloha-editable')) { + //nested space is needed in this tag, otherwise select won't success... + this.targetEditable.append(' '); + target = this.targetEditable.children(':last'); + } + } else { + this.targetEditable = target.parents('.aloha-editable'); + } + this.filesObjs = []; + this.dropInEditable = false; + len = this.droppedFilesCount; + if (this.targetEditable[0] === null) { // Process files out of editables + while (--len >= 0) { + if (// Set of conditions, can we resize the image, and do we have a conf to do it + !(!!document.createElement('canvas').getContext && + files[len].type.match(/image\//) && + edConfig.upload.config.image) + ) { + if (files[len].size <= that.settings.max_file_size) { + that.prepareFileUpload(files[len]); + } else { + this.processedFiles++; + Aloha.Log.warn(that, "max_file_size exeeded, upload of " + files[len].name + " aborted"); + } + } else { + that.prepareFileUpload(files[len]); + } + } + } else { + Aloha.getEditableById(this.targetEditable.attr('id')).activate(); + that.targetRange = that.initializeRangeForDropEvent(event, this.targetEditable); + edConfig = that.getEditableConfig(this.targetEditable); + edConfig.upload = $.extend({}, edConfig.upload, that.settings.upload); + if (edConfig) { + that.dropInEditable = true; + } + while (--len >= 0) { + try { + dropimg = edConfig.upload.config.image; + } catch (e) { + dropimg = false; + } + if (// Set of conditions, can we resize the image, and do we have a conf to do it + !(!!document.createElement('canvas').getContext && + files[len].type.match(/image\//) && + dropimg) + ) { + if (files[len].size <= edConfig.max_file_size) { + that.prepareFileUpload(files[len]); + } else { + this.processedFiles++; + Aloha.Log.warn(that, "max_file_size exeeded, upload of " + files[len].name + " aborted"); + } + } else { + that.prepareFileUpload(files[len]); + } + } //while + } + + if (event.stopPropagation) { + event.stopPropagation(); + } else { + event.returnValue = false; + } + return false; + }, + /** + * Attach drag and drop listeners to document body (Native JS way) + * + */ + setBodyDropHandler:function () { + var that = this; + if (!document.body.BodyDragSinker) { + document.body.BodyDragSinker = true; + this.onstr = ""; + this.mydoc = document; + this.methodName = "addEventListener"; + if (jQuery.browser.msie) { + this.onstr = "on"; + this.methodName = "attachEvent"; + this.mydoc = document.body; + } + + // sets the default handler + this.mydoc[this.methodName](this.onstr + "drop", function (event) { + that.dropEventHandler(event) + }, false); + // TODO: improve below to allow default comportment behaviour if drop event is not a files drop event + this.mydoc[this.methodName](this.onstr + "dragenter", function (event) { + if (event.preventDefault) { + event.preventDefault(); + } + else { + event.cancelBubble = true; + } + if (event.stopPropagation) { + event.stopPropagation(); + } + else { + event.returnValue = false; + } + return false; + }, false); + this.mydoc[this.methodName](this.onstr + "dragleave", function (event) { + if (event.preventDefault) { + event.preventDefault(); + } + else { + event.cancelBubble = true; + } + if (event.stopPropagation) { + event.stopPropagation(); + } + else { + event.returnValue = false; + } + return false; + }, false); + this.mydoc[this.methodName](this.onstr + "dragover", function (event) { + if (event.preventDefault) { + event.preventDefault(); + } + else { + event.cancelBubble = true; + } + if (event.stopPropagation) { + event.stopPropagation(); + } + else { + event.returnValue = false; + } + //return false; + }, false); + + + } // if + // end body events + //================== + }, + + /** + * TODO do we realy need a range Object? May be it makes sense to attach it to the event + * for plugin developers comfort. + */ + initializeRangeForDropEvent:function (event, editable) { + //var range = new GENTICS.Utils.RangeObject(); + var target = jQuery(event.target); +// if (target.textNodes().length == 0 && target.html().length == 0) { +// target.html(" "); +// } + var range = new Aloha.Selection.SelectionRange(true); + range.update(); + if (target.textNodes().length == 0) { + range.startContainer = target[0].childNodes[0]; + range.endContainer = target[0].childNodes[0]; + } else { + range.startContainer = target.textNodes()[0]; + range.endContainer = target.textNodes()[0]; + } + // + range.startOffset = 0; + range.endOffset = 0; + try { + range.select(); + } catch (error) { + Aloha.Log.error(this, error); + } + return range; + } + + }); + }); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dropfilesrepository.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dropfilesrepository.js new file mode 100644 index 000000000..49feccb4c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/lib/dropfilesrepository.js @@ -0,0 +1,375 @@ +/* + * Repository + * Copyright (c) 2010 Nicolas Karageuzian - http://nka.me + */ +define([ + 'jquery', + 'aloha/repository', + 'aloha/repository', + 'i18n!aloha/nls/i18n'], + function ($, repository, i18nCore) { + "use strict"; + var jQuery = $, + GENTICS = window.GENTICS, + Aloha = window.Aloha, + Uploader = { + _constructor:function (repositoryId, repositoryName) { + var uploadFolder = new this.UploadFolder({ + id:"Uploads", + name:"Uploads", + displayName:"Uploads", + parentId:"/", + path:"Uploads", + objectType:'folder', + type:'folder', + repositoryId:repositoryId + }); + Aloha.Log.info(Aloha, "_constructor : Initializing default uploader"); + this._super(repositoryId, repositoryName); + + this.uploadFolder = uploadFolder; + this.objects = [uploadFolder]; + var that = this; + // upload queue FIFO + this.uploadQueue = { + queue:[], // items queued + push:function (obj) { // add an item + this.queue.push(obj); + }, + pop:function () { // grabs first item of array and remove it + var result = this.queue[0]; + this.queue = this.queue.splice(1); + return result; + }, + processQueue:function () { // Process file uploads + var file; + if (!this.processUpload) { // prevents concurrent runs of processQueue + this.processUpload = true; + // recalculate queue lenght after each upload + while (this.queue.length > 0) { + file = this.pop(); + file.startUpload(); + } + this.processUpload = false; + } + } + }; + + }, + config:{ + // can add more elements for Ext window styling + 'method':'POST', + 'callback':function (resp) { + return resp; + }, + 'url':"", + 'accept':'application/json', + 'file_name_param':"filename", + 'file_name_header':'X-File-Name', + 'extra_headers':{}, //Extra parameters + 'extra_post_data':{}, //Extra parameters + 'send_multipart_form':false, //true for html4 TODO: make browser check + //'additional_params': {"location":""}, + 'www_encoded':false, + 'image':{ + 'max_width':800, + 'max_height':800 + }, + 'fieldName':function () { + return 'filename' + } + }, + /** + * Repository's Query function + */ + query:function (p, callback) { + Aloha.Log.info(this, "Query Uploader"); + var d = []; + if (p.inFolderId == this.repositoryId && p.queryString == null) { + d = this.objects; + } else { + d = this.objects.filter(function (e, i, a) { + var r = new RegExp(p.queryString, 'i'); + var ret = false; + try { + if ((!p.queryString || e.url.match(r)) && + (p.inFolderId == e.parentId)) { + ret = true; + } + } catch (error) { + } + return ret; + /* ( + ( !queryString || e.displayName.match(r) || e.url.match(r) ) && + ( !objectTypeFilter || jQuery.inArray(e.objectType, objectTypeFilter) > -1) && + ( !inFolderId || inFolderId == e.parentId ) + );*/ + }); + } + callback.call(this, d); + }, + getChildren:function (p, callback) { + d = []; + var parentFolder = p.inFolderId.split("")[0]; + if (parentFolder == "") { + parentFolder = "/"; + } + d = this.objects.filter(function (e, i, a) { + if (e.parentId == parentFolder) { + return true; + } + return false; + }); +// if (p.inFolderId == "com.gentics.aloha.plugins.DragAndDropFiles") { +// d = this.objects; +// } + callback.call(this, d); + }, + /** + * Triggers an upload + * Resizes if it's an image which is too large + */ + addFileUpload:function (file) { + var type = ''; + //this.browser.show(); + + var d = this.objects.filter(function (e, i, a) { + if (e.name == file.name) { + return true; + } + return false; + }); + if (d.length > 0) { + return d[0]; + } + var len = this.objects.length, + id = 'ALOHA_idx_file' + len, + merge_conf = {}; + jQuery.extend(true, merge_conf, this.config); + + + this.objects.push(new this.UploadFile({ + file:file, + id:id, + name:file.name, + displayName:file.name, + parentId:"Uploads", + path:"Uploads", + url:"Uploads", + objectType:'file', + type:'file', + ulProgress:0, + parent:this.uploadFolder, + repositoryId:this.repositoryId})); +// try { +// var repoNode = this.browser.tree.getNodeById("com.gentics.aloha.plugins.DragAndDropFiles"); +// repoNode.expand(); +// //this.browser.tree.getNodeById("Uploads").select(); +// } catch(error) {} + return this.objects[len]; + }, + startFileUpload:function (id, upload_config) { + var type = '', + d = this.objects.filter(function (e, i, a) { + if (e.id == id) { + return true; + } + return false; + }); + if (d.length > 0) { + jQuery.extend(true, upload_config, this.upload_conf); + d[0].upload_config = upload_config; + this.uploadQueue.push(d[0]); + this.uploadQueue.processQueue(); + } else { + Aloha.Log.error(this, "No file with that id"); + } + }, + UploadFolder:Aloha.RepositoryFolder.extend({ + _constructor:function (properties) { + this._super(properties); + }, + getDataObject:function (record) { + repo = Aloha.RepositoryManager.getRepository(record.data.repositoryId); + d = repo.objects.filter(function (e, i, a) { + if (e.id == record.data.id && e.file) { + return true; + } + return false; + }); + if (d.length > 0) { + return d[0]; + } + return null; + } + }), + + /** + * The file class + */ + UploadFile:Aloha.RepositoryDocument.extend({ + _constructor:function (properties) { + var xhr = this.xhr, + that = this; + this._super(properties); + xhr.upload['onprogress'] = function (rpe) { + that.loaded = rpe.loaded; + that.total = rpe.total; + that.ulProgress = rpe.loaded / rpe.total; + Aloha.trigger('aloha-upload-progress', that); + xhr.onload = function (load) { + try { + that.src = that.upload_config.callback(xhr.responseText); + Aloha.trigger('aloha-upload-success', that); + } catch (e) { + Aloha.trigger('aloha-upload-failure', that); + } +// if (that.delegateUploadEvent(xhr.responseText)) { + // +// } else { + }; + xhr.onabort = function () { + Aloha.trigger('aloha-upload-abort', that); + }; + xhr.onerror = function (e) { + Aloha.trigger('aloha-upload-error', that); + }; + } + }, + xhr:new XMLHttpRequest(), + contentTypeHeader:'text/plain; charset=x-user-defined-binary', + /** + * Process upload of a file + */ + startUpload:function () { + //if () + var xhr = this.xhr, options = this.upload_config, that = this, data; + + xhr.open(options.method, typeof(options.url) == "function" ? options.url(number) : options.url, true); + xhr.setRequestHeader("Cache-Control", "no-cache"); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + xhr.setRequestHeader(options.file_name_header, this.file.fileName); + xhr.setRequestHeader("X-File-Size", this.file.fileSize); + xhr.setRequestHeader("Accept", options.accept); +// l + if (!options.send_multipart_form) { + xhr.setRequestHeader("Content-Type", this.file.type + ";base64"); + xhr.overrideMimeType(this.file.type); + var canvas = $('').first(), + targetsize = {}, + tempimg = new Image(); + Aloha.Log.debug(Aloha, "Original Data (length:" + this.file.data.length + ") = " + this.file.data.substring(0, 30)); + tempimg.onload = function () { + targetsize = { + height:tempimg.height, + width:tempimg.width + }; + + + if (tempimg.width > tempimg.height) { + if (tempimg.width > options.image.max_width) { + targetsize.width = options.image.max_width; + targetsize.height = tempimg.height * options.image.max_width / tempimg.width; + } + } else { + if (tempimg.height > options.image.max_height) { + targetsize.height = options.image.max_height; + targetsize.width = tempimg.width * options.image.max_height / tempimg.height; + } + + } + + var canvas = document.createElement('canvas'); + canvas.setAttribute('width', targetsize.width); + canvas.setAttribute('height', targetsize.height); + canvas.getContext('2d').drawImage( + tempimg, + 0, + 0, + tempimg.width, + tempimg.height, + 0, + 0, + targetsize.width, + targetsize.height + ); + data = canvas.toDataURL(that.file.type); + Aloha.Log.debug(Aloha, "Sent Data (length:" + data.length + ") = " + data.substring(0, 30)); + xhr.send(data); + }; + tempimg.src = this.file.data; + } else { + if (window.FormData) {//Many thanks to scottt.tw + var f = new FormData(); + f.append(typeof(options.fieldName) == "function" ? options.fieldName() : options.fieldName, this.file); + xhr.send(f); + } + else if (this.file.getAsBinary) {//Thanks to jm.schelcher + var boundary = (1000000000000 + Math.floor(Math.random() * 8999999999998)).toString(); + var dashdash = '--'; + var crlf = '\r\n'; + + /* Build RFC2388 string. */ + var builder = ''; + + builder += dashdash; + builder += boundary; + builder += crlf; + + builder += 'Content-Disposition: form-data; name="' + (typeof(options.fieldName) == "function" ? options.fieldName() : options.fieldName) + '"'; + builder += '; filename="' + this.file.fileName + '"'; + builder += crlf; + + builder += 'Content-Type: application/octet-stream'; + builder += crlf; + builder += crlf; + + /* Append binary data. */ + builder += this.file.getAsBinary(); + builder += crlf; + + /* Write boundary. */ + builder += dashdash; + builder += boundary; + builder += dashdash; + builder += crlf; + + xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' + boundary); + xhr.sendAsBinary(builder); + } + else { + options.onBrowserIncompatible(); + } + } + + + } +// /** +// * Method to override to handle backend response +// */ +// delegateUploadEvent: + }) + //TODO: i18n + }; + return repository.extend(Uploader); + }); + +// var +// jQuery = window.alohaQuery || window.jQuery, $ = jQuery, +// GENTICS = window.GENTICS, +// Aloha = window.Aloha, +// /** +// * Type description for UploadFolder +// */ +// + +// Aloha.Repositories = Aloha.Repositories||[]; +// /** +// * Repository for uploaded files +// */ + +// +// +// +// +//})(window,document); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ca/i18n.js new file mode 100644 index 000000000..1a7cc234b --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ca/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Arxiu" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/de/i18n.js new file mode 100644 index 000000000..0df242888 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/de/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Datei" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/i18n.js new file mode 100644 index 000000000..8a6f41521 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/i18n.js @@ -0,0 +1,12 @@ +define({ + "root":{ + "floatingmenu.tab.file":"File" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/mk/i18n.js new file mode 100644 index 000000000..4b1a84ec5 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/mk/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Датотека" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/pt-br/i18n.js new file mode 100644 index 000000000..c63e60d38 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/pt-br/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Arquivo" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ru/i18n.js new file mode 100644 index 000000000..79706ecc4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/ru/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Файл" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/uk/i18n.js new file mode 100644 index 000000000..79706ecc4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/uk/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"Файл" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/zh-hans/i18n.js new file mode 100644 index 000000000..346509b66 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/nls/zh-hans/i18n.js @@ -0,0 +1,3 @@ +define({ + "floatingmenu.tab.file":"文件" +}); diff --git a/modules/core/aloha/static/plugins/extra/draganddropfiles/package.json b/modules/core/aloha/static/plugins/extra/draganddropfiles/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/draganddropfiles/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/LICENSE b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/LICENSE new file mode 100644 index 000000000..164aa01c0 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/LICENSE @@ -0,0 +1,2 @@ +URL: http://www.famfamfam.com/lab/icons/flags/ +Term: "These flag icons are available for free use for any purpose with no requirement for attribution." \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aa.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aa.png new file mode 100644 index 0000000000000000000000000000000000000000..4715ed7c5508d72a7e5b52b1773e1c929d749334 GIT binary patch literal 243 zcmV&#zz0OpMpKIRE?m zmnaP4#t zu};EJ6b9h`zvpl%-hzU$f*KZeWiZB($7S#_T%BBW#KgqtfDnsm8rpj_aWWn1_vz~N zg1sL5DLYyg+xt;|dsRK0*=K@CG$~b~f{r3dgfmnPbyR$JLT7q2fL>!MI2nshh6p$J1j8mi)unukdo zr08~FM3X*UkMY9^#F?eJBnb7sw~7GKq<8&y{2~F1KpicXF#KU=1VQLqwMH8=ixvse zQD@l&KN01*HX8z2xs00g>KA5R}m0c2G~3+y*d zjz(7H%la*1C z<(XA>{C0a?EmIb?dH2B)RXIqRHl_r+2$GCsM3Ggcm;an?eqQ!_tLAt@Dotuonlx$# zv|@~`2zt<*RU&KF@2xgo&6Pq5hk-h95ULVr#Uisj=uUUezFhpSlXLsO{=QiMIZRHD zE|p4((6m$yXvHFe?le!)y0SA1*Z23YfBZ0Yw`;df^PiL|hk@<{I_Vja?&)5tsFHh+ z55FC5h0D(FNv5)wGNni39zeI~#iK5q@7y_F1F!|?ja?&y+-_TIt{Nj6_lh9U+E24T-dTl^P^z# z36W$++dgBAakxLsf{}^cHgcZ_RMiA=G00000NkvXXu0mjf$aZ&o literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/af.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/af.png new file mode 100644 index 0000000000000000000000000000000000000000..1b24b434fafc3da5ab44f61b52c99b19797e16a1 GIT binary patch literal 420 zcmV;V0bBlwP)2$~ zJx*0o6b0aQ@q&Oqg#>|;iZB66YD;?>oQCC_fwd(gpfg5|m5G%WMof$`b^-||FX7$2 z*4pQ6kUI}pa+duuIiXId(| zfd1^bTGre5_3?vUlP8%D?Qhp7z7T9yCdF%3u=~7-O->OzVcp zD5Nxapi_VdTm)=s~7KhM4mi-nEIP>M+iBdTmi zgd~zZqF%j@$D8F``Emv_RWu{R-4I3qx)l*5E26%ht$q63$sW;26VWEMbTfnz0Le!i z8zLovf;dP6IoM0m!!7JS*l;>~Vu1nw`vr6$fdmpr;0bWP2LzD7I{pItMQKweN=gy{ O0000&0C#uy3|8E4S1u@A zD{cMQVYe%hl!nRUtE+|6Ko!yY_Pu8oZjYw9{>f^G=*F`rcxIBf9;R+D1^IYnBmsE> z8Xgm7G7sn5wvC-is}%Ke(>^sR-{V; zasc5HdF(*C{BfaHLcNmJ%cz&psGxCl=-P*;&EhU8C;vV`3L3@pwmH7rK79Q~?6I@F zocbF{bQ(+!wlNZX5x^|`so y^X=!Y@@O;UVS<~>0Aw8?0Rnu_gNT2*0Q>>Z{371HvT}_80000D+sWGXPQX!dKB1K#zD7Xj(hhn!5I=G30gCNDJbWrHv;GhVCMVHco zAfg2qMZ_WqRYXb!QDgB@vZU#YdH3D>`{NJ_!r|}@XZYX*m#(b6NOGNAxMJ6fIa~;v z=Nr*{{QlIdGBSa6AdAeS@1PcNX2S+M3&&sD(o|dwQ@cEVV%Gm!3NO!}>o`#_!X!?> zs;v6(;(fE+TPtj&Gwn8#M4g}g_BE4mCVM?so7!VkqI@OF7f9m7=EDF;&7DH?Mt!m| zy3JoUHG(-hv6r~@UG!O<$L;B3Ls^0#?3tl!tDArgA9qI@6V;`px@``&!vhcMXQR>T zYJbEMoJgVj6y3Y|;V9}nA_3sd^f(sZ{e1qtcSt$Md~fB$n_Btwk^Wo9jun6zn{z*| zOX&=&0BL~9CkwZltzGL`NQ6X*#gh_imU8`Mt!M%g?OOJ&oo82XhR7VLxWSs$lXy}` z!X%=)_4)UoRN@p{A6p^RCyI8N|XYQXVDc>Ccc0RB zI?3&RSP`S(ghp59W!mz~pV@ewtDQ25IVIsE^T~xSpF5ZtSeHKj-9Ka6N}!Dlp00i_ I>zopr0EZ{leo`q@fXw#UPPLOhz9AiOFOUO9zH7MzIL7SZZPR1*`^(jj!OP(bS{* zwD2iXKH}}(;ls5d z+&j0FQu_Ah-3S1_`*X;6zkhUh>Tj&(r~4~6yEk>VmoI)FY_0WfcJk7u!I()!R7APo z9BTX5!Q5KOPP@PU*JSO{G^8ob(&fzxYvocFl z4?RVNr>o>w38cqsU2Cniwtco=PrFu1YtdRsz?e|($Rl*Uiz|!zuzxhl+}g)wK3H@M zuQZhm$)GntUNUcOa(lk}_x7Teb6d{s{;BTCkLBc6GR!jk2*!jAr7X=bdvoe7CjbBd07*qoM6N<$f_$;ga{vGU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/am.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/am.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0a22383b3f0116e68b9cdecde1bbab093b3822 GIT binary patch literal 332 zcmV-S0ki&zP)pD43jr73|weT>g5K5nTB>8eO`{rn#Q+VAh^U%%z`F=5Q8KG9`WEVyDWyQ`=B zhwcS16UG&NWGXICX~K-@7#-b5WC)uJfB;(~+R4!twFpuygLtP`w3j{b1`n8LBzPv6 el7L|XTl@tW=7-I9iZ2`h0000(h@ZhCAP7=G?KxVu2nK@Oh-V2h_F#)T03~91a0wX6?y?LlhJ3DqYb2clIfA*{RRM%3^+YG*}c1aAjJ^Oo}SC`(WaE+@wFiz zA79)Vp|!P7S64p=fXI5kB6NQKtx!KE*W9mpb7PsQw*}W;% zsgP_WE$v#x>Z(P6L$G4yO zlg2koX4kc78urFegEA}=I7Ob0G4XxTTpS=)$sOQk!>XvNHTCdqE54oA9X4p~iY%FY z%iTtFws&AjzPdz|{eC~s^P0Lz7~*(bEf&$~i9J4YlZTzzj2|kLvMgJ#*OB!G009(* z91cxq&pl4%^(C|=@MesWyF pZRkH!C_-gf`p>|BK7bYn`vbOYQS`~prX&CW002ovPDHLkV1hPTuZ{o! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ar.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ar.png new file mode 100644 index 0000000000000000000000000000000000000000..0f09ebdd8eb9650fd09cb12d1fea786be0f5a871 GIT binary patch literal 367 zcmV-#0g(QQP)2e? zy^c%)7{}rNnLTC~*@DT6Mxhdv5~apR;u2hdMxs=!U5|){&c_{SB-D}(A-neE?EC(H zW=tfWXL$6{qskUxCR8e!i-M_`VTP%gi{&EYugc@AStIIzApzT=+374A!PeHNACAVU za!P)jiovutK?@5@8w(3pyF+Hi=T{D|Us|0KlPJarZbT6`&@)30ZXS-;_E{~nrp6dO zdD}-Xu@>hay7$0;h9S3CS>!Lb;>Pp_zS>{>{o4N}z?j6X7~|UVPNu_TcJHqL859^l z{p7~JbF0A(yzjYtD9Eu}kmcz6!ycb}zW8h>-%c#jSXkIvSXkIt*yQrrym)tET)>dU z!ERccv}w`|ZHizZ?a*k}7;e2f{ysAmb1@ZDr6EOT0)Z4M5>m-Be*pFYaOYoHV-NrU N002ovPDHLkV1nFrsILG3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/as.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/as.png new file mode 100644 index 0000000000000000000000000000000000000000..774776150ac14c7c2c37ed0620d64dd890f54de8 GIT binary patch literal 540 zcmV+%0^|LOP)1rq z%S%*Y7zg0rcg}atnK_eK4r*qNokUx7(e9EAMT(R{5ETRk?OI7tn|5sj{{c7FE*Gs_ zMC71QT0|l-8qT276lE8+OdJN!cYUMV^ROtQ^>zFurHx}41Hb|n|5#x74sLYA_yDV_ zqM;!WK$eVwF))U-hEni#c^{@DXVHNS>+8LirbpvB&N+xMH%D4SD@a99;xL|_bY5-6 zvR_jhW>1L5bbjWwn9k1^iW~r0(i%!3vNIk2WJ99lCX!+MLGMgIg6hK4`=1^@csKj8 z?c$~8j&oc~8`^Ro&qYDOV=A$`Dd_5Fbs73&VSM=O+n2niDRdVClvmb$ex)*+-6+}M zi?_EW*>iz~Df+LnbZ^h8TXjbd>CNgSkKevU2M71pBTS3j@(V1OPRWK&ZlgxIBu-A=AKIq&F=M0;DJ_dL(ER^H!c zYL$!((q~5|QXDW+av?|vZ%!O|BlfGfazsz`EIrAL-sDL?%pUVDUsK!-xN)2h3=jhY zTu2fz#WBS(2>~f7j)_F2*L~3*Ojf%kzj0@9y6f?`Wd>{l7O;Q@EMNf(SU>|7zgb|y e#r3)H65#(tg2R-mDwzzW4YAp8~uP% z?nEd;?sC5x_gd@AFywAmPN!4f_kbjX&>w28O(&Dd<#K5&ja|RyF(9eCHa(nw15#!d zTP(_IrSqAajpd=ZJA;Ta44<1#mxsgiey`(^F_tltQJZnYgZUij5}wSNPGyD%ZkQD_ o+-d6G5+@>|eBVFvpC31V0DRV3O?V3gg#Z8m07*qoM6N<$f|jm%*#H0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/au.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/au.png new file mode 100644 index 0000000000000000000000000000000000000000..709eac00de25687b14ff21859d4f0c8522f9aaf2 GIT binary patch literal 580 zcmV-K0=xZ*P)L^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00002It@kG#ZR-1Iunr0tnhW$0X-n#d)8iAS^JYD@<);T3K0RZZ09uEKj literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aw.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/aw.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7d01c10fca7e3b00c0c0c14c162a59f92d8f3e GIT binary patch literal 393 zcmV;40e1e0P)9=C5Jl&f!=oVt1OiYEmS3o-eg^S^;3o)4aSaZOD7XeJic}zKFklLvfWi?(6A0p^ zNpH{WSsQUL0nE;t$xLP?Gu(dm@wC$xZ5#zibd-vaLd@9-DY~LA~tzW>#57Wr50BB&fJ?p~&)&xbb`G^YP=xV)3;j>;<7M@%S zXF1EW(gY$p?Odor({wp;75U$SRU{UU&X8YYxV~q73#XmtpZr@^IES|N^Yhzw@%hn{ z)t&F_^GP&u7F8t7okCc!b#3$YV|n zt4-!iXFKOS=ll8X^-9aPe-w70a>uW=d&jPA`$lj6{pMs?ff=2mFgixZ7&F|n!`H7a zBa(Zx=N{nEe!AE^Te~!w))FG>EXHcAPGVbkK4&f!0)K~WVNQSI_g-|(&Y(LS^*ET> ziWrF!+sWfCz&U45FhCH7#K9b%OxdCCYGLMPuI>s4FiiAqsXqTW${vCt9Iy6cwXwb! zQy95X7`d`psoT@rpFZTgx*O{UX?GAJF)h)tzdV3aqJlz+DatevRfTY-%3qNAO*?a; z=hN0bC4p~@;(B98Q*h;0nN^{+Yj&Hd`~5P9Jo|d{`HhvG!C2IuTz)rW(`a$!>n&9! z(ZWiiEJk8y7yI8oA_vb-2&1kp7DAG#I44mVk7|Y&4i>P06jMn+l`%XNm4&%1imG=4 zi-e{r3^1U80=@rn W9ZW5xwLn7v0000r`a_C literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ay.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ay.png new file mode 100644 index 0000000000000000000000000000000000000000..d7a1aab3c06bf369f1ac3c99e14aceedbbe66ce5 GIT binary patch literal 525 zcmV+o0`mQdP)O6eid2w247G0kq;};iQ z0I;MjZNS{2y0@v-F;6o$=7m%`15a z!ETIU7zN<-{rzVeqlt}3OG*b@64ti8iC)0mft9#}Zge-|64t*lf~!EIY z`m)Dpgth+jY06Ml+ES&Ig>~odTCMhA43T(De}$o28H!Or;8 z{{HCpt@X=0XKvgSB~p}K1UdkXL=eH2S{=SyEk0~bCO;lOSuPf*uivy4Td=K&pn*OB ziBgtmrn~y`=wU@#{5d~#rj;eyTr*FAe)m2mcl7?3QcNqvP-J94X@;35MOxR-`Rzya zI7TM7hUZhHNioeFkY-wxSkylyt%UDrxC(}XIKx0*T;pDmgQ^$8z_uZQ9U~w-11QCHC z0tjNkwmLu{x&c%Mdw(=};nIz#GY<#WObeD}%z|CP5?rFfM-Hua>fYF!ZUB&K4_Y5S z=ao$xCm%N}YwKNEj?6@tTr!1y{Q75E-+X{2AVNq)<9+8^y|r$`==JF`nM7A+id%RG!S*NaB`Vy!tiymxGBB$*W(jD;aeKzNcd=yDJ9lzTjT)jnTs z4sG9m_Wlmh6i$!y&pdG&7V;DMv#wM8qJ_oNUI8Sn@QfW?vj1p-TtonCSB$S2@CfWPX?U_ih?qrm_G N002ovPDHLkV1h_g)+Yb} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bb.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bb.png new file mode 100644 index 0000000000000000000000000000000000000000..50992817cf3328dd932019fc52136b0363d3096e GIT binary patch literal 403 zcmV;E0c`$>P)1@y zziy6k7zW_`eZOA^S_z4PJa~>^63y~PEbajN6k2Q^D%G&7$Cp_;OWb|0IIq?PwU^U;F72IYUO$8 z!IOI~DJA9oi&q2x^tbP)NrzMO3p#Cet0(oM&&L}^Qg*Lw1Dt`XM$%3xh0gOgJUZ6V zS3P^p?u80v+HwILNG0u*UG~&XOYc4^k;M+FFp(n{z!@l~l*lEeOMBP3EL;}u-C&o< zP@&2Wz!`8-R?(rWo45CQ=I5{F&MkH?RH#sq3-AnBX*yPS9wpM8#cBIR$tClP x24KJdetdXar>G5zs2$Y6?!i9r2iO1w;4fydXM5QHykP(U002ovPDHLkV1mOYwvYe- literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bd.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..685325475ad79e05d955b487b702e3125d2edfe6 GIT binary patch literal 372 zcmV-)0gL{LP)F4$IZN&P7X?KBno!2m8H6zBW43pY=c?Oa^5ds@*0oneEP)AQ08qGehzJ4+P6vP2sop;833*oCiP^ zbwzzqHx$2K0o&~ssH&=3pCy+G9_?d%bfJE5OKrFG{rI>7pm)31%*@OxL3V3)s-L1G zS{k>vb3;{UrZX*dXLoeFTiwwe9hv~78OTge(v;i#KfnaoDd`Uozd)&Do`k(`ueTct}Rf^ZRhpfQ`q)2Hg*kl30I;#*|LwYw5#KOkbBEbbjQ0MPh+ys5# zVHmyxXNI#3{!S11zgh;s`8j}T(IOcK@z}6Ont%Mq<>d+hn7O_|f@Gx4??jC_oJ!3As02O*4{00000NkvXXu0mjfOz4@O literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..41f34d8562f28189036d0cb0ab2993c0f9c82296 GIT binary patch literal 320 zcmV-G0l)r5|qoM^r>8) z4gLA!x#14$oAvH}CrcJhnoLHL8IeIV6f{@otIhqU15hQ4Dyc*>95h*siYU?%6*N_X z(J>$gX;4(CiH$@=V;~3yf&-(1MGizq$0JtPoV|upQYgs`iAqu-kr^^2Eid%6LH~Tf z*`@qKkVRG;A35?UL@3);-U8jgKw+^c5=w|58wm*`OUNACKsx}QG=AGZ5r8i|&}D{g S&`PHO0000c zf)ya8^gAF;X?%_EFK7P`Ae-Pr(CyMqg7X;9FD>&2VBU@7fX4^A8Y9n*acy-T5Pl>N z&|!om!PzOY*S!Q|ueM^pg9DaJOeR>ZcHZ`61vK`3T!PyqifA;V!GP9lVO-UsqAa!4 rv>r*R%d)gNaypf9O#4skU)t6$GR{1cQgyqn00000NkvXXu0mjfWbcxM literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bi.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bi.png new file mode 100644 index 0000000000000000000000000000000000000000..1f03e129ad3f861554345620e2491e1855438d13 GIT binary patch literal 566 zcmV-60?GY}P)0&S zPe_w-7zgn0`?_SluWn z1Hn!M8AT>Uku(*<)<#OWwf}AN_ddVpiTZpDNhF}GmHsZ?(yl;&iI@mValK9=3@}i~ zKatsac9o0+)8VgYzXPZ)EL38#hPF0nP31C(;C74FPC9L$8nRCu7m=p%rUrAcXtY@V z=3uZhV)qRcUOlI5w)NbIJ94n}W>%$A!HK)udiEyjtG7PhT%28W`8_^Qqwm3&Xm5Mp zNO(9nIVmF9Tv|C4h(_hVdn?hI$o4-uv>f{J;!!TSl;23MJ-#2dd$dbs3K?QYvqm#a&DznF%BMP7I-U$pc|>-f zzw8U`_Xb1Zu^X01?ATnlf8R=W*&zjn3ps35)<+{_N4$N)^7GOt48wo@nuw7Zzpe7Q z(6iU$hbQ8p_tDRHun7YX;aqe?q&oj0|8%OMbvv|nibZxD)3StUE1mKWU$BQx0`Oe* z81ZC$SE2n=Z%+wm1PEY&00l6>00AYS5jZ;ia%t!0UwvpMbVW`1d;kCd07*qoM6N<$ Ef>NvqnE(I) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bj.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bj.png new file mode 100644 index 0000000000000000000000000000000000000000..53d4eb1e99caadf27996d36cca1ba260e78f0f2f GIT binary patch literal 311 zcmV-70m%M|P)X~s5Cm)ATSpL(IalfC$$c67Ov$l zOhj95{t$%H#NIJjNs;+WXmlGd_!#)Zs)N})r zXUe*Kb6H(-&uzDQT)jo23JHns1H<4J9zd{Qf#8YnpE0jF<`*OZYdjsXfcpRd002ov JPDHLkV1k?2h&})S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bm.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb8803156d1ae774f193136c9e28208c937803f GIT binary patch literal 499 zcmVCuo6fhK6O^yscpVPS-Tihu_c;o2Ydv2qG%p_C z-*`A50sVC`GstCn zhV%96`VZYZLSLL|s8m8KgAde2TV@M z&9#h}-|0`BS%B#J;)0?HGFa(@giHyaGlt>dYB4bvf6H`wz znK&KCC(k~15dk6rI^vAknT@vT?PWfFuH?dPQBy_d;4C`^2c6kOz2lzQyZTMURby3G pB_MbXP&cG>(+WWUH5MQZ`~x3{90!zUkIm5T5CcjxCXjEr0v8%w&~pS2~n zHgo6snY_BH$}RF2jgj`&ngLKMJ!!R?%*@2q>8q)f8{N2FI5!-q=jELCT(2e&6 zeAFgunTa_m6bhc_nP3~)(T7kLj#XH}j!U+iKq!?XRq92u*XF%_eztO4uh-4NTL?o0 sYzH6=$Ax9c2_SHWz*#^bjITTR2VAB-9=wV#761SM07*qoM6N<$f@Z$s#sB~S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bo.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..46b519eae66eaff219f2a95db630c746671a508e GIT binary patch literal 341 zcmV-b0jmCqP)j`{Zy)1Ve+Dxv1~x@g)!lSK z_tHm4Tq80j5MV`$;6E4u@Zl4Hrb~>Z4(ug9+6S?6t;#iT-+vqcQ1s^y*hng2Z@Xfp ziX|&9k52){-7DXJG4o_a)VOxTMzCtutQE87;o;r+8OH5v+&o>)ODoikS~g7o5;kn+ z;oi-!cNhp7w`zsBWy0=53TDHGi4IYM5uso!gspOQ*mrLxVWYwl#uwqGdC~8LDHD1l zrL)UMt{xoM&nw28Gv4y@eV!RAVmLEd?qn;Lil5{1?Ti6I(P^AiF>*996>Zo~>)5qn n2n)Uf0rU?xIj_InirDiXts{K5|IMJP00000NkvXXu0mjf`#F+= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/br.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/br.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdff06a4a1fe60b27f21234dbce30725aeaabb7 GIT binary patch literal 486 zcmV@P)6}%8EO`BihciwZ3LzLv_hwbdE#98BGN+-0!vYwz7mq);Vl z?9cW8`{3?sq;b!twA8D^!(-D{5c)v#$J2|49(Tc zQYqXV`co;@XS!FOxiEBiO{^ZPM~axBi3CJ%u6cW(BrXoQ{Cx2A4Zr#%%edtH3D0jV zx<~i;=G1(#uYnW^B4+23lh5dg?r}^0t(;@pd-2tKK@JHBl5-2m zf%{?VbF3U4UAvgpe!47r^-*K@_H&PCbX{BIpzqQ5k=kxzv-sxU$2g z&qciZV104A9diA9P&{~tEcvR|ow_1}kqX<-O}WL0T2K7CuSo>f$7oAxGQCDIBV07=~2;Ula{{EZS9FKK-tF6$ct%MsJEopYkZ`88G!NJAjM_4Ry lbJOcwd#(D<@!I{)&L3Vcc<7=8!d(CW002ovPDHLkV1l&lx>W!G literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bt.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bt.png new file mode 100644 index 0000000000000000000000000000000000000000..0abb9130c7d77e8b2dfa67b09856fb1abcf450c7 GIT binary patch literal 471 zcmV;|0Vw{7P)zb9@$)w*6zeeT8gRYQnTLP z>prRWHwL*%{Yi5!ZP?438br;cA}5E^9eGkMPG&Exhr9jFb~A6MUbl7c;=+e#E`gwW3j7GEA887j@&<|c9bP~20}TDO4GaE z!S!XPvX0KTzP_k8VsT)BGSM>JP$p+QI~1cQu!Qg89Xx{JW1Ro=$8UupBkKPzE}{Sc N002ovPDHLkV1i+3=T-m! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bv.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?x z?y$_n^|SvH9h6d_kb)&hpg>{Y1H+%h-A@=0Y)2CW(3XNeY92M4a>>oUe|j56fQ;Ye zW=Npj49c`Sms~RC%aZ^Vo6TlC9`~1Qcm5I)v0N?#z-%^KtyUyiELKNmRb}oNoM6vKQrr4doKYX*6a0TGWq`dK8=XQVlkY*oZa5w zb?XuiJ?Tujx?RH6DSkcv7(mIRi{ox3nn9ryy=g)-nxn}AKm{J&u{{Wt_>4CH%UB?A Zj1OmZePJ9pbGrZl002ovPDHLkV1jY5i+=zB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/by.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/by.png new file mode 100644 index 0000000000000000000000000000000000000000..81c5086ca61f7398f0fc2c4754bd71776d81c28f GIT binary patch literal 382 zcmV-^0fGLBP)_jg%cWpypQu28Ncl}292 zDvNay863!lRulO;x;$?mx5*km%z-S)cwsrq$YTd=P%Az@f7-3L_t)-47YYvKIS6>M c0j$@+A8$8xma>GhasU7T07*qoM6N<$f*8-ASO5S3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bz.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/bz.png new file mode 100644 index 0000000000000000000000000000000000000000..f653173d4fbbdb220515c097965af4fbf06d738c GIT binary patch literal 476 zcmV<20VDp2P)2$~ zJ8M&69Khk@f)~_V|PKQc9en@ zooqo{YwRUy(j+~3-~UAdU3{Ko#D4??GRE?pFfcI25@t7EJUa^*Zpx@oEDVOHiy@kH zdXxQ$sifT%C5nsKo0ng6)au!({7&0dU5r#%y0dq_k!7k|t?+*NO1E2y;!(UYlftDG za6{CiktX`+@#@{n(~D{IhSeW5Yfql8Aq~2q}V?i=yIl7g~)%wbV`4zkgc$ z^3i{d>PhM9wapNd5G{&>rHHAys*BRN*sA)Oe5sagi*L2+vvXBu>hpi1S`d%wU@5^= ziRwYEwOu{(!{h9@SD5+9!hY{y#Gw6qItGu?MGP!QAgV|4sQ&p|WAWaqWVzed=Y!ft z=f_cbZ{@?yAR5HPQm`BuqC_PK14&=Mx^@5ITDi~>;gICr^QD~wqL^5!ngBU=ca!0{ z=9G&N#lu8y{p~`f(pTm0e!l8nDfiXf)TQsRne2gqfq{U)5c(icgd$@G#)*F@bQv&T S4mR%q00002e? zyKWOf6b9gbc4zJN1#H>DLNo{{-~kA!Q&aK=Dbpb#S)$4d&`@wG5p`Yw@diezEK#H& zazcuTL@`;|nR8~&52WJz-1_M=ySyxX5zbBqiv|8e5`c)DPNy9}fCPA3o%H6<0hCu4 z{eGX=WfJZWBqb8(8GA_SHlk#W<3BML!e9qk`n`qnYYDP(bHxcAaRmMoNdH3EA`))8| zRp$>Mua1vq`}@{LxYkKbfJX?X$y800Bp%%5!2zqGYeKO;EgwEIvlQFH_e@lPB89-D zRJ9mL4tI8bPd8+}R&AQeY&4&f)DRdYizL8X(@@o7v>43{bv@eKYd?Q--FmXMDa5k#wC3n~#f5jczyRY=4E;IL%kNx6V0|0J@V6 zM;cHRg>$aDcfTCZOp^ib5HKJCKY<&|We9;J01+VxKvh@U+a190&mR`CGTj1Zz32b{ N002ovPDHLkV1fV#&ME)^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/catalonia.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/catalonia.png new file mode 100644 index 0000000000000000000000000000000000000000..58faea35b8693ccc26ae4fc5e9d9484805c394c4 GIT binary patch literal 353 zcmV-n0iOPeP)=X;_d?69>O+>_(5gQ9Fv=SBUtVK-lFOls0d=~fKBvTv? z%g#5mdy+luOI<)jEULQ$Gj;bA5w?9GA|fF;;(~!A3R++yxRz2O2t*w zUY^}p{F4U~1Pzxk3*9~Nebd>c%5ZsaeqvL)s;*+HuIJwjdN@!(FgG<-S9NQ{JF0)mEB`v=v{!p&5}HSCaj+Nb6|QQ5mTmY@HAc(GwXj!6&@ m=zxHLfPjDk092t40Q?8ct0}*BD&67$0000<53<}8o~AX4HoLUzXL;mI=JlsS3Gz`pgmc=4)WPUxpw)eo$9@x_BP&m&a^nrV>T zWV^6xE)N$tq}K;_%$L7v8`XJQZG6&t2IVjA)6*4oPB1tnc7=hVyfwIcG4T8R$LRuT ztLIQ^qN2^_ZBH~T13CV*A`*@pA0@1wd~(!(Pz)%9+gAM@vbj-Nz+4JV83z6|B&=0d zNH?FhUP3W%)lpkboCLk$fEeG9DGP9627aZs-ga9Ny1)juTR~5_Ibw_&m*WJ2Z-w6R2|jf{{s!r<6Ct+Q+62p zelYrN-~Y8JH}NI%BXND?i*BEg0kS?k&j#^+^M=I?-lgpiktfcE5z-J+ZS|Tf!V)OE TojL-r00000NkvXXu0mjfVB6DU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ce.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ce.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2d4e577ef51701989f1a4f0ddd8fd4596257f7 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQl_3Rjv*QolP_u+rvEvA!oeg# zG47?uwF}a>4;^r*+3+v@;@df{O;rnc7xn5cu{>EA$>(Xv%ivzfX^`9`@)>9VgQu&X J%Q~loCIH!>BnSWi literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cf.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cf.png new file mode 100644 index 0000000000000000000000000000000000000000..d932c21016b36a1a82b97838ebf71ed744c9cf92 GIT binary patch literal 456 zcmV;(0XP1MP)2e? zKS)&p6bA6`zI*NUDtg|*;wcSj(iA~!HPq@*t<~h<&_9>AIz*E#E#c(s(2@{5U9%+! zdQBk|C}>2R@ot0XobP-k5%l{Noy*&0w|>3UyY=)tTJTIZ`1z?vVEn=!#u7nTf`lb3 zsvzKokWTA8< zrJWtQf4i7Lc_^43I$IZLQ0(vjn4Fv-@kdbzN2IwqnQL=H|75BtisA5M1vr4Rgd_-p zj+n_@{{aMGG#XV4?-mxXE*=~nP-K#=WX63nxvzd%jbs`rMn>JP`-6Tp*ci;7pWSVC zEiD+H?zDU6GF$nuVl<~)n$xGd)6IHQA>eYOMTXNX-DonGyV0C(G_O1mECa_-_2+SS zCVsi6JktqFnapMO;)XLlX(>m+Fvuk^_`na-4HS-0Zm&Qb+^{@XU1- yTU%(g(CMJv#>vwFkqOQqf&2^-nIMsgzkUOfv0R|aEXAw<00003l-yn(%yO~gX2(xnnfYb(S;#KIGJ1R;%uf?8PX1@s1b0;4AL z*Lky96?_aIyZe6M_h#Q@@C3l{yR>}e^!&BbRz}rvDmFcX+&2bmgCJE+#e_jbI0No2 za9$xZHVeI_(cN_(Y4%EQj*1EyxjJ#UMC-Gp>L{ifQZ`)m<7Xn=bQ6Km>(>EoCQ59n`zwt at61Nvfo687lg>K;00007ytB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ch.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ch.png new file mode 100644 index 0000000000000000000000000000000000000000..ead7c2a0d0bda472f34d3836d708f980a6737cad GIT binary patch literal 239 zcmVfXEm+O?t16!!S*D z?7Hj&F`z<>sqZ~RV9Z0%ABja1M8}BI=vC=$BguN p>ND_jS`D!*G2Hugbnw5Mdu;f#!3WVuc|ZUF002ovPDHLkV1ii>VyplF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ci.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ci.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d78c7ec62b41544a03f47c0d497c5f5bda5686 GIT binary patch literal 306 zcmV-20nPr2P)_DILgfjJcOaJbN+gnhcV{ekP$JwuB(XDT@-jh?kT9a>6K?JSOPw_yU)q4Zx5f1$9pMbe@_E_Q1NP<( z6;+4aL94G-a|^}vY>Ma+mQkT{#gDY@rqX&xBvhE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ck.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ck.png new file mode 100644 index 0000000000000000000000000000000000000000..99efe5004472b34f938abb1e957841133b355948 GIT binary patch literal 495 zcmV&>NDU9(SHbP*{%Dzc^(TN{p z?`c;aIvkyydoGd@sfp;{4*L7A&)+;=ZH{c^osX4m?NO9m__(>aT->&OC+TTMdXl7{ zzBT5iN|WJIYifNhF8}axoYj zsX}2V&P^yxK~c-xCvyAZnA+tU*LviiI|UWfoxNPExrC8(SeZwt`3y>|%Z-n&i&h8H)tT zGv;tOFr4p9;Oc>IMIpk>*onDw3fRAbl8IiQ9bO#ocOC~>a-&{A01qJ)MG<546-_3S zh;eyxfOCGd_x3S=AI)J|uYJeNB5?aO$nJN~BT?6kZ$XT2EDEPFIdjk-^#4y$jMgBY#f4;g5;z1MR|h`NYN@+6*;OC@8gHSBgvgCOE5 zp<02eG^(zuP#P4fF2XOgK2t$6IkOl3afco(QRo@0W=9nGM0Ff@M_o`0Dx8K01_!nB{i9Jqp#?q&%?`q z0Dulbl}ySKC5m9?eHnR`Fo*xs3g#g43*fz zq?h3%nskKMe)`CkG*n74Nt2)>95JScM~y%N383Q>EbVOWuqfnYmzc7VkU(N8G<~PD t3LR^>f4qYL0l?V<4*t#z)cZK|pf9wjU@ZHo&)@(6002ovPDHLkV1l@Tl-d9Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1b3109088219c58ed80138450c857a18f28848 GIT binary patch literal 349 zcmV-j0iyniP)uoQ1TUaR@EGP0mRfin3z3+@#!^ANfS$lYMGzAcvopJE@xK=y z!WP4_GyAdIc>w|lpbG%lKF0eU&@=@AP)k<<>|UG?PB6QS{$6Yz`Sz>NCW0xYBtuHF z=;!IQ3ScnK-p=b_?4M^I3vL{G|A6xwCYi>hg;|o-Xrux%zsi{T&#n6}I|EOdzcGzr zmRyBdU8H~tKz#YfsgT+_Qnkl0RN{YtT#X^h(U%~J<)KdS%@i5cL0@upnAh$l3jU< vb$oOFkl-Hf=`Nu2*m`7JsP*hZZ+r00000NkvXXu0mjfRA`g) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/co.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/co.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb10fd86a7701205aa8850694e0bf314458a495 GIT binary patch literal 330 zcmV-Q0k!^#P)pz@LUIECC)g8iKYk9B(9l&DacknD#*JFHx_JF+2cXq=y2xrpSEE)ZpJp0u zHy*_7KJ2Lh*1F(PUle?dv z>f&oP8CA**QZ$i{Z&k|j+4=cLKI~_3-G^)U@6_&0eH^b!N5;-dm%9!(Vfz9GU?33i c75_)TAFzOH!HO52B>(^b07*qoM6N<$g2rc&2LJ#7 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cr.png new file mode 100644 index 0000000000000000000000000000000000000000..413797bfe27985c3c3591a73d5b76cfb36ca7294 GIT binary patch literal 349 zcmV-j0iyniP)^Velof(UtM8#nk z7}#BgordiR0!v7Uf(6ts#!3TFhmFz2<)Hx^vPG99sc6!ql47aEDxZ!o+QJ?JumKo= zZNPug`_|g)eBNO;!``01J}twtR-`Q10%_7x+t`fToAvo04GMwd1XE^fr?WJZ4Xm8WWX#YST z?|sl-waRT0q-2YOt*xi?v-Y)Ebi<*g<%?|F`u`=Mwf6k-(twl6)e%diiYkg!mMF4Z v5-G_=*}k5R8*sd8ab4%y{uB%pAYkwfGWUCT^E*_B00000NkvXXu0mjfqzIo4 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cs.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..0e0fb6debad853d87ee34c8fb609bc51f0f790bd GIT binary patch literal 321 zcmV-H0lxl;P)m8eIYJ&2)M*nOwK+Wn@~>jY%P;Z7EK)?ZxBcZSj6z+7>`&B9X|y zR7!c?Y?|(|U3Ch-3Z;b9Afhk+-Je-9BcgCJDYID~4zN?|aat*5U&1bf!P8>V#CmeoZ|y^ZXum4>a{1!Q+SZ4FZIKAlMq>mt9yIHas4t zfY0@f!JWLtfwTSS&C2nYT63Ji=`~r7a}qWNU$-#ya2a?jd{C9wL#FV9?&# zE?9-jK>JB>%p#au9SG+I?YN=Fd%S$=2z>MNDxJ;?5eQGH(a@g;0B8@{Y?ft!%9)w> zblNvJi@_ncBc>~EMW$acrk`IjEDwB5O>YGkZ3)wOlK?k`baIeVNm5cFxtU;hKxge< nF;pF=5<2Z)*e;XHaJl3M_c~nVUc8ZD00000NkvXXu0mjf82-UC literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1f79755d6d7188455ac736420ddc38fec14fe9 GIT binary patch literal 441 zcmV;q0Y?6bP)*C#8?HDewE|zV|2#mtQV-`F?l5@9qdBCDcs_VCVrX04Bf^Umo%91YjU7Gp)#6 zN+}4Jz>&r!7la9&2@PW=r1D&Dq$-Bfy7-0+TR^?30_&Sc5lp24A3+^ez=dL?_+aM+ zW;6Xe>$y>j!{K!lsg&1&Ulke>?Zz}X|JYfn7ZDaPLp6+ANRb^-AIP5sI)8+Z*nDlA8Yq)|5*(|sTK@A zWwV4*>L}na|Fp+fq?Jk~!!;%r=k)xGjD^mUk*!pA{_-*0+j_H-$gCbu>|Vv3Md9jt z+TdsbbO@&hqFQqUJXQiPHNW3eTTZM!RJzZL(bKyjZzHt0!RIF4Cbjg!L6yKr_17UW jfS=Ri?x?UY??BlnixNU5lV_#|00000NkvXXu0mjfr|ZIE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cx.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..8acecd6ec6ea8225b49bcab8cf8d18e43bc5d54e GIT binary patch literal 498 zcmVL5)@RV=ZPK@lH|;A3?3F$qdVOR!KV6go&p2`Gw#f+#2=w5T`~ z3W9?mJ}9C%M5+|x5UjNh0kPFI|NB0E4yKUfI1X;RPXaxIxc(3swB&#Tx|Z!l0Yw6s zo+uY^_^tPTbGW%_Fbk?d)m2?2s0KN)MW=qq%=4KD=s+X={oYaA``(VckkqQVNf7at z>7=us6$x9Rhyb|5%=O(q{j%MTKV`nAu42MKao!jZ4-7#LY>@pYkp$e#%jN#=bV`42 z=Isktwk6Kwc(#|-8uJ1E>9u}cs3i2ja8SI?dGk5#OZu@qbhu`NDrh7 zox^?n@SFD+6^bN)p`n~vh$0^yt&;K5VrHa=cZzX`Iz1llqdBkEC@xT>fK!b|XT2_i zgSld{Yj*b6^pis?_4U<{{SzZ2GQZa8W@zIQS#{Jq3S(i;LhSI2Ma@hs3l7LTkYA za*xAHULy4@_uj{MF6Z)8nx<$-1b~PwOHxWH&+`C~G#=7SRcR=SB2___Ugm@ZNyl+S zME#`&*_f)!=z%-8%tMAl76te3Nf$tAsCO@3`8i}hf_DV#O jBr(6JMT<7=KQe}2oC86G>J_z(00000NkvXXu0mjfMbwfe literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cz.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/cz.png new file mode 100644 index 0000000000000000000000000000000000000000..69ea675978398f999b76f1719360121f06ee2b93 GIT binary patch literal 367 zcmV-#0g(QQP)u1 zmZ6~Qa5SBbU%qQaBl{CyH;kkpb}Lk6PfX0|e%y|1V{Sm1OTwJ%Qg!!8NPK$mzefy+ z7#Y-dNRG%YQ*|?;&4*F4(UE^f6bABVL_r+Ga3~!lR5!(AiO;9EJNbQOtTTqJva^;w zM@jNkRS}_#u2M0iMV98-Tx2a61KuMn)93<-z-S9q=h;c2>N>Bn=?;oPr$TQ~b^mRA z{87Nxww#5MCsMh9wSh3=(&8Gv!w)_Wjt21gF0ba7zQ&@~AzDQU@C!2;c@yQr#9IIW N002ovPDHLkV1g-$D zJ5B>p44n6N3j~Tpg_L3&Zoom{AhgisRw;9cTp?A+E_(og^6427 zijbs;*gWK6FH%O)WR_$dhHM>>nxaVnl9HA!lqO@Ei7cc|2@!IaJLr;BtM+>sL6ezC zn1K|TK#7P_iX=&`yfW34-zc??yIqeT9|WQ0=|2=HGy84V&2DdFvyr>ZPFE|9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/de.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/de.png new file mode 100644 index 0000000000000000000000000000000000000000..2df162b4af4f5cff88722fd8cebae2448e06c1d9 GIT binary patch literal 364 zcmV-y0h9iTP))7`_((fOi`CvX4 zRL$$Rm>KuO<84k@6CJs)=X4WEqE<90WtPeSv@rP7rU^W0-I#4uLnIch742NT@@zOt zb>Wq^5kRPf86hVcNQn3znA7M|7Cw^+V2riD7sD_ky~mK2YDnYU)N)HVMCTEMhq)`- z78AK%D47P-q1PS1VZsH)na43w*#X7C+;CggjI;SC#YyM)G?Gx@@2{?Uk}d&gqtHkX zZ4n?^PLbAsQ#ZX_9vC^WfojPw9Ea31ITkUHNt#tp&O`%!3H<;#ActYJO|&rp0000< KMNUMnLSTXvyq%T+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dj.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe7b82cf6ec1e92604b276d68d5eb7bad1d88b9 GIT binary patch literal 430 zcmV;f0a5;mP)2LkIX}!}7DY`V6w=_TLt8joqo1S6uOga5-=G#36A~n85rmfhK)LA9(I}33 zjN|)0&wV$j6kOa~!^Pd~eDTY7^nWux2B-uQ5tLAbMxhcaMWawD8f$564@Z1DmScUip-EA6{(Af9(Ufhfam7i?|Xh8Th{tu{ngppkB2|2Yf-7HMWwn<-jE2-P<+TJ?dT0UMr8Xc9U{P$g}OQ?o2 zoIopSpuy|Go1K&Qz0Sl`Z>p+R)o@&HDAJkAbW&(n`YTJHml!|?0s;g91$6BJK)^VE Y0esV5BjJ28!~g&Q07*qoM6N<$f|YyA6aWAK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..622cebd2ce6885bf0f304ac418f32853177b2264 GIT binary patch literal 352 zcmV-m0iXVfP)$D zJ5B>p44n6N3j~Tpg_L3&Zoom{AhgisRw;9cTp?A+E_(og^6427 zijbs;*gWK6FH%O)WR_$dhHM>>nxaVnl9HA!lqO@Ei7cc|2@!IaJLr;BtM+>sL6ezC zn1K|TK#7P_iX=&`yfW34-zc??yIqeT9|WQ0=|2=HGy84V&2DdFvyr>ZPFE|9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..c49785d5ba9588451cb416df1874e9dc09c79a65 GIT binary patch literal 508 zcmV zY%(DPFmY-EfI`igm^f$H*;Opof*>edEU;s7%ud9~?9Q(awOc232KnB>0^&&wV5 zD872euS{o^9kX!M6M^8vL81CjdSLB$d|GmYPYQ$WBell0g$)uSN1_6Pr)79MV#uHW4kVoC*nmFye26+}R%Rz^3PA`08~3Jr#Y9xZ$=jnmG?2bI`t$YUxmU@Bj1yH= yQ*{b~ha3M5+0iSvvHLix)oOGp+H^Z70R8|?oh*!C>j8fN0000*p8% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/do.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/do.png new file mode 100644 index 0000000000000000000000000000000000000000..46230992f8b71bde1e8959006297cf11fb146886 GIT binary patch literal 368 zcmV-$0gwKPP)Qr_)gM}v$f)_}a-V3CN-AZafS-a%Tycvss zBe8Ib;qjPx1M|k}%>^FNGRm-jetZ8+yYB~w1`OyC&j3E1zYUPU9XqnuPcY{7^V8Fi zkwRJuxxKuc0VMeG>#i4dyE~oCZf>_JhUKb|tK(w>a~lb|(@wY5k?bUKs={(HRVF7= zzzkV_P-}0PM>4HaZ+&t z-G{G|sg_Ln<%_3ZK7O7IWFIP5r7HK8`@8BaYRZ(Q?lz#=z`i(gak?srlj8oiy47j_ zHBi%LGsvhd4suMZX^hR$y4y>2w$%YVZvK7b!mn)Zu__A_|8`njxgN@xNAb=^Qo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dz.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/dz.png new file mode 100644 index 0000000000000000000000000000000000000000..144fe154e23c8cb79620ad2824e58d503ad3b5fa GIT binary patch literal 454 zcmV;%0XhDOP)tpPzWDU`W?%5?>CQaD?yK1YZZ@~ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ec.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ec.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca13865ff24117c974cdabd10bee54385c5f8c2 GIT binary patch literal 355 zcmV-p0i6DcP)Ny8`mc_wEN`= z+Q;3!AK$jXEJ{p>7Nu6pjhyUOI4gcWLOI{kHc*tUS>yBXG2 z!b)i*z)CT!h#^Bk%I)8;z;F%_@LTbf!7H->JOTV{fg=J?zBvE@002ovPDHLkV1hlY Bo8SNd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ee.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..17393b8b0042d4f3911dfc81f2dcb775afb8f057 GIT binary patch literal 297 zcmV+^0oMMBP)dsCnO4R3Dyb6q^H^W@ZK!9x&$%1n(upWJ)Y&| zB*Q{PL#(bEbKHwnZgL4}HUsu{d?Yv|GCdMtk1$Vjcxm*}BAe&?@skAD*Ejk^Be>IJ z+>Bl=6lIHt`#TZ55Y#SVssgQ)B$_yQBc}z(QH0a8KfT)dY_P`DO|{%Luyr_yeDIUZ z9OWSVj&I==F$b6gcY?L)RiA)c?IA(JzVFMjWG0II+c2G`XIAwrzZ;4wi|sp7cd~hZvC`+{=FQRfD7#00000NkvXXu0mjfu436e=mNm>H=Je#!u49DXWA{+tI z5hhJ0=}NO^tstAjLjmp1$w_l`jNbm{d;}u6=GN(Z^RS()mKw=Y>GgK*?@L6KQUKV7 zVK_5Bmbc*J_Q3_*`ioM^YPD**cQ+YqyS`j&y~D u;e0-C0gxID1|+4Bx44+{USQO^P(1^TQT_Zn(m*^vS@EeFnBf9hrLa30=5&vUUA3(61XQhLlLM=k` zZEtIPicq(^kll3Sv0)X^-eNEFs zkepJ~1!3o|$K!M+^QjZM-EK0O)THr#i;fZvB7PN%S?3h65>nf##ByR*4MC;Vl4esz zBdJ!k=&ex5PNxb$O$iLV=xw0gmU>+(6=^gyGOrHpfygG<+d|pZ=xqpz@lE$)6 zFT>-bjX;RaRvLT{v@v?6_nlZIL_#Dctv?1oL_){}0G3N( z6h)F&=58VFZB9!N010v_NfaLA7cY+EVzDR*002qnH}4cEk&;BFIy>T@R-OYl)Sm`W zyZg4Jv9gxN$`~0-TIIuFW2f#7FP@g?^9Nfql9t!%q>i_vlmaP=yUF+cW-|^<(qnWC zRC&ElM?$3`Q5wqzwd%dsZod`^;eg?wU_Sx*zTav+1^d;`!ffWNOZA-Oyn8SdoERO+ zoK-r($yIx5GWXF*td*s#Wna*>q@^sC&kb!JHoV5e=Xict65RSANk||1M+lL^<#p4; l#8LW@T>|D`5OC*k^%v_KYfuZ&@Xi1L002ovPDHLkV1m(zq^bY_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/en.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/en.png new file mode 100644 index 0000000000000000000000000000000000000000..428b50616557bcf74302b673b6264f412060091e GIT binary patch literal 378 zcmV-=0fqjFP)jfWHLcRB>4UHw7pH>`0Wiv!N1A?ilP7z5%ZkorK9U>nw48yXtkoD!C;Up zsHP(#$Z5Y%Rl0+$>6DV0<$rW#sT!h@5*ph*e=WOLmr zND+$AJvBB4U}l+QO;_Fow03r=nidvPO258&G?N?-hs|Hgc>H*OFTmN$3(ArtNF%F+ Y9|GY-9z>%07*qoM6N<$g50a8JOBUy literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eo.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/eo.png new file mode 100644 index 0000000000000000000000000000000000000000..511f9ce93a447d067f32149b2c5054beb294be46 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQsJI1jv*QolYj8D)&Kw7YT#7f zZgeK)K)b>#wfLET-v75>WWsQ@H2%f2d8cK!XumkyZ|-ul;N@G@`?CAyid%J-UV0us u|Dj4E@7MHK6DNMt%4L$`@Zk66WjOL~=?XLM_4k2RFnGH9xvX4otoO#db|v!76np7 zWhq)9Ge&~sghh`18RyLN+|PSjxe|VhYk#>{`!QX`%qUs|Kmy1v0^AdTtF|$H_0Ihq z8epy9Ye%e6pyfy-jr6LX^r}YnI{RSOr9ccHZZ=Moc=D5tM_k?3kH`38NVXzTs8EEW zrj>jJgaZ&1eRPvqq}gxF=XGS0!}sjQ96ulByNbT8=z6zkpqeQN=YeQ~@?3*M3v}!^WDd>)nbMt+Of~ZwPZGtBH5hc#Sk;R(b6syr7ZwkXHLK%zde;%?JoC{N;Wvh5 z3H!xAlH9WXMN;oQyU;tj)N_8LtFN6!rxFF~&I5jh?Ux!4NdW!xK3ucYOM|2H#Y-DW zxrI1LI}nMO`fdl%#emaJ+B5LA*;nfxUcP>==?dxtN9#B5E#(22&zXhhGl1>`@c7}{ n3~pryFCtB#DX_h}*YAP<#=ssusWM>c00000NkvXXu0mjfH>l|x literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/es.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/es.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd22a445ca70d6f99d69c8ea2a067b4dc56fe20 GIT binary patch literal 344 zcmV-e0jK_nP)1gx5QV?HUPysLiR8i+aT$vAX?TW|)Gl}h%Mv{e&*GMfiZ)K~RG~m3k`-+5-uXEc zyB4;D7#)2&#mp(r6!CZR)c;dOzZT`pSyq=#=r5FxXkgR04@ zYL!`;OcGiG6+uA!+T`zz&R^BhnM)>BsSYNMV);aq00F+;d3=J8?e53heb=uZi7E_e z00_xOx9|MBm-mZj>(||5If)-`Jd*~HT=MqK^yf7BuozulwR$dfQa!Lr6y1(hZtUm8w?he@l!6kR6bTFFD^8TKomZ6h@y>Y{%TwFY^R&7FK&Uh>{JaEIT qnBh)O_r7r=63XuMk^lK|KYsvrv`VkAPjW>70000g3`gxHyQQxHLEmE^bav*+g)56>%yk zSZWDM!30xdl74ybd7g8qihBHp`*B>t_9`Z0oFoj{5E+>;z<>(KK>l48P-6V;{>?`K zA{26uuyD6*;TAG?x|3nhfafzx9rq82+hkFDgd$Lrv=rNt{v0^r4Bgyu16F`Zz z!E$5HVrJnHHYd(qyi=>yJz`Q-hy4dqMW?wn&!5EwBzL5A7wAg{*^{^3;cRK6-8(qC zv^%)cs2|?DdPB+*Q|gSzuL}TxOOz;Zn(G_w-oeqTMO^DVA09WP{0mqF3ILKxCS)n6 zqI$Kz70Ru}4=+D%pE))9bAT9uL?Cr<>B}dW$#R}!XY=Xz(~Ar({1|ngZIzmcgjs5@ z4SVm(0BU{HK0%5sbAGsU{e5%Y%`fl0DL7NkGQu3k4xkL6pkZZ2B+Owf$aQ`dOr4g@ nU2 zQDc*X<_@Daan_v$CF|B1RC)&=SvPI7em;}n1jZ*!tP`&q{81O2kjH$oPQh}DM<07o bvJ^wSHdDvy3v2X%u4eFb^>bP0l+XkK@fJ|R literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/europeanunion.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/europeanunion.png new file mode 100644 index 0000000000000000000000000000000000000000..8f5a3eb31c1c3aefc348fce8891d8c560f266266 GIT binary patch literal 418 zcmV;T0bTxyP)@fny6GFWy~~l$0ciCTVTET32fyOurpl zTltW-Bqx5gy0yO17eSGQ(j<0UP^6%6Ek7QO7k4HPK3%@Jd;8%6kd#1&5Ol%w*}uW? zxPqi8n9ZNVmFK79932MRaViJ%Jw!LD-#^wR0TKWJfgp%O2*@IW|EPd^`1buVasU7T M07*qoM6N<$f;qvl*Z=?k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fa.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fa.png new file mode 100644 index 0000000000000000000000000000000000000000..8237ca275e0e3548dca436d1e27baeaea83a86c1 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQYoG;jv*QolPBC!^At*2u(xeX zapnw-rx78qc8078;`zU^G5dD+`C0yZ|c zJ|?7Vg=x0sZ%#{C}(e0W75WG+v}`*&&6J<6+kQNKRALUJA-!S9vG6@5KStnq?X-K>4$(4b=uhhTN&jPOeeGQ zS6TmetNlMR?euQ2yjC*99LdyurRtPAm9**5-VK%IAe~g8%>k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ff.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ff.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b28f332eb1f8d30c908890b41f249789a98c9b GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk9-Ajv*QolM_6Q)OZs`Q+?PJ zlT0@(mvY^z;kH$aNs`5+BlV@T#O3E5OoFo%#CREdPvvMT1phSVY2Y})P}JCDVVWVD zS?)JIq2;&A$sNVJECK}P%imh=`6lw{?3=3WE)HxHyl-6I$E)@EIXAQ51jn2WlVtd> cTw!2{`%t)5iDmz6pd%POUHx3vIVCg!0GahVSO5S3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fi.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fi.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b1058cd49c9818d24c6cdd446dd029c9c9b82a GIT binary patch literal 368 zcmV-$0gwKPP)3qN zF-z597{=lIJ^dq*6BGyqN<%o-wc6 zl5*C^FMUEwNhE#WJ2a{y|I=FQW&#zFlw_0&>=Y!*DGF+>o2J`u9^c>G-Ro8K5m!bL z=#HIH^npz;Hr6gYd-!tFfx9^zRK>+`T-c1tFx`02i!suTbTA3$2myv;)6J2pR6$Wd z0Rbf1=dZu6ZCnHr-Fvb#%rMWlHzB7QzO*qV)@Tyjw8d(%Xou2P9b8;0LY>+{s)K`*6j6~5f)$GB<{}OS7ZnFZ zL8n*{s-U!jLqWl~S?$uKD2*mH3E%rX&p8DDYG<%uiwZ+ZJNS}t3?-jYhy1&4);2ZoTOD#hrPUfI#+5L%E=44vuQpD3@@ zg>HK$-q*YFrC6x8dZj9-^Os`vYWk#NPnZV%bC7fiLUM)7(67tOjF|et=LwUCMPnF zo?;||6F(fT>CI8BRh!MwBo?JN*2r@&uJn`&THRz2{Wf^y=;Bm>(3DP;Vi2WQdSg=% zY@fZ6X=ia_EcFaY=s060dBFmv1400000NkvXX Hu0mjf&P?=m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fk.png new file mode 100644 index 0000000000000000000000000000000000000000..5adec9e3e216c8d1ccc331107dccac9c94593316 GIT binary patch literal 526 zcmV+p0`dKcP)d#xx_1+L2i(17gPWL&Mv5dS0h~ z{2Z^(Ci{B*TD|OcwSUGGil)4aM>@n}^huK=0m!^Ne(qQ%eQ$A7AtP$zne@ToUDf4s zJs={{kacQyzB|dSm6R(MAmdIwy1n7_t0n%GGE7pOn=AFN9qh0g1so+(#u?bQ<$L9I z(&=LofXv7&E}wKHYCmpy!j?6fFV{)}g2Q37M(Wj>XWv$qyVzT03y=YX)sk3YWl>^F zam-ej_0kzo^n5z#7kBF(|Earwn-A9|NsY-5-2Rp0F3xv%thu`-87$>@NVbSFE$326Is)hy=JCj*kJ)LCy=Xam?ZPqTIxq5La z$;Q?WN!zL(svCfWyx81Hc)xwv#AJQ*=l;<+H6{rLbr03;sEy(6r-N#ToLihT+1@>R zxwV@p&|sqGShX-VZEQrwsqb80xqD+}td?SEFhEocV|9~-le2aVcIJKj*_-c4&Yn6E zM6lxk5j}JM-qW$Vy2rxRs#dkS)van3>Q=W}q9y$YNkx}*4i6DT00000NkvXXu0mjf DZ$r3g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fo.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fo.png new file mode 100644 index 0000000000000000000000000000000000000000..39d2040bc6b5db568881e7294a9c44cb89d95b3b GIT binary patch literal 377 zcmV-<0fzpGP)$? zJxT*n5Xa}SPi(R&!fp(*i60O=g@uLQz`{ES3h|@1(^gMl;Q>5=h=`4C3Rx6cg9+Iv zq)6k=%$u=zF+`GIF+678e?HA3qI zA*m1|&7T+mnAwWRWaZ0I5d0+dI55V*KMcTFWAZ$oT(Mry?qPEa?$R`wzAlKch!^|< Xcrah)FTsTU00000NkvXXu0mjf(>S4> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/fr.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o$=_DbN}6Y!~;F>KOdg|kLTezf1*(xrY6!kz3OJS zHe;KUsi54copFSbQB>yV6AARY0<_c`FnuoKe-nj{smg}h(JY2hxX%m2WGXxT1d(4d z{@!;WzHTMP8XIA?_rO@dd{SUMW+RnSAe9zF-m(GTK1H$V+*3Ye{%#NM*@H-&tb{r^ z0L3rD=MG`P{$`MAsKgq;+Y5Eb+-d+QMOM{NBfQ6~3Kt)ApuQ85oJPEC6{NKm{P_44 zWb66o9GJV)4g2HI(6p(e6ps@fVke4@_&8HsDWcS~)`s z_j)1JxsmG&gN}|MX|uv3zJt-{(0W@CkztvA-uUuGNJfWYyWPv8WGR?Y9=p+vKhIuZ zeCa|YPaMY3$OJZ?{XfdP^)1N03Sqi};h#K4Cd=`M=)KbdIug)=DW5rKc0Uol2xvm%T=mU z4UOSZs^$I?Z|K;;cF$r7tLGkNShC{O z|Bb8u{ri9W;g>}lZqHwT2gv?ErRRTNE08g1;pN`B7fzmd{I9F#-`}4THeFyyYB{*) z7_h9sy$HX8wQi;=-M`j-JblnvMwSPGkT&6yydp5E}a5&ks!usO-$O zmketXYyVH~_@9#UKR*6{WaR&l5Rg(IpMS2dzwGUQT3UWLG5M;e_f=c_XRuqVycG@` zY;FITSwPGM;=h0Y{`vdo_n$u}ufAZgkK5EU=X_M!jw@H+|9|`DXL3A9m66GBeM7K@ zzfYYU_s`raAw4T3VLgLzHiLQCy2a~3A@jMh?n75sOvy1I`;WHnFHLQrtF7#p{QUp_ z%dELC5@MRBo?{S9XPCVC^1pw7zqeN$J#f3Q;b30FVW12DhIsrAa{l-CZ+P0a(74sx z58wLx=f~>=-|V6#3{~?EOmRte&Ris@GlxfGGKcDf^VeRqN?Wvuo1DJ#l0m$fL9~ED jI9J55u6NIMSJONIJWOb+P?rm600000NkvXXu0mjfi76Tv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gd.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..9b077bb889a58320500ced1af8c7e102ec784462 GIT binary patch literal 461 zcmV;;0W$uHP)2G) zv2V`SFo?yVi%Ob^bm&GbB7((GF&QM% zn8hL;N{~ohU5Q+pp6By?pNB!>^{SHp;x??oJX|N7m?tg~JBS4W0s^W64`1Hs90Y(UEo_R`zJR&` z8M(4v=DKC7rBkD2XKh(|rc%}$*rT4F_G|+kMnD}9rOfR2nGgPA-Ispp^q8g}H&C^B z&K`8_%cd+$!%_%n06}S^J8vtcR)4F#NIBp4i~YUN_&kuMS(p{`;sG_F@Vg&+rQbW$_HF|~&+uZhqFv!f%r*R?0#<$t9+ z)DFViqw2JDWJHN&u?!`aO-(d4+p?3pbgNgaR|4vQ@xI?2-_vM{EEEx{Qlt|ioXU@H zDaR(t)s1rq zJ!_Lu7zW_`oVKvWR zEi4RMhe7aY#a^u7+<6$IX-e-IkL7cnBKFF4gdtUO#`+|+^M$awg?76wBF?#JyP9QL znx;vT^d3I=bMMw@G#U(9V<%{ml z_F(NfNmUJ0m1KUgGTZIuE6bQLr%oeFjWGab?yLlHJazLn097^3W>Z8|6$*ulh^mI= jvI4_;T|@xrF#!Jn(zZ@>A)53c00000NkvXXu0mjfFG${v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gf.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gf.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o~;gJ z06M+bCTrhS#ZnspX@GTtWeMQcs0-cx)~Ao6ba~0MM{L!y6&B$awwKbXHQ-h^pSi!$ z;g6Q`>h0Fv0MFn7fYz;xE#Rw{d~(6v#o^6swud7?R5Mr~zQ?;4`u39^D`do>o=efQ zFI2=(k;hLT`|Ag+FdQq=Xp0$YbaW~7$P-UMtROT#KRZ|Ci8pfOu||$vCrOhD1`DnL i0tR>@pIm&@0Ki{{GG%4t@;Pe&0000Bv6cq33Pk0osUc8CFpy0^|n6t3w1kudK9;sd~#?yA2SX_U?h=fSeRN^Sy>CQcs70-+73TYt%8@00LU*Eg@ zt({gAMvK-U1JdbktyErBiLbI>5J3~zfDAfa22>1i;Q%1u2Uwi0bG{A#lf6=m8_Q_u P00000NkvXXu0mjfa)Y9T literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gl.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..f22289be9de4b303a110522bd495a4a942849ea0 GIT binary patch literal 351 zcmV-l0igbgP)tidRYQa#0(c5!MR-1=)1fM>Rc5o?Y}oB`HcJg+Ar8(VF=VWuT&A`7{=w@D x@_DmfBZ~0$1`&wBxr7RsJ)k$lefrP>@DCV@TT0s}hGPH#002ovPDHLkV1mwxn4ACr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..feed27f5c5524d11bb843f69d755fecd30f00694 GIT binary patch literal 363 zcmV-x0hIoUP)_xzh2Wyganmj6(yibw@B+LQFQPU=2(@XUn?$lOa+UAQoN4j; zWeu}<&K%BR+6O>*RL!Git{Fx?3D`b50)VPi#fDr~q>@0ERAi)(?@v!B06_ZJtJtuM zEIVY8A*-|4(|eImx3&aKZ?3Ojt*;}MBmgq>7iwT7t+o44pWAZZ@7}hXU+}0?ksoY_ ziX1v}mTT?g@NW9{1wU``<8~|{M+zM(oIwf|+&6r$>DgaTMy4+lDR#oQK|EW?b1VI*y#o5QRh6C*F?p@qn(4^VjyZZo|-K4vUD(|fAoFAW0 z5EyMd-=L|oOcq&GiA7n8Y&&)t9S!@yZ=eGL`ajm3Xm$Y$`~ltmY!N-;)cgPd002ov JPDHLkV1m62r2hZ_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..3efeaa534a88d33570ce1fbb14c64009b24bab07 GIT binary patch literal 319 zcmV-F0l@x=P)X|041~Y8y9GiZBnqSmrQr_TBULKSL6dWEk=%uf7HFVILkiE>L-Br=XN_FVC(p=R z_&)>ug0}!O%<%h}_n)Dlz+f%_4-Y_Qwi#Y_Xz;fAeD>=X`gCuPG*;{J%i{%r-Ns#bNWr543yVC%+?jdtHvHFE$)>jLgb z2cWJ%qUzcKxBo?I$Bqg)a|PC37e*T4J(83v?9|b!q$Vqm$30%a*^Y!1t)fS)x;*l< zr&sBd%*{@*W5~TV0 z_BigZzAbIOx8063@Jot_$=CDnGQ9r@(+U32K`>34G}D>p&_H0kU7sGEb)1K{I_xdh zs$>>QD48+^$|X@waWe&Ui&9g zOlP9fOaXm&4_rR_`UXyvkOkH_g;bP4OBpNz{q*~nm3JR3y%tVW0Eqa#dlI*onPd4(p$ToDG~kikG|H$LBAL6GFpu!9THYng3j znUq9~G2N}MMPO#Qe=|exoSCB9Y*rfA5kwKVF;9`UY3mV&1SC?u`rak0X1xp>@+TnK zZ4u!!2$CFbPV4PXC+)IxHgosz_^V(4kJ+gxDQo8Qya2=@sV*%pM$E)qh+~x}5l?6_nlZIL_#Dctv?1oL_){}0G3N( z6h)F&=58VFZB9!N010v_NfaLA7cY+EVzDR*002qnH}4cEk&;BFIy>T@R-OYl)Sm`W zyZg4Jv9gxN$`~0-TIIuFW2f#7FP@g?^9Nfql9t!%q>i_vlmaP=yUF+cW-|^<(qnWC zRC&ElM?$3`Q5wqzwd%dsZod`^;eg?wU_Sx*zTav+1^d;`!ffWNOZA-Oyn8SdoERO+ zoK-r($yIx5GWXF*td*s#Wna*>q@^sC&kb!JHoV5e=Xict65RSANk||1M+lL^<#p4; l#8LW@T>|D`5OC*k^%v_KYfuZ&@Xi1L002ovPDHLkV1m(zq^bY_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gs.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gs.png new file mode 100644 index 0000000000000000000000000000000000000000..e37521f63be00588a33ab10d0c60310ff4553ad1 GIT binary patch literal 522 zcmV+l0`>igP)*>u4xd;(n2_to;5FZ4|dVNO59!0?8F;TIVFfRilj?L7Za3FcKTd$?sE z!-w~;wbh06RjQUf$<9{(_3Q7S-+zDqfsp@x|NgsaQ!dMY>E@@K8F`m37Wnq#@0VY! z$2p(<_}|L@KIDPzr=S0S|N8a&FT?L&e}4Y_AuB7&z`($g@X5Z@H;DJsoiF>&GHD3& z+UUI4eszMX-Et*S#zl(A+jN2HJ}>-TSy z-&!vg5UrD`E%w_ zPl%#%r55Y&A3uKoX6EPTSaI~oN0p;nwlanUhk%@vdGS@g1LvPVZ}vT7{qvjY_iv`J zSFYrq`}gY?!|&hUU%&ZeA@)k@uc{~?>zz90vHAq*hNuyE1Q#fwh^x!=BhRZ)?IX!r)? zOG@$sNuVVldqA2Y44}wAAmi`fe}Dh-0!fGlmihB*U=ayKzZviX05c0J#+izCqyPW_ M07*qoM6N<$f-Hs-iU0rr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gt.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..75e76cddb9d9914d25116182a6741f418407e648 GIT binary patch literal 333 zcmV-T0kZyyP)3SF zv27JW7=_Vqyc4_tSy-}6KtMlG@Y@Wtn$_RGT|YY@$w$BL fbou524Cd%B)c|wNQ*20{00000NkvXXu0mjf^n;Q( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gu.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gu.png new file mode 100644 index 0000000000000000000000000000000000000000..4f034bcb29c3733a526c4018978905f564483457 GIT binary patch literal 384 zcmV-`0e}99P)36g}_fYoUWA27XH5+U5`hLIiC!I5;}GI`%CsZ9z*$pdd}QG}NCE1WvW}Cq&{D zSb=HK`^qYga!W5-2D$NNj`aYp_?s&Lf4QfHty zU{%K|$l33_*j>22a`^BpEW)D;V0000ZK zrm090VnF6xB~`;dXWL``UK;|uPbJ9!xfgU)E^8~}({R#6_d;Lysn&+6Jte#MY}#396N7)ZV}oX-IUkZ=feCl~Sef4&FdTL!uBATybXR9L2rYZsKI} zWs1q1%rcx`!}c9)XwwbsO?z)_R)DiJV7iy?lY5!tfM*Pz(abr&ynV9*F!Sj%3CTo| z8C_7#)QpzpPVYWU&m>DS5|f!awCud`NA^P%@~ijyaa3hhm!isnt-IIt{UvL|k@UO@d#c>} zlTxHsb?q6soi;0L!zFtpq>(CBn^F$xNG`YBafhF*4I7!$(~)p)pXlmk?JCuB>~WGz sGGW8=3;Kd?-G^%c6c~Ik4O_U$UtzCtj$RDlasU7T07*qoM6N<$f-5wlV*mgE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gy.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/gy.png new file mode 100644 index 0000000000000000000000000000000000000000..889b5d786ed6713818c430713c4202dec17b17bf GIT binary patch literal 521 zcmV+k0`~ohP)9qK`(vzTrV<<0G|NMb=$s(I&`T85MF=_xojL?f5^5L0OXNXXhfeL#DX>Er z1VJQ`LLJ;iBW<8Uhg&QD!URn4PfY*=Muf1;Caz7p4|J#l84Q zcjDrWl7A#$^PeuI3;XNLbuvVb*l{!z1tBm2n8Cr`O2y04`^*-HKlY!Rj|2->qPODR zL%wz8hQC|iVQRLuw&gzOj0Md2I5sv^q|WjIywJyqhkT-)RfDQ`n$q#RYSODO^VRK{ z=^0}IlNi(WH5CDi3O^ufAL4ss95AHHs-zlLeO{Aekw>RJ0BR5J5wlD($F9=w%>%nt z^*-6IV$DmhOs`c-n1|;8!>mL(kyMbbC;9TF7S;3YMvJw;i`BPtg-o{cO{jXV^DL_H z9MB>%$NZ+pCLi~7hDJ;N(O>)iFuw+w7{bgf(qCvT5z`84(A zRd(+u(Vm0!9*>9%*i0i4Il+%fbB!2>HpFW5FmuV?*}#^J7E`200000 LNkvXXu0mjfb~5%g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ha.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ha.png new file mode 100644 index 0000000000000000000000000000000000000000..22b42bcc98327447ad9afcaff9df91a6793d64c2 GIT binary patch literal 341 zcmV-b0jmCqP)eTct}Rf^ZRhpfQ`q)2Hg*kl30I;#*|LwYw5#KOkbBEbbjQ0MPh+ys5# zVHmyxXNI#3{!S11zgh;s`8j}T(IOcK@z}6Ont%Mq<>d+hn7O_|f@Gx4??jC_oJ!3As02O*4{00000NkvXXu0mjfOz4@O literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/he.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/he.png new file mode 100644 index 0000000000000000000000000000000000000000..9d52cfebd7aa43f3a7647dc531371905acaed05f GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQW>5ujv*QolXrZ5q3zjm(Bh#4 zkW_pvqPFR*1*c2IQi*@b%)ig=VO3fa^g?Rh-k*U+Ki$%{FlIvM}~ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hi.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hi.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgHJ&;kk3#1OBs_(}Q;6b}8WJy|;&MbtMEH)dv%90XBWxy< zEhd@W{HkXlF`oSKzj6S80|^wMcA$H3005cFR0KQ}jtG$=<^Jn~Uau|ypuD?Rgd#vH zqPw}Jnd!HalQfDZGm&Lw1wa9S)HoecN-3R=c6YS4Hnq4|6{OinA|0p`P=ws!UR70d zc&L{b-P~%b=^P!+JUqPb?b&cRIxm45fILLPJsG;b*7mk~XKET{==?lCKGF=N-1Dcw z;Vzo!ugAx;fHpRisp+OYJ!RXDe;^$w34oND=xH`NKd<$5nd$OEO*7H$j?!|^-v+pg zOj6|6<72hI|JmTL^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00004fY6vSua5_4W3BN#;p*yal;$bn)y1-sOK2@4U6gFsNUNTJw>ph6&>Aoho)rHvLw zE(%(h-LU(A^JXlT>+<;Vn8)ynVJcjHgMY*@6beBh1@JUb<8OJia}9t5S(!*FX{Jdt z#T2Qan0~kWx<*k69scSwm5GJzpax1&VMfvVg%Qxz)2ExaZ>*hkX**@71zXO6a6*zL zjYl<`>zL2yk|bs3aT9xQzehyhm#*)-uA9F2`uopu+qO;9v~4?^&6b9=wr!tX#+}J| z+xwr6-hVifmSB=fXG1>hbf>Ta&Bp z2_>aW3UJDjlxE6?B+27*_4L`t3fR5>@aDI}HbTKHbSW8;g^p06Bgho#jZ5P%2Ty8% zXKGxzI0}js=|Kd=6w{d=9xMZ>fCs?JqR4WZ7+N3p%759tbi?A&(oz5b002ovPDHLk FV1id0#2Wwr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ho.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ho.png new file mode 100644 index 0000000000000000000000000000000000000000..c99e8993f952a230de03777f4d8f250a1a200008 GIT binary patch literal 323 zcmV-J0lfZ+P)Z? zROEV`rtqs!89S;}K@(vB0%1<(C0^oKRQGHA-k|%dSq)tS1Vm}_yv|aDN>r=@_kMklZT%Vu4Lm$NR#sMwjEq3l&d$zST3SGcrZC&7Xc>@- zV&z{As=p>6Y2fAMO-xLL*aK9ppr8O@voSNa+6a9wQ2te_g6waEr}_E$wY9YwP=Sp! z$Mr-xETJSKA`%b~z<>>KvocL{5&em#0q8In7Z(QHz(Y5Z$|6w6PJyE+~S3Mr>`;h=)yLlL&&4LM(!i1cap4!XlXekisVZ1B-x_nqJf* z+4*?RZITOuv%}omnfGRA_Y%03>0kV>Ct0!4umIJ_K5-0%3PUs|9}|HY%lI=G1c3uS zCQiiMvKL1k-T}XYceQtU0`lX@IKf)xY!YcboT1so-8tGVqFKSyT;PZ@fr>;? z6i$J&W&Oru)az)sQLXB57$*sWIir1j%|~*J)Ev}m=yZ&YZdb7~6R2vEvqS%Yja{jr z*F&0OG|B}LkO>Oq=bPib$>)p&EJ~u^?~}d_ou-EeS8MlgmSI&Els4BNt51pZYT05k(n_g4W@vEjH1wpFQ$6qN^H`SIbk0Z8z@?>1`GW~wiIDWoa?(SY08@7Ia8r#z@qgHbNI z(d#jRmP+!58{mB^0C%_fc#k@|B8EMkVGkMgaK@|4>!0Vhwg=A5Qjdh{5v?9EV$?k} zMVFfOInEj>WW=TM+|}e5ViKxUX%vYxWVeIiG0sv$I zEj(8N6M*%03!sxuU_*`tDN>UyH5n=7VYizA0L|x@wqZ9J8)V2PQw*!CLSC)cnJ;wu zv)xrKbup~4x|phYzJOtSi~*p#(P;Ev8DpGIr}?Fe^$x!VVSCK^(j`;2+5jdL7_F{X3?(b1$xsrT rvJ_c1Y#YG9Jy1Xa=O0i&<6GVUBIIobr=PTO00000NkvXXu0mjf`rULa literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hy.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hy.png new file mode 100644 index 0000000000000000000000000000000000000000..33b302b9a98b34844d3fc07e4881caa9ab5091ba GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDF;s%#}JM4$$!ot_%OM#v2kXj z&4=lN83*DOnmc`%{{`k9;9`4yUqtf2feo+T3z#Q_wuz=DeyCSldeMWGS;MQ7q5Xv7 VMWYYX7XZy-@O1TaS?83{1OS))DXstj literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hz.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/hz.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ab6c33a022d73bd88a4129f56ce33875608bb2 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQp%n#jv*QolMQYj@DNH`u(z!% qI8jBh?Y|0>RR)KupaG8^14EVnJHu{~kza1tQhO{~o%p0S-R zZ|hOEE(zq048rytzxX7xpFi9)-2efadvktGU`-uv%^2D=$m`?NBx4r)c$biRrZZeY zkt#y1t=94KDm%EaWLG1lLWOB?HE0c93SF zJ!(~96oujU96mvmRQ`knZ3HJGSUCV2OIteyA*0At(qu4cEWCwarB^(Bd+oKn60x{> zo`p-;_{$)6?{_OJ;9J@rzj|roi6_3#V9&+t3&02Q>66oCSs@2NtbBf#RIGIEKU@t4 zkgvaX?LOFRe{%06|NZ`%Z#T(I)$-`MVPNdETW)pbF3t2ziY~(dnpPxBR*pF};~5uS zz(B}dU24h7U7E>^3dt}KZONLRYUPNXp6Qv?(q$NkO3j{XRZqt`QZp2-v;+g8R&`ZZ zb>*0&845RUV6aiv*~7Eyl6qZMU|AM!t%Ij8py|eKSoj1#K(N8a^~dY;2j{jW+1B?j f&)&Q>n1B8NO2cxg8tPp(00000NkvXXu0mjfi2s#< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ig.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ig.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb1489d3788c1ae0107cc0795be0add17279ece GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQnH>djv*Ss$q5uoQ1TUaR@EGP0mRfin3z3+@#!^ANfS$lYMGzAcvopJE@xK=y z!WP4_GyAdIc>w|lpbG%lKF0eU&@=@AP)k<<>|UG?PB6QS{$6Yz`Sz>NCW0xYBtuHF z=;!IQ3ScnK-p=b_?4M^I3vL{G|A6xwCYi>hg;|o-Xrux%zsi{T&#n6}I|EOdzcGzr zmRyBdU8H~tKz#YfsgT+_Qnkl0RN{YtT#X^h(U%~J<)KdS%@i5cL0@upnAh$l3jU< vb$oOFkl-Hf=`Nu2*m`7JsP*hZZ+r00000NkvXXu0mjfRA`g) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/il.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/il.png new file mode 100644 index 0000000000000000000000000000000000000000..6512bedf75359009e655ada9ce6f61d23a38912d GIT binary patch literal 326 zcmV-M0lEH(P)khw#$#??DTAla77y;;tqoPqVISb?k>wr_ zXGGBMHaq+}&iO%onZ__*dVO1$7q~1Om${pVMI;Y%S%ifwB83q4Hd30+X6=vsE81md YKPd=#5(OamQ~&?~07*qoM6N<$g1S6~b^rhX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/in.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/in.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgHJ%=P)<9)M1Mbd`u)KpR#g>t0qzyspUKPdNr-Yiee?9eul0glvL8SERugc3@$4(hEQw>x z*QD9LeP;RkmGkE>#&?f@{{7GPP;m7b?mvJ2{rUS>+V07nKM(%=WPJ7gW_9RumM!l@ zd{i|VxLE$(x%d0QBTjvNpxpasZ=D?^Wu;Sjz2nAec^{m1Wr&uoA2`_I3>|AHiKSKD0teo*h%`CWQ*CpWOje7N)O zzmkTj7{fchhnF4+^RxbuQsme zzSHMkh=_8^h;tn~{aitg_u-?@{MtJA%TB0FF%8w{JfN`k@pOg)kC`{$X(cfDw?v001Tl6yC*d0mA?Q N002ovPDHLkV1n0@Hyi)} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/iq.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/iq.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb6b878bdf98031b5bc17a1a98234ab0fb7aae6 GIT binary patch literal 403 zcmV;E0c`$>P)Wom_olmKS0#aNS!`kA(q+)Az~+Lv`uUjC7>81n208K zNp5#`$GJO21uGxJ+Xp-E&CUvfZT|4l}h-tB(o$bS&M9zCs>fr)6z1eZ6F|&pbc@nCPEceWJVrNGK6&6R4N>&jWMCY z!}|)N9wPRYJZYYtKAi`{VQ0{N?Z59{?R9-W2!d9tl{^WKAC9iyZv3#DnV8F@W-gyE ztdY@ik?MuLdZ&KZy(L3C?lwnT@dmUpzb>_0b5?oa)Y#-oCPxGd(^BGrdZRa^&P|aTRH90-ASywFXeh0gk-#?(n;Y4Uwd`7N)Z1LyeEELa%9ozLpSD(t z&!gAUaZX*rsbeN{>bhxui z?`g(Xi)qSM3*#{!9)>s9E(J2RnsvJffg%*)JXy%0>ME7b`+ILd@{^)apa`NO3PhX; sV#Gvagep`Kf&p#>*aGpl{5Jyd3(tE)9yi_@% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/is.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/is.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f546273d10864ed5781b9549f71bb52ff90d3c GIT binary patch literal 410 zcmV;L0cHM)P)00nVZH^CS130%A$1ra9)K^z1(5eIP-CkOio4&o*_ z^ajzk92^vm?@PWooafXGSwa#*8g9JC3i|rsXV+bmy1kbOB8UYMga`ycAbJ4L4)y_5 zxwST&902X`$xYELlSNsjWTooO_+1YG@UOFlssQl#81VG>dD5vO6|9uV8f~os>`_&M zswCSs({`{(r0m< zM0$M?4ltK7N0{{R307*qoM6N<$ Ef>AuUQ2+n{ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/it.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/it.png new file mode 100644 index 0000000000000000000000000000000000000000..534fd5e6573134eb4b86e189c5a89922638f21e4 GIT binary patch literal 283 zcmV+$0p$LPP)0p`^_t8%hJhFO0Ko(k$Je7I h+w%k-x7+#0GhZ%NcZ9j0{lEYK002ovPDHLkV1i97bK(F1 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ja.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ja.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc03c944ba2c7ef01e988f01c0941cb932845df GIT binary patch literal 307 zcmV-30nGl1P)W2NV47>t^*l*B{^+osPeEhi2>==FNM zJoX{oIUNzuDTqc{T)EioU%A?9 ze!PnR` z6zolAchp;5mG#bXqGSw6N0Ln;c0?o=mdP=uUdDd{9)Q_=(A{STc3Eo+FV|UmPEtQ~ ziQ}1woTwEy&j)?-@F{Df!~$Su3RSc`bda9kx+nFoz_7@o~2pz@A z^>2Jt;FXwMI?v`tdo*kSyoPFYoz@jAqi^zjlC$r|c$jolr*!nGU0H39*#3Q%+-lE9 y;7tr+#($i6hm!yQyRz8Jc%i^L4DZDB9sC9HFFjy{(Okd)0000@iWOMj&y zDT!Yc7M4;9$!4<&pa$SHqz!42Txe~2f6wEns%kJ8G!lS>wKZohFnn|EZg=d#c4jsJ zU}eSaw%6B9dN_2q>$CGQIuH>x0QdXubo}rD7Q6P=whs?}`jri!k$_3x-QoRxFkSqo zHP!}TJ2UG9CL&DUuCmjbqOQvSe-tSe6=p<|Vx*R5mL5+Y>jd7W;&NyHX?b#95g8Pj zjEqpo!3;^VltQ371&+3XS)hy(-$sl^0s#OYxQ1J~ysM2H00000NkvXXu0mjf=2(;^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jp.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc03c944ba2c7ef01e988f01c0941cb932845df GIT binary patch literal 307 zcmV-30nGl1P)W2NV47>t^*l*B{^+osPeEhi2>==FNM zJoX{oIUNzuDTqc{T)EioU%A?9M$Wny$XIr{sS^Y_+GG-=e}UB((}H#NHGciGP8Pr5{WC^;N=&K2s*!>`q#)lQVnk3dJqfb8jR})i9f=WwFVdQ I&MBb@0DBcUiU0rr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ke.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ke.png new file mode 100644 index 0000000000000000000000000000000000000000..5842ce3c421b3130b13f4d8bbf9744f1dc5a6eaa GIT binary patch literal 435 zcmV;k0ZjghP)2$7xY&vr-`RNu@lc5Ab$_846?UG9tyKcpqlEGxbG?IIqT zn4I%k7n)9;me(5H>u8ZK5mg<5^cIjL0U=m`hY&nm3gL}JwWSs)#s~`3f*OEu{N-bJ z<*BOPTy?wrk>l-tB3f@fzxSx)Ztia8X(Rn~^e*5PUOapG^(v#17NhxXTYNHRh&=4_ zTz^I@MJcAMcOQS=8>Xlr!j)!+N-?34#_y{_<3pAE)^Z0;)Wy_LAz&M*00H8B|6JxS dfB^!u@E2QRJu6jL3OWD)002ovPDHLkV1k@r#f<;} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kg.png new file mode 100644 index 0000000000000000000000000000000000000000..766bc89816633da5d87032bfe6d8a609ff38ac54 GIT binary patch literal 354 zcmV-o0iFJdP)cSnuP%$-xZ(*Z_EZehwhr=tfmsD94T+DK@0GBmKF!*Z=_1SHDn|sz`WL zV=D~xH}$O|HW_Jdw+1#1r1Q`{YV)4+olzQR+`x+NdqK!TQH)qWi96;A@obk{_SJ6fCR@VF zL0T4o^jD47oNtvgNd_4vzqHl@zw6J-dslxvwf+5YPcl8+mV?9trh*Pl>nmTs zTAOdR4Yu@9nfOs0WQW=kVM-<5p65#st$31G^5pZp-|x@!`3MiH-kKxmEN_T;;vaM0 z*Q&F}iUiCHVk@`Vj`rygM%IHWZBrre8O@^inhdkq%;pZ_y0XU$-_8yirG7lK=u~vx zUdX?nX!MA@MBJcnhmuS>!J1`n>=E N002ovPDHLkV1oGd|C0a! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kk.png new file mode 100644 index 0000000000000000000000000000000000000000..8807dce32c7fcad4ec0ad79c99455776bc171e01 GIT binary patch literal 234 zcmVu#4N*J0ZMV%s7Lwb%dC7rD zAd=s_35y1o?K3sEtby|xHyqR3vf|H4xxXi6^|vkua?v%!?Ci8g@`LHtC0^U7T{>!Y z`KYDujwwJr1Z+^$ZOe|}=fqhXK%aPa;5z5kCg8vb854Eldf z%jf?c_tgJymu~+5@7M4DxB%RMUr%2AzozT|{{px1{|h__e39Sm|EsCXa2xQVb;f@X zeh$Si&@e7>7-oRkbXCps|Bt(mFl+!h|7mF#&}Bv_E`wnPWX=tv;QwzIZT$b^#{K_4 zA3Xj4`S6+l4^!*@UlcUQsu^a$Pjq}q#OmiI3EQ6+`Asq8&@spWLrO5k2@wFuftV)1 S4=T?90000YRI6_YQ2^fJz}M0EsAF7ZiRyb#uTV4AHKL!=2hvXP_cj;4K9BaDQi)0T>IsUavD4gy?8w zx?v{uncBRF4Od%Lfhzn*nla`$Ndws1w#Va{IS$X&&n};?c9wVbRQ46Jygvj1$>a|Z ze~fQkY{fca*1p9RZ}o-d>*i3qqiPM>D94xgbb0m-(D-9VW09uF;>kkWE$>N)q89>% zk{pH5f};}NU?_2PZh%Q^e5qx{ezVv1riQLW<2_vzTnQ9h3xSerNiKZ^?8U!RBHA`eB8sS_O_mN*#44@GM1O6oI<^(joFbN0hqNZ$GN+N1 zWJ_Dyy@nMjG1FR8%TlcG`+mNk4o$ZnkN5Q4-UQ>oGCD*+|5iW%gk(D=3n-uLBnc`Q z8yo`=Jw}h_rf3!=Da&+X9j70w+2X=ak*wG2DN+F5{M|A)i^fPZqj6g=hgR~z^?0jN zEtfB(-t617;r(T#h=|cGn%op=v|Lvh-K-ZAy!$om+;gnEyHGm3>(K5mTUK!C08#)3 zlS?K^{cCxA6(8Q=+-H*E*UKmQjHi*QKp0%yax^_%=_HJ!`_1 z5$?@uI2U}0=u-qz1emnGs8hu-_v+x(v#C})guvdOaQ_C2v%x3mAvl?k5lE54&_<@; zL*w;e>F98K5zEt0vy79YOs)oB=+uy05|BO`z)V#iKag=||3GQ>O|5b*^naqC4Nf}g zA-D(`%m5?+E}lOlG3#QQv)iYce@i^4OHR7vlAFN{X6;5J=^O|g*@0>Sc!!Ap`Ev$!0000KiP}a&|ZSh)-Y$4?G8bEUd!K z?bX?N13^I_$FppRa+wVT(9XVZZIzhjGxpT$Z~U*Be=|R;6-|;QgwRdl-s`#qbu1QxWLpa+ zFl~DL%fo*Qb!Or2bdX^Xn!Jl)uE%LvA6T}@0XwI@xl zilT@>V|%bHVCVDsOeO=qQ$zl)(fBu!IV=Ees@;na&w)2VMU@$ghLKPT~xj!WcVjhX3tG^Fu>X1q`P(PFdj$ZHgo0W~ zst|ip5=4rUsPoGzZ@y12cE0j`>D(3T)&?`R{ zYimW**x_LuAHy7OaD#ba26tGUfJ}gGo6C|{S4s3=zk6lrXJ@P)&SI2`i&`tRp2XoHff2Mh-4_vxKiP}a&|ZSh)-Y$4?G8bEUd!K z?bX?N13^I_$FppRa+wVT(9XVZZIzhjGxpT$Z~U*Be=|R;6-|;QgwRdl-s`#qbu1QxWLpa+ zFl~DL%fo*Qb!Or2bdX^Xn!Jl)uE%LvA6T}@0XwI@xl zilT@>V|%bHVCVDsOeO=qQ$zl)(fBu!IV=Ees@;na&w)2VMU@$ghLKPT~xj!WcVjh0nHX#8Qer^NShqkwzABkNXD&37gfVc>>7Y5b81M*+(hLRW~hdL-xvM+ zHVcmagVC?gvzH&hg4P^fz)(CVA$@W%ktly=G(-P}`nHuNM53N`)eJ|j?%RKH2a)LT zl|2lTH#c{!tt1jn*x0~OGB-YRY9NuQU{(|W5AYLAoxbyW00000NkvXXu0mjfAv0$^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ku.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ku.png new file mode 100644 index 0000000000000000000000000000000000000000..090f5df5062a0b79f3e8c2dfeceaebaa4a070db4 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQgxm#jv*T7lYg8);2@N=U=o{~ z!J&1ECL*G(fB4J)%wNXq;)Jl74&AcHTf>gSdp~%^pmY#4lF4Nr;IYnk{xd) iw1jf)){t}A#Kut9%a+rd9UcyJ34^DrpUXO@geCy%C`cUu literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kv.png new file mode 100644 index 0000000000000000000000000000000000000000..493691c8732cf3df3652ff20fc553b4c36b3a54f GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQfi(qjv*QolM@nt_$w{i%l0;O tiDDa@klHM@3osT}z*-^HPtm!Zmo-9Rk&)*7G=22WQ%mvv4FO#oRj8*cyr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kw.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/kw.png new file mode 100644 index 0000000000000000000000000000000000000000..2742d890f3d5eb47887d407efa594338b9da0de6 GIT binary patch literal 351 zcmV-l0igbgP)1y%KxlizP!3P_yO9tHsE^yAa&m>lI^tm#hb x$!Uz3?V z&r8!`90&0CcYE5VPBUFv7KY}*K+vKhgboFDEP@KDL*0TPNIUe4P$3HH;H84VvQDX; zT1cJEbgiO-elBg5LShoS=6wA8c%JGH==Cx~?VTUX>QCK%d%8Rm3!yucXy5F5o{RuB z009Hv84JEnR zf@D#dC|Y0p^VR?bC{}d;JsLt~Vb(|al{;%= z#FI{x$or1Y{Ln)uw&dJp9>@YPbLsTGb=9fNd{dmfNb32Emvt3H;;}>p?MvS+Z#tst zrpIoG-44JEj7_cDEh3bjg>b;0KfIeFic{cR$Q|6*?VNXiZM$;jViJG>3hX_JiYSW^ zD|v9>*t$z?xn&dAZl*q~$kCRy=l9m^Nx}dkqAbcR%u1}p!XhNvH5hGe_WPUb78tii zgD=xj00ywky1J^A*~veSS=p(uGRvz^c=MH5+)^&kumUgu^0gK zPiW6^9LMq3_xt;5wI9FD4lJ>zky=&?xvVG$t=z_eBZZ3`#mUWWDW?@Bl#5?((xRX8 zubkvSnsJ#G`q`$*Z{N@R^L)wUQ8YUKtYW-!zZ7CMq>zvTfk1&u6ev)wqS5j4?wKWx zJk@lzu(AYH?yb}4smeIxu#Cys)9rkuU?Q^Hg=4U>>MqkE(xAqmP zDfOREcs8STI~$V@cy5wMhiM<;@n4*9vI7gsEQbB%0q4UmoJx94cgOwGT5oA_zn?T& zNjPPPty-m!olp8^Z4dChpY9&szRL$4^>Pe;h`kf}Rl*5JmV!#5Zyvel)8OAUhrKZ2 z=MOnE&(5C=t7;mFCwxHs#xsZjbu?MPKSN6gW_}MN|^o zn7_<5;cP9i>my?u`7z}?gDlSGt1o<{z=5(QR4Kse!iHOIpA8gNLcx|dJ_js&U=(K; z8D~pDq4uBa(YjLpQlLP!RHHzF0)YaRNT?^3`Uk&hT64E~tYrWI002ovPDHLkV1lPK B+W`Oo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/la.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/la.png new file mode 100644 index 0000000000000000000000000000000000000000..84ef312ac0f44fc5a2f255ec7e520aa67f8c5a4c GIT binary patch literal 263 zcmV+i0r>ujP)d{9@H%m$6XrNBoE@4 zDCwUn=%+04n1=`TZOjk z1N2=B45M!nnRFPK<^?L<4dh=R|c<}LCJ2{BeaL3{vhMQb5-IxV6hq_PMSkoZMRp+uC#4+|Ud zGvDp(PKx7BU6x@MW|sZ2-*}8{u_0`Ewwyo-U}}98fHIM(2t|lg5TxiLlP(hUpC5Kg z04U42{)?m-3aZtKuG-UGtW|qaO(#%}UR{k<6#z(*0K2)r**@IW@@+Lt7h;|6a?g4wI_sg4BIOia!E$!)+o!{lfCdAbm;}9Gh;Htp7tW-kxpIUU nx*q_rAI~3|PafQrXc54F5K~0v^sbmZ00000NkvXXu0mjfb(F95 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lc.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lc.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9870761b5276d918c8be29ae7d52ebfb136479 GIT binary patch literal 462 zcmV;<0WtoGP)LU0D6of)BdGqn+ea<=e?RBMlkDF?mS}g#e6b=B@Je5$lLpLE7XgtQn%Nf#-@9ZthT@eZ*s5c)b?WHyV3@g$>2c^S0ZI{s!^m}w{Wg>HigQ3-v z2~ZY5h>mcCG@GT(e*XIY)!_A$t=p}6#c;U8i7-LRlq7^BC=%0}8(n;Glokth&!vCAY+OohW%RQ-vWCS17P2BY0LmmNP%>9D*ZP(G>E*k< z`{nt==I!2#^Vd>i3KJ=J0m|VDs+hu1XB~dC3rC+`x>YuA+V<&Z!!JH{kupP25VKKX zBISWmleT(gcc<3hqCd@pyXESss&besLZkq+XEmHUaU8X2eFgosUCqxXGr+NI*H?EA z&g^GPEr|g@ssCs;oPnabNCRd-h6n->;6Q?aL@=Sn|22SBxEx5ec>n+a07*qoM6N<$ Ef?7DsW&i*H literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lg.png new file mode 100644 index 0000000000000000000000000000000000000000..abe6e9c412eab3e4bb1341a5abef6e31d13c487c GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQYD@)jv*QolM@s~GgeM)llW(^ z&TCi`dAg@_-#hXDbrE8#MGo6~^O<~Eq*L;Hm+1UBJ60ouR7tLs$O{)HayUHx3vIVCg!0L6_$#{d8T literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/li.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/li.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7ad9717cc97e4a499f158132cb2dd3923f5096 GIT binary patch literal 399 zcmV;A0dW3_P){`uXP zje~C+MWzI<`HGC7s?^8F4uMjgtagAS#XKy+kd4sSkfzdqQK^UN10giS+42=ovFg);+a z{m!rb+so;d#ZRd$TeKvlXws5RNtQgjboCXU_P2{?Yd@y=epHU4iY&(eoZ_TyKER?c zfmKsuT9ITaQY_zivgVF4Z%GOz#u002ovPDHLkV1gg^q`LqB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lk.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1412039250c4da675fd4da72e40dee212842b3 GIT binary patch literal 464 zcmV;>0WbcEP)2G) z%}x_x6b9fk(-}Lo)KWDniujYbFu|n@qb7I*Zd`Z+?%jDAUX8diUH~Q}BuJzh6%|vc z38jB9-+ABjy7YOndhdn($B>L63k6LS5rRaK3Xmww?DbYJGkcT5vhXM8$NRJX`=!aD z!a+D40;*np?f$4;eJ#wacAff}kw!|z?nbNGnPQgJb12X#>UxUSrTLG|=FNL~VWu#J zXhDT5I2~~Kx$*Gjw}b7fw{pV7$x-~;YR!%dzlGcsBt0Oy5t7ppk(!J1wdcPt+#Y>; z*J)p#_il{n9z-4r4*)K@;0mX^lv-D3dmC+&ufOWAK0fSRnbMtPp&;NM5RwrJr#nvd z{lmiD^?_L;;A8B(?b0EzFww&u$p|4S5>tt!KReCwV5xh3aMJhnLf(k}Jpah9Qij;+g%KUc-G_hJuf(V(_+eiOEuRF=iR4KRKM*syQ3u7PEm^OB<|sz1!NzN4-HSB;{9 zd7AUw!|uqcKQ6MltAU~#p@C_d^R$B~sy{8Wy{n0?8mfVDs&oH-RMo5P?rLFC4blKq z-MJS<_2>2WcXbr8ss?Fj+>N68%Vvjrx;Rw>5dbB<@TB|^D zES@C5-0a3C6;!x-?(SzA0*sO~HocIF*s?j#zUHeuPo90n$u)Cb9h%oTKdo0`cp{W| yxOuw3)$JV{8Q-;AX7_0&e`P+o(B*RnGed05x?h|ZY$gNkVeoYIb6Mw<&;$Uyels2b literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lr.png new file mode 100644 index 0000000000000000000000000000000000000000..2376d2881740397adde563fa56517845010fc626 GIT binary patch literal 365 zcmV-z0h0cSP)Pk8q91JKaFfBrV`90QpRG8Ja_U!d`S{{8;N zDk*b%)*{B=Z(lPD3Pa4mbTo<$OiXWY++aM*z#!At_WRj0ka-|?16>btG0pK;0uX+F^)lmO)QJ28L&%X0X8-{J=cHhAV1(~h00000 LNkvXXu0mjf?z5#p literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ls.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f46519bb63ad35dc54ad64ffcfc1b7f56437e3 GIT binary patch literal 500 zcmV2e? z&r8#B7zgn8XWx%C%gnGJYdIDnCPXB3lMX^B`x65HhM*uKI(4m!;OOEhuuF7O2s(rz zS&a@B;Z(||iLD42l*4X5|z#jG97fSUz^Xv74HmT=0 zrVEcbQ4yO)8y3Lt@5`ssqkt(D-X6Pg>ES}*!&bc&3#*~%2VcxlP+`X%AXrsRU!FKW zI$^w4!+7d>zF24W38t6^XF2ta5+M_dic^8Ws;UWkyz1-Ky(de*T5TZ(H#aFe!?r@o zOeD&pPSinQRrOC8O~3nD{43{9^h(lk-%C!eiy2^dT%3p(*WsO02ZDY2W@UP21$zy2 qP=t{j`T+|>fB*szAbDjb?4N8ESp1@7EaTz|o`no*_-9Dpgz9O~k0jx-WoHKvOwB4heO{kRTy}TqH>8 rUb@x&0xW+30e;mTOvSsoffeu{B_el2qOtO;00000NkvXXu0mjfy%CkN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lu.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9e3d5d9a36a4eb50a918dc23ef4fddb4ddfdd8 GIT binary patch literal 338 zcmV-Y0j>UtP)DWMca%EsDTSjm%EuvHeG!gKHh79PXOm>P^s-@WG?i$7z7)9v)T zr`xSld~}G{2><|+&=NUAOSPsJYEVGKs_WC*j0-Ydsc)8UO$Q07*qoM6N<$f=RHGumAu6 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/lv.png new file mode 100644 index 0000000000000000000000000000000000000000..d9236f966bdb5517bf01088955857f55a1ad6e5e GIT binary patch literal 339 zcmV-Z0j&OsP)t_%kir9`PMK?X39<1ChL9A26ePz_WQ&l!{hN= z*gv!L$_sEtR{?nM*RtLRK>Y#kS1SM+kr63{E9B`O?m@~u$Z!|=x?a}`0QvjznNmnW zHWwMBjG~2^$nkt0Ks^H<$?M%_au1_uqRA*TkwfwXl&|e}vRKG0GZB$MwB9m1h;C7b z!?(?*NGhddW@Z9t@NbpD;CMLH@7-=Zo5>8>?#%A@nHO$P)zRpEyDd+^!*Y4t@55bY z!LDOnz^qN__U`U^x2pk!dy>&)7G^=FS(4ennXZ%oR0EQJGo1z*E_r{l4l%W%T@NxtM&>n;9kr#l= z*QJ5L>A0Olky>ggQp8Xeo7dm#0?_E&{pQ&1VGL=aLb@29-_M&vI*zBGV}^>##U?|V zG%KYR3JZbZnPJ!)DP*d4TrQf>2x7GuIoheL6wL~mnoGwhEC_DR7zcZ1coxfIxCvy_ zJU%+^hY6eWDhnAw>uCJ1eT52TGIkrng23?O?b8t>Dxi6fssbFGa;N$LB_l!eBK?5_*4ek)Ts=EwkkKF~aDT-mHi>|3|#$2^N z|A}S*`#k_xp$eH+B4r7ZNiXel&j+gEZ>0&8m$qY~? zZ{Om}OvT*`y_nEuOQa(p^@k1P@rfpj3qO)2b-`8t;uOo2i6iD45lUpD3pNyXJCjgC r1ldSP=q&XNky$`HuNV2xj(hzA`O8|sI`WqW00000NkvXXu0mjfK@fRp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mc.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mc.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc5edb7505e779e041d2e9ecec1a7e3a96c8a46 GIT binary patch literal 254 zcmVOY(v{pN*bdU@zeKfjW1dz8 zslDC0dTG`U`Ssi1q=n5RGSEYCpo+?r6YjiTJpZ&^e>2AsZcIDX`8p$jvkcS z-FtsxrYWMysKx~rD9N?{q375KvB9D6JIjme3H y%atlup~^r9ya05}{`>px;X~LX@77?90Qd)Rx@1*joxLdl0000coWD^4~7zk zFoe;mA-s0w(o8o|79|Yf`0IC^+1Axxy5A2&*t1p-q(fLN_BYby$Sa{Bd+}`HjQ(@4a>QuT{st zJ{yJ*O?qHDEIrXxFTZ^J-zRtPod5aT!{7crI(_}Yhl|nCVcG*LqpMae7O($s`T383 z&bB-C{nP88-Hi@InX#EpEru}s{qg-UHy=iyeuSwSA=v75bY!8Za8Fs_QvUd7g#EBF!*qMln*H-s@$2srr08 zJ@Wl4q8O84G8{}s2F-^%zFyGU9^1N|~9J=|rH}?RK_pOR~LwUgHfga03Vs5P$#!0%rIIB(P&2RMN6+00000 LNkvXXu0mjftVe(Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mh.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mh.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf98c15462604543116b7833c95a7703e40313f GIT binary patch literal 518 zcmV+h0{Q)kP)1M|owQa`Ye8x$k*amcU79Yh@r zr9x>et(i&Xf(OG-}k=n=U^!X4-bcDIY%LS2YV5M7FYuI(ED1>n`4$t1*L zNDN8acu{W7#+IfJ6heoOHnUKGM8X~b$3Zyk{d;A$ZR2Qzbf|cvD>oS5u_rQi@}^vS zte~mu&BV&?wFVPiXltH ze&7&GMy<>x3%w(!?72raF#lP~EQmIeshwXax|nw2iBDYdXF@dxj%pGZpvr!iU;IK3CeR2fneMhSDkG#&+^M%Dmqh%}r>nhi<5V5fA4lWNgQWpnH{=}2z)>d`X z1iG&~n(T@g5@9w1A{J&63y`{$iDmDt?tJP1p8@?JvQG%WU)WP0keM`|82|tP07*qo IM6N<$f@x6e=>Px# literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mi.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mi.png new file mode 100644 index 0000000000000000000000000000000000000000..a72aad9c5ede933d52cdb387fb48dff102aca4bf GIT binary patch literal 300 zcmV+{0n`48P)X! z+cA6Mq@6r^%~QkcrbRaJ=r*;+bex^LfmNfPL8TT8vJRQKy>ZTkou_tJOxju0bF5?D zq3vg^LT53mLRAQ8*YoQ%AT(Ta4uzmg1};DZVV`%2WK*w$sL(a8)ibR_Xqa6%_3-3X z&nM2gl~Z%OsPW~j#RppFPR*OjqE?6O5_R)tsGTK^o32e=7VXnMEuwyUR6|O|y6dx6 zWdyb{s@93=H@cWrKr~od!CX}y)um|B24s2K*LymEM3tTTi!)}is?~C8HHhdnpnDp7 yP~brXRWOpO!PuzE*rb{S4Ptur;(GPu`vCy$2%Epmb_VVM0000r}ir>kE56hO{hyTjg!@I*>(Jgs}mLvE=@rUB?!N1}Wxf5QJ9sVj0 z!VhGJx2id)yhWQ!G-L9YpjUh*{8@e!mTY-3d_uk$o)gQ(e@cNiq0=p%5C`O0`B^x^ zqw=QkynIhS7M>ArDhm~8^CUx4h1Ko8E!HYKh1Bd7Lxo*Jg^z_BmCKdWHG8x<&&Ju= rTp%F{9S|BCKt}qsJ3B*g=O4U!;Xchs zv+xy;02svW1#e#g*x2|7{)l;G<&LXQSAcEDr!NNvv@ALtbn>qAS?P|H?z@|tl@-XZ zzrV*bGvnqkN$*tWXQe9L%lWxs#n>5-JeqbUsYFR96<4Y^fo{VJ45LVvy!}1!TmV*t zJUy*>5b9A#r}j!n-h{Dal}qzfsHC4JEPEx<>6+50r~E9z_kE;D+AEEEdLya-6FOB< zqhSVEInvhI>$9Gg=45H;WoZyJFT@8ivtd}cgg+oS!jbRSynk~)v++0lW#4$ae`7Rq UGJS(StpET307*qoM6N<$f=k$oMgRZ+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mm.png new file mode 100644 index 0000000000000000000000000000000000000000..d931b1dbe476d4f43a9fdcadde44e503a74f9409 GIT binary patch literal 336 zcmV-W0k8gvP)Wuib~)p2idC#5)Mdwj$zUuRH&oGm68FMKYOY{_mfE zG6`U}W`cMrqk;%)f8 z`|E}pX$O*)VXwIV9RE_|9_|ipfi?H|_8tSQU@kn9GZkp$?C*z!XIw~0!kyaP$+=d6 i^uGE?{`>AY0zLsV>{b$zyAZbk0000I~Mz2 z@5RFuXV1=@nPp4ZR)-ZgaJV^j_;bh8(GAQ1=jWV}&%NCDkNwH5N^7x;y+Zqs{2@~8 zNbAeX8Gz*Y2R|FX+IP3#jWV8k zwbq)4hixi`gM=O1L$GSjwb)av|MDyX3pZM02&N0OKF%y?&tFWBg;Z=Lil^e2v^LP8 p-0l2ghi6>D(avD~jnmPM`U{>JP7=#44mAJ(002ovPDHLkV1je%pFscs literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mo.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc49f581ee49f0757c64fc0f0a20344975179400 GIT binary patch literal 456 zcmV;(0XP1MP)6zC6vfYb{t1*9Y3dRhiDD*OY}KVp(aC;j@a7;P0f^t_$imFbLyKe+F;Q;{ z1l`nBU2k@=-nn-7;+^%*8X_KVKD@W~d|Khz`CLqB1aS)2u{GG5)Dv;}GL;9H?r(Ru zTY2laJidJ9%IQ{nrPX=y{ey-sx0XkrMhS$5iV2-+GW1JE`A literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mp.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mp.png new file mode 100644 index 0000000000000000000000000000000000000000..df0c4b8c186fad44701f02f30b980b119f445f07 GIT binary patch literal 481 zcmV<70UrK|P)K3G52H8vk)`aJ|`#la(>2Vx4-5p#CCvM|EjBo}c9N`RIhb}<}5pX@m0Pfzr z2p|MALoVwN7yWF>Wx)EcftOWV|DK`(DN6Tm+=~GKVRLIo3WX7OyqxgsYLXOE7@as$ zKYw)R$+yy4Bl1)}w-0a;V8MbED4Q(W$%6aH>4%@ouhUc4pH5}1vv4Um%9Er37lFnQ zC^NIu`PTAA``P0DpmdD<+m)>cpUN4mdq?L*8sH*0nu27WQbr*@c4}s5Y&d;x_Tc>7 zWVJfn-yfXhX_Np)pi!bkTCzPhQ~I&I(P*`kmD<`;y>IT!s&5Z?FY<3gjIJ{UPb2kw zY4A|=<j|Sim XFwa04#%s(k00000NkvXXu0mjfd2ZMK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mq.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebdb3ab6c4d14d457a7629ba80dcc96795b762b GIT binary patch literal 541 zcmV+&0^2$~ zJ7|+p7zW_?{FgwICfHbGVj3#OswnLcOeUcrphE4S6a{tCA`S{JMv6{#DHI36QBhF` zMNr(uE=7$9(Lo1E(WWGr2+g1Se>vy-)H?Y*0^^IY<-&Y^&(6s0haZctzkx_?+$18? zyasenUztu%MhkOKfCfN1{JEutBjKPgmrWkar($EnQ~A_XCJDd^`?LA|kzxPIqkCu1 zWJGkwrRNs3`6k$h{$%7uER8qmSyS511AhqcRl4vS*}>CmF8Nt zm5hg&dAV3wUAHs{$CIV6jat2P>;5|dvv7TBrrEYHo| z#2{oN+4*^o#pepb6b}P4Q_KjDfhjNs0MuLt3~&wup8$(!_=U}Dn*gd;^-7PO%WkuUt+YP4x^!?+5^h8ltoSPTayPkfQx@dAlMU&+T8pZ&sdMb977L*=Nd23C# z*Tf?-v*ksSq^StR7)B6x`&c(7W>HNWuX$yMY@CI6*2yEXs2TzVS5#8h`yYCCRXijQ zsBh$VzTD77Q;hHsI0S0`EB}XoegP-IIs5_XdT3pi5%ebj0000rU;L?fu=;bdEs1iq3N^q1w!8k3sPDhnQkg@jpPhjXp*15HtbC=vUuOV|BucBxa^3X4rI_cWXgDwTGakJt$VaD7Q7 zQj35kjfpt0cdJXsM&Eq3bHNA!D;xE-vCKr$dE93>s149o1FHc_#EJLY7f#pC?Ciu_ zaeA|t7U=f(-iL245>J_~Rvw%mc^@W} n+GR%skLcQ;qyNSJ5fITY<#$Fc)@>fQ00000NkvXXu0mjfwRGeU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mt.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mt.png new file mode 100644 index 0000000000000000000000000000000000000000..837261ebc248ac590f4be39dc8608fc818028b89 GIT binary patch literal 296 zcmV+@0oVSCP)Z0sEJX7;F2 zxFZBi*Q^ z0KID*NY30DFzYw;j#>TyOg0qxr2pfcqi>9-nN3fc0rXkCDJ&r+j2p(DRg@)`ODq;J ugBeoF)xV)>8Xsh4?(TK{az6k1!tP=b!83o> z;>(8wvMj@Ihk=1@UjgC&WIeTVR#^OT2RJ-ADF6wQvP&*2Qb|RY6msG3XJ_Lh@ErS> z7r)Am6}l`_Ax(P9WF}4Cd$fHEjANW0-+%V=&!rqWmZwTG>B&%@^qi*r_`&`sTnu2( zZKw_PC`EK4M4RY@XLVMe=tO6`4cr|#_`KabxuuLv-({eXiUex_0000 z`8XE43Bki~nCi?Kp5X)t5Nzhmug!T005Ac#w7(Ak36io)hE-A|kdQ)J0{Q*$Z~_37 zfBbCoN>Wr=VK1quB8$CR-}<#2_x1!#0V*Zr?W?=1SxQ>f>eh5~F<-p<^S-6^(ZjMI zJUzNd1{edtF3Dlc=GBey`jhR)SBA?E=J#XTq?yi;T6ZWJqRWb#mv^>qtNiBV^$atY z6~V0DOWGuqRU}J~q+wGwkU{MIBJZ7P7?YZ!a6bB%r8acXx+`91+~yt2G3v?0(I* l1q|O#De4^2v;Ch&;2&wdOE8Vg`SAb%002ovPDHLkV1iklv)KRu literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mw.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mw.png new file mode 100644 index 0000000000000000000000000000000000000000..45ea61d87f19bc4a2ccb73ba52d9e6a50b814446 GIT binary patch literal 365 zcmV-z0h0cSP)-)hUJ5u*_m}=cBIErOD`_oq*>B>y_VG7qx&Ga=X{8V{mK3YpX~x{V6)lG zlB98R@;k}>do8NvQ%679C!;YS-PtK|7>AR^Fg5(00000 LNkvXXu0mjfY67Qf literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mx.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..c78ac89691ec75b0e15637d1ec7a4872d63f18ca GIT binary patch literal 424 zcmV;Z0ayNsP)2G) z!HUgc7zXg?`{q9XV&c*eF{IH(;+=h=r08Q#PbS z$&`tbP8{$1yw78dh2O8?>OS-V|Bzp9PdmCK0FpSLZ?CTdARs`%0Q4J|ZvjoJs9auJ z>8%6a0l=Ay*RDfW(V6e=-5s#Q*!ro|l@u@_q9hix$ST{T z@u68iuy^g`_}FnvCRGw?l0XMdRTi@tO52ZLKKs09dFk}2M=zerR)jLmG!sAvL6OBQ zMuy?@XErqZ#;T387i?FgGZkqTfdPSHWiczGXnA>j@Y2OA-lYg<*s#ha0s{gm9^Su_ zl|S=$YYjka4ZB+Ji)*U@EQ=|iVFD1C0|LHd^TFn*k4S1)%w}7YNe76(I`9Yjqg3#9 S54M{C00000WbcEP)+EqJCp26L5gL&wbP|-VQc0+U-im@msZwZ!5D|$&frb##5YE3 zxI4m~SK|@v&g_iYSttIPeEH_}%QycaKs+2g*tB*{^7#rROdXD0yZ7oNk!cPb{+LawS z=zSR+GGR-`C36I0(s5{{`f6?6fLG$-G1OR}7c%+h7nRaw3}s96CgoCUycR-fgEc~m z=)zN0NH;q*8y)C9gyi!p?Z;^&(i zk**7g->`mY1@_rm)gCd7m+Nbi04gnur_&yZa}VZc(w*_9{-Wy!>grBoG4hp48R76R zCf9W+{rdrJpm(1W3B!5FeBa#(RjMIsRLl7cd;i`ck7K*hmAP80g?KIX}sf`d!IuS(CG6<%!2zD35p9c`J zOPc5dBv_0=2pPw-&)LT&7lh4PtJvlFWjwqI90w+V0Ppz!tYblWu!+Sx%k3rnoRv(G z;fj!Zy31W;xQmoC*siq&z`0Q_ZS1UHiEr~kG87C_q{yJjER4ZsxEb*Zt31uUDRJvAiaC=_F}pB%L&pY|b?8=e8J7 zU#(U)PCZ%roiBb}Jm8|)Di8m5C?h#M7y>90;NAOpdTYG*aWL46uhCy~7-0k*#)=N} zir%A70VpSddp^$PoqF2!^6`b)6R#v>rj(LWkd%>9uYc^v)`tQBBhMajjhK2gvu`O& zu_IHKNn}(<7Z!Fmi-03@j@xxM#3YbJvPuFD5S62HAdrE-p%IGaFggE5`_LE20fz)R hWRSXc2!I0v`~!AuN+V}(uf_lX002ovPDHLkV1gVEzf=GK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/na.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/na.png new file mode 100644 index 0000000000000000000000000000000000000000..d685c4973d04e946c71abc577401f291e90f03aa GIT binary patch literal 559 zcmV+~0?_@5P)0IC zUr1A77zg0r*^cwf%`w-g<+{)eEs%l+5)=fM{SP4|3nQf)yAe^LGEk!en?)fJcp*VV z7Znvr2tgR(m0g$@k&%^FQ=1J0J9G1U-|u_tc`RTM$OATD19?CJ24H{z1w;q$9Xn8| zO6w8^Fn|U0_x9`y1#(VdKAj2X);!EcYs0K}*2LwiYr9!$cPR2d-dhrSG$b!Zgp?>H zCr|x8bNqh#`S`>eq+kO~Y*OjsXf&3*SzSWQ&V^R_J}*QPh-3%4W-5Z0CfjDxpUcDL zVAz1tTJNcipKXW-N1s^_AIO>#MN(V$=ltncs}py|lCE+IM24VX14SL3J0jkkzyGp) z_$Wl;^=Es!Qi+P|)5-U9;|hulv0-f(4Ex)3%f`7WYv7u=N{FO7vDDc-QSht(-MLIY zqd=q;8)Bo`XfW*3nlevAlSE1HJ%jW?}uGXl*nUtSn#v x1AKXWceHG^Z}=iofB_W100RnOzyJ&c@ee@n6`5j<@iqVe002ovPDHLkV1gI`{L}yd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nb.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nb.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?F?)q)tLf z2Q|jZ(?JokIQSQ7D{WrxJ@;OR2abMxeA8J@!i5(8K?eakgdiYjZq@)c2~nKl{{q4sWDCK|#}md%t7r2f;oH0t$E_Hu>Kmqb*1 zJ(-!&TR#UMO^Z^6R3nXtMy&lB34+IY_567Ma#J_AG(wsy`fcy<;)kkQxmFs>^8gYG zsPWmSqny%Rf3~RXR{PrDZEO$KjBX^&trS3l;K7Yq2v7h8p!h$30eQJW=3WS}ApigX M07*qoM6N<$f;l9trh*Pl>nmTs zTAOdR4Yu@9nfOs0WQW=kVM-<5p65#st$31G^5pZp-|x@!`3MiH-kKxmEN_T;;vaM0 z*Q&F}iUiCHVk@`Vj`rygM%IHWZBrre8O@^inhdkq%;pZ_y0XU$-_8yirG7lK=u~vx zUdX?nX!MA@MBJcnhmuS>!J1`n>=E N002ovPDHLkV1oGd|C0a! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ne.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ne.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f3b8f06dd0f27045db9e2100706738c84e3207 GIT binary patch literal 393 zcmV;40e1e0P)2e? zJ!{ip6vpA-ll&zHq=+bzL5j2p3U01WI=lA+*wrqb-26y_A3&i)vq(2ZNFmU{$rqZ^ zJm;MIHd+c^SMwhHh7lVQbP#luDA6VAsH01Cfo?Hy4zJ$=mYRjiDwM5qTsf+6r7Ns- z#reVefeQ%x#~CVAt{}?_S2)8NuI}uPXm=l|XsfTs)7e8R09*J9{!4aQwq&b~Z=8Mp z)K;t2bUFoWV~qXfqZh}{wYQ)7$xB~rtu2?!K@#A90B?N%=J^M&!{dn`zwk9$lQc;3 z6^!x5oozpT?pXW&Bmbw_lG@Sf(ayb{UR{>4EE^fwR!U`C*2ZL*%unZyH|)RKU;J7` zMO5_ay?Q8m^~mTIp`MDY+P%Gd^6q3{M6{f3&7vYzSrLj*q%ss)navvza+F<3H==?94E8IRE#bvqW?BzYebt8(|}gqGq$%cyEMZ=)d~g=i4+ulqc#U zL?`yv`W8-O%*^;qf4)ECb;RvRuo%t{_v-9yd3L$7qzo&qPS;PJfXF_EzBXF4g|(JE zyK}K4q^K-bjImJ?)n4zEQX>N+se=LAqMD61)_CNxX8*&NEP>2;86>5W$|yV`$PkmZ z8b!{1iOxUG9-3upoAtRNx#~YdqMnCHGz3UI``IvJD?}2#RxK1!U?V z!C+J)3)o5Z1Wj`~V%Q1~t`B}4jQnd!5^hMLD+g1u9@IbM&z5LCyghuWFN}r(fY+MS zmJ<5m!4&f?Of5{0P4AxV;=VS&R>&7>FE!n_2ja-a&NgbR03jh zbP{JhtdA8+8j%V-DiSnqCA4|GxjM1Z-I)#IAd$&nZZJ;b{hR%xjU)PtZ$9f(Adzni Qi~s-t07*qoM6N<$f~0@ZtpET3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ng.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..6dcc973ed58f8f3f4053bf8db7e82c1cd351d73e GIT binary patch literal 341 zcmV-b0jmCqP)GJ^AAuo{1CRO^Bc@1B}hp@0QjfG$^aQJs-HpL-9 zB2KZ*&NB0{6W?J0ARz8O-5u>8B>|E=E|2Hm&JhF#%*;G<_2Ft=r*phJ-frGOcQ>%D z?d8WyQ5BWz`p5Om4D|i)pN?%OVblNQ`1a{`WK`<(@RTqUl6I_Eu70KAF*3?kE(SAT ztd=50|GAS4kKs|N%6cFamrItS=2e2mT1ggSMmSP5GGx73sb3^i*YJ>49-ZzN(CG}1 z>QdzVO^~%R)f>?2Qd==%W}%{!gOhSeo~8*{C$P8KJ9~fTw%d*wOniY~AXs4G=IhOF nf46>G(!=w^#peqGfZ&in(|mRyKC9Gy00000NkvXXu0mjfOS_zq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ni.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ni.png new file mode 100644 index 0000000000000000000000000000000000000000..44d8a0d3bdd998a2d65009f661279172463aa4da GIT binary patch literal 372 zcmV-)0gL{LP)Ke70+B z>BE*3FW=|%b^Kg-?bszn{-(9mghJ6}lQ?`B?>_!&ZoldJ$#8b(Bs%t)AT`Nymb*Sv zx`^kGfKO;pN(>%PP;?R{B$13FQV@|wF=UqjC~&&Kd|hM-|L}jiedQ?t*ugz7F=D&0 SSi~a$0000#G3(z}!7Rf}A2$DW;gJbf$WGrFz@jF)(2B zD7*Vun?Mc;DOAXiA21%1*xEGE7K_DnIt7pfL6E=HTAR&ggY7Y$WC_0tt&tqO4E^7q zv;;uI;l;_>@$LMzXv&=`xv1jOO}eCmt;x;#<$(L=r`JATycJz?r+cZWPA{D_?aBHo z@Hn8m~dV!~g&Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nn.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?40zRc))PE zY#xsK!V}Zyjn1NgwO|mPCNPrEQ)u3i+N)E0-7#%YlcVdZ z=5lgNCAr0-imR)N#y8aV&hsnyjsup%qCjP!q`_S&&5ne&)Ub@R6wRAhrJ^00000NkvXXu0mjfi;bY( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nr.png new file mode 100644 index 0000000000000000000000000000000000000000..211e42bb19f061a27b3fc91c88f3c937f07f9de7 GIT binary patch literal 391 zcmV;20eJq2P)F$CFp{LF1P~%`d=OZH3-k1KL!vd1=~*KIFTZo zie%c9_qMkh08}0RIC09hJZ*>axjRMq>Xl1CZwPG2CC84G?nt3Br%k!bq=DXWQ41He z0M^Kbs&X9Lj%{f=pdBkE;CK79`*vmhAty(&5Rc%BDylG1MF}fP)D~9{R@|;{+x?y_;+MA3mS_nsk~}w@G(d5^2iU#>?+sp@Aav;P#Epjk}NT-`ae!cQ%MAGE_Rv z**@t4fChBQ?+*^YAD@2wdNd3Z&W|Wbwq)5(5>EpIl^S8^&Hm5Rv(?K>a;VJF$kr71 lEYM$XZU6Vt^Sbb_{s6oKb7HyOiJSlc002ovPDHLkV1oOXtaJbX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nu.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f7f988f474fabbb28b5cb7c31f00da370514b4 GIT binary patch literal 468 zcmV;_0W1EAP)XQ6DYWG&gSl8_|jbD^Y2=pj9Y zmv}zzyEA9TnRh+8-A;3FzxkivoMF-E#k824${SHR;fceZ(aL$x_hzpL+a88CmKL(z zER7hvM$?1hC0u&lH#7cq6?Y?SxVitbuqJu7BUW2CHIFRvY{$_=g3*8oGM?hw6|W_Y zRjhb9e?I~2qHy=#G#nJ2d^8-*hdWYe6e?dzUn%J@=D+!lc#1RHs}Y``jrR?SS0g=> z{1EaTwKQ5G$xsinB1UT->)NYpD=WTXx7FA zN|?J??cVw9W6QhCqm%x66Ks7(dSU~oxxKCkWoSCIb{z6Rmb~hA%X3JPTGP=8APqYY zteM!vsI6c_s89#6*TK0) z1)N4lqJ}d-Wt@;mD-o9Vuq!PnE*1A|qz$*mfiz@f&|dTJCaOPRj&ujH0X{hZ0000< KMNUMnLSTaGsM0C` literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/nv.png new file mode 100644 index 0000000000000000000000000000000000000000..f88b6e6f192044ce40924d2a70cd64c37ee00945 GIT binary patch literal 432 zcmV;h0Z;ykP)Z~ ze{U@obZzQS)JA)2vpZE9f z+FSdkEbhzycW>>n-HVR&MEpN79Ye#l<)=G>?w?u(WdA%p_37r?TdT@`UYrZ$zPPaF za8K0#%S%x-yq}wVV)y(%*A~B=7yV*k+JmhVmsW&q>d*Ogb0tvr%HgF?W~U%&xV373 zYaEdAYJSYU28+GhmjS`jIbF5!p3hh2LDcQ*%K(K0RKupW!y8(Gj0Y{2clvzhubEa~ zU%zC-RG@~t-R@8N+<{Vuw@vxKsSc)LRo0Q63;y4k^I~@R-74L!n_DI>XlrUr25Pw7 zYX7*$<=ge;`?oCqu_^v4+47ZgkK900004|fVD|C#{cmk;y?6(MO50V2r8-mh zzqqmB%7^?4hhoFqMmG|fqq#t>`4Mlk`g{Q(xiNu{9ZXh(5y5LX?fgS%s)h}eSYA}V49 z6)ZaFQ0SLM2m3+O(3r%=rpZa(=Xu`OAt2puF0O031E23qzS~bec(i;!wHmgpd*vfH zhV;dAC$Bsy0WE+52HJoE6krEVr*F+YpWtM=z4je`3z=*zm3XsIU0mNM(#-n2TmI1K zZ}?1XUO%3+XRH^&)k5TNEwooRemmsF+oaF>>Q!yjCo}F8bIsp%KR&gS9L&Z6wqCj; zl*@;Qa}-PHqeDF-XATmXrO>es8%6T0mikohn<@=Vcts-uD62YlIS`FK-Eg)7-WItt z^+7wIuZLr8C3n5Gq=VVYz%_UCgsEMK6af`H)$n$m)R*NyzTa7|(#LN*E4z~Fk;O8P zJKF_QncMRg8g9RCzBR+!Ki=E3zwFz=ILGjndzpm#_-BPyN}|Zz+$<Uw5Q$Q{Lq?JAdPG{0T#s%riLeHg4KTBi5@P8}iiDJ?ZqNKMz2xa;r?)dN zquroIY%=L6kuVFhCKh605@O9P)1k3Tk>b2gix@xxz*XSj(3c9}L;F8rKm+bS_>elR T5|4?e00000NkvXXu0mjfp5FDO literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/oc.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/oc.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o7-6V|V~PgQQO9X>8NR9KhVbCPgew8o`~}S&J9{P`_ek zmYrpr34U<)vI1-yo&BN(aJgK*&SpF3=g*_j!NFb?fT~aX#$vH(0px16dvWph^c3^? zpS_NzX(aUkY#bgg$K$QRz~q1J4%^KHI2{h(=JS$@O0h_j4i>`^CM&|^cEA5Howf!_ zS!7A3AR+=J$cm^=yC4B*1yrgeGfef!Vj$Q=G+b+Sne43(NJm(zh?`qR29xwUgoCD1 zC;NK5Lkqx?Ns~oJ##b*HNjhZ8sZ4nNL7PWMMOt~hLz+y=qA5$I%uHt@AvE`Z009OB lTwehJ2zUhy_+#wWz&pI`d3buklDGf>002ovPDHLkV1mtUkcj{Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/or.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/or.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgHKK$qutQ)EuSJ=?cz;6OM1P>kE2ci1$J)!T+W8W z?CpssQ+b_=iw1BA(tGVI`43|ZHJe6RCRSTrh@Ulb-sx~WRg4>kt=fx?>~Ue* zsQq~C1_O70=SL$fi6}$MC|5qv=pIv`&=_(JplYFB-|uw7@2u6*Y_vN6L|5vEm8Fnu kavnce)Z+*kC_Vw;7e9Gj3Li7IC;$Ke07*qoM6N<$g36t(0{{R3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pe.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf08251f11d5307987e52e023b43746df2e0669 GIT binary patch literal 264 zcmV+j0r&oiP)j81#0DaI2ozNAHPyp9NG>}}pvpYHX3x7h%Xb+Y=Paf|yb5{Y^D^)<< zwA~imW&$`K0avvuRx2BDvzM^2eKJ?xLVT->`O+GaDq;PUK_ zcy-(EeE>uhOa(0y$r7Pg_cOr!2jxil40fhdEP)z0JU6>$_q7{?Fi)V*u`+6x$$% zrM-*xN~}LwPg~7{-R-q<-Vda^Cxv^EoK7m6jrFT?)!esM7pvvTVydd)23XqPA9gwv zaS_JoF=k@ys8Fr4ynNkkCJvZrsaAtXP;-?aG9lvm2(C&qnwgmc;RcBLkXjJ>fA5h< ZfM5O4LdXKD002ovPDHLkV1oRcrDy;E literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pg.png new file mode 100644 index 0000000000000000000000000000000000000000..87160a51eeed46993ad6c2ca4c16c11a79cd0f98 GIT binary patch literal 438 zcmV;n0ZIOeP)52# zy=s#I7zN;yKahgdwa_{^Wbg(83dMk%xalBt5g`zWx(U)<9CQ;J?BE4RjTTfKI_V&& zix`8@;iDLwREja_ch38MN9Y~+Jh%+}01OyNAb|uD5KsaO;4kn8I0SwJKY<#6hnt(1 zfOb`(s*veOWH-o;JUa$AG)w)&k>nHj%y)D0|FVHXOhze)`=yW;&#^bS$ z9Tdg%=;$>G=`30MAfKY&sCIIBF`d={%;)pbXjGP^?RL98o6SfbN)N~z(l^qNg)$rw zKodYjNE!?V`}_OD;gF;xl9Jv@SI9e|YmxO#08Ic=tgNgQMKPI7R##VbEFvVuvF*$+ gnKv_A_)oWie?Fc$8?L=T(EtDd07*qoM6N<$f`M(r{Qv*} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ph.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..703dd735a599186163b9e8ba245bb30bb084f9aa GIT binary patch literal 416 zcmV;R0bl-!P)uC1+2?hgI~fq_v$LqrBo2m_s)A_8k_Fvy~o z77Z%R@7L+R?^Ot04);65IhS+q7phcB*=(2SgZwfU%7TfoL=2J;u+nZHRI8)SX2%$4 z4W*3MMk${tX{6G&8!2_QS`77iuaQWMb+y`y=iPU^LTi!|Qu+!hw2)c|pU2~Fy}s=b zO#)rVdB|jjbGc+ZJ|P6GREZxogSp}n9LX_;pJ$>HP)a3-^7-X-nmxKNjNki#!AD>S z6TK5X0gu2KQOk7~3x%>*Of^nBN^p9`sgzJmVru$=uG!!MGr$}uMwmsfkE6tT`Ebo9 z!$5arVv8uuiL7CRD2lrlcJ^`8fZcjfP4;Ta8a|1pfO$GQ$KEd9I)l0&qS&B`&u0xw zXrIvWEv_yp8l`cUj~cQgDd-HX1Mt@25pUsZbJhHQ^51X&M^N84Ayxav7{+4&0000< KMNUMnLSTYFRJc9> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pk.png new file mode 100644 index 0000000000000000000000000000000000000000..f20f3f6e2e58290b6b2289267ce4763542c78646 GIT binary patch literal 448 zcmV;x0YCnUP)=ubhSk0z^O>UgQ8u`r}CG>D=KNm$`n=$ z<(+as5DXOzbP|n6;1(jWoQUbM*XaugxP8BC+%yL602FY=154Pi=0E}-ynnx80F`_N zC;+8hr`vb?=qFI%n39wWgy4Rc{j0sT{nBO$6L-PQC2|*!7agaA(FFua{w#rHXahy+ z*Qbu_9B&-Q&3N;^`SAJR3!e+|dxt0`P19`4wsecBK)u~-x1L%U8f8>p*0)kyLJ3sR qM&pqT;d6icWSe~ad*H=~Um-t-%0P@Z6Df@V0000XRZ3`Cz{YkI_;xdS(Y=J%ka+3|W(Z1TkqM9OGv+437Xe82OfTC1v{-l+i`4uI_d zzy=)l9(La7V_6#Cke>&?Q$$o|`zJk5Rn-b&rH%jO4Nw&W;(Ye9IFn4TmaKHjk|k%x z>2$wb8sOW_*Q?dh0w(GAG@CCwuU3vVj5k>$2002ovPDHLkV1mCZYaRdq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa799ba7b2828c1ff5881703cad443f7af4dcb0 GIT binary patch literal 572 zcmV-C0>k}@P)!Fad1*;E9{k_@y_ z-^oMJIf@Ql{1c9n3C*_Y+^es1d-v~spXYslPoEFle--n+Q^KLa<=O4e4*?4xpbmHe z10Wy(m;eVHfIMrdsn)f7bY$$#p-DH^mmKYzm`J>P@y{C^fB&-J*G?WE>w0p(T%$An z2Zl2%KR6L7C}G=f&CKVUYq`dy$&X5|1lmYN^)(cg(^O8^Hg#n7BMcL{~pzhM67ghUsekl0I`*HT8l*Y_}H$^Zr@mP80+g< z@9EsQlKKjWOtxcaAp7f2=iHZ}i)V``F4TBH(`+dP5lFdYpC0|WQ}%Voi-Go*Bc&qI zs5`DBYm_k&0;BPw&q7xK*yUHJT6(1=~%lAz#lOTh5$YSbW3@(7QKx69v_> zq)Y3?(9DOCLczDCGqXbVDj7Ogt_TKd;7vey9l({`AL#Mz4fkqZa@cBd?D?mWmd!X5 zLcq4+;kG3h_ej8Gn?MENz&GGJCIJChfB-mP0vsTq0<-~jAn+gQnhaw|f}W880000< KMNUMnLSTZj1PCSo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..6f62a64d65028c5476d34567d7ac3270e4112ad5 GIT binary patch literal 547 zcmV+;0^I$HP)afIG7h zT&Ylq7AG zWe37S^)W>S$MvcfxY(3F3yxSqW70W({arBp-LE&V4rNYV$pVmSj;7BH274oN(M|NQ z#&qvZ)zlrwCL9a+C}_oe3grI{K4)86+&P&5*!}+c^MI0EkE;3Pi!%WxUyO}#wZ8CIr0D*%!K lJUD#hf3znLfdC```~#EIFIuRXQ)vJI002ovPDHLkV1oSA@PGgS literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pr.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf609fec44eba4a7abe9af4267ead44da88eeba GIT binary patch literal 445 zcmV;u0Yd(XP)EEEZd@#z*WB5K#JEQO3MC~;DQ;*MLM}wP@)x+_W>-Q{F4n}2*2-#| zkR-`Vrfq(|^E>Bp&X|O!Z%@y8`JA5bc^Ht|L|XubcfbPV57|YbR45q$186y%Z$~s> zoH&`uO+mIKn@gbz`%{v0B~_e6A{v+t5E0Ng}nY5|zR*^is-~bXo(U z5WT(N@fFT8TAW9%j|@hCgE97$$tXaque07B939eG9FNa5SQlx|Mm_w2xcSvgF}wW! z zJuAg=9L3N7`ZFmdi{X}syb;rlQYIzJrn~{eT`d;uHj9)}Hz_Hb)#e4To<*vJ2<4BWTd=fF*7W=e{X6rYg%YLcB!rv@+vFW=r>N{3R9l*Dfe z3ri`5WV6`>Py=up(yTN|PPFE|w(7sAs;b-V)(PPGxdNOy!SMN+8}`adzitD_%*M~1 z*Ef^y^?Y#Po!x%jHV_f@hwR6vbb`gMy|Czw^?uu~Yygb}OlEn*%S(5-c&_!Q4ZwD0 z)(H$mn7o+bUTcUtDW^viDHauGM3Q2prbni(wyx>~9){w0Y5aP6a9j}?6q$^SP{_dy uNwSnepxOpD7lBcrd?kL3j~ze)0RZphpj0tEKjEYR00008}y6ot?C=510dr9wK`A%cS<;-vlqo!mOQbn76UoHKSQh`&JG1ZN8h{sBSs59pvv zouX-piRpLGx%WCGp-T@BmowalJKP3Ofhm>=pu*oR>!nmoFx(#kh=|DW#&Of(YNU=- z$dqz5r^m+?1wfvh{@UpH{l4GpQ@gGayKkANOk>j0EXigt2%rLpNDqJh(6?H3-#F*Y z$DHnQ2Ns9{#(fM0^`I)^<`|#S-V;NhLOF@Jj?f@$Ofzr;_4n?^u zi2*B_n*s?565JOA(BJ_u2F?Kk&Vho_-^+iz$bXL4Mt1BMzZU=i002ovPDHLkV1jYa BxYYmv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pw.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/pw.png new file mode 100644 index 0000000000000000000000000000000000000000..71fd0a48ca2684615fd95151ece072cb82063814 GIT binary patch literal 424 zcmV;Z0ayNsP)3$EyB7dt%O!(=v?EHC zL8xo#kel4nFPBC=9l+YA(`0b&@cV_MZ;Rv2+QPfl^Ubbum0SAwbV2F?$tfbZI=^)N z)cwM`nL9iC+Pe2@WwGL#Zt0d#)gdK>pler7JSeO}6xO@4dgJsH2DOH3x~7{W&Z2jfNpE<`XF@EC4gh{rJt7j9g73lYSHcmtQ>!Yjmx1mZuUPS>k)G0`Mo z@hGa_t5?u;Cu0UJ>VGR4K)(;b5+p>JfuKo{&e?N3xwxnR0QT@65r}ZkEl;b-&W)SK zIj7A{0Tn(zT-T5Q*oOar*+H_6qR@C;y{KL-OO)l*0&6h%zC2gX_0Ar8y;(p?*-*!?e}NT10YpMT5#LwEbm@<|LYXXodv%QDLuY^uGC8*wHunw04x04 zkY!Y5F?<*$bZ-xjHtt55R3=DenpB<%QwqAbUY{LbS7^lWTDJ%m3^NK+5s6WfVmLw+ q6s83rp}av55HQcJ;M^0l{Q*C3?^f~UJ{1E10000<5F5cFM2M&;B0@mHMyxDS#Ku?g8N^P65RpK# z^K+e_yPH%FchB8rzjNl!ZZR2+1ab+;!F==m7YU#Q7*~ogtwOK4Mng5Fq}u-GBL`}4ygU8NexR;k)tSj-)2T12+auev*%&QYLxkEI#3 zLpH!nlU}E7v=LNi`y;ZA28E^u9fsYTyW5TRj2fn#Z|=#4l<|}#y|hly(CN{=1B%TZ zhM9QP{qDo%+G;>#U#(iM-_^>4_Q3vHztXprH)rUe0;j!+h$MpZ_lRo pM_9NTdN>$}m%d+FTKJQ2rPr{PtY0v-w002ovPDHLkV1fXdoB99% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/re.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/re.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o`F@GLjf521W&v4|9d7Qm}Iob|P2^iAXT!n>+Vfyr=nfxaFLg z19#!#BR>Sd3ghO(<>@0ZHa6oIzQ8xnr8$8PCkx0ICcFxgE77)Jf*U z`OM@W02oZGQ_3G;+xrVt=B|X~4d}L%si-*uW>UvW%dRwC&6K5-*fsw9P=yppFu0fG zDwk5d90A*h%A8T5rW+WbQl36Jl%hUa*E9IJECqsMi07hvi(!FxFhN_7U*EqN0}F$N fzvGvC$J_h{C#`RtbM7A^00000NkvXXu0mjfZ?lsw literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rn.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3b7ba526458f341e43099178c43bd66ccdd61b GIT binary patch literal 357 zcmV-r0h<1aP)~!IzYf!&JiXbwL9|3&6wS#+Dlv1EBK+<9LKCxkV$lKF<{@+DcmEfQru;EdT%i_R`ku>f`kD@9)me=7x~w)6M47&eHJL z*`Axb=)>5boYC;syy(NkkAuXHgYVDK`uX?z`1kM6&)P{^#pTD^Nm<6`$Qj6Xl>h($ z0(4SNQ~v&@sooF(004POL_t(|US*C&4#Q9s17G|p%*-h>-T!cvnzyT$mNgyi%L zXzPGHpK`~QRV7^~C*LC_OcW<|)6_{E8KDR$GAr#5yFRtD0w4gT*mj$xJBku(0i1?$ z9QFXfi_c}6&adBs8Q0tWu`>AOInQr?VUM`F@GLjf521W&v4|9d7Qm}Iob|P2^iAXT!n>+Vfyr=nfxaFLg z19#!#BR>Sd3ghO(<>@0ZHa6oIzQ8xnr8$8PCkx0ICcFxgE77)Jf*U z`OM@W02oZGQ_3G;+xrVt=B|X~4d}L%si-*uW>UvW%dRwC&6K5-*fsw9P=yppFu0fG zDwk5d90A*h%A8T5rW+WbQl36Jl%hUa*E9IJECqsMi07hvi(!FxFhN_7U*EqN0}F$N fzvGvC$J_h{C#`RtbM7A^00000NkvXXu0mjfZ?lsw literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rs.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/rs.png new file mode 100644 index 0000000000000000000000000000000000000000..32f6cb945b304994d4e7c5751537f239305dfc9d GIT binary patch literal 376 zcmV-;0f+vHP)LE!klpU>x!5lKsA>0B-cAP52@B2g4sS5?zL{HI@= WiT;IonkKve0000Z literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ru.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..096b9c44e7188d50e579c8f9f1cd41602bb329ef GIT binary patch literal 299 zcmV+`0o4A9P)!b-R^tnn=|vA})IY<F(nGlM;W2nJ$gB7%Y7ni=Q;%=8cmNb zVgD8fZ%=O_G%`fDD3m-iC0BX7W4^?}qmQpBFZU;`*X`$DET)InXM=Xyw8Ks~?UZAV zHe0{8`u=WQ8~`@%zl?xqCjP6vU%kACA)&Rj1K|16xi&zXB*x+~9^B-ob*3^avmz9; z$x1r2f|aSdex=?&!@vnnx4bY8hjP)1J@+cJCp&XW7CEt0RrO<2SfSxIum$4G^Na?d cT@*0z5BRxg!H9UPwg3PC07*qoM6N<$f>t%CqW}N^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sa.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sa.png new file mode 100644 index 0000000000000000000000000000000000000000..03cecfb8c9e916b77fbb953ab56993ca031547fb GIT binary patch literal 428 zcmV;d0aN~oP) zj+>)*U*F$cz0t`#MV2275AJT<`#k#e;_Y*%p8*U~a{AG1+MVmIT)NULdWYk~mhE&l z{ZUT}6ehYHKn{aKln)jMYlF3MJ*lm(zE|DOeD$sB77N4iaIe~vNb#&e!IZH3@l}>G z22EyeBpbGQmQPM5q^C&dfPtdR&D+h}n+xS)O6kv5{rSGjpX@wt)iN#ubOyKIY%>%J zlR4dFTlcs2zwEpG_s{@JH1ObZf0^M>R=B+#fr0I%Qj>(%M#K{_LLbFC8C{4Cz4JP* zCLTZW0dG^OgTupJ>GV(6RjroM+9M6=k+vV3H!nXw)L&d#w{Ms1?Deb#SoOLI2K}N< zclWktQac&SE^4_eY3M`nM{pzU|KgW zO&=aCd}zqE7w(oQdZZx$t5B%r^C2qC%>0_0Ymgl$Mi$N=f7NuVxmAC1(WOz!C<;Xc zfCZ>rZcW6?O#dE?d_Hxw7}>W}-PpQU*r?Rjm8YnwMA49%?SUboloLPmvcGTH1j?_! z?YL8PY1kIG+ajX%-v?`Sq!NrRNA?!KL!P~N@+)8IQR%ju6eWhDwHOV+x_IPPC~&rS zf8|p>^r-wpJbO=17d1r-g_CCLMW_*G=^g9;OG|&=el_6<{!}^*rASr5QKCo@Kj))Qo>Ua z9mPXK3bm#Tn+#^rlC|mk`MjT}!`F!5;eiL9Uk-Qz90C9$ptrjEV007!%wPww7N%%;D-=)h^pXT1k^~R}fuqUEkD$_obHbJXy6HVf zMldsj*;xmuYLvTD9~x?r%BR9No+8J-5LhU1dYXl6NIUCvl1sicRUT>-Qf&etiG_-M05A1B3p`Nr#{P zgMqmxUj#Ot@|kqez5l#Z`H{Z;k046FefyTa;yMFEIRiud{>r7dV*M4b_C53grjwC!b|t?POpG-&wTbe(=H@{`0PRXCH9uI)|)UtKzV#&j$I1 zV^Xz8tou$gFtjo-1aHsZaL<3*70=oeMH}xTs|LFJ>({TL^Daq-ZxJcjZ`OB`fuWIs z!GCMkylbA#r;gnH08#zs^Edsn!&*fLUwrud<;$1PpFgiZ`$QmOlX2;O28Lz^2GO~d zoA3Vu1EA`O2OjEW?bEC{qFj1NE_Qpvwws?mefkIn?vsH|N@NI~e;MM-FF$^U%)1)U zc*1+yMYrh}oTi+!?K@*xu-~-n)LHfWU}M$XLWk z8}{?+%7G~By<+KW@3M>~mN|@#ejWM2&_54upE^*30dD_F#E8w#ZEFmyUuY z(T4{IAXuPhclvefcBi#cEKJPXIEbQ`TFrr=1_?stqkAl_Tc`P1WEgv(st!a@Qt8!a zAuCpkvD;=AnGFuAzoy=&+H39jJMMk;RMpI?jwDIa@An-PG^Vd?a{%glIjn$H~ zlA9{3sJ2=LYUlvt&H{Cm5MkVLCmnZOah-&u+ z>t|JDQ7sp$Ar5n9&NhJK2~|yRUEOR7mu?{q_x82Rl$)kSN3vwufCsjo{vYzk$9)hc jZtUI%2-Nxv5HNth+_`y(blKyj00000NkvXXu0mjfSz4*l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sg.png new file mode 100644 index 0000000000000000000000000000000000000000..84172cae18682fcfca869831880a2df39cbd5d76 GIT binary patch literal 350 zcmV-k0iphhP)FP=Gs-IAhUW7$xmq|9$WVS6- zkiH2anY@?D4CCGb7{E0e;5}6p#}uN!FpB$5qKDls>Gk|-#rwU@GA;_*ZUd1RAhHCA zA^NxZ+=(d3GTdxvxpad;Ih)x|$2>h_{;E8W0X=&!anf$fAu0$}m2|u1@yLtC-Do7u zJ|+{PG78VDCJI=r9tqcL*YDp9hyG>pIh|JLbKP47kt$x;2GNT^j;Ia?pXUJ#q$$v? zZ8kYhZ-p8g1Cc>8t(K78eNosn4FZVkI;^#i6Dj=HLsX67U&{|XdDD)?o? w4~#MJ2a;-4UkRAY(}}-9vMvC+tG@mLUzcf2*Z}}ic>n+a07*qoM6N<$g5yb;GXMYp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sh.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sh.png new file mode 100644 index 0000000000000000000000000000000000000000..7e724d4781121b07cc73c3ca161a9410a3bd1c5d GIT binary patch literal 524 zcmV+n0`vWeP)D7z--kt2$Er+D#MD$o zAK$*`xkQt@GJ@YllviQuQYlxhmpB;mvXMAug%OKY>)5g}mAiXCcxRh-r@LDIu2>Mc zri7nPmxKC3wK-nZTI63He7G*TtSU<@scTc`0rE#q-;9F9)BdxSw$4KH`rMvVuA^h7 z`(QnG6ssD0ARpAZW?4u9@&_JVdb@f5+_y?tZpr__i`PFVx--4`Y2(;n^KfDHtM#cK1;_`;sj@g< z*;8gV=bUFkti(L|<4Cw6gtg|UGok`e0Emb&D~U2Ivk@z^5-YQP{Jg}oLn10t?Ah85 zSO7$<)|F0)D2uTei^~5xRTEKBr+fLeEP@7DNexje8GP3Au*qbVdeSqjG1 z_WT82)%*C_|M}wI-$5pstz~QLa5530D67lYfNG$lFrOz01w@dAgoMc@L`*VJM!*}w d|Lv(2fWKadTrncAD{24$002ovPDHLkV1f%dtDpb? literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sj.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sj.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?+2nvNDQF(M8A+ilC z-upmy?U^%U&b_kn_%fO2naMYEl=;X25adB*1G1LukZ5N1TO4ayF$cWl zPrN@qyZ-ph(lVsqnTgRzrf778|3N8*h;GZk?MQER`}tK#BF>Xj5M4EA7juj8ECmdb zF@%N@MN?IU8yP-#4-S)UEmdvVEDsJrc^UWgnDL31+tg*U2oN=rmIh5Zq;O3T%)Mg} zga{epg*i^8IlAIF{FZZ&SQ`+6s9B?RjCUH@At=;ux`sA4@8a_r`0N<#ZhY7)*2WIe zq%=Foav=3-uMkwb0Cka>g7Q$Nsdak2AkvAUovqaV5m`3c6OWU|!rJie&WhUr5J+6p zNeo_Nv-Qnt`#89 h?<4X8zr#Nz!52&4N4eeewA=sy002ovPDHLkV1iSV!;}C3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sl.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sl.png new file mode 100644 index 0000000000000000000000000000000000000000..c59445bc58f0a680cdc492f4b8b28e02de365df6 GIT binary patch literal 321 zcmV-H0lxl;P)RhAIQT4Iq^2(ht|Sf>bR6R-=yoik@F?tA{B9;Wy> z%pWreclag&1OTvObwGf~02Vh301l4`ib62V!zofU7-bfuxVm5E+V|OBR5L)AGiWlC zSy)l2Jn2tBK zSwhW@h!6NxNJ-L(q|S){g$PM$I(?ka$A<&myR8{sccd@ix7*!jbH3ZX znaND0sFW7WqL{4I8a2%Tc*+3HG#;O}r>4xptc5z$UGCuyKnb}0eB;m17pQ@Efl_hy TH(*S=00000NkvXXu0mjfwG)i( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sm.png new file mode 100644 index 0000000000000000000000000000000000000000..65ceb3aa4992c0563b49e9610e38f668846b1a8c GIT binary patch literal 396 zcmV;70dxL|P)5iDIhic1Gyn@e|B-Gv}7IthhB=~4$Lhe8Ku@v%4yBGIL& zpb{{k!9>jczwew5*T@AA2fo+&UZLF+h(1W>CU;qckpxl@)j2Ov5JcZE`9MJg8!-`LkuH^;c6Jta9>7Ad^a!bP18*Xv@gjDDg=i(%7!`MBcP##2 z2oA4(?69-A;3k7!b8rB|Y?wJ?xM2sJzc>dbGnw_Mp~35q561_$l~;}wJJQwVwM7gCz8Rb)@D$+VR8Q3w*q^F(sC^V_W9j#PSDQyDMUTE5}+a4#nlHPyT z-`301x_9`Wz$SQFEss4W`uL+he9=$o;oW-vK&gEt?13Go#~#;|+lijsuct@)UG?lp znVSo1U&$z{E|1j}MC$FC5_Kwb-N%mYO>kQ+jnqntRHCF-lqglPaMKO!C^SC4bF7xP zx1zNK2C>Yk>E0MvynzBkLGk?^a6R)d#XR0`yyYMMEL)MlF}zFw0000D2?QCklPIUNCk^nOWC2}aHWLa61ai}oN zvll0=HA(vU7o$WKY#D~BP-d7B${g%XN?Ia&F2L*0>?}zbrc7DtX{A_` zkxjQA+~WE!clMdYll!dy@b(J{Whzov>m^5?4Mgw1@%SD$_aLk<@$M_<45mD((yHVz zLIp>sgO5L0T?IH=^ZS&x*zyGRG*`?tE0#&Pz0b=d&dll>%=D%r2URsy%F8li`|#=$ zy%^!ccP7!dZXK!Av`J-gLh literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sq.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sq.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa2b5076d998651bd558b9623d7dcbbbb417e47 GIT binary patch literal 266 zcmV+l0rmcgP)X! zC#d!di2ss_e=$HA|IzVz9BefF7sG)40?PlV@JRnJ<`n&(!zuDV7l@01?5RMpy+ApF z2J8bWO6Cyy&(FyG-;{+5j0J$~B%s)CekH;N92HRcp9i#+jgj#`0|NsXvobJ(#SR1I z2pVu)KozW5mxbd$8&D%ivks6A^2$+S3^)zMwOr!=E4jq}JF)TncVy-HUjby-0mV)U zsuDH;q-Z9u%>Q+K3jghZnr&IR!EBHiQ3fF6X*@FE7&%8uG?IwH22hj|0bmGAdlqUI QV*mgE07*qoM6N<$f@G>|UL6YyKFMc+3C*HH>cyr z`f`5d06+*y07$^3Km#!L#`(`L1BsWfv|Or+vTSVbT~NvUYdFay66aVfF5kVKwKTr3 zwET*#G)|r;2MNiY;8BoC1eq#J+LI&~nH!v(1&iQza28Y&vBB;sKpC41GFS)4!N=gk zn&aTldKXY;OS6{7;hY;cW#c5wi`?duqsdcFj&50+UHtxbcy-=W6H_luI)L8R)M}yq zvALI1v(&cqz0#fnLIK!LE?3MoFPo_y}kyRK&S!R-urH$cb8f0EJ57 zqB$2Yi}lRR^C;HIC6iyKoXoFX15VxtegOay&=$8Rw%DRQ0c?K1b@vn+XJ#69S}B*5 zlF5=xrkH&8;Cb5v%5`IT{bt{`l~h_uCTTLsjBtc_XxCwM&;scFu4c~n-n*_c%T)oW zz|5$M0;?j;nGRp2?{jWPoIS^?7+ztw8y7DV z#l&6SXt?xQRA_&%5IVFp7 z&{X=^9>2STb_3X$*UIUG2ZEY4O_@x}5-3Y4r87+%W3+F9!T1qYfY^$*mH(Qj`WNsQ XjXzSD$SouP00000NkvXXu0mjf0Ykv< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/su.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/su.png new file mode 100644 index 0000000000000000000000000000000000000000..5795ceb9fb07a0dc7c65d5eb0c2774aab0ee8efc GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQnH>djv*QolP%O&xCtdm@JY?v j>aWCU_(xrkhn<&!IV)kom%A;VK!psRu6{1-oD!M<;UN?+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sv.png new file mode 100644 index 0000000000000000000000000000000000000000..03ce5ec83c01c7ed078faec72ac1428bcbe642b0 GIT binary patch literal 373 zcmV-*0gC>KP)hQy}UJL>vl{g_&5sq{O9USe? z2SK8np8?Kvq$8c_7LK5WTetBWQ2#{_O3ntr}DcFs!Oq^LMwW zi}p6jy`883ZLooIeD?d*i}7y-Y`Y&FPLM2cXMp`=oE)EC7mb(i4>rEt)TJiWaHd8FnugTU5oeQ4nfA|2tDL=rK{yw@6>NTO(Rs?_R{%NR?{1AwG|q*!cC Tr-#oq00000NkvXXu0mjfh}WhF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sw.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sw.png new file mode 100644 index 0000000000000000000000000000000000000000..971e0686a05915753bc1a667fba6a37be62cd30f GIT binary patch literal 331 zcmV-R0kr;!P)Rn>~}cC#1&N30CB2XMXVl(yp%yXEn`{4()_oJ9%9 z_dx({ZFw}asRLf8^Ie2d%pq-NJ&%1wR{f}RZqk8q6pDX#Q)be$>K0mAFc16$E4q#? dvGGv`w!Yh?2DV5vD)RsU002ovPDHLkV1lGJjlBQ> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sy.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sy.png new file mode 100644 index 0000000000000000000000000000000000000000..83de9ef018d6978647e4228021777d7768348bb9 GIT binary patch literal 322 zcmV-I0lof-P)S5Z)=dhMaTgK@C2SNL*sLYA$|4~uL^6hc@M1%RR`fK{5NWmy^z?IEINuMiEQO_C(f^Y&Yf!8ndN#9odG&@1$?JE(u)3q1!- U9T52_)Bpeg07*qoM6N<$g7RsN6#xJL literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sz.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/sz.png new file mode 100644 index 0000000000000000000000000000000000000000..6e40120260e4c109ba702ffc1ded5c8d28d06a6a GIT binary patch literal 508 zcmV0&S zO-R#m7zgm@|KD%RT2U4uCGAo}Iusaq48qh_V7D$o=Zc_<9x5Dylu(!6J5`__iXw`N zAd*hrBB3`63<{hcLSky0zdbMCr`6|^9J~6i9+mzBpdbcRp$t}KMO0;0Rz%j8kOqY1 zQ>7v`Il&$Nj~Pr2L~t^|;072lFg_K=bA7q&bzlAE0J%BLp$>Cbg1D(e+yu~cZCh`+ z9d4Yo-t+S-b8~JMTz)p}m6Iq>jNSk9<Iaz{x30000Z~ z!^lh$VnF7+WMqEE$o!jw<%cxOcSV+894wz0nQt)R)&NA?xmY%7v0hPPxuU?b-zDG26Tq{K2;nX@gHb5cCldk#)~8j@I85@6vtk(=F0RNy!MVBO2ad=kcf q!pOXn32($`UU zl}BwN5P^ty1ZU#p{L=hc8ZQN_tJLe+cxiBW=w)43zHdPdFo6OlrUEP9S#V!8?kB(I zW6N)Xc1Qnu@j}j1XZjz%qT^k5C-U85x@}RbZzUuw60uv}d+x^6;q>;8Keca8ek6Wi z|7N3AO(wk!V#e+1^6;KPuU-AJUbSiXc2 zh}|de{K8BO(*B4cz{I##_g0{+j&RWFMV7MpY|fi(vIvO$2oVIv8bU?DEEb6GC}47wF6 zJ#`AIoxi!hJxl<0uciO^`u^F&y(D{NUA;16t1LODY{PO8F00(4y`s(x9_HLUX zN{b)N`yY2MMTE4wyc}Zyz^^~6l*y*KcR$2V%1v2T{=7*koc-cLz_5{^DsotGDv(og zrIpQ)5nb$}fl;y?*;P;hR;;*^3K%Qvv=z~mfdRSXQlyB@R>H(F(<-LPn5Me^0ghFs zGKJ*7L4jh1(t=MVM;O;%2TivGq#VDN)cnFDpdvs z4yy9`qb-$n#pd3VwmAdbHw@gibG$qXPe8--Z`j|Vj&JtwS07$Hh6D@h&<&P%Fiz>f YUpgXslIxS<_5c6?07*qoM6N<$g6I6Ep8x;= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/te.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/te.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgH*$5!WkDtF6a}s>r4;ga*&o5I&Q)YSf%yFPbpxdy# zs0LCMDMiwvNf#}dGB6)e-D$g%AP6$yQ!GkUl}Sl08K@DK-EtQABvn%nOLj{l?T%zX zBQRyX_28Y*Z z&p*lm`Vi2xsU|gnt4x{{=~E|;Y~5H(`o+`DjkVS3N+tEm>0^?m(3aX-xGeVD4_~fb txv=x<)9&6kKm&07z%T!ofIbkP{0rsVTot@9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tg.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1188bae16e89bed676fc0a63a9fe10a550c60b GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQaPS3jv*T7w{{!yH7E$Myx+Rd zy?#Ob#cOWLoK8!77wB?&oY36npvXF1Q*WlM1mmWLPmK?4S`2;Je5?K+5u5ko0+)&O zEZO(U+fF|Ca#?@#_5BXMe%t)YRy=b#pvs?+v~WvY=3$mjU5BZjA0M!8{VL_wdGF{A PpuG&9u6{1-oD!M_ic}q{i&GbMa&gez!H*Fft3Tk+bQQWuaW8&F_d3)H_MRli;X!Mm8bSzX z2;rn8Ht@FJ$&vt`p8=!=C&+YykrK!xGa@6BOmaCImCOXt>e}Qklu{OpMY+9udAPs) z_*ltlrEJkuilQu9GQ+fw`}=5 z85zu4+uE+xH8QH(3kkpt@GX&y8fIu6|2w-@ML41Y%cggDadzH6IP8*1DrnLSkq(*^ zY0{EUPkYnpOX! zs%TmrZD>4MS7@y^F^J(6i#ZUzU^CyRW?GV9pgTjCC=IXq%|1FBeXuin&SAb?$0Rq+ zKz)u5ZVepfU(@wIM;LtaG5j2205RejyZJ^#leBCDrG+}^8r~|H0+oKv)%)mV^u0p& z6}ve^4+K5oG+$+AoKT=IzgP#V;k}{pM^{6j4eyPOzozNG5jREF07o~3>~hmH!8RzF zd`;8)R;>Hc-S9`N&T9cPWOYwDtas>S)I~1zX}s*%c^B*lR*)aQ#OZ&{(fbq(^}};^ ztG(*U&7pIA>n{S;!4U)8qz{%xZ{Qaof(|K?LC{c8k#ETlP|(n(M~;GULxqb(=x!hE zosmPyXf>MKo!z^&%`^C>XI3U7gu9O_S%j zwDTo&(&|w*RcPoPnv>gZytQ_@T&CUlPMG2vLc4%$(QRm843nEl^;voJp1eb+q1sX8 zkaS2MiAICb;$e}(H+aHff9PXYYbw-=j4dOD{}R9yzs>-l572{u;s+rPIwUDqOv3;G N002ovPDHLkV1leVqWk~= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tk.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..0440c43b42c1812685f7f7175cfed0116f29d18b GIT binary patch literal 522 zcmV+l0`>igP)hf*6^!Gf!=hx>GBl!jg0H8+L0tf5hAO#UPP*6}H&K8$%wE<=! z5jHd3Grb*ib*bfGS}LbLe(8Lj-M_TDOVmWequVdyL;!^a7YllIxMlQiAzf2`In$~V zylG$SbNx4WXX0qFRMXs81r}kL58j8ZO@HY|e)!Dc(TAsNHHcb& zS1y^_I6F9Ye&n;0AmX2V=vCDit|k4`iKzzA2-I6pwOsY)i-FP?bdDhctLn;a4i>H&*`idsWDA+G*ec5vH&I@Xu1 zuU-iz3#-)wi|y0P^{oxn-h%fA8iR3gprD`tY(NnVY9S5|3=9mS|MpuYfg{6z)c^nh M07*qoM6N<$g4<>8WdHyG literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tl.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tl.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa1b59794f0486debd7c0e8bf16a361f03bd378 GIT binary patch literal 395 zcmV;60d)R}P)l=8luQGhr5&wwiYxfG}TmLV^k!Gf=fanH0Ipm5NJW0VM9hN$l!}B{I96LLKlP>TD00x6Ff5tWOQC zg*7x=%)`t>M8YgV?$zryfX5fpj=gPen9zlmX9cZ=$d@7^B}xgA6^$Ce24IZb-{_B? z-pX*esij8J39O_f@a$L9)#;&e={tTQ?!XCznZ*95D-Qmge;tDVm#IKNLL zO_oz7uLEDdy)d%}xUM_DK-pyqAG6%KKYf0|1lG{nzacThYvYqcWx_jSia=x$ff-(A phSr`8U@rlyI~5f?@}D1j@eP%wKER4);BNo`002ovPDHLkV1ln~r^EmN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1b24dd1e1e9a9e95f690980f1515c560faa8dd GIT binary patch literal 456 zcmV;(0XP1MP)X=9IwZLI3}-t$PYKrn;LXpa-pB3`xVr)fGpkol-_~Kk7}L!$ zAqKEfd$Qcki%?D%st?oNOu6!F*t=cZ+HD=|cN%grka9X-)HWjkDDeB}Ym~Q-cit~l z&g`{6%vWb0zua6~y_w5CeLre++l_Bcx&TB72t`QJqTd~*N!V!}+`F;1eYm%N>p@hC zDoNQyqnVQ;fEWP^J|6INlxL+vj@R{fPw#Bd{rUE*)=9@m6Dd*x5W^6HCyDE?l;008M5xqb5Ca$^D-}gTqFA_M-K==av>F y(MhLV@*tN7cXtH=C}AEL<5`aLz-M3`|KTqS&_O0BCgHaL0000$7!Ag+aiHMC|()$}M#md^!k4Er6SZi}Bl0L!0N))_+g++p`ZSo6D5xm)b z&fc6#AY|AbmYw(Jy`9a0Zef3)|6Dm&9FHZzTF+WC25iW%$DC!(#4(t0$=~yNLLlJt zOP~(j?NYgnLIDy{gzXmVHBKi%dqI#Yz#>I=I&?f@I>q6DAV9MT{|*oLh~9)iaqI}P zJwb~iGg*tx2K71y1I%WweY=hK4^Gt6 zL`2A|6<7#vDx`!=%v35RZ48AWCF;_WG*_!SLs_Y%pU3d}k^lU$#u)-jH2;p|f^z@> N002ovPDHLkV1gyqppF0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/to.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/to.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0aa02145cf496ea6bdf8ffb7a1b9032f1e964b GIT binary patch literal 302 zcmV+}0nz@6P)Nklb<85JcyL%gBh5f|8Eoa1DeMu0T?91CyST^B|EN!4gHZGvAZq+r%jOTCMc8^JYid zs%=}0Ue^KW>iN6_{;di?UDvo?eLiEe!D?j#+ijAj(uB0+q2Di;su=rlK+br3_o+cj zzTHfkbkGb(m`uxMzri;4dmNA6?aKF8%5bm%AbS7+)@wHn48yh^G4_4{0IHYS46l2C zeOdx#_2Y-m(PNN?NLiN50A&{Ak$UK;M1& literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tr.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..3698f405fac5e032dca9f132fabb44b6d8992932 GIT binary patch literal 366 zcmV-!0g?WRP)8V=Ml`FKzAY8o!u|* zn^`bI$m6j*X1~9A<3S#kKF@!)N5W(xNrE&LZ5>P^iGeX<4B{BSzQJynr<&)%_Z3QX zuctKZ_qg4Ni(pwr0+#?XP0>=ogE>H^Se zF-EhA%Y~_~R~!zG;3DO@DQharC5lCi#|)!27$69+SY%-gMU5l8*p;aOW;68rC={6f zerHa10iy(NMI0dqNVRHZ5;>ie=~XIHDv1?l+Z}2%PWb$g|GcrQA6-B`Pq62Am;e9( M07*qoM6N<$g8#0bwEzGB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tt.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tt.png new file mode 100644 index 0000000000000000000000000000000000000000..4f36edb09fd5fd94f801451cd2b346395507a8d8 GIT binary patch literal 486 zcmV@P)c%F>MqtU3>>rU@! z z=1iA5U`BF<0?f?Zgu`yXpVmVg?UJOhC>nymfbZMHbdWF|YCdo5?Hv^gj%bty6-AL{ cS$%!|0l}U^X5mEtTmS$707*qoM6N<$f-Cdj00000 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tv.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/tv.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fcffcade9531213c6ce3ab94f00c7c86f786a1 GIT binary patch literal 443 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 FV1l0aBKEzMhkLNpplTPJ~w z4d|)S=q(5XK=}R=rIhDAI5KyH7Ws016;R3;atxTyz`ymSLl6*w+636yJ9)nM z4Ut_CW#W(#QJEfXFk)&hv$XHkoazR+>yNErJA|Mn9TF4LL#U0-lLEp<)(yY|M-GBa zsdx&*C|QKn5B6k1|4ZO)zm@q%6Q_^|V|4+|f7|kAJ>8n7+Bu-&lz&AK$+lE?-+{I#~oH*&Ou{Cb z5zH`=h4-i#4!@<2HDzrGY2%-g$iE!Fg6+j%F zk|Cu=r>y#0MFtsEs!PgHSE% zhg_QBolAWEjcu|sB+01EN+W-tC0Q>__ds_9AQyabj0000tCAf&LduoT1> zL<=88#F!#Gvpde-U4puN_c4!eW@m1dd56{ufCu?0uom304t5OjC@{#uUp|3)e=ojm zPOm3Ra~}YP*#MAYiUE0y%)}%9zO4J6g?+vHyrD~52LPWE4QlWgbO2N;d7L{6tCI-PURtwhe3 zgs`aF?S7$fm&@HYn_rDaM${ohCcF9a83RPDk&lm@x>|kHnnh8mybgz^b(US2zX?0K zpRojs>ua06$DWZwO$H5xjAW#%V;R5@nZ$Hr=W5q)!bOZ`Ej~cdgoEahF^&+*9LmhB z0Qho^hXl!_20000}3-{mAhow!h3JhWb2NA&L=Whga zeb>X)J*hX3!seE?JL!Q!m;F=iWZ}!PW|D${MHnivi=rG62XlVy;=x1NKVd6g^ZN$U zXBhr2SqxgJdkQw!r&D+nY6$i}X6bnmtg`9H?D3SO?0w}Wy00y%riDOnknC0r} z{gr&W(U`qYig!47qwY4|juH9)04c3Q)-3#|djJ3c07*qoM6N<$f}&LK A82|tP literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vi.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vi.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0d214ae61a441b9d6a52db8cfbfe366b1e886c GIT binary patch literal 523 zcmV+m0`&cfP)3qN zy=xP37zgn0?_P3wAvx}vNU0@eQxrvPt3~jon}Rxsiz2${(5>hqIEYRGq2l7?APDN< zUmyk%wAD?pM$!lYnYqkCy%#JqRTD8~{=vyu`ke0{Z#&JKv(K%OkE`2ZE@2wU z+u3YVDHeZ8iIw$fQuc)X7)h_?Y<>NZFE1RffA?ej-t$5$bu5vYU0lpHn|)0Ie*W;* zoP+xgodV#wx9-jFUAueVx^{Kz@uQe7H~l-G7LLx$STgd6NXZxC&1Pg-I)l$YxfFPt zLeKyKNkOTeY9#9`7h0{Zu7jC&2-kH@(`04bX9XV;hC{;sxj6NR*0$aqg( z_4C+R3P7z^)rbfHGXv1GFZS;)Df)^0`0H?VHKGIWO4kd8>8Ys%GYcW4B;h!YZQDEq zfQSJm3W8u`Y038efv$_m$uz(KDwT?8G#d0TDJ2mBkW$hRh$In){s8FVCiBK!crE|{ N002ovPDHLkV1mS@^pF4m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vn.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/vn.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cd8a151a29edb2d6cfa8b65fb6ef3ab1f774d2 GIT binary patch literal 324 zcmV-K0lWT*P)?3UlUge24O zA(@EStcsK3)>Lt1w#`EkE3Ix#!Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D00(qQO+^RW1_ccP z1B7|7b^rhX8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;&Fvu*(1d0TM|>K~xwS zO~K7B15p@&;qN-c!p{v@6O1m!$fFBXaam*@zF$tc0MTs*YoC2@j{hL zY;LGi#zSHH)s%=VPjr6*3<{TRDr|9u;sHZIx0jw0E2}XWKCwAsoH25Ed|)tWoDK2M zT6`1W(!i(05-FZ=F~qd+i(=Z6&sBYe&ydYbI!HM1}le;sphLD@7sa-dzhHQ9pDoFCH_P1f5uWZ^XXlF zG-rK}{q98$SCX1igDg^6>uO;k19-b!zJ2{Lb*3?UtNukEloxV{vCxWHA=Bt+02x4d zdA;OjcKKSmd&7Uyj#9%Ztr%AYkVE0@ao@H@D?jw$iLTDz;&t{!bIQ$R=A@fBcR8P~ z3U%$b=Q({rFW#uGdH<%IDFP)@L?a@VXomZ`&CUK}WB?z(=-8xIzFWJcZYQ0-QkzjU zBWc4XIW|_ke1#0)*&^RB+r(aVJ2>B~2B&Orm~>hg3(bv%DjIAMo+ASg)o!udN#}aM zZPMxk#+nw!paoe>L4_+hDr5kAcI(8EozoBhY(Ke`Ez-&LR1t$JQpk&YxEF^ZC!oD) sZe$!d1dIcVKmY=4?OOo?00`KKzwwt%9xa+)(*OVf07*qoM6N<$f;^YRjsO4v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wa.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/wa.png new file mode 100644 index 0000000000000000000000000000000000000000..12c10f46e0aa3a0e1a40b2a2b432b6d64e52934e GIT binary patch literal 294 zcmV+>0oneEP)AQ08qGehzJ4+P6vP2sop;833*oCiP^ zbwzzqHx$2K0o&~ssH&=3pCy+G9_?d%bfJE5OKrFG{rI>7pm)31%*@OxL3V3)s-L1G zS{k>vb3;{UrZX*dXLoeFTiwwe9hv~78OTge(v;i#KfnaoDd`Uozd)&Do`k(`uNklQldJUagtB1$?W2;qv7~wDdpVtYr(d5U*i(QmKjYkNi;P*tpiY?%#S|d zg?u@cYAD-Uu_&eda_k^VwF(>I9$S}8&RjShKHtNAK^1@yoCC40ljgZ@ONfRYyDB3? zZm|Y4WO#1ty}Li(ye_0a>PsU;qykV?O$^+TQqqfOWyY+}pX~85jhHX{gLZCJnwr1& zbjJ@Q{1KCgv@NIB*Viu!KTlWoZYuQOF#LY+@v!rCD$r<1o5^xfj=c}*#{HIbbI0~n z=A}~Ci@rUV^3~bSzEV{2*FvP{U6oTQP+Ktgnh7iDEu2Yc^QLUCTY2;9sLD7tD(tM1#lm}s^gl?NyY4jmjq@URgb>;$cYFZX03hWB_IsaC0Hi7vXEBEB&FQL4}*acXg2owWWp$oq|@$)!xsx=a6%a+KnQAr$s}k8 zA+!o`DmYh#fKVg4k?M9snT$Ig+x2rC>QsuLO$23zVIbhH%Lv);bY7dypV7#!)%Gs0 zIDQ2kUe4~~N84XF&yw-Y(-X-Bo6R^OcpT1VcP#6z*^HZJtW2Ov5JcZE`9MJg8!-`LkuH^;c6Jta9>7Ad^a!bP18*Xv@gjDDg=i(%7!`MBcP##2 z2oA4(?69-A;3k7!b8rB|Y?wJ?xM2sJzc>dbGnw_Mp~35q561_$l~;}wJJQwVwM7gCz8Rb)@D$+VR8Q3w*q^F(sC^V_W9j#PSDQyDMUTE5}+a4#nlHPyT z-`301x_9`Wz$SQFEss4W`uL+he9=$o;oW-vK&gEt?13Go#~#;|+lijsuct@)UG?lp znVSo1U&$z{E|1j}MC$FC5_Kwb-N%mYO>kQ+jnqntRHCF-lqglPaMKO!C^SC4bF7xP zx1zNK2C>Yk>E0MvynzBkLGk?^a6R)d#XR0`yyYMMEL)MlF}zFw0000<}^1Z0OSM+p)?r0@9pn=e13PkLo&-KTA1yg0RVEqaupR8H>dag-rJG_Oh%F6 zH=O_}0(rn4!nNzgdj`sxN>8@VdzLCiAS2xj(n4r44ap@Xpe&_|^92?#5ef(a2`Evh yR-J?bM35N?3CSgdkTj`OoE*;{nZEt6()<8^hFW15T+?O%0000R+0n5kax+_Z zn=XIf;)UNklb>!45SJ#24bMdWT5Eck7Nn@9Dks5#u#}-UyxV$7X}Oz?bg9@2T`PQloBUHTcD@I ziKIx8lKY|?^s4v9!jQDULAiT{#;7DpDlrI2h+qI2N`aNl{(L)H0h0COokSuSnAp_F zNxfJ0upgeDt;6GfA2%C1ozNmGIw;gCMd6!~dLrmntMzx`=6Np5GK~}|t>56B8^^Iw zwHM~lV*Chl4#`$<4g7gOI@ris91h)f`!Y?Fh`?WT0aA0Ys;aK*9L8wdb{Gau@ZR5T z3=LpH(=>hG+qWW8*EQz@P7C|RWn7*M@@xN%GgdQUqB2D)>Hq)$07*qoM6N<$g2qpR Al>h($ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/yt.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/yt.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9bacbbf7b663531afe3c2c5165f4aca13019be GIT binary patch literal 456 zcmV;(0XP1MP)ocvQh+i>-=?UMz}Ke}`AS_2?fE#ES>7`d2)Pw1QCeAZTx;r4rN9 zlyrBq~V><;tTZ@zC>5r!d2%@{oBl1NI!7(tIF1jb2VjK&Q6uIr+QUXL^yB$oq9 ziETq1Cq-i*2%uU8*9CxXx0?Wx1^~(DNv#H$P=XkU4RDrtDZ#Q3NhwYEvey8E(MS_A zm&-Mqo#0m*!1wyFx;#W-qmk!%Y$_~c_-?lY-^bBw>&1uruU;=A40NRTc9%X|uS%KO zh560REv>ak*Bpmop-`|KJBlPGw>SGJtbYE8-O@%GfVNt1C?sLPixEOUKHj%?b~s~~ zlRI^B1zKHm&fzHL{N?GHa*+Yj9mq*4r7ziE(5@Zx9Mki7o9Ur9PGfBw6 z85cq*N}aPh^nYThj3o%Cj%C}9qm{yLwgWO?vb?%72nODwH* y{uzAV&puMiPN$=%AB@A08YST@Cd6QIZcdB_%1JZ$f~`TPF)b%-57~E(D`0$RQ@s{K5gD1U00RRB~ z4`y`Fl8xVm@{6Y8vG;Ehuiu(?GZ2a}$C#r;j@dO_otiRRzMC2^k zr`Ls5GxO0E=Nyr<l>HGzIwlFGLju1?iU)5Wkk25Qk(eDas`OAadNHZBKsOGXR+7>2y$D zj$J%jyY(|!Ru{MqDksk}g>mK<4SR%Xp)Qu+K#qy4y?_q}MWw`=ua`@r*usobZk z-;6FVMWoD*Sw)uoQ1TUaR@EGP0mRfin3z3+@#!^ANfS$lYMGzAcvopJE@xK=y z!WP4_GyAdIc>w|lpbG%lKF0eU&@=@AP)k<<>|UG?PB6QS{$6Yz`Sz>NCW0xYBtuHF z=;!IQ3ScnK-p=b_?4M^I3vL{G|A6xwCYi>hg;|o-Xrux%zsi{T&#n6}I|EOdzcGzr zmRyBdU8H~tKz#YfsgT+_Qnkl0RN{YtT#X^h(U%~J<)KdS%@i5cL0@upnAh$l3jU< vb$oOFkl-Hf=`Nu2*m`7JsP*hZZ+r00000NkvXXu0mjfRA`g) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/zm.png b/modules/core/aloha/static/plugins/extra/flag-icons/img/flags/zm.png new file mode 100644 index 0000000000000000000000000000000000000000..5145ab5547484ef84f6e5f57bd464a27eaa5c922 GIT binary patch literal 359 zcmV-t0hs=YP)6i)H{g`*a4NyWLJFiDS1NZ`|H}{&&k%S!<=; z~p;Ha3t0)qN1Yn?`Xnk#czGVJ) z$EU9G)C%{;2lE zyVHW|>h`~hMcDFF_u5zR4*`Qp+q;wklK=n!07*qoM6N<$ Ef_gL2_W%F@ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/flag-icons/lib/flag-icons-plugin.js b/modules/core/aloha/static/plugins/extra/flag-icons/lib/flag-icons-plugin.js new file mode 100644 index 000000000..a0bd1aa14 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/flag-icons/lib/flag-icons-plugin.js @@ -0,0 +1,46 @@ +/* flag-icons-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * Provides flag icons that are shared among various plugins. Plugins that + * rely on the icon images provided by this plugin should require this plugin + * to ensure that the images are indeed there. + * + * This plugin's require module exports an object containing a single property: + * the url of the plugins. This url can be used as the path to + * programmatically determine the absolute urls of the icon images. + * + * USAGE: + * require('flag-icons/flag-icons-plugin', function (FlagsIcons) { + * // ... + * FlagIcons.path + languageCode; + * // ... + * }); + */ +define(function () { + 'use strict' + return { path:Aloha.getPluginUrl('flag-icons') }; +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/README.md b/modules/core/aloha/static/plugins/extra/formatlesspaste/README.md new file mode 100644 index 000000000..9d0ce472e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/README.md @@ -0,0 +1 @@ +Paste plugin allows to handle some different contents that are pasted into the editable area. \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/css/formatless.css b/modules/core/aloha/static/plugins/extra/formatlesspaste/css/formatless.css new file mode 100644 index 000000000..37bb731bf --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/css/formatless.css @@ -0,0 +1,9 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ +.aloha-icon-formatless-paste { + background: url(../img/button.png) no-repeat 0px 0px !important; +} diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/img/button.png b/modules/core/aloha/static/plugins/extra/formatlesspaste/img/button.png new file mode 100644 index 0000000000000000000000000000000000000000..283556918320a077af95709e557bdbf75e221249 GIT binary patch literal 266 zcmV+l0rmcgP)w8G;g|YMTA^WqjUZ>m7MS`^qG?)SpJ<|8 zffGO`} $content Element to process. + * @param {Array.} toStip A list of tags to strip from the content. + */ + function removeFormatting($content, toStrip) { + $content.find(toStrip.join(',')).each(function () { + $(this).contents().unwrap(); + }); + } + + /** + * Register the formatless paste handler. + * + * @class {FormatlessPasteHandler} + */ + var FormatlessPasteHandler = ContentHandlerManager.createHandler({ + + /** + * Whether or not formatless copying and pasting is enable. + * + * @type {boolean} + */ + enabled:false, + + /** + * Handles the copying and pasting. Removes all content that have been + * configured to be striooed away. + * + * @param {string|jQuery.} content The content to + * transform. + * @return {string} Transformed markup. + */ + handleContent:function (content) { + var $content; + + if (typeof content === 'string') { + $content = $('
      ' + content + '
      '); + } else if (content instanceof $) { + $content = $('
      ').append(content); + } + + // If an aloha-block is found inside the pasted content, nothing + // should be modified as it most probably comes from Aloha and does + // not need to be cleaned up. + if ($content.find('.aloha-block').length) { + return; + } + + if (this.enabled) { + removeFormatting($content, this.strippedElements); + } + + return $content.html(); + } + }); + + return FormatlessPasteHandler; +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js new file mode 100644 index 000000000..f48226e56 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js @@ -0,0 +1,220 @@ +/* formatlesspaste-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'aloha/plugin', + 'jquery', + 'ui/ui', + 'ui/toggleButton', + 'formatlesspaste/formatlesshandler', + 'aloha/contenthandlermanager', + 'i18n!formatlesspaste/nls/i18n' +], function (Aloha, Plugin, $, Ui, ToggleButton, FormatlessPasteHandler, ContentHandlerManager, i18n) { + 'use strict'; + + /** + * Normalizes the given string value to either boolean true or false. + * + * @param {*} value The value which is to be normalized. + * @return {boolean} True if the value if truthy and not the string "false" + * or "0". + */ + function normalizeToBoolean(value) { + if (!value) { + return false; + } + if (typeof value === 'string') { + return '0' !== value && 'false' !== value.toLowerCase(); + } + return true; + } + + function parseConfiguration(config) { + var parsed = {}; + if (typeof config.formatlessPasteOption !== 'undefined') { + parsed.formatlessPasteOption = + normalizeToBoolean(config.formatlessPasteOption); + } + if (typeof config.strippedElements !== 'undefined') { + parsed.strippedElements = config.strippedElements; + } + if (typeof config.button !== 'undefined') { + parsed.button = normalizeToBoolean(config.button); + } + return parsed; + } + + function applyConfiguration(obj, config) { + $.extend(obj, config); + } + + function registerFormatlessPasteHandler(plugin) { + ContentHandlerManager.register('formatless', FormatlessPasteHandler); + FormatlessPasteHandler.strippedElements = plugin.strippedElements; + + plugin._toggleFormatlessPasteButton = + Ui.adopt('toggleFormatlessPaste', ToggleButton, { + tooltip:i18n.t('button.formatlessPaste.tooltip'), + icon:'aloha-icon aloha-icon-formatless-paste', + scope:'Aloha.continuoustext', + click:function () { + // Toggle the value of allowFormatless + FormatlessPasteHandler.enabled = !FormatlessPasteHandler.enabled; + } + }); + + plugin._toggleFormatlessPasteButton.show(plugin.button); + + if (true === plugin.formatlessPasteOption) { + plugin._toggleFormatlessPasteButton.setState(true); + FormatlessPasteHandler.enabled = true; + } else if (false === plugin.formatlessPasteOption) { + plugin._toggleFormatlessPasteButton.setState(false); + FormatlessPasteHandler.enabled = false; + } + } + + var configLookup = {}; + + function getEditableConfig(plugin, editable) { + var id = editable.getId(); + if (!id) { + return null; + } + if (configLookup[id]) { + return configLookup[id]; + } + var config = plugin.getEditableConfig(editable.obj); + if (!config) { + return null; + } + configLookup[id] = parseConfiguration(config); + return configLookup[id]; + } + + function clearEditableConfig(editable) { + var id = editable.getId(); + if (id && configLookup[id]) { + delete configLookup[id]; + } + } + + Aloha.bind('aloha-editable-destroyed', function ($event, data) { + clearEditableConfig(data.editable); + }); + + return Plugin.create('formatlesspaste', { + + /** + * Whether or not formatless pasting is enabled. + * + * Configurable. + * + * @type {boolean} + */ + formatlessPasteOption:false, + + /** + * Whether or not to show the formatless paste button. + * + * Configurable. + * + * @type {boolean} + */ + button:true, + + /** + * Text-level semantic and edit elements to be remove during + * copying or pasting. + * + * See: + * http://dev.w3.org/html5/spec/text-level-semantics.html#usage-summary + * + * Configurable. + * + * @type {Array.} + */ + strippedElements:['a', + 'abbr', + 'b', + 'bdi', + 'bdo', + 'cite', + 'code', + 'del', + 'dfn', + 'em', + 'i', + 'ins', + 'kbd', + 'mark', + 'q', + 'rp', + 'rt', + 'ruby', + 's', + 'samp', + 'small', + 'strong', + 'sub', + 'sup', + 'time', + 'u', + 'var'], + + /** + * Initializes formatless copying and pasting. + * Parses configuration. + */ + init:function () { + var plugin = this; + var config = plugin.settings.config || plugin.settings; + + applyConfiguration(plugin, parseConfiguration(config)); + registerFormatlessPasteHandler(plugin); + + Aloha.bind('aloha-editable-activated', function ($event, data) { + var config = getEditableConfig(plugin, data.editable); + if (!config) { + return; + } + + var pasteButton = plugin._toggleFormatlessPasteButton; + + if (true === config.formatlessPasteOption) { + pasteButton.setState(true); + FormatlessPasteHandler.enabled = true; + } else if (false === config.formatlessPasteOption) { + pasteButton.setState(false); + FormatlessPasteHandler.enabled = false; + } + + pasteButton.show(false !== config.button); + }); + } + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ca/i18n.js new file mode 100644 index 000000000..53b4615c2 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ca/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Habilita/deshabilita l\'enganxada sense format" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/de/i18n.js new file mode 100644 index 000000000..177b2ec50 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/de/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Ohne Format einfügen de-/aktivieren" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/i18n.js new file mode 100644 index 000000000..746ed8f4f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/i18n.js @@ -0,0 +1,12 @@ +define({ + "root":{ + "button.formatlessPaste.tooltip":"Toggle Formatless Pasting" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/mk/i18n.js new file mode 100644 index 000000000..ea922d864 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/mk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Уклучи/Исклучи лепење без стил" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/pt-br/i18n.js new file mode 100644 index 000000000..7ea1bd29e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/pt-br/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Alternar colar sem formatação" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ru/i18n.js new file mode 100644 index 000000000..03e99e3f7 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/ru/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Переключатель вставки без форматирования" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/uk/i18n.js new file mode 100644 index 000000000..aed3759ba --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/uk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"Перемикач вставки без форматування" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/zh-hans/i18n.js new file mode 100644 index 000000000..8cfff876b --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/nls/zh-hans/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.formatlessPaste.tooltip":"切换无格式粘贴" +}); diff --git a/modules/core/aloha/static/plugins/extra/formatlesspaste/package.json b/modules/core/aloha/static/plugins/extra/formatlesspaste/package.json new file mode 100644 index 000000000..5d547daed --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/formatlesspaste/package.json @@ -0,0 +1,8 @@ +{ + "js":[ + "src/paste.js", + "src/wordpastehandler.js", + "src/oembedpastehandler.js", + "src/genericpastehandler.js" + ] +} diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/README.md b/modules/core/aloha/static/plugins/extra/googletranslate/README.md new file mode 100644 index 000000000..392399ed4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/googletranslate/README.md @@ -0,0 +1,22 @@ +Alhoa-Editor GoogleTranslate Plugin +=================================== +This plugin will allow you to translate the contents you're editing by using the Google Translate API v2. + +Usage +===== +Just include the plugin.js file in your page, like any other Aloha plugin. Highlight some text, switch to the "Translate" tab, and select a language you want to translate to. +At this point only English, German and French are supported, which is just because I'm too lazy to add all the language icons and styles Google Translate supports. + +Please configure your own API key, as you will most likely hit Google's Translation API limits if you stick with the one I provide with this plugin: + +GENTICS.Aloha.settings = { + "plugins" : { + "com.gentics.aloha.plugins.GoogleTranslate": { + apiKey : "YOUR-API-KEY-HERE" + } + } +} + +Known Issues +============ +* Any translation which returns special chars is broken, as the characters are inserted as symbols. This will result in broken text entries, eg. when translating english to french \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/css/googletranslate.css b/modules/core/aloha/static/plugins/extra/googletranslate/css/googletranslate.css new file mode 100644 index 000000000..e5e6de8a3 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/googletranslate/css/googletranslate.css @@ -0,0 +1,15 @@ +.GENTICS_button.GENTICS_button_googleTranslate_en { + background-image: url(../img/en.png) !important; +} + +.GENTICS_button.GENTICS_button_googleTranslate_de { + background-image: url(../img/de.png) !important; +} + +.GENTICS_button.GENTICS_button_googleTranslate_fr { + background-image: url(../img/fr.png) !important; +} + +.GENTICS_button.GENTICS_button_googleTranslate_it { + background-image: url(../img/it.png) !important; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ad.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ad.png new file mode 100644 index 0000000000000000000000000000000000000000..385fa1d7ea6e5e598ea9a69455681da87d932de3 GIT binary patch literal 454 zcmV;%0XhDOP)&KN01*HX8z2xs00g>KA5R}m0c2G~3+y*d zjz(7H%la*1C z<(XA>{C0a?EmIb?dH2B)RXIqRHl_r+2$GCsM3Ggcm;an?eqQ!_tLAt@Dotuonlx$# zv|@~`2zt<*RU&KF@2xgo&6Pq5hk-h95ULVr#Uisj=uUUezFhpSlXLsO{=QiMIZRHD zE|p4((6m$yXvHFe?le!)y0SA1*Z23YfBZ0Yw`;df^PiL|hk@<{I_Vja?&)5tsFHh+ z55FC5h0D(FNv5)wGNni39zeI~#iK5q@7y_F1F!|?ja?&y+-_TIt{Nj6_lh9U+E24T-dTl^P^z# z36W$++dgBAakxLsf{}^cHgcZ_RMiA=G00000NkvXXu0mjf$aZ&o literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/af.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/af.png new file mode 100644 index 0000000000000000000000000000000000000000..1b24b434fafc3da5ab44f61b52c99b19797e16a1 GIT binary patch literal 420 zcmV;V0bBlwP)2$~ zJx*0o6b0aQ@q&Oqg#>|;iZB66YD;?>oQCC_fwd(gpfg5|m5G%WMof$`b^-||FX7$2 z*4pQ6kUI}pa+duuIiXId(| zfd1^bTGre5_3?vUlP8%D?Qhp7z7T9yCdF%3u=~7-O->OzVcp zD5Nxapi_VdTm)=s~7KhM4mi-nEIP>M+iBdTmi zgd~zZqF%j@$D8F``Emv_RWu{R-4I3qx)l*5E26%ht$q63$sW;26VWEMbTfnz0Le!i z8zLovf;dP6IoM0m!!7JS*l;>~Vu1nw`vr6$fdmpr;0bWP2LzD7I{pItMQKweN=gy{ O0000&0C#uy3|8E4S1u@A zD{cMQVYe%hl!nRUtE+|6Ko!yY_Pu8oZjYw9{>f^G=*F`rcxIBf9;R+D1^IYnBmsE> z8Xgm7G7sn5wvC-is}%Ke(>^sR-{V; zasc5HdF(*C{BfaHLcNmJ%cz&psGxCl=-P*;&EhU8C;vV`3L3@pwmH7rK79Q~?6I@F zocbF{bQ(+!wlNZX5x^|`so y^X=!Y@@O;UVS<~>0Aw8?0Rnu_gNT2*0Q>>Z{371HvT}_80000D+sWGXPQX!dKB1K#zD7Xj(hhn!5I=G30gCNDJbWrHv;GhVCMVHco zAfg2qMZ_WqRYXb!QDgB@vZU#YdH3D>`{NJ_!r|}@XZYX*m#(b6NOGNAxMJ6fIa~;v z=Nr*{{QlIdGBSa6AdAeS@1PcNX2S+M3&&sD(o|dwQ@cEVV%Gm!3NO!}>o`#_!X!?> zs;v6(;(fE+TPtj&Gwn8#M4g}g_BE4mCVM?so7!VkqI@OF7f9m7=EDF;&7DH?Mt!m| zy3JoUHG(-hv6r~@UG!O<$L;B3Ls^0#?3tl!tDArgA9qI@6V;`px@``&!vhcMXQR>T zYJbEMoJgVj6y3Y|;V9}nA_3sd^f(sZ{e1qtcSt$Md~fB$n_Btwk^Wo9jun6zn{z*| zOX&=&0BL~9CkwZltzGL`NQ6X*#gh_imU8`Mt!M%g?OOJ&oo82XhR7VLxWSs$lXy}` z!X%=)_4)UoRN@p{A6p^RCyI8N|XYQXVD{leo`q@fXw#UPPLOhz9AiOFOUO9zH7MzIL7SZZPR1*`^(jj!OP(bS{* zwD2iXKH}}(;ls5d z+&j0FQu_Ah-3S1_`*X;6zkhUh>Tj&(r~4~6yEk>VmoI)FY_0WfcJk7u!I()!R7APo z9BTX5!Q5KOPP@PU*JSO{G^8ob(&fzxYvocFl z4?RVNr>o>w38cqsU2Cniwtco=PrFu1YtdRsz?e|($Rl*Uiz|!zuzxhl+}g)wK3H@M zuQZhm$)GntUNUcOa(lk}_x7Teb6d{s{;BTCkLBc6GR!jk2*!jAr7X=bdvoe7CjbBd07*qoM6N<$f_$;ga{vGU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/am.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/am.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0a22383b3f0116e68b9cdecde1bbab093b3822 GIT binary patch literal 332 zcmV-S0ki&zP)pD43jr73|weT>g5K5nTB>8eO`{rn#Q+VAh^U%%z`F=5Q8KG9`WEVyDWyQ`=B zhwcS16UG&NWGXICX~K-@7#-b5WC)uJfB;(~+R4!twFpuygLtP`w3j{b1`n8LBzPv6 el7L|XTl@tW=7-I9iZ2`h0000(h@ZhCAP7=G?KxVu2nK@Oh-V2h_F#)T03~91a0wX6?y?LlhJ3DqYb2clIfA*{RRM%3^+YG*}c1aAjJ^Oo}SC`(WaE+@wFiz zA79)Vp|!P7S64p=fXI5kB6NQKtx!KE*W9mpb7PsQw*}W;% zsgP_WE$v#x>Z(P6L$G4yO zlg2koX4kc78urFegEA}=I7Ob0G4XxTTpS=)$sOQk!>XvNHTCdqE54oA9X4p~iY%FY z%iTtFws&AjzPdz|{eC~s^P0Lz7~*(bEf&$~i9J4YlZTzzj2|kLvMgJ#*OB!G009(* z91cxq&pl4%^(C|=@MesWyF pZRkH!C_-gf`p>|BK7bYn`vbOYQS`~prX&CW002ovPDHLkV1hPTuZ{o! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ar.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ar.png new file mode 100644 index 0000000000000000000000000000000000000000..0f09ebdd8eb9650fd09cb12d1fea786be0f5a871 GIT binary patch literal 367 zcmV-#0g(QQP)2e? zy^c%)7{}rNnLTC~*@DT6Mxhdv5~apR;u2hdMxs=!U5|){&c_{SB-D}(A-neE?EC(H zW=tfWXL$6{qskUxCR8e!i-M_`VTP%gi{&EYugc@AStIIzApzT=+374A!PeHNACAVU za!P)jiovutK?@5@8w(3pyF+Hi=T{D|Us|0KlPJarZbT6`&@)30ZXS-;_E{~nrp6dO zdD}-Xu@>hay7$0;h9S3CS>!Lb;>Pp_zS>{>{o4N}z?j6X7~|UVPNu_TcJHqL859^l z{p7~JbF0A(yzjYtD9Eu}kmcz6!ycb}zW8h>-%c#jSXkIvSXkIt*yQrrym)tET)>dU z!ERccv}w`|ZHizZ?a*k}7;e2f{ysAmb1@ZDr6EOT0)Z4M5>m-Be*pFYaOYoHV-NrU N002ovPDHLkV1nFrsILG3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/as.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/as.png new file mode 100644 index 0000000000000000000000000000000000000000..774776150ac14c7c2c37ed0620d64dd890f54de8 GIT binary patch literal 540 zcmV+%0^|LOP)1rq z%S%*Y7zg0rcg}atnK_eK4r*qNokUx7(e9EAMT(R{5ETRk?OI7tn|5sj{{c7FE*Gs_ zMC71QT0|l-8qT276lE8+OdJN!cYUMV^ROtQ^>zFurHx}41Hb|n|5#x74sLYA_yDV_ zqM;!WK$eVwF))U-hEni#c^{@DXVHNS>+8LirbpvB&N+xMH%D4SD@a99;xL|_bY5-6 zvR_jhW>1L5bbjWwn9k1^iW~r0(i%!3vNIk2WJ99lCX!+MLGMgIg6hK4`=1^@csKj8 z?c$~8j&oc~8`^Ro&qYDOV=A$`Dd_5Fbs73&VSM=O+n2niDRdVClvmb$ex)*+-6+}M zi?_EW*>iz~Df+LnbZ^h8TXjbd>CNgSkKevU2M71pBTS3j@(V1OPRWK&ZlgxIBu-A=AKIq&F=M0;DJ_dL(ER^H!c zYL$!((q~5|QXDW+av?|vZ%!O|BlfGfazsz`EIrAL-sDL?%pUVDUsK!-xN)2h3=jhY zTu2fz#WBS(2>~f7j)_F2*L~3*Ojf%kzj0@9y6f?`Wd>{l7O;Q@EMNf(SU>|7zgb|y e#r3)H65#(tg2R-mDwzzW4YAp8~uP% z?nEd;?sC5x_gd@AFywAmPN!4f_kbjX&>w28O(&Dd<#K5&ja|RyF(9eCHa(nw15#!d zTP(_IrSqAajpd=ZJA;Ta44<1#mxsgiey`(^F_tltQJZnYgZUij5}wSNPGyD%ZkQD_ o+-d6G5+@>|eBVFvpC31V0DRV3O?V3gg#Z8m07*qoM6N<$f|jm%*#H0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/au.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/au.png new file mode 100644 index 0000000000000000000000000000000000000000..709eac00de25687b14ff21859d4f0c8522f9aaf2 GIT binary patch literal 580 zcmV-K0=xZ*P)L^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00009=C5Jl&f!=oVt1OiYEmS3o-eg^S^;3o)4aSaZOD7XeJic}zKFklLvfWi?(6A0p^ zNpH{WSsQUL0nE;t$xLP?Gu(dm@wC$xZ5#zibd-vaLd@9-DY~LA~tzW>#57Wr50BB&fJ?p~&)&xbb`G^YP=xV)3;j>;<7M@%S zXF1EW(gY$p?Odor({wp;75U$SRU{UU&X8YYxV~q73#XmtpZr@^IES|N^Yhzw@%hn{ z)t&F_^GP&u7F8t7okCc!b#3$YV|n zt4-!iXFKOS=ll8X^-9aPe-w70a>uW=d&jPA`$lj6{pMs?ff=2mFgixZ7&F|n!`H7a zBa(Zx=N{nEe!AE^Te~!w))FG>EXHcAPGVbkK4&f!0)K~WVNQSI_g-|(&Y(LS^*ET> ziWrF!+sWfCz&U45FhCH7#K9b%OxdCCYGLMPuI>s4FiiAqsXqTW${vCt9Iy6cwXwb! zQy95X7`d`psoT@rpFZTgx*O{UX?GAJF)h)tzdV3aqJlz+DatevRfTY-%3qNAO*?a; z=hN0bC4p~@;(B98Q*h;0nN^{+Yj&Hd`~5P9Jo|d{`HhvG!C2IuTz)rW(`a$!>n&9! z(ZWiiEJk8y7yI8oA_vb-2&1kp7DAG#I44mVk7|Y&4i>P06jMn+l`%XNm4&%1imG=4 zi-e{r3^1U80=@rn W9ZW5xwLn7v0000r`a_C literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/az.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/az.png new file mode 100644 index 0000000000000000000000000000000000000000..2f189667f6ac658a0305cb94b78ee45233c6c4a8 GIT binary patch literal 423 zcmV;Y0a*TtP)15a z!ETIU7zN<-{rzVeqlt}3OG*b@64ti8iC)0mft9#}Zge-|64t*lf~!EIY z`m)Dpgth+jY06Ml+ES&Ig>~odTCMhA43T(De}$o28H!Or;8 z{{HCpt@X=0XKvgSB~p}K1UdkXL=eH2S{=SyEk0~bCO;lOSuPf*uivy4Td=K&pn*OB ziBgtmrn~y`=wU@#{5d~#rj;eyTr*FAe)m2mcl7?3QcNqvP-J94X@;35MOxR-`Rzya zI7TM7hUZhHNioeFkY-wxSkylyt%UDrxC(}XIKx0*T;pDmgQ^$8z_uZQ9U~w-11QCHC z0tjNkwmLu{x&c%Mdw(=};nIz#GY<#WObeD}%z|CP5?rFfM-Hua>fYF!ZUB&K4_Y5S z=ao$xCm%N}YwKNEj?6@tTr!1y{Q75E-+X{2AVNq)<9+8^y|r$`==JF`nM7A+id%RG!S*NaB`Vy!tiymxGBB$*W(jD;aeKzNcd=yDJ9lzTjT)jnTs z4sG9m_Wlmh6i$!y&pdG&7V;DMv#wM8qJ_oNUI8Sn@QfW?vj1p-TtonCSB$S2@CfWPX?U_ih?qrm_G N002ovPDHLkV1h_g)+Yb} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bb.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bb.png new file mode 100644 index 0000000000000000000000000000000000000000..50992817cf3328dd932019fc52136b0363d3096e GIT binary patch literal 403 zcmV;E0c`$>P)1@y zziy6k7zW_`eZOA^S_z4PJa~>^63y~PEbajN6k2Q^D%G&7$Cp_;OWb|0IIq?PwU^U;F72IYUO$8 z!IOI~DJA9oi&q2x^tbP)NrzMO3p#Cet0(oM&&L}^Qg*Lw1Dt`XM$%3xh0gOgJUZ6V zS3P^p?u80v+HwILNG0u*UG~&XOYc4^k;M+FFp(n{z!@l~l*lEeOMBP3EL;}u-C&o< zP@&2Wz!`8-R?(rWo45CQ=I5{F&MkH?RH#sq3-AnBX*yPS9wpM8#cBIR$tClP x24KJdetdXar>G5zs2$Y6?!i9r2iO1w;4fydXM5QHykP(U002ovPDHLkV1mOYwvYe- literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bd.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..685325475ad79e05d955b487b702e3125d2edfe6 GIT binary patch literal 372 zcmV-)0gL{LP)F4$IZN&P7X?KBno!2m8H6zBW43pY=c?Oa^5ds@*0oneEP)AQ08qGehzJ4+P6vP2sop;833*oCiP^ zbwzzqHx$2K0o&~ssH&=3pCy+G9_?d%bfJE5OKrFG{rI>7pm)31%*@OxL3V3)s-L1G zS{k>vb3;{UrZX*dXLoeFTiwwe9hv~78OTge(v;i#KfnaoDd`Uozd)&Do`k(`ueTct}Rf^ZRhpfQ`q)2Hg*kl30I;#*|LwYw5#KOkbBEbbjQ0MPh+ys5# zVHmyxXNI#3{!S11zgh;s`8j}T(IOcK@z}6Ont%Mq<>d+hn7O_|f@Gx4??jC_oJ!3As02O*4{00000NkvXXu0mjfOz4@O literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bg.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..41f34d8562f28189036d0cb0ab2993c0f9c82296 GIT binary patch literal 320 zcmV-G0l)r5|qoM^r>8) z4gLA!x#14$oAvH}CrcJhnoLHL8IeIV6f{@otIhqU15hQ4Dyc*>95h*siYU?%6*N_X z(J>$gX;4(CiH$@=V;~3yf&-(1MGizq$0JtPoV|upQYgs`iAqu-kr^^2Eid%6LH~Tf z*`@qKkVRG;A35?UL@3);-U8jgKw+^c5=w|58wm*`OUNACKsx}QG=AGZ5r8i|&}D{g S&`PHO0000c zf)ya8^gAF;X?%_EFK7P`Ae-Pr(CyMqg7X;9FD>&2VBU@7fX4^A8Y9n*acy-T5Pl>N z&|!om!PzOY*S!Q|ueM^pg9DaJOeR>ZcHZ`61vK`3T!PyqifA;V!GP9lVO-UsqAa!4 rv>r*R%d)gNaypf9O#4skU)t6$GR{1cQgyqn00000NkvXXu0mjfWbcxM literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bi.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bi.png new file mode 100644 index 0000000000000000000000000000000000000000..1f03e129ad3f861554345620e2491e1855438d13 GIT binary patch literal 566 zcmV-60?GY}P)0&S zPe_w-7zgn0`?_SluWn z1Hn!M8AT>Uku(*<)<#OWwf}AN_ddVpiTZpDNhF}GmHsZ?(yl;&iI@mValK9=3@}i~ zKatsac9o0+)8VgYzXPZ)EL38#hPF0nP31C(;C74FPC9L$8nRCu7m=p%rUrAcXtY@V z=3uZhV)qRcUOlI5w)NbIJ94n}W>%$A!HK)udiEyjtG7PhT%28W`8_^Qqwm3&Xm5Mp zNO(9nIVmF9Tv|C4h(_hVdn?hI$o4-uv>f{J;!!TSl;23MJ-#2dd$dbs3K?QYvqm#a&DznF%BMP7I-U$pc|>-f zzw8U`_Xb1Zu^X01?ATnlf8R=W*&zjn3ps35)<+{_N4$N)^7GOt48wo@nuw7Zzpe7Q z(6iU$hbQ8p_tDRHun7YX;aqe?q&oj0|8%OMbvv|nibZxD)3StUE1mKWU$BQx0`Oe* z81ZC$SE2n=Z%+wm1PEY&00l6>00AYS5jZ;ia%t!0UwvpMbVW`1d;kCd07*qoM6N<$ Ef>NvqnE(I) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bj.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bj.png new file mode 100644 index 0000000000000000000000000000000000000000..53d4eb1e99caadf27996d36cca1ba260e78f0f2f GIT binary patch literal 311 zcmV-70m%M|P)X~s5Cm)ATSpL(IalfC$$c67Ov$l zOhj95{t$%H#NIJjNs;+WXmlGd_!#)Zs)N})r zXUe*Kb6H(-&uzDQT)jo23JHns1H<4J9zd{Qf#8YnpE0jF<`*OZYdjsXfcpRd002ov JPDHLkV1k?2h&})S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bm.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb8803156d1ae774f193136c9e28208c937803f GIT binary patch literal 499 zcmVCuo6fhK6O^yscpVPS-Tihu_c;o2Ydv2qG%p_C z-*`A50sVC`GstCn zhV%96`VZYZLSLL|s8m8KgAde2TV@M z&9#h}-|0`BS%B#J;)0?HGFa(@giHyaGlt>dYB4bvf6H`wz znK&KCC(k~15dk6rI^vAknT@vT?PWfFuH?dPQBy_d;4C`^2c6kOz2lzQyZTMURby3G pB_MbXP&cG>(+WWUH5MQZ`~x3{90!zUkIm5T5CcjxCXjEr0v8%w&~pS2~n zHgo6snY_BH$}RF2jgj`&ngLKMJ!!R?%*@2q>8q)f8{N2FI5!-q=jELCT(2e&6 zeAFgunTa_m6bhc_nP3~)(T7kLj#XH}j!U+iKq!?XRq92u*XF%_eztO4uh-4NTL?o0 sYzH6=$Ax9c2_SHWz*#^bjITTR2VAB-9=wV#761SM07*qoM6N<$f@Z$s#sB~S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bo.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..46b519eae66eaff219f2a95db630c746671a508e GIT binary patch literal 341 zcmV-b0jmCqP)j`{Zy)1Ve+Dxv1~x@g)!lSK z_tHm4Tq80j5MV`$;6E4u@Zl4Hrb~>Z4(ug9+6S?6t;#iT-+vqcQ1s^y*hng2Z@Xfp ziX|&9k52){-7DXJG4o_a)VOxTMzCtutQE87;o;r+8OH5v+&o>)ODoikS~g7o5;kn+ z;oi-!cNhp7w`zsBWy0=53TDHGi4IYM5uso!gspOQ*mrLxVWYwl#uwqGdC~8LDHD1l zrL)UMt{xoM&nw28Gv4y@eV!RAVmLEd?qn;Lil5{1?Ti6I(P^AiF>*996>Zo~>)5qn n2n)Uf0rU?xIj_InirDiXts{K5|IMJP00000NkvXXu0mjf`#F+= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/br.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/br.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdff06a4a1fe60b27f21234dbce30725aeaabb7 GIT binary patch literal 486 zcmV@P)6}%8EO`BihciwZ3LzLv_hwbdE#98BGN+-0!vYwz7mq);Vl z?9cW8`{3?sq;b!twA8D^!(-D{5c)v#$J2|49(Tc zQYqXV`co;@XS!FOxiEBiO{^ZPM~axBi3CJ%u6cW(BrXoQ{Cx2A4Zr#%%edtH3D0jV zx<~i;=G1(#uYnW^B4+23lh5dg?r}^0t(;@pd-2tKK@JHBl5-2m zf%{?VbF3U4UAvgpe!47r^-*K@_H&PCbX{BIpzqQ5k=kxzv-sxU$2g z&qciZV104A9diA9P&{~tEcvR|ow_1}kqX<-O}WL0T2K7CuSo>f$7oAxGQCDIBV07=~2;Ula{{EZS9FKK-tF6$ct%MsJEopYkZ`88G!NJAjM_4Ry lbJOcwd#(D<@!I{)&L3Vcc<7=8!d(CW002ovPDHLkV1l&lx>W!G literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bt.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bt.png new file mode 100644 index 0000000000000000000000000000000000000000..0abb9130c7d77e8b2dfa67b09856fb1abcf450c7 GIT binary patch literal 471 zcmV;|0Vw{7P)zb9@$)w*6zeeT8gRYQnTLP z>prRWHwL*%{Yi5!ZP?438br;cA}5E^9eGkMPG&Exhr9jFb~A6MUbl7c;=+e#E`gwW3j7GEA887j@&<|c9bP~20}TDO4GaE z!S!XPvX0KTzP_k8VsT)BGSM>JP$p+QI~1cQu!Qg89Xx{JW1Ro=$8UupBkKPzE}{Sc N002ovPDHLkV1i+3=T-m! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bv.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bv.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?x z?y$_n^|SvH9h6d_kb)&hpg>{Y1H+%h-A@=0Y)2CW(3XNeY92M4a>>oUe|j56fQ;Ye zW=Npj49c`Sms~RC%aZ^Vo6TlC9`~1Qcm5I)v0N?#z-%^KtyUyiELKNmRb}oNoM6vKQrr4doKYX*6a0TGWq`dK8=XQVlkY*oZa5w zb?XuiJ?Tujx?RH6DSkcv7(mIRi{ox3nn9ryy=g)-nxn}AKm{J&u{{Wt_>4CH%UB?A Zj1OmZePJ9pbGrZl002ovPDHLkV1jY5i+=zB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/by.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/by.png new file mode 100644 index 0000000000000000000000000000000000000000..81c5086ca61f7398f0fc2c4754bd71776d81c28f GIT binary patch literal 382 zcmV-^0fGLBP)_jg%cWpypQu28Ncl}292 zDvNay863!lRulO;x;$?mx5*km%z-S)cwsrq$YTd=P%Az@f7-3L_t)-47YYvKIS6>M c0j$@+A8$8xma>GhasU7T07*qoM6N<$f*8-ASO5S3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/bz.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/bz.png new file mode 100644 index 0000000000000000000000000000000000000000..f653173d4fbbdb220515c097965af4fbf06d738c GIT binary patch literal 476 zcmV<20VDp2P)2$~ zJ8M&69Khk@f)~_V|PKQc9en@ zooqo{YwRUy(j+~3-~UAdU3{Ko#D4??GRE?pFfcI25@t7EJUa^*Zpx@oEDVOHiy@kH zdXxQ$sifT%C5nsKo0ng6)au!({7&0dU5r#%y0dq_k!7k|t?+*NO1E2y;!(UYlftDG za6{CiktX`+@#@{n(~D{IhSeW5Yfql8Aq~2q}V?i=yIl7g~)%wbV`4zkgc$ z^3i{d>PhM9wapNd5G{&>rHHAys*BRN*sA)Oe5sagi*L2+vvXBu>hpi1S`d%wU@5^= ziRwYEwOu{(!{h9@SD5+9!hY{y#Gw6qItGu?MGP!QAgV|4sQ&p|WAWaqWVzed=Y!ft z=f_cbZ{@?yAR5HPQm`BuqC_PK14&=Mx^@5ITDi~>;gICr^QD~wqL^5!ngBU=ca!0{ z=9G&N#lu8y{p~`f(pTm0e!l8nDfiXf)TQsRne2gqfq{U)5c(icgd$@G#)*F@bQv&T S4mR%q00002e? zyKWOf6b9gbc4zJN1#H>DLNo{{-~kA!Q&aK=Dbpb#S)$4d&`@wG5p`Yw@diezEK#H& zazcuTL@`;|nR8~&52WJz-1_M=ySyxX5zbBqiv|8e5`c)DPNy9}fCPA3o%H6<0hCu4 z{eGX=WfJZWBqb8(8GA_SHlk#W<3BML!e9qk`n`qnYYDP(bHxcAaRmMoNdH3EA`))8| zRp$>Mua1vq`}@{LxYkKbfJX?X$y800Bp%%5!2zqGYeKO;EgwEIvlQFH_e@lPB89-D zRJ9mL4tI8bPd8+}R&AQeY&4&f)DRdYizL8X(@@o7v>43{bv@eKYd?Q--FmXMDa5k#wC3n~#f5jczyRY=4E;IL%kNx6V0|0J@V6 zM;cHRg>$aDcfTCZOp^ib5HKJCKY<&|We9;J01+VxKvh@U+a190&mR`CGTj1Zz32b{ N002ovPDHLkV1fV#&ME)^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/catalonia.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/catalonia.png new file mode 100644 index 0000000000000000000000000000000000000000..58faea35b8693ccc26ae4fc5e9d9484805c394c4 GIT binary patch literal 353 zcmV-n0iOPeP)=X;_d?69>O+>_(5gQ9Fv=SBUtVK-lFOls0d=~fKBvTv? z%g#5mdy+luOI<)jEULQ$Gj;bA5w?9GA|fF;;(~!A3R++yxRz2O2t*w zUY^}p{F4U~1Pzxk3*9~Nebd>c%5ZsaeqvL)s;*+HuIJwjdN@!(FgG<-S9NQ{JF0)mEB`v=v{!p&5}HSCaj+Nb6|QQ5mTmY@HAc(GwXj!6&@ m=zxHLfPjDk092t40Q?8ct0}*BD&67$0000<53<}8o~AX4HoLUzXL;mI=JlsS3Gz`pgmc=4)WPUxpw)eo$9@x_BP&m&a^nrV>T zWV^6xE)N$tq}K;_%$L7v8`XJQZG6&t2IVjA)6*4oPB1tnc7=hVyfwIcG4T8R$LRuT ztLIQ^qN2^_ZBH~T13CV*A`*@pA0@1wd~(!(Pz)%9+gAM@vbj-Nz+4JV83z6|B&=0d zNH?FhUP3W%)lpkboCLk$fEeG9DGP9627aZs-ga9Ny1)juTR~5_Ibw_&m*WJ2Z-w6R2|jf{{s!r<6Ct+Q+62p zelYrN-~Y8JH}NI%BXND?i*BEg0kS?k&j#^+^M=I?-lgpiktfcE5z-J+ZS|Tf!V)OE TojL-r00000NkvXXu0mjfVB6DU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cf.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cf.png new file mode 100644 index 0000000000000000000000000000000000000000..d932c21016b36a1a82b97838ebf71ed744c9cf92 GIT binary patch literal 456 zcmV;(0XP1MP)2e? zKS)&p6bA6`zI*NUDtg|*;wcSj(iA~!HPq@*t<~h<&_9>AIz*E#E#c(s(2@{5U9%+! zdQBk|C}>2R@ot0XobP-k5%l{Noy*&0w|>3UyY=)tTJTIZ`1z?vVEn=!#u7nTf`lb3 zsvzKokWTA8< zrJWtQf4i7Lc_^43I$IZLQ0(vjn4Fv-@kdbzN2IwqnQL=H|75BtisA5M1vr4Rgd_-p zj+n_@{{aMGG#XV4?-mxXE*=~nP-K#=WX63nxvzd%jbs`rMn>JP`-6Tp*ci;7pWSVC zEiD+H?zDU6GF$nuVl<~)n$xGd)6IHQA>eYOMTXNX-DonGyV0C(G_O1mECa_-_2+SS zCVsi6JktqFnapMO;)XLlX(>m+Fvuk^_`na-4HS-0Zm&Qb+^{@XU1- yTU%(g(CMJv#>vwFkqOQqf&2^-nIMsgzkUOfv0R|aEXAw<00003l-yn(%yO~gX2(xnnfYb(S;#KIGJ1R;%uf?8PX1@s1b0;4AL z*Lky96?_aIyZe6M_h#Q@@C3l{yR>}e^!&BbRz}rvDmFcX+&2bmgCJE+#e_jbI0No2 za9$xZHVeI_(cN_(Y4%EQj*1EyxjJ#UMC-Gp>L{ifQZ`)m<7Xn=bQ6Km>(>EoCQ59n`zwt at61Nvfo687lg>K;00007ytB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ch.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ch.png new file mode 100644 index 0000000000000000000000000000000000000000..ead7c2a0d0bda472f34d3836d708f980a6737cad GIT binary patch literal 239 zcmVfXEm+O?t16!!S*D z?7Hj&F`z<>sqZ~RV9Z0%ABja1M8}BI=vC=$BguN p>ND_jS`D!*G2Hugbnw5Mdu;f#!3WVuc|ZUF002ovPDHLkV1ii>VyplF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ci.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ci.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d78c7ec62b41544a03f47c0d497c5f5bda5686 GIT binary patch literal 306 zcmV-20nPr2P)_DILgfjJcOaJbN+gnhcV{ekP$JwuB(XDT@-jh?kT9a>6K?JSOPw_yU)q4Zx5f1$9pMbe@_E_Q1NP<( z6;+4aL94G-a|^}vY>Ma+mQkT{#gDY@rqX&xBvhE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ck.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ck.png new file mode 100644 index 0000000000000000000000000000000000000000..99efe5004472b34f938abb1e957841133b355948 GIT binary patch literal 495 zcmV&>NDU9(SHbP*{%Dzc^(TN{p z?`c;aIvkyydoGd@sfp;{4*L7A&)+;=ZH{c^osX4m?NO9m__(>aT->&OC+TTMdXl7{ zzBT5iN|WJIYifNhF8}axoYj zsX}2V&P^yxK~c-xCvyAZnA+tU*LviiI|UWfoxNPExrC8(SeZwt`3y>|%Z-n&i&h8H)tT zGv;tOFr4p9;Oc>IMIpk>*onDw3fRAbl8IiQ9bO#ocOC~>a-&{A01qJ)MG<546-_3S zh;eyxfOCGd_x3S=AI)J|uYJeNB5?aO$nJN~BT?6kZ$XT2EDEPFIdjk-^#4y$jMgBY#f4;g5;z1MR|h`NYN@+6*;OC@8gHSBgvgCOE5 zp<02eG^(zuP#P4fF2XOgK2t$6IkOl3afco(QRo@0W=9nGM0Ff@M_o`0Dx8K01_!nB{i9Jqp#?q&%?`q z0Dulbl}ySKC5m9?eHnR`Fo*xs3g#g43*fz zq?h3%nskKMe)`CkG*n74Nt2)>95JScM~y%N383Q>EbVOWuqfnYmzc7VkU(N8G<~PD t3LR^>f4qYL0l?V<4*t#z)cZK|pf9wjU@ZHo&)@(6002ovPDHLkV1l@Tl-d9Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cn.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1b3109088219c58ed80138450c857a18f28848 GIT binary patch literal 349 zcmV-j0iyniP)uoQ1TUaR@EGP0mRfin3z3+@#!^ANfS$lYMGzAcvopJE@xK=y z!WP4_GyAdIc>w|lpbG%lKF0eU&@=@AP)k<<>|UG?PB6QS{$6Yz`Sz>NCW0xYBtuHF z=;!IQ3ScnK-p=b_?4M^I3vL{G|A6xwCYi>hg;|o-Xrux%zsi{T&#n6}I|EOdzcGzr zmRyBdU8H~tKz#YfsgT+_Qnkl0RN{YtT#X^h(U%~J<)KdS%@i5cL0@upnAh$l3jU< vb$oOFkl-Hf=`Nu2*m`7JsP*hZZ+r00000NkvXXu0mjfRA`g) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/co.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/co.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb10fd86a7701205aa8850694e0bf314458a495 GIT binary patch literal 330 zcmV-Q0k!^#P)pz@LUIECC)g8iKYk9B(9l&DacknD#*JFHx_JF+2cXq=y2xrpSEE)ZpJp0u zHy*_7KJ2Lh*1F(PUle?dv z>f&oP8CA**QZ$i{Z&k|j+4=cLKI~_3-G^)U@6_&0eH^b!N5;-dm%9!(Vfz9GU?33i c75_)TAFzOH!HO52B>(^b07*qoM6N<$g2rc&2LJ#7 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cr.png new file mode 100644 index 0000000000000000000000000000000000000000..413797bfe27985c3c3591a73d5b76cfb36ca7294 GIT binary patch literal 349 zcmV-j0iyniP)^Velof(UtM8#nk z7}#BgordiR0!v7Uf(6ts#!3TFhmFz2<)Hx^vPG99sc6!ql47aEDxZ!o+QJ?JumKo= zZNPug`_|g)eBNO;!``01J}twtR-`Q10%_7x+t`fToAvo04GMwd1XE^fr?WJZ4Xm8WWX#YST z?|sl-waRT0q-2YOt*xi?v-Y)Ebi<*g<%?|F`u`=Mwf6k-(twl6)e%diiYkg!mMF4Z v5-G_=*}k5R8*sd8ab4%y{uB%pAYkwfGWUCT^E*_B00000NkvXXu0mjfqzIo4 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cs.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..0e0fb6debad853d87ee34c8fb609bc51f0f790bd GIT binary patch literal 321 zcmV-H0lxl;P)m8eIYJ&2)M*nOwK+Wn@~>jY%P;Z7EK)?ZxBcZSj6z+7>`&B9X|y zR7!c?Y?|(|U3Ch-3Z;b9Afhk+-Je-9BcgCJDYID~4zN?|aat*5U&1bf!P8>V#CmeoZ|y^ZXum4>a{1!Q+SZ4FZIKAlMq>mt9yIHas4t zfY0@f!JWLtfwTSS&C2nYT63Ji=`~r7a}qWNU$-#ya2a?jd{C9wL#FV9?&# zE?9-jK>JB>%p#au9SG+I?YN=Fd%S$=2z>MNDxJ;?5eQGH(a@g;0B8@{Y?ft!%9)w> zblNvJi@_ncBc>~EMW$acrk`IjEDwB5O>YGkZ3)wOlK?k`baIeVNm5cFxtU;hKxge< nF;pF=5<2Z)*e;XHaJl3M_c~nVUc8ZD00000NkvXXu0mjf82-UC literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cv.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1f79755d6d7188455ac736420ddc38fec14fe9 GIT binary patch literal 441 zcmV;q0Y?6bP)*C#8?HDewE|zV|2#mtQV-`F?l5@9qdBCDcs_VCVrX04Bf^Umo%91YjU7Gp)#6 zN+}4Jz>&r!7la9&2@PW=r1D&Dq$-Bfy7-0+TR^?30_&Sc5lp24A3+^ez=dL?_+aM+ zW;6Xe>$y>j!{K!lsg&1&Ulke>?Zz}X|JYfn7ZDaPLp6+ANRb^-AIP5sI)8+Z*nDlA8Yq)|5*(|sTK@A zWwV4*>L}na|Fp+fq?Jk~!!;%r=k)xGjD^mUk*!pA{_-*0+j_H-$gCbu>|Vv3Md9jt z+TdsbbO@&hqFQqUJXQiPHNW3eTTZM!RJzZL(bKyjZzHt0!RIF4Cbjg!L6yKr_17UW jfS=Ri?x?UY??BlnixNU5lV_#|00000NkvXXu0mjfr|ZIE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cx.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..8acecd6ec6ea8225b49bcab8cf8d18e43bc5d54e GIT binary patch literal 498 zcmVL5)@RV=ZPK@lH|;A3?3F$qdVOR!KV6go&p2`Gw#f+#2=w5T`~ z3W9?mJ}9C%M5+|x5UjNh0kPFI|NB0E4yKUfI1X;RPXaxIxc(3swB&#Tx|Z!l0Yw6s zo+uY^_^tPTbGW%_Fbk?d)m2?2s0KN)MW=qq%=4KD=s+X={oYaA``(VckkqQVNf7at z>7=us6$x9Rhyb|5%=O(q{j%MTKV`nAu42MKao!jZ4-7#LY>@pYkp$e#%jN#=bV`42 z=Isktwk6Kwc(#|-8uJ1E>9u}cs3i2ja8SI?dGk5#OZu@qbhu`NDrh7 zox^?n@SFD+6^bN)p`n~vh$0^yt&;K5VrHa=cZzX`Iz1llqdBkEC@xT>fK!b|XT2_i zgSld{Yj*b6^pis?_4U<{{SzZ2GQZa8W@zIQS#{Jq3S(i;LhSI2Ma@hs3l7LTkYA za*xAHULy4@_uj{MF6Z)8nx<$-1b~PwOHxWH&+`C~G#=7SRcR=SB2___Ugm@ZNyl+S zME#`&*_f)!=z%-8%tMAl76te3Nf$tAsCO@3`8i}hf_DV#O jBr(6JMT<7=KQe}2oC86G>J_z(00000NkvXXu0mjfMbwfe literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/cz.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/cz.png new file mode 100644 index 0000000000000000000000000000000000000000..69ea675978398f999b76f1719360121f06ee2b93 GIT binary patch literal 367 zcmV-#0g(QQP)u1 zmZ6~Qa5SBbU%qQaBl{CyH;kkpb}Lk6PfX0|e%y|1V{Sm1OTwJ%Qg!!8NPK$mzefy+ z7#Y-dNRG%YQ*|?;&4*F4(UE^f6bABVL_r+Ga3~!lR5!(AiO;9EJNbQOtTTqJva^;w zM@jNkRS}_#u2M0iMV98-Tx2a61KuMn)93<-z-S9q=h;c2>N>Bn=?;oPr$TQ~b^mRA z{87Nxww#5MCsMh9wSh3=(&8Gv!w)_Wjt21gF0ba7zQ&@~AzDQU@C!2;c@yQr#9IIW N002ovPDHLkV1g-)7`_((fOi`CvX4 zRL$$Rm>KuO<84k@6CJs)=X4WEqE<90WtPeSv@rP7rU^W0-I#4uLnIch742NT@@zOt zb>Wq^5kRPf86hVcNQn3znA7M|7Cw^+V2riD7sD_ky~mK2YDnYU)N)HVMCTEMhq)`- z78AK%D47P-q1PS1VZsH)na43w*#X7C+;CggjI;SC#YyM)G?Gx@@2{?Uk}d&gqtHkX zZ4n?^PLbAsQ#ZX_9vC^WfojPw9Ea31ITkUHNt#tp&O`%!3H<;#ActYJO|&rp0000< KMNUMnLSTXvyq%T+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/dj.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe7b82cf6ec1e92604b276d68d5eb7bad1d88b9 GIT binary patch literal 430 zcmV;f0a5;mP)2LkIX}!}7DY`V6w=_TLt8joqo1S6uOga5-=G#36A~n85rmfhK)LA9(I}33 zjN|)0&wV$j6kOa~!^Pd~eDTY7^nWux2B-uQ5tLAbMxhcaMWawD8f$564@Z1DmScUip-EA6{(Af9(Ufhfam7i?|Xh8Th{tu{ngppkB2|2Yf-7HMWwn<-jE2-P<+TJ?dT0UMr8Xc9U{P$g}OQ?o2 zoIopSpuy|Go1K&Qz0Sl`Z>p+R)o@&HDAJkAbW&(n`YTJHml!|?0s;g91$6BJK)^VE Y0esV5BjJ28!~g&Q07*qoM6N<$f|YyA6aWAK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/dk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..622cebd2ce6885bf0f304ac418f32853177b2264 GIT binary patch literal 352 zcmV-m0iXVfP)$D zJ5B>p44n6N3j~Tpg_L3&Zoom{AhgisRw;9cTp?A+E_(og^6427 zijbs;*gWK6FH%O)WR_$dhHM>>nxaVnl9HA!lqO@Ei7cc|2@!IaJLr;BtM+>sL6ezC zn1K|TK#7P_iX=&`yfW34-zc??yIqeT9|WQ0=|2=HGy84V&2DdFvyr>ZPFE|9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/dm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..c49785d5ba9588451cb416df1874e9dc09c79a65 GIT binary patch literal 508 zcmV zY%(DPFmY-EfI`igm^f$H*;Opof*>edEU;s7%ud9~?9Q(awOc232KnB>0^&&wV5 zD872euS{o^9kX!M6M^8vL81CjdSLB$d|GmYPYQ$WBell0g$)uSN1_6Pr)79MV#uHW4kVoC*nmFye26+}R%Rz^3PA`08~3Jr#Y9xZ$=jnmG?2bI`t$YUxmU@Bj1yH= yQ*{b~ha3M5+0iSvvHLix)oOGp+H^Z70R8|?oh*!C>j8fN0000*p8% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/do.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/do.png new file mode 100644 index 0000000000000000000000000000000000000000..46230992f8b71bde1e8959006297cf11fb146886 GIT binary patch literal 368 zcmV-$0gwKPP)Qr_)gM}v$f)_}a-V3CN-AZafS-a%Tycvss zBe8Ib;qjPx1M|k}%>^FNGRm-jetZ8+yYB~w1`OyC&j3E1zYUPU9XqnuPcY{7^V8Fi zkwRJuxxKuc0VMeG>#i4dyE~oCZf>_JhUKb|tK(w>a~lb|(@wY5k?bUKs={(HRVF7= zzzkV_P-}0PM>4HaZ+&t z-G{G|sg_Ln<%_3ZK7O7IWFIP5r7HK8`@8BaYRZ(Q?lz#=z`i(gak?srlj8oiy47j_ zHBi%LGsvhd4suMZX^hR$y4y>2w$%YVZvK7b!mntpPzWDU`W?%5?>CQaD?yK1YZZ@~ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ec.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ec.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca13865ff24117c974cdabd10bee54385c5f8c2 GIT binary patch literal 355 zcmV-p0i6DcP)Ny8`mc_wEN`= z+Q;3!AK$jXEJ{p>7Nu6pjhyUOI4gcWLOI{kHc*tUS>yBXG2 z!b)i*z)CT!h#^Bk%I)8;z;F%_@LTbf!7H->JOTV{fg=J?zBvE@002ovPDHLkV1hlY Bo8SNd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ee.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..17393b8b0042d4f3911dfc81f2dcb775afb8f057 GIT binary patch literal 297 zcmV+^0oMMBP)dsCnO4R3Dyb6q^H^W@ZK!9x&$%1n(upWJ)Y&| zB*Q{PL#(bEbKHwnZgL4}HUsu{d?Yv|GCdMtk1$Vjcxm*}BAe&?@skAD*Ejk^Be>IJ z+>Bl=6lIHt`#TZ55Y#SVssgQ)B$_yQBc}z(QH0a8KfT)dY_P`DO|{%Luyr_yeDIUZ z9OWSVj&I==F$b6gcY?L)RiA)c?IA(JzVFMjWG0II+c2G`XIAwrzZ;4wi|sp7cd~hZvC`+{=FQRfD7#00000NkvXXu0mjfu436e=mNm>H=Je#!u49DXWA{+tI z5hhJ0=}NO^tstAjLjmp1$w_l`jNbm{d;}u6=GN(Z^RS()mKw=Y>GgK*?@L6KQUKV7 zVK_5Bmbc*J_Q3_*`ioM^YPD**cQ+YqyS`j&y~D u;e0-C0gxID1|+4Bx44+{USQO^P(1^TQT_Zn(m*^vS@EeFnBf9hrLa30=5&vUUA3(61XQhLlLM=k` zZEtIPicq(^kll3Sv0)X^-eNEFs zkepJ~1!3o|$K!M+^QjZM-EK0O)THr#i;fZvB7PN%S?3h65>nf##ByR*4MC;Vl4esz zBdJ!k=&ex5PNxb$O$iLV=xw0gmU>+(6=^gyGOrHpfygG<+d|pZ=xqpz@lE$)6 zFT>-bjX;RaRvLT{v@vjfWHLcRB>4UHw7pH>`0Wiv!N1A?ilP7z5%ZkorK9U>nw48yXtkoD!C;Up zsHP(#$Z5Y%Rl0+$>6DV0<$rW#sT!h@5*ph*e=WOLmr zND+$AJvBB4U}l+QO;_Fow03r=nidvPO258&G?N?-hs|Hgc>H*OFTmN$3(ArtNF%F+ Y9|GY-9z>%07*qoM6N<$g50a8JOBUy literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/er.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/er.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfe8106b59d59b1889a6ffd010a77b356dd65c2 GIT binary patch literal 497 zcmV4otoO#db|v!76np7 zWhq)9Ge&~sghh`18RyLN+|PSjxe|VhYk#>{`!QX`%qUs|Kmy1v0^AdTtF|$H_0Ihq z8epy9Ye%e6pyfy-jr6LX^r}YnI{RSOr9ccHZZ=Moc=D5tM_k?3kH`38NVXzTs8EEW zrj>jJgaZ&1eRPvqq}gxF=XGS0!}sjQ96ulByNbT8=z6zkpqeQN=YeQ~@?3*M3v}!^WDd>)nbMt+Of~ZwPZGtBH5hc#Sk;R(b6syr7ZwkXHLK%zde;%?JoC{N;Wvh5 z3H!xAlH9WXMN;oQyU;tj)N_8LtFN6!rxFF~&I5jh?Ux!4NdW!xK3ucYOM|2H#Y-DW zxrI1LI}nMO`fdl%#emaJ+B5LA*;nfxUcP>==?dxtN9#B5E#(22&zXhhGl1>`@c7}{ n3~pryFCtB#DX_h}*YAP<#=ssusWM>c00000NkvXXu0mjfH>l|x literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/es.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/es.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd22a445ca70d6f99d69c8ea2a067b4dc56fe20 GIT binary patch literal 344 zcmV-e0jK_nP)1gx5QV?HUPysLiR8i+aT$vAX?TW|)Gl}h%Mv{e&*GMfiZ)K~RG~m3k`-+5-uXEc zyB4;D7#)2&#mp(r6!CZR)c;dOzZT`pSyq=#=r5FxXkgR04@ zYL!`;OcGiG6+uA!+T`zz&R^BhnM)>BsSYNMV);aq00F+;d3=J8?e53heb=uZi7E_e z00_xOx9|MBm-mZj>(||5If)-`Jd*~HT=MqK^yf7BuozulwR$dfQa!Lr6y1(hZtUm8w?he@l!6kR6bTFFD^8TKomZ6h@y>Y{%TwFY^R&7FK&Uh>{JaEIT qnBh)O_r7r=63XuMk^lK|KYsvrv`VkAPjW>70000g3`gxHyQQxHLEmE^bav*+g)56>%yk zSZWDM!30xdl74ybd7g8qihBHp`*B>t_9`Z0oFoj{5E+>;z<>(KK>l48P-6V;{>?`K zA{26uuyD6*;TAG?x|3nhfafzx9rq82+hkFDgd$Lrv=rNt{v0^r4Bgyu16F`Zz z!E$5HVrJnHHYd(qyi=>yJz`Q-hy4dqMW?wn&!5EwBzL5A7wAg{*^{^3;cRK6-8(qC zv^%)cs2|?DdPB+*Q|gSzuL}TxOOz;Zn(G_w-oeqTMO^DVA09WP{0mqF3ILKxCS)n6 zqI$Kz70Ru}4=+D%pE))9bAT9uL?Cr<>B}dW$#R}!XY=Xz(~Ar({1|ngZIzmcgjs5@ z4SVm(0BU{HK0%5sbAGsU{e5%Y%`fl0DL7NkGQu3k4xkL6pkZZ2B+Owf$aQ`dOr4g@ nU@fny6GFWy~~l$0ciCTVTET32fyOurpl zTltW-Bqx5gy0yO17eSGQ(j<0UP^6%6Ek7QO7k4HPK3%@Jd;8%6kd#1&5Ol%w*}uW? zxPqi8n9ZNVmFK79932MRaViJ%Jw!LD-#^wR0TKWJfgp%O2*@IW|EPd^`1buVasU7T M07*qoM6N<$f;qvl*Z=?k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/fam.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/fam.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb9993cbb92614275569000891417e86fffcf7e GIT binary patch literal 350 zcmV-k0iphhP)}(e0W75WG+v}`*&&6J<6+kQNKRALUJA-!S9vG6@5KStnq?X-K>4$(4b=uhhTN&jPOeeGQ zS6TmetNlMR?euQ2yjC*99LdyurRtPAm9**5-VK%IAe~g8%>k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/fi.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/fi.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b1058cd49c9818d24c6cdd446dd029c9c9b82a GIT binary patch literal 368 zcmV-$0gwKPP)3qN zF-z597{=lIJ^dq*6BGyqN<%o-wc6 zl5*C^FMUEwNhE#WJ2a{y|I=FQW&#zFlw_0&>=Y!*DGF+>o2J`u9^c>G-Ro8K5m!bL z=#HIH^npz;Hr6gYd-!tFfx9^zRK>+`T-c1tFx`02i!suTbTA3$2myv;)6J2pR6$Wd z0Rbf1=dZu6ZCnHr-Fvb#%rMWlHzB7QzO*qV)@Tyjw8d(%Xou2P9b8;0LY>+{s)K`*6j6~5f)$GB<{}OS7ZnFZ zL8n*{s-U!jLqWl~S?$uKD2*mH3E%rX&p8DDYG<%uiwZ+ZJNS}t3?-jYhy1&4);2ZoTOD#hrPUfI#+5L%E=44vuQpD3@@ zg>HK$-q*YFrC6x8dZj9-^Os`vYWk#NPnZV%bC7fiLUM)7(67tOjF|et=LwUCMPnF zo?;||6F(fT>CI8BRh!MwBo?JN*2r@&uJn`&THRz2{Wf^y=;Bm>(3DP;Vi2WQdSg=% zY@fZ6X=ia_EcFaY=s060dBFmv1400000NkvXX Hu0mjf&P?=m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/fk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/fk.png new file mode 100644 index 0000000000000000000000000000000000000000..5adec9e3e216c8d1ccc331107dccac9c94593316 GIT binary patch literal 526 zcmV+p0`dKcP)d#xx_1+L2i(17gPWL&Mv5dS0h~ z{2Z^(Ci{B*TD|OcwSUGGil)4aM>@n}^huK=0m!^Ne(qQ%eQ$A7AtP$zne@ToUDf4s zJs={{kacQyzB|dSm6R(MAmdIwy1n7_t0n%GGE7pOn=AFN9qh0g1so+(#u?bQ<$L9I z(&=LofXv7&E}wKHYCmpy!j?6fFV{)}g2Q37M(Wj>XWv$qyVzT03y=YX)sk3YWl>^F zam-ej_0kzo^n5z#7kBF(|Earwn-A9|NsY-5-2Rp0F3xv%thu`-87$>@NVbSFE$326Is)hy=JCj*kJ)LCy=Xam?ZPqTIxq5La z$;Q?WN!zL(svCfWyx81Hc)xwv#AJQ*=l;<+H6{rLbr03;sEy(6r-N#ToLihT+1@>R zxwV@p&|sqGShX-VZEQrwsqb80xqD+}td?SEFhEocV|9~-le2aVcIJKj*_-c4&Yn6E zM6lxk5j}JM-qW$Vy2rxRs#dkS)van3>Q=W}q9y$YNkx}*4i6DT00000NkvXXu0mjf DZ$r3g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/fo.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/fo.png new file mode 100644 index 0000000000000000000000000000000000000000..39d2040bc6b5db568881e7294a9c44cb89d95b3b GIT binary patch literal 377 zcmV-<0fzpGP)$? zJxT*n5Xa}SPi(R&!fp(*i60O=g@uLQz`{ES3h|@1(^gMl;Q>5=h=`4C3Rx6cg9+Iv zq)6k=%$u=zF+`GIF+678e?HA3qI zA*m1|&7T+mnAwWRWaZ0I5d0+dI55V*KMcTFWAZ$oT(Mry?qPEa?$R`wzAlKch!^|< Xcrah)FTsTU00000NkvXXu0mjf(>S4> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/fr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/fr.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>og)=DW5rKc0Uol2xvm%T=mU z4UOSZs^$I?Z|K;;cF$r7tLGkNShC{O z|Bb8u{ri9W;g>}lZqHwT2gv?ErRRTNE08g1;pN`B7fzmd{I9F#-`}4THeFyyYB{*) z7_h9sy$HX8wQi;=-M`j-JblnvMwSPGkT&6yydp5E}a5&ks!usO-$O zmketXYyVH~_@9#UKR*6{WaR&l5Rg(IpMS2dzwGUQT3UWLG5M;e_f=c_XRuqVycG@` zY;FITSwPGM;=h0Y{`vdo_n$u}ufAZgkK5EU=X_M!jw@H+|9|`DXL3A9m66GBeM7K@ zzfYYU_s`raAw4T3VLgLzHiLQCy2a~3A@jMh?n75sOvy1I`;WHnFHLQrtF7#p{QUp_ z%dELC5@MRBo?{S9XPCVC^1pw7zqeN$J#f3Q;b30FVW12DhIsrAa{l-CZ+P0a(74sx z58wLx=f~>=-|V6#3{~?EOmRte&Ris@GlxfGGKcDf^VeRqN?Wvuo1DJ#l0m$fL9~ED jI9J55u6NIMSJONIJWOb+P?rm600000NkvXXu0mjfi76Tv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gd.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..9b077bb889a58320500ced1af8c7e102ec784462 GIT binary patch literal 461 zcmV;;0W$uHP)2G) zv2V`SFo?yVi%Ob^bm&GbB7((GF&QM% zn8hL;N{~ohU5Q+pp6By?pNB!>^{SHp;x??oJX|N7m?tg~JBS4W0s^W64`1Hs90Y(UEo_R`zJR&` z8M(4v=DKC7rBkD2XKh(|rc%}$*rT4F_G|+kMnD}9rOfR2nGgPA-Ispp^q8g}H&C^B z&K`8_%cd+$!%_%n06}S^J8vtcR)4F#NIBp4i~YUN_&kuMS(p{`;sG_F@Vg&+rQbW$_HF|~&+uZhqFv!f%r*R?0#<$t9+ z)DFViqw2JDWJHN&u?!`aO-(d4+p?3pbgNgaR|4vQ@xI?2-_vM{EEEx{Qlt|ioXU@H zDaR(t)s1rq zJ!_Lu7zW_`oVKvWR zEi4RMhe7aY#a^u7+<6$IX-e-IkL7cnBKFF4gdtUO#`+|+^M$awg?76wBF?#JyP9QL znx;vT^d3I=bMMw@G#U(9V<%{ml z_F(NfNmUJ0m1KUgGTZIuE6bQLr%oeFjWGab?yLlHJazLn097^3W>Z8|6$*ulh^mI= jvI4_;T|@xrF#!Jn(zZ@>A)53c00000NkvXXu0mjfFG${v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gf.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gf.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o~;gJ z06M+bCTrhS#ZnspX@GTtWeMQcs0-cx)~Ao6ba~0MM{L!y6&B$awwKbXHQ-h^pSi!$ z;g6Q`>h0Fv0MFn7fYz;xE#Rw{d~(6v#o^6swud7?R5Mr~zQ?;4`u39^D`do>o=efQ zFI2=(k;hLT`|Ag+FdQq=Xp0$YbaW~7$P-UMtROT#KRZ|Ci8pfOu||$vCrOhD1`DnL i0tR>@pIm&@0Ki{{GG%4t@;Pe&0000Bv6cq33Pk0osUc8CFpy0^|n6t3w1kudK9;sd~#?yA2SX_U?h=fSeRN^Sy>CQcs70-+73TYt%8@00LU*Eg@ zt({gAMvK-U1JdbktyErBiLbI>5J3~zfDAfa22>1i;Q%1u2Uwi0bG{A#lf6=m8_Q_u P00000NkvXXu0mjfa)Y9T literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gl.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..f22289be9de4b303a110522bd495a4a942849ea0 GIT binary patch literal 351 zcmV-l0igbgP)tidRYQa#0(c5!MR-1=)1fM>Rc5o?Y}oB`HcJg+Ar8(VF=VWuT&A`7{=w@D x@_DmfBZ~0$1`&wBxr7RsJ)k$lefrP>@DCV@TT0s}hGPH#002ovPDHLkV1mwxn4ACr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..feed27f5c5524d11bb843f69d755fecd30f00694 GIT binary patch literal 363 zcmV-x0hIoUP)_xzh2Wyganmj6(yibw@B+LQFQPU=2(@XUn?$lOa+UAQoN4j; zWeu}<&K%BR+6O>*RL!Git{Fx?3D`b50)VPi#fDr~q>@0ERAi)(?@v!B06_ZJtJtuM zEIVY8A*-|4(|eImx3&aKZ?3Ojt*;}MBmgq>7iwT7t+o44pWAZZ@7}hXU+}0?ksoY_ ziX1v}mTT?g@NW9{1wU``<8~|{M+zM(oIwf|+&6r$>DgaTMy4+lDR#oQK|EW?b1VI*y#o5QRh6C*F?p@qn(4^VjyZZo|-K4vUD(|fAoFAW0 z5EyMd-=L|oOcq&GiA7n8Y&&)t9S!@yZ=eGL`ajm3Xm$Y$`~ltmY!N-;)cgPd002ov JPDHLkV1m62r2hZ_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gn.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..3efeaa534a88d33570ce1fbb14c64009b24bab07 GIT binary patch literal 319 zcmV-F0l@x=P)X|041~Y8y9GiZBnqSmrQr_TBULKSL6dWEk=%uf7HFVILkiE>L-Br=XN_FVC(p=R z_&)>ug0}!O%<%h}_n)Dlz+f%_4-Y_Qwi#Y_Xz;fAeD>=X`gCuPG*;{J%i{%r-Ns#bNWr543yVC%+?jdtHvHFE$)>jLgb z2cWJ%qUzcKxBo?I$Bqg)a|PC37e*T4J(83v?9|b!q$Vqm$30%a*^Y!1t)fS)x;*l< zr&sBd%*{@*W5~TV0 z_BigZzAbIOx8063@Jot_$=CDnGQ9r@(+U32K`>34G}D>p&_H0kU7sGEb)1K{I_xdh zs$>>QD48+^$|X@waWe&Ui&9g zOlP9fOaXm&4_rR_`UXyvkOkH_g;bP4OBpNz{q*~nm3JR3y%tVW0Eqa#dlI*onPd4(p$ToDG~kikG|H$LBAL6GFpu!9THYng3j znUq9~G2N}MMPO#Qe=|exoSCB9Y*rfA5kwKVF;9`UY3mV&1SC?u`rak0X1xp>@+TnK zZ4u!!2$CFbPV4PXC+)IxHgosz_^V(4kJ+gxDQo8Qya2=@sV*%pM$E)qh+~x}5l?6_nlZIL_#Dctv?1oL_){}0G3N( z6h)F&=58VFZB9!N010v_NfaLA7cY+EVzDR*002qnH}4cEk&;BFIy>T@R-OYl)Sm`W zyZg4Jv9gxN$`~0-TIIuFW2f#7FP@g?^9Nfql9t!%q>i_vlmaP=yUF+cW-|^<(qnWC zRC&ElM?$3`Q5wqzwd%dsZod`^;eg?wU_Sx*zTav+1^d;`!ffWNOZA-Oyn8SdoERO+ zoK-r($yIx5GWXF*td*s#Wna*>q@^sC&kb!JHoV5e=Xict65RSANk||1M+lL^<#p4; l#8LW@T>|D`5OC*k^%v_KYfuZ&@Xi1L002ovPDHLkV1m(zq^bY_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gs.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gs.png new file mode 100644 index 0000000000000000000000000000000000000000..e37521f63be00588a33ab10d0c60310ff4553ad1 GIT binary patch literal 522 zcmV+l0`>igP)*>u4xd;(n2_to;5FZ4|dVNO59!0?8F;TIVFfRilj?L7Za3FcKTd$?sE z!-w~;wbh06RjQUf$<9{(_3Q7S-+zDqfsp@x|NgsaQ!dMY>E@@K8F`m37Wnq#@0VY! z$2p(<_}|L@KIDPzr=S0S|N8a&FT?L&e}4Y_AuB7&z`($g@X5Z@H;DJsoiF>&GHD3& z+UUI4eszMX-Et*S#zl(A+jN2HJ}>-TSy z-&!vg5UrD`E%w_ zPl%#%r55Y&A3uKoX6EPTSaI~oN0p;nwlanUhk%@vdGS@g1LvPVZ}vT7{qvjY_iv`J zSFYrq`}gY?!|&hUU%&ZeA@)k@uc{~?>zz90vHAq*hNuyE1Q#fwh^x!=BhRZ)?IX!r)? zOG@$sNuVVldqA2Y44}wAAmi`fe}Dh-0!fGlmihB*U=ayKzZviX05c0J#+izCqyPW_ M07*qoM6N<$f-Hs-iU0rr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gt.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..75e76cddb9d9914d25116182a6741f418407e648 GIT binary patch literal 333 zcmV-T0kZyyP)3SF zv27JW7=_Vqyc4_tSy-}6KtMlG@Y@Wtn$_RGT|YY@$w$BL fbou524Cd%B)c|wNQ*20{00000NkvXXu0mjf^n;Q( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gu.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gu.png new file mode 100644 index 0000000000000000000000000000000000000000..4f034bcb29c3733a526c4018978905f564483457 GIT binary patch literal 384 zcmV-`0e}99P)36g}_fYoUWA27XH5+U5`hLIiC!I5;}GI`%CsZ9z*$pdd}QG}NCE1WvW}Cq&{D zSb=HK`^qYga!W5-2D$NNj`aYp_?s&Lf4QfHty zU{%K|$l33_*j>22a`^BpEW)D;V0000396N7)ZV}oX-IUkZ=feCl~Sef4&FdTL!uBATybXR9L2rYZsKI} zWs1q1%rcx`!}c9)XwwbsO?z)_R)DiJV7iy?lY5!tfM*Pz(abr&ynV9*F!Sj%3CTo| z8C_7#)QpzpPVYWU&m>DS5|f!awCud`NA^P%@~ijyaa3hhm!isnt-IIt{UvL|k@UO@d#c>} zlTxHsb?q6soi;0L!zFtpq>(CBn^F$xNG`YBafhF*4I7!$(~)p)pXlmk?JCuB>~WGz sGGW8=3;Kd?-G^%c6c~Ik4O_U$UtzCtj$RDlasU7T07*qoM6N<$f-5wlV*mgE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/gy.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/gy.png new file mode 100644 index 0000000000000000000000000000000000000000..889b5d786ed6713818c430713c4202dec17b17bf GIT binary patch literal 521 zcmV+k0`~ohP)9qK`(vzTrV<<0G|NMb=$s(I&`T85MF=_xojL?f5^5L0OXNXXhfeL#DX>Er z1VJQ`LLJ;iBW<8Uhg&QD!URn4PfY*=Muf1;Caz7p4|J#l84Q zcjDrWl7A#$^PeuI3;XNLbuvVb*l{!z1tBm2n8Cr`O2y04`^*-HKlY!Rj|2->qPODR zL%wz8hQC|iVQRLuw&gzOj0Md2I5sv^q|WjIywJyqhkT-)RfDQ`n$q#RYSODO^VRK{ z=^0}IlNi(WH5CDi3O^ufAL4ss95AHHs-zlLeO{Aekw>RJ0BR5J5wlD($F9=w%>%nt z^*-6IV$DmhOs`c-n1|;8!>mL(kyMbbC;9TF7S;3YMvJw;i`BPtg-o{cO{jXV^DL_H z9MB>%$NZ+pCLi~7hDJ;N(O>)iFuw+w7{bgf(qCvT5z`84(A zRd(+u(Vm0!9*>9%*i0i4Il+%fbB!2>HpFW5FmuV?*}#^J7E`200000 LNkvXXu0mjfb~5%g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/hk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/hk.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3663a87cf3d3e9ba953fb89201a97607a69b8e GIT binary patch literal 393 zcmV;40e1e0P)J&;kk3#1OBs_(}Q;6b}8WJy|;&MbtMEH)dv%90XBWxy< zEhd@W{HkXlF`oSKzj6S80|^wMcA$H3005cFR0KQ}jtG$=<^Jn~Uau|ypuD?Rgd#vH zqPw}Jnd!HalQfDZGm&Lw1wa9S)HoecN-3R=c6YS4Hnq4|6{OinA|0p`P=ws!UR70d zc&L{b-P~%b=^P!+JUqPb?b&cRIxm45fILLPJsG;b*7mk~XKET{==?lCKGF=N-1Dcw z;Vzo!ugAx;fHpRisp+OYJ!RXDe;^$w34oND=xH`NKd<$5nd$OEO*7H$j?!|^-v+pg zOj6|6<72hI|JmTL^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00004fY6vSua5_4W3BN#;p*yal;$bn)y1-sOK2@4U6gFsNUNTJw>ph6&>Aoho)rHvLw zE(%(h-LU(A^JXlT>+<;Vn8)ynVJcjHgMY*@6beBh1@JUb<8OJia}9t5S(!*FX{Jdt z#T2Qan0~kWx<*k69scSwm5GJzpax1&VMfvVg%Qxz)2ExaZ>*hkX**@71zXO6a6*zL zjYl<`>zL2yk|bs3aT9xQzehyhm#*)-uA9F2`uopu+qO;9v~4?^&6b9=wr!tX#+}J| z+xwr6-hVifmSB=fXG1>hbf>Ta&Bp z2_>aW3UJDjlxE6?B+27*_4L`t3fR5>@aDI}HbTKHbSW8;g^p06Bgho#jZ5P%2Ty8% zXKGxzI0}js=|Kd=6w{d=9xMZ>fCs?JqR4WZ7+N3p%759tbi?A&(oz5b002ovPDHLk FV1id0#2Wwr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/hr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..20c66c3a60b548339358791b5a17d638c81b01fd GIT binary patch literal 386 zcmV-|0e$|7P)Y5Z$|6w6PJyE+~S3Mr>`;h=)yLlL&&4LM(!i1cap4!XlXekisVZ1B-x_nqJf* z+4*?RZITOuv%}omnfGRA_Y%03>0kV>Ct0!4umIJ_K5-0%3PUs|9}|HY%lI=G1c3uS zCQiiMvKL1k-T}XYceQtU0`lX@IKf)xY!YcboT1so-8tGVqFKSyT;PZ@fr>;? z6i$J&W&Oru)az)sQLXB57$*sWIir1j%|~*J)Ev}m=yZ&YZdb7~6R2vEvqS%Yja{jr z*F&0OG|B}LkO>Oq=bPib$>)p&EJ~u^?~}d_ou-EeS8MlgmSI&Els4BNt51pZYT05k(n_g4W@vEjH1wpFQ$6qN^H`SIbk0Z8z@?>1`GW~wiIDWoa?(SY08@7Ia8r#z@qgHbNI z(d#jRmP+!58{mB^0C%_fc#k@|B8EMkVGkMgaK@|4>!0Vhwg=A5Qjdh{5v?9EV$?k} zMVFfOInEj>WW=TM+|}e5ViKxUX%vYxWVeIiG0sv$I zEj(8N6M*%03!sxuU_*`tDN>UyH5n=7VYizA0L|x@wqZ9J8)V2PQw*!CLSC)cnJ;wu zv)xrKbup~4x|phYzJOtSi~*p#(P;Ev8DpGIr}?Fe^$x!VVSCK^(j`;2+5jdL7_F{X3?(b1$xsrT rvJ_c1Y#YG9Jy1Xa=O0i&<6GVUBIIobr=PTO00000NkvXXu0mjf`rULa literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/id.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/id.png new file mode 100644 index 0000000000000000000000000000000000000000..2f67d57320235d78e6f9b694eb5383e948e57dc2 GIT binary patch literal 301 zcmV+|0n+}7P)JHu{~kza1tQhO{~o%p0S-R zZ|hOEE(zq048rytzxX7xpFi9)-2efadvktGU`-uv%^2D=$m`?NBx4r)c$biRrZZeY zkt#y1t=94KDm%EaWLG1lLWOB?HE0c93SF zJ!(~96oujU96mvmRQ`knZ3HJGSUCV2OIteyA*0At(qu4cEWCwarB^(Bd+oKn60x{> zo`p-;_{$)6?{_OJ;9J@rzj|roi6_3#V9&+t3&02Q>66oCSs@2NtbBf#RIGIEKU@t4 zkgvaX?LOFRe{%06|NZ`%Z#T(I)$-`MVPNdETW)pbF3t2ziY~(dnpPxBR*pF};~5uS zz(B}dU24h7U7E>^3dt}KZONLRYUPNXp6Qv?(q$NkO3j{XRZqt`QZp2-v;+g8R&`ZZ zb>*0&845RUV6aiv*~7Eyl6qZMU|AM!t%Ij8py|eKSoj1#K(N8a^~dY;2j{jW+1B?j f&)&Q>n1B8NO2cxg8tPp(00000NkvXXu0mjfi2s#< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/il.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/il.png new file mode 100644 index 0000000000000000000000000000000000000000..6512bedf75359009e655ada9ce6f61d23a38912d GIT binary patch literal 326 zcmV-M0lEH(P)khw#$#??DTAla77y;;tqoPqVISb?k>wr_ zXGGBMHaq+}&iO%onZ__*dVO1$7q~1Om${pVMI;Y%S%ifwB83q4Hd30+X6=vsE81md YKPd=#5(OamQ~&?~07*qoM6N<$g1S6~b^rhX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/in.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/in.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgHJ%=P)<9)M1Mbd`u)KpR#g>t0qzyspUKPdNr-Yiee?9eul0glvL8SERugc3@$4(hEQw>x z*QD9LeP;RkmGkE>#&?f@{{7GPP;m7b?mvJ2{rUS>+V07nKM(%=WPJ7gW_9RumM!l@ zd{i|VxLE$(x%d0QBTjvNpxpasZ=D?^Wu;Sjz2nAec^{m1Wr&uoA2`_I3>|AHiKSKD0teo*h%`CWQ*CpWOje7N)O zzmkTj7{fchhnF4+^RxbuQsme zzSHMkh=_8^h;tn~{aitg_u-?@{MtJA%TB0FF%8w{JfN`k@pOg)kC`{$X(cfDw?v001Tl6yC*d0mA?Q N002ovPDHLkV1n0@Hyi)} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/iq.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/iq.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb6b878bdf98031b5bc17a1a98234ab0fb7aae6 GIT binary patch literal 403 zcmV;E0c`$>P)Wom_olmKS0#aNS!`kA(q+)Az~+Lv`uUjC7>81n208K zNp5#`$GJO21uGxJ+Xp-E&CUvfZT|4l}h-tB(o$bS&M9zCs>fr)6z1eZ6F|&pbc@nCPEceWJVrNGK6&6R4N>&jWMCY z!}|)N9wPRYJZYYtKAi`{VQ0{N?Z59{?R9-W2!d9tl{^WKAC9iyZv3#DnV8F@W-gyE ztdY@ik?MuLdZ&KZy(L3C?lwnT@dmUpzb>_0b5?oa)Y#-oCPxGd(^BGrdZRa^&P|aTRH90-ASywFXeh0gk-#?(n;Y4Uwd`7N)Z1LyeEELa%9ozLpSD(t z&!gAUaZX*rsbeN{>bhxui z?`g(Xi)qSM3*#{!9)>s9E(J2RnsvJffg%*)JXy%0>ME7b`+ILd@{^)apa`NO3PhX; sV#Gvagep`Kf&p#>*aGpl{5Jyd3(tE)9yi_@% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/is.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/is.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f546273d10864ed5781b9549f71bb52ff90d3c GIT binary patch literal 410 zcmV;L0cHM)P)00nVZH^CS130%A$1ra9)K^z1(5eIP-CkOio4&o*_ z^ajzk92^vm?@PWooafXGSwa#*8g9JC3i|rsXV+bmy1kbOB8UYMga`ycAbJ4L4)y_5 zxwST&902X`$xYELlSNsjWTooO_+1YG@UOFlssQl#81VG>dD5vO6|9uV8f~os>`_&M zswCSs({`{(r0m< zM0$M?4ltK7N0{{R307*qoM6N<$ Ef>AuUQ2+n{ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/it.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/it.png new file mode 100644 index 0000000000000000000000000000000000000000..534fd5e6573134eb4b86e189c5a89922638f21e4 GIT binary patch literal 283 zcmV+$0p$LPP)0p`^_t8%hJhFO0Ko(k$Je7I h+w%k-x7+#0GhZ%NcZ9j0{lEYK002ovPDHLkV1i97bK(F1 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/jm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/jm.png new file mode 100644 index 0000000000000000000000000000000000000000..f4012fa0dc67ea6f61ce783c76e99420b4a2b419 GIT binary patch literal 508 zcmV ze!PnR` z6zolAchp;5mG#bXqGSw6N0Ln;c0?o=mdP=uUdDd{9)Q_=(A{STc3Eo+FV|UmPEtQ~ ziQ}1woTwEy&j)?-@F{Df!~$Su3RSc`bda9kx+nFoz_7@o~2pz@A z^>2Jt;FXwMI?v`tdo*kSyoPFYoz@jAqi^zjlC$r|c$jolr*!nGU0H39*#3Q%+-lE9 y;7tr+#($i6hm!yQyRz8Jc%i^L4DZDB9sC9HFFjy{(Okd)0000@iWOMj&y zDT!Yc7M4;9$!4<&pa$SHqz!42Txe~2f6wEns%kJ8G!lS>wKZohFnn|EZg=d#c4jsJ zU}eSaw%6B9dN_2q>$CGQIuH>x0QdXubo}rD7Q6P=whs?}`jri!k$_3x-QoRxFkSqo zHP!}TJ2UG9CL&DUuCmjbqOQvSe-tSe6=p<|Vx*R5mL5+Y>jd7W;&NyHX?b#95g8Pj zjEqpo!3;^VltQ371&+3XS)hy(-$sl^0s#OYxQ1J~ysM2H00000NkvXXu0mjf=2(;^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/jp.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc03c944ba2c7ef01e988f01c0941cb932845df GIT binary patch literal 307 zcmV-30nGl1P)W2NV47>t^*l*B{^+osPeEhi2>==FNM zJoX{oIUNzuDTqc{T)EioU%A?92$7xY&vr-`RNu@lc5Ab$_846?UG9tyKcpqlEGxbG?IIqT zn4I%k7n)9;me(5H>u8ZK5mg<5^cIjL0U=m`hY&nm3gL}JwWSs)#s~`3f*OEu{N-bJ z<*BOPTy?wrk>l-tB3f@fzxSx)Ztia8X(Rn~^e*5PUOapG^(v#17NhxXTYNHRh&=4_ zTz^I@MJcAMcOQS=8>Xlr!j)!+N-?34#_y{_<3pAE)^Z0;)Wy_LAz&M*00H8B|6JxS dfB^!u@E2QRJu6jL3OWD)002ovPDHLkV1k@r#f<;} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/kg.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/kg.png new file mode 100644 index 0000000000000000000000000000000000000000..766bc89816633da5d87032bfe6d8a609ff38ac54 GIT binary patch literal 354 zcmV-o0iFJdP)cSnuP%$-xZ(*Z_EZehwhr=tfmsD94T+DK@0GBmKF!*Z=_1SHDn|sz`WL zV=D~xH}$O|HW_Jdw+1#1r1Q`{YV)4+olzQR+`x+NdqK!TQH)qWi96;A@obk{_SJ6fCR@VF zL0T4o^jD47oNtvgNd_4vzqHl@zw6J-dslxvwf+5YPcl8+mV?1Ti zTS!x3902hDIlJX>g%FEodnpPZ3PLO@D0*ns%RrsoC`c9&8c2I`pcF+A5i*K(BP?GA z`Oxhlge22oMCBf$C?cH|ZoO8fB_Hyq0Vgr ztiC!3|A+{&Fp??WqkaLj9#mXQN(dQIv?E%78+qo2I>BEB5Edjs1VrnGiGXIYrb)Bb zq7^%~D->n`699w+m<34?1(8UbU0zS8he)wfq8(O>wZo_pz;pwc28g3rIf7ao$A~vb zGjcP!dK$#C*imFHv#kJ;0gNw0*TVGM7m0H1&(d((-+!6c_{B~VX>$5J)xhGp?m+6k z_`KGYWOjj#3j>)%@4kDl?C8!_K`xKH))nRIZTAw8P9y*77a2(?s*YRI6_YQ2^fJz}M0EsAF7ZiRyb#uTV4AHKL!=2hvXP_cj;4K9BaDQi)0T>IsUavD4gy?8w zx?v{uncBRF4Od%Lfhzn*nla`$Ndws1w#Va{IS$X&&n};?c9wVbRQ46Jygvj1$>a|Z ze~fQkY{fca*1p9RZ}o-d>*i3qqiPM>D94xgbb0m-(D-9VW09uF;>kkWE$>N)q89>% zk{pH5f};}NU?_2PZh%Q^e5qx{ezVv1riQLW<2_vzTnQ9h3xSerNiKZ^?8U!RBHA`eB8sS_O_mN*#44@GM1O6oI<^(joFbN0hqNZ$GN+N1 zWJ_Dyy@nMjG1FR8%TlcG`+mNk4o$ZnkN5Q4-UQ>oGCD*+|5iW%gk(D=3n-uLBnc`Q z8yo`=Jw}h_rf3!=Da&+X9j70w+2X=ak*wG2DN+F5{M|A)i^fPZqj6g=hgR~z^?0jN zEtfB(-t617;r(T#h=|cGn%op=v|Lvh-K-ZAy!$om+;gnEyHGm3>(K5mTUK!C08#)3 zlS?K^{cCxA6(8Q=+-H*E*UKmQjHi*QKp0%yax^_%=_HJ!`_1 z5$?@uI2U}0=u-qz1emnGs8hu-_v+x(v#C})guvdOaQ_C2v%x3mAvl?k5lE54&_<@; zL*w;e>F98K5zEt0vy79YOs)oB=+uy05|BO`z)V#iKag=||3GQ>O|5b*^naqC4Nf}g zA-D(`%m5?+E}lOlG3#QQv)iYce@i^4OHR7vlAFN{X6;5J=^O|g*@0>Sc!!Ap`Ev$!0000X3tG^Fu>X1q`P(PFdj$ZHgo0W~ zst|ip5=4rUsPoGzZ@y12cE0j`>D(3T)&?`R{ zYimW**x_LuAHy7OaD#ba26tGUfJ}gGo6C|{S4s3=zk6lrXJ@P)&SI2`i&`tRp2XoHff2Mh-4_vxKiP}a&|ZSh)-Y$4?G8bEUd!K z?bX?N13^I_$FppRa+wVT(9XVZZIzhjGxpT$Z~U*Be=|R;6-|;QgwRdl-s`#qbu1QxWLpa+ zFl~DL%fo*Qb!Or2bdX^Xn!Jl)uE%LvA6T}@0XwI@xl zilT@>V|%bHVCVDsOeO=qQ$zl)(fBu!IV=Ees@;na&w)2VMU@$ghLKPT~xj!WcVjh1y%KxlizP!3P_yO9tHsE^yAa&m>lI^tm#hb x$!Uz3?V z&r8!`90&0CcYE5VPBUFv7KY}*K+vKhgboFDEP@KDL*0TPNIUe4P$3HH;H84VvQDX; zT1cJEbgiO-elBg5LShoS=6wA8c%JGH==Cx~?VTUX>QCK%d%8Rm3!yucXy5F5o{RuB z009Hv84JEnR zf@D#dC|Y0p^VR?bC{}d;JsLt~Vb(|al{;%= z#FI{x$or1Y{Ln)uw&dJp9>@YPbLsTGb=9fNd{dmfNb32Emvt3H;;}>p?MvS+Z#tst zrpIoG-44JEj7_cDEh3bjg>b;0KfIeFic{cR$Q|6*?VNXiZM$;jViJG>3hX_JiYSW^ zD|v9>*t$z?xn&dAZl*q~$kCRy=l9m^Nx}dkqAbcR%u1}p!XhNvH5hGe_WPUb78tii zgD=xj00ywky1J^A*~veSS=p(uGRvz^c=MH5+)^&kumUgu^0gK zPiW6^9LMq3_xt;5wI9FD4lJ>zky=&?xvVG$t=z_eBZZ3`#mUWWDW?@Bl#5?((xRX8 zubkvSnsJ#G`q`$*Z{N@R^L)wUQ8YUKtYW-!zZ7CMq>zvTfk1&u6ev)wqS5j4?wKWx zJk@lzu(AYH?yb}4smeIxu#Cys)9rkuU?Q^Hg=4U>>MqkE(xAqmP zDfOREcs8STI~$V@cy5wMhiM<;@n4*9vI7gsEQbB%0q4UmoJx94cgOwGT5oA_zn?T& zNjPPPty-m!olp8^Z4dChpY9&szRL$4^>Pe;h`kf}Rl*5JmV!#5Zyvel)8OAUhrKZ2 z=MOnE&(5C=t7;mFCwxHs#xsZjbu?MPKSN6gW_}MN|^o zn7_<5;cP9i>my?u`7z}?gDlSGt1o<{z=5(QR4Kse!iHOIpA8gNLcx|dJ_js&U=(K; z8D~pDq4uBa(YjLpQlLP!RHHzF0)YaRNT?^3`Uk&hT64E~tYrWI002ovPDHLkV1lPK B+W`Oo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/la.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/la.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5b62435941e6bee524046178096fe271141d7a GIT binary patch literal 415 zcmV;Q0bu@#P)V&MSg3`Sl?Z9<(n*MrZ;*hktzaYh1OLMm5lJGxW5nD& zFVEh9B)AOAzGi369LF#+Bn1r3GP-s~aFvSfRRlzo8Hj-ih}3}iHv?j?UXM$egTvfb z_vu|(B!GRwgv`WhG!`Z@5Yo)bd==_(ZKJe4Uubhe>Fg_-zhC#R}c^>(AxcL1Ik zNmduf8*mW;2{L$b$gWS~B6oJYwpo}kluz>6Y}E6bkPDE&jqEKe2n7$A@a$wXHIdPD z%uQ#OXEXi>%};~Re-XcIXLTm=DJVet7Ilcc- z`LbEuU$We4H?5}+ikv;M(#=Q+*6qP|v3mOU_{?cCChhwJ56mc$hQsti7V^2$?Rk6+ zcViC)Fuf2qn=lB9psE>5<2RUTE8w1Yt!ZEXno2|K!4(bl{uf5iL~I?qaE$-}002ov JPDHLkV1j~JvlajV literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/lb.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/lb.png new file mode 100644 index 0000000000000000000000000000000000000000..8affe4a819ea58d0e10dcba1e0ea43d1ca60d384 GIT binary patch literal 393 zcmV;40e1e0P)^?L<4dh=R|c<}LCJ2{BeaL3{vhMQb5-IxV6hq_PMSkoZMRp+uC#4+|Ud zGvDp(PKx7BU6x@MW|sZ2-*}8{u_0`Ewwyo-U}}98fHIM(2t|lg5TxiLlP(hUpC5Kg z04U42{)?m-3aZtKuG-UGtW|qaO(#%}UR{k<6#z(*0K2)r**@IW@@+Lt7h;|6a?g4wI_sg4BIOia!E$!)+o!{lfCdAbm;}9Gh;Htp7tW-kxpIUU nx*q_rAI~3|PafQrXc54F5K~0v^sbmZ00000NkvXXu0mjfb(F95 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/lc.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/lc.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9870761b5276d918c8be29ae7d52ebfb136479 GIT binary patch literal 462 zcmV;<0WtoGP)LU0D6of)BdGqn+ea<=e?RBMlkDF?mS}g#e6b=B@Je5$lLpLE7XgtQn%Nf#-@9ZthT@eZ*s5c)b?WHyV3@g$>2c^S0ZI{s!^m}w{Wg>HigQ3-v z2~ZY5h>mcCG@GT(e*XIY)!_A$t=p}6#c;U8i7-LRlq7^BC=%0}8(n;Glokth&!vCAY+OohW%RQ-vWCS17P2BY0LmmNP%>9D*ZP(G>E*k< z`{nt==I!2#^Vd>i3KJ=J0m|VDs+hu1XB~dC3rC+`x>YuA+V<&Z!!JH{kupP25VKKX zBISWmleT(gcc<3hqCd@pyXESss&besLZkq+XEmHUaU8X2eFgosUCqxXGr+NI*H?EA z&g^GPEr|g@ssCs;oPnabNCRd-h6n->;6Q?aL@=Sn|22SBxEx5ec>n+a07*qoM6N<$ Ef?7DsW&i*H literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/li.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/li.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7ad9717cc97e4a499f158132cb2dd3923f5096 GIT binary patch literal 399 zcmV;A0dW3_P){`uXP zje~C+MWzI<`HGC7s?^8F4uMjgtagAS#XKy+kd4sSkfzdqQK^UN10giS+42=ovFg);+a z{m!rb+so;d#ZRd$TeKvlXws5RNtQgjboCXU_P2{?Yd@y=epHU4iY&(eoZ_TyKER?c zfmKsuT9ITaQY_zivgVF4Z%GOz#u002ovPDHLkV1gg^q`LqB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/lk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/lk.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1412039250c4da675fd4da72e40dee212842b3 GIT binary patch literal 464 zcmV;>0WbcEP)2G) z%}x_x6b9fk(-}Lo)KWDniujYbFu|n@qb7I*Zd`Z+?%jDAUX8diUH~Q}BuJzh6%|vc z38jB9-+ABjy7YOndhdn($B>L63k6LS5rRaK3Xmww?DbYJGkcT5vhXM8$NRJX`=!aD z!a+D40;*np?f$4;eJ#wacAff}kw!|z?nbNGnPQgJb12X#>UxUSrTLG|=FNL~VWu#J zXhDT5I2~~Kx$*Gjw}b7fw{pV7$x-~;YR!%dzlGcsBt0Oy5t7ppk(!J1wdcPt+#Y>; z*J)p#_il{n9z-4r4*)K@;0mX^lv-D3dmC+&ufOWAK0fSRnbMtPp&;NM5RwrJr#nvd z{lmiD^?_L;;A8B(?b0EzFww&u$p|4S5>tt!KReCwV5xh3aMJhnLf(k}Jpah9Qij;+g%Pk8q91JKaFfBrV`90QpRG8Ja_U!d`S{{8;N zDk*b%)*{B=Z(lPD3Pa4mbTo<$OiXWY++aM*z#!At_WRj0ka-|?16>btG0pK;0uX+F^)lmO)QJ28L&%X0X8-{J=cHhAV1(~h00000 LNkvXXu0mjf?z5#p literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ls.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f46519bb63ad35dc54ad64ffcfc1b7f56437e3 GIT binary patch literal 500 zcmV2e? z&r8#B7zgn8XWx%C%gnGJYdIDnCPXB3lMX^B`x65HhM*uKI(4m!;OOEhuuF7O2s(rz zS&a@B;Z(||iLD42l*4X5|z#jG97fSUz^Xv74HmT=0 zrVEcbQ4yO)8y3Lt@5`ssqkt(D-X6Pg>ES}*!&bc&3#*~%2VcxlP+`X%AXrsRU!FKW zI$^w4!+7d>zF24W38t6^XF2ta5+M_dic^8Ws;UWkyz1-Ky(de*T5TZ(H#aFe!?r@o zOeD&pPSinQRrOC8O~3nD{43{9^h(lk-%C!eiy2^dT%3p(*WsO02ZDY2W@UP21$zy2 qP=t{j`T+|>fB*szAbDjb?4N8ESp1@7EaTz|o`no*_-9Dpgz9O~k0jx-WoHKvOwB4heO{kRTy}TqH>8 rUb@x&0xW+30e;mTOvSsoffeu{B_el2qOtO;00000NkvXXu0mjfy%CkN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/lu.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9e3d5d9a36a4eb50a918dc23ef4fddb4ddfdd8 GIT binary patch literal 338 zcmV-Y0j>UtP)DWMca%EsDTSjm%EuvHeG!gKHh79PXOm>P^s-@WG?i$7z7)9v)T zr`xSld~}G{2><|+&=NUAOSPsJYEVGKs_WC*j0-Ydsc)8UO$Q07*qoM6N<$f=RHGumAu6 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/lv.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/lv.png new file mode 100644 index 0000000000000000000000000000000000000000..d9236f966bdb5517bf01088955857f55a1ad6e5e GIT binary patch literal 339 zcmV-Z0j&OsP)t_%kir9`PMK?X39<1ChL9A26ePz_WQ&l!{hN= z*gv!L$_sEtR{?nM*RtLRK>Y#kS1SM+kr63{E9B`O?m@~u$Z!|=x?a}`0QvjznNmnW zHWwMBjG~2^$nkt0Ks^H<$?M%_au1_uqRA*TkwfwXl&|e}vRKG0GZB$MwB9m1h;C7b z!?(?*NGhddW@Z9t@NbpD;CMLH@7-=Zo5>8>?#%A@nHO$P)zRpEyDd+^!*Y4t@55bY z!LDOnz^qN__U`U^x2pk!dy>&)7G^=FS(4ennXZ%oR0EQJGo1z*E_r{l4l%W%T@NxtM&>n;9kr#l= z*QJ5L>A0Olky>ggQp8Xeo7dm#0?_E&{pQ&1VGL=aLb@29-_M&vI*zBGV}^>##U?|V zG%KYR3JZbZnPJ!)DP*d4TrQf>2x7GuIoheL6wL~mnoGwhEC_DR7zcZ1coxfIxCvy_ zJU%+^hY6eWDhnAw>uCJ1eT52TGIkrng23?O?b8t>Dxi6fssbFGa;N$LB_l!eBK?5_*4ek)Ts=EwkkKF~aDT-mHi>|3|#$2^N z|A}S*`#k_xp$eH+B4r7ZNiXel&j+gEZ>0&8m$qY~? zZ{Om}OvT*`y_nEuOQa(p^@k1P@rfpj3qO)2b-`8t;uOo2i6iD45lUpD3pNyXJCjgC r1ldSP=q&XNky$`HuNV2xj(hzA`O8|sI`WqW00000NkvXXu0mjfK@fRp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mc.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mc.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc5edb7505e779e041d2e9ecec1a7e3a96c8a46 GIT binary patch literal 254 zcmVOY(v{pN*bdU@zeKfjW1dz8 zslDC0dTG`U`Ssi1q=n5RGSEYCpo+?r6YjiTJpZ&^e>2AsZcIDX`8p$jvkcS z-FtsxrYWMysKx~rD9N?{q375KvB9D6JIjme3H y%atlup~^r9ya05}{`>px;X~LX@77?90Qd)Rx@1*joxLdl0000coWD^4~7zk zFoe;mA-s0w(o8o|79|Yf`0IC^+1Axxy5A2&*t1p-q(fLN_BYby$Sa{Bd+}`HjQ(@4a>QuT{st zJ{yJ*O?qHDEIrXxFTZ^J-zRtPod5aT!{7crI(_}Yhl|nCVcG*LqpMae7O($s`T383 z&bB-C{nP88-Hi@InX#EpEru}s{qg-UHy=iyeuSwSA=v75bY!8Za8Fs_QvUd7g#EBF!*qMln*H-s@$2srr08 zJ@Wl4q8O84G8{}s2F-^%zFyGU9^1N|~9J=|rH}?RK_pOR~LwUgHfga03Vs5P$#!0%rIIB(P&2RMN6+00000 LNkvXXu0mjftVe(Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mh.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mh.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf98c15462604543116b7833c95a7703e40313f GIT binary patch literal 518 zcmV+h0{Q)kP)1M|owQa`Ye8x$k*amcU79Yh@r zr9x>et(i&Xf(OG-}k=n=U^!X4-bcDIY%LS2YV5M7FYuI(ED1>n`4$t1*L zNDN8acu{W7#+IfJ6heoOHnUKGM8X~b$3Zyk{d;A$ZR2Qzbf|cvD>oS5u_rQi@}^vS zte~mu&BV&?wFVPiXltH ze&7&GMy<>x3%w(!?72raF#lP~EQmIeshwXax|nw2iBDYdXF@dxj%pGZpvr!iU;IK3CeR2fneMhSDkG#&+^M%Dmqh%}r>nhi<5V5fA4lWNgQWpnH{=}2z)>d`X z1iG&~n(T@g5@9w1A{J&63y`{$iDmDt?tJP1p8@?JvQG%WU)WP0keM`|82|tP07*qo IM6N<$f@x6e=>Px# literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mk.png new file mode 100644 index 0000000000000000000000000000000000000000..ee987490bee827f3aa43075267b0aefbccebc80d GIT binary patch literal 449 zcmV;y0Y3hTP)r}ir>kE56hO{hyTjg!@I*>(Jgs}mLvE=@rUB?!N1}Wxf5QJ9sVj0 z!VhGJx2id)yhWQ!G-L9YpjUh*{8@e!mTY-3d_uk$o)gQ(e@cNiq0=p%5C`O0`B^x^ zqw=QkynIhS7M>ArDhm~8^CUx4h1Ko8E!HYKh1Bd7Lxo*Jg^z_BmCKdWHG8x<&&Ju= rTp%F{9S|BCKt}qsJ3B*g=O4U!;Xchs zv+xy;02svW1#e#g*x2|7{)l;G<&LXQSAcEDr!NNvv@ALtbn>qAS?P|H?z@|tl@-XZ zzrV*bGvnqkN$*tWXQe9L%lWxs#n>5-JeqbUsYFR96<4Y^fo{VJ45LVvy!}1!TmV*t zJUy*>5b9A#r}j!n-h{Dal}qzfsHC4JEPEx<>6+50r~E9z_kE;D+AEEEdLya-6FOB< zqhSVEInvhI>$9Gg=45H;WoZyJFT@8ivtd}cgg+oS!jbRSynk~)v++0lW#4$ae`7Rq UGJS(StpET307*qoM6N<$f=k$oMgRZ+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mm.png new file mode 100644 index 0000000000000000000000000000000000000000..d931b1dbe476d4f43a9fdcadde44e503a74f9409 GIT binary patch literal 336 zcmV-W0k8gvP)Wuib~)p2idC#5)Mdwj$zUuRH&oGm68FMKYOY{_mfE zG6`U}W`cMrqk;%)f8 z`|E}pX$O*)VXwIV9RE_|9_|ipfi?H|_8tSQU@kn9GZkp$?C*z!XIw~0!kyaP$+=d6 i^uGE?{`>AY0zLsV>{b$zyAZbk0000I~Mz2 z@5RFuXV1=@nPp4ZR)-ZgaJV^j_;bh8(GAQ1=jWV}&%NCDkNwH5N^7x;y+Zqs{2@~8 zNbAeX8Gz*Y2R|FX+IP3#jWV8k zwbq)4hixi`gM=O1L$GSjwb)av|MDyX3pZM02&N0OKF%y?&tFWBg;Z=Lil^e2v^LP8 p-0l2ghi6>D(avD~jnmPM`U{>JP7=#44mAJ(002ovPDHLkV1je%pFscs literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mo.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc49f581ee49f0757c64fc0f0a20344975179400 GIT binary patch literal 456 zcmV;(0XP1MP)6zC6vfYb{t1*9Y3dRhiDD*OY}KVp(aC;j@a7;P0f^t_$imFbLyKe+F;Q;{ z1l`nBU2k@=-nn-7;+^%*8X_KVKD@W~d|Khz`CLqB1aS)2u{GG5)Dv;}GL;9H?r(Ru zTY2laJidJ9%IQ{nrPX=y{ey-sx0XkrMhS$5iV2-+GW1JE`A literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mp.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mp.png new file mode 100644 index 0000000000000000000000000000000000000000..df0c4b8c186fad44701f02f30b980b119f445f07 GIT binary patch literal 481 zcmV<70UrK|P)K3G52H8vk)`aJ|`#la(>2Vx4-5p#CCvM|EjBo}c9N`RIhb}<}5pX@m0Pfzr z2p|MALoVwN7yWF>Wx)EcftOWV|DK`(DN6Tm+=~GKVRLIo3WX7OyqxgsYLXOE7@as$ zKYw)R$+yy4Bl1)}w-0a;V8MbED4Q(W$%6aH>4%@ouhUc4pH5}1vv4Um%9Er37lFnQ zC^NIu`PTAA``P0DpmdD<+m)>cpUN4mdq?L*8sH*0nu27WQbr*@c4}s5Y&d;x_Tc>7 zWVJfn-yfXhX_Np)pi!bkTCzPhQ~I&I(P*`kmD<`;y>IT!s&5Z?FY<3gjIJ{UPb2kw zY4A|=<j|Sim XFwa04#%s(k00000NkvXXu0mjfd2ZMK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mq.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebdb3ab6c4d14d457a7629ba80dcc96795b762b GIT binary patch literal 541 zcmV+&0^2$~ zJ7|+p7zW_?{FgwICfHbGVj3#OswnLcOeUcrphE4S6a{tCA`S{JMv6{#DHI36QBhF` zMNr(uE=7$9(Lo1E(WWGr2+g1Se>vy-)H?Y*0^^IY<-&Y^&(6s0haZctzkx_?+$18? zyasenUztu%MhkOKfCfN1{JEutBjKPgmrWkar($EnQ~A_XCJDd^`?LA|kzxPIqkCu1 zWJGkwrRNs3`6k$h{$%7uER8qmSyS511AhqcRl4vS*}>CmF8Nt zm5hg&dAV3wUAHs{$CIV6jat2P>;5|dvv7TBrrEYHo| z#2{oN+4*^o#pepb6b}P4Q_KjDfhjNs0MuLt3~&wup8$(!_=U}Dn*gd;^-7PO%WkuUt+YP4x^!?+5^h8ltoSPTayPkfQx@dAlMU&+T8pZ&sdMb977L*=Nd23C# z*Tf?-v*ksSq^StR7)B6x`&c(7W>HNWuX$yMY@CI6*2yEXs2TzVS5#8h`yYCCRXijQ zsBh$VzTD77Q;hHsI0S0`EB}XoegP-IIs5_XdT3pi5%ebj0000rU;L?fu=;bdEs1iq3N^q1w!8k3sPDhnQkg@jpPhjXp*15HtbC=vUuOV|BucBxa^3X4rI_cWXgDwTGakJt$VaD7Q7 zQj35kjfpt0cdJXsM&Eq3bHNA!D;xE-vCKr$dE93>s149o1FHc_#EJLY7f#pC?Ciu_ zaeA|t7U=f(-iL245>J_~Rvw%mc^@W} n+GR%skLcQ;qyNSJ5fITY<#$Fc)@>fQ00000NkvXXu0mjfwRGeU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mt.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mt.png new file mode 100644 index 0000000000000000000000000000000000000000..837261ebc248ac590f4be39dc8608fc818028b89 GIT binary patch literal 296 zcmV+@0oVSCP)Z0sEJX7;F2 zxFZBi*Q^ z0KID*NY30DFzYw;j#>TyOg0qxr2pfcqi>9-nN3fc0rXkCDJ&r+j2p(DRg@)`ODq;J ugBeoF)xV)>8Xsh4?(TK{az6k1!tP=b!83o> z;>(8wvMj@Ihk=1@UjgC&WIeTVR#^OT2RJ-ADF6wQvP&*2Qb|RY6msG3XJ_Lh@ErS> z7r)Am6}l`_Ax(P9WF}4Cd$fHEjANW0-+%V=&!rqWmZwTG>B&%@^qi*r_`&`sTnu2( zZKw_PC`EK4M4RY@XLVMe=tO6`4cr|#_`KabxuuLv-({eXiUex_0000 z`8XE43Bki~nCi?Kp5X)t5Nzhmug!T005Ac#w7(Ak36io)hE-A|kdQ)J0{Q*$Z~_37 zfBbCoN>Wr=VK1quB8$CR-}<#2_x1!#0V*Zr?W?=1SxQ>f>eh5~F<-p<^S-6^(ZjMI zJUzNd1{edtF3Dlc=GBey`jhR)SBA?E=J#XTq?yi;T6ZWJqRWb#mv^>qtNiBV^$atY z6~V0DOWGuqRU}J~q+wGwkU{MIBJZ7P7?YZ!a6bB%r8acXx+`91+~yt2G3v?0(I* l1q|O#De4^2v;Ch&;2&wdOE8Vg`SAb%002ovPDHLkV1iklv)KRu literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mw.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mw.png new file mode 100644 index 0000000000000000000000000000000000000000..45ea61d87f19bc4a2ccb73ba52d9e6a50b814446 GIT binary patch literal 365 zcmV-z0h0cSP)-)hUJ5u*_m}=cBIErOD`_oq*>B>y_VG7qx&Ga=X{8V{mK3YpX~x{V6)lG zlB98R@;k}>do8NvQ%679C!;YS-PtK|7>AR^Fg5(00000 LNkvXXu0mjfY67Qf literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/mx.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..c78ac89691ec75b0e15637d1ec7a4872d63f18ca GIT binary patch literal 424 zcmV;Z0ayNsP)2G) z!HUgc7zXg?`{q9XV&c*eF{IH(;+=h=r08Q#PbS z$&`tbP8{$1yw78dh2O8?>OS-V|Bzp9PdmCK0FpSLZ?CTdARs`%0Q4J|ZvjoJs9auJ z>8%6a0l=Ay*RDfW(V6e=-5s#Q*!ro|l@u@_q9hix$ST{T z@u68iuy^g`_}FnvCRGw?l0XMdRTi@tO52ZLKKs09dFk}2M=zerR)jLmG!sAvL6OBQ zMuy?@XErqZ#;T387i?FgGZkqTfdPSHWiczGXnA>j@Y2OA-lYg<*s#ha0s{gm9^Su_ zl|S=$YYjka4ZB+Ji)*U@EQ=|iVFD1C0|LHd^TFn*k4S1)%w}7YNe76(I`9Yjqg3#9 S54M{C00000WbcEP)+EqJCp26L5gL&wbP|-VQc0+U-im@msZwZ!5D|$&frb##5YE3 zxI4m~SK|@v&g_iYSttIPeEH_}%QycaKs+2g*tB*{^7#rROdXD0yZ7oNk!cPb{+LawS z=zSR+GGR-`C36I0(s5{{`f6?6fLG$-G1OR}7c%+h7nRaw3}s96CgoCUycR-fgEc~m z=)zN0NH;q*8y)C9gyi!p?Z;^&(i zk**7g->`mY1@_rm)gCd7m+Nbi04gnur_&yZa}VZc(w*_9{-Wy!>grBoG4hp48R76R zCf9W+{rdrJpm(1W3B!5FeBa#(RjMIsRLl7cd;i`ck7K*hmAP80g?KIX}sf`d!IuS(CG6<%!2zD35p9c`J zOPc5dBv_0=2pPw-&)LT&7lh4PtJvlFWjwqI90w+V0Ppz!tYblWu!+Sx%k3rnoRv(G z;fj!Zy31W;xQmoC*siq&z`0Q_ZS1UHiEr~kG87C_q{yJjER4ZsxEb*Zt31uUDRJvAiaC=_F}pB%L&pY|b?8=e8J7 zU#(U)PCZ%roiBb}Jm8|)Di8m5C?h#M7y>90;NAOpdTYG*aWL46uhCy~7-0k*#)=N} zir%A70VpSddp^$PoqF2!^6`b)6R#v>rj(LWkd%>9uYc^v)`tQBBhMajjhK2gvu`O& zu_IHKNn}(<7Z!Fmi-03@j@xxM#3YbJvPuFD5S62HAdrE-p%IGaFggE5`_LE20fz)R hWRSXc2!I0v`~!AuN+V}(uf_lX002ovPDHLkV1gVEzf=GK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/na.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/na.png new file mode 100644 index 0000000000000000000000000000000000000000..d685c4973d04e946c71abc577401f291e90f03aa GIT binary patch literal 559 zcmV+~0?_@5P)0IC zUr1A77zg0r*^cwf%`w-g<+{)eEs%l+5)=fM{SP4|3nQf)yAe^LGEk!en?)fJcp*VV z7Znvr2tgR(m0g$@k&%^FQ=1J0J9G1U-|u_tc`RTM$OATD19?CJ24H{z1w;q$9Xn8| zO6w8^Fn|U0_x9`y1#(VdKAj2X);!EcYs0K}*2LwiYr9!$cPR2d-dhrSG$b!Zgp?>H zCr|x8bNqh#`S`>eq+kO~Y*OjsXf&3*SzSWQ&V^R_J}*QPh-3%4W-5Z0CfjDxpUcDL zVAz1tTJNcipKXW-N1s^_AIO>#MN(V$=ltncs}py|lCE+IM24VX14SL3J0jkkzyGp) z_$Wl;^=Es!Qi+P|)5-U9;|hulv0-f(4Ex)3%f`7WYv7u=N{FO7vDDc-QSht(-MLIY zqd=q;8)Bo`XfW*3nlevAlSE1HJ%jW?}uGXl*nUtSn#v x1AKXWceHG^Z}=iofB_W100RnOzyJ&c@ee@n6`5j<@iqVe002ovPDHLkV1gI`{L}yd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/nc.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/nc.png new file mode 100644 index 0000000000000000000000000000000000000000..88f4ea85595b0ebb0b91176a849cd50c570c1d1b GIT binary patch literal 470 zcmV;{0V)28P)F?)q)tLf z2Q|jZ(?JokIQSQ7D{WrxJ@;OR2abMxeA8J@!i5(8K?eakgdiYjZq@)c2~nKl{{q4sWDCK|#}md%t7r2f;oH0t$E_Hu>Kmqb*1 zJ(-!&TR#UMO^Z^6R3nXtMy&lB34+IY_567Ma#J_AG(wsy`fcy<;)kkQxmFs>^8gYG zsPWmSqny%Rf3~RXR{PrDZEO$KjBX^&trS3l;K7Yq2v7h8p!h$30eQJW=3WS}ApigX M07*qoM6N<$f;l2e? zJ!{ip6vpA-ll&zHq=+bzL5j2p3U01WI=lA+*wrqb-26y_A3&i)vq(2ZNFmU{$rqZ^ zJm;MIHd+c^SMwhHh7lVQbP#luDA6VAsH01Cfo?Hy4zJ$=mYRjiDwM5qTsf+6r7Ns- z#reVefeQ%x#~CVAt{}?_S2)8NuI}uPXm=l|XsfTs)7e8R09*J9{!4aQwq&b~Z=8Mp z)K;t2bUFoWV~qXfqZh}{wYQ)7$xB~rtu2?!K@#A90B?N%=J^M&!{dn`zwk9$lQc;3 z6^!x5oozpT?pXW&Bmbw_lG@Sf(ayb{UR{>4EE^fwR!U`C*2ZL*%unZyH|)RKU;J7` zMO5_ay?Q8m^~mTIp`MDY+P%Gd^6q3{M6{f3&7vYzSrLj*q%ss)navvza+F<3H==?94E8IRE#bvqW?BzYebt8(|}gqGq$%cyEMZ=)d~g=i4+ulqc#U zL?`yv`W8-O%*^;qf4)ECb;RvRuo%t{_v-9yd3L$7qzo&qPS;PJfXF_EzBXF4g|(JE zyK}K4q^K-bjImJ?)n4zEQX>N+se=LAqMD61)_CNxX8*&NEP>2;86>5W$|yV`$PkmZ z8b!{1iOxUG9-3upoAtRNx#~YdqMnCHGz3UI``IvJD?}2#RxK1!U?V z!C+J)3)o5Z1Wj`~V%Q1~t`B}4jQnd!5^hMLD+g1u9@IbM&z5LCyghuWFN}r(fY+MS zmJ<5m!4&f?Of5{0P4AxV;=VS&R>&7>FE!n_2ja-a&NgbR03jh zbP{JhtdA8+8j%V-DiSnqCA4|GxjM1Z-I)#IAd$&nZZJ;b{hR%xjU)PtZ$9f(Adzni Qi~s-t07*qoM6N<$f~0@ZtpET3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ng.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..6dcc973ed58f8f3f4053bf8db7e82c1cd351d73e GIT binary patch literal 341 zcmV-b0jmCqP)GJ^AAuo{1CRO^Bc@1B}hp@0QjfG$^aQJs-HpL-9 zB2KZ*&NB0{6W?J0ARz8O-5u>8B>|E=E|2Hm&JhF#%*;G<_2Ft=r*phJ-frGOcQ>%D z?d8WyQ5BWz`p5Om4D|i)pN?%OVblNQ`1a{`WK`<(@RTqUl6I_Eu70KAF*3?kE(SAT ztd=50|GAS4kKs|N%6cFamrItS=2e2mT1ggSMmSP5GGx73sb3^i*YJ>49-ZzN(CG}1 z>QdzVO^~%R)f>?2Qd==%W}%{!gOhSeo~8*{C$P8KJ9~fTw%d*wOniY~AXs4G=IhOF nf46>G(!=w^#peqGfZ&in(|mRyKC9Gy00000NkvXXu0mjfOS_zq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ni.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ni.png new file mode 100644 index 0000000000000000000000000000000000000000..44d8a0d3bdd998a2d65009f661279172463aa4da GIT binary patch literal 372 zcmV-)0gL{LP)Ke70+B z>BE*3FW=|%b^Kg-?bszn{-(9mghJ6}lQ?`B?>_!&ZoldJ$#8b(Bs%t)AT`Nymb*Sv zx`^kGfKO;pN(>%PP;?R{B$13FQV@|wF=UqjC~&&Kd|hM-|L}jiedQ?t*ugz7F=D&0 SSi~a$0000#G3(z}!7Rf}A2$DW;gJbf$WGrFz@jF)(2B zD7*Vun?Mc;DOAXiA21%1*xEGE7K_DnIt7pfL6E=HTAR&ggY7Y$WC_0tt&tqO4E^7q zv;;uI;l;_>@$LMzXv&=`xv1jOO}eCmt;x;#<$(L=r`JATycJz?r+cZWPA{D_?aBHo z@Hn8m~dV!~g&Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/no.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/no.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?40zRc))PE zY#xsK!V}Zyjn1NgwO|mPCNPrEQ)u3i+N)E0-7#%YlcVdZ z=5lgNCAr0-imR)N#y8aV&hsnyjsup%qCjP!q`_S&&5ne&)Ub@R6wRAhrJ^00000NkvXXu0mjfi;bY( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/nr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/nr.png new file mode 100644 index 0000000000000000000000000000000000000000..211e42bb19f061a27b3fc91c88f3c937f07f9de7 GIT binary patch literal 391 zcmV;20eJq2P)F$CFp{LF1P~%`d=OZH3-k1KL!vd1=~*KIFTZo zie%c9_qMkh08}0RIC09hJZ*>axjRMq>Xl1CZwPG2CC84G?nt3Br%k!bq=DXWQ41He z0M^Kbs&X9Lj%{f=pdBkE;CK79`*vmhAty(&5Rc%BDylG1MF}fP)D~9{R@|;{+x?y_;+MA3mS_nsk~}w@G(d5^2iU#>?+sp@Aav;P#Epjk}NT-`ae!cQ%MAGE_Rv z**@t4fChBQ?+*^YAD@2wdNd3Z&W|Wbwq)5(5>EpIl^S8^&Hm5Rv(?K>a;VJF$kr71 lEYM$XZU6Vt^Sbb_{s6oKb7HyOiJSlc002ovPDHLkV1oOXtaJbX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/nu.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f7f988f474fabbb28b5cb7c31f00da370514b4 GIT binary patch literal 468 zcmV;_0W1EAP)XQ6DYWG&gSl8_|jbD^Y2=pj9Y zmv}zzyEA9TnRh+8-A;3FzxkivoMF-E#k824${SHR;fceZ(aL$x_hzpL+a88CmKL(z zER7hvM$?1hC0u&lH#7cq6?Y?SxVitbuqJu7BUW2CHIFRvY{$_=g3*8oGM?hw6|W_Y zRjhb9e?I~2qHy=#G#nJ2d^8-*hdWYe6e?dzUn%J@=D+!lc#1RHs}Y``jrR?SS0g=> z{1EaTwKQ5G$xsinB1UT->)NYpD=WTXx7FA zN|?J??cVw9W6QhCqm%x66Ks7(dSU~oxxKCkWoSCIb{z6Rmb~hA%X3JPTGP=8APqYY zteM!vsI6c_s89#6*TK0) z1)N4lqJ}d-Wt@;mD-o9Vuq!PnE*1A|qz$*mfiz@f&|dTJCaOPRj&ujH0X{hZ0000< KMNUMnLSTaGsM0C` literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/nz.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/nz.png new file mode 100644 index 0000000000000000000000000000000000000000..be935de872823591e7f7f71ac9e4230cdaac955c GIT binary patch literal 529 zcmV+s0`C2ZP)4hhoFqMmG|fqq#t>`4Mlk`g{Q(xiNu{9ZXh(5y5LX?fgS%s)h}eSYA}V49 z6)ZaFQ0SLM2m3+O(3r%=rpZa(=Xu`OAt2puF0O031E23qzS~bec(i;!wHmgpd*vfH zhV;dAC$Bsy0WE+52HJoE6krEVr*F+YpWtM=z4je`3z=*zm3XsIU0mNM(#-n2TmI1K zZ}?1XUO%3+XRH^&)k5TNEwooRemmsF+oaF>>Q!yjCo}F8bIsp%KR&gS9L&Z6wqCj; zl*@;Qa}-PHqeDF-XATmXrO>es8%6T0mikohn<@=Vcts-uD62YlIS`FK-Eg)7-WItt z^+7wIuZLr8C3n5Gq=VVYz%_UCgsEMK6af`H)$n$m)R*NyzTa7|(#LN*E4z~Fk;O8P zJKF_QncMRg8g9RCzBR+!Ki=E3zwFz=ILGjndzpm#_-BPyN}|Zz+$<Uw5Q$Q{Lq?JAdPG{0T#s%riLeHg4KTBi5@P8}iiDJ?ZqNKMz2xa;r?)dN zquroIY%=L6kuVFhCKh605@O9P)1k3Tk>b2gix@xxz*XSj(3c9}L;F8rKm+bS_>elR T5|4?e00000NkvXXu0mjfp5FDO literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/om.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/om.png new file mode 100644 index 0000000000000000000000000000000000000000..ec95c5aeb9f7a3d0b7f320000bd360b33b6ad93d GIT binary patch literal 339 zcmV-Z0j&OsP)7-6V|V~PgQQO9X>8NR9KhVbCPgew8o`~}S&J9{P`_ek zmYrpr34U<)vI1-yo&BN(aJgK*&SpF3=g*_j!NFb?fT~aX#$vH(0px16dvWph^c3^? zpS_NzX(aUkY#bgg$K$QRz~q1J4%^KHI2{h(=JS$@O0h_j4i>`^CM&|^cEA5Howf!_ zS!7A3AR+=J$cm^=yC4B*1yrgeGfef!Vj$Q=G+b+Sne43(NJm(zh?`qR29xwUgoCD1 zC;NK5Lkqx?Ns~oJ##b*HNjhZ8sZ4nNL7PWMMOt~hLz+y=qA5$I%uHt@AvE`Z009OB lTwehJ2zUhy_+#wWz&pI`d3buklDGf>002ovPDHLkV1mtUkcj{Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pa.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pa.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a6ea5083bdd4478726b97cbff68841a5c983e4 GIT binary patch literal 390 zcmV;10eSw3P)KK$qutQ)EuSJ=?cz;6OM1P>kE2ci1$J)!T+W8W z?CpssQ+b_=iw1BA(tGVI`43|ZHJe6RCRSTrh@Ulb-sx~WRg4>kt=fx?>~Ue* zsQq~C1_O70=SL$fi6}$MC|5qv=pIv`&=_(JplYFB-|uw7@2u6*Y_vN6L|5vEm8Fnu kavnce)Z+*kC_Vw;7e9Gj3Li7IC;$Ke07*qoM6N<$g36t(0{{R3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pe.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf08251f11d5307987e52e023b43746df2e0669 GIT binary patch literal 264 zcmV+j0r&oiP)j81#0DaI2ozNAHPyp9NG>}}pvpYHX3x7h%Xb+Y=Paf|yb5{Y^D^)<< zwA~imW&$`K0avvuRx2BDvzM^2eKJ?xLVT->`O+GaDq;PUK_ zcy-(EeE>uhOa(0y$r7Pg_cOr!2jxil40fhdEP)z0JU6>$_q7{?Fi)V*u`+6x$$% zrM-*xN~}LwPg~7{-R-q<-Vda^Cxv^EoK7m6jrFT?)!esM7pvvTVydd)23XqPA9gwv zaS_JoF=k@ys8Fr4ynNkkCJvZrsaAtXP;-?aG9lvm2(C&qnwgmc;RcBLkXjJ>fA5h< ZfM5O4LdXKD002ovPDHLkV1oRcrDy;E literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pg.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pg.png new file mode 100644 index 0000000000000000000000000000000000000000..87160a51eeed46993ad6c2ca4c16c11a79cd0f98 GIT binary patch literal 438 zcmV;n0ZIOeP)52# zy=s#I7zN;yKahgdwa_{^Wbg(83dMk%xalBt5g`zWx(U)<9CQ;J?BE4RjTTfKI_V&& zix`8@;iDLwREja_ch38MN9Y~+Jh%+}01OyNAb|uD5KsaO;4kn8I0SwJKY<#6hnt(1 zfOb`(s*veOWH-o;JUa$AG)w)&k>nHj%y)D0|FVHXOhze)`=yW;&#^bS$ z9Tdg%=;$>G=`30MAfKY&sCIIBF`d={%;)pbXjGP^?RL98o6SfbN)N~z(l^qNg)$rw zKodYjNE!?V`}_OD;gF;xl9Jv@SI9e|YmxO#08Ic=tgNgQMKPI7R##VbEFvVuvF*$+ gnKv_A_)oWie?Fc$8?L=T(EtDd07*qoM6N<$f`M(r{Qv*} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ph.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..703dd735a599186163b9e8ba245bb30bb084f9aa GIT binary patch literal 416 zcmV;R0bl-!P)uC1+2?hgI~fq_v$LqrBo2m_s)A_8k_Fvy~o z77Z%R@7L+R?^Ot04);65IhS+q7phcB*=(2SgZwfU%7TfoL=2J;u+nZHRI8)SX2%$4 z4W*3MMk${tX{6G&8!2_QS`77iuaQWMb+y`y=iPU^LTi!|Qu+!hw2)c|pU2~Fy}s=b zO#)rVdB|jjbGc+ZJ|P6GREZxogSp}n9LX_;pJ$>HP)a3-^7-X-nmxKNjNki#!AD>S z6TK5X0gu2KQOk7~3x%>*Of^nBN^p9`sgzJmVru$=uG!!MGr$}uMwmsfkE6tT`Ebo9 z!$5arVv8uuiL7CRD2lrlcJ^`8fZcjfP4;Ta8a|1pfO$GQ$KEd9I)l0&qS&B`&u0xw zXrIvWEv_yp8l`cUj~cQgDd-HX1Mt@25pUsZbJhHQ^51X&M^N84Ayxav7{+4&0000< KMNUMnLSTYFRJc9> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pk.png new file mode 100644 index 0000000000000000000000000000000000000000..f20f3f6e2e58290b6b2289267ce4763542c78646 GIT binary patch literal 448 zcmV;x0YCnUP)=ubhSk0z^O>UgQ8u`r}CG>D=KNm$`n=$ z<(+as5DXOzbP|n6;1(jWoQUbM*XaugxP8BC+%yL602FY=154Pi=0E}-ynnx80F`_N zC;+8hr`vb?=qFI%n39wWgy4Rc{j0sT{nBO$6L-PQC2|*!7agaA(FFua{w#rHXahy+ z*Qbu_9B&-Q&3N;^`SAJR3!e+|dxt0`P19`4wsecBK)u~-x1L%U8f8>p*0)kyLJ3sR qM&pqT;d6icWSe~ad*H=~Um-t-%0P@Z6Df@V0000XRZ3`Cz{YkI_;xdS(Y=J%ka+3|W(Z1TkqM9OGv+437Xe82OfTC1v{-l+i`4uI_d zzy=)l9(La7V_6#Cke>&?Q$$o|`zJk5Rn-b&rH%jO4Nw&W;(Ye9IFn4TmaKHjk|k%x z>2$wb8sOW_*Q?dh0w(GAG@CCwuU3vVj5k>$2002ovPDHLkV1mCZYaRdq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa799ba7b2828c1ff5881703cad443f7af4dcb0 GIT binary patch literal 572 zcmV-C0>k}@P)!Fad1*;E9{k_@y_ z-^oMJIf@Ql{1c9n3C*_Y+^es1d-v~spXYslPoEFle--n+Q^KLa<=O4e4*?4xpbmHe z10Wy(m;eVHfIMrdsn)f7bY$$#p-DH^mmKYzm`J>P@y{C^fB&-J*G?WE>w0p(T%$An z2Zl2%KR6L7C}G=f&CKVUYq`dy$&X5|1lmYN^)(cg(^O8^Hg#n7BMcL{~pzhM67ghUsekl0I`*HT8l*Y_}H$^Zr@mP80+g< z@9EsQlKKjWOtxcaAp7f2=iHZ}i)V``F4TBH(`+dP5lFdYpC0|WQ}%Voi-Go*Bc&qI zs5`DBYm_k&0;BPw&q7xK*yUHJT6(1=~%lAz#lOTh5$YSbW3@(7QKx69v_> zq)Y3?(9DOCLczDCGqXbVDj7Ogt_TKd;7vey9l({`AL#Mz4fkqZa@cBd?D?mWmd!X5 zLcq4+;kG3h_ej8Gn?MENz&GGJCIJChfB-mP0vsTq0<-~jAn+gQnhaw|f}W880000< KMNUMnLSTZj1PCSo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pn.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..6f62a64d65028c5476d34567d7ac3270e4112ad5 GIT binary patch literal 547 zcmV+;0^I$HP)afIG7h zT&Ylq7AG zWe37S^)W>S$MvcfxY(3F3yxSqW70W({arBp-LE&V4rNYV$pVmSj;7BH274oN(M|NQ z#&qvZ)zlrwCL9a+C}_oe3grI{K4)86+&P&5*!}+c^MI0EkE;3Pi!%WxUyO}#wZ8CIr0D*%!K lJUD#hf3znLfdC```~#EIFIuRXQ)vJI002ovPDHLkV1oSA@PGgS literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pr.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf609fec44eba4a7abe9af4267ead44da88eeba GIT binary patch literal 445 zcmV;u0Yd(XP)EEEZd@#z*WB5K#JEQO3MC~;DQ;*MLM}wP@)x+_W>-Q{F4n}2*2-#| zkR-`Vrfq(|^E>Bp&X|O!Z%@y8`JA5bc^Ht|L|XubcfbPV57|YbR45q$186y%Z$~s> zoH&`uO+mIKn@gbz`%{v0B~_e6A{v+t5E0Ng}nY5|zR*^is-~bXo(U z5WT(N@fFT8TAW9%j|@hCgE97$$tXaque07B939eG9FNa5SQlx|Mm_w2xcSvgF}wW! z zJuAg=9L3N7`ZFmdi{X}syb;rlQYIzJrn~{eT`d;uHj9)}Hz_Hb)#e4To<*vJ2<4BWTd=fF*7W=e{X6rYg%YLcB!rv@+vFW=r>N{3R9l*Dfe z3ri`5WV6`>Py=up(yTN|PPFE|w(7sAs;b-V)(PPGxdNOy!SMN+8}`adzitD_%*M~1 z*Ef^y^?Y#Po!x%jHV_f@hwR6vbb`gMy|Czw^?uu~Yygb}OlEn*%S(5-c&_!Q4ZwD0 z)(H$mn7o+bUTcUtDW^viDHauGM3Q2prbni(wyx>~9){w0Y5aP6a9j}?6q$^SP{_dy uNwSnepxOpD7lBcrd?kL3j~ze)0RZphpj0tEKjEYR00008}y6ot?C=510dr9wK`A%cS<;-vlqo!mOQbn76UoHKSQh`&JG1ZN8h{sBSs59pvv zouX-piRpLGx%WCGp-T@BmowalJKP3Ofhm>=pu*oR>!nmoFx(#kh=|DW#&Of(YNU=- z$dqz5r^m+?1wfvh{@UpH{l4GpQ@gGayKkANOk>j0EXigt2%rLpNDqJh(6?H3-#F*Y z$DHnQ2Ns9{#(fM0^`I)^<`|#S-V;NhLOF@Jj?f@$Ofzr;_4n?^u zi2*B_n*s?565JOA(BJ_u2F?Kk&Vho_-^+iz$bXL4Mt1BMzZU=i002ovPDHLkV1jYa BxYYmv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/pw.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/pw.png new file mode 100644 index 0000000000000000000000000000000000000000..71fd0a48ca2684615fd95151ece072cb82063814 GIT binary patch literal 424 zcmV;Z0ayNsP)3$EyB7dt%O!(=v?EHC zL8xo#kel4nFPBC=9l+YA(`0b&@cV_MZ;Rv2+QPfl^Ubbum0SAwbV2F?$tfbZI=^)N z)cwM`nL9iC+Pe2@WwGL#Zt0d#)gdK>pler7JSeO}6xO@4dgJsH2DOH3x~7{W&Z2jfNpE<`XF@EC4gh{rJt7j9g73lYSHcmtQ>!Yjmx1mZuUPS>k)G0`Mo z@hGa_t5?u;Cu0UJ>VGR4K)(;b5+p>JfuKo{&e?N3xwxnR0QT@65r}ZkEl;b-&W)SK zIj7A{0Tn(zT-T5Q*oOar*+H_6qR@C;y{KL-OO)l*0&6h%zC2gX_0Ar8y;(p?*-*!?e}NT10YpMT5#LwEbm@<|LYXXodv%QDLuY^uGC8*wHunw04x04 zkY!Y5F?<*$bZ-xjHtt55R3=DenpB<%QwqAbUY{LbS7^lWTDJ%m3^NK+5s6WfVmLw+ q6s83rp}av55HQcJ;M^0l{Q*C3?^f~UJ{1E10000<5F5cFM2M&;B0@mHMyxDS#Ku?g8N^P65RpK# z^K+e_yPH%FchB8rzjNl!ZZR2+1ab+;!F==m7YU#Q7*~ogtwOK4Mng5Fq}u-GBL`}4ygU8NexR;k)tSj-)2T12+auev*%&QYLxkEI#3 zLpH!nlU}E7v=LNi`y;ZA28E^u9fsYTyW5TRj2fn#Z|=#4l<|}#y|hly(CN{=1B%TZ zhM9QP{qDo%+G;>#U#(iM-_^>4_Q3vHztXprH)rUe0;j!+h$MpZ_lRo pM_9NTdN>$}m%d+FTKJQ2rPr{PtY0v-w002ovPDHLkV1fXdoB99% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/re.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/re.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o`F@GLjf521W&v4|9d7Qm}Iob|P2^iAXT!n>+Vfyr=nfxaFLg z19#!#BR>Sd3ghO(<>@0ZHa6oIzQ8xnr8$8PCkx0ICcFxgE77)Jf*U z`OM@W02oZGQ_3G;+xrVt=B|X~4d}L%si-*uW>UvW%dRwC&6K5-*fsw9P=yppFu0fG zDwk5d90A*h%A8T5rW+WbQl36Jl%hUa*E9IJECqsMi07hvi(!FxFhN_7U*EqN0}F$N fzvGvC$J_h{C#`RtbM7A^00000NkvXXu0mjfZ?lsw literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/rs.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/rs.png new file mode 100644 index 0000000000000000000000000000000000000000..32f6cb945b304994d4e7c5751537f239305dfc9d GIT binary patch literal 376 zcmV-;0f+vHP)LE!klpU>x!5lKsA>0B-cAP52@B2g4sS5?zL{HI@= WiT;IonkKve0000Z literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/ru.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..096b9c44e7188d50e579c8f9f1cd41602bb329ef GIT binary patch literal 299 zcmV+`0o4A9P)!b-R^tnn=|vA})IY<F(nGlM;W2nJ$gB7%Y7ni=Q;%=8cmNb zVgD8fZ%=O_G%`fDD3m-iC0BX7W4^?}qmQpBFZU;`*X`$DET)InXM=Xyw8Ks~?UZAV zHe0{8`u=WQ8~`@%zl?xqCjP6vU%kACA)&Rj1K|16xi&zXB*x+~9^B-ob*3^avmz9; z$x1r2f|aSdex=?&!@vnnx4bY8hjP)1J@+cJCp&XW7CEt0RrO<2SfSxIum$4G^Na?d cT@*0z5BRxg!H9UPwg3PC07*qoM6N<$f>t%CqW}N^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sa.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sa.png new file mode 100644 index 0000000000000000000000000000000000000000..03cecfb8c9e916b77fbb953ab56993ca031547fb GIT binary patch literal 428 zcmV;d0aN~oP) zj+>)*U*F$cz0t`#MV2275AJT<`#k#e;_Y*%p8*U~a{AG1+MVmIT)NULdWYk~mhE&l z{ZUT}6ehYHKn{aKln)jMYlF3MJ*lm(zE|DOeD$sB77N4iaIe~vNb#&e!IZH3@l}>G z22EyeBpbGQmQPM5q^C&dfPtdR&D+h}n+xS)O6kv5{rSGjpX@wt)iN#ubOyKIY%>%J zlR4dFTlcs2zwEpG_s{@JH1ObZf0^M>R=B+#fr0I%Qj>(%M#K{_LLbFC8C{4Cz4JP* zCLTZW0dG^OgTupJ>GV(6RjroM+9M6=k+vV3H!nXw)L&d#w{Ms1?Deb#SoOLI2K}N< zclWktQac&SE^4_eY3M`nM{pzU|KgW zO&=aCd}zqE7w(oQdZZx$t5B%r^C2qC%>0_0Ymgl$Mi$N=f7NuVxmAC1(WOz!C<;Xc zfCZ>rZcW6?O#dE?d_Hxw7}>W}-PpQU*r?Rjm8YnwMA49%?SUboloLPmvcGTH1j?_! z?YL8PY1kIG+ajX%-v?`Sq!NrRNA?!KL!P~N@+)8IQR%ju6eWhDwHOV+x_IPPC~&rS zf8|p>^r-wpJbO=17d1r-g_CCLMW_*G=^g9;OG|&=el_6<{!}^*rASr5QKCo@Kj))Qo>Ua z9mPXK3bm#Tn+#^rlC|mk`MjT}!`F!5;eiL9Uk-Qz90C9$ptrjEV007!%wPww7N%%;D-=)h^pXT1k^~R}fuqUEkD$_obHbJXy6HVf zMldsj*;xmuYLvTD9~x?r%BR9No+8J-5LhU1dYXl6NIUCvl1sicRUT>-Qf&etiG_-M05A1B3p`Nr#{P zgMqmxUj#Ot@|kqez5l#Z`H{Z;k046FefyTa;yMFEIRiud{>r7dV*M4b_C53grjwC!b|t?POpG-&wTbe(=H@{`0PRXCH9uI)|)UtKzV#&j$I1 zV^Xz8tou$gFtjo-1aHsZaL<3*70=oeMH}xTs|LFJ>({TL^Daq-ZxJcjZ`OB`fuWIs z!GCMkylbA#r;gnH08#zs^Edsn!&*fLUwrud<;$1PpFgiZ`$QmOlX2;O28Lz^2GO~d zoA3Vu1EA`O2OjEW?bEC{qFj1NE_Qpvwws?mefkIn?vsH|N@NI~e;MM-FF$^U%)1)U zc*1+yMYrh}oTi+!?K@*xu-~-n)LHfWU}M$XLWk z8}{?+%7G~By<+KW@3M>~mN|@#ejWM2&_54upE^*30dD_F#E8w#ZEFmyUuY z(T4{IAXuPhclvefcBi#cEKJPXIEbQ`TFrr=1_?stqkAl_Tc`P1WEgv(st!a@Qt8!a zAuCpkvD;=AnGFuAzoy=&+H39jJMMk;RMpI?jwDIa@An-PG^Vd?a{%glIjn$H~ zlA9{3sJ2=LYUlvt&H{Cm5MkVLCmnZOah-&u+ z>t|JDQ7sp$Ar5n9&NhJK2~|yRUEOR7mu?{q_x82Rl$)kSN3vwufCsjo{vYzk$9)hc jZtUI%2-Nxv5HNth+_`y(blKyj00000NkvXXu0mjfSz4*l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sg.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sg.png new file mode 100644 index 0000000000000000000000000000000000000000..84172cae18682fcfca869831880a2df39cbd5d76 GIT binary patch literal 350 zcmV-k0iphhP)FP=Gs-IAhUW7$xmq|9$WVS6- zkiH2anY@?D4CCGb7{E0e;5}6p#}uN!FpB$5qKDls>Gk|-#rwU@GA;_*ZUd1RAhHCA zA^NxZ+=(d3GTdxvxpad;Ih)x|$2>h_{;E8W0X=&!anf$fAu0$}m2|u1@yLtC-Do7u zJ|+{PG78VDCJI=r9tqcL*YDp9hyG>pIh|JLbKP47kt$x;2GNT^j;Ia?pXUJ#q$$v? zZ8kYhZ-p8g1Cc>8t(K78eNosn4FZVkI;^#i6Dj=HLsX67U&{|XdDD)?o? w4~#MJ2a;-4UkRAY(}}-9vMvC+tG@mLUzcf2*Z}}ic>n+a07*qoM6N<$g5yb;GXMYp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sh.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sh.png new file mode 100644 index 0000000000000000000000000000000000000000..7e724d4781121b07cc73c3ca161a9410a3bd1c5d GIT binary patch literal 524 zcmV+n0`vWeP)D7z--kt2$Er+D#MD$o zAK$*`xkQt@GJ@YllviQuQYlxhmpB;mvXMAug%OKY>)5g}mAiXCcxRh-r@LDIu2>Mc zri7nPmxKC3wK-nZTI63He7G*TtSU<@scTc`0rE#q-;9F9)BdxSw$4KH`rMvVuA^h7 z`(QnG6ssD0ARpAZW?4u9@&_JVdb@f5+_y?tZpr__i`PFVx--4`Y2(;n^KfDHtM#cK1;_`;sj@g< z*;8gV=bUFkti(L|<4Cw6gtg|UGok`e0Emb&D~U2Ivk@z^5-YQP{Jg}oLn10t?Ah85 zSO7$<)|F0)D2uTei^~5xRTEKBr+fLeEP@7DNexje8GP3Au*qbVdeSqjG1 z_WT82)%*C_|M}wI-$5pstz~QLa5530D67lYfNG$lFrOz01w@dAgoMc@L`*VJM!*}w d|Lv(2fWKadTrncAD{24$002ovPDHLkV1f%dtDpb? literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sj.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sj.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?+2nvNDQF(M8A+ilC z-upmy?U^%U&b_kn_%fO2naMYEl=;X25adB*1G1LukZ5N1TO4ayF$cWl zPrN@qyZ-ph(lVsqnTgRzrf778|3N8*h;GZk?MQER`}tK#BF>Xj5M4EA7juj8ECmdb zF@%N@MN?IU8yP-#4-S)UEmdvVEDsJrc^UWgnDL31+tg*U2oN=rmIh5Zq;O3T%)Mg} zga{epg*i^8IlAIF{FZZ&SQ`+6s9B?RjCUH@At=;ux`sA4@8a_r`0N<#ZhY7)*2WIe zq%=Foav=3-uMkwb0Cka>g7Q$Nsdak2AkvAUovqaV5m`3c6OWU|!rJie&WhUr5J+6p zNeo_Nv-Qnt`#89 h?<4X8zr#Nz!52&4N4eeewA=sy002ovPDHLkV1iSV!;}C3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sl.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sl.png new file mode 100644 index 0000000000000000000000000000000000000000..c59445bc58f0a680cdc492f4b8b28e02de365df6 GIT binary patch literal 321 zcmV-H0lxl;P)RhAIQT4Iq^2(ht|Sf>bR6R-=yoik@F?tA{B9;Wy> z%pWreclag&1OTvObwGf~02Vh301l4`ib62V!zofU7-bfuxVm5E+V|OBR5L)AGiWlC zSy)l2Jn2tBK zSwhW@h!6NxNJ-L(q|S){g$PM$I(?ka$A<&myR8{sccd@ix7*!jbH3ZX znaND0sFW7WqL{4I8a2%Tc*+3HG#;O}r>4xptc5z$UGCuyKnb}0eB;m17pQ@Efl_hy TH(*S=00000NkvXXu0mjfwG)i( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sm.png new file mode 100644 index 0000000000000000000000000000000000000000..65ceb3aa4992c0563b49e9610e38f668846b1a8c GIT binary patch literal 396 zcmV;70dxL|P)5iDIhic1Gyn@e|B-Gv}7IthhB=~4$Lhe8Ku@v%4yBGIL& zpb{{k!9>jczwew5*T@AA2fo+&UZLF+h(1W>CU;qckpxl@)j2Ov5JcZE`9MJg8!-`LkuH^;c6Jta9>7Ad^a!bP18*Xv@gjDDg=i(%7!`MBcP##2 z2oA4(?69-A;3k7!b8rB|Y?wJ?xM2sJzc>dbGnw_Mp~35q561_$l~;}wJJQwVwM7gCz8Rb)@D$+VR8Q3w*q^F(sC^V_W9j#PSDQyDMUTE5}+a4#nlHPyT z-`301x_9`Wz$SQFEss4W`uL+he9=$o;oW-vK&gEt?13Go#~#;|+lijsuct@)UG?lp znVSo1U&$z{E|1j}MC$FC5_Kwb-N%mYO>kQ+jnqntRHCF-lqglPaMKO!C^SC4bF7xP zx1zNK2C>Yk>E0MvynzBkLGk?^a6R)d#XR0`yyYMMEL)MlF}zFw0000D2?QCklPIUNCk^nOWC2}aHWLa61ai}oN zvll0=HA(vU7o$WKY#D~BP-d7B${g%XN?Ia&F2L*0>?}zbrc7DtX{A_` zkxjQA+~WE!clMdYll!dy@b(J{Whzov>m^5?4Mgw1@%SD$_aLk<@$M_<45mD((yHVz zLIp>sgO5L0T?IH=^ZS&x*zyGRG*`?tE0#&Pz0b=d&dll>%=D%r2URsy%F8li`|#=$ zy%^!ccP7!dZXK!Av`J-gLh literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sr.png new file mode 100644 index 0000000000000000000000000000000000000000..764f5446943282f8990bce91e575a50060ff29cf GIT binary patch literal 370 zcmV-&0ge8NP)UL6YyKFMc+3C*HH>cyr z`f`5d06+*y07$^3Km#!L#`(`L1BsWfv|Or+vTSVbT~NvUYdFay66aVfF5kVKwKTr3 zwET*#G)|r;2MNiY;8BoC1eq#J+LI&~nH!v(1&iQza28Y&vBB;sKpC41GFS)4!N=gk zn&aTldKXY;OS6{7;hY;cW#c5wi`?duqsdcFj&50+UHtxbcy-=W6H_luI)L8R)M}yq zvALI1v(&cqz0#fnLIK!LE?3MoFPo_y}kyRK&S!R-urH$cb8f0EJ57 zqB$2Yi}lRR^C;HIC6iyKoXoFX15VxtegOay&=$8Rw%DRQ0c?K1b@vn+XJ#69S}B*5 zlF5=xrkH&8;Cb5v%5`IT{bt{`l~h_uCTTLsjBtc_XxCwM&;scFu4c~n-n*_c%T)oW zz|5$M0;?j;nGRp2?{jWPoIS^?7+ztw8y7DV z#l&6SXt?xQRA_&%5IVFp7 z&{X=^9>2STb_3X$*UIUG2ZEY4O_@x}5-3Y4r87+%W3+F9!T1qYfY^$*mH(Qj`WNsQ XjXzSD$SouP00000NkvXXu0mjf0Ykv< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sv.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sv.png new file mode 100644 index 0000000000000000000000000000000000000000..03ce5ec83c01c7ed078faec72ac1428bcbe642b0 GIT binary patch literal 373 zcmV-*0gC>KP)hQy}UJL>vl{g_&5sq{O9USe? z2SK8np8?Kvq$8c_7LK5WTetBWQ2#{_O3ntr}DcFs!Oq^LMwW zi}p6jy`883ZLooIeD?d*i}7y-Y`Y&FPLM2cXMp`=oE)EC7mb(i4>rEt)TJiWaHd8FnugTU5oeQ4nfA|2tDL=rK{yw@6>NTO(Rs?_R{%NR?{1AwG|q*!cC Tr-#oq00000NkvXXu0mjfh}WhF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sy.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sy.png new file mode 100644 index 0000000000000000000000000000000000000000..83de9ef018d6978647e4228021777d7768348bb9 GIT binary patch literal 322 zcmV-I0lof-P)S5Z)=dhMaTgK@C2SNL*sLYA$|4~uL^6hc@M1%RR`fK{5NWmy^z?IEINuMiEQO_C(f^Y&Yf!8ndN#9odG&@1$?JE(u)3q1!- U9T52_)Bpeg07*qoM6N<$g7RsN6#xJL literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/sz.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/sz.png new file mode 100644 index 0000000000000000000000000000000000000000..6e40120260e4c109ba702ffc1ded5c8d28d06a6a GIT binary patch literal 508 zcmV0&S zO-R#m7zgm@|KD%RT2U4uCGAo}Iusaq48qh_V7D$o=Zc_<9x5Dylu(!6J5`__iXw`N zAd*hrBB3`63<{hcLSky0zdbMCr`6|^9J~6i9+mzBpdbcRp$t}KMO0;0Rz%j8kOqY1 zQ>7v`Il&$Nj~Pr2L~t^|;072lFg_K=bA7q&bzlAE0J%BLp$>Cbg1D(e+yu~cZCh`+ z9d4Yo-t+S-b8~JMTz)p}m6Iq>jNSk9<Iaz{x30000`UU zl}BwN5P^ty1ZU#p{L=hc8ZQN_tJLe+cxiBW=w)43zHdPdFo6OlrUEP9S#V!8?kB(I zW6N)Xc1Qnu@j}j1XZjz%qT^k5C-U85x@}RbZzUuw60uv}d+x^6;q>;8Keca8ek6Wi z|7N3AO(wk!V#e+1^6;KPuU-AJUbSiXc2 zh}|de{K8BO(*B4cz{I##_g0{+j&RWFMV7MpY|fi(vIvO$2oVIv8bU?DEEb6GC}47wF6 zJ#`AIoxi!hJxl<0uciO^`u^F&y(D{NUA;16t1LODY{PO8F00(4y`s(x9_HLUX zN{b)N`yY2MMTE4wyc}Zyz^^~6l*y*KcR$2V%1v2T{=7*koc-cLz_5{^DsotGDv(og zrIpQ)5nb$}fl;y?*;P;hR;;*^3K%Qvv=z~mfdRSXQlyB@R>H(F(<-LPn5Me^0ghFs zGKJ*7L4jh1(t=MVM;O;%2TivGq#VDN)cnFDpdvs z4yy9`qb-$n#pd3VwmAdbHw@gibG$qXPe8--Z`j|Vj&JtwS07$Hh6D@h&<&P%Fiz>f YUpgXslIxS<_5c6?07*qoM6N<$g6I6Ep8x;= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tf.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tf.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed6bc60add9a995fe62e4d55a589f2b59bdbff9 GIT binary patch literal 399 zcmV;A0dW3_P)*$5!WkDtF6a}s>r4;ga*&o5I&Q)YSf%yFPbpxdy# zs0LCMDMiwvNf#}dGB6)e-D$g%AP6$yQ!GkUl}Sl08K@DK-EtQABvn%nOLj{l?T%zX zBQRyX_28Y*Z z&p*lm`Vi2xsU|gnt4x{{=~E|;Y~5H(`o+`DjkVS3N+tEm>0^?m(3aX-xGeVD4_~fb txv=x<)9&6kKm&07z%T!ofIbkP{0rsVTot@9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tg.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab18d070afa87ddea1b8b104d423826fd55bcb5 GIT binary patch literal 410 zcmV;L0cHM)P)v##n_i+dFRZ^rU%CclX-sX{ECD=&%w|yFj2?;S>HpWp+`sBZWFV~ zTMSq49v|?*`v64t2$&5_&uJj4S|5YJS}t2XrM{j=RU~bjG51qBF2~8?lHAOy7B8e6 z{h3Sl+IJl7CRUKJtIl=Lud|0PH76LKupCGr`jd%-*e7Wqaj3X()1z$uf>uT>=}8Nl zC8RZwI2y7eq-z8bi!a_ic}q{i&GbMa&gez!H*Fft3Tk+bQQWuaW8&F_d3)H_MRli;X!Mm8bSzX z2;rn8Ht@FJ$&vt`p8=!=C&+YykrK!xGa@6BOmaCImCOXt>e}Qklu{OpMY+9udAPs) z_*ltlrEJkuilQu9GQ+fw`}=5 z85zu4+uE+xH8QH(3kkpt@GX&y8fIu6|2w-@ML41Y%cggDadzH6IP8*1DrnLSkq(*^ zY0{EUPkYnpOQaof(|K?LC{c8k#ETlP|(n(M~;GULxqb(=x!hE zosmPyXf>MKo!z^&%`^C>XI3U7gu9O_S%j zwDTo&(&|w*RcPoPnv>gZytQ_@T&CUlPMG2vLc4%$(QRm843nEl^;voJp1eb+q1sX8 zkaS2MiAICb;$e}(H+aHff9PXYYbw-=j4dOD{}R9yzs>-l572{u;s+rPIwUDqOv3;G N002ovPDHLkV1leVqWk~= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tk.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..0440c43b42c1812685f7f7175cfed0116f29d18b GIT binary patch literal 522 zcmV+l0`>igP)hf*6^!Gf!=hx>GBl!jg0H8+L0tf5hAO#UPP*6}H&K8$%wE<=! z5jHd3Grb*ib*bfGS}LbLe(8Lj-M_TDOVmWequVdyL;!^a7YllIxMlQiAzf2`In$~V zylG$SbNx4WXX0qFRMXs81r}kL58j8ZO@HY|e)!Dc(TAsNHHcb& zS1y^_I6F9Ye&n;0AmX2V=vCDit|k4`iKzzA2-I6pwOsY)i-FP?bdDhctLn;a4i>H&*`idsWDA+G*ec5vH&I@Xu1 zuU-iz3#-)wi|y0P^{oxn-h%fA8iR3gprD`tY(NnVY9S5|3=9mS|MpuYfg{6z)c^nh M07*qoM6N<$g4<>8WdHyG literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tl.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tl.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa1b59794f0486debd7c0e8bf16a361f03bd378 GIT binary patch literal 395 zcmV;60d)R}P)l=8luQGhr5&wwiYxfG}TmLV^k!Gf=fanH0Ipm5NJW0VM9hN$l!}B{I96LLKlP>TD00x6Ff5tWOQC zg*7x=%)`t>M8YgV?$zryfX5fpj=gPen9zlmX9cZ=$d@7^B}xgA6^$Ce24IZb-{_B? z-pX*esij8J39O_f@a$L9)#;&e={tTQ?!XCznZ*95D-Qmge;tDVm#IKNLL zO_oz7uLEDdy)d%}xUM_DK-pyqAG6%KKYf0|1lG{nzacThYvYqcWx_jSia=x$ff-(A phSr`8U@rlyI~5f?@}D1j@eP%wKER4);BNo`002ovPDHLkV1ln~r^EmN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tm.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1b24dd1e1e9a9e95f690980f1515c560faa8dd GIT binary patch literal 456 zcmV;(0XP1MP)X=9IwZLI3}-t$PYKrn;LXpa-pB3`xVr)fGpkol-_~Kk7}L!$ zAqKEfd$Qcki%?D%st?oNOu6!F*t=cZ+HD=|cN%grka9X-)HWjkDDeB}Ym~Q-cit~l z&g`{6%vWb0zua6~y_w5CeLre++l_Bcx&TB72t`QJqTd~*N!V!}+`F;1eYm%N>p@hC zDoNQyqnVQ;fEWP^J|6INlxL+vj@R{fPw#Bd{rUE*)=9@m6Dd*x5W^6HCyDE?l;008M5xqb5Ca$^D-}gTqFA_M-K==av>F y(MhLV@*tN7cXtH=C}AEL<5`aLz-M3`|KTqS&_O0BCgHaL0000$7!Ag+aiHMC|()$}M#md^!k4Er6SZi}Bl0L!0N))_+g++p`ZSo6D5xm)b z&fc6#AY|AbmYw(Jy`9a0Zef3)|6Dm&9FHZzTF+WC25iW%$DC!(#4(t0$=~yNLLlJt zOP~(j?NYgnLIDy{gzXmVHBKi%dqI#Yz#>I=I&?f@I>q6DAV9MT{|*oLh~9)iaqI}P zJwb~iGg*tx2K71y1I%WweY=hK4^Gt6 zL`2A|6<7#vDx`!=%v35RZ48AWCF;_WG*_!SLs_Y%pU3d}k^lU$#u)-jH2;p|f^z@> N002ovPDHLkV1gyqppF0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/to.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/to.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0aa02145cf496ea6bdf8ffb7a1b9032f1e964b GIT binary patch literal 302 zcmV+}0nz@6P)Nklb<85JcyL%gBh5f|8Eoa1DeMu0T?91CyST^B|EN!4gHZGvAZq+r%jOTCMc8^JYid zs%=}0Ue^KW>iN6_{;di?UDvo?eLiEe!D?j#+ijAj(uB0+q2Di;su=rlK+br3_o+cj zzTHfkbkGb(m`uxMzri;4dmNA6?aKF8%5bm%AbS7+)@wHn48yh^G4_4{0IHYS46l2C zeOdx#_2Y-m(PNN?NLiN50A&{Ak$UK;M1& literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tr.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..3698f405fac5e032dca9f132fabb44b6d8992932 GIT binary patch literal 366 zcmV-!0g?WRP)8V=Ml`FKzAY8o!u|* zn^`bI$m6j*X1~9A<3S#kKF@!)N5W(xNrE&LZ5>P^iGeX<4B{BSzQJynr<&)%_Z3QX zuctKZ_qg4Ni(pwr0+#?XP0>=ogE>H^Se zF-EhA%Y~_~R~!zG;3DO@DQharC5lCi#|)!27$69+SY%-gMU5l8*p;aOW;68rC={6f zerHa10iy(NMI0dqNVRHZ5;>ie=~XIHDv1?l+Z}2%PWb$g|GcrQA6-B`Pq62Am;e9( M07*qoM6N<$g8#0bwEzGB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tt.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tt.png new file mode 100644 index 0000000000000000000000000000000000000000..4f36edb09fd5fd94f801451cd2b346395507a8d8 GIT binary patch literal 486 zcmV@P)c%F>MqtU3>>rU@! z z=1iA5U`BF<0?f?Zgu`yXpVmVg?UJOhC>nymfbZMHbdWF|YCdo5?Hv^gj%bty6-AL{ cS$%!|0l}U^X5mEtTmS$707*qoM6N<$f-Cdj00000 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/tv.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/tv.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fcffcade9531213c6ce3ab94f00c7c86f786a1 GIT binary patch literal 443 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 FV1l0aBKEzMhkLNpplTPJ~w z4d|)S=q(5XK=}R=rIhDAI5KyH7Ws016;R3;atxTyz`ymSLl6*w+636yJ9)nM z4Ut_CW#W(#QJEfXFk)&hv$XHkoazR+>yNErJA|Mn9TF4LL#U0-lLEp<)(yY|M-GBa zsdx&*C|QKn5B6k1|4ZO)zm@q%6Q_^|V|4+|f7|kAJ>8n7+Bu-&lz&AK$+lE?-+{I#~oH*&Ou{Cb z5zH`=h4-i#4!@<2HDzrGY2%-g$iE!Fg6+j%F zk|Cu=r>y#0MFtsEs!PgHSE% zhg_QBolAWEjcu|sB+01EN+W-tC0Q>__ds_9AQyabj0000tCAf&LduoT1> zL<=88#F!#Gvpde-U4puN_c4!eW@m1dd56{ufCu?0uom304t5OjC@{#uUp|3)e=ojm zPOm3Ra~}YP*#MAYiUE0y%)}%9zO4J6g?+vHyrD~52LPWE4QlWgbO2N;d7L{6tCI-PURtwhe3 zgs`aF?S7$fm&@HYn_rDaM${ohCcF9a83RPDk&lm@x>|kHnnh8mybgz^b(US2zX?0K zpRojs>ua06$DWZwO$H5xjAW#%V;R5@nZ$Hr=W5q)!bOZ`Ej~cdgoEahF^&+*9LmhB z0Qho^hXl!_20000}3-{mAhow!h3JhWb2NA&L=Whga zeb>X)J*hX3!seE?JL!Q!m;F=iWZ}!PW|D${MHnivi=rG62XlVy;=x1NKVd6g^ZN$U zXBhr2SqxgJdkQw!r&D+nY6$i}X6bnmtg`9H?D3SO?0w}Wy00y%riDOnknC0r} z{gr&W(U`qYig!47qwY4|juH9)04c3Q)-3#|djJ3c07*qoM6N<$f}&LK A82|tP literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/vi.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/vi.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0d214ae61a441b9d6a52db8cfbfe366b1e886c GIT binary patch literal 523 zcmV+m0`&cfP)3qN zy=xP37zgn0?_P3wAvx}vNU0@eQxrvPt3~jon}Rxsiz2${(5>hqIEYRGq2l7?APDN< zUmyk%wAD?pM$!lYnYqkCy%#JqRTD8~{=vyu`ke0{Z#&JKv(K%OkE`2ZE@2wU z+u3YVDHeZ8iIw$fQuc)X7)h_?Y<>NZFE1RffA?ej-t$5$bu5vYU0lpHn|)0Ie*W;* zoP+xgodV#wx9-jFUAueVx^{Kz@uQe7H~l-G7LLx$STgd6NXZxC&1Pg-I)l$YxfFPt zLeKyKNkOTeY9#9`7h0{Zu7jC&2-kH@(`04bX9XV;hC{;sxj6NR*0$aqg( z_4C+R3P7z^)rbfHGXv1GFZS;)Df)^0`0H?VHKGIWO4kd8>8Ys%GYcW4B;h!YZQDEq zfQSJm3W8u`Y038efv$_m$uz(KDwT?8G#d0TDJ2mBkW$hRh$In){s8FVCiBK!crE|{ N002ovPDHLkV1mS@^pF4m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/vn.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/vn.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cd8a151a29edb2d6cfa8b65fb6ef3ab1f774d2 GIT binary patch literal 324 zcmV-K0lWT*P)?3UlUge24O zA(@EStcsK3)>Lt1w#`EkE3Ix#!Z6&sBYe&ydYbI!HM1}le;sphLD@7sa-dzhHQ9pDoFCH_P1f5uWZ^XXlF zG-rK}{q98$SCX1igDg^6>uO;k19-b!zJ2{Lb*3?UtNukEloxV{vCxWHA=Bt+02x4d zdA;OjcKKSmd&7Uyj#9%Ztr%AYkVE0@ao@H@D?jw$iLTDz;&t{!bIQ$R=A@fBcR8P~ z3U%$b=Q({rFW#uGdH<%IDFP)@L?a@VXomZ`&CUK}WB?z(=-8xIzFWJcZYQ0-QkzjU zBWc4XIW|_ke1#0)*&^RB+r(aVJ2>B~2B&Orm~>hg3(bv%DjIAMo+ASg)o!udN#}aM zZPMxk#+nw!paoe>L4_+hDr5kAcI(8EozoBhY(Ke`Ez-&LR1t$JQpk&YxEF^ZC!oD) sZe$!d1dIcVKmY=4?OOo?00`KKzwwt%9xa+)(*OVf07*qoM6N<$f;^YRjsO4v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/wales.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/wales.png new file mode 100644 index 0000000000000000000000000000000000000000..a388a9761721c24d38da4d77e846e03c4b872db2 GIT binary patch literal 557 zcmV+|0@D47P)NklQldJUagtB1$?W2;qv7~wDdpVtYr(d5U*i(QmKjYkNi;P*tpiY?%#S|d zg?u@cYAD-Uu_&eda_k^VwF(>I9$S}8&RjShKHtNAK^1@yoCC40ljgZ@ONfRYyDB3? zZm|Y4WO#1ty}Li(ye_0a>PsU;qykV?O$^+TQqqfOWyY+}pX~85jhHX{gLZCJnwr1& zbjJ@Q{1KCgv@NIB*Viu!KTlWoZYuQOF#LY+@v!rCD$r<1o5^xfj=c}*#{HIbbI0~n z=A}~Ci@rUV^3~bSzEV{2*FvP{U6oTQP+Ktgnh7iDEu2Yc^QLUCTY2;9sLD7tD(tM1#lm}s^gl?NyY4jmjq@URgb>;$cYFZX03hWB_IsaC0Hi7vXEBEB&FQL4}*acXg2owWWp$oq|@$)!xsx=a6%a+KnQAr$s}k8 zA+!o`DmYh#fKVg4k?M9snT$Ig+x2rC>QsuLO$23zVIbhH%Lv);bY7dypV7#!)%Gs0 zIDQ2kUe4~~N84XF&yw-Y(-X-Bo6R^OcpT1VcP#6z*^HZJtW<}^1Z0OSM+p)?r0@9pn=e13PkLo&-KTA1yg0RVEqaupR8H>dag-rJG_Oh%F6 zH=O_}0(rn4!nNzgdj`sxN>8@VdzLCiAS2xj(n4r44ap@Xpe&_|^92?#5ef(a2`Evh yR-J?bM35N?3CSgdkTj`OoE*;{nZEt6()<8^hFW15T+?O%0000Nklb>!45SJ#24bMdWT5Eck7Nn@9Dks5#u#}-UyxV$7X}Oz?bg9@2T`PQloBUHTcD@I ziKIx8lKY|?^s4v9!jQDULAiT{#;7DpDlrI2h+qI2N`aNl{(L)H0h0COokSuSnAp_F zNxfJ0upgeDt;6GfA2%C1ozNmGIw;gCMd6!~dLrmntMzx`=6Np5GK~}|t>56B8^^Iw zwHM~lV*Chl4#`$<4g7gOI@ris91h)f`!Y?Fh`?WT0aA0Ys;aK*9L8wdb{Gau@ZR5T z3=LpH(=>hG+qWW8*EQz@P7C|RWn7*M@@xN%GgdQUqB2D)>Hq)$07*qoM6N<$g2qpR Al>h($ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/img/yt.png b/modules/core/aloha/static/plugins/extra/googletranslate/img/yt.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9bacbbf7b663531afe3c2c5165f4aca13019be GIT binary patch literal 456 zcmV;(0XP1MP)ocvQh+i>-=?UMz}Ke}`AS_2?fE#ES>7`d2)Pw1QCeAZTx;r4rN9 zlyrBq~V><;tTZ@zC>5r!d2%@{oBl1NI!7(tIF1jb2VjK&Q6uIr+QUXL^yB$oq9 ziETq1Cq-i*2%uU8*9CxXx0?Wx1^~(DNv#H$P=XkU4RDrtDZ#Q3NhwYEvey8E(MS_A zm&-Mqo#0m*!1wyFx;#W-qmk!%Y$_~c_-?lY-^bBw>&1uruU;=A40NRTc9%X|uS%KO zh560REv>ak*Bpmop-`|KJBlPGw>SGJtbYE8-O@%GfVNt1C?sLPixEOUKHj%?b~s~~ zlRI^B1zKHm&fzHL{N?GHa*+Yj9mq*4r7ziE(5@Zx9Mki7o9Ur9PGfBw6 z85cq*N}aPh^nYThj3o%Cj%C}9qm{yLwgWO?vb?%72nODwH* y{uzAV&puMiPN$=%AB@A08YST@Cd6QIZcdB_%1JZ$f~`TPF)b%-57~E(D`0$RQ@s{K5gD1U00RRB~ z4`y`Fl8xVm@{6Y8vG;Ehuiu(?GZ2a}$C#r;j@dO_otiRRzMC2^k zr`Ls5GxO0E=Nyr<l>HGzIwlFGLju1?iU)5Wkk25Qk(eDas`OAadNHZBKsOGXR+7>2y$D zj$J%jyY(|!Ru{MqDksk}g>mK<4SR%Xp)Qu+K#qy4y?_q}MWw`=ua`@r*usobZk z-;6FVMWoD*Sw)6i)H{g`*a4NyWLJFiDS1NZ`|H}{&&k%S!<=; z~p;Ha3t0)qN1Yn?`Xnk#czGVJ) z$EU9G)C%{;2lE zyVHW|>h`~hMcDFF_u5zR4*`Qp+q;wklK=n!07*qoM6N<$ Ef_gL2_W%F@ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/lib/googletranslate-plugin.js b/modules/core/aloha/static/plugins/extra/googletranslate/lib/googletranslate-plugin.js new file mode 100644 index 000000000..2a9bace3e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/googletranslate/lib/googletranslate-plugin.js @@ -0,0 +1,202 @@ +/* googletranslate-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * register the plugin with unique name + */ + +define([ + 'aloha', + 'aloha/plugin', + 'aloha/floatingmenu', +], function CiteClosure(Aloha, Plugin, FloatingMenu) { + 'use strict'; + + var jQuery = Aloha.jQuery; + + + return Plugin.create('googletranslate', { + + /** + * Configure the available languages to translate to. A complete list of supported languages can be found here: + * http://code.google.com/apis/language/translate/v2/using_rest.html + */ + translateLangs:[ 'en', 'de', 'fr', 'it' ], + + /** + * Google translate API key + */ + apiKey:"AIzaSyBgsTE6JQ5wsgERpi6m2xBY-9pCn2I5zcA", + + /** + * Initialize the plugin + */ + init:function () { + var that = this; + + Aloha.require(['css!googletranslate/css/googletranslate.css']); + + // use configured api key + if (this.settings.apiKey) { + this.apiKey = this.settings.apiKey; + } + + // create buttons for all translation langs + for (var i = 0; i < this.translateLangs.length; i++) { + FloatingMenu.addButton( + 'Aloha.continuoustext', + new Aloha.ui.Button({ + 'iconClass':'GENTICS_button GENTICS_button_googleTranslate_' + that.translateLangs[i], + 'size':'small', + 'onclick':function (a, b, c) { + // determine target lang using the icon class + // there should obviously be a better way to + // determine which button has been clicked... + var targetLang = a.iconCls.replace("GENTICS_button GENTICS_button_googleTranslate_", ""); + that.translate(targetLang); + }, + 'tooltip':that.translateLangs[i], + 'toggle':false + }), + 'Translate', + 1 + ); + } + }, + + /** + * translate a text using the google translate api + * @param target language + * @return void + */ + translate:function (targetLang) { + var that = this; + var tree = Aloha.Selection.getRangeObject().getSelectionTree(); + var tSource = new Array(); + var c; // the current item + for (var i = 0; i < tree.length; i++) { + c = tree[i]; + if (c.selection != "none") { + if (c.selection == "full") { + tSource.push(jQuery(c.domobj).text()); + } else if (c.selection == "partial") { + tSource.push( + jQuery(c.domobj).text().substring(c.startOffset, c.endOffset) + ); + } + } + } + + if (tSource.length > 0) { + var qparams = ""; + for (var i = 0; i < tSource.length; i++) { + qparams += "&q=" + tSource[i]; + } + + jQuery.ajax({ type:"GET", + dataType:"jsonp", + targetLang:targetLang, // store a reference to the target language to have it available when success function is triggered + url:'https://www.googleapis.com/language/translate/v2' + + '?key=' + this.apiKey + + '&target=' + targetLang + '&prettyprint=false' + + qparams, + success:function (res) { + // handle errors + if (typeof res.error == "object") { + that.log("ERROR", "Unable to translate. Error: [" + res.error.code + "] " + res.error.message); + return false; + } + + // translation successful + if (res.data && res.data.translations) { + that.applyTranslation(res.data.translations, tree, this.targetLang); + } + } + }); + } + }, + + /** + * apply a translation provided by google to the current selection + * @param translations list of translations provided by google + * @param tree the selection tree the translations will be applied to + * @param {String} lang language the content has been translated to + */ + applyTranslation:function (translations, tree, lang) { + var key = 0; + for (var i = 0; i < tree.length; i++) { + + var c = tree[i]; + + if (c.selection != "none") { + if (c.selection == "full") { + this.replaceText(c, translations[key].translatedText, lang); + } else if (c.selection == "partial") { + var txt = jQuery(c.domobj).text(); + var pre = txt.substring(0, c.startOffset); + var post = txt.substring(c.endOffset, txt.length); + this.replaceText(c, pre + translations[key].translatedText + post, null); + } + key++; + } + } + }, + + /** + * replace text in a selectionTree + * @param selectionTreeEntry a single selection tree entry where the text should be replaced + * @param text replacement text + * @return void + */ + replaceText:function (selectionTreeEntry, text, lang) { + // GoogleTranslate API will trim spaces so we have to check if + // there was a leading or trailing space + // check if the first char of the original string is a space + if (selectionTreeEntry.domobj.textContent.substring(0, 1) == ' ') { + text = ' ' + text; + } + + // check if the last character of the original string is a space + if (selectionTreeEntry.domobj.textContent.substring( + selectionTreeEntry.domobj.textContent.length - 1, selectionTreeEntry.domobj.textContent.length) == ' ') { + text = text + ' '; + } + + // special treatment for text nodes, which have to be replaced + if (selectionTreeEntry.domobj.nodeType == 3) { + jQuery(selectionTreeEntry.domobj) + .replaceWith(document + .createTextNode(text) + ); + } else { + jQuery(selectionTreeEntry.domobj) + .html(text) + // set the language attribute for non-text-nodes + .attr('lang', lang); + } + } + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/googletranslate/package.json b/modules/core/aloha/static/plugins/extra/googletranslate/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/googletranslate/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/headerids/README b/modules/core/aloha/static/plugins/extra/headerids/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/headerids/css/headerids.css b/modules/core/aloha/static/plugins/extra/headerids/css/headerids.css new file mode 100644 index 000000000..f612bd5bf --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/css/headerids.css @@ -0,0 +1,14 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ +.aloha-headerids-label { + margin: 5px; + display: block; +} + +.aloha-headerids-input { + margin-right: 5px; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/headerids/lib/headerids-plugin.js b/modules/core/aloha/static/plugins/extra/headerids/lib/headerids-plugin.js new file mode 100644 index 000000000..9b7827798 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/lib/headerids-plugin.js @@ -0,0 +1,169 @@ +/* headerids-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'jquery', + 'aloha/plugin', + 'i18n!headerids/nls/i18n', + 'i18n!aloha/nls/i18n' +], + function (jQuery, Plugin, i18n, i18nCore) { + "use strict"; + + var + $ = jQuery, + GENTICS = window.GENTICS, + Aloha = window.Aloha; + + + // namespace prefix for this plugin + var ns = 'aloha-headerids'; + + + // ------------------------------------------------------------------------ + // Local (helper) functions + // ------------------------------------------------------------------------ + + // Creates a selector string with this component's namepsace prefixed the each classname + function nsSel() { + var strBldr = [], prx = ns; + $.each(arguments, function () { + strBldr.push('.' + (this == '' ? prx : prx + '-' + this)); + }); + return jQuery.trim(strBldr.join(' ')); + }; + + // Creates string with this component's namepsace prefixed the each classname + function nsClass() { + var strBldr = [], prx = ns; + $.each(arguments, function () { + strBldr.push(this == '' ? prx : prx + '-' + this); + }); + return jQuery.trim(strBldr.join(' ')); + }; + + return Plugin.create('headerids', { + _constructor:function () { + this._super('headerids'); + }, + + config:['true'], + + /** + * Initialize the plugin + */ + init:function () { + var that = this; + + // mark active Editable with a css class + Aloha.bind("aloha-editable-activated", function (jEvent, params) { + that.check(params.editable.obj); + }); + Aloha.bind("aloha-editable-deactivated", function (jEvent, params) { + that.check(params.editable.obj); + }); + Aloha.bind('aloha-ready', function (ev) { + that.initSidebar(Aloha.Sidebar.right); + }); + }, + + check:function (editable) { + var that = this; + var config = that.getEditableConfig(editable); + + if (jQuery.inArray('true', config) === -1) { + // Return if the plugin should do nothing in this editable + return false; + } + + jQuery(editable).find('h1, h2, h3, h4, h5, h6').not('.aloha-customized').each(function () { + that.processH(this); + }); + + }, + + processH:function (h) { + var that = this; + jQuery(h).attr('id', that.sanitize(jQuery(h).text())); + }, + + sanitize:function (str) { + return (str.replace(/[^a-z0-9]+/gi, '_')); + }, + + //ns = headerids + initSidebar:function (sidebar) { + var pl = this; + pl.sidebar = sidebar; + sidebar.addPanel({ + + id:nsClass('sidebar-panel'), + title:i18n.t('internal_hyperlink'), + content:'', + expanded:true, + activeOn:'h1, h2, h3, h4, h5, h6', + + onInit:function () { + var that = this, + content = this.setContent(' ').content; + + content.find(nsSel('set-button')).click(function () { + var content = that.content; + jQuery(that.effective).attr('id', jQuery(nsSel('input')).val()); + jQuery(that.effective).addClass('aloha-customized'); + }); + + content.find(nsSel('reset-button')).click(function () { + var content = that.content; + pl.processH(that.effective); + jQuery(that.effective).removeClass('aloha-customized'); + that.content.find(nsSel('input')).val(that.effective.attr('id')); + }); + }, + + onActivate:function (effective) { + var that = this; + that.effective = effective; + that.content.find(nsSel('input')).val(effective.attr('id')); + } + + }); + sidebar.show(); + }, + + /** + * Make the given jQuery object (representing an editable) clean for saving + * If the headerids plugin is active it checks the current editable and + * generates ids for headers. + * + * @param {jQuery} obj jQuery object to make clean + */ + makeClean:function (obj) { + this.check(obj); + } + + }); + }); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/ca/i18n.js new file mode 100644 index 000000000..5c58755fc --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/ca/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Objectiu", + "headerids.button.reset":"Restableix", + "headerids.button.set":"Estableix", + "internal_hyperlink":"Enllaç intern" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/de/i18n.js new file mode 100644 index 000000000..224dceb22 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/de/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Ziel", + "headerids.button.reset":"Zurücksetzen", + "headerids.button.set":"Zuweisen", + "internal_hyperlink":"Sprungmarke" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/i18n.js new file mode 100644 index 000000000..1caefb986 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/i18n.js @@ -0,0 +1,15 @@ +define({ + "root":{ + "headerids.label.target":"Target", + "headerids.button.reset":"Reset", + "headerids.button.set":"Set", + "internal_hyperlink":"Internal Hyperlink" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/mk/i18n.js new file mode 100644 index 000000000..335518923 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/mk/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Мета", + "headerids.button.reset":"Ресетирај", + "headerids.button.set":"Постави", + "internal_hyperlink":"Внатрешен линк" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/pt-br/i18n.js new file mode 100644 index 000000000..2460288f4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/pt-br/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Alvo", + "headerids.button.reset":"Resetar", + "headerids.button.set":"Definir", + "internal_hyperlink":"Hyperlink interno" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/ru/i18n.js new file mode 100644 index 000000000..6a89c7c52 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/ru/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Цель", + "headerids.button.reset":"Сбросить", + "headerids.button.set":"Установить", + "internal_hyperlink":"Внутренняя гиперссылка" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/uk/i18n.js new file mode 100644 index 000000000..12bac6fef --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/uk/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"Ціль", + "headerids.button.reset":"Скинути", + "headerids.button.set":"Встановити", + "internal_hyperlink":"Внутрішнє посилання" +}); diff --git a/modules/core/aloha/static/plugins/extra/headerids/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/headerids/nls/zh-hans/i18n.js new file mode 100644 index 000000000..9e699eb73 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/headerids/nls/zh-hans/i18n.js @@ -0,0 +1,6 @@ +define({ + "headerids.label.target":"目标", + "headerids.button.reset":"重置", + "headerids.button.set":"设置", + "internal_hyperlink":"内部超链接" +}); diff --git a/modules/core/aloha/static/plugins/extra/hints/README.md b/modules/core/aloha/static/plugins/extra/hints/README.md new file mode 100644 index 000000000..fe85557be --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/hints/README.md @@ -0,0 +1,12 @@ +Alhoa-Editor Hints Plugin +=================================== +This plugin will allow you to display tooltip hints besides editables. + +Usage +===== +Just include the plugin like any other Aloha plugin. +At the moment, whatever resides in the "title" attribute of an editable will be appear to the right in a fancy, semi-transparent hint. + +Known Issues +============ +* No external configuration yet (all defaults live in hints-plugin.js) \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/hints/css/hints.css b/modules/core/aloha/static/plugins/extra/hints/css/hints.css new file mode 100644 index 000000000..cd9cdb015 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/hints/css/hints.css @@ -0,0 +1,133 @@ +/* +* jQuery Tipsy +*/ + +.tipsy { + font-size: 10px; + position: absolute; + padding: 5px; + z-index: 100000; +} + +.tipsy-inner { + background-color: #000; + color: #FFF; + max-width: 200px; + padding: 5px 8px 4px 8px; + text-align: center; +} + +/* Rounded corners */ +.tipsy-inner { + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +/* Uncomment for shadow */ +.tipsy-inner { + box-shadow: 0 0 5px #000000; + -webkit-box-shadow: 0 0 5px #000000; + -moz-box-shadow: 0 0 5px #000000; +} + +.tipsy-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 5px dashed #000; +} + +/* Rules to colour arrows */ +.tipsy-arrow-n { + border-bottom-color: #000; +} + +.tipsy-arrow-s { + border-top-color: #000; +} + +.tipsy-arrow-e { + border-left-color: #000; +} + +.tipsy-arrow-w { + border-right-color: #000; +} + +.tipsy-n .tipsy-arrow { + top: 0px; + left: 50%; + margin-left: -5px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-nw .tipsy-arrow { + top: 0; + left: 10px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-ne .tipsy-arrow { + top: 0; + right: 10px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-s .tipsy-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-sw .tipsy-arrow { + bottom: 0; + left: 10px; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-se .tipsy-arrow { + bottom: 0; + right: 10px; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; +} + +.tipsy-e .tipsy-arrow { + right: 0; + top: 50%; + margin-top: -5px; + border-left-style: solid; + border-right: none; + border-top-color: transparent; + border-bottom-color: transparent; +} + +.tipsy-w .tipsy-arrow { + left: 0; + top: 50%; + margin-top: -5px; + border-right-style: solid; + border-left: none; + border-top-color: transparent; + border-bottom-color: transparent; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/hints/lib/hints-plugin.js b/modules/core/aloha/static/plugins/extra/hints/lib/hints-plugin.js new file mode 100644 index 000000000..0095dcaf6 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/hints/lib/hints-plugin.js @@ -0,0 +1,97 @@ +/* hints-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define(['aloha', 'jquery', 'aloha/plugin', 'hints/vendor/tipsy', 'css!hints/css/hints'], + function (Aloha, jquery, plugin, tipsy) { + "use strict"; + return plugin.create('hints', { + + // define defaults + delayIn:0, // delay before showing tooltip (ms) + delayOut:0.5, // delay before hiding tooltip (ms) + fade:true, // fade tooltips in/out? + fallback:'', // fallback text to use when no tooltip text + gravity:'w', // gravity + html:false, // is tooltip content HTML? + live:false, // use live event support? + offset:0, // pixel offset of tooltip from element + opacity:0.7, // opacity of tooltip + title:'title', // attribute/callback containing tooltip text + trigger:'focus', // how tooltip is triggered - hover | focus | manual + + // initialize plugin + init:function () { + if (typeof this.settings.delayIn != 'undefined') { + this.delayIn = parseFloat(this.settings.delayIn); + } + if (typeof this.settings.delayOut != 'undefined') { + this.delayOut = parseFloat(this.settings.delayOut); + } + if (typeof this.settings.fade != 'undefined') { + this.fade = this.settings.fade; + } + if (typeof this.settings.fallback != 'undefined') { + this.fallback = this.settings.fallback; + } + if (typeof this.settings.gravity != 'undefined') { + this.gravity = this.settings.gravity; + } + if (typeof this.settings.html != 'undefined') { + this.html = this.settings.html; + } + if (typeof this.settings.live != 'undefined') { + this.live = this.settings.live; + } + if (typeof this.settings.offset != 'undefined') { + this.offset = parseFloat(this.settings.offset); + } + if (typeof this.settings.opacity != 'undefined') { + this.opacity = parseFloat(this.settings.opacity); + } + if (typeof this.settings.title != 'undefined') { + this.title = this.settings.title; + } + if (typeof this.settings.trigger != 'undefined') { + this.trigger = this.settings.trigger; + } + + jquery('.aloha-editable').tipsy({ + delayIn:this.delayIn, + delayOut:this.delayOut, + fade:this.fade, + fallback:this.fallback, + gravity:this.gravity, + html:this.html, + live:this.live, + offset:this.offset, + opacity:this.opacity, + title:this.title, + trigger:this.trigger + }); + } + + }); + }); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/hints/package.json b/modules/core/aloha/static/plugins/extra/hints/package.json new file mode 100644 index 000000000..afec9d0ea --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/hints/package.json @@ -0,0 +1,9 @@ +{ + "css":[ + "css/hints.css" + ], + "js":[ + "vendor/tipsy.js", + "lib/hints-plugin.js" + ] +} diff --git a/modules/core/aloha/static/plugins/extra/hints/vendor/tipsy.js b/modules/core/aloha/static/plugins/extra/hints/vendor/tipsy.js new file mode 100644 index 000000000..7b050833a --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/hints/vendor/tipsy.js @@ -0,0 +1,272 @@ +// tipsy, facebook style tooltips for jquery +// version 1.0.0a +// (c) 2008-2010 jason frame [jason@onehackoranother.com] +// released under the MIT license + +define(['jquery'], function (jQuery) { + var $ = jQuery; + + function maybeCall(thing, ctx) { + return (typeof thing == 'function') ? (thing.call(ctx)) : thing; + }; + + function Tipsy(element, options) { + this.$element = $(element); + this.options = options; + this.enabled = true; + this.fixTitle(); + }; + + Tipsy.prototype = { + show:function () { + var title = this.getTitle(); + if (title && this.enabled) { + var $tip = this.tip(); + + $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title); + $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity + $tip.remove().css({top:0, left:0, visibility:'hidden', display:'block'}).prependTo(document.body); + + var pos = $.extend({}, this.$element.offset(), { + width:this.$element[0].offsetWidth, + height:this.$element[0].offsetHeight + }); + + var actualWidth = $tip[0].offsetWidth, + actualHeight = $tip[0].offsetHeight, + gravity = maybeCall(this.options.gravity, this.$element[0]); + + var tp; + switch (gravity.charAt(0)) { + case 'n': + tp = {top:pos.top + pos.height + this.options.offset, left:pos.left + pos.width / 2 - actualWidth / 2}; + break; + case 's': + tp = {top:pos.top - actualHeight - this.options.offset, left:pos.left + pos.width / 2 - actualWidth / 2}; + break; + case 'e': + tp = {top:pos.top + pos.height / 2 - actualHeight / 2, left:pos.left - actualWidth - this.options.offset}; + break; + case 'w': + tp = {top:pos.top + pos.height / 2 - actualHeight / 2, left:pos.left + pos.width + this.options.offset}; + break; + } + + if (gravity.length == 2) { + if (gravity.charAt(1) == 'w') { + tp.left = pos.left + pos.width / 2 - 15; + } else { + tp.left = pos.left + pos.width / 2 - actualWidth + 15; + } + } + + $tip.css(tp).addClass('tipsy-' + gravity); + $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0); + if (this.options.className) { + $tip.addClass(maybeCall(this.options.className, this.$element[0])); + } + + if (this.options.fade) { + $tip.stop().css({opacity:0, display:'block', visibility:'visible'}).animate({opacity:this.options.opacity}); + } else { + $tip.css({visibility:'visible', opacity:this.options.opacity}); + } + } + }, + + hide:function () { + if (this.options.fade) { + this.tip().stop().fadeOut(function () { + $(this).remove(); + }); + } else { + this.tip().remove(); + } + }, + + fixTitle:function () { + var $e = this.$element; + if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') { + $e.attr('original-title', $e.attr('title') || '').removeAttr('title'); + } + }, + + getTitle:function () { + var title, $e = this.$element, o = this.options; + this.fixTitle(); + var title, o = this.options; + if (typeof o.title == 'string') { + title = $e.attr(o.title == 'title' ? 'original-title' : o.title); + } else if (typeof o.title == 'function') { + title = o.title.call($e[0]); + } + title = ('' + title).replace(/(^\s*|\s*$)/, ""); + return title || o.fallback; + }, + + tip:function () { + if (!this.$tip) { + this.$tip = $('
      ').html('
      '); + } + return this.$tip; + }, + + validate:function () { + if (!this.$element[0].parentNode) { + this.hide(); + this.$element = null; + this.options = null; + } + }, + + enable:function () { + this.enabled = true; + }, + disable:function () { + this.enabled = false; + }, + toggleEnabled:function () { + this.enabled = !this.enabled; + } + }; + + $.fn.tipsy = function (options) { + + if (options === true) { + return this.data('tipsy'); + } else if (typeof options == 'string') { + var tipsy = this.data('tipsy'); + if (tipsy) { + tipsy[options](); + } + return this; + } + + options = $.extend({}, $.fn.tipsy.defaults, options); + + function get(ele) { + var tipsy = $.data(ele, 'tipsy'); + if (!tipsy) { + tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); + $.data(ele, 'tipsy', tipsy); + } + return tipsy; + } + + function enter() { + var tipsy = get(this); + tipsy.hoverState = 'in'; + if (options.delayIn == 0) { + tipsy.show(); + } else { + tipsy.fixTitle(); + setTimeout(function () { + if (tipsy.hoverState == 'in') { + tipsy.show(); + } + }, options.delayIn); + } + }; + + function leave() { + var tipsy = get(this); + tipsy.hoverState = 'out'; + if (options.delayOut == 0) { + tipsy.hide(); + } else { + setTimeout(function () { + if (tipsy.hoverState == 'out') { + tipsy.hide(); + } + }, options.delayOut); + } + }; + + if (!options.live) { + this.each(function () { + get(this); + }); + } + + if (options.trigger != 'manual') { + var binder = options.live ? 'live' : 'bind', + eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', + eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; + this[binder](eventIn, enter)[binder](eventOut, leave); + } + + return this; + + }; + + $.fn.tipsy.defaults = { + className:null, + delayIn:0, + delayOut:0, + fade:false, + fallback:'', + gravity:'n', + html:false, + live:false, + offset:0, + opacity:0.8, + title:'title', + trigger:'hover' + }; + + // Overwrite this method to provide options on a per-element basis. + // For example, you could store the gravity in a 'tipsy-gravity' attribute: + // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); + // (remember - do not modify 'options' in place!) + $.fn.tipsy.elementOptions = function (ele, options) { + return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; + }; + + $.fn.tipsy.autoNS = function () { + return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; + }; + + $.fn.tipsy.autoWE = function () { + return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; + }; + + /** + * yields a closure of the supplied parameters, producing a function that takes + * no arguments and is suitable for use as an autogravity function like so: + * + * @param margin (int) - distance from the viewable region edge that an + * element should be before setting its tooltip's gravity to be away + * from that edge. + * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer + * if there are no viewable region edges effecting the tooltip's + * gravity. It will try to vary from this minimally, for example, + * if 'sw' is preferred and an element is near the right viewable + * region edge, but not the top edge, it will set the gravity for + * that element's tooltip to be 'se', preserving the southern + * component. + */ + $.fn.tipsy.autoBounds = function (margin, prefer) { + return function () { + var dir = {ns:prefer[0], ew:(prefer.length > 1 ? prefer[1] : false)}, + boundTop = $(document).scrollTop() + margin, + boundLeft = $(document).scrollLeft() + margin, + $this = $(this); + + if ($this.offset().top < boundTop) { + dir.ns = 'n'; + } + if ($this.offset().left < boundLeft) { + dir.ew = 'w'; + } + if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) { + dir.ew = 'e'; + } + if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) { + dir.ns = 's'; + } + + return dir.ns + (dir.ew ? dir.ew : ''); + } + }; + +}); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/README b/modules/core/aloha/static/plugins/extra/imagebrowser/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/lib/imagebrowser-plugin.js b/modules/core/aloha/static/plugins/extra/imagebrowser/lib/imagebrowser-plugin.js new file mode 100644 index 000000000..9e7daf93f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/lib/imagebrowser-plugin.js @@ -0,0 +1,151 @@ +/* imagebrowser-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + // js + 'aloha', + 'jquery', + 'aloha/plugin', + 'aloha/pluginmanager', + 'ui/ui', + 'ui/button', + 'image/image-plugin', + 'RepositoryBrowser', + // i18n + 'i18n!imagebrowser/nls/i18n', + 'i18n!aloha/nls/i18n' +], function (Aloha, jQuery, Plugin, PluginManager, Ui, Button, Images, RepositoryBrowser, i18n, i18nCore) { + 'use strict'; + + var ImageBrowser = RepositoryBrowser.extend({ + + init:function (config) { + this._super(config); + + var browser = this; + + this._imageBrowserButton = Ui.adopt('imageBrowser', Button, { + tooltip:i18n.t('button.addimage.tooltip'), + icon:'aloha-icon-tree', + scope:'Aloha.continuoustext', + 'class':'aloha-imagebrowser-button', + click:function () { + browser.open(); + } + }); + + this._imageBrowserButton.show(false); + + this.url = Aloha.getAlohaUrl() + '/../plugins/extra/imagebrowser/'; + + Aloha.bind('aloha-image-selected', function (event, rangeObject) { + browser._imageBrowserButton.show(true); + }); + Aloha.bind('aloha-image-unselected', function (event, rangeObject) { + browser._imageBrowserButton.show(false); + }); + }, + onSelect:function (item) { + if (item.type.match('image') !== null) { + Images.ui.imgSrcField.setItem(item); + Images.resetSize(); // reset to original image size + this.close(); + } + }, + + /** + * Overrides browser list items to show only images in the grid panel + */ + listItems:function (items) { + var browser = this; + var list = this.list.clearGridData(); + + jQuery.each(items, function () { + var obj = this.resource; + if (obj.type.match('image') !== null) { + list.addRowData( + obj.uid, + jQuery.extend({ id:obj.id }, browser.renderRowCols(obj)) + ); + } + }); + }, + + /** + * Overrides column rendering + */ + renderRowCols:function (item) { + var row = {}, + pluginUrl = this.url, + icon = '__page__', + idMatch = item.id.match(/(\d+)\./); + + jQuery.each(this.columns, function (colName, v) { + switch (colName) { + case 'icon': + if (!item.renditions) { + break; + } + if (item.renditions.length === 1) { + if (item.renditions[ 0 ].kind === 'thumbnail') { + row.icon = ''; + } + } + break; + default: + row[ colName ] = item[ colName ] || '--'; + } + }); + + return row; + } + + }); + + var ImageBrowserPlugin = Plugin.create('imagebrowser', { + dependencies:[ 'image' ], + browser:null, + init:function () { + var config = { + repositoryManager:Aloha.RepositoryManager, + repositoryFilter:[], + objectTypeFilter:[ 'image' /*, '*' */ ], + renditionFilter:[ '*' ], + filter:[ 'language' ], + columns:{ + icon:{ title:'', width:75, sortable:false, resizable:false }, + name:{ title:'Name', width:320, sorttype:'text' } + }, + rootPath:Aloha.settings.baseUrl + '/vendor/repository-browser/' + }; + this.browser = new ImageBrowser(config); + } + }); + + return ImageBrowserPlugin; +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ca/i18n.js new file mode 100644 index 000000000..851eda774 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ca/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Insereix una imatge", + "button.removeimage.tooltip":"Suprimeix la imatge", + "newimage.defaulttext":"Imatge nova", + "floatingmenu.tab.img":"Imatge" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/de/i18n.js new file mode 100644 index 000000000..61bfe210d --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/de/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Bild einfügen", + "button.removeimage.tooltip":"Bild löschen", + "newimage.defaulttext":"Neues Bild", + "floatingmenu.tab.img":"Bild" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/i18n.js new file mode 100644 index 000000000..607c48d8f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/i18n.js @@ -0,0 +1,15 @@ +define({ + "root":{ + "button.addimage.tooltip":"Insert Image", + "button.removeimage.tooltip":"Remove Image", + "newimage.defaulttext":"New Image", + "floatingmenu.tab.img":"Image" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/mk/i18n.js new file mode 100644 index 000000000..04df4261f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/mk/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Внеси слика", + "button.removeimage.tooltip":"Одстрани слика", + "newimage.defaulttext":"Нова слика", + "floatingmenu.tab.img":"Слика" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/pt-br/i18n.js new file mode 100644 index 000000000..1a9e8bed4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/pt-br/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Inserir imagem", + "button.removeimage.tooltip":"Remover imagem", + "newimage.defaulttext":"Nova imagem", + "floatingmenu.tab.img":"Imagem" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ru/i18n.js new file mode 100644 index 000000000..5c1df9e92 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/ru/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Вставить изображение", + "button.removeimage.tooltip":"Удалить изображение", + "newimage.defaulttext":"Новое изображение", + "floatingmenu.tab.img":"Изображение" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/uk/i18n.js new file mode 100644 index 000000000..d5af8d5f7 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/uk/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"Вставити зображення", + "button.removeimage.tooltip":"Видалити зображення", + "newimage.defaulttext":"Нове зображення", + "floatingmenu.tab.img":"Зображення" +}); diff --git a/modules/core/aloha/static/plugins/extra/imagebrowser/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/zh-hans/i18n.js new file mode 100644 index 000000000..a8ac4ad13 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/imagebrowser/nls/zh-hans/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addimage.tooltip":"插入图像", + "button.removeimage.tooltip":"移除图像", + "newimage.defaulttext":"新图像", + "floatingmenu.tab.img":"图像" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/README b/modules/core/aloha/static/plugins/extra/linkbrowser/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ad.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ad.png new file mode 100644 index 0000000000000000000000000000000000000000..385fa1d7ea6e5e598ea9a69455681da87d932de3 GIT binary patch literal 454 zcmV;%0XhDOP)&KN01*HX8z2xs00g>KA5R}m0c2G~3+y*d zjz(7H%la*1C z<(XA>{C0a?EmIb?dH2B)RXIqRHl_r+2$GCsM3Ggcm;an?eqQ!_tLAt@Dotuonlx$# zv|@~`2zt<*RU&KF@2xgo&6Pq5hk-h95ULVr#Uisj=uUUezFhpSlXLsO{=QiMIZRHD zE|p4((6m$yXvHFe?le!)y0SA1*Z23YfBZ0Yw`;df^PiL|hk@<{I_Vja?&)5tsFHh+ z55FC5h0D(FNv5)wGNni39zeI~#iK5q@7y_F1F!|?ja?&y+-_TIt{Nj6_lh9U+E24T-dTl^P^z# z36W$++dgBAakxLsf{}^cHgcZ_RMiA=G00000NkvXXu0mjf$aZ&o literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/af.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/af.png new file mode 100644 index 0000000000000000000000000000000000000000..1b24b434fafc3da5ab44f61b52c99b19797e16a1 GIT binary patch literal 420 zcmV;V0bBlwP)2$~ zJx*0o6b0aQ@q&Oqg#>|;iZB66YD;?>oQCC_fwd(gpfg5|m5G%WMof$`b^-||FX7$2 z*4pQ6kUI}pa+duuIiXId(| zfd1^bTGre5_3?vUlP8%D?Qhp7z7T9yCdF%3u=~7-O->OzVcp zD5Nxapi_VdTm)=s~7KhM4mi-nEIP>M+iBdTmi zgd~zZqF%j@$D8F``Emv_RWu{R-4I3qx)l*5E26%ht$q63$sW;26VWEMbTfnz0Le!i z8zLovf;dP6IoM0m!!7JS*l;>~Vu1nw`vr6$fdmpr;0bWP2LzD7I{pItMQKweN=gy{ O0000&0C#uy3|8E4S1u@A zD{cMQVYe%hl!nRUtE+|6Ko!yY_Pu8oZjYw9{>f^G=*F`rcxIBf9;R+D1^IYnBmsE> z8Xgm7G7sn5wvC-is}%Ke(>^sR-{V; zasc5HdF(*C{BfaHLcNmJ%cz&psGxCl=-P*;&EhU8C;vV`3L3@pwmH7rK79Q~?6I@F zocbF{bQ(+!wlNZX5x^|`so y^X=!Y@@O;UVS<~>0Aw8?0Rnu_gNT2*0Q>>Z{371HvT}_80000D+sWGXPQX!dKB1K#zD7Xj(hhn!5I=G30gCNDJbWrHv;GhVCMVHco zAfg2qMZ_WqRYXb!QDgB@vZU#YdH3D>`{NJ_!r|}@XZYX*m#(b6NOGNAxMJ6fIa~;v z=Nr*{{QlIdGBSa6AdAeS@1PcNX2S+M3&&sD(o|dwQ@cEVV%Gm!3NO!}>o`#_!X!?> zs;v6(;(fE+TPtj&Gwn8#M4g}g_BE4mCVM?so7!VkqI@OF7f9m7=EDF;&7DH?Mt!m| zy3JoUHG(-hv6r~@UG!O<$L;B3Ls^0#?3tl!tDArgA9qI@6V;`px@``&!vhcMXQR>T zYJbEMoJgVj6y3Y|;V9}nA_3sd^f(sZ{e1qtcSt$Md~fB$n_Btwk^Wo9jun6zn{z*| zOX&=&0BL~9CkwZltzGL`NQ6X*#gh_imU8`Mt!M%g?OOJ&oo82XhR7VLxWSs$lXy}` z!X%=)_4)UoRN@p{A6p^RCyI8N|XYQXVD{leo`q@fXw#UPPLOhz9AiOFOUO9zH7MzIL7SZZPR1*`^(jj!OP(bS{* zwD2iXKH}}(;ls5d z+&j0FQu_Ah-3S1_`*X;6zkhUh>Tj&(r~4~6yEk>VmoI)FY_0WfcJk7u!I()!R7APo z9BTX5!Q5KOPP@PU*JSO{G^8ob(&fzxYvocFl z4?RVNr>o>w38cqsU2Cniwtco=PrFu1YtdRsz?e|($Rl*Uiz|!zuzxhl+}g)wK3H@M zuQZhm$)GntUNUcOa(lk}_x7Teb6d{s{;BTCkLBc6GR!jk2*!jAr7X=bdvoe7CjbBd07*qoM6N<$f_$;ga{vGU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/am.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/am.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0a22383b3f0116e68b9cdecde1bbab093b3822 GIT binary patch literal 332 zcmV-S0ki&zP)pD43jr73|weT>g5K5nTB>8eO`{rn#Q+VAh^U%%z`F=5Q8KG9`WEVyDWyQ`=B zhwcS16UG&NWGXICX~K-@7#-b5WC)uJfB;(~+R4!twFpuygLtP`w3j{b1`n8LBzPv6 el7L|XTl@tW=7-I9iZ2`h0000(h@ZhCAP7=G?KxVu2nK@Oh-V2h_F#)T03~91a0wX6?y?LlhJ3DqYb2clIfA*{RRM%3^+YG*}c1aAjJ^Oo}SC`(WaE+@wFiz zA79)Vp|!P7S64p=fXI5kB6NQKtx!KE*W9mpb7PsQw*}W;% zsgP_WE$v#x>Z(P6L$G4yO zlg2koX4kc78urFegEA}=I7Ob0G4XxTTpS=)$sOQk!>XvNHTCdqE54oA9X4p~iY%FY z%iTtFws&AjzPdz|{eC~s^P0Lz7~*(bEf&$~i9J4YlZTzzj2|kLvMgJ#*OB!G009(* z91cxq&pl4%^(C|=@MesWyF pZRkH!C_-gf`p>|BK7bYn`vbOYQS`~prX&CW002ovPDHLkV1hPTuZ{o! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ar.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ar.png new file mode 100644 index 0000000000000000000000000000000000000000..0f09ebdd8eb9650fd09cb12d1fea786be0f5a871 GIT binary patch literal 367 zcmV-#0g(QQP)2e? zy^c%)7{}rNnLTC~*@DT6Mxhdv5~apR;u2hdMxs=!U5|){&c_{SB-D}(A-neE?EC(H zW=tfWXL$6{qskUxCR8e!i-M_`VTP%gi{&EYugc@AStIIzApzT=+374A!PeHNACAVU za!P)jiovutK?@5@8w(3pyF+Hi=T{D|Us|0KlPJarZbT6`&@)30ZXS-;_E{~nrp6dO zdD}-Xu@>hay7$0;h9S3CS>!Lb;>Pp_zS>{>{o4N}z?j6X7~|UVPNu_TcJHqL859^l z{p7~JbF0A(yzjYtD9Eu}kmcz6!ycb}zW8h>-%c#jSXkIvSXkIt*yQrrym)tET)>dU z!ERccv}w`|ZHizZ?a*k}7;e2f{ysAmb1@ZDr6EOT0)Z4M5>m-Be*pFYaOYoHV-NrU N002ovPDHLkV1nFrsILG3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/as.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/as.png new file mode 100644 index 0000000000000000000000000000000000000000..774776150ac14c7c2c37ed0620d64dd890f54de8 GIT binary patch literal 540 zcmV+%0^|LOP)1rq z%S%*Y7zg0rcg}atnK_eK4r*qNokUx7(e9EAMT(R{5ETRk?OI7tn|5sj{{c7FE*Gs_ zMC71QT0|l-8qT276lE8+OdJN!cYUMV^ROtQ^>zFurHx}41Hb|n|5#x74sLYA_yDV_ zqM;!WK$eVwF))U-hEni#c^{@DXVHNS>+8LirbpvB&N+xMH%D4SD@a99;xL|_bY5-6 zvR_jhW>1L5bbjWwn9k1^iW~r0(i%!3vNIk2WJ99lCX!+MLGMgIg6hK4`=1^@csKj8 z?c$~8j&oc~8`^Ro&qYDOV=A$`Dd_5Fbs73&VSM=O+n2niDRdVClvmb$ex)*+-6+}M zi?_EW*>iz~Df+LnbZ^h8TXjbd>CNgSkKevU2M71pBTS3j@(V1OPRWK&ZlgxIBu-A=AKIq&F=M0;DJ_dL(ER^H!c zYL$!((q~5|QXDW+av?|vZ%!O|BlfGfazsz`EIrAL-sDL?%pUVDUsK!-xN)2h3=jhY zTu2fz#WBS(2>~f7j)_F2*L~3*Ojf%kzj0@9y6f?`Wd>{l7O;Q@EMNf(SU>|7zgb|y e#r3)H65#(tg2R-mDwzzW4YAp8~uP% z?nEd;?sC5x_gd@AFywAmPN!4f_kbjX&>w28O(&Dd<#K5&ja|RyF(9eCHa(nw15#!d zTP(_IrSqAajpd=ZJA;Ta44<1#mxsgiey`(^F_tltQJZnYgZUij5}wSNPGyD%ZkQD_ o+-d6G5+@>|eBVFvpC31V0DRV3O?V3gg#Z8m07*qoM6N<$f|jm%*#H0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/au.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/au.png new file mode 100644 index 0000000000000000000000000000000000000000..709eac00de25687b14ff21859d4f0c8522f9aaf2 GIT binary patch literal 580 zcmV-K0=xZ*P)L^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00009=C5Jl&f!=oVt1OiYEmS3o-eg^S^;3o)4aSaZOD7XeJic}zKFklLvfWi?(6A0p^ zNpH{WSsQUL0nE;t$xLP?Gu(dm@wC$xZ5#zibd-vaLd@9-DY~LA~tzW>#57Wr50BB&fJ?p~&)&xbb`G^YP=xV)3;j>;<7M@%S zXF1EW(gY$p?Odor({wp;75U$SRU{UU&X8YYxV~q73#XmtpZr@^IES|N^Yhzw@%hn{ z)t&F_^GP&u7F8t7okCc!b#3$YV|n zt4-!iXFKOS=ll8X^-9aPe-w70a>uW=d&jPA`$lj6{pMs?ff=2mFgixZ7&F|n!`H7a zBa(Zx=N{nEe!AE^Te~!w))FG>EXHcAPGVbkK4&f!0)K~WVNQSI_g-|(&Y(LS^*ET> ziWrF!+sWfCz&U45FhCH7#K9b%OxdCCYGLMPuI>s4FiiAqsXqTW${vCt9Iy6cwXwb! zQy95X7`d`psoT@rpFZTgx*O{UX?GAJF)h)tzdV3aqJlz+DatevRfTY-%3qNAO*?a; z=hN0bC4p~@;(B98Q*h;0nN^{+Yj&Hd`~5P9Jo|d{`HhvG!C2IuTz)rW(`a$!>n&9! z(ZWiiEJk8y7yI8oA_vb-2&1kp7DAG#I44mVk7|Y&4i>P06jMn+l`%XNm4&%1imG=4 zi-e{r3^1U80=@rn W9ZW5xwLn7v0000r`a_C literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/az.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/az.png new file mode 100644 index 0000000000000000000000000000000000000000..2f189667f6ac658a0305cb94b78ee45233c6c4a8 GIT binary patch literal 423 zcmV;Y0a*TtP)15a z!ETIU7zN<-{rzVeqlt}3OG*b@64ti8iC)0mft9#}Zge-|64t*lf~!EIY z`m)Dpgth+jY06Ml+ES&Ig>~odTCMhA43T(De}$o28H!Or;8 z{{HCpt@X=0XKvgSB~p}K1UdkXL=eH2S{=SyEk0~bCO;lOSuPf*uivy4Td=K&pn*OB ziBgtmrn~y`=wU@#{5d~#rj;eyTr*FAe)m2mcl7?3QcNqvP-J94X@;35MOxR-`Rzya zI7TM7hUZhHNioeFkY-wxSkylyt%UDrxC(}XIKx0*T;pDmgQ^$8z_uZQ9U~w-11QCHC z0tjNkwmLu{x&c%Mdw(=};nIz#GY<#WObeD}%z|CP5?rFfM-Hua>fYF!ZUB&K4_Y5S z=ao$xCm%N}YwKNEj?6@tTr!1y{Q75E-+X{2AVNq)<9+8^y|r$`==JF`nM7A+id%RG!S*NaB`Vy!tiymxGBB$*W(jD;aeKzNcd=yDJ9lzTjT)jnTs z4sG9m_Wlmh6i$!y&pdG&7V;DMv#wM8qJ_oNUI8Sn@QfW?vj1p-TtonCSB$S2@CfWPX?U_ih?qrm_G N002ovPDHLkV1h_g)+Yb} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bb.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bb.png new file mode 100644 index 0000000000000000000000000000000000000000..50992817cf3328dd932019fc52136b0363d3096e GIT binary patch literal 403 zcmV;E0c`$>P)1@y zziy6k7zW_`eZOA^S_z4PJa~>^63y~PEbajN6k2Q^D%G&7$Cp_;OWb|0IIq?PwU^U;F72IYUO$8 z!IOI~DJA9oi&q2x^tbP)NrzMO3p#Cet0(oM&&L}^Qg*Lw1Dt`XM$%3xh0gOgJUZ6V zS3P^p?u80v+HwILNG0u*UG~&XOYc4^k;M+FFp(n{z!@l~l*lEeOMBP3EL;}u-C&o< zP@&2Wz!`8-R?(rWo45CQ=I5{F&MkH?RH#sq3-AnBX*yPS9wpM8#cBIR$tClP x24KJdetdXar>G5zs2$Y6?!i9r2iO1w;4fydXM5QHykP(U002ovPDHLkV1mOYwvYe- literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bd.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..685325475ad79e05d955b487b702e3125d2edfe6 GIT binary patch literal 372 zcmV-)0gL{LP)F4$IZN&P7X?KBno!2m8H6zBW43pY=c?Oa^5ds@*0oneEP)AQ08qGehzJ4+P6vP2sop;833*oCiP^ zbwzzqHx$2K0o&~ssH&=3pCy+G9_?d%bfJE5OKrFG{rI>7pm)31%*@OxL3V3)s-L1G zS{k>vb3;{UrZX*dXLoeFTiwwe9hv~78OTge(v;i#KfnaoDd`Uozd)&Do`k(`ueTct}Rf^ZRhpfQ`q)2Hg*kl30I;#*|LwYw5#KOkbBEbbjQ0MPh+ys5# zVHmyxXNI#3{!S11zgh;s`8j}T(IOcK@z}6Ont%Mq<>d+hn7O_|f@Gx4??jC_oJ!3As02O*4{00000NkvXXu0mjfOz4@O literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bg.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..41f34d8562f28189036d0cb0ab2993c0f9c82296 GIT binary patch literal 320 zcmV-G0l)r5|qoM^r>8) z4gLA!x#14$oAvH}CrcJhnoLHL8IeIV6f{@otIhqU15hQ4Dyc*>95h*siYU?%6*N_X z(J>$gX;4(CiH$@=V;~3yf&-(1MGizq$0JtPoV|upQYgs`iAqu-kr^^2Eid%6LH~Tf z*`@qKkVRG;A35?UL@3);-U8jgKw+^c5=w|58wm*`OUNACKsx}QG=AGZ5r8i|&}D{g S&`PHO0000c zf)ya8^gAF;X?%_EFK7P`Ae-Pr(CyMqg7X;9FD>&2VBU@7fX4^A8Y9n*acy-T5Pl>N z&|!om!PzOY*S!Q|ueM^pg9DaJOeR>ZcHZ`61vK`3T!PyqifA;V!GP9lVO-UsqAa!4 rv>r*R%d)gNaypf9O#4skU)t6$GR{1cQgyqn00000NkvXXu0mjfWbcxM literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bi.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bi.png new file mode 100644 index 0000000000000000000000000000000000000000..1f03e129ad3f861554345620e2491e1855438d13 GIT binary patch literal 566 zcmV-60?GY}P)0&S zPe_w-7zgn0`?_SluWn z1Hn!M8AT>Uku(*<)<#OWwf}AN_ddVpiTZpDNhF}GmHsZ?(yl;&iI@mValK9=3@}i~ zKatsac9o0+)8VgYzXPZ)EL38#hPF0nP31C(;C74FPC9L$8nRCu7m=p%rUrAcXtY@V z=3uZhV)qRcUOlI5w)NbIJ94n}W>%$A!HK)udiEyjtG7PhT%28W`8_^Qqwm3&Xm5Mp zNO(9nIVmF9Tv|C4h(_hVdn?hI$o4-uv>f{J;!!TSl;23MJ-#2dd$dbs3K?QYvqm#a&DznF%BMP7I-U$pc|>-f zzw8U`_Xb1Zu^X01?ATnlf8R=W*&zjn3ps35)<+{_N4$N)^7GOt48wo@nuw7Zzpe7Q z(6iU$hbQ8p_tDRHun7YX;aqe?q&oj0|8%OMbvv|nibZxD)3StUE1mKWU$BQx0`Oe* z81ZC$SE2n=Z%+wm1PEY&00l6>00AYS5jZ;ia%t!0UwvpMbVW`1d;kCd07*qoM6N<$ Ef>NvqnE(I) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bj.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bj.png new file mode 100644 index 0000000000000000000000000000000000000000..53d4eb1e99caadf27996d36cca1ba260e78f0f2f GIT binary patch literal 311 zcmV-70m%M|P)X~s5Cm)ATSpL(IalfC$$c67Ov$l zOhj95{t$%H#NIJjNs;+WXmlGd_!#)Zs)N})r zXUe*Kb6H(-&uzDQT)jo23JHns1H<4J9zd{Qf#8YnpE0jF<`*OZYdjsXfcpRd002ov JPDHLkV1k?2h&})S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bm.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb8803156d1ae774f193136c9e28208c937803f GIT binary patch literal 499 zcmVCuo6fhK6O^yscpVPS-Tihu_c;o2Ydv2qG%p_C z-*`A50sVC`GstCn zhV%96`VZYZLSLL|s8m8KgAde2TV@M z&9#h}-|0`BS%B#J;)0?HGFa(@giHyaGlt>dYB4bvf6H`wz znK&KCC(k~15dk6rI^vAknT@vT?PWfFuH?dPQBy_d;4C`^2c6kOz2lzQyZTMURby3G pB_MbXP&cG>(+WWUH5MQZ`~x3{90!zUkIm5T5CcjxCXjEr0v8%w&~pS2~n zHgo6snY_BH$}RF2jgj`&ngLKMJ!!R?%*@2q>8q)f8{N2FI5!-q=jELCT(2e&6 zeAFgunTa_m6bhc_nP3~)(T7kLj#XH}j!U+iKq!?XRq92u*XF%_eztO4uh-4NTL?o0 sYzH6=$Ax9c2_SHWz*#^bjITTR2VAB-9=wV#761SM07*qoM6N<$f@Z$s#sB~S literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bo.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..46b519eae66eaff219f2a95db630c746671a508e GIT binary patch literal 341 zcmV-b0jmCqP)j`{Zy)1Ve+Dxv1~x@g)!lSK z_tHm4Tq80j5MV`$;6E4u@Zl4Hrb~>Z4(ug9+6S?6t;#iT-+vqcQ1s^y*hng2Z@Xfp ziX|&9k52){-7DXJG4o_a)VOxTMzCtutQE87;o;r+8OH5v+&o>)ODoikS~g7o5;kn+ z;oi-!cNhp7w`zsBWy0=53TDHGi4IYM5uso!gspOQ*mrLxVWYwl#uwqGdC~8LDHD1l zrL)UMt{xoM&nw28Gv4y@eV!RAVmLEd?qn;Lil5{1?Ti6I(P^AiF>*996>Zo~>)5qn n2n)Uf0rU?xIj_InirDiXts{K5|IMJP00000NkvXXu0mjf`#F+= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/br.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/br.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdff06a4a1fe60b27f21234dbce30725aeaabb7 GIT binary patch literal 486 zcmV@P)6}%8EO`BihciwZ3LzLv_hwbdE#98BGN+-0!vYwz7mq);Vl z?9cW8`{3?sq;b!twA8D^!(-D{5c)v#$J2|49(Tc zQYqXV`co;@XS!FOxiEBiO{^ZPM~axBi3CJ%u6cW(BrXoQ{Cx2A4Zr#%%edtH3D0jV zx<~i;=G1(#uYnW^B4+23lh5dg?r}^0t(;@pd-2tKK@JHBl5-2m zf%{?VbF3U4UAvgpe!47r^-*K@_H&PCbX{BIpzqQ5k=kxzv-sxU$2g z&qciZV104A9diA9P&{~tEcvR|ow_1}kqX<-O}WL0T2K7CuSo>f$7oAxGQCDIBV07=~2;Ula{{EZS9FKK-tF6$ct%MsJEopYkZ`88G!NJAjM_4Ry lbJOcwd#(D<@!I{)&L3Vcc<7=8!d(CW002ovPDHLkV1l&lx>W!G literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bt.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bt.png new file mode 100644 index 0000000000000000000000000000000000000000..0abb9130c7d77e8b2dfa67b09856fb1abcf450c7 GIT binary patch literal 471 zcmV;|0Vw{7P)zb9@$)w*6zeeT8gRYQnTLP z>prRWHwL*%{Yi5!ZP?438br;cA}5E^9eGkMPG&Exhr9jFb~A6MUbl7c;=+e#E`gwW3j7GEA887j@&<|c9bP~20}TDO4GaE z!S!XPvX0KTzP_k8VsT)BGSM>JP$p+QI~1cQu!Qg89Xx{JW1Ro=$8UupBkKPzE}{Sc N002ovPDHLkV1i+3=T-m! literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bv.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bv.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?x z?y$_n^|SvH9h6d_kb)&hpg>{Y1H+%h-A@=0Y)2CW(3XNeY92M4a>>oUe|j56fQ;Ye zW=Npj49c`Sms~RC%aZ^Vo6TlC9`~1Qcm5I)v0N?#z-%^KtyUyiELKNmRb}oNoM6vKQrr4doKYX*6a0TGWq`dK8=XQVlkY*oZa5w zb?XuiJ?Tujx?RH6DSkcv7(mIRi{ox3nn9ryy=g)-nxn}AKm{J&u{{Wt_>4CH%UB?A Zj1OmZePJ9pbGrZl002ovPDHLkV1jY5i+=zB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/by.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/by.png new file mode 100644 index 0000000000000000000000000000000000000000..81c5086ca61f7398f0fc2c4754bd71776d81c28f GIT binary patch literal 382 zcmV-^0fGLBP)_jg%cWpypQu28Ncl}292 zDvNay863!lRulO;x;$?mx5*km%z-S)cwsrq$YTd=P%Az@f7-3L_t)-47YYvKIS6>M c0j$@+A8$8xma>GhasU7T07*qoM6N<$f*8-ASO5S3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bz.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/bz.png new file mode 100644 index 0000000000000000000000000000000000000000..f653173d4fbbdb220515c097965af4fbf06d738c GIT binary patch literal 476 zcmV<20VDp2P)2$~ zJ8M&69Khk@f)~_V|PKQc9en@ zooqo{YwRUy(j+~3-~UAdU3{Ko#D4??GRE?pFfcI25@t7EJUa^*Zpx@oEDVOHiy@kH zdXxQ$sifT%C5nsKo0ng6)au!({7&0dU5r#%y0dq_k!7k|t?+*NO1E2y;!(UYlftDG za6{CiktX`+@#@{n(~D{IhSeW5Yfql8Aq~2q}V?i=yIl7g~)%wbV`4zkgc$ z^3i{d>PhM9wapNd5G{&>rHHAys*BRN*sA)Oe5sagi*L2+vvXBu>hpi1S`d%wU@5^= ziRwYEwOu{(!{h9@SD5+9!hY{y#Gw6qItGu?MGP!QAgV|4sQ&p|WAWaqWVzed=Y!ft z=f_cbZ{@?yAR5HPQm`BuqC_PK14&=Mx^@5ITDi~>;gICr^QD~wqL^5!ngBU=ca!0{ z=9G&N#lu8y{p~`f(pTm0e!l8nDfiXf)TQsRne2gqfq{U)5c(icgd$@G#)*F@bQv&T S4mR%q00002e? zyKWOf6b9gbc4zJN1#H>DLNo{{-~kA!Q&aK=Dbpb#S)$4d&`@wG5p`Yw@diezEK#H& zazcuTL@`;|nR8~&52WJz-1_M=ySyxX5zbBqiv|8e5`c)DPNy9}fCPA3o%H6<0hCu4 z{eGX=WfJZWBqb8(8GA_SHlk#W<3BML!e9qk`n`qnYYDP(bHxcAaRmMoNdH3EA`))8| zRp$>Mua1vq`}@{LxYkKbfJX?X$y800Bp%%5!2zqGYeKO;EgwEIvlQFH_e@lPB89-D zRJ9mL4tI8bPd8+}R&AQeY&4&f)DRdYizL8X(@@o7v>43{bv@eKYd?Q--FmXMDa5k#wC3n~#f5jczyRY=4E;IL%kNx6V0|0J@V6 zM;cHRg>$aDcfTCZOp^ib5HKJCKY<&|We9;J01+VxKvh@U+a190&mR`CGTj1Zz32b{ N002ovPDHLkV1fV#&ME)^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/catalonia.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/catalonia.png new file mode 100644 index 0000000000000000000000000000000000000000..58faea35b8693ccc26ae4fc5e9d9484805c394c4 GIT binary patch literal 353 zcmV-n0iOPeP)=X;_d?69>O+>_(5gQ9Fv=SBUtVK-lFOls0d=~fKBvTv? z%g#5mdy+luOI<)jEULQ$Gj;bA5w?9GA|fF;;(~!A3R++yxRz2O2t*w zUY^}p{F4U~1Pzxk3*9~Nebd>c%5ZsaeqvL)s;*+HuIJwjdN@!(FgG<-S9NQ{JF0)mEB`v=v{!p&5}HSCaj+Nb6|QQ5mTmY@HAc(GwXj!6&@ m=zxHLfPjDk092t40Q?8ct0}*BD&67$0000<53<}8o~AX4HoLUzXL;mI=JlsS3Gz`pgmc=4)WPUxpw)eo$9@x_BP&m&a^nrV>T zWV^6xE)N$tq}K;_%$L7v8`XJQZG6&t2IVjA)6*4oPB1tnc7=hVyfwIcG4T8R$LRuT ztLIQ^qN2^_ZBH~T13CV*A`*@pA0@1wd~(!(Pz)%9+gAM@vbj-Nz+4JV83z6|B&=0d zNH?FhUP3W%)lpkboCLk$fEeG9DGP9627aZs-ga9Ny1)juTR~5_Ibw_&m*WJ2Z-w6R2|jf{{s!r<6Ct+Q+62p zelYrN-~Y8JH}NI%BXND?i*BEg0kS?k&j#^+^M=I?-lgpiktfcE5z-J+ZS|Tf!V)OE TojL-r00000NkvXXu0mjfVB6DU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cf.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cf.png new file mode 100644 index 0000000000000000000000000000000000000000..d932c21016b36a1a82b97838ebf71ed744c9cf92 GIT binary patch literal 456 zcmV;(0XP1MP)2e? zKS)&p6bA6`zI*NUDtg|*;wcSj(iA~!HPq@*t<~h<&_9>AIz*E#E#c(s(2@{5U9%+! zdQBk|C}>2R@ot0XobP-k5%l{Noy*&0w|>3UyY=)tTJTIZ`1z?vVEn=!#u7nTf`lb3 zsvzKokWTA8< zrJWtQf4i7Lc_^43I$IZLQ0(vjn4Fv-@kdbzN2IwqnQL=H|75BtisA5M1vr4Rgd_-p zj+n_@{{aMGG#XV4?-mxXE*=~nP-K#=WX63nxvzd%jbs`rMn>JP`-6Tp*ci;7pWSVC zEiD+H?zDU6GF$nuVl<~)n$xGd)6IHQA>eYOMTXNX-DonGyV0C(G_O1mECa_-_2+SS zCVsi6JktqFnapMO;)XLlX(>m+Fvuk^_`na-4HS-0Zm&Qb+^{@XU1- yTU%(g(CMJv#>vwFkqOQqf&2^-nIMsgzkUOfv0R|aEXAw<00003l-yn(%yO~gX2(xnnfYb(S;#KIGJ1R;%uf?8PX1@s1b0;4AL z*Lky96?_aIyZe6M_h#Q@@C3l{yR>}e^!&BbRz}rvDmFcX+&2bmgCJE+#e_jbI0No2 za9$xZHVeI_(cN_(Y4%EQj*1EyxjJ#UMC-Gp>L{ifQZ`)m<7Xn=bQ6Km>(>EoCQ59n`zwt at61Nvfo687lg>K;00007ytB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ch.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ch.png new file mode 100644 index 0000000000000000000000000000000000000000..ead7c2a0d0bda472f34d3836d708f980a6737cad GIT binary patch literal 239 zcmVfXEm+O?t16!!S*D z?7Hj&F`z<>sqZ~RV9Z0%ABja1M8}BI=vC=$BguN p>ND_jS`D!*G2Hugbnw5Mdu;f#!3WVuc|ZUF002ovPDHLkV1ii>VyplF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ci.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ci.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d78c7ec62b41544a03f47c0d497c5f5bda5686 GIT binary patch literal 306 zcmV-20nPr2P)_DILgfjJcOaJbN+gnhcV{ekP$JwuB(XDT@-jh?kT9a>6K?JSOPw_yU)q4Zx5f1$9pMbe@_E_Q1NP<( z6;+4aL94G-a|^}vY>Ma+mQkT{#gDY@rqX&xBvhE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ck.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ck.png new file mode 100644 index 0000000000000000000000000000000000000000..99efe5004472b34f938abb1e957841133b355948 GIT binary patch literal 495 zcmV&>NDU9(SHbP*{%Dzc^(TN{p z?`c;aIvkyydoGd@sfp;{4*L7A&)+;=ZH{c^osX4m?NO9m__(>aT->&OC+TTMdXl7{ zzBT5iN|WJIYifNhF8}axoYj zsX}2V&P^yxK~c-xCvyAZnA+tU*LviiI|UWfoxNPExrC8(SeZwt`3y>|%Z-n&i&h8H)tT zGv;tOFr4p9;Oc>IMIpk>*onDw3fRAbl8IiQ9bO#ocOC~>a-&{A01qJ)MG<546-_3S zh;eyxfOCGd_x3S=AI)J|uYJeNB5?aO$nJN~BT?6kZ$XT2EDEPFIdjk-^#4y$jMgBY#f4;g5;z1MR|h`NYN@+6*;OC@8gHSBgvgCOE5 zp<02eG^(zuP#P4fF2XOgK2t$6IkOl3afco(QRo@0W=9nGM0Ff@M_o`0Dx8K01_!nB{i9Jqp#?q&%?`q z0Dulbl}ySKC5m9?eHnR`Fo*xs3g#g43*fz zq?h3%nskKMe)`CkG*n74Nt2)>95JScM~y%N383Q>EbVOWuqfnYmzc7VkU(N8G<~PD t3LR^>f4qYL0l?V<4*t#z)cZK|pf9wjU@ZHo&)@(6002ovPDHLkV1l@Tl-d9Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cn.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1b3109088219c58ed80138450c857a18f28848 GIT binary patch literal 349 zcmV-j0iyniP)uoQ1TUaR@EGP0mRfin3z3+@#!^ANfS$lYMGzAcvopJE@xK=y z!WP4_GyAdIc>w|lpbG%lKF0eU&@=@AP)k<<>|UG?PB6QS{$6Yz`Sz>NCW0xYBtuHF z=;!IQ3ScnK-p=b_?4M^I3vL{G|A6xwCYi>hg;|o-Xrux%zsi{T&#n6}I|EOdzcGzr zmRyBdU8H~tKz#YfsgT+_Qnkl0RN{YtT#X^h(U%~J<)KdS%@i5cL0@upnAh$l3jU< vb$oOFkl-Hf=`Nu2*m`7JsP*hZZ+r00000NkvXXu0mjfRA`g) literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/co.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/co.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb10fd86a7701205aa8850694e0bf314458a495 GIT binary patch literal 330 zcmV-Q0k!^#P)pz@LUIECC)g8iKYk9B(9l&DacknD#*JFHx_JF+2cXq=y2xrpSEE)ZpJp0u zHy*_7KJ2Lh*1F(PUle?dv z>f&oP8CA**QZ$i{Z&k|j+4=cLKI~_3-G^)U@6_&0eH^b!N5;-dm%9!(Vfz9GU?33i c75_)TAFzOH!HO52B>(^b07*qoM6N<$g2rc&2LJ#7 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cr.png new file mode 100644 index 0000000000000000000000000000000000000000..413797bfe27985c3c3591a73d5b76cfb36ca7294 GIT binary patch literal 349 zcmV-j0iyniP)^Velof(UtM8#nk z7}#BgordiR0!v7Uf(6ts#!3TFhmFz2<)Hx^vPG99sc6!ql47aEDxZ!o+QJ?JumKo= zZNPug`_|g)eBNO;!``01J}twtR-`Q10%_7x+t`fToAvo04GMwd1XE^fr?WJZ4Xm8WWX#YST z?|sl-waRT0q-2YOt*xi?v-Y)Ebi<*g<%?|F`u`=Mwf6k-(twl6)e%diiYkg!mMF4Z v5-G_=*}k5R8*sd8ab4%y{uB%pAYkwfGWUCT^E*_B00000NkvXXu0mjfqzIo4 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cs.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..0e0fb6debad853d87ee34c8fb609bc51f0f790bd GIT binary patch literal 321 zcmV-H0lxl;P)m8eIYJ&2)M*nOwK+Wn@~>jY%P;Z7EK)?ZxBcZSj6z+7>`&B9X|y zR7!c?Y?|(|U3Ch-3Z;b9Afhk+-Je-9BcgCJDYID~4zN?|aat*5U&1bf!P8>V#CmeoZ|y^ZXum4>a{1!Q+SZ4FZIKAlMq>mt9yIHas4t zfY0@f!JWLtfwTSS&C2nYT63Ji=`~r7a}qWNU$-#ya2a?jd{C9wL#FV9?&# zE?9-jK>JB>%p#au9SG+I?YN=Fd%S$=2z>MNDxJ;?5eQGH(a@g;0B8@{Y?ft!%9)w> zblNvJi@_ncBc>~EMW$acrk`IjEDwB5O>YGkZ3)wOlK?k`baIeVNm5cFxtU;hKxge< nF;pF=5<2Z)*e;XHaJl3M_c~nVUc8ZD00000NkvXXu0mjf82-UC literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cv.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1f79755d6d7188455ac736420ddc38fec14fe9 GIT binary patch literal 441 zcmV;q0Y?6bP)*C#8?HDewE|zV|2#mtQV-`F?l5@9qdBCDcs_VCVrX04Bf^Umo%91YjU7Gp)#6 zN+}4Jz>&r!7la9&2@PW=r1D&Dq$-Bfy7-0+TR^?30_&Sc5lp24A3+^ez=dL?_+aM+ zW;6Xe>$y>j!{K!lsg&1&Ulke>?Zz}X|JYfn7ZDaPLp6+ANRb^-AIP5sI)8+Z*nDlA8Yq)|5*(|sTK@A zWwV4*>L}na|Fp+fq?Jk~!!;%r=k)xGjD^mUk*!pA{_-*0+j_H-$gCbu>|Vv3Md9jt z+TdsbbO@&hqFQqUJXQiPHNW3eTTZM!RJzZL(bKyjZzHt0!RIF4Cbjg!L6yKr_17UW jfS=Ri?x?UY??BlnixNU5lV_#|00000NkvXXu0mjfr|ZIE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cx.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..8acecd6ec6ea8225b49bcab8cf8d18e43bc5d54e GIT binary patch literal 498 zcmVL5)@RV=ZPK@lH|;A3?3F$qdVOR!KV6go&p2`Gw#f+#2=w5T`~ z3W9?mJ}9C%M5+|x5UjNh0kPFI|NB0E4yKUfI1X;RPXaxIxc(3swB&#Tx|Z!l0Yw6s zo+uY^_^tPTbGW%_Fbk?d)m2?2s0KN)MW=qq%=4KD=s+X={oYaA``(VckkqQVNf7at z>7=us6$x9Rhyb|5%=O(q{j%MTKV`nAu42MKao!jZ4-7#LY>@pYkp$e#%jN#=bV`42 z=Isktwk6Kwc(#|-8uJ1E>9u}cs3i2ja8SI?dGk5#OZu@qbhu`NDrh7 zox^?n@SFD+6^bN)p`n~vh$0^yt&;K5VrHa=cZzX`Iz1llqdBkEC@xT>fK!b|XT2_i zgSld{Yj*b6^pis?_4U<{{SzZ2GQZa8W@zIQS#{Jq3S(i;LhSI2Ma@hs3l7LTkYA za*xAHULy4@_uj{MF6Z)8nx<$-1b~PwOHxWH&+`C~G#=7SRcR=SB2___Ugm@ZNyl+S zME#`&*_f)!=z%-8%tMAl76te3Nf$tAsCO@3`8i}hf_DV#O jBr(6JMT<7=KQe}2oC86G>J_z(00000NkvXXu0mjfMbwfe literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cz.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/cz.png new file mode 100644 index 0000000000000000000000000000000000000000..69ea675978398f999b76f1719360121f06ee2b93 GIT binary patch literal 367 zcmV-#0g(QQP)u1 zmZ6~Qa5SBbU%qQaBl{CyH;kkpb}Lk6PfX0|e%y|1V{Sm1OTwJ%Qg!!8NPK$mzefy+ z7#Y-dNRG%YQ*|?;&4*F4(UE^f6bABVL_r+Ga3~!lR5!(AiO;9EJNbQOtTTqJva^;w zM@jNkRS}_#u2M0iMV98-Tx2a61KuMn)93<-z-S9q=h;c2>N>Bn=?;oPr$TQ~b^mRA z{87Nxww#5MCsMh9wSh3=(&8Gv!w)_Wjt21gF0ba7zQ&@~AzDQU@C!2;c@yQr#9IIW N002ovPDHLkV1g-)7`_((fOi`CvX4 zRL$$Rm>KuO<84k@6CJs)=X4WEqE<90WtPeSv@rP7rU^W0-I#4uLnIch742NT@@zOt zb>Wq^5kRPf86hVcNQn3znA7M|7Cw^+V2riD7sD_ky~mK2YDnYU)N)HVMCTEMhq)`- z78AK%D47P-q1PS1VZsH)na43w*#X7C+;CggjI;SC#YyM)G?Gx@@2{?Uk}d&gqtHkX zZ4n?^PLbAsQ#ZX_9vC^WfojPw9Ea31ITkUHNt#tp&O`%!3H<;#ActYJO|&rp0000< KMNUMnLSTXvyq%T+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dj.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe7b82cf6ec1e92604b276d68d5eb7bad1d88b9 GIT binary patch literal 430 zcmV;f0a5;mP)2LkIX}!}7DY`V6w=_TLt8joqo1S6uOga5-=G#36A~n85rmfhK)LA9(I}33 zjN|)0&wV$j6kOa~!^Pd~eDTY7^nWux2B-uQ5tLAbMxhcaMWawD8f$564@Z1DmScUip-EA6{(Af9(Ufhfam7i?|Xh8Th{tu{ngppkB2|2Yf-7HMWwn<-jE2-P<+TJ?dT0UMr8Xc9U{P$g}OQ?o2 zoIopSpuy|Go1K&Qz0Sl`Z>p+R)o@&HDAJkAbW&(n`YTJHml!|?0s;g91$6BJK)^VE Y0esV5BjJ28!~g&Q07*qoM6N<$f|YyA6aWAK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..622cebd2ce6885bf0f304ac418f32853177b2264 GIT binary patch literal 352 zcmV-m0iXVfP)$D zJ5B>p44n6N3j~Tpg_L3&Zoom{AhgisRw;9cTp?A+E_(og^6427 zijbs;*gWK6FH%O)WR_$dhHM>>nxaVnl9HA!lqO@Ei7cc|2@!IaJLr;BtM+>sL6ezC zn1K|TK#7P_iX=&`yfW34-zc??yIqeT9|WQ0=|2=HGy84V&2DdFvyr>ZPFE|9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..c49785d5ba9588451cb416df1874e9dc09c79a65 GIT binary patch literal 508 zcmV zY%(DPFmY-EfI`igm^f$H*;Opof*>edEU;s7%ud9~?9Q(awOc232KnB>0^&&wV5 zD872euS{o^9kX!M6M^8vL81CjdSLB$d|GmYPYQ$WBell0g$)uSN1_6Pr)79MV#uHW4kVoC*nmFye26+}R%Rz^3PA`08~3Jr#Y9xZ$=jnmG?2bI`t$YUxmU@Bj1yH= yQ*{b~ha3M5+0iSvvHLix)oOGp+H^Z70R8|?oh*!C>j8fN0000*p8% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/do.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/do.png new file mode 100644 index 0000000000000000000000000000000000000000..46230992f8b71bde1e8959006297cf11fb146886 GIT binary patch literal 368 zcmV-$0gwKPP)Qr_)gM}v$f)_}a-V3CN-AZafS-a%Tycvss zBe8Ib;qjPx1M|k}%>^FNGRm-jetZ8+yYB~w1`OyC&j3E1zYUPU9XqnuPcY{7^V8Fi zkwRJuxxKuc0VMeG>#i4dyE~oCZf>_JhUKb|tK(w>a~lb|(@wY5k?bUKs={(HRVF7= zzzkV_P-}0PM>4HaZ+&t z-G{G|sg_Ln<%_3ZK7O7IWFIP5r7HK8`@8BaYRZ(Q?lz#=z`i(gak?srlj8oiy47j_ zHBi%LGsvhd4suMZX^hR$y4y>2w$%YVZvK7b!mntpPzWDU`W?%5?>CQaD?yK1YZZ@~ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ec.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ec.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca13865ff24117c974cdabd10bee54385c5f8c2 GIT binary patch literal 355 zcmV-p0i6DcP)Ny8`mc_wEN`= z+Q;3!AK$jXEJ{p>7Nu6pjhyUOI4gcWLOI{kHc*tUS>yBXG2 z!b)i*z)CT!h#^Bk%I)8;z;F%_@LTbf!7H->JOTV{fg=J?zBvE@002ovPDHLkV1hlY Bo8SNd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ee.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..17393b8b0042d4f3911dfc81f2dcb775afb8f057 GIT binary patch literal 297 zcmV+^0oMMBP)dsCnO4R3Dyb6q^H^W@ZK!9x&$%1n(upWJ)Y&| zB*Q{PL#(bEbKHwnZgL4}HUsu{d?Yv|GCdMtk1$Vjcxm*}BAe&?@skAD*Ejk^Be>IJ z+>Bl=6lIHt`#TZ55Y#SVssgQ)B$_yQBc}z(QH0a8KfT)dY_P`DO|{%Luyr_yeDIUZ z9OWSVj&I==F$b6gcY?L)RiA)c?IA(JzVFMjWG0II+c2G`XIAwrzZ;4wi|sp7cd~hZvC`+{=FQRfD7#00000NkvXXu0mjfu436e=mNm>H=Je#!u49DXWA{+tI z5hhJ0=}NO^tstAjLjmp1$w_l`jNbm{d;}u6=GN(Z^RS()mKw=Y>GgK*?@L6KQUKV7 zVK_5Bmbc*J_Q3_*`ioM^YPD**cQ+YqyS`j&y~D u;e0-C0gxID1|+4Bx44+{USQO^P(1^TQT_Zn(m*^vS@EeFnBf9hrLa30=5&vUUA3(61XQhLlLM=k` zZEtIPicq(^kll3Sv0)X^-eNEFs zkepJ~1!3o|$K!M+^QjZM-EK0O)THr#i;fZvB7PN%S?3h65>nf##ByR*4MC;Vl4esz zBdJ!k=&ex5PNxb$O$iLV=xw0gmU>+(6=^gyGOrHpfygG<+d|pZ=xqpz@lE$)6 zFT>-bjX;RaRvLT{v@vjfWHLcRB>4UHw7pH>`0Wiv!N1A?ilP7z5%ZkorK9U>nw48yXtkoD!C;Up zsHP(#$Z5Y%Rl0+$>6DV0<$rW#sT!h@5*ph*e=WOLmr zND+$AJvBB4U}l+QO;_Fow03r=nidvPO258&G?N?-hs|Hgc>H*OFTmN$3(ArtNF%F+ Y9|GY-9z>%07*qoM6N<$g50a8JOBUy literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/er.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/er.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfe8106b59d59b1889a6ffd010a77b356dd65c2 GIT binary patch literal 497 zcmV4otoO#db|v!76np7 zWhq)9Ge&~sghh`18RyLN+|PSjxe|VhYk#>{`!QX`%qUs|Kmy1v0^AdTtF|$H_0Ihq z8epy9Ye%e6pyfy-jr6LX^r}YnI{RSOr9ccHZZ=Moc=D5tM_k?3kH`38NVXzTs8EEW zrj>jJgaZ&1eRPvqq}gxF=XGS0!}sjQ96ulByNbT8=z6zkpqeQN=YeQ~@?3*M3v}!^WDd>)nbMt+Of~ZwPZGtBH5hc#Sk;R(b6syr7ZwkXHLK%zde;%?JoC{N;Wvh5 z3H!xAlH9WXMN;oQyU;tj)N_8LtFN6!rxFF~&I5jh?Ux!4NdW!xK3ucYOM|2H#Y-DW zxrI1LI}nMO`fdl%#emaJ+B5LA*;nfxUcP>==?dxtN9#B5E#(22&zXhhGl1>`@c7}{ n3~pryFCtB#DX_h}*YAP<#=ssusWM>c00000NkvXXu0mjfH>l|x literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/es.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/es.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd22a445ca70d6f99d69c8ea2a067b4dc56fe20 GIT binary patch literal 344 zcmV-e0jK_nP)1gx5QV?HUPysLiR8i+aT$vAX?TW|)Gl}h%Mv{e&*GMfiZ)K~RG~m3k`-+5-uXEc zyB4;D7#)2&#mp(r6!CZR)c;dOzZT`pSyq=#=r5FxXkgR04@ zYL!`;OcGiG6+uA!+T`zz&R^BhnM)>BsSYNMV);aq00F+;d3=J8?e53heb=uZi7E_e z00_xOx9|MBm-mZj>(||5If)-`Jd*~HT=MqK^yf7BuozulwR$dfQa!Lr6y1(hZtUm8w?he@l!6kR6bTFFD^8TKomZ6h@y>Y{%TwFY^R&7FK&Uh>{JaEIT qnBh)O_r7r=63XuMk^lK|KYsvrv`VkAPjW>70000g3`gxHyQQxHLEmE^bav*+g)56>%yk zSZWDM!30xdl74ybd7g8qihBHp`*B>t_9`Z0oFoj{5E+>;z<>(KK>l48P-6V;{>?`K zA{26uuyD6*;TAG?x|3nhfafzx9rq82+hkFDgd$Lrv=rNt{v0^r4Bgyu16F`Zz z!E$5HVrJnHHYd(qyi=>yJz`Q-hy4dqMW?wn&!5EwBzL5A7wAg{*^{^3;cRK6-8(qC zv^%)cs2|?DdPB+*Q|gSzuL}TxOOz;Zn(G_w-oeqTMO^DVA09WP{0mqF3ILKxCS)n6 zqI$Kz70Ru}4=+D%pE))9bAT9uL?Cr<>B}dW$#R}!XY=Xz(~Ar({1|ngZIzmcgjs5@ z4SVm(0BU{HK0%5sbAGsU{e5%Y%`fl0DL7NkGQu3k4xkL6pkZZ2B+Owf$aQ`dOr4g@ nU@fny6GFWy~~l$0ciCTVTET32fyOurpl zTltW-Bqx5gy0yO17eSGQ(j<0UP^6%6Ek7QO7k4HPK3%@Jd;8%6kd#1&5Ol%w*}uW? zxPqi8n9ZNVmFK79932MRaViJ%Jw!LD-#^wR0TKWJfgp%O2*@IW|EPd^`1buVasU7T M07*qoM6N<$f;qvl*Z=?k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fam.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fam.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb9993cbb92614275569000891417e86fffcf7e GIT binary patch literal 350 zcmV-k0iphhP)}(e0W75WG+v}`*&&6J<6+kQNKRALUJA-!S9vG6@5KStnq?X-K>4$(4b=uhhTN&jPOeeGQ zS6TmetNlMR?euQ2yjC*99LdyurRtPAm9**5-VK%IAe~g8%>k literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fi.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fi.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b1058cd49c9818d24c6cdd446dd029c9c9b82a GIT binary patch literal 368 zcmV-$0gwKPP)3qN zF-z597{=lIJ^dq*6BGyqN<%o-wc6 zl5*C^FMUEwNhE#WJ2a{y|I=FQW&#zFlw_0&>=Y!*DGF+>o2J`u9^c>G-Ro8K5m!bL z=#HIH^npz;Hr6gYd-!tFfx9^zRK>+`T-c1tFx`02i!suTbTA3$2myv;)6J2pR6$Wd z0Rbf1=dZu6ZCnHr-Fvb#%rMWlHzB7QzO*qV)@Tyjw8d(%Xou2P9b8;0LY>+{s)K`*6j6~5f)$GB<{}OS7ZnFZ zL8n*{s-U!jLqWl~S?$uKD2*mH3E%rX&p8DDYG<%uiwZ+ZJNS}t3?-jYhy1&4);2ZoTOD#hrPUfI#+5L%E=44vuQpD3@@ zg>HK$-q*YFrC6x8dZj9-^Os`vYWk#NPnZV%bC7fiLUM)7(67tOjF|et=LwUCMPnF zo?;||6F(fT>CI8BRh!MwBo?JN*2r@&uJn`&THRz2{Wf^y=;Bm>(3DP;Vi2WQdSg=% zY@fZ6X=ia_EcFaY=s060dBFmv1400000NkvXX Hu0mjf&P?=m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fk.png new file mode 100644 index 0000000000000000000000000000000000000000..5adec9e3e216c8d1ccc331107dccac9c94593316 GIT binary patch literal 526 zcmV+p0`dKcP)d#xx_1+L2i(17gPWL&Mv5dS0h~ z{2Z^(Ci{B*TD|OcwSUGGil)4aM>@n}^huK=0m!^Ne(qQ%eQ$A7AtP$zne@ToUDf4s zJs={{kacQyzB|dSm6R(MAmdIwy1n7_t0n%GGE7pOn=AFN9qh0g1so+(#u?bQ<$L9I z(&=LofXv7&E}wKHYCmpy!j?6fFV{)}g2Q37M(Wj>XWv$qyVzT03y=YX)sk3YWl>^F zam-ej_0kzo^n5z#7kBF(|Earwn-A9|NsY-5-2Rp0F3xv%thu`-87$>@NVbSFE$326Is)hy=JCj*kJ)LCy=Xam?ZPqTIxq5La z$;Q?WN!zL(svCfWyx81Hc)xwv#AJQ*=l;<+H6{rLbr03;sEy(6r-N#ToLihT+1@>R zxwV@p&|sqGShX-VZEQrwsqb80xqD+}td?SEFhEocV|9~-le2aVcIJKj*_-c4&Yn6E zM6lxk5j}JM-qW$Vy2rxRs#dkS)van3>Q=W}q9y$YNkx}*4i6DT00000NkvXXu0mjf DZ$r3g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fo.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fo.png new file mode 100644 index 0000000000000000000000000000000000000000..39d2040bc6b5db568881e7294a9c44cb89d95b3b GIT binary patch literal 377 zcmV-<0fzpGP)$? zJxT*n5Xa}SPi(R&!fp(*i60O=g@uLQz`{ES3h|@1(^gMl;Q>5=h=`4C3Rx6cg9+Iv zq)6k=%$u=zF+`GIF+678e?HA3qI zA*m1|&7T+mnAwWRWaZ0I5d0+dI55V*KMcTFWAZ$oT(Mry?qPEa?$R`wzAlKch!^|< Xcrah)FTsTU00000NkvXXu0mjf(>S4> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/fr.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>og)=DW5rKc0Uol2xvm%T=mU z4UOSZs^$I?Z|K;;cF$r7tLGkNShC{O z|Bb8u{ri9W;g>}lZqHwT2gv?ErRRTNE08g1;pN`B7fzmd{I9F#-`}4THeFyyYB{*) z7_h9sy$HX8wQi;=-M`j-JblnvMwSPGkT&6yydp5E}a5&ks!usO-$O zmketXYyVH~_@9#UKR*6{WaR&l5Rg(IpMS2dzwGUQT3UWLG5M;e_f=c_XRuqVycG@` zY;FITSwPGM;=h0Y{`vdo_n$u}ufAZgkK5EU=X_M!jw@H+|9|`DXL3A9m66GBeM7K@ zzfYYU_s`raAw4T3VLgLzHiLQCy2a~3A@jMh?n75sOvy1I`;WHnFHLQrtF7#p{QUp_ z%dELC5@MRBo?{S9XPCVC^1pw7zqeN$J#f3Q;b30FVW12DhIsrAa{l-CZ+P0a(74sx z58wLx=f~>=-|V6#3{~?EOmRte&Ris@GlxfGGKcDf^VeRqN?Wvuo1DJ#l0m$fL9~ED jI9J55u6NIMSJONIJWOb+P?rm600000NkvXXu0mjfi76Tv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gd.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..9b077bb889a58320500ced1af8c7e102ec784462 GIT binary patch literal 461 zcmV;;0W$uHP)2G) zv2V`SFo?yVi%Ob^bm&GbB7((GF&QM% zn8hL;N{~ohU5Q+pp6By?pNB!>^{SHp;x??oJX|N7m?tg~JBS4W0s^W64`1Hs90Y(UEo_R`zJR&` z8M(4v=DKC7rBkD2XKh(|rc%}$*rT4F_G|+kMnD}9rOfR2nGgPA-Ispp^q8g}H&C^B z&K`8_%cd+$!%_%n06}S^J8vtcR)4F#NIBp4i~YUN_&kuMS(p{`;sG_F@Vg&+rQbW$_HF|~&+uZhqFv!f%r*R?0#<$t9+ z)DFViqw2JDWJHN&u?!`aO-(d4+p?3pbgNgaR|4vQ@xI?2-_vM{EEEx{Qlt|ioXU@H zDaR(t)s1rq zJ!_Lu7zW_`oVKvWR zEi4RMhe7aY#a^u7+<6$IX-e-IkL7cnBKFF4gdtUO#`+|+^M$awg?76wBF?#JyP9QL znx;vT^d3I=bMMw@G#U(9V<%{ml z_F(NfNmUJ0m1KUgGTZIuE6bQLr%oeFjWGab?yLlHJazLn097^3W>Z8|6$*ulh^mI= jvI4_;T|@xrF#!Jn(zZ@>A)53c00000NkvXXu0mjfFG${v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gf.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gf.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o~;gJ z06M+bCTrhS#ZnspX@GTtWeMQcs0-cx)~Ao6ba~0MM{L!y6&B$awwKbXHQ-h^pSi!$ z;g6Q`>h0Fv0MFn7fYz;xE#Rw{d~(6v#o^6swud7?R5Mr~zQ?;4`u39^D`do>o=efQ zFI2=(k;hLT`|Ag+FdQq=Xp0$YbaW~7$P-UMtROT#KRZ|Ci8pfOu||$vCrOhD1`DnL i0tR>@pIm&@0Ki{{GG%4t@;Pe&0000Bv6cq33Pk0osUc8CFpy0^|n6t3w1kudK9;sd~#?yA2SX_U?h=fSeRN^Sy>CQcs70-+73TYt%8@00LU*Eg@ zt({gAMvK-U1JdbktyErBiLbI>5J3~zfDAfa22>1i;Q%1u2Uwi0bG{A#lf6=m8_Q_u P00000NkvXXu0mjfa)Y9T literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gl.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..f22289be9de4b303a110522bd495a4a942849ea0 GIT binary patch literal 351 zcmV-l0igbgP)tidRYQa#0(c5!MR-1=)1fM>Rc5o?Y}oB`HcJg+Ar8(VF=VWuT&A`7{=w@D x@_DmfBZ~0$1`&wBxr7RsJ)k$lefrP>@DCV@TT0s}hGPH#002ovPDHLkV1mwxn4ACr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..feed27f5c5524d11bb843f69d755fecd30f00694 GIT binary patch literal 363 zcmV-x0hIoUP)_xzh2Wyganmj6(yibw@B+LQFQPU=2(@XUn?$lOa+UAQoN4j; zWeu}<&K%BR+6O>*RL!Git{Fx?3D`b50)VPi#fDr~q>@0ERAi)(?@v!B06_ZJtJtuM zEIVY8A*-|4(|eImx3&aKZ?3Ojt*;}MBmgq>7iwT7t+o44pWAZZ@7}hXU+}0?ksoY_ ziX1v}mTT?g@NW9{1wU``<8~|{M+zM(oIwf|+&6r$>DgaTMy4+lDR#oQK|EW?b1VI*y#o5QRh6C*F?p@qn(4^VjyZZo|-K4vUD(|fAoFAW0 z5EyMd-=L|oOcq&GiA7n8Y&&)t9S!@yZ=eGL`ajm3Xm$Y$`~ltmY!N-;)cgPd002ov JPDHLkV1m62r2hZ_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gn.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..3efeaa534a88d33570ce1fbb14c64009b24bab07 GIT binary patch literal 319 zcmV-F0l@x=P)X|041~Y8y9GiZBnqSmrQr_TBULKSL6dWEk=%uf7HFVILkiE>L-Br=XN_FVC(p=R z_&)>ug0}!O%<%h}_n)Dlz+f%_4-Y_Qwi#Y_Xz;fAeD>=X`gCuPG*;{J%i{%r-Ns#bNWr543yVC%+?jdtHvHFE$)>jLgb z2cWJ%qUzcKxBo?I$Bqg)a|PC37e*T4J(83v?9|b!q$Vqm$30%a*^Y!1t)fS)x;*l< zr&sBd%*{@*W5~TV0 z_BigZzAbIOx8063@Jot_$=CDnGQ9r@(+U32K`>34G}D>p&_H0kU7sGEb)1K{I_xdh zs$>>QD48+^$|X@waWe&Ui&9g zOlP9fOaXm&4_rR_`UXyvkOkH_g;bP4OBpNz{q*~nm3JR3y%tVW0Eqa#dlI*onPd4(p$ToDG~kikG|H$LBAL6GFpu!9THYng3j znUq9~G2N}MMPO#Qe=|exoSCB9Y*rfA5kwKVF;9`UY3mV&1SC?u`rak0X1xp>@+TnK zZ4u!!2$CFbPV4PXC+)IxHgosz_^V(4kJ+gxDQo8Qya2=@sV*%pM$E)qh+~x}5l?6_nlZIL_#Dctv?1oL_){}0G3N( z6h)F&=58VFZB9!N010v_NfaLA7cY+EVzDR*002qnH}4cEk&;BFIy>T@R-OYl)Sm`W zyZg4Jv9gxN$`~0-TIIuFW2f#7FP@g?^9Nfql9t!%q>i_vlmaP=yUF+cW-|^<(qnWC zRC&ElM?$3`Q5wqzwd%dsZod`^;eg?wU_Sx*zTav+1^d;`!ffWNOZA-Oyn8SdoERO+ zoK-r($yIx5GWXF*td*s#Wna*>q@^sC&kb!JHoV5e=Xict65RSANk||1M+lL^<#p4; l#8LW@T>|D`5OC*k^%v_KYfuZ&@Xi1L002ovPDHLkV1m(zq^bY_ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gs.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gs.png new file mode 100644 index 0000000000000000000000000000000000000000..e37521f63be00588a33ab10d0c60310ff4553ad1 GIT binary patch literal 522 zcmV+l0`>igP)*>u4xd;(n2_to;5FZ4|dVNO59!0?8F;TIVFfRilj?L7Za3FcKTd$?sE z!-w~;wbh06RjQUf$<9{(_3Q7S-+zDqfsp@x|NgsaQ!dMY>E@@K8F`m37Wnq#@0VY! z$2p(<_}|L@KIDPzr=S0S|N8a&FT?L&e}4Y_AuB7&z`($g@X5Z@H;DJsoiF>&GHD3& z+UUI4eszMX-Et*S#zl(A+jN2HJ}>-TSy z-&!vg5UrD`E%w_ zPl%#%r55Y&A3uKoX6EPTSaI~oN0p;nwlanUhk%@vdGS@g1LvPVZ}vT7{qvjY_iv`J zSFYrq`}gY?!|&hUU%&ZeA@)k@uc{~?>zz90vHAq*hNuyE1Q#fwh^x!=BhRZ)?IX!r)? zOG@$sNuVVldqA2Y44}wAAmi`fe}Dh-0!fGlmihB*U=ayKzZviX05c0J#+izCqyPW_ M07*qoM6N<$f-Hs-iU0rr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gt.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..75e76cddb9d9914d25116182a6741f418407e648 GIT binary patch literal 333 zcmV-T0kZyyP)3SF zv27JW7=_Vqyc4_tSy-}6KtMlG@Y@Wtn$_RGT|YY@$w$BL fbou524Cd%B)c|wNQ*20{00000NkvXXu0mjf^n;Q( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gu.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gu.png new file mode 100644 index 0000000000000000000000000000000000000000..4f034bcb29c3733a526c4018978905f564483457 GIT binary patch literal 384 zcmV-`0e}99P)36g}_fYoUWA27XH5+U5`hLIiC!I5;}GI`%CsZ9z*$pdd}QG}NCE1WvW}Cq&{D zSb=HK`^qYga!W5-2D$NNj`aYp_?s&Lf4QfHty zU{%K|$l33_*j>22a`^BpEW)D;V0000396N7)ZV}oX-IUkZ=feCl~Sef4&FdTL!uBATybXR9L2rYZsKI} zWs1q1%rcx`!}c9)XwwbsO?z)_R)DiJV7iy?lY5!tfM*Pz(abr&ynV9*F!Sj%3CTo| z8C_7#)QpzpPVYWU&m>DS5|f!awCud`NA^P%@~ijyaa3hhm!isnt-IIt{UvL|k@UO@d#c>} zlTxHsb?q6soi;0L!zFtpq>(CBn^F$xNG`YBafhF*4I7!$(~)p)pXlmk?JCuB>~WGz sGGW8=3;Kd?-G^%c6c~Ik4O_U$UtzCtj$RDlasU7T07*qoM6N<$f-5wlV*mgE literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gy.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/gy.png new file mode 100644 index 0000000000000000000000000000000000000000..889b5d786ed6713818c430713c4202dec17b17bf GIT binary patch literal 521 zcmV+k0`~ohP)9qK`(vzTrV<<0G|NMb=$s(I&`T85MF=_xojL?f5^5L0OXNXXhfeL#DX>Er z1VJQ`LLJ;iBW<8Uhg&QD!URn4PfY*=Muf1;Caz7p4|J#l84Q zcjDrWl7A#$^PeuI3;XNLbuvVb*l{!z1tBm2n8Cr`O2y04`^*-HKlY!Rj|2->qPODR zL%wz8hQC|iVQRLuw&gzOj0Md2I5sv^q|WjIywJyqhkT-)RfDQ`n$q#RYSODO^VRK{ z=^0}IlNi(WH5CDi3O^ufAL4ss95AHHs-zlLeO{Aekw>RJ0BR5J5wlD($F9=w%>%nt z^*-6IV$DmhOs`c-n1|;8!>mL(kyMbbC;9TF7S;3YMvJw;i`BPtg-o{cO{jXV^DL_H z9MB>%$NZ+pCLi~7hDJ;N(O>)iFuw+w7{bgf(qCvT5z`84(A zRd(+u(Vm0!9*>9%*i0i4Il+%fbB!2>HpFW5FmuV?*}#^J7E`200000 LNkvXXu0mjfb~5%g literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hk.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3663a87cf3d3e9ba953fb89201a97607a69b8e GIT binary patch literal 393 zcmV;40e1e0P)J&;kk3#1OBs_(}Q;6b}8WJy|;&MbtMEH)dv%90XBWxy< zEhd@W{HkXlF`oSKzj6S80|^wMcA$H3005cFR0KQ}jtG$=<^Jn~Uau|ypuD?Rgd#vH zqPw}Jnd!HalQfDZGm&Lw1wa9S)HoecN-3R=c6YS4Hnq4|6{OinA|0p`P=ws!UR70d zc&L{b-P~%b=^P!+JUqPb?b&cRIxm45fILLPJsG;b*7mk~XKET{==?lCKGF=N-1Dcw z;Vzo!ugAx;fHpRisp+OYJ!RXDe;^$w34oND=xH`NKd<$5nd$OEO*7H$j?!|^-v+pg zOj6|6<72hI|JmTL^3 zuto$ig($6DL=6*60^JrFHQUl{YFwQ!iWB`E0PsDVk4?-)FZVgDbpSP8@$@iQtuMIi zPrW^7u*92#dVio~ZaH$$tJoW^4)0SDIeW}!kfo!&ZUChBORf0^$4nNH8p>96Q%j}g zir&K2=gD7QPs?QD+giR-*if4qjZa@Ku6%v3|D5Rz40KnEl?*Xu@D`ckT)r}&BTR^7 zYIW^jMF??bsOxcj!DKXK7T)LpC{Ru)KXu4+^I`}SMi~dr2&SBK!GxyK(Fe&=xyBg- zpgI7IDHB43_O!J-%_qaVHB2y}m{3fZibO@B!D?6S>% z`k^??n#P#mlnNE$Yv)70o!d0bo=qKmiZ{-h^(hxBtfS+gkt}0R96C_#32t SLwb$?00004fY6vSua5_4W3BN#;p*yal;$bn)y1-sOK2@4U6gFsNUNTJw>ph6&>Aoho)rHvLw zE(%(h-LU(A^JXlT>+<;Vn8)ynVJcjHgMY*@6beBh1@JUb<8OJia}9t5S(!*FX{Jdt z#T2Qan0~kWx<*k69scSwm5GJzpax1&VMfvVg%Qxz)2ExaZ>*hkX**@71zXO6a6*zL zjYl<`>zL2yk|bs3aT9xQzehyhm#*)-uA9F2`uopu+qO;9v~4?^&6b9=wr!tX#+}J| z+xwr6-hVifmSB=fXG1>hbf>Ta&Bp z2_>aW3UJDjlxE6?B+27*_4L`t3fR5>@aDI}HbTKHbSW8;g^p06Bgho#jZ5P%2Ty8% zXKGxzI0}js=|Kd=6w{d=9xMZ>fCs?JqR4WZ7+N3p%759tbi?A&(oz5b002ovPDHLk FV1id0#2Wwr literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..20c66c3a60b548339358791b5a17d638c81b01fd GIT binary patch literal 386 zcmV-|0e$|7P)Y5Z$|6w6PJyE+~S3Mr>`;h=)yLlL&&4LM(!i1cap4!XlXekisVZ1B-x_nqJf* z+4*?RZITOuv%}omnfGRA_Y%03>0kV>Ct0!4umIJ_K5-0%3PUs|9}|HY%lI=G1c3uS zCQiiMvKL1k-T}XYceQtU0`lX@IKf)xY!YcboT1so-8tGVqFKSyT;PZ@fr>;? z6i$J&W&Oru)az)sQLXB57$*sWIir1j%|~*J)Ev}m=yZ&YZdb7~6R2vEvqS%Yja{jr z*F&0OG|B}LkO>Oq=bPib$>)p&EJ~u^?~}d_ou-EeS8MlgmSI&Els4BNt51pZYT05k(n_g4W@vEjH1wpFQ$6qN^H`SIbk0Z8z@?>1`GW~wiIDWoa?(SY08@7Ia8r#z@qgHbNI z(d#jRmP+!58{mB^0C%_fc#k@|B8EMkVGkMgaK@|4>!0Vhwg=A5Qjdh{5v?9EV$?k} zMVFfOInEj>WW=TM+|}e5ViKxUX%vYxWVeIiG0sv$I zEj(8N6M*%03!sxuU_*`tDN>UyH5n=7VYizA0L|x@wqZ9J8)V2PQw*!CLSC)cnJ;wu zv)xrKbup~4x|phYzJOtSi~*p#(P;Ev8DpGIr}?Fe^$x!VVSCK^(j`;2+5jdL7_F{X3?(b1$xsrT rvJ_c1Y#YG9Jy1Xa=O0i&<6GVUBIIobr=PTO00000NkvXXu0mjf`rULa literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/id.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/id.png new file mode 100644 index 0000000000000000000000000000000000000000..2f67d57320235d78e6f9b694eb5383e948e57dc2 GIT binary patch literal 301 zcmV+|0n+}7P)JHu{~kza1tQhO{~o%p0S-R zZ|hOEE(zq048rytzxX7xpFi9)-2efadvktGU`-uv%^2D=$m`?NBx4r)c$biRrZZeY zkt#y1t=94KDm%EaWLG1lLWOB?HE0c93SF zJ!(~96oujU96mvmRQ`knZ3HJGSUCV2OIteyA*0At(qu4cEWCwarB^(Bd+oKn60x{> zo`p-;_{$)6?{_OJ;9J@rzj|roi6_3#V9&+t3&02Q>66oCSs@2NtbBf#RIGIEKU@t4 zkgvaX?LOFRe{%06|NZ`%Z#T(I)$-`MVPNdETW)pbF3t2ziY~(dnpPxBR*pF};~5uS zz(B}dU24h7U7E>^3dt}KZONLRYUPNXp6Qv?(q$NkO3j{XRZqt`QZp2-v;+g8R&`ZZ zb>*0&845RUV6aiv*~7Eyl6qZMU|AM!t%Ij8py|eKSoj1#K(N8a^~dY;2j{jW+1B?j f&)&Q>n1B8NO2cxg8tPp(00000NkvXXu0mjfi2s#< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/il.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/il.png new file mode 100644 index 0000000000000000000000000000000000000000..6512bedf75359009e655ada9ce6f61d23a38912d GIT binary patch literal 326 zcmV-M0lEH(P)khw#$#??DTAla77y;;tqoPqVISb?k>wr_ zXGGBMHaq+}&iO%onZ__*dVO1$7q~1Om${pVMI;Y%S%ifwB83q4Hd30+X6=vsE81md YKPd=#5(OamQ~&?~07*qoM6N<$g1S6~b^rhX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/in.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/in.png new file mode 100644 index 0000000000000000000000000000000000000000..351c6a51d964dc2b4bd24dc4d4f4b2d7284ee005 GIT binary patch literal 377 zcmV-<0fzpGP)g z03fLuB3MZwiYuvg9pWLbcH^Om-aD_`&1dL$5+_15{eAcQbYIr1N9Tu=S;CkOTYujV zPFqP`YYCE!-#(rGT3#$(JiYg0din0nV<&N(bgliFUvwRS0Lcc6#qwZx>&w~s*bT%Nml9#Zuo%Xx5u;jj3!kjmWyJkXqJj1MVfot zdnZRHJ&2Lo?EPOgHJ%=P)<9)M1Mbd`u)KpR#g>t0qzyspUKPdNr-Yiee?9eul0glvL8SERugc3@$4(hEQw>x z*QD9LeP;RkmGkE>#&?f@{{7GPP;m7b?mvJ2{rUS>+V07nKM(%=WPJ7gW_9RumM!l@ zd{i|VxLE$(x%d0QBTjvNpxpasZ=D?^Wu;Sjz2nAec^{m1Wr&uoA2`_I3>|AHiKSKD0teo*h%`CWQ*CpWOje7N)O zzmkTj7{fchhnF4+^RxbuQsme zzSHMkh=_8^h;tn~{aitg_u-?@{MtJA%TB0FF%8w{JfN`k@pOg)kC`{$X(cfDw?v001Tl6yC*d0mA?Q N002ovPDHLkV1n0@Hyi)} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/iq.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/iq.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb6b878bdf98031b5bc17a1a98234ab0fb7aae6 GIT binary patch literal 403 zcmV;E0c`$>P)Wom_olmKS0#aNS!`kA(q+)Az~+Lv`uUjC7>81n208K zNp5#`$GJO21uGxJ+Xp-E&CUvfZT|4l}h-tB(o$bS&M9zCs>fr)6z1eZ6F|&pbc@nCPEceWJVrNGK6&6R4N>&jWMCY z!}|)N9wPRYJZYYtKAi`{VQ0{N?Z59{?R9-W2!d9tl{^WKAC9iyZv3#DnV8F@W-gyE ztdY@ik?MuLdZ&KZy(L3C?lwnT@dmUpzb>_0b5?oa)Y#-oCPxGd(^BGrdZRa^&P|aTRH90-ASywFXeh0gk-#?(n;Y4Uwd`7N)Z1LyeEELa%9ozLpSD(t z&!gAUaZX*rsbeN{>bhxui z?`g(Xi)qSM3*#{!9)>s9E(J2RnsvJffg%*)JXy%0>ME7b`+ILd@{^)apa`NO3PhX; sV#Gvagep`Kf&p#>*aGpl{5Jyd3(tE)9yi_@% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/is.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/is.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f546273d10864ed5781b9549f71bb52ff90d3c GIT binary patch literal 410 zcmV;L0cHM)P)00nVZH^CS130%A$1ra9)K^z1(5eIP-CkOio4&o*_ z^ajzk92^vm?@PWooafXGSwa#*8g9JC3i|rsXV+bmy1kbOB8UYMga`ycAbJ4L4)y_5 zxwST&902X`$xYELlSNsjWTooO_+1YG@UOFlssQl#81VG>dD5vO6|9uV8f~os>`_&M zswCSs({`{(r0m< zM0$M?4ltK7N0{{R307*qoM6N<$ Ef>AuUQ2+n{ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/it.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/it.png new file mode 100644 index 0000000000000000000000000000000000000000..534fd5e6573134eb4b86e189c5a89922638f21e4 GIT binary patch literal 283 zcmV+$0p$LPP)0p`^_t8%hJhFO0Ko(k$Je7I h+w%k-x7+#0GhZ%NcZ9j0{lEYK002ovPDHLkV1i97bK(F1 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jm.png new file mode 100644 index 0000000000000000000000000000000000000000..f4012fa0dc67ea6f61ce783c76e99420b4a2b419 GIT binary patch literal 508 zcmV ze!PnR` z6zolAchp;5mG#bXqGSw6N0Ln;c0?o=mdP=uUdDd{9)Q_=(A{STc3Eo+FV|UmPEtQ~ ziQ}1woTwEy&j)?-@F{Df!~$Su3RSc`bda9kx+nFoz_7@o~2pz@A z^>2Jt;FXwMI?v`tdo*kSyoPFYoz@jAqi^zjlC$r|c$jolr*!nGU0H39*#3Q%+-lE9 y;7tr+#($i6hm!yQyRz8Jc%i^L4DZDB9sC9HFFjy{(Okd)0000@iWOMj&y zDT!Yc7M4;9$!4<&pa$SHqz!42Txe~2f6wEns%kJ8G!lS>wKZohFnn|EZg=d#c4jsJ zU}eSaw%6B9dN_2q>$CGQIuH>x0QdXubo}rD7Q6P=whs?}`jri!k$_3x-QoRxFkSqo zHP!}TJ2UG9CL&DUuCmjbqOQvSe-tSe6=p<|Vx*R5mL5+Y>jd7W;&NyHX?b#95g8Pj zjEqpo!3;^VltQ371&+3XS)hy(-$sl^0s#OYxQ1J~ysM2H00000NkvXXu0mjf=2(;^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jp.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc03c944ba2c7ef01e988f01c0941cb932845df GIT binary patch literal 307 zcmV-30nGl1P)W2NV47>t^*l*B{^+osPeEhi2>==FNM zJoX{oIUNzuDTqc{T)EioU%A?92$7xY&vr-`RNu@lc5Ab$_846?UG9tyKcpqlEGxbG?IIqT zn4I%k7n)9;me(5H>u8ZK5mg<5^cIjL0U=m`hY&nm3gL}JwWSs)#s~`3f*OEu{N-bJ z<*BOPTy?wrk>l-tB3f@fzxSx)Ztia8X(Rn~^e*5PUOapG^(v#17NhxXTYNHRh&=4_ zTz^I@MJcAMcOQS=8>Xlr!j)!+N-?34#_y{_<3pAE)^Z0;)Wy_LAz&M*00H8B|6JxS dfB^!u@E2QRJu6jL3OWD)002ovPDHLkV1k@r#f<;} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kg.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/kg.png new file mode 100644 index 0000000000000000000000000000000000000000..766bc89816633da5d87032bfe6d8a609ff38ac54 GIT binary patch literal 354 zcmV-o0iFJdP)cSnuP%$-xZ(*Z_EZehwhr=tfmsD94T+DK@0GBmKF!*Z=_1SHDn|sz`WL zV=D~xH}$O|HW_Jdw+1#1r1Q`{YV)4+olzQR+`x+NdqK!TQH)qWi96;A@obk{_SJ6fCR@VF zL0T4o^jD47oNtvgNd_4vzqHl@zw6J-dslxvwf+5YPcl8+mV?1Ti zTS!x3902hDIlJX>g%FEodnpPZ3PLO@D0*ns%RrsoC`c9&8c2I`pcF+A5i*K(BP?GA z`Oxhlge22oMCBf$C?cH|ZoO8fB_Hyq0Vgr ztiC!3|A+{&Fp??WqkaLj9#mXQN(dQIv?E%78+qo2I>BEB5Edjs1VrnGiGXIYrb)Bb zq7^%~D->n`699w+m<34?1(8UbU0zS8he)wfq8(O>wZo_pz;pwc28g3rIf7ao$A~vb zGjcP!dK$#C*imFHv#kJ;0gNw0*TVGM7m0H1&(d((-+!6c_{B~VX>$5J)xhGp?m+6k z_`KGYWOjj#3j>)%@4kDl?C8!_K`xKH))nRIZTAw8P9y*77a2(?s*YRI6_YQ2^fJz}M0EsAF7ZiRyb#uTV4AHKL!=2hvXP_cj;4K9BaDQi)0T>IsUavD4gy?8w zx?v{uncBRF4Od%Lfhzn*nla`$Ndws1w#Va{IS$X&&n};?c9wVbRQ46Jygvj1$>a|Z ze~fQkY{fca*1p9RZ}o-d>*i3qqiPM>D94xgbb0m-(D-9VW09uF;>kkWE$>N)q89>% zk{pH5f};}NU?_2PZh%Q^e5qx{ezVv1riQLW<2_vzTnQ9h3xSerNiKZ^?8U!RBHA`eB8sS_O_mN*#44@GM1O6oI<^(joFbN0hqNZ$GN+N1 zWJ_Dyy@nMjG1FR8%TlcG`+mNk4o$ZnkN5Q4-UQ>oGCD*+|5iW%gk(D=3n-uLBnc`Q z8yo`=Jw}h_rf3!=Da&+X9j70w+2X=ak*wG2DN+F5{M|A)i^fPZqj6g=hgR~z^?0jN zEtfB(-t617;r(T#h=|cGn%op=v|Lvh-K-ZAy!$om+;gnEyHGm3>(K5mTUK!C08#)3 zlS?K^{cCxA6(8Q=+-H*E*UKmQjHi*QKp0%yax^_%=_HJ!`_1 z5$?@uI2U}0=u-qz1emnGs8hu-_v+x(v#C})guvdOaQ_C2v%x3mAvl?k5lE54&_<@; zL*w;e>F98K5zEt0vy79YOs)oB=+uy05|BO`z)V#iKag=||3GQ>O|5b*^naqC4Nf}g zA-D(`%m5?+E}lOlG3#QQv)iYce@i^4OHR7vlAFN{X6;5J=^O|g*@0>Sc!!Ap`Ev$!0000X3tG^Fu>X1q`P(PFdj$ZHgo0W~ zst|ip5=4rUsPoGzZ@y12cE0j`>D(3T)&?`R{ zYimW**x_LuAHy7OaD#ba26tGUfJ}gGo6C|{S4s3=zk6lrXJ@P)&SI2`i&`tRp2XoHff2Mh-4_vxKiP}a&|ZSh)-Y$4?G8bEUd!K z?bX?N13^I_$FppRa+wVT(9XVZZIzhjGxpT$Z~U*Be=|R;6-|;QgwRdl-s`#qbu1QxWLpa+ zFl~DL%fo*Qb!Or2bdX^Xn!Jl)uE%LvA6T}@0XwI@xl zilT@>V|%bHVCVDsOeO=qQ$zl)(fBu!IV=Ees@;na&w)2VMU@$ghLKPT~xj!WcVjh1y%KxlizP!3P_yO9tHsE^yAa&m>lI^tm#hb x$!Uz3?V z&r8!`90&0CcYE5VPBUFv7KY}*K+vKhgboFDEP@KDL*0TPNIUe4P$3HH;H84VvQDX; zT1cJEbgiO-elBg5LShoS=6wA8c%JGH==Cx~?VTUX>QCK%d%8Rm3!yucXy5F5o{RuB z009Hv84JEnR zf@D#dC|Y0p^VR?bC{}d;JsLt~Vb(|al{;%= z#FI{x$or1Y{Ln)uw&dJp9>@YPbLsTGb=9fNd{dmfNb32Emvt3H;;}>p?MvS+Z#tst zrpIoG-44JEj7_cDEh3bjg>b;0KfIeFic{cR$Q|6*?VNXiZM$;jViJG>3hX_JiYSW^ zD|v9>*t$z?xn&dAZl*q~$kCRy=l9m^Nx}dkqAbcR%u1}p!XhNvH5hGe_WPUb78tii zgD=xj00ywky1J^A*~veSS=p(uGRvz^c=MH5+)^&kumUgu^0gK zPiW6^9LMq3_xt;5wI9FD4lJ>zky=&?xvVG$t=z_eBZZ3`#mUWWDW?@Bl#5?((xRX8 zubkvSnsJ#G`q`$*Z{N@R^L)wUQ8YUKtYW-!zZ7CMq>zvTfk1&u6ev)wqS5j4?wKWx zJk@lzu(AYH?yb}4smeIxu#Cys)9rkuU?Q^Hg=4U>>MqkE(xAqmP zDfOREcs8STI~$V@cy5wMhiM<;@n4*9vI7gsEQbB%0q4UmoJx94cgOwGT5oA_zn?T& zNjPPPty-m!olp8^Z4dChpY9&szRL$4^>Pe;h`kf}Rl*5JmV!#5Zyvel)8OAUhrKZ2 z=MOnE&(5C=t7;mFCwxHs#xsZjbu?MPKSN6gW_}MN|^o zn7_<5;cP9i>my?u`7z}?gDlSGt1o<{z=5(QR4Kse!iHOIpA8gNLcx|dJ_js&U=(K; z8D~pDq4uBa(YjLpQlLP!RHHzF0)YaRNT?^3`Uk&hT64E~tYrWI002ovPDHLkV1lPK B+W`Oo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/la.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/la.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5b62435941e6bee524046178096fe271141d7a GIT binary patch literal 415 zcmV;Q0bu@#P)V&MSg3`Sl?Z9<(n*MrZ;*hktzaYh1OLMm5lJGxW5nD& zFVEh9B)AOAzGi369LF#+Bn1r3GP-s~aFvSfRRlzo8Hj-ih}3}iHv?j?UXM$egTvfb z_vu|(B!GRwgv`WhG!`Z@5Yo)bd==_(ZKJe4Uubhe>Fg_-zhC#R}c^>(AxcL1Ik zNmduf8*mW;2{L$b$gWS~B6oJYwpo}kluz>6Y}E6bkPDE&jqEKe2n7$A@a$wXHIdPD z%uQ#OXEXi>%};~Re-XcIXLTm=DJVet7Ilcc- z`LbEuU$We4H?5}+ikv;M(#=Q+*6qP|v3mOU_{?cCChhwJ56mc$hQsti7V^2$?Rk6+ zcViC)Fuf2qn=lB9psE>5<2RUTE8w1Yt!ZEXno2|K!4(bl{uf5iL~I?qaE$-}002ov JPDHLkV1j~JvlajV literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lb.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lb.png new file mode 100644 index 0000000000000000000000000000000000000000..8affe4a819ea58d0e10dcba1e0ea43d1ca60d384 GIT binary patch literal 393 zcmV;40e1e0P)^?L<4dh=R|c<}LCJ2{BeaL3{vhMQb5-IxV6hq_PMSkoZMRp+uC#4+|Ud zGvDp(PKx7BU6x@MW|sZ2-*}8{u_0`Ewwyo-U}}98fHIM(2t|lg5TxiLlP(hUpC5Kg z04U42{)?m-3aZtKuG-UGtW|qaO(#%}UR{k<6#z(*0K2)r**@IW@@+Lt7h;|6a?g4wI_sg4BIOia!E$!)+o!{lfCdAbm;}9Gh;Htp7tW-kxpIUU nx*q_rAI~3|PafQrXc54F5K~0v^sbmZ00000NkvXXu0mjfb(F95 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lc.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lc.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9870761b5276d918c8be29ae7d52ebfb136479 GIT binary patch literal 462 zcmV;<0WtoGP)LU0D6of)BdGqn+ea<=e?RBMlkDF?mS}g#e6b=B@Je5$lLpLE7XgtQn%Nf#-@9ZthT@eZ*s5c)b?WHyV3@g$>2c^S0ZI{s!^m}w{Wg>HigQ3-v z2~ZY5h>mcCG@GT(e*XIY)!_A$t=p}6#c;U8i7-LRlq7^BC=%0}8(n;Glokth&!vCAY+OohW%RQ-vWCS17P2BY0LmmNP%>9D*ZP(G>E*k< z`{nt==I!2#^Vd>i3KJ=J0m|VDs+hu1XB~dC3rC+`x>YuA+V<&Z!!JH{kupP25VKKX zBISWmleT(gcc<3hqCd@pyXESss&besLZkq+XEmHUaU8X2eFgosUCqxXGr+NI*H?EA z&g^GPEr|g@ssCs;oPnabNCRd-h6n->;6Q?aL@=Sn|22SBxEx5ec>n+a07*qoM6N<$ Ef?7DsW&i*H literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/li.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/li.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7ad9717cc97e4a499f158132cb2dd3923f5096 GIT binary patch literal 399 zcmV;A0dW3_P){`uXP zje~C+MWzI<`HGC7s?^8F4uMjgtagAS#XKy+kd4sSkfzdqQK^UN10giS+42=ovFg);+a z{m!rb+so;d#ZRd$TeKvlXws5RNtQgjboCXU_P2{?Yd@y=epHU4iY&(eoZ_TyKER?c zfmKsuT9ITaQY_zivgVF4Z%GOz#u002ovPDHLkV1gg^q`LqB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lk.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1412039250c4da675fd4da72e40dee212842b3 GIT binary patch literal 464 zcmV;>0WbcEP)2G) z%}x_x6b9fk(-}Lo)KWDniujYbFu|n@qb7I*Zd`Z+?%jDAUX8diUH~Q}BuJzh6%|vc z38jB9-+ABjy7YOndhdn($B>L63k6LS5rRaK3Xmww?DbYJGkcT5vhXM8$NRJX`=!aD z!a+D40;*np?f$4;eJ#wacAff}kw!|z?nbNGnPQgJb12X#>UxUSrTLG|=FNL~VWu#J zXhDT5I2~~Kx$*Gjw}b7fw{pV7$x-~;YR!%dzlGcsBt0Oy5t7ppk(!J1wdcPt+#Y>; z*J)p#_il{n9z-4r4*)K@;0mX^lv-D3dmC+&ufOWAK0fSRnbMtPp&;NM5RwrJr#nvd z{lmiD^?_L;;A8B(?b0EzFww&u$p|4S5>tt!KReCwV5xh3aMJhnLf(k}Jpah9Qij;+g%Pk8q91JKaFfBrV`90QpRG8Ja_U!d`S{{8;N zDk*b%)*{B=Z(lPD3Pa4mbTo<$OiXWY++aM*z#!At_WRj0ka-|?16>btG0pK;0uX+F^)lmO)QJ28L&%X0X8-{J=cHhAV1(~h00000 LNkvXXu0mjf?z5#p literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ls.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f46519bb63ad35dc54ad64ffcfc1b7f56437e3 GIT binary patch literal 500 zcmV2e? z&r8#B7zgn8XWx%C%gnGJYdIDnCPXB3lMX^B`x65HhM*uKI(4m!;OOEhuuF7O2s(rz zS&a@B;Z(||iLD42l*4X5|z#jG97fSUz^Xv74HmT=0 zrVEcbQ4yO)8y3Lt@5`ssqkt(D-X6Pg>ES}*!&bc&3#*~%2VcxlP+`X%AXrsRU!FKW zI$^w4!+7d>zF24W38t6^XF2ta5+M_dic^8Ws;UWkyz1-Ky(de*T5TZ(H#aFe!?r@o zOeD&pPSinQRrOC8O~3nD{43{9^h(lk-%C!eiy2^dT%3p(*WsO02ZDY2W@UP21$zy2 qP=t{j`T+|>fB*szAbDjb?4N8ESp1@7EaTz|o`no*_-9Dpgz9O~k0jx-WoHKvOwB4heO{kRTy}TqH>8 rUb@x&0xW+30e;mTOvSsoffeu{B_el2qOtO;00000NkvXXu0mjfy%CkN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lu.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9e3d5d9a36a4eb50a918dc23ef4fddb4ddfdd8 GIT binary patch literal 338 zcmV-Y0j>UtP)DWMca%EsDTSjm%EuvHeG!gKHh79PXOm>P^s-@WG?i$7z7)9v)T zr`xSld~}G{2><|+&=NUAOSPsJYEVGKs_WC*j0-Ydsc)8UO$Q07*qoM6N<$f=RHGumAu6 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lv.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/lv.png new file mode 100644 index 0000000000000000000000000000000000000000..d9236f966bdb5517bf01088955857f55a1ad6e5e GIT binary patch literal 339 zcmV-Z0j&OsP)t_%kir9`PMK?X39<1ChL9A26ePz_WQ&l!{hN= z*gv!L$_sEtR{?nM*RtLRK>Y#kS1SM+kr63{E9B`O?m@~u$Z!|=x?a}`0QvjznNmnW zHWwMBjG~2^$nkt0Ks^H<$?M%_au1_uqRA*TkwfwXl&|e}vRKG0GZB$MwB9m1h;C7b z!?(?*NGhddW@Z9t@NbpD;CMLH@7-=Zo5>8>?#%A@nHO$P)zRpEyDd+^!*Y4t@55bY z!LDOnz^qN__U`U^x2pk!dy>&)7G^=FS(4ennXZ%oR0EQJGo1z*E_r{l4l%W%T@NxtM&>n;9kr#l= z*QJ5L>A0Olky>ggQp8Xeo7dm#0?_E&{pQ&1VGL=aLb@29-_M&vI*zBGV}^>##U?|V zG%KYR3JZbZnPJ!)DP*d4TrQf>2x7GuIoheL6wL~mnoGwhEC_DR7zcZ1coxfIxCvy_ zJU%+^hY6eWDhnAw>uCJ1eT52TGIkrng23?O?b8t>Dxi6fssbFGa;N$LB_l!eBK?5_*4ek)Ts=EwkkKF~aDT-mHi>|3|#$2^N z|A}S*`#k_xp$eH+B4r7ZNiXel&j+gEZ>0&8m$qY~? zZ{Om}OvT*`y_nEuOQa(p^@k1P@rfpj3qO)2b-`8t;uOo2i6iD45lUpD3pNyXJCjgC r1ldSP=q&XNky$`HuNV2xj(hzA`O8|sI`WqW00000NkvXXu0mjfK@fRp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mc.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mc.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc5edb7505e779e041d2e9ecec1a7e3a96c8a46 GIT binary patch literal 254 zcmVOY(v{pN*bdU@zeKfjW1dz8 zslDC0dTG`U`Ssi1q=n5RGSEYCpo+?r6YjiTJpZ&^e>2AsZcIDX`8p$jvkcS z-FtsxrYWMysKx~rD9N?{q375KvB9D6JIjme3H y%atlup~^r9ya05}{`>px;X~LX@77?90Qd)Rx@1*joxLdl0000coWD^4~7zk zFoe;mA-s0w(o8o|79|Yf`0IC^+1Axxy5A2&*t1p-q(fLN_BYby$Sa{Bd+}`HjQ(@4a>QuT{st zJ{yJ*O?qHDEIrXxFTZ^J-zRtPod5aT!{7crI(_}Yhl|nCVcG*LqpMae7O($s`T383 z&bB-C{nP88-Hi@InX#EpEru}s{qg-UHy=iyeuSwSA=v75bY!8Za8Fs_QvUd7g#EBF!*qMln*H-s@$2srr08 zJ@Wl4q8O84G8{}s2F-^%zFyGU9^1N|~9J=|rH}?RK_pOR~LwUgHfga03Vs5P$#!0%rIIB(P&2RMN6+00000 LNkvXXu0mjftVe(Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mh.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mh.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf98c15462604543116b7833c95a7703e40313f GIT binary patch literal 518 zcmV+h0{Q)kP)1M|owQa`Ye8x$k*amcU79Yh@r zr9x>et(i&Xf(OG-}k=n=U^!X4-bcDIY%LS2YV5M7FYuI(ED1>n`4$t1*L zNDN8acu{W7#+IfJ6heoOHnUKGM8X~b$3Zyk{d;A$ZR2Qzbf|cvD>oS5u_rQi@}^vS zte~mu&BV&?wFVPiXltH ze&7&GMy<>x3%w(!?72raF#lP~EQmIeshwXax|nw2iBDYdXF@dxj%pGZpvr!iU;IK3CeR2fneMhSDkG#&+^M%Dmqh%}r>nhi<5V5fA4lWNgQWpnH{=}2z)>d`X z1iG&~n(T@g5@9w1A{J&63y`{$iDmDt?tJP1p8@?JvQG%WU)WP0keM`|82|tP07*qo IM6N<$f@x6e=>Px# literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mk.png new file mode 100644 index 0000000000000000000000000000000000000000..ee987490bee827f3aa43075267b0aefbccebc80d GIT binary patch literal 449 zcmV;y0Y3hTP)r}ir>kE56hO{hyTjg!@I*>(Jgs}mLvE=@rUB?!N1}Wxf5QJ9sVj0 z!VhGJx2id)yhWQ!G-L9YpjUh*{8@e!mTY-3d_uk$o)gQ(e@cNiq0=p%5C`O0`B^x^ zqw=QkynIhS7M>ArDhm~8^CUx4h1Ko8E!HYKh1Bd7Lxo*Jg^z_BmCKdWHG8x<&&Ju= rTp%F{9S|BCKt}qsJ3B*g=O4U!;Xchs zv+xy;02svW1#e#g*x2|7{)l;G<&LXQSAcEDr!NNvv@ALtbn>qAS?P|H?z@|tl@-XZ zzrV*bGvnqkN$*tWXQe9L%lWxs#n>5-JeqbUsYFR96<4Y^fo{VJ45LVvy!}1!TmV*t zJUy*>5b9A#r}j!n-h{Dal}qzfsHC4JEPEx<>6+50r~E9z_kE;D+AEEEdLya-6FOB< zqhSVEInvhI>$9Gg=45H;WoZyJFT@8ivtd}cgg+oS!jbRSynk~)v++0lW#4$ae`7Rq UGJS(StpET307*qoM6N<$f=k$oMgRZ+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mm.png new file mode 100644 index 0000000000000000000000000000000000000000..d931b1dbe476d4f43a9fdcadde44e503a74f9409 GIT binary patch literal 336 zcmV-W0k8gvP)Wuib~)p2idC#5)Mdwj$zUuRH&oGm68FMKYOY{_mfE zG6`U}W`cMrqk;%)f8 z`|E}pX$O*)VXwIV9RE_|9_|ipfi?H|_8tSQU@kn9GZkp$?C*z!XIw~0!kyaP$+=d6 i^uGE?{`>AY0zLsV>{b$zyAZbk0000I~Mz2 z@5RFuXV1=@nPp4ZR)-ZgaJV^j_;bh8(GAQ1=jWV}&%NCDkNwH5N^7x;y+Zqs{2@~8 zNbAeX8Gz*Y2R|FX+IP3#jWV8k zwbq)4hixi`gM=O1L$GSjwb)av|MDyX3pZM02&N0OKF%y?&tFWBg;Z=Lil^e2v^LP8 p-0l2ghi6>D(avD~jnmPM`U{>JP7=#44mAJ(002ovPDHLkV1je%pFscs literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mo.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc49f581ee49f0757c64fc0f0a20344975179400 GIT binary patch literal 456 zcmV;(0XP1MP)6zC6vfYb{t1*9Y3dRhiDD*OY}KVp(aC;j@a7;P0f^t_$imFbLyKe+F;Q;{ z1l`nBU2k@=-nn-7;+^%*8X_KVKD@W~d|Khz`CLqB1aS)2u{GG5)Dv;}GL;9H?r(Ru zTY2laJidJ9%IQ{nrPX=y{ey-sx0XkrMhS$5iV2-+GW1JE`A literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mp.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mp.png new file mode 100644 index 0000000000000000000000000000000000000000..df0c4b8c186fad44701f02f30b980b119f445f07 GIT binary patch literal 481 zcmV<70UrK|P)K3G52H8vk)`aJ|`#la(>2Vx4-5p#CCvM|EjBo}c9N`RIhb}<}5pX@m0Pfzr z2p|MALoVwN7yWF>Wx)EcftOWV|DK`(DN6Tm+=~GKVRLIo3WX7OyqxgsYLXOE7@as$ zKYw)R$+yy4Bl1)}w-0a;V8MbED4Q(W$%6aH>4%@ouhUc4pH5}1vv4Um%9Er37lFnQ zC^NIu`PTAA``P0DpmdD<+m)>cpUN4mdq?L*8sH*0nu27WQbr*@c4}s5Y&d;x_Tc>7 zWVJfn-yfXhX_Np)pi!bkTCzPhQ~I&I(P*`kmD<`;y>IT!s&5Z?FY<3gjIJ{UPb2kw zY4A|=<j|Sim XFwa04#%s(k00000NkvXXu0mjfd2ZMK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mq.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebdb3ab6c4d14d457a7629ba80dcc96795b762b GIT binary patch literal 541 zcmV+&0^2$~ zJ7|+p7zW_?{FgwICfHbGVj3#OswnLcOeUcrphE4S6a{tCA`S{JMv6{#DHI36QBhF` zMNr(uE=7$9(Lo1E(WWGr2+g1Se>vy-)H?Y*0^^IY<-&Y^&(6s0haZctzkx_?+$18? zyasenUztu%MhkOKfCfN1{JEutBjKPgmrWkar($EnQ~A_XCJDd^`?LA|kzxPIqkCu1 zWJGkwrRNs3`6k$h{$%7uER8qmSyS511AhqcRl4vS*}>CmF8Nt zm5hg&dAV3wUAHs{$CIV6jat2P>;5|dvv7TBrrEYHo| z#2{oN+4*^o#pepb6b}P4Q_KjDfhjNs0MuLt3~&wup8$(!_=U}Dn*gd;^-7PO%WkuUt+YP4x^!?+5^h8ltoSPTayPkfQx@dAlMU&+T8pZ&sdMb977L*=Nd23C# z*Tf?-v*ksSq^StR7)B6x`&c(7W>HNWuX$yMY@CI6*2yEXs2TzVS5#8h`yYCCRXijQ zsBh$VzTD77Q;hHsI0S0`EB}XoegP-IIs5_XdT3pi5%ebj0000rU;L?fu=;bdEs1iq3N^q1w!8k3sPDhnQkg@jpPhjXp*15HtbC=vUuOV|BucBxa^3X4rI_cWXgDwTGakJt$VaD7Q7 zQj35kjfpt0cdJXsM&Eq3bHNA!D;xE-vCKr$dE93>s149o1FHc_#EJLY7f#pC?Ciu_ zaeA|t7U=f(-iL245>J_~Rvw%mc^@W} n+GR%skLcQ;qyNSJ5fITY<#$Fc)@>fQ00000NkvXXu0mjfwRGeU literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mt.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mt.png new file mode 100644 index 0000000000000000000000000000000000000000..837261ebc248ac590f4be39dc8608fc818028b89 GIT binary patch literal 296 zcmV+@0oVSCP)Z0sEJX7;F2 zxFZBi*Q^ z0KID*NY30DFzYw;j#>TyOg0qxr2pfcqi>9-nN3fc0rXkCDJ&r+j2p(DRg@)`ODq;J ugBeoF)xV)>8Xsh4?(TK{az6k1!tP=b!83o> z;>(8wvMj@Ihk=1@UjgC&WIeTVR#^OT2RJ-ADF6wQvP&*2Qb|RY6msG3XJ_Lh@ErS> z7r)Am6}l`_Ax(P9WF}4Cd$fHEjANW0-+%V=&!rqWmZwTG>B&%@^qi*r_`&`sTnu2( zZKw_PC`EK4M4RY@XLVMe=tO6`4cr|#_`KabxuuLv-({eXiUex_0000 z`8XE43Bki~nCi?Kp5X)t5Nzhmug!T005Ac#w7(Ak36io)hE-A|kdQ)J0{Q*$Z~_37 zfBbCoN>Wr=VK1quB8$CR-}<#2_x1!#0V*Zr?W?=1SxQ>f>eh5~F<-p<^S-6^(ZjMI zJUzNd1{edtF3Dlc=GBey`jhR)SBA?E=J#XTq?yi;T6ZWJqRWb#mv^>qtNiBV^$atY z6~V0DOWGuqRU}J~q+wGwkU{MIBJZ7P7?YZ!a6bB%r8acXx+`91+~yt2G3v?0(I* l1q|O#De4^2v;Ch&;2&wdOE8Vg`SAb%002ovPDHLkV1iklv)KRu literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mw.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mw.png new file mode 100644 index 0000000000000000000000000000000000000000..45ea61d87f19bc4a2ccb73ba52d9e6a50b814446 GIT binary patch literal 365 zcmV-z0h0cSP)-)hUJ5u*_m}=cBIErOD`_oq*>B>y_VG7qx&Ga=X{8V{mK3YpX~x{V6)lG zlB98R@;k}>do8NvQ%679C!;YS-PtK|7>AR^Fg5(00000 LNkvXXu0mjfY67Qf literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mx.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..c78ac89691ec75b0e15637d1ec7a4872d63f18ca GIT binary patch literal 424 zcmV;Z0ayNsP)2G) z!HUgc7zXg?`{q9XV&c*eF{IH(;+=h=r08Q#PbS z$&`tbP8{$1yw78dh2O8?>OS-V|Bzp9PdmCK0FpSLZ?CTdARs`%0Q4J|ZvjoJs9auJ z>8%6a0l=Ay*RDfW(V6e=-5s#Q*!ro|l@u@_q9hix$ST{T z@u68iuy^g`_}FnvCRGw?l0XMdRTi@tO52ZLKKs09dFk}2M=zerR)jLmG!sAvL6OBQ zMuy?@XErqZ#;T387i?FgGZkqTfdPSHWiczGXnA>j@Y2OA-lYg<*s#ha0s{gm9^Su_ zl|S=$YYjka4ZB+Ji)*U@EQ=|iVFD1C0|LHd^TFn*k4S1)%w}7YNe76(I`9Yjqg3#9 S54M{C00000WbcEP)+EqJCp26L5gL&wbP|-VQc0+U-im@msZwZ!5D|$&frb##5YE3 zxI4m~SK|@v&g_iYSttIPeEH_}%QycaKs+2g*tB*{^7#rROdXD0yZ7oNk!cPb{+LawS z=zSR+GGR-`C36I0(s5{{`f6?6fLG$-G1OR}7c%+h7nRaw3}s96CgoCUycR-fgEc~m z=)zN0NH;q*8y)C9gyi!p?Z;^&(i zk**7g->`mY1@_rm)gCd7m+Nbi04gnur_&yZa}VZc(w*_9{-Wy!>grBoG4hp48R76R zCf9W+{rdrJpm(1W3B!5FeBa#(RjMIsRLl7cd;i`ck7K*hmAP80g?KIX}sf`d!IuS(CG6<%!2zD35p9c`J zOPc5dBv_0=2pPw-&)LT&7lh4PtJvlFWjwqI90w+V0Ppz!tYblWu!+Sx%k3rnoRv(G z;fj!Zy31W;xQmoC*siq&z`0Q_ZS1UHiEr~kG87C_q{yJjER4ZsxEb*Zt31uUDRJvAiaC=_F}pB%L&pY|b?8=e8J7 zU#(U)PCZ%roiBb}Jm8|)Di8m5C?h#M7y>90;NAOpdTYG*aWL46uhCy~7-0k*#)=N} zir%A70VpSddp^$PoqF2!^6`b)6R#v>rj(LWkd%>9uYc^v)`tQBBhMajjhK2gvu`O& zu_IHKNn}(<7Z!Fmi-03@j@xxM#3YbJvPuFD5S62HAdrE-p%IGaFggE5`_LE20fz)R hWRSXc2!I0v`~!AuN+V}(uf_lX002ovPDHLkV1gVEzf=GK literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/na.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/na.png new file mode 100644 index 0000000000000000000000000000000000000000..d685c4973d04e946c71abc577401f291e90f03aa GIT binary patch literal 559 zcmV+~0?_@5P)0IC zUr1A77zg0r*^cwf%`w-g<+{)eEs%l+5)=fM{SP4|3nQf)yAe^LGEk!en?)fJcp*VV z7Znvr2tgR(m0g$@k&%^FQ=1J0J9G1U-|u_tc`RTM$OATD19?CJ24H{z1w;q$9Xn8| zO6w8^Fn|U0_x9`y1#(VdKAj2X);!EcYs0K}*2LwiYr9!$cPR2d-dhrSG$b!Zgp?>H zCr|x8bNqh#`S`>eq+kO~Y*OjsXf&3*SzSWQ&V^R_J}*QPh-3%4W-5Z0CfjDxpUcDL zVAz1tTJNcipKXW-N1s^_AIO>#MN(V$=ltncs}py|lCE+IM24VX14SL3J0jkkzyGp) z_$Wl;^=Es!Qi+P|)5-U9;|hulv0-f(4Ex)3%f`7WYv7u=N{FO7vDDc-QSht(-MLIY zqd=q;8)Bo`XfW*3nlevAlSE1HJ%jW?}uGXl*nUtSn#v x1AKXWceHG^Z}=iofB_W100RnOzyJ&c@ee@n6`5j<@iqVe002ovPDHLkV1gI`{L}yd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nc.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nc.png new file mode 100644 index 0000000000000000000000000000000000000000..88f4ea85595b0ebb0b91176a849cd50c570c1d1b GIT binary patch literal 470 zcmV;{0V)28P)F?)q)tLf z2Q|jZ(?JokIQSQ7D{WrxJ@;OR2abMxeA8J@!i5(8K?eakgdiYjZq@)c2~nKl{{q4sWDCK|#}md%t7r2f;oH0t$E_Hu>Kmqb*1 zJ(-!&TR#UMO^Z^6R3nXtMy&lB34+IY_567Ma#J_AG(wsy`fcy<;)kkQxmFs>^8gYG zsPWmSqny%Rf3~RXR{PrDZEO$KjBX^&trS3l;K7Yq2v7h8p!h$30eQJW=3WS}ApigX M07*qoM6N<$f;l2e? zJ!{ip6vpA-ll&zHq=+bzL5j2p3U01WI=lA+*wrqb-26y_A3&i)vq(2ZNFmU{$rqZ^ zJm;MIHd+c^SMwhHh7lVQbP#luDA6VAsH01Cfo?Hy4zJ$=mYRjiDwM5qTsf+6r7Ns- z#reVefeQ%x#~CVAt{}?_S2)8NuI}uPXm=l|XsfTs)7e8R09*J9{!4aQwq&b~Z=8Mp z)K;t2bUFoWV~qXfqZh}{wYQ)7$xB~rtu2?!K@#A90B?N%=J^M&!{dn`zwk9$lQc;3 z6^!x5oozpT?pXW&Bmbw_lG@Sf(ayb{UR{>4EE^fwR!U`C*2ZL*%unZyH|)RKU;J7` zMO5_ay?Q8m^~mTIp`MDY+P%Gd^6q3{M6{f3&7vYzSrLj*q%ss)navvza+F<3H==?94E8IRE#bvqW?BzYebt8(|}gqGq$%cyEMZ=)d~g=i4+ulqc#U zL?`yv`W8-O%*^;qf4)ECb;RvRuo%t{_v-9yd3L$7qzo&qPS;PJfXF_EzBXF4g|(JE zyK}K4q^K-bjImJ?)n4zEQX>N+se=LAqMD61)_CNxX8*&NEP>2;86>5W$|yV`$PkmZ z8b!{1iOxUG9-3upoAtRNx#~YdqMnCHGz3UI``IvJD?}2#RxK1!U?V z!C+J)3)o5Z1Wj`~V%Q1~t`B}4jQnd!5^hMLD+g1u9@IbM&z5LCyghuWFN}r(fY+MS zmJ<5m!4&f?Of5{0P4AxV;=VS&R>&7>FE!n_2ja-a&NgbR03jh zbP{JhtdA8+8j%V-DiSnqCA4|GxjM1Z-I)#IAd$&nZZJ;b{hR%xjU)PtZ$9f(Adzni Qi~s-t07*qoM6N<$f~0@ZtpET3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ng.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..6dcc973ed58f8f3f4053bf8db7e82c1cd351d73e GIT binary patch literal 341 zcmV-b0jmCqP)GJ^AAuo{1CRO^Bc@1B}hp@0QjfG$^aQJs-HpL-9 zB2KZ*&NB0{6W?J0ARz8O-5u>8B>|E=E|2Hm&JhF#%*;G<_2Ft=r*phJ-frGOcQ>%D z?d8WyQ5BWz`p5Om4D|i)pN?%OVblNQ`1a{`WK`<(@RTqUl6I_Eu70KAF*3?kE(SAT ztd=50|GAS4kKs|N%6cFamrItS=2e2mT1ggSMmSP5GGx73sb3^i*YJ>49-ZzN(CG}1 z>QdzVO^~%R)f>?2Qd==%W}%{!gOhSeo~8*{C$P8KJ9~fTw%d*wOniY~AXs4G=IhOF nf46>G(!=w^#peqGfZ&in(|mRyKC9Gy00000NkvXXu0mjfOS_zq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ni.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ni.png new file mode 100644 index 0000000000000000000000000000000000000000..44d8a0d3bdd998a2d65009f661279172463aa4da GIT binary patch literal 372 zcmV-)0gL{LP)Ke70+B z>BE*3FW=|%b^Kg-?bszn{-(9mghJ6}lQ?`B?>_!&ZoldJ$#8b(Bs%t)AT`Nymb*Sv zx`^kGfKO;pN(>%PP;?R{B$13FQV@|wF=UqjC~&&Kd|hM-|L}jiedQ?t*ugz7F=D&0 SSi~a$0000#G3(z}!7Rf}A2$DW;gJbf$WGrFz@jF)(2B zD7*Vun?Mc;DOAXiA21%1*xEGE7K_DnIt7pfL6E=HTAR&ggY7Y$WC_0tt&tqO4E^7q zv;;uI;l;_>@$LMzXv&=`xv1jOO}eCmt;x;#<$(L=r`JATycJz?r+cZWPA{D_?aBHo z@Hn8m~dV!~g&Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/no.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/no.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?40zRc))PE zY#xsK!V}Zyjn1NgwO|mPCNPrEQ)u3i+N)E0-7#%YlcVdZ z=5lgNCAr0-imR)N#y8aV&hsnyjsup%qCjP!q`_S&&5ne&)Ub@R6wRAhrJ^00000NkvXXu0mjfi;bY( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nr.png new file mode 100644 index 0000000000000000000000000000000000000000..211e42bb19f061a27b3fc91c88f3c937f07f9de7 GIT binary patch literal 391 zcmV;20eJq2P)F$CFp{LF1P~%`d=OZH3-k1KL!vd1=~*KIFTZo zie%c9_qMkh08}0RIC09hJZ*>axjRMq>Xl1CZwPG2CC84G?nt3Br%k!bq=DXWQ41He z0M^Kbs&X9Lj%{f=pdBkE;CK79`*vmhAty(&5Rc%BDylG1MF}fP)D~9{R@|;{+x?y_;+MA3mS_nsk~}w@G(d5^2iU#>?+sp@Aav;P#Epjk}NT-`ae!cQ%MAGE_Rv z**@t4fChBQ?+*^YAD@2wdNd3Z&W|Wbwq)5(5>EpIl^S8^&Hm5Rv(?K>a;VJF$kr71 lEYM$XZU6Vt^Sbb_{s6oKb7HyOiJSlc002ovPDHLkV1oOXtaJbX literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nu.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f7f988f474fabbb28b5cb7c31f00da370514b4 GIT binary patch literal 468 zcmV;_0W1EAP)XQ6DYWG&gSl8_|jbD^Y2=pj9Y zmv}zzyEA9TnRh+8-A;3FzxkivoMF-E#k824${SHR;fceZ(aL$x_hzpL+a88CmKL(z zER7hvM$?1hC0u&lH#7cq6?Y?SxVitbuqJu7BUW2CHIFRvY{$_=g3*8oGM?hw6|W_Y zRjhb9e?I~2qHy=#G#nJ2d^8-*hdWYe6e?dzUn%J@=D+!lc#1RHs}Y``jrR?SS0g=> z{1EaTwKQ5G$xsinB1UT->)NYpD=WTXx7FA zN|?J??cVw9W6QhCqm%x66Ks7(dSU~oxxKCkWoSCIb{z6Rmb~hA%X3JPTGP=8APqYY zteM!vsI6c_s89#6*TK0) z1)N4lqJ}d-Wt@;mD-o9Vuq!PnE*1A|qz$*mfiz@f&|dTJCaOPRj&ujH0X{hZ0000< KMNUMnLSTaGsM0C` literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nz.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/nz.png new file mode 100644 index 0000000000000000000000000000000000000000..be935de872823591e7f7f71ac9e4230cdaac955c GIT binary patch literal 529 zcmV+s0`C2ZP)4hhoFqMmG|fqq#t>`4Mlk`g{Q(xiNu{9ZXh(5y5LX?fgS%s)h}eSYA}V49 z6)ZaFQ0SLM2m3+O(3r%=rpZa(=Xu`OAt2puF0O031E23qzS~bec(i;!wHmgpd*vfH zhV;dAC$Bsy0WE+52HJoE6krEVr*F+YpWtM=z4je`3z=*zm3XsIU0mNM(#-n2TmI1K zZ}?1XUO%3+XRH^&)k5TNEwooRemmsF+oaF>>Q!yjCo}F8bIsp%KR&gS9L&Z6wqCj; zl*@;Qa}-PHqeDF-XATmXrO>es8%6T0mikohn<@=Vcts-uD62YlIS`FK-Eg)7-WItt z^+7wIuZLr8C3n5Gq=VVYz%_UCgsEMK6af`H)$n$m)R*NyzTa7|(#LN*E4z~Fk;O8P zJKF_QncMRg8g9RCzBR+!Ki=E3zwFz=ILGjndzpm#_-BPyN}|Zz+$<Uw5Q$Q{Lq?JAdPG{0T#s%riLeHg4KTBi5@P8}iiDJ?ZqNKMz2xa;r?)dN zquroIY%=L6kuVFhCKh605@O9P)1k3Tk>b2gix@xxz*XSj(3c9}L;F8rKm+bS_>elR T5|4?e00000NkvXXu0mjfp5FDO literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/om.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/om.png new file mode 100644 index 0000000000000000000000000000000000000000..ec95c5aeb9f7a3d0b7f320000bd360b33b6ad93d GIT binary patch literal 339 zcmV-Z0j&OsP)7-6V|V~PgQQO9X>8NR9KhVbCPgew8o`~}S&J9{P`_ek zmYrpr34U<)vI1-yo&BN(aJgK*&SpF3=g*_j!NFb?fT~aX#$vH(0px16dvWph^c3^? zpS_NzX(aUkY#bgg$K$QRz~q1J4%^KHI2{h(=JS$@O0h_j4i>`^CM&|^cEA5Howf!_ zS!7A3AR+=J$cm^=yC4B*1yrgeGfef!Vj$Q=G+b+Sne43(NJm(zh?`qR29xwUgoCD1 zC;NK5Lkqx?Ns~oJ##b*HNjhZ8sZ4nNL7PWMMOt~hLz+y=qA5$I%uHt@AvE`Z009OB lTwehJ2zUhy_+#wWz&pI`d3buklDGf>002ovPDHLkV1mtUkcj{Q literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pa.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pa.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a6ea5083bdd4478726b97cbff68841a5c983e4 GIT binary patch literal 390 zcmV;10eSw3P)KK$qutQ)EuSJ=?cz;6OM1P>kE2ci1$J)!T+W8W z?CpssQ+b_=iw1BA(tGVI`43|ZHJe6RCRSTrh@Ulb-sx~WRg4>kt=fx?>~Ue* zsQq~C1_O70=SL$fi6}$MC|5qv=pIv`&=_(JplYFB-|uw7@2u6*Y_vN6L|5vEm8Fnu kavnce)Z+*kC_Vw;7e9Gj3Li7IC;$Ke07*qoM6N<$g36t(0{{R3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pe.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf08251f11d5307987e52e023b43746df2e0669 GIT binary patch literal 264 zcmV+j0r&oiP)j81#0DaI2ozNAHPyp9NG>}}pvpYHX3x7h%Xb+Y=Paf|yb5{Y^D^)<< zwA~imW&$`K0avvuRx2BDvzM^2eKJ?xLVT->`O+GaDq;PUK_ zcy-(EeE>uhOa(0y$r7Pg_cOr!2jxil40fhdEP)z0JU6>$_q7{?Fi)V*u`+6x$$% zrM-*xN~}LwPg~7{-R-q<-Vda^Cxv^EoK7m6jrFT?)!esM7pvvTVydd)23XqPA9gwv zaS_JoF=k@ys8Fr4ynNkkCJvZrsaAtXP;-?aG9lvm2(C&qnwgmc;RcBLkXjJ>fA5h< ZfM5O4LdXKD002ovPDHLkV1oRcrDy;E literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pg.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pg.png new file mode 100644 index 0000000000000000000000000000000000000000..87160a51eeed46993ad6c2ca4c16c11a79cd0f98 GIT binary patch literal 438 zcmV;n0ZIOeP)52# zy=s#I7zN;yKahgdwa_{^Wbg(83dMk%xalBt5g`zWx(U)<9CQ;J?BE4RjTTfKI_V&& zix`8@;iDLwREja_ch38MN9Y~+Jh%+}01OyNAb|uD5KsaO;4kn8I0SwJKY<#6hnt(1 zfOb`(s*veOWH-o;JUa$AG)w)&k>nHj%y)D0|FVHXOhze)`=yW;&#^bS$ z9Tdg%=;$>G=`30MAfKY&sCIIBF`d={%;)pbXjGP^?RL98o6SfbN)N~z(l^qNg)$rw zKodYjNE!?V`}_OD;gF;xl9Jv@SI9e|YmxO#08Ic=tgNgQMKPI7R##VbEFvVuvF*$+ gnKv_A_)oWie?Fc$8?L=T(EtDd07*qoM6N<$f`M(r{Qv*} literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ph.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..703dd735a599186163b9e8ba245bb30bb084f9aa GIT binary patch literal 416 zcmV;R0bl-!P)uC1+2?hgI~fq_v$LqrBo2m_s)A_8k_Fvy~o z77Z%R@7L+R?^Ot04);65IhS+q7phcB*=(2SgZwfU%7TfoL=2J;u+nZHRI8)SX2%$4 z4W*3MMk${tX{6G&8!2_QS`77iuaQWMb+y`y=iPU^LTi!|Qu+!hw2)c|pU2~Fy}s=b zO#)rVdB|jjbGc+ZJ|P6GREZxogSp}n9LX_;pJ$>HP)a3-^7-X-nmxKNjNki#!AD>S z6TK5X0gu2KQOk7~3x%>*Of^nBN^p9`sgzJmVru$=uG!!MGr$}uMwmsfkE6tT`Ebo9 z!$5arVv8uuiL7CRD2lrlcJ^`8fZcjfP4;Ta8a|1pfO$GQ$KEd9I)l0&qS&B`&u0xw zXrIvWEv_yp8l`cUj~cQgDd-HX1Mt@25pUsZbJhHQ^51X&M^N84Ayxav7{+4&0000< KMNUMnLSTYFRJc9> literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pk.png new file mode 100644 index 0000000000000000000000000000000000000000..f20f3f6e2e58290b6b2289267ce4763542c78646 GIT binary patch literal 448 zcmV;x0YCnUP)=ubhSk0z^O>UgQ8u`r}CG>D=KNm$`n=$ z<(+as5DXOzbP|n6;1(jWoQUbM*XaugxP8BC+%yL602FY=154Pi=0E}-ynnx80F`_N zC;+8hr`vb?=qFI%n39wWgy4Rc{j0sT{nBO$6L-PQC2|*!7agaA(FFua{w#rHXahy+ z*Qbu_9B&-Q&3N;^`SAJR3!e+|dxt0`P19`4wsecBK)u~-x1L%U8f8>p*0)kyLJ3sR qM&pqT;d6icWSe~ad*H=~Um-t-%0P@Z6Df@V0000XRZ3`Cz{YkI_;xdS(Y=J%ka+3|W(Z1TkqM9OGv+437Xe82OfTC1v{-l+i`4uI_d zzy=)l9(La7V_6#Cke>&?Q$$o|`zJk5Rn-b&rH%jO4Nw&W;(Ye9IFn4TmaKHjk|k%x z>2$wb8sOW_*Q?dh0w(GAG@CCwuU3vVj5k>$2002ovPDHLkV1mCZYaRdq literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa799ba7b2828c1ff5881703cad443f7af4dcb0 GIT binary patch literal 572 zcmV-C0>k}@P)!Fad1*;E9{k_@y_ z-^oMJIf@Ql{1c9n3C*_Y+^es1d-v~spXYslPoEFle--n+Q^KLa<=O4e4*?4xpbmHe z10Wy(m;eVHfIMrdsn)f7bY$$#p-DH^mmKYzm`J>P@y{C^fB&-J*G?WE>w0p(T%$An z2Zl2%KR6L7C}G=f&CKVUYq`dy$&X5|1lmYN^)(cg(^O8^Hg#n7BMcL{~pzhM67ghUsekl0I`*HT8l*Y_}H$^Zr@mP80+g< z@9EsQlKKjWOtxcaAp7f2=iHZ}i)V``F4TBH(`+dP5lFdYpC0|WQ}%Voi-Go*Bc&qI zs5`DBYm_k&0;BPw&q7xK*yUHJT6(1=~%lAz#lOTh5$YSbW3@(7QKx69v_> zq)Y3?(9DOCLczDCGqXbVDj7Ogt_TKd;7vey9l({`AL#Mz4fkqZa@cBd?D?mWmd!X5 zLcq4+;kG3h_ej8Gn?MENz&GGJCIJChfB-mP0vsTq0<-~jAn+gQnhaw|f}W880000< KMNUMnLSTZj1PCSo literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pn.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..6f62a64d65028c5476d34567d7ac3270e4112ad5 GIT binary patch literal 547 zcmV+;0^I$HP)afIG7h zT&Ylq7AG zWe37S^)W>S$MvcfxY(3F3yxSqW70W({arBp-LE&V4rNYV$pVmSj;7BH274oN(M|NQ z#&qvZ)zlrwCL9a+C}_oe3grI{K4)86+&P&5*!}+c^MI0EkE;3Pi!%WxUyO}#wZ8CIr0D*%!K lJUD#hf3znLfdC```~#EIFIuRXQ)vJI002ovPDHLkV1oSA@PGgS literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pr.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf609fec44eba4a7abe9af4267ead44da88eeba GIT binary patch literal 445 zcmV;u0Yd(XP)EEEZd@#z*WB5K#JEQO3MC~;DQ;*MLM}wP@)x+_W>-Q{F4n}2*2-#| zkR-`Vrfq(|^E>Bp&X|O!Z%@y8`JA5bc^Ht|L|XubcfbPV57|YbR45q$186y%Z$~s> zoH&`uO+mIKn@gbz`%{v0B~_e6A{v+t5E0Ng}nY5|zR*^is-~bXo(U z5WT(N@fFT8TAW9%j|@hCgE97$$tXaque07B939eG9FNa5SQlx|Mm_w2xcSvgF}wW! z zJuAg=9L3N7`ZFmdi{X}syb;rlQYIzJrn~{eT`d;uHj9)}Hz_Hb)#e4To<*vJ2<4BWTd=fF*7W=e{X6rYg%YLcB!rv@+vFW=r>N{3R9l*Dfe z3ri`5WV6`>Py=up(yTN|PPFE|w(7sAs;b-V)(PPGxdNOy!SMN+8}`adzitD_%*M~1 z*Ef^y^?Y#Po!x%jHV_f@hwR6vbb`gMy|Czw^?uu~Yygb}OlEn*%S(5-c&_!Q4ZwD0 z)(H$mn7o+bUTcUtDW^viDHauGM3Q2prbni(wyx>~9){w0Y5aP6a9j}?6q$^SP{_dy uNwSnepxOpD7lBcrd?kL3j~ze)0RZphpj0tEKjEYR00008}y6ot?C=510dr9wK`A%cS<;-vlqo!mOQbn76UoHKSQh`&JG1ZN8h{sBSs59pvv zouX-piRpLGx%WCGp-T@BmowalJKP3Ofhm>=pu*oR>!nmoFx(#kh=|DW#&Of(YNU=- z$dqz5r^m+?1wfvh{@UpH{l4GpQ@gGayKkANOk>j0EXigt2%rLpNDqJh(6?H3-#F*Y z$DHnQ2Ns9{#(fM0^`I)^<`|#S-V;NhLOF@Jj?f@$Ofzr;_4n?^u zi2*B_n*s?565JOA(BJ_u2F?Kk&Vho_-^+iz$bXL4Mt1BMzZU=i002ovPDHLkV1jYa BxYYmv literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pw.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/pw.png new file mode 100644 index 0000000000000000000000000000000000000000..71fd0a48ca2684615fd95151ece072cb82063814 GIT binary patch literal 424 zcmV;Z0ayNsP)3$EyB7dt%O!(=v?EHC zL8xo#kel4nFPBC=9l+YA(`0b&@cV_MZ;Rv2+QPfl^Ubbum0SAwbV2F?$tfbZI=^)N z)cwM`nL9iC+Pe2@WwGL#Zt0d#)gdK>pler7JSeO}6xO@4dgJsH2DOH3x~7{W&Z2jfNpE<`XF@EC4gh{rJt7j9g73lYSHcmtQ>!Yjmx1mZuUPS>k)G0`Mo z@hGa_t5?u;Cu0UJ>VGR4K)(;b5+p>JfuKo{&e?N3xwxnR0QT@65r}ZkEl;b-&W)SK zIj7A{0Tn(zT-T5Q*oOar*+H_6qR@C;y{KL-OO)l*0&6h%zC2gX_0Ar8y;(p?*-*!?e}NT10YpMT5#LwEbm@<|LYXXodv%QDLuY^uGC8*wHunw04x04 zkY!Y5F?<*$bZ-xjHtt55R3=DenpB<%QwqAbUY{LbS7^lWTDJ%m3^NK+5s6WfVmLw+ q6s83rp}av55HQcJ;M^0l{Q*C3?^f~UJ{1E10000<5F5cFM2M&;B0@mHMyxDS#Ku?g8N^P65RpK# z^K+e_yPH%FchB8rzjNl!ZZR2+1ab+;!F==m7YU#Q7*~ogtwOK4Mng5Fq}u-GBL`}4ygU8NexR;k)tSj-)2T12+auev*%&QYLxkEI#3 zLpH!nlU}E7v=LNi`y;ZA28E^u9fsYTyW5TRj2fn#Z|=#4l<|}#y|hly(CN{=1B%TZ zhM9QP{qDo%+G;>#U#(iM-_^>4_Q3vHztXprH)rUe0;j!+h$MpZ_lRo pM_9NTdN>$}m%d+FTKJQ2rPr{PtY0v-w002ovPDHLkV1fXdoB99% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/re.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/re.png new file mode 100644 index 0000000000000000000000000000000000000000..744ede391d16ac05f95b95342d5f7d0a172c4d84 GIT binary patch literal 369 zcmV-%0gnEOP)3qN zJ&II87zNN<)z4rACsB~r%moN;z{pr|BPJ%sB8Db1vF>TMAZA8RH&tKVAD<0^f#2%74?be#4>mT1;Gd1z>5rGaPjuhEcdhbbEYrXd*-qrA&UNcn&Hqx>s zOQDsd_a5)E1K>GR)3sVv0b3RANM5#>!{Oi^uyxpN=Q*>=RgE;T6-{Nylu73wlCrC* zs?_RL1#F`zoAi>o`F@GLjf521W&v4|9d7Qm}Iob|P2^iAXT!n>+Vfyr=nfxaFLg z19#!#BR>Sd3ghO(<>@0ZHa6oIzQ8xnr8$8PCkx0ICcFxgE77)Jf*U z`OM@W02oZGQ_3G;+xrVt=B|X~4d}L%si-*uW>UvW%dRwC&6K5-*fsw9P=yppFu0fG zDwk5d90A*h%A8T5rW+WbQl36Jl%hUa*E9IJECqsMi07hvi(!FxFhN_7U*EqN0}F$N fzvGvC$J_h{C#`RtbM7A^00000NkvXXu0mjfZ?lsw literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/rs.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/rs.png new file mode 100644 index 0000000000000000000000000000000000000000..32f6cb945b304994d4e7c5751537f239305dfc9d GIT binary patch literal 376 zcmV-;0f+vHP)LE!klpU>x!5lKsA>0B-cAP52@B2g4sS5?zL{HI@= WiT;IonkKve0000Z literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ru.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..096b9c44e7188d50e579c8f9f1cd41602bb329ef GIT binary patch literal 299 zcmV+`0o4A9P)!b-R^tnn=|vA})IY<F(nGlM;W2nJ$gB7%Y7ni=Q;%=8cmNb zVgD8fZ%=O_G%`fDD3m-iC0BX7W4^?}qmQpBFZU;`*X`$DET)InXM=Xyw8Ks~?UZAV zHe0{8`u=WQ8~`@%zl?xqCjP6vU%kACA)&Rj1K|16xi&zXB*x+~9^B-ob*3^avmz9; z$x1r2f|aSdex=?&!@vnnx4bY8hjP)1J@+cJCp&XW7CEt0RrO<2SfSxIum$4G^Na?d cT@*0z5BRxg!H9UPwg3PC07*qoM6N<$f>t%CqW}N^ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sa.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sa.png new file mode 100644 index 0000000000000000000000000000000000000000..03cecfb8c9e916b77fbb953ab56993ca031547fb GIT binary patch literal 428 zcmV;d0aN~oP) zj+>)*U*F$cz0t`#MV2275AJT<`#k#e;_Y*%p8*U~a{AG1+MVmIT)NULdWYk~mhE&l z{ZUT}6ehYHKn{aKln)jMYlF3MJ*lm(zE|DOeD$sB77N4iaIe~vNb#&e!IZH3@l}>G z22EyeBpbGQmQPM5q^C&dfPtdR&D+h}n+xS)O6kv5{rSGjpX@wt)iN#ubOyKIY%>%J zlR4dFTlcs2zwEpG_s{@JH1ObZf0^M>R=B+#fr0I%Qj>(%M#K{_LLbFC8C{4Cz4JP* zCLTZW0dG^OgTupJ>GV(6RjroM+9M6=k+vV3H!nXw)L&d#w{Ms1?Deb#SoOLI2K}N< zclWktQac&SE^4_eY3M`nM{pzU|KgW zO&=aCd}zqE7w(oQdZZx$t5B%r^C2qC%>0_0Ymgl$Mi$N=f7NuVxmAC1(WOz!C<;Xc zfCZ>rZcW6?O#dE?d_Hxw7}>W}-PpQU*r?Rjm8YnwMA49%?SUboloLPmvcGTH1j?_! z?YL8PY1kIG+ajX%-v?`Sq!NrRNA?!KL!P~N@+)8IQR%ju6eWhDwHOV+x_IPPC~&rS zf8|p>^r-wpJbO=17d1r-g_CCLMW_*G=^g9;OG|&=el_6<{!}^*rASr5QKCo@Kj))Qo>Ua z9mPXK3bm#Tn+#^rlC|mk`MjT}!`F!5;eiL9Uk-Qz90C9$ptrjEV007!%wPww7N%%;D-=)h^pXT1k^~R}fuqUEkD$_obHbJXy6HVf zMldsj*;xmuYLvTD9~x?r%BR9No+8J-5LhU1dYXl6NIUCvl1sicRUT>-Qf&etiG_-M05A1B3p`Nr#{P zgMqmxUj#Ot@|kqez5l#Z`H{Z;k046FefyTa;yMFEIRiud{>r7dV*M4b_C53grjwC!b|t?POpG-&wTbe(=H@{`0PRXCH9uI)|)UtKzV#&j$I1 zV^Xz8tou$gFtjo-1aHsZaL<3*70=oeMH}xTs|LFJ>({TL^Daq-ZxJcjZ`OB`fuWIs z!GCMkylbA#r;gnH08#zs^Edsn!&*fLUwrud<;$1PpFgiZ`$QmOlX2;O28Lz^2GO~d zoA3Vu1EA`O2OjEW?bEC{qFj1NE_Qpvwws?mefkIn?vsH|N@NI~e;MM-FF$^U%)1)U zc*1+yMYrh}oTi+!?K@*xu-~-n)LHfWU}M$XLWk z8}{?+%7G~By<+KW@3M>~mN|@#ejWM2&_54upE^*30dD_F#E8w#ZEFmyUuY z(T4{IAXuPhclvefcBi#cEKJPXIEbQ`TFrr=1_?stqkAl_Tc`P1WEgv(st!a@Qt8!a zAuCpkvD;=AnGFuAzoy=&+H39jJMMk;RMpI?jwDIa@An-PG^Vd?a{%glIjn$H~ zlA9{3sJ2=LYUlvt&H{Cm5MkVLCmnZOah-&u+ z>t|JDQ7sp$Ar5n9&NhJK2~|yRUEOR7mu?{q_x82Rl$)kSN3vwufCsjo{vYzk$9)hc jZtUI%2-Nxv5HNth+_`y(blKyj00000NkvXXu0mjfSz4*l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sg.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sg.png new file mode 100644 index 0000000000000000000000000000000000000000..84172cae18682fcfca869831880a2df39cbd5d76 GIT binary patch literal 350 zcmV-k0iphhP)FP=Gs-IAhUW7$xmq|9$WVS6- zkiH2anY@?D4CCGb7{E0e;5}6p#}uN!FpB$5qKDls>Gk|-#rwU@GA;_*ZUd1RAhHCA zA^NxZ+=(d3GTdxvxpad;Ih)x|$2>h_{;E8W0X=&!anf$fAu0$}m2|u1@yLtC-Do7u zJ|+{PG78VDCJI=r9tqcL*YDp9hyG>pIh|JLbKP47kt$x;2GNT^j;Ia?pXUJ#q$$v? zZ8kYhZ-p8g1Cc>8t(K78eNosn4FZVkI;^#i6Dj=HLsX67U&{|XdDD)?o? w4~#MJ2a;-4UkRAY(}}-9vMvC+tG@mLUzcf2*Z}}ic>n+a07*qoM6N<$g5yb;GXMYp literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sh.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sh.png new file mode 100644 index 0000000000000000000000000000000000000000..7e724d4781121b07cc73c3ca161a9410a3bd1c5d GIT binary patch literal 524 zcmV+n0`vWeP)D7z--kt2$Er+D#MD$o zAK$*`xkQt@GJ@YllviQuQYlxhmpB;mvXMAug%OKY>)5g}mAiXCcxRh-r@LDIu2>Mc zri7nPmxKC3wK-nZTI63He7G*TtSU<@scTc`0rE#q-;9F9)BdxSw$4KH`rMvVuA^h7 z`(QnG6ssD0ARpAZW?4u9@&_JVdb@f5+_y?tZpr__i`PFVx--4`Y2(;n^KfDHtM#cK1;_`;sj@g< z*;8gV=bUFkti(L|<4Cw6gtg|UGok`e0Emb&D~U2Ivk@z^5-YQP{Jg}oLn10t?Ah85 zSO7$<)|F0)D2uTei^~5xRTEKBr+fLeEP@7DNexje8GP3Au*qbVdeSqjG1 z_WT82)%*C_|M}wI-$5pstz~QLa5530D67lYfNG$lFrOz01w@dAgoMc@L`*VJM!*}w d|Lv(2fWKadTrncAD{24$002ovPDHLkV1f%dtDpb? literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sj.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sj.png new file mode 100644 index 0000000000000000000000000000000000000000..74264c5866b6768e421e265c20b7fb4920a50f61 GIT binary patch literal 397 zcmV;80doF{P)uvT^z*GMerxw97J#v9TYe53l#hS7YA42(XS8+Dni|?6{_e^ z0>#DTCf9r3Yen=DPLjhp$+?MsQKOn;p4@!+yjt!V6P1buSuW@orovWFjs=sYFK~w>AL=Yy2 zQyrvGi^l;I?+2nvNDQF(M8A+ilC z-upmy?U^%U&b_kn_%fO2naMYEl=;X25adB*1G1LukZ5N1TO4ayF$cWl zPrN@qyZ-ph(lVsqnTgRzrf778|3N8*h;GZk?MQER`}tK#BF>Xj5M4EA7juj8ECmdb zF@%N@MN?IU8yP-#4-S)UEmdvVEDsJrc^UWgnDL31+tg*U2oN=rmIh5Zq;O3T%)Mg} zga{epg*i^8IlAIF{FZZ&SQ`+6s9B?RjCUH@At=;ux`sA4@8a_r`0N<#ZhY7)*2WIe zq%=Foav=3-uMkwb0Cka>g7Q$Nsdak2AkvAUovqaV5m`3c6OWU|!rJie&WhUr5J+6p zNeo_Nv-Qnt`#89 h?<4X8zr#Nz!52&4N4eeewA=sy002ovPDHLkV1iSV!;}C3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sl.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sl.png new file mode 100644 index 0000000000000000000000000000000000000000..c59445bc58f0a680cdc492f4b8b28e02de365df6 GIT binary patch literal 321 zcmV-H0lxl;P)RhAIQT4Iq^2(ht|Sf>bR6R-=yoik@F?tA{B9;Wy> z%pWreclag&1OTvObwGf~02Vh301l4`ib62V!zofU7-bfuxVm5E+V|OBR5L)AGiWlC zSy)l2Jn2tBK zSwhW@h!6NxNJ-L(q|S){g$PM$I(?ka$A<&myR8{sccd@ix7*!jbH3ZX znaND0sFW7WqL{4I8a2%Tc*+3HG#;O}r>4xptc5z$UGCuyKnb}0eB;m17pQ@Efl_hy TH(*S=00000NkvXXu0mjfwG)i( literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sm.png new file mode 100644 index 0000000000000000000000000000000000000000..65ceb3aa4992c0563b49e9610e38f668846b1a8c GIT binary patch literal 396 zcmV;70dxL|P)5iDIhic1Gyn@e|B-Gv}7IthhB=~4$Lhe8Ku@v%4yBGIL& zpb{{k!9>jczwew5*T@AA2fo+&UZLF+h(1W>CU;qckpxl@)j2Ov5JcZE`9MJg8!-`LkuH^;c6Jta9>7Ad^a!bP18*Xv@gjDDg=i(%7!`MBcP##2 z2oA4(?69-A;3k7!b8rB|Y?wJ?xM2sJzc>dbGnw_Mp~35q561_$l~;}wJJQwVwM7gCz8Rb)@D$+VR8Q3w*q^F(sC^V_W9j#PSDQyDMUTE5}+a4#nlHPyT z-`301x_9`Wz$SQFEss4W`uL+he9=$o;oW-vK&gEt?13Go#~#;|+lijsuct@)UG?lp znVSo1U&$z{E|1j}MC$FC5_Kwb-N%mYO>kQ+jnqntRHCF-lqglPaMKO!C^SC4bF7xP zx1zNK2C>Yk>E0MvynzBkLGk?^a6R)d#XR0`yyYMMEL)MlF}zFw0000D2?QCklPIUNCk^nOWC2}aHWLa61ai}oN zvll0=HA(vU7o$WKY#D~BP-d7B${g%XN?Ia&F2L*0>?}zbrc7DtX{A_` zkxjQA+~WE!clMdYll!dy@b(J{Whzov>m^5?4Mgw1@%SD$_aLk<@$M_<45mD((yHVz zLIp>sgO5L0T?IH=^ZS&x*zyGRG*`?tE0#&Pz0b=d&dll>%=D%r2URsy%F8li`|#=$ zy%^!ccP7!dZXK!Av`J-gLh literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sr.png new file mode 100644 index 0000000000000000000000000000000000000000..764f5446943282f8990bce91e575a50060ff29cf GIT binary patch literal 370 zcmV-&0ge8NP)UL6YyKFMc+3C*HH>cyr z`f`5d06+*y07$^3Km#!L#`(`L1BsWfv|Or+vTSVbT~NvUYdFay66aVfF5kVKwKTr3 zwET*#G)|r;2MNiY;8BoC1eq#J+LI&~nH!v(1&iQza28Y&vBB;sKpC41GFS)4!N=gk zn&aTldKXY;OS6{7;hY;cW#c5wi`?duqsdcFj&50+UHtxbcy-=W6H_luI)L8R)M}yq zvALI1v(&cqz0#fnLIK!LE?3MoFPo_y}kyRK&S!R-urH$cb8f0EJ57 zqB$2Yi}lRR^C;HIC6iyKoXoFX15VxtegOay&=$8Rw%DRQ0c?K1b@vn+XJ#69S}B*5 zlF5=xrkH&8;Cb5v%5`IT{bt{`l~h_uCTTLsjBtc_XxCwM&;scFu4c~n-n*_c%T)oW zz|5$M0;?j;nGRp2?{jWPoIS^?7+ztw8y7DV z#l&6SXt?xQRA_&%5IVFp7 z&{X=^9>2STb_3X$*UIUG2ZEY4O_@x}5-3Y4r87+%W3+F9!T1qYfY^$*mH(Qj`WNsQ XjXzSD$SouP00000NkvXXu0mjf0Ykv< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sv.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sv.png new file mode 100644 index 0000000000000000000000000000000000000000..03ce5ec83c01c7ed078faec72ac1428bcbe642b0 GIT binary patch literal 373 zcmV-*0gC>KP)hQy}UJL>vl{g_&5sq{O9USe? z2SK8np8?Kvq$8c_7LK5WTetBWQ2#{_O3ntr}DcFs!Oq^LMwW zi}p6jy`883ZLooIeD?d*i}7y-Y`Y&FPLM2cXMp`=oE)EC7mb(i4>rEt)TJiWaHd8FnugTU5oeQ4nfA|2tDL=rK{yw@6>NTO(Rs?_R{%NR?{1AwG|q*!cC Tr-#oq00000NkvXXu0mjfh}WhF literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sy.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sy.png new file mode 100644 index 0000000000000000000000000000000000000000..83de9ef018d6978647e4228021777d7768348bb9 GIT binary patch literal 322 zcmV-I0lof-P)S5Z)=dhMaTgK@C2SNL*sLYA$|4~uL^6hc@M1%RR`fK{5NWmy^z?IEINuMiEQO_C(f^Y&Yf!8ndN#9odG&@1$?JE(u)3q1!- U9T52_)Bpeg07*qoM6N<$g7RsN6#xJL literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sz.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/sz.png new file mode 100644 index 0000000000000000000000000000000000000000..6e40120260e4c109ba702ffc1ded5c8d28d06a6a GIT binary patch literal 508 zcmV0&S zO-R#m7zgm@|KD%RT2U4uCGAo}Iusaq48qh_V7D$o=Zc_<9x5Dylu(!6J5`__iXw`N zAd*hrBB3`63<{hcLSky0zdbMCr`6|^9J~6i9+mzBpdbcRp$t}KMO0;0Rz%j8kOqY1 zQ>7v`Il&$Nj~Pr2L~t^|;072lFg_K=bA7q&bzlAE0J%BLp$>Cbg1D(e+yu~cZCh`+ z9d4Yo-t+S-b8~JMTz)p}m6Iq>jNSk9<Iaz{x30000`UU zl}BwN5P^ty1ZU#p{L=hc8ZQN_tJLe+cxiBW=w)43zHdPdFo6OlrUEP9S#V!8?kB(I zW6N)Xc1Qnu@j}j1XZjz%qT^k5C-U85x@}RbZzUuw60uv}d+x^6;q>;8Keca8ek6Wi z|7N3AO(wk!V#e+1^6;KPuU-AJUbSiXc2 zh}|de{K8BO(*B4cz{I##_g0{+j&RWFMV7MpY|fi(vIvO$2oVIv8bU?DEEb6GC}47wF6 zJ#`AIoxi!hJxl<0uciO^`u^F&y(D{NUA;16t1LODY{PO8F00(4y`s(x9_HLUX zN{b)N`yY2MMTE4wyc}Zyz^^~6l*y*KcR$2V%1v2T{=7*koc-cLz_5{^DsotGDv(og zrIpQ)5nb$}fl;y?*;P;hR;;*^3K%Qvv=z~mfdRSXQlyB@R>H(F(<-LPn5Me^0ghFs zGKJ*7L4jh1(t=MVM;O;%2TivGq#VDN)cnFDpdvs z4yy9`qb-$n#pd3VwmAdbHw@gibG$qXPe8--Z`j|Vj&JtwS07$Hh6D@h&<&P%Fiz>f YUpgXslIxS<_5c6?07*qoM6N<$g6I6Ep8x;= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tf.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tf.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed6bc60add9a995fe62e4d55a589f2b59bdbff9 GIT binary patch literal 399 zcmV;A0dW3_P)*$5!WkDtF6a}s>r4;ga*&o5I&Q)YSf%yFPbpxdy# zs0LCMDMiwvNf#}dGB6)e-D$g%AP6$yQ!GkUl}Sl08K@DK-EtQABvn%nOLj{l?T%zX zBQRyX_28Y*Z z&p*lm`Vi2xsU|gnt4x{{=~E|;Y~5H(`o+`DjkVS3N+tEm>0^?m(3aX-xGeVD4_~fb txv=x<)9&6kKm&07z%T!ofIbkP{0rsVTot@9 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tg.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab18d070afa87ddea1b8b104d423826fd55bcb5 GIT binary patch literal 410 zcmV;L0cHM)P)v##n_i+dFRZ^rU%CclX-sX{ECD=&%w|yFj2?;S>HpWp+`sBZWFV~ zTMSq49v|?*`v64t2$&5_&uJj4S|5YJS}t2XrM{j=RU~bjG51qBF2~8?lHAOy7B8e6 z{h3Sl+IJl7CRUKJtIl=Lud|0PH76LKupCGr`jd%-*e7Wqaj3X()1z$uf>uT>=}8Nl zC8RZwI2y7eq-z8bi!a_ic}q{i&GbMa&gez!H*Fft3Tk+bQQWuaW8&F_d3)H_MRli;X!Mm8bSzX z2;rn8Ht@FJ$&vt`p8=!=C&+YykrK!xGa@6BOmaCImCOXt>e}Qklu{OpMY+9udAPs) z_*ltlrEJkuilQu9GQ+fw`}=5 z85zu4+uE+xH8QH(3kkpt@GX&y8fIu6|2w-@ML41Y%cggDadzH6IP8*1DrnLSkq(*^ zY0{EUPkYnpOQaof(|K?LC{c8k#ETlP|(n(M~;GULxqb(=x!hE zosmPyXf>MKo!z^&%`^C>XI3U7gu9O_S%j zwDTo&(&|w*RcPoPnv>gZytQ_@T&CUlPMG2vLc4%$(QRm843nEl^;voJp1eb+q1sX8 zkaS2MiAICb;$e}(H+aHff9PXYYbw-=j4dOD{}R9yzs>-l572{u;s+rPIwUDqOv3;G N002ovPDHLkV1leVqWk~= literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tk.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..0440c43b42c1812685f7f7175cfed0116f29d18b GIT binary patch literal 522 zcmV+l0`>igP)hf*6^!Gf!=hx>GBl!jg0H8+L0tf5hAO#UPP*6}H&K8$%wE<=! z5jHd3Grb*ib*bfGS}LbLe(8Lj-M_TDOVmWequVdyL;!^a7YllIxMlQiAzf2`In$~V zylG$SbNx4WXX0qFRMXs81r}kL58j8ZO@HY|e)!Dc(TAsNHHcb& zS1y^_I6F9Ye&n;0AmX2V=vCDit|k4`iKzzA2-I6pwOsY)i-FP?bdDhctLn;a4i>H&*`idsWDA+G*ec5vH&I@Xu1 zuU-iz3#-)wi|y0P^{oxn-h%fA8iR3gprD`tY(NnVY9S5|3=9mS|MpuYfg{6z)c^nh M07*qoM6N<$g4<>8WdHyG literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tl.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tl.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa1b59794f0486debd7c0e8bf16a361f03bd378 GIT binary patch literal 395 zcmV;60d)R}P)l=8luQGhr5&wwiYxfG}TmLV^k!Gf=fanH0Ipm5NJW0VM9hN$l!}B{I96LLKlP>TD00x6Ff5tWOQC zg*7x=%)`t>M8YgV?$zryfX5fpj=gPen9zlmX9cZ=$d@7^B}xgA6^$Ce24IZb-{_B? z-pX*esij8J39O_f@a$L9)#;&e={tTQ?!XCznZ*95D-Qmge;tDVm#IKNLL zO_oz7uLEDdy)d%}xUM_DK-pyqAG6%KKYf0|1lG{nzacThYvYqcWx_jSia=x$ff-(A phSr`8U@rlyI~5f?@}D1j@eP%wKER4);BNo`002ovPDHLkV1ln~r^EmN literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tm.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1b24dd1e1e9a9e95f690980f1515c560faa8dd GIT binary patch literal 456 zcmV;(0XP1MP)X=9IwZLI3}-t$PYKrn;LXpa-pB3`xVr)fGpkol-_~Kk7}L!$ zAqKEfd$Qcki%?D%st?oNOu6!F*t=cZ+HD=|cN%grka9X-)HWjkDDeB}Ym~Q-cit~l z&g`{6%vWb0zua6~y_w5CeLre++l_Bcx&TB72t`QJqTd~*N!V!}+`F;1eYm%N>p@hC zDoNQyqnVQ;fEWP^J|6INlxL+vj@R{fPw#Bd{rUE*)=9@m6Dd*x5W^6HCyDE?l;008M5xqb5Ca$^D-}gTqFA_M-K==av>F y(MhLV@*tN7cXtH=C}AEL<5`aLz-M3`|KTqS&_O0BCgHaL0000$7!Ag+aiHMC|()$}M#md^!k4Er6SZi}Bl0L!0N))_+g++p`ZSo6D5xm)b z&fc6#AY|AbmYw(Jy`9a0Zef3)|6Dm&9FHZzTF+WC25iW%$DC!(#4(t0$=~yNLLlJt zOP~(j?NYgnLIDy{gzXmVHBKi%dqI#Yz#>I=I&?f@I>q6DAV9MT{|*oLh~9)iaqI}P zJwb~iGg*tx2K71y1I%WweY=hK4^Gt6 zL`2A|6<7#vDx`!=%v35RZ48AWCF;_WG*_!SLs_Y%pU3d}k^lU$#u)-jH2;p|f^z@> N002ovPDHLkV1gyqppF0l literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/to.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/to.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0aa02145cf496ea6bdf8ffb7a1b9032f1e964b GIT binary patch literal 302 zcmV+}0nz@6P)Nklb<85JcyL%gBh5f|8Eoa1DeMu0T?91CyST^B|EN!4gHZGvAZq+r%jOTCMc8^JYid zs%=}0Ue^KW>iN6_{;di?UDvo?eLiEe!D?j#+ijAj(uB0+q2Di;su=rlK+br3_o+cj zzTHfkbkGb(m`uxMzri;4dmNA6?aKF8%5bm%AbS7+)@wHn48yh^G4_4{0IHYS46l2C zeOdx#_2Y-m(PNN?NLiN50A&{Ak$UK;M1& literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tr.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..3698f405fac5e032dca9f132fabb44b6d8992932 GIT binary patch literal 366 zcmV-!0g?WRP)8V=Ml`FKzAY8o!u|* zn^`bI$m6j*X1~9A<3S#kKF@!)N5W(xNrE&LZ5>P^iGeX<4B{BSzQJynr<&)%_Z3QX zuctKZ_qg4Ni(pwr0+#?XP0>=ogE>H^Se zF-EhA%Y~_~R~!zG;3DO@DQharC5lCi#|)!27$69+SY%-gMU5l8*p;aOW;68rC={6f zerHa10iy(NMI0dqNVRHZ5;>ie=~XIHDv1?l+Z}2%PWb$g|GcrQA6-B`Pq62Am;e9( M07*qoM6N<$g8#0bwEzGB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tt.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tt.png new file mode 100644 index 0000000000000000000000000000000000000000..4f36edb09fd5fd94f801451cd2b346395507a8d8 GIT binary patch literal 486 zcmV@P)c%F>MqtU3>>rU@! z z=1iA5U`BF<0?f?Zgu`yXpVmVg?UJOhC>nymfbZMHbdWF|YCdo5?Hv^gj%bty6-AL{ cS$%!|0l}U^X5mEtTmS$707*qoM6N<$f-Cdj00000 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tv.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/tv.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fcffcade9531213c6ce3ab94f00c7c86f786a1 GIT binary patch literal 443 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 FV1l0aBKEzMhkLNpplTPJ~w z4d|)S=q(5XK=}R=rIhDAI5KyH7Ws016;R3;atxTyz`ymSLl6*w+636yJ9)nM z4Ut_CW#W(#QJEfXFk)&hv$XHkoazR+>yNErJA|Mn9TF4LL#U0-lLEp<)(yY|M-GBa zsdx&*C|QKn5B6k1|4ZO)zm@q%6Q_^|V|4+|f7|kAJ>8n7+Bu-&lz&AK$+lE?-+{I#~oH*&Ou{Cb z5zH`=h4-i#4!@<2HDzrGY2%-g$iE!Fg6+j%F zk|Cu=r>y#0MFtsEs!PgHSE% zhg_QBolAWEjcu|sB+01EN+W-tC0Q>__ds_9AQyabj0000tCAf&LduoT1> zL<=88#F!#Gvpde-U4puN_c4!eW@m1dd56{ufCu?0uom304t5OjC@{#uUp|3)e=ojm zPOm3Ra~}YP*#MAYiUE0y%)}%9zO4J6g?+vHyrD~52LPWE4QlWgbO2N;d7L{6tCI-PURtwhe3 zgs`aF?S7$fm&@HYn_rDaM${ohCcF9a83RPDk&lm@x>|kHnnh8mybgz^b(US2zX?0K zpRojs>ua06$DWZwO$H5xjAW#%V;R5@nZ$Hr=W5q)!bOZ`Ej~cdgoEahF^&+*9LmhB z0Qho^hXl!_20000}3-{mAhow!h3JhWb2NA&L=Whga zeb>X)J*hX3!seE?JL!Q!m;F=iWZ}!PW|D${MHnivi=rG62XlVy;=x1NKVd6g^ZN$U zXBhr2SqxgJdkQw!r&D+nY6$i}X6bnmtg`9H?D3SO?0w}Wy00y%riDOnknC0r} z{gr&W(U`qYig!47qwY4|juH9)04c3Q)-3#|djJ3c07*qoM6N<$f}&LK A82|tP literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vi.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vi.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0d214ae61a441b9d6a52db8cfbfe366b1e886c GIT binary patch literal 523 zcmV+m0`&cfP)3qN zy=xP37zgn0?_P3wAvx}vNU0@eQxrvPt3~jon}Rxsiz2${(5>hqIEYRGq2l7?APDN< zUmyk%wAD?pM$!lYnYqkCy%#JqRTD8~{=vyu`ke0{Z#&JKv(K%OkE`2ZE@2wU z+u3YVDHeZ8iIw$fQuc)X7)h_?Y<>NZFE1RffA?ej-t$5$bu5vYU0lpHn|)0Ie*W;* zoP+xgodV#wx9-jFUAueVx^{Kz@uQe7H~l-G7LLx$STgd6NXZxC&1Pg-I)l$YxfFPt zLeKyKNkOTeY9#9`7h0{Zu7jC&2-kH@(`04bX9XV;hC{;sxj6NR*0$aqg( z_4C+R3P7z^)rbfHGXv1GFZS;)Df)^0`0H?VHKGIWO4kd8>8Ys%GYcW4B;h!YZQDEq zfQSJm3W8u`Y038efv$_m$uz(KDwT?8G#d0TDJ2mBkW$hRh$In){s8FVCiBK!crE|{ N002ovPDHLkV1mS@^pF4m literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vn.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/vn.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cd8a151a29edb2d6cfa8b65fb6ef3ab1f774d2 GIT binary patch literal 324 zcmV-K0lWT*P)?3UlUge24O zA(@EStcsK3)>Lt1w#`EkE3Ix#!Z6&sBYe&ydYbI!HM1}le;sphLD@7sa-dzhHQ9pDoFCH_P1f5uWZ^XXlF zG-rK}{q98$SCX1igDg^6>uO;k19-b!zJ2{Lb*3?UtNukEloxV{vCxWHA=Bt+02x4d zdA;OjcKKSmd&7Uyj#9%Ztr%AYkVE0@ao@H@D?jw$iLTDz;&t{!bIQ$R=A@fBcR8P~ z3U%$b=Q({rFW#uGdH<%IDFP)@L?a@VXomZ`&CUK}WB?z(=-8xIzFWJcZYQ0-QkzjU zBWc4XIW|_ke1#0)*&^RB+r(aVJ2>B~2B&Orm~>hg3(bv%DjIAMo+ASg)o!udN#}aM zZPMxk#+nw!paoe>L4_+hDr5kAcI(8EozoBhY(Ke`Ez-&LR1t$JQpk&YxEF^ZC!oD) sZe$!d1dIcVKmY=4?OOo?00`KKzwwt%9xa+)(*OVf07*qoM6N<$f;^YRjsO4v literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/wales.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/wales.png new file mode 100644 index 0000000000000000000000000000000000000000..a388a9761721c24d38da4d77e846e03c4b872db2 GIT binary patch literal 557 zcmV+|0@D47P)NklQldJUagtB1$?W2;qv7~wDdpVtYr(d5U*i(QmKjYkNi;P*tpiY?%#S|d zg?u@cYAD-Uu_&eda_k^VwF(>I9$S}8&RjShKHtNAK^1@yoCC40ljgZ@ONfRYyDB3? zZm|Y4WO#1ty}Li(ye_0a>PsU;qykV?O$^+TQqqfOWyY+}pX~85jhHX{gLZCJnwr1& zbjJ@Q{1KCgv@NIB*Viu!KTlWoZYuQOF#LY+@v!rCD$r<1o5^xfj=c}*#{HIbbI0~n z=A}~Ci@rUV^3~bSzEV{2*FvP{U6oTQP+Ktgnh7iDEu2Yc^QLUCTY2;9sLD7tD(tM1#lm}s^gl?NyY4jmjq@URgb>;$cYFZX03hWB_IsaC0Hi7vXEBEB&FQL4}*acXg2owWWp$oq|@$)!xsx=a6%a+KnQAr$s}k8 zA+!o`DmYh#fKVg4k?M9snT$Ig+x2rC>QsuLO$23zVIbhH%Lv);bY7dypV7#!)%Gs0 zIDQ2kUe4~~N84XF&yw-Y(-X-Bo6R^OcpT1VcP#6z*^HZJtW<}^1Z0OSM+p)?r0@9pn=e13PkLo&-KTA1yg0RVEqaupR8H>dag-rJG_Oh%F6 zH=O_}0(rn4!nNzgdj`sxN>8@VdzLCiAS2xj(n4r44ap@Xpe&_|^92?#5ef(a2`Evh yR-J?bM35N?3CSgdkTj`OoE*;{nZEt6()<8^hFW15T+?O%0000Nklb>!45SJ#24bMdWT5Eck7Nn@9Dks5#u#}-UyxV$7X}Oz?bg9@2T`PQloBUHTcD@I ziKIx8lKY|?^s4v9!jQDULAiT{#;7DpDlrI2h+qI2N`aNl{(L)H0h0COokSuSnAp_F zNxfJ0upgeDt;6GfA2%C1ozNmGIw;gCMd6!~dLrmntMzx`=6Np5GK~}|t>56B8^^Iw zwHM~lV*Chl4#`$<4g7gOI@ris91h)f`!Y?Fh`?WT0aA0Ys;aK*9L8wdb{Gau@ZR5T z3=LpH(=>hG+qWW8*EQz@P7C|RWn7*M@@xN%GgdQUqB2D)>Hq)$07*qoM6N<$g2qpR Al>h($ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/yt.png b/modules/core/aloha/static/plugins/extra/linkbrowser/img/flags/yt.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9bacbbf7b663531afe3c2c5165f4aca13019be GIT binary patch literal 456 zcmV;(0XP1MP)ocvQh+i>-=?UMz}Ke}`AS_2?fE#ES>7`d2)Pw1QCeAZTx;r4rN9 zlyrBq~V><;tTZ@zC>5r!d2%@{oBl1NI!7(tIF1jb2VjK&Q6uIr+QUXL^yB$oq9 ziETq1Cq-i*2%uU8*9CxXx0?Wx1^~(DNv#H$P=XkU4RDrtDZ#Q3NhwYEvey8E(MS_A zm&-Mqo#0m*!1wyFx;#W-qmk!%Y$_~c_-?lY-^bBw>&1uruU;=A40NRTc9%X|uS%KO zh560REv>ak*Bpmop-`|KJBlPGw>SGJtbYE8-O@%GfVNt1C?sLPixEOUKHj%?b~s~~ zlRI^B1zKHm&fzHL{N?GHa*+Yj9mq*4r7ziE(5@Zx9Mki7o9Ur9PGfBw6 z85cq*N}aPh^nYThj3o%Cj%C}9qm{yLwgWO?vb?%72nODwH* y{uzAV&puMiPN$=%AB@A08YST@Cd6QIZcdB_%1JZ$f~`TPF)b%-57~E(D`0$RQ@s{K5gD1U00RRB~ z4`y`Fl8xVm@{6Y8vG;Ehuiu(?GZ2a}$C#r;j@dO_otiRRzMC2^k zr`Ls5GxO0E=Nyr<l>HGzIwlFGLju1?iU)5Wkk25Qk(eDas`OAadNHZBKsOGXR+7>2y$D zj$J%jyY(|!Ru{MqDksk}g>mK<4SR%Xp)Qu+K#qy4y?_q}MWw`=ua`@r*usobZk z-;6FVMWoD*Sw)6i)H{g`*a4NyWLJFiDS1NZ`|H}{&&k%S!<=; z~p;Ha3t0)qN1Yn?`Xnk#czGVJ) z$EU9G)C%{;2lE zyVHW|>h`~hMcDFF_u5zR4*`Qp+q;wklK=n!07*qoM6N<$ Ef_gL2_W%F@ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js b/modules/core/aloha/static/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js new file mode 100644 index 000000000..586182b4a --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js @@ -0,0 +1,150 @@ +define([ + 'aloha', + 'jquery', + 'aloha/plugin', + 'aloha/pluginmanager', + 'ui/ui', + 'ui/button', + 'link/link-plugin', + 'RepositoryBrowser', + 'i18n!linkbrowser/nls/i18n', + 'i18n!aloha/nls/i18n' +], function (Aloha, jQuery, Plugin, PluginManager, Ui, Button, Links, RepositoryBrowser, i18n, i18nCore) { + 'use strict'; + + var LinkBrowser = RepositoryBrowser.extend({ + + init:function (config) { + this._super(config); + + var that = this; + + this._linkBrowserButton = Ui.adopt('linkBrowser', Button, { + tooltip:i18n.t('button.addlink.tooltip'), + icon:'aloha-icon-tree', + scope:'Aloha.continuoustext', + click:function () { + that.show(); + } + }); + + this._linkBrowserButton.hide(); + + this.url = Aloha.getAlohaUrl() + '/../plugins/extra/linkbrowser/'; + + Aloha.bind('aloha-link-selected', function (event, rangeObject) { + that._linkBrowserButton.show(); + }); + + Aloha.bind('aloha-link-unselected', function (event, rangeObject) { + that._linkBrowserButton.hide(); + }); + }, + + onSelect:function (item) { + Links.hrefField.setItem(item) + + // Now create a selection within the editable since the user should + // be able to type once the link has been created. + + // 1. We need to save the current cursor position since the a + // activate editable event will be fired and this will set the + // cursor in the upper left cornor of the editable. + var range = Aloha.Selection.getRangeObject(); + var currentStartContainer = range.startContainer = range.endContainer; + var currentStartOffset = range.startOffset = range.endOffset; + + // 2. Do the first select - this will invoke the activate editable + // event. + range.select(); + + // 3. Restore the range. + range.startContainer = range.endContainer = currentStartContainer; + range.startOffset = range.endOffset = currentStartOffset; + + // 4. Invoke the final selection. + range.select(); + + Aloha.trigger('aloha-link-selected-in-linkbrowser', item); + + // Close the browser lightbox. + this.close(); + }, + + renderRowCols:function (item) { + var row = {}, + pluginUrl = this.url, + icon = '__page__', + idMatch = item.id.match(/(\d+)\./); + + jQuery.each(this.columns, function (colName, v) { + switch (colName) { + case 'icon': + row.icon = '
      '; + break; + case 'translations': + if (!item.renditions) { + break; + } + + var rends = item.renditions, + i = rends.length, + strBldr = [], + r; + + for (; i > 0; --i) { + r = rends[i]; + if (r.kind == 'translation') { + strBldr.push( + //'' + + '' + r.language + '' + //'' + ); + } + } + + row.translations = strBldr.join(''); + break; + case 'language': + row.language = item.language; + break; + default: + row[colName] = item[colName] || '--'; + } + }); + + return row; + } + + }); + + var LinkBrowserPlugin = Plugin.create('linkbrowser', { + dependencies:['link'], + + browser:null, + + init:function () { + var config = { + repositoryManager:Aloha.RepositoryManager, + repositoryFilter:[], + objectTypeFilter:['website', 'file', 'image', 'language' /*, '*' */], + renditionFilter:['*'], + filter:['language'], + columns:{ + icon:{title:'', width:30, sortable:false, resizable:false}, + name:{title:'Name', width:320, sorttype:'text'}, + language:{title:'', width:30, sorttype:'text'}, + translations:{title:'', width:350, sorttype:'text'} + }, + rootPath:Aloha.settings.baseUrl + '/vendor/repository-browser/' + }; + + this.browser = new LinkBrowser(config); + } + }); + + return LinkBrowserPlugin; +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ca/i18n.js new file mode 100644 index 000000000..fdb07a017 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ca/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Insereix un enllaç", + "button.removelink.tooltip":"Suprimeix l\'enllaç", + "newlink.defaulttext":"Enllaç nou", + "floatingmenu.tab.link":"Enllaç" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/de/i18n.js new file mode 100644 index 000000000..cb6156c6c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/de/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Verweis einfügen", + "button.removelink.tooltip":"Verweis entfernen", + "newlink.defaulttext":"Neuer Verweis", + "floatingmenu.tab.link":"Verweis" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/i18n.js new file mode 100644 index 000000000..d9438d012 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/i18n.js @@ -0,0 +1,15 @@ +define({ + "root":{ + "button.addlink.tooltip":"Insert Link", + "button.removelink.tooltip":"Remove Link", + "newlink.defaulttext":"New Link", + "floatingmenu.tab.link":"Link" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/mk/i18n.js new file mode 100644 index 000000000..14a908b66 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/mk/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Внеси линк", + "button.removelink.tooltip":"Одстрани линк", + "newlink.defaulttext":"Нов линк", + "floatingmenu.tab.link":"Линк" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/pt-br/i18n.js new file mode 100644 index 000000000..06eda0031 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/pt-br/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Inserir link", + "button.removelink.tooltip":"Remover link", + "newlink.defaulttext":"Novo link", + "floatingmenu.tab.link":"Link" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ru/i18n.js new file mode 100644 index 000000000..340e876d7 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/ru/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Вставить ссылку", + "button.removelink.tooltip":"Удалить ссылку", + "newlink.defaulttext":"Новая ссылка", + "floatingmenu.tab.link":"Ссылка" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/uk/i18n.js new file mode 100644 index 000000000..f0849b821 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/uk/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"Вставити посилання", + "button.removelink.tooltip":"Видалити посилання", + "newlink.defaulttext":"Нове посилання", + "floatingmenu.tab.link":"Посилання" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkbrowser/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/zh-hans/i18n.js new file mode 100644 index 000000000..02bd911e4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkbrowser/nls/zh-hans/i18n.js @@ -0,0 +1,6 @@ +define({ + "button.addlink.tooltip":"插入链接", + "button.removelink.tooltip":"移除链接", + "newlink.defaulttext":"新链接", + "floatingmenu.tab.link":"链接" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.css b/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.css new file mode 100644 index 000000000..b76422489 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.css @@ -0,0 +1,67 @@ +body { + font-family: sans-serif; +} + +body { + background-color: #ccc; +} + +#bodyContent { + font-size: 0.9em; +} + +h1, h2, h3, h4, h5, h6 { + font-family: sans-serif; + padding-bottom: 0.1em; + padding-top: 0.5em; +} + +h1 { + border-bottom: 1px solid #AAAAAA; +} + +h1 { + font-size: 188%; +} + +h2 { + font-size: 150%; +} + +h3 { + font-size: 132%; +} + +h4 { + font-size: 116%; +} + +h5 { + font-size: 100%; +} + +h6 { + font-size: 80%; +} + +#main { + width: 650px; + margin-top: 40px; + margin-left: auto; + margin-right: auto; + padding: 70px; + background-color: white; + border-radius: 1px; + -moz-border-radius: 1px; + box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); +} + +.GENTICS_link_error { + color: red; +} + +.GENTICS_link_warn { + color: orange; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.html b/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.html new file mode 100644 index 000000000..2dbb2583f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/demo/index.html @@ -0,0 +1,113 @@ + + + + + Aloha, link checker! + + + + + + + + + + + + + +
      +
      +
      +

      Aloha

      + +

      Etymology

      + +

      The word aloha derives + from the Proto-Polynesian root *qalofa. It has cognates in other Polynesian languages, such as + Samoan alofa + and Māori aroha, also meaning "love."

      + +

      invalid Aloha Editor is the word's most advanced browser + based Editor made with aloha passion.

      + +

      A folk etymology claims that it derives from a compound of the Hawaiian words alo + meaning "presence", "front", "face", or "share"; and + ha, meaning "breath of life" or "essence of life." Although alo does indeed mean "presence" etc., the + word for breath is spelled with a macron + or kahakō over the a (hā) whereas the word aloha does not have a long a.

      + +

      Links are the web's Rocket + Power.

      + +

      Usage

      + +

      Before contact with the West, the words used for greeting were welina and anoai. Today, "aloha kakahiaka" + is the phrase for "good + morning." "Aloha ʻauinalā" means "good afternoon" and "aloha ahiahi" means "good evening." "Aloha kākou" + is a common form of "welcome to all."

      + +

      In modern Hawaiʻi, numerous businesses have aloha in their names, with more than 3 pages of listings in + the Oʻahu phone book alone.

      + +

      Trends

      + +

      Recent trends are popularizing the term elsewhere in the United States. Popular entertainer, Broadway + star and Hollywood actress Bette + Midler, born in Honolulu, uses the greeting frequently in national appearances. The word was also used + frequently in the hit television drama + Hawaii Five-O. In the influential 1982 film comedy Fast Times at Ridgemont High, the eccentric teacher + Mr. Hand makes use of the greeting. The + Aloha Spirit is a major concept in Lilo and Stitch, a very popular Disney series of movies and TV shows, + set in Hawaiʻi. The drama series Lost, + shot in Hawaiʻi, has a thank you note at the end of the credits saying "We thank the people of Hawaiʻi + and their Aloha Spirit". Aloha is a term + also used in the Nickelodeon program Rocket Power.

      +
        +
      • Arguably the most famous historical Hawaiian song, "Aloha ʻOe" was written by the last queen of + Hawaii, Liliʻuokalani. +
      • +
      • The term inspired the name of the ALOHA Protocol introduced in the 1970s by the University of + Hawaii. +
      • +
      • In Hawaii someone can be said to have or show aloha in the way they treat others; whether family, + friend, neighbor or stranger. +
      • +
      +
      +
      +
      + + \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/ca/i18n.js new file mode 100644 index 000000000..6b25b49c0 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/ca/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"S\'ha produït un error en comprovar aquest URL.", + "error.400":"Sol·licitud incorrecta. No s\'ha pogut satisfer la sol·licitud degut a una sintaxi incorrecte.", + "error.401":"No autoritzat. Ha fallat l\'autenticació o encara encara no s\'ha proporcionat.", + "error.402":"Es requereix fer un pagament.", + "error.403":"Prohibit. La sol·licitud era legal, però el servidor està refusant respondre-la.", + "error.404":"No s\'ha trobat. No s\'ha pogut trobar el recurs sol·licitat, però potser estarà disponible en el futur.", + "error.405":"El mètode no és permès.", + "error.406":"No és acceptable. El vostre navegador no és compatible amb el contingut.", + "error.407":"El servidor intermediari requereix autenticació.", + "error.408":"Temps d\'espera de la sol·licitud exhaurit. El servidor ha exhaurit el temps esperant la sol·licitud.", + "error.409":"Hi ha un conflicte en la sol·licitud.", + "error.410":"El recurs ja no hi és.", + "error.411":"El servidor requereix una longitud. Aquest enllaç potser funciona en els navegadors.", + "error.412":"La condició prèvia ha fallat. Aquest enllaç potser funciona en els navegadors.", + "error.413":"L\'entitat sol·licitada és massa gran. El servidor no vol o no és capaç de processar una sol·licitud tan gran.", + "error.414":"L\'URI sol·licitat és massa llarg. El servidor no és capaç de processar l\'URI proporcionat per ser massa llarg.", + "error.415":"El tipus de fitxer multimèdia no és suportat. L\'entitat sol·licitada té un tipus de fitxer multimèdia que no és compatible amb el servidor o recurs.", + "error.416":"L\'interval sol·licitat no es pot satisfer. El client ha preguntat per una porció del fitxer, però el servidor no la pot subministrar.", + "error.417":"L\'expectació ha fallat. El servidor no pot complir amb els requisits del vostre navegador.", + "error.418":"Sóc una tetera. ;-)", + "error.500":"Error intern del servidor. Això és un missatge d\'error genèric que es dóna quan no hi ha cap missatge específic apropiat.", + "error.501":"No implementat. El servidor no reconeix el mètode sol·licitat, o no té la capacitat per complir-la.", + "error.502":"Passarel·la invàlida. El servidor estava fent de passarel·la o intermediari i ha rebut una resposta invàlida del servidor superior.", + "error.503":"Servei no disponible. El servidor no està disponible ara mateix, perquè està sobrecarregat o fora de manteniment. Generalment això és un estat temporal.", + "error.504":"Temps d\'espera de la passarel·la exhaurit. El servidor estava fent de passarel·la o intermediari i no ha rebut una resposta del servidor superior a temps.", + "error.505":"La versió HTTP no és compatbile. El servidor no suporta el protocol HTTP de la sol·licitud." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/de/i18n.js new file mode 100644 index 000000000..5989ff5bf --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/de/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"Beim Überprüfen der URL ist ein Fehler aufgetreten.", + "error.400":"Bad Request. Die Anfrage enthält Syntaxfehler. Der Server kann die Anfrage deshalb nicht bearbeiten.", + "error.401":"Unauthorized. Die angeforderten Daten sind zugangsgeschützt.", + "error.402":"Payment Required. Die angeforderten Daten sind kostenpflichtig.", + "error.403":"Forbidden. Der Server möchte die angeforderten Daten nicht herausgeben.", + "error.404":"Not found. Der angeforderte URI existiert zur Zeit nicht, kann aber in Zukunft verfügbar sein.", + "error.405":"Method Not Allowed. Die angegebene Übertragungsmethode ist auf dem Server nicht erlaubt.", + "error.406":"Not Acceptable. Die Anfrage ist in dieser Form nicht akzeptabel.", + "error.407":"Proxy Authentication Required. Die Anfrage soll über einen Proxy-Server geleitet werden. Der Proxy-Server ist aber zugangsgeschützt und leitet Anfragen erst nach dem Erhalt einer gültigen Zugangskennung weiter", + "error.408":"Request Timeout. Der Server hat eine erwartete Anfrage nicht innerhalb des dafür festgelegten Maximalzeitraums erhalten.", + "error.409":"Conflict. Der Server kann die angeforderten Daten nicht senden, weil ein Konflikt mit einem anderen Prozess aufgetaucht ist.", + "error.410":"Gone. Die angeforderten Daten wurden zu einem anderen URI verschoben. Dem Server ist aber nicht bekannt, wohin.", + "error.411":"Length Required. Die Daten werden nicht gesendet. Sie können nur gesendet werden, wenn die Anfrage eine Angabe zu content-length enthält.", + "error.412":"Precondition Failed. Eine oder mehrere Bedingungen, die bei der Anfrage gestellt wurden, treffen nicht zu.", + "error.413":"Request Entity Too Large. Der Server kann die Anfrage nicht bearbeiten, weil diese zu viele Zeichen enthält.", + "error.414":"Request-URL Too Long. Der Server kann die Anfrage nicht bearbeiten, weil die angeforderte Adresse zu viele Zeichen enthält.", + "error.415":"Unsupported Media Type. Der Server will die Anfrage nicht bearbeiten, weil der MIME-Typ, den der Client in der Anfrage verwendet hat, für diese Anfrage nicht unterstützt wird.", + "error.416":"Requested Range Not Satisfiable. Die Anfrage enthält Angaben, welcher Byte-Bereich von dem angeforderten URI übertragen werden soll.", + "error.417":"Expectation Failed. Die Anfrage enthält im expect-Feld bestimmte Wünsche, die der Server nicht erfüllen kann.", + "error.418":"Ich bin eine Teekanne. ;-)", + "error.500":"Internal Server Error. Der Server kann die angeforderten Daten nicht senden, weil auf dem Server ein Fehler aufgetreten ist.", + "error.501":"Not Implemented. Die Anfrage enthält Anforderungen, die der Server nicht bearbeiten kann, weil die Voraussetzungen dazu nicht implementiert sind.", + "error.502":"Bad Gateway. Zum Bearbeiten der Anfrage musste der Server einen anderen Server aufrufen, erhielt dabei jedoch eine Fehlermeldung.", + "error.503":"Service Unavailable. Der Server kann die Anfrage wegen Überlastung nicht bearbeiten. Normalerweise ist das ein temporärer Zustand.", + "error.504":"Gateway Timeout. Zum Bearbeiten der Anfrage musste der Server einen anderen Server aufrufen, erhielt dabei jedoch nach einem festgelegten Maximalzeitraum keine Antwort.", + "error.505":"HTTP Version Not Supported. Der Server unterstützt die im HTTP-Header der Anfrage angegebene HTTP-Version nicht." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/i18n.js new file mode 100644 index 000000000..e2834a3f4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/i18n.js @@ -0,0 +1,37 @@ +define({ + "root":{ + "error.0":"An Error occurred checking this URL.", + "error.400":"Bad Request. The request cannot be fulfilled due to bad syntax.", + "error.401":"Unauthorized. Authentication has failed or not yet been provided.", + "error.402":"Payment Required.", + "error.403":"Forbidden. The request was a legal request, but the server is refusing to respond to it.", + "error.404":"Not Found. The requested resource could not be found, but may be available in the future.", + "error.405":"Method Not Allowed.", + "error.406":"Not Acceptable. Your browser does not support the content.", + "error.407":"Proxy Authentication Required.", + "error.408":"Request Timeout. The server timed out waiting for the request.", + "error.409":"Conflict in the request.", + "error.410":"This resource is gone.", + "error.411":"Length Required by server. This Link may work in the browsers.", + "error.412":"Precondition Failed. This Link may work in the browsers.", + "error.413":"Request Entity Too Large. The request is larger than the server is willing or able to process.", + "error.414":"Request-URI Too Long. The URI provided was too long for the server to process.", + "error.415":"Unsupported Media Type. The request entity has a media type which the server or resource does not support.", + "error.416":"Requested Range Not Satisfiable. The client has asked for a portion of the file, but the server cannot supply that portion.", + "error.417":"Expectation Failed. The server cannot meet the requirements of your browser.", + "error.418":"I\'m a teapot. ;-)", + "error.500":"Internal Server Error. A generic error message, given when no more specific message is suitable.", + "error.501":"Not Implemented. The server either does not recognise the request method, or it lacks the ability to fulfill the request.", + "error.502":"Bad Gateway. The server was acting as a gateway or proxy and received an invalid response from the upstream server.", + "error.503":"Service Unavailable. The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.", + "error.504":"Gateway Timeout. The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.", + "error.505":"HTTP Version Not Supported. The server does not support the HTTP protocol version used in the request." + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/mk/i18n.js new file mode 100644 index 000000000..bc99027aa --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/mk/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"Се појави грешка при проверувањето на оваа адреса.", + "error.400":"Лошо барање. Барањето не можеше да биде извршено поради лоша синтакса.", + "error.401":"Неавторизиран. Автентикацијата не беше успешна или сеуште не е поднесена.", + "error.402":"Потребно е плаќање.", + "error.403":"Забрането. Барањето беше легитимно, но серверот одбива да одговори.", + "error.404":"Не е најдено. Бараниот ресурс не беше најден, но можеби ќе е достапен во иднина.", + "error.405":"Методот не е дозволен.", + "error.406":"Неприфатливо. Твојот пребарувач не ја поддржува содржината.", + "error.407":"Потребна е автентикација на посредувач.", + "error.408":"Барањето го помина дозволеното време. Серверот се откажа чекајки го барањето.", + "error.409":"Конфликт во барањето.", + "error.410":"Ресурсот го нема.", + "error.411":"Должината е барана од серверот. Овој линк можеби ќе работи во пребарувачот.", + "error.412":"Претходен услов не е стекнат. Овојо линк можеби ќе работи во пребарувачот.", + "error.413":"Барањето е премногу големо. Ова барање е поголемо отколку што серверот може или сака да обработи.", + "error.414":"Адресата на барањето е премногу долга за серверот да го обработи.", + "error.415":"Овој тип на содржина не е поддржан. Барањето е составено од содржина која не е поддржана од серверот.", + "error.416":"Бараниот опсег не е достапен. Клиентот побара дел од датотека, но серверот не може да го обезбеди тој дел.", + "error.417":"Очекувањето на беше сретнато. Серверот не може да ги сретне очекувањата од твојот пребарувач.", + "error.418":"Јас сум чајник. ;-)", + "error.500":"Внатрешна грешка на серверот. Оваа порака се прикажува кога ниедна друга порака не е погодна.", + "error.501":"Не е имплементирано. Серверот или не го препознава методот на барањето, или не е во можност да го опслужи.", + "error.502":"Лош портал. Серверот се однесува како портал или посредник и прими невалидно барање од серверот.", + "error.503":"Услугата е недостапна. Серверот моментално не е во можност (поради преоптеретување или поради одржување). Обично, ова е привремено.", + "error.504":"Серверот се однесуваше како портал или посредник и не доби навремен одговор од главниот сервер.", + "error.505":"Оваа верзија на HTTP протоколот не е поддржана. Серверот не ја поддржува верзијата на HTTP искористена во ова барање." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/pt-br/i18n.js new file mode 100644 index 000000000..519fb6fbd --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/pt-br/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"Um erro ocorreu checando a URL...", + "error.400":"Solicitação Impropria. A solicitação não pôde ser cumprida devido à sintaxe errada.", + "error.401":"Não autorizado. Autenticação falhou ou não foi bem fornecida.", + "error.402":"Pagamento requirido.", + "error.403":"Proibido. O pedido foi legal, mas o serveidor está recusando a responde-la.", + "error.404":"Não encontrado. O pedido solicitado não foi encontrado, mas pode estar disponível no futuro.", + "error.405":"Método não permitido.", + "error.406":"Não aceitável. Seu navegador não suporta o conteúdo.", + "error.407":"Autenticação de proxy requirida.", + "error.408":"Pedido expirado. O servidor expirou à espera do pedido.", + "error.409":"Conflito no pedido.", + "error.410":"Esse recurso desapareceu.", + "error.411":"Comprimento requerido pelo servidor. Este link pode trabalhar em todos os navegadores.", + "error.412":"Pré-requisito falhou. Esta ligação pode trabalhar em todos os navegadores.", + "error.413":"Entidade solicitada muito grande. O pedido é maior do que o servidor está disposto ou capaz de processar.", + "error.414":"Pedido URI Muito longo. O URI fornecido foi muito longo para o servidor para processar.", + "error.415":"Tipo mídia não suportada. A entidade tem pedido um tipo de mídia que o servidor ou recurso não suporta.", + "error.416":"Faixa solicitada não satisfatória. O cliente pediu uma parte do arquivo, mas o servidor não pode fornecer essa parte.", + "error.417":"Probabilidade de falha. O servidor não pode satisfazer as exigências de seu navegador.", + "error.418":"Eu sou um bule. ;-)", + "error.500":"Erro do servidor interno. Uma mensagem de erro genérico, quando nenhuma mensagem específica é adequada.", + "error.501":"Não implementado. O servidor não reconhecer o método de solicitação, ou não tem capacidade para atender a solicitação.", + "error.502":"Bad Gateway. O servidor estava agindo como um gateway ou proxy e recebeu uma resposta inválida do servidor upstream.", + "error.503":"Serviço não disponível. O servidor está indisponível no momento (porque está sobrecarregado ou em manutenção). Em geral, este é um estado temporário.", + "error.504":"Gateway Timeout. O servidor estava agindo como um gateway ou proxy e não recebeu uma resposta rápida do servidor upstream.", + "error.505":"Versão HTTP não suportada. O servidor não suporta a versão do protocolo HTTP usado no pedido." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/ru/i18n.js new file mode 100644 index 000000000..e002c5ccc --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/ru/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"При проверке этого URL произошла ошибка.", + "error.400":"Неверный запрос. Запрос не может быть выполнен в связи с неправильным синтаксисом.", + "error.401":"Отказано в авторизации. Аутентификация не удалась или в данное время невозможна.", + "error.402":"Оплата обязательна.", + "error.403":"Запрещено. Запрос правилен, но сервер не может на него ответить.", + "error.404":"Не найдено. Искомый ресурс не может быть найден сейчас, но может быть доступен в будущем.", + "error.405":"Метод не разрешен.", + "error.406":"Не принято. Ваш браузер не поддерживает данный вид контента.", + "error.407":"Аутентификация по прокси обязательна.", + "error.408":"Истекло время ожидания. Сервер задерживает ответ ожидая запрос.", + "error.409":"Конфликт в запросе.", + "error.410":"Ресурс был удален.", + "error.411":"Необходима длина. Ссылка может работать в браузерах.", + "error.412":"Условие ложно. Ссылка может работать в браузерах.", + "error.413":"Размер запроса слишком велик. Запрос больше, чем сервер в требует или может обработать.", + "error.414":"Запрашиваемый URI слишком длинный. Предоставленный URI слшиком длинный чтобы сервер его обработал.", + "error.415":"Неподдерживаемый тип данных. Запрошенная сущность имеет тип данных, который сервер или ответ на поддерживает.", + "error.416":"Запрашиваемый диапазон не достижим. Клиент запросил часть файла, но сервер не может вернуть эту часть.", + "error.417":"Ожидаемое неприемлимо. Сервер не может удовлетворить требования вашего браузера.", + "error.418":"А я чайник :-)", + "error.500":"Внутренняя ошибка сервера. Общее сообщение об ошике, выдается когда нет другого подходящего сообщения.", + "error.501":"Не реализовано. Сервер не распознал метод запроса или не может удовлетворить запрос.", + "error.502":"Ошибочный шлюз. Сервер работает в роли шлюза или прокси и получил неправильный ответ от вышестоящего сервера.", + "error.503":"Сервис недоступен. Сервер временно недосутпен (потому что перегружен или закрыт на техническое обслуживание). Как правило, это временное состояние.", + "error.504":"Шлюз не отвечает. Сервер выполняет роль шлюза или прокси и не получил вовремя ответ от вышестоящего сервера.", + "error.505":"Версия HTTP не поддерживается. Сервер не поддерживает версию протокола HTTP переданную в запросе." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/uk/i18n.js new file mode 100644 index 000000000..2b0c2d58e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/uk/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"Під час перевірки цього URL виникла помилка.", + "error.400":"Неправильний запит. Запит не може бути виконано через неправильний синтаксис.", + "error.401":"Не авторизовано. Не пройдена або відсутня аутентифікація.", + "error.402":"Платіж обов’язковий.", + "error.403":"Заборонено. Запит правильний, проте сервер не може на нього відповісти.", + "error.404":"Не знайдено. Ресурс за таким запитом не знайдено, проте можливо буде доступний в майбутьньому.", + "error.405":"Метод заборонено.", + "error.406":"Не прийнято. Ваш браузер не підтримує даний тип контету.", + "error.407":"Проксі-аутентифікація обов’язкова.", + "error.408":"Затримка запиту. Сервер затримує відповіть очікуючи запит.", + "error.409":"Конфлікт у запиті.", + "error.410":"Ресурс був видалений.", + "error.411":"Необхідна довжина. Це посилання може працювати у браузерах.", + "error.412":"Умова невірна. Це посилання може працювати у браузерах.", + "error.413":"Розмір запиту занадто великий. Запит більший ніж сервер опрацьовує чи здатний опрацювати.", + "error.414":"URI запиту занадто великий. Наданий URI занадто великий для обробки сервером.", + "error.415":"Тип медіа не підтримується. Інформація, яку запитують, має тип, який не підтримує сервер.", + "error.416":"Діапазон запиту не може бути досягнуто. Клієнт запитав частину файла, проте сервер не може забезпечити цю частину.", + "error.417":"Очікуване не відповідно. Север не може задовольнити вимоги вашого браузера.", + "error.418":"Я - чайник. ;-)", + "error.500":"Внутрішня помилка сервера. Загальне повідомлення про помилку, надається тоді, коли немає більш відповідного повідомлення.", + "error.501":"Не реалізовано. Сервер навіть не розпізнав метод запиту чи в нього немає змоги задовольнити запит.", + "error.502":"Неправильний шлюз. Сервер виступає у ролі шлюзу чи проксі и отримав неправильну відповідь від наступного сервера.", + "error.503":"Сервіс недоступний. Сервер зараз недоступний (тому що він перезавантажується чи вимкнений з технічних причин). Як правило, це тимчасовий стан.", + "error.504":"Шлюз не відповідає. Сервер виступає у ролі шлюза чи проксі і не отримав вчасної відповіді від наступного за ним сервера.", + "error.505":"Версія HTTP не пидтримується. Сервер не підтримує версію HTTP протокола, що викорустовується у запиті." +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/linkchecker/nls/zh-hans/i18n.js new file mode 100644 index 000000000..d40147dc8 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/nls/zh-hans/i18n.js @@ -0,0 +1,28 @@ +define({ + "error.0":"检查URL时发生错误。", + "error.400":"错误的请求。由于包含语法错误,当前请求无法被服务器理解。", + "error.401":"未经授权。当前请求需要用户验证。", + "error.402":"需要付费。", + "error.403":"禁止访问。服务器已经理解请求,但是拒绝执行它。", + "error.404":"请求失败。请求所希望得到的资源未被在服务器上发现。", + "error.405":"请求的方法不被允许。", + "error.406":"请求不能接受。你的浏览器不支持此内容。", + "error.407":"需要在代理服务器上进行身份验证。", + "error.408":"请求超时。服务器等待发送请求时超时。", + "error.409":"请求出现冲突。", + "error.410":"被请求的资源在服务器上已经不再可用。", + "error.411":"服务器要求提供长度。这个链接可能会在浏览器中工作。", + "error.412":"前提条件失败。这个链接可能会在浏览器中工作。", + "error.413":"请求实体过大。请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。", + "error.414":"请求URL太长。请求的URI长度超过了服务器能够解释的长度。", + "error.415":"不支持的媒体类型。该服务器或资源不支持请求实体的媒体类型。", + "error.416":"请求的范围无法满足。客户端要求文件的一部分,但服务器无法提供的那部分。", + "error.417":"预期失败。服务器不能满足您的浏览器的要求。", + "error.418":"我是咖啡壶。;-)", + "error.500":"服务器内部错误。一般性错误消息,没有更具体的消息是适合。", + "error.501":"没有落实。服务器无法识别请求方法,或缺乏履行要求的能力。", + "error.502":"错误的网关。服务器作为网关或代理,从上游服务器收到无效响应。", + "error.503":"服务不可用。服务器目前无法使用(因为它超载或关闭进行维修)。一般来说,这是一个临时的状态。", + "error.504":"网关超时。服务器作为网关或代理,并没有从上游服务器得到及时的反应。", + "error.505":"HTTP版本不受支持。服务器不支持请求中使用的HTTP协议版本。" +}); diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/package.json b/modules/core/aloha/static/plugins/extra/linkchecker/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/proxy.php.example b/modules/core/aloha/static/plugins/extra/linkchecker/proxy.php.example new file mode 100644 index 000000000..b3d4158af --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/proxy.php.example @@ -0,0 +1,244 @@ + 'X');}; + * https url example: https://google.com/adsense + * + */ + +// for debugging +//$_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.0'; +//$_SERVER['REQUEST_METHOD'] = 'HEAD'; +//error_reporting(E_ALL); + +$request = array( + 'method' => $_SERVER['REQUEST_METHOD'], + 'protocol' => $_SERVER['SERVER_PROTOCOL'], + 'headers' => getallheaders(), + //TODO: multipart/form-data is not handled by php://input. there + //doesn't seem to be a generic way to get at the raw post data for + //that content-type. + 'payload' => file_get_contents('php://input'), +); + +// read url parameter +if (array_key_exists('url', $_GET)) { + $request['url'] = urldecode($_GET['url']); +} else { + header("HTTP/1.0 400 Bad Request"); + echo "Gentics AJAX Gateway failed because parameter url is missing."; + exit(); +} + +// check if link exists +$response = http_request($request); + +// Note HEAD does not always work even if specified... +// We use HEAD for Linkchecking so we do a 2nd request. +if (strtoupper($method) == 'HEAD' && (int)$response['status'] >= 400 ) { + + $request['method'] = 'GET'; + $response = http_request($request); + + //since we handle a HEAD, we don't need to proxy any contents + fclose($response['socket']); + $response['socket'] = null; +} + +// forward each returned header... +foreach ($response['headers'] as $key => $value) { + if (strtolower($key) == 'content-length') { + //there is no need to specify a content length since we don't do keep + //alive, and this can cause problems for integration (e.g. gzip output, + //which would change the content length) + //Note: overriding with header('Content-length:') will set + //the content-length to zero for some reason + continue; + } + header("$key: $value"); +} + +header('Connection: close'); + +// output the contents if any +if (null !== $response['socket']) { + fpassthru($response['socket']); + fclose($response['socket']); +} + +exit; + +/** + * Query an HTTP(S) URL with the given request parameters and return the + * response headers and status code. The socket is returned as well and + * will point to the begining of the response payload (after all headers + * have been read), and must be closed with fclose(). + * @param $url the request URL + * @param $request the request method may optionally be overridden. + * @param $timeout connection and read timeout in seconds + */ +function http_request($request, $timeout = 5) { + + $url = $request['url']; + // Extract the hostname from url + $parts = parse_url($url); + if (array_key_exists('host', $parts)) { + $remote = $parts['host']; + } else { + return myErrorHandler("url ($url) has no host. Is it relative?"); + } + if (array_key_exists('port', $parts)) { + $port = $parts['port']; + } else { + $port = 0; + } + + // Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities. + $request_headers = ""; + foreach ($request['headers'] as $name => $value) { + switch (strtolower($name)) { + //omit some headers + case "keep-alive": + case "connection": + case "cookie": + //TODO: we don't handle any compression encodings. compression + //can cause a problem if client communication is already being + //compressed by the server/app that integrates this script + //(which would double compress the content, once from the remote + //server to us, and once from us to the client, but the client + //would de-compress only once). + case "accept-encoding": + break; + // correct the host parameter + case "host": + $host_info = $remote; + if ($port) { + $host_info .= ':' . $port; + } + $request_headers .= "$name: $host_info\r\n"; + break; + // forward all other headers + default: + $request_headers .= "$name: $value\r\n"; + break; + } + } + + //set fsockopen transport scheme, and the default port + switch (strtolower($parts['scheme'])) { + case 'https': + $scheme = 'ssl://'; + if ( ! $port ) $port = 443; + break; + case 'http': + $scheme = ''; + if ( ! $port ) $port = 80; + break; + default: + //some other transports are available but not really supported + //by this script: http://php.net/manual/en/transports.inet.php + $scheme = $parts['scheme'] . '://'; + if ( ! $port ) { + return myErrorHandler("Unknown scheme ($scheme) and no port."); + } + break; + } + + //we make the request with socket operations since we don't want to + //depend on the curl extension, and the higher level wrappers don't + //give us usable error information. + $sock = @fsockopen("$scheme$remote", $port, $errno, $errstr, $timeout); + if ( ! $sock ) { + return myErrorHandler("Unable to open URL ($url): $errstr"); + } + + //the timeout in fsockopen is only for the connection, the following + //is for reading the content + stream_set_timeout($sock, $timeout); + + //an absolute url should only be specified for proxy requests + if (array_key_exists('path', $parts)) { + $path_info = $parts['path']; + } else { + $path_info = '/'; + } + + if (array_key_exists('query', $parts)) $path_info .= '?' . $parts['query']; + if (array_key_exists('fragment', $parts)) $path_info .= '#' . $parts['fragment']; + + $out = $request["method"]." ".$path_info." ".$request["protocol"]."\r\n" + . $request_headers + . "Connection: close\r\n\r\n"; + fwrite($sock, $out); + fwrite($sock, $request['payload']); + + $header_str = stream_get_line($sock, 1024*16, "\r\n\r\n"); + $headers = http_parse_headers($header_str); + $status_line = array_shift($headers); + + // get http status + preg_match('|HTTP/\d+\.\d+\s+(\d+)\s+.*|i',$status_line,$match); + $status = $match[1]; + + return array('headers' => $headers, 'socket' => $sock, 'status' => $status); +} + +/** + * Parses a string containing multiple HTTP header lines into an array + * of key => values. + * Inspired by HTTP::Daemon (CPAN). + */ +function http_parse_headers($header_str) { + $headers = array(); + + //ignore leading blank lines + $header_str = preg_replace("/^(?:\x0D?\x0A)+/", '', $header_str); + + while (preg_match("/^([^\x0A]*?)\x0D?(?:\x0A|\$)/", $header_str, $matches)) { + $header_str = substr($header_str, strlen($matches[0])); + $status_line = $matches[1]; + + if (empty($headers)) { + // the status line + $headers[] = $status_line; + } + elseif (preg_match('/^([^:\s]+)\s*:\s*(.*)/', $status_line, $matches)) { + if (isset($key)) { + //previous header is finished (was potentially multi-line) + $headers[$key] = $val; + } + list(,$key,$val) = $matches; + } + elseif (preg_match('/^\s+(.*)/', $status_line, $matches)) { + //continue a multi-line header + $val .= " ".$matches[1]; + } + else { + //empty (possibly malformed) header signals the end of all headers + break; + } + } + if (isset($key)) { + $headers[$key] = $val; + } + return $headers; +} + +function myErrorHandler($msg) +{ + // 500 could be misleading... + // Should we return a special Error when a proxy error occurs? + header("HTTP/1.0 500 Internal Error"); + echo "Gentics Aloha Editor AJAX Gateway Error: $msg"; + exit(); +} + +//EOF diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.css b/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.css new file mode 100644 index 000000000..5f6ad0f90 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.css @@ -0,0 +1,14 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ + +.aloha-link-error { + color: red !important; +} + +.aloha-link-warn { + color: red !important; +} diff --git a/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.js b/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.js new file mode 100644 index 000000000..fbe72e006 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/linkchecker/src/linkchecker.js @@ -0,0 +1,269 @@ +/* linkchecker.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +(function (window, undefined) { + "use strict"; + + var + jQuery = window.alohaQuery || window.jQuery, $ = jQuery, + GENTICS = window.GENTICS, + Aloha = window.Aloha; + + Aloha.LinkChecker = new Aloha.Plugin('linkchecker'); + + /** + * All error codes that have an explanation. + */ + Aloha.LinkChecker.errorCodes = [400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, + 418, 500, 501, 502, 503, 504, + 505, 506]; + /** + * This codes are asumed temporary errors. + */ + Aloha.LinkChecker.warningCodes = [404, 411, 412, 413, 500, 503, + 504, 505]; + + + /** + * Initialize the plugin and set initialize flag on true + */ + Aloha.LinkChecker.init = function () { + + this.proxyUrl = null; + + if (typeof Aloha.LinkChecker.settings.proxyUrl !== 'undefined') { + this.proxyUrl = Aloha.LinkChecker.settings.proxyUrl; + } + + // initialize the timer + this.timer = {}; + + // initialize the running requests + this.xhr = {}; + + // remember reference to this class for callback + var that = this; + + // mark active Editable with a css class + Aloha.EventRegistry.subscribe( + Aloha, + "editableActivated", + function (jEvent, aEvent) { + // find all link tags + aEvent.editable.obj.find('a').each(function () { + that.checkLink(this, jQuery(this).attr('href'), 0); + }); + } + ); + + // remove active Editable ccs class + Aloha.EventRegistry.subscribe( + Aloha, + "editableDeactivated", + function (jEvent, aEvent) { + // remove link marks + that.makeClean(aEvent.editable.obj); + } + ); + + // remove active Editable ccs class + Aloha.EventRegistry.subscribe( + Aloha, + "hrefChanged", + function (jEvent, aEvent) { + that.checkLink(aEvent.obj, 'hrefChanged'); + } + ); + + }; + + Aloha.LinkChecker.checkLink = function (obj, scope, delay, timeout) { + var that = this, + url, cleanUrl; + + // extract url from link object + url = jQuery(obj).attr('href'); + cleanUrl = url; + + // i probably an internal link + if (typeof url == 'string' && !/^http/.test(url.toLowerCase())) { + this.makeCleanLink(obj); + return; + } + + if (this.proxyUrl) { + url = this.proxyUrl + url; + } + + // abort already running ajax requests for the scope + if (this.xhr[scope]) { + this.xhr[scope].abort(); + this.xhr[scope] = undefined; + } + + this.timer[scope] = this.urlExists( + url, + // success + function (xhr) { + that.makeCleanLink(obj); + }, + //failure + function (xhr) { + var e, o; + + if (obj) { + if (jQuery.inArray(xhr.status, that.errorCodes) >= 0) { + e = xhr.status; + } else { + e = '0'; + } + o = jQuery(obj); + // when the link has a title and was not yet marked as being invalid, we store the title in 'data-title' + if (o.attr('title') && !o.attr('data-invalid')) { + o.attr('data-title', o.attr('title')); + } + // now we mark the link as being invalid + o.attr('data-invalid', 'true'); + // and we set an error message to the title + o.attr('title', cleanUrl + '. ' + that.i18n('error.' + e)); + // set the link class + if (jQuery.inArray(xhr.status, that.warningCodes) >= 0) { + o.addClass('aloha-link-warn'); + } else { + o.addClass('aloha-link-error'); + } + } + }, + scope, + timeout, + delay + ); + }; + + Aloha.LinkChecker.urlExists = function (url, successFunc, failureFunc, scope, timeout, delay) { + var that = this, newTimer; + + // abort timer for that request + clearTimeout(this.timer[scope]); + + delay = (delay != null && typeof delay !== 'undefined' ) ? delay : 700; + + // start timer for delayed request + newTimer = window.setTimeout(function () { + + // start request + that.xhr[scope] = jQuery.ajax({ + url:url, + timeout:timeout ? 10000 : timeout, + type:'HEAD', + complete:function (xhr) { + // abort timer for that request + clearTimeout(newTimer); + try { + // if response HTTP status 200 link is ok + // this implementation does NOT cover redirects! + if (xhr.status < 400) { + successFunc.call(this, xhr); + } else { + failureFunc.call(this, xhr); + } + } catch (e) { + failureFunc.call(this, {'status':0}); + } + } + }); + + }, delay); + + return newTimer; + }; + + Aloha.LinkChecker.makeCleanLink = function (obj) { + if (obj) { + var o = jQuery(obj); + // restore the original title (if one existed) + if (o.attr('data-title')) { + o.attr('title', o.attr('data-title')); + } else { + // otherwise remove the title + o.removeAttr('title'); + } + // remove the temporary data + o.removeAttr('data-title'); + o.removeAttr('data-invalid'); + // remove the classes + o.removeClass('aloha-link-error'); + o.removeClass('aloha-link-warn'); + } + }; + + Aloha.LinkChecker.makeClean = function (editable) { + var that = this; + // find all link tags + editable.find('a').each(function () { + that.makeCleanLink(this); + }); + }; + + Aloha.LinkChecker.urlencode = function (str) { + // URL-encodes string + // + // version: 1008.1718 + // discuss at: http://phpjs.org/functions/urlencode + // + original by: Philip Peterson + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + input by: AJ + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + improved by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + input by: travc + // + input by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + improved by: Lars Fischer + // + input by: Ratheous + // + reimplemented by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Joris + // + reimplemented by: Brett Zamir (http://brett-zamir.me) + // % note 1: This reflects PHP 5.3/6.0+ behavior + // % note 2: Please be aware that this function expects to encode into UTF-8 encoded strings, as found on + // % note 2: pages served as UTF-8 + // * example 1: urlencode('Kevin van Zonneveld!'); + // * returns 1: 'Kevin+van+Zonneveld%21' + // * example 2: urlencode('http://kevin.vanzonneveld.net/'); + // * returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F' + // * example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'); + // * returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a' + str = (str + '').toString(); + + // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current + // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following. + return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28'). + replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+'); + }; + +})(window); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/listenforcer/lib/listenforcer-plugin.js b/modules/core/aloha/static/plugins/extra/listenforcer/lib/listenforcer-plugin.js new file mode 100644 index 000000000..74f47d8d5 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/listenforcer/lib/listenforcer-plugin.js @@ -0,0 +1,190 @@ +/* listenforcer-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/* Aloha List Enforcer + * ------------------- + * Enforces a one top-level list per editable policy ;-) + * This plugin will register editables and enforce lists in them. List enforced + * editables will be permitted to contain, exactly one top-level element which + * must be a (OL or a UL) list element. + */ +define([ + 'aloha', + 'jquery', + 'aloha/plugin', + 'aloha/console' +], function (Aloha, jQuery, Plugin, console) { + 'use strict'; + + /** + * An internal array of all editables inwhich to enforce lists. + * + * @private + */ + var listEnforcedEditables = []; + + /** + * Given an editable which has been configured to enforce lists, + * ensures that there is exactly one top-level list in the editable. + * If there are no lists, one will be added, using the + * placeHolderListString. If there is more than one list, they will be + * merged into the first list. + * If there is any other content in the editable it will be removed. + * + * @private + * @param {jQuery} $editable + * @param {String} placeHolderListString + */ + function enforce($editable, placeHolderListString) { + // Check if this editable is configured to enforce lists + if (jQuery.inArray($editable[ 0 ], listEnforcedEditables) === -1) { + return; + } + + // Remove all temporary
      s in the editable, which we may have + // inserted when we activated this editable and found it empty. These + //
      s are needed to make the otherwise empty
    • visible (in IE). + // + // Note: We no longer insert temporary
      s with the "aloha-end-br" + // class on them. But we should leave this removal here to ensure that + // content that was generated with legacy Aloha Editor is cleaned + // correctly. + $editable.find('.aloha-end-br').remove(); + + // Check for the presence of at least one non-empty list. We consider + // a list to be not empty if it has atleast one item whose contents are + // more than a single (propping)
      tag. + + var hasList = false; + + $editable.find('li').each(function () { + // nb: jQuery text() method returns the text contents of the + // element without
      s being rendered. + if (jQuery.trim(jQuery(this).text()) !== '') { + hasList = true; + // Stop looking for lists as soon as we find our first + // non-empty list + return false; + } + }); + + // If we found no non-empty list, then we add our empty dummy list that + // the user can work with. + if (!hasList) { + $editable.html(placeHolderListString); + } + + // Concatinate all top-level lists into the first, before, thereby + // merging all top-level lists into one. + var $lists = $editable.find('>ul,>ol'), + j = $lists.length, + i; + if (j > 1) { + var $firstList = jQuery($lists[0]); + for (i = 1; i < j; ++i) { + $firstList.append(jQuery($lists[ i ]).find('>li')); + jQuery($lists[ i ]).remove(); + } + } + + // Remove all top-level elements which are not lists + $editable.find('>*:not(ul,ol)').remove(); + }; + + return Plugin.create('listenforcer', { + + _constructor:function () { + this._super('listenforcer'); + }, + + /** + * Initializes the listenforcer plugin: + * We read the aloha configuration settings to determine which + * editables are to have list enforced in them. + * We bind handlers to 3 events (aloha-editable-activated, + * aloha-editable-deactivated, and aloha-smart-content-changed) on + * which we will process the current active editable and enfore lists + * in it. + */ + init:function () { + var that = this, + elemsToEnforce = this.settings.editables || [], + elemToEnforce, + i, + j = elemsToEnforce.length; + + // Register all editables that are to enforce lists. + // The following types of items can be used as jQuery selectors: + // String, DOMElement, and jQuery + for (i = 0; i < j; i++) { + elemToEnforce = elemsToEnforce[ i ]; + if (typeof elemToEnforce === 'string' || + elemToEnforce.nodeName || + elemToEnforce instanceof jQuery) { + jQuery(elemToEnforce).each(function () { + that.addEditableToEnforcementList(this); + }); + } else { + console.warn( + 'Aloha List Enforcer Plugin', + 'Object "' + elemToEnforce.toString() + '" can not ' + + 'be used as a jQuery selector with which to register' + + ' an editable to be list enforced.' + ); + } + } + + Aloha.bind('aloha-editable-activated', function ($event, params) { + enforce(params.editable.obj, + '

      '); + }); + + Aloha.bind('aloha-editable-deactivated', function ($event, params) { + enforce(params.editable.obj, ''); + }); + + Aloha.bind('aloha-smart-content-changed', function ($event, params) { + //We only want to do this is if the editable is actually active + if (Aloha.activeEditable && Aloha.activeEditable.isActive === true) { + enforce(params.editable.obj, + '

      '); + } + }); + }, + + /** + * Registers the given editable to be list-enforced. + * + * @param {DOMElement} editable + */ + addEditableToEnforcementList:function (editable) { + if (editable) { + listEnforcedEditables.push(editable); + } + } + + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/README b/modules/core/aloha/static/plugins/extra/metaview/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/metaview/css/metaview.css b/modules/core/aloha/static/plugins/extra/metaview/css/metaview.css new file mode 100644 index 000000000..56b468179 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/css/metaview.css @@ -0,0 +1,162 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ +.aloha-icon-metaview { + background: url(../img/button.png) no-repeat 0px 0px !important; +} + +.aloha-metaview p, .aloha-metaview pre, +.aloha-metaview h1, .aloha-metaview h2, +.aloha-metaview h3, .aloha-metaview h4, +.aloha-metaview h5, .aloha-metaview h6, +.aloha-metaview blockquote, .aloha-metaview ol, +.aloha-metaview ul, .aloha-metaview div, +.aloha-metaview dl, .aloha-metaview dt, +.aloha-metaview dd, .aloha-metaview td, +.aloha-metaview th, .aloha-metaview table, +.aloha-metaview caption, .aloha-metaview hr { + background: white no-repeat 2px 2px; + padding: 8px 5px 5px; + margin: 10px; + border: 1px solid #ddd; + min-height: 1em; +} + +.aloha-metaview caption { + margin-bottom: 0px; +} + +/* IE HACK START - IE RENDERS FUNNY BOXES WHEN SOMETHING IN A CONTENTEDITABLE HAS A MIN-HEIGHT SET*/ + +* .aloha-metaview p, * .aloha-metaview pre, +* .aloha-metaview h1, * .aloha-metaview h2, +* .aloha-metaview h3, * .aloha-metaview h4, +* .aloha-metaview h5, * .aloha-metaview h6, +* .aloha-metaview blockquote, * .aloha-metaview ol, +* .aloha-metaview ul, * .aloha-metaview div, +* .aloha-metaview dl, * .aloha-metaview dt, +* .aloha-metaview dd, * .aloha-metaview td, +* .aloha-metaview th, * .aloha-metaview table, +* .aloha-metaview caption, * .aloha-metaview hr { + min-height: auto; +} + +/* IE HACK END*/ + +/* HTML ELEMENTS*/ +.aloha-metaview ul, .aloha-metaview ol { + border-left: 20px solid #ddd; + padding: 0px 5px; +} + +.aloha-metaview p { + background-image: url(../img/p.png); +} + +.aloha-metaview pre { + background-image: url(../img/pre.png); +} + +.aloha-metaview h1 { + background-image: url(../img/h1.png); +} + +.aloha-metaview h2 { + background-image: url(../img/h2.png); +} + +.aloha-metaview h3 { + background-image: url(../img/h3.png); +} + +.aloha-metaview h4 { + background-image: url(../img/h4.png); +} + +.aloha-metaview h5 { + background-image: url(../img/h5.png); +} + +.aloha-metaview h6 { + background-image: url(../img/h6.png); +} + +.aloha-metaview blockquote { + background-image: url(../img/blockquote.png); +} + +.aloha-metaview div { + background-image: url(../img/div.png); +} + +.aloha-metaview dl { + background-image: url(../img/dl.png); +} + +.aloha-metaview dt { + background-image: url(../img/dt.png); +} + +.aloha-metaview dd { + background-image: url(../img/dd.png); +} + +.aloha-metaview td { + background-image: url(../img/td.png); +} + +.aloha-metaview th { + background-image: url(../img/th.png); +} + +.aloha-metaview table { + background-image: url(../img/table.png); +} + +.aloha-metaview caption { + background-image: url(../img/caption.png); +} + +.aloha-metaview hr { + background-image: url(../img/hr.png); +} + +.aloha-metaview abbr[title], .aloha-metaview dfn[title] { + border-bottom: 1px dotted; + cursor: help; +} + +.aloha-metaview [lang] { + background-image: url(../../wai-lang/img/button.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center; +} + +/* @todo add also the other languages which are available */ + +.aloha-metaview q { + background-image: url(../img/icon_cite.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center; +} + +.aloha-metaview a { + background-image: url(../img/anchor.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center; +} + +/* EXCEPTION FOR TABLE PLUGIN ELEMENTS*/ + diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/anchor.png b/modules/core/aloha/static/plugins/extra/metaview/img/anchor.png new file mode 100644 index 0000000000000000000000000000000000000000..26e4059647658d33b1ed4ad04702a07ec9421e60 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_!VDyzm^o(mmT-(T6cZsOvd z8#ZrUzWLbx6W1@^dh`3wUlZ?SFF83Mpd!YSAirP+hi5m^fSe>x7srr_xVa}3xf%>4 z93Gmk4V#>(A<;fV^m)MMgF6(AW*gjKonq*(kiF@V>ECje+Lw$+eLa2gdT|NsH9!%@ zk|4ie28U-i(tsR&PZ!6Kia6P0hP(_40?Y@zR?hI>&^SY0tNCfFNa%!k&l`N(w|DYf gb>h4FN6qg<%{6IWbdFAIY~-+^PVr*fwOO=j?P^>bP0l+XkKBWNq& literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/caption.png b/modules/core/aloha/static/plugins/extra/metaview/img/caption.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcb60375116e355389d9b8e4559e389be9b0ade GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG@$P6UEK00m)q}T#{LR|m<|37{4`nWUGOk$N<1;s*dW{Zu?guX0%6-kzGaO$t9`@rA UST;#u7f>sMr>mdKI;Vst0LeWhtpET3 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/cite.png b/modules/core/aloha/static/plugins/extra/metaview/img/cite.png new file mode 100644 index 0000000000000000000000000000000000000000..115092effa4a6fce60614a9a5c5686c67eb4a3ad GIT binary patch literal 395 zcmV;60d)R}P)00004XF*Lt006O% z3;baP00009a7bBm000ib000ib0l1NC?EnA(8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;u(kfL#Cp0SHM%K~yMHV_+Z!{AaqrUc^Bg4Q?~!#YVn^D zN!dTvcVYWpI{bI|Kl%T+HU@?t%umASdv@NIeF3U>*2Lj`@$=BqF;$g*-3L-n`GuvG>k z9QS`iR0V=OUb lEAdQ`I<{<+l2aZNgIC7P+?NN;mjhKYc)I$ztaD0e0suUF7YzUa literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/div.png b/modules/core/aloha/static/plugins/extra/metaview/img/div.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8fba45934b511c70eede20781688ceec94d7ff GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T*!3HFk-@on!q_jL;9780gCjaPXS*9PyfBeOx y7da)S3I`lKE?+R>i4I6G?FpFiut=1Hfk8nvwqoM8i|2s47(8A5T-G@yGywqgXdS@- literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/dl.png b/modules/core/aloha/static/plugins/extra/metaview/img/dl.png new file mode 100644 index 0000000000000000000000000000000000000000..192866cb82ec334161938567ea2fab17c7bc6d01 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@QnH>djv*Y;$uss<{H>R0V@xsQ kFi4oZWTR3}p3^ag$#!%1K5t9m0V-thboFyt=akR{05M}18vpR0V=OUb lEAh<9(b9G*7v81Bkg<5)#X|y_E)Q!3-q#xv;$gQfvV}A+FOGumAM+_1nWq=YS$i zB|(0{{~4ZcH}C@T#5`RbLpY+76B1Hb6xj^UGB6g{HL)=;7BdJvytyJBsDi=M)z4*} HQ$iB}@#h`& literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/h2.png b/modules/core/aloha/static/plugins/extra/metaview/img/h2.png new file mode 100644 index 0000000000000000000000000000000000000000..e76cba518a2b3b8eb74a9543acf498f8f44812e6 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3-o9^qNHiDYgKg5ZCF8*MEBZ`t9MQb3hTM zk|4j}{|ryJ8+ZYE(w;7kAsn)-2N@ZGyas{4_OeqNf>>FmgiJ|b5@HZJ^gGcID8bgTe~DWM4fY9$`V literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/h3.png b/modules/core/aloha/static/plugins/extra/metaview/img/h3.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6230c23417060cba2b269719c5aea387862c4b GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3-o9^qNHiDYgKg5ZCF8*MEBZ`t9MQb3hTM zk|4j}{|ryJ8+ZYElAbP(Aso@k2?;4F2`LQB0^A%AWI_yQSTQi^GKkK3@clMW5re0z KpUXO@geCw>HXlg< literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/h4.png b/modules/core/aloha/static/plugins/extra/metaview/img/h4.png new file mode 100644 index 0000000000000000000000000000000000000000..c1087e44c7002ee8100d94e5badac958451df24a GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV$P6Uc&JEE3QfvV}A+Dd^zMj5#y|{$+8lVVc zNswPKgTu2MX+Vy&r;B4qMV#oNjl3W!$Ho6SxOQi`7IB3?k=9<#dcbOza57MW!PC{x JWt~$(695C<9#;SW literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/h5.png b/modules/core/aloha/static/plugins/extra/metaview/img/h5.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f4f18997952f7a66742971c9f403ac6e3b3dd5 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3-o9^qNHiDYgKg5ZCF8*MEBZ`t9MQb3hTM zk|4j}{|ryJ8+ZYE(w;7kAsn)-2N@ZGyas{4_OeqNCULP$(VCLLB*Y-1$G3MEP=dkJ L)z4*}Q$iB}VtXD% literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/h6.png b/modules/core/aloha/static/plugins/extra/metaview/img/h6.png new file mode 100644 index 0000000000000000000000000000000000000000..8661735228cde87ce1ade996d844b803e91c86e7 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3-o9^qNHiDYgKg5ZCF8*MEBZ`t9MQb3hTM zk|4j}{|ryJ8+ZYE(w;7kAsn)-2N@ZGyas{4_OeqNCULP$5%Dr$Vqp+=*frY$D8bgTe~DWM4fSU?@f literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/hr.png b/modules/core/aloha/static/plugins/extra/metaview/img/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..306f54032b17677bd3f92b220d1b92009664e5f1 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@Qu>}Qjv*Y;$uss<{Hdx%PJF018y$Jq2UM}BoHg(n?4@T}b%R>rz fSsPa-eB@+!5+wXT`ptJ$pw$eXu6{1-oD!M<$3ttH literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/p.png b/modules/core/aloha/static/plugins/extra/metaview/img/p.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7d74cb00df504216c187ec87a10cf40faf8099 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c4$P6SSlJCy|QfvV}A+Dd^zMj5#y|{$+8lVVc zNswPKgTu2MX+Vyor;B4qMI7&8Lq;I4$zYN2!4+;7lBdkE5SC&tbeuj@2q?_p>FVdQ I&MBb@0N$}3#{d8T literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/pre.png b/modules/core/aloha/static/plugins/extra/metaview/img/pre.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7154b14b6ff6816e2b3887fcedffc00bc1d7c3 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T*!3-oPFsfGoDYgKg5ZCF8*MEBZ`t9MQb3hTM zk|4j}{|ryJ8+ZYEik>cxAso@k2@Fhb5(hcb8Z#8QTM}55+aw~G%}QrHV`SjeVbGhh SdN(^zF@vY8pUXO@geCwBIv@=I literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/table.png b/modules/core/aloha/static/plugins/extra/metaview/img/table.png new file mode 100644 index 0000000000000000000000000000000000000000..86321336e8316d42f31834c81d997e6872dc5d65 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG@!3HGH>x32oDQiy`#}JM4$v^s8ed71XF((VV zi#uQQKjD+p@X%haVIAk})|Mk5EGHx#4^U27@oa{psL>4_HPhUOMG_3$%~iMeiuf!A P8pGh}>gTe~DWM4f^0_1L literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/td.png b/modules/core/aloha/static/plugins/extra/metaview/img/td.png new file mode 100644 index 0000000000000000000000000000000000000000..c74a0e15433c12bc500a22dceca69e455d60682e GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@QgWUyjv*Y;$v^m6E{m^kPtK`f lGvJ(h;OMeur4(~UhEI#?Eb7f%2H literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/img/th.png b/modules/core/aloha/static/plugins/extra/metaview/img/th.png new file mode 100644 index 0000000000000000000000000000000000000000..533da8bd2b237596b5011b73aeea3a8803839eaa GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@Qc9jKjv*Y;$v^m6E{m^kPnM8p pbI4&!;nOqob3HM`X!3-c4F4z3yO=6}Qvj%%!PC{xWt~$(699My7xMrB literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/metaview/lib/metaview-plugin.js b/modules/core/aloha/static/plugins/extra/metaview/lib/metaview-plugin.js new file mode 100644 index 000000000..d675b3633 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/lib/metaview-plugin.js @@ -0,0 +1,101 @@ +/* metaview-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/plugin', + 'ui/ui', + 'ui/toggleButton', + 'i18n!metaview/nls/i18n', + 'i18n!aloha/nls/i18n', + 'jquery' +], function (Plugin, Ui, ToggleButton, i18n, i18nCore, jQuery) { + 'use strict'; + var GENTICS = window.GENTICS, + Aloha = window.Aloha; + + return Plugin.create('metaview', { + _constructor:function () { + this._super('metaview'); + }, + + config:[ 'metaview' ], + /** + * Initialize the plugin + */ + init:function () { + var that = this; + + this.createButtons(); + + // mark active Editable with a css class + Aloha.bind( + "aloha-editable-activated", + function (jEvent, aEvent) { + var config; + config = that.getEditableConfig(Aloha.activeEditable.obj); + if (jQuery.type(config) === 'array' && jQuery.inArray('metaview', config) !== -1) { + that._toggleMetaViewButton.show(true); + } else { + that._toggleMetaViewButton.show(false); + return; + } + + if (/* that.button && */ jQuery(Aloha.activeEditable.obj).hasClass('aloha-metaview')) { + that._toggleMetaViewButton.setState(true); + } else { + that._toggleMetaViewButton.setState(false); + } + } + ); + }, + + buttonClick:function () { + if (jQuery(Aloha.activeEditable.obj).hasClass('aloha-metaview')) { + jQuery(Aloha.activeEditable.obj).removeClass('aloha-metaview'); + this._toggleMetaViewButton.setState(false); + } else { + jQuery(Aloha.activeEditable.obj).addClass('aloha-metaview'); + this._toggleMetaViewButton.setState(true); + } + }, + + /** + * Initialize the buttons + */ + createButtons:function () { + var that = this; + + this._toggleMetaViewButton = Ui.adopt("toggleMetaView", ToggleButton, { + tooltip:i18n.t('button.switch-metaview.tooltip'), + icon:'aloha-icon aloha-icon-metaview', + scope:'Aloha.continuoustext', + click:function () { + that.buttonClick(); + } + }); + } + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/ca/i18n.js new file mode 100644 index 000000000..bbc06a63e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/ca/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Canvia entre la visualització «meta» i «normal»" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/de/i18n.js new file mode 100644 index 000000000..625d9f31f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/de/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Zwischen Metaansicht und normaler Ansicht umschalten" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/i18n.js new file mode 100644 index 000000000..4269b8a1d --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/i18n.js @@ -0,0 +1,12 @@ +define({ + "root":{ + "button.switch-metaview.tooltip":"Switch between meta and normal view" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/mk/i18n.js new file mode 100644 index 000000000..6e01076f6 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/mk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Промени помеѓу мета и нормален поглед" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/pt-br/i18n.js new file mode 100644 index 000000000..aacfcaf8f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/pt-br/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Alternar entre visão meta e normal" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/ru/i18n.js new file mode 100644 index 000000000..4ac582687 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/ru/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Переключение между мета- и нормальным видом" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/uk/i18n.js new file mode 100644 index 000000000..33af8b5ab --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/uk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"Перемикання між мета- та звичайним виглядом" +}); diff --git a/modules/core/aloha/static/plugins/extra/metaview/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/metaview/nls/zh-hans/i18n.js new file mode 100644 index 000000000..ea74d067e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/metaview/nls/zh-hans/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.switch-metaview.tooltip":"在元视图和普通视图之间切换" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/README b/modules/core/aloha/static/plugins/extra/numerated-headers/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/css/numerated-headers.css b/modules/core/aloha/static/plugins/extra/numerated-headers/css/numerated-headers.css new file mode 100644 index 000000000..f1fcca8dc --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/css/numerated-headers.css @@ -0,0 +1,9 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2010 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ +.aloha-icon-numerated-headers { + background: url(../img/headers.png) no-repeat 0px 0px !important; +} diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.css b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.css new file mode 100644 index 000000000..34f90a4fb --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.css @@ -0,0 +1,199 @@ +body { + font-family: sans-serif; + background-image: url("../../../../demo/common/background.png"); +} + +#bodyContent { + font-size: 0.8em; +} + +p { + margin-bottom: 10px; +} + +h1, h2, h3, h4, h5, h6 { + font-family: sans-serif; + color: #1c94c4; + border-bottom: 1px solid #AAAAAA; + padding-bottom: 0.17em; + padding-top: 0.5em; +} + +h1 { + font-size: 188%; +} + +h2 { + font-size: 150%; +} + +h3 { + font-size: 132%; +} + +h4 { + font-size: 116%; +} + +h5 { + font-size: 100%; +} + +h6 { + font-size: 80%; +} + +#main { + width: 50%; + position: absolute; + top: 10%; + left: 25%; + padding: 30px; + background-color: white; + border-radius: 10px; + color: #444444; + -moz-border-radius: 10px; + box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.3); +} + +a.aloha { + background: url(../../../../demo/common/external-link-ltr-icon.png) no-repeat 100% 50%; + padding: 0px 13px 0px 0px; +} + +/* Abbreviation styling */ +abbr, acronym { + border-bottom: .1em dotted; + cursor: help; +} + +/* A basic table styling */ +.aloha_example table { + padding: 0; + margin: 0; + border-collapse: collapse; + border: 1px solid #333; + color: #000; +} + +.aloha_example table caption { + caption-side: bottom; + font-size: 0.8em; + font-style: italic; + text-align: right; + padding: 0.5em 0; +} + +.aloha_example table th, +.aloha_example table td { + border: 1px solid #666; + padding: 0.5em; + text-align: left; +} + +.aloha_example th { + background-color: #dfd; +} + +table caption { + caption-side: bottom; + font-size: 0.8em; + font-style: italic; + text-align: right; + padding: 0.5em 0; +} + +#main ol, ul { + list-style-position: inside; +} + +#main ol { + list-style-type: decimal; +} + +#main ul { + list-style-type: disc; +} + +/** + * basic table styles + */ +.hor-minimalist-a { + background: #fff; + border-collapse: collapse; + text-align: left; +} + +.hor-minimalist-a th { + font-size: 130%; + font-weight: normal; + padding: 10px 8px; + border-bottom: 2px solid #6678b1; +} + +.hor-minimalist-a td { + padding: 9px 8px 0px 8px; +} + +.hor-minimalist-a tbody tr:hover td { + color: #009; +} + +.box-table-a { + text-align: left; + border-collapse: collapse; +} + +.box-table-a th { + font-size: 115%; + font-weight: normal; + padding: 8px; + background: #b9c9fe; + border-top: 4px solid #aabcfe; + border-bottom: 1px solid #fff; +} + +.box-table-a td { + padding: 8px; + background: #e8edff; + border-bottom: 1px solid #fff; + border-top: 1px solid transparent; +} + +.box-table-a tr:hover td { + background: #d0dafd; +} + +.hor-zebra { + text-align: left; + border-collapse: collapse; +} + +.hor-zebra th { + font-size: 130%; + font-weight: bold; + padding: 10px 8px; + border-bottom: 2px solid #6678b1; + +} + +.hor-zebra td { + padding: 8px; +} + +.hor-zebra tr:nth-child(2n+1) td { + background: #e8edff; +} + +td.bigbold { + font-size: 200%; + font-weight: bold; +} + +td.redwhite { + background-color: red; + color: white; + font-weight: bold; +} diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.html b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.html new file mode 100644 index 000000000..e03aa4a79 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/index.html @@ -0,0 +1,147 @@ + + + + + Numerated Headers + + + + + + + + + +
      +
      +

      Numerated Headers Example

      + +

      just click into the editable area:

      + +
      + +
      +

      Each specified header will be decorated with a prepended numeration.

      + +

      Headline 1

      + +

      Headline 2

      + +

      Headline 3

      +

      Headline 4

      +
      Headline 5
      +
      Headline 6
      + +

      Here we test, a link and other formattings such as + bold, italic or + deleted text + . You may also use formattings for maths 2 + 2 = 4 or chemical formulas like CO2. + Or you may edit tables as you do in office products. +

      + +
      +
      +
      + + + diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/demo/js/aloha-config.js b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/js/aloha-config.js new file mode 100644 index 000000000..16343fdf6 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/demo/js/aloha-config.js @@ -0,0 +1,115 @@ +(function (window, undefined) { + var jQuery = window.jQuery + if (window.Aloha === undefined || window.Aloha === null) { + window.Aloha = {}; + } + window.Aloha.settings = { + logLevels:{'error':true, 'warn':true, 'info':true, 'debug':false}, + errorhandling:false, + ribbon:false, + + "placeholder":{ + '*':'logo Placeholder All', + '#typo3span':'Placeholder for span' + }, + "i18n":{ + // you can either let the system detect the users language (set acceptLanguage on server) + // In PHP this would would be '' resulting in + // "acceptLanguage": 'de-de,de;q=0.8,it;q=0.6,en-us;q=0.7,en;q=0.2' + // or set current on server side to be in sync with your backend system + "current":"en" + }, + repositories:{ + linklist:{ + data:[ + { name:'Aloha Developers Wiki', url:'http://www.aloha-editor.com/wiki', type:'website', weight:0.50 }, + { name:'Aloha Editor - The HTML5 Editor', url:'http://aloha-editor.com', type:'website', weight:0.90 }, + { name:'Aloha Demo', url:'http://www.aloha-editor.com/demos.html', type:'website', weight:0.75 }, + { name:'Aloha Wordpress Demo', url:'http://www.aloha-editor.com/demos/wordpress-demo/index.html', type:'website', weight:0.75 }, + { name:'Aloha Logo', url:'http://www.aloha-editor.com/images/aloha-editor-logo.png', type:'image', weight:0.10 } + ] + } + }, + "plugins":{ + "format":{ + // all elements with no specific configuration get this configuration + config:[ 'b', 'i', 'sub', 'sup'], + editables:{ + // no formatting allowed for title + '#title':[ ], + // formatting for all editable DIVs + 'div':[ 'b', 'i', 'del', 'sub', 'sup' ], + // content is a DIV and has class .article so it gets both buttons + '.article':[ 'b', 'i', 'p', 'title', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'removeFormat'] + } + }, + "list":{ + // all elements with no specific configuration get an UL, just for fun :) + config:[ 'ul' ], + editables:{ + // Even if this is configured it is not set because OL and UL are not allowed in H1. + '#title':[ 'ol' ], + // all divs get OL + 'div':[ 'ol' ], + // content is a DIV. It would get only OL but with class .article it also gets UL. + '.article':[ 'ul' ] + } + }, + "link":{ + // all elements with no specific configuration may insert links + config:[ 'a' ], + editables:{ + // No links in the title. + '#title':[ ] + }, + // all links that match the targetregex will get set the target + // e.g. ^(?!.*aloha-editor.com).* matches all href except aloha-editor.com + targetregex:'^(?!.*aloha-editor.com).*', + // this target is set when either targetregex matches or not set + // e.g. _blank opens all links in new window + target:'_blank', + // the same for css class as for target + cssclassregex:'^(?!.*aloha-editor.com).*', + cssclass:'aloha', + // use all resources of type website for autosuggest + objectTypeFilter:['website'], + // handle change of href + onHrefChange:function (obj, href, item) { + if (item) { + jQuery(obj).attr('data-name', item.name); + } + } + }, + "table":{ + // all elements with no specific configuration are not allowed to insert tables + config:[ ], + editables:{ + // Allow insert tables only into .article + '.article':[ 'table' ] + }, + // [{name:'green', text:'Green', tooltip:'Green is cool', iconClass:'GENTICS_table GENTICS_button_green', cssClass:'green'}] + tableConfig:[ + {name:'hor-minimalist-a'}, + {name:'box-table-a'}, + {name:'hor-zebra'}, + ], + columnConfig:[ + {name:'bigbold', iconClass:'GENTICS_button_col_bigbold'}, + {name:'redwhite', iconClass:'GENTICS_button_col_redwhite'} + ], + rowConfig:[ + {name:'bigbold', iconClass:'GENTICS_button_row_bigbold'}, + {name:'redwhite', iconClass:'GENTICS_button_row_redwhite'} + ] + + }, + "image":{ + config:{ 'img':{ 'max_width':'50px', + 'max_height':'50px' }}, + editables:{ + '#title':{} + } + } + } + }; +})(window); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/img/headers.png b/modules/core/aloha/static/plugins/extra/numerated-headers/img/headers.png new file mode 100644 index 0000000000000000000000000000000000000000..88f40e0366cf46bce891c1e6709d13ba54abe699 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar_~T6C^?o+_+)E(D7Q+ zbcvkTfAyA+QU(c$6Z)U9UOLRY!jU0`W8=fdvkiY8?ldgfIPYEJ1O6i)r?ffRPBVC* jV#ae|8()kB4+jGSPn@+@cY&@3&}arvS3j3^P6 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js b/modules/core/aloha/static/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js new file mode 100644 index 000000000..6e0633c81 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js @@ -0,0 +1,413 @@ +/* numerated-headers-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha/core', + 'jquery', + 'aloha/plugin', + 'ui/ui', + 'ui/toggleButton', + 'i18n!numerated-headers/nls/i18n', + 'i18n!aloha/nls/i18n' +], function (Aloha, $, Plugin, Ui, ToggleButton, i18n, i18nCore) { + 'use strict'; + + /** + * A cache of editable configuration. + * @private + * @type {object} + */ + var editableConfigurations = {}; + + Aloha.bind('aloha-editable-destroyed', function (event, editable) { + delete editableConfigurations[editable.getId()]; + }); + + return Plugin.create('numerated-headers', { + config:{ + numeratedactive:true, + headingselector:'h1, h2, h3, h4, h5, h6', + trailingdot:false + }, + + /** + * Initialize the plugin. + */ + init:function () { + var that = this; + + this._formatNumeratedHeadersButton = Ui.adopt('formatNumeratedHeaders', + ToggleButton, { + tooltip:i18n.t('button.numeratedHeaders.tooltip'), + icon:'aloha-icon aloha-icon-numerated-headers', + scope:'Aloha.continuoustext', + click:function () { + var buttonPressed = that._formatNumeratedHeadersButton.getState(); + if (!buttonPressed) { + that.removeNumerations(); + } else { + that.createNumeratedHeaders(); + } + } + }); + + + // We need to bind to smart-content-changed event to recognize + // backspace and delete interactions. + Aloha.bind('aloha-smart-content-changed', function (event) { + that.cleanNumerations(); + if (that.showNumbers()) { + that.createNumeratedHeaders(); + } + }); + + // We need to listen to that event, when a block is formatted to + // header format. smart-content-changed would be not fired in + // that case + Aloha.bind('aloha-format-block', function () { + that.cleanNumerations(); + if (that.showNumbers()) { + that.createNumeratedHeaders(); + } + }); + + Aloha.bind('aloha-editable-activated', function (event) { + if (that.isNumeratingOn()) { + that._formatNumeratedHeadersButton.show(); + that.initForEditable(Aloha.activeEditable.obj); + } else { + that._formatNumeratedHeadersButton.hide(); + } + }); + }, + + /** + * Init the toggle button (and numerating) for the current editable, + * if not yet done. + * If numerating shall be on by default and was not turned on, numbers + * will be created. + */ + initForEditable:function ($editable) { + var flag = $editable.attr('aloha-numerated-headers'); + if (flag !== 'true' && flag !== 'false') { + flag = (true === this.getCurrentConfig().numeratedactive) ? 'true' : 'false'; + $editable.attr('aloha-numerated-headers', flag); + } + + if (flag === 'true') { + this.createNumeratedHeaders(); + this._formatNumeratedHeadersButton.setState(true); + } else { + this._formatNumeratedHeadersButton.setState(false); + } + }, + + /** + * Get the config for the current editable + */ + getCurrentConfig:function () { + var config = this.getEditableConfig(Aloha.activeEditable.obj); + + // normalize config (set default values) + if (config.numeratedactive === true || config.numeratedactive === 'true' || config.numeratedactive === '1') { + config.numeratedactive = true; + } else { + config.numeratedactive = false; + } + + if (typeof config.headingselector !== 'string') { + config.headingselector = 'h1, h2, h3, h4, h5, h6'; + } + config.headingselector = $.trim(config.headingselector); + + if (config.trailingdot === true || config.trailingdot === 'true' || config.trailingdot === '1') { + config.trailingdot = true; + } else { + config.trailingdot = false; + } + + return config; + }, + + /** + * Check whether numerating shall be possible in the current editable + */ + isNumeratingOn:function () { + return this.getCurrentConfig().headingselector !== ''; + }, + + /** + * Check whether numbers shall currently be shown in the current + * editable. + */ + showNumbers:function () { + return ( + Aloha.activeEditable && + this.isNumeratingOn() && + (Aloha.activeEditable.obj.attr('aloha-numerated-headers') === 'true') + ); + }, + + /** + * Remove all annotations in the current editable. + */ + cleanNumerations:function () { + var that = this; + var active_editable_obj = this.getBaseElement(); + if (!active_editable_obj) { + return; + } + this._saveRemoveAnnotations($(active_editable_obj).find('span[role=annotation]')); + }, + + /** + * Savely removes a jQuery collection of annotations. + * @param annotationcollection the collection of annotations. + */ + _saveRemoveAnnotations:function (annotationcollection) { + var that = this; + var range = Aloha.Selection.getRangeObject(); + var rangemod = false; + annotationcollection.each(function () { + if (range.startContainer === this || $.inArray(this, $(range.startContainer).parents()) > -1) { + range.startContainer = that._prevNode(this); + range.startOffset = 0; + rangemod = true; + } + if (range.startContainer === this.parentNode && range.startOffset >= $(this).index() && range.startOffset > 0) { + range.startOffset--; + rangemod = true; + } + //Check if the selection ends inside the annotation + if (range.endContainer === this || $.inArray(this, $(range.endContainer).parents()) > -1) { + range.endContainer = that._prevNode(this); + range.endOffset = 0; + rangemod = true; + } + if (range.endContainer === this.parentNode && range.endOffset >= $(this).index() && range.endOffset > 0) { + range.endOffset--; + rangemod = true; + } + $(this).remove(); + }); + if (rangemod === true) { + range.update(); + range.select(); + } + }, + + /** + * Prepends the annotation to the given prependElement. + */ + _prependAnnotation:function (annotationcontent, prependElem) { + var range = Aloha.Selection.getRangeObject(); + var rangemod = false; + if (range.startContainer === prependElem) { + range.startOffset++; + rangemod = true; + } + if (range.endContainer === prependElem) { + range.endOffset++; + rangemod = true; + } + $(prependElem).prepend('' + + annotationcontent + ''); + if (rangemod === true) { + range.update(); + range.select(); + } + }, + + /** + * Navigates to the previous node. + */ + _prevNode:function (node) { + var prev = node.previousSibling; + if (!prev) { + return node.parentNode; + } + while (prev.lastChild) { + prev = prev.lastChild; + } + return prev; + }, + + + /** + * Removed and disables numeration for the current editable. + */ + removeNumerations:function () { + $(Aloha.activeEditable.obj).attr('aloha-numerated-headers', 'false'); + this.cleanNumerations(); + }, + + getBaseElement:function () { + if (typeof this.baseobjectSelector !== 'undefined') { + return ($(this.baseobjectSelector).length > 0) ? + $(this.baseobjectSelector) : null; + } + return Aloha.activeEditable ? Aloha.activeEditable.obj : null; + }, + + /* + * checks if the given Object contains a note Tag that looks like this: + * + * + * @param {HTMLElement} obj The DOM object to check. + */ + hasNote:function (obj) { + if (!obj || $(obj).length <= 0) { + return false; + } + return $(obj).find('span[role=annotation]').length > 0; + }, + + /* + * checks if the given Object has textual content. + * A possible "" tag will be ignored + * + * @param {HTMLElement} obj The DOM object to check + */ + hasContent:function (obj) { + if (!obj || 0 === $(obj).length) { + return false; + } + // we have to check the content of this object without the annotation span + var $objCleaned = $(obj).clone() + .find('span[role=annotation]') + .remove() + .end(); + // check for text, also in other possible sub tags + return $.trim($objCleaned.text()).length > 0; + }, + + createNumeratedHeaders:function () { + var active_editable_obj = this.getBaseElement(); + if (!active_editable_obj) { + return; + } + + var config = this.getCurrentConfig(); + var headingselector = config.headingselector; + var headers = active_editable_obj.find(headingselector); + + Aloha.activeEditable.obj.attr('aloha-numerated-headers', 'true'); + + if (typeof headers === 'undefined' || headers.length === 0) { + return; + } + + // base rank is the lowest rank of all selected headers + var base_rank = 7; + var that = this; + headers.each(function () { + if (that.hasContent(this)) { + var current_rank = parseInt(this.nodeName.substr(1), 10); + if (current_rank < base_rank) { + base_rank = current_rank; + } + } + }); + if (base_rank > 6) { + return; + } + var prev_rank = null, + current_annotation = [], + annotation_pos = 0, + i; + + // initialize the base annotations + for (i = 0; i < (6 - base_rank) + 1; i++) { + current_annotation[i] = 0; + } + + headers.each(function () { + // build and count annotation only if there is content in this header + if (that.hasContent(this)) { + + var current_rank = parseInt(this.nodeName.substr(1), 10); + if (prev_rank === null && current_rank !== base_rank) { + // when the first found header has a rank + // different from the base rank, we omit it + that._saveRemoveAnnotations($(this).find('span[role=annotation]')); + return; + } else if (prev_rank === null) { + // increment the main annotation + current_annotation[annotation_pos]++; + } else if (current_rank > prev_rank) { + // starts a sub title + current_annotation[++annotation_pos]++; + } else if (current_rank === prev_rank) { + // continues subtitles + current_annotation[annotation_pos]++; + } else if (current_rank < prev_rank) { + //goes back to a main title + var current_pos = current_rank - base_rank; + var j; + for (j = annotation_pos; j > (current_pos); j--) { + current_annotation[j] = 0; //reset current sub-annotation + } + annotation_pos = current_pos; + current_annotation[annotation_pos]++; + } + + prev_rank = current_rank; + + var annotation_result = '', i; + if (config.trailingdot === true) { + annotation_result = ''; + for (i = 0; i < current_annotation.length; i++) { + if (current_annotation[i] !== 0) { + annotation_result += (current_annotation[i] + '.'); + } + } + } else { + annotation_result = current_annotation[0]; + for (i = 1; i < current_annotation.length; i++) { + if (current_annotation[i] !== 0) { + annotation_result += ('.' + current_annotation[i]); + } + } + } + //We add a trailing non-breakable space to the annotation_result + //to separate the annotation from the heading's text. + annotation_result += ' '; + if (that.hasNote(this)) { + $(this).find('span[role=annotation]').html(annotation_result); + } else { + + that._prependAnnotation(annotation_result, this); + } + } else { + // no Content, so remove the Note, if there is one + if (that.hasNote(this)) { + that._saveRemoveAnnotations($(this).find('span[role=annotation]')); + } + } + }); + } + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ca/i18n.js new file mode 100644 index 000000000..36373f13c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ca/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Objectiu", + "headerids.button.reset":"Restableix", + "headerids.button.set":"Estableix" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/de/i18n.js new file mode 100644 index 000000000..5cb791ffb --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/de/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Ziel", + "headerids.button.reset":"Zurücksetzen", + "headerids.button.set":"Setzen" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/i18n.js new file mode 100644 index 000000000..094466ee9 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/i18n.js @@ -0,0 +1,14 @@ +define({ + "root":{ + "headerids.label.target":"Target", + "headerids.button.reset":"Reset", + "headerids.button.set":"Set" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/mk/i18n.js new file mode 100644 index 000000000..2bc6e0d7a --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/mk/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Мета", + "headerids.button.reset":"Ресетирај", + "headerids.button.set":"Постави" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/pt-br/i18n.js new file mode 100644 index 000000000..43d506f9a --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/pt-br/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Alvo", + "headerids.button.reset":"Resetar", + "headerids.button.set":"Colocar" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ru/i18n.js new file mode 100644 index 000000000..39c193d7b --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/ru/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Цель", + "headerids.button.reset":"Сбросить", + "headerids.button.set":"Установить" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/uk/i18n.js new file mode 100644 index 000000000..3511ac506 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/uk/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"Ціль", + "headerids.button.reset":"Скинути", + "headerids.button.set":"Встановити" +}); diff --git a/modules/core/aloha/static/plugins/extra/numerated-headers/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/zh-hans/i18n.js new file mode 100644 index 000000000..eddb64b07 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/numerated-headers/nls/zh-hans/i18n.js @@ -0,0 +1,5 @@ +define({ + "headerids.label.target":"目标", + "headerids.button.reset":"重置", + "headerids.button.set":"设置" +}); diff --git a/modules/core/aloha/static/plugins/extra/profiler/css/profiler.css b/modules/core/aloha/static/plugins/extra/profiler/css/profiler.css new file mode 100644 index 000000000..2f744b294 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/profiler/css/profiler.css @@ -0,0 +1,35 @@ +#aloha-devtool-profiler-container { + box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.2); + padding: 5px; + font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace; + font-size: 11px; + text-align: center; +} + +#aloha-devtool-profiler-input { + width: 90%; + padding: 4px; + backgroud: #fff; + border: 1px solid #aaa; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace; + font-size: 11px; + text-align: left; +} + +#aloha-devtool-profiler-console { + margin: 5px 0 0; + padding: 0; + line-height: 1em; + text-align: left; +} + +#aloha-devtool-profiler-console li { + margin: 0; + padding: 4px; + border-top: 1px solid #eee; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/profiler/lib/profiler-plugin.js b/modules/core/aloha/static/plugins/extra/profiler/lib/profiler-plugin.js new file mode 100644 index 000000000..278283aa5 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/profiler/lib/profiler-plugin.js @@ -0,0 +1,304 @@ +/* profiler-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/* Aloha Profiler + * -------------- + * Provides a useful interface to profile some of Aloha components and their + * methods. + * + * Potentially process intensive methods: + * Aloha.Profiler.profileAlohaComponent('Markup.preProcessKeyStrokes') + * Aloha.Profiler.profileAlohaComponent('Selection._updateSelection') + */ +window.define([ + 'aloha/core', + 'aloha/plugin', + 'aloha/editable', + // 'aloha/sidebar', + 'aloha/selection', + 'aloha/markup', + 'aloha/contenthandlermanager', + 'aloha/floatingmenu', + 'aloha/console', + 'css!profiler/css/profiler' +], function (Aloha, Plugin, /* Sidebar */ Editable, Selection, Markup, ContentHandlerManager, FloatingMenu, console) { + // 'caller', 'callee', and 'arguments' properties may not be accessed on + // strict mode functions or the arguments objects for calls to them + // 'use strict'; + + var jQuery = Aloha.jQuery, + profiledFunctions = [], + + // get the arguments string literal of this function, and split it into + // an array of names + argsStr = ( /function[^\(]*\(([^\)]+)/g ).exec(arguments.callee.toString()), + argNames = argsStr ? argsStr[1].replace(/^\s+|\s+$/g, '').split(/\,\s*/) : [], + args = Array.prototype.slice.call(arguments); + + /** + * @param {String} path dot seperated path to resolve inside a given object + * or browser window + * @param {?Object} object inwhich to resolve a path. If no object is + * passed, the browser window object will be used instead + * @return {?} Object + */ + function resolvePath(path, obj) { + if (typeof path !== 'string') { + return path; + } + + if (!obj || typeof obj !== 'object') { + obj = window; + } + + var parts = path.split('.'), + i = 0, + j = parts.length; + + for (; i < j; ++i) { + obj = obj[ parts[ i ] ]; + if (typeof obj === 'undefined') { + console.error( + 'Aloha.Profiler', + 'Property "' + parts[ i ] + '" does not exist' + + ( i ? ' in object ' + parts.slice(0, i).join('.') : '' ) + ); + + return null; + } + } + + return obj; + }; + + function parseObjectPath(path, obj) { + if (typeof path !== 'string') { + return null; + } + + var parts = path.split('.'), + pathToProp = parts.slice(0, Math.max(1, parts.length - 1)).join('.'), + prop; + + obj = resolvePath(pathToProp, obj); + + if (!obj) { + return null; + } + + if (parts.length > 1) { + var lastProp = parts[ parts.length - 1 ]; + if (typeof obj[ lastProp ] === 'undefined') { + console.error('Aloha.Profiler', + 'Property "' + lastProp + '" does not exist in object ' + + pathToProp); + } else { + prop = lastProp; + } + } + + return { + obj:obj[ prop ], + path:path, + parentObj:obj, + propName:prop + }; + }; + + var panel; + + function initSidebarPanel(sidebar) { + sidebar.addPanel({ + id:'aloha-devtool-profiler-panel', + title:'Aloha Profiler', + expanded:true, + activeOn:true, + content:'' + + '
      ' + + '' + + '
        ' + + '
        ', + onInit:function () { + this.content.find('input#aloha-devtool-profiler-input').keydown(function (event) { + // Handle ENTER + if (event.keyCode === 13) { + var input = jQuery(this); + var value = input.val(); + if (value) { + eval(value); + PanelConsole.log(value); + input.val(''); + } + } + }); + } + }); + sidebar.show().open(); + }; + + var PanelConsole = { + log:function () { + jQuery('#aloha-devtool-profiler-console') + .prepend('
      • ' + + Array.prototype.slice.call(arguments).join(' ') + + '
      • '); + } + } + + Aloha.Profiler = Plugin.create('profiler', { + + /** + * Explose all dependencies to allow easy access. eg: + * If the 5th dependency was Markup, then: + * Aloha.Profiler.profile(Aloha.Profiler.alohaObjects[4], 'preProcessKeyStrokes') + * would start profiling the Markup.preProcessKeyStrokes method. + */ + loadedDependencies:Array.prototype.slice.call(arguments), + + /** + * Provides a better interface to access various components of Aloha. + * eg: Aloha.Profiler.profile(Aloha.Profiler.alohaComponents[ 'Markup' ], 'preProcessKeyStrokes') + */ + alohaComponents:{}, + + panel:null, + + /** + * Initializes Profiler plugin by populating alohaComponents with all + * arguments of our define function, mapping name, to object + */ + init:function () { + var j = argNames.length; + while (--j >= 0) { + this.alohaComponents[ argNames[ j ] ] = args[ j ]; + } + + var that = this; + + Aloha.ready(function () { + if (Aloha.Sidebar && Aloha.Sidebar.right) { + that.panel = initSidebarPanel(Aloha.Sidebar.right); + } + }); + }, + + log:function () { + PanelConsole.log.apply(PanelConsole, arguments); + }, + + /** + * Shortcut to profile one of the Aloha components that was required by + * Aloha Profiler. + * + * @param {String} path + * @param {String} fnName + */ + profileAlohaComponent:function (path, fnName) { + var parts = parseObjectPath(path, this.alohaComponents); + return this.profile(parts.parentObj, fnName || parts.propName); + }, + + /** + * @param {(Object|String)} obj object or path to object that contains + * the function we want to profile. Or the path to the + * function itself + * @param {String} fnName name of function inside obj, which we want to + * profile + * @param {?Function(Function, Array):Boolean} intercept functiont to + * call each time this method is invoked + */ + profile:function (obj, fnName, intercept) { + var path, + parts, + objIndex = -1, + i; + + if (typeof obj === 'string') { + parts = parseObjectPath(obj); + obj = parts.parentObj; + path = parts.path + ( fnName ? '.' + fnName : '' ); + if (parts.propName) { + if (typeof parts.obj === 'function') { + fnName = parts.propName; + } else if (parts.obj === 'object') { + obj = parts.obj; + } + } + } + + if (!obj || !fnName || typeof obj[ fnName ] !== 'function') { + return; + } + + for (i = 0; i < profiledFunctions.length; ++i) { + if (profiledFunctions[ i ] === obj) { + objIndex = i; + if (profiledFunctions[ i ][ fnName ]) { + return; + } + } + } + + var fn = obj[ fnName ]; + var that = this; + + // In IE typeof window.console.log returns "object!!!" + if (window.console && window.console.log) { + if (objIndex === -1) { + objIndex = profiledFunctions.push(obj) - 1; + } + + profiledFunctions[ objIndex ][ fnName ] = fn; + + obj[ fnName ] = function () { + if (typeof intercept === 'function') { + intercept(fn, arguments); + } + + // window.console.time( fnName ); + var start = +( new Date() ); + var returnValue = fn.apply(obj, arguments); + + // window.console.timeEnd( fnName ); + that.log(( path || fnName ) + ': ' + + ( ( new Date() ) - start ) + 'ms'); + + return returnValue; + }; + } + }, + + /** + * @return {String} "Aloha.Profiler" + */ + toString:function () { + return 'Aloha.Profiler'; + } + }); + + return Aloha.Profiler; +}); diff --git a/modules/core/aloha/static/plugins/extra/proxy/adapter/proxy.php b/modules/core/aloha/static/plugins/extra/proxy/adapter/proxy.php new file mode 100644 index 000000000..d16922194 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/proxy/adapter/proxy.php @@ -0,0 +1,248 @@ + 'X');}; + * https url example: https://google.com/adsense + * + */ + +// for debugging +//$_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.0'; +//$_SERVER['REQUEST_METHOD'] = 'HEAD'; +//error_reporting(E_ALL); + +$request = array( + 'method' => $_SERVER['REQUEST_METHOD'], + 'protocol' => $_SERVER['SERVER_PROTOCOL'], + 'headers' => getallheaders(), + //TODO: multipart/form-data is not handled by php://input. there + //doesn't seem to be a generic way to get at the raw post data for + //that content-type. + 'payload' => file_get_contents('php://input'), +); + +// read url parameter +if (array_key_exists('url', $_GET)) { + $request['url'] = urldecode($_GET['url']); +} else { + header("HTTP/1.0 400 Bad Request"); + echo "Aloha Editor AJAX Gateway failed because parameter url is missing."; + exit(); +} + +// check if link exists +$response = http_request($request); + +// Note HEAD does not always work even if specified... +// We use HEAD for Linkchecking so we do a 2nd request. +if (!array_key_exists('method', $response)) { + $response['method'] = false; +} + +if (strtoupper($response['method']) == 'HEAD' && (int) $response['status'] >= 400 ) { + + $request['method'] = 'GET'; + $response = http_request($request); + + //since we handle a HEAD, we don't need to proxy any contents + fclose($response['socket']); + $response['socket'] = null; +} + +// forward each returned header... +foreach ($response['headers'] as $key => $value) { + if (strtolower($key) == 'content-length') { + //there is no need to specify a content length since we don't do keep + //alive, and this can cause problems for integration (e.g. gzip output, + //which would change the content length) + //Note: overriding with header('Content-length:') will set + //the content-length to zero for some reason + continue; + } + header("$key: $value"); +} + +header('Connection: close'); + +// output the contents if any +if (null !== $response['socket']) { + fpassthru($response['socket']); + fclose($response['socket']); +} + +exit; + +/** + * Query an HTTP(S) URL with the given request parameters and return the + * response headers and status code. The socket is returned as well and + * will point to the begining of the response payload (after all headers + * have been read), and must be closed with fclose(). + * @param $url the request URL + * @param $request the request method may optionally be overridden. + * @param $timeout connection and read timeout in seconds + */ +function http_request($request, $timeout = 5) { + + $url = $request['url']; + // Extract the hostname from url + $parts = parse_url($url); + if (array_key_exists('host', $parts)) { + $remote = $parts['host']; + } else { + return myErrorHandler("url ($url) has no host. Is it relative?"); + } + if (array_key_exists('port', $parts)) { + $port = $parts['port']; + } else { + $port = 0; + } + + // Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities. + $request_headers = ""; + foreach ($request['headers'] as $name => $value) { + switch (strtolower($name)) { + //omit some headers + case "keep-alive": + case "connection": + case "cookie": + //TODO: we don't handle any compression encodings. compression + //can cause a problem if client communication is already being + //compressed by the server/app that integrates this script + //(which would double compress the content, once from the remote + //server to us, and once from us to the client, but the client + //would de-compress only once). + case "accept-encoding": + break; + // correct the host parameter + case "host": + $host_info = $remote; + if ($port) { + $host_info .= ':' . $port; + } + $request_headers .= "$name: $host_info\r\n"; + break; + // forward all other headers + default: + $request_headers .= "$name: $value\r\n"; + break; + } + } + + //set fsockopen transport scheme, and the default port + switch (strtolower($parts['scheme'])) { + case 'https': + $scheme = 'ssl://'; + if ( ! $port ) $port = 443; + break; + case 'http': + $scheme = ''; + if ( ! $port ) $port = 80; + break; + default: + //some other transports are available but not really supported + //by this script: http://php.net/manual/en/transports.inet.php + $scheme = $parts['scheme'] . '://'; + if ( ! $port ) { + return myErrorHandler("Unknown scheme ($scheme) and no port."); + } + break; + } + + //we make the request with socket operations since we don't want to + //depend on the curl extension, and the higher level wrappers don't + //give us usable error information. + $sock = @fsockopen("$scheme$remote", $port, $errno, $errstr, $timeout); + if ( ! $sock ) { + return myErrorHandler("Unable to open URL ($url): $errstr"); + } + + //the timeout in fsockopen is only for the connection, the following + //is for reading the content + stream_set_timeout($sock, $timeout); + + //an absolute url should only be specified for proxy requests + if (array_key_exists('path', $parts)) { + $path_info = $parts['path']; + } else { + $path_info = '/'; + } + + if (array_key_exists('query', $parts)) $path_info .= '?' . $parts['query']; + if (array_key_exists('fragment', $parts)) $path_info .= '#' . $parts['fragment']; + + $out = $request["method"]." ".$path_info." ".$request["protocol"]."\r\n" + . $request_headers + . "Connection: close\r\n\r\n"; + fwrite($sock, $out); + fwrite($sock, $request['payload']); + + $header_str = stream_get_line($sock, 1024*16, "\r\n\r\n"); + $headers = http_parse_headers($header_str); + $status_line = array_shift($headers); + + // get http status + preg_match('|HTTP/\d+\.\d+\s+(\d+)\s+.*|i',$status_line,$match); + $status = $match[1]; + + return array('headers' => $headers, 'socket' => $sock, 'status' => $status); +} + +/** + * Parses a string containing multiple HTTP header lines into an array + * of key => values. + * Inspired by HTTP::Daemon (CPAN). + */ +function http_parse_headers($header_str) { + $headers = array(); + + //ignore leading blank lines + $header_str = preg_replace("/^(?:\x0D?\x0A)+/", '', $header_str); + + while (preg_match("/^([^\x0A]*?)\x0D?(?:\x0A|\$)/", $header_str, $matches)) { + $header_str = substr($header_str, strlen($matches[0])); + $status_line = $matches[1]; + + if (empty($headers)) { + // the status line + $headers[] = $status_line; + } + elseif (preg_match('/^([^:\s]+)\s*:\s*(.*)/', $status_line, $matches)) { + if (isset($key)) { + //previous header is finished (was potentially multi-line) + $headers[$key] = $val; + } + list(,$key,$val) = $matches; + } + elseif (preg_match('/^\s+(.*)/', $status_line, $matches)) { + //continue a multi-line header + $val .= " ".$matches[1]; + } + else { + //empty (possibly malformed) header signals the end of all headers + break; + } + } + if (isset($key)) { + $headers[$key] = $val; + } + return $headers; +} + +function myErrorHandler($msg) +{ + // 500 could be misleading... + // Should we return a special Error when a proxy error occurs? + header("HTTP/1.0 500 Internal Error"); + echo "Gentics Aloha Editor AJAX Gateway Error: $msg"; + exit(); +} + +//EOF diff --git a/modules/core/aloha/static/plugins/extra/proxy/lib/proxy-plugin.js b/modules/core/aloha/static/plugins/extra/proxy/lib/proxy-plugin.js new file mode 100644 index 000000000..b8b37c192 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/proxy/lib/proxy-plugin.js @@ -0,0 +1,38 @@ +/** + * Aloha Editor Proxy Scripts Plugin + * + * This Plugin provides a proxy to request crossdomain resources. + * Currently there's an implementain in PHP available -- other adapter may follow (ASP, Java, Ruby, Python ...) + */ + +/*! + * Aloha Editor + * Author & Copyright (c) 2012 Gentics Software GmbH + * aloha-sales@gentics.com + * Licensed unter the terms of http://www.aloha-editor.com/license.html + */ +/** + * This Plugin provides a proxy to request crossdomain resources. + * Currently there's an implementation in PHP available -- other adapter + * maybe follow (ASP, Java, Ruby, Python ...). + */ +define( + ['aloha', + 'jquery', + 'aloha/plugin'], + function (Aloha, $, Plugin) { + "use strict"; + + return Plugin.create('proxy', { + adapter:'php', // currently only php is available + + /** + * Called by the plugin-manager on intialization. + * + * @Override + */ + init:function () { + Aloha.settings.proxy = Aloha.getPluginUrl('proxy') + '/adapter/proxy.' + this.adapter + '?url='; + } + }); + }); diff --git a/modules/core/aloha/static/plugins/extra/ribbon/README.md b/modules/core/aloha/static/plugins/extra/ribbon/README.md new file mode 100644 index 000000000..138bccb08 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/ribbon/README.md @@ -0,0 +1,8 @@ +Aloha Ribbon Plugin +=================== + +This plugin is intended to provide a Ribbon for Aloha Editor. +The ribbon is displayed on top of the page and some controls can be added to it dynamically. + +How-to and more informations in Aloha's Wiki : +http://aloha-editor.com/wiki/index.php/Plugins/Ribbon diff --git a/modules/core/aloha/static/plugins/extra/ribbon/css/ribbon.css b/modules/core/aloha/static/plugins/extra/ribbon/css/ribbon.css new file mode 100644 index 000000000..9bc5a7cdf --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/ribbon/css/ribbon.css @@ -0,0 +1,61 @@ +.aloha.aloha-ribbon { + position: fixed; + top: 0; + left: 0; + right: 0; +} + +.aloha .aloha-ribbon-toolbar { + position: relative; + z-index: 90000; + display: none; + padding: 0.2em 0.4em; + border-top: 1px solid #f0f0f0; + background: #f0f0f0; + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); + -moz-border-radius: 0px; + -khtml-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.1) 90%); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.1) 90%); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.1) 90%); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.1) 90%); + background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0.05) 50%, rgba(0, 0, 0, 0.1) 90%); +} + +.aloha .aloha-ribbon-toolbar .aloha-ui-menubutton-container { + margin-left: 4px; +} + +.aloha .aloha-ribbon-toolbar .aloha-ribbon-in, +.aloha .aloha-ribbon-toolbar .aloha-ribbon-out { + height: 24px; + width: 24px; + background-color: transparent; + background-repeat: no-repeat; + background-position: center center; + border-color: transparent; + border-width: 1px !important; +} + +.aloha .aloha-ribbon-toolbar .aloha-ribbon-in:hover, +.aloha .aloha-ribbon-toolbar .aloha-ribbon-out:hover { + background-color: #f0f0f0; + border-color: #bbb; +} + +.aloha .aloha-ribbon-toolbar .aloha-ribbon-in { + /* Override jquery-ui float:left for menubar buttons */ + float: right !important; + background-image: url('../img/fade-in.png') !important; +} + +.aloha .aloha-ribbon-toolbar .aloha-ribbon-out { + float: left; + background-image: url('../img/fade-out.png') !important; +} + +.aloha .aloha-ribbon-icon { + float: left; +} diff --git a/modules/core/aloha/static/plugins/extra/ribbon/img/fade-in.png b/modules/core/aloha/static/plugins/extra/ribbon/img/fade-in.png new file mode 100644 index 0000000000000000000000000000000000000000..e20c212f2d0708cd680587c05539df88a4d4ba75 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W~!3-oXyUC{msk8u}5LY1m|NsBO!orS@j&FfuW9b8!t04hAZytgLKrZwCshsi^_QjZMugP0ih1-5|0+ zskw9KE?v5G*|KFoa}FLnc({S8c<|uWt5;_OZXN^LBv=yU7tFxG2m(w@fB!+i zY1{p0fs%fnE{-7*my;8YFiEUX);P)Tl+pCYiK)wJPDaxjqeGvJVqT;bb$r~=@o@pC zQO5_Pu8zfAM&2D-ABv3^av5=)I>mWv(M(OEKDxeflnX0O)p|Odjsd;d4@Z7m`)zs9COiYbU z&D>mEfg%M31%-u$Ky!dnOP4NPwrm;DkOKz}T)%$({{8!}UcIV}>FEX9CsGpR7Yw8s zL4b*giJAHD-+v%*M4EjiP(0Yv#W6(Ua&p2UCW#d)CvWumUAVWcI zy@uNPE-ej}BZ`Vg4t8j1sGd;K?8p<`Zn1ung+BKxh22dZimdKI;Vst0BoLg-~a#s literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/ribbon/lib/ribbon-plugin.js b/modules/core/aloha/static/plugins/extra/ribbon/lib/ribbon-plugin.js new file mode 100644 index 000000000..8da64b1ad --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/ribbon/lib/ribbon-plugin.js @@ -0,0 +1,138 @@ +/* ribbon-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'jquery', + 'aloha/plugin', + 'ui/menuButton', + 'ui/utils', + 'jqueryui' +], function ($, Plugin, MenuButton, Utils) { + 'use strict'; + + var ribbon = Plugin.create('ribbon', { + + init:function () { + if (!this.settings.enable && + typeof this.settings.enable !== 'undefined') { + return; + } + + var that = this; + this._visible = false; + this._toolbar = $('
        ', {'class':'aloha-ribbon-toolbar ui-menubar ui-widget-header ui-helper-clearfix'}); + + var fadeIn = Utils.makeButtonElement({'class':'aloha-ribbon-in'}) + .button() + .hide() + .click(function () { + that._toolbar.animate({ + 'left':0 + }); + $('body').animate({paddingTop:30}); + fadeIn.hide(); + }) + .appendTo(this._toolbar); + + var fadeOut = Utils.makeButtonElement({'class':'aloha-ribbon-out'}) + .button() + .click(function () { + that._toolbar.animate({ + 'left':-that._toolbar.outerWidth() + + fadeIn.outerWidth() + + 10 + }); + $('body').animate({paddingTop:0}); + fadeIn.show(); + }) + .appendTo(this._toolbar); + + var wrapper = $('
        ', {'class':'aloha aloha-ribbon'}) + .appendTo('body'); + + this._icon = $('
        ').prependTo(this._toolbar); + this.setIcon(''); + + this._toolbar.appendTo(wrapper); + + $('body').css({ + position:'relative', + paddingTop:30 + }); + }, + + /** + * Sets the icon class for the ribbon icon + * @param {String} iconClass CSS class for the icon + */ + setIcon:function (iconClass) { + if (!this._icon) { + return; + } + this._icon.attr('class', 'aloha-ribbon-icon ' + iconClass); + }, + + addButton:function (props) { + if (!this._toolbar) { + return; + } + props = $.extend({}, props, {'siblingContainer':this._toolbar}); + this._toolbar.append(MenuButton.makeMenuButton(props)); + }, + + /** + * Shows the Ribbon + */ + hide:function () { + if (!this._toolbar) { + return; + } + this._toolbar.hide(); + this._visible = false; + }, + + /** + * Hides the Ribbon + */ + show:function () { + if (!this._toolbar) { + return; + } + this._toolbar.show(); + this._visible = true; + }, + + /** + * Check whether the ribbon is visible right now + * @return true when the ribbon is visible, false when not + */ + isVisible:function () { + return this._visible; + } + }); + + return ribbon; +}); diff --git a/modules/core/aloha/static/plugins/extra/ribbon/package.json b/modules/core/aloha/static/plugins/extra/ribbon/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/ribbon/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/sourceview/css/sourceview.css b/modules/core/aloha/static/plugins/extra/sourceview/css/sourceview.css new file mode 100644 index 000000000..524da499c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/sourceview/css/sourceview.css @@ -0,0 +1,18 @@ +#aloha-devtool-source-viewer-panel .aloha-sidebar-panel-content-inner-text { + background: #fff; + box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.5); + -moz-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.5); +} + +#aloha-devtool-source-viewer-content { + min-height: 400px; + margin: 0; + padding: 10px; + border: 0; + color: #888; + line-height: 1.2em; + font-size: 12px; + font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace; + overflow: scroll; +} \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/sourceview/lib/sourceview-plugin.js b/modules/core/aloha/static/plugins/extra/sourceview/lib/sourceview-plugin.js new file mode 100644 index 000000000..fb45abc7c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/sourceview/lib/sourceview-plugin.js @@ -0,0 +1,251 @@ +/*! + * Aloha Editor + * Author & Copyright (c) 2012 Gentics Software GmbH + * aloha-sales@gentics.com + * Licensed under the terms of http://www.aloha-editor.com/license.html + * + * @overfiew: Provides a development tool for Aloha Editor that shows the + * source around the selection inside an editable. + */ +define([ + 'aloha', + 'jquery', + '../../../../test/unit/testutils', + '../../../../test/unit/htmlbeautifier', + 'css!sourceview/css/sourceview' +], function (Aloha, jQuery, TestUtils) { + 'use strict'; + + var viewArea; + + /** + * Given a DOM node, gets that node's index position withing its immediate + * parent node. + * + * @param {DOMObject} node + * @return {number} An integer, index of node. + */ + function getNodeIndex(node) { + if (!node) { + return -1; + } + + var kids = node.parentNode.childNodes; + var l = kids.length; + var i; + + for (i = 0; i < l; ++i) { + if (kids[i] === node) { + return i; + } + } + + return -1; + } + + /** + * Given a node, and a container node, ensures that node is a child node of + * that container, or at least the closest node to its original index. + * + * @param {HTMLElement} container The container node inwhich to determine + * the correct child node. + * @param {HTMLElement} node A child node of container. + * @return {HTMLElement} A node element that is guarenteed to be a child + * node of the given container node. + */ + function getCorrectCloneNode(container, node) { + var correctNode; + + if (node.nodeType === 3 && container.childNodes.length) { + var index = getNodeIndex(node); + + if (index >= container.childNodes.length) { + correctNode = container.lastChild; + } else { + correctNode = container.childNodes[index]; + } + } else { + correctNode = container; + } + + return correctNode; + } + + /** + * Renders the source of the given container element, along with its + * selection markers as text. + * + * @param {DOMElement} container + */ + function showSource(container) { + var source = window.style_html(container.html()); + source = Aloha.jQuery('
        ').text(source).html(); + source = source.replace(/ /g, ' ') + .replace(/[\r\n]/g, '
        ') + .replace(/\t/g, '  ') + .replace(/([\[\{])/, + '$1') + .replace(/([\]\}])/, '$1') + .replace(/([\[\]\{\}])/g, + '$1'); + viewArea.html(source); + var marker = viewArea.find('.aloha-devtool-source-viewer-marker'); + + if (marker.length) { + // Add rounding at the tip of the selection. + var radius = 3; + marker.css('border-radius', radius); + marker.find('>b').first().css({ + 'border-top-left-radius':radius, + 'border-bottom-left-radius':radius + }); + marker.find('>b').last().css({ + 'border-top-right-radius':radius, + 'border-bottom-right-radius':radius + }); + + // Scroll the view to the start of the selection. + viewArea.scrollTop(0) + .scrollTop(Math.max(0, (marker.offset().top - + viewArea.offset().top) - 30)); + } + } + + Aloha.Sidebar.right.addPanel({ + id:'aloha-devtool-source-viewer-panel', + title:'Source Viewer\ + \ + \ + \ + \ + \ + \ + ', + expanded:true, + activeOn:true, + content:'
        ', + onInit:function () { + var that = this; + var showEntireEditableSource = true; + var sidebar = this.sidebar; + var originalWidth = sidebar.width; + viewArea = this.content.find('#aloha-devtool-source-viewer-content'); + this.title.find('.aloha-devtool-source-viewer-ckbx') + .click(function (ev) { + ev.stopPropagation(); + }); + this.title.find('#aloha-devtool-source-viewer-widen-ckbx') + .change(function () { + sidebar.width = jQuery(this).attr('checked') + ? 600 + : originalWidth; + sidebar.container.width(sidebar.width) + .find('.aloha-sidebar-panels').width(sidebar.width); + sidebar.open(0); + }); + this.title.find('#aloha-devtool-source-viewer-entire-ckbx') + .change(function () { + showEntireEditableSource = !!jQuery(this).attr('checked'); + }); + + Aloha.bind('aloha-selection-changed', function (event, range) { + if (!Aloha.Sidebar.right.isOpen) { + return; + } + + var sNode = range.startContainer; + var eNode = range.endContainer; + + if (!sNode || !eNode) { + return; + } + + var id = +(new Date()); + var sClass = 'aloha-selection-start-' + id; + var eClass = 'aloha-selection-end-' + id; + + // Add marker classes onto the container nodes, or their + // parentNodes if the containers are textNodes. + jQuery(sNode.nodeType === 3 ? sNode.parentNode : sNode) + .addClass(sClass); + jQuery(eNode.nodeType === 3 ? eNode.parentNode : eNode) + .addClass(eClass); + + // We determine which element's source to show. If either the + // startContainer or the endContainer is a text node, we will + // want to show more of the source around our selection so we + // will use the parent node of the commonAncestorContainer. + var common; + + if (showEntireEditableSource && Aloha.activeEditable && + Aloha.activeEditable.obj) { + common = Aloha.activeEditable.obj[0]; + } else { + if ((sNode.nodeType === 3 || eNode.nodeType === 3) && !jQuery(range.commonAncestorContainer) + .is('.aloha-editable')) { + common = range.commonAncestorContainer.parentNode; + } else { + common = range.commonAncestorContainer; + } + } + + if (!common) { + return; + } + + var clonedContainer = jQuery(common.outerHTML); + var clonedStartContainer = clonedContainer.is('.' + sClass) + ? clonedContainer + : clonedContainer.find('.' + sClass); + var clonedEndContainer = clonedContainer.is('.' + eClass) + ? clonedContainer + : clonedContainer.find('.' + eClass); + + // We may not find clonedStart- and clonedEnd- Containers if + // the selection range is outside of of the active editable + // (something that can happen when doing CTRL+A). + if (clonedStartContainer.length === 0 && + clonedEndContainer.length === 0) { + return; + } + + // Now that we have identified all our containers, we can + // remove markers anywhere we have placed them. + jQuery('.' + sClass).removeClass(sClass); + jQuery('.' + eClass).removeClass(eClass); + clonedStartContainer.removeClass(sClass); + clonedEndContainer.removeClass(eClass); + var startNode = getCorrectCloneNode(clonedStartContainer[0], sNode); + var endNode = getCorrectCloneNode(clonedEndContainer[0], eNode); + var fakeRange = { + startContainer:startNode, + endContainer:endNode, + startOffset:range.startOffset, + endOffset:range.endOffset + }; + + try { + TestUtils.addBrackets(fakeRange); + } catch (ex) { + viewArea.html('[' + ex + ']'); + return; + } + + showSource(clonedContainer); + }); + } + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/sourceview/vendor/htmlbeautifier.js b/modules/core/aloha/static/plugins/extra/sourceview/vendor/htmlbeautifier.js new file mode 100644 index 000000000..1a542f304 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/sourceview/vendor/htmlbeautifier.js @@ -0,0 +1,468 @@ +/* + + Style HTML + --------------- + + Written by Nochum Sossonko, (nsossonko@hotmail.com) + + Based on code initially developed by: Einar Lielmanis, + http://jsbeautifier.org/ + + + You are free to use this in any way you want, in case you find this useful or working for you. + + Usage: + style_html(html_source); + + style_html(html_source, options); + + The options are: + indent_size (default 4) — indentation size, + indent_char (default space) — character to indent with, + max_char (default 70) - maximum amount of characters per line, + brace_style (default "collapse") - "collapse" | "expand" | "end-expand" + put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line. + unformatted (default ['a']) - list of tags, that shouldn't be reformatted + + e.g. + + style_html(html_source, { + 'indent_size': 2, + 'indent_char': ' ', + 'max_char': 78, + 'brace_style': 'expand', + 'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u'] + }); + */ + +function style_html(html_source, options) { +//Wrapper function to invoke all the necessary constructors and deal with the output. + + var multi_parser, + indent_size, + indent_character, + max_char, + brace_style; + + options = options || {}; + indent_size = options.indent_size || 4; + indent_character = options.indent_char || ' '; + brace_style = options.brace_style || 'collapse'; + max_char = options.max_char || '70'; + unformatted = options.unformatted || ['a']; + + function Parser() { + + this.pos = 0; //Parser position + this.token = ''; + this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT + this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values + parent:'parent1', + parentcount:1, + parent1:'' + }; + this.tag_type = ''; + this.token_text = this.last_token = this.last_text = this.token_type = ''; + + this.Utils = { //Uilities made available to the various functions + whitespace:"\n\r\t ".split(''), + single_token:'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed'.split(','), //all the single tags for HTML + extra_liners:'head,body,/html'.split(','), //for tags that need a line of whitespace before them + in_array:function (what, arr) { + for (var i = 0; i < arr.length; i++) { + if (what === arr[i]) { + return true; + } + } + return false; + } + } + + this.get_content = function () { //function to capture regular content between tags + + var input_char = ''; + var content = []; + var space = false; //if a space is needed + while (this.input.charAt(this.pos) !== '<') { + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + this.line_char_count++; + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { + if (content.length) { + space = true; + } + this.line_char_count--; + continue; //don't want to insert unnecessary space + } + else if (space) { + if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached + content.push('\n'); + for (var i = 0; i < this.indent_level; i++) { + content.push(this.indent_string); + } + this.line_char_count = 0; + } + else { + content.push(' '); + this.line_char_count++; + } + space = false; + } + content.push(input_char); //letter at-a-time (or string) inserted to an array + } + return content.length ? content.join('') : ''; + } + + this.get_script = function () { //get the full content of a script to pass to js_beautify + + var input_char = ''; + var content = []; + var reg_match = new RegExp('\<\/script' + '\>', 'igm'); + reg_match.lastIndex = this.pos; + var reg_array = reg_match.exec(this.input); + var end_script = reg_array ? reg_array.index : this.input.length; //absolute end of script + while (this.pos < end_script) { //get everything in between the script tags + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + + content.push(input_char); + } + return content.length ? content.join('') : ''; //we might not have any content at all + } + + this.record_tag = function (tag) { //function to record a tag and its parent in this.tags Object + if (this.tags[tag + 'count']) { //check for the existence of this tag type + this.tags[tag + 'count']++; + this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level + } + else { //otherwise initialize this tag type + this.tags[tag + 'count'] = 1; + this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level + } + this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent) + this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1') + } + + this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer + if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it + var temp_parent = this.tags.parent; //check to see if it's a closable tag. + while (temp_parent) { //till we reach '' (the initial value); + if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it + break; + } + temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree + } + if (temp_parent) { //if we caught something + this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly + this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent + } + delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference... + delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself + if (this.tags[tag + 'count'] == 1) { + delete this.tags[tag + 'count']; + } + else { + this.tags[tag + 'count']--; + } + } + } + + this.get_tag = function () { //function to get a full tag and parse its type + var input_char = ''; + var content = []; + var space = false; + + do { + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + this.line_char_count++; + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space + space = true; + this.line_char_count--; + continue; + } + + if (input_char === "'" || input_char === '"') { + if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially + input_char += this.get_unformatted(input_char); + space = true; + } + } + + if (input_char === '=') { //no space before = + space = false; + } + + if (content.length && content[content.length - 1] !== '=' && input_char !== '>' + && space) { //no space after = or before > + if (this.line_char_count >= this.max_char) { + this.print_newline(false, content); + this.line_char_count = 0; + } + else { + content.push(' '); + this.line_char_count++; + } + space = false; + } + content.push(input_char); //inserts character at-a-time (or string) + } while (input_char !== '>'); + + var tag_complete = content.join(''); + var tag_index; + if (tag_complete.indexOf(' ') != -1) { //if there's whitespace, thats where the tag name ends + tag_index = tag_complete.indexOf(' '); + } + else { //otherwise go with the tag ending + tag_index = tag_complete.indexOf('>'); + } + var tag_check = tag_complete.substring(1, tag_index).toLowerCase(); + if (tag_complete.charAt(tag_complete.length - 2) === '/' || + this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /) + this.tag_type = 'SINGLE'; + } + else if (tag_check === 'script') { //for later script handling + this.record_tag(tag_check); + this.tag_type = 'SCRIPT'; + } + else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content) + this.record_tag(tag_check); + this.tag_type = 'STYLE'; + } + else if (this.Utils.in_array(tag_check, unformatted)) { // do not reformat the "unformatted" tags + var comment = this.get_unformatted('', tag_complete); //...delegate to get_unformatted function + content.push(comment); + this.tag_type = 'SINGLE'; + } + else if (tag_check.charAt(0) === '!') { //peek for so... + var comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted + content.push(comment); + } + this.tag_type = 'START'; + } + else if (tag_check.indexOf('[endif') != -1) {//peek for ', tag_complete); + content.push(comment); + this.tag_type = 'SINGLE'; + } + } + else { + if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending + this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors + this.tag_type = 'END'; + } + else { //otherwise it's a start-tag + this.record_tag(tag_check); //push it on the tag stack + this.tag_type = 'START'; + } + if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line + this.print_newline(true, this.output); + } + } + return content.join(''); //returns fully formatted tag + } + + this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety + + if (orig_tag && orig_tag.indexOf(delimiter) != -1) { + return ''; + } + var input_char = ''; + var content = ''; + var space = true; + do { + + if (this.pos >= this.input.length) { + return content; + } + + input_char = this.input.charAt(this.pos); + this.pos++ + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { + if (!space) { + this.line_char_count--; + continue; + } + if (input_char === '\n' || input_char === '\r') { + content += '\n'; + /* Don't change tab indention for unformatted blocks. If using code for html editing, this will greatly affect
         tags if they are specified in the 'unformatted array'
        +             for (var i=0; i 0) {
        +          this.indent_level--;
        +        }
        +      }
        +    }
        +    return this;
        +  }
        +
        +  /*_____________________--------------------_____________________*/
        +
        +  multi_parser = new Parser(); //wrapping functions Parser
        +  multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values
        +
        +  while (true) {
        +    var t = multi_parser.get_token();
        +    multi_parser.token_text = t[0];
        +    multi_parser.token_type = t[1];
        +
        +    if (multi_parser.token_type === 'TK_EOF') {
        +      break;
        +    }
        +
        +    switch (multi_parser.token_type) {
        +      case 'TK_TAG_START':
        +      case 'TK_TAG_STYLE':
        +        multi_parser.print_newline(false, multi_parser.output);
        +        multi_parser.print_token(multi_parser.token_text);
        +        multi_parser.indent();
        +        multi_parser.current_mode = 'CONTENT';
        +        break;
        +      case 'TK_TAG_SCRIPT':
        +        multi_parser.print_newline(false, multi_parser.output);
        +        multi_parser.print_token(multi_parser.token_text);
        +        multi_parser.current_mode = 'CONTENT';
        +        break;
        +      case 'TK_TAG_END':
        +        multi_parser.print_newline(true, multi_parser.output);
        +        multi_parser.print_token(multi_parser.token_text);
        +        multi_parser.current_mode = 'CONTENT';
        +        break;
        +      case 'TK_TAG_SINGLE':
        +        multi_parser.print_newline(false, multi_parser.output);
        +        multi_parser.print_token(multi_parser.token_text);
        +        multi_parser.current_mode = 'CONTENT';
        +        break;
        +      case 'TK_CONTENT':
        +        if (multi_parser.token_text !== '') {
        +          multi_parser.print_newline(false, multi_parser.output);
        +          multi_parser.print_token(multi_parser.token_text);
        +        }
        +        multi_parser.current_mode = 'TAG';
        +        break;
        +    }
        +    multi_parser.last_token = multi_parser.token_type;
        +    multi_parser.last_text = multi_parser.token_text;
        +  }
        +  return multi_parser.output.join('');
        +}
        \ No newline at end of file
        diff --git a/modules/core/aloha/static/plugins/extra/speak/README b/modules/core/aloha/static/plugins/extra/speak/README
        new file mode 100644
        index 000000000..e69de29bb
        diff --git a/modules/core/aloha/static/plugins/extra/speak/css/speak.css b/modules/core/aloha/static/plugins/extra/speak/css/speak.css
        new file mode 100644
        index 000000000..2f401b0ef
        --- /dev/null
        +++ b/modules/core/aloha/static/plugins/extra/speak/css/speak.css
        @@ -0,0 +1,3 @@
        +.GENTICS_button_speak {
        +    background-image: url(../img/speaker.png) !important;
        +}
        \ No newline at end of file
        diff --git a/modules/core/aloha/static/plugins/extra/speak/img/speaker.png b/modules/core/aloha/static/plugins/extra/speak/img/speaker.png
        new file mode 100644
        index 0000000000000000000000000000000000000000..90fab0c740b72c9a53c4f4962b8dc68100a6c11c
        GIT binary patch
        literal 760
        zcmVgVfZ5z6jBB8PpK6PBZ#gnuVi+
        zsDrT%5zFOh1$o#yloZpk!&odbH=ez(V8o~uvz@L+`ge}v=9xsHP)KAlnPy8%OVQHO@~geQ{pGRzjoR8;U2}8uYc6mq(dz1|
        zsHv&x)4;$0hKGl7cz6i9__MLG@iFIBD%G2zp`rQQ+}s~qTU&QeB-+{8d1NpcJ_iB;
        zjE|2a7z~0jH8q90y1G{r6BBmIe;*kcK}}5!hwL~}3LQxEcsx(2>W8JJB`~_Wx)6;<
        z!Pws3hEAso7>&k{ZnqmG8=akcCUSCe5|yZZPa$v{);c;mimIwACgN|q
        zNutZNCyw;=bcn@b6crVrt*wpyKvq^3dV71Zx3`CQJPx&5JzrQ@=$f9MPITSh-w&x&
        zdgKv@fEMmKky!Hc^J657TLxW165((dH1>BrJw3~PeSP~@tCekFiKdhGD21x2sFN7W
        zBsH^G>hnL$}unHj+Sf`Wn|8NMNt$@YCdpXk)hCOPHB#lD`T3sT+dtnLNhr_A$cPak{C+<#;9CIKlKHW*v3vBCgy(wwG_7(nJxr5Y
        qURharaFO2#M=HgwbN-Jm9)AE?ZfHl5jet}D0000
        ') + + var button = new Aloha.ui.Button({ + name:'speak', + text:'Speak', // that.i18n('button.' + button + '.text'), + iconClass:'GENTICS_button_speak', + size:'small', + onclick:function () { + var range = Aloha.getSelection().getRangeAt(0); + speak(Aloha.jQuery(range.startContainer.parentNode).text()); + } + }); + FloatingMenu.addButton( + 'Aloha.continuoustext', + button, + i18nCore.t('floatingmenu.tab.format'), + 1 + ); + } + }); + +}); + diff --git a/modules/core/aloha/static/plugins/extra/speak/lib/speak.js b/modules/core/aloha/static/plugins/extra/speak/lib/speak.js new file mode 100644 index 000000000..98a2e0835 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/speak/lib/speak.js @@ -0,0 +1,3 @@ +// This is speak.js, built on eSpeak. https://github.com/kripken/speak.js + +var speak=(function(){var bU=console.log;var xv={noInitialRun:true};var h3=[74,0,0,0,107,0,0,0,0,0,0,0,98,97,115,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,37,37,0,0,0,0,0,0,0,0,3,1,0,0,0,0,44,0,0,0,0,0,0,0,0,0,4,1,0,0,2,0,44,44,0,0,0,0,0,0,0,0,5,1,0,0,3,0,39,0,0,0,0,0,0,0,0,0,6,1,0,0,4,0,39,39,0,0,0,0,0,0,0,0,7,1,0,0,5,0,61,0,0,0,0,0,0,0,0,0,8,1,0,0,2,0,95,58,0,0,0,0,0,0,0,0,9,0,10,0,37,1,95,0,0,0,0,0,0,0,0,0,10,0,10,0,12,1,95,33,0,0,64,0,0,0,0,0,11,0,10,0,17,1,58,0,0,0,0,0,0,0,0,0,12,9,0,0,35,0,64,0,0,0,2,0,0,0,12,0,13,2,28,28,70,0,64,45,0,0,2,0,16,0,14,0,14,2,28,28,90,0,124,124,0,0,0,0,0,0,0,0,15,0,0,0,0,1,42,0,0,0,16,64,132,0,128,2,16,5,0,0,0,3,49,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,35,88,49,0,40,0,4,0,60,0,18,6,0,0,0,3,63,0,0,0,72,0,12,0,2,0,19,4,0,0,0,2,45,0,0,0,0,0,0,0,0,0,20,9,0,0,0,0,95,94,95,0,0,0,0,0,0,0,21,0,10,0,5,1,95,88,49,0,0,0,0,0,0,0,22,0,10,0,5,1,95,124,0,0,0,0,0,0,0,0,23,0,10,0,0,5,95,58,58,0,0,0,0,0,0,0,24,0,10,0,75,1,116,35,0,0,0,0,0,0,0,0,25,0,0,0,0,0,39,33,0,0,0,0,0,0,0,0,26,1,0,0,6,0,95,59,95,0,0,0,0,0,0,0,27,0,10,0,100,1,35,64,0,0,0,0,0,0,0,0,28,9,0,0,0,0,35,97,0,0,0,0,0,0,0,0,29,9,0,0,0,0,35,101,0,0,0,0,0,0,0,0,30,9,0,0,0,0,35,105,0,0,0,0,0,0,0,0,31,9,0,0,0,0,35,111,0,0,0,0,0,0,0,0,32,9,0,0,0,0,35,117,0,0,0,0,0,0,0,0,33,9,0,0,0,0,114,0,0,0,0,0,128,0,72,0,34,3,0,0,0,7,97,0,0,0,0,0,0,0,24,0,35,2,29,29,90,0,101,0,0,0,0,0,0,0,26,0,36,2,30,30,85,0,105,0,0,0,0,0,0,0,28,0,37,2,31,31,85,0,59,0,0,0,0,2,0,0,148,1,38,3,0,0,0,0,111,0,0,0,0,0,0,0,31,0,39,2,32,32,85,0,117,0,0,0,0,0,0,0,33,0,40,2,33,33,85,0,109,45,0,0,0,0,0,0,35,0,41,2,28,28,85,0,110,45,0,0,0,0,0,0,45,0,42,2,28,28,85,0,78,45,0,0,0,0,0,0,55,0,43,2,30,30,95,0,114,45,0,0,2,0,0,0,62,0,44,2,28,28,110,0,108,45,0,0,2,0,0,0,67,0,45,2,28,28,100,0,114,47,0,0,0,0,128,0,102,0,46,3,0,0,0,2,116,0,0,0,8,0,4,0,233,4,47,4,0,70,0,2,112,0,0,0,8,0,1,0,207,4,48,4,0,69,0,2,107,0,0,0,8,0,8,0,45,5,49,4,0,79,0,2,110,0,0,0,16,0,4,0,214,1,50,8,0,0,0,4,82,0,0,0,128,0,0,0,120,0,51,3,0,0,0,6,82,50,0,0,128,0,0,0,138,0,52,3,0,0,0,6,82,51,0,0,128,0,0,0,152,0,53,3,0,0,30,6,114,34,0,0,16,0,10,0,182,0,54,7,0,0,0,6,108,0,0,0,0,0,0,0,208,0,55,3,0,0,0,7,108,47,0,0,0,0,0,0,248,0,56,3,0,0,0,7,106,0,0,0,0,2,0,0,119,1,57,3,0,0,0,7,119,0,0,0,0,0,0,0,84,1,58,3,0,0,0,7,108,47,50,0,0,0,0,0,15,1,59,3,0,0,0,7,108,47,51,0,0,0,0,0,39,1,60,3,0,0,0,7,108,94,0,0,0,0,0,0,56,1,61,3,0,0,50,7,108,46,0,0,0,0,5,0,80,1,62,3,0,0,0,7,109,0,0,0,16,0,1,0,174,1,63,8,0,0,0,4,110,46,0,0,16,0,5,0,251,1,64,8,50,0,0,4,110,94,0,0,16,2,7,0,33,2,65,8,0,0,0,4,78,0,0,0,16,0,8,0,73,2,66,8,0,0,0,8,42,42,0,0,0,0,4,0,112,2,67,3,0,0,0,3,114,46,0,0,0,0,5,0,174,2,68,3,0,0,0,3,98,0,0,0,16,0,1,0,184,2,69,5,0,48,0,5,100,0,0,0,16,0,4,0,3,3,70,5,0,47,0,5,100,91,0,0,16,0,3,0,24,3,71,5,0,72,0,5,116,91,0,0,8,0,3,0,254,4,72,4,0,71,0,2,100,90,0,0,48,0,6,0,51,3,73,5,0,74,0,5,116,83,0,0,40,0,6,0,11,5,74,4,0,73,0,2,100,90,59,0,48,2,6,0,72,3,75,5,0,76,0,5,116,83,59,0,40,2,7,0,20,5,76,4,0,75,0,2,74,0,0,0,48,0,7,0,108,3,77,5,0,78,0,5,99,0,0,0,8,2,7,0,32,5,78,4,0,77,0,2,103,0,0,0,16,0,8,0,141,3,79,5,0,49,0,5,66,0,0,0,16,0,1,0,162,3,80,7,0,81,0,6,102,0,0,0,8,0,2,0,94,5,81,6,0,82,0,3,118,0,0,0,16,0,2,0,192,3,82,7,0,81,0,6,118,35,0,0,16,0,2,0,229,3,83,7,0,81,0,6,68,0,0,0,16,0,3,0,244,3,84,7,0,85,0,6,84,0,0,0,8,0,3,0,103,5,85,6,0,84,0,3,122,0,0,0,48,0,4,0,7,4,86,7,0,87,0,6,115,0,0,0,40,0,4,0,116,5,87,6,0,86,0,3,90,0,0,0,48,0,6,0,31,4,88,7,0,89,0,6,83,0,0,0,40,0,6,0,134,5,89,6,0,88,0,3,122,46,0,0,48,0,6,0,61,4,90,7,0,91,0,6,115,46,0,0,40,0,6,0,147,5,91,6,0,90,0,3,122,59,0,0,48,2,7,0,93,4,92,7,0,93,0,6,115,59,0,0,40,2,7,0,162,5,93,6,0,92,0,3,90,59,0,0,48,2,7,0,113,4,94,7,0,95,0,6,83,59,0,0,40,2,7,0,177,5,95,6,0,94,0,3,74,94,0,0,16,2,7,0,133,4,96,7,0,97,0,6,67,0,0,0,8,2,7,0,212,5,97,6,0,0,0,3,81,0,0,0,16,0,8,0,147,4,98,7,0,99,0,6,120,0,0,0,8,0,8,0,225,5,99,6,0,98,0,3,81,94,0,0,16,0,8,0,177,4,100,7,0,0,0,6,81,34,0,0,16,0,10,0,195,4,101,7,0,0,0,6,113,0,0,0,8,0,10,0,78,5,102,4,0,0,0,2,108,35,0,0,8,0,4,0,192,5,103,6,0,0,0,3,88,0,0,0,8,0,10,0,238,5,104,6,0,101,0,3,104,0,0,0,8,0,12,0,243,5,105,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,1,0,0,0,0,0,0,99,111,110,115,111,110,97,110,116,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,115,0,0,40,0,4,0,9,6,106,4,0,107,0,2,100,122,0,0,48,0,4,0,22,6,107,5,0,106,0,5,112,45,0,0,8,0,1,0,43,6,108,4,0,69,0,2,112,104,0,0,8,0,1,0,62,6,109,4,0,69,0,2,116,45,0,0,8,0,4,0,78,6,110,4,0,70,0,2,99,50,0,0,40,0,7,0,91,6,111,4,0,0,0,2,107,45,0,0,8,0,8,0,104,6,112,4,0,79,0,2,107,104,0,0,8,0,8,0,117,6,113,4,0,79,0,2,115,50,0,0,40,0,4,0,133,6,114,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,1,0,0,0,0,0,0,98,97,115,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,142,6,35,2,29,29,90,0,101,0,0,0,0,0,0,0,151,6,36,2,30,30,85,0,105,0,0,0,0,0,0,0,155,6,37,2,31,31,75,0,111,0,0,0,0,0,0,0,158,6,39,2,32,32,85,0,117,0,0,0,0,0,0,0,162,6,40,2,33,33,80,0,116,0,0,0,8,0,3,0,211,6,47,4,0,70,0,2,112,0,0,0,8,0,1,0,192,6,48,4,0,69,0,2,107,0,0,0,8,0,8,0,251,6,49,4,0,79,0,2,100,0,0,0,16,0,3,0,224,6,70,5,0,47,0,5,97,47,0,0,0,0,0,0,149,6,106,2,28,28,90,0,69,0,0,0,0,0,0,0,153,6,107,2,30,30,85,0,79,0,0,0,0,0,0,0,160,6,108,2,32,32,85,0,85,0,0,0,0,0,0,0,164,6,109,2,33,33,80,0,121,0,0,0,0,0,0,0,166,6,110,2,31,31,80,0,89,0,0,0,0,0,0,0,168,6,111,2,28,28,80,0,97,85,0,0,0,0,0,0,170,6,112,2,29,33,135,0,101,85,0,0,0,0,0,0,172,6,113,2,30,33,130,0,105,85,0,0,0,0,0,0,174,6,114,2,31,33,120,0,97,73,0,0,0,0,0,0,176,6,115,2,29,31,125,0,101,73,0,0,0,0,0,0,178,6,116,2,30,31,125,0,69,73,0,0,0,0,0,0,180,6,117,2,30,31,115,0,111,73,0,0,0,0,0,0,182,6,118,2,32,31,120,0,117,73,0,0,0,0,0,0,184,6,119,2,33,31,120,0,119,50,0,0,0,0,0,0,186,6,120,3,0,0,0,7,116,115,0,0,40,0,4,0,9,6,121,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,0,0,0,0,0,0,101,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,107,7,13,2,28,28,70,0,116,35,0,0,16,0,4,0,18,7,25,5,0,0,0,5,97,0,0,0,0,0,0,0,131,7,35,2,29,29,80,0,105,0,0,0,0,0,0,0,155,7,37,2,31,31,70,0,114,45,0,0,0,0,128,0,79,7,44,3,0,0,0,0,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,116,50,0,0,8,0,4,0,233,4,106,4,0,0,0,2,103,45,0,0,16,0,8,0,58,7,107,5,0,0,0,5,122,47,50,0,48,0,4,0,99,7,108,7,0,0,0,6,73,50,0,0,2,0,0,0,152,7,109,2,31,31,65,0,51,0,0,0,2,0,0,0,113,7,110,2,28,28,70,0,64,50,0,0,2,0,0,0,118,7,111,2,28,28,60,0,64,53,0,0,2,0,0,0,122,7,112,2,28,28,70,0,85,0,0,0,0,0,0,0,166,7,113,2,32,32,75,0,64,76,0,0,2,0,0,0,127,7,114,2,28,55,80,0,97,35,0,0,2,0,0,0,137,7,115,2,28,28,75,0,97,97,0,0,0,0,0,0,141,7,116,2,29,29,92,0,69,0,0,0,0,0,0,0,146,7,117,2,30,30,70,0,73,0,0,0,0,0,0,0,149,7,118,2,31,31,65,0,48,0,0,0,0,0,0,0,160,7,119,2,32,32,70,0,86,0,0,0,0,0,0,0,163,7,120,2,29,28,70,0,65,58,0,0,0,0,0,0,168,7,121,2,29,29,115,0,65,64,0,0,0,0,0,0,171,7,122,2,29,29,115,0,51,58,0,0,0,0,0,0,177,7,123,2,28,28,105,0,105,58,0,0,0,0,0,0,181,7,124,2,31,31,87,0,79,58,0,0,0,0,0,0,187,7,125,2,32,32,115,0,79,0,0,0,0,0,0,0,190,7,126,2,32,32,100,0,79,64,0,0,0,0,0,0,193,7,127,2,32,32,120,0,111,64,0,0,0,0,0,0,199,7,128,2,32,32,125,0,117,58,0,0,0,0,0,0,205,7,129,2,33,33,105,0,97,85,0,0,0,0,0,0,210,7,130,2,29,33,115,0,111,85,0,0,0,0,0,0,212,7,131,2,28,33,110,0,97,73,0,0,0,0,0,0,217,7,132,2,29,31,120,0,101,73,0,0,0,0,0,0,221,7,133,2,30,31,105,0,79,73,0,0,0,0,0,0,223,7,134,2,32,31,115,0,101,64,0,0,0,0,0,0,225,7,135,2,30,28,115,0,105,64,0,0,0,0,0,0,228,7,136,2,31,28,125,0,105,64,51,0,0,0,0,0,231,7,137,2,31,28,125,0,85,64,0,0,0,0,0,0,234,7,138,2,33,28,100,0,97,73,64,0,0,0,0,0,240,7,139,2,29,28,140,0,97,85,64,0,0,0,0,0,243,7,140,2,29,28,140,0,73,82,0,0,0,0,0,0,246,7,141,2,28,28,95,0,86,82,0,0,0,0,0,0,0,8,142,2,28,28,105,0,111,58,0,0,0,0,0,0,10,8,143,2,32,32,110,0,65,126,0,0,0,0,0,0,12,8,144,2,29,29,130,0,79,126,0,0,0,0,0,0,14,8,145,2,32,32,120,0,101,58,0,0,0,0,0,0,16,8,146,2,30,30,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,4,0,0,0,0,0,0,101,110,45,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,27,8,35,2,29,29,70,0,105,0,0,0,0,0,0,0,39,8,37,2,31,31,75,0,78,0,0,0,16,0,8,0,18,8,66,8,0,0,0,8,73,50,0,0,2,0,0,0,36,8,109,2,31,31,70,0,51,0,0,0,2,0,0,0,22,8,110,2,28,28,70,0,85,0,0,0,0,0,0,0,50,8,113,2,32,32,85,0,97,35,0,0,2,0,0,0,52,8,115,2,28,28,70,0,97,97,0,0,0,0,0,0,66,8,116,2,29,29,75,0,69,0,0,0,0,0,0,0,30,8,117,2,29,29,75,0,73,0,0,0,0,0,0,0,33,8,118,2,31,31,65,0,48,0,0,0,0,0,0,0,42,8,119,2,32,32,75,0,86,0,0,0,0,0,0,0,45,8,120,2,32,32,70,0,65,58,0,0,0,0,0,0,57,8,121,2,29,28,120,0,65,64,0,0,0,0,0,0,60,8,122,2,29,28,125,0,51,58,0,0,0,0,0,0,70,8,123,2,28,28,115,0,105,58,0,0,0,0,0,0,74,8,124,2,31,31,87,0,79,58,0,0,0,0,0,0,80,8,125,2,32,32,120,0,79,0,0,0,0,0,0,0,96,8,126,2,32,32,75,0,79,64,0,0,0,0,0,0,84,8,127,2,32,28,120,0,111,64,0,0,0,0,0,0,90,8,128,2,32,28,120,0,117,58,0,0,0,0,0,0,99,8,129,2,33,33,100,0,97,85,0,0,0,0,0,0,101,8,130,2,30,33,115,0,111,85,0,0,0,0,0,0,106,8,131,2,32,32,110,0,97,73,0,0,0,0,0,0,111,8,132,2,29,31,115,0,101,73,0,0,0,0,0,0,113,8,133,2,31,31,105,0,79,73,0,0,0,0,0,0,118,8,134,2,32,31,115,0,101,64,0,0,0,0,0,0,120,8,135,2,30,28,110,0,105,64,0,0,0,0,0,0,123,8,136,2,31,28,120,0,85,64,0,0,0,0,0,0,126,8,138,2,33,28,100,0,97,73,64,0,0,0,0,0,129,8,139,2,29,28,140,0,97,85,64,0,0,0,0,0,132,8,140,2,29,28,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,4,0,0,0,0,0,0,101,110,45,117,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,140,8,13,2,28,28,65,0,97,0,0,0,0,0,0,0,152,8,35,2,30,28,105,0,105,0,0,0,2,0,0,0,174,8,37,2,31,31,85,0,114,47,0,0,0,0,0,0,0,0,46,3,0,0,0,2,116,0,0,0,8,0,4,0,64,9,47,4,0,70,0,2,73,50,0,0,2,0,0,0,171,8,109,2,31,31,80,0,51,0,0,0,2,0,0,0,135,8,110,2,28,28,105,0,64,50,0,0,2,0,0,0,146,8,111,2,28,28,60,0,85,0,0,0,0,0,0,0,188,8,113,2,32,32,72,0,64,76,0,0,2,0,0,0,150,8,114,2,28,55,80,0,97,35,0,0,2,0,0,0,160,8,115,2,28,28,75,0,97,97,0,0,0,0,0,0,152,8,116,2,30,28,105,0,69,0,0,0,0,0,0,0,164,8,117,2,30,30,97,0,73,0,0,0,0,0,0,0,167,8,118,2,31,31,80,0,48,0,0,0,0,0,0,0,177,8,119,2,29,29,100,0,86,0,0,0,0,0,0,0,185,8,120,2,29,28,85,0,65,58,0,0,0,0,0,0,190,8,121,2,29,29,105,0,65,64,0,0,0,0,0,0,195,8,122,2,29,29,90,0,51,58,0,0,0,0,0,0,208,8,123,2,28,28,120,0,105,58,0,0,0,0,0,0,211,8,124,2,31,31,85,0,79,58,0,0,0,0,0,0,214,8,125,2,32,32,105,0,79,0,0,0,0,0,0,0,244,8,126,2,32,32,100,0,79,64,0,0,0,0,0,0,220,8,127,2,32,28,125,0,111,64,0,0,0,0,0,0,232,8,128,2,32,28,125,0,117,58,0,0,0,0,0,0,247,8,129,2,33,33,95,0,97,85,0,0,0,0,0,0,249,8,130,2,29,32,117,0,111,85,0,0,0,0,0,0,251,8,131,2,28,33,115,0,97,73,0,0,0,0,0,0,253,8,132,2,29,31,125,0,101,73,0,0,0,0,0,0,2,9,133,2,30,31,115,0,79,73,0,0,0,0,0,0,4,9,134,2,32,31,142,0,101,64,0,0,0,0,0,0,6,9,135,2,30,28,140,0,105,64,51,0,0,0,0,0,16,9,137,2,31,28,140,0,85,64,0,0,0,0,0,0,26,9,138,2,28,28,125,0,97,73,64,0,0,0,0,0,36,9,139,2,29,28,150,0,97,85,64,0,0,0,0,0,50,9,140,2,29,28,150,0,64,47,0,0,2,0,0,0,144,8,147,2,28,28,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,4,0,0,0,0,0,0,101,110,45,115,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,94,9,13,2,28,28,70,0,114,0,0,0,128,0,128,0,26,10,34,3,0,0,0,7,97,0,0,0,0,0,0,0,114,9,35,2,29,29,100,0,105,0,0,0,0,0,0,0,145,9,37,2,31,30,75,0,114,47,0,0,0,0,0,0,24,10,46,3,0,0,0,2,73,50,0,0,2,0,0,0,142,9,109,2,28,28,55,0,51,0,0,0,2,0,0,0,97,9,110,2,28,28,70,0,64,50,0,0,2,0,0,0,105,9,111,2,28,28,60,0,64,53,0,0,2,0,0,0,109,9,112,2,28,28,70,0,85,0,0,0,0,0,0,0,156,9,113,2,33,33,70,0,64,76,0,0,2,0,0,0,20,10,114,2,28,55,80,0,97,35,0,0,2,0,0,0,121,9,115,2,28,28,70,0,97,97,0,0,0,0,0,0,126,9,116,2,29,29,110,0,69,0,0,0,0,0,0,0,131,9,117,2,30,30,85,0,73,0,0,0,0,0,0,0,134,9,118,2,28,28,55,0,48,0,0,0,0,0,0,0,150,9,119,2,32,32,100,0,86,0,0,0,0,0,0,0,153,9,120,2,29,28,70,0,65,58,0,0,0,0,0,0,160,9,121,2,29,29,110,0,65,64,0,0,0,0,0,0,170,9,122,2,29,28,125,0,51,58,0,0,0,0,0,0,176,9,123,2,30,28,105,0,105,58,0,0,0,0,0,0,182,9,124,2,31,31,65,0,79,58,0,0,0,0,0,0,191,9,125,2,32,32,100,0,79,0,0,0,0,0,0,0,207,9,126,2,32,32,75,0,79,64,0,0,0,0,0,0,197,9,127,2,32,28,115,0,111,64,0,0,0,0,0,0,202,9,128,2,32,28,115,0,117,58,0,0,0,0,0,0,210,9,129,2,33,33,80,0,97,85,0,0,0,0,0,0,222,9,130,2,29,33,100,0,111,85,0,0,0,0,0,0,227,9,131,2,32,33,95,0,97,73,0,0,0,0,0,0,232,9,132,2,29,31,95,0,101,73,0,0,0,0,0,0,242,9,133,2,30,31,95,0,79,73,0,0,0,0,0,0,247,9,134,2,32,31,105,0,101,64,0,0,0,0,0,0,249,9,135,2,30,28,110,0,105,64,51,0,0,0,0,0,254,9,137,2,31,28,110,0,85,64,0,0,0,0,0,0,3,10,138,2,33,28,90,0,97,73,64,0,0,0,0,0,17,10,139,2,29,28,135,0,97,85,64,0,0,0,0,0,14,10,140,2,29,28,135,0,97,47,0,0,0,0,0,0,118,9,147,2,29,29,80,0,97,73,50,0,0,0,0,0,240,9,148,2,29,31,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,4,0,0,0,0,0,0,101,110,45,114,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,31,10,13,2,28,28,70,0,97,0,0,0,0,0,0,0,51,10,35,2,29,29,87,0,105,0,0,0,0,0,0,0,65,10,37,2,31,31,70,0,73,50,0,0,2,0,0,0,62,10,109,2,31,31,65,0,51,0,0,0,2,0,0,0,37,10,110,2,28,28,70,0,64,50,0,0,2,0,0,0,42,10,111,2,28,28,60,0,64,53,0,0,2,0,0,0,46,10,112,2,28,28,70,0,85,0,0,0,0,0,0,0,74,10,113,2,32,32,75,0,97,35,0,0,2,0,0,0,76,10,115,2,28,28,75,0,97,97,0,0,0,0,0,0,90,10,116,2,29,29,100,0,69,0,0,0,0,0,0,0,56,10,117,2,30,30,70,0,73,0,0,0,0,0,0,0,59,10,118,2,31,31,65,0,48,0,0,0,0,0,0,0,68,10,119,2,32,32,70,0,86,0,0,0,0,0,0,0,71,10,120,2,29,28,70,0,65,58,0,0,0,0,0,0,81,10,121,2,29,29,120,0,65,64,0,0,0,0,0,0,84,10,122,2,29,29,120,0,51,58,0,0,0,0,0,0,95,10,123,2,28,28,105,0,105,58,0,0,0,0,32,0,99,10,124,2,31,31,87,0,79,58,0,0,0,0,0,0,105,10,125,2,32,32,115,0,79,0,0,0,0,0,0,0,115,10,126,2,32,32,75,0,79,64,0,0,0,0,0,0,109,10,127,2,32,28,115,0,117,58,0,0,0,0,0,0,118,10,129,2,33,33,95,0,97,85,0,0,0,0,0,0,120,10,130,2,29,33,115,0,111,85,0,0,0,0,0,0,122,10,131,2,28,33,110,0,97,73,0,0,0,0,0,0,127,10,132,2,29,31,115,0,101,73,0,0,0,0,0,0,132,10,133,2,31,31,110,0,79,73,0,0,0,0,0,0,134,10,134,2,32,31,115,0,101,64,0,0,0,0,0,0,136,10,135,2,30,28,110,0,105,64,0,0,0,0,0,0,139,10,136,2,31,28,120,0,85,64,0,0,0,0,0,0,142,10,138,2,33,28,115,0,97,73,64,0,0,0,0,0,148,10,139,2,29,28,135,0,97,85,64,0,0,0,0,0,151,10,140,2,29,28,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,4,0,0,0,0,0,0,101,110,45,119,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,158,10,35,2,29,29,80,0,105,0,0,0,0,0,0,0,171,10,37,2,31,31,110,0,78,0,0,0,16,0,8,0,154,10,66,8,0,0,0,8,73,50,0,0,2,0,0,0,164,10,109,2,31,31,70,0,85,0,0,0,0,0,0,0,182,10,113,2,33,33,75,0,97,35,0,0,2,0,0,0,185,10,115,2,28,28,70,0,97,97,0,0,0,0,0,0,198,10,116,2,29,29,80,0,69,0,0,0,0,0,0,0,161,10,117,2,30,30,75,0,73,0,0,0,0,0,0,0,164,10,118,2,31,31,70,0,48,0,0,0,0,0,0,0,174,10,119,2,32,32,70,0,86,0,0,0,0,0,0,0,177,10,120,2,32,32,70,0,65,58,0,0,0,0,0,0,189,10,121,2,29,29,120,0,65,64,0,0,0,0,0,0,192,10,122,2,29,29,120,0,51,58,0,0,0,0,0,0,202,10,123,2,28,28,125,0,105,58,0,0,0,0,0,0,206,10,124,2,30,31,110,0,79,58,0,0,0,0,0,0,211,10,125,2,32,32,120,0,79,0,0,0,0,0,0,0,221,10,126,2,32,32,75,0,79,64,0,0,0,0,0,0,215,10,127,2,32,28,120,0,117,58,0,0,0,0,0,0,224,10,129,2,33,33,100,0,97,85,0,0,0,0,0,0,229,10,130,2,29,33,115,0,111,85,0,0,0,0,0,0,234,10,131,2,28,33,110,0,97,73,0,0,0,0,0,0,239,10,132,2,32,31,120,0,101,73,0,0,0,0,0,0,244,10,133,2,28,31,120,0,79,73,0,0,0,0,0,0,249,10,134,2,32,31,115,0,101,64,0,0,0,0,0,0,254,10,135,2,28,28,120,0,105,64,0,0,0,0,0,0,4,11,136,2,31,28,120,0,85,64,0,0,0,0,0,0,7,11,138,2,33,28,100,0,97,73,64,0,0,0,0,0,10,11,139,2,29,28,140,0,97,85,64,0,0,0,0,0,13,11,140,2,29,28,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,4,0,0,0,0,0,0,101,110,45,119,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,16,11,13,2,28,28,70,0,97,0,0,0,0,0,0,0,23,11,35,2,29,29,80,0,105,0,0,0,0,0,0,0,34,11,37,2,31,31,75,0,108,0,0,0,0,0,0,0,208,0,55,3,0,0,0,7,73,50,0,0,2,0,0,0,31,11,109,2,31,31,70,0,64,50,0,0,2,0,0,0,19,11,111,2,28,28,60,0,85,0,0,0,0,0,0,0,41,11,113,2,32,32,75,0,97,35,0,0,2,0,0,0,43,11,115,2,28,28,70,0,97,97,0,0,0,0,0,0,50,11,116,2,29,29,105,0,69,0,0,0,0,0,0,0,25,11,117,2,30,30,85,0,73,0,0,0,0,0,0,0,28,11,118,2,31,31,70,0,48,0,0,0,0,0,0,0,37,11,119,2,29,29,70,0,86,0,0,0,0,0,0,0,39,11,120,2,32,32,70,0,65,58,0,0,0,0,0,0,45,11,121,2,29,28,120,0,65,64,0,0,0,0,0,0,47,11,122,2,29,28,130,0,51,58,0,0,0,0,0,0,52,11,123,2,32,32,120,0,105,58,0,0,0,0,0,0,55,11,124,2,31,31,95,0,79,58,0,0,0,0,0,0,58,11,125,2,32,32,120,0,79,0,0,0,0,0,0,0,66,11,126,2,32,32,75,0,79,64,0,0,0,0,0,0,60,11,127,2,32,28,120,0,111,64,0,0,0,0,0,0,63,11,128,2,32,28,120,0,117,58,0,0,0,0,0,0,68,11,129,2,33,33,95,0,97,85,0,0,0,0,0,0,70,11,130,2,29,33,115,0,111,85,0,0,0,0,0,0,72,11,131,2,32,32,115,0,97,73,0,0,0,0,0,0,74,11,132,2,29,31,115,0,101,73,0,0,0,0,0,0,76,11,133,2,31,31,105,0,79,73,0,0,0,0,0,0,78,11,134,2,32,31,115,0,101,64,0,0,0,0,0,0,80,11,135,2,30,28,110,0,105,64,0,0,0,0,0,0,83,11,136,2,31,29,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,1,0,0,0,0,0,0,97,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,70,0,64,0,0,0,2,0,0,0,86,11,13,2,28,28,70,0,114,0,0,0,128,0,128,0,200,11,34,3,0,0,0,6,97,0,0,0,0,0,0,0,93,11,35,2,29,29,70,0,105,0,0,0,0,0,0,0,133,11,37,2,31,31,50,0,117,0,0,0,0,0,0,0,112,11,40,2,33,33,55,0,114,47,0,0,0,0,0,0,228,11,46,3,0,0,0,7,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,99,0,0,0,8,2,7,0,237,11,78,4,0,79,0,2,69,0,0,0,0,0,0,0,97,11,106,2,30,30,70,0,73,0,0,0,0,0,0,0,99,11,107,2,28,28,70,0,79,0,0,0,0,0,0,0,108,11,108,2,32,32,70,0,87,0,0,0,0,0,0,0,110,11,109,2,28,28,70,0,38,0,0,0,0,0,0,0,114,11,110,2,30,30,75,0,38,58,0,0,0,0,0,0,119,11,111,2,30,30,140,0,64,76,0,0,2,0,0,0,124,11,112,2,28,55,80,0,65,58,0,0,0,0,0,0,126,11,113,2,29,29,140,0,101,64,0,0,0,0,0,0,128,11,114,2,31,28,115,0,111,64,0,0,0,0,0,0,136,11,115,2,33,28,125,0,121,0,0,0,0,0,0,0,141,11,116,2,31,31,90,0,105,117,0,0,0,0,0,0,143,11,117,2,31,33,110,0,64,85,0,0,0,0,0,0,145,11,118,2,28,33,85,0,97,73,0,0,0,0,0,0,147,11,119,2,29,31,110,0,65,73,0,0,0,0,0,0,150,11,120,2,29,31,155,0,101,73,0,0,0,0,0,0,153,11,121,2,30,31,85,0,79,73,0,0,0,0,0,0,159,11,122,2,32,31,115,0,111,73,0,0,0,0,0,0,162,11,123,2,32,31,145,0,117,73,0,0,0,0,0,0,168,11,124,2,33,31,120,0,89,121,0,0,0,0,0,0,171,11,125,2,28,31,110,0,89,64,0,0,0,0,0,0,174,11,126,2,31,28,105,0,97,85,0,0,0,0,0,0,176,11,127,2,29,33,115,0,101,58,0,0,0,0,0,0,178,11,128,2,30,30,105,0,79,58,0,0,0,0,0,0,180,11,129,2,32,32,140,0,51,58,0,0,0,0,0,0,182,11,130,2,28,28,115,0,65,126,0,0,0,0,0,0,184,11,131,2,29,29,120,0,101,126,0,0,0,0,0,0,186,11,132,2,30,30,120,0,111,126,0,0,0,0,0,0,188,11,133,2,32,32,120,0,120,50,0,0,8,0,8,0,190,11,134,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,1,0,0,0,0,0,0,99,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,128,0,0,0,72,12,34,3,0,0,0,6,97,0,0,0,0,0,0,0,247,11,35,2,29,29,75,0,103,0,0,0,16,0,8,0,84,12,79,5,0,49,0,5,69,0,0,0,0,0,0,0,249,11,106,2,30,30,75,0,73,0,0,0,0,0,0,0,251,11,107,2,31,31,75,0,89,0,0,0,0,0,0,0,255,11,108,2,31,31,75,0,79,0,0,0,0,0,0,0,1,12,109,2,32,32,75,0,85,0,0,0,0,0,0,0,3,12,110,2,33,33,75,0,86,0,0,0,0,0,0,0,5,12,111,2,28,28,75,0,105,58,0,0,0,0,0,0,7,12,112,2,31,31,90,0,121,58,0,0,0,0,0,0,10,12,113,2,31,31,90,0,117,58,0,0,0,0,0,0,16,12,114,2,33,33,95,0,101,58,0,0,0,0,0,0,19,12,115,2,30,30,105,0,111,58,0,0,0,0,0,0,22,12,116,2,32,32,105,0,65,58,0,0,0,0,0,0,25,12,117,2,29,29,115,0,65,89,0,0,0,0,0,0,28,12,118,2,29,31,125,0,97,73,0,0,0,0,0,0,33,12,119,2,29,31,105,0,97,89,0,0,0,0,0,0,35,12,120,2,29,31,105,0,97,85,0,0,0,0,0,0,40,12,121,2,29,33,105,0,64,73,0,0,0,0,0,0,42,12,122,2,28,31,105,0,64,89,0,0,0,0,0,0,44,12,123,2,28,31,105,0,101,85,0,0,0,0,0,0,49,12,124,2,30,33,105,0,73,117,0,0,0,0,0,0,51,12,125,2,31,33,105,0,89,117,0,0,0,0,0,0,53,12,126,2,31,33,105,0,79,73,0,0,0,0,0,0,58,12,127,2,32,31,105,0,79,89,0,0,0,0,0,0,60,12,128,2,32,31,105,0,117,73,0,0,0,0,0,0,65,12,129,2,33,31,105,0,117,89,0,0,0,0,0,0,67,12,130,2,33,31,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,1,0,0,232,203,3,0,100,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,105,12,13,2,28,28,60,0,114,0,0,0,16,0,132,0,0,13,34,5,0,0,0,6,97,0,0,0,0,0,0,0,117,12,35,2,29,29,55,0,108,47,0,0,0,0,0,0,210,12,56,3,0,0,0,7,106,0,0,0,0,2,0,0,227,12,57,3,0,0,0,7,51,0,0,0,2,0,0,16,113,12,106,2,28,28,80,0,51,58,0,0,2,0,0,16,115,12,107,2,28,28,105,0,69,0,0,0,0,0,0,0,121,12,108,2,30,30,60,0,69,50,0,0,0,0,0,0,125,12,109,2,30,30,60,0,73,0,0,0,0,0,0,0,130,12,110,2,31,31,60,0,73,58,0,0,0,0,0,0,135,12,111,2,31,31,95,0,79,0,0,0,0,0,0,0,137,12,112,2,32,32,60,0,85,0,0,0,0,0,0,0,141,12,113,2,33,33,60,0,85,82,0,0,0,0,0,16,45,13,114,2,33,28,90,0,65,58,0,0,0,0,0,0,151,12,115,2,29,29,125,0,65,0,0,0,0,0,0,0,153,12,116,2,29,29,125,0,105,58,0,0,0,0,0,0,156,12,117,2,31,31,90,0,105,50,0,0,0,0,0,0,161,12,118,2,31,31,90,0,117,58,0,0,0,0,0,0,167,12,119,2,33,33,95,0,97,85,0,0,0,0,0,0,169,12,120,2,29,33,110,0,97,73,0,0,0,0,0,0,171,12,121,2,29,31,105,0,69,73,0,0,0,0,0,0,173,12,122,2,30,31,105,0,79,89,0,0,0,0,0,0,175,12,123,2,32,31,110,0,69,58,0,0,0,0,0,0,177,12,124,2,30,30,100,0,101,58,0,0,0,0,0,0,179,12,125,2,30,30,100,0,111,58,0,0,0,0,0,0,181,12,126,2,32,32,105,0,121,58,0,0,0,0,0,0,183,12,127,2,33,33,100,0,121,0,0,0,0,0,0,0,185,12,128,2,33,33,55,0,89,58,0,0,0,0,0,0,191,12,129,2,28,28,110,0,87,0,0,0,0,0,0,0,193,12,130,2,28,28,75,0,116,115,0,0,40,0,4,0,9,6,131,4,0,0,0,2,112,70,0,0,8,0,1,0,197,12,132,4,0,0,0,2,103,35,0,0,8,2,7,0,205,12,133,6,0,0,0,3,114,50,0,0,16,0,10,0,18,13,134,7,0,0,55,6,86,35,0,0,0,0,0,0,32,13,135,3,0,0,0,7,111,85,0,0,0,0,0,0,251,8,136,2,28,33,115,0,65,126,0,0,0,0,0,0,50,13,137,2,29,29,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,1,0,0,0,0,0,0,101,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,52,13,35,2,29,29,90,0,101,0,0,0,0,0,0,0,54,13,36,2,30,30,85,0,105,0,0,0,0,0,0,0,56,13,37,2,31,31,85,0,111,0,0,0,0,0,0,0,59,13,39,2,32,32,85,0,117,0,0,0,0,0,0,0,64,13,40,2,33,33,85,0,97,85,0,0,0,0,0,0,66,13,106,2,29,33,125,0,101,85,0,0,0,0,0,0,68,13,107,2,30,33,125,0,97,73,0,0,0,0,0,0,70,13,108,2,29,31,125,0,101,73,0,0,0,0,0,0,72,13,109,2,30,31,125,0,111,73,0,0,0,0,0,0,74,13,110,2,32,31,125,0,117,73,0,0,0,0,0,0,76,13,111,2,33,31,125,0,116,115,0,0,40,0,4,0,9,6,112,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,0,0,0,0,0,0,106,98,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,78,13,36,2,30,30,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,110,99,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,150,0,101,0,0,0,0,0,0,0,80,13,36,2,30,30,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,1,0,0,0,0,0,0,102,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,80,0,97,0,0,0,0,0,0,0,93,13,35,2,29,29,85,0,101,0,0,0,0,0,0,0,89,13,36,2,30,30,75,0,105,0,0,0,0,0,0,0,82,13,37,2,31,31,70,0,111,0,0,0,0,0,0,0,97,13,39,2,32,32,77,0,117,0,0,0,0,0,0,0,101,13,40,2,33,33,70,0,116,0,0,0,8,0,3,0,254,4,47,4,0,70,0,2,112,0,0,0,8,0,1,0,192,6,48,4,0,69,0,2,107,0,0,0,8,0,8,0,251,6,49,4,0,79,0,2,82,50,0,0,128,0,0,0,145,13,52,3,0,0,0,6,100,0,0,0,16,0,3,0,172,13,70,5,0,47,0,5,118,0,0,0,16,0,2,0,159,13,82,7,0,81,0,6,104,0,0,0,8,0,12,0,199,13,105,6,0,0,0,3,73,0,0,0,0,0,0,0,86,13,106,2,31,31,70,0,38,0,0,0,0,0,0,0,91,13,107,2,29,29,75,0,97,50,0,0,0,0,0,0,95,13,108,2,29,29,85,0,89,0,0,0,0,0,0,0,99,13,109,2,28,28,77,0,117,49,0,0,0,0,0,0,103,13,110,2,33,33,70,0,85,0,0,0,0,0,0,0,105,13,111,2,33,33,70,0,121,0,0,0,0,0,0,0,107,13,112,2,33,33,75,0,97,105,0,0,0,0,32,0,109,13,113,2,29,31,155,0,38,105,0,0,0,0,32,0,111,13,114,2,29,31,145,0,111,105,0,0,0,0,32,0,113,13,115,2,32,31,140,0,101,105,0,0,0,0,32,0,115,13,116,2,30,31,140,0,89,105,0,0,0,0,32,0,117,13,117,2,28,31,135,0,117,105,0,0,0,0,32,0,119,13,118,2,33,31,135,0,121,105,0,0,0,0,32,0,121,13,119,2,33,31,135,0,97,117,0,0,0,0,32,0,123,13,120,2,29,33,150,0,111,117,0,0,0,0,32,0,125,13,121,2,32,33,140,0,101,117,0,0,0,0,32,0,127,13,122,2,30,33,140,0,105,117,0,0,0,0,32,0,129,13,123,2,31,33,140,0,38,121,0,0,0,0,32,0,131,13,124,2,29,33,140,0,101,121,0,0,0,0,32,0,133,13,125,2,30,33,140,0,89,121,0,0,0,0,32,0,135,13,126,2,28,33,135,0,105,121,0,0,0,0,32,0,137,13,127,2,31,33,130,0,117,111,0,0,0,0,32,0,139,13,128,2,33,32,140,0,105,101,0,0,0,0,32,0,141,13,129,2,31,30,140,0,121,89,0,0,0,0,32,0,143,13,130,2,33,28,140,0,115,50,0,0,40,0,4,0,133,6,131,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,1,0,0,228,23,4,0,102,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,20,0,64,0,0,0,0,0,0,0,229,14,13,2,28,28,85,0,114,0,0,0,16,0,138,1,50,14,34,7,107,0,0,7,97,0,0,0,0,0,0,0,231,14,35,2,29,29,90,0,101,0,0,0,0,0,0,0,237,14,36,2,30,30,90,0,105,0,0,0,0,2,0,0,253,14,37,2,31,31,90,0,111,0,0,0,0,0,0,0,36,15,39,2,32,32,90,0,117,0,0,0,0,0,0,0,59,15,40,2,33,33,90,0,114,47,0,0,16,0,138,0,75,14,46,7,107,0,0,7,116,0,0,0,8,0,4,0,156,16,47,4,108,70,0,2,112,0,0,0,8,0,1,0,87,16,48,4,108,69,0,2,107,0,0,0,8,0,8,0,17,16,49,4,108,79,25,2,110,0,0,0,16,0,4,0,42,16,50,8,0,0,0,4,108,0,0,0,0,0,0,0,142,14,55,3,106,0,0,7,108,47,0,0,0,0,5,0,183,14,56,3,106,0,0,7,119,0,0,0,0,0,0,0,83,15,58,2,33,33,90,0,108,47,50,0,0,0,0,0,209,14,59,3,106,0,0,0,98,0,0,0,16,0,1,0,148,15,69,5,108,48,0,6,100,0,0,0,16,0,4,0,200,15,70,5,108,47,0,5,103,0,0,0,16,0,8,0,241,15,79,5,108,49,0,5,102,0,0,0,8,0,2,0,232,15,81,6,108,82,0,3,118,0,0,0,16,0,2,0,197,16,82,7,108,81,45,6,122,0,0,0,48,0,4,0,230,16,86,7,0,87,0,6,115,0,0,0,40,0,4,0,123,16,87,6,0,86,0,3,83,0,0,0,40,0,6,0,141,16,89,6,108,88,0,3,35,108,0,0,0,0,0,0,0,0,106,9,0,0,0,0,35,114,0,0,0,0,0,0,0,0,107,9,0,0,0,0,35,99,70,82,0,0,0,0,0,0,108,9,0,0,0,0,121,0,0,0,0,0,0,0,68,15,109,2,33,33,90,0,69,0,0,0,0,0,0,0,247,14,110,2,30,30,90,0,65,126,0,0,0,0,0,0,137,15,111,2,29,29,95,0,69,126,0,0,0,0,0,0,139,15,112,2,30,30,95,0,87,126,0,0,0,0,0,0,146,15,113,2,28,28,95,0,79,126,0,0,0,0,0,0,144,15,114,2,32,32,95,0,87,0,0,0,0,0,0,0,77,15,115,2,28,28,90,0,106,47,0,0,0,0,0,0,21,15,116,2,31,31,40,0,114,47,50,0,0,0,138,1,119,14,117,3,107,0,0,0,114,50,0,0,16,0,138,0,68,14,118,7,107,0,0,0,97,35,0,0,2,0,0,0,137,7,119,2,28,28,75,0,73,0,0,0,0,0,0,0,149,7,120,2,31,31,65,0,73,50,0,0,2,0,0,0,152,7,121,2,31,31,65,0,79,0,0,0,0,0,0,0,46,15,122,2,32,32,85,0,111,85,0,0,0,0,0,0,212,7,123,2,28,33,110,0,117,58,0,0,0,0,0,0,66,15,124,2,33,33,120,0,87,50,0,0,2,0,0,0,79,15,125,2,28,28,50,0,89,0,0,0,0,0,0,0,81,15,126,2,28,28,85,0,119,47,0,0,0,0,0,0,102,15,127,3,0,0,0,7,110,50,0,0,16,0,4,0,81,16,128,8,0,0,0,0,85,0,0,0,0,0,0,0,59,15,129,2,33,33,90,0,121,34,0,0,0,0,0,0,68,15,130,2,33,33,90,0,69,58,0,0,0,0,0,0,247,14,131,2,30,30,90,0,65,0,0,0,0,0,0,0,231,14,132,2,29,29,90,0,112,50,0,0,8,0,1,0,111,16,133,4,0,0,0,2,116,50,0,0,8,0,4,0,174,16,134,4,0,0,0,2,116,51,0,0,8,0,4,0,189,16,135,4,0,0,0,2,86,0,0,0,0,0,0,0,227,16,136,2,29,28,70,0,122,50,0,0,48,0,4,0,250,16,137,7,0,0,0,0,122,51,0,0,48,0,4,0,5,17,138,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,18,0,0,0,0,0,0,102,114,45,99,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,35,0,117,0,0,0,0,0,0,0,16,17,40,2,33,33,87,0,82,0,0,0,128,0,0,0,31,17,51,3,0,0,0,7,69,0,0,0,0,0,0,0,14,17,110,2,30,30,82,0,69,126,0,0,0,0,0,0,18,17,112,2,30,30,96,0,73,0,0,0,0,0,0,0,20,17,120,2,31,31,79,0,85,0,0,0,0,0,0,0,23,17,129,2,33,33,75,0,121,34,0,0,0,0,0,0,25,17,130,2,33,33,70,0,69,58,0,0,0,0,0,0,27,17,131,2,28,30,115,0,65,0,0,0,0,0,0,0,29,17,132,2,29,29,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,1,0,0,0,0,0,0,104,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,50,0,64,0,0,0,0,0,0,0,41,17,13,2,28,28,65,0,97,0,0,0,0,0,32,0,83,17,35,2,29,29,65,0,101,0,0,0,0,0,0,0,73,17,36,2,30,30,65,0,105,0,0,0,0,0,0,0,65,17,37,2,31,31,115,0,111,0,0,0,0,0,0,0,87,17,39,2,32,32,65,0,116,0,0,0,8,0,3,0,254,4,47,4,0,70,0,2,112,0,0,0,8,0,1,0,43,6,48,4,0,0,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,79,0,2,98,0,0,0,16,0,1,0,184,2,69,5,0,0,0,5,100,0,0,0,16,0,3,0,24,3,70,5,0,47,0,5,74,0,0,0,48,0,7,0,108,3,77,5,0,0,0,5,99,0,0,0,8,2,7,0,32,5,78,4,0,0,0,2,103,0,0,0,16,0,8,0,141,3,79,5,0,49,0,5,118,0,0,0,16,0,2,0,229,3,82,7,0,81,0,6,72,0,0,0,8,0,12,0,243,5,106,6,0,0,0,3,64,47,0,0,0,0,0,0,47,17,107,2,28,28,65,0,86,0,0,0,0,0,0,0,49,17,108,2,28,28,65,0,64,50,0,0,0,0,0,0,55,17,109,2,28,28,65,0,64,51,0,0,0,0,0,0,57,17,110,2,28,28,65,0,64,52,0,0,0,0,0,0,60,17,111,2,28,28,65,0,105,58,0,0,0,0,32,0,62,17,112,2,31,31,115,0,73,0,0,0,0,0,0,0,68,17,113,2,31,31,50,0,101,58,0,0,0,0,32,0,71,17,114,2,30,30,110,0,69,58,0,0,0,0,32,0,75,17,115,2,30,30,110,0,69,0,0,0,0,0,0,0,77,17,116,2,30,30,65,0,38,58,0,0,0,0,32,0,79,17,117,2,29,29,110,0,97,58,0,0,0,0,32,0,81,17,118,2,29,29,115,0,111,58,0,0,0,0,32,0,85,17,119,2,32,32,110,0,79,58,0,0,0,0,32,0,89,17,120,2,32,32,105,0,79,0,0,0,0,0,0,0,91,17,121,2,32,32,65,0,85,0,0,0,0,0,0,0,93,17,122,2,33,33,60,0,117,58,0,0,0,0,32,0,95,17,123,2,33,33,115,0,105,126,0,0,0,0,32,0,97,17,124,2,31,31,110,0,73,126,0,0,0,0,32,0,99,17,125,2,31,31,85,0,101,126,0,0,0,0,32,0,101,17,126,2,30,30,110,0,69,126,0,0,0,0,32,0,103,17,127,2,30,30,115,0,97,126,0,0,0,0,32,0,105,17,128,2,29,29,125,0,86,126,0,0,0,0,32,0,107,17,129,2,28,28,125,0,79,126,0,0,0,0,32,0,109,17,130,2,32,32,115,0,111,126,0,0,0,0,32,0,111,17,131,2,32,32,110,0,85,126,0,0,0,0,0,0,113,17,132,2,33,33,85,0,117,126,0,0,0,0,32,0,115,17,133,2,33,33,115,0,97,73,0,0,0,0,32,0,117,17,134,2,28,31,120,0,97,85,0,0,0,0,32,0,119,17,135,2,29,33,120,0,112,104,0,0,8,0,1,0,62,6,136,4,0,0,0,2,98,104,0,0,16,0,1,0,121,17,137,5,0,136,0,5,116,104,0,0,8,0,3,0,136,17,138,4,0,70,0,2,100,104,0,0,16,0,3,0,149,17,139,5,0,138,0,5,116,46,0,0,8,0,5,0,164,17,140,4,0,141,0,2,100,46,0,0,16,0,5,0,189,17,141,5,0,140,0,5,116,104,46,0,8,0,5,0,176,17,142,4,0,143,0,2,100,104,46,0,16,0,5,0,212,17,143,5,0,142,0,5,99,104,0,0,40,2,7,0,230,17,144,4,0,75,0,2,74,104,0,0,48,0,7,0,235,17,145,5,0,144,0,5,107,104,0,0,8,0,8,0,117,6,146,4,0,147,0,2,103,104,0,0,16,0,3,0,250,17,147,5,0,146,0,5,35,88,50,0,40,0,4,0,15,18,148,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,20,0,0,0,0,0,0,116,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,25,0,64,0,0,0,0,0,0,0,17,18,13,2,28,28,65,0,97,0,0,0,0,0,0,0,19,18,35,2,29,29,65,0,101,0,0,0,0,0,0,0,35,18,36,2,30,30,65,0,105,0,0,0,0,0,0,0,39,18,37,2,31,31,65,0,111,0,0,0,0,0,0,0,47,18,39,2,32,32,65,0,117,0,0,0,0,0,0,0,51,18,40,2,33,33,55,0,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,86,0,0,0,0,0,0,0,22,18,108,2,28,28,65,0,105,58,0,0,0,0,0,0,45,18,112,2,31,31,135,0,101,58,0,0,0,0,0,0,37,18,114,2,30,30,125,0,97,58,0,0,0,0,0,0,33,18,118,2,29,29,150,0,111,58,0,0,0,0,0,0,49,18,119,2,32,32,150,0,85,0,0,0,0,0,0,0,56,18,122,2,33,33,55,0,117,58,0,0,0,0,0,0,60,18,123,2,33,33,140,0,97,73,0,0,0,0,0,0,70,18,134,2,29,31,140,0,97,85,0,0,0,0,0,0,72,18,135,2,29,33,135,0,86,35,0,0,0,0,0,0,29,18,149,2,28,28,65,0,117,50,0,0,0,0,0,0,54,18,150,2,33,33,55,0,85,58,0,0,0,0,0,0,66,18,151,2,33,33,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,20,0,0,0,0,0,0,107,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,74,18,13,2,29,29,65,0,114,0,0,0,0,0,128,0,72,0,34,3,0,0,0,7,97,0,0,0,0,0,32,0,76,18,35,2,28,29,65,0,101,0,0,0,0,0,0,0,82,18,36,2,30,30,65,0,105,0,0,0,0,0,0,0,86,18,37,2,31,31,65,0,111,0,0,0,0,0,0,0,90,18,39,2,32,32,65,0,117,0,0,0,0,0,0,0,94,18,40,2,33,33,55,0,100,0,0,0,16,0,3,0,102,18,70,5,0,72,0,5,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,105,58,0,0,0,0,0,0,88,18,112,2,31,31,135,0,101,58,0,0,0,0,0,0,84,18,114,2,30,30,135,0,97,58,0,0,0,0,0,0,80,18,118,2,29,29,150,0,111,58,0,0,0,0,0,0,92,18,119,2,32,32,150,0,117,58,0,0,0,0,0,0,96,18,123,2,33,33,140,0,97,73,0,0,0,0,32,0,98,18,134,2,29,31,140,0,97,85,0,0,0,0,32,0,100,18,135,2,29,33,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,1,0,0,0,0,0,0,104,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,133,18,37,2,31,31,70,0,111,0,0,0,0,0,0,0,136,18,39,2,32,32,65,0,117,0,0,0,0,0,0,0,138,18,40,2,33,33,65,0,116,0,0,0,8,0,3,0,168,18,47,4,0,70,0,2,112,0,0,0,8,0,1,0,43,6,48,4,0,69,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,79,0,2,108,0,0,0,0,0,0,0,213,18,55,3,0,0,0,7,100,0,0,0,16,0,3,0,186,18,70,5,0,47,0,5,99,0,0,0,40,0,7,0,91,6,78,4,0,77,0,2,65,0,0,0,0,0,0,0,129,18,106,2,32,32,70,0,69,0,0,0,0,0,0,0,131,18,107,2,30,30,70,0,89,0,0,0,0,0,0,0,140,18,108,2,28,28,65,0,121,0,0,0,0,0,0,0,142,18,109,2,33,33,65,0,105,58,0,0,0,0,0,0,144,18,110,2,31,31,110,0,101,58,0,0,0,0,0,0,146,18,111,2,30,30,120,0,97,58,0,0,0,0,0,0,148,18,112,2,29,29,135,0,111,58,0,0,0,0,0,0,150,18,113,2,32,32,130,0,117,58,0,0,0,0,0,0,152,18,114,2,33,33,120,0,121,58,0,0,0,0,0,0,154,18,115,2,33,33,120,0,89,58,0,0,0,0,0,0,156,18,116,2,28,28,130,0,116,115,0,0,40,0,4,0,158,18,117,4,0,0,0,2,100,122,0,0,48,0,4,0,22,6,118,5,0,117,0,5,116,50,0,0,8,0,3,0,181,18,119,4,0,0,0,2,115,50,0,0,40,0,4,0,133,6,120,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,1,0,0,0,0,0,0,108,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,232,18,13,2,28,28,60,0,97,0,0,0,0,0,0,0,248,18,35,2,29,29,60,0,101,0,0,0,0,0,0,0,240,18,36,2,30,30,60,0,105,0,0,0,0,0,0,0,234,18,37,2,31,31,55,0,111,0,0,0,0,0,0,0,1,19,39,2,32,32,60,0,117,0,0,0,0,0,0,0,5,19,40,2,33,33,55,0,116,0,0,0,8,0,68,0,50,19,47,4,0,70,0,2,112,0,0,0,8,0,1,0,63,19,48,4,0,69,0,2,107,0,0,0,8,0,8,0,79,19,49,4,0,79,0,2,82,50,0,0,128,0,0,0,25,19,52,3,0,0,0,6,105,58,0,0,0,0,0,0,237,18,106,2,31,31,150,0,101,58,0,0,0,0,0,0,242,18,107,2,30,30,165,0,38,0,0,0,0,0,0,0,244,18,108,2,29,29,60,0,38,58,0,0,0,0,0,0,246,18,109,2,29,29,165,0,97,35,0,0,0,0,0,0,253,18,110,2,29,29,60,0,97,58,0,0,0,0,0,0,251,18,111,2,29,29,175,0,111,58,0,0,0,0,0,0,3,19,112,2,32,32,165,0,117,58,0,0,0,0,0,0,7,19,113,2,33,33,165,0,97,105,0,0,0,0,32,0,9,19,114,2,29,31,155,0,101,105,0,0,0,0,32,0,11,19,115,2,30,31,150,0,97,117,0,0,0,0,32,0,13,19,116,2,29,33,150,0,117,111,0,0,0,0,32,0,15,19,117,2,33,29,150,0,111,105,0,0,0,0,32,0,17,19,118,2,32,31,145,0,117,105,0,0,0,0,32,0,19,19,119,2,33,31,145,0,105,101,0,0,0,0,32,0,21,19,120,2,31,30,145,0,105,117,0,0,0,0,32,0,23,19,121,2,31,33,145,0,116,115,0,0,40,0,68,0,37,19,122,4,0,0,0,2,115,50,0,0,40,0,4,0,99,19,123,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,1,0,0,0,0,0,0,110,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,109,19,13,2,28,28,62,0,114,0,0,0,128,0,0,0,138,0,34,3,0,0,0,6,105,0,0,0,0,0,0,0,111,19,37,2,31,31,80,0,117,0,0,0,0,0,0,0,122,19,40,2,33,33,75,0,116,0,0,0,8,0,4,0,196,19,47,4,0,70,0,2,112,0,0,0,8,0,1,0,216,19,48,4,0,69,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,0,0,2,98,0,0,0,16,0,1,0,225,19,69,5,0,48,0,5,100,0,0,0,16,0,4,0,205,19,70,5,0,47,0,5,122,0,0,0,40,0,4,0,245,19,86,6,0,86,0,3,115,0,0,0,40,0,4,0,236,19,87,6,0,86,0,3,81,0,0,0,16,0,8,0,169,19,98,7,0,99,0,6,73,0,0,0,0,0,0,0,116,19,106,2,31,31,65,0,121,0,0,0,0,0,0,0,118,19,107,2,33,33,90,0,56,0,0,0,0,0,0,0,120,19,108,2,33,33,70,0,69,0,0,0,0,0,0,0,124,19,109,2,30,30,70,0,69,50,0,0,0,0,0,0,126,19,110,2,30,30,70,0,79,0,0,0,0,0,0,0,129,19,111,2,32,32,70,0,79,58,0,0,0,0,0,0,131,19,112,2,32,32,105,0,97,58,0,0,0,0,0,0,133,19,113,2,29,29,105,0,65,0,0,0,0,0,0,0,143,19,114,2,29,29,80,0,65,126,0,0,0,0,0,0,137,15,115,2,29,29,95,0,79,126,0,0,0,0,0,0,148,19,116,2,32,32,95,0,101,58,0,0,0,0,0,0,150,19,117,2,30,31,95,0,101,35,0,0,0,0,0,0,152,19,118,2,30,31,95,0,89,58,0,0,0,0,0,0,155,19,119,2,28,28,110,0,111,58,0,0,0,0,0,0,157,19,120,2,32,33,100,0,69,73,0,0,0,0,0,0,159,19,121,2,29,31,105,0,87,121,0,0,0,0,0,0,161,19,122,2,28,33,110,0,86,85,0,0,0,0,0,0,163,19,123,2,29,32,110,0,101,85,0,0,0,0,0,0,165,19,124,2,30,33,110,0,121,85,0,0,0,0,0,0,167,19,125,2,33,33,110,0,33,0,0,0,0,0,0,0,193,19,126,0,10,0,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,1,0,0,0,0,0,0,112,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,20,35,2,29,29,95,0,105,0,0,0,0,0,0,0,14,20,37,2,31,31,85,0,117,0,0,0,0,0,0,0,19,20,40,2,33,33,90,0,116,0,0,0,8,0,3,0,43,20,47,4,0,70,0,2,82,0,0,0,128,0,0,0,29,20,51,3,0,0,0,6,119,0,0,0,0,0,0,0,135,20,58,3,0,0,0,7,100,0,0,0,16,0,3,0,69,20,70,5,0,47,0,5,102,0,0,0,8,0,2,0,141,20,81,6,0,82,0,3,97,35,0,0,0,0,0,0,3,20,106,2,29,29,85,0,69,0,0,0,0,0,0,0,7,20,107,2,30,30,90,0,69,35,0,0,0,0,0,0,12,20,108,2,30,30,90,0,79,0,0,0,0,0,0,0,17,20,109,2,32,32,90,0,121,0,0,0,0,0,0,0,21,20,110,2,31,31,90,0,69,126,0,0,0,0,0,0,25,20,111,2,30,33,125,0,79,126,0,0,0,0,0,0,27,20,112,2,32,32,125,0,116,59,0,0,8,2,7,0,56,20,113,4,0,114,0,2,100,59,0,0,16,2,4,0,96,20,114,5,0,113,0,5,116,115,0,0,40,0,4,0,9,6,115,4,0,116,0,2,100,122,0,0,48,0,4,0,123,20,116,5,0,115,0,5,116,115,59,0,40,2,7,0,129,20,117,4,0,118,0,2,100,122,59,0,48,2,6,0,72,3,118,5,0,117,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,26,0,0,0,0,0,0,115,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,165,20,35,2,29,29,60,0,101,0,0,0,0,0,0,0,161,20,36,2,30,30,60,0,105,0,0,0,0,0,0,0,153,20,37,2,31,31,55,0,111,0,0,0,0,0,0,0,169,20,39,2,32,32,60,0,117,0,0,0,0,0,0,0,173,20,40,2,33,33,55,0,114,45,0,0,0,0,0,0,187,20,44,2,28,28,110,0,108,45,0,0,0,0,0,0,229,20,45,2,28,28,70,0,116,0,0,0,8,0,4,0,240,20,47,4,0,70,0,2,112,0,0,0,8,0,1,0,253,20,48,4,0,69,0,2,107,0,0,0,8,0,8,0,251,6,49,4,0,0,0,2,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,119,0,0,0,0,0,0,0,186,6,58,3,0,0,0,7,105,58,0,0,0,0,0,0,156,20,119,2,31,31,130,0,38,0,0,0,0,0,0,0,159,20,120,2,30,30,60,0,101,58,0,0,0,0,0,0,163,20,121,2,30,30,145,0,97,58,0,0,0,0,0,0,167,20,122,2,29,29,145,0,111,58,0,0,0,0,0,0,171,20,123,2,32,32,145,0,117,58,0,0,0,0,0,0,175,20,124,2,33,33,140,0,97,85,0,0,0,0,0,0,177,20,125,2,29,33,135,0,101,85,0,0,0,0,0,0,179,20,126,2,30,33,130,0,111,85,0,0,0,0,0,0,181,20,127,2,32,33,130,0,97,73,0,0,0,0,0,0,183,20,128,2,29,31,135,0,101,73,0,0,0,0,0,0,185,20,129,2,30,31,130,0,114,58,0,0,0,0,0,0,192,20,130,2,28,28,150,0,82,94,0,0,48,0,6,0,198,20,131,7,0,0,0,6,82,94,47,0,48,0,6,0,213,20,132,7,0,0,0,6,108,58,0,0,0,0,0,0,234,20,133,2,28,28,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,27,0,0,0,0,0,0,99,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,13,21,36,2,30,30,60,0,111,0,0,0,0,0,0,0,17,21,39,2,32,32,60,0,97,58,0,0,0,0,0,0,15,21,122,2,29,29,145,0,117,58,0,0,0,0,0,0,19,21,124,2,33,33,140,0,111,85,0,0,0,0,0,0,21,21,127,2,32,33,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,27,0,0,0,0,0,0,104,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,116,21,13,2,28,28,70,0,97,0,0,0,0,0,0,0,120,21,35,2,29,29,80,0,101,0,0,0,0,0,0,0,129,21,36,2,30,30,70,0,105,0,0,0,0,0,0,0,131,21,37,2,31,31,60,0,111,0,0,0,0,0,0,0,138,21,39,2,32,32,70,0,117,0,0,0,0,0,0,0,140,21,40,2,33,33,70,0,116,0,0,0,8,0,3,0,147,21,47,4,0,70,0,2,82,0,0,0,128,0,0,0,120,0,51,3,0,0,0,6,100,0,0,0,16,0,4,0,160,21,70,5,0,47,0,5,100,90,0,0,48,0,6,0,75,21,73,5,0,74,0,5,116,83,0,0,40,0,6,0,36,21,74,4,0,73,0,2,100,90,59,0,48,2,6,0,96,21,75,5,0,76,0,5,116,83,59,0,40,2,7,0,45,21,76,4,0,75,0,2,90,0,0,0,48,0,6,0,57,21,88,7,0,89,0,6,83,0,0,0,40,0,6,0,23,21,89,6,0,88,0,3,120,0,0,0,8,0,8,0,187,21,99,6,0,98,0,3,69,0,0,0,0,0,0,0,127,21,107,2,30,30,70,0,38,0,0,0,0,0,0,0,125,21,120,2,29,29,70,0,97,73,0,0,0,0,0,0,145,21,128,2,29,31,125,0,64,50,0,0,0,0,0,0,118,21,134,2,28,28,70,0,65,0,0,0,0,0,0,0,123,21,135,2,29,29,80,0,73,0,0,0,0,0,0,0,135,21,136,2,31,31,60,0,85,0,0,0,0,0,0,0,143,21,137,2,33,33,70,0,114,42,0,0,2,0,16,0,197,21,138,2,28,28,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,0,0,0,0,0,0,109,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,90,59,0,48,2,7,0,212,21,75,5,0,76,0,5,107,94,0,0,8,0,7,0,202,21,139,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,0,0,0,0,0,0,115,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,8,0,3,0,253,21,47,4,0,70,0,2,100,0,0,0,16,0,4,0,10,22,70,5,0,47,0,5,100,90,0,0,48,0,6,0,52,22,73,5,0,74,0,5,116,83,0,0,40,0,6,0,81,22,74,4,0,73,0,2,100,90,59,0,48,2,6,0,67,22,75,5,0,76,0,5,116,83,59,0,40,2,7,0,87,22,76,4,0,75,0,2,90,0,0,0,48,0,6,0,96,22,88,7,0,89,0,6,83,0,0,0,40,0,6,0,114,22,89,6,0,88,0,3,120,0,0,0,8,0,8,0,31,22,99,6,0,0,0,3,104,0,0,0,8,0,8,0,40,22,105,6,0,0,0,3,38,0,0,0,0,0,0,0,235,21,120,2,29,29,70,0,73,0,0,0,0,0,0,0,232,21,136,2,31,31,60,0,114,42,0,0,128,0,0,0,239,21,138,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,3,0,0,0,0,0,0,105,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,25,0,97,0,0,0,0,0,0,0,127,22,35,2,29,29,90,0,101,0,0,0,0,0,0,0,132,22,36,2,30,30,85,0,105,0,0,0,0,0,0,0,145,22,37,2,31,31,70,0,111,0,0,0,0,0,0,0,154,22,39,2,32,32,85,0,117,0,0,0,0,0,0,0,167,22,40,2,33,33,80,0,108,94,0,0,0,0,0,0,56,1,61,3,0,0,70,7,97,47,0,0,0,0,0,0,130,22,106,2,28,28,90,0,69,0,0,0,0,0,0,0,142,22,107,2,30,30,85,0,79,0,0,0,0,0,0,0,164,22,108,2,32,32,85,0,85,0,0,0,0,0,0,0,170,22,109,2,33,33,80,0,97,85,0,0,0,0,0,0,172,22,112,2,29,32,135,0,97,73,0,0,0,0,0,0,174,22,115,2,29,31,125,0,111,73,0,0,0,0,0,0,176,22,118,2,32,31,115,0,101,47,0,0,0,0,0,0,135,22,122,2,30,30,85,0,105,35,0,0,0,0,0,0,148,22,123,2,31,31,70,0,73,0,0,0,0,0,0,0,151,22,124,2,31,31,75,0,111,47,0,0,0,0,0,0,157,22,125,2,32,32,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,1,0,0,0,0,0,0,108,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,178,22,35,2,29,29,85,0,112,0,0,0,8,0,1,0,43,6,48,4,0,69,0,2,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,69,0,0,0,0,0,0,0,180,22,106,2,30,30,85,0,73,0,0,0,0,0,0,0,182,22,107,2,31,31,75,0,79,0,0,0,0,0,0,0,185,22,108,2,32,32,80,0,85,0,0,0,0,0,0,0,187,22,109,2,33,33,80,0,97,58,0,0,0,0,0,0,189,22,110,2,29,29,135,0,101,58,0,0,0,0,0,0,191,22,111,2,30,30,130,0,105,58,0,0,0,0,0,0,193,22,112,2,31,31,120,0,111,58,0,0,0,0,0,0,195,22,113,2,32,32,125,0,117,58,0,0,0,0,0,0,197,22,114,2,33,33,125,0,121,0,0,0,0,0,0,0,199,22,115,2,31,31,75,0,121,58,0,0,0,0,0,0,201,22,116,2,31,31,125,0,97,85,0,0,0,0,0,0,203,22,117,2,29,33,135,0,97,73,0,0,0,0,0,0,205,22,118,2,29,31,135,0,101,73,0,0,0,0,0,0,207,22,119,2,30,31,135,0,69,85,0,0,0,0,0,0,209,22,120,2,30,33,135,0,79,73,0,0,0,0,0,0,211,22,121,2,32,31,125,0,60,104,62,0,8,0,12,0,213,22,122,6,0,0,25,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,3,0,0,0,0,0,0,101,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,235,22,36,2,30,30,85,0,98,0,0,0,16,0,1,0,26,23,69,5,0,0,0,0,100,0,0,0,16,0,3,0,14,23,70,5,0,0,0,0,103,0,0,0,16,0,8,0,241,22,79,5,0,49,0,5,118,35,0,0,16,0,2,0,64,23,83,7,0,81,0,6,68,0,0,0,16,0,3,0,37,23,84,7,0,85,0,6,115,0,0,0,40,0,4,0,46,23,87,6,0,86,0,3,69,0,0,0,0,0,0,0,237,22,107,2,30,30,90,0,79,0,0,0,0,0,0,0,239,22,108,2,32,32,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,34,0,0,0,0,0,0,101,115,45,108,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,0,0,0,0,0,0,99,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,84,23,35,2,29,29,90,0,101,0,0,0,0,0,0,0,91,23,36,2,30,30,85,0,111,0,0,0,0,0,0,0,102,23,39,2,32,32,85,0,117,0,0,0,0,0,0,0,107,23,40,2,33,33,80,0,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,69,0,0,0,0,0,0,0,94,23,107,2,30,30,90,0,79,0,0,0,0,0,0,0,99,23,108,2,32,32,85,0,85,0,0,0,2,0,0,0,105,23,109,2,33,33,80,0,97,35,0,0,2,0,0,0,87,23,122,2,28,28,85,0,69,50,0,0,0,0,0,0,97,23,123,2,30,30,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,3,0,0,0,0,0,0,112,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,16,0,4,0,201,23,16,5,0,0,0,6,101,0,0,0,0,0,0,0,150,23,36,2,30,30,80,0,117,0,0,0,0,0,0,0,162,23,40,2,33,33,80,0,114,45,0,0,0,0,128,0,79,7,44,3,0,0,0,0,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,120,0,0,0,128,0,0,0,182,23,99,3,0,0,0,6,69,0,0,0,0,0,0,0,148,23,107,2,30,30,85,0,79,0,0,0,0,0,0,0,160,23,108,2,32,32,85,0,85,0,0,0,0,0,0,0,164,23,109,2,33,33,70,0,121,0,0,0,0,0,0,0,152,23,110,2,31,31,55,0,101,85,0,0,0,0,0,0,178,23,113,2,30,33,115,0,97,73,0,0,0,0,0,0,169,23,115,2,29,31,115,0,101,73,0,0,0,0,0,0,172,23,116,2,30,31,105,0,73,0,0,0,2,0,0,0,110,23,122,2,31,31,45,0,101,126,0,0,0,0,0,0,112,23,123,2,30,30,120,0,105,126,0,0,0,0,0,0,114,23,124,2,31,31,120,0,111,126,0,0,0,0,0,0,117,23,125,2,32,32,120,0,117,126,0,0,0,0,0,0,119,23,126,2,33,33,90,0,38,126,0,0,0,0,0,0,121,23,127,2,28,28,90,0,38,85,126,0,0,0,0,0,126,23,128,2,28,33,120,0,111,73,126,0,0,0,0,0,133,23,129,2,32,31,130,0,38,0,0,0,0,0,0,0,140,23,130,2,28,28,90,0,38,47,0,0,0,0,0,0,142,23,131,2,28,28,90,0,65,0,0,0,0,0,0,0,146,23,132,2,29,29,100,0,105,47,0,0,0,0,0,0,155,23,133,2,31,31,75,0,79,73,0,0,0,0,0,0,175,23,134,2,32,31,115,0,69,85,0,0,0,0,0,0,180,23,135,2,30,33,115,0,115,35,0,0,40,0,4,0,196,23,136,6,0,86,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,37,0,0,0,0,0,0,112,116,45,112,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,228,23,35,2,29,29,90,0,101,0,0,0,0,0,0,0,246,23,36,2,30,30,80,0,105,0,0,0,0,0,0,0,253,23,37,2,31,31,75,0,111,0,0,0,0,0,0,0,9,24,39,2,32,32,85,0,117,0,0,0,0,0,0,0,12,24,40,2,33,33,80,0,82,0,0,0,0,0,128,0,72,0,51,3,0,0,0,7,119,0,0,0,0,0,0,0,186,6,58,3,0,0,0,7,120,0,0,0,128,0,0,0,20,24,99,3,0,0,0,7,69,0,0,0,0,0,0,0,243,23,107,2,30,30,85,0,79,0,0,0,0,0,0,0,7,24,108,2,32,32,85,0,85,0,0,0,0,0,0,0,14,24,109,2,33,33,55,0,121,0,0,0,0,0,0,0,249,23,110,2,28,28,55,0,38,126,0,0,0,0,0,0,231,23,127,2,30,28,120,0,38,85,126,0,0,0,0,0,236,23,128,2,28,33,120,0,38,0,0,0,2,0,0,0,218,23,130,2,28,28,90,0,38,47,0,0,0,0,0,0,222,23,131,2,28,28,90,0,105,47,0,0,0,0,0,0,0,24,133,2,31,31,50,0,69,85,0,0,0,0,0,0,18,24,135,2,30,33,110,0,115,35,0,0,40,0,6,0,32,24,136,6,0,88,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,3,0,0,0,0,0,0,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,66,24,13,2,28,28,85,0,114,0,0,0,128,0,0,0,94,24,34,3,0,0,0,7,97,0,0,0,0,0,0,0,64,24,35,2,29,29,90,0,101,0,0,0,0,0,0,0,58,24,36,2,30,30,90,0,111,0,0,0,0,0,0,0,68,24,39,2,32,32,85,0,117,0,0,0,0,0,0,0,70,24,40,2,33,33,80,0,122,59,0,0,48,0,4,0,249,24,92,7,0,93,0,6,115,59,0,0,40,0,4,0,168,24,93,6,0,92,0,3,90,59,0,0,48,0,6,0,7,25,94,7,0,95,0,6,83,59,0,0,40,0,6,0,178,24,95,6,0,94,0,3,121,0,0,0,0,0,0,0,60,24,110,2,28,28,90,0,89,0,0,0,0,0,0,0,72,24,111,2,28,28,90,0,73,94,0,0,2,0,0,0,37,24,122,2,31,31,35,0,108,59,0,0,0,0,0,0,119,24,123,3,0,0,0,7,109,59,0,0,16,0,1,0,126,24,124,8,0,0,0,4,110,59,0,0,16,0,4,0,133,24,125,8,0,0,0,4,105,47,0,0,0,0,0,0,54,24,126,2,31,31,75,0,64,73,0,0,0,0,0,0,74,24,127,2,28,31,125,0,64,85,0,0,0,0,0,0,76,24,128,2,28,33,130,0,111,85,0,0,0,0,0,0,78,24,129,2,32,33,130,0,105,73,0,0,0,0,0,0,80,24,130,2,31,31,125,0,121,73,0,0,0,0,0,0,82,24,131,2,28,31,105,0,121,85,0,0,0,0,0,0,84,24,132,2,28,33,115,0,101,97,0,0,0,0,0,0,86,24,133,2,30,29,125,0,101,111,0,0,0,0,0,0,88,24,134,2,30,32,135,0,101,91,117,0,0,0,0,0,90,24,135,2,30,33,125,0,79,97,0,0,0,0,0,0,92,24,136,2,32,29,125,0,112,59,0,0,8,0,1,0,140,24,137,4,0,69,0,2,116,59,0,0,8,0,3,0,147,24,138,4,0,70,0,2,116,115,59,0,40,0,4,0,154,24,139,4,0,0,0,2,102,59,0,0,8,0,2,0,161,24,140,6,0,82,0,3,98,59,0,0,16,0,1,0,188,24,141,5,0,137,0,5,100,59,0,0,16,0,3,0,202,24,142,5,0,138,0,5,42,59,0,0,16,0,4,0,213,24,143,5,0,0,0,2,118,59,0,0,16,0,2,0,231,24,144,7,0,140,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,3,0,0,0,0,0,0,101,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,128,0,0,0,138,0,34,3,0,0,0,6,97,0,0,0,0,0,0,0,25,25,35,2,29,29,90,0,101,0,0,0,0,0,0,0,34,25,36,2,30,30,90,0,105,0,0,0,0,0,0,0,36,25,37,2,31,31,70,0,111,0,0,0,0,0,0,0,39,25,39,2,32,32,90,0,116,0,0,0,8,0,4,0,41,25,47,4,0,70,0,2,107,0,0,0,8,0,8,0,54,25,49,4,0,79,0,2,100,0,0,0,16,0,4,0,3,3,70,5,0,47,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,3,0,0,0,0,0,0,103,114,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,50,0,101,0,0,0,0,0,0,0,75,25,36,2,30,30,70,0,111,0,0,0,0,0,0,0,79,25,39,2,32,32,70,0,102,0,0,0,8,0,1,0,91,25,81,4,0,0,0,2,69,0,0,0,0,0,0,0,77,25,107,2,30,30,75,0,79,0,0,0,0,0,0,0,81,25,108,2,32,32,75,0,121,0,0,0,0,0,0,0,73,25,110,2,31,31,80,0,69,85,0,0,0,0,0,0,83,25,122,2,30,33,115,0,79,73,0,0,0,0,0,0,85,25,123,2,32,31,115,0,79,85,0,0,0,0,0,0,87,25,124,2,32,33,115,0,121,73,0,0,0,0,0,0,89,25,125,2,31,31,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,1,0,0,0,0,0,0,115,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,134,25,35,2,29,29,70,0,105,58,0,0,0,0,0,0,97,25,106,2,31,31,90,0,73,0,0,0,0,0,0,0,103,25,107,2,31,31,65,0,101,58,0,0,0,0,0,0,106,25,108,2,30,30,105,0,69,0,0,0,0,0,0,0,108,25,109,2,30,30,70,0,69,45,0,0,2,0,0,0,116,25,110,2,28,28,70,0,69,58,0,0,0,0,0,0,111,25,111,2,30,28,110,0,69,51,0,0,0,0,0,0,113,25,112,2,30,30,70,0,121,58,0,0,0,0,0,0,120,25,113,2,33,33,110,0,121,0,0,0,0,0,0,0,122,25,114,2,33,33,70,0,117,45,0,0,0,0,0,0,124,25,115,2,33,33,100,0,89,58,0,0,0,0,0,0,128,25,116,2,28,28,110,0,87,0,0,0,0,0,0,0,130,25,117,2,28,28,70,0,56,0,0,0,0,0,0,0,132,25,118,2,33,33,70,0,38,0,0,0,0,0,0,0,140,25,119,2,29,29,70,0,65,58,0,0,0,0,0,0,142,25,120,2,29,29,125,0,79,0,0,0,0,0,0,0,144,25,121,2,32,32,70,0,111,58,0,0,0,0,0,0,146,25,122,2,32,32,105,0,85,0,0,0,0,0,0,0,148,25,123,2,33,33,70,0,117,58,0,0,0,0,0,0,150,25,124,2,33,33,105,0,115,120,0,0,8,0,8,0,152,25,125,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,1,0,0,0,0,0,0,110,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,162,25,13,2,28,28,60,0,97,0,0,0,0,0,0,0,190,25,35,2,29,29,60,0,97,35,0,0,2,0,0,0,164,25,106,2,28,29,60,0,73,0,0,0,0,0,0,0,166,25,107,2,31,31,50,0,105,58,0,0,0,0,0,0,169,25,108,2,31,31,115,0,121,0,0,0,0,0,0,0,175,25,109,2,33,33,60,0,121,58,0,0,0,0,0,0,177,25,110,2,33,33,130,0,87,0,0,0,0,0,0,0,179,25,111,2,28,28,60,0,89,58,0,0,0,0,0,0,181,25,112,2,28,28,130,0,69,0,0,0,0,0,0,0,183,25,113,2,30,30,60,0,69,58,0,0,0,0,0,0,186,25,114,2,30,30,135,0,101,58,0,0,0,0,0,0,188,25,115,2,30,30,125,0,97,58,0,0,0,0,0,0,192,25,116,2,29,29,135,0,65,0,0,0,0,0,0,0,194,25,117,2,29,29,65,0,65,58,0,0,0,0,0,0,196,25,118,2,29,29,140,0,79,0,0,0,0,0,0,0,198,25,119,2,32,32,60,0,111,58,0,0,0,0,0,0,200,25,120,2,32,32,135,0,85,0,0,0,0,0,0,0,202,25,121,2,33,33,60,0,117,58,0,0,0,0,0,0,204,25,122,2,33,33,120,0,117,45,0,0,0,0,0,0,206,25,123,2,33,33,60,0,117,45,58,0,0,0,0,0,210,25,124,2,33,33,130,0,65,73,0,0,0,0,0,0,215,25,125,2,29,31,135,0,97,73,0,0,0,0,0,0,218,25,126,2,29,31,135,0,79,73,0,0,0,0,0,0,221,25,127,2,32,31,135,0,117,45,73,0,0,0,0,0,224,25,128,2,33,31,135,0,89,121,0,0,0,0,0,0,230,25,129,2,28,33,135,0,97,85,0,0,0,0,0,0,232,25,130,2,29,33,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,1,0,0,0,0,0,0,105,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,55,0,97,0,0,0,0,0,0,0,252,25,35,2,28,28,65,0,105,0,0,0,0,0,0,0,234,25,37,2,31,31,65,0,117,0,0,0,0,0,0,0,6,26,40,2,33,33,65,0,98,0,0,0,8,0,1,0,133,26,69,4,0,0,0,5,100,0,0,0,8,0,4,0,143,26,70,4,0,0,0,5,103,0,0,0,8,0,8,0,156,26,79,4,0,0,0,5,118,0,0,0,16,0,2,0,229,3,82,7,0,81,0,6,108,35,0,0,8,0,4,0,110,26,103,6,0,0,0,3,105,58,0,0,0,0,0,0,237,25,106,2,31,31,115,0,73,0,0,0,0,0,0,0,241,25,107,2,31,31,65,0,73,58,0,0,0,0,0,0,244,25,108,2,31,31,115,0,69,0,0,0,0,0,0,0,248,25,109,2,30,30,65,0,69,58,0,0,0,0,0,0,250,25,110,2,30,30,65,0,97,58,0,0,0,0,0,0,254,25,111,2,29,29,115,0,79,0,0,0,0,0,0,0,1,26,112,2,32,32,65,0,79,58,0,0,0,0,0,0,3,26,113,2,32,32,115,0,117,58,0,0,0,0,0,0,8,26,114,2,33,33,115,0,121,0,0,0,0,0,0,0,11,26,115,2,28,28,65,0,121,58,0,0,0,0,0,0,13,26,116,2,31,31,115,0,87,0,0,0,0,0,0,0,16,26,117,2,28,28,65,0,87,58,0,0,0,0,0,0,18,26,118,2,28,28,65,0,97,73,0,0,0,0,0,0,21,26,119,2,29,31,85,0,97,73,58,0,0,0,0,0,23,26,120,2,29,31,115,0,101,73,0,0,0,0,0,0,26,26,121,2,30,31,85,0,101,73,58,0,0,0,0,0,28,26,122,2,30,31,115,0,97,85,0,0,0,0,0,0,31,26,123,2,29,33,85,0,97,85,58,0,0,0,0,0,33,26,124,2,29,33,115,0,111,85,0,0,0,0,0,0,36,26,125,2,32,33,85,0,111,85,58,0,0,0,0,0,38,26,126,2,32,33,115,0,89,121,0,0,0,0,0,0,41,26,127,2,28,31,75,0,89,121,58,0,0,0,0,0,43,26,128,2,28,31,110,0,79,73,0,0,0,0,0,0,46,26,129,2,32,31,105,0,121,73,0,0,0,0,0,0,48,26,130,2,31,31,90,0,109,35,0,0,16,0,1,0,50,26,131,8,0,0,0,6,110,35,0,0,16,0,4,0,58,26,132,8,0,0,0,6,110,94,35,0,16,2,7,0,79,26,133,8,0,0,0,6,78,35,0,0,16,0,8,0,88,26,134,8,0,0,0,6,116,108,35,0,8,0,4,0,114,26,135,4,0,0,0,2,114,35,0,0,0,0,0,0,127,26,136,3,0,0,0,2,115,50,0,0,40,0,4,0,133,6,137,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,1,0,0,0,0,0,0,114,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,192,0,132,0,2,27,34,3,0,0,40,0,97,0,0,0,0,0,0,0,198,27,35,2,29,29,50,0,101,0,0,0,0,0,0,0,151,27,36,2,30,30,50,0,105,0,0,0,0,0,0,0,57,27,37,2,31,31,90,0,111,0,0,0,0,0,0,0,133,27,39,2,32,32,50,0,117,0,0,0,0,0,0,0,142,27,40,2,33,33,40,0,116,0,0,0,8,0,3,0,43,20,47,4,0,0,0,2,112,0,0,0,8,0,1,0,43,6,48,4,0,0,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,0,0,2,108,0,0,0,0,0,5,0,200,26,55,3,0,0,20,7,108,94,0,0,0,2,5,0,204,26,61,3,0,0,40,0,100,0,0,0,16,0,3,0,69,20,70,5,0,0,0,5,100,90,59,0,48,2,7,0,10,27,75,5,0,76,0,5,116,83,59,0,40,2,7,0,24,27,76,4,0,75,0,2,103,0,0,0,16,0,8,2,169,26,79,5,0,49,0,5,115,0,0,0,40,0,4,0,208,26,87,6,0,0,0,3,115,59,0,0,40,0,4,0,116,5,93,6,0,0,0,3,120,0,0,0,8,0,8,0,190,26,99,6,0,0,0,3,110,95,0,0,16,0,4,0,214,1,106,8,0,0,0,4,110,35,0,0,16,2,7,0,218,26,107,8,0,0,0,4,116,115,0,0,40,0,4,0,9,6,108,4,0,0,0,2,116,59,0,0,8,2,7,0,56,20,109,4,0,0,0,2,100,59,0,0,16,2,4,0,96,20,110,5,0,0,0,5,109,59,0,0,16,0,1,0,30,27,111,8,0,0,0,4,73,94,0,0,2,0,16,0,50,27,112,2,31,31,35,0,121,0,0,0,0,0,0,0,68,27,113,2,31,31,50,0,73,35,0,0,0,0,0,0,62,27,114,2,31,31,40,0,73,0,0,0,0,0,0,0,70,27,115,2,31,31,40,0,73,50,0,0,0,0,0,0,79,27,116,2,31,31,40,0,73,51,0,0,0,0,0,0,85,27,117,2,31,31,40,0,106,97,0,0,0,0,0,0,168,27,118,2,31,29,90,0,69,0,0,0,0,0,0,0,96,27,119,2,30,30,50,0,69,35,0,0,0,0,0,0,98,27,120,2,30,30,50,0,69,50,0,0,0,0,0,0,107,27,121,2,30,30,40,0,69,51,0,0,0,0,0,0,123,27,122,2,30,30,40,0,69,37,0,0,0,0,0,0,131,27,123,2,0,0,90,0,86,0,0,0,2,0,0,0,217,27,124,2,29,28,40,0,79,0,0,0,0,0,0,0,136,27,125,2,32,32,40,0,56,0,0,0,0,0,0,0,148,27,126,2,32,32,50,0,117,35,0,0,0,0,0,0,144,27,127,2,33,33,40,0,117,34,0,0,0,0,0,0,146,27,128,2,33,33,75,0,106,117,0,0,0,0,0,0,166,27,129,2,33,33,95,0,106,97,35,0,0,0,0,0,176,27,130,2,31,29,90,0,86,35,0,0,2,0,0,0,183,27,131,2,29,28,40,0,65,0,0,0,0,0,0,0,196,27,132,2,29,29,50,0,89,0,0,0,2,0,0,0,194,27,133,2,33,33,70,0,97,35,0,0,0,0,0,0,228,27,134,2,29,29,50,0,82,52,0,0,0,0,0,0,230,27,135,3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,1,0,0,0,0,0,0,118,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,33,28,13,2,28,29,65,0,49,0,0,0,0,0,0,0,242,27,17,1,28,32,0,0,97,0,0,0,0,0,0,0,11,28,35,2,28,28,65,0,101,0,0,0,0,0,0,0,17,28,36,2,30,30,100,0,105,0,0,0,0,0,0,0,19,28,37,2,31,31,95,0,111,0,0,0,0,0,0,0,27,28,39,2,32,32,100,0,117,0,0,0,0,0,0,0,29,28,40,2,33,33,100,0,108,0,0,0,0,0,0,0,87,28,55,3,0,0,0,7,50,0,0,0,0,0,0,0,245,27,106,1,8,20,0,0,51,0,0,0,0,0,0,0,248,27,107,1,25,50,0,0,52,0,0,0,0,0,0,0,251,27,108,1,5,30,0,0,53,0,0,0,0,0,0,0,254,27,109,1,28,58,0,0,54,0,0,0,0,0,0,0,3,28,110,1,20,40,37,0,55,0,0,0,0,0,0,0,8,28,111,1,20,40,0,0,97,58,0,0,0,0,0,0,13,28,112,2,29,29,140,0,69,0,0,0,0,0,0,0,15,28,113,2,30,30,100,0,79,0,0,0,0,0,0,0,25,28,114,2,32,32,100,0,121,0,0,0,0,0,0,0,31,28,115,2,33,33,100,0,64,58,0,0,0,0,0,0,35,28,116,2,28,28,140,0,97,73,0,0,0,0,0,0,37,28,117,2,29,31,125,0,97,58,73,0,0,0,0,0,39,28,118,2,29,31,125,0,64,73,0,0,0,0,0,0,41,28,119,2,28,31,125,0,64,58,73,0,0,0,0,0,43,28,120,2,28,31,125,0,101,73,0,0,0,0,0,0,45,28,121,2,30,31,100,0,69,73,0,0,0,0,0,0,47,28,122,2,30,31,100,0,79,73,0,0,0,0,0,0,49,28,123,2,32,31,100,0,111,73,0,0,0,0,0,0,51,28,124,2,32,31,100,0,117,73,0,0,0,0,0,0,53,28,125,2,33,31,100,0,121,73,0,0,0,0,0,0,55,28,126,2,33,31,100,0,97,85,0,0,0,0,0,0,57,28,127,2,29,33,105,0,97,58,85,0,0,0,0,0,59,28,128,2,29,33,135,0,101,85,0,0,0,0,0,0,61,28,129,2,30,33,100,0,69,85,0,0,0,0,0,0,63,28,130,2,30,33,100,0,105,85,0,0,0,0,0,0,65,28,131,2,31,33,100,0,64,85,0,0,0,0,0,0,67,28,132,2,28,33,100,0,64,58,85,0,0,0,0,0,69,28,133,2,28,33,135,0,105,64,0,0,0,0,0,0,71,28,134,2,31,28,120,0,121,64,0,0,0,0,0,0,73,28,135,2,31,28,100,0,117,64,0,0,0,0,0,0,75,28,136,2,33,28,100,0,107,104,0,0,8,0,8,0,77,28,137,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,1,0,0,0,0,0,0,122,104,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,93,28,17,1,50,50,0,0,97,0,0,0,0,0,0,0,195,28,35,2,28,28,75,0,101,0,0,0,0,0,0,0,201,28,36,2,30,30,110,0,105,0,0,0,0,0,0,0,209,28,37,2,31,31,95,0,111,0,0,0,0,0,0,0,226,28,39,2,32,32,85,0,117,0,0,0,0,0,0,0,236,28,40,2,33,33,85,0,116,0,0,0,8,0,4,0,172,28,47,4,0,0,0,2,112,0,0,0,8,0,1,0,159,28,48,4,0,0,0,2,107,0,0,0,8,0,8,0,133,28,49,4,0,0,0,2,99,0,0,0,40,0,6,0,124,28,78,4,0,0,0,2,122,0,0,0,40,0,4,0,114,28,86,4,0,0,0,2,50,0,0,0,0,0,0,0,96,28,106,1,30,50,0,0,51,0,0,0,0,0,0,0,99,28,107,1,30,30,0,0,52,0,0,0,0,0,0,0,102,28,108,1,10,20,0,0,53,0,0,0,0,0,0,0,105,28,109,1,10,30,0,0,54,0,0,0,0,0,0,0,108,28,110,1,20,20,0,0,55,0,0,0,0,0,0,0,111,28,111,1,30,50,0,0,97,97,0,0,0,0,0,0,185,28,112,2,29,29,115,0,97,97,105,0,0,0,0,0,187,28,113,2,29,31,135,0,97,97,117,0,0,0,0,0,189,28,114,2,29,33,130,0,97,110,103,0,0,0,0,0,191,28,115,2,29,29,110,0,97,97,110,103,0,0,0,0,193,28,116,2,29,29,135,0,97,105,0,0,0,0,0,0,197,28,117,2,28,31,100,0,97,117,0,0,0,0,0,0,199,28,118,2,29,33,100,0,101,105,0,0,0,0,0,0,203,28,119,2,30,31,110,0,101,110,103,0,0,0,0,0,205,28,120,2,30,30,110,0,101,117,0,0,0,0,0,0,207,28,121,2,30,33,130,0,105,110,103,0,0,0,0,0,218,28,122,2,31,31,110,0,105,117,0,0,0,0,0,0,220,28,123,2,31,33,100,0,110,103,0,0,0,0,0,0,222,28,124,2,0,0,175,0,111,101,110,103,0,0,0,0,228,28,125,2,32,30,140,0,111,105,0,0,0,0,0,0,230,28,126,2,32,31,100,0,111,117,0,0,0,0,0,0,232,28,127,2,32,33,100,0,111,110,103,0,0,0,0,0,234,28,128,2,32,32,110,0,117,110,103,0,0,0,0,0,242,28,129,2,33,33,100,0,117,105,0,0,0,0,0,0,244,28,130,2,33,31,110,0,111,101,0,0,0,0,0,0,246,28,131,2,28,28,115,0,101,111,0,0,0,0,0,0,248,28,132,2,28,28,85,0,101,111,105,0,0,0,0,0,250,28,133,2,28,31,110,0,121,117,0,0,0,0,0,0,252,28,134,2,33,33,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,1,0,0,0,0,0,0,122,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,12,30,13,2,28,28,100,0,97,0,0,0,0,0,0,0,254,29,35,2,29,29,125,0,105,0,0,0,0,0,0,0,23,30,37,2,31,31,125,0,111,0,0,0,0,0,0,0,45,30,39,2,32,32,125,0,117,0,0,0,0,0,0,0,56,30,40,2,33,33,125,0,78,45,0,0,0,0,0,0,252,29,43,2,66,66,125,0,116,0,0,0,8,0,4,0,133,29,47,4,0,0,0,2,112,0,0,0,8,0,1,0,107,29,48,4,0,0,0,2,107,0,0,0,8,0,10,0,153,29,49,4,0,0,0,2,110,0,0,0,16,0,4,0,28,29,50,8,0,0,0,2,108,0,0,0,0,0,0,0,74,29,55,3,0,0,0,2,106,0,0,0,0,2,0,0,81,29,57,3,0,0,0,1,78,0,0,0,16,0,8,0,50,29,66,8,0,0,0,7,116,83,59,0,40,2,7,0,173,29,76,4,0,0,0,2,102,0,0,0,8,0,2,0,127,29,81,6,0,0,0,2,115,46,0,0,40,0,6,0,199,29,91,6,0,0,0,3,83,59,0,0,40,0,6,0,191,29,95,6,0,0,0,2,49,49,0,0,0,0,0,0,254,28,106,1,9,12,0,0,50,49,0,0,0,0,0,0,1,29,107,1,10,20,0,0,50,49,52,0,0,0,0,0,4,29,108,1,18,42,0,0,50,50,0,0,0,0,0,0,7,29,109,1,20,22,0,0,51,51,0,0,0,0,0,0,10,29,110,1,30,32,0,0,51,53,0,0,0,0,0,0,13,29,111,1,30,50,0,0,52,52,0,0,0,0,0,0,16,29,112,1,38,41,0,0,53,49,0,0,0,0,0,0,19,29,113,1,10,50,0,0,53,51,0,0,0,0,0,0,22,29,114,1,30,50,0,0,53,53,0,0,0,0,0,0,25,29,115,1,50,55,0,0,112,104,0,0,8,0,1,0,117,29,116,4,0,0,0,2,116,104,0,0,8,0,4,0,143,29,117,4,0,0,0,2,107,104,0,0,8,0,10,0,163,29,118,4,0,0,0,2,116,83,59,104,40,2,7,0,182,29,119,4,0,0,0,2,116,115,0,0,40,0,4,0,212,29,120,4,0,0,0,2,116,115,104,0,40,0,4,0,222,29,121,4,0,0,0,2,116,115,46,0,40,0,6,0,232,29,122,6,0,0,0,3,116,115,46,104,40,0,6,0,242,29,123,6,0,0,0,3,65,0,0,0,0,0,0,0,3,30,124,2,29,29,125,0,97,105,0,0,0,0,0,0,8,30,125,2,29,31,125,0,65,117,0,0,0,0,0,0,10,30,126,2,29,33,125,0,64,114,0,0,0,0,0,0,17,30,127,2,28,28,175,0,69,0,0,0,0,0,0,0,19,30,128,2,30,30,125,0,101,105,0,0,0,0,0,0,21,30,129,2,30,31,125,0,105,91,0,0,0,0,0,0,31,30,130,2,31,31,125,0,105,46,0,0,0,0,0,0,33,30,131,2,31,31,125,0,105,65,0,0,0,0,0,0,35,30,132,2,31,29,125,0,105,65,117,0,0,0,0,0,37,30,133,2,31,33,125,0,105,69,0,0,0,0,0,0,39,30,134,2,31,30,125,0,105,111,0,0,0,0,0,0,41,30,135,2,31,32,125,0,105,111,117,0,0,0,0,0,43,30,136,2,31,33,125,0,111,45,0,0,0,0,0,0,50,30,137,2,32,32,125,0,111,117,0,0,0,0,0,0,52,30,138,2,32,33,125,0,111,110,103,0,0,0,0,0,54,30,139,2,32,32,250,0,117,65,0,0,0,0,0,0,61,30,140,2,33,29,125,0,117,97,0,0,0,0,0,0,63,30,141,2,33,29,125,0,117,97,105,0,0,0,0,0,65,30,142,2,33,31,125,0,117,64,0,0,0,0,0,0,67,30,143,2,33,28,115,0,117,101,105,0,0,0,0,0,69,30,144,2,33,31,125,0,117,111,0,0,0,0,0,0,71,30,145,2,33,32,140,0,121,0,0,0,0,0,0,0,73,30,146,2,31,33,125,0,121,117,0,0,0,0,0,0,78,30,147,2,31,33,125,0,121,38,0,0,0,0,0,0,80,30,148,2,31,30,125,0,121,69,0,0,0,0,0,0,82,30,149,2,31,30,125,0,121,64,0,0,0,0,0,0,84,30,150,2,31,28,125,0,121,105,0,0,0,0,0,0,86,30,151,2,31,31,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,1,0,0,0,0,0,0,115,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,94,30,35,2,29,29,90,0,101,0,0,0,0,0,0,0,90,30,36,2,30,30,90,0,105,0,0,0,0,0,0,0,88,30,37,2,31,31,82,0,111,0,0,0,0,0,0,0,97,30,39,2,32,32,90,0,117,0,0,0,0,0,0,0,99,30,40,2,33,33,85,0,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,100,0,0,0,16,0,3,0,224,6,70,5,0,0,0,5,97,47,0,0,0,0,0,0,92,30,106,2,28,28,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,3,0,0,0,0,0,0,116,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,70,0,64,0,0,0,0,0,0,0,141,30,13,2,28,28,75,0,97,0,0,0,0,0,0,0,130,30,35,2,29,29,95,0,101,0,0,0,0,0,0,0,119,30,36,2,30,30,90,0,105,0,0,0,0,0,0,0,101,30,37,2,31,31,75,0,111,0,0,0,0,0,0,0,145,30,39,2,32,32,95,0,117,0,0,0,0,0,0,0,132,30,40,2,33,33,75,0,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,74,0,0,0,16,0,6,0,167,30,77,5,0,0,0,5,99,0,0,0,8,0,7,0,154,30,78,4,0,0,0,2,69,0,0,0,0,0,0,0,126,30,107,2,30,30,90,0,79,0,0,0,0,0,0,0,152,30,108,2,32,32,95,0,85,0,0,0,0,0,0,0,139,30,109,2,33,33,75,0,121,0,0,0,0,0,0,0,110,30,110,2,33,33,77,0,89,0,0,0,0,0,0,0,117,30,111,2,33,33,77,0,73,0,0,0,0,0,0,0,108,30,122,2,31,31,75,0,87,0,0,0,0,0,0,0,128,30,123,2,28,28,90,0,71,0,0,0,0,0,128,0,102,0,124,3,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,3,0,0,0,0,0,0,107,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,201,30,35,2,29,29,105,0,101,0,0,0,0,0,0,0,195,30,36,2,30,30,110,0,105,0,0,0,0,0,0,0,188,30,37,2,31,31,95,0,111,0,0,0,0,0,0,0,205,30,39,2,32,32,110,0,117,0,0,0,0,0,0,0,209,30,40,2,33,33,100,0,74,0,0,0,16,0,6,0,242,30,77,5,0,78,0,5,99,0,0,0,8,0,7,0,229,30,78,4,0,77,0,2,120,0,0,0,8,0,8,0,219,30,99,6,0,0,0,3,69,0,0,0,0,0,0,0,197,30,107,2,29,29,75,0,85,0,0,0,0,0,0,0,207,30,109,2,33,33,65,0,121,0,0,0,0,0,0,0,211,30,110,2,33,33,80,0,101,85,0,0,0,0,0,0,215,30,113,2,30,31,140,0,101,73,0,0,0,0,0,0,213,30,116,2,30,31,140,0,73,0,0,0,0,0,0,0,190,30,122,2,28,28,55,0,69,35,0,0,0,0,0,0,199,30,123,2,30,30,70,0,56,0,0,0,0,0,0,0,203,30,124,2,28,28,80,0,86,0,0,0,0,0,0,0,217,30,125,2,28,28,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,0,0,0,0,0,0,105,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,1,31,13,2,28,28,70,0,97,0,0,0,0,0,0,0,3,31,35,2,29,29,90,0,101,0,0,0,0,0,0,0,11,31,36,2,30,30,90,0,105,0,0,0,0,0,0,0,13,31,37,2,31,31,90,0,111,0,0,0,0,0,0,0,18,31,39,2,32,32,90,0,117,0,0,0,0,0,0,0,20,31,40,2,33,33,90,0,100,0,0,0,16,0,4,0,3,3,70,5,0,47,0,5,69,0,0,0,0,0,0,0,6,31,107,2,30,30,90,0,79,0,0,0,0,0,0,0,16,31,108,2,32,32,90,0,97,85,0,0,0,0,0,0,26,31,112,2,29,33,120,0,97,73,0,0,0,0,0,0,22,31,115,2,29,31,120,0,101,73,0,0,0,0,0,0,24,31,116,2,30,31,120,0,69,50,0,0,0,0,0,0,9,31,122,2,30,30,90,0,64,85,0,0,0,0,0,0,28,31,123,2,28,33,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,1,0,0,0,0,0,0,115,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,30,31,13,2,28,28,75,0,97,0,0,0,0,0,0,0,43,31,35,2,29,29,85,0,101,0,0,0,0,0,0,0,59,31,36,2,30,30,85,0,105,0,0,0,0,0,0,0,64,31,37,2,31,31,70,0,117,0,0,0,0,0,0,0,87,31,40,2,33,33,80,0,116,0,0,0,8,0,3,0,254,4,47,4,0,70,0,2,112,0,0,0,8,0,1,0,138,31,48,4,0,69,0,2,107,0,0,0,8,0,8,0,215,31,49,4,0,79,0,2,119,0,0,0,0,0,0,0,134,31,58,3,0,0,0,7,100,0,0,0,16,0,4,0,154,31,70,5,0,47,0,5,100,90,59,0,48,2,6,0,195,31,75,5,0,76,0,5,99,0,0,0,40,2,7,0,20,5,78,4,0,75,0,2,122,0,0,0,48,0,4,0,181,31,86,7,0,87,0,6,64,47,0,0,0,0,0,0,32,31,106,2,28,28,50,0,86,0,0,0,0,0,0,0,34,31,107,2,28,28,85,0,73,35,0,0,0,0,0,0,40,31,108,2,28,28,85,0,97,47,0,0,0,0,0,0,48,31,109,2,29,29,85,0,65,0,0,0,0,0,0,0,50,31,110,2,29,29,85,0,69,0,0,0,0,0,0,0,55,31,111,2,30,30,85,0,69,35,0,0,0,0,0,0,57,31,112,2,28,28,85,0,73,0,0,0,0,0,0,0,78,31,113,2,31,31,70,0,121,0,0,0,0,0,0,0,80,31,114,2,33,33,80,0,79,0,0,0,0,0,0,0,82,31,115,2,32,32,85,0,97,73,0,0,0,0,0,0,89,31,116,2,29,31,110,0,101,73,0,0,0,0,0,0,91,31,117,2,30,31,110,0,79,73,0,0,0,0,0,0,93,31,118,2,32,31,110,0,121,69,0,0,0,0,0,0,95,31,119,2,33,30,120,0,108,47,52,0,0,0,0,0,97,31,120,3,0,0,0,7,76,0,0,0,0,0,0,0,101,31,121,3,0,0,0,7,108,108,0,0,0,0,0,0,121,31,122,3,0,0,0,7,116,115,0,0,40,0,4,0,9,6,123,4,0,124,0,2,100,122,0,0,48,0,4,0,22,6,124,5,0,123,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,1,0,0,0,0,0,0,104,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,228,31,13,2,28,28,80,0,116,35,0,0,8,0,4,0,233,4,25,4,0,0,0,2,97,0,0,0,0,0,0,0,236,31,35,2,29,29,100,0,101,0,0,0,0,0,0,0,234,31,36,2,30,30,90,0,105,0,0,0,0,0,0,0,230,31,37,2,31,31,80,0,111,0,0,0,0,0,0,0,238,31,39,2,32,32,90,0,117,0,0,0,0,0,0,0,240,31,40,2,33,33,90,0,116,0,0,0,8,0,3,0,254,4,47,4,0,0,0,2,112,0,0,0,8,0,1,0,43,6,48,4,0,0,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,0,0,2,99,0,0,0,40,0,7,0,91,6,78,4,0,0,0,2,81,0,0,0,16,0,10,0,195,4,98,7,0,0,0,6,121,0,0,0,0,0,0,0,232,31,106,2,31,31,80,0,87,0,0,0,0,0,0,0,242,31,107,2,28,28,90,0,97,73,0,0,0,0,0,0,244,31,108,2,29,31,120,0,101,73,0,0,0,0,0,0,246,31,109,2,30,31,120,0,105,64,0,0,0,0,0,0,248,31,110,2,31,28,120,0,112,35,0,0,8,0,1,0,62,6,111,4,0,0,0,2,116,115,35,0,40,0,4,0,9,6,112,4,0,0,0,2,107,35,0,0,8,0,8,0,117,6,113,4,0,0,0,2,100,122,0,0,48,0,4,0,22,6,114,5,0,115,0,5,116,115,0,0,40,0,4,0,250,31,115,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,1,0,0,0,0,0,0,100,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,4,32,13,2,28,28,65,0,114,0,0,0,0,0,0,0,47,32,34,3,0,0,0,7,97,0,0,0,0,0,0,0,19,32,35,2,29,29,75,0,101,0,0,0,0,0,0,0,11,32,36,2,30,30,75,0,105,0,0,0,0,0,0,0,8,32,37,2,31,31,75,0,111,0,0,0,0,0,0,0,25,32,39,2,32,32,75,0,117,0,0,0,0,0,0,0,23,32,40,2,33,33,75,0,116,0,0,0,8,0,4,0,96,32,47,4,0,70,0,2,112,0,0,0,8,0,1,0,70,32,48,4,0,69,0,2,82,0,0,0,0,0,0,0,51,32,51,3,0,0,0,7,108,0,0,0,0,0,0,0,43,32,55,3,0,0,0,7,118,0,0,0,16,0,2,0,229,3,82,7,0,81,0,6,115,0,0,0,40,0,4,0,55,32,87,6,0,86,0,3,51,0,0,0,2,0,0,0,6,32,106,2,29,29,65,0,69,0,0,0,0,0,0,0,13,32,107,2,30,30,75,0,38,0,0,0,0,0,0,0,15,32,108,2,30,30,75,0,38,35,0,0,0,0,0,0,17,32,109,2,30,30,60,0,65,0,0,0,0,0,0,0,21,32,110,2,29,29,75,0,79,0,0,0,0,0,0,0,27,32,111,2,32,32,75,0,86,0,0,0,0,0,0,0,29,32,112,2,28,28,75,0,48,0,0,0,0,0,0,0,31,32,113,2,32,32,75,0,121,0,0,0,0,0,0,0,33,32,114,2,31,31,75,0,89,0,0,0,0,0,0,0,35,32,115,2,31,31,75,0,87,0,0,0,0,0,0,0,37,32,116,2,28,28,75,0,87,35,0,0,0,0,0,0,39,32,117,2,28,28,75,0,97,73,0,0,0,0,0,0,41,32,118,2,29,31,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,1,0,0,0,0,0,0,107,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,111,32,13,2,28,28,60,0,116,35,0,0,8,0,4,0,233,4,25,4,0,0,0,2,114,0,0,0,128,0,0,0,120,0,34,3,0,0,0,6,97,0,0,0,0,0,0,0,120,32,35,2,29,29,90,0,101,0,0,0,0,0,0,0,115,32,36,2,30,30,90,0,105,0,0,0,0,0,0,0,113,32,37,2,31,31,80,0,111,0,0,0,0,0,0,0,122,32,39,2,32,32,90,0,117,0,0,0,0,0,0,0,124,32,40,2,33,33,90,0,116,0,0,0,8,0,4,0,78,6,47,4,0,0,0,2,112,0,0,0,8,0,1,0,43,6,48,4,0,0,0,2,107,0,0,0,8,0,8,0,104,6,49,4,0,0,0,2,99,0,0,0,40,0,7,0,91,6,78,4,0,0,0,2,81,0,0,0,16,0,10,0,195,4,98,7,0,0,0,6,112,35,0,0,8,0,1,0,62,6,106,4,0,0,0,2,116,115,35,0,40,0,4,0,9,6,107,4,0,0,0,2,107,35,0,0,8,0,8,0,126,32,108,4,0,79,0,2,100,122,0,0,48,0,4,0,22,6,109,5,0,110,0,5,116,115,0,0,40,0,4,0,142,32,110,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,3,0,0,0,0,0,0,114,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,12,9,0,0,60,0,97,0,0,0,0,0,0,0,152,32,35,2,29,29,90,0,101,0,0,0,0,0,0,0,165,32,36,2,30,30,85,0,105,0,0,0,0,0,0,0,171,32,37,2,31,31,75,0,111,0,0,0,0,0,0,0,177,32,39,2,32,32,85,0,117,0,0,0,0,0,0,0,183,32,40,2,33,33,80,0,97,47,0,0,0,0,0,0,159,32,106,2,28,28,90,0,97,35,0,0,0,0,0,0,189,32,122,2,28,28,50,0,101,35,0,0,0,0,0,0,193,32,123,2,30,30,50,0,105,35,0,0,0,0,0,0,197,32,124,2,31,31,50,0,111,35,0,0,0,0,0,0,201,32,125,2,32,32,50,0,117,35,0,0,0,0,0,0,205,32,126,2,33,33,50,0,43,0,0,0,0,0,0,0,209,32,127,1,0,30,0,0,43,50,0,0,0,0,0,0,212,32,128,1,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,20,0,0,0,0,0,0,109,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,215,32,13,2,28,28,65,0,114,0,0,0,16,64,132,0,128,2,34,5,0,0,0,3,97,0,0,0,0,0,0,0,219,32,35,2,29,29,65,0,101,0,0,0,0,0,0,0,238,32,36,2,30,30,65,0,105,0,0,0,0,0,0,0,242,32,37,2,31,31,65,0,111,0,0,0,0,0,0,0,248,32,39,2,32,32,65,0,117,0,0,0,0,0,0,0,252,32,40,2,33,33,55,0,82,0,0,0,128,0,0,0,138,0,51,3,0,0,0,6,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,105,58,0,0,0,0,32,0,246,32,112,2,31,31,135,0,73,0,0,0,0,0,0,0,244,32,113,2,31,31,65,0,101,58,0,0,0,0,32,0,240,32,114,2,30,30,135,0,97,58,0,0,0,0,32,0,236,32,118,2,29,29,150,0,111,58,0,0,0,0,32,0,250,32,119,2,32,32,150,0,117,58,0,0,0,0,32,0,254,32,123,2,33,33,140,0,97,73,0,0,0,0,32,0,0,33,134,2,29,31,140,0,97,85,0,0,0,0,32,0,2,33,135,2,29,33,135,0,121,0,0,0,2,0,0,0,217,32,149,2,28,28,40,0,97,35,0,0,0,0,0,0,234,32,150,2,29,29,90,0,100,35,0,0,16,0,4,0,3,3,151,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,20,0,0,0,0,0,0,110,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,32,0,22,33,35,2,29,29,115,0,101,0,0,0,0,0,0,0,20,33,36,2,30,30,90,0,105,0,0,0,0,0,0,0,17,33,37,2,31,31,80,0,111,0,0,0,0,0,0,0,24,33,39,2,32,32,90,0,117,0,0,0,0,0,0,0,26,33,40,2,33,33,80,0,64,47,0,0,0,0,0,0,12,33,107,2,28,28,65,0,86,0,0,0,0,0,0,0,4,33,108,2,28,28,80,0,64,51,0,0,0,0,0,0,10,33,110,2,28,28,70,0,97,73,0,0,0,0,32,0,28,33,134,2,29,31,120,0,97,85,0,0,0,0,32,0,30,33,135,2,29,33,120,0,101,73,0,0,0,0,32,0,32,33,149,2,30,31,120,0,101,85,0,0,0,0,32,0,34,33,150,2,30,33,120,0,86,73,0,0,0,0,32,0,36,33,151,2,28,31,120,0,86,85,0,0,0,0,32,0,38,33,152,2,28,33,120,0,111,73,0,0,0,0,32,0,40,33,153,2,32,31,120,0,111,85,0,0,0,0,32,0,42,33,154,2,32,33,120,0,117,73,0,0,0,0,32,0,44,33,155,2,33,31,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,20,0,0,0,0,0,0,112,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,49,33,13,2,28,28,65,0,97,0,0,0,0,0,32,0,70,33,35,2,29,29,110,0,101,0,0,0,0,0,32,0,66,33,36,2,30,30,110,0,105,0,0,0,0,0,32,0,60,33,37,2,31,31,110,0,117,0,0,0,0,0,32,0,78,33,40,2,33,33,110,0,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,86,0,0,0,0,0,0,0,54,33,108,2,28,28,65,0,73,0,0,0,0,0,0,0,63,33,113,2,31,31,75,0,69,0,0,0,0,0,32,0,68,33,116,2,30,30,100,0,111,58,0,0,0,0,32,0,74,33,119,2,32,32,110,0,79,0,0,0,0,0,32,0,72,33,121,2,32,32,100,0,85,0,0,0,0,0,0,0,76,33,122,2,33,33,75,0,43,0,0,0,0,0,0,0,46,33,149,1,5,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,0,0,0,0,0,112,114,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,80,33,37,2,31,31,85,0,111,0,0,0,0,0,0,0,87,33,39,2,32,32,85,0,117,0,0,0,0,0,0,0,89,33,40,2,33,33,85,0,69,0,0,0,0,0,0,0,83,33,106,2,30,30,85,0,65,0,0,0,0,0,0,0,85,33,107,2,29,29,90,0,101,73,0,0,0,0,0,0,91,33,108,2,30,31,105,0,97,85,0,0,0,0,0,0,93,33,109,2,29,33,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,27,0,0,0,0,0,0,115,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,95,33,13,2,28,28,70,0,97,0,0,0,0,0,0,0,102,33,35,2,29,29,85,0,101,0,0,0,0,0,0,0,104,33,36,2,30,30,80,0,105,0,0,0,0,0,0,0,97,33,37,2,31,31,70,0,111,0,0,0,0,0,0,0,108,33,39,2,32,32,80,0,117,0,0,0,0,0,0,0,100,33,40,2,33,33,70,0,118,0,0,0,16,0,2,0,229,3,82,7,0,0,0,6,69,0,0,0,0,0,0,0,106,33,107,2,30,30,80,0,79,0,0,0,0,0,0,0,110,33,109,2,32,32,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,103,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,8,0,3,0,136,17,47,4,0,0,0,2,107,0,0,0,8,0,8,0,45,5,49,4,0,0,0,2,98,0,0,0,8,0,1,0,133,26,69,4,0,0,0,5,100,0,0,0,8,0,3,0,254,4,70,4,0,0,0,2,103,0,0,0,8,0,8,0,104,6,79,4,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,26,0,0,0,0,0,0,98,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,123,33,13,2,28,28,70,0,114,0,0,0,128,0,0,0,138,0,34,3,0,0,0,6,97,0,0,0,0,0,0,0,128,33,35,2,29,29,75,0,101,0,0,0,0,0,0,0,118,33,36,2,30,30,70,0,105,0,0,0,0,0,0,0,112,33,37,2,31,31,65,0,111,0,0,0,0,0,0,0,140,33,39,2,32,32,70,0,117,0,0,0,0,0,0,0,145,33,40,2,33,33,70,0,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,120,0,0,0,8,0,8,0,225,5,99,6,0,0,0,3,1,0,0,0,0,0,0,0,0,0,117,14,0,0,0,0,76,0,0,0,0,0,0,0,150,33,119,3,0,0,0,7,103,35,0,0,16,0,8,2,169,26,120,5,0,0,0,5,103,59,0,0,16,2,8,0,159,33,121,5,0,49,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,1,0,0,0,0,0,0,110,115,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,184,33,35,2,28,28,90,0,101,0,0,0,0,0,0,0,182,33,36,2,30,30,90,0,105,0,0,0,0,0,0,0,180,33,37,2,31,31,55,0,111,0,0,0,0,0,0,0,186,33,39,2,32,32,90,0,117,0,0,0,0,0,0,0,188,33,40,2,33,33,85,0,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,100,0,0,0,16,0,3,0,224,6,70,5,0,0,0,5,85,0,0,0,0,0,0,0,164,6,106,2,33,33,80,0,69,0,0,0,0,0,0,0,153,6,107,2,30,30,85,0,75,0,0,0,8,0,4,0,190,33,108,6,0,0,0,3,120,50,0,0,8,0,8,0,190,11,109,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,18,0,0,0,0,0,0,104,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,208,33,35,2,29,29,85,0,101,0,0,0,0,0,0,0,210,33,36,2,30,30,85,0,105,0,0,0,0,0,0,0,214,33,37,2,31,31,80,0,111,0,0,0,0,0,0,0,217,33,39,2,32,32,85,0,117,0,0,0,0,0,0,0,221,33,40,2,33,33,90,0,69,0,0,0,0,0,0,0,212,33,110,2,30,30,85,0,65,126,0,0,0,0,0,0,223,33,111,2,29,29,100,0,69,126,0,0,0,0,0,0,225,33,112,2,30,30,100,0,79,126,0,0,0,0,0,0,227,33,114,2,32,32,100,0,79,0,0,0,0,0,0,0,219,33,122,2,32,32,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,50,0,0,0,0,0,0,97,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,245,33,13,2,28,28,80,0,97,0,0,0,0,0,0,0,243,33,35,2,29,29,100,0,101,0,0,0,0,0,0,0,231,33,36,2,30,30,80,0,105,0,0,0,0,0,0,0,229,33,37,2,31,31,80,0,111,0,0,0,0,0,0,0,241,33,39,2,32,32,80,0,117,0,0,0,0,0,0,0,239,33,40,2,33,33,80,0,121,0,0,0,0,0,0,0,235,33,110,2,33,33,100,0,87,0,0,0,0,0,0,0,237,33,123,2,28,28,90,0,38,0,0,0,0,0,0,0,233,33,125,2,30,30,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,0,0,0,0,0,97,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,255,33,35,2,29,29,85,0,101,0,0,0,0,0,0,0,251,33,36,2,30,30,85,0,105,0,0,0,0,0,0,0,249,33,37,2,31,31,85,0,111,0,0,0,0,0,0,0,3,34,39,2,32,32,85,0,117,0,0,0,0,0,0,0,5,34,40,2,33,33,85,0,69,0,0,0,0,0,0,0,253,33,106,2,30,30,85,0,79,0,0,0,0,0,0,0,1,34,107,2,32,32,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,3,0,0,0,0,0,0,97,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,25,34,13,2,28,28,85,0,97,0,0,0,0,0,0,0,23,34,35,2,29,29,90,0,101,0,0,0,0,0,0,0,10,34,36,2,30,30,90,0,105,0,0,0,0,0,0,0,7,34,37,2,31,31,80,0,111,0,0,0,0,0,0,0,27,34,39,2,32,32,85,0,117,0,0,0,0,0,0,0,29,34,40,2,33,33,80,0,121,0,0,0,0,0,0,0,12,34,110,2,28,28,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,1,0,0,0,0,0,0,119,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,31,34,13,2,28,28,70,0,97,0,0,0,0,0,0,0,49,34,35,2,29,29,70,0,101,0,0,0,0,0,0,0,41,34,36,2,30,30,70,0,105,0,0,0,0,0,0,0,35,34,37,2,31,31,70,0,111,0,0,0,0,0,0,0,57,34,39,2,32,32,70,0,117,0,0,0,0,0,0,0,61,34,40,2,33,33,70,0,64,58,0,0,0,0,0,0,33,34,106,2,28,28,135,0,105,58,0,0,0,0,0,0,38,34,107,2,31,31,135,0,101,58,0,0,0,0,0,0,43,34,108,2,30,30,135,0,69,0,0,0,0,0,0,0,45,34,109,2,30,30,70,0,69,58,0,0,0,0,0,0,47,34,110,2,30,30,135,0,97,58,0,0,0,0,0,0,51,34,111,2,29,29,135,0,79,0,0,0,0,0,0,0,53,34,112,2,32,32,70,0,79,58,0,0,0,0,0,0,55,34,113,2,32,32,135,0,111,58,0,0,0,0,0,0,59,34,114,2,32,32,135,0,117,58,0,0,0,0,0,0,63,34,115,2,33,33,135,0,115,50,0,0,40,0,4,0,133,6,116,6,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,20,0,0,0,0,0,0,100,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,65,34,35,2,29,29,65,0,101,0,0,0,0,0,0,0,70,34,36,2,30,30,65,0,105,0,0,0,0,0,0,0,74,34,37,2,31,31,65,0,111,0,0,0,0,0,0,0,78,34,39,2,32,32,65,0,117,0,0,0,0,0,0,0,82,34,40,2,33,33,55,0,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,105,58,0,0,0,0,0,0,76,34,112,2,31,31,135,0,101,58,0,0,0,0,0,0,72,34,114,2,30,30,125,0,97,58,0,0,0,0,0,0,68,34,118,2,29,29,150,0,111,58,0,0,0,0,0,0,80,34,119,2,32,32,150,0,117,58,0,0,0,0,0,0,84,34,123,2,33,33,145,0,97,73,0,0,0,0,0,0,86,34,134,2,29,31,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,20,0,0,0,0,0,0,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,88,34,13,2,29,29,65,0,114,0,0,0,128,0,0,0,138,0,34,3,0,0,0,6,97,0,0,0,0,0,32,0,90,34,35,2,29,29,65,0,101,0,0,0,0,0,0,0,94,34,36,2,30,30,65,0,105,0,0,0,0,0,0,0,98,34,37,2,31,31,65,0,111,0,0,0,0,0,0,0,102,34,39,2,32,32,65,0,117,0,0,0,0,0,0,0,106,34,40,2,33,33,55,0,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,105,58,0,0,0,0,0,0,100,34,112,2,31,31,135,0,101,58,0,0,0,0,0,0,96,34,114,2,30,30,135,0,97,58,0,0,0,0,0,0,92,34,118,2,29,29,150,0,111,58,0,0,0,0,0,0,104,34,119,2,32,32,150,0,117,58,0,0,0,0,0,0,108,34,123,2,33,33,140,0,97,73,0,0,0,0,32,0,110,34,134,2,29,31,140,0,97,85,0,0,0,0,32,0,112,34,135,2,29,33,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,20,0,0,0,0,0,0,115,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,114,34,13,2,29,29,65,0,114,0,0,0,0,0,128,0,72,0,34,3,0,0,0,7,97,0,0,0,0,0,32,0,116,34,35,2,29,29,65,0,101,0,0,0,0,0,0,0,127,34,36,2,30,30,65,0,105,0,0,0,0,0,0,0,131,34,37,2,31,31,65,0,111,0,0,0,0,0,0,0,135,34,39,2,32,32,65,0,117,0,0,0,0,0,0,0,139,34,40,2,33,33,55,0,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,118,0,0,0,16,0,2,0,192,3,82,7,0,0,0,6,105,58,0,0,0,0,0,0,133,34,112,2,31,31,135,0,101,58,0,0,0,0,0,0,129,34,114,2,30,30,135,0,38,58,0,0,0,0,0,0,125,34,117,2,30,30,135,0,97,58,0,0,0,0,0,0,121,34,118,2,29,29,150,0,111,58,0,0,0,0,0,0,137,34,119,2,32,32,150,0,117,58,0,0,0,0,0,0,141,34,123,2,33,33,140,0,97,73,0,0,0,0,32,0,143,34,134,2,29,31,140,0,97,85,0,0,0,0,32,0,145,34,135,2,29,33,135,0,38,0,0,0,0,0,0,0,123,34,149,2,30,30,65,0,109,35,0,0,16,0,1,0,174,1,150,8,0,0,0,4,110,35,0,0,16,0,4,0,214,1,151,8,0,0,0,4,110,46,35,0,16,0,5,0,251,1,152,8,50,0,0,4,110,94,35,0,16,2,7,0,33,2,153,8,0,0,0,4,78,35,0,0,16,0,8,0,73,2,154,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,1,0,0,0,0,0,0,116,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,2,0,0,0,178,34,13,2,28,28,70,0,114,0,0,0,128,0,128,0,47,35,34,3,0,0,0,6,97,0,0,0,0,0,0,0,205,34,35,2,29,29,90,0,101,0,0,0,0,0,0,0,193,34,36,2,30,30,90,0,105,0,0,0,0,0,0,0,185,34,37,2,31,31,85,0,111,0,0,0,0,0,0,0,217,34,39,2,32,32,90,0,117,0,0,0,0,0,0,0,220,34,40,2,33,33,85,0,114,45,0,0,0,0,128,0,158,34,44,3,0,0,0,0,114,47,0,0,0,0,0,0,75,35,46,3,0,0,0,7,116,0,0,0,8,0,3,0,211,6,47,4,0,0,0,2,108,0,0,0,0,0,0,0,45,7,55,3,0,0,0,7,100,0,0,0,16,0,3,0,224,6,70,5,0,0,0,5,116,83,0,0,40,0,6,0,84,35,74,4,0,73,0,2,116,83,59,0,40,2,7,0,93,35,76,4,0,75,0,2,73,0,0,0,0,0,0,0,187,34,106,2,31,31,65,0,73,50,0,0,2,0,0,0,190,34,107,2,31,31,65,0,101,64,0,0,0,0,0,0,196,34,108,2,31,28,115,0,69,0,0,0,2,0,0,0,202,34,109,2,30,30,70,0,65,64,0,0,0,0,0,0,209,34,110,2,29,29,115,0,79,0,0,0,0,0,0,0,215,34,111,2,32,32,70,0,85,0,0,0,0,0,0,0,222,34,112,2,32,32,75,0,116,115,0,0,40,0,4,0,224,34,113,4,0,0,0,2,107,104,0,0,8,0,8,0,237,34,114,4,0,79,0,2,107,45,0,0,8,0,8,0,253,34,115,4,0,79,0,2,75,0,0,0,8,0,4,0,10,35,116,6,0,0,0,3,112,104,0,0,8,0,1,0,28,35,117,4,0,69,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var eL=[0,69,1,0,0,161,213,131,0,0,0,0,0,162,18,130,0,0,0,0,0,192,1,0,0,176,85,0,2,13,153,201,16,52,34,36,3,104,1,13,0,32,25,10,0,176,134,0,0,176,183,0,0,176,248,0,38,5,0,176,57,1,0,176,122,1,0,176,187,1,3,13,204,109,0,169,134,40,95,10,2,47,0,176,252,1,0,176,93,2,3,13,204,110,0,169,134,40,95,10,2,47,0,176,190,2,0,176,15,3,4,13,139,197,169,204,0,176,96,3,192,195,177,3,3,13,204,114,0,169,0,176,52,4,3,13,204,108,0,169,0,176,133,4,2,13,185,201,138,41,46,1,6,106,16,223,198,4,16,223,247,4,16,223,40,5,16,223,89,5,16,223,138,5,16,223,187,5,2,39,224,236,236,5,0,39,0,176,13,6,47,48,48,48,49,32,0,176,62,6,0,176,95,6,50,34,5,104,0,176,144,6,0,240,177,6,47,48,48,48,49,32,0,176,135,11,138,39,0,176,184,11,0,176,233,11,0,240,177,6,1,13,0,114,52,36,3,104,1,13,0,32,0,161,25,3,75,1,96,170,0,162,18,34,75,9,96,170,0,176,10,12,16,244,59,12,1,13,0,114,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,254,13,32,243,63,14,1,13,0,114,0,161,25,3,64,9,118,90,0,162,18,2,64,9,98,90,6,106,16,223,198,4,16,223,247,4,16,223,40,5,16,223,89,5,16,223,138,5,16,223,187,5,2,39,224,236,236,5,0,176,254,13,0,240,218,16,2,13,128,202,138,41,5,104,0,176,235,17,32,243,44,18,0,176,235,17,176,244,44,18,6,106,0,208,238,21,0,208,31,22,0,208,64,22,96,223,97,22,0,208,146,22,0,208,211,22,1,0,138,41,56,1,138,41,17,104,6,108,64,236,4,23,128,237,69,23,32,238,134,23,32,238,183,23,128,237,248,23,128,237,73,24,0,176,138,24,1,0,0,145,194,0,28,32,224,236,171,24,4,96,2,39,128,237,171,24,0,39,0,176,204,24,47,32,0,176,253,24,56,32,0,176,30,25,0,176,63,25,2,41,55,1,6,108,64,236,4,23,128,237,69,23,32,238,134,23,32,238,183,23,128,237,248,23,128,237,73,24,57,37,0,176,134,23,58,37,0,176,134,23,0,176,138,24,2,41,55,1,0,145,194,0,57,37,0,176,96,25,58,37,0,176,145,25,6,108,64,236,210,25,224,236,19,26,128,237,96,25,32,238,84,26,224,236,149,26,128,237,145,25,1,0,2,41,55,1,6,108,0,224,230,26,0,224,7,27,0,224,40,27,0,224,73,27,0,224,122,27,192,238,171,27,0,176,138,24,2,13,142,202,1,162,30,82,0,0,0,0,6,106,0,208,204,27,0,208,253,27,0,208,46,28,0,208,95,28,0,208,144,28,0,208,209,28,0,39,0,176,18,29,0,176,83,29,2,13,173,201,0,176,148,29,2,41,23,104,6,106,0,208,197,29,0,208,246,29,0,208,39,30,0,208,88,30,0,208,137,30,0,208,186,30,32,238,235,30,0,39,3,104,0,176,12,31,0,176,12,31,11,96,0,162,25,18,0,0,0,0,31,32,3,104,0,176,61,31,0,176,110,31,1,0,2,43,21,104,6,106,0,208,159,31,0,208,224,31,0,208,33,32,0,208,98,32,0,208,147,32,0,208,228,32,32,238,21,33,0,39,3,104,0,176,54,33,7,96,0,162,35,18,0,0,0,0,0,176,87,33,1,0,31,32,3,104,1,13,0,32,138,41,1,1,6,106,0,208,136,33,0,208,185,33,0,208,234,33,0,208,27,34,0,208,76,34,0,208,141,34,31,32,128,237,190,34,0,39,0,176,223,34,1,0,0,162,18,34,75,9,84,65,2,47,11,104,0,161,25,3,75,1,212,114,133,41,3,104,0,176,0,35,0,176,65,35,6,106,0,208,130,35,0,208,195,35,0,208,4,36,0,208,69,36,0,208,150,36,0,208,215,36,138,39,3,43,0,176,24,37,0,39,0,176,73,37,138,41,0,176,106,37,1,0,0,162,146,50,77,9,98,162,2,47,7,104,0,161,25,3,79,1,222,154,0,176,155,37,6,106,0,208,220,37,0,208,29,38,0,208,94,38,0,208,159,38,0,208,224,38,0,208,33,39,138,39,3,43,0,176,98,39,0,55,50,32,0,176,147,39,138,41,0,176,180,39,1,0,2,13,179,201,0,161,153,18,69,73,88,162,0,162,146,50,69,73,88,162,2,47,0,176,229,39,6,106,0,208,220,37,0,208,29,38,0,208,94,38,0,208,159,38,0,208,224,38,0,208,33,39,138,39,3,43,0,176,98,39,0,55,64,32,0,176,38,40,138,41,0,176,71,40,1,0,2,13,178,201,0,162,23,114,81,13,114,205,2,47,5,104,0,208,120,40,0,176,153,40,6,106,0,208,218,40,0,208,59,41,0,208,140,41,0,208,237,41,0,208,78,42,0,208,191,42,0,39,0,176,32,43,138,41,10,104,65,36,3,104,37,10,4,96,65,37,2,104,50,10,0,176,65,43,1,0,0,162,148,50,75,13,110,189,2,47,7,104,0,161,25,3,79,1,42,172,0,176,146,43,6,106,0,208,211,43,0,208,4,44,0,208,53,44,0,208,102,44,0,208,151,44,0,208,200,44,31,32,128,237,249,44,138,39,3,43,0,176,42,45,0,39,0,176,75,45,138,41,0,176,108,45,1,0,2,13,190,201,0,162,136,20,73,13,96,170,0,161,10,19,77,9,96,170,31,48,30,32,0,176,157,45,0,176,238,45,2,13,190,201,14,37,3,104,1,13,0,114,30,50,31,34,13,104,0,161,25,3,75,1,94,170,0,176,63,46,96,249,177,6,0,176,63,46,96,249,177,6,0,161,25,3,75,9,94,170,29,34,5,104,0,176,112,46,128,252,177,6,34,34,0,176,177,46,0,162,153,20,75,13,222,169,0,161,25,3,75,1,94,170,0,176,112,46,128,252,177,6,0,162,136,20,71,77,220,169,0,161,10,19,71,9,220,169,0,176,210,46,0,162,18,34,73,9,84,73,1,47,0,176,35,47,2,47,15,104,0,161,213,3,73,5,84,73,133,41,5,104,0,176,84,47,0,240,133,47,0,176,84,47,0,240,139,48,133,41,5,104,0,176,228,48,0,240,133,47,14,34,5,104,0,176,21,49,0,240,139,48,28,34,5,104,0,176,86,49,0,240,139,48,29,34,5,104,0,176,151,49,0,240,139,48,30,34,5,104,0,176,216,49,0,240,139,48,31,34,5,104,0,176,25,50,0,240,139,48,32,34,5,104,0,176,90,50,0,240,139,48,33,34,5,104,0,176,155,50,0,240,139,48,0,176,220,50,0,240,139,48,0,161,213,3,77,5,98,170,0,162,18,34,77,9,98,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,0,176,137,52,0,240,186,52,0,161,213,3,76,9,94,170,0,162,18,2,76,9,94,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,34,34,5,104,0,176,177,46,64,246,65,53,0,176,137,52,64,246,65,53,0,161,213,3,81,9,238,188,0,162,18,34,81,9,46,173,1,47,0,176,250,53,133,41,5,104,0,176,43,54,0,240,92,54,0,176,234,56,0,240,27,57,3,13,202,100,0,145,0,161,227,83,85,9,246,221,0,162,18,2,85,9,246,221,1,47,0,176,250,53,2,47,11,104,133,41,5,104,0,176,43,54,0,240,92,54,0,176,234,56,0,240,30,58,133,41,5,104,0,176,43,54,0,240,92,54,0,176,234,56,0,240,30,58,0,161,227,83,85,9,246,221,0,162,18,2,85,41,246,221,1,47,0,176,54,59,2,47,11,104,133,41,5,104,0,176,103,59,48,242,27,57,0,176,152,59,208,242,27,57,133,41,5,104,0,176,201,59,48,242,27,57,0,176,250,59,208,242,27,57,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,1,47,0,176,43,60,133,41,5,104,0,176,92,60,0,240,141,60,0,176,125,61,96,249,174,61,0,161,25,3,173,9,84,90,0,162,25,18,13,9,84,73,2,47,11,104,133,41,5,104,0,176,80,62,0,240,129,62,0,176,193,64,0,240,129,62,133,41,5,104,0,176,242,64,0,240,129,62,0,176,35,65,0,240,129,62,0,161,25,3,169,1,84,90,0,162,25,18,9,1,84,73,2,47,15,104,0,162,25,50,9,5,84,73,133,41,5,104,0,176,80,62,0,240,129,62,0,176,84,65,96,249,129,62,133,41,5,104,0,176,242,64,0,240,129,62,134,40,3,43,35,10,0,176,133,65,0,240,129,62,2,13,139,202,0,161,25,3,169,1,84,90,0,162,25,18,9,1,84,73,133,41,0,176,198,65,0,176,247,65,0,162,25,18,13,1,98,170,2,47,0,161,25,3,15,0,90,170,133,41,5,104,0,176,56,66,0,240,105,66,0,176,171,68,0,240,105,66,0,162,25,18,13,1,98,170,2,47,9,104,0,161,25,3,15,0,92,170,0,162,25,50,13,5,92,170,133,41,5,104,0,176,220,68,96,244,13,69,0,176,186,71,80,245,13,69,0,161,25,3,75,1,232,171,0,162,18,34,75,9,232,171,2,47,11,104,133,41,5,104,0,176,235,71,0,240,28,72,0,176,118,74,32,248,28,72,133,41,5,104,0,176,167,74,0,240,28,72,0,176,216,74,32,248,28,72,2,13,144,202,0,161,25,3,73,1,100,171,0,162,18,34,73,9,100,171,2,47,11,104,133,41,5,104,0,176,235,71,0,240,9,75,0,176,118,74,0,240,9,75,133,41,5,104,0,176,167,74,0,240,9,75,0,176,216,74,0,240,9,75,2,13,145,202,0,161,35,83,85,9,246,221,0,162,18,34,73,9,46,173,133,41,5,104,0,176,45,77,0,245,94,77,0,176,31,80,0,245,80,80,2,13,145,202,0,161,35,83,85,9,246,221,0,162,18,34,73,9,46,173,133,41,5,104,0,176,45,77,0,240,158,82,0,176,31,80,0,245,80,85,2,13,157,202,0,161,25,3,51,5,246,221,0,162,50,18,51,5,246,221,0,176,157,87,144,241,222,87,0,161,25,3,77,9,238,188,0,162,18,34,73,9,46,173,2,47,11,104,133,41,5,104,0,176,164,89,0,240,213,89,0,176,216,91,0,240,9,92,133,41,5,104,0,176,12,94,0,240,213,89,0,176,61,94,0,240,9,92,0,161,25,3,83,9,246,221,0,162,18,34,83,9,54,220,133,41,5,104,0,176,12,94,0,240,213,89,0,176,61,94,0,240,9,92,2,13,129,202,133,41,5,104,0,176,110,94,192,243,175,94,0,176,110,94,0,245,175,94,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,133,41,0,192,110,97,34,34,96,196,114,99,51,50,52,34,0,192,114,99,14,34,0,192,132,100,55,34,0,192,79,101,0,192,77,102,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,41,103,34,50,51,50,52,34,0,192,89,104,14,34,32,195,49,106,160,197,53,107,0,161,21,28,77,5,158,162,0,162,146,18,77,1,94,162,133,41,48,194,49,106,96,196,66,108,0,161,213,3,77,1,238,188,133,41,0,192,41,109,0,192,121,111,3,13,201,116,0,149,0,161,227,83,85,1,246,221,133,41,0,192,9,113,0,192,9,113,0,161,227,83,85,1,246,221,0,162,25,18,51,37,246,221,133,41,224,193,202,114,96,201,221,115,0,161,213,3,75,1,238,172,0,162,146,18,75,1,110,189,2,47,0,162,146,18,75,1,238,172,133,41,0,192,137,116,34,50,51,50,52,34,0,192,184,117,31,50,38,34,0,192,72,119,55,34,0,192,186,120,14,34,96,196,70,122,0,192,123,123,6,161,213,19,73,5,226,155,2,162,146,20,73,5,98,155,133,41,128,194,176,124,33,34,0,197,11,125,0,195,176,124,0,162,18,2,75,1,84,65,0,41,0,192,83,125,0,192,7,128,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,41,0,192,3,130,0,192,35,132,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,41,0,192,13,69,48,50,47,50,49,34,0,192,73,134,0,192,117,136,0,161,25,3,77,1,106,172,0,162,18,2,77,1,106,172,0,41,0,192,93,138,0,192,9,141,2,13,130,202,0,161,25,3,73,1,100,171,0,162,18,2,73,1,100,171,0,41,192,195,117,143,160,197,117,143,2,13,130,202,0,161,35,83,51,5,246,221,0,162,35,82,51,5,246,221,0,41,0,192,94,77,0,192,80,80,2,13,149,201,0,161,35,83,51,5,246,221,0,162,18,66,51,5,246,221,0,41,0,192,158,82,0,192,80,85,2,13,172,201,6,106,0,208,238,21,0,208,31,22,0,208,64,22,96,223,97,22,0,208,146,22,0,208,211,22,2,39,128,237,171,24,192,195,220,145,0,161,25,3,51,1,246,221,0,162,146,18,51,1,246,221,0,41,0,192,109,148,0,192,222,87,0,161,25,3,77,1,238,188,0,162,146,18,77,1,110,189,0,41,128,199,183,150,144,193,16,153,0,41,96,196,175,94,0,192,175,94,1,13,0,104,28,34,0,192,85,155,29,34,0,192,170,156,30,34,0,192,73,158,31,34,0,192,238,159,32,34,0,192,84,161,33,34,0,192,3,163,96,196,204,164,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,119,166,0,192,207,168,0,161,217,19,77,5,98,170,0,162,18,2,77,9,98,170,1,47,0,176,29,51,133,41,5,104,0,176,220,68,192,243,119,166,0,176,102,171,192,248,207,168,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,55,34,0,192,79,101,87,41,0,192,114,99,133,41,0,197,151,171,0,192,132,100,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,192,110,97,55,34,0,192,79,101,0,192,230,171,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,41,103,0,192,39,173,0,161,227,83,85,1,246,221,0,162,18,2,85,33,246,221,133,41,0,192,184,173,160,197,233,174,0,161,213,3,76,1,238,172,0,162,146,18,76,1,110,189,133,41,32,195,70,122,192,195,70,122,0,161,213,3,76,1,238,172,0,162,146,18,76,1,110,189,133,41,32,195,182,175,55,34,0,192,186,120,160,197,182,175,0,161,25,3,77,1,98,170,133,41,0,192,13,69,0,192,119,177,128,40,4,104,106,1,0,176,99,179,0,176,164,179,0,176,99,179,0,176,248,0,0,176,229,179,38,5,0,176,57,1,0,176,54,180,0,176,135,180,0,176,200,180,0,176,9,181,0,176,74,181,0,176,155,181,0,176,220,181,0,176,61,182,0,176,142,182,0,176,239,182,0,176,64,183,0,176,145,183,0,176,242,183,0,176,99,184,0,145,84,1,2,41,0,176,180,184,1,0,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,197,151,171,87,41,0,192,114,99,55,34,0,192,79,101,0,192,132,100,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,133,41,224,193,49,106,192,195,229,184,0,161,213,3,76,9,94,170,0,162,18,2,76,9,94,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,87,41,5,104,0,176,177,46,224,246,65,53,0,176,137,52,224,246,65,53,0,161,213,3,77,1,238,188,0,162,146,18,77,1,110,189,133,41,0,192,137,116,87,41,0,192,184,117,31,50,38,34,0,192,72,119,55,34,0,192,186,120,96,196,70,122,2,13,190,201,0,161,213,3,77,5,98,170,0,162,18,2,77,9,98,170,2,47,9,104,1,47,3,104,0,176,123,185,0,176,172,185,96,244,186,52,1,47,0,176,221,185,0,176,14,186,96,244,186,52,2,43,2,104,8,96,2,55,57,48,58,32,3,104,59,1,2,96,56,1,0,145,208,0,1,0,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,1,47,0,176,43,60,133,41,5,104,0,176,92,60,0,240,63,186,0,176,125,61,0,240,63,186,2,13,185,201,6,106,0,208,47,187,0,208,96,187,0,208,145,187,0,208,210,187,0,208,3,188,0,208,52,188,2,39,64,236,236,5,0,176,95,6,69,39,109,3,140,39,2,104,2,96,87,1,86,1,1,0,44,5,136,40,0,176,101,188,0,176,85,0,0,145,107,7,2,13,153,201,1,0,2,41,109,1,0,176,85,0,2,57,0,41,113,1,0,176,85,0,0,145,194,0,0,176,166,188,115,16,129,40,0,176,215,188,0,176,183,0,2,13,144,201,0,176,24,189,1,13,0,97,44,5,0,176,183,0,109,16,0,176,89,189,38,5,0,176,154,189,38,5,0,176,219,189,2,13,170,201,38,5,0,176,28,190,13,16,0,176,93,190,13,16,0,176,158,190,0,176,223,190,44,5,0,176,32,191,4,13,145,201,144,203,44,5,0,176,32,191,44,5,13,16,0,176,129,191,38,5,58,32,0,208,210,191,0,176,19,192,13,16,0,176,100,192,13,16,0,176,100,192,4,13,148,201,144,203,44,5,0,176,100,192,4,13,148,201,144,203,44,5,0,176,100,192,59,34,0,176,181,192,0,176,6,193,0,176,87,193,4,13,153,201,138,202,0,176,184,193,29,34,38,4,0,176,25,194,0,176,145,183,0,176,138,194,44,5,0,176,229,179,44,5,0,176,251,194,44,5,0,176,251,194,44,5,129,40,0,176,92,195,0,176,173,195,44,5,0,176,14,196,44,5,0,176,127,196,4,13,153,201,185,201,44,36,3,104,2,13,153,201,44,5,0,176,224,196,4,13,140,202,185,201,44,36,3,104,2,13,140,202,44,5,0,176,49,197,0,176,54,180,0,176,130,197,0,176,211,197,0,176,248,0,107,5,0,145,73,2,1,0,2,13,153,201,44,5,0,176,36,198,115,16,0,176,183,0,109,16,0,176,85,198,38,5,0,176,150,198,38,5,0,176,150,198,38,5,0,176,215,198,13,16,0,176,24,199,2,13,138,202,13,16,0,176,89,199,0,176,223,190,2,13,144,201,44,5,0,176,24,189,44,5,0,176,154,199,4,13,145,201,144,203,44,5,0,176,154,199,1,13,0,97,0,176,183,0,44,5,13,16,0,176,235,199,38,5,58,32,0,208,210,191,0,176,57,1,44,5,13,16,0,176,60,200,4,13,148,201,144,203,44,5,0,176,141,200,4,13,148,201,144,203,44,5,0,176,141,200,13,16,0,176,100,192,0,176,206,200,4,13,166,195,138,202,0,176,31,201,3,13,203,111,0,144,0,176,54,180,0,176,112,201,3,13,203,101,0,144,0,176,248,0,0,176,138,194,44,5,0,176,209,201,44,5,0,176,34,202,44,5,0,176,173,195,44,5,0,176,14,196,44,5,0,176,127,196,2,13,154,201,44,5,0,176,147,202,87,41,110,1,0,176,212,202,0,176,5,203,2,41,109,1,0,176,5,203,0,176,166,188,2,13,166,195,115,16,8,41,0,176,54,203,0,176,135,203,2,13,144,201,0,176,24,189,109,16,0,176,200,203,38,5,109,16,0,176,219,189,38,5,0,176,9,204,38,5,0,176,74,204,4,13,145,201,144,203,13,16,34,34,125,1,0,176,139,204,13,16,0,176,204,204,0,176,13,205,34,34,0,176,78,205,0,176,139,204,6,13,145,201,144,203,185,201,44,34,4,104,4,13,145,201,144,203,130,10,44,5,0,176,78,205,44,5,0,176,175,205,38,5,0,176,19,192,13,16,34,34,0,176,0,206,0,176,81,206,6,13,148,201,144,203,185,201,34,36,4,104,4,13,148,201,144,203,34,5,0,176,0,206,5,13,203,111,201,144,0,185,34,36,4,104,3,13,203,111,0,144,34,5,0,176,146,206,13,16,0,176,227,206,0,176,36,207,0,176,117,207,0,176,198,207,29,50,32,34,38,4,0,176,23,208,0,176,120,208,0,176,201,208,4,13,155,201,185,201,34,36,3,104,2,13,155,201,34,5,0,176,26,209,4,13,170,201,185,201,34,36,3,104,2,13,170,201,34,5,0,176,123,209,4,13,138,202,185,201,44,36,3,104,2,13,138,202,44,5,0,176,220,209,7,13,201,97,201,170,201,153,0,185,44,36,5,104,5,13,201,97,201,170,0,153,44,5,0,176,45,210,7,13,201,97,202,170,201,138,0,185,34,36,5,104,5,13,201,97,202,170,0,138,34,5,0,176,142,210,2,55,50,32,7,104,2,41,129,41,135,40,135,41,2,104,25,1,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,41,103,34,50,51,50,52,34,0,192,89,104,14,34,32,195,49,106,160,197,53,107,44,5,0,176,255,210,2,41,13,1,44,5,0,41,0,176,49,197,0,176,48,211,2,41,109,1,0,176,255,210,2,57,0,41,113,1,0,176,255,210,115,16,147,18,0,176,113,211,115,16,0,176,113,211,2,13,144,201,44,5,0,176,99,179,2,13,58,97,44,5,0,176,113,211,109,16,0,176,178,211,59,34,5,104,32,238,210,25,0,176,255,210,0,176,243,211,0,145,134,9,1,0,1,13,0,101,38,5,0,176,52,212,13,16,0,176,117,212,13,16,0,176,182,212,2,13,137,202,0,176,247,212,2,13,58,97,44,5,34,34,4,104,125,10,0,176,56,213,0,176,113,211,3,13,203,97,0,144,34,4,0,176,56,213,142,18,1,13,0,101,34,4,0,176,169,213,38,5,58,32,0,208,210,191,7,57,0,41,90,10,0,176,250,213,13,16,34,34,0,176,146,206,0,176,122,1,2,13,148,201,34,4,0,176,59,214,1,13,0,111,34,4,0,176,124,214,13,16,0,176,81,206,4,13,137,202,144,203,7,41,100,10,0,41,4,104,100,10,0,176,247,212,0,176,221,214,4,13,140,202,137,202,0,176,30,215,3,13,203,111,0,144,0,176,111,215,2,57,7,41,148,1,59,34,0,176,176,215,0,176,17,216,0,176,17,216,3,13,203,101,0,144,0,176,114,216,0,176,179,216,1,13,0,101,34,4,0,176,169,213,2,13,170,201,34,4,0,176,20,217,4,13,137,202,185,201,44,34,3,104,2,13,137,202,120,10,44,5,0,176,101,217,44,5,0,176,127,196,44,5,0,176,176,215,0,145,194,0,0,176,182,217,0,176,0,0,138,41,46,1,0,145,72,0,1,0,44,5,136,40,0,176,247,217,0,176,85,0,0,145,31,10,2,13,153,201,1,0,2,41,109,1,0,176,247,217,2,57,0,41,113,1,0,176,247,217,2,13,166,195,115,16,0,176,40,218,109,16,0,176,105,218,38,5,0,176,150,198,38,5,0,176,150,198,38,5,0,176,74,204,13,16,0,176,81,206,13,16,0,176,170,218,0,176,235,218,2,13,144,201,44,5,0,176,247,217,44,5,0,176,44,219,4,13,145,201,144,203,44,5,0,176,44,219,4,13,145,201,144,203,0,176,44,219,13,16,44,5,0,176,125,219,38,5,58,32,0,208,210,191,0,176,57,1,13,16,44,5,0,176,60,200,4,13,148,201,144,203,44,5,0,176,60,200,13,16,0,176,100,192,0,176,206,219,0,176,15,220,4,13,153,201,138,202,0,176,112,220,29,50,32,34,38,4,0,176,193,220,0,176,50,221,0,176,131,221,44,5,0,176,228,221,44,5,0,176,53,222,4,13,148,201,144,203,44,5,0,176,150,222,44,5,0,176,14,196,44,5,0,176,215,222,107,5,0,145,73,2,1,0,115,16,0,176,183,0,109,16,0,176,248,0,38,5,55,50,59,34,0,176,150,198,0,176,56,223,38,5,0,176,57,1,13,16,0,176,135,180,2,13,138,202,13,16,0,176,89,199,23,5,0,176,223,190,2,13,144,201,0,176,24,189,44,5,0,176,154,199,4,13,145,201,144,203,44,5,0,176,154,199,1,13,0,97,0,176,183,0,13,16,44,5,0,176,155,181,2,13,105,101,38,5,0,176,105,223,13,16,44,5,0,176,60,200,4,13,148,201,144,203,44,5,0,176,60,200,13,16,0,176,60,200,3,13,153,201,0,117,0,176,186,223,4,13,166,195,138,202,0,176,31,201,4,13,140,202,138,202,0,176,11,224,4,13,148,201,170,201,0,176,131,221,3,13,203,101,0,144,0,176,108,224,3,13,201,111,0,170,0,176,242,183,4,13,156,201,144,203,44,5,0,176,129,191,44,5,0,176,189,224,44,5,0,176,173,195,44,5,0,176,30,225,44,5,0,176,127,196,44,5,0,176,143,225,2,41,109,1,0,176,143,225,0,176,164,179,109,16,0,176,248,0,38,5,0,176,56,223,38,5,0,176,56,223,38,5,0,176,57,1,0,176,227,206,0,176,135,180,0,176,208,225,0,176,99,179,0,176,164,179,44,5,0,176,164,179,0,176,164,179,44,5,0,176,135,180,38,5,0,176,17,226,0,176,122,1,44,5,0,176,122,1,44,5,0,176,82,226,0,176,122,1,0,176,187,1,0,176,163,226,0,176,54,180,0,176,239,182,0,176,248,0,0,176,179,216,44,5,0,176,169,213,44,5,0,176,244,226,46,34,4,104,95,10,0,176,69,227,0,176,118,227,2,13,144,201,0,176,158,190,0,176,167,227,2,13,153,201,46,34,4,104,95,10,0,176,69,227,0,176,232,227,0,176,25,228,0,176,74,228,0,176,123,228,59,34,32,238,172,228,0,176,221,228,59,34,32,238,172,228,0,176,221,228,0,176,166,188,0,176,14,229,3,13,201,105,0,153,0,176,79,229,38,5,0,176,176,229,4,13,138,202,153,201,0,176,241,229,0,176,82,230,0,176,147,230,0,176,4,231,38,5,0,176,101,231,38,5,0,176,198,231,4,13,155,201,170,201,38,5,0,176,55,232,38,5,0,176,136,232,4,13,138,202,170,201,38,5,0,176,249,232,38,5,0,176,106,233,38,5,0,176,203,233,0,176,44,234,0,176,87,193,0,176,248,0,0,176,60,200,0,176,129,191,0,176,125,234,0,176,206,234,0,176,15,235,0,161,25,3,173,1,238,188,0,162,146,18,173,1,110,189,192,195,96,235,0,161,25,3,64,9,118,90,0,162,18,2,64,9,98,90,6,106,16,223,198,4,16,223,247,4,16,223,40,5,16,223,89,5,16,223,138,5,16,223,187,5,2,39,224,236,236,5,0,176,254,13,64,246,218,16,13,48,107,32,2,104,5,96,0,176,233,11,0,240,177,6,1,0,0,161,213,3,83,1,246,221,0,162,146,18,83,1,246,221,0,192,72,119,0,176,183,0,0,176,182,237,2,13,168,201,0,176,247,237,0,176,56,238,0,176,117,212,0,176,200,180,0,176,85,0,107,18,0,176,57,1,4,13,168,201,144,203,108,18,0,176,121,238,110,18,0,176,187,1,106,18,0,176,248,0,109,18,0,176,186,238,35,18,0,176,32,191,4,13,145,201,168,201,0,176,198,231,0,176,25,194,3,13,201,97,0,168,0,176,25,194,0,176,220,181,0,176,55,232,4,13,153,201,168,201,0,176,55,232,0,176,61,182,0,176,11,239,3,13,168,201,0,117,0,176,11,239,0,176,138,194,4,13,148,201,168,201,0,176,138,194,0,176,92,239,3,13,201,117,0,168,0,176,92,239,0,161,25,3,75,1,96,170,0,162,18,34,75,9,96,170,0,176,10,12,16,244,59,12,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,1,47,0,176,43,60,133,41,5,104,0,176,92,60,192,248,141,60,0,176,125,61,96,249,174,61,34,34,5,104,2,42,2,104,2,96,106,1,0,176,212,202,0,176,24,189,0,176,24,189,87,41,62,10,0,176,183,0,16,34,67,10,0,176,167,227,13,16,16,34,67,10,0,176,167,227,16,34,67,10,38,5,0,176,150,198,0,176,150,198,16,34,67,10,0,176,122,1,16,34,67,10,34,34,5,104,2,42,2,104,2,96,114,1,0,176,9,181,0,176,189,239,35,17,0,176,189,239,58,32,0,208,210,191,0,176,14,240,110,18,58,32,0,208,210,191,0,176,14,240,0,176,187,1,0,176,79,240,0,176,176,240,0,176,145,183,0,176,242,183,0,176,1,241,0,176,114,216,0,176,54,180,0,176,74,181,2,13,143,202,16,34,57,10,0,176,66,241,0,176,155,181,16,34,80,10,0,176,74,228,2,13,102,112,0,162,18,2,75,1,84,65,0,192,7,128,140,43,79,1,2,96,97,1,1,0,2,41,55,1,6,108,64,236,4,23,128,237,69,23,32,238,134,23,32,238,183,23,128,237,248,23,128,237,73,24,0,176,131,241,2,41,21,104,6,106,0,208,159,31,0,208,224,31,0,208,33,32,0,208,98,32,0,208,147,32,0,208,228,32,32,238,21,33,0,39,3,104,0,176,164,241,7,96,0,162,35,18,0,0,0,0,0,176,87,33,1,0,14,37,2,104,11,96,2,43,9,104,2,44,3,104,51,1,5,96,47,37,2,104,2,96,14,3,92,39,1,1,0,145,128,2,1,0,2,13,128,202,2,43,5,104,0,176,235,17,32,243,44,18,92,39,3,104,1,1,2,96,135,1,1,0,2,43,34,1,2,13,144,201,29,48,108,32,0,176,197,241,33,32,0,176,246,241,0,176,39,242,4,13,138,202,144,201,0,176,88,242,0,176,169,242,0,176,164,179,0,176,167,227,38,5,0,176,57,1,136,40,0,176,54,180,0,176,60,200,0,176,187,1,0,176,220,181,0,176,61,182,0,176,239,182,0,176,254,242,0,176,136,232,0,176,99,184,0,176,167,227,0,176,167,227,38,5,106,17,0,176,79,243,38,5,0,176,247,237,0,176,167,227,0,176,40,218,0,176,144,243,0,176,227,206,0,176,60,200,0,176,155,181,0,176,200,180,0,176,209,243,0,176,18,244,0,176,74,181,0,176,83,244,0,176,180,244,0,176,138,194,0,176,254,242,0,176,5,245,0,176,86,245,0,176,167,245,0,176,248,245,0,176,89,246,0,176,170,246,0,176,251,246,0,176,92,247,0,176,173,247,0,176,254,247,0,176,79,248,0,176,160,248,0,176,244,226,0,176,241,248,1,13,0,114,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,66,249,32,243,63,14,0,161,25,3,169,1,84,90,0,162,25,18,9,1,84,73,133,41,0,176,242,64,0,176,133,65,0,161,213,3,79,9,98,155,0,162,146,18,79,9,98,155,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,34,34,5,104,0,176,177,46,192,243,65,53,0,176,137,52,192,243,65,53,28,34,0,192,85,155,29,34,0,192,170,156,30,34,0,192,73,158,31,34,0,192,238,159,32,34,96,196,131,249,33,34,0,197,131,249,96,196,204,164,109,32,0,224,191,251,33,96,110,32,0,224,224,251,29,96,111,32,0,224,1,252,25,96,112,48,113,32,0,224,34,252,20,96,114,32,0,224,83,252,16,96,2,39,14,104,6,108,0,224,132,252,0,224,165,252,0,224,198,252,0,224,231,252,0,224,8,253,0,224,41,253,1,0,110,34,0,208,74,253,46,96,115,34,0,208,107,253,42,96,111,34,0,208,140,253,38,96,112,50,113,34,0,208,173,253,33,96,109,34,0,208,206,253,29,96,58,34,0,208,239,253,25,96,114,34,0,208,16,254,21,96,57,50,116,34,0,208,49,254,16,96,2,41,14,104,6,106,0,208,82,254,0,208,115,254,0,208,148,254,0,208,181,254,0,208,214,254,0,208,247,254,1,0,0,161,25,3,71,1,222,185,2,13,129,202,138,41,46,1,4,96,138,55,0,39,117,1,0,145,219,13,0,145,0,14,0,176,24,255,2,13,129,202,138,41,1,1,2,96,34,1,1,0,2,13,129,202,47,53,48,53,49,37,5,104,0,176,57,255,240,240,177,6,138,39,5,104,0,176,106,255,240,240,177,6,6,108,0,224,139,255,0,224,172,255,0,224,205,255,0,224,238,255,1,224,15,0,1,224,48,0,109,32,1,224,81,0,8,41,5,104,1,176,114,0,64,241,177,6,107,34,15,10,1,176,163,0,64,241,177,6,0,161,25,3,71,1,222,185,2,13,129,202,0,145,0,14,81,53,49,53,48,53,87,53,47,53,89,37,1,176,196,0,108,37,1,176,5,1,40,10,0,176,24,255,1,0,138,41,56,1,3,96,108,37,59,1,6,106,0,208,238,21,96,223,31,22,16,223,64,22,16,223,97,22,97,223,70,1,192,222,211,22,28,32,224,236,171,24,4,96,2,39,128,237,171,24,0,55,134,40,0,176,204,24,87,55,8,39,0,176,204,24,47,32,0,176,253,24,56,32,0,176,30,25,0,176,63,25,2,41,55,1,109,37,1,224,103,1,16,96,2,44,14,104,6,108,0,224,230,26,0,224,7,27,0,224,40,27,0,224,73,27,0,224,122,27,0,224,171,27,107,32,0,176,204,24,0,176,138,24,138,41,56,1,6,106,0,208,238,21,96,223,31,22,16,223,64,22,16,223,97,22,96,223,146,22,192,222,211,22,47,32,0,176,253,24,0,176,63,25,1,176,136,1,2,43,110,10,2,96,85,10,80,181,215,188,56,34,192,238,171,24,5,96,2,41,100,10,2,96,85,10,0,176,1,241,57,36,95,10,2,96,85,10,0,176,105,218,117,53,59,37,5,104,2,43,2,104,120,10,16,96,107,37,2,43,8,104,31,36,4,104,110,10,38,5,2,96,116,1,6,96,2,43,57,1,3,96,75,10,38,5,1,176,185,1,6,106,0,208,159,31,0,208,224,31,0,208,33,32,0,208,98,32,0,208,147,32,0,208,228,32,1,176,250,1,2,41,110,10,2,96,85,10,139,40,1,176,59,2,0,176,54,180,1,0,139,40,1,176,140,2,106,36,138,42,1,176,140,2,107,36,138,42,1,176,140,2,0,176,150,222,2,57,57,34,110,10,2,96,90,10,1,176,205,2,1,176,205,2,112,52,31,36,4,104,55,10,0,181,74,181,90,10,0,176,74,181,0,176,101,188,0,176,101,188,0,176,155,181,107,48,106,37,15,104,6,106,0,208,197,29,1,208,14,3,0,208,39,30,0,208,88,30,0,208,137,30,0,208,186,30,2,96,127,1,1,0,2,41,23,104,6,106,0,208,197,29,1,208,14,3,0,208,39,30,0,208,88,30,0,208,137,30,0,208,186,30,32,238,235,30,0,39,3,104,0,176,12,31,0,176,12,31,11,96,0,162,25,18,0,0,0,0,31,32,3,104,0,176,61,31,0,176,110,31,1,0,0,176,169,242,128,34,0,176,105,218,1,176,63,3,0,176,15,235,1,176,63,3,0,161,213,3,173,9,84,90,0,162,18,34,73,9,84,73,2,47,15,104,0,161,213,3,73,5,84,73,133,41,5,104,0,176,84,47,0,240,133,47,0,176,84,47,0,240,139,48,1,47,7,104,107,36,3,104,1,176,144,3,0,176,35,47,133,57,55,34,5,104,0,176,228,48,0,240,133,47,56,34,0,176,220,50,107,34,5,104,1,176,193,3,32,243,139,48,0,176,220,50,96,244,139,48,0,161,21,29,77,5,98,170,0,162,18,2,77,9,98,170,1,47,7,104,107,36,3,104,1,176,226,3,0,176,29,51,133,41,5,104,0,176,78,51,32,243,127,51,107,36,5,104,0,176,177,46,32,243,127,51,0,176,137,52,128,242,186,52,0,162,18,2,171,1,84,65,0,41,0,192,83,125,0,197,7,128,0,161,213,3,73,9,238,172,0,162,18,34,73,5,46,173,1,47,7,104,107,36,3,104,1,176,19,4,0,176,43,60,133,41,5,104,0,176,92,60,0,240,141,60,107,36,5,104,1,176,68,4,65,241,117,4,0,176,125,61,65,241,117,4,0,161,213,3,77,1,238,188,0,162,146,18,77,1,110,189,133,41,0,192,137,116,31,50,38,34,208,194,72,119,106,34,128,194,186,120,107,34,4,104,22,10,32,195,123,123,128,194,123,123,0,162,146,50,77,9,98,162,2,47,7,104,0,161,25,3,79,1,222,154,0,176,155,37,6,106,0,208,220,37,0,208,29,38,0,208,94,38,0,208,159,38,0,208,224,38,0,208,33,39,138,39,3,43,0,176,98,39,0,55,50,32,0,176,147,39,138,41,4,104,60,10,1,176,37,5,1,0,58,50,2,41,50,1,2,96,1,1,1,0,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,133,41,0,197,110,97,14,34,96,196,132,100,106,34,32,195,79,101,107,34,4,104,20,10,0,197,110,97,160,197,151,171,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,138,41,1,1,208,194,77,102,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,41,208,194,13,69,48,50,47,50,49,34,208,194,73,134,208,194,117,136,0,161,25,3,77,1,102,172,0,162,18,2,77,1,102,172,47,37,30,10,0,41,208,194,93,138,208,194,9,141,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,128,194,41,103,107,34,4,104,20,10,33,195,86,5,128,194,39,173,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,2,57,58,50,57,34,224,193,39,173,1,1,1,0,0,41,47,1,5,96,138,41,1,1,2,96,134,1,1,0,0,161,25,3,169,1,84,90,0,162,18,2,169,1,84,73,2,47,4,104,0,145,192,3,1,0,133,41,5,104,0,176,242,64,0,240,129,62,134,40,3,43,35,10,4,96,127,52,107,36,30,10,0,176,133,65,192,243,129,62,13,16,0,176,158,190,0,162,25,18,13,1,98,170,86,36,0,176,29,51,133,57,0,41,5,104,0,176,220,68,208,242,13,69,47,37,30,10,0,176,186,71,208,242,13,69,2,57,127,50,57,34,6,104,35,10,0,176,186,71,128,242,117,136,1,1,1,0,0,41,87,1,6,96,2,57,127,34,86,1,2,96,1,1,1,0,0,176,105,218,0,176,200,180,1,176,36,6,38,5,0,176,150,198,0,176,208,225,1,176,117,6,1,176,182,6,1,176,7,7,0,161,25,3,71,1,222,185,138,41,46,1,1,176,72,7,128,247,177,6,14,16,106,34,0,176,247,217,1,176,137,7,1,176,137,7,13,18,106,34,0,176,247,217,0,176,170,218,0,176,247,217,14,16,0,176,255,210,0,176,85,0,38,5,0,176,17,226,38,5,1,176,202,7,38,5,0,176,247,237,0,176,114,216,0,176,114,216,1,176,11,8,0,176,105,218,0,176,40,218,0,176,144,243,0,176,24,189,0,176,186,238,0,176,54,180,0,176,135,180,0,176,93,190,0,176,208,225,0,176,200,180,1,176,92,8,1,176,157,8,0,176,206,234,0,176,54,203,1,176,222,8,1,176,47,9,0,176,211,197,1,176,112,9,1,176,193,9,1,176,193,9,0,176,180,244,1,176,2,10,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,1,47,0,176,35,47,0,176,21,49,96,244,230,171,0,161,21,28,77,1,94,170,0,162,146,18,77,1,94,162,133,41,48,194,49,106,32,195,49,106,0,161,213,3,77,1,94,170,0,162,146,18,77,1,94,162,1,47,0,176,29,51,1,176,99,10,128,242,49,106,2,13,136,202,0,161,213,3,71,1,100,170,0,162,146,18,71,65,100,162,0,192,39,173,3,13,136,202,0,104,0,161,213,3,71,1,100,170,0,162,146,18,71,65,100,162,0,192,53,107,2,13,150,201,0,161,213,3,71,5,100,170,0,162,18,2,71,69,100,170,1,47,1,176,226,3,133,41,5,104,0,176,78,51,0,240,127,51,0,176,177,46,0,240,186,52,3,13,150,201,0,104,0,161,213,3,71,5,100,170,0,162,18,2,71,69,100,170,1,47,1,176,226,3,0,176,177,46,0,240,53,107,0,145,20,5,2,13,104,99,1,0,0,161,227,83,85,1,246,221,0,162,18,2,85,33,246,221,1,47,0,176,54,59,0,176,54,59,0,240,9,113,0,161,149,18,76,5,238,172,0,162,146,18,76,1,110,189,1,47,1,176,148,10,133,41,5,104,1,176,148,10,48,242,182,175,1,176,148,10,32,243,182,175,193,195,197,10,0,176,158,190,108,18,0,176,183,0,2,13,140,202,136,41,63,34,13,1,0,176,170,218,2,43,1,1,108,1,1,0,1,176,145,11,0,176,248,0,0,176,248,0,136,40,130,40,1,176,210,11,1,176,202,7,0,176,57,1,0,176,54,180,0,176,54,180,122,18,0,176,206,219,0,176,206,219,2,13,137,202,1,176,19,12,40,44,2,104,2,96,151,18,0,176,206,219,2,13,137,202,1,176,19,12,1,176,84,12,0,176,87,193,0,176,85,0,2,13,144,201,1,176,181,12,0,176,113,211,0,176,248,0,0,176,248,0,1,176,202,7,0,176,57,1,0,176,54,180,0,176,54,180,0,176,208,225,0,176,208,225,0,176,239,182,1,176,2,10,0,161,213,3,76,9,94,170,0,162,18,2,76,9,94,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,34,34,5,104,0,176,177,46,64,246,65,53,32,179,137,52,192,243,229,184,0,176,81,206,0,176,105,218,38,5,0,176,79,243,0,176,150,222,0,176,208,225,1,176,246,12,0,176,66,241,0,176,57,1,0,176,215,198,0,176,183,0,0,176,186,238,0,176,200,180,0,176,74,181,0,176,155,181,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,0,192,207,168,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,133,41,208,194,49,106,32,195,49,106,47,34,0,192,1,0,47,1,1,0,0,161,213,3,76,9,94,170,0,162,18,2,76,9,94,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,65,53,34,34,5,104,0,176,177,46,224,246,65,53,0,176,137,52,224,246,65,53,138,41,56,1,0,145,194,0,28,32,224,236,171,24,4,96,2,39,128,237,171,24,0,39,0,176,204,24,47,32,0,176,253,24,0,176,63,25,1,176,55,13,38,5,1,176,202,7,38,5,1,176,202,7,0,176,105,218,0,176,105,218,0,176,40,218,0,176,40,218,110,16,0,176,113,211,0,176,113,211,2,13,144,201,0,176,204,204,0,176,60,200,0,176,60,200,0,176,187,1,0,176,187,1,1,176,120,13,0,176,254,242,0,176,248,245,1,176,217,13,0,176,138,194,0,176,99,184,1,176,58,14,0,176,251,246,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,254,13,32,243,63,14,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,119,166,161,197,139,14,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,41,103,48,199,39,173,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,197,151,171,55,34,0,192,79,101,128,199,132,100,0,161,213,3,77,1,238,188,0,162,146,18,77,1,110,189,133,41,0,192,137,116,31,50,61,34,0,192,72,119,55,34,0,192,186,120,192,195,70,122,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,192,119,177,0,176,212,202,58,32,0,208,210,191,0,176,14,240,0,176,150,198,0,176,74,181,0,176,155,181,0,176,200,180,0,176,167,227,13,16,0,176,182,237,1,176,191,15,1,176,191,15,129,40,7,104,136,40,3,104,1,176,181,12,1,176,0,16,0,176,183,0,129,40,1,176,181,12,1,176,65,16,0,176,211,197,0,176,64,183,13,17,117,1,1,0,1,176,130,16,1,176,195,16,0,176,145,183,0,176,92,247,0,176,163,226,0,176,61,182,1,176,20,17,0,161,25,3,73,9,238,172,0,162,18,34,73,9,46,173,99,37,1,1,140,43,2,104,2,96,99,1,133,41,5,104,0,176,12,94,0,240,213,89,1,176,117,17,193,248,166,17,1,13,0,32,1,0,136,40,5,104,47,50,70,34,2,104,126,1,0,145,78,6,1,0,136,40,5,104,47,50,70,34,2,104,126,1,126,32,47,1,0,145,3,3,1,0,136,40,5,104,48,50,69,34,2,104,126,1,0,145,43,6,1,0,136,40,5,104,48,50,69,34,2,104,126,1,126,32,48,1,0,145,184,2,1,0,136,40,5,104,87,50,86,34,2,104,126,1,0,145,116,5,1,0,136,40,5,104,87,50,86,34,2,104,126,1,126,32,87,1,0,145,116,5,1,0,106,16,0,176,183,0,2,13,144,201,1,176,181,12,0,41,0,176,229,179,0,176,105,218,1,176,217,19,38,5,1,176,26,20,1,176,91,20,0,176,200,180,2,13,168,201,1,176,156,20,1,176,221,20,1,176,62,21,1,13,0,114,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,254,13,32,243,63,14,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,133,41,48,194,49,106,192,195,49,106,0,161,227,83,85,1,246,221,0,162,25,18,51,37,246,221,133,41,224,193,202,114,192,195,202,114,0,161,213,3,76,9,94,170,0,162,18,2,76,9,94,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,87,41,5,104,0,176,177,46,224,246,65,53,0,176,137,52,224,246,65,53,0,161,232,83,83,9,246,221,0,162,50,82,83,41,246,221,1,47,1,176,159,21,133,41,5,104,0,176,78,51,129,242,208,21,87,41,5,104,0,176,177,46,1,245,208,21,0,176,137,52,1,245,208,21,0,145,22,6,3,13,202,100,0,145,1,0,0,145,20,5,3,13,201,116,0,149,1,0,0,145,84,1,2,41,0,176,180,184,1,0,0,162,18,2,75,1,84,65,133,41,0,192,83,125,87,34,0,202,7,128,192,200,7,128,38,5,0,176,247,237,38,5,0,176,176,229,1,176,213,22,0,176,167,227,0,176,105,218,0,176,183,0,0,176,183,0,0,176,60,200,0,176,60,200,0,176,209,243,0,176,200,180,0,176,220,181,0,176,61,182,1,176,6,23,0,176,239,182,1,176,87,23,3,13,204,114,0,169,0,176,52,4,5,13,204,114,203,169,0,144,0,176,52,4,3,13,204,114,0,157,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,216,74,33,243,168,23,5,13,204,114,204,157,0,138,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,1,176,83,26,145,241,168,23,3,13,204,108,0,169,0,176,133,4,5,13,204,108,203,169,0,144,0,176,133,4,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,41,103,0,192,39,173,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,197,132,100,55,34,0,192,79,101,128,199,132,100,0,176,105,218,0,176,113,211,0,176,117,212,0,176,187,1,1,176,132,26,0,161,25,3,77,1,106,172,0,162,18,2,77,1,106,172,133,41,161,197,213,26,225,198,213,26,0,161,213,3,77,1,102,156,133,41,129,194,58,29,33,195,58,29,3,13,201,116,0,149,0,161,227,83,85,1,114,205,133,41,33,195,253,30,33,195,253,30,0,161,25,3,75,1,232,171,0,162,18,34,75,9,232,171,133,41,5,104,0,176,167,74,1,245,213,26,0,176,216,74,97,249,213,26,0,161,213,3,81,9,102,172,0,162,18,34,81,9,102,172,1,47,0,176,250,53,133,41,5,104,0,176,43,54,33,243,58,29,1,176,157,32,1,245,58,29,3,13,202,100,0,145,0,161,227,83,85,9,114,205,1,47,0,176,250,53,133,41,5,104,0,176,43,54,33,243,253,30,1,176,157,32,1,245,253,30,1,176,136,1,0,176,143,225,120,18,0,176,183,0,0,176,183,0,1,176,181,12,0,176,105,218,0,176,248,0,136,18,38,5,1,176,202,7,38,5,0,176,247,237,0,176,60,200,137,18,0,176,200,180,0,176,209,243,0,176,239,182,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,133,41,48,194,49,106,32,195,49,106,0,161,21,28,77,9,98,170,0,162,18,2,77,9,98,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,34,34,5,104,0,176,177,46,0,240,186,52,0,176,137,52,32,243,186,52,0,161,25,3,77,1,238,188,0,162,146,18,77,1,110,189,208,194,16,153,1,13,0,32,16,4,0,176,134,0,0,161,213,3,87,1,246,221,0,162,146,18,87,1,246,221,0,192,72,119,3,13,202,100,0,145,0,161,227,83,85,9,246,221,1,47,0,176,250,53,133,41,5,104,0,176,43,54,0,240,92,54,0,176,234,56,0,240,30,58,38,5,0,176,56,223,2,13,144,201,0,176,99,179,1,13,0,114,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,254,13,32,243,63,14,0,161,213,3,77,1,96,170,0,162,146,18,77,1,96,162,133,41,49,194,206,32,33,195,206,32,0,161,21,28,77,9,98,170,0,162,18,2,77,9,98,170,1,47,0,176,29,51,133,41,5,104,1,176,156,33,1,240,206,32,1,176,156,33,33,243,206,32,31,50,30,34,1,192,205,33,2,41,1,192,197,36,97,196,197,36,28,34,0,192,85,155,31,50,30,34,1,192,205,33,2,41,1,192,197,36,97,196,197,36,0,161,213,3,81,9,238,188,0,162,18,34,81,9,46,173,1,47,0,176,250,53,0,176,234,56,1,240,229,38,3,13,202,100,0,145,0,161,227,83,85,9,246,221,1,47,0,176,250,53,0,176,234,56,1,240,185,41,0,161,213,3,77,1,238,188,33,195,168,43,3,13,201,116,0,149,0,161,227,83,85,1,246,221,1,192,185,41,0,161,25,3,75,1,232,171,0,162,18,34,75,9,232,171,133,41,5,104,0,176,216,74,33,243,229,38,0,176,216,74,193,243,229,38,0,161,25,3,77,1,106,172,0,162,18,2,77,1,106,172,133,41,193,195,229,38,97,196,229,38,106,18,0,176,183,0,1,176,145,11,122,18,0,176,114,216,8,59,3,43,0,176,167,227,0,176,248,0,1,0,122,17,0,176,105,218,38,5,0,176,57,1,1,18,37,1,1,0,38,5,0,176,79,243,125,18,0,176,54,180,8,59,3,43,0,176,60,200,0,176,54,180,1,0,125,17,0,176,135,180,109,18,0,176,200,180,0,176,200,180,0,176,117,207,0,176,239,182,0,176,242,183,1,176,145,11,0,176,229,179,38,5,1,176,210,11,0,176,54,180,0,176,187,1,0,176,113,211,0,176,248,0,0,176,14,240,0,176,186,238,1,176,205,2,0,176,74,181,1,176,238,45,0,176,163,226,1,176,182,6,0,176,64,183,1,176,63,46,0,176,242,183,2,13,176,202,28,34,0,192,85,155,29,34,0,192,170,156,30,34,0,192,73,158,31,34,0,192,238,159,32,34,0,192,84,161,33,34,0,192,3,163,96,196,204,164,0,176,167,227,0,176,105,218,0,176,122,1,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,134,40,2,41,6,104,0,55,8,39,2,104,2,96,98,1,1,47,0,176,43,60,133,41,5,104,0,176,92,60,0,240,141,60,0,176,125,61,0,240,174,61,134,40,2,41,7,104,0,55,8,55,55,32,2,104,2,96,84,1,0,145,224,6,1,0,134,40,2,41,6,104,0,55,8,39,2,104,2,96,80,1,0,145,184,2,1,0,0,145,244,3,133,41,5,104,0,176,56,66,128,242,105,66,1,0,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,41,192,195,13,69,48,50,47,50,49,34,0,192,73,134,0,197,117,136,2,13,139,202,0,161,25,3,169,5,84,90,0,162,5,18,9,1,84,73,133,41,5,104,0,176,242,64,0,245,129,62,1,176,144,46,0,245,129,62,122,17,1,176,193,46,2,13,144,201,0,176,24,189,13,17,0,176,248,0,13,17,0,176,105,218,0,176,105,218,109,17,0,176,122,1,109,17,0,176,54,180,0,176,9,181,109,17,0,176,200,180,0,176,56,223,0,176,206,234,38,5,1,176,2,47,1,176,112,9,1,176,193,9,4,13,144,201,131,204,1,176,67,47,8,13,144,201,131,204,138,202,131,204,1,176,132,47,7,13,204,111,201,131,204,170,0,131,1,176,213,47,0,176,24,189,2,41,1,1,0,176,24,189,0,176,164,179,0,176,221,228,0,176,248,0,38,5,0,176,56,223,2,41,57,1,38,5,0,176,56,223,0,176,93,190,0,176,200,180,136,40,2,41,58,1,0,176,208,225,38,5,0,176,239,182,38,5,0,176,64,183,38,5,1,176,70,48,0,176,61,182,1,176,183,48,1,13,0,114,0,161,25,3,73,1,98,170,0,162,18,34,73,9,98,170,0,176,254,13,32,243,63,14,0,145,116,5,1,13,0,115,1,0,2,13,190,201,0,161,213,3,79,5,98,170,0,162,18,2,79,9,98,170,1,47,0,176,221,185,0,176,14,186,128,242,186,52,2,13,144,201,0,176,24,189,2,13,144,201,2,41,1,1,0,176,24,189,130,18,0,176,164,179,4,13,144,201,131,204,0,176,54,203,8,13,144,201,131,204,138,202,131,204,1,176,132,47,110,17,0,176,105,218,110,17,0,176,248,0,2,13,168,201,1,176,8,49,38,5,0,176,57,1,2,13,168,201,2,41,1,1,38,5,1,176,8,49,0,176,24,199,40,18,0,176,54,180,0,176,206,219,2,41,58,1,0,176,206,219,1,176,63,46,2,13,129,202,0,161,25,3,71,1,222,185,138,41,46,1,1,176,73,49,128,247,177,6,0,145,134,5,2,13,131,202,1,0,2,13,178,202,2,41,38,1,123,32,4,104,30,10,1,176,138,49,124,32,1,176,203,49,125,32,1,176,28,50,1,176,93,50,122,18,38,5,0,176,57,1,0,176,167,227,2,13,168,201,1,176,8,49,0,176,164,179,0,176,247,217,1,176,142,50,0,176,209,243,0,176,155,181,0,176,108,224,1,176,207,50,1,176,6,23,1,176,48,51,1,176,161,51,1,176,242,51,1,176,67,52,1,176,148,52,1,176,245,52,1,176,70,53,138,41,46,1,6,106,16,223,198,4,16,223,247,4,16,223,40,5,16,223,89,5,16,223,138,5,16,223,187,5,2,39,224,236,236,5,47,48,48,48,49,32,0,176,135,11,0,176,184,11,0,145,208,0,0,162,18,2,0,32,0,0,1,0,0,145,174,1,0,162,18,34,83,41,84,65,1,0,0,145,214,1,0,162,146,50,83,41,98,162,1,0,0,145,192,6,0,162,210,19,73,33,84,65,1,0,0,145,211,6,0,162,146,18,79,33,98,164,1,0,0,145,9,6,0,162,146,18,77,33,98,162,1,0,0,145,94,5,0,162,18,2,75,33,84,65,1,0,0,161,25,3,77,1,98,170,0,162,146,18,77,33,98,162,32,195,80,80,0,161,25,3,77,1,106,172,0,162,18,2,77,33,106,172,0,192,80,85,0,162,18,34,73,41,84,73,31,34,5,104,0,176,25,50,0,240,139,48,0,176,220,50,0,240,139,48,0,145,224,6,0,161,213,3,79,9,98,172,0,162,18,2,79,41,98,172,1,0,0,162,136,20,73,45,98,170,31,34,9,104,0,161,25,3,71,1,98,170,1,176,151,53,0,240,177,6,1,176,200,53,0,240,177,6,0,161,25,3,169,1,84,90,0,162,25,18,9,33,84,73,133,41,5,104,0,176,242,64,0,240,129,62,0,176,133,65,0,240,129,62,0,162,25,18,13,33,98,170,133,41,5,104,0,176,220,68,0,240,13,69,0,176,186,71,0,240,13,69,0,161,25,3,75,33,232,171,0,162,18,34,75,9,232,171,133,41,5,104,0,176,167,74,0,240,28,72,0,176,216,74,0,240,28,72,136,40,130,40,35,34,1,1,128,40,1,176,249,53,0,176,164,179,0,176,167,227,38,5,0,176,57,1,0,176,122,1,0,161,213,26,77,5,96,170,0,162,146,18,77,1,96,162,133,41,1,192,58,54,1,192,58,54,0,161,213,3,77,1,238,188,0,162,146,18,77,1,110,189,133,41,0,192,137,116,87,41,0,192,184,117,55,34,0,192,186,120,96,196,70,122,0,176,66,241,0,176,248,0,0,176,229,179,0,176,54,180,0,176,93,190,1,176,183,48,1,176,70,48,1,176,132,26,0,176,167,245,0,162,18,2,75,1,84,65,0,192,7,128,38,5,58,32,0,208,210,191,0,176,14,240,38,5,0,176,247,237,0,176,114,216,110,17,0,176,85,198,0,176,229,179,13,16,1,176,213,22,2,13,153,201,1,176,125,54,1,176,190,54,1,176,15,55,2,13,137,202,1,176,80,55,1,176,246,12,1,176,145,55,0,176,13,205,130,40,136,40,1,176,181,12,1,176,145,11,0,176,40,218,1,176,194,55,0,176,122,1,0,176,54,180,0,176,18,244,0,176,200,180,0,161,25,3,179,1,110,189,0,162,146,18,179,1,110,189,193,195,3,56,0,176,212,202,0,176,247,217,38,5,0,176,247,237,38,5,58,32,0,208,210,191,0,176,57,1,1,176,117,6,1,176,21,58,1,176,86,58,1,176,151,58,13,16,0,176,105,218,0,176,229,179,0,176,114,216,1,176,216,58,1,176,216,58,1,176,7,7,1,176,7,7,0,176,122,1,0,176,186,238,0,176,208,225,0,176,200,180,2,13,137,202,1,176,25,59,4,13,137,202,144,203,1,176,90,59,38,5,0,176,179,216,38,5,1,176,171,59,38,5,0,176,138,194,4,13,137,202,170,201,38,5,0,176,167,245,1,176,252,59,1,176,77,60,38,5,0,176,56,223,38,5,37,18,0,176,79,243,38,5,0,176,150,198,38,5,107,18,0,176,150,198,0,176,105,218,0,176,178,211,1,176,181,12,35,18,0,176,139,204,1,176,91,20,112,18,0,176,82,226,0,176,209,243,40,18,0,176,200,180,1,176,190,60,115,18,0,176,66,241,1,176,255,60,117,18,1,176,255,60,0,176,17,216,119,18,0,176,17,216,0,176,64,183,121,18,0,176,64,183,0,176,248,245,123,18,0,176,248,245,1,176,64,61,125,18,1,176,64,61,1,176,129,61,127,18,1,176,129,61,0,176,242,183,0,176,66,241,2,13,35,109,0,162,18,34,75,9,84,65,1,176,210,61,2,13,35,110,0,162,146,50,77,9,98,162,6,106,0,208,220,37,0,208,29,38,0,208,94,38,0,208,159,38,0,208,224,38,0,208,33,39,1,176,19,62,3,13,178,201,0,35,0,162,18,98,81,13,110,189,1,176,84,62,3,13,139,197,0,35,0,162,148,50,75,13,110,189,6,106,0,208,211,43,0,208,4,44,0,208,53,44,0,208,102,44,0,208,151,44,0,208,200,44,1,176,149,62,2,13,35,108,144,193,220,145,3,13,108,116,0,35,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,33,195,214,62,2,13,35,114,1,176,48,65,0,240,177,6,0,161,213,26,75,5,84,90,0,162,18,34,73,9,84,74,0,192,139,48,0,161,213,3,77,9,98,170,0,162,18,2,77,9,98,170,133,41,0,192,127,51,0,197,186,52,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,133,41,0,192,141,60,96,201,174,61,0,161,213,3,73,9,238,172,0,162,18,34,73,9,46,173,1,47,0,176,43,60,133,41,5,104,0,176,92,60,0,240,141,60,0,176,125,61,161,245,81,65,0,161,25,3,77,1,238,188,0,162,146,18,77,1,110,189,224,193,16,153,2,13,173,201,0,176,148,29,2,13,173,201,0,176,148,29,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,0,192,117,136,2,13,178,201,0,162,23,114,81,13,114,205,2,47,5,104,0,208,120,40,0,176,153,40,6,106,0,208,218,40,0,208,59,41,0,208,140,41,0,208,237,41,0,208,78,42,0,208,191,42,0,39,0,176,32,43,138,41,10,104,65,36,3,104,37,10,4,96,65,37,2,104,50,10,0,176,65,43,1,0,2,44,2,104,2,96,14,3,0,181,254,13,32,243,63,14,0,161,227,83,85,9,246,221,1,47,0,176,250,53,133,41,5,104,0,176,43,54,0,240,92,54,1,0,0,161,227,83,85,1,246,221,0,192,9,113,0,162,18,34,75,9,84,65,2,47,11,104,0,161,25,3,75,1,212,114,133,41,3,104,0,176,0,35,0,176,65,35,0,208,69,36,0,176,24,37,2,41,38,1,111,32,1,176,203,49,1,176,203,65,88,32,113,1,25,10,1,176,252,65,132,45,115,1,132,40,37,1,1,176,61,66,1,176,110,66,132,40,6,104,57,37,3,104,35,1,2,96,37,1,1,176,252,65,132,40,36,1,73,44,115,1,1,176,252,65,132,40,6,104,57,37,3,104,36,1,2,96,118,1,73,44,115,1,1,176,252,65,1,176,175,66,132,40,6,104,57,37,3,104,36,1,2,96,119,1,1,176,240,66,132,45,6,104,57,32,3,104,117,1,2,96,120,1,132,40,6,104,57,37,3,104,36,1,2,96,119,1,1,176,49,67,132,45,115,1,132,40,36,1,73,44,121,1,1,176,49,67,120,1,1,0,124,18,1,176,114,67,73,44,126,1,132,40,39,1,1,176,179,67,1,176,228,67,1,176,37,68,1,176,118,68,124,18,1,176,199,68,88,32,3,104,113,18,119,1,89,32,3,104,113,18,119,1,108,32,3,104,113,18,119,1,37,18,1,176,248,68,1,176,73,69,132,40,4,104,100,10,1,176,138,69,0,176,251,194,1,0,132,40,0,176,40,218,73,44,2,104,115,1,1,0,132,40,6,104,57,37,3,104,132,1,2,96,118,1,73,44,124,1,0,176,158,190,0,176,56,238,1,176,235,69,57,37,2,104,12,96,132,40,7,104,73,44,3,104,118,1,2,96,132,1,4,96,73,44,2,104,115,1,136,40,0,176,24,189,1,176,44,70,132,45,35,1,132,40,6,104,57,37,3,104,35,1,2,96,132,1,0,176,158,190,0,176,24,189,0,161,153,55,75,1,94,170,0,162,18,2,75,9,94,170,1,176,109,70,33,243,174,70,5,146,188,29,1,0,5,146,60,30,1,0,5,146,188,30,1,0,5,146,60,31,1,0,5,146,188,31,5,147,60,32,1,0,5,146,188,32,5,147,60,33,1,0,5,146,60,30,1,0,1,176,249,53,1,176,193,46,0,176,221,228,0,176,248,0,38,5,58,37,0,208,88,30,0,176,79,243,1,176,194,55,0,176,186,238,1,176,111,72,1,176,176,72,1,176,241,72,1,176,241,72,1,176,50,73,0,176,239,182,1,176,147,73,1,176,147,73,0,176,64,183,0,176,145,183,1,176,70,48,0,176,242,183,0,176,99,184,1,176,228,73,1,176,53,74,0,176,87,193,0,176,61,182,1,176,183,48,0,176,142,182,0,176,186,223,0,176,186,223,1,176,150,74,0,176,241,248,0,176,173,195,0,161,25,3,83,1,238,188,0,162,146,18,83,1,110,189,32,195,183,150,138,41,59,1,0,145,194,0,1,176,247,74,5,146,188,29,1,0,5,146,188,30,1,0,5,146,188,29,1,0,5,146,60,30,1,0,5,146,188,30,1,0,5,146,188,29,1,0,5,146,60,30,1,0,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,0,192,207,168,0,161,213,3,77,1,238,188,133,41,0,192,41,109,0,192,121,111,0,161,213,3,75,1,238,172,0,162,146,18,75,5,110,189,133,41,0,192,0,0,31,34,0,192,72,119,34,50,51,34,0,192,184,117,55,34,0,192,186,120,14,34,96,196,70,122,0,192,123,123,0,161,213,19,75,1,84,115,0,162,210,18,73,5,84,65,133,41,0,192,0,0,0,192,77,102,0,161,213,3,81,1,98,170,0,162,146,18,77,5,98,162,133,41,0,192,0,0,0,192,53,107,1,176,7,7,1,176,120,13,0,176,163,226,1,176,56,75,1,176,185,75,0,176,24,189,0,176,108,224,1,176,74,76,0,176,229,179,0,176,64,183,1,176,171,76,1,176,183,48,38,5,49,52,66,36,4,104,75,10,0,176,150,198,0,176,57,1,1,176,44,77,0,176,142,182,2,41,66,1,1,176,189,77,0,176,122,1,1,176,14,78,0,176,138,194,0,176,89,246,1,176,127,78,49,52,66,36,0,176,208,225,0,176,200,180,1,176,224,78,0,176,99,184,0,176,155,181,1,176,65,79,0,176,203,233,0,176,74,181,5,146,8,62,1,0,5,146,60,30,1,0,5,146,188,31,1,0,5,146,60,30,1,0,5,146,60,30,1,0,5,146,188,30,1,0,5,146,188,30,1,0,5,146,60,30,1,0,5,146,60,30,1,0,5,146,188,29,1,0,0,162,146,50,77,9,98,162,6,106,0,208,220,37,0,208,29,38,0,208,94,38,0,208,159,38,0,208,224,38,0,208,33,39,138,41,1,176,37,5,0,176,147,39,0,162,25,50,87,9,230,171,6,106,0,208,211,43,0,208,4,44,0,208,53,44,0,208,102,44,0,208,151,44,0,208,200,44,0,39,0,176,75,45,138,41,1,176,162,79,1,0,0,145,194,0,31,36,0,208,97,22,0,176,204,24,2,41,18,104,6,106,0,208,159,31,0,208,224,31,0,208,33,32,0,208,98,32,0,208,147,32,0,208,228,32,32,238,21,33,0,176,54,33,0,162,35,18,0,0,0,0,0,176,87,33,1,0,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,0,192,132,100,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,0,192,230,171,0,162,18,2,75,1,84,65,0,192,7,128,0,161,21,21,77,1,98,170,0,162,146,18,77,1,98,162,129,194,58,54,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,0,192,41,103,2,161,213,3,73,5,226,155,2,162,210,19,73,5,226,155,177,196,211,79,2,161,213,3,73,5,226,155,2,162,210,19,73,5,226,155,0,197,182,175,3,13,201,116,0,149,0,161,213,3,85,1,246,221,1,192,130,80,4,13,201,116,104,149,0,161,213,3,85,1,246,221,1,197,150,82,2,13,149,201,0,161,25,3,85,1,246,221,65,193,229,38,0,161,25,3,73,1,100,171,0,162,18,2,73,1,100,171,133,41,32,195,117,143,32,195,117,143,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,97,196,102,85,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,192,195,207,168,0,161,25,3,73,1,100,171,0,162,18,2,73,1,100,171,1,192,132,87,0,161,25,3,73,1,100,171,0,162,18,2,73,1,100,171,1,192,127,90,1,176,162,79,66,34,1,176,183,93,0,176,183,0,66,34,0,176,32,191,0,176,113,211,0,176,193,220,1,176,248,93,66,34,1,176,137,7,0,176,235,199,0,176,49,197,0,176,182,237,0,176,120,208,66,34,0,176,154,189,50,34,1,176,210,11,0,176,57,1,1,176,73,94,1,176,138,94,1,176,203,94,1,176,28,95,1,176,125,95,1,176,206,95,1,176,31,96,66,34,0,176,211,197,0,176,82,226,1,176,128,96,0,176,198,207,1,176,127,78,66,34,1,176,193,9,0,176,200,180,1,176,193,96,1,176,70,53,1,176,18,97,0,176,241,229,1,176,115,97,1,176,212,97,66,34,0,176,123,228,1,176,238,45,1,176,20,17,1,176,53,98,1,176,134,98,1,176,215,98,0,176,167,245,0,176,57,1,0,176,167,227,1,176,181,12,106,17,1,176,145,11,0,176,24,199,1,176,40,99,139,40,122,1,138,41,138,42,122,1,1,176,202,7,0,176,247,237,139,40,111,1,138,41,138,42,111,1,1,176,190,54,0,176,221,214,139,40,107,1,138,41,138,42,107,1,0,176,167,227,0,176,105,218,0,176,155,181,1,176,0,16,139,40,109,1,138,41,138,42,109,1,0,176,209,243,0,176,9,181,2,13,175,201,1,176,105,99,139,40,108,1,138,41,138,42,108,1,0,176,150,222,0,176,122,1,0,161,222,19,87,1,246,204,0,162,18,2,85,1,118,205,133,41,0,197,72,119,0,192,72,119,1,47,0,176,54,59,0,161,213,3,85,9,246,221,0,162,18,2,85,41,246,221,2,47,5,104,0,176,152,59,192,243,72,119,0,176,250,59,192,243,72,119,1,176,202,7,57,34,0,176,150,198,0,176,56,238,0,176,215,198,1,176,213,22,0,176,182,237,0,176,227,206,1,176,170,99,1,176,235,99,1,176,44,100,0,176,206,219,1,176,190,54,1,176,87,23,0,176,31,201,0,176,158,190,0,161,25,3,173,1,238,188,0,162,146,18,173,1,110,189,192,195,96,235,0,161,222,19,87,1,246,204,0,162,18,2,85,1,118,205,133,41,0,197,72,119,0,192,72,119,0,161,213,3,85,9,246,221,0,162,18,2,85,41,246,221,1,47,0,176,54,59,0,176,250,59,192,243,72,119,0,176,247,217,106,17,0,176,183,0,13,17,0,176,105,218,0,176,105,218,0,176,248,0,38,5,1,176,202,7,0,176,122,1,0,176,54,180,0,176,187,1,0,176,239,182,0,176,254,242,0,176,220,181,0,176,184,193,1,176,241,72,1,176,241,72,13,17,105,34,1,176,109,100,1,176,241,72,13,17,0,176,150,198,128,40,0,176,24,189,0,176,113,211,0,176,24,189,128,40,0,176,24,189,0,176,14,229,1,176,174,100,1,176,125,54,130,40,0,176,167,227,0,176,248,0,59,34,5,104,224,236,84,26,0,176,56,238,60,34,5,104,32,238,73,27,0,176,28,190,1,176,26,20,0,176,56,223,0,176,74,181,130,40,0,176,60,200,1,176,91,20,0,176,200,180,1,176,120,13,0,176,120,208,0,176,201,208,1,176,239,100,2,41,55,1,1,176,64,101,138,41,120,1,6,106,0,208,204,27,0,208,253,27,0,208,46,28,0,208,95,28,0,208,144,28,0,208,209,28,0,39,0,176,18,29,1,176,145,101,138,41,59,1,0,145,194,0,28,32,224,236,171,24,4,96,2,39,128,237,171,24,1,176,210,101,0,145,84,1,0,176,180,184,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,197,151,171,55,34,0,192,79,101,128,199,132,100,0,161,21,28,75,9,98,170,0,162,18,2,77,9,98,170,1,47,0,176,29,51,133,41,5,104,0,176,78,51,0,240,127,51,34,34,5,104,0,176,177,46,32,243,186,52,0,176,137,52,32,243,186,52,0,162,25,18,13,1,98,170,133,41,5,104,0,176,220,68,0,240,13,69,0,176,186,71,0,240,117,136,3,13,202,100,0,145,0,161,227,83,85,9,246,221,1,47,0,176,250,53,133,41,5,104,0,176,43,54,0,240,9,113,0,176,234,56,96,249,9,113,0,161,213,3,77,1,238,188,0,162,146,18,77,1,110,189,133,41,0,192,137,116,0,192,70,122,0,176,85,0,0,176,57,1,0,176,66,241,0,176,105,218,1,176,7,7,0,176,54,180,0,176,200,180,0,176,74,228,0,176,239,182,0,176,145,183,0,176,34,202,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,1,192,139,14,0,176,255,210,0,176,24,189,38,5,0,176,79,243,0,176,248,0,0,176,167,227,0,176,182,237,0,176,40,218,0,176,164,179,0,176,113,211,0,176,200,180,0,176,186,238,1,176,3,102,0,176,182,212,0,176,117,212,0,176,74,181,1,176,117,6,0,176,74,228,0,176,48,211,0,176,239,182,60,1,0,145,208,0,1,0,2,43,51,1,1,176,68,102,2,13,129,202,1,176,117,102,0,161,25,3,77,1,98,170,0,162,146,18,77,1,98,162,48,50,47,50,49,34,0,192,73,134,0,192,117,136,0,161,213,26,75,1,84,115,0,162,210,18,73,1,84,65,133,41,0,192,132,100,34,34,96,196,114,99,51,50,52,34,0,192,114,99,14,34,0,192,132,100,55,34,0,192,79,101,0,192,77,102,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,34,50,51,50,52,34,0,192,89,104,160,197,53,107,0,176,85,0,0,176,57,1,136,40,0,176,105,218,0,176,85,198,1,176,181,12,0,176,60,200,0,176,200,180,0,161,213,3,76,5,92,139,0,162,146,18,76,1,110,189,133,41,129,194,166,102,55,34,0,192,186,120,193,195,166,102,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,1,192,139,14,2,41,1,1,0,41,122,1,106,18,0,176,164,179,2,41,1,1,0,41,122,1,0,176,99,179,2,41,1,1,0,41,123,1,0,176,248,0,2,41,1,1,0,41,124,1,0,176,57,1,2,41,1,1,0,41,125,1,0,176,54,180,2,41,1,1,0,41,126,1,0,176,200,180,2,41,1,1,0,176,99,179,2,41,1,1,0,176,248,0,2,41,1,1,0,176,57,1,2,41,1,1,0,176,54,180,2,41,1,1,0,176,200,180,5,146,60,30,1,0,5,146,100,162,1,0,0,176,247,217,0,181,247,212,2,13,144,201,131,56,141,56,136,40,1,176,181,12,13,17,63,34,136,41,2,104,13,1,0,176,24,189,1,0,35,1,1,0,1,176,145,11,0,176,248,0,0,176,248,0,1,176,202,7,0,176,150,198,0,176,57,1,0,176,54,180,0,176,54,180,0,176,187,1,0,176,187,1,0,176,239,182,1,176,2,10,13,18,106,34,0,176,247,217,1,176,137,7,0,176,255,210,106,34,0,176,247,217,1,176,137,7,38,5,0,176,57,1,0,176,248,0,0,176,144,243,0,176,150,222,0,176,200,180,1,176,120,13,1,176,2,10,0,176,145,183,0,176,61,182,1,176,185,104,0,176,4,231,0,176,242,183,0,176,89,246,0,176,99,184,5,146,188,32,1,0,106,34,0,176,247,217,1,176,137,7,13,18,106,34,0,176,247,217,0,176,170,218,38,5,0,176,17,226,38,5,0,176,247,237,0,176,114,216,0,176,182,237,0,176,144,243,0,176,135,180,0,176,54,180,0,176,208,225,0,176,200,180,38,5,0,176,57,1,0,176,105,218,0,176,14,229,0,176,122,1,0,176,187,1,0,176,145,183,0,176,87,193,0,176,85,0,38,5,0,176,247,237,0,176,209,243,0,176,183,0,0,176,248,0,0,176,229,179,0,176,54,180,1,176,91,20,38,5,130,40,1,176,210,11,1,176,202,7,130,40,0,176,167,227,0,176,105,218,130,40,0,176,48,211,1,176,137,7,130,40,9,104,131,45,3,104,1,176,0,16,2,13,144,201,0,176,170,218,0,176,183,0,130,40,0,176,150,222,0,176,122,1,130,40,0,176,209,243,0,176,200,180,138,41,59,1,129,237,26,105,0,39,1,176,75,105,1,176,140,105,0,161,213,3,85,5,110,173,0,162,18,34,85,37,110,173,1,47,0,176,43,60,133,41,5,104,0,176,92,60,0,240,141,60,0,176,125,61,96,249,174,61,0,176,57,1,0,176,167,227,1,176,181,12,0,176,24,199,1,176,40,99,6,106,0,208,238,21,0,208,31,22,0,208,64,22,96,223,97,22,0,208,146,22,0,208,211,22,2,39,128,237,171,24,1,197,189,105,0,176,215,188,1,176,4,111,0,176,105,218,38,5,1,176,185,1,1,176,59,2,1,176,140,2,1,176,205,2,0,176,169,242,1,176,63,3,1,176,112,9,1,176,210,11,0,176,167,227,0,176,40,218,0,176,74,181,1,176,246,12,1,176,40,99,0,176,150,222,1,176,7,7,2,13,175,201,1,176,105,99,0,176,57,1,1,176,4,111,0,176,89,189,0,176,144,243,0,176,117,212,0,176,54,180,0,176,187,1,38,5,0,176,57,1,0,176,167,227,2,13,168,201,139,40,2,104,5,96,141,40,2,104,2,96,1,1,1,176,69,111,0,176,183,0,0,176,247,217,1,176,142,50,0,176,209,243,0,176,85,0,0,176,85,0,38,5,0,176,56,223,38,5,0,176,57,1,0,176,248,0,0,176,248,0,0,176,89,189,0,176,89,189,0,176,99,179,1,176,193,46,0,176,122,1,0,176,122,1,0,176,54,180,0,176,54,180,0,176,209,243,0,176,187,1,108,16,0,176,99,179,0,176,99,179,0,176,248,0,0,176,248,0,1,176,202,7,0,176,57,1,0,176,150,222,0,176,150,222,0,176,206,219,0,176,206,219,1,176,84,12,0,176,85,0,1,176,181,12,1,176,145,11,0,176,167,227,0,176,248,0,1,176,202,7,0,176,57,1,0,176,54,180,0,176,54,180,0,176,206,219,0,176,206,219,0,176,239,182,1,176,2,10,0,176,247,217,2,13,144,201,13,18,1,176,181,12,0,176,113,211,1,176,213,22,1,176,213,22,0,176,105,218,0,176,167,227,1,176,202,7,0,176,57,1,0,176,60,200,0,176,60,200,0,176,206,219,0,176,206,219,1,176,84,12,0,176,87,193,2,43,2,104,6,96,138,39,3,104,56,1,2,96,59,1,0,145,208,0,1,0,2,13,185,201,6,106,0,208,47,187,0,208,96,187,0,208,145,187,0,208,210,187,0,208,3,188,0,208,52,188,2,39,64,236,236,5,0,176,95,6,46,34,4,104,95,10,1,176,134,111,1,176,183,111,0,176,150,198,38,5,1,176,232,111,38,5,0,176,219,189,55,17,1,176,125,54,3,13,201,105,0,153,44,5,0,176,79,229,107,16,0,176,89,189,1,13,0,97,1,176,145,11,4,13,145,201,144,203,44,5,0,176,32,191,0,176,60,200,112,17,0,176,24,199,1,176,40,99,0,176,223,190,0,161,213,3,77,1,98,170,0,162,146,18,77,1,98,162,133,41,0,192,119,166,0,192,207,168,0,161,213,3,76,1,238,172,0,162,146,18,76,1,110,189,133,41,32,195,182,175,55,34,0,192,186,120,160,197,182,175,0,161,213,3,76,1,238,172,0,162,146,18,76,1,110,189,133,41,32,195,70,122,192,195,70,122,6,106,0,208,238,21,0,208,31,22,0,208,64,22,96,223,97,22,0,208,146,22,0,208,211,22,2,39,128,237,171,24,1,197,189,105,0,161,213,3,75,1,84,115,0,162,210,19,73,1,84,65,133,41,0,192,110,97,34,34,0,192,114,99,55,34,0,192,79,101,0,192,230,171,0,161,25,3,64,9,118,90,0,162,18,2,64,9,98,90,6,106,16,223,198,4,16,223,247,4,16,223,40,5,16,223,89,5,16,223,138,5,16,223,187,5,2,39,224,236,236,5,0,176,254,13,64,246,218,16,13,48,106,32,2,104,5,96,0,176,233,11,0,240,177,6,1,0,0,161,213,3,77,1,238,188,133,41,0,192,41,109,0,192,121,111,3,13,201,116,0,149,0,161,227,83,85,1,246,221,133,41,0,192,9,113,0,192,9,113];var o8=[0,69,1,0,74,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,0,3,0,1,0,112,0,13,2,161,5,36,9,188,12,116,14,96,27,50,60,34,66,80,45,47,36,18,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,90,86,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,0,46,30,58,70,39,41,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,140,0,3,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,50,20,19,38,46,26,27,20,10,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,90,29,23,45,55,31,32,24,13,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,0,15,16,33,40,22,23,18,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,151,0,4,0,1,0,16,1,136,3,40,5,140,10,112,13,35,15,32,28,46,50,33,65,59,37,25,22,8,7,217,150,105,120,120,120,255,180,150,44,65,70,130,53,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,32,1,136,3,40,5,140,10,112,13,191,14,32,28,40,96,43,94,78,57,42,26,13,6,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,32,1,136,3,40,5,140,10,112,13,191,14,32,28,65,81,39,86,71,52,38,24,11,5,217,155,105,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,16,1,128,3,60,5,100,10,112,13,191,14,160,28,0,51,35,68,61,35,32,24,7,8,217,135,105,120,120,120,255,165,165,44,65,70,130,53,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,200,0,4,0,1,0,200,0,200,1,188,7,236,9,32,13,136,14,128,28,50,41,26,55,55,55,47,35,11,5,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,200,0,200,1,188,7,236,9,32,13,136,14,128,28,80,78,36,76,76,76,65,49,15,7,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,200,0,192,1,188,7,236,9,32,13,136,14,128,28,70,67,33,69,69,69,59,45,13,6,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,200,0,184,1,188,7,236,9,32,13,136,14,128,28,0,30,22,47,47,47,40,30,9,4,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,33,0,152,0,32,1,224,8,24,11,72,13,0,15,160,26,52,44,9,65,57,58,53,28,13,6,175,105,120,120,120,120,175,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,152,0,24,1,232,8,24,11,72,13,0,15,160,26,75,67,11,81,66,66,66,35,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,152,0,24,1,232,8,24,11,72,13,0,15,160,26,69,54,10,73,59,59,59,31,15,7,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,118,0,240,0,35,9,24,11,72,13,30,15,112,26,0,27,7,48,43,42,42,23,10,6,171,105,112,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,160,0,4,0,1,0,192,0,40,2,92,3,100,10,164,11,96,14,159,27,50,57,23,57,62,34,32,19,12,4,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,192,0,40,2,92,3,100,10,164,11,96,14,159,27,60,121,34,82,90,49,47,27,18,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,192,0,40,2,112,3,100,10,164,11,96,14,159,27,50,73,29,70,64,42,40,23,15,6,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,192,0,40,2,112,3,100,10,164,11,96,14,159,27,0,41,22,52,48,32,30,17,11,4,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,120,0,4,0,1,0,176,0,64,1,92,3,56,9,12,13,60,15,144,26,50,39,6,64,43,21,21,30,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,176,0,64,1,92,3,56,9,12,13,60,15,144,26,70,55,7,77,51,25,25,36,14,9,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,176,0,64,1,92,3,156,9,12,13,60,15,144,26,50,40,6,65,43,21,21,31,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,176,0,64,1,92,3,156,9,12,13,60,15,144,26,0,26,5,52,35,17,17,25,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,120,0,6,0,1,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,20,22,20,39,48,27,28,21,10,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,0,22,20,39,48,27,28,21,10,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,0,18,18,35,44,24,25,19,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,60,18,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,40,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,120,0,6,0,1,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,20,22,20,39,48,27,28,21,10,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,0,22,20,39,48,27,28,21,10,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,0,2,20,5,36,9,188,12,116,14,96,27,0,18,18,35,44,24,25,19,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,96,4,16,9,88,12,91,14,32,27,60,17,38,33,28,24,33,28,7,0,120,60,135,120,120,120,75,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,96,4,16,9,88,12,91,14,32,27,40,17,38,33,28,24,33,28,7,0,120,60,135,120,120,120,75,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,114,1,16,4,252,8,200,10,91,14,32,27,0,14,40,28,20,12,8,8,6,0,120,60,135,120,120,120,75,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,160,0,5,0,1,0,140,0,240,1,232,5,76,9,236,12,176,14,77,27,20,18,22,36,40,24,24,18,9,3,160,132,126,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,140,0,240,1,232,5,76,9,236,12,176,14,77,27,40,18,22,36,40,24,24,18,9,3,160,132,126,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,60,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,40,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,0,14,48,34,20,12,10,12,7,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,160,0,5,0,1,0,140,0,240,1,232,5,76,9,236,12,176,14,77,27,20,18,22,36,40,24,24,18,9,3,160,132,126,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,140,0,240,1,232,5,76,9,236,12,176,14,77,27,40,18,22,36,40,24,24,18,9,3,160,132,126,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,124,1,8,7,236,9,172,13,160,15,0,27,60,23,53,41,24,20,16,13,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,124,1,8,7,236,9,172,13,160,15,0,27,40,23,53,41,24,20,16,13,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,124,1,244,6,236,9,172,13,160,15,0,27,0,14,42,32,20,16,12,9,6,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,120,0,5,0,1,0,184,0,248,1,32,7,244,9,85,13,104,15,70,26,20,17,26,32,37,22,22,17,8,2,148,119,137,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,184,0,248,1,32,7,244,9,85,13,104,15,70,26,0,17,26,32,37,22,22,17,8,2,148,119,137,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,60,25,57,49,29,20,20,18,10,0,120,60,90,120,120,120,50,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,40,25,57,49,29,20,20,18,10,0,120,60,90,120,120,120,50,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,0,15,44,38,23,16,16,14,8,0,120,60,90,120,120,120,50,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,8,2,70,0,0,0,0,0,0,0,4,14,28,40,46,48,46,38,23,252,211,174,161,177,209,238,0,14,26,30,17,237,190,160,167,201,232,251,15,51,91,109,92,52,11,239,216,190,166,161,190,247,51,89,101,103,104,93,52,246,185,151,149,164,184,210,252,50,101,126,115,78,34,251,212,169,136,134,171,231,31,70,95,111,115,96,50,245,190,158,151,161,180,212,2,57,102,118,104,73,37,254,209,164,137,141,175,223,12,49,76,94,96,75,32,238,196,173,166,169,182,212,0,48,80,89,78,57,27,247,205,168,149,157,188,229,14,49,78,98,100,80,40,254,219,197,185,183,195,222,3,39,62,69,63,47,25,253,220,192,179,185,205,231,0,25,47,61,59,41,14,244,222,208,200,202,213,235,4,28,42,46,42,32,17,253,230,213,208,214,228,245,6,24,39,45,41,26,6,244,229,220,216,219,230,248,12,29,37,39,35,26,12,251,235,224,221,227,238,252,10,25,36,40,35,22,6,248,235,227,223,227,237,252,10,22,29,31,27,19,7,249,236,229,227,232,241,253,9,20,28,31,26,17,5,250,240,233,231,234,242,253,7,16,22,23,21,14,5,252,243,238,237,239,245,252,4,13,18,20,17,12,5,254,248,243,241,243,248,255,5,10,14,15,13,9,3,254,249,246,245,247,251,0,3,7,10,11,9,6,2,255,251,249,249,250,252,0,2,5,7,7,6,4,1,255,253,252,252,253,254,0,1,3,3,3,3,1,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,5,0,1,0,204,0,128,2,176,4,252,8,240,10,52,18,0,28,45,42,34,58,42,39,34,8,14,5,170,165,137,120,120,120,170,180,137,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,216,0,136,2,176,4,252,8,227,12,20,15,214,27,55,56,32,63,62,39,39,30,15,6,189,159,136,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,65,0,216,0,136,2,176,4,252,8,227,12,20,15,214,27,80,42,28,55,54,34,34,26,13,5,189,159,136,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,128,2,176,4,212,8,44,11,20,15,0,28,35,26,26,47,33,27,29,9,11,4,170,165,137,120,120,120,170,180,137,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,128,2,176,4,212,8,44,11,20,15,0,28,0,26,26,47,33,27,29,9,11,4,170,165,137,120,120,120,170,180,137,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,165,0,4,0,1,0,104,0,96,1,0,5,204,11,192,13,180,15,32,29,45,37,18,64,39,21,43,25,8,0,155,120,97,120,120,120,95,120,97,44,45,70,130,59,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,0,104,0,96,1,216,4,204,11,192,13,180,15,32,29,60,45,20,72,44,24,48,28,9,0,155,120,97,120,120,120,95,120,97,44,45,70,130,59,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,104,0,96,1,176,4,204,11,192,13,180,15,32,29,60,45,20,72,44,24,48,28,9,0,155,120,97,120,120,120,95,120,97,44,45,70,130,58,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,104,0,96,1,176,4,204,11,192,13,180,15,32,29,0,37,18,64,39,21,43,25,8,0,155,120,97,120,120,120,95,120,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,1,0,244,0,129,1,96,4,24,6,88,12,41,14,192,27,40,40,48,51,44,16,0,0,10,0,147,80,120,120,120,120,87,95,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,228,0,149,1,98,4,224,6,88,12,41,14,192,28,35,65,39,84,62,33,22,17,16,0,150,90,120,120,120,120,90,90,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,13,2,172,5,208,7,88,12,41,14,192,28,0,85,40,77,109,49,46,29,16,0,120,165,120,120,120,120,60,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,21,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,40,26,45,40,47,25,0,16,5,0,150,60,120,120,120,120,105,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,184,0,164,1,96,4,168,7,28,12,66,14,96,27,35,61,40,80,60,33,19,14,13,0,157,105,120,120,120,120,112,90,60,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,128,2,65,4,232,8,28,12,166,14,96,27,0,99,45,78,119,51,50,35,17,0,120,105,120,120,120,120,75,90,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,5,0,216,0,64,1,236,4,24,6,184,11,166,14,224,26,40,42,43,56,31,15,0,0,15,0,147,60,150,120,120,120,87,90,90,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,160,1,236,4,144,6,184,11,236,14,64,27,35,59,36,76,64,33,32,13,15,0,150,120,105,120,120,120,105,90,78,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,178,2,249,5,232,8,188,12,91,14,0,28,0,82,40,57,115,64,66,42,14,0,120,165,120,120,120,120,120,165,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,3,0,37,0,216,0,64,1,236,4,24,6,184,11,166,14,224,26,40,46,46,59,33,16,0,0,10,0,147,60,150,120,120,120,87,90,90,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,120,0,124,1,117,5,52,8,224,11,166,14,224,26,40,49,19,73,56,36,39,19,12,0,150,165,150,120,120,120,90,90,90,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,120,0,84,1,97,8,116,9,12,13,110,15,96,27,0,79,16,75,80,86,84,54,17,0,120,135,150,120,120,120,60,120,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,1,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,40,26,45,40,47,25,0,16,5,0,150,60,120,120,120,120,105,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,49,1,21,4,88,7,48,12,41,14,32,26,35,47,35,76,55,29,14,14,22,0,150,75,105,120,120,120,60,105,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,189,1,123,3,132,8,48,12,41,14,64,27,0,119,49,103,110,61,48,33,18,0,120,150,105,120,120,120,30,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,1,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,40,26,45,40,47,25,0,16,5,0,150,60,120,120,120,120,105,90,75,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,40,0,54,1,109,4,104,6,128,12,247,13,192,28,35,35,16,59,46,31,31,18,13,0,150,120,120,120,120,120,150,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,40,0,134,1,205,5,72,8,128,12,247,13,192,28,0,74,16,95,70,33,36,18,13,0,120,120,120,120,120,120,120,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,50,0,2,0,5,0,244,0,174,1,136,4,4,6,124,11,79,16,64,27,50,21,51,34,39,16,18,7,7,0,120,45,135,120,120,120,60,90,93,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,244,0,174,1,136,4,4,6,124,11,79,16,64,27,0,21,51,34,39,16,18,7,7,0,120,45,135,120,120,120,60,90,93,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,65,0,3,0,1,0,8,1,184,1,232,3,160,5,108,12,210,15,224,27,40,16,34,40,26,12,0,4,3,0,120,60,120,120,120,120,75,90,75,44,35,50,60,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,8,1,184,1,232,3,200,5,48,12,140,15,224,27,25,24,42,44,45,20,8,16,7,0,120,60,120,120,120,120,75,90,75,44,35,50,60,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,8,1,184,1,32,3,200,5,48,12,140,15,224,27,0,26,42,44,45,20,8,16,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,2,0,1,0,24,1,184,1,233,3,200,5,108,12,210,15,224,27,20,10,34,21,26,13,5,5,3,0,120,60,120,120,120,120,75,90,75,44,35,50,60,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,24,1,184,1,233,3,200,5,108,12,210,15,224,27,0,34,61,39,47,24,12,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,12,0,3,0,1,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,12,27,45,44,40,20,12,16,5,0,150,60,120,120,120,120,105,90,75,44,35,50,60,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,0,26,45,40,47,25,12,16,5,0,150,60,120,120,120,120,105,90,75,44,35,50,60,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,0,1,184,1,176,4,64,6,124,11,96,14,224,27,0,26,45,40,47,25,20,11,5,0,150,60,120,120,120,120,105,90,75,44,35,50,60,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,40,0,2,0,37,0,184,0,24,2,112,5,72,8,0,10,188,12,136,19,40,17,43,9,14,19,28,9,9,9,157,125,137,137,150,175,157,125,137,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,24,2,112,5,248,7,236,9,188,12,131,24,0,17,42,14,14,32,23,9,4,4,157,125,137,137,150,175,157,125,137,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,81,19,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,3,6,9,10,9,4,7,1,249,249,241,233,233,234,251,8,3,8,14,34,32,37,29,26,28,27,13,12,8,253,3,20,27,20,10,22,17,16,9,3,249,244,234,237,244,242,242,249,4,25,30,28,27,25,38,32,15,6,3,0,246,247,246,255,249,5,23,31,14,7,14,9,2,1,247,241,238,227,239,248,244,246,254,8,26,28,21,19,22,25,26,5,3,14,11,7,7,10,24,23,20,31,33,23,20,19,9,3,244,247,237,235,235,237,237,237,236,246,246,242,245,247,247,243,248,248,231,236,241,244,241,243,5,23,26,28,37,41,35,29,25,23,21,12,5,10,12,16,24,21,24,29,38,32,15,6,3,1,252,246,246,248,250,2,253,8,12,7,14,18,7,3,247,247,0,0,250,247,1,3,254,5,15,19,22,16,22,27,21,19,16,18,29,28,16,21,34,39,38,31,32,37,36,23,22,17,10,251,250,11,9,3,9,10,12,7,0,5,14,5,249,241,245,248,253,253,252,7,251,254,5,9,10,8,250,9,6,8,17,26,41,43,35,33,51,54,44,34,34,31,25,21,24,42,34,15,22,29,34,31,12,1,255,227,218,220,223,227,222,223,249,12,11,15,30,36,22,0,251,11,249,232,247,245,0,12,16,49,78,78,83,91,82,70,45,30,23,244,229,243,247,245,253,255,22,28,13,18,22,254,247,228,220,229,219,209,227,247,253,10,16,24,19,18,255,241,236,240,236,236,4,31,30,45,78,76,86,85,75,72,57,16,0,239,242,247,250,2,13,18,33,42,33,32,14,1,250,230,209,202,201,204,222,237,254,0,15,36,34,36,16,245,253,250,240,242,249,7,34,37,58,89,82,68,82,68,47,40,19,3,251,247,250,254,246,254,14,27,28,15,12,13,253,226,219,223,211,198,204,222,230,232,234,253,0,243,244,253,251,238,241,4,14,13,20,36,52,51,43,33,30,34,25,20,21,21,22,21,36,60,59,45,31,20,9,254,237,239,228,205,201,211,226,226,221,246,4,248,252,243,253,238,228,214,216,235,235,241,250,14,25,35,47,63,60,47,39,42,50,34,14,4,2,248,250,2,21,32,18,10,29,29,15,3,0,255,241,227,211,226,240,232,221,229,249,8,18,18,26,23,15,16,25,17,7,255,7,2,255,9,20,7,13,20,34,39,38,24,28,37,20,8,12,11,17,17,2,4,8,17,27,20,26,29,14,7,14,12,243,240,247,255,9,12,18,32,31,22,38,26,13,255,242,248,252,231,240,252,8,18,17,21,41,45,38,42,30,23,28,9,251,17,22,1,5,26,29,26,32,34,45,15,253,17,11,251,242,237,253,236,215,6,17,25,56,57,32,53,42,14,44,54,15,14,10,8,1,243,15,33,30,17,16,14,2,240,234,242,225,195,192,206,225,2,244,239,253,239,246,247,244,2,1,250,255,26,37,37,28,49,52,24,21,16,10,252,237,250,3,3,14,10,6,20,252,236,238,222,202,182,168,168,183,186,189,213,253,8,41,43,51,75,51,45,54,23,16,15,229,240,14,5,18,46,51,65,76,61,61,49,34,27,247,227,233,215,223,238,236,2,22,21,60,63,23,20,15,237,236,237,203,207,215,229,0,6,17,51,61,55,52,35,24,11,253,4,253,234,242,0,1,24,48,66,96,101,104,94,78,68,55,41,27,9,236,235,244,253,1,253,253,10,19,23,5,1,6,249,223,215,228,223,220,240,244,244,255,0,20,50,38,44,51,37,44,56,44,49,51,38,57,57,61,87,76,83,82,59,48,30,3,4,247,231,225,214,227,236,226,245,250,243,243,247,243,253,247,251,255,250,239,249,13,25,29,19,30,40,33,46,63,53,38,45,48,34,23,34,43,39,45,25,13,26,4,250,249,0,5,227,231,245,242,233,226,219,250,16,251,252,21,14,8,0,1,10,246,242,11,255,233,245,236,242,2,18,35,45,41,29,37,48,46,33,12,19,21,252,236,244,10,15,22,18,43,62,23,18,36,10,232,242,217,224,232,211,250,23,254,8,23,37,41,254,253,7,236,213,213,223,244,235,237,7,26,20,25,43,45,33,16,6,1,236,224,238,4,13,21,17,56,70,37,59,60,29,36,0,213,217,199,176,205,225,237,14,21,28,43,40,14,4,8,0,228,209,221,227,220,220,248,20,49,66,53,68,66,29,8,8,235,215,224,239,249,253,31,71,51,51,77,61,24,16,238,206,181,166,173,170,177,245,24,26,55,81,93,88,51,36,34,251,200,196,211,199,212,5,20,34,58,60,64,85,67,51,14,241,246,195,198,251,220,240,0,254,48,31,250,66,80,27,16,17,10,237,201,235,13,2,221,227,42,54,35,56,68,86,36,253,34,34,247,234,244,249,250,235,2,51,50,58,63,52,49,45,35,39,250,210,228,243,247,251,243,239,246,250,250,0,255,254,233,192,190,206,198,189,197,219,249,4,240,0,4,250,1,253,250,14,32,51,52,27,27,54,71,56,43,48,50,50,1,247,25,12,243,238,236,234,249,225,231,248,220,227,238,215,213,227,228,249,253,228,0,241,206,224,253,18,48,41,56,84,68,71,89,89,95,98,82,89,59,21,33,18,240,251,238,244,25,255,246,9,253,254,248,233,255,234,201,216,237,229,237,246,11,36,49,62,73,63,53,73,63,36,27,15,24,9,16,52,56,33,26,22,19,0,226,235,240,225,219,224,250,13,12,31,82,59,36,44,50,41,8,225,236,239,220,255,18,27,49,42,57,91,74,40,42,29,5,254,238,240,246,227,245,13,30,31,39,47,67,33,9,12,3,4,5,244,10,18,255,29,49,32,28,10,9,254,233,236,3,246,236,243,252,2,15,25,41,64,48,19,9,7,1,249,253,10,9,251,245,21,29,20,24,28,25,21,250,246,13,29,24,28,36,32,47,12,6,47,41,8,15,12,15,23,248,7,45,6,239,27,24,3,28,21,38,43,255,16,45,1,3,44,25,18,22,238,16,23,236,241,222,186,213,187,172,227,233,236,248,2,49,44,9,47,42,0,10,233,223,240,216,233,7,248,242,18,25,37,32,29,67,66,31,15,18,24,12,240,229,247,234,215,208,220,228,208,188,234,238,201,219,235,238,246,217,242,25,244,212,229,252,14,246,250,62,34,239,255,32,51,36,255,29,51,250,239,13,18,254,255,9,28,21,237,251,20,3,235,243,251,251,233,236,21,6,249,6,20,25,4,254,9,7,252,239,251,4,243,251,23,25,17,1,21,33,36,17,240,0,11,229,253,38,24,38,16,2,53,53,42,59,23,4,12,252,6,9,235,0,3,223,234,6,20,17,243,245,13,12,21,35,13,34,23,240,14,19,2,0,251,237,237,222,238,21,8,16,29,1,25,17,228,23,47,10,22,7,16,33,253,8,75,59,33,47,28,27,25,12,33,21,245,236,244,2,252,239,0,5,229,225,14,26,15,6,3,22,29,242,252,17,227,229,243,240,0,1,17,65,79,53,80,79,81,76,64,53,28,242,249,246,253,3,26,88,97,79,94,73,41,44,42,45,35,242,233,228,218,243,0,31,49,9,51,97,40,10,0,241,12,219,199,224,239,255,252,37,68,59,63,89,99,95,50,2,12,11,254,227,229,214,185,221,0,21,30,7,238,6,28,9,244,231,236,232,209,219,249,224,193,240,5,250,229,227,16,35,242,214,5,254,212,231,15,23,13,0,7,52,50,18,18,8,235,235,0,241,211,224,9,36,32,23,50,45,26,22,26,21,241,209,214,238,240,254,0,5,30,21,31,36,251,249,234,229,229,189,183,248,5,11,59,60,68,94,95,83,96,69,36,50,28,246,244,0,255,0,19,32,39,21,11,30,22,248,249,237,231,243,216,216,247,251,9,47,33,46,74,62,72,53,254,3,19,253,243,237,238,8,10,22,60,62,42,41,71,86,67,37,21,33,17,14,15,12,3,242,36,66,43,14,29,28,31,3,224,232,245,238,251,245,9,20,15,30,70,53,29,12,0,246,228,212,220,237,1,37,53,58,57,58,67,56,14,4,4,241,245,238,215,213,215,246,21,19,252,6,10,250,3,251,242,246,235,246,255,242,243,233,0,24,6,255,12,16,13,17,10,249,242,249,239,240,242,233,235,8,29,255,240,9,7,10,21,254,239,224,193,210,245,243,240,230,247,19,11,252,25,31,33,15,239,230,250,8,0,6,252,236,0,17,14,10,9,7,237,227,5,22,1,249,235,246,11,5,235,6,8,254,3,231,239,35,11,238,3,7,253,5,4,7,20,244,7,55,38,38,44,34,42,20,244,20,44,246,228,245,252,254,254,7,37,21,4,18,13,252,8,21,250,213,212,250,15,234,226,31,57,45,35,56,83,70,25,48,56,14,2,248,236,220,215,255,24,8,38,74,58,44,48,41,41,36,10,225,225,247,241,232,253,15,20,17,26,46,30,11,0,242,246,238,228,228,239,218,242,31,48,23,11,36,38,15,249,252,0,0,237,254,11,5,3,21,69,95,55,45,85,70,13,8,11,247,229,210,7,49,237,225,15,32,32,19,10,20,254,222,249,249,224,216,222,11,18,5,43,75,62,55,47,43,40,0,252,52,30,233,2,21,37,77,73,74,92,66,50,77,50,2,249,224,223,210,196,228,243,221,242,10,12,12,255,3,27,8,231,221,222,225,219,209,226,228,205,248,29,33,70,67,57,86,84,93,100,82,72,43,7,16,31,13,15,29,19,20,26,19,55,30,247,5,251,193,171,180,233,240,226,14,28,17,30,67,92,55,247,242,240,243,234,204,234,9,14,65,104,98,84,75,106,112,53,32,29,226,206,238,0,11,230,219,35,59,0,246,227,254,0,191,187,203,159,168,231,255,235,231,213,18,33,254,247,239,243,13,6,26,62,30,9,73,99,109,50,5,40,27,2,0,0,9,9,4,23,36,15,255,11,46,6,192,209,229,228,206,178,224,5,248,12,57,37,29,239,237,56,40,231,237,241,229,229,225,26,19,242,18,62,44,239,230,31,34,211,199,248,233,227,217,245,245,210,214,242,24,28,235,246,8,253,9,17,9,5,223,0,50,6,206,236,240,233,250,225,16,18,220,0,67,45,24,11,33,47,247,224,14,236,201,224,227,229,228,206,36,79,37,53,54,42,81,47,45,43,227,221,25,14,20,247,215,24,46,38,68,67,36,14,235,238,247,198,173,199,241,10,5,15,34,31,43,71,55,31,246,245,245,211,190,217,249,9,36,36,59,79,73,98,103,89,60,31,14,249,240,247,8,249,254,28,54,58,52,34,51,38,250,3,9,246,237,236,230,226,223,1,22,245,247,12,6,31,47,56,52,42,45,48,47,66,79,41,29,53,64,54,68,57,51,49,20,7,23,40,26,4,9,247,254,47,47,7,2,9,239,207,212,229,237,219,241,3,242,15,41,25,63,87,55,54,63,59,59,25,253,11,9,45,63,34,55,57,11,80,58,249,220,191,230,253,199,230,244,188,181,211,9,249,203,223,254,252,187,165,228,0,7,23,38,26,4,245,6,28,6,216,235,13,10,6,22,44,59,47,46,79,69,11,251,14,247,195,155,163,192,189,194,234,244,252,1,5,31,12,233,233,255,8,233,246,17,16,255,16,24,57,36,0,7,8,223,212,219,252,253,232,255,36,37,26,45,60,44,38,46,58,32,239,245,27,46,47,68,80,52,32,38,26,13,245,229,243,234,228,247,4,23,41,41,51,63,33,15,14,8,255,219,217,10,25,8,254,5,21,27,35,71,56,11,255,10,38,29,248,0,25,238,240,21,29,25,255,244,50,63,16,22,59,69,45,10,58,61,8,22,38,9,235,206,242,38,18,250,11,247,250,9,0,27,3,206,233,248,228,237,250,241,29,34,53,50,43,68,70,43,46,47,13,9,23,14,19,251,255,39,58,68,45,21,23,27,21,24,24,235,212,197,189,206,209,191,209,216,244,1,249,9,27,13,19,30,24,8,242,243,248,235,232,15,54,88,88,98,117,122,112,107,87,50,7,218,240,217,174,192,207,193,239,255,235,246,242,233,240,206,178,188,191,230,244,225,18,22,15,72,70,46,56,17,0,20,252,237,224,202,1,33,15,28,26,10,39,40,7,17,241,228,25,247,229,34,6,247,27,9,24,19,229,16,30,217,203,216,168,172,184,185,190,160,163,229,235,220,255,238,0,23,237,34,59,8,255,3,246,255,243,14,56,36,21,61,72,77,77,61,46,35,8,248,1,251,206,188,201,228,249,4,7,28,13,224,218,229,199,212,232,208,208,212,220,4,35,29,50,58,58,58,41,50,48,11,16,17,31,75,53,40,50,76,87,95,82,85,65,31,18,11,35,37,8,0,15,12,1,19,23,249,227,221,208,194,189,209,227,227,245,254,20,39,41,38,63,75,45,28,42,44,31,6,14,44,37,39,68,87,83,58,47,60,63,36,252,0,250,212,196,231,235,236,9,30,31,48,24,31,41,248,219,206,182,182,159,179,1,236,237,70,40,55,113,62,60,68,16,36,32,234,32,61,31,65,69,87,112,76,52,79,48,32,26,252,21,47,242,239,246,220,218,208,201,254,237,229,246,242,245,230,245,27,224,199,7,247,207,224,235,37,26,248,38,54,24,19,2,16,4,203,224,38,12,246,18,34,32,24,22,50,29,252,1,253,215,193,186,212,233,229,238,242,1,22,18,11,21,242,226,228,215,235,241,235,6,41,43,54,44,51,74,48,43,42,242,232,240,231,255,244,237,12,4,253,15,23,34,48,13,10,239,177,208,249,228,225,223,213,237,2,3,44,54,34,33,46,56,43,11,14,41,35,33,49,39,50,65,39,53,36,249,16,24,20,2,231,238,14,13,13,24,11,20,33,21,12,252,230,224,249,6,7,13,16,12,32,68,75,52,62,39,41,55,38,19,13,17,11,12,19,3,12,245,11,251,240,253,245,246,3,246,239,255,7,17,28,246,12,252,249,15,12,22,17,241,13,44,23,52,67,44,61,64,45,54,10,243,254,243,228,238,237,242,8,254,253,13,24,32,20,6,2,249,3,5,241,238,245,243,7,23,29,30,0,232,235,227,229,6,2,5,32,20,38,61,40,56,55,28,33,12,238,219,214,225,210,219,25,54,43,12,15,29,11,252,12,18,245,233,246,9,8,17,48,80,68,48,68,68,43,44,28,29,18,248,231,249,4,3,241,250,14,8,3,4,242,242,226,216,209,216,206,218,203,222,251,233,2,36,18,40,52,39,43,27,7,27,3,3,8,236,237,253,2,12,18,24,24,21,37,55,28,1,244,239,233,212,202,204,197,187,209,227,222,236,12,255,25,18,244,229,229,239,249,233,236,7,25,35,46,43,63,45,20,45,36,14,6,250,7,16,14,5,13,35,47,54,55,43,26,15,5,8,247,218,225,241,234,232,236,247,252,5,254,19,6,249,237,254,252,237,238,252,24,37,46,64,53,58,65,63,80,45,0,255,255,240,237,0,24,30,26,51,61,40,51,75,60,40,39,22,254,237,232,252,16,14,22,46,51,29,17,6,10,5,231,222,223,222,225,233,236,239,3,254,10,33,36,33,34,19,17,11,10,26,28,27,37,31,20,41,51,33,38,36,21,13,25,23,25,15,1,16,29,8,2,21,28,12,1,2,255,248,221,200,204,225,216,211,229,1,10,5,29,44,45,30,18,28,28,9,251,250,243,223,244,26,57,52,53,72,71,52,41,49,57,40,23,18,16,11,0,3,15,19,24,34,33,17,2,253,9,6,245,7,37,39,31,14,26,59,36,22,37,30,23,15,23,37,26,249,240,244,250,243,227,229,239,232,242,18,30,248,209,244,11,255,241,242,1,10,0,7,36,52,29,42,69,48,8,253,244,242,230,225,215,203,204,226,8,18,241,230,253,5,235,250,250,238,236,216,208,244,230,232,15,34,33,21,7,15,18,4,12,9,12,20,12,7,34,8,1,12,31,30,10,249,250,243,227,228,234,251,2,234,234,252,244,249,252,252,252,221,216,254,251,236,243,241,1,20,27,38,37,31,32,22,6,14,28,5,251,11,17,13,16,17,48,55,32,30,15,237,229,227,230,222,186,198,254,247,238,23,31,37,48,28,40,42,5,7,255,248,26,12,249,27,34,22,38,26,19,27,3,0,5,236,236,243,242,3,240,231,13,27,20,24,32,39,28,251,241,15,255,238,255,2,3,252,244,253,24,19,13,38,41,24,30,34,30,14,7,15,26,6,14,12,11,18,0,250,252,8,251,245,232,227,239,219,219,2,21,5,0,27,35,40,35,30,35,24,9,0,252,248,248,2,25,28,10,48,66,54,52,51,52,54,44,21,19,20,7,250,251,11,35,32,7,5,6,12,23,250,243,252,245,232,235,239,253,0,255,4,19,27,22,16,12,5,246,2,15,248,7,12,17,28,31,34,61,49,30,37,28,16,25,15,12,9,6,10,34,35,33,37,28,20,8,233,245,254,244,226,211,226,241,242,253,12,24,33,35,39,55,32,249,231,241,250,237,249,18,32,27,46,58,53,46,46,48,52,34,10,7,0,13,17,14,32,17,5,31,23,18,16,241,240,244,220,203,211,210,216,230,240,7,9,5,35,36,8,13,7,6,16,14,9,16,255,10,30,28,43,46,17,26,23,249,3,14,1,6,16,14,21,15,17,26,21,17,27,17,8,21,9,244,251,246,4,25,22,29,45,37,30,24,18,31,33,15,7,1,243,247,247,244,16,17,9,30,26,10,16,2,247,250,242,248,251,242,251,12,12,29,45,43,40,32,12,1,239,235,235,243,243,253,15,33,35,38,43,45,39,31,22,5,247,241,234,222,228,236,3,19,12,14,34,24,23,30,32,45,20,238,238,246,247,252,248,0,8,23,21,22,18,17,23,27,16,20,11,17,4,9,31,35,27,32,25,17,26,14,7,3,0,6,14,246,240,240,240,247,254,247,252,1,249,0,0,242,242,1,254,255,8,250,244,243,243,3,24,20,14,10,10,22,26,10,22,25,24,30,25,29,34,25,13,17,8,6,254,252,7,255,243,254,253,254,9,8,12,21,7,5,12,11,249,236,240,253,0,252,0,10,5,10,10,7,252,3,7,5,7,10,0,6,4,4,23,25,13,14,14,254,1,3,8,21,17,21,31,12,8,5,1,255,238,228,238,226,228,230,241,247,244,252,24,33,22,16,15,12,13,4,252,15,14,254,1,7,8,7,13,21,38,23,19,31,25,9,2,7,9,8,251,5,25,12,251,7,17,25,19,12,14,16,9,8,9,5,1,251,3,2,8,4,4,7,17,17,18,22,27,23,7,5,5,253,244,253,11,12,5,4,12,27,37,28,29,35,34,18,12,17,19,16,12,15,24,23,24,18,25,22,9,255,10,6,11,1,6,14,0,7,31,31,39,20,13,18,11,249,250,1,9,13,13,13,19,20,15,27,30,17,4,3,6,8,255,253,8,19,20,30,52,52,20,13,17,20,3,235,239,250,253,251,248,3,15,18,11,21,13,3,252,255,253,246,234,243,251,253,11,26,38,39,29,27,37,30,8,1,13,24,10,253,0,9,4,9,30,32,20,17,22,22,6,254,12,13,0,250,1,8,11,0,2,10,8,247,251,254,7,12,255,2,12,9,12,11,2,8,2,245,2,254,250,0,3,17,16,18,25,39,36,37,31,14,13,6,251,6,11,0,5,3,0,20,22,11,14,17,13,15,1,253,0,2,0,5,10,12,16,15,17,22,20,16,8,11,12,11,1,251,253,9,13,14,26,21,15,25,38,28,24,17,11,12,5,246,5,5,254,3,4,1,2,0,0,3,250,251,7,3,1,7,254,245,249,254,7,3,7,19,17,10,20,24,24,22,26,30,33,21,21,16,4,12,15,2,4,252,1,0,0,247,252,14,17,17,18,20,12,11,4,5,0,249,244,246,252,253,253,242,238,254,2,5,12,6,0,5,4,0,4,4,5,8,13,15,12,18,19,28,19,9,14,9,5,5,10,9,8,11,16,24,30,30,19,26,26,16,16,250,235,241,242,240,249,243,245,250,0,11,23,20,17,23,13,11,17,6,255,4,12,7,14,14,18,25,25,17,12,7,5,254,6,6,0,252,253,11,11,18,17,23,23,19,11,1,246,243,239,244,245,246,252,254,2,11,8,7,6,6,10,9,1,248,245,254,10,15,10,15,20,14,15,9,3,3,255,255,1,1,0,2,10,13,21,9,3,13,6,1,6,253,255,250,254,9,24,19,15,12,10,14,14,10,8,4,2,9,6,6,8,14,23,24,20,24,25,21,23,13,10,12,7,7,3,251,251,255,2,7,12,17,11,18,15,23,28,23,16,15,17,19,19,16,18,19,19,16,20,17,15,18,18,16,10,8,10,16,29,19,18,23,14,21,16,18,11,6,2,4,8,2,1,3,4,9,17,21,27,23,17,18,15,13,15,14,13,11,9,2,4,8,14,22,21,20,22,23,27,27,24,18,23,19,24,29,20,22,23,21,27,28,21,23,17,11,6,0,0,5,3,7,15,12,12,14,18,24,25,18,13,7,12,10,4,0,0,255,8,15,14,19,17,15,14,15,14,14,3,6,4,3,3,255,253,7,19,25,27,33,36,35,35,28,21,16,13,11,9,10,11,12,17,17,19,17,19,19,16,15,13,8,8,4,2,8,12,17,12,10,10,20,20,17,12,7,14,13,7,6,8,8,11,9,15,21,20,23,25,22,25,18,19,25,23,10,9,11,9,8,8,14,13,5,2,0,5,1,250,254,0,0,0,76,0,3,0,5,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,38,29,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,38,29,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,0,29,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,60,0,3,0,5,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,30,29,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,30,29,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,8,1,144,1,233,3,184,6,108,12,210,15,224,27,0,30,45,46,47,25,13,11,7,0,120,60,120,120,120,120,75,90,75,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,60,0,2,0,37,0,184,0,24,2,112,5,72,8,0,10,188,12,136,19,60,17,24,40,12,16,20,8,8,8,157,125,137,137,150,175,157,125,137,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,24,2,112,5,248,7,236,9,188,12,131,24,0,4,18,6,9,21,15,6,3,3,157,125,137,137,150,175,157,125,137,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,90,0,3,0,5,0,4,0,16,1,220,5,156,9,58,14,216,19,224,21,40,5,8,23,10,6,6,6,4,4,150,125,137,137,150,175,150,125,137,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,4,0,16,1,220,5,156,9,58,14,216,19,224,21,50,6,9,26,12,7,7,7,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,4,0,16,1,220,5,156,9,58,14,216,19,224,21,0,6,9,25,11,6,6,6,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,8,7,36,0,248,248,251,0,6,7,6,3,0,252,246,241,237,237,237,239,252,2,9,19,29,34,34,31,22,15,7,4,9,17,19,24,30,36,43,61,69,68,66,52,37,33,25,13,4,249,232,236,250,1,15,18,3,250,242,230,223,217,202,187,185,185,193,210,218,220,224,232,239,250,3,0,249,242,236,233,237,244,250,3,9,15,25,27,27,26,21,16,10,3,254,246,242,240,241,242,243,243,245,249,255,0,1,255,250,243,238,236,235,237,239,238,241,246,252,1,3,1,254,251,249,249,247,244,240,235,232,232,232,232,235,255,25,54,78,82,78,74,67,56,44,27,15,11,16,31,40,50,52,49,44,34,27,18,2,237,218,203,202,209,218,223,227,226,225,218,216,218,218,219,220,218,215,210,209,214,222,239,0,19,30,34,30,26,17,11,10,10,10,11,12,18,18,24,27,26,23,19,10,3,250,242,239,236,234,237,237,236,238,243,246,247,249,248,246,244,239,237,238,243,254,12,21,28,29,25,18,13,9,5,3,3,6,9,14,18,17,21,18,10,5,0,251,249,248,248,250,251,252,253,255,6,9,8,4,7,19,24,23,21,8,253,246,244,252,255,10,21,22,22,11,5,5,254,247,245,239,235,232,230,235,223,232,248,0,5,13,23,44,39,32,31,14,255,1,14,31,46,51,68,76,94,114,112,107,91,63,48,42,34,23,10,248,231,244,3,16,33,21,252,234,215,201,194,186,163,149,147,150,167,185,196,200,207,218,229,249,4,0,252,242,229,229,232,237,245,4,17,34,48,52,52,47,37,26,17,6,253,246,245,245,246,247,246,245,246,250,255,1,0,249,237,231,226,228,230,233,233,236,240,248,0,4,4,2,0,254,253,255,254,253,252,251,250,251,252,254,255,254,255,254,254,254,253,252,252,252,255,0,0,1,2,3,1,1,1,1,2,3,4,5,5,5,4,4,3,1,1,255,254,252,252,251,251,250,249,250,250,249,249,249,251,249,252,252,251,250,253,255,0,2,4,6,6,6,5,4,4,2,0,0,0,1,2,4,4,3,1,0,255,253,252,251,251,252,252,253,255,0,2,3,5,5,7,7,8,8,8,9,10,10,10,10,10,9,8,7,8,10,9,9,6,8,9,10,10,8,5,4,3,3,5,2,255,251,251,0,8,17,23,24,25,28,31,32,29,18,9,1,255,2,9,14,15,13,11,12,14,14,11,4,250,238,227,217,207,199,199,202,214,232,244,2,14,23,27,30,20,7,2,253,3,26,38,50,60,64,74,92,117,124,121,109,82,65,60,50,32,13,244,220,234,254,11,34,25,252,235,215,200,194,184,158,139,134,135,154,178,191,196,202,215,227,247,6,1,253,242,228,227,232,238,249,8,21,37,52,58,58,55,45,33,22,10,255,247,244,244,245,246,246,244,243,247,254,2,0,249,238,229,226,225,230,230,233,234,239,248,0,6,7,6,2,0,254,255,0,255,251,249,248,250,251,250,249,249,252,252,253,253,252,251,251,251,251,250,251,251,251,254,0,1,1,2,3,3,4,4,5,5,5,3,1,0,254,250,248,249,255,27,48,36,32,9,248,246,226,196,203,231,5,26,28,18,4,252,241,226,218,217,238,6,20,25,22,17,13,2,241,229,223,228,242,0,8,16,26,25,22,7,242,234,241,252,2,10,14,22,24,16,251,242,249,253,2,3,8,9,253,232,0,26,23,21,3,1,7,3,1,20,22,21,10,4,249,241,252,0,254,3,251,242,244,247,246,232,233,252,8,4,0,255,2,6,10,5,7,12,15,10,5,0,248,245,253,0,8,19,33,31,24,11,249,240,234,243,249,249,252,253,253,246,243,244,250,255,3,13,22,23,7,247,233,233,236,0,22,39,50,52,43,25,9,12,15,22,29,30,23,18,7,253,250,248,248,3,7,4,5,2,254,246,237,226,218,217,220,228,235,238,239,240,243,246,252,1,0,0,254,252,252,255,0,0,3,7,9,14,16,19,20,19,17,12,7,3,253,249,249,250,253,255,253,0,0,0,1,0,254,253,252,250,250,251,249,247,244,246,252,0,3,4,3,1,255,253,251,254,0,254,253,253,248,248,249,251,255,3,8,8,2,251,244,240,241,247,253,5,13,16,14,6,0,247,241,241,249,2,11,10,10,9,9,4,255,250,246,247,250,252,0,6,8,3,252,246,245,248,251,0,10,12,8,0,247,246,248,250,254,2,7,8,7,5,8,13,10,7,0,251,249,249,252,0,5,9,8,7,3,2,1,252,254,255,254,251,249,245,247,250,254,0,3,1,0,253,250,247,254,3,7,12,15,13,10,7,4,6,7,8,11,16,18,16,14,12,12,12,13,16,16,15,12,9,8,6,4,0,247,240,237,242,0,14,30,38,42,48,52,56,55,43,32,21,15,18,22,25,26,24,21,22,26,27,23,12,254,238,223,208,195,187,185,189,200,215,229,242,253,2,6,5,0,241,234,231,236,4,26,42,51,55,63,77,96,105,103,95,72,55,53,48,34,22,1,233,239,255,8,24,18,247,229,212,203,200,197,177,157,149,148,161,184,199,204,210,219,230,246,2,254,251,247,242,242,246,250,253,5,12,24,41,51,57,58,49,37,24,11,0,249,246,243,247,246,244,244,244,250,0,3,252,242,229,219,215,219,221,230,240,243,248,253,251,248,242,241,250,11,24,24,14,255,242,233,231,236,252,10,12,10,7,0,250,246,242,242,244,246,247,246,243,240,236,232,230,233,247,18,47,74,80,81,78,75,63,40,14,4,5,21,38,53,55,51,48,38,31,20,10,4,0,247,237,225,222,223,226,230,233,239,239,232,227,225,223,225,229,231,228,220,216,216,223,236,249,7,14,16,9,0,246,240,238,239,245,254,3,10,15,16,12,3,252,249,249,253,255,1,2,2,1,0,255,253,251,252,1,6,10,12,14,10,3,249,244,244,239,243,252,9,20,28,26,17,1,251,246,254,2,5,11,5,8,3,11,15,15,15,11,13,20,26,33,27,18,11,1,0,250,0,4,3,2,6,18,28,23,12,254,246,237,226,216,214,217,223,234,247,3,10,15,17,15,13,10,2,0,0,7,22,33,38,41,40,44,55,71,79,79,72,56,44,40,35,25,14,0,240,244,255,7,19,15,255,242,231,221,216,210,193,180,177,179,191,206,215,219,223,230,237,248,1,254,249,244,237,238,243,249,255,7,16,23,33,36,36,33,27,20,14,8,2,254,251,251,252,252,251,248,249,250,254,0,0,252,245,239,237,237,240,242,243,245,249,254,0,4,4,1,255,254,0,0,1,0,0,255,254,255,0,0,0,0,255,255,255,0,0,0,254,0,1,1,2,0,2,3,1,2,3,3,3,2,2,4,4,5,5,5,3,3,0,0,255,255,252,254,252,252,253,253,254,253,252,252,251,250,248,249,249,250,250,250,251,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,4,0,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,30,8,14,26,25,12,12,12,7,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,35,15,19,35,33,16,16,16,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,30,15,19,35,33,16,16,16,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,0,10,15,29,26,13,13,13,8,4,167,150,135,120,120,120,197,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,101,10,56,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,2,2,2,3,2,1,255,253,250,247,246,246,247,248,250,251,252,252,252,253,253,253,253,252,250,249,250,251,253,0,5,12,19,22,20,15,9,4,255,250,250,247,245,245,248,251,0,254,253,252,249,244,240,236,234,231,233,238,245,253,0,4,7,13,16,16,17,20,21,21,18,22,21,19,20,27,31,27,25,25,21,13,10,1,252,246,244,245,247,245,249,250,251,251,251,250,249,246,245,246,246,245,247,250,252,255,1,4,6,9,8,6,4,3,3,5,5,5,7,4,3,3,3,3,3,0,252,247,244,247,247,248,252,255,255,250,246,244,240,239,242,242,245,247,247,249,247,246,244,245,245,247,249,252,255,1,0,2,3,5,5,3,0,252,254,254,251,250,250,250,253,254,253,251,249,248,246,243,239,234,229,227,226,224,223,227,0,41,84,119,125,120,115,104,88,70,45,26,20,26,46,59,73,76,71,64,49,37,23,255,222,195,174,173,184,199,207,214,214,214,206,203,206,206,206,207,205,201,194,193,200,210,235,4,33,48,52,44,35,21,11,9,9,9,10,11,19,20,29,33,32,27,20,8,254,241,231,228,224,223,228,229,228,232,240,245,245,247,245,240,237,230,227,228,234,249,13,26,35,36,30,20,13,7,2,255,0,4,9,17,21,19,22,18,8,3,253,245,241,238,240,248,253,0,253,247,248,244,239,231,234,248,253,255,5,254,248,242,236,240,238,253,14,18,18,1,247,250,247,250,5,9,16,24,30,38,18,16,19,15,5,2,9,32,21,23,37,20,5,0,247,0,6,1,21,21,22,23,13,8,254,247,244,244,248,253,0,3,5,6,6,6,5,4,1,254,250,247,245,247,248,250,251,252,252,249,250,250,251,252,252,253,254,254,255,255,252,252,249,249,246,250,251,0,0,0,0,0,254,251,253,251,251,252,255,0,0,0,0,1,1,1,1,255,255,255,252,255,253,0,0,1,255,0,254,254,254,254,254,255,2,2,0,1,255,255,1,1,1,1,0,1,3,1,3,3,3,3,3,2,2,2,6,6,6,6,6,5,2,1,1,1,2,2,2,2,2,2,2,2,2,0,1,255,255,255,1,0,1,255,254,254,254,254,253,253,0,253,0,0,255,252,255,255,254,254,255,1,1,1,254,253,252,249,248,248,248,249,250,252,253,253,252,252,251,250,250,250,251,253,255,0,2,4,5,6,8,8,10,9,9,8,7,7,6,6,5,5,5,5,4,4,5,8,8,8,4,4,4,4,4,4,4,4,1,0,1,1,1,1,1,2,2,2,2,255,255,255,255,255,255,252,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,254,254,254,1,2,2,2,1,255,255,2,2,2,0,0,0,0,0,0,0,0,1,1,0,254,254,254,254,255,255,1,0,2,0,255,255,255,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,2,2,0,255,254,254,255,1,2,1,1,1,1,1,1,1,0,0,0,0,0,3,1,3,0,3,0,0,0,0,0,0,4,4,4,1,1,1,1,254,254,254,255,254,251,250,251,255,0,2,2,2,2,2,2,1,254,254,253,253,255,0,2,3,4,4,3,2,1,1,0,0,254,252,252,250,247,247,251,5,49,81,63,56,19,247,243,214,173,187,230,19,49,50,36,15,1,238,212,197,195,225,6,27,34,29,21,15,0,231,215,206,212,232,253,8,20,35,34,30,9,234,224,235,251,5,17,23,34,37,24,248,234,244,250,2,3,11,11,248,218,252,35,31,28,2,255,8,3,255,27,30,29,13,4,241,229,245,254,251,4,247,232,235,241,242,223,224,249,9,254,245,241,247,251,0,248,253,9,18,15,8,253,239,232,244,250,6,22,41,39,30,14,247,240,236,254,11,15,20,19,13,252,241,236,239,243,247,5,24,31,10,244,220,209,208,232,5,28,40,34,10,236,215,224,241,2,15,21,20,20,16,10,0,244,237,244,0,9,18,22,21,13,4,255,252,253,1,4,4,2,1,0,255,254,253,254,255,0,2,5,7,8,8,4,0,0,253,252,253,1,5,9,10,7,6,5,255,251,251,252,0,3,1,5,5,1,1,255,255,2,6,5,5,5,1,254,247,248,252,0,1,2,2,2,255,252,249,252,0,254,254,253,246,245,245,249,255,6,14,14,6,250,240,235,236,244,253,9,21,25,21,9,255,242,234,234,244,3,15,13,13,12,11,4,252,244,239,242,247,252,4,12,15,7,251,242,240,243,248,1,16,19,14,2,246,244,246,248,253,4,11,10,6,0,1,5,2,255,246,241,240,241,246,254,5,9,5,0,249,247,246,240,246,250,251,250,248,244,247,251,1,5,8,3,254,248,243,239,249,3,9,16,19,14,9,3,253,255,1,3,10,18,22,19,17,15,15,14,13,14,14,14,13,11,9,5,0,250,243,239,237,240,250,3,15,22,26,33,34,37,37,30,29,27,25,26,24,20,18,17,16,17,21,21,17,9,1,249,241,233,228,228,228,231,234,234,236,237,235,233,233,226,225,222,221,224,229,237,248,0,2,2,4,3,255,254,253,253,252,253,0,4,5,9,9,6,6,3,0,252,249,245,245,242,246,250,255,255,254,249,247,244,247,253,253,255,255,0,255,252,247,250,0,10,13,12,10,3,254,248,247,253,4,12,19,17,12,6,1,253,255,255,252,0,253,252,255,255,2,5,3,248,242,236,234,233,239,239,249,6,9,9,5,248,235,225,228,246,20,40,37,22,0,240,229,226,232,254,17,20,18,13,4,251,245,241,242,245,248,249,246,241,235,228,221,218,222,244,28,71,109,116,116,110,105,87,53,16,1,4,29,56,80,86,83,79,65,53,35,18,8,0,243,229,212,209,212,219,226,232,239,236,224,214,210,205,207,209,209,204,192,187,189,201,221,242,8,19,21,10,249,233,222,220,221,232,247,3,15,24,27,22,9,254,248,249,253,255,2,2,2,0,253,252,248,245,245,253,4,9,11,13,8,255,240,233,233,227,233,246,11,25,36,31,18,254,246,239,251,0,5,17,12,19,11,16,12,3,254,246,246,254,5,16,14,10,11,2,253,240,242,247,246,247,253,14,28,22,12,0,0,254,248,244,249,0,7,13,17,22,19,14,9,0,249,251,252,0,5,12,13,13,9,5,0,254,254,254,255,1,2,2,2,2,2,2,3,6,4,3,0,0,0,1,2,2,2,0,255,254,252,251,251,252,253,254,255,255,0,0,255,253,251,249,248,248,249,251,252,255,0,0,0,255,255,255,255,255,255,255,255,1,2,2,2,2,2,2,2,0,2,0,0,0,0,1,0,254,254,254,1,2,3,3,3,3,0,0,0,253,253,254,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,5,5,2,5,6,6,6,3,6,6,3,3,4,4,4,1,1,2,2,3,4,4,1,1,255,255,255,0,253,0,254,254,255,255,255,252,252,253,253,253,250,250,250,250,250,250,250,250,250,250,250,250,252,249,249,252,252,251,251,254,254,0,0,0,255,255,1,1,0,0,255,255,2,5,5,4,4,3,2,2,2,2,5,5,5,4,4,3,3,2,2,2,5,5,6,9,9,9,9,5,1,0,1,1,1,1,1,1,2,2,2,2,2,2,255,255,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,1,255,255,1,255,1,2,5,2,1,1,1,255,1,1,2,2,2,2,0,0,0,0,0,0,0,253,253,253,253,254,0,1,1,1,1,0,254,254,0,1,1,255,0,0,254,254,0,0,255,0,0,0,254,0,0,0,0,3,0,3,0,254,252,249,253,0,255,1,7,27,58,60,55,18,245,221,212,188,188,210,251,40,62,54,29,5,243,222,205,201,222,1,27,44,43,31,17,0,236,219,210,218,236,0,16,19,24,16,2,240,230,221,246,16,20,36,22,15,251,237,243,237,0,4,8,9,57,46,9,220,224,247,241,246,254,54,31,11,245,226,245,242,246,254,249,252,4,10,17,36,255,225,222,243,245,249,27,21,23,13,244,238,232,236,3,12,3,19,11,9,2,239,242,243,254,5,3,15,22,16,10,3,5,11,17,22,25,25,13,255,240,236,238,254,5,12,12,33,29,71,24,253,231,240,227,212,220,244,22,24,0,223,234,232,0,240,232,234,237,219,222,239,250,20,15,5,252,0,240,245,255,0,11,20,17,9,10,9,6,6,8,0,12,14,13,16,11,1,250,250,251,253,0,252,2,3,249,244,240,241,246,250,253,246,248,248,252,255,254,252,248,246,246,251,251,255,9,17,21,19,11,5,0,253,252,248,252,4,16,22,22,20,9,4,0,250,249,250,5,11,13,16,11,0,248,248,254,253,4,13,21,21,13,8,4,0,253,0,255,9,19,25,29,19,13,2,252,252,254,0,5,11,13,10,3,253,250,247,245,243,247,249,254,252,253,252,247,246,246,243,244,248,249,249,248,245,244,244,247,251,253,3,3,4,250,242,244,250,244,247,254,9,15,19,17,8,255,243,238,237,240,246,2,17,25,18,8,252,245,239,233,240,252,6,14,11,9,7,255,245,236,236,250,3,12,19,18,10,3,243,227,224,228,237,254,10,20,18,4,241,230,226,229,235,241,247,250,252,251,248,245,244,246,254,9,19,19,16,9,0,250,248,251,6,18,29,32,24,18,11,6,3,6,11,22,23,21,24,20,16,9,8,8,9,12,8,0,250,245,248,2,16,39,54,65,66,62,51,35,19,4,255,0,10,22,28,28,27,20,15,4,253,249,242,234,230,222,217,213,212,215,218,220,226,228,233,233,230,225,220,215,214,214,220,227,238,249,0,7,12,7,1,252,250,249,249,255,2,8,8,8,7,10,10,14,18,22,23,23,18,11,6,0,0,254,1,3,12,17,19,19,8,2,248,240,236,240,244,249,253,0,3,2,1,253,252,251,253,252,255,1,4,7,5,1,0,2,6,7,14,13,9,0,248,243,239,235,237,241,247,1,9,8,0,246,238,229,227,231,241,252,2,6,7,6,3,254,248,242,244,247,253,0,3,8,3,251,245,243,249,255,7,17,16,7,251,246,252,253,1,3,6,6,5,2,255,250,246,242,239,238,238,239,237,234,229,217,205,205,241,32,85,113,111,109,102,98,82,46,23,18,25,46,64,73,80,73,65,54,41,39,34,26,16,253,234,217,208,210,210,214,226,225,225,221,216,211,207,198,195,194,186,185,187,195,213,233,249,5,7,3,249,245,243,245,251,255,5,11,7,5,4,8,13,22,27,28,25,21,10,0,248,246,247,250,255,253,254,255,0,254,255,255,251,247,243,238,237,237,244,248,251,254,253,255,1,4,6,8,7,5,4,5,1,4,4,9,10,9,10,15,9,7,2,0,2,6,7,7,3,255,253,247,251,2,6,2,250,244,240,247,251,255,1,0,0,254,0,252,255,1,6,3,2,8,7,8,1,1,7,14,11,11,10,9,4,254,250,0,4,9,7,8,3,254,253,0,253,255,252,254,9,9,12,13,11,4,0,249,248,248,246,253,1,6,10,6,7,3,251,243,243,244,253,1,1,1,254,2,255,251,251,0,0,0,253,254,254,253,252,252,251,251,252,254,255,0,0,253,249,245,244,244,247,0,10,22,34,41,37,32,19,10,6,7,12,17,23,24,21,19,16,14,16,15,17,20,14,8,2,249,243,241,244,246,249,251,253,255,252,250,251,249,246,243,239,232,228,233,238,243,248,248,248,248,243,239,238,242,242,250,249,248,248,247,246,245,248,252,2,2,9,4,3,3,2,2,2,1,254,0,0,4,4,9,8,4,4,4,0,0,0,0,64,4,31,0,0,2,7,12,13,8,3,255,251,245,242,243,251,3,7,5,255,249,248,253,1,6,8,5,0,249,246,252,5,13,12,4,252,248,249,251,255,4,8,8,2,252,251,0,6,7,4,255,252,252,252,252,253,253,254,255,2,9,15,16,11,3,251,244,240,240,248,3,13,15,9,0,248,243,242,246,0,8,15,15,9,0,248,245,248,254,1,5,8,8,4,253,246,246,251,2,9,14,14,8,253,239,232,236,248,4,15,22,20,9,247,230,226,238,3,27,40,39,26,8,247,234,232,245,9,31,51,65,66,45,4,216,186,181,201,235,10,30,28,7,234,210,202,214,236,2,19,27,24,12,253,237,226,222,227,243,8,30,38,29,8,245,234,237,250,11,26,32,26,11,253,242,242,249,2,10,15,15,11,5,0,253,250,249,251,0,8,14,16,9,255,244,241,245,251,0,5,7,6,2,255,252,250,250,252,0,6,9,7,2,255,254,254,0,0,1,2,3,4,4,3,1,0,0,1,2,3,5,5,3,0,254,253,254,255,0,1,0,253,250,251,254,0,0,0,1,1,0,253,251,252,254,255,255,254,255,0,255,255,255,255,254,254,0,0,1,0,0,0,2,2,1,0,255,0,0,1,3,4,3,2,1,0,0,0,2,4,6,6,5,3,3,4,3,0,254,253,254,0,2,2,0,0,1,2,1,0,255,255,0,1,2,0,0,255,0,255,252,251,251,254,0,1,1,0,0,254,252,252,254,0,1,3,2,0,254,253,254,255,0,1,2,1,0,0,0,2,3,3,3,2,2,1,1,1,2,2,3,2,0,255,255,1,4,4,2,0,0,0,0,3,15,29,28,0,214,196,219,4,32,32,16,0,249,241,233,234,252,19,32,23,1,240,233,238,247,0,9,15,16,6,246,235,238,253,13,23,18,4,250,254,18,45,54,24,223,180,186,233,29,56,55,43,30,14,252,241,244,244,216,165,130,153,228,51,87,80,59,43,20,234,188,173,199,242,14,23,26,34,39,31,16,9,14,22,19,4,239,223,223,238,254,2,251,240,239,250,7,14,14,11,4,247,229,219,226,244,3,12,19,29,40,45,44,39,29,11,246,226,217,220,229,236,241,247,255,2,3,2,5,14,25,28,23,15,10,10,8,0,244,238,240,247,253,2,10,18,23,27,28,24,11,248,230,221,224,233,243,251,0,3,0,252,248,247,245,244,246,253,12,31,44,41,26,7,250,244,242,244,251,4,9,4,249,238,234,236,241,247,3,18,29,27,14,1,254,255,252,243,235,234,242,253,4,10,14,15,10,0,243,234,235,244,0,9,14,13,10,5,255,250,248,249,250,248,246,247,251,2,10,16,17,11,0,246,240,242,251,4,11,10,4,253,248,251,2,9,13,12,8,3,254,250,247,248,251,254,1,6,11,16,16,10,1,248,243,244,248,253,1,4,6,6,4,1,255,255,0,3,2,0,253,253,255,4,8,9,5,255,247,243,244,248,254,1,6,12,16,14,7,0,253,250,248,249,253,2,6,5,1,255,0,2,2,0,254,253,255,0,0,0,0,0,254,253,253,1,6,11,11,7,0,245,238,239,247,0,6,9,9,9,8,5,2,0,251,247,248,253,3,10,14,11,3,252,246,244,246,251,0,6,9,9,7,2,253,248,246,247,251,0,6,11,11,5,255,250,248,248,252,1,7,10,8,2,254,249,247,247,250,255,2,5,6,4,0,249,240,235,236,245,5,26,43,48,39,18,248,227,221,233,4,38,66,75,60,26,244,212,196,199,218,248,16,27,19,0,232,216,210,214,229,252,17,32,32,19,254,231,216,215,228,252,19,32,30,16,254,238,234,241,0,16,29,30,21,8,254,248,247,249,254,5,14,19,16,9,0,250,246,246,253,5,11,11,7,1,252,247,244,246,252,4,9,8,3,254,251,250,253,0,1,3,4,4,3,3,1,0,254,254,0,4,5,5,3,2,1,0,0,0,3,5,6,5,2,0,252,251,252,255,1,3,3,2,0,254,253,254,255,255,255,255,0,0,255,253,251,250,252,255,0,1,0,255,253,253,252,252,253,0,1,1,0,0,1,2,2,2,2,1,0,0,1,3,5,5,4,3,3,3,3,1,0,0,1,2,3,3,2,2,1,0,0,0,1,3,3,3,1,0,0,0,0,0,0,0,0,0,255,253,253,254,255,0,1,2,0,253,249,247,249,253,0,4,4,4,4,4,3,1,254,251,249,250,254,1,3,3,3,2,0,0,0,0,2,3,2,0,0,1,3,3,1,0,1,2,3,4,3,1,0,255,252,252,253,0,2,4,3,1,0,0,1,2,1,0,0,0,254,253,255,1,2,0,251,250,255,3,4,0,254,255,1,2,0,254,252,252,253,253,252,255,7,15,18,19,25,21,0,232,235,6,26,5,216,200,241,41,58,27,252,5,44,55,13,207,179,145,0,4,0,69,0,208,0,128,2,160,5,56,9,128,12,148,17,244,26,60,5,21,12,9,15,6,6,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,44,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,69,0,208,0,128,2,160,5,56,9,128,12,148,17,244,26,45,5,22,12,9,16,6,6,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,43,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,69,0,192,0,24,2,80,5,136,9,128,12,148,17,244,26,40,9,19,25,25,19,6,6,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,45,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,192,0,24,2,80,5,136,9,128,12,148,17,244,26,0,9,19,25,25,19,6,6,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,45,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,15,38,0,253,255,1,1,0,253,252,253,253,255,252,253,0,0,1,254,252,253,2,10,19,28,37,42,43,32,0,224,200,200,223,243,253,252,247,246,242,244,1,17,31,30,13,0,245,241,248,255,6,9,9,12,13,15,16,11,6,0,251,248,245,245,244,242,242,242,247,255,7,14,14,8,255,248,246,248,254,1,2,3,4,5,8,12,17,19,19,16,12,6,253,242,235,234,236,240,243,247,251,253,253,0,4,10,13,14,12,5,0,255,255,2,7,10,12,10,4,0,254,253,254,254,252,249,245,242,242,245,250,255,4,9,10,9,8,6,5,5,4,3,2,0,253,252,252,251,253,255,1,5,7,8,5,1,251,247,248,251,1,3,1,0,255,0,2,6,11,15,14,9,255,244,237,238,244,249,253,255,0,1,254,253,255,3,6,4,5,9,9,4,2,6,21,33,33,23,2,237,224,221,232,246,0,3,252,241,236,240,252,7,15,18,14,4,252,248,252,1,5,6,8,10,12,12,12,9,5,255,250,249,251,252,253,250,247,245,247,253,4,8,8,4,254,249,247,250,255,1,3,3,1,1,0,3,6,9,10,10,8,4,2,0,0,0,0,255,252,251,250,252,254,253,254,254,0,255,253,252,252,254,255,0,4,10,12,12,9,5,3,1,1,1,1,0,253,249,247,249,251,0,3,4,0,253,251,252,255,1,2,4,6,4,4,3,3,4,2,0,255,0,2,0,254,250,247,247,250,0,7,9,7,5,2,0,0,0,3,6,4,0,254,252,252,252,254,1,6,9,6,3,2,254,247,246,248,252,254,252,249,250,252,254,0,6,11,9,5,2,0,6,10,17,29,33,22,5,240,231,231,236,246,252,253,253,244,241,244,250,4,11,10,8,0,253,252,251,0,4,7,11,11,12,14,11,9,5,0,255,251,250,251,250,250,250,250,253,0,3,6,5,2,254,247,245,246,250,255,1,3,4,5,6,7,9,11,9,6,2,0,253,255,3,3,2,3,255,246,246,249,254,2,255,253,253,255,252,249,0,5,7,6,4,6,8,6,4,3,2,2,2,1,0,0,254,250,247,246,249,254,2,2,0,0,255,254,0,3,7,9,9,5,2,0,0,0,0,0,0,255,254,253,252,252,253,255,1,4,5,4,5,3,1,1,255,254,255,253,254,0,2,5,7,4,1,1,1,1,0,255,253,253,253,251,251,255,4,6,7,2,255,250,246,245,247,253,0,0,0,1,2,6,9,14,21,26,28,22,8,250,237,231,232,238,248,0,1,0,253,252,254,0,2,3,1,254,249,246,248,251,0,7,13,18,20,19,15,9,2,253,247,244,245,247,251,254,0,0,0,1,4,6,7,6,1,251,245,242,242,247,254,4,10,13,13,9,6,3,2,2,1,1,0,254,254,255,0,3,1,253,250,252,255,0,0,1,0,253,247,246,253,3,8,11,13,11,6,1,254,255,0,0,0,0,255,253,252,253,254,0,0,1,0,1,0,253,250,250,254,1,6,8,8,7,5,0,255,0,1,2,2,2,0,254,250,250,252,0,2,1,0,0,0,0,0,2,5,5,1,255,254,253,254,0,1,3,3,3,3,4,5,3,3,0,252,250,252,255,1,2,0,254,253,253,251,255,2,4,5,0,250,249,251,254,0,4,6,6,6,7,10,16,21,18,9,0,244,237,236,238,246,255,1,4,5,4,3,0,0,254,252,252,250,250,253,252,254,3,7,13,16,14,12,7,2,253,248,247,249,251,253,255,0,3,4,5,6,5,3,255,251,248,248,249,251,253,0,1,3,6,8,8,8,7,5,1,255,254,253,253,254,255,1,4,4,2,254,252,252,251,248,248,254,2,3,2,2,4,6,7,7,9,7,0,250,247,251,0,2,2,1,0,254,0,2,4,3,0,248,245,247,252,0,4,6,6,5,5,6,11,13,6,251,242,245,254,1,3,0,0,253,246,253,0,5,8,4,254,251,253,252,6,11,12,11,255,246,251,255,255,255,0,3,1,254,3,5,4,5,2,0,3,252,245,247,250,251,5,10,7,7,6,2,0,254,253,251,248,244,243,249,0,1,8,15,12,11,12,11,13,14,5,252,247,240,240,246,251,2,8,8,4,0,0,0,253,252,248,245,247,247,251,2,7,7,11,9,10,11,9,5,1,254,250,249,249,251,255,2,4,6,6,5,1,254,250,248,251,253,253,0,0,0,3,2,1,5,6,4,4,3,2,2,1,0,255,254,255,1,4,5,4,1,251,245,242,243,251,3,6,8,5,254,251,255,4,8,10,8,2,0,254,250,1,4,1,254,254,1,4,4,0,255,249,240,243,251,5,16,14,9,4,1,252,244,251,5,9,14,7,0,254,241,236,255,3,3,10,3,252,1,2,249,245,252,16,23,13,253,244,233,240,1,3,17,28,0,254,12,4,254,3,250,244,3,251,233,239,5,9,3,16,22,7,6,241,228,255,16,5,254,253,244,248,248,6,20,11,3,244,232,251,5,10,13,6,246,245,0,15,30,38,30,4,239,230,224,228,249,6,8,10,5,252,255,2,1,254,251,246,249,251,254,6,5,2,5,3,4,12,15,10,6,1,246,239,243,250,251,255,2,2,7,9,7,9,4,255,252,249,250,0,1,253,1,2,254,0,10,13,11,13,6,251,242,251,254,248,0,6,252,246,254,254,254,10,9,252,250,253,242,239,0,17,10,6,27,23,0,3,7,251,238,243,250,247,10,8,245,247,4,0,251,20,32,10,252,248,236,236,238,233,243,32,15,2,29,3,248,5,15,0,1,27,242,239,213,196,253,20,37,79,92,5,232,236,200,180,193,4,26,12,21,25,12,19,28,235,255,36,3,237,236,235,227,223,228,248,28,64,58,39,28,255,221,205,201,210,246,255,254,18,32,23,12,21,30,30,13,249,245,246,240,223,236,255,2,14,21,21,20,22,255,235,232,231,230,239,248,3,8,7,6,8,10,9,6,2,3,0,248,242,244,251,0,7,14,19,20,14,6,250,245,241,240,240,247,3,9,9,10,8,8,6,3,2,1,251,249,249,248,248,250,1,10,17,23,16,9,4,247,235,230,232,238,251,2,7,8,9,5,6,3,3,5,6,7,2,254,251,1,253,252,7,19,11,5,0,251,254,239,232,242,4,1,253,10,16,13,253,251,9,6,1,0,254,254,242,241,18,27,249,243,12,7,251,255,255,4,255,232,231,255,14,23,15,3,11,18,246,232,247,251,0,0,0,12,17,1,243,248,2,0,2,4,4,255,247,240,250,8,16,16,8,3,255,249,245,247,247,247,245,252,5,12,11,13,19,16,8,0,253,0,2,254,248,248,247,247,248,0,10,16,15,9,1,249,244,237,239,250,0,4,7,4,5,6,2,2,0,2,1,0,0,255,0,1,255,0,2,2,2,5,5,1,255,253,253,251,253,1,1,1,2,1,4,2,254,253,0,1,3,2,1,2,3,3,0,1,5,6,3,254,248,244,242,243,248,253,4,10,13,10,5,6,2,0,7,4,0,0,248,243,248,0,8,12,9,2,2,254,250,255,0,254,250,246,246,255,3,2,12,12,5,1,0,252,3,9,3,1,0,252,247,251,4,7,15,10,255,255,250,241,241,247,248,255,3,254,0,9,14,13,12,11,7,3,252,245,251,0,253,254,253,251,252,254,255,2,6,7,7,3,253,247,250,254,5,10,13,7,1,249,251,253,254,2,3,0,252,251,251,0,2,4,3,3,0,254,255,253,1,0,0,4,2,2,4,3,2,11,13,5,255,248,247,248,248,250,255,3,5,6,4,3,3,254,249,249,251,0,2,1,0,2,255,255,3,5,4,10,9,2,254,251,245,250,255,4,4,4,5,0,252,255,4,3,255,0,252,255,1,1,3,4,8,5,254,254,0,254,253,4,2,0,0,246,247,0,5,4,9,3,3,249,240,244,0,0,8,21,11,1,255,253,251,3,9,9,255,249,238,233,237,251,2,17,24,24,7,254,254,3,11,15,6,252,2,23,46,235,133,179,224,23,75,51,25,25,234,202,2,36,20,15,251,219,230,243,237,2,33,20,6,5,2,2,14,0,242,243,238,231,249,11,31,41,32,1,244,237,237,240,248,252,251,250,250,3,18,29,26,13,246,241,246,247,244,252,0,253,0,255,5,13,6,1,7,2,0,245,246,255,3,255,247,250,4,15,20,29,31,12,246,230,226,232,243,3,14,17,13,7,0,1,2,250,244,238,237,245,1,8,14,18,7,253,251,0,6,9,8,0,246,240,242,246,3,12,13,13,10,4,4,4,0,252,246,242,245,252,3,10,12,7,3,2,4,7,9,5,255,252,253,255,253,252,248,248,250,249,255,254,255,254,255,0,1,5,5,7,8,3,1,253,251,254,13,15,10,10,255,244,247,253,2,4,4,249,244,247,250,255,9,8,0,0,4,0,0,1,254,2,7,3,0,6,7,252,251,249,253,251,3,4,10,10,246,232,248,9,11,14,27,14,246,227,222,249,12,11,18,22,6,247,244,254,1,251,240,233,246,254,254,2,0,7,3,0,2,20,33,38,32,21,4,240,226,222,237,2,6,8,10,7,6,6,1,255,247,236,222,223,239,252,8,20,20,12,3,255,0,7,11,4,249,243,242,243,252,10,20,21,12,4,5,6,4,0,250,249,250,252,0,4,8,9,2,0,0,1,255,253,249,246,248,248,252,1,8,15,15,12,6,255,249,241,240,242,242,252,0,3,13,11,10,4,254,0,2,5,6,2,253,244,244,0,5,10,17,13,7,9,254,243,240,242,242,245,2,17,24,11,250,231,240,10,7,4,3,2,9,16,15,20,28,246,208,197,230,6,16,28,31,9,254,244,226,244,17,19,6,11,7,246,232,228,245,10,27,20,12,13,5,254,254,249,250,249,241,237,248,0,5,14,16,18,12,254,244,246,246,242,242,245,254,8,15,14,14,14,4,253,252,6,14,16,11,0,247,237,231,239,255,11,19,21,16,11,1,247,236,232,232,233,241,0,12,22,24,18,7,251,244,247,252,5,12,11,253,245,247,249,2,10,16,13,4,253,251,1,0,255,255,249,244,248,0,4,19,14,255,253,253,245,251,1,4,10,7,0,253,3,0,9,6,255,252,244,238,244,250,5,3,254,0,0,4,24,23,23,13,255,246,244,242,246,236,239,0,5,245,4,14,17,20,6,249,0,12,253,247,255,251,253,248,0,4,12,13,4,1,4,249,250,243,249,2,253,251,252,9,15,18,9,7,2,247,240,237,243,254,2,9,12,13,9,8,9,9,0,243,233,237,245,255,7,10,1,4,10,10,12,14,3,241,239,240,249,8,16,8,251,248,245,253,17,25,12,1,239,226,225,245,4,14,18,16,6,255,255,253,255,6,6,1,1,10,14,15,10,0,249,244,241,245,0,9,8,5,1,255,251,250,248,246,248,248,249,0,8,13,11,7,0,250,247,253,3,7,10,4,252,253,0,0,4,8,4,1,0,254,2,4,255,249,245,248,253,8,19,25,19,4,245,238,238,247,5,12,13,6,253,251,253,255,255,254,0,252,245,246,250,0,0,3,6,6,7,4,2,1,1,254,249,249,247,250,0,4,8,16,15,17,21,33,35,23,255,228,203,181,175,214,16,67,82,56,8,227,212,208,241,31,60,45,12,236,207,213,226,235,11,43,39,34,34,23,250,225,212,205,225,249,5,24,36,36,20,7,249,236,241,239,248,5,12,6,253,245,241,233,239,244,2,21,28,26,14,253,248,253,10,22,39,40,26,2,239,231,234,244,249,249,254,254,255,0,0,254,246,239,233,238,249,3,11,11,7,254,245,245,254,10,21,20,10,255,248,246,250,1,8,15,15,8,3,1,6,8,11,6,0,251,246,248,250,253,254,0,0,2,5,11,10,9,2,248,237,230,232,237,247,253,1,4,8,13,14,13,16,10,2,248,246,249,255,1,8,11,9,6,2,255,0,5,5,1,252,242,244,245,244,255,8,13,13,9,7,3,253,250,249,242,246,253,5,4,10,8,0,253,8,10,0,2,249,237,240,252,9,5,0,8,12,9,21,38,19,250,226,203,211,231,250,24,34,27,7,245,231,237,255,250,255,11,10,7,8,18,37,45,30,7,252,234,222,230,245,11,15,4,247,242,251,0,3,8,1,249,235,224,233,244,250,0,3,9,11,14,18,20,18,11,251,240,236,242,0,10,17,21,17,12,7,6,6,2,0,252,247,248,245,241,244,252,0,6,9,10,10,8,255,251,247,245,245,247,251,5,10,6,5,254,251,253,1,2,3,1,255,252,252,254,4,7,2,253,255,7,17,19,12,12,6,243,222,231,246,0,11,18,19,10,249,234,237,1,19,18,4,242,233,237,248,13,23,24,18,5,250,247,246,250,3,254,247,255,0,255,3,1,255,6,6,11,20,10,255,247,239,242,0,252,252,6,10,0,3,0,1,11,7,251,247,252,244,250,1,10,10,0,247,244,253,4,1,255,1,2,0,0,255,6,16,13,15,18,23,13,254,245,239,241,245,245,254,6,5,2,2,0,0,253,245,241,243,246,247,253,1,8,7,5,5,4,7,7,11,7,4,254,247,247,252,3,11,11,3,1,0,0,3,7,6,0,253,251,0,0,251,249,255,253,1,13,13,12,8,248,240,241,238,242,252,255,2,5,0,255,10,15,7,6,10,2,251,251,0,5,249,252,248,253,0,33,20,8,3,240,235,244,253,2,7,249,8,19,2,1,252,240,237,232,254,24,34,26,11,248,238,245,240,11,23,21,7,1,245,225,213,239,15,22,26,16,249,250,241,243,255,5,13,7,16,5,246,235,253,255,9,26,19,16,2,240,230,237,253,253,237,226,0,11,24,24,21,1,251,249,241,252,12,4,4,9,6,8,29,31,13,250,235,231,240,6,10,4,3,252,234,232,251,2,7,8,7,250,248,243,239,248,0,0,2,11,11,11,13,6,2,253,249,247,250,3,6,9,6,8,3,3,5,9,11,6,0,248,245,243,247,3,10,10,8,10,6,1,1,0,1,251,244,231,226,230,239,250,3,13,20,20,10,8,6,6,2,254,250,252,255,1,11,16,15,11,2,1,1,0,247,240,236,235,240,247,1,13,17,17,10,5,6,6,3,6,4,255,245,241,247,252,5,7,6,1,253,252,245,240,253,11,12,12,6,2,1,0,5,7,10,2,247,243,237,235,248,252,254,0,255,250,249,250,255,248,252,0,10,17,24,32,45,55,58,47,17,236,205,203,226,2,18,14,248,222,213,218,238,0,13,11,0,247,238,234,236,241,247,251,4,17,34,45,42,20,253,236,234,237,253,10,16,15,11,7,11,21,27,26,14,3,249,238,233,231,231,239,245,0,10,20,26,18,3,233,212,211,218,231,247,9,24,26,27,24,24,22,21,16,3,248,239,235,236,238,249,4,11,18,18,16,12,7,252,238,232,225,228,241,4,24,36,34,22,12,255,245,246,245,245,244,242,245,249,0,10,11,7,2,2,13,11,0,246,244,240,243,8,26,24,20,9,2,5,250,234,227,226,218,224,236,237,11,27,26,18,14,13,14,18,33,49,60,44,8,232,202,198,216,248,23,43,38,14,247,234,231,231,225,220,223,227,237,250,4,16,17,11,3,0,8,17,24,22,10,0,237,230,232,247,13,29,38,37,33,22,6,253,243,238,237,238,246,6,17,14,10,3,254,253,250,251,255,253,246,228,220,219,225,238,255,15,27,36,37,25,13,5,0,251,249,0,2,2,5,4,3,0,250,248,250,255,250,247,3,248,237,251,3,14,33,34,19,7,1,255,247,252,255,240,235,250,244,246,3,250,244,12,21,15,4,253,3,6,242,233,254,19,30,17,3,4,9,249,234,236,246,0,0,255,0,5,6,2,4,9,1,251,248,241,235,240,239,251,11,9,4,13,21,21,26,29,27,22,10,247,230,230,238,241,252,7,12,12,11,7,3,255,244,232,226,226,231,240,250,2,8,10,11,12,13,15,16,13,8,1,252,249,247,247,250,253,0,10,19,25,21,14,3,249,239,240,244,248,255,6,10,13,16,13,7,0,248,247,240,238,240,241,241,245,248,252,2,9,15,19,13,6,1,253,248,249,0,6,3,9,14,10,14,18,1,252,252,244,243,251,239,250,5,0,4,25,7,6,255,228,245,5,13,4,247,246,2,251,17,18,5,8,253,229,233,5,9,8,6,234,235,0,8,27,37,19,8,255,242,236,0,254,247,250,250,247,6,0,2,16,7,245,7,250,241,2,0,247,1,0,254,4,7,253,255,7,15,15,21,25,17,6,248,235,237,244,247,2,8,8,6,4,2,254,247,240,234,235,243,253,4,4,7,8,3,3,6,6,6,6,4,2,255,250,247,249,250,255,7,11,13,16,15,8,1,251,250,250,250,247,248,250,0,8,13,13,12,5,255,253,0,2,4,6,5,253,240,234,236,239,240,245,255,7,11,13,16,11,5,0,251,251,1,5,6,12,16,11,0,249,243,249,2,9,7,6,3,244,240,246,248,1,16,3,0,9,6,245,253,254,246,251,11,17,16,12,4,246,245,255,252,238,0,12,0,5,6,253,3,13,245,243,7,8,249,1,254,0,49,0,3,0,5,0,76,0,44,1,20,5,84,11,112,13,135,15,160,28,10,33,11,58,50,34,55,26,13,0,150,120,120,120,120,120,90,120,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,124,0,184,1,20,5,84,11,52,13,110,15,160,28,39,44,29,70,56,46,61,29,14,0,120,120,120,120,120,120,60,60,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,208,0,13,2,106,5,84,11,168,12,141,14,160,28,0,90,41,72,106,78,67,41,24,0,120,135,150,120,120,120,120,165,90,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,45,0,2,0,5,0,148,0,120,1,100,5,84,11,32,13,135,15,224,28,45,35,32,58,36,40,51,27,10,0,102,105,127,120,120,120,102,90,127,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,84,1,7,3,153,4,84,11,208,12,241,14,224,28,0,101,47,95,101,61,67,43,20,0,195,135,120,120,120,120,120,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,45,0,2,0,5,0,208,0,249,1,160,5,84,11,52,13,135,15,192,28,45,35,33,58,48,44,49,28,11,0,150,120,120,120,120,120,90,120,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,208,0,53,2,172,5,84,11,12,13,35,15,192,28,0,98,43,86,110,84,80,43,13,0,120,120,120,120,120,120,90,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,65,0,3,0,1,0,104,0,44,1,200,5,84,11,12,13,135,15,32,28,0,31,17,53,34,32,55,26,8,0,150,120,150,120,120,120,120,105,150,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,184,1,84,6,84,11,92,13,210,15,32,28,65,34,21,63,48,43,41,21,7,0,150,105,150,120,120,120,120,45,150,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,104,1,152,8,84,11,32,13,210,15,32,28,0,76,20,78,80,78,76,34,10,0,150,150,120,120,120,120,120,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,65,0,4,0,5,0,92,0,69,1,76,4,84,11,72,13,241,14,160,28,20,32,20,64,39,19,26,31,13,0,150,105,105,120,120,120,90,90,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,92,0,69,1,232,3,84,11,168,12,141,14,32,27,9,40,22,69,49,42,33,29,14,0,150,105,105,120,120,120,90,90,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,156,0,189,1,200,3,84,11,148,12,191,14,32,27,36,51,31,74,65,42,39,24,19,0,150,120,105,120,120,120,90,90,75,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,124,0,209,1,112,3,84,11,68,12,191,14,160,26,0,145,39,116,103,71,71,45,26,0,120,120,120,120,120,120,75,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,51,0,3,0,5,0,92,0,19,1,120,5,84,11,52,13,216,14,128,27,12,33,10,60,36,40,59,33,11,0,150,105,135,120,120,120,75,75,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,172,0,144,1,80,5,84,11,32,13,191,14,224,26,39,45,35,70,52,50,58,33,15,0,150,105,150,120,120,120,75,60,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,144,1,70,6,84,11,228,12,141,14,224,26,0,116,48,135,71,71,67,43,17,0,120,90,150,120,120,120,45,60,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,1,0,188,0,8,2,40,5,140,10,128,12,91,14,0,27,34,69,36,83,77,49,57,38,23,0,150,120,120,120,120,120,135,90,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,8,2,176,4,84,11,208,12,191,14,0,27,44,52,38,68,65,49,50,31,23,0,150,120,120,120,120,120,135,90,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,140,0,244,1,176,4,84,11,152,13,104,16,128,27,42,23,21,57,27,25,19,16,11,0,150,120,120,120,120,120,135,60,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,140,0,224,1,20,5,84,11,152,13,104,16,0,27,0,20,19,49,26,17,13,15,8,0,150,150,120,120,120,120,135,60,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,25,0,4,0,1,0,184,0,93,2,200,3,40,10,68,12,141,14,160,28,30,70,39,71,86,54,58,35,17,0,150,105,120,120,120,120,150,90,135,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,249,1,176,4,84,11,168,12,85,15,64,29,25,37,27,62,51,35,37,27,13,0,150,105,120,120,120,120,150,120,135,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,189,1,176,4,84,11,228,12,60,15,64,29,60,32,27,57,34,25,30,20,10,0,150,105,120,120,120,120,150,120,135,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,72,0,149,1,20,5,84,11,52,13,235,15,64,29,0,18,24,48,20,10,10,13,9,0,150,105,120,120,120,120,105,120,135,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,1,0,216,0,68,2,186,4,100,10,32,13,191,14,64,29,33,39,26,55,68,37,42,32,19,0,150,144,120,120,120,120,150,93,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,192,0,249,1,176,4,84,11,228,12,91,14,128,28,75,26,27,44,44,33,26,19,7,0,150,150,120,120,120,120,150,90,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,19,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,1,0,192,0,239,1,70,6,196,9,12,13,241,14,224,27,40,66,32,77,77,68,57,41,20,0,150,120,120,120,120,120,120,120,150,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,33,0,192,0,239,1,20,5,84,11,92,13,241,14,224,27,45,29,24,58,37,35,28,22,8,0,150,120,120,120,120,120,120,90,150,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,176,0,219,1,216,4,104,11,92,13,85,15,224,27,45,25,27,53,28,16,19,10,5,0,150,120,120,120,120,120,120,90,150,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,128,0,219,1,40,5,104,11,72,13,85,15,224,27,0,20,22,49,36,11,14,13,7,0,150,120,120,120,120,120,120,90,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,16,0,5,0,1,0,228,0,38,2,134,3,140,10,88,12,166,14,128,28,33,52,32,61,59,47,39,22,17,0,150,120,120,120,120,120,150,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,239,1,116,4,84,11,168,12,10,15,96,28,16,59,36,73,48,43,42,25,16,0,150,120,120,120,120,120,150,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,180,0,239,1,176,4,84,11,208,12,166,14,96,28,28,32,27,61,38,29,27,20,11,0,150,120,120,120,120,120,105,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,180,0,239,1,176,4,84,11,208,12,166,14,96,28,45,21,17,59,33,24,22,13,6,0,150,120,75,120,120,120,105,30,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,180,0,179,1,20,5,84,11,32,13,166,14,96,28,0,19,23,46,28,23,16,13,8,0,120,150,105,120,120,120,75,60,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,35,0,4,0,1,0,200,0,159,1,68,3,160,10,28,12,141,14,32,26,44,53,36,69,41,26,30,24,11,0,150,120,120,120,120,120,105,120,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,200,0,99,1,176,4,84,11,108,12,60,15,32,26,55,49,32,69,34,31,35,24,11,0,150,105,120,120,120,120,75,120,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,139,1,176,4,84,11,112,13,60,15,32,26,35,28,34,51,41,20,24,22,7,0,150,105,120,120,120,120,75,120,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,172,0,139,1,20,5,84,11,112,13,60,15,32,26,0,23,31,47,38,19,22,20,7,0,150,105,120,120,120,120,75,120,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,50,0,2,0,5,0,76,0,104,1,84,6,84,11,132,13,135,15,32,29,50,17,9,45,22,18,33,19,8,0,155,135,97,120,120,120,95,105,97,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,76,0,104,1,84,6,84,11,132,13,135,15,32,29,0,12,7,38,23,15,28,16,7,0,150,135,97,120,120,120,90,105,97,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,50,0,2,0,5,0,108,0,124,1,230,4,120,10,132,13,135,15,32,29,50,25,12,55,30,20,36,21,9,0,150,135,120,120,120,120,90,105,75,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,94,1,175,4,180,10,212,13,185,15,160,28,0,18,27,41,23,19,23,19,12,0,165,105,135,120,120,120,60,120,105,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,204,0,94,1,120,5,84,11,212,13,185,15,160,28,30,13,22,33,18,15,18,15,10,0,165,105,135,120,120,120,60,120,105,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,76,0,104,1,120,5,84,11,132,13,135,15,32,29,40,20,10,49,28,20,36,21,9,0,155,135,120,120,120,120,95,105,75,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,76,0,104,1,120,5,84,11,132,13,135,15,32,29,0,20,10,49,30,20,36,21,9,0,150,135,120,120,120,120,90,105,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,40,0,2,0,5,0,76,0,104,1,230,4,120,10,132,13,135,15,32,29,40,8,6,32,19,13,23,14,5,0,150,135,120,120,120,120,90,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,76,0,104,1,230,4,120,10,132,13,135,15,32,29,0,21,10,49,30,20,36,21,9,0,150,135,120,120,120,120,90,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,85,0,2,0,5,0,76,0,104,1,156,4,120,10,132,13,135,15,32,29,85,14,9,40,27,13,20,10,8,0,150,135,120,120,120,120,90,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,76,0,104,1,196,4,120,10,132,13,135,15,32,29,0,23,10,51,32,21,38,23,10,0,150,135,120,120,120,120,90,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,48,0,2,0,5,0,76,0,104,1,100,5,120,10,132,13,135,15,32,29,48,13,8,40,25,13,20,10,8,0,150,135,97,120,120,120,90,105,97,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,76,0,104,1,100,5,120,10,132,13,135,15,32,29,0,22,10,51,30,21,38,23,10,0,150,135,97,120,120,120,90,105,97,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,1,0,216,0,68,2,186,4,100,10,32,13,191,14,64,29,33,39,26,55,68,37,42,32,19,0,150,144,120,120,120,120,150,93,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,192,0,249,1,189,3,120,10,228,12,91,14,128,28,100,27,27,44,44,33,26,19,7,0,150,150,120,120,120,120,150,90,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,112,3,200,10,52,13,235,15,128,27,0,19,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,35,0,4,0,1,0,200,0,159,1,68,3,160,10,28,12,141,14,32,26,44,43,32,62,36,23,27,21,9,0,150,120,120,120,120,120,105,120,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,200,0,88,1,188,2,64,11,108,12,60,15,32,26,60,39,27,58,27,26,29,20,9,0,150,105,120,120,120,120,75,120,105,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,172,0,139,1,200,3,64,11,112,13,60,15,32,26,35,28,34,51,41,20,24,22,7,0,150,105,120,120,120,120,75,120,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,172,0,139,1,200,3,64,11,112,13,60,15,32,26,0,23,31,47,38,19,22,20,7,0,150,105,120,120,120,120,75,120,105,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,1,0,188,0,8,2,40,5,140,10,128,12,91,14,0,27,34,69,36,83,77,49,57,38,23,0,150,120,120,120,120,120,135,90,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,8,2,164,4,140,10,208,12,191,14,0,27,49,52,38,68,65,49,50,31,23,0,150,120,120,120,120,120,135,90,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,140,0,244,1,90,3,84,11,152,13,104,16,128,27,50,25,21,57,27,25,19,16,11,0,150,120,120,120,120,120,135,60,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,140,0,224,1,46,3,84,11,152,13,104,16,0,27,0,22,19,49,26,17,13,15,8,0,150,150,120,120,120,120,135,60,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,25,0,4,0,1,0,184,0,93,2,200,3,40,10,68,12,141,14,160,28,40,70,39,71,86,54,58,35,17,0,150,105,120,120,120,120,150,90,135,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,249,1,156,3,160,10,168,12,85,15,64,29,25,40,27,62,51,35,37,27,13,0,150,105,120,120,120,120,150,120,135,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,189,1,24,3,160,10,228,12,60,15,64,29,75,36,27,57,34,25,30,20,10,0,150,105,120,120,120,120,150,120,135,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,72,0,149,1,68,3,160,10,52,13,235,15,64,29,0,19,24,48,20,10,10,13,9,0,150,105,120,120,120,120,105,120,135,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,1,0,192,0,239,1,70,6,196,9,12,13,241,14,224,27,40,66,32,77,77,68,57,41,20,0,150,120,120,120,120,120,120,120,150,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,192,0,239,1,21,4,4,11,92,13,241,14,224,27,50,29,24,58,37,35,28,22,8,0,150,120,120,120,120,120,120,90,150,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,176,0,219,1,101,3,4,11,92,13,85,15,224,27,50,26,27,53,27,16,19,10,5,0,150,120,120,120,120,120,120,90,150,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,128,0,219,1,57,3,24,11,72,13,85,15,224,27,0,22,22,49,32,11,14,13,7,0,150,120,120,120,120,120,120,90,105,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,5,0,1,0,228,0,38,2,134,3,140,10,88,12,166,14,128,28,33,56,36,60,66,44,44,25,19,0,150,120,120,120,120,120,150,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,228,0,239,1,145,3,220,10,168,12,10,15,96,28,20,51,36,64,48,43,42,25,16,0,150,120,120,120,120,120,150,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,180,0,239,1,35,3,44,11,208,12,166,14,96,28,28,39,27,61,38,29,27,20,11,0,150,120,120,120,120,120,105,120,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,180,0,239,1,115,2,44,11,208,12,166,14,96,28,51,25,17,59,33,24,22,13,6,0,150,120,75,120,120,120,105,30,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,72,0,149,1,68,3,160,10,52,13,235,15,64,29,0,19,24,48,20,10,10,13,9,0,150,105,120,120,120,120,105,120,135,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,2,0,5,0,85,0,221,1,77,5,116,10,4,13,85,15,115,27,75,28,21,51,46,25,22,17,9,3,157,141,126,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,18,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,2,0,5,0,168,0,139,2,30,5,240,10,82,13,135,15,208,27,75,24,21,49,38,22,14,13,6,4,168,130,128,120,120,120,217,150,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,18,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,2,0,5,0,192,0,249,1,176,4,84,11,228,12,91,14,128,28,75,26,27,44,44,33,26,20,7,0,150,150,120,120,120,120,150,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,19,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,37,0,149,0,24,1,207,8,214,11,112,13,134,16,42,27,45,43,8,62,52,48,52,24,16,8,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,94,1,120,5,84,11,212,13,185,15,160,28,45,23,30,44,24,21,24,20,14,0,165,105,135,120,120,120,60,120,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,204,0,94,1,120,5,84,11,212,13,185,15,160,28,0,23,30,44,24,21,24,20,14,0,165,105,135,120,120,120,60,120,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,37,0,168,0,32,2,132,3,216,9,164,11,141,14,32,27,90,54,32,56,64,39,36,18,14,6,187,125,137,120,120,120,165,135,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,76,0,104,1,100,5,120,10,132,13,135,15,32,29,45,19,10,48,30,16,24,12,10,0,150,135,97,120,120,120,90,105,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,76,0,104,1,100,5,120,10,132,13,135,15,32,29,0,19,10,48,30,16,24,12,10,0,150,135,97,120,120,120,90,105,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,2,0,5,0,120,0,118,1,6,4,70,10,32,13,147,15,8,27,75,25,11,50,35,19,16,21,9,5,168,130,128,120,120,120,177,125,102,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,18,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,148,0,24,1,209,8,68,12,112,13,140,15,112,23,20,21,12,40,14,12,16,9,3,6,110,180,177,225,247,175,110,180,177,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,232,0,128,1,132,8,240,10,112,13,80,15,137,23,40,63,15,78,24,18,27,12,6,6,110,155,177,225,247,175,110,155,177,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,208,0,8,2,228,7,60,10,72,13,40,15,137,23,0,88,21,93,36,45,48,24,6,6,110,180,202,225,252,175,110,180,202,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,192,0,160,1,48,7,40,10,32,13,20,15,137,23,25,12,8,30,19,20,22,17,2,2,150,185,192,222,242,195,150,185,192,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,40,2,44,6,236,9,188,12,156,14,137,23,42,36,39,48,30,33,29,21,6,6,150,155,192,247,242,195,150,155,192,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,212,0,168,2,216,4,236,9,48,12,116,14,143,22,0,65,48,66,54,33,36,24,6,3,202,155,192,180,242,225,202,155,192,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,176,0,80,1,56,9,84,11,112,13,100,15,88,27,20,19,15,32,12,20,18,11,2,5,177,192,197,235,220,175,177,192,197,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,237,0,219,1,0,8,136,10,108,13,54,15,47,28,40,35,24,47,36,36,28,19,7,6,214,159,176,171,165,144,177,192,197,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,0,44,31,56,60,55,42,31,10,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,116,0,0,1,16,9,144,11,212,13,180,15,243,22,25,10,3,30,27,15,15,9,0,3,150,142,140,165,210,175,150,142,140,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,125,0,25,1,152,8,44,11,16,14,160,15,243,22,40,20,4,46,28,20,23,12,0,4,150,142,138,143,162,175,150,142,140,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,128,0,40,1,132,8,124,11,32,13,40,15,44,26,0,152,12,116,28,44,69,28,12,8,150,190,200,235,185,157,150,190,200,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,37,0,0,1,112,1,153,8,154,11,228,12,216,14,88,27,20,25,9,45,14,12,16,12,2,4,120,187,137,187,150,237,120,187,137,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,232,0,248,1,240,5,176,9,128,12,216,14,88,27,20,35,31,55,26,16,16,12,2,4,127,140,182,187,222,237,127,140,182,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,216,0,8,2,136,4,176,9,8,12,216,14,88,27,35,54,30,69,39,21,21,15,3,6,182,140,182,187,222,237,182,140,182,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,232,0,64,2,252,3,120,10,68,12,216,14,88,27,0,88,27,87,55,27,33,21,6,6,182,155,145,187,222,237,182,155,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,15,0,4,0,5,0,140,0,0,1,96,9,64,11,208,12,100,15,88,27,20,30,10,54,25,10,18,7,3,7,77,147,150,150,150,150,77,147,150,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,140,0,248,0,96,9,64,11,208,12,100,15,88,27,15,19,8,42,11,11,14,5,2,5,77,147,150,150,150,150,77,147,150,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,140,0,0,1,96,9,64,11,208,12,100,15,88,27,30,26,10,50,25,14,18,7,3,7,77,147,150,150,150,150,77,147,150,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,164,0,32,1,52,8,236,9,168,12,172,14,175,25,0,117,0,112,24,24,44,36,8,12,150,180,137,137,150,175,150,180,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,110,0,4,0,5,0,132,0,232,0,232,8,220,10,192,13,180,15,200,25,35,6,6,24,6,21,24,6,6,0,120,105,120,120,120,120,45,135,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,240,0,185,8,224,11,72,13,80,15,150,25,50,17,3,45,7,26,30,3,7,0,120,105,150,120,120,120,45,135,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,232,0,185,8,224,11,72,13,80,15,150,25,25,23,3,53,3,26,30,3,0,0,120,105,150,120,120,120,45,135,90,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,232,0,185,8,224,11,72,13,80,15,0,29,0,15,3,43,3,18,24,3,0,0,120,105,150,120,120,120,45,135,90,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,145,0,4,0,37,0,132,0,240,0,76,9,28,12,212,13,140,15,225,25,60,20,8,48,17,30,17,17,8,0,120,105,120,120,120,120,45,135,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,240,0,76,9,28,12,212,13,140,15,225,25,60,20,8,48,17,30,17,17,8,0,120,105,120,120,120,120,45,135,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,240,0,76,9,28,12,212,13,140,15,225,25,25,9,6,33,12,21,12,12,6,0,120,105,120,120,120,120,45,135,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,240,0,76,9,28,12,212,13,140,15,225,25,0,10,6,35,12,22,12,12,6,0,120,105,120,120,120,120,45,135,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,3,0,5,0,104,0,64,1,64,6,108,7,192,13,180,15,32,29,55,17,6,44,34,13,17,13,8,0,150,135,97,120,120,120,90,105,97,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,104,0,64,1,64,6,108,7,192,13,180,15,32,29,40,23,8,52,40,16,20,16,10,0,150,135,97,120,120,120,90,105,97,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,104,0,64,1,64,6,108,7,192,13,180,15,32,29,0,23,8,52,40,16,20,16,10,0,150,135,97,120,120,120,90,105,97,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,77,0,3,0,5,0,96,0,99,1,214,2,156,9,8,12,135,15,192,27,30,25,8,57,20,14,14,10,8,0,120,135,90,120,120,120,60,105,180,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,192,0,179,1,134,3,212,8,204,11,166,14,192,27,47,45,18,78,33,14,16,10,4,0,120,111,150,120,120,120,60,81,123,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,208,0,43,2,18,5,132,8,28,12,166,14,192,27,0,76,39,84,98,46,59,40,11,0,120,150,120,120,120,120,60,120,75,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,71,0,3,0,5,0,192,0,179,1,92,3,252,8,184,11,60,15,32,28,26,43,19,81,28,14,11,8,7,0,120,82,90,120,120,120,75,82,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,208,0,199,1,132,3,16,9,184,11,60,15,32,28,45,62,31,81,61,30,24,15,8,0,120,120,150,120,120,120,75,90,105,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,16,1,223,2,255,3,20,10,184,11,35,15,224,27,0,122,45,69,106,78,82,48,10,0,120,195,120,120,120,120,195,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,100,0,154,1,12,3,96,9,224,11,166,14,128,27,35,41,8,77,28,15,16,12,7,0,120,120,105,120,120,120,120,75,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,228,0,38,2,20,5,192,8,48,12,166,14,128,27,35,65,35,77,80,45,38,29,8,0,120,120,180,120,120,120,120,120,105,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,78,2,249,5,252,8,128,12,66,14,128,27,0,91,44,83,109,55,49,34,10,0,120,120,180,120,120,120,120,120,90,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,76,0,3,0,37,0,40,0,112,1,68,3,36,9,28,12,216,14,32,28,40,45,19,77,28,16,16,12,8,0,120,105,120,120,120,120,120,105,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,120,0,112,1,153,4,76,9,148,12,166,14,192,27,36,43,20,76,24,24,26,17,13,0,120,90,120,120,120,120,120,90,105,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,40,0,79,1,221,7,96,9,208,12,116,14,192,27,0,89,9,86,74,89,97,58,13,0,120,120,120,120,120,120,120,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,73,0,3,0,5,0,112,0,84,1,49,2,236,9,64,11,91,14,160,27,33,29,13,60,24,12,12,6,5,0,120,135,60,120,120,120,75,90,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,136,1,180,2,0,10,64,11,91,14,160,27,40,35,24,64,44,25,23,8,11,0,120,105,75,120,120,120,75,105,105,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,144,0,184,1,181,2,20,10,64,11,91,14,32,28,0,93,35,114,65,46,46,17,21,0,120,75,60,120,120,120,75,90,90,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,128,0,84,1,108,2,66,9,164,11,116,14,144,27,33,39,19,69,26,12,12,9,4,0,120,120,90,120,120,120,75,90,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,144,0,120,1,192,3,252,8,28,12,141,14,128,27,37,43,20,77,42,21,23,17,10,0,120,96,129,120,120,120,75,84,126,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,144,0,164,1,128,5,152,8,88,12,141,14,128,27,0,119,37,140,62,45,54,39,20,0,120,90,120,120,120,120,75,60,165,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,30,0,2,0,1,0,84,0,34,1,217,1,0,10,224,11,10,15,128,27,30,20,4,50,40,10,9,8,6,0,120,120,60,120,120,120,120,45,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,84,0,34,1,217,1,0,10,224,11,10,15,128,27,0,20,4,50,40,10,9,8,6,0,120,120,60,120,120,120,120,45,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,55,0,3,0,5,0,64,0,19,1,204,1,56,9,28,12,220,15,192,27,25,10,2,33,19,11,7,3,2,0,120,135,90,120,120,120,60,60,120,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,64,0,19,1,204,1,56,9,28,12,220,15,192,27,30,17,2,45,22,15,9,4,3,0,120,135,90,120,120,120,60,60,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,64,0,19,1,224,1,56,9,28,12,220,15,192,27,0,20,3,48,28,16,10,5,4,0,120,135,90,120,120,120,60,60,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,3,0,37,0,214,0,176,1,161,3,232,8,88,12,178,14,96,27,45,21,22,44,26,13,19,12,9,5,202,90,150,120,120,120,145,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,112,1,132,3,192,8,168,12,60,15,96,27,35,18,17,37,28,11,8,8,7,5,200,90,120,120,120,120,200,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,96,1,92,3,192,8,168,12,60,15,96,27,0,14,17,30,23,10,7,7,6,5,200,90,120,120,120,120,200,120,135,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,37,0,214,0,176,1,161,3,232,8,88,12,178,14,96,27,35,27,24,48,39,14,20,13,10,6,202,90,150,120,120,120,145,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,172,0,112,1,132,3,192,8,168,12,60,15,96,27,40,22,19,41,32,12,9,9,8,6,200,90,120,120,120,120,200,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,172,0,96,1,92,3,192,8,168,12,60,15,96,27,0,20,21,36,27,12,9,9,7,6,200,90,120,120,120,120,200,120,135,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,121,0,4,0,5,0,76,0,255,0,141,8,180,10,32,13,85,15,160,28,21,21,10,48,36,37,48,23,13,0,120,90,105,120,120,120,60,105,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,76,0,255,0,141,8,140,10,248,12,185,15,160,28,40,25,13,52,38,42,54,31,11,0,120,90,105,120,120,120,60,75,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,220,0,144,1,89,7,76,9,188,12,141,14,160,28,60,50,36,78,45,57,48,32,8,0,120,75,120,120,120,120,60,120,135,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,220,0,8,2,249,5,172,8,48,12,41,14,160,28,0,76,43,73,97,69,65,41,13,0,120,120,120,120,120,120,75,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,103,0,4,0,5,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,31,20,3,46,21,33,43,24,6,0,120,105,150,120,120,120,45,135,90,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,180,0,149,1,177,7,216,9,128,12,116,14,0,28,31,28,26,55,37,47,46,28,6,0,120,120,120,120,120,120,45,105,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,229,1,136,6,36,9,28,12,116,14,0,28,41,40,33,55,70,54,51,31,7,0,120,120,150,120,120,120,75,105,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,37,3,252,4,232,8,184,11,16,14,224,27,0,82,42,73,109,66,59,44,10,0,120,150,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,135,0,4,0,5,0,116,0,225,0,229,8,64,11,32,13,160,15,192,28,45,20,3,43,33,38,46,30,7,0,120,105,135,120,120,120,45,150,105,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,132,0,9,1,207,8,160,10,208,12,4,16,192,28,40,24,5,45,42,48,51,23,5,0,120,105,135,120,120,120,45,150,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,164,0,179,1,166,7,176,9,248,12,160,15,192,28,50,49,33,77,47,57,47,23,4,0,120,117,159,120,120,120,63,90,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,212,0,53,2,224,6,96,9,168,12,66,14,192,28,0,84,46,69,100,83,74,46,8,0,120,135,195,120,120,120,90,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,3,0,5,0,84,0,255,0,39,9,164,11,92,13,135,15,224,28,30,18,6,43,28,36,41,26,9,0,120,90,120,120,120,120,75,120,120,44,45,70,130,51,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,84,0,250,0,39,9,164,11,92,13,135,15,64,28,65,20,5,44,34,41,46,23,9,0,120,90,120,120,120,120,75,105,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,84,0,59,1,174,8,160,10,208,12,235,15,64,28,0,65,15,83,68,74,78,41,12,0,120,90,120,120,120,120,75,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,125,0,5,0,5,0,136,0,240,0,172,8,224,11,52,13,191,14,32,28,30,22,9,46,23,27,40,28,13,0,120,120,135,120,120,120,60,90,90,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,4,1,112,8,80,10,52,13,166,14,32,28,25,31,9,57,31,27,42,39,12,0,120,120,135,120,120,120,60,90,90,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,44,1,133,7,96,9,148,12,41,14,32,28,30,45,16,72,57,48,37,29,15,0,120,120,105,120,120,120,60,90,90,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,164,1,150,5,96,9,48,12,41,14,32,28,40,49,26,80,58,44,38,28,18,0,120,120,90,120,120,120,60,75,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,152,0,184,1,178,3,116,9,184,11,41,14,96,27,0,127,48,110,106,80,62,41,26,0,120,120,120,120,120,120,75,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,60,0,3,0,5,0,88,0,24,1,6,9,140,10,32,13,191,14,224,28,30,18,9,41,37,34,45,21,6,0,135,120,135,120,120,120,30,105,75,44,45,70,130,51,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,88,0,84,1,188,7,36,9,168,12,191,14,224,28,60,20,5,45,20,48,40,25,5,0,135,135,135,120,120,120,30,90,75,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,144,1,56,7,212,8,168,12,191,14,224,28,0,85,34,108,57,76,60,37,9,0,120,105,120,120,120,120,30,75,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,30,0,2,0,1,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,30,19,3,45,21,33,42,24,6,0,120,105,150,120,120,120,45,135,90,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,0,19,3,45,21,33,42,24,6,0,120,105,150,120,120,120,45,135,90,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,25,0,2,0,5,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,25,14,3,39,18,28,36,20,6,0,120,105,150,120,120,120,45,135,90,44,45,70,130,51,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,0,25,4,52,24,38,48,27,8,0,120,105,150,120,120,120,45,135,90,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,35,21,25,39,40,37,30,20,7,6,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,156,0,72,1,174,8,160,10,92,13,10,15,32,28,35,17,22,34,35,32,26,17,6,5,167,90,135,120,120,120,122,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,156,0,72,1,192,8,160,10,92,13,10,15,32,28,0,17,21,37,23,20,20,14,6,5,167,90,135,120,120,120,122,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,148,0,24,1,209,8,184,11,112,13,140,15,112,23,20,21,12,40,14,12,16,9,3,6,110,180,177,225,247,175,110,180,177,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,232,0,128,1,132,8,240,10,112,13,80,15,137,23,40,63,15,78,24,18,27,12,6,6,110,155,177,225,247,175,110,155,177,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,208,0,8,2,228,7,60,10,72,13,40,15,137,23,0,88,21,93,36,45,48,24,6,6,110,180,202,225,252,175,110,180,202,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,192,0,160,1,48,7,40,10,32,13,20,15,137,23,25,12,8,30,19,20,22,17,2,2,150,185,192,222,242,195,150,185,192,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,40,2,44,6,236,9,188,12,156,14,137,23,42,36,39,48,30,33,29,21,6,6,150,155,192,247,242,195,150,155,192,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,212,0,168,2,216,4,236,9,48,12,116,14,143,22,0,65,48,66,54,33,36,24,6,3,202,155,192,180,242,225,202,155,192,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,176,0,80,1,212,8,84,11,112,13,100,15,88,27,20,19,15,32,12,20,18,11,2,5,177,192,197,235,220,175,177,192,197,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,237,0,219,1,0,8,136,10,108,13,54,15,47,28,40,35,24,47,36,36,28,19,7,6,214,159,176,171,165,144,177,192,197,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,0,44,31,56,60,55,42,31,10,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,116,0,24,1,152,8,44,11,112,13,120,15,243,22,20,8,3,30,15,15,15,9,0,3,150,142,140,165,210,175,150,142,140,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,128,0,32,1,52,8,4,11,28,14,160,15,243,22,40,21,4,48,16,20,24,12,0,4,150,142,137,137,150,175,150,142,137,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,128,0,40,1,132,8,124,11,32,13,40,15,44,26,0,152,12,116,28,44,69,28,12,8,150,190,200,235,185,157,150,190,200,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,4,0,37,0,0,1,112,1,153,8,154,11,228,12,216,14,88,27,20,25,9,45,14,12,16,12,2,4,120,187,137,187,150,237,120,187,137,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,232,0,248,1,240,5,176,9,128,12,216,14,88,27,20,35,31,55,26,16,16,12,2,4,127,140,182,187,222,237,127,140,182,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,216,0,8,2,136,4,176,9,8,12,216,14,88,27,35,54,30,69,39,21,21,15,3,6,182,140,182,187,222,237,182,140,182,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,232,0,64,2,252,3,120,10,68,12,216,14,88,27,0,88,27,87,55,27,33,21,6,6,182,155,145,187,222,237,182,155,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,3,0,5,0,156,0,8,1,132,8,120,10,12,13,100,15,62,23,20,30,3,54,17,17,25,9,3,6,150,180,195,170,237,175,150,180,195,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,184,0,104,1,156,9,64,11,208,12,100,15,62,23,40,61,52,56,24,20,28,16,4,12,77,180,195,170,237,175,77,180,195,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,164,0,32,1,52,8,236,9,168,12,172,14,175,25,0,117,0,112,24,24,44,36,8,12,150,180,137,137,150,175,150,180,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,2,0,1,0,184,0,104,1,243,7,80,10,32,13,216,14,32,27,20,26,17,56,27,36,40,23,8,0,120,105,135,120,120,120,66,96,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,104,1,243,7,80,10,32,13,216,14,32,27,0,26,17,56,27,36,40,23,8,0,120,105,135,120,120,120,66,96,105,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,2,0,5,0,148,0,8,1,232,8,68,12,112,13,140,15,186,19,15,18,12,36,14,12,16,9,3,3,110,180,177,225,247,175,110,180,177,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,148,0,24,1,209,8,68,12,112,13,140,15,186,19,0,21,12,40,14,12,16,9,3,3,110,180,177,225,247,175,110,180,177,44,45,70,130,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,4,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,52,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,50,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,52,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,47,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,48,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,4,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,35,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,216,1,76,4,82,8,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,100,100,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,110,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,244,0,18,2,208,4,76,9,168,12,91,14,32,27,40,50,46,58,81,45,46,28,8,0,120,75,135,120,120,120,90,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,244,0,98,2,172,5,116,9,188,12,141,14,32,27,0,82,48,65,110,71,69,39,13,0,120,135,135,120,120,120,120,75,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,110,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,252,0,27,3,21,4,120,10,68,12,116,14,192,28,40,56,51,56,84,43,41,23,13,0,120,120,105,120,120,120,165,60,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,12,1,27,3,21,4,24,11,148,12,216,14,64,29,0,96,55,76,108,65,68,37,17,0,120,120,105,120,120,120,150,60,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,110,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,20,1,18,2,205,5,136,9,248,12,191,14,0,28,40,51,49,64,81,61,52,35,12,0,135,60,120,120,120,120,75,90,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,4,1,98,2,180,6,236,9,72,13,85,15,128,27,0,86,50,69,101,95,76,39,20,0,120,120,150,120,120,120,120,120,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,108,0,5,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,216,0,184,1,169,6,96,9,128,12,66,14,192,27,9,30,38,54,49,44,42,26,10,0,120,105,120,120,120,120,30,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,212,0,179,1,155,7,96,9,228,12,216,14,160,27,29,42,42,61,58,67,51,31,11,0,120,105,180,120,120,120,24,96,99,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,200,0,164,1,141,8,0,10,32,13,110,15,64,27,0,95,63,93,97,97,76,45,16,0,120,105,120,120,120,120,15,75,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,105,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,39,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,105,0,205,0,208,2,252,8,88,12,76,14,32,27,35,34,36,32,40,20,20,16,9,0,117,117,153,135,135,120,117,117,153,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,209,1,68,3,100,10,104,11,141,14,32,27,0,160,47,105,110,63,58,28,23,0,120,120,135,120,120,120,120,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,105,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,252,0,164,1,95,5,252,8,168,12,141,14,96,27,35,55,57,70,73,45,48,30,15,0,135,75,120,120,120,120,45,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,188,0,184,1,205,5,16,9,148,12,41,14,96,27,0,150,82,110,123,99,82,58,20,0,120,90,120,120,120,120,90,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,22,51,28,30,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,22,51,28,30,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,164,1,153,4,132,8,128,12,254,16,64,27,0,6,28,12,16,8,6,4,3,0,120,105,120,120,120,120,75,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,2,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,20,12,38,22,25,9,12,12,5,0,120,60,135,120,120,120,75,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,48,28,32,12,16,16,6,0,120,60,135,120,120,120,75,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,115,0,3,0,5,0,196,0,114,1,56,4,252,8,88,12,91,14,32,27,65,18,46,20,36,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,196,0,114,1,56,4,252,8,88,12,91,14,32,27,50,18,48,20,28,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,114,1,36,4,252,8,88,12,91,14,32,27,0,12,40,17,17,6,13,13,5,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,4,0,5,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,35,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,220,5,236,9,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,53,225,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,94,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,50,16,48,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,144,1,12,7,236,9,172,13,160,15,0,27,0,17,52,36,25,18,16,18,11,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,32,1,18,2,4,6,196,9,92,13,135,15,160,27,45,25,37,46,47,47,48,28,7,0,120,75,135,120,120,120,60,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,73,2,15,6,176,9,208,12,16,14,160,27,0,99,58,71,121,73,58,41,11,0,120,120,150,120,120,120,120,90,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,115,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,45,19,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,124,1,224,6,236,9,172,13,160,15,0,27,20,18,52,38,23,18,16,18,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,4,1,57,3,216,5,20,10,172,13,241,14,64,25,50,26,33,43,58,43,44,27,5,0,120,90,135,120,120,120,75,90,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,137,3,252,4,236,9,188,12,41,14,64,27,0,92,46,74,100,77,70,57,12,0,120,165,135,120,120,120,120,90,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,115,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,50,16,48,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,176,0,154,1,78,7,20,10,192,13,185,15,224,27,20,18,48,35,19,17,13,13,7,0,120,30,120,120,120,120,60,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,32,1,78,2,169,6,20,10,192,13,185,15,224,27,45,26,43,42,55,45,42,29,5,0,120,75,120,120,120,120,90,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,58,2,125,6,20,10,92,13,48,17,224,27,0,73,48,61,95,89,78,33,7,0,120,120,120,120,120,120,90,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,108,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,45,17,53,33,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,144,1,12,7,236,9,172,13,160,15,0,27,15,15,52,31,25,18,16,18,11,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,164,1,122,7,80,10,172,13,235,15,128,27,49,23,43,38,48,50,43,29,9,0,120,75,90,120,120,120,30,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,144,1,97,8,20,10,92,13,135,15,128,27,0,81,57,73,72,90,90,58,13,0,120,105,150,120,120,120,45,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,107,0,4,0,5,0,220,0,164,1,133,7,20,10,52,13,29,16,0,25,45,19,54,26,9,10,9,7,8,0,120,45,120,120,120,120,75,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,220,0,164,1,249,5,196,9,108,12,141,14,128,24,20,18,52,28,18,19,10,10,8,0,120,45,120,120,120,120,75,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,252,0,224,1,18,5,196,9,228,12,41,14,128,25,43,39,54,58,54,38,37,25,12,0,120,60,120,120,120,120,90,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,12,1,224,1,178,3,236,9,8,12,222,13,128,25,0,117,65,90,99,67,78,52,17,0,120,75,150,120,120,120,90,120,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,106,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,45,18,53,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,164,1,12,7,236,9,172,13,160,15,0,27,21,17,52,39,23,16,12,14,8,0,120,60,90,120,120,120,30,150,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,8,1,224,1,169,6,156,9,152,13,166,14,32,27,41,27,39,45,42,41,51,30,8,0,120,75,120,120,120,120,60,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,224,1,125,6,76,9,148,12,66,14,32,27,0,102,68,83,83,94,100,68,14,0,120,90,120,120,120,120,90,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,60,0,3,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,60,16,49,35,21,13,11,13,7,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,0,22,58,41,25,16,13,16,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,0,22,58,41,25,16,13,16,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,2,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,20,19,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,0,19,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,3,0,5,0,236,0,124,1,8,7,236,9,172,13,160,15,0,27,60,23,53,41,24,20,16,13,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,124,1,8,7,236,9,172,13,160,15,0,27,40,23,53,41,24,20,16,13,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,124,1,244,6,236,9,172,13,160,15,0,27,0,14,42,32,20,16,12,9,6,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,4,0,5,0,236,0,224,1,44,6,252,8,144,11,180,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,55,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,224,1,44,6,252,8,144,11,180,15,0,27,30,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,55,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,44,6,252,8,144,11,180,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,55,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,44,6,252,8,144,11,180,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,150,150,55,225,0,0,0,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,0,2,0,5,0,236,0,224,1,120,5,252,8,28,12,172,13,0,27,20,18,59,30,17,8,8,4,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,224,1,120,5,252,8,28,12,172,13,0,27,0,18,59,30,17,8,8,4,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,3,0,5,0,236,0,152,1,120,5,252,8,28,12,172,13,0,27,55,19,59,30,17,8,8,4,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,152,1,120,5,252,8,28,12,172,13,0,27,40,19,59,30,17,8,8,4,8,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,152,1,120,5,252,8,28,12,172,13,0,27,0,12,48,24,14,7,7,3,7,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,50,0,2,0,5,0,204,0,214,1,252,8,184,11,16,14,160,15,0,27,50,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,51,220,10,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,214,1,252,8,184,11,16,14,160,15,0,27,0,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,51,220,10,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,4,0,5,0,204,0,214,1,92,8,24,11,172,13,160,15,0,27,45,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,51,220,14,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,214,1,92,8,24,11,172,13,160,15,0,27,50,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,50,220,14,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,214,1,252,8,184,11,16,14,4,16,0,27,0,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,50,220,14,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,214,1,252,8,184,11,16,14,4,16,0,27,0,29,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,20,150,150,50,220,14,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,145,0,6,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,35,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,21,46,46,25,21,16,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,200,0,112,1,252,8,104,11,172,13,160,15,112,23,20,28,36,32,24,24,16,16,4,8,110,180,160,200,200,175,110,180,160,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,60,30,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,0,87,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,5,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,50,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,21,46,46,25,21,16,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,180,0,29,1,192,8,104,11,172,13,160,15,0,29,80,16,6,42,19,30,34,22,6,0,120,105,120,120,120,120,45,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,72,1,157,3,40,5,140,10,112,13,191,14,32,28,0,111,52,100,84,56,48,28,12,8,207,150,105,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,6,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,50,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,21,46,46,25,21,17,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,184,0,88,1,56,9,112,11,132,13,80,15,162,23,25,31,20,40,20,28,24,18,4,8,177,192,197,235,220,175,177,192,197,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,176,0,0,2,36,8,88,10,112,13,160,15,162,23,35,47,30,60,33,40,39,18,6,6,177,162,152,235,235,207,177,162,152,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,88,2,128,7,20,10,72,13,100,15,162,23,0,113,44,103,54,60,68,28,8,8,120,162,235,235,235,255,120,162,235,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,6,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,50,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,21,46,46,25,21,17,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,36,9,204,11,172,13,160,15,0,27,20,26,49,45,22,19,19,15,9,0,128,60,90,120,120,120,67,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,184,0,83,1,232,8,139,11,126,13,98,15,219,26,25,30,33,58,34,39,39,22,12,3,138,77,101,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,0,72,10,83,73,74,75,36,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,7,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,50,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,21,46,46,25,21,17,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,160,0,184,1,212,8,104,11,172,13,160,15,37,23,25,29,40,32,32,20,16,16,4,8,150,187,137,187,150,237,150,187,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,216,0,248,1,64,6,176,9,68,12,176,14,37,23,25,35,39,48,30,24,21,15,3,6,150,140,182,187,222,237,150,140,182,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,216,0,60,2,136,4,176,9,8,12,216,14,218,22,30,70,52,68,52,28,28,20,4,8,182,140,182,187,222,237,182,140,182,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,232,0,64,2,252,3,120,10,68,12,216,14,193,22,0,121,36,100,64,36,44,28,8,8,182,155,145,187,222,237,182,155,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,100,0,6,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,50,22,44,48,20,20,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,50,22,46,46,21,21,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,252,8,104,11,172,13,160,15,0,27,0,23,48,48,26,22,18,17,11,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,176,0,120,1,152,8,104,11,172,13,160,15,62,23,25,28,40,28,23,24,16,16,4,8,150,150,170,170,237,175,150,150,170,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,167,0,116,1,48,7,186,10,34,13,76,15,61,24,35,40,44,36,28,30,23,19,8,8,153,164,164,155,202,158,150,180,170,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,184,0,144,1,172,3,36,9,224,11,136,14,144,26,0,94,36,84,72,44,40,28,20,10,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,15,0,2,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,15,17,45,36,15,18,12,12,7,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,0,30,60,48,20,24,16,16,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,150,0,5,0,5,0,204,0,112,1,92,8,184,11,172,13,160,15,0,27,30,22,44,48,24,8,8,8,10,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,204,0,112,1,172,8,184,11,172,13,160,15,0,27,60,24,48,48,26,8,8,8,13,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,112,1,172,8,184,11,172,13,160,15,0,27,30,24,48,48,26,8,8,8,13,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,120,1,172,8,184,11,172,13,160,15,0,27,30,19,38,45,38,30,15,15,9,0,120,60,95,120,120,120,30,135,110,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,37,0,200,0,144,1,172,8,184,11,172,13,160,15,112,23,0,10,20,20,28,18,10,10,2,5,110,180,160,200,200,175,110,180,160,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,90,0,4,0,5,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,45,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,236,0,234,1,52,8,236,9,172,13,160,15,0,27,0,17,54,38,23,14,12,14,8,0,120,60,90,120,120,120,30,135,105,44,20,200,200,55,230,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,73,2,15,6,176,9,208,12,16,14,160,27,0,99,58,71,121,73,58,41,11,0,120,120,150,120,120,120,120,90,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,137,3,252,4,236,9,188,12,41,14,64,27,0,92,46,74,100,77,70,57,12,0,120,165,135,120,120,120,120,90,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,58,2,125,6,20,10,92,13,48,17,224,27,0,73,48,61,95,89,78,33,7,0,120,120,120,120,120,120,90,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,10,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,204,0,144,1,97,8,20,10,92,13,135,15,128,27,0,81,57,73,72,90,90,58,13,0,120,105,150,120,120,120,45,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,12,1,224,1,178,3,236,9,8,12,222,13,128,25,0,117,65,90,99,67,78,52,17,0,120,75,150,120,120,120,90,120,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,0,3,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,50,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,80,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,228,0,224,1,125,6,76,9,148,12,66,14,32,27,0,102,68,83,83,94,100,68,14,0,120,90,120,120,120,120,90,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,49,0,3,0,1,0,12,1,249,1,61,9,96,9,152,13,29,16,64,27,50,39,52,19,25,54,27,19,8,0,150,120,120,120,120,120,135,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,12,1,249,1,61,9,96,9,152,13,29,16,64,27,0,39,52,19,25,54,27,19,8,0,150,120,120,120,120,120,135,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,12,1,249,1,61,9,96,9,152,13,29,16,64,27,0,39,52,19,25,54,27,19,8,0,150,120,120,120,120,120,135,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,2,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,70,16,48,16,16,8,8,12,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,0,16,48,16,16,8,8,12,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,30,0,2,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,30,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,0,13,43,11,11,5,7,10,3,0,120,90,165,120,120,120,90,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,109,0,3,0,5,0,240,0,13,2,248,9,124,11,212,13,200,15,224,23,60,24,52,20,19,10,12,8,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,13,2,248,9,124,11,212,13,200,15,224,23,50,24,52,20,19,10,12,8,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,13,2,248,9,124,11,212,13,160,15,224,23,0,14,40,14,10,5,7,9,3,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,5,0,1,0,116,0,13,2,64,6,196,9,84,11,72,13,96,27,16,16,18,36,37,24,19,17,9,4,167,150,135,120,120,120,197,120,120,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,116,0,13,2,64,6,196,9,84,11,72,13,96,27,0,22,22,43,39,24,22,19,12,4,167,150,135,120,120,120,197,120,120,44,45,70,130,52,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,216,1,64,6,196,9,228,12,60,15,124,21,25,20,12,40,24,8,0,0,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,52,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,216,1,64,6,196,9,228,12,60,15,124,21,0,17,12,36,24,8,0,0,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,216,1,64,6,196,9,228,12,60,15,124,21,0,17,12,36,24,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,53,0,5,0,1,0,116,0,13,2,176,4,196,9,84,11,72,13,96,27,18,16,18,36,37,24,19,17,9,4,167,150,135,120,120,120,197,120,120,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,116,0,13,2,20,5,196,9,84,11,72,13,96,27,0,22,22,43,39,24,22,19,12,4,167,150,135,120,120,120,197,120,120,44,45,70,130,52,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,224,1,24,6,196,9,228,12,60,15,124,21,35,20,12,40,24,8,0,0,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,52,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,224,1,24,6,196,9,228,12,60,15,124,21,0,16,12,36,24,8,0,0,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,224,1,24,6,196,9,228,12,60,15,124,21,0,16,12,36,24,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,27,0,3,0,5,0,136,0,8,2,64,6,252,8,184,11,100,15,124,21,28,14,7,36,21,14,14,14,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,216,1,64,6,32,8,184,11,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,47,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,216,1,64,6,32,8,184,11,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,47,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,34,0,4,0,5,0,136,0,8,2,64,6,252,8,184,11,100,15,124,21,12,19,8,40,32,16,16,16,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,51,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,8,2,64,6,252,8,184,11,100,15,124,21,22,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,8,2,64,6,252,8,184,11,100,15,124,21,0,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,8,2,64,6,252,8,184,11,100,15,124,21,0,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,35,0,2,0,5,0,136,0,216,0,220,5,46,9,228,12,24,16,124,21,35,9,16,16,9,6,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,216,0,220,5,46,9,228,12,24,16,124,21,0,9,16,16,9,6,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,64,0,5,0,1,0,116,0,13,2,60,5,208,7,84,11,16,14,96,27,30,13,18,33,30,22,19,17,9,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,116,0,13,2,60,5,128,7,40,10,60,15,96,27,0,19,22,39,33,26,24,8,12,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,136,0,72,2,100,5,108,7,40,10,244,11,124,21,35,14,16,32,20,20,8,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,72,2,100,5,108,7,40,10,244,11,124,21,0,14,16,32,20,20,8,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,224,1,24,6,252,8,28,12,116,14,124,21,0,13,12,32,20,16,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,58,0,3,0,5,0,116,0,200,0,26,4,102,8,232,13,24,16,124,21,58,10,21,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,26,4,102,8,232,13,24,16,124,21,0,10,21,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,26,4,102,8,232,13,24,16,124,21,0,10,21,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,24,0,3,0,5,0,136,0,200,0,76,4,102,8,232,13,24,16,124,21,25,18,16,28,12,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,200,0,76,4,102,8,232,13,24,16,124,21,0,18,16,28,12,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,200,0,76,4,102,8,232,13,24,16,124,21,0,18,16,28,12,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,4,6,0,246,249,251,253,4,0,1,6,6,5,3,6,255,2,4,3,1,4,8,7,10,21,15,15,19,23,20,21,12,10,4,247,235,227,227,216,215,217,220,221,228,237,242,243,248,5,17,22,32,35,30,36,36,40,42,41,39,20,28,26,14,6,217,231,225,244,244,244,232,233,221,216,190,151,193,5,37,28,23,21,18,20,36,44,39,24,5,2,4,249,247,235,242,250,2,4,0,255,7,6,22,226,244,13,238,238,232,2,173,187,55,56,26,32,47,45,49,48,53,13,243,223,220,238,24,24,19,245,213,220,236,212,238,10,14,226,9,8,8,248,234,250,250,235,255,34,0,239,220,192,202,179,190,213,235,2,33,28,47,87,108,117,88,66,78,53,15,9,29,22,249,243,233,238,247,235,236,241,230,218,220,206,196,218,229,232,224,228,241,241,239,248,254,255,8,5,1,254,243,5,11,249,249,7,23,21,20,17,29,28,29,37,35,33,35,42,29,21,22,27,14,2,254,4,244,248,212,208,211,215,216,203,201,215,220,219,231,250,19,20,26,30,49,56,45,38,28,45,42,0,215,230,239,1,253,250,252,249,237,3,4,8,229,185,201,210,223,233,227,235,6,33,35,22,21,23,25,30,46,39,23,25,31,37,30,26,27,31,25,32,21,2,232,223,222,219,216,223,217,210,209,224,247,238,234,245,255,236,239,250,250,231,242,0,18,17,9,12,10,8,10,3,255,3,10,23,25,31,39,32,23,29,37,45,33,17,10,13,6,252,246,238,249,246,5,254,229,222,223,214,212,216,213,215,217,228,240,1,255,5,5,14,30,32,7,243,250,255,23,24,22,11,17,26,23,42,42,29,12,252,249,249,247,248,239,249,7,14,7,0,245,241,250,248,237,238,235,230,232,235,240,0,11,17,26,14,3,2,0,2,10,12,14,3,247,244,2,15,23,9,0,1,244,253,249,245,248,248,248,248,234,239,241,244,255,0,13,12,3,7,19,25,38,32,21,28,21,11,10,5,3,6,7,12,2,0,239,229,225,224,216,211,206,207,213,236,0,0,7,8,16,25,21,23,27,16,9,9,17,25,23,25,20,18,11,8,253,248,252,251,244,243,245,237,246,247,244,254,11,3,250,249,253,244,246,7,11,13,11,13,25,25,15,19,13,255,254,254,239,225,214,213,217,234,252,0,0,249,2,3,13,14,8,5,4,255,255,251,244,252,12,25,21,24,12,19,15,8,14,11,13,7,8,11,16,11,1,255,0,6,13,8,248,243,242,234,225,226,233,231,214,221,224,230,230,233,248,254,12,12,8,3,7,20,25,22,15,16,18,24,24,27,33,27,25,16,12,6,2,2,253,254,248,242,240,248,6,1,247,228,233,253,3,2,244,248,242,247,249,241,240,238,246,251,11,12,11,247,244,249,5,9,2,246,248,250,255,0,13,12,25,29,31,46,37,6,250,253,0,6,1,10,4,253,250,252,246,236,238,244,245,241,242,240,238,233,2,14,11,4,255,0,6,5,11,12,14,16,11,255,2,2,10,0,0,251,241,239,237,232,232,231,252,16,20,19,16,23,18,18,16,16,7,254,242,240,241,237,250,0,0,16,17,10,253,247,0,254,251,248,243,247,243,239,248,2,1,11,21,35,39,32,18,3,247,233,235,246,253,246,242,245,3,252,251,6,15,0,249,254,254,245,247,250,9,13,19,21,21,4,252,5,250,237,236,242,241,235,223,235,250,253,8,20,17,19,30,27,33,38,30,29,24,17,20,31,14,251,245,233,214,208,198,191,196,213,231,249,243,241,249,5,9,20,39,36,27,13,12,23,23,29,23,24,24,9,255,236,221,231,255,9,1,6,8,7,1,255,253,12,9,7,252,246,236,232,238,244,1,0,254,234,237,243,238,242,248,247,254,2,4,2,8,14,27,44,45,38,28,16,9,7,11,4,248,244,244,236,230,240,237,244,246,248,249,249,245,255,0,6,5,18,23,24,9,11,14,9,255,246,249,241,240,230,224,237,249,0,5,0,255,0,248,2,13,14,18,5,254,8,17,22,17,18,25,37,23,8,2,241,238,236,238,235,240,239,240,221,232,235,250,15,14,10,12,4,254,9,23,33,38,26,255,0,2,6,253,244,238,241,247,238,226,225,233,245,237,244,241,246,248,254,19,45,43,28,22,26,30,39,33,21,1,252,3,0,243,245,243,250,238,241,249,237,228,221,233,234,236,243,3,1,14,17,20,17,21,31,32,18,0,3,252,239,219,227,241,248,248,7,17,10,7,7,3,11,11,13,255,235,246,14,25,23,13,255,241,238,248,255,255,246,246,253,244,248,252,13,9,10,6,0,249,244,95,1,17,0,9,7,6,6,2,0,255,254,254,252,250,252,253,254,255,0,0,3,4,6,7,13,15,19,17,22,236,133,180,12,41,52,55,56,39,238,156,177,251,32,42,33,7,241,230,252,17,10,17,15,247,236,240,245,248,251,0,7,16,12,9,2,0,4,3,0,249,247,11,8,250,0,253,250,250,253,252,250,1,4,1,254,255,7,13,14,14,24,29,37,252,193,183,173,222,24,44,55,53,28,4,248,249,251,254,254,236,232,240,250,255,8,17,15,18,11,251,252,253,1,254,247,247,250,254,3,3,5,11,12,6,255,253,0,254,246,253,250,253,249,1,6,10,28,19,3,245,203,219,20,20,1,241,3,22,30,32,36,253,225,225,222,230,238,248,4,11,22,28,29,20,7,243,236,4,4,5,252,224,225,255,10,11,8,17,18,14,8,2,219,204,227,254,16,39,57,31,5,244,247,255,248,233,226,227,242,253,0,7,16,27,36,33,26,22,248,211,211,216,236,1,9,9,17,20,27,18,3,248,248,252,252,247,242,244,238,247,4,19,29,31,20,3,248,247,244,242,235,237,251,7,15,12,8,2,5,4,0,0,255,253,248,248,250,3,7,12,8,11,7,4,252,246,238,242,241,244,0,251,9,21,17,26,27,15,11,250,231,239,232,229,238,249,3,13,16,11,13,18,18,17,253,241,245,238,245,246,244,2,12,14,17,14,4,0,250,241,249,0,252,0,245,248,0,8,14,13,8,12,14,4,0,255,243,241,239,239,252,5,4,2,7,3,7,5,0,1,5,12,20,24,0,70,0,3,0,1,0,116,0,232,0,232,3,60,10,232,13,24,16,124,21,70,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,232,0,232,3,60,10,232,13,24,16,124,21,0,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,232,0,232,3,60,10,232,13,24,16,124,21,0,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,4,0,1,0,216,0,235,0,197,4,124,11,84,16,160,15,124,21,12,20,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,216,0,235,0,197,4,124,11,84,16,160,15,124,21,0,20,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,172,0,4,1,200,3,52,8,248,12,41,14,32,27,30,30,31,33,30,34,24,24,9,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,140,0,244,1,172,5,36,9,248,12,41,14,32,27,0,28,24,50,44,44,31,31,12,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,4,0,1,0,216,0,235,0,197,4,124,11,84,16,160,15,124,21,12,20,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,216,0,235,0,197,4,124,11,84,16,160,15,124,21,0,20,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,172,0,4,1,200,3,52,8,248,12,41,14,32,27,30,57,43,45,42,46,33,33,13,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,140,0,244,1,172,5,36,9,248,12,41,14,32,27,0,58,34,72,63,63,45,45,18,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,4,0,1,0,135,0,235,0,212,3,124,11,84,16,184,16,124,21,12,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,135,0,235,0,212,3,124,11,84,16,160,15,124,21,0,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,36,1,68,2,178,3,196,9,152,13,35,15,64,27,30,37,36,38,45,34,35,16,3,0,165,165,150,120,120,120,165,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,248,0,137,3,62,5,140,10,112,13,35,15,32,28,0,82,32,89,86,48,32,28,12,0,150,135,105,120,120,120,210,165,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,36,0,4,0,1,0,135,0,235,0,212,3,124,11,84,16,160,15,124,21,12,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,135,0,235,0,212,3,124,11,84,16,184,16,124,21,0,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,240,0,184,1,164,4,192,8,112,13,10,15,96,27,25,47,45,38,50,55,38,22,6,0,120,165,180,120,120,120,150,150,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,240,0,203,2,224,6,176,9,112,13,10,15,96,27,0,60,40,75,69,67,45,27,8,0,120,135,240,120,120,120,150,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,46,0,4,0,1,0,135,0,235,0,252,3,124,11,84,16,184,16,124,21,12,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,135,0,235,0,252,3,124,11,84,16,184,16,124,21,0,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,60,0,170,0,106,5,112,8,92,13,135,15,160,26,35,33,14,51,44,37,30,21,6,0,120,120,120,120,120,120,120,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,60,0,59,1,174,8,160,10,92,13,135,15,160,26,0,62,15,79,70,68,55,32,15,0,120,120,120,120,120,120,120,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,4,0,1,0,135,0,235,0,212,3,124,11,84,16,184,16,124,21,12,15,26,18,6,8,6,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,135,0,235,0,212,3,124,11,84,16,184,16,124,21,0,17,30,18,8,8,8,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,200,0,205,0,247,2,212,8,224,11,41,14,160,26,30,54,32,51,37,20,17,12,7,0,117,117,153,135,135,120,117,117,153,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,232,0,218,2,222,3,60,10,224,11,222,13,160,28,0,54,31,55,68,32,33,22,8,7,230,150,120,120,120,120,185,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,41,0,4,0,1,0,135,0,235,0,212,3,124,11,84,16,160,15,124,21,12,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,135,0,235,0,212,3,124,11,84,16,184,16,124,21,0,19,30,21,7,10,7,0,0,0,177,108,147,135,135,0,177,108,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,105,0,205,0,92,3,228,7,208,12,41,14,96,26,30,43,37,39,37,27,21,15,5,0,117,132,153,135,135,120,117,117,153,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,84,0,104,1,232,3,212,8,148,12,41,14,64,26,0,57,19,78,58,43,44,40,13,0,120,150,135,120,120,120,60,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,25,0,4,0,5,0,116,0,232,0,252,3,60,10,232,13,24,16,124,21,15,9,17,15,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,232,0,252,3,60,10,232,13,24,16,124,21,0,9,17,15,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,160,0,4,1,200,3,108,7,248,12,41,14,32,27,10,13,18,25,18,11,14,14,5,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,160,0,4,1,200,3,108,7,248,12,41,14,32,27,0,24,25,34,24,15,19,19,7,0,120,135,180,120,120,120,120,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,58,0,3,0,5,0,116,0,208,0,104,6,40,10,232,13,24,16,124,21,58,7,12,16,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,208,0,104,6,40,10,232,13,24,16,124,21,0,7,12,16,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,208,0,104,6,40,10,232,13,24,16,124,21,0,7,12,16,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,1,0,116,0,200,0,64,6,40,10,232,13,24,16,124,21,70,3,9,9,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,64,6,40,10,232,13,24,16,124,21,0,3,9,9,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,49,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,64,6,40,10,232,13,24,16,124,21,0,3,9,9,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,48,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,34,4,15,0,254,255,255,0,2,2,0,0,1,4,3,6,5,8,4,4,5,2,1,251,255,251,250,249,249,246,247,248,252,0,1,3,8,9,12,14,16,14,18,16,16,15,239,131,222,37,254,20,239,9,11,8,8,12,0,252,1,3,2,250,5,255,6,253,254,5,253,6,3,10,253,0,253,254,4,244,243,249,255,249,250,2,248,1,8,13,8,18,16,12,22,5,6,12,3,3,233,149,189,10,14,23,254,18,33,41,2,5,2,249,7,253,255,255,254,255,241,246,245,249,0,9,15,32,32,22,177,166,39,11,35,1,0,24,10,247,240,1,231,24,251,2,9,2,21,241,247,255,12,250,232,9,8,244,22,249,252,37,242,235,229,36,248,201,64,231,246,30,0,48,0,239,20,0,242,242,247,7,215,251,34,4,217,254,31,252,14,8,224,255,24,1,3,21,10,19,2,19,35,225,139,245,38,243,249,234,10,47,227,248,27,243,21,38,46,250,224,24,255,221,4,21,219,231,241,3,25,238,242,0,3,14,8,3,1,33,10,1,18,245,240,27,230,252,15,236,245,1,7,245,0,4,229,248,3,5,23,229,4,34,13,6,38,11,230,247,0,8,252,227,205,41,38,202,245,26,236,12,247,247,15,24,251,228,36,73,217,224,32,1,234,11,251,0,226,241,254,24,7,202,29,31,254,10,11,210,253,55,232,8,23,238,249,246,29,2,228,242,255,30,233,247,35,255,28,241,242,248,249,2,254,250,20,37,230,242,245,6,27,239,9,2,18,240,238,247,16,29,240,249,9,241,250,11,12,232,21,31,224,251,14,20,232,234,8,18,13,228,246,248,30,249,3,16,37,252,215,233,244,31,18,218,34,24,228,4,251,15,7,223,2,11,237,21,0,231,3,11,24,231,226,62,20,202,17,10,252,245,1,26,0,239,0,28,232,251,0,245,0,235,214,31,16,17,36,254,2,11,220,249,1,31,15,217,2,252,13,25,243,244,22,225,238,224,7,33,247,4,19,254,17,14,239,244,1,35,239,237,29,0,0,5,241,242,11,0,7,229,6,255,215,26,17,217,25,51,248,11,240,253,10,15,17,232,222,7,7,253,8,251,241,8,10,240,33,12,204,8,9,13,239,211,27,33,254,18,6,246,238,245,29,15,244,231,253,39,30,241,245,0,212,238,22,1,241,221,1,49,38,250,246,10,20,12,0,237,1,5,230,232,18,55,221,199,27,48,253,230,206,2,31,0,5,251,13,31,2,21,3,227,19,224,245,3,5,36,222,214,60,20,210,12,242,226,18,22,242,222,38,42,0,17,14,238,239,237,7,21,217,224,33,241,247,39,250,245,10,26,7,229,14,14,215,12,33,242,243,241,0,45,12,212,237,8,250,244,5,13,8,0,28,22,252,253,239,241,14,19,253,221,233,20,21,9,10,247,222,246,11,6,255,238,248,36,23,248,12,18,10,2,249,5,235,228,247,248,5,1,255,6,253,2,251,10,2,251,8,250,11,21,1,4,13,4,253,244,250,246,238,246,245,253,14,11,9,9,8,12,250,244,3,255,249,250,241,16,27,240,1,17,15,255,224,250,1,0,3,245,254,24,26,7,245,251,3,227,233,1,11,8,250,246,3,23,27,0,255,20,253,232,252,252,251,7,7,249,253,20,254,236,10,254,243,250,244,4,17,11,8,19,21,249,239,255,254,246,248,243,2,11,2,4,0,7,16,5,252,244,242,244,248,2,24,15,252,247,5,13,2,248,251,253,248,247,6,15,11,3,254,255,12,247,230,250,9,15,7,254,249,0,14,13,254,252,248,239,244,253,5,2,3,15,16,0,0,2,252,3,11,0,243,254,255,246,1,15,4,245,248,0,255,253,249,247,11,14,6,6,0,6,10,5,1,0,243,239,245,0,15,14,255,254,3,2,250,250,254,247,247,0,255,7,13,4,4,15,6,253,254,255,255,251,252,8,255,253,7,3,2,2,248,251,252,246,244,249,9,18,7,3,3,10,11,254,246,253,3,1,0,4,5,246,254,12,7,249,241,239,245,252,8,8,4,7,13,9,6,4,251,242,254,9,2,1,253,253,4,10,3,249,251,0,247,249,251,252,4,2,11,13,5,2,252,250,0,1,0,0,1,1,8,4,0,3,253,255,254,250,253,243,245,2,1,6,11,9,4,3,3,255,0,0,0,255,254,0,5,3,254,253,255,255,249,248,252,5,6,1,0,1,8,11,3,255,254,254,0,0,251,1,3,4,0,252,1,2,0,0,250,0,0,249,252,5,8,5,3,3,7,5,0,0,252,252,255,252,251,1,9,3,0,1,2,251,249,254,255,255,3,2,253,3,10,6,3,0,255,255,0,2,255,1,0,252,0,0,2,2,0,0,24,0,3,0,5,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,25,18,15,28,12,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,18,15,28,16,12,8,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,18,15,28,16,12,8,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,21,2,14,0,0,2,6,7,11,10,10,10,7,244,199,214,83,238,9,4,240,254,255,1,3,18,253,10,1,13,20,15,252,172,182,7,30,69,32,10,239,247,243,5,15,242,4,240,250,247,3,17,4,251,248,254,11,249,10,2,12,2,0,10,250,8,235,252,252,244,2,1,246,246,6,13,21,30,24,29,30,176,194,200,246,49,27,30,28,14,236,182,29,22,228,34,239,21,35,236,10,35,230,170,190,233,43,34,48,41,253,86,225,13,233,192,214,236,236,228,39,255,33,65,21,249,14,20,32,235,150,155,7,0,119,78,204,33,219,213,249,240,225,60,47,4,244,99,232,169,227,232,246,13,244,20,38,213,41,63,10,61,190,174,28,187,29,233,31,6,12,255,18,19,33,230,184,74,211,249,48,15,206,212,82,7,222,9,213,250,247,15,76,253,18,9,168,77,222,206,54,198,23,242,2,35,248,1,13,47,220,30,241,177,103,197,202,36,252,232,73,249,23,26,183,235,70,24,165,11,234,109,169,237,62,27,184,72,235,241,223,224,49,52,237,176,115,244,18,188,243,246,35,215,20,70,229,255,177,48,22,37,22,181,227,68,244,185,63,191,53,35,4,233,202,37,28,235,33,13,230,219,243,255,17,28,58,184,233,247,37,29,2,229,236,25,38,226,248,238,202,90,244,41,197,242,226,104,250,206,37,199,55,17,181,31,42,201,15,247,21,8,218,44,247,214,11,21,53,203,26,6,197,20,247,18,55,225,168,110,198,232,45,236,20,21,236,57,237,172,91,189,3,41,190,15,52,235,6,6,253,0,221,70,14,173,24,34,204,45,203,60,250,199,12,246,101,183,239,16,46,15,12,190,33,206,220,31,42,38,180,242,38,33,233,0,244,53,0,240,7,198,250,223,17,95,252,207,255,27,13,238,0,9,236,239,255,27,1,245,8,14,41,222,212,242,61,218,223,70,249,3,11,12,245,223,241,8,38,14,198,230,67,8,238,6,15,1,225,245,1,9,254,9,12,25,249,238,228,45,251,211,4,19,249,226,40,63,229,215,54,3,200,241,1,248,15,48,197,35,35,2,236,255,27,162,228,67,246,250,39,46,32,241,213,193,254,242,25,242,249,69,10,244,47,27,196,224,12,237,188,28,54,231,17,58,10,234,237,212,24,248,248,14,249,43,1,227,7,32,248,222,16,230,197,229,50,0,0,0,221,2,23,0,255,2,250,255,251,0,253,255,253,252,1,2,2,1,253,8,5,6,7,14,13,12,17,13,16,5,164,135,240,0,35,45,3,43,36,3,19,0,247,11,247,252,12,228,242,255,240,250,251,3,3,244,8,13,1,248,3,3,2,25,11,0,16,22,6,22,212,179,243,250,37,8,255,19,4,12,254,239,7,240,219,252,239,251,42,29,42,28,15,28,249,214,226,225,240,240,240,15,9,245,23,14,4,246,238,11,21,16,5,249,251,23,6,9,5,248,241,251,246,255,227,234,255,5,20,13,0,253,252,247,42,12,247,248,6,30,30,0,3,18,191,220,208,229,20,255,12,19,5,53,25,245,19,215,7,47,251,12,213,238,248,247,4,229,37,250,228,246,12,20,37,3,230,33,231,223,243,40,76,233,219,36,242,246,242,41,16,230,220,215,0,21,251,224,251,54,217,217,22,40,26,42,59,27,220,15,72,244,207,167,168,209,3,239,12,33,63,6,218,45,55,222,243,44,11,241,23,29,247,250,16,193,238,25,218,204,251,37,16,218,24,18,213,50,43,230,3,22,230,243,4,43,25,243,18,232,222,32,6,226,228,242,229,212,57,35,249,10,37,251,244,1,18,39,232,230,218,219,34,255,23,32,43,8,228,237,15,228,235,41,192,231,251,253,36,14,27,46,229,249,239,6,47,216,246,25,244,3,4,12,11,231,242,236,229,0,250,2,45,32,3,237,242,33,30,21,241,172,232,26,15,18,0,216,3,31,10,10,10,244,249,245,5,11,247,232,9,7,4,22,5,229,241,4,11,246,17,254,222,15,54,10,1,241,210,37,26,210,249,235,249,1,40,31,219,239,11,3,41,11,254,247,205,233,54,249,4,18,201,33,16,3,6,211,20,13,220,43,19,204,7,13,5,38,199,5,6,226,23,9,16,1,245,247,246,28,25,206,2,52,238,246,248,252,22,252,236,3,5,3,0,229,19,28,244,239,236,31,7,226,17,46,245,242,0,13,25,225,243,249,7,6,223,241,4,10,12,33,10,252,210,0,56,17,1,254,245,205,241,30,32,230,246,255,245,24,251,238,4,39,37,252,224,0,236,247,10,25,14,245,228,250,7,19,238,220,29,17,10,6,237,18,6,241,17,7,243,236,236,20,23,4,249,245,28,247,216,0,0,242,23,8,15,13,243,0,7,16,4,254,6,241,237,248,254,253,13,6,3,248,4,8,238,255,7,13,2,236,253,3,2,30,7,251,9,246,6,9,229,255,241,253,26,247,239,9,6,16,248,2,24,235,236,251,251,8,9,10,40,245,246,247,239,4,12,16,239,1,27,255,253,26,231,237,241,243,245,250,245,15,0,12,21,14,44,19,250,24,221,206,4,224,0,36,18,12,240,245,25,237,236,223,253,11,0,250,1,44,54,18,248,245,237,242,241,253,7,246,254,0,10,23,7,247,15,2,237,237,238,231,245,3,21,37,15,7,13,18,4,247,234,242,253,245,250,12,9,3,254,22,13,245,229,233,250,3,251,1,6,4,19,22,14,15,16,243,236,253,3,247,236,238,251,11,19,6,247,247,249,5,16,5,2,242,251,21,4,10,19,4,239,249,4,0,248,245,240,234,6,11,5,14,12,0,1,3,9,5,3,245,248,6,2,0,0,0,58,0,3,0,5,0,116,0,240,0,8,7,4,11,224,11,210,15,96,27,58,11,22,13,9,4,4,4,0,0,200,212,150,250,250,250,200,212,150,44,30,40,135,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,240,0,8,7,4,11,224,11,210,15,96,27,0,11,22,13,9,4,4,4,0,0,200,212,150,250,250,250,200,212,150,44,30,40,135,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,240,0,8,7,4,11,224,11,210,15,96,27,0,11,22,13,9,4,4,4,0,0,200,212,150,250,250,250,200,212,150,44,30,40,135,50,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,125,0,3,0,5,0,116,0,4,1,8,7,4,11,224,11,210,15,96,27,125,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,4,1,8,7,4,11,224,11,210,15,96,27,0,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,4,1,8,7,4,11,224,11,210,15,96,27,0,3,12,7,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,52,10,25,0,0,251,249,253,3,7,7,4,255,1,6,9,9,12,246,222,236,253,8,13,3,250,246,255,11,19,16,5,249,242,250,5,6,12,1,240,240,254,5,14,7,253,250,254,249,7,15,253,252,253,253,8,9,0,253,252,247,9,8,4,6,249,246,255,0,1,2,4,2,0,1,253,253,252,0,10,5,2,4,253,244,2,3,3,11,252,250,253,252,3,3,10,3,251,252,253,253,11,13,251,248,254,249,3,16,2,251,255,249,246,11,18,6,2,238,250,1,1,18,13,236,233,0,10,14,15,254,240,245,0,16,0,7,4,248,247,4,11,6,244,244,4,4,18,251,250,4,245,4,8,5,12,236,245,9,11,9,247,250,233,255,24,11,6,237,243,254,18,27,9,243,238,251,242,16,30,1,255,207,230,46,244,12,30,235,239,9,9,1,7,255,235,10,5,16,21,242,6,232,227,21,29,233,210,13,16,10,31,241,244,4,232,16,51,21,247,226,232,243,6,12,16,250,215,253,5,26,15,14,1,235,4,12,21,255,242,244,222,240,35,34,242,248,248,237,255,29,40,249,240,246,239,11,22,17,8,243,214,226,10,27,21,13,251,239,242,3,11,9,255,0,5,3,245,255,6,249,2,5,2,11,239,244,8,5,1,4,255,8,2,237,7,6,245,1,10,6,250,3,1,238,251,4,9,17,20,0,234,239,249,1,16,14,6,254,237,250,252,13,22,255,243,247,252,6,9,253,0,252,252,20,18,253,248,243,244,251,8,20,11,249,244,246,242,15,24,4,253,239,246,8,12,4,0,2,0,253,251,0,6,1,245,254,15,1,254,0,7,0,237,4,14,254,253,0,1,5,254,251,11,1,255,254,5,7,248,254,3,247,253,18,5,1,3,239,227,6,38,0,0,0,238,254,7,22,2,1,238,246,1,5,7,14,8,242,250,243,8,1,255,10,2,0,251,249,253,7,15,8,242,254,8,254,247,3,10,7,240,244,5,9,11,8,1,220,253,12,15,14,234,16,0,222,15,27,238,247,10,22,245,234,21,14,232,2,10,254,253,1,254,246,2,9,250,19,12,231,0,255,247,24,254,252,21,243,238,8,14,239,2,1,8,21,227,7,20,218,250,38,232,255,45,255,218,241,23,247,34,48,191,209,14,39,3,8,7,245,1,233,236,247,49,35,242,18,211,192,29,45,18,246,255,247,0,250,240,19,18,249,8,252,221,43,14,237,231,228,51,32,222,7,1,230,251,244,29,51,240,0,220,216,36,19,10,20,222,247,11,249,5,19,238,2,8,233,12,14,4,1,252,235,239,28,12,246,19,241,230,15,29,9,0,240,227,248,4,12,40,30,236,199,234,16,19,39,1,243,240,252,3,246,27,4,223,245,21,34,0,234,237,248,14,16,24,252,248,6,233,244,253,10,35,0,239,244,0,254,241,12,34,252,238,15,255,248,1,0,7,254,2,6,4,249,240,246,10,10,5,15,246,238,6,0,1,4,4,9,12,232,238,10,17,17,249,243,0,241,252,21,5,18,251,241,255,245,6,20,231,8,47,252,206,248,24,242,8,38,243,244,11,239,236,254,13,36,4,254,18,238,191,240,64,47,233,238,252,2,244,5,0,252,14,13,254,3,249,237,11,19,255,233,13,16,4,248,221,242,46,17,218,30,28,223,236,253,241,40,19,240,12,15,209,202,34,39,47,250,188,17,7,208,34,51,241,239,16,217,3,41,232,228,2,28,31,16,223,229,13,204,221,124,71,215,204,226,221,4,51,34,4,6,0,175,251,50,4,24,231,232,23,244,234,48,20,222,252,9,251,25,1,218,248,25,227,0,77,47,193,184,252,7,7,54,59,218,195,235,12,27,25,20,232,246,242,233,27,49,245,230,226,14,29,18,252,247,231,209,15,39,17,56,243,173,245,1,28,50,20,243,221,210,238,38,38,37,240,195,0,25,249,252,54,14,158,248,47,21,25,247,207,216,48,47,0,14,234,192,214,47,78,25,253,214,176,234,65,53,37,246,212,182,237,50,50,13,0,244,232,238,7,20,21,12,214,227,44,39,230,226,250,1,247,24,63,243,200,223,15,37,20,246,235,3,22,0,223,10,29,254,247,237,5,9,2,8,2,235,250,9,11,0,254,13,254,230,2,19,2,246,2,27,6,233,240,249,6,30,255,239,21,246,233,248,32,34,231,234,251,0,10,17,3,244,254,2,250,15,17,224,231,17,31,249,247,23,239,245,0,16,33,248,227,216,0,13,42,50,245,205,208,2,40,30,252,248,253,3,238,0,22,37,249,220,222,2,30,255,24,222,239,39,2,44,25,185,197,3,253,27,56,72,254,188,200,223,16,42,19,245,248,30,52,243,192,200,219,70,81,17,249,239,182,217,21,73,29,255,10,196,225,3,29,8,229,48,17,208,43,35,175,222,0,246,69,75,7,186,209,10,3,240,40,254,245,57,226,201,42,0,225,39,32,202,18,42,225,206,246,54,0,32,20,239,195,191,35,48,20,36,250,244,11,231,194,203,51,103,36,235,235,233,183,247,36,14,37,35,217,5,0,173,26,47,250,45,0,225,15,235,207,236,9,58,72,12,236,184,199,239,56,54,40,222,204,43,222,251,61,216,204,34,50,13,232,14,228,202,255,53,38,14,235,241,249,212,10,17,33,3,236,9,29,242,188,238,31,26,39,33,217,253,25,187,223,36,10,233,49,57,254,213,198,248,253,16,60,49,223,185,250,43,250,250,21,254,253,232,26,29,233,225,7,7,1,27,4,249,241,237,13,229,228,68,25,230,23,34,251,213,221,231,235,23,73,44,232,9,243,195,190,18,78,38,5,243,253,185,3,16,237,50,26,4,29,235,209,212,225,22,67,28,254,32,247,192,207,252,11,57,76,235,187,232,9,17,4,16,26,232,244,21,0,223,219,21,34,30,36,241,216,232,215,7,68,8,253,253,222,237,30,45,237,225,30,255,230,255,12,4,22,243,234,24,6,2,2,229,243,43,239,251,39,242,209,32,248,222,52,6,239,14,11,221,238,39,30,215,14,75,164,198,47,2,27,40,255,233,230,224,229,43,48,245,30,10,221,219,214,49,24,250,58,2,183,12,16,209,36,255,211,44,34,251,252,216,1,28,2,14,244,226,254,255,253,24,45,25,239,222,196,6,51,14,215,15,33,191,242,76,35,237,228,243,247,233,10,51,251,215,230,38,83,2,237,232,152,224,81,34,18,32,240,218,241,15,16,18,238,238,212,247,71,34,246,244,12,215,215,0,58,255,241,10,7,24,11,251,252,219,197,22,46,36,12,210,245,38,231,208,24,60,4,203,216,6,47,27,5,31,213,192,37,29,2,13,244,190,249,36,50,20,223,226,3,5,232,10,45,227,248,14,28,24,249,182,199,36,70,29,36,247,152,190,34,83,32,239,0,255,198,210,57,24,241,23,17,0,7,18,182,190,15,35,85,42,234,233,221,172,7,53,27,11,37,18,193,204,18,3,226,52,35,238,17,20,208,218,247,14,62,24,253,238,220,238,220,27,65,6,255,5,237,217,236,17,25,4,9,31,11,222,201,239,28,14,34,55,241,190,247,0,213,27,69,250,252,11,244,241,255,222,217,33,55,34,16,222,225,224,245,30,38,5,0,11,236,221,251,12,253,7,31,250,1,9,246,252,239,225,10,57,6,242,4,226,239,29,6,34,26,209,226,219,22,37,2,20,9,234,232,235,32,9,218,8,34,16,6,246,229,255,254,5,3,12,37,233,197,1,44,1,248,16,252,234,6,37,234,233,16,0,249,8,8,250,8,1,243,15,7,1,9,225,255,3,222,255,46,16,0,26,247,213,231,16,27,2,231,250,13,17,1,13,245,4,0,207,5,43,250,4,28,235,214,254,31,8,241,250,31,7,224,16,22,223,218,40,25,229,20,17,233,253,247,232,18,29,253,250,248,255,24,11,5,221,200,1,57,24,20,14,227,225,225,8,14,248,11,15,40,4,242,252,241,208,217,14,107,55,174,1,20,200,212,40,34,254,32,25,214,215,25,0,231,25,11,251,16,14,244,228,243,246,14,34,4,254,239,249,14,4,31,0,211,2,14,1,255,222,253,43,13,251,231,249,21,8,252,4,1,1,236,242,28,238,250,29,17,0,6,17,239,191,242,14,21,44,252,238,1,243,7,6,247,255,10,2,13,18,235,227,15,9,0,4,13,237,227,23,6,229,3,23,14,26,8,227,227,236,13,25,10,9,17,224,215,255,13,31,253,8,34,240,236,242,241,6,14,2,21,20,244,222,224,12,24,2,24,35,209,227,3,3,13,8,30,14,241,224,252,3,246,0,0,2,24,7,250,5,6,243,245,254,4,1,4,250,1,3,9,32,11,226,217,3,19,250,254,4,26,9,217,0,26,1,241,250,248,253,20,13,12,3,246,230,4,32,7,239,236,244,250,15,20,11,11,253,229,243,2,5,252,16,13,251,247,251,22,39,237,208,234,246,50,36,3,240,251,230,247,18,6,10,250,220,247,18,38,19,243,251,247,224,249,38,8,254,15,0,245,12,10,233,228,225,234,56,78,7,247,198,192,9,56,21,5,40,237,176,240,49,42,232,231,31,33,248,241,248,201,218,29,31,61,43,245,214,210,207,235,43,65,12,15,19,237,217,239,252,242,23,34,3,239,247,255,11,6,221,245,40,26,250,23,230,198,249,34,24,17,11,230,229,0,16,16,23,239,208,253,20,24,16,17,248,206,241,3,15,43,4,245,223,6,37,232,235,248,4,7,34,23,9,227,225,240,250,13,32,27,7,225,222,255,18,20,13,244,245,244,253,9,15,253,249,251,6,26,24,224,209,5,10,21,32,21,3,208,211,17,15,240,1,33,4,231,5,22,250,236,8,11,254,39,243,220,238,252,20,3,40,22,219,237,245,229,10,48,13,0,34,231,191,235,20,5,20,50,17,231,235,252,227,6,24,235,2,27,7,241,247,21,4,227,249,38,20,227,223,251,10,24,13,243,3,9,243,253,16,9,252,240,242,251,255,11,29,21,249,234,244,251,0,6,8,6,0,0,8,2,249,253,234,218,17,49,33,17,238,222,233,252,14,8,7,1,238,246,23,14,12,7,224,232,15,25,8,244,240,247,252,21,38,16,231,225,251,254,249,11,15,14,3,233,4,24,255,243,0,246,238,253,20,37,248,235,12,18,242,249,1,238,247,254,14,33,28,236,230,0,251,245,251,27,22,236,240,15,12,249,3,3,246,3,3,1,255,248,245,255,17,8,6,11,250,239,249,238,242,28,28,5,12,15,247,231,221,250,20,0,9,16,15,255,231,243,28,6,226,0,0,0,25,6,241,12,3,249,4,0,252,4,254,231,243,18,35,2,254,251,238,254,9,248,252,12,2,1,13,13,6,249,216,250,19,1,1,0,5,0,245,18,35,249,220,224,255,27,16,249,254,22,9,248,233,6,21,248,232,253,16,16,5,243,238,4,21,251,234,23,17,230,253,22,251,250,4,2,9,242,233,3,24,15,6,243,249,17,3,239,238,243,253,6,21,30,18,253,242,233,244,255,247,5,27,0,0,9,0,248,245,1,5,0,2,5,4,5,253,240,252,10,10,0,0,0,255,243,241,3,16,17,20,9,241,237,239,232,1,23,14,21,22,9,229,219,235,249,12,23,25,20,1,248,231,227,0,21,3,250,10,27,254,238,254,253,247,5,21,14,245,227,245,9,12,9,9,5,0,251,254,251,235,242,13,18,22,18,1,234,237,252,248,0,7,8,14,7,255,0,2,243,244,254,4,7,3,2,4,7,2,0,251,245,254,0,253,1,9,12,3,254,254,252,249,1,9,255,246,251,8,13,40,0,3,0,5,0,120,0,8,1,8,7,4,11,224,11,210,15,96,27,40,12,20,17,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,120,0,8,1,8,7,4,11,224,11,210,15,96,27,0,10,19,16,7,3,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,120,0,8,1,8,7,4,11,224,11,210,15,96,27,0,10,19,16,7,3,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,40,135,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,6,4,35,0,3,255,254,0,251,245,255,15,20,0,235,247,0,6,7,6,251,243,21,6,240,255,2,4,0,9,251,244,4,255,0,1,15,7,245,245,254,9,2,3,1,243,10,10,253,254,0,248,244,8,19,6,250,243,0,8,2,5,254,2,2,249,251,4,6,251,254,4,10,6,230,247,19,1,3,14,9,240,239,0,10,13,1,248,249,253,6,254,6,3,243,9,12,5,247,251,2,2,251,1,10,5,248,250,0,251,14,5,9,255,239,243,6,25,245,245,13,6,246,252,25,13,226,216,35,50,231,204,23,40,240,223,7,38,7,230,231,14,13,244,23,13,239,245,253,3,8,3,5,1,236,251,8,6,10,2,250,248,252,255,25,10,247,230,241,36,38,234,206,12,28,243,253,15,253,23,3,211,249,19,9,0,0,12,239,245,26,23,234,219,254,30,22,14,240,226,252,0,0,30,20,249,233,232,251,29,25,0,249,236,254,26,11,215,234,32,19,252,10,0,236,242,1,14,7,3,10,249,241,251,18,27,238,216,254,29,34,12,207,232,22,248,15,44,244,201,255,41,248,7,15,232,238,13,47,3,197,212,13,52,36,246,219,1,43,241,198,248,45,49,244,219,245,17,27,230,200,6,100,29,185,224,19,0,219,39,59,217,207,46,37,193,232,54,3,230,15,16,253,7,231,222,253,42,44,5,239,216,208,17,60,11,5,0,232,218,244,40,30,4,6,214,232,14,13,14,253,8,11,233,251,11,253,250,251,19,0,227,36,50,183,202,50,34,21,243,245,228,251,2,21,7,1,248,7,6,236,246,28,30,220,232,15,19,3,232,252,13,44,255,213,233,2,7,19,26,23,1,196,173,46,95,22,248,204,174,23,89,20,212,238,246,17,243,11,55,249,201,211,14,48,75,6,176,192,11,45,4,44,26,200,230,250,224,19,68,26,225,246,223,224,17,45,55,241,164,11,80,9,208,226,234,26,42,3,1,231,13,5,193,224,110,87,184,207,226,231,68,68,245,178,231,21,9,16,43,2,196,243,34,10,240,22,19,192,217,48,107,226,173,31,252,223,30,10,12,22,245,202,231,55,83,249,151,199,59,79,4,201,8,44,227,189,20,22,27,69,193,170,42,58,198,252,116,248,131,233,89,34,177,239,100,42,169,174,24,67,28,5,202,237,17,15,44,222,228,29,237,250,6,7,30,4,210,245,26,20,252,251,2,237,21,255,239,24,6,221,238,3,15,47,44,228,177,235,41,35,234,239,51,25,211,218,240,2,32,80,7,188,205,219,62,62,0,246,233,255,228,217,34,108,250,165,12,34,214,220,27,52,15,232,243,0,17,4,208,208,53,82,236,248,28,214,173,244,46,109,12,179,250,245,217,20,48,3,14,252,248,251,217,230,29,49,8,244,55,227,174,225,8,51,53,28,249,205,216,246,9,25,40,11,233,15,223,233,20,1,239,37,4,251,46,204,182,28,54,0,253,14,23,253,190,210,70,32,229,37,232,194,49,31,234,5,245,228,6,30,33,231,225,24,3,249,240,20,49,198,213,50,28,242,2,233,253,1,9,35,228,246,6,245,10,67,232,183,31,11,222,0,32,26,3,232,236,30,251,237,17,227,235,39,78,253,199,188,7,43,20,6,2,27,234,192,19,13,247,24,47,18,195,190,46,38,212,0,67,230,230,8,255,28,2,207,206,45,87,24,201,195,26,247,233,45,37,16,236,179,241,52,33,26,250,183,230,45,41,23,239,206,235,45,0,252,22,3,227,0,8,236,0,34,41,255,214,196,243,49,55,5,253,247,219,224,4,30,19,253,46,248,206,5,231,236,45,33,11,249,241,3,3,189,215,64,64,36,238,233,239,178,215,123,79,198,239,9,225,208,250,49,70,4,223,250,217,228,35,12,24,13,247,252,253,0,226,226,20,27,253,28,42,16,190,157,239,42,91,38,252,15,204,181,212,41,84,12,204,19,41,0,221,205,236,21,31,23,45,31,206,192,222,253,22,66,37,234,13,209,220,9,2,24,0,7,36,12,236,215,217,231,35,73,27,214,0,14,227,242,238,31,3,251,45,6,197,239,40,250,220,17,46,30,231,207,9,3,224,28,43,27,0,191,218,237,10,92,50,187,237,51,215,187,254,68,64,3,220,232,237,209,21,23,55,50,209,229,19,203,187,32,101,37,237,226,239,213,230,49,16,43,42,203,214,242,223,38,54,25,237,212,255,3,252,254,40,35,233,190,234,65,25,238,251,1,251,16,15,210,206,28,45,45,32,212,175,213,54,63,235,248,33,18,233,208,0,16,224,16,52,0,252,0,0,91,4,39,0,249,19,23,0,1,249,239,2,9,4,7,250,255,2,245,252,14,6,8,0,240,244,5,5,5,6,8,248,247,2,11,241,250,18,7,6,249,239,249,23,12,242,1,254,249,4,23,248,221,28,21,240,250,2,254,245,10,12,3,5,254,228,249,32,3,251,254,244,13,13,234,5,12,248,246,0,18,18,243,229,244,35,27,231,232,3,20,10,237,3,14,242,244,7,24,1,248,247,240,18,8,248,11,8,246,240,8,247,8,28,247,246,1,251,251,5,15,254,251,0,0,2,242,10,30,232,232,17,20,3,234,246,15,8,1,248,251,15,5,236,2,17,254,229,13,24,252,254,246,250,255,15,8,245,255,5,5,245,0,11,255,249,5,10,244,243,17,17,248,245,13,253,234,3,24,11,250,242,249,12,9,238,254,16,18,246,232,6,14,243,11,14,251,242,252,0,2,30,254,235,242,4,19,3,9,246,244,4,255,5,3,7,248,3,6,240,248,18,19,247,231,0,17,13,255,240,1,3,252,248,38,247,215,13,36,9,225,237,8,12,12,9,250,239,248,12,8,252,255,6,12,0,233,240,22,20,254,245,241,27,8,232,246,16,3,245,11,15,254,243,1,250,2,0,12,253,248,7,21,254,228,247,6,13,16,255,8,228,224,40,28,236,246,0,242,28,29,203,226,53,43,231,213,3,5,14,29,254,209,252,55,237,236,32,243,246,19,226,251,61,0,193,254,65,248,215,0,18,253,14,30,203,230,60,13,203,9,24,242,13,7,218,2,47,0,229,240,249,28,43,235,200,17,37,241,252,18,251,236,255,9,8,9,254,247,248,8,14,247,248,2,18,249,232,13,47,248,201,245,32,29,254,238,244,15,25,219,233,51,14,219,250,16,14,249,243,3,253,11,12,241,4,1,243,1,17,1,254,2,250,241,2,23,16,241,225,0,35,24,232,230,249,7,24,24,247,229,2,255,241,24,16,238,255,27,245,244,2,237,252,29,21,250,0,239,224,19,31,3,242,237,1,21,12,248,245,0,0,246,3,19,11,243,249,0,244,25,22,232,216,12,58,7,206,234,36,12,245,2,4,245,250,0,6,28,0,216,252,47,240,241,249,0,36,12,232,252,242,247,8,27,21,243,253,215,253,46,16,230,229,29,1,237,23,26,241,222,234,18,27,4,17,24,198,203,50,21,243,25,244,232,34,1,219,248,40,0,249,3,236,12,17,230,14,4,254,17,226,251,6,3,21,252,253,15,10,203,221,54,39,244,232,8,21,245,216,251,64,248,214,17,38,2,219,226,15,43,239,244,32,244,237,9,248,8,16,3,245,216,29,50,228,235,0,253,14,33,222,220,26,47,6,218,232,219,52,83,206,193,33,44,214,223,31,33,0,236,243,254,24,10,221,245,48,7,236,246,247,2,14,25,249,218,246,34,20,247,3,239,224,8,36,19,239,242,11,245,248,13,4,254,250,8,11,7,249,227,254,26,7,251,4,251,235,15,22,253,254,243,237,3,26,23,254,242,236,233,23,51,250,216,245,4,17,14,5,252,233,2,26,243,206,6,52,50,15,184,192,233,56,102,253,206,196,7,62,223,218,83,52,204,155,232,84,63,249,238,236,237,3,239,248,36,27,2,12,17,203,150,2,124,79,232,189,205,239,19,74,47,195,223,12,233,9,52,0,227,246,9,23,12,234,180,0,89,69,6,149,184,20,52,64,0,233,224,240,3,17,7,253,15,4,245,5,238,227,12,51,5,236,15,253,190,246,44,69,20,172,216,29,57,0,202,239,33,40,240,228,15,19,217,254,22,13,3,243,225,255,70,17,181,218,68,42,214,219,249,32,57,237,216,9,6,220,11,39,9,243,231,244,17,49,31,185,177,36,64,248,3,44,242,192,238,18,0,23,47,241,231,241,239,20,26,6,248,251,232,237,26,28,12,3,245,228,231,18,21,0,14,251,247,11,255,249,248,2,4,4,2,251,4,0,7,9,250,253,247,235,249,27,42,2,229,244,6,0,226,254,51,17,221,247,6,6,14,252,228,7,14,251,0,250,0,28,23,233,220,252,12,7,254,18,16,253,234,249,7,0,1,253,0,245,8,41,16,219,215,7,18,5,6,236,4,50,15,212,216,242,42,254,12,27,17,226,186,23,35,22,239,243,3,12,5,219,11,9,21,5,244,240,247,246,11,61,235,220,56,222,170,47,75,7,242,209,199,25,108,29,189,170,227,92,64,225,1,240,210,11,255,35,23,220,249,243,49,53,205,180,226,39,85,39,224,202,232,250,17,57,16,234,179,0,48,41,10,221,248,236,248,29,254,4,248,1,19,29,10,211,217,234,13,56,32,247,225,248,50,9,204,184,235,64,83,67,233,155,188,255,56,85,20,195,183,222,58,104,43,196,172,218,0,53,50,5,248,244,254,0,240,246,246,13,21,10,6,240,249,8,16,9,231,232,241,10,34,24,13,244,230,245,2,2,249,252,13,16,12,3,250,253,249,235,253,9,251,0,65,0,3,0,37,0,116,0,240,0,140,10,128,12,116,14,104,16,96,27,65,9,20,12,16,8,4,4,0,0,200,212,187,250,250,175,200,212,187,44,30,40,135,49,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,33,0,116,0,240,0,140,10,128,12,116,14,104,16,96,27,0,9,20,12,16,8,4,4,0,0,200,212,187,250,250,175,200,212,187,44,30,40,135,49,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,240,0,140,10,128,12,116,14,104,16,96,27,0,9,20,12,16,8,4,4,0,0,200,212,187,250,250,175,200,212,187,44,30,40,135,49,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,70,27,45,20,4,4,3,3,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,54,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,0,22,41,19,4,4,3,3,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,54,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,0,18,36,17,3,3,2,2,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,50,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,40,0,3,0,5,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,40,16,34,16,3,3,2,2,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,51,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,0,22,41,19,4,4,3,3,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,52,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,196,0,240,0,208,7,184,11,172,13,210,15,96,27,0,22,41,19,4,4,3,3,0,0,210,60,120,120,120,120,105,90,120,44,30,40,135,52,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,70,0,3,0,5,0,116,0,232,0,140,10,128,12,116,14,124,16,124,21,70,11,22,13,17,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,232,0,140,10,128,12,116,14,124,16,124,21,0,9,20,12,16,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,232,0,140,10,128,12,116,14,124,16,124,21,0,7,18,10,14,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,40,0,3,0,5,0,196,0,204,1,140,10,184,11,228,12,210,15,96,27,40,8,30,13,13,3,2,2,0,0,210,60,120,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,132,0,244,1,140,10,184,11,228,12,210,15,96,27,0,7,28,12,16,8,1,1,1,0,210,75,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,132,0,244,1,140,10,184,11,228,12,210,15,96,27,0,8,32,12,12,3,1,1,1,0,210,75,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,58,0,3,0,5,0,100,0,200,0,188,2,208,7,72,13,60,15,124,21,58,11,21,12,6,8,4,4,0,0,200,212,187,200,255,175,200,212,187,44,30,75,140,48,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,100,0,200,0,188,2,208,7,72,13,60,15,124,21,0,11,21,12,6,8,4,4,0,0,200,212,187,200,255,175,200,212,187,44,30,75,140,48,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,100,0,200,0,188,2,208,7,72,13,60,15,124,21,0,11,21,12,6,8,4,4,0,0,200,212,187,200,255,175,200,212,187,44,30,75,140,48,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,65,0,3,0,5,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,65,6,15,15,6,3,3,3,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,0,2,10,10,4,2,2,2,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,0,2,10,10,4,2,2,2,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,50,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,185,3,25,0,255,254,255,0,0,2,3,4,4,4,3,3,3,1,2,1,1,0,0,255,253,251,252,253,254,253,254,255,0,1,4,4,6,4,5,3,3,5,4,2,0,1,0,255,255,253,252,250,251,249,251,252,255,0,2,3,5,3,5,8,12,13,13,15,16,15,17,232,132,160,0,57,76,58,15,3,245,227,210,210,248,31,57,52,23,255,233,217,213,237,5,23,26,26,19,1,240,221,225,240,2,18,31,27,12,250,250,245,243,248,254,4,10,8,14,8,0,239,241,250,0,2,8,10,5,3,0,254,251,247,247,0,6,10,11,5,1,254,247,255,1,0,2,0,0,4,0,254,248,250,253,254,7,13,9,6,1,251,249,248,249,253,3,9,14,11,4,251,247,248,245,250,1,7,10,13,5,1,249,244,249,253,0,9,14,14,6,0,238,246,248,246,250,4,16,16,7,7,4,252,249,243,242,250,1,8,12,8,4,0,246,0,254,4,16,20,3,222,7,7,253,0,234,233,1,2,18,13,1,0,254,253,0,6,20,22,11,5,0,243,226,224,232,253,14,20,20,13,2,246,249,252,0,8,7,15,13,254,254,244,236,245,251,9,15,10,14,2,245,250,246,250,2,3,6,5,0,254,250,252,254,4,16,15,8,252,254,251,248,251,252,2,5,0,2,249,253,0,255,0,1,9,19,8,3,245,243,247,251,5,6,15,9,250,253,3,241,244,249,11,1,251,25,8,239,4,4,4,14,251,1,19,237,0,0,244,247,251,251,8,6,238,250,1,8,17,8,253,2,22,12,16,0,250,12,26,12,183,156,200,26,51,34,30,6,12,2,0,252,243,255,14,30,20,251,218,219,246,251,16,21,20,253,0,4,242,223,232,7,26,28,5,8,7,248,236,243,14,21,13,6,248,247,236,246,0,15,11,11,10,255,232,192,224,12,33,32,32,28,7,8,255,2,221,206,253,22,30,2,0,244,234,243,0,10,251,253,9,33,23,252,243,246,0,2,5,12,5,246,242,252,254,0,1,0,254,255,2,4,7,253,249,2,9,10,4,255,255,251,254,3,7,2,250,250,2,2,247,251,3,3,1,4,2,4,0,0,3,2,0,0,1,0,250,254,0,7,2,252,1,3,1,252,252,0,1,5,7,8,1,254,248,251,255,1,4,3,2,3,2,0,252,252,252,1,3,4,0,4,0,2,252,254,0,2,1,0,2,0,2,253,250,7,2,254,3,253,251,2,4,0,13,2,253,251,247,255,8,1,251,0,4,4,7,254,0,0,254,249,254,0,3,14,9,252,253,253,246,251,252,255,11,16,8,0,244,252,0,3,4,4,4,255,251,252,1,0,0,252,254,3,5,6,4,255,248,248,7,2,255,255,12,11,4,254,245,248,252,0,0,7,4,0,0,253,2,0,253,255,0,3,2,2,6,7,254,253,255,248,250,7,9,2,1,0,4,5,252,244,246,255,1,9,13,0,255,255,0,254,250,0,7,6,2,0,1,1,254,246,245,2,15,11,255,249,249,5,3,255,254,253,0,8,2,5,1,251,255,0,1,5,1,252,252,0,3,0,2,8,0,253,0,255,2,253,255,0,0,0,1,2,10,0,251,255,4,7,3,248,246,250,2,11,9,253,245,255,8,6,1,253,253,3,254,2,0,254,252,2,7,8,2,249,253,0,0,0,3,6,0,254,255,1,1,0,254,250,254,5,10,9,0,246,252,2,5,5,254,255,0,251,255,4,255,0,3,2,4,254,252,0,0,0,3,2,5,0,251,0,253,0,0,0,3,3,6,4,0,253,252,250,0,7,3,1,0,254,0,255,253,253,255,3,3,5,5,0,254,253,251,3,9,7,0,253,252,251,251,253,254,2,8,9,4,2,254,252,254,255,2,5,5,0,255,250,253,2,2,1,1,0,3,1,0,253,251,254,1,5,5,0,249,254,3,5,4,3,1,254,254,255,0,0,0,0,6,2,254,253,254,253,0,2,5,7,0,255,254,253,0,0,3,7,4,251,249,254,3,6,3,2,0,254,0,255,252,252,255,1,5,8,6,2,0,253,251,253,254,3,6,5,4,0,251,253,255,252,0,1,2,5,2,1,0,254,1,0,2,0,254,0,0,0,255,5,5,2,0,253,0,0,254,254,0,0,0,30,0,3,0,5,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,30,11,20,20,8,4,4,4,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,0,8,17,17,6,3,3,3,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,0,8,17,17,6,3,3,3,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,129,2,18,0,1,251,255,247,254,1,6,2,3,251,1,251,4,242,105,120,72,1,211,222,253,2,233,242,251,41,24,5,226,212,207,247,251,2,11,17,6,240,230,221,237,247,241,0,0,2,0,253,236,226,232,233,238,248,248,245,235,224,232,224,246,235,41,56,112,108,63,37,185,240,255,45,33,53,62,52,38,242,215,213,227,228,31,41,40,24,0,228,211,207,233,248,244,9,245,6,222,237,235,235,231,223,254,15,20,5,243,215,254,249,241,242,6,30,7,35,14,27,250,23,243,0,252,20,23,29,21,8,245,250,248,10,11,4,5,5,249,11,10,242,239,239,240,253,15,253,253,9,250,0,250,253,235,238,0,255,10,13,1,240,239,243,252,3,10,255,11,14,4,237,231,245,3,21,9,254,246,6,12,253,240,254,14,15,3,10,17,255,255,248,242,20,41,21,253,251,243,35,45,13,248,245,249,248,9,19,17,13,248,228,209,227,245,4,234,221,0,10,37,27,251,222,228,224,5,22,25,35,10,251,244,255,252,3,248,13,22,21,16,0,242,234,240,0,2,14,11,249,255,251,249,252,249,255,233,240,249,240,4,14,5,0,249,225,236,253,10,8,246,255,5,5,230,234,252,18,24,23,35,35,31,6,5,21,13,9,3,12,14,13,2,233,221,247,255,247,242,226,7,53,44,33,246,233,1,10,21,241,243,25,29,22,29,244,208,221,216,245,251,19,243,231,2,3,0,254,225,227,6,26,233,204,213,255,243,219,253,236,235,198,247,240,65,59,40,5,223,18,18,41,30,32,42,52,55,39,1,245,255,254,30,42,36,37,251,237,232,252,0,1,241,231,224,235,229,217,250,224,203,214,189,223,233,253,50,31,28,226,5,10,14,2,255,245,37,66,43,33,2,254,3,11,5,1,19,11,5,5,234,4,252,3,242,253,247,224,246,249,237,223,231,240,0,253,248,254,239,1,253,15,12,1,10,14,28,5,0,11,9,13,21,11,13,20,11,16,29,11,0,242,249,9,246,253,244,252,254,252,2,238,249,248,255,254,247,248,226,242,235,237,250,254,240,238,244,251,0,5,4,249,252,6,255,6,6,11,15,25,8,8,30,22,33,17,19,12,25,35,24,9,13,251,248,4,253,3,13,0,239,241,251,252,245,221,223,232,247,4,239,240,241,246,5,13,249,246,237,239,233,1,255,235,250,4,0,0,0,252,3,16,20,15,9,19,8,252,4,17,18,1,248,7,11,14,6,0,245,233,253,16,12,253,236,237,3,12,246,241,0,4,247,2,8,18,13,2,2,7,28,30,24,8,250,4,2,10,3,25,20,2,7,8,250,0,254,0,0,9,250,4,248,236,237,0,243,226,220,246,246,254,244,244,248,235,234,240,248,247,234,231,246,253,0,249,250,0,10,251,253,253,11,13,19,16,4,5,9,8,15,25,18,0,0,0,75,0,3,0,21,0,168,0,220,0,36,4,32,8,72,13,168,17,106,24,40,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,30,45,60,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,220,0,36,4,32,8,72,13,168,17,106,24,35,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,30,45,60,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,220,0,36,4,32,8,72,13,168,17,106,24,0,2,12,7,1,1,2,1,4,2,97,125,137,137,150,175,97,125,137,44,30,45,60,51,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,252,8,6,0,250,250,254,7,12,10,10,6,3,0,255,245,254,4,0,254,255,255,0,0,241,253,7,4,4,18,2,0,0,246,0,12,15,15,251,231,228,233,248,7,16,10,4,17,20,26,17,251,243,232,235,248,252,243,245,237,250,27,27,38,37,21,250,241,237,234,235,242,236,246,5,14,25,21,0,5,7,10,12,5,242,233,243,243,246,250,255,14,13,18,24,8,0,245,241,240,2,251,5,10,251,254,1,2,5,255,4,5,0,15,251,240,246,255,5,5,250,10,8,252,251,248,13,3,9,1,254,253,245,0,7,251,248,6,3,9,254,250,5,250,0,7,11,5,1,252,248,247,252,252,254,12,7,5,10,247,10,0,246,0,254,249,249,2,1,4,4,10,4,1,3,6,255,249,250,248,0,2,0,251,9,1,5,1,251,0,2,5,4,255,9,251,0,4,250,255,253,253,252,8,5,2,253,248,248,8,10,6,3,255,3,7,9,248,247,250,245,254,4,2,11,2,255,0,0,255,4,0,246,255,6,9,252,4,253,5,14,14,1,246,246,242,245,0,252,251,253,253,251,1,10,21,29,42,45,37,27,215,152,140,139,204,41,92,107,103,78,38,11,223,187,179,172,191,226,2,42,55,54,40,29,14,19,12,237,218,212,210,224,253,10,19,27,22,22,19,6,255,244,234,244,8,9,8,248,240,239,241,6,21,15,8,0,8,253,7,3,244,244,247,248,12,17,4,252,248,243,4,15,12,1,248,249,3,4,255,253,251,255,7,2,0,10,255,230,7,13,1,16,0,250,244,248,11,10,242,242,11,250,18,17,242,8,253,5,255,1,253,243,241,253,8,4,18,10,255,0,7,4,246,0,243,243,251,14,1,255,11,3,0,253,7,17,7,247,0,237,251,247,3,7,4,250,2,13,7,0,0,247,2,5,6,3,240,238,3,16,3,5,252,245,13,9,246,2,250,252,254,253,7,6,9,7,253,255,19,3,244,237,243,2,3,243,7,4,254,30,10,3,2,1,249,248,247,7,0,239,249,244,7,10,4,13,250,13,16,253,253,2,249,4,248,250,2,0,251,254,251,1,6,0,5,254,2,10,252,0,12,7,1,1,4,249,3,2,244,244,242,254,0,244,252,8,15,22,9,9,19,13,1,0,0,244,228,227,230,225,8,20,20,24,19,11,9,9,1,2,0,246,254,246,238,235,240,237,0,5,24,38,31,25,11,246,235,237,235,238,248,249,0,3,10,12,21,14,13,8,4,254,246,240,239,239,242,255,3,1,19,7,9,7,3,16,11,3,252,246,245,244,242,237,15,0,239,20,24,0,14,247,0,8,252,254,17,241,247,14,247,254,252,255,3,253,7,0,3,6,251,0,0,7,4,5,230,255,15,248,17,253,249,1,251,10,8,1,242,4,254,6,5,252,246,7,255,243,14,0,254,11,255,2,17,0,251,6,245,234,251,14,253,250,13,4,250,7,251,12,19,242,241,10,0,254,1,247,0,250,252,13,34,0,241,243,235,33,238,239,28,252,243,41,12,229,4,252,0,244,2,9,241,14,4,253,12,3,245,243,254,11,0,243,1,14,2,0,9,13,253,238,0,5,15,11,228,232,11,248,254,0,15,10,243,0,20,21,20,254,239,241,233,249,2,255,2,4,249,20,9,255,14,241,247,12,255,252,15,3,249,5,14,3,246,240,248,252,250,249,247,255,0,1,19,21,19,24,22,33,21,245,210,184,183,200,248,30,40,44,42,35,29,31,11,249,229,221,234,235,234,230,227,239,10,27,41,48,37,7,6,250,243,234,240,238,240,0,0,254,3,255,10,7,6,9,15,253,245,0,250,6,7,7,5,253,247,236,237,5,7,12,5,9,251,8,16,252,249,237,254,7,4,252,13,255,248,253,253,23,7,241,255,250,13,0,234,16,0,5,0,244,250,6,23,0,0,0,254,14,235,235,245,9,21,2,3,1,245,8,251,34,241,251,4,239,2,0,3,10,254,243,252,23,6,241,247,18,4,251,1,2,17,224,239,9,11,16,0,249,8,13,3,231,251,255,252,6,7,254,6,19,241,0,242,248,34,17,245,239,1,245,6,0,0,254,11,235,247,20,19,15,243,249,0,250,7,2,8,6,251,235,255,248,254,26,253,249,15,247,8,21,224,0,11,253,34,8,229,246,239,246,8,3,23,0,252,28,229,251,18,237,3,25,246,251,251,5,0,242,5,9,12,5,0,3,244,234,6,7,255,0,240,253,30,255,0,10,8,3,251,246,1,4,251,0,254,250,255,12,246,253,4,253,6,246,255,7,11,18,6,7,17,252,249,13,242,207,209,222,236,48,74,47,12,246,229,246,23,13,246,239,221,242,5,14,14,250,235,249,14,37,39,8,233,232,232,233,16,25,249,245,13,7,10,24,4,235,245,246,236,7,14,3,249,240,5,17,4,9,13,245,250,23,249,238,39,244,224,7,248,252,246,255,252,6,15,23,10,32,254,220,240,5,239,18,7,228,15,249,6,27,246,239,11,4,21,249,245,0,243,249,2,10,7,239,27,250,254,20,245,16,248,248,22,248,223,246,6,251,249,11,25,7,14,11,241,2,12,233,255,3,251,245,244,17,0,252,6,0,9,12,251,250,5,13,232,5,15,233,22,6,219,12,33,241,255,242,243,18,251,2,20,249,9,244,242,34,3,247,1,250,240,6,4,248,254,254,24,6,254,4,241,23,251,233,243,0,17,251,1,25,8,246,1,8,231,0,15,223,10,15,16,1,228,6,247,7,34,246,244,12,250,251,0,14,10,243,247,10,245,9,255,239,3,250,11,28,251,3,6,235,0,4,254,4,250,13,10,254,244,238,5,14,252,3,15,236,243,251,8,23,31,248,243,5,250,241,21,248,237,5,248,255,12,6,252,254,0,7,2,1,7,255,251,8,17,13,5,234,252,247,229,251,252,237,252,25,21,33,29,7,235,251,247,8,7,239,235,237,251,1,4,252,10,12,3,23,34,245,245,237,254,254,243,16,10,238,248,243,26,16,245,6,254,251,2,18,251,238,1,251,2,253,18,2,1,254,0,252,12,23,232,246,255,4,5,229,246,5,9,12,12,14,2,0,5,250,238,9,0,248,2,222,14,25,238,15,255,250,18,251,248,34,251,227,21,235,232,42,253,232,35,254,226,23,0,253,14,244,237,9,10,251,25,251,235,9,242,16,34,231,231,17,17,243,245,10,241,251,22,241,30,7,235,0,30,248,222,41,237,207,57,248,213,65,235,241,40,15,223,251,247,1,23,233,245,6,12,8,255,8,19,231,13,8,204,16,29,233,7,10,232,6,33,253,223,1,18,15,249,252,248,10,9,249,228,26,243,16,20,244,246,226,29,8,229,14,12,252,255,2,7,255,255,12,231,11,17,0,247,0,234,17,253,242,30,245,253,2,248,249,16,13,1,7,251,2,12,245,254,244,240,0,11,11,248,7,251,255,6,246,8,14,244,15,24,241,246,0,252,9,247,255,11,233,244,23,253,252,3,246,10,14,249,0,253,5,25,30,26,9,236,196,200,203,246,40,60,26,250,2,1,26,33,7,234,225,233,239,16,32,244,226,219,240,25,40,46,17,234,255,255,248,2,1,233,230,3,20,18,17,248,232,239,2,21,18,1,238,8,254,251,13,14,232,0,11,232,18,253,254,14,236,0,9,22,230,9,29,246,250,6,245,247,8,241,238,23,18,242,254,20,11,242,7,5,12,232,238,8,8,4,12,236,213,32,5,15,35,218,6,46,229,224,11,230,30,231,21,233,246,56,9,224,20,241,9,36,226,211,30,244,8,253,225,30,24,248,22,244,1,0,8,246,232,9,4,245,24,242,229,44,3,253,245,252,34,231,240,26,220,14,73,193,223,64,249,249,255,233,1,5,11,14,238,253,16,233,7,24,6,0,242,236,20,2,251,17,236,231,18,44,231,245,19,238,241,34,243,2,18,239,2,236,18,10,240,15,16,230,0,29,243,236,246,16,5,245,238,18,48,230,249,0,4,20,24,210,239,29,211,16,5,255,20,250,239,40,231,21,23,222,2,1,253,4,6,227,244,30,3,15,240,242,6,12,247,20,249,236,251,25,252,19,19,220,11,252,242,22,9,227,255,15,237,249,14,5,238,12,36,240,5,44,253,241,249,216,239,0,8,6,10,3,248,8,1,9,25,7,240,239,8,1,253,16,253,230,252,244,0,13,11,20,241,7,25,241,3,4,241,234,7,4,243,20,11,228,6,32,239,253,19,0,241,255,3,10,230,5,19,229,15,29,225,230,40,21,227,247,43,235,224,41,16,226,14,239,250,2,253,254,16,254,9,246,253,25,245,13,249,3,245,238,37,244,238,12,3,227,25,9,244,17,239,13,253,0,9,254,241,26,240,230,5,39,253,249,245,17,0,239,253,7,7,18,212,15,21,229,22,10,236,1,2,252,18,232,30,15,209,9,36,225,241,10,9,254,253,21,0,238,17,0,244,229,10,43,248,241,24,236,249,5,237,30,10,0,247,237,242,28,4,243,6,24,0,240,249,246,1,25,252,246,40,233,230,46,224,242,35,240,204,63,23,199,11,40,227,7,23,223,249,51,236,225,26,252,1,221,29,34,211,17,6,225,34,235,15,43,210,251,37,200,5,16,243,24,255,241,20,17,235,6,20,254,225,7,230,4,25,236,18,244,248,28,0,17,3,236,254,0,29,8,209,0,6,224,33,10,242,15,245,238,25,1,249,10,1,15,19,6,250,235,247,254,240,253,232,6,26,248,9,26,0,247,3,3,27,7,246,241,239,1,249,9,240,241,248,252,16,37,7,23,251,242,8,248,255,10,223,253,242,6,23,5,243,17,11,217,8,44,227,243,22,243,14,15,219,14,255,241,2,25,253,9,225,252,20,15,248,247,40,232,227,35,248,232,20,244,242,13,22,3,230,10,24,0,12,7,237,223,255,17,16,230,249,10,238,18,8,4,23,23,220,249,25,245,229,13,6,239,14,22,237,4,253,246,255,4,5,3,16,248,242,23,249,238,32,236,16,18,228,10,254,251,224,252,46,28,182,1,45,242,2,16,17,248,228,11,9,226,20,0,4,2,251,3,253,9,4,231,245,20,249,240,29,250,1,32,246,246,8,255,11,250,250,3,213,34,239,236,50,0,3,0,5,0,168,0,220,0,232,3,32,8,72,13,160,15,106,24,30,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,45,60,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,220,0,76,4,32,8,72,13,160,15,106,24,20,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,45,60,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,168,0,220,0,76,4,32,8,72,13,160,15,106,24,0,2,12,7,1,1,2,1,4,2,97,125,137,137,150,175,97,125,137,44,45,45,60,55,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,5,0,168,0,160,1,232,3,216,9,72,13,168,17,81,24,40,6,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,35,6,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,160,1,232,3,216,9,72,13,168,17,56,24,0,1,12,7,1,1,2,1,4,2,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,55,0,3,0,5,0,216,0,168,1,192,3,209,9,56,14,210,16,244,26,30,20,29,29,22,7,4,2,2,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,216,0,168,1,16,4,209,9,56,14,210,16,244,26,25,16,26,26,19,6,4,2,2,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,216,0,168,1,16,4,209,9,56,14,210,16,244,26,0,16,26,26,19,6,4,2,2,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,3,0,5,0,168,0,220,0,76,4,32,8,72,13,160,15,106,24,40,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,45,60,51,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,220,0,76,4,32,8,72,13,160,15,106,24,40,10,25,14,2,2,5,2,8,5,97,125,137,137,150,175,97,125,137,44,45,45,60,52,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,168,0,220,0,76,4,32,8,72,13,160,15,106,24,0,2,12,7,1,1,2,1,4,2,97,125,137,137,150,175,97,125,137,44,45,45,60,52,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,98,0,4,0,5,0,168,0,160,1,232,3,216,9,72,13,168,17,81,24,35,6,25,16,3,3,6,3,6,6,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,40,10,31,19,3,3,7,3,7,11,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,23,10,31,19,3,3,7,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,0,10,31,19,3,3,7,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,5,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,40,7,22,16,11,8,8,2,5,5,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,35,7,22,16,11,8,8,2,5,5,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,0,1,11,8,5,4,4,1,2,2,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,98,0,4,0,5,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,35,8,22,19,12,9,9,3,6,6,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,40,12,27,23,15,11,11,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,23,12,27,23,15,11,11,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,168,0,72,1,232,3,96,9,72,13,168,17,106,24,0,12,27,23,15,11,11,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,75,0,3,0,5,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,45,10,13,26,2,2,5,5,5,5,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,30,10,13,26,2,2,5,5,5,5,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,0,3,7,15,1,1,3,3,3,3,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,3,9,11,0,232,231,247,240,226,237,245,245,248,248,253,0,7,2,12,20,17,5,255,29,22,0,1,3,13,6,7,7,9,2,251,247,244,11,5,240,244,242,0,3,245,249,3,3,240,247,19,15,239,240,7,15,15,5,234,233,5,19,5,254,0,253,250,0,21,14,8,1,253,0,4,11,8,252,251,9,14,6,248,235,253,22,19,245,229,236,235,249,26,22,212,200,240,14,18,14,1,253,0,7,32,42,2,233,1,2,18,22,14,0,1,10,17,7,252,1,252,253,251,249,239,234,225,238,244,0,240,235,247,234,234,5,9,0,16,17,24,24,41,25,34,24,5,12,27,17,16,13,255,224,226,238,229,248,254,226,211,220,218,230,252,251,242,6,18,9,14,21,18,26,41,38,33,31,8,255,5,9,2,1,251,238,241,243,234,243,245,230,241,0,253,237,242,252,247,4,7,8,16,2,246,9,28,13,0,11,10,13,20,3,252,14,250,243,27,9,236,252,0,245,235,1,0,245,229,234,252,0,254,1,21,15,248,255,0,7,8,0,10,10,6,250,1,16,21,17,17,0,242,240,255,252,236,247,252,243,254,252,247,244,7,11,3,2,6,247,236,7,13,18,15,0,3,6,8,7,21,24,250,235,240,4,5,250,239,239,5,14,15,19,2,244,255,249,204,153,199,249,38,51,13,240,31,57,27,60,78,16,233,15,13,238,219,211,219,22,36,2,244,234,209,202,248,249,247,225,212,225,10,10,249,29,83,74,50,72,60,17,223,193,208,0,0,242,2,252,233,246,24,39,42,10,226,224,235,200,178,206,238,254,21,39,30,21,11,7,40,66,35,237,230,246,255,245,1,22,33,13,8,17,14,225,208,235,2,247,237,219,228,239,243,13,40,25,251,228,1,12,10,241,253,21,33,18,20,22,1,253,13,18,7,247,235,225,247,9,231,231,250,13,0,233,10,11,17,252,10,32,2,215,209,0,13,5,18,9,5,3,11,23,5,5,247,244,12,0,0,246,0,5,254,255,255,246,248,10,0,232,246,244,11,22,255,1,5,21,13,242,236,9,18,250,8,0,246,253,249,6,252,250,13,8,254,3,4,250,241,6,12,0,250,252,13,4,254,0,5,9,252,244,247,2,0,1,244,238,1,15,253,250,9,30,20,252,12,13,237,226,250,19,7,246,249,19,19,0,244,2,17,251,234,251,249,239,227,235,4,25,4,254,18,29,4,247,13,19,5,18,9,0,251,238,238,3,20,5,234,232,246,4,251,241,250,3,254,255,22,24,244,232,4,24,18,6,254,0,4,4,6,13,6,249,248,8,8,248,236,230,243,5,254,254,7,250,234,255,24,18,3,4,0,252,14,25,252,3,10,244,245,20,13,231,237,0,0,7,253,237,253,254,255,17,18,24,0,3,237,201,225,31,41,232,236,34,39,240,219,29,53,9,223,248,249,248,28,255,248,13,8,238,233,6,243,237,1,246,1,8,2,13,17,250,0,6,10,253,249,1,13,6,251,8,22,7,233,247,0,12,253,217,254,28,5,253,0,1,234,247,11,8,6,2,255,244,4,15,4,252,245,255,4,244,7,2,255,9,14,1,1,2,240,9,11,244,245,7,28,246,246,17,11,4,7,17,254,231,239,228,240,255,255,241,254,254,248,1,17,22,23,29,12,244,250,253,243,251,11,20,4,7,7,247,251,17,20,15,16,11,231,197,211,226,227,252,12,1,250,10,246,238,36,52,16,16,42,27,242,225,243,8,20,253,252,9,9,243,219,244,20,27,250,237,253,10,225,190,238,68,48,229,231,28,16,199,211,45,72,253,218,251,20,1,233,249,48,61,246,211,32,62,237,207,9,34,4,227,212,248,10,212,204,23,50,5,228,227,0,33,12,232,5,51,242,222,16,41,14,243,255,48,43,236,237,30,253,211,214,6,9,254,241,2,248,229,15,10,233,255,1,6,235,9,15,16,6,13,19,3,14,2,5,7,254,244,246,32,20,212,236,0,246,229,2,12,243,254,248,231,11,32,24,249,5,9,10,10,250,250,247,239,18,39,9,241,239,19,25,248,252,253,235,232,10,252,231,1,8,230,226,24,254,228,24,18,19,1,17,22,249,31,25,8,9,245,243,241,12,249,241,244,8,3,237,1,254,223,217,29,38,236,0,2,241,241,15,16,249,18,253,1,21,20,227,202,6,23,23,9,14,22,23,10,6,43,27,229,229,251,255,232,221,216,222,247,248,249,241,236,222,240,17,20,8,25,33,59,71,39,30,37,254,235,1,229,199,233,255,3,5,248,208,213,7,39,38,8,220,194,221,248,2,28,34,0,251,21,33,31,18,255,1,17,13,251,239,240,233,244,255,17,16,253,237,227,246,8,4,254,7,11,252,7,26,18,16,254,242,6,1,242,237,217,231,6,22,2,4,0,214,241,32,34,15,0,243,10,23,0,2,14,24,12,255,17,16,240,207,4,6,222,4,255,213,206,9,39,247,240,19,4,241,4,34,5,237,253,35,25,238,9,46,2,254,1,253,6,8,219,250,23,251,225,246,7,251,235,6,255,228,242,17,8,241,11,21,26,230,228,50,38,232,0,32,35,238,242,251,255,252,251,246,244,24,0,233,247,10,12,247,238,230,229,16,252,19,40,7,16,14,241,236,3,5,11,0,238,24,249,241,19,27,26,255,246,245,232,221,239,2,254,24,33,244,223,243,15,11,0,242,246,16,228,224,29,37,7,246,12,47,29,3,9,30,14,247,9,31,249,205,226,228,220,221,234,235,222,233,242,246,12,17,15,38,61,31,17,44,46,44,50,9,209,209,2,0,245,240,194,168,220,36,47,19,236,203,234,31,35,10,241,231,227,11,46,39,11,249,250,19,59,49,247,217,237,2,4,253,245,244,239,240,254,7,255,241,236,0,3,249,248,235,0,30,24,12,18,26,28,34,19,241,245,249,214,206,246,1,239,250,1,247,254,22,30,35,20,4,241,216,244,11,22,16,4,10,252,246,0,255,6,13,244,224,4,7,208,228,48,12,13,12,251,5,254,251,2,255,244,237,26,12,235,13,6,18,246,19,13,245,2,232,2,249,34,250,232,13,239,248,220,23,15,245,5,18,21,214,7,24,240,241,24,24,236,251,20,3,10,0,239,242,22,236,236,46,19,231,233,9,242,210,18,29,10,2,9,241,22,10,242,253,1,4,222,239,33,24,251,12,41,233,222,15,17,243,236,10,7,19,6,216,0,37,0,215,245,253,224,238,249,16,32,14,3,245,12,0,253,26,14,255,20,24,4,253,14,13,17,15,0,245,228,227,229,242,229,218,214,222,232,250,8,246,2,29,39,53,44,27,63,75,51,46,12,217,205,220,202,206,235,205,182,5,45,5,8,18,236,0,44,16,230,226,229,240,11,22,17,27,36,13,33,55,23,237,230,248,13,0,227,216,231,249,0,252,6,16,251,230,251,250,245,238,235,254,24,26,4,5,22,21,52,48,27,5,253,251,221,214,225,230,207,223,24,34,4,248,4,17,16,17,253,249,252,254,239,239,3,8,26,22,3,31,48,237,232,19,3,208,222,6,237,6,252,246,19,247,15,5,251,252,237,25,0,222,20,11,12,17,36,244,239,225,8,40,24,8,237,235,215,16,7,224,18,26,253,6,0,0,249,239,219,30,47,248,202,9,10,227,5,43,36,13,228,16,10,209,224,53,48,222,232,27,227,192,244,50,51,7,231,254,222,220,25,47,39,233,223,26,10,254,3,227,245,46,18,251,13,228,232,252,16,39,251,220,246,11,2,222,248,254,8,244,19,22,245,218,231,35,36,23,2,1,249,4,8,14,20,4,13,25,17,12,2,253,221,221,253,244,196,189,223,244,227,232,1,5,8,17,52,74,48,17,51,74,83,48,254,222,208,204,184,227,243,198,199,4,7,253,32,7,209,6,62,21,229,220,227,232,30,25,9,43,51,248,1,80,43,228,222,9,10,7,230,217,240,9,241,242,23,21,235,206,244,255,234,215,243,5,4,1,5,17,8,6,48,56,23,37,20,17,16,13,7,9,245,176,186,223,240,234,252,15,241,248,19,4,242,15,11,3,18,254,255,252,252,9,31,72,22,0,16,254,215,219,33,39,10,178,199,244,249,12,0,16,27,30,209,180,2,70,216,229,19,67,23,245,30,5,255,21,0,242,235,235,240,42,46,185,218,33,21,5,12,15,223,211,228,17,45,24,244,239,242,247,6,5,251,20,31,1,9,0,234,242,7,22,22,235,193,216,52,22,251,255,14,7,19,245,10,2,247,225,6,30,255,232,254,15,17,13,4,13,222,222,16,255,242,9,2,254,12,6,255,244,247,238,8,9,227,255,246,241,15,26,32,250,34,43,14,253,22,7,224,3,16,13,244,216,7,253,226,244,5,213,196,215,238,250,234,254,255,8,35,50,59,69,29,10,70,77,64,8,197,201,226,201,204,223,208,201,228,6,37,52,12,207,241,57,44,230,228,219,215,6,20,23,53,42,244,6,69,52,241,231,255,253,244,252,248,239,246,0,243,253,31,6,219,235,9,247,214,222,255,249,236,0,15,11,9,25,52,29,252,9,26,3,8,29,30,30,9,10,250,239,193,183,231,249,0,233,220,205,236,61,6,255,56,44,247,218,30,254,253,0,10,63,59,13,234,10,8,225,3,255,220,223,219,0,5,239,3,9,48,42,228,232,235,197,234,11,243,41,17,217,233,57,103,4,23,39,17,229,215,12,239,5,230,237,5,234,231,0,0,220,30,26,255,1,243,249,13,36,245,244,17,21,243,15,4,228,232,0,244,18,24,230,245,7,2,34,23,24,19,223,232,249,18,12,226,252,25,7,229,240,26,32,245,239,237,238,244,247,247,7,255,253,0,8,9,0,28,18,239,252,8,40,252,207,252,37,1,8,27,12,15,28,14,247,3,5,232,232,6,249,216,214,226,208,209,253,240,207,230,12,23,30,57,55,75,72,55,65,91,73,253,184,225,203,137,172,222,212,222,0,241,0,72,50,229,4,68,0,199,212,225,255,246,233,2,75,76,0,23,82,32,243,237,0,10,241,214,220,253,8,0,246,23,31,239,228,0,0,223,215,229,246,10,241,0,29,244,254,35,33,238,253,54,14,221,244,40,19,2,14,15,33,30,1,33,31,248,218,176,170,202,252,0,80,0,3,0,5,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,45,10,9,30,3,3,6,6,6,6,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,35,11,9,31,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,120,0,14,1,20,5,236,9,58,14,136,19,224,21,0,11,9,31,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,95,0,3,0,5,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,50,11,14,23,12,9,7,3,7,7,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,45,11,14,23,12,9,7,3,7,7,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,0,0,2,3,2,1,1,0,1,1,135,142,160,160,150,175,135,142,160,44,35,30,90,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,173,10,22,0,20,8,0,249,234,255,245,10,13,6,240,248,2,11,20,245,254,7,6,20,243,251,35,28,247,241,228,15,7,200,227,32,17,245,205,246,49,49,2,209,19,39,9,227,2,30,6,230,246,8,8,243,221,2,32,25,237,220,251,21,224,11,22,3,4,223,0,28,12,30,249,234,18,0,22,246,215,19,42,253,225,228,251,8,215,239,24,27,21,247,232,65,23,216,252,253,41,244,225,9,244,252,249,254,21,19,253,251,245,239,14,246,11,7,220,8,63,5,221,2,9,8,223,221,16,43,247,208,34,70,249,204,241,30,17,242,245,254,4,9,218,240,68,245,232,9,235,15,12,241,8,16,22,235,211,41,47,224,228,24,240,251,33,213,231,38,23,254,216,13,60,252,215,4,249,245,51,223,184,38,36,21,248,214,27,7,236,18,33,242,230,22,23,9,17,203,229,13,234,6,232,11,27,245,236,16,34,241,16,251,2,57,9,201,233,18,61,255,168,26,20,179,0,23,236,17,10,252,40,17,242,252,235,45,27,202,235,18,20,26,233,223,33,0,0,254,223,255,243,231,5,31,38,247,210,21,63,18,252,211,254,18,246,245,7,9,203,7,26,1,6,243,206,255,57,53,225,232,41,236,214,45,65,216,217,1,250,255,19,234,246,250,29,23,237,219,2,33,18,10,13,218,236,57,43,208,211,25,0,4,249,227,1,35,219,242,18,2,14,235,36,46,254,249,234,0,2,244,252,238,9,20,246,0,12,16,228,196,22,63,249,220,241,36,37,244,221,18,35,232,0,28,237,239,239,234,11,46,20,199,237,51,21,225,250,13,251,16,245,220,11,67,238,181,63,26,222,228,5,36,15,231,235,57,249,251,224,230,34,7,22,230,221,27,28,239,245,252,0,58,254,188,245,47,34,245,243,3,37,213,240,253,226,59,10,205,4,33,233,253,35,9,221,209,73,69,195,198,29,36,18,216,203,31,27,249,210,44,66,207,205,16,32,45,211,190,48,56,221,201,249,84,8,198,236,38,37,255,211,247,51,30,215,225,10,5,26,255,221,232,7,11,46,230,230,11,22,15,255,246,246,10,27,245,238,16,234,251,18,246,25,228,226,21,14,47,219,204,44,10,249,20,216,2,36,255,43,201,238,36,243,5,31,222,227,27,237,226,40,51,239,202,15,19,226,28,44,223,233,255,39,16,203,252,38,232,24,12,202,23,30,224,253,14,18,253,201,8,53,230,236,24,2,18,19,214,209,41,31,243,252,17,43,225,193,47,30,227,227,232,56,16,228,237,217,27,81,220,207,50,32,243,205,0,43,38,207,229,47,1,234,9,232,7,25,245,240,206,19,54,3,235,225,42,54,225,247,217,7,46,235,232,23,12,22,219,221,87,8,207,194,12,27,244,8,12,17,248,15,249,4,34,217,205,10,82,17,166,219,51,63,7,208,208,58,22,241,219,209,70,6,215,26,3,24,1,209,1,54,234,215,37,1,248,13,6,14,8,199,6,55,245,232,210,18,22,242,1,24,2,248,18,248,243,4,31,242,226,12,12,236,0,32,231,14,48,236,251,226,214,32,37,231,235,3,16,31,249,8,9,235,4,1,237,251,17,244,236,25,7,237,37,30,214,241,0,38,241,209,46,24,248,198,9,78,238,208,253,7,49,255,147,240,102,20,248,236,249,74,235,205,36,252,234,32,213,251,21,234,24,245,248,9,28,37,181,246,27,0,27,248,239,19,26,224,253,34,236,231,253,9,20,243,235,26,246,252,29,241,30,7,179,242,76,14,253,234,230,30,16,210,253,47,19,218,227,10,42,253,194,53,39,199,8,39,252,229,204,40,39,187,14,32,1,245,255,6,52,4,187,254,2,32,11,223,253,16,3,25,233,212,34,26,227,235,2,18,251,240,31,40,235,253,9,24,250,204,36,14,193,250,18,248,2,1,2,18,37,3,231,246,5,235,11,28,235,3,13,3,4,251,207,23,30,250,251,238,12,246,33,11,210,26,2,200,14,29,7,253,235,32,11,1,26,212,245,34,15,249,235,236,21,247,191,255,68,70,221,133,54,96,227,226,245,251,45,15,226,233,253,60,254,245,18,220,219,20,6,236,29,254,217,11,38,234,241,50,39,208,243,13,248,5,1,1,29,251,219,238,20,32,253,214,16,30,227,252,0,242,23,7,235,21,15,238,249,14,15,243,8,18,241,1,19,229,223,29,37,220,213,12,8,21,15,214,238,61,43,203,242,42,16,227,238,6,8,18,223,202,49,65,185,225,53,11,3,225,11,27,245,0,207,33,82,205,184,23,61,248,221,252,253,30,246,215,33,55,248,186,248,50,38,233,218,28,19,226,246,14,21,240,221,37,11,226,8,238,39,30,204,251,26,21,10,213,227,44,36,219,191,24,75,0,221,215,9,55,21,209,233,29,21,11,211,221,42,29,244,234,244,25,35,229,232,5,11,43,226,223,44,243,231,28,3,0,245,255,248,249,12,45,251,184,20,40,246,245,254,0,9,0,239,22,32,251,216,249,22,11,0,223,14,21,232,237,16,33,12,237,223,26,20,234,229,29,252,240,48,4,234,242,9,9,12,249,225,242,40,13,230,251,8,7,25,232,220,18,39,239,237,12,11,246,14,24,211,32,28,177,243,71,239,245,253,240,25,1,254,18,0,255,254,231,2,43,252,206,224,51,54,218,221,18,53,3,213,237,33,5,213,24,29,208,242,42,10,13,230,242,16,241,14,11,241,18,40,204,217,38,26,237,225,24,17,212,9,28,19,12,209,250,33,6,245,232,12,34,218,243,18,22,5,213,9,44,250,222,6,239,28,43,189,239,57,37,228,179,34,72,227,237,231,25,16,207,247,27,12,16,9,249,12,254,238,9,240,235,32,13,222,242,4,52,246,222,24,13,30,202,237,13,22,26,237,205,13,55,5,217,202,82,58,151,236,54,12,252,233,236,42,26,230,246,243,22,12,229,7,1,0,250,9,0,246,9,18,254,10,251,209,6,30,28,230,212,56,22,215,0,5,243,5,19,252,230,5,28,11,226,240,29,31,239,250,217,6,83,220,202,20,8,37,10,187,252,27,1,32,235,209,17,54,240,210,16,57,33,186,213,58,33,5,206,214,60,9,204,238,5,49,5,211,11,39,5,235,231,34,30,195,249,71,241,248,39,223,226,22,2,240,232,24,1,197,17,56,248,235,2,28,52,242,213,245,13,29,231,7,24,218,0,26,255,233,17,242,221,6,33,247,234,25,1,0,4,21,33,204,17,22,224,39,251,174,2,87,15,185,216,26,50,249,238,239,20,17,209,4,49,14,232,245,25,16,217,27,7,184,38,42,205,253,58,228,203,8,34,34,245,235,242,3,36,8,204,246,55,244,231,0,246,41,28,223,228,23,25,2,231,238,20,39,228,196,45,21,208,4,30,241,8,253,248,22,11,15,4,207,17,47,214,245,255,0,41,1,217,249,246,234,68,8,199,24,28,246,229,20,26,222,14,38,213,242,53,0,181,24,29,248,15,204,31,10,200,48,27,219,18,255,237,14,19,247,10,2,244,13,249,247,255,234,23,21,232,252,8,14,249,234,23,18,253,236,233,31,17,241,13,239,236,33,0,254,1,0,251,7,255,244,0,255,41,221,194,34,60,27,212,183,46,104,214,172,249,76,28,145,3,89,248,235,227,248,71,33,205,213,6,24,252,253,23,252,249,13,243,10,0,214,254,33,6,0,244,241,25,19,5,10,0,235,220,38,9,220,6,252,246,26,253,10,28,228,244,0,9,32,231,209,25,0,15,35,235,246,7,8,240,0,23,215,2,79,215,200,50,250,239,16,246,27,4,202,18,6,231,56,248,222,30,7,9,2,253,250,238,0,21,19,204,251,37,240,218,23,47,240,196,21,85,244,170,21,55,246,235,245,23,15,4,248,234,236,49,241,189,45,23,233,0,1,9,19,5,25,237,207,18,1,7,30,224,211,31,61,243,211,5,37,18,221,220,55,250,180,22,51,30,214,223,21,28,14,251,217,248,57,5,204,215,52,49,239,221,239,58,29,192,220,31,23,243,12,253,238,240,44,10,222,21,3,1,4,30,208,210,58,8,222,10,29,235,241,18,10,0,246,254,1,10,239,6,23,3,246,4,6,237,25,17,215,209,39,18,242,6,223,249,63,19,228,230,24,44,233,192,13,30,13,237,230,54,31,200,0,9,232,42,254,196,23,1,246,36,231,241,47,5,242,26,253,229,255,12,255,237,7,57,218,175,42,61,4,233,222,246,9,14,13,224,11,41,255,227,14,29,239,242,241,19,18,250,248,223,18,23,2,252,241,13,239,232,7,17,16,245,246,17,11,20,252,235,12,15,228,233,44,2,228,228,248,63,32,206,216,26,17,19,252,219,14,10,242,9,20,241,13,18,220,250,22,5,251,250,2,251,243,252,16,11,255,4,2,11,254,245,248,238,30,10,204,25,33,230,3,243,0,43,248,220,39,9,239,254,213,39,30,204,24,4,241,12,239,16,21,223,241,14,38,253,207,21,39,246,229,253,27,252,245,9,246,17,15,233,241,10,254,16,0,226,29,6,225,14,2,252,242,8,25,248,13,24,223,228,54,251,245,31,178,239,83,230,239,14,250,8,246,11,35,219,250,38,218,246,30,10,240,247,17,0,254,25,240,233,20,247,1,252,217,43,21,250,5,223,5,39,242,227,22,12,238,242,244,24,30,245,1,5,255,7,222,233,51,10,221,231,2,51,53,209,175,35,68,15,203,225,15,251,36,5,205,255,83,231,201,42,251,14,25,206,223,42,38,255,217,224,34,18,246,255,251,251,9,12,230,7,6,8,24,220,8,32,236,241,2,13,25,220,243,35,245,230,255,24,30,237,218,10,35,11,231,247,1,4,47,240,189,18,58,24,219,231,17,8,237,5,1,230,1,9,13,12,229,16,4,248,16,251,3,24,4,209,236,51,43,233,217,0,254,15,253,4,0,221,255,25,22,5,240,238,246,34,15,232,9,42,253,218,220,36,75,245,173,237,49,249,2,4,204,10,33,3,255,252,252,22,8,238,4,8,21,253,223,9,23,253,4,239,241,15,240,240,254,24,22,233,237,34,7,248,250,4,254,28,19,218,5,248,250,24,251,240,241,21,25,237,227,16,253,248,37,10,234,220,13,41,17,237,224,255,20,29,228,232,9,18,25,242,233,1,27,248,223,22,26,233,247,31,220,235,65,249,227,37,242,202,43,22,234,232,4,65,253,195,11,19,8,14,225,248,51,239,213,4,254,28,4,232,7,16,12,247,242,3,13,11,245,229,255,7,2,21,29,247,221,17,43,218,202,25,21,240,251,17,247,247,3,13,0,42,251,220,43,15,205,226,23,19,18,235,203,29,48,249,217,238,65,6,198,16,12,1,0,214,18,45,17,240,222,20,44,231,208,1,35,27,211,220,26,38,6,209,3,8,23,16,229,13,243,249,21,251,235,21,34,237,224,252,33,26,236,228,249,10,246,20,4,1,10,222,241,41,24,235,252,228,23,55,235,198,247,45,40,243,191,22,56,233,221,236,18,33,15,224,235,15,10,16,243,1,10,250,7,240,239,32,17,237,249,5,5,18,233,233,27,13,234,228,1,41,0,235,15,241,13,37,248,229,2,1,4,10,29,226,189,27,43,236,250,24,12,254,226,16,7,236,18,245,238,16,15,237,24,14,225,249,19,20,250,226,0,18,15,1,216,9,31,229,250,25,6,250,4,233,255,21,249,246,246,8,50,247,221,8,12,11,247,3,0,215,4,55,12,189,233,49,37,243,197,5,54,9,233,223,24,37,239,231,253,27,2,223,11,20,0,247,243,12,8,7,242,17,2,228,8,23,241,223,27,35,244,229,234,7,43,13,226,238,0,69,16,162,233,78,17,203,247,40,252,217,14,15,255,32,255,209,251,24,15,4,222,4,38,244,251,241,228,45,23,224,252,9,12,3,221,4,37,5,236,251,255,16,246,226,19,19,248,250,248,11,24,238,219,37,38,227,238,4,12,4,250,247,2,21,11,242,230,249,20,14,236,247,27,255,228,1,24,2,4,0,245,11,12,241,1,15,239,5,9,222,7,12,236,27,255,234,14,4,13,5,245,2,0,0,0,90,0,3,0,5,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,55,13,16,26,14,10,8,4,8,8,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,35,17,18,29,15,11,9,4,9,9,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,0,17,18,29,15,11,9,4,9,9,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,86,0,3,0,5,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,46,25,31,25,6,2,2,2,9,9,135,142,160,160,150,175,135,142,160,44,35,30,90,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,40,25,31,25,6,2,2,2,9,9,135,142,160,160,150,175,135,142,160,44,35,30,90,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,0,10,20,15,4,1,1,1,5,5,135,142,160,160,150,175,135,142,160,44,35,30,90,52,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,99,9,39,0,250,249,253,4,6,5,4,0,253,0,255,254,254,0,0,4,5,3,1,254,252,254,0,1,3,3,0,0,1,0,254,0,0,0,0,0,3,5,2,253,250,248,253,10,11,7,3,245,242,0,9,9,3,248,252,0,0,10,12,250,239,13,15,239,236,0,19,16,252,0,11,4,235,223,3,23,10,13,17,243,235,244,251,20,21,5,236,236,7,7,15,21,249,222,239,17,26,4,253,244,243,5,10,2,12,5,253,239,231,13,22,2,2,252,0,3,0,249,248,245,3,23,20,0,243,249,242,244,8,26,24,250,235,239,254,10,9,2,9,2,251,247,250,3,7,3,250,253,12,1,253,2,2,254,254,254,0,0,253,5,8,253,0,7,15,9,237,216,222,3,53,71,40,223,176,190,244,46,67,35,254,233,234,246,250,243,243,10,38,40,10,229,211,228,1,25,31,18,0,242,238,242,251,4,18,22,8,246,239,242,255,10,11,5,3,2,0,254,242,240,253,13,24,22,5,237,228,238,255,15,19,14,6,254,247,242,245,254,7,12,10,4,255,252,252,251,255,0,1,5,7,2,252,251,251,2,10,9,254,246,249,1,2,6,6,0,2,251,249,7,3,243,249,9,14,8,0,249,255,250,251,0,251,15,27,252,232,254,14,0,236,255,15,2,8,4,5,247,240,253,254,19,4,4,13,243,236,2,250,6,19,254,13,11,229,225,253,12,27,26,0,239,236,244,254,19,19,248,250,255,4,12,0,247,251,246,255,11,14,22,241,227,0,16,2,253,5,14,254,233,245,14,15,4,1,251,252,0,0,0,250,252,5,17,10,0,0,240,238,248,9,26,22,3,241,233,245,5,6,10,16,8,248,240,240,2,11,8,12,5,244,248,248,2,13,3,251,254,8,6,252,244,250,5,7,11,9,254,246,243,250,2,3,9,13,12,11,2,230,219,220,4,48,64,43,233,190,201,239,33,49,25,250,241,238,4,16,2,243,237,251,11,19,18,0,241,243,250,7,21,5,249,239,239,0,15,25,22,253,236,234,244,2,13,12,6,0,1,6,1,246,239,242,4,20,20,13,247,234,245,255,11,11,2,254,252,1,0,0,0,1,0,1,1,0,0,253,0,6,0,0,3,0,252,250,0,4,1,8,12,2,241,239,2,7,6,0,255,8,8,5,0,244,235,253,11,3,12,30,252,222,247,12,11,248,244,13,26,0,219,242,28,15,255,15,254,242,221,231,52,32,248,246,250,17,1,226,234,16,33,0,239,255,15,21,239,224,0,30,15,236,236,5,25,250,7,18,225,239,20,9,255,0,250,249,248,18,27,0,244,9,233,203,24,41,249,14,30,250,208,234,9,10,15,12,3,244,7,16,238,219,0,36,11,2,6,239,226,4,16,16,22,0,235,220,232,25,41,31,3,226,222,237,22,28,252,254,0,253,5,13,10,252,224,225,14,41,22,0,241,240,241,0,15,10,4,255,253,253,0,7,2,242,245,0,21,31,4,236,235,232,0,30,24,253,246,250,255,10,10,4,248,221,221,3,51,72,29,213,186,209,0,42,50,18,240,233,245,7,13,2,245,240,251,14,23,12,250,241,243,254,11,16,7,247,238,244,2,15,22,14,254,236,232,244,9,22,12,3,250,250,2,5,255,243,245,2,14,19,12,254,242,239,245,2,12,13,13,1,247,245,247,0,10,8,255,253,6,252,251,7,254,250,15,17,249,232,241,1,7,19,33,6,222,232,5,253,247,17,36,11,241,240,231,248,12,39,9,231,250,1,249,1,8,9,3,1,252,237,246,24,15,249,249,250,22,18,217,228,29,8,253,34,5,229,222,237,34,36,1,244,255,241,243,255,28,30,240,216,12,24,253,238,233,27,33,252,247,249,237,248,33,8,208,7,49,8,245,250,232,246,24,248,7,8,249,10,1,247,1,7,1,8,227,215,26,53,25,234,214,255,21,2,253,6,243,231,23,30,2,248,235,4,7,247,255,7,248,9,9,253,9,9,242,231,244,13,27,15,10,238,214,8,24,2,3,8,247,235,4,23,254,243,12,10,239,246,9,12,0,241,249,10,23,5,246,248,244,242,3,19,21,13,249,237,234,249,18,18,5,0,253,241,242,7,18,6,255,7,10,247,229,225,253,35,41,31,0,216,209,235,13,32,26,7,253,253,249,247,249,249,1,9,17,13,251,243,243,247,7,22,13,251,242,248,250,255,7,13,14,6,247,243,241,249,9,16,13,5,249,250,0,253,246,249,6,20,17,0,245,244,241,254,16,15,244,2,29,6,216,228,23,33,250,233,7,32,249,235,1,5,241,254,17,14,12,255,224,237,9,23,14,253,12,231,212,12,58,16,230,235,9,4,227,255,60,254,192,25,56,5,215,209,247,38,19,4,20,9,243,192,1,55,239,3,28,224,249,5,252,42,27,214,206,12,16,4,37,243,233,3,254,19,19,233,234,7,0,242,2,38,44,230,210,253,0,22,250,242,12,8,29,0,233,245,245,239,13,25,26,12,211,254,19,230,243,10,26,18,244,0,21,233,214,11,1,0,28,51,4,198,248,4,224,243,48,43,252,235,13,250,205,2,20,17,6,250,23,16,225,204,251,42,33,0,252,19,238,195,242,42,28,18,13,238,231,242,235,13,50,6,232,251,255,6,5,7,244,228,6,27,32,243,201,5,55,0,216,1,27,243,242,255,8,30,20,240,223,246,255,3,21,17,7,244,244,0,7,251,248,5,253,2,6,5,8,9,248,240,1,0,244,254,15,15,15,7,242,230,242,0,15,19,9,253,245,251,7,8,249,242,1,14,4,3,1,245,253,0,1,8,5,254,0,255,244,251,3,17,21,254,231,238,15,10,254,4,0,0,4,0,0,250,247,253,10,16,7,250,252,245,241,9,25,8,248,245,245,2,2,6,25,5,248,230,215,21,50,4,255,8,218,243,1,0,29,0,3,20,2,242,233,222,240,34,64,21,226,246,9,212,207,3,61,57,20,224,186,252,28,10,1,9,245,245,23,16,248,230,249,18,6,235,7,31,5,251,220,238,28,23,248,254,13,236,245,38,12,216,237,18,2,15,24,246,237,1,254,247,2,29,250,231,16,40,234,206,9,21,36,248,224,22,249,220,12,45,4,227,235,254,58,17,189,253,36,231,235,28,45,254,207,225,39,53,236,230,223,249,45,18,253,5,237,249,10,5,239,242,18,37,242,222,29,5,225,4,34,0,232,14,12,224,226,252,48,79,248,177,235,7,5,15,13,23,236,215,29,50,241,213,239,23,14,237,16,38,244,219,245,5,21,21,3,244,235,243,12,255,0,36,3,246,252,253,248,238,243,13,34,16,2,249,241,232,252,12,9,12,3,4,242,239,13,23,9,237,232,247,15,25,10,248,250,2,0,238,239,9,38,23,244,238,243,240,0,17,21,10,247,249,1,249,255,1,250,0,16,11,7,1,234,231,0,27,25,255,243,246,251,249,2,21,24,0,237,238,248,9,11,0,5,11,252,246,12,3,239,236,3,22,21,248,244,10,5,231,239,21,25,252,249,6,249,228,0,41,17,238,238,7,13,236,246,5,13,33,254,231,222,255,41,33,251,226,231,3,8,19,18,236,250,29,245,239,11,1,240,243,3,13,46,23,223,234,233,239,0,31,43,0,215,9,32,239,231,219,244,47,88,7,179,207,250,44,32,251,6,13,227,196,4,62,50,233,193,255,40,1,242,9,242,255,8,25,18,220,218,21,41,220,255,38,249,13,223,212,38,26,255,3,252,246,0,9,242,232,3,32,39,14,252,204,166,245,125,18,231,42,7,201,209,251,0,8,42,75,252,192,228,235,249,39,47,1,240,253,243,205,244,62,54,246,237,252,241,218,248,43,8,2,6,12,2,244,250,241,246,250,9,8,28,17,241,0,254,239,235,244,21,27,0,2,15,255,218,224,36,43,0,240,226,245,0,12,30,16,10,249,235,223,233,8,38,50,253,215,243,21,248,236,11,32,10,246,231,228,6,26,22,20,1,236,242,233,225,3,38,52,26,235,223,227,234,12,27,13,2,5,3,253,248,254,253,241,247,15,29,15,252,243,238,239,3,20,14,9,255,245,246,1,5,245,251,13,19,10,243,249,9,242,226,2,34,32,0,235,230,249,31,3,245,14,237,242,28,16,245,238,250,30,5,244,255,248,247,0,7,18,10,3,9,231,223,1,34,4,227,12,34,248,250,12,240,238,238,7,31,9,10,249,230,250,19,9,18,251,203,3,33,241,240,48,45,209,233,3,19,245,202,251,59,30,12,26,227,188,237,11,24,43,242,251,21,240,235,250,18,15,254,255,238,227,27,35,0,227,253,34,253,247,3,248,223,228,38,35,31,17,229,201,0,16,231,252,21,33,27,0,248,227,219,0,3,7,25,62,252,194,15,217,194,67,80,15,247,222,187,214,8,87,67,8,234,199,218,252,250,7,36,61,42,223,195,201,242,17,47,59,27,216,213,244,247,11,249,8,52,41,218,187,255,30,243,2,36,33,238,208,252,20,3,237,1,32,18,0,235,233,251,10,243,9,40,8,255,235,227,244,9,25,20,251,249,2,250,252,252,243,15,21,10,3,247,237,229,246,17,34,38,15,236,222,222,228,251,27,62,52,5,227,203,200,239,36,55,24,253,246,2,247,240,245,249,252,5,35,29,0,235,232,241,250,14,30,20,244,231,247,1,7,17,15,250,237,3,9,247,237,0,19,21,9,254,254,235,224,253,31,25,253,2,10,246,233,246,21,11,238,245,11,29,4,251,244,237,253,22,255,238,10,27,253,245,253,0,252,0,15,5,234,2,18,244,251,12,9,5,253,248,240,252,13,1,253,6,27,41,206,177,26,54,239,235,56,16,215,232,6,11,11,251,224,27,37,7,193,255,59,240,201,22,13,243,64,254,211,247,20,253,231,2,22,254,7,32,9,247,188,205,79,62,195,0,59,222,203,37,30,230,218,45,48,214,215,7,15,1,33,234,253,69,242,146,214,42,103,34,220,229,17,216,181,13,109,38,203,232,39,253,197,1,247,250,74,64,224,198,247,3,228,197,91,124,195,194,8,248,237,1,12,36,29,229,224,7,8,241,4,9,15,30,246,211,239,14,9,13,16,14,246,239,247,253,6,245,255,34,14,231,242,11,32,253,213,228,11,37,34,253,230,238,249,19,0,13,14,224,251,11,248,1,13,14,19,2,233,223,227,4,36,37,25,2,235,214,230,11,20,2,0,11,17,6,2,0,232,212,240,20,43,38,7,241,232,230,240,3,17,22,15,0,254,246,242,250,2,5,7,19,2,236,250,8,251,249,8,22,10,236,237,254,6,14,21,0,232,245,10,0,254,12,8,252,253,1,0,3,254,238,248,18,22,0,86,0,3,0,5,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,46,21,29,23,6,2,2,2,8,8,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,40,24,31,24,6,2,2,2,8,8,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,160,0,220,0,48,7,190,10,199,14,148,18,0,25,0,24,31,24,6,2,2,2,8,8,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,86,0,3,0,5,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,46,7,13,26,4,4,5,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,40,7,13,26,4,4,4,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,0,3,8,16,2,2,2,2,4,4,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,86,0,3,0,5,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,46,6,12,24,5,5,5,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,40,7,13,25,5,5,5,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,112,0,112,1,248,8,233,10,169,13,14,18,174,21,0,7,13,25,5,5,5,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,139,8,23,0,246,250,253,247,254,0,13,9,16,0,13,6,244,3,251,250,246,246,243,250,1,0,20,24,26,12,1,245,243,243,241,241,251,247,4,5,12,17,14,13,10,1,2,250,253,245,229,231,248,251,14,18,8,13,22,12,19,15,248,228,233,246,237,227,0,0,243,19,47,54,27,249,240,246,16,235,212,208,237,16,7,250,10,53,52,30,252,250,244,255,213,203,226,253,0,30,41,18,2,6,34,17,230,240,239,246,0,240,240,253,8,7,4,12,30,31,15,251,229,230,232,245,1,13,0,2,15,6,7,250,6,17,0,2,247,237,252,247,250,253,3,14,12,16,10,17,1,233,239,240,243,243,5,13,19,16,15,4,254,6,243,242,246,238,0,5,16,14,252,254,254,255,8,5,14,8,251,254,247,238,248,243,252,6,7,20,27,15,1,2,232,254,248,240,253,252,0,3,10,13,6,5,2,0,1,0,3,245,250,0,248,252,0,252,12,5,255,16,5,8,0,0,0,246,244,249,246,250,255,4,23,14,12,9,9,4,241,239,233,245,243,253,10,18,12,14,18,10,2,247,0,0,236,236,243,237,242,4,24,21,31,31,22,16,1,242,216,200,199,220,246,31,50,53,69,51,26,230,198,209,224,238,218,232,255,14,21,25,62,60,49,54,252,215,154,167,189,193,224,36,96,91,84,87,83,246,170,166,170,170,138,232,53,96,98,72,72,50,4,224,195,182,192,180,198,247,31,102,103,52,18,0,240,244,215,196,217,250,13,7,251,5,23,32,34,247,253,10,255,4,246,230,238,252,244,4,0,234,9,39,35,18,251,245,7,253,243,228,252,0,254,251,247,254,2,18,31,20,20,1,254,244,238,216,243,5,246,239,255,27,40,36,20,6,249,250,232,215,220,248,251,5,34,24,31,22,6,250,242,241,249,246,229,236,255,10,28,14,13,5,12,7,5,243,240,239,241,249,254,251,11,16,17,16,15,0,253,252,245,239,240,253,0,253,9,7,14,12,13,3,251,0,240,241,3,252,6,250,252,0,13,0,4,13,11,1,6,248,247,242,250,254,245,3,0,18,1,11,15,6,11,247,242,252,241,252,238,255,1,7,18,22,9,1,0,6,0,248,237,241,248,0,254,13,7,254,15,13,13,250,244,251,247,4,16,18,0,236,235,238,249,241,246,20,55,73,66,228,171,190,226,232,13,53,40,16,6,4,3,234,215,208,12,28,31,37,26,249,250,10,224,205,214,232,6,44,32,24,23,29,12,250,0,223,227,246,230,233,248,15,23,9,11,21,10,12,17,32,255,1,250,220,206,199,224,236,246,16,76,112,54,31,24,27,235,139,131,158,218,251,40,74,85,89,84,59,5,190,179,172,165,179,237,36,73,89,67,50,21,232,221,202,198,236,251,17,20,21,5,14,14,4,248,239,255,3,2,248,247,243,7,19,0,18,7,15,5,246,223,229,221,248,16,33,40,34,19,7,236,220,233,239,228,251,7,26,24,35,6,249,237,251,4,1,0,0,239,244,6,255,12,2,6,5,0,10,3,240,238,6,9,0,4,255,251,12,255,3,252,248,248,1,9,3,4,14,4,250,250,251,0,244,0,255,17,4,251,9,0,254,254,8,248,1,252,0,0,3,254,1,8,10,255,0,2,243,243,244,6,10,7,7,16,9,7,254,251,239,232,240,241,2,16,45,25,21,252,0,251,217,220,233,254,4,19,19,31,40,13,23,223,210,214,243,240,228,30,57,51,13,234,1,16,237,235,232,240,12,245,226,251,41,48,24,3,9,2,0,240,207,214,238,230,226,75,76,45,40,25,15,188,143,168,215,12,59,94,90,55,6,224,185,189,216,222,246,12,46,82,52,24,242,229,217,231,245,239,212,12,40,22,11,253,8,43,0,246,255,243,232,235,233,246,5,3,19,33,28,20,3,2,243,250,245,197,209,7,24,23,27,17,27,1,4,5,242,235,238,228,235,242,3,36,51,25,20,251,250,233,231,239,237,238,2,19,25,15,23,13,12,5,242,224,227,240,239,242,23,42,42,0,254,4,246,1,241,228,242,248,11,18,23,9,248,244,251,3,13,4,255,0,250,3,254,254,242,247,5,6,8,15,255,1,5,7,1,249,233,236,10,21,8,0,251,253,250,3,3,6,3,5,4,10,251,248,247,251,250,3,0,247,8,21,5,2,6,248,255,7,251,252,254,246,248,243,254,20,23,6,10,10,0,245,246,235,250,251,252,9,3,11,17,13,6,5,246,239,243,249,2,2,7,15,21,227,205,249,47,44,13,16,23,252,198,176,239,21,249,2,22,59,49,22,10,255,234,202,182,211,245,35,47,29,13,20,46,22,242,215,225,241,249,240,218,255,29,43,30,5,238,6,23,18,6,242,203,204,253,27,10,227,0,47,63,46,6,219,192,211,240,249,25,45,36,11,253,226,248,251,239,242,7,18,29,22,253,246,255,214,244,19,23,17,242,233,239,0,14,26,3,1,22,12,243,220,248,11,254,244,242,1,3,19,12,2,14,22,7,243,239,6,250,248,210,214,251,21,57,49,19,12,7,249,246,226,218,231,230,0,8,10,25,36,34,30,24,0,235,213,196,195,253,20,23,30,25,31,39,15,2,228,206,225,233,243,5,15,23,25,25,17,8,244,242,242,238,240,253,254,9,3,8,17,15,19,1,243,250,249,241,249,246,250,2,0,19,19,17,14,10,4,247,230,224,236,247,7,16,18,12,11,12,13,246,247,2,250,245,250,244,1,0,4,7,252,7,7,10,9,6,5,1,251,247,252,243,231,247,0,9,22,14,19,9,245,255,12,9,237,234,250,2,4,254,247,238,253,12,25,0,254,35,45,31,224,228,238,214,190,209,4,59,39,58,51,43,7,237,212,200,212,227,245,230,10,39,60,80,50,6,199,184,180,246,21,30,52,56,252,196,243,246,253,208,250,79,39,254,238,6,11,4,230,234,230,246,43,22,9,233,210,235,19,20,56,40,16,248,228,232,231,231,242,242,241,4,21,29,33,36,43,0,243,239,251,220,192,219,0,255,6,26,42,44,57,25,0,250,230,208,205,203,224,3,15,25,39,52,32,33,23,4,236,206,205,216,221,220,24,24,34,52,48,42,16,254,231,210,179,214,250,248,20,36,27,55,42,23,0,221,191,218,231,252,8,21,33,8,22,23,17,255,231,227,229,250,0,1,248,18,16,21,21,6,253,248,239,247,248,240,240,252,12,29,25,16,4,0,239,239,237,248,254,4,9,21,15,6,251,241,246,248,0,2,1,7,15,4,5,255,252,240,247,8,8,0,242,254,0,1,18,17,15,13,247,241,245,243,226,233,4,14,35,33,35,18,232,234,229,230,223,251,2,19,21,65,75,233,214,220,186,204,7,54,28,31,39,44,18,214,206,203,215,185,29,81,80,55,23,232,168,183,0,42,42,20,7,254,220,204,223,23,31,37,42,42,15,201,221,220,229,217,243,58,79,51,251,0,247,200,192,213,253,25,57,66,44,30,26,2,173,139,139,201,31,85,98,113,98,65,206,136,169,188,203,195,245,61,100,88,50,30,254,222,211,220,242,222,221,255,17,12,0,12,49,37,13,8,0,233,225,222,235,250,4,17,21,15,251,238,251,20,26,16,14,4,247,222,226,232,245,252,3,16,45,53,15,250,245,223,235,229,236,249,21,26,34,20,1,238,237,239,247,4,15,11,4,11,4,245,240,236,244,4,30,30,5,250,251,251,247,251,242,250,255,12,23,16,5,248,243,254,255,0,0,254,1,252,246,7,12,7,0,5,5,0,0,2,251,238,244,0,251,9,13,13,17,10,0,252,247,236,248,254,242,255,18,13,7,15,7,6,243,235,254,1,1,255,242,4,23,12,6,233,227,13,23,27,0,223,238,17,8,248,16,17,248,224,216,251,39,53,29,1,220,227,237,8,41,0,238,251,242,218,252,33,45,48,251,240,254,248,229,234,253,240,254,4,12,15,21,22,26,5,250,242,0,238,229,218,238,8,244,254,41,63,62,32,254,246,223,196,170,199,221,7,58,113,86,39,2,1,223,181,180,208,221,1,33,64,58,46,36,38,229,171,206,214,233,255,28,30,34,40,42,28,223,207,217,215,212,242,46,54,68,55,18,225,206,205,213,219,225,21,53,54,68,43,17,219,202,195,209,239,11,16,28,30,27,42,9,239,233,233,241,0,248,234,249,250,24,25,25,24,27,253,252,227,218,228,236,240,0,34,41,46,43,11,236,234,213,206,233,244,10,24,33,36,28,10,0,247,228,236,230,241,11,9,11,2,3,7,9,6,13,0,249,1,248,241,247,250,252,7,6,12,10,17,1,239,247,254,4,255,253,247,9,23,9,3,250,235,237,248,247,248,12,26,46,26,251,237,240,248,236,218,249,21,25,28,2,240,230,5,15,30,2,2,24,251,217,213,252,5,9,4,22,17,220,242,15,33,27,49,43,204,174,202,248,29,236,244,12,32,39,44,26,24,10,232,210,201,223,217,231,6,6,48,90,77,49,254,208,171,181,204,1,17,32,57,51,18,245,1,240,221,225,241,243,241,54,66,28,251,255,218,217,227,233,248,25,24,26,43,39,21,245,207,211,203,227,246,31,72,42,27,253,239,231,239,245,242,251,230,8,42,40,26,248,222,235,250,251,15,2,1,253,253,0,13,7,248,253,7,11,18,13,239,222,217,245,7,25,16,19,9,16,29,252,227,235,224,239,247,10,12,25,27,13,254,0,252,248,249,237,242,11,9,17,3,252,254,0,0,0,242,255,8,9,7,7,251,4,6,255,250,247,244,248,0,245,13,9,14,19,14,0,0,253,243,236,8,5,0,255,254,6,253,2,3,252,251,10,7,250,251,0,8,252,253,252,5,0,10,8,252,249,0,95,0,3,0,5,0,112,0,14,1,96,9,24,11,116,14,132,18,174,21,50,6,16,16,7,7,7,5,8,8,92,165,137,137,150,175,92,165,137,44,40,35,90,45,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,112,0,14,1,156,9,64,11,116,14,132,18,174,21,45,6,16,16,7,7,7,5,8,8,92,165,137,137,150,175,92,165,137,44,40,35,90,45,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,112,0,14,1,156,9,64,11,116,14,132,18,174,21,0,2,10,10,4,4,4,3,5,5,92,165,137,137,150,175,92,165,137,44,45,70,130,41,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,255,10,12,0,26,20,0,44,51,8,205,214,4,227,231,197,61,250,248,60,17,8,205,177,211,6,198,41,41,248,35,44,252,19,250,141,190,234,239,22,8,36,50,8,4,223,209,231,202,153,24,15,39,81,25,176,31,31,159,202,200,19,193,33,94,217,12,59,205,231,13,208,210,203,59,83,222,75,17,220,82,226,220,30,252,236,22,29,71,35,20,69,232,253,32,2,227,237,10,20,17,71,18,233,21,25,192,234,251,229,222,23,39,35,233,225,245,15,179,225,0,215,216,30,4,15,205,242,246,244,0,218,18,4,228,215,255,22,45,248,23,51,10,220,205,6,33,222,50,223,240,75,6,253,55,8,243,208,48,231,10,41,58,12,248,8,208,4,241,38,207,234,15,233,26,32,44,9,186,18,36,175,9,23,223,240,43,230,14,24,229,254,221,251,187,212,34,18,19,255,242,62,21,221,217,205,225,38,193,235,97,212,192,16,238,222,237,208,246,17,186,17,10,236,8,232,246,234,215,223,220,241,10,247,243,11,12,250,215,201,239,227,238,253,236,188,42,242,213,20,7,24,204,25,6,163,183,79,32,9,9,3,20,228,223,196,35,21,203,245,50,68,237,167,249,38,254,189,219,56,245,187,247,25,0,252,17,25,182,222,218,215,45,225,176,31,10,231,182,246,246,250,172,252,43,206,198,28,32,219,239,173,208,236,212,210,230,18,241,214,57,14,187,179,231,62,221,175,39,24,237,199,213,31,16,220,237,0,237,8,2,29,247,241,59,185,4,40,253,242,22,30,210,24,22,6,255,13,24,241,228,16,33,164,23,63,190,239,240,239,1,16,31,240,212,39,203,234,71,200,9,221,230,12,204,4,5,243,19,217,217,20,221,220,10,14,233,223,12,19,0,26,38,248,213,232,250,51,222,10,51,247,22,252,10,5,236,233,247,49,26,212,232,255,253,33,214,240,42,0,227,224,44,1,227,28,29,238,56,23,228,232,54,221,236,51,14,17,245,56,20,237,18,68,252,0,62,0,42,12,4,230,35,67,47,34,20,19,219,34,254,230,22,69,25,5,229,29,6,253,205,41,235,34,85,184,216,17,24,240,87,0,233,182,4,28,253,14,254,6,4,247,210,14,244,3,216,255,58,239,233,244,36,62,225,203,15,16,218,227,25,20,11,7,246,40,237,201,30,76,217,14,4,213,68,45,247,1,37,11,0,242,29,10,14,255,252,59,37,1,19,16,206,33,3,250,36,211,80,33,24,29,33,220,210,34,53,225,232,13,12,22,7,38,0,226,17,18,215,16,252,247,250,245,9,24,235,220,17,238,211,218,215,210,38,1,7,24,30,248,200,225,211,11,5,13,4,28,240,40,243,1,21,236,204,34,3,239,0,70,2,209,30,227,206,226,224,15,255,240,229,20,219,245,3,241,226,23,246,217,40,248,0,238,13,253,8,246,237,229,23,252,0,55,231,230,49,9,239,1,234,1,248,0,28,233,17,218,209,43,204,249,31,236,0,228,238,4,220,240,53,221,211,223,255,250,234,16,218,9,228,15,225,205,56,2,180,20,16,170,197,251,24,252,235,231,232,223,252,217,3,41,203,230,3,14,4,178,242,48,0,250,34,243,0,242,223,249,66,42,177,5,100,233,205,238,6,251,240,5,247,255,20,255,236,12,9,228,211,238,34,6,218,2,15,29,7,13,224,227,16,234,13,7,237,14,9,217,22,7,223,219,8,247,180,5,30,31,244,23,247,205,208,19,238,205,16,0,239,20,25,214,20,3,222,230,7,238,238,15,13,68,0,20,218,9,239,13,12,242,1,222,16,1,55,239,251,10,1,250,233,243,3,236,12,61,246,240,243,17,6,250,209,239,27,14,247,0,69,230,229,9,12,231,20,205,249,54,200,7,1,8,238,225,23,243,242,48,249,163,48,241,5,248,18,239,30,214,1,27,226,1,16,215,27,27,217,251,244,29,248,241,232,30,214,220,248,25,32,216,245,5,251,227,212,3,36,211,206,22,249,19,229,213,32,229,236,214,42,13,243,6,221,218,41,51,198,24,240,248,28,8,213,9,1,246,250,250,0,11,247,195,38,18,213,212,13,0,225,5,49,211,1,232,207,84,216,204,245,28,212,1,18,245,237,230,247,220,57,224,195,237,29,245,184,30,29,222,231,222,37,2,180,3,241,254,2,209,5,212,245,224,6,250,13,218,30,9,209,10,254,24,231,1,27,225,238,36,185,78,24,217,251,9,3,10,202,244,47,212,251,241,14,240,252,2,243,236,205,2,234,242,15,8,194,225,16,28,247,249,228,222,13,7,32,233,241,10,225,0,74,240,221,224,251,51,203,12,249,2,254,10,233,28,215,3,245,245,5,224,246,252,20,202,222,244,249,215,251,251,15,237,195,13,1,252,230,239,38,212,186,239,40,19,233,214,3,236,219,250,239,14,15,208,235,247,58,215,243,255,26,242,199,14,1,242,2,0,218,237,30,188,27,15,224,226,19,27,243,233,18,224,8,9,198,255,25,248,234,20,243,222,1,38,249,237,3,242,239,203,41,2,193,12,217,215,250,2,199,3,34,212,228,9,22,193,184,53,8,214,33,208,222,12,19,213,11,31,221,252,0,221,212,252,246,22,224,22,31,222,212,45,10,243,229,221,8,34,218,223,23,43,214,239,16,242,244,253,232,217,46,250,224,19,53,244,222,255,33,202,7,225,243,234,14,254,227,9,47,218,237,10,209,4,15,12,208,234,35,244,246,236,55,211,205,223,240,4,247,251,35,17,198,4,4,51,214,226,222,254,224,253,246,0,25,231,12,252,224,214,22,185,38,231,234,22,251,224,253,38,247,220,253,20,197,225,0,24,254,229,37,4,203,245,2,6,242,9,12,189,13,22,27,23,243,11,28,224,192,235,12,19,208,34,236,9,29,239,0,33,191,43,244,0,8,228,24,10,3,241,15,247,0,222,228,239,242,19,247,243,0,15,203,250,69,247,186,15,211,247,249,29,7,22,232,249,4,17,3,255,201,1,20,222,247,9,15,246,217,239,41,244,196,4,235,24,14,219,0,8,245,242,22,251,11,243,244,211,0,14,203,216,18,5,233,251,36,224,247,240,251,7,207,19,11,253,255,237,22,16,240,253,0,248,3,223,225,40,29,244,243,5,15,250,240,238,23,248,244,17,231,245,19,0,248,243,225,232,253,234,226,246,17,16,243,238,242,224,45,224,215,251,242,253,248,245,247,7,220,2,243,227,47,199,230,19,232,16,12,210,29,231,239,254,233,15,18,241,193,255,14,240,4,19,234,235,14,253,238,13,236,11,19,210,13,11,221,27,0,227,248,4,10,230,14,7,226,11,7,215,49,10,224,2,208,21,25,202,247,6,250,229,248,0,253,224,234,248,5,224,237,237,240,236,243,211,8,242,219,34,22,207,234,224,3,231,245,23,224,228,30,1,216,253,241,253,0,255,219,197,254,52,220,219,19,243,249,232,245,255,211,13,234,236,6,14,233,213,40,2,201,249,21,218,230,28,5,206,254,16,21,240,229,11,181,227,52,226,250,29,7,219,196,50,20,201,13,3,207,24,187,32,26,207,21,2,240,21,214,32,233,211,33,25,232,251,34,240,239,242,25,33,249,207,243,13,46,221,230,65,8,219,233,3,23,240,241,22,223,13,4,202,4,29,233,219,15,28,224,11,237,213,7,243,6,242,9,247,222,5,20,31,204,217,242,14,247,220,6,7,246,240,226,10,0,243,3,246,213,40,6,224,10,8,0,231,254,242,31,242,242,242,47,240,206,29,26,23,207,6,35,234,241,238,243,28,233,225,239,18,2,255,11,11,247,235,214,23,39,218,23,232,250,0,234,7,13,242,4,22,247,254,250,2,1,206,13,3,21,223,16,255,27,247,234,8,230,0,5,254,247,8,217,0,16,38,223,231,7,7,223,247,252,2,17,252,229,225,5,33,233,235,255,245,235,0,241,7,252,237,29,239,213,38,222,242,48,226,239,15,235,38,1,220,20,10,235,249,234,31,2,230,24,251,240,249,230,2,242,15,250,253,0,223,3,251,240,22,247,252,6,237,248,255,21,222,13,247,236,0,249,10,10,205,18,13,251,2,7,253,177,2,2,214,30,227,231,24,209,3,3,240,245,223,6,29,219,245,3,250,23,252,230,242,225,36,223,239,8,246,1,249,231,11,242,232,32,226,2,26,242,7,244,5,248,14,3,249,4,241,251,8,250,238,23,213,19,9,249,234,241,23,0,230,227,29,2,218,222,28,244,11,6,239,22,248,244,4,0,5,253,252,9,226,245,0,234,31,247,234,17,250,8,222,12,255,248,220,28,6,224,254,20,221,235,52,236,230,233,248,2,250,7,246,233,21,8,225,226,6,240,236,23,250,254,242,244,6,252,10,0,200,12,21,220,220,29,15,197,252,41,249,238,249,237,3,2,2,255,231,28,247,224,247,8,227,9,13,251,251,222,4,18,214,7,24,240,211,29,32,249,227,249,15,2,222,223,49,243,242,252,228,13,14,218,253,254,237,233,235,0,254,234,243,4,243,15,222,207,36,249,199,29,0,234,1,228,250,30,229,249,220,253,5,217,11,252,254,3,228,224,9,255,245,2,202,244,255,249,227,2,244,0,0,245,240,248,247,242,6,254,232,236,7,249,28,252,214,13,11,209,248,21,245,225,26,248,251,229,245,2,23,234,238,0,0,11,222,252,48,242,211,239,11,247,234,4,3,12,241,221,18,14,7,217,225,252,34,229,242,35,235,254,251,29,220,12,250,237,0,9,234,247,247,237,26,23,231,244,0,249,10,221,22,3,237,14,9,244,11,1,233,6,248,18,245,21,234,4,3,0,31,243,226,8,246,243,18,224,16,19,243,16,246,251,30,20,23,227,238,12,2,21,12,235,32,1,250,5,0,58,225,228,5,254,34,5,229,36,12,7,250,1,16,4,249,7,254,251,27,15,230,236,42,23,234,0,19,255,10,1,252,7,250,21,3,232,20,252,1,14,250,254,252,248,251,255,12,9,242,252,4,17,11,231,230,252,33,232,246,46,226,224,0,9,26,229,28,16,232,6,30,239,245,11,10,18,250,5,1,250,251,17,6,207,254,0,4,241,252,3,34,235,237,9,37,234,245,22,222,2,22,11,234,26,19,243,248,253,250,243,236,12,9,3,1,236,243,25,243,253,236,251,31,220,244,25,250,252,247,244,15,253,249,237,9,254,212,245,16,249,230,237,4,10,237,253,250,8,0,229,230,0,12,224,2,7,232,0,248,232,5,4,240,9,240,244,248,231,4,7,229,251,10,214,251,5,230,250,242,230,239,11,26,219,226,6,1,239,236,250,253,255,246,231,4,9,246,251,242,3,249,209,23,0,220,246,246,0,33,212,242,236,246,10,226,246,251,241,12,242,1,220,231,254,1,238,0,246,214,245,244,241,247,244,0,0,239,11,238,228,9,242,0,242,223,22,225,253,17,241,255,255,226,247,255,9,244,220,25,21,244,247,218,238,27,253,233,234,244,10,229,235,8,9,228,250,246,4,19,240,228,252,9,2,253,221,5,12,245,252,249,1,240,14,249,247,0,247,237,233,1,5,242,3,227,243,10,237,246,227,1,0,253,230,235,7,248,217,8,12,236,244,238,249,250,242,234,7,1,7,231,239,245,16,235,244,11,255,231,242,18,239,245,4,255,0,254,222,233,246,239,234,9,2,237,232,253,1,255,245,245,254,249,251,222,230,0,32,236,240,35,242,237,250,252,26,0,241,14,240,251,26,231,240,16,246,249,232,14,7,232,13,255,0,4,255,239,222,245,23,240,232,23,31,239,238,243,0,12,244,14,7,0,0,230,238,23,247,254,252,0,2,232,10,243,14,15,219,253,27,228,249,242,23,1,234,8,255,11,250,229,4,5,244,9,249,4,1,1,254,248,0,1,10,252,247,242,253,253,19,0,253,2,249,242,236,39,250,235,255,18,10,253,247,245,13,2,238,245,23,252,207,3,28,245,240,3,12,254,226,2,15,230,242,3,254,14,248,236,252,28,237,240,5,255,248,239,0,14,252,248,244,251,20,231,250,8,1,244,240,0,0,250,240,244,15,1,217,232,12,0,229,246,12,241,4,246,229,23,0,235,239,4,9,233,223,36,233,233,18,249,242,0,2,4,13,5,231,239,2,6,239,9,10,245,233,6,14,232,254,251,249,235,249,1,1,238,248,7,237,250,6,0,235,250,254,222,243,14,241,232,9,242,244,246,242,245,6,7,233,248,0,3,250,240,253,8,248,245,7,235,0,250,238,12,12,252,247,0,95,0,3,0,5,0,112,0,14,1,156,9,64,11,116,14,132,18,174,21,50,5,14,16,6,6,6,4,7,7,92,165,137,137,150,175,92,165,137,44,40,35,90,44,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,112,0,14,1,156,9,64,11,116,14,132,18,174,21,45,8,17,20,7,7,7,5,8,8,92,165,137,137,150,175,92,165,137,44,40,35,90,46,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,112,0,14,1,56,9,24,11,116,14,132,18,174,21,0,8,17,20,7,7,7,5,8,8,92,165,137,137,150,175,92,165,137,44,40,35,90,46,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,52,9,14,0,253,13,2,250,242,3,5,3,233,238,32,249,238,9,17,247,8,9,232,33,236,249,8,245,5,24,4,253,7,241,30,2,243,8,17,237,255,1,0,12,241,6,18,248,2,249,4,20,238,254,12,3,17,5,4,255,252,32,245,3,9,250,25,6,233,10,41,227,234,29,0,228,8,246,0,6,228,1,9,14,255,232,6,250,240,14,255,13,237,11,30,7,249,14,244,254,248,7,2,240,32,12,222,22,16,246,14,19,242,7,252,246,9,249,241,10,241,251,243,252,1,253,237,244,244,53,227,230,2,1,14,246,8,253,17,15,221,27,7,240,216,8,28,226,221,18,253,17,225,224,21,249,237,201,50,18,197,13,12,246,0,226,244,231,238,20,224,14,233,220,7,33,204,224,25,5,208,240,255,227,16,250,237,246,24,233,206,1,10,207,237,21,227,0,253,217,223,12,251,222,218,35,254,183,30,253,242,243,233,6,244,221,243,218,26,231,169,51,255,215,242,14,8,193,225,15,14,202,241,241,7,231,219,213,245,246,210,242,4,253,203,216,253,247,235,193,15,4,243,219,254,221,221,1,237,252,246,241,246,5,203,237,2,248,239,218,246,0,22,227,238,7,202,242,17,170,245,5,201,236,17,187,252,238,6,237,206,241,207,251,2,215,8,225,210,238,2,228,235,224,227,23,228,203,252,24,225,229,221,247,248,253,211,237,0,247,210,228,36,228,208,244,33,211,210,11,212,231,11,0,212,11,223,0,224,224,19,225,239,222,232,252,17,221,218,40,229,241,4,234,229,0,255,231,255,0,235,210,36,1,220,13,223,233,30,8,247,250,4,7,235,250,18,16,234,211,1,13,33,229,220,55,8,236,247,5,243,229,11,20,255,2,237,5,4,247,7,253,219,25,0,18,30,246,234,15,8,13,239,253,7,240,246,30,219,249,28,215,234,49,226,254,240,12,242,211,12,74,186,38,13,206,15,18,239,11,244,16,16,220,18,42,9,227,8,246,2,30,238,237,46,237,243,27,15,247,235,252,229,12,255,233,11,3,240,24,243,19,2,239,16,19,231,253,53,251,242,53,4,229,34,1,13,17,249,0,254,11,9,9,19,236,31,4,4,244,4,19,237,2,237,2,50,249,229,245,16,0,236,6,40,226,252,23,1,244,24,43,245,214,59,2,226,65,223,219,254,34,8,238,7,247,208,53,48,229,192,32,18,251,18,238,2,255,23,7,219,254,22,249,244,245,218,29,18,232,12,8,0,0,246,6,255,252,211,239,47,3,233,253,8,16,254,248,232,9,5,248,253,255,15,17,219,23,27,0,249,234,231,44,252,215,228,16,12,236,16,214,1,7,194,8,245,235,232,227,40,237,4,241,243,6,1,248,240,2,31,228,227,40,239,241,4,242,238,41,235,198,57,230,252,232,236,29,4,242,3,217,9,23,233,4,229,0,239,246,25,226,223,38,0,202,1,17,241,231,247,24,249,226,4,229,225,13,3,0,255,35,219,216,58,10,185,29,255,238,16,251,254,237,30,247,236,252,248,27,254,232,51,0,11,5,238,7,248,237,241,9,66,201,251,45,207,246,244,241,235,251,3,235,14,29,245,231,252,1,10,226,30,238,235,232,0,22,221,215,15,7,249,233,16,0,214,7,36,15,224,232,40,1,251,35,225,8,249,233,233,3,24,235,5,33,252,226,11,226,67,184,230,5,11,1,8,221,1,26,213,246,21,222,210,14,2,251,236,24,227,0,26,231,26,242,230,0,8,49,233,194,75,30,229,21,236,248,248,249,238,18,26,223,7,23,245,214,19,254,237,213,36,236,227,41,237,250,236,6,17,241,199,28,241,213,53,212,14,48,216,3,29,203,3,27,253,218,2,2,244,26,239,247,253,18,34,218,6,38,222,228,45,14,229,56,202,16,30,238,253,225,6,24,232,22,9,203,30,225,9,241,233,5,252,14,241,235,11,11,4,210,7,6,251,226,17,254,44,225,245,15,238,9,249,21,252,21,253,172,20,57,197,0,21,17,15,217,2,36,23,227,41,252,241,30,30,213,39,242,0,19,254,1,245,27,224,29,246,230,27,9,213,14,9,20,14,253,250,29,14,193,37,18,223,16,17,20,31,229,226,66,10,236,19,21,0,34,21,231,31,15,207,26,246,3,251,249,5,16,10,188,44,245,242,214,14,255,21,247,21,210,27,54,191,46,241,238,8,27,231,42,15,244,20,249,39,40,0,207,11,35,228,7,6,31,247,21,234,6,237,0,0,230,7,29,202,59,3,224,48,242,187,41,216,38,225,226,64,208,239,19,246,20,242,242,247,6,15,247,224,42,237,247,32,220,48,220,210,34,2,232,12,216,12,255,219,5,252,38,40,186,1,32,210,223,13,29,240,213,39,232,31,190,234,253,15,245,209,19,227,234,21,16,245,226,9,247,228,252,236,226,251,15,227,13,255,0,230,7,9,213,218,253,8,223,19,250,0,229,14,237,252,228,218,252,24,232,195,51,0,223,252,53,223,236,248,10,227,203,19,255,228,9,237,230,13,239,240,225,202,27,224,238,251,248,247,247,252,233,238,10,226,236,18,231,226,21,12,232,217,3,23,213,208,0,15,240,185,26,10,227,244,250,1,251,249,219,240,253,246,213,226,29,232,207,1,225,217,247,242,222,215,251,48,216,237,247,240,241,247,241,222,252,237,249,239,252,223,238,44,220,235,10,227,219,254,248,18,224,248,250,14,30,213,245,21,235,236,234,26,245,195,12,4,193,26,5,213,246,21,241,221,246,243,254,242,252,241,236,7,36,172,2,36,226,206,17,15,222,226,8,239,255,218,30,227,236,2,2,214,225,8,7,224,248,29,209,238,21,224,243,243,0,255,7,21,243,238,241,15,222,229,243,22,222,222,4,27,244,223,9,253,251,250,233,22,2,225,239,17,232,233,252,236,22,1,222,20,255,245,219,9,7,12,218,0,18,240,36,237,248,0,11,246,7,220,13,238,23,244,11,44,199,50,249,235,225,252,14,246,247,41,1,255,9,247,25,228,241,39,207,29,27,240,219,41,28,240,163,43,14,203,17,7,221,40,3,232,42,225,253,233,7,53,226,235,24,13,0,246,18,28,12,8,209,29,21,237,1,252,24,255,10,11,13,246,18,218,253,10,236,18,252,16,2,248,235,21,247,5,241,244,15,9,246,241,242,58,1,230,6,235,24,32,224,250,3,15,27,223,248,39,234,208,35,0,244,236,32,1,253,238,3,32,251,244,12,252,6,234,237,31,15,0,248,38,237,251,15,223,14,2,20,243,224,38,248,243,13,219,6,8,238,251,250,6,243,1,11,2,232,0,0,32,6,229,28,233,231,254,230,17,40,15,249,236,253,0,23,29,206,0,15,252,3,231,244,16,218,247,39,228,237,25,249,28,3,239,235,249,27,227,9,35,237,232,55,231,239,1,245,232,38,221,253,14,247,47,215,245,4,238,217,253,4,238,214,48,12,240,255,253,235,252,7,227,4,2,242,11,252,15,244,251,1,253,12,214,237,252,6,5,231,20,249,26,233,229,9,9,240,213,10,255,213,247,49,220,238,22,218,249,13,210,249,249,17,6,249,20,227,14,234,23,237,188,55,236,236,9,1,249,0,254,251,238,24,244,223,242,34,251,223,42,219,40,39,183,51,22,206,243,247,25,246,244,10,245,247,23,235,0,252,8,194,207,77,202,245,33,6,7,245,249,249,11,206,9,32,227,243,34,27,243,253,236,33,238,214,252,49,216,245,246,55,7,203,246,47,253,197,216,14,1,191,31,18,237,8,251,0,0,219,33,231,210,49,32,228,21,241,4,0,225,252,2,203,53,5,183,70,51,202,8,244,27,232,221,19,204,4,11,231,219,14,4,252,9,2,237,239,220,41,231,248,12,233,31,223,13,45,194,246,36,225,0,13,239,227,20,22,14,216,30,234,243,15,251,209,4,48,229,211,71,8,228,33,10,200,15,20,219,241,16,13,235,216,48,242,215,21,251,220,40,13,195,47,253,235,7,27,235,252,7,248,228,39,222,246,22,230,1,243,15,243,225,25,11,230,0,38,224,244,40,32,204,23,234,29,237,36,222,18,17,229,45,15,240,4,255,243,15,227,0,11,16,0,215,24,16,226,229,45,245,241,14,246,17,31,218,29,253,255,216,37,26,199,230,29,3,250,37,233,226,48,24,195,11,19,18,247,244,236,24,241,6,247,25,229,185,30,34,247,242,17,5,205,15,21,239,4,5,244,236,1,5,212,11,58,199,21,16,243,29,218,198,70,240,228,63,246,246,216,28,18,224,29,243,238,0,203,34,38,235,246,25,248,7,37,203,245,56,230,194,1,38,11,220,7,26,2,214,32,218,240,5,235,254,23,251,4,4,12,247,250,244,246,2,215,14,5,245,19,246,26,237,216,54,7,194,51,11,241,250,7,9,238,30,15,237,5,0,17,195,37,40,200,27,33,240,43,229,253,6,17,230,223,65,232,205,60,5,240,37,255,32,22,222,5,0,8,242,3,23,24,11,236,35,7,254,234,236,50,241,220,74,255,238,0,17,47,191,229,55,219,249,18,0,26,9,16,53,191,233,2,28,9,0,239,5,10,223,227,27,58,228,187,69,14,192,4,245,222,17,4,23,36,219,221,12,247,246,1,241,233,0,253,254,223,248,6,204,250,24,241,16,0,242,24,233,242,24,174,52,4,200,253,13,69,177,174,74,186,244,248,251,217,25,6,215,241,19,178,2,19,203,245,28,206,244,17,234,10,239,236,218,7,243,211,21,237,225,243,231,35,173,205,29,208,206,23,249,245,213,242,12,213,245,230,28,232,200,15,7,243,210,185,30,232,199,45,231,244,24,200,186,44,240,195,49,176,223,63,222,201,194,30,23,134,208,124,151,239,47,178,241,255,245,224,255,48,197,249,234,254,11,230,232,75,149,11,48,201,244,14,33,215,164,12,241,178,57,252,192,253,1,252,3,194,244,12,243,210,224,249,22,233,10,5,183,21,12,245,212,231,31,56,152,70,47,153,54,24,212,221,15,39,198,11,68,238,189,113,197,189,53,250,245,208,31,223,234,34,210,174,42,25,206,10,194,224,37,253,213,0,56,240,6,240,199,61,253,186,33,19,3,20,18,7,31,242,252,247,250,38,249,227,14,56,212,242,233,216,232,30,221,212,242,21,252,220,248,218,9,5,245,227,253,15,248,1,10,13,223,224,19,225,0,26,235,242,69,224,228,16,245,11,212,241,32,252,212,23,239,0,17,250,5,245,195,10,23,0,250,205,14,39,25,29,16,220,196,26,41,236,25,17,255,230,195,55,45,221,204,215,10,32,31,0,0,183,241,46,239,33,41,237,232,234,248,17,73,0,219,8,251,230,246,16,60,26,222,250,3,205,1,253,62,46,197,226,51,47,188,175,251,106,38,204,203,245,81,15,200,5,37,242,246,227,203,10,31,7,29,9,20,227,210,42,0,230,46,10,250,245,241,235,30,241,4,73,248,250,241,182,217,23,45,21,19,2,208,207,7,50,24,21,25,252,249,239,1,4,13,42,244,202,254,32,39,0,249,46,193,221,6,225,48,4,184,219,45,6,219,250,240,255,237,28,242,6,18,3,7,238,16,44,26,250,248,16,9,5,19,49,32,241,255,205,250,35,27,6,243,24,4,197,181,229,33,40,250,225,244,238,237,230,252,4,7,251,238,28,19,240,19,32,247,27,243,238,26,47,45,235,202,215,230,46,76,31,238,23,212,211,1,21,37,33,250,10,208,188,225,32,11,66,29,178,168,211,31,77,39,6,207,207,18,21,245,8,54,37,191,235,44,43,254,236,14,37,205,198,55,7,250,43,36,202,132,20,88,44,205,219,38,11,205,219,67,44,1,176,184,77,68,238,210,36,11,190,239,33,41,250,11,34,224,236,251,31,34,240,200,227,26,19,7,12,30,16,211,223,29,19,248,26,248,254,29,232,188,227,62,22,235,5,9,24,253,206,206,38,79,56,219,185,2,251,220,36,40,37,201,189,36,29,239,240,50,19,203,226,20,46,224,248,3,6,58,0,209,255,248,251,24,249,209,2,90,25,233,28,242,192,3,49,21,12,230,212,0,6,0,254,11,38,231,187,235,62,45,228,23,27,195,214,31,27,9,253,206,239,32,35,32,247,199,250,1,8,34,219,240,254,222,64,22,222,220,23,39,20,255,205,3,24,1,234,19,55,27,2,235,44,227,202,7,48,30,15,234,222,252,218,19,31,255,238,212,248,25,243,198,244,22,9,22,232,231,232,5,47,49,0,213,193,248,68,53,11,247,255,239,243,34,11,17,81,213,187,58,16,237,12,15,248,227,244,17,41,7,210,175,239,44,29,17,216,219,229,246,17,31,40,231,215,7,8,18,14,42,50,181,201,3,255,30,39,7,211,243,3,23,28,28,191,251,48,244,5,241,4,27,253,241,40,31,195,210,13,38,28,238,207,231,56,33,5,209,207,40,37,231,250,0,228,241,15,9,0,17,253,16,19,238,212,6,55,16,239,7,232,235,61,21,243,237,223,228,16,46,238,27,9,192,12,247,14,37,5,3,218,203,22,38,247,255,239,252,240,4,18,5,8,37,9,213,251,6,15,39,246,237,20,251,232,4,11,36,241,203,236,29,49,254,227,242,23,14,4,244,251,18,251,238,232,10,36,236,226,244,243,27,53,247,234,210,245,10,26,14,5,9,242,188,253,85,59,1,222,224,246,5,42,30,49,227,183,7,6,225,42,33,1,251,208,206,4,21,3,24,250,236,237,246,18,22,1,251,240,12,49,30,242,230,216,23,53,211,234,48,6,208,234,3,40,11,213,44,42,212,217,254,29,16,29,9,221,221,251,11,0,25,23,221,237,22,255,224,5,31,220,233,15,15,11,24,0,245,18,2,234,254,29,41,237,247,0,250,1,39,255,197,242,40,53,248,223,239,19,233,209,18,32,1,255,197,0,51,247,4,254,1,0,234,237,0,14,10,4,228,2,30,25,242,0,26,236,219,14,83,24,225,210,248,37,48,250,205,15,19,243,255,249,16,5,221,218,35,242,8,44,241,249,243,186,253,61,53,3,217,222,202,239,49,34,27,247,255,15,207,234,66,35,244,255,212,213,7,71,74,236,208,230,0,5,51,28,244,238,208,0,22,2,240,8,252,19,12,232,229,231,254,26,26,1,231,4,13,0,1,250,237,17,38,6,227,7,249,246,14,20,247,226,248,57,16,214,21,16,254,253,245,0,7,238,248,26,234,253,33,203,224,20,19,58,5,185,255,59,9,217,247,249,3,13,9,233,246,37,1,232,12,7,2,11,250,14,248,254,3,7,249,240,46,4,238,14,242,252,223,6,16,248,13,248,222,12,35,7,246,236,235,233,13,29,253,248,21,1,249,6,27,32,225,232,249,9,251,4,30,44,233,220,19,251,4,243,247,29,4,212,245,36,9,0,247,207,221,1,60,67,254,180,231,11,44,11,248,249,241,23,248,208,39,63,254,232,233,16,12,233,30,16,3,248,240,251,10,9,246,1,22,240,224,253,235,245,20,27,248,249,24,225,235,20,6,4,237,227,25,65,1,229,8,229,226,10,32,31,255,217,14,28,245,18,252,3,12,246,255,13,17,12,236,199,0,51,9,5,241,220,246,236,250,45,24,229,240,219,16,32,238,12,246,240,14,3,1,19,16,9,241,209,5,20,249,33,26,239,8,239,218,9,16,11,45,7,247,205,4,50,236,254,26,8,250,222,199,11,49,7,1,253,226,224,25,32,240,232,24,22,225,242,28,24,247,226,255,50,254,201,252,26,43,25,221,226,3,251,229,37,21,237,232,251,44,240,241,12,2,233,247,53,33,238,235,8,19,3,222,250,65,17,188,196,14,71,43,247,225,227,246,252,26,13,247,2,252,240,26,252,238,226,0,51,3,239,240,254,25,9,243,26,2,209,0,242,10,62,247,217,255,6,3,2,0,27,6,237,232,3,35,19,14,236,210,3,15,247,13,19,3,229,1,2,9,250,233,33,1,4,7,209,12,33,3,236,3,6,217,244,31,26,34,242,207,245,4,41,4,229,0,0,248,255,40,0,255,243,229,255,7,27,16,0,242,235,246,8,25,10,245,240,6,245,249,255,7,22,40,18,202,210,50,20,253,255,235,9,31,232,6,10,252,3,235,18,11,220,236,242,27,32,247,220,14,50,237,209,20,24,239,1,26,223,253,21,236,244,34,2,247,22,1,236,246,25,6,247,8,227,0,9,9,4,250,242,239,26,15,254,6,242,6,28,4,0,10,228,239,13,25,3,7,243,232,22,20,232,235,239,240,5,254,4,11,20,16,255,186,240,67,31,252,244,0,240,241,248,7,47,28,204,218,40,18,250,252,3,1,21,6,7,31,239,226,247,0,250,0,17,5,241,219,15,28,253,235,12,5,234,253,246,24,33,246,233,249,16,244,7,16,248,3,12,232,239,20,23,23,3,215,217,28,48,3,255,249,230,252,248,253,23,14,27,253,211,240,7,20,41,240,228,240,12,3,255,0,10,8,229,244,17,8,40,8,197,220,38,39,16,233,208,13,18,241,14,11,238,13,239,188,9,74,70,236,196,244,9,20,28,4,252,253,228,233,17,1,29,0,254,252,254,6,242,33,22,227,231,3,253,244,25,6,248,209,0,14,248,38,5,221,246,18,230,32,49,234,254,242,225,5,9,36,36,230,221,2,238,0,58,53,2,215,207,5,32,37,13,227,235,251,228,28,25,230,246,246,248,9,244,227,22,31,251,231,234,28,27,12,8,228,235,253,9,34,24,7,229,236,250,255,57,31,209,227,253,240,16,39,27,246,245,244,224,245,21,38,6,234,220,245,20,26,27,255,202,249,24,10,4,6,0,244,235,252,13,30,253,245,12,8,244,234,12,16,8,7,211,227,35,36,227,220,34,22,1,255,218,242,30,39,240,242,1,254,2,250,15,6,26,7,246,224,228,28,11,16,255,222,244,247,18,0,9,252,255,12,245,1,247,14,12,7,253,227,246,24,44,245,249,11,227,4,34,7,245,12,253,215,4,248,5,33,232,246,34,237,202,9,36,15,227,228,33,24,25,4,227,238,253,245,13,19,252,7,15,226,224,8,41,56,235,214,246,5,11,15,5,234,6,253,237,11,26,1,5,254,253,223,250,36,38,5,214,222,7,14,18,7,243,242,232,14,16,1,1,251,1,0,249,253,26,7,223,235,29,28,2,232,0,1,253,255,19,4,255,248,15,1,250,8,251,9,3,242,21,2,250,240,243,17,10,248,15,244,229,8,15,251,1,254,1,8,255,252,251,251,6,250,6,5,255,229,234,35,28,243,254,4,3,255,1,21,234,239,38,24,240,10,251,219,12,26,255,232,246,31,18,220,241,12,33,5,246,241,223,255,10,2,22,0,216,9,22,253,243,255,1,3,9,4,0,250,1,26,255,255,3,15,2,8,242,252,24,239,222,18,39,215,233,17,239,12,7,254,1,3,235,4,29,252,245,250,16,9,241,255,3,9,236,17,29,237,226,26,40,245,240,239,233,35,25,252,233,232,231,10,18,6,12,10,5,229,207,6,37,36,8,251,253,244,241,8,39,34,254,215,211,2,3,21,26,7,228,234,8,6,249,253,22,5,4,251,253,243,3,16,246,255,6,240,6,12,251,250,3,0,242,239,21,52,245,241,22,9,240,236,7,249,15,17,0,253,246,229,240,43,255,223,28,251,0,15,241,235,245,3,20,21,253,243,243,1,15,255,253,7,13,15,5,254,248,240,9,21,11,2,253,248,247,252,249,242,15,10,255,8,253,202,240,24,29,27,250,232,246,250,10,22,8,249,243,244,242,17,12,20,11,240,243,232,252,21,14,13,27,244,215,247,8,34,8,230,0,245,16,20,254,239,17,244,224,16,22,20,0,241,250,238,241,28,38,251,244,237,252,21,241,239,242,22,32,240,240,249,4,3,245,5,0,0,14,13,241,252,11,247,13,12,254,253,247,238,11,42,8,3,243,242,231,4,28,248,0,25,2,232,242,3,20,13,237,247,255,243,0,30,7,245,254,251,240,7,8,25,19,209,227,34,16,251,248,0,5,0,1,14,2,227,241,23,16,234,249,23,243,252,6,18,24,5,242,232,9,4,4,13,0,3,229,237,4,30,18,231,246,3,3,244,15,18,231,239,0,19,0,246,2,24,247,253,10,2,3,9,249,229,7,5,7,16,1,252,252,0,3,3,250,1,4,246,247,251,30,9,241,0,239,254,28,246,237,12,19,248,227,255,26,11,5,248,228,3,18,251,4,11,245,246,231,252,34,12,0,251,251,9,0,253,12,13,252,4,1,254,254,4,19,239,1,20,231,250,25,5,246,242,241,5,8,6,5,228,220,2,15,11,17,0,247,243,12,15,247,244,0,15,12,7,2,238,242,251,27,27,249,230,7,6,247,6,249,13,33,253,249,236,255,23,1,20,19,236,215,238,13,23,22,0,229,238,6,240,12,22,249,2,247,240,229,246,24,28,16,252,203,247,29,250,20,24,248,234,240,12,14,0,15,23,247,255,0,8,13,2,12,10,255,240,253,253,253,9,8,254,227,243,11,5,238,13,250,216,8,25,0,254,250,0,1,245,9,1,250,18,8,6,8,232,11,49,245,235,246,3,7,7,10,246,8,253,2,17,250,246,11,0,0,2,236,250,246,249,23,253,242,255,247,7,8,229,245,25,13,254,247,255,10,22,6,244,7,255,255,2,24,9,243,247,252,9,15,0,244,4,19,249,253,0,238,243,1,5,10,0,242,252,251,244,5,6,251,251,8,1,0,12,17,15,246,239,251,254,253,25,4,251,248,246,0,5,6,253,23,23,242,239,239,20,12,4,0,248,254,12,3,253,12,234,239,23,23,1,235,242,5,9,242,248,252,252,4,5,3,8,230,236,13,9,15,2,236,0,11,19,3,243,0,11,6,11,246,244,2,1,28,12,229,243,4,6,13,4,255,7,237,3,18,243,252,9,0,255,19,9,229,236,255,12,14,245,240,243,3,13,247,248,17,253,227,11,21,242,253,253,6,12,0,243,14,30,254,0,3,3,14,253,245,1,12,1,241,4,10,252,12,14,250,236,242,6,13,6,251,240,235,1,19,18,7,232,238,0,245,0,27,2,241,5,0,240,1,5,10,7,249,248,8,6,6,7,1,0,254,247,7,30,8,244,252,4,5,5,253,254,253,3,5,5,249,225,234,7,23,24,4,231,243,0,241,248,27,24,244,2,12,250,240,242,8,18,18,2,244,242,245,2,16,17,247,255,5,255,0,237,5,21,6,251,238,240,3,26,12,1,252,230,0,20,9,254,4,0,244,255,7,5,10,5,255,244,255,2,10,6,253,253,254,0,252,255,245,255,4,249,218,249,36,17,2,244,242,252,0,10,33,19,220,230,11,42,24,253,2,2,0,46,9,29,0,245,5,245,248,27,12,3,237,249,10,249,0,42,31,0,236,243,19,20,13,255,249,34,33,254,209,229,4,22,34,11,232,253,20,249,230,21,50,249,249,10,252,10,12,252,8,13,9,26,21,233,242,26,20,243,231,16,25,251,3,5,242,4,3,12,3,250,20,13,247,221,2,21,8,5,252,45,36,204,221,7,24,43,33,6,246,241,5,10,10,24,5,250,31,3,239,4,241,15,30,239,7,4,251,25,253,240,21,18,246,244,243,26,38,0,250,240,14,19,238,232,19,56,1,221,240,246,32,51,10,245,230,239,35,21,14,7,0,19,232,234,8,250,11,26,13,254,230,236,255,0,32,29,5,25,222,215,10,28,14,1,48,8,228,6,13,215,0,42,14,19,8,241,240,6,14,23,25,249,248,6,0,252,255,255,17,31,3,248,221,1,11,253,35,5,197,249,38,249,8,2,236,32,11,243,233,244,12,11,1,51,26,226,11,254,229,4,36,23,3,22,5,225,237,252,231,58,68,232,210,1,14,24,31,231,227,238,46,43,223,251,15,15,5,251,11,3,8,1,253,17,2,251,245,3,243,253,37,15,237,255,14,227,231,12,10,5,5,2,255,250,253,255,20,30,27,246,0,24,6,247,255,238,11,50,11,252,243,15,15,246,4,10,17,13,20,255,230,237,247,30,35,30,255,211,198,245,0,27,67,252,6,0,206,226,29,6,17,50,11,239,215,244,34,25,28,40,238,213,9,242,241,64,0,3,56,230,212,229,36,39,15,9,227,42,23,227,225,13,38,31,9,241,7,219,30,12,195,25,44,237,242,6,217,12,51,238,236,255,42,243,227,254,247,61,40,22,235,239,9,194,14,95,51,7,254,197,247,42,218,4,59,66,0,217,229,204,25,63,20,250,221,2,17,244,236,253,38,49,253,234,23,222,227,42,6,246,36,20,219,11,14,254,34,236,215,6,31,50,20,240,236,231,15,42,251,4,35,5,247,236,2,13,250,46,30,216,2,7,243,11,2,252,15,1,19,253,215,23,36,245,10,20,0,6,251,250,29,35,14,251,242,229,6,57,14,10,11,255,252,239,24,11,246,24,4,227,17,3,2,46,244,223,35,16,226,253,254,0,45,229,21,37,220,250,8,6,30,248,243,50,7,222,28,17,1,23,5,11,17,239,236,20,34,32,243,226,238,21,8,236,12,21,2,252,7,253,242,229,40,37,246,24,246,251,16,0,242,239,19,29,20,10,12,18,227,241,13,2,35,60,253,209,254,40,19,234,14,2,214,32,24,223,5,30,10,234,255,11,251,234,21,0,17,6,201,17,56,19,238,0,24,232,246,11,35,13,225,243,29,236,229,18,6,33,44,224,245,230,8,65,0,248,5,248,229,18,250,15,72,10,206,227,15,3,8,19,244,14,8,20,2,215,11,12,245,6,23,14,242,3,24,238,221,62,94,222,215,235,236,16,31,37,35,240,222,9,21,240,246,8,10,17,16,247,1,240,200,36,72,23,230,242,2,230,225,17,40,236,21,19,223,248,212,239,62,3,229,16,255,245,14,39,27,228,227,26,21,241,29,45,245,229,20,23,241,14,0,7,28,39,232,215,54,9,220,29,58,253,227,11,237,248,30,239,248,53,17,203,226,23,30,6,10,3,232,7,3,228,232,40,53,211,233,36,231,241,4,247,64,28,221,246,7,15,4,8,252,21,46,21,249,227,6,23,33,28,252,5,253,2,232,251,14,14,44,227,224,238,228,26,242,22,10,6,6,231,222,10,36,3,29,251,226,10,232,221,25,69,44,13,223,200,248,35,50,36,5,24,18,217,219,250,43,58,15,32,5,228,210,251,48,25,35,29,254,212,228,248,12,22,13,20,15,231,236,242,17,12,251,24,7,15,234,245,254,11,255,5,32,254,13,240,6,45,244,240,242,249,55,28,11,228,218,20,50,247,225,31,20,228,25,39,248,248,249,250,25,40,251,237,23,25,17,207,237,59,6,232,15,40,241,240,21,244,239,245,8,28,30,6,210,233,31,7,204,240,35,72,41,198,245,6,246,19,22,29,1,7,11,0,8,222,13,48,20,254,230,29,6,252,25,244,3,9,229,8,52,243,246,27,225,211,6,63,41,241,234,10,215,16,5,216,42,50,249,249,244,234,247,20,33,16,10,9,3,202,243,62,31,231,40,23,237,239,200,11,65,70,18,244,240,5,238,220,47,43,16,13,247,202,216,28,34,22,27,9,245,215,232,250,64,72,228,11,12,224,249,12,9,246,32,31,20,10,240,227,238,34,239,236,58,93,18,130,185,36,252,29,51,0,26,240,211,251,241,11,52,0,29,16,213,204,10,28,254,45,34,16,12,211,215,244,25,68,71,4,232,251,187,204,54,96,24,215,228,2,220,204,39,54,0,48,12,167,208,255,15,93,72,224,201,214,226,45,59,9,19,10,9,221,218,22,239,8,58,49,0,229,219,18,20,238,33,245,14,30,253,225,236,51,11,238,13,34,233,220,51,5,223,246,18,50,0,246,23,229,213,25,22,252,29,35,221,219,231,245,250,10,73,61,234,227,224,235,18,40,49,26,248,220,217,255,24,32,55,10,4,195,242,77,239,241,40,31,7,32,234,230,253,216,10,72,7,211,255,5,222,237,29,29,243,251,9,197,241,64,4,248,44,240,198,0,37,15,27,31,221,250,12,229,38,26,250,39,27,253,3,230,245,65,254,7,14,207,36,13,206,39,23,237,19,199,8,75,202,239,44,250,3,10,232,245,3,15,44,6,249,216,230,58,18,197,9,65,8,0,242,12,248,246,52,34,41,5,201,240,22,21,64,10,165,0,23,3,11,249,244,178,22,73,226,227,0,4,254,251,31,11,225,10,5,232,17,60,28,244,19,245,11,245,236,60,55,19,234,240,251,7,23,255,35,34,0,0,247,232,222,20,47,81,251,206,14,244,229,235,3,67,40,196,221,44,251,230,23,41,21,236,235,21,43,6,16,22,20,242,247,30,26,4,230,29,33,205,13,22,0,25,255,241,12,9,26,7,200,252,9,247,26,20,4,18,244,228,32,14,239,41,22,11,2,254,229,247,26,13,17,229,243,21,18,49,3,175,231,58,32,245,251,252,250,25,15,14,11,224,216,17,66,25,237,26,15,198,247,56,2,246,50,249,207,31,253,4,47,4,236,5,32,22,231,206,4,31,4,42,22,203,245,249,44,251,213,16,0,39,249,0,32,255,221,220,48,94,9,184,6,18,216,14,27,245,255,39,45,246,197,221,222,40,76,251,32,240,185,7,19,21,31,4,10,30,251,245,30,5,21,248,196,62,61,224,228,249,248,22,28,212,234,228,6,47,7,243,225,215,254,41,241,6,36,213,27,76,241,210,7,2,22,55,242,245,0,14,43,240,10,46,239,246,24,248,223,21,33,2,74,251,142,217,65,83,35,232,201,223,233,41,60,251,40,18,208,216,211,246,48,51,35,18,231,0,240,211,36,36,6,24,236,239,13,0,198,251,88,46,12,224,213,246,250,47,91,242,217,24,208,206,22,42,87,16,223,254,251,244,1,250,26,55,235,226,16,21,4,0,14,5,249,252,26,228,226,50,15,14,19,211,219,247,241,4,26,242,21,8,230,249,254,249,242,7,255,43,245,253,33,226,23,252,25,22,0,254,210,21,40,35,27,253,223,5,251,241,8,17,98,28,195,240,253,213,245,72,42,27,244,201,230,4,47,28,238,242,229,0,29,252,207,228,48,58,247,249,37,219,224,17,249,17,27,233,244,38,15,245,21,241,223,239,61,50,211,239,19,11,252,30,229,213,51,248,237,56,255,207,250,1,19,33,27,38,188,212,88,249,235,56,30,231,238,249,24,28,234,8,28,17,19,246,223,9,18,237,37,30,7,241,229,10,252,53,46,223,223,235,0,255,15,31,45,15,218,4,224,236,40,70,45,14,244,198,233,20,21,6,48,25,218,220,14,35,24,71,17,207,201,2,25,1,22,250,29,58,215,212,0,221,1,32,8,48,244,213,4,23,19,245,237,34,41,13,21,254,213,26,40,224,8,74,55,241,230,238,243,30,43,5,247,15,55,235,202,3,232,1,117,63,173,208,25,16,243,249,49,42,243,8,237,234,18,0,228,39,72,247,227,214,219,40,54,10,31,50,248,212,207,11,31,45,42,5,251,241,217,234,48,52,37,253,217,247,255,7,6,30,0,12,52,213,201,43,251,239,60,254,236,252,250,6,4,15,30,230,232,25,254,234,39,19,193,0,7,13,35,45,10,174,212,40,56,21,20,0,201,250,40,19,40,31,186,224,29,6,7,6,26,16,241,6,8,208,221,15,42,39,0,194,238,18,233,221,19,52,47,254,205,223,247,2,15,26,237,249,23,246,19,7,29,3,219,45,13,251,21,42,29,11,6,210,242,71,65,249,14,46,245,224,247,35,10,0,4,9,235,234,247,233,9,239,226,8,0,255,238,240,214,18,28,194,227,23,31,251,236,20,237,184,29,86,22,15,227,205,34,72,21,8,20,23,13,242,0,31,29,24,252,251,242,254,9,34,40,240,212,27,15,215,14,56,227,211,48,0,212,4,5,16,25,12,237,203,253,28,0,252,32,15,236,251,201,233,38,22,39,11,239,245,251,235,1,24,28,34,240,223,9,13,29,50,28,26,247,219,248,244,42,63,32,28,234,209,231,218,3,92,75,1,206,188,239,250,29,66,19,240,222,210,249,22,248,32,40,246,235,249,16,214,227,25,38,25,236,246,0,23,15,13,243,243,16,12,5,25,0,3,26,240,255,42,15,251,7,25,6,22,0,235,5,245,16,36,255,249,0,8,25,5,233,246,238,254,35,17,8,248,236,0,0,20,0,0,22,30,255,9,12,233,18,24,28,237,196,248,13,15,25,24,22,16,239,230,1,13,30,17,253,251,4,16,0,230,15,29,242,19,34,235,244,2,8,10,4,246,234,18,13,4,10,15,33,17,251,235,231,2,28,24,38,13,227,224,0,11,7,24,28,27,0,221,210,240,32,56,33,253,226,252,8,11,10,234,24,61,15,224,249,2,253,25,26,19,247,242,242,236,5,30,32,14,1,219,235,5,244,252,21,44,3,250,19,248,241,6,7,26,22,253,12,244,225,18,40,27,15,253,7,0,239,254,20,15,8,9,2,38,21,204,223,6,8,12,36,21,9,241,240,245,213,18,71,19,236,250,10,244,251,5,14,32,18,10,232,228,27,29,25,48,1,220,239,243,236,19,34,7,3,0,252,0,0,105,0,4,0,5,0,146,0,39,1,52,8,84,11,196,14,124,16,87,25,40,11,7,32,14,18,14,14,5,3,106,132,143,128,135,147,92,162,137,44,35,35,90,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,146,0,39,1,52,8,84,11,196,14,124,16,87,25,30,15,8,39,16,22,16,16,7,4,106,132,143,128,135,147,92,162,137,44,35,35,90,45,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,146,0,39,1,52,8,84,11,196,14,124,16,87,25,35,15,8,39,16,22,16,16,7,4,106,132,143,128,135,147,92,162,137,44,35,35,90,43,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,146,0,39,1,52,8,84,11,196,14,124,16,87,25,0,15,8,39,16,22,16,16,7,4,106,132,143,128,135,147,92,162,137,44,35,35,90,43,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,20,7,27,0,0,0,1,0,0,0,1,0,1,4,3,1,254,253,1,5,0,246,243,249,1,9,3,245,235,246,0,0,7,255,238,246,0,8,7,240,223,246,9,18,17,255,241,246,4,4,253,252,1,254,7,22,27,4,243,240,243,8,32,31,30,19,251,237,248,16,16,8,11,253,244,1,6,255,8,253,231,222,240,5,21,25,19,238,217,214,227,0,25,33,9,223,215,243,16,35,36,4,233,234,252,10,21,27,25,16,4,241,243,22,32,7,245,0,3,254,248,0,7,254,239,236,249,248,0,11,9,1,218,217,241,7,25,30,8,240,227,245,6,25,25,2,232,245,19,23,12,255,2,252,16,10,254,7,33,24,247,247,254,248,242,6,13,13,6,219,205,236,7,0,241,249,245,241,237,245,252,7,7,8,13,1,245,8,21,9,254,255,252,16,39,46,31,7,253,248,238,246,0,21,40,22,243,229,243,6,4,255,253,250,240,233,246,0,0,240,238,245,253,250,0,255,238,243,254,1,21,24,2,241,244,7,18,22,240,232,17,27,5,249,12,14,5,255,235,243,15,8,1,254,3,11,249,11,27,249,223,222,255,45,36,4,245,240,0,4,12,28,13,23,9,247,249,253,28,54,13,253,243,242,10,15,0,253,250,253,246,226,224,237,238,240,242,236,252,6,231,202,211,251,20,0,251,245,241,0,242,227,3,22,9,1,6,5,8,26,18,250,3,254,38,70,32,5,11,0,6,21,18,8,18,28,33,7,236,237,5,12,254,241,13,240,220,245,23,29,247,229,217,205,254,24,22,254,224,217,233,9,26,244,216,225,1,30,43,17,242,236,224,235,13,23,5,245,0,6,243,4,34,5,0,250,239,14,63,38,12,234,225,14,17,25,15,255,16,8,2,254,22,16,244,225,247,4,19,8,228,240,5,254,220,222,251,15,10,11,240,231,247,252,0,8,254,2,254,251,248,249,6,26,43,7,247,5,1,228,233,8,22,30,9,215,236,22,5,1,11,243,231,241,15,32,20,11,229,200,226,13,41,45,5,219,226,253,45,23,230,0,250,5,21,3,13,255,215,242,24,31,29,3,253,243,227,247,0,8,13,253,239,246,242,225,236,11,40,17,243,235,2,14,255,252,16,21,15,0,248,4,30,36,9,253,255,243,247,13,21,42,27,232,201,222,14,36,1,235,237,237,241,236,3,246,8,13,223,237,251,10,57,30,192,186,246,39,67,38,23,250,218,236,251,35,74,52,2,184,220,34,21,28,31,246,229,224,217,2,36,26,240,222,202,192,5,39,243,228,247,2,231,206,241,242,242,38,31,234,220,219,252,13,17,230,187,225,3,21,37,7,235,220,253,21,253,21,27,11,37,34,2,3,246,9,69,30,3,15,10,24,4,214,249,42,5,250,19,19,2,248,218,249,14,252,253,236,241,12,248,233,226,200,250,40,29,233,223,226,215,248,0,249,251,12,252,244,0,250,10,7,250,7,33,30,255,239,251,13,27,9,250,23,53,41,30,11,200,211,7,12,72,59,243,248,214,229,19,2,244,251,17,10,245,230,248,253,243,0,234,242,3,249,30,39,242,207,209,249,46,43,0,240,243,254,0,7,233,237,42,18,243,244,238,0,2,238,0,27,44,36,225,201,4,10,13,27,255,236,5,255,3,0,254,23,229,208,242,19,51,36,244,174,190,28,61,51,33,244,210,234,229,235,40,72,32,226,193,228,22,36,8,21,38,251,247,21,7,0,9,250,249,13,29,29,27,28,227,179,238,5,255,30,30,236,217,201,192,225,60,61,250,203,206,241,236,240,4,2,21,7,214,245,37,57,11,187,198,16,67,65,18,231,235,9,34,16,231,4,42,54,26,226,230,5,17,22,232,229,42,57,11,249,227,219,247,249,215,238,38,20,238,223,244,10,252,241,0,244,14,36,34,16,208,194,0,36,38,34,5,223,222,229,248,18,39,26,240,240,212,210,249,12,49,62,22,245,220,251,247,254,33,39,9,237,235,223,18,29,17,255,217,212,12,50,20,22,243,210,218,225,44,73,41,233,191,226,8,21,40,25,254,0,243,231,1,249,25,36,238,207,199,235,36,17,13,245,237,241,234,238,22,38,17,0,224,238,10,26,29,1,241,249,255,255,20,37,248,205,248,37,68,47,10,235,202,229,6,19,38,19,228,212,234,248,13,27,4,0,249,240,231,233,14,37,33,213,183,238,30,35,15,30,253,252,216,228,52,96,80,1,185,200,11,56,39,14,2,220,214,248,11,31,43,252,193,210,233,1,10,9,245,221,244,240,226,223,253,57,63,239,187,190,20,54,24,248,239,10,7,240,252,33,44,10,251,246,14,52,5,175,206,37,56,25,249,240,11,21,201,185,30,56,29,251,216,240,34,25,255,223,234,11,28,244,215,3,23,20,23,232,194,245,51,37,252,250,255,7,16,251,1,19,36,11,0,9,39,48,11,233,221,24,49,244,239,244,16,28,218,172,215,251,226,8,2,236,5,224,168,175,223,45,51,2,5,243,237,252,244,3,41,40,48,20,224,212,254,47,67,28,235,233,12,29,38,15,250,242,10,40,234,234,247,28,62,1,190,222,0,23,22,29,14,247,225,201,230,253,41,21,253,204,207,12,34,27,6,241,251,250,12,52,40,2,219,220,2,0,24,71,250,215,237,221,217,249,22,10,245,230,246,245,255,225,185,237,52,41,223,254,17,240,243,255,1,23,50,53,239,215,250,36,51,3,232,11,46,53,14,217,243,22,34,59,31,5,219,222,20,23,17,251,229,238,2,250,252,253,226,247,13,239,184,224,15,29,23,229,202,228,221,206,10,61,34,227,222,215,243,29,31,24,17,47,25,211,214,19,48,48,26,238,235,229,224,14,31,246,231,7,42,28,255,225,195,239,32,29,253,12,45,46,244,187,224,28,82,38,251,29,17,226,219,237,18,29,44,23,244,236,3,32,11,249,209,196,4,45,27,245,234,230,211,211,215,239,12,25,238,185,195,240,30,246,219,3,30,15,228,250,21,4,4,5,23,65,49,242,231,2,39,63,44,2,242,14,49,41,247,10,12,12,253,4,12,13,253,221,246,239,13,15,219,233,238,225,248,5,3,245,226,201,235,0,45,32,249,244,221,208,243,1,44,76,255,185,209,251,2,30,26,10,17,0,230,237,0,2,8,25,23,243,241,9,252,23,34,5,220,232,39,70,47,5,211,213,3,50,67,36,249,238,238,251,0,249,250,7,13,237,231,6,15,248,221,242,11,11,11,248,229,227,238,4,26,13,231,205,217,1,253,15,20,247,245,243,236,252,247,2,20,21,0,245,232,251,0,10,16,2,228,16,35,24,16,235,249,31,16,9,21,11,12,45,71,48,228,171,194,57,123,31,209,200,219,236,0,35,36,2,208,191,221,13,39,251,0,2,240,220,223,244,48,73,6,203,209,248,10,13,28,13,11,21,247,231,245,249,251,8,17,11,250,255,244,217,234,255,13,27,22,254,10,34,5,226,221,1,52,73,44,240,213,216,0,31,56,23,229,247,245,234,244,238,252,26,1,221,229,223,226,252,7,253,227,240,248,234,238,247,13,251,232,242,22,16,1,248,14,24,1,241,247,34,74,71,5,208,185,229,69,116,79,241,213,216,217,11,62,65,13,214,230,14,18,15,242,217,245,29,51,32,247,209,211,251,23,255,233,243,254,11,8,233,205,218,248,8,12,0,255,15,254,243,0,12,0,6,56,50,11,11,1,14,244,234,7,41,47,18,0,244,218,209,222,11,55,28,235,200,201,244,252,253,2,255,245,247,225,201,221,3,0,236,0,16,5,230,221,241,3,8,0,4,8,13,28,28,0,245,3,35,46,35,28,9,5,9,5,0,7,33,41,24,2,253,252,1,6,14,23,5,254,248,248,0,248,241,236,235,0,7,18,251,208,218,235,240,16,35,17,243,239,240,245,10,16,24,35,28,18,229,227,3,18,14,0,0,5,14,23,247,216,227,241,22,37,14,247,218,222,250,243,225,220,0,26,12,240,211,206,0,32,14,231,222,227,251,3,6,4,2,224,226,75,0,3,0,5,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,45,10,0,36,3,3,6,6,6,6,150,125,137,137,150,175,150,125,137,44,30,40,85,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,30,11,0,38,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,51,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,0,11,0,38,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,49,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,8,7,0,4,8,20,20,18,5,21,44,14,3,34,13,8,17,25,21,0,245,239,246,230,239,227,197,186,207,230,252,199,167,241,0,246,7,0,242,23,35,23,255,9,34,33,10,9,0,237,20,29,228,4,0,239,27,1,10,243,41,60,23,43,27,60,30,5,0,4,29,24,5,196,224,7,199,247,35,221,209,245,8,238,207,223,0,20,223,17,21,215,213,197,241,30,224,179,24,16,204,6,2,209,11,37,3,19,30,242,247,45,69,36,30,94,91,34,29,38,34,6,251,31,29,219,214,42,14,225,241,244,11,2,209,220,15,199,156,201,230,207,201,210,227,233,213,229,19,252,218,2,25,11,252,11,40,31,11,45,57,53,52,42,63,77,29,11,45,29,241,7,30,247,232,254,254,247,240,241,248,235,224,234,229,211,215,186,181,214,206,187,214,222,205,239,21,19,24,39,53,65,87,96,94,68,62,71,78,48,33,17,3,8,250,251,231,224,211,204,206,183,183,187,185,170,172,183,178,179,214,226,233,7,27,30,37,49,68,85,87,84,72,78,69,66,67,48,32,37,42,24,11,4,247,229,249,239,217,197,199,217,224,220,217,226,219,216,236,236,222,220,223,246,236,222,230,230,236,4,6,236,251,17,18,14,14,2,30,35,25,47,37,20,55,56,53,56,33,44,59,27,255,8,40,28,241,255,7,213,222,6,10,234,194,192,244,253,184,198,234,201,176,216,27,236,164,249,7,238,9,253,253,250,227,27,60,235,237,25,34,53,46,68,97,41,40,107,64,239,239,12,24,225,211,1,210,184,6,26,0,49,242,249,71,26,12,243,213,218,236,195,216,229,172,165,202,212,255,220,214,46,37,230,24,48,11,6,246,90,106,248,31,62,254,18,47,24,42,5,20,84,28,199,213,252,0,9,248,227,245,210,224,210,197,198,226,236,227,226,219,221,213,244,7,11,20,51,60,12,17,35,48,48,47,50,35,25,38,41,249,255,43,36,8,32,24,2,4,244,13,218,166,196,198,182,172,167,161,174,164,197,238,211,213,0,30,26,33,72,86,73,64,94,88,79,94,70,51,36,18,49,49,254,245,1,254,253,248,240,227,206,224,246,205,199,207,205,207,220,202,204,206,210,239,240,228,235,244,2,15,0,254,15,1,19,37,21,15,22,19,20,35,34,47,47,39,60,64,45,47,46,38,36,21,16,15,249,229,222,218,209,202,219,225,214,211,205,208,229,235,250,10,250,234,1,2,4,253,239,234,2,2,245,250,255,212,206,19,33,249,246,2,251,7,18,28,25,28,33,34,51,50,55,48,52,34,4,33,72,10,248,14,0,3,7,15,13,232,215,248,8,233,184,179,214,196,190,212,188,133,181,250,228,218,235,229,0,58,32,34,20,0,50,94,24,232,19,16,36,15,22,27,68,83,55,80,78,46,58,66,19,27,255,178,210,227,162,178,203,179,196,212,210,248,249,210,232,26,240,216,0,16,2,234,229,14,4,237,9,21,43,46,19,3,58,26,23,84,50,2,38,56,33,10,223,246,250,187,199,249,236,164,211,226,238,20,255,4,15,24,0,244,1,251,226,251,27,7,253,27,22,18,22,25,27,35,253,4,20,236,231,239,234,247,17,13,1,7,253,253,13,8,245,3,252,6,2,231,247,0,228,242,13,252,247,246,238,242,252,236,213,242,249,255,17,13,247,250,22,31,16,13,31,14,32,31,3,7,11,4,6,12,3,251,253,23,251,214,249,5,10,21,15,253,11,32,30,22,17,245,234,253,2,227,204,200,203,201,233,232,207,213,249,246,1,16,244,234,4,18,255,13,12,4,26,31,46,38,41,51,50,46,44,34,28,33,27,8,4,253,248,0,6,249,241,228,235,235,228,228,206,199,208,206,197,211,221,205,210,249,249,251,16,10,17,43,59,56,60,38,31,34,27,33,25,9,1,252,19,26,2,1,32,255,6,6,234,236,247,239,232,204,208,246,236,232,233,236,0,8,0,252,232,234,8,17,238,220,246,8,43,41,33,42,41,53,58,53,32,16,244,244,33,249,194,197,227,241,226,222,220,214,235,12,222,239,227,228,1,17,240,224,245,51,54,4,38,60,58,57,85,56,4,4,37,24,248,209,230,247,246,218,222,247,255,0,250,230,226,230,241,231,165,196,245,183,202,234,246,0,2,44,63,48,8,63,79,27,246,20,53,60,38,25,56,39,24,44,46,12,247,23,41,218,184,221,1,236,220,203,193,188,187,188,199,215,199,202,218,2,248,210,243,245,246,254,251,17,42,47,54,91,77,96,104,93,98,63,34,47,65,5,229,214,214,210,238,0,208,211,232,4,9,0,250,218,225,245,225,185,172,185,186,197,190,212,230,14,24,14,42,47,43,53,64,42,254,5,28,20,239,253,15,19,33,52,50,42,46,51,39,28,11,0,244,250,213,208,233,231,209,219,3,246,225,10,4,250,254,246,233,244,213,194,204,204,209,213,232,253,0,10,43,58,41,48,54,41,38,30,13,11,247,237,1,14,9,15,38,48,34,19,34,34,16,8,6,241,232,230,223,211,205,220,242,232,229,239,247,247,229,238,244,227,226,223,230,227,224,248,29,20,7,34,50,49,51,44,56,41,24,14,24,17,1,240,249,240,231,254,28,22,245,246,2,13,15,3,4,248,211,233,242,232,249,245,247,246,234,242,16,16,237,208,227,254,6,0,232,230,228,246,7,30,13,247,23,48,47,13,3,12,29,26,16,47,32,5,10,32,28,1,7,3,239,238,246,235,189,187,206,224,235,237,242,2,30,26,0,24,32,17,25,17,233,225,202,253,22,231,9,15,19,27,25,36,19,251,250,1,0,225,196,201,213,228,29,9,247,19,38,41,18,15,20,20,2,4,2,253,253,236,10,40,7,0,19,24,8,7,3,1,253,236,1,242,215,207,238,243,250,222,230,14,0,228,252,18,247,227,245,36,245,219,26,41,37,2,4,56,42,9,20,36,0,251,242,1,235,205,217,25,16,228,236,24,40,254,15,35,6,249,5,19,9,220,203,242,6,217,222,3,8,248,17,36,21,246,232,5,10,250,236,228,13,254,231,10,37,12,252,29,47,13,252,14,13,230,216,213,251,9,222,226,5,25,10,8,31,33,9,24,48,5,241,239,4,234,220,215,247,7,0,254,20,20,1,11,20,11,250,239,1,7,231,223,233,230,255,14,23,23,28,19,29,39,254,240,248,245,220,208,210,221,219,227,249,4,8,33,46,57,55,26,25,36,29,254,247,250,243,245,0,253,241,253,21,20,12,1,250,241,247,236,215,212,207,208,224,232,247,255,2,24,32,32,32,26,28,28,18,5,1,247,0,244,0,24,12,8,34,29,10,9,255,252,9,252,231,217,223,233,221,232,241,236,245,25,42,22,10,22,14,243,252,237,238,240,220,215,230,250,247,19,42,33,49,44,49,37,6,223,250,253,228,251,245,243,243,6,24,21,14,18,17,254,9,14,243,221,245,252,238,251,12,248,247,244,245,248,242,235,217,230,238,247,3,14,243,222,5,40,33,22,20,22,22,37,39,21,0,17,22,27,29,3,248,253,235,214,240,9,3,252,232,240,252,222,236,12,241,231,251,11,7,244,238,245,239,250,6,254,252,240,242,13,20,2,10,32,42,24,15,17,22,244,243,7,7,248,239,10,21,15,6,0,26,20,20,21,15,253,224,223,249,239,207,219,232,240,232,233,245,249,253,0,0,12,1,0,19,16,245,240,255,19,9,11,19,16,17,23,29,32,36,26,16,21,6,6,255,238,239,237,230,237,240,229,241,251,0,252,246,238,245,249,240,238,236,227,240,252,2,9,14,12,33,39,26,25,27,23,25,15,4,252,243,255,3,252,254,254,252,3,4,0,251,244,248,244,240,237,236,239,249,252,254,8,9,7,11,5,2,3,1,2,255,251,0,3,2,7,4,13,16,17,12,10,9,3,0,255,254,253,240,238,240,247,251,253,250,251,249,248,5,11,0,246,252,254,251,253,3,5,255,7,16,18,14,8,9,6,7,5,0,1,2,1,254,4,250,248,3,4,6,3,0,253,0,251,255,0,251,249,251,249,241,245,247,242,245,248,254,8,9,1,2,9,6,7,4,1,3,2,0,4,6,5,5,12,15,16,17,12,7,11,2,2,2,252,248,249,248,248,245,239,245,251,252,248,251,252,252,247,245,255,254,252,251,248,1,3,2,6,12,7,3,8,16,14,8,8,12,12,12,4,6,10,2,0,1,254,250,247,249,254,251,247,248,254,252,248,248,254,249,246,250,1,255,252,252,3,9,6,4,5,7,10,6,4,3,3,0,1,2,1,0,3,3,0,0,6,8,6,5,1,255,252,249,253,255,253,250,250,251,252,252,0,255,0,0,0,2,3,2,0,0,254,0,1,1,3,3,2,3,6,5,7,5,2,0,0,255,0,0,252,252,253,0,0,0,0,0,0,1,1,1,1,0,255,255,255,0,0,255,0,255,0,1,2,2,1,3,1,0,0,0,0,0,0,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,3,0,5,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,45,10,0,36,3,3,6,6,6,6,150,125,137,137,150,175,150,125,137,44,30,40,85,53,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,35,11,0,38,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,53,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,17,0,4,0,14,1,108,7,240,10,58,14,136,19,224,21,0,11,0,38,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,30,40,85,53,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,8,7,0,4,8,20,20,18,5,21,44,14,3,34,13,8,17,25,21,0,245,239,247,230,239,227,197,186,207,230,252,199,167,240,0,246,7,0,242,23,35,23,255,9,34,33,10,10,0,237,20,29,228,4,0,239,27,1,11,243,41,60,23,43,28,60,30,5,0,4,29,25,5,196,224,7,199,247,35,221,209,245,7,238,207,223,0,20,222,17,21,215,213,197,241,30,224,179,24,16,204,6,1,209,11,37,4,19,30,242,247,45,69,37,30,94,91,34,29,37,34,6,251,31,29,219,214,42,14,225,241,244,11,2,209,219,16,199,156,202,230,207,201,210,227,233,213,229,19,251,218,2,25,11,252,11,40,31,11,45,57,54,51,43,63,77,29,11,45,29,241,7,29,248,232,254,254,247,240,241,248,235,223,234,229,211,215,186,181,215,206,187,214,222,205,239,21,19,24,39,53,65,87,97,93,69,62,71,79,48,33,17,3,8,250,251,230,224,211,204,206,183,183,187,185,170,172,183,178,179,214,226,233,7,27,30,37,49,68,85,87,84,72,78,69,66,67,48,32,37,42,24,11,5,247,229,249,239,217,198,199,218,224,220,217,227,219,216,236,236,222,220,223,246,236,222,230,230,236,4,6,236,251,17,17,14,14,2,30,35,25,47,37,19,55,56,52,56,33,45,58,27,255,8,41,27,241,255,8,213,222,6,10,234,194,192,244,253,185,198,234,201,176,216,27,236,164,249,7,238,8,253,253,250,227,27,60,235,238,25,34,53,46,67,97,41,40,106,64,239,239,12,23,225,210,1,210,184,6,26,0,50,242,249,71,26,12,243,213,218,236,195,216,229,172,165,202,212,255,220,214,46,37,229,24,48,11,6,246,90,106,248,31,62,254,18,47,24,42,5,20,84,28,199,213,252,0,9,248,227,245,210,224,210,197,198,226,236,227,226,218,221,213,244,7,11,20,51,60,12,16,36,48,48,47,50,35,25,38,41,249,255,43,36,8,32,24,2,4,243,13,218,166,197,198,182,172,167,161,174,164,197,237,211,213,0,30,26,33,72,86,73,64,94,88,79,94,70,51,36,18,49,49,254,245,1,254,253,248,241,227,207,224,246,205,199,206,205,207,220,203,204,206,210,239,239,228,235,244,3,15,0,254,15,1,19,37,21,14,22,19,20,35,34,47,47,39,60,64,45,47,46,38,36,21,16,15,249,229,222,218,209,202,219,226,214,211,205,208,229,235,250,10,250,234,1,2,4,253,239,234,2,2,245,251,255,212,206,20,33,248,246,2,251,7,18,28,25,28,33,34,51,50,55,48,52,34,4,33,72,10,248,14,0,3,7,15,13,232,215,248,8,233,184,179,214,196,190,212,189,133,181,249,228,218,235,229,255,58,33,34,20,0,50,94,24,232,19,15,36,15,22,26,68,83,56,80,78,46,58,66,20,27,255,178,210,227,162,178,203,179,196,212,210,248,249,210,232,26,239,217,0,16,1,234,229,14,4,236,9,21,43,46,19,3,58,26,23,84,50,2,38,56,33,10,224,246,250,187,200,249,236,164,211,227,238,20,255,4,15,24,0,244,1,251,226,251,27,7,253,27,21,18,22,25,28,35,253,4,20,236,232,239,234,247,17,13,1,7,253,253,13,8,245,3,252,6,2,230,247,0,228,241,13,252,247,247,238,242,251,236,213,243,249,254,17,13,247,250,23,31,15,13,32,14,32,31,3,7,11,4,6,12,3,251,253,23,251,214,249,5,10,21,14,253,12,32,30,22,17,245,235,253,2,227,204,200,203,201,233,232,207,213,249,246,1,16,244,234,4,18,255,13,12,4,25,32,46,38,41,51,50,47,43,34,28,33,27,8,5,253,248,0,6,249,241,228,235,235,228,228,205,199,208,207,197,211,221,205,210,249,249,251,16,10,16,43,59,56,59,38,31,34,26,33,25,10,1,251,19,26,2,1,32,255,6,6,233,237,247,238,231,204,208,246,236,232,233,237,0,8,0,252,232,234,8,17,238,220,246,8,43,41,34,42,42,53,57,54,32,17,244,244,34,249,194,197,227,241,227,222,220,214,235,12,222,239,227,228,1,17,240,225,245,51,54,4,38,60,58,56,85,56,4,4,37,24,247,209,230,247,246,219,222,247,255,0,249,231,226,230,241,231,165,196,245,183,202,234,246,0,2,44,63,48,8,63,79,27,247,20,52,61,38,25,57,39,24,44,46,12,247,23,41,218,184,221,1,236,219,203,193,188,187,188,199,215,199,202,218,2,248,210,243,245,246,254,251,17,42,47,54,91,77,95,104,93,99,63,34,46,65,6,228,215,214,210,238,0,208,211,232,4,10,255,250,218,225,245,224,184,172,185,185,197,190,212,230,14,24,14,42,47,43,53,64,41,254,6,28,20,239,253,15,19,33,52,50,41,46,51,40,27,11,0,244,250,213,208,233,231,209,219,3,246,225,10,4,250,254,246,233,244,213,194,205,204,209,213,232,253,0,10,43,58,41,48,54,41,37,30,12,11,247,237,1,14,9,15,38,48,34,19,34,34,16,8,6,241,232,230,223,211,205,219,242,232,229,239,247,247,229,238,243,227,226,223,230,227,224,248,29,20,7,34,51,49,51,45,56,41,24,14,24,17,1,240,249,240,231,254,28,22,245,246,2,13,15,3,4,248,211,233,242,232,249,245,247,246,234,242,16,16,237,208,227,253,6,0,232,230,228,246,7,30,13,247,23,48,47,13,3,12,29,26,16,47,32,5,10,32,29,1,7,4,239,238,246,235,189,187,206,224,235,237,242,2,31,26,0,24,32,17,25,17,233,225,202,253,22,231,9,16,19,27,25,36,19,251,250,1,0,225,196,201,213,228,29,9,247,19,38,41,18,15,20,20,2,4,3,253,253,236,10,40,7,0,18,24,8,7,3,1,253,236,1,243,214,207,238,244,250,222,230,14,0,229,252,18,247,227,245,36,245,219,26,41,37,2,4,56,42,10,20,36,0,251,242,1,235,205,217,25,17,228,236,24,40,254,15,35,6,249,5,19,9,220,203,242,6,217,222,3,8,248,17,36,21,246,232,5,11,250,235,228,13,254,231,10,37,12,252,29,47,12,252,14,14,230,216,213,250,9,222,226,5,25,10,9,31,33,9,24,48,5,242,239,4,234,220,215,247,6,0,254,20,20,1,12,19,12,250,239,1,7,231,223,233,230,255,14,24,23,28,19,29,39,254,239,248,245,221,208,210,221,219,227,249,4,8,32,46,57,55,26,25,36,28,254,247,250,243,245,0,253,241,254,21,20,12,1,249,241,247,236,215,212,207,208,224,232,247,255,2,24,32,33,32,26,28,28,18,4,1,247,0,244,0,24,12,8,34,28,11,9,255,252,9,251,231,216,222,232,221,232,240,235,245,26,43,23,11,23,14,242,252,237,237,240,218,213,228,250,247,20,45,35,53,46,53,40,7,221,249,253,225,250,244,241,242,7,27,23,15,20,19,253,10,16,241,217,244,251,235,250,14,247,246,242,244,246,239,231,212,226,235,246,3,17,241,216,6,47,39,26,24,26,26,44,46,24,0,21,27,32,34,3,247,252,230,204,237,10,4,251,226,236,251,213,231,15,237,224,249,14,9,241,234,242,235,248,8,253,251,235,238,17,26,2,13,41,55,31,19,22,29,240,238,9,10,245,233,14,28,20,8,1,35,27,27,28,21,252,211,211,246,233,187,205,222,233,222,224,240,245,251,0,0,17,0,1,27,23,240,233,255,27,14,17,28,24,26,34,44,48,53,39,24,31,9,10,253,228,230,227,216,227,230,213,232,247,0,249,240,228,238,244,229,227,223,208,230,249,3,13,22,19,54,64,43,41,44,38,41,25,8,249,233,253,6,249,252,252,248,4,6,0,247,235,242,234,226,221,219,226,243,249,252,15,17,12,20,10,5,6,2,4,253,247,255,6,4,13,7,24,31,33,23,19,17,5,1,254,251,248,223,219,223,238,245,248,242,245,240,238,10,23,0,234,247,252,245,249,5,10,252,15,33,39,30,18,21,13,15,12,254,2,4,2,251,9,241,235,6,10,14,5,255,247,254,244,253,0,243,238,242,238,219,227,233,221,227,233,250,21,23,3,5,23,14,18,9,2,7,5,254,11,17,14,14,33,41,43,45,34,20,30,6,4,5,244,231,235,230,231,223,205,221,238,243,229,240,240,241,226,220,250,247,240,239,231,3,9,6,20,37,23,10,25,51,48,28,28,41,41,41,14,19,34,8,254,5,248,230,220,227,246,234,221,224,244,236,224,221,246,225,212,227,3,249,238,234,11,38,27,17,23,30,45,24,17,11,15,0,2,11,4,252,14,12,254,0,30,37,30,24,7,247,233,217,233,246,234,221,220,225,226,231,250,246,254,249,0,12,15,14,0,246,236,251,3,9,23,22,16,24,40,37,50,39,18,3,253,245,245,255,217,221,223,250,252,3,4,0,1,4,8,6,6,254,238,237,238,241,242,234,241,239,241,10,28,26,21,31,19,3,0,245,254,252,244,0,22,16,10,3,19,18,252,0,12,2,241,0,249,241,246,242,252,3,252,246,248,246,251,249,255,2,253,253,6,8,11,3,9,6,0,0,0,90,0,3,0,5,0,4,0,192,0,52,8,128,12,58,14,136,19,224,21,50,9,0,33,2,2,4,3,3,2,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,4,0,192,0,52,8,128,12,58,14,136,19,224,21,40,5,0,26,1,1,3,2,2,1,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,4,0,184,0,52,8,128,12,58,14,136,19,224,21,0,1,0,14,1,1,2,2,2,2,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,80,0,3,0,5,0,4,0,176,0,208,7,184,11,58,14,136,19,224,21,31,8,0,33,3,3,6,6,6,6,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,5,0,4,0,176,0,208,7,184,11,58,14,136,19,224,21,50,9,0,34,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,9,0,4,0,176,0,108,7,184,11,58,14,136,19,224,21,0,9,0,34,3,3,6,6,7,6,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,105,0,4,0,69,0,120,0,0,1,176,4,192,8,4,16,172,18,244,26,30,7,14,17,5,17,5,5,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,69,0,120,0,0,1,176,4,192,8,4,16,172,18,244,26,50,8,16,19,6,19,6,6,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,69,0,120,0,0,1,176,4,192,8,4,16,172,18,244,26,25,7,14,17,5,17,5,5,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,1,0,120,0,0,1,40,5,152,8,104,16,172,18,244,26,0,3,5,17,8,8,2,2,0,0,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,246,10,18,0,246,249,251,254,1,4,3,255,252,253,250,246,249,252,251,248,250,254,254,255,2,10,18,19,14,8,2,255,252,246,245,252,6,12,7,2,255,246,245,248,248,245,252,9,5,245,238,245,251,250,250,5,17,18,10,0,251,250,253,255,255,0,7,10,6,1,2,7,10,10,10,13,13,4,249,241,243,251,252,252,8,27,32,21,9,6,9,0,242,237,241,246,250,0,6,9,15,22,20,5,247,243,249,248,235,236,255,15,14,5,9,14,12,7,255,248,244,240,239,241,242,247,2,16,22,16,10,4,246,229,219,223,236,247,0,10,21,21,12,9,8,2,0,2,5,1,248,240,241,255,14,22,28,31,28,21,11,249,229,230,246,253,255,14,33,31,11,7,17,6,234,226,243,1,0,245,245,0,7,7,4,0,0,7,12,3,245,239,247,252,249,247,250,0,11,20,7,239,234,243,247,242,247,255,255,254,7,5,241,226,236,3,8,251,251,14,24,7,241,232,243,254,0,0,1,12,25,24,254,234,249,6,0,247,247,2,11,4,0,2,0,2,13,16,9,5,5,5,1,253,2,10,9,14,23,23,16,9,3,5,4,254,250,252,6,17,10,253,251,2,6,255,243,246,7,12,1,247,248,254,1,250,241,241,250,2,5,255,252,255,0,1,252,244,248,5,10,3,0,3,9,8,254,255,14,13,252,239,242,251,0,249,239,249,14,21,12,5,0,246,241,242,244,232,221,243,18,17,247,242,9,20,0,239,247,0,242,236,253,0,252,5,35,48,32,16,20,27,16,0,252,253,2,12,11,3,5,7,0,247,247,243,239,241,234,223,229,249,253,248,0,18,24,12,3,250,241,246,9,17,19,29,35,20,7,0,243,232,242,0,4,3,7,11,6,0,5,10,5,0,5,9,0,241,232,246,10,9,253,252,0,250,232,218,210,207,217,238,248,241,250,14,20,6,0,11,15,6,0,0,6,11,15,17,16,20,27,23,7,255,10,16,3,249,2,9,1,0,6,7,5,12,18,2,242,242,247,246,241,239,249,4,15,13,252,249,6,8,252,248,0,6,8,14,17,9,9,17,25,20,3,254,4,0,246,233,228,242,251,249,249,0,7,4,1,0,251,248,250,247,244,247,251,255,0,0,2,4,5,3,253,245,244,246,242,240,251,3,4,5,5,2,0,0,3,5,0,254,4,5,254,250,1,11,20,22,17,11,2,248,242,239,238,242,0,10,15,15,3,252,1,4,0,254,5,16,17,2,243,239,244,254,10,14,8,12,19,2,238,229,232,247,4,7,12,18,15,5,255,254,0,2,5,13,15,3,250,250,245,242,249,253,0,8,12,9,0,250,254,252,249,0,9,14,18,21,16,8,9,6,250,242,252,9,0,247,251,253,1,0,239,224,237,2,3,248,244,0,11,7,248,235,240,4,16,2,242,250,16,17,245,225,242,17,21,0,247,254,7,4,240,228,236,255,12,12,254,253,12,18,252,222,222,253,18,2,235,244,18,19,249,239,253,14,22,27,23,3,0,12,13,3,250,3,34,47,27,13,15,10,250,234,233,243,249,249,3,13,4,253,253,250,250,246,246,255,2,252,253,0,249,248,0,6,11,15,17,14,6,0,253,250,1,13,21,25,29,29,15,248,244,253,245,233,240,0,1,248,248,0,0,252,0,4,254,250,3,0,234,233,253,7,2,252,11,25,13,254,248,248,248,250,250,238,235,255,10,0,244,249,8,15,1,237,233,246,0,245,227,237,16,31,6,241,255,25,30,5,241,1,26,23,1,243,240,247,2,1,255,7,20,22,3,240,244,0,252,248,6,24,34,28,2,233,240,10,13,250,254,29,38,3,233,236,242,245,1,23,20,7,18,18,237,206,224,5,7,255,15,36,21,238,221,226,227,228,243,4,19,24,11,248,232,217,228,248,6,27,40,32,15,8,3,243,238,254,12,14,13,14,2,240,240,250,237,222,236,254,244,221,223,240,241,235,244,1,12,20,25,23,17,19,22,9,0,1,4,10,17,16,13,22,34,21,243,231,245,250,240,235,248,17,27,16,4,7,20,18,255,247,4,14,1,246,253,5,14,19,14,18,27,22,13,5,253,247,246,246,248,250,253,254,1,6,5,0,247,241,242,242,245,253,0,2,10,16,10,253,248,254,0,253,247,249,3,3,247,241,252,3,2,255,4,13,8,252,246,240,234,235,244,243,241,3,22,18,7,1,3,0,248,248,249,251,7,20,16,4,5,14,9,252,244,248,2,1,247,247,254,2,2,249,251,10,16,3,253,252,254,0,253,243,248,12,25,19,7,255,0,7,252,235,242,3,9,5,5,18,17,0,255,8,0,245,253,14,10,255,0,4,8,4,246,235,232,234,227,227,232,230,240,251,251,243,235,229,230,235,230,234,247,252,2,7,5,6,7,6,8,7,1,7,25,20,2,6,26,35,27,18,26,36,30,10,2,3,5,1,0,2,4,14,19,8,250,246,254,0,254,0,14,22,19,23,19,5,254,6,16,9,9,22,39,35,13,9,15,9,250,237,235,242,254,253,240,238,254,15,7,243,244,2,1,244,238,243,248,254,245,236,246,253,247,245,249,244,233,235,234,229,232,241,246,242,243,7,17,0,243,1,16,10,3,7,11,15,21,16,248,239,3,12,0,253,6,16,15,9,6,255,249,1,14,6,252,4,14,6,252,247,250,254,250,252,0,6,9,0,237,254,36,26,252,0,22,25,250,218,218,243,13,20,6,252,14,34,4,211,202,241,11,241,194,193,230,251,236,208,208,255,45,49,24,1,9,34,31,243,205,237,49,73,38,17,47,66,38,241,211,227,243,244,234,230,237,249,255,247,251,18,39,47,42,32,18,252,216,193,201,221,241,3,29,58,61,40,15,0,246,236,233,232,239,4,10,250,240,252,10,19,27,34,35,34,22,253,214,191,199,220,224,230,8,48,54,34,15,3,249,236,228,233,245,12,27,20,9,14,22,12,1,10,23,26,18,8,251,238,234,230,223,229,253,19,18,11,20,26,6,237,235,245,239,227,234,0,9,7,6,10,9,1,254,248,235,237,253,4,251,253,13,17,3,252,0,3,252,251,250,240,234,244,253,248,247,6,27,35,23,9,2,254,242,231,233,243,9,35,48,44,33,30,26,0,232,236,0,4,248,255,15,17,7,255,2,14,14,6,1,255,250,254,255,244,235,244,5,6,242,235,255,11,251,240,248,0,248,239,234,233,237,245,248,242,238,4,20,7,246,253,22,25,2,232,222,230,235,228,226,242,7,27,30,10,1,2,248,228,227,231,214,208,239,11,12,4,37,64,34,249,239,246,238,230,240,2,18,17,21,43,48,27,17,54,72,36,255,247,252,241,237,255,11,27,52,70,50,5,244,245,245,226,201,215,247,2,240,233,252,5,5,9,15,6,248,2,12,253,235,252,29,38,25,15,23,35,19,247,238,251,1,247,240,249,6,9,8,14,16,6,253,246,236,219,209,208,214,223,231,238,251,12,20,6,0,3,5,255,238,230,238,4,0,228,237,13,32,18,253,1,18,16,250,229,231,244,254,1,0,10,18,30,40,31,14,20,36,22,251,245,0,6,3,12,32,39,36,27,22,10,250,240,238,244,251,245,240,249,249,238,255,15,0,252,23,39,5,220,218,253,21,251,227,4,53,52,248,201,207,241,5,251,236,239,8,31,4,205,173,211,26,35,250,246,24,26,232,175,167,215,3,253,244,8,32,17,214,160,156,200,249,11,15,24,52,59,11,211,202,9,60,47,31,53,78,57,7,248,16,51,62,57,50,36,15,232,197,186,190,226,16,33,33,45,62,36,239,209,218,237,226,209,224,1,20,11,6,22,53,60,37,20,23,32,13,231,222,243,255,242,241,6,28,36,35,30,21,8,246,225,211,201,207,226,244,0,13,21,13,2,248,234,237,246,242,232,237,252,255,243,234,250,21,30,21,20,30,29,7,241,236,247,3,14,14,13,22,17,255,235,229,236,248,5,10,8,7,11,8,237,216,231,251,252,246,1,12,0,241,243,249,244,246,13,24,6,246,254,2,241,230,249,18,31,31,31,31,19,254,246,245,245,4,25,28,22,30,30,16,3,0,255,6,19,16,255,252,3,0,239,234,255,19,17,10,13,16,4,245,235,231,236,248,7,14,0,241,251,251,217,190,214,253,4,244,248,7,2,228,201,194,216,247,2,251,0,21,23,253,229,234,248,4,17,10,247,255,22,11,213,191,235,11,246,228,0,20,2,249,244,229,218,243,27,28,10,22,53,60,27,249,252,40,64,28,8,43,73,32,225,231,13,8,246,16,55,50,38,41,24,248,227,230,240,246,246,252,17,35,31,9,8,17,3,242,252,5,251,247,17,29,2,240,1,10,250,235,245,4,14,7,246,237,242,245,239,241,247,244,236,238,236,212,194,211,233,241,252,14,22,17,10,2,246,240,251,1,253,251,6,11,1,246,245,249,253,1,10,18,10,253,5,12,255,235,238,12,28,7,254,17,33,26,4,0,10,14,9,0,253,248,248,0,2,7,15,29,38,21,3,6,5,240,238,10,20,15,26,36,19,253,11,19,248,237,4,25,12,242,242,251,240,229,239,247,249,12,25,10,250,246,250,243,226,225,247,8,254,239,0,27,18,252,1,17,0,232,222,223,228,229,224,212,209,240,248,200,181,230,7,239,207,193,192,197,202,228,2,11,60,127,111,34,249,0,255,232,216,248,57,86,72,48,38,34,12,246,243,252,1,1,250,230,219,225,236,254,15,42,72,67,42,20,253,234,231,238,247,11,39,59,54,32,28,33,8,246,251,3,6,8,7,11,19,17,7,5,4,7,8,1,252,250,244,233,215,200,203,215,215,218,242,14,24,15,5,2,251,240,233,231,237,0,19,15,4,10,20,16,3,9,29,28,8,2,7,253,242,247,251,253,3,19,32,23,252,243,252,245,217,215,247,10,0,251,2,6,251,237,232,235,247,4,10,11,8,4,2,2,6,6,2,5,24,38,30,15,9,14,9,254,252,3,4,2,12,17,2,251,0,253,242,241,242,236,227,228,236,245,247,255,13,26,16,247,243,252,234,207,212,243,2,250,247,8,19,10,1,254,250,252,0,0,247,250,3,10,8,4,12,25,30,21,250,231,238,243,226,214,237,15,24,5,248,0,9,0,232,212,226,1,5,242,233,237,237,244,252,240,233,10,55,45,1,7,34,17,246,1,32,48,52,60,53,31,15,12,1,239,229,242,253,253,240,228,243,2,254,254,12,13,254,245,240,237,239,244,1,22,45,52,38,33,43,40,10,249,12,16,246,233,248,5,6,14,27,31,37,38,19,245,222,216,223,232,227,230,249,4,253,233,232,235,230,240,0,255,246,253,7,240,214,224,248,0,253,6,25,26,12,254,250,249,246,248,2,19,25,10,1,7,5,247,244,4,10,4,11,30,25,254,249,7,5,250,248,4,10,7,4,8,3,247,246,0,252,255,17,25,14,5,7,5,244,239,251,255,253,9,17,3,8,28,11,233,235,6,6,235,232,254,5,254,255,254,250,251,7,4,233,214,238,3,241,217,227,246,248,251,253,248,0,28,38,0,209,217,243,225,190,204,246,6,5,16,15,246,245,17,21,249,0,42,51,8,237,252,10,254,242,1,24,36,39,34,18,2,4,11,254,230,218,233,249,241,237,250,13,29,41,39,24,10,4,244,226,228,248,1,5,26,51,52,42,38,37,30,20,2,241,236,238,238,233,237,4,29,37,29,26,24,7,244,229,223,222,228,238,242,247,1,16,18,7,7,16,16,10,3,0,3,6,0,250,252,0,0,0,0,1,12,11,1,255,1,254,244,240,246,248,247,250,0,2,250,241,244,252,248,239,243,0,7,2,250,252,0,247,234,234,246,251,249,0,10,9,255,250,247,243,245,253,5,10,7,2,250,240,235,234,241,4,32,45,38,24,15,1,233,214,225,253,12,18,27,40,45,31,5,251,5,15,5,249,0,6,248,235,242,254,4,17,29,24,14,16,13,242,213,212,226,232,232,238,250,6,17,11,244,227,231,241,241,232,231,244,7,8,243,229,239,4,15,7,4,25,51,41,0,234,242,251,248,245,5,26,34,35,26,8,0,7,21,14,2,2,16,15,245,221,234,6,15,19,34,45,36,20,10,251,219,210,242,16,4,2,38,59,28,252,1,16,2,245,7,25,16,3,6,9,253,244,254,13,17,12,5,3,249,233,222,226,236,234,222,225,237,239,223,210,220,231,235,239,241,238,239,241,236,224,215,217,225,231,230,234,0,0,12,8,12,0,14,17,18,23,26,28,26,33,33,28,29,28,29,28,26,25,24,26,25,23,13,15,12,9,9,6,9,12,12,13,15,14,14,16,20,25,27,27,28,28,33,37,40,37,42,40,38,36,41,41,38,38,39,41,40,42,44,40,37,39,40,36,37,34,32,31,33,31,30,28,27,22,19,17,14,15,12,12,15,15,17,18,19,14,12,14,18,21,23,24,25,27,26,27,26,28,23,18,18,15,14,8,3,4,5,1,8,248,0,178,140,255,16,1,251,245,245,245,239,226,221,249,31,37,28,33,28,31,38,43,44,49,55,52,43,43,39,41,30,29,23,25,23,21,10,6,10,3,3,0,2,3,11,11,7,240,202,209,221,230,252,13,19,14,250,9,219,164,223,255,242,234,247,246,247,250,247,255,214,197,207,206,226,238,6,14,25,40,51,58,37,11,3,7,8,2,224,231,31,56,68,76,86,82,81,65,53,57,65,34,19,51,54,62,60,41,36,22,12,248,239,235,250,250,254,11,15,28,41,48,45,37,39,24,12,253,0,29,44,54,62,65,67,59,50,40,41,41,30,35,46,55,69,78,73,68,65,56,46,42,30,22,18,18,27,254,233,4,26,27,7,0,240,233,223,213,217,235,249,0,13,19,25,33,25,30,32,32,39,33,41,51,58,66,67,74,78,76,72,59,50,38,35,36,38,36,33,41,39,34,29,10,253,239,226,217,215,228,233,238,239,246,251,243,248,245,250,253,4,12,19,32,44,51,58,62,66,70,68,60,44,28,19,19,22,22,21,24,31,18,15,15,9,10,4,5,6,9,19,17,18,24,25,17,8,8,10,9,5,253,255,253,7,17,18,15,14,14,4,4,12,19,30,22,17,24,26,22,20,21,23,20,17,14,6,4,6,15,14,24,27,21,19,17,21,18,22,20,20,31,26,24,30,36,28,27,31,28,20,15,11,11,3,254,6,8,19,21,20,24,23,16,12,15,19,29,35,34,31,34,37,35,30,22,21,17,19,10,0,252,247,247,247,243,236,232,232,231,234,239,246,241,240,243,252,9,14,9,2,1,255,248,246,244,248,0,4,2,1,2,0,6,6,6,9,10,9,11,15,23,33,29,18,21,20,17,19,13,7,8,3,3,7,11,16,15,22,17,19,19,26,32,32,30,38,39,39,45,50,44,41,39,21,24,30,31,30,25,24,28,27,22,18,20,23,23,20,25,33,39,45,44,41,36,37,35,30,28,14,7,4,0,1,254,0,5,2,5,2,6,8,10,19,25,33,30,31,37,40,49,49,53,49,46,45,40,37,31,27,26,22,26,26,22,11,1,0,7,10,10,7,7,10,10,3,7,12,13,13,22,26,27,26,29,31,33,41,43,44,38,36,36,30,31,30,21,28,35,29,28,32,29,21,11,11,16,14,15,15,17,16,18,22,25,32,31,26,27,29,26,30,31,27,23,22,22,21,21,14,15,19,18,11,8,13,20,24,28,37,41,45,38,32,23,29,35,39,44,44,42,31,28,34,39,40,39,31,27,26,28,29,25,27,21,23,17,18,14,21,22,12,15,26,36,39,34,34,42,45,50,49,46,51,58,53,46,43,45,47,39,40,42,35,29,20,17,14,12,10,12,17,20,32,41,44,40,35,30,24,21,15,17,20,24,20,21,24,20,20,20,18,20,18,16,11,20,27,37,37,39,43,47,40,30,23,20,21,15,14,6,5,6,14,15,14,12,14,16,21,23,21,22,25,32,30,30,24,18,11,10,3,2,0,3,0,253,4,10,13,14,13,10,9,7,3,4,15,27,31,30,25,27,29,33,30,23,19,17,14,8,8,9,18,22,20,25,26,20,11,4,8,8,4,255,251,0,0,1,2,254,250,251,1,5,7,7,9,18,25,26,33,38,38,43,47,47,41,46,47,43,45,40,34,28,22,22,16,17,15,11,9,9,10,8,11,15,19,20,22,16,6,12,19,18,20,21,22,27,28,34,34,31,21,14,9,8,5,0,1,4,10,11,14,15,8,4,4,3,5,2,0,10,6,12,18,19,11,6,11,10,6,7,8,7,16,18,21,22,26,29,24,16,19,21,15,10,11,20,22,18,10,11,18,21,19,6,2,6,12,8,13,21,28,31,31,25,30,30,34,35,34,33,33,36,37,39,42,43,43,36,27,23,20,17,13,11,10,15,11,9,13,17,21,22,21,20,23,28,24,27,31,37,47,50,47,40,34,31,21,18,13,12,10,9,5,7,7,8,9,15,13,8,3,10,22,21,18,20,27,34,34,35,36,39,42,42,31,32,32,38,36,37,37,36,32,22,20,17,14,19,20,20,19,19,15,16,15,17,24,28,30,29,26,25,30,32,38,43,47,48,48,41,43,44,43,42,39,36,39,32,34,30,27,30,29,19,13,8,5,2,5,4,0,5,4,0,251,255,0,5,8,8,12,13,12,14,11,8,12,14,12,10,7,11,9,4,4,12,16,16,12,5,5,8,8,10,8,6,10,15,18,16,19,19,15,16,16,13,9,9,7,10,13,14,15,18,26,25,26,29,28,28,33,26,24,22,29,32,27,25,25,27,29,31,30,26,27,22,19,20,22,23,23,23,26,27,25,22,20,17,19,17,20,20,17,19,17,15,11,13,12,11,9,4,4,6,9,9,13,19,22,21,15,11,14,26,31,36,30,28,30,32,29,23,18,13,11,6,1,254,252,252,255,255,3,2,2,3,7,10,9,11,18,25,28,36,35,32,34,38,38,39,33,29,31,29,23,17,14,11,10,13,9,3,1,4,6,8,11,10,9,7,8,7,16,16,13,13,10,12,16,16,12,9,13,10,10,8,13,10,10,12,12,17,17,19,19,20,25,22,25,25,28,26,21,15,8,3,4,6,8,4,253,252,0,0,255,253,253,0,5,10,9,6,6,6,14,14,13,9,6,12,12,15,14,11,9,10,14,15,17,20,23,26,31,37,37,37,34,38,40,40,35,32,29,25,26,20,18,15,10,15,15,15,13,11,20,16,14,11,15,20,25,24,25,26,28,30,29,34,31,27,26,25,26,25,21,14,13,10,12,11,8,7,3,1,4,8,8,8,7,4,6,6,10,12,21,22,21,23,17,17,21,24,25,26,24,20,21,23,26,26,23,17,18,13,16,21,20,16,15,15,16,12,14,10,14,15,14,11,9,7,8,7,13,11,8,8,9,11,14,13,17,17,22,22,22,22,20,11,11,10,11,18,11,6,7,6,6,9,7,8,5,4,9,15,15,18,17,20,21,26,29,26,24,25,28,25,24,23,22,19,17,16,16,13,9,8,8,9,14,18,21,23,23,22,25,31,34,33,35,39,40,39,37,37,38,40,36,33,30,26,25,20,17,12,13,16,20,14,11,13,9,16,13,11,13,13,16,18,20,19,22,25,21,23,23,19,17,15,20,22,25,26,26,26,27,26,26,26,25,16,15,16,17,20,17,15,13,10,8,7,6,2,5,5,2,5,7,12,15,13,14,17,19,20,19,23,20,20,21,23,25,28,25,25,18,20,17,16,10,12,11,8,10,10,7,8,13,13,13,15,16,21,15,16,19,26,25,28,31,29,32,33,32,28,26,20,16,19,16,14,8,13,11,6,4,6,9,9,9,7,10,9,7,15,13,19,24,25,25,28,25,24,24,28,29,27,24,24,22,22,22,15,19,16,18,14,15,17,17,18,17,17,17,19,19,21,20,27,26,25,23,24,23,27,27,35,32,34,34,32,34,32,32,33,32,32,29,31,29,29,28,26,24,23,21,19,18,18,22,23,21,21,20,22,20,25,29,27,24,26,25,24,25,26,26,27,27,28,23,21,18,14,18,16,19,18,19,18,20,17,17,17,16,20,18,16,16,17,15,17,15,12,13,11,15,19,43,39,17,19,17,22,25,22,28,44,36,26,21,25,17,20,15,14,9,4,6,6,1,3,10,9,10,8,9,12,14,11,13,13,10,11,14,15,15,18,22,25,24,26,33,33,37,42,46,48,48,48,43,48,46,38,40,40,42,43,41,38,35,32,25,25,22,20,18,20,19,20,19,19,25,20,22,20,19,16,19,17,19,20,21,18,17,19,20,21,20,21,19,19,21,15,19,20,20,21,23,21,22,17,16,15,19,13,11,12,14,15,16,15,17,20,19,19,17,15,20,20,20,22,26,32,34,32,29,30,25,26,28,27,27,27,27,25,23,22,21,24,20,19,14,14,13,13,12,11,13,12,12,12,10,6,5,8,7,6,4,9,10,13,15,13,12,10,12,15,14,17,16,14,18,21,20,24,25,25,25,28,32,30,27,26,26,26,27,25,26,26,28,26,22,21,20,16,15,18,13,14,15,19,22,21,22,22,25,26,27,28,28,23,28,31,32,32,34,32,32,33,35,31,29,27,27,26,28,29,25,25,26,24,25,25,22,23,25,25,26,24,23,27,29,26,26,25,22,22,26,25,27,27,29,28,30,31,29,28,29,30,30,31,30,29,25,29,29,30,29,27,27,24,23,23,22,20,16,17,18,17,16,17,16,12,14,15,15,13,12,13,14,19,20,22,18,15,19,20,20,23,25,21,26,22,25,27,26,23,25,21,23,20,20,19,16,18,16,14,19,14,12,14,12,11,8,8,11,13,13,11,66,4,32,0,3,4,3,4,3,3,3,4,3,2,3,3,1,2,1,2,1,2,0,1,0,2,1,2,0,2,0,3,254,3,198,132,211,3,9,250,251,8,20,21,7,0,6,4,2,6,19,13,2,251,253,6,13,12,14,14,9,245,190,196,229,245,251,251,1,235,150,135,155,167,164,155,173,213,244,247,249,248,239,238,255,33,62,60,36,18,8,30,64,70,58,50,41,29,50,80,86,68,45,34,43,60,63,47,22,253,244,240,246,243,227,208,201,210,227,240,240,231,225,225,231,236,242,239,233,230,235,245,2,12,17,21,30,51,75,80,78,78,77,76,70,64,49,34,26,23,28,32,28,24,23,25,24,23,24,28,32,31,33,30,24,17,9,10,13,4,254,251,250,5,13,21,26,23,21,23,32,35,30,27,34,45,50,38,33,34,32,31,31,36,39,37,33,33,30,26,19,17,21,17,1,250,250,0,5,0,253,5,13,14,12,18,34,26,13,7,3,2,7,255,245,244,249,4,19,26,15,7,27,51,53,45,30,23,13,0,244,240,249,4,10,15,28,32,24,10,12,27,33,30,24,22,17,4,3,19,27,14,4,6,12,17,24,22,21,27,30,22,15,14,7,8,9,252,0,7,8,0,243,243,247,250,0,4,12,21,11,6,13,12,2,244,241,254,12,9,243,240,0,3,0,252,0,5,18,29,33,36,32,33,25,18,14,9,8,250,240,251,16,14,4,14,21,26,28,8,252,249,243,232,216,215,231,237,240,251,252,248,10,23,25,21,0,236,227,248,5,4,9,21,18,12,16,16,2,11,37,32,14,5,253,249,0,10,8,11,37,38,27,31,27,13,0,3,9,9,255,220,210,226,248,253,249,231,227,245,8,21,5,246,0,9,36,59,39,21,17,24,33,27,0,249,1,1,1,0,253,5,18,10,13,16,10,5,255,3,12,17,25,18,14,20,18,9,251,233,219,228,251,251,237,230,233,245,252,245,229,222,228,246,15,49,43,23,32,47,54,40,20,16,18,24,8,237,254,18,21,40,57,63,52,33,23,10,21,14,245,245,9,3,244,6,35,43,25,12,5,12,16,5,252,242,230,218,219,243,247,237,253,13,16,14,19,16,17,30,37,31,28,32,46,65,62,39,19,25,38,20,247,247,1,253,236,219,236,255,253,3,1,14,28,5,249,255,247,247,252,4,19,20,255,248,243,1,8,255,4,15,21,28,40,47,35,13,246,239,254,12,255,250,14,42,56,57,44,39,43,37,30,19,6,248,235,232,209,171,194,208,234,247,6,12,14,36,46,37,33,37,43,35,32,18,6,29,49,27,254,244,254,14,17,27,37,35,16,10,18,14,0,246,255,9,19,21,251,243,255,24,37,30,24,16,13,3,255,250,242,234,227,225,208,206,226,241,252,3,13,24,15,10,17,32,43,42,31,39,43,27,11,10,17,10,6,9,8,11,15,7,0,1,254,255,7,3,255,1,1,3,6,7,247,242,252,0,0,251,255,5,2,254,245,227,224,246,5,14,10,0,7,6,6,12,21,29,19,2,5,17,27,20,7,1,7,15,15,9,4,3,3,251,0,249,241,233,226,226,234,238,234,222,234,245,245,243,247,255,255,253,1,1,3,248,247,1,2,7,1,0,0,255,2,12,18,21,27,19,5,8,6,253,255,4,8,7,3,1,2,3,3,7,9,10,7,252,255,0,251,247,240,237,247,254,251,252,5,11,7,255,250,247,247,252,6,4,248,247,2,11,13,3,4,16,15,10,2,252,2,8,7,5,251,245,0,14,19,14,6,10,13,14,3,250,250,2,12,13,19,16,2,0,14,17,13,3,249,251,12,13,9,8,6,10,17,24,17,251,237,248,4,251,245,241,241,247,245,248,1,3,0,1,12,14,8,254,3,11,0,244,239,242,251,253,253,253,247,244,254,4,11,5,2,4,9,9,9,12,14,13,3,4,12,12,4,250,254,255,0,6,3,1,253,244,249,5,1,255,0,11,25,31,20,6,2,4,6,7,9,0,253,5,26,30,22,20,16,15,17,20,19,22,20,7,9,22,15,252,243,253,17,20,8,1,2,8,6,10,12,7,1,0,2,9,9,7,9,20,28,29,24,16,15,21,24,25,13,252,252,4,6,0,241,244,1,4,2,254,255,6,12,10,13,15,12,7,1,5,7,255,246,249,2,1,250,250,5,22,17,8,7,15,21,18,25,28,34,34,27,23,22,21,13,4,1,5,254,244,250,5,12,10,8,20,29,23,15,12,17,21,15,6,4,7,5,252,251,254,255,1,3,255,250,243,237,244,252,1,3,4,10,16,22,32,34,23,15,17,20,15,4,253,253,1,1,1,6,13,21,17,17,22,17,12,15,16,12,11,8,3,255,0,2,6,9,13,14,12,14,13,9,1,249,247,250,245,245,246,254,6,9,8,14,17,13,12,5,7,15,11,9,9,0,0,40,3,18,0,12,12,4,5,19,13,14,10,10,6,248,247,255,253,11,6,6,4,3,208,162,133,132,159,181,210,239,19,21,3,250,11,17,15,15,23,30,31,31,27,13,4,248,245,6,27,50,59,62,60,57,58,59,66,66,61,59,53,31,17,6,252,8,11,15,5,218,214,202,179,177,193,224,232,227,247,248,231,231,238,244,255,0,5,11,12,15,16,16,18,14,13,14,14,21,23,22,26,31,34,33,38,43,44,47,41,39,39,37,42,30,33,32,29,29,22,14,9,250,245,0,1,0,12,19,29,21,21,27,22,12,14,242,254,22,18,5,255,9,20,14,5,12,21,24,21,15,25,36,32,37,42,49,50,47,41,45,47,41,34,31,31,36,29,27,26,28,32,28,25,24,21,22,21,15,10,11,16,11,10,10,254,250,254,3,2,2,4,8,12,16,20,19,22,32,37,42,41,37,40,42,45,44,38,33,34,35,34,37,35,34,32,27,19,22,18,16,14,254,252,0,249,4,23,23,18,11,9,8,4,6,11,20,28,32,34,41,44,41,36,32,32,27,22,21,25,30,38,40,36,41,32,19,9,8,8,8,11,11,12,13,5,9,12,8,6,253,248,248,249,252,5,15,20,22,23,28,23,15,17,22,30,28,27,30,38,46,50,45,42,37,34,24,22,23,18,14,14,13,6,3,250,243,244,248,251,247,248,248,250,255,11,25,24,19,16,9,0,6,31,38,32,31,34,29,32,38,41,32,21,12,12,3,0,253,0,3,11,11,4,1,10,13,19,22,20,23,23,27,27,25,21,12,11,20,35,51,52,31,9,253,247,246,254,6,5,254,247,249,253,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,3,26,0,9,9,9,9,10,9,10,8,9,8,10,8,7,9,8,7,7,7,9,7,6,8,7,6,8,7,7,7,6,3,5,2,8,2,4,206,151,181,217,246,5,0,244,159,133,202,252,16,14,16,12,15,15,12,23,27,27,27,28,30,31,22,21,24,16,17,19,20,233,187,188,195,200,216,246,6,8,14,18,24,19,7,254,248,203,165,164,177,198,214,228,2,27,46,50,52,57,49,46,49,51,43,37,42,50,58,64,66,62,49,37,28,24,18,5,247,241,238,239,243,248,251,252,253,2,7,11,14,13,15,10,8,9,7,5,252,246,248,253,6,12,22,31,41,45,53,64,66,61,55,45,41,38,36,33,33,33,32,35,41,44,44,38,31,29,26,18,10,9,8,0,0,4,9,11,15,15,18,15,17,15,7,2,255,254,0,0,3,1,7,13,13,21,22,19,13,16,18,17,22,18,19,14,7,1,9,241,195,217,243,253,11,12,5,4,253,238,245,254,255,9,33,37,35,39,33,28,34,44,46,52,44,31,23,21,6,255,0,255,2,20,32,33,36,32,22,14,11,0,251,250,254,250,0,251,242,239,224,224,235,0,29,42,31,15,254,229,222,239,8,22,37,36,29,39,42,22,11,19,22,27,32,26,4,243,250,9,29,41,33,18,17,9,252,237,248,3,6,0,251,255,13,27,16,11,6,251,247,0,17,18,9,13,29,39,35,9,254,244,243,252,3,19,9,253,6,18,29,36,26,21,24,22,15,20,19,9,1,13,37,35,36,11,5,25,5,251,254,0,252,248,250,242,246,4,15,31,31,16,6,246,7,18,21,30,23,34,33,28,23,16,15,22,30,43,23,253,249,249,249,254,26,41,57,29,251,3,15,12,0,10,8,9,11,254,0,7,0,249,255,252,248,239,236,238,246,4,251,1,11,9,242,238,9,34,35,1,0,29,8,6,8,255,3,26,35,25,44,19,196,185,231,223,229,15,20,249,247,10,2,1,33,39,6,4,33,22,4,15,16,9,18,32,40,40,37,19,12,16,6,249,252,26,30,8,255,2,7,20,37,40,26,5,255,253,8,16,12,0,0,6,3,3,3,6,255,255,3,1,255,6,7,8,14,14,12,18,21,9,1,5,11,10,7,12,22,23,20,18,11,7,9,10,20,11,0,0,10,18,19,9,4,11,19,21,20,11,5,248,244,249,10,26,21,17,10,3,7,14,3,252,1,4,253,253,7,10,18,24,30,30,10,251,251,3,13,6,0,0,255,5,21,39,43,17,249,253,11,8,255,252,3,23,30,22,7,247,238,244,11,31,36,8,233,232,248,5,14,20,21,19,23,16,7,254,248,253,8,26,18,243,245,252,1,20,31,42,41,19,255,236,245,0,253,1,13,16,246,226,251,21,33,23,17,18,8,249,243,4,15,27,32,25,11,6,251,234,252,24,22,21,26,8,231,235,0,12,18,26,18,251,245,247,255,253,11,24,5,243,249,0,255,253,2,10,2,8,253,239,251,10,6,2,7,8,8,17,26,10,250,4,7,12,7,252,250,11,28,29,10,231,218,3,43,40,0,231,237,246,245,253,255,255,9,13,0,252,250,235,248,13,13,246,235,253,4,10,9,10,253,234,253,14,8,252,238,236,255,28,30,11,1,9,16,10,252,253,13,22,24,14,246,235,249,2,0,3,11,14,7,0,245,244,252,0,15,29,23,0,244,250,2,25,40,25,4,255,249,0,7,20,9,253,9,15,7,11,3,251,11,33,31,10,3,5,2,0,10,7,1,6,4,0,10,3,249,246,2,10,253,0,4,5,253,251,2,14,8,10,17,13,8,9,11,9,6,21,17,253,248,15,28,18,6,2,6,10,8,12,23,17,6,6,8,4,254,3,23,21,250,253,16,8,10,11,17,30,17,9,9,11,20,25,6,9,2,0,23,32,23,4,4,2,15,30,22,17,8,1,10,11,0,254,17,39,13,230,240,16,19,0,12,20,10,5,248,1,37,50,19,254,3,247,2,29,33,21,12,10,0,8,28,36,34,18,252,240,7,8,0,12,14,18,5,233,230,254,7,4,13,6,240,235,240,246,253,8,3,240,241,0,255,247,2,8,8,12,2,240,253,24,26,17,10,255,3,8,2,3,18,30,23,9,9,23,18,9,23,31,36,16,250,0,26,38,34,15,8,4,5,13,20,31,10,10,20,254,255,15,15,29,34,18,3,8,10,3,21,31,19,7,252,4,18,16,4,249,1,1,253,7,8,255,241,252,4,249,242,246,5,15,255,106,3,24,0,9,9,3,4,14,10,10,8,7,4,250,250,0,254,8,5,4,3,2,220,185,164,163,184,200,222,244,14,16,2,252,8,13,11,12,17,22,23,23,21,9,3,251,248,4,20,38,44,47,45,43,43,44,50,49,46,44,40,23,13,4,254,6,8,11,4,228,225,216,199,197,209,232,239,234,250,250,238,237,243,247,0,0,4,9,9,11,12,12,13,10,9,10,11,16,18,16,20,23,25,25,29,33,33,35,31,29,29,28,31,23,25,24,22,21,17,11,7,252,248,0,0,0,9,14,21,15,16,20,17,9,10,246,255,17,13,4,255,7,15,10,3,9,16,18,16,11,19,27,24,27,32,36,37,36,31,34,35,30,25,23,23,27,22,20,20,21,24,21,19,18,16,17,16,11,8,8,12,8,7,8,255,251,255,2,2,2,3,6,9,12,15,14,16,24,28,31,31,28,30,32,34,33,29,25,26,27,25,28,26,26,24,20,15,17,13,12,10,255,253,0,251,3,17,17,14,8,7,6,3,4,8,15,21,24,26,31,33,30,27,24,24,20,17,16,19,23,29,30,27,31,24,14,7,6,6,6,8,8,9,10,4,7,9,6,4,254,250,250,251,253,4,11,15,16,17,21,17,11,13,17,23,21,20,22,28,34,38,34,31,28,25,18,17,17,14,10,11,10,5,2,252,246,248,250,253,250,250,250,252,0,8,19,18,15,12,7,0,4,23,28,24,24,25,22,24,29,31,24,15,9,9,3,0,254,0,2,8,8,3,1,8,10,14,16,15,17,17,20,20,19,16,9,8,15,26,38,39,23,7,254,249,249,255,4,4,255,250,251,254,1,2,2,0,8,22,26,10,10,30,34,16,16,19,15,2,251,8,17,5,242,227,225,239,239,236,229,227,239,254,251,255,1,13,20,24,43,39,28,29,31,18,8,20,21,2,10,29,23,19,9,255,243,244,19,16,234,249,10,4,6,13,34,25,14,26,26,15,29,17,251,244,15,32,2,242,4,10,3,18,29,16,251,10,17,254,8,24,26,15,30,68,60,42,47,41,18,246,252,15,17,20,21,10,7,20,0,236,233,7,27,8,251,253,4,26,33,18,4,254,255,1,20,39,60,64,41,15,10,20,12,241,239,27,39,26,26,27,21,21,19,13,9,25,39,29,12,3,248,9,52,67,53,17,236,223,228,3,10,234,231,249,250,233,228,239,233,237,255,20,36,9,228,206,229,6,32,16,252,232,236,253,0,244,254,0,248,220,210,229,231,226,240,1,6,254,2,0,242,1,13,10,24,51,64,52,47,43,30,26,39,21,246,248,1,1,241,245,12,24,18,8,3,26,24,25,32,60,99,100,93,72,47,33,36,34,40,47,71,68,35,255,254,2,18,44,35,18,14,27,17,39,69,42,253,10,50,67,29,0,248,8,16,6,241,214,251,31,2,233,249,231,201,209,228,244,250,0,243,219,240,239,220,203,220,237,212,196,207,252,6,237,191,173,183,191,225,238,218,227,242,243,220,212,201,213,229,243,0,225,224,232,254,6,1,245,231,240,4,4,253,4,10,248,251,28,45,24,7,21,20,10,11,23,23,23,33,40,20,0,14,25,13,7,23,30,20,46,83,80,40,25,37,37,40,48,48,47,72,73,45,16,11,19,21,33,51,71,85,84,60,33,19,22,33,45,55,48,28,29,39,36,23,14,11,16,37,46,37,14,9,11,28,40,21,250,242,8,45,43,3,217,236,25,64,58,27,12,243,236,212,218,250,27,40,14,240,228,232,213,185,203,235,249,243,14,32,249,235,222,225,235,18,12,236,251,39,57,18,26,41,255,219,231,248,244,254,27,29,7,4,237,188,198,216,214,206,224,246,222,222,244,250,234,239,243,233,231,229,236,233,247,4,1,253,229,205,173,173,195,182,196,217,252,247,217,173,134,156,198,213,203,205,214,213,229,249,13,254,232,252,8,12,0,0,0,188,4,15,0,32,20,44,55,14,36,37,12,13,23,241,240,13,253,5,17,226,0,245,12,228,250,230,250,237,251,22,3,53,11,2,39,1,20,40,35,9,221,25,18,17,227,252,27,247,0,51,28,29,37,34,30,48,18,30,63,55,54,252,61,66,33,52,35,69,52,75,53,31,54,72,31,27,58,12,41,44,43,245,26,23,5,237,4,247,244,21,3,241,21,3,6,5,31,7,25,43,11,36,64,37,82,41,21,47,36,40,21,51,64,13,18,59,22,49,255,17,45,30,21,23,18,15,32,25,22,226,19,26,247,32,248,5,17,41,6,24,12,234,27,23,59,249,1,14,32,43,250,246,252,42,35,251,8,45,245,6,3,5,7,40,226,18,30,0,243,22,251,3,57,50,230,235,89,9,234,62,14,240,82,68,216,7,20,16,10,247,21,236,223,59,40,166,4,245,223,22,252,17,15,27,249,32,22,245,3,46,49,228,59,41,249,44,29,25,9,246,69,241,36,25,7,0,18,47,217,248,0,241,32,46,251,238,24,67,28,230,35,31,47,13,41,85,0,14,72,239,57,70,245,16,31,22,24,32,30,36,39,75,7,217,13,61,15,253,57,66,223,38,77,36,235,242,66,60,237,2,52,8,48,25,208,61,45,234,227,12,68,202,242,97,227,252,94,216,240,50,255,4,252,41,235,18,81,235,17,251,64,214,213,80,239,210,80,33,185,39,226,37,239,224,47,255,36,38,14,62,254,12,42,23,239,48,4,16,239,5,60,245,68,221,240,54,234,212,22,22,16,253,95,49,146,20,89,202,10,102,228,243,84,26,248,22,78,235,224,38,37,196,28,75,209,16,62,234,247,13,244,56,11,237,35,58,233,251,67,36,214,53,61,0,77,236,5,58,47,10,251,11,42,0,224,14,10,21,241,20,50,28,203,238,72,60,12,250,18,53,1,14,30,238,41,60,255,253,41,29,236,202,59,73,203,2,255,187,77,30,153,253,96,2,144,24,109,205,195,66,55,9,236,192,41,44,7,203,41,97,239,215,252,69,53,244,226,85,95,183,208,72,64,242,231,245,32,51,235,10,252,49,11,161,64,78,240,248,16,72,52,234,45,31,226,4,238,3,40,17,244,254,248,242,250,239,13,13,221,9,215,2,80,10,248,40,14,38,34,210,245,34,253,7,7,70,13,215,13,34,47,230,218,68,51,8,36,236,10,50,183,6,0,187,20,28,215,234,6,245,53,239,198,36,7,237,36,34,16,14,215,4,55,245,14,91,59,6,2,19,44,40,237,72,120,64,6,39,66,47,16,14,71,57,19,252,23,13,9,70,25,200,11,18,233,230,36,51,29,65,45,18,249,8,7,237,41,26,250,72,87,203,240,85,2,144,217,11,13,37,4,41,120,30,195,248,67,11,184,215,60,43,214,27,120,49,209,223,20,40,194,173,246,53,20,253,23,249,1,249,213,233,221,199,213,28,67,28,248,1,36,254,222,58,53,248,10,58,79,41,20,53,59,251,227,231,253,255,235,13,41,34,228,212,32,81,18,158,232,69,13,220,3,96,63,31,35,43,45,231,234,59,77,27,14,31,69,27,235,26,231,0,56,63,21,216,4,46,36,11,246,250,243,238,248,31,16,233,6,11,15,7,10,5,41,72,241,233,248,254,2,6,30,20,254,10,246,4,28,225,253,61,59,42,0,248,51,52,41,13,4,7,2,25,49,26,27,42,3,31,65,4,225,29,41,13,29,255,5,16,25,46,29,8,27,6,251,24,239,227,34,31,254,17,36,255,5,16,21,29,38,14,1,30,66,34,1,16,47,14,253,22,26,20,22,14,25,42,237,237,21,3,249,243,248,0,221,210,247,9,15,7,250,247,35,23,4,2,235,7,40,10,0,28,46,38,242,254,54,45,5,242,3,28,53,25,13,44,35,15,22,23,34,17,6,17,25,19,8,0,62,88,15,242,0,18,49,241,237,34,8,18,23,15,6,245,237,12,28,17,28,35,56,39,33,43,42,9,1,50,34,25,2,9,22,35,28,247,244,19,25,8,4,24,16,244,246,20,251,224,255,12,16,18,246,225,246,34,54,24,245,9,7,43,53,33,35,16,34,43,41,18,9,21,35,31,18,0,240,254,11,40,34,233,244,29,41,20,11,34,16,3,31,35,0,239,17,41,29,30,3,0,28,40,13,18,6,249,37,18,8,29,5,6,26,28,33,6,249,29,24,3,19,3,7,68,54,17,9,23,49,27,3,31,27,16,23,0,18,26,254,239,246,10,9,228,255,41,28,17,7,17,29,13,11,35,32,12,36,33,7,11,33,46,18,9,18,248,7,46,38,36,53,49,22,28,47,28,20,11,31,39,1,236,250,245,4,13,14,8,244,13,41,27,18,12,12,27,18,13,9,27,38,24,12,15,41,37,21,33,60,38,13,30,46,46,36,24,41,43,16,22,25,17,14,252,7,17,7,7,7,15,26,16,247,9,30,18,27,26,35,54,18,18,54,29,249,0,2,32,11,240,251,19,31,14,2,14,253,248,3,9,21,21,20,43,50,32,35,21,16,27,23,16,19,34,42,34,16,20,26,22,253,247,3,11,255,250,21,21,253,247,253,251,242,251,12,3,10,27,23,15,33,48,36,13,21,32,24,19,31,25,6,29,41,21,3,12,23,14,6,16,28,27,31,29,22,21,33,19,19,31,33,33,25,27,31,41,43,23,18,29,22,28,23,91,7,30,0,12,14,11,4,6,8,11,12,10,7,6,6,10,8,7,5,2,241,225,0,36,52,38,252,226,244,23,43,32,3,246,251,8,26,22,10,0,252,8,16,19,18,10,1,1,8,13,16,11,3,1,7,13,10,6,4,4,6,6,6,4,2,255,246,243,0,8,22,20,3,255,254,4,17,16,10,1,3,9,11,230,193,233,15,43,39,4,242,251,18,36,37,24,8,6,11,25,24,18,8,253,14,21,16,20,0,243,32,42,4,255,218,186,240,41,51,38,248,230,0,25,39,34,4,246,247,243,240,211,202,240,22,37,34,13,239,0,40,47,48,12,238,252,2,10,20,2,223,210,220,252,35,30,26,6,251,31,49,37,24,18,10,27,51,3,1,50,25,12,16,13,18,37,54,11,254,2,3,28,22,32,18,254,5,239,7,26,4,7,0,245,2,28,12,238,238,0,5,7,17,250,255,14,247,8,9,9,239,255,254,16,31,10,254,253,14,17,20,19,10,15,252,4,23,254,249,17,23,28,26,234,2,16,22,50,15,229,248,14,19,33,21,248,242,25,252,3,30,10,4,233,246,22,0,21,251,0,30,252,240,4,17,13,36,1,254,4,241,23,18,249,255,10,15,26,0,217,8,29,7,59,247,218,8,9,33,32,26,7,201,220,33,14,49,41,219,226,25,223,32,60,230,9,13,228,35,35,0,254,14,242,237,20,233,14,73,251,224,247,29,39,47,246,207,0,52,31,38,64,190,224,35,20,31,7,35,230,197,71,24,238,44,234,39,25,225,252,17,36,3,26,214,234,53,240,45,233,216,21,19,46,221,213,23,39,8,17,24,239,244,46,4,6,17,214,253,62,30,228,232,25,28,20,9,41,208,210,67,14,39,5,201,230,92,54,251,243,198,202,36,95,28,232,16,244,206,14,10,18,87,30,184,201,0,46,49,38,231,217,216,61,32,237,32,6,200,1,14,12,28,48,7,212,231,0,72,255,219,11,249,30,67,225,227,28,213,42,38,241,23,14,30,204,224,0,19,124,250,170,13,2,252,36,44,33,18,212,174,242,67,56,251,230,245,45,42,205,231,42,11,0,28,216,250,66,12,254,231,238,224,44,101,0,181,216,227,247,81,29,243,246,201,190,33,37,77,54,193,234,41,255,66,29,0,243,252,92,230,14,103,233,202,18,68,12,11,21,224,27,243,14,35,9,0,241,61,194,30,19,174,61,54,218,237,0,21,248,2,18,28,240,239,21,20,20,232,39,12,242,64,248,53,45,181,252,18,71,5,208,56,245,248,54,244,240,12,43,237,225,82,254,240,12,212,9,29,33,49,3,233,255,234,219,68,106,225,205,39,226,48,53,249,252,234,34,61,247,246,26,36,23,22,231,234,14,216,90,6,233,22,245,3,8,207,0,37,24,26,176,184,53,52,224,18,19,238,5,216,244,106,9,229,40,15,14,0,245,46,2,4,53,232,229,45,45,17,11,0,217,237,61,27,183,28,11,254,39,217,4,40,3,27,232,231,13,27,18,250,253,19,37,233,6,6,19,26,233,19,25,235,64,39,240,37,29,236,8,11,6,58,38,254,33,215,23,38,231,28,25,254,10,252,3,240,13,43,15,234,3,5,16,13,233,248,225,22,34,215,45,25,222,214,14,27,250,0,18,25,240,254,49,26,205,39,47,211,20,70,224,34,22,220,33,253,236,53,51,5,239,250,74,35,236,29,16,214,44,6,225,55,27,211,250,25,215,250,46,238,246,21,6,240,5,254,235,252,246,250,48,42,229,237,4,232,245,59,41,12,33,245,8,6,16,33,3,241,39,62,254,34,0,31,17,228,0,29,23,28,45,249,244,26,254,236,26,252,226,15,22,35,5,244,13,15,212,0,23,224,32,59,17,253,225,223,8,17,9,10,47,20,243,29,6,249,13,49,5,253,72,22,245,254,9,248,25,16,21,24,255,19,0,216,39,8,201,24,54,20,11,4,247,17,10,13,47,236,253,28,0,251,17,34,9,22,22,236,5,241,13,33,203,255,77,14,231,31,0,215,11,12,222,13,35,9,4,11,235,247,34,14,46,30,227,23,27,247,229,255,34,27,235,5,46,251,243,253,249,29,11,231,5,45,43,255,215,10,20,243,29,1,19,18,215,5,23,231,17,21,250,9,16,4,247,17,249,251,42,15,26,25,221,251,23,33,42,16,6,10,6,25,10,16,27,253,231,23,12,10,22,0,0,27,11,243,21,245,248,32,3,233,251,20,35,254,26,11,211,231,17,7,2,251,13,41,255,240,1,252,44,58,240,247,35,20,240,5,17,26,49,14,2,7,255,15,18,253,255,22,45,8,246,12,12,235,251,9,241,5,17,254,226,240,14,0,14,4,245,3,26,1,226,6,13,5,32,35,29,10,21,17,24,3,253,8,28,43,4,1,39,36,5,243,3,1,12,40,0,238,31,2,248,19,6,15,28,11,241,236,1,242,240,6,35,23,247,249,238,6,14,0,255,3,250,245,36,50,34,23,8,240,15,11,8,41,6,223,6,24,247,255,12,14,252,6,35,255,255,36,19,212,18,54,249,253,27,13,254,6,249,243,6,27,253,10,37,19,253,11,31,15,236,13,33,27,19,26,22,6,5,9,18,29,247,228,3,18,7,25,21,5,2,2,6,253,255,23,249,245,18,14,247,5,2,238,242,13,3,11,255,0,13,255,16,9,237,1,10,252,24,15,10,40,1,241,20,11,248,15,35,30,21,28,12,246,249,5,7,250,12,18,0,13,36,19,17,250,245,7,9,253,9,12,6,18,20,245,239,13,8,231,252,26,6,2,254,0,247,251,16,17,17,35,25,5,250,251,246,0,12,15,14,29,36,21,0,4,0,243,248,2,250,247,10,241,249,0,251,19,31,4,234,254,9,14,7,14,25,4,1,25,0,14,29,4,3,20,11,250,255,10,5,2,21,39,30,19,28,26,14,19,13,9,8,34,21,5,32,10,247,0,254,245,247,247,238,236,240,4,7,1,252,252,16,15,9,8,1,254,249,4,14,21,18,12,10,21,13,7,13,19,9,15,253,241,8,19,19,13,22,40,21,255,13,14,250,254,253,0,13,11,16,3,253,3,10,5,252,7,250,224,250,15,3,254,16,6,255,9,18,14,2,10,18,3,0,11,9,1,26,31,2,34,57,20,1,21,11,227,246,28,15,14,24,24,12,13,12,254,0,0,228,235,4,10,1,250,255,253,241,248,255,254,0,13,10,6,18,10,250,254,0,7,25,23,31,37,14,2,0,1,248,8,24,33,36,12,12,21,19,10,0,16,42,16,2,16,8,252,8,10,254,7,12,3,2,2,7,254,251,251,247,2,5,255,10,26,20,14,27,15,16,26,33,20,8,12,5,8,13,8,16,29,17,1,13,17,8,4,5,253,0,1,250,253,2,5,13,21,12,12,8,249,235,229,241,252,8,24,27,15,5,7,7,14,20,24,6,250,5,7,11,23,25,25,23,13,10,21,21,12,11,8,8,6,9,9,8,8,255,3,14,17,12,6,0,249,251,251,0,4,5,4,7,18,13,7,6,6,252,6,21,18,14,13,4,7,7,2,10,12,12,19,15,15,20,23,17,5,1,11,13,4,11,21,18,12,12,11,8,2,255,249,0,0,1,9,8,4,3,2,2,8,13,9,255,2,20,19,10,7,252,4,11,8,10,22,15,12,21,13,6,5,18,18,2,6,11,14,19,15,15,5,0,9,8,13,17,5,8,4,253,255,254,4,4,2,7,6,10,18,15,0,253,0,253,248,250,2,255,247,1,8,4,1,251,0,5,11,19,9,5,0,255,2,1,8,20,26,21,20,18,12,14,15,10,6,13,9,7,15,20,18,30,31,20,12,13,9,6,10,6,254,255,1,253,2,4,0,6,4,0,0,1,254,247,252,250,250,9,11,13,22,15,15,21,15,3,9,7,6,13,14,11,11,13,11,11,8,11,13,10,11,11,15,19,7,1,2,253,250,254,9,7,8,12,9,6,2,0,253,1,7,2,6,7,4,1,7,10,5,11,13,8,4,6,11,10,11,21,21,11,15,21,14,14,18,11,12,16,13,12,18,22,21,19,14,10,3,9,11,9,10,10,9,8,12,18,14,16,22,18,11,7,4,2,1,254,0,3,9,13,12,14,11,8,8,8,5,0,254,253,254,255,0,6,11,10,8,8,8,4,1,1,251,249,247,244,252,0,254,0,254,249,0,11,4,35,0,4,1,255,7,0,255,251,254,27,255,232,16,244,241,20,242,250,25,4,8,248,250,28,0,246,0,238,248,23,242,1,17,2,3,245,237,34,250,240,244,6,10,251,1,232,16,251,17,9,5,10,10,6,232,1,249,20,0,5,10,245,9,5,23,254,15,246,0,7,251,254,252,30,251,239,29,244,1,16,5,250,2,232,6,9,220,41,252,0,13,217,242,224,228,237,209,198,246,213,243,236,0,8,252,10,253,33,0,23,16,14,48,27,255,39,38,25,8,5,14,11,34,1,19,1,25,2,9,4,17,252,255,2,247,253,229,241,223,14,0,194,243,249,215,238,11,212,237,0,10,2,244,2,20,33,235,36,245,6,251,3,15,3,7,32,215,240,66,230,14,24,208,40,27,246,235,234,15,13,219,8,230,234,40,217,7,206,19,6,235,250,0,206,12,14,233,29,35,20,229,53,27,16,65,28,54,30,52,42,26,82,55,222,28,50,1,11,236,190,177,41,64,245,208,166,203,167,151,171,169,6,181,132,246,205,188,243,225,250,246,204,27,251,22,56,36,72,52,219,64,98,42,31,72,6,56,81,40,24,46,90,6,43,10,241,14,64,241,0,0,1,187,249,29,212,219,194,2,214,209,227,229,252,223,183,234,255,204,227,0,247,250,237,16,246,33,29,9,6,5,23,17,23,255,5,33,36,0,240,23,69,219,242,49,233,45,195,9,76,189,238,19,219,18,228,227,54,214,29,235,7,17,222,23,7,246,247,11,87,214,250,19,247,74,231,6,19,231,255,242,237,44,198,33,205,219,29,11,247,217,0,18,237,9,57,198,77,243,214,33,242,6,8,13,54,221,232,14,223,214,234,21,236,36,23,175,36,42,238,249,21,247,243,250,255,211,14,87,224,218,37,0,236,6,253,0,18,4,229,248,15,243,240,30,11,238,9,248,235,12,24,250,4,30,17,222,33,25,220,32,41,248,239,28,241,5,33,16,241,12,38,242,221,238,30,234,2,238,224,17,40,204,238,6,224,246,240,35,232,244,254,224,19,30,239,4,26,15,240,219,0,252,14,19,32,242,25,246,215,36,59,248,5,33,203,8,27,2,231,15,24,16,225,233,230,233,42,20,233,222,17,245,231,36,32,202,243,9,11,230,247,32,229,15,22,230,250,20,253,238,24,31,235,0,49,248,0,16,235,20,19,52,250,210,16,15,199,1,12,244,240,7,231,218,60,248,223,21,5,237,234,253,6,248,18,24,252,234,13,27,232,21,9,221,13,16,233,0,44,248,248,6,43,231,218,61,26,171,237,16,254,43,0,226,245,70,223,225,37,25,233,249,23,209,244,46,14,219,0,2,251,243,29,248,235,31,251,238,4,31,223,7,28,244,227,14,10,13,10,241,255,31,29,233,238,2,18,5,17,234,8,21,241,244,234,32,249,212,13,245,247,41,220,232,255,32,5,226,8,239,0,14,7,20,253,14,246,246,36,244,229,41,247,4,10,248,230,14,17,5,216,8,38,234,249,243,241,3,23,251,253,20,246,220,19,15,21,241,242,245,210,248,24,28,34,237,255,243,14,8,23,41,3,244,238,4,29,250,18,38,14,255,224,233,5,8,252,0,243,230,235,237,251,10,250,251,3,9,0,249,248,242,21,21,17,246,222,10,248,1,28,16,11,223,236,9,238,0,10,43,48,16,222,235,11,4,0,12,255,216,223,251,17,35,23,223,230,4,28,245,8,3,233,7,0,244,248,13,43,8,241,245,216,14,41,245,252,16,0,238,11,10,38,22,20,0,253,237,226,1,12,14,0,245,250,243,240,246,254,245,233,252,249,221,252,4,18,19,13,244,15,250,221,0,25,25,3,8,1,15,7,8,6,8,13,7,2,231,232,18,19,255,17,26,19,235,245,0,9,243,242,16,240,249,254,232,9,27,234,12,253,238,212,223,6,2,251,14,3,240,236,244,21,31,20,5,255,14,16,253,240,9,19,15,4,252,240,11,9,253,11,255,234,236,239,8,14,246,253,241,255,25,2,246,15,9,0,255,17,0,234,19,25,5,254,244,252,5,11,243,250,13,2,7,25,21,255,236,23,1,231,9,4,242,245,1,1,8,248,229,243,32,252,204,253,3,242,0,5,19,4,241,248,249,255,6,249,0,3,3,7,21,11,246,31,22,1,0,236,235,5,248,4,13,6,243,237,10,8,251,10,17,0,250,252,249,2,4,1,1,13,10,227,222,253,1,19,246,248,3,9,5,255,15,11,254,4,21,26,252,244,12,16,26,12,249,238,238,251,254,2,7,238,227,253,0,249,232,240,9,5,245,237,234,245,0,47,4,33,0,5,4,4,5,3,3,0,253,226,205,14,38,39,6,234,3,13,23,5,0,9,12,14,1,4,6,9,8,6,7,5,9,12,11,7,8,5,6,5,6,9,6,7,4,5,5,6,5,2,5,2,5,3,2,0,2,9,236,222,5,30,35,245,224,3,42,51,19,225,200,15,33,11,4,18,36,34,5,233,13,23,35,25,0,14,9,14,231,216,228,246,13,6,1,7,20,11,8,21,250,247,4,253,13,7,254,12,5,251,255,14,24,26,5,237,16,3,10,4,249,236,8,23,245,23,246,247,17,19,28,1,247,2,24,25,1,255,247,252,255,17,242,13,0,15,7,0,0,0,40,8,23,5,246,37,0,31,9,14,21,11,15,0,15,246,211,250,22,24,6,11,4,12,0,0,15,22,247,19,5,247,24,255,3,6,240,7,7,250,8,4,11,11,247,5,1,17,5,255,253,252,14,9,0,4,3,12,3,241,28,0,248,13,245,16,255,4,11,5,16,236,22,28,238,18,235,24,40,194,49,5,251,53,236,8,3,2,23,241,252,24,245,33,6,236,37,233,14,6,238,10,24,244,240,13,15,247,3,45,209,0,31,11,238,239,45,254,0,239,7,23,241,6,4,21,250,7,234,253,45,248,238,21,1,13,13,243,248,7,14,0,16,254,17,255,240,20,8,1,255,20,240,22,39,196,42,1,236,56,237,245,1,218,66,220,253,23,225,26,230,19,235,15,10,227,25,5,8,33,10,249,253,34,1,12,26,25,249,19,227,50,1,15,20,220,39,19,6,29,222,239,54,7,246,11,254,6,13,25,228,24,26,196,52,34,189,6,30,32,4,245,235,59,242,11,15,224,56,2,210,60,226,248,51,217,56,1,170,101,231,14,19,237,47,5,237,15,11,17,2,209,45,10,2,3,242,38,1,242,17,7,2,238,16,34,2,9,16,203,87,209,14,44,185,48,58,176,29,42,186,96,197,48,11,194,91,208,24,71,174,222,127,225,253,0,235,28,35,3,228,0,230,16,13,17,30,201,247,69,249,246,8,216,33,44,228,43,234,241,38,250,43,0,234,10,23,14,28,190,5,57,235,250,205,243,68,17,193,15,63,50,182,225,109,56,226,202,55,34,231,250,13,247,249,255,11,44,2,221,42,49,238,233,16,17,3,44,232,43,236,188,61,19,0,205,24,40,252,231,21,21,237,11,22,0,16,237,222,25,11,19,255,47,13,229,4,35,244,247,27,240,247,123,220,143,111,240,43,51,144,34,27,231,33,211,8,49,201,239,28,0,222,52,239,8,0,1,69,208,45,252,189,11,5,239,81,206,227,37,252,19,207,17,90,239,245,244,254,60,220,1,49,14,24,229,254,23,57,201,8,40,217,30,242,197,20,31,240,10,9,237,31,20,230,8,38,224,8,44,249,236,23,243,255,22,253,12,223,34,8,243,14,40,227,2,240,15,56,223,253,236,39,47,12,201,66,1,4,11,13,248,1,20,8,35,21,234,246,74,1,202,10,27,6,15,16,14,18,241,47,15,244,250,4,244,254,248,19,30,210,224,24,20,204,224,34,40,1,1,13,20,11,220,241,32,12,230,15,28,26,255,213,30,55,248,241,36,16,9,14,37,252,9,29,250,242,17,11,236,45,42,254,22,253,244,239,28,53,191,230,52,249,255,8,224,21,13,23,247,216,16,2,18,10,241,29,5,223,34,31,35,232,228,21,31,25,236,255,25,12,243,27,16,14,9,216,35,9,213,18,234,12,61,232,0,216,210,23,240,245,3,223,20,35,8,4,227,5,14,9,38,14,225,66,30,12,19,249,12,4,4,17,18,33,0,18,75,6,239,244,1,0,0,32,9,4,239,250,0,5,248,242,7,1,0,16,246,226,12,22,0,246,21,15,251,26,26,253,253,245,0,23,4,244,249,53,15,246,13,251,244,14,12,241,249,0,21,42,26,226,4,17,8,250,0,10,4,14,0,5,0,0,16,7,16,253,215,21,12,244,7,17,24,27,243,253,38,244,223,12,1,255,18,27,8,0,10,3,0,9,2,241,1,16,6,3,7,252,3,21,248,236,241,254,245,246,9,30,22,1,21,14,254,6,8,252,12,13,5,5,13,14,19,255,9,240,237,248,253,13,22,11,34,13,7,7,2,8,246,17,25,0,23,14,240,39,11,241,22,10,236,248,8,20,5,0,12,247,11,4,0,11,21,253,254,4,13,15,5,7,13,17,5,2,8,13,3,27,255,249,20,22,11,17,13,0,240,244,14,252,245,249,1,4,3,251,254,240,246,2,5,253,248,2,7,22,16,9,3,0,250,3,10,3,1,0,247,6,12,254,252,1,2,4,0,253,9,11,13,10,6,5,255,249,242,247,251,244,0,4,2,255,0,4,250,253,7,20,19,15,7,0,149,3,54,0,2,2,2,1,1,0,1,0,5,4,0,254,252,255,0,3,4,2,255,255,0,1,2,2,2,1,0,1,1,0,0,0,0,0,1,1,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,255,255,0,0,0,255,255,255,0,255,0,0,0,0,0,0,255,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,255,255,255,255,255,255,255,0,255,255,254,254,254,253,254,252,253,254,253,253,253,255,255,254,254,253,253,254,255,255,253,255,255,254,255,255,254,255,0,255,255,255,255,255,255,255,0,0,255,255,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,1,2,2,2,1,3,2,2,1,3,255,0,3,5,5,3,1,0,255,0,2,3,2,0,255,254,254,0,0,0,0,0,1,0,1,0,255,255,0,1,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,255,0,0,255,0,255,255,0,0,0,0,0,0,0,0,255,0,255,254,254,253,254,253,253,254,253,253,253,254,254,254,255,254,255,255,254,254,254,254,254,254,253,253,253,253,253,254,254,253,254,254,254,253,253,255,254,254,255,0,0,253,254,254,255,255,255,255,255,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,2,0,2,1,0,1,1,1,2,3,2,2,2,1,1,2,2,2,1,1,1,2,2,2,2,2,2,3,3,2,2,1,1,1,1,2,1,2,1,2,2,2,2,2,3,4,2,3,3,3,3,4,4,4,4,5,4,3,4,4,3,4,4,5,4,4,4,4,4,8,9,3,2,0,1,4,6,8,6,2,2,1,4,5,6,5,6,4,5,5,5,4,5,4,5,5,6,4,6,7,6,9,11,13,16,18,19,16,11,7,4,4,16,13,5,4,6,9,8,5,9,6,4,6,3,2,4,1,3,1,0,3,4,0,7,4,6,5,6,7,5,7,10,9,10,13,15,18,21,25,37,44,54,62,97,127,100,111,114,59,79,86,68,72,61,54,67,54,33,50,33,25,1,244,237,220,227,242,231,235,231,227,247,234,235,236,238,246,230,239,253,249,9,18,23,23,23,18,21,43,32,27,35,19,18,21,7,5,20,7,7,5,245,251,249,249,250,247,234,229,228,219,228,229,223,235,237,233,233,238,237,249,246,242,247,235,237,246,252,253,0,6,6,12,12,8,20,21,19,23,19,6,16,14,13,18,12,9,14,12,7,14,11,11,16,12,8,12,8,12,19,15,16,18,17,18,26,25,28,31,30,30,31,25,26,27,25,25,22,11,13,18,19,16,15,7,4,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,9,28,0,246,0,11,13,16,12,252,240,252,15,15,16,10,244,239,3,22,20,15,12,3,249,3,27,35,29,13,0,3,22,23,31,32,8,9,5,3,14,23,19,16,0,247,6,27,17,250,248,253,0,15,22,255,250,0,249,7,8,7,14,7,255,253,12,12,254,16,28,8,3,8,14,13,16,8,6,13,12,9,8,12,1,242,1,25,28,15,239,230,237,14,31,22,11,234,215,245,22,37,25,13,242,218,234,15,31,31,28,11,243,237,248,17,38,26,246,233,18,40,25,3,240,241,7,31,33,28,14,249,245,0,14,27,27,12,21,10,247,251,19,25,20,19,17,2,255,20,23,1,4,10,17,11,0,8,18,255,6,250,4,30,11,1,254,8,11,251,251,22,29,15,6,243,1,34,31,9,0,6,21,7,21,23,19,25,15,247,44,47,242,235,19,32,22,29,16,246,252,4,9,25,25,11,234,232,0,20,31,15,253,230,226,246,29,27,242,246,252,1,254,246,255,2,5,3,251,248,11,0,250,20,5,244,242,14,14,12,23,247,221,255,23,23,34,16,208,211,24,52,18,232,240,13,2,0,13,16,2,232,239,9,18,39,23,229,216,245,30,43,34,16,244,234,248,26,43,34,22,6,3,5,13,27,21,31,25,15,9,10,17,14,8,30,30,14,251,236,18,48,34,246,232,3,13,17,16,11,5,242,247,249,6,21,20,20,245,219,242,18,22,20,17,254,237,243,20,38,20,8,4,240,249,27,37,28,7,254,238,247,25,45,34,1,243,244,2,32,42,17,243,245,12,20,22,23,254,254,14,18,18,23,26,20,250,248,16,27,29,24,18,3,244,1,36,35,7,254,7,14,14,13,17,250,245,10,15,18,16,240,233,11,17,4,253,11,20,251,238,251,8,12,9,240,246,14,19,5,244,252,253,247,251,9,15,5,249,243,252,8,11,251,252,248,240,1,14,25,13,221,213,9,45,25,251,250,7,251,255,6,254,13,33,20,241,248,7,32,28,248,251,18,7,17,41,21,219,238,16,34,42,20,254,3,0,244,26,50,27,245,252,16,9,5,28,44,40,255,232,255,43,55,23,254,11,30,17,22,27,13,252,0,53,52,14,0,233,4,25,15,15,29,13,247,2,246,227,11,41,14,252,252,248,241,226,252,42,11,242,241,245,11,5,233,231,13,43,27,236,227,251,3,13,23,9,14,26,2,234,2,29,10,14,2,252,2,31,25,235,214,252,20,49,24,227,241,4,253,242,15,42,5,243,255,239,239,3,31,58,15,248,249,252,26,60,244,230,49,25,252,32,59,33,252,249,235,250,52,54,22,17,251,216,242,36,35,218,225,61,27,215,2,20,195,215,49,34,1,13,254,5,10,242,228,235,53,89,1,239,28,7,241,42,63,240,249,32,9,12,18,41,34,249,0,17,244,3,40,24,241,3,28,219,232,33,19,242,253,21,8,12,1,239,248,9,8,17,35,3,11,40,0,255,41,26,250,36,27,7,26,59,7,206,20,52,252,10,38,252,245,238,7,35,33,12,244,202,219,33,35,221,226,39,26,239,232,0,9,29,26,223,228,18,47,16,3,35,253,0,35,35,6,237,28,38,3,15,34,8,12,42,8,167,235,92,89,245,191,238,0,6,37,37,227,239,7,250,249,25,28,251,224,7,19,252,21,33,2,249,19,10,16,28,11,251,245,20,32,18,38,5,221,238,69,47,232,246,1,243,13,37,26,3,255,220,249,39,251,244,23,15,21,14,250,246,12,49,252,232,22,32,16,28,10,218,11,32,20,36,20,8,240,232,14,48,39,0,2,49,34,253,247,10,26,40,38,254,251,14,32,52,9,201,249,75,29,4,33,0,218,6,5,0,17,41,20,235,248,38,8,195,217,15,56,28,12,247,238,237,240,19,21,18,24,19,6,248,203,235,55,51,14,17,25,8,5,216,224,55,83,14,227,10,59,28,209,208,13,43,22,10,254,4,13,235,202,252,24,8,38,11,232,230,9,254,224,235,54,44,254,248,246,255,251,214,245,67,69,15,238,231,241,4,18,46,52,22,3,7,17,240,239,250,30,75,46,254,3,15,246,213,245,72,68,4,0,253,249,4,244,5,67,75,21,211,229,10,241,252,63,80,51,5,197,199,1,26,240,30,63,16,246,227,0,250,222,223,252,69,85,3,208,250,7,0,55,27,235,17,14,254,0,56,64,247,248,35,22,5,5,8,45,34,248,12,35,35,1,253,230,245,38,55,43,236,201,255,9,252,37,39,232,221,12,4,224,3,49,26,243,255,5,229,254,29,26,12,248,0,12,12,58,59,245,205,225,14,46,18,0,25,34,254,230,236,3,15,234,220,43,76,16,221,227,250,227,210,10,62,30,236,226,241,11,0,241,3,240,7,28,32,2,247,247,246,251,42,96,34,250,245,239,225,241,60,123,59,237,230,252,240,12,32,32,33,10,1,12,10,245,243,14,25,9,248,13,29,13,237,228,22,51,40,14,248,0,236,252,26,37,40,11,2,8,5,248,212,1,66,25,243,27,31,246,215,234,13,21,42,42,255,220,229,21,44,251,251,16,17,16,0,229,242,20,48,23,6,249,243,16,2,231,17,53,28,11,20,15,20,249,228,254,25,39,37,2,8,14,1,230,230,11,46,37,19,248,228,248,16,15,14,14,18,20,225,233,23,253,246,31,26,14,251,253,20,37,7,212,216,42,53,16,28,9,228,243,35,62,13,211,234,1,32,46,12,248,21,30,243,208,245,36,29,4,0,252,250,255,8,18,16,240,10,31,246,244,13,28,8,10,22,18,5,241,13,16,5,36,65,27,229,234,20,4,6,36,50,42,242,218,1,20,0,2,237,14,49,25,0,0,227,192,238,63,54,26,26,254,218,240,0,245,40,52,24,29,31,250,223,230,34,54,2,12,46,14,230,4,42,34,0,255,239,245,25,32,21,244,237,11,2,242,12,33,2,242,248,1,29,55,46,227,210,2,20,252,10,39,45,255,218,0,27,2,2,25,0,250,8,24,39,29,251,252,4,4,11,5,250,252,26,29,1,242,0,44,15,218,238,4,0,55,51,228,233,23,26,1,11,31,12,13,9,236,240,27,64,40,241,239,24,0,236,249,33,50,6,225,2,6,2,5,245,253,25,33,249,234,10,6,234,246,45,61,22,245,228,222,250,22,53,38,6,5,17,15,11,253,239,254,41,31,13,26,30,22,250,254,7,251,4,28,39,30,16,5,245,253,6,247,237,33,69,7,2,16,255,236,237,245,22,71,64,0,245,242,231,252,17,36,19,33,35,0,224,249,34,3,225,4,43,41,28,12,211,205,22,39,6,15,22,246,251,17,11,253,251,2,11,248,251,48,67,1,207,232,5,37,37,250,240,22,51,0,223,13,39,9,239,10,42,6,232,11,27,233,249,40,19,17,13,217,209,16,44,19,5,32,17,214,241,38,13,248,36,58,6,219,244,31,28,18,7,0,23,29,4,238,240,254,29,39,254,230,22,51,3,210,240,25,30,8,246,0,4,0,12,27,19,241,235,8,27,27,14,11,11,6,250,6,25,33,31,25,253,226,245,25,34,17,22,27,43,29,205,203,19,53,28,7,22,36,28,0,225,227,4,44,58,55,22,231,219,230,25,48,16,24,48,0,209,238,1,22,43,12,3,20,15,253,240,234,6,34,31,27,11,248,247,6,12,253,0,26,32,16,0,248,5,30,17,254,20,26,252,4,20,22,16,1,243,253,18,5,6,29,23,248,237,5,245,234,20,40,4,236,2,17,6,12,247,222,2,22,23,36,37,13,230,238,238,241,14,46,58,27,254,253,17,13,229,223,24,68,56,5,254,15,19,7,223,240,50,61,16,245,252,12,253,248,4,16,10,15,254,248,18,6,250,243,8,29,13,254,6,11,251,3,18,32,12,241,7,30,25,15,10,7,2,11,15,16,18,14,17,9,3,252,6,31,12,249,7,18,7,10,5,247,250,18,24,5,0,15,3,245,253,16,34,30,8,234,231,10,32,18,23,35,13,241,254,16,19,19,13,16,34,30,18,2,0,3,0,12,24,23,16,11,7,251,5,25,8,252,10,36,25,240,242,6,6,7,14,22,42,24,239,231,244,255,9,9,28,53,30,240,227,249,7,5,0,12,32,32,255,250,6,254,252,14,21,16,11,13,8,248,250,9,18,26,24,1,243,2,16,10,241,252,27,29,12,16,0,247,0,0,7,22,20,7,18,9,254,14,26,15,253,249,4,28,25,2,233,0,47,37,2,1,248,233,8,30,18,11,22,12,254,4,24,26,4,254,12,12,251,12,27,23,20,11,255,254,13,13,248,254,3,6,11,20,19,1,0,252,251,7,6,250,18,20,0,19,30,10,245,240,244,0,29,53,37,3,249,241,238,8,33,33,17,12,7,246,0,21,6,250,8,32,34,0,241,0,8,1,252,1,16,23,8,248,249,4,10,253,0,14,9,2,20,29,15,1,250,252,9,33,35,21,21,16,250,251,5,11,14,11,9,7,14,24,0,239,248,254,2,15,18,8,12,13,248,233,236,5,25,14,12,18,2,249,251,3,9,17,16,22,29,10,0,6,6,10,6,6,22,27,23,22,8,250,251,9,4,1,20,29,23,15,9,8,7,7,255,252,5,15,30,35,22,253,241,254,251,248,19,28,15,3,6,10,2,0,4,10,13,19,17,254,0,21,21,0,0,24,30,14,12,9,246,251,16,12,7,22,29,8,248,8,21,9,10,10,0,0,16,24,19,6,3,1,5,15,23,10,249,245,5,15,18,15,13,5,250,234,253,26,36,31,255,237,6,23,4,8,21,18,10,9,13,16,13,6,10,13,18,18,16,8,2,250,246,8,33,28,14,15,12,254,249,2,14,5,0,3,15,30,6,246,11,6,234,240,8,26,22,2,240,247,8,15,12,0,0,0,0,21,41,20,236,243,22,23,10,10,18,15,0,252,1,6,14,23,24,17,3,0,2,250,246,2,26,38,34,6,240,244,252,7,13,2,19,37,12,247,250,4,5,5,15,15,11,16,12,255,3,9,3,11,29,30,15,5,15,10,250,252,4,18,24,21,10,15,18,2,247,248,253,10,20,23,15,5,5,0,245,0,9,8,14,17,15,9,5,252,246,0,13,18,13,12,12,3,253,255,6,6,6,9,1,3,15,12,4,2,254,0,11,16,0,249,7,14,6,1,253,254,7,20,8,255,9,11,255,2,18,12,3,8,17,12,4,15,19,8,3,8,17,21,16,14,4,2,12,11,1,8,18,20,14,4,253,249,0,0,0,58,6,43,0,255,15,12,13,10,254,255,18,15,8,0,0,6,19,19,0,4,10,0,22,11,0,2,10,17,9,15,251,249,21,15,16,17,253,235,14,31,13,14,250,254,6,13,20,26,249,241,2,35,47,254,213,0,34,21,2,13,7,251,252,10,13,9,11,13,13,248,228,254,35,40,250,249,0,238,17,30,27,6,254,1,3,14,0,10,29,18,3,3,254,243,6,46,32,246,237,17,21,253,18,2,250,12,26,9,254,2,3,10,10,7,9,0,249,236,23,34,255,0,246,12,22,220,1,31,12,245,247,8,10,3,247,245,40,24,214,242,29,5,0,23,246,0,10,246,21,21,227,239,41,36,239,229,253,24,33,253,242,3,2,9,14,253,253,17,21,235,240,40,23,230,10,18,3,246,1,23,9,252,17,13,236,13,29,221,250,64,246,236,22,251,8,5,254,20,15,14,243,237,7,17,12,27,44,213,196,12,46,31,11,228,209,255,42,24,232,243,8,0,3,1,253,3,4,12,6,252,219,250,49,22,246,8,7,254,235,48,71,222,197,16,58,12,233,26,86,244,132,36,89,6,250,13,21,238,225,19,27,43,20,236,216,244,39,33,234,249,236,234,255,48,41,171,171,46,60,244,0,22,240,209,7,47,24,5,249,9,247,10,23,254,29,22,12,31,15,22,250,12,55,2,0,40,3,8,28,247,23,44,17,245,215,7,54,19,237,7,254,3,16,247,225,249,74,46,193,178,17,90,4,206,5,19,36,247,207,246,53,15,251,28,0,225,10,55,16,216,6,60,3,1,26,9,9,25,17,227,12,19,251,36,17,244,244,31,34,228,239,4,49,12,245,38,6,212,214,22,47,33,4,226,249,12,249,248,39,251,217,0,54,17,236,252,255,253,240,10,45,10,19,2,199,251,33,48,3,232,26,2,240,41,7,210,11,42,25,5,209,214,56,52,254,0,231,248,39,7,230,19,29,245,246,10,44,239,197,20,52,18,228,229,27,6,247,2,18,10,35,20,225,219,13,56,38,219,252,249,240,40,35,40,227,223,11,3,43,7,226,25,32,252,235,18,14,7,40,6,202,239,45,36,9,19,224,192,23,118,5,165,233,34,66,18,251,238,245,21,10,233,32,48,3,215,247,56,11,230,24,35,213,227,51,30,214,2,47,0,242,25,3,220,232,39,25,8,45,227,185,36,69,251,208,61,64,154,2,83,248,21,8,251,0,232,0,46,38,42,1,187,254,33,237,36,50,0,225,251,36,216,247,55,44,196,240,72,199,7,32,222,30,42,225,249,55,250,213,14,27,46,252,239,46,251,196,3,47,48,249,180,36,67,215,8,52,232,234,21,246,34,46,0,226,235,27,65,252,210,230,25,81,240,214,39,37,244,1,202,242,70,15,247,250,238,72,27,156,0,71,255,250,21,250,251,42,0,229,21,24,15,233,243,51,222,254,102,239,189,1,30,26,1,10,249,232,45,10,254,44,14,174,226,78,43,0,216,245,57,6,227,221,254,73,30,11,205,193,19,39,24,30,252,9,26,214,206,253,60,54,30,244,176,195,48,94,247,211,33,36,249,213,2,30,232,42,47,204,43,64,158,227,94,250,196,79,87,167,177,16,41,23,32,36,220,237,240,10,40,235,8,22,29,15,212,230,244,50,35,246,28,229,248,15,9,216,255,36,72,53,205,233,229,229,48,2,26,38,12,23,240,186,12,45,222,23,22,241,70,3,189,236,52,34,226,252,82,7,211,241,10,251,20,63,241,4,255,235,69,234,255,16,234,36,24,190,255,63,52,37,217,153,26,54,17,43,28,232,240,250,11,239,6,16,54,41,203,245,14,222,14,30,18,15,238,4,20,25,51,196,149,68,73,28,13,24,19,208,205,247,11,14,79,20,234,23,219,211,237,32,57,26,237,20,12,186,247,41,52,20,12,29,0,161,193,97,100,22,205,249,13,12,12,224,7,29,222,6,81,37,226,201,233,33,25,21,10,27,21,215,206,250,41,38,248,10,248,253,26,5,190,230,99,80,238,189,215,11,47,30,47,53,189,226,0,209,30,59,16,17,30,250,194,239,20,24,13,13,9,17,240,253,20,0,235,229,255,56,51,228,224,23,253,10,248,235,21,35,31,250,18,254,215,17,36,41,235,228,8,238,21,33,27,14,239,232,222,23,27,247,9,61,18,193,217,32,51,228,253,44,46,253,188,209,33,80,5,241,239,3,2,1,3,240,16,22,245,244,15,25,234,3,41,218,214,20,36,31,1,239,4,33,249,210,13,32,20,254,0,26,0,35,44,236,214,6,27,31,15,242,15,13,45,14,191,225,69,30,35,24,178,223,31,28,253,240,41,50,238,238,217,228,250,37,50,29,247,245,25,245,236,253,41,58,241,249,21,26,252,205,2,18,54,29,2,0,255,244,0,40,251,219,24,30,35,25,233,5,14,244,246,250,29,8,234,28,16,241,243,250,14,220,232,53,45,15,246,247,236,229,4,40,73,40,237,201,10,0,245,45,5,23,40,12,228,225,253,20,23,38,24,227,10,42,251,217,248,12,36,37,0,12,233,234,28,9,224,4,3,22,10,6,247,8,242,235,18,32,26,236,211,24,74,10,224,248,39,7,236,6,36,38,28,245,224,2,252,243,6,57,70,13,198,201,240,9,42,54,14,245,15,245,239,8,249,6,51,34,13,0,232,247,237,27,45,12,232,13,46,32,2,242,245,255,11,248,246,18,55,41,254,224,243,237,243,255,254,0,57,68,248,212,225,233,21,21,5,26,16,237,234,3,30,255,242,14,4,18,32,21,254,247,242,244,1,75,50,3,16,231,214,247,40,35,12,8,33,0,204,252,12,1,23,58,8,228,0,9,232,4,35,2,14,27,234,227,250,28,38,2,2,245,227,243,18,27,10,254,6,20,5,248,218,15,44,14,8,18,27,253,228,249,253,32,54,15,247,255,241,223,11,62,39,249,251,29,254,216,254,17,47,49,17,243,241,6,245,244,28,42,19,11,246,239,246,10,27,7,249,13,11,255,19,255,243,8,0,1,13,16,12,253,15,4,233,252,25,7,255,21,22,0,253,12,252,247,252,10,25,38,14,242,255,10,5,9,16,15,244,249,23,25,1,3,7,250,1,2,14,23,15,240,245,15,12,0,6,17,10,1,243,249,13,23,0,8,16,1,7,6,1,1,10,6,12,9,7,11,5,0,3,4,8,18,2,251,10,29,25,246,237,244,16,31,23,8,0,252,251,5,7,12,18,9,4,250,251,10,5,1,9,17,255,254,11,10,7,0,2,8,2,12,14,1,8,3,243,6,20,8,250,0,16,11,2,7,4,249,4,12,10,8,4,13,14,1,0,1,6,8,5,0,2,10,7,6,250,247,4,8,12,15,4,248,244,1,10,5,2,6,13,8,251,251,12,8,246,250,4,12,12,11,9,1,250,248,4,4,5,19,19,7,255,255,6,17,11,1,10,24,7,2,10,10,254,2,22,13,254,0,9,14,7,3,2,4,8,12,11,11,10,10,13,17,2,2,14,20,11,8,27,13,254,14,13,7,8,10,13,14,13,6,6,3,3,4,0,0,254,6,29,0,249,255,10,5,11,0,255,254,2,4,4,9,252,250,6,2,10,255,239,0,12,11,0,249,246,4,12,253,253,254,18,254,236,235,13,24,254,244,246,0,5,7,3,248,0,1,241,250,12,11,3,4,2,0,247,251,2,5,14,3,254,2,234,8,31,5,238,248,252,255,20,4,243,9,5,253,246,0,253,13,2,8,242,233,18,30,5,237,235,253,11,10,10,253,235,6,9,5,255,245,254,7,5,2,244,239,255,21,16,242,0,20,239,237,18,2,251,4,254,6,247,3,31,3,0,255,226,243,29,21,244,242,9,22,255,231,243,19,12,241,248,18,4,225,254,23,6,246,240,13,6,249,18,255,243,251,11,5,248,2,246,2,15,19,7,230,233,16,12,13,5,226,232,18,41,13,232,229,6,12,10,0,237,252,7,11,10,247,244,254,0,9,0,238,10,30,4,240,241,243,17,8,2,1,245,4,12,255,255,0,6,12,251,247,8,242,238,4,24,25,253,232,227,255,42,255,247,249,252,13,10,8,255,228,245,17,10,11,236,226,21,42,252,248,228,229,16,39,14,238,3,249,240,22,254,11,236,228,26,48,3,201,0,5,40,13,211,230,14,23,253,11,247,247,248,246,29,25,247,224,224,253,41,48,228,236,247,239,51,32,208,228,17,38,14,1,250,239,230,1,38,19,230,237,28,22,243,235,5,2,244,250,8,7,0,239,238,34,9,218,3,34,233,213,22,42,23,222,219,246,47,19,226,249,1,19,18,244,255,248,233,247,20,38,253,235,44,17,195,251,49,252,231,239,0,30,20,247,247,6,242,2,4,254,248,1,39,2,214,236,26,27,250,236,237,11,22,249,0,252,249,254,249,9,0,248,17,27,235,225,252,37,40,240,194,0,31,3,240,251,28,18,14,234,226,2,23,4,2,10,1,12,236,232,3,18,247,19,25,233,225,16,13,239,245,13,254,237,43,63,225,153,231,53,35,7,2,243,211,255,33,15,224,214,36,62,9,9,249,183,240,40,33,29,233,252,239,243,55,4,198,220,33,74,29,211,211,241,8,36,16,0,227,211,22,245,9,16,20,10,214,231,5,30,230,242,38,28,25,228,220,248,249,35,47,2,215,227,21,4,255,19,6,242,209,19,54,2,233,240,0,255,28,248,228,17,12,7,8,0,249,227,24,18,4,242,232,16,8,10,240,4,15,224,223,246,36,21,48,10,195,212,253,44,22,2,249,233,6,235,2,13,38,13,194,235,0,14,247,6,77,8,171,234,49,223,9,61,249,35,11,183,241,27,24,29,253,181,215,72,81,240,222,18,11,233,211,223,81,32,184,215,65,36,215,203,247,88,18,171,223,45,29,248,229,2,31,240,190,255,66,39,4,216,255,253,236,7,27,19,233,246,42,6,230,2,22,0,249,239,8,31,246,244,235,11,18,239,237,7,25,12,254,245,243,253,37,8,221,242,43,19,196,204,33,63,7,242,191,221,45,79,26,210,185,4,55,1,223,7,35,228,217,1,78,51,177,165,41,81,4,244,223,223,83,37,213,253,17,234,235,5,32,16,236,199,229,22,86,37,174,179,20,52,29,250,222,207,10,85,36,222,182,196,48,69,20,240,235,23,7,228,251,220,246,87,66,198,140,43,80,14,4,16,203,157,7,60,59,20,225,223,26,24,235,216,175,7,46,31,20,73,23,131,204,73,27,204,249,25,10,14,36,21,204,213,11,57,18,197,198,251,68,58,235,14,235,157,215,27,125,87,175,148,13,44,26,36,228,196,8,13,39,52,234,148,252,96,60,18,170,155,64,84,234,187,225,8,19,240,9,17,14,247,192,42,73,250,236,224,238,76,33,176,218,49,47,252,223,252,248,244,63,32,164,21,52,195,211,23,44,9,225,248,57,210,246,102,208,191,37,2,227,29,53,220,242,15,15,205,238,40,27,30,216,218,12,21,220,202,23,105,37,140,208,60,7,219,35,42,232,244,255,47,46,189,167,246,55,90,12,207,162,222,64,81,47,236,173,222,81,42,243,182,203,46,46,30,202,207,24,63,20,36,23,164,163,255,77,100,250,187,223,0,245,35,71,220,196,232,18,31,21,251,239,71,224,160,15,4,10,93,12,190,241,234,187,48,59,24,21,193,215,5,25,2,232,254,12,33,248,0,240,1,41,18,5,252,232,247,42,31,201,12,74,223,229,16,20,12,242,226,235,1,14,44,0,179,245,19,187,8,107,253,186,234,44,3,216,3,24,224,3,34,1,232,7,238,201,48,67,242,2,252,10,33,225,224,8,1,14,84,243,166,34,67,222,188,51,114,230,187,180,6,114,37,200,190,254,10,20,28,21,38,187,198,9,60,3,166,245,106,43,156,233,0,33,43,177,220,32,22,0,252,226,10,77,235,165,244,62,6,247,29,251,47,252,176,221,110,44,229,12,236,222,61,26,209,237,29,36,17,211,211,8,56,11,211,6,233,217,7,61,3,221,226,251,33,246,223,42,242,214,21,50,243,240,253,226,19,47,56,220,192,245,29,33,19,220,230,44,38,238,5,221,174,98,43,206,245,250,57,250,214,27,254,197,23,55,254,172,1,72,14,201,233,54,15,203,0,69,232,240,227,223,47,77,0,182,238,51,50,243,166,19,39,234,254,47,4,215,11,10,223,253,40,55,210,235,10,7,16,176,223,96,77,210,164,212,16,90,54,162,218,10,13,65,13,185,210,36,41,37,17,214,245,238,0,54,35,217,223,20,16,227,212,60,33,221,230,12,16,22,242,229,43,240,194,14,15,223,39,70,244,186,236,46,53,233,174,9,64,12,251,220,4,31,3,218,244,30,240,14,30,18,238,40,243,163,224,74,45,198,249,255,33,3,227,10,253,254,250,31,44,254,10,215,205,29,26,212,234,23,5,10,18,241,230,45,1,218,4,37,31,192,220,50,56,234,248,14,216,11,240,11,67,210,233,21,248,214,0,39,35,0,215,35,10,210,255,16,228,210,92,61,222,189,247,21,247,10,9,24,224,220,27,68,6,193,233,48,28,204,250,49,29,221,211,23,7,248,6,10,21,255,251,214,221,29,23,0,237,8,252,241,23,23,246,216,0,22,246,29,32,230,197,26,63,6,224,247,37,43,0,210,254,236,228,77,21,174,206,15,49,14,234,227,252,251,0,9,19,5,246,1,4,17,239,208,252,30,66,46,3,199,192,6,67,66,246,199,215,66,72,220,202,255,14,27,253,216,235,242,0,57,42,191,155,229,72,49,222,0,253,188,233,21,27,16,31,9,193,213,78,55,0,237,227,36,54,22,212,221,12,74,68,206,186,27,74,27,195,216,12,0,252,5,23,1,212,208,234,50,53,240,225,199,232,15,18,10,202,207,4,19,43,23,247,4,254,238,253,22,32,238,232,66,75,222,207,225,10,61,55,242,200,239,32,14,0,240,255,21,6,239,34,20,204,246,9,235,234,255,9,0,29,0,208,220,0,58,54,217,180,253,19,37,64,251,194,219,254,28,254,253,254,29,50,0,173,212,57,74,16,223,245,2,242,8,42,0,243,4,253,9,27,241,217,1,34,36,1,223,217,250,28,30,236,224,239,242,14,20,253,232,212,232,78,65,192,166,235,42,66,14,225,228,230,12,67,48,221,208,249,29,42,44,10,201,208,52,69,230,218,24,30,20,239,208,235,23,40,29,10,249,227,205,219,4,39,27,232,224,254,28,35,231,193,228,37,9,244,255,7,33,246,225,234,246,250,16,48,37,243,204,242,35,64,19,210,219,231,243,14,43,51,32,237,206,2,19,3,2,236,252,29,9,234,8,46,9,223,234,12,24,252,229,247,249,9,16,1,233,6,14,245,250,255,251,242,252,5,6,10,233,223,5,22,12,249,4,247,240,245,27,29,231,235,26,34,15,248,223,247,14,3,0,3,22,13,230,239,43,54,236,219,233,253,19,18,9,0,5,7,0,240,236,1,18,251,16,12,239,234,5,11,242,247,12,33,250,241,0,234,240,0,10,235,219,248,0,0,72,4,48,0,20,243,243,32,248,1,249,9,17,225,246,27,7,231,12,8,254,5,245,255,15,0,210,26,28,197,8,36,238,7,245,247,30,237,0,26,235,38,16,183,40,43,183,12,55,228,255,252,3,23,227,10,24,231,32,245,220,36,4,231,28,21,247,248,8,10,208,244,18,3,226,205,40,40,222,255,22,236,18,0,0,24,243,19,14,230,2,246,237,4,242,4,37,244,5,20,2,235,220,29,82,188,216,75,243,253,253,249,27,238,242,8,1,245,16,236,228,42,48,202,236,53,231,231,36,0,249,21,204,52,228,214,65,198,214,110,251,205,32,48,10,222,0,19,228,251,10,201,8,74,235,229,251,251,253,31,233,206,66,30,205,3,6,23,248,211,15,23,249,237,6,10,33,240,201,49,22,215,247,24,24,9,240,6,47,249,228,42,5,211,1,12,37,16,216,2,29,218,208,17,249,33,1,200,46,7,228,239,255,17,232,235,35,27,222,232,17,7,240,237,17,23,216,234,44,21,240,7,44,1,224,248,48,13,217,5,20,26,0,3,17,1,214,243,42,246,232,32,31,235,243,6,243,240,7,15,4,8,244,241,254,8,4,3,0,236,237,243,23,227,0,51,196,200,76,45,201,231,15,27,249,253,9,249,37,18,194,16,69,213,211,9,19,26,244,8,23,20,238,210,9,59,221,205,82,52,181,231,26,7,230,238,37,17,4,226,239,40,32,234,203,5,38,235,228,40,220,0,65,208,210,41,26,213,238,35,43,213,228,63,217,234,22,255,8,253,233,0,47,244,5,12,2,10,240,42,240,230,46,237,234,28,24,250,3,254,237,253,10,26,213,246,87,224,155,58,64,172,167,58,52,206,0,26,252,239,238,239,233,37,16,236,245,27,20,237,30,14,225,2,17,2,254,30,10,241,18,32,10,241,251,255,13,254,234,39,4,245,17,220,0,37,243,193,36,47,195,193,76,60,177,244,40,245,210,236,255,2,252,26,3,254,45,201,196,60,238,231,53,18,244,24,245,222,20,14,2,15,242,249,246,38,28,219,235,48,49,201,228,44,16,218,17,0,10,26,1,233,226,35,19,223,208,40,25,217,1,217,24,34,242,229,238,55,48,159,183,75,51,251,229,244,41,253,179,249,66,42,229,212,47,29,212,0,25,3,2,30,19,234,0,221,20,39,235,249,5,11,5,192,232,67,0,223,20,234,12,30,212,234,4,12,7,217,15,46,217,244,6,240,23,39,236,226,30,17,242,248,1,18,251,255,255,0,11,11,0,251,16,23,241,0,11,16,248,239,245,16,12,216,0,3,10,43,246,227,13,254,205,1,47,31,234,194,35,66,234,210,228,6,62,226,202,43,19,193,227,54,33,17,228,240,254,14,14,186,30,126,219,166,31,42,248,214,231,52,2,1,39,191,228,68,227,212,63,37,3,227,215,35,31,226,0,8,250,17,240,219,18,23,253,214,0,51,0,209,21,51,242,202,252,43,8,250,16,7,18,242,218,36,13,194,246,35,12,255,219,251,71,10,189,233,15,13,0,227,41,64,236,191,212,17,36,1,215,52,43,216,186,4,65,11,236,3,16,245,253,24,5,222,15,19,2,21,243,227,32,11,200,5,58,22,220,225,21,10,14,224,185,57,66,197,248,25,230,254,249,242,26,24,238,240,253,33,14,244,26,240,206,244,8,22,20,4,4,7,16,221,225,18,33,231,235,35,24,22,238,240,253,4,8,234,236,2,21,6,30,250,221,18,6,233,244,17,22,254,244,4,21,17,241,213,16,23,223,253,18,255,5,3,225,24,4,245,239,217,27,44,247,2,7,6,0,210,244,50,9,247,9,0,20,216,232,53,11,230,2,248,8,30,250,237,241,35,50,252,210,225,6,11,8,7,22,254,231,253,255,3,15,252,241,14,11,236,230,227,250,22,22,2,7,21,0,230,253,31,9,235,245,16,13,229,239,2,5,20,250,234,27,29,225,213,4,39,48,5,231,0,3,0,14,229,227,13,17,24,15,231,229,3,246,22,6,255,17,244,239,20,3,247,16,247,234,245,21,1,217,246,43,35,2,231,241,13,247,248,20,13,18,4,229,242,7,9,250,249,17,255,245,19,0,0,19,255,6,242,237,254,254,247,10,10,247,2,251,239,242,6,36,13,242,232,13,24,255,236,246,5,9,16,29,7,219,250,18,252,247,2,25,0,222,249,25,30,0,237,216,2,31,254,244,251,1,0,252,255,24,247,224,254,18,30,8,253,251,3,0,13,251,235,16,22,5,246,246,9,16,242,253,11,9,250,208,237,22,18,255,253,6,8,237,227,249,254,250,7,10,20,12,250,248,249,0,0,0,9,19,12,17,12,253,235,242,7,19,10,244,253,9,9,8,2,255,2,244,243,254,248,246,1,22,4,0,244,251,253,243,255,17,20,244,237,253,2,7,6,250,247,249,250,4,0,1,0,6,9,169,2,15,0,248,210,174,42,30,188,13,55,245,4,253,171,232,59,16,228,244,243,221,35,28,227,237,8,48,27,3,252,218,9,14,243,249,250,4,20,3,244,243,7,37,11,227,247,251,31,58,231,237,2,5,254,227,253,15,243,248,244,19,4,249,30,11,5,27,35,35,187,131,49,46,252,236,220,241,36,60,208,211,62,254,255,25,227,2,30,27,240,198,244,37,241,213,19,241,1,34,241,17,5,230,9,12,4,254,14,5,12,244,238,23,6,21,27,231,255,16,245,232,250,4,15,7,238,225,7,255,23,15,5,229,239,26,249,234,27,254,185,229,31,239,221,18,215,172,221,43,6,238,251,234,11,34,254,254,5,11,50,34,225,243,53,49,8,233,250,41,42,42,240,252,53,31,244,246,20,25,18,235,249,42,1,238,15,1,2,29,0,2,40,254,18,11,226,15,44,231,168,243,37,48,238,190,244,17,47,245,224,4,246,23,29,247,230,244,42,37,225,204,234,37,67,210,168,236,55,67,221,192,9,67,253,218,227,3,52,22,227,203,235,86,48,210,176,21,69,30,253,230,29,38,245,248,49,28,254,26,8,237,33,57,22,245,242,32,57,0,226,15,42,20,0,233,183,238,55,45,213,172,203,29,71,254,185,170,235,49,25,190,195,21,42,250,195,230,13,27,19,239,244,226,245,0,249,4,224,204,231,50,50,208,187,204,189,231,52,18,205,191,239,26,250,241,220,228,18,23,226,210,25,71,30,195,191,9,79,62,250,2,250,3,43,44,4,250,26,10,254,30,36,5,245,17,33,10,245,4,55,3,6,50,4,254,17,249,28,26,245,0,6,240,237,16,253,204,215,248,232,30,23,190,208,26,32,225,208,243,22,3,215,241,13,46,38,253,224,229,28,37,17,5,3,244,244,0,0,225,254,17,215,198,237,35,26,233,219,213,232,30,8,244,6,242,8,36,14,196,230,50,48,249,212,245,21,27,235,236,246,2,38,2,197,209,29,28,0,9,242,248,31,32,228,226,41,68,29,221,244,45,88,62,248,238,250,49,42,50,10,195,206,76,84,197,204,29,17,183,19,59,244,201,234,252,238,29,231,221,11,16,209,245,22,236,228,13,11,225,196,229,41,32,224,232,248,255,246,226,22,28,216,174,33,78,24,216,235,32,36,11,252,250,247,31,79,26,212,247,78,69,28,236,244,65,75,30,238,24,29,248,27,78,37,255,215,230,69,64,10,12,4,0,253,24,43,16,206,235,18,42,37,2,174,176,254,43,2,221,200,219,254,241,237,229,210,237,252,221,217,242,237,215,244,17,220,172,202,26,22,242,222,250,238,216,228,233,241,244,229,220,247,233,219,215,239,251,239,216,208,226,18,44,27,0,254,242,7,29,33,20,9,15,61,59,8,224,226,29,92,85,11,211,206,250,21,235,206,240,252,204,174,217,251,237,187,186,202,216,207,173,159,178,233,241,198,169,166,181,214,9,4,209,179,193,239,8,6,249,239,235,246,7,14,0,252,12,18,21,245,228,8,31,0,0,0,183,4,23,0,11,14,14,14,12,9,7,8,15,14,14,15,11,4,2,254,251,247,248,249,254,4,8,7,6,10,9,7,11,9,3,1,7,9,6,14,13,14,10,12,12,12,15,16,14,18,14,10,11,11,9,10,12,12,18,16,6,3,0,0,0,255,0,1,9,8,14,23,21,17,22,2,250,1,255,199,133,166,246,26,34,27,1,8,21,3,233,240,3,32,53,54,43,44,39,16,1,5,22,29,30,30,34,35,30,32,18,7,8,20,33,48,45,42,32,19,10,9,9,9,4,8,14,24,16,6,1,0,246,246,6,15,14,9,7,4,10,14,244,186,206,248,29,13,18,4,7,26,4,237,224,0,25,38,33,18,23,26,17,254,4,9,18,27,31,27,24,22,11,6,253,0,6,22,20,9,5,12,14,8,1,250,248,1,3,2,255,0,4,7,255,251,255,10,17,11,9,10,12,11,8,14,17,21,28,23,25,19,17,25,26,14,9,15,29,29,17,19,17,13,16,15,15,20,17,10,254,254,0,8,8,7,9,8,4,3,0,0,255,252,255,2,15,7,11,13,15,15,13,8,16,25,17,24,28,23,23,20,28,36,33,22,15,16,26,24,14,11,12,9,15,24,15,8,7,0,251,254,0,5,10,11,16,3,5,2,0,248,246,1,9,16,7,3,4,5,8,5,0,247,4,19,10,0,254,9,14,12,1,253,14,17,14,1,1,18,19,25,17,3,9,22,19,9,2,255,0,9,8,4,10,15,13,255,248,252,6,14,13,7,6,13,8,254,254,11,13,15,11,5,12,19,16,11,3,252,7,18,20,14,11,13,18,10,12,10,4,17,13,6,1,7,12,17,9,254,0,6,13,11,10,7,10,11,7,15,9,12,18,16,19,14,9,8,17,18,21,20,17,19,18,11,0,5,16,26,17,1,5,19,24,3,249,1,7,19,10,3,10,15,13,8,0,0,14,22,7,4,22,28,22,14,4,15,23,16,16,24,34,33,19,4,0,7,21,33,27,21,14,4,0,0,6,6,11,14,11,15,10,9,3,255,6,11,22,27,21,4,9,23,20,6,8,12,18,22,12,8,14,14,10,2,0,255,6,17,18,8,5,4,252,3,0,0,6,9,10,8,4,3,13,11,3,1,0,11,23,23,16,17,14,11,13,17,12,10,8,3,6,11,15,16,11,4,11,7,248,246,5,7,3,9,12,12,11,0,252,16,22,13,13,19,32,35,26,17,15,30,34,21,4,15,34,37,23,15,18,27,37,19,7,14,23,22,17,4,0,22,24,16,7,9,19,19,14,5,6,12,12,4,5,21,19,13,8,255,250,255,10,15,9,8,14,11,3,254,1,14,18,23,24,20,24,14,4,3,8,15,28,34,20,16,12,3,2,4,1,4,11,13,16,11,0,248,255,5,3,9,4,0,7,14,1,248,0,6,13,9,0,4,15,9,10,11,9,18,23,25,15,11,14,19,23,16,13,21,27,21,8,6,12,16,7,7,8,9,14,14,4,249,0,1,0,0,254,1,1,250,242,245,0,10,2,252,248,248,252,2,0,0,7,10,18,24,17,5,5,7,4,3,7,20,22,21,20,14,5,255,7,17,14,10,11,17,15,2,0,4,4,12,17,12,10,4,0,9,14,7,4,3,6,8,10,16,17,11,11,14,14,8,9,12,13,14,7,5,16,21,18,17,14,12,17,17,15,3,255,10,29,30,21,12,1,2,0,254,5,17,18,13,3,0,7,9,2,253,249,0,6,9,1,1,8,8,2,5,7,0,254,255,1,13,20,19,17,16,15,6,5,15,16,15,18,17,17,18,14,4,253,252,255,5,13,10,1,4,7,4,253,249,253,255,0,3,10,12,11,10,6,15,20,17,15,19,23,21,20,23,16,12,24,29,22,15,9,14,16,1,246,255,11,15,17,7,255,253,251,254,255,3,5,14,20,14,8,12,18,9,5,6,13,21,21,17,17,20,23,15,9,11,17,14,15,12,11,15,21,21,13,5,8,5,8,5,2,4,11,5,7,10,4,5,10,12,9,12,10,10,12,13,10,10,15,11,14,16,16,13,9,2,6,19,18,13,11,15,15,12,5,8,14,17,20,21,18,9,7,16,14,7,11,19,18,19,17,18,14,11,7,4,6,12,14,13,7,9,15,14,3,254,0,4,6,6,6,10,13,9,255,0,10,13,9,8,3,4,14,14,8,7,9,7,5,3,6,2,5,8,8,3,4,6,4,7,6,4,3,7,6,0,3,12,20,18,8,6,12,16,12,7,6,8,13,11,12,14,19,20,15,9,7,8,5,9,7,0,2,9,8,5,8,6,5,8,6,2,7,17,18,17,15,11,13,12,10,9,11,20,26,23,17,12,13,17,14,8,9,13,17,15,13,8,12,17,15,13,9,5,7,12,12,13,14,13,7,2,7,13,17,17,11,9,9,11,10,8,7,4,5,7,16,18,11,9,11,17,19,12,5,7,11,16,17,12,13,18,17,13,5,5,12,16,14,10,9,11,12,8,4,4,11,13,9,3,5,8,3,1,3,5,8,9,7,6,5,6,11,11,6,7,11,13,15,13,10,10,10,10,8,10,13,17,18,17,15,13,11,12,8,4,8,11,9,8,9,12,10,4,6,6,7,10,12,12,10,11,9,12,11,11,8,7,13,16,15,9,10,16,14,10,7,5,7,13,9,6,8,7,8,12,12,10,3,4,4,4,5,0,58,6,27,0,8,9,9,8,10,8,9,8,10,8,8,4,5,1,250,159,133,206,248,27,55,18,7,42,51,45,26,231,224,252,15,41,48,32,37,54,57,46,31,251,246,2,9,22,19,12,24,40,44,43,28,0,251,251,253,253,246,246,3,15,28,25,13,255,246,247,250,247,242,247,255,15,25,28,22,15,3,5,0,0,255,2,4,11,23,25,25,21,18,13,7,5,1,0,2,11,14,22,23,19,17,17,13,7,3,0,255,1,3,7,12,15,15,18,11,7,6,2,4,4,1,4,6,9,15,18,10,10,8,4,11,12,9,5,9,11,22,25,19,15,10,13,15,13,5,3,6,9,14,13,14,11,9,12,19,14,6,5,7,8,15,19,12,12,14,13,15,20,253,212,0,29,31,49,43,5,5,21,15,11,1,241,251,0,24,45,39,15,16,12,17,24,21,254,0,14,31,32,27,12,12,16,21,16,16,3,27,17,29,40,22,7,14,6,253,9,254,243,244,255,4,9,12,254,247,3,2,1,1,255,246,254,254,18,17,23,15,14,8,9,1,248,248,246,240,236,191,157,211,17,55,60,62,13,37,48,58,36,24,17,13,228,21,21,236,248,18,243,14,25,7,10,250,190,211,9,37,43,43,246,192,213,229,243,231,210,185,225,0,16,26,12,2,14,37,15,7,244,242,21,35,39,38,44,48,70,72,46,23,19,19,31,39,29,13,30,46,49,54,35,13,13,10,14,4,253,241,4,22,28,23,13,3,255,13,7,243,240,238,253,7,14,1,21,12,30,34,33,20,22,22,12,29,17,12,25,29,32,34,9,20,51,46,38,44,18,3,30,32,14,12,5,254,19,21,13,8,252,236,252,2,255,3,251,252,8,5,249,243,243,253,19,6,249,252,250,251,6,4,246,249,0,10,26,21,5,5,14,10,6,21,3,4,41,35,23,32,15,5,20,32,4,2,252,236,254,8,11,241,248,247,252,10,255,240,240,2,3,2,0,241,245,5,10,14,10,252,2,6,5,8,1,237,250,10,10,13,19,13,24,36,19,3,255,0,23,38,33,11,8,16,25,24,5,239,245,247,3,10,8,8,21,36,28,12,249,242,0,21,14,252,254,247,10,37,30,2,2,27,19,12,254,233,228,244,3,8,17,11,16,35,43,44,31,17,252,243,240,246,241,1,36,38,29,29,17,5,9,9,250,239,0,13,31,33,6,251,7,18,12,23,0,244,10,5,249,246,235,233,252,9,8,0,252,3,255,248,2,8,6,8,19,26,28,28,34,26,16,12,253,253,255,242,11,42,29,28,52,22,22,52,26,245,254,233,209,248,0,234,255,8,250,19,23,253,251,1,252,5,8,237,239,249,236,244,24,247,222,255,32,48,43,40,5,253,25,14,244,237,1,30,26,28,20,254,9,15,15,12,0,5,24,12,5,4,10,4,18,25,12,25,37,15,4,10,255,236,244,253,11,20,22,18,5,10,22,16,0,229,244,12,7,4,9,249,2,26,25,11,254,254,3,5,255,241,254,2,2,29,34,24,61,55,19,10,30,33,33,37,14,4,253,6,11,2,7,250,7,3,1,20,18,15,3,7,6,9,1,250,8,245,239,202,204,235,0,8,21,254,231,7,5,252,247,244,245,5,32,36,18,4,244,18,36,26,31,53,33,37,55,24,247,5,0,247,13,0,244,9,18,22,12,252,2,11,8,244,246,240,224,242,243,234,240,253,0,248,237,248,4,11,25,35,34,24,7,12,25,5,11,11,12,48,42,41,48,45,25,24,28,12,11,22,33,11,255,242,245,2,9,16,23,24,16,8,1,244,226,211,220,229,233,235,241,0,11,34,34,27,19,25,25,10,3,248,0,12,12,8,30,41,54,53,47,47,38,27,16,5,0,0,252,9,17,10,24,35,31,47,21,245,239,241,225,213,220,223,231,253,10,10,21,4,245,5,13,246,239,233,241,15,27,28,18,22,43,36,23,16,11,5,17,34,23,13,31,24,12,15,9,26,30,19,14,2,248,246,241,234,235,232,233,226,235,13,14,3,246,250,249,241,237,234,241,0,242,253,22,24,33,44,47,37,12,4,7,7,255,5,5,241,2,26,38,26,37,56,51,31,1,230,215,220,235,241,252,10,26,29,23,22,11,5,0,250,237,228,220,236,254,6,20,21,35,35,46,34,17,20,4,255,19,10,0,10,34,45,26,33,31,26,35,27,5,0,14,15,17,20,25,22,15,18,3,250,6,19,4,247,242,0,16,12,12,11,5,6,7,244,234,253,248,2,19,15,10,19,31,17,9,23,31,21,15,2,6,255,0,17,16,15,10,17,22,31,30,17,0,241,254,5,226,220,252,20,14,25,34,37,42,28,4,255,238,231,232,226,242,5,20,38,46,33,19,20,16,253,2,19,9,1,0,4,6,11,20,23,12,0,3,1,244,235,1,6,4,1,1,10,10,2,7,11,250,0,6,255,9,9,22,22,7,13,9,5,8,16,13,0,255,9,16,8,7,30,33,12,11,17,17,27,19,4,2,0,248,0,23,18,11,12,7,10,17,24,21,0,254,8,4,254,2,1,3,21,29,26,9,14,27,20,11,4,252,244,246,250,249,245,11,34,38,32,29,38,33,13,254,254,241,246,4,7,5,20,20,21,41,41,20,27,25,250,4,5,247,249,255,253,11,22,30,37,24,6,14,10,6,4,252,253,3,247,241,251,243,235,245,250,8,23,34,44,41,37,34,11,4,13,3,9,21,21,33,38,43,46,40,45,43,30,21,25,27,30,25,13,15,0,232,240,249,241,250,10,9,252,2,0,0,2,6,247,235,234,221,223,226,239,249,243,248,5,21,30,30,34,27,5,0,4,4,3,13,25,41,48,45,53,52,49,45,37,30,24,17,11,11,8,254,247,253,3,10,255,6,21,16,8,11,3,243,246,246,235,232,241,245,8,23,24,19,15,17,18,14,13,10,5,5,3,6,15,14,20,33,37,47,50,39,27,26,22,16,6,10,9,0,9,14,4,1,2,246,249,241,229,243,3,253,252,250,239,247,255,251,248,252,1,1,8,12,8,7,18,19,15,22,22,26,31,32,32,22,14,6,3,6,3,8,15,22,30,26,19,10,6,5,253,0,0,253,253,255,254,253,2,255,0,1,2,0,254,255,251,245,243,253,4,4,9,18,19,23,24,17,4,246,250,0,1,255,3,12,12,20,26,15,11,18,18,7,253,255,2,3,7,9,2,4,10,12,14,14,12,15,16,15,18,21,20,22,23,18,17,18,21,28,34,33,35,39,35,24,25,24,6,5,255,243,237,244,249,252,255,1,9,9,8,9,2,0,249,246,252,1,4,0,255,248,250,6,5,6,7,4,6,7,2,255,251,244,249,254,255,0,4,9,9,11,9,6,7,8,5,2,0,247,234,233,226,222,226,235,241,252,2,9,14,12,11,7,10,8,7,11,14,22,25,29,26,33,44,43,48,47,48,43,37,32,24,22,23,27,23,21,24,29,38,44,47,43,39,36,31,28,24,16,12,9,9,7,10,13,20,20,12,7,8,11,15,19,16,15,13,16,17,10,9,8,12,8,11,8,0,0,195,5,51,0,0,1,1,1,1,1,1,2,1,1,0,0,255,0,4,5,4,2,0,0,1,2,2,3,2,3,1,248,197,214,0,44,49,16,239,219,243,0,17,24,22,18,0,247,239,0,13,24,19,12,2,0,254,2,12,13,18,11,1,1,2,8,9,8,6,5,1,2,0,0,3,6,5,3,0,0,2,1,6,2,3,0,1,3,2,3,3,3,3,3,1,5,6,3,6,4,5,2,4,3,6,4,6,4,3,2,5,6,6,4,1,3,5,6,7,4,2,3,3,4,2,2,4,5,4,3,3,1,1,2,3,5,3,1,2,2,4,6,1,254,3,0,4,5,1,1,1,255,1,2,0,0,0,5,3,3,255,253,255,4,4,1,5,0,2,2,1,0,1,2,1,7,0,0,253,253,3,9,1,255,252,251,3,6,4,2,0,251,255,4,5,5,4,1,252,254,3,4,5,3,254,0,4,254,3,3,2,4,3,0,255,2,232,237,10,18,24,11,247,239,243,254,9,17,17,5,247,247,248,255,5,6,8,4,0,251,247,1,2,6,7,1,252,1,0,0,3,4,5,4,0,251,254,7,4,13,6,254,251,1,236,255,22,18,13,1,246,249,0,2,10,9,3,1,249,255,5,11,2,0,0,255,7,254,3,0,3,5,2,9,7,9,7,6,2,3,6,3,6,0,255,1,9,3,4,4,0,5,7,2,6,3,253,3,2,9,13,4,3,2,239,195,232,27,54,38,252,217,222,251,1,9,10,14,5,243,237,242,8,27,25,12,0,250,3,6,7,15,13,12,3,0,8,17,26,26,21,20,20,17,15,14,11,43,51,24,3,219,217,237,247,255,233,182,196,224,251,26,250,222,223,221,238,255,250,254,2,245,248,244,254,18,25,24,29,24,24,35,57,62,90,38,159,185,224,57,126,67,0,201,181,221,252,13,52,50,12,220,194,209,237,19,37,31,250,220,211,222,1,20,27,11,238,226,247,12,17,18,9,16,7,252,4,9,7,24,28,18,7,244,5,17,14,22,22,10,255,3,11,22,11,6,4,3,6,15,12,0,248,250,14,6,0,255,252,7,4,1,252,246,254,4,4,1,254,1,0,4,11,10,255,255,1,5,0,254,255,4,8,9,2,1,248,247,12,12,7,254,251,6,1,254,3,0,3,6,254,250,6,255,251,249,247,255,12,10,247,243,248,0,255,254,1,247,249,253,0,8,9,252,247,5,2,252,255,1,6,0,253,252,1,14,5,248,248,0,11,10,1,5,9,253,242,248,2,16,20,5,246,243,252,0,14,11,13,17,2,240,241,5,21,27,8,248,243,251,12,5,1,2,13,3,239,243,0,9,12,15,12,250,247,4,16,15,10,2,10,17,2,252,247,12,30,18,254,249,0,5,17,16,4,0,7,7,4,3,1,253,254,7,7,250,255,248,247,12,11,3,253,242,1,12,16,9,2,246,245,0,0,5,13,2,0,254,251,3,16,2,253,13,6,0,0,255,13,11,242,244,2,19,20,7,248,248,0,9,9,4,252,250,255,1,4,0,255,4,253,252,0,253,4,13,4,2,250,249,4,0,1,12,6,3,250,249,252,11,14,2,2,2,0,253,255,255,19,22,249,243,0,0,17,20,255,241,246,8,13,250,0,7,0,251,250,254,4,6,9,0,249,238,251,14,20,11,0,245,245,1,16,8,9,9,255,247,4,10,10,20,6,250,3,4,13,18,7,252,248,13,22,12,254,250,250,0,12,15,11,2,254,0,5,9,6,1,4,254,255,251,247,5,15,11,10,1,245,255,14,14,4,12,18,254,254,7,9,17,10,252,240,0,17,13,2,243,246,21,21,1,0,250,255,7,9,4,6,7,255,254,253,9,8,252,255,4,14,11,252,244,0,15,13,5,3,247,245,255,21,13,254,251,245,255,0,249,254,12,7,248,255,251,0,15,22,5,235,247,6,14,22,7,0,251,249,5,8,2,4,4,8,4,247,255,5,4,7,8,3,0,247,238,1,19,14,3,251,253,251,249,2,16,26,10,251,242,247,15,20,11,0,2,1,245,0,6,20,14,249,236,243,5,24,25,4,249,244,254,0,0,10,16,5,2,0,254,4,13,253,3,10,5,5,12,7,3,3,0,2,252,2,15,8,253,5,0,0,3,255,9,11,252,0,4,8,6,253,248,246,2,11,6,253,241,228,226,2,22,34,25,239,204,220,7,15,251,232,239,248,4,249,232,238,15,24,9,10,249,242,4,7,16,18,18,255,237,4,25,13,11,5,251,5,2,1,11,11,8,9,4,0,247,249,9,12,5,0,1,0,245,252,14,12,253,252,248,253,6,0,249,250,255,6,13,0,255,1,255,3,6,11,8,2,8,3,8,7,252,255,5,12,16,14,2,255,253,4,0,1,8,3,10,10,2,250,246,0,9,12,10,1,253,16,7,245,251,7,19,15,2,254,2,5,8,0,0,10,12,254,249,6,18,15,7,252,246,1,9,6,12,5,249,1,6,253,5,14,7,248,242,0,15,17,6,245,246,0,2,6,4,254,253,1,5,252,241,251,12,7,3,0,242,0,0,246,255,8,9,0,244,244,2,6,14,9,252,249,4,7,5,0,255,4,6,10,4,254,0,0,5,3,0,254,253,8,13,8,253,243,246,6,8,255,0,4,3,250,246,251,6,14,1,250,252,251,0,0,251,255,9,7,2,245,241,0,11,13,10,0,251,249,247,11,20,7,252,2,9,1,5,255,1,19,13,255,255,253,3,18,4,252,4,7,12,6,5,7,9,12,3,253,0,3,4,15,15,7,248,244,0,15,20,14,4,1,0,5,3,3,17,18,6,0,2,6,16,8,1,1,4,7,3,1,7,14,8,251,244,249,4,13,6,1,2,253,248,2,12,8,2,252,0,252,252,5,10,2,0,254,253,253,3,13,9,4,254,2,7,3,255,252,1,15,17,6,252,243,253,9,9,8,1,253,252,3,3,255,254,249,254,254,252,254,0,247,252,0,253,253,250,246,248,1,6,6,253,242,240,252,6,4,1,252,252,254,250,250,0,1,255,0,2,0,247,251,5,1,255,2,4,0,252,255,4,7,14,7,254,2,9,10,9,3,3,13,16,10,5,5,7,11,14,11,10,14,13,8,3,7,17,26,20,12,10,13,14,16,18,22,28,27,19,16,8,7,20,32,33,29,26,12,2,8,21,29,32,26,20,13,9,13,13,20,31,24,15,11,10,21,19,14,12,14,16,12,3,8,16,17,15,14,2,7,8,0,10,14,20,16,6,3,5,7,10,14,14,11,13,5,0,252,253,7,7,249,230,237,0,43,6,37,0,6,8,5,6,3,1,5,8,10,13,15,19,11,6,4,1,0,5,2,6,11,13,9,8,9,9,8,7,8,12,6,4,5,3,6,12,11,11,7,0,255,2,5,5,4,11,10,11,10,5,6,0,253,254,0,251,240,0,8,15,19,24,34,54,47,60,40,205,217,208,178,228,243,228,1,11,17,23,23,15,22,10,254,235,229,232,245,255,9,16,32,37,34,24,14,254,244,241,249,248,1,10,19,29,35,28,27,17,9,2,254,247,248,252,247,255,13,16,23,20,11,1,243,239,236,238,249,244,254,250,251,0,5,9,15,15,9,254,248,248,243,2,21,13,22,33,21,23,26,1,11,25,29,37,15,12,11,24,19,19,12,3,13,19,19,12,8,241,224,12,33,1,5,244,245,32,12,253,253,250,0,17,16,252,255,4,20,22,18,22,27,28,24,16,0,4,21,17,10,8,9,252,1,16,10,9,6,12,6,254,1,22,9,6,0,250,4,3,240,233,238,252,17,250,253,16,38,23,18,7,6,248,234,224,214,231,222,241,240,219,239,243,15,28,6,3,0,5,12,7,10,23,25,32,28,25,21,30,23,21,23,8,12,23,24,23,22,22,16,16,16,7,4,4,253,255,0,254,249,251,248,0,1,3,245,244,247,0,5,8,9,8,12,7,2,10,17,16,12,12,17,22,24,19,22,26,14,12,13,12,7,6,8,11,11,16,15,20,24,5,5,0,4,7,5,9,7,6,8,9,253,255,0,0,246,251,249,3,11,18,13,11,10,0,252,5,252,244,247,0,11,14,17,27,29,29,22,9,8,6,11,254,3,252,4,23,14,8,9,5,0,253,249,241,248,5,4,9,9,15,19,20,12,3,251,250,250,253,246,247,0,6,7,14,19,15,14,9,0,7,19,4,251,2,8,10,8,13,11,4,18,19,9,12,14,4,8,14,5,2,12,14,9,12,4,4,0,4,0,251,5,254,251,1,2,5,3,4,18,19,9,6,9,0,0,0,252,246,4,11,1,6,22,16,17,10,254,1,8,7,254,1,29,19,10,11,18,11,2,250,232,245,11,0,241,247,15,18,18,22,12,16,25,16,247,4,9,248,245,254,12,18,13,255,4,13,28,8,251,0,6,2,0,5,14,18,13,251,255,4,251,244,234,245,10,7,6,7,10,28,26,9,253,0,11,12,254,240,3,15,14,26,18,13,20,13,255,6,17,1,242,247,0,13,14,15,3,8,25,7,4,6,0,255,1,8,10,14,9,9,15,8,8,0,250,0,3,250,5,17,19,19,16,17,15,21,15,7,7,9,12,0,254,0,4,11,7,0,253,0,7,6,11,10,16,13,7,11,6,6,3,1,3,9,5,2,14,15,0,1,17,28,25,11,253,3,11,7,254,251,247,8,15,6,10,28,29,25,21,10,254,0,1,246,238,255,13,15,22,27,27,28,24,10,7,6,253,251,251,244,250,6,15,13,18,23,18,11,253,252,254,251,4,18,13,14,26,24,22,19,10,7,2,6,4,238,241,12,21,7,9,17,25,25,25,14,255,17,18,6,9,1,248,252,11,2,12,11,249,11,37,30,14,5,7,3,253,22,11,9,21,2,3,25,27,7,2,11,13,18,252,0,3,5,14,235,225,242,248,255,237,236,16,31,29,7,13,10,245,234,252,245,234,228,231,249,11,4,250,1,8,253,232,240,248,235,232,249,254,245,238,235,246,249,250,252,250,255,6,252,245,244,235,235,232,238,245,235,241,0,2,253,249,0,6,252,254,0,0,253,7,14,18,24,28,25,20,11,20,33,36,44,44,49,54,38,39,38,15,9,253,228,228,198,147,154,225,50,68,40,8,10,1,220,187,212,9,38,42,10,245,8,0,189,159,210,14,49,54,55,66,49,7,243,249,25,53,66,54,40,43,30,8,255,11,31,35,44,40,24,23,16,255,255,2,255,2,15,21,30,39,19,249,244,253,21,37,42,42,20,13,14,19,30,29,21,253,192,133,158,218,19,51,72,59,20,254,227,218,236,252,19,29,15,249,233,235,249,254,15,33,27,13,243,251,4,255,250,247,255,11,2,251,3,15,22,15,11,13,12,11,14,12,8,250,1,14,9,251,242,242,246,2,255,1,10,10,4,248,251,3,255,242,246,252,243,239,243,9,6,243,224,222,0,27,37,48,58,49,32,16,16,36,59,88,92,255,196,227,248,247,5,45,64,43,255,226,226,243,230,238,6,33,32,12,0,231,237,253,1,19,31,30,25,12,6,8,245,240,25,54,55,36,32,32,21,13,28,47,34,19,29,31,23,25,23,251,236,9,43,12,233,254,25,9,237,236,0,14,0,251,255,246,243,0,242,250,13,17,6,233,241,28,15,240,242,9,30,18,255,12,33,16,243,242,7,40,40,253,240,19,27,237,227,23,48,25,251,246,0,0,0,12,12,6,248,245,243,237,8,31,15,244,246,12,12,242,0,31,2,0,4,245,254,5,13,9,4,7,13,2,251,3,20,21,5,245,0,17,15,10,0,253,254,6,10,246,245,23,21,253,247,18,23,250,249,7,6,11,12,5,4,14,21,9,246,0,31,20,255,0,13,13,7,9,13,17,22,4,244,2,14,18,6,252,21,24,0,248,247,17,33,14,4,12,3,253,252,14,30,13,252,11,15,247,5,23,17,9,4,245,239,246,10,19,0,251,15,4,237,2,22,236,217,253,12,5,5,22,23,253,239,247,250,253,11,34,32,0,250,7,7,7,11,28,30,3,243,249,16,19,16,11,6,4,2,251,255,16,10,250,252,7,6,255,2,9,2,245,243,11,16,255,250,17,13,254,1,1,255,10,12,7,6,15,11,252,249,14,19,10,9,7,7,8,0,5,16,15,4,3,13,13,254,250,14,13,11,24,8,0,12,16,15,6,0,11,20,9,13,13,3,12,17,7,14,26,13,248,248,12,21,11,0,2,18,21,16,17,16,11,7,17,27,11,0,6,12,21,24,14,11,12,10,13,17,13,14,0,246,5,15,16,2,249,13,23,9,255,10,16,8,4,7,5,251,0,11,8,1,2,255,0,9,9,1,254,5,11,8,4,8,16,15,17,9,2,9,15,12,8,12,12,3,0,12,18,10,1,10,9,0,250,251,9,20,7,0,251,255,8,13,12,254,245,251,4,4,3,5,1,251,252,0,255,4,12,13,12,2,254,11,17,9,13,10,0,1,0,7,12,6,11,24,11,255,0,12,7,253,252,7,14,7,254,254,4,13,10,7,17,17,8,8,10,16,17,8,11,11,6,13,8,9,22,24,15,6,1,8,9,4,12,14,9,6,4,8,12,14,9,1,1,9,10,3,0,10,13,10,3,251,247,3,14,10,251,246,1,12,8,2,254,244,244,3,12,7,253,248,255,6,6,7,8,4,4,15,13,2,246,251,15,24,7,243,246,2,11,7,0,2,0,251,244,247,255,5,255,246,246,255,253,245,251,0,252,240,238,252,7,0,242,240,245,249,251,247,251,255,248,250,5,1,248,249,255,2,253,241,239,254,13,8,249,244,251,6,6,0,208,4,44,0,3,1,2,1,2,1,3,2,4,236,191,217,11,26,24,27,26,24,11,246,236,247,6,12,15,16,19,15,5,252,250,252,5,17,24,23,17,16,16,1,249,251,12,14,15,0,202,203,239,22,13,13,15,21,16,248,226,229,3,15,11,9,15,11,2,254,249,249,253,15,16,26,20,15,2,254,2,4,5,10,34,36,37,14,8,211,132,222,36,36,38,37,30,19,239,208,198,241,19,26,39,40,26,254,243,230,226,242,8,39,45,33,16,6,214,182,225,0,12,27,28,33,25,1,230,220,239,3,13,25,31,29,11,254,242,234,236,248,18,33,25,21,2,247,249,242,246,6,22,32,27,10,251,241,241,244,248,17,23,24,24,9,245,241,247,244,6,12,17,24,12,6,251,242,245,248,5,16,17,16,12,2,251,252,2,1,6,2,15,19,4,252,254,245,5,15,19,15,9,8,7,254,252,9,7,16,10,6,10,15,10,0,7,217,176,205,199,227,27,48,38,36,244,223,206,214,234,9,39,54,49,12,0,244,245,0,18,31,35,56,54,29,248,2,21,248,235,11,249,217,8,32,4,232,232,242,243,10,16,16,21,46,246,180,209,244,2,11,24,5,253,232,240,251,10,33,34,28,8,247,230,231,230,233,252,7,30,18,7,241,238,250,251,254,15,32,33,17,6,7,251,0,16,12,241,242,251,10,17,20,23,13,3,12,9,243,255,19,22,18,15,255,2,10,2,16,15,15,17,19,11,11,20,15,8,17,24,12,0,4,248,254,252,251,0,0,2,1,253,4,254,245,253,14,12,6,10,6,3,0,251,253,2,21,30,9,8,0,0,2,9,4,0,8,7,19,11,8,10,10,6,251,6,20,21,18,19,3,3,255,245,248,1,7,6,0,5,12,3,8,8,246,248,14,21,16,5,4,3,0,255,1,0,12,18,8,254,250,237,245,15,13,254,246,254,15,1,230,229,246,6,0,246,250,253,238,225,234,10,11,8,15,17,12,0,231,237,10,32,45,25,242,235,11,32,28,4,7,19,29,25,255,237,9,22,6,250,6,21,3,241,245,2,252,244,247,243,0,5,1,2,254,243,248,254,254,16,11,2,8,14,10,250,229,255,20,12,7,9,21,18,249,250,10,13,14,6,255,4,15,3,243,251,4,0,252,225,226,244,4,17,11,6,9,4,243,217,229,8,28,32,26,15,1,248,239,246,255,8,19,19,14,254,250,247,253,21,38,29,254,254,249,234,236,255,12,14,6,250,246,242,236,248,14,15,2,7,249,235,243,8,5,4,2,254,7,28,14,5,26,33,18,251,246,240,249,11,24,21,14,8,249,235,242,248,1,8,4,16,17,255,239,221,240,1,1,8,24,18,255,234,228,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,4,44,0,3,1,2,1,2,1,3,2,4,236,191,217,11,26,24,27,26,24,11,246,236,247,6,12,15,16,19,15,5,252,250,252,5,17,24,23,17,16,16,1,249,251,12,14,15,0,202,203,239,22,13,13,15,21,16,248,226,229,3,15,11,9,15,11,2,254,249,249,253,15,16,26,20,15,2,254,2,4,5,10,34,36,37,14,8,211,132,222,36,36,38,37,30,19,239,208,198,241,19,26,39,40,26,254,243,230,226,242,8,39,45,33,16,6,214,182,225,0,12,27,28,33,25,1,230,220,239,3,13,25,31,29,11,254,242,234,236,248,18,33,25,21,2,247,249,242,246,6,22,32,27,10,251,241,241,244,248,17,23,24,24,9,245,241,247,244,6,12,17,24,12,6,251,242,245,248,5,16,17,16,12,2,251,252,2,1,6,2,15,19,4,252,254,245,5,15,19,15,9,8,7,254,252,9,7,16,10,6,10,15,10,0,7,217,176,205,199,227,27,48,38,36,244,223,206,214,234,9,39,54,49,12,0,244,245,0,18,31,35,56,54,29,248,2,21,248,235,11,249,217,8,32,4,232,232,242,243,10,16,16,21,46,246,180,209,244,2,11,24,5,253,232,240,251,10,33,34,28,8,247,230,231,230,233,252,7,30,18,7,241,238,250,251,254,15,32,33,17,6,7,251,0,16,12,241,242,251,10,17,20,23,13,3,12,9,243,255,19,22,18,15,255,2,10,2,16,15,15,17,19,11,11,20,15,8,17,24,12,0,4,248,254,252,251,0,0,2,1,253,4,254,245,253,14,12,6,10,6,3,0,251,253,2,21,30,9,8,0,0,2,9,4,0,8,7,19,11,8,10,10,6,251,6,20,21,18,19,3,3,255,245,248,1,7,6,0,5,12,3,8,8,246,248,14,21,16,5,4,3,0,255,1,0,12,18,8,254,250,237,245,15,13,254,246,254,15,1,230,229,246,6,0,246,250,253,238,225,234,10,11,8,15,17,12,0,231,237,10,32,45,25,242,235,11,32,28,4,7,19,29,25,255,237,9,22,6,250,6,21,3,241,245,2,252,244,247,243,0,5,1,2,254,243,248,254,254,16,11,2,8,14,10,250,229,255,20,12,7,9,21,18,249,250,10,13,14,6,255,4,15,3,243,251,4,0,252,225,226,244,4,17,11,6,9,4,243,217,229,8,28,32,26,15,1,248,239,246,255,8,19,19,14,254,250,247,253,21,38,29,254,254,249,234,236,255,12,14,6,250,246,242,236,248,14,15,2,7,249,235,243,8,5,4,2,254,7,28,14,5,26,33,18,251,246,240,249,11,24,21,14,8,249,235,242,248,1,8,4,16,17,255,239,221,240,1,1,8,24,18,255,234,228,241,7,30,33,18,1,239,240,4,30,18,244,245,4,4,15,11,252,15,34,20,244,253,12,27,32,27,245,246,19,20,8,247,239,238,1,20,21,10,251,251,255,3,0,249,254,254,7,9,18,4,251,247,245,4,19,5,239,2,31,39,14,240,238,254,250,0,31,34,25,7,255,254,238,237,252,31,54,42,26,247,251,246,239,245,32,60,51,12,241,232,233,239,244,23,32,19,3,246,238,229,233,245,2,16,13,245,244,7,0,239,244,254,13,13,253,0,18,13,1,249,6,28,6,0,18,31,19,7,9,7,243,244,11,32,53,24,0,3,4,244,243,9,22,2,246,10,4,243,246,245,234,238,238,255,255,2,255,9,12,6,241,235,255,27,34,21,9,23,38,13,1,6,9,14,19,22,6,255,10,7,3,3,1,2,250,1,17,9,254,248,250,251,248,252,2,1,240,244,242,255,1,6,4,254,255,244,239,239,0,26,27,252,255,23,25,8,0,1,11,27,31,21,2,7,21,1,2,6,252,7,19,7,240,243,0,250,240,243,0,1,242,234,249,5,255,247,254,254,7,15,250,221,237,13,18,1,253,4,10,15,15,17,11,9,249,1,16,34,32,26,12,250,244,1,8,17,14,0,253,2,252,246,255,1,246,241,237,232,247,7,14,4,245,241,243,243,244,251,2,10,5,251,242,252,14,7,4,0,10,25,5,251,4,12,27,24,3,255,0,248,252,7,14,253,250,255,249,251,254,249,253,255,242,250,8,16,2,238,243,0,14,19,3,251,5,15,10,253,252,6,16,27,23,3,252,15,27,6,249,5,24,24,24,19,11,7,10,10,4,4,5,4,7,12,15,13,0,0,9,12,8,4,253,250,12,11,4,2,252,4,15,16,0,245,0,5,2,255,11,10,2,13,4,244,1,17,23,15,17,12,239,240,14,25,16,15,6,245,241,4,14,254,3,26,19,2,247,247,0,247,250,6,8,249,235,253,7,1,0,248,240,248,8,14,5,3,7,2,247,249,0,10,19,19,24,18,254,245,248,255,17,30,23,10,13,7,245,254,8,3,0,14,22,15,9,255,248,255,7,0,248,253,252,7,13,254,241,245,249,248,241,12,28,15,253,0,253,238,241,1,14,6,5,14,17,10,3,0,0,246,250,250,249,10,33,38,16,246,228,228,235,255,11,26,35,252,210,233,9,5,4,6,250,232,249,11,19,20,14,249,240,237,248,254,1,13,28,50,51,18,233,229,252,11,21,36,45,33,23,30,21,3,255,8,15,38,40,22,8,10,10,2,248,0,23,50,43,6,245,0,11,6,11,36,41,21,22,9,240,0,13,17,35,44,27,245,227,248,5,19,40,32,8,252,241,229,230,249,19,23,9,251,239,240,234,234,241,232,233,102,1,41,0,0,2,5,5,3,1,6,6,3,1,6,10,4,246,229,206,184,183,209,247,22,31,26,21,37,59,61,48,21,248,216,176,160,168,181,192,222,6,44,63,76,80,81,84,79,65,40,250,140,132,192,248,218,166,183,1,35,21,53,61,25,2,11,7,210,168,169,202,210,208,208,206,244,22,54,62,50,37,38,47,33,4,241,227,226,234,233,232,229,233,253,14,25,19,19,23,13,0,3,236,237,230,239,239,238,233,242,14,16,28,24,31,34,36,27,16,2,252,247,248,254,254,1,13,23,28,30,34,27,33,35,29,9,250,249,253,248,238,235,249,8,9,21,11,255,254,8,17,8,6,5,1,249,241,236,241,248,1,5,8,253,252,0,10,12,14,8,2,0,250,0,4,251,233,244,255,9,7,255,248,247,250,255,1,251,241,246,254,1,251,243,246,254,7,13,10,0,251,251,0,255,246,234,236,243,246,248,247,1,0,8,21,24,253,250,0,10,252,245,245,244,238,237,0,253,252,244,248,245,0,4,8,251,4,12,11,7,17,31,29,23,12,17,18,15,9,10,254,1,5,12,17,27,21,17,31,48,48,33,29,27,31,20,19,17,17,11,14,17,15,14,7,255,246,250,243,240,233,232,232,231,232,229,231,233,227,233,240,249,249,248,246,251,251,251,252,1,0,253,254,254,253,251,255,250,246,243,245,248,244,235,229,224,223,221,225,227,228,235,244,251,250,248,248,251,252,255,249,245,238,236,238,230,223,222,224,233,247,244,245,251,2,1,245,246,248,252,255,13,26,19,5,243,245,2,11,11,10,0,0,27,1,19,0,4,4,5,5,6,7,8,10,13,17,23,53,94,45,40,70,104,120,65,36,65,76,65,27,255,253,7,233,207,216,190,192,190,173,190,190,185,189,197,220,240,219,219,7,13,14,7,7,36,44,15,7,35,21,13,247,0,11,242,217,236,233,219,215,212,222,229,198,216,240,228,234,233,226,0,16,248,245,0,24,24,244,9,21,0,250,10,250,251,247,227,241,238,244,225,200,249,20,226,195,246,14,253,240,246,11,33,59,23,6,48,69,60,17,45,86,46,12,47,103,79,49,8,70,100,68,22,11,42,49,3,237,1,254,206,219,227,228,206,185,205,213,227,216,218,188,255,3,237,225,12,33,0,241,23,60,14,231,16,41,28,247,244,244,20,248,225,229,245,243,214,220,252,3,205,209,7,28,14,250,247,33,45,37,5,9,28,38,17,35,38,0,0,34,47,1,239,239,12,0,238,219,224,238,230,217,221,239,235,216,228,253,253,229,238,252,255,245,246,255,253,247,238,255,6,4,241,245,10,20,14,3,7,18,25,29,22,20,21,21,24,30,23,13,5,14,29,24,0,5,14,21,13,12,3,12,9,13,7,7,6,3,4,7,11,1,3,254,13,15,9,0,12,14,17,6,10,11,17,10,1,7,12,0,202,10,6,0,5,13,51,44,21,20,8,251,242,255,3,249,230,210,223,245,245,11,19,17,49,48,16,11,7,248,236,206,183,229,246,7,22,23,33,37,41,22,250,244,254,233,214,213,250,5,21,22,11,15,255,0,255,251,6,19,12,231,229,245,239,246,0,33,9,12,14,248,0,12,2,11,27,6,243,231,226,249,199,245,20,48,54,4,235,252,254,233,236,15,6,1,0,11,18,10,10,255,240,246,7,6,243,247,238,220,13,25,19,13,23,35,250,197,226,249,10,22,0,0,255,14,21,13,237,238,216,244,16,21,52,24,4,229,242,244,2,252,250,249,6,248,242,240,6,245,8,18,13,54,0,27,29,231,192,199,21,21,9,7,16,244,235,2,30,0,250,5,253,244,234,250,238,248,13,15,24,4,25,40,3,2,251,229,217,230,7,7,23,247,249,243,30,36,9,26,229,198,217,220,250,13,29,24,32,13,7,40,36,255,15,1,219,222,219,207,221,251,37,26,14,4,27,219,230,19,10,36,5,26,9,229,234,14,14,6,8,0,10,239,204,239,227,237,29,22,13,29,41,22,228,236,244,0,244,255,240,246,254,11,240,19,43,28,20,235,14,246,252,227,220,11,252,232,15,10,23,19,243,235,0,242,8,0,250,33,248,15,15,255,226,7,15,2,11,44,32,11,222,198,229,229,193,225,25,33,35,13,30,27,234,3,30,24,14,238,218,236,12,246,11,22,15,3,251,235,255,226,214,227,11,255,6,0,18,59,49,252,233,0,31,27,247,239,234,239,219,246,15,18,254,233,250,39,28,240,235,222,4,252,12,1,7,43,250,15,6,1,11,231,0,246,247,13,16,38,251,244,214,211,228,198,34,39,27,16,5,226,31,59,28,43,22,251,192,215,211,191,230,3,8,7,59,25,52,27,240,4,236,14,0,240,235,237,234,226,188,4,82,55,26,24,12,236,241,14,2,250,208,209,235,13,38,44,7,249,247,221,225,241,72,44,17,13,238,197,213,250,26,32,5,19,228,12,46,231,241,244,16,255,235,240,251,239,221,17,42,33,45,26,15,210,230,5,244,194,11,11,22,2,254,246,3,6,9,33,24,3,237,212,236,254,18,222,25,60,1,212,224,253,2,58,14,42,254,218,6,250,32,231,190,230,3,248,6,16,242,23,42,5,35,39,3,3,235,230,203,231,220,11,54,43,241,241,2,221,239,10,18,2,22,7,251,24,27,11,240,0,31,28,16,166,168,201,242,231,250,90,73,2,9,29,15,250,249,9,52,35,251,218,174,186,19,35,0,232,220,223,197,10,44,80,39,29,50,254,8,54,253,204,241,239,201,249,220,0,240,19,29,252,254,248,12,253,219,242,34,19,18,9,6,61,63,3,222,223,249,252,231,232,4,252,205,249,255,253,45,14,207,214,15,14,20,29,28,80,37,253,243,220,3,3,220,4,217,9,248,193,242,30,44,20,207,173,9,87,249,254,45,9,4,29,39,14,36,228,175,234,232,241,230,203,31,90,56,249,213,11,13,7,238,7,10,186,174,235,37,9,28,38,54,30,26,29,2,250,252,240,216,0,240,226,164,210,240,68,41,23,68,3,214,238,22,26,246,2,232,14,223,14,32,8,18,228,24,250,37,20,242,232,222,204,225,246,219,15,29,5,11,21,22,33,29,252,14,1,31,14,232,195,14,233,20,220,214,47,24,239,241,17,243,16,238,230,7,36,232,201,251,34,68,45,33,233,2,55,247,235,195,198,211,46,42,232,24,237,241,243,13,26,32,235,211,237,1,5,248,45,5,41,16,20,18,229,29,40,235,216,227,214,214,9,15,2,241,199,19,35,11,248,1,22,238,32,32,0,26,18,34,245,23,34,235,182,205,8,235,242,242,210,222,21,8,252,22,38,60,20,254,23,33,5,219,9,15,62,241,181,245,230,228,0,214,218,16,237,255,50,67,7,249,254,7,6,242,48,31,228,225,48,223,230,10,16,19,253,230,207,235,39,36,225,218,246,254,254,226,248,63,33,33,61,35,0,28,224,192,227,4,41,230,221,212,235,226,250,247,250,59,19,13,4,16,80,70,10,17,27,209,151,148,195,1,51,21,15,24,66,10,229,236,23,31,189,219,224,11,28,8,50,35,22,1,12,15,228,249,233,189,248,249,227,220,16,42,0,243,31,79,15,24,242,14,33,251,203,242,222,246,25,208,2,225,242,7,236,45,47,236,24,60,3,2,4,230,12,246,178,6,36,2,206,231,77,19,250,10,7,254,214,233,0,5,8,15,223,245,12,65,249,234,26,53,16,226,6,228,223,9,25,207,237,227,245,14,251,25,12,29,14,238,209,40,87,5,24,254,7,220,216,177,230,26,35,26,192,249,47,11,226,12,41,0,42,242,246,255,10,11,230,222,204,246,28,12,3,53,62,7,242,240,1,238,233,211,213,13,247,4,13,23,68,16,217,252,7,245,2,236,253,42,15,47,14,26,249,204,192,193,220,230,2,22,255,28,65,60,29,254,27,25,0,218,237,199,136,228,33,69,58,60,54,224,224,229,250,233,185,220,248,47,249,49,35,30,6,19,17,225,209,240,0,4,1,250,12,31,84,4,231,223,242,195,186,250,50,22,231,0,20,8,229,2,29,51,53,250,7,1,41,3,224,241,205,193,38,232,234,18,219,189,4,57,32,73,40,26,237,228,192,252,254,2,32,28,49,35,236,251,234,207,0,255,252,220,11,222,201,250,243,236,55,70,57,13,26,4,213,72,49,14,23,173,169,212,237,240,172,253,55,74,54,60,219,179,177,220,41,123,76,250,243,30,234,0,0,3,202,218,0,8,242,219,232,246,52,26,11,16,252,230,16,6,6,18,242,1,29,65,30,210,209,214,13,207,201,27,7,255,51,33,252,244,25,20,239,249,220,193,56,65,238,242,2,4,2,44,5,245,224,219,248,29,5,184,241,72,57,238,233,230,219,28,25,255,13,7,20,4,18,3,247,20,230,21,43,209,205,238,206,177,233,82,9,53,47,8,16,5,9,234,20,37,11,228,242,229,229,224,214,17,14,10,35,21,237,253,233,8,253,28,21,204,231,31,46,56,240,3,246,233,248,230,4,251,249,14,6,3,216,23,10,216,22,246,206,66,2,216,79,76,241,226,53,6,160,175,253,20,49,10,226,253,30,247,12,240,253,1,5,245,216,2,83,34,29,27,238,216,185,237,8,54,16,203,177,14,27,13,45,246,241,13,22,6,42,14,216,249,18,35,222,1,226,4,197,231,14,240,20,240,222,95,73,230,226,1,3,15,20,253,221,69,47,238,188,239,216,201,247,243,45,17,28,31,14,242,13,223,41,31,225,255,226,211,215,47,50,26,50,255,232,246,27,166,227,14,251,245,249,10,37,21,248,2,20,21,38,191,191,29,57,214,255,16,8,18,5,0,242,1,249,243,255,247,20,253,221,219,44,11,213,244,3,50,85,23,218,221,255,27,19,27,221,221,18,230,252,249,10,250,205,7,227,239,19,58,22,18,33,247,199,248,46,65,28,8,224,236,230,187,250,237,19,29,226,220,5,25,241,13,13,38,42,31,240,248,30,5,223,12,247,162,237,24,30,39,240,7,0,203,225,246,8,28,50,38,236,254,28,247,247,250,9,11,250,204,218,62,232,238,32,6,25,235,225,37,40,49,160,194,12,40,14,11,245,6,240,237,35,241,39,9,230,15,41,247,223,223,208,11,43,6,21,236,0,8,1,255,242,6,25,6,216,241,237,252,39,7,33,0,28,39,16,231,205,235,176,218,24,47,39,222,5,20,21,47,232,189,14,28,7,34,25,225,13,228,232,16,7,214,249,43,240,206,240,0,246,10,26,47,34,55,15,249,3,245,244,208,214,237,15,2,210,202,6,35,80,68,3,252,202,19,19,193,28,36,234,235,228,244,6,242,18,67,39,246,222,5,229,9,253,231,249,225,244,2,43,6,22,28,244,48,249,223,0,239,12,233,253,23,13,248,191,239,68,19,28,219,205,2,33,35,8,251,3,242,239,244,23,245,222,217,19,16,10,51,49,32,7,225,182,209,58,21,240,210,9,19,217,2,253,4,20,58,211,253,33,28,2,182,33,80,236,236,185,236,254,6,10,73,40,248,194,251,1,26,20,193,220,202,10,66,253,30,70,6,240,228,239,26,53,205,3,22,222,228,242,247,22,237,10,234,236,3,21,41,40,249,12,235,233,20,22,29,243,224,233,16,212,228,49,234,56,11,6,230,221,4,251,199,57,45,228,58,18,234,230,239,14,5,237,38,24,237,225,243,198,29,35,30,244,225,249,237,66,218,23,14,237,247,19,62,33,244,207,0,228,234,2,234,236,22,2,242,3,236,25,38,53,43,247,210,255,23,206,226,8,27,35,236,7,16,213,240,253,194,31,20,0,240,227,37,9,29,53,76,4,204,22,228,187,14,226,0,247,247,8,242,233,251,0,238,48,50,46,45,13,221,202,236,2,21,61,10,224,233,150,205,25,1,12,45,82,9,8,252,239,255,253,5,190,254,252,18,39,0,27,4,204,1,16,8,26,237,210,236,23,9,21,225,236,243,255,70,32,0,247,29,24,210,248,44,213,232,213,181,33,48,11,15,19,14,251,5,5,224,19,3,221,9,59,240,254,11,209,5,1,239,244,22,13,247,27,255,0,24,229,42,236,215,213,18,13,240,7,6,48,231,36,45,19,208,223,241,212,4,4,35,31,29,2,249,247,225,251,240,213,248,7,4,246,50,65,252,243,19,8,18,12,215,239,241,34,247,214,228,238,2,40,20,228,0,247,31,7,226,2,4,35,51,35,0,8,208,191,9,16,17,248,233,249,237,230,229,243,46,50,25,244,253,24,235,49,9,255,232,30,243,201,5,243,14,211,250,41,242,29,236,6,240,23,255,225,19,33,24,29,12,5,215,199,223,20,11,12,0,238,5,25,31,245,255,16,6,236,248,195,226,247,254,76,53,249,10,16,43,252,248,240,153,197,19,235,40,80,42,16,224,236,198,3,249,232,42,1,30,245,1,25,253,29,41,244,214,10,226,219,3,199,235,32,45,52,34,248,240,207,242,56,24,238,247,236,3,3,193,2,8,15,38,50,15,226,229,3,32,22,249,212,225,231,254,26,252,251,254,21,4,22,241,254,0,248,39,28,14,247,249,3,235,7,244,224,20,247,227,242,241,29,247,249,36,38,23,207,233,14,255,68,69,218,238,238,226,4,246,18,249,216,209,198,0,99,39,23,53,239,13,243,186,251,20,248,239,240,241,29,28,45,21,252,226,209,252,8,22,6,11,237,245,3,201,253,254,251,55,32,10,60,2,243,250,227,17,223,211,246,210,249,56,4,4,33,37,20,245,5,246,218,204,14,17,10,28,4,0,0,250,253,239,233,28,7,0,254,247,2,0,253,19,43,243,235,1,254,225,246,232,15,59,0,1,15,246,21,212,238,253,2,9,7,18,22,13,230,25,245,225,223,241,248,247,52,11,31,7,234,240,19,28,3,18,253,228,236,223,253,2,233,3,21,32,255,11,35,247,1,249,237,221,243,2,11,249,1,35,20,8,1,13,39,242,246,254,187,233,0,251,19,247,0,19,239,239,32,12,28,41,6,21,210,255,224,208,39,25,24,9,209,218,250,233,15,32,30,15,2,254,226,233,239,250,46,32,1,22,225,248,24,3,252,248,5,22,215,220,254,236,13,13,10,21,11,3,17,249,251,9,240,230,16,10,35,214,245,255,225,4,16,49,6,6,244,37,22,203,221,247,6,247,1,235,16,36,0,0,239,233,234,27,12,44,37,5,251,217,233,14,42,232,239,8,249,226,228,9,6,25,254,24,248,234,227,252,24,8,31,16,42,11,239,240,0,251,245,242,8,252,240,231,238,3,14,10,250,7,11,7,246,11,2,7,0,24,39,254,2,250,244,235,246,241,220,13,20,10,243,232,248,8,7,0,250,34,25,0,4,251,28,253,10,1,2,251,221,228,218,2,38,6,255,16,3,244,248,234,34,18,1,2,0,247,7,251,255,17,245,248,244,5,17,0,244,6,2,243,0,242,27,20,4,255,5,5,255,224,219,241,1,16,12,7,28,251,15,39,7,230,243,0,8,253,244,0,230,239,252,236,23,47,12,246,238,249,12,231,21,38,10,12,10,233,216,233,4,6,13,7,0,1,254,0,0,233,7,15,0,2,5,24,14,23,15,18,18,22,19,26,21,27,28,17,24,30,26,17,23,26,30,31,17,28,21,16,12,29,40,4,36,18,26,31,11,21,16,29,4,19,16,20,24,7,26,14,27,8,9,11,17,23,254,22,16,24,16,18,12,253,30,1,21,18,17,28,21,14,27,23,23,14,35,33,31,27,27,25,23,13,16,33,27,3,20,12,9,36,34,20,28,13,18,12,252,20,17,8,4,13,9,2,53,18,11,14,0,0,251,20,21,16,7,0,11,22,17,27,18,14,6,8,24,23,4,32,17,26,16,24,16,28,34,15,21,33,33,26,28,3,26,21,7,34,50,18,25,4,19,37,20,19,4,20,29,9,25,21,35,23,22,9,4,23,248,30,21,18,9,8,3,29,20,10,14,13,4,9,12,27,22,0,8,10,4,4,12,20,18,20,1,20,22,12,30,9,20,27,0,11,16,34,23,37,1,33,19,11,22,11,33,14,10,25,20,21,24,1,8,29,11,14,26,19,5,13,15,17,4,14,5,4,10,11,17,4,11,17,245,11,25,8,15,3,8,10,0,18,11,14,28,31,21,7,30,11,18,34,17,42,7,9,5,9,19,11,37,13,26,31,7,20,4,30,19,28,8,16,11,30,20,5,19,17,17,5,0,2,20,10,11,25,7,26,7,10,6,15,25,7,6,7,253,21,9,16,22,27,2,18,28,5,15,12,2,23,14,37,15,10,26,14,8,21,28,12,26,9,37,21,10,30,20,13,28,30,6,17,8,4,21,6,26,27,10,23,14,14,23,11,0,12,7,10,19,14,248,18,10,1,1,2,28,14,254,4,12,9,7,17,16,27,15,3,10,31,0,11,35,11,4,19,38,23,8,13,31,18,24,18,26,32,12,26,14,24,29,11,29,13,8,21,9,4,13,19,20,8,17,17,0,10,11,11,5,1,9,0,255,10,8,8,22,4,8,20,6,252,14,25,8,24,11,19,39,30,11,34,13,11,25,3,23,38,28,40,12,27,36,11,13,24,33,20,12,26,251,35,250,8,20,18,9,0,20,4,15,13,5,250,21,0,7,2,3,9,5,0,9,20,29,0,248,15,253,10,28,33,15,14,6,13,25,29,18,3,32,44,19,22,38,5,15,24,35,7,22,24,25,26,13,8,19,31,251,10,7,237,11,247,28,1,0,13,3,2,26,2,252,13,2,17,13,5,244,1,1,9,18,15,9,12,0,41,26,22,17,0,251,13,37,22,9,1,14,58,3,20,21,13,29,16,2,41,31,0,29,18,16,18,2,24,15,10,31,253,0,27,4,37,9,1,20,3,12,9,0,11,28,251,253,14,20,28,34,249,7,12,19,16,3,2,31,7,4,6,7,32,27,0,12,7,20,14,1,253,1,35,16,249,5,24,16,15,33,252,13,7,13,23,251,43,47,252,33,38,13,33,34,248,24,32,13,37,32,22,31,16,6,16,24,34,12,0,25,26,22,25,13,24,24,240,14,27,244,15,25,239,254,8,235,37,15,6,13,254,2,12,33,250,9,236,243,9,233,26,22,20,6,24,252,24,23,15,39,8,14,30,251,34,39,0,17,43,29,26,45,23,254,43,9,45,37,14,24,34,251,51,38,11,21,16,14,28,41,15,21,250,31,4,14,24,0,5,17,27,27,15,7,0,28,26,13,15,7,17,4,246,34,23,10,18,14,7,1,14,7,20,3,13,252,240,16,23,0,21,6,3,250,255,27,15,249,5,14,4,252,29,254,247,44,20,1,30,29,243,57,27,20,28,250,36,18,11,54,35,34,36,26,43,61,22,44,20,13,34,46,44,27,41,39,6,27,0,55,32,22,9,8,16,240,25,255,15,18,6,250,247,29,10,238,18,8,230,235,250,246,11,14,236,23,250,5,6,21,250,22,42,252,11,31,31,21,23,253,22,3,30,3,32,32,249,28,14,8,24,24,254,247,2,242,244,10,15,37,254,9,11,255,17,6,38,30,23,21,15,15,20,53,18,45,22,248,24,21,28,11,72,39,31,42,4,49,19,37,27,25,32,8,21,20,40,41,4,25,6,253,23,10,11,246,5,4,253,37,15,232,0,17,254,240,28,32,7,25,233,228,11,252,0,33,28,248,12,0,15,20,19,19,48,6,12,9,2,32,11,27,33,47,19,250,41,25,23,42,36,15,35,35,254,11,6,18,65,16,255,11,22,50,255,220,0,37,232,0,3,225,22,236,185,58,82,55,30,245,245,31,17,36,238,6,55,16,19,16,47,54,45,29,31,18,65,14,29,23,55,66,19,28,39,16,27,19,227,21,27,10,19,1,235,57,20,231,3,242,9,20,251,4,229,255,28,14,248,2,15,0,3,242,8,14,17,17,234,249,47,55,13,249,58,30,31,48,1,253,26,31,24,17,245,251,33,253,241,17,83,28,4,50,29,34,42,8,222,33,60,6,15,255,249,25,72,250,235,35,37,29,224,241,252,0,242,4,32,38,13,240,221,227,16,32,229,19,14,242,21,252,9,17,12,57,72,0,0,37,250,32,21,11,60,49,1,26,255,25,68,27,250,53,30,17,24,13,29,46,6,11,27,225,251,30,17,0,4,26,24,251,239,30,21,238,10,246,236,45,47,25,6,5,18,59,252,245,39,31,26,0,249,25,40,39,19,236,232,54,5,236,14,22,48,5,250,16,230,10,46,11,242,5,0,19,250,210,23,39,246,248,254,255,8,20,241,12,31,6,41,214,238,19,36,18,40,47,54,17,43,26,238,32,25,23,32,21,15,51,11,33,57,40,47,28,8,10,23,51,40,6,9,25,12,25,25,251,22,33,1,254,252,237,11,254,22,3,14,35,245,241,2,28,22,5,10,253,254,6,23,15,9,24,36,14,255,236,6,24,30,12,34,25,14,10,23,8,13,13,22,22,6,55,44,245,251,17,5,25,34,33,22,36,50,18,17,15,30,71,71,28,29,28,20,13,244,31,29,31,46,3,11,45,248,22,33,246,27,14,229,225,232,250,220,242,234,159,137,200,232,245,239,240,24,15,5,47,34,18,33,62,0,13,51,53,30,32,121,76,19,50,47,49,85,253,17,91,53,71,85,68,42,50,21,25,47,39,14,239,16,37,246,249,251,31,31,0,14,35,236,249,254,20,23,17,22,5,245,253,37,15,9,17,10,23,255,232,9,6,10,26,16,20,16,24,9,10,8,36,23,254,233,45,30,249,6,253,9,35,18,255,7,37,34,14,12,14,31,254,252,18,7,26,30,15,27,42,21,25,22,0,8,21,23,2,250,246,36,239,8,61,245,4,13,246,16,34,247,251,6,250,250,2,21,21,16,251,253,13,250,5,254,14,26,7,3,242,233,244,13,46,28,12,16,16,4,21,45,44,27,7,6,7,15,28,40,10,22,63,42,19,15,252,28,33,17,21,18,26,19,10,8,23,18,14,1,251,35,12,25,7,255,37,10,20,9,20,25,0,242,0,36,21,16,7,251,254,13,29,243,0,2,4,14,19,1,232,11,15,42,29,11,18,8,11,9,255,253,28,11,23,20,14,19,21,14,4,15,54,23,16,17,13,14,42,9,14,50,24,14,30,10,23,250,21,22,249,70,0,0,36,245,42,41,17,38,33,254,7,21,11,42,4,21,21,4,41,36,7,28,23,40,55,47,23,17,19,22,32,4,25,57,43,42,9,253,16,17,7,24,19,20,8,242,10,27,24,19,19,43,34,10,9,3,3,22,31,21,17,10,17,37,17,26,42,28,32,26,15,33,24,5,15,7,17,38,16,13,3,14,27,24,3,254,252,5,18,16,250,255,9,252,246,4,25,7,14,7,5,5,10,254,238,4,1,5,0,255,27,45,32,29,20,12,24,42,12,46,16,40,52,14,5,6,57,26,32,60,9,20,54,3,15,33,24,20,0,2,37,27,0,1,2,32,57,18,5,24,255,253,4,7,24,47,32,15,14,12,25,23,20,24,36,47,36,21,0,9,27,18,20,12,12,11,6,254,0,16,16,16,1,10,25,15,252,239,251,25,21,18,24,28,14,3,251,247,15,32,27,15,14,19,21,16,26,44,46,32,27,252,247,255,251,20,47,44,43,38,19,25,30,3,12,11,1,21,17,10,17,17,24,41,33,27,31,22,11,4,4,8,21,22,10,15,14,1,7,253,250,24,20,1,11,1,245,4,6,9,19,15,12,3,3,11,15,5,5,13,13,17,23,9,11,25,21,14,21,26,26,19,11,11,21,18,8,11,23,12,9,28,16,16,34,49,34,14,16,35,70,19,7,36,67,21,12,35,43,52,24,11,33,44,31,20,245,30,28,7,5,0,13,36,24,3,1,18,14,252,2,12,6,18,19,0,5,21,20,15,7,6,32,31,20,24,19,22,29,34,25,24,34,35,16,13,21,25,29,21,25,17,30,18,4,23,1,15,28,6,2,0,8,253,248,241,251,10,7,4,249,8,255,1,12,6,10,18,8,0,4,7,10,23,12,13,39,38,8,15,10,6,25,31,21,10,7,9,10,13,10,22,25,25,18,255,0,255,254,2,0,0,0,122,8,8,0,10,213,185,201,218,246,30,33,19,56,71,24,0,214,189,183,232,14,26,28,12,15,57,29,252,4,244,232,213,223,2,10,16,13,5,238,255,243,245,26,10,218,238,31,37,0,0,0,1,21,21,237,233,8,244,252,45,28,219,215,249,4,251,2,229,242,250,255,14,37,36,26,0,12,6,215,225,255,12,16,2,11,17,4,248,236,0,228,217,228,3,33,7,27,18,251,28,246,235,22,246,250,248,1,59,5,229,252,251,20,2,226,11,12,229,227,253,6,247,237,253,3,20,21,251,4,21,40,20,7,238,4,35,6,224,208,223,231,252,13,2,5,4,17,13,227,252,13,250,48,14,234,220,243,18,67,52,14,253,215,213,209,236,253,247,21,31,42,5,209,241,246,38,243,215,14,41,22,35,21,210,0,245,199,13,21,10,15,252,20,22,233,233,0,12,9,205,209,244,2,9,28,42,18,23,26,20,245,229,226,13,7,230,230,242,18,33,20,253,227,214,237,1,13,2,17,37,18,25,22,209,223,29,4,27,2,210,216,249,57,255,227,0,232,4,66,0,204,0,12,253,41,46,231,231,236,247,2,246,253,3,57,68,224,211,220,218,21,9,21,2,234,11,238,12,15,16,39,213,240,32,3,251,1,4,18,7,222,230,2,239,248,244,9,33,28,252,1,241,1,246,237,16,30,28,5,0,13,16,210,197,254,20,250,12,23,225,229,254,8,39,16,222,248,20,29,15,255,42,0,203,243,1,248,240,9,6,254,0,250,244,252,23,49,237,223,238,222,252,54,42,252,23,43,0,220,239,207,11,30,216,220,40,20,241,254,40,8,216,248,27,9,234,24,217,234,20,231,0,55,31,245,34,10,214,235,24,38,25,207,174,232,9,249,23,20,27,7,255,238,238,22,231,232,61,58,235,250,19,6,10,230,217,238,32,254,212,24,6,219,13,13,249,252,248,0,254,57,32,234,249,55,240,221,1,42,244,217,212,239,32,11,6,245,36,16,183,250,14,39,44,226,223,37,1,210,23,39,255,206,225,26,43,231,238,12,44,14,216,251,41,254,210,225,38,20,235,218,33,43,13,217,172,4,66,9,16,34,5,226,228,239,49,255,237,5,252,255,231,11,28,34,18,246,216,8,233,183,216,45,34,12,20,245,17,63,28,215,254,34,211,205,236,244,44,10,28,28,237,252,241,237,233,214,226,41,63,232,0,55,24,233,240,19,234,11,19,250,12,1,213,233,80,20,157,200,25,223,5,60,7,237,44,57,2,211,20,208,3,91,231,161,12,33,0,14,44,236,177,244,21,246,8,8,237,32,3,8,27,31,212,233,62,44,212,181,4,62,217,176,8,48,22,246,4,44,15,214,250,21,212,1,55,23,3,216,211,29,29,210,242,23,4,236,231,33,34,20,234,247,19,0,228,246,28,49,42,204,172,21,91,219,190,227,14,25,25,239,252,19,237,21,11,14,18,222,26,17,0,216,243,4,9,248,232,44,10,0,248,201,21,25,214,255,14,229,246,55,46,18,235,0,18,255,244,220,247,22,243,23,236,246,33,213,250,17,213,241,48,44,234,223,61,14,224,18,7,226,230,46,55,230,224,2,250,226,8,21,237,0,247,255,240,7,251,218,60,82,226,219,78,34,191,226,7,246,8,3,222,233,31,15,233,4,41,5,207,8,18,196,11,72,245,254,31,237,229,6,233,246,56,37,222,198,38,55,187,245,55,10,199,235,232,14,33,22,4,237,53,13,231,199,33,35,172,248,51,242,7,33,15,23,220,254,251,4,217,226,48,60,212,173,6,85,33,199,227,13,48,6,242,237,21,26,22,193,184,44,60,13,40,206,168,247,39,11,20,251,12,24,1,233,203,9,58,26,252,220,223,14,244,2,50,11,227,237,244,6,31,236,252,6,36,29,0,193,36,246,215,13,3,27,248,240,193,6,68,61,246,216,10,221,245,243,250,43,13,40,231,246,17,37,238,243,199,253,20,39,3,217,0,250,16,190,202,33,58,52,9,6,248,25,30,240,243,3,223,209,13,33,217,234,38,9,236,6,246,248,254,32,9,186,61,41,240,241,8,33,230,24,31,198,20,30,174,242,19,234,53,218,215,9,18,57,11,187,4,86,18,203,209,47,53,255,230,211,245,42,12,214,240,240,8,16,229,17,71,7,196,250,23,69,253,214,253,9,246,176,243,72,15,244,32,203,190,86,59,230,234,9,19,25,234,179,229,122,81,139,229,244,253,225,246,63,47,40,214,210,7,39,177,2,98,230,242,220,39,31,15,239,224,0,5,198,3,19,17,45,206,9,73,230,193,236,70,235,224,35,59,9,165,237,10,42,16,211,239,99,249,144,63,65,242,209,251,6,226,3,5,244,19,21,208,18,66,12,247,242,39,236,195,206,2,71,27,192,12,43,13,234,218,9,50,244,210,12,47,10,207,0,4,15,189,33,56,229,230,253,34,19,252,247,2,17,6,201,235,48,13,35,221,221,221,247,26,45,1,240,22,220,28,36,215,248,81,249,212,6,243,4,222,33,195,205,120,247,188,27,39,45,17,181,236,36,26,206,21,62,22,188,253,240,28,250,172,14,80,248,206,14,3,10,215,73,36,241,7,214,186,69,36,196,13,70,19,185,223,21,33,195,248,243,248,96,0,21,17,0,175,203,78,51,180,206,34,47,245,22,12,30,224,232,4,203,7,61,248,2,247,205,34,64,31,225,215,241,224,13,1,230,5,96,220,250,16,244,11,0,5,12,246,205,31,3,13,255,245,253,0,253,27,237,207,43,14,251,18,233,9,41,238,228,241,0,250,227,69,66,162,29,70,202,157,62,51,209,9,10,10,244,18,225,20,5,254,221,216,80,195,231,59,38,247,3,244,4,37,24,229,174,29,37,237,241,6,17,9,244,227,250,4,9,251,8,4,243,245,74,7,240,51,204,208,5,209,70,43,244,23,173,250,100,174,234,35,233,39,227,246,40,13,44,241,191,226,29,5,16,246,23,246,243,14,243,32,9,245,249,73,2,150,229,28,252,231,23,30,255,252,30,235,227,72,231,222,32,20,241,235,42,249,221,2,255,235,47,254,200,28,49,191,215,104,84,194,174,22,11,202,229,54,28,28,255,216,13,56,255,189,2,52,217,233,35,241,210,42,31,246,12,7,226,249,31,214,193,6,78,40,202,30,45,241,8,233,180,7,65,243,219,64,23,183,235,71,24,210,231,194,42,79,210,203,31,52,25,221,233,43,232,251,54,16,209,242,255,254,16,230,205,21,67,250,214,254,45,2,191,52,237,7,33,247,3,10,54,193,207,60,249,189,37,34,246,1,30,221,217,29,220,219,77,27,220,1,28,21,10,254,241,246,205,247,46,244,30,55,195,206,49,8,191,25,25,240,240,18,12,232,28,5,24,14,2,232,189,253,62,10,5,15,242,237,225,255,28,245,2,7,229,17,2,214,24,76,6,0,238,239,250,222,46,251,210,44,254,232,39,235,244,14,10,18,215,211,7,32,36,10,242,23,245,222,35,0,253,0,236,255,29,247,228,249,254,37,222,20,22,252,229,27,246,246,34,3,0,4,232,229,15,14,0,2,243,8,22,8,194,23,47,229,205,15,35,251,21,237,225,20,39,209,8,75,249,174,243,15,30,30,231,248,4,7,252,225,15,39,228,2,11,233,218,23,42,14,248,5,8,221,245,9,244,19,3,245,13,13,237,29,251,1,229,227,36,249,13,14,240,236,4,16,44,244,207,251,8,0,1,0,40,24,219,237,31,235,0,22,246,17,241,236,21,0,232,255,242,1,34,225,10,35,249,253,254,28,24,248,233,251,248,3,236,253,5,11,5,247,235,24,251,245,18,12,16,244,247,12,3,254,16,238,246,252,253,21,249,12,4,252,245,239,246,1,9,23,10,247,253,9,15,246,250,1,254,5,242,247,252,13,7,251,17,21,248,238,1,4,1,235,1,242,12,32,238,235,20,12,252,5,249,26,249,246,253,247,16,253,243,2,11,246,246,19,252,11,0,244,4,3,242,248,16,11,12,0,8,246,4,238,239,16,21,255,213,22,6,243,254,26,0,244,3,242,15,15,8,233,250,31,245,244,249,5,247,11,2,242,10,26,250,227,14,12,244,231,15,27,27,254,198,248,35,7,250,245,247,253,15,0,18,6,243,245,31,6,243,248,245,14,254,242,253,12,250,17,254,232,36,246,237,0,27,0,1,253,24,255,243,11,227,241,6,25,244,242,18,11,239,13,11,251,6,242,250,5,0,22,248,250,1,3,251,0,3,253,6,242,254,25,11,231,248,24,3,255,239,8,10,232,7,12,249,242,1,19,6,11,11,242,241,1,0,241,5,9,246,3,12,5,245,18,255,240,19,7,241,239,21,4,228,3,20,252,3,11,234,243,21,13,247,236,33,255,236,23,253,251,4,5,249,239,4,20,249,16,248,225,31,254,247,2,0,12,248,239,5,3,14,13,245,1,16,237,243,14,11,8,225,253,27,241,3,11,249,16,249,232,247,23,12,221,0,33,3,253,6,247,253,0,15,1,249,7,232,10,25,3,231,237,15,255,247,5,1,235,17,24,250,10,254,13,255,248,13,246,0,0,244,2,248,239,9,14,255,251,0,9,3,238,14,5,7,4,252,10,21,1,215,249,23,249,236,9,253,240,18,14,251,7,3,238,2,18,10,234,253,17,6,246,1,3,3,9,236,251,9,2,244,244,10,9,0,241,17,12,8,0,252,243,255,0,6,254,249,9,249,3,26,16,225,1,24,238,250,236,4,10,253,7,247,252,6,6,10,1,253,10,12,227,8,18,249,246,251,255,22,253,237,1,3,1,242,2,17,250,4,7,13,5,241,0,0,147,8,9,0,250,5,240,232,11,255,245,7,234,218,30,27,215,3,33,0,232,17,7,255,23,45,13,253,246,25,33,255,227,27,13,238,4,0,241,10,245,4,29,219,235,253,240,13,234,244,1,244,0,251,5,237,34,23,226,228,38,12,204,2,42,10,239,44,14,238,15,9,27,15,5,217,244,46,254,203,18,49,248,230,247,227,239,255,9,18,242,252,231,253,238,254,251,249,3,20,246,209,25,44,3,4,25,240,248,19,12,25,241,7,31,241,9,24,244,248,26,244,236,11,7,42,240,190,28,19,252,233,254,21,228,241,227,19,10,18,235,203,40,6,167,3,63,244,228,21,2,28,240,13,6,4,58,211,253,55,254,219,37,52,215,228,21,61,243,188,248,14,35,222,219,33,5,214,17,31,229,246,30,255,211,20,12,227,16,26,248,227,14,15,219,30,26,221,0,19,233,229,69,253,206,251,29,29,238,255,17,25,235,254,24,249,242,246,0,226,247,38,0,13,0,242,243,28,42,240,205,0,15,219,21,20,228,244,41,3,235,31,249,226,21,24,235,255,11,2,5,0,59,248,210,27,32,239,252,18,230,250,18,239,242,235,24,247,6,0,233,14,226,228,251,25,244,240,5,231,18,31,243,242,24,12,5,213,33,28,215,17,4,29,55,228,239,20,2,246,243,23,26,216,238,29,255,247,249,27,4,219,248,0,30,12,215,20,41,6,193,252,60,0,185,2,29,253,0,243,9,23,0,225,240,31,35,234,223,61,2,221,20,246,10,251,243,24,7,223,231,242,2,15,248,23,249,245,254,233,25,17,1,245,31,243,238,18,247,11,252,245,253,3,243,39,238,250,60,254,252,245,8,24,253,0,9,40,252,6,2,232,244,230,4,6,230,14,0,1,241,230,0,21,250,8,250,218,28,37,231,247,5,229,9,5,252,9,239,226,18,8,232,10,3,244,29,31,8,246,250,52,10,6,8,237,18,250,209,254,38,5,238,0,34,0,202,11,49,5,212,249,38,210,232,252,41,38,224,222,6,247,7,5,204,38,32,216,1,30,12,226,244,60,4,206,7,26,234,7,19,234,33,14,234,237,22,1,235,243,0,51,234,218,34,238,9,254,233,251,25,5,254,9,244,17,4,11,250,233,18,241,22,252,246,28,241,223,251,75,244,209,20,41,2,231,21,1,24,224,217,20,38,246,198,46,26,206,243,26,20,227,255,243,220,0,252,8,3,1,44,226,229,8,19,255,33,10,233,0,243,10,28,30,24,242,16,242,9,1,226,241,26,1,199,247,37,0,213,24,35,243,243,237,1,44,250,208,240,65,248,198,13,71,246,190,6,17,237,20,9,213,16,51,214,251,38,45,254,191,67,251,255,7,225,19,53,254,183,23,45,244,215,239,41,246,238,33,226,251,254,253,244,32,237,241,41,238,249,232,240,47,232,221,247,18,20,236,17,30,31,216,7,254,242,34,252,243,14,3,247,9,28,243,234,23,37,12,207,0,0,241,30,20,201,11,38,255,239,229,34,41,224,223,240,2,38,226,9,15,14,221,226,6,28,253,227,30,2,200,4,49,241,242,21,12,23,253,213,53,37,3,213,232,60,248,214,250,52,254,255,251,244,17,7,246,6,245,246,0,240,249,229,247,23,1,217,8,11,19,30,214,238,66,33,147,222,70,252,242,250,53,246,250,53,17,241,243,22,253,37,249,227,18,250,5,253,232,27,241,225,21,50,193,3,28,19,235,219,13,28,230,240,31,10,220,232,0,37,7,191,244,16,10,250,224,52,1,214,8,47,223,249,43,237,251,22,228,1,83,212,196,20,70,21,192,254,75,243,193,38,29,253,243,251,41,238,244,13,27,247,3,252,238,18,236,228,25,27,232,210,248,38,204,221,67,22,232,236,248,35,254,212,13,36,237,233,2,20,13,20,230,3,29,246,228,245,38,23,222,11,20,20,221,247,12,27,232,253,13,247,16,243,248,29,18,234,9,243,10,245,253,255,32,231,252,0,10,8,250,255,2,234,4,40,224,207,30,58,189,220,38,50,213,248,16,21,21,228,240,16,7,253,246,14,0,224,248,13,29,234,218,24,30,214,236,34,30,233,236,61,14,206,17,53,234,241,26,45,233,197,32,0,6,248,211,26,31,204,242,58,33,222,216,20,48,230,207,17,61,186,195,67,33,173,237,23,34,44,227,239,0,45,8,203,15,40,234,234,32,12,239,255,41,5,191,34,3,206,52,43,221,229,7,13,9,227,4,0,27,20,194,220,89,27,183,242,27,24,225,246,41,250,218,2,22,3,19,222,242,17,11,2,218,25,32,239,197,26,70,246,233,17,23,244,221,22,32,251,213,2,45,5,211,227,250,45,3,210,26,33,214,248,41,15,210,243,44,234,0,23,241,253,255,17,236,254,44,250,210,42,37,223,217,252,32,253,5,248,234,22,31,254,238,21,4,240,0,12,4,209,14,22,16,249,216,251,2,29,236,7,21,230,24,9,254,219,7,4,6,23,211,1,30,255,243,244,25,3,210,20,49,7,190,252,76,248,200,21,73,204,235,240,6,78,242,232,254,37,202,229,55,37,214,242,25,6,223,216,49,44,235,193,24,21,3,203,255,46,246,239,2,0,36,221,0,10,248,243,5,241,19,19,200,16,33,21,30,242,1,15,6,234,244,9,11,14,231,245,14,19,236,240,37,1,247,213,0,14,246,9,36,19,208,6,1,17,25,227,236,41,12,213,230,20,29,237,255,4,15,229,249,28,227,6,238,49,0,219,255,11,251,225,10,251,45,14,219,246,33,13,213,46,44,181,225,55,37,239,213,16,54,9,212,227,19,34,25,188,233,86,249,185,36,54,224,242,24,238,254,234,254,251,11,3,216,61,239,221,6,255,39,243,15,11,211,251,33,13,5,0,244,10,24,242,238,17,238,250,8,10,21,212,0,8,22,251,252,247,29,243,216,33,246,230,25,243,33,12,226,0,19,235,11,254,244,28,238,4,21,213,12,25,14,239,8,7,233,4,242,13,5,2,240,4,22,243,241,46,0,224,3,49,1,236,227,242,37,245,253,19,233,15,250,249,255,0,12,1,247,239,235,255,45,13,228,253,26,0,207,253,57,25,203,247,63,218,251,10,250,41,245,198,53,24,245,204,15,83,231,198,28,28,223,229,20,233,17,255,225,35,6,236,240,48,18,207,248,63,246,167,48,26,247,28,217,58,241,214,48,14,210,222,57,32,211,246,1,19,243,4,197,23,72,215,221,48,31,2,240,241,227,22,240,21,254,231,32,229,228,12,16,8,241,14,7,6,7,1,22,5,4,218,8,18,234,246,245,49,31,204,0,39,248,230,36,13,217,0,238,16,21,235,230,24,25,214,232,25,15,227,241,22,24,245,248,38,10,234,16,222,19,249,229,24,237,11,230,1,39,3,224,253,56,226,240,6,12,20,231,0,11,250,15,247,241,40,237,230,19,252,16,17,1,0,8,253,239,7,43,0,243,250,18,4,199,46,5,248,213,246,12,247,249,235,31,14,241,254,28,15,232,217,40,49,204,221,43,27,241,226,222,30,27,234,219,30,0,246,46,255,13,7,7,237,0,0,238,6,12,255,233,32,5,211,254,16,251,249,21,10,240,234,14,84,250,205,11,28,0,218,217,39,20,251,225,240,45,23,227,226,62,237,236,254,6,10,231,0,10,240,6,33,250,221,7,9,14,230,243,30,20,249,251,0,10,255,2,34,251,236,255,9,9,255,229,31,24,196,245,236,58,253,224,6,30,8,221,217,65,9,179,229,39,2,0,243,24,70,7,209,10,29,3,209,237,67,250,196,11,74,253,6,202,17,69,194,214,52,51,233,196,245,54,10,220,34,207,248,243,233,50,28,233,203,251,40,36,239,246,32,244,200,15,216,0,59,245,228,251,1,14,24,0,8,248,244,35,240,33,10,232,20,25,1,252,33,7,12,206,227,77,246,209,6,18,25,11,235,223,23,218,236,5,11,216,231,0,48,237,249,252,17,37,226,181,23,68,219,10,16,241,6,1,17,19,248,249,247,1,19,232,205,39,48,235,247,255,253,22,220,236,44,38,249,236,236,19,2,243,0,19,255,29,254,248,17,45,239,247,60,21,216,231,60,12,222,40,37,215,236,237,9,34,245,220,4,205,227,0,226,209,184,204,193,137,190,251,22,29,18,28,36,86,82,53,51,56,60,18,38,16,0,86,69,246,207,20,57,233,202,1,36,253,208,196,245,12,232,193,0,28,214,187,0,252,196,211,249,252,243,240,230,43,77,2,213,244,68,8,227,243,6,48,233,211,253,65,27,212,249,58,32,224,236,41,47,29,10,253,16,20,238,248,0,19,5,239,6,243,242,20,221,232,14,28,12,206,247,252,210,247,241,0,26,252,233,24,9,14,15,8,7,4,41,7,193,12,77,30,21,228,241,13,237,217,254,5,227,224,210,9,20,226,214,224,30,11,227,234,6,18,255,8,15,21,243,19,43,23,26,240,46,27,0,30,0,7,14,253,234,5,27,242,242,6,8,246,228,252,2,15,1,245,239,13,254,240,252,0,2,236,235,249,243,0,231,227,14,25,230,238,11,244,253,15,19,16,18,5,8,240,249,14,225,7,41,250,231,9,25,7,7,12,6,20,0,232,0,3,255,3,19,21,0,244,255,27,238,231,8,0,250,248,240,4,18,3,5,14,24,248,247,7,238,234,10,8,1,12,243,247,247,233,8,8,1,255,249,248,241,252,16,245,245,7,20,240,245,18,10,254,7,6,0,0,249,236,13,21,239,248,9,15,6,0,10,4,10,12,0,246,13,248,239,253,4,2,246,16,253,238,2,11,252,251,17,16,253,11,7,245,0,2,6,254,251,236,0,6,239,249,0,249,1,8,242,246,7,254,1,7,252,8,13,252,1,7,21,0,171,8,22,0,3,245,0,3,242,235,252,14,28,16,241,248,2,4,237,225,245,4,0,242,9,34,7,247,5,28,5,2,239,24,30,4,241,238,7,241,230,247,242,223,12,10,2,14,249,252,36,35,244,241,18,16,8,230,248,17,22,2,221,238,10,240,218,234,36,56,244,217,249,33,28,232,253,35,29,3,240,223,254,8,9,253,229,251,6,9,5,4,9,5,18,242,223,2,230,241,14,10,34,35,245,0,9,14,0,224,229,6,4,6,248,243,14,15,245,204,23,38,4,255,3,18,24,235,255,14,239,3,208,210,4,37,31,10,241,8,12,11,18,244,253,240,254,251,237,9,30,11,228,245,9,16,230,225,244,5,12,32,51,0,227,15,30,4,247,247,242,230,249,19,3,248,252,220,222,54,8,218,248,28,45,31,244,247,37,220,2,15,244,244,17,13,243,232,8,39,177,206,76,250,211,249,16,39,18,251,0,0,42,34,220,244,6,232,238,1,23,54,237,190,13,20,226,242,2,13,227,246,42,16,9,0,253,23,24,232,249,246,235,14,20,247,239,47,2,218,251,17,13,244,233,229,6,34,250,236,255,18,245,7,6,0,10,32,5,237,6,1,5,18,16,246,221,239,4,244,241,249,13,235,218,18,33,3,42,20,11,13,232,239,5,30,255,229,1,25,21,200,237,25,225,208,245,7,9,40,23,3,27,44,231,236,25,245,231,236,246,244,35,16,217,13,18,255,6,25,200,237,44,21,220,250,37,234,16,23,231,229,238,6,233,44,32,244,254,247,40,38,244,209,247,3,243,226,254,41,26,222,254,21,34,0,185,232,32,40,12,206,215,72,33,222,6,19,239,254,1,242,1,5,29,14,220,248,35,233,252,210,239,21,234,28,37,230,34,23,242,38,0,5,248,194,234,24,48,253,192,1,25,255,240,227,13,60,244,198,38,47,38,241,202,19,44,227,207,232,42,15,207,2,20,17,252,247,242,21,47,7,247,241,232,12,64,238,156,8,35,206,53,14,167,61,65,188,240,38,67,233,208,28,2,19,13,207,1,253,208,12,243,220,81,37,227,10,232,17,25,12,2,175,19,66,200,207,74,23,222,27,210,226,40,226,243,87,26,203,243,21,41,10,202,244,0,3,236,247,251,253,34,16,254,7,8,229,236,30,74,7,177,231,49,233,224,36,255,228,22,251,6,54,178,16,45,213,6,38,212,230,71,26,3,215,232,11,209,219,86,50,193,219,65,77,218,168,10,44,15,235,0,239,232,68,242,197,35,30,189,4,49,34,214,205,33,71,10,181,223,47,28,249,23,10,180,2,28,235,44,11,223,222,250,32,20,212,213,47,59,254,248,249,15,221,6,46,244,236,34,236,215,36,239,215,20,57,211,231,43,226,17,55,3,213,254,20,203,32,38,182,216,103,54,197,18,18,201,243,60,208,240,1,206,27,61,47,224,196,229,40,81,242,190,238,15,51,25,229,248,216,40,56,175,240,0,4,250,231,81,60,166,182,75,68,248,176,4,52,237,251,245,34,29,206,220,4,77,205,220,1,58,23,200,238,56,70,198,208,48,35,187,197,47,50,225,183,43,92,223,232,17,24,232,220,235,24,40,226,5,255,49,241,210,24,21,237,1,251,215,46,32,217,244,25,18,236,20,221,231,17,38,0,203,29,29,250,229,18,26,254,33,203,249,12,254,238,251,39,243,232,246,19,7,255,28,214,62,27,169,2,19,24,37,193,224,87,246,247,204,210,94,254,200,246,17,58,248,239,8,27,23,178,254,71,255,207,220,36,58,239,146,252,123,3,192,252,252,53,8,196,38,27,240,16,231,213,72,34,195,234,236,11,43,224,1,10,228,50,20,174,251,63,255,253,1,51,1,229,209,251,55,15,195,228,45,37,224,176,27,78,224,232,11,37,12,1,225,237,255,46,35,216,246,24,1,211,249,241,20,46,233,238,19,26,245,227,248,8,24,227,5,55,202,15,17,219,23,20,12,211,222,38,70,11,207,205,41,40,219,238,232,255,31,244,196,46,93,220,205,236,75,56,173,217,56,48,236,189,244,60,18,249,0,209,1,40,229,240,14,234,233,33,14,1,2,16,255,1,31,245,7,228,245,41,24,242,224,233,228,16,41,247,181,21,26,10,7,230,72,41,204,237,50,248,249,176,189,117,70,167,180,59,110,240,200,235,19,28,233,207,247,70,40,195,197,76,79,188,203,250,46,9,194,4,37,64,249,211,34,0,245,251,212,18,15,213,13,9,228,17,75,246,186,21,66,238,216,203,30,94,220,210,33,6,14,18,173,27,65,141,249,74,13,22,219,240,28,1,21,244,195,29,7,211,38,255,240,62,240,243,79,232,205,251,247,23,241,31,15,205,245,255,34,5,209,254,12,14,11,236,19,20,9,20,231,7,55,216,215,3,34,232,195,28,246,250,54,226,249,52,226,255,255,236,30,2,41,40,172,27,63,214,161,14,99,234,203,187,48,91,206,176,27,89,23,211,209,28,25,215,232,67,59,250,170,8,94,216,172,239,47,50,239,230,227,14,37,194,1,61,42,238,188,10,36,249,3,225,45,53,202,196,18,101,247,156,231,46,50,232,204,15,27,42,232,176,32,70,240,193,5,50,70,236,184,240,27,23,2,225,7,15,13,28,226,216,0,35,227,245,5,20,233,236,32,9,18,32,229,250,81,247,162,2,58,254,210,230,22,255,244,249,243,49,27,204,3,59,22,193,211,67,254,17,1,202,16,61,215,227,51,0,223,203,40,52,169,49,29,192,55,16,198,252,53,30,207,196,34,26,28,19,211,6,43,226,220,251,24,2,238,247,22,249,7,25,209,46,20,196,27,26,185,8,30,235,3,42,25,217,2,4,5,3,252,226,5,55,222,193,50,41,4,211,208,24,74,247,135,16,112,255,175,9,75,43,192,198,101,31,158,227,39,43,225,237,249,26,37,225,166,23,66,216,220,30,32,0,2,48,248,13,40,199,202,71,246,198,24,19,235,227,10,34,25,219,210,208,63,35,228,21,245,16,48,26,207,7,34,212,0,20,236,2,10,218,233,27,3,223,242,34,19,14,240,230,20,24,4,4,14,245,250,15,2,233,2,25,208,253,62,224,232,11,221,35,51,197,234,51,214,0,245,43,65,154,21,68,221,23,251,237,26,237,240,39,209,221,13,242,67,29,201,225,30,37,233,223,250,79,242,192,33,8,24,7,215,255,57,242,213,20,241,25,247,219,42,0,254,233,214,30,43,248,218,42,19,218,249,33,22,0,210,27,16,213,30,5,208,11,250,14,67,223,194,42,255,220,29,226,1,76,255,178,32,74,245,207,219,17,83,238,176,246,47,42,230,194,5,58,29,213,190,39,107,231,131,39,113,240,141,2,84,15,223,193,32,59,245,218,250,41,33,232,181,48,24,217,228,237,74,48,174,245,52,0,247,233,249,73,246,203,38,7,249,21,249,211,1,44,230,227,10,254,4,254,26,245,228,9,43,4,217,3,64,251,234,22,254,4,236,237,20,249,212,19,0,226,55,236,196,53,44,209,248,29,9,24,252,9,19,0,236,231,244,33,1,221,25,240,233,17,246,236,3,25,15,4,237,2,38,254,249,12,255,6,231,250,37,242,253,12,209,237,42,49,204,224,30,3,246,255,30,233,239,17,17,17,0,245,9,12,3,230,2,251,3,8,221,4,55,202,0,23,230,59,201,206,97,33,198,227,18,45,1,213,17,38,228,202,21,42,232,241,8,5,28,20,213,229,40,17,228,251,12,231,19,11,236,6,35,10,198,251,47,247,232,23,4,238,27,2,225,10,20,223,250,60,239,209,12,3,230,61,30,157,18,58,251,244,218,32,28,211,16,31,235,20,6,209,7,239,0,34,221,238,51,4,225,23,7,248,7,3,244,15,13,248,12,0,22,238,215,231,21,14,232,227,33,53,197,248,59,241,241,40,10,247,0,26,13,186,13,30,189,21,9,197,55,31,237,237,225,49,16,213,31,18,240,19,236,253,59,252,181,243,71,14,187,237,40,28,248,236,2,6,248,12,6,230,16,10,228,4,18,251,7,32,248,202,21,41,1,234,244,22,235,249,21,246,10,3,239,239,23,32,193,212,70,42,222,253,17,23,237,225,18,24,24,204,227,62,20,197,234,25,24,12,224,250,18,249,8,231,255,52,240,225,9,21,24,235,220,31,44,212,227,37,24,243,0,2,226,245,4,238,25,38,233,227,17,254,16,13,226,12,29,243,221,36,47,208,233,17,18,0,234,250,1,18,3,221,0,25,2,230,252,19,24,10,234,2,46,236,218,9,232,54,23,179,4,48,245,253,232,0,44,245,224,7,253,15,5,207,28,73,226,239,245,6,55,224,205,33,9,10,226,232,36,234,20,32,221,245,22,236,250,41,248,230,32,20,227,231,16,46,238,215,21,10,10,0,228,230,50,10,218,5,0,254,11,0,242,21,26,215,222,84,47,185,232,28,15,246,243,252,217,14,25,244,236,29,39,192,8,59,247,243,246,20,6,228,250,39,227,250,26,246,21,226,224,22,24,3,226,231,50,21,217,252,32,16,243,228,23,56,201,201,36,14,23,248,213,31,14,243,3,218,12,41,238,224,22,12,10,243,233,36,13,244,252,237,26,27,219,240,25,9,248,235,247,17,12,238,246,27,10,242,246,6,22,239,6,28,236,234,1,36,11,219,248,26,245,2,4,225,19,6,252,243,0,9,33,233,217,76,11,201,255,39,240,245,245,22,10,228,16,251,253,27,231,219,54,0,229,7,18,11,233,249,14,20,247,230,18,6,10,245,220,43,0,229,5,16,18,244,240,240,21,27,222,254,14,244,10,17,242,253,17,3,0,239,1,9,246,236,16,15,253,0,233,30,19,235,246,248,28,3,220,7,6,26,0,211,21,32,249,236,247,22,14,241,244,251,22,250,244,14,252,247,5,1,14,1,238,24,4,236,5,10,243,0,153,7,51,0,12,9,4,3,255,18,20,238,7,32,4,241,4,14,2,0,26,2,233,1,17,25,12,237,252,34,14,245,252,5,24,12,3,237,251,36,2,233,0,24,13,237,246,21,9,7,3,249,17,13,251,9,9,10,11,241,12,33,235,234,33,26,234,253,23,6,254,2,11,6,6,16,13,249,12,22,0,8,9,249,1,11,4,255,12,11,2,255,5,32,11,244,16,29,4,244,11,23,244,0,36,3,247,1,251,3,40,16,228,0,28,16,251,251,13,22,9,0,238,5,35,2,253,4,2,11,8,236,245,23,27,251,246,254,10,13,7,234,10,55,243,220,4,13,21,20,232,233,24,22,252,242,12,24,250,245,255,8,12,8,248,6,25,13,233,251,35,27,239,245,15,26,0,247,13,12,3,3,250,253,7,15,3,254,13,250,235,14,14,0,25,230,252,45,243,0,29,3,0,255,12,5,252,251,28,22,235,4,21,250,10,6,253,20,19,254,253,24,22,251,0,11,7,1,0,6,250,0,33,3,236,253,16,16,252,249,3,7,21,8,242,14,25,239,14,13,232,5,17,20,8,241,245,28,8,246,17,5,3,5,246,252,14,20,10,221,16,57,238,239,3,12,26,240,253,1,248,31,4,229,25,17,249,252,21,22,241,253,18,3,255,0,251,27,6,217,19,7,244,22,245,247,12,8,254,19,6,246,10,11,8,0,234,4,27,2,254,244,13,48,1,233,3,25,5,249,1,35,6,1,7,237,24,39,249,231,22,27,242,247,17,7,11,31,234,251,22,9,20,244,250,32,247,5,21,0,21,247,246,25,5,2,25,11,243,20,13,246,23,253,6,29,253,4,17,1,10,253,250,19,5,255,0,250,21,35,233,243,32,37,254,235,13,19,0,0,255,19,255,247,22,4,250,13,249,245,31,2,250,2,254,0,38,29,231,248,32,13,241,6,6,238,20,229,227,58,16,212,253,27,12,230,253,34,20,1,240,246,7,26,9,244,252,253,249,6,4,10,0,13,15,5,254,248,30,48,225,220,42,13,252,237,215,31,68,245,218,13,55,23,197,244,52,41,253,232,2,28,17,242,0,17,255,0,245,10,43,245,220,21,59,237,223,31,38,4,244,232,19,33,2,248,243,28,20,253,252,242,37,19,214,13,24,0,12,7,239,14,27,229,250,24,7,1,241,255,33,5,233,247,40,36,245,236,2,36,17,240,251,251,14,30,240,228,21,15,8,8,228,5,43,248,253,22,19,249,238,7,28,18,222,252,21,15,4,241,238,22,19,244,248,11,3,238,43,29,236,0,17,43,7,227,18,16,6,21,227,231,31,25,244,245,244,24,21,235,0,29,2,3,18,236,252,40,0,241,9,255,31,11,214,6,27,4,248,243,246,39,9,229,8,21,9,14,244,232,30,32,248,239,3,13,239,11,16,233,11,35,250,244,24,18,235,8,30,10,241,250,32,1,255,20,244,249,28,19,247,0,10,3,18,22,218,7,42,249,5,13,244,0,247,5,31,255,251,3,5,4,10,0,3,31,242,241,13,28,6,236,21,45,250,235,12,21,15,246,6,24,251,244,254,23,13,226,254,41,239,0,26,235,7,29,255,233,229,49,22,218,10,10,2,25,254,228,14,25,243,250,6,1,9,251,250,32,255,247,31,245,242,20,10,246,30,27,222,236,46,24,209,4,30,249,0,15,236,244,36,29,240,254,35,3,241,10,9,0,222,8,41,251,211,7,43,249,252,240,245,46,6,247,5,250,43,250,213,41,28,233,6,12,38,4,211,22,51,245,233,248,29,41,249,228,0,59,36,217,239,31,20,27,222,215,62,2,211,250,37,21,243,238,2,26,5,3,0,254,3,255,5,251,15,243,254,34,13,246,255,19,24,249,230,3,35,14,244,254,8,34,13,9,251,218,18,64,222,195,14,26,24,232,235,14,11,8,236,234,56,20,204,21,36,249,8,249,249,25,237,255,18,240,14,12,230,31,41,252,227,13,29,250,229,12,37,1,235,18,245,235,67,9,227,5,11,243,9,15,246,9,21,10,248,252,251,41,37,241,248,254,11,37,18,239,5,15,20,10,250,10,6,250,27,2,237,22,0,0,26,243,1,33,231,9,46,235,245,9,30,30,186,244,60,27,7,219,251,54,24,255,232,20,58,246,195,11,40,18,2,200,0,60,42,225,219,32,32,4,232,254,5,13,37,225,247,42,255,227,19,10,230,5,26,236,255,19,8,10,21,242,238,36,3,9,1,243,53,29,200,245,43,246,25,1,188,17,48,233,0,7,240,28,12,233,10,17,0,250,17,31,237,219,30,38,12,249,237,0,38,249,9,12,224,60,17,164,60,69,186,246,2,12,106,244,132,46,76,41,222,179,29,40,30,238,186,37,78,238,227,0,40,33,7,250,249,21,27,237,8,47,202,26,57,239,25,236,237,60,21,231,223,21,81,219,184,42,30,0,25,255,224,15,38,250,232,250,0,32,7,228,22,9,244,2,23,255,230,20,17,255,249,243,37,42,244,226,0,25,5,245,12,12,242,15,41,228,203,64,67,199,241,34,10,22,238,231,33,13,250,243,235,40,21,193,10,46,244,242,253,24,40,251,232,244,35,50,223,212,37,47,229,232,14,252,39,22,231,0,48,2,226,27,35,233,2,24,12,1,209,37,53,221,246,27,10,27,253,252,15,250,2,6,5,50,247,212,26,37,1,239,244,44,30,236,7,247,30,34,228,242,4,45,0,197,22,59,255,233,254,1,23,24,240,237,47,20,242,236,32,21,237,35,4,209,13,62,3,229,15,253,10,20,235,2,39,224,255,38,243,8,244,227,73,17,203,11,38,243,6,2,255,35,246,10,246,242,61,235,206,61,254,232,39,248,246,42,13,226,253,37,13,5,9,237,24,47,227,237,51,19,232,18,7,238,27,17,235,8,14,228,21,11,236,37,2,243,12,9,8,27,0,231,3,22,253,229,38,1,221,31,13,251,8,248,17,255,250,32,5,14,30,232,246,50,0,241,23,230,28,24,208,32,55,217,214,74,45,182,1,59,19,246,233,25,4,6,7,214,40,29,241,252,0,16,21,16,218,14,61,242,245,7,0,43,12,235,10,3,6,30,240,245,49,243,219,16,66,11,175,2,101,238,236,10,212,50,100,166,173,111,43,204,232,10,50,1,225,11,20,4,254,243,8,35,235,220,17,22,241,242,34,6,243,6,248,243,44,0,230,6,15,238,0,9,0,35,235,234,51,249,218,23,11,7,250,223,24,33,7,228,230,58,27,201,15,25,248,31,27,218,212,78,56,189,200,68,66,221,212,253,34,62,218,221,32,13,6,7,7,8,14,251,6,23,30,210,250,62,19,230,227,29,29,252,245,60,246,173,65,92,206,232,54,17,230,36,27,194,14,52,208,250,50,244,197,38,59,212,253,12,7,5,249,239,28,10,0,227,0,70,241,226,27,21,12,225,241,27,18,3,226,7,33,223,1,34,11,7,224,14,56,248,220,33,10,247,247,247,42,228,208,44,51,239,237,245,22,56,202,245,54,241,1,2,245,43,251,220,18,29,246,232,33,31,236,233,6,57,5,221,250,0,32,22,200,35,54,217,10,2,233,60,35,211,0,27,26,253,228,0,35,36,254,208,4,81,223,228,58,252,236,29,231,16,50,212,245,17,33,30,191,245,72,20,237,240,243,43,27,252,3,252,249,18,48,250,247,32,252,232,42,11,210,39,53,250,196,8,57,250,243,34,242,254,45,230,242,3,30,28,239,232,248,41,15,235,31,233,233,48,3,234,2,13,20,14,254,10,235,247,40,246,28,241,224,41,18,254,224,6,39,17,244,222,0,47,12,223,11,33,246,255,0,243,30,32,235,219,35,12,241,38,253,224,30,34,237,223,25,30,252,2,247,27,252,240,45,247,237,7,17,16,250,222,17,69,230,224,37,7,53,247,198,56,34,215,25,10,238,42,11,238,22,239,31,29,223,12,1,17,6,240,39,225,238,76,244,216,6,33,32,239,241,46,227,20,52,174,4,61,246,12,249,1,56,233,234,38,239,12,56,221,215,33,17,252,7,2,9,6,233,251,44,21,222,219,35,42,215,255,7,6,40,0,188,15,76,245,193,29,25,23,8,182,44,68,240,236,240,53,10,225,18,13,11,247,16,19,2,239,204,71,69,188,229,30,35,0,2,14,236,15,32,228,249,49,3,218,5,31,2,0,11,23,237,4,46,204,233,66,250,217,22,41,2,225,27,47,234,252,10,16,32,207,1,42,242,20,254,219,33,33,214,18,53,242,10,6,234,30,19,235,9,42,242,224,32,0,243,16,251,11,23,244,253,40,252,250,35,247,246,16,251,23,249,239,13,0,0,0,172,10,36,0,2,26,14,253,249,242,249,12,10,245,245,5,17,11,247,248,3,4,242,243,251,13,38,2,239,229,238,18,32,29,251,215,251,10,254,22,5,236,0,253,249,4,245,17,37,235,225,25,14,241,235,238,21,50,5,223,245,255,4,21,251,250,15,8,224,230,4,10,6,25,39,242,232,242,238,21,16,0,249,237,8,23,246,248,2,6,15,248,241,248,246,251,24,41,19,244,218,239,0,2,23,20,229,0,16,249,252,251,243,248,2,1,17,32,19,246,233,244,16,231,228,23,35,20,0,20,236,198,228,14,29,248,3,25,26,11,227,236,252,246,5,19,20,252,238,24,15,247,249,243,236,249,14,252,0,23,15,248,228,10,11,242,244,9,42,21,247,244,220,240,21,0,254,15,14,15,234,224,255,249,249,16,32,43,13,223,209,247,27,0,248,17,23,230,215,19,42,7,253,240,228,6,255,239,29,31,27,36,223,163,202,26,61,27,12,10,4,252,222,193,239,45,44,31,40,247,167,198,37,52,11,217,226,43,54,247,244,233,231,235,228,25,94,53,235,211,190,221,25,43,37,12,245,18,16,205,169,212,34,75,50,27,0,213,227,2,255,248,0,5,6,11,48,25,221,218,225,242,7,8,9,36,25,249,230,224,4,5,4,8,42,9,216,243,25,29,239,241,17,237,208,240,19,48,30,242,252,7,251,245,217,201,23,75,51,20,238,222,229,249,240,242,24,28,3,2,250,251,16,248,236,237,1,46,22,246,205,235,25,24,30,254,16,14,209,230,12,235,226,28,40,7,0,19,4,225,223,5,16,251,10,9,4,4,252,18,252,235,226,238,14,53,51,249,205,211,250,13,5,15,42,31,245,215,219,239,14,42,9,253,23,17,224,212,246,3,244,20,46,4,227,22,41,230,216,253,241,255,35,11,1,248,241,9,244,248,58,15,206,221,11,58,253,218,0,0,238,250,69,21,189,239,53,31,242,242,236,199,219,40,71,35,20,8,189,203,19,255,243,1,21,51,43,30,180,141,25,52,245,4,33,29,0,233,234,239,238,36,57,222,223,44,14,218,222,252,5,30,34,14,10,240,224,222,229,12,36,20,11,16,247,222,252,26,6,216,214,49,76,18,228,183,215,33,38,237,29,77,232,131,206,37,69,55,38,242,198,227,251,28,15,217,222,26,27,12,47,253,196,240,29,254,224,1,37,1,245,55,7,193,204,250,40,76,26,179,232,32,240,244,36,37,239,225,242,7,39,252,200,221,37,51,7,247,253,7,16,1,230,214,234,254,56,71,17,223,200,215,246,54,47,232,218,27,39,244,197,231,43,49,0,232,2,1,243,251,17,29,2,219,208,1,55,38,223,170,254,106,48,226,246,252,213,218,6,43,49,0,198,246,25,8,10,252,234,249,24,33,11,192,196,54,52,10,241,196,237,9,26,55,14,2,10,212,209,24,18,238,247,0,29,16,241,255,0,239,241,251,0,248,40,71,4,241,8,214,166,242,68,43,255,242,0,8,249,230,231,3,41,66,10,218,210,230,244,253,60,68,237,208,249,2,243,251,255,28,37,254,226,5,17,220,218,14,29,13,15,12,241,246,12,243,227,6,14,248,36,15,217,248,250,254,34,39,245,223,224,216,8,87,68,234,233,227,222,227,244,239,9,94,46,27,18,171,146,239,30,26,60,80,5,182,198,244,42,24,219,249,45,42,224,218,18,253,227,251,17,21,244,238,36,25,241,10,28,237,211,206,237,61,79,255,230,20,235,201,232,25,49,253,222,17,0,218,20,39,12,251,227,18,23,216,219,12,11,67,18,211,4,234,234,11,9,248,241,0,19,15,0,10,8,243,240,249,29,5,242,8,252,240,23,7,219,254,34,254,242,31,14,221,233,230,235,25,61,37,250,12,245,196,221,0,35,38,3,243,220,254,56,30,217,225,2,5,230,238,66,41,220,7,236,202,28,43,239,16,23,224,227,38,26,202,217,22,34,23,254,250,255,229,241,31,20,250,12,251,228,241,235,16,52,252,254,2,8,11,218,199,25,79,0,192,251,34,13,0,3,13,241,221,215,12,39,31,63,246,171,222,31,21,19,236,241,33,0,217,37,5,209,247,18,75,29,200,189,18,23,204,8,76,54,227,203,14,7,189,244,58,0,3,67,32,196,190,202,223,37,114,93,19,173,159,193,3,78,75,10,223,254,237,231,237,6,35,251,2,43,251,214,234,20,27,11,252,221,246,252,250,42,64,0,205,239,248,237,33,27,216,235,18,10,0,32,10,228,7,16,250,226,244,8,236,0,44,13,1,54,21,170,178,226,19,73,73,28,211,209,253,11,227,189,25,95,39,248,245,218,223,244,252,10,42,38,14,246,190,215,6,12,53,73,8,207,212,229,223,230,63,89,22,231,229,211,197,254,42,63,34,8,0,223,212,228,245,21,49,51,240,196,239,15,20,247,2,7,245,240,18,32,0,245,5,5,224,237,26,7,245,16,25,0,222,233,13,33,244,244,1,6,248,239,23,24,239,14,24,227,225,10,250,251,32,50,244,217,247,239,238,2,43,50,20,227,207,193,252,26,36,37,38,24,243,197,208,246,232,21,94,64,211,187,0,20,245,209,24,69,248,238,242,238,10,241,255,37,55,251,181,244,11,32,39,243,226,233,20,9,223,254,29,5,253,12,20,11,223,197,244,22,64,66,210,187,1,27,21,0,254,252,248,248,19,250,185,5,106,55,207,205,237,229,2,32,9,5,35,32,232,218,23,230,182,0,67,73,19,233,212,202,20,27,225,249,38,24,232,252,54,23,216,208,234,255,10,38,6,239,38,21,222,223,2,6,244,16,61,3,198,242,23,255,221,4,52,10,218,218,31,60,255,231,226,235,16,255,237,38,65,0,204,233,255,6,19,19,253,252,9,211,211,1,27,54,50,1,199,215,14,13,252,7,24,27,229,214,27,21,232,239,13,11,245,250,14,23,5,5,249,220,224,255,42,44,0,242,245,232,251,25,23,243,209,237,31,59,42,254,222,205,219,254,25,44,10,230,13,30,214,214,26,35,15,241,236,250,25,13,224,249,31,13,6,225,223,27,31,225,249,42,234,255,1,233,0,20,23,11,248,227,236,4,26,23,240,253,20,251,248,234,236,41,60,242,220,232,235,249,31,30,247,252,20,235,211,17,48,8,231,31,16,225,238,250,3,229,12,75,6,199,227,7,11,25,17,231,212,247,70,22,226,18,6,201,228,42,55,243,210,10,41,242,235,16,0,220,215,16,69,24,251,246,235,220,252,27,15,243,2,29,25,254,219,221,247,11,6,5,53,45,229,180,232,56,10,218,1,30,8,242,248,35,12,204,203,15,61,52,4,216,240,12,246,201,3,62,5,232,18,38,241,187,228,21,21,46,33,217,227,38,2,215,255,11,236,0,45,44,240,226,234,241,243,253,56,27,223,4,255,249,3,255,255,2,235,9,48,245,222,235,247,41,57,17,228,198,231,255,245,10,46,62,1,242,238,211,224,0,16,24,21,39,31,218,187,223,26,50,255,239,5,248,249,23,17,245,246,31,10,213,234,23,4,229,255,43,36,228,211,15,33,228,226,30,25,243,11,0,236,14,7,240,241,2,16,249,9,35,9,214,227,10,18,253,232,12,56,34,228,202,241,250,249,30,22,25,11,205,233,36,3,228,32,35,230,210,252,28,30,5,207,236,46,31,236,221,24,29,220,231,40,15,212,4,37,3,228,0,0,241,8,31,0,237,8,16,248,248,8,2,245,208,0,70,13,234,7,7,219,223,11,20,10,19,5,5,18,5,207,218,14,1,5,21,37,34,223,209,237,233,11,28,23,34,26,223,218,241,239,3,32,37,16,241,235,246,232,243,5,22,32,23,254,228,228,234,21,29,22,254,236,242,7,7,0,251,253,236,243,39,48,248,222,252,4,247,245,254,8,23,20,5,229,242,23,20,231,204,222,44,87,26,217,210,250,12,249,253,17,23,249,236,2,16,11,239,221,3,35,24,16,219,207,19,32,23,245,206,20,47,194,209,52,71,21,212,235,5,241,231,3,2,7,42,32,13,244,182,197,255,42,70,54,253,210,212,219,0,24,29,43,0,250,7,199,217,19,14,13,30,44,5,200,198,229,15,60,71,23,206,194,223,247,31,54,26,238,244,11,3,202,235,41,26,255,23,0,206,216,255,37,33,12,0,252,255,231,224,10,40,27,5,231,232,254,243,248,1,26,46,16,236,223,200,7,66,14,228,234,2,34,17,239,244,248,0,1,246,15,30,3,232,3,0,241,250,255,12,255,253,7,250,11,43,2,224,245,236,244,21,12,255,10,10,2,1,243,236,230,0,43,44,2,214,231,11,28,254,235,5,3,252,3,7,0,4,6,233,245,29,14,233,239,7,26,31,0,235,238,235,238,232,15,99,59,218,209,236,244,231,208,20,95,80,226,174,233,18,15,3,249,9,37,2,234,226,230,7,38,46,254,200,224,36,24,207,4,62,20,233,197,243,57,31,224,217,6,42,13,202,244,70,22,206,233,11,251,6,38,13,216,235,12,14,252,233,6,38,17,228,240,10,8,5,238,252,11,251,8,25,247,224,3,17,10,251,235,255,39,5,212,0,30,5,231,232,18,43,254,231,243,1,38,14,237,226,246,14,10,3,8,7,248,252,253,250,251,15,11,243,7,13,247,1,240,239,31,29,243,238,250,244,4,12,13,13,1,247,253,248,254,242,229,30,60,15,230,231,246,245,251,5,16,253,246,16,25,3,5,240,225,252,19,8,251,6,17,246,229,21,28,237,224,3,24,249,226,14,33,6,254,30,245,206,242,17,4,245,6,27,11,246,10,251,238,254,5,252,2,16,0,251,248,6,4,244,9,8,240,252,12,12,255,251,5,4,1,241,234,255,15,29,12,249,1,248,236,249,245,16,29,12,3,249,224,219,7,51,33,240,241,255,228,254,33,0,248,13,13,0,238,244,242,241,12,37,29,253,248,243,224,244,5,9,33,25,252,245,239,228,255,13,1,21,21,247,3,11,225,227,2,22,26,253,240,9,23,242,218,244,22,33,15,246,232,235,252,30,25,0,1,3,249,241,221,234,24,42,26,252,230,247,14,247,226,3,36,15,243,250,8,253,241,0,5,20,7,238,249,250,249,9,25,10,244,4,7,238,234,6,6,248,10,10,4,30,1,225,249,3,246,252,0,4,25,9,241,14,11,235,233,244,0,15,24,16,0,251,248,242,250,253,9,255,251,31,28,238,232,18,254,211,218,34,58,8,1,5,248,232,225,238,6,32,32,37,8,215,222,249,239,254,34,31,16,2,242,215,231,14,17,10,26,14,227,235,1,2,252,14,10,249,16,21,241,216,252,4,1,25,37,9,220,223,244,6,24,25,6,217,226,29,42,7,235,231,247,20,27,6,241,221,240,17,36,39,5,208,211,15,12,255,22,22,0,230,242,8,3,255,255,11,7,254,0,3,6,247,227,6,42,0,236,246,2,3,5,12,4,250,240,250,247,0,23,16,254,4,10,237,246,8,251,252,3,7,9,11,5,236,226,1,22,9,8,3,239,251,14,249,247,13,250,247,25,8,242,11,13,245,240,2,236,255,29,20,237,228,19,26,0,245,231,240,24,25,3,7,240,226,249,4,24,44,11,227,218,234,16,9,6,21,1,248,6,5,255,234,228,253,30,38,9,247,238,244,246,252,16,24,250,234,0,3,252,21,19,1,243,229,249,21,19,244,236,5,16,4,0,13,6,235,229,251,17,27,4,237,242,11,24,14,249,219,216,5,59,40,242,222,240,255,10,16,12,0,235,231,249,21,34,9,247,236,255,16,9,252,231,237,251,25,35,16,239,224,2,2,239,11,30,6,242,255,13,6,227,230,16,20,20,5,232,1,4,233,248,13,13,24,12,234,241,6,242,226,22,48,11,242,254,248,238,236,0,22,39,10,231,235,0,249,245,13,24,19,246,253,253,243,252,244,241,21,55,19,229,225,232,255,12,18,13,8,5,243,232,1,17,3,239,0,18,7,250,255,6,245,240,3,33,25,239,222,242,9,18,10,5,4,245,235,249,9,19,11,255,252,247,2,7,243,228,0,39,29,250,242,0,247,236,254,23,169,9,63,0,14,9,244,250,10,1,244,254,255,8,16,250,252,7,7,255,245,249,252,1,5,17,18,248,234,253,2,255,8,14,0,247,0,5,10,252,239,252,11,17,255,240,246,8,15,250,3,6,252,241,251,11,9,12,10,249,243,251,255,255,254,12,16,249,241,242,5,16,4,255,2,1,246,252,1,249,0,9,10,4,251,253,247,243,9,17,1,255,6,4,247,255,3,255,16,5,0,255,240,6,12,248,241,4,21,8,255,245,243,254,1,1,253,3,13,6,252,247,233,7,8,246,1,13,9,2,255,234,243,15,21,9,3,4,239,231,254,24,17,4,254,9,2,233,244,5,12,3,9,11,251,244,250,249,4,10,254,252,8,11,246,241,247,7,20,8,249,238,244,18,31,250,232,254,12,5,253,249,0,8,1,4,1,241,250,13,0,245,7,26,5,241,245,242,249,12,26,15,253,251,3,248,230,251,18,17,6,1,254,244,254,250,234,16,35,255,241,250,18,4,231,252,27,12,251,1,2,243,243,7,10,7,7,247,227,247,15,20,15,240,228,251,15,12,13,243,243,12,245,241,6,12,9,0,10,1,234,251,14,2,1,24,14,251,231,237,16,25,10,255,250,245,254,1,255,4,12,7,243,244,255,4,254,247,0,16,4,234,226,8,35,18,244,231,249,7,243,251,34,41,248,212,245,16,14,250,3,31,16,222,227,12,39,17,241,247,0,250,255,7,12,5,0,245,244,249,0,249,3,36,18,228,231,248,246,10,19,0,8,254,230,250,5,12,14,254,0,255,0,3,250,0,254,0,5,7,10,10,246,247,1,9,9,246,244,1,14,19,14,233,236,8,4,254,252,252,12,19,4,251,248,245,253,249,234,4,34,27,5,222,237,251,240,17,21,9,253,233,238,4,22,8,0,0,14,3,226,238,25,27,5,8,14,246,216,247,28,22,250,0,3,245,244,239,2,21,9,253,5,249,239,248,254,13,6,3,250,2,17,7,241,238,0,0,23,17,245,233,11,39,247,216,242,12,23,251,252,11,28,13,230,219,229,16,42,18,5,248,243,244,248,242,245,30,36,6,238,227,241,12,19,249,253,22,15,248,247,239,246,15,19,2,254,13,1,232,238,7,15,13,8,4,254,234,233,0,14,22,8,235,247,5,5,8,248,246,8,12,255,249,253,240,2,24,12,3,8,5,227,220,0,25,25,250,7,22,245,245,240,228,6,16,9,34,18,233,242,239,242,16,24,247,255,8,1,247,238,255,254,6,27,4,247,239,3,11,247,3,8,3,0,247,247,9,22,251,248,1,2,8,249,226,7,41,255,2,18,249,236,230,250,15,16,7,11,5,244,243,239,233,6,49,15,234,252,4,237,230,9,32,25,8,239,242,241,243,0,21,23,18,0,240,245,4,242,241,16,23,14,255,10,240,221,3,24,19,253,233,252,18,7,247,237,13,20,242,231,1,12,253,13,17,255,239,0,18,246,225,3,24,7,12,10,228,236,250,24,22,242,251,254,246,25,12,232,8,10,251,250,251,8,13,240,252,17,249,0,27,16,230,201,250,44,22,228,0,38,4,222,240,14,9,255,255,34,12,209,215,30,35,237,3,27,7,248,241,229,244,17,19,1,252,11,1,221,241,24,21,247,246,15,253,232,7,31,243,220,9,57,32,226,204,254,15,241,31,40,245,241,248,5,11,233,228,27,52,254,229,2,14,233,225,251,29,47,254,223,240,250,250,249,14,16,1,0,248,249,13,247,249,243,245,28,64,6,193,252,36,246,232,5,25,5,254,11,14,245,241,239,254,19,7,18,1,224,7,7,249,255,248,0,16,7,247,250,246,242,6,17,15,255,233,232,24,32,242,3,8,246,248,7,4,252,15,0,232,252,10,2,244,24,52,0,217,231,3,7,240,254,18,35,9,246,233,223,0,2,5,25,16,20,249,211,230,13,15,11,12,13,254,243,245,234,5,29,3,243,12,34,240,196,216,15,67,51,8,226,236,247,221,236,24,47,37,251,235,238,2,246,217,248,41,43,2,250,23,250,203,208,255,50,47,20,2,225,226,225,249,25,18,15,15,2,235,233,12,21,1,237,9,14,3,241,233,252,236,27,95,248,183,241,10,238,241,35,36,2,249,245,225,255,28,255,240,7,33,0,226,241,19,17,8,248,254,247,242,20,11,245,249,11,33,248,219,228,7,39,23,245,2,19,255,224,207,8,42,24,255,17,20,213,192,221,10,47,61,49,1,211,184,217,12,35,30,27,30,253,203,198,251,42,30,4,254,251,250,238,244,11,21,24,13,237,241,254,4,5,252,21,11,0,252,241,9,5,243,5,20,228,235,31,21,236,3,13,211,225,9,36,35,9,243,207,223,14,29,11,3,9,243,247,244,246,16,5,2,13,254,9,11,235,236,25,23,255,242,253,25,20,231,244,26,252,239,254,24,48,247,197,223,27,17,253,9,248,243,28,13,222,213,249,22,18,24,4,229,209,0,48,249,226,9,39,17,248,249,246,3,11,252,234,11,36,5,242,229,14,13,13,6,245,247,8,4,5,8,251,0,246,245,12,9,0,10,251,240,2,0,224,221,21,42,21,12,242,191,221,21,26,16,3,29,10,223,234,1,14,12,5,20,0,230,5,5,243,6,32,7,240,249,244,253,21,31,4,230,249,6,226,0,18,16,247,224,1,14,241,239,5,28,21,1,240,222,251,39,26,243,226,1,9,21,241,238,17,16,13,8,6,236,213,17,39,255,253,7,3,0,238,232,246,20,40,18,2,227,198,241,26,10,13,13,6,252,253,243,247,244,14,15,247,21,36,219,204,1,41,38,231,252,41,246,179,215,46,71,24,1,230,232,249,242,246,19,40,23,244,234,253,251,230,233,15,53,31,238,233,222,236,14,33,33,0,228,228,2,14,22,0,238,3,21,12,228,235,3,0,3,33,36,227,210,244,5,16,40,21,235,246,3,239,233,255,14,0,14,26,18,239,236,240,235,2,37,12,249,250,25,253,211,239,12,55,51,249,202,175,5,70,26,239,17,33,223,190,248,46,31,244,246,245,247,19,4,0,0,241,4,4,253,10,248,221,15,53,12,239,238,227,244,252,18,32,28,14,237,205,225,21,37,5,245,33,16,205,230,24,25,16,252,4,21,238,194,18,77,20,238,222,212,215,239,26,74,58,9,238,175,172,232,49,91,42,222,214,3,10,212,195,33,125,42,184,213,255,248,19,4,254,22,47,38,190,183,34,35,236,242,46,36,241,227,237,3,6,10,4,250,5,10,242,238,255,8,3,246,244,1,255,12,39,252,201,243,21,22,7,241,244,0,19,9,234,237,27,38,6,221,222,13,7,22,14,235,16,46,12,228,209,237,4,20,50,246,234,28,0,198,225,33,47,12,238,248,252,242,241,242,253,44,21,245,7,245,224,203,0,71,52,3,237,228,3,3,245,239,20,35,3,3,219,215,38,48,255,0,248,229,234,249,4,46,48,2,215,211,221,246,30,37,32,20,253,206,208,3,28,10,249,15,38,234,236,0,245,254,249,13,22,32,25,224,214,8,13,237,250,25,32,5,236,237,247,15,9,14,0,221,251,16,1,0,10,11,248,238,240,22,5,234,251,14,41,0,217,6,8,244,233,7,20,13,7,231,0,26,9,239,254,8,252,249,248,6,25,36,253,215,228,0,16,3,25,7,9,5,223,232,247,2,13,28,11,237,246,22,0,210,225,20,51,36,0,231,253,248,216,222,16,46,51,23,241,224,241,240,234,5,26,40,10,252,244,233,240,233,246,26,61,50,237,190,208,2,27,28,39,3,230,255,242,252,40,24,223,191,3,50,27,222,248,47,15,227,211,236,255,0,38,45,9,2,209,192,250,30,34,43,50,234,184,192,253,56,22,16,42,27,233,182,208,20,28,9,15,59,12,203,194,226,4,49,61,7,234,242,245,220,231,15,25,66,28,214,242,254,211,225,49,55,27,250,243,225,191,0,42,15,57,46,207,182,230,250,14,47,42,4,229,228,229,230,10,26,27,15,255,249,241,211,238,46,50,4,7,4,220,220,3,46,18,255,26,244,195,3,31,10,36,16,197,193,20,58,28,233,240,248,11,251,191,7,77,31,206,235,13,0,243,240,21,31,3,241,250,227,237,28,36,20,238,216,240,36,11,255,37,249,221,218,2,40,39,16,248,223,234,11,19,255,3,251,246,12,1,226,25,21,220,12,26,1,244,244,250,11,14,0,250,249,1,13,227,242,17,8,5,243,0,11,255,0,2,228,255,49,4,224,255,254,0,14,7,18,0,239,238,253,3,19,19,16,13,235,215,244,28,16,242,13,29,255,213,227,0,27,24,17,3,249,236,242,13,235,253,50,12,206,243,2,5,36,37,0,225,215,0,8,242,15,34,29,247,230,0,240,231,3,6,17,45,250,222,230,7,33,254,238,3,10,9,225,241,33,29,251,219,223,34,56,242,229,12,7,252,248,255,18,22,255,248,228,245,23,23,13,0,232,235,3,13,255,254,9,248,248,232,254,28,255,252,241,254,16,250,245,247,21,17,253,9,242,234,255,14,13,25,31,239,226,246,4,5,7,29,16,253,0,235,227,251,31,15,0,7,5,239,231,229,2,29,20,253,225,248,23,239,239,11,18,18,245,226,2,3,16,20,3,249,250,239,249,13,30,17,245,252,0,250,7,2,244,250,11,10,17,14,0,240,228,248,251,4,32,28,236,219,12,21,232,233,4,25,25,253,232,244,251,255,7,6,0,9,11,247,235,8,29,11,255,251,241,252,243,6,25,6,252,0,12,254,231,250,250,5,29,24,249,235,245,227,254,36,24,4,253,2,241,221,233,24,41,2,253,17,254,232,242,254,6,11,10,5,251,6,10,239,229,248,23,19,250,240,3,14,251,3,249,240,8,11,7,9,1,228,247,9,5,10,15,15,0,240,225,251,5,13,29,31,18,235,202,228,4,21,30,24,17,243,225,239,242,236,5,31,16,24,1,222,229,241,7,36,25,238,233,2,11,0,249,249,11,14,0,253,4,5,252,246,252,16,19,1,249,241,4,1,250,12,0,255,11,11,248,241,251,250,8,21,0,249,3,254,237,243,15,13,0,249,251,10,0,250,4,250,0,14,4,247,253,2,255,6,21,2,236,254,11,255,238,244,2,11,12,19,23,241,215,224,6,36,22,0,254,8,7,248,232,247,10,13,10,8,17,9,228,226,253,8,18,14,249,243,11,2,237,0,5,250,0,3,255,255,3,251,243,255,5,4,7,6,248,254,9,245,247,18,15,2,0,249,4,10,254,6,14,250,247,5,12,0,0,3,252,0,249,239,255,7,6,7,8,250,239,241,249,6,11,3,8,1,237,249,1,9,6,0,1,6,0,249,249,1,19,18,255,248,251,246,0,14,15,3,5,5,246,239,248,2,7,5,10,15,253,241,247,247,253,3,4,10,13,251,238,245,251,5,12,254,4,12,253,250,255,254,253,0,7,7,4,254,250,1,10,3,252,0,9,3,252,252,255,5,2,4,13,5,247,241,244,0,11,12,0,0,0,152,9,27,0,229,254,18,15,23,19,255,251,251,2,4,248,244,7,12,0,11,18,11,247,229,228,236,245,5,20,17,12,8,243,231,231,219,223,230,239,2,20,24,16,12,8,245,211,201,215,222,241,2,11,27,44,35,11,239,211,203,213,234,12,51,49,28,22,15,240,234,244,242,234,232,251,17,26,8,13,14,234,233,237,229,252,5,7,11,254,0,250,235,248,1,232,216,249,21,21,6,248,253,0,10,14,3,244,240,249,242,255,7,14,7,7,16,17,9,224,211,244,13,4,18,57,20,253,0,248,219,235,255,0,7,14,9,255,248,11,28,17,16,15,241,221,213,225,254,8,16,19,27,19,254,241,232,240,248,245,21,31,10,2,0,255,236,219,233,10,36,7,254,3,16,18,250,223,234,14,19,249,242,3,20,7,233,218,231,237,253,20,17,22,29,239,215,229,236,249,253,1,250,14,38,10,253,7,6,248,227,224,237,252,16,33,16,8,30,23,5,246,232,242,245,238,236,9,34,29,0,243,246,6,255,236,238,2,4,252,250,10,22,8,7,13,249,241,1,247,245,1,252,15,28,19,24,34,16,226,218,239,236,243,24,41,18,13,18,240,211,0,21,234,240,29,19,252,12,8,242,227,240,16,23,16,10,248,244,242,224,235,10,21,7,22,55,42,241,220,223,212,225,236,249,46,61,32,6,0,216,205,229,23,56,32,253,4,237,220,243,240,234,7,35,39,12,255,248,243,252,243,236,246,4,253,246,0,248,250,255,1,16,27,248,211,223,254,13,13,18,14,6,251,248,252,7,245,231,246,16,11,251,2,22,24,11,246,224,241,0,253,254,1,252,244,6,254,233,252,1,231,248,249,13,45,38,13,5,233,198,218,235,239,21,67,39,14,24,19,241,211,206,226,246,15,36,48,31,21,255,241,243,248,227,230,2,6,251,14,27,7,225,219,226,221,238,31,33,17,15,16,1,212,203,215,206,233,28,47,49,46,35,244,228,228,225,221,213,244,18,30,41,19,8,255,254,245,244,250,242,224,241,2,16,31,44,17,238,226,223,249,17,252,235,0,5,16,35,15,7,225,222,248,0,243,229,3,23,32,33,9,226,218,239,247,243,12,9,12,30,36,28,245,226,242,231,227,246,0,11,34,27,15,8,9,237,201,200,249,5,5,33,2,8,61,15,219,217,252,248,228,217,237,15,249,5,34,29,44,20,243,243,179,133,207,22,38,70,100,72,16,251,197,172,210,225,236,37,90,41,252,254,238,234,222,241,5,3,9,9,18,24,235,172,196,238,29,72,49,0,214,206,233,234,218,250,32,64,11,238,13,7,217,203,219,234,6,28,61,56,19,12,245,195,183,209,243,16,34,40,25,10,0,238,218,1,9,229,240,37,34,27,0,0,0,242,227,229,246,1,29,33,24,247,219,231,254,250,0,2,254,13,19,235,236,0,0,231,236,34,23,23,40,6,237,239,239,222,225,26,60,11,246,251,249,250,249,251,23,34,22,6,9,242,200,200,226,0,17,14,45,61,75,19,189,182,194,202,231,26,26,60,77,8,239,241,222,204,212,2,53,37,6,5,1,242,240,246,224,240,22,39,27,0,35,23,247,60,18,198,215,238,237,255,49,57,10,1,5,239,219,216,208,19,93,53,30,14,226,162,155,209,0,24,77,79,44,22,255,217,170,173,228,29,63,60,68,67,25,222,190,191,197,229,21,54,40,26,58,43,229,199,248,13,206,219,9,41,82,59,20,14,13,249,188,203,251,245,246,23,30,241,0,19,16,13,6,0,228,203,220,250,2,26,19,16,17,1,239,232,240,199,198,34,83,51,31,11,200,215,4,225,206,231,4,30,39,57,55,248,241,13,236,207,211,229,5,35,64,61,50,26,219,180,190,248,253,232,29,37,12,2,249,182,197,242,241,26,58,54,30,242,207,199,204,225,18,33,31,46,38,21,241,189,170,190,213,13,66,59,25,241,220,223,214,206,215,248,6,18,4,255,10,238,232,7,236,194,225,13,21,41,22,250,216,220,247,217,192,19,88,241,251,24,233,214,232,246,229,238,48,64,253,42,57,238,194,221,215,220,220,240,68,54,1,244,208,230,245,211,233,16,7,236,233,4,14,1,230,205,212,30,47,220,215,38,11,218,216,254,20,238,3,38,48,81,53,231,171,178,250,23,35,69,50,254,243,5,214,206,253,30,36,33,12,227,228,230,232,212,204,248,247,12,16,16,26,29,220,192,3,255,242,6,2,213,242,45,32,255,253,0,2,251,249,17,33,36,17,7,252,6,73,57,22,233,225,227,231,251,235,230,1,37,64,55,250,173,177,193,237,9,56,45,247,249,13,217,206,233,225,237,42,79,50,27,226,197,240,4,23,14,244,20,33,246,231,223,204,1,105,100,38,246,220,227,211,212,225,243,43,71,65,80,42,221,190,222,217,196,223,48,80,54,45,23,15,217,147,153,253,92,81,254,16,57,5,203,183,202,225,227,7,10,49,118,75,236,220,229,220,220,224,7,90,79,26,35,247,193,199,221,11,32,61,56,6,250,243,245,234,213,216,230,25,52,66,61,10,227,192,185,194,225,241,240,57,96,54,26,254,219,182,199,222,253,16,255,2,37,32,253,249,249,221,226,253,14,29,50,48,12,194,205,27,23,238,0,38,231,199,30,5,223,16,49,60,37,224,190,208,206,227,249,5,57,57,16,0,227,223,234,216,241,16,27,31,52,17,223,236,240,201,248,29,247,27,79,11,241,16,25,9,25,16,183,196,9,47,25,252,5,29,13,247,243,243,219,207,221,9,38,46,18,248,0,253,249,220,241,29,15,17,9,22,27,12,11,233,239,19,20,254,240,9,49,16,22,26,247,232,2,254,216,16,28,239,249,18,23,231,197,230,233,1,34,10,12,25,7,242,212,221,251,20,32,32,0,31,11,247,237,225,251,33,15,240,252,22,33,22,239,255,22,34,243,18,24,237,18,219,231,6,224,3,16,24,26,246,242,207,210,0,56,55,241,228,217,209,245,235,240,250,33,21,23,57,24,227,187,200,24,37,3,21,16,254,30,15,216,211,217,218,252,50,103,34,189,225,246,235,20,8,214,222,17,51,18,5,230,188,205,27,68,26,224,230,3,24,31,13,243,224,211,226,3,42,70,55,242,190,185,226,229,225,35,55,43,16,233,15,24,231,156,200,8,245,0,19,23,13,10,253,11,4,219,233,238,220,228,8,55,45,41,50,22,246,193,162,194,250,0,7,44,76,34,238,40,39,222,175,160,227,0,11,50,58,35,9,231,191,188,209,234,14,35,58,48,43,2,211,191,198,206,12,25,27,25,240,244,0,249,253,250,245,37,34,5,252,251,245,236,225,240,17,57,66,251,235,14,233,193,221,38,51,36,33,56,44,223,185,181,188,211,235,23,44,87,94,8,217,6,238,183,214,3,10,12,44,36,16,15,253,189,192,9,252,225,248,48,52,239,252,7,5,28,30,213,208,7,220,206,0,52,42,14,249,194,219,29,68,24,241,247,237,0,7,4,195,212,3,5,59,89,26,229,217,214,212,237,28,89,50,255,245,215,212,233,234,251,6,13,15,239,204,190,216,253,26,57,75,47,214,212,227,217,245,10,43,18,240,252,8,29,26,25,247,253,11,204,190,5,14,46,59,77,72,251,164,165,178,220,24,19,23,97,90,25,245,206,160,156,189,227,41,69,92,114,28,191,133,163,211,6,33,29,59,49,15,1,242,187,201,242,253,11,31,38,248,20,46,255,233,217,220,231,8,9,242,249,28,54,251,217,253,3,0,13,239,255,38,15,3,248,0,27,24,0,4,11,234,212,226,237,10,43,22,1,254,16,6,213,181,200,208,3,72,107,54,248,194,188,203,218,235,3,51,79,55,37,240,237,203,175,233,26,51,49,5,234,235,238,226,6,13,213,242,38,17,9,0,242,30,75,21,218,197,196,235,243,44,90,39,50,32,250,5,246,189,187,240,234,231,37,70,56,234,201,219,226,11,40,24,254,251,221,216,245,13,20,18,25,234,228,18,248,253,12,21,17,2,246,214,223,37,32,255,18,35,2,220,0,9,229,32,28,237,225,236,250,11,16,241,235,7,3,251,247,6,237,196,215,250,7,4,248,52,90,13,187,221,45,246,194,228,19,30,32,48,17,21,12,218,224,6,5,234,242,248,14,43,34,17,246,194,236,248,251,7,51,14,214,20,31,249,235,212,223,253,21,46,19,227,226,248,15,39,21,1,5,227,218,255,245,7,10,16,1,2,19,250,242,233,3,255,248,18,252,225,227,0,10,20,45,255,224,243,248,241,224,253,42,27,17,28,24,227,203,223,0,254,9,16,30,45,8,16,0,212,228,254,14,16,28,9,252,227,224,231,249,25,55,18,241,227,226,252,249,249,0,4,28,27,255,253,4,249,184,168,238,37,39,50,75,33,204,197,180,202,0,247,249,56,78,25,233,215,200,187,236,5,247,28,96,107,29,234,216,150,131,193,21,57,71,70,41,8,225,186,176,239,34,45,26,10,14,243,246,213,192,21,97,87,34,250,204,204,207,224,6,26,21,30,41,6,220,208,222,242,225,2,59,41,21,5,204,196,198,212,246,5,14,20,15,41,25,243,209,204,236,227,6,72,75,60,254,200,231,18,251,207,252,55,48,7,225,1,28,236,227,12,44,38,254,239,12,11,238,215,237,12,33,0,250,21,7,13,247,199,208,228,0,26,12,39,53,9,226,221,232,245,242,243,28,42,29,22,236,224,6,1,222,227,6,10,250,248,3,17,5,234,234,249,247,237,252,6,254,248,225,5,47,25,6,254,221,226,19,9,238,255,32,33,37,30,238,236,0,228,220,18,5,246,14,40,22,244,239,239,221,213,218,225,6,45,8,1,46,30,220,200,225,241,252,252,6,28,24,17,7,9,12,252,222,230,18,1,249,26,0,14,32,26,33,12,229,216,210,228,34,36,31,37,6,244,253,241,240,236,229,8,29,35,39,19,226,233,17,13,252,241,247,253,250,8,15,2,245,2,9,244,228,234,247,4,10,25,45,22,4,250,227,201,197,234,0,13,50,41,12,0,231,207,238,252,249,4,32,45,23,19,44,1,220,251,6,4,16,8,7,35,39,25,11,255,234,237,5,8,0,242,224,245,11,18,22,254,232,227,222,229,255,0,1,254,236,5,44,32,249,219,217,237,247,254,11,25,37,34,0,231,252,12,234,221,1,26,47,29,253,251,250,254,244,252,15,28,9,8,3,240,246,251,246,248,255,0,255,251,246,243,240,236,241,244,1,13,6,248,239,225,224,243,250,244,1,14,34,41,17,248,247,3,0,242,246,7,19,19,10,9,21,25,9,251,254,5,0,3,9,251,242,254,255,1,248,242,9,15,0,250,242,227,219,237,252,7,0,20,29,248,215,226,235,238,246,3,18,14,4,248,248,250,246,248,248,0,19,18,2,0,12,11,253,236,250,17,9,251,244,5,20,20,5,5,7,1,251,248,63,10,39,0,13,248,245,253,241,11,3,240,16,34,30,0,248,250,240,9,254,13,21,14,253,236,234,1,24,0,229,248,4,9,250,0,255,246,251,231,247,0,3,243,245,244,248,2,248,244,3,12,240,4,0,244,4,34,255,235,252,12,1,9,11,29,26,228,229,241,254,17,23,0,250,3,249,217,237,3,15,10,0,255,10,225,210,25,39,6,2,255,250,8,4,2,7,39,44,3,223,214,2,48,25,223,234,14,19,246,206,228,45,36,16,245,236,229,228,248,43,57,13,239,243,243,245,7,29,29,24,245,228,238,247,14,49,43,227,216,0,34,0,237,12,51,24,212,212,14,10,226,252,28,253,235,235,245,254,250,228,0,19,241,232,254,1,231,240,249,5,21,18,253,252,236,237,6,23,17,24,3,236,7,9,2,17,14,254,248,2,6,15,7,249,9,26,251,234,10,41,16,230,227,12,31,252,247,30,48,6,219,241,6,251,1,15,20,11,230,223,252,10,0,241,249,255,243,236,246,7,1,16,11,241,222,238,14,22,11,5,9,13,2,241,222,6,41,26,249,253,9,247,230,245,12,28,254,238,248,0,227,246,15,8,249,222,226,244,28,16,254,6,0,250,233,2,8,251,0,17,4,226,230,7,15,0,229,254,45,15,233,1,42,21,233,247,30,48,19,233,220,24,54,19,6,250,223,226,251,7,30,22,16,251,227,203,236,20,27,14,244,242,239,250,12,12,0,4,2,255,16,12,247,243,255,13,24,242,220,5,28,248,210,242,24,14,8,244,242,17,7,231,244,16,27,22,9,238,6,249,226,254,43,30,242,219,233,1,6,7,4,5,245,245,254,13,249,248,35,247,240,248,0,11,25,36,3,5,6,213,237,33,26,2,241,242,224,246,4,35,4,241,28,246,206,241,20,31,18,17,244,218,217,248,57,42,226,217,2,19,230,229,24,60,15,225,222,252,245,231,18,42,18,253,3,250,229,236,10,27,11,243,248,1,239,223,7,37,10,228,235,12,3,237,0,27,24,239,243,249,251,5,9,48,50,245,220,0,47,25,12,22,26,12,237,231,249,28,1,244,253,11,247,234,243,246,12,25,3,242,233,2,16,22,254,231,12,27,0,253,30,15,243,237,235,21,44,226,196,241,252,230,239,239,247,7,243,246,8,2,243,243,254,22,10,240,246,27,0,236,7,23,11,7,235,229,34,53,239,209,255,33,29,8,226,250,36,16,205,216,1,21,2,2,18,13,242,219,227,14,25,10,251,254,14,250,253,255,15,30,248,237,6,5,233,210,0,59,33,234,245,3,5,2,15,41,54,254,222,227,236,40,57,26,250,245,249,251,16,17,254,238,247,10,16,246,241,36,16,180,189,31,27,2,13,245,198,196,15,50,43,248,222,250,239,231,8,45,32,9,4,221,206,221,8,48,30,0,234,249,225,230,27,67,32,233,232,239,242,17,6,3,37,18,233,204,235,21,6,248,2,30,15,216,205,254,42,25,255,236,246,253,250,252,26,13,7,18,16,253,227,235,25,25,243,229,31,52,252,229,250,246,243,28,50,254,224,238,25,38,254,236,255,26,20,216,218,24,38,249,252,248,226,245,242,18,58,36,239,233,241,235,249,252,6,22,35,254,217,197,12,57,55,24,238,235,231,9,25,11,244,214,251,18,236,178,226,20,255,237,0,8,243,211,219,14,54,43,1,7,246,227,233,34,87,62,242,204,225,14,27,18,39,45,20,210,195,215,9,53,22,248,18,14,206,189,0,52,56,11,233,244,246,229,231,238,28,8,204,10,54,248,230,240,231,8,30,17,237,210,247,60,70,0,212,21,38,242,226,26,70,35,244,231,234,251,5,27,34,26,0,222,225,226,5,76,59,217,168,233,23,1,248,29,53,11,240,213,231,11,21,6,5,4,240,231,224,228,5,2,238,232,229,244,247,241,242,3,13,9,238,224,255,3,8,24,250,247,20,20,247,244,255,29,7,214,247,52,32,218,246,15,0,245,246,11,14,0,252,18,241,215,17,58,35,0,6,7,245,228,222,6,65,60,231,200,235,25,252,242,18,31,6,250,0,9,5,216,1,62,22,1,250,9,27,28,33,32,0,229,243,248,16,14,15,6,7,249,219,227,249,11,20,4,229,241,7,0,242,254,225,185,253,58,16,216,223,232,244,246,235,13,40,8,220,201,211,8,55,18,239,241,250,254,2,18,30,22,44,22,217,193,7,70,52,28,248,218,234,238,19,37,13,254,16,1,215,222,14,28,28,14,248,240,11,0,250,18,18,255,222,241,20,29,252,233,254,7,235,231,21,38,238,226,238,236,3,25,23,11,231,234,2,1,26,43,22,223,220,241,238,254,19,33,1,234,186,207,34,47,16,245,3,10,232,204,245,60,48,235,248,16,2,0,16,11,25,37,12,254,250,251,48,53,251,236,9,25,14,247,2,250,223,172,236,25,38,47,0,174,182,237,5,5,26,47,0,204,190,199,254,72,54,251,221,236,252,18,12,12,25,23,8,234,231,19,19,239,233,25,30,0,0,21,9,241,212,222,22,45,22,217,228,18,13,237,220,233,18,33,246,201,221,1,14,2,8,11,228,228,8,20,14,18,24,252,15,21,21,29,15,0,48,74,247,223,35,57,6,18,45,27,241,237,216,247,7,249,239,252,4,5,241,245,233,226,249,255,252,227,248,25,0,186,237,43,241,226,13,31,238,178,185,17,51,3,254,25,0,205,212,255,22,39,25,254,244,246,226,254,48,40,19,235,202,225,19,19,23,46,32,236,169,168,234,51,74,66,25,212,146,199,26,83,74,35,241,196,176,224,32,92,79,12,242,207,205,0,66,111,79,242,192,199,4,63,82,48,242,227,195,210,12,71,49,251,221,185,208,242,3,34,48,6,205,202,235,15,38,22,4,228,236,250,226,229,19,34,1,251,15,11,250,212,211,10,48,26,253,0,245,235,1,11,25,11,13,20,249,216,221,13,58,30,239,201,230,244,0,0,6,251,13,11,228,225,243,29,47,13,252,251,228,223,24,57,15,0,0,2,247,236,6,22,7,0,251,243,236,238,250,9,37,35,234,207,248,17,5,255,11,1,223,205,235,48,38,8,238,221,236,5,49,45,1,233,253,8,4,17,41,35,8,246,240,5,35,33,4,23,10,232,230,243,11,28,36,4,250,247,199,220,4,28,45,15,187,187,11,17,226,240,20,11,235,202,219,238,249,241,41,54,219,207,235,248,15,18,5,34,35,247,206,247,48,54,4,219,250,18,1,1,12,253,255,18,228,226,39,31,222,244,238,236,5,9,21,42,6,206,208,234,8,73,103,1,185,201,217,2,51,64,78,42,192,152,226,31,47,65,78,42,179,132,228,36,40,60,44,22,249,218,185,236,44,32,39,53,16,218,183,226,29,48,38,235,230,10,0,226,247,27,25,253,217,239,3,250,234,239,20,233,226,2,24,38,6,192,236,31,236,230,9,26,50,10,193,186,238,26,29,19,21,1,226,205,223,250,38,45,27,251,214,190,235,33,50,37,253,216,212,238,5,23,8,21,18,242,217,207,7,39,38,6,227,246,33,37,252,9,35,1,211,243,23,42,20,246,8,19,222,199,10,70,34,230,205,224,25,14,226,12,51,245,198,1,37,254,233,254,19,43,10,208,218,9,31,40,8,223,233,8,240,226,2,57,34,241,3,255,244,9,38,42,18,251,0,255,235,8,30,4,6,16,254,240,249,11,41,247,227,252,2,2,5,254,14,26,10,228,227,243,11,19,253,243,0,4,238,240,3,18,255,229,246,246,14,245,214,240,12,8,246,246,253,8,253,250,253,9,28,0,248,255,254,248,16,10,228,247,255,248,5,255,248,0,249,247,241,238,239,242,2,28,24,7,237,211,226,19,36,33,29,4,251,221,221,17,42,30,0,252,239,220,5,17,20,13,13,241,226,241,0,7,21,32,35,16,253,254,23,2,253,29,39,16,242,242,24,14,0,12,19,0,221,225,10,35,15,249,8,7,221,222,3,17,26,8,242,255,251,237,219,1,35,40,243,189,202,235,12,16,25,33,255,195,183,222,252,51,38,5,0,233,180,184,11,90,100,41,219,208,1,239,230,34,68,46,255,227,201,220,5,19,47,38,251,201,181,243,23,25,21,21,6,235,202,196,10,58,33,253,240,236,246,18,2,244,9,36,16,238,243,4,14,24,1,223,4,43,255,221,9,31,4,233,253,33,17,7,52,50,2,230,231,248,1,3,52,62,14,219,197,250,47,14,234,16,38,245,197,205,240,17,47,44,12,194,183,241,25,44,15,254,255,227,199,229,23,40,46,6,207,186,213,249,16,41,42,43,235,160,194,27,89,51,243,238,237,213,213,14,72,62,11,240,225,221,3,46,44,28,0,228,189,213,20,26,32,31,1,229,199,215,11,36,9,248,10,2,238,0,14,20,6,12,8,244,242,9,32,2,235,2,12,1,254,12,18,0,240,252,241,243,39,33,239,213,246,14,0,247,252,38,22,199,190,241,31,28,244,237,2,246,214,254,55,27,239,239,13,14,248,8,0,0,11,243,242,245,5,33,249,225,250,20,248,222,22,56,6,201,218,14,30,7,251,23,34,246,204,233,24,54,34,6,2,246,234,228,245,39,38,6,242,233,240,3,15,23,31,9,233,243,254,0,2,23,40,26,252,232,244,245,0,37,28,250,236,223,227,251,5,21,49,26,235,202,215,11,39,19,253,235,249,249,224,227,16,43,14,245,232,239,255,254,11,19,6,238,241,5,12,0,242,245,251,2,15,252,235,254,14,253,244,27,27,237,235,1,28,12,243,249,6,5,0,0,6,1,11,1,244,1,248,238,2,21,14,5,0,0,11,252,216,220,26,61,16,244,0,4,232,225,245,32,63,29,240,228,214,228,18,38,32,5,224,223,242,252,247,28,56,11,219,206,213,251,24,36,36,32,1,219,214,232,10,51,50,21,229,212,239,250,5,38,52,25,232,194,223,7,20,28,39,18,237,214,236,249,0,30,35,14,230,219,241,251,255,12,21,243,215,234,0,7,254,1,254,248,248,252,255,251,245,235,255,46,53,3,233,243,249,241,240,0,40,65,29,214,220,255,1,255,39,52,10,231,212,230,15,43,28,252,245,243,250,8,251,0,26,37,10,233,219,236,14,39,36,5,235,243,252,239,0,34,20,247,240,8,14,237,241,13,19,1,254,5,253,237,233,0,23,18,252,237,245,4,8,250,255,6,1,232,222,3,40,39,0,229,242,247,237,248,15,32,24,235,221,238,254,2,244,0,30,14,232,217,232,0,11,18,8,9,1,222,235,11,7,16,23,249,242,250,246,8,40,9,224,245,19,22,5,0,1,255,253,0,14,12,254,254,17,12,229,232,0,11,10,7,251,242,246,231,230,8,26,23,5,226,222,252,23,23,7,254,250,4,21,21,23,31,26,0,239,249,13,20,16,18,30,17,250,0,17,11,247,245,236,0,25,13,235,237,253,249,245,240,238,246,247,250,253,0,0,244,244,239,242,5,13,254,240,236,253,5,252,251,9,6,235,217,241,11,12,10,15,18,254,234,247,20,10,245,2,22,17,250,242,4,1,245,231,249,26,26,4,6,9,243,228,245,16,33,19,240,235,4,18,247,235,8,33,11,242,237,251,12,11,8,15,10,1,254,253,245,255,20,31,18,252,244,253,7,23,29,23,0,239,235,247,17,26,17,3,249,242,229,235,0,17,13,255,245,246,245,239,242,11,27,12,245,231,241,246,248,10,34,26,246,233,241,254,255,247,22,50,21,234,231,4,17,12,7,0,248,246,254,10,0,237,252,17,9,247,225,237,13,11,0,1,247,227,222,235,4,25,15,0,238,222,215,234,3,26,22,0,35,9,17,0,236,5,4,238,4,25,5,241,231,8,35,1,223,21,16,5,243,242,12,32,16,240,211,207,18,20,252,2,247,8,0,17,23,40,29,243,207,190,244,45,62,5,244,212,237,251,232,235,35,66,40,247,203,203,3,55,45,26,229,225,254,240,212,243,45,54,35,235,168,203,40,70,46,233,199,3,20,6,0,13,7,16,214,200,8,46,51,12,187,184,21,72,22,235,231,17,47,16,226,200,1,46,5,214,221,16,43,10,230,249,27,3,225,5,35,16,8,209,200,9,5,64,80,217,195,243,254,53,18,218,226,5,255,252,240,243,38,54,240,226,28,3,246,7,9,6,242,194,236,39,51,22,226,238,9,15,234,245,24,29,2,218,194,245,36,49,24,241,225,8,31,10,6,244,233,234,247,245,25,35,16,255,234,213,10,17,0,255,12,7,3,250,0,254,12,22,235,229,222,251,47,56,5,247,204,226,1,5,20,17,52,47,208,169,228,13,37,33,43,246,206,208,255,46,13,2,13,5,2,233,230,5,37,20,243,219,219,8,45,17,8,254,236,215,245,29,56,42,242,215,211,243,252,29,61,48,224,161,201,11,59,58,32,232,221,220,244,19,46,12,0,241,223,13,36,253,240,13,245,241,248,242,249,23,1,8,20,1,255,255,0,250,254,253,28,11,244,249,227,230,35,34,1,230,216,1,49,32,241,219,213,10,58,28,9,255,230,244,2,237,251,18,0,14,16,250,237,225,230,16,32,7,3,12,2,241,231,23,57,12,230,236,247,249,4,239,229,14,8,0,9,3,21,15,222,243,25,19,17,248,250,255,224,232,22,37,10,245,240,230,4,20,231,239,40,41,252,231,254,13,4,243,254,26,2,235,217,235,5,18,26,9,2,15,15,238,235,8,33,254,237,250,12,255,217,232,14,12,10,253,252,15,24,252,238,246,9,9,14,44,11,223,202,229,15,35,39,245,236,231,234,254,43,52,1,175,170,20,70,63,13,201,11,35,248,242,14,5,35,8,187,181,240,24,40,18,229,23,18,238,242,42,48,31,232,132,203,68,61,5,236,230,14,31,242,5,12,6,210,206,13,70,39,254,241,235,249,241,232,245,23,51,19,199,200,239,46,34,20,26,20,246,226,241,0,240,20,45,248,230,241,237,16,24,230,222,2,250,17,26,8,8,252,199,231,41,64,60,5,234,249,9,218,239,28,246,202,206,228,20,33,3,10,32,7,242,4,242,39,74,16,6,220,191,227,16,39,31,235,179,189,244,15,64,101,32,195,180,210,26,78,51,41,253,196,212,228,0,53,41,251,232,218,217,254,23,9,26,29,246,226,248,17,15,2,245,2,19,241,238,13,9,25,252,241,249,251,12,252,1,251,232,248,9,253,11,8,4,6,240,5,22,21,8,3,244,252,253,248,248,213,228,17,39,18,25,0,242,241,224,235,29,28,30,6,239,3,220,222,9,37,62,26,215,211,247,17,13,227,246,0,252,251,245,2,54,67,242,197,233,17,10,43,1,199,233,26,19,0,241,7,23,2,234,225,0,0,251,255,18,43,1,219,238,28,51,34,221,210,238,248,5,19,6,254,1,254,242,9,7,6,241,238,252,251,11,33,51,22,255,225,201,229,13,27,24,8,238,236,243,240,253,0,18,20,255,1,19,35,13,230,233,249,255,27,9,251,248,238,220,220,13,63,45,250,230,187,217,45,54,39,254,231,247,17,6,7,34,45,247,185,174,211,252,21,40,50,24,236,217,227,18,52,57,26,237,221,233,248,9,235,252,28,4,248,221,236,1,11,21,18,9,1,247,11,34,241,217,235,26,41,3,236,5,4,248,212,194,13,90,59,10,202,206,1,249,0,18,37,28,249,210,212,5,33,24,37,26,227,220,233,243,14,26,14,251,254,240,214,239,30,41,41,253,222,221,227,15,56,49,10,245,222,241,245,6,255,218,243,26,19,0,247,238,32,34,243,234,236,22,39,25,4,238,230,243,232,242,9,9,34,3,236,238,255,254,20,14,10,14,16,6,204,221,11,24,31,255,241,249,248,255,246,0,24,24,3,228,236,0,250,4,15,14,16,247,232,250,28,21,247,239,2,15,8,236,215,13,31,254,221,240,40,42,244,216,255,40,16,233,222,10,55,34,220,209,232,253,247,251,53,45,1,229,219,246,32,37,243,240,3,19,255,225,219,13,22,14,5,254,3,10,238,210,243,30,40,27,16,242,246,227,229,8,18,21,14,237,238,255,241,0,253,9,36,24,230,224,0,31,35,3,238,249,3,232,222,239,11,34,15,5,249,21,10,241,239,4,30,9,225,232,13,12,246,215,242,28,29,34,15,255,246,240,230,235,30,35,254,233,235,250,8,7,249,33,39,0,228,231,240,0,245,7,22,23,15,248,218,238,12,42,28,243,239,231,221,13,32,12,0,8,249,240,231,1,37,23,14,255,224,234,237,0,24,35,251,227,251,17,2,250,253,14,27,253,226,239,13,9,255,254,24,25,242,230,231,238,10,15,22,254,253,242,10,21,237,0,19,10,11,5,227,227,13,27,255,228,245,13,18,13,234,230,13,22,254,241,4,28,20,251,235,241,5,2,248,252,252,19,12,252,251,19,3,236,5,1,252,254,243,242,13,13,249,249,2,17,28,7,246,253,249,235,6,254,5,6,254,252,6,17,242,248,244,254,39,30,224,215,255,24,27,3,228,255,18,253,229,241,17,14,31,248,234,254,15,252,11,4,0,10,9,235,213,248,34,31,242,235,242,23,7,238,252,17,3,255,2,14,37,245,220,229,9,34,15,248,244,241,238,9,36,22,241,228,230,230,18,33,23,3,234,234,22,15,237,250,16,39,21,250,226,229,251,1,15,7,6,0,238,249,254,227,241,9,33,54,30,216,198,232,11,58,59,26,255,207,199,235,0,26,44,14,234,221,242,247,245,5,26,40,9,235,224,1,23,19,5,1,0,1,252,251,255,5,25,255,217,224,249,23,16,2,241,233,255,25,10,9,11,243,3,27,14,254,252,7,225,204,8,46,20,248,214,234,15,3,253,20,21,11,246,227,0,25,28,11,227,206,247,37,42,4,247,20,240,196,207,24,51,42,8,225,239,244,250,10,24,27,7,229,209,235,15,56,40,8,229,226,232,244,6,36,12,242,227,242,11,44,29,1,0,237,230,242,6,10,28,10,207,218,11,21,31,28,235,243,254,251,251,6,32,12,252,226,0,35,249,223,230,253,29,25,243,219,2,22,7,10,245,14,27,246,235,1,0,9,12,242,239,5,4,254,247,0,10,4,250,250,30,5,220,241,9,26,26,248,242,16,20,231,212,243,15,56,18,232,247,250,238,250,246,30,32,255,239,232,232,16,26,11,26,11,254,236,226,241,5,1,250,22,18,244,225,0,24,23,19,247,242,4,0,244,253,2,22,254,223,236,14,14,250,0,24,27,250,214,222,34,58,26,221,203,253,25,19,0,240,0,11,223,243,249,11,34,252,248,14,4,25,5,223,3,14,20,0,207,227,9,21,28,9,240,243,250,0,248,2,33,22,231,210,242,37,40,15,0,238,242,6,1,228,251,19,25,255,244,242,245,239,254,15,13,18,6,253,16,7,251,251,246,254,1,3,251,231,241,1,11,36,31,243,230,13,245,247,10,254,5,26,247,215,242,11,31,28,0,246,0,239,234,242,7,16,25,0,241,253,12,0,255,250,8,29,253,221,239,16,29,15,228,216,253,25,28,255,247,255,0,22,249,237,253,8,254,252,14,19,250,251,241,252,0,13,21,5,245,233,5,9,13,12,239,214,233,18,33,29,246,232,255,31,2,255,3,250,0,252,249,8,11,240,247,0,247,7,4,246,9,28,18,246,218,238,25,29,6,249,244,238,246,255,10,38,24,241,234,240,249,16,11,20,0,240,223,232,254,33,38,14,248,220,242,12,16,17,255,243,253,0,15,12,247,1,236,218,255,25,33,27,250,234,239,0,4,242,254,39,44,0,219,206,246,20,7,243,250,30,35,237,224,255,22,30,8,5,254,5,247,229,215,252,20,28,0,234,250,3,245,245,13,28,52,18,225,224,3,23,1,254,13,2,229,206,231,13,39,19,10,0,231,236,3,17,31,28,9,247,225,217,237,5,36,37,16,237,222,227,3,15,31,10,243,246,236,18,31,247,237,6,23,2,237,240,239,5,26,2,255,2,1,13,242,242,253,0,28,29,249,226,243,2,9,255,11,18,8,242,226,232,11,22,20,13,253,244,233,228,248,15,47,42,243,228,244,252,20,21,0,10,231,207,254,26,14,254,244,248,24,13,245,224,252,29,24,0,235,2,19,26,249,231,247,17,255,236,253,7,0,248,0,2,251,0,255,14,29,12,239,238,253,8,27,9,245,237,240,1,8,3,13,5,243,236,1,2,252,4,25,6,4,255,249,255,239,10,27,254,244,246,241,0,19,4,3,9,247,1,16,240,244,248,250,6,4,13,13,249,239,255,14,23,9,251,237,246,2,28,11,245,222,243,6,18,4,1,237,1,11,7,251,246,8,29,8,2,253,236,229,5,25,13,16,245,225,232,1,15,20,7,246,4,245,0,13,1,249,8,14,18,246,211,246,25,31,0,253,249,231,0,2,7,31,16,249,228,211,241,31,35,16,2,241,241,237,255,27,21,6,243,242,252,3,14,8,1,2,248,234,2,3,13,7,230,227,14,11,13,19,2,254,2,236,244,21,19,0,255,0,250,241,233,252,18,19,19,7,241,245,239,233,9,29,28,8,253,241,238,231,242,11,43,27,5,237,223,243,15,14,11,16,0,241,247,0,245,245,245,20,38,16,243,226,236,10,21,1,247,255,0,22,3,237,0,0,10,15,1,5,248,240,1,4,249,248,255,255,2,3,2,17,8,251,235,253,24,25,7,236,239,5,254,248,6,0,8,0,246,250,4,9,17,11,245,244,246,247,14,11,242,238,6,29,30,4,232,245,253,248,0,251,0,24,23,243,220,235,7,37,32,254,238,242,255,1,7,6,8,253,235,238,7,6,7,12,2,13,248,223,11,40,14,243,240,229,228,5,23,40,44,246,206,221,240,12,28,15,8,3,0,238,230,0,37,30,251,239,254,2,246,243,246,6,22,12,1,253,246,240,251,7,15,10,4,9,248,246,242,249,255,6,15,13,7,247,244,253,0,2,16,23,251,231,244,6,9,13,252,239,251,252,252,10,13,8,254,252,243,5,13,9,2,3,247,245,6,9,0,0,95,9,10,0,223,218,13,232,202,44,18,246,1,244,0,22,52,32,248,255,36,26,5,21,28,252,15,227,225,204,189,5,237,242,244,207,2,240,254,62,56,11,255,52,34,28,42,53,11,173,209,255,13,243,224,183,191,210,26,43,246,24,39,22,254,249,20,84,64,3,236,201,192,225,0,12,29,26,238,204,243,250,246,62,46,45,246,226,187,209,13,63,75,9,216,233,204,203,8,41,40,7,17,217,206,25,50,43,55,40,1,207,187,212,21,10,6,226,188,207,239,0,10,60,74,57,5,229,9,65,53,46,238,206,218,245,203,148,179,4,40,1,2,212,223,56,105,101,51,2,46,16,20,23,201,177,209,225,228,207,161,205,11,240,26,59,72,73,51,47,32,17,9,49,251,229,204,201,207,167,188,16,244,248,27,252,241,20,64,91,52,23,28,6,224,239,250,242,231,238,216,183,243,45,46,239,11,0,5,11,7,29,225,248,38,0,198,220,23,25,7,23,17,225,0,44,32,8,6,21,238,204,226,223,242,236,6,247,204,211,38,96,39,249,10,20,51,50,12,0,234,227,0,251,202,184,223,5,247,218,251,15,7,60,34,10,47,30,7,243,13,42,242,241,233,209,200,240,27,8,229,253,19,217,253,58,245,235,47,49,25,229,253,14,19,10,1,230,215,231,10,238,204,249,12,254,14,52,16,230,33,45,236,29,33,31,223,164,239,30,234,218,253,242,238,239,22,19,40,18,46,46,16,248,244,250,234,247,11,239,206,177,227,32,38,11,240,14,33,37,0,240,250,35,74,30,214,169,215,39,24,23,210,196,0,236,4,33,2,35,48,28,251,184,226,59,41,243,253,223,231,239,232,250,4,76,79,2,218,204,231,17,46,32,237,230,236,250,224,214,2,19,49,34,251,182,220,49,65,53,18,13,242,229,19,2,216,221,255,26,253,207,159,202,10,60,52,19,12,22,47,24,235,3,55,65,54,188,160,178,211,250,40,19,221,231,211,205,32,70,61,50,34,16,247,240,253,31,33,4,0,171,200,235,251,219,209,60,14,233,242,17,38,45,59,63,250,207,21,28,196,225,22,7,178,186,59,238,199,244,24,37,17,26,58,250,7,66,21,242,5,19,240,199,178,235,38,35,201,141,166,40,104,47,234,5,74,53,22,1,5,64,70,3,185,146,191,0,4,192,211,223,19,6,228,2,33,66,84,84,36,229,0,21,42,19,220,244,180,179,238,227,211,158,226,61,32,31,25,18,47,72,85,27,21,18,0,210,187,230,218,189,231,232,2,238,218,6,48,65,27,19,39,37,251,12,59,26,231,199,218,214,175,220,50,12,224,211,254,14,28,62,81,45,19,21,1,201,215,54,16,241,202,154,168,3,22,7,253,15,28,21,32,37,51,26,57,36,0,234,225,218,177,220,5,250,237,188,191,253,36,48,57,39,11,23,29,20,19,37,36,0,213,245,225,244,201,195,230,237,12,9,232,187,19,45,64,66,22,19,11,32,49,27,1,224,217,211,210,221,212,218,248,31,222,255,34,26,21,32,59,17,10,45,5,246,227,231,13,237,200,213,240,210,241,47,34,25,251,1,38,26,14,20,45,6,216,231,246,220,203,254,33,244,238,252,0,229,2,60,27,38,9,5,252,255,2,27,237,220,16,44,202,178,244,254,28,33,244,177,35,47,6,255,247,55,39,251,227,253,25,22,243,233,223,20,246,219,229,3,35,254,17,217,0,5,30,64,245,194,255,38,24,241,3,10,236,224,33,17,231,213,9,52,255,0,5,211,230,35,61,21,174,231,17,254,0,24,12,228,27,2,236,229,9,61,35,12,241,207,250,253,47,22,202,226,226,4,251,251,5,18,16,11,23,0,229,236,40,60,17,216,229,224,13,31,7,229,226,254,31,4,218,234,22,46,21,17,217,207,8,38,20,234,238,19,2,232,5,19,12,249,3,9,21,234,235,18,4,10,13,245,212,227,28,11,237,0,1,252,235,22,17,15,22,19,27,250,5,1,223,242,10,20,221,219,230,225,17,24,10,231,24,64,16,242,224,16,47,36,1,224,209,247,4,251,234,243,251,253,15,6,254,236,7,55,44,254,201,246,53,20,251,231,236,23,19,5,180,217,23,22,247,237,240,22,17,9,2,248,20,30,62,14,238,2,245,245,222,240,254,223,0,233,202,12,12,29,251,34,54,250,1,10,28,7,19,27,237,208,233,8,246,232,2,245,224,9,5,243,210,33,55,249,229,254,68,4,251,35,32,27,6,10,227,164,5,59,232,168,248,247,223,247,13,10,228,50,53,16,11,18,66,0,6,23,0,252,222,236,218,188,235,243,7,227,229,18,11,19,32,50,39,17,41,14,225,242,25,28,191,214,7,249,206,229,255,4,238,59,7,209,35,57,11,211,34,54,20,224,224,242,0,0,32,210,213,10,31,9,211,4,254,43,37,235,230,251,7,46,1,220,228,48,47,213,233,233,10,48,6,232,206,249,36,13,5,235,5,13,2,2,210,0,56,51,231,208,32,5,241,247,5,233,255,34,241,205,241,32,44,41,234,200,11,29,20,18,217,237,19,7,252,236,250,3,16,32,236,223,254,255,42,12,215,237,29,38,250,244,244,246,31,17,221,234,33,28,224,210,2,32,51,2,215,228,5,40,8,232,227,13,48,254,239,230,225,58,45,1,183,220,23,42,34,170,226,70,56,237,203,255,33,50,19,221,216,230,20,14,228,3,0,255,233,245,9,5,35,254,13,5,35,18,2,237,254,15,17,232,195,235,15,253,232,237,229,28,43,25,225,235,38,50,42,232,0,4,28,13,238,208,242,10,13,214,213,238,22,246,215,255,15,52,37,246,38,32,46,3,212,6,6,30,232,196,215,241,5,196,236,35,19,34,245,246,39,30,14,7,45,34,249,228,179,216,20,48,247,203,208,249,12,7,22,35,34,26,13,14,244,249,12,0,3,242,201,208,214,237,9,48,30,10,227,231,27,59,67,36,27,247,222,233,237,234,245,237,223,252,227,214,4,220,251,55,81,57,3,239,244,33,54,36,22,3,241,199,188,195,228,8,2,240,0,222,246,235,27,80,36,32,60,36,237,206,247,48,39,11,230,173,172,246,22,250,244,243,3,255,3,239,24,45,48,24,21,12,241,252,4,253,3,247,5,227,190,227,230,38,46,238,250,15,8,21,228,249,71,8,246,247,245,226,235,35,39,211,5,21,22,239,215,24,34,17,12,217,211,0,6,231,217,255,17,29,255,255,250,40,45,20,33,22,3,4,218,235,221,236,2,225,225,216,233,2,7,23,26,48,21,13,28,14,35,34,30,4,202,236,211,224,251,215,225,224,233,1,253,15,16,36,56,53,52,16,15,3,0,1,245,238,216,223,220,225,219,224,252,5,24,11,5,22,47,40,4,24,32,51,11,230,246,248,220,219,225,222,217,254,242,209,252,30,75,32,11,2,25,63,27,253,246,251,4,249,238,213,219,230,222,0,240,229,18,16,13,0,35,45,32,14,23,33,12,233,244,10,236,212,247,211,189,235,22,252,249,10,13,32,29,14,23,27,57,51,254,210,213,5,247,239,235,229,213,251,3,200,234,37,48,52,11,252,2,8,36,35,15,248,247,20,235,212,236,243,1,1,232,237,236,239,0,17,12,252,21,51,12,1,21,19,12,23,30,7,210,228,234,230,220,226,2,0,221,238,1,2,28,40,41,38,23,8,254,11,31,22,239,235,228,232,237,214,223,238,252,9,1,241,0,17,31,34,35,23,7,35,25,254,224,253,241,249,251,236,221,226,246,247,246,247,12,22,24,21,255,255,18,34,41,9,241,230,11,20,214,212,10,6,235,236,236,0,5,15,9,241,4,48,48,247,215,11,23,20,13,249,232,226,7,250,244,233,236,11,11,245,252,11,24,5,18,32,4,254,25,6,242,229,236,248,240,243,6,249,226,250,13,20,17,20,31,8,255,32,253,217,7,15,249,252,247,227,208,235,20,13,255,242,17,37,20,13,5,246,19,39,18,219,216,249,245,255,236,230,0,28,12,213,253,38,31,36,227,241,21,40,31,233,204,231,33,38,228,201,231,18,22,252,234,229,21,37,36,5,236,7,32,1,241,4,3,253,10,17,215,225,7,248,237,246,3,243,0,23,11,250,11,36,22,9,13,15,255,247,253,246,225,2,11,218,215,245,0,15,7,8,255,5,32,2,0,15,37,37,249,223,227,15,25,243,214,243,13,235,225,250,15,22,8,6,0,246,18,41,0,0,7,3,245,245,246,253,5,236,231,5,11,21,0,255,4,252,16,1,7,3,252,8,231,243,250,16,2,246,9,250,241,1,8,242,1,36,18,2,255,0,6,15,31,12,246,223,235,240,207,230,1,11,255,238,231,254,33,62,34,28,42,27,23,16,226,221,253,0,233,206,195,198,223,250,3,13,17,22,42,40,37,41,37,34,26,10,0,236,216,204,214,223,216,221,248,5,241,249,3,23,60,55,33,21,7,23,25,254,238,235,245,236,234,222,216,249,9,252,0,19,48,13,233,254,18,42,7,239,239,228,248,0,254,250,0,17,11,0,10,31,20,2,253,11,250,239,230,211,234,6,249,239,236,0,20,11,19,27,40,39,16,16,28,248,243,250,237,229,211,228,232,221,236,241,253,252,45,66,9,13,47,38,36,5,0,246,239,15,240,196,173,206,16,12,241,239,247,19,32,29,32,31,54,46,16,242,235,243,243,235,216,205,231,246,246,240,253,16,46,39,17,20,11,14,16,9,3,255,0,254,229,200,218,255,5,17,234,239,1,11,20,11,15,37,36,19,255,233,4,10,7,0,221,226,236,228,231,240,13,6,2,16,14,17,26,19,21,29,19,2,248,225,237,254,0,241,214,238,247,251,4,1,250,23,30,10,8,12,6,8,15,7,245,253,22,252,231,229,247,11,8,247,235,250,255,247,243,19,5,7,33,16,245,238,24,34,250,254,14,255,236,249,8,226,232,12,20,248,232,245,249,0,11,17,3,251,36,26,239,245,22,21,248,254,13,242,225,247,245,232,13,22,249,245,7,3,243,20,33,251,253,7,255,244,251,248,252,24,19,248,239,245,12,255,242,13,30,6,245,233,240,0,27,14,245,245,244,1,21,239,228,5,36,28,245,233,245,21,29,14,245,252,7,7,253,229,228,253,20,253,229,232,254,12,14,11,5,7,31,41,2,247,0,26,2,235,244,229,248,236,209,237,1,0,6,19,21,21,13,15,27,18,25,18,245,221,246,20,232,195,229,7,17,244,229,239,9,39,38,7,238,23,58,22,218,240,21,23,240,221,233,235,247,254,8,246,241,29,11,238,1,18,28,22,255,1,253,4,11,242,229,254,15,249,233,0,15,9,76,0,239,0,5,252,8,8,8,14,14,250,7,251,253,8,245,249,0,6,18,26,22,21,15,12,0,245,240,240,247,5,17,20,27,18,18,5,248,255,248,237,246,0,1,17,25,16,4,6,2,5,5,5,245,0,9,2,255,4,248,254,14,12,14,8,0,2,5,4,253,233,249,4,11,13,8,11,17,17,252,238,233,248,247,0,2,3,22,41,18,253,253,230,236,238,228,236,14,27,32,26,9,11,6,247,233,221,226,246,255,5,17,34,28,21,5,227,226,239,245,236,238,246,7,27,26,10,7,12,12,5,254,236,239,242,244,6,7,7,16,29,19,7,10,247,235,237,232,235,245,1,6,255,15,7,15,10,253,249,248,235,238,238,237,251,255,253,12,21,13,17,251,242,243,248,248,245,247,1,6,3,11,2,3,251,249,253,243,3,11,240,244,11,251,10,22,10,18,16,10,1,238,239,241,240,251,3,8,9,1,2,8,10,0,249,241,242,251,239,236,251,9,9,20,11,15,18,1,238,224,225,241,246,250,6,24,30,35,17,10,255,254,246,238,248,254,14,14,15,8,18,11,19,2,254,3,0,0,0,251,14,15,255,9,247,4,5,247,244,241,254,25,23,16,255,255,20,12,12,252,236,0,30,9,0,255,2,15,34,16,255,255,18,28,13,251,245,14,17,18,20,0,0,18,5,254,250,250,245,252,3,242,0,13,254,10,8,252,18,30,7,0,8,10,1,8,246,224,3,29,19,20,20,2,4,252,230,227,250,4,11,10,8,11,15,10,5,245,234,9,11,3,12,26,13,25,11,255,9,14,255,243,255,12,11,29,26,29,29,5,0,249,252,239,238,242,14,32,38,28,31,18,9,237,227,225,245,252,7,29,3,32,31,8,16,247,246,5,250,253,20,17,20,19,254,22,26,18,0,251,246,247,11,5,250,5,11,5,31,13,13,15,8,1,250,0,5,14,14,24,0,13,27,8,0,250,248,3,6,3,19,8,11,21,0,245,237,233,225,236,4,10,28,36,42,41,35,8,239,220,229,222,218,241,247,27,52,35,25,27,249,246,231,211,217,247,253,15,14,4,9,21,16,5,240,222,238,242,251,239,242,9,14,19,9,243,247,0,2,243,226,234,7,12,7,246,0,9,20,16,250,237,253,7,238,0,248,2,26,18,254,11,25,13,6,3,0,10,26,0,243,2,15,12,254,239,250,8,5,231,231,236,13,26,17,10,6,6,253,223,212,219,223,249,23,30,35,34,26,251,229,219,206,225,253,2,0,22,28,35,24,31,11,243,11,249,243,240,249,251,22,21,9,28,19,0,3,245,225,0,251,253,13,7,9,27,11,1,245,240,11,250,5,253,240,6,20,9,19,11,12,5,255,6,250,245,235,250,17,41,35,40,9,254,253,246,227,231,244,245,30,27,12,26,29,249,244,233,219,251,4,232,253,20,15,45,20,243,0,8,0,253,229,247,19,3,35,27,12,17,254,241,234,229,226,241,243,20,22,17,22,9,250,251,239,238,235,233,224,252,21,6,21,14,255,16,20,234,247,244,0,10,21,26,23,40,37,2,236,221,213,236,11,0,8,22,67,56,31,5,237,246,247,214,212,250,5,22,22,22,12,34,34,0,239,249,226,246,255,232,245,1,24,37,37,31,14,8,0,241,222,214,219,234,234,12,37,44,58,41,12,254,246,243,208,201,224,3,40,54,35,20,32,43,12,233,228,228,220,240,236,235,25,51,49,32,13,0,2,247,217,191,220,232,6,41,252,7,45,12,253,238,200,253,10,252,248,232,249,26,7,18,250,6,29,0,15,5,249,244,236,235,10,20,11,247,238,4,24,15,11,0,239,233,239,228,219,230,7,0,21,21,16,24,9,221,215,217,219,5,252,16,13,19,34,40,27,252,234,237,224,224,242,223,3,30,19,34,35,18,3,220,211,191,185,221,225,252,36,50,65,54,32,4,224,211,208,192,205,239,2,6,44,55,28,40,10,240,218,216,206,206,233,249,13,35,41,45,28,14,9,241,216,204,214,240,249,9,5,3,33,18,245,228,213,239,252,254,13,21,9,31,0,228,225,230,242,9,8,0,10,12,30,13,4,238,223,243,11,236,215,205,223,4,31,23,253,9,10,0,239,209,198,233,241,246,15,0,8,30,25,35,14,234,231,220,219,220,225,244,27,42,18,36,28,255,226,212,214,242,244,0,255,4,35,40,18,246,236,241,250,236,226,216,240,4,34,20,6,7,0,5,3,251,229,3,4,13,3,11,23,22,255,5,251,1,30,15,255,230,2,6,18,5,4,9,19,23,0,239,225,234,236,21,14,12,12,15,254,250,231,206,226,231,251,19,35,9,3,4,16,2,249,252,236,230,247,233,240,1,253,17,31,43,39,13,0,247,242,255,225,232,15,28,50,34,21,36,5,238,231,203,216,227,219,245,6,20,14,30,39,248,228,234,201,204,210,198,240,12,44,58,36,37,45,19,5,246,216,212,234,250,10,47,55,59,53,10,14,26,250,220,216,228,7,32,8,0,7,242,248,240,206,219,214,209,234,250,6,15,240,254,245,236,246,245,240,11,250,2,12,252,16,13,245,248,254,14,23,14,8,255,3,29,33,252,20,11,248,252,243,236,12,6,4,1,254,237,231,23,25,30,16,22,253,254,203,189,218,211,255,15,14,53,69,27,0,223,221,229,223,229,14,27,39,69,53,23,250,222,223,240,218,220,255,27,75,73,30,27,17,242,230,223,202,223,253,248,14,47,30,8,7,11,251,238,225,211,225,11,16,16,19,254,25,29,0,240,222,245,30,28,25,15,20,29,20,7,0,249,244,15,250,251,4,0,254,21,18,3,5,253,2,0,19,11,242,20,21,4,22,238,222,239,240,1,11,34,36,27,13,36,247,230,212,186,233,3,253,17,25,20,71,48,15,244,205,200,221,222,250,38,37,57,51,36,19,252,217,197,188,229,6,250,5,11,26,39,31,3,0,248,255,249,246,1,2,32,12,9,25,58,40,29,25,2,255,233,238,217,228,239,245,17,15,238,10,3,234,249,226,203,227,18,26,252,7,6,21,33,0,236,249,235,249,249,8,37,40,47,27,17,255,5,10,13,238,254,31,5,22,35,255,31,25,225,237,234,249,255,249,227,0,9,3,244,223,245,228,244,32,20,241,224,243,4,254,11,11,238,19,34,252,3,255,227,11,7,14,18,252,2,243,250,241,238,0,12,253,3,0,7,7,14,248,237,247,231,252,7,245,244,6,247,6,20,252,254,16,250,230,236,221,215,233,4,11,19,49,57,27,252,224,218,233,240,254,252,17,50,46,48,5,237,254,240,243,26,241,216,248,232,9,23,243,254,22,243,5,242,234,246,230,241,239,1,251,20,15,19,21,31,5,0,0,247,230,255,14,6,8,245,253,231,227,212,222,248,0,237,233,220,237,250,218,245,250,5,41,41,235,4,10,255,0,0,252,238,244,12,23,50,45,17,25,35,21,240,222,219,251,254,251,229,241,14,31,47,247,248,6,252,253,231,211,218,252,6,5,34,38,20,45,23,243,230,220,183,207,233,227,26,36,67,74,67,253,252,241,210,194,199,200,236,52,15,32,42,56,59,35,220,179,213,185,195,218,236,44,114,107,84,73,10,224,170,149,151,207,250,39,89,82,98,76,42,244,202,200,150,152,202,229,244,60,79,98,97,68,3,202,179,139,132,190,252,50,92,73,89,50,255,233,187,163,200,211,213,17,14,22,64,27,19,39,0,236,2,234,236,17,10,238,15,42,27,17,7,254,23,2,252,224,227,237,227,5,16,252,28,24,246,236,200,237,249,240,237,241,239,8,7,235,0,8,30,46,36,7,9,24,27,255,253,11,253,23,253,242,248,246,249,241,241,250,5,17,8,10,8,2,10,248,244,253,249,6,255,5,1,223,231,11,255,12,16,228,228,238,209,174,200,233,20,44,46,20,7,0,0,252,225,241,14,21,11,250,18,27,246,230,212,217,217,196,227,238,238,24,30,19,0,231,221,217,207,198,192,214,253,21,34,26,36,8,229,4,234,188,213,195,191,240,29,13,68,58,49,63,11,255,247,203,219,225,232,13,18,28,61,41,28,13,207,177,192,194,215,210,234,4,37,38,29,1,24,15,3,248,217,251,21,7,246,31,44,65,62,32,247,0,255,199,202,222,255,8,27,1,240,0,12,252,230,215,243,10,4,7,239,246,252,239,5,29,6,9,22,12,23,245,245,0,21,15,14,35,29,20,23,248,231,241,254,244,247,248,5,247,228,5,8,5,9,241,200,226,238,219,235,252,24,42,58,7,247,240,234,217,236,253,37,37,254,26,246,249,0,225,230,250,20,236,244,254,248,4,246,4,31,37,36,22,12,12,23,230,176,209,242,2,43,54,89,95,81,34,221,225,217,168,178,225,14,82,100,70,38,43,34,238,209,217,201,209,246,9,9,54,62,14,17,9,250,0,236,219,237,254,31,12,14,30,24,253,254,248,238,228,244,253,7,41,15,26,7,0,1,1,235,5,8,8,34,37,19,19,24,10,25,9,14,38,18,19,15,38,23,6,238,237,246,246,15,254,28,46,34,3,223,224,255,213,222,229,232,35,34,43,33,29,254,250,237,225,231,17,39,27,60,43,30,34,23,14,238,246,251,255,14,25,45,31,18,43,28,244,230,191,168,211,215,244,26,39,48,60,37,245,242,196,189,220,216,239,18,39,60,74,48,24,230,214,228,217,234,231,238,15,53,49,56,23,1,5,230,229,207,205,223,204,218,25,42,49,23,239,241,240,240,229,200,213,248,15,29,24,32,24,14,31,31,11,8,11,15,250,253,17,253,252,249,229,245,15,250,236,232,227,230,227,226,209,224,251,246,230,242,15,21,19,244,242,3,1,206,182,186,243,37,30,6,0,56,62,16,238,216,216,215,199,222,220,7,39,32,46,38,11,242,214,188,176,182,201,230,247,16,37,27,5,253,238,225,233,219,217,237,234,242,220,246,19,26,34,41,28,23,9,231,199,199,212,226,225,234,28,35,52,38,26,2,247,237,220,209,194,214,238,6,21,22,46,64,43,17,227,215,221,215,230,234,247,26,41,48,41,255,11,16,248,236,212,209,234,239,245,18,28,51,40,1,245,235,243,244,230,242,12,26,37,0,254,252,1,10,20,9,243,255,243,228,212,209,237,0,250,11,1,243,0,79,5,27,0,0,1,0,1,4,3,253,248,251,8,10,0,2,10,10,8,5,2,0,0,2,255,248,254,5,5,251,242,247,255,254,2,7,1,248,246,242,244,245,249,4,9,6,1,254,6,10,9,11,10,9,11,5,1,0,247,247,249,248,254,2,7,11,8,2,0,254,1,5,5,2,5,2,252,251,255,0,2,4,3,1,247,240,251,249,243,246,249,254,0,3,10,9,2,5,7,255,253,3,14,22,13,2,252,255,252,251,255,2,5,3,246,241,249,255,1,0,251,254,0,250,251,0,2,5,3,252,0,7,13,11,0,247,252,253,249,2,12,14,8,255,2,3,0,254,252,0,9,10,2,1,2,2,4,2,0,1,254,251,252,249,249,249,246,239,244,1,14,16,4,253,248,245,252,0,0,0,248,244,254,4,3,3,6,12,11,2,1,6,16,18,7,9,15,13,10,12,0,254,2,247,239,236,240,0,2,248,245,247,251,0,246,245,3,2,1,253,243,3,15,15,12,5,252,2,8,0,245,245,3,3,254,0,6,8,11,7,7,6,251,254,4,0,248,253,4,1,254,1,4,8,254,244,249,253,248,248,245,254,2,4,8,0,255,10,17,9,4,7,6,0,241,234,244,1,12,14,4,6,12,12,5,250,249,2,7,5,255,251,252,1,251,246,3,1,8,14,246,240,237,235,240,241,246,4,14,15,18,16,6,0,247,250,16,10,250,255,251,251,5,8,5,251,251,8,10,5,0,254,2,255,252,2,8,8,10,6,253,251,5,13,6,253,251,250,0,4,247,239,254,249,229,235,253,6,9,3,254,4,12,5,249,250,5,14,12,0,238,249,16,17,0,247,2,18,8,252,242,245,6,10,248,250,12,18,23,17,0,1,0,251,14,8,255,1,241,230,228,221,235,252,246,249,1,0,0,254,251,254,1,19,29,14,8,16,16,18,10,2,22,25,2,246,244,250,255,250,239,231,238,5,19,255,248,8,1,2,5,250,254,0,244,235,242,244,252,10,252,247,9,5,255,1,253,5,7,15,23,7,4,15,15,9,15,26,21,5,251,255,0,239,224,239,251,5,6,248,241,232,233,248,2,244,241,251,252,6,9,5,22,15,255,2,253,8,15,3,9,1,255,3,3,12,8,12,15,0,241,242,251,8,3,255,4,3,252,252,1,5,4,245,247,1,239,237,247,249,10,19,8,6,2,11,14,246,236,231,239,249,250,10,16,2,252,249,250,254,9,23,14,17,27,23,13,249,249,3,253,4,9,0,250,229,232,0,2,254,11,14,6,0,248,249,255,252,244,233,232,3,2,253,10,252,245,12,10,11,31,9,252,7,247,252,10,4,8,6,8,13,240,219,229,240,252,14,4,247,9,13,9,16,1,4,16,254,2,253,255,19,4,2,4,242,6,18,10,1,242,234,229,229,242,253,1,255,0,5,7,5,4,7,18,21,17,12,253,1,4,255,254,243,254,15,249,249,0,240,245,244,232,255,1,5,25,253,235,246,245,1,6,252,12,14,18,36,24,251,236,248,6,19,11,251,254,0,250,255,11,0,236,241,1,248,243,4,0,242,250,13,26,20,12,18,21,8,248,234,232,241,250,5,9,244,248,20,28,20,1,248,1,255,246,225,241,1,249,250,236,231,11,27,14,14,14,17,17,242,230,252,9,6,250,232,250,14,7,13,5,242,232,230,237,7,21,17,4,236,234,255,255,11,44,28,5,19,18,14,14,21,27,15,253,255,250,240,247,228,226,2,231,213,0,15,9,248,236,253,234,228,20,41,28,21,3,7,22,2,8,22,2,251,229,207,227,248,252,23,17,249,8,9,11,253,231,247,237,228,6,2,1,22,15,8,250,239,251,6,1,4,3,253,247,247,245,10,14,13,42,27,254,5,236,245,30,18,9,240,236,18,13,4,13,255,253,9,3,251,251,253,10,22,3,224,244,251,241,245,234,235,0,244,5,12,5,35,18,242,255,248,251,253,222,221,227,244,20,18,6,22,36,29,12,6,19,0,239,212,225,14,18,11,4,243,226,249,22,238,201,238,8,23,249,226,12,24,58,71,11,6,27,14,8,243,235,19,28,242,213,230,244,254,242,226,239,250,1,7,249,4,62,65,25,249,255,39,56,13,225,225,220,247,10,235,241,2,14,24,239,215,232,234,243,1,247,244,253,3,1,240,1,15,17,252,243,3,245,222,238,236,214,238,246,248,25,33,27,27,0,233,26,44,22,249,222,254,22,252,2,9,5,10,37,45,20,5,13,17,15,0,18,30,237,242,32,44,45,18,244,41,52,28,37,251,223,224,203,229,224,195,251,16,242,228,208,186,166,144,159,190,211,193,185,190,200,230,249,16,19,3,49,107,108,124,122,106,99,81,73,67,64,55,29,12,230,218,239,231,240,240,237,14,4,231,246,233,233,254,245,239,235,227,235,233,237,4,243,237,221,190,219,242,240,235,252,23,20,251,3,27,21,7,255,222,224,250,2,2,247,250,6,25,35,29,36,7,235,228,246,6,8,13,13,24,27,48,34,254,10,22,34,41,19,10,21,8,249,248,252,248,251,249,250,9,255,224,223,227,238,14,18,241,229,235,244,238,213,231,255,245,237,241,237,232,241,234,220,231,254,21,12,249,1,13,22,12,5,22,26,21,12,6,24,20,0,4,10,29,54,34,12,14,17,21,20,242,248,2,23,28,250,235,252,23,25,3,252,14,9,234,229,242,234,217,210,221,232,253,19,25,32,4,236,0,245,220,233,25,47,13,216,234,250,227,224,221,241,230,216,252,0,236,229,239,6,0,12,27,24,11,248,253,19,19,6,16,35,48,50,42,31,8,222,235,22,26,6,15,22,15,25,61,74,51,33,37,33,30,7,220,207,214,214,206,198,213,213,214,243,237,205,193,205,233,0,253,249,236,252,23,15,17,26,10,5,9,0,235,224,255,12,243,254,26,21,11,7,24,34,18,255,245,242,8,34,33,22,2,253,13,18,0,251,251,238,227,237,250,246,229,239,252,9,13,244,242,15,18,14,15,17,36,35,31,49,38,18,25,35,5,0,120,6,13,0,0,11,15,13,14,10,20,33,25,12,252,242,235,230,232,224,228,237,248,2,246,242,0,19,30,23,18,21,13,8,1,7,8,2,3,246,235,229,230,252,0,241,251,0,254,252,7,10,11,19,20,14,5,246,3,16,8,255,240,253,6,243,230,224,246,8,19,16,246,250,20,40,33,1,3,18,8,2,239,241,255,255,250,232,228,242,253,6,0,4,9,247,248,252,8,15,1,252,243,254,7,254,253,253,4,22,14,251,248,3,12,1,1,1,255,250,240,246,1,1,254,252,7,12,13,12,9,14,14,10,4,244,254,6,245,234,220,232,0,17,10,248,250,8,22,20,11,26,39,19,251,223,229,254,10,4,225,220,226,232,239,246,246,6,17,13,10,22,34,25,16,2,19,28,13,248,234,231,245,8,254,204,193,245,39,36,2,0,10,6,7,15,14,5,252,252,239,229,241,9,4,242,247,0,9,2,7,14,14,15,15,12,20,19,21,26,8,235,230,244,239,245,247,229,222,222,247,4,255,253,1,13,6,243,1,29,40,26,4,10,22,2,251,0,7,0,248,228,221,238,255,12,19,0,0,8,8,11,5,11,0,242,255,251,245,243,254,253,236,241,6,10,6,255,0,14,19,11,1,14,13,4,253,254,250,246,1,255,230,230,249,252,250,255,3,9,5,20,20,246,245,5,19,37,33,9,0,254,240,225,245,20,20,1,246,239,228,237,11,21,10,1,240,233,244,17,25,13,16,22,8,247,249,11,1,255,241,214,211,224,255,11,15,7,247,255,3,0,22,28,24,26,15,8,245,228,249,6,249,224,228,231,238,252,2,6,16,5,10,23,33,45,31,8,6,13,9,248,235,225,238,6,252,227,210,208,245,20,36,42,31,30,27,28,25,28,34,7,235,207,199,230,230,220,217,210,206,212,246,17,45,43,19,21,16,17,47,57,50,30,5,239,232,233,223,241,247,233,222,222,225,236,254,10,17,19,31,29,30,27,30,39,29,13,0,253,239,218,211,224,226,223,233,241,236,254,15,36,58,29,2,13,21,20,20,254,247,249,230,234,245,241,255,254,228,249,16,9,0,255,3,7,253,8,16,253,0,10,9,19,12,233,230,10,39,22,231,209,217,235,10,29,12,0,0,3,18,19,19,18,0,255,247,248,7,252,230,227,240,255,4,8,6,251,12,24,2,239,253,15,11,249,242,248,253,13,14,227,204,249,16,4,6,10,16,7,16,40,41,25,16,14,0,254,10,0,233,240,229,225,236,238,254,252,237,233,238,249,16,24,245,244,4,6,18,17,14,33,44,27,254,239,245,2,242,232,249,240,220,230,248,16,30,14,239,232,8,32,8,13,47,40,7,242,230,220,237,8,12,240,218,242,255,0,29,45,42,51,53,27,237,211,226,6,7,228,208,204,221,229,235,7,27,18,255,241,244,247,252,18,23,7,4,9,5,247,28,60,31,13,20,16,255,224,226,250,10,14,242,211,214,240,0,250,247,2,29,49,30,5,0,21,29,7,249,239,225,215,211,223,0,11,5,253,0,29,47,32,21,22,13,0,254,9,13,3,237,210,222,252,240,224,218,218,226,218,216,244,0,21,57,63,66,65,48,52,69,45,29,22,239,202,204,207,205,192,201,227,222,217,238,248,24,33,0,245,22,83,79,32,247,242,17,50,47,30,232,200,225,247,252,239,214,229,244,244,245,248,244,242,4,24,30,8,0,25,26,23,40,40,11,4,5,249,238,245,3,254,215,222,236,212,188,215,244,12,13,5,251,244,12,41,49,61,53,40,17,250,20,48,26,26,0,202,199,199,194,226,248,239,234,220,197,228,21,50,66,58,39,44,42,20,7,17,14,245,215,210,250,247,218,230,238,227,241,252,17,39,25,11,0,248,11,16,237,238,8,247,243,3,244,5,18,243,11,44,3,241,250,4,54,59,3,211,212,3,60,63,2,202,191,226,20,22,1,228,207,213,234,3,2,253,0,251,246,9,16,33,38,16,44,71,23,7,30,36,57,18,194,176,175,202,250,208,165,221,2,32,40,7,240,234,20,66,51,17,2,0,9,22,39,55,45,7,240,230,234,0,245,175,185,7,248,215,227,247,10,35,42,38,251,226,32,30,246,5,32,255,228,253,27,24,21,30,11,238,237,242,231,229,5,18,239,235,233,221,228,9,48,51,15,250,2,251,251,24,252,219,230,252,246,0,246,241,20,44,38,38,34,23,26,0,245,7,203,170,218,220,195,214,240,28,14,226,15,69,63,78,84,37,255,12,36,22,240,208,242,236,198,211,0,241,218,228,214,215,7,54,61,27,0,15,26,254,9,54,46,7,246,202,163,191,249,17,242,187,219,8,3,0,16,9,22,68,75,34,23,59,76,46,0,251,15,240,208,215,206,216,198,187,221,233,245,27,15,249,24,19,31,33,12,41,50,11,251,244,252,247,198,206,218,206,241,254,225,234,4,77,97,29,24,59,49,48,51,3,224,215,216,193,156,208,27,5,226,244,248,227,243,32,39,7,25,44,249,200,15,91,61,9,2,3,255,0,23,27,239,224,225,195,210,10,20,239,196,218,17,18,25,59,38,250,255,21,18,5,1,11,236,195,212,242,209,195,5,44,10,8,12,5,22,37,55,44,249,8,77,56,5,251,249,0,248,217,211,195,195,230,214,157,186,253,15,3,250,26,77,72,57,61,42,32,42,22,249,255,249,230,213,208,226,5,6,236,244,1,6,16,12,249,6,22,10,2,14,3,236,206,226,36,32,250,0,231,193,229,43,57,9,218,209,215,217,10,45,3,254,51,34,238,237,17,38,26,32,40,12,235,8,29,15,9,25,254,199,184,237,0,239,17,1,192,183,235,42,58,15,13,6,226,240,18,8,4,22,36,32,3,239,247,0,16,37,7,220,199,197,217,242,249,0,10,233,186,222,23,43,55,35,251,4,6,35,86,73,51,56,23,3,32,15,237,226,232,250,232,196,175,156,183,250,14,254,227,197,223,3,15,68,76,35,39,42,42,50,41,45,66,26,231,230,222,205,209,218,224,217,213,211,197,188,252,60,53,253,235,253,254,13,27,14,2,4,18,248,189,222,56,60,28,14,243,243,245,2,39,39,15,25,29,229,226,18,57,67,59,45,39,15,233,226,238,200,208,229,169,137,170,186,213,5,21,57,72,39,60,82,59,62,62,0,226,239,232,221,207,209,212,208,214,238,244,224,226,0,18,20,19,16,252,14,66,91,61,15,19,32,22,8,2,231,215,210,214,213,195,190,219,238,229,246,18,27,42,64,80,78,65,44,47,54,16,242,221,182,177,202,214,212,212,215,4,29,12,22,39,35,13,237,234,244,249,246,231,215,230,21,52,39,0,23,77,70,37,33,28,15,254,230,229,225,228,255,4,247,0,11,20,18,12,23,12,222,197,202,209,206,207,202,200,201,208,234,252,2,20,47,41,18,255,250,1,30,32,17,253,229,230,253,24,39,28,17,4,14,33,47,54,48,33,19,29,22,38,39,29,23,16,8,253,246,247,2,253,14,19,8,248,215,224,3,2,244,238,194,156,170,175,210,218,190,198,209,191,208,239,250,10,28,29,18,5,15,37,50,42,35,31,2,238,231,245,252,2,2,252,233,243,24,57,73,69,67,58,41,42,43,45,22,5,6,253,236,237,253,4,16,27,25,26,21,21,38,28,8,9,253,229,224,215,214,216,215,221,225,239,142,6,24,0,1,1,3,3,253,252,0,3,8,255,231,232,255,7,15,16,9,7,0,243,249,3,9,8,0,1,6,4,7,6,253,240,244,250,0,11,8,4,11,9,4,254,244,241,253,3,6,9,1,253,254,249,248,251,249,251,2,1,0,1,0,7,12,2,251,249,249,255,7,0,245,252,0,5,11,0,248,253,255,3,4,255,0,8,11,13,16,10,5,3,253,254,2,255,0,3,251,249,252,245,249,4,1,249,251,247,0,14,8,2,5,1,0,2,250,251,2,5,10,13,7,254,254,255,243,241,247,6,20,8,253,255,250,251,252,248,253,5,7,5,0,251,249,252,2,252,251,254,251,248,251,6,18,17,5,0,253,0,9,11,4,255,252,5,13,5,248,251,1,3,3,251,247,4,9,2,0,1,3,2,251,255,16,4,249,1,6,0,247,243,250,2,6,0,240,242,246,255,4,2,3,2,255,3,252,250,5,9,13,16,7,4,6,10,7,247,237,244,255,0,0,0,6,2,254,253,1,8,2,241,240,0,2,253,251,0,18,21,9,2,250,253,2,253,0,6,5,3,255,0,252,237,239,253,1,6,2,5,6,3,8,247,236,254,19,28,25,14,12,16,11,7,254,240,240,249,0,248,236,242,253,243,237,247,0,5,16,11,253,248,246,243,3,22,11,8,20,6,245,236,242,11,13,247,244,252,253,8,4,251,2,248,241,7,27,24,21,21,1,244,253,1,4,6,246,246,5,2,250,244,243,3,9,255,250,2,9,8,1,252,248,7,22,14,7,15,11,1,250,246,254,247,231,236,245,235,238,254,7,10,254,239,246,253,2,16,12,3,6,25,19,3,5,0,248,248,230,228,5,21,25,16,247,246,0,247,249,7,15,19,13,0,253,24,36,7,246,245,238,252,15,7,254,248,241,244,245,241,250,3,5,2,255,247,242,5,21,16,2,0,6,10,1,245,243,248,253,5,2,244,245,5,12,0,229,221,248,9,9,7,253,245,11,23,13,2,252,19,37,22,8,6,4,3,3,2,242,231,243,252,6,17,1,240,237,228,244,14,15,5,254,251,3,14,22,19,3,239,236,245,254,4,10,250,239,245,251,3,17,21,0,236,235,0,32,34,11,8,6,235,226,234,246,11,17,6,242,239,250,237,237,10,11,14,10,253,9,24,25,22,253,231,4,52,65,19,222,221,220,221,250,249,249,15,28,25,231,192,218,253,26,27,255,2,10,4,34,16,235,250,254,244,4,19,16,4,3,16,253,221,220,238,13,24,12,9,0,247,7,0,236,249,254,7,30,27,3,228,204,209,1,32,14,24,44,15,251,13,244,228,6,12,7,17,249,224,237,253,11,16,4,248,248,4,252,5,29,3,221,213,223,7,61,68,32,239,209,243,17,21,20,241,212,232,7,2,237,240,0,1,13,19,1,255,255,5,19,10,0,251,238,244,0,247,242,4,25,25,10,0,251,241,243,240,242,19,27,11,19,5,252,15,16,6,2,249,0,4,248,1,2,238,240,248,241,231,249,22,5,255,20,5,245,0,252,0,251,241,4,15,23,38,18,231,225,242,248,248,238,236,6,23,18,5,255,250,242,228,241,31,59,36,254,231,241,3,9,16,18,248,235,239,244,8,31,16,248,247,2,232,212,243,20,47,49,7,234,230,246,6,5,12,27,35,17,228,199,227,5,22,25,1,221,217,241,16,48,31,221,196,211,236,19,40,36,38,48,34,18,247,224,240,244,245,239,232,3,22,8,239,227,245,2,247,235,252,16,20,21,33,21,248,1,253,226,239,252,5,45,53,28,12,2,251,250,236,234,0,15,246,232,227,205,211,0,21,13,0,239,231,1,25,28,20,14,26,43,27,5,252,236,11,46,22,226,199,195,226,20,24,4,8,0,255,23,33,8,234,240,2,2,7,13,237,237,26,252,191,195,227,254,22,21,250,236,3,53,92,61,240,200,223,28,63,44,253,239,251,4,238,211,207,207,242,12,249,237,249,7,31,51,30,236,228,0,41,68,46,0,253,25,33,3,219,190,201,251,26,19,235,180,175,217,1,46,75,47,21,0,216,228,15,44,58,30,251,252,250,246,228,219,231,246,16,31,7,245,4,11,242,232,248,251,250,254,24,32,24,5,246,248,255,251,251,244,236,254,8,0,10,27,24,10,248,222,225,3,28,31,19,6,2,0,248,228,215,241,6,249,247,16,16,237,227,3,35,21,0,3,4,23,51,27,251,238,1,16,19,245,195,202,0,18,255,243,0,251,229,230,232,231,21,60,36,21,32,28,11,5,245,232,238,251,31,49,12,229,227,220,221,240,244,255,15,0,241,233,229,239,7,28,16,14,38,37,20,1,248,3,20,23,14,253,250,240,219,254,7,232,6,49,9,235,243,235,248,14,0,240,239,234,241,28,61,26,240,204,184,222,25,60,61,22,243,233,251,1,240,228,249,7,27,49,18,211,203,250,29,35,20,7,0,250,248,248,240,5,19,11,9,19,1,251,16,12,243,244,233,225,5,45,24,237,222,228,237,18,21,228,221,36,52,4,231,214,196,243,45,64,75,47,218,175,210,248,254,4,38,33,0,6,7,209,204,245,235,234,26,45,39,19,1,11,20,24,6,229,223,28,57,40,36,20,222,218,252,246,214,215,217,219,14,35,237,242,35,26,252,233,215,213,8,76,90,35,250,0,17,29,11,214,190,214,239,3,29,12,202,192,2,8,207,232,25,33,61,87,31,216,213,252,251,236,246,237,234,255,7,26,58,36,1,255,9,23,9,1,32,32,21,74,37,190,166,210,217,215,230,242,8,49,45,239,198,203,227,245,38,68,48,21,11,10,33,33,2,233,220,207,204,250,15,5,33,61,7,199,189,206,218,5,32,16,3,16,19,14,5,12,249,243,10,14,8,42,39,29,41,18,218,194,209,238,243,238,245,248,7,16,12,233,222,247,26,45,57,27,222,198,236,45,95,72,17,215,205,228,254,15,13,11,2,230,230,244,250,246,231,227,243,242,240,16,20,3,251,11,18,22,36,37,11,244,241,4,254,3,253,251,254,241,220,207,214,248,6,21,19,251,247,3,31,62,67,33,247,219,235,247,2,18,17,1,255,222,217,253,0,222,249,21,25,24,37,15,9,28,14,226,222,254,0,249,9,14,240,233,238,216,219,253,245,243,13,30,13,8,27,14,10,25,10,246,12,33,17,7,25,4,236,242,229,195,217,9,20,18,25,247,214,235,3,237,228,250,9,8,23,32,44,49,36,255,213,219,255,253,246,12,14,242,245,8,0,248,242,230,224,240,2,18,13,254,12,30,27,21,9,252,0,254,251,7,16,18,23,38,7,219,203,199,230,22,29,26,41,33,13,1,247,220,204,225,5,17,20,17,254,240,253,26,4,222,212,213,223,255,13,9,15,23,6,249,26,36,2,223,225,236,253,17,20,254,254,30,46,253,231,251,255,254,0,252,232,231,14,47,41,21,17,247,212,252,57,53,35,29,238,198,218,31,76,51,229,154,134,202,24,70,42,10,220,184,195,235,221,219,11,68,47,23,27,18,16,22,30,25,27,9,244,241,12,21,255,213,210,213,230,2,22,13,0,247,244,249,9,1,250,3,1,245,9,25,19,5,1,5,254,251,251,235,238,1,6,253,248,5,8,253,245,251,254,11,18,12,0,251,254,244,235,252,4,254,4,16,3,235,231,254,25,40,44,27,22,28,20,14,24,33,27,3,11,25,14,6,13,10,234,219,238,246,235,243,232,209,221,11,30,0,0,147,5,17,0,252,244,246,1,12,13,9,4,253,5,9,6,251,245,249,251,10,13,16,6,239,231,245,254,7,9,8,248,231,233,243,1,4,254,246,242,0,8,6,0,247,239,244,10,28,37,26,7,249,252,0,0,5,16,25,25,15,255,240,227,229,247,12,23,16,0,243,246,247,240,241,255,11,10,0,251,253,254,250,250,240,245,2,11,12,6,5,0,0,253,250,247,0,14,20,19,18,5,240,244,0,11,20,19,10,255,247,247,253,249,248,3,5,8,1,238,229,246,5,254,251,255,6,17,12,252,242,247,255,0,13,16,11,0,244,244,248,242,245,2,8,3,7,255,240,241,253,10,14,6,253,3,18,30,33,20,9,254,249,8,10,8,3,5,5,253,249,240,235,244,4,6,253,242,237,239,248,251,0,255,248,249,243,240,242,253,12,16,5,249,239,241,1,9,15,28,25,10,252,236,244,13,24,23,23,18,10,13,8,9,8,2,254,254,3,8,14,9,252,231,223,233,241,3,12,4,239,227,232,250,0,248,255,2,248,248,250,252,4,0,0,0,251,254,20,20,1,254,0,7,14,15,15,14,14,15,14,13,14,18,14,10,2,239,225,231,255,12,13,5,245,225,221,237,2,5,0,253,250,238,228,236,4,14,8,4,1,243,234,248,16,33,35,9,240,249,5,4,0,17,38,36,22,251,242,0,20,20,249,247,2,7,2,250,234,238,247,242,239,0,12,7,247,229,225,253,11,17,15,7,247,220,233,247,253,21,41,12,236,233,241,4,22,27,15,248,250,1,0,18,15,8,7,2,8,12,5,255,3,8,6,4,247,247,254,4,0,254,244,245,252,251,246,241,244,251,9,6,254,241,239,248,4,8,2,8,13,4,246,244,6,16,22,13,254,247,236,252,24,27,4,243,247,255,9,16,18,11,10,253,254,0,253,240,246,7,22,11,252,237,225,229,235,247,254,253,6,6,255,245,244,251,255,2,13,22,14,11,14,1,244,251,12,33,40,21,244,234,250,15,22,5,233,232,7,15,248,237,0,16,14,0,232,214,222,252,20,34,25,242,237,243,250,2,2,8,240,222,229,5,28,43,18,225,228,240,254,25,57,48,4,244,241,0,16,7,3,0,6,254,14,31,25,2,232,219,213,234,15,33,25,1,249,245,241,216,196,225,24,55,19,233,228,232,244,9,10,4,25,27,15,19,250,219,233,8,19,41,50,23,247,233,226,239,16,38,20,255,242,253,252,235,244,15,34,27,242,217,233,10,14,245,214,204,231,8,29,21,255,237,226,239,15,22,6,253,20,36,37,252,214,226,20,63,65,34,1,218,221,234,251,6,252,4,16,21,17,253,234,230,243,226,242,27,64,67,17,214,174,178,244,44,48,24,0,234,217,207,207,0,33,14,3,4,4,251,230,229,1,21,12,30,53,66,42,244,212,210,245,23,52,65,48,1,231,218,215,238,16,15,16,2,242,230,210,221,246,29,37,12,231,224,6,16,253,234,224,238,19,34,6,222,214,221,243,15,24,31,37,28,0,219,210,244,45,57,52,19,246,254,20,17,252,229,234,16,47,53,28,221,192,213,240,13,38,28,11,245,230,235,227,224,228,237,8,32,31,0,249,2,255,243,210,219,10,35,53,21,238,236,255,1,242,243,6,22,22,9,1,226,3,1,248,33,23,255,243,14,19,24,42,16,238,197,217,2,23,55,38,0,224,223,235,240,15,29,13,236,227,213,218,31,32,9,244,200,203,15,49,46,29,242,219,210,232,12,25,34,34,4,243,2,0,1,3,242,1,13,27,41,33,14,246,230,232,252,239,16,46,30,5,223,233,237,247,1,232,215,255,36,6,242,245,227,233,224,243,8,17,63,44,0,219,223,231,0,53,20,36,55,25,227,181,191,236,52,81,65,8,217,221,200,203,25,69,67,33,222,208,237,17,47,10,201,205,1,33,51,250,219,242,234,234,234,209,8,67,73,36,231,180,190,231,253,48,71,67,39,204,180,206,0,38,63,19,229,212,242,61,66,12,210,177,224,37,48,43,16,0,4,245,242,216,210,16,43,20,21,9,225,217,241,255,251,247,26,61,27,231,211,213,11,50,44,245,225,215,9,51,57,11,180,162,244,41,28,11,230,205,243,12,11,239,233,239,245,40,78,29,240,220,231,244,9,39,43,36,33,20,218,219,0,248,35,55,29,236,222,6,10,14,10,15,3,230,232,238,9,44,11,229,187,179,210,249,45,2,212,211,25,35,240,239,231,0,32,27,22,6,251,11,28,38,23,0,224,222,45,47,46,10,218,238,22,18,241,4,0,8,19,252,13,0,222,242,239,235,234,20,24,235,211,204,233,231,31,46,246,230,220,210,233,26,45,29,243,236,31,41,28,32,216,254,62,41,19,29,44,1,10,225,210,216,251,87,79,2,221,174,131,223,49,37,26,15,229,216,213,230,220,214,41,56,27,231,205,217,248,64,70,250,172,227,35,41,45,23,239,248,15,31,6,7,17,39,29,233,253,13,10,23,240,234,8,15,28,38,14,201,184,184,253,94,95,3,164,131,186,20,73,41,234,195,191,11,9,239,242,244,20,40,43,239,196,228,35,94,50,236,213,200,235,32,58,49,19,226,242,15,218,227,52,74,74,15,214,0,227,250,41,38,246,8,23,231,245,237,241,230,247,32,41,5,201,210,187,216,38,50,252,237,229,232,250,0,255,237,4,10,2,240,12,12,12,9,1,5,228,12,38,15,232,247,254,241,33,47,13,210,229,20,48,18,221,237,251,26,62,8,216,246,3,2,8,30,22,18,254,249,248,241,19,23,244,253,7,248,237,6,26,3,239,242,5,7,8,12,215,217,243,255,249,251,6,236,227,245,253,253,225,231,250,234,28,25,244,210,241,6,4,28,30,47,255,227,7,247,6,50,52,11,246,9,38,0,230,252,31,20,54,61,10,216,189,233,12,39,74,30,200,147,214,50,41,16,4,243,245,204,223,218,242,242,32,53,13,6,209,196,230,28,80,61,241,186,214,26,42,65,22,234,234,238,6,17,5,245,41,42,247,237,194,208,2,19,252,18,242,238,246,224,223,216,226,13,31,30,2,228,207,218,248,14,15,255,19,18,2,14,236,241,239,7,40,44,34,9,12,251,252,22,30,38,39,31,3,20,26,9,2,8,19,38,26,28,33,13,248,1,247,239,21,56,43,12,242,239,0,183,6,8,0,1,12,253,238,243,1,5,0,5,252,253,17,26,8,255,19,43,35,14,7,17,21,19,15,8,12,12,11,252,236,255,15,10,251,235,243,238,224,225,219,217,229,228,214,198,198,224,4,245,235,14,29,26,0,3,31,47,54,54,39,16,29,56,52,33,11,18,41,23,250,246,2,1,0,253,221,220,244,237,223,209,221,249,235,204,215,245,0,245,235,247,6,17,8,245,243,0,24,16,242,243,17,30,23,0,250,16,38,29,10,9,5,21,25,4,250,21,29,16,242,240,10,18,4,245,244,244,246,241,238,230,233,237,240,229,220,243,250,251,248,4,12,21,23,14,19,29,36,40,19,9,15,16,4,3,2,251,244,237,254,0,240,244,246,233,235,249,250,236,235,246,253,243,240,2,1,247,4,9,5,8,16,24,24,2,254,13,5,252,246,254,249,0,0,254,249,248,10,13,2,15,30,32,18,5,20,20,12,0,4,3,245,253,255,249,228,236,251,251,247,249,249,0,7,10,253,240,239,255,255,229,228,254,6,247,228,238,253,0,32,48,31,7,254,255,10,2,5,30,23,248,235,253,7,248,253,31,19,240,240,253,254,255,10,18,251,227,231,253,234,237,4,6,7,245,241,248,243,253,25,17,235,250,13,254,236,252,25,34,28,11,13,20,30,46,50,32,17,30,29,252,226,247,4,242,230,233,224,189,216,2,234,208,218,249,254,217,217,242,4,2,255,8,252,245,17,38,27,3,33,64,31,12,22,26,47,40,13,14,246,6,37,3,220,219,242,252,211,173,217,246,237,229,225,220,230,3,11,244,245,13,44,25,242,247,29,47,31,24,29,43,55,43,16,7,16,47,32,243,223,0,10,249,223,213,231,249,248,235,224,211,232,1,255,230,221,244,240,238,251,1,4,1,9,10,245,250,12,35,35,10,12,2,249,1,17,38,29,13,14,4,222,245,35,35,4,241,5,15,238,224,245,5,248,252,237,218,205,225,12,6,240,252,18,4,246,254,22,38,29,30,26,4,247,19,23,4,13,21,31,13,243,251,10,14,245,246,242,248,237,209,223,233,219,223,229,226,212,228,242,0,7,13,28,14,20,49,72,60,34,42,49,38,19,4,244,254,253,244,220,205,216,247,246,209,213,243,252,0,235,236,253,254,243,13,11,249,7,23,25,248,236,27,68,30,254,20,32,10,10,2,250,235,7,36,248,202,226,10,25,248,236,6,22,26,7,247,0,31,29,2,229,224,253,8,229,203,211,240,1,239,210,223,254,3,253,239,254,12,24,2,249,0,43,58,47,16,254,33,56,50,26,18,20,16,6,255,245,244,243,6,7,225,198,222,0,249,228,242,244,234,232,248,247,226,234,9,252,230,232,0,2,251,251,5,4,251,13,21,12,9,30,32,22,10,20,49,54,37,29,27,24,45,37,246,232,245,0,238,224,219,207,194,225,226,211,199,231,2,227,206,232,12,16,14,36,34,24,19,44,46,10,20,53,62,19,240,1,22,2,6,5,252,247,223,220,234,227,248,5,241,217,218,238,230,234,6,27,22,239,240,252,2,21,30,25,11,249,253,8,10,255,19,33,5,252,243,8,27,23,13,13,16,251,248,248,250,241,0,6,254,217,222,250,241,243,8,20,6,249,247,254,6,4,18,14,227,230,12,25,248,237,244,35,4,219,6,33,19,15,24,10,250,0,33,11,209,228,255,0,229,219,237,243,228,248,26,22,14,32,41,18,254,10,46,45,27,255,241,228,251,1,240,220,224,21,10,222,243,1,12,5,241,7,13,241,231,236,241,223,252,5,240,224,220,16,14,241,255,34,20,21,43,27,36,25,35,57,23,248,3,24,4,253,246,245,0,246,250,2,242,222,4,4,226,217,228,228,205,209,244,5,225,220,254,10,255,7,55,54,41,42,40,51,43,15,10,27,19,3,233,218,224,236,236,250,239,225,0,12,242,245,2,0,6,26,4,254,4,240,242,253,245,0,7,245,0,254,250,7,248,247,13,11,243,224,240,12,1,243,246,244,249,21,10,15,13,13,33,60,44,11,11,21,37,56,11,233,247,239,0,240,207,221,243,224,223,206,187,235,7,251,246,254,13,32,20,229,0,35,46,70,33,5,29,45,27,7,253,42,69,16,216,207,221,231,231,211,190,189,200,214,223,186,196,6,41,25,239,224,6,41,38,32,26,35,63,45,35,24,16,77,112,73,10,8,28,13,244,232,240,227,186,184,170,149,158,206,219,217,238,247,3,9,7,64,100,59,39,45,49,31,22,14,31,36,0,9,247,212,3,41,34,235,202,242,246,203,177,200,221,211,204,192,207,218,11,34,13,30,44,83,69,35,44,72,92,71,11,251,228,228,0,247,200,188,216,217,194,195,240,10,251,10,26,13,8,26,59,61,42,29,5,3,4,252,0,252,1,255,233,218,219,246,255,6,250,228,244,247,244,239,245,0,19,13,237,233,230,254,34,14,24,13,21,27,8,44,45,45,58,34,1,253,4,2,254,232,207,222,207,185,195,219,241,234,235,225,229,238,240,21,33,25,47,45,33,21,19,54,65,35,18,17,254,239,241,234,226,231,5,255,229,217,205,226,0,10,14,239,241,1,5,4,9,26,25,20,38,4,238,5,35,37,16,11,2,248,245,1,252,239,239,0,245,208,209,234,227,231,9,6,8,249,251,20,28,38,58,52,19,20,26,254,245,245,1,12,232,230,232,223,231,250,15,240,236,14,249,244,241,254,2,5,27,7,234,232,17,32,0,21,26,17,249,239,253,233,3,15,254,230,207,236,237,222,243,1,15,2,4,246,7,53,53,53,53,62,52,18,27,33,41,20,253,1,212,209,227,234,218,222,229,227,227,224,236,246,237,0,246,215,220,223,235,233,0,12,0,248,247,15,30,44,73,72,44,40,35,36,36,23,20,25,248,227,227,204,211,229,245,241,223,222,238,246,254,20,38,15,10,26,2,0,14,0,249,248,251,0,228,211,242,1,15,14,11,0,251,14,6,8,24,19,17,254,233,248,248,243,19,18,234,11,11,252,254,9,44,33,254,2,6,254,231,252,12,236,229,237,224,206,220,244,255,236,228,12,7,255,16,36,41,37,38,39,15,2,11,35,23,243,18,1,229,247,237,239,2,240,246,243,229,230,255,0,244,2,249,7,6,229,240,25,43,12,255,1,247,13,14,6,11,6,3,16,235,198,0,21,7,2,220,239,18,246,248,255,9,25,33,0,244,247,6,26,25,0,248,8,1,239,238,254,7,23,5,246,248,225,239,25,4,247,3,3,9,250,244,21,36,22,11,15,10,3,23,12,1,253,2,6,244,222,218,245,250,225,226,237,238,245,244,240,237,10,10,9,249,240,31,35,18,25,251,247,21,15,244,236,247,3,14,249,238,254,252,10,24,254,252,29,24,6,12,12,30,38,21,13,11,255,9,17,8,240,242,245,224,215,223,240,242,250,233,237,238,250,15,255,247,3,19,11,1,5,0,249,19,12,9,250,2,8,7,241,26,33,253,8,247,249,252,244,6,0,220,228,241,234,235,244,244,4,253,255,8,254,9,21,29,20,16,21,29,26,7,19,26,19,23,14,12,21,253,13,4,12,2,2,250,248,247,238,237,220,230,225,222,227,211,225,229,225,245,239,241,253,3,11,8,14,17,20,17,12,12,3,6,18,5,246,246,9,14,249,247,236,245,10,10,17,0,253,19,24,16,7,37,42,28,32,14,30,16,11,29,5,251,250,8,0,229,242,234,243,244,244,249,231,239,245,5,0,237,0,250,241,252,243,10,17,254,2,2,2,2,4,2,250,244,236,249,237,219,225,239,233,214,206,222,221,225,225,227,241,227,248,0,0,30,7,15,0,0,248,249,252,250,251,254,255,255,0,249,243,242,249,1,3,0,2,3,1,253,251,247,248,252,252,255,250,253,253,255,254,0,8,16,18,18,16,12,8,6,5,7,12,17,24,24,24,21,19,20,16,13,13,7,9,8,6,7,12,14,20,21,21,19,15,7,0,249,239,242,245,243,245,247,248,251,249,251,250,243,241,237,240,241,242,244,247,248,248,249,243,241,245,247,249,248,250,0,255,254,251,251,246,239,247,241,233,230,231,236,240,245,253,0,1,3,2,0,255,0,6,8,11,16,25,27,30,36,36,26,17,5,255,253,254,0,3,9,15,19,21,21,18,12,5,5,6,5,2,2,0,253,0,12,16,12,2,246,237,235,232,227,224,226,232,238,243,247,252,255,1,3,0,251,244,242,247,251,0,4,6,1,251,248,243,247,248,249,254,4,255,255,255,253,255,4,5,5,4,0,3,2,0,254,255,3,6,12,14,10,4,0,1,3,12,20,22,26,22,20,18,15,9,4,1,0,13,15,12,11,5,254,249,241,242,238,238,243,249,247,250,253,254,255,0,1,3,6,3,0,254,254,5,7,1,0,250,248,247,240,241,241,244,248,249,250,1,4,254,0,253,253,0,0,4,10,17,21,15,4,250,242,236,230,229,234,236,239,243,0,10,19,24,22,17,18,15,17,14,11,17,31,39,44,42,34,34,30,24,14,7,255,254,0,0,1,4,11,10,7,2,2,4,1,255,250,0,5,8,8,9,6,2,1,252,243,239,237,232,230,222,221,222,229,235,235,241,240,236,237,237,242,244,244,246,245,241,245,237,231,235,235,244,248,243,240,236,234,238,236,243,252,251,254,0,252,0,0,5,9,13,18,22,21,18,22,26,36,41,38,43,40,34,26,17,11,14,8,8,8,9,18,26,24,12,254,254,254,251,254,252,253,252,253,255,1,5,6,3,254,250,250,248,241,242,245,248,254,0,3,11,11,14,9,250,236,236,235,242,246,250,251,251,0,0,252,242,234,234,230,234,238,243,246,242,250,10,16,18,15,10,3,1,254,255,251,6,20,20,25,28,20,11,1,250,250,251,252,247,246,244,254,7,0,252,255,0,3,0,1,2,12,15,22,25,21,20,11,7,10,7,8,6,2,3,9,5,255,252,239,228,230,231,233,237,237,242,248,253,8,19,16,14,9,253,253,250,244,244,243,246,253,254,252,249,238,234,237,239,243,243,252,1,0,0,11,11,12,19,23,22,20,15,16,13,9,12,20,23,28,30,26,20,12,6,6,8,10,9,7,6,9,15,24,30,29,25,12,1,250,248,245,243,237,230,224,236,244,248,242,238,241,242,249,253,246,237,233,236,248,253,3,5,5,254,252,243,242,242,241,237,231,231,232,234,244,247,255,3,0,255,255,254,2,4,254,0,3,5,7,2,2,9,14,17,14,3,254,249,244,250,246,246,252,251,0,3,8,22,29,28,33,28,25,16,6,9,5,10,18,18,17,21,23,26,15,4,3,0,253,254,249,248,246,252,2,0,255,253,254,243,239,234,224,232,242,247,3,2,2,1,243,232,239,245,253,254,255,3,10,13,12,6,255,4,7,1,250,241,240,244,246,243,247,251,2,5,0,249,233,228,229,234,250,255,253,6,27,29,28,27,21,5,255,254,255,0,253,7,11,9,17,28,29,18,3,4,4,254,251,255,1,11,16,23,29,30,31,31,23,8,250,239,238,237,244,249,251,4,5,1,2,251,242,243,241,241,233,233,245,0,14,20,16,9,0,243,239,241,235,226,224,236,249,0,4,0,251,247,240,235,236,233,237,247,1,15,27,34,35,29,21,9,3,2,253,3,8,19,25,30,26,20,15,17,14,6,248,236,245,251,252,5,9,11,16,9,4,0,244,250,254,253,5,0,0,5,252,252,0,246,247,252,243,244,241,241,250,251,251,2,10,6,3,2,250,244,235,226,232,234,234,240,239,232,227,232,240,244,246,243,241,243,244,10,24,26,29,26,20,18,21,19,14,1,3,20,16,16,23,14,6,5,5,0,253,252,253,251,253,11,22,15,17,24,29,36,40,30,17,12,255,250,242,231,234,239,229,243,253,245,253,251,248,246,230,229,242,250,6,15,21,30,23,21,17,254,254,0,255,3,255,247,248,244,254,3,251,243,231,210,215,227,230,239,250,252,0,3,10,25,36,12,253,2,241,250,3,239,242,249,3,30,40,29,15,248,229,229,243,0,4,246,243,254,11,29,34,23,20,30,33,21,8,243,233,250,15,39,52,31,18,4,236,239,236,237,244,228,228,240,255,12,20,14,255,0,13,6,17,11,229,224,237,247,14,16,10,12,254,245,236,226,220,210,216,231,233,245,247,236,246,241,247,11,15,7,255,2,0,253,12,21,29,34,17,18,25,20,23,19,24,29,32,37,33,18,10,5,0,13,10,0,251,248,246,240,243,5,25,22,23,23,20,16,252,243,245,239,248,253,248,251,245,245,253,243,235,242,235,223,216,204,190,193,205,225,249,10,8,8,250,249,4,7,13,10,2,0,252,253,245,242,246,237,243,248,237,243,237,228,251,2,19,39,22,25,24,34,51,44,41,49,48,62,56,45,38,21,23,18,254,253,230,226,241,238,255,0,252,3,243,225,241,230,244,8,254,10,9,4,21,5,10,20,255,1,242,216,229,223,209,224,217,204,226,230,223,239,246,251,18,31,39,55,52,33,16,247,243,7,4,1,1,2,12,13,255,239,216,204,212,236,246,1,8,0,255,0,8,22,18,30,42,28,21,18,6,249,230,226,239,242,241,255,1,7,23,26,31,28,23,30,31,28,24,45,57,68,70,43,30,33,39,27,5,254,232,213,207,186,189,190,183,195,213,218,224,233,219,220,224,236,243,228,235,0,5,3,14,14,249,254,1,245,241,246,253,2,3,5,8,6,251,1,1,242,245,238,236,250,3,29,48,45,43,38,23,33,29,22,19,6,1,9,6,13,18,4,4,253,2,26,29,31,19,9,8,11,18,19,26,13,9,25,12,12,2,225,227,226,214,228,229,225,239,220,191,204,208,218,237,235,244,9,22,9,235,223,226,228,253,14,4,15,13,242,246,240,245,4,0,1,10,18,17,13,25,17,9,18,26,27,28,23,23,38,43,30,35,46,24,21,15,248,253,246,216,215,214,229,0,5,9,255,236,243,234,235,231,211,224,246,240,8,10,12,30,9,255,254,0,9,6,8,2,4,19,5,14,27,17,38,44,24,19,19,4,246,238,250,2,19,24,1,1,253,246,249,239,224,219,213,213,228,252,0,252,240,242,246,255,18,29,19,17,25,22,18,18,9,12,32,26,12,9,238,227,244,229,225,3,15,21,31,29,10,10,13,249,243,236,214,211,212,209,232,251,242,231,232,225,220,227,222,214,216,231,242,249,247,254,7,14,30,41,44,34,7,1,253,244,0,0,244,5,23,30,40,14,247,249,252,255,11,24,12,0,2,2,7,27,24,14,254,245,0,241,238,244,221,234,252,250,26,36,8,15,7,249,29,48,51,73,77,79,90,81,59,47,34,28,41,36,24,30,19,6,20,18,20,34,22,4,245,229,232,222,207,212,214,237,1,255,8,0,242,240,226,217,220,215,199,193,199,222,228,245,242,211,210,207,192,197,195,183,201,215,216,231,238,221,225,242,236,240,238,215,213,221,205,212,228,220,232,254,254,8,7,251,238,234,237,242,250,0,0,5,21,39,49,77,77,62,73,65,40,26,3,3,8,21,34,43,54,40,40,36,35,43,31,36,34,26,50,53,39,47,45,45,31,34,16,243,249,227,200,220,230,232,13,15,5,31,29,33,24,7,10,11,28,30,10,36,32,39,47,22,26,32,28,19,7,4,0,9,13,4,32,52,44,54,43,7,255,235,213,210,198,192,199,191,184,171,189,198,179,186,173,157,145,133,140,143,166,200,216,227,251,233,224,219,193,197,220,224,235,255,251,251,18,30,24,36,49,50,59,50,34,31,21,15,25,39,71,65,61,53,36,32,33,20,9,5,8,21,30,22,4,13,21,23,28,24,18,14,5,253,253,254,0,3,3,4,6,7,9,6,4,3,1,0,0,168,6,10,0,0,255,0,1,254,252,1,6,8,8,10,10,9,11,11,3,250,250,253,249,246,247,248,253,0,0,4,5,253,247,245,245,242,239,244,253,3,2,3,8,5,1,0,255,3,3,0,3,7,12,13,22,27,19,10,5,9,10,7,9,9,255,247,2,9,249,237,243,250,247,244,247,239,223,235,249,251,248,239,0,14,4,253,5,9,0,1,3,6,0,254,19,17,10,17,29,31,18,13,17,21,252,238,227,204,214,246,2,4,10,21,38,37,8,227,217,225,212,196,201,217,235,19,58,48,25,30,24,253,234,231,217,226,2,0,11,38,47,61,68,48,253,233,250,242,6,14,244,249,29,69,64,50,22,0,246,232,222,185,188,230,235,242,4,6,4,14,11,217,194,213,218,218,219,235,253,17,20,0,252,6,15,23,15,251,246,0,6,249,243,24,54,49,41,44,38,6,14,26,241,191,239,38,35,28,8,17,0,234,225,220,221,199,209,241,249,0,23,13,241,236,244,6,14,12,252,236,246,250,10,31,33,29,34,76,66,3,249,13,16,5,255,216,240,43,50,38,9,2,3,238,239,233,207,236,231,216,247,225,194,217,230,196,183,227,255,244,251,31,22,3,43,44,16,9,30,28,229,231,228,230,24,55,55,51,53,35,13,240,250,254,224,237,255,243,236,250,15,37,13,229,212,214,215,212,233,248,9,16,5,30,39,38,20,238,238,237,240,244,243,13,48,79,92,62,19,2,8,252,227,232,217,231,25,46,53,35,4,1,19,253,223,215,223,244,249,5,254,7,10,5,22,248,238,226,227,239,221,220,222,0,15,30,44,20,246,201,201,241,243,251,8,14,34,35,41,31,234,168,156,183,207,245,244,242,253,255,38,78,68,28,4,232,189,169,177,207,230,9,26,23,41,79,66,52,49,234,191,225,15,42,60,52,74,101,83,92,69,32,8,235,254,253,13,36,26,34,36,12,3,11,3,226,201,188,156,171,204,222,224,2,40,21,17,10,230,199,163,143,185,247,233,219,21,38,39,39,14,250,230,203,199,230,248,241,23,88,78,61,44,252,204,199,211,190,184,210,2,23,17,46,82,112,106,46,15,235,173,150,184,239,4,43,83,99,99,52,25,35,4,237,211,198,237,237,3,40,46,43,34,36,3,224,206,203,217,234,255,244,247,21,43,36,9,242,218,215,200,218,4,250,244,32,41,21,24,14,0,228,213,227,213,219,230,203,235,37,38,50,84,63,255,215,217,202,193,218,233,243,40,86,75,68,46,2,255,14,250,197,181,222,225,0,37,12,42,69,60,32,240,226,223,217,214,222,252,13,52,79,44,46,51,24,230,220,247,230,219,207,224,1,245,228,252,40,19,220,220,214,176,188,213,229,252,255,249,249,33,25,3,26,13,250,241,38,76,61,73,62,35,31,43,46,14,235,242,35,73,59,2,228,252,247,246,14,5,224,185,208,220,187,196,206,228,249,247,11,13,236,204,218,235,235,246,253,25,39,5,251,5,27,17,0,6,14,29,37,39,30,3,242,251,250,1,12,15,0,240,29,28,8,25,4,2,247,223,239,241,251,254,229,229,0,14,12,23,13,235,241,15,243,181,225,30,31,30,245,242,0,12,27,248,236,233,253,31,40,24,250,248,16,4,227,227,231,227,249,27,48,47,41,35,29,1,229,226,225,229,225,237,17,23,249,11,44,34,19,32,23,231,222,242,244,249,12,253,249,9,22,32,27,15,242,247,14,242,195,192,212,233,243,245,245,253,20,27,12,247,255,3,228,220,215,246,16,21,49,30,20,10,245,222,216,239,242,255,0,5,37,44,34,24,23,15,241,229,246,245,229,240,0,14,35,42,39,37,29,14,241,206,204,227,216,235,7,11,45,80,83,43,21,0,226,224,206,190,202,244,40,69,69,35,15,17,234,219,217,202,221,223,228,254,17,37,61,51,27,3,196,191,232,212,190,223,12,32,26,22,12,254,230,234,232,195,198,243,12,244,252,33,73,77,43,26,8,243,221,247,18,14,14,35,93,69,23,42,39,0,236,246,252,245,245,248,245,3,16,23,33,16,230,209,198,194,194,176,185,211,199,206,228,0,2,252,43,46,4,5,10,0,246,247,26,36,30,46,58,63,93,90,54,27,13,252,234,255,2,5,0,38,43,6,17,255,217,174,149,151,159,163,175,222,15,36,12,242,0,3,225,197,205,237,237,234,24,42,46,72,57,58,47,249,0,17,16,24,27,35,24,5,24,62,50,28,22,27,21,249,221,198,211,227,249,3,11,5,232,215,212,208,186,223,7,0,239,231,255,19,38,48,58,48,32,10,231,247,242,240,12,22,18,18,65,75,45,34,16,239,207,205,201,215,224,209,234,0,245,253,16,10,248,211,208,221,217,216,219,4,44,53,38,41,28,0,1,25,26,253,253,9,31,13,251,8,23,20,0,1,248,244,241,247,9,242,225,219,233,255,233,237,239,222,205,222,235,228,5,24,31,39,39,37,43,27,236,228,5,3,240,0,35,43,32,38,26,12,20,33,46,28,249,255,39,38,12,249,254,18,8,240,205,194,219,238,244,234,234,7,20,3,234,209,194,209,238,209,209,246,0,24,24,21,19,21,18,12,12,0,247,233,7,40,17,253,254,4,26,41,19,9,37,35,23,24,16,8,243,249,243,203,207,210,201,203,230,19,29,23,9,5,5,3,253,233,231,239,254,255,250,1,12,49,73,46,16,250,251,252,245,235,208,234,9,45,82,68,49,35,33,13,236,231,217,194,201,226,243,236,236,12,25,17,10,0,12,254,220,198,187,200,223,244,250,10,10,244,8,25,15,245,225,226,233,251,4,22,27,38,66,39,29,19,6,0,241,248,249,22,33,26,31,37,45,32,11,6,253,232,236,235,232,238,242,5,23,19,2,5,253,251,231,219,238,231,234,6,19,16,23,5,4,11,5,246,241,254,237,237,251,23,43,36,30,7,246,239,239,233,227,233,245,12,14,27,39,27,33,29,248,207,200,191,176,202,232,236,246,15,23,24,3,231,238,243,238,209,225,246,243,15,36,63,72,58,35,17,4,230,218,226,249,19,31,60,65,48,64,67,35,17,239,218,218,185,177,238,50,36,30,27,9,9,10,2,219,195,192,203,222,228,252,14,34,43,33,35,21,243,209,213,235,225,227,25,63,67,68,35,239,250,233,213,248,229,210,249,21,17,24,24,26,13,227,218,215,179,156,186,241,8,255,22,65,67,48,13,247,0,233,216,238,242,244,22,77,101,71,32,22,19,254,248,0,249,232,4,46,46,37,18,246,249,252,216,181,160,160,203,11,41,25,33,58,47,20,245,200,179,205,228,233,254,21,30,37,70,67,11,7,250,207,195,213,223,235,8,18,45,66,47,19,8,4,218,200,235,2,249,242,21,36,45,29,251,234,225,207,206,252,24,26,0,19,42,16,3,0,238,206,185,202,236,0,251,31,67,40,36,44,63,25,221,218,234,249,252,3,33,52,34,31,34,9,231,195,204,230,217,221,18,43,19,17,41,17,247,240,228,235,201,175,200,247,4,248,4,15,27,24,24,25,254,236,254,33,34,10,20,43,27,4,255,16,252,235,248,250,18,15,10,8,16,6,239,247,251,243,212,204,216,231,0,254,246,252,0,1,0,245,231,229,228,252,254,2,56,54,42,35,21,21,5,254,242,253,0,243,237,248,10,13,9,10,12,15,26,12,251,240,239,251,8,16,9,0,244,249,0,4,15,5,10,12,249,236,229,0,19,20,9,2,255,244,241,252,10,255,235,241,249,234,220,226,247,6,15,12,5,13,11,1,1,0,1,89,9,40,0,2,0,0,4,1,0,2,255,254,255,250,2,254,246,254,2,255,251,251,0,253,252,253,1,0,0,2,2,1,3,4,6,2,6,7,6,4,4,6,3,3,5,5,3,255,3,1,253,2,0,252,251,255,253,250,253,0,255,251,251,253,253,0,255,250,252,1,2,255,1,0,1,2,1,1,3,2,1,1,3,8,3,3,2,6,7,6,10,254,1,11,254,255,6,0,0,0,0,6,0,251,4,0,0,2,255,0,255,1,3,248,1,3,255,3,0,2,253,251,5,0,252,255,2,1,252,249,255,240,208,216,240,247,241,244,0,255,254,254,255,15,14,5,4,7,9,14,9,14,15,10,11,1,8,19,10,11,13,9,13,8,13,5,254,253,253,0,0,247,255,251,248,0,6,247,248,5,252,250,5,4,246,4,8,3,253,5,0,8,9,254,1,2,6,5,1,2,9,4,252,227,226,225,239,242,237,246,248,249,243,246,250,0,9,5,5,5,12,22,27,24,240,8,30,235,253,23,253,246,1,15,2,251,9,6,0,6,10,6,5,21,0,243,9,15,0,234,252,3,240,235,0,254,234,244,2,2,14,15,16,2,8,11,239,3,249,247,249,1,3,240,235,2,10,240,239,251,254,249,252,12,23,6,13,12,7,10,0,0,250,4,11,0,15,5,0,31,34,0,0,11,8,8,252,8,18,252,248,241,241,249,237,239,243,241,245,2,255,252,255,0,8,13,244,206,218,240,254,0,15,252,247,10,13,1,253,10,252,11,31,4,245,14,29,10,0,9,0,4,5,254,252,255,15,5,229,16,23,230,252,19,245,243,5,251,232,10,6,241,13,10,245,240,2,21,240,230,21,13,248,242,247,25,3,252,5,239,9,25,244,246,252,16,27,245,252,21,5,251,8,12,4,250,9,19,6,237,246,26,31,225,232,40,248,250,246,239,14,1,248,4,227,9,13,211,11,27,243,230,0,9,250,249,12,13,234,235,22,11,246,245,0,1,3,11,0,2,10,254,254,0,7,5,248,254,12,13,252,237,253,13,16,250,246,28,244,224,21,32,7,197,242,62,5,227,251,17,7,238,244,19,12,241,249,0,17,18,237,7,6,250,18,246,232,17,17,238,244,247,24,7,227,0,0,9,255,242,15,1,7,253,249,16,10,6,223,16,42,241,209,17,64,237,208,4,32,15,218,249,20,253,11,245,239,27,24,222,232,30,20,239,236,17,6,231,244,17,30,222,233,20,30,249,239,246,4,28,228,228,39,7,234,5,16,17,253,216,10,23,5,239,246,46,0,232,0,251,12,8,248,238,13,20,243,238,23,2,227,12,21,244,242,22,13,249,242,254,18,9,226,248,18,27,252,198,250,57,253,215,254,40,18,203,4,46,2,1,5,240,246,58,14,208,218,42,48,208,210,49,38,214,228,0,17,15,246,234,233,43,10,196,8,34,212,0,50,235,229,12,24,6,220,240,36,20,237,233,3,56,23,199,238,53,25,214,225,42,25,228,240,24,10,18,241,206,12,52,253,193,232,55,56,223,192,23,84,215,217,48,250,234,5,49,246,204,34,42,241,217,243,57,0,210,6,243,2,12,244,7,9,2,12,249,242,240,22,35,202,0,38,248,2,244,20,3,231,10,16,4,224,1,43,235,238,44,248,241,251,254,19,248,198,40,62,196,224,62,242,232,8,4,3,246,0,27,248,204,9,51,246,234,245,15,30,220,237,26,18,253,231,15,18,0,9,245,241,30,12,19,217,236,29,20,244,249,6,241,2,10,0,237,7,249,247,18,8,243,3,21,206,5,25,13,225,219,50,247,229,4,247,7,29,241,221,47,36,211,241,34,22,240,253,21,253,0,18,245,9,8,227,23,12,229,244,11,36,236,211,30,44,252,227,250,7,249,245,21,0,235,39,221,227,55,8,254,252,218,252,39,242,217,25,29,5,202,29,73,213,197,29,30,225,12,7,253,6,220,16,21,234,248,247,17,27,249,229,255,19,37,235,236,38,231,37,247,218,52,17,217,238,251,73,13,145,31,56,223,237,0,26,0,243,1,248,3,12,252,238,12,24,238,235,22,6,220,12,16,248,3,251,2,2,24,222,247,56,238,218,13,9,252,237,255,39,236,251,26,245,246,245,2,9,8,19,208,7,74,178,238,54,243,11,230,248,27,249,12,0,235,28,56,245,191,247,104,252,180,13,36,9,232,181,56,61,207,202,252,51,17,205,237,60,225,230,64,247,249,245,222,20,55,235,233,14,1,24,249,1,27,228,251,32,213,4,98,183,173,62,61,250,178,250,68,8,209,237,24,253,249,33,206,8,30,0,235,232,64,7,215,247,15,10,254,1,0,246,226,45,30,222,230,247,17,54,14,195,20,247,19,27,215,231,48,28,199,231,43,9,236,245,225,25,74,223,187,27,34,254,248,3,248,238,57,28,161,6,101,219,245,226,23,77,166,5,16,238,37,230,222,14,4,47,220,198,57,5,214,28,228,254,55,234,227,25,252,14,250,244,47,244,0,2,225,19,25,14,194,3,53,227,247,36,241,209,17,77,224,210,51,251,0,32,12,209,237,33,8,247,251,240,28,2,229,247,34,16,240,196,16,67,235,199,255,39,6,38,199,223,126,232,183,41,246,23,210,216,79,2,182,34,60,200,228,66,251,213,18,248,9,34,228,221,255,58,47,164,244,46,237,26,244,255,20,238,219,38,34,208,9,6,6,18,202,45,18,204,13,39,243,224,32,235,226,28,44,243,200,37,33,217,244,35,249,206,7,56,26,202,228,36,1,6,221,239,64,253,200,27,58,240,221,2,14,10,254,237,244,31,21,248,249,249,22,0,224,2,36,249,206,28,18,232,241,4,32,32,209,237,47,20,240,235,7,34,249,239,235,19,24,246,187,30,62,208,16,254,236,18,212,23,66,198,231,24,253,249,18,236,0,48,220,237,27,2,20,232,240,50,18,234,235,246,66,12,159,2,68,250,220,19,249,233,40,26,184,44,26,194,255,29,252,16,255,213,31,252,245,16,1,246,13,5,233,48,220,245,34,228,52,254,203,33,16,220,253,15,249,15,231,255,51,231,250,15,250,254,30,33,205,227,39,18,255,224,247,250,233,43,255,205,248,15,18,252,214,2,64,245,191,58,52,204,22,253,240,46,254,186,39,37,236,200,17,80,232,212,250,56,3,231,243,0,44,239,210,18,30,255,230,237,5,44,233,227,31,30,254,200,12,75,233,199,3,31,22,242,0,238,7,42,224,179,86,60,174,200,64,63,206,212,30,41,13,216,243,13,12,246,14,251,208,22,29,245,244,6,10,229,254,38,204,252,58,244,193,15,61,20,207,241,29,7,1,249,8,10,253,10,247,247,21,12,216,8,11,8,6,185,1,106,207,177,42,46,11,199,208,71,11,212,229,10,26,250,234,235,37,54,249,228,0,21,40,223,205,61,47,212,220,70,46,187,225,38,51,213,222,0,22,30,218,254,17,4,251,247,253,233,248,14,4,230,234,70,18,189,16,21,5,5,242,3,3,251,18,7,237,211,64,58,166,214,65,51,194,210,56,47,231,203,232,92,55,142,230,75,34,210,200,39,255,29,19,203,252,50,253,237,5,246,37,5,215,10,1,34,251,211,34,11,218,18,24,212,25,6,210,14,23,216,243,34,27,242,214,11,23,15,244,209,255,67,243,215,12,22,36,190,250,76,244,209,5,14,39,247,211,7,30,17,252,222,0,66,240,221,254,30,17,236,226,11,22,15,241,214,10,43,246,226,247,37,20,208,248,60,242,213,3,28,22,230,254,13,250,14,32,18,200,229,61,240,249,6,222,20,21,236,240,242,24,8,235,236,13,38,234,212,4,32,35,226,228,32,253,237,252,32,243,246,24,2,246,248,254,7,16,233,254,6,253,8,244,248,18,18,0,254,243,254,3,249,4,239,18,28,219,239,28,255,250,16,249,12,6,244,17,212,30,62,193,225,73,27,188,236,67,21,214,218,34,25,242,247,240,255,38,16,227,232,252,32,34,222,233,26,31,230,227,53,27,219,218,254,18,7,8,6,6,228,4,34,223,5,29,253,241,242,9,6,252,231,8,17,0,3,214,251,31,254,10,248,253,18,245,248,249,32,39,224,244,9,4,3,249,254,8,24,220,6,26,250,228,245,35,12,252,225,0,19,13,251,230,41,240,228,23,255,241,247,5,247,235,30,15,191,17,61,228,216,28,51,226,238,27,255,21,11,220,3,45,249,242,241,231,52,250,237,8,214,37,61,192,220,38,35,23,191,240,57,245,249,3,229,17,37,227,237,12,238,12,239,231,31,21,238,239,5,36,239,217,59,17,226,254,228,16,39,1,237,253,30,7,215,239,39,14,231,236,47,236,210,56,249,235,13,0,19,255,210,30,33,202,246,41,14,240,245,0,249,248,10,15,12,227,236,23,33,251,246,14,248,9,18,249,240,228,14,51,4,195,251,70,227,242,15,2,2,232,33,8,212,26,13,217,30,10,252,13,255,249,215,35,54,212,216,19,22,248,250,214,0,77,244,191,235,77,2,202,240,37,63,221,200,14,58,13,217,249,17,9,0,244,242,11,24,240,217,41,24,197,250,18,8,243,237,23,249,10,18,232,231,45,16,216,246,6,50,218,203,56,47,226,228,6,31,15,210,248,49,17,226,223,20,55,243,214,12,36,14,240,238,19,235,255,43,247,213,5,40,250,204,0,38,4,241,250,227,26,16,232,2,0,33,231,229,34,255,244,8,255,254,15,13,231,17,23,231,5,30,246,240,251,10,37,206,230,79,232,210,17,0,12,248,242,17,226,33,28,212,252,14,3,247,9,2,228,9,9,15,251,244,12,17,0,228,4,24,251,15,17,230,247,8,34,9,215,18,25,223,14,13,234,17,3,215,15,27,217,234,16,42,215,227,34,8,3,252,225,253,49,16,233,245,23,12,235,7,8,236,35,8,204,7,44,9,218,245,50,247,195,28,35,211,0,1,17,1,248,13,235,243,7,20,252,232,0,3,255,9,241,0,7,250,6,8,241,6,5,228,31,20,247,240,252,10,253,11,16,0,2,13,252,229,21,18,253,249,209,52,55,194,224,25,26,12,216,243,35,6,221,235,33,11,243,237,245,42,8,225,255,250,1,42,250,193,24,50,240,244,242,36,34,203,239,48,6,224,251,8,251,19,7,221,247,47,6,228,242,26,0,242,38,215,239,47,12,237,235,15,16,249,225,13,18,242,253,235,9,48,224,213,34,18,234,248,18,254,231,4,36,0,237,4,10,17,3,238,13,8,253,16,242,249,33,0,228,248,41,9,216,249,18,8,247,2,17,238,237,29,19,226,244,252,19,4,252,250,5,19,244,245,1,0,0,0,86,10,51,0,1,2,2,1,1,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,251,236,235,251,4,3,254,252,2,6,3,254,253,255,4,3,1,1,1,5,249,231,249,9,11,6,0,4,11,15,1,254,255,2,7,3,2,0,5,4,2,1,2,4,1,1,0,0,1,0,254,0,0,0,0,255,0,0,254,255,253,0,255,253,0,254,0,255,0,0,0,0,0,2,0,1,0,250,245,244,249,248,251,249,249,1,0,3,4,2,6,1,3,3,0,3,6,5,5,7,8,9,8,6,3,6,9,255,6,1,3,0,5,0,255,255,0,2,248,0,252,255,0,249,253,254,255,255,254,250,254,2,1,250,253,255,255,5,252,253,3,249,1,9,252,253,6,255,4,3,253,7,251,3,8,251,1,255,7,251,250,10,252,255,3,0,2,1,2,0,0,3,254,1,3,248,7,3,5,9,8,9,1,255,252,254,0,5,253,252,254,254,1,254,249,253,254,252,253,249,253,253,255,3,251,5,8,4,5,0,249,0,0,0,3,7,18,16,11,13,10,252,1,255,249,2,247,0,0,250,2,244,253,250,242,254,249,244,252,249,251,4,8,15,3,255,245,242,5,5,0,255,6,16,23,25,21,13,11,246,225,232,0,4,255,0,255,12,13,252,250,0,251,250,1,248,252,5,0,1,0,0,11,0,254,254,7,10,255,255,6,2,5,11,244,250,240,243,0,0,2,255,254,247,4,5,254,248,251,0,0,7,255,2,0,14,10,255,1,2,12,9,0,4,254,1,7,251,5,7,0,2,253,2,2,243,0,6,243,245,9,0,251,249,255,16,240,0,10,245,12,254,245,6,4,250,2,2,246,8,1,251,10,250,2,12,247,252,3,12,253,0,251,11,10,238,9,1,0,21,238,254,15,251,3,8,245,1,8,248,3,4,242,2,0,248,0,253,12,247,250,10,245,9,4,241,255,17,3,245,0,4,15,250,1,9,253,6,1,0,6,247,3,7,253,0,253,10,244,5,255,243,3,252,0,254,4,1,243,4,254,12,253,245,10,5,5,3,252,7,3,2,4,0,0,4,8,251,4,2,0,249,0,8,245,0,249,254,11,241,0,251,248,16,3,244,3,1,10,1,240,14,5,1,12,240,254,13,253,1,21,241,246,15,3,1,252,249,8,3,245,254,252,252,7,250,251,253,250,0,9,7,0,3,24,250,10,13,240,27,8,240,1,6,1,7,249,242,5,254,12,247,236,7,247,255,8,231,2,252,246,2,240,12,12,234,3,9,2,11,241,0,23,6,3,12,6,248,16,14,246,4,12,254,0,0,1,9,244,247,1,2,251,251,255,2,255,237,10,14,236,18,9,233,16,4,229,1,247,255,14,224,10,11,241,13,251,3,15,6,9,3,11,24,252,251,2,254,14,6,245,253,22,238,232,34,233,255,14,223,8,5,242,245,255,10,251,249,20,19,0,14,6,14,17,243,1,3,234,6,248,247,29,255,234,246,236,10,0,248,225,252,0,11,253,235,1,1,250,8,12,247,8,4,18,10,252,21,2,17,4,10,25,244,25,4,246,17,247,11,17,13,248,253,13,254,11,234,228,253,209,231,15,236,244,1,230,18,253,253,0,248,252,245,14,13,249,8,5,253,44,251,9,19,234,24,18,246,0,0,17,5,0,1,0,17,251,239,255,12,250,249,243,10,9,229,5,0,240,4,1,249,251,2,10,251,255,0,248,14,3,243,251,12,4,235,22,9,251,0,4,12,252,242,15,1,253,19,232,4,15,2,251,245,10,11,246,249,7,1,4,1,253,2,245,12,1,252,249,247,14,8,246,1,1,11,243,252,20,240,7,7,248,2,249,19,14,226,250,20,11,248,245,0,0,11,254,244,8,249,240,17,11,239,249,0,29,236,4,5,255,20,233,1,12,3,1,252,16,254,246,17,1,11,248,254,21,238,246,15,0,2,237,250,8,0,250,255,4,235,20,2,240,5,246,7,19,246,231,25,14,254,234,249,27,4,0,18,228,249,35,2,237,8,3,247,14,9,253,228,13,16,246,5,241,3,11,235,19,0,234,29,242,1,8,245,24,244,239,25,255,255,254,251,9,250,250,12,19,218,13,9,237,33,247,226,25,248,4,4,244,11,240,19,15,230,7,0,7,253,250,3,254,23,249,222,39,9,231,30,243,252,29,222,252,14,254,9,239,2,16,244,252,15,233,247,39,241,240,19,240,12,252,2,15,237,249,0,26,255,250,255,243,28,13,244,249,239,20,24,243,238,255,1,14,30,230,246,13,0,19,238,249,12,250,248,12,251,248,20,19,254,253,24,22,251,0,11,7,1,0,6,250,0,33,3,236,253,16,16,252,249,3,7,21,8,242,14,25,239,14,13,232,5,17,20,8,241,245,28,8,246,17,5,3,5,246,252,14,20,10,221,16,57,238,239,3,12,26,240,253,1,248,31,4,229,25,17,249,252,21,22,241,253,18,3,255,0,251,27,6,217,19,7,244,22,245,247,12,8,254,19,6,246,10,11,8,0,234,4,27,2,254,244,13,48,1,233,3,25,5,249,1,35,6,1,7,237,24,39,249,231,22,27,242,247,17,7,11,31,234,251,22,9,20,244,250,32,247,5,21,0,21,247,246,25,5,2,25,11,243,20,13,246,23,253,6,29,253,4,17,1,10,253,250,19,5,255,0,250,21,35,233,243,32,37,254,235,13,19,0,0,255,19,255,247,22,4,250,13,249,245,31,2,250,2,254,0,38,29,231,248,32,13,241,6,6,238,20,229,227,58,16,212,253,27,12,230,253,34,20,1,240,246,7,26,9,244,252,253,249,6,4,10,0,13,15,5,254,248,30,48,225,220,42,13,252,237,215,31,68,245,218,13,55,23,197,244,52,41,253,232,2,28,17,242,0,17,255,0,245,10,43,245,220,21,59,237,223,31,38,4,244,232,19,33,2,248,243,28,20,253,252,242,37,19,214,13,24,0,12,7,239,14,27,229,250,24,7,1,241,255,33,5,233,247,40,36,245,236,2,36,17,240,251,251,14,30,240,228,21,15,8,8,228,5,43,248,253,22,19,249,238,7,28,18,222,252,21,15,4,241,238,22,19,244,248,11,3,238,43,29,236,0,17,43,7,227,18,16,6,21,227,231,31,25,244,245,244,24,21,235,0,29,2,3,18,236,252,40,0,241,9,255,31,11,214,6,27,4,248,243,246,39,9,229,8,21,9,14,244,232,30,32,248,239,3,13,239,11,16,233,11,35,250,244,24,18,235,8,30,10,241,250,32,1,255,20,244,249,28,19,247,0,10,3,18,22,218,7,42,249,5,13,244,0,247,5,31,255,251,3,5,4,10,0,3,31,242,241,13,28,6,236,21,45,250,235,12,21,15,246,6,24,251,244,254,23,13,226,254,41,239,0,26,235,7,29,255,233,229,49,22,218,10,10,2,25,254,228,14,25,243,250,6,1,9,251,250,32,255,247,31,245,242,20,10,246,30,27,222,236,46,24,209,4,30,249,0,15,236,244,36,29,240,254,35,3,241,10,9,0,222,8,41,251,211,7,43,249,252,240,245,46,6,247,5,250,43,250,213,41,28,233,6,12,38,4,211,22,51,245,233,248,29,41,249,228,0,59,36,217,239,31,20,27,222,215,62,2,211,250,37,21,243,238,2,26,5,3,0,254,3,255,5,251,15,243,254,34,13,246,255,19,24,249,230,3,35,14,244,254,8,34,13,9,251,218,18,64,222,195,14,26,24,232,235,14,11,8,236,234,56,20,204,21,36,249,8,249,249,25,237,255,18,240,14,12,230,31,41,252,227,13,29,250,229,12,37,1,235,18,245,235,67,9,227,5,11,243,9,15,246,9,21,10,248,252,251,41,37,241,248,254,11,37,18,239,5,15,20,10,250,10,6,250,27,2,237,22,0,0,26,243,1,33,231,9,46,235,245,9,30,30,186,244,60,27,7,219,251,54,24,255,232,20,58,246,195,11,40,18,2,200,0,60,42,225,219,32,32,4,232,254,5,13,37,225,247,42,255,227,19,10,230,5,26,236,255,19,8,10,21,242,238,36,3,9,1,243,53,29,200,245,43,246,25,1,188,17,48,233,0,7,240,28,12,233,10,17,0,250,17,31,237,219,30,38,12,249,237,0,38,249,9,12,224,60,17,164,60,69,186,246,2,12,106,244,132,46,76,41,222,179,29,40,30,238,186,37,78,238,227,0,40,33,7,250,249,21,27,237,8,47,202,26,57,239,25,236,237,60,21,231,223,21,81,219,184,42,30,0,25,255,224,15,38,250,232,250,0,32,7,228,22,9,244,2,23,255,230,20,17,255,249,243,37,42,244,226,0,25,5,245,12,12,242,15,41,228,203,64,67,199,241,34,10,22,238,231,33,13,250,243,235,40,21,193,10,46,244,242,253,24,40,251,232,244,35,50,223,212,37,47,229,232,14,252,39,22,231,0,48,2,226,27,35,233,2,24,12,1,209,37,53,221,246,27,10,27,253,252,15,250,2,6,5,50,247,212,26,37,1,239,244,44,30,236,7,247,30,34,228,242,4,45,0,197,22,59,255,233,254,1,23,24,240,237,47,20,242,236,32,21,237,35,4,209,13,62,3,229,15,253,10,20,235,2,39,224,255,38,243,8,244,227,73,17,203,11,38,243,6,2,255,35,246,10,246,242,61,235,206,61,254,232,39,248,246,42,13,226,253,37,13,5,9,237,24,47,227,237,51,19,232,18,7,238,27,17,235,8,14,228,21,11,236,37,2,243,12,9,8,27,0,231,3,22,253,229,38,1,221,31,13,251,8,248,17,255,250,32,5,14,30,232,246,50,0,241,23,230,28,24,208,32,55,217,214,74,45,182,1,59,19,246,233,25,4,6,7,214,40,29,241,252,0,16,21,16,218,14,61,242,245,7,0,43,12,235,10,3,6,30,240,245,49,243,219,16,66,11,175,2,101,238,236,10,212,50,100,166,173,111,43,204,232,10,50,1,225,11,20,4,254,243,8,35,235,220,17,22,241,242,34,6,243,6,248,243,44,0,230,6,15,238,0,9,0,35,235,234,51,249,218,23,11,7,250,223,24,33,7,228,230,58,27,201,15,25,248,31,27,218,212,78,56,189,200,68,66,221,212,253,34,62,218,221,32,13,6,7,7,8,14,251,6,23,30,210,250,62,19,230,227,29,29,252,245,60,246,173,65,92,206,232,54,17,230,36,27,194,14,52,208,250,50,244,197,38,59,212,253,12,7,5,249,239,28,10,0,227,0,70,241,226,27,21,12,225,241,27,18,3,226,7,33,223,1,34,11,7,224,14,56,248,220,33,10,247,247,247,42,228,208,44,51,239,237,245,22,56,202,245,54,241,1,2,245,43,251,220,18,29,246,232,33,31,236,233,6,57,5,221,250,0,32,22,200,35,54,217,10,2,233,60,35,211,0,27,26,253,228,0,35,36,254,208,4,81,223,228,58,252,236,29,231,16,50,212,245,17,33,30,191,245,72,20,237,240,243,43,27,252,3,252,249,18,48,250,247,32,252,232,42,11,210,39,53,250,196,8,57,250,243,34,242,254,45,230,242,3,30,28,239,232,248,41,15,235,31,233,233,48,3,234,2,13,20,14,254,10,235,247,40,246,28,241,224,41,18,254,224,6,39,17,244,222,0,47,12,223,11,33,246,255,0,243,30,32,235,219,35,12,241,38,253,224,30,34,237,223,25,30,252,2,247,27,252,240,45,247,237,7,17,16,250,222,17,69,230,224,37,7,53,247,198,56,34,215,25,10,238,42,11,238,22,239,31,29,223,12,1,17,6,240,39,225,238,76,244,216,6,33,32,239,241,46,227,20,52,174,4,61,246,12,249,1,56,233,234,38,239,12,56,221,215,33,17,252,7,2,9,0,0,90,0,3,0,5,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,55,14,13,25,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,55,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,35,13,15,25,13,9,7,3,7,7,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,9,0,160,0,240,0,160,5,40,10,199,14,36,19,0,25,0,13,15,25,13,9,7,3,7,7,135,142,160,160,150,175,135,142,160,44,35,30,90,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,55,1,12,0,3,4,5,1,8,248,0,178,140,255,16,1,251,245,245,245,239,226,221,249,31,37,28,33,28,31,38,43,44,49,55,52,43,43,39,41,30,29,23,25,23,21,10,6,10,3,3,0,2,3,11,11,7,240,202,209,221,230,252,13,19,14,250,9,219,164,223,255,242,234,247,246,247,250,247,255,214,197,207,206,226,238,6,14,25,40,51,58,37,11,3,7,8,2,224,231,31,56,68,76,86,82,81,65,53,57,65,34,19,51,54,62,60,41,36,22,12,248,239,235,250,250,254,11,15,28,41,48,45,37,39,24,12,253,0,29,44,54,62,65,67,59,50,40,41,41,30,35,46,55,69,78,73,68,65,56,46,42,30,22,18,18,27,254,233,4,26,27,7,0,240,233,223,213,217,235,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,4,19,0,13,13,5,6,19,14,14,11,10,6,249,248,0,254,11,6,6,4,3,211,167,140,139,164,184,212,239,17,19,2,249,9,15,12,13,20,26,27,27,23,9,1,246,243,2,22,44,52,55,53,50,50,51,58,57,53,50,45,24,10,0,246,1,4,7,255,213,209,197,175,173,188,217,225,220,239,239,223,222,229,234,245,247,251,0,0,3,3,4,5,1,0,0,1,7,9,7,11,16,18,17,22,26,26,29,24,21,21,20,23,12,15,14,11,10,4,253,248,232,227,239,239,239,249,0,8,1,1,6,2,249,251,223,235,1,254,241,235,245,255,249,241,247,0,2,0,250,3,13,9,13,19,24,25,23,17,21,22,16,10,7,7,12,5,3,2,4,8,4,1,0,255,255,254,248,244,245,250,245,244,244,232,227,232,237,236,237,238,242,246,250,253,253,0,9,13,17,17,13,16,18,21,20,14,9,11,12,10,13,12,11,9,4,254,0,253,252,249,233,231,235,229,240,2,2,254,247,245,244,241,242,247,0,7,11,13,19,22,19,14,11,11,7,2,1,5,10,18,19,16,20,12,0,247,246,247,247,249,249,251,251,244,248,250,247,245,236,231,232,232,235,245,254,2,4,5,9,5,254,0,4,12,10,9,12,19,27,32,27,24,19,16,7,5,6,2,254,255,254,248,245,235,228,230,234,237,233,234,233,236,241,252,9,9,4,0,251,242,249,15,22,17,16,18,14,17,23,26,17,6,255,255,247,244,241,244,247,255,255,249,246,255,1,6,9,7,10,10,14,14,12,9,0,0,8,22,37,39,19,255,242,237,236,245,252,252,244,238,240,244,248,250,250,246,1,18,24,4,3,29,33,11,11,15,10,251,241,1,12,255,230,210,207,225,225,221,213,210,225,243,240,245,249,7,15,20,44,38,25,26,28,12,0,14,15,248,0,24,17,12,0,242,227,227,11,7,214,233,255,248,251,2,27,16,2,17,17,3,21,5,233,223,2,24,242,220,244,252,243,4,18,1,231,250,2,234,248,11,13,0,18,66,55,33,40,31,2,224,231,0,2,6,7,250,247,6,238,211,208,247,15,249,231,234,245,15,25,6,245,237,239,243,9,34,61,66,37,5,0,12,2,224,222,22,38,22,22,23,16,16,13,7,2,22,41,28,7,253,238,4,58,77,60,15,224,207,213,254,6,222,218,240,241,220,214,228,220,225,248,18,39,5,214,185,214,0,32,12,243,216,221,242,246,231,243,247,235,199,185,210,211,205,222,245,251,239,245,240,223,242,0,253,13,47,63,47,40,36,19,14,30,7,223,225,238,238,216,221,251,10,2,246,239,12,9,11,19,55,105,106,97,71,39,22,26,25,33,41,73,69,27,238,239,244,9,42,31,11,6,23,11,39,79,44,244,6,57,80,32,253,242,8,18,6,237,203,251,41,6,230,251,229,191,202,228,248,0,7,248,219,245,245,221,200,222,243,212,191,206,5,20,244,186,163,176,186,229,244,219,230,249,251,221,211,195,210,230,248,6,224,221,231,1,12,5,244,226,237,6,4,250,2,9,241,244,29,50,23,0,16,14,1,1,16,14,13,25,32,6,236,254,10,251,242,5,13,0,31,77,72,22,2,16,16,19,29,28,26,57,59,22,242,236,245,248,5,28,53,72,70,40,5,245,248,5,21,34,25,0,2,15,11,253,242,238,245,15,28,16,244,239,243,8,24,1,223,214,243,34,33,240,187,212,14,64,57,19,0,226,218,189,198,239,26,44,12,231,216,223,200,166,189,231,249,243,22,46,254,236,221,226,240,34,27,244,6,64,87,39,49,70,16,229,244,9,5,18,56,59,33,29,0,195,209,231,230,220,243,14,242,241,13,20,0,6,12,0,255,252,17,3,21,5,233,223,2,24,242,220,244,252,243,4,18,1,231,250,2,234,248,11,13,0,18,66,55,33,40,31,2,224,231,0,2,6,7,250,247,6,238,211,208,247,15,249,231,234,245,15,25,6,245,237,239,243,9,34,61,66,37,5,0,12,2,224,222,22,38,22,22,23,16,16,13,7,2,22,41,28,7,253,238,4,58,77,60,15,224,207,213,254,6,222,218,240,241,220,214,228,220,225,248,18,39,5,214,185,214,0,32,12,243,216,221,242,246,231,243,247,235,199,185,210,211,205,222,245,251,239,245,240,223,242,0,253,13,47,63,47,40,36,19,14,30,7,223,225,238,238,216,221,251,10,2,246,239,12,9,11,19,55,105,106,97,71,39,22,26,25,33,41,73,69,27,238,239,244,9,42,31,11,6,23,11,39,79,44,244,6,57,80,32,253,242,8,18,6,237,203,251,41,6,230,251,229,191,202,228,248,0,7,248,219,245,245,221,200,222,243,212,191,206,5,20,244,186,163,176,186,229,244,219,230,249,251,221,211,195,210,230,248,6,224,221,231,1,12,5,244,226,237,6,4,250,2,9,241,244,29,50,23,0,16,14,1,1,16,14,13,25,32,6,236,254,10,251,242,5,13,0,31,77,72,22,2,16,16,19,29,28,26,57,59,22,242,236,245,248,5,28,53,72,70,40,5,245,248,5,21,34,25,0,2,15,11,253,242,238,245,15,28,16,244,239,243,8,24,1,223,214,243,34,33,240,187,212,14,64,57,19,0,226,218,189,198,239,26,44,12,231,216,223,200,166,189,231,249,243,22,46,254,236,221,226,240,34,27,244,6,64,87,39,49,70,16,229,244,9,5,18,56,59,33,29,0,195,209,231,230,220,243,14,242,241,13,20,0,6,12,0,255,252,4,0,18,36,31,26,252,221,182,181,209,192,210,237,23,17,235,180,131,157,210,229,216,219,230,227,248,16,41,20,250,17,33,38,22,0,0,0,63,2,30,0,3,7,4,5,7,0,3,254,217,209,5,49,40,4,238,252,21,22,6,0,8,16,13,3,2,8,10,8,7,6,6,9,13,12,9,7,8,6,5,8,8,8,7,4,5,6,6,6,3,3,6,3,4,4,253,5,8,233,222,2,38,35,246,219,4,48,53,25,216,200,12,40,10,5,20,38,40,1,237,8,31,36,26,6,7,19,8,232,212,223,249,11,10,0,9,23,10,12,19,252,246,2,0,9,10,253,10,11,246,1,16,24,33,1,240,12,10,3,13,242,235,14,13,2,11,254,244,13,29,23,6,245,0,30,25,2,253,248,246,6,8,252,2,10,9,12,1,249,13,28,23,17,3,1,20,23,16,19,15,16,22,8,3,16,243,209,245,29,21,12,8,6,13,0,253,23,15,0,15,5,253,15,8,0,4,247,0,12,252,1,14,7,9,0,249,13,13,4,3,246,255,16,7,4,2,2,17,254,247,22,6,245,9,0,0,15,253,8,24,250,254,21,15,10,246,249,35,11,233,15,22,4,26,13,242,5,19,3,253,0,4,14,19,5,255,8,3,0,7,247,0,31,248,227,24,15,236,22,27,225,243,40,14,227,252,32,14,242,244,9,17,252,249,18,11,1,2,233,0,44,254,232,21,9,4,23,240,241,20,3,9,15,253,18,2,232,25,16,240,22,2,243,41,9,229,18,7,252,30,7,235,240,0,23,0,236,13,0,240,12,251,243,22,255,238,16,12,7,35,16,240,6,27,8,10,31,23,5,253,1,21,24,13,3,248,14,35,14,9,241,229,48,33,220,19,12,231,48,10,220,51,0,208,58,22,200,255,31,39,11,221,13,29,1,20,245,253,47,246,241,27,243,1,19,0,37,247,209,44,32,239,18,7,15,30,234,255,36,7,249,236,9,44,249,244,18,7,19,249,246,42,239,230,46,6,14,35,216,11,39,226,31,14,205,53,35,205,15,21,248,16,10,19,252,243,36,248,13,66,183,216,118,4,212,27,228,16,64,235,242,248,228,20,11,23,30,195,249,72,250,248,0,221,33,39,247,20,252,236,26,20,21,13,232,3,28,26,8,208,248,58,0,220,222,237,65,33,183,4,96,26,192,224,99,91,197,210,61,30,234,250,7,254,244,252,20,41,5,222,36,65,228,231,25,3,25,24,252,32,238,192,42,54,222,225,14,43,3,219,27,26,228,19,21,254,22,231,220,26,18,8,19,28,31,224,248,59,227,243,53,202,21,126,193,181,65,22,40,30,177,253,47,240,5,240,247,51,216,210,53,241,227,47,255,243,0,191,4,21,0,219,229,3,19,255,1,253,238,240,255,11,255,208,218,22,67,15,200,201,255,40,29,223,234,62,56,20,217,220,255,20,18,38,11,209,222,6,56,28,232,29,32,24,239,191,255,32,13,241,204,241,19,237,210,230,232,233,49,50,234,189,201,35,55,228,191,206,254,35,236,225,8,23,0,211,236,24,61,33,232,235,17,63,26,247,2,245,32,17,49,10,236,30,48,36,1,243,5,19,25,244,241,10,34,16,2,246,239,28,26,0,253,1,242,239,246,3,10,0,242,215,0,30,10,5,249,239,227,237,239,6,238,15,47,10,247,232,7,4,239,251,24,8,251,218,206,17,11,210,214,255,21,19,27,8,254,251,17,246,253,13,10,0,8,248,248,0,244,244,0,40,27,249,235,1,23,239,222,242,12,37,255,216,237,25,28,0,254,5,254,244,236,2,37,11,233,0,0,253,6,244,255,28,24,218,233,238,234,0,3,1,14,13,5,248,7,244,237,2,35,11,239,242,18,25,4,249,251,23,27,236,236,4,5,2,246,235,253,243,240,249,254,2,18,47,14,246,252,14,29,6,222,239,15,32,30,10,226,237,3,26,31,232,247,2,231,12,19,10,0,220,241,31,7,18,1,243,243,10,30,2,228,221,255,4,252,233,4,16,242,15,249,5,17,1,25,33,243,230,226,0,26,7,212,241,247,243,33,25,2,0,14,26,244,227,247,5,228,228,3,30,23,17,208,180,236,38,32,240,230,254,11,5,254,237,225,8,35,60,229,212,21,28,35,17,248,212,208,0,39,29,227,204,215,3,45,35,4,6,7,14,1,4,253,251,17,42,46,236,247,0,2,14,14,6,0,245,208,249,14,17,14,233,239,20,250,245,4,9,28,233,5,62,23,233,199,247,48,24,239,207,13,27,245,237,239,237,247,20,20,241,242,14,8,251,214,203,5,77,5,229,233,239,36,58,10,7,12,237,244,16,25,2,251,1,24,3,224,252,27,21,250,228,242,44,57,30,226,170,8,58,28,209,249,7,4,21,241,202,0,7,251,207,252,1,233,7,5,17,36,253,232,219,3,55,65,224,209,243,0,251,2,25,15,11,218,217,17,15,13,9,0,229,228,7,6,254,241,6,42,246,187,213,245,36,27,3,233,213,245,11,19,254,0,12,244,243,17,21,252,246,19,18,26,254,229,235,35,68,21,230,216,252,33,32,18,242,247,13,21,8,250,8,20,247,247,18,21,230,238,42,16,7,249,0,9,0,9,24,23,234,10,40,15,0,233,0,25,0,228,7,13,253,24,24,221,199,244,20,228,205,1,48,26,208,219,7,13,237,255,27,27,223,185,197,27,0,229,230,216,240,37,42,247,225,200,36,70,23,248,1,42,229,204,3,18,29,11,226,246,17,15,12,20,22,21,0,205,224,253,43,63,32,209,201,235,0,38,13,255,189,221,25,20,255,238,235,255,27,20,238,234,6,248,12,19,239,242,33,30,15,230,246,15,22,26,16,12,0,252,11,31,20,244,247,40,45,6,221,225,40,29,240,190,194,18,54,254,210,219,249,27,13,230,225,220,254,61,43,223,197,202,0,79,48,243,203,205,40,96,43,230,192,246,47,40,2,235,205,6,66,9,209,203,230,45,44,255,241,211,221,22,63,54,1,205,207,35,67,36,21,252,233,19,34,46,255,199,1,88,67,215,135,235,72,62,252,176,231,1,12,0,233,222,239,27,249,219,228,255,8,231,206,224,14,26,24,10,253,217,203,205,39,83,42,237,162,237,50,11,2,242,39,240,237,245,254,8,254,11,235,201,246,17,241,27,33,21,25,236,228,12,49,64,34,0,207,18,56,16,231,243,16,9,255,235,20,53,27,226,200,180,3,68,22,5,215,249,17,255,7,250,13,8,4,41,33,232,224,6,15,255,234,220,252,40,35,254,187,199,232,34,51,248,233,220,232,55,0,216,1,27,27,251,220,213,250,47,50,8,201,195,11,25,11,3,11,29,14,230,2,45,47,24,19,247,215,216,25,47,7,219,227,7,32,30,15,23,255,226,208,233,23,2,243,250,2,2,211,198,234,2,50,27,206,196,232,9,13,13,250,244,231,244,241,5,16,1,242,10,4,239,240,21,41,23,219,227,50,37,15,251,2,22,5,3,184,227,91,45,20,245,234,235,241,15,22,251,253,245,32,18,233,215,246,34,51,29,13,237,19,58,19,241,3,18,250,11,32,37,8,247,2,11,235,211,216,17,99,20,224,200,217,252,231,252,19,3,244,246,17,34,8,219,240,3,234,248,254,3,7,23,25,243,226,251,21,47,15,242,246,26,35,14,204,178,242,29,10,19,25,12,233,240,238,242,249,14,240,215,248,4,15,21,247,247,8,5,250,254,2,254,253,2,237,233,19,36,16,249,251,34,28,245,237,244,16,39,10,251,244,244,13,12,225,212,224,29,9,239,244,0,1,11,12,7,252,248,7,0,249,224,217,239,14,24,6,225,175,190,0,26,11,3,243,253,249,11,31,27,243,228,29,32,5,0,243,252,10,52,37,239,195,251,74,46,4,211,167,32,119,72,12,212,210,2,19,12,33,53,19,11,3,223,239,9,18,31,8,223,207,246,13,17,16,244,230,230,30,46,15,249,224,250,20,6,238,239,18,24,20,1,221,196,241,25,39,38,4,230,225,34,29,237,204,236,16,50,47,240,177,207,14,26,22,229,196,247,1,251,0,229,243,12,10,0,46,3,31,0,14,38,18,32,39,17,243,10,31,23,4,9,21,31,17,8,19,34,19,38,9,255,18,33,29,22,31,239,6,20,17,41,17,5,6,16,45,17,5,36,34,7,5,37,42,25,1,14,15,21,252,6,22,31,35,0,3,250,45,32,24,24,245,16,27,23,48,38,15,249,250,25,9,250,24,16,39,16,24,27,39,31,232,29,33,30,24,14,9,26,0,0,21,38,26,23,23,4,1,36,8,16,25,250,6,13,57,7,240,10,35,28,27,30,21,28,16,42,23,3,19,13,37,18,19,37,63,9,0,42,55,53,231,15,63,55,15,1,24,253,40,32,40,6,31,27,250,10,25,34,13,9,31,19,15,20,30,10,15,3,60,43,224,0,45,53,18,5,40,19,252,27,10,12,49,22,242,252,44,18,45,14,2,233,37,36,242,7,37,19,3,24,30,1,5,58,3,252,8,29,40,15,11,14,3,255,0,37,36,11,245,17,55,249,255,25,48,21,252,18,48,23,237,235,34,38,235,240,39,36,16,23,21,1,15,20,26,44,1,19,23,10,46,33,221,229,36,32,241,254,1,12,39,56,60,251,8,19,248,34,26,21,16,19,17,14,20,249,28,18,21,29,242,239,35,47,53,25,234,34,47,255,15,45,32,15,27,3,249,12,46,36,22,41,47,222,238,62,42,11,228,11,55,29,221,5,73,31,13,20,248,252,5,42,59,15,27,14,31,10,244,48,51,33,245,11,31,253,252,9,48,18,217,242,21,53,84,25,218,33,34,39,26,21,28,1,29,4,238,12,249,32,50,0,230,36,35,10,245,225,2,75,65,2,0,246,48,45,241,235,14,34,51,45,4,224,6,15,90,23,190,33,93,28,61,28,241,183,15,47,30,12,243,240,2,89,65,216,221,22,58,65,8,234,6,30,10,21,68,242,202,60,42,3,245,176,6,45,64,25,229,222,32,47,16,238,223,65,50,241,236,27,81,252,57,64,7,235,253,22,46,23,252,0,55,61,8,255,215,255,49,85,23,206,253,10,237,71,230,201,41,49,47,25,225,208,65,66,251,246,6,69,41,20,21,245,242,27,49,4,38,52,1,220,2,48,221,248,6,11,46,55,199,208,34,16,45,29,177,41,84,33,254,8,216,55,66,22,248,208,4,63,33,21,4,253,251,28,11,37,84,42,21,239,188,44,51,31,29,41,9,219,1,243,38,108,191,254,62,242,239,60,12,13,71,11,215,32,74,1,238,55,53,248,225,227,88,112,0,57,11,217,36,4,25,55,38,44,9,3,57,81,18,247,233,63,8,9,43,52,12,21,32,22,48,44,253,9,60,56,50,30,2,211,26,78,75,43,3,13,46,255,250,57,228,211,52,82,255,233,50,200,232,66,107,252,12,10,50,22,242,23,12,14,18,47,25,2,3,32,53,39,15,228,47,9,13,17,46,241,234,59,16,233,20,20,50,250,92,17,218,253,248,243,58,7,201,20,232,221,9,87,96,3,225,242,250,14,13,0,20,64,9,13,231,238,63,49,36,253,209,207,254,70,40,30,252,131,206,66,21,51,26,241,28,17,242,255,248,61,42,233,20,77,46,222,188,25,98,85,55,243,8,16,249,7,60,43,48,55,8,185,223,76,249,14,23,11,253,66,39,255,235,7,37,5,41,18,42,232,251,38,92,50,192,2,1,245,5,53,87,9,250,236,245,22,36,213,236,62,109,71,243,224,253,80,101,248,232,57,71,38,255,254,34,48,232,240,91,78,171,193,43,91,49,246,221,250,235,61,84,227,223,4,14,27,29,198,238,31,8,82,2,184,50,42,251,254,30,33,63,39,234,234,0,0,254,6,35,0,0,0,1,2,1,0,0,1,1,0,0,0,253,251,250,247,243,240,239,242,249,2,5,11,15,18,17,20,19,14,11,1,235,224,232,234,223,235,0,253,250,14,25,21,24,26,22,20,11,254,253,249,235,232,240,241,240,249,255,7,12,19,21,26,21,14,15,6,0,248,250,241,241,245,244,246,255,6,8,14,20,15,13,16,11,5,2,239,210,214,230,219,220,244,246,245,12,25,26,37,33,22,26,15,254,250,250,236,236,243,241,245,249,4,17,26,23,25,39,27,12,16,9,242,214,192,208,228,222,206,235,251,237,5,34,46,41,40,38,36,28,1,255,4,242,227,240,252,241,241,7,19,17,24,28,32,23,18,10,9,253,234,243,242,235,243,27,52,245,4,31,44,247,28,43,245,246,241,235,219,210,203,210,238,241,7,38,22,48,61,51,24,252,228,200,200,173,166,202,221,210,248,27,49,35,67,63,40,14,245,232,189,174,162,179,174,189,226,8,30,55,92,86,75,72,54,22,0,253,224,204,207,193,211,227,17,26,56,76,84,83,72,63,44,11,248,248,224,212,215,229,221,241,6,4,23,27,32,39,13,254,2,248,212,199,208,165,183,203,200,221,25,61,46,65,85,60,33,44,0,185,182,194,158,159,224,222,0,46,64,73,111,120,86,86,67,17,248,226,206,181,183,198,217,242,2,29,46,48,45,45,24,243,205,180,153,131,148,158,168,192,231,15,49,86,95,104,105,94,69,48,23,255,234,215,211,207,210,221,242,8,31,66,70,79,88,68,48,25,5,239,220,197,201,203,205,221,254,1,14,36,42,34,31,27,1,241,244,219,199,208,213,203,220,1,0,3,38,39,28,27,36,13,0,241,229,222,224,236,238,242,247,3,1,0,4,249,235,238,239,233,241,248,0,2,22,45,53,48,42,33,24,35,2,249,254,243,211,237,247,224,250,10,10,253,14,6,14,14,9,0,1,248,238,248,251,244,231,232,234,2,0,249,4,11,7,8,21,19,13,18,11,242,238,246,252,245,239,241,0,2,2,0,3,12,5,7,2,6,2,13,6,238,242,4,13,0,247,7,16,20,12,11,12,28,38,23,13,12,6,247,244,225,219,217,230,223,233,0,5,8,20,17,15,19,23,1,12,32,33,19,18,13,238,252,253,239,235,252,225,205,237,229,216,253,250,235,231,249,227,234,253,248,238,246,253,0,6,27,33,51,52,40,33,56,47,42,32,27,3,6,19,248,235,230,221,216,226,231,216,228,240,222,234,254,250,232,234,233,221,221,232,230,236,247,7,2,248,2,13,23,30,33,26,28,39,46,52,51,46,44,34,22,27,26,2,10,3,241,233,252,253,245,4,15,0,5,10,9,235,238,234,215,212,219,203,200,223,239,238,14,29,1,10,20,17,5,252,252,236,238,231,255,234,233,241,244,247,9,22,25,22,31,24,29,20,17,8,4,255,254,22,15,247,240,239,0,2,17,28,32,28,14,10,5,11,253,251,1,0,9,29,23,3,5,1,250,246,252,234,238,2,243,240,247,0,253,2,245,237,243,0,5,13,14,30,42,16,5,5,12,246,255,234,208,212,232,241,1,2,251,237,232,212,221,198,176,178,186,199,229,248,0,23,44,65,72,78,67,47,22,7,1,253,253,4,30,22,28,59,70,48,56,64,19,3,236,180,155,162,154,138,159,183,203,242,22,57,66,64,67,55,42,28,35,0,232,245,0,235,9,39,29,37,79,81,56,65,35,231,212,213,200,181,192,181,184,208,239,4,34,56,55,56,63,38,22,14,239,221,219,246,248,17,20,30,29,22,25,20,10,5,5,252,252,255,238,235,250,243,1,246,222,234,253,247,238,241,246,239,254,241,241,15,29,25,4,24,6,255,245,222,213,242,15,4,1,26,38,45,34,16,5,3,12,242,221,224,218,203,206,202,215,247,5,6,253,27,28,44,26,6,10,1,232,212,214,220,238,17,23,30,67,42,19,7,247,206,211,227,181,181,214,202,209,241,10,3,36,61,42,47,50,13,250,243,226,220,225,217,214,5,34,41,72,84,81,65,58,43,19,21,247,226,231,235,236,242,11,11,22,43,31,20,18,15,234,207,212,190,198,222,208,208,241,9,243,24,45,50,65,76,58,40,39,28,255,249,249,238,232,235,245,5,20,30,27,21,33,32,21,247,226,204,194,184,181,175,177,197,222,222,234,12,30,37,48,58,43,48,41,10,233,233,220,206,233,240,237,252,30,27,66,80,71,53,61,19,245,246,231,198,215,206,176,200,249,240,252,34,30,29,37,33,29,29,15,241,227,210,212,214,232,248,2,21,35,50,53,69,48,49,22,5,0,251,221,226,224,232,232,3,241,254,36,18,21,23,16,236,245,238,207,222,237,198,223,253,4,4,13,17,254,15,3,246,251,250,235,212,223,243,247,5,0,5,19,33,54,43,44,26,12,240,227,221,237,238,230,215,252,14,14,7,5,10,4,5,237,232,0,15,15,248,242,254,4,245,249,0,7,14,18,250,0,23,19,6,12,19,24,21,15,2,250,251,248,244,242,244,0,246,237,221,250,242,236,240,238,227,239,7,2,10,39,43,30,39,44,20,22,17,16,6,35,23,3,253,14,9,7,14,13,3,9,24,251,227,249,252,210,217,244,226,227,245,232,226,11,6,244,251,17,9,17,11,9,255,1,248,249,249,14,19,4,0,14,13,14,30,19,255,255,247,237,238,238,243,249,250,5,7,27,23,16,17,30,6,7,4,236,233,248,226,199,231,251,247,12,29,255,254,26,10,243,254,250,210,219,224,223,231,250,244,246,6,9,250,254,4,11,9,0,255,246,249,10,12,0,26,40,19,4,27,11,0,4,237,217,244,16,253,244,3,1,250,1,2,250,9,20,2,225,235,14,10,251,9,251,254,20,23,3,18,35,29,20,15,19,20,21,19,248,232,8,254,247,247,242,237,253,10,240,245,236,235,248,236,239,239,221,240,244,242,242,8,3,3,11,22,26,30,23,28,0,17,24,246,251,1,1,240,5,239,236,24,36,27,253,24,16,249,253,243,217,244,3,212,185,220,239,238,238,249,241,253,32,31,6,21,40,19,23,33,26,13,20,14,23,35,41,22,5,22,18,27,12,250,251,254,243,224,229,226,248,244,236,239,255,8,28,15,2,18,24,16,27,15,236,254,255,249,0,254,3,4,33,22,42,31,29,23,18,4,246,237,208,234,229,226,216,242,251,253,249,15,4,16,13,254,248,1,26,235,230,248,251,231,248,254,11,18,28,232,248,20,6,243,229,246,241,244,238,228,228,1,4,235,225,246,248,235,245,9,235,231,0,1,245,17,8,247,11,36,22,249,7,19,1,248,19,241,242,2,251,216,244,8,5,255,4,11,249,8,20,13,255,7,240,238,246,252,245,229,240,252,243,1,24,12,253,37,29,1,1,18,250,250,8,249,244,7,10,255,15,44,35,21,33,37,15,8,0,234,244,253,234,209,222,222,252,249,255,253,10,252,9,2,4,253,1,250,238,251,229,3,254,20,0,11,3,24,33,21,7,11,20,23,22,0,6,253,249,238,235,247,241,232,221,243,247,240,234,242,254,2,226,232,0,15,23,250,244,255,22,20,0,9,27,38,3,2,255,15,20,11,233,228,237,251,231,218,228,248,0,8,250,251,28,30,21,15,0,18,28,2,251,232,229,248,13,240,229,234,246,17,17,250,241,17,37,27,245,232,244,17,14,240,226,245,19,37,16,244,10,28,35,30,14,14,20,24,6,10,0,5,9,9,11,4,0,23,8,9,19,4,4,27,12,242,0,0,231,255,234,253,238,245,241,246,9,5,254,1,9,251,6,0,2,0,2,228,249,234,238,0,2,0,19,39,27,27,36,51,32,22,12,253,5,252,221,234,248,249,3,4,252,39,34,9,22,44,33,30,255,226,14,12,245,225,235,253,0,2,4,11,0,17,18,253,248,241,223,247,235,224,224,230,211,239,253,241,0,10,245,241,0,249,244,250,0,0,170,7,51,0,21,242,238,36,3,9,1,243,53,29,200,245,43,246,25,1,188,17,48,233,0,7,240,28,12,233,10,17,0,250,17,31,237,219,30,38,12,249,237,0,38,249,9,12,224,60,17,164,60,69,186,246,2,12,106,244,132,46,76,41,222,179,29,40,30,238,186,37,78,238,227,0,40,33,7,250,249,21,27,237,8,47,202,26,57,239,25,236,237,60,21,231,223,21,81,219,184,42,30,0,25,255,224,15,38,250,232,250,0,32,7,228,22,9,244,2,23,255,230,20,17,255,249,243,37,42,244,226,0,25,5,245,12,12,242,15,41,228,203,64,67,199,241,34,10,22,238,231,33,13,250,243,235,40,21,193,10,46,244,242,253,24,40,251,232,244,35,50,223,212,37,47,229,232,14,252,39,22,231,0,48,2,226,27,35,233,2,24,12,1,209,37,53,221,246,27,10,27,253,252,15,250,2,6,5,50,247,212,26,37,1,239,244,44,30,236,7,247,30,34,228,242,4,45,0,197,22,59,255,233,254,1,23,24,240,237,47,20,242,236,32,21,237,35,4,209,13,62,3,229,15,253,10,20,235,2,39,224,255,38,243,8,244,227,73,17,203,11,38,243,6,2,255,35,246,10,246,242,61,235,206,61,254,232,39,248,246,42,13,226,253,37,13,5,9,237,24,47,227,237,51,19,232,18,7,238,27,17,235,8,14,228,21,11,236,37,2,243,12,9,8,27,0,231,3,22,253,229,38,1,221,31,13,251,8,248,17,255,250,32,5,14,30,232,246,50,0,241,23,230,28,24,208,32,55,217,214,74,45,182,1,59,19,246,233,25,4,6,7,214,40,29,241,252,0,16,21,16,218,14,61,242,245,7,0,43,12,235,10,3,6,30,240,245,49,243,219,16,66,11,175,2,101,238,236,10,212,50,100,166,173,111,43,204,232,10,50,1,225,11,20,4,254,243,8,35,235,220,17,22,241,242,34,6,243,6,248,243,44,0,230,6,15,238,0,9,0,35,235,234,51,249,218,23,11,7,250,223,24,33,7,228,230,58,27,201,15,25,248,31,27,218,212,78,56,189,200,68,66,221,212,253,34,62,218,221,32,13,6,7,7,8,14,251,6,23,30,210,250,62,19,230,227,29,29,252,245,60,246,173,65,92,206,232,54,17,230,36,27,194,14,52,208,250,50,244,197,38,59,212,253,12,7,5,249,239,28,10,0,227,0,70,241,226,27,21,12,225,241,27,18,3,226,7,33,223,1,34,11,7,224,14,56,248,220,33,10,247,247,247,42,228,208,44,51,239,237,245,22,56,202,245,54,241,1,2,245,43,251,220,18,29,246,232,33,31,236,233,6,57,5,221,250,0,32,22,200,35,54,217,10,2,233,60,35,211,0,27,26,253,228,0,35,36,254,208,4,81,223,228,58,252,236,29,231,16,50,212,245,17,33,30,191,245,72,20,237,240,243,43,27,252,3,252,249,18,48,250,247,32,252,232,42,11,210,39,53,250,196,8,57,250,243,34,242,254,45,230,242,3,30,28,239,232,248,41,15,235,31,233,233,48,3,234,2,13,20,14,254,10,235,247,40,246,28,241,224,41,18,254,224,6,39,17,244,222,0,47,12,223,11,33,246,255,0,243,30,32,235,219,35,12,241,38,253,224,30,34,237,223,25,30,252,2,247,27,252,240,45,247,237,7,17,16,250,222,17,69,230,224,37,7,53,247,198,56,34,215,25,10,238,42,11,238,22,239,31,29,223,12,1,17,6,240,39,225,238,76,244,216,6,33,32,239,241,46,227,20,52,174,4,61,246,12,249,1,56,233,234,38,239,12,56,221,215,33,17,252,7,2,9,6,233,251,44,21,222,219,35,42,215,255,7,6,40,0,188,15,76,245,193,29,25,23,8,182,44,68,240,236,240,53,10,225,18,13,11,247,16,19,2,239,204,71,69,188,229,30,35,0,2,14,236,15,32,228,249,49,3,218,5,31,2,0,11,23,237,4,46,204,233,66,250,217,22,41,2,225,27,47,234,252,10,16,32,207,1,42,242,20,254,219,33,33,214,18,53,242,10,6,234,30,19,235,9,42,242,224,32,0,243,16,251,11,23,244,253,40,252,250,35,247,246,16,251,23,249,239,13,237,22,0,0,26,243,1,33,231,9,46,235,245,9,30,30,186,244,60,27,7,219,251,54,24,255,232,20,58,246,195,11,40,18,2,200,0,60,42,225,219,32,32,4,232,254,5,13,37,225,247,42,255,227,19,10,230,5,26,236,255,19,8,10,21,242,238,36,3,9,1,243,53,29,200,245,43,246,25,1,188,17,48,233,0,7,240,28,12,233,10,17,0,250,17,31,237,219,30,38,12,249,237,0,38,249,9,12,224,60,17,164,60,69,186,246,2,12,106,244,132,46,76,41,222,179,29,40,30,238,186,37,78,238,227,0,40,33,7,250,249,21,27,237,8,47,202,26,57,239,25,236,237,60,21,231,223,21,81,219,184,42,30,0,25,255,224,15,38,250,232,250,0,32,7,228,22,9,244,2,23,255,230,20,17,255,249,243,37,42,244,226,0,25,5,245,12,12,242,15,41,228,203,64,67,199,241,34,10,22,238,231,33,13,250,243,235,40,21,193,10,46,244,242,253,24,40,251,232,244,35,50,223,212,37,47,229,232,14,252,39,22,231,0,48,2,226,27,35,233,2,24,12,1,209,37,53,221,246,27,10,27,253,252,15,250,2,6,5,50,247,212,26,37,1,239,244,44,30,236,7,247,30,34,228,242,4,45,0,197,22,59,255,233,254,1,23,24,240,237,47,20,242,236,32,21,237,35,4,209,13,62,3,229,15,253,10,20,235,2,39,224,255,38,243,8,244,227,73,17,203,11,38,243,6,2,255,35,246,10,246,242,61,235,206,61,254,232,39,248,246,42,13,226,253,37,13,5,9,237,24,47,227,237,51,19,232,18,7,238,27,17,235,8,14,228,21,11,236,37,2,243,12,9,8,27,0,231,3,22,253,229,38,1,221,31,13,251,8,248,17,255,250,32,5,14,30,232,246,50,0,241,23,230,28,24,208,32,55,217,214,74,45,182,1,59,19,246,233,25,4,6,7,214,40,29,241,252,0,16,21,16,218,14,61,242,245,7,0,43,12,235,10,3,6,30,240,245,49,243,219,16,66,11,175,2,101,238,236,10,212,50,100,166,173,111,43,204,232,10,50,1,225,11,20,4,254,243,8,35,235,220,17,22,241,242,34,6,243,6,248,243,44,0,230,6,15,238,0,9,0,35,235,234,51,249,218,23,11,7,250,223,24,33,7,228,230,58,27,201,15,25,248,31,27,218,212,78,56,189,200,68,66,221,212,253,34,62,218,221,32,13,6,7,7,8,14,251,6,23,30,210,250,62,19,230,227,29,29,252,245,60,246,173,65,92,206,232,54,17,230,36,27,194,14,52,208,250,50,244,197,38,59,212,253,12,7,5,249,239,28,10,0,227,0,70,241,226,27,21,12,225,241,27,18,3,226,7,33,223,1,34,11,7,224,14,56,248,220,33,10,247,247,247,42,228,208,44,51,239,237,245,22,56,202,245,54,241,1,2,245,43,251,220,18,29,246,232,33,31,236,233,6,57,5,221,250,0,32,22,200,35,54,217,10,2,233,60,35,211,0,27,26,253,228,0,35,36,254,208,4,81,223,228,58,252,236,29,231,16,50,212,245,17,33,30,191,245,72,20,237,240,243,43,27,252,3,252,249,18,48,250,247,32,252,232,42,11,210,39,53,250,196,8,57,250,243,34,242,254,45,230,242,3,30,28,239,232,248,41,15,235,31,233,233,48,3,234,2,13,20,14,254,10,235,247,40,246,28,241,224,41,18,254,224,6,39,17,244,222,0,47,12,223,11,33,246,255,0,243,30,32,235,219,35,12,241,38,253,224,30,34,237,223,25,30,252,2,247,27,252,240,45,247,237,7,17,16,250,222,17,69,230,224,37,7,53,247,198,56,34,215,25,10,238,42,11,238,22,239,31,29,223,12,1,17,6,240,39,225,238,76,244,216,6,33,32,239,241,46,227,20,52,174,4,61,246,12,249,1,56,233,234,38,239,12,56,221,215,33,17,252,7,2,9,6,233,251,44,21,222,219,35,42,215,255,7,6,40,0,188,15,76,245,193,29,25,23,8,182,44,68,240,236,240,53,10,225,18,13,11,247,16,19,2,239,204,71,69,188,229,30,35,0,2,14,236,15,32,228,249,49,3,218,5,31,2,0,11,23,237,4,46,204,233,66,250,217,22,41,2,225,27,47,234,252,10,16,32,207,1,42,242,20,254,219,33,33,214,18,53,242,10,6,234,30,19,235,9,42,242,224,32,0,243,16,251,11,23,244,253,40,252,250,35,247,246,16,251,23,249,239,13,0,0,150,0,4,0,1,0,224,0,248,2,140,5,60,10,20,13,175,14,117,27,50,43,29,57,48,41,35,29,12,3,196,162,200,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,224,0,248,2,140,5,40,10,20,13,175,14,117,27,60,67,36,71,61,52,44,37,15,4,196,162,200,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,248,2,120,5,40,10,20,13,175,14,117,27,40,55,33,64,55,40,36,33,14,4,196,162,200,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,208,0,224,2,100,5,236,9,1,13,155,14,105,27,0,33,26,52,37,27,24,24,11,3,192,158,201,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,240,0,128,3,160,5,150,10,164,13,45,15,195,27,45,45,31,64,57,40,30,20,9,4,235,162,134,132,120,120,247,170,165,44,65,70,130,55,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,128,3,160,5,150,10,164,13,45,15,195,27,50,82,42,87,77,54,41,27,12,5,235,162,134,132,120,120,247,170,165,44,65,70,130,55,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,128,3,160,5,150,10,164,13,45,15,195,27,80,67,37,78,69,48,37,24,11,5,235,162,134,132,120,120,247,170,165,44,65,70,130,55,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,128,3,160,5,150,10,164,13,45,15,195,27,0,37,28,58,52,36,27,18,8,3,235,162,134,132,120,120,247,170,165,44,65,70,130,55,0,0,0,0,45,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,5,0,1,0,240,0,200,2,224,6,176,9,112,13,10,15,96,27,44,46,34,65,59,56,38,23,6,8,165,135,240,120,120,120,195,105,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,208,2,224,6,116,9,112,13,60,15,96,27,77,68,36,76,79,74,40,24,8,6,170,120,180,120,120,120,200,120,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,192,2,202,6,116,9,72,13,60,15,96,27,77,53,29,62,71,62,56,25,13,6,167,120,180,120,120,120,242,150,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,160,2,114,6,196,9,172,13,60,15,96,28,35,38,27,56,50,49,42,26,10,7,167,120,180,120,120,120,242,150,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,240,0,160,2,26,6,216,9,172,13,60,15,96,28,0,33,26,55,45,42,36,22,7,9,167,105,180,120,120,120,242,135,150,44,45,70,130,56,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,215,0,5,0,1,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,50,54,22,57,64,38,35,20,14,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,90,82,28,70,78,46,43,24,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,45,74,26,66,74,44,41,23,16,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,176,1,56,3,216,9,194,11,151,14,244,26,30,45,20,54,57,34,31,18,13,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,153,0,176,1,56,3,216,9,194,11,151,14,244,26,0,36,18,49,52,31,28,16,11,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,185,0,4,0,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,45,56,25,59,71,35,34,19,12,5,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,80,106,34,81,98,48,46,27,17,7,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,60,95,33,77,93,46,44,25,16,7,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,0,51,24,56,68,33,32,18,12,5,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,45,39,2,67,43,20,20,26,8,7,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,70,66,3,87,57,26,26,34,11,9,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,60,59,3,83,54,25,25,32,10,9,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,0,37,2,65,42,19,19,25,8,7,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,110,0,4,0,1,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,50,51,26,61,52,32,29,20,14,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,60,78,32,75,64,39,36,25,18,9,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,60,67,30,71,57,37,33,23,16,8,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,138,1,212,3,56,9,224,11,136,14,144,26,0,31,21,46,40,33,29,18,13,5,162,133,155,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,50,0,5,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,34,17,54,37,31,34,31,8,11,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,50,59,22,71,47,41,45,41,11,15,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,85,54,21,68,46,39,43,39,10,14,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,40,42,19,60,41,35,38,35,9,12,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,0,29,15,50,34,29,31,29,7,10,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,200,0,4,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,50,49,28,59,69,41,43,30,17,6,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,70,71,34,71,83,49,52,37,20,8,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,80,64,32,68,79,47,49,35,19,7,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,121,0,207,1,240,5,96,9,220,12,220,14,95,27,0,39,26,53,62,37,39,27,15,5,170,136,135,122,123,126,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,235,0,79,3,103,5,206,9,184,12,181,14,193,27,45,63,28,63,72,41,41,26,10,5,233,132,198,126,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,235,0,79,3,103,5,206,9,184,12,181,14,193,27,60,108,37,83,94,54,54,35,13,6,233,132,198,126,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,220,0,42,3,252,4,36,9,128,12,41,14,224,27,41,66,32,59,75,41,52,32,12,7,167,120,210,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,211,0,97,2,24,4,39,9,164,12,137,14,93,27,40,64,23,64,64,33,41,32,13,7,181,134,172,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,201,0,152,1,52,3,43,9,201,12,233,14,217,26,60,51,15,65,51,24,29,31,12,7,195,149,134,120,120,120,141,120,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,104,1,32,3,56,9,12,13,60,15,144,26,0,35,9,58,40,21,21,27,12,7,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,240,0,5,0,1,0,200,0,204,1,137,7,208,9,208,12,69,14,104,28,45,29,21,46,46,49,37,28,9,6,184,108,128,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,204,1,137,7,208,9,208,12,69,14,104,28,50,84,36,79,78,83,63,48,15,11,184,108,128,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,198,0,192,1,44,7,195,9,213,12,91,14,62,28,75,71,31,76,61,74,57,44,14,10,183,109,149,120,120,120,185,107,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,178,0,71,1,179,3,63,9,9,13,48,15,166,26,70,42,4,71,37,23,22,30,12,7,178,124,103,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,178,0,71,1,179,3,63,9,9,13,48,15,166,26,0,30,3,60,31,19,18,25,10,6,178,124,103,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,255,0,6,0,33,0,152,0,32,1,224,8,4,11,52,13,0,15,160,26,45,45,6,66,59,59,60,29,14,6,175,105,120,120,120,120,175,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,40,65,9,78,70,70,71,34,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,24,1,172,8,240,10,32,13,0,15,160,26,50,64,9,78,64,70,71,34,16,8,167,105,130,120,120,120,167,90,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,158,0,48,1,168,7,140,10,240,12,232,14,194,26,80,50,12,70,44,58,57,29,15,7,166,109,158,120,120,120,167,90,158,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,72,1,16,4,36,9,224,11,136,14,244,26,40,29,19,45,31,26,24,16,12,6,162,127,175,120,120,120,162,127,190,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,72,1,189,3,92,8,204,11,141,14,88,27,0,30,21,52,36,20,14,11,8,7,155,105,97,120,120,120,110,105,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,215,0,5,0,1,0,232,0,144,3,40,5,180,10,212,13,100,15,102,27,45,57,32,62,59,39,37,22,9,3,255,170,163,145,120,120,255,174,173,44,60,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,232,0,144,3,40,5,180,10,212,13,100,15,102,27,50,99,42,82,78,52,49,29,13,4,255,170,163,145,120,120,255,174,173,44,60,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,225,0,72,3,138,5,220,10,212,13,80,15,120,27,60,66,39,73,57,49,46,28,12,5,247,162,178,142,120,120,255,174,190,44,55,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,104,1,152,8,4,11,172,13,60,15,32,28,60,30,30,47,48,44,40,32,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,104,1,152,8,4,11,112,13,20,15,32,28,0,26,27,43,44,40,37,29,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,245,0,5,0,1,0,200,0,208,1,188,7,216,9,248,12,66,14,128,28,45,29,21,47,46,50,38,29,8,6,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,208,1,188,7,216,9,248,12,66,14,128,28,70,85,36,79,79,85,65,49,15,11,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,196,0,200,1,210,7,234,9,8,13,76,14,119,28,60,72,33,73,72,78,59,45,13,10,183,105,134,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,88,1,172,8,140,10,152,13,166,14,32,28,70,45,33,56,50,60,46,33,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,72,1,232,8,160,10,92,13,10,15,32,28,0,24,18,44,44,40,37,29,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,20,0,6,0,1,0,56,1,168,2,8,7,136,9,32,13,141,14,32,29,34,43,31,54,66,53,40,30,10,6,255,172,180,120,120,120,105,172,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,56,1,168,2,8,7,136,9,32,13,141,14,32,29,20,75,42,72,88,70,53,40,14,8,255,172,180,120,120,120,105,172,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,56,1,168,2,8,7,136,9,32,13,141,14,32,29,46,45,32,56,68,54,41,31,10,6,255,172,180,120,120,120,105,172,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,78,2,67,7,176,9,32,13,116,14,32,28,94,49,29,58,68,60,49,40,12,6,184,135,168,120,120,120,169,138,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,156,0,99,1,141,8,140,10,112,13,0,15,32,28,40,34,29,50,45,54,41,29,9,7,167,90,195,120,120,120,122,120,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,112,13,10,15,32,28,0,30,30,47,45,43,40,31,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,7,0,1,0,144,0,213,1,96,3,136,9,254,11,157,14,216,26,24,59,25,66,64,38,35,20,15,7,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,144,0,213,1,96,3,136,9,254,11,157,14,216,26,55,83,30,79,76,45,41,24,17,8,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,224,1,72,3,96,9,244,11,35,15,224,27,65,84,34,78,94,48,55,28,16,7,170,120,90,120,120,120,170,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,184,0,209,1,106,5,132,8,48,12,191,14,64,27,25,50,37,69,40,60,39,22,15,7,167,100,152,120,120,120,137,115,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,208,0,149,1,246,6,152,8,128,12,191,14,64,27,48,46,32,58,36,60,35,23,14,7,155,105,150,120,120,120,125,150,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,54,1,199,7,136,9,228,12,191,14,64,27,30,33,24,51,34,29,39,25,16,7,155,105,135,120,120,120,125,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,160,0,54,1,248,7,136,9,72,13,191,14,64,27,0,30,22,48,32,28,37,24,15,7,155,105,135,120,120,120,125,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,250,0,5,0,1,0,175,0,65,1,197,3,73,9,19,13,53,15,164,26,45,37,3,65,33,20,20,27,11,6,177,123,107,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,175,0,65,1,197,3,73,9,19,13,53,15,164,26,80,75,5,94,48,29,28,39,15,9,177,123,107,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,173,0,70,1,126,4,196,9,38,13,32,15,221,26,80,56,8,79,36,30,28,34,13,8,175,118,150,120,120,120,177,125,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,158,0,80,1,12,8,130,10,86,13,13,15,255,27,45,31,15,53,30,37,37,31,9,8,168,109,155,120,120,120,177,109,152,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,72,1,112,8,160,10,92,13,10,15,32,28,0,31,18,55,33,36,37,29,8,7,167,105,155,120,120,120,122,105,140,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,70,0,3,0,5,0,124,0,72,1,170,2,20,10,8,12,10,15,32,27,40,22,14,46,42,20,18,13,9,3,141,97,120,120,120,120,60,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,124,0,72,1,170,2,20,10,8,12,10,15,32,27,30,35,18,58,52,26,23,16,12,4,141,97,120,120,120,120,60,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,189,1,134,3,60,10,88,12,141,14,128,26,0,72,32,68,70,45,36,28,20,8,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,81,2,31,0,5,251,3,14,16,10,2,0,251,4,5,238,6,31,245,248,21,249,255,20,1,2,248,237,9,252,240,21,12,254,3,231,222,231,223,229,207,194,231,228,219,250,253,2,10,249,12,24,6,23,19,16,54,30,0,41,49,22,14,5,11,23,22,18,7,12,22,7,4,13,9,4,251,255,0,238,239,229,222,17,255,189,238,253,202,244,3,212,230,1,8,7,238,1,35,14,5,12,6,0,246,9,18,249,26,22,209,0,46,252,6,15,229,15,49,245,217,248,12,2,241,240,238,244,10,1,223,229,9,7,236,250,248,214,0,24,232,18,64,252,249,46,31,29,53,54,44,42,58,43,34,91,58,225,23,62,1,6,247,164,185,34,74,0,178,181,177,157,154,132,186,250,166,136,222,211,184,224,239,243,232,224,2,12,22,52,54,76,50,233,52,125,41,37,77,19,46,107,41,15,77,72,32,34,16,238,21,60,2,234,22,240,188,246,25,224,189,214,236,220,203,214,237,246,215,182,223,254,206,210,8,250,232,1,253,0,35,30,13,7,4,23,29,12,9,3,28,55,248,228,53,44,235,247,18,30,0,213,19,51,219,216,12,248,240,242,238,16,11,238,3,10,252,249,0,21,250,223,45,63,238,237,12,20,41,11,243,17,253,226,251,255,255,0,238,226,220,3,45,230,204,23,0,234,40,12,248,44,1,218,11,11,247,8,31,38,238,215,15,232,185,0,4,241,49,5,190,20,57,236,241,28,249,228,8,245,204,29,81,233,208,36,11,225,7,3,246,26,5,220,253,15,236,245,28,11,242,1,253,232,9,32,248,255,47,5,227,34,25,223,27,56,239,245,24,246,0,41,15,240,14,41,246,204,252,17,244,252,238,219,24,33,214,223,9,232,220,11,15,240,244,242,232,15,31,245,252,35,18,232,223,247,4,6,33,24,251,20,250,208,40,69,243,12,26,211,249,46,249,233,14,30,12,230,222,229,235,34,39,216,225,20,238,232,41,27,210,223,25,6,223,2,19,242,7,27,233,239,31,250,230,36,28,231,8,40,4,253,10,252,0,41,50,246,212,12,15,204,240,32,231,238,18,211,230,54,0,216,21,12,227,237,251,2,0,9,35,251,224,27,18,237,22,7,221,12,18,229,3,40,5,231,18,44,225,218,67,25,169,224,23,0,37,19,201,6,63,231,213,46,30,223,1,15,212,238,53,16,216,250,13,238,252,26,247,237,26,4,224,16,24,228,1,36,239,226,12,16,11,13,241,249,42,27,232,236,4,14,18,3,246,2,18,255,222,248,29,244,219,0,250,251,29,240,206,13,34,252,241,246,250,252,8,0,0,0,45,0,3,0,5,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,45,5,8,15,6,4,2,2,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,48,0,0,0,0,60,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,14,14,24,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,48,0,0,0,0,60,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,14,14,24,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,48,0,0,0,0,60,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,24,0,3,0,5,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,25,15,14,25,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,15,14,25,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,200,0,64,6,40,10,232,13,24,16,124,21,0,15,14,25,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,45,0,3,0,5,0,116,0,232,0,164,6,176,9,152,13,60,15,124,21,45,2,11,6,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,232,0,164,6,216,9,192,13,80,15,124,21,0,7,17,10,7,14,3,3,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,0,164,6,216,9,192,13,80,15,124,21,0,7,17,10,7,3,3,3,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,24,0,3,0,5,0,136,0,216,1,64,6,196,9,128,12,100,15,124,21,25,14,3,36,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,136,0,216,1,64,6,196,9,128,12,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,216,1,64,6,196,9,128,12,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,185,3,16,0,255,254,255,0,0,2,3,4,4,4,3,3,3,1,1,1,1,0,0,255,253,251,252,253,254,253,254,255,255,1,4,4,6,4,5,3,3,5,4,2,0,1,0,255,255,253,252,250,251,249,251,252,255,0,2,3,5,3,5,8,12,12,13,15,16,14,17,233,133,161,0,56,75,57,15,3,245,228,211,211,248,30,57,51,22,255,233,218,213,237,5,23,25,25,18,1,240,222,226,240,2,18,31,27,12,250,250,245,243,248,254,4,9,8,14,8,255,240,241,250,0,2,8,10,5,3,0,254,251,247,247,0,6,10,11,5,1,254,247,255,1,0,2,0,1,4,0,254,248,250,253,254,7,13,9,6,1,251,249,248,250,253,3,8,14,11,4,251,247,248,245,250,1,7,10,13,5,1,250,244,249,253,0,9,14,14,5,0,238,246,249,246,250,4,16,16,7,7,4,252,249,243,242,250,1,8,12,8,4,0,246,0,254,4,16,20,3,223,7,7,253,0,235,234,1,2,17,13,1,0,254,253,0,6,20,21,11,5,0,243,226,224,233,253,13,20,20,13,2,246,249,252,0,8,7,15,13,254,254,244,237,245,251,9,15,10,14,2,245,250,246,250,2,3,6,5,0,254,251,252,254,4,15,14,8,252,254,251,248,251,252,2,5,0,2,249,253,0,255,0,1,9,19,8,3,245,243,247,251,5,6,15,9,250,253,3,241,244,249,11,1,251,24,8,240,4,4,5,14,251,1,18,237,0,0,244,247,251,251,8,6,238,250,1,8,16,8,253,2,22,12,15,0,250,12,26,12,184,158,200,25,50,34,29,6,12,2,0,252,243,255,14,30,20,251,218,219,246,251,16,21,20,253,0,4,242,223,232,7,26,27,5,8,7,248,237,243,14,21,13,6,248,247,236,246,255,15,11,11,10,255,233,193,224,12,33,31,31,28,7,8,255,2,222,207,253,22,29,2,255,245,234,243,0,10,251,253,9,33,23,252,244,246,0,2,5,12,5,246,243,252,254,0,1,0,254,255,2,4,7,253,249,2,9,9,4,255,255,251,254,3,7,2,250,250,2,2,247,251,3,3,1,4,2,4,0,0,3,2,0,0,1,0,250,254,0,7,2,252,1,3,1,252,252,0,1,5,7,8,1,254,248,251,255,1,4,3,2,3,2,0,252,251,252,1,3,4,0,4,0,2,252,254,0,2,1,0,2,0,1,253,250,7,2,254,3,253,251,2,4,0,13,2,253,251,247,255,8,1,251,0,4,4,7,254,0,0,254,249,254,0,3,14,8,252,253,253,246,251,252,255,11,16,8,0,244,252,0,3,4,4,4,255,251,252,1,0,0,252,254,3,5,6,4,255,248,248,7,2,255,255,12,10,4,254,245,248,252,0,0,7,4,0,0,253,2,0,253,255,0,3,2,2,6,7,254,253,255,248,250,7,9,2,1,0,4,5,253,244,246,255,1,9,13,0,255,255,0,254,250,0,7,6,2,0,1,1,254,246,245,2,15,11,255,249,249,5,3,255,254,253,0,8,2,5,1,251,255,0,1,5,1,252,252,0,3,0,2,8,0,253,0,255,2,253,255,0,0,0,1,2,10,0,251,255,4,7,3,249,246,250,2,11,9,253,246,255,8,6,1,253,253,3,254,2,0,254,252,2,7,8,1,249,253,0,0,0,3,6,0,254,255,1,1,0,254,250,254,5,10,9,0,246,252,2,5,5,255,255,0,251,255,5,255,0,3,2,4,254,252,0,0,0,3,2,5,0,251,0,253,0,0,0,3,3,5,4,0,253,252,250,0,7,3,2,0,254,0,255,253,253,255,3,3,5,5,0,254,253,251,3,9,7,0,253,252,251,251,253,254,2,8,9,4,2,254,252,254,255,2,5,5,0,255,250,253,2,2,1,1,0,3,1,0,253,251,254,1,5,5,0,249,254,3,5,4,3,1,254,254,255,0,0,0,0,6,2,254,253,254,253,0,2,5,7,0,255,254,253,0,0,3,7,4,251,249,254,3,6,3,2,0,254,0,254,252,252,255,1,5,8,6,2,0,253,251,253,254,3,6,5,4,0,251,253,255,252,0,1,2,5,2,1,0,254,0,0,2,0,254,0,0,0,255,5,5,2,0,253,0,0,254,254,0,0,0,0,0,3,0,5,0,128,0,64,1,196,4,244,6,148,12,20,15,225,25,20,24,6,51,24,18,0,9,3,6,105,155,167,142,180,175,105,155,167,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,136,0,208,1,80,5,228,7,108,12,216,14,225,25,30,67,30,90,45,30,21,15,3,9,105,125,167,142,150,175,105,125,167,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,240,1,80,5,12,8,108,12,56,14,225,25,0,70,30,84,51,33,18,18,3,9,105,170,167,157,150,175,105,170,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,3,0,5,0,228,0,80,1,136,4,164,6,168,12,236,14,200,25,20,31,18,39,27,15,0,6,6,6,150,252,157,160,150,175,150,252,157,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,224,0,32,2,0,5,68,7,128,12,76,14,200,25,30,77,15,87,66,36,15,18,6,6,150,167,157,160,150,175,150,167,157,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,168,2,0,5,252,8,128,12,36,14,200,25,0,56,45,60,60,27,27,21,3,6,150,167,207,255,182,175,150,167,207,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,4,0,5,0,232,0,136,1,196,4,164,6,184,12,220,15,124,21,20,31,30,36,24,15,0,3,0,0,180,152,180,150,250,175,180,152,180,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,0,1,248,1,160,5,52,8,184,12,200,15,124,21,20,61,27,69,36,24,9,12,3,3,197,152,217,210,250,175,197,152,217,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,0,1,72,2,4,6,132,8,184,12,90,14,124,21,24,80,30,84,54,39,24,15,3,3,197,152,217,210,250,175,197,152,217,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,120,2,121,6,64,9,184,12,90,14,124,21,0,61,30,69,66,45,42,27,3,3,252,152,157,210,250,175,252,152,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,3,0,5,0,208,0,136,1,176,4,164,6,80,12,185,15,169,26,20,30,27,42,21,12,0,3,0,6,150,147,172,160,150,175,150,147,172,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,208,0,192,1,180,5,52,8,80,12,185,15,169,26,30,39,27,51,30,21,15,12,0,6,150,185,152,160,150,175,150,185,152,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,240,1,224,6,16,9,148,12,76,14,88,27,0,58,27,75,33,33,30,24,6,6,150,142,170,160,150,175,150,142,170,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,3,0,5,0,200,0,136,1,76,4,164,6,212,12,14,15,150,25,19,27,39,27,18,12,0,3,6,3,150,155,195,137,255,252,150,155,195,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,200,0,204,1,176,4,168,7,212,12,14,15,150,25,30,71,39,72,51,21,15,12,6,6,150,155,195,137,255,252,150,155,195,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,80,2,252,3,76,9,88,12,196,14,150,25,0,78,40,78,52,23,20,20,5,5,150,155,162,185,217,210,150,155,162,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,3,0,5,0,128,0,64,1,196,4,164,6,148,12,20,15,225,25,20,24,6,51,24,18,0,9,3,6,105,155,167,142,180,175,105,155,167,44,45,70,130,54,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,136,0,208,1,80,5,228,7,108,12,216,14,225,25,30,67,30,90,45,30,21,15,3,9,105,125,167,142,150,175,105,125,167,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,240,1,80,5,12,8,108,12,56,14,225,25,0,70,30,84,51,33,18,18,3,9,105,170,167,157,150,175,105,170,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,139,0,4,0,1,0,128,0,40,2,161,5,96,9,188,12,116,14,96,27,50,59,34,66,80,45,47,36,16,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,128,0,40,2,161,5,96,9,188,12,116,14,96,27,50,81,40,76,93,52,55,42,15,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,40,2,161,5,96,9,188,12,116,14,96,27,40,69,37,71,86,48,51,39,14,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,128,0,40,2,161,5,96,9,188,12,116,14,96,27,0,46,31,58,70,39,35,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,3,0,1,0,196,0,229,1,255,3,0,10,28,12,116,14,160,26,53,62,35,71,73,28,34,20,9,8,162,120,132,120,120,120,162,90,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,208,0,229,1,123,3,220,10,204,11,141,14,0,26,75,64,38,81,60,33,35,16,11,8,162,105,87,120,120,120,162,75,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,194,1,24,3,164,11,68,12,241,14,0,26,0,27,28,46,28,31,28,16,11,8,162,135,87,120,120,120,162,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,151,0,4,0,1,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,46,50,30,67,55,40,30,19,9,4,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,40,84,40,87,72,52,39,24,12,6,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,65,82,39,86,71,52,38,24,11,5,217,155,105,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,0,50,30,67,55,40,30,19,9,4,217,155,105,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,50,40,30,58,58,36,29,23,13,0,180,150,172,120,120,120,200,120,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,60,78,42,80,80,51,40,33,18,0,180,150,172,120,120,120,200,120,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,40,55,35,67,67,43,33,27,15,0,180,150,172,120,120,120,200,120,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,0,33,30,51,51,33,28,23,12,0,180,150,177,120,120,120,200,120,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,200,0,4,0,1,0,248,0,134,2,244,6,196,9,52,13,196,14,64,28,45,39,28,52,57,51,36,22,7,5,193,135,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,134,2,244,6,196,9,52,13,196,14,64,28,85,83,41,76,83,75,53,33,11,7,193,135,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,248,0,134,2,244,6,196,9,52,13,196,14,64,28,70,67,37,68,75,67,47,29,10,6,193,135,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,248,0,134,2,244,6,196,9,52,13,196,14,64,28,0,31,25,46,50,45,32,20,6,4,193,135,180,120,120,120,217,180,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,100,0,4,0,1,0,192,0,144,1,168,7,40,10,92,13,120,15,96,25,50,51,30,72,58,50,42,30,12,5,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,152,1,148,7,40,10,92,13,120,15,96,25,60,92,41,98,79,68,57,41,17,7,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,152,1,148,7,40,10,92,13,120,15,96,25,40,74,37,88,71,61,51,37,15,6,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,152,1,148,7,40,10,92,13,120,15,96,25,0,43,28,67,54,46,39,28,11,5,160,90,120,120,120,120,130,90,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,149,0,4,0,1,0,176,0,152,1,128,7,0,10,92,13,20,15,96,25,50,53,26,83,45,45,42,25,14,7,150,105,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,152,1,128,7,20,10,92,13,120,15,96,25,60,98,38,106,57,67,67,39,16,7,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,160,1,108,7,20,10,92,13,120,15,96,25,40,73,35,90,49,57,57,33,13,7,160,97,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,160,1,108,7,20,10,92,13,120,15,96,25,0,50,31,75,42,47,47,27,10,8,160,105,120,120,120,120,130,60,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,170,0,120,1,178,7,25,10,37,13,55,15,96,25,45,44,25,67,44,47,45,28,11,5,160,91,120,131,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,170,0,120,1,178,7,25,10,37,13,55,15,96,25,70,88,36,95,63,66,64,39,16,7,160,91,120,131,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,170,0,120,1,178,7,25,10,37,13,55,15,96,25,60,70,32,85,56,59,58,35,14,6,160,91,120,131,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,170,0,120,1,178,7,25,10,37,13,55,15,96,25,0,35,22,60,39,42,41,25,10,4,160,91,120,131,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,232,0,218,2,222,3,60,10,224,11,222,13,160,28,50,64,34,59,74,34,35,24,9,7,230,150,120,120,120,120,185,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,232,0,158,2,178,3,60,10,224,11,222,13,32,28,60,103,27,76,97,40,40,26,14,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,158,2,178,3,60,10,224,11,222,13,32,28,40,102,27,76,97,39,40,26,14,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,118,2,134,3,140,10,224,11,66,14,32,28,0,56,31,52,75,41,39,25,13,9,177,150,120,120,120,120,177,75,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,216,0,142,2,250,4,26,10,32,13,20,15,210,27,45,45,30,55,66,39,38,24,13,5,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,216,0,142,2,250,4,26,10,12,13,20,15,210,27,80,86,39,78,90,51,50,31,18,7,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,142,2,250,4,26,10,32,13,20,15,210,27,60,75,37,73,84,47,47,29,16,6,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,216,0,142,2,250,4,26,10,32,13,20,15,210,27,0,39,28,51,61,36,36,22,12,5,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,140,0,4,0,1,0,184,0,189,1,134,3,60,10,88,12,141,14,128,26,50,57,28,61,63,40,32,25,18,7,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,189,1,134,3,60,10,88,12,141,14,128,26,50,83,38,71,75,52,42,33,24,6,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,189,1,134,3,60,10,88,12,141,14,128,26,40,69,35,65,68,47,39,30,22,6,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,189,1,134,3,60,10,88,12,141,14,128,26,0,47,26,56,57,37,29,23,16,7,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,244,0,77,3,87,4,160,10,148,12,41,14,96,27,50,59,26,60,76,28,19,17,5,7,225,195,120,120,120,120,165,105,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,7,3,43,4,240,10,148,12,41,14,96,27,45,107,29,67,105,48,41,41,13,6,200,165,135,120,120,120,200,120,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,27,3,255,3,64,11,228,12,41,14,224,27,59,101,33,69,92,41,45,45,11,6,200,135,150,120,120,120,200,75,210,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,7,3,10,4,240,10,52,13,41,14,224,27,58,94,32,72,86,48,50,47,11,6,200,135,150,120,120,120,200,90,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,228,0,243,2,255,3,160,10,148,12,41,14,224,27,38,63,32,63,82,35,38,36,13,7,167,135,120,120,120,120,167,75,135,44,45,70,130,55,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,164,0,27,3,98,4,20,10,148,12,41,14,224,27,0,39,23,59,58,28,24,24,7,7,167,120,120,120,120,120,227,105,105,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,140,0,244,1,172,5,36,9,248,12,41,14,32,27,45,48,30,63,56,56,40,40,15,8,167,135,180,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,140,0,224,1,128,5,16,9,148,12,41,14,32,27,48,69,26,68,82,75,61,50,25,8,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,172,0,224,1,128,5,16,9,168,12,41,14,160,27,41,75,33,70,90,74,60,53,17,8,170,120,150,120,120,120,170,120,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,249,1,139,5,16,9,168,12,41,14,160,27,78,53,34,68,67,54,45,35,15,8,170,120,150,120,120,120,140,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,204,0,33,2,139,5,16,9,168,12,141,14,160,27,0,35,31,52,54,52,38,30,11,8,170,135,150,120,120,120,140,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,76,0,4,0,45,0,40,0,112,1,68,3,36,9,28,12,216,14,32,28,0,45,19,77,28,16,16,12,8,0,120,105,120,120,120,120,120,105,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,37,0,40,0,112,1,68,3,36,9,28,12,216,14,32,28,40,45,19,77,28,16,16,12,8,0,120,105,120,120,120,120,120,105,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,37,0,72,0,104,1,153,4,36,9,148,12,166,14,192,27,36,46,16,80,33,22,26,17,13,0,120,90,120,120,120,120,120,90,105,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,40,0,79,1,221,7,96,9,208,12,116,14,192,27,0,90,9,86,74,89,97,58,13,0,120,120,120,120,120,120,120,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,5,0,33,0,152,0,48,1,174,8,200,10,92,13,135,15,160,26,52,58,8,76,67,65,53,30,14,8,180,120,120,120,120,120,180,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,40,1,172,8,4,11,92,13,135,15,160,26,75,69,8,83,73,74,75,36,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,39,1,229,8,4,11,12,13,216,14,64,26,40,43,8,60,60,63,63,34,11,8,167,105,120,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,125,0,0,1,56,9,4,11,20,13,0,15,64,26,40,33,8,52,52,53,54,29,11,8,167,99,114,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,216,0,96,9,4,11,32,13,60,15,64,26,0,20,8,40,41,39,40,23,10,8,167,90,105,120,120,120,167,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,152,0,209,1,112,3,80,10,104,11,141,14,192,27,43,48,27,57,61,29,29,16,12,6,162,135,165,120,120,120,117,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,209,1,68,3,80,10,104,11,141,14,32,27,93,92,29,72,80,48,44,26,16,6,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,209,1,13,3,120,10,104,11,141,14,160,27,42,77,32,74,65,49,43,25,18,7,167,135,120,120,120,120,122,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,13,2,57,3,120,10,104,11,141,14,160,27,77,39,27,46,51,38,36,14,10,7,167,135,135,120,120,120,137,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,232,0,18,2,233,3,60,10,8,12,141,14,160,27,0,26,30,41,48,23,20,17,8,7,167,120,135,120,120,120,137,105,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,84,0,104,1,70,6,212,8,148,12,41,14,64,26,42,48,17,72,53,40,40,37,11,0,120,150,135,120,120,120,60,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,128,1,0,5,232,8,48,12,136,14,192,25,40,67,19,79,82,64,53,45,18,8,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,152,1,232,3,96,9,28,12,236,14,128,26,50,62,26,66,68,45,37,28,21,6,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,88,1,212,3,196,9,148,12,196,14,192,25,67,56,16,83,38,36,30,29,13,0,120,145,135,120,120,120,60,100,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,34,1,255,3,172,8,28,12,116,14,192,25,0,27,16,57,35,17,20,20,10,0,120,135,135,120,120,120,60,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,84,0,104,1,70,6,212,8,148,12,41,14,64,26,42,43,17,65,54,40,34,31,11,7,162,150,135,120,120,120,102,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,104,1,26,6,212,8,148,12,116,14,192,25,40,71,19,81,83,74,54,46,18,7,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,88,0,104,1,48,6,172,8,148,12,116,14,192,25,50,73,19,91,65,65,53,46,20,7,167,120,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,64,1,106,5,192,8,68,12,116,14,192,25,67,30,11,58,41,36,31,23,13,7,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,34,1,255,3,172,8,28,12,116,14,192,25,0,28,16,54,35,17,20,20,9,7,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,6,0,1,0,236,0,82,3,84,5,116,9,88,12,116,14,224,27,50,57,28,58,75,41,43,27,10,8,250,120,210,120,120,120,255,120,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,236,0,62,3,84,5,136,9,88,12,116,14,224,27,66,104,30,81,98,53,57,36,12,6,225,120,210,120,120,120,255,120,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,220,0,42,3,252,4,36,9,128,12,41,14,224,27,41,69,27,59,81,41,52,32,12,7,167,120,210,120,120,120,255,120,165,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,173,2,87,4,16,9,48,12,41,14,128,27,40,60,28,49,77,34,51,36,15,6,237,207,192,120,120,120,141,120,147,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,234,1,189,3,16,9,8,12,41,14,96,27,40,62,36,68,59,21,35,23,15,8,205,90,180,120,120,120,145,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,172,0,232,1,132,3,192,8,168,12,60,15,96,27,0,29,25,50,42,16,18,13,11,9,200,90,120,120,120,120,200,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,6,0,1,0,232,0,38,2,117,5,116,9,108,12,10,15,96,28,46,56,40,60,61,44,32,36,20,8,167,120,165,120,120,120,227,150,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,118,2,73,5,36,9,28,12,166,14,96,28,25,107,47,85,109,75,55,45,19,8,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,118,2,73,5,212,8,28,12,141,14,96,28,43,79,36,73,95,72,54,42,18,7,170,120,165,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,8,1,18,2,117,5,132,8,204,11,166,14,96,28,48,53,24,70,70,36,32,26,15,8,165,120,135,120,120,120,150,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,192,0,174,1,197,4,172,8,204,11,141,14,224,28,46,40,28,64,39,27,18,16,8,8,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,134,1,189,3,92,8,204,11,141,14,224,28,0,33,24,58,38,22,15,12,9,8,152,120,75,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,226,0,7,0,5,0,44,1,92,3,216,4,4,11,72,13,191,14,64,27,51,47,28,58,63,37,40,27,4,4,167,165,165,120,120,120,167,105,165,44,60,70,130,55,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,44,1,92,3,216,4,4,11,72,13,191,14,64,27,70,100,41,85,92,54,58,39,9,7,167,165,165,120,120,120,167,105,165,44,60,70,130,55,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,44,1,120,3,216,4,200,10,72,13,191,14,64,27,15,92,39,80,87,51,55,37,8,6,167,165,165,120,120,120,167,105,165,44,60,70,130,55,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,33,0,20,1,80,3,29,5,216,9,72,13,136,14,64,27,23,59,29,68,71,53,51,35,8,6,167,172,120,120,120,120,167,172,165,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,216,0,16,3,4,6,196,9,52,13,176,14,64,27,33,43,32,66,56,47,43,39,8,7,167,150,180,120,120,120,167,120,135,44,45,70,130,53,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,212,0,232,1,188,7,40,10,92,13,120,15,64,27,34,35,37,54,51,51,39,38,13,9,167,90,180,120,120,120,137,75,150,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,196,0,159,1,252,7,40,10,112,13,120,15,220,27,0,37,39,55,48,48,39,32,11,10,167,90,114,120,120,120,122,75,90,44,45,70,130,52,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,7,0,1,0,16,1,53,2,12,3,160,10,244,11,35,15,96,28,24,63,33,62,70,43,37,17,11,7,167,120,90,120,120,120,167,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,33,2,12,3,160,10,244,11,35,15,224,27,49,112,43,87,92,61,53,26,15,6,165,120,90,120,120,120,165,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,33,2,72,3,40,10,244,11,35,15,224,27,65,92,39,81,98,49,57,29,17,7,170,120,90,120,120,120,170,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,37,0,184,0,209,1,106,5,172,8,108,12,216,14,64,27,22,48,36,68,39,59,38,22,15,7,167,100,152,120,120,120,137,115,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,208,0,149,1,246,6,172,8,188,12,236,14,64,27,48,43,32,56,36,59,35,22,13,7,155,105,150,120,120,120,125,150,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,54,1,199,7,136,9,112,13,60,15,64,27,26,35,25,53,36,30,41,27,16,7,155,105,135,120,120,120,125,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,160,0,54,1,210,7,196,9,92,13,60,15,64,28,0,24,27,45,27,20,32,21,12,7,157,105,135,120,120,120,82,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,6,0,1,0,96,0,104,1,92,8,80,10,232,13,60,15,160,27,42,48,10,66,51,58,42,33,10,8,155,165,150,120,120,120,155,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,0,112,1,108,8,160,10,72,13,60,15,32,27,70,59,19,64,74,76,66,36,14,8,150,120,150,120,120,120,150,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,119,1,52,8,160,10,72,13,60,15,32,27,40,52,18,61,70,72,63,34,14,7,150,120,150,120,120,120,150,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,239,1,111,7,196,9,112,13,60,15,64,27,44,52,30,75,59,58,44,30,14,8,167,90,150,120,120,120,167,90,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,152,0,16,2,124,6,156,9,32,13,85,15,64,28,35,27,23,45,46,48,38,21,7,8,167,150,120,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,200,0,16,2,59,6,156,9,112,13,29,16,192,28,0,25,26,43,39,39,31,17,5,9,167,150,120,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,190,0,5,0,1,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,50,40,30,52,60,40,33,28,16,6,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,50,71,40,70,80,54,44,38,22,8,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,16,2,220,4,106,9,146,12,144,14,87,27,40,57,35,64,74,48,41,35,19,8,167,148,140,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,123,0,16,2,48,5,56,9,128,12,132,14,91,27,50,42,29,55,65,39,37,30,16,7,167,149,138,120,120,120,197,135,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,119,0,12,2,121,5,252,8,108,12,122,14,94,27,0,35,25,50,61,38,35,27,14,7,167,149,136,120,120,120,197,135,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,6,0,1,0,140,0,174,1,152,3,36,9,164,11,16,14,96,25,48,61,31,70,69,41,27,15,12,7,167,120,120,120,120,120,167,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,140,0,174,1,192,3,36,9,164,11,16,14,96,25,36,75,35,82,66,44,35,22,16,6,165,120,120,120,120,120,165,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,140,0,154,1,156,3,36,9,164,11,16,14,96,25,49,76,34,76,81,39,33,21,20,6,167,120,120,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,239,1,255,3,252,8,184,11,16,14,192,25,49,60,31,62,76,40,30,20,18,7,167,111,135,120,120,120,191,129,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,186,0,14,2,137,4,252,8,8,12,41,14,112,26,47,35,26,49,62,35,28,19,13,6,167,115,131,120,120,120,191,129,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,144,0,46,2,20,5,252,8,88,12,66,14,32,27,0,29,25,45,57,36,31,23,11,7,167,120,127,120,120,120,255,105,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,7,0,5,0,44,1,92,3,216,4,4,11,72,13,191,14,64,27,45,47,28,58,63,37,40,27,6,4,167,165,165,120,120,120,167,105,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,44,1,92,3,216,4,4,11,72,13,191,14,64,27,40,107,42,88,95,55,60,40,9,7,167,165,165,120,120,120,167,105,165,44,45,70,130,57,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,80,1,132,3,161,5,36,9,112,13,241,14,64,27,31,71,36,76,95,55,45,28,10,7,240,165,120,120,120,120,195,120,120,44,45,70,130,57,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,32,1,248,2,191,6,36,9,192,13,241,14,64,27,25,41,32,47,53,53,50,47,11,7,255,180,180,120,120,120,200,195,180,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,224,0,224,1,45,7,136,9,112,13,241,14,64,27,27,42,34,43,61,61,51,50,12,8,255,105,180,120,120,120,165,120,135,44,45,70,130,58,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,224,0,8,2,23,7,176,9,112,13,241,14,64,27,52,37,28,51,56,56,49,43,8,8,255,90,180,120,120,120,187,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,208,0,128,2,238,5,96,9,52,13,216,14,64,27,0,21,20,40,48,36,32,28,7,8,252,90,165,120,120,120,252,105,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,6,0,1,0,0,1,136,3,200,5,110,10,154,13,40,15,67,27,45,46,28,60,58,41,34,27,9,4,228,152,186,132,120,120,255,174,173,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,136,3,200,5,110,10,154,13,40,15,67,27,29,90,39,85,81,57,48,38,12,5,228,152,186,132,120,120,255,174,173,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,8,1,136,3,62,5,20,10,188,12,166,14,32,27,39,88,33,76,89,68,56,46,13,6,185,180,165,120,120,120,245,135,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,8,1,178,2,32,4,116,9,8,12,166,14,64,27,42,90,37,64,99,52,43,35,14,7,185,135,150,120,120,120,194,105,111,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,33,2,178,3,36,9,8,12,216,14,160,27,84,49,27,58,75,37,32,23,12,8,177,120,120,120,120,120,147,105,105,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,200,0,193,2,64,5,16,9,128,12,241,14,32,28,0,28,28,44,60,36,32,26,8,8,185,150,120,120,120,120,155,150,105,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,140,0,5,0,1,0,192,0,32,2,60,5,156,9,92,13,52,18,0,28,45,54,25,63,72,40,34,17,14,6,170,165,135,120,120,120,170,180,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,32,2,60,5,156,9,92,13,52,18,0,28,50,96,34,84,96,53,45,22,19,8,170,165,135,120,120,120,170,180,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,32,2,60,5,156,9,92,13,52,18,0,28,60,87,32,80,91,50,43,21,18,7,170,165,135,120,120,120,170,180,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,201,0,104,2,166,4,146,9,240,10,127,18,0,28,35,29,25,49,38,30,24,8,11,4,170,165,136,120,120,120,170,180,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,201,0,104,2,166,4,146,9,240,10,127,18,0,28,0,28,24,48,38,30,23,8,10,4,170,165,136,120,120,120,170,180,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,135,0,5,0,1,0,216,0,136,2,156,4,35,10,227,12,20,15,214,27,45,70,34,68,76,43,39,30,15,6,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,216,0,136,2,156,4,35,10,227,12,20,15,214,27,50,124,45,90,101,57,52,40,20,8,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,136,2,176,4,35,10,227,12,20,15,214,27,55,111,43,86,96,54,49,38,19,8,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,128,2,116,4,156,9,240,10,152,18,0,28,35,33,30,51,34,32,27,6,11,4,170,165,137,120,120,120,170,180,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,204,0,128,2,116,4,156,9,240,10,152,18,0,28,0,28,25,48,32,30,25,6,10,4,170,165,137,120,120,120,170,180,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,190,0,5,0,1,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,50,42,31,49,62,20,36,20,6,5,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,50,82,43,68,86,28,50,28,8,7,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,50,82,43,68,86,28,50,28,8,7,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,40,59,36,58,73,24,42,24,7,6,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,0,25,24,38,48,16,28,16,4,4,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,190,0,5,0,1,0,228,0,28,2,128,3,72,10,190,11,15,14,216,27,50,57,28,61,69,28,35,19,9,5,180,112,128,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,228,0,28,2,128,3,72,10,190,11,15,14,216,27,50,90,35,76,87,35,44,24,11,6,180,112,128,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,0,2,132,3,64,10,216,11,234,13,15,28,50,74,39,57,91,24,46,25,8,7,186,83,122,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,0,2,132,3,64,10,216,11,234,13,15,28,40,59,35,51,81,22,42,22,7,6,186,83,122,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,8,1,0,2,132,3,60,10,224,11,222,13,32,28,0,20,27,31,51,12,23,14,4,4,180,75,120,120,120,120,85,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,139,0,3,0,1,0,112,0,244,1,132,5,36,9,188,12,116,14,96,27,50,56,31,63,76,38,46,34,18,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,244,1,132,5,16,9,188,12,116,14,96,27,90,80,37,72,96,48,60,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,244,1,132,5,36,9,188,12,116,14,96,27,0,48,30,58,70,31,44,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,190,0,4,0,1,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,50,45,30,56,65,54,35,25,8,5,255,142,180,120,120,120,150,180,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,90,86,41,77,90,75,49,35,12,7,255,142,180,120,120,120,150,180,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,50,78,39,73,85,71,46,33,11,7,255,142,180,120,120,120,150,180,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,0,35,26,50,57,48,31,22,7,4,255,142,180,120,120,120,150,180,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,148,0,128,1,238,7,50,10,42,13,50,15,96,25,45,48,27,72,52,48,45,29,11,5,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,128,1,238,7,50,10,42,13,50,15,96,25,70,97,39,102,74,68,64,41,16,8,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,128,1,238,7,50,10,42,13,50,15,96,25,60,87,37,97,70,64,61,39,15,7,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,148,0,128,1,238,7,50,10,42,13,50,15,96,25,0,38,24,64,47,43,40,26,10,5,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,200,0,4,0,1,0,158,0,118,1,192,8,44,11,132,13,0,15,8,28,50,40,18,55,57,49,46,30,11,8,180,111,153,120,120,120,185,112,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,158,0,118,1,192,8,44,11,132,13,0,15,8,28,80,75,26,76,78,68,63,42,16,11,180,111,153,120,120,120,185,112,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,158,0,118,1,192,8,44,11,132,13,0,15,8,28,70,63,23,69,72,62,58,38,15,10,180,111,153,120,120,120,185,112,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,158,0,118,1,192,8,44,11,132,13,0,15,8,28,0,29,16,47,48,42,39,26,10,6,180,111,153,120,120,120,185,112,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,216,0,118,2,152,3,67,10,194,11,10,14,224,27,45,50,21,50,63,30,30,18,11,4,178,146,127,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,216,0,118,2,152,3,67,10,194,11,10,14,224,27,80,131,34,80,103,49,49,30,18,7,178,146,127,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,104,2,172,3,67,10,194,11,10,14,224,27,70,105,32,74,95,46,45,28,16,7,178,146,127,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,216,0,104,2,172,3,67,10,194,11,10,14,224,27,0,44,20,47,62,29,28,17,10,4,178,146,127,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,188,0,221,1,200,3,60,10,104,12,166,14,204,26,45,42,27,51,58,37,33,23,16,5,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,188,0,221,1,200,3,60,10,104,12,166,14,204,26,70,87,39,74,84,53,47,33,24,7,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,188,0,221,1,200,3,60,10,104,12,166,14,204,26,60,70,35,66,75,48,42,30,21,6,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,188,0,221,1,200,3,60,10,104,12,166,14,204,26,0,37,25,48,54,34,31,22,15,4,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,5,0,1,0,248,1,97,3,7,5,60,10,72,13,141,14,88,27,65,48,25,51,60,25,22,20,6,6,255,162,210,120,120,120,120,162,120,44,60,70,130,55,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,1,136,3,219,4,60,10,72,13,141,14,88,27,75,111,36,82,86,52,35,33,13,7,210,175,150,120,120,120,210,175,120,44,60,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,1,128,3,219,4,196,9,32,13,116,14,88,27,63,110,36,82,86,52,35,33,13,7,210,175,150,120,120,120,210,175,120,44,55,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,104,1,134,3,219,4,184,9,20,13,116,14,33,27,71,104,35,79,85,50,35,33,13,8,214,172,150,120,120,120,210,175,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,104,1,127,3,220,4,156,9,248,12,116,14,160,26,0,41,24,51,61,32,26,22,8,8,225,165,150,120,120,120,225,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,211,0,5,0,1,0,140,0,224,1,100,5,252,8,28,12,192,13,32,27,45,40,22,52,62,57,47,38,19,6,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,140,0,224,1,100,5,252,8,28,12,192,13,32,27,48,63,28,65,78,71,58,48,23,8,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,140,0,224,1,100,5,252,8,28,12,192,13,32,27,40,63,28,65,78,71,58,48,23,8,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,140,0,248,1,100,5,252,8,28,12,192,13,32,27,78,45,25,55,66,61,49,40,20,6,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,140,0,8,2,100,5,252,8,28,12,192,13,32,27,0,31,21,46,55,51,41,34,16,5,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,220,0,5,0,1,0,168,0,0,2,92,3,88,10,104,11,141,14,32,27,45,55,21,52,64,39,36,18,13,5,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,0,2,92,3,88,10,104,11,141,14,32,27,40,107,29,73,89,54,50,25,18,7,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,0,2,92,3,88,10,104,11,141,14,32,27,90,103,34,73,85,51,41,24,18,7,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,0,2,92,3,88,10,104,11,141,14,32,27,45,59,26,58,60,39,31,18,13,5,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,168,0,0,2,92,3,88,10,104,11,141,14,32,27,0,27,18,40,40,23,20,12,9,3,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,4,0,1,0,236,0,28,2,167,3,0,10,128,12,10,15,96,28,50,64,34,58,76,48,26,21,16,7,120,135,135,120,120,120,135,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,236,0,63,2,123,3,80,10,48,12,66,14,224,27,106,123,47,82,94,55,34,21,16,7,120,135,135,120,120,120,135,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,236,0,23,2,123,3,0,10,48,12,191,14,224,27,79,96,32,67,102,58,35,28,18,7,120,135,105,120,120,120,135,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,216,0,68,2,255,3,176,9,128,12,191,14,224,27,0,49,27,52,77,41,28,24,9,7,120,135,135,120,120,120,135,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,5,0,1,0,84,0,76,1,247,5,208,8,132,12,116,14,192,25,42,48,16,69,62,55,44,40,14,6,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,76,1,247,5,208,8,132,12,116,14,192,25,40,76,20,87,78,69,55,50,18,8,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,84,0,64,1,106,5,192,8,68,12,116,14,192,25,50,75,16,93,59,53,45,43,19,11,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,64,1,106,5,192,8,68,12,116,14,192,25,67,39,12,67,43,38,32,31,14,8,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,34,1,255,3,172,8,28,12,116,14,192,25,0,34,17,60,37,18,21,21,10,8,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,220,0,148,2,4,6,56,9,84,11,16,14,192,28,34,47,34,53,70,53,36,48,13,8,120,165,150,120,120,120,165,210,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,220,0,148,2,26,6,56,9,124,11,116,14,192,28,60,82,42,76,91,74,45,57,24,8,120,165,150,120,120,120,165,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,220,0,224,1,4,6,232,8,68,12,191,14,192,28,54,54,36,55,79,57,35,30,16,7,120,120,120,120,120,120,165,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,220,0,164,1,120,4,152,8,88,12,141,14,64,28,45,56,44,77,54,30,24,26,15,9,120,120,120,120,120,120,60,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,140,0,84,1,222,3,56,9,188,12,141,14,192,27,0,21,28,46,37,15,7,9,9,8,120,105,90,120,120,120,60,120,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,6,0,1,0,44,1,120,3,80,5,60,10,112,13,191,14,64,27,41,30,24,49,53,37,31,23,3,4,167,165,165,120,120,120,167,105,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,44,1,92,3,80,5,100,10,112,13,191,14,64,27,77,90,41,86,93,58,59,40,5,7,167,165,165,120,120,120,167,105,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,44,1,136,3,140,5,20,10,152,13,191,14,64,27,33,80,40,82,89,55,56,38,5,6,167,165,165,120,120,120,167,105,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,216,0,92,3,59,6,252,8,192,13,241,14,160,28,31,63,32,65,87,53,49,32,7,7,120,75,195,120,120,120,255,180,135,44,45,70,130,56,0,0,0,0,43,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,240,0,203,2,224,6,176,9,112,13,10,15,96,27,53,48,32,63,65,62,36,22,5,7,165,135,240,120,120,120,195,105,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,212,0,232,1,48,7,136,9,172,13,80,15,64,27,0,26,32,46,44,44,33,32,13,7,167,90,180,120,120,120,137,75,150,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,44,45,28,57,65,54,36,26,9,5,255,142,180,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,52,1,135,2,242,6,226,9,172,13,154,15,176,28,77,83,39,77,88,73,49,35,12,7,255,142,180,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,136,2,224,6,116,9,72,13,60,15,96,27,77,56,30,63,71,62,57,25,13,7,167,120,180,120,120,120,242,150,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,178,0,103,2,84,6,76,9,2,13,216,14,96,27,35,38,25,52,61,45,43,24,12,7,167,135,157,120,120,120,242,150,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,163,0,81,2,17,6,66,9,241,12,191,14,96,27,0,34,26,48,55,38,38,25,13,7,167,138,152,120,120,120,242,150,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,40,0,7,0,1,0,136,0,64,1,172,8,240,10,152,13,120,15,236,26,42,44,7,65,55,56,44,27,11,7,172,133,129,120,120,120,180,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,128,0,64,1,172,8,240,10,112,13,100,15,224,26,40,64,10,75,75,77,72,37,16,8,158,112,135,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,64,1,172,8,240,10,112,13,100,15,224,26,28,60,10,73,73,74,70,36,16,8,158,112,135,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,104,0,136,1,52,8,80,10,52,13,60,15,64,27,31,59,17,81,60,61,57,31,12,8,160,90,150,120,120,120,160,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,248,1,111,7,96,9,72,13,20,15,64,27,34,53,30,75,59,58,44,30,14,8,167,90,150,120,120,120,167,90,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,16,2,64,6,36,9,238,12,90,15,128,28,45,26,24,44,48,48,31,19,6,8,167,150,120,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,200,0,16,2,240,5,56,9,248,12,160,15,192,28,0,22,25,41,37,37,24,16,5,8,167,150,120,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,155,0,4,0,1,0,142,0,224,1,180,5,110,8,88,12,110,14,38,27,45,37,22,52,60,49,42,35,15,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,142,0,224,1,180,5,110,8,88,12,110,14,38,27,60,46,25,59,67,55,46,39,17,7,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,142,0,212,1,164,5,240,7,72,12,146,14,38,27,50,41,24,55,64,48,39,33,12,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,142,0,208,1,160,5,208,7,68,12,156,14,38,27,0,32,21,49,56,39,34,28,9,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,140,0,3,0,1,0,112,0,240,1,220,5,116,9,228,12,156,14,96,27,50,47,25,59,72,40,42,32,16,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,240,1,220,5,116,9,228,12,156,14,96,27,90,77,34,75,91,51,54,41,21,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,240,1,220,5,116,9,228,12,116,14,96,27,0,47,30,58,70,39,41,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,135,0,3,0,1,0,152,0,72,2,120,5,134,9,195,12,165,14,141,27,45,49,32,59,72,43,45,30,16,6,174,154,137,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,72,2,120,5,134,9,195,12,165,14,141,27,90,77,40,74,91,53,56,38,21,8,174,154,137,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,80,2,120,5,134,9,195,12,165,14,141,27,0,38,28,52,64,37,39,27,14,5,174,154,137,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,180,0,5,0,1,0,55,1,158,2,183,6,252,9,163,13,121,15,154,28,50,41,34,52,64,49,35,24,9,5,255,140,173,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,55,1,158,2,183,6,252,9,163,13,121,15,154,28,40,76,46,70,86,66,47,33,12,7,255,140,173,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,61,1,178,2,159,6,56,10,143,13,44,15,103,28,50,57,48,54,80,51,42,28,12,6,226,136,157,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,61,1,178,2,159,6,56,10,143,13,44,15,103,28,40,51,45,51,76,48,40,27,11,6,226,136,157,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,68,1,198,2,136,6,111,10,123,13,229,14,57,28,0,21,34,28,51,26,26,17,7,4,195,132,142,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,185,0,4,0,1,0,78,1,188,2,144,6,202,9,184,13,183,15,10,29,45,40,38,49,58,48,37,28,10,6,255,151,208,120,120,120,135,180,182,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,78,1,188,2,144,6,202,9,184,13,183,15,10,29,80,60,47,60,71,58,45,34,12,8,255,151,208,120,120,120,135,180,182,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,34,1,166,2,48,6,186,9,152,13,191,15,176,28,60,49,39,56,67,51,41,31,12,8,255,157,191,120,120,120,135,180,182,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,236,0,140,2,208,5,166,9,112,13,200,15,64,28,0,42,33,53,64,43,38,29,12,9,233,165,170,120,120,120,135,165,175,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,208,0,32,2,224,6,20,10,132,13,160,15,224,28,50,47,30,54,65,60,46,34,11,7,189,132,159,120,120,120,189,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,208,0,32,2,224,6,20,10,132,13,160,15,224,28,80,77,38,69,83,76,59,43,14,9,189,132,159,120,120,120,189,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,211,0,64,2,144,6,20,10,117,13,160,15,149,28,40,57,36,62,68,57,47,34,12,7,208,142,158,120,120,120,189,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,215,0,96,2,64,6,20,10,123,13,160,15,73,28,0,40,32,56,58,44,39,29,12,6,228,153,158,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,4,0,1,0,168,0,160,1,8,7,0,10,72,13,200,15,163,25,50,41,32,62,49,47,44,32,14,6,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,160,1,8,7,0,10,72,13,200,15,163,25,80,65,40,78,61,59,55,40,17,8,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,160,1,8,7,0,10,72,13,200,15,163,25,60,55,37,71,56,54,51,37,16,7,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,160,1,8,7,0,10,72,13,200,15,163,25,0,31,28,54,42,41,38,28,12,5,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,126,0,112,1,52,8,100,10,47,13,60,15,96,25,45,40,25,65,47,43,43,26,10,4,160,93,120,155,120,120,130,95,120,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,126,0,112,1,52,8,100,10,47,13,60,15,96,25,70,66,31,84,60,56,56,34,14,6,160,93,120,155,120,120,130,95,120,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,126,0,88,1,98,8,140,10,41,13,45,15,152,25,60,39,22,64,44,41,41,24,11,5,161,95,118,147,120,120,130,95,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,126,0,88,1,98,8,140,10,41,13,45,15,152,25,0,20,16,47,32,30,30,18,8,4,161,95,118,147,120,120,130,95,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,0,1,216,2,176,4,100,10,188,12,176,14,87,27,45,42,29,53,63,38,34,31,10,5,175,147,147,120,120,120,175,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,216,2,176,4,100,10,188,12,176,14,87,27,80,80,40,74,88,52,47,43,14,7,175,147,147,120,120,120,175,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,208,2,176,4,100,10,188,12,176,14,87,27,60,63,36,66,78,47,42,38,12,6,175,147,147,120,120,120,175,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,200,2,176,4,100,10,188,12,176,14,87,27,0,42,28,53,66,37,34,31,10,5,175,147,147,120,120,120,175,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,184,0,4,0,1,0,208,0,120,2,20,5,80,10,208,12,0,15,210,27,45,47,32,53,70,42,39,25,14,5,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,208,0,120,2,20,5,80,10,208,12,0,15,210,27,80,87,43,72,95,57,53,34,19,7,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,120,2,20,5,80,10,208,12,0,15,210,27,60,69,39,64,85,51,47,30,17,6,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,208,0,120,2,20,5,80,10,208,12,0,15,210,27,0,40,29,49,65,39,36,23,13,5,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,116,0,240,1,16,4,0,10,168,12,96,14,96,27,45,53,30,64,67,35,37,31,16,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,240,1,16,4,0,10,168,12,96,14,96,27,70,101,41,88,92,48,52,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,240,1,16,4,0,10,168,12,96,14,96,27,60,82,37,79,82,43,46,39,20,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,240,1,16,4,0,10,168,12,96,14,96,27,0,46,28,59,62,32,35,29,15,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,240,0,6,0,1,0,250,0,216,2,176,4,40,10,188,12,92,14,87,27,45,47,29,54,70,40,36,33,9,5,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,250,0,216,2,176,4,40,10,188,12,92,14,87,27,85,95,41,77,100,57,51,47,13,8,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,250,0,200,2,176,4,196,9,128,12,92,14,87,27,50,66,35,65,84,48,43,39,11,6,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,80,2,236,4,128,7,164,11,232,13,96,27,35,40,26,60,58,35,36,28,14,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,8,2,236,4,108,7,164,11,232,13,96,27,25,34,23,54,52,31,32,25,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,116,0,8,2,236,4,108,7,164,11,232,13,96,27,0,27,20,48,46,28,28,22,11,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,185,0,5,0,1,0,142,0,224,1,180,5,132,8,128,12,96,14,38,27,45,37,21,52,60,49,42,35,15,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,142,0,224,1,180,5,132,8,128,12,96,14,38,27,40,46,24,59,67,55,46,39,17,7,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,142,0,224,1,180,5,110,8,128,12,96,14,38,27,50,41,23,55,64,52,44,37,16,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,142,0,212,1,164,5,240,7,88,12,116,14,38,27,50,36,21,52,60,46,37,31,12,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,142,0,208,1,160,5,208,7,88,12,136,14,38,27,0,32,20,49,56,39,34,28,9,6,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,210,0,5,0,1,0,232,0,100,2,232,3,40,10,224,11,222,13,32,28,40,51,23,55,71,34,35,23,12,5,182,127,125,120,120,120,182,127,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,232,0,100,2,232,3,40,10,224,11,222,13,32,28,50,93,31,75,97,47,47,31,17,7,182,127,125,120,120,120,182,127,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,96,2,232,3,20,10,224,11,222,13,32,28,80,72,29,68,84,42,43,28,15,6,182,127,125,120,120,120,182,127,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,0,2,176,4,8,7,144,11,172,13,96,27,40,42,26,59,59,35,36,28,14,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,0,2,176,4,8,7,144,11,172,13,96,27,0,35,24,54,54,32,33,25,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,165,0,4,0,1,0,232,0,200,2,232,3,60,10,224,11,222,13,160,28,45,58,33,56,73,34,35,23,9,8,230,150,120,120,120,120,185,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,232,0,144,2,232,3,60,10,224,11,222,13,32,28,80,94,29,78,98,44,45,29,16,7,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,144,2,232,3,60,10,224,11,222,13,32,28,40,75,28,73,83,42,42,28,15,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,118,2,192,3,140,10,224,11,66,14,32,28,0,45,29,49,70,38,37,23,12,9,177,150,120,120,120,120,177,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,220,0,5,0,1,0,168,0,212,1,72,3,100,10,124,11,196,14,32,27,45,50,23,51,59,38,35,17,13,5,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,212,1,72,3,100,10,124,11,196,14,32,27,55,96,32,72,82,53,48,24,18,7,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,212,1,72,3,100,10,124,11,196,14,32,27,75,78,29,64,74,48,44,22,16,6,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,8,2,136,4,108,7,144,11,116,14,96,27,45,35,24,54,54,32,33,25,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,8,2,136,4,108,7,124,11,212,13,96,27,0,31,22,50,50,30,31,24,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,185,0,4,0,1,0,228,0,145,2,76,4,143,10,188,12,99,14,87,27,45,46,26,53,66,37,34,31,11,5,167,143,143,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,228,0,145,2,76,4,143,10,188,12,99,14,87,27,60,89,36,74,92,52,48,43,15,7,167,143,143,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,228,0,145,2,96,4,143,10,188,12,99,14,87,27,80,77,34,70,87,49,45,40,14,7,167,143,143,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,145,2,96,4,143,10,188,12,99,14,87,27,0,44,25,53,65,37,34,30,10,5,167,143,143,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,5,0,1,0,84,0,96,1,120,5,212,8,148,12,56,14,64,26,42,45,11,68,54,38,38,35,11,7,162,150,135,120,120,120,102,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,96,1,100,5,212,8,148,12,136,14,192,25,65,64,18,75,78,69,54,50,17,7,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,86,0,93,1,76,5,210,8,136,12,136,14,197,25,40,55,16,70,71,63,50,45,16,7,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,109,0,64,1,76,4,187,8,23,12,121,14,244,25,45,32,9,55,45,33,30,26,12,6,165,135,138,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,40,1,232,3,172,8,28,12,116,14,192,25,0,26,15,52,33,15,18,19,9,7,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,210,0,5,0,1,0,229,0,16,3,40,5,60,10,52,13,160,15,238,27,45,46,31,58,62,38,39,24,12,5,186,155,145,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,229,0,16,3,40,5,60,10,52,13,160,15,238,27,80,88,43,81,86,54,54,34,18,7,186,155,145,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,234,2,20,5,80,10,248,12,140,15,220,27,45,70,38,71,76,47,47,29,16,6,184,154,145,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,185,0,64,2,16,4,68,10,8,12,20,15,89,27,40,35,22,45,48,29,25,16,10,4,172,140,148,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,168,0,240,1,132,3,60,10,144,11,176,14,32,27,0,33,21,45,47,28,23,14,10,4,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,45,0,5,0,1,0,169,0,37,2,92,4,76,9,72,13,64,16,98,27,45,34,28,49,54,38,33,24,14,5,167,141,152,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,169,0,37,2,92,4,76,9,72,13,64,16,98,27,80,60,37,64,72,50,44,32,19,7,167,141,152,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,8,2,212,3,36,9,32,13,64,16,71,27,50,60,30,61,71,48,45,25,17,6,167,144,151,120,120,120,197,120,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,178,0,162,1,77,3,116,9,7,13,160,15,178,26,40,36,21,45,48,32,27,19,13,6,163,137,150,120,120,120,197,120,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,128,1,32,3,156,9,12,13,160,15,128,26,0,29,19,41,41,27,22,17,12,5,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,195,0,6,0,5,0,24,1,224,2,176,4,216,9,112,13,60,15,64,27,45,53,26,62,67,39,36,29,3,5,167,135,165,120,120,120,167,135,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,224,2,176,4,216,9,112,13,60,15,64,27,70,98,36,85,92,54,50,39,5,7,167,135,165,120,120,120,167,135,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,224,2,236,4,216,9,72,13,236,14,64,27,36,81,33,80,87,51,55,37,5,6,167,165,165,120,120,120,167,105,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,196,0,216,2,4,6,196,9,72,13,0,15,64,27,40,47,35,66,56,47,47,43,8,7,167,162,180,120,120,120,167,132,135,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,205,0,48,2,28,7,196,9,72,13,0,15,63,27,40,38,32,56,51,47,43,41,12,8,167,120,157,120,120,120,167,120,157,44,45,70,130,58,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,205,0,48,2,28,7,196,9,72,13,0,15,63,27,0,35,30,53,48,45,41,39,11,7,167,120,157,120,120,120,167,120,157,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,230,0,5,0,1,0,0,1,24,2,8,7,236,9,104,13,15,15,224,28,45,30,25,47,53,44,37,27,9,6,216,138,159,120,120,120,107,138,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,24,2,8,7,236,9,104,13,15,15,224,28,90,67,38,70,80,66,56,41,13,9,216,138,159,120,120,120,107,138,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,232,1,108,7,40,10,163,13,57,15,148,28,55,56,37,67,69,62,51,39,12,9,197,114,149,120,120,120,107,131,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,125,1,52,8,148,10,188,13,76,15,32,28,40,30,27,50,48,46,40,32,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,125,1,52,8,148,10,188,13,76,15,32,28,0,27,26,47,45,44,38,30,8,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,165,0,5,0,1,0,179,0,40,2,172,3,96,10,15,12,141,14,32,27,45,47,26,53,60,38,37,17,13,5,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,179,0,40,2,172,3,96,10,15,12,141,14,32,27,75,97,37,76,86,54,53,25,18,7,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,179,0,27,2,0,4,91,10,35,12,144,14,18,27,50,68,33,68,75,49,48,24,16,7,165,134,149,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,180,0,158,1,244,6,38,10,218,12,175,14,141,26,45,32,22,50,42,40,36,27,10,5,161,128,142,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,181,0,144,1,13,7,32,10,239,12,179,14,126,26,0,24,20,46,38,37,34,26,9,4,160,127,142,120,120,120,130,87,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,230,0,6,0,1,0,14,1,24,2,240,6,236,9,112,13,80,15,186,28,50,42,28,57,61,55,44,32,10,7,211,132,156,120,120,120,107,131,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,14,1,24,2,240,6,236,9,112,13,80,15,186,28,75,67,35,72,77,70,55,40,13,8,211,132,156,120,120,120,107,131,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,14,1,24,2,240,6,196,9,112,13,80,15,186,28,45,53,31,64,69,61,48,35,11,7,211,132,156,120,120,120,107,131,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,8,2,120,5,8,7,144,11,56,14,96,27,35,31,26,49,49,29,29,23,11,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,8,2,120,5,8,7,144,11,252,13,96,27,25,28,25,47,47,27,28,21,10,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,116,0,8,2,120,5,8,7,144,11,252,13,96,27,0,24,23,44,44,25,26,20,10,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,250,0,6,0,1,0,187,0,149,1,140,7,245,9,50,13,120,15,96,25,45,42,25,69,36,43,43,26,10,4,160,90,120,122,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,187,0,149,1,140,7,245,9,50,13,120,15,96,25,65,78,34,94,50,59,59,35,14,6,160,90,120,122,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,187,0,149,1,140,7,196,9,50,13,120,15,96,25,45,58,30,82,43,44,47,30,12,5,160,90,120,145,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,120,0,250,1,144,6,188,7,164,11,16,14,13,27,50,27,25,49,47,29,30,22,10,6,166,144,133,123,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,120,0,250,1,180,5,28,7,144,11,252,13,44,27,45,27,27,49,47,29,30,22,10,6,166,144,133,123,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,120,0,250,1,180,5,28,7,144,11,252,13,44,27,0,24,25,46,44,28,28,21,10,5,166,144,133,123,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,220,0,5,0,1,0,116,0,200,1,56,4,96,9,168,12,96,14,96,27,45,43,28,58,58,33,36,30,16,5,167,140,135,120,120,120,197,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,200,1,56,4,96,9,168,12,96,14,96,27,80,66,35,71,71,41,44,37,19,7,167,140,135,120,120,120,197,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,208,1,56,4,46,9,140,12,98,14,96,27,55,59,33,68,68,39,42,35,18,7,167,141,135,120,120,120,197,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,8,2,156,4,188,7,104,11,212,13,96,27,40,39,25,57,57,33,35,27,13,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,8,2,156,4,188,7,104,11,212,13,96,27,0,32,23,51,51,30,31,24,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,70,0,6,0,1,0,240,0,224,2,196,4,140,10,232,13,160,15,64,27,45,54,29,64,70,37,40,32,5,6,167,135,165,120,120,120,167,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,224,2,196,4,140,10,232,13,160,15,64,27,50,83,36,79,86,46,50,39,6,7,167,135,165,120,120,120,167,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,208,2,136,5,176,9,36,14,180,15,117,27,68,67,36,71,61,44,40,37,15,4,196,162,200,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,165,0,16,2,84,6,76,9,116,14,44,16,208,26,40,40,31,61,57,48,42,34,14,7,165,113,136,120,120,120,130,113,136,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,160,0,72,2,220,5,76,9,16,14,44,16,199,27,25,38,30,53,56,42,36,24,14,5,171,161,165,121,122,125,171,137,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,72,2,220,5,76,9,16,14,44,16,199,27,0,32,28,49,52,39,33,22,13,5,171,161,165,121,122,125,171,137,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,19,1,7,0,1,0,229,0,16,3,40,5,60,10,52,13,160,15,238,27,45,46,31,58,62,38,39,24,12,5,186,155,145,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,229,0,16,3,40,5,60,10,52,13,160,15,238,27,75,88,43,81,86,54,54,34,18,7,186,155,145,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,234,2,20,5,40,10,248,12,140,15,220,27,45,70,38,71,76,47,47,29,16,6,184,154,145,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,185,0,64,2,76,4,236,9,28,12,20,15,89,27,40,32,23,45,48,29,25,16,10,4,172,140,148,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,164,0,8,2,0,5,10,9,38,12,216,14,64,27,40,25,19,41,45,29,25,18,9,4,171,137,155,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,153,0,236,1,50,5,109,8,53,12,186,14,51,27,30,23,17,39,44,29,25,19,8,4,170,136,158,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,142,0,208,1,100,5,208,7,68,12,156,14,38,27,0,15,14,34,39,27,23,19,6,3,170,135,161,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,140,0,3,0,1,0,112,0,16,2,220,5,76,9,188,12,116,14,96,27,50,48,30,59,72,40,42,32,16,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,16,2,220,5,76,9,188,12,116,14,96,27,90,78,39,75,91,51,54,41,21,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,16,2,220,5,76,9,188,12,116,14,96,27,0,46,30,58,70,39,41,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,165,0,4,0,1,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,45,66,33,67,77,42,51,25,15,6,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,80,101,41,84,95,52,63,31,18,8,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,40,83,37,76,87,48,57,28,17,7,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,100,2,216,4,60,10,168,12,10,15,0,28,0,51,31,59,68,37,45,22,13,9,167,165,150,120,120,120,167,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,45,52,29,59,64,45,35,22,10,5,186,152,135,120,120,120,192,155,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,80,99,40,81,89,62,48,31,14,7,186,152,135,120,120,120,192,155,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,70,89,38,77,84,59,45,29,14,7,186,152,135,120,120,120,192,155,150,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,24,1,8,3,176,4,120,10,152,13,60,15,32,28,0,47,28,58,61,42,33,22,10,5,186,152,135,120,120,120,192,155,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,160,0,4,0,1,0,215,0,6,2,128,7,236,9,251,12,61,14,144,28,50,45,31,61,55,60,46,36,11,8,175,109,133,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,215,0,6,2,128,7,236,9,251,12,61,14,144,28,70,80,42,81,74,80,61,48,15,11,175,109,133,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,202,0,62,2,30,7,236,9,82,13,228,14,207,28,40,62,39,70,73,69,53,39,13,8,195,127,153,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,69,2,18,7,236,9,92,13,247,14,215,28,0,35,29,51,54,50,39,28,9,6,198,129,156,120,120,120,198,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,154,0,248,1,164,6,176,9,238,12,216,14,96,26,50,39,29,58,54,47,42,30,14,6,163,133,150,120,120,120,130,128,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,154,0,248,1,164,6,176,9,238,12,216,14,96,26,60,76,41,81,76,65,58,42,20,8,163,133,150,120,120,120,130,128,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,154,0,248,1,164,6,176,9,238,12,216,14,96,26,60,68,39,77,72,62,55,40,18,7,163,133,150,120,120,120,130,128,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,154,0,248,1,164,6,176,9,238,12,216,14,96,26,0,34,27,54,50,44,39,28,13,5,163,133,150,120,120,120,130,128,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,200,0,4,0,1,0,184,0,8,2,208,7,236,9,248,12,66,14,128,28,50,40,27,55,61,58,43,32,11,8,185,117,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,8,2,208,7,236,9,248,12,66,14,128,28,70,76,38,76,83,80,60,44,16,12,185,117,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,8,2,208,7,236,9,248,12,66,14,128,28,80,43,28,57,62,60,45,33,12,9,185,117,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,8,2,208,7,236,9,248,12,66,14,128,28,0,27,22,45,50,48,36,26,9,7,185,117,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,199,0,54,2,122,3,81,10,163,11,54,14,159,27,50,61,22,57,69,34,33,19,12,5,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,199,0,54,2,122,3,81,10,163,11,54,14,159,27,60,115,30,78,96,47,45,26,17,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,199,0,54,2,122,3,81,10,163,11,54,14,159,27,40,104,29,74,91,45,43,25,16,6,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,199,0,54,2,122,3,81,10,163,11,54,14,159,27,0,52,20,52,64,32,30,17,11,4,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,216,0,160,2,156,4,35,10,227,12,20,15,214,27,45,44,27,54,58,34,31,24,12,4,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,216,0,160,2,156,4,35,10,227,12,20,15,214,27,80,96,40,81,86,51,46,36,18,7,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,160,2,156,4,35,10,227,12,20,15,214,27,50,85,38,76,81,48,44,34,17,6,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,216,0,160,2,156,4,35,10,227,12,20,15,214,27,0,42,27,54,57,34,31,24,12,4,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,135,0,151,1,220,5,112,8,188,12,136,14,153,24,45,43,21,58,55,49,40,32,10,11,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,151,1,220,5,112,8,188,12,136,14,153,24,80,65,26,72,68,61,49,39,12,13,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,135,0,151,1,220,5,112,8,188,12,136,14,153,24,70,56,24,67,63,56,45,36,12,12,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,135,0,136,1,220,5,112,8,188,12,136,14,153,24,0,38,20,55,52,46,37,30,9,10,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,240,0,7,0,1,0,24,1,240,2,166,4,80,10,192,13,150,15,32,28,45,57,30,66,66,46,36,23,11,5,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,240,2,166,4,80,10,192,13,150,15,32,28,70,109,41,91,91,63,49,32,15,8,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,228,2,175,4,58,10,204,13,162,15,32,28,50,94,40,84,85,57,48,31,14,7,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,24,1,199,2,196,4,4,10,232,13,192,15,32,28,30,77,38,76,78,46,47,29,13,7,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,24,1,184,2,20,5,176,9,244,11,120,15,32,28,25,31,28,51,40,30,33,20,9,5,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,24,1,176,2,40,5,176,9,204,11,236,14,32,28,20,30,28,52,24,7,14,14,9,5,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,24,1,176,2,40,5,176,9,204,11,236,14,32,28,0,33,28,52,40,31,33,14,9,5,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,240,0,5,0,1,0,200,0,208,1,188,7,216,9,248,12,66,14,128,28,45,44,25,57,57,61,46,35,10,8,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,208,1,188,7,216,9,248,12,66,14,128,28,70,77,34,75,75,81,61,46,14,10,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,199,0,227,1,131,7,210,9,248,12,73,14,106,28,75,67,33,72,72,74,57,43,14,9,184,111,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,50,62,37,71,79,48,44,32,16,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,0,38,29,56,62,38,35,25,13,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,45,0,4,0,1,0,152,0,72,1,76,9,124,11,172,13,120,15,160,26,45,41,17,60,53,49,49,26,12,6,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,72,1,76,9,124,11,172,13,120,15,160,26,100,69,22,78,70,64,64,34,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,24,1,136,9,164,11,16,14,120,15,160,26,40,67,21,74,66,57,61,32,15,7,167,97,120,120,120,120,167,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,24,1,136,9,164,11,16,14,120,15,160,26,0,38,16,56,50,43,46,24,11,5,167,97,120,120,120,120,167,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,192,0,40,2,112,3,100,10,164,11,96,14,159,27,50,59,24,59,64,35,34,20,12,5,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,40,2,112,3,100,10,164,11,96,14,159,27,60,124,36,85,93,52,50,29,18,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,40,2,132,3,100,10,164,11,96,14,159,27,40,97,32,77,83,46,45,26,16,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,40,2,56,4,0,10,104,11,36,14,159,27,0,34,21,51,55,31,30,17,11,4,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,6,0,1,0,153,0,168,1,12,3,120,10,168,12,196,14,244,26,45,64,21,71,54,37,41,30,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,168,1,12,3,120,10,168,12,196,14,244,26,60,89,25,84,64,44,49,36,20,9,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,192,1,32,3,120,10,168,12,176,14,244,26,50,79,23,79,60,41,41,38,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,224,1,112,3,196,9,168,12,156,14,244,26,45,68,32,75,57,21,39,36,18,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,153,0,248,1,172,3,252,8,128,12,116,14,244,26,30,33,28,54,31,23,28,25,11,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,153,0,248,1,172,3,28,7,84,11,72,13,244,26,0,31,27,51,38,16,27,24,10,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,195,0,4,0,1,0,135,0,136,1,164,6,192,8,188,12,128,14,153,24,45,42,22,57,51,48,39,31,10,11,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,136,1,164,6,192,8,188,12,128,14,153,24,80,73,30,76,68,64,52,41,13,14,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,135,0,136,1,164,6,192,8,188,12,128,14,153,24,70,59,27,68,61,57,46,37,12,13,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,135,0,136,1,164,6,192,8,188,12,128,14,153,24,0,37,21,53,48,45,36,29,9,10,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,235,0,5,0,1,0,24,1,186,2,40,5,180,9,98,13,20,15,71,28,45,42,28,56,57,42,34,27,9,6,210,133,142,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,186,2,40,5,180,9,98,13,20,15,71,28,60,81,39,79,80,58,48,37,13,8,210,133,142,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,10,1,145,2,70,5,166,9,86,13,2,15,254,27,80,64,33,70,69,51,43,34,11,8,205,129,141,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,84,6,36,9,228,12,96,14,100,25,50,43,19,61,41,35,38,35,9,12,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,64,6,36,9,228,12,96,14,100,25,0,27,15,48,33,28,30,28,7,10,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,195,0,4,0,1,0,153,0,156,1,248,2,100,10,148,12,176,14,244,26,45,52,21,63,48,33,37,27,15,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,70,81,26,79,57,41,46,34,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,80,65,23,71,51,37,41,30,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,144,1,248,2,180,10,208,12,236,14,244,26,0,45,17,60,43,31,35,25,14,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,51,1,124,3,60,5,124,10,93,13,187,14,253,27,45,59,32,70,62,38,33,22,10,5,205,152,124,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,51,1,124,3,60,5,124,10,93,13,187,14,253,27,50,117,45,99,87,54,47,31,15,7,205,152,124,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,9,1,254,2,28,6,68,10,45,13,119,14,49,28,50,93,43,90,79,62,51,33,14,8,187,133,125,120,120,120,249,174,255,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,64,2,108,7,240,9,228,12,16,14,128,28,50,57,37,72,64,71,54,34,13,10,160,105,127,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,224,0,40,2,8,7,176,9,112,13,241,14,64,27,40,42,28,60,56,56,49,43,8,8,255,90,180,120,120,120,187,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,224,0,40,2,8,7,176,9,112,13,241,14,64,27,0,34,25,54,50,50,44,39,7,7,255,90,180,120,120,120,187,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,245,0,6,0,1,0,24,1,248,2,176,4,120,10,152,13,60,15,32,28,45,60,34,66,63,43,37,24,11,6,186,152,152,120,120,120,192,155,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,248,2,176,4,120,10,152,13,60,15,32,28,60,116,48,92,88,60,52,34,16,8,186,152,152,120,120,120,192,155,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,12,1,224,2,100,5,134,10,158,13,64,15,41,28,40,94,45,93,72,60,49,33,15,8,186,148,160,120,120,120,192,155,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,214,0,28,2,28,7,177,10,185,13,82,15,84,28,40,65,36,72,61,57,48,35,14,9,185,127,169,120,120,120,192,155,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,160,0,88,1,212,8,220,10,212,13,100,15,128,28,60,41,16,61,42,44,39,30,11,8,185,107,177,120,120,120,185,107,177,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,204,0,96,1,232,8,220,10,16,14,196,19,88,27,0,33,20,48,32,36,32,12,11,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,175,0,4,0,1,0,184,0,160,1,92,8,100,10,212,13,60,15,128,28,45,39,25,53,56,47,39,34,11,8,185,107,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,160,1,92,8,100,10,212,13,60,15,128,28,70,81,37,76,80,68,56,48,16,12,185,107,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,160,1,92,8,100,10,212,13,60,15,128,28,60,66,33,68,72,61,50,43,14,10,185,107,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,160,1,92,8,100,10,212,13,60,15,128,28,0,29,22,45,48,40,33,29,9,7,185,107,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,45,0,6,0,1,0,208,0,112,2,212,3,60,10,188,12,92,14,87,27,45,57,26,56,67,40,36,33,9,5,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,208,0,112,2,212,3,60,10,188,12,92,14,87,27,75,104,36,76,90,54,48,44,12,7,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,16,2,180,5,192,8,32,13,199,14,92,26,69,77,41,83,68,57,53,42,15,8,163,119,156,137,120,120,167,142,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,88,1,238,7,100,10,132,13,50,15,96,25,30,59,27,78,48,48,52,30,13,6,160,92,147,155,120,120,130,95,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,80,1,30,8,240,10,229,13,181,15,20,26,30,78,34,87,56,53,54,37,16,8,162,95,159,149,120,120,130,95,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,72,1,79,8,124,11,71,14,56,16,200,26,0,38,27,58,40,35,32,27,12,7,165,99,171,142,120,120,130,99,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,210,0,5,0,1,0,148,0,128,1,238,7,60,10,42,13,50,15,96,25,45,39,23,65,47,43,41,26,10,5,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,128,1,238,7,60,10,42,13,50,15,96,25,60,71,32,88,64,58,55,35,14,6,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,128,1,228,7,216,9,248,12,0,15,96,25,60,62,27,83,60,55,52,33,13,6,160,92,120,155,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,120,0,250,1,144,6,188,7,164,11,16,14,13,27,45,27,24,49,46,29,30,22,11,6,166,144,133,123,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,120,0,250,1,180,5,28,7,144,11,252,13,44,27,0,26,24,49,46,29,30,22,11,6,166,144,133,123,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,75,0,5,0,1,0,135,0,88,1,224,6,192,8,188,12,128,14,153,24,45,51,22,63,57,50,41,32,10,11,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,88,1,204,6,192,8,188,12,128,14,153,24,70,74,26,76,68,61,49,39,12,13,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,150,0,162,1,48,6,246,8,164,12,131,14,85,25,70,70,30,74,72,56,45,37,13,9,178,128,130,122,122,134,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,186,0,80,2,196,4,116,9,108,12,141,14,13,27,30,64,37,70,79,47,38,32,16,0,180,135,125,120,120,120,200,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,186,0,80,2,196,4,96,9,108,12,141,14,13,27,0,49,32,61,69,41,33,28,14,0,180,135,125,120,120,120,200,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,4,0,1,0,196,0,104,2,252,3,0,10,28,12,116,14,119,26,53,61,35,71,73,28,34,20,9,8,162,105,132,120,120,120,162,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,208,0,48,2,132,3,220,10,204,11,141,14,0,26,24,60,38,81,60,33,35,16,11,8,162,105,87,120,120,120,162,75,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,229,1,123,3,220,10,204,11,141,14,0,26,51,41,30,65,48,27,28,13,9,6,162,105,87,120,120,120,162,75,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,194,1,24,3,164,11,68,12,241,14,0,26,0,25,28,46,28,24,20,16,11,8,162,135,87,120,120,120,162,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,135,0,3,0,1,0,176,0,72,2,160,5,156,9,188,12,116,14,88,27,45,50,33,60,73,41,39,33,17,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,72,2,160,5,156,9,188,12,116,14,88,27,90,78,41,75,91,51,49,41,21,8,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,88,2,160,5,156,9,188,12,116,14,88,27,0,33,27,50,60,34,32,27,14,5,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,185,0,4,0,1,0,240,0,224,2,4,6,196,9,92,13,80,15,153,28,45,37,29,51,56,41,29,26,9,5,197,176,161,135,120,120,220,176,161,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,224,2,4,6,196,9,92,13,80,15,153,28,80,59,37,64,71,53,37,33,11,6,197,176,161,135,120,120,220,176,161,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,232,2,4,6,196,9,92,13,80,15,153,28,60,55,35,64,64,50,35,31,11,6,197,179,161,135,120,120,220,179,161,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,240,2,4,6,196,9,92,13,80,15,153,28,0,33,27,50,50,39,27,24,8,5,197,179,161,135,120,120,220,179,161,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,50,34,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,60,68,37,68,73,67,51,38,12,7,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,60,68,37,68,73,67,51,38,12,7,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,0,34,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,160,0,4,0,1,0,229,0,183,2,36,5,196,9,228,12,216,14,197,27,50,43,28,56,58,35,35,23,12,5,190,159,148,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,229,0,183,2,36,5,196,9,228,12,216,14,197,27,60,86,40,80,82,50,50,32,17,7,190,159,148,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,229,0,183,2,36,5,196,9,228,12,216,14,197,27,50,76,38,75,78,47,47,30,16,6,190,159,148,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,229,0,183,2,36,5,196,9,228,12,216,14,197,27,0,38,27,53,55,33,33,21,11,4,190,159,148,120,120,120,237,165,165,44,45,70,130,58,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,184,0,200,1,232,3,156,9,68,12,141,14,128,26,45,45,27,56,58,38,31,24,18,5,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,200,1,232,3,156,9,68,12,141,14,128,26,70,106,41,86,89,58,48,37,27,8,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,200,1,232,3,156,9,68,12,141,14,128,26,60,85,37,77,79,52,43,33,24,7,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,200,1,232,3,156,9,68,12,141,14,128,26,0,41,25,53,55,36,29,23,17,5,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,225,0,5,0,1,0,224,0,136,2,84,4,24,11,228,12,136,14,96,27,45,34,20,41,60,29,29,29,9,4,167,167,135,120,120,120,167,167,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,224,0,136,2,84,4,24,11,228,12,136,14,96,27,60,114,38,76,110,53,53,53,16,8,167,167,135,120,120,120,167,167,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,136,2,84,4,24,11,228,12,136,14,96,27,60,102,36,72,104,50,50,50,15,7,167,167,135,120,120,120,167,167,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,224,0,128,2,84,4,24,11,228,12,136,14,96,27,60,61,28,56,81,39,39,39,12,6,167,167,135,120,120,120,167,167,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,224,0,120,2,116,4,24,11,228,12,136,14,96,27,0,26,18,37,54,26,26,26,8,4,167,167,135,120,120,120,167,167,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,140,0,32,2,160,5,36,9,248,12,41,14,32,27,45,47,30,64,56,56,40,40,15,8,167,135,180,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,32,2,160,5,16,9,148,12,41,14,32,27,48,82,37,79,86,79,64,53,26,9,170,135,157,120,120,120,140,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,172,0,32,2,160,5,16,9,168,12,41,14,160,27,50,67,34,67,86,71,57,51,16,8,170,120,120,120,120,120,170,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,32,2,148,5,16,9,168,12,41,14,160,27,60,52,34,68,67,54,45,35,15,8,170,120,135,120,120,120,140,90,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,204,0,33,2,140,5,16,9,168,12,141,14,160,27,0,39,31,52,64,56,38,30,11,8,170,135,150,120,120,120,140,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,175,0,4,0,1,0,176,0,64,1,172,3,56,9,228,12,60,15,144,26,45,39,5,66,34,17,26,29,11,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,64,1,172,3,56,9,228,12,60,15,144,26,80,65,7,85,44,22,33,37,14,9,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,64,1,152,3,56,9,228,12,60,15,144,26,50,48,6,73,38,19,28,31,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,64,1,132,3,56,9,228,12,60,15,144,26,0,35,5,62,32,16,24,27,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,236,0,136,3,140,5,116,9,88,12,116,14,224,27,50,55,32,56,75,41,43,27,10,8,250,120,210,120,120,120,255,120,165,44,45,70,130,57,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,236,0,136,3,140,5,136,9,88,12,116,14,224,27,75,103,34,81,98,53,57,36,12,6,225,120,210,120,120,120,255,120,165,44,60,70,130,57,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,220,0,80,3,80,5,36,9,128,12,41,14,224,27,40,64,28,59,81,41,52,32,12,7,167,120,210,120,120,120,255,120,165,44,60,70,130,57,0,0,0,0,43,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,173,2,87,4,16,9,48,12,41,14,128,27,35,60,28,49,77,34,51,36,15,6,237,207,192,120,120,120,141,120,147,44,55,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,76,2,10,4,16,9,28,12,41,14,112,27,35,70,35,63,75,31,48,33,17,8,221,148,186,120,120,120,141,120,147,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,0,1,24,2,172,3,252,8,28,12,41,14,112,27,0,23,20,36,37,17,25,19,9,4,221,148,186,120,120,120,141,120,147,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,248,0,56,2,84,6,36,9,28,12,166,14,96,28,49,28,22,43,55,38,28,23,9,4,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,56,2,84,6,36,9,28,12,166,14,96,28,41,87,39,77,98,67,50,41,17,7,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,248,0,8,2,84,6,212,8,28,12,166,14,96,28,31,82,37,72,92,63,47,38,16,7,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,8,1,232,1,44,6,152,8,204,11,166,14,96,28,90,50,23,66,66,38,30,25,14,8,165,120,135,120,120,120,150,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,190,0,120,1,231,4,195,8,205,12,116,14,160,28,0,33,30,54,32,25,21,18,7,7,120,103,105,120,120,120,120,100,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,196,0,7,0,5,0,72,1,136,3,62,5,140,10,112,13,191,14,32,28,51,43,28,63,56,33,28,18,8,4,207,150,105,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,72,1,136,3,62,5,140,10,112,13,191,14,32,28,45,104,44,98,87,51,44,28,13,6,207,150,105,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,72,1,136,3,62,5,140,10,112,13,191,14,32,28,14,92,41,92,82,48,41,26,12,6,207,150,105,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,33,0,6,1,95,3,155,5,186,9,22,13,91,14,176,27,23,65,36,77,72,48,45,36,10,7,187,142,142,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,33,0,196,0,32,3,249,5,232,8,188,12,247,13,64,27,33,41,29,58,60,50,50,50,9,8,167,135,180,120,120,120,167,105,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,212,0,244,1,133,7,136,9,228,12,91,14,64,27,30,38,38,56,53,53,40,39,16,9,167,90,180,120,120,120,137,75,150,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,212,0,184,1,177,7,196,9,52,13,91,14,192,27,0,34,40,51,44,44,32,28,11,10,167,90,105,120,120,120,122,75,90,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,230,0,5,0,1,0,0,1,24,2,108,7,236,9,104,13,15,15,224,28,45,29,25,47,53,44,37,27,9,6,216,138,159,120,120,120,107,138,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,24,2,108,7,236,9,104,13,15,15,224,28,90,67,38,70,80,66,56,41,13,9,216,138,159,120,120,120,107,138,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,232,1,188,7,40,10,163,13,57,15,148,28,55,55,37,67,69,62,51,39,12,9,197,114,149,120,120,120,107,131,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,125,1,52,8,148,10,188,13,76,15,32,28,40,30,27,50,48,46,40,32,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,125,1,52,8,148,10,188,13,76,15,32,28,0,27,26,47,45,44,38,30,8,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,6,0,1,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,45,36,22,46,52,33,32,15,11,4,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,40,116,40,82,93,59,58,27,20,8,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,70,94,36,74,84,53,52,24,18,7,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,196,0,24,2,164,6,116,9,228,12,36,14,64,27,30,49,30,57,68,57,53,46,8,8,167,135,180,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,199,0,101,1,123,7,201,10,228,12,107,14,64,27,35,38,24,47,48,45,44,36,11,6,156,128,153,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,199,0,101,1,123,7,201,10,228,12,107,14,64,27,0,29,21,41,42,39,39,31,9,5,156,128,153,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,240,0,168,2,28,7,176,9,112,13,10,15,96,27,44,48,34,65,59,56,38,23,6,8,165,135,240,120,120,120,195,105,165,44,45,70,130,57,0,0,0,0,43,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,176,2,28,7,136,9,112,13,60,15,96,27,77,68,36,76,79,74,40,24,8,6,170,120,180,120,120,120,200,120,165,44,45,70,130,57,0,0,0,0,43,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,163,2,244,6,116,9,72,13,60,15,96,27,77,54,29,62,71,62,56,25,13,6,167,120,180,120,120,120,242,150,150,44,45,70,130,57,0,0,0,0,43,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,223,2,114,6,216,9,172,13,60,15,96,28,35,36,27,56,50,49,42,26,10,7,167,120,180,120,120,120,242,150,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,240,0,223,2,26,6,236,9,172,13,60,15,96,28,0,28,25,53,43,40,35,21,7,8,167,105,180,120,120,120,242,135,150,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,193,0,6,0,1,0,104,0,160,1,9,8,80,10,72,13,60,15,160,27,42,46,10,66,56,58,42,33,10,8,150,165,150,120,120,120,150,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,0,160,1,20,8,160,10,72,13,60,15,32,27,40,63,20,72,72,77,67,37,15,8,167,120,150,120,120,120,167,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,179,1,232,7,80,10,52,13,60,15,64,27,51,45,20,70,53,50,46,25,9,8,180,90,150,120,120,120,180,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,198,0,48,2,8,7,136,9,46,13,249,14,212,25,30,40,24,62,57,51,41,26,11,8,157,117,150,120,120,120,167,90,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,201,0,94,2,44,6,72,9,183,12,226,14,170,25,30,17,18,36,40,36,29,17,5,6,148,154,138,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,210,0,141,2,150,5,24,9,128,12,15,15,77,25,0,19,23,36,44,37,29,17,3,8,139,168,138,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,180,0,4,0,1,0,168,0,232,1,132,3,216,9,164,11,141,14,32,27,45,56,28,58,64,39,36,18,13,5,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,232,1,132,3,216,9,164,11,141,14,32,27,70,115,40,83,92,56,51,26,19,8,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,232,1,132,3,216,9,164,11,141,14,32,27,65,93,36,74,83,50,46,23,17,7,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,232,1,152,3,216,9,164,11,141,14,32,27,0,35,25,45,52,29,27,15,11,4,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,24,1,168,3,205,5,60,10,92,13,216,14,32,27,36,52,28,64,61,46,40,35,8,4,200,135,210,120,120,120,255,150,135,44,60,70,130,55,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,168,3,205,5,60,10,92,13,216,14,32,27,29,112,41,94,90,67,58,52,12,6,200,135,210,120,120,120,255,150,135,44,60,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,8,1,168,3,62,5,216,9,188,12,166,14,32,27,39,128,38,94,103,79,65,53,16,8,185,180,165,120,120,120,245,135,120,44,60,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,2,1,128,3,34,5,184,9,164,12,173,14,60,27,42,108,37,86,98,72,60,48,15,8,185,175,159,120,120,120,245,135,120,44,50,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,232,0,185,2,116,4,56,9,68,12,203,14,176,27,84,52,33,55,80,46,39,31,11,8,185,157,135,120,120,120,194,105,111,44,45,70,130,57,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,200,0,193,2,196,4,252,8,128,12,241,14,32,28,0,26,28,42,56,36,32,26,8,8,185,180,120,120,120,120,155,120,105,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,139,0,3,0,1,0,158,0,56,1,165,8,215,10,49,13,9,15,112,26,50,32,10,59,42,49,50,25,11,5,166,105,120,120,120,120,130,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,158,0,56,1,165,8,215,10,49,13,9,15,112,26,90,73,15,88,64,74,75,37,17,8,166,105,120,120,120,120,130,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,158,0,56,1,165,8,215,10,49,13,9,15,112,26,0,33,10,60,43,50,51,25,11,5,166,105,120,120,120,120,130,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,235,0,5,0,1,0,192,0,176,1,188,7,60,10,102,13,191,14,128,28,45,27,21,44,45,44,34,28,8,6,185,107,135,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,176,1,188,7,60,10,102,13,191,14,128,28,70,80,35,76,77,75,59,47,15,11,185,107,135,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,188,0,164,1,212,7,72,10,99,13,196,14,96,28,70,69,32,71,72,69,55,44,14,10,184,107,134,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,17,1,207,8,213,10,57,13,7,15,236,26,50,38,13,54,50,49,46,28,11,7,174,105,118,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,118,0,224,0,35,9,4,11,42,13,30,15,112,26,0,23,7,45,40,39,39,21,10,6,171,105,112,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,34,35,26,50,60,34,36,27,14,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,60,80,39,76,92,52,54,42,22,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,220,0,224,1,120,5,232,8,68,12,191,14,192,28,54,54,36,55,79,57,35,30,16,7,120,120,120,120,120,120,165,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,220,0,164,1,120,4,152,8,88,12,141,14,64,28,45,56,44,77,54,30,24,26,15,9,120,120,120,120,120,120,60,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,140,0,84,1,222,3,56,9,188,12,141,14,192,27,0,21,28,46,37,15,7,9,9,8,120,105,90,120,120,120,60,120,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,6,0,1,0,248,0,104,2,196,4,76,9,28,12,166,14,96,28,46,45,26,58,66,49,36,30,12,5,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,104,2,196,4,76,9,28,12,166,14,96,28,25,103,40,88,100,75,55,45,19,8,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,248,0,104,2,176,4,76,9,28,12,166,14,96,28,43,73,33,73,84,63,46,38,16,7,167,120,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,198,0,248,1,176,4,76,9,58,12,204,14,112,28,48,72,28,76,72,41,43,25,14,8,166,142,142,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,192,0,174,1,196,4,172,8,204,11,141,14,224,28,46,40,28,64,39,27,18,16,8,8,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,134,1,189,3,92,8,204,11,141,14,224,28,0,33,24,58,38,22,15,12,9,8,152,120,75,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,180,0,137,2,205,5,126,9,233,12,116,14,176,27,40,46,32,60,68,44,39,31,13,3,174,157,145,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,180,0,137,2,205,5,126,9,233,12,116,14,176,27,66,104,48,89,101,65,58,47,20,4,174,157,145,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,102,2,173,6,120,9,242,12,86,14,243,27,94,61,33,67,76,59,50,41,14,6,180,144,158,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,99,1,152,8,140,10,152,13,166,14,32,28,40,44,33,56,50,60,46,33,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,31,30,47,48,44,40,32,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,95,0,6,0,1,0,136,0,72,1,138,8,200,10,134,13,113,15,236,26,45,44,7,65,55,56,44,27,11,7,172,133,129,120,120,120,180,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,128,0,72,1,142,8,210,10,82,13,98,15,224,26,50,64,10,75,75,77,72,37,16,8,158,112,135,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,72,1,142,8,210,10,82,13,98,15,224,26,40,64,10,75,75,77,72,37,16,8,158,112,135,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,169,0,216,1,108,7,60,10,92,13,20,15,32,27,35,66,33,76,73,60,56,36,18,4,173,127,122,120,120,120,167,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,50,37,26,51,63,35,36,28,14,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,0,21,20,38,47,26,27,21,10,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,7,0,1,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,45,36,22,46,52,33,32,15,11,4,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,40,116,40,82,93,59,58,27,20,8,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,179,0,50,2,175,3,96,10,15,12,141,14,32,27,70,94,36,74,84,53,52,24,18,7,166,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,196,0,24,2,164,6,116,9,228,12,36,14,64,27,30,49,30,57,68,57,53,46,8,8,167,135,180,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,199,0,112,1,123,7,201,10,228,12,107,14,64,27,35,37,24,47,48,45,44,36,11,6,156,128,153,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,199,0,112,1,123,7,201,10,228,12,107,14,64,27,55,37,24,47,48,45,44,36,11,6,156,128,153,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,208,0,128,2,238,5,96,9,52,13,216,14,64,27,0,21,20,40,48,36,32,28,7,8,252,90,165,120,120,120,252,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,170,0,4,0,1,0,188,0,0,2,84,6,0,10,132,13,170,15,32,27,50,33,26,55,43,41,38,26,9,5,152,126,147,120,120,120,144,148,174,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,188,0,0,2,84,6,0,10,132,13,170,15,32,27,60,84,41,87,68,66,60,42,15,8,152,126,147,120,120,120,144,148,174,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,188,0,0,2,84,6,0,10,132,13,170,15,32,27,60,75,39,82,64,62,57,40,14,8,152,126,147,120,120,120,144,148,174,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,188,0,0,2,84,6,0,10,132,13,170,15,32,27,0,33,26,55,43,41,38,26,9,5,152,126,147,120,120,120,144,148,174,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,100,0,4,0,1,0,176,0,112,1,112,3,136,9,184,11,60,15,144,26,50,50,12,64,58,30,27,18,15,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,112,1,112,3,136,9,184,11,60,15,144,26,50,84,16,84,76,40,36,24,20,10,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,112,1,112,3,136,9,184,11,60,15,144,26,70,67,14,74,67,35,32,21,17,8,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,112,1,132,3,136,9,184,11,60,15,144,26,0,34,12,52,47,25,22,15,12,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,4,0,33,0,152,0,48,1,136,9,204,11,232,13,220,15,160,26,52,45,18,59,59,53,47,28,13,6,167,110,120,120,120,120,167,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,48,1,136,9,204,11,232,13,220,15,160,26,75,71,23,74,74,66,58,35,17,8,167,110,120,120,120,120,167,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,48,1,136,9,204,11,232,13,220,15,160,26,78,52,20,64,64,57,50,30,14,7,167,110,120,120,120,120,167,110,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,48,1,136,9,204,11,232,13,220,15,64,26,0,20,11,40,41,38,39,22,9,8,175,105,105,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,210,0,5,0,1,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,50,57,24,58,65,39,36,20,14,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,40,96,31,76,85,51,46,26,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,70,96,31,76,85,51,46,26,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,14,2,162,3,255,9,218,11,171,14,124,27,50,69,33,65,78,42,41,26,17,7,170,136,137,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,192,0,32,2,192,3,0,10,224,11,176,14,159,27,0,40,25,49,59,31,31,20,12,5,172,138,135,120,120,120,167,138,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,45,0,5,0,1,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,45,50,25,57,68,37,31,26,10,5,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,50,107,37,84,100,54,45,38,14,7,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,218,0,120,2,169,3,161,10,109,12,71,14,60,27,60,103,28,69,91,51,41,36,16,8,166,145,137,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,216,1,12,3,196,9,254,11,157,14,216,26,50,65,24,63,63,44,40,23,17,8,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,216,1,12,3,196,9,254,11,157,14,216,26,0,42,20,51,51,35,32,19,14,6,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,33,0,152,0,32,1,224,8,4,11,52,13,0,15,160,26,45,44,6,66,58,59,60,28,13,6,175,105,120,120,120,120,175,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,70,72,10,83,73,74,75,36,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,24,1,172,8,4,11,12,13,216,14,64,26,70,45,10,60,60,63,63,34,11,8,167,105,120,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,240,0,168,2,164,6,136,9,72,13,60,15,96,27,65,36,27,54,45,54,45,22,12,6,167,135,180,120,120,120,242,135,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,240,0,216,2,26,6,216,9,172,13,60,15,96,28,0,32,28,56,44,44,36,21,7,8,167,120,180,120,120,120,242,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,165,0,3,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,110,86,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,116,0,24,2,136,5,16,9,88,12,16,14,88,27,55,24,22,43,46,30,28,21,11,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,72,2,120,5,208,7,224,11,152,13,88,27,0,21,22,43,37,30,13,11,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,3,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,50,50,31,60,73,41,43,33,17,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,90,86,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,0,42,28,55,67,38,39,30,16,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,160,0,4,0,1,0,200,0,248,1,108,7,236,9,228,12,16,14,128,28,50,45,27,61,54,66,52,36,11,8,160,105,127,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,248,1,108,7,240,9,228,12,16,14,128,28,50,80,36,81,72,88,70,48,15,11,160,105,127,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,248,1,108,7,240,9,228,12,16,14,128,28,60,65,32,73,64,79,63,44,13,10,160,105,127,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,240,1,128,7,248,9,228,12,16,14,128,28,0,35,24,53,47,58,46,32,10,7,160,105,127,120,120,120,160,105,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,3,0,1,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,50,49,30,62,69,42,44,32,16,6,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,90,88,40,83,92,56,58,43,22,8,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,0,42,27,57,63,38,40,30,15,5,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,3,0,1,0,200,0,40,2,12,3,200,10,188,12,36,14,32,28,50,64,25,60,60,38,38,22,15,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,40,2,12,3,200,10,188,12,36,14,32,28,90,100,32,76,76,48,48,28,19,8,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,40,2,12,3,200,10,188,12,36,14,32,28,0,54,26,55,55,35,35,20,14,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,140,0,3,0,1,0,116,0,13,2,40,5,152,8,228,12,136,14,96,27,50,49,30,59,72,40,42,32,17,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,13,2,40,5,152,8,228,12,136,14,96,27,90,88,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,13,2,40,5,152,8,228,12,136,14,96,27,0,40,28,53,65,36,38,29,15,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,50,0,3,0,1,0,184,0,96,1,232,3,192,8,144,11,136,14,144,26,50,42,23,49,55,43,40,29,17,7,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,96,1,232,3,192,8,144,11,136,14,144,26,100,58,27,58,64,51,47,34,20,8,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,96,1,232,3,152,8,104,11,136,14,144,26,0,34,22,44,49,38,33,22,16,6,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,100,0,3,0,1,0,216,0,68,2,0,5,160,10,248,12,191,14,64,29,45,40,26,55,68,37,42,32,19,0,150,144,120,120,120,120,150,93,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,192,0,224,1,16,4,180,10,12,13,140,15,128,28,100,28,27,45,50,33,27,20,7,0,150,120,120,120,120,120,150,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,17,0,192,0,224,1,16,4,180,10,12,13,140,15,128,28,0,23,26,42,42,32,25,19,7,0,150,120,120,120,120,120,150,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,140,0,3,0,1,0,8,1,223,2,224,6,116,9,112,13,60,15,96,27,50,31,25,51,52,46,27,15,5,4,225,120,180,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,8,1,223,2,224,6,116,9,112,13,60,15,96,27,90,83,41,83,85,75,44,25,9,7,225,120,180,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,163,2,202,6,116,9,72,13,60,15,96,27,0,32,23,48,54,44,39,19,10,5,192,120,180,120,120,120,255,150,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,0,0,4,0,1,0,244,0,152,2,16,4,240,10,148,12,41,14,96,27,45,49,21,52,68,32,27,27,11,5,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,152,2,16,4,240,10,148,12,41,14,96,27,80,109,30,74,104,50,46,46,15,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,136,2,36,4,240,10,148,12,41,14,96,27,90,85,29,71,92,47,44,44,14,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,244,0,136,2,36,4,24,11,168,12,76,14,96,27,0,63,26,63,76,42,39,39,13,6,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,104,0,8,1,72,8,64,11,228,12,88,17,160,27,45,42,11,57,39,57,61,22,13,9,150,135,157,120,120,120,150,135,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,0,8,1,132,8,224,11,32,13,48,17,32,27,50,52,17,61,44,57,61,22,16,9,167,120,150,120,120,120,167,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,24,1,112,8,224,11,32,13,68,17,32,27,50,36,15,51,35,47,51,19,14,8,167,120,150,120,120,120,167,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,128,0,128,1,168,7,220,10,72,13,164,16,64,27,40,52,22,66,30,57,51,28,13,9,180,137,200,140,120,120,180,152,215,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,168,0,3,2,28,7,80,10,32,13,120,15,64,28,33,50,27,68,55,42,51,21,6,9,167,150,120,120,120,120,167,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,168,0,232,1,164,6,40,10,52,13,140,15,64,28,0,44,30,61,48,50,48,22,6,9,167,127,120,120,120,120,167,127,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,60,0,4,0,1,0,160,0,16,1,199,8,28,12,132,13,8,17,88,27,50,37,15,50,35,39,46,15,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,16,1,199,8,28,12,132,13,8,17,88,27,60,47,17,57,39,44,52,17,17,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,32,1,199,8,28,12,132,13,8,17,88,27,50,46,17,57,39,44,52,17,17,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,160,0,32,1,199,8,28,12,132,13,8,17,88,27,0,33,14,48,33,37,44,14,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,152,0,72,1,172,3,76,9,48,12,92,13,128,26,45,42,26,52,43,32,29,28,17,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,80,1,36,4,56,9,168,12,232,13,128,26,50,61,32,64,54,39,36,35,21,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,136,1,76,4,36,9,148,12,36,14,128,26,33,61,32,68,54,43,39,32,21,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,140,0,200,1,236,4,252,8,128,12,212,13,32,27,26,60,24,64,74,68,55,45,22,7,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,140,0,224,1,80,5,232,8,188,12,56,14,32,27,40,58,24,64,74,68,55,45,22,7,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,116,0,224,1,200,5,196,9,228,12,116,14,88,27,0,51,32,62,68,42,44,25,18,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,60,0,4,0,1,0,153,0,52,1,16,8,20,10,132,13,80,15,88,27,50,39,28,44,44,42,48,12,15,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,72,1,52,8,20,10,132,13,80,15,88,27,60,55,33,52,52,50,57,14,18,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,72,1,52,8,20,10,132,13,80,15,88,27,50,38,28,44,44,42,48,12,15,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,48,1,112,8,80,10,212,13,80,15,88,27,0,29,28,36,24,28,32,12,15,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,7,0,1,0,195,0,39,1,167,8,244,11,212,13,56,19,88,27,40,45,15,60,30,35,45,15,20,10,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,180,0,24,1,132,8,224,11,132,13,152,18,88,27,20,57,15,68,36,42,52,21,15,10,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,195,0,39,1,167,8,211,11,115,13,36,19,88,27,55,40,15,55,30,35,40,15,15,10,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,195,0,39,1,92,8,176,9,52,13,12,18,88,27,80,48,14,62,48,33,43,14,14,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,195,0,39,1,156,4,252,8,168,12,60,15,88,27,60,58,14,72,48,28,33,9,9,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,195,0,39,1,172,3,252,8,168,12,60,15,88,27,45,35,14,52,33,24,24,14,9,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,172,0,16,1,132,3,252,8,168,12,60,15,88,27,0,30,14,48,33,24,24,14,9,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,6,0,1,0,186,0,108,2,221,4,250,8,154,12,103,14,96,28,40,47,30,59,70,52,38,31,13,6,167,120,149,120,120,120,197,120,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,186,0,108,2,221,4,250,8,154,12,103,14,96,28,47,97,43,85,100,75,55,45,19,8,167,120,149,120,120,120,197,120,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,208,1,136,4,152,8,188,12,76,14,96,28,28,76,32,85,68,52,52,32,19,8,167,120,142,120,120,120,197,120,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,137,0,160,1,16,4,185,8,163,12,101,14,151,27,39,69,32,76,62,36,36,24,19,8,165,123,145,120,120,120,197,120,142,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,120,1,212,3,232,8,128,12,136,14,128,26,60,42,35,46,43,31,31,18,15,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,184,0,120,1,112,3,232,8,128,12,136,14,128,26,0,38,32,43,40,26,29,17,14,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,6,0,1,0,24,1,0,3,176,4,4,11,172,13,200,15,64,27,45,56,30,58,72,40,34,24,4,5,187,135,165,120,120,120,187,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,0,3,176,4,4,11,172,13,200,15,64,27,56,114,43,83,102,57,49,34,6,8,187,135,165,120,120,120,187,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,246,0,208,2,140,5,20,10,252,13,64,16,88,27,50,85,38,84,92,52,44,24,18,10,226,150,128,120,120,120,235,150,128,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,227,0,80,2,8,7,20,10,252,13,108,17,88,27,44,48,28,60,64,44,36,20,15,9,208,138,160,128,134,145,235,150,156,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,204,0,112,1,52,8,160,10,16,14,36,19,88,27,75,40,22,52,44,39,39,15,13,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,204,0,56,1,192,8,124,11,16,14,196,19,88,27,0,35,20,48,32,36,32,12,11,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,7,0,1,0,244,0,152,2,16,4,240,10,148,12,41,14,96,27,50,55,23,57,69,41,35,35,12,5,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,152,2,16,4,240,10,148,12,41,14,96,27,80,105,30,74,100,54,46,46,15,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,136,2,36,4,240,10,148,12,41,14,96,27,34,86,29,71,92,51,44,44,15,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,244,0,216,2,116,4,160,10,148,12,41,14,96,27,60,78,30,65,94,47,40,40,15,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,246,0,200,2,120,5,216,9,132,13,224,16,88,27,50,64,34,76,64,48,44,20,12,10,226,150,136,120,120,120,235,150,136,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,204,0,128,1,52,8,44,11,248,12,164,16,88,27,68,32,20,48,36,36,36,16,12,8,187,125,145,137,150,175,187,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,204,0,56,1,192,8,124,11,16,14,172,18,88,27,0,36,21,48,32,36,36,16,8,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,5,0,1,0,174,0,128,2,26,6,96,9,218,12,91,14,192,27,40,49,33,60,68,48,40,37,13,7,168,165,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,174,0,128,2,26,6,96,9,218,12,91,14,192,27,66,93,46,82,94,66,55,51,18,10,168,165,165,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,78,2,67,7,116,9,248,12,66,14,32,28,94,53,28,61,69,60,49,41,13,6,184,135,168,120,120,120,169,138,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,99,1,152,8,140,10,152,13,166,14,32,28,40,40,31,54,47,57,44,32,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,34,31,49,49,45,42,33,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,7,0,1,0,0,1,8,2,12,3,100,10,108,12,60,15,224,27,41,82,39,72,72,48,42,23,13,6,165,97,107,120,120,120,165,97,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,8,2,12,3,100,10,108,12,60,15,224,27,30,131,49,91,91,60,53,29,17,7,165,97,107,120,120,120,165,97,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,8,2,12,3,100,10,108,12,60,15,224,27,35,131,49,91,91,60,53,29,17,7,165,97,107,120,120,120,165,97,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,24,2,100,5,252,8,188,12,156,14,32,27,60,58,28,76,56,60,56,40,20,8,170,135,200,120,120,120,140,120,185,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,160,0,144,1,208,7,120,10,172,13,224,16,88,27,48,43,20,60,52,40,48,16,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,72,1,52,8,4,11,192,13,224,16,88,27,45,36,16,52,48,40,48,16,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,160,0,72,1,92,8,220,10,36,14,224,16,88,27,0,29,16,46,42,37,33,16,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,7,0,1,0,152,0,80,1,132,3,232,8,168,12,232,13,128,26,40,51,25,61,51,30,23,23,17,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,80,1,16,4,56,9,168,12,232,13,128,26,82,70,30,72,60,44,40,39,24,8,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,240,1,180,5,172,8,221,12,78,14,88,27,49,48,28,60,52,64,42,39,17,8,166,137,154,150,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,169,0,125,1,88,7,36,9,254,12,140,14,218,27,39,45,24,48,60,64,44,39,13,8,168,144,156,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,165,0,64,1,52,8,216,9,28,13,180,14,240,27,44,44,16,60,60,51,43,37,12,8,83,127,134,120,120,120,112,120,134,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,140,0,24,1,172,8,80,10,92,13,231,14,12,28,41,40,20,48,56,52,41,34,10,8,168,105,130,120,120,120,197,120,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,156,0,48,1,56,9,120,10,92,13,10,15,32,28,0,34,20,52,48,44,40,32,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,6,0,1,0,184,0,96,1,112,3,192,8,144,11,136,14,144,26,55,29,19,40,45,31,28,21,14,6,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,96,1,192,3,192,8,144,11,136,14,144,26,20,59,27,58,65,51,48,34,20,8,162,135,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,33,0,179,0,80,1,232,3,96,9,48,12,6,15,177,26,60,66,29,65,56,52,54,36,22,9,166,133,148,122,124,129,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,33,0,164,0,56,1,148,7,36,9,148,12,57,16,2,27,79,49,22,58,32,48,52,26,19,8,176,129,143,129,137,151,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,148,0,16,1,152,8,200,10,188,12,128,17,88,27,84,37,16,52,36,40,48,16,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,40,1,199,8,28,12,132,13,8,17,88,27,0,36,16,52,36,36,40,16,12,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,40,0,6,0,1,0,140,0,232,1,196,4,36,9,128,12,41,14,32,27,40,51,30,65,61,55,44,43,21,7,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,140,0,240,1,196,4,36,9,128,12,41,14,32,27,45,65,34,73,69,62,50,49,24,8,170,135,165,120,120,120,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,158,0,8,2,80,5,16,9,188,12,148,14,0,28,50,59,34,72,64,59,53,42,18,9,172,128,153,127,132,143,140,120,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,192,1,84,6,56,9,208,12,40,15,51,29,45,55,27,68,51,51,51,30,10,10,175,120,137,137,150,175,175,120,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,153,0,96,1,148,7,196,9,92,13,80,15,88,27,15,31,28,40,40,36,44,12,9,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,153,0,40,1,228,7,96,9,112,13,80,15,88,27,0,26,28,32,28,28,24,8,9,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,5,0,1,0,188,0,40,1,228,7,136,9,52,13,8,17,88,27,40,36,9,54,51,42,39,12,12,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,188,0,40,1,188,7,176,9,12,13,188,17,88,27,65,55,11,68,64,53,49,15,15,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,154,0,96,1,244,6,156,9,208,12,244,16,88,27,50,52,15,66,57,49,49,22,17,8,178,137,161,129,135,148,187,125,162,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,160,1,84,6,96,9,188,12,164,16,88,27,40,33,23,48,51,34,37,25,15,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,224,1,44,6,116,9,12,13,224,16,88,27,0,30,24,48,50,34,34,21,13,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,190,0,5,0,1,0,0,1,88,2,36,4,80,10,28,12,36,14,15,28,50,34,28,41,62,28,36,23,6,5,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,88,2,36,4,80,10,28,12,36,14,15,28,50,69,39,64,82,39,50,32,8,7,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,88,2,36,4,80,10,28,12,36,14,15,28,50,69,39,64,82,39,50,32,8,7,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,88,2,36,4,80,10,28,12,36,14,15,28,40,50,33,55,70,33,42,27,7,6,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,88,2,36,4,80,10,28,12,36,14,15,28,0,24,23,38,49,23,30,19,5,4,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,200,0,4,0,1,0,184,0,200,1,168,7,216,9,248,12,66,14,128,28,50,36,26,44,49,52,44,30,11,8,185,153,127,120,120,120,185,200,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,200,1,168,7,216,9,248,12,66,14,128,28,80,68,36,60,68,72,60,41,15,11,185,153,127,120,120,120,185,200,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,200,1,168,7,216,9,248,12,66,14,128,28,70,56,34,52,62,66,55,38,13,10,185,153,127,120,120,120,185,200,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,200,1,168,7,216,9,248,12,66,14,128,28,0,23,25,32,37,37,32,25,9,7,185,153,127,120,120,120,185,200,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,200,0,5,0,1,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,50,37,28,41,51,23,33,18,9,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,50,72,39,57,72,32,45,25,13,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,50,72,39,57,72,32,45,25,13,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,50,52,33,48,61,27,39,21,11,6,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,136,1,188,2,160,10,88,12,176,14,159,27,0,34,31,45,41,20,33,18,9,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,83,9,26,0,255,7,255,250,3,1,3,248,252,4,19,15,0,254,1,6,0,251,254,255,255,4,242,243,0,1,7,10,3,1,9,6,248,255,23,0,235,0,253,229,4,22,255,0,21,16,0,0,255,245,4,6,255,233,237,5,248,246,17,29,10,247,6,11,4,241,255,251,243,13,245,223,0,34,8,13,7,246,255,242,17,12,243,7,254,230,254,24,4,244,250,243,233,254,27,7,230,254,26,22,233,0,24,0,243,250,253,243,248,232,243,4,34,53,237,242,14,255,7,252,6,243,233,1,15,229,2,51,249,250,248,21,33,246,243,232,2,16,255,243,15,29,252,250,238,27,27,13,2,239,12,15,249,253,7,1,14,255,243,2,248,255,14,0,7,255,246,245,251,6,11,252,238,243,233,252,26,255,249,0,4,8,250,255,254,252,246,251,244,244,1,0,244,6,12,8,8,249,4,253,252,2,242,244,1,4,255,0,2,4,7,7,13,2,252,251,2,255,249,0,6,2,246,7,8,8,16,252,252,1,4,3,243,252,1,0,7,10,253,5,9,6,6,3,250,0,6,4,249,255,9,244,4,4,1,4,8,8,250,252,8,5,14,246,250,4,253,1,248,254,241,0,254,0,252,244,13,0,250,15,20,255,2,18,247,232,249,9,2,248,242,237,0,1,7,19,18,10,4,254,238,18,20,237,245,245,242,242,249,250,250,19,9,249,6,13,17,3,14,24,5,7,243,245,2,0,7,238,236,243,244,252,8,4,246,12,16,18,254,11,8,6,1,241,248,247,2,247,247,231,4,11,9,5,251,14,254,255,6,248,6,16,4,245,241,11,19,11,2,239,249,6,2,245,250,253,234,7,13,20,4,13,18,3,11,250,249,246,239,240,239,250,243,249,6,5,24,20,25,253,1,254,251,2,250,242,236,250,254,18,13,2,0,11,31,0,255,8,247,249,252,249,252,0,246,253,3,9,5,11,10,245,4,11,3,1,7,249,253,242,253,254,245,6,250,251,6,9,6,9,10,8,4,254,241,247,255,251,242,245,249,248,24,6,6,14,8,12,247,237,239,11,250,239,250,251,11,20,18,5,24,19,253,249,237,241,248,248,236,237,254,6,21,23,15,18,18,3,248,1,246,247,252,232,243,1,11,2,0,252,6,10,0,2,10,1,250,249,245,5,12,20,255,0,247,247,5,10,16,247,250,12,249,6,20,6,14,241,6,1,250,0,237,250,4,253,0,15,12,21,11,4,247,248,1,242,234,231,1,244,238,7,255,20,24,8,8,252,11,241,2,249,245,253,248,255,0,23,251,6,20,253,7,247,250,255,2,9,247,239,254,249,0,247,0,1,246,3,0,0,11,11,3,254,0,245,255,6,249,238,1,1,249,19,25,10,18,7,245,1,9,4,238,251,1,238,7,0,9,2,9,33,14,236,6,8,241,244,234,241,237,6,253,238,12,52,10,3,15,1,4,239,228,230,224,13,228,230,9,34,44,28,28,25,29,10,253,247,245,242,226,241,238,244,36,0,252,22,3,35,15,2,0,3,9,246,231,241,10,246,250,13,240,246,253,14,22,19,39,11,235,1,253,230,243,236,228,219,239,6,240,0,14,20,245,5,38,11,228,2,24,243,243,250,196,243,18,250,6,243,46,4,44,250,4,27,3,13,203,252,245,247,238,232,29,255,27,9,32,16,228,33,245,241,253,255,244,250,19,241,255,4,7,22,24,12,206,234,33,230,246,250,10,21,6,27,14,20,15,239,15,233,242,7,238,254,249,3,9,21,6,11,252,6,12,243,6,221,236,9,2,0,249,245,255,25,19,255,250,20,246,251,253,233,8,2,9,248,251,30,22,16,3,254,9,255,240,235,242,230,247,17,251,250,5,3,253,8,20,3,0,6,238,236,253,2,5,249,239,254,18,0,240,241,15,18,250,1,9,12,6,246,0,248,1,4,244,236,251,253,7,0,253,0,5,30,13,232,250,18,0,2,9,249,243,11,5,252,11,13,255,0,249,227,254,19,2,241,1,24,27,35,0,249,11,4,0,240,249,247,249,0,246,5,18,22,14,5,4,0,12,2,246,0,253,251,254,250,246,249,3,1,250,252,252,7,5,254,235,240,254,251,230,241,239,246,237,246,255,10,7,255,254,251,9,0,17,6,5,13,252,3,17,13,24,13,21,14,11,12,6,7,7,3,252,248,236,247,0,252,253,252,4,1,254,255,2,252,248,241,245,251,251,7,0,0,14,5,12,15,16,9,18,8,244,8,7,254,4,5,1,0,0,10,8,251,251,5,250,243,0,9,245,245,247,235,241,8,253,242,12,3,244,246,0,250,14,7,253,248,248,243,244,237,240,247,254,5,8,253,8,24,21,252,0,1,236,241,242,241,1,8,248,12,23,8,35,15,0,9,14,250,244,10,230,218,250,10,249,3,17,247,43,13,243,29,8,2,216,0,251,246,18,250,26,1,44,29,34,13,239,252,235,19,239,15,19,9,25,4,38,230,245,36,234,214,209,223,2,255,252,23,35,9,240,251,3,0,9,194,229,226,213,22,244,0,6,46,11,15,55,8,18,252,245,219,244,251,201,250,247,244,32,26,11,2,37,6,249,1,210,233,234,221,1,8,249,249,36,253,31,13,247,26,237,235,253,3,252,240,247,32,16,24,11,1,14,9,245,1,236,223,4,246,0,14,45,22,33,27,233,18,12,219,234,223,231,13,17,223,11,46,25,2,34,41,163,34,242,189,0,253,250,210,255,48,10,15,64,250,220,58,229,229,19,240,247,1,219,220,24,46,240,2,23,26,3,238,11,244,33,14,240,249,226,217,8,2,3,23,247,33,233,250,50,9,1,3,249,226,236,7,230,235,14,41,250,7,39,223,254,27,21,251,22,211,250,233,233,18,227,0,16,254,0,31,20,250,10,34,233,227,243,5,219,22,12,202,17,38,247,13,29,231,255,19,227,200,249,55,243,1,12,7,8,17,251,208,255,29,244,251,251,2,249,3,33,240,4,18,235,219,7,247,244,41,19,0,255,34,251,18,27,245,244,14,218,244,249,6,233,21,10,238,17,17,3,243,30,11,1,246,245,234,255,246,231,6,6,253,245,27,18,9,44,13,249,36,19,228,11,249,223,245,14,5,14,11,252,237,9,14,253,13,253,244,249,246,228,250,7,3,251,236,236,242,242,255,5,246,1,11,5,0,10,18,15,253,231,238,248,11,19,0,1,12,21,19,14,20,3,3,1,235,231,243,242,238,248,239,248,15,19,2,9,9,253,254,248,246,247,3,0,252,5,7,4,13,10,13,8,0,251,248,0,254,255,255,3,18,16,0,0,11,9,254,239,246,253,255,254,247,0,9,14,6,0,5,19,25,6,249,251,250,250,255,255,255,3,253,255,254,246,249,255,12,0,251,2,1,3,7,4,0,0,12,2,246,239,246,7,0,0,11,3,246,246,253,9,11,252,249,255,248,242,238,247,240,245,4,249,242,253,3,12,23,25,10,17,24,0,246,255,1,254,254,246,236,0,9,9,15,11,6,17,25,7,245,248,255,3,243,241,238,238,1,248,236,245,6,32,34,253,252,2,14,20,0,6,0,248,241,226,223,252,41,39,251,252,3,10,8,23,26,6,0,232,215,9,26,11,229,214,4,233,241,10,253,18,26,241,2,17,2,20,0,250,217,233,26,221,213,5,5,42,8,238,35,13,21,28,249,252,29,10,242,233,32,3,237,6,254,0,232,249,220,4,38,13,6,250,27,10,218,51,52,219,254,227,133,235,27,239,244,15,232,7,57,31,1,49,52,213,229,205,227,30,239,229,233,14,23,247,4,28,36,5,2,226,209,0,251,16,33,6,8,12,59,11,22,3,212,221,240,217,199,14,238,231,41,4,34,80,53,13,35,233,232,254,223,218,250,217,248,32,226,17,22,46,34,26,25,237,240,1,232,222,21,219,223,28,4,11,245,8,46,243,7,246,1,255,228,243,243,0,17,17,7,26,248,0,20,14,245,221,16,1,219,0,12,242,252,49,32,235,232,10,210,2,226,208,0,9,5,214,31,42,13,51,22,0,12,246,226,244,0,241,253,243,4,0,32,28,19,32,26,249,236,229,2,252,248,240,230,249,242,5,246,2,5,248,1,238,236,245,246,6,19,19,5,7,17,0,1,24,14,7,3,10,232,253,12,11,251,248,9,253,12,12,0,245,248,15,8,10,1,0,0,240,242,239,248,13,10,224,228,4,29,17,4,248,9,24,15,250,242,1,16,4,235,238,6,1,252,250,3,14,17,252,252,7,5,247,252,10,246,251,246,250,8,239,248,252,5,6,27,19,251,240,0,11,15,9,237,251,252,242,250,252,2,10,10,0,252,238,3,23,1,0,255,255,0,11,255,238,1,4,243,252,3,245,239,12,12,7,3,6,21,17,1,252,249,4,0,247,236,243,245,249,1,9,13,16,13,13,14,0,243,251,253,246,247,238,243,0,10,21,21,19,21,9,0,243,242,247,229,244,0,245,254,0,12,28,21,8,6,0,250,247,242,244,0,251,246,2,4,5,17,21,10,9,2,248,247,250,251,247,252,254,251,10,7,0,6,8,7,254,249,251,252,245,254,4,251,1,2,250,4,13,2,252,254,2,9,3,253,0,7,9,0,255,250,249,248,246,253,5,2,14,17,7,5,7,8,7,0,243,240,238,238,254,0,0,7,24,22,9,253,248,254,254,248,249,249,248,247,0,4,7,18,10,0,14,3,243,235,237,249,254,5,8,2,12,14,11,16,13,0,3,253,246,239,245,10,3,1,9,6,248,255,14,0,253,255,249,238,244,241,243,3,6,8,7,6,10,9,0,3,10,254,253,254,248,251,255,255,3,11,5,249,18,24,9,1,0,3,0,254,248,241,240,237,248,249,238,249,6,12,10,9,6,13,11,1,251,253,253,237,238,245,245,247,255,13,19,8,13,23,19,15,12,254,250,250,247,243,247,251,0,0,8,11,246,246,15,19,244,252,15,248,242,250,4,249,3,3,241,0,0,252,250,253,7,5,6,4,15,15,5,0,2,14,17,3,252,254,3,5,9,10,0,3,249,247,0,246,249,251,235,253,9,3,7,11,8,8,1,249,0,12,250,231,242,6,4,240,242,18,34,23,14,10,7,3,1,1,243,252,249,242,245,235,245,9,4,247,253,253,2,3,250,248,245,248,254,249,251,4,8,2,254,5,13,12,12,6,252,0,4,251,241,238,249,254,245,235,249,1,252,253,1,8,15,17,1,250,1,5,8,248,232,0,15,253,245,252,13,26,13,15,17,8,15,2,249,246,8,21,13,22,10,255,255,9,6,9,18,2,244,241,0,6,255,17,26,14,7,0,140,0,4,0,1,0,0,1,133,2,169,6,216,9,192,13,185,15,32,29,50,47,31,55,66,49,36,28,9,7,217,150,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,133,2,169,6,216,9,192,13,185,15,32,29,50,90,43,76,91,68,51,39,13,7,217,150,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,133,2,169,6,216,9,192,13,185,15,32,29,40,68,37,66,79,59,45,34,11,6,217,150,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,133,2,169,6,216,9,192,13,185,15,32,29,0,49,31,56,68,51,38,28,9,9,217,150,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,45,49,25,74,48,46,48,28,11,5,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,70,100,36,105,69,65,68,40,16,7,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,60,80,32,94,62,58,61,35,14,6,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,104,0,104,1,72,8,100,10,72,13,40,15,96,25,0,40,23,66,43,41,43,25,10,4,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,4,0,1,0,168,0,192,1,124,6,224,9,12,13,60,15,230,25,50,42,29,59,53,50,47,34,15,6,163,119,133,120,120,120,130,119,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,192,1,124,6,224,9,12,13,60,15,230,25,80,69,38,76,69,65,61,44,19,8,163,119,133,120,120,120,130,119,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,192,1,124,6,224,9,12,13,60,15,230,25,60,56,34,69,62,58,55,39,17,7,163,119,133,120,120,120,130,119,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,192,1,124,6,224,9,12,13,60,15,230,25,0,32,26,52,47,44,41,30,13,5,163,119,133,120,120,120,130,119,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,148,0,48,1,238,7,60,10,42,13,50,15,96,25,45,37,15,54,57,51,48,33,13,6,160,111,120,143,120,120,130,111,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,48,1,238,7,60,10,42,13,50,15,96,25,75,65,20,72,76,68,64,44,18,8,160,111,120,143,120,120,130,111,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,40,1,12,8,92,10,42,13,50,15,96,25,65,48,17,61,64,57,54,37,15,7,160,111,120,143,120,120,130,111,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,148,0,40,1,32,8,140,10,42,13,50,15,96,25,0,24,12,43,46,41,39,27,11,5,160,111,120,143,120,120,130,111,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,105,0,5,0,1,0,144,0,176,1,32,3,20,10,148,12,120,15,88,27,45,42,22,48,58,37,34,19,13,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,144,0,168,1,32,3,20,10,148,12,120,15,88,27,60,80,28,70,77,46,43,24,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,144,0,168,1,32,3,20,10,148,12,120,15,88,27,40,71,26,66,72,43,40,23,16,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,160,1,22,3,30,10,148,12,120,15,88,27,40,49,22,55,60,36,33,19,13,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,128,0,152,1,12,3,40,10,148,12,120,15,88,27,0,43,20,51,56,34,31,18,12,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,40,0,5,0,1,0,176,0,168,1,88,7,216,9,32,13,60,15,96,25,45,103,44,108,68,68,75,44,18,8,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,177,0,149,1,254,6,138,9,240,12,24,15,141,25,44,91,42,98,65,63,69,40,18,8,160,93,125,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,180,0,104,1,44,6,212,8,128,12,196,14,248,25,71,72,40,76,60,52,55,32,19,8,161,101,138,120,120,120,130,101,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,88,1,56,4,152,8,104,11,136,14,144,26,40,45,36,44,52,36,36,20,20,8,162,135,157,120,120,120,162,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,88,1,56,4,152,8,104,11,136,14,144,26,0,35,31,38,45,31,31,17,17,7,162,135,157,120,120,120,162,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,75,0,6,0,1,0,184,0,96,1,192,3,36,9,224,11,136,14,144,26,50,46,20,55,58,40,35,26,14,7,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,96,1,192,3,36,9,224,11,136,14,144,26,50,63,23,64,68,47,40,30,17,8,162,127,157,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,183,0,96,1,11,4,46,9,241,11,137,14,166,26,50,53,23,59,61,45,39,29,16,8,162,126,164,120,120,120,162,127,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,174,0,97,1,182,5,108,9,83,12,147,14,38,27,50,36,24,48,39,45,40,28,14,7,164,118,201,120,120,120,162,120,200,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,168,0,91,1,240,6,229,9,206,12,153,14,143,27,25,26,22,42,33,36,33,22,10,6,165,106,186,120,120,120,162,120,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,164,0,87,1,119,7,26,10,3,13,157,14,189,27,0,23,21,40,33,32,27,20,6,6,166,101,183,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,100,0,5,0,1,0,32,1,32,3,236,4,160,10,172,13,180,15,32,28,50,46,32,56,66,39,32,22,9,4,162,155,135,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,32,1,32,3,216,4,160,10,172,13,180,15,32,28,50,91,44,82,88,54,44,30,13,6,162,155,135,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,32,1,32,3,0,5,160,10,172,13,180,15,32,28,50,87,44,82,88,54,44,30,13,6,162,155,135,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,32,1,13,3,0,5,120,10,52,13,120,15,32,28,50,68,39,69,82,48,39,27,12,6,162,155,135,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,32,1,13,3,0,5,120,10,52,13,120,15,32,28,0,35,28,50,59,35,28,19,8,4,162,155,135,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,160,0,4,0,1,0,149,0,24,1,207,8,214,11,112,13,134,16,42,27,50,44,7,62,51,47,51,23,16,8,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,149,0,24,1,207,8,214,11,112,13,134,16,42,27,60,56,8,70,58,53,58,26,18,9,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,149,0,8,1,207,8,214,11,112,13,134,16,42,27,50,49,14,62,47,46,49,21,16,8,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,149,0,8,1,207,8,214,11,112,13,134,16,42,27,0,45,14,59,45,44,47,20,15,7,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,125,0,6,0,1,0,14,1,8,3,176,4,200,10,2,13,238,14,192,27,45,42,24,56,63,36,30,25,9,4,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,14,1,8,3,176,4,200,10,2,13,238,14,192,27,40,92,36,82,93,53,44,37,13,6,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,14,1,8,3,176,4,200,10,2,13,238,14,192,27,35,75,32,74,84,48,39,33,12,6,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,245,0,150,2,86,4,144,10,229,12,209,14,107,27,80,62,28,69,70,43,36,31,13,6,164,144,140,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,186,0,137,1,132,3,13,10,159,12,139,14,164,26,40,48,21,61,38,31,28,28,17,7,163,134,154,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,184,0,112,1,132,3,236,9,148,12,136,14,144,26,0,32,18,50,30,25,23,23,14,6,162,133,155,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,230,0,5,0,1,0,72,1,136,3,40,5,180,10,112,13,191,14,32,28,45,45,30,64,55,34,30,19,9,4,207,150,105,120,120,120,237,165,165,44,65,70,130,54,0,0,0,0,50,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,72,1,136,3,40,5,180,10,112,13,191,14,32,28,70,103,45,97,83,52,45,28,13,6,207,150,105,120,120,120,237,165,165,44,65,70,130,54,0,0,0,0,50,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,55,1,100,3,140,5,160,10,116,13,189,14,32,28,70,80,40,88,78,48,40,26,12,6,203,144,114,120,120,120,237,165,165,44,60,70,130,54,0,0,0,0,50,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,88,1,152,8,140,10,152,13,166,14,32,28,45,40,27,54,49,58,45,32,9,7,167,90,195,120,120,120,122,120,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,88,1,174,8,160,10,92,13,10,15,32,28,0,25,22,44,45,41,37,30,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,56,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,200,0,4,0,1,0,160,0,232,1,198,7,236,9,12,13,101,14,128,28,50,37,26,54,56,55,44,32,11,6,185,112,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,160,0,232,1,198,7,236,9,12,13,101,14,128,28,80,57,32,66,69,68,54,40,13,8,185,112,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,232,1,198,7,236,9,12,13,101,14,128,28,70,59,33,68,70,69,55,41,13,8,185,112,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,160,0,232,1,198,7,236,9,12,13,101,14,128,28,0,27,22,45,47,47,37,27,9,5,185,112,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,60,0,4,0,1,0,130,0,49,1,164,6,36,9,228,12,99,14,151,25,45,35,18,54,40,32,35,31,9,10,167,96,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,130,0,49,1,164,6,36,9,228,12,99,14,151,25,60,68,25,76,56,45,48,43,13,15,167,96,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,130,0,49,1,164,6,36,9,228,12,99,14,151,25,60,55,23,68,50,40,44,39,11,13,167,96,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,130,0,49,1,164,6,36,9,228,12,99,14,151,25,0,44,20,61,45,36,39,35,10,12,167,96,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,55,0,2,0,5,0,76,0,104,1,8,7,124,11,172,13,160,15,32,29,55,17,9,45,22,18,34,20,8,0,155,135,97,120,120,120,95,105,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,76,0,104,1,8,7,124,11,172,13,160,15,32,29,0,12,7,38,23,15,28,16,7,0,150,135,97,120,120,120,90,105,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,18,0,2,0,5,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,18,14,3,39,18,28,36,20,6,0,120,105,150,120,120,120,45,135,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,180,0,29,1,185,8,200,10,32,13,116,14,0,29,0,26,4,52,24,38,48,27,8,0,120,105,150,120,120,120,45,135,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,35,0,3,0,5,0,224,0,224,2,40,5,76,9,208,12,136,14,117,27,35,30,23,47,39,34,28,23,9,2,196,162,195,120,120,120,249,174,250,44,35,70,130,50,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,224,0,224,2,40,5,76,9,208,12,136,14,117,27,40,30,23,47,39,34,28,23,9,2,196,162,195,120,120,120,249,174,250,44,35,70,130,50,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,208,2,60,5,76,9,208,12,136,14,105,27,0,24,22,44,31,23,21,21,10,2,192,158,201,120,120,120,249,174,255,44,35,70,130,52,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,35,0,3,0,5,0,116,0,32,2,100,5,252,8,168,12,116,14,96,27,35,28,23,45,56,31,32,24,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,116,0,32,2,100,5,252,8,168,12,116,14,96,27,40,28,23,45,56,31,32,24,12,7,167,150,135,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,32,2,100,5,252,8,168,12,116,14,96,27,0,22,20,40,50,28,28,22,11,6,167,150,135,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,35,0,3,0,5,0,208,0,120,2,20,5,252,8,88,12,196,14,210,27,35,34,27,45,60,36,33,21,12,4,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,208,0,120,2,20,5,252,8,88,12,196,14,210,27,40,34,27,45,60,36,33,21,12,4,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,120,2,20,5,252,8,88,12,156,14,210,27,0,27,25,41,52,30,28,19,11,4,185,160,141,120,120,120,235,150,118,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,150,0,5,0,1,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,50,51,26,61,52,32,29,20,14,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,60,78,32,75,64,39,36,25,18,9,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,132,1,172,3,116,9,224,11,136,14,144,26,40,67,30,71,57,37,33,23,16,8,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,128,0,32,2,156,4,252,8,68,12,136,14,96,27,40,34,29,53,50,34,31,29,15,5,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,128,0,32,2,156,4,252,8,68,12,136,14,96,27,0,34,29,53,50,34,31,29,15,5,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,190,0,5,0,1,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,50,34,23,44,44,18,36,20,5,5,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,50,66,32,61,61,25,50,28,8,7,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,50,66,32,61,61,25,50,28,8,7,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,40,47,27,52,52,21,42,24,6,6,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,0,20,18,34,34,14,28,16,4,4,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,255,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,245,0,5,0,1,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,45,32,26,49,47,49,41,30,9,6,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,80,71,38,72,72,76,63,46,14,10,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,60,50,32,60,60,64,53,38,12,8,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,64,1,252,8,180,10,152,13,10,15,32,28,60,25,18,46,43,39,36,28,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,64,1,252,8,180,10,152,13,10,15,32,28,0,23,17,45,41,38,35,27,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,175,0,4,0,1,0,156,0,56,1,252,8,4,11,212,13,120,15,144,27,45,40,11,59,53,52,45,28,11,7,176,106,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,156,0,56,1,252,8,4,11,212,13,120,15,144,27,70,83,17,85,76,75,65,40,16,10,176,106,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,156,0,56,1,252,8,4,11,212,13,120,15,144,27,60,67,15,76,69,67,58,36,15,9,176,106,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,48,1,252,8,4,11,212,13,120,15,144,27,0,30,10,51,46,45,39,24,10,6,176,106,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,248,0,200,2,136,4,220,10,52,13,68,15,176,27,45,50,30,61,64,39,36,25,7,5,165,130,155,120,120,120,167,130,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,200,2,136,4,220,10,52,13,68,15,176,27,60,96,42,85,89,55,49,35,10,7,165,130,155,120,120,120,167,130,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,248,0,192,2,136,4,220,10,52,13,68,15,176,27,80,85,40,80,84,52,47,33,9,7,165,130,155,120,120,120,167,130,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,248,0,184,2,136,4,220,10,52,13,68,15,176,27,0,48,30,60,63,39,35,25,7,5,165,130,155,120,120,120,167,130,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,100,0,4,0,1,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,50,47,3,73,43,21,21,30,12,7,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,50,79,4,96,56,28,28,40,16,10,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,70,63,3,85,49,24,24,35,14,8,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,0,31,2,60,35,17,17,25,10,6,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,176,0,112,1,32,3,100,10,48,12,60,15,144,26,45,55,12,64,58,30,27,24,15,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,112,1,32,3,100,10,48,12,60,15,144,26,70,92,16,84,76,40,36,32,20,10,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,112,1,32,3,100,10,48,12,60,15,144,26,60,75,14,75,68,36,32,28,18,9,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,112,1,32,3,100,10,48,12,60,15,144,26,0,49,11,61,55,29,26,23,14,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,45,60,24,58,73,41,37,34,9,5,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,30,103,32,76,95,54,48,44,12,7,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,216,2,116,4,160,10,148,12,41,14,96,27,35,85,32,68,98,49,41,41,16,8,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,246,0,200,2,120,5,216,9,132,13,224,16,88,27,50,64,34,76,64,48,44,20,12,10,226,150,136,120,120,120,235,150,136,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,5,0,166,0,80,1,192,8,229,10,132,13,94,15,138,27,70,50,16,60,60,57,50,30,13,8,181,110,142,120,120,120,235,150,136,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,156,0,56,1,252,8,4,11,132,13,50,15,144,27,0,40,11,59,53,52,45,28,11,7,176,106,143,120,120,120,185,107,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,255,0,5,0,1,0,24,1,232,2,4,6,196,9,112,13,40,15,153,28,45,45,31,60,60,46,36,28,10,6,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,232,2,4,6,196,9,112,13,40,15,153,28,75,88,44,84,84,64,51,39,14,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,232,2,4,6,196,9,112,13,40,15,153,28,65,79,41,79,79,60,48,37,13,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,80,1,192,8,140,10,152,13,166,14,32,28,70,43,32,55,49,58,45,33,10,8,167,90,195,120,120,120,122,90,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,72,1,232,8,160,10,92,13,10,15,32,28,0,30,28,45,45,41,38,30,8,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,45,49,28,59,69,41,43,30,17,6,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,80,79,36,75,88,52,55,38,21,8,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,80,64,32,68,79,47,49,35,19,7,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,99,1,152,8,140,10,152,13,166,14,32,28,45,43,32,56,49,59,46,33,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,27,28,44,44,40,37,29,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,210,0,5,0,1,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,45,35,2,64,42,19,19,25,8,7,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,172,0,64,1,228,2,96,9,12,13,60,15,144,26,75,74,4,92,64,28,28,36,12,10,177,117,100,120,120,120,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,170,0,60,1,122,3,166,9,24,13,106,15,164,26,30,52,4,79,39,26,27,30,11,8,178,118,103,121,123,125,177,117,115,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,9,0,148,0,16,1,199,8,28,12,132,13,8,17,88,27,60,35,15,49,34,38,45,15,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,148,0,16,1,199,8,28,12,132,13,8,17,88,27,0,33,14,47,33,36,44,14,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,75,0,5,0,1,0,132,0,24,1,184,6,16,9,228,12,96,14,100,25,45,42,18,60,40,35,37,34,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,24,1,184,6,16,9,228,12,96,14,100,25,75,78,25,82,56,47,51,47,12,17,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,133,0,27,1,40,7,96,9,253,12,122,14,196,25,75,61,23,71,51,46,48,41,11,14,167,91,138,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,38,1,187,8,180,10,86,13,215,14,33,27,45,49,21,60,52,55,50,32,12,9,169,96,152,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,137,0,40,1,232,8,220,10,97,13,226,14,72,27,0,38,20,55,49,53,47,29,11,8,169,97,153,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,125,0,6,0,1,0,240,0,176,2,36,4,20,10,188,12,92,14,87,27,45,44,21,50,62,33,33,29,8,5,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,176,2,36,4,20,10,188,12,92,14,87,27,40,96,30,73,92,48,48,43,12,7,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,148,2,12,4,76,10,200,12,104,14,87,27,35,78,27,66,81,43,43,38,11,6,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,32,2,172,3,220,10,248,12,156,14,87,27,80,74,27,66,75,43,43,38,11,6,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,186,0,137,1,132,3,13,10,159,12,139,14,164,26,40,49,22,61,38,31,28,28,17,7,163,134,154,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,184,0,112,1,132,3,236,9,148,12,136,14,144,26,0,32,18,50,30,25,23,23,14,6,162,133,155,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,255,0,5,0,1,0,168,0,4,2,92,3,88,10,104,11,141,14,32,27,45,56,21,52,64,39,36,18,13,5,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,4,2,92,3,88,10,104,11,141,14,32,27,70,108,29,73,89,54,50,25,18,7,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,240,1,92,3,60,10,146,11,158,14,18,27,80,90,25,71,81,49,45,25,17,7,168,134,145,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,56,1,92,3,56,9,12,13,60,15,144,26,60,53,3,79,43,23,23,33,13,8,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,56,1,92,3,56,9,12,13,60,15,144,26,0,33,2,62,35,19,19,27,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,1,0,200,0,204,1,137,7,208,9,208,12,69,14,104,28,45,29,21,46,46,49,37,28,9,6,184,108,128,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,204,1,137,7,208,9,208,12,69,14,104,28,60,84,36,79,78,83,63,48,15,11,184,108,128,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,198,0,192,1,44,7,195,9,213,12,91,14,62,28,80,71,31,76,61,74,57,44,14,10,183,109,149,120,120,120,185,107,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,178,0,71,1,179,3,63,9,9,13,48,15,166,26,65,42,4,71,37,23,22,30,12,7,178,124,103,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,178,0,71,1,179,3,63,9,9,13,48,15,166,26,0,30,3,60,31,19,18,25,10,6,178,124,103,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,4,1,6,0,1,0,152,0,40,1,152,8,4,11,92,13,135,15,160,26,45,21,4,46,41,41,42,20,9,4,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,40,1,132,8,4,11,92,13,135,15,160,26,60,62,7,78,70,70,71,34,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,155,0,43,1,188,7,195,10,81,13,125,15,158,26,80,53,6,76,54,61,61,33,15,7,168,107,150,120,120,120,167,90,152,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,174,0,62,1,199,3,80,9,17,13,64,15,145,26,35,39,3,71,36,22,22,29,12,7,176,123,103,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,64,1,152,3,56,9,12,13,60,15,144,26,40,37,2,67,33,19,19,28,11,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,64,1,152,3,56,9,12,13,60,15,144,26,0,30,2,60,30,17,17,25,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,250,0,5,0,1,0,40,1,232,2,240,5,196,9,112,13,40,15,153,28,45,42,29,57,60,43,35,26,9,5,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,40,1,232,2,240,5,196,9,112,13,40,15,153,28,80,81,41,79,83,60,48,37,13,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,186,2,4,6,180,9,98,13,20,15,71,28,80,64,35,71,72,53,43,34,12,7,210,133,142,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,40,1,184,6,36,9,228,12,96,14,100,25,45,42,19,61,41,35,38,35,9,12,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,40,1,184,6,36,9,228,12,96,14,100,25,0,26,15,48,33,28,30,28,7,10,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,1,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,45,28,23,46,45,48,37,27,8,6,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,80,82,40,79,77,81,63,46,14,10,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,35,2,63,7,232,9,38,13,144,14,176,28,80,73,38,75,72,77,60,43,13,9,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,47,20,63,43,37,40,36,10,13,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,0,30,16,50,34,29,32,29,8,10,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,45,49,28,59,69,41,43,30,17,6,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,80,79,36,75,88,52,55,38,21,8,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,80,64,32,68,79,47,49,35,19,7,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,47,20,63,43,37,40,36,10,13,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,0,30,16,50,34,29,32,29,8,10,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,33,0,152,0,32,1,224,8,4,11,52,13,0,15,160,26,45,45,6,66,59,59,60,29,14,6,175,105,120,120,120,120,175,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,80,72,10,83,73,74,75,36,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,24,1,232,8,4,11,12,13,216,14,64,26,80,45,10,60,60,63,63,34,11,8,167,105,120,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,47,20,63,43,37,40,36,10,13,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,0,30,16,50,34,29,32,29,8,10,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,185,0,5,0,1,0,176,0,88,1,128,3,71,9,213,12,38,15,162,26,45,47,6,73,41,23,23,29,12,7,176,126,108,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,88,1,128,3,71,9,213,12,38,15,162,26,80,80,8,94,53,31,30,38,16,9,176,126,108,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,103,1,125,3,80,9,181,12,25,15,173,26,65,60,9,80,48,28,26,31,13,7,175,126,112,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,170,0,224,1,99,3,155,9,98,12,223,14,7,27,60,47,22,59,51,32,27,19,12,5,169,133,142,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,169,0,238,1,96,3,164,9,88,12,216,14,18,27,0,33,19,48,44,26,23,15,11,4,168,134,145,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,80,0,5,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,35,17,55,37,32,35,32,8,11,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,80,67,24,76,51,44,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,80,54,21,68,46,39,43,39,10,14,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,45,38,25,52,61,36,38,27,15,5,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,122,0,192,1,240,5,116,9,228,12,246,14,95,27,0,27,21,44,52,30,32,23,12,5,170,133,135,122,124,128,197,131,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,65,0,4,0,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,20,8,14,26,25,12,12,12,7,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,25,15,19,35,33,16,16,16,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,20,15,19,35,33,16,16,16,9,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,13,2,161,5,152,8,128,12,212,13,96,27,0,9,15,28,26,13,13,13,7,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,234,8,18,0,253,253,0,0,249,246,252,252,244,236,237,245,247,248,252,254,2,10,16,10,13,22,7,13,34,24,31,29,14,29,17,7,25,0,230,246,252,249,247,228,229,242,246,232,229,240,238,245,1,252,215,217,5,13,18,35,17,20,45,18,244,251,254,0,17,252,225,245,2,29,10,214,234,22,55,56,13,2,28,34,40,24,228,233,251,253,37,250,182,232,30,33,245,208,223,245,231,217,220,197,216,8,234,158,176,233,228,240,246,252,40,51,23,37,82,62,43,73,90,92,101,75,32,44,50,20,12,5,239,216,208,226,230,167,151,213,223,225,233,220,234,10,42,34,4,37,71,36,31,49,246,226,15,248,229,238,211,238,5,225,250,249,204,238,22,12,10,20,34,43,33,45,64,46,36,60,60,32,245,230,16,29,228,223,218,162,218,0,199,217,235,226,39,30,244,34,5,242,30,25,17,12,7,20,44,22,240,243,231,210,1,19,208,221,252,238,238,204,185,246,246,221,32,35,237,3,41,40,25,10,22,70,103,70,50,74,68,49,38,12,251,22,14,238,7,220,153,181,212,215,209,171,165,225,239,204,206,224,204,248,19,241,3,255,2,49,58,12,237,19,48,25,18,19,6,15,35,37,18,220,224,42,25,238,231,243,17,12,10,44,22,18,88,50,245,18,241,197,3,22,240,243,201,184,244,238,212,227,237,14,55,32,222,248,95,72,228,196,223,255,10,6,231,253,40,4,18,47,220,226,65,61,34,33,13,18,41,23,253,242,248,5,8,251,215,197,206,196,168,164,201,206,222,26,245,186,227,4,53,90,6,219,39,43,0,10,236,205,244,7,255,3,233,217,15,36,250,234,0,0,254,24,3,236,29,71,55,37,43,0,232,9,5,243,239,236,230,243,242,232,245,247,215,190,215,222,221,253,255,240,5,23,29,61,48,3,29,31,4,28,14,8,13,241,15,33,1,246,255,7,231,214,14,22,251,251,228,251,254,215,246,21,241,233,0,254,46,59,0,7,58,49,7,246,241,8,38,241,175,184,205,232,252,193,156,206,253,5,239,207,229,12,46,70,27,20,69,76,69,60,34,65,55,255,21,0,182,205,252,254,238,207,186,212,7,238,214,221,204,244,46,40,6,243,253,39,33,242,229,232,1,0,224,2,253,217,253,13,245,254,252,251,56,28,232,3,241,245,16,17,12,252,15,31,23,26,6,238,2,15,11,48,64,39,2,46,101,19,219,14,41,7,234,200,219,244,206,222,13,4,230,234,243,3,34,30,27,35,31,59,80,56,49,51,26,9,3,7,242,196,216,1,210,193,193,161,224,5,177,158,221,243,1,246,215,9,46,16,33,51,35,55,36,255,22,20,216,182,213,220,208,214,214,202,218,252,1,253,254,252,21,38,254,15,66,43,62,105,73,65,77,58,49,40,241,232,34,239,180,237,234,189,234,254,226,242,254,5,53,61,3,3,62,61,37,11,249,0,10,240,197,221,243,204,224,30,226,211,35,251,234,10,242,37,49,204,13,85,4,7,45,250,238,9,244,247,9,6,32,42,1,238,252,252,248,25,5,182,212,49,41,239,235,239,4,29,225,199,227,189,208,7,219,214,11,241,217,3,49,38,16,21,55,97,48,2,43,26,198,221,4,198,203,235,195,231,237,180,238,34,5,10,21,53,108,80,46,52,46,46,35,17,13,242,230,251,206,155,190,214,187,208,217,195,11,17,231,33,40,5,26,21,24,43,238,229,22,14,238,200,239,34,34,34,251,205,234,56,35,231,19,53,37,33,251,244,51,26,230,3,233,209,1,247,231,0,216,167,218,228,191,221,231,219,14,5,219,26,29,250,44,61,19,252,8,33,62,46,0,246,9,22,5,242,236,231,228,243,227,219,6,11,30,62,17,40,106,70,93,104,14,17,55,30,242,196,183,221,233,176,136,156,192,179,183,184,158,189,227,245,244,251,22,56,66,39,2,6,28,248,237,255,248,231,209,220,222,236,15,7,8,16,6,33,47,34,53,59,40,42,42,47,39,0,7,2,220,207,178,154,195,216,179,178,193,215,26,10,235,58,67,16,71,93,29,9,24,48,54,11,245,23,33,1,216,223,25,37,66,67,248,226,13,28,16,9,225,227,7,225,229,3,220,229,0,251,37,14,225,19,21,230,226,242,7,16,254,5,14,242,244,19,26,13,252,10,14,6,25,6,232,255,18,244,233,17,31,6,255,22,27,241,203,229,8,251,226,238,6,241,239,9,228,249,61,9,226,33,30,1,42,6,242,44,15,251,34,255,250,27,245,227,9,33,17,28,9,199,215,15,243,205,208,190,211,8,248,207,240,252,226,7,8,237,50,74,47,87,54,10,65,46,253,239,243,0,250,0,230,225,238,220,254,22,200,204,22,243,1,34,232,231,40,38,251,17,8,2,79,45,224,28,56,17,32,245,187,244,42,0,219,239,242,233,242,220,205,244,236,215,255,0,237,12,37,46,55,53,58,55,27,21,30,30,36,19,248,249,235,231,253,207,161,208,242,221,210,236,12,9,227,216,7,6,243,249,251,6,18,47,46,17,30,21,6,71,96,46,50,35,1,16,231,200,239,252,252,3,225,184,180,190,211,232,225,221,1,22,29,22,255,28,46,33,59,48,19,36,17,244,254,237,236,248,240,247,228,212,189,164,178,222,6,0,254,19,46,67,55,4,251,38,46,44,58,40,19,12,2,10,14,234,214,243,228,180,173,186,210,243,221,192,232,248,246,13,0,225,9,59,45,35,29,18,24,32,26,30,54,42,2,11,23,4,1,10,246,218,249,240,198,217,235,244,250,234,231,3,20,10,24,35,7,0,24,245,215,228,228,223,209,219,220,206,211,225,215,192,215,245,248,9,27,17,30,64,53,52,74,80,94,86,51,41,27,241,221,245,233,221,10,2,225,244,234,216,1,254,211,10,62,12,237,253,254,12,44,15,249,27,9,241,247,213,193,230,242,214,216,2,31,22,7,237,242,37,51,29,27,27,9,32,18,205,215,254,253,3,247,238,1,8,1,242,215,227,16,15,3,251,250,15,246,245,18,3,12,35,241,208,254,249,223,227,214,223,252,4,6,10,251,247,25,28,253,10,35,21,22,40,8,247,16,19,4,5,237,218,7,6,208,215,230,231,1,248,228,253,254,231,0,11,244,3,40,25,7,21,4,0,23,1,0,16,7,25,13,241,253,245,217,220,232,253,12,252,237,19,52,19,18,41,18,37,64,22,4,1,243,3,23,17,3,6,15,0,9,13,223,252,31,5,17,26,245,248,16,7,20,40,3,237,31,25,232,223,199,210,243,210,204,238,229,232,245,246,244,251,19,42,69,72,16,243,24,45,15,237,228,233,246,240,214,227,254,247,244,235,224,250,18,13,254,233,243,2,16,44,19,11,44,53,37,15,17,22,19,34,27,249,251,16,24,255,231,249,253,3,255,223,245,14,249,214,222,247,248,2,251,236,233,227,238,17,18,238,248,4,11,36,15,234,16,56,40,45,28,1,33,18,227,233,244,242,4,8,251,254,250,248,7,11,10,14,5,5,22,26,5,255,249,229,231,255,243,212,234,243,198,216,1,243,236,247,247,250,238,238,25,33,23,28,47,52,47,72,45,249,247,6,14,14,8,241,237,247,251,243,221,210,226,14,12,232,239,4,12,8,244,225,246,6,246,242,242,240,246,243,213,224,16,255,248,6,247,8,31,10,16,38,29,42,50,39,37,23,9,249,1,28,2,243,237,208,223,241,228,230,228,217,235,236,218,239,254,223,229,12,9,13,29,27,40,40,44,48,13,239,245,18,27,253,222,226,242,231,221,211,200,228,237,211,205,213,241,22,35,36,34,46,61,57,52,35,30,48,39,25,19,239,222,238,235,203,189,192,187,204,228,210,205,234,0,27,25,5,24,34,25,32,27,17,32,50,35,9,14,13,249,245,244,248,8,245,227,246,239,229,252,238,206,229,248,244,9,12,255,15,24,14,22,29,5,12,35,12,9,10,236,234,250,225,201,213,204,186,203,220,220,240,242,238,252,4,18,26,18,17,52,63,37,38,67,58,23,30,15,239,252,255,237,224,204,215,241,213,199,221,222,223,254,8,248,22,52,49,61,56,49,73,76,60,77,52,15,34,29,15,13,232,209,229,219,184,189,219,208,192,223,243,243,5,11,5,22,27,34,71,63,33,60,63,20,18,23,255,0,8,244,245,5,237,215,222,208,213,220,177,174,219,222,218,235,219,239,38,47,45,50,23,17,61,46,3,6,245,244,8,224,186,203,206,208,219,188,188,241,9,15,15,7,7,40,73,66,67,70,53,77,90,38,19,28,253,0,19,230,207,237,241,231,221,191,207,1,1,245,255,250,7,41,35,35,36,27,57,80,51,20,19,26,33,8,219,229,7,253,236,216,194,213,231,215,218,239,234,247,6,248,252,8,7,26,44,30,26,33,36,47,57,21,240,246,247,247,249,229,208,225,237,221,220,225,230,246,11,17,20,40,35,49,80,51,34,56,40,14,28,1,215,231,230,217,211,193,201,218,203,195,220,233,232,250,3,0,7,17,17,14,10,26,49,45,34,37,41,27,9,8,16,15,2,242,233,241,244,234,230,245,251,255,21,17,0,23,45,25,7,10,21,24,23,19,4,253,0,249,227,218,225,234,225,219,218,194,201,224,223,230,233,222,242,12,251,245,10,8,16,31,8,5,45,34,252,13,10,240,247,251,244,244,247,245,0,1,240,5,27,8,16,38,20,20,22,248,252,19,9,5,6,231,221,236,226,214,221,221,223,242,241,231,243,245,242,7,19,1,0,8,252,15,34,7,15,30,14,28,35,3,7,23,1,8,28,2,251,8,242,248,15,239,229,255,239,238,11,1,253,13,8,6,6,234,223,251,253,236,250,0,249,254,248,241,249,242,247,12,0,250,14,14,8,10,17,28,39,22,0,14,21,1,3,11,251,255,5,249,1,5,238,241,1,237,228,238,244,7,254,229,243,5,5,249,254,14,23,28,21,8,252,251,4,2,247,244,248,250,251,242,238,250,3,2,253,252,248,255,24,13,247,254,7,13,6,246,248,255,255,247,238,245,249,253,0,249,254,6,2,3,5,1,4,0,0,125,0,2,0,17,0,158,0,220,1,180,5,166,9,103,12,96,14,162,26,125,21,25,43,26,25,25,22,6,6,153,115,128,120,120,120,165,135,135,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,60,0,2,0,1,0,252,0,90,2,230,5,20,10,169,12,184,14,96,28,60,13,27,28,29,28,20,22,8,3,193,136,140,120,120,120,135,180,150,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,65,0,2,0,17,0,220,0,110,2,56,4,180,10,13,12,66,14,248,27,65,11,23,26,26,16,20,16,5,3,164,157,128,120,120,120,105,185,148,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,95,0,3,0,5,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,80,45,45,48,68,35,38,25,11,5,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,37,0,205,0,164,2,200,4,44,10,41,12,125,14,244,27,15,17,37,31,23,20,18,13,4,0,154,139,127,120,120,120,150,180,150,44,45,70,130,56,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,95,0,3,0,5,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,80,46,31,46,57,25,36,20,10,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,15,11,34,27,13,17,13,10,3,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,18,40,32,16,20,16,12,4,0,142,140,122,120,120,120,172,110,152,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,90,0,2,0,17,0,150,0,60,2,41,5,166,9,83,12,106,14,160,27,90,13,28,26,29,22,17,19,9,4,155,145,128,120,120,120,197,120,120,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,65,0,2,0,17,0,236,0,226,2,236,4,90,10,173,12,144,14,0,28,65,16,26,32,28,23,16,16,7,3,180,147,113,120,120,120,247,170,165,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,70,0,2,0,1,0,172,0,68,2,59,6,10,10,123,12,99,14,48,28,70,32,35,50,44,46,36,26,9,4,163,126,125,120,120,120,185,117,127,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,50,0,2,0,17,0,178,0,214,1,192,6,255,10,173,12,115,15,133,27,50,21,18,40,33,35,33,17,10,4,162,130,127,126,131,140,187,125,137,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,40,0,2,0,17,0,172,0,70,2,26,4,0,10,199,11,119,14,128,27,40,25,29,40,46,33,28,15,10,3,153,137,136,120,120,120,165,135,135,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,50,0,2,0,17,0,180,0,214,1,242,3,176,9,123,12,206,14,56,27,50,14,14,37,23,18,15,19,7,3,160,132,112,120,120,120,177,125,117,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,0,34,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,128,0,40,2,161,5,96,9,188,12,116,14,96,27,0,36,28,51,63,35,32,28,14,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,75,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,0,1,112,2,192,3,64,11,48,12,36,14,15,28,0,42,25,48,48,20,40,23,6,5,186,175,135,120,120,120,105,185,148,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,75,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,0,45,45,48,68,35,38,25,11,5,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,0,67,24,76,51,44,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,192,0,179,1,92,3,252,8,184,11,60,15,32,28,0,43,19,81,28,14,11,8,7,0,120,82,90,120,120,120,75,82,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,75,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,136,1,188,2,160,10,88,12,176,14,159,27,0,46,31,46,57,25,36,20,10,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,100,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,100,15,40,32,16,20,16,12,4,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,21,25,39,40,37,30,20,7,6,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,112,0,13,2,161,5,36,9,188,12,116,14,96,27,0,60,34,66,80,45,47,36,18,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,75,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,0,53,31,69,57,42,31,19,9,4,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,160,0,232,1,198,7,236,9,12,13,101,14,128,28,0,41,27,56,59,58,46,34,11,7,185,112,127,120,120,120,185,117,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,100,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,100,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,0,27,6,49,41,38,41,19,12,6,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,0,35,17,52,37,27,30,22,12,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,74,0,2,0,37,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,75,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,0,35,6,61,36,21,21,30,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,12,0,2,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,12,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,60,0,3,0,5,0,200,0,160,2,176,4,40,10,234,11,96,14,224,27,30,4,20,15,12,15,12,16,5,0,150,175,175,120,120,120,100,125,125,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,200,0,160,2,176,4,40,10,234,11,96,14,224,27,30,4,17,18,11,14,11,15,4,0,150,175,175,120,120,120,100,125,125,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,160,2,176,4,40,10,234,11,96,14,224,27,0,4,14,20,10,13,10,14,4,0,150,175,175,120,120,120,100,125,125,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,55,0,2,0,5,0,200,0,160,2,176,4,40,10,234,11,96,14,224,27,55,5,16,23,12,15,12,16,5,0,150,175,175,120,120,120,100,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,200,0,160,2,176,4,40,10,234,11,96,14,224,27,0,5,16,23,12,15,12,16,5,0,150,175,175,120,120,120,100,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,90,0,2,0,17,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,90,21,28,36,46,24,22,28,14,8,167,150,135,120,120,120,197,120,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,65,0,2,0,17,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,65,35,32,53,48,31,24,25,12,6,217,155,105,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,60,0,2,0,1,0,64,1,72,2,28,7,0,10,104,13,15,15,224,28,60,31,31,43,49,39,30,38,12,7,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,50,0,2,0,17,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,50,47,8,65,54,50,54,25,16,8,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,40,0,2,0,17,0,160,0,32,2,132,3,216,9,164,11,141,14,32,27,40,87,34,66,84,51,46,23,17,6,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,50,0,2,0,17,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,50,36,6,62,37,21,21,31,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,40,0,2,0,17,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,40,43,19,60,40,35,38,35,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,47,0,3,0,37,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,27,6,28,16,12,20,12,10,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,37,0,172,0,134,2,176,4,80,10,234,11,96,14,224,27,20,9,34,12,12,23,10,9,6,0,106,157,136,135,135,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,160,2,176,4,120,10,234,11,96,14,224,27,0,6,27,6,9,18,6,6,6,0,142,140,122,120,120,120,172,110,152,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,45,0,2,0,37,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,45,10,35,20,15,25,15,12,5,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,108,2,176,4,40,10,234,11,96,14,224,27,0,4,22,13,9,16,9,7,3,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,47,0,4,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,7,5,27,12,20,10,4,4,2,0,70,175,150,150,150,120,85,130,137,44,35,50,60,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,20,9,32,21,21,13,6,5,2,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,20,11,35,26,18,16,10,8,2,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,12,37,27,19,17,11,9,3,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,45,0,4,0,1,0,160,0,160,2,76,4,40,10,234,11,96,14,224,27,5,21,47,38,19,24,15,11,4,0,70,175,150,150,150,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,172,0,160,2,126,4,40,10,234,11,96,14,224,27,35,20,42,34,17,21,15,11,3,0,142,140,122,120,120,120,172,110,152,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,5,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,45,0,2,0,5,0,148,0,120,1,100,5,84,11,32,13,135,15,224,28,45,35,32,58,36,40,51,27,10,0,102,105,127,120,120,120,102,90,127,44,45,70,130,52,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,124,0,209,1,112,3,84,11,68,12,191,14,160,26,0,66,26,78,70,48,48,30,17,0,120,120,120,120,120,120,75,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,0,0,2,0,5,0,98,0,106,1,230,5,60,10,12,13,37,15,114,26,75,20,14,45,29,19,17,16,9,8,155,112,127,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,17,0,64,0,189,1,20,5,84,11,52,13,235,15,128,27,0,18,16,48,32,17,11,10,7,0,150,135,120,120,120,120,120,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,140,0,3,0,1,0,115,0,200,1,180,5,122,9,200,12,179,14,96,27,50,42,26,54,67,41,43,34,16,6,167,134,130,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,115,0,200,1,180,5,122,9,200,12,179,14,96,27,90,74,35,72,89,54,57,44,22,8,167,134,130,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,115,0,200,1,180,5,122,9,200,12,179,14,96,27,0,38,25,51,64,39,41,32,16,6,167,134,130,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,160,0,4,0,1,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,50,42,7,61,51,47,51,23,15,7,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,60,54,8,69,58,53,58,26,17,8,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,50,47,14,61,47,46,49,20,15,7,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,172,0,64,1,207,8,214,11,112,13,134,16,42,27,0,34,12,53,41,40,42,17,13,6,182,120,133,133,142,161,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,4,0,33,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,52,21,24,39,39,36,29,19,7,6,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,75,29,29,46,47,43,35,23,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,70,23,26,41,42,38,31,21,7,7,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,25,27,43,44,40,33,22,8,7,167,90,135,120,120,120,122,120,120,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,220,0,5,0,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,50,44,11,61,43,32,35,26,14,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,90,75,15,79,57,41,46,34,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,50,60,13,71,51,37,41,30,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,30,50,12,65,46,34,38,28,15,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,153,0,156,1,248,2,120,10,148,12,176,14,244,26,0,29,9,50,35,26,29,21,11,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,160,0,4,0,1,0,160,0,32,2,132,3,216,9,164,11,141,14,32,27,50,43,24,46,59,36,33,16,12,4,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,160,0,32,2,132,3,216,9,164,11,141,14,32,27,70,93,36,68,87,53,48,24,18,7,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,32,2,132,3,216,9,164,11,141,14,32,27,40,70,31,59,75,46,42,21,15,6,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,160,0,32,2,132,3,216,9,164,11,141,14,32,27,0,43,24,46,59,36,33,16,12,4,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,120,0,4,0,1,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,50,35,6,61,36,21,21,30,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,70,59,8,80,48,28,28,40,16,10,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,50,36,6,62,37,21,21,31,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,64,1,52,3,56,9,12,13,60,15,144,26,0,23,5,50,30,17,17,25,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,71,0,3,0,5,0,192,0,179,1,92,3,252,8,184,11,60,15,32,28,26,43,19,81,28,14,11,8,7,0,120,82,90,120,120,120,75,82,90,44,45,70,130,53,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,208,0,199,1,132,3,16,9,184,11,60,15,32,28,45,62,31,81,61,30,24,15,8,0,120,120,150,120,120,120,75,90,105,44,45,70,130,55,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,32,1,88,3,40,5,140,10,112,13,191,14,32,28,0,53,31,69,57,42,31,19,9,4,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,180,0,5,0,1,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,50,37,40,43,61,31,35,23,10,5,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,40,67,55,59,82,43,47,31,13,7,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,50,54,49,53,74,38,42,28,12,6,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,40,48,46,50,70,36,40,26,11,6,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,63,1,182,2,80,5,64,10,139,13,33,15,96,28,0,21,30,33,46,24,26,17,7,4,221,135,155,120,120,120,150,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,58,0,3,0,5,0,116,0,200,0,26,4,102,8,232,13,24,16,124,21,48,10,21,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,50,0,0,0,0,60,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,216,0,251,4,202,8,102,13,24,16,124,21,10,12,20,16,10,6,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,55,65,50,0,0,0,0,60,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,35,0,2,0,5,0,116,0,232,0,252,3,60,10,232,13,24,16,124,21,35,8,16,14,4,2,2,2,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,4,22,17,8,11,8,6,2,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,58,0,3,0,5,0,116,0,208,0,104,6,40,10,232,13,24,16,124,21,48,7,12,16,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,50,0,0,0,0,60,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,126,0,212,0,34,6,171,9,102,13,24,16,124,21,10,10,16,18,10,6,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,50,0,0,0,0,60,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,216,0,220,5,46,9,228,12,24,16,124,21,0,15,20,20,12,8,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,54,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,58,0,3,0,5,0,116,0,200,0,208,7,34,11,232,13,24,16,124,21,48,11,22,13,9,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,75,140,48,0,0,0,0,60,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,200,0,214,6,40,10,102,13,24,16,124,21,10,12,20,16,10,6,4,4,0,0,200,212,187,255,255,175,200,212,187,44,30,75,140,48,0,0,0,0,60,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,200,0,220,5,46,9,228,12,24,16,124,21,0,12,18,18,10,7,3,3,0,0,200,212,187,255,255,175,200,212,187,44,30,50,85,54,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,35,0,3,0,5,0,116,0,200,0,198,7,34,11,232,13,24,16,124,21,20,10,19,19,7,3,3,3,0,0,100,150,150,150,150,150,100,150,150,44,30,75,140,56,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,150,0,180,1,59,6,165,10,233,12,60,15,174,24,15,11,28,24,11,11,9,7,1,0,85,162,150,135,135,135,100,150,150,44,30,50,85,54,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,160,2,176,4,40,10,234,11,96,14,224,27,0,15,40,32,16,20,16,12,4,0,70,175,150,120,120,120,85,130,187,44,45,70,130,53,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,188,2,51,0,255,0,0,1,0,2,2,5,3,6,5,8,5,8,2,0,197,190,230,30,57,50,29,11,254,227,221,233,4,27,27,14,254,235,231,234,243,254,14,25,22,11,3,250,246,245,249,2,8,11,10,5,0,247,251,248,250,1,1,2,3,255,7,251,250,249,246,6,9,17,21,18,14,14,14,16,217,147,162,234,65,82,67,26,6,228,208,211,245,23,42,52,46,4,203,170,192,245,35,57,45,26,9,236,231,212,239,3,20,34,34,12,244,221,213,247,5,23,34,25,13,9,245,243,196,218,233,25,56,34,23,246,229,224,245,2,20,23,29,16,251,231,236,228,244,3,16,26,12,252,0,239,253,239,10,15,16,4,4,253,245,250,247,6,9,255,18,0,246,250,236,11,14,12,240,242,250,249,16,16,2,250,0,1,13,14,11,23,252,235,212,208,241,14,34,37,31,16,254,229,215,230,244,249,34,47,61,25,234,208,221,238,2,225,248,49,55,24,235,198,230,251,8,27,20,20,18,3,238,243,242,255,1,252,13,13,0,235,243,3,254,253,254,13,15,12,0,249,3,3,254,18,15,8,254,208,217,227,254,40,27,23,15,0,251,240,242,4,6,14,16,1,250,230,228,240,0,15,26,21,8,250,254,255,252,252,3,4,17,15,253,246,219,232,1,12,12,10,255,255,253,249,255,2,13,22,0,59,23,15,0,202,131,161,242,60,99,41,39,0,245,220,219,248,17,65,81,15,197,157,184,227,24,67,64,44,233,204,227,244,241,31,44,46,20,253,233,202,206,235,26,66,33,13,239,212,218,234,28,26,24,21,4,253,236,219,246,0,6,35,34,25,240,234,230,235,239,242,13,39,46,30,0,225,190,215,12,36,38,23,253,241,248,3,0,247,233,236,14,34,32,6,247,228,235,0,8,10,0,246,0,19,16,4,250,239,237,249,14,13,9,6,252,6,3,251,236,242,244,1,27,27,17,7,243,238,239,239,252,1,22,21,16,12,233,236,246,247,5,8,3,16,18,14,4,235,227,227,253,21,26,23,7,247,240,245,236,0,6,0,32,8,16,0,237,247,232,3,11,23,6,230,250,253,9,16,3,0,241,1,253,13,252,244,23,15,2,248,230,240,2,6,20,24,4,1,244,226,254,236,8,27,4,15,9,250,240,238,247,28,30,20,245,216,223,242,12,27,31,14,252,247,239,242,252,0,32,19,5,253,232,220,242,16,30,35,8,249,229,226,250,18,39,21,235,226,223,234,26,52,50,13,223,202,216,252,37,35,13,247,238,11,20,2,236,218,229,8,42,51,24,238,214,223,250,14,21,11,255,250,3,12,6,249,242,242,255,10,9,10,3,250,254,254,0,1,0,1,255,252,1,7,8,7,254,246,245,248,3,12,10,0,255,250,0,11,2,253,244,245,2,15,16,12,245,240,242,251,15,11,7,252,0,5,6,254,246,242,253,12,12,6,249,247,251,4,7,8,0,250,254,5,0,5,3,247,7,253,255,0,242,252,0,14,16,0,249,0,253,6,10,252,251,253,255,6,7,249,249,252,1,7,9,6,244,247,249,3,13,6,125,0,3,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,65,23,53,41,25,16,13,16,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,60,23,53,41,25,16,13,16,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,0,13,42,29,18,11,9,11,6,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,136,2,15,0,32,20,44,55,14,36,37,12,13,23,241,240,13,253,5,17,226,0,245,12,228,250,230,250,237,251,22,3,53,11,2,39,1,20,40,35,9,221,25,18,17,227,252,27,247,0,51,28,29,37,34,30,48,18,30,63,55,54,252,61,66,33,52,35,69,52,75,53,31,54,72,31,27,58,12,41,44,43,245,26,23,5,237,4,247,244,21,3,241,21,3,6,5,31,7,25,43,11,36,64,37,82,41,21,47,36,40,21,51,64,13,18,59,22,49,255,17,45,30,21,23,18,15,32,25,22,226,19,26,247,32,248,5,17,41,6,24,12,234,27,23,59,249,1,14,32,43,250,246,252,42,35,251,8,45,245,6,3,5,7,40,226,18,30,0,243,22,251,3,57,50,230,235,89,9,234,62,14,240,82,68,216,7,20,16,10,247,21,236,223,59,40,166,4,245,223,22,252,17,15,27,249,32,22,245,3,46,49,228,59,41,249,44,29,25,9,246,69,241,36,25,7,0,18,47,217,248,0,241,32,46,251,238,24,67,28,230,35,31,47,13,41,85,0,14,72,239,57,70,245,16,31,22,24,32,30,36,39,75,7,217,13,61,15,253,57,66,223,38,77,36,235,242,66,60,237,2,52,8,48,25,208,61,45,234,227,12,68,202,242,97,227,252,94,216,240,50,255,4,252,41,235,18,81,235,17,251,64,214,213,80,239,210,80,33,185,39,226,37,239,224,47,255,36,38,14,62,254,12,42,23,239,48,4,16,239,5,60,245,68,221,240,54,234,212,22,22,16,253,95,49,146,20,89,202,10,102,228,243,84,26,248,22,78,235,224,38,37,196,28,75,209,16,62,234,247,13,244,56,11,237,35,58,233,251,67,36,214,53,61,0,77,236,5,58,47,10,251,11,42,0,224,14,10,21,241,20,50,28,203,238,72,60,12,250,18,53,1,14,30,238,41,60,255,253,41,29,236,202,59,73,203,2,255,187,77,30,153,253,96,2,144,24,109,205,195,66,55,9,236,192,41,44,7,203,41,97,239,215,252,69,53,244,226,85,95,183,208,72,64,242,231,245,32,51,235,10,252,49,11,161,64,78,240,248,16,72,52,234,45,31,226,4,238,3,40,17,244,254,248,242,250,239,13,13,221,9,215,2,80,10,248,40,14,38,34,210,245,34,253,7,7,70,13,215,13,34,47,230,218,68,51,8,36,236,10,50,183,6,0,187,20,28,215,234,6,245,53,239,198,36,7,237,36,34,16,14,215,4,55,245,14,91,59,6,2,19,44,40,237,72,120,64,6,39,66,47,16,14,71,57,19,252,23,13,9,70,25,200,11,18,233,230,36,51,29,65,45,18,249,8,7,237,41,26,250,72,87,203,240,85,2,144,217,11,13,37,4,41,120,30,195,248,67,11,184,215,60,43,214,27,120,49,209,223,20,40,194,173,246,53,20,253,23,249,1,249,213,3,1,0,42,0,0,0,0,119,122,0,110,115,34,0,123,115,12,34,0,13,115,0,14,115,0,111,115,0,112,115,0,114,115,55,0,115,119,0,121,35,12,0,122,35,34,0,116,35,12,0,132,35,57,0,139,35,57,125,34,0,130,35,58,0,140,35,58,13,0,144,111,0,117,110,0,146,36,0,135,110,12,34,0,133,110,12,116,0,118,120,0,109,121,0,124,37,12,0,136,37,34,0,137,37,12,34,0,126,122,0,125,122,12,0,143,39,0,127,122,34,0,128,122,34,0,134,122,57,0,131,123,0,145,114,0,113,40,0,129,124,0,138,40,34,0,120,136,0,141,37,34,0,142,115,34,0,44,34,0,106,47,0,58,127,0,0,0,0,0,0,0,180,0,5,0,1,0,63,1,160,2,124,6,64,10,139,13,33,15,96,28,50,38,37,37,66,41,35,23,10,5,221,200,155,120,120,120,150,245,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,63,1,160,2,124,6,64,10,139,13,33,15,96,28,40,71,50,50,89,55,47,31,13,7,221,200,155,120,120,120,150,245,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,63,1,160,2,124,6,64,10,139,13,33,15,96,28,50,57,45,45,80,49,42,28,12,6,221,200,155,120,120,120,150,245,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,63,1,160,2,124,6,64,10,139,13,33,15,96,28,40,45,40,40,71,44,37,25,10,6,221,200,155,120,120,120,150,245,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,63,1,160,2,124,6,64,10,139,13,33,15,96,28,0,22,28,28,50,31,26,17,7,4,221,200,155,120,120,120,150,245,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,175,0,4,0,1,0,141,0,97,1,68,7,134,9,242,12,208,14,66,26,45,39,21,58,49,47,48,27,11,7,167,100,124,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,141,0,97,1,68,7,134,9,242,12,208,14,66,26,70,75,29,81,68,66,66,38,15,10,167,100,124,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,141,0,97,1,68,7,134,9,242,12,208,14,66,26,60,61,26,73,61,59,60,34,14,9,167,100,124,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,141,0,97,1,68,7,134,9,242,12,208,14,66,26,0,34,20,55,46,45,45,26,10,7,167,100,124,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,215,0,5,0,1,0,32,1,92,3,192,5,102,10,158,13,27,15,118,27,45,35,30,56,58,37,34,23,6,4,209,165,164,130,120,120,167,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,32,1,92,3,192,5,102,10,158,13,27,15,118,27,60,74,44,82,84,54,49,34,9,6,209,165,164,130,120,120,167,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,56,1,207,2,86,6,216,9,152,13,112,15,220,28,70,68,39,69,75,57,44,34,12,7,255,144,161,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,6,1,50,2,45,7,223,9,77,13,225,14,189,28,40,48,32,52,60,51,42,35,11,7,228,126,148,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,32,2,70,7,225,9,68,13,208,14,185,28,0,31,25,41,48,41,34,29,9,6,224,124,146,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,185,0,4,0,1,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,45,46,22,50,61,38,34,31,9,5,167,157,147,120,120,120,167,152,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,60,88,31,70,84,52,47,43,12,7,167,157,147,120,120,120,167,152,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,80,79,29,66,79,49,45,41,11,7,167,157,147,120,120,120,167,152,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,250,0,160,2,76,4,246,10,188,12,92,14,87,27,0,42,22,50,60,37,34,31,8,5,167,159,147,120,120,120,167,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,105,0,4,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,30,16,19,37,29,17,15,15,5,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,45,19,22,41,33,19,17,17,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,30,19,22,41,33,19,17,17,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,0,13,16,31,34,21,22,17,8,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,128,0,32,2,196,4,216,9,188,12,20,15,96,27,45,45,33,61,58,39,36,33,17,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,128,0,32,2,196,4,216,9,188,12,20,15,96,27,60,71,42,76,72,49,46,42,22,7,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,32,2,196,4,216,9,188,12,20,15,96,27,70,57,38,69,65,44,41,38,19,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,128,0,32,2,236,4,216,9,188,12,20,15,96,27,0,41,32,58,55,37,35,32,16,5,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,156,0,40,1,172,8,64,11,192,13,120,15,144,27,45,40,11,59,53,50,42,28,11,7,176,106,155,120,120,120,185,107,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,156,0,40,1,172,8,64,11,192,13,120,15,144,27,80,74,16,81,73,68,57,38,15,9,176,106,155,120,120,120,185,107,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,156,0,36,1,196,8,76,11,216,13,144,15,144,27,50,63,14,75,67,63,52,35,14,9,176,106,155,120,120,120,185,107,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,32,1,212,8,84,11,232,13,160,15,144,27,0,33,10,53,48,45,37,25,10,6,176,106,155,120,120,120,185,107,155,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,250,0,5,0,1,0,248,0,144,2,204,6,196,9,242,13,183,15,64,28,45,28,24,44,49,44,29,19,7,4,193,135,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,144,2,204,6,196,9,242,13,183,15,64,28,80,82,41,76,83,75,49,33,12,8,193,135,180,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,128,2,204,6,208,9,225,13,155,15,70,28,80,74,39,72,78,72,48,33,11,8,193,132,174,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,214,0,33,2,59,7,27,10,118,13,233,14,110,28,45,48,28,58,59,61,44,33,10,7,187,115,141,120,120,120,217,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,248,1,108,7,60,10,72,13,156,14,128,28,0,30,23,48,48,52,39,30,9,6,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,4,0,33,0,169,0,56,1,192,8,28,11,84,13,40,15,20,26,52,28,19,35,41,45,45,29,11,5,166,170,129,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,169,0,56,1,192,8,28,11,84,13,40,15,20,26,75,44,24,44,52,56,56,36,14,6,166,170,129,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,169,0,56,1,192,8,28,11,84,13,40,15,20,26,79,35,21,39,46,50,51,33,13,6,166,170,129,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,169,0,56,1,192,8,28,11,84,13,40,15,20,26,0,33,25,36,43,46,46,33,13,6,166,170,129,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,184,0,152,1,128,7,236,9,52,13,80,15,96,25,50,41,35,59,42,57,53,28,12,5,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,152,1,128,7,236,9,52,13,80,15,96,25,60,74,47,79,57,76,71,38,17,7,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,152,1,128,7,236,9,52,13,80,15,96,25,40,60,42,71,51,68,64,34,15,6,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,160,1,108,7,20,10,92,13,120,15,96,25,0,44,34,68,38,51,47,27,10,8,160,105,120,120,120,120,130,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,5,0,1,0,251,0,136,2,96,4,92,10,60,12,48,14,235,27,50,39,30,52,63,24,35,22,7,5,182,149,126,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,251,0,136,2,96,4,92,10,60,12,48,14,235,27,50,77,41,72,87,33,49,31,9,7,182,149,126,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,251,0,136,2,96,4,92,10,60,12,48,14,235,27,50,77,41,72,87,33,49,31,9,7,182,149,126,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,251,0,136,2,96,4,92,10,60,12,48,14,235,27,40,55,35,61,74,28,42,26,8,6,182,149,126,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,80,2,232,3,80,10,28,12,36,14,15,28,0,25,24,38,48,16,28,16,4,4,186,151,122,120,120,120,105,164,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,165,0,4,0,1,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,45,48,34,51,73,40,48,24,14,6,170,150,150,120,120,120,170,165,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,80,68,41,61,87,48,57,28,17,7,170,150,150,120,120,120,170,165,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,204,0,100,2,208,4,60,10,168,12,10,15,0,28,40,59,38,55,82,45,54,27,16,6,170,150,150,120,120,120,170,165,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,100,2,216,4,60,10,168,12,10,15,0,28,0,40,37,46,64,35,42,21,12,9,167,150,150,120,120,120,167,165,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,5,0,1,0,192,0,192,1,72,3,38,10,208,11,47,14,159,27,50,40,25,45,62,20,33,18,9,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,192,1,72,3,38,10,208,11,47,14,159,27,50,77,35,63,87,28,45,25,13,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,192,1,72,3,38,10,208,11,47,14,159,27,50,77,35,63,87,28,45,25,13,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,192,1,72,3,38,10,208,11,47,14,159,27,40,49,31,53,66,24,39,21,11,6,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,192,0,192,1,72,3,38,10,208,11,47,14,159,27,0,28,28,45,41,20,33,18,9,5,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,100,0,4,0,1,0,176,0,72,1,132,3,56,9,12,13,60,15,144,26,50,36,3,58,43,21,21,30,15,7,177,175,102,120,120,120,177,175,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,72,1,132,3,56,9,12,13,60,15,144,26,50,61,4,76,56,28,28,40,20,10,177,175,102,120,120,120,177,175,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,72,1,132,3,56,9,12,13,60,15,144,26,70,45,3,64,49,24,24,35,17,8,177,180,102,120,120,120,177,180,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,72,1,132,3,56,9,12,13,60,15,144,26,0,24,2,45,35,17,17,25,12,6,177,200,102,120,120,120,177,200,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,110,0,6,0,1,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,45,58,27,62,74,40,33,28,10,5,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,65,137,42,95,114,62,51,43,16,8,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,40,111,38,86,102,55,46,39,15,7,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,218,0,120,2,232,3,161,10,109,12,71,14,60,27,50,94,29,71,93,53,42,37,17,8,166,145,137,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,216,1,12,3,196,9,254,11,157,14,216,26,40,75,26,68,68,47,43,25,18,8,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,144,0,216,1,12,3,196,9,254,11,157,14,216,26,0,53,22,57,57,40,36,21,15,7,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,45,0,3,0,5,0,116,0,232,0,164,6,176,9,152,13,60,15,124,21,45,9,20,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,232,0,164,6,216,9,192,13,80,15,124,21,0,9,20,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,0,164,6,216,9,192,13,80,15,124,21,0,9,20,12,8,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,58,0,3,0,5,0,116,0,232,0,252,8,240,10,232,13,24,16,124,21,58,11,22,13,9,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,232,0,252,8,240,10,232,13,24,16,124,21,0,11,22,13,9,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,0,252,8,240,10,232,13,24,16,124,21,0,11,22,13,9,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,42,3,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,14,26,36,42,44,45,42,34,23,3,230,196,171,166,179,204,230,249,5,15,25,30,24,0,222,185,164,168,195,224,243,0,17,47,80,102,102,79,44,11,244,226,206,185,168,166,187,230,25,68,91,97,98,100,96,75,34,239,189,158,150,159,174,191,213,245,32,78,113,125,112,81,44,9,234,200,165,137,131,153,198,251,39,70,91,106,114,110,87,46,252,202,168,153,153,163,180,204,239,26,71,104,116,106,82,53,22,245,208,171,144,137,154,187,228,9,40,64,82,92,91,73,40,255,216,188,174,170,172,180,198,229,10,48,75,85,80,66,46,22,250,216,184,161,154,166,192,225,1,31,57,77,91,94,82,55,20,244,219,203,193,189,193,206,229,1,30,51,61,62,55,42,25,4,237,213,195,187,192,206,225,245,7,25,41,52,54,45,29,8,245,229,217,210,207,210,220,235,255,17,32,40,41,38,31,21,7,248,231,219,214,217,226,238,251,7,20,31,39,40,33,21,7,250,238,229,224,223,225,233,244,2,16,27,32,33,31,26,18,7,252,240,232,228,230,235,243,253,6,17,26,31,32,28,20,9,255,246,238,233,231,232,238,246,0,10,17,22,24,23,20,13,5,253,245,238,235,235,239,245,252,2,10,17,21,22,20,15,8,1,251,246,242,240,240,243,249,255,4,9,13,15,15,13,10,5,0,251,248,245,245,246,249,252,0,3,7,10,11,10,8,5,2,0,253,251,250,250,251,253,255,1,3,5,5,6,5,4,2,0,0,255,254,254,254,255,0,0,1,1,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,0,4,0,1,0,32,1,66,3,196,4,130,10,112,13,48,15,32,28,45,49,30,65,58,38,30,19,9,4,186,152,120,120,120,120,192,155,135,44,45,70,130,58,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,32,1,66,3,196,4,130,10,112,13,48,15,32,28,70,100,43,92,83,55,43,28,13,6,186,152,120,120,120,120,192,155,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,32,1,66,3,196,4,130,10,112,13,48,15,32,28,60,82,38,83,75,50,38,25,11,5,186,152,120,120,120,120,192,155,135,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,32,1,66,3,196,4,130,10,112,13,48,15,32,28,0,43,28,61,55,36,28,18,8,4,186,152,120,120,120,120,192,155,135,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,130,0,80,1,162,8,240,10,112,13,100,15,120,26,45,48,19,68,52,50,43,30,11,6,168,95,132,143,120,120,185,102,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,130,0,80,1,162,8,240,10,112,13,100,15,120,26,70,89,26,93,71,68,59,40,16,8,168,95,132,143,120,120,185,102,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,130,0,80,1,162,8,200,10,112,13,100,15,120,26,60,81,24,88,67,64,56,38,15,8,168,95,132,143,120,120,185,102,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,130,0,80,1,162,8,200,10,112,13,100,15,120,26,0,36,16,58,44,43,37,25,10,5,168,95,132,143,120,120,185,102,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,133,0,93,1,164,6,242,8,208,12,114,14,24,25,45,41,21,57,47,41,38,32,10,11,173,111,133,121,121,130,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,133,0,93,1,164,6,242,8,208,12,114,14,24,25,80,71,27,76,62,54,50,42,13,14,173,111,133,121,121,130,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,133,0,93,1,164,6,242,8,208,12,114,14,24,25,70,57,25,68,55,49,45,38,12,13,173,111,133,121,121,130,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,133,0,93,1,164,6,242,8,208,12,114,14,24,25,0,35,19,54,44,38,35,30,9,10,173,111,133,121,121,130,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,245,0,6,0,1,0,72,1,136,3,40,5,140,10,112,13,191,14,32,28,45,50,32,67,59,34,30,19,9,4,207,150,105,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,72,1,136,3,40,5,140,10,112,13,191,14,32,28,40,101,43,96,85,49,43,27,13,6,207,150,105,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,55,1,100,3,128,5,140,10,116,13,189,14,32,28,75,82,41,88,78,48,40,26,12,6,203,144,114,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,48,1,56,9,164,11,232,13,220,15,160,26,40,59,21,68,68,61,54,32,15,7,167,110,120,120,120,120,167,110,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,105,0,48,1,56,9,164,11,232,13,220,15,93,26,45,31,15,51,51,47,46,26,12,8,172,106,109,120,120,120,167,110,120,44,45,70,130,55,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,105,0,48,1,56,9,164,11,232,13,220,15,93,26,0,31,15,51,51,47,46,26,12,8,172,106,109,120,120,120,167,110,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,170,0,4,0,1,0,229,0,216,2,20,5,35,10,227,12,233,14,214,27,50,56,32,63,71,40,43,24,14,6,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,229,0,216,2,20,5,35,10,227,12,233,14,214,27,70,89,40,80,89,50,55,31,17,7,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,229,0,216,2,20,5,35,10,227,12,233,14,214,27,50,83,39,77,87,49,53,30,17,7,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,229,0,224,2,20,5,35,10,227,12,233,14,214,27,0,41,28,55,56,35,38,21,12,5,189,159,136,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,115,0,4,0,1,0,136,0,224,1,24,6,116,9,248,12,240,15,95,27,45,44,27,57,66,39,41,24,16,6,170,137,135,122,124,128,197,137,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,136,0,224,1,24,6,116,9,248,12,220,15,95,27,70,71,34,72,83,49,52,30,20,8,170,137,135,122,124,128,197,137,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,234,1,4,6,92,9,227,12,157,15,95,27,70,64,33,69,79,47,50,30,19,7,170,137,135,122,124,128,197,137,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,4,2,240,5,36,9,178,12,10,15,95,27,0,36,24,52,59,35,38,25,14,5,170,137,135,122,124,128,197,137,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,165,0,4,0,1,0,180,0,192,1,196,4,212,8,148,12,226,14,144,26,45,34,24,51,51,36,36,30,15,7,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,180,0,192,1,196,4,212,8,148,12,226,14,144,26,70,60,32,68,68,48,48,40,20,10,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,180,0,192,1,196,4,212,8,148,12,226,14,144,26,50,54,30,64,64,45,45,38,19,9,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,180,0,192,1,196,4,212,8,148,12,226,14,144,26,0,29,22,47,47,33,33,28,14,7,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,199,0,6,0,5,0,24,1,240,2,116,4,4,11,152,13,35,15,64,27,51,53,27,57,72,38,39,19,3,8,225,165,135,120,120,120,225,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,240,2,116,4,4,11,72,13,191,14,64,27,75,95,34,81,88,51,55,37,5,7,167,165,165,120,120,120,167,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,240,2,196,4,200,10,72,13,191,14,64,27,30,77,32,77,83,48,52,35,5,6,167,165,165,120,120,120,167,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,33,0,196,0,224,2,249,5,232,8,188,12,247,13,64,27,33,39,29,59,54,45,44,45,8,8,167,150,180,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,193,0,208,1,160,7,173,9,21,13,229,14,64,27,40,41,30,57,50,49,43,40,14,9,167,105,180,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,192,0,168,1,208,7,196,9,32,13,0,15,64,27,0,30,27,50,44,44,38,34,13,8,167,100,180,120,120,120,137,85,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,225,0,6,0,1,0,177,0,117,1,37,3,102,10,50,12,55,15,148,26,45,38,11,53,49,26,23,20,12,6,162,127,149,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,177,0,117,1,37,3,102,10,50,12,55,15,148,26,50,60,13,66,61,32,29,26,16,8,162,127,149,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,189,0,168,1,84,3,128,10,68,12,5,15,185,26,50,64,24,59,72,37,34,31,17,8,163,130,147,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,244,0,128,2,36,4,240,10,148,12,41,14,96,27,40,94,30,75,97,50,46,46,15,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,244,0,128,2,36,4,240,10,148,12,41,14,96,27,40,84,29,71,92,47,44,44,14,7,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,244,0,128,2,36,4,240,10,148,12,41,14,96,27,0,45,23,53,64,36,33,33,11,5,167,142,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,250,0,5,0,1,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,45,27,6,51,45,46,46,22,10,5,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,80,65,9,78,70,70,71,34,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,161,0,67,1,160,8,207,10,36,13,208,14,0,27,65,48,12,66,59,62,59,31,13,7,166,105,121,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,31,1,72,2,244,6,0,10,104,13,15,15,224,28,60,38,30,52,55,49,38,27,10,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,31,1,72,2,244,6,0,10,104,13,15,15,224,28,0,33,28,48,51,46,35,25,9,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,201,4,37,0,1,5,238,14,15,233,0,15,12,244,232,21,11,0,252,238,27,254,250,251,0,30,251,232,4,19,244,249,15,238,27,244,247,11,249,2,8,250,2,7,249,8,243,14,242,2,29,243,242,0,20,248,3,5,245,7,2,12,248,239,10,18,3,229,11,9,248,28,222,16,19,252,19,249,5,237,227,235,239,35,16,242,248,244,11,239,33,20,213,26,249,5,21,227,0,35,39,240,220,12,29,29,243,242,16,29,2,229,13,0,19,8,250,245,19,4,247,220,239,234,211,242,20,8,0,6,12,238,224,14,41,195,231,247,188,236,15,234,1,25,3,231,252,28,27,35,252,236,23,58,255,232,34,41,255,8,19,252,252,29,46,235,238,74,8,189,13,27,235,233,31,14,236,228,253,23,237,239,16,234,231,29,241,242,4,16,236,239,38,228,234,68,238,216,40,240,255,24,247,11,239,255,3,21,18,227,243,44,224,253,15,5,10,216,247,51,8,200,4,36,250,2,218,249,45,2,213,11,13,177,229,20,1,232,30,21,208,26,55,18,194,20,42,7,14,218,8,59,243,251,29,252,2,247,1,15,18,243,253,10,4,255,11,252,232,248,23,250,242,243,21,246,222,33,252,244,13,253,221,255,38,250,201,55,247,214,13,0,250,2,217,218,251,51,210,204,33,55,237,217,34,13,11,232,0,80,228,255,8,19,58,210,25,40,226,51,246,237,37,12,255,234,27,26,203,36,19,221,3,1,0,237,250,28,221,237,35,240,240,1,229,253,0,7,9,244,245,233,46,251,210,26,14,248,238,33,13,203,28,26,224,5,5,252,25,245,15,1,250,29,236,237,54,221,206,247,8,247,187,21,51,222,25,35,233,12,25,219,254,45,3,245,21,26,5,253,0,5,237,35,236,226,22,43,206,238,52,19,226,236,21,1,249,244,244,4,54,223,204,22,5,0,11,197,240,53,218,232,53,210,10,21,251,244,0,2,11,8,255,249,241,38,249,217,26,27,5,11,251,218,55,26,199,5,30,10,12,198,38,7,221,38,255,227,13,6,43,224,215,62,0,235,42,212,243,43,253,253,224,16,28,244,12,4,223,251,51,226,239,19,225,30,32,213,238,6,32,231,232,27,240,238,13,11,233,247,27,237,3,250,2,22,216,19,25,222,36,10,211,254,37,46,215,220,50,230,240,30,250,246,232,31,5,232,32,243,42,239,253,31,233,14,220,48,31,210,15,245,11,15,2,237,24,251,8,217,47,33,207,7,31,17,190,11,20,242,218,34,10,179,23,52,222,236,14,25,16,246,243,10,239,183,244,12,195,241,62,188,9,23,249,246,232,88,27,171,23,49,21,34,27,225,11,7,71,197,217,93,254,213,27,22,240,25,16,224,23,23,223,36,243,220,57,242,219,218,38,13,172,28,18,226,179,57,41,164,244,66,208,251,248,234,23,34,29,195,45,248,250,12,0,20,234,33,47,208,3,63,207,34,18,185,0,31,252,216,254,19,36,10,217,220,22,34,251,217,245,70,2,181,18,35,220,96,161,18,92,165,252,42,254,10,1,228,32,0,246,2,4,30,18,240,235,26,235,225,246,35,31,184,224,65,251,241,246,13,28,232,234,48,191,233,90,231,226,43,8,191,24,62,206,221,38,25,189,252,72,218,222,69,5,208,46,245,209,21,53,250,180,54,0,198,76,7,194,26,41,235,1,240,31,240,237,51,199,237,112,217,177,52,24,222,6,238,241,55,217,183,59,58,208,241,17,35,214,0,25,255,31,219,233,54,0,247,1,228,30,215,20,53,200,20,249,238,83,254,142,16,125,236,153,40,54,253,18,206,254,49,36,205,182,51,75,223,172,9,247,48,245,240,251,8,20,226,1,24,232,3,29,15,4,252,252,12,0,16,242,66,239,184,4,38,15,225,245,21,1,241,3,219,11,227,250,38,248,188,216,77,64,187,240,5,69,230,203,57,39,243,5,240,39,19,208,248,28,2,234,248,6,248,14,11,250,24,30,221,218,44,9,250,203,242,17,19,254,202,217,49,241,241,0,238,14,32,0,230,253,44,0,223,86,233,246,39,1,246,6,4,12,234,3,38,237,16,223,223,50,23,229,211,250,27,254,246,233,219,46,250,188,40,20,239,244,42,19,233,48,18,202,9,11,229,16,22,218,245,35,32,238,223,58,7,0,11,205,221,74,25,186,10,34,244,222,250,53,16,200,20,37,254,252,227,13,18,14,252,252,31,216,204,28,50,6,234,225,35,1,230,251,22,11,2,237,0,42,241,212,38,32,227,13,9,209,10,27,238,210,248,20,231,249,13,33,0,236,34,21,9,11,227,12,29,249,226,245,14,224,196,1,3,196,242,12,37,234,243,40,16,250,21,3,252,18,11,209,241,70,18,248,3,1,249,229,16,29,236,64,29,214,13,18,4,253,240,15,4,15,239,216,10,32,246,4,239,232,222,241,4,10,1,242,238,255,12,227,242,16,248,244,10,248,244,7,0,28,35,12,237,5,32,20,17,226,0,26,4,231,15,26,224,239,31,22,244,233,246,0,0,18,246,244,24,11,253,3,242,241,0,14,18,254,247,249,1,0,243,4,13,2,243,0,6,1,29,219,236,44,3,248,243,6,48,241,242,31,4,12,252,250,22,13,240,247,1,253,237,231,246,6,1,241,252,1,6,252,247,16,11,0,17,7,7,253,0,10,232,254,20,3,250,237,245,0,0,14,254,247,252,243,0,252,248,6,7,252,0,0,0,165,0,4,0,1,0,144,0,224,1,32,3,140,10,228,12,120,15,88,27,45,51,23,55,59,35,32,18,13,5,165,131,145,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,144,0,224,1,32,3,140,10,228,12,120,15,88,27,60,94,32,75,80,47,44,25,18,8,165,131,145,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,144,0,224,1,32,3,140,10,228,12,120,15,88,27,60,75,29,67,71,42,39,22,16,7,165,131,145,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,144,0,224,1,32,3,140,10,228,12,120,15,88,27,0,44,22,51,54,32,30,17,12,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,156,0,4,0,1,0,253,0,32,3,40,5,77,10,28,13,216,14,244,27,46,49,30,64,61,39,37,21,11,5,200,157,123,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,253,0,32,3,40,5,77,10,28,13,216,14,244,27,50,85,40,84,80,52,48,28,15,6,200,157,123,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,253,0,32,3,40,5,77,10,28,13,216,14,244,27,60,79,38,81,77,50,46,27,14,6,200,157,123,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,253,0,32,3,40,5,77,10,28,13,216,14,244,27,0,52,31,66,63,40,38,22,11,5,200,157,123,120,120,120,247,170,165,44,65,75,130,53,0,0,0,0,50,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,240,0,250,2,96,4,24,11,212,13,44,16,32,28,45,49,27,58,58,34,30,23,9,4,162,155,135,120,120,120,192,155,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,240,0,250,2,96,4,24,11,212,13,44,16,32,28,70,102,40,84,83,50,43,33,13,6,162,155,135,120,120,120,192,155,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,250,2,96,4,24,11,212,13,44,16,32,28,60,92,38,79,79,47,41,31,12,6,162,155,135,120,120,120,192,155,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,240,0,250,2,96,4,24,11,212,13,44,16,32,28,0,41,25,53,52,31,27,21,8,4,162,155,135,120,120,120,192,155,135,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,4,0,1,0,136,0,224,1,4,6,36,9,248,12,220,15,95,27,45,47,29,60,60,42,44,25,17,6,170,137,153,122,124,128,197,137,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,136,0,224,1,4,6,36,9,248,12,220,15,95,27,50,74,36,76,76,52,55,32,21,8,170,137,153,122,124,128,197,137,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,168,1,180,5,72,8,248,12,220,15,95,27,70,79,36,76,68,52,55,32,21,8,170,137,165,122,124,128,197,137,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,144,1,84,6,72,8,248,12,220,15,95,27,0,38,24,51,54,35,29,21,14,5,170,137,135,122,124,128,197,137,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,240,0,5,0,1,0,168,0,240,1,132,3,216,9,224,11,141,14,32,27,45,56,27,57,64,39,35,21,13,5,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,240,1,132,3,216,9,224,11,141,14,32,27,80,108,38,80,89,54,49,29,18,7,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,170,0,224,1,138,3,186,9,224,11,141,14,76,27,55,85,31,74,79,48,43,27,16,6,164,133,148,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,181,0,172,1,115,3,51,9,224,11,141,14,22,28,60,73,31,73,64,40,33,21,12,7,163,126,141,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,192,0,120,1,92,3,172,8,224,11,141,14,224,28,0,39,25,58,35,24,16,14,7,7,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,215,0,6,0,1,0,132,0,16,1,184,6,36,9,228,12,96,14,100,25,45,37,18,57,36,30,30,30,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,16,1,184,6,36,9,228,12,96,14,100,25,20,68,24,76,51,44,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,70,54,21,68,46,39,43,39,10,14,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,178,0,126,1,31,4,53,9,251,11,131,14,113,26,40,37,22,51,47,36,32,21,14,7,163,128,153,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,138,1,212,3,56,9,224,11,136,14,144,26,40,41,24,53,51,38,33,21,15,6,162,133,155,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,184,0,138,1,212,3,56,9,224,11,136,14,144,26,0,29,20,44,42,31,27,17,13,5,162,133,155,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,100,0,3,0,5,0,4,0,176,0,208,7,184,11,58,14,136,19,224,21,40,4,0,24,2,2,4,4,4,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,4,0,176,0,208,7,184,11,58,14,136,19,224,21,60,5,0,25,2,2,4,4,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,9,0,4,0,176,0,108,7,184,11,58,14,136,19,224,21,0,5,0,25,2,2,4,4,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,198,8,12,0,0,255,254,252,251,251,253,0,1,1,2,2,2,0,253,251,248,245,241,237,235,236,236,237,237,237,240,243,246,245,241,238,236,235,236,237,239,244,250,253,254,0,5,10,10,4,254,250,247,240,232,227,227,228,227,230,235,240,244,245,241,240,247,0,6,6,255,247,241,231,223,230,239,242,243,247,255,8,11,6,5,6,10,22,38,49,60,70,70,66,65,65,65,64,59,49,38,23,4,244,232,218,206,202,199,196,196,197,196,199,203,207,213,221,228,233,237,239,238,238,242,247,0,14,26,30,33,37,37,39,42,41,43,47,47,46,47,43,36,31,29,27,30,39,48,56,60,58,56,61,71,81,93,105,114,120,125,123,116,113,113,109,103,104,105,102,97,90,81,78,75,60,44,38,32,25,19,6,246,235,227,225,235,249,0,0,253,249,250,254,3,11,16,16,6,252,249,254,2,2,255,251,249,242,230,214,201,197,200,200,200,207,215,224,231,231,234,246,255,252,246,241,235,227,217,211,220,242,2,8,11,14,12,1,243,227,216,210,199,182,171,172,178,183,185,188,195,208,219,222,218,214,212,210,209,213,218,225,237,249,254,0,4,14,22,20,11,3,1,250,235,222,219,222,225,228,234,241,247,255,1,3,13,27,35,34,26,17,13,4,249,246,249,249,248,249,254,4,9,7,6,9,12,19,27,29,28,28,27,22,18,18,17,13,8,3,0,250,241,234,234,237,236,235,237,238,235,227,219,220,232,249,4,14,22,30,37,37,31,25,22,16,11,11,11,13,19,24,33,39,35,27,25,18,5,254,254,0,0,251,245,241,235,229,231,236,239,239,239,239,236,232,234,242,251,0,2,7,7,255,248,247,242,227,204,190,198,217,232,247,1,2,253,244,242,9,40,37,9,246,235,223,216,220,232,244,241,223,223,251,14,7,0,253,235,216,218,236,250,249,246,254,10,19,25,36,59,70,51,31,32,31,17,3,3,22,44,48,38,29,31,30,16,254,244,244,239,226,218,230,251,8,14,20,28,29,18,2,245,235,235,244,251,3,20,35,33,21,23,44,51,21,245,245,246,234,239,1,14,17,8,252,7,32,42,35,23,12,5,255,245,242,244,240,236,241,246,247,255,9,16,20,15,12,22,24,8,1,6,8,11,9,253,251,6,11,14,15,13,24,38,30,18,21,21,8,250,244,252,5,9,20,30,19,6,13,26,29,19,6,7,16,21,33,51,56,43,23,10,11,20,31,29,11,251,244,249,9,11,251,251,10,8,250,251,13,28,22,11,15,24,15,0,255,3,4,10,18,15,8,2,3,12,13,15,35,32,249,235,1,6,251,0,13,6,251,252,11,31,32,15,15,24,18,6,255,253,2,1,251,3,19,21,12,1,3,19,27,15,254,237,221,218,234,245,241,248,2,248,236,4,45,58,42,32,40,43,36,35,41,29,252,226,228,237,245,12,34,29,11,249,236,241,252,249,241,234,228,235,246,0,28,54,45,19,6,10,24,22,251,231,237,252,11,23,27,21,5,249,1,15,21,24,14,248,241,251,8,23,26,14,10,7,249,249,17,26,0,232,238,2,0,244,251,13,16,0,247,8,29,21,0,1,11,2,231,209,223,4,18,3,0,20,29,9,5,46,62,13,235,254,17,11,254,251,12,18,252,241,4,18,5,242,245,15,27,13,4,7,6,7,18,25,12,251,253,15,17,6,13,27,12,240,244,24,38,10,235,233,252,10,2,252,5,6,0,10,17,16,24,21,0,252,4,11,19,12,255,18,46,40,33,40,33,23,27,13,243,233,237,241,247,242,241,9,36,33,3,235,226,212,195,205,229,243,254,3,255,6,38,71,76,43,13,25,47,39,13,9,37,43,255,221,243,27,38,255,204,211,249,244,226,246,20,24,15,11,25,42,35,1,234,246,0,245,249,8,245,221,248,34,38,3,231,252,35,8,203,221,34,22,199,199,33,76,21,241,29,75,58,15,254,2,252,219,202,241,25,13,246,9,44,48,33,27,24,6,238,229,246,7,234,190,204,242,243,232,249,8,3,4,24,34,26,11,250,237,235,246,17,31,9,248,250,3,30,45,29,26,25,0,240,242,239,245,252,242,236,247,6,22,30,19,252,243,252,246,227,222,224,221,221,231,252,21,21,255,246,5,24,26,252,222,232,248,237,235,0,9,255,246,3,42,69,45,6,249,250,255,254,244,246,246,215,206,255,43,33,251,236,251,0,237,234,253,249,212,182,206,254,253,224,236,15,24,13,0,0,20,16,238,239,26,31,246,226,252,37,47,3,236,15,24,238,221,244,0,234,199,209,253,0,239,246,9,32,31,253,244,254,234,215,217,234,9,16,6,31,49,33,28,18,246,231,224,223,240,232,202,195,208,229,6,28,30,25,15,0,251,5,10,241,203,201,244,31,31,12,15,17,1,249,253,239,201,186,226,7,7,10,8,249,244,235,228,250,246,211,207,218,232,6,10,252,0,248,237,0,3,248,250,238,229,250,12,14,13,14,16,7,1,3,242,231,249,254,239,231,224,230,248,253,3,14,0,227,216,231,248,254,253,241,228,228,230,239,6,15,247,219,232,10,9,243,252,17,22,2,225,236,15,252,233,13,31,11,250,247,21,48,22,238,221,228,238,228,234,13,3,218,226,5,32,36,250,215,232,231,212,233,251,226,207,235,35,55,13,236,254,20,15,252,239,240,243,247,13,34,13,238,242,6,20,23,255,219,218,239,246,243,246,247,237,230,240,0,9,8,248,237,3,7,215,189,217,233,233,247,247,231,240,255,2,21,25,12,21,25,253,234,234,245,7,11,18,27,249,222,7,47,54,31,224,196,230,234,224,240,219,189,200,223,4,34,5,234,249,0,0,8,255,234,223,222,230,233,238,0,14,15,20,35,50,45,22,11,8,247,231,238,243,227,209,210,229,5,26,14,251,244,240,234,228,221,219,216,218,236,249,250,3,17,25,31,14,238,229,232,224,225,242,2,16,14,17,48,57,21,4,8,249,227,215,217,243,7,1,255,1,247,234,240,5,19,2,219,203,235,11,253,227,239,12,22,5,243,2,14,230,199,219,229,215,217,234,14,53,38,252,248,19,33,18,243,222,219,213,203,223,255,243,211,224,16,52,50,14,249,6,21,11,241,221,216,195,177,210,250,240,215,222,15,57,48,29,15,241,231,241,237,233,214,192,227,18,35,65,71,36,29,30,8,246,205,162,174,195,204,223,235,2,31,29,38,52,17,239,239,254,4,214,156,187,252,12,23,45,48,20,240,245,37,53,5,207,197,214,214,214,233,248,250,243,246,30,62,38,0,228,216,244,15,10,254,232,218,239,251,249,13,8,228,230,13,46,43,255,222,237,5,7,232,199,214,237,227,239,24,34,6,229,243,41,37,222,188,226,8,4,239,237,252,10,15,12,33,50,8,222,229,245,254,237,196,205,237,229,240,254,220,228,24,48,68,56,250,235,4,8,15,255,204,197,207,203,239,21,2,234,243,21,58,42,246,227,236,243,243,229,224,241,243,234,247,4,8,14,13,3,2,0,247,0,9,253,251,0,235,227,1,5,236,228,230,241,5,3,251,253,240,234,253,254,248,254,245,239,1,17,26,28,15,0,248,243,247,251,249,245,226,222,0,18,3,248,245,251,0,242,237,248,240,227,229,234,249,253,234,242,12,14,8,3,0,17,17,250,254,7,255,0,248,233,251,0,244,0,6,253,0,240,229,13,31,5,254,255,248,245,228,237,20,4,220,240,24,36,11,213,214,12,255,210,230,255,250,244,242,23,65,21,222,249,25,7,227,209,228,239,217,227,7,16,12,2,2,42,57,18,254,250,230,216,206,218,1,3,238,8,49,45,12,240,236,240,237,232,225,218,214,209,240,47,63,22,240,234,253,254,222,213,237,242,230,236,12,45,38,6,253,14,20,248,212,211,227,231,236,255,19,24,8,4,30,51,37,6,237,228,222,211,216,232,235,229,231,255,30,27,253,250,22,34,255,208,207,231,229,227,242,4,20,11,251,31,65,29,254,11,22,17,241,204,223,246,226,224,251,2,2,0,250,6,17,1,239,237,240,231,213,223,254,9,1,246,239,5,29,16,5,7,240,224,238,252,10,14,244,236,7,27,39,37,4,243,247,245,248,248,227,218,221,226,248,16,21,12,4,18,42,34,9,250,233,224,225,218,218,234,243,245,251,4,27,41,20,253,1,5,244,222,223,252,9,242,232,5,22,9,253,253,10,10,232,213,245,4,237,226,240,252,6,8,255,0,0,247,251,1,0,253,230,222,16,51,29,14,11,255,0,0,241,230,214,202,220,246,250,248,3,18,24,28,23,254,230,225,226,235,255,17,12,249,2,29,26,10,6,254,248,235,223,253,18,236,219,249,12,35,49,21,255,1,3,12,13,238,205,194,202,231,2,3,255,8,28,41,41,31,10,238,214,205,216,230,238,244,244,247,11,29,26,12,253,252,5,250,232,236,237,225,223,241,23,46,28,9,7,5,0,242,229,235,238,232,235,244,4,19,10,4,14,8,251,236,227,242,0,253,0,7,15,23,5,247,252,236,224,245,249,241,250,250,253,18,27,34,46,36,4,235,221,211,212,232,253,0,251,253,19,49,53,30,8,249,232,215,204,211,228,229,222,244,35,63,48,17,1,1,254,237,221,219,224,233,244,255,14,24,11,253,2,14,17,9,245,229,235,249,1,0,242,230,244,18,28,17,12,4,253,8,0,224,213,205,200,238,15,12,16,19,11,28,46,30,255,231,234,253,247,232,237,242,253,19,20,14,14,3,4,20,3,242,252,248,255,26,12,245,0,4,5,24,16,253,244,233,249,19,5,243,235,228,254,12,244,240,247,240,5,20,5,13,7,239,12,37,16,10,0,238,0,253,227,249,9,250,251,245,240,11,9,236,248,4,240,231,246,4,0,233,227,246,254,253,5,11,2,246,245,0,254,244,241,243,247,249,0,20,30,13,1,13,24,22,9,252,254,1,244,233,239,242,240,241,240,242,253,253,247,254,1,254,254,250,250,0,0,175,0,4,0,1,0,208,0,144,2,24,6,136,9,22,13,216,14,92,27,45,38,30,55,57,46,32,23,10,5,168,135,157,120,120,120,200,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,208,0,144,2,24,6,136,9,22,13,216,14,92,27,70,61,38,70,73,58,41,29,13,6,168,135,157,120,120,120,200,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,202,0,136,2,0,6,140,9,4,13,196,14,92,27,60,50,35,63,67,51,37,27,13,6,168,136,153,120,120,120,200,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,202,0,136,2,0,6,140,9,4,13,196,14,92,27,0,27,27,46,49,37,23,17,9,4,168,136,153,120,120,120,200,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,33,0,152,0,8,1,36,9,64,11,132,13,100,15,160,26,50,43,8,65,53,53,53,28,13,6,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,8,1,36,9,64,11,132,13,100,15,160,26,75,66,10,80,65,65,65,35,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,8,1,36,9,84,11,132,13,100,15,160,26,70,54,9,73,59,59,59,31,15,7,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,118,0,240,0,35,9,44,11,72,13,60,15,112,26,0,26,7,48,42,41,42,23,10,6,171,105,112,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,192,0,24,2,152,3,40,10,244,11,196,14,159,27,45,56,28,56,68,34,34,22,14,6,172,138,135,120,120,120,167,138,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,24,2,152,3,40,10,244,11,196,14,159,27,80,111,40,80,96,48,48,31,20,8,172,138,135,120,120,120,167,138,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,24,2,152,3,40,10,244,11,196,14,159,27,70,96,38,72,91,45,45,29,19,8,172,138,135,120,120,120,167,138,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,24,2,152,3,40,10,244,11,196,14,159,27,0,47,26,50,64,32,32,20,13,5,172,138,135,120,120,120,167,138,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,4,0,1,0,168,0,152,1,224,6,236,9,72,13,180,15,163,25,50,42,32,62,49,52,44,32,14,6,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,152,1,224,6,236,9,72,13,180,15,163,25,80,67,40,78,61,66,55,40,17,8,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,152,1,224,6,236,9,72,13,180,15,163,25,60,56,37,71,56,61,51,37,16,7,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,152,1,224,6,236,9,72,13,180,15,163,25,0,32,28,54,42,46,38,28,12,5,161,98,126,120,120,120,130,107,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,6,0,1,0,186,0,176,2,84,6,80,10,192,13,100,15,160,27,50,41,39,54,66,42,33,27,15,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,186,0,176,2,84,6,80,10,192,13,100,15,160,27,50,63,48,66,81,52,40,33,18,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,186,0,160,2,84,6,80,10,192,13,100,15,160,27,45,47,42,52,75,45,36,29,16,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,188,0,34,2,57,5,54,10,250,12,206,14,197,27,45,26,37,37,42,31,26,21,10,2,180,119,122,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,192,0,135,1,222,3,20,10,6,12,21,14,244,27,40,20,40,29,26,17,22,16,6,5,180,81,119,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,192,0,135,1,222,3,20,10,6,12,21,14,244,27,0,14,34,24,14,14,18,14,5,4,180,81,119,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,244,0,6,0,1,0,228,0,40,2,128,3,120,10,8,12,15,14,216,27,50,61,29,60,73,30,34,21,10,6,180,112,128,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,228,0,40,2,128,3,120,10,8,12,15,14,216,27,40,85,35,71,86,35,40,25,12,7,180,112,128,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,228,0,40,2,128,3,120,10,8,12,15,14,216,27,45,75,33,67,81,33,38,23,11,6,180,112,128,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,215,0,229,1,83,3,127,10,228,12,60,15,176,27,50,47,41,51,63,25,25,19,11,5,164,96,118,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,205,0,184,1,52,3,132,10,248,12,4,16,148,27,60,21,43,30,30,20,13,13,9,4,153,85,112,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,205,0,184,1,52,3,132,10,248,12,4,16,148,27,0,16,37,26,26,17,11,11,8,3,153,85,112,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,58,0,3,0,5,0,116,0,232,0,52,8,140,10,16,14,104,16,124,21,58,14,25,15,10,10,10,10,5,5,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,232,0,52,8,140,10,16,14,104,16,124,21,0,14,25,15,10,10,10,10,5,5,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,0,52,8,140,10,16,14,104,16,124,21,0,14,25,15,10,5,5,5,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,14,4,30,0,1,1,1,248,1,254,243,4,9,5,0,4,5,15,15,16,12,15,146,182,22,55,66,236,245,250,3,18,227,255,36,231,7,17,254,15,253,241,243,232,4,21,231,9,10,252,15,8,14,0,247,7,242,253,24,226,220,17,39,31,248,243,232,226,250,21,15,13,249,7,13,6,23,216,228,252,24,10,5,33,223,222,250,32,253,10,17,211,15,252,2,252,20,3,20,19,28,181,196,10,7,68,6,9,233,236,231,40,253,237,14,231,50,247,17,234,225,38,20,2,254,255,222,192,243,67,47,34,247,192,0,43,230,239,16,228,27,254,23,18,218,27,3,210,242,36,253,9,214,15,54,14,3,222,246,242,248,230,61,42,154,13,31,70,2,162,18,32,216,232,49,34,205,236,87,1,223,225,225,60,14,181,215,96,71,194,225,15,97,161,199,65,4,0,216,11,84,182,14,0,220,44,248,2,245,204,48,78,208,253,22,224,14,12,241,229,210,34,16,40,17,243,241,217,15,5,24,252,215,33,40,237,216,31,29,222,193,47,39,227,238,242,61,43,163,236,41,71,238,208,225,255,36,5,226,37,41,245,219,250,9,227,237,44,66,230,166,247,60,39,49,178,175,58,50,17,242,178,221,96,49,2,232,206,219,3,238,22,54,53,18,173,250,25,252,249,208,246,80,13,242,5,238,219,36,226,255,37,254,36,198,2,48,11,228,193,252,53,35,12,222,205,44,49,224,210,42,253,225,18,235,17,69,239,211,9,0,15,180,237,114,26,219,255,0,8,239,211,235,62,5,14,225,238,9,20,44,11,217,218,242,18,49,5,245,203,229,53,23,249,50,221,215,224,249,60,37,231,50,7,149,236,55,45,218,235,245,255,44,37,252,202,34,232,233,23,41,252,191,225,36,79,3,243,231,240,23,210,184,54,82,14,18,244,244,214,234,31,215,246,24,18,45,7,237,242,235,249,33,53,23,164,133,22,96,96,9,166,0,39,1,214,184,253,73,18,0,33,21,249,182,218,33,43,12,217,234,14,23,69,236,178,250,51,237,232,30,229,11,50,13,237,253,245,179,1,9,51,73,15,209,246,248,243,206,0,255,16,38,28,249,240,29,15,246,204,228,243,36,75,232,209,243,24,38,243,3,255,204,241,57,55,222,195,13,38,1,13,26,208,214,237,251,55,25,24,8,237,6,214,190,50,3,21,30,223,17,29,252,223,221,244,19,9,3,11,10,63,240,223,255,242,238,204,240,50,68,56,1,165,230,20,19,11,209,1,40,198,17,57,25,37,251,158,201,76,27,203,213,0,66,28,23,2,0,247,217,250,229,9,31,217,19,64,246,242,235,250,20,214,255,40,237,3,249,6,87,0,196,247,244,237,241,252,56,37,224,250,245,3,15,4,15,214,2,19,247,250,54,236,192,3,29,68,233,227,37,197,238,5,238,39,74,25,217,222,232,208,234,67,77,249,209,22,41,218,206,222,244,17,92,50,201,231,14,229,214,28,47,35,0,185,210,30,52,229,244,41,55,10,164,232,4,198,240,78,104,52,235,165,170,1,43,26,13,20,3,252,209,228,12,26,24,25,238,225,14,5,238,11,12,253,7,9,245,241,252,233,2,38,0,14,4,24,227,210,250,9,20,17,29,20,235,233,201,230,32,44,0,26,54,230,164,209,36,42,25,239,20,29,250,236,202,236,12,39,16,15,244,19,222,197,43,239,46,43,253,236,222,212,7,35,251,39,4,20,224,224,241,250,14,5,37,61,242,196,17,202,238,13,15,50,38,252,218,225,234,8,254,50,35,227,250,226,6,252,15,22,237,234,37,251,236,249,20,18,240,22,246,248,0,0,239,243,17,13,25,253,253,236,241,45,244,222,248,15,22,25,255,241,249,237,252,23,21,238,242,2,6,240,7,23,25,34,233,223,194,201,45,76,40,252,250,234,245,250,236,225,40,35,253,16,9,233,238,207,235,42,37,59,15,239,240,178,191,9,61,81,46,213,222,233,240,1,238,10,16,27,44,10,215,212,240,33,7,6,2,27,253,214,217,229,55,63,29,14,231,204,201,240,17,41,26,27,34,237,182,211,23,53,21,13,0,221,230,244,255,2,27,17,14,21,246,249,227,218,5,20,30,36,3,229,218,224,0,24,32,50,243,214,1,250,240,254,7,27,42,14,228,206,238,0,1,21,38,8,242,227,253,20,0,6,12,241,244,23,2,243,14,245,242,243,9,22,6,6,230,233,33,11,244,24,20,234,230,241,22,5,239,9,6,37,11,212,223,251,10,245,11,63,43,223,214,240,3,39,248,231,241,1,0,1,32,29,10,232,220,252,0,0,139,0,3,0,1,0,80,1,168,2,124,6,216,9,192,13,185,15,32,29,50,49,35,57,69,51,38,29,10,8,255,150,180,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,88,1,168,2,124,6,216,9,192,13,185,15,32,29,90,82,45,74,89,66,50,38,13,8,255,150,180,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,88,1,168,2,124,6,216,9,192,13,185,15,32,29,0,47,34,56,67,50,38,28,9,9,255,150,180,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,240,0,5,0,1,0,168,0,240,1,132,3,216,9,164,11,141,14,32,27,45,56,28,57,64,39,36,18,13,5,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,240,1,132,3,216,9,164,11,141,14,32,27,80,109,39,80,89,54,50,25,18,7,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,170,0,224,1,138,3,186,9,168,11,141,14,76,27,55,86,31,74,80,49,44,23,16,7,164,133,148,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,120,1,32,3,172,8,204,11,141,14,224,28,60,47,27,63,39,27,18,16,8,8,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,104,1,32,3,92,8,204,11,141,14,224,28,0,36,23,58,38,22,15,12,9,8,152,120,97,120,120,120,107,90,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,16,1,96,2,8,7,225,9,104,13,15,15,224,28,40,29,23,47,51,46,36,26,8,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,16,1,96,2,8,7,225,9,104,13,15,15,224,28,66,69,36,73,77,71,55,40,13,8,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,6,1,64,2,20,7,226,9,99,13,18,15,157,28,94,58,30,66,70,65,50,37,12,8,237,130,156,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,112,1,128,7,40,10,50,13,48,15,64,26,40,37,19,53,51,51,47,29,11,8,181,111,129,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,152,1,168,7,40,10,52,13,60,15,96,25,0,30,24,56,44,48,45,26,10,8,160,105,120,120,120,120,130,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,167,10,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,255,253,255,0,1,1,0,255,253,255,1,0,254,0,7,6,254,2,3,1,0,0,0,253,253,244,245,8,21,10,251,249,4,0,0,4,4,246,237,246,10,15,27,27,225,225,2,34,31,7,252,226,4,33,247,210,242,25,37,13,247,241,243,25,28,247,237,254,65,35,236,218,188,249,59,78,31,199,236,10,229,22,50,36,238,191,14,47,241,234,236,224,68,38,10,241,213,43,0,6,33,244,26,235,221,6,233,38,252,235,235,5,57,253,254,18,15,5,221,203,212,219,255,22,52,57,23,218,184,213,244,18,31,40,10,225,228,236,242,245,17,29,243,221,245,24,23,17,251,237,225,237,0,250,243,0,20,17,21,246,216,245,30,55,242,209,2,7,27,23,248,236,219,6,19,254,47,23,250,227,207,5,12,23,13,7,0,251,249,249,250,254,0,255,251,248,248,254,5,8,12,12,255,254,13,0,243,245,247,0,0,10,14,2,250,247,251,4,1,253,243,250,4,4,255,1,2,2,1,4,0,1,255,0,3,5,7,4,5,9,5,1,0,3,4,11,8,5,0,2,3,6,4,255,255,0,1,1,1,2,8,9,6,3,252,250,248,252,5,8,5,4,0,255,252,253,251,1,7,4,0,252,254,253,1,3,2,254,0,255,252,252,255,254,1,3,253,253,0,3,255,253,2,4,4,6,2,255,249,252,4,4,8,8,3,1,255,3,254,250,0,4,6,0,252,1,255,1,1,255,248,253,2,5,9,255,247,251,251,0,10,2,251,236,250,2,7,6,0,1,11,7,5,4,3,3,245,253,6,253,0,0,254,243,244,1,5,4,251,248,247,236,249,5,6,250,252,6,12,254,248,242,245,21,37,248,234,3,248,247,20,30,246,224,0,34,13,14,239,248,10,0,16,0,3,9,253,3,3,247,244,238,23,49,1,247,225,0,29,245,1,3,253,236,249,11,14,14,13,10,10,11,10,6,254,244,240,254,13,5,254,254,18,0,4,206,237,18,253,25,241,250,1,243,32,206,6,52,241,211,219,46,28,221,18,238,221,47,39,8,197,0,239,208,39,69,254,208,241,15,5,245,0,238,41,15,190,47,15,242,226,247,28,10,22,2,230,214,17,16,46,16,161,31,46,223,245,241,64,206,19,20,216,36,208,34,18,211,27,207,62,231,221,100,183,255,41,235,242,245,100,239,150,0,52,13,16,253,8,23,0,248,15,24,206,211,226,64,40,42,23,151,194,28,50,19,214,3,19,224,241,244,45,255,230,255,24,24,245,246,213,241,46,1,232,236,30,30,5,77,20,2,57,17,35,9,250,10,221,25,21,255,15,213,226,5,241,238,208,211,12,234,0,244,188,253,26,246,211,240,21,3,6,236,225,231,233,46,49,13,243,2,34,12,243,3,0,19,54,56,13,14,10,36,8,232,1,0,252,2,4,255,228,250,246,250,244,226,235,242,236,237,213,231,10,23,242,225,242,26,5,251,250,9,8,13,8,0,1,11,18,16,9,7,12,17,14,1,245,243,22,49,38,246,247,247,7,8,253,221,229,21,10,247,240,237,9,15,232,229,252,33,22,237,1,249,228,0,14,37,4,226,21,0,214,14,41,39,4,217,243,17,22,6,243,12,15,2,18,4,219,242,254,17,31,248,246,248,252,241,253,19,2,15,252,240,253,252,247,244,5,23,12,21,217,210,0,5,39,7,239,249,248,25,0,251,240,221,36,49,14,244,224,0,10,226,247,24,9,18,10,5,250,235,5,243,1,18,250,245,250,14,15,243,244,10,12,246,229,241,23,34,253,219,213,4,52,34,27,224,233,16,247,252,21,248,233,7,3,3,237,225,12,23,26,17,251,4,243,224,235,240,22,23,29,11,212,215,28,18,12,0,248,8,237,247,250,222,23,23,23,32,229,228,248,254,28,12,253,251,227,234,38,31,9,2,230,251,0,246,26,26,10,255,234,29,39,207,213,230,7,66,19,238,242,223,247,13,25,38,6,230,233,0,0,255,239,250,0,24,36,9,239,236,255,11,12,5,2,3,5,5,5,3,4,5,2,255,248,240,242,250,5,252,39,5,213,9,20,254,237,230,50,60,240,249,3,212,244,22,2,21,239,17,27,220,228,35,6,221,239,11,52,14,210,8,25,4,229,200,38,22,236,33,5,215,207,253,52,11,254,16,227,217,5,44,244,171,225,40,27,32,35,223,212,243,28,21,223,237,5,231,235,57,72,238,166,222,248,23,45,52,14,170,252,54,249,220,198,30,43,215,18,38,19,241,245,10,211,195,55,73,250,226,0,37,226,199,47,63,212,13,46,3,32,187,236,102,1,235,10,221,66,15,169,50,213,249,117,242,244,237,221,36,9,241,19,219,246,65,218,215,27,33,13,209,13,250,225,243,75,45,191,223,223,19,33,5,66,208,188,29,11,39,246,221,38,228,2,35,229,21,243,212,79,252,229,17,240,24,201,220,82,27,215,231,7,21,243,239,18,246,235,4,251,24,243,5,6,221,5,16,23,230,247,23,251,224,228,35,41,1,237,205,20,68,243,219,235,16,31,240,243,218,225,255,11,8,1,2,7,9,7,2,253,1,14,13,2,252,7,19,239,11,11,1,251,229,18,11,1,235,22,7,230,244,28,252,24,243,252,241,12,7,34,230,239,22,239,34,249,239,246,244,29,16,252,4,0,201,16,37,247,244,6,19,251,210,247,86,250,197,239,23,42,0,221,31,246,197,22,50,14,6,207,15,7,211,47,22,245,254,216,5,4,24,48,245,175,199,75,66,45,209,179,241,241,71,92,223,203,205,16,23,255,24,23,244,242,239,242,11,2,45,254,229,205,235,84,45,222,203,220,66,2,22,25,212,243,240,11,28,236,12,36,252,231,236,228,47,31,232,232,239,8,25,10,17,200,238,35,34,35,238,224,229,222,249,57,66,23,185,189,244,58,55,226,253,5,244,8,232,0,11,21,19,203,212,50,0,36,42,231,206,207,48,45,252,236,220,42,15,3,2,201,232,73,45,247,212,239,1,1,41,2,227,234,10,30,14,241,252,17,0,236,25,236,247,29,12,250,250,233,21,5,252,251,21,17,32,210,237,229,243,13,0,252,244,241,253,5,6,5,7,11,13,6,232,205,232,45,97,10,211,208,238,35,10,11,2,231,3,38,6,246,228,220,49,29,234,224,220,12,45,49,250,185,227,22,52,49,242,178,237,22,44,11,209,247,6,227,34,25,18,243,22,67,7,202,13,60,255,229,188,253,72,10,236,231,183,255,78,30,244,193,251,14,46,49,227,207,198,34,62,5,232,245,13,236,228,0,15,237,214,233,1,3,28,249,1,253,18,17,0,6,6,241,16,0,0,4,238,255,22,31,254,202,2,26,243,13,25,20,0,193,255,20,242,27,17,246,216,224,29,50,0,240,234,228,219,40,95,19,173,225,63,42,7,0,0,241,251,19,28,240,223,238,46,39,219,201,245,13,31,11,219,195,255,51,28,214,198,7,41,37,20,254,198,208,215,52,74,36,251,191,206,20,45,54,233,241,4,19,25,17,241,235,232,1,38,36,9,253,233,211,255,49,11,222,20,56,247,208,181,243,55,21,14,23,240,212,253,24,29,33,201,225,14,39,68,254,193,212,252,20,2,252,249,248,254,1,0,255,3,10,15,12,255,243,255,11,13,242,237,202,20,88,19,223,203,213,23,26,15,41,247,204,250,243,47,44,215,205,17,11,40,4,232,253,8,235,1,14,14,7,241,11,24,2,240,241,234,218,10,87,37,227,178,202,24,65,27,253,221,204,239,40,49,21,216,202,247,11,48,44,251,203,215,7,85,29,210,171,246,63,84,225,184,250,34,254,245,248,45,19,223,227,227,50,74,13,251,185,194,38,248,15,59,253,234,196,231,127,5,228,216,209,76,19,200,255,4,8,58,210,219,11,245,92,29,225,4,195,234,69,3,225,242,15,50,231,214,10,247,219,59,59,227,199,188,53,85,245,237,218,214,44,50,237,214,13,46,14,233,251,251,242,251,37,19,216,211,22,59,26,217,229,18,22,15,252,252,243,222,243,29,41,235,214,32,32,42,226,200,8,236,39,39,239,0,8,223,237,21,43,31,236,200,19,51,22,235,217,0,6,230,31,48,24,251,201,214,27,39,17,236,207,251,48,10,248,235,2,14,247,254,0,253,253,251,249,250,252,0,9,17,21,12,250,237,233,238,250,38,249,216,245,30,43,28,189,208,21,25,37,8,213,200,220,39,66,252,242,219,248,21,13,9,12,226,193,254,61,37,230,199,234,17,50,6,254,249,221,11,36,248,245,15,11,225,225,28,59,21,232,241,228,20,28,23,4,207,218,4,37,57,240,213,0,255,16,16,0,233,245,17,15,22,252,231,15,252,228,253,10,52,41,231,244,236,211,5,29,53,24,222,207,224,30,75,14,224,220,253,48,18,202,222,46,63,0,198,209,25,47,11,227,233,6,39,16,234,246,251,240,2,252,11,46,242,211,251,37,33,243,218,251,29,0,252,251,3,248,242,21,15,6,251,239,252,252,1,5,23,8,222,232,27,30,247,228,252,13,6,19,13,244,218,229,16,36,15,1,240,1,16,11,255,255,229,250,22,0,241,23,27,13,233,217,8,25,21,14,221,246,14,19,255,245,229,240,22,37,25,242,209,244,3,17,26,240,220,234,2,48,24,235,218,224,16,39,247,246,2,17,1,244,238,241,253,7,8,1,254,4,14,16,2,241,232,253,18,32,255,210,227,10,50,2,218,240,244,36,43,242,226,222,255,35,47,253,213,216,245,33,39,16,247,238,253,10,5,15,255,231,247,6,7,5,27,3,237,7,0,0,7,12,2,237,242,11,17,24,252,217,253,19,28,6,232,239,254,247,5,18,19,3,230,6,24,233,247,28,4,241,243,11,13,4,244,249,0,252,25,25,255,231,220,16,37,250,232,238,36,33,250,1,253,226,248,6,36,5,219,234,245,10,38,16,238,211,255,32,24,252,239,232,236,0,29,11,252,242,254,24,15,248,240,243,253,1,20,7,236,240,7,15,12,6,247,4,251,255,16,254,250,255,254,0,252,16,37,13,231,236,2,21,23,6,241,245,255,18,12,246,244,10,24,10,238,242,8,18,20,13,239,240,4,13,4,250,254,16,20,0,235,246,14,27,1,248,235,241,16,17,254,243,234,238,6,27,1,245,253,7,232,233,5,254,253,12,0,248,244,6,246,220,2,9,9,18,245,242,248,249,2,3,252,247,255,8,12,10,6,2,1,6,9,6,2,247,237,230,16,251,228,31,16,245,244,235,254,252,21,62,252,208,219,221,30,71,253,213,251,18,8,238,36,36,231,212,248,232,42,78,14,181,209,40,31,234,30,59,241,182,5,28,6,235,20,38,213,202,27,53,15,10,11,225,180,21,79,30,226,207,180,234,66,83,21,196,218,241,0,32,10,1,235,187,2,67,39,231,189,235,40,51,22,205,209,13,31,10,244,220,242,32,45,18,232,218,247,21,31,23,228,210,5,54,45,246,201,235,16,40,26,248,232,245,4,18,6,247,251,14,17,15,0,250,3,15,19,10,3,11,17,19,25,15,9,19,25,18,7,17,28,23,12,9,6,5,12,20,14,255,250,0,10,10,254,242,241,247,249,249,244,244,244,247,246,233,228,242,245,237,234,227,227,241,245,236,226,240,2,255,242,233,223,230,243,254,255,250,245,231,239,23,28,245,218,235,0,8,9,14,247,236,229,252,23,28,13,246,240,0,251,4,8,1,0,254,4,0,15,17,3,253,253,250,248,249,251,252,252,2,11,19,16,6,6,15,25,3,244,18,7,0,26,44,7,222,255,32,7,25,32,230,218,20,51,16,231,222,253,55,21,219,253,32,3,239,2,242,231,12,14,8,18,247,212,246,43,12,223,251,36,2,221,240,10,19,9,240,230,252,29,29,0,231,214,242,29,31,251,230,250,4,6,21,15,1,252,251,252,252,11,12,253,252,253,249,251,10,10,7,10,18,35,55,52,27,252,0,24,28,32,32,18,9,21,36,34,25,18,9,6,10,8,244,235,0,85,0,3,0,5,0,112,0,144,1,8,7,152,8,216,14,14,18,174,21,55,2,12,14,4,4,4,3,5,5,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,112,0,144,1,8,7,152,8,216,14,14,18,174,21,30,3,14,16,5,5,5,4,6,6,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,9,0,112,0,144,1,8,7,152,8,216,14,14,18,174,21,0,3,13,15,4,4,4,3,5,5,92,165,137,137,150,175,92,165,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,240,0,5,0,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,45,61,26,62,74,37,35,20,13,5,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,75,118,36,86,103,51,49,28,18,7,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,184,0,52,2,158,3,240,9,168,11,61,14,192,27,60,96,33,79,91,46,43,26,16,7,172,140,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,120,1,32,3,172,8,204,11,141,14,224,28,60,47,27,63,39,27,18,16,8,8,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,104,1,32,3,92,8,204,11,141,14,224,28,0,36,23,58,38,22,15,12,9,8,152,120,97,120,120,120,107,90,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,144,9,55,0,0,1,1,1,1,1,2,3,3,3,1,0,2,4,3,1,1,0,0,0,1,0,255,254,255,0,1,1,0,255,254,255,255,254,254,253,251,252,253,254,0,1,1,1,2,2,0,0,0,0,2,1,0,0,0,0,2,3,3,3,2,3,3,3,1,0,0,255,255,0,1,0,0,255,255,255,254,253,254,0,2,3,4,4,2,0,254,253,253,253,252,251,252,255,0,0,0,1,2,2,1,0,255,254,253,252,253,255,0,1,2,3,3,2,3,3,0,255,0,0,253,251,252,254,0,3,5,4,3,3,1,0,0,1,0,253,253,255,0,0,255,254,255,0,0,0,254,254,255,255,0,0,255,0,1,1,1,4,6,1,253,254,2,8,8,5,0,255,254,254,0,2,0,255,255,1,4,6,6,4,3,2,1,0,255,254,250,246,243,245,249,0,6,11,11,6,255,250,248,249,251,251,250,249,251,2,7,6,4,5,8,11,12,8,5,2,253,245,245,249,250,251,1,10,15,17,15,5,252,251,248,241,243,251,252,251,0,2,0,253,253,252,255,4,5,0,1,4,1,250,245,245,248,1,11,15,13,8,4,0,250,249,0,4,6,11,17,16,9,1,249,243,246,253,252,250,254,4,12,14,8,0,254,0,254,248,246,246,239,238,254,14,14,1,248,247,1,14,15,4,254,252,250,252,253,248,245,0,11,11,8,11,9,3,4,9,5,250,241,241,251,10,19,10,254,253,2,7,13,11,249,232,239,0,8,10,10,5,0,252,250,250,250,246,244,0,16,18,6,255,2,8,10,4,250,244,248,251,249,252,1,0,253,2,10,12,12,13,8,255,248,246,243,241,246,252,0,8,16,16,12,10,6,254,249,253,252,244,243,249,253,255,6,13,12,10,7,4,5,7,3,246,236,245,2,6,8,8,2,255,254,253,251,253,0,253,251,255,4,8,10,4,251,253,6,6,254,250,252,0,2,0,248,252,7,5,255,7,16,0,238,243,0,8,12,6,250,252,11,14,5,1,1,252,247,249,250,249,252,254,252,0,15,20,9,251,245,248,255,1,253,248,1,10,5,254,254,0,254,254,2,11,15,5,247,242,248,0,2,1,0,3,4,4,6,2,245,242,0,10,1,253,0,252,246,0,14,11,255,247,244,244,254,3,253,248,252,255,2,12,13,0,247,249,253,1,10,12,254,237,238,250,254,1,11,14,8,10,17,12,254,246,244,243,249,3,7,5,2,255,254,5,7,6,12,18,4,241,245,6,1,239,242,9,18,4,247,245,251,2,4,3,8,6,246,239,0,16,8,251,247,247,255,19,33,16,243,235,246,0,5,3,253,251,1,4,2,8,13,1,244,252,10,6,253,2,11,5,251,253,8,13,6,254,248,243,237,236,251,14,19,16,13,9,0,247,245,251,0,0,253,254,6,12,11,1,244,239,250,7,12,7,4,2,255,247,245,0,6,251,242,255,16,19,6,245,235,240,1,20,26,14,242,225,235,249,1,17,31,15,240,236,0,11,3,249,248,2,15,17,6,251,243,234,236,4,32,29,5,255,3,254,247,0,9,2,252,1,0,233,219,236,8,28,32,16,248,245,5,2,241,240,250,250,1,23,22,246,226,236,251,6,20,17,247,240,14,31,10,242,238,240,238,249,16,23,6,250,3,23,32,17,246,233,240,244,242,246,0,9,15,19,19,4,244,244,250,243,234,248,20,22,1,254,2,249,237,243,255,254,251,2,10,7,5,4,253,247,251,251,244,252,6,254,246,11,31,17,248,239,247,8,26,15,241,238,1,254,235,255,29,5,213,219,12,42,38,17,245,231,243,255,1,4,251,224,226,10,34,17,13,30,13,236,243,11,8,238,218,225,255,24,20,2,0,10,16,27,28,255,219,221,255,20,6,234,225,248,22,28,7,248,254,4,251,243,6,30,19,240,227,248,6,1,247,243,251,13,32,33,8,238,237,253,249,232,251,26,16,247,0,17,4,242,249,1,255,1,8,9,17,16,247,234,255,250,215,231,36,45,253,240,11,4,222,219,250,9,11,21,14,252,251,251,234,227,248,17,23,20,13,250,237,250,12,252,226,243,16,12,3,21,21,248,240,254,248,237,0,19,6,252,8,8,250,255,2,238,230,251,10,5,7,25,30,14,246,228,225,238,5,19,10,246,233,242,14,41,35,251,211,215,11,51,29,239,227,239,235,229,249,23,37,14,244,4,37,18,229,231,253,232,209,245,35,26,247,243,17,42,29,5,6,9,236,211,235,7,252,248,33,58,29,248,244,10,15,234,204,237,22,2,226,246,33,46,26,251,231,241,6,3,244,252,2,242,237,252,0,255,15,26,12,3,3,246,237,255,12,254,249,13,11,236,236,14,24,3,2,27,31,252,212,216,253,8,246,251,35,62,43,7,233,218,235,253,230,214,255,44,32,5,11,23,15,0,230,196,220,24,26,236,234,14,12,247,2,20,17,28,28,232,192,232,24,5,225,235,3,5,14,37,35,6,242,242,242,241,0,32,40,3,229,245,5,240,226,0,30,22,3,3,14,13,247,214,211,3,50,30,247,11,42,0,198,213,3,13,254,248,0,20,48,39,251,236,254,237,204,225,17,27,4,248,241,250,33,64,36,239,221,239,4,9,252,242,242,247,248,246,4,31,35,12,0,7,10,254,236,229,242,254,252,2,20,15,249,252,14,4,240,254,20,254,222,240,24,19,236,223,0,28,17,255,13,37,15,215,195,231,18,25,12,5,6,8,8,6,255,246,247,0,254,238,239,14,31,6,245,5,11,252,0,14,254,233,249,11,0,240,250,9,12,4,253,3,19,11,245,244,251,240,237,6,20,3,243,237,243,14,34,23,5,1,247,238,1,20,254,226,244,14,0,237,1,29,22,1,0,7,5,250,243,240,241,0,13,8,245,228,239,30,63,18,210,224,27,41,2,230,240,3,252,227,237,16,25,9,255,254,252,2,17,2,216,213,12,54,39,2,237,239,6,21,250,221,250,24,3,253,23,11,211,199,255,44,45,24,248,216,225,9,22,0,253,20,5,207,216,54,74,208,156,32,126,27,176,223,44,32,230,203,234,31,37,250,239,18,27,3,255,244,211,233,32,18,229,250,36,17,245,6,23,248,212,224,7,23,7,251,1,5,0,11,30,5,225,247,33,7,211,231,34,25,209,198,36,79,248,193,8,62,254,189,224,25,15,230,231,21,53,30,242,238,8,2,235,253,20,0,240,3,252,206,218,41,68,15,250,20,14,233,217,217,213,239,38,51,3,228,249,17,15,9,6,254,249,248,233,221,244,23,21,255,4,26,28,12,251,236,227,232,253,9,2,249,246,2,30,37,12,251,4,4,233,207,212,252,35,30,0,3,38,27,238,235,13,9,225,219,3,29,17,253,237,222,234,23,66,66,27,231,201,216,241,231,219,2,72,95,45,236,205,218,231,223,240,23,37,24,4,241,228,240,11,17,4,6,13,8,0,243,224,221,238,255,3,20,56,56,9,232,221,200,188,233,40,52,31,16,255,228,212,224,9,59,62,251,195,224,22,14,228,234,15,19,0,254,16,35,25,239,208,229,16,23,253,246,8,8,250,253,0,1,30,49,0,183,182,252,42,14,230,247,35,44,9,228,213,223,1,33,30,255,225,222,247,18,27,21,25,37,24,233,190,198,242,20,34,32,12,241,236,2,17,13,17,32,12,201,170,229,48,53,1,235,11,39,12,223,225,12,23,241,219,246,11,255,242,4,32,34,14,8,16,247,198,201,8,46,6,229,22,67,10,184,204,36,71,35,247,226,214,202,217,14,75,87,42,250,219,201,204,247,45,38,238,217,239,242,233,17,74,60,254,216,227,248,244,230,239,10,14,1,11,24,9,250,24,67,33,190,141,193,18,57,57,29,253,247,247,238,242,11,37,26,241,216,240,5,223,186,245,93,106,9,204,243,26,8,234,220,218,238,21,39,18,7,27,24,243,222,240,16,22,248,218,233,18,26,253,247,23,29,242,228,26,65,4,170,171,0,65,54,10,236,228,234,252,41,79,44,215,160,181,247,48,60,30,7,9,18,1,217,197,231,35,62,36,246,216,219,233,236,3,42,48,19,252,0,11,248,205,193,238,38,57,35,250,217,221,4,39,30,251,245,14,12,230,223,253,251,215,231,56,102,45,216,200,238,2,5,12,6,243,232,240,1,24,28,12,12,13,247,229,236,237,229,250,25,22,254,246,252,0,7,29,33,253,205,190,226,31,58,25,240,244,11,20,24,18,236,201,219,253,12,21,22,0,240,251,6,13,32,39,7,222,221,245,252,247,250,3,18,31,26,254,221,213,243,28,39,10,231,214,228,3,28,23,6,11,15,0,253,7,238,198,225,45,66,19,240,229,220,229,5,28,29,28,22,1,230,209,218,9,49,35,245,228,242,249,3,30,34,6,244,251,0,245,227,223,251,13,1,1,21,16,245,242,9,17,9,12,6,235,222,238,237,224,11,74,49,226,214,21,55,16,216,216,5,11,221,205,4,56,34,251,11,33,254,208,225,14,23,254,222,210,240,35,49,20,6,10,248,221,240,24,21,234,209,228,10,26,7,5,51,71,11,194,179,219,14,44,45,22,247,214,191,228,62,106,55,238,217,211,198,216,8,43,45,32,13,242,230,236,233,235,20,68,52,241,200,203,222,253,30,48,52,42,251,176,164,238,49,51,27,19,8,251,243,224,217,6,61,39,221,214,18,30,255,252,10,251,222,239,47,80,30,204,168,190,226,9,74,112,58,213,169,207,242,239,255,46,71,28,221,195,213,12,59,47,2,239,251,250,227,228,3,30,27,7,253,1,4,254,250,255,252,243,250,8,6,253,250,248,253,19,35,12,230,222,245,0,246,249,4,8,12,24,27,10,237,215,223,4,32,10,223,229,16,26,255,2,32,20,231,215,247,21,16,243,228,245,15,19,0,246,10,30,24,11,249,207,168,192,17,80,78,22,225,216,233,0,27,48,33,239,201,210,240,255,251,7,38,58,41,254,226,240,1,248,235,243,251,249,6,22,8,251,19,42,21,246,238,237,231,240,8,15,5,255,246,248,21,46,29,249,239,249,250,237,223,226,253,34,53,38,2,234,234,249,9,18,3,229,219,248,16,18,17,17,254,231,247,25,23,239,211,222,248,7,15,22,23,9,238,229,5,39,25,239,227,244,250,241,249,20,34,20,251,242,1,15,4,245,244,255,6,0,239,231,1,38,44,21,249,236,241,243,236,245,20,31,253,222,238,16,25,17,16,8,247,243,247,245,245,253,2,8,21,24,5,247,250,250,236,239,10,25,8,240,231,238,253,8,9,6,9,12,0,231,227,252,13,9,8,9,0,245,247,252,254,2,9,2,249,255,16,23,17,4,241,223,230,7,28,15,252,247,255,6,7,11,15,5,239,229,244,3,3,0,6,7,249,240,250,10,20,18,0,231,220,236,11,28,16,1,0,4,247,226,234,15,44,32,0,238,238,8,7,88,0,0,0,0,0,0,0,255,0,2,2,0,255,254,253,254,0,4,8,8,5,1,0,254,254,0,1,2,1,255,254,254,0,1,2,2,1,0,0,0,255,0,0,2,3,1,0,0,0,0,0,0,0,0,255,0,1,3,5,9,18,26,21,254,230,223,231,248,4,10,14,12,1,251,251,0,0,255,255,0,255,252,252,4,13,14,8,0,245,231,224,234,1,23,26,17,7,3,3,0,255,0,0,0,0,0,0,0,0,0,2,2,2,0,255,255,0,0,0,1,2,2,1,255,254,254,0,2,3,1,255,254,254,0,2,6,8,7,3,0,253,253,254,255,0,3,3,0,255,0,0,0,0,1,1,0,255,0,1,0,255,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,2,7,13,15,6,247,235,236,246,1,9,14,13,7,254,250,251,253,255,0,2,4,3,1,0,0,255,252,252,254,0,0,255,255,0,1,3,5,6,6,3,0,253,253,254,255,255,0,0,0,1,5,9,6,255,251,252,0,2,1,0,0,4,7,4,252,246,248,255,5,9,6,255,249,250,1,15,35,51,47,20,246,225,214,219,241,13,27,16,255,247,252,0,253,252,255,245,229,247,23,13,233,234,11,17,244,228,243,0,249,228,223,251,22,24,23,23,1,232,240,11,13,253,251,0,1,6,17,18,4,251,7,15,252,242,7,22,7,244,249,7,11,6,3,2,4,255,238,227,248,21,16,241,239,20,35,251,215,240,22,18,242,233,252,249,228,246,32,23,238,242,16,17,253,240,245,4,6,243,246,24,29,250,231,252,24,10,229,237,21,15,233,236,16,28,11,244,245,7,3,240,251,27,27,243,225,253,19,7,0,19,22,238,203,235,40,41,241,220,246,13,22,5,233,239,13,18,249,236,255,16,10,249,241,246,246,244,10,40,23,229,222,5,18,0,247,0,14,4,232,239,25,31,251,238,0,13,10,244,242,25,43,254,207,226,20,37,13,250,3,27,16,220,207,255,25,15,14,23,6,233,220,236,27,44,250,206,230,18,29,22,0,224,220,247,26,35,10,241,224,219,244,36,46,12,250,246,234,238,255,253,248,25,53,1,179,199,42,68,254,220,1,20,248,231,253,14,3,1,20,19,246,221,241,37,35,221,192,251,49,35,0,242,242,242,239,249,15,30,28,8,220,195,1,69,16,190,221,65,80,243,190,242,30,255,221,9,75,46,209,183,241,18,250,243,25,45,254,192,232,64,53,234,205,241,30,20,231,232,25,40,238,188,232,53,58,7,227,211,212,4,61,44,247,237,242,223,240,39,47,253,214,225,3,28,23,6,0,242,230,255,34,27,0,245,226,203,240,65,86,6,174,182,23,78,10,190,212,20,39,23,7,243,227,246,22,17,247,252,37,31,193,177,54,117,7,203,30,47,191,164,39,126,29,169,209,38,15,223,29,106,46,184,176,5,29,232,235,55,67,228,176,0,67,10,203,245,33,249,222,10,22,231,229,27,34,236,208,239,16,8,237,235,1,16,10,255,250,5,29,28,245,215,237,23,26,0,7,37,21,221,213,15,54,23,234,241,24,24,238,214,242,28,36,11,248,241,232,226,244,14,23,14,247,228,245,12,248,213,247,66,45,184,148,8,106,41,190,222,68,44,191,198,56,86,250,194,242,32,8,229,0,50,47,242,197,236,49,45,246,231,0,6,1,5,6,9,11,239,205,244,59,31,197,213,54,54,227,224,25,15,226,242,18,13,6,4,230,220,19,41,245,241,36,14,219,249,38,3,219,2,39,255,229,20,46,248,205,249,50,27,217,218,29,42,220,183,11,73,10,207,246,46,10,176,206,71,74,237,237,46,7,175,220,81,74,220,197,12,29,244,246,22,22,247,225,241,18,35,20,234,215,245,21,25,18,4,234,245,26,4,226,9,48,247,196,253,52,25,249,251,237,232,7,32,25,238,192,211,35,79,35,220,180,208,32,73,32,236,224,225,240,12,22,27,28,252,218,235,15,11,243,249,18,24,9,248,236,240,9,24,6,238,245,19,23,240,220,3,35,18,241,227,247,21,25,2,244,222,197,248,83,78,238,184,221,8,11,10,34,40,236,190,241,45,19,240,23,48,228,177,255,70,23,205,206,9,37,11,255,11,249,214,243,48,35,230,230,6,250,239,14,38,27,255,246,6,0,228,233,21,28,243,244,40,35,229,208,244,30,40,3,214,219,15,35,251,229,12,42,13,215,209,19,39,224,205,18,46,0,227,255,20,5,252,253,245,241,248,11,36,29,244,218,239,19,24,6,254,244,232,244,12,17,5,0,250,242,6,31,4,212,224,15,12,240,4,28,253,225,252,26,0,214,232,25,25,244,241,18,25,248,225,246,28,32,244,218,3,34,242,202,1,57,19,230,241,249,238,7,28,2,245,1,247,229,0,37,21,242,238,241,242,9,28,14,243,215,220,14,59,48,250,197,189,245,53,48,2,237,233,228,246,22,33,27,1,227,229,1,14,1,250,3,12,10,4,250,241,252,16,14,246,235,2,27,8,222,231,23,35,4,233,237,6,21,10,253,245,218,217,35,90,32,198,193,246,13,3,15,38,7,203,206,18,37,247,252,47,16,185,206,54,65,240,197,240,36,27,255,6,11,233,222,19,51,3,221,250,4,238,252,30,35,9,243,253,7,239,218,252,35,8,231,10,49,9,212,223,14,45,25,227,203,243,32,12,224,244,38,35,244,211,249,49,8,201,243,56,33,228,233,18,17,251,251,253,241,236,253,30,42,6,222,224,4,27,20,9,249,223,226,12,30,6,249,4,2,244,8,28,241,204,242,28,19,2,9,6,236,232,8,33,5,216,221,14,29,253,246,23,20,222,198,0,68,47,214,206,30,32,210,232,81,74,228,202,243,249,248,24,39,17,238,207,222,27,62,28,233,219,227,239,19,47,16,227,215,239,20,41,29,0,227,215,232,13,33,17,1,6,244,220,253,50,38,232,208,240,8,5,12,29,15,237,226,255,23,17,0,250,252,254,247,246,18,49,20,211,211,22,42,251,236,2,250,230,252,34,34,0,231,235,251,3,14,25,5,219,230,31,37,243,228,15,37,254,219,248,33,14,228,241,23,7,227,246,27,5,227,255,36,0,212,254,52,25,228,217,239,6,15,17,23,17,237,216,4,48,8,211,242,27,249,213,1,40,1,230,10,28,240,218,252,4,234,245,18,10,1,17,6,217,220,28,48,249,211,224,0,25,26,5,1,21,13,229,229,30,50,245,196,226,16,23,22,34,25,245,217,221,248,26,45,18,225,212,248,20,17,18,23,1,224,218,246,16,20,9,252,243,247,5,9,1,7,16,255,220,216,5,48,37,247,222,236,9,23,11,247,242,0,10,0,244,252,7,8,0,248,252,3,5,255,250,2,9,246,231,249,16,9,250,0,12,5,243,237,251,13,10,246,246,11,9,237,240,22,42,23,249,228,225,248,25,31,8,251,252,250,254,16,28,10,238,231,247,5,14,10,254,249,253,248,246,6,20,1,235,243,3,253,237,244,13,27,11,244,232,229,246,20,33,16,248,242,247,243,239,255,26,32,12,245,231,241,11,22,11,0,250,237,242,13,24,8,255,7,4,245,247,9,14,3,251,246,240,246,12,25,18,2,249,244,247,255,3,6,12,12,254,236,242,4,11,9,12,8,249,236,240,0,15,16,6,2,4,255,242,243,6,18,12,2,254,252,251,255,2,2,0,0,2,4,0,253,1,8,1,246,248,5,9,0,248,248,249,246,250,6,10,253,238,240,251,1,4,3,255,252,252,253,0,2,0,253,254,2,8,12,5,249,248,3,11,11,13,13,252,235,244,9,18,13,7,3,254,248,246,252,3,6,3,255,254,253,252,253,2,6,2,250,244,242,244,251,0,253,248,254,5,3,255,0,0,249,243,245,253,6,10,6,0,254,254,3,12,11,1,248,244,247,3,15,16,11,8,8,7,5,6,4,251,244,249,1,5,6,11,13,6,0,0,254,250,249,248,249,251,0,4,7,10,10,122,6,55,0,253,254,0,0,0,0,0,0,0,1,0,255,255,255,255,254,255,0,2,1,0,254,253,0,6,7,5,2,255,250,255,9,11,2,253,0,3,2,255,0,4,3,3,1,255,0,4,1,254,3,7,0,248,248,254,4,9,5,253,248,250,255,8,9,250,243,253,4,2,255,254,255,253,252,255,5,8,5,0,251,248,253,10,15,6,247,237,248,5,6,4,3,252,245,249,0,5,12,11,254,248,0,6,1,251,250,255,9,14,252,236,251,9,13,12,248,235,1,25,11,251,253,251,250,5,10,6,8,255,231,233,7,28,26,2,234,243,23,37,20,4,246,233,240,0,11,17,9,235,228,247,252,8,25,12,244,238,244,249,13,30,10,236,230,238,248,11,21,5,245,245,249,250,254,7,24,27,251,221,238,15,18,11,13,0,239,247,7,8,7,2,250,4,10,246,240,9,28,16,250,236,235,252,20,26,4,239,241,254,4,10,12,253,232,241,13,17,0,252,245,238,13,31,0,236,238,245,4,20,10,7,20,253,222,242,16,15,8,6,248,244,255,254,253,3,8,14,14,249,230,245,2,254,5,23,23,3,232,219,241,21,34,24,1,223,212,253,41,38,11,242,220,230,16,37,15,245,227,228,8,42,30,252,226,218,249,40,30,252,4,3,222,230,27,28,253,1,1,223,224,14,34,23,7,239,219,228,3,39,47,252,192,213,19,48,42,3,195,202,45,73,252,213,244,6,253,251,13,29,13,230,225,2,29,26,249,211,232,44,58,250,199,205,1,61,50,237,209,243,2,255,28,53,0,201,223,1,23,39,25,3,12,19,253,0,43,59,26,235,219,245,2,239,227,246,251,247,9,7,229,220,247,10,21,21,246,239,24,8,184,204,51,53,249,218,188,194,27,90,29,214,235,16,5,0,12,7,27,50,3,195,222,33,46,32,6,221,205,244,68,82,250,192,220,3,31,48,11,211,227,1,240,245,25,12,235,246,250,232,252,13,253,24,60,215,132,252,115,83,234,156,175,8,67,41,247,245,11,1,255,4,235,234,20,48,40,5,222,216,245,12,41,73,27,214,209,212,236,60,99,28,197,184,226,40,62,0,223,248,254,234,242,16,7,235,255,12,239,250,16,244,231,1,252,245,43,55,249,219,217,230,28,76,36,212,203,251,21,2,242,17,40,8,219,208,240,29,55,39,241,200,218,10,49,57,0,189,205,13,59,49,234,173,228,62,51,10,5,233,203,234,21,29,39,25,220,199,252,27,6,255,250,242,10,16,237,244,45,43,251,235,224,230,18,41,23,250,228,229,11,42,27,2,222,191,223,31,54,34,1,215,221,23,29,0,11,15,232,207,231,11,45,50,1,210,225,18,27,250,233,251,9,0,235,248,52,50,224,198,247,31,34,255,209,217,20,44,33,26,248,204,226,30,40,1,218,209,8,66,30,224,237,17,2,237,243,8,26,252,209,232,35,57,24,238,215,220,252,23,12,5,25,0,209,229,34,51,33,255,199,196,252,27,33,25,247,218,239,19,32,27,251,217,227,255,22,42,26,234,240,26,3,232,0,11,11,8,229,199,249,53,38,11,253,219,208,251,26,29,49,22,192,184,26,76,26,226,194,220,40,67,22,228,208,221,17,61,41,252,217,210,246,33,33,0,243,9,13,223,202,0,67,61,247,205,221,244,24,56,23,233,244,4,235,248,20,245,239,11,255,239,11,11,228,237,4,240,238,29,54,2,190,193,2,69,84,11,199,212,230,251,48,64,17,241,237,220,240,40,47,22,248,224,244,15,11,0,255,246,5,55,42,217,170,199,25,86,52,217,188,0,40,0,245,18,255,240,0,234,225,7,30,20,5,235,203,228,37,48,2,229,223,241,35,53,21,250,233,229,255,32,32,5,231,218,1,39,24,22,24,237,208,241,19,13,16,13,242,243,17,2,226,253,21,242,214,235,1,14,33,28,249,227,232,254,23,19,241,226,239,245,7,36,32,252,213,203,6,87,43,199,216,12,16,28,47,25,1,247,201,197,12,54,50,17,208,192,27,76,255,220,252,239,239,47,35,198,212,25,34,34,14,202,186,5,32,248,242,3,20,38,19,224,227,21,28,1,222,206,5,57,20,240,3,255,227,3,36,33,30,233,165,208,70,121,70,235,153,163,254,58,69,40,220,161,217,49,43,14,33,4,170,175,24,65,18,236,213,225,45,57,214,188,26,57,236,204,232,0,40,80,39,221,212,239,2,26,34,2,231,238,242,252,27,51,48,3,201,198,251,35,36,12,227,221,16,35,6,3,6,225,210,3,31,21,5,233,222,255,45,64,26,204,155,196,21,56,50,24,220,179,234,69,87,22,194,161,222,61,78,15,234,242,240,236,6,32,24,253,219,203,245,60,81,42,8,242,207,212,4,23,25,25,237,191,237,60,45,234,216,248,13,253,230,237,13,31,16,251,249,5,7,241,216,232,13,12,5,20,7,240,5,28,253,230,245,243,245,9,30,41,12,228,225,248,30,57,14,191,191,14,56,47,33,0,217,230,32,57,29,252,237,240,5,31,36,33,18,232,196,216,5,14,248,229,233,247,242,232,234,241,254,0,234,217,224,232,247,32,45,3,229,226,243,22,44,24,245,227,233,21,70,55,0,228,238,14,48,42,0,231,245,9,18,22,15,0,250,252,241,228,249,23,23,2,234,222,239,11,22,3,238,238,251,254,245,246,3,10,0,246,2,23,13,239,235,3,18,11,2,4,2,249,247,10,28,17,250,235,241,4,15,8,255,253,0,7,7,248,243,4,14,9,6,4,251,249,3,13,14,8,252,240,242,3,14,5,253,1,5,6,12,7,239,228,245,6,9,3,248,239,250,7,0,245,251,0,250,247,248,247,253,11,19,5,235,231,0,22,20,5,241,230,255,28,24,10,1,253,255,252,249,0,10,16,16,7,251,255,8,5,0,1,255,254,3,6,253,242,242,253,10,19,8,239,223,230,247,6,23,22,4,249,241,240,0,22,20,252,235,241,3,21,24,11,247,231,235,11,35,20,250,237,240,2,21,27,21,13,255,231,222,246,25,34,11,236,222,236,11,33,19,239,217,232,13,36,20,240,224,243,17,27,15,3,249,243,251,2,0,1,9,14,10,253,238,239,4,25,24,7,251,252,252,249,251,8,24,24,2,229,221,242,14,26,9,241,237,252,7,8,255,248,254,5,9,12,6,246,228,230,3,31,26,255,231,227,244,10,21,15,3,249,242,243,251,6,12,1,241,242,253,0,255,249,244,253,5,6,0,247,246,255,1,252,254,7,9,3,253,249,250,0,6,6,3,2,1,255,2,11,15,11,9,6,0,0,5,8,10,7,0,254,0,4,7,5,0,252,251,255,3,2,0,255,0,255,254,253,253,254,255,0,0,0,0,3,1,252,250,255,4,7,6,1,254,255,4,10,10,6,1,0,3,8,12,12,12,6,255,0,3,3,4,6,3,253,248,252,2,7,8,2,251,253,0,251,244,251,6,6,0,248,246,252,1,254,246,242,248,8,13,254,244,243,246,0,12,19,15,253,231,227,246,17,32,17,240,223,238,3,12,11,6,0,251,251,3,10,0,241,239,255,21,23,252,226,224,247,20,29,14,254,247,250,254,253,2,18,27,14,246,234,247,7,15,11,4,0,0,255,247,245,0,14,22,21,0,229,231,8,34,25,246,218,229,7,32,22,246,223,230,2,29,31,3,227,223,0,0,60,0,3,0,5,0,176,0,248,1,176,4,192,8,48,12,210,15,96,27,60,2,16,5,3,1,0,0,0,0,210,75,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,176,0,248,1,176,4,192,8,48,12,210,15,96,27,0,11,35,12,8,3,1,1,1,0,210,75,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,248,1,176,4,192,8,48,12,210,15,96,27,0,11,35,12,8,3,1,1,1,0,210,75,120,120,120,120,120,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,52,3,36,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,4,7,13,21,16,235,225,4,24,254,238,0,14,0,243,2,13,254,247,11,17,255,251,7,9,5,2,4,0,251,0,5,1,253,254,0,0,249,254,3,1,255,253,253,252,247,242,7,16,255,2,26,30,218,217,27,25,228,218,26,92,34,201,216,21,41,254,232,31,59,222,164,0,79,91,225,131,243,104,75,234,182,9,69,38,233,212,247,18,20,249,218,254,25,9,234,237,3,13,4,239,249,9,12,243,3,11,10,17,13,15,254,234,229,249,25,19,230,226,16,13,245,249,17,2,4,252,248,255,21,33,226,222,19,30,22,26,252,241,247,35,24,221,241,21,17,7,0,27,32,51,47,19,239,18,28,6,225,254,5,244,230,9,7,7,2,5,6,12,246,245,12,10,235,214,14,21,252,7,24,254,15,45,16,208,227,7,0,219,217,22,51,4,248,30,14,2,19,15,242,219,249,33,238,230,16,17,245,245,34,24,224,240,51,27,223,237,17,15,251,8,33,24,4,25,19,253,4,9,254,251,245,12,0,237,2,21,255,8,31,250,248,16,6,245,248,248,12,15,249,250,9,5,3,2,4,255,252,251,252,1,251,245,1,20,0,251,10,7,246,12,18,245,245,9,0,245,255,253,238,240,5,7,251,239,0,255,254,248,252,9,245,238,14,6,240,0,16,9,1,5,14,1,252,20,12,240,5,26,2,247,13,19,251,0,20,255,0,15,255,252,3,3,7,252,248,252,8,254,6,4,253,9,11,250,241,0,6,250,2,2,248,6,13,252,242,6,5,254,251,248,14,13,241,253,6,251,241,250,0,248,242,3,254,242,0,251,244,237,240,249,254,240,237,242,237,239,245,238,236,1,224,244,230,234,242,241,238,240,249,227,252,4,211,17,252,240,0,8,250,249,5,3,250,4,9,4,8,23,11,11,14,18,14,255,19,17,6,10,25,17,10,21,12,1,14,14,1,13,17,4,5,13,10,241,19,0,245,16,0,0,1,255,8,247,6,5,7,239,16,251,244,255,0,254,247,0,5,249,2,4,246,2,5,1,252,1,253,9,1,3,253,16,4,14,9,2,11,14,4,5,18,14,6,20,16,3,19,24,8,11,20,14,10,10,15,10,5,18,18,254,17,27,0,13,22,1,9,20,9,3,11,27,6,7,30,255,7,20,247,0,5,6,7,12,246,9,244,245,8,232,246,251,247,226,250,235,236,250,245,236,237,6,234,231,250,235,243,5,250,229,14,234,237,3,217,237,12,221,252,25,233,244,29,184,13,1,201,33,226,0,14,235,253,245,246,255,254,238,237,0,238,239,247,255,241,20,18,244,21,25,242,20,7,12,23,28,7,8,31,22,11,24,5,18,15,22,2,245,10,4,239,14,253,236,20,0,249,254,19,243,4,8,233,5,0,236,6,227,4,4,243,244,0,233,248,253,228,232,236,250,230,237,252,235,238,254,237,227,0,244,228,5,234,237,247,246,230,249,238,250,254,234,0,255,248,8,0,239,14,17,255,22,9,9,32,18,14,28,28,16,33,18,7,23,29,14,12,24,19,21,24,10,14,16,24,14,7,21,21,14,18,17,9,18,18,17,3,15,11,0,8,0,0,7,1,0,254,251,6,0,246,8,247,254,5,247,2,247,2,2,250,4,1,240,244,253,254,240,10,250,235,249,239,244,220,252,227,233,244,246,221,228,2,216,222,248,225,210,11,241,213,4,244,193,218,234,177,215,248,193,205,225,226,214,206,1,205,211,31,224,211,32,13,232,49,47,14,52,83,38,38,78,66,32,60,52,11,40,46,10,14,29,21,19,14,24,0,3,0,5,0,116,0,232,0,240,5,176,9,152,13,60,15,124,21,25,3,12,8,4,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,116,0,232,0,240,5,176,9,152,13,60,15,124,21,0,3,12,8,4,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,0,240,5,176,9,152,13,60,15,124,21,0,3,12,8,4,4,4,4,0,0,200,212,187,255,255,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,219,11,36,0,7,17,19,225,216,254,31,13,216,207,17,33,10,243,229,3,15,238,228,235,33,49,231,196,4,51,235,175,11,48,5,236,241,241,15,13,230,226,14,25,243,241,6,250,8,247,239,250,26,19,216,234,44,11,226,0,19,245,247,1,255,14,11,239,1,4,231,0,33,21,242,237,5,229,244,45,15,223,0,13,226,250,35,5,2,10,211,255,49,252,251,6,28,30,252,213,220,8,20,14,11,254,0,5,2,251,242,248,37,12,245,8,0,229,252,1,234,10,16,10,13,228,222,22,38,252,210,243,36,252,227,22,38,233,246,2,237,8,31,244,238,17,8,229,213,8,67,9,187,227,35,34,215,224,42,44,247,206,227,24,54,229,215,14,31,11,243,222,0,45,9,221,236,8,25,24,241,226,10,31,229,230,18,28,11,241,213,242,39,5,239,10,251,236,7,22,255,0,4,251,0,9,251,253,238,226,19,42,14,238,0,238,231,245,23,50,11,233,252,12,230,234,29,49,3,209,226,26,48,249,228,34,37,211,200,18,53,34,240,229,0,37,254,206,250,78,44,196,221,36,22,243,230,252,32,32,244,239,249,14,252,234,13,39,238,231,6,250,253,252,232,11,51,0,202,219,35,30,210,230,42,9,238,251,255,22,10,214,224,17,32,15,235,252,24,251,213,28,33,238,13,13,238,1,20,246,249,2,14,19,254,233,248,28,9,5,0,230,230,6,21,19,27,242,229,245,2,250,39,36,228,222,25,1,218,15,37,235,17,20,215,238,15,253,253,14,37,5,220,220,21,21,1,234,253,37,3,191,10,57,240,236,21,230,244,33,235,228,18,24,250,242,223,3,44,5,238,246,4,13,231,237,44,65,223,196,6,51,19,220,227,52,39,237,204,255,33,247,223,14,22,251,241,238,238,13,30,0,240,255,6,247,243,12,1,7,25,246,250,15,251,230,255,30,25,237,225,11,19,240,254,17,21,1,215,219,71,59,224,212,6,19,8,244,7,25,2,227,251,254,8,31,14,182,241,44,12,1,252,240,1,18,248,216,5,41,239,243,37,234,209,16,53,218,230,52,8,193,247,50,26,238,239,0,28,38,219,185,31,81,249,201,19,40,230,204,251,52,54,1,201,208,27,37,241,251,35,5,227,218,235,62,45,214,214,25,28,220,212,46,61,220,206,13,27,12,237,0,15,27,253,231,15,17,250,233,3,2,16,15,0,234,7,11,235,7,14,248,236,254,30,22,235,236,251,13,13,247,230,8,12,1,14,10,6,245,223,26,51,223,229,36,249,239,26,25,248,0,242,238,9,35,0,235,26,7,223,253,33,251,240,4,2,29,28,227,228,13,252,242,255,32,51,235,200,254,26,244,255,22,8,251,237,5,18,253,244,21,13,4,249,240,0,7,19,9,234,247,8,244,223,19,55,24,203,212,17,12,244,22,24,0,254,231,233,14,36,6,231,252,29,252,233,0,235,0,44,234,230,35,8,212,233,21,24,246,210,10,45,3,230,216,26,40,235,235,32,26,242,233,253,15,27,5,3,228,245,20,254,240,22,11,7,30,242,208,11,18,239,18,49,2,209,240,254,8,15,28,5,248,231,235,6,25,6,245,237,230,18,18,228,2,25,244,221,1,22,28,252,218,252,5,252,23,232,224,51,24,224,7,8,231,10,17,10,31,251,192,230,48,26,236,1,22,244,226,247,246,39,53,215,197,31,41,245,234,245,27,34,251,219,249,31,243,228,38,46,227,231,242,241,31,57,250,196,245,20,26,0,1,15,244,228,220,13,25,15,9,238,243,6,246,234,10,15,5,249,250,253,0,5,243,236,14,48,240,222,5,4,16,12,238,0,30,239,228,15,20,13,8,231,218,27,56,252,217,238,16,36,247,220,18,35,237,210,235,48,55,251,210,249,4,229,228,45,57,7,245,223,226,229,247,27,67,10,225,1,222,235,27,29,4,255,247,238,237,16,43,0,251,250,255,234,251,15,35,18,245,231,248,15,255,248,242,35,29,252,215,234,12,19,250,220,5,20,244,244,17,19,20,192,207,51,21,223,9,23,246,250,234,232,13,29,21,239,227,13,18,228,252,33,3,250,230,226,16,39,1,248,250,4,0,232,255,47,232,213,40,52,221,206,13,30,6,231,238,23,35,251,206,9,29,244,236,11,33,17,221,175,3,80,11,227,11,0,223,252,2,252,28,34,247,203,232,42,52,232,210,38,56,227,209,29,37,211,247,72,11,205,241,2,1,26,38,13,248,204,229,54,36,218,10,57,204,194,15,35,7,24,242,214,9,0,232,14,25,17,16,232,194,245,22,17,4,11,7,224,254,249,235,21,31,233,245,25,233,238,40,2,229,12,42,226,212,19,46,243,3,22,208,246,53,246,228,22,35,244,208,23,41,239,228,0,15,0,14,255,229,8,12,249,232,11,41,234,187,14,69,240,225,10,3,221,243,33,24,250,2,250,223,9,27,12,28,237,201,254,40,3,11,253,218,16,21,240,5,244,247,8,246,10,42,9,212,220,24,33,9,225,6,14,252,245,247,22,30,239,234,18,243,2,36,216,249,70,241,206,37,252,237,56,2,207,16,21,249,0,233,15,13,208,2,77,14,210,228,253,4,1,23,20,5,219,205,2,43,24,255,217,252,15,4,11,247,227,0,253,255,10,12,253,0,32,250,222,240,1,21,21,241,255,36,254,194,238,29,26,10,19,15,233,209,4,28,15,11,251,247,252,250,8,23,0,4,240,222,16,24,9,26,2,222,234,9,22,5,248,32,21,224,241,1,14,9,249,251,24,12,222,250,16,29,15,207,239,69,8,199,7,254,247,42,243,181,40,84,209,178,18,68,16,223,223,35,42,227,200,18,81,241,210,42,27,210,235,247,19,53,6,188,238,66,23,192,216,28,65,234,229,33,26,240,247,245,242,32,43,237,237,23,15,253,17,0,223,0,34,16,21,25,247,216,221,11,61,30,242,233,238,6,8,20,22,255,221,227,16,26,11,16,244,216,245,3,3,34,38,240,191,247,21,254,21,48,227,170,0,71,246,228,14,238,219,21,20,253,33,251,205,1,19,12,7,252,2,234,225,14,21,13,26,223,213,19,3,13,53,234,207,14,254,243,41,20,222,35,2,196,232,58,67,239,213,34,34,191,215,45,33,23,36,223,199,36,13,212,4,59,14,196,231,12,207,9,85,241,187,0,247,2,45,242,226,43,0,189,251,22,5,13,0,250,15,237,214,7,14,31,19,195,225,63,13,191,255,18,11,252,209,5,63,242,190,49,27,231,238,208,10,75,0,205,9,29,32,219,174,48,81,238,203,29,42,249,209,225,13,31,10,11,17,5,217,209,6,29,31,0,242,10,253,234,243,23,44,245,220,14,9,239,34,27,229,238,4,17,11,253,3,250,219,252,55,32,211,242,59,13,201,224,46,44,222,242,34,28,213,223,54,255,195,19,63,0,224,0,20,244,18,8,239,6,3,231,12,41,16,212,254,44,239,241,250,233,38,51,224,209,25,45,233,214,234,19,49,236,215,37,16,219,225,2,48,43,252,221,217,0,17,250,250,43,26,205,195,26,46,245,229,73,66,159,165,68,48,233,251,231,36,77,191,151,53,92,238,221,32,60,252,203,218,6,76,94,3,186,9,27,228,240,52,62,20,181,215,72,25,240,13,21,12,229,203,13,90,33,229,210,246,19,246,232,38,81,5,205,196,242,35,2,6,33,248,212,216,245,48,69,6,194,220,33,34,26,254,239,6,43,241,192,37,72,237,225,41,12,226,244,236,3,34,1,222,15,62,229,166,5,86,250,177,18,52,234,225,245,13,30,227,234,40,11,192,231,18,33,251,225,44,31,175,205,28,232,0,92,17,190,207,25,6,225,9,29,249,231,215,252,54,0,196,236,12,245,244,24,18,233,205,237,43,26,229,211,240,31,3,252,5,239,249,240,208,54,61,196,226,36,245,204,14,5,0,14,233,252,8,251,249,252,216,19,51,14,229,197,234,56,42,250,251,5,216,236,28,255,255,42,27,200,195,49,61,211,220,35,13,231,249,50,35,204,217,29,28,248,234,13,28,251,213,9,68,236,208,13,9,10,22,250,226,236,58,23,211,250,34,195,213,86,52,219,205,0,24,26,248,233,249,8,22,237,6,37,250,231,223,2,77,30,181,210,43,19,254,253,6,27,246,167,2,95,12,177,5,50,0,225,208,238,35,45,9,208,220,47,251,178,12,69,23,240,196,251,78,254,163,249,73,11,202,228,38,38,233,241,4,11,8,242,220,19,46,250,238,250,9,250,222,240,50,61,242,199,253,33,243,233,13,60,15,217,211,25,72,7,189,3,63,251,210,17,29,241,253,36,249,234,21,248,202,35,114,34,177,208,6,15,25,41,18,251,5,221,211,31,21,231,32,42,214,212,3,22,61,238,205,47,16,157,234,89,47,243,246,240,241,3,246,235,49,58,230,184,251,13,238,26,16,192,5,75,251,165,3,61,20,234,2,13,3,230,3,40,5,221,24,24,191,245,61,30,246,207,2,12,10,13,4,243,254,239,219,43,21,238,38,248,183,29,56,204,14,37,215,242,40,234,215,47,35,218,224,1,251,253,31,15,237,28,2,178,36,60,201,252,59,244,11,16,220,18,47,236,6,6,247,44,15,161,228,106,40,183,219,53,63,187,199,64,47,238,233,204,43,117,226,164,27,75,234,197,222,48,72,233,223,22,252,194,214,50,75,215,173,49,71,198,192,18,60,246,203,236,38,50,16,225,186,3,97,1,150,228,84,57,192,191,30,35,186,217,57,37,230,240,208,212,22,20,255,23,8,245,191,179,33,84,250,242,254,207,224,229,248,77,52,193,203,23,3,0,235,251,71,242,160,11,44,253,230,221,78,69,147,150,97,91,202,195,234,1,20,20,36,28,244,199,204,0,54,24,31,52,229,169,251,27,23,54,39,195,218,46,7,249,51,17,222,8,61,235,227,49,10,5,65,255,180,30,83,221,226,97,31,172,0,32,32,46,234,225,20,22,245,237,31,40,229,199,39,50,218,243,50,2,198,252,38,36,227,206,29,99,8,175,1,71,244,203,62,47,218,233,1,233,10,69,5,209,209,11,23,6,222,13,72,211,136,32,115,202,161,79,87,207,157,14,77,7,211,249,4,30,249,179,251,76,249,190,24,16,252,27,244,229,29,23,238,255,38,18,206,213,66,95,236,164,253,82,0,137,9,119,5,173,255,16,5,17,200,201,124,106,142,160,70,25,206,253,51,56,247,169,210,47,53,240,228,6,15,215,221,4,24,39,243,190,10,66,247,223,228,22,52,242,194,5,69,9,220,210,254,57,27,210,221,33,19,219,221,60,41,225,7,56,248,236,209,234,70,64,234,13,22,231,230,11,5,40,40,217,223,0,236,15,54,254,225,251,11,208,212,72,65,211,213,43,234,211,24,24,0,33,251,189,245,23,18,19,223,206,44,60,206,181,23,88,230,156,47,71,193,200,20,29,22,234,245,10,245,244,30,226,233,48,13,224,219,254,35,4,251,32,37,203,186,255,29,21,16,36,4,209,179,30,95,6,216,11,17,218,219,21,45,253,6,37,235,188,0,36,251,238,25,7,224,251,20,214,213,58,43,208,211,6,5,250,246,12,22,0,210,217,27,34,249,9,27,233,248,250,224,6,79,17,228,9,235,215,25,42,249,252,31,234,153,243,105,42,229,5,237,232,253,249,27,79,6,183,243,63,7,239,251,16,237,236,30,1,198,10,34,213,250,44,223,230,18,229,255,42,230,242,33,4,206,245,56,65,243,178,216,44,61,255,185,29,76,186,137,44,90,0,192,245,17,244,253,33,248,231,39,10,195,248,61,35,244,218,1,254,223,231,61,72,226,157,228,68,52,199,216,62,62,233,209,246,34,250,249,39,17,190,232,11,22,29,23,5,226,0,23,254,244,54,50,249,222,241,14,16,244,248,27,29,244,244,31,10,211,228,44,34,212,240,25,7,2,255,250,14,8,228,226,9,33,30,0,191,220,25,18,241,248,44,12,201,199,28,36,7,251,219,220,22,252,216,39,67,235,217,252,11,6,15,234,239,59,42,178,210,68,24,200,6,56,18,247,223,196,40,97,250,213,25,29,213,218,32,70,21,210,220,3,1,250,243,26,52,228,212,32,43,223,235,41,21,254,249,232,232,36,34,220,239,26,7,218,236,33,29,232,229,253,13,14,239,235,27,41,250,199,243,44,19,214,233,54,253,203,240,20,11,250,230,10,44,230,209,13,35,249,230,249,16,9,245,251,11,17,7,211,225,31,29,7,253,230,233,15,16,1,8,241,238,8,250,251,32,19,226,226,254,19,35,0,232,232,248,22,254,237,4,14,253,244,248,10,22,238,235,22,36,0,253,243,242,27,32,3,8,7,250,239,13,42,2,215,245,11,26,28,251,226,12,25,233,255,42,0,223,246,5,9,11,230,236,10,4,252,249,251,7,248,227,249,44,41,220,211,9,25,254,7,13,248,255,0,235,10,23,235,232,20,25,254,235,241,4,8,252,3,27,3,237,251,16,11,7,15,0,239,249,2,254,15,32,1,223,242,14,11,254,240,247,22,4,208,0,49,250,234,34,16,227,252,12,4,16,12,9,6,241,244,251,1,23,30,253,236,245,0,6,0,11,44,10,210,234,24,28,5,238,0,24,244,218,4,32,12,246,244,254,8,253,237,251,27,12,241,235,254,252,253,243,250,13,4,230,221,254,16,3,246,251,251,239,236,255,16,13,234,211,254,27,246,230,247,2,246,240,246,2,244,0,121,8,30,0,248,12,23,0,234,214,221,242,8,252,4,28,34,36,47,28,249,224,232,242,227,215,244,15,6,13,43,54,41,33,40,28,245,226,226,222,197,220,255,254,29,57,36,31,48,58,3,235,23,251,212,0,30,244,252,34,38,42,42,13,8,14,247,233,230,219,200,242,23,18,10,48,61,46,39,236,225,252,225,204,217,233,237,27,53,33,48,44,255,20,5,220,223,230,200,214,24,1,245,53,49,15,38,19,223,224,249,219,203,254,14,11,29,32,29,27,34,29,254,6,2,212,209,230,218,201,217,19,24,12,37,49,27,18,31,244,212,235,244,224,223,254,11,9,26,30,29,39,28,15,1,225,219,244,227,234,9,243,231,17,28,245,253,30,255,236,16,23,247,254,3,0,240,243,248,0,2,242,12,19,253,253,24,32,2,4,255,237,241,236,212,241,19,11,17,56,50,16,37,17,184,192,223,179,180,2,27,33,73,93,66,41,41,13,224,217,214,187,189,211,243,14,36,60,87,53,33,51,6,219,227,199,167,195,220,211,240,17,33,63,89,45,25,43,244,180,222,206,188,240,242,242,34,46,22,34,24,250,247,241,211,211,228,234,249,13,32,18,37,62,32,23,34,6,227,242,223,206,235,226,225,3,13,1,25,44,26,8,10,254,224,209,207,201,201,214,244,38,51,27,54,71,23,3,15,219,192,223,215,220,238,235,11,46,32,38,41,6,0,245,221,208,219,232,228,246,8,16,28,46,43,32,4,223,218,236,205,205,234,249,35,29,40,85,58,7,6,3,207,181,205,206,202,6,17,32,76,82,30,29,54,238,188,226,208,179,220,233,246,12,31,39,67,69,42,59,26,210,177,182,194,184,223,9,16,52,92,78,63,43,0,217,213,213,188,203,215,247,16,29,47,56,37,39,24,5,6,240,221,208,238,240,226,243,28,48,34,24,43,26,16,0,223,200,210,224,225,247,244,240,34,39,8,42,59,6,243,6,247,211,217,203,215,1,6,21,51,54,37,20,21,30,0,223,229,207,199,228,238,243,39,47,44,63,58,33,17,248,221,209,201,215,214,194,239,23,18,33,61,48,30,10,0,2,234,225,230,239,0,14,37,32,36,46,59,31,247,234,236,203,213,236,206,214,3,19,11,47,64,19,31,50,255,231,250,224,182,194,219,218,243,49,35,33,86,64,26,51,14,193,226,233,177,196,250,251,237,33,54,27,27,46,9,239,2,252,219,219,206,212,4,16,16,29,48,64,19,10,27,224,202,230,219,224,1,22,37,37,22,17,46,27,210,191,228,202,168,237,251,248,42,47,32,49,53,254,244,3,233,209,208,218,222,240,0,2,16,54,29,24,38,12,240,252,4,220,198,220,244,252,21,29,25,31,62,49,251,13,14,217,219,220,217,232,243,19,49,67,45,32,44,15,239,215,207,208,221,231,233,244,249,6,26,40,62,54,15,16,4,220,205,209,211,229,217,236,17,41,59,62,41,43,54,17,232,233,216,178,178,216,232,245,27,41,36,63,68,40,1,232,241,200,159,182,226,231,247,44,63,64,70,67,4,3,254,176,166,235,224,180,1,26,28,58,65,38,45,41,248,218,224,222,192,218,233,223,253,61,39,25,54,67,43,0,212,213,213,197,210,249,248,2,56,51,34,41,27,7,22,250,209,185,203,246,210,213,42,46,11,78,74,35,59,28,231,240,217,161,170,204,232,242,42,45,25,62,69,24,8,10,239,223,227,171,197,247,217,245,27,26,48,57,28,4,252,243,233,228,227,8,31,41,24,29,37,17,240,230,239,226,228,249,3,6,7,23,15,5,42,28,222,248,5,235,239,223,216,41,20,217,22,58,3,5,28,10,231,218,235,233,225,252,230,243,55,16,24,76,39,0,20,12,217,224,237,225,192,231,18,252,248,39,32,19,48,19,235,247,243,238,221,197,221,251,237,217,26,63,30,5,42,49,253,244,3,237,224,251,225,211,240,3,251,22,9,239,23,63,47,7,40,23,194,225,30,195,158,7,12,243,42,66,32,8,20,19,243,226,2,8,254,12,244,238,14,13,235,252,242,237,8,254,5,11,15,4,5,0,252,241,247,4,8,243,0,16,253,2,24,250,243,22,17,223,225,13,237,205,253,40,3,3,61,39,27,53,248,196,227,205,175,204,230,216,20,52,33,52,65,32,243,6,25,217,215,11,243,216,234,9,32,25,22,41,43,20,26,16,239,225,228,229,236,229,229,240,21,28,22,39,45,24,41,32,237,241,236,207,215,232,229,234,10,45,43,45,58,21,19,31,229,200,223,226,204,220,248,255,249,20,47,26,0,17,42,21,248,246,12,0,219,229,228,216,225,13,25,6,24,31,10,0,10,0,207,218,20,240,220,26,255,0,50,8,230,20,8,252,1,245,18,25,11,13,9,236,218,237,249,207,231,32,41,0,21,54,41,23,14,8,250,227,226,206,216,245,244,20,49,60,63,61,29,1,13,211,149,215,209,148,216,51,6,2,67,44,23,55,10,201,6,247,183,223,22,227,247,58,18,45,71,13,252,18,2,239,244,227,188,220,0,221,212,35,30,254,44,60,248,229,12,231,200,226,251,196,195,10,29,11,23,43,31,13,14,8,241,244,238,238,9,34,27,19,6,19,248,234,10,1,221,230,13,237,241,255,22,6,0,22,12,29,0,234,24,9,198,215,6,249,230,22,39,0,37,62,211,180,247,210,228,52,253,228,74,52,2,74,34,212,26,31,214,225,8,231,211,9,233,211,65,37,218,30,53,232,242,30,205,180,252,240,227,6,1,252,41,51,6,238,5,11,238,249,0,239,255,36,28,8,52,40,234,235,239,208,212,244,206,223,46,22,245,48,70,238,241,20,227,190,252,248,218,253,23,22,29,11,6,35,241,208,49,51,197,242,45,0,248,17,250,245,20,249,225,17,28,211,221,32,248,233,54,45,39,38,9,3,10,230,196,199,193,203,224,17,24,15,77,78,22,45,66,233,214,17,219,154,201,255,235,9,9,251,36,73,8,0,17,214,201,215,209,215,15,63,5,18,90,31,204,9,12,210,3,20,203,243,41,249,15,67,255,248,67,40,0,24,236,203,204,221,202,226,0,13,53,55,31,35,73,3,195,247,232,166,212,1,229,232,24,0,243,71,50,5,37,14,218,255,12,202,220,243,212,221,20,21,14,26,56,54,24,22,20,246,248,232,203,231,2,235,226,252,10,32,47,3,19,69,28,218,253,19,205,185,20,21,210,26,70,3,15,61,254,252,19,206,205,234,215,211,242,230,246,35,39,21,28,39,54,23,228,234,241,235,214,246,24,16,0,9,14,245,231,232,255,6,240,241,12,8,3,38,42,248,237,12,2,244,239,223,222,5,11,6,50,54,26,38,48,248,229,244,227,192,214,241,1,33,56,68,52,36,4,1,27,227,183,187,194,208,230,35,59,68,70,47,36,22,231,179,196,213,178,214,12,0,20,63,55,42,44,26,243,200,187,182,201,215,234,0,48,51,30,56,65,26,11,247,206,207,197,201,216,237,245,244,14,79,98,79,76,50,247,219,199,152,159,180,200,219,8,76,94,103,89,64,55,10,226,212,206,186,140,172,234,13,6,46,101,78,93,94,3,204,172,156,156,188,196,192,31,57,30,84,94,29,25,63,248,155,199,203,149,192,0,239,29,125,94,52,89,46,205,225,199,141,175,203,220,1,43,49,67,56,10,34,39,214,205,253,233,219,0,20,5,44,67,20,24,18,236,237,219,198,254,14,227,26,72,16,4,55,38,246,240,241,215,219,252,248,253,15,2,255,19,248,230,17,241,193,24,84,244,225,43,25,219,230,248,236,237,253,253,255,19,11,3,30,34,8,229,230,240,229,222,220,243,23,24,28,26,19,39,40,244,204,233,241,195,209,241,8,5,13,81,87,17,12,39,249,202,241,220,188,235,253,227,255,47,26,20,35,253,251,30,17,251,222,225,0,252,250,6,244,247,5,1,14,17,253,29,80,7,230,12,3,210,196,230,246,232,252,47,43,35,19,8,23,11,232,225,221,200,203,238,242,250,80,102,43,43,80,35,211,211,230,192,152,185,241,251,14,89,78,42,94,91,1,228,248,179,149,183,174,177,228,251,53,104,62,77,111,39,232,230,198,154,162,215,231,227,44,103,67,70,101,49,12,243,215,194,164,161,207,226,238,47,52,33,79,69,6,21,18,225,162,175,206,177,216,18,15,37,97,84,33,23,36,232,180,168,177,197,186,226,45,91,70,68,102,87,35,254,231,204,184,173,193,221,250,21,59,57,62,112,98,33,237,221,195,143,164,206,200,228,241,23,49,65,57,41,47,9,6,251,206,209,227,220,214,221,253,29,22,24,59,64,27,22,32,9,253,236,228,237,224,239,248,223,255,30,7,20,52,37,41,29,7,251,225,223,227,210,219,232,232,244,21,15,27,47,41,41,12,21,18,222,232,228,229,245,234,244,18,5,12,29,13,16,24,1,27,17,241,254,243,222,230,236,229,210,248,17,18,244,12,49,11,21,38,6,235,251,236,205,237,247,251,12,19,40,35,25,15,13,255,241,252,249,221,206,247,245,216,246,33,32,35,27,39,62,12,0,234,209,214,187,183,248,231,248,41,33,43,67,42,30,24,243,216,216,190,193,214,219,229,19,26,36,43,54,54,23,10,0,232,201,215,218,178,231,38,5,34,99,52,32,72,22,247,5,199,203,236,204,240,10,2,22,33,47,31,255,10,6,233,225,229,230,221,249,0,0,34,34,15,40,10,252,0,231,205,228,253,235,230,21,20,24,28,31,41,8,13,5,244,5,231,222,253,1,233,12,16,3,41,27,16,6,250,255,240,217,234,249,242,246,0,0,0,76,11,178,0,10,246,247,248,0,19,0,242,9,16,0,239,239,3,14,11,4,253,1,252,245,250,2,10,19,12,242,231,246,9,15,8,3,2,249,240,254,9,255,1,9,11,15,245,216,244,30,29,4,238,244,11,253,232,5,27,16,5,242,231,0,17,0,236,253,31,27,244,233,253,1,247,5,27,8,235,242,3,1,250,6,37,21,221,219,0,20,16,248,248,30,22,215,204,16,49,11,239,0,21,244,213,251,25,8,12,19,248,236,245,1,15,2,245,14,13,241,246,254,255,19,20,253,248,247,246,250,249,7,23,18,250,236,248,2,3,255,253,13,27,248,216,241,27,30,254,249,12,251,221,245,32,25,242,242,14,13,240,235,5,13,5,11,3,240,241,253,13,11,241,253,45,18,194,206,35,53,248,226,7,26,250,230,254,19,10,2,3,250,242,0,13,246,232,16,42,11,230,230,0,254,254,27,19,250,250,251,244,244,3,29,13,251,3,247,222,237,16,32,20,253,253,247,225,253,34,8,238,3,30,21,216,185,1,70,37,1,246,233,243,245,250,15,32,20,231,225,12,13,232,244,41,46,240,202,240,24,8,238,0,40,28,229,217,251,22,7,250,5,29,9,212,221,24,31,0,254,13,0,233,235,250,8,24,35,11,231,225,241,4,24,27,10,238,232,247,4,255,3,28,25,245,230,240,6,9,252,6,22,253,227,246,5,9,21,4,241,0,10,244,230,8,45,14,219,235,32,20,227,224,11,39,8,235,8,11,234,239,8,26,19,238,235,3,254,244,0,21,34,4,232,243,249,254,10,11,255,2,7,244,232,254,24,20,3,254,247,242,247,4,12,0,2,36,8,204,222,24,42,13,238,238,3,4,240,240,14,40,23,231,217,254,20,7,252,254,4,10,253,242,0,7,254,11,26,255,225,231,4,21,11,8,3,238,235,4,13,0,0,9,15,9,241,232,244,252,11,28,21,245,229,250,20,12,254,253,3,249,234,251,17,22,9,234,236,23,25,245,230,247,21,17,254,253,247,240,255,17,26,16,246,230,246,11,242,223,20,63,13,206,219,40,43,218,207,29,57,3,213,223,28,35,237,237,26,12,232,231,12,42,4,221,1,22,236,217,13,54,26,226,215,248,21,37,2,215,241,25,23,6,236,232,12,20,254,0,245,254,28,7,232,242,0,6,255,3,28,3,237,254,4,0,7,0,233,244,20,19,251,247,18,20,239,215,246,21,13,6,26,8,219,215,7,44,25,233,242,36,6,188,219,49,64,1,204,236,26,7,246,10,18,13,253,214,225,33,36,249,243,19,7,217,229,23,28,20,13,240,225,231,9,23,255,11,34,247,207,232,13,22,18,22,2,225,236,11,9,252,0,29,17,217,222,21,20,249,2,11,0,0,5,245,229,251,39,33,233,229,10,10,238,247,10,17,17,3,237,238,254,8,3,254,22,30,230,197,245,43,40,253,248,8,237,219,5,29,15,11,255,236,240,249,10,9,10,23,254,223,247,25,6,232,1,26,9,245,225,232,24,49,6,217,253,41,251,214,247,23,13,253,0,14,254,226,251,39,13,233,245,255,4,14,253,234,253,24,30,247,222,254,27,3,230,252,15,3,255,11,9,240,237,11,25,4,235,243,19,7,238,2,29,6,227,232,13,25,247,241,21,12,224,237,28,29,238,228,25,43,240,200,242,48,27,229,0,27,244,224,4,25,12,251,249,2,248,238,7,15,2,10,2,240,237,237,16,53,6,224,238,12,34,3,204,225,33,47,6,229,237,13,15,247,239,253,10,17,9,246,244,6,1,234,4,44,8,210,228,32,46,246,216,255,23,1,247,249,6,24,8,227,233,18,18,248,249,10,13,3,0,251,238,249,14,12,255,242,4,21,244,229,249,17,29,6,244,255,3,250,6,2,238,1,23,253,235,245,22,44,250,197,238,46,36,234,201,0,62,20,220,225,10,40,5,222,251,21,13,236,215,15,55,4,215,235,15,27,2,251,23,0,206,239,27,17,2,14,15,245,214,251,29,13,5,246,232,255,3,1,19,13,245,251,8,6,251,236,247,27,18,245,245,8,7,238,232,19,34,15,0,250,241,217,224,30,65,7,214,234,21,28,247,228,1,25,12,238,227,0,15,9,16,14,232,226,6,27,22,245,223,7,30,242,218,4,52,30,223,227,9,0,250,18,19,244,239,2,249,247,25,43,246,202,238,39,32,235,223,4,32,9,220,238,47,39,213,199,43,76,223,168,250,75,34,215,235,31,12,230,246,18,16,0,228,231,22,31,249,245,0,0,9,11,242,252,13,246,251,11,0,0,0,248,14,23,239,238,0,3,14,0,236,1,0,0,20,17,235,221,23,46,243,213,16,55,247,182,242,73,40,218,216,18,31,241,226,2,19,10,247,255,22,6,220,230,27,22,236,4,32,11,233,224,0,24,254,247,15,14,248,241,252,4,4,3,2,0,8,2,247,248,0,16,12,240,240,9,23,10,230,231,22,23,244,238,0,17,11,232,254,23,0,1,254,212,252,53,26,254,235,208,254,46,23,248,234,238,15,12,243,4,252,240,33,34,234,227,0,12,247,249,19,16,244,245,8,3,251,7,0,246,15,8,229,243,8,26,34,0,212,224,27,40,248,218,251,36,15,228,235,23,11,233,1,31,9,245,225,229,23,42,13,240,232,253,21,252,216,3,61,33,216,190,246,50,41,1,232,237,17,27,240,203,244,63,49,232,207,254,28,10,249,237,235,21,34,247,217,0,35,14,237,231,4,19,0,0,17,248,224,254,50,18,200,218,34,44,0,238,249,9,7,255,245,0,10,250,245,27,30,221,199,14,61,24,227,227,17,3,210,255,44,18,236,233,31,47,207,161,11,104,43,230,223,226,244,4,20,25,20,2,244,236,244,244,0,16,26,21,248,217,224,11,55,25,220,221,13,22,239,229,12,45,11,223,247,17,0,252,244,254,21,14,248,225,243,33,15,234,255,31,17,223,223,11,15,255,9,7,8,2,236,224,3,47,25,246,228,253,30,236,191,12,66,26,255,217,222,36,23,216,245,26,28,13,209,201,35,61,251,225,17,39,222,184,3,81,17,173,237,94,37,205,217,3,32,19,235,241,9,241,240,30,16,250,20,4,218,240,31,11,218,225,27,54,11,216,234,22,12,252,9,7,240,241,9,2,244,17,17,246,241,255,14,5,242,5,10,244,255,21,244,220,0,43,40,229,206,3,38,9,240,240,12,7,241,11,9,239,0,20,5,249,238,10,24,245,239,16,14,245,232,239,30,43,252,231,244,245,12,17,1,255,242,247,0,1,34,23,200,223,53,34,218,205,21,84,7,169,218,57,62,221,177,26,98,251,173,233,60,62,209,181,49,67,212,201,10,52,26,216,225,41,12,212,3,45,0,228,230,252,23,11,11,20,218,209,26,42,0,241,234,4,39,2,218,245,31,26,240,219,246,36,36,246,219,246,26,24,254,216,226,38,71,250,191,237,46,22,212,233,40,17,239,1,5,234,230,14,50,252,212,11,25,236,239,18,37,8,223,215,17,38,0,0,15,228,219,11,32,20,9,245,229,1,12,252,248,0,18,14,232,224,13,37,15,248,229,243,15,15,247,231,6,54,250,182,246,77,32,210,224,39,14,197,251,74,20,212,215,252,46,20,242,11,11,234,237,252,255,30,27,227,225,29,6,227,3,21,3,251,244,5,8,254,9,16,241,206,255,62,20,227,238,10,8,240,238,38,37,213,212,25,42,20,242,202,238,46,32,233,226,4,46,38,205,187,26,68,13,221,219,15,35,252,223,230,9,43,16,244,0,249,212,246,27,22,24,16,222,220,3,32,38,246,206,255,27,239,0,35,15,254,225,215,12,39,12,1,255,239,254,13,245,243,13,20,248,221,8,55,11,197,227,32,32,4,238,235,5,29,11,231,240,13,7,244,245,9,27,8,233,233,16,6,229,16,64,1,197,228,27,16,237,6,27,0,245,4,10,1,226,233,36,38,3,233,211,251,57,19,211,235,30,14,234,10,15,233,243,28,11,237,229,248,24,21,3,12,2,232,221,255,45,12,242,14,11,219,218,21,37,250,11,37,216,181,22,95,18,185,207,37,47,242,223,9,22,0,253,253,229,242,37,40,242,222,249,26,2,210,248,69,21,216,245,9,253,244,251,31,27,234,226,6,32,252,217,240,35,31,246,236,22,24,239,231,238,249,47,30,212,225,25,33,2,212,219,65,81,231,158,238,69,31,205,239,28,12,238,240,26,27,219,248,56,239,158,239,101,75,197,176,43,83,223,180,8,79,7,189,233,39,29,227,217,42,48,204,236,74,32,185,188,25,64,243,231,27,12,223,242,20,24,3,243,6,10,212,203,30,77,22,203,211,30,55,244,203,251,61,28,204,207,17,46,5,238,2,1,240,0,23,13,252,239,234,0,26,2,241,12,16,241,230,6,69,25,176,195,49,68,246,201,2,61,1,185,219,28,50,37,248,216,227,20,11,228,255,70,26,192,204,38,46,224,227,53,37,202,200,31,67,6,185,224,65,58,206,189,27,46,245,240,19,18,241,220,249,22,28,24,239,226,0,17,250,229,3,36,24,237,226,238,9,32,20,233,239,24,6,226,254,23,24,242,207,4,89,12,166,200,30,64,30,213,225,39,17,220,239,33,37,248,203,237,53,21,214,252,32,16,236,212,245,58,45,224,212,12,33,226,194,18,91,21,184,230,54,7,202,248,51,44,246,174,219,79,53,208,224,24,33,4,216,235,46,33,233,232,233,250,32,43,6,192,206,56,55,212,225,33,30,246,216,251,35,19,234,198,248,105,50,156,177,81,103,213,130,5,114,12,179,241,59,32,216,200,26,69,242,198,14,46,244,209,253,59,27,201,215,23,33,25,242,210,2,35,249,233,17,37,2,222,209,2,54,28,221,202,12,70,14,199,248,60,253,174,253,83,32,207,234,22,250,236,22,30,237,213,15,72,4,182,238,48,10,215,233,24,56,13,216,239,251,236,252,29,46,0,204,247,37,12,244,238,238,248,20,67,36,192,171,6,84,35,187,222,85,46,175,186,52,92,255,170,218,53,32,233,237,25,25,230,216,2,35,36,229,202,16,51,250,208,244,40,58,2,228,0,238,192,243,56,49,249,217,4,46,245,214,5,43,16,216,220,28,27,250,246,1,4,235,239,60,52,197,189,25,46,252,231,20,51,230,155,243,96,48,196,207,33,70,0,180,224,52,31,248,14,246,212,10,38,2,223,216,43,76,230,201,8,38,3,204,199,45,75,11,229,228,5,6,218,255,62,31,219,191,240,63,42,224,214,0,37,8,236,33,38,202,217,40,14,211,0,76,34,176,194,53,52,227,215,28,55,242,192,237,35,42,253,222,1,36,20,232,215,18,29,198,209,53,87,13,171,178,35,92,16,207,222,27,28,222,245,58,18,202,218,30,46,8,246,251,246,230,237,8,25,22,3,242,248,0,244,252,255,21,25,242,229,40,16,173,225,87,61,217,186,242,27,10,23,34,242,204,1,67,14,165,220,89,40,206,220,25,56,253,195,251,37,254,225,254,26,11,250,224,0,49,11,208,246,39,32,245,204,228,58,42,205,214,34,56,11,214,228,34,17,221,239,36,8,207,229,47,35,241,236,246,13,19,250,0,15,245,217,234,24,44,17,224,251,51,8,200,217,28,53,6,220,248,12,250,248,6,19,0,247,6,1,238,255,35,19,221,222,16,15,249,17,24,242,204,243,45,39,249,218,244,43,253,211,0,30,6,247,246,30,25,218,211,20,58,8,209,242,15,10,12,247,0,30,0,242,254,242,244,14,17,254,223,244,48,23,224,239,19,31,240,206,6,41,4,231,233,12,30,0,224,249,32,33,0,220,225,18,38,255,224,244,32,21,226,234,33,38,246,218,243,36,13,222,231,11,40,14,219,236,38,29,232,233,16,14,231,233,32,33,223,213,26,57,0,218,242,6,0,254,253,8,11,0,247,252,11,5,2,7,250,240,245,16,30,2,234,244,245,9,33,11,242,246,3,6,249,243,15,14,227,239,25,21,252,242,0,13,253,239,0,21,7,239,245,2,9,13,247,252,252,251,20,14,244,239,250,12,25,0,211,252,54,11,228,251,11,0,238,236,31,41,232,233,12,0,244,250,11,39,6,233,253,251,227,241,27,44,13,240,233,224,248,35,33,10,239,219,243,20,17,15,13,245,228,227,6,44,27,243,230,237,252,13,14,2,6,6,252,5,4,249,251,249,252,14,0,243,3,15,5,253,249,255,5,14,5,239,234,252,19,16,255,236,239,11,30,18,254,238,251,0,246,0,6,11,14,248,242,255,1,16,8,249,8,0,233,241,9,12,6,1,254,253,252,254,14,10,249,7,11,222,222,22,34,6,247,248,5,1,243,7,13,0,3,252,244,0,9,2,5,5,244,243,4,5,3,6,253,253,5,0,254,1,3,9,9,248,245,0,255,1,2,182,7,69,0,0,7,18,244,226,0,8,237,247,12,250,247,255,237,242,6,18,0,235,225,244,23,11,246,247,242,237,247,14,21,244,222,239,10,8,246,255,251,239,1,3,244,248,0,251,253,251,237,8,22,229,226,11,9,253,240,247,10,251,236,255,15,241,224,16,24,229,225,17,10,227,2,12,240,240,255,6,2,244,246,249,248,11,0,235,245,3,1,248,3,253,241,2,250,238,0,8,4,247,238,243,7,14,242,248,6,243,232,8,20,254,234,250,0,233,251,35,7,202,238,28,5,239,0,0,230,242,27,2,234,4,253,215,3,53,246,208,252,10,243,255,19,5,244,228,233,4,22,13,243,228,239,9,20,245,232,0,2,242,0,21,235,220,22,22,225,240,18,253,232,5,15,238,235,15,6,235,239,13,12,240,231,255,19,2,230,251,255,241,10,3,252,8,245,215,255,40,5,223,237,7,3,254,15,253,217,237,11,22,12,235,242,4,233,229,27,32,245,233,242,242,250,30,20,228,229,4,1,244,6,14,246,228,255,13,0,249,252,248,230,249,42,12,213,234,15,4,250,253,8,255,224,241,24,21,234,227,13,16,229,245,21,253,237,240,248,12,25,1,225,229,0,14,9,9,234,241,2,248,12,21,238,211,252,34,19,226,247,17,242,226,18,38,239,227,253,4,5,9,255,240,247,246,250,22,15,243,237,244,0,7,2,254,249,255,249,245,9,8,252,233,244,8,9,1,252,251,247,244,3,17,253,233,248,6,2,5,245,238,14,14,230,242,17,250,238,14,18,253,229,233,4,24,7,227,0,19,241,231,18,17,240,237,8,10,252,249,246,250,7,9,237,251,26,246,225,253,4,252,251,0,29,16,212,230,36,24,212,231,38,15,224,241,10,252,8,23,247,227,222,0,53,31,219,215,253,13,252,251,19,10,235,226,249,16,9,0,243,249,10,251,235,5,21,245,230,247,15,26,253,213,235,23,20,235,235,22,2,224,9,21,232,238,22,10,235,239,19,19,236,228,7,5,242,14,34,246,208,2,25,246,248,6,253,249,0,11,247,236,3,3,249,0,3,249,235,255,38,16,217,219,17,19,237,4,27,244,224,0,11,249,4,18,246,222,252,16,13,242,229,16,28,229,219,17,23,241,240,7,11,246,249,11,255,229,252,18,10,239,227,6,30,3,228,235,11,17,0,243,248,8,255,240,249,26,13,217,234,10,12,8,12,3,225,234,14,2,252,23,6,224,229,5,28,3,227,248,21,3,241,245,9,244,242,27,18,231,243,4,240,250,37,7,226,240,254,15,0,233,10,30,255,234,252,7,250,241,13,21,240,235,6,6,240,0,13,4,242,239,5,0,240,6,12,4,237,212,27,50,228,205,20,48,225,196,26,55,237,211,0,14,247,246,14,15,246,244,236,230,5,42,17,237,226,242,16,16,1,8,243,201,239,43,62,251,201,233,0,245,253,49,41,244,176,191,42,44,1,240,238,240,234,16,64,3,212,11,4,227,7,23,17,246,223,238,11,25,251,229,255,18,0,250,245,241,7,1,248,4,243,1,24,236,218,251,30,24,229,246,27,215,211,54,51,245,233,251,255,240,15,29,0,228,228,0,13,248,5,31,243,196,242,47,18,241,24,250,191,245,58,21,217,248,21,240,245,1,9,1,233,245,22,24,240,216,246,20,8,230,0,46,35,196,169,1,54,45,21,233,202,220,9,44,21,214,240,34,245,196,23,80,0,151,233,88,22,219,245,9,253,249,2,21,10,232,243,20,245,224,14,50,12,204,229,31,18,245,14,247,215,238,50,48,249,194,217,0,27,36,5,221,235,4,5,244,254,32,26,221,187,254,55,67,235,155,240,48,10,241,21,37,214,176,9,94,11,193,220,19,35,26,223,212,13,25,14,230,220,14,32,245,243,252,11,0,216,5,46,16,221,212,25,47,218,199,11,20,36,43,234,181,195,8,86,46,242,236,248,233,190,252,100,49,206,181,237,35,32,239,250,25,251,216,253,43,13,227,209,252,45,32,240,225,226,242,12,39,45,231,215,235,220,252,78,48,219,236,246,245,18,14,16,1,228,253,25,10,231,219,13,51,254,233,242,236,250,50,48,222,197,217,247,25,57,49,233,190,233,6,246,8,24,36,5,224,0,11,208,183,22,90,34,234,0,238,176,183,38,113,95,243,130,194,11,5,38,68,30,207,200,246,245,234,24,32,35,44,230,179,199,228,21,89,86,255,143,199,9,4,11,61,253,208,252,39,19,168,173,60,120,29,173,175,235,16,73,66,219,177,233,12,36,5,230,8,13,242,252,243,248,14,2,254,4,253,244,225,32,68,226,181,236,26,44,54,238,167,200,84,91,213,157,236,57,12,243,41,42,213,163,206,53,69,26,2,234,179,206,33,78,29,194,228,31,243,210,50,46,233,185,251,94,26,177,207,32,34,2,12,11,245,203,210,0,48,105,30,134,139,19,68,46,11,6,224,216,232,26,39,228,7,36,15,227,182,217,51,45,31,9,198,214,5,6,15,15,254,30,28,194,168,31,76,33,203,226,41,4,238,248,250,239,18,20,253,9,22,231,187,240,59,66,246,188,217,6,35,24,7,0,232,217,240,22,54,3,231,3,0,236,224,250,62,8,213,25,24,230,218,252,2,232,11,87,46,179,151,253,65,16,234,54,65,200,136,216,60,80,19,252,206,181,255,93,69,184,189,33,29,187,220,100,52,183,199,27,10,226,9,56,15,196,216,18,25,3,255,0,30,13,192,221,34,36,238,246,45,8,167,226,70,26,189,217,98,77,177,134,4,72,13,244,26,29,210,171,249,70,38,15,0,222,208,235,7,8,34,36,10,244,209,207,7,31,14,253,254,1,27,5,194,223,28,48,18,10,246,174,174,38,112,60,231,161,206,251,241,23,77,50,229,208,188,236,37,24,252,22,31,245,210,212,1,15,237,4,68,50,188,153,224,41,63,43,22,245,179,178,237,52,82,24,236,228,216,234,238,33,97,10,172,199,24,39,3,246,244,247,246,240,255,20,7,232,233,253,28,4,246,4,242,232,235,22,46,13,214,184,241,36,31,4,7,224,190,239,53,46,8,223,213,243,10,26,9,231,240,246,243,25,50,3,213,186,223,34,61,17,241,215,233,4,248,5,19,5,232,231,10,6,253,255,250,237,240,7,33,13,236,195,223,42,18,238,8,11,221,195,246,59,28,246,240,0,238,195,0,59,7,238,4,0,227,203,16,57,4,210,240,10,243,245,2,0,255,13,20,238,207,241,20,1,10,38,24,223,189,229,19,28,34,31,222,197,248,42,15,229,14,20,240,226,237,5,20,10,0,0,236,240,0,232,247,41,39,243,208,226,25,15,238,4,4,3,244,242,14,19,2,226,3,29,233,219,251,36,15,236,4,26,234,213,245,11,15,1,13,12,242,221,233,35,39,236,221,0,23,255,219,248,37,28,240,229,236,12,28,254,243,19,14,235,239,1,20,2,240,14,14,250,250,255,0,17,10,233,242,8,16,236,251,46,27,245,204,229,1,33,49,10,236,225,248,4,13,247,250,26,21,230,234,15,24,237,226,0,37,31,249,229,244,255,2,14,43,21,230,226,254,15,0,252,20,18,253,240,239,1,20,9,230,248,46,22,241,226,244,11,254,6,19,11,247,236,7,32,245,230,19,40,3,214,255,33,250,227,3,39,13,233,251,10,9,231,237,38,38,247,232,0,12,238,3,26,22,5,228,241,14,254,243,5,42,24,233,246,253,250,253,3,26,10,247,250,4,6,0,235,0,43,13,243,243,251,5,4,3,28,8,247,236,249,13,16,2,2,11,11,238,248,4,13,11,245,3,2,5,1,251,252,13,8,251,4,23,245,224,6,27,14,245,0,27,248,234,2,18,7,1,17,11,229,252,12,16,14,234,248,6,245,7,2,16,11,237,7,12,1,251,245,17,32,250,0,15,1,233,232,27,41,242,243,36,19,209,216,28,33,4,7,8,5,239,227,13,34,14,244,252,19,247,234,18,24,255,252,14,10,245,249,7,2,2,0,24,20,238,226,239,36,25,245,245,10,18,1,227,248,22,11,246,1,12,7,5,0,244,252,250,0,15,23,253,236,2,5,251,20,9,0,242,253,18,250,0,1,248,18,13,243,251,3,10,255,239,17,38,16,241,231,250,18,0,237,7,36,8,244,239,0,19,243,242,24,19,250,249,8,31,244,219,14,32,244,227,6,23,1,246,252,1,1,2,253,239,233,250,21,15,248,249,0,248,246,244,19,11,246,248,9,16,242,246,13,12,234,230,11,38,0,238,254,5,5,251,3,11,249,244,255,18,10,8,0,252,245,254,9,247,249,9,11,12,243,242,8,6,2,248,241,14,26,251,235,251,13,2,248,22,21,233,216,253,27,7,251,13,12,239,228,252,22,5,236,0,0,18,9,134,0,0,0,0,1,4,8,6,252,244,248,0,2,2,4,4,255,251,250,254,1,3,4,3,1,255,253,253,255,2,3,2,0,255,253,253,255,1,2,1,0,254,254,254,255,0,0,0,0,255,254,254,255,0,0,0,0,255,254,254,255,255,255,0,0,0,254,254,255,255,0,0,254,254,0,255,253,254,0,1,1,0,253,254,0,0,255,255,0,1,0,254,253,0,4,4,4,0,247,245,0,5,2,0,3,2,250,246,254,5,4,2,1,0,254,0,0,253,255,5,5,0,254,0,0,255,255,0,2,2,0,0,254,253,0,3,1,255,0,0,253,255,0,0,0,1,253,253,2,255,252,3,5,253,253,255,255,2,3,0,1,0,250,253,3,3,0,252,249,0,6,1,252,253,255,0,0,253,254,2,0,252,251,254,1,0,252,254,5,1,249,250,1,5,0,254,255,251,252,4,3,254,254,0,0,2,1,249,244,4,18,2,242,250,3,255,255,8,6,252,246,249,1,7,5,1,252,244,251,9,2,249,1,8,0,245,250,5,1,253,3,3,0,253,250,254,5,0,255,1,253,252,7,8,249,242,252,12,14,248,235,6,16,246,243,12,8,248,253,254,1,6,252,242,1,5,253,0,1,252,3,4,253,1,5,255,1,4,254,255,8,3,246,245,6,15,252,242,4,9,3,2,255,248,253,12,11,244,245,11,250,234,13,31,253,229,241,0,6,4,3,8,251,234,248,12,1,252,8,3,249,252,253,251,0,9,2,252,252,254,253,253,4,5,251,253,7,253,235,254,22,8,246,250,1,253,251,2,12,8,248,238,253,16,4,245,255,3,253,0,4,254,0,1,249,248,9,8,243,254,11,247,244,9,8,254,244,253,14,1,238,253,11,0,252,1,3,252,247,1,8,254,250,0,0,254,8,0,236,253,23,1,242,1,5,254,253,254,2,8,253,252,4,0,248,7,6,244,255,22,255,232,0,18,5,251,246,248,14,17,245,240,4,11,1,248,0,12,7,243,242,12,16,249,240,253,10,11,245,239,15,22,240,239,11,10,253,252,253,255,8,1,248,255,5,4,9,1,247,1,6,254,250,0,2,4,2,255,249,252,0,2,7,8,249,247,4,2,253,12,5,230,241,20,17,241,241,3,0,248,0,5,0,248,253,6,249,239,5,15,1,7,5,237,1,40,31,1,247,254,7,247,227,249,17,8,241,242,25,17,203,226,58,33,214,238,37,13,229,4,34,0,239,248,244,11,24,244,235,252,254,16,8,249,253,251,0,255,242,9,36,248,207,247,28,13,3,249,244,8,9,246,253,14,255,244,252,255,4,14,253,242,1,255,237,9,35,243,223,10,19,248,255,17,0,237,241,7,33,1,215,247,20,253,247,9,0,245,2,3,242,250,15,7,243,245,2,9,245,244,27,9,221,237,20,19,237,238,31,11,216,229,19,32,252,234,4,4,250,248,250,22,21,242,230,253,20,0,236,6,25,1,240,243,2,11,255,253,5,12,242,223,13,37,254,240,245,249,12,13,243,254,12,247,236,16,19,246,251,0,241,1,10,255,6,254,244,4,13,253,237,13,21,232,240,17,6,252,2,248,250,12,2,238,237,12,30,253,228,3,18,242,232,23,33,245,220,240,27,23,239,239,15,21,252,228,246,37,8,220,0,16,253,0,249,244,29,22,216,217,33,55,251,207,239,33,12,240,252,9,0,245,249,4,9,3,1,245,241,9,22,245,249,4,1,251,254,253,11,15,238,224,28,47,211,212,46,36,215,233,42,41,224,179,254,75,22,207,230,17,8,251,17,8,225,247,21,254,245,22,17,239,243,16,4,12,18,243,226,254,240,241,14,32,34,248,198,251,67,28,221,232,21,24,242,227,25,48,227,191,7,41,254,223,255,36,251,220,5,18,14,11,242,231,11,29,0,219,250,42,9,215,253,30,248,232,8,15,11,1,213,247,54,25,231,235,9,30,3,208,245,33,13,1,5,255,2,1,226,230,18,29,242,226,15,30,234,233,16,254,247,11,10,243,243,11,29,252,226,255,15,249,248,12,7,239,254,24,247,226,17,26,237,252,19,249,233,1,28,18,232,222,17,33,232,242,47,9,202,239,50,18,209,235,29,4,237,9,19,247,223,250,36,34,238,221,251,9,14,24,0,213,239,33,22,250,244,233,251,27,5,243,252,255,250,241,8,36,4,225,244,2,10,12,254,254,2,241,236,22,35,243,215,4,22,3,240,244,17,0,213,251,68,22,184,221,45,24,249,243,0,254,244,246,20,21,233,238,19,4,235,9,32,239,200,0,54,12,213,0,33,245,210,9,60,12,208,208,34,50,217,219,36,35,232,215,12,35,254,241,3,241,249,24,0,251,32,11,207,220,35,43,253,229,236,253,11,8,15,1,240,244,8,16,2,240,252,16,3,252,253,253,2,254,0,19,7,247,245,255,9,0,243,4,18,253,235,15,26,246,232,251,40,28,212,211,29,29,9,20,231,184,5,78,10,213,238,7,255,253,17,23,242,227,2,15,20,12,230,237,27,254,239,27,5,213,7,38,243,237,10,3,4,253,239,20,36,233,224,16,12,253,25,15,228,226,18,31,6,248,240,8,17,239,253,31,248,231,19,9,224,9,53,243,207,255,34,18,252,226,230,32,21,237,4,11,245,10,0,218,13,70,246,193,254,38,13,247,7,33,11,222,228,21,49,246,194,26,58,213,215,36,40,2,210,223,58,48,205,227,46,7,227,12,254,240,24,17,223,237,12,20,10,245,254,20,250,227,7,41,11,219,238,24,15,254,255,1,16,18,225,207,43,72,232,178,252,69,36,205,211,45,34,214,226,46,27,217,232,38,39,236,234,254,255,19,22,233,246,29,242,213,22,53,253,224,230,12,46,247,204,28,45,234,226,3,18,21,239,215,27,45,244,222,8,33,15,226,219,26,40,250,255,255,234,244,26,40,12,220,221,26,40,225,207,47,54,219,189,18,74,2,194,0,59,5,215,246,37,29,11,0,211,231,48,39,220,221,16,25,5,243,250,28,2,230,6,21,8,8,8,10,23,11,237,237,13,35,244,205,8,43,10,228,209,9,55,8,204,218,22,60,25,210,226,34,19,211,226,55,40,199,215,37,41,5,206,222,50,38,231,225,6,32,255,217,228,40,59,215,157,39,111,221,131,7,98,17,181,214,64,37,197,221,31,19,252,229,244,39,0,189,4,79,246,184,2,43,243,228,29,5,215,1,42,233,232,27,14,231,231,11,21,246,243,255,240,244,18,11,241,252,1,226,2,53,244,197,14,16,235,34,21,181,220,50,38,225,219,30,3,194,7,70,251,167,234,85,24,155,234,89,245,187,7,43,22,218,206,35,53,216,222,28,255,249,0,240,251,26,243,229,29,36,205,202,44,49,228,226,18,4,250,10,247,239,20,255,231,12,19,253,237,241,8,21,1,244,245,249,3,0,13,2,244,8,20,219,223,31,31,233,223,15,25,217,211,37,45,4,221,223,17,41,240,249,4,233,11,9,224,8,58,229,177,13,74,7,205,238,14,9,249,235,6,33,255,220,229,13,29,12,250,245,248,245,19,23,231,232,12,9,248,0,7,2,0,2,246,2,8,255,248,250,254,17,12,255,251,240,9,29,242,221,32,27,211,246,53,255,199,2,50,17,216,226,30,30,232,239,24,249,231,11,19,253,253,1,243,236,43,47,198,194,38,35,233,232,12,12,232,233,33,30,230,241,18,254,247,32,1,206,250,42,4,239,251,234,9,58,229,199,47,24,196,11,42,249,251,239,236,24,22,245,249,6,5,244,241,5,27,15,235,233,2,16,22,1,213,235,32,22,224,245,31,253,226,254,20,22,5,212,243,24,245,240,30,5,225,238,7,19,245,0,18,235,224,21,20,237,10,31,239,226,4,11,9,11,241,213,251,37,23,248,217,231,32,44,221,196,28,64,230,184,22,56,244,210,252,29,10,236,6,12,215,250,59,13,200,240,35,11,237,242,240,12,42,236,214,21,35,232,245,37,10,210,247,40,251,230,25,20,215,1,38,246,222,12,29,8,232,232,16,15,243,253,12,249,250,16,10,237,0,31,244,227,37,30,207,223,46,45,239,200,1,62,10,202,236,48,26,218,248,55,251,202,25,52,234,233,14,23,0,236,253,18,12,249,255,241,3,36,20,221,245,18,3,0,12,3,0,246,253,14,13,254,241,253,26,20,213,241,56,24,216,223,37,43,220,217,51,24,203,245,35,21,241,228,22,33,240,240,18,253,253,23,8,238,14,31,244,223,251,23,24,248,232,254,21,6,231,18,46,237,197,11,41,15,239,226,12,30,253,239,19,12,232,239,22,26,250,236,254,6,16,7,239,2,24,249,236,17,8,253,0,5,13,21,241,223,21,41,239,210,14,45,2,224,0,18,5,0,250,0,12,255,245,5,3,0,22,5,235,255,25,2,245,15,10,237,251,25,9,245,10,11,237,254,22,247,245,31,20,217,213,47,69,215,180,34,69,240,196,14,65,252,211,247,25,19,239,235,29,16,213,243,45,23,226,225,13,36,247,229,9,8,241,10,15,240,238,18,22,226,242,42,7,219,6,23,6,5,255,250,249,0,14,13,4,3,232,236,28,34,243,237,8,245,233,20,38,247,209,254,40,1,238,29,33,224,195,14,77,17,195,235,32,246,230,32,34,242,223,249,19,20,13,255,231,248,43,11,213,255,46,0,225,1,32,19,237,222,10,47,1,211,250,51,21,209,235,50,28,224,239,46,26,200,211,50,51,233,216,7,41,0,209,1,43,255,218,8,40,243,207,8,54,1,208,247,40,4,217,245,30,7,228,251,32,12,237,245,2,14,8,4,5,243,242,16,17,7,251,225,13,39,235,223,27,12,225,4,37,4,226,230,12,46,13,221,242,23,248,239,29,22,232,239,14,11,3,2,4,254,243,11,35,3,206,247,54,7,205,7,51,241,208,26,49,231,209,11,41,3,219,250,36,8,230,243,28,28,241,229,9,21,252,242,13,19,240,236,21,9,225,254,47,3,208,252,49,12,221,249,30,10,232,245,16,15,251,247,0,2,0,6,3,0,2,244,246,10,16,3,255,252,253,1,0,10,15,248,235,5,25,2,233,248,18,8,245,249,7,9,246,241,17,17,239,250,28,6,226,252,31,13,225,239,25,17,232,242,27,11,232,2,25,2,250,3,255,247,4,0,0,50,0,5,0,1,0,132,0,16,1,28,7,232,8,228,12,96,14,100,25,45,35,17,54,37,34,34,31,8,11,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,16,1,28,7,232,8,228,12,96,14,100,25,50,68,24,76,52,48,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,16,1,28,7,232,8,228,12,96,14,100,25,85,55,21,68,46,43,43,39,10,14,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,16,1,28,7,232,8,228,12,96,14,100,25,40,43,19,60,41,38,38,35,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,16,1,8,7,212,8,228,12,96,14,100,25,0,29,15,50,34,29,31,29,7,10,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,235,0,5,0,1,0,244,0,35,2,48,7,232,9,38,13,144,14,176,28,45,28,23,46,45,48,37,27,8,6,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,244,0,35,2,48,7,232,9,38,13,144,14,176,28,80,82,40,79,77,81,63,46,14,10,202,118,143,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,238,0,18,2,230,6,214,9,6,13,144,14,122,28,80,72,37,74,71,73,58,41,14,9,198,118,144,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,184,0,120,1,192,3,46,9,224,11,136,14,144,26,30,48,26,59,47,37,32,21,15,7,162,122,155,120,120,120,162,120,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,120,1,212,3,56,9,224,11,136,14,144,26,0,29,20,45,39,32,28,17,13,5,162,125,155,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,48,0,3,0,5,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,25,10,31,19,3,3,7,3,7,11,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,9,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,23,10,31,19,3,3,7,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,168,0,160,1,232,3,216,9,72,13,168,17,106,24,0,10,31,19,3,3,7,3,7,7,97,125,137,137,150,175,97,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,175,0,4,0,1,0,24,1,96,3,0,5,140,10,132,13,140,15,32,28,45,44,27,62,53,40,30,19,9,4,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,96,3,0,5,140,10,132,13,140,15,32,28,70,93,40,90,76,58,43,27,13,6,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,96,3,0,5,140,10,132,13,140,15,32,28,60,83,38,85,72,55,41,26,12,6,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,24,1,96,3,0,5,140,10,132,13,140,15,32,28,0,39,26,58,50,38,28,18,8,4,217,155,105,120,120,120,247,170,165,44,65,75,130,54,0,0,0,0,50,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,4,0,33,0,152,0,40,1,232,8,4,11,52,13,0,15,160,26,52,30,12,39,42,51,51,33,13,6,167,190,120,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,40,1,232,8,4,11,52,13,0,15,160,26,75,47,15,49,53,64,64,41,16,8,167,190,120,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,40,1,232,8,4,11,52,13,0,15,160,26,79,38,13,44,47,58,58,37,14,7,167,190,120,120,120,120,167,190,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,240,0,94,9,4,11,32,13,60,15,64,26,0,22,11,34,39,37,38,21,9,8,175,200,105,120,120,120,175,200,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,150,0,4,0,1,0,186,0,152,2,128,5,156,9,248,12,141,14,160,27,50,37,31,52,63,36,29,23,13,0,180,145,125,120,120,120,200,127,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,186,0,152,2,128,5,156,9,248,12,141,14,160,27,60,68,43,72,86,50,39,32,18,0,180,145,125,120,120,120,200,127,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,186,0,152,2,128,5,156,9,248,12,141,14,160,27,40,61,40,68,81,47,37,30,17,0,180,145,125,120,120,120,200,127,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,186,0,152,2,128,5,156,9,248,12,141,14,160,27,0,32,29,49,59,34,27,22,12,0,180,145,125,120,120,120,200,127,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,247,0,5,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,45,41,33,55,66,38,30,24,13,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,60,62,41,68,82,47,37,30,17,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,186,0,146,2,128,5,156,9,248,12,141,14,160,27,80,49,36,60,72,42,33,27,15,0,180,150,125,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,208,0,136,1,8,2,20,10,216,11,234,13,15,28,62,27,39,30,16,28,28,19,6,6,186,83,122,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,208,0,136,1,8,2,20,10,216,11,234,13,15,28,0,16,32,22,14,24,24,17,5,5,186,83,122,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,7,0,1,0,206,0,200,1,72,3,38,10,208,11,47,14,159,27,24,50,28,50,69,23,36,20,10,6,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,206,0,200,1,72,3,38,10,208,11,47,14,159,27,55,78,35,63,87,28,45,25,13,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,206,0,200,1,72,3,38,10,208,11,47,14,159,27,65,70,33,60,82,27,43,24,12,7,177,100,131,120,120,120,105,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,5,0,201,0,184,1,80,5,16,9,243,11,67,14,134,27,25,40,26,56,46,36,43,24,12,7,176,151,153,120,120,120,105,177,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,120,1,244,6,172,8,168,12,0,15,160,26,48,30,14,43,43,39,46,32,15,7,167,197,120,120,120,120,167,197,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,56,1,248,7,220,10,12,13,0,15,160,26,30,27,12,42,35,29,35,29,14,6,167,200,120,120,120,120,167,200,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,152,0,56,1,248,7,220,10,52,13,0,15,160,26,0,21,11,37,28,28,28,23,12,6,167,200,120,120,120,120,167,200,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,7,0,1,0,232,0,218,2,222,3,60,10,224,11,222,13,160,28,40,57,32,56,70,33,33,22,9,7,230,150,120,120,120,120,185,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,232,0,158,2,178,3,60,10,224,11,222,13,32,28,49,114,28,81,103,42,43,28,15,6,182,150,120,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,228,0,138,2,222,3,14,10,232,11,244,13,10,28,65,105,30,83,101,46,44,29,16,7,181,145,123,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,37,0,184,0,209,1,106,5,112,8,48,12,191,14,64,27,22,49,37,68,39,59,39,22,15,7,167,100,152,120,120,120,137,115,167,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,208,0,149,1,246,6,112,8,128,12,191,14,64,27,48,45,32,57,36,60,35,23,14,7,155,105,150,120,120,120,125,150,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,160,0,54,1,199,7,136,9,228,12,191,14,64,27,26,36,25,53,36,30,41,27,16,7,155,105,135,120,120,120,125,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,160,0,54,1,210,7,252,8,92,13,35,15,64,28,0,25,27,45,27,21,33,22,13,8,157,105,135,120,120,120,82,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,5,0,1,0,88,1,128,2,169,6,216,9,192,13,185,15,32,29,46,46,33,54,65,48,36,27,9,8,255,150,180,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,88,1,133,2,169,6,216,9,192,13,185,15,32,29,61,85,45,74,89,66,50,38,13,8,255,150,180,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,36,1,64,2,241,5,12,9,148,12,20,15,173,28,48,56,30,66,71,45,36,29,13,7,222,132,153,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,192,0,174,1,156,4,172,8,204,11,141,14,224,28,46,36,26,61,37,26,17,15,8,8,162,120,135,120,120,120,117,90,180,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,134,1,189,3,92,8,204,11,141,14,224,28,0,29,25,53,35,20,14,11,8,7,155,120,75,120,120,120,110,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,195,0,4,0,1,0,112,0,120,1,235,5,156,9,208,12,60,15,90,26,45,28,23,48,46,43,40,28,15,6,168,135,148,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,112,0,120,1,235,5,156,9,208,12,60,15,90,26,75,39,27,58,54,51,47,34,18,7,168,135,148,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,112,0,120,1,235,5,156,9,208,12,60,15,90,26,75,35,25,55,51,48,45,32,17,6,168,135,148,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,112,0,120,1,235,5,156,9,208,12,60,15,90,26,0,28,23,48,46,43,40,28,15,6,168,135,148,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,105,0,4,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,30,13,18,34,28,16,14,14,5,3,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,45,16,20,38,32,18,16,16,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,30,16,20,38,32,18,16,16,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,13,2,161,5,232,8,188,12,116,14,96,27,0,11,15,29,35,19,20,16,8,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,80,0,4,0,1,0,104,0,44,1,172,5,84,11,12,13,135,15,32,28,0,32,17,53,34,32,55,26,8,0,150,120,150,120,120,120,120,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,11,0,104,0,44,1,172,5,84,11,12,13,135,15,32,28,40,23,14,45,29,27,47,22,7,0,150,120,150,120,120,120,120,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,9,0,136,0,184,1,48,6,84,11,92,13,210,15,32,28,40,14,13,41,31,28,27,13,5,0,150,105,150,120,120,120,120,45,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,104,1,152,8,84,11,32,13,210,15,32,28,0,76,20,78,80,78,76,34,10,0,150,150,120,120,120,120,120,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,108,0,5,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,70,18,46,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,19,47,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,216,0,184,1,169,6,96,9,128,12,66,14,192,27,9,17,28,40,36,33,32,19,7,0,120,105,120,120,120,120,30,105,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,212,0,179,1,155,7,96,9,228,12,216,14,160,27,29,15,25,37,34,40,30,18,6,0,120,105,180,120,120,120,24,96,99,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,164,1,141,8,0,10,32,13,110,15,64,27,0,95,63,93,97,97,76,45,16,0,120,105,120,120,120,120,15,75,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,103,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,40,14,48,29,21,13,11,13,7,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,236,0,144,1,12,7,236,9,172,13,160,15,0,27,15,12,46,28,22,16,14,16,10,0,120,60,90,120,120,120,30,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,236,0,164,1,122,7,80,10,172,13,235,15,128,27,49,9,28,24,31,32,28,18,6,0,120,75,90,120,120,120,30,105,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,204,0,144,1,97,8,20,10,92,13,135,15,128,27,0,66,51,66,65,81,81,52,12,0,120,105,150,120,120,120,45,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,140,0,3,0,1,0,148,0,128,1,32,8,60,10,42,13,50,15,96,25,50,6,8,21,26,24,23,14,6,2,160,92,120,143,120,120,130,95,120,44,45,70,130,52,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,128,1,32,8,60,10,42,13,50,15,96,25,90,7,8,22,28,25,24,15,6,2,160,92,120,143,120,120,130,95,120,44,45,70,130,54,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,128,1,32,8,60,10,42,13,50,15,96,25,0,1,4,11,14,12,12,7,3,1,160,92,120,143,120,120,130,95,120,44,45,70,130,46,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,175,0,4,0,1,0,176,0,240,1,204,3,196,9,104,12,166,14,204,26,45,50,29,56,64,39,34,24,17,5,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,240,1,204,3,196,9,104,12,166,14,204,26,70,109,43,83,95,57,51,36,26,8,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,240,1,204,3,196,9,104,12,166,14,204,26,60,88,39,75,85,51,46,32,23,7,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,240,1,204,3,196,9,104,12,166,14,204,26,0,44,27,53,60,36,32,23,16,5,164,141,150,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,235,0,6,0,1,0,176,0,72,2,120,5,156,9,188,12,116,14,88,27,45,49,33,60,69,41,39,33,17,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,72,2,120,5,156,9,188,12,116,14,88,27,60,76,41,75,87,51,49,41,21,8,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,72,2,100,5,156,9,188,12,116,14,88,27,40,61,37,67,78,46,44,37,19,7,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,184,1,66,4,106,9,228,12,216,14,244,26,40,53,20,68,59,32,32,33,15,7,172,130,122,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,92,1,32,3,246,8,172,12,8,15,65,27,50,47,10,68,42,22,20,26,11,8,170,123,106,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,176,0,92,1,32,3,246,8,172,12,8,15,65,27,0,32,8,57,35,18,17,22,9,6,170,123,106,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,120,0,7,0,33,0,152,0,32,1,224,8,4,11,52,13,0,15,160,26,52,43,6,65,57,58,58,28,13,6,175,105,120,120,120,120,175,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,50,69,9,81,72,72,73,35,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,40,50,8,69,61,61,62,30,14,7,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,24,1,232,8,4,11,52,13,0,15,160,26,30,44,7,65,57,58,58,28,13,6,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,24,1,252,8,4,11,52,13,0,15,160,26,48,62,9,77,68,69,69,33,16,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,24,1,252,8,4,11,12,13,216,14,64,26,60,44,9,58,58,61,62,33,11,8,167,105,120,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,84,0,200,0,94,9,4,11,32,13,60,15,64,26,0,21,7,40,41,38,39,22,9,8,175,105,105,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,250,0,5,0,1,0,141,0,80,1,244,6,236,9,32,13,160,15,104,25,45,40,9,60,53,53,51,31,11,9,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,141,0,80,1,244,6,236,9,32,13,160,15,104,25,80,64,12,76,68,68,65,39,15,12,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,143,0,66,1,116,7,51,10,27,13,109,15,159,25,80,48,10,64,59,60,58,34,12,10,172,113,125,121,121,129,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,24,1,232,8,4,11,12,13,216,14,64,26,45,39,9,55,55,58,59,31,11,7,167,105,120,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,200,0,94,9,4,11,32,13,60,15,64,26,0,22,8,41,41,39,40,23,10,8,175,105,105,120,120,120,175,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,84,0,104,1,180,5,212,8,148,12,41,14,64,26,42,51,17,72,57,40,40,37,11,8,162,150,135,120,120,120,102,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,104,1,140,5,212,8,148,12,116,14,192,25,40,79,21,87,82,73,57,52,18,8,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,88,0,96,1,120,5,172,8,148,12,116,14,192,25,50,74,22,89,68,70,52,50,20,8,167,120,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,109,0,64,1,113,4,187,8,23,12,121,14,244,25,67,49,11,68,57,41,37,33,15,8,165,135,138,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,34,1,255,3,172,8,28,12,116,14,192,25,0,30,16,57,35,17,20,20,10,8,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,255,0,5,0,1,0,31,1,64,2,255,6,225,9,104,13,15,15,224,28,45,37,28,51,55,50,39,28,9,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,22,1,160,2,204,6,255,9,124,13,33,15,156,28,70,58,37,68,71,61,48,35,12,7,245,138,159,124,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,242,0,97,3,196,5,122,10,204,13,109,15,140,27,80,78,43,84,81,56,44,31,14,6,250,166,163,142,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,236,0,128,3,160,5,140,10,216,13,120,15,102,27,60,83,41,81,77,51,41,29,13,5,251,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,236,0,128,3,160,5,140,10,216,13,120,15,102,27,0,50,32,63,60,40,32,22,10,4,251,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,235,0,6,0,1,0,0,1,43,2,64,6,243,9,229,12,226,14,112,28,45,37,27,53,51,46,38,25,10,5,222,133,154,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,19,0,0,1,43,2,241,5,243,9,229,12,226,14,112,28,40,46,31,59,57,52,42,28,11,6,222,133,154,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,162,0,16,2,16,4,216,9,58,12,176,14,121,27,40,48,30,55,67,39,35,26,16,6,169,143,139,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,162,0,16,2,16,4,216,9,58,12,176,14,121,27,70,54,32,58,71,41,37,27,16,6,169,143,139,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,162,0,16,2,16,4,216,9,58,12,176,14,121,27,40,60,34,62,74,43,39,28,17,6,169,143,139,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,162,0,16,2,16,4,216,9,58,12,176,14,121,27,0,38,27,49,59,34,31,23,14,5,169,143,139,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,255,0,5,0,1,0,243,0,200,1,8,7,216,9,28,13,170,14,164,28,45,36,23,48,54,53,41,30,9,6,214,120,143,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,237,0,196,1,174,6,202,9,27,13,183,14,116,28,70,57,27,62,67,63,49,38,12,8,210,120,140,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,183,0,160,1,123,3,71,9,14,13,46,15,193,26,80,82,23,87,71,32,30,40,15,9,181,124,113,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,60,64,3,86,50,25,25,36,14,9,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,88,1,32,3,56,9,12,13,60,15,144,26,0,31,2,60,35,17,17,25,10,6,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,255,0,5,0,1,0,168,0,16,2,112,3,88,10,104,11,141,14,32,27,45,52,20,51,63,38,35,17,13,5,167,135,150,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,195,0,156,2,68,4,108,10,97,12,235,14,60,27,70,83,34,75,82,52,45,26,16,6,201,149,155,130,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,231,0,105,3,125,5,136,10,178,13,105,15,97,27,80,78,43,85,82,54,44,30,14,5,246,167,162,143,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,236,0,128,3,160,5,140,10,216,13,120,15,102,27,60,83,41,81,77,51,41,29,13,5,251,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,236,0,128,3,160,5,140,10,216,13,120,15,102,27,0,56,34,67,63,42,34,23,11,4,251,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,20,0,3,0,5,0,136,0,216,1,64,6,32,8,128,12,100,15,124,21,20,14,3,36,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,136,0,216,1,64,6,32,8,128,12,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,216,1,64,6,32,8,128,12,100,15,124,21,0,11,3,32,21,7,3,7,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,20,0,3,0,5,0,136,0,8,2,120,5,148,7,128,12,100,15,124,21,20,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,136,0,8,2,120,5,148,7,128,12,100,15,124,21,0,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,8,2,120,5,148,7,128,12,100,15,124,21,0,4,4,20,16,8,4,8,0,0,200,212,187,187,205,175,200,212,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,140,0,4,0,1,0,56,1,73,3,129,5,246,9,86,13,211,14,92,28,50,26,22,47,48,30,24,17,7,3,211,144,124,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,56,1,73,3,129,5,246,9,86,13,211,14,92,28,25,91,41,88,89,56,45,32,13,7,211,144,124,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,56,1,73,3,129,5,246,9,86,13,211,14,92,28,65,87,40,86,87,54,44,31,13,6,211,144,124,120,120,120,237,165,165,44,45,70,130,57,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,56,1,73,3,129,5,246,9,86,13,211,14,92,28,0,27,23,48,49,30,24,17,7,3,211,144,124,120,120,120,237,165,165,44,45,70,130,56,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,8,1,23,0,255,2,250,255,251,0,253,255,253,252,1,2,2,1,253,8,5,6,7,14,13,12,17,13,16,5,164,135,240,0,35,45,3,43,36,3,19,0,247,11,247,252,12,228,242,255,240,250,251,3,3,244,8,13,1,248,3,3,2,25,11,0,16,22,6,22,212,179,243,250,37,8,255,19,4,12,254,239,7,240,219,252,239,251,42,29,42,28,15,28,249,214,226,225,240,240,240,15,9,245,23,14,4,246,238,11,21,16,5,249,251,23,6,9,5,248,241,251,246,255,227,234,255,5,20,13,0,253,252,247,42,12,247,248,6,30,30,0,3,18,191,220,208,229,20,255,12,19,5,53,25,245,19,215,7,47,251,12,213,238,248,247,4,229,37,250,228,246,12,20,37,3,230,33,231,223,243,40,76,233,219,36,242,246,242,41,16,230,220,215,0,21,251,224,251,54,217,217,22,40,26,42,59,27,220,15,72,244,207,167,168,209,3,239,12,33,63,6,218,45,55,222,243,44,11,241,23,29,247,250,16,193,238,25,218,204,251,37,16,218,24,18,213,50,43,230,3,22,230,243,4,43,25,243,18,232,222,32,6,226,228,242,229,212,170,0,4,0,1,0,200,0,80,2,44,6,156,9,52,13,7,15,8,28,50,48,32,58,69,48,39,29,13,6,221,163,157,120,120,120,150,163,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,80,2,44,6,156,9,52,13,7,15,8,28,80,84,42,77,90,63,52,38,17,8,221,163,157,120,120,120,150,163,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,80,2,44,6,156,9,52,13,7,15,8,28,40,43,30,55,65,45,37,27,12,5,221,163,157,120,120,120,150,163,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,80,2,44,6,156,9,52,13,7,15,8,28,0,29,25,46,50,38,31,23,10,4,221,163,157,120,120,120,150,163,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,50,0,5,0,1,0,132,0,24,1,12,8,36,9,228,12,96,14,100,25,45,35,17,54,37,31,34,31,8,11,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,24,1,188,7,36,9,228,12,96,14,100,25,50,68,24,76,51,44,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,24,1,168,7,36,9,228,12,96,14,100,25,85,55,21,68,46,39,43,39,10,14,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,188,7,36,9,228,12,96,14,100,25,40,43,19,60,41,35,38,35,9,12,165,90,135,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,188,7,36,9,228,12,96,14,100,25,0,29,15,50,34,29,31,29,7,10,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,175,0,4,0,1,0,144,0,128,1,128,7,176,9,248,12,0,15,160,26,45,42,23,60,54,54,54,26,12,6,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,144,0,128,1,128,7,176,9,248,12,0,15,160,26,70,81,32,84,76,76,75,36,17,8,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,144,0,128,1,128,7,176,9,248,12,0,15,160,26,60,65,28,75,68,68,67,32,15,7,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,128,1,128,7,136,9,32,13,0,15,160,26,0,35,19,56,50,50,51,24,11,5,167,105,120,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,135,0,120,1,4,6,212,8,72,13,0,15,50,25,45,40,14,59,47,56,44,26,10,5,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,104,1,4,6,172,8,72,13,0,15,50,25,70,73,20,80,64,68,60,36,13,8,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,135,0,104,1,4,6,192,8,72,13,0,15,50,25,60,59,18,72,57,61,54,32,12,7,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,135,0,104,1,24,6,232,8,72,13,0,15,50,25,0,30,12,51,40,43,38,23,8,5,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,115,0,3,0,1,0,160,0,75,2,220,5,252,8,148,12,165,15,199,27,45,53,37,66,63,47,41,27,15,6,171,143,165,121,122,125,171,120,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,160,0,75,2,220,5,252,8,148,12,165,15,199,27,70,85,48,84,80,60,52,34,20,8,171,143,165,121,122,125,171,120,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,75,2,220,5,252,8,148,12,165,15,199,27,0,68,43,75,72,54,46,31,18,7,171,143,165,121,122,125,171,120,172,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,205,0,4,0,1,0,248,0,152,2,232,3,160,10,216,12,109,14,87,27,45,50,25,54,60,33,35,31,9,5,167,148,135,120,120,120,167,145,131,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,248,0,152,2,232,3,160,10,216,12,109,14,87,27,90,91,34,73,81,45,47,42,12,7,167,148,135,120,120,120,167,145,131,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,248,0,144,2,252,3,140,10,216,12,109,14,87,27,70,73,31,67,74,41,43,38,11,6,167,148,135,120,120,120,167,145,131,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,248,0,144,2,16,4,80,10,168,12,109,14,87,27,0,46,25,54,60,33,35,31,9,5,167,148,135,120,120,120,167,145,131,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,67,8,23,0,1,5,2,0,254,252,253,251,251,248,247,250,1,12,15,13,5,0,248,241,243,249,255,0,8,22,34,38,35,30,23,10,1,251,238,223,220,231,239,243,247,253,251,246,252,0,249,238,235,237,242,254,4,0,243,239,245,249,253,1,10,18,21,22,24,34,43,47,42,36,32,30,25,13,2,254,254,0,11,28,37,34,33,32,24,15,9,5,249,242,245,242,219,197,197,210,219,221,226,244,17,48,58,44,25,20,20,7,242,225,224,238,2,14,12,20,40,58,48,27,18,23,21,0,231,213,204,203,210,214,212,213,234,1,6,252,251,1,250,231,217,220,230,244,254,0,253,4,22,30,21,10,6,10,13,11,1,249,255,8,9,252,244,251,13,29,33,32,31,38,44,39,24,14,11,4,249,236,231,236,244,253,0,249,242,249,6,5,246,230,230,241,248,248,248,247,248,251,251,241,230,227,231,237,235,234,234,239,245,250,246,235,234,243,246,237,232,239,249,0,253,248,242,242,249,251,243,232,238,250,5,8,8,13,25,34,31,20,10,14,26,31,20,14,22,30,28,19,20,21,11,3,12,26,25,14,9,12,18,13,5,254,249,243,238,238,239,244,241,238,243,2,10,12,15,19,15,3,250,248,248,239,230,223,227,241,2,12,24,45,60,61,52,36,21,13,13,10,2,0,5,20,30,37,29,14,2,254,251,246,248,242,228,217,210,203,198,211,234,250,0,1,11,14,11,5,253,243,238,248,1,11,18,23,20,11,6,11,14,2,245,246,2,11,12,5,8,19,31,33,22,2,247,251,249,229,213,214,228,237,239,240,243,255,12,23,9,240,223,222,230,236,237,233,242,2,16,21,24,31,45,54,46,25,10,5,0,237,208,195,202,221,234,243,251,8,18,21,20,15,0,251,253,237,205,193,212,228,236,247,16,42,54,56,44,24,8,255,243,223,219,231,246,6,19,35,38,39,42,43,25,251,238,238,236,231,234,242,246,254,16,34,43,36,29,17,4,0,2,2,252,254,0,6,8,13,13,3,242,230,231,238,244,240,223,213,226,243,243,226,222,234,252,8,16,18,14,15,17,11,252,244,249,253,251,253,5,22,31,40,41,31,19,24,42,37,18,14,30,31,9,253,5,11,4,250,245,241,241,248,246,240,236,238,237,233,231,221,208,213,231,236,211,206,234,9,26,32,36,25,30,52,62,39,6,254,254,254,0,5,9,11,26,35,34,33,35,32,12,246,222,209,201,199,198,195,201,225,5,20,10,6,25,32,2,230,227,225,211,207,221,230,237,11,43,44,28,35,57,55,23,247,236,247,254,246,229,239,14,40,46,40,41,36,31,13,243,221,219,230,232,228,231,247,7,13,2,247,253,8,254,231,229,249,253,250,255,8,13,29,54,54,29,8,9,254,230,210,212,222,231,251,13,29,33,44,55,51,29,7,249,229,216,226,234,221,209,229,249,246,253,17,21,251,246,2,3,243,251,9,254,237,244,10,12,5,4,4,2,12,28,32,26,32,40,28,5,0,7,244,210,198,211,220,224,241,6,17,28,41,46,30,14,0,235,223,227,239,235,234,253,24,39,41,37,28,20,21,18,0,236,234,243,245,248,6,14,13,26,47,46,16,253,0,0,235,210,201,199,211,228,243,249,0,13,20,13,5,249,231,216,218,229,234,235,251,19,32,33,30,28,23,31,36,22,251,243,253,238,214,221,1,21,24,25,38,40,37,16,244,219,211,213,217,234,248,253,5,30,40,7,227,233,4,253,220,210,234,253,3,11,25,16,11,18,26,5,248,6,19,4,238,242,251,252,0,12,21,26,42,56,38,10,2,9,1,234,226,218,213,214,234,240,226,224,4,35,44,55,82,77,26,233,218,207,181,171,185,194,188,216,21,62,53,40,65,86,80,50,26,255,228,217,214,202,196,224,13,38,43,50,68,80,62,25,249,230,219,197,176,172,188,212,248,27,47,43,49,67,68,24,233,223,237,233,211,199,209,231,5,34,42,31,36,63,75,43,246,224,227,227,209,205,215,231,250,9,27,30,39,44,36,12,255,253,251,236,220,203,192,191,213,240,252,254,8,36,58,63,55,45,40,33,10,223,195,211,243,245,212,211,252,35,37,25,27,27,29,31,34,13,236,230,237,222,194,197,228,243,253,23,48,43,40,56,45,3,238,254,251,220,205,214,214,211,236,2,2,0,21,42,34,19,16,14,247,229,231,249,249,236,235,251,8,9,15,28,32,33,39,50,36,3,232,223,232,233,224,213,232,3,20,28,49,63,46,15,2,243,211,199,208,205,180,194,245,33,29,27,35,41,35,27,15,242,218,224,244,237,209,218,6,31,18,13,44,56,41,41,54,32,244,234,246,231,199,192,211,227,252,34,48,38,42,75,80,37,240,233,239,224,188,182,204,225,244,11,27,24,32,56,56,16,238,237,240,228,220,230,226,226,248,24,25,8,16,34,23,255,253,8,1,248,1,10,12,13,26,22,2,245,245,246,243,239,228,228,242,6,9,16,27,42,34,29,28,23,244,202,173,168,174,190,219,235,250,21,85,125,114,68,41,30,5,218,189,180,168,172,207,10,34,36,52,96,110,84,39,4,226,204,194,179,162,168,215,5,29,38,47,60,59,49,23,245,213,191,190,197,205,209,221,255,42,80,84,67,48,35,20,254,228,205,188,194,223,244,244,0,30,51,52,51,56,48,31,14,250,217,192,201,211,218,216,229,255,27,43,44,39,45,56,50,13,235,227,231,220,196,191,196,198,219,20,62,50,36,70,105,74,19,3,1,217,179,186,210,203,211,245,18,9,13,42,67,57,43,31,8,243,239,238,215,192,194,224,244,251,0,13,24,25,23,16,11,3,2,2,251,245,252,3,5,3,10,12,6,251,245,247,253,2,0,2,22,46,43,16,5,14,21,14,252,238,217,210,219,233,229,217,228,9,47,46,25,15,18,14,251,229,212,202,211,243,9,0,253,28,53,42,14,16,26,15,255,247,239,219,216,239,1,0,246,3,31,55,50,24,6,11,24,6,225,205,218,240,246,247,249,255,7,24,36,20,245,246,0,249,216,214,245,3,244,240,0,6,6,15,27,21,7,19,37,19,233,214,224,232,221,218,235,6,20,43,60,56,34,27,36,36,9,239,224,220,213,212,210,224,4,42,52,34,40,56,58,22,241,219,206,196,205,217,215,212,233,11,19,9,11,37,42,28,16,10,255,240,244,243,230,216,239,6,5,251,2,22,37,35,28,5,250,4,20,10,249,0,15,13,255,252,248,232,228,246,1,243,239,16,45,38,13,0,253,241,236,232,224,213,233,0,4,5,28,46,40,29,23,18,253,235,221,201,196,224,254,14,26,41,49,40,33,18,251,224,222,229,229,230,243,0,0,250,1,17,21,10,10,20,25,18,7,249,235,237,0,1,234,221,247,17,12,254,1,6,12,16,25,10,245,244,9,5,235,218,223,240,255,8,8,9,19,35,31,12,0,253,241,233,231,235,247,7,23,16,255,251,8,21,24,16,255,246,255,13,7,243,228,227,236,246,250,249,246,0,7,11,14,24,26,28,33,32,10,243,236,239,225,205,212,240,4,7,16,35,51,46,35,27,6,238,228,233,230,220,226,248,8,15,24,27,22,14,7,248,234,233,232,220,214,223,237,247,5,18,16,11,27,44,40,23,17,15,11,3,251,238,227,227,231,226,227,250,23,41,47,52,58,54,36,13,241,210,199,208,214,207,214,253,36,49,46,46,36,21,13,0,223,195,202,219,210,196,213,244,2,8,16,24,29,42,45,25,0,252,255,246,228,223,237,0,22,31,26,21,31,43,38,12,243,233,238,247,251,237,221,230,4,20,14,6,14,21,19,13,4,247,240,240,236,227,230,245,1,4,4,1,5,15,25,18,1,248,252,252,243,228,219,224,238,253,5,17,33,50,52,37,15,0,246,234,221,207,200,210,238,7,15,20,34,48,55,54,44,23,4,254,245,227,215,225,236,243,252,14,24,29,37,41,24,0,249,250,237,215,201,195,200,217,240,245,241,249,16,33,31,22,15,9,7,13,10,250,238,248,9,7,254,0,9,14,26,39,39,31,38,49,38,16,10,7,246,228,226,223,217,227,249,254,242,242,1,5,253,244,240,236,238,249,1,253,248,0,8,3,248,249,3,7,6,6,8,13,29,38,23,0,252,6,6,251,239,236,241,3,20,20,11,16,31,34,12,244,234,233,228,219,212,213,226,246,3,0,251,255,4,0,243,230,224,228,244,255,1,6,23,42,45,36,26,21,18,12,4,254,253,3,11,13,9,10,18,22,17,11,8,5,0,251,247,244,247,252,255,0,5,10,13,12,3,245,231,226,223,217,215,217,220,223,230,236,242,251,4,8,4,0,0,4,5,1,251,246,244,251,8,16,12,9,14,21,23,24,25,20,12,9,10,6,1,2,7,10,15,25,35,34,26,19,12,0,243,233,222,214,217,235,0,11,18,23,29,34,29,10,244,225,210,199,197,204,217,230,244,3,22,40,49,50,44,36,26,17,8,249,234,228,235,245,0,6,16,33,57,65,50,32,26,21,1,236,227,232,242,250,0,8,20,31,35,27,11,252,245,237,222,203,193,191,197,206,215,219,232,254,16,19,15,14,15,11,253,233,218,219,229,240,250,3,16,35,55,62,54,43,38,32,21,7,254,250,255,6,8,6,14,30,41,36,24,13,6,254,236,214,199,197,204,211,211,211,217,228,232,223,215,0,185,0,4,0,1,0,147,0,22,1,238,7,186,9,17,13,141,14,81,26,45,41,10,62,52,48,52,29,12,8,167,101,123,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,147,0,22,1,238,7,186,9,17,13,141,14,81,26,70,75,14,84,71,65,70,39,16,10,167,101,123,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,147,0,22,1,238,7,186,9,17,13,141,14,81,26,70,61,12,76,63,58,63,35,15,9,167,101,123,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,147,0,22,1,238,7,186,9,17,13,141,14,81,26,0,30,8,54,45,41,45,25,10,6,167,101,123,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,165,0,4,0,1,0,160,0,248,1,60,5,172,8,228,12,246,14,95,27,45,43,27,55,64,43,40,30,16,6,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,160,0,248,1,60,5,172,8,228,12,246,14,95,27,60,72,36,72,84,56,52,38,21,8,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,160,0,248,1,60,5,172,8,228,12,246,14,95,27,60,60,32,65,76,50,47,35,19,7,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,160,0,248,1,60,5,172,8,228,12,246,14,95,27,0,36,28,50,58,39,36,27,15,5,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,45,0,4,0,1,0,122,0,136,1,180,5,132,8,228,12,246,14,95,27,45,41,18,54,67,39,42,29,16,6,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,122,0,136,1,180,5,132,8,228,12,246,14,95,27,97,72,24,72,88,52,55,38,21,8,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,122,0,136,1,120,5,112,8,228,12,246,14,95,27,73,62,21,68,79,47,43,35,19,7,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,122,0,152,1,79,5,153,8,228,12,246,14,95,27,0,39,23,54,57,37,34,23,11,6,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,165,0,4,0,1,0,24,1,248,2,236,4,196,9,112,13,40,15,153,28,45,48,28,57,63,46,37,28,10,6,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,248,2,236,4,196,9,112,13,40,15,153,28,60,83,38,76,83,60,48,37,13,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,248,2,20,5,196,9,112,13,40,15,153,28,60,73,36,72,79,57,46,35,13,7,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,24,1,248,2,40,5,196,9,112,13,40,15,153,28,0,40,26,53,59,43,34,26,9,5,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,175,0,4,0,1,0,132,0,67,1,240,5,92,8,228,12,96,14,100,25,45,41,18,63,40,35,37,34,9,12,167,105,135,120,120,120,167,112,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,67,1,240,5,92,8,228,12,96,14,100,25,70,66,22,80,51,44,48,44,12,16,167,105,135,120,120,120,167,112,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,67,1,240,5,112,8,228,12,96,14,100,25,60,58,21,75,48,41,45,41,11,15,167,105,135,120,120,120,167,112,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,67,1,240,5,112,8,228,12,96,14,100,25,0,41,18,63,40,35,37,34,9,12,167,105,135,120,120,120,167,112,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,210,0,5,0,1,0,132,0,16,1,240,5,52,8,228,12,96,14,100,25,45,42,15,62,40,34,37,34,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,16,1,240,5,52,8,228,12,96,14,100,25,60,69,20,80,51,44,48,44,12,16,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,16,1,240,5,52,8,228,12,96,14,100,25,70,62,19,76,49,42,45,41,11,15,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,132,0,24,1,24,6,72,8,228,12,96,14,100,25,35,41,15,62,40,34,37,34,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,132,0,24,1,24,6,72,8,228,12,96,14,100,25,0,36,14,58,37,32,35,32,8,11,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,235,0,5,0,1,0,8,1,8,3,60,5,236,9,32,13,191,14,64,27,45,53,34,66,72,43,43,31,4,6,167,135,165,120,120,120,167,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,8,1,8,3,60,5,236,9,32,13,191,14,64,27,80,103,48,92,100,60,60,44,6,8,167,135,165,120,120,120,167,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,254,0,222,2,146,5,252,9,44,13,189,14,86,27,70,92,46,88,95,60,58,43,7,8,167,130,168,120,120,120,167,135,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,156,0,99,1,152,8,140,10,152,13,166,14,32,28,40,43,32,55,49,58,45,33,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,28,28,44,45,41,38,30,8,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,250,0,5,0,1,0,122,0,240,1,140,5,132,8,228,12,246,14,95,27,45,38,25,54,60,37,39,28,15,6,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,122,0,240,1,140,5,132,8,228,12,246,14,95,27,75,74,36,76,84,52,55,38,21,8,170,133,127,122,124,128,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,125,0,218,1,214,5,191,8,236,12,247,14,76,27,60,72,31,76,82,53,57,38,21,8,170,129,127,122,124,127,197,131,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,11,1,112,8,212,10,52,13,0,15,160,26,70,40,4,64,57,46,58,28,13,6,167,99,120,120,120,120,167,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,11,1,112,8,212,10,52,13,0,15,160,26,0,34,3,59,53,43,54,26,12,6,167,99,120,120,120,120,167,97,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,40,0,7,0,1,0,24,1,232,2,140,5,196,9,112,13,40,15,153,28,40,50,33,63,63,48,38,29,10,6,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,24,1,232,2,140,5,196,9,112,13,40,15,153,28,35,89,44,84,84,64,51,39,14,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,245,0,176,2,104,5,160,9,112,13,40,15,153,28,40,81,41,79,79,53,49,38,13,8,215,138,143,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,195,0,56,2,122,5,68,9,112,13,30,15,83,27,50,73,33,76,65,46,53,38,13,7,201,130,147,121,121,127,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,173,1,140,5,232,8,55,13,20,15,13,26,60,55,21,69,49,38,39,32,12,7,188,123,151,122,122,135,237,165,151,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,147,0,64,1,20,5,34,9,40,13,15,15,105,25,35,37,10,61,46,28,25,18,12,7,181,109,137,123,123,139,187,120,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,147,0,64,1,20,5,34,9,40,13,15,15,105,25,0,29,9,54,41,25,22,16,11,6,181,109,137,123,123,139,187,120,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,155,0,4,0,1,0,133,0,144,1,64,6,116,9,196,12,151,14,39,25,50,40,23,56,50,37,41,32,12,10,177,127,132,124,123,138,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,133,0,144,1,64,6,116,9,196,12,151,14,39,25,70,52,26,64,57,43,46,37,13,11,177,127,132,124,123,138,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,133,0,144,1,64,6,116,9,196,12,151,14,39,25,35,52,26,64,57,43,46,37,13,11,177,127,132,124,123,138,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,133,0,144,1,64,6,116,9,196,12,151,14,39,25,0,31,20,50,44,33,36,28,10,9,177,127,132,124,123,138,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,95,0,4,0,1,0,135,0,151,1,220,5,96,9,188,12,136,14,153,24,45,43,21,59,56,46,37,28,10,11,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,151,1,220,5,96,9,188,12,136,14,153,24,80,71,28,76,72,60,48,36,13,14,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,135,0,202,1,233,5,179,9,188,12,136,14,153,24,50,76,33,81,72,60,48,36,13,14,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,135,0,202,1,233,5,179,9,188,12,136,14,153,24,0,76,33,81,72,60,48,36,13,14,178,126,132,123,123,141,187,126,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,4,0,1,0,168,0,232,1,152,3,136,9,244,11,141,14,32,27,45,55,28,58,65,39,32,18,13,5,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,168,0,232,1,152,3,136,9,244,11,141,14,32,27,90,109,42,80,92,59,48,27,20,8,165,135,150,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,171,0,160,1,211,2,101,9,239,12,42,15,89,27,60,57,28,60,52,27,22,14,11,8,196,108,123,120,120,120,165,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,172,0,160,1,188,2,96,9,12,13,60,15,96,27,0,36,24,48,40,24,20,12,10,8,200,105,120,120,120,120,200,105,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,155,0,5,0,1,0,136,0,232,1,64,6,140,10,232,13,64,16,95,27,45,44,24,58,58,43,33,27,16,6,170,152,153,122,124,128,197,152,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,136,0,232,1,64,6,140,10,232,13,64,16,95,27,60,67,30,72,72,53,41,34,20,8,170,152,153,122,124,128,197,152,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,232,1,64,6,140,10,232,13,64,16,95,27,40,60,28,68,68,50,39,32,19,7,170,152,153,122,124,128,197,152,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,160,0,136,1,12,8,60,10,127,13,159,14,16,28,50,46,31,55,51,54,33,36,10,7,168,109,141,120,120,120,200,109,141,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,160,0,136,1,12,8,60,10,127,13,159,14,16,28,0,32,26,46,43,45,27,30,8,6,168,109,141,120,120,120,200,109,141,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,90,0,4,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,35,13,36,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,25,13,36,20,38,12,16,16,6,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,30,5,22,11,22,8,11,11,4,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,196,0,114,1,84,4,252,8,88,12,91,14,32,27,0,3,19,9,19,7,9,9,3,0,125,60,135,120,120,120,80,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,90,0,4,0,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,35,17,40,41,25,16,13,16,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,25,14,36,37,22,14,12,14,8,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,30,5,22,22,20,12,10,12,7,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,236,0,124,1,12,7,236,9,172,13,160,15,0,27,0,3,16,16,15,9,8,9,5,0,132,60,90,120,120,120,42,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,100,0,4,0,5,0,204,0,120,1,92,8,124,11,172,13,160,15,0,27,30,19,41,45,19,19,15,15,9,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,25,16,39,39,18,18,15,14,9,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,45,4,21,21,15,15,12,12,7,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,37,0,204,0,120,1,192,8,28,12,172,13,160,15,0,27,0,4,21,21,15,15,12,12,7,0,135,60,90,120,120,120,45,135,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,95,0,4,0,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,40,17,44,14,19,10,10,13,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,240,0,13,2,248,9,124,11,76,14,23,17,224,23,25,17,44,14,19,10,10,13,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,232,0,13,2,236,9,44,11,76,14,23,17,224,23,30,5,25,6,15,8,8,10,3,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,232,0,13,2,236,9,44,11,76,14,23,17,224,23,0,4,22,5,13,7,7,9,3,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,97,9,23,0,0,255,255,254,255,255,255,255,254,254,254,254,254,254,255,255,254,254,254,255,255,254,255,255,254,255,0,255,255,254,255,0,0,255,255,255,0,255,0,0,255,0,0,0,0,0,0,0,0,255,254,255,0,0,0,0,0,0,0,7,40,43,3,236,248,2,254,9,28,28,15,6,0,251,1,17,25,17,16,22,13,9,24,30,25,29,91,77,249,254,0,245,246,42,53,24,241,196,216,250,239,246,4,245,195,162,180,212,233,249,235,204,175,172,165,194,235,223,215,169,135,191,226,235,0,249,242,239,213,191,2,90,36,246,254,12,72,57,93,127,43,26,20,11,36,68,78,30,14,239,229,46,32,240,14,37,231,164,187,7,26,223,167,175,221,208,181,182,227,241,173,188,230,216,197,211,247,213,230,240,192,228,1,8,26,5,224,3,32,24,15,20,16,23,0,6,20,4,32,64,49,40,78,49,13,11,29,50,28,255,241,20,36,254,207,251,69,29,220,197,244,18,234,202,238,44,6,161,164,1,39,17,202,184,9,25,210,178,243,56,29,215,166,250,83,246,197,14,80,17,190,216,15,58,55,31,6,243,241,251,33,38,249,24,40,233,183,219,29,50,31,245,252,24,11,222,198,250,61,38,251,241,5,18,254,247,62,62,44,4,207,214,245,33,62,32,250,252,226,202,207,241,26,47,29,187,175,228,242,236,243,11,11,228,208,180,194,235,46,31,222,220,242,250,202,215,2,47,23,216,229,253,236,244,247,242,26,33,229,193,246,15,3,5,5,17,253,236,220,238,36,23,251,202,209,11,23,248,242,37,8,193,208,245,10,31,2,240,1,254,228,192,221,16,38,27,244,253,244,209,223,0,40,39,241,239,2,10,243,227,12,44,40,19,237,230,243,253,8,0,49,63,19,249,208,238,22,21,4,254,35,13,246,0,248,251,0,10,23,32,29,254,252,243,240,16,32,13,19,38,11,246,0,251,251,7,29,41,34,28,232,231,10,9,254,4,47,48,12,226,245,27,2,230,232,35,44,241,227,247,14,248,205,235,23,21,3,3,252,235,199,213,3,25,16,5,253,4,10,232,217,248,39,18,226,248,32,13,222,197,251,44,248,236,45,45,0,220,216,251,3,4,7,22,33,252,216,243,255,255,255,245,4,243,245,1,4,225,212,241,241,253,3,2,229,233,254,227,234,244,238,236,6,7,251,237,242,247,234,247,14,2,0,248,241,238,235,255,8,17,255,248,14,18,240,207,7,63,27,234,242,20,11,224,217,1,53,20,236,244,12,26,240,242,254,21,4,221,239,29,14,222,209,7,18,242,229,230,242,232,226,254,19,9,240,222,243,2,19,232,219,17,25,0,238,29,24,242,237,255,7,245,254,23,19,29,2,221,235,1,15,2,7,13,16,242,221,229,245,5,3,231,248,26,8,206,210,59,23,203,217,12,16,204,226,12,14,241,247,247,251,246,203,236,10,28,3,249,10,38,14,225,250,18,5,235,11,35,24,5,8,4,246,1,237,240,245,239,0,17,4,231,11,6,211,223,252,19,249,242,247,8,0,225,237,248,254,252,10,10,2,10,237,243,22,21,2,4,1,228,7,21,246,237,25,31,246,246,252,0,247,254,4,32,32,15,18,254,255,231,240,252,27,21,247,252,250,14,2,253,3,250,238,244,3,254,0,9,31,6,233,243,238,238,222,245,24,16,3,8,17,239,217,234,234,211,221,15,48,24,254,251,251,2,9,236,242,6,3,223,242,29,8,244,229,13,251,218,219,241,0,231,0,42,57,49,28,29,14,6,3,12,21,23,19,35,38,12,22,41,18,238,233,1,237,222,246,255,5,1,249,234,250,247,219,210,234,5,0,244,243,11,23,4,253,4,0,237,242,13,34,7,0,21,21,11,2,251,246,3,11,18,15,1,2,2,5,242,232,227,240,255,249,230,222,242,251,235,228,5,13,246,224,230,243,244,235,237,243,252,6,254,4,250,239,238,218,213,242,247,234,248,3,247,221,231,240,221,202,201,206,223,234,249,251,246,225,225,228,212,215,238,0,250,238,245,12,252,226,228,242,241,226,229,252,4,1,250,0,4,10,2,252,0,0,253,231,245,21,15,246,242,0,2,241,27,52,7,235,0,16,216,212,232,221,218,242,3,2,9,4,234,232,234,240,235,228,235,228,238,0,251,4,17,17,13,244,222,226,237,246,6,29,58,54,33,11,249,0,236,224,252,18,29,24,27,45,23,237,236,237,226,211,215,229,239,248,8,28,16,10,5,252,206,179,219,229,227,18,45,36,18,25,11,236,227,223,231,9,20,7,13,49,29,246,232,225,213,224,237,229,5,28,16,253,252,19,11,252,246,219,226,0,254,250,28,57,42,10,250,248,229,238,3,10,50,49,32,14,241,229,232,221,216,229,12,21,254,4,16,16,246,219,226,241,252,242,0,23,28,0,223,242,10,7,253,254,4,246,225,242,6,17,18,19,16,1,7,10,251,0,20,30,32,35,33,1,10,23,14,26,11,243,242,239,240,239,11,18,8,19,26,19,243,231,228,204,203,195,225,24,39,35,24,28,13,228,198,197,222,243,237,244,34,76,71,38,43,42,17,237,235,6,24,6,246,23,56,42,4,4,20,246,225,225,226,0,4,247,248,248,237,219,241,248,227,211,230,251,226,245,22,31,36,19,254,1,12,238,200,233,20,15,26,49,42,27,45,7,216,235,5,243,229,32,45,10,16,25,21,6,228,221,241,220,186,212,7,2,247,13,48,27,220,191,183,191,189,193,6,68,55,10,0,2,229,194,194,223,252,13,24,45,50,41,31,27,17,248,228,229,219,222,7,28,27,26,30,26,8,231,207,198,204,220,222,0,37,41,40,40,18,238,243,244,225,221,230,247,239,236,12,35,27,10,4,250,235,239,247,242,243,14,16,6,250,235,242,249,227,202,232,3,240,240,4,16,22,251,222,231,1,10,0,1,33,48,27,253,227,237,3,240,226,7,27,15,11,25,31,15,22,252,234,245,241,247,238,218,228,4,6,222,247,11,249,232,228,0,1,227,224,249,5,6,240,222,216,224,230,225,248,23,30,43,43,16,9,7,0,230,223,249,29,33,25,30,23,23,16,242,237,9,12,243,230,244,243,238,211,205,239,7,5,244,3,9,254,226,219,241,241,235,236,250,4,9,249,222,5,33,27,10,251,3,6,255,233,223,228,220,231,12,25,22,30,41,27,252,229,234,229,220,228,241,250,246,7,29,32,12,232,224,213,212,230,229,240,239,8,21,19,28,26,13,236,218,241,250,4,12,5,29,46,25,254,235,236,244,235,228,217,233,16,21,242,243,13,22,0,254,0,249,254,247,243,252,255,7,23,46,37,13,16,247,228,222,237,10,27,23,24,45,51,26,241,236,227,211,229,0,3,3,14,19,13,21,31,0,206,202,219,242,248,220,245,39,28,3,252,253,239,210,199,215,233,26,55,48,42,38,30,9,227,212,214,221,247,8,11,28,48,45,25,253,250,245,218,197,202,236,15,15,30,33,9,7,250,217,206,214,226,255,18,22,47,74,46,8,244,236,234,232,250,9,39,90,87,52,25,12,9,231,190,199,224,244,22,30,40,45,21,239,218,199,190,226,22,44,21,47,60,19,223,204,233,235,220,220,3,42,50,30,15,3,239,232,217,214,239,14,29,32,39,42,47,25,245,226,234,241,244,7,13,14,9,21,6,234,221,213,231,245,252,251,243,10,11,251,242,253,239,211,206,230,244,241,0,16,27,29,13,235,222,208,206,244,10,4,1,29,43,24,253,238,239,235,237,235,243,13,28,21,6,15,20,6,244,225,222,245,6,2,8,25,39,33,2,227,225,246,212,186,230,21,28,22,31,33,255,229,215,199,223,251,252,18,61,59,38,17,7,250,231,222,218,232,249,10,38,57,35,5,249,239,227,213,221,5,14,3,19,36,43,36,7,235,214,218,222,211,212,253,29,25,16,1,232,212,203,213,233,250,7,29,47,18,4,3,245,224,208,241,17,23,0,248,14,27,23,242,242,255,249,250,252,253,2,7,0,247,239,223,205,231,254,245,254,250,7,249,220,237,18,254,222,232,2,16,247,230,246,9,14,249,233,246,8,15,9,253,255,18,15,252,247,0,248,233,241,240,251,27,46,43,16,249,236,221,218,220,238,8,17,21,251,238,1,252,225,207,221,252,9,9,10,18,26,7,227,221,235,233,238,11,27,40,42,30,18,241,217,218,217,230,2,10,33,56,47,255,226,213,204,210,212,231,17,38,26,7,250,0,245,210,199,216,234,253,12,22,21,7,245,231,211,218,249,7,11,24,24,17,10,240,229,226,235,4,14,34,40,23,17,1,232,228,244,252,13,31,29,28,5,247,244,211,218,250,3,2,18,12,249,242,245,242,219,226,255,14,17,14,6,2,251,244,238,236,253,8,18,37,38,13,226,231,254,249,255,19,35,37,26,9,0,236,212,226,249,251,252,31,64,40,245,240,241,214,200,227,21,40,18,22,32,5,246,238,232,242,243,252,11,16,12,12,20,3,236,240,3,16,12,15,18,11,250,247,248,238,240,250,254,11,16,33,35,9,236,225,239,10,0,233,5,27,10,245,239,254,8,3,2,14,1,8,15,231,217,240,251,11,22,2,11,22,19,250,232,1,17,0,247,249,254,1,248,232,240,7,30,21,253,251,235,226,245,253,243,253,28,36,20,5,0,7,1,234,220,228,245,7,12,4,245,247,254,243,224,230,238,246,10,7,249,237,251,10,6,250,255,17,21,4,240,250,21,16,253,241,243,11,15,255,254,0,243,231,249,13,7,4,7,1,250,230,223,251,3,254,12,34,36,15,252,243,245,239,244,255,15,20,26,31,7,243,222,220,236,243,0,21,20,8,7,1,241,225,239,4,7,250,252,19,13,248,240,240,241,247,252,252,252,11,20,8,250,254,5,2,247,240,5,35,19,0,9,17,18,12,3,0,253,239,239,3,3,243,252,16,8,237,233,237,232,229,227,239,20,20,253,248,242,228,240,249,246,4,28,33,11,250,240,230,239,244,250,17,33,25,14,2,239,230,238,245,250,10,42,51,18,244,229,238,230,216,231,6,32,28,2,235,228,218,192,183,222,15,37,26,5,244,237,226,225,248,8,21,42,56,41,10,242,230,231,242,249,17,50,52,18,248,244,233,225,228,238,6,43,45,22,6,248,231,219,213,225,0,31,39,16,245,231,217,210,225,253,25,45,31,4,236,228,239,239,240,249,19,37,22,4,245,241,249,245,243,5,21,16,2,252,250,255,0,241,227,230,251,251,251,11,9,252,231,219,228,240,252,7,8,6,8,4,253,242,234,241,15,29,22,12,7,0,255,247,234,248,12,22,14,0,0,0,90,0,2,0,37,0,184,0,24,2,112,5,72,8,0,10,188,12,136,19,90,2,9,16,4,6,8,3,3,3,157,125,137,137,150,175,157,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,184,0,24,2,112,5,248,7,236,9,188,12,131,24,0,0,7,2,3,8,6,2,1,1,157,125,137,137,150,175,157,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,225,1,33,0,8,4,7,7,20,44,10,4,9,250,252,247,237,225,218,237,231,235,246,241,0,9,13,10,0,14,14,2,3,246,240,239,232,230,219,224,229,226,235,237,236,246,248,247,245,244,247,241,236,233,223,217,220,218,209,207,210,214,222,230,235,237,243,251,0,255,255,252,252,253,253,250,250,0,6,10,14,19,24,34,38,41,43,50,56,54,55,57,61,79,76,73,75,67,65,59,47,32,16,15,11,6,5,4,11,21,28,36,30,33,35,25,21,12,253,245,233,220,213,200,197,192,192,198,192,197,212,215,223,231,236,239,236,241,236,222,224,218,215,212,206,205,204,208,221,219,227,231,242,253,0,2,0,0,4,0,0,0,1,0,2,8,6,13,16,20,24,27,27,25,27,24,8,4,254,231,221,178,176,59,41,45,88,81,98,114,125,80,4,22,232,215,213,158,170,198,247,18,0,44,85,91,125,107,85,60,43,37,241,222,212,196,224,225,222,239,3,18,3,5,16,19,26,29,16,254,255,14,6,2,245,226,242,245,252,247,228,235,246,246,250,237,231,228,228,235,217,218,213,205,221,216,222,235,234,242,235,236,235,226,231,213,204,208,206,205,203,205,209,217,235,245,249,0,10,12,22,28,24,14,17,15,14,20,27,37,41,49,60,59,65,63,62,66,63,68,66,63,63,58,59,59,61,56,42,42,45,40,47,37,30,20,8,6,1,250,243,237,243,244,243,244,231,230,236,224,230,219,211,211,212,214,211,205,209,197,202,191,187,194,195,203,202,206,217,217,229,236,219,218,203,207,209,209,218,221,233,248,0,14,11,20,28,27,35,16,1,0,252,1,254,249,0,9,36,50,71,96,98,110,120,114,104,103,84,64,43,27,13,249,234,219,215,226,228,238,248,254,16,27,36,42,34,23,15,254,239,221,194,182,179,181,197,214,236,1,17,49,59,66,64,45,35,14,1,246,222,223,224,232,3,15,29,43,53,67,60,49,37,14,253,234,217,201,191,190,191,193,204,214,223,235,242,241,240,233,225,213,204,187,179,171,164,160,160,178,210,226,244,4,0,247,239,240,224,217,225,217,230,246,0,0,0,0,140,0,3,0,1,0,148,0,128,1,168,7,196,9,228,12,50,15,96,25,50,6,8,22,28,22,24,15,6,3,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,128,1,168,7,196,9,228,12,50,15,96,25,90,6,8,22,28,22,24,15,6,3,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,80,1,32,8,60,10,42,13,50,15,96,25,0,1,4,11,14,12,12,7,3,1,160,92,120,143,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,175,0,4,0,1,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,45,54,26,77,50,48,50,29,12,5,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,70,120,40,116,76,72,75,44,18,8,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,104,1,72,8,120,10,52,13,40,15,96,25,60,97,36,104,68,64,67,39,16,7,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,104,0,104,1,72,8,100,10,72,13,40,15,96,25,0,43,24,69,45,43,45,26,10,5,160,95,120,167,120,120,130,95,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,90,0,3,0,1,0,192,0,144,1,168,7,236,9,32,13,60,15,96,25,50,38,29,64,37,26,24,8,5,5,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,192,0,152,1,148,7,236,9,32,13,60,15,96,25,90,84,44,96,64,44,40,20,8,8,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,152,1,168,7,236,9,32,13,60,15,96,25,0,31,26,58,41,29,21,14,4,5,160,90,120,120,120,120,130,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,195,0,4,0,1,0,141,0,84,1,144,6,16,9,172,13,160,15,104,25,45,64,13,76,60,68,68,40,15,12,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,141,0,84,1,144,6,16,9,172,13,160,15,104,25,80,64,13,76,60,68,68,40,15,12,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,141,0,84,1,144,6,16,9,172,13,160,15,104,25,70,53,11,69,54,62,61,36,13,11,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,141,0,84,1,144,6,16,9,172,13,160,15,104,25,0,34,9,55,43,49,49,29,11,8,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,50,32,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,60,81,42,77,82,75,58,42,14,9,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,60,73,40,73,77,71,55,40,13,8,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,0,32,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,31,1,176,1,255,6,225,9,104,13,15,15,224,28,50,34,26,40,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,31,1,184,1,255,6,225,9,104,13,15,15,224,28,60,71,42,49,82,75,58,42,14,9,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,31,1,160,1,255,6,225,9,104,13,15,15,224,28,60,60,40,39,77,71,55,40,13,8,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,31,1,168,1,255,6,225,9,104,13,15,15,224,28,0,26,26,26,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,50,24,26,40,43,38,31,21,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,60,55,42,60,64,57,49,34,14,9,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,60,54,40,61,64,54,50,32,13,8,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,31,1,77,2,255,6,225,9,104,13,15,15,224,28,0,23,26,40,40,38,31,21,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,220,0,4,0,1,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,50,41,24,49,52,39,36,20,14,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,153,0,198,1,44,3,255,9,194,11,151,14,244,26,90,63,31,60,64,51,46,26,19,8,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,192,1,44,3,255,9,194,11,151,14,244,26,80,53,28,54,61,45,42,23,17,7,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,153,0,176,1,56,3,216,9,194,11,151,14,244,26,0,31,21,43,46,34,31,18,12,5,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,140,0,3,0,1,0,204,0,158,2,252,4,60,10,168,12,10,15,0,28,50,54,35,56,76,42,50,25,14,8,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,204,0,93,2,208,4,60,10,168,12,10,15,0,28,90,108,43,86,98,54,65,32,19,8,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,204,0,93,2,252,4,60,10,168,12,10,15,0,28,0,52,31,61,69,38,46,22,13,9,167,165,150,120,120,120,167,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,100,0,4,0,1,0,176,0,64,1,132,3,56,9,12,13,60,15,144,26,50,45,3,73,36,21,21,30,12,7,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,64,1,132,3,56,9,12,13,60,15,144,26,50,77,4,96,48,28,28,40,16,10,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,64,1,132,3,56,9,12,13,60,15,144,26,70,61,3,85,42,24,24,35,14,8,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,64,1,132,3,56,9,12,13,60,15,144,26,0,30,2,60,30,17,17,25,10,6,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,50,0,5,0,1,0,135,0,96,1,138,6,68,9,128,12,128,14,153,24,50,48,12,67,56,50,45,32,10,11,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,135,0,96,1,138,6,68,9,128,12,128,14,153,24,115,80,16,86,72,64,58,41,13,14,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,135,0,96,1,138,6,68,9,128,12,128,14,153,24,55,51,12,69,58,51,47,33,10,11,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,135,0,88,1,138,6,68,9,128,12,128,14,153,24,40,43,10,64,51,48,44,31,10,10,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,135,0,80,1,138,6,68,9,128,12,128,14,153,24,0,40,9,63,46,40,35,30,8,8,181,122,132,123,123,141,190,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,0,0,5,0,1,0,84,0,104,1,70,6,212,8,148,12,41,14,64,26,42,56,18,76,56,42,42,39,12,8,162,150,135,120,120,120,102,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,84,0,104,1,26,6,212,8,148,12,116,14,192,25,40,87,23,91,86,77,60,55,19,8,167,135,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,88,0,104,1,48,6,172,8,148,12,116,14,192,25,50,80,24,94,68,74,55,53,21,8,167,120,135,120,120,120,107,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,84,0,64,1,106,5,192,8,68,12,116,14,192,25,67,39,12,67,43,38,32,31,14,8,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,84,0,34,1,255,3,172,8,28,12,116,14,192,25,0,34,17,60,37,18,21,21,10,8,165,135,135,120,120,120,105,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,139,0,3,0,1,0,112,0,13,2,161,5,36,9,188,12,116,14,96,27,50,60,34,66,80,45,47,36,18,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,90,87,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,13,2,161,5,36,9,188,12,116,14,96,27,0,46,30,58,70,39,41,32,16,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,45,0,5,0,1,0,144,0,120,1,188,7,120,10,132,13,160,15,128,28,45,45,22,58,58,58,47,44,11,8,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,144,0,120,1,188,7,120,10,132,13,160,15,128,28,41,91,32,84,84,84,68,64,16,12,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,208,1,188,7,80,10,132,13,216,14,128,28,74,93,38,84,88,84,68,51,16,12,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,208,1,148,7,60,10,92,13,196,14,128,28,40,93,38,84,88,84,68,51,16,12,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,32,2,8,7,136,9,228,12,76,14,128,28,0,44,30,58,61,58,47,36,11,8,185,107,127,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,105,0,4,0,5,0,88,0,24,1,6,9,140,10,32,13,191,14,224,28,30,19,10,42,37,34,45,22,7,0,135,120,135,120,120,120,30,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,7,0,88,0,24,1,174,8,196,9,32,13,91,14,224,28,17,24,7,55,33,35,37,24,7,0,135,90,135,120,120,120,30,105,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,88,0,84,1,188,7,36,9,168,12,191,14,224,28,58,20,5,45,20,48,40,26,5,0,135,135,135,120,120,120,30,90,75,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,168,0,144,1,56,7,212,8,168,12,191,14,224,28,0,86,34,108,58,77,61,37,10,0,120,105,120,120,120,120,30,75,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,5,0,180,0,248,2,185,8,200,10,32,13,116,14,0,29,45,13,4,8,23,36,46,26,7,0,120,62,150,120,120,120,45,92,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,196,0,229,1,136,6,36,9,28,12,116,14,0,28,50,37,32,53,66,51,49,29,6,0,120,120,150,120,120,120,75,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,7,3,43,4,240,10,148,12,41,14,96,27,59,126,29,73,116,52,45,45,15,7,167,165,135,120,120,120,167,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,228,0,7,3,10,4,240,10,52,13,41,14,224,27,58,116,30,82,97,55,57,54,13,8,167,135,150,120,120,120,167,90,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,228,0,243,2,255,3,160,10,148,12,41,14,224,27,38,71,34,67,87,37,41,38,14,8,167,135,120,120,120,120,167,75,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,164,0,27,3,98,4,20,10,148,12,41,14,224,27,0,40,24,60,59,29,25,25,8,8,167,120,120,120,120,120,227,105,105,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,154,0,4,0,1,0,248,0,137,3,40,5,140,10,112,13,35,15,32,28,50,60,34,70,69,40,27,24,9,8,210,150,105,120,120,120,255,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,72,1,157,3,40,5,140,10,112,13,191,14,32,28,40,66,42,75,65,49,43,27,13,7,207,150,105,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,72,1,157,3,40,5,140,10,112,13,191,14,32,28,65,72,41,80,67,56,42,26,13,6,210,150,105,120,120,120,240,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,16,1,128,3,60,5,100,10,112,13,191,14,160,28,0,54,35,70,63,37,33,26,8,9,210,135,105,120,120,120,255,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,154,0,4,0,1,0,248,0,137,3,40,5,140,10,112,13,35,15,32,28,50,60,34,70,69,40,27,24,9,8,210,150,105,120,120,120,255,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,72,1,157,3,40,5,140,10,112,13,191,14,32,28,40,102,42,95,85,49,43,27,13,7,207,150,105,120,120,120,237,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,72,1,157,3,40,5,140,10,112,13,191,14,32,28,65,97,41,93,83,56,42,26,13,6,210,150,105,120,120,120,240,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,16,1,128,3,60,5,100,10,112,13,191,14,160,28,0,54,35,70,63,37,33,26,8,9,210,135,105,120,120,120,255,165,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,50,0,4,0,5,0,4,0,16,1,220,5,136,9,58,14,216,19,224,21,40,5,8,23,10,6,6,6,4,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,4,0,16,1,220,5,136,9,58,14,216,19,224,21,10,6,9,25,11,6,6,6,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,5,0,4,0,16,1,220,5,144,9,58,14,216,19,224,21,0,6,9,26,12,7,7,7,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,17,0,4,0,16,1,220,5,160,9,58,14,216,19,224,21,0,6,9,25,11,6,6,6,5,4,150,125,137,137,150,175,150,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,253,2,193,0,1,254,252,255,0,0,0,1,1,1,1,1,0,0,2,4,6,8,9,11,10,9,8,6,5,5,6,7,8,10,11,12,13,13,12,11,10,10,9,8,8,8,8,9,9,8,7,5,3,3,4,4,1,254,251,251,251,252,252,251,252,252,252,252,252,252,252,252,252,253,251,245,236,226,218,215,216,221,227,234,238,240,239,237,234,231,229,228,230,234,238,242,246,252,0,6,10,15,17,18,16,13,9,6,5,7,11,17,22,26,28,28,27,23,19,15,10,7,4,1,0,255,255,254,254,254,254,253,252,250,247,243,240,237,235,234,235,237,239,242,244,246,248,249,250,251,252,253,254,254,255,0,0,1,3,4,5,6,6,5,4,2,0,253,252,251,252,254,0,3,5,5,5,3,1,0,254,253,251,250,250,251,253,0,1,3,3,3,3,2,1,0,0,0,1,2,3,4,4,4,4,3,3,3,4,4,4,4,3,2,1,0,0,255,255,255,255,0,0,1,2,3,2,0,255,253,252,253,254,0,0,2,3,4,4,3,2,2,2,3,3,2,0,0,0,2,4,5,6,6,4,2,0,254,253,252,251,250,250,252,255,0,0,0,255,255,0,0,255,253,252,252,253,253,253,252,252,253,252,251,250,252,253,252,250,251,0,8,14,16,14,13,13,13,11,8,6,6,7,9,15,23,32,39,40,27,253,209,166,138,130,142,167,197,229,255,12,11,0,241,231,228,231,236,242,248,253,0,3,9,20,36,53,67,73,68,54,34,13,253,242,239,244,255,12,23,27,23,14,3,249,240,234,230,229,227,224,219,215,212,214,220,230,240,249,254,255,250,243,235,229,228,232,241,252,6,15,21,24,25,24,22,22,21,20,17,14,10,5,2,0,0,3,7,11,13,12,7,0,248,240,234,229,228,229,232,236,240,242,244,245,246,247,248,250,253,255,0,0,0,0,2,5,10,15,20,25,26,26,23,19,15,11,8,7,6,5,4,4,3,3,3,3,3,2,0,254,250,245,241,237,237,238,242,246,252,1,7,11,12,12,11,10,8,6,6,6,8,10,12,15,17,20,22,24,24,21,15,9,3,0,252,249,249,251,255,2,3,2,0,255,252,250,247,245,246,249,252,254,254,252,252,252,255,3,8,11,12,9,6,3,2,1,2,3,4,6,7,8,9,9,8,6,4,3,3,4,7,9,9,8,5,2,1,3,7,12,14,12,4,249,234,221,213,214,223,237,254,13,23,24,17,6,252,243,237,238,244,254,4,5,0,252,252,252,247,237,226,218,215,216,221,227,234,239,240,239,238,235,232,230,229,231,234,239,243,247,252,1,6,11,15,17,18,17,14,10,7,6,8,12,17,23,27,29,29,27,24,19,15,11,7,4,1,0,0,255,254,254,254,254,254,253,250,247,244,241,238,235,234,235,237,240,242,244,246,248,250,251,252,252,253,254,255,0,0,1,3,4,5,6,7,7,6,5,2,0,254,252,251,252,255,1,3,5,6,5,4,2,0,255,253,251,250,251,252,254,0,2,3,3,3,3,3,2,0,0,0,1,2,3,4,5,5,4,4,4,4,4,5,5,4,4,3,2,0,0,0,255,255,0,0,0,1,3,3,3,1,0,254,253,253,255,0,1,3,4,4,5,4,3,2,2,3,3,3,1,1,1,3,5,6,7,6,5,2,0,255,253,252,251,250,251,253,255,1,1,0,255,0,0,0,0,254,252,0,0,0,0,1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,129,131,133,135,137,139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189,191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229,231,233,235,237,239,241,243,245,247,249,251,253,254,254,253,252,251,250,249,247,246,245,244,243,241,240,239,237,236,234,233,231,230,228,226,225,223,221,220,218,216,214,212,210,209,207,205,203,201,199,197,195,193,191,189,186,184,182,180,178,176,174,171,169,167,165,162,160,158,156,153,151,149,147,144,142,140,137,135,133,131,128,126,124,121,119,117,114,112,110,108,105,103,101,99,96,94,92,90,88,85,83,81,79,77,75,73,70,68,66,64,62,59,57,55,53,51,49,46,44,42,40,38,35,33,31,29,27,25,23,20,18,16,14,12,10,8,6,4,2,0,2,4,6,8,10,11,13,15,16,18,19,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,36,37,38,39,40,40,41,42,43,43,44,45,46,47,48,48,49,50,51,52,53,54,55,56,58,59,60,62,63,64,66,68,69,71,73,75,77,79,81,83,85,88,90,93,95,98,101,104,107,110,114,117,121,124,128,132,136,140,145,149,154,159,163,166,170,174,177,181,184,188,192,195,199,202,206,209,213,216,219,223,226,229,232,235,238,241,243,245,247,249,250,252,253,254,255,255,255,255,255,255,255,254,251,248,245,242,238,234,230,227,222,218,214,210,205,201,196,191,187,182,177,172,167,162,157,152,147,142,137,132,127,122,117,112,107,102,97,92,87,82,78,73,69,64,60,56,51,47,43,40,36,32,29,26,23,20,17,14,12,9,7,5,3,2,1,0,0,0,0,0,0,0,0,0,0,1,3,5,7,10,12,15,19,23,27,31,36,41,46,52,58,65,72,79,86,94,103,112,117,122,127,132,137,142,147,152,157,162,167,172,177,182,187,191,196,201,205,210,214,218,222,227,230,234,238,242,245,248,251,127,123,118,114,110,105,101,97,94,90,86,82,79,75,72,68,65,62,59,56,53,50,47,44,42,39,37,34,32,30,28,26,24,22,20,19,17,16,14,13,12,11,10,9,8,7,6,6,5,5,5,4,4,4,4,5,5,5,6,6,7,8,9,10,11,12,13,15,16,18,20,21,23,25,27,30,32,34,37,40,42,45,48,51,55,58,61,65,68,72,76,80,84,88,93,97,101,105,109,113,117,122,126,130,134,139,143,148,152,157,162,166,171,176,181,186,191,196,201,206,211,217,222,227,233,238,243,249,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,151,143,136,128,121,114,108,101,95,90,85,81,77,73,70,68,66,65,65,66,67,69,72,76,81,86,93,101,109,119,130,142,152,152,152,152,151,151,151,151,150,150,150,150,149,149,149,149,148,148,148,148,147,147,147,147,146,146,146,146,145,145,145,145,144,144,144,144,143,143,143,143,142,142,142,142,141,141,141,141,140,140,140,254,251,248,244,241,237,233,229,225,221,217,213,208,204,199,195,190,185,180,176,171,166,161,156,151,146,141,136,131,126,121,117,112,107,102,97,93,88,83,79,74,70,66,61,57,53,49,45,42,38,35,31,28,25,22,19,17,14,12,10,8,6,5,3,2,1,0,0,0,0,0,0,0,1,2,4,5,7,9,12,14,17,21,24,27,29,32,34,37,39,42,45,47,49,52,54,57,59,61,63,65,67,69,71,73,74,76,77,78,80,80,81,82,82,82,83,82,82,82,81,80,79,77,76,74,71,69,66,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,124,120,116,112,108,104,101,97,94,91,88,86,84,82,80,78,77,76,75,75,75,76,76,78,79,81,84,86,90,94,98,103,108,114,120,127,127,127,127,127,127,127,127,127,127,127,127,87,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,175,0,4,0,1,0,153,0,128,1,224,2,200,10,148,12,176,14,244,26,45,54,16,64,49,33,40,27,15,6,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,153,0,128,1,224,2,200,10,148,12,176,14,244,26,70,91,22,84,64,44,52,36,20,9,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,153,0,128,1,224,2,200,10,148,12,176,14,244,26,60,91,22,84,64,44,52,36,20,9,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,153,0,128,1,224,2,200,10,148,12,176,14,244,26,0,91,22,84,64,44,52,36,20,9,165,126,145,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,160,0,4,0,1,0,130,0,48,1,24,6,36,9,12,13,0,15,151,25,45,40,19,58,43,34,40,30,10,11,167,96,127,120,120,120,197,120,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,130,0,48,1,24,6,36,9,12,13,0,15,151,25,70,69,25,76,56,45,52,40,13,15,167,96,127,120,120,120,197,120,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,130,0,48,1,24,6,36,9,12,13,0,15,151,25,45,56,23,68,50,40,46,36,11,13,167,96,127,120,120,120,197,120,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,130,0,48,1,24,6,36,9,12,13,0,15,151,25,0,69,25,76,56,45,52,40,13,15,167,96,127,120,120,120,197,120,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,112,0,244,1,132,5,36,9,188,12,116,14,96,27,45,41,27,54,66,33,39,30,15,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,116,0,244,1,132,5,16,9,188,12,116,14,96,27,80,67,34,66,88,44,55,40,21,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,244,1,132,5,16,9,188,12,116,14,96,27,60,54,30,59,79,39,49,36,19,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,116,0,244,1,132,5,36,9,188,12,116,14,96,27,0,32,24,47,58,25,36,26,13,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,0,0,6,0,1,0,180,0,160,2,180,5,126,9,233,12,116,14,176,27,40,41,33,52,68,44,39,31,13,3,174,157,145,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,180,0,160,2,180,5,126,9,233,12,116,14,176,27,50,92,50,78,101,65,58,47,20,4,174,157,145,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,180,0,160,2,180,5,126,9,233,12,116,14,176,27,50,69,44,68,88,57,50,41,17,4,174,157,145,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,174,0,104,2,63,6,195,9,22,13,128,14,204,27,60,47,36,57,68,50,43,34,14,4,172,140,150,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,160,0,189,1,132,7,102,10,127,13,159,14,16,28,30,49,34,59,55,59,47,34,11,7,168,99,162,120,120,120,200,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,156,0,144,1,208,7,140,10,152,13,166,14,32,28,0,33,29,51,45,54,42,30,9,7,167,90,165,120,120,120,122,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,53,250,0,0,0,0,5,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,40,44,29,57,69,39,40,31,16,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,66,97,43,84,102,57,60,46,24,9,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,124,0,244,1,40,6,172,9,232,12,126,14,128,27,94,50,32,60,70,44,44,33,16,6,167,138,147,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,156,0,99,1,152,8,140,10,152,13,166,14,32,28,40,40,31,54,47,57,44,32,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,99,1,174,8,160,10,92,13,10,15,32,28,0,34,31,49,49,45,42,33,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,250,0,5,0,1,0,135,0,88,1,220,5,132,8,128,12,128,14,153,24,45,38,11,58,50,44,41,29,9,10,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,135,0,88,1,220,5,132,8,128,12,128,14,153,24,80,77,16,84,72,64,58,41,13,14,178,122,132,123,123,141,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,141,0,86,1,132,6,29,9,192,12,170,14,158,25,80,50,14,68,54,50,47,35,11,11,175,118,139,122,122,134,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,158,0,80,1,12,8,130,10,86,13,13,15,255,27,45,31,15,53,30,37,37,31,9,8,168,109,155,120,120,120,177,109,152,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,72,1,112,8,160,10,92,13,10,15,32,28,0,31,18,55,33,36,37,29,8,7,167,105,155,120,120,120,122,105,140,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,0,0,6,0,1,0,224,0,8,3,216,4,236,9,8,12,116,14,224,27,46,69,26,64,75,42,45,28,10,5,225,120,187,120,120,120,255,120,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,224,0,8,3,216,4,236,9,8,12,116,14,224,27,60,111,34,82,95,54,57,36,13,7,225,120,187,120,120,120,255,120,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,208,2,16,4,96,9,8,12,116,14,224,27,70,100,32,77,64,51,54,34,12,6,225,120,187,120,120,120,255,120,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,240,0,24,2,92,3,56,9,48,12,79,14,160,27,70,93,38,68,40,36,48,33,15,8,215,112,172,120,120,120,255,120,187,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,200,1,52,3,16,9,8,12,41,14,96,27,30,84,36,76,59,21,35,23,15,8,205,105,157,120,120,120,145,105,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,172,0,152,1,188,2,192,8,88,12,60,15,96,27,0,37,24,48,40,24,20,12,10,8,200,90,120,120,120,120,200,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,53,250,0,0,217,0,6,0,1,0,104,0,144,1,132,8,160,10,72,13,60,15,32,27,42,45,17,61,61,61,57,31,12,7,167,120,157,120,120,120,167,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,3,0,104,0,144,1,132,8,160,10,72,13,60,15,32,27,40,63,20,72,72,72,67,37,15,8,167,120,157,120,120,120,167,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,117,0,192,1,9,8,113,10,47,13,24,15,42,27,50,64,24,74,74,68,64,38,16,8,167,122,153,120,120,120,167,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,169,0,69,2,26,6,180,9,201,12,135,14,82,27,50,64,37,74,74,50,48,38,20,7,167,133,137,120,120,120,167,120,157,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,128,2,220,5,156,9,188,12,116,14,88,27,35,58,37,71,71,46,44,37,19,7,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,176,0,128,2,220,5,156,9,188,12,116,14,88,27,0,39,30,58,58,38,36,30,16,6,167,135,135,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,53,250,0,0,110,0,4,0,5,0,76,0,80,1,200,5,40,10,152,13,160,15,32,29,40,19,11,48,18,14,36,21,9,0,150,123,97,120,120,120,90,116,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,2,0,0,0,2,0,0,0,176,250,161,0,1,0,76,0,80,1,200,5,40,10,152,13,160,15,32,29,35,27,13,57,22,17,42,25,11,0,150,123,97,120,120,120,90,116,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,17,0,76,0,80,1,200,5,40,10,152,13,160,15,32,29,35,27,13,57,22,17,42,25,11,0,150,123,97,120,120,120,90,116,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,2,0,0,0,1,250,0,0,1,0,76,0,80,1,200,5,40,10,152,13,160,15,32,29,0,27,13,57,22,17,42,25,11,0,150,123,97,120,120,120,90,116,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,46,0,8,0,1,0,200,0,127,2,126,5,127,9,197,12,114,14,244,26,12,59,40,72,72,40,28,20,16,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,125,2,136,5,127,9,207,12,123,14,244,26,12,66,52,72,72,44,32,28,20,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,103,2,9,6,181,9,248,12,224,14,244,26,12,53,52,60,64,36,28,28,20,16,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,65,2,159,6,235,9,253,12,61,15,244,26,12,43,52,48,52,28,28,28,8,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,48,32,36,32,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,24,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,24,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,188,53,0,183,24,175,88,8,104,250,2,183,0,0,9,0,1,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,28,62,24,59,74,42,38,34,10,6,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,35,127,35,84,105,60,54,49,14,8,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,250,0,176,2,40,4,246,10,188,12,92,14,87,27,29,127,35,84,105,60,54,49,14,8,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,250,0,160,2,76,4,246,10,188,12,92,14,87,27,43,118,35,84,105,60,54,49,14,8,167,147,147,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,204,0,93,2,252,4,60,10,168,12,10,15,0,28,50,40,28,53,61,33,40,20,11,8,167,165,150,120,120,120,167,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,21,32,36,32,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,21,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,43,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,188,53,0,183,24,175,88,8,104,250,2,183,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,223,2,183,49,149,0,183,160,150,88,8,72,250,163,191,0,0,6,0,1,0,228,0,224,2,180,5,196,9,68,12,216,14,80,28,45,46,25,55,66,44,36,32,12,5,172,142,180,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,228,0,224,2,180,5,196,9,68,12,216,14,80,28,66,83,34,75,90,60,49,43,17,7,172,142,180,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,222,0,224,2,40,5,96,9,98,12,76,14,247,27,41,73,29,63,84,46,52,35,14,7,168,124,204,120,120,120,255,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,0,1,96,2,87,4,16,9,48,12,41,14,128,27,40,64,28,61,77,35,52,36,15,7,237,126,192,120,120,120,141,126,147,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,0,1,208,1,189,3,16,9,8,12,41,14,96,27,40,65,36,68,59,21,35,23,15,8,205,90,180,120,120,120,145,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,172,0,200,1,152,3,192,8,168,12,60,15,96,27,0,30,25,50,42,16,18,13,11,9,200,90,120,120,120,120,200,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,34,0,8,0,1,0,200,0,196,2,190,6,114,9,178,13,224,13,244,26,12,56,40,72,68,64,20,20,20,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,201,2,197,6,100,9,129,13,48,14,244,26,12,66,40,80,76,64,24,24,16,16,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,200,2,192,6,98,9,90,13,131,14,244,26,12,56,40,72,72,60,40,0,16,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,197,2,184,6,97,9,75,13,174,14,244,26,24,51,36,68,68,56,48,12,16,16,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,182,2,153,6,108,9,67,13,220,14,244,26,36,48,36,68,60,48,44,28,16,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,24,32,36,32,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,36,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,188,53,0,183,24,175,88,8,104,250,2,183,89,0,9,0,1,0,200,0,104,1,38,8,98,10,18,13,10,15,244,26,12,55,30,57,48,42,39,24,12,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,136,1,230,7,48,10,17,13,30,15,244,26,12,111,36,92,64,64,56,36,20,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,136,1,223,7,46,10,23,13,38,15,244,26,12,110,40,88,64,64,56,40,24,16,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,136,1,224,7,48,10,26,13,40,15,244,26,12,97,36,84,60,60,56,36,24,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,144,1,245,7,60,10,43,13,84,15,244,26,12,68,40,60,56,56,56,40,20,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,200,1,152,8,140,10,16,14,180,15,159,27,24,24,36,32,36,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,168,0,96,1,204,6,196,9,176,14,48,17,244,26,42,37,44,40,8,36,24,12,0,0,125,125,137,137,150,175,125,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,1,0,168,0,96,1,204,6,196,9,176,14,68,17,244,26,30,37,44,40,8,36,24,12,0,0,125,125,137,137,150,175,125,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,188,53,0,183,24,175,88,8,104,250,2,183,1,0,168,0,96,1,204,6,196,9,176,14,68,17,244,26,0,26,40,32,8,16,8,12,0,0,125,125,137,137,150,175,125,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,223,2,183,49,149,0,183,160,150,88,8,72,250,163,191,0,0,5,0,1,0,200,0,38,1,6,5,126,10,152,11,253,14,244,26,29,91,56,52,48,44,16,28,12,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,58,1,37,5,140,10,174,16,160,15,244,26,51,74,48,52,40,36,12,16,16,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,42,1,244,4,57,10,85,10,215,16,244,26,98,59,48,40,32,20,8,4,4,4,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,104,52,52,36,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,23,0,7,0,1,0,200,0,191,1,229,5,86,9,209,12,236,14,244,26,23,73,36,72,76,40,40,28,24,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,200,0,193,1,232,5,89,9,218,12,246,14,244,26,24,70,32,72,76,44,44,36,28,16,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,194,1,241,5,85,9,209,12,239,14,244,26,12,55,32,64,60,36,36,28,20,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,200,0,200,1,119,6,146,9,16,13,86,15,244,26,12,38,36,48,40,32,32,24,16,12,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,36,39,44,36,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,48,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,184,129,0,191,188,232,98,182,64,250,22,8,0,0,6,0,1,0,152,0,56,2,132,3,44,11,192,13,120,15,159,27,45,62,29,67,58,32,29,22,14,6,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,152,0,56,2,132,3,44,11,192,13,120,15,159,27,84,116,40,92,80,44,40,31,20,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,152,0,72,2,92,3,144,11,232,13,140,15,159,27,40,112,40,80,80,44,40,31,20,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,55,32,36,32,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,60,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,0,0,6,0,1,0,152,0,56,2,132,3,44,11,192,13,120,15,159,27,55,116,40,92,80,44,40,31,20,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,1,0,152,0,56,2,132,3,44,11,192,13,120,15,159,27,74,116,40,92,80,44,40,31,20,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,3,0,176,0,56,1,92,3,56,9,12,13,60,15,144,26,46,78,4,96,52,28,28,40,16,10,177,125,102,120,120,120,177,125,117,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,152,0,200,1,12,3,144,11,16,14,180,15,159,27,17,32,36,32,44,36,32,20,16,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,16,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,152,0,72,1,208,2,144,11,16,14,200,15,159,27,0,22,36,20,20,8,4,4,8,8,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,175,0,4,0,1,0,116,0,232,1,136,4,236,9,168,12,156,14,96,27,45,48,27,63,60,34,37,31,16,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,232,1,136,4,236,9,168,12,156,14,96,27,70,93,38,88,84,48,52,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,232,1,136,4,236,9,168,12,156,14,96,27,60,75,34,79,75,43,46,39,20,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,232,1,136,4,236,9,168,12,156,14,96,27,0,41,25,58,56,32,34,29,15,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,152,153,153,154,156,157,159,161,164,167,169,172,176,179,182,186,190,193,197,201,205,209,212,216,220,223,227,230,234,237,240,242,245,247,249,251,252,253,254,254,255,255,255,255,255,255,254,253,251,250,248,246,243,241,238,236,233,230,228,224,221,218,215,211,208,204,200,196,192,188,184,180,176,172,167,163,159,154,150,145,141,136,132,127,123,118,114,109,105,101,96,92,88,84,80,76,72,68,64,60,57,53,50,47,43,40,38,35,32,29,26,23,21,18,15,13,10,8,7,5,3,2,1,0,0,0,0,0,110,0,3,0,5,0,240,0,13,2,108,7,128,12,156,14,23,17,224,23,60,24,54,8,8,16,6,8,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,5,0,240,0,13,2,108,7,128,12,156,14,23,17,224,23,50,24,54,8,8,16,6,8,4,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,240,0,13,2,108,7,128,12,156,14,23,17,224,23,0,15,43,6,6,13,5,6,3,0,162,90,165,120,120,120,132,165,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,181,2,30,0,23,23,23,23,23,22,22,23,23,23,23,23,23,23,23,23,22,22,23,23,24,24,23,23,24,24,24,23,23,22,22,22,21,21,22,22,22,22,22,22,21,22,22,22,22,21,21,21,22,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,19,19,19,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,18,18,17,18,18,18,17,17,17,17,18,18,18,18,18,18,18,18,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,17,17,17,17,16,16,15,16,17,17,17,17,17,17,17,17,17,16,16,16,17,17,17,16,17,17,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,18,19,18,18,18,18,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,20,20,19,19,19,19,19,19,20,20,19,19,20,20,20,20,19,19,20,20,19,19,20,20,20,20,21,21,21,21,21,21,21,21,20,20,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,22,22,23,23,23,23,24,24,24,24,24,24,24,24,24,24,23,23,23,24,24,24,24,25,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,22,22,22,22,22,23,22,22,22,22,22,22,21,21,21,21,21,20,21,21,20,20,20,19,19,18,18,17,14,12,7,1,222,165,138,148,195,198,198,244,25,46,55,66,97,101,57,31,23,253,219,214,234,2,15,26,54,77,73,65,79,75,55,28,2,254,245,236,249,23,34,48,51,57,73,62,47,36,29,22,3,249,248,1,11,20,50,73,76,44,6,13,30,51,1,2,2,251,226,225,253,13,8,4,31,33,20,10,32,44,25,243,222,217,210,204,204,253,34,46,54,65,72,71,46,40,52,37,7,255,7,22,2,246,23,47,56,15,36,47,51,22,16,49,55,31,255,25,43,30,1,22,43,40,6,19,42,28,242,222,9,8,241,226,12,37,31,35,46,81,83,51,45,74,60,27,17,41,65,55,29,42,42,247,179,146,149,154,146,144,229,243,17,31,88,105,125,118,68,76,252,220,204,207,195,218,252,22,59,44,8,243,191,206,217,166,153,171,211,228,251,20,87,118,103,109,84,65,31,255,232,250,252,253,9,18,43,85,96,88,59,31,48,48,245,191,205,221,31,35,18,39,43,19,237,232,244,248,215,195,212,205,218,236,20,42,32,19,12,21,246,225,229,255,2,1,27,51,57,0,0,0,75,8,18,0,40,40,40,40,40,40,40,40,40,39,39,39,39,39,40,39,39,39,38,39,38,38,38,38,38,38,38,37,37,36,36,36,36,36,35,35,36,35,35,34,35,34,34,33,33,33,33,33,33,33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,30,30,30,29,29,29,29,29,30,29,29,29,28,29,28,28,28,28,27,27,27,28,27,27,27,27,27,27,27,27,27,27,26,26,26,27,27,26,26,25,25,25,26,26,26,26,26,26,25,25,26,26,26,26,25,26,26,26,26,25,24,24,25,25,25,25,26,25,26,26,26,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,24,25,25,26,26,25,26,26,26,26,26,26,26,26,27,26,26,26,26,26,26,27,27,27,26,26,26,26,26,26,26,26,26,27,27,28,27,28,28,28,28,28,28,28,28,28,28,28,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,29,30,30,30,31,31,31,31,30,30,30,30,30,30,30,31,31,30,31,31,31,31,31,31,32,32,33,33,33,33,33,33,34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,36,36,36,36,36,36,37,37,36,36,36,37,37,37,37,37,38,37,37,37,38,38,38,38,38,38,39,39,38,39,40,40,39,39,39,40,41,41,41,41,42,42,42,42,42,42,42,42,41,42,42,42,42,42,42,42,42,43,43,43,43,43,44,43,43,43,43,44,44,44,44,45,45,45,45,45,45,44,44,45,45,45,45,45,46,45,45,45,46,45,45,45,45,45,45,45,45,45,45,44,44,44,45,45,45,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,43,43,43,43,43,43,42,42,42,42,42,42,42,42,42,42,43,43,42,42,42,42,42,42,42,42,42,42,41,41,41,41,41,42,42,42,41,42,42,42,42,42,42,42,41,42,41,41,41,41,41,41,41,42,42,41,41,40,40,40,40,39,39,39,39,39,38,38,38,38,38,38,39,39,39,39,38,38,38,38,38,38,38,37,37,38,37,36,36,36,36,36,36,36,35,35,35,35,35,35,35,35,36,35,34,32,32,33,34,34,34,33,32,31,32,33,32,32,31,31,30,30,31,31,31,31,30,30,30,31,31,31,32,31,31,30,30,30,30,30,29,29,29,28,29,31,33,31,26,25,27,30,31,31,29,27,27,28,28,29,31,31,28,26,27,26,26,18,238,195,224,70,120,72,11,245,235,247,42,84,72,32,5,251,0,31,65,61,27,7,10,20,34,48,49,33,16,12,20,33,45,48,35,16,8,19,36,44,42,32,20,14,19,33,44,43,31,18,16,23,33,38,36,28,22,21,24,28,29,30,32,33,29,23,23,29,32,31,32,32,27,22,23,28,30,32,31,22,21,28,33,31,30,30,25,21,22,31,38,33,21,20,29,32,28,29,32,26,21,29,37,33,27,28,28,27,32,37,30,23,28,35,32,28,30,36,38,32,21,25,42,41,29,29,34,29,29,39,43,34,26,26,29,33,40,42,38,31,29,31,32,33,41,47,40,27,23,28,38,47,46,31,24,38,45,32,30,45,46,34,33,39,36,35,41,42,37,34,35,34,35,43,46,37,33,40,42,34,37,46,40,32,43,48,33,29,45,52,42,33,32,38,44,44,46,49,41,28,33,52,57,40,25,36,53,52,36,32,46,54,44,37,46,45,33,42,58,52,37,36,38,38,48,58,48,32,31,42,50,51,42,34,43,54,46,36,44,45,34,42,60,51,31,43,58,37,22,47,62,47,42,45,33,32,54,59,39,31,36,45,55,46,31,31,43,53,58,51,33,22,28,44,61,59,39,30,34,34,42,54,47,33,36,44,34,32,61,70,25,0,32,61,64,66,45,254,255,58,82,50,35,40,26,21,48,60,45,46,41,13,25,74,70,25,23,42,38,36,49,52,46,45,35,21,38,63,55,37,30,28,36,47,47,50,50,33,15,30,60,58,34,34,44,29,18,48,77,55,19,17,30,29,47,73,56,21,16,28,39,48,47,35,33,42,42,30,26,33,38,37,43,52,43,21,14,34,46,37,34,44,41,23,17,24,36,52,59,39,2,254,30,46,46,62,53,3,243,29,51,30,33,58,41,7,12,33,38,42,42,19,13,44,46,9,6,45,55,26,12,31,33,9,23,63,51,255,246,30,54,41,33,35,16,255,13,37,49,52,40,8,241,8,57,70,41,11,0,255,22,66,72,29,255,3,20,35,44,41,25,15,26,34,21,19,39,51,30,0,8,44,48,20,13,29,29,25,42,48,22,4,19,35,32,36,48,39,17,5,13,32,48,48,27,16,30,32,13,12,39,54,38,22,22,21,16,28,36,31,35,46,42,13,240,2,60,89,52,253,243,4,31,71,79,22,234,9,45,33,37,63,36,243,2,54,58,29,22,22,16,35,62,42,7,6,27,48,50,33,22,26,24,20,31,53,48,18,10,32,45,40,25,17,40,57,33,8,16,41,53,32,21,45,48,17,255,22,69,78,34,254,14,49,39,14,50,73,18,245,43,83,43,253,7,50,66,52,37,21,3,17,61,75,52,26,6,4,37,71,63,35,27,21,13,40,74,58,26,20,24,44,62,47,26,27,30,43,60,59,35,2,9,48,72,69,48,23,17,24,34,59,69,33,17,60,73,14,246,43,78,66,51,30,10,23,54,64,49,38,38,32,35,52,47,30,40,59,44,21,37,54,38,36,57,44,17,44,72,37,9,42,65,45,37,44,36,29,45,55,35,25,51,61,39,27,35,40,48,60,46,19,31,57,50,38,46,46,21,21,57,72,48,26,11,17,69,88,32,252,31,60,39,34,59,56,23,15,37,42,34,55,74,42,254,9,57,67,49,36,31,28,28,43,60,56,39,23,10,25,62,74,48,22,20,27,33,48,64,58,33,14,18,40,57,57,55,34,0,9,59,74,54,37,15,254,25,74,71,26,17,49,42,4,24,73,62,23,22,34,25,26,62,69,18,0,41,57,28,23,48,43,17,28,46,33,27,36,28,29,50,45,16,15,44,53,31,20,33,38,34,40,33,11,20,49,49,29,19,26,41,42,15,0,31,58,47,31,24,10,8,36,55,41,27,21,10,9,34,57,43,18,27,36,10,2,39,51,29,28,30,10,16,46,37,5,14,43,45,26,15,23,29,25,28,38,39,27,21,24,22,15,26,46,38,15,15,28,34,29,24,21,27,36,27,16,28,40,28,11,22,48,39,5,9,40,44,30,28,27,14,12,33,54,46,21,5,8,30,50,45,27,16,18,26,37,42,31,14,18,32,24,21,48,57,27,0,4,27,50,52,26,9,23,38,27,19,30,38,35,34,28,14,13,29,45,44,31,22,20,22,26,30,35,35,25,21,30,37,33,29,27,19,23,43,46,25,15,22,24,32,48,44,18,7,25,41,33,25,34,40,26,19,31,34,26,34,41,28,18,27,36,29,29,44,42,19,14,35,43,27,23,43,45,20,16,36,45,41,42,31,15,27,49,44,27,28,37,33,34,44,37,20,26,45,47,34,31,36,37,32,33,43,46,36,31,33,32,32,42,50,43,30,27,36,46,46,37,33,32,32,43,58,53,31,22,30,41,52,56,44,31,28,30,37,53,59,42,23,27,42,51,50,42,29,26,42,58,57,42,27,24,35,50,55,47,34,32,38,41,43,47,46,37,31,36,42,43,42,47,46,33,27,41,56,49,35,34,37,38,44,51,46,37,36,37,37,40,46,46,39,30,31,41,48,45,41,38,32,31,39,46,44,41,41,38,34,35,40,43,44,44,38,31,33,41,42,40,36,39,46,42,28,31,43,42,37,42,43,36,37,41,33,29,40,44,35,34,41,39,32,31,37,42,42,36,32,33,33,34,41,45,38,30,33,37,35,34,38,40,37,33,34,38,38,37,37,36,34,34,36,36,36,35,32,30,37,47,41,26,24,33,38,41,43,36,25,27,36,40,42,39,31,25,29,35,36,38,39,33,27,31,34,33,35,36,31,28,32,34,33,36,36,30,27,33,35,32,33,32,30,29,32,34,34,34,29,23,25,32,36,34,29,27,28,27,27,31,35,31,25,22,23,26,31,33,31,29,27,22,22,29,34,33,29,25,21,25,32,34,29,27,27,26,25,25,27,29,30,28,27,26,24,23,24,28,29,27,25,24,26,28,30,29,26,25,26,29,28,24,22,27,31,30,29,29,25,22,25,29,28,29,30,27,23,24,28,29,30,30,27,23,24,27,31,33,33,27,24,26,30,31,31,32,28,24,26,31,31,30,30,28,25,27,32,31,26,26,29,29,30,32,30,27,28,30,30,29,30,32,32,29,27,28,31,34,33,28,27,28,29,29,33,34,29,27,30,31,31,32,32,29,28,30,31,32,33,31,28,28,31,32,32,32,30,27,29,33,33,32,31,31,31,32,33,32,32,35,36,33,33,34,35,33,33,35,36,34,33,33,34,34,34,34,34,33,33,33,33,34,35,35,35,34,33,33,34,35,35,35,34,35,37,37,36,35,35,36,37,39,39,38,36,36,36,38,39,37,37,38,38,37,37,38,38,38,38,38,39,38,37,38,39,38,37,38,38,37,37,38,38,38,37,37,38,39,39,38,38,39,40,39,39,39,39,39,38,39,41,41,39,37,39,40,40,40,41,40,38,39,40,40,41,42,40,38,39,39,41,41,39,38,38,40,42,40,39,39,40,40,40,0,59,11,50,0,7,251,250,9,253,8,246,253,17,225,2,33,228,2,29,239,238,19,3,255,0,249,12,254,3,7,252,250,241,17,31,231,239,24,248,234,10,12,16,253,242,4,252,6,11,238,253,254,30,19,213,253,23,235,254,20,252,17,3,232,15,245,237,33,254,225,15,25,255,246,4,252,234,13,11,235,10,27,253,242,14,243,239,14,241,22,48,245,211,236,6,8,18,11,248,234,0,18,244,251,21,245,236,5,4,24,4,229,254,17,5,244,4,19,240,246,21,10,240,2,2,229,19,14,5,7,224,244,23,9,240,252,34,253,206,8,50,235,0,25,229,4,32,237,243,12,6,16,239,236,27,254,4,254,244,28,247,253,21,244,241,9,248,13,20,236,13,10,232,244,25,4,217,12,38,254,223,224,0,43,40,243,222,238,15,27,236,239,32,20,214,225,21,29,247,241,0,11,31,248,220,7,0,21,22,217,203,39,56,222,237,20,253,4,9,238,227,9,23,11,0,242,242,242,53,4,207,45,255,228,27,255,220,12,45,250,249,244,235,8,19,8,253,18,241,212,249,40,39,244,225,248,23,12,255,8,217,0,42,251,233,22,29,215,234,19,6,253,0,19,250,238,3,3,24,35,221,209,36,21,237,10,8,250,228,6,29,10,243,227,247,0,5,29,18,216,243,46,231,252,22,244,254,249,249,255,1,250,7,14,252,29,246,189,21,33,9,13,233,246,0,243,12,30,249,221,40,20,210,252,255,1,46,25,220,237,15,13,31,233,209,30,44,219,230,29,238,253,35,255,236,251,7,253,5,254,19,48,197,189,50,11,34,29,191,4,34,236,247,242,246,35,43,231,216,7,9,37,3,190,247,64,16,216,5,243,241,59,237,197,19,56,18,207,223,253,37,45,215,206,32,51,232,224,13,26,37,229,222,251,22,43,226,219,28,251,247,13,2,0,253,3,251,240,31,25,226,232,2,25,37,254,217,234,26,21,246,232,245,18,31,247,216,15,20,231,226,16,55,250,218,12,57,216,206,81,255,199,44,51,221,198,6,248,27,58,225,215,243,27,48,239,188,47,52,186,242,45,6,0,237,203,5,85,241,190,21,15,235,49,33,167,255,98,212,241,46,194,0,48,236,9,2,222,23,35,0,232,0,25,249,9,4,227,4,37,46,240,171,233,46,11,225,19,18,228,231,248,33,28,215,241,35,241,6,69,223,151,32,72,199,19,69,188,199,35,46,243,226,34,3,200,246,46,34,255,249,231,231,41,27,211,220,24,38,24,243,0,254,205,243,56,1,254,22,226,244,12,244,247,26,54,239,222,241,3,46,28,247,204,236,32,14,245,238,30,23,252,245,210,0,34,227,244,74,7,237,4,202,243,44,36,245,249,9,241,238,232,59,55,157,197,93,60,204,250,23,177,244,82,8,1,6,199,5,35,2,6,197,234,54,9,18,6,216,229,13,25,27,255,181,252,73,253,236,236,246,51,33,234,224,10,11,248,5,0,235,24,21,234,18,0,224,31,31,199,236,46,252,234,239,5,48,246,216,24,26,226,217,249,52,52,3,241,206,207,23,39,12,255,31,247,194,22,51,0,210,201,55,90,228,187,249,14,16,22,254,246,249,226,13,31,243,253,34,0,238,7,0,241,246,238,39,56,232,210,227,253,33,28,228,214,55,56,208,213,15,252,217,222,26,103,29,197,232,251,228,0,233,29,96,245,215,0,0,245,242,34,31,24,25,202,180,254,8,35,65,216,219,48,53,252,159,205,49,81,27,209,182,224,78,31,231,4,255,30,238,200,16,2,238,10,250,30,67,220,165,4,64,38,254,214,215,33,50,254,234,204,7,61,39,242,214,16,246,218,11,20,32,30,247,179,228,97,35,196,212,16,34,3,5,5,215,225,4,16,52,27,214,245,247,239,17,24,1,239,240,34,50,233,176,239,69,48,210,203,250,54,82,209,200,41,240,243,21,242,241,24,24,2,244,4,255,238,10,7,246,23,1,250,24,237,227,19,7,9,9,233,250,0,254,23,251,4,245,208,32,60,251,198,199,40,91,11,180,213,48,22,233,240,0,249,255,36,12,243,211,226,46,48,241,243,239,207,225,38,81,23,213,239,17,39,7,220,225,249,13,0,246,33,36,248,243,0,247,248,2,20,24,4,238,229,2,240,223,28,88,27,202,211,244,6,217,13,77,223,220,43,242,231,38,1,24,29,175,213,33,2,21,28,10,241,250,4,246,236,11,31,253,25,25,207,248,14,8,32,246,202,237,8,57,34,227,199,243,12,244,42,48,242,222,221,43,34,197,200,13,72,22,244,222,189,13,34,1,37,38,194,194,47,19,250,0,179,4,125,15,171,248,3,219,50,64,199,213,77,44,244,0,168,224,91,4,222,32,40,239,248,7,249,6,10,14,16,250,5,238,224,37,25,247,246,192,230,99,69,186,201,34,13,240,242,6,20,40,8,202,253,252,223,30,28,243,254,248,4,20,230,237,249,3,36,241,193,242,36,30,1,236,244,210,226,85,78,227,203,203,250,47,5,1,51,35,246,234,194,208,30,54,42,15,211,226,21,19,246,236,6,46,18,235,206,216,27,28,43,13,195,251,12,18,23,236,5,30,230,236,18,221,231,59,50,233,200,14,62,239,220,41,240,240,39,14,222,244,48,41,244,223,242,251,216,246,62,31,224,245,25,7,220,232,4,5,19,7,231,11,10,241,1,227,237,42,44,0,230,244,239,238,30,34,19,234,196,215,23,37,14,3,214,0,36,255,192,185,50,91,43,253,218,226,244,2,250,243,41,28,243,10,9,226,245,242,246,63,33,239,21,212,202,11,37,53,32,252,229,208,243,6,252,37,59,21,233,226,211,228,33,38,247,229,7,4,243,221,224,83,74,210,198,202,5,62,27,245,232,17,3,210,25,76,241,185,29,80,236,201,228,20,78,39,240,185,200,56,76,13,237,223,200,246,48,32,251,249,13,39,14,199,171,10,79,44,241,166,181,37,66,33,242,221,233,240,252,39,20,216,2,249,2,26,194,221,52,40,18,7,243,219,227,14,26,48,21,206,241,13,217,254,43,3,0,30,241,221,5,12,20,49,28,202,178,227,13,41,51,29,0,216,208,251,34,1,237,3,2,5,4,230,240,7,42,31,246,207,213,19,6,27,82,243,194,220,10,42,32,230,208,63,60,192,239,16,251,34,47,2,229,13,4,199,3,62,47,248,190,197,253,17,37,55,231,151,37,71,194,214,42,23,0,252,252,2,10,7,9,3,242,251,241,223,248,36,61,255,187,203,246,12,22,39,0,236,253,232,11,52,8,202,199,6,68,42,241,236,5,255,0,15,249,0,243,252,60,38,215,184,231,37,66,34,229,237,17,11,244,7,16,254,253,25,0,212,251,2,222,249,30,40,1,232,240,7,1,236,242,255,5,17,4,248,0,238,250,252,244,29,24,243,212,245,22,222,6,56,245,215,3,0,1,20,240,8,14,222,42,72,223,213,234,15,33,21,11,234,12,25,247,237,6,252,5,20,237,251,18,255,17,12,4,251,214,239,21,12,41,11,180,214,52,31,238,248,2,8,29,247,216,2,40,248,240,7,243,22,18,233,246,245,238,34,52,249,252,253,221,241,1,26,35,229,218,10,41,22,235,1,14,237,233,252,252,0,18,22,24,5,246,245,245,219,254,53,14,249,11,1,225,245,255,2,20,37,255,214,224,16,22,249,234,224,253,17,250,3,249,227,233,255,54,44,225,209,209,232,60,95,239,172,222,31,27,252,12,0,252,32,37,35,224,180,246,55,47,11,231,213,2,28,3,37,23,231,192,232,41,17,242,247,253,25,39,236,212,244,18,45,244,245,1,221,8,28,252,253,13,230,216,14,23,35,33,243,5,11,245,230,241,29,24,0,12,16,0,11,8,254,2,246,234,243,250,33,44,0,217,214,238,15,50,11,215,211,6,28,254,2,234,219,23,24,37,25,218,243,255,233,246,25,13,251,28,11,14,33,223,174,0,60,0,240,248,232,254,18,21,29,26,208,187,13,11,50,48,215,223,252,251,253,41,64,26,220,200,1,238,234,30,48,59,242,206,223,189,255,83,50,249,218,197,227,29,23,0,250,236,236,9,36,231,203,21,33,251,249,219,221,243,51,33,243,240,223,21,15,0,51,252,191,17,68,32,242,238,232,225,32,62,6,206,1,29,233,221,248,20,32,57,46,227,202,215,235,25,59,47,244,203,0,33,4,4,8,235,208,231,20,36,19,253,1,241,228,0,21,12,246,248,0,47,10,214,229,215,12,55,27,243,200,236,32,52,47,5,213,212,227,252,37,69,31,246,225,231,6,32,49,205,190,21,238,210,243,5,12,27,55,253,169,195,239,19,11,45,63,219,192,4,255,246,27,11,249,38,52,38,14,237,235,234,11,64,36,8,255,237,251,13,244,229,246,31,49,35,230,178,201,240,16,34,37,246,201,233,212,212,35,60,39,252,186,178,253,41,45,67,12,228,226,195,211,52,104,46,225,238,244,248,21,237,232,59,69,15,191,169,251,50,67,33,253,232,212,236,245,254,26,14,252,242,245,221,193,246,31,60,77,16,170,160,240,57,64,19,225,220,219,7,44,238,251,53,3,226,5,244,234,11,35,38,0,251,3,251,11,17,8,251,241,240,8,20,251,0,238,248,43,0,234,4,243,251,29,250,242,52,44,229,207,250,11,7,49,30,232,8,251,215,211,228,31,46,39,253,196,185,253,51,4,253,14,240,242,3,253,236,249,16,22,22,4,254,0,252,248,238,249,243,252,27,8,222,235,22,12,242,229,232,14,44,26,246,240,254,13,7,236,249,38,20,10,33,220,198,7,24,31,10,251,2,227,236,24,44,1,215,250,5,34,28,237,1,48,44,213,167,212,2,48,70,28,219,192,214,42,68,236,236,9,252,237,242,11,29,14,234,213,219,232,20,57,32,246,194,196,239,26,53,35,28,246,228,241,3,50,33,19,34,14,234,218,245,9,26,44,16,239,240,214,228,34,41,8,244,214,222,4,255,16,36,248,211,204,249,22,19,14,237,224,235,248,233,241,41,84,35,204,213,15,2,236,5,30,37,246,193,220,23,65,66,8,223,224,210,205,23,68,43,20,235,230,240,3,18,4,21,30,254,248,10,3,253,10,23,26,245,240,4,217,207,6,28,7,253,226,197,1,41,13,248,212,224,242,247,25,45,39,226,225,18,19,25,9,220,7,67,43,243,193,197,14,94,77,8,227,216,252,14,2,8,28,5,170,178,20,57,32,204,164,218,37,60,34,230,217,1,244,240,16,16,0,237,1,35,252,232,228,227,40,50,9,221,200,7,84,73,26,244,174,182,39,81,49,17,194,183,0,28,45,27,227,230,2,12,251,244,248,218,10,25,3,22,238,233,246,233,36,60,13,247,2,12,0,21,7,224,18,58,36,243,191,207,238,18,32,28,33,3,238,251,14,251,217,239,3,3,33,6,218,227,251,36,40,245,207,194,218,25,54,10,233,3,249,231,4,35,12,240,238,4,15,244,239,16,9,18,15,224,251,18,12,247,1,17,253,254,254,7,245,4,52,7,202,226,6,14,17,22,242,214,3,33,21,19,228,199,252,38,65,44,214,187,232,11,37,61,22,197,179,227,17,34,31,12,244,1,245,222,250,252,8,28,14,248,234,235,225,252,40,43,10,227,229,1,26,41,23,233,203,222,248,47,74,16,237,216,235,29,27,251,2,250,220,236,6,0,9,49,56,15,218,197,210,249,46,46,16,251,225,225,2,13,11,32,253,211,247,12,240,251,14,243,13,49,12,218,226,243,2,30,49,22,249,232,228,1,18,5,248,255,7,12,16,16,246,230,3,23,19,0,235,233,14,49,17,254,235,205,249,12,35,16,215,218,3,30,245,218,223,222,248,31,41,17,237,227,243,248,249,7,11,16,36,9,244,8,8,247,255,39,36,240,220,245,20,41,17,243,254,13,15,13,250,230,238,252,11,15,9,1,11,22,253,223,232,8,0,255,6,248,230,236,0,1,13,19,255,242,227,230,3,18,250,241,238,241,9,21,23,16,13,250,222,231,4,31,37,21,254,244,227,230,2,22,32,23,253,228,216,248,37,56,29,251,214,209,243,13,39,42,247,236,239,240,18,246,254,31,246,235,3,245,250,10,13,22,20,11,239,228,227,4,17,6,17,16,0,236,12,33,250,254,247,241,14,249,249,12,4,2,6,243,228,254,16,10,12,14,4,246,245,252,245,6,19,3,15,5,248,250,247,2,255,0,12,1,240,228,247,20,30,4,231,235,251,253,231,240,35,34,254,254,248,226,240,248,14,31,4,245,254,251,9,17,12,22,4,227,222,5,29,16,245,239,24,8,246,14,13,244,228,238,5,29,18,5,249,229,250,3,15,15,247,241,237,248,18,2,3,10,253,7,2,232,237,0,116,8,28,0,1,1,1,0,1,3,2,255,252,252,255,3,7,8,5,0,253,253,255,0,3,3,2,0,254,1,4,4,2,0,255,0,0,0,0,0,3,5,4,0,253,249,250,253,0,0,254,253,254,1,8,10,5,255,244,238,239,246,245,231,228,234,249,20,41,42,24,1,239,232,245,9,24,27,17,1,247,247,254,5,9,8,5,2,1,1,1,3,7,8,5,0,252,250,250,253,1,6,8,6,4,0,255,255,0,0,0,254,253,254,255,0,1,4,7,6,2,255,251,249,252,2,7,7,8,9,11,14,15,5,240,223,215,197,189,207,232,6,33,41,31,15,4,253,254,4,12,21,21,15,8,254,248,249,255,2,1,0,3,3,0,254,0,3,6,9,9,6,6,7,2,0,2,255,254,255,251,253,1,2,1,0,1,1,0,0,253,252,253,0,7,2,255,0,255,255,0,0,254,249,248,247,253,4,254,0,2,245,240,250,251,246,0,6,0,4,10,3,1,6,3,4,5,7,8,12,2,252,0,2,0,9,7,255,6,12,254,254,9,251,241,6,13,247,253,8,249,254,10,2,1,1,251,252,4,251,254,12,255,238,0,3,249,0,14,8,246,0,4,246,255,1,253,5,3,252,252,255,250,1,9,0,0,6,252,249,1,4,10,2,0,5,242,253,15,255,252,9,255,244,4,11,0,4,5,251,253,250,0,9,255,253,7,255,242,254,4,248,12,17,245,253,0,246,8,9,249,6,3,244,253,4,248,4,10,253,0,7,2,4,254,0,254,252,254,251,252,9,6,13,6,247,252,5,250,6,4,251,2,2,252,5,4,0,3,252,250,255,253,4,14,0,244,2,254,253,11,3,0,6,250,240,0,5,0,9,6,252,0,248,245,6,10,6,2,252,4,250,253,5,7,6,0,255,5,252,252,0,3,2,252,255,5,248,0,5,245,251,17,6,0,9,249,248,3,2,0,6,6,248,240,0,254,248,14,12,5,9,253,1,4,242,5,11,246,6,11,250,3,1,1,255,238,2,0,237,12,14,243,7,10,249,9,12,246,3,2,242,1,12,250,254,11,2,248,0,248,244,4,246,252,16,0,10,13,231,253,10,246,4,25,1,249,3,0,244,1,12,6,4,6,0,250,248,252,255,2,1,10,0,245,254,8,1,0,11,1,241,1,0,243,15,15,240,11,11,231,1,16,250,8,11,246,250,252,250,0,6,7,2,16,0,240,4,248,234,20,6,237,13,8,235,5,12,0,2,0,252,10,252,254,0,248,255,0,255,0,248,7,10,255,11,1,245,9,5,248,3,2,248,1,9,4,7,255,1,13,249,247,9,248,245,15,8,4,14,247,246,11,246,242,19,0,245,16,251,239,16,246,233,24,6,237,17,252,235,13,0,246,26,4,249,28,254,225,4,250,239,14,254,251,15,11,0,255,249,254,255,0,253,12,17,254,249,247,249,10,10,0,4,3,252,0,250,240,9,12,248,10,12,246,2,255,246,11,2,247,18,11,241,4,2,233,10,15,243,0,2,247,3,254,254,19,8,251,0,252,240,243,4,4,9,19,0,248,10,239,239,18,252,1,22,248,247,14,251,2,9,241,253,4,243,5,13,0,5,255,253,1,254,4,244,246,27,255,252,22,250,234,6,7,251,3,15,250,248,7,240,232,19,12,253,27,6,227,6,255,234,15,16,0,13,2,246,0,7,249,241,7,7,247,18,2,245,19,255,230,10,245,249,34,7,247,28,249,223,2,2,250,13,13,249,249,245,3,13,255,251,5,241,246,19,2,251,16,249,235,12,8,250,7,254,238,0,12,3,248,11,11,251,20,0,230,22,7,249,10,239,242,21,243,250,24,252,244,11,249,250,8,9,2,247,250,0,251,12,8,253,11,6,249,254,255,0,247,252,15,0,242,10,10,254,245,250,6,253,250,21,255,241,0,1,255,247,2,27,241,247,25,255,236,3,237,244,13,10,15,19,3,11,250,233,11,15,247,8,4,239,13,0,235,10,12,241,254,3,246,24,22,243,10,244,214,6,6,254,39,12,239,4,6,241,248,16,253,251,18,241,238,31,238,217,41,8,215,35,20,216,17,18,225,9,7,236,12,7,238,4,255,255,20,241,252,31,0,243,20,8,238,6,1,6,252,234,18,18,235,14,250,242,14,252,249,26,251,233,253,13,251,232,22,33,242,250,30,239,225,16,2,217,26,31,232,251,27,248,247,6,255,4,4,243,9,8,243,3,0,9,13,226,12,5,218,40,38,230,26,242,233,13,233,248,41,236,245,31,234,245,19,233,2,17,231,4,11,230,254,13,247,16,20,7,8,246,240,0,243,8,36,2,229,22,15,229,13,6,245,4,0,243,244,9,26,232,14,45,217,245,34,212,255,51,235,235,50,245,248,36,228,220,18,238,250,27,244,238,12,245,248,14,254,254,25,6,248,7,238,254,27,2,249,6,235,9,7,11,5,248,252,253,230,249,24,3,240,42,23,233,10,254,219,3,0,233,18,18,235,3,29,0,234,247,247,252,254,11,21,0,253,253,237,11,42,237,252,29,232,225,21,254,7,8,219,249,39,231,22,47,219,6,41,225,9,11,221,3,19,250,1,9,240,252,4,255,11,239,254,23,254,237,22,253,245,19,247,237,14,245,244,21,5,244,1,1,6,251,253,37,7,230,37,17,207,6,31,229,242,28,251,234,13,244,250,24,249,3,13,214,18,47,242,12,3,245,44,7,224,43,255,223,45,245,233,22,252,255,255,203,245,221,170,235,244,185,26,35,218,12,20,237,40,35,238,43,32,236,46,20,220,62,253,205,55,6,197,57,251,209,49,23,225,43,244,227,23,20,244,0,18,12,221,245,47,234,243,48,249,193,37,13,210,11,34,254,10,244,25,4,215,13,17,201,22,7,187,38,30,204,40,12,212,9,242,230,21,220,0,45,229,236,25,249,17,23,253,10,254,24,242,239,17,240,230,41,5,216,19,29,222,11,62,219,202,48,245,216,44,21,213,21,1,229,253,11,0,8,233,19,9,252,254,252,16,40,241,251,13,230,249,17,2,0,9,19,3,238,15,241,251,24,248,4,4,231,235,245,7,37,14,253,14,3,221,0,233,245,25,4,3,67,225,220,55,231,194,74,230,203,79,237,180,76,232,231,116,223,210,46,174,240,68,180,34,50,185,40,39,162,23,38,217,29,41,200,28,28,200,11,38,194,16,45,244,4,13,231,6,7,211,35,19,217,0,14,240,15,14,12,254,250,24,245,252,32,224,0,44,204,13,21,223,37,248,194,77,6,179,56,20,171,37,22,184,47,22,226,56,231,204,78,231,199,69,235,210,63,229,228,82,221,215,85,191,216,86,229,225,90,220,209,51,246,211,59,12,222,47,249,179,63,21,160,89,23,159,66,27,130,31,55,192,12,60,209,3,56,232,247,42,243,226,33,243,198,23,9,216,36,16,201,251,25,255,245,18,22,250,8,19,210,17,9,237,50,11,201,45,8,207,36,251,239,37,238,215,49,1,222,56,26,210,251,245,236,34,19,238,1,25,205,236,50,243,216,46,14,219,12,1,220,37,31,215,23,5,224,15,17,248,24,218,236,36,210,32,44,182,24,92,168,243,73,212,241,60,226,237,43,212,250,36,252,254,29,220,18,4,218,11,17,224,68,35,166,19,7,191,49,42,220,32,246,246,16,200,21,79,208,16,59,150,233,49,212,16,52,232,253,19,210,228,0,7,10,22,23,249,214,37,251,199,20,41,224,36,27,185,2,25,208,33,52,207,15,28,218,18,17,238,48,16,200,17,253,213,41,29,223,4,0,0,29,247,230,5,242,248,31,17,235,244,239,27,11,245,27,239,226,58,9,206,19,244,239,76,253,210,20,254,254,25,237,249,41,12,228,249,253,236,2,40,18,210,247,12,243,239,232,246,13,240,37,27,213,23,41,196,247,46,233,237,25,0,242,6,238,0,31,4,249,9,254,238,248,25,26,237,244,21,238,242,32,251,225,5,255,221,14,19,244,18,7,13,22,243,253,236,246,35,15,243,25,2,243,18,15,247,22,248,237,35,0,231,8,246,245,14,246,5,3,231,16,232,228,19,253,245,34,251,250,30,240,231,33,251,240,13,228,247,33,223,3,44,248,253,10,252,7,30,33,0,3,14,7,249,246,0,247,241,23,11,253,1,229,230,16,248,234,11,222,224,38,0,217,31,0,206,47,5,206,54,20,207,32,18,204,19,67,209,237,49,209,228,60,217,229,66,241,214,50,9,224,38,3,215,31,10,231,36,5,223,14,24,220,2,39,210,215,58,239,204,51,254,201,33,0,203,30,28,222,18,38,211,236,47,220,241,40,253,237,47,43,214,6,53,240,0,47,252,0,42,20,244,9,6,244,4,19,3,252,7,4,226,245,24,244,253,37,245,225,20,242,223,11,8,241,21,21,233,0,12,221,254,13,221,0,8,211,243,249,242,251,0,228,241,250,236,11,7,243,16,1,250,7,253,247,8,1,247,20,6,218,12,27,249,11,29,249,6,7,255,16,255,6,40,6,2,30,10,249,251,6,244,239,2,2,253,10,22,253,6,25,252,247,28,1,233,2,251,227,1,15,228,244,8,234,249,22,255,252,9,3,239,0,11,5,246,0,5,253,8,3,250,242,4,5,235,243,15,245,247,8,244,246,8,4,251,13,254,255,11,12,9,14,28,12,255,13,6,250,3,11,4,10,23,0,236,1,15,251,4,11,250,255,4,247,249,8,253,253,12,255,237,251,3,246,248,245,238,250,3,254,8,5,1,252,1,253,241,7,15,237,240,0,232,248,15,248,237,242,232,247,254,242,250,250,252,1,0,251,5,251,2,11,232,11,45,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,13,13,13,13,14,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,17,17,16,16,16,16,16,16,16,16,16,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17,17,17,17,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,17,17,17,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,15,15,15,15,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,13,13,14,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,10,10,10,10,9,9,9,10,10,9,9,9,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,15,15,16,16,16,16,16,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,16,16,16,16,17,17,16,16,17,17,17,17,16,16,16,16,17,17,16,17,17,17,17,17,16,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,15,16,16,16,16,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,14,13,13,13,13,13,13,13,13,13,12,12,12,12,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,9,3,0,0,12,42,58,34,0,250,6,11,11,14,16,14,14,19,23,24,20,14,10,10,11,13,17,22,23,20,15,13,15,17,18,18,16,13,12,14,19,22,23,21,17,14,12,13,17,20,21,21,19,17,16,16,17,17,18,19,20,19,17,17,19,19,17,17,17,17,18,19,19,19,17,16,15,16,17,19,20,20,18,17,16,17,17,17,17,18,19,18,17,16,17,17,18,18,17,16,16,17,17,17,18,18,19,19,18,17,15,17,18,16,16,19,20,17,16,18,18,17,16,17,18,18,17,17,17,18,18,17,16,17,17,17,16,17,18,17,17,18,18,18,16,16,14,8,249,229,213,226,37,119,127,62,10,0,241,208,200,228,1,13,22,44,70,85,77,49,14,239,221,226,248,11,13,5,5,20,35,46,55,61,51,13,214,182,207,7,48,60,61,55,37,12,254,0,3,0,253,3,17,30,42,46,36,16,255,243,246,10,29,26,16,15,9,247,227,214,223,9,67,95,76,37,8,0,1,0,255,249,238,245,24,54,52,41,38,18,239,227,250,22,32,33,32,23,6,0,14,26,12,250,251,5,13,24,31,28,21,17,11,1,0,0,3,15,25,17,7,13,29,34,14,243,244,14,24,6,252,5,24,34,22,10,14,15,0,253,18,22,1,253,14,20,13,10,12,21,25,11,254,6,19,16,6,6,8,10,21,29,17,254,249,6,29,36,12,251,4,13,8,16,27,19,10,7,0,7,32,30,251,240,14,36,20,11,22,15,0,2,10,20,29,10,239,3,45,35,251,2,39,29,243,233,8,47,42,5,249,10,23,19,12,6,9,17,20,13,3,9,28,33,12,240,239,11,44,48,23,0,247,247,5,31,43,28,6,0,6,6,3,13,20,15,13,20,21,11,8,22,22,250,243,14,26,17,26,42,19,237,240,30,45,2,240,19,35,10,8,30,25,7,13,19,253,237,11,57,52,2,233,4,34,23,8,18,25,8,1,20,32,21,8,8,10,9,6,16,42,48,16,241,244,18,44,39,18,4,247,244,20,63,44,248,249,28,28,8,7,15,20,27,17,3,14,31,19,250,248,9,16,252,221,216,242,20,55,92,103,60,3,241,250,244,228,252,47,54,11,8,68,92,33,216,200,251,45,30,9,55,79,9,225,18,41,10,13,39,26,247,225,251,61,76,22,4,34,31,1,246,252,12,33,47,37,0,239,26,60,20,244,24,43,0,237,21,56,33,251,241,9,58,67,13,242,13,14,246,12,38,18,8,24,28,23,17,14,26,22,246,248,27,33,25,32,11,239,8,50,35,255,249,17,40,29,2,5,34,19,234,6,69,43,241,251,21,37,51,16,207,211,32,90,74,14,230,237,17,44,41,9,236,253,35,36,19,21,13,13,50,38,212,204,50,94,18,228,5,34,32,22,2,253,19,17,249,19,64,47,1,236,239,15,44,24,253,21,40,3,239,11,41,39,31,12,229,222,3,41,46,33,12,4,26,27,242,220,8,59,41,252,252,10,4,11,41,38,252,234,14,48,20,236,235,22,60,34,228,238,55,67,4,205,208,18,85,66,253,228,240,2,39,53,20,0,253,232,245,48,50,248,235,26,64,31,209,194,39,106,18,191,238,56,47,253,243,24,32,246,249,43,33,242,252,17,0,8,41,32,254,245,0,3,12,36,47,18,232,232,24,50,7,225,248,35,45,31,0,215,239,64,80,0,210,241,20,26,28,15,250,0,32,43,13,246,244,2,17,16,10,24,27,245,251,42,33,252,254,250,246,30,47,10,2,20,5,243,10,37,28,10,252,240,254,31,54,33,240,214,254,67,70,242,200,7,46,15,19,36,253,228,15,34,11,12,19,3,13,36,7,237,14,28,254,5,37,14,249,26,37,247,232,23,47,13,243,253,12,24,52,48,253,235,5,8,245,5,41,46,16,2,21,22,241,221,20,88,59,216,193,34,98,30,225,254,10,248,32,85,37,217,230,26,30,14,28,38,24,255,240,5,40,24,242,18,75,50,242,227,242,13,56,59,11,242,253,17,40,39,11,250,253,15,50,56,3,222,0,41,26,19,41,24,233,244,47,45,0,1,37,30,3,7,23,24,9,2,9,16,34,54,38,254,237,245,0,27,61,55,9,246,10,14,2,19,44,33,252,237,16,69,54,238,225,30,58,25,252,238,244,50,97,26,201,231,37,43,48,41,241,233,35,37,254,26,59,1,207,249,44,63,68,30,222,213,1,37,53,44,1,240,27,43,0,1,45,28,236,248,26,28,24,23,16,27,35,6,243,5,21,25,29,21,9,12,13,9,26,40,17,235,235,29,78,61,254,225,240,6,38,55,24,251,6,23,21,25,24,3,253,15,24,25,23,11,11,29,27,13,9,254,255,33,54,21,245,3,31,25,0,255,27,48,20,238,244,31,52,30,246,234,13,45,33,4,1,15,26,21,0,244,7,46,47,6,239,3,24,11,8,30,26,250,251,17,31,37,9,225,250,47,36,0,1,19,17,1,3,19,18,5,19,28,253,240,10,26,21,25,19,0,250,3,18,25,24,12,255,252,16,38,7,226,10,83,51,215,199,5,56,48,7,238,2,26,13,0,24,35,4,247,12,12,254,10,21,9,2,13,29,32,12,242,254,27,18,243,239,16,54,50,10,242,253,8,3,14,38,22,242,244,12,35,47,20,230,241,30,22,4,36,41,234,214,22,58,26,254,253,13,32,30,3,247,6,16,9,18,41,27,243,242,22,44,22,3,6,253,248,29,55,14,241,12,38,18,251,8,35,23,239,231,18,60,48,12,6,250,215,246,83,94,3,210,225,243,26,85,73,250,206,238,38,64,29,226,222,32,84,34,203,218,63,74,236,209,25,66,36,4,248,237,241,15,57,61,6,222,249,47,54,5,224,247,35,40,12,5,19,5,247,27,64,25,226,238,31,42,22,4,247,252,28,49,46,28,247,221,246,33,57,53,12,229,248,42,43,0,239,13,45,47,32,0,231,253,34,31,16,25,30,8,254,28,44,10,242,6,31,30,30,33,14,248,253,17,26,33,44,30,253,248,15,24,18,15,15,23,29,18,7,12,26,37,28,247,230,19,61,38,4,8,10,2,21,46,39,12,244,235,13,58,40,0,10,38,17,242,5,47,44,1,246,17,36,27,10,12,21,8,0,24,50,39,8,250,9,28,2,242,31,67,32,0,8,13,7,7,20,34,29,14,7,2,0,27,56,35,247,240,15,36,24,9,14,24,15,3,14,32,30,17,0,239,2,54,55,4,246,21,26,254,253,25,45,27,254,255,18,21,13,21,31,14,249,253,7,21,48,50,7,233,247,20,32,22,16,18,15,9,7,8,20,34,21,253,0,25,31,6,0,26,36,5,239,9,54,46,1,245,255,0,16,44,45,11,240,0,31,29,7,0,13,33,29,0,246,8,35,35,4,253,27,28,243,247,52,59,250,217,254,31,30,28,21,4,2,12,12,17,31,18,242,241,21,38,15,9,33,27,247,243,12,19,11,20,31,13,0,8,4,252,20,38,13,247,6,20,18,34,30,240,221,5,35,26,15,13,20,21,254,241,13,36,15,247,250,7,29,45,17,239,255,19,2,1,22,18,10,13,4,7,30,20,238,242,27,32,11,15,12,247,3,32,15,252,11,16,247,249,37,53,5,219,245,34,39,8,247,3,18,11,6,26,32,0,232,248,21,29,20,15,9,5,9,8,2,3,2,4,27,35,7,254,17,9,246,10,32,13,249,3,27,30,13,0,3,11,12,6,255,253,15,46,48,11,236,240,1,16,30,32,10,240,251,35,53,27,239,222,251,38,51,27,252,241,4,33,33,12,0,253,252,12,36,34,10,255,9,17,11,13,22,9,244,4,40,44,15,241,241,21,43,20,0,3,12,17,19,17,15,6,0,18,39,17,241,251,22,20,12,28,42,19,240,235,9,38,34,13,9,19,5,249,23,49,19,240,254,31,32,7,1,13,18,21,27,21,9,8,4,2,20,37,28,15,16,15,5,253,4,25,37,33,23,12,7,5,5,14,24,18,14,28,38,25,253,241,2,29,38,30,21,16,5,254,8,24,29,32,26,8,8,19,9,254,19,42,30,8,5,13,17,15,14,11,9,17,39,46,14,234,241,18,31,22,25,34,31,13,246,242,11,35,34,29,26,9,250,255,17,30,27,8,2,27,41,19,255,2,6,4,13,32,41,27,6,4,18,16,254,252,19,40,33,11,6,12,7,8,31,41,14,242,248,20,42,35,7,248,5,25,27,21,23,22,1,242,5,35,32,13,13,24,21,8,255,4,21,27,20,13,9,11,22,23,8,5,19,21,8,2,10,25,36,27,1,248,12,30,13,252,18,40,14,248,11,30,20,11,14,8,1,9,22,22,15,11,10,10,13,15,16,17,17,10,2,6,17,19,15,16,15,10,9,13,12,10,14,15,13,11,8,7,13,17,12,11,21,18,2,255,9,13,14,19,16,9,8,9,5,6,18,24,13,255,4,20,17,3,8,19,10,253,2,20,23,11,5,13,17,7,1,6,12,15,13,8,2,6,18,24,13,0,1,12,10,2,11,20,12,2,4,10,16,15,6,3,12,14,8,10,14,9,4,7,8,7,14,23,19,5,0,8,14,12,9,7,6,12,17,10,2,9,21,22,11,0,0,12,16,10,9,12,8,7,13,12,7,11,21,21,11,4,5,10,9,3,218,12,24,0,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,22,22,22,21,21,21,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,22,23,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,22,22,22,23,23,23,23,23,23,23,23,23,23,23,24,24,24,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,26,25,26,26,26,27,27,27,27,27,27,28,28,28,28,28,28,28,27,27,27,27,28,28,28,28,28,28,28,29,29,28,28,28,28,29,28,28,28,29,29,29,29,29,29,29,29,29,29,30,30,29,29,29,30,29,29,29,29,29,30,30,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,28,28,28,28,28,28,29,29,29,28,28,28,28,28,27,27,27,27,27,27,28,28,28,27,28,28,28,27,27,27,27,28,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,28,28,28,28,28,28,28,28,28,28,28,27,27,27,27,27,27,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,24,24,24,24,24,24,23,23,23,24,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,22,23,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,22,22,23,22,22,22,23,23,23,23,22,22,22,22,22,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,23,22,22,22,22,22,22,22,22,23,23,23,23,23,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,22,22,22,22,23,23,23,23,22,22,23,23,23,23,23,23,23,22,22,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,28,27,28,28,28,28,28,28,28,27,27,27,27,27,28,28,28,28,28,28,28,29,29,29,28,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,31,30,30,30,30,30,30,29,30,30,30,31,31,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,29,30,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,28,28,28,29,29,29,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,27,27,27,28,28,28,28,27,27,28,28,28,28,28,28,28,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,26,26,26,27,27,26,26,26,26,26,26,26,26,26,25,25,26,26,26,25,26,26,26,25,25,25,25,24,25,25,25,25,25,24,24,24,24,23,23,23,23,23,22,23,23,23,23,23,22,23,22,22,22,22,23,23,23,22,22,22,22,22,22,22,22,21,21,21,21,21,21,21,21,20,21,21,22,22,22,21,20,19,19,19,20,20,20,21,20,20,20,21,22,21,20,20,18,1,223,195,201,247,42,74,82,63,30,3,239,210,185,197,243,24,43,60,71,65,53,43,28,6,246,241,247,6,31,56,69,66,48,24,2,250,253,5,14,23,30,34,37,38,33,25,18,11,7,3,4,12,23,33,39,39,34,24,14,7,4,5,16,34,44,35,22,16,24,25,13,9,24,35,27,11,13,31,44,39,22,12,10,13,18,26,35,39,32,17,10,15,22,30,36,34,24,14,15,26,34,30,20,22,25,24,23,26,28,26,31,38,23,4,8,37,49,32,15,16,28,32,25,22,23,19,25,32,34,27,22,19,20,30,36,33,23,18,14,21,26,32,45,43,15,242,252,15,17,6,21,48,55,54,39,12,4,29,52,25,7,27,38,17,18,53,54,23,19,42,37,3,252,33,64,47,12,14,33,42,35,31,16,13,44,47,5,4,42,51,32,29,35,8,15,39,52,39,35,41,16,254,12,66,73,32,254,252,40,71,52,15,24,50,32,3,10,44,49,33,31,31,11,234,227,236,6,39,50,44,23,28,57,60,34,34,41,26,14,18,22,38,67,70,35,1,1,27,53,49,27,20,29,27,11,9,39,66,51,41,28,249,240,27,71,48,16,32,34,8,23,61,40,9,27,37,13,1,38,56,28,35,74,29,206,243,85,88,29,37,44,253,229,28,76,58,26,24,29,16,26,31,42,39,24,15,15,48,53,23,4,31,50,35,29,32,28,23,25,14,29,51,23,3,45,75,18,231,26,88,47,244,247,31,48,44,33,22,21,30,38,21,12,15,39,68,39,249,5,39,23,1,34,83,51,235,246,51,57,18,25,24,246,248,71,98,15,231,1,28,32,46,70,19,227,4,59,49,23,4,252,27,48,24,22,78,39,214,230,56,60,252,22,68,26,212,12,82,34,236,22,74,18,232,22,59,36,247,13,55,25,1,24,53,17,237,2,36,34,33,69,27,213,246,65,42,248,4,46,52,20,18,13,245,24,66,39,237,244,35,27,34,57,36,251,245,40,25,243,15,52,64,7,211,0,87,73,244,227,29,53,247,245,66,72,0,246,28,19,250,22,72,41,235,238,22,70,59,5,0,26,19,245,7,58,67,25,19,34,248,217,14,84,79,5,243,2,9,37,57,33,253,255,27,49,43,15,6,31,63,14,201,255,89,76,245,251,57,67,7,235,19,21,0,50,86,25,226,7,45,25,4,35,57,28,39,37,239,231,44,73,9,241,43,62,3,237,67,91,253,219,11,33,33,25,45,54,15,19,29,4,249,46,78,7,229,36,79,64,23,238,248,38,51,36,21,8,20,52,28,239,19,69,58,27,21,24,247,236,47,64,25,42,80,30,241,254,23,59,59,39,0,235,39,67,41,39,46,12,237,255,47,81,69,21,1,12,26,41,34,35,59,57,254,238,68,79,10,255,35,45,2,15,71,94,40,217,246,69,58,251,14,92,59,243,20,74,8,229,75,97,6,221,25,67,51,42,55,21,240,36,52,20,34,55,22,6,42,78,31,229,252,82,122,40,207,229,59,71,32,20,33,63,34,246,2,54,89,62,17,239,242,37,57,27,24,58,65,25,11,41,40,254,255,34,46,62,62,18,243,25,88,53,0,23,28,254,252,67,93,12,241,34,55,15,255,53,59,36,23,16,11,13,51,63,20,247,36,76,45,8,1,14,37,41,45,26,0,22,59,43,25,41,31,252,3,33,70,64,24,33,9,242,18,64,51,18,16,25,16,36,73,38,235,237,39,48,22,39,37,8,23,55,17,234,10,36,38,37,32,0,251,24,39,33,35,20,0,32,44,28,21,38,20,238,29,90,56,235,254,33,25,29,69,55,246,245,31,37,6,31,65,32,234,243,59,71,5,221,1,42,44,42,14,252,23,41,21,4,13,32,27,250,9,43,44,37,22,5,5,14,14,26,38,16,0,31,48,27,255,254,251,10,64,70,12,220,243,35,22,244,25,71,45,239,241,11,254,15,65,42,235,225,8,45,56,35,251,232,4,39,27,249,8,46,26,251,17,35,18,0,10,30,17,14,20,18,6,254,9,28,28,16,39,54,4,202,226,21,57,71,46,1,227,245,24,29,22,14,22,45,20,240,10,40,30,8,250,13,48,45,15,253,254,13,18,39,41,250,231,15,67,56,21,245,247,5,249,228,230,4,10,12,18,248,233,6,43,59,32,236,247,49,73,37,9,13,29,35,23,13,8,18,36,36,16,4,27,47,15,254,30,61,39,250,246,17,22,24,36,20,0,3,18,22,28,33,16,252,3,29,39,37,34,20,13,27,34,15,13,46,63,52,14,247,8,45,66,44,7,1,19,34,35,22,30,46,47,18,252,5,12,30,57,56,28,253,3,30,26,20,33,38,33,37,34,16,14,32,50,40,5,255,29,59,61,33,19,33,38,8,248,24,61,61,28,11,28,39,34,31,41,30,10,25,56,25,254,29,42,25,32,57,42,20,20,20,16,39,60,38,2,16,71,69,20,22,41,44,35,23,37,31,22,44,66,37,1,9,36,51,25,26,58,42,3,2,35,49,34,18,10,29,56,53,19,5,15,29,41,34,36,26,18,33,60,61,42,14,251,17,56,69,34,16,26,28,33,40,42,34,28,28,23,25,43,49,22,16,42,48,26,24,44,54,35,24,26,9,17,63,71,15,248,24,76,78,17,231,1,53,57,23,18,39,25,252,28,86,54,0,2,49,55,1,10,66,77,42,10,4,25,34,28,21,39,68,48,9,8,41,47,28,29,20,16,35,66,68,12,246,32,56,46,29,24,27,22,35,62,52,10,244,21,74,75,20,13,51,38,251,0,40,48,26,30,33,25,21,38,44,19,14,21,15,5,37,70,55,15,0,3,18,45,40,24,29,41,34,17,5,19,39,45,31,25,50,65,3,221,0,58,52,1,14,52,53,22,250,0,53,72,37,251,239,23,69,56,21,19,49,45,252,247,27,57,55,52,17,247,19,25,27,56,77,38,239,250,19,43,75,75,14,223,16,87,81,22,237,244,36,68,40,255,9,69,66,29,33,22,246,16,72,70,27,22,32,14,15,22,43,48,64,76,19,247,22,22,253,30,93,71,2,12,58,50,7,2,37,48,29,31,36,22,11,20,36,30,33,43,22,7,26,50,55,50,21,3,250,22,73,66,34,18,39,35,4,0,21,44,33,26,40,39,15,3,48,75,28,238,3,31,30,49,52,25,13,36,41,15,1,13,38,56,54,21,249,32,66,32,252,25,65,31,242,249,54,80,47,17,7,11,9,21,37,50,41,27,36,20,240,2,54,68,41,26,16,18,24,30,32,31,31,32,24,254,17,47,45,22,30,37,25,17,19,13,13,54,61,30,248,3,42,62,48,13,12,37,36,21,12,42,63,47,28,16,25,19,17,32,61,58,19,17,39,39,25,36,56,30,20,38,42,28,18,21,21,54,75,37,249,244,11,31,66,72,22,248,7,38,38,41,50,35,255,5,48,54,31,23,16,20,51,64,40,3,1,46,37,1,28,67,41,0,19,51,36,17,25,37,31,44,64,35,0,18,30,24,18,34,58,49,34,17,25,13,3,28,51,49,25,30,42,37,24,28,40,6,4,41,59,55,47,40,12,6,27,24,17,51,75,42,0,12,45,34,13,19,26,28,44,66,51,16,0,6,29,60,69,46,24,21,14,13,36,57,56,37,25,13,16,42,57,43,35,30,10,19,60,66,19,16,49,42,14,11,26,42,42,23,12,20,50,55,46,47,33,250,248,51,71,29,9,41,53,37,46,56,31,255,6,33,40,43,43,28,14,26,50,41,16,39,50,19,0,6,21,44,59,35,0,255,47,91,70,20,245,254,39,44,17,12,38,63,40,8,20,41,21,1,24,37,10,242,21,54,68,54,7,248,12,30,21,17,24,38,24,11,19,17,18,38,48,38,16,0,1,1,19,45,47,34,18,16,33,27,19,27,40,37,3,248,13,21,17,30,64,80,32,240,2,24,255,240,42,71,17,248,30,48,21,20,30,7,233,1,50,46,16,10,9,0,16,42,49,35,18,9,7,23,29,8,3,20,41,51,44,36,21,4,247,6,35,31,20,17,15,20,50,56,22,255,1,12,21,35,20,243,252,35,36,24,28,25,6,3,33,43,17,5,10,16,37,52,37,26,29,35,28,12,11,27,23,5,2,16,44,54,29,5,19,19,253,7,30,14,0,26,51,30,0,4,37,46,29,19,12,12,15,14,3,2,29,48,27,6,18,43,19,237,5,52,45,14,11,19,26,52,53,10,4,37,34,3,14,40,25,255,17,43,28,5,14,36,23,11,18,28,41,41,250,212,251,68,83,46,18,4,251,13,60,64,19,254,0,22,43,37,26,41,46,23,0,1,17,23,27,33,29,14,22,49,32,245,241,22,57,61,41,8,238,247,24,41,34,29,28,17,254,2,45,65,31,0,6,10,4,17,41,51,44,21,0,9,22,28,38,33,8,5,30,29,28,35,28,3,5,46,60,28,3,5,11,28,42,56,53,21,240,2,40,46,43,37,27,17,17,14,9,19,43,41,25,26,34,28,29,35,23,9,12,32,34,31,37,35,17,17,38,42,33,28,30,22,24,37,32,14,12,30,34,32,47,50,31,17,8,1,11,29,47,56,39,22,16,26,46,50,48,28,0,4,34,46,35,19,10,17,33,38,28,18,27,32,13,3,25,51,39,14,12,27,37,35,28,25,23,29,36,22,14,16,27,41,39,34,32,31,28,24,25,34,32,12,9,29,42,32,20,24,28,26,32,30,21,10,7,18,39,46,38,30,21,21,21,26,36,36,11,6,32,38,28,34,39,29,17,17,28,37,33,17,14,22,22,18,29,40,35,23,21,34,31,10,255,6,19,26,33,31,21,19,27,33,31,27,19,6,11,30,22,5,16,33,40,39,31,23,8,5,21,31,22,11,17,30,38,32,25,26,31,28,20,18,19,20,26,41,34,3,247,17,43,39,29,31,24,10,6,5,1,9,31,39,17,0,13,36,31,14,8,10,20,29,19,6,11,25,24,21,34,39,19,4,19,32,26,23,33,19,249,0,35,43,25,21,27,19,4,15,27,20,16,19,17,9,13,28,37,31,27,30,26,17,13,17,18,19,32,42,35,23,22,26,23,18,27,34,33,30,17,8,13,31,34,30,36,34,23,18,17,16,24,32,27,13,9,21,33,32,26,27,26,17,9,13,24,31,32,31,28,19,13,20,31,31,29,32,31,20,12,13,25,32,30,24,22,28,26,17,16,22,27,31,33,26,16,20,27,30,29,30,26,17,19,25,27,25,26,31,30,21,15,18,26,34,36,28,15,10,21,29,27,28,35,33,23,20,24,26,29,35,31,21,18,22,28,30,27,27,31,33,30,22,18,23,33,35,26,19,25,32,28,26,29,30,26,26,26,19,0,0,175,0,4,0,1,0,44,1,66,3,196,4,130,10,112,13,48,15,32,28,45,50,30,64,60,39,31,20,9,5,186,152,120,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,44,1,66,3,196,4,130,10,112,13,48,15,32,28,70,104,44,92,87,57,44,29,13,7,186,152,120,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,44,1,66,3,216,4,240,10,112,13,48,15,32,28,60,80,45,77,82,54,42,27,13,6,186,152,120,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,44,1,66,3,216,4,84,11,152,13,80,15,32,28,0,30,37,35,56,37,29,19,9,4,186,152,120,120,120,120,192,155,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,45,0,5,0,1,0,240,0,212,2,106,4,200,10,2,13,238,14,192,27,45,61,34,63,75,41,34,29,11,5,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,248,0,212,2,106,4,200,10,2,13,238,14,192,27,130,112,43,86,102,55,46,39,15,7,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,218,0,120,2,169,3,161,10,109,12,71,14,60,27,55,109,34,71,93,53,42,37,17,8,166,145,137,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,144,0,208,1,12,3,196,9,254,11,157,14,216,26,40,67,25,64,64,45,41,24,17,8,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,144,0,208,1,12,3,196,9,254,11,157,14,216,26,0,42,19,51,51,35,32,19,14,6,163,120,143,120,120,120,165,115,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,195,0,4,0,1,0,120,0,80,1,160,5,156,9,228,12,100,15,90,26,45,32,25,51,51,44,38,32,17,6,168,112,148,120,120,120,107,112,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,120,0,80,1,160,5,156,9,228,12,100,15,90,26,75,46,30,60,60,53,45,38,20,8,168,112,148,120,120,120,107,112,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,120,0,80,1,160,5,156,9,228,12,100,15,90,26,75,41,28,57,57,50,43,36,19,7,168,112,148,120,120,120,107,112,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,120,0,80,1,160,5,156,9,228,12,100,15,90,26,0,32,25,51,51,44,38,32,17,6,168,112,148,120,120,120,107,112,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,141,0,80,1,204,6,0,10,208,12,40,15,104,25,45,36,12,54,51,51,49,30,11,9,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,141,0,80,1,204,6,0,10,208,12,40,15,104,25,75,63,16,72,68,68,65,39,15,12,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,141,0,80,1,204,6,0,10,208,12,40,15,104,25,75,46,13,61,57,57,55,33,12,10,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,141,0,80,1,204,6,0,10,208,12,40,15,104,25,0,30,11,49,46,47,45,27,10,8,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,210,0,5,0,1,0,171,0,105,1,248,7,2,11,28,13,224,14,196,26,45,29,17,48,48,38,38,24,10,5,167,113,125,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,214,0,18,2,160,6,203,10,77,13,4,15,79,27,60,58,30,71,73,55,50,32,14,7,175,128,129,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,60,73,36,66,79,56,43,28,13,7,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,45,65,37,62,75,52,40,27,12,6,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,24,1,16,3,156,4,120,10,152,13,60,15,32,28,0,43,30,50,61,42,33,22,10,5,186,152,135,120,120,120,192,155,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,203,0,6,0,1,0,200,0,29,1,245,8,36,11,186,12,165,15,244,26,61,64,0,88,56,44,48,36,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,200,0,34,2,165,7,70,9,110,13,79,15,244,26,70,85,40,88,68,64,40,20,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,9,3,208,4,241,9,60,13,194,14,244,26,72,99,52,96,92,48,44,32,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,14,1,212,2,106,4,200,10,2,13,238,14,192,27,61,140,52,95,114,62,51,43,16,8,165,148,135,120,120,120,167,142,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,145,2,228,3,118,10,225,12,56,15,244,26,60,127,48,108,68,40,44,28,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,200,0,45,2,57,3,209,10,2,13,122,15,244,26,0,106,46,86,54,36,32,18,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,48,250,48,0,215,0,5,0,33,0,173,0,64,1,156,8,220,10,66,13,19,15,228,26,45,44,12,60,60,59,56,29,13,6,182,105,128,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,173,0,64,1,156,8,220,10,66,13,19,15,228,26,40,56,14,68,68,66,64,32,14,7,182,105,128,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,244,0,229,1,108,7,82,10,89,13,17,15,34,28,90,58,28,67,66,65,55,35,13,8,221,122,147,120,120,120,167,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,31,1,72,2,204,6,0,10,104,13,15,15,224,28,40,43,31,56,56,55,42,31,10,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,31,1,72,2,204,6,0,10,104,13,15,15,224,28,0,32,26,48,48,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,225,0,5,0,1,0,136,0,44,1,8,7,96,9,148,12,41,14,144,26,45,27,13,56,44,37,29,23,11,0,120,120,105,120,120,120,60,90,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,136,0,164,1,120,5,196,9,48,12,41,14,144,26,40,52,27,82,60,46,40,29,19,0,120,120,112,120,120,120,60,75,112,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,192,0,40,2,132,3,20,10,204,11,96,14,88,27,80,106,35,84,81,51,49,28,18,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,192,0,40,2,92,3,100,10,164,11,96,14,159,27,60,105,32,76,83,46,44,26,16,7,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,192,0,40,2,92,3,100,10,164,11,96,14,159,27,0,55,23,55,60,34,32,18,12,5,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,102,0,6,0,1,0,200,0,14,1,21,9,210,11,91,12,164,15,244,26,43,65,3,83,38,41,38,38,11,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,144,0,76,1,251,8,200,10,111,12,209,14,244,26,60,104,11,102,72,64,60,49,15,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,104,0,154,1,228,6,50,9,139,12,250,14,244,26,107,56,33,69,42,48,42,27,12,6,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,200,0,207,1,11,4,244,9,110,12,228,14,244,26,124,75,32,80,54,35,25,16,12,6,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,104,0,168,1,29,3,47,10,55,12,77,15,244,26,35,84,41,76,64,22,15,7,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,200,0,114,1,202,2,115,10,103,12,72,15,244,26,0,64,24,63,45,21,15,9,12,6,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,48,250,48,0,160,0,4,0,1,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,50,40,30,52,60,40,33,28,16,6,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,60,71,40,70,80,54,44,38,22,8,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,50,53,34,60,69,46,38,33,19,7,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,132,0,8,2,136,4,136,9,128,12,156,14,84,27,0,33,27,48,55,37,30,26,15,5,167,148,143,120,120,120,197,135,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,239,0,5,0,1,0,80,0,96,1,52,3,193,10,228,12,114,15,244,26,87,79,30,80,61,42,30,0,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,80,0,191,1,17,3,196,10,108,12,119,15,244,26,50,97,53,83,53,41,38,34,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,80,2,81,3,120,10,94,12,201,14,244,26,53,122,49,83,79,38,30,19,19,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,200,0,57,3,115,4,10,10,41,12,214,13,244,26,49,96,50,90,75,54,28,39,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,57,3,115,4,10,10,41,12,214,13,244,26,0,97,54,90,75,54,28,39,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,14,1,6,0,1,0,200,0,68,1,46,3,69,11,54,13,160,15,244,26,48,50,11,68,41,15,11,0,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,200,0,124,1,239,2,107,10,86,12,52,16,244,26,45,96,30,79,57,26,22,15,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,197,2,187,3,240,9,163,12,23,15,244,26,67,134,49,91,83,49,38,30,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,224,0,30,3,60,5,1,9,112,13,119,14,244,26,70,94,49,106,68,57,38,0,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,200,0,190,1,106,8,33,10,134,12,93,14,244,26,40,58,27,69,54,46,34,31,15,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,200,0,190,1,106,8,33,10,134,12,93,14,244,26,0,23,17,44,34,29,22,19,7,4,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,48,250,48,0,38,1,6,0,1,0,200,0,126,1,12,3,253,9,107,12,48,14,244,26,46,107,24,88,72,40,40,40,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,168,0,215,1,238,3,112,9,161,12,217,14,244,26,50,145,48,100,100,44,40,44,16,8,187,125,175,137,150,175,187,125,175,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,200,0,203,1,170,6,140,8,3,12,148,13,244,26,62,128,45,98,60,91,68,38,15,9,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,200,0,176,1,88,8,132,9,72,12,130,14,244,26,60,81,32,75,68,57,57,32,14,7,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,176,0,88,1,180,8,228,10,161,12,16,15,244,26,76,85,12,92,64,60,56,28,16,8,187,125,137,137,150,175,187,125,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,152,0,72,1,232,8,160,10,92,13,10,15,32,28,0,46,26,66,44,44,37,29,11,7,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,48,250,48,0,240,0,6,0,1,0,142,0,62,1,138,2,166,9,38,12,203,14,24,27,40,35,7,66,37,18,19,14,8,4,148,126,80,120,120,120,75,90,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,142,0,62,1,138,2,166,9,38,12,203,14,24,27,40,39,8,69,39,18,20,15,8,4,148,126,80,120,120,120,75,90,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,147,0,85,1,159,2,185,9,25,12,193,14,37,27,40,38,10,68,43,21,22,20,9,4,151,127,85,120,120,120,75,90,90,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,192,0,40,2,92,3,100,10,164,11,96,14,159,27,70,99,31,74,81,45,43,25,16,6,172,142,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,50,81,30,71,86,42,41,23,15,6,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,1,0,184,0,72,2,172,3,20,10,164,11,53,14,160,27,0,46,23,54,64,32,30,18,11,4,173,142,135,120,120,120,182,105,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,48,250,48,0,205,0,5,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,45,27,15,48,33,28,30,28,7,10,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,40,38,18,58,39,33,36,33,9,12,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,142,0,83,1,156,6,74,9,252,12,124,14,151,25,80,53,24,69,50,41,43,38,11,13,169,98,137,122,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,232,0,104,3,160,5,160,10,216,13,120,15,102,27,40,84,44,78,82,54,44,30,14,5,255,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,232,0,104,3,160,5,160,10,216,13,120,15,102,27,0,45,32,57,60,40,32,22,10,4,255,170,163,145,120,120,255,174,173,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,205,0,5,0,1,0,147,0,22,1,238,7,186,9,17,13,141,14,81,26,45,38,10,60,51,47,50,28,12,7,167,101,123,120,120,120,167,90,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,132,0,16,1,28,7,232,8,228,12,96,14,100,25,30,40,18,58,39,36,36,33,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,147,0,54,1,186,6,58,9,241,12,113,14,189,25,80,54,23,68,49,43,44,39,11,13,168,94,137,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,3,1,17,2,200,6,216,9,80,13,239,14,63,28,50,61,34,68,64,62,50,38,12,9,228,124,154,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,31,1,72,2,204,6,0,10,104,13,15,15,224,28,0,35,28,51,50,49,38,28,9,6,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,0,0,5,0,1,0,132,0,16,1,8,7,232,8,228,12,96,14,100,25,40,39,18,57,39,36,36,33,9,12,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,3,0,0,0,3,0,0,0,176,250,161,0,3,0,132,0,16,1,8,7,232,8,228,12,96,14,100,25,65,61,22,72,49,45,45,41,11,15,167,90,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,128,0,52,1,219,6,6,9,218,12,241,14,225,25,50,59,24,70,54,45,46,39,13,13,167,105,135,120,120,120,167,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,3,0,0,0,1,250,0,0,1,0,116,0,160,1,84,6,96,9,188,12,164,16,88,27,40,33,23,48,51,34,37,25,15,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,116,0,224,1,44,6,116,9,12,13,224,16,88,27,0,30,24,48,50,34,34,21,13,5,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,1,0,0,0,28,129,163,191,251,250,244,182,125,0,4,0,1,0,176,0,104,1,92,3,56,9,108,12,60,15,144,26,45,43,6,69,44,22,25,25,12,7,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,176,0,104,1,92,3,56,9,108,12,60,15,144,26,80,70,8,88,56,28,32,32,16,10,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,104,1,92,3,56,9,108,12,60,15,144,26,70,57,7,79,50,25,28,28,14,9,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,104,1,92,3,56,9,108,12,60,15,144,26,0,38,5,65,41,20,23,23,11,7,177,125,110,120,120,120,177,125,125,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,174,0,4,0,1,0,136,0,200,1,216,4,96,9,100,12,156,14,12,27,44,39,25,55,58,34,33,25,14,5,165,141,141,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,136,0,200,1,216,4,96,9,100,12,156,14,12,27,80,58,31,67,71,41,40,30,17,6,165,141,141,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,136,0,200,1,216,4,96,9,100,12,156,14,12,27,50,52,29,63,67,39,38,28,16,6,165,141,141,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,136,0,200,1,216,4,96,9,100,12,156,14,12,27,0,35,24,52,55,32,31,23,13,5,165,141,141,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,160,0,4,0,1,0,142,0,52,2,136,4,160,10,188,12,236,14,99,27,50,42,31,57,60,33,36,28,16,6,168,147,130,120,120,120,197,135,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,142,0,52,2,136,4,160,10,188,12,236,14,99,27,60,75,42,76,80,44,49,38,22,8,168,147,130,120,120,120,197,135,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,142,0,52,2,136,4,160,10,188,12,236,14,99,27,50,57,36,66,69,38,42,33,19,7,168,147,130,120,120,120,197,135,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,142,0,52,2,136,4,160,10,188,12,236,14,99,27,0,35,28,52,55,30,33,26,15,5,168,147,130,120,120,120,197,135,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,160,0,4,0,1,0,169,0,193,1,89,3,196,9,244,11,146,14,186,26,50,43,23,52,55,34,29,20,14,4,163,130,148,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,169,0,193,1,89,3,196,9,244,11,146,14,186,26,70,85,33,72,77,48,41,28,20,6,163,130,148,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,169,0,193,1,89,3,196,9,244,11,146,14,186,26,40,71,30,66,71,44,38,25,18,6,163,130,148,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,169,0,193,1,89,3,196,9,244,11,146,14,186,26,0,43,23,52,55,34,29,20,14,4,163,130,148,120,120,120,162,120,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,165,0,4,0,1,0,180,0,144,1,216,4,152,8,148,12,226,14,144,26,45,36,24,51,51,36,36,30,15,7,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,180,0,144,1,216,4,152,8,148,12,226,14,144,26,80,65,32,68,68,48,48,40,20,10,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,180,0,144,1,216,4,152,8,148,12,226,14,144,26,40,58,30,64,64,45,45,38,19,9,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,180,0,144,1,216,4,152,8,148,12,226,14,144,26,0,31,22,47,47,33,33,28,14,7,170,125,145,120,120,120,162,125,145,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,185,0,4,0,1,0,116,0,240,1,32,5,104,9,180,12,132,14,96,27,45,59,31,64,78,41,48,37,19,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,116,0,240,1,32,5,104,9,180,12,132,14,96,27,80,73,35,72,86,45,53,41,21,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,116,0,240,1,32,5,104,9,180,12,132,14,96,27,60,59,31,64,78,41,48,37,19,7,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,116,0,240,1,32,5,104,9,180,12,132,14,96,27,0,73,35,72,86,45,53,41,21,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,170,0,4,0,1,0,246,0,80,2,164,6,201,9,70,13,255,14,73,28,50,33,27,49,54,44,34,25,9,5,219,138,158,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,246,0,80,2,164,6,201,9,70,13,255,14,73,28,60,83,43,78,87,70,54,39,15,8,219,138,158,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,246,0,80,2,164,6,201,9,70,13,255,14,73,28,60,74,40,74,82,67,51,37,14,8,219,138,158,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,246,0,80,2,164,6,201,9,70,13,255,14,73,28,0,33,27,49,54,44,34,25,9,5,219,138,158,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,190,0,5,0,1,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,40,23,14,45,31,26,28,26,7,9,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,132,0,24,1,184,6,36,9,228,12,96,14,100,25,30,48,20,64,44,37,40,37,10,13,160,90,135,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,166,0,136,1,18,7,138,9,228,12,56,14,242,26,40,68,30,76,60,65,57,45,13,13,160,97,131,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,6,1,33,2,26,7,232,9,77,13,228,14,125,28,80,71,37,72,73,69,54,41,13,9,227,125,153,120,120,120,160,135,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,31,1,72,2,28,7,0,10,104,13,15,15,224,28,0,32,26,48,51,47,36,27,9,5,244,132,159,120,120,120,135,180,150,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,125,0,5,0,13,0,76,0,224,0,8,7,4,11,156,14,220,15,32,29,0,19,7,46,7,28,21,10,7,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,13,0,76,0,224,0,8,7,4,11,156,14,220,15,32,29,50,19,7,46,7,28,21,10,7,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,76,0,224,0,8,7,4,11,156,14,220,15,32,29,45,17,6,44,10,27,20,10,6,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,76,0,224,0,8,7,4,11,156,14,220,15,32,29,30,13,6,39,9,24,18,9,6,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,76,0,224,0,136,9,4,11,156,14,220,15,32,29,0,15,6,41,9,28,22,12,6,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,105,0,4,0,1,0,76,0,224,0,156,9,4,11,156,14,220,15,32,29,35,19,7,46,10,28,18,10,5,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,13,0,76,0,224,0,156,9,4,11,156,14,220,15,32,29,40,19,7,46,10,28,18,10,5,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,76,0,224,0,156,9,4,11,156,14,220,15,32,29,30,19,7,46,10,28,18,10,5,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,76,0,224,0,156,9,4,11,156,14,220,15,32,29,0,19,7,46,10,28,18,10,5,3,150,115,97,120,120,120,90,130,97,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,65,0,3,0,5,0,140,0,224,1,178,3,84,11,152,13,104,16,0,27,35,16,16,43,23,15,10,13,7,0,160,150,120,120,120,120,145,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,140,0,224,1,178,3,84,11,152,13,104,16,0,27,30,20,18,48,25,17,12,14,8,0,160,150,120,120,120,120,145,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,140,0,224,1,178,3,84,11,152,13,104,16,0,27,0,20,18,48,25,17,12,14,8,0,160,150,120,120,120,120,145,60,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,170,0,4,0,1,0,148,0,224,1,248,2,150,10,188,12,236,14,38,27,45,52,22,54,54,36,34,22,14,6,165,131,156,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,148,0,224,1,248,2,150,10,188,12,236,14,38,27,70,92,30,72,72,48,46,30,19,8,165,131,156,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,148,0,224,1,248,2,150,10,188,12,236,14,38,27,55,83,28,68,68,45,43,28,18,8,165,131,156,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,148,0,224,1,248,2,150,10,188,12,236,14,38,27,0,45,21,50,50,33,32,21,13,5,165,131,156,120,120,120,165,110,130,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,35,0,3,0,5,0,224,0,248,2,140,5,60,10,20,13,175,14,117,27,35,24,21,43,36,31,26,21,9,2,196,162,200,120,120,120,249,174,255,44,35,70,130,50,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,224,0,248,2,140,5,40,10,20,13,175,14,117,27,40,22,21,41,35,30,25,21,8,2,196,162,200,120,120,120,249,174,255,44,35,70,130,50,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,208,0,224,2,100,5,236,9,1,13,155,14,105,27,0,22,21,42,30,22,20,20,9,2,192,158,201,120,120,120,249,174,255,44,35,70,130,52,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,45,0,3,0,5,0,224,0,216,2,80,5,232,8,20,13,175,14,117,27,45,15,19,32,27,23,19,16,6,1,196,162,200,120,120,120,249,174,255,44,45,70,130,46,0,0,0,0,45,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,224,0,216,2,80,5,232,8,20,13,175,14,117,27,35,22,20,40,34,29,24,20,8,2,196,162,200,120,120,120,249,174,255,44,45,70,130,50,0,0,0,0,45,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,224,0,216,2,80,5,232,8,20,13,175,14,117,27,0,23,21,41,34,30,25,20,8,2,196,162,200,120,120,120,249,174,255,44,45,70,130,50,0,0,0,0,45,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,199,7,49,0,6,7,6,7,6,6,3,4,1,3,232,221,255,253,1,246,234,38,20,20,249,11,15,37,242,0,223,1,242,224,248,229,2,0,244,3,39,10,27,238,36,13,2,233,224,225,240,219,218,221,237,4,13,12,25,14,37,219,243,224,244,213,217,230,34,40,20,19,19,65,20,240,235,232,251,242,239,255,19,7,5,245,254,241,220,205,220,230,240,234,228,7,25,35,19,13,30,29,24,244,3,253,247,252,227,19,2,20,253,31,12,39,7,244,247,244,245,229,202,210,242,245,238,246,249,41,32,10,31,17,28,19,243,255,2,245,253,238,0,24,11,12,24,22,25,16,243,254,252,236,232,173,27,27,7,222,38,97,105,9,251,67,56,20,196,211,0,24,230,246,1,51,59,18,10,50,36,17,222,237,13,250,216,221,253,24,17,248,12,39,30,30,243,239,192,215,187,180,173,203,244,247,25,17,56,61,58,22,0,1,225,228,193,222,230,253,0,3,20,50,18,19,10,253,246,223,203,223,219,212,238,234,20,10,20,25,24,22,8,250,229,224,228,238,210,236,233,255,10,30,19,24,37,14,6,248,213,238,211,221,222,241,0,16,8,61,48,66,34,47,21,10,253,220,221,225,217,243,2,253,33,8,44,53,14,11,254,251,239,219,214,219,235,227,244,0,17,16,24,20,39,16,1,0,246,248,253,220,243,231,10,3,18,16,54,42,42,31,17,29,17,242,252,223,4,245,1,234,57,35,22,33,16,19,6,219,202,236,193,215,200,248,22,23,16,64,52,76,45,45,67,62,30,39,19,44,36,11,25,35,40,9,226,201,234,186,152,133,162,197,193,162,194,0,7,4,2,17,39,22,240,241,245,2,247,239,16,42,59,55,57,77,97,59,41,22,28,13,239,202,212,222,210,213,219,236,247,238,233,230,208,211,194,196,186,193,200,197,205,232,254,5,9,26,26,49,21,23,29,21,39,30,5,32,33,10,14,17,15,33,4,238,7,247,236,231,225,238,0,245,223,220,226,247,242,226,4,251,19,0,249,6,19,24,38,19,49,37,28,24,11,10,18,1,15,47,39,35,28,43,24,6,251,246,2,0,223,244,250,237,240,242,246,2,249,0,3,7,7,13,255,0,0,251,219,240,245,8,0,9,36,42,40,25,14,36,33,252,5,242,1,252,250,2,24,27,47,6,19,25,254,238,230,215,222,228,235,251,17,15,3,7,5,248,232,194,200,232,187,213,196,2,7,15,1,28,10,7,241,227,230,210,214,206,238,242,233,243,13,11,27,37,19,26,7,239,196,199,180,213,190,231,253,28,44,67,54,74,39,7,2,234,211,212,212,225,233,7,10,31,47,59,48,58,9,2,243,213,220,213,201,232,244,0,2,14,32,31,35,254,250,229,208,215,189,207,223,244,20,18,44,59,37,27,40,25,29,254,242,248,248,14,8,20,45,57,74,59,71,79,72,37,21,5,242,244,248,9,10,41,43,55,54,63,48,37,30,6,252,239,206,231,227,219,252,12,10,35,30,49,40,39,35,18,25,5,1,237,230,228,218,224,225,231,251,253,224,233,224,233,207,204,192,223,200,195,201,218,217,216,233,233,237,244,236,6,6,246,8,7,13,28,13,23,31,33,43,23,28,31,38,33,7,25,247,2,247,249,231,246,244,244,237,252,4,0,248,255,10,253,243,251,234,254,237,235,226,243,224,247,239,2,1,4,12,8,8,251,247,250,245,243,236,247,0,2,247,3,245,249,243,229,236,227,237,236,253,244,3,5,7,10,14,8,254,11,8,34,18,25,16,47,28,37,18,22,28,35,30,36,41,26,34,39,25,34,24,245,0,20,228,252,220,231,252,233,214,249,232,237,243,234,250,243,206,235,221,237,243,224,238,0,0,6,246,252,12,21,25,9,17,6,5,7,241,254,238,236,242,243,5,248,253,252,0,237,251,223,250,217,237,228,226,243,239,12,2,23,9,37,37,19,25,4,19,255,0,248,249,248,3,235,246,255,249,239,249,18,17,14,8,16,10,7,248,0,255,251,254,16,4,8,22,28,33,28,26,39,30,36,38,48,43,48,72,25,48,39,49,47,33,37,40,15,17,251,255,241,218,223,213,206,221,217,226,209,238,241,0,247,253,232,241,242,244,235,240,0,12,2,36,14,13,27,8,6,1,231,232,226,223,236,204,251,215,239,252,242,251,236,238,249,209,220,202,189,203,196,193,208,210,236,228,10,255,14,12,9,8,248,6,0,254,248,8,27,31,23,48,66,64,77,44,60,31,53,4,29,11,13,26,18,18,21,26,29,20,25,24,20,7,9,18,14,237,19,253,255,247,250,252,6,0,252,8,245,17,4,14,13,30,252,25,254,6,17,229,4,243,238,250,239,250,234,248,238,249,243,243,252,244,254,244,1,249,248,230,253,239,241,244,242,251,9,244,248,5,6,254,231,223,237,211,215,209,229,241,229,232,239,227,246,221,232,231,232,232,224,238,247,253,242,0,8,9,251,254,0,11,251,248,6,5,9,1,4,10,7,16,12,9,13,23,13,19,25,18,25,25,31,33,17,13,27,5,35,8,27,26,38,22,26,8,19,1,8,252,253,4,254,253,7,11,17,4,15,35,7,16,22,17,24,15,13,31,14,28,21,16,14,4,17,0,254,5,2,11,255,9,0,246,0,0,0,243,238,251,248,234,242,255,249,246,251,2,0,247,239,5,239,229,242,227,243,217,219,228,217,226,227,224,242,227,249,250,226,255,247,243,249,238,10,238,238,242,232,252,228,229,0,242,0,254,6,20,251,22,28,18,30,24,25,21,14,26,6,22,7,19,34,22,28,22,24,23,8,16,25,12,16,15,10,12,4,7,3,12,1,9,3,247,1,251,247,254,246,248,249,229,249,231,244,239,246,253,252,0,0,0,247,251,246,248,241,236,245,225,221,244,226,238,246,241,255,6,6,22,1,18,18,11,18,3,22,10,5,22,5,251,2,231,249,248,240,0,253,8,27,15,23,30,27,29,16,11,10,253,247,237,241,235,227,231,233,234,249,253,0,9,254,6,3,255,9,250,248,246,252,243,235,239,234,2,233,238,251,253,244,250,243,5,14,249,16,9,13,9,7,20,11,16,7,9,9,0,254,243,244,4,0,251,17,16,23,26,13,35,30,16,21,19,28,25,19,32,27,33,28,28,33,25,11,11,7,5,252,245,251,0,253,253,252,254,252,249,253,244,255,246,254,244,4,251,254,237,244,254,245,253,252,5,1,2,1,12,254,236,235,229,225,223,218,233,224,239,247,253,249,253,254,252,248,3,255,248,248,251,0,252,2,253,3,251,1,254,3,255,5,248,23,6,1,251,250,249,242,238,239,248,232,240,251,255,8,3,10,5,1,2,254,253,250,4,254,0,247,255,239,255,0,22,4,17,20,20,14,17,24,23,8,5,5,254,239,231,235,239,245,248,6,9,15,4,14,1,14,0,0,0,11,7,12,0,13,10,10,6,17,12,16,2,17,14,22,10,7,13,0,254,239,254,235,243,239,255,255,1,253,10,255,15,13,25,16,21,17,11,0,0,2,244,247,0,13,252,0,6,9,3,252,15,8,253,250,254,253,235,243,238,243,230,248,244,239,241,0,0,254,6,25,12,0,9,11,7,242,2,2,1,241,255,249,246,237,244,247,248,247,252,247,247,0,248,2,252,17,0,255,255,255,254,237,2,4,0,8,3,18,254,1,246,255,248,0,254,0,3,2,3,0,9,1,3,248,3,251,246,238,244,243,239,245,250,7,2,11,11,16,21,17,22,12,20,2,3,241,242,244,239,242,240,255,246,251,243,2,255,0,246,1,4,1,254,255,5,5,4,0,14,11,14,3,9,10,252,248,248,254,242,244,252,244,252,246,3,248,0,7,9,4,10,20,8,4,0,10,251,252,253,253,252,254,252,249,253,244,255,246,254,244,4,251,254,237,244,254,245,253,252,5,1,2,1,12,254,236,235,229,225,223,218,233,224,239,247,253,249,253,254,252,248,3,255,248,248,251,0,252,2,253,3,251,1,254,3,255,5,248,23,6,1,251,250,249,242,238,239,248,232,240,251,255,8,3,10,5,1,2,254,253,250,4,254,0,247,255,239,255,0,22,4,17,20,20,14,17,24,23,8,5,5,254,239,231,235,239,245,248,6,9,15,4,14,1,14,0,0,0,11,7,12,0,13,10,10,6,17,12,16,2,17,14,22,10,7,13,0,254,239,254,235,243,239,255,255,1,253,10,255,15,13,25,16,21,17,11,0,0,2,244,247,0,13,252,0,6,9,3,252,15,8,253,250,254,253,235,243,238,243,230,248,244,239,241,0,0,254,6,25,12,0,9,11,7,242,2,2,1,241,255,249,246,237,244,247,248,247,252,247,247,0,248,2,252,17,0,255,255,255,254,237,2,4,0,8,3,18,254,1,246,255,248,0,254,0,3,2,3,0,9,1,0,0,7,15,22,29,36,43,50,57,63,70,76,83,89,95,101,107,112,118,123,129,134,139,144,149,153,158,162,167,171,175,179,183,187,190,194,197,201,204,207,210,213,215,218,220,223,225,227,229,231,232,234,236,237,238,239,240,241,242,243,243,244,244,244,244,244,244,244,243,243,242,241,240,239,238,237,236,234,232,231,229,227,225,223,220,218,215,213,210,207,204,201,197,194,190,187,183,179,175,171,167,162,158,153,149,144,139,134,129,123,118,112,107,101,95,89,83,76,70,63,57,50,43,36,29,22,15,7,0,0,6,0,1,0,204,0,158,2,252,4,60,10,168,12,10,15,0,28,40,47,32,52,71,39,47,23,13,7,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,204,0,93,2,208,4,60,10,168,12,10,15,0,28,50,115,45,89,101,56,67,33,20,8,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,204,0,93,2,208,4,60,10,168,12,10,15,0,28,30,104,42,84,96,53,64,32,19,8,170,165,150,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,190,0,32,2,242,5,84,10,240,12,236,14,9,28,75,69,37,71,77,51,55,30,15,7,169,142,163,120,120,120,170,180,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,1,0,156,0,144,1,152,8,140,10,152,13,166,14,32,28,30,37,31,54,47,57,44,32,10,8,167,90,195,120,120,120,122,120,135,44,45,70,130,59,0,0,0,0,40,0,0,0,0,232,98,182,104,129,0,191,77,252,97,182,64,250,22,8,1,0,156,0,144,1,174,8,160,10,92,13,10,15,32,28,0,31,31,49,49,45,42,33,9,8,167,90,135,120,120,120,122,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,226,48,0,0,0,250,0,0,100,0,3,0,5,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,50,38,18,54,39,30,27,24,12,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,50,38,18,54,39,30,27,24,12,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,0,33,16,50,36,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,90,0,4,0,5,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,30,24,14,43,31,24,21,19,9,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,5,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,40,33,16,50,36,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,21,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,20,30,16,50,28,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,0,33,16,50,36,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,50,0,3,0,5,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,30,33,16,50,36,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,21,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,20,30,16,50,28,28,25,22,11,7,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,176,0,184,1,32,3,64,11,32,13,120,15,144,26,0,29,15,46,33,26,23,20,10,6,162,127,150,120,120,120,162,127,165,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,22,21,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,254,255,255,254,253,251,249,245,238,230,224,229,251,22,38,34,17,252,234,229,235,252,10,15,20,16,5,250,236,241,247,254,12,15,16,3,244,232,235,254,11,24,26,27,17,250,243,242,251,1,247,239,244,4,7,234,201,193,236,60,94,65,11,222,209,192,184,221,27,76,64,17,235,218,205,200,222,14,62,62,32,1,238,233,228,239,6,26,16,5,8,239,1,11,1,28,250,249,2,223,246,247,254,35,17,3,250,221,235,241,232,251,0,27,40,10,5,242,218,231,248,13,30,26,11,248,237,236,240,2,19,19,8,250,244,237,233,249,7,20,29,22,0,240,238,245,247,248,5,27,37,23,253,242,239,248,1,249,233,234,40,82,39,234,205,234,253,248,3,8,31,31,245,251,252,233,249,248,12,25,5,8,249,240,253,244,7,34,18,8,249,236,243,250,18,18,1,11,4,7,27,4,233,228,234,26,48,25,14,0,3,5,234,219,246,33,49,30,253,237,232,231,239,249,36,65,16,223,219,249,26,19,246,238,5,30,25,13,4,252,1,253,230,245,20,20,4,247,9,38,41,13,224,219,229,203,203,252,43,65,46,8,245,224,199,201,231,14,36,37,23,253,241,228,220,254,15,11,18,12,9,3,241,239,251,252,240,242,3,17,10,254,252,0,7,255,242,240,242,249,11,20,0,237,237,250,6,9,1,2,7,247,234,247,9,9,1,0,2,252,236,236,252,10,11,0,0,2,254,244,232,239,252,250,255,15,9,247,242,252,5,4,250,0,14,1,243,234,242,18,22,255,244,249,14,32,4,221,226,252,13,14,10,20,24,4,242,236,244,252,1,16,21,27,14,243,248,0,243,247,13,19,14,3,250,3,18,3,247,254,0,20,20,247,249,5,5,0,252,8,18,253,249,3,3,20,17,7,16,13,247,233,240,250,26,42,3,240,245,250,12,18,10,5,253,6,6,244,241,251,16,12,253,4,8,1,239,224,5,39,18,4,0,245,255,0,246,2,24,21,18,22,15,244,208,227,19,24,11,17,2,230,0,246,217,19,28,17,21,246,245,236,239,245,1,56,61,6,240,240,212,253,22,247,24,33,34,3,214,239,218,251,58,31,39,43,220,170,1,35,5,27,0,10,32,5,7,248,228,254,29,29,23,238,227,24,7,213,207,226,17,66,61,7,229,249,12,4,2,3,6,32,19,226,220,1,8,245,24,31,9,29,255,220,237,2,249,232,24,52,7,248,5,0,4,3,220,240,45,37,0,254,5,249,241,229,217,250,10,247,247,13,15,244,244,249,214,217,9,8,243,252,246,245,3,241,220,225,2,16,255,11,255,221,240,255,9,31,4,213,220,252,1,1,5,16,36,14,213,193,232,26,33,16,6,242,240,5,250,218,223,7,35,7,242,3,3,247,228,227,1,22,15,244,237,248,252,245,255,15,1,0,246,227,249,4,2,6,13,13,3,242,228,246,248,14,43,12,4,242,219,233,248,17,17,26,25,253,246,243,8,253,229,11,16,5,32,30,246,232,227,242,22,12,35,56,1,241,1,11,250,232,250,28,50,250,228,11,22,9,219,217,29,61,2,223,255,8,5,239,212,22,87,27,218,223,0,24,4,228,253,79,89,235,169,233,48,17,205,241,76,83,23,201,183,223,19,57,16,17,49,3,237,247,244,0,0,9,53,25,226,239,13,47,56,247,213,4,6,223,218,235,51,122,57,223,233,6,251,200,181,6,81,62,0,237,10,18,250,220,232,2,11,36,16,248,22,21,248,0,10,1,252,246,241,209,207,11,66,96,37,208,225,249,234,224,220,21,84,72,58,27,220,201,209,228,22,37,8,242,8,36,245,215,229,218,248,23,19,10,248,244,248,2,241,232,15,2,232,1,25,9,237,206,212,17,33,4,246,221,194,207,255,31,37,10,249,240,204,215,237,249,22,25,45,16,215,210,209,236,8,13,21,40,12,213,202,209,12,29,8,11,249,6,232,186,234,24,38,38,255,226,238,230,238,244,0,45,23,8,4,226,243,9,255,242,14,37,7,240,220,220,23,46,0,0,11,2,227,195,248,21,33,47,13,7,221,199,243,24,62,38,8,0,239,253,250,224,236,24,66,54,241,227,2,250,249,252,250,21,32,11,246,241,246,243,242,1,55,66,245,188,193,2,56,40,15,17,28,245,199,203,234,22,49,45,31,35,23,224,183,202,0,52,80,31,230,245,0,234,228,247,8,48,60,249,222,236,255,21,0,23,55,0,223,189,188,32,89,50,224,217,20,7,220,191,251,75,40,1,249,252,252,234,252,19,30,35,250,236,8,12,25,249,215,239,7,21,255,2,47,43,242,207,243,17,0,221,226,54,104,34,185,166,0,65,12,209,250,47,30,240,229,19,23,246,231,233,31,49,245,193,212,52,89,249,185,254,44,23,3,238,237,254,12,4,243,15,15,253,253,221,246,255,229,253,14,45,23,206,159,173,251,57,101,70,239,196,209,250,4,247,241,9,5,228,212,219,25,39,245,234,22,54,0,194,204,11,46,2,216,223,251,36,32,210,189,13,50,7,210,203,13,35,254,242,245,35,50,249,221,231,12,47,1,175,177,8,95,97,11,208,206,215,233,9,49,61,54,12,223,207,198,235,44,80,44,249,8,13,226,195,221,33,77,69,12,218,222,224,226,8,38,35,24,19,17,232,186,215,1,53,76,3,217,252,19,5,215,206,54,114,28,205,195,239,28,30,25,6,230,246,10,254,18,40,18,242,200,202,244,16,56,62,25,2,212,199,9,35,23,29,29,9,231,230,253,237,0,60,55,254,237,12,252,229,248,250,6,41,40,3,236,215,246,34,234,214,21,84,72,252,195,184,7,44,250,234,9,68,34,210,213,238,20,29,238,246,31,33,254,221,237,2,12,250,245,47,66,13,229,214,191,240,64,58,34,7,1,37,252,166,174,253,65,61,26,56,29,206,188,188,231,250,9,108,112,18,211,181,213,252,0,35,76,22,227,225,201,244,47,47,26,0,0,242,238,248,239,9,27,0,245,12,34,24,229,193,221,250,17,16,247,247,255,251,226,197,213,24,56,10,247,255,237,231,223,248,47,28,4,6,2,1,237,241,11,4,236,8,47,1,217,228,253,17,7,7,16,241,219,235,234,221,248,25,27,2,230,228,245,252,254,253,249,254,253,249,246,0,18,12,254,236,240,6,4,250,246,2,19,9,246,233,236,251,7,8,249,246,245,252,0,234,245,5,0,15,11,237,233,1,28,20,251,243,230,248,39,30,235,236,23,36,241,223,11,23,18,253,252,9,251,0,243,2,16,242,12,17,247,230,230,20,45,27,231,197,240,21,12,8,9,33,42,240,210,219,14,47,14,3,248,5,38,5,194,202,39,48,236,232,8,24,255,202,229,48,60,12,208,221,6,5,18,26,20,10,221,221,9,28,20,7,18,26,13,237,227,6,32,17,0,5,6,28,23,235,227,18,48,250,229,10,47,52,243,223,3,33,40,244,219,253,18,24,1,245,35,34,231,221,5,24,227,206,249,62,112,32,195,208,14,22,239,246,13,21,25,15,250,7,18,254,237,223,13,55,8,188,192,6,33,34,10,231,250,27,0,200,219,26,49,25,2,233,219,247,17,13,4,3,240,250,15,0,242,225,231,242,241,17,43,9,216,225,8,10,219,198,224,11,50,19,244,252,240,215,199,231,28,33,0,249,255,230,231,248,242,1,4,239,247,252,251,249,225,240,254,235,244,6,23,19,255,230,201,228,17,20,249,235,2,20,9,221,210,255,21,17,4,236,234,245,230,243,6,255,4,250,234,243,245,233,237,2,8,7,238,221,251,11,246,232,253,11,23,2,213,225,247,17,21,241,0,12,250,1,245,229,224,1,52,24,1,234,231,8,241,243,250,18,48,0,252,251,236,253,243,4,19,38,54,242,206,233,0,5,2,31,23,32,44,233,210,232,13,12,254,23,14,3,244,240,17,29,25,8,233,230,239,20,70,21,239,16,6,5,24,4,2,11,1,7,25,31,17,240,210,255,53,50,31,0,0,14,13,0,237,6,41,48,27,250,235,242,16,35,24,9,17,21,248,224,207,245,80,78,33,22,251,237,214,215,26,32,27,58,49,19,218,167,180,247,66,94,50,244,254,12,227,214,253,27,10,243,3,62,88,34,209,177,236,40,35,4,240,248,8,247,234,254,249,253,11,7,15,237,195,215,7,33,20,15,2,255,1,221,207,237,4,16,13,8,17,7,226,207,223,252,254,251,19,22,16,14,230,205,217,242,3,246,6,24,4,249,229,216,214,243,26,24,1,228,233,251,242,238,244,250,250,253,12,20,241,199,202,249,39,4,218,234,253,254,213,197,229,10,25,2,248,229,210,225,0,1,232,7,23,0,7,246,215,217,255,20,249,2,1,244,23,248,226,0,248,6,5,236,243,6,18,246,219,242,3,17,19,237,245,252,230,249,245,0,31,23,5,220,211,246,0,16,24,34,16,215,212,226,19,39,255,29,25,9,254,206,231,254,28,41,4,25,13,4,254,209,215,0,60,59,14,255,15,29,221,209,18,29,12,9,17,3,243,252,251,12,35,5,254,5,237,250,250,247,36,22,244,3,21,5,241,244,0,24,20,0,254,251,39,42,244,235,246,8,13,15,10,246,1,14,15,5,248,252,32,40,217,201,15,39,18,250,5,15,238,225,250,14,16,9,3,4,255,2,10,255,250,237,242,255,6,47,50,9,228,197,217,19,45,27,252,245,252,244,243,253,244,251,30,32,236,198,226,2,13,13,0,3,24,11,223,222,0,254,248,6,5,255,253,22,35,248,238,229,201,251,17,4,10,250,9,24,238,191,204,6,44,35,246,226,241,7,251,211,224,4,22,17,0,246,228,243,4,239,239,3,14,6,245,239,224,226,0,9,10,19,6,241,231,226,234,3,13,4,254,255,252,246,241,221,230,13,13,0,0,243,247,255,239,233,241,17,31,253,236,238,0,17,2,219,223,19,22,2,0,227,221,20,18,241,247,237,1,14,238,244,13,9,231,237,7,7,15,254,243,11,21,243,222,244,8,31,32,8,247,251,255,228,237,21,27,23,0,248,13,244,220,245,10,25,32,26,3,231,226,246,25,21,237,249,32,27,7,247,249,7,235,223,10,33,30,17,239,252,45,23,234,228,253,27,31,24,11,254,244,236,9,37,17,0,255,16,32,7,245,3,30,41,12,255,12,26,15,221,236,37,24,0,6,22,39,20,235,231,15,41,20,253,13,20,5,255,244,17,32,251,236,6,33,32,16,8,9,245,235,251,3,32,32,5,5,1,250,253,243,243,25,55,41,5,245,238,215,217,10,51,43,16,5,0,236,227,238,1,14,15,23,4,241,242,247,2,13,22,8,237,229,3,28,14,255,238,249,19,22,4,233,250,17,7,245,238,3,31,24,234,226,9,36,13,218,223,23,41,253,229,243,2,20,248,228,12,11,247,248,255,1,247,254,1,14,20,247,248,18,4,230,247,247,245,39,24,243,241,248,9,254,254,1,2,13,246,232,244,249,0,17,24,5,238,240,14,2,219,233,26,52,13,236,230,245,17,249,234,250,24,50,3,230,235,241,3,7,20,24,12,250,225,241,12,12,0,238,251,17,3,251,244,2,15,250,251,3,2,2,9,6,250,247,246,2,2,4,14,253,245,252,5,248,234,246,252,24,37,8,227,225,15,8,230,247,27,40,11,238,235,2,14,240,222,3,43,19,229,240,24,23,254,246,3,11,252,241,248,8,6,4,16,6,1,5,245,244,251,255,7,6,21,24,9,248,227,254,16,245,237,6,36,30,251,230,240,252,4,6,1,12,32,22,239,224,249,22,20,244,252,31,29,13,253,241,244,3,23,13,0,3,5,22,26,255,243,255,10,14,0,250,5,13,24,25,5,255,20,23,230,200,236,39,58,20,245,9,26,0,228,216,246,31,26,1,0,23,15,246,241,250,10,18,7,3,12,6,244,237,0,25,16,1,2,1,2,3,7,5,255,253,244,3,34,25,0,238,236,10,27,2,231,255,29,20,1,237,247,21,16,254,246,246,8,19,3,250,239,242,12,18,1,248,250,10,15,0,239,244,17,11,246,249,248,3,10,252,2,12,255,251,2,251,246,252,255,5,9,6,0,252,240,234,0,30,27,248,231,240,5,13,238,228,3,20,22,7,233,233,255,255,255,255,253,12,13,2,238,227,255,1,252,8,19,24,243,225,2,0,240,242,250,13,17,7,17,6,224,232,249,241,9,18,5,10,6,4,246,240,11,3,242,251,244,17,45,255,230,247,8,12,230,218,15,56,26,227,223,0,14,2,238,236,17,39,4,244,3,0,251,240,229,252,16,24,20,243,226,245,252,2,2,240,247,21,35,16,241,237,239,233,250,16,34,33,253,240,4,4,246,243,249,3,19,20,15,1,243,0,0,238,246,17,21,1,251,248,6,10,239,242,7,14,7,250,246,254,9,0,243,246,3,18,9,250,244,247,249,252,6,8,9,7,253,251,254,255,251,247,0,11,8,1,4,0,242,241,254,18,25,11,245,243,6,9,252,237,254,29,23,250,237,255,14,2,235,240,24,41,13,239,232,246,0,6,13,19,20,14,255,240,246,249,249,2,15,33,28,4,236,233,255,5,0,0,14,26,12,5,0,239,252,9,10,17,6,0,10,3,1,1,245,245,1,14,17,13,5,253,253,254,245,243,5,24,22,8,1,249,232,223,239,17,37,25,252,235,240,255,6,248,245,12,23,13,2,247,242,238,237,1,14,9,22,23,251,234,230,237,6,21,13,0,9,16,255,244,239,241,242,6,27,18,24,7,232,231,234,255,18,17,22,11,239,231,239,252,17,23,2,0,5,250,237,229,249,21,25,7,251,10,8,251,249,228,222,4,38,29,10,250,245,251,248,0,9,12,16,4,4,7,231,216,250,23,26,21,5,238,245,253,248,250,243,1,17,20,10,232,243,249,233,14,30,12,1,249,248,0,16,2,249,6,9,5,241,247,6,246,247,255,2,10,4,255,253,3,3,246,240,249,19,26,250,240,255,1,254,250,254,3,17,8,231,245,10,4,7,6,4,9,254,235,244,16,31,8,238,250,17,16,245,234,249,0,7,12,6,0,247,244,249,1,9,3,251,2,7,254,244,248,0,1,8,6,252,245,247,0,9,9,252,235,240,9,20,3,242,253,9,252,240,249,14,17,251,240,251,9,15,255,239,252,7,249,249,1,1,8,6,247,240,254,13,9,252,243,249,0,4,10,7,2,0,253,245,241,253,5,5,2,249,2,12,0,247,243,252,11,7,247,248,5,5,0,0,0,246,246,6,21,18,254,247,246,241,249,251,0,9,19,19,0,246,244,251,249,238,248,12,30,19,242,238,252,253,250,1,8,12,12,0,248,4,0,230,233,10,24,18,255,247,0,1,243,232,255,21,19,7,249,2,9,249,232,242,12,11,244,248,18,21,1,245,243,249,253,0,0,8,13,255,251,251,249,251,254,4,4,8,2,248,255,0,0,9,3,243,245,5,14,6,248,0,5,251,249,250,1,9,7,0,246,247,1,3,7,253,250,6,248,242,0,1,18,17,247,246,4,9,250,232,239,12,33,24,6,247,245,248,246,255,7,9,16,26,22,253,224,224,245,3,21,14,5,19,5,249,240,228,244,18,27,5,2,255,248,5,4,2,1,10,21,254,234,255,18,8,6,14,4,1,1,246,247,255,0,255,13,28,10,247,235,232,246,8,34,31,0,247,242,242,252,251,1,20,18,255,240,246,255,3,5,0,252,253,5,11,255,240,251,14,7,248,0,15,4,241,239,252,15,10,247,251,254,0,11,0,239,248,255,255,1,249,250,10,14,0,238,246,0,252,251,1,8,5,254,246,249,2,255,248,249,0,10,15,251,234,252,8,254,243,245,5,18,10,248,243,0,5,245,238,254,11,17,6,249,249,253,248,239,247,8,12,5,253,0,5,250,238,242,2,14,7,0,1,0,246,238,249,7,9,7,1,1,0,240,239,252,2,12,13,9,0,246,240,244,4,5,0,4,8,13,7,242,239,0,7,252,242,0,13,10,252,245,1,7,246,240,252,8,12,1,252,0,0,254,252,254,1,3,4,1,1,0,252,253,250,250,3,8,9,2,249,246,0,11,1,252,252,254,7,6,252,254,10,9,247,240,254,14,7,252,1,5,9,0,236,244,8,11,4,250,0,15,7,245,246,3,8,3,6,253,251,8,253,249,11,9,248,247,9,9,1,6,254,253,4,251,248,2,12,7,254,6,12,252,244,251,0,11,4,247,0,11,15,3,245,246,254,13,9,246,255,9,5,4,2,251,254,8,1,247,255,11,14,7,252,254,8,4,4,252,248,20,23,5,253,248,5,10,254,244,1,28,21,3,243,237,10,15,246,253,19,21,14,255,244,0,254,245,254,14,32,24,247,230,248,14,11,250,249,6,22,25,255,237,253,9,18,10,239,243,11,18,6,255,253,6,21,3,243,245,253,15,15,0,0,8,5,249,239,246,13,20,4,0,4,251,241,252,11,12,4,251,252,1,1,3,4,1,3,2,0,2,5,1,249,246,252,6,14,7,250,248,251,255,254,254,5,12,11,255,244,240,246,4,9,4,3,6,5,1,248,241,253,9,7,3,3,1,252,248,244,250,8,13,5,250,244,248,1,4,253,251,4,7,0,251,248,248,2,7,254,249,2,8,2,250,247,0,5,254,247,251,8,13,0,242,246,0,3,0,250,250,1,7,3,248,245,253,2,5,252,246,2,8,0,249,246,251,2,6,2,252,253,250,255,4,251,247,0,4,7,7,253,248,248,250,1,3,254,253,0,5,8,253,244,248,1,1,250,0,8,11,5,250,248,250,251,253,1,9,7,0,254,254,253,251,253,3,2,255,254,2,10,253,246,0,2,6,1,254,2,2,0,253,255,4,1,255,0,2,7,4,248,245,3,13,3,251,254,7,15,2,241,238,251,12,14,11,5,255,0,247,245,252,0,12,15,9,255,247,255,0,254,3,7,1,3,6,1,254,246,247,4,10,5,0,10,7,246,246,253,10,16,7,254,248,0,1,254,3,0,254,7,13,9,251,243,255,9,3,247,246,10,20,11,251,240,255,4,252,254,0,0,4,9,11,11,0,244,249,0,6,7,2,4,6,8,3,249,247,252,3,9,9,7,0,249,253,0,255,4,2,3,10,6,4,255,248,255,1,4,13,13,254,245,249,0,4,254,250,4,20,18,254,238,242,255,2,0,4,14,16,0,249,250,250,0,0,0,11,16,10,253,245,251,0,253,252,5,9,14,10,251,251,0,248,244,1,11,14,18,6,249,245,243,250,0,2,1,10,18,5,249,248,251,252,249,252,12,21,7,252,248,252,1,249,241,254,21,26,11,250,240,246,253,249,253,10,18,16,3,250,245,239,246,3,7,9,9,4,0,252,249,252,254,0,4,5,8,9,255,242,241,253,10,6,252,253,2,9,6,246,238,250,10,8,255,0,3,0,253,250,248,1,10,2,247,248,4,5,253,254,0,5,5,253,248,252,255,255,2,5,6,1,253,253,0,255,252,0,1,2,3,255,249,250,0,3,1,253,252,0,0,249,253,4,4,0,252,251,1,4,253,249,0,3,3,255,250,254,254,253,254,0,3,1,0,253,1,6,0,249,249,255,3,2,0,255,0,254,255,0,252,255,6,3,252,250,255,255,0,1,253,2,6,0,252,249,0,4,4,0,247,252,3,3,1,251,0,6,2,254,248,246,255,2,0,3,9,9,0,245,243,250,0,4,2,4,11,7,253,244,246,255,4,4,3,5,9,2,248,249,248,252,1,3,12,14,5,250,243,246,246,252,6,12,16,9,252,244,243,241,249,10,18,18,6,253,252,243,239,252,8,18,24,10,245,237,241,251,2,9,15,12,8,2,245,241,245,254,8,14,10,4,5,3,248,238,241,0,16,20,10,1,253,249,247,248,0,10,15,10,0,253,254,252,245,252,9,11,12,9,0,248,246,251,255,2,8,9,10,7,252,244,247,253,0,6,9,8,8,3,253,249,246,248,7,16,7,0,251,255,8,2,249,248,252,3,12,8,255,253,1,0,249,251,5,16,14,2,254,251,252,254,254,3,9,10,6,253,248,250,0,3,5,8,8,0,252,252,250,253,5,7,9,10,1,251,251,254,0,0,0,5,7,6,4,2,0,251,249,253,0,4,3,6,11,2,253,253,252,254,0,1,8,12,8,3,249,243,249,1,7,7,7,8,4,253,250,250,251,3,11,9,2,254,255,0,255,255,2,6,7,1,255,254,250,251,0,4,8,6,0,255,0,254,251,255,6,8,4,254,252,0,2,0,0,0,2,3,3,1,255,254,255,0,0,2,1,4,2,251,249,254,5,9,5,0,0,3,1,251,250,1,10,7,254,253,0,1,0,251,251,4,7,3,255,0,1,255,252,252,255,4,5,0,0,4,1,251,251,255,3,2,255,0,8,9,255,250,252,253,0,3,3,2,2,2,0,251,251,255,0,2,3,3,6,4,255,248,248,254,3,7,8,3,0,254,251,253,254,255,3,9,5,0,2,0,253,250,250,1,10,10,1,254,0,0,254,251,253,0,6,8,6,1,248,245,253,3,6,7,5,2,0,251,250,253,0,2,5,9,8,255,248,249,251,2,8,7,3,0,0,255,251,250,254,8,10,0,255,0,0,253,252,1,5,8,4,252,251,254,0,0,255,3,8,4,254,254,254,255,0,1,3,3,0,253,254,3,1,254,1,6,4,0,254,254,0,1,1,0,2,2,2,255,254,0,0,1,2,1,2,0,253,254,255,2,8,4,1,1,251,251,0,6,5,2,1,1,0,254,252,255,1,3,5,3,3,3,254,250,254,2,5,5,3,0,255,0,0,0,0,3,5,3,254,251,254,4,6,2,0,0,1,1,0,255,2,7,7,3,254,251,253,3,2,253,1,8,7,3,0,253,253,255,0,1,5,6,1,253,252,253,1,1,1,4,4,5,3,253,251,252,255,1,5,6,5,1,251,251,255,0,0,1,3,2,2,1,253,253,0,0,1,3,0,254,255,2,3,255,252,254,2,2,0,255,2,5,3,254,249,254,5,3,0,0,4,2,255,253,255,0,0,0,0,0,200,0,4,0,1,0,191,0,180,1,28,8,44,10,124,13,216,14,128,28,50,41,25,54,56,53,42,34,11,8,185,107,137,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,191,0,180,1,28,8,44,10,124,13,216,14,128,28,80,77,35,75,77,73,57,47,15,11,185,107,137,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,191,0,180,1,28,8,44,10,124,13,216,14,128,28,70,65,32,69,71,67,53,43,13,10,185,107,137,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,191,0,180,1,28,8,44,10,124,13,216,14,128,28,0,29,22,46,48,45,35,29,9,7,185,107,137,120,120,120,185,107,127,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,195,0,4,0,1,0,141,0,80,1,224,6,20,10,32,13,160,15,104,25,45,36,9,57,51,48,42,29,11,9,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,242,160,182,104,128,0,191,197,200,3,183,176,250,161,182,3,0,141,0,80,1,224,6,20,10,32,13,160,15,104,25,75,62,12,76,68,64,56,39,15,12,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,88,128,0,191,197,174,161,182,1,250,0,0,1,0,141,0,80,1,224,6,20,10,32,13,160,15,104,25,75,45,10,64,57,54,47,33,12,10,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,49,149,0,183,8,0,0,0,1,250,0,0,1,0,141,0,88,1,224,6,20,10,32,13,160,15,104,25,0,29,8,52,46,44,38,26,10,8,174,115,127,122,122,132,187,130,137,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,0,0,0,0,188,232,98,182,64,250,22,8,165,0,3,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,110,86,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,16,0,0,0,64,242,160,182,1,250,0,0,7,0,116,0,24,2,136,5,16,9,88,12,16,14,88,27,55,24,22,43,46,30,28,21,11,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,200,139,0,8,111,105,153,1,32,250,3,183,1,0,116,0,72,2,120,5,208,7,224,11,152,13,88,27,0,21,22,43,37,30,13,11,6,4,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,128,163,191,188,53,0,183,188,232,98,182,64,250,22,8,0,0,3,0,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,50,50,31,60,73,41,43,33,17,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,16,0,0,0,64,242,160,182,1,250,0,0,3,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,90,86,41,79,96,54,56,43,23,8,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,200,139,0,8,111,105,153,1,32,250,3,183,1,0,116,0,24,2,140,5,116,9,188,12,116,14,88,27,0,42,28,55,67,38,39,30,16,6,167,150,135,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,128,163,191,188,53,0,183,188,232,98,182,64,250,22,8,0,0,3,0,1,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,50,49,30,62,69,42,44,32,16,6,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,170,3,183,16,0,0,0,64,242,160,182,1,250,0,0,3,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,90,88,40,83,92,56,58,43,22,8,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,0,0,0,200,139,0,8,111,105,153,1,32,250,3,183,1,0,123,0,15,2,181,5,176,9,198,12,136,14,38,27,0,42,27,57,63,38,40,30,15,5,166,145,133,120,120,120,197,120,120,44,45,70,130,59,0,0,0,0,40,0,0,0,0,128,163,191,188,53,0,183,188,232,98,182,64,250,22,8];var qC=[115,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,8,0,0,0,0,46,57,0,16,0,0,255,80,50,255,4,5,248,248,248,251,251,251,0,64,8,0,70,18,24,12,0,70,18,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,99,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,8,0,0,0,0,46,57,0,16,0,0,255,80,46,255,4,5,248,248,248,251,251,251,4,80,18,6,78,22,34,52,6,78,22,34,52,0,0,0,0,0,0,0,0,0,0,0,0,0,113,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,24,8,0,0,0,0,46,57,0,16,0,0,255,75,43,255,4,5,249,249,249,0,0,0,4,88,22,6,82,22,34,66,6,82,22,34,66,0,0,0,0,0,0,0,0,0,0,0,0,0,101,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,32,20,10,0,0,0,46,57,0,16,0,0,255,90,50,255,3,5,247,247,247,0,0,0,0,92,8,0,92,80,76,8,0,92,80,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,115,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,24,8,0,0,0,0,46,57,0,16,0,0,75,65,60,255,4,5,251,248,248,251,251,251,0,44,28,0,50,42,34,28,0,50,42,34,28,0,0,0,0,0,0,0,0,0,0,0,0,0,99,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,8,0,0,0,0,46,57,0,16,0,0,255,65,50,255,4,5,249,248,248,249,251,251,2,60,42,2,55,42,34,52,2,55,42,34,52,0,0,0,0,0,0,0,0,0,0,0,0,0,113,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,24,8,0,0,0,0,40,75,0,16,0,0,255,75,43,255,4,5,249,249,249,249,0,0,2,70,50,2,35,45,60,70,2,35,45,60,70,0,0,0,0,0,0,0,0,0,0,0,0,0,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,32,20,10,0,0,0,46,57,0,16,0,0,255,90,50,255,3,5,249,247,247,249,0,0,0,92,8,0,92,80,76,8,0,92,80,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0,115,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,8,0,0,0,0,46,57,0,16,0,0,255,80,50,255,4,5,249,248,248,249,251,251,0,64,8,0,70,18,24,12,0,70,18,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,99,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,24,8,0,0,0,0,46,57,0,16,0,0,255,70,30,255,4,5,249,248,248,249,251,251,4,75,50,0,70,18,24,12,0,70,18,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,113,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,40,24,8,0,0,0,0,46,57,0,16,0,0,255,75,43,255,4,5,249,249,249,249,0,0,4,88,22,6,82,22,34,66,6,82,22,34,66,0,0,0,0,0,0,0,0,0,0,0,0,0,101,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,32,20,10,0,0,0,46,57,0,16,0,0,255,90,50,255,3,5,249,247,247,249,0,0,0,92,8,0,92,80,76,8,0,92,80,76,8,0,0,0,0,0,0,0,0,0,0,0,0,0];var tk=[0,4,0,0,64,169,0,0,13,69,65,33,67,37,48,48,34,133,87,124,0,0,14,70,56,21,83,20,19,64,50,125,86,136,63,0,0,0,12,68,76,81,213,20,87,117,79,58,133,0,11,200,24,244,133,76,128,68,61,112,66,10,68,21,148,137,20,136,34,118,0,0,14,69,52,147,4,21,112,63,118,55,70,57,129,0,12,68,32,20,212,100,105,133,87,47,118,0,0,11,65,4,35,55,35,0,81,108,97,32,16,65,4,115,15,58,132,55,0,81,119,104,105,108,101,32,12,69,12,243,142,61,32,49,119,50,110,0,16,70,80,244,142,4,67,192,47,127,50,6,133,70,131,0,13,69,80,129,83,37,48,85,124,87,118,87,0,12,69,80,128,77,21,48,47,117,63,86,0,19,65,4,35,49,115,11,0,85,46,32,107,32,46,32,97,32,46,32,6,65,4,133,0,14,4,193,4,34,0,11,67,84,225,15,120,50,70,6,129,0,14,70,61,85,23,5,33,0,130,47,58,110,70,0,18,71,52,21,83,60,193,85,52,63,125,87,13,55,124,13,63,0,16,70,12,243,150,20,229,0,49,119,50,82,13,50,47,0,13,69,5,0,67,32,80,115,48,35,74,118,0,0,0,10,68,72,81,83,20,34,124,87,0,11,68,37,48,65,12,132,87,13,49,0,13,68,9,86,15,52,69,120,49,87,13,63,0,21,72,4,229,9,80,129,83,37,48,35,50,47,6,118,85,13,87,118,87,0,0,14,69,8,84,140,36,224,69,123,55,6,118,50,0,13,69,72,83,9,76,128,34,117,55,109,89,0,11,67,13,144,78,87,132,6,35,50,0,15,69,12,243,150,20,224,49,119,50,82,6,124,50,0,23,73,12,243,80,21,66,84,36,243,128,49,119,63,48,13,47,6,118,89,13,50,0,6,65,8,69,124,0,0,16,70,4,229,9,29,80,64,35,50,47,6,124,79,13,0,14,70,76,227,207,44,84,128,87,50,129,49,110,0,16,70,61,85,12,36,84,128,6,130,47,55,4,132,110,0,15,70,36,51,206,8,20,128,132,49,119,50,69,122,0,15,70,12,21,5,72,84,128,49,133,47,110,34,110,0,0,6,195,85,64,192,17,14,67,21,64,192,117,47,6,87,117,47,34,13,0,0,10,67,12,17,133,49,35,81,118,0,12,68,8,244,207,52,69,113,86,13,63,0,0,12,69,16,145,83,20,192,70,124,86,114,0,17,70,4,224,76,101,50,83,115,50,35,55,13,87,118,87,0,6,65,12,87,124,0,0,9,198,4,193,201,21,36,192,66,16,70,76,83,148,36,83,148,87,117,50,47,136,50,47,0,0,19,71,21,132,5,73,66,83,20,117,49,87,48,110,47,6,124,86,0,14,4,95,8,1,3,105,6,35,74,4,117,49,0,0,12,68,85,48,71,20,57,129,87,109,73,0,0,13,69,53,84,141,85,32,63,142,63,110,0,105,12,69,53,84,141,85,32,63,123,63,110,0,13,69,8,19,12,61,64,69,35,55,13,47,0,6,65,16,70,124,0,0,15,70,65,81,82,36,193,64,48,57,138,34,114,0,103,14,70,72,82,78,36,225,192,34,133,50,109,66,0,17,70,36,224,197,57,49,64,118,50,87,6,117,50,87,0,36,0,16,70,64,20,211,21,32,153,48,35,87,110,69,6,132,0,19,71,36,212,18,20,50,83,20,118,63,48,34,118,87,6,132,87,0,20,71,4,35,210,36,114,78,20,35,69,13,34,6,118,73,13,50,118,0,0,12,68,29,84,149,76,79,129,34,129,86,0,0,15,69,37,64,76,36,16,118,47,6,35,55,109,13,0,18,70,5,48,133,77,67,211,35,87,69,6,117,87,47,13,87,0,5,65,20,124,0,0,15,70,8,148,195,84,149,0,69,118,87,49,118,47,0,0,17,70,36,225,21,77,68,153,118,50,70,120,87,47,34,118,0,0,12,68,56,147,138,4,50,118,50,73,13,0,15,70,52,85,1,64,131,210,63,117,47,13,81,127,0,0,15,69,16,210,84,72,144,70,13,63,124,47,34,37,0,8,197,52,86,9,12,240,65,14,69,32,21,193,36,144,105,13,58,6,132,124,0,13,69,17,84,136,4,208,70,120,34,13,63,0,13,69,72,80,129,80,80,34,124,69,133,47,0,13,69,64,148,129,80,80,48,132,34,13,47,0,14,69,44,20,129,80,80,49,13,34,121,47,118,0,13,69,4,84,129,80,80,135,34,6,133,47,0,6,65,24,117,81,0,0,17,70,65,33,84,21,133,0,48,34,124,47,117,49,87,47,0,0,17,71,5,32,200,36,32,76,16,122,74,118,69,125,55,70,0,19,67,92,147,132,58,6,132,50,70,15,6,120,48,0,81,117,112,32,11,67,92,147,132,58,132,50,70,0,36,0,9,67,16,243,133,70,120,50,0,18,72,64,130,76,48,148,9,56,80,81,118,55,109,48,124,50,0,9,67,80,243,133,47,131,50,0,13,68,20,208,133,16,117,63,69,6,117,70,0,0,13,69,72,17,9,76,128,34,35,70,118,89,0,13,69,24,147,137,80,80,81,132,50,132,47,0,14,69,16,148,205,4,192,70,118,86,63,13,55,0,6,65,28,73,124,0,0,14,70,64,197,77,8,84,128,48,55,120,63,110,0,0,17,70,21,97,82,100,243,133,117,82,34,118,58,120,50,0,106,16,70,21,97,82,100,243,133,117,82,34,118,58,119,50,0,15,7,20,8,5,25,39,12,12,84,133,55,0,72,32,13,67,12,19,128,2,49,35,50,0,32,9,12,16,70,88,20,197,48,147,133,82,35,87,13,55,124,50,0,10,67,80,243,128,47,120,50,0,10,10,67,76,19,128,4,87,35,50,0,14,4,95,54,48,15,87,6,118,49,87,47,136,0,0,0,13,69,24,82,83,81,144,81,132,87,47,118,0,6,65,32,133,74,0,0,16,70,32,245,83,80,243,128,105,57,129,87,47,13,50,0,17,70,36,226,5,72,149,0,118,50,105,6,117,34,118,47,0,14,70,13,84,2,60,20,132,49,120,69,13,70,0,9,198,4,229,9,28,83,128,65,0,20,71,65,33,83,20,229,12,100,48,34,117,86,13,50,47,55,118,0,32,0,11,67,4,229,9,35,50,47,132,0,103,11,68,37,33,78,20,132,34,124,50,0,12,68,80,242,217,60,47,131,49,118,131,0,10,68,60,50,18,20,131,49,110,0,10,67,36,225,25,118,50,70,118,0,8,1,35,105,35,89,0,27,0,14,65,36,2,132,35,63,0,14,42,81,97,109,32,13,65,36,2,132,115,63,0,42,81,97,109,32,9,65,36,132,0,76,32,9,42,16,70,88,84,148,36,49,83,82,123,47,118,87,124,86,0,5,65,36,132,0,0,12,67,84,229,15,4,120,50,106,113,0,103,11,67,84,229,15,4,120,50,47,113,0,17,70,37,0,78,20,208,64,118,48,115,50,6,124,63,13,0,15,70,88,147,133,100,20,132,82,118,50,57,110,70,0,16,70,16,80,146,36,81,128,70,124,69,34,6,124,81,0,13,1,37,48,142,87,6,117,50,47,0,105,27,11,1,37,48,110,87,117,50,47,0,27,0,11,67,37,68,192,118,47,87,0,72,34,13,70,12,129,83,32,148,133,74,117,89,110,0,8,67,100,84,128,57,110,0,9,1,38,10,35,50,70,0,76,0,10,68,8,22,79,84,69,132,129,0,0,24,73,92,244,139,77,64,84,36,243,128,58,6,142,49,87,47,4,133,89,13,50,0,105,23,73,92,244,139,77,64,84,36,243,128,58,6,123,49,87,47,4,133,89,13,50,0,13,69,61,33,5,4,192,127,70,6,136,55,0,16,70,52,16,200,37,51,79,63,115,74,118,86,63,131,0,18,8,4,195,169,20,5,14,20,5,70,133,47,6,119,50,47,0,23,73,12,243,148,72,20,20,36,243,128,49,119,50,47,34,6,35,48,89,13,50,0,6,65,40,73,133,0,0,15,70,80,129,82,21,48,64,47,13,34,124,86,13,0,16,70,84,229,207,84,225,0,120,50,58,6,130,50,70,0,9,198,32,245,197,88,84,128,66,0,10,67,76,148,128,87,4,142,0,105,9,67,76,148,128,87,4,123,0,11,67,16,243,148,70,131,50,47,0,9,17,71,4,116,133,77,50,86,20,115,79,34,117,87,118,82,0,13,1,42,35,87,47,13,34,118,87,49,0,27,0,9,1,43,48,55,120,87,0,27,0,15,70,36,195,9,56,242,83,118,55,13,50,6,134,0,12,69,76,145,206,21,32,87,132,50,110,0,16,70,36,224,207,52,147,135,118,50,49,120,63,109,66,0,16,69,21,133,18,20,208,117,49,87,47,34,6,124,63,0,6,65,44,49,133,0,0,15,70,76,84,135,20,19,148,87,122,73,13,50,47,0,16,70,61,4,15,56,83,148,13,48,131,50,13,50,47,0,14,70,16,145,72,5,33,0,70,132,105,122,70,0,0,16,70,72,83,1,80,149,133,34,117,55,13,47,118,82,0,17,70,65,83,129,80,149,133,48,57,129,50,13,47,118,82,0,15,70,56,244,197,16,149,133,50,131,86,70,132,82,0,17,71,20,229,15,85,32,71,20,119,50,47,129,34,121,88,0,10,67,5,67,208,115,47,119,48,0,0,24,67,25,35,205,2,81,34,119,63,15,58,6,118,74,0,8,81,119,104,105,99,104,32,23,67,25,35,205,2,81,34,119,63,15,58,6,135,0,8,81,119,104,101,114,101,32,12,67,25,35,205,81,34,120,63,0,103,72,11,67,25,35,205,81,34,119,63,0,72,11,68,56,21,82,84,50,130,34,129,0,10,67,4,229,5,35,50,47,118,0,9,1,47,87,55,35,89,0,27,0,6,65,48,117,55,0,0,14,70,80,129,82,21,49,64,47,13,34,124,86,0,9,198,77,81,134,85,49,64,66,0,19,71,80,20,203,24,244,131,20,47,6,35,87,49,81,4,128,87,0,19,71,36,212,5,16,19,131,20,118,63,48,6,124,70,13,50,87,0,0,10,67,28,20,153,79,35,34,118,0,12,68,72,83,9,12,34,117,55,118,49,0,13,68,60,20,197,76,131,6,133,87,124,86,0,0,22,73,92,129,69,48,32,82,72,245,192,58,6,124,55,10,69,4,35,34,131,0,13,69,5,98,65,73,144,133,82,136,34,118,0,6,65,52,117,63,0,0,15,70,65,33,67,37,49,64,48,34,109,87,132,87,0,0,10,199,56,240,212,85,35,129,48,66,0,11,68,100,17,83,84,57,133,87,129,0,21,72,81,32,74,20,53,15,73,144,47,34,13,73,117,49,47,13,34,118,0,12,68,77,82,84,20,87,58,124,47,0,10,0,15,69,8,84,201,16,80,69,118,87,132,70,0,74,12,11,67,49,99,214,55,14,82,119,82,0,22,73,72,84,197,73,96,84,36,243,128,34,117,86,110,82,6,133,89,13,50,0,23,73,16,80,204,5,32,84,36,243,128,70,117,49,55,13,6,34,133,89,13,50,0,11,5,95,48,1,14,4,13,50,0,135,6,65,56,117,50,0,0,10,67,36,225,15,118,50,70,131,0,0,20,71,88,145,201,48,19,148,20,82,118,73,109,55,6,35,50,47,109,0,9,198,76,83,73,80,243,133,65,19,71,52,20,137,41,80,78,4,63,35,34,109,58,6,121,50,13,0,17,71,21,98,76,16,241,82,76,124,82,114,70,129,110,86,0,16,70,16,240,212,72,147,133,70,119,49,47,34,109,50,0,0,13,68,72,80,133,48,34,109,69,117,55,0,36,18,72,8,192,78,12,208,78,28,80,69,55,13,63,119,50,88,0,18,72,4,195,5,28,144,78,12,80,115,55,124,73,13,50,87,0,0,5,65,60,131,0,0,14,6,19,8,5,39,12,12,89,124,55,0,72,32,10,67,81,112,83,47,58,119,86,0,13,69,61,0,81,84,80,131,48,6,133,49,0,12,1,61,9,124,49,58,114,86,9,0,27,0,16,70,52,17,5,48,147,133,63,35,70,13,55,109,50,0,10,199,36,212,5,72,49,80,80,67,18,70,16,144,83,64,244,129,70,132,6,35,87,48,13,34,13,0,0,12,4,9,20,39,4,2,118,47,13,70,0,0,12,201,16,148,212,72,144,149,80,244,128,66,14,69,16,84,195,73,144,70,109,87,49,34,133,0,9,1,64,10,35,47,10,0,76,6,65,64,48,124,0,0,15,6,20,8,1,20,39,4,2,84,35,47,13,70,0,15,70,80,129,82,21,67,192,4,84,135,6,47,129,0,9,198,65,33,83,20,229,0,36,17,70,65,33,83,20,229,0,48,34,117,86,13,50,47,0,9,15,70,61,3,211,77,83,64,13,48,119,87,13,63,0,0,16,70,20,194,71,36,35,5,117,55,109,73,13,69,114,0,0,0,13,69,76,145,206,85,0,87,132,50,120,48,0,18,70,4,224,76,101,49,83,35,50,13,55,132,86,109,86,0,36,17,70,4,224,76,101,49,83,115,50,35,55,13,87,124,86,0,7,65,68,49,57,129,0,0,20,67,80,130,83,84,6,118,87,58,4,119,50,0,33,81,111,110,101,32,12,67,80,130,83,84,118,87,0,76,34,33,15,70,64,17,197,4,229,0,48,35,73,13,50,47,0,16,70,12,130,77,21,32,64,49,132,63,6,136,34,13,0,16,70,4,64,77,4,229,0,35,70,13,63,13,50,47,0,0,15,70,81,33,65,80,148,197,47,34,124,47,118,86,0,0,11,67,80,129,77,4,84,117,63,0,9,26,68,76,19,148,4,87,6,35,50,47,13,15,49,55,6,125,86,0,81,99,108,97,117,115,32,11,68,61,48,193,72,119,87,49,110,0,10,68,93,34,84,32,34,132,84,0,12,68,64,83,137,76,48,124,50,109,87,0,17,70,20,193,67,81,35,206,109,55,117,49,47,34,119,50,0,0,10,67,80,129,78,84,117,50,0,32,13,69,28,144,130,60,224,79,118,69,13,50,0,5,65,72,122,0,0,17,70,80,243,66,60,192,64,47,119,63,69,6,131,55,13,0,14,70,80,80,82,28,20,192,47,137,79,35,87,0,16,70,49,83,129,80,144,192,55,129,50,13,47,118,49,0,0,19,67,80,129,64,84,111,15,58,132,55,0,81,119,104,105,108,101,32,10,67,80,129,64,84,111,0,9,34,17,70,25,84,197,48,17,197,81,57,129,86,13,55,121,88,0,0,0,15,69,9,32,90,36,192,69,34,35,86,6,118,55,0,13,69,77,2,78,4,192,87,48,132,50,114,0,12,69,76,130,86,21,32,89,118,82,110,0,13,69,65,149,8,60,224,48,132,85,13,50,0,14,69,8,243,130,60,224,69,119,50,69,119,50,0,0,9,198,85,4,212,5,37,0,65,13,68,77,0,83,52,87,48,35,87,13,63,0,18,71,77,0,71,32,85,20,36,87,48,35,79,6,117,47,118,0,9,198,76,20,132,36,225,64,66,9,198,72,245,84,36,225,64,66,15,70,72,80,193,48,193,68,34,109,49,125,55,70,0,9,198,53,83,132,4,225,64,66,16,70,36,225,9,12,84,192,118,50,70,109,87,124,86,0,0,9,67,48,240,200,55,119,99,0,9,67,28,145,192,79,118,79,0,19,71,12,243,80,21,66,78,28,49,13,63,48,6,124,47,109,66,0,9,67,12,16,200,49,35,89,0,0,9,67,80,129,69,4,84,124,0,10,67,76,17,193,87,121,79,13,0,11,200,4,229,9,12,132,137,77,64,65,0,14,69,8,82,82,85,64,69,133,34,6,129,47,0,8,197,85,4,143,61,64,66,14,69,81,37,69,77,64,47,34,129,13,87,47,0,6,65,80,47,124,0,0,15,70,25,32,71,36,193,64,81,34,35,73,114,0,103,14,70,52,21,20,32,85,192,63,35,85,57,129,0,16,70,48,20,193,28,225,64,55,13,86,35,50,57,13,0,5,194,4,48,17,0,9,67,76,146,200,87,124,49,0,13,70,12,21,1,73,34,0,49,13,47,122,0,6,195,12,147,192,17,0,16,70,69,81,83,80,147,206,49,58,117,87,74,13,50,0,12,68,44,80,129,8,49,13,69,35,69,0,11,68,20,208,133,72,117,63,69,110,0,0,14,69,8,245,212,36,80,69,4,131,47,6,132,0,6,65,84,57,129,0,0,9,66,85,0,4,120,48,0,12,10,67,77,147,131,87,118,66,49,0,16,70,16,83,9,52,149,0,70,109,55,118,63,118,47,0,16,70,12,195,211,20,198,64,49,55,131,87,55,118,0,32,0,10,67,84,226,64,57,129,50,118,0,0,15,7,20,8,5,25,39,22,5,84,133,82,0,72,35,11,67,84,229,25,120,50,47,6,132,0,0,12,69,72,81,199,36,80,34,117,73,118,0,14,69,76,195,214,4,176,87,55,131,82,35,49,0,14,69,69,81,66,20,48,49,58,109,69,117,49,0,13,69,80,245,67,32,80,47,129,89,133,0,9,14,69,76,84,193,52,80,87,117,87,115,63,118,0,9,67,4,96,82,115,81,122,0,6,65,88,82,124,0,0,21,66,5,48,4,35,86,118,47,4,118,86,0,76,82,105,116,32,105,115,32,16,66,5,48,4,35,86,4,118,86,0,8,81,105,115,32,9,66,5,48,2,35,86,0,9,12,67,36,229,15,4,118,50,106,113,0,103,11,67,36,229,15,4,118,50,47,113,0,9,198,65,35,202,20,53,0,36,17,70,65,35,202,20,53,0,48,34,119,73,117,49,47,0,10,0,23,73,36,228,212,4,195,1,80,147,206,118,50,87,47,13,55,6,133,89,13,50,0,0,11,4,9,39,12,12,132,55,0,72,32,12,68,88,147,153,48,82,132,50,109,55,0,20,72,12,243,77,84,226,81,84,80,49,13,63,57,129,50,109,49,133,0,0,14,69,76,145,206,4,192,87,118,79,50,13,55,0,23,73,65,84,144,61,37,5,16,198,64,48,110,48,6,128,47,109,70,55,118,0,32,13,69,64,85,9,80,80,48,13,47,124,47,0,12,1,92,69,35,49,87,55,35,89,0,27,11,65,92,70,6,120,69,114,57,129,0,0,14,70,32,145,5,61,85,0,105,132,70,130,47,0,0,20,67,80,243,192,47,6,129,15,63,4,120,74,0,81,109,117,99,104,32,21,67,80,243,192,47,6,129,15,63,4,117,50,118,0,81,109,97,110,121,32,19,67,80,243,192,47,6,129,15,81,4,57,129,0,81,102,101,119,32,15,70,5,1,78,56,147,133,35,48,13,50,132,50,0,9,67,4,224,76,133,50,114,0,15,4,95,55,48,15,87,6,117,82,13,50,47,136,0,0,12,4,23,5,39,4,58,124,70,0,72,35,19,72,92,147,4,21,35,133,77,48,58,118,55,70,110,50,117,87,0,17,70,16,144,77,21,65,82,70,132,6,35,63,109,47,110,0,0,13,69,72,80,76,49,144,34,136,55,118,0,32,7,65,96,117,49,87,0,0,16,70,52,20,137,49,147,128,63,35,34,13,55,109,50,0,10,67,4,225,87,115,50,129,0,103,10,67,4,225,87,115,50,57,129,0,0,16,70,76,130,73,80,18,197,89,124,47,6,121,49,146,0,16,70,65,32,67,80,148,197,48,34,35,49,47,109,87,0,8,67,4,65,0,35,70,0,0,11,68,92,19,12,100,58,119,55,118,0,21,72,81,32,78,77,3,210,81,48,47,34,35,50,87,48,128,47,87,0,34,10,67,60,33,89,131,69,6,133,0,9,67,16,244,197,70,131,87,0,0,12,67,16,245,206,4,70,130,50,0,9,12,6,65,100,58,132,0,0,9,198,56,21,1,76,128,64,66,10,67,4,211,211,133,63,119,87,0,16,70,64,84,147,60,224,64,48,123,87,6,131,50,13,0,16,70,8,83,9,76,128,64,69,13,55,6,124,89,13,0,0,18,70,77,83,1,92,84,201,87,129,55,115,58,6,133,87,118,0,15,70,56,80,203,48,16,197,50,117,49,55,13,87,0,11,67,48,244,192,4,55,119,87,0,9,0,0,12,69,72,16,200,20,192,34,133,74,114,0,13,69,76,19,13,60,224,87,35,63,13,50,0,7,65,104,86,124,0,103,7,65,104,86,117,70,0,0,18,66,5,64,115,47,10,58,6,118,55,0,81,119,105,108,108,32,18,66,5,64,115,47,10,58,119,50,87,0,81,111,110,99,101,32,13,66,5,64,2,35,47,13,0,34,81,97,32,10,66,5,64,35,47,0,34,9,72,9,198,64,245,15,52,16,192,66,16,70,64,243,9,80,144,192,48,119,55,13,47,118,49,0,0,17,67,92,20,192,58,2,119,86,84,111,0,81,116,104,101,32,14,67,92,20,192,58,2,119,86,115,0,81,97,32,13,67,92,20,192,2,58,120,86,0,103,35,9,12,67,92,20,192,2,58,119,86,0,35,9,18,71,84,225,5,72,210,78,20,120,50,70,110,63,6,132,50,0,9,67,80,133,64,85,141,0,105,8,67,80,133,64,85,123,0,9,67,21,84,128,57,138,0,9,0,12,201,40,242,1,56,225,83,9,84,135,66,0,13,69,44,145,82,4,224,49,136,34,13,50,0,14,69,80,19,5,57,64,47,35,55,13,50,47,0,12,69,76,244,130,21,64,87,127,69,133,0,0,9,198,61,85,12,36,225,64,65,9,198,9,34,71,4,65,64,66,14,70,5,3,211,80,193,64,115,48,119,87,114,0,16,70,4,225,77,60,225,64,115,50,117,50,13,63,118,0,10,67,4,211,203,115,63,119,49,0,0,8,67,16,245,192,70,130,0,0,12,68,64,147,15,80,48,132,55,13,47,0,19,72,4,69,133,73,66,83,21,32,35,70,82,110,47,132,86,110,0,0,15,69,65,84,137,77,64,48,57,129,44,118,87,47,0,14,69,4,65,9,13,64,35,70,118,49,47,0,10,0,14,70,52,148,211,36,193,64,63,118,87,114,0,103,14,70,56,85,137,48,193,64,50,117,82,118,55,0,15,70,21,66,69,56,225,64,117,47,118,6,117,50,0,13,70,12,129,65,16,193,64,74,124,70,114,0,0,11,67,32,245,192,4,105,130,0,12,10,12,67,4,230,64,4,117,50,118,0,34,9,9,67,80,134,64,4,84,132,0,9,198,12,19,3,85,69,1,66,16,70,16,17,197,56,128,77,70,35,79,13,50,13,63,0,0,10,67,80,129,89,84,133,0,72,32,0,11,4,9,39,22,5,132,82,0,72,35,13,69,80,243,129,28,80,47,120,50,118,73,0,13,69,76,242,82,20,80,87,58,121,34,133,0,14,69,64,20,212,73,144,48,133,87,47,34,118,0,0,16,70,81,34,80,60,194,64,47,34,118,48,13,55,118,0,16,70,16,19,65,28,81,0,70,6,35,63,109,73,70,0,15,70,5,85,15,65,54,64,125,47,119,48,87,118,0,0,17,67,80,128,84,2,84,35,47,84,111,0,81,116,104,101,32,19,67,80,128,84,84,6,35,47,58,4,119,50,0,81,111,110,101,32,17,67,80,128,84,4,84,115,47,118,47,0,33,81,105,116,32,17,67,80,128,84,4,84,35,47,13,50,0,34,81,97,110,32,15,67,80,128,84,4,84,35,47,13,0,34,81,97,32,13,67,80,128,84,84,35,47,0,72,34,12,33,17,71,72,84,197,73,99,201,72,34,117,86,110,82,58,122,0,18,71,20,229,133,48,244,5,76,117,50,82,13,55,131,48,87,0,0,14,7,20,8,5,25,39,18,5,2,84,133,110,0,11,68,77,81,68,20,87,58,133,70,0,16,70,76,243,21,80,147,206,87,13,55,129,89,13,50,0,18,72,48,149,5,72,21,21,72,80,55,118,47,34,109,74,110,0,11,68,8,144,140,20,69,132,69,114,0,0,14,69,56,144,207,48,16,50,118,49,13,55,13,0,17,70,12,243,131,21,37,15,49,119,50,74,6,135,47,131,0,15,70,12,21,8,60,194,67,49,35,85,55,118,49,0,0,18,70,4,196,133,4,70,64,125,55,34,117,70,118,0,74,32,12,16,70,12,244,143,56,85,0,49,119,34,13,50,117,47,0,14,70,8,245,81,84,85,0,69,129,49,6,133,0,7,66,5,80,4,131,0,0,17,71,80,147,69,80,16,140,20,47,132,63,47,133,69,114,0,20,71,76,83,73,12,243,15,56,87,117,63,118,49,6,131,55,13,50,0,0,12,68,72,16,137,16,34,133,69,109,70,0,11,68,64,243,12,76,48,131,55,86,0,20,72,64,82,143,72,21,9,88,80,48,13,73,119,34,13,47,118,82,0,12,68,52,241,5,52,63,131,70,117,63,0,10,67,44,149,201,49,124,58,124,0,0,0,10,67,4,229,83,133,50,120,87,0,0,10,1,126,47,118,55,70,13,0,27,0,11,68,28,144,130,76,79,118,69,86,0,11,68,80,145,1,48,47,132,70,114,0,0,17,67,80,128,78,4,84,35,50,13,50,0,34,81,97,110,32,15,67,80,128,78,4,84,35,50,13,0,34,81,97,32,11,67,80,128,78,84,115,50,0,72,9,14,69,81,37,69,49,144,47,34,129,55,109,0,32,13,69,52,148,211,21,48,63,118,87,109,86,0,0,16,70,12,240,207,57,85,0,49,131,49,13,50,120,47,0,0,9,67,21,96,64,124,82,13,0,0,0,17,70,4,229,9,48,193,83,35,50,47,6,118,55,124,86,0,13,69,92,144,203,20,64,58,118,49,109,70,0,15,69,84,228,133,4,64,120,50,34,6,117,70,0,9,0,15,70,72,146,1,56,224,64,34,118,6,121,50,13,0,9,67,81,115,211,47,129,86,0,0,17,71,92,129,82,20,85,133,72,58,2,135,44,117,82,110,0,9,67,64,19,12,48,35,55,0,0,7,196,80,16,143,60,66,11,68,21,113,69,44,124,58,124,49,0,0,11,69,80,131,213,28,128,4,84,131,0,12,69,52,148,211,20,64,63,118,87,47,0,0,9,198,64,19,132,61,32,64,66,16,70,85,68,133,12,133,0,57,129,47,34,117,97,47,0,0,18,71,8,20,143,52,85,5,72,69,13,34,119,63,109,47,110,0,0,13,70,16,245,71,4,195,0,70,129,79,114,0,15,70,92,19,19,4,195,0,58,125,55,87,125,55,0,10,68,4,32,133,100,35,69,118,0,0,14,69,28,144,147,60,224,79,118,69,87,13,50,0,22,73,77,84,5,72,99,21,61,84,192,87,129,48,6,123,81,55,129,13,87,0,12,69,28,86,83,21,32,79,124,86,110,0,13,69,24,21,8,60,208,81,35,84,13,63,0,21,73,12,193,65,56,194,78,21,52,192,49,55,117,50,55,118,50,13,87,0,0,14,70,76,145,206,4,113,64,87,132,50,109,73,0,16,70,64,244,148,20,225,0,48,128,47,6,117,50,70,0,0,17,71,12,19,66,72,145,7,20,49,133,63,69,34,118,73,0,0,12,68,76,243,137,4,87,119,50,57,13,0,11,200,80,132,143,84,114,15,85,64,66,0,21,73,56,243,133,80,129,76,21,52,192,50,120,50,84,13,55,6,117,87,0,12,69,48,243,211,21,32,55,129,86,110,0,0,10,66,8,80,69,124,0,35,9,76,15,70,20,228,143,85,65,64,119,50,34,6,129,47,0,0,11,67,48,244,212,55,126,87,47,0,103,17,70,76,84,133,56,17,5,87,117,34,109,50,6,133,70,0,16,70,24,21,143,72,149,5,81,133,82,14,34,109,47,0,10,199,12,243,147,81,37,67,80,36,11,199,12,243,147,81,37,67,80,65,10,0,14,68,84,225,5,72,120,50,70,110,0,72,12,9,16,70,80,240,143,28,112,78,47,13,69,119,79,13,50,0,12,68,65,34,86,100,48,34,118,82,118,0,11,68,44,81,137,72,49,124,81,110,0,11,67,32,18,1,105,121,105,6,121,0,0,15,69,8,19,129,56,16,69,115,50,35,50,13,0,103,17,70,52,147,132,4,224,79,63,118,50,70,13,50,6,130,0,14,69,20,198,83,20,80,133,55,6,124,86,133,0,14,69,76,145,82,72,16,87,118,6,135,34,13,0,13,69,20,229,18,20,80,119,50,47,34,133,0,8,197,20,212,9,72,80,65,13,69,12,18,143,48,80,49,115,73,131,55,0,14,69,8,19,129,56,16,69,13,50,121,50,13,0,23,73,5,4,18,61,130,77,5,65,64,115,48,34,119,49,87,118,63,133,47,0,36,23,73,5,4,18,61,130,77,5,65,64,115,48,34,119,49,87,118,63,13,47,0,9,12,69,4,50,9,56,112,133,49,109,66,0,0,15,70,92,245,78,16,81,0,58,129,50,70,109,70,0,0,10,67,77,34,64,87,34,4,124,0,16,70,48,147,135,21,34,69,55,119,50,88,13,34,118,0,10,199,25,37,83,81,32,84,20,66,0,12,68,76,81,1,56,87,109,70,35,50,0,10,68,5,81,197,72,125,79,110,0,0,12,69,65,32,71,84,80,48,34,121,79,0,13,69,61,32,78,28,80,119,34,109,50,73,0,24,73,20,193,67,81,34,67,37,70,64,109,55,117,49,47,34,6,118,87,109,47,118,0,22,73,4,227,137,88,84,147,5,38,64,35,50,118,82,6,123,87,13,34,118,0,14,69,4,69,193,72,80,6,35,70,58,4,135,0,0,0,18,71,64,20,211,21,36,194,100,48,35,87,110,86,69,6,132,0,17,71,24,244,148,84,224,84,20,81,127,74,13,50,13,47,0,18,71,4,67,73,72,16,140,20,35,70,63,13,34,13,69,114,0,0,12,68,81,32,67,100,47,34,133,87,37,0,15,70,76,48,76,64,83,0,87,49,35,55,48,114,0,0,13,69,16,148,206,21,144,70,118,86,50,118,0,10,67,37,96,78,132,82,13,50,0,13,69,32,83,9,84,208,105,124,55,136,63,0,17,70,17,32,77,5,66,67,70,34,13,63,35,47,118,49,0,14,69,4,194,193,48,144,35,55,49,13,55,132,0,0,10,67,80,133,83,84,120,87,0,8,13,202,92,244,132,65,35,195,21,52,207,72,66,15,70,32,244,212,21,52,192,105,131,87,47,117,87,0,0,12,67,9,85,0,4,69,120,47,0,8,9,14,67,92,20,212,2,58,119,87,47,0,9,35,9,10,67,92,20,212,58,133,87,47,0,0,11,68,28,198,78,56,79,55,118,50,0,21,72,72,130,78,60,49,82,61,48,34,132,50,6,119,87,13,34,13,87,0,0,10,67,21,96,78,117,82,13,50,0,13,69,32,80,146,21,112,105,124,69,34,129,0,15,69,84,225,5,57,144,120,50,70,118,50,6,132,0,13,69,81,35,208,33,144,47,34,131,81,118,0,8,197,77,84,150,21,144,36,14,69,77,84,150,21,144,87,142,82,133,0,105,10,13,69,77,84,150,21,144,87,123,82,133,0,10,0,15,70,52,20,135,5,33,84,63,122,79,34,13,47,0,0,12,67,32,21,8,2,105,35,85,0,35,9,19,71,65,148,129,52,145,1,48,48,109,34,6,35,63,118,70,114,0,18,71,24,192,71,20,195,21,52,81,55,115,73,117,55,13,63,0,19,71,4,225,67,16,245,1,48,35,50,118,49,70,6,131,47,114,0,0,13,68,64,20,212,4,48,121,87,47,13,0,103,17,70,92,129,78,21,97,82,58,117,50,117,82,110,0,74,8,11,67,64,20,1,48,115,48,6,121,0,12,68,52,19,9,12,63,35,55,118,49,0,0,12,69,32,19,135,20,64,105,35,66,70,0,0,15,70,81,114,76,36,114,20,47,58,132,55,132,47,0,0,17,70,65,33,84,20,228,197,48,34,124,47,117,50,87,0,103,10,67,21,98,84,117,82,109,47,0,10,199,4,229,9,25,33,90,20,65,0,12,68,88,83,149,76,82,124,50,13,87,0,10,68,80,243,142,20,47,120,50,0,16,70,76,245,86,20,226,82,87,129,82,13,50,6,137,0,13,68,56,240,140,100,50,131,69,55,118,0,32,12,68,52,83,15,56,63,117,55,13,50,0,11,68,12,81,1,72,87,124,70,110,0,0,0,14,70,32,20,142,21,52,192,105,122,50,109,87,0,11,66,17,32,70,119,49,47,110,0,24,0,18,71,64,84,137,52,85,5,72,48,13,34,118,63,109,47,110,0,17,71,52,147,5,77,67,206,20,63,132,55,87,47,131,50,0,17,70,52,18,143,72,149,25,63,13,73,119,34,109,47,118,0,19,70,21,48,193,64,148,205,117,87,49,6,133,48,109,86,13,63,0,0,11,68,37,50,65,32,132,86,6,139,0,11,68,80,241,1,100,47,13,70,133,0,11,68,72,18,129,32,34,121,73,121,0,11,68,21,32,83,20,109,34,133,86,0,0,20,73,52,148,195,32,145,86,61,84,192,63,118,87,74,109,82,13,87,0,0,16,6,8,1,4,14,39,20,105,35,70,13,50,47,0,35,15,70,84,224,87,5,33,64,120,50,13,58,6,135,0,10,67,72,84,15,34,124,48,131,0,15,70,25,34,71,5,65,64,81,34,118,79,13,47,0,14,70,12,244,144,61,32,76,49,127,48,34,114,0,0,25,67,53,84,212,63,4,120,87,47,35,82,47,112,0,35,82,104,97,118,101,32,116,111,32,21,67,53,84,212,63,120,87,47,105,35,82,0,35,14,81,104,97,118,101,32,20,67,53,84,212,63,120,87,47,115,82,0,35,65,81,104,97,118,101,32,6,195,53,84,212,32,18,71,65,33,67,37,2,67,20,48,34,117,87,109,48,118,87,0,18,70,29,32,68,84,21,5,79,34,35,70,57,129,133,47,0,36,17,70,29,32,68,84,21,5,79,34,35,70,57,129,13,47,0,16,70,16,83,9,12,21,5,70,117,55,109,49,13,47,0,0,11,67,8,85,1,69,133,47,13,0,103,12,68,76,147,131,20,87,118,50,87,0,8,10,67,64,21,5,48,35,47,133,0,9,67,24,85,5,81,133,47,0,10,67,8,85,1,69,124,47,13,0,0,14,69,64,84,141,37,64,48,110,63,118,47,0,36,14,69,64,84,141,37,64,48,123,63,118,47,0,10,0,15,6,4,9,4,14,39,20,70,118,70,50,47,0,32,15,70,61,85,12,37,97,64,130,47,55,6,118,82,0,17,70,21,129,67,85,65,64,117,49,87,109,49,57,129,47,0,14,70,12,83,147,85,33,64,87,117,50,89,110,0,14,70,12,21,137,5,33,64,49,35,82,118,122,0,5,194,4,144,17,0,17,70,17,83,135,5,33,69,70,120,66,79,115,34,6,124,0,0,33,8,3,15,21,12,4,14,39,20,6,49,113,70,13,50,47,35,82,47,112,0,32,12,82,104,97,118,101,32,116,111,32,27,8,3,15,21,12,4,14,39,20,49,113,70,13,50,47,13,82,0,35,77,81,104,97,118,101,32,20,8,3,15,21,12,4,14,39,20,4,49,113,70,13,50,47,0,32,12,18,8,19,8,1,12,12,14,39,20,4,89,121,50,47,0,32,12,12,68,32,17,5,76,105,133,70,124,86,0,10,67,80,145,25,47,132,70,118,0,10,67,48,147,25,55,118,55,118,0,12,68,5,33,78,4,115,34,124,50,13,0,0,13,69,76,51,5,72,16,87,49,55,136,34,0,12,201,36,228,212,36,224,212,37,97,64,66,13,69,16,83,135,84,80,70,117,50,79,118,0,22,73,4,197,5,72,224,84,37,97,64,125,55,47,6,123,50,13,47,118,82,0,0,10,67,72,81,15,34,124,70,129,0,0,13,70,72,19,5,36,114,0,34,121,55,118,0,18,71,24,21,143,72,149,5,76,81,133,82,14,34,109,47,87,0,0,12,68,4,225,5,76,35,50,70,124,86,0,15,70,72,85,18,36,19,0,34,124,47,34,139,55,0,10,67,72,83,25,34,109,55,132,0,11,68,72,17,1,72,34,133,70,122,0,10,68,53,148,146,32,63,142,0,105,9,68,53,148,146,32,63,123,0,12,68,36,225,133,72,118,50,81,6,123,0,10,67,8,83,25,69,109,55,132,0,0,0,16,70,60,33,76,37,50,192,119,69,13,55,109,87,49,0,13,70,28,245,82,52,85,0,79,138,63,133,0,15,70,24,148,200,56,85,0,81,118,89,50,117,47,0,0,17,71,77,84,146,60,112,84,20,87,123,13,79,133,47,0,103,17,71,77,84,146,60,112,84,20,87,120,34,13,79,133,47,0,17,71,4,195,5,52,19,132,20,35,55,13,63,35,50,70,0,0,21,72,49,86,5,52,35,213,72,112,55,120,49,87,13,63,69,142,79,0,105,20,72,49,86,5,52,35,213,72,112,55,120,49,87,13,63,69,123,79,0,10,68,32,243,13,20,105,131,63,0,0,0,17,70,4,211,206,29,53,0,115,63,120,66,87,47,0,74,12,15,70,77,84,144,49,84,192,87,123,48,55,13,87,0,0,0,20,72,72,80,201,65,35,195,4,192,34,109,87,118,48,34,13,49,114,0,21,72,33,148,15,80,129,83,21,48,105,132,48,6,119,85,13,87,124,86,0,19,72,24,21,143,85,34,84,21,48,81,133,82,14,34,109,47,87,0,11,68,8,145,5,80,69,124,70,133,0,0,14,69,16,81,133,57,48,70,109,81,117,50,87,0,0,8,67,101,97,83,124,82,0,16,70,24,243,212,32,243,4,81,113,47,105,131,55,70,0,12,4,95,20,21,18,47,6,123,50,70,0,0,11,67,72,80,68,34,117,70,0,38,9,9,67,72,80,68,34,124,70,0,0,11,68,88,147,12,36,82,118,55,132,0,12,68,85,34,78,20,57,138,34,118,50,0,11,68,12,17,18,20,49,121,70,110,0,11,68,4,65,15,56,35,70,119,50,0,0,14,69,52,17,18,36,64,63,13,70,34,118,70,0,13,69,64,22,80,4,192,48,133,48,35,55,0,0,17,70,33,148,15,96,144,64,105,132,48,6,119,49,87,136,0,0,0,12,68,45,80,76,4,49,58,121,55,115,0,11,68,4,65,9,76,35,70,118,87,0,11,68,17,34,69,72,70,34,132,110,0,20,72,5,35,83,48,83,135,80,128,4,122,63,86,55,6,117,66,85,0,0,10,67,13,37,90,49,34,129,86,0,8,197,72,80,207,72,64,36,15,69,72,80,207,72,64,34,117,49,110,70,0,103,10,14,69,72,80,207,72,64,34,117,49,127,70,0,10,14,69,12,19,148,60,224,49,35,50,47,119,50,0,0,17,70,48,144,133,72,144,64,55,132,69,6,136,34,124,13,0,10,67,48,147,79,55,118,63,131,0,15,70,24,244,133,80,83,12,81,128,47,6,117,55,0,16,70,16,147,5,52,208,64,70,132,55,6,117,63,13,0,0,10,67,100,245,64,57,129,0,72,32,9,67,4,113,68,133,73,70,0,0,12,68,16,243,3,20,70,119,55,74,133,0,0,14,69,17,83,131,4,224,70,120,50,49,13,50,0,14,69,48,243,132,60,224,55,120,50,70,13,50,0,0,14,70,65,85,20,36,225,192,48,113,47,109,66,0,15,70,80,129,82,20,241,128,4,84,135,6,119,82,0,9,198,77,84,16,61,49,64,66,17,70,65,33,84,72,144,76,48,34,124,47,34,6,132,114,0,16,70,21,2,84,60,209,64,109,48,118,47,13,63,118,0,16,70,12,243,131,37,49,64,49,119,50,87,6,132,87,0,0,10,199,16,148,195,61,84,147,20,65,0,8,67,80,131,213,84,130,0,10,67,48,144,77,55,124,13,63,0,10,68,72,245,83,20,34,130,86,0,0,8,197,61,85,6,37,64,65,13,69,60,209,76,21,64,119,63,55,13,47,0,0,18,66,16,80,70,133,73,6,138,34,118,0,81,106,117,114,101,32,14,70,52,21,82,36,49,64,63,119,34,118,87,0,8,66,16,80,70,13,0,9,0,9,67,72,82,68,34,124,70,0,9,67,76,178,64,87,49,124,0,17,71,56,84,195,36,83,131,20,50,117,87,118,13,50,87,0,0,13,68,17,98,78,4,70,13,82,124,50,13,0,12,68,48,147,1,12,55,132,55,13,49,0,12,68,37,32,84,20,132,34,6,133,47,0,0,13,67,8,81,78,4,69,118,50,0,103,35,9,12,67,8,81,78,4,69,124,50,0,35,9,13,69,8,20,129,12,176,69,115,34,121,49,0,12,69,61,4,15,76,80,13,48,131,86,0,8,197,33,83,65,56,80,66,0,14,70,48,16,143,72,81,0,55,133,69,13,70,0,9,198,12,243,150,36,53,0,36,10,198,12,243,150,36,53,0,65,10,0,15,70,12,20,142,20,114,69,49,122,50,117,79,118,0,10,199,92,130,67,32,85,133,72,66,0,10,67,41,81,25,73,129,70,118,0,11,68,76,21,84,20,87,125,47,133,0,10,68,60,97,133,72,119,81,110,0,21,72,16,145,76,20,53,18,36,48,70,139,55,6,117,49,47,34,118,49,0,11,4,95,4,16,20,48,134,50,47,0,0,15,69,8,80,207,52,80,69,118,49,120,63,0,74,12,13,69,61,69,1,92,16,119,47,115,58,13,0,15,69,21,84,133,44,16,57,129,6,34,124,49,115,0,13,69,8,85,1,44,80,69,109,47,133,49,0,10,67,4,227,206,115,50,119,50,0,9,67,4,112,82,133,79,122,0,0,8,66,9,144,69,132,0,76,0,8,67,80,131,192,84,131,0,15,70,64,131,197,56,150,0,81,124,50,118,49,87,0,6,195,84,99,192,17,0,11,68,4,193,137,20,35,55,81,37,0,10,67,48,147,65,55,124,63,115,0,19,72,12,132,143,52,244,207,52,80,49,34,131,63,13,87,131,63,0,0,12,67,100,245,82,57,138,0,106,72,34,9,11,67,100,245,82,57,127,0,72,34,9,14,69,84,227,5,77,48,120,50,55,6,117,87,0,9,67,72,82,78,34,133,50,0,14,69,32,147,132,85,48,105,118,50,70,129,86,0,10,67,4,114,78,115,79,118,50,0,0,15,70,80,129,82,20,243,128,4,84,135,6,119,50,0,9,198,65,35,212,21,53,0,36,17,70,65,35,212,21,53,0,48,34,131,47,117,87,47,0,10,9,198,12,243,148,21,53,0,36,10,198,12,243,148,21,53,0,65,10,0,11,67,32,147,64,4,105,118,63,0,9,6,195,21,53,0,17,6,195,4,115,64,17,0,18,70,92,128,84,21,97,82,58,120,47,117,82,110,0,103,66,8,17,70,92,128,84,21,97,82,58,119,47,117,82,110,0,66,8,12,68,32,19,143,36,105,35,50,6,134,0,12,68,12,17,5,80,49,115,70,117,47,0,0,0,10,67,100,246,79,57,131,57,131,0,16,70,80,19,12,100,131,192,47,35,55,118,6,105,131,0,0,0,16,70,92,129,82,21,97,82,58,2,135,44,117,82,110,0,17,70,76,16,143,80,85,82,87,35,69,13,47,6,142,0,105,16,70,76,16,143,80,85,82,87,35,69,13,47,6,123,0,11,68,16,243,143,72,70,131,50,110,0,12,68,4,66,5,72,35,70,105,6,137,0,9,3,95,35,57,47,35,69,0,13,4,95,20,12,4,47,6,118,55,70,13,0,0,14,69,37,48,66,20,192,118,86,13,69,117,55,0,14,69,92,21,19,60,224,58,119,47,87,13,50,0,12,69,36,227,129,72,64,118,50,110,70,0,9,67,4,195,0,125,55,0,42,0,14,70,72,86,78,60,193,0,34,117,50,114,70,0,17,70,52,242,1,52,208,68,63,131,105,6,35,63,109,70,0,0,18,71,88,19,5,57,66,78,20,82,35,55,13,50,47,132,50,0,10,199,76,83,73,9,33,86,20,65,6,195,20,69,0,17,0,11,68,12,242,5,56,49,131,13,50,0,12,68,4,225,18,20,119,50,70,34,133,0,7,196,12,17,9,104,66,11,67,41,83,25,73,129,55,6,132,0,11,68,12,243,15,72,49,120,55,110,0,0,13,69,85,49,70,84,192,57,129,87,81,114,0,15,69,52,148,204,20,64,63,118,87,55,6,117,70,0,0,10,67,16,18,83,70,133,118,87,0,0,18,71,20,194,90,4,33,84,32,109,55,118,86,13,69,13,85,0,16,70,65,35,214,20,224,197,48,34,119,82,6,144,87,0,0,11,68,40,243,129,32,73,131,50,13,0,11,68,16,147,129,32,70,132,50,13,0,10,67,76,181,65,87,49,129,13,0,11,68,64,244,211,20,48,119,87,118,0,20,72,32,19,12,20,197,73,4,128,105,35,55,109,6,55,129,57,13,0,10,67,4,117,69,133,79,57,129,0,0,15,69,72,240,149,77,64,34,131,69,6,120,87,47,0,14,69,16,148,212,72,240,70,118,87,47,34,131,0,0,15,70,32,20,212,36,225,192,105,133,87,47,109,66,0,9,198,77,80,140,36,209,64,66,16,70,65,35,212,20,113,64,48,34,119,47,13,88,133,0,9,198,61,85,18,4,113,64,65,14,70,8,20,146,4,113,64,69,35,34,121,88,0,0,10,199,52,19,135,4,225,83,20,65,0,13,68,32,83,9,96,105,124,55,118,49,87,0,0,14,69,36,225,9,13,64,118,50,70,6,132,47,0,13,69,33,84,211,5,32,105,120,86,6,122,0,15,69,21,48,207,73,64,117,87,49,6,127,47,0,36,0,15,70,92,21,6,61,33,0,58,119,47,81,13,70,0,15,70,92,80,144,4,113,64,58,117,69,48,133,73,0,13,70,76,51,213,72,113,64,87,49,123,73,0,16,70,16,85,143,80,81,64,70,117,82,131,47,6,124,0,0,16,70,65,35,212,20,113,69,48,34,119,47,13,88,133,0,6,195,16,150,64,17,0,15,70,32,21,193,36,144,78,105,13,58,6,139,50,0,12,68,80,147,4,20,47,118,55,70,13,0,22,72,4,229,5,12,81,5,57,64,35,50,47,118,87,6,124,70,13,50,47,0,0,10,67,56,80,82,4,50,137,0,12,0,15,70,76,240,201,21,70,64,87,13,87,139,47,118,0,17,70,60,33,83,37,70,64,131,69,6,124,87,13,47,118,0,0,19,71,52,243,69,57,64,82,100,63,131,63,13,50,47,13,34,118,0,10,199,21,66,81,84,85,20,20,65,0,7,196,77,66,76,48,32,10,68,48,245,73,76,55,129,118,0,11,68,9,34,69,56,69,34,139,50,0,7,196,52,147,1,56,66,17,70,77,1,67,36,209,78,87,48,117,87,109,63,13,50,0,19,72,76,147,8,61,81,84,80,80,87,109,55,113,58,6,117,47,0,9,67,32,150,65,105,132,115,0,12,68,12,243,15,56,49,131,55,13,50,0,0,14,69,8,83,9,104,80,69,117,55,6,124,86,0,13,69,85,49,65,28,80,57,129,87,109,73,0,14,69,52,244,143,76,80,63,13,34,6,131,87,0,0,9,198,16,18,15,52,86,64,66,5,194,21,80,17,0,18,71,52,84,131,20,224,82,100,63,123,87,13,50,13,34,118,0,19,71,4,208,82,100,195,9,76,35,63,13,34,6,118,55,118,87,0,0,11,68,32,83,12,60,105,13,55,131,0,15,70,24,19,73,48,144,82,81,13,63,118,55,137,0,12,68,16,80,149,80,70,133,69,57,129,0,19,72,5,4,18,20,229,9,12,80,115,48,34,117,50,47,118,87,0,0,15,69,8,244,212,60,224,69,126,87,47,13,50,0,103,9,67,48,145,82,55,132,110,0,0,9,198,36,229,5,72,147,64,65,0,17,71,25,34,67,5,52,197,20,81,34,118,49,115,87,133,0,0,13,68,76,18,5,48,87,121,105,6,117,55,0,12,68,85,50,78,28,57,129,86,109,66,0,16,70,77,4,129,100,48,78,87,48,34,133,49,35,50,0,12,68,76,19,1,16,87,35,55,13,70,0,10,67,60,176,89,131,49,6,133,0,0,8,67,64,145,82,48,137,0,0,12,67,4,225,0,35,50,70,0,72,8,9,9,67,72,81,83,34,124,87,0,18,70,52,243,148,72,80,76,63,119,50,47,34,118,6,125,55,0,0,9,66,4,224,115,50,0,34,9,10,67,80,147,153,47,132,50,118,0,16,71,21,52,197,57,66,65,48,109,87,117,50,89,114,0,0,17,70,20,118,80,80,144,78,118,73,6,118,48,89,13,50,0,16,70,77,84,5,72,208,78,87,129,48,110,63,35,50,0,12,201,76,147,85,49,64,78,20,245,83,67,0,10,67,72,83,143,34,124,50,131,0,11,68,76,243,129,72,87,131,50,122,0,0,16,69,8,86,79,56,64,69,118,57,119,50,70,0,74,12,0,0,19,71,65,35,193,13,66,86,20,48,34,131,6,35,49,47,118,82,0,0,12,68,4,115,133,76,35,79,50,13,87,0,7,196,12,243,135,60,65,12,68,76,147,133,92,87,118,50,57,129,0,19,72,76,130,76,48,83,1,28,128,89,4,109,55,6,133,55,13,0,0,9,197,16,85,1,36,192,103,66,15,70,12,20,200,52,84,133,49,35,89,63,6,137,0,0,15,70,65,33,77,36,84,128,48,34,117,63,118,110,0,9,198,60,53,15,8,84,128,66,16,70,52,80,78,16,84,128,63,118,6,35,50,70,110,0,14,70,4,227,212,32,84,128,115,50,120,84,110,0,0,10,67,64,147,148,48,132,50,47,0,8,67,21,113,64,57,129,0,0,21,72,8,19,135,48,81,5,76,128,69,35,66,79,55,13,70,6,117,89,0,12,68,12,240,143,48,49,131,69,119,55,0,11,68,5,34,83,20,115,34,132,86,0,0,17,70,80,83,133,72,145,133,47,117,50,110,34,6,124,81,0,13,69,12,20,133,21,32,49,13,34,6,137,0,0,15,70,92,147,132,36,225,192,58,132,50,70,109,66,0,9,198,13,37,83,4,65,64,66,0,0,11,68,12,131,15,20,49,55,131,118,0,24,68,92,147,132,76,58,6,132,50,70,86,15,70,6,130,50,0,81,100,111,119,110,32,13,68,72,85,83,20,34,124,6,57,129,86,0,11,68,8,146,143,84,69,124,88,129,0,0,19,67,16,145,0,70,118,70,50,119,47,0,32,78,81,110,111,116,32,10,67,16,145,0,70,118,70,0,32,21,67,32,17,0,2,105,115,70,2,69,118,50,0,35,81,98,101,101,110,32,16,67,32,17,0,105,35,70,47,129,0,14,81,116,111,32,16,67,32,17,0,105,2,35,70,47,112,0,81,116,111,32,11,67,32,17,0,4,105,35,70,0,14,13,67,32,17,0,2,105,115,70,0,35,12,9,21,73,4,192,149,69,81,82,69,81,64,35,55,69,13,49,6,123,49,118,0,14,69,17,33,65,53,64,70,34,117,63,48,47,0,0,15,70,24,244,148,84,225,64,81,127,74,13,50,0,103,14,70,92,20,146,36,225,192,58,127,34,118,66,0,14,70,24,244,148,84,225,64,81,127,74,129,50,0,8,66,16,144,70,4,118,0,16,66,20,112,81,127,117,79,86,6,116,63,48,114,0,9,0,17,71,88,83,135,20,19,131,20,82,117,50,73,13,50,87,0,18,71,20,51,205,52,84,131,20,6,124,49,4,119,63,123,87,0,0,11,68,4,195,5,56,35,55,13,50,0,12,68,48,147,133,56,55,118,50,109,50,0,11,68,48,16,143,72,55,133,69,110,0,11,68,5,34,69,76,135,34,124,86,0,0,14,69,64,19,69,48,16,48,35,63,13,55,13,0,13,69,12,129,82,36,80,89,135,34,6,124,0,14,69,64,82,201,56,112,48,124,49,6,118,66,0,14,69,80,148,129,16,80,47,132,34,6,133,70,0,20,73,72,21,1,80,245,73,48,193,64,34,35,47,13,47,6,129,118,0,14,69,24,147,129,48,80,81,109,50,121,55,118,0,17,70,4,195,5,49,82,65,35,55,109,55,6,129,57,13,0,12,69,4,195,5,48,80,115,55,124,55,0,0,0,16,70,41,82,197,8,246,0,73,129,49,69,119,49,87,0,17,71,24,21,143,85,34,84,20,81,133,82,14,34,109,47,0,0,11,68,76,243,142,100,87,120,50,118,0,12,68,37,35,206,100,132,34,13,50,118,0,12,68,32,147,132,84,105,118,50,70,129,0,0,13,69,52,240,137,48,80,63,131,69,114,0,103,14,69,76,16,137,56,16,87,115,69,124,50,13,0,15,69,24,144,83,12,240,81,124,6,35,87,49,131,0,0,10,67,80,147,129,47,124,50,13,0,0,0,11,200,4,229,1,72,53,9,12,16,66,11,68,72,83,129,48,34,124,50,114,0,11,68,64,83,129,48,48,124,50,114,0,20,72,16,83,9,8,84,129,80,80,70,109,55,118,69,13,34,13,47,0,12,68,12,19,129,48,49,13,50,35,55,0,11,68,8,19,129,48,69,133,50,114,0,0,10,67,41,80,78,105,58,121,50,0,10,67,73,82,78,34,129,109,50,0,15,70,52,81,9,12,147,133,63,117,70,87,13,50,0,0,9,198,8,18,18,4,147,128,66,16,70,32,243,73,56,83,64,105,119,63,118,50,117,63,0,0,19,71,64,85,18,60,193,85,52,48,13,47,34,131,55,124,13,63,0,16,71,12,245,78,80,84,133,16,49,130,50,47,110,70,0,19,71,4,97,137,16,21,137,80,35,81,118,70,6,133,82,118,47,0,0,10,67,81,148,15,47,132,48,131,0,15,70,77,84,16,48,145,82,87,13,48,55,132,110,0,15,70,61,85,16,61,53,0,130,47,48,131,87,47,0,12,68,52,244,5,16,63,131,48,117,70,0,11,68,5,33,213,20,122,79,57,129,0,0,13,69,76,80,77,85,48,89,133,63,13,87,0,15,70,93,34,84,4,35,5,34,132,47,13,69,114,0,13,69,76,84,137,21,48,87,124,34,124,86,0,15,70,24,19,12,36,35,5,81,35,55,13,69,114,0,0,15,70,77,65,80,32,83,128,87,47,124,82,13,50,0,17,70,4,225,207,48,19,128,35,66,79,6,131,55,13,50,0,6,66,20,128,133,0,0,15,70,64,192,71,84,147,135,48,55,133,79,118,66,0,17,71,20,21,133,76,68,143,64,124,82,86,70,34,119,48,0,0,11,68,28,147,5,76,79,132,55,86,0,14,70,72,82,78,16,81,82,34,133,50,70,137,0,21,73,52,17,5,52,242,83,20,195,5,63,35,70,13,63,13,86,117,55,0,17,70,13,84,212,60,209,82,49,6,120,87,47,13,63,110,0,11,68,4,34,15,72,115,69,105,128,0,0,14,69,5,34,83,20,224,13,34,118,86,13,50,0,0,15,70,92,131,197,88,84,128,105,129,117,82,110,0,66,14,70,76,49,80,80,84,128,87,117,48,47,110,0,0,0,12,68,16,84,133,44,70,117,34,118,49,0,0,28,69,76,131,213,48,64,89,113,70,105,35,82,47,112,0,74,32,12,82,104,97,118,101,32,116,111,32,21,69,76,131,213,48,64,89,113,70,13,82,0,35,77,81,104,97,118,101,32,15,69,76,131,213,48,64,4,89,113,70,0,32,9,12,13,69,52,20,129,84,64,63,13,34,125,70,0,13,69,33,84,146,4,128,105,120,34,6,121,0,13,3,226,132,162,47,34,133,70,63,122,49,0,0,14,70,64,147,206,20,84,128,48,139,50,6,137,0,13,202,12,243,148,20,212,12,5,66,86,20,66,24,74,5,85,8,61,34,84,5,66,86,20,125,85,6,119,34,109,47,13,47,118,82,0,0,0,20,72,32,19,12,20,197,74,4,128,105,35,55,109,6,55,129,57,13,0,0,0,19,67,32,21,133,105,115,82,50,4,119,47,0,35,81,110,111,116,32,21,67,32,21,133,2,105,115,82,2,69,118,50,0,35,81,98,101,101,110,32,13,67,32,21,133,105,35,82,0,35,9,72,12,10,67,48,149,133,55,118,82,0,36,10,67,48,149,133,55,132,82,0,10,10,67,48,21,129,55,121,82,13,0,13,70,12,240,203,21,145,64,49,119,49,132,0,0,6,195,72,85,128,24,0,13,68,44,244,133,4,49,126,34,6,124,13,0,10,68,24,244,131,20,81,128,87,0,11,68,12,19,143,20,49,13,50,129,0,0,15,69,72,81,140,21,128,34,124,81,55,117,49,87,0,16,69,52,147,149,21,64,63,118,50,57,129,6,117,47,0,12,69,32,82,70,21,32,105,117,81,13,0,0,10,67,80,16,149,47,35,69,129,0,0,18,71,36,225,133,72,83,131,20,118,50,81,13,34,13,50,87,0,0,0,13,69,88,148,137,48,80,82,118,34,114,0,103,13,69,16,240,201,48,80,70,131,87,114,0,103,13,67,28,85,0,2,79,117,47,0,12,35,9,14,69,32,84,143,36,48,105,109,34,131,118,49,0,18,73,4,48,207,84,50,5,52,83,148,115,49,129,89,63,145,0,13,3,226,132,150,50,57,129,63,13,34,131,0,0,15,70,76,19,131,32,86,128,87,35,50,74,117,86,0,10,67,52,243,153,63,120,50,118,0,0,17,71,76,19,9,76,37,82,100,87,125,55,87,69,34,118,0,19,71,37,51,211,12,83,5,76,132,87,6,119,87,13,55,124,86,0,0,12,68,61,34,79,56,119,34,6,139,50,0,10,68,36,227,133,72,118,50,110,0,12,68,32,21,143,12,105,35,82,13,49,0,14,68,21,128,76,80,117,79,86,6,119,55,47,0,19,72,5,85,15,52,240,137,48,80,125,47,13,63,13,69,136,55,0,0,13,69,16,20,8,56,80,70,35,81,50,118,0,8,197,72,245,1,80,80,66,18,70,72,80,68,60,227,25,4,34,124,70,6,131,50,55,118,0,13,69,56,81,193,80,80,50,109,79,133,47,0,13,69,48,145,193,80,80,55,124,79,133,47,0,14,69,13,84,129,80,80,49,57,138,34,133,47,0,8,197,5,84,143,72,16,66,0,0,18,71,88,81,197,80,16,140,20,82,117,73,109,47,13,69,114,0,11,199,36,229,5,73,37,80,80,67,36,11,199,36,229,5,73,37,80,80,65,10,20,71,36,225,140,84,83,154,4,118,50,81,55,129,6,117,50,86,13,0,13,3,226,133,148,47,129,85,6,123,70,86,0,0,11,68,44,21,9,20,49,133,47,118,0,0,15,70,49,82,197,92,20,141,55,129,49,58,127,63,0,13,69,32,84,141,21,48,105,123,63,124,86,0,13,69,4,66,69,85,48,115,70,57,129,86,0,0,15,70,28,147,12,36,19,128,73,118,55,124,13,50,0,14,70,76,80,76,36,243,128,87,124,55,139,50,0,16,70,12,20,129,88,19,128,49,35,34,13,82,35,50,0,0,9,198,4,229,9,32,84,143,65,0,13,68,56,84,1,48,50,117,48,6,125,55,0,12,68,88,148,201,80,82,118,86,109,47,0,12,68,84,229,9,20,120,50,47,6,132,0,12,68,72,84,5,48,34,109,48,117,55,0,11,68,64,20,1,48,48,133,48,114,0,21,72,33,148,15,80,129,83,37,48,105,132,48,6,119,85,13,87,118,87,0,12,68,8,148,5,16,69,132,48,117,70,0,15,70,8,19,12,5,53,0,69,35,55,13,87,47,0,13,3,226,133,147,58,119,50,85,6,123,70,0,0,23,73,72,84,212,61,32,84,36,243,128,34,117,87,47,13,34,6,133,89,13,50,0,23,73,72,84,208,37,32,84,36,243,128,34,117,87,48,109,34,6,133,89,13,50,0,23,73,65,33,80,5,32,84,36,243,128,48,34,117,48,13,34,6,133,89,13,50,0,14,69,52,148,197,73,144,63,118,86,13,34,118,0,13,69,32,17,199,37,48,105,35,79,118,87,0,21,73,4,97,137,72,208,84,36,243,128,35,81,110,63,6,133,89,13,50,0,0,17,70,8,85,23,20,83,128,69,118,47,58,124,50,0,74,12,16,70,32,17,18,36,19,128,105,133,70,34,124,13,50,0,16,70,76,52,143,81,83,64,87,49,34,131,47,13,63,0,16,70,48,144,73,76,243,128,55,124,6,133,86,119,50,0,0,0,12,68,44,20,133,56,49,35,34,13,50,0,11,68,16,83,8,36,70,117,55,118,0,15,70,64,148,85,4,229,0,48,124,49,13,50,47,0,12,68,61,2,78,20,131,48,6,132,50,0,11,68,44,244,10,20,49,119,48,118,0,12,68,9,84,197,76,69,120,87,109,86,0,0,13,69,48,21,78,12,128,55,121,50,74,0,103,14,69,8,147,141,4,224,69,118,50,63,35,50,0,13,69,8,19,12,4,64,69,35,55,13,70,0,0,16,70,52,21,9,48,64,64,63,115,47,118,55,70,13,0,0,18,71,64,19,5,77,66,78,20,48,35,55,13,87,47,132,50,0,17,71,44,148,139,12,19,4,100,49,141,49,6,119,70,118,0,9,67,4,128,64,115,105,121,0,0,10,67,12,193,79,49,55,124,131,0,12,68,40,20,1,56,73,13,48,35,50,0,12,68,28,83,146,20,88,119,50,34,13,0,20,72,4,229,9,64,131,206,4,192,35,50,47,6,118,81,13,50,114,0,9,3,95,49,15,81,6,123,0,0,10,67,4,128,66,133,105,35,69,0,10,67,56,83,206,50,124,119,50,0,0,0,9,67,88,81,192,82,117,73,0,10,67,60,193,68,131,55,117,70,0,8,67,20,113,192,117,79,0,15,71,8,245,82,28,83,201,76,69,138,88,58,121,0,11,3,226,130,172,57,138,34,131,86,0,0,11,68,76,20,129,32,87,135,34,13,0,0,13,69,69,82,86,21,32,49,58,118,82,110,0,15,70,32,243,69,64,17,197,105,131,63,48,133,73,0,0,15,70,40,20,205,36,225,64,73,35,86,63,118,50,0,16,70,21,48,193,72,115,212,109,87,49,6,122,79,131,0,9,198,12,20,195,4,65,64,66,9,3,226,130,169,58,119,50,0,0,9,67,72,81,192,34,117,73,0,10,3,226,130,168,34,129,48,124,0,0,10,68,4,195,1,100,115,55,133,0,10,3,95,50,15,87,6,117,49,0,0,16,69,72,84,15,77,64,34,4,124,48,6,131,87,47,0,17,70,65,33,83,80,145,197,48,34,117,87,47,6,124,88,0,14,69,12,245,133,73,64,49,131,82,6,123,47,0,0,9,66,32,80,105,124,0,72,33,13,70,76,128,76,48,245,192,89,35,55,131,0,15,70,36,208,71,36,225,64,109,63,35,73,109,50,0,8,66,24,144,81,4,132,0,16,70,5,69,1,12,129,64,35,47,6,35,89,133,0,9,11,67,4,129,77,115,105,6,13,63,0,14,70,4,50,9,48,193,64,115,49,118,55,124,0,0,17,71,61,66,5,73,114,83,20,120,84,110,58,132,86,0,8,0,12,68,8,83,137,56,69,117,50,118,50,0,12,68,64,20,133,56,48,115,34,117,50,0,9,67,32,82,0,105,117,105,0,21,72,12,148,131,84,213,133,57,64,87,141,49,13,63,82,117,50,47,0,105,20,72,12,148,131,84,213,133,57,64,87,123,49,13,63,82,117,50,47,0,11,68,4,35,5,72,133,69,55,110,0,0,14,69,16,144,76,60,112,70,139,55,125,79,0,103,15,69,17,99,210,4,176,70,14,82,128,88,35,49,0,13,69,8,243,199,36,80,69,6,129,79,118,0,0,10,67,48,146,197,55,132,49,0,12,15,70,44,20,129,12,130,64,49,115,34,122,74,118,0,15,70,49,83,12,4,38,64,55,120,55,13,69,132,0,9,198,12,243,134,48,144,212,36,10,198,12,243,134,48,144,212,65,10,0,0,20,72,65,33,67,20,65,78,12,80,48,34,117,87,109,70,13,50,87,0,16,70,64,84,134,20,53,0,48,110,81,117,49,47,0,36,16,70,64,84,134,20,53,0,48,123,81,117,49,47,0,10,17,70,25,37,73,80,147,206,81,34,129,6,118,89,13,50,0,10,67,24,150,0,81,118,49,87,0,9,3,95,51,15,85,6,123,0,8,4,95,15,18,4,85,0,0,13,69,76,16,137,56,80,87,115,69,124,50,0,13,69,52,19,9,12,80,63,35,55,109,87,0,11,69,28,21,67,32,80,79,131,89,0,0,10,66,37,48,2,118,86,0,35,9,16,70,37,52,129,20,194,64,118,86,34,6,133,55,118,0,16,70,76,132,137,48,198,64,89,34,118,55,55,118,0,32,0,0,12,68,40,20,133,16,73,35,34,117,70,0,11,68,88,148,129,48,82,139,34,114,0,11,68,12,244,129,48,49,119,34,114,0,10,67,4,115,199,115,79,119,79,0,0,13,69,24,147,133,77,48,81,109,50,117,87,0,13,69,16,147,135,33,144,70,118,66,79,118,0,0,0,0,19,72,65,54,67,32,144,84,73,144,87,132,49,6,139,47,34,118,0,13,68,32,20,133,52,105,121,34,6,124,63,0,12,68,16,147,135,100,70,118,50,73,118,0,0,13,69,76,17,133,81,144,87,133,81,47,118,0,8,197,61,85,3,73,144,65,13,69,48,149,133,49,144,55,132,82,55,118,0,13,69,33,84,146,5,144,105,120,34,6,133,0,0,8,66,20,192,4,117,55,0,0,10,67,32,20,192,105,35,86,0,42,19,67,32,20,192,105,13,86,50,2,119,47,0,35,81,110,111,116,32,16,67,32,20,192,105,35,86,47,129,0,14,81,116,111,32,21,67,32,20,192,2,105,115,86,2,69,118,50,0,35,81,98,101,101,110,32,11,67,32,20,192,105,35,86,0,9,14,12,67,32,20,192,2,105,115,86,0,35,9,8,67,81,148,128,47,139,0,9,67,80,148,192,47,118,86,0,0,10,67,16,148,195,70,118,87,49,0,11,68,12,19,22,20,49,35,82,0,103,10,68,12,19,22,20,49,121,82,0,0,16,69,8,82,9,56,64,69,118,105,132,50,70,0,74,12,12,69,16,20,146,100,192,70,35,34,114,0,14,69,4,211,210,4,192,133,63,6,119,34,114,0,0,15,70,25,34,78,28,84,128,81,34,118,50,73,110,0,14,70,5,36,197,56,144,192,122,87,50,118,49,0,0,13,67,32,148,192,105,118,86,0,72,34,9,12,16,71,44,21,8,21,34,78,20,49,35,85,34,109,50,0,19,71,80,19,135,21,34,78,20,47,35,50,73,13,34,6,124,50,0,11,67,48,20,192,4,55,121,87,0,103,10,67,48,20,192,4,55,35,87,0,0,16,70,72,83,78,4,229,0,34,117,63,50,13,50,47,0,12,68,13,147,82,84,49,120,63,34,118,0,10,3,95,53,15,81,6,118,81,0,0,23,73,52,147,142,20,20,15,48,148,192,63,118,50,124,6,35,48,13,55,109,87,0,16,70,12,240,203,77,84,133,4,49,119,49,89,6,138,0,14,70,9,35,195,33,84,133,69,34,131,89,110,0,0,6,194,37,64,42,17,18,66,37,64,2,118,47,15,58,119,86,0,14,81,119,97,115,32,16,66,37,64,2,118,47,15,118,86,0,14,81,105,115,32,18,66,37,64,2,118,47,15,105,35,86,0,14,81,104,97,115,32,9,66,37,64,118,47,0,72,33,17,70,65,35,212,60,51,204,48,34,131,47,13,49,119,55,0,15,70,52,17,208,36,84,192,63,35,79,48,132,86,0,15,4,95,13,3,14,63,6,35,49,34,4,119,50,0,0,19,67,24,85,192,81,6,57,129,63,4,128,0,81,109,111,114,101,32,0,0,13,69,4,66,69,85,128,115,70,57,129,86,0,0,15,70,77,80,147,36,65,64,87,13,69,87,132,70,0,14,70,21,2,83,80,193,64,109,48,118,87,114,0,16,70,16,83,79,48,148,200,70,109,63,119,55,118,89,0,0,16,71,21,66,5,72,145,7,20,117,85,14,34,118,73,0,0,9,198,61,97,82,81,84,142,67,13,68,12,19,9,96,49,133,55,118,49,87,0,0,15,69,64,21,5,57,64,48,35,47,13,50,47,0,103,14,69,77,69,65,73,64,87,47,129,110,47,0,103,14,69,77,69,65,73,64,87,47,57,129,110,47,0,9,67,36,115,210,124,79,128,0,14,69,76,80,210,21,64,87,124,49,34,13,47,0,13,69,72,21,197,77,64,34,125,13,87,47,0,11,69,17,32,87,21,32,70,34,127,0,16,70,8,85,133,72,17,197,69,117,82,13,34,109,73,0,14,69,4,69,133,73,64,115,70,82,123,47,0,36,0,15,66,16,240,70,129,15,87,131,0,14,81,115,111,32,17,66,16,240,70,129,50,119,47,0,32,78,81,110,111,116,32,8,66,16,240,70,129,0,32,9,198,64,19,129,12,129,64,66,10,66,36,80,132,124,11,0,8,9,0,21,71,21,133,18,20,210,83,80,117,49,87,47,34,6,124,63,118,87,47,0,10,67,8,84,212,69,117,87,47,0,0,13,68,8,83,15,92,69,118,55,131,0,74,12,13,5,10,15,19,195,169,105,131,87,6,133,0,12,68,4,229,15,56,35,50,47,119,50,0,7,196,21,130,76,20,65,12,68,16,149,129,56,70,109,82,35,50,0,0,13,69,52,148,129,28,80,63,118,34,121,88,0,13,69,5,32,66,48,80,35,34,115,69,114,0,14,69,4,224,76,60,112,35,50,13,55,119,79,0,0,14,70,8,84,151,36,50,192,69,117,34,118,49,0,14,70,92,244,139,76,134,64,58,123,49,89,132,0,0,16,70,56,144,200,60,192,83,50,118,49,13,55,13,87,0,17,70,77,1,67,36,98,67,87,48,13,87,118,81,118,49,0,9,198,72,81,3,72,244,211,66,0,11,68,4,148,133,76,132,34,118,86,0,21,72,32,244,208,37,64,66,48,80,105,119,87,48,6,118,47,13,69,114,0,12,68,12,84,133,76,87,136,34,124,86,0,0,14,6,14,1,195,175,22,5,50,132,6,124,82,0,13,69,52,22,72,20,208,63,133,105,117,63,0,12,69,5,35,213,76,80,115,34,130,86,0,0,15,70,16,243,129,28,134,64,70,119,50,6,105,124,0,0,17,70,52,85,1,48,194,67,63,117,47,6,35,55,118,49,0,10,199,21,133,18,36,48,84,20,65,0,15,70,4,112,73,57,53,0,115,79,117,50,87,47,0,20,72,64,244,148,84,117,69,76,80,48,128,47,57,129,79,6,124,86,0,14,68,85,4,197,80,120,48,87,6,117,47,0,38,8,196,85,4,197,80,65,10,22,72,33,148,15,80,83,149,76,80,105,132,48,6,119,47,13,50,57,129,87,0,15,6,95,18,15,13,1,14,34,131,63,13,50,10,0,0,14,69,8,197,82,73,144,69,55,142,34,118,0,105,13,69,8,197,82,73,144,69,55,123,34,118,0,0,10,67,73,80,153,34,129,69,118,0,9,67,5,116,153,115,34,132,0,0,17,70,32,84,131,84,193,83,105,123,49,57,113,55,124,86,0,0,14,70,76,131,213,48,65,82,89,131,55,70,110,0,13,68,52,245,5,48,63,131,47,6,117,55,0,15,70,52,20,129,84,65,82,63,13,34,125,70,110,0,6,195,21,132,15,65,0,14,69,56,144,197,81,144,50,132,87,13,47,118,0,15,69,9,84,201,49,144,69,118,86,109,55,118,0,32,0,7,194,36,96,72,8,9,20,66,20,224,4,119,50,15,34,6,129,47,0,81,114,111,117,116,101,32,20,66,20,224,4,119,50,15,63,6,35,87,0,81,109,97,115,115,101,32,15,70,72,144,207,12,129,84,34,118,49,13,89,133,0,0,15,70,5,69,1,12,129,83,115,47,35,74,109,86,0,12,3,95,51,88,85,6,141,47,37,0,105,11,3,95,51,88,85,6,123,47,37,0,0,17,70,48,198,87,20,198,78,103,13,58,6,117,55,118,50,0,9,198,81,32,78,76,97,82,36,10,198,81,32,78,76,97,82,65,10,11,68,72,85,133,72,34,109,82,137,0,10,198,12,243,148,20,229,0,36,38,10,198,12,243,148,20,229,0,65,10,14,3,95,48,67,105,6,120,50,70,34,13,70,0,0,14,69,52,145,213,20,192,63,124,98,6,117,55,0,8,197,12,86,76,60,224,66,18,70,20,229,18,4,224,197,117,50,47,34,6,116,50,87,0,36,10,198,20,229,18,4,224,197,65,10,13,69,12,245,80,60,224,49,129,48,119,50,0,0,0,17,71,64,130,76,37,2,78,20,81,118,55,109,48,124,50,0,18,71,64,84,134,20,53,12,100,48,123,81,117,49,47,55,118,0,19,71,64,20,129,49,148,201,76,48,13,34,35,55,13,87,118,87,0,17,71,52,20,135,5,34,78,20,63,122,73,13,34,124,50,0,17,71,5,85,8,61,34,84,100,115,85,119,34,109,47,118,0,0,9,198,88,84,141,60,229,0,66,11,68,68,21,1,72,49,35,47,122,0,12,68,64,20,137,76,48,35,34,118,87,0,12,68,80,149,1,56,47,132,47,13,50,0,11,68,77,80,86,20,87,58,121,82,0,0,13,69,13,85,15,24,96,49,120,47,119,81,0,12,69,8,144,83,20,64,69,139,87,47,0,0,11,67,52,17,5,63,4,133,70,0,12,13,67,52,17,5,63,4,133,70,0,12,9,76,16,70,77,67,205,5,64,64,87,47,131,63,13,47,13,0,15,70,12,131,204,21,32,64,49,119,55,13,34,13,0,17,70,12,19,4,21,32,64,49,119,55,70,6,135,34,13,0,14,70,4,230,9,61,84,192,35,66,89,13,87,0,0,9,67,65,34,88,48,34,124,0,0,12,68,12,20,143,48,49,35,34,13,55,0,0,12,201,92,244,132,65,35,195,21,52,192,66,17,70,52,241,5,72,21,5,63,119,70,13,34,133,47,0,36,15,69,4,192,133,37,64,125,55,69,6,124,118,47,0,15,3,226,136,158,118,50,81,6,118,50,109,47,109,0,0,13,5,19,8,5,39,19,89,124,86,0,72,35,17,6,23,1,19,14,39,20,58,120,86,50,47,0,103,35,9,15,70,64,148,5,81,65,64,48,118,48,6,117,47,0,0,17,7,4,15,5,19,14,39,20,70,120,86,13,50,47,0,32,16,3,226,137,160,50,119,47,6,124,49,58,114,47,113,0,0,12,68,16,84,15,80,70,124,48,131,0,103,12,68,81,38,83,80,47,34,118,87,47,0,12,200,81,32,78,76,52,137,65,64,65,10,11,68,16,84,15,80,70,117,48,131,0,0,9,198,8,83,7,72,17,5,66,13,69,12,21,137,5,32,49,35,82,118,122,0,9,198,8,195,195,44,17,5,66,16,70,4,48,213,72,21,5,35,49,57,113,34,13,47,0,15,3,226,136,154,87,49,58,4,135,34,6,129,47,0,0,16,70,52,16,193,9,33,64,63,13,49,121,69,34,13,0,9,66,48,16,4,55,35,0,9,13,3,95,49,57,50,6,132,50,47,124,50,0,0,17,67,52,244,212,63,131,87,47,15,13,82,0,81,111,102,32,10,67,72,84,212,34,117,87,47,0,9,67,52,19,12,63,35,55,0,6,195,5,2,64,17,11,3,95,49,56,6,133,47,124,50,0,0,12,68,48,85,133,56,55,124,82,13,50,0,11,68,16,245,133,72,70,131,82,110,0,22,73,36,229,5,72,209,68,36,21,5,118,50,47,110,63,6,124,70,136,47,0,16,3,226,151,143,69,55,4,35,49,87,6,123,49,114,0,0,11,69,76,54,84,32,80,87,132,84,0,12,201,20,193,67,81,35,195,85,65,64,66,13,69,16,240,66,48,80,70,129,13,69,114,0,0,10,67,52,19,9,63,121,55,118,0,15,70,88,20,137,21,70,64,82,13,34,139,47,118,0,19,70,4,36,212,72,16,212,115,69,87,47,34,6,35,49,47,0,36,18,70,4,36,212,72,16,212,35,69,87,47,34,35,49,47,0,9,0,10,199,53,83,20,37,69,68,20,65,0,12,68,52,21,137,76,63,133,82,118,87,0,12,68,76,21,1,56,87,133,47,13,50,0,0,14,69,72,81,5,100,80,34,6,117,70,4,132,0,14,69,64,20,143,48,80,48,115,34,6,131,55,0,13,69,48,244,201,56,112,55,129,86,109,66,0,14,69,12,246,79,80,80,49,132,6,131,47,118,0,11,3,226,136,146,63,132,50,13,87,0,0,14,70,76,85,133,72,19,0,87,117,82,34,114,0,13,3,95,49,49,118,55,6,117,82,13,50,0,0,17,71,81,84,142,80,16,140,20,47,123,50,47,133,69,114,0,19,71,65,34,86,5,66,79,56,48,34,132,82,6,133,89,13,50,0,10,3,95,49,48,47,6,117,50,0,0,10,67,81,34,79,47,34,124,131,0,12,68,36,229,5,48,118,50,47,117,55,0,18,72,21,97,82,101,66,9,56,112,117,82,34,109,85,118,66,0,12,68,16,243,149,80,70,131,50,120,47,0,13,3,95,49,51,85,6,141,47,124,50,0,105,12,3,95,49,51,85,6,123,47,124,50,0,0,13,69,12,19,143,21,48,49,13,50,129,86,0,12,4,95,52,48,15,81,6,128,47,136,0,12,3,95,49,50,47,58,6,117,55,82,0,0,13,3,95,49,53,81,6,118,81,47,124,50,0,0,18,71,52,81,9,4,85,129,48,63,117,70,118,6,124,82,114,0,20,71,12,243,148,72,19,20,60,49,119,50,47,34,6,35,55,47,131,0,19,71,5,85,15,13,32,67,100,125,47,6,119,49,34,13,87,118,0,12,3,95,49,52,81,6,128,47,124,50,0,0,12,68,64,21,5,48,48,115,47,117,55,0,11,68,36,225,9,20,118,50,70,118,0,13,68,32,245,5,48,105,131,47,6,117,55,0,11,67,5,129,83,35,49,87,109,86,0,16,3,95,49,55,87,6,13,82,13,50,47,124,50,0,107,15,3,95,49,55,87,6,117,82,13,50,47,124,50,0,0,13,69,80,131,205,5,48,47,119,63,13,87,0,8,197,61,85,12,5,112,65,14,3,95,49,54,87,6,118,49,87,47,124,50,0,0,0,20,71,77,80,138,20,53,5,16,87,120,69,73,6,117,49,47,109,70,0,17,70,52,84,131,20,65,83,63,123,87,6,133,70,124,86,0,10,67,5,115,204,133,58,119,55,0,15,3,95,55,88,87,6,13,82,13,50,47,37,0,107,14,3,95,55,88,87,6,117,82,13,50,47,37,0,0,21,72,12,243,77,20,229,1,73,144,49,119,63,13,50,47,117,34,118,0,103,7,196,56,85,133,72,32,11,68,12,132,137,76,49,34,118,87,0,13,6,2,10,195,184,18,14,69,57,123,50,0,12,68,16,85,143,56,70,117,82,13,50,0,12,68,72,84,12,100,34,109,48,55,132,0,19,72,12,243,77,20,229,1,73,144,49,119,63,13,50,47,34,118,0,13,68,4,212,12,100,35,63,48,55,118,0,32,20,72,4,36,212,20,210,79,85,48,115,69,87,47,6,124,63,136,87,0,12,200,4,36,207,49,85,5,49,144,67,32,0,17,70,64,83,133,48,244,5,48,13,50,117,55,13,48,118,0,14,69,80,18,87,4,224,47,132,6,58,35,50,0,13,69,72,20,195,4,192,34,116,87,49,114,0,12,69,9,35,207,12,128,69,34,131,74,0,0,15,70,77,21,73,73,33,76,87,49,58,118,34,114,0,0,18,71,65,54,67,32,245,9,12,87,132,49,6,119,47,118,49,0,11,67,21,130,84,117,79,86,118,47,0,9,67,9,84,192,69,120,87,0,0,11,68,32,21,133,76,105,35,82,86,0,12,68,48,144,146,20,55,124,69,34,13,0,10,68,20,20,140,100,123,55,118,0,0,13,69,76,147,133,4,64,89,109,50,133,70,0,14,69,80,19,80,60,224,47,35,63,48,119,50,0,9,198,56,21,9,88,149,25,66,0,0,17,71,72,83,132,21,99,213,76,34,119,50,70,109,82,129,0,18,71,64,20,129,52,85,5,72,48,13,34,35,63,109,47,110,0,17,71,5,85,15,29,32,80,32,125,47,13,79,34,35,81,0,11,3,224,165,164,70,120,50,70,115,0,0,18,72,32,83,131,20,99,210,80,128,105,117,50,87,81,128,85,0,0,12,69,92,149,8,21,32,58,118,84,110,0,9,198,77,64,77,64,81,5,66,16,70,72,83,133,28,17,5,34,117,50,13,79,133,70,0,16,70,64,20,129,76,149,5,48,35,34,13,87,132,47,0,9,198,4,229,9,16,245,5,65,0,15,6,1,18,5,14,39,20,4,122,50,47,0,35,12,15,70,92,80,147,37,65,64,58,117,69,87,132,47,0,9,198,64,194,67,5,65,64,66,14,70,8,150,129,73,33,64,69,118,86,6,122,0,9,198,4,230,77,61,33,64,67,0,17,7,8,1,22,5,14,39,20,105,35,82,13,50,47,0,35,16,70,92,147,142,37,1,71,58,118,50,109,48,117,79,0,0,0,28,5,23,15,14,39,20,58,6,131,50,47,35,82,47,112,0,32,12,82,104,97,118,101,32,116,111,32,23,5,23,15,14,39,20,58,131,50,47,105,35,82,0,35,14,81,104,97,118,101,32,22,5,23,15,14,39,20,58,131,50,47,115,82,0,35,73,81,104,97,118,101,32,16,5,23,15,14,39,20,58,131,50,47,0,76,32,12,9,9,198,77,64,71,56,21,5,66,17,70,76,84,1,72,21,5,87,117,48,110,34,133,47,0,36,16,70,76,84,1,72,21,5,87,117,48,14,34,13,47,0,13,69,72,21,8,21,32,34,121,84,110,0,135,21,73,12,84,148,36,98,67,5,65,64,87,110,47,118,81,118,49,13,47,0,11,69,4,85,8,21,32,124,85,13,0,0,15,70,72,81,133,73,32,76,34,109,81,123,34,114,0,13,70,56,245,200,21,33,64,50,131,58,135,0,14,70,5,84,212,21,33,64,125,87,47,6,137,0,0,6,195,41,84,212,32,17,7,23,5,18,5,14,39,20,4,58,123,50,47,0,35,12,18,71,49,83,131,33,35,207,52,55,120,50,74,15,34,129,63,0,17,71,25,33,69,48,19,131,20,81,34,124,55,116,50,87,0,0,11,68,4,20,143,56,135,34,13,50,0,16,70,16,81,137,12,149,0,70,117,81,109,87,118,47,0,20,72,4,197,15,28,85,8,21,32,4,125,55,47,13,79,117,84,110,0,0,20,73,80,83,80,21,32,84,85,33,64,47,117,63,48,34,109,74,110,0,9,198,61,85,3,72,244,0,65,8,197,5,32,66,36,48,65,0,16,70,4,230,9,21,70,64,35,66,86,6,139,47,118,0,0,12,201,84,197,18,5,98,79,48,85,0,67,0,13,68,104,80,146,4,86,124,69,34,13,0,103,9,198,36,228,212,20,17,0,8,11,68,80,21,1,72,47,121,47,110,0,11,68,48,149,5,72,55,124,47,110,0,0,14,69,72,80,201,64,80,34,117,87,109,48,124,0,13,69,32,84,133,80,240,105,137,6,47,129,0,0,0,13,3,95,50,88,47,58,6,117,50,47,37,0,0,0,14,69,64,148,129,13,144,48,139,34,13,87,118,0,14,69,12,241,9,25,144,49,131,70,109,81,132,0,0,13,202,36,229,5,73,35,199,5,67,210,100,67,0,17,71,52,19,135,21,67,213,80,63,119,50,88,47,6,129,0,19,71,16,240,212,72,147,129,48,70,119,49,47,34,6,132,50,114,0,0,11,68,16,21,137,20,70,133,82,118,0,0,14,69,88,17,193,73,144,82,133,79,13,34,118,0,14,69,80,84,212,21,48,47,117,87,47,124,86,0,8,197,61,85,12,5,144,65,0,15,70,72,84,212,25,83,0,34,117,87,47,81,114,0,17,70,52,145,20,21,35,64,63,6,118,70,47,4,123,63,0,0,20,71,25,35,206,81,0,71,20,81,34,6,120,50,47,48,4,133,73,0,0,22,72,28,193,78,72,245,8,21,48,79,55,4,117,50,34,6,119,85,109,87,0,0,12,69,48,85,8,4,192,55,124,85,114,0,14,69,32,84,143,36,224,105,117,34,131,118,50,0,0,11,67,76,83,73,87,117,63,132,0,103,0,0,11,68,76,16,146,20,87,133,69,110,0,11,3,95,63,63,87,118,63,69,114,0,0,13,69,5,35,213,56,64,115,34,130,50,70,0,14,69,80,245,193,72,64,47,113,58,127,70,0,66,14,69,64,20,212,20,64,48,133,87,47,109,70,0,13,69,9,34,68,4,192,69,34,132,70,114,0,13,67,49,65,0,55,118,63,109,47,109,70,0,0,5,194,49,64,24,11,66,53,32,63,118,87,47,110,0,24,0,11,3,95,52,88,81,6,128,47,37,0,0,26,68,24,148,147,80,81,6,141,87,47,10,48,55,4,133,87,0,105,81,112,108,97,99,101,32,25,68,24,148,147,80,81,6,123,87,47,10,48,55,4,133,87,0,81,112,108,97,99,101,32,0,9,67,76,80,78,89,125,50,0,17,70,104,147,66,4,37,197,86,109,63,69,121,69,58,118,0,11,67,60,208,78,131,63,6,35,50,0,8,197,85,3,9,25,64,66,8,197,36,228,197,13,64,65,0,0,9,67,56,240,72,50,131,120,0,0,0,8,197,60,34,133,13,64,36,9,197,60,34,133,13,64,65,10,0,10,66,28,240,4,79,131,0,12,9,15,70,65,33,70,4,49,64,48,34,117,81,13,87,0,8,66,48,80,55,13,0,9,15,70,32,244,212,4,113,64,105,119,87,47,109,73,0,9,198,24,147,129,56,49,64,36,16,70,24,147,129,56,49,64,81,132,50,35,50,87,0,9,9,66,52,48,63,13,49,0,23,0,17,71,72,81,133,72,83,131,20,34,117,81,34,13,50,87,0,14,70,52,19,77,61,66,0,63,35,63,13,85,0,12,3,95,53,88,81,6,118,81,47,37,0,0,11,68,48,21,20,20,55,35,47,133,0,0,13,67,28,245,0,2,79,119,47,0,12,35,9,15,69,28,243,69,72,16,79,131,63,6,135,34,13,0,17,70,81,32,86,21,53,25,47,34,35,82,13,87,47,118,0,13,69,25,84,195,36,16,81,57,129,89,13,0,13,69,16,148,15,48,80,70,132,48,131,55,0,20,73,8,245,82,28,83,201,76,145,64,69,138,88,58,121,86,6,124,0,0,14,70,56,244,134,60,194,192,50,127,81,13,49,0,15,70,56,21,21,72,19,0,50,35,74,13,34,114,0,0,16,71,76,86,67,32,83,12,20,87,133,89,6,117,55,0,20,71,21,131,206,21,32,84,20,117,79,86,6,119,50,13,34,133,47,0,18,71,16,148,208,5,32,84,20,70,118,87,48,13,34,13,47,0,0,9,198,21,132,12,60,149,0,36,10,198,21,132,12,60,149,0,65,10,0,13,69,81,34,65,28,80,47,34,124,121,88,0,14,69,76,85,133,72,80,87,109,82,6,137,0,9,13,69,76,49,78,36,48,87,124,50,118,49,0,14,69,64,81,1,48,240,48,117,70,13,55,131,0,13,69,52,19,149,72,80,63,13,50,57,138,0,0,9,198,28,243,196,16,22,64,66,15,70,13,85,1,92,22,64,49,120,47,13,58,133,0,0,9,67,56,245,20,50,119,47,0,18,71,20,193,67,81,35,196,20,109,55,117,49,47,34,131,70,0,6,195,60,83,64,17,13,3,95,54,88,87,6,118,49,87,47,37,0,0,11,68,69,80,83,32,49,58,119,89,0,0,13,69,72,16,130,37,48,34,35,69,132,86,0,13,69,32,245,11,21,144,105,119,47,49,124,0,22,73,9,84,133,5,80,210,4,54,64,69,57,138,6,119,49,34,13,87,118,0,13,4,95,53,48,15,81,6,118,81,47,136,0,0,15,70,52,19,22,21,35,128,63,125,55,82,110,50,0,0,16,71,29,33,69,57,114,67,32,79,34,117,50,118,74,0,0,10,67,56,245,19,50,119,47,87,0,15,70,52,243,147,36,85,82,63,13,87,57,142,0,105,14,70,52,243,147,36,85,82,63,13,87,57,123,0,0,15,69,4,52,143,77,48,13,49,34,119,87,0,74,12,13,69,32,84,144,21,48,105,123,48,124,86,0,14,69,12,19,80,85,48,49,35,63,48,13,87,0,0,0,21,73,12,243,142,20,53,9,13,85,0,49,13,50,117,47,109,49,13,47,0,16,70,36,225,129,52,245,83,118,50,81,13,63,13,87,0,0,12,68,64,17,18,20,48,121,70,34,133,0,0,16,69,92,149,8,36,224,58,118,84,118,50,0,74,12,28,13,69,56,21,8,4,224,50,133,85,13,50,0,15,70,12,243,77,20,224,197,49,13,63,117,50,87,0,0,0,7,195,48,36,192,17,42,11,67,48,36,192,48,130,50,70,86,0,0,12,68,16,21,137,76,70,133,82,118,87,0,12,68,52,150,5,72,63,118,49,87,110,0,0,13,69,4,97,200,4,224,35,81,79,35,50,0,15,69,36,228,212,4,192,118,50,87,47,6,125,55,0,0,0,9,67,104,241,64,86,131,118,0,17,71,48,147,79,85,50,78,20,55,118,63,13,86,124,50,0,14,67,13,68,140,49,119,50,47,34,6,131,55,0,10,3,95,56,88,6,133,47,37,0,0,11,200,36,228,201,28,133,6,84,192,66,12,68,32,84,143,16,105,117,34,13,70,0,0,8,197,61,85,16,85,64,65,16,70,56,81,204,36,113,69,50,117,79,55,118,88,133,0,14,69,52,84,133,77,64,63,136,34,13,87,47,0,20,67,52,18,78,63,6,133,50,87,47,34,4,124,47,0,81,115,116,32,8,197,21,132,15,73,64,36,9,197,21,132,15,73,64,65,10,0,16,70,93,147,205,36,225,192,58,132,6,131,63,109,66,0,0,0,12,68,52,20,137,4,63,115,34,124,13,0,11,68,32,84,143,20,105,136,34,131,0,0,9,67,36,18,78,124,13,50,0,0,9,66,52,80,63,124,0,15,14,9,66,52,80,4,63,124,0,9,14,70,80,16,140,20,21,64,47,35,69,55,131,0,14,70,52,147,5,4,113,64,63,132,55,109,73,0,16,70,12,20,18,36,49,64,49,115,48,34,6,124,87,0,0,12,3,95,57,88,50,6,132,50,47,37,0,0,14,70,32,20,146,36,85,0,105,35,34,136,47,0,16,70,56,81,204,20,53,0,50,109,79,55,117,49,47,0,15,70,13,35,207,44,81,0,49,34,113,49,118,70,0,19,72,9,81,7,21,34,71,5,32,69,120,73,13,34,118,79,122,0,0,17,69,32,21,137,56,112,4,105,35,82,109,66,0,12,35,9,13,69,72,80,68,52,80,34,124,70,63,124,0,16,69,25,84,143,72,80,81,57,129,34,6,125,34,118,0,14,69,12,241,206,4,48,49,119,50,57,35,49,0,15,70,8,243,136,60,210,69,69,119,50,13,63,124,0,0,8,67,52,22,65,63,139,0,14,70,77,81,134,60,194,192,87,120,81,13,49,0,13,202,12,148,131,84,209,133,72,83,131,20,66,9,67,4,131,217,115,105,134,0,0,26,67,52,22,64,4,63,133,105,6,35,82,47,112,0,32,14,82,104,97,118,101,32,116,111,32,19,67,52,22,64,63,133,105,115,82,0,35,77,81,104,97,118,101,32,10,67,52,22,64,63,133,0,32,12,15,71,12,128,82,48,245,20,20,89,122,55,13,47,0,18,71,76,80,210,21,64,82,100,87,117,49,34,13,47,34,118,0,20,71,37,66,78,21,32,82,100,132,47,6,118,50,13,34,13,34,118,0,17,71,29,35,211,88,83,143,72,79,34,131,82,13,50,110,0,0,13,68,52,83,149,76,63,117,50,57,129,86,0,0,15,69,4,230,79,56,80,117,50,118,58,120,50,0,106,14,69,4,230,79,56,80,117,50,118,58,119,50,0,9,67,60,208,82,131,63,122,0,14,69,56,245,77,20,16,50,129,63,6,133,13,0,12,69,8,195,213,76,80,69,55,130,86,0,0,17,70,65,34,86,4,54,64,48,34,132,82,13,87,118,0,103,16,70,81,34,76,60,118,64,47,34,118,55,13,73,118,0,15,70,72,80,201,80,19,0,34,109,87,132,47,114,0,11,3,95,63,65,55,4,117,47,110,0,0,10,199,76,80,129,77,66,65,56,66,18,71,4,69,133,73,48,82,100,35,70,82,110,87,13,34,118,0,0,20,72,77,68,153,12,131,137,56,80,87,47,34,6,118,49,50,124,50,0,12,68,72,81,137,80,34,124,81,118,47,0,0,0,0,0,9,198,92,245,76,17,53,0,76,16,70,52,144,200,36,112,78,63,118,89,118,79,13,50,0,10,68,12,244,144,76,49,127,0,9,0,17,70,77,84,137,56,19,69,87,138,34,118,50,6,35,63,0,14,69,64,19,20,73,144,48,125,55,47,34,118,0,14,69,33,80,146,37,48,105,129,69,34,118,87,0,0,11,67,85,3,206,13,48,119,50,0,74,16,70,72,84,85,36,83,64,34,117,49,58,109,117,63,0,17,70,61,33,71,4,227,192,119,34,118,79,6,121,50,131,0,0,20,66,36,224,118,50,15,58,118,74,0,74,8,81,119,104,105,99,104,32,15,66,36,224,2,118,50,84,111,0,81,116,104,101,32,11,66,36,224,2,118,50,0,11,9,34,20,71,52,83,129,28,84,137,20,63,13,50,6,35,73,57,13,34,118,0,5,194,56,64,9,9,3,226,153,175,89,122,48,0,0,15,70,16,147,143,76,21,82,70,132,50,13,87,127,0,6,195,61,67,200,17,6,195,53,144,64,17,11,4,95,8,15,11,105,6,113,49,0,0,11,68,104,18,82,20,86,132,6,137,0,10,68,76,131,206,20,89,119,50,0,12,68,32,84,143,56,105,117,34,13,50,0,10,3,226,153,173,81,55,35,47,0,0,0,16,70,13,84,146,20,229,0,49,6,110,13,50,47,0,103,17,70,53,82,1,52,208,68,63,131,105,6,35,63,109,70,0,9,198,85,5,9,28,133,0,66,16,70,64,243,9,80,84,128,48,13,55,6,132,47,110,0,0,19,71,33,148,5,72,35,204,4,105,132,48,6,123,69,13,55,13,0,15,4,95,15,7,15,6,119,79,119,50,4,117,49,0,0,13,68,56,243,206,20,50,131,58,120,50,0,106,12,68,56,243,206,20,50,131,58,119,50,0,12,68,61,97,82,80,131,82,6,123,47,0,0,0,9,66,61,32,127,0,72,8,9,10,67,65,35,211,48,34,131,86,0,15,70,32,243,19,80,84,128,105,131,55,87,47,110,0,13,202,16,83,79,57,53,18,5,66,86,20,66,0,24,73,72,131,196,60,65,78,17,35,206,34,131,70,13,70,6,117,50,70,34,13,50,0,15,70,52,20,211,4,52,133,63,35,87,13,49,110,0,0,0,0,10,67,76,83,147,87,117,50,87,0,0,13,67,92,83,148,2,58,117,50,47,0,12,9,17,71,4,69,133,73,66,83,20,35,70,82,110,47,132,86,0,0,21,72,52,17,1,28,20,195,5,32,63,35,70,13,79,6,35,87,49,110,0,0,11,69,48,21,217,21,32,55,134,110,0,12,69,9,84,147,5,32,69,123,87,110,0,0,15,70,16,148,197,5,49,64,70,118,86,6,124,86,0,15,70,4,229,9,69,81,64,35,50,47,6,124,49,0,0,9,67,29,82,64,79,129,118,0,0,16,8,20,8,5,18,5,39,12,12,84,135,55,0,72,32,13,68,80,86,1,76,47,117,49,87,13,87,0,10,67,28,83,137,73,124,50,118,0,0,14,69,52,19,1,92,144,63,115,55,121,58,118,0,14,69,28,83,133,88,16,73,13,50,124,82,13,0,13,69,60,85,86,72,80,142,82,34,13,0,105,12,69,60,85,86,72,80,123,82,34,13,0,17,70,24,244,133,57,50,67,81,13,34,117,50,87,118,49,0,8,197,5,32,193,16,80,66,0,16,70,76,243,9,12,149,0,87,13,55,118,87,109,47,0,0,18,71,80,83,80,61,32,82,100,47,117,63,48,34,13,34,118,0,20,71,52,85,1,8,243,9,12,63,117,47,13,69,6,119,55,118,49,0,0,12,68,4,32,66,4,35,69,115,69,13,0,12,68,72,80,68,16,34,124,6,35,70,0,0,12,69,65,54,67,32,80,87,132,49,124,0,8,67,40,245,82,88,138,0,0,13,70,65,54,67,32,81,0,87,132,49,70,0,9,198,61,85,2,85,36,212,65,5,194,61,48,17,0,9,67,36,19,128,124,13,50,0,14,203,36,225,146,5,53,18,84,53,21,72,80,65,17,71,24,244,133,77,64,76,48,81,128,87,47,6,125,55,0,16,71,5,48,197,73,64,73,56,35,87,110,47,133,50,0,0,9,67,56,243,133,50,120,50,0,19,72,77,147,148,32,84,201,76,80,87,118,50,85,13,87,132,86,0,11,68,8,84,153,48,69,117,34,114,0,0,14,69,12,19,129,73,144,49,13,50,135,34,118,0,15,70,4,230,84,32,147,135,117,50,109,85,118,66,0,6,195,65,35,198,24,0,17,70,32,84,143,37,51,64,105,117,34,131,118,86,13,63,0,15,70,20,66,84,36,243,128,109,70,118,89,13,50,0,13,4,95,48,77,50,63,6,118,55,136,50,0,0,10,198,12,17,134,20,147,133,103,66,19,71,40,84,149,76,19,5,52,73,13,34,129,87,13,55,13,63,0,9,67,72,245,84,34,130,47,0,17,71,72,81,133,73,34,78,28,34,109,81,123,34,109,66,0,13,4,95,48,77,51,69,6,118,55,136,50,0,0,11,68,52,20,137,20,63,115,34,124,0,12,68,44,20,21,80,49,115,48,113,47,0,0,23,73,56,85,198,61,83,132,48,19,132,50,57,129,81,13,50,70,55,115,50,70,0,14,69,77,68,137,65,144,87,47,34,132,48,118,0,13,69,64,21,8,61,48,48,133,85,119,87,0,14,4,95,48,77,49,85,6,130,86,13,50,70,0,0,17,70,88,243,3,4,227,192,82,119,55,49,6,133,50,131,0,12,4,95,2,18,22,69,34,6,124,82,0,0,0,12,68,8,85,23,76,69,117,47,113,87,0,0,10,67,77,81,90,87,129,109,86,0,12,201,77,84,5,73,98,83,36,243,128,67,14,69,52,20,131,20,192,63,122,87,6,117,55,0,12,69,12,130,83,20,192,74,118,86,114,0,0,9,198,52,83,9,77,48,64,66,16,70,92,81,75,20,225,0,58,124,49,6,117,50,70,0,9,198,92,81,75,20,225,0,66,13,70,52,19,136,61,84,128,63,35,50,140,0,0,10,67,56,244,128,50,127,0,8,9,18,67,24,244,128,81,127,58,119,50,0,66,14,81,111,110,101,32,23,67,24,244,128,81,13,13,15,58,6,132,55,0,82,97,32,119,104,105,108,101,32,16,67,24,244,128,81,110,84,111,0,34,81,116,104,101,32,15,67,24,244,128,81,13,13,50,0,34,81,97,110,32,13,67,24,244,128,81,13,13,0,34,81,97,32,9,67,24,244,128,81,127,0,72,18,71,76,80,210,21,66,86,20,87,124,49,34,13,47,118,82,0,15,71,13,35,201,77,48,78,80,49,58,121,87,144,0,0,16,67,52,19,153,63,117,50,118,13,82,0,81,111,102,32,11,67,52,19,153,63,117,50,118,0,34,11,67,92,84,133,2,58,123,0,35,9,9,67,20,148,133,135,34,13,0,12,68,76,147,79,56,87,132,63,13,50,0,0,14,69,8,21,13,4,224,69,35,47,63,35,50,0,0,15,70,76,83,129,80,244,128,87,117,50,13,47,110,0,0,10,199,64,243,25,80,129,78,20,65,19,71,48,149,133,77,67,195,44,55,6,132,82,87,47,4,119,49,0,0,0,12,201,53,83,20,37,3,5,96,84,128,65,13,69,4,35,1,85,64,35,69,55,130,47,0,0,16,70,8,80,193,85,49,64,69,118,49,120,86,0,66,8,0,0,0,13,5,23,5,39,12,12,58,124,55,0,72,32,14,69,20,194,67,37,64,109,55,118,87,109,47,0,0,15,70,12,129,77,37,49,64,89,117,63,6,124,86,0,24,66,44,208,87,49,58,4,135,49,118,55,6,119,63,118,47,110,86,0,81,194,178,32,0,19,71,9,80,200,5,33,83,80,69,129,49,115,34,6,117,87,47,0,16,70,8,20,130,21,21,69,69,122,69,13,49,57,129,0,0,11,68,52,242,82,4,63,134,34,13,0,12,68,24,85,21,76,81,124,47,13,87,0,0,14,69,80,18,80,20,144,47,4,132,48,6,133,0,15,69,8,146,201,56,144,69,118,49,6,124,50,118,0,0,16,70,52,147,4,72,81,0,63,118,55,70,34,109,70,0,9,198,61,85,19,44,148,148,65,16,70,8,19,145,84,85,0,69,35,66,49,58,109,47,0,0,14,70,56,244,151,36,50,0,50,119,34,109,74,0,19,71,33,148,5,72,35,204,20,105,132,48,6,123,69,13,55,118,0,16,70,21,2,80,32,19,153,109,48,118,81,13,50,118,0,17,71,12,132,137,77,67,65,76,49,34,118,87,63,13,87,0,0,11,67,60,227,25,131,50,55,118,0,40,12,68,16,244,137,76,70,119,34,118,87,0,12,68,8,244,137,76,69,119,34,118,87,0,11,68,16,128,66,36,70,121,69,37,0,18,72,65,33,83,12,145,78,12,80,48,34,124,87,136,50,87,0,0,13,69,24,16,201,48,80,81,35,87,114,0,103,13,69,12,80,201,48,80,87,117,87,124,55,0,8,197,85,1,1,80,80,36,9,197,85,1,1,80,80,65,10,13,69,76,81,1,80,80,87,109,70,133,47,0,13,69,12,194,67,32,80,49,55,124,89,133,0,0,10,66,53,144,63,132,0,72,34,12,0,10,67,77,81,84,87,129,109,47,0,19,71,65,35,205,20,224,68,20,48,34,119,63,13,50,6,121,70,0,28,75,36,225,9,76,52,137,52,147,129,80,80,118,50,70,109,87,49,34,6,118,63,109,50,13,47,0,0,18,72,93,35,206,28,67,201,56,112,34,119,66,70,129,109,66,0,0,0,15,70,80,131,213,76,19,132,85,130,86,13,50,70,0,13,202,32,84,141,5,2,18,60,66,84,20,66,16,70,12,131,210,37,163,192,74,126,34,6,124,86,131,0,15,70,8,20,212,36,243,128,69,35,87,47,136,50,0,0,15,67,61,85,0,4,130,47,13,82,0,81,111,102,32,19,71,20,66,78,9,84,135,32,117,70,118,50,69,2,120,34,13,0,18,71,21,21,73,88,240,193,48,109,49,58,118,82,13,49,114,0,0,11,68,48,84,143,100,55,124,34,134,0,0,13,69,52,245,137,21,48,63,129,82,109,86,0,0,20,66,60,96,120,82,58,118,74,0,106,66,8,81,119,104,105,99,104,32,16,66,60,96,2,120,84,111,0,106,34,81,116,104,101,32,16,66,60,96,3,119,82,84,111,0,34,81,116,104,101,32,19,66,60,96,119,82,58,118,74,0,66,8,81,119,104,105,99,104,32,14,66,60,96,13,82,13,50,0,34,81,97,110,32,12,66,60,96,13,82,13,0,34,81,97,32,10,66,60,96,120,82,0,106,72,9,9,66,60,96,119,82,0,72,9,14,70,76,147,194,32,19,128,89,13,82,125,50,0,14,70,8,19,12,60,243,128,69,13,55,129,50,0,16,70,4,33,15,52,83,128,35,69,70,13,63,13,50,0,0,16,70,52,243,143,80,243,133,63,119,50,13,47,131,50,0,9,67,52,144,192,63,132,49,0,17,70,24,193,88,36,35,5,81,55,117,49,87,118,69,114,0,0,9,68,92,131,210,20,105,128,0,13,68,88,242,76,4,82,58,35,55,6,35,0,11,68,88,144,193,72,82,118,49,110,0,10,67,52,144,193,63,132,49,13,0,0,15,69,44,244,133,4,224,49,126,34,6,124,13,50,0,14,69,77,84,5,72,32,87,129,48,6,123,69,0,13,69,76,80,66,20,64,87,124,69,117,70,0,0,16,70,64,16,201,24,144,192,48,115,87,118,81,118,49,0,17,70,65,148,137,80,84,192,48,132,34,6,132,47,124,86,0,14,70,48,148,85,21,84,128,55,109,49,57,138,0,0,0,22,72,12,244,5,56,128,71,20,224,49,131,48,13,50,105,6,133,79,13,50,0,10,67,52,17,201,63,133,73,132,0,0,18,70,76,19,148,36,17,207,87,35,50,47,118,6,121,79,131,0,12,69,76,48,82,20,64,87,49,135,70,0,0,28,74,36,229,133,77,66,71,5,66,86,20,118,50,82,4,117,87,47,109,79,6,133,47,118,82,0,103,15,70,28,84,129,36,229,0,79,117,34,132,50,47,0,15,70,56,20,195,20,229,0,50,133,87,13,50,47,0,15,70,8,243,138,61,84,128,69,125,50,88,6,138,0,15,70,4,116,143,84,225,0,115,79,34,130,50,70,0,0,8,67,4,33,64,133,69,0,19,71,65,33,68,20,98,78,20,48,34,124,70,109,81,6,132,50,0,17,70,36,224,210,20,20,197,118,50,49,34,6,124,87,0,36,14,70,13,33,65,81,84,133,49,34,124,74,110,0,0,13,68,92,131,211,20,4,105,129,86,0,8,9,16,7,8,1,23,1,9,39,9,105,13,58,6,132,124,0,0,14,69,16,84,197,73,64,70,109,86,123,47,0,36,14,69,16,84,197,73,64,70,117,87,110,47,0,9,13,69,16,84,197,73,64,70,109,86,123,47,0,14,69,12,243,80,5,64,49,13,63,48,35,47,0,0,15,70,77,65,82,36,193,64,87,47,117,34,114,0,103,16,70,84,180,129,36,225,64,57,129,49,34,6,133,50,0,15,70,28,192,83,28,245,192,79,55,116,86,79,131,0,13,70,88,82,9,12,193,64,82,136,49,114,0,18,70,84,181,76,20,193,64,57,129,49,13,55,6,133,55,118,0,15,70,77,65,82,36,193,64,87,47,117,34,132,55,0,14,70,52,244,129,36,225,64,63,13,34,133,50,0,0,13,67,60,225,64,58,120,50,0,106,34,10,13,12,67,60,225,64,58,119,50,0,34,10,13,16,67,20,16,200,124,74,15,13,82,0,8,81,111,102,32,14,70,60,209,76,21,69,5,119,63,55,13,47,0,10,67,4,33,68,115,69,117,70,0,6,195,60,209,192,17,0,0,14,69,17,34,69,77,64,70,34,132,13,87,47,0,0,16,70,12,243,82,4,65,64,49,119,63,34,35,70,0,103,13,67,60,229,15,4,119,50,106,113,0,103,12,12,67,60,229,15,4,119,50,47,113,0,12,15,70,92,19,142,4,33,64,58,119,50,115,69,124,0,15,70,32,84,143,36,225,64,105,117,34,131,118,50,0,15,70,29,33,78,4,65,64,79,34,13,50,133,70,0,9,198,4,229,9,48,241,192,65,0,20,71,76,147,131,21,33,83,80,87,118,50,87,6,136,34,13,87,47,0,9,198,4,229,9,60,50,0,65,0,12,68,80,129,73,72,84,135,0,72,34,9,11,67,52,18,197,63,4,133,49,0,12,12,67,52,18,197,63,4,133,49,0,12,9,11,68,12,145,193,72,87,109,79,122,0,8,4,95,35,18,4,70,0,0,14,69,25,85,9,48,80,81,57,129,47,114,0,103,12,69,80,129,78,12,80,84,117,50,87,0,13,69,44,20,133,56,80,49,115,34,124,50,0,8,197,4,208,78,16,16,66,14,69,32,20,129,72,80,105,115,34,121,34,118,0,14,69,85,48,66,48,80,57,129,86,13,69,114,0,13,69,76,84,133,56,80,87,13,34,124,50,0,9,67,4,160,82,115,73,122,0,0,0,0,12,68,48,17,207,76,55,133,79,119,87,0,12,68,76,48,76,16,87,49,119,55,70,0,0,15,70,5,34,193,57,48,83,122,49,13,50,87,125,0,13,69,84,228,213,72,80,120,50,89,6,138,0,14,69,76,81,21,12,80,87,109,70,57,129,87,0,14,69,28,83,73,56,144,73,117,63,109,50,132,0,0,11,5,23,5,39,18,5,2,58,137,0,17,70,65,83,138,4,34,64,48,120,50,73,6,121,69,118,0,20,70,37,53,1,56,37,76,4,118,87,47,4,35,50,69,6,113,55,0,17,70,76,21,1,56,148,212,87,133,47,13,50,118,87,47,0,5,194,57,144,17,0,13,6,25,15,21,39,18,5,2,57,138,0,106,12,6,25,15,21,39,18,5,2,57,127,0,9,67,65,81,0,48,113,70,0,6,195,36,35,64,17,0,12,68,8,85,19,100,69,117,47,87,118,0,13,68,60,209,71,4,131,63,6,133,79,13,0,14,70,4,148,144,61,113,82,6,135,48,4,140,0,0,15,69,84,229,9,17,144,120,50,47,6,132,70,118,0,13,69,65,33,84,81,144,48,34,118,47,118,0,0,15,70,104,130,86,4,115,192,88,109,82,121,79,131,0,19,4,95,3,9,18,87,6,123,49,120,63,81,55,4,117,49,87,0,0,14,7,20,8,5,18,5,39,4,2,84,135,70,0,12,67,65,85,0,4,48,113,47,0,10,12,11,67,4,160,88,133,73,35,49,87,0,10,67,4,33,84,115,69,117,47,0,6,195,57,149,0,17,0,15,70,12,132,153,76,193,82,49,34,132,86,55,110,0,11,68,80,146,203,4,47,124,49,13,0,12,68,48,147,73,80,55,118,63,109,47,0,9,198,24,244,133,92,20,142,66,9,67,20,32,89,124,69,133,0,0,14,69,72,20,137,81,144,34,135,34,13,47,118,0,0,14,6,25,15,21,39,12,12,57,129,55,0,72,32,15,70,52,19,3,60,195,64,63,35,55,49,13,63,0,15,70,65,35,206,61,83,128,48,34,131,50,130,50,0,13,3,95,194,183,63,118,70,114,70,119,47,0,0,12,67,61,84,128,130,110,0,103,72,34,9,10,67,61,84,128,140,0,72,34,9,15,71,80,19,201,76,80,67,32,47,124,89,13,99,0,9,198,52,17,193,104,147,133,67,16,71,12,243,77,37,69,5,20,49,13,63,118,47,118,0,17,3,95,194,180,115,49,57,129,47,35,49,87,117,50,47,0,0,12,68,60,208,72,4,131,63,115,105,121,0,13,68,44,240,76,4,49,131,6,121,55,13,0,19,72,4,195,8,4,195,15,93,48,125,55,105,6,35,55,131,86,0,0,13,69,48,84,201,60,224,55,124,88,13,50,0,19,3,95,194,178,87,129,48,13,87,49,34,118,48,47,47,6,129,0,0,9,67,72,134,83,34,124,87,0,17,70,4,193,129,48,96,64,35,55,81,6,35,55,81,13,0,20,3,95,194,179,87,129,48,13,87,49,34,118,48,47,85,6,34,124,0,0,20,71,4,225,18,60,209,68,4,35,50,70,34,6,119,63,118,70,13,0,16,71,12,21,8,21,34,78,20,49,35,85,34,109,50,0,19,71,65,33,67,20,65,78,80,48,34,117,87,109,70,13,50,47,0,0,11,67,40,244,197,105,131,87,6,133,0,0,14,69,61,33,71,60,224,119,34,109,79,13,50,0,12,69,92,148,146,4,192,58,118,34,114,0,14,69,76,16,210,20,64,87,133,49,34,13,70,0,13,69,36,229,5,72,224,118,50,47,123,50,0,13,69,12,20,144,20,192,49,122,48,13,55,0,14,69,9,33,65,80,128,69,34,124,84,0,36,10,13,69,9,33,65,80,128,69,34,117,85,0,10,0,0,12,4,8,5,39,19,105,124,86,0,72,35,9,67,4,37,64,35,69,129,0,20,67,72,245,192,6,34,130,15,4,131,82,110,0,81,111,118,101,114,32,22,67,72,245,192,6,34,130,15,4,115,69,130,47,0,81,97,98,111,117,116,32,8,67,72,245,192,34,131,0,21,71,36,225,197,57,82,84,100,118,50,73,109,50,6,57,129,109,47,118,0,9,67,8,245,192,69,130,0,36,8,67,8,245,192,69,131,0,13,4,95,19,20,11,87,47,34,6,131,49,0,0,14,68,80,131,211,20,84,131,86,0,72,34,12,9,9,4,95,35,19,20,87,47,0,12,3,95,194,173,63,35,49,34,119,50,0,11,4,95,3,18,12,49,6,123,55,0,0,19,3,95,194,170,81,117,63,109,50,118,50,6,127,70,109,50,114,0,13,4,95,1,3,21,115,49,57,6,129,47,0,0,15,70,13,66,21,48,133,64,49,14,85,129,103,129,0,14,70,93,33,84,12,129,68,34,117,74,109,70,0,15,70,76,84,85,36,225,64,87,124,49,58,109,50,0,18,70,76,80,207,56,65,68,87,117,49,6,119,50,70,109,70,0,15,70,65,84,144,61,37,0,48,123,48,6,128,47,0,17,70,28,83,149,36,225,64,73,117,50,57,129,118,50,0,135,18,3,95,194,171,55,117,81,47,6,79,118,55,13,63,117,47,0,0,10,67,56,245,192,50,130,0,32,42,6,195,56,245,192,32,15,3,95,194,168,70,132,115,34,6,124,87,118,87,0,0,10,67,77,86,153,87,129,86,118,0,13,68,81,83,9,64,47,57,129,55,118,48,0,11,68,48,192,77,4,55,121,63,13,0,8,4,95,35,20,8,85,0,0,12,69,4,228,215,21,32,116,50,87,110,0,15,3,95,194,166,69,34,131,49,13,50,69,6,122,0,0,16,70,65,33,76,84,65,64,48,34,117,55,57,129,70,0,0,18,71,65,34,86,36,193,71,20,48,34,118,82,109,55,109,73,0,0,12,68,88,81,193,56,82,124,79,13,50,0,12,68,64,17,193,56,48,133,79,13,50,0,11,68,48,80,70,100,55,124,81,118,0,0,16,70,77,66,76,21,69,15,87,47,109,55,117,47,131,0,13,69,52,147,137,56,112,63,132,50,109,66,0,13,69,24,244,129,28,80,81,119,34,109,73,0,0,15,70,80,84,141,36,226,64,47,123,63,118,50,132,0,16,70,77,64,78,16,38,64,87,47,35,50,70,69,132,0,0,13,3,95,194,160,105,122,70,87,48,133,87,0,12,4,95,18,14,7,34,6,118,66,79,0,0,18,72,44,19,7,60,244,140,36,80,49,35,55,79,138,55,118,0,10,68,56,144,200,20,50,124,89,0,17,72,8,245,82,28,83,201,76,80,69,138,88,58,121,86,0,27,3,95,194,161,2,118,50,82,4,123,47,109,70,117,49,87,49,55,13,63,6,133,89,13,50,0,0,8,197,61,85,9,56,112,65,13,69,24,83,9,56,80,81,124,55,132,50,0,12,69,13,80,203,60,240,49,113,49,129,0,0,13,5,23,5,39,22,5,58,124,82,0,72,35,15,70,16,244,143,80,134,64,70,119,34,13,85,37,0,15,70,4,229,8,60,230,64,35,50,47,13,50,118,0,17,70,9,84,149,56,66,64,69,113,34,6,113,50,70,118,0,0,14,6,25,15,21,39,22,5,57,129,82,0,72,35,9,67,72,134,76,34,118,55,0,14,70,92,130,84,37,50,0,58,132,47,118,89,0,17,71,52,245,83,80,16,200,20,63,13,87,47,6,116,89,0,18,71,8,16,203,77,67,210,100,69,35,49,87,47,128,34,118,0,21,67,33,69,16,133,74,47,124,47,124,6,48,124,10,0,81,58,47,47,32,0,17,70,80,241,197,80,129,82,47,13,79,117,84,110,0,74,12,11,68,4,129,65,16,115,105,117,70,0,11,68,96,131,211,4,49,125,87,13,0,13,68,17,145,133,16,70,6,120,82,118,70,0,20,72,12,243,80,72,243,73,76,80,49,119,63,48,34,13,63,132,86,0,11,200,12,130,77,64,19,154,20,80,67,0,14,69,76,144,201,49,144,87,118,87,109,55,118,0,13,69,72,80,197,77,48,34,124,87,117,87,0,14,69,13,34,83,21,48,49,34,132,87,124,86,0,15,69,72,148,195,61,48,34,118,87,49,131,117,87,0,0,13,67,60,225,83,58,120,50,86,0,106,9,13,12,67,60,225,83,58,119,50,86,0,9,13,17,70,72,244,193,72,147,192,34,131,86,6,122,34,118,131,0,17,70,28,19,9,48,83,192,79,35,55,109,55,6,133,131,0,0,0,22,72,84,226,86,21,36,201,81,144,57,129,50,118,82,6,123,87,109,47,118,0,14,68,72,83,73,80,34,124,63,6,118,47,0,36,12,68,72,83,73,80,34,124,63,118,47,0,11,68,12,128,78,28,74,35,66,0,10,11,68,12,128,78,28,74,133,50,73,0,0,15,69,84,37,78,81,80,129,69,6,129,50,47,129,0,15,70,72,241,5,72,144,203,34,119,70,34,118,49,0,10,67,5,32,66,35,34,13,69,0,0,10,198,12,243,80,61,83,132,66,36,5,194,72,64,9,0,22,73,64,131,212,60,116,129,64,129,82,81,13,47,6,119,79,34,13,81,13,0,0,10,68,76,243,212,32,87,129,84,0,11,68,48,17,197,72,55,121,79,110,0,0,14,69,81,35,202,4,224,47,34,131,73,13,50,0,0,0,17,70,20,229,133,48,244,5,121,50,82,13,55,131,48,0,103,10,199,81,32,78,77,3,210,80,36,19,71,81,32,78,77,3,210,80,47,34,35,50,87,48,128,47,0,9,20,71,80,20,129,57,69,76,4,47,13,34,35,50,47,57,113,55,13,0,10,67,21,32,64,136,34,13,0,9,9,198,20,229,133,48,244,5,36,17,70,20,229,133,48,244,5,117,50,82,13,55,131,48,0,9,15,70,13,33,86,5,52,197,49,34,13,82,35,87,0,16,71,5,80,133,72,114,78,20,131,69,110,88,124,50,0,0,11,68,80,130,78,20,4,84,132,50,0,12,68,88,81,193,76,82,133,79,13,87,0,12,68,48,83,206,20,55,124,6,131,50,0,10,68,64,147,213,76,48,139,87,0,11,68,60,49,65,56,131,89,13,50,0,0,13,69,24,20,212,20,224,81,116,87,13,50,0,0,15,70,8,20,130,5,32,64,69,122,69,13,34,13,0,0,10,67,5,33,64,2,122,0,35,9,11,67,85,32,76,57,129,13,34,114,0,21,71,64,83,137,57,53,76,4,48,13,50,6,118,50,87,57,113,55,13,0,9,198,61,85,8,61,84,197,65,0,13,68,52,144,77,36,63,132,6,35,63,118,0,13,68,64,144,78,60,48,118,6,35,50,131,0,0,30,5,3,1,14,39,20,4,49,35,50,47,6,35,82,47,112,0,103,32,14,82,104,97,118,101,32,116,111,32,22,5,3,1,14,39,20,49,35,50,47,115,82,0,103,35,81,104,97,118,101,32,16,5,3,1,14,39,20,49,35,50,47,0,103,32,9,12,29,5,3,1,14,39,20,4,49,121,50,47,6,35,82,47,112,0,32,14,82,104,97,118,101,32,116,111,32,21,5,3,1,14,39,20,49,121,50,47,115,82,0,35,81,104,97,118,101,32,15,5,3,1,14,39,20,49,121,50,47,0,32,9,12,24,73,4,36,129,12,17,1,9,32,64,35,69,34,13,49,13,70,6,35,69,34,13,0,0,9,198,12,243,131,21,37,0,36,16,70,12,243,131,21,37,0,49,119,50,87,110,47,0,10,18,70,12,243,80,21,65,68,49,13,63,48,6,124,47,118,70,0,14,202,4,69,133,73,66,83,20,209,78,80,103,67,24,74,4,69,133,73,66,83,20,209,78,80,115,70,82,123,47,118,87,63,13,50,47,0,18,4,95,1,3,50,70,120,69,13,55,115,49,57,6,129,47,0,0,17,70,80,83,80,48,21,5,47,117,63,48,55,13,47,0,103,18,67,77,80,200,87,120,74,15,10,115,86,0,8,81,97,115,32,16,70,60,36,207,48,85,5,119,69,87,13,55,124,47,0,8,67,21,33,64,135,0,9,0,19,72,4,208,129,77,48,68,61,32,115,63,69,35,87,13,70,110,0,0,16,5,9,19,14,39,20,4,118,86,13,50,47,0,35,12,13,69,52,19,135,21,32,63,133,50,73,110,0,10,4,4,39,25,5,70,57,13,0,13,69,17,81,207,85,64,70,120,79,130,47,0,0,16,6,8,1,19,14,39,20,105,35,86,13,50,47,0,35,16,70,93,148,201,93,145,192,58,118,86,124,58,118,79,0,8,66,72,80,34,4,124,0,14,70,8,150,154,5,33,64,69,118,86,6,122,0,5,194,60,176,17,0,17,70,12,243,148,72,149,5,49,119,50,47,34,6,132,47,0,16,70,4,225,67,16,245,5,35,50,118,49,70,131,47,0,0,14,68,76,128,76,48,4,89,35,55,0,32,9,12,13,70,72,16,200,4,83,0,34,133,74,114,0,13,70,52,144,200,4,83,0,63,132,49,114,0,9,67,21,34,69,136,34,37,0,12,68,105,83,21,76,86,129,55,129,86,0,17,70,64,80,213,48,144,82,48,109,49,57,129,55,118,110,0,11,68,16,80,207,72,70,133,49,127,0,0,14,69,88,145,78,56,16,82,118,6,117,50,13,0,15,69,72,144,133,56,16,34,132,69,6,124,50,13,0,13,69,16,244,193,28,80,70,131,87,109,73,0,0,10,67,21,32,83,136,34,13,86,0,0,18,71,12,20,137,8,33,65,56,49,35,34,13,69,6,136,50,0,16,71,92,82,18,52,16,200,80,82,135,63,35,99,47,0,11,67,81,50,192,47,6,13,87,49,0,17,71,12,244,144,61,32,84,20,49,127,48,13,34,13,47,0,17,71,5,96,76,4,224,200,20,35,82,13,55,116,50,89,0,0,13,68,92,130,76,20,58,4,132,55,0,8,11,13,68,77,81,1,56,87,129,70,6,35,50,0,12,68,4,192,77,60,35,55,13,63,131,0,11,68,4,48,210,4,35,49,34,115,0,11,200,76,83,73,12,148,131,48,80,65,11,67,32,82,5,105,124,105,6,124,0,16,70,9,33,84,33,33,78,69,34,117,84,34,13,50,0,0,13,69,77,83,132,4,80,87,120,50,70,133,0,0,10,67,5,33,83,135,34,124,86,0,23,3,95,194,191,2,118,50,82,4,123,47,109,70,49,58,6,117,87,74,13,50,0,0,17,71,64,147,133,5,4,12,20,48,6,132,50,35,48,114,0,11,4,95,56,48,15,6,133,47,136,0,0,10,68,76,83,213,48,87,131,55,0,11,68,72,81,193,48,34,124,79,114,0,0,13,69,72,84,12,5,144,34,124,48,55,133,0,17,70,16,144,66,21,65,83,70,139,69,6,124,47,124,86,0,13,69,12,243,69,49,144,49,120,63,55,118,0,21,3,95,194,186,63,35,87,49,57,113,55,118,50,6,127,70,109,50,114,0,0,10,67,64,197,83,48,55,120,87,0,17,3,95,194,187,34,132,47,6,79,118,55,13,63,117,47,0,0,14,70,12,129,89,20,227,133,89,132,6,35,50,0,20,71,16,148,12,60,208,67,100,70,118,48,55,6,131,63,13,87,118,0,13,3,95,194,184,87,117,70,6,118,55,13,0,0,11,200,72,145,9,13,83,15,85,48,66,11,68,4,225,197,48,133,50,73,114,0,6,195,84,51,1,17,20,3,95,194,185,87,129,48,13,87,49,34,118,48,47,58,6,119,50,0,0,12,67,32,212,6,105,6,13,63,48,81,0,13,69,4,197,193,101,48,125,55,58,133,86,0,0,16,70,92,149,8,61,85,0,58,118,84,130,47,0,74,12,9,198,92,149,8,61,85,0,66,10,67,37,34,83,132,34,118,87,0,10,67,28,245,15,79,131,47,129,0,10,67,56,21,15,50,133,47,131,0,0,16,71,76,243,69,80,130,78,28,87,120,63,85,118,66,0,0,10,67,77,84,197,87,129,87,13,0,12,68,76,48,76,100,87,49,133,55,118,0,0,13,69,76,243,5,52,224,87,119,55,13,63,0,14,69,53,148,137,4,64,63,118,34,118,35,70,0,0,9,198,40,18,193,73,64,64,66,14,70,80,243,137,28,133,0,47,13,50,132,47,0,13,70,52,20,147,32,19,12,63,122,89,114,0,0,15,70,80,245,76,61,84,197,47,129,55,6,129,86,0,0,10,67,16,83,9,70,117,55,118,0,12,68,12,16,212,36,49,35,49,47,132,0,11,68,4,112,73,56,115,79,117,50,0,0,9,2,195,151,47,132,63,86,0,0,15,70,4,197,8,61,81,200,126,55,84,6,131,0,8,5,194,77,64,24,5,194,77,64,9,9,66,77,64,87,13,50,47,0,0,20,71,92,148,195,60,228,201,56,58,109,87,49,6,119,50,87,118,50,0,18,71,52,148,195,72,80,78,80,63,118,87,49,34,136,50,47,0,16,4,95,19,13,3,87,63,6,125,55,49,4,35,48,0,5,130,196,141,43,0,20,72,5,35,65,28,81,4,60,224,122,63,115,79,6,117,70,13,50,0,9,67,4,50,25,133,49,118,0,0,12,197,12,19,142,61,64,103,66,32,9,12,15,69,48,244,133,57,160,55,119,34,13,50,47,87,0,14,69,12,21,133,5,64,49,35,82,118,35,47,0,0,16,70,72,84,208,37,65,64,34,117,87,48,109,47,0,103,15,70,72,148,15,77,65,64,34,109,48,119,87,47,0,15,70,72,84,208,37,65,64,34,117,87,48,132,47,0,15,70,36,228,208,37,33,64,118,50,87,48,6,139,0,16,70,20,229,5,57,65,64,119,50,47,6,119,50,47,0,17,70,12,83,5,9,33,64,87,117,55,6,117,69,34,13,0,0,16,70,8,83,133,5,66,0,69,109,50,124,85,0,74,12,15,70,4,65,76,4,145,5,35,70,13,55,133,70,0,9,198,48,83,79,56,17,5,67,0,11,68,4,194,67,20,35,55,118,87,0,12,68,8,192,83,20,69,55,121,86,133,0,0,13,5,4,15,14,39,20,70,131,50,47,0,32,8,197,61,85,19,21,64,65,13,69,52,148,212,21,32,63,118,87,47,110,0,21,73,25,84,148,32,84,141,61,33,64,81,142,84,110,63,6,128,0,105,8,20,73,25,84,148,32,84,141,61,33,64,81,123,84,110,63,6,128,0,8,12,2,195,159,89,4,122,48,6,117,87,0,11,2,194,167,87,117,49,89,13,50,0,0,17,66,56,240,50,6,131,4,63,128,0,81,109,111,114,101,32,23,66,56,240,50,4,131,15,55,6,119,66,79,110,0,81,108,111,110,103,101,114,32,17,66,56,240,6,50,131,6,58,119,50,0,81,111,110,101,32,9,198,8,243,66,5,33,0,66,8,66,56,240,50,131,0,42,15,2,194,164,49,120,34,13,50,87,118,87,132,50,0,0,15,67,16,84,20,70,109,48,122,47,63,13,50,47,0,8,2,194,165,57,117,50,0,0,14,68,76,128,76,80,4,89,35,55,47,0,32,9,10,67,76,86,0,87,117,49,87,0,11,68,4,112,80,20,115,79,133,48,0,10,4,95,35,14,4,13,50,70,0,10,2,194,162,87,117,50,47,87,0,0,15,69,53,84,197,84,208,63,57,129,86,6,136,63,0,18,70,28,145,193,57,66,67,73,132,79,6,35,50,47,118,49,0,8,2,197,139,117,66,79,0,9,2,194,163,48,130,50,70,0,0,16,70,65,35,199,20,230,64,48,34,119,73,13,50,118,0,24,73,16,148,195,60,228,207,48,21,5,70,118,87,49,6,119,50,87,13,55,13,47,0,0,11,67,56,245,0,50,119,47,0,42,40,15,67,56,245,0,4,50,119,47,13,0,34,81,97,32,26,67,56,245,0,4,50,119,47,105,35,82,47,112,0,35,11,82,104,97,118,101,32,116,111,32,20,67,56,245,0,50,119,47,105,35,82,0,35,14,81,104,97,118,101,32,19,67,56,245,0,50,119,47,115,82,0,35,73,81,104,97,118,101,32,13,67,56,245,0,4,50,119,47,0,40,9,11,10,199,52,19,136,5,69,5,56,66,13,70,64,128,82,4,242,0,81,135,34,131,0,9,67,56,245,0,50,131,47,0,18,71,16,84,208,21,32,84,20,70,117,87,48,13,34,13,47,0,0,18,72,12,243,147,12,145,78,12,80,49,119,50,89,13,50,87,0,13,2,194,174,34,117,73,118,87,47,110,70,0,0,12,67,61,97,82,131,82,110,0,72,12,9,19,70,32,243,132,85,32,83,105,119,50,70,6,57,138,34,115,87,0,13,69,28,83,143,52,80,73,124,50,131,63,0,12,69,12,243,77,36,80,49,119,63,118,0,5,130,195,167,43,0,13,66,77,80,87,129,87,13,0,81,115,101,32,9,198,65,35,195,20,81,0,9,9,198,65,35,195,20,81,0,36,16,70,65,35,195,20,81,0,48,34,131,87,124,70,0,10,12,2,194,172,50,119,47,23,87,132,50,0,5,130,195,164,43,0,10,199,76,84,85,21,53,5,72,66,20,71,29,80,67,4,211,204,20,79,58,121,49,115,63,6,131,55,124,0,22,73,12,131,204,21,53,5,72,243,0,49,13,55,117,87,47,13,34,119,55,0,16,71,12,131,195,60,192,84,20,74,119,49,55,13,47,0,0,15,68,92,130,67,32,4,58,118,74,0,8,12,9,32,11,68,56,145,197,48,50,132,73,114,0,11,68,40,19,73,20,73,133,63,118,0,12,68,56,18,197,16,50,133,49,109,70,0,15,70,52,19,149,21,97,82,63,13,50,129,82,110,0,15,70,52,19,133,85,97,82,63,13,50,129,82,110,0,11,68,48,83,77,20,55,117,63,118,0,11,68,8,17,197,48,69,133,79,114,0,0,13,69,64,148,195,21,48,48,132,87,124,86,0,0,14,4,95,18,5,22,34,118,82,6,123,87,70,0,6,130,195,160,43,14,0,12,2,194,169,49,119,48,118,34,132,47,0,0,10,68,4,113,201,20,35,79,118,0,11,68,76,178,69,16,87,49,124,70,0,22,72,65,33,70,21,32,66,49,144,48,34,117,81,14,34,13,69,55,118,0,32,11,68,16,80,207,100,70,124,49,134,0,13,2,194,182,48,35,34,13,79,34,35,81,0,0,15,69,77,64,84,85,48,87,47,35,47,13,87,0,103,13,69,52,243,132,5,144,63,120,50,70,133,0,17,70,16,85,18,37,69,83,70,109,47,34,132,47,13,87,0,5,130,197,159,43,5,130,195,175,43,0,15,66,60,224,2,119,50,84,111,0,81,116,104,101,32,9,66,60,224,4,119,50,0,12,0,16,70,60,36,212,4,51,5,119,69,87,47,13,49,114,0,9,67,48,80,68,55,124,70,0,6,195,4,32,192,17,10,2,194,181,63,132,49,34,131,0,0,6,195,60,224,197,8,11,68,32,82,68,36,105,132,70,37,0,10,68,4,242,70,20,124,81,13,0,12,68,92,131,201,76,105,129,6,118,86,0,12,68,72,21,9,60,34,133,89,109,131,0,11,68,52,144,79,92,63,124,6,130,0,21,72,4,229,9,80,129,83,21,48,35,50,47,6,118,85,13,87,124,86,0,12,68,4,67,194,20,115,70,131,69,118,0,5,130,195,170,43,0,13,69,56,117,89,20,224,50,129,57,117,50,0,5,130,195,171,43,0,14,70,25,80,200,76,144,64,81,57,129,89,13,0,12,2,194,176,70,118,79,34,6,124,86,0,0,16,70,16,162,66,61,85,9,73,118,69,6,129,47,118,0,13,5,3,39,13,15,14,49,13,63,119,50,0,9,67,4,176,64,35,49,115,0,17,71,4,69,133,73,66,90,20,35,70,82,110,47,132,86,0,16,2,194,177,48,55,120,87,127,63,6,132,50,13,87,0,5,130,195,169,43,0,13,68,52,245,9,24,63,131,47,6,124,81,0,13,2,194,190,85,34,124,49,58,127,47,110,0,5,130,195,182,43,0,14,69,52,148,212,20,64,63,118,87,47,109,70,0,6,195,85,35,0,17,13,2,195,183,70,109,82,6,132,70,69,132,0,0,15,70,12,19,80,8,83,12,49,35,63,69,13,55,0,11,2,194,188,115,49,58,127,47,110,0,0,15,70,48,21,82,20,224,197,55,119,34,13,50,87,0,17,70,76,85,133,72,83,25,87,109,82,6,137,55,109,0,32,16,70,56,243,147,20,228,197,50,119,50,87,13,50,87,0,9,2,194,189,115,105,121,81,0,0,11,68,52,144,79,84,63,124,6,130,0,18,4,95,18,6,24,34,6,117,47,34,13,81,55,117,49,87,0,14,4,95,3,5,4,87,13,70,6,118,55,115,0,0,10,67,44,240,78,49,131,121,50,0,14,69,16,80,197,57,64,70,124,87,13,50,47,0,12,69,8,19,12,21,64,69,35,55,133,0,0,15,70,100,241,200,85,37,0,57,131,79,110,47,0,103,14,70,100,241,200,85,37,0,57,119,79,110,47,0,14,70,52,20,145,84,81,64,63,122,49,6,124,0,7,2,195,176,117,84,0,0,10,67,12,241,68,49,131,117,70,0,14,4,95,12,9,7,55,4,118,79,115,74,13,0,5,130,195,177,43,5,130,197,161,43,0,19,72,72,84,212,5,84,129,57,64,34,117,87,47,34,119,50,47,0,8,2,195,190,85,127,50,0,0,12,69,72,85,84,21,32,34,134,47,110,0,22,67,80,83,0,47,4,117,55,15,115,82,6,124,82,0,81,97,118,105,118,32,11,67,56,18,70,50,132,6,124,81,0,14,69,12,243,66,5,64,49,119,63,69,35,47,0,0,16,6,19,8,1,14,39,20,4,89,121,50,47,0,32,12,9,67,93,84,211,58,113,87,0,17,70,65,35,196,84,49,64,48,34,119,70,57,129,87,0,37,13,70,12,128,84,20,21,64,89,35,47,131,0,5,130,195,188,43,0,14,70,80,132,143,84,114,0,85,34,129,0,72,12,0,11,68,4,114,76,20,35,73,114,0,103,10,67,32,211,77,105,6,13,63,0,11,68,24,194,69,72,81,55,132,110,0,0,15,69,56,85,129,16,16,50,109,82,35,70,13,0,103,12,69,49,144,200,20,80,55,124,74,124,0,7,2,202,131,117,89,0,0,9,198,77,84,208,20,53,0,36,17,70,77,84,208,20,53,0,87,120,87,48,117,49,47,0,10,9,67,8,144,83,69,139,87,0,0,10,67,65,52,212,48,87,87,47,0,10,67,24,144,84,81,124,13,47,0,0,17,70,85,65,78,76,147,0,57,129,47,6,117,50,87,114,0,10,68,72,82,71,56,34,133,50,0,15,70,12,20,9,80,243,0,49,35,48,118,47,114,0,12,68,4,194,66,36,35,55,13,69,132,0,0,14,69,8,81,143,72,80,69,118,81,128,0,74,12,13,69,81,34,67,36,16,47,34,118,89,13,0,13,69,48,83,143,72,80,55,117,50,6,128,0,13,69,29,32,72,4,208,79,34,133,13,63,0,8,197,4,226,193,72,16,65,16,70,64,19,131,72,80,83,48,35,50,49,34,136,87,0,14,69,64,17,76,48,16,48,132,6,117,55,13,0,6,195,4,178,78,66,9,67,4,49,82,133,87,110,0,0,6,194,85,48,17,42,9,66,85,48,4,120,86,0,9,9,198,12,243,132,84,53,0,36,16,70,12,243,132,84,53,0,49,119,50,70,120,49,47,0,10,67,4,49,83,133,87,109,86,0,12,2,201,148,131,48,13,50,6,125,10,0,0,18,71,77,67,210,101,65,76,48,87,47,125,34,118,47,117,55,0,18,71,65,54,67,32,244,201,76,87,132,49,6,131,87,118,87,0,18,71,36,229,133,57,67,210,100,118,50,82,13,50,47,34,118,0,13,4,95,57,48,15,50,6,132,50,47,136,0,0,9,67,37,51,1,132,55,13,0,12,68,4,131,69,16,35,99,63,117,70,0,11,68,28,147,77,20,79,118,63,118,0,0,11,69,80,129,73,73,48,84,135,86,0,16,70,76,144,133,48,149,83,87,109,69,133,55,136,87,0,15,69,56,240,143,17,144,6,50,131,69,119,70,118,0,12,69,52,80,68,61,112,63,117,70,131,0,15,69,21,131,196,85,48,117,49,87,13,70,13,87,0,13,69,12,20,133,77,48,49,13,34,117,87,0,14,69,12,19,150,5,48,49,35,50,82,13,87,0,0,12,67,28,241,83,2,79,131,86,0,12,9,8,2,196,184,49,34,121,0,11,4,95,2,1,18,10,69,6,122,0,0,9,67,32,211,64,105,13,63,0,0,18,67,76,243,69,87,120,63,58,119,50,0,106,81,111,110,101,32,17,67,76,243,69,87,120,63,58,119,50,0,81,111,110,101,32,13,67,76,243,69,4,87,120,63,0,34,13,9,11,68,88,81,199,100,82,117,73,118,0,10,2,204,134,69,34,117,82,10,0,5,130,197,190,43,0,11,67,8,17,90,69,132,6,117,86,0,17,70,17,83,70,72,145,83,70,120,63,81,34,6,124,87,0,12,69,60,97,133,73,48,119,81,110,86,0,15,69,32,144,84,85,48,105,132,6,133,47,13,87,0,13,69,16,80,146,37,48,70,117,69,34,124,0,0,10,67,16,83,79,70,117,63,131,0,12,2,204,132,63,35,49,34,119,50,10,0,20,2,203,140,87,6,117,49,13,50,70,34,118,87,47,34,4,117,87,0,15,2,202,148,79,55,6,119,19,114,87,47,119,48,0,0,0,10,68,52,17,86,20,63,133,82,0,11,68,52,149,18,20,63,132,47,110,0,16,2,204,130,87,123,49,120,63,81,55,117,49,87,10,0,7,2,202,146,117,88,0,0,12,69,64,20,137,4,128,48,13,34,139,0,11,2,204,131,47,118,55,70,13,10,0,13,2,201,155,131,48,13,50,6,117,12,10,0,0,17,70,56,144,207,76,144,64,50,118,49,13,87,6,124,13,0,10,2,204,128,79,34,121,82,10,0,10,2,203,136,87,47,34,117,87,0,0,8,67,21,36,128,135,0,103,16,70,12,19,130,21,36,129,49,35,50,69,13,34,13,0,15,71,52,244,133,12,19,66,20,63,128,49,13,63,0,7,67,21,36,128,123,0,19,71,4,229,9,64,21,8,100,35,50,47,6,118,48,13,85,118,0,11,2,204,129,115,49,57,129,47,10,0,8,2,201,153,89,58,121,0,0,12,68,88,148,149,76,82,139,34,13,87,0,22,72,72,84,21,80,21,9,60,224,34,117,48,57,129,47,6,133,89,13,50,0,12,68,64,84,149,76,48,13,34,129,86,0,11,200,32,244,137,104,243,148,4,192,67,11,200,16,148,195,61,83,148,20,64,66,11,68,4,194,65,76,133,55,136,87,0,0,14,69,76,18,71,60,224,87,132,79,6,119,50,0,14,69,92,147,132,20,64,58,118,50,70,109,70,0,12,67,28,242,78,4,79,131,109,50,0,9,0,12,2,201,164,34,35,63,87,105,127,50,0,0,27,75,72,80,207,52,209,78,16,21,9,60,224,34,117,49,13,63,117,50,70,6,133,89,13,50,0,0,15,68,8,82,78,28,4,69,124,118,66,0,35,9,12,12,68,8,16,213,64,69,133,49,13,48,0,10,68,28,81,83,20,79,124,87,0,12,68,20,66,67,80,124,70,118,49,47,0,12,68,12,243,66,60,49,119,63,69,131,0,11,68,4,114,78,28,133,73,109,66,0,10,2,204,138,34,118,66,79,10,0,0,14,69,80,16,140,21,64,47,35,69,55,13,47,0,14,69,4,195,79,77,64,125,55,63,131,87,47,0,14,69,4,35,5,77,64,133,69,55,13,87,47,0,0,15,70,77,65,87,5,37,0,87,47,129,110,47,0,103,15,70,77,65,87,5,37,0,87,47,57,129,110,47,0,15,70,12,19,132,4,49,64,49,35,50,70,118,87,0,16,70,72,81,133,72,81,64,34,117,81,13,34,6,124,0,14,70,72,20,16,61,37,0,34,35,48,6,128,0,16,70,4,225,78,60,209,64,115,50,117,50,13,63,118,0,12,2,204,136,70,139,34,124,87,109,87,0,13,2,203,144,55,117,66,85,13,50,70,10,0,0,0,22,72,84,226,78,80,84,133,77,64,120,50,6,118,50,47,13,34,13,87,47,0,22,72,72,18,78,24,244,133,77,64,34,6,133,50,81,4,119,34,109,87,47,0,0,11,69,65,32,89,21,32,48,34,135,0,8,67,64,80,82,48,135,0,8,197,61,85,12,21,64,65,13,69,12,128,82,37,64,74,35,34,118,47,0,12,69,12,17,83,5,32,87,124,86,110,0,8,2,202,167,74,117,89,0,0,14,70,29,35,213,64,145,64,79,34,129,48,118,0,15,70,5,50,193,56,49,64,115,87,49,35,50,87,0,8,2,202,164,73,117,88,0,0,0,12,68,40,16,207,8,73,133,49,13,69,0,12,68,8,19,66,36,69,35,63,69,124,0,11,68,76,178,69,76,87,49,132,86,0,11,68,4,208,83,76,115,63,35,87,0,0,15,69,80,243,65,80,240,47,13,63,133,47,131,0,103,9,67,80,80,82,47,135,0,36,9,67,80,80,82,47,137,0,10,13,69,76,19,9,56,80,87,133,55,132,50,0,8,197,61,85,1,28,80,65,12,69,28,19,15,72,80,79,115,55,128,0,0,15,70,64,198,77,61,85,8,48,55,118,63,13,85,0,12,67,96,208,83,117,49,87,63,115,87,0,10,198,21,133,18,4,53,0,66,36,10,198,21,133,18,4,53,0,65,9,10,198,21,133,18,4,53,0,65,10,0,20,71,65,34,77,5,97,82,4,48,34,124,63,13,82,6,135,34,13,0,18,71,12,145,193,72,85,20,20,87,118,79,13,6,34,117,47,0,0,11,68,12,130,76,20,74,118,55,118,0,12,68,76,83,69,56,87,124,63,13,50,0,12,68,24,240,213,76,81,131,49,13,87,0,11,68,16,147,196,20,70,132,131,70,0,11,68,4,81,201,76,124,73,118,87,0,18,2,204,158,115,48,34,6,119,49,87,118,63,13,50,47,10,0,0,12,69,12,243,142,36,80,49,119,50,118,0,8,197,76,85,20,20,80,66,14,69,72,81,15,56,80,34,124,70,6,120,50,0,13,69,72,21,137,56,80,34,13,82,124,50,0,17,70,52,244,209,84,149,15,63,119,87,49,6,124,47,131,0,0,15,70,81,84,142,44,86,64,47,142,50,49,124,0,105,14,70,81,84,142,44,86,64,47,123,50,49,124,0,0,18,71,12,20,211,4,225,18,4,49,13,87,35,50,70,34,13,0,19,71,72,84,21,80,16,140,20,34,117,48,57,129,47,13,69,114,0,10,199,12,244,143,48,192,82,100,66,6,2,95,1,133,0,0,15,70,12,245,207,72,177,82,49,131,58,123,49,110,0,9,198,12,21,129,48,145,82,67,7,2,201,178,65,117,0,0,14,69,64,145,211,81,144,48,118,79,87,47,132,0,15,69,28,19,1,97,144,79,35,55,115,49,87,118,0,14,69,13,34,83,37,48,49,34,132,87,118,87,0,0,10,67,16,85,83,70,133,113,87,0,0,15,70,76,192,86,37,50,0,87,55,133,82,118,89,0,14,70,44,224,86,37,50,0,50,133,82,118,89,0,0,11,200,72,81,193,72,67,5,77,48,8,11,68,76,21,143,100,87,115,82,134,0,17,70,36,229,5,72,210,78,118,50,47,6,123,63,118,50,0,11,68,12,240,207,4,49,131,49,131,0,0,17,70,16,19,65,76,53,83,70,115,63,35,87,49,13,87,0,9,198,61,85,2,72,80,75,65,13,69,16,148,200,21,48,70,118,89,109,86,0,14,69,4,194,66,37,48,35,55,13,69,132,86,0,11,2,201,190,10,6,122,47,35,48,0,0,10,2,204,165,34,118,66,79,10,0,0,5,194,80,128,9,6,66,80,128,85,0,0,8,67,5,32,192,122,49,0,6,195,37,32,192,17,0,10,68,44,131,69,72,49,63,137,0,12,2,202,178,63,4,119,70,73,6,133,0,0,14,69,16,80,204,4,224,70,117,49,55,115,50,0,14,69,4,194,83,60,224,35,55,109,87,13,50,0,17,70,4,117,73,48,84,129,35,79,124,55,6,135,34,13,0,12,69,61,36,8,4,224,127,81,13,50,0,0,15,70,88,19,133,77,48,64,82,115,50,117,87,13,0,13,70,73,84,211,20,195,0,34,120,87,114,0,15,70,80,147,73,16,84,128,47,118,63,118,70,110,0,15,2,202,176,35,87,48,109,34,133,47,109,70,10,0,0,19,71,48,19,132,61,115,133,72,55,6,35,50,70,4,131,50,110,0,18,67,24,21,88,81,6,131,15,48,6,121,0,81,112,97,115,32,6,195,85,48,64,17,17,2,204,175,50,4,119,50,87,109,55,6,35,69,109,49,0,7,2,95,19,117,87,0,0,10,68,21,83,5,72,134,55,110,0,12,68,17,147,1,56,70,118,55,13,50,0,11,68,80,147,79,72,47,124,63,128,0,20,68,92,245,78,16,58,4,130,50,70,15,6,120,48,0,81,117,112,32,23,68,92,245,78,16,58,4,130,50,70,15,6,70,130,50,0,81,100,111,119,110,32,12,68,92,245,78,16,58,130,50,70,0,38,11,68,92,245,78,16,58,129,50,70,0,11,68,52,80,78,80,63,117,50,47,0,11,68,48,80,78,80,55,117,50,47,0,12,68,5,67,1,76,35,47,55,13,87,0,0,14,69,8,133,84,4,224,69,129,47,6,35,50,0,8,197,88,147,204,36,224,66,0,10,67,76,241,129,87,131,81,13,0,21,67,93,114,73,70,120,69,114,57,129,70,120,69,114,57,129,47,6,129,0,13,2,202,188,109,73,117,49,47,109,82,10,0,0,8,67,5,32,200,122,74,0,0,11,2,204,170,70,117,50,47,114,10,0,0,13,69,16,83,137,21,32,70,109,50,132,110,0,0,14,70,24,147,133,77,49,64,81,109,50,117,87,0,0,10,67,85,49,64,57,129,86,0,36,10,67,85,49,64,57,129,87,0,10,10,199,32,80,68,24,148,147,80,66,0,11,68,20,194,83,20,109,55,124,86,0,7,196,36,64,72,60,65,9,198,52,18,78,80,18,78,66,7,196,36,229,18,60,65,12,68,12,193,82,44,49,55,122,49,0,135,0,9,197,36,228,213,49,64,65,10,8,197,36,228,213,49,64,66,23,73,36,212,18,20,115,129,8,193,64,118,63,48,34,6,117,79,50,13,69,114,0,14,69,4,97,140,85,128,115,81,55,120,49,87,0,0,13,70,76,19,201,73,49,64,87,135,89,13,0,14,70,12,193,65,57,49,64,49,55,117,50,86,0,0,18,71,21,52,9,60,224,71,20,117,87,48,118,13,50,121,88,0,6,195,5,48,80,17,0,11,68,25,147,4,20,81,132,55,70,0,10,67,88,86,0,82,117,49,87,0,0,13,69,29,32,69,52,80,79,34,133,13,63,0,13,69,5,33,217,48,80,122,79,6,132,55,0,13,69,52,244,129,48,80,63,13,34,35,55,0,8,67,37,35,206,139,50,0,0,11,67,16,82,129,70,133,88,121,0,9,0,11,67,72,21,76,34,130,6,129,55,0,14,70,32,20,151,36,50,0,105,35,34,118,73,0,10,199,64,149,21,37,64,82,100,66,10,199,28,243,196,56,145,200,80,66,0,17,70,52,242,1,52,81,0,63,131,105,6,35,63,109,70,0,12,68,12,129,82,36,89,135,34,6,124,0,19,72,64,130,76,37,53,9,56,80,81,118,55,109,87,47,132,50,0,11,68,48,80,80,80,55,117,48,47,0,11,68,28,80,203,60,79,117,49,131,0,12,68,16,80,210,100,70,109,49,34,132,0,21,72,12,243,210,16,147,129,80,80,49,131,6,125,70,109,50,133,47,0,36,10,2,95,34,49,58,131,47,87,0,0,8,197,101,99,206,56,80,66,12,69,64,131,197,8,80,81,124,69,124,0,15,70,4,225,204,21,49,89,35,66,79,114,87,118,0,11,69,69,82,67,32,80,49,124,89,0,14,69,65,146,129,52,16,48,13,73,121,63,13,0,14,69,52,147,149,80,80,63,118,50,118,47,0,10,13,69,16,18,12,36,16,70,133,55,124,13,0,11,69,5,84,211,36,80,119,86,118,0,17,2,95,33,117,49,87,49,55,13,63,6,133,89,13,50,0,0,13,67,28,243,133,2,79,126,50,0,103,12,9,12,67,28,243,133,2,79,119,50,0,12,9,0,9,67,76,243,128,87,120,50,0,17,70,24,192,77,20,224,207,81,55,115,63,117,66,49,131,0,12,67,17,81,84,70,57,129,6,117,47,0,9,67,12,243,128,49,119,50,0,9,2,95,39,49,58,131,47,0,0,11,68,72,82,75,36,34,133,49,124,0,21,72,36,212,5,72,21,9,88,80,118,63,48,6,117,34,13,47,118,82,0,13,2,95,38,35,63,48,13,87,35,50,70,0,0,17,70,20,228,197,52,35,5,119,50,87,6,119,63,69,114,0,14,4,95,50,48,15,47,58,6,117,50,47,136,0,13,2,95,37,48,142,87,6,117,50,47,0,105,12,2,95,37,48,110,87,6,117,50,47,0,0,9,67,12,243,133,49,131,50,0,9,2,95,36,70,119,55,110,0,0,16,67,88,19,128,82,35,50,70,123,0,81,100,101,114,32,17,67,88,19,128,82,35,50,70,117,50,0,81,100,101,110,32,9,67,80,83,128,47,117,50,0,19,71,36,212,9,56,114,78,28,118,63,48,6,118,50,73,118,66,0,0,9,198,61,85,3,5,53,0,65,11,68,4,66,69,84,115,70,57,129,0,13,2,95,42,35,87,47,13,34,118,87,49,0,14,4,95,3,1,16,49,4,35,48,14,47,114,0,0,9,67,32,84,130,123,69,0,103,12,69,12,20,211,21,144,49,133,87,118,0,14,69,9,81,78,61,48,69,58,133,50,119,87,0,17,70,80,20,5,77,68,153,47,35,48,13,87,47,34,118,0,13,2,95,41,34,132,47,48,115,34,117,50,0,0,16,70,80,244,143,57,67,192,47,13,34,119,50,47,131,0,16,70,76,245,84,32,83,132,87,121,81,6,117,50,70,0,10,67,36,67,25,132,70,55,118,0,14,2,95,40,55,117,81,47,48,115,34,117,50,0,0,11,67,32,84,128,105,123,0,72,34,9,17,67,64,84,128,48,4,123,15,87,6,133,0,81,115,101,32,20,67,64,84,128,48,110,15,87,6,117,50,47,0,81,99,101,110,116,32,9,67,64,84,128,48,123,0,72,19,71,16,243,7,20,195,1,84,70,119,55,79,6,117,97,55,132,0,0,11,68,20,66,84,32,124,70,118,85,0,11,68,20,35,207,44,124,69,113,49,0,8,2,95,46,70,119,47,0,0,13,69,4,68,137,4,224,133,70,34,136,50,0,14,69,53,83,137,12,128,63,57,129,50,118,49,0,15,70,5,69,15,72,225,89,115,47,142,50,118,0,105,14,70,5,69,15,72,225,89,115,47,123,50,118,0,12,69,4,195,9,20,64,35,55,132,70,0,9,2,95,45,70,35,89,0,103,11,2,95,45,105,4,132,81,13,50,0,0,28,67,32,84,133,105,6,137,15,13,50,70,15,84,6,135,0,82,97,110,100,32,116,104,101,114,101,32,14,70,76,243,4,36,84,128,87,131,55,73,110,0,9,67,60,116,133,131,79,110,0,9,198,24,244,133,88,84,128,66,15,70,4,195,15,88,84,128,125,55,6,131,82,110,0,9,2,95,44,49,119,63,13,0,0,19,67,24,20,128,81,6,122,10,63,4,128,0,81,109,111,114,101,32,16,71,32,243,69,61,115,133,72,105,131,63,131,50,110,0,19,71,5,4,1,72,21,21,76,35,48,13,34,6,133,47,13,87,0,12,67,53,36,192,63,118,87,109,86,0,24,9,2,95,51,85,34,6,124,0,0,12,68,4,226,84,4,115,50,124,47,13,0,21,72,104,147,66,4,37,197,4,224,86,109,63,69,121,69,58,118,13,50,0,8,2,95,50,47,6,129,0,0,14,69,77,147,66,60,192,87,118,63,69,120,55,0,9,198,12,243,150,21,36,197,36,10,198,12,243,150,21,36,197,65,9,10,2,95,49,58,6,120,50,0,106,9,2,95,49,58,6,119,50,0,0,16,70,8,20,133,57,68,192,69,35,34,13,50,47,87,0,14,70,61,4,15,76,84,128,13,48,131,86,110,0,15,70,48,16,143,72,84,128,55,133,69,13,34,110,0,10,2,95,48,86,6,136,34,131,0,0,19,71,72,80,207,52,209,78,16,34,4,117,49,13,63,117,50,70,0,12,2,95,55,87,6,13,82,13,50,0,107,11,2,95,55,87,6,117,82,13,50,0,0,10,67,21,35,211,136,34,119,87,0,10,2,95,54,87,6,118,49,87,0,0,9,2,95,53,81,6,132,82,0,0,16,70,72,84,18,37,48,76,34,109,48,34,132,86,114,0,18,70,72,82,78,88,83,148,34,124,118,50,82,6,117,50,47,0,15,70,64,83,131,32,19,148,48,119,50,89,119,50,0,8,2,95,52,81,6,128,0,0,15,2,95,59,87,117,63,118,49,6,131,55,13,50,0,0,11,67,32,84,147,105,123,86,0,72,12,10,2,95,58,49,131,55,13,50,0,0,15,69,92,130,76,77,64,58,4,132,55,87,47,0,8,13,5,8,5,39,12,12,105,124,55,0,72,32,13,69,21,131,79,61,32,117,49,87,63,138,0,15,69,72,81,140,85,128,34,124,81,55,120,49,87,0,9,2,95,57,50,6,132,50,0,0,10,66,92,80,58,124,0,72,32,9,13,202,52,20,211,4,50,21,76,85,20,76,67,7,66,100,16,57,115,0,9,198,77,84,18,37,49,64,66,16,70,12,20,129,52,83,0,49,35,34,13,63,117,55,0,16,70,4,48,213,73,49,68,115,49,142,87,109,70,0,105,15,70,4,48,213,73,49,68,115,49,123,87,109,70,0,5,194,84,144,17,8,2,95,56,6,133,47,0,0,16,70,64,84,147,64,86,0,48,123,87,48,117,49,87,0,10,199,36,229,5,72,96,67,20,65,12,2,95,63,49,58,117,87,74,13,50,0,0,11,68,24,145,82,100,81,139,34,118,0,12,68,12,19,69,60,49,35,63,118,131,0,13,2,95,62,79,34,133,47,13,84,35,50,0,0,15,69,28,64,78,76,176,79,14,70,35,50,87,49,0,14,69,48,240,193,48,80,55,131,49,6,116,55,0,12,69,29,82,78,20,16,79,118,50,118,0,13,69,24,16,193,16,80,81,13,87,121,70,0,13,69,16,80,193,16,80,70,117,49,133,70,0,10,2,95,61,124,49,58,114,86,0,0,17,70,16,243,133,28,19,0,70,119,50,109,79,6,125,55,0,10,67,16,83,153,70,109,50,132,0,11,2,95,60,55,117,87,84,35,50,0,0,0,27,68,92,245,76,16,58,113,70,105,35,82,47,112,0,74,32,12,82,104,97,118,101,32,116,111,32,21,68,92,245,76,16,58,113,70,105,35,82,0,35,14,81,104,97,118,101,32,22,68,92,245,76,16,58,2,113,70,105,2,115,82,0,35,81,104,97,118,101,32,10,196,92,245,76,16,76,32,9,12,12,68,4,211,65,56,115,63,6,121,50,0,13,68,4,66,79,76,35,84,57,6,143,87,0,0,14,69,76,243,21,80,80,87,119,55,57,129,47,0,8,197,16,80,149,56,176,66,9,198,4,229,9,52,243,153,66,0,10,2,95,64,35,47,87,132,50,0,0,19,71,21,133,18,4,66,84,20,117,49,87,47,34,13,70,132,47,0,0,20,72,65,35,202,20,53,9,48,80,48,34,13,73,117,49,47,114,0,103,11,68,5,4,1,48,115,48,125,55,0,0,16,70,24,83,73,56,147,133,81,117,63,13,50,118,50,0,12,69,5,52,197,77,48,115,87,117,87,0,0,17,70,88,149,1,52,147,128,82,132,47,13,63,118,50,0,103,14,70,80,84,146,4,147,128,47,13,34,133,50,0,15,70,29,34,70,24,243,128,79,34,118,81,13,50,0,0,0,10,67,48,81,207,55,117,79,131,0,11,68,4,113,210,60,35,79,34,131,0,0,14,70,52,144,200,20,195,5,63,109,89,117,55,0,13,69,5,53,12,21,144,35,87,47,55,118,0,18,70,12,20,143,48,147,129,49,35,34,13,55,6,132,50,13,0,9,198,84,208,146,20,195,1,66,15,70,80,244,148,36,195,1,47,127,47,6,124,115,0,15,69,77,80,148,49,144,87,120,47,13,55,118,0,32,17,70,72,81,137,56,84,153,34,109,81,132,50,13,34,118,0,13,69,52,245,84,33,48,63,130,84,86,0,9,12,201,24,244,133,76,131,210,80,83,128,66,17,70,12,243,148,72,20,153,49,119,50,47,34,13,34,118,0,12,4,95,226,128,163,69,113,55,109,47,0,0,19,70,25,35,206,80,83,132,81,34,6,120,50,47,4,117,50,70,0,16,4,194,182,194,182,48,35,34,13,79,34,35,81,87,0,12,4,95,226,128,162,69,113,55,109,47,0,0,10,67,4,64,64,133,70,13,0,10,15,4,95,226,128,161,70,120,69,114,70,35,79,110,0,0,11,68,48,20,197,72,55,133,86,110,0,11,68,24,147,210,16,81,124,127,70,0,16,70,8,16,203,20,225,0,69,35,49,6,117,50,70,0,11,4,95,226,128,160,70,35,79,110,0,0,12,67,92,129,78,4,58,117,50,0,15,10,12,67,92,129,78,58,2,117,50,0,12,10,16,70,65,33,78,80,144,197,48,34,117,50,47,118,87,0,14,69,36,211,199,20,224,118,63,13,73,13,50,0,8,197,4,81,197,4,224,66,0,16,70,4,225,197,48,84,192,35,50,73,13,55,124,86,0,15,7,6,1,195,167,1,4,5,81,13,87,121,70,0,15,4,95,226,128,166,118,55,6,118,48,87,118,87,0,0,6,195,85,48,128,17,13,4,95,226,128,165,47,129,70,119,47,87,0,0,10,4,95,226,128,164,70,119,47,0,0,14,69,4,193,146,20,64,35,55,81,34,109,70,0,10,67,4,192,78,35,55,13,50,0,12,69,72,82,78,20,64,34,133,50,70,0,14,69,32,21,18,20,64,105,133,47,34,109,70,0,15,4,95,226,128,155,55,117,81,47,49,58,131,47,0,0,15,70,52,83,80,32,148,192,63,117,63,81,109,87,0,13,4,95,226,128,154,55,131,49,58,131,47,0,0,15,70,76,21,67,21,0,78,87,125,87,48,13,50,0,14,4,95,226,128,153,34,132,47,49,58,131,47,0,0,14,68,28,242,78,28,4,79,131,109,66,0,12,9,10,67,4,193,67,35,55,118,49,0,14,70,48,83,208,5,33,0,55,117,48,13,70,0,10,68,28,21,71,20,79,133,73,0,15,4,95,226,128,152,55,117,81,47,49,58,131,47,0,18,4,95,4,15,20,58,118,84,70,6,119,47,115,69,120,82,0,0,14,69,21,132,5,73,64,117,49,87,48,123,47,0,13,69,4,211,213,57,64,115,63,130,50,47,0,16,4,95,226,128,159,55,117,81,47,49,58,131,47,87,0,0,18,70,81,34,66,84,224,76,47,34,132,69,6,57,129,50,114,0,11,67,56,22,137,50,116,47,87,118,0,14,70,28,148,129,24,97,64,73,109,34,116,81,0,10,67,4,64,77,35,70,13,63,0,14,4,95,226,128,158,55,131,49,58,131,47,87,0,0,11,67,76,129,64,89,124,0,72,9,33,15,4,95,226,128,157,34,132,47,49,58,131,47,87,0,15,2,95,91,55,117,81,47,69,34,35,49,109,47,0,0,16,70,65,33,67,21,5,0,48,34,124,87,117,48,47,0,11,200,52,18,78,80,18,78,21,32,66,11,68,32,82,83,80,105,132,87,47,0,16,4,95,226,128,156,55,117,81,47,49,58,131,47,87,0,0,16,70,52,148,211,61,84,137,63,118,86,6,138,34,118,0,16,70,60,34,84,84,20,153,119,69,6,118,74,138,118,0,10,67,20,65,78,124,70,13,50,0,14,69,12,21,143,73,64,49,115,82,6,127,47,0,10,4,95,226,128,147,70,35,89,0,0,16,70,76,243,69,60,225,64,87,120,63,58,120,50,0,106,15,70,76,243,69,60,225,64,87,120,63,58,119,50,0,19,66,76,240,87,6,131,15,63,4,120,74,0,81,109,117,99,104,32,20,66,76,240,87,4,131,15,63,6,117,50,118,0,81,109,97,110,121,32,18,66,76,240,87,6,131,15,81,4,122,0,12,81,102,97,114,32,10,66,76,240,4,87,131,0,12,32,16,70,29,33,68,36,83,148,79,34,124,70,136,50,47,0,16,70,16,80,129,12,193,64,70,133,69,6,121,49,114,0,6,194,88,144,17,42,5,194,84,176,17,10,4,95,226,128,146,70,35,89,0,0,13,70,4,19,9,100,18,0,13,55,124,13,0,12,4,95,226,128,145,105,132,81,13,50,0,14,2,95,95,6,120,50,70,110,87,49,4,128,0,0,12,68,72,148,197,56,34,118,86,13,50,0,12,68,72,85,18,100,34,124,47,34,132,0,9,67,12,130,67,89,124,49,0,11,67,4,192,83,115,55,6,35,87,0,11,4,95,226,130,160,57,138,34,131,0,12,4,95,226,128,144,105,132,81,13,50,0,17,2,95,94,87,141,49,120,63,81,55,4,117,49,87,0,105,16,2,95,94,87,123,49,120,63,81,55,4,117,49,87,0,0,6,195,76,243,206,32,15,69,8,80,193,52,80,69,118,49,133,63,0,74,12,10,67,36,51,206,132,49,119,50,0,13,69,12,19,137,56,80,49,133,50,132,50,0,14,2,95,93,34,132,47,69,34,35,49,109,47,0,0,10,67,64,84,149,48,13,34,129,0,16,70,56,18,82,60,34,64,50,132,34,6,131,69,118,0,18,70,9,81,1,64,84,212,69,129,70,13,48,6,117,87,47,0,15,70,77,83,132,36,19,0,87,120,50,70,139,55,0,9,67,76,130,65,89,124,13,0,27,74,52,144,210,60,244,135,4,226,83,52,63,132,49,34,131,6,127,79,13,50,118,86,13,63,0,15,4,95,226,128,150,70,4,120,69,114,69,6,122,0,0,20,4,95,226,128,149,105,119,34,109,86,4,119,50,47,114,69,6,122,0,0,27,68,12,245,76,16,49,113,70,105,35,82,47,112,0,74,32,12,82,104,97,118,101,32,116,111,32,21,68,12,245,76,16,49,113,70,105,35,82,0,35,14,81,104,97,118,101,32,20,68,12,245,76,16,4,49,113,70,115,82,0,35,81,104,97,118,101,32,14,68,12,245,76,16,2,49,113,70,0,32,12,9,22,72,65,35,208,4,112,78,16,16,48,34,119,48,13,79,6,35,50,70,13,0,13,68,60,20,201,76,131,6,133,87,109,87,0,12,68,16,83,79,56,70,124,63,13,50,0,11,68,12,243,69,72,49,120,63,110,0,9,68,12,241,85,72,49,123,0,12,4,95,226,128,148,117,63,70,35,89,0,0,16,70,76,19,65,57,66,1,87,13,63,35,50,85,13,0,14,69,72,85,9,56,16,34,117,47,118,50,13,0,14,69,72,81,201,52,80,34,133,88,6,124,63,0,16,70,56,84,5,57,66,5,50,109,48,117,50,85,118,0,15,69,53,85,1,80,80,63,57,129,47,6,133,47,0,23,73,4,197,5,72,224,84,20,198,64,125,55,47,6,123,50,13,47,55,118,0,32,0,9,198,61,85,2,4,50,192,65,12,2,95,96,69,35,49,48,34,132,63,0,0,17,71,76,245,78,16,34,84,20,87,130,50,70,69,132,47,0,0,11,67,60,130,79,131,105,6,132,131,0,11,68,12,18,82,60,49,132,34,131,0,9,198,61,85,13,61,53,0,65,11,68,8,20,193,48,69,133,87,114,0,20,72,5,34,84,32,209,84,36,48,115,34,118,85,63,13,47,118,49,0,0,8,67,12,129,82,89,135,0,14,69,52,244,129,77,48,63,119,34,6,35,87,0,16,70,16,148,195,37,3,5,70,118,87,6,132,48,114,0,12,69,4,148,130,85,48,135,69,120,87,0,12,4,95,51,48,15,85,6,123,47,136,0,0,11,67,81,83,129,47,57,129,50,13,0,15,70,24,195,213,72,148,200,81,55,123,109,89,0,103,15,70,24,195,213,72,148,200,81,55,120,34,109,89,0,0,9,67,72,147,192,34,124,131,0,9,198,12,243,21,52,37,83,66,9,67,48,83,192,55,124,131,0,18,71,32,84,133,80,144,193,48,105,109,34,117,47,109,49,114,0,16,70,25,34,78,28,147,135,81,34,118,50,73,118,66,0,12,201,12,131,15,72,244,12,5,53,0,65,8,67,4,195,64,121,63,0,0,20,72,69,80,84,21,35,129,73,144,49,58,13,47,123,50,13,34,118,0,11,68,32,245,212,60,105,130,47,129,0,12,68,12,243,69,80,49,119,63,109,47,0,0,14,69,13,148,18,85,48,87,132,48,34,13,87,0,13,69,36,229,18,5,144,118,50,47,34,133,0,0,15,70,52,244,143,12,51,192,63,13,34,119,49,131,0,10,67,88,148,193,82,124,86,13,0,10,67,88,20,197,82,121,86,0,135,9,198,80,240,129,12,51,192,66,5,194,100,64,17,12,4,95,7,18,22,79,34,6,121,82,0,0,10,67,20,66,84,117,70,118,47,0,0,13,68,53,83,20,36,63,120,55,47,132,0,103,13,68,4,35,214,20,13,69,120,82,0,74,12,12,68,16,82,84,100,70,133,13,47,118,0,12,68,8,148,207,56,69,132,87,13,50,0,0,13,69,12,129,82,100,192,89,117,34,109,55,0,15,69,84,229,201,56,64,120,50,58,6,132,50,70,0,17,69,48,149,133,12,64,55,6,132,82,87,124,70,6,124,0,13,69,21,36,129,56,64,117,34,13,50,70,0,0,16,70,16,243,73,56,144,192,70,119,63,109,50,118,49,0,10,67,56,20,193,50,35,87,115,0,0,11,67,4,193,88,35,55,118,49,87,0,12,201,4,99,210,20,209,78,80,147,206,66,0,0,13,69,28,244,208,20,192,79,119,87,48,114,0,23,73,12,128,82,37,51,65,80,144,192,49,35,34,118,87,63,6,35,47,118,49,0,12,69,12,128,80,20,192,74,35,48,114,0,9,198,4,195,19,64,144,197,65,0,15,70,44,19,142,4,64,64,49,121,50,13,70,13,0,17,70,60,49,65,56,144,192,131,89,118,6,35,50,118,49,0,0,9,67,12,243,208,49,129,48,0,19,71,12,243,77,84,226,84,100,49,13,63,57,129,50,109,47,118,0,10,199,4,229,9,12,194,78,20,65,0,22,73,56,243,69,56,51,1,81,84,133,50,13,63,117,66,49,55,13,74,110,0,12,68,12,195,211,20,49,55,131,86,0,36,12,68,12,195,211,20,49,55,131,87,0,9,21,72,4,67,79,56,149,9,60,224,35,70,63,13,50,6,118,89,13,50,0,0,13,69,12,195,211,21,32,49,55,131,87,110,0,12,69,9,81,134,21,64,69,120,81,133,0,16,69,4,36,197,57,64,35,69,87,6,117,50,47,0,36,15,69,4,36,197,57,64,35,69,87,13,50,47,0,10,15,69,4,36,197,57,64,35,69,87,6,117,50,47,0,0,14,70,52,144,200,20,193,64,63,109,89,117,55,0,15,70,76,80,84,80,193,64,87,124,6,35,47,114,0,14,70,12,243,15,28,225,64,49,13,55,131,50,0,0,13,2,95,123,55,117,81,47,69,34,133,87,0,13,4,95,4,9,1,6,113,63,55,130,47,0,0,18,72,81,35,213,8,17,15,85,32,47,34,129,69,13,70,128,0,9,67,8,20,211,69,133,87,0,20,4,95,226,128,188,117,49,87,49,55,115,63,6,133,89,13,50,86,0,0,15,69,16,241,83,57,64,70,120,86,13,50,47,0,32,16,70,76,16,143,80,17,197,87,35,69,13,47,121,88,0,16,70,36,229,5,72,225,69,118,50,47,6,123,50,124,0,23,73,12,21,1,77,68,143,64,129,64,49,115,47,35,87,47,34,13,81,2,118,0,15,4,95,226,128,179,70,120,69,114,48,34,132,63,0,0,15,70,32,244,212,36,193,64,105,119,87,47,114,0,103,14,70,24,84,148,36,193,64,81,123,47,114,0,103,9,66,80,240,47,129,0,72,42,9,66,80,240,47,129,0,72,14,23,66,80,240,47,129,13,50,70,81,34,6,131,0,82,97,110,100,32,102,114,111,32,16,66,80,240,2,47,113,10,47,112,0,32,81,116,111,32,16,66,80,240,47,13,15,6,69,124,0,14,81,98,101,32,15,66,80,240,47,13,69,2,118,0,35,81,98,101,32,8,66,80,240,47,112,0,32,7,66,100,80,57,124,0,9,198,85,1,210,4,65,64,36,10,198,85,1,210,4,65,64,65,10,11,67,65,83,153,48,57,129,50,118,0,14,70,12,128,82,4,65,64,89,115,34,121,70,0,11,4,95,226,128,178,48,34,132,63,0,0,11,67,92,134,64,4,58,132,0,12,10,9,67,20,198,64,124,55,118,0,9,198,65,35,199,72,84,211,36,18,70,65,35,199,72,84,211,48,34,119,79,34,117,87,0,103,9,17,70,65,35,199,72,84,211,48,34,131,79,34,117,87,0,9,0,13,4,95,226,128,176,48,123,63,6,124,55,0,0,14,69,28,20,129,28,80,79,115,34,121,88,0,103,13,69,16,83,137,76,80,70,13,50,124,87,0,11,69,5,32,200,36,80,122,74,118,0,15,69,8,241,207,80,16,69,119,79,13,47,6,121,0,14,69,84,224,66,48,80,120,50,6,133,69,114,0,12,2,95,125,34,132,47,69,34,133,87,0,0,19,70,12,243,148,72,20,212,49,119,50,47,34,6,35,87,47,0,36,10,2,95,124,82,124,69,6,122,0,0,13,67,92,128,84,4,58,120,47,0,103,12,10,12,67,92,128,84,4,58,119,47,0,15,10,12,67,92,128,84,58,2,119,47,0,12,10,19,71,80,83,5,64,131,206,100,47,117,55,6,117,81,13,50,118,0,0,8,67,76,129,87,89,131,0,12,68,25,85,15,56,81,129,47,119,50,0,16,70,21,21,65,80,147,206,109,49,58,133,88,13,50,0,11,68,20,98,76,20,124,81,132,55,0,14,70,12,243,15,72,81,0,49,120,55,110,70,0,9,68,4,148,204,20,139,55,0,16,4,95,226,128,180,47,34,118,48,114,48,34,132,63,0,0,12,69,76,244,8,36,80,87,131,81,118,0,15,70,4,36,201,57,66,5,35,69,87,118,50,85,0,0,16,70,61,97,82,80,198,64,131,82,6,123,47,55,118,0,0,15,71,72,145,200,80,83,213,76,34,132,74,13,87,0,18,71,72,21,9,60,224,76,20,34,35,89,13,50,6,35,55,0,0,18,70,9,80,200,4,224,78,69,57,129,49,6,35,50,13,50,0,9,67,92,129,87,81,57,129,0,0,14,69,28,192,68,101,48,79,55,35,70,118,87,0,22,73,65,54,67,32,144,84,72,148,212,87,132,49,6,139,47,34,118,87,47,0,14,69,4,48,197,77,48,35,49,87,117,87,0,36,14,69,4,48,197,77,48,35,49,87,117,87,0,10,0,9,198,76,128,77,64,243,192,66,16,70,48,243,135,4,115,192,55,119,66,79,13,79,131,0,0,17,70,32,80,146,36,65,83,105,117,69,34,13,70,124,86,0,14,70,12,130,83,92,144,203,74,118,86,118,49,0,0,10,67,76,147,15,87,132,55,131,0,11,68,61,85,5,16,130,47,109,70,0,16,70,52,145,5,5,53,0,63,118,70,6,124,87,47,0,12,68,4,226,77,20,35,50,118,63,133,0,0,0,9,198,76,21,129,56,224,72,66,6,194,84,224,17,42,0,20,67,92,19,12,58,6,125,55,87,47,34,4,124,47,0,81,115,116,32,9,67,64,243,12,48,131,55,0,18,71,64,145,67,20,209,65,48,48,6,124,87,63,4,124,55,0,20,71,4,197,77,36,226,85,52,35,55,57,113,63,6,118,50,136,63,0,0,10,67,80,241,15,47,13,70,129,0,11,68,76,21,68,36,87,130,70,118,0,25,73,12,243,131,36,194,65,80,244,153,49,119,50,87,6,118,55,118,13,47,13,34,118,0,0,15,69,64,243,9,76,128,48,131,55,118,89,0,41,9,13,69,5,33,217,48,192,122,79,38,132,55,0,13,69,73,81,199,20,64,34,120,79,109,70,0,9,197,72,80,193,48,192,66,36,13,69,72,80,193,48,192,34,124,49,125,55,0,13,69,48,144,200,20,224,55,132,49,13,50,0,14,69,9,83,137,60,224,69,120,50,109,13,50,0,0,14,70,64,149,5,61,84,192,48,118,47,136,87,0,17,70,5,50,65,80,144,192,133,89,118,6,35,47,118,49,0,0,18,71,80,81,4,100,33,65,72,47,6,117,70,118,69,4,135,0,18,71,16,19,132,20,194,79,56,70,35,50,70,109,55,139,50,0,0,12,68,12,195,212,32,49,55,131,84,0,36,12,68,8,20,201,76,69,133,87,118,87,0,0,13,69,72,81,201,60,224,34,124,73,13,50,0,15,69,28,147,5,4,64,79,6,118,55,118,35,70,0,0,15,70,52,147,133,73,96,64,63,109,50,123,82,13,0,15,70,85,49,76,21,52,192,57,129,87,55,13,87,0,0,16,71,52,83,2,61,84,142,20,63,117,55,69,110,50,0,11,67,61,1,68,119,48,6,117,70,0,18,71,4,49,84,100,193,78,20,115,87,117,47,13,55,124,50,0,0,6,195,97,134,0,17,0,17,70,21,53,9,52,21,5,117,87,47,109,63,133,47,0,36,14,69,12,195,211,21,64,49,55,119,86,109,47,0,0,14,70,48,82,83,85,33,64,55,6,117,88,110,0,11,4,95,35,51,50,87,48,133,87,0,0,11,67,85,64,72,57,129,106,126,0,103,10,67,85,64,72,57,129,106,121,0,0,13,68,4,211,206,28,115,63,120,66,0,74,12,10,67,44,147,15,49,124,55,131,0,12,68,4,114,83,80,133,73,118,87,47,0,0,14,69,65,33,83,21,64,48,34,124,87,117,47,0,13,69,33,83,135,21,32,105,120,66,79,110,0,9,198,21,53,18,4,225,197,66,13,69,13,85,15,85,64,49,120,47,130,47,0,13,69,12,243,135,21,32,49,119,66,79,110,0,0,15,70,76,129,82,36,97,128,89,6,117,34,109,81,0,14,70,76,49,80,81,33,64,87,117,48,47,110,0,15,70,52,16,200,21,65,64,63,115,89,117,47,118,0,14,70,5,36,197,56,19,0,122,87,13,50,114,0,0,0,12,68,72,84,201,56,34,117,86,118,50,0,0,13,69,24,19,73,56,80,81,35,63,118,50,0,9,198,4,229,9,8,241,25,65,18,70,4,36,197,57,66,65,35,69,87,6,117,50,47,124,13,0,0,9,198,24,20,133,92,83,12,66,9,198,12,243,148,72,16,212,36,10,198,12,243,148,72,16,212,65,10,0,15,67,92,147,12,58,118,55,47,112,0,81,116,111,32,9,195,92,147,12,76,9,32,12,10,199,88,19,131,61,85,133,72,66,17,70,72,129,84,61,34,67,34,117,47,13,34,118,49,0,10,19,71,36,224,78,36,208,84,20,118,50,6,35,50,118,63,13,47,0,20,71,36,115,143,72,19,85,76,118,79,50,128,34,6,133,63,13,87,0,0,22,72,64,19,5,77,66,78,36,16,48,35,55,13,87,47,6,118,50,124,13,0,21,72,12,147,131,36,227,129,80,144,87,118,50,87,118,50,6,35,47,118,0,6,195,4,65,147,17,0,23,73,72,85,1,48,144,84,61,38,64,34,109,47,35,55,124,13,47,13,34,118,0,23,73,72,84,208,37,32,84,61,38,64,34,109,87,48,118,34,13,47,13,34,118,0,13,69,64,84,149,76,80,48,13,34,129,86,0,15,69,16,148,213,76,80,70,118,87,6,57,129,86,0,0,9,198,61,85,12,60,242,192,65,5,194,97,144,17,0,10,199,4,227,206,100,211,213,76,66,0,14,68,16,242,78,28,4,70,129,109,66,0,12,9,20,72,16,81,137,56,149,9,88,80,70,109,81,118,50,109,47,118,82,0,10,68,8,242,78,28,69,134,66,0,0,15,69,52,145,4,5,144,63,4,118,70,70,6,133,0,13,69,24,17,67,21,48,81,124,87,124,86,0,0,10,67,28,19,1,79,121,55,13,0,0,0,12,68,12,197,217,16,49,55,129,118,70,0,18,72,72,83,132,21,165,143,85,48,34,119,50,70,109,82,129,0,0,16,70,88,243,1,80,147,5,82,119,55,115,47,114,0,103,9,198,44,83,148,84,50,217,66,14,69,72,83,69,17,144,34,117,63,13,70,118,0,17,70,64,20,129,8,243,1,48,13,34,35,69,13,55,13,0,0,11,67,60,18,21,131,6,121,105,129,0,15,70,48,147,131,60,195,128,55,118,50,49,13,50,0,16,70,36,229,5,72,225,84,118,50,47,110,50,117,47,0,0,18,67,92,149,8,58,2,118,84,84,111,0,34,81,116,104,101,32,10,67,92,149,8,58,118,84,0,72,8,67,5,52,192,35,87,0,0,17,70,36,229,5,73,97,78,118,50,47,110,82,6,124,50,0,15,70,12,243,77,20,229,0,49,119,63,117,50,47,0,0,15,70,12,19,12,36,244,5,49,115,55,139,48,118,0,13,69,16,19,137,76,128,70,133,50,118,89,0,13,69,72,17,199,20,64,34,35,79,109,70,0,13,69,40,17,199,20,64,73,35,79,109,70,0,13,69,16,241,199,20,64,70,119,79,109,70,0,0,12,70,40,16,209,84,84,192,88,35,49,0,0,0,10,68,61,85,5,72,130,47,110,0,15,70,12,243,77,20,225,0,49,13,63,117,50,70,0,12,68,5,4,143,56,133,48,34,13,50,0,0,16,69,8,83,135,4,192,69,4,117,50,79,6,125,55,0,13,69,92,83,23,100,224,58,117,55,118,50,0,12,69,92,147,135,20,64,58,118,66,70,0,12,69,64,147,135,20,64,48,118,66,70,0,14,69,24,244,141,36,64,81,127,63,6,118,70,0,13,69,8,19,135,20,64,69,35,66,79,70,0,0,9,67,76,149,5,87,132,47,0,9,198,60,211,137,9,84,192,65,16,70,52,147,137,9,84,192,63,118,50,118,69,120,87,0,0,9,67,33,85,192,105,57,129,0,17,71,64,20,211,20,225,197,72,48,35,87,109,50,73,110,0,17,71,12,128,77,64,17,206,20,89,35,63,48,6,133,50,0,0,0,13,69,44,147,20,21,32,49,118,55,47,110,0,10,67,12,19,22,49,35,82,0,103,9,67,12,19,22,49,121,82,0,0,9,198,16,84,208,37,65,64,8,11,67,92,22,25,58,35,49,87,118,0,15,70,72,84,212,37,97,64,34,117,87,47,118,82,0,10,198,52,19,132,5,65,64,66,36,16,70,16,85,5,57,65,64,70,133,47,6,119,50,47,0,0,31,7,13,21,19,20,14,39,20,63,6,120,87,50,47,105,35,82,47,112,0,35,82,104,97,118,101,32,116,111,32,26,7,13,21,19,20,14,39,20,63,120,87,50,47,105,115,82,0,35,77,81,104,97,118,101,32,16,7,13,21,19,20,14,39,20,63,120,87,50,47,0,32,0,32,8,23,15,21,12,4,14,39,20,4,58,113,70,50,47,35,82,47,112,0,32,12,82,104,97,118,101,32,116,111,32,27,8,23,15,21,12,4,14,39,20,58,113,70,50,47,13,82,0,73,35,12,81,104,97,118,101,32,11,68,13,84,147,20,49,142,87,0,105,10,68,13,84,147,20,49,123,87,0,0,33,9,19,8,15,21,12,4,14,39,20,6,89,113,70,50,47,35,82,47,112,0,32,12,82,104,97,118,101,32,116,111,32,28,9,19,8,15,21,12,4,14,39,20,89,113,70,50,47,105,13,82,0,35,77,81,104,97,118,101,32,21,9,19,8,15,21,12,4,14,39,20,4,89,113,70,50,47,0,32,12,9,14,69,21,129,84,21,32,117,49,87,118,47,110,0,23,73,72,17,9,60,16,212,37,97,64,34,133,70,109,131,6,35,49,47,118,82,0,17,70,21,132,5,16,149,5,117,49,87,48,13,70,132,47,0,16,70,16,84,207,48,21,5,70,117,87,13,55,13,47,0,17,70,12,242,78,12,145,5,49,131,118,50,87,6,132,70,0,0,0,18,71,76,16,210,36,98,67,20,87,35,49,34,109,81,132,87,0,0,11,200,4,229,9,52,21,20,21,32,65,12,68,4,226,79,56,35,50,133,13,50,0,21,72,4,225,77,60,209,84,21,32,35,50,118,63,6,119,63,109,47,110,0,0,15,69,80,35,9,76,144,47,14,69,55,124,87,37,0,12,201,77,80,143,72,66,78,5,65,64,66,13,69,76,80,78,12,80,87,133,119,50,87,0,11,67,61,129,78,119,49,87,13,50,0,0,10,67,64,243,25,48,119,55,118,0,9,67,4,70,133,35,70,86,0,16,70,4,34,76,37,70,64,115,69,118,55,13,47,118,0,10,3,9,46,5,132,124,11,0,8,0,15,70,77,2,78,4,50,0,87,48,118,50,109,74,0,18,71,65,33,68,36,48,84,20,48,34,117,70,109,49,133,47,0,0,12,68,28,20,197,76,79,35,87,109,86,0,0,9,198,56,80,146,5,50,193,66,14,69,88,17,201,56,16,82,13,73,132,50,13,0,9,198,52,243,69,57,69,77,66,8,197,16,243,73,56,240,65,0,24,74,36,224,80,65,35,208,72,144,84,20,4,118,50,115,48,34,131,48,34,136,47,0,0,19,71,77,147,148,32,84,201,76,87,118,50,85,13,87,118,87,0,9,18,71,4,197,5,72,224,84,20,125,55,47,110,50,133,47,0,36,19,71,4,197,5,72,224,84,20,125,55,47,6,123,50,13,47,0,9,0,11,68,17,85,133,80,70,129,82,133,0,0,15,69,16,148,195,85,48,70,118,87,49,13,87,0,9,0,15,70,36,229,5,73,96,76,118,50,47,110,82,114,0,6,195,36,212,9,65,10,67,32,244,9,105,131,48,124,0,0,0,10,67,48,242,83,55,131,118,87,0,11,68,8,163,210,56,69,57,127,50,0,21,72,65,149,8,4,115,210,5,48,48,132,85,6,35,79,13,34,13,87,0,19,72,64,130,76,61,51,208,33,144,81,109,55,119,87,13,81,118,0,0,13,69,56,20,12,21,48,50,133,48,114,86,0,14,69,52,17,18,5,48,63,13,70,34,116,87,0,13,69,88,84,147,85,48,82,123,87,109,86,0,13,69,61,97,82,49,144,131,82,110,55,118,0,0,0,8,67,100,80,64,57,133,0,0,21,72,48,16,143,72,21,15,73,144,55,35,69,34,13,47,125,34,118,0,103,12,68,20,210,76,100,117,63,109,55,118,0,21,72,48,16,143,72,21,15,73,144,55,115,69,6,119,34,13,47,34,118,0,0,15,70,48,21,210,20,224,197,55,119,34,13,50,87,0,0,15,70,52,147,9,80,144,64,63,13,55,118,89,13,0,0,17,71,33,84,146,36,48,78,20,105,123,13,49,133,50,0,103,17,71,33,84,146,36,48,78,20,105,120,34,109,49,133,50,0,17,71,12,128,77,20,193,79,56,49,13,63,124,55,136,50,0,6,195,12,144,64,17,0,13,68,92,129,82,20,4,58,135,0,8,12,10,12,68,40,84,213,76,73,124,86,13,87,0,12,68,81,81,15,72,47,57,129,70,110,0,9,198,52,19,139,36,225,0,66,12,68,44,147,211,44,49,124,119,87,49,0,12,68,40,84,213,76,73,124,86,13,87,0,10,68,24,246,69,72,81,134,133,0,8,67,12,144,79,74,130,0,0,15,69,72,81,149,56,64,34,124,81,120,50,70,0,37,14,6,195,169,12,9,20,5,118,55,6,124,47,0,0,15,70,12,240,200,48,80,64,49,119,49,55,124,13,0,0,18,71,48,193,87,20,195,25,56,103,13,58,6,117,55,118,50,0,6,195,76,17,64,17,0,0,12,69,44,244,200,21,32,49,131,89,110,0,12,69,12,243,208,21,32,49,129,48,110,0,0,9,198,8,82,74,36,225,192,66,9,198,28,243,196,9,145,64,66,14,70,21,97,78,36,225,192,124,82,50,109,66,0,16,70,4,48,68,20,209,64,115,49,35,70,13,63,118,0,15,70,4,36,197,56,49,64,35,69,87,13,50,87,0,0,18,71,9,33,65,44,96,83,80,69,34,117,49,81,13,87,47,0,0,21,72,77,80,147,21,21,69,57,64,87,120,69,87,109,49,58,13,50,47,0,11,68,56,245,193,100,50,131,58,133,0,10,67,52,83,79,63,117,63,131,0,0,13,67,4,209,78,4,133,63,6,117,50,0,103,9,197,36,225,15,61,32,65,9,13,67,4,209,78,4,121,63,6,117,50,0,10,13,69,4,114,1,77,64,115,79,116,87,47,0,0,18,70,28,85,20,36,225,192,4,79,117,47,109,66,0,12,35,9,14,70,77,81,134,36,49,64,87,13,81,132,87,0,14,70,72,80,68,36,225,192,34,124,70,109,66,0,15,70,16,84,129,56,113,64,70,109,34,133,50,73,0,0,15,70,4,195,5,72,114,67,115,55,123,73,118,49,0,0,11,68,84,224,204,20,120,66,49,114,0,15,7,15,39,3,12,15,3,11,13,49,55,119,49,0,13,68,48,241,207,56,55,119,79,6,119,50,0,0,0,16,70,76,80,210,20,54,64,87,124,49,34,13,87,118,0,16,70,21,53,15,65,1,76,117,87,47,6,119,48,114,0,9,198,5,32,200,92,22,64,65,0,9,67,92,131,204,105,131,55,0,17,71,32,22,129,72,67,213,76,105,35,86,110,70,13,87,0,18,71,20,69,193,72,66,65,56,117,70,58,6,127,70,136,50,0,0,19,67,16,241,83,70,120,86,50,119,47,0,32,78,81,110,111,116,32,10,67,16,241,83,70,120,86,0,32,10,68,52,22,65,56,63,139,50,0,15,70,12,16,129,72,85,0,49,35,69,13,34,133,0,11,68,8,20,212,20,69,133,87,47,0,0,13,69,48,80,78,56,80,55,124,6,35,50,0,10,67,44,145,86,49,124,117,82,0,14,69,12,19,129,16,16,49,35,50,13,70,13,0,16,70,29,32,70,24,149,9,79,34,115,81,124,47,118,0,9,67,16,241,82,70,129,110,0,0,9,67,20,211,65,117,63,13,0,0,13,67,92,131,192,4,105,129,0,32,8,12,10,16,70,52,19,4,37,97,83,63,125,55,70,6,124,82,0,19,71,36,225,15,12,130,78,4,118,50,70,131,74,6,132,50,13,0,19,71,12,243,150,60,197,84,20,49,119,50,82,13,55,6,129,47,0,9,67,4,67,192,115,70,129,0,0,16,70,52,18,13,61,81,0,63,35,99,63,6,129,70,0,0,16,70,77,80,144,60,83,129,87,129,48,6,124,50,13,0,12,69,5,32,200,21,48,122,74,109,86,0,0,16,70,4,36,129,32,19,64,133,69,34,13,105,35,63,0,25,74,36,225,5,80,84,141,36,224,84,20,118,50,70,109,47,6,123,63,109,50,13,47,0,12,201,4,208,137,16,86,20,72,245,83,67,0,17,70,65,148,133,56,81,83,48,118,34,13,50,6,124,86,0,0,13,68,4,35,213,80,115,69,130,47,0,74,12,9,67,76,22,83,87,117,86,0,20,72,5,32,200,36,209,68,21,48,122,49,118,63,6,124,70,124,86,0,0,13,69,5,66,5,57,48,35,85,109,50,86,0,15,69,76,147,135,49,144,87,118,66,79,55,118,0,32,0,9,67,20,211,89,117,63,118,0,16,70,48,84,207,80,131,192,55,13,87,6,129,47,129,0,0,17,71,92,21,5,73,50,5,16,58,125,47,110,89,117,70,0,0,16,70,80,83,5,64,131,206,47,117,55,109,81,131,50,0,12,68,72,80,82,52,34,124,6,122,63,0,12,68,48,241,201,56,55,119,79,118,50,0,12,68,8,244,213,56,69,131,87,13,50,0,0,13,69,80,20,137,24,96,47,35,34,118,81,0,0,17,70,64,19,129,12,80,64,48,35,50,115,87,6,124,13,0,0,0,16,68,80,129,82,20,84,135,69,6,124,0,81,98,101,32,12,68,80,129,82,20,84,135,0,72,12,9,12,68,72,81,201,76,34,124,73,109,87,0,11,68,80,129,84,4,85,124,47,13,0,12,68,48,20,211,60,55,35,87,6,129,0,0,0,0,10,67,20,213,64,124,63,57,129,0,0,11,68,32,245,83,20,105,130,86,0,36,15,70,12,240,85,80,131,210,49,131,6,125,85,110,0,0,13,69,77,84,133,77,64,89,138,13,87,47,0,12,69,76,16,200,21,64,87,35,89,133,0,12,69,72,20,9,21,32,34,133,48,137,0,15,69,36,228,197,73,64,118,50,87,6,123,47,0,36,14,69,36,228,197,73,64,118,50,87,123,47,0,10,12,69,12,128,76,21,64,89,35,55,133,0,12,69,12,16,200,21,64,49,35,89,133,0,0,15,70,56,21,1,48,145,64,50,35,47,115,55,37,0,15,70,92,20,212,4,113,64,58,133,87,47,109,73,0,15,70,88,84,212,36,113,64,82,117,87,47,109,73,0,14,70,80,80,82,36,225,192,47,135,44,109,66,0,15,70,76,48,82,36,225,192,87,49,135,34,109,66,0,15,70,64,244,212,4,113,64,48,131,87,47,109,73,0,14,70,52,20,211,4,113,64,63,35,87,121,88,0,0,17,70,8,20,130,4,67,211,69,122,6,69,133,70,119,87,0,0,14,68,80,129,83,20,84,124,86,0,72,34,12,9,0,22,73,60,211,137,76,50,69,56,49,64,119,63,50,6,118,87,118,13,50,87,0,15,70,52,84,137,56,117,69,63,13,34,35,50,79,0,12,69,12,244,9,21,32,49,119,48,137,0,15,70,4,224,76,60,117,69,35,50,13,55,119,79,0,0,16,70,72,243,65,56,49,64,34,131,63,6,35,50,87,0,15,70,64,20,212,36,225,192,48,133,87,47,109,66,0,15,70,61,97,82,4,113,64,131,82,13,44,133,73,0,9,198,61,85,3,60,209,64,65,14,70,56,245,8,36,225,192,50,120,85,118,66,0,14,70,56,80,203,80,145,64,50,117,49,47,132,0,14,70,12,243,12,20,113,64,49,119,55,109,73,0,15,70,5,97,82,4,113,64,35,82,14,34,109,73,0,0,0,28,68,52,145,200,80,4,63,132,47,105,6,35,82,47,112,0,32,14,82,104,97,118,101,32,116,111,32,21,68,52,145,200,80,63,132,47,105,115,82,0,35,77,81,104,97,118,101,32,14,68,52,145,200,80,4,63,132,47,0,32,12,9,18,72,16,83,143,84,83,69,57,64,70,133,50,6,129,63,145,0,9,67,5,85,15,125,47,131,0,0,8,197,84,229,201,76,80,66,15,69,21,84,143,64,16,57,138,34,6,131,48,13,0,0,14,70,12,243,15,56,83,0,49,142,50,114,0,105,13,70,12,243,15,56,83,0,49,123,50,114,0,0,9,67,4,214,64,133,63,118,0,18,71,9,34,71,4,66,69,72,69,34,118,79,115,70,6,137,0,0,0,12,69,76,129,73,48,16,89,124,55,13,0,14,69,48,245,73,76,80,55,129,58,6,124,86,0,14,69,64,19,129,52,16,48,35,50,13,63,121,0,12,69,80,245,80,20,80,47,129,48,133,0,0,14,70,48,147,132,76,22,64,55,118,50,86,37,0,15,70,8,19,15,56,86,64,69,13,55,131,50,118,0,0,16,70,72,21,133,56,245,83,34,35,82,13,50,13,87,0,11,199,5,69,18,36,37,84,20,66,36,18,71,5,69,18,36,37,84,20,35,47,34,118,69,57,129,47,0,0,19,72,4,197,18,36,224,200,4,208,125,55,47,34,118,66,13,63,0,19,72,36,227,143,88,21,9,88,80,118,50,13,82,133,47,118,82,0,11,200,36,225,9,12,21,9,88,80,66,19,72,16,80,207,72,21,9,88,80,70,117,49,34,13,47,118,82,0,0,6,18,66,108,0,114,0,7,6,18,67,105,0,121,0,7,6,18,68,97,0,105,0,111,0,117,0,7,6,20,0,0,0,251,0,0,102,0,102,0,1,251,0,0,102,0,105,0,2,251,0,0,102,0,108,0,0,0,0,0,6,97,98,0,4,2,111,108,105,116,3,4,35,69,0,8,2,101,114,21,0,8,2,111,114,105,0,115,101,110,2,116,3,4,35,69,87,13,50,0,2,117,108,97,114,3,6,35,69,0,4,8,110,101,2,108,3,6,133,69,0,8,110,117,2,108,101,0,8,115,105,100,2,108,101,0,108,105,110,103,3,6,133,69,55,118,66,0,108,101,1,116,99,21,2,32,3,8,13,69,114,0,97,100,1,21,2,32,3,8,115,69,35,70,0,1,17,67,2,105,108,105,116,12,3,13,69,0,105,108,105,116,121,1,10,2,14,128,139,135,3,13,69,6,118,55,109,47,2,37,0,105,108,105,116,105,101,115,1,10,2,14,128,139,137,3,13,69,6,118,55,109,47,2,37,86,0,4,108,121,1,10,2,32,14,128,171,132,3,13,69,55,2,118,0,108,121,1,99,10,2,32,14,128,168,132,0,4,108,101,1,10,2,32,14,128,139,132,3,13,69,114,0,108,101,1,99,10,2,32,0,4,1,98,2,121,108,3,35,69,0,2,97,99,17,65,0,2,97,116,116,0,2,106,101,99,116,0,2,108,97,116,105,118,0,2,110,101,103,0,2,114,111,103,0,2,114,117,99,0,2,115,99,101,0,2,115,101,105,0,2,115,111,108,117,0,2,115,116,105,0,8,2,100,0,8,2,105,0,8,2,114,97,0,98,8,0,4,98,111,8,3,35,69,13,0,101,114,1,17,67,2,21,0,4,2,114,97,115,3,115,69,0,8,2,21,0,8,2,100,117,99,0,8,2,105,100,101,0,8,2,114,97,100,0,98,8,2,114,101,118,0,111,118,101,8,2,21,14,128,132,133,3,115,69,4,120,82,0,101,114,8,2,114,3,115,69,117,0,4,1,17,67,17,67,17,67,2,108,101,3,133,69,0,1,17,67,29,2,108,101,0,1,98,2,121,0,1,108,2,111,117,114,0,1,116,115,2,105,108,0,8,2,114,97,109,0,8,108,2,105,0,108,121,3,133,69,55,118,0,4,101,108,8,3,133,69,114,0,108,101,0,7,6,97,99,0,2,99,101,110,116,117,3,2,35,49,0,2,113,117,105,101,3,4,35,0,4,2,97,32,3,6,35,49,0,2,116,111,114,121,0,2,116,117,114,101,0,2,117,108,97,114,0,104,105,97,3,6,133,89,13,0,101,97,110,2,32,3,6,133,89,13,50,0,105,111,117,115,3,6,133,89,13,87,0,1,114,99,2,121,32,3,8,13,87,0,4,1,10,2,108,101,32,3,13,49,0,104,1,114,116,2,101,0,4,1,10,2,121,32,3,13,87,0,1,102,2,105,108,105,116,0,1,108,112,2,101,98,0,8,108,112,2,101,110,116,0,104,105,1,109,2,110,17,65,13,3,13,89,124,0,4,2,99,101,110,116,3,35,49,0,2,99,105,100,0,2,111,110,0,2,114,111,0,2,117,109,0,2,117,112,0,8,2,111,0,8,2,114,105,0,8,2,116,0,99,2,111,108,0,104,2,114,111,109,0,107,8,2,32,0,97,2,100,101,109,3,35,49,13,0,114,111,1,109,2,21,3,35,49,34,13,0,110,101,3,35,49,50,118,0,99,117,2,114,97,3,35,49,57,113,0,109,101,3,35,49,63,118,0,116,117,2,17,65,3,35,49,74,129,0,4,2,101,114,98,3,35,87,0,2,105,100,32,0,4,101,8,2,116,3,35,87,118,0,101,8,109,2,100,0,104,105,110,97,1,109,2,116,3,35,89,109,50,133,0,4,1,108,112,2,97,116,3,115,49,0,8,2,21,0,99,8,2,21,0,97,2,100,101,109,121,3,115,49,35,0,99,117,115,2,17,65,3,115,49,57,129,86,0,113,117,8,3,115,49,58,0,99,8,2,101,3,115,49,87,0,4,99,111,117,2,116,3,115,49,129,0,111,117,2,115,116,0,104,8,3,115,74,0,4,8,2,101,3,115,87,0,8,2,101,114,98,105,0,8,2,105,0,101,8,2,116,105,3,115,87,124,0,4,1,102,114,117,2,101,32,3,118,87,0,1,108,97,2,101,32,0,1,108,111,115,2,101,32,0,1,109,105,2,101,32,0,1,110,21,2,101,32,0,1,114,114,2,101,32,0,104,1,121,2,116,3,119,0,4,1,118,2,97,3,133,49,0,2,111,114,110,0,8,98,2,111,0,104,101,1,100,2,32,0,104,101,1,104,2,32,0,104,101,1,107,2,32,0,104,101,1,114,2,32,0,104,101,1,116,114,2,32,0,104,101,1,121,2,32,0,104,101,8,2,12,0,114,101,8,3,133,49,13,0,4,104,101,115,1,100,2,32,3,133,49,87,0,104,101,115,1,104,2,32,0,104,101,115,1,114,2,32,0,104,101,115,1,116,114,2,32,0,4,1,112,115,2,101,13,3,133,87,0,8,114,2,101,0,8,114,2,105,115,0,101,2,32,0,7,6,97,100,0,1,108,97,109,2,121,3,13,70,0,2,106,117,116,97,110,3,35,0,4,1,108,103,2,105,3,35,70,0,1,114,2,105,99,0,1,120,101,104,2,101,0,2,97,103,0,2,97,109,0,2,101,110,0,2,101,113,0,2,106,117,110,99,116,32,0,2,109,97,110,32,0,2,109,105,110,32,0,2,109,105,114,97,0,2,111,108,0,2,111,110,0,2,117,108,97,0,2,117,108,116,32,0,2,118,101,110,116,0,2,118,101,114,0,2,118,101,114,116,32,0,2,118,111,0,8,2,105,0,8,2,114,105,21,0,8,2,117,109,0,100,2,101,114,0,100,2,105,116,105,118,0,100,8,2,108,0,101,1,108,2,115,104,3,35,70,6,117,0,111,2,108,101,115,3,35,70,13,0,118,101,114,2,115,3,35,70,82,6,123,0,101,113,117,97,3,35,70,118,49,58,13,0,106,101,99,3,35,73,117,49,0,4,2,118,101,110,116,117,3,115,70,0,2,118,101,114,115,97,0,2,118,101,114,116,0,8,2,21,0,8,114,116,2,105,116,0,100,8,2,21,0,106,8,3,115,73,0,1,117,113,3,119,70,0,4,1,98,2,111,115,32,3,133,70,0,1,99,2,101,110,99,0,1,108,2,101,110,0,1,108,2,121,0,1,110,114,111,116,0,1,114,99,0,1,115,2,105,115,0,2,105,17,65,0,2,108,101,0,8,114,2,17,65,0,7,6,97,102,0,1,21,2,116,101,114,3,6,116,81,0,4,2,114,105,3,35,81,0,8,2,103,0,102,2,97,98,0,102,2,101,114,0,102,2,108,117,0,114,111,3,35,81,34,131,0,4,2,101,97,3,115,81,0,8,2,21,0,102,8,2,21,0,111,114,101,3,115,81,128,0,102,105,97,8,3,115,81,139,0,4,2,116,12,3,116,81,0,102,1,116,115,0,102,1,119,3,119,81,0,7,6,97,103,0,8,116,110,97,3,6,35,79,0,111,110,2,97,108,3,6,35,79,13,50,0,117,97,1,21,2,32,3,6,35,79,57,129,13,0,105,111,2,32,3,6,121,73,118,131,0,2,97,32,3,6,121,79,0,105,2,32,3,6,121,79,118,0,4,1,103,110,2,101,32,3,6,133,73,0,1,114,110,101,2,101,32,0,101,1,103,2,109,101,110,116,0,1,109,2,101,110,116,97,3,13,73,0,1,10,2,111,110,32,3,13,79,0,8,114,116,3,35,73,0,4,103,8,2,114,97,118,3,35,79,0,103,8,2,114,101,103,0,4,111,110,1,114,100,3,35,79,13,50,0,111,110,1,119,2,12,0,4,101,1,21,2,32,3,109,73,0,101,1,21,2,109,101,110,116,0,101,1,112,112,2,32,0,101,114,1,21,2,32,3,109,73,110,0,2,101,110,100,3,115,73,0,4,2,114,101,101,3,115,79,0,8,2,108,21,0,8,2,111,32,0,8,2,114,111,110,0,103,2,114,101,115,0,103,2,114,105,101,118,0,103,8,2,21,0,104,2,32,3,121,0,101,110,1,104,10,2,32,3,121,79,13,50,0,4,1,116,110,111,109,2,101,32,3,121,88,0,101,1,108,102,2,32,0,4,1,110,101,101,116,2,101,3,133,73,0,1,114,101,100,2,101,32,0,1,114,116,117,111,2,101,32,0,1,116,115,2,101,0,8,2,101,0,8,2,105,115,0,101,1,99,2,32,0,101,1,99,98,0,101,1,99,100,0,101,1,112,17,67,2,32,0,101,8,2,105,0,101,8,2,108,0,105,1,116,2,111,3,133,73,57,0,4,1,108,102,2,114,97,110,3,133,79,0,1,114,102,2,114,0,1,118,2,114,97,0,2,111,32,0,117,101,0,7,6,97,105,0,4,1,21,2,17,67,97,32,3,6,133,0,1,116,110,101,2,108,0,1,116,114,117,99,2,108,0,103,2,110,0,110,1,100,2,32,3,6,133,50,0,110,101,100,1,100,2,32,3,6,133,50,70,0,115,101,2,32,3,6,133,86,0,4,99,2,32,3,6,133,118,49,0,99,2,97,108,0,114,101,3,6,135,0,4,1,108,108,105,118,3,13,0,1,116,102,0,1,116,105,114,98,0,1,116,114,101,99,0,1,116,114,117,99,0,1,115,2,100,3,117,0,4,1,103,114,97,98,3,118,0,1,108,112,97,0,1,108,114,101,98,0,1,116,110,117,111,0,1,116,112,0,4,2,32,3,132,0,2,105,0,1,110,2,118,3,132,6,124,0,4,3,133,0,8,0,4,114,3,135,0,114,8,0,114,101,2,32,0,7,6,97,108,0,1,109,2,110,111,3,2,35,55,0,2,109,105,103,3,2,119,55,0,8,2,114,3,2,125,55,0,2,105,116,121,3,6,35,55,0,100,101,2,104,121,3,6,35,55,70,118,0,103,105,97,1,21,2,32,3,6,35,55,73,13,0,1,103,2,105,32,3,6,121,55,0,97,110,100,1,21,2,32,3,8,13,55,115,50,70,0,4,1,10,2,105,17,66,97,116,105,3,13,55,0,1,10,2,105,17,66,101,0,1,10,2,105,115,17,67,105,99,0,1,115,2,117,116,0,1,117,113,101,0,1,118,17,65,2,101,110,0,97,121,1,109,3,13,55,6,133,0,105,1,10,2,115,17,67,32,3,13,55,118,0,111,1,10,2,32,3,13,55,131,0,101,105,1,107,2,100,3,13,55,132,0,4,5,3,1,99,2,102,3,35,0,5,3,1,104,2,102,0,5,3,1,104,2,118,0,4,1,112,2,101,116,3,35,55,0,1,115,2,117,116,97,0,1,116,101,114,2,105,97,0,1,118,2,105,97,0,2,116,111,0,2,117,109,32,0,8,2,97,115,116,0,8,2,98,0,8,2,99,0,8,2,101,120,0,8,2,103,0,8,2,105,0,8,2,107,0,8,2,112,0,8,2,115,0,8,2,118,0,8,2,121,0,8,99,2,101,0,108,1,102,2,97,0,108,1,102,2,105,98,0,108,1,116,2,17,65,0,108,2,101,108,0,108,2,101,114,0,108,2,111,116,114,0,108,8,2,97,0,108,8,2,101,103,0,108,8,2,105,0,108,8,2,111,0,108,8,17,67,2,111,119,0,108,111,8,2,99,97,3,35,55,13,0,97,98,97,8,3,35,55,13,69,6,35,0,122,3,35,55,47,87,0,116,105,8,3,35,55,47,118,0,112,2,104,111,3,35,55,48,0,99,111,2,104,3,35,55,49,13,0,98,101,114,8,2,116,17,65,3,35,55,69,6,123,0,4,102,97,8,3,35,55,81,13,0,112,104,97,0,101,112,104,3,35,55,117,81,0,4,108,101,121,3,35,55,118,0,108,121,1,116,0,101,120,97,110,8,3,35,55,118,79,86,6,116,50,0,108,121,8,3,35,55,132,0,4,108,121,1,21,2,32,14,128,128,130,3,55,2,118,0,108,121,1,99,105,21,21,2,32,14,128,128,132,0,4,1,10,2,32,3,114,0,1,10,2,100,32,0,1,10,2,116,121,32,0,114,121,1,10,2,32,3,114,34,2,118,0,4,2,111,110,103,3,115,55,0,5,8,1,10,2,32,0,8,2,21,0,8,2,105,103,0,108,2,101,103,114,0,108,8,2,21,0,108,8,2,105,97,110,0,108,8,2,105,116,101,114,0,108,8,2,111,116,0,108,8,2,111,119,0,108,101,2,103,101,3,115,55,117,0,105,8,2,17,66,101,3,115,55,132,0,4,1,102,2,107,3,119,55,0,1,102,2,115,0,1,115,2,102,0,1,115,2,116,0,1,117,113,2,21,0,1,117,113,101,2,105,116,0,1,119,2,17,67,0,2,116,17,65,114,0,2,116,32,0,8,2,109,0,8,17,67,2,116,17,65,0,8,104,2,116,0,108,1,119,2,17,65,0,108,1,119,2,97,0,108,1,119,2,101,116,0,115,111,3,119,55,87,131,0,4,1,98,2,109,3,121,0,1,99,2,102,0,1,99,2,109,0,1,104,2,102,0,1,104,2,118,0,1,112,2,109,0,1,115,112,2,109,0,1,117,113,2,109,0,8,2,109,115,0,4,1,104,99,2,107,3,125,0,1,116,2,107,0,1,119,2,107,0,4,1,98,2,100,12,3,125,55,0,1,98,2,107,0,1,116,115,2,119,0,1,116,115,110,105,2,32,0,8,2,100,0,8,2,116,0,108,1,98,2,25,0,108,1,98,10,2,101,114,32,0,108,1,99,2,25,0,108,1,99,2,105,110,0,108,1,102,0,108,1,104,2,17,67,0,108,1,109,115,0,108,1,114,104,116,0,108,1,116,0,108,1,116,2,101,0,108,1,116,115,0,108,1,119,0,108,2,32,0,108,8,2,17,67,21,14,128,132,131,0,108,101,1,119,0,108,101,114,2,32,3,125,55,110,0,108,101,114,115,2,32,3,125,55,110,86,0,2,116,101,114,110,97,116,111,3,126,55,0,119,8,3,126,55,58,0,4,1,29,2,105,110,3,133,55,0,2,105,97,0,2,105,101,110,0,8,99,115,2,17,65,0,8,104,2,111,0,101,2,32,0,101,2,104,0,7,6,97,109,0,8,2,32,3,2,35,63,0,101,1,108,2,110,116,3,2,35,63,117,0,4,1,32,15,2,32,3,4,133,6,117,63,0,1,32,32,15,2,32,0,112,116,111,110,3,6,35,63,48,47,13,50,0,4,1,114,21,2,97,3,6,121,63,0,2,105,32,0,101,1,115,17,65,2,32,3,6,121,63,117,0,1,103,10,2,111,117,115,3,8,115,63,0,105,110,101,1,10,2,32,3,8,115,63,124,50,0,4,1,10,2,101,110,116,3,13,63,0,1,10,2,101,110,116,0,1,10,2,111,32,0,1,100,10,2,32,0,1,100,110,117,2,101,110,0,1,115,10,2,32,0,5,35,1,104,10,2,32,24,0,101,1,10,2,110,116,97,3,13,63,6,117,0,4,1,99,2,101,108,3,35,63,0,1,100,114,101,21,2,32,0,1,108,2,112,108,0,97,116,101,117,114,3,35,63,13,47,110,0,97,122,2,111,3,35,63,13,86,0,98,105,118,3,35,63,69,6,118,82,0,98,105,2,100,3,35,63,69,118,0,112,104,105,98,3,35,63,81,6,118,69,0,105,108,1,102,3,35,63,118,55,0,4,2,117,115,101,3,115,63,0,8,2,97,108,0,8,2,101,110,0,8,2,105,100,0,8,2,105,110,111,0,8,2,105,115,115,0,109,2,101,110,100,0,101,8,2,110,116,3,115,63,117,0,101,114,2,105,99,3,115,63,117,34,0,4,101,2,110,97,98,3,115,63,124,0,101,8,2,108,0,105,2,103,0,111,101,98,3,115,63,124,69,0,97,122,3,115,63,133,86,0,4,1,17,67,2,100,3,116,63,0,1,17,67,2,112,108,0,4,1,102,2,111,117,115,3,133,63,0,1,104,99,2,98,0,8,100,2,105,0,101,1,108,102,0,101,8,110,0,7,6,97,110,0,8,114,116,2,115,3,2,35,50,0,115,102,101,114,1,114,116,3,2,35,50,87,81,123,0,116,105,8,2,21,14,128,132,132,3,4,35,50,47,118,0,100,117,1,21,2,32,3,4,35,50,70,6,129,0,4,1,21,2,17,67,97,32,3,6,35,50,0,1,110,105,102,2,99,0,2,103,117,108,0,2,122,97,0,100,111,2,32,3,6,35,50,70,131,0,97,1,21,2,32,3,6,121,50,13,0,105,1,10,2,32,3,6,121,50,118,0,2,105,97,3,6,133,50,0,101,97,110,2,32,3,6,133,50,136,50,0,101,111,117,115,1,21,3,6,133,50,136,87,0,4,1,10,2,32,3,13,50,0,1,10,2,99,101,32,0,1,10,2,99,121,0,1,10,2,101,115,101,0,1,10,2,105,101,115,32,0,1,10,2,116,32,0,1,10,2,121,32,0,1,98,115,117,2,100,0,1,108,10,2,100,0,1,108,108,2,32,0,1,109,10,2,32,0,1,109,114,101,112,0,1,109,117,104,2,32,0,1,114,21,21,2,32,0,105,112,117,1,109,3,13,50,118,48,57,113,0,111,101,117,1,109,2,118,3,13,50,129,0,4,1,99,2,99,3,35,50,0,1,99,17,67,2,32,0,1,102,2,99,0,1,108,2,32,0,1,108,10,2,100,105,0,1,108,112,2,116,32,0,1,108,121,2,100,0,1,109,2,32,0,1,110,2,99,0,1,112,2,32,0,1,112,2,99,0,1,112,2,101,108,0,1,112,115,2,105,97,0,1,114,2,32,0,1,114,116,2,115,105,0,1,114,116,2,115,111,109,0,1,116,115,2,32,0,1,118,100,97,2,99,0,8,108,2,105,97,0,8,119,2,103,0,8,119,2,107,0,110,97,8,3,35,50,13,0,116,2,105,113,3,35,50,47,0,116,101,2,110,110,3,35,50,47,6,117,0,116,105,2,99,105,3,35,50,47,6,118,0,103,2,101,108,3,35,50,73,0,115,105,115,1,114,116,3,35,50,86,6,118,87,0,103,1,104,2,101,114,3,35,66,0,103,2,101,114,3,35,66,79,0,103,101,108,1,109,3,35,66,79,114,0,4,1,105,21,2,32,14,128,128,129,3,50,0,1,117,21,2,32,14,128,128,129,0,103,101,100,1,114,2,14,128,128,129,3,70,0,4,2,97,108,111,103,3,115,50,0,2,97,116,104,0,5,8,1,10,2,32,0,5,8,1,10,2,99,101,32,0,5,8,1,10,2,116,32,0,5,8,1,109,10,2,32,0,8,2,101,109,0,8,2,111,105,0,110,2,101,97,108,0,110,2,105,104,0,110,2,111,117,110,0,110,2,117,105,0,110,2,117,108,0,110,2,117,110,0,110,8,2,111,121,0,105,97,1,122,3,115,50,6,136,0,111,109,8,3,115,50,119,63,0,101,8,2,109,105,3,115,50,124,0,4,1,17,67,2,99,3,116,50,0,1,17,67,2,116,0,1,104,2,99,101,32,0,1,108,115,2,100,0,1,109,21,2,100,0,1,122,2,99,101,32,0,121,8,3,117,50,109,0,4,1,119,2,116,32,3,119,50,0,8,117,113,0,8,119,2,17,67,0,8,2,99,105,101,3,133,50,0,4,103,1,100,2,101,114,3,133,50,73,0,103,1,104,99,2,101,0,103,1,114,2,101,0,103,2,101,108,32,0,4,103,105,110,103,1,104,99,3,133,50,73,118,66,0,103,105,110,103,1,114,0,7,6,97,112,0,4,104,1,114,103,10,2,101,114,3,8,13,81,0,104,1,114,103,10,2,121,0,1,99,2,97,99,3,13,48,0,101,1,114,116,2,122,3,13,48,124,0,4,2,97,116,104,3,35,48,0,2,101,108,32,0,2,105,99,0,2,111,103,0,2,111,108,105,0,8,2,115,0,8,2,116,0,112,2,97,114,97,0,112,2,101,116,105,0,112,2,108,101,0,112,2,108,105,99,0,112,2,114,101,104,0,101,114,8,2,116,3,35,48,13,0,114,101,115,3,35,48,34,133,0,101,1,114,116,2,122,111,3,35,48,118,0,104,8,2,111,3,35,81,0,104,114,111,3,35,81,34,13,0,4,8,2,21,3,115,48,0,112,2,101,97,114,0,112,2,108,105,99,97,98,0,112,8,2,21,0,112,114,101,99,8,2,18,67,3,115,48,34,124,89,0,101,114,105,8,2,116,3,115,48,117,34,13,0,101,114,2,105,101,3,115,48,136,34,0,104,8,2,21,3,115,81,0,4,1,99,2,111,110,3,133,48,0,1,109,2,108,101,0,1,112,2,101,114,0,1,116,115,2,108,0,2,105,97,0,2,105,115,0,2,114,111,0,8,2,101,0,8,2,114,105,0,8,112,2,105,115,0,8,118,2,111,0,104,8,2,105,100,3,133,81,0,7,6,97,114,0,2,116,105,108,3,2,122,0,98,111,1,99,2,104,3,4,122,69,131,0,99,104,8,2,21,14,128,132,132,3,4,122,74,0,5,3,1,21,2,105,111,32,3,6,35,34,0,105,108,121,1,21,2,32,3,6,117,34,13,55,2,118,0,4,2,97,32,3,6,121,34,0,2,105,32,0,4,2,105,97,17,67,32,3,6,135,0,2,105,97,32,0,2,105,117,12,3,6,135,34,0,4,1,10,2,105,110,32,3,13,34,0,1,103,111,108,2,105,0,1,104,2,97,115,115,0,1,109,2,105,0,1,109,2,105,110,0,121,2,32,3,13,34,2,118,0,97,110,1,109,10,3,13,34,35,50,0,101,1,112,2,110,116,104,101,3,13,34,117,0,105,115,101,1,10,2,32,3,13,34,132,86,0,97,8,112,2,100,101,3,13,34,133,0,105,110,103,1,103,3,13,44,109,66,0,2,114,3,35,0,4,1,21,2,105,116,121,3,35,34,0,1,99,2,101,101,114,0,1,99,2,105,0,1,104,99,2,105,116,0,1,104,112,2,105,0,1,107,2,121,0,1,108,99,2,105,0,1,109,2,105,110,101,114,0,1,109,2,105,111,0,1,109,2,105,116,0,1,112,2,105,0,1,112,112,2,101,110,17,67,0,1,112,115,2,101,110,17,67,0,2,97,0,2,101,110,0,2,105,99,0,2,111,0,8,2,17,65,0,8,109,2,105,0,8,109,2,105,110,97,17,67,0,114,8,2,97,110,116,0,114,8,2,111,0,4,97,8,112,3,35,34,13,0,101,2,116,0,4,1,10,2,100,105,115,3,110,0,1,10,2,100,105,122,0,1,10,2,100,121,32,0,1,100,10,2,32,0,1,100,10,2,100,32,0,1,103,10,2,32,0,1,103,103,2,100,32,0,1,104,10,2,100,32,0,1,107,10,2,100,32,0,1,108,10,2,32,0,1,109,10,2,32,0,1,112,2,116,105,99,117,0,1,116,10,2,32,0,1,116,115,10,2,100,32,0,1,119,2,100,0,1,119,10,2,100,32,0,1,122,10,2,100,32,0,1,112,101,115,2,97,116,3,110,34,0,4,99,104,1,110,97,3,110,49,0,99,104,1,110,111,109,0,4,8,2,111,115,3,115,34,0,8,2,111,117,0,114,8,2,21,0,111,109,2,97,116,3,115,34,131,63,0,121,5,3,1,110,111,105,2,32,3,117,34,2,118,0,4,1,117,113,2,114,3,119,0,1,119,2,114,0,1,119,2,114,0,4,1,117,113,2,97,3,119,34,0,119,1,119,2,105,0,2,17,65,3,121,34,0,4,3,122,0,1,104,2,100,121,32,0,1,116,105,117,103,2,32,0,1,116,111,101,2,100,32,0,1,116,115,2,32,0,2,32,0,8,116,2,32,0,39,2,110,116,0,114,2,32,0,114,101,2,32,0,4,99,104,1,21,2,105,3,122,49,0,99,104,1,21,2,121,0,99,104,8,2,17,65,17,65,0,99,104,8,2,101,116,0,99,104,97,105,8,3,122,49,6,133,118,0,99,104,105,8,3,122,49,118,0,99,104,105,118,8,2,12,3,122,49,132,82,0,114,101,100,2,32,3,122,70,0,99,104,8,2,101,114,3,122,74,0,114,105,110,103,2,32,3,122,109,66,0,4,1,104,119,3,127,0,1,117,113,2,116,0,1,119,0,1,119,97,2,100,0,1,119,101,114,2,100,0,1,119,104,99,2,100,0,1,119,115,2,100,0,8,119,2,100,0,1,119,111,116,2,100,3,128,0,4,1,109,116,104,3,135,0,1,112,2,105,110,0,1,119,2,105,0,1,119,2,121,0,2,105,111,117,115,0,101,0,101,1,99,2,17,67,21,0,101,1,119,0,4,1,112,2,101,110,116,3,135,34,0,1,118,2,105,17,65,0,121,1,17,67,29,3,135,34,2,118,0,101,115,116,2,32,3,135,34,13,87,47,0,101,97,3,135,34,136,0,105,110,103,3,135,44,109,66,0,7,6,97,115,0,2,101,120,117,3,2,133,87,0,2,105,118,101,3,6,133,87,0,4,115,1,99,2,32,3,13,87,0,115,1,108,116,2,32,0,115,1,112,109,111,2,32,0,115,1,112,115,2,32,0,115,1,114,114,0,115,1,118,10,2,32,0,115,1,118,10,2,32,0,4,101,121,1,10,2,32,3,13,87,2,37,0,121,1,10,2,32,0,115,2,117,3,13,89,0,115,117,114,3,13,89,57,138,0,1,98,2,105,108,3,35,86,0,4,1,109,2,111,110,105,3,35,87,0,1,116,110,2,116,0,2,112,104,97,0,2,112,105,0,2,116,104,109,0,2,116,114,97,108,0,2,116,114,111,0,2,121,109,112,0,8,2,101,0,8,2,105,110,0,8,2,112,101,0,115,1,108,99,2,105,17,67,0,115,1,112,2,111,0,115,2,97,103,0,115,2,101,116,0,115,2,111,110,0,115,2,121,109,0,115,8,2,104,0,99,105,105,3,35,87,49,118,0,104,8,3,35,89,0,115,105,111,110,1,112,3,35,89,13,50,0,99,105,1,102,2,115,3,35,89,118,0,2,115,105,115,116,3,115,0,4,1,10,2,116,121,32,3,115,87,0,2,116,101,114,110,0,2,116,114,111,108,111,103,0,2,116,114,111,110,111,0,8,2,21,0,8,2,112,101,114,0,8,2,112,105,114,101,0,115,2,117,109,112,0,115,8,2,21,0,4,104,8,2,97,3,115,89,0,104,8,2,111,0,4,1,17,67,2,112,3,116,87,0,1,17,67,2,112,101,0,1,17,67,2,116,0,2,107,0,2,116,101,114,0,115,1,108,17,67,0,115,1,112,0,115,1,114,17,67,0,1,104,99,114,117,112,2,101,3,118,87,0,1,119,2,112,3,119,87,0,4,101,1,104,112,2,32,3,133,86,0,101,1,114,2,32,0,4,1,98,2,105,3,133,87,0,1,104,2,116,101,0,1,106,2,111,110,0,1,109,2,111,110,0,1,112,2,116,101,32,0,1,116,2,116,0,8,2,111,0,116,1,119,2,101,13,3,133,87,47,0,105,97,5,3,8,3,133,88,13,0,99,1,102,2,105,97,3,133,89,0,105,97,8,3,133,89,13,0,7,6,97,116,0,111,8,2,110,97,3,2,133,47,131,0,4,1,21,2,114,97,32,3,6,121,47,0,2,117,109,0,105,1,21,2,32,3,6,121,47,118,0,4,1,21,2,111,114,32,3,6,133,47,0,1,100,2,117,109,32,0,1,108,117,2,111,114,121,0,1,109,2,117,109,32,0,2,105,109,32,0,114,105,99,101,115,3,6,133,47,34,109,87,124,86,0,114,105,120,3,6,133,47,34,118,49,87,0,114,121,1,21,2,32,3,8,13,47,34,118,0,104,1,21,2,105,115,3,8,13,85,0,104,121,1,21,3,8,13,85,109,0,4,1,10,2,101,101,114,32,3,13,47,0,1,10,2,105,118,101,0,1,109,2,101,114,105,0,1,109,105,108,99,2,101,0,1,110,101,115,0,1,112,2,101,114,110,0,1,116,115,2,105,115,116,0,8,115,114,101,118,0,101,1,108,97,112,2,32,0,101,1,108,117,99,97,109,2,32,0,101,1,108,117,115,110,111,99,2,32,0,101,1,109,105,116,2,32,0,101,1,110,105,100,2,32,0,101,1,110,111,105,2,32,0,101,1,114,101,100,2,32,0,101,1,114,101,112,109,2,32,0,101,8,114,97,112,101,115,32,116,105,2,32,0,105,115,109,1,10,3,13,47,118,86,13,63,0,101,114,1,109,2,110,3,13,47,123,0,117,114,101,1,108,2,32,3,13,74,110,0,4,117,114,1,99,3,13,74,138,0,117,114,1,109,0,4,1,99,2,101,17,67,3,35,47,0,1,103,2,101,97,117,0,1,108,112,2,101,97,0,1,109,2,101,114,0,1,114,116,115,2,101,103,0,116,2,105,99,0,116,2,105,116,0,101,108,8,115,2,108,3,35,47,13,0,101,103,111,1,99,2,114,105,99,3,35,47,118,79,6,119,0,101,103,111,1,99,3,35,47,118,79,13,0,105,8,99,2,111,110,3,35,47,132,0,104,2,108,111,110,3,35,85,0,4,1,114,102,2,101,114,110,3,115,47,0,2,111,109,105,0,8,2,108,97,110,0,8,2,114,111,99,0,116,8,2,21,0,114,111,108,1,112,3,115,47,34,131,55,0,111,8,2,110,3,115,47,131,0,4,104,1,98,3,116,85,0,104,1,112,0,1,119,2,116,3,119,47,0,104,1,102,2,101,114,3,121,84,0,4,1,21,21,2,111,114,32,3,133,47,0,1,99,2,101,114,32,0,1,102,2,97,108,0,1,108,98,2,17,65,0,1,110,2,105,118,101,0,2,111,114,32,0,5,3,1,112,2,114,105,17,65,0,101,1,110,111,105,110,2,32,0,97,1,100,3,133,47,13,0,114,111,110,2,32,3,133,47,34,13,50,0,101,115,1,114,97,112,2,32,3,133,47,87,0,101,100,1,109,105,116,2,32,3,133,47,109,70,0,4,105,110,103,1,21,2,12,12,32,3,133,47,118,66,0,105,110,103,1,109,105,116,2,32,0,101,100,1,21,2,12,12,32,3,133,47,118,70,0,104,1,98,2,101,3,133,84,0,104,101,100,2,32,3,133,84,70,0,104,101,105,3,133,85,109,118,0,2,105,97,3,133,89,0,7,6,97,117,0,116,111,8,2,110,3,2,125,47,119,0,116,104,101,110,3,2,125,85,117,50,0,99,104,8,3,2,125,99,0,116,111,8,2,21,14,128,132,132,3,4,125,47,131,0,4,1,21,2,114,105,3,6,125,0,1,115,2,114,117,115,32,0,100,2,32,3,6,125,70,0,4,103,104,1,108,3,116,81,0,103,104,1,114,100,0,4,1,99,2,108,105,3,119,0,5,35,1,115,2,115,0,5,35,2,115,116,114,0,108,2,116,3,119,55,0,8,2,110,116,3,121,0,4,3,125,0,1,110,2,116,32,0,103,104,0,103,104,1,108,115,0,108,2,107,0,116,111,2,109,97,3,125,47,13,0,103,109,101,110,116,3,125,79,63,6,117,50,47,0,114,2,32,3,127,0,4,1,21,2,116,32,3,130,0,1,103,2,115,0,2,32,0,115,1,17,67,2,32,3,130,87,0,7,6,97,118,0,1,108,97,2,101,114,3,6,121,82,0,4,1,99,115,2,101,110,3,35,82,0,1,100,2,101,110,0,1,106,2,101,108,0,1,108,2,101,110,0,1,108,2,105,0,1,114,2,101,108,0,101,114,2,115,3,35,82,6,123,0,97,114,2,105,99,3,35,82,13,34,0,4,2,97,105,108,3,115,82,0,2,101,110,103,0,2,111,17,65,0,8,2,101,114,17,67,0,111,119,3,115,82,130,0,4,1,106,2,97,3,121,82,0,1,108,115,2,105,0,4,1,100,2,105,100,3,133,82,0,1,102,2,111,0,1,108,102,2,111,0,1,115,2,105,0,1,115,2,111,0,8,2,111,110,0,105,8,2,17,65,3,133,82,118,0,7,6,98,101,0,103,8,2,17,65,110,25,3,69,2,118,79,0,116,97,8,3,69,4,124,47,13,0,116,97,5,3,8,3,69,4,133,47,13,0,110,101,118,111,3,69,13,50,117,82,13,0,4,2,103,17,65,3,69,109,0,2,103,114,0,2,108,97,116,0,2,108,105,101,0,2,109,117,0,2,113,117,0,2,115,101,101,0,2,115,105,101,0,2,116,114,97,121,0,8,2,17,67,17,65,0,8,2,99,108,0,8,2,100,114,97,0,8,2,102,0,8,2,108,108,105,0,8,2,115,17,67,0,8,2,115,116,111,0,8,2,116,17,67,0,8,2,119,0,104,97,2,118,3,69,109,105,133,0,114,8,2,115,3,69,110,0,4,8,2,17,67,11,3,69,117,0,8,2,99,107,0,8,2,99,113,0,8,2,100,17,67,0,8,2,103,103,0,8,2,108,17,67,0,8,2,115,116,105,97,0,8,2,116,104,0,8,2,118,17,65,0,110,101,8,3,69,117,50,118,0,4,100,1,104,2,32,3,69,117,70,0,100,1,114,101,2,32,0,100,1,116,2,32,0,4,1,121,97,109,2,32,3,69,124,0,8,2,98,0,7,6,98,105,0,8,2,17,67,21,21,3,2,69,132,0,4,2,115,101,99,3,69,2,132,0,8,2,101,110,0,111,8,2,21,14,128,132,131,3,69,4,132,131,0,2,110,111,99,3,69,109,0,4,2,98,108,105,3,69,118,0,2,98,117,0,2,99,107,0,2,103,12,0,2,108,98,0,2,108,103,0,2,108,105,111,0,2,108,107,0,2,110,109,0,2,111,17,67,32,0,2,111,117,115,0,2,114,105,0,2,114,121,0,2,115,99,0,2,115,104,0,2,115,109,0,2,116,117,0,2,122,12,0,8,2,17,67,11,0,8,2,110,103,0,8,2,116,17,67,0,114,2,17,67,3,69,123,0,4,2,115,113,3,69,124,0,2,115,116,114,0,4,1,21,2,111,115,17,65,3,69,132,0,1,111,2,116,17,65,0,2,99,121,0,2,107,101,114,0,2,110,97,114,121,0,2,110,100,0,2,111,116,105,99,0,8,2,32,0,103,104,2,116,0,4,111,2,103,114,3,69,132,6,119,0,111,2,108,111,103,0,111,2,110,105,0,111,2,112,115,0,111,3,69,132,131,0,114,5,5,2,17,67,3,69,141,0,7,6,99,104,0,101,109,101,110,116,2,32,3,8,89,63,145,0,4,1,21,2,105,97,3,49,0,1,97,2,105,108,0,1,97,114,98,0,1,97,114,116,0,1,101,2,111,0,1,101,109,2,97,0,1,101,116,2,25,0,1,105,109,2,97,0,1,110,111,114,98,0,1,111,2,32,0,1,114,97,2,105,118,101,0,1,114,97,17,67,21,21,2,32,0,1,114,111,2,105,0,2,97,101,0,2,97,115,109,0,2,101,109,0,2,105,99,32,0,2,105,111,0,2,105,114,17,65,0,2,105,115,17,67,0,2,111,108,0,2,111,110,100,0,2,111,114,17,65,0,2,111,114,100,0,2,114,0,8,2,18,66,17,71,0,8,97,116,0,8,114,97,2,17,65,0,8,114,97,2,97,0,8,114,111,2,101,115,0,4,97,2,114,105,115,3,49,13,0,111,114,1,110,97,0,111,108,121,3,49,13,55,2,118,0,114,121,2,115,97,3,49,34,118,0,108,111,114,111,3,49,55,4,128,34,131,0,108,111,2,114,3,49,55,128,0,111,105,114,3,49,58,139,0,105,8,114,97,2,21,3,49,118,0,97,8,2,111,3,49,133,0,97,111,115,3,49,133,119,87,0,4,3,74,0,1,97,116,0,1,111,111,2,32,0,1,114,97,2,101,114,0,2,111,114,101,32,0,8,2,17,71,0,101,1,97,98,3,74,13,0,97,114,105,111,2,116,3,74,35,34,136,0,4,1,97,17,67,2,101,3,89,0,1,97,116,115,0,1,101,2,101,108,0,1,101,114,99,0,1,105,102,0,1,105,108,99,0,1,105,110,0,1,111,99,105,0,1,111,108,99,0,2,97,115,115,0,2,97,116,101,97,0,2,101,102,0,2,101,118,0,2,105,111,32,0,2,117,114,101,0,2,117,116,101,0,2,195,169,12,0,8,111,2,101,0,105,111,110,3,89,13,50,0,97,112,2,101,114,111,3,89,35,48,0,105,99,97,2,103,3,89,109,49,121,0,105,99,97,2,110,3,89,109,49,133,0,4,97,117,2,102,3,89,131,0,97,117,2,118,0,101,122,3,89,133,0,7,6,99,111,0,2,108,111,115,115,3,2,49,119,0,4,2,108,108,97,116,3,49,2,119,0,2,110,115,101,99,117,0,2,110,115,116,105,116,117,17,65,0,8,2,109,112,108,0,8,2,110,102,105,100,101,0,8,2,110,115,117,108,116,0,8,2,110,116,114,111,108,0,110,8,3,49,2,119,50,0,110,116,114,97,99,2,116,3,49,2,119,50,47,34,35,49,0,110,116,114,97,114,3,49,2,119,50,47,34,135,0,110,115,105,100,101,114,3,49,2,119,50,87,118,70,110,0,110,115,101,114,2,118,3,49,2,119,50,87,123,0,109,109,117,110,2,97,3,49,2,119,63,57,129,50,0,4,2,104,97,98,3,49,2,131,0,8,2,97,103,0,97,2,108,101,115,3,49,2,131,115,0,2,109,112,117,116,97,3,49,4,119,0,114,114,101,115,112,111,3,49,4,119,34,118,87,48,6,119,0,110,116,114,97,8,2,17,67,21,14,128,132,134,3,49,4,119,50,47,34,13,0,110,100,101,8,2,115,99,3,49,4,119,50,70,109,0,8,2,101,17,67,14,128,132,130,3,49,4,131,0,117,110,116,101,114,8,2,21,14,128,132,135,3,49,6,130,50,47,13,0,4,2,108,108,97,98,3,49,13,0,2,108,108,97,112,0,2,108,108,101,99,0,2,108,108,105,100,0,2,108,108,105,115,0,2,108,108,117,0,2,109,109,101,110,115,0,2,109,109,117,110,105,99,12,12,0,2,114,114,101,99,116,0,2,114,114,111,0,2,114,114,117,112,0,8,2,109,21,0,8,2,110,110,101,99,116,0,8,2,110,110,101,120,0,110,110,105,118,3,49,13,50,132,82,0,109,101,2,100,105,3,49,13,63,124,0,4,2,109,98,97,3,49,119,0,2,109,98,105,110,97,0,2,109,101,100,121,0,2,109,109,97,32,0,2,109,109,97,110,100,97,0,2,109,109,101,110,0,2,109,109,101,114,99,101,0,2,109,109,111,100,111,114,0,2,109,109,117,116,97,0,2,109,112,101,110,115,0,2,109,112,101,114,0,2,109,112,105,108,97,0,2,109,112,108,101,109,0,2,109,112,108,101,120,32,0,2,109,112,108,105,99,97,0,2,109,112,108,105,109,0,2,109,112,111,115,105,116,0,2,109,112,111,115,116,0,2,109,112,111,117,0,2,109,112,114,101,104,101,110,0,2,109,112,114,111,109,0,2,109,112,116,0,2,110,115,101,99,0,2,110,115,111,110,0,2,110,115,116,97,110,0,2,110,115,116,105,116,0,2,110,116,105,110,101,0,8,2,109,105,0,8,2,109,114,0,8,2,110,99,101,112,116,32,0,8,2,110,99,114,101,116,0,8,2,110,100,105,109,0,8,2,110,100,111,109,0,8,2,110,100,111,114,0,8,2,110,100,117,105,116,0,8,2,110,102,101,114,101,110,0,8,2,110,102,105,100,0,8,2,110,102,105,115,0,8,2,110,102,108,117,0,8,2,110,103,114,101,0,8,2,110,105,0,8,2,110,106,117,103,0,8,2,110,110,111,105,115,0,8,2,110,113,117,101,0,8,2,110,115,99,0,8,2,110,115,111,108,101,0,8,2,110,115,116,97,98,108,0,8,2,110,115,116,105,112,0,8,2,110,115,117,108,0,8,2,110,116,97,99,116,0,8,2,110,116,101,109,112,108,0,8,2,110,116,101,120,116,0,8,2,110,116,111,117,114,0,8,2,110,116,114,17,65,0,8,2,110,116,114,105,98,0,8,2,110,116,114,111,0,8,2,110,118,111,121,0,8,2,110,119,0,114,111,2,108,108,3,49,119,34,119,0,112,121,8,3,49,119,48,118,0,110,116,114,97,115,116,8,3,49,119,50,47,34,116,87,47,0,110,103,114,117,3,49,119,50,79,34,129,0,110,102,105,8,2,100,101,110,3,49,119,50,81,118,0,110,118,97,2,108,3,49,119,50,82,13,0,4,110,99,101,8,2,110,116,114,97,3,49,119,50,87,13,0,110,115,101,114,2,118,97,116,105,111,0,110,115,101,8,2,113,3,49,119,50,87,118,0,109,109,111,110,3,49,119,63,13,50,0,109,112,97,114,97,98,3,49,119,63,48,13,34,13,69,0,109,112,101,2,116,17,65,110,3,49,119,63,48,118,0,109,109,117,110,3,49,119,63,57,129,50,0,4,2,109,101,32,3,49,120,0,2,109,112,97,110,121,0,2,109,112,97,115,115,32,0,8,2,109,102,0,8,2,110,106,117,114,0,109,101,2,98,3,49,120,63,0,109,102,111,114,2,116,3,49,120,63,81,110,0,109,105,110,103,3,49,120,63,109,66,0,8,2,109,97,3,49,131,0,97,8,2,120,3,49,131,35,0,101,8,2,108,3,87,124,0,7,6,100,101,0,8,2,104,121,100,3,4,70,124,0,4,2,97,99,116,3,70,2,124,0,2,97,114,99,0,2,102,108,97,116,0,2,112,101,114,0,2,112,111,108,0,2,112,111,112,0,2,114,101,103,0,2,116,111,120,0,2,116,114,97,105,0,2,118,97,108,0,8,2,101,109,112,0,8,2,111,0,8,2,116,104,0,110,105,2,116,114,105,3,70,2,124,50,132,0,4,115,2,101,103,3,70,2,124,87,0,115,2,101,110,0,115,2,117,108,0,115,116,97,2,98,3,70,2,124,87,47,133,0,115,101,2,108,3,70,4,124,87,109,0,4,2,99,111,114,117,3,70,109,0,2,100,117,0,2,109,97,0,2,109,101,110,0,2,109,105,115,101,0,2,109,111,99,114,97,99,0,2,109,111,114,0,2,109,111,116,0,2,109,117,114,0,2,114,105,17,67,0,2,114,111,103,0,8,2,98,97,0,8,2,99,21,0,8,2,102,21,0,8,2,103,21,0,8,2,106,0,8,2,108,21,0,8,2,110,111,0,8,2,112,21,0,8,2,114,97,105,0,8,2,116,21,0,8,2,118,17,65,0,116,101,115,116,3,70,109,47,117,87,47,0,116,101,114,3,70,109,47,123,0,116,101,114,2,105,3,70,109,47,136,34,0,110,105,8,2,97,3,70,109,50,132,0,109,101,97,3,70,109,63,6,124,0,4,115,8,2,105,3,70,109,86,0,115,115,8,0,4,115,2,105,115,3,70,109,87,0,115,8,2,21,0,4,2,99,105,98,3,70,117,0,2,99,105,108,0,2,99,105,109,0,2,99,107,0,2,99,111,114,0,2,99,114,101,109,0,2,102,101,114,101,110,0,2,102,105,110,105,116,0,2,102,116,0,2,108,97,119,0,2,108,101,103,0,2,108,105,99,97,0,2,108,108,0,2,108,112,104,0,2,108,118,12,0,2,109,97,103,111,103,0,2,112,114,101,99,97,0,2,112,116,0,2,112,117,116,0,2,114,17,65,17,67,97,116,105,111,0,2,114,101,108,0,2,116,111,110,0,2,116,114,105,0,2,118,105,108,0,2,118,111,110,0,8,2,108,116,0,115,2,99,97,0,112,111,2,115,105,116,105,3,70,117,48,13,0,99,97,2,100,101,110,3,70,117,49,13,0,108,117,2,103,3,70,117,55,57,129,0,118,97,115,8,3,70,117,82,13,87,0,115,2,105,103,110,97,3,70,117,86,0,4,115,2,101,99,3,70,117,87,0,115,2,105,99,0,115,2,111,108,0,115,2,112,111,116,0,115,8,2,104,0,115,8,2,107,0,115,116,105,3,70,117,87,47,118,0,4,2,99,101,110,99,3,70,124,0,2,99,111,109,0,2,99,114,101,97,115,0,2,102,101,99,116,32,0,2,116,97,105,108,0,2,116,111,117,0,2,118,105,97,0,2,118,105,111,0,109,2,111,110,105,3,70,124,63,0,98,117,2,103,3,70,124,69,4,120,0,7,6,100,105,0,4,2,115,98,101,21,3,4,70,118,0,2,115,99,111,110,0,2,115,111,98,0,2,115,112,111,115,115,0,2,115,112,114,111,112,0,8,2,115,97,21,0,8,2,115,114,101,0,4,8,2,115,101,14,128,132,131,3,4,70,118,87,0,115,8,2,105,110,14,128,132,131,0,115,97,8,2,112,3,4,70,118,87,13,0,4,2,103,114,101,115,3,70,2,132,0,2,109,101,110,115,0,2,111,120,0,2,118,101,114,17,67,0,2,118,101,115,116,0,2,118,117,108,0,8,2,104,21,0,103,101,2,115,116,3,70,2,132,73,117,0,4,2,99,116,97,116,3,70,109,0,2,102,102,114,97,99,0,2,102,102,117,115,0,2,109,105,110,0,2,115,97,115,116,0,2,115,99,111,118,0,2,115,105,110,116,0,2,115,114,101,112,117,0,2,118,105,100,0,2,118,105,110,0,2,118,105,115,0,2,118,111,114,99,0,8,2,115,21,0,8,2,115,104,101,118,12,0,115,8,2,104,17,65,3,70,109,87,0,4,2,115,99,32,3,70,118,0,2,115,99,111,32,0,2,115,99,111,114,100,32,0,2,115,99,111,116,0,2,115,99,111,117,110,116,0,2,115,104,17,67,0,2,115,104,32,0,2,115,107,0,2,115,111,108,0,2,115,112,111,115,105,116,0,2,115,115,105,100,0,2,115,115,105,112,0,2,115,115,111,108,117,0,2,115,115,111,110,0,2,115,116,97,110,0,2,115,116,105,108,108,97,116,101,0,2,115,116,114,105,0,108,105,2,103,3,70,118,55,118,0,118,105,2,100,101,110,3,70,118,82,118,0,115,99,105,112,108,105,3,70,118,87,118,48,55,118,0,4,2,99,104,114,111,3,70,132,0,2,115,115,101,99,116,0,2,115,117,108,0,4,97,8,2,103,111,110,3,70,132,6,35,0,97,8,2,110,0,97,8,3,70,132,13,0,99,104,111,2,116,3,70,132,49,6,119,0,108,117,2,116,3,70,132,55,6,129,0,97,8,2,108,3,70,139,0,7,6,101,97,0,4,1,104,2,100,109,17,65,21,3,2,117,0,1,104,2,100,113,0,1,114,2,32,3,6,136,0,110,1,112,2,32,3,6,136,50,0,1,21,2,116,105,118,101,3,8,136,0,4,1,10,2,98,105,108,105,3,13,0,1,10,2,98,108,0,98,108,121,1,10,3,13,69,55,2,118,0,117,2,116,3,57,129,0,4,1,17,67,2,108,116,3,117,0,1,17,67,2,118,101,110,0,1,100,2,100,0,1,100,2,102,0,1,100,2,116,104,0,1,100,110,101,2,118,0,1,102,2,116,104,0,1,104,2,100,0,1,104,2,116,104,101,114,0,1,104,2,118,121,0,1,108,2,100,101,110,0,1,114,2,100,105,101,100,0,1,114,2,100,105,108,121,0,1,114,2,100,121,0,1,114,98,2,100,0,1,114,98,2,115,0,1,114,98,2,116,104,0,1,114,100,2,100,0,1,114,104,116,2,100,0,1,114,104,116,2,116,0,1,114,112,115,2,100,0,1,114,116,2,99,104,101,114,0,1,114,116,2,100,0,1,116,115,2,100,0,1,119,115,2,116,0,1,122,2,108,111,0,8,104,2,118,105,0,8,108,2,109,105,0,112,111,1,119,3,117,48,13,0,108,111,117,1,106,3,117,55,13,0,109,2,116,32,3,117,63,48,0,100,101,100,8,108,3,117,70,109,70,0,4,116,104,1,108,3,117,84,0,116,104,1,119,0,4,115,2,97,110,3,117,86,0,115,2,101,110,0,115,117,114,3,117,88,110,0,4,114,1,104,2,107,3,122,0,114,1,104,2,116,0,114,1,104,2,116,104,0,4,114,1,104,2,100,3,123,0,114,1,104,2,115,101,0,114,1,104,101,114,2,115,0,114,1,108,2,110,0,114,1,112,2,108,0,114,1,115,2,99,104,0,114,1,121,2,110,0,114,2,116,104,0,114,8,2,108,0,114,8,2,110,0,4,3,124,0,1,17,67,29,2,110,32,0,1,98,2,110,0,1,102,2,108,116,0,1,104,2,118,0,1,109,2,108,116,0,1,115,17,67,2,32,0,1,114,99,2,116,3,124,6,133,0,1,104,116,2,116,114,105,3,124,35,0,100,109,101,1,114,3,124,70,63,124,0,103,101,114,3,124,79,110,0,116,104,1,114,98,2,101,3,124,84,0,115,111,2,110,3,124,86,13,0,115,101,2,21,3,124,87,0,4,117,3,131,0,117,120,0,4,1,114,98,2,107,3,133,0,1,114,103,2,116,0,1,116,115,2,107,0,4,114,1,98,3,135,0,114,1,116,2,17,65,0,114,1,119,0,114,1,119,115,0,4,1,21,2,32,3,136,0,1,104,116,2,116,0,8,98,2,116,114,105,0,110,2,32,3,136,50,0,108,1,10,2,32,3,136,55,0,4,114,3,137,0,114,1,98,2,100,0,114,1,119,2,121,0,7,6,101,100,0,4,1,21,2,105,101,110,3,6,124,70,0,1,99,2,101,32,0,1,104,2,114,97,0,1,104,2,114,97,108,0,1,104,2,114,111,110,0,1,115,114,2,101,0,117,114,1,21,3,6,124,73,110,0,4,1,99,21,2,32,14,128,155,130,3,47,0,1,102,21,2,32,14,128,155,130,0,1,104,99,10,2,32,14,128,139,130,0,1,104,115,10,2,32,14,128,139,130,0,1,107,21,2,32,14,128,155,130,0,1,112,21,2,32,14,128,155,130,0,1,115,115,21,2,32,14,128,152,130,0,1,120,21,2,32,14,128,138,130,0,4,1,17,67,21,2,32,14,128,155,130,3,70,0,1,21,21,2,32,14,128,155,130,0,1,103,21,2,32,14,128,138,129,0,1,108,99,2,32,14,128,136,129,0,1,108,101,2,32,14,128,152,130,0,1,110,101,10,2,32,14,128,136,130,0,1,114,101,21,21,2,32,14,128,136,130,0,1,121,2,32,14,128,136,130,0,4,1,100,21,2,32,14,128,155,130,3,109,70,0,1,116,21,2,32,14,128,155,130,0,4,1,104,115,17,67,21,2,32,3,117,70,0,1,119,121,2,32,0,5,8,1,100,21,2,32,14,128,155,130,0,5,8,1,116,21,2,32,14,128,155,130,0,105,98,1,114,99,3,117,70,118,69,0,103,2,101,13,3,117,73,0,4,1,114,100,21,2,32,3,118,70,0,1,114,102,21,2,32,14,128,136,130,0,108,121,2,32,3,118,70,55,2,118,0,4,1,109,2,105,97,3,124,70,0,1,109,2,105,111,0,1,109,2,105,117,0,1,112,2,101,32,0,1,116,2,105,0,1,119,115,0,105,97,116,101,1,109,21,3,124,70,109,13,47,0,7,6,101,105,0,4,1,108,2,115,3,117,0,99,101,1,108,2,115,116,0,4,1,102,2,116,32,3,118,0,2,110,97,116,101,0,4,1,21,2,110,32,3,124,0,1,21,2,110,101,0,1,99,0,2,116,104,0,2,118,0,2,122,0,103,104,1,108,0,103,104,1,107,3,124,85,0,108,1,110,3,124,114,0,4,1,98,2,110,103,3,124,118,0,1,104,116,2,115,17,67,0,4,1,104,2,116,32,3,132,0,5,35,2,116,104,101,114,0,8,0,103,104,1,104,2,116,0,115,8,115,2,109,3,132,86,0,99,104,3,132,99,0,4,3,133,0,103,2,110,0,103,104,0,103,104,1,108,115,0,103,104,116,104,3,133,47,85,0,114,3,135,0,114,1,119,3,137,0,7,6,101,108,0,4,8,2,17,65,3,2,118,55,0,108,8,2,105,112,0,101,8,2,99,116,114,111,3,2,118,55,4,117,0,101,8,2,99,116,114,111,108,3,2,118,55,117,0,105,116,8,3,2,118,55,124,47,0,4,1,99,120,2,32,3,6,117,55,0,1,108,108,97,2,111,0,1,110,110,111,2,32,0,1,112,2,32,0,2,105,103,105,0,108,97,1,10,2,32,3,6,117,55,13,0,111,112,1,118,3,6,117,55,13,48,0,108,105,1,21,2,32,3,6,117,55,118,0,4,1,100,2,105,118,3,13,55,0,1,118,2,111,99,0,108,1,10,2,111,117,115,0,108,101,114,1,118,10,2,32,3,13,55,13,0,108,105,110,103,1,10,3,13,55,109,66,0,1,115,2,101,99,116,3,109,55,0,4,1,10,2,32,3,114,0,1,10,2,115,32,0,1,116,2,112,0,4,1,98,105,99,2,32,3,117,55,0,1,108,108,97,0,5,8,1,10,2,32,0,5,8,1,10,2,115,32,0,111,2,113,3,117,55,13,0,115,101,8,3,117,55,87,0,101,8,2,99,116,114,111,110,3,117,55,117,0,4,101,8,2,103,3,117,55,118,0,101,8,2,112,0,101,8,2,118,97,0,101,109,8,3,117,55,118,63,0,1,102,2,105,120,3,124,55,0,7,6,101,109,0,8,3,2,117,63,0,1,21,2,98,101,114,3,6,117,63,0,1,104,112,115,2,101,3,6,124,63,0,4,1,10,2,32,3,13,63,0,1,104,112,115,0,4,2,105,115,115,105,3,109,63,0,2,117,108,115,0,8,2,97,0,8,2,101,0,8,2,105,116,0,8,2,111,0,109,2,97,110,0,4,2,97,110,97,3,117,63,0,2,98,108,101,109,0,2,98,114,121,0,2,101,114,97,108,0,2,101,114,121,0,2,105,0,2,112,97,116,104,0,2,112,101,114,0,2,112,104,97,115,0,2,112,114,101,115,0,2,112,116,105,0,2,112,116,121,0,2,117,108,0,109,2,101,0,111,114,114,104,1,104,3,117,63,13,34,0,98,97,2,115,3,117,63,69,13,0,4,1,102,2,97,108,101,3,124,63,0,1,104,2,111,0,2,97,105,108,0,7,6,101,110,0,4,2,100,101,97,3,2,117,50,0,2,105,103,109,97,32,0,2,109,101,115,0,8,2,21,0,8,2,100,97,0,8,2,100,117,0,8,2,116,105,0,110,8,0,114,111,108,3,2,117,50,34,131,55,0,114,97,103,101,3,2,117,50,34,133,73,0,116,105,99,101,1,10,3,2,117,50,47,132,87,0,108,105,2,118,3,2,117,50,55,132,0,100,111,114,8,3,2,117,50,70,128,0,99,104,97,8,2,110,3,2,117,50,74,116,0,118,105,114,111,3,2,117,50,82,132,34,13,0,116,104,114,97,2,108,3,2,117,50,85,34,125,0,99,121,2,99,108,105,3,2,117,50,87,118,0,115,104,114,105,110,101,3,2,117,50,89,34,132,50,0,2,116,101,114,116,3,4,117,50,0,2,116,114,101,112,3,4,119,50,0,4,1,21,2,100,111,32,3,6,117,50,0,1,21,2,116,97,108,0,1,21,2,116,111,117,115,0,1,21,2,116,117,0,1,108,108,105,109,2,105,97,0,1,115,101,114,112,101,2,116,0,1,115,115,2,116,0,1,116,115,111,2,115,0,2,100,17,65,32,0,2,116,105,97,108,0,110,2,105,97,0,116,97,114,121,1,109,2,32,3,6,117,50,47,13,34,2,118,0,107,111,1,10,2,32,3,6,117,50,49,131,0,115,107,2,32,3,6,117,50,87,49,0,103,2,32,3,6,117,66,0,4,2,97,32,3,6,124,50,0,2,97,114,121,0,2,105,97,0,111,117,115,1,21,2,32,3,8,13,50,13,87,0,101,115,1,104,116,21,21,2,32,3,8,13,50,124,86,0,4,1,10,2,17,65,110,99,101,3,13,50,0,1,10,2,32,0,1,10,2,99,101,32,0,1,10,2,101,100,32,0,1,10,2,101,114,32,0,1,10,2,109,101,110,116,0,1,10,2,116,32,0,1,10,2,116,104,32,0,1,103,101,2,100,0,1,112,114,97,99,0,1,118,21,21,2,116,32,0,1,118,108,2,116,32,0,99,121,1,10,2,32,3,13,50,87,2,37,0,105,110,101,1,10,3,13,50,124,50,0,4,8,2,111,3,109,50,0,8,2,111,117,103,104,0,8,2,117,0,97,8,2,109,3,109,50,35,0,4,1,10,2,99,104,3,117,50,0,1,99,114,101,112,2,116,0,1,99,115,97,2,116,0,1,102,2,99,101,32,0,1,115,110,2,116,0,1,116,110,2,116,0,1,116,120,2,116,0,1,118,2,116,32,0,2,100,111,117,115,0,2,105,103,0,2,115,105,103,0,2,116,101,114,0,2,116,105,0,2,116,105,116,121,0,2,116,114,97,110,0,2,116,114,105,0,2,116,114,111,0,2,118,105,17,65,0,2,118,111,121,0,2,118,121,0,2,122,121,0,5,8,1,10,2,99,101,32,0,5,8,1,10,2,116,32,0,8,2,100,0,8,2,101,0,8,2,109,0,8,2,116,114,121,0,8,99,115,101,100,2,116,0,8,115,101,114,2,116,0,101,114,1,103,2,97,108,3,117,50,13,34,0,101,109,1,116,3,117,50,13,63,0,116,105,8,99,3,117,50,47,118,0,99,108,97,118,3,117,50,49,55,133,82,0,100,111,119,3,117,50,70,6,130,0,100,111,8,3,117,50,70,131,0,103,105,110,3,117,50,73,118,50,0,103,105,110,103,3,117,50,73,118,66,0,101,114,8,3,117,50,110,0,103,2,116,104,3,117,66,0,4,1,10,2,103,101,114,3,118,50,0,1,107,99,105,104,99,0,103,2,108,17,65,3,118,66,79,0,4,2,99,111,114,101,3,119,50,0,2,116,114,101,99,0,4,1,99,115,2,101,3,124,50,0,1,103,2,105,17,65,0,2,97,108,32,0,8,115,2,105,0,101,2,32,0,4,105,1,108,2,101,3,124,50,118,0,105,1,118,2,101,0,7,6,101,111,0,1,21,21,2,32,3,6,133,131,0,117,115,1,10,2,32,3,8,136,87,0,4,110,1,103,3,13,50,0,110,1,104,99,0,1,104,116,2,21,3,109,13,0,1,103,3,109,119,0,4,101,115,2,32,3,109,131,86,0,115,2,32,0,4,1,103,2,102,102,3,117,0,1,106,2,112,0,4,1,104,116,2,99,114,97,99,121,3,118,6,119,0,1,104,116,2,108,111,103,105,115,0,1,104,116,2,108,111,103,121,0,4,1,102,3,124,0,1,112,2,112,108,0,115,105,115,1,21,3,124,6,131,87,118,87,0,114,1,103,2,103,17,65,3,127,0,2,100,32,3,130,0,118,101,114,3,131,82,13,0,4,1,104,116,2,114,3,136,0,8,108,0,7,6,101,114,0,109,101,8,102,2,110,116,3,2,123,63,117,0,4,1,21,2,105,116,121,3,6,117,34,0,2,105,99,32,0,2,105,99,97,108,0,4,1,21,2,17,67,97,108,32,3,6,123,0,1,21,2,17,67,105,99,32,0,1,21,2,115,105,97,108,0,1,109,2,103,101,0,1,118,2,103,101,0,2,98,105,97,108,0,2,103,105,99,32,0,2,110,97,108,32,0,2,115,97,108,0,2,115,105,111,110,0,114,101,100,2,32,3,6,123,70,0,103,105,110,103,3,6,123,73,109,66,0,114,101,3,6,135,0,1,21,2,111,32,3,6,135,34,0,105,2,17,65,3,6,136,34,109,0,101,97,108,3,6,136,34,109,114,0,4,1,104,100,97,2,101,3,6,137,0,1,104,111,99,2,101,0,101,1,99,2,32,0,4,1,10,2,111,17,67,101,32,3,8,13,34,0,1,10,2,111,117,115,0,121,2,32,3,13,34,2,118,0,121,3,13,34,118,0,4,105,115,1,10,2,97,3,13,34,132,86,0,105,115,101,1,10,2,32,0,105,122,1,10,2,97,0,105,122,101,1,10,2,32,0,116,111,1,104,2,32,3,13,47,129,0,4,1,21,2,101,110,99,101,32,3,34,0,2,101,110,116,32,0,105,101,115,2,32,14,128,130,130,3,86,0,4,1,99,2,97,109,3,109,34,0,8,2,17,65,0,8,104,2,101,100,0,101,1,104,2,100,105,3,109,34,117,0,101,1,105,2,32,3,109,135,0,4,1,10,3,110,0,1,10,2,32,0,1,10,2,110,32,0,1,10,2,115,32,0,1,10,2,116,32,0,1,17,67,11,2,32,14,128,128,131,0,1,21,21,21,2,32,14,128,145,130,0,1,98,109,2,32,0,1,99,115,97,2,116,0,1,108,108,2,32,14,128,128,130,0,1,108,108,97,2,32,0,1,110,105,108,2,32,14,128,128,129,0,1,112,2,99,101,110,0,1,112,2,104,97,112,0,1,115,115,2,32,14,128,128,130,0,101,1,10,2,32,0,101,1,10,2,32,0,4,1,10,2,17,65,3,110,34,0,1,10,2,105,110,103,0,2,105,101,0,2,105,101,32,0,121,2,17,65,3,110,57,0,4,115,1,17,67,11,2,32,14,128,128,132,3,110,86,0,115,1,110,105,108,2,32,14,128,128,130,0,5,8,1,10,2,32,3,115,0,115,5,8,1,17,67,11,2,32,14,128,128,132,3,115,86,0,2,114,17,65,3,117,0,4,2,105,17,67,3,117,34,0,8,2,117,100,0,8,17,67,17,67,2,17,65,0,8,104,2,17,65,0,114,1,17,67,29,0,114,8,2,17,65,0,114,121,5,3,1,98,2,32,3,117,34,2,118,0,4,101,1,104,2,115,3,117,34,13,0,101,1,104,2,116,0,4,101,1,99,2,109,111,110,3,117,34,109,0,101,1,104,2,102,0,121,8,118,0,101,111,1,116,115,3,117,34,109,131,0,97,108,1,103,2,100,3,117,34,114,0,4,5,35,1,104,2,116,102,3,122,0,5,35,8,100,2,98,0,4,3,123,0,1,17,67,29,0,1,21,2,115,121,0,1,99,2,110,32,0,1,99,2,116,0,1,99,110,111,99,2,116,32,0,1,109,2,99,0,1,115,2,118,97,110,0,1,118,2,116,0,1,118,21,2,116,32,0,2,17,66,32,0,2,32,0,2,115,101,0,2,115,105,98,0,2,115,105,102,0,2,115,105,118,0,2,116,105,111,110,0,2,118,101,0,8,0,8,117,113,0,101,2,32,0,2,17,65,3,123,34,0,109,101,97,1,112,2,98,3,123,63,136,0,4,101,1,112,109,2,32,3,135,0,114,2,32,24,0,4,1,104,2,101,110,3,136,34,0,1,122,2,111,0,8,17,67,2,111,32,0,105,1,112,120,101,2,101,110,3,136,34,109,0,105,111,8,112,2,100,105,99,3,136,34,109,6,119,0,105,111,8,112,2,100,3,136,34,109,13,0,121,1,117,113,3,136,34,118,0,4,101,1,17,67,29,2,32,3,137,0,101,1,104,112,115,2,32,0,101,1,109,2,32,0,101,1,118,101,2,32,0,101,8,104,0,7,6,101,115,0,4,2,99,97,112,101,3,2,117,87,0,2,99,97,112,105,0,8,2,112,21,0,99,1,21,2,101,110,17,67,3,6,117,87,0,4,1,110,103,97,109,2,105,3,6,124,86,0,2,105,99,0,101,1,110,21,2,32,0,2,105,118,101,3,6,124,87,0,105,115,1,114,2,32,3,6,124,87,118,87,0,4,1,10,2,116,32,3,13,87,0,1,10,2,121,32,0,1,118,2,116,121,0,115,1,114,101,2,32,0,115,1,114,116,10,2,32,0,115,97,1,99,101,110,2,114,121,3,13,87,13,0,4,1,10,2,32,14,128,130,129,3,86,0,1,17,67,10,2,32,14,128,130,129,0,1,104,116,10,2,32,14,128,128,129,0,1,105,114,101,110,2,32,14,128,130,130,0,1,114,10,2,32,14,128,128,129,0,4,1,102,10,2,32,14,128,128,129,3,87,0,1,107,10,2,32,14,128,128,129,0,1,112,10,2,32,14,128,128,129,0,1,116,10,2,32,14,128,128,129,0,1,117,113,10,2,32,14,128,128,129,0,4,1,99,10,2,32,14,128,128,129,3,109,86,0,1,103,10,2,32,14,128,128,129,0,1,104,99,10,2,32,14,128,128,129,0,1,104,112,10,2,32,14,128,128,129,0,1,104,115,2,32,14,128,128,130,0,1,115,10,2,32,14,128,128,129,0,1,115,115,10,2,32,14,128,128,130,0,1,115,117,10,2,32,14,128,129,130,0,1,115,117,114,10,2,32,14,128,128,130,0,1,115,117,116,10,2,32,14,128,128,130,0,1,120,10,2,32,14,128,128,130,0,1,122,10,2,32,14,128,128,130,0,4,2,99,97,114,112,3,109,87,0,2,112,101,99,105,0,2,116,97,116,101,0,8,2,116,97,98,0,1,114,112,2,101,110,116,3,117,86,0,4,1,114,17,67,2,116,3,117,87,0,1,118,2,116,12,0,8,2,112,108,0,115,1,116,115,105,100,2,32,0,1,118,114,97,104,2,116,3,118,87,0,111,112,104,97,3,118,87,6,119,81,13,0,4,8,120,97,3,124,86,0,101,2,32,0,8,2,112,101,97,107,3,124,87,0,7,6,101,116,0,4,2,105,116,111,114,3,6,117,47,0,116,101,2,32,0,116,97,2,32,3,6,117,47,13,0,4,101,100,1,108,2,32,3,6,124,47,109,70,0,101,100,1,114,99,2,32,0,105,110,103,1,108,2,32,3,6,124,47,118,66,0,114,121,1,109,3,8,13,47,34,2,118,0,4,1,108,10,2,32,3,13,47,0,8,109,2,105,99,0,116,1,108,97,112,2,101,0,104,1,17,67,21,2,32,14,128,129,131,3,13,85,0,4,1,21,2,32,3,109,47,0,8,2,101,114,110,0,105,110,103,1,10,2,32,3,109,47,2,118,66,0,101,100,1,10,2,32,3,109,47,109,70,0,4,1,98,97,104,112,2,32,3,117,47,0,1,106,2,32,0,1,110,17,65,2,32,0,1,114,103,2,12,0,1,115,2,32,0,1,116,2,32,0,4,104,2,105,99,3,117,85,0,104,8,2,97,0,104,8,2,101,108,0,4,1,21,2,97,116,101,3,118,47,0,1,21,2,97,116,105,111,110,0,1,107,114,0,1,108,108,2,32,0,4,1,102,2,97,3,124,47,0,8,2,111,110,0,8,109,2,101,0,8,112,2,101,0,101,2,32,0,4,101,114,1,109,2,32,3,124,47,110,0,114,101,1,109,0,4,104,2,121,3,124,85,0,104,5,35,2,97,110,101,0,104,8,2,17,65,0,1,114,101,98,2,32,3,133,0,7,6,101,118,0,4,101,114,2,99,3,4,117,82,110,0,101,114,2,108,0,101,114,2,109,0,4,8,3,109,82,0,8,2,105,99,116,0,8,2,105,115,0,101,8,2,110,116,3,109,82,117,0,101,114,8,2,115,3,109,82,123,0,4,1,108,2,101,108,3,117,82,0,5,3,8,2,111,108,117,0,8,2,105,0,101,114,121,3,117,82,34,109,0,4,101,114,1,108,99,3,117,82,110,0,101,114,2,32,0,101,114,8,0,4,1,108,108,97,3,124,82,0,1,114,98,98,97,0,1,116,115,2,101,0,2,105,108,0,101,1,108,99,2,108,0,101,8,0,101,110,8,3,124,82,13,50,0,4,101,114,1,102,2,12,3,124,82,110,0,101,114,5,35,8,108,0,7,6,101,120,0,4,8,3,2,117,49,87,0,99,2,105,0,99,8,2,101,0,116,114,97,2,111,114,3,2,117,49,87,47,34,0,116,114,97,118,97,2,103,3,2,117,49,87,47,34,35,82,13,0,112,101,114,105,109,3,2,117,49,87,48,117,34,118,63,0,4,8,2,17,65,3,2,117,79,86,0,104,8,0,1,21,2,105,97,3,6,117,49,87,0,4,1,17,67,2,101,3,117,49,87,0,2,101,114,99,0,2,112,101,114,116,0,99,2,101,108,108,101,0,116,101,114,2,17,67,3,117,49,87,47,6,123,0,116,114,97,2,112,111,108,3,117,49,87,47,34,6,35,0,116,114,97,3,117,49,87,47,34,13,0,116,114,97,2,99,116,3,117,49,87,47,34,35,0,116,114,97,2,110,3,117,49,87,47,34,133,0,112,101,100,2,105,116,3,117,49,87,48,13,70,0,99,97,118,3,117,49,87,49,13,82,0,111,114,2,99,3,117,49,87,110,0,101,2,99,117,116,105,111,3,117,49,87,118,0,8,2,105,116,3,117,79,86,0,1,115,115,2,32,3,118,49,87,0,7,6,101,121,0,1,10,2,32,3,2,118,0,111,114,2,32,3,6,133,110,0,101,100,2,32,14,128,128,130,3,70,0,1,21,2,17,67,21,3,118,0,8,107,2,12,3,124,0,4,3,132,0,101,8,0,101,114,1,109,21,2,32,3,132,110,0,4,1,17,67,29,3,133,0,1,118,17,67,2,32,0,2,97,110,0,8,98,97,0,101,0,7,6,105,97,0,4,1,102,2,110,116,3,6,139,0,1,102,101,2,110,99,101,0,1,108,2,110,99,101,0,1,108,112,2,110,116,0,104,2,32,0,116,104,3,6,139,85,0,114,121,1,10,3,8,57,13,34,2,118,0,116,101,1,21,2,32,3,8,109,133,47,0,99,1,10,2,32,3,8,118,35,49,0,1,21,2,32,3,8,124,13,0,4,1,21,2,116,105,118,101,3,8,136,0,1,21,21,2,32,0,114,121,1,108,10,3,8,136,34,2,118,0,2,110,103,32,3,57,35,0,4,1,108,97,2,110,116,3,109,13,0,1,108,108,105,2,110,99,101,0,1,108,108,105,2,110,116,0,1,114,2,98,0,1,116,2,98,0,2,109,0,103,101,1,10,2,32,3,109,73,0,114,100,2,32,3,109,110,70,0,114,99,104,3,109,122,49,0,105,3,109,132,0,4,1,21,2,110,97,3,118,6,35,0,1,21,2,110,105,99,0,1,21,2,110,105,116,0,8,102,2,110,99,3,118,6,119,0,110,99,101,8,102,3,118,6,119,50,87,133,0,114,97,2,32,3,118,6,121,34,13,0,116,101,1,114,112,111,2,32,3,118,13,47,0,110,1,21,2,99,121,3,118,13,50,0,1,112,2,110,111,3,118,35,0,114,2,105,17,67,3,118,35,34,0,105,115,1,108,3,118,133,86,0,1,17,67,29,3,132,13,0,114,5,8,1,17,67,3,132,115,0,4,1,10,2,110,3,136,0,8,112,2,110,17,65,0,110,8,3,136,50,0,114,1,108,21,2,32,3,137,0,4,1,102,2,98,3,139,0,114,0,114,1,17,67,0,7,6,105,101,0,117,1,108,2,116,101,3,2,117,81,0,1,10,2,32,3,2,118,0,8,118,2,116,3,2,136,0,110,101,1,100,2,32,3,6,132,124,50,0,116,121,1,21,3,6,139,47,2,118,0,108,1,114,10,2,32,3,8,124,114,0,115,116,1,10,2,32,14,128,130,131,3,13,87,47,0,4,119,3,57,129,0,119,2,32,0,100,2,32,14,128,130,130,3,70,0,100,115,2,32,14,128,130,131,3,70,86,0,115,2,32,14,128,130,130,3,86,0,4,2,108,108,17,65,3,109,6,117,0,2,110,17,67,105,17,65,0,2,116,116,0,114,1,10,2,121,3,109,13,34,0,108,1,110,10,2,32,3,109,114,0,115,99,3,109,117,87,0,1,100,101,109,2,118,97,108,3,109,124,0,114,114,101,2,32,3,109,135,0,114,1,10,2,32,24,14,128,130,130,3,110,0,114,39,115,1,10,2,32,24,14,128,130,132,3,110,86,0,1,114,102,2,110,100,3,117,0,4,3,118,0,1,112,112,2,32,0,1,115,2,118,101,0,2,110,116,97,108,3,118,6,117,0,110,110,101,1,21,2,32,3,118,6,117,50,0,2,103,111,3,118,6,133,0,100,108,121,3,118,70,55,2,118,0,4,1,29,3,124,0,1,102,2,110,100,0,1,103,2,110,0,1,114,112,2,115,116,0,2,99,101,0,2,102,0,2,107,0,2,108,0,2,118,0,2,118,101,0,2,122,0,8,114,0,8,122,0,104,2,17,67,0,115,116,97,3,124,6,117,87,47,13,0,106,3,124,6,133,0,103,2,101,13,3,124,73,0,4,115,1,99,101,112,115,2,32,3,124,86,0,115,1,114,101,115,2,32,0,105,2,32,3,124,132,0,117,1,108,3,129,0,117,116,101,5,3,1,108,3,129,47,6,117,0,4,1,112,2,32,3,132,0,2,32,0,2,99,0,8,116,2,17,66,0,5,8,8,99,115,2,110,3,132,115,0,4,1,10,2,116,32,3,136,0,1,21,2,116,104,0,2,110,0,4,114,3,137,0,114,2,99,0,4,1,99,115,2,110,99,3,139,0,1,108,99,2,110,116,0,2,110,116,105,17,67,0,2,116,0,8,99,115,2,110,0,8,104,2,114,0,114,1,108,112,2,32,0,114,8,114,17,67,0,7,6,105,103,0,110,1,115,2,111,3,2,118,50,57,0,4,2,110,111,3,2,118,79,0,8,2,110,105,0,8,109,2,114,97,116,3,2,132,79,0,110,101,2,32,3,6,124,50,0,4,117,2,32,3,6,124,79,0,117,2,101,0,97,110,1,110,2,32,3,8,118,79,13,50,0,101,111,3,118,73,13,0,105,98,1,10,3,118,73,13,69,0,4,1,100,2,110,17,65,3,118,79,0,2,110,97,0,2,110,111,109,0,2,110,111,114,97,110,0,1,109,97,2,97,32,3,124,79,0,4,1,21,2,110,32,3,132,0,1,21,2,110,101,0,104,1,104,0,104,1,110,0,104,1,115,0,104,2,116,0,4,110,2,17,67,3,132,50,0,110,2,32,0,109,2,32,3,132,63,0,4,1,116,2,101,12,3,132,79,0,1,116,2,114,0,8,109,2,114,97,0,7,6,105,109,0,4,8,2,21,3,2,118,63,0,109,8,2,21,0,112,101,114,2,17,67,21,3,2,118,63,48,123,0,4,2,112,101,99,117,3,4,118,63,0,2,112,111,114,116,117,0,2,112,114,101,103,110,97,0,2,112,114,101,115,97,0,109,2,97,116,0,109,2,101,109,0,105,108,101,1,115,3,6,118,63,109,55,118,0,1,104,115,2,97,32,3,6,124,63,0,111,117,115,1,21,2,32,3,8,118,63,13,87,0,4,1,21,2,101,116,114,3,118,63,0,1,108,0,1,108,2,101,114,0,2,97,103,101,0,2,101,110,116,12,0,2,105,116,0,2,112,97,99,0,2,112,101,116,117,115,0,2,112,108,97,110,116,32,0,2,112,108,101,0,2,112,108,105,99,97,0,2,112,114,111,118,105,115,0,2,112,117,108,115,101,32,0,2,117,109,0,109,2,105,103,0,109,2,105,110,0,109,2,117,110,105,115,0,112,111,2,116,101,110,3,118,63,48,13,0,4,101,2,116,101,114,32,3,118,63,124,0,101,2,116,114,101,0,4,1,108,99,3,132,63,0,5,3,1,115,2,117,108,116,0,8,114,112,2,97,0,101,1,108,0,101,1,100,2,110,115,3,132,63,117,0,7,6,105,110,0,4,8,2,21,14,128,132,130,3,2,118,50,0,8,2,99,111,114,112,0,8,2,99,114,101,100,0,8,2,115,116,105,108,0,8,2,116,101,103,114,105,0,110,8,2,117,109,0,116,8,2,101,114,105,111,12,3,2,118,50,47,0,116,114,97,8,2,17,67,17,67,3,2,118,50,47,34,35,0,116,101,114,8,2,114,111,103,3,2,118,50,47,117,0,4,116,101,114,8,2,110,32,3,2,118,50,47,123,0,116,101,114,8,2,110,97,108,0,116,101,114,8,2,112,111,108,21,0,116,101,114,8,2,112,114,0,116,101,114,112,114,101,2,116,3,2,118,50,47,123,48,34,118,0,100,8,2,101,102,105,110,3,2,118,50,70,0,102,114,97,8,2,99,3,2,118,50,81,34,35,49,0,102,97,8,2,108,3,2,118,50,81,35,0,4,8,2,100,101,14,128,132,130,3,4,118,50,0,8,2,100,105,115,14,128,132,130,0,8,2,100,105,118,14,128,132,130,0,8,2,101,120,14,128,132,130,0,8,2,115,101,99,14,128,132,130,0,8,2,115,105,103,110,105,102,14,128,132,130,0,8,2,115,105,110,99,14,128,132,130,0,116,101,114,8,2,17,65,14,128,132,133,3,4,118,50,47,13,34,0,116,114,111,8,2,21,3,4,118,50,47,34,13,0,116,101,114,8,2,21,14,128,132,133,3,4,118,50,47,110,0,102,114,97,8,2,14,128,132,133,3,4,118,50,81,34,13,0,1,21,2,99,105,97,108,3,6,118,50,0,100,97,1,21,2,32,3,6,118,50,70,13,0,4,1,107,2,97,32,3,6,124,50,0,1,108,2,97,32,0,1,114,2,97,32,0,1,116,2,97,32,0,105,1,21,2,32,3,6,124,50,118,0,111,2,32,3,6,124,50,131,0,105,110,1,10,2,32,3,8,13,50,118,50,0,4,1,21,2,97,116,101,3,8,118,50,0,1,109,10,2,97,108,32,0,111,117,115,1,21,2,32,3,8,118,50,13,87,0,4,1,115,97,98,2,32,3,13,50,0,5,7,1,10,2,32,0,4,1,109,97,120,2,101,3,109,50,0,101,1,109,114,101,2,32,0,4,1,10,2,101,110,17,67,3,118,50,0,1,99,2,101,0,1,99,110,105,2,101,0,1,103,2,101,0,1,107,2,100,101,114,103,0,1,107,2,100,108,0,1,107,2,100,114,0,1,114,116,2,105,0,1,118,2,101,103,0,2,100,101,120,0,2,100,105,97,0,2,101,97,0,2,101,101,0,2,102,105,110,105,116,101,0,2,115,101,99,116,0,8,2,98,0,8,2,99,97,110,0,8,2,99,101,110,115,0,8,2,99,104,0,8,2,99,111,109,17,65,0,8,2,99,114,101,0,8,2,99,117,98,0,8,2,99,117,108,0,8,2,100,105,99,0,8,2,100,105,103,111,0,8,2,100,105,114,0,8,2,100,111,108,0,8,2,102,97,109,0,8,2,102,105,100,0,8,2,102,105,108,0,8,2,102,108,111,0,8,2,102,108,117,0,8,2,102,111,32,0,8,2,106,117,114,0,8,2,108,0,8,2,109,0,8,2,111,102,0,8,2,111,114,103,0,8,2,112,0,8,2,113,117,101,0,8,2,113,117,105,115,0,8,2,114,0,8,2,115,101,116,0,8,2,115,104,0,8,2,115,105,103,104,0,8,2,115,111,102,0,8,2,115,111,108,97,0,8,2,115,111,108,101,0,8,2,115,111,109,117,0,8,2,115,112,105,114,0,8,2,115,116,97,110,0,8,2,115,116,105,0,8,2,115,116,114,117,109,0,8,2,115,117,98,0,8,2,115,117,108,0,8,2,116,97,107,0,8,2,116,101,103,0,8,2,116,105,109,97,0,8,2,116,111,110,97,0,8,2,117,110,0,8,2,118,111,105,0,8,2,119,97,0,101,1,108,97,110,2,32,0,101,1,108,117,2,32,0,110,8,2,25,0,101,120,8,2,111,114,3,118,50,6,117,49,87,0,4,105,1,102,21,2,116,101,3,118,50,13,0,110,111,8,2,99,101,0,110,111,8,2,118,0,101,114,97,1,109,2,108,3,118,50,13,34,13,0,116,101,2,108,108,101,99,3,118,50,47,13,0,116,101,114,2,101,115,116,3,118,50,47,13,34,0,116,101,114,102,101,114,3,118,50,47,13,81,6,137,0,116,114,105,103,117,3,118,50,47,34,6,124,79,0,4,116,114,97,8,3,118,50,47,34,13,0,116,114,111,8,2,118,0,116,114,105,99,97,3,118,50,47,34,118,49,13,0,116,101,114,2,118,105,101,119,3,118,50,47,110,0,99,114,101,109,3,118,50,49,34,118,63,0,100,105,8,2,103,101,3,118,50,70,118,0,103,1,114,102,110,3,118,50,73,0,102,97,110,8,3,118,50,81,13,50,0,102,111,114,2,109,97,116,105,111,3,118,50,81,110,0,99,105,2,100,101,3,118,50,87,118,0,4,105,1,109,100,97,3,118,50,118,0,105,8,109,0,117,116,101,8,109,2,109,3,118,50,118,47,0,105,97,116,117,114,1,109,3,118,50,118,74,110,0,105,115,109,2,32,3,118,50,118,86,13,63,0,4,2,103,111,116,3,118,66,0,8,2,103,114,111,0,8,2,107,0,103,1,21,2,32,12,14,128,153,131,0,103,1,108,101,2,32,12,14,128,152,131,0,103,1,109,111,21,21,2,32,14,128,152,131,0,103,1,110,101,2,32,14,128,136,131,0,103,1,114,17,66,2,32,0,103,1,114,101,2,32,14,128,136,131,0,103,1,117,103,111,108,2,32,14,128,136,132,0,103,1,120,2,32,12,14,128,136,131,0,4,103,108,121,1,21,2,32,14,128,153,133,3,118,66,55,118,0,103,108,121,1,114,101,2,32,14,128,168,133,0,4,103,109,101,110,116,1,21,2,32,14,128,153,135,3,118,66,63,13,50,47,0,103,109,101,110,116,1,114,101,2,32,14,128,136,135,0,103,108,121,1,110,101,2,32,14,128,168,133,3,118,66,79,118,0,4,103,115,1,21,2,32,14,128,153,132,3,118,66,86,0,103,115,1,110,101,2,32,14,128,136,132,0,103,115,1,114,101,2,32,14,128,136,132,0,4,101,1,99,21,2,32,3,124,50,0,101,1,100,10,2,32,0,101,1,104,99,17,65,2,32,0,101,1,104,112,2,32,0,101,1,108,105,2,32,0,101,1,108,111,2,32,0,101,1,114,21,2,32,0,101,1,116,21,2,32,0,101,1,122,2,32,0,4,1,98,2,100,3,132,50,0,1,102,2,97,0,1,102,2,100,0,1,103,2,97,32,0,1,104,2,100,17,66,0,1,104,2,100,32,0,1,104,99,2,97,0,1,104,101,98,2,100,0,1,104,115,2,105,0,1,107,2,100,0,1,108,98,2,100,0,1,109,2,100,0,1,114,103,2,100,0,1,119,2,100,101,114,32,0,1,119,2,100,105,110,103,0,1,119,101,114,2,100,0,1,119,110,117,2,100,0,8,109,2,117,115,0,8,114,2,100,0,101,1,112,2,32,0,101,1,114,99,2,32,0,101,1,116,110,101,21,21,2,32,0,117,8,109,2,116,101,3,132,50,6,57,129,0,7,6,105,111,0,117,115,1,21,2,32,3,8,109,13,87,0,2,32,3,8,109,131,0,110,5,8,1,10,2,32,3,8,118,120,50,0,5,7,2,32,3,8,124,131,0,4,110,1,10,2,32,3,8,136,50,0,110,1,110,0,4,1,103,2,110,3,13,0,1,104,115,2,110,0,117,2,114,17,65,3,57,13,0,4,114,1,10,2,32,3,57,110,0,117,114,2,25,0,2,108,105,32,3,109,6,131,0,1,109,2,110,3,109,119,0,1,100,114,97,99,3,109,131,0,114,105,116,121,3,118,6,119,34,109,47,2,118,0,2,116,32,3,118,13,0,114,1,114,2,32,3,118,110,0,117,120,3,129,0,4,1,98,2,108,111,103,121,3,132,119,0,1,118,0,8,2,110,0,1,98,3,132,131,0,114,1,10,2,12,3,137,0,4,1,118,2,108,3,139,0,1,122,2,110,0,8,114,2,116,0,110,8,108,3,139,50,0,7,6,105,114,0,4,2,97,116,3,2,132,34,0,2,101,99,116,0,114,101,8,2,17,67,3,4,118,34,118,0,4,1,21,2,111,32,3,6,136,34,0,2,97,32,0,2,105,32,0,2,97,98,108,101,3,6,139,0,2,97,116,101,3,8,136,34,0,1,112,115,97,2,105,3,34,0,4,2,111,3,109,34,0,8,2,97,0,114,2,101,99,111,110,0,114,2,101,115,111,0,114,2,101,118,101,114,101,0,114,2,101,118,111,99,0,114,8,2,101,103,117,0,114,8,2,101,108,101,0,4,2,114,111,3,118,0,2,114,117,0,8,2,114,17,65,0,4,1,21,2,97,116,105,111,110,3,118,34,0,1,109,2,97,99,0,1,112,0,2,105,0,4,3,123,0,1,116,115,2,32,0,4,1,103,2,111,3,132,34,0,2,101,116,121,0,8,2,105,115,104,0,8,17,67,2,111,32,0,111,110,2,17,65,3,132,34,6,119,50,0,4,101,1,99,2,110,3,132,34,13,0,111,1,118,2,110,0,101,5,8,3,132,115,0,1,17,67,21,2,32,3,137,0,4,1,115,2,101,110,3,139,0,1,115,101,100,0,97,8,112,2,99,0,101,0,101,1,112,0,101,114,2,32,3,139,34,110,0,97,108,1,112,115,3,139,34,114,0,121,2,32,3,139,34,118,0,111,110,8,3,139,50,0,4,5,5,3,141,0,5,5,1,116,115,2,32,0,7,6,105,115,0,4,1,21,2,99,111,32,3,6,118,87,0,1,21,2,116,105,99,0,99,1,21,2,101,110,17,67,0,115,105,109,111,2,32,3,6,118,87,118,63,131,0,116,101,1,21,2,32,3,6,124,87,47,0,1,114,2,121,32,3,8,13,87,0,1,115,17,67,21,2,32,3,8,118,87,0,116,97,110,1,21,2,32,3,8,118,87,47,35,50,0,97,5,3,2,116,105,111,110,3,13,86,133,0,8,100,2,101,3,109,87,0,104,1,10,2,32,3,109,89,0,4,109,1,17,66,105,21,2,32,14,128,144,131,3,118,86,13,63,0,109,1,21,2,32,14,128,145,131,0,109,1,110,97,2,32,14,128,144,131,0,4,1,98,2,32,3,118,87,0,1,99,2,32,0,1,109,17,65,114,112,0,116,97,110,105,1,21,2,32,3,118,87,47,6,121,50,118,0,4,1,118,2,99,111,117,110,3,132,0,2,108,101,32,0,8,2,108,101,0,108,97,110,100,8,3,132,55,13,50,70,0,4,1,10,2,97,98,108,3,132,86,0,1,118,100,97,0,2,101,114,12,32,0,2,111,32,0,2,111,114,32,0,101,2,32,0,101,2,100,32,0,101,114,2,32,3,132,86,110,0,97,2,116,105,111,110,3,132,86,133,0,4,1,114,104,99,2,116,32,3,132,87,0,2,105,118,101,0,7,6,105,116,0,39,8,3,2,118,47,0,105,117,115,2,32,3,6,118,89,13,87,0,4,1,116,17,65,17,67,2,32,3,6,124,47,0,2,105,32,0,2,111,32,0,105,115,2,32,3,6,132,47,118,87,0,1,10,2,105,118,101,32,3,8,109,47,0,121,1,10,2,32,3,8,109,47,2,37,0,1,21,21,2,97,110,32,3,8,118,47,0,111,117,115,1,10,3,8,118,47,13,87,0,97,114,121,5,3,1,10,2,32,3,13,47,117,34,2,118,0,4,1,10,2,101,32,3,118,47,0,1,98,114,111,0,1,100,101,114,99,0,1,108,2,101,114,0,1,110,97,114,103,2,101,0,1,110,105,102,110,2,101,0,1,114,99,2,101,32,0,1,114,117,2,101,0,1,115,105,117,113,2,101,0,1,115,111,112,2,101,0,2,101,114,97,116,0,8,100,101,0,121,8,17,67,2,32,3,118,47,37,0,101,115,1,115,111,112,2,32,3,118,47,87,0,104,1,108,2,101,114,3,118,84,0,114,101,1,108,3,124,47,110,0,4,1,10,2,101,32,24,3,132,47,0,1,99,2,101,32,0,1,99,2,101,114,32,0,1,109,97,2,101,0,1,110,2,114,17,65,0,1,110,117,2,101,0,1,116,2,108,0,1,118,2,97,108,0,1,118,2,101,114,32,0,2,117,109,0,8,109,2,111,0,8,112,115,2,101,0,8,115,2,101,0,101,1,114,119,0,101,1,120,2,32,0,114,111,1,110,2,103,101,3,132,47,34,13,0,114,111,1,110,3,132,47,34,131,0,101,115,1,10,2,32,3,132,47,87,0,4,104,101,1,108,3,132,84,0,104,101,2,32,0,7,6,105,118,0,4,1,114,116,110,111,99,2,101,3,6,132,82,0,1,116,99,2,97,108,0,1,118,21,2,97,108,0,97,1,108,21,2,32,3,6,132,82,13,0,4,1,17,67,17,67,29,2,101,110,3,118,82,0,1,17,67,29,2,101,108,0,1,21,2,101,0,1,104,115,2,101,114,0,1,108,2,101,114,0,1,114,2,101,108,0,1,114,2,101,110,0,1,114,2,101,114,0,1,114,2,101,116,0,8,103,2,101,0,8,108,2,101,0,8,114,2,101,114,32,0,101,2,110,101,115,115,0,4,1,104,2,101,32,3,132,82,0,1,108,2,101,110,0,1,110,2,101,32,0,1,114,100,2,101,32,0,1,114,100,2,101,114,0,1,114,101,100,2,101,0,1,114,112,101,100,2,101,0,1,118,2,101,0,1,119,2,101,32,0,2,101,13,0,2,111,114,32,0,8,108,2,101,17,66,0,8,108,97,2,101,0,8,114,114,97,2,101,0,101,1,108,2,108,0,97,108,1,114,3,132,82,114,0,7,6,108,101,0,1,116,116,2,21,3,14,55,0,4,1,10,2,32,3,55,0,1,114,10,2,32,0,1,17,67,11,2,17,66,105,97,3,55,6,124,0,4,1,17,67,10,2,115,115,3,55,13,0,1,98,17,65,2,17,67,32,0,114,1,98,17,65,2,32,0,115,115,1,21,2,32,14,128,130,132,3,55,13,87,0,115,115,110,101,115,115,1,21,2,32,14,128,130,136,3,55,13,87,50,13,87,0,115,115,108,121,1,21,2,32,14,128,130,134,3,55,13,87,55,2,118,0,114,1,98,21,2,17,67,21,3,55,110,0,103,103,101,100,3,55,117,79,118,70,0,115,115,5,8,1,21,2,32,14,128,130,132,3,55,117,87,0,115,115,110,101,115,115,5,8,1,21,2,32,14,128,130,136,3,55,117,87,50,117,87,0,115,115,108,121,5,8,1,21,2,32,14,128,130,134,3,55,117,87,55,2,118,0,109,1,112,10,2,101,110,116,3,55,118,63,0,4,1,17,67,2,116,111,110,32,3,114,0,1,17,67,10,2,32,0,1,17,67,11,2,17,66,21,0,1,98,17,65,0,1,98,21,2,17,67,21,0,1,100,21,2,17,66,21,0,1,116,21,2,17,66,21,0,109,1,10,2,101,110,116,3,114,63,0,100,1,98,17,65,2,32,3,114,70,0,5,8,1,17,67,10,2,32,3,117,55,0,7,6,109,105,0,4,115,8,2,116,105,109,3,63,2,118,87,0,115,8,2,116,105,116,0,115,8,2,105,110,3,63,4,118,87,0,2,115,116,97,3,63,109,0,108,108,101,110,3,63,109,55,117,50,0,115,8,2,21,14,128,132,131,3,63,109,87,0,4,2,115,115,105,3,63,118,0,8,2,110,101,114,97,0,108,108,105,8,2,17,67,3,63,118,55,118,0,115,101,114,97,98,3,63,118,86,13,34,13,69,0,4,115,2,99,104,105,101,3,63,118,87,0,115,2,99,105,0,115,2,100,101,109,0,115,2,102,105,0,115,2,104,97,112,0,115,2,116,114,97,108,0,115,2,116,114,101,115,0,115,2,116,121,0,115,8,2,116,105,0,115,115,0,115,116,108,101,3,63,118,87,114,0,115,104,2,109,97,3,63,118,89,0,8,2,110,17,65,114,3,63,132,0,99,114,2,111,3,63,132,49,34,0,99,114,111,2,17,67,17,67,21,3,63,132,49,34,119,0,99,114,111,2,17,67,17,65,21,3,63,132,49,34,131,0,115,2,101,114,3,63,132,86,0,7,6,110,103,0,4,1,17,65,109,2,121,3,50,73,0,1,105,98,2,101,114,0,1,105,103,2,101,114,0,1,117,2,121,0,2,101,0,2,105,101,32,0,2,105,116,105,0,4,101,100,3,50,73,70,0,101,100,1,111,112,115,0,4,105,110,103,1,105,104,3,50,73,109,66,0,105,110,103,1,105,114,99,0,105,110,103,1,117,2,32,0,101,1,111,99,2,115,116,3,50,73,117,0,105,1,97,116,3,50,73,118,0,4,1,105,114,2,101,114,3,66,0,1,105,115,2,101,114,0,117,101,0,101,100,1,111,3,66,70,0,4,1,97,98,2,101,114,3,66,79,0,1,97,108,99,2,101,114,0,1,105,2,101,114,0,1,111,2,101,114,0,1,117,111,121,2,101,114,0,2,17,65,0,2,101,115,116,0,2,108,0,2,114,0,2,121,0,8,97,2,101,114,0,8,105,114,2,101,0,105,110,103,2,32,3,66,109,66,0,7,6,111,108,0,121,1,112,32,24,3,4,119,55,118,0,111,2,103,105,3,6,119,55,13,0,4,1,21,21,2,97,114,3,6,131,55,0,1,21,21,2,117,115,0,105,115,1,112,10,3,8,13,55,118,87,0,4,1,109,2,101,99,3,13,55,0,1,112,2,105,116,101,0,1,115,2,105,99,0,1,115,2,105,100,105,0,1,115,2,105,108,0,108,1,112,2,117,0,108,1,114,97,99,0,111,2,103,105,99,3,13,55,6,119,0,101,1,109,2,115,116,3,13,55,117,0,105,99,101,1,112,3,13,55,124,87,0,102,1,119,3,113,55,81,0,118,1,119,3,113,55,82,0,4,1,114,116,101,112,2,32,3,114,0,1,116,115,10,2,32,0,8,100,105,0,4,1,104,2,97,114,3,119,55,0,1,109,2,101,99,117,108,101,0,1,115,2,101,109,0,1,116,2,101,114,0,8,100,105,2,97,0,108,1,114,98,0,108,1,114,116,2,17,65,0,108,1,116,97,0,1,99,2,111,117,114,3,120,55,0,4,1,102,2,107,3,131,0,1,121,2,107,0,4,1,98,2,116,3,131,55,0,1,114,116,110,111,99,0,1,116,120,101,0,2,97,110,100,32,0,2,97,114,0,108,1,114,0,108,1,116,0,108,1,119,0,116,1,118,3,131,55,47,0,100,3,131,55,70,0,109,2,32,3,131,63,0,7,6,111,109,0,8,2,105,17,67,3,2,131,63,0,101,1,21,2,116,114,121,3,6,119,63,13,0,4,101,1,21,2,116,114,101,3,6,119,63,118,0,101,2,116,101,114,0,105,110,2,111,3,6,119,63,118,50,0,101,1,110,105,21,21,2,32,3,6,131,63,133,0,4,1,10,2,105,115,101,32,3,8,13,63,0,1,10,2,105,122,101,32,0,1,21,2,105,115,116,32,0,121,1,10,2,32,3,8,13,63,2,118,0,4,1,10,2,32,3,13,63,0,1,100,2,101,115,116,0,1,100,2,105,110,105,0,8,100,2,97,0,97,1,116,2,116,111,3,13,63,121,0,97,1,119,2,110,3,113,63,13,0,101,1,119,2,110,3,118,63,118,0,4,1,99,2,32,3,119,63,0,1,108,103,2,101,114,0,1,114,2,32,0,8,112,2,101,0,110,105,8,2,21,3,119,63,50,6,118,0,4,1,99,2,101,3,120,63,0,1,99,2,112,97,110,0,1,115,2,101,32,0,101,8,115,0,109,1,99,2,101,0,97,99,104,1,116,115,3,120,63,13,49,0,4,1,116,2,98,3,129,63,0,98,1,119,2,32,0,98,101,1,99,2,32,0,4,1,110,2,97,100,3,131,63,0,1,114,2,97,110,0,1,114,104,99,0,98,1,99,2,32,0,97,110,1,114,2,116,105,3,131,63,6,35,50,0,7,6,111,110,0,1,100,2,97,116,3,2,131,50,0,4,1,21,2,105,99,97,3,6,119,50,0,1,115,114,101,112,2,105,0,121,109,111,117,115,3,6,119,50,118,63,13,87,0,4,1,112,116,115,111,112,3,6,131,50,0,2,105,32,0,105,115,109,1,10,2,32,3,8,13,50,118,86,13,63,0,105,115,116,1,10,2,32,3,8,13,50,118,87,47,0,4,1,10,2,101,114,32,3,13,50,0,1,21,21,2,32,0,1,98,10,2,32,0,1,99,10,2,32,0,1,99,101,2,100,0,1,100,17,67,2,32,0,1,104,112,2,101,116,105,0,1,109,2,100,32,0,1,109,10,2,32,0,1,114,100,2,32,0,1,115,10,2,32,0,1,115,114,101,112,0,1,116,10,2,32,0,1,116,111,104,112,0,121,1,10,2,32,3,13,50,2,118,0,111,117,115,1,10,3,13,50,13,87,0,101,8,3,58,119,50,0,99,101,8,2,32,3,58,119,50,87,0,101,5,6,8,3,58,120,50,0,99,101,5,6,8,2,32,3,58,120,50,87,0,101,100,1,17,67,10,2,32,14,128,136,130,3,70,0,105,110,103,1,17,67,10,2,32,14,128,136,131,3,109,66,0,4,1,103,2,101,3,119,50,0,1,108,102,2,32,0,1,108,105,2,32,0,1,108,121,2,32,0,1,110,2,101,0,1,114,99,2,32,0,1,114,111,2,32,0,1,114,116,10,2,32,0,1,119,2,107,0,1,119,2,116,0,2,97,108,100,0,5,3,1,103,97,2,32,0,5,8,1,21,2,32,12,12,0,101,1,109,2,116,105,3,119,50,109,0,4,1,109,2,101,121,3,120,50,0,1,109,2,107,0,1,109,2,116,104,0,1,114,102,2,116,0,1,119,0,8,2,105,111,0,8,104,2,101,121,0,101,1,100,110,117,2,32,0,103,8,112,115,3,120,50,73,0,101,1,109,2,116,97,3,120,50,118,0,103,5,35,1,109,2,101,114,3,120,66,79,0,2,97,110,32,3,131,50,0,101,8,2,114,3,131,50,13,0,117,115,3,131,50,13,87,0,7,6,111,111,0,1,10,2,110,3,6,129,0,4,1,17,67,2,107,3,113,0,1,102,2,116,0,1,103,2,100,0,1,104,2,100,0,1,104,2,100,0,1,104,2,107,0,1,115,2,116,0,1,116,115,2,100,0,1,119,2,100,0,1,119,2,108,0,4,1,108,98,2,100,3,120,0,1,108,102,2,100,0,4,114,3,128,0,114,2,32,0,4,3,129,0,1,107,2,107,0,1,109,2,110,32,0,1,112,2,107,0,1,112,115,2,110,32,0,1,115,2,116,104,0,116,2,105,99,32,3,129,6,119,47,0,115,101,1,104,99,3,129,86,0,4,115,2,101,3,129,87,0,115,101,1,103,0,8,99,2,112,3,131,6,119,0,114,1,99,2,100,3,131,6,127,0,115,1,104,99,2,101,110,3,131,86,0,4,114,1,112,3,138,0,114,8,109,0,7,6,111,114,0,8,102,2,115,21,3,2,127,0,4,101,1,102,2,99,108,111,3,2,128,0,101,1,102,2,103,111,0,101,1,102,2,115,101,0,101,1,102,2,116,111,0,4,1,21,2,105,99,32,3,6,119,34,0,1,21,2,105,99,97,108,0,1,21,2,99,97,32,3,6,127,0,2,105,32,3,6,127,34,0,116,101,1,102,2,32,3,6,128,47,133,0,105,108,121,1,21,2,32,3,8,13,34,13,55,2,118,0,4,1,10,2,97,116,105,111,110,3,13,34,0,2,105,103,105,110,97,0,121,1,10,2,32,3,13,34,2,118,0,101,115,99,3,13,34,6,117,87,0,105,1,104,2,122,3,13,34,132,0,101,100,1,10,2,32,3,13,70,0,103,1,102,2,105,118,3,13,79,0,101,100,1,104,2,32,14,128,128,129,3,70,0,4,1,10,2,32,3,110,0,1,98,98,2,110,0,1,100,110,2,32,0,1,102,2,103,17,65,116,0,1,102,10,2,100,32,0,1,102,102,101,2,116,0,1,116,110,101,118,2,32,0,101,1,116,21,2,32,0,4,1,10,2,97,116,101,3,110,34,0,1,10,2,111,117,115,0,99,101,1,119,2,115,116,3,113,0,2,114,3,119,0,4,1,21,2,105,116,105,3,119,34,0,1,21,2,105,116,121,0,1,108,102,2,105,0,1,109,2,97,108,0,2,101,17,66,32,0,2,101,110,17,67,0,2,105,103,0,5,35,8,104,2,111,0,8,2,105,17,67,0,114,8,109,0,4,97,2,99,108,3,119,34,13,0,97,8,2,116,111,0,101,105,103,110,1,102,3,119,34,13,50,0,4,101,1,102,2,115,116,3,119,34,118,0,105,1,104,2,122,111,110,116,0,1,119,2,114,3,120,0,111,117,103,104,3,120,34,13,0,111,117,103,104,5,3,3,120,34,131,0,4,1,119,3,123,0,1,119,2,109,0,1,119,2,115,101,0,1,119,2,116,104,0,5,3,2,114,3,125,0,4,1,99,2,107,3,127,0,1,102,2,101,118,101,114,0,1,102,2,107,0,1,104,99,2,100,0,1,108,2,100,0,1,121,2,107,0,2,99,104,32,0,2,101,115,105,115,0,2,109,32,0,2,110,32,0,2,115,101,32,0,2,116,0,8,0,8,99,2,21,0,8,102,2,21,0,8,109,0,101,8,102,2,17,65,0,101,8,102,2,17,67,0,4,3,128,0,1,99,2,101,32,0,1,100,2,32,0,1,108,112,0,1,112,2,116,0,1,116,110,2,32,0,1,119,2,101,0,1,119,2,110,0,1,119,2,116,32,0,1,119,115,2,100,0,5,8,1,10,2,32,0,5,8,1,21,21,2,32,14,128,144,130,0,101,0,101,1,116,115,2,32,0,101,8,109,0,114,2,32,0,4,1,108,104,99,2,105,99,3,128,34,0,1,108,104,99,2,111,117,115,0,2,17,65,0,2,101,17,65,0,2,101,116,0,2,101,120,0,121,8,116,115,3,128,34,118,0,4,5,5,1,119,3,142,0,5,5,1,119,2,109,0,5,5,1,119,2,115,101,0,5,5,1,119,2,116,104,0,7,6,111,115,0,2,105,116,121,3,6,119,87,0,2,97,108,32,3,6,131,86,0,2,105,118,101,3,6,131,87,0,105,115,2,32,3,6,131,87,118,87,0,117,114,101,3,6,131,88,110,0,4,1,112,2,105,116,105,111,3,13,86,0,115,1,112,2,101,115,115,0,101,1,112,114,117,112,2,32,3,13,87,0,4,116,1,112,2,101,114,105,3,119,87,47,0,116,1,112,2,117,0,116,1,112,97,0,116,1,112,101,114,0,116,1,112,101,114,112,0,116,1,112,109,105,0,116,1,112,109,111,99,0,116,1,112,120,101,0,116,1,112,121,104,0,4,5,3,1,99,2,116,3,126,87,0,5,3,1,114,102,2,116,0,115,5,3,1,98,0,115,5,3,1,108,0,115,5,3,1,109,0,115,5,3,1,114,0,8,108,2,101,3,129,86,0,4,1,29,2,121,3,131,86,0,101,2,32,0,4,1,99,2,101,99,3,131,87,0,1,99,2,105,110,101,32,0,115,1,114,103,0,4,116,1,104,2,32,3,131,87,47,0,116,1,104,103,0,116,1,109,0,116,1,112,0,7,6,111,117,0,116,8,2,21,14,128,132,131,3,2,130,47,0,1,21,2,109,32,3,6,129,0,4,115,1,17,66,10,2,32,3,8,13,87,0,115,1,114,100,10,2,32,0,4,103,104,1,114,98,2,32,3,13,0,103,104,1,114,111,0,114,101,100,1,10,3,13,70,0,4,115,1,10,2,32,3,13,87,0,115,1,108,10,2,32,0,115,1,109,10,2,32,0,115,1,110,10,2,32,0,115,121,1,10,2,32,3,13,87,2,37,0,1,104,2,109,3,57,129,0,97,3,58,121,0,4,114,1,10,2,32,3,110,0,114,1,112,17,65,0,108,2,100,3,113,0,99,101,1,108,103,2,115,3,119,0,4,103,104,1,99,3,119,81,0,103,104,1,114,116,0,4,1,99,2,110,116,114,3,120,0,1,99,2,112,108,0,1,99,2,114,97,103,0,1,99,2,115,105,0,1,100,2,98,0,1,100,2,103,0,1,110,2,114,105,0,1,114,116,2,98,108,0,1,115,2,116,104,101,114,0,1,116,2,99,104,0,1,121,2,110,103,0,4,103,104,1,108,3,120,81,0,103,104,1,110,0,103,104,1,114,0,103,104,1,116,0,4,114,3,123,0,114,1,99,2,116,101,0,114,2,110,0,114,5,3,1,99,2,97,103,0,114,5,3,1,110,2,105,0,4,103,104,1,98,2,116,3,125,0,103,104,1,104,2,116,0,103,104,1,110,2,116,0,103,104,1,114,98,2,116,0,103,104,1,114,119,0,103,104,2,116,0,103,104,8,0,4,103,104,5,3,1,99,3,126,81,0,103,104,5,3,1,114,116,0,4,114,1,98,2,110,3,128,0,114,1,99,2,115,0,114,1,99,2,116,0,114,1,99,2,116,101,115,97,0,114,1,109,2,110,0,114,1,112,0,114,1,112,110,2,32,0,114,8,102,0,114,8,121,0,114,99,101,1,115,3,128,87,0,4,1,98,2,100,3,129,0,1,98,2,108,108,0,1,99,2,116,104,0,1,104,103,2,108,0,1,107,0,1,109,2,115,115,101,0,1,110,2,103,97,0,1,114,2,98,108,0,1,114,2,116,105,110,0,1,116,2,99,97,110,0,1,119,2,110,100,17,65,0,1,119,2,110,100,17,67,0,1,121,2,116,0,2,32,0,2,102,0,2,105,0,2,108,17,65,0,2,112,0,2,118,0,5,35,1,114,2,116,101,0,103,104,1,114,104,116,0,120,2,32,0,103,101,1,114,3,129,88,0,99,104,1,100,3,129,89,0,4,3,130,0,1,102,2,108,101,0,1,114,17,67,2,116,0,1,121,2,116,32,0,2,116,0,98,1,100,2,116,0,103,104,1,98,0,103,104,1,100,2,116,0,103,104,1,108,112,0,103,104,1,108,115,0,103,104,1,114,100,0,4,1,98,2,108,100,3,131,0,1,104,115,2,108,100,101,114,0,1,109,2,108,17,67,0,1,112,2,108,116,0,1,115,2,108,0,103,104,0,103,104,1,100,0,103,104,1,104,0,103,104,1,108,114,0,4,114,1,98,2,115,101,3,138,0,114,1,116,0,114,1,116,2,32,0,114,1,116,2,110,0,114,5,7,8,121,0,114,8,103,2,100,0,4,114,1,99,115,3,140,0,114,1,104,0,114,1,108,102,0,114,1,115,0,114,1,116,115,0,114,1,118,101,2,101,100,0,114,1,118,101,100,0,114,8,0,114,8,100,0,4,114,5,5,3,142,0,114,5,5,1,99,2,116,101,0,114,5,5,2,110,0,7,6,111,118,0,101,114,8,2,21,14,128,132,132,3,4,131,82,110,0,105,116,99,104,1,21,2,32,3,8,13,82,118,74,0,4,1,99,2,101,110,17,67,3,119,82,0,1,104,2,101,108,0,1,104,2,101,114,0,1,110,2,101,108,0,1,112,2,101,114,21,0,1,114,103,2,101,108,0,1,114,112,2,101,114,0,1,114,116,2,101,114,0,8,2,117,108,0,101,114,101,105,103,110,1,115,3,119,82,13,34,118,50,0,4,1,99,2,101,110,3,120,82,0,1,99,2,101,116,0,1,104,115,2,12,0,1,108,0,1,108,2,101,0,8,2,101,110,0,101,1,100,0,101,8,108,0,4,101,114,1,99,3,120,82,110,0,101,114,1,99,2,32,0,101,114,110,1,103,3,120,82,110,50,0,4,1,21,2,97,108,3,129,82,0,1,109,2,17,65,0,1,109,2,105,0,1,114,112,2,101,13,0,101,114,1,114,112,2,32,3,129,82,110,0,4,1,108,99,2,101,3,131,82,0,1,108,108,117,112,0,1,108,112,0,2,101,114,0,8,2,17,65,0,8,108,115,2,101,110,17,65,0,4,101,114,1,10,2,32,3,131,82,110,0,101,114,2,99,111,97,0,101,114,2,100,111,115,0,101,114,2,100,114,97,0,101,114,2,100,114,105,0,101,114,2,115,105,103,0,101,114,2,116,111,110,0,101,114,2,116,117,114,0,101,114,2,118,105,101,0,7,6,111,119,0,2,105,116,122,32,3,8,131,82,0,2,97,121,32,3,13,58,0,108,101,1,110,107,2,100,3,119,55,118,0,4,1,97,3,130,0,1,98,2,101,108,0,1,98,2,101,114,0,1,98,2,115,17,65,0,1,98,2,115,112,0,1,99,0,1,100,2,110,0,1,100,110,101,0,1,102,0,1,103,0,1,104,0,1,104,99,0,1,104,115,2,101,114,0,1,104,119,0,1,104,121,0,1,106,0,1,107,0,1,108,99,0,1,108,102,2,101,114,0,1,108,103,2,101,114,0,1,108,108,97,115,105,0,1,108,112,0,1,110,2,97,100,0,1,110,101,2,110,0,1,112,0,1,114,2,100,0,1,114,98,0,1,114,99,2,110,0,1,114,100,0,1,114,102,0,1,114,103,2,108,0,1,114,112,0,1,114,116,2,101,0,1,116,2,101,108,0,1,116,2,101,114,0,1,116,2,110,0,1,118,0,1,119,0,1,121,0,8,2,108,0,8,100,0,8,108,108,97,0,8,110,2,32,0,8,110,2,116,0,4,3,131,0,1,99,115,111,109,0,1,104,115,0,7,6,112,101,0,8,2,110,114,3,48,2,117,0,4,2,110,105,110,115,117,3,48,13,0,114,2,115,112,0,114,2,105,112,104,3,48,13,34,0,4,114,2,99,101,105,3,48,110,0,114,2,99,101,112,0,114,2,99,117,108,105,0,114,2,102,101,99,0,114,2,102,111,114,109,0,114,2,102,117,110,0,114,2,102,117,115,0,114,2,109,105,115,115,0,114,2,109,105,116,0,114,2,112,101,116,0,114,2,112,108,101,0,114,2,115,105,115,0,114,2,115,117,0,114,2,115,117,0,114,2,116,97,105,0,114,2,116,117,0,114,2,118,21,0,4,114,2,112,101,116,114,3,48,123,0,114,2,118,105,0,114,109,101,2,97,3,48,123,63,118,0,114,115,112,105,2,114,97,3,48,123,87,48,13,0,114,115,101,118,101,114,3,48,123,87,118,82,6,137,0,97,99,101,3,48,124,87,0,7,6,112,114,0,101,8,2,100,105,14,128,132,131,3,48,34,2,37,0,4,101,8,2,17,67,21,3,48,34,2,118,0,101,8,2,100,105,99,0,101,8,2,101,109,112,0,101,8,2,115,99,114,0,101,115,8,2,101,110,116,3,48,34,2,118,86,0,4,101,8,2,109,111,108,3,48,34,2,124,0,101,8,2,117,0,101,8,2,105,110,21,14,128,132,131,3,48,34,4,124,0,111,2,112,97,110,3,48,34,6,131,0,4,111,2,99,101,100,3,48,34,13,0,111,2,99,101,101,0,111,2,99,101,115,115,105,0,111,2,99,108,97,105,0,111,2,99,117,114,0,111,2,100,117,99,0,111,2,102,97,110,0,111,2,102,101,115,0,111,2,102,105,99,0,111,2,102,111,117,0,111,2,102,117,0,111,2,103,114,101,115,0,111,2,104,105,98,0,111,2,106,101,99,0,111,2,108,105,102,0,111,2,108,111,110,0,111,2,109,111,116,0,111,2,110,111,117,110,99,0,111,2,110,117,110,0,111,2,112,101,108,0,111,2,112,101,110,115,0,111,2,112,105,116,0,111,2,112,114,105,101,0,111,2,112,117,108,0,111,2,115,112,101,99,116,17,65,0,111,2,116,101,99,0,111,2,116,101,115,116,0,111,2,116,114,97,99,0,111,2,116,114,117,0,111,2,118,105,100,0,111,2,118,105,115,0,111,2,118,111,99,0,111,2,118,111,107,0,111,8,2,112,17,65,0,111,8,2,115,97,0,111,8,2,115,99,0,4,101,2,99,105,111,3,48,34,117,0,101,2,106,117,100,105,0,101,8,2,102,101,114,101,110,0,101,8,2,103,110,0,101,8,2,109,105,0,101,8,2,110,25,0,101,8,2,112,32,0,101,8,2,112,111,115,105,0,101,8,2,115,115,0,101,8,2,115,116,0,101,100,97,2,116,111,3,48,34,117,70,13,0,101,118,8,2,97,108,3,48,34,117,82,0,4,101,115,2,101,110,99,3,48,34,117,86,0,101,115,8,2,101,110,116,97,0,101,115,105,2,100,101,110,3,48,34,117,86,118,0,4,111,2,100,117,99,116,3,48,34,119,0,111,2,112,101,114,0,111,2,112,104,0,111,2,112,111,115,105,116,0,111,2,115,101,99,0,111,2,116,101,115,116,97,110,0,111,2,118,105,100,101,110,0,111,5,3,2,99,101,115,115,0,111,8,2,112,97,103,0,111,98,97,98,3,48,34,119,69,13,69,0,4,101,2,102,105,120,3,48,34,124,0,101,2,104,105,115,116,0,101,8,2,32,0,101,8,2,97,109,0,101,8,2,99,105,110,99,0,101,8,2,102,101,99,0,101,8,2,109,105,117,0,101,8,2,113,117,0,101,8,2,115,99,0,101,8,2,118,105,101,119,0,101,8,2,118,105,111,0,101,97,8,2,99,104,0,101,100,101,2,99,101,115,3,48,34,124,70,118,0,4,111,2,102,105,108,3,48,34,131,0,111,2,103,114,97,0,111,2,108,111,103,0,111,109,101,2,116,104,3,48,34,131,63,124,0,105,8,2,111,3,48,34,132,0,105,111,2,114,105,116,3,48,34,132,6,119,0,105,118,97,116,8,3,48,34,132,82,13,47,0,7,6,114,101,0,2,103,101,110,101,114,3,2,34,124,0,4,8,2,97,108,105,103,3,4,34,124,0,8,2,97,108,108,0,8,2,97,117,21,14,128,132,130,0,8,2,99,111,110,14,128,132,130,0,97,8,2,108,108,111,14,128,132,130,0,4,100,101,1,110,117,2,17,67,3,4,34,124,70,109,0,100,101,8,2,17,67,0,1,118,117,101,111,110,3,13,0,100,1,116,17,67,10,2,32,3,13,70,0,4,8,2,100,114,3,34,2,124,0,8,2,101,100,117,14,128,132,130,0,8,2,101,109,14,128,132,130,0,8,2,101,110,14,128,132,130,0,8,2,101,113,14,128,132,130,0,8,2,101,115,14,128,132,130,0,8,2,101,120,14,128,132,130,0,116,114,111,2,14,128,132,133,3,34,4,117,47,34,131,0,4,8,2,105,21,14,128,132,130,3,34,4,124,0,8,2,117,110,14,128,132,130,0,4,97,2,17,67,11,3,34,4,124,13,0,97,8,2,100,17,67,0,4,1,17,65,2,32,3,34,13,0,1,114,2,32,0,2,109,101,110,116,0,114,2,32,0,100,1,17,66,10,2,32,3,34,13,70,0,4,1,110,117,2,17,67,21,3,34,109,0,2,97,99,116,0,2,100,101,109,12,0,8,2,17,67,21,0,97,2,108,105,116,3,34,109,35,0,112,101,2,116,105,116,105,118,3,34,109,48,117,0,108,101,2,110,116,3,34,109,55,117,0,4,108,105,1,110,117,2,97,3,34,109,55,132,0,108,105,2,97,0,4,115,2,105,103,110,3,34,109,86,0,115,2,117,108,116,0,97,2,108,116,101,3,34,109,119,0,97,2,103,101,110,3,34,109,133,0,4,2,17,67,101,108,32,3,34,117,0,2,99,107,0,2,99,116,0,2,100,17,67,0,2,102,117,103,0,2,103,105,115,116,0,2,112,108,105,0,2,112,114,105,109,0,2,112,116,0,2,115,105,100,117,101,0,2,115,111,108,117,0,2,115,111,110,0,2,115,116,108,0,2,116,105,99,0,2,116,105,110,97,0,2,118,101,108,0,2,118,101,114,101,110,0,2,118,111,108,117,0,8,2,17,67,17,67,32,0,8,2,17,67,32,0,8,2,100,17,67,0,8,2,110,17,67,0,8,2,115,99,117,0,97,2,108,109,0,112,101,2,116,105,116,3,34,117,48,13,0,112,114,101,115,101,110,116,3,34,117,48,34,109,86,6,117,50,47,0,112,101,114,8,2,116,3,34,117,48,110,0,99,111,2,103,3,34,117,49,13,0,4,99,107,111,110,3,34,117,49,13,50,0,99,111,110,2,99,0,108,101,8,2,103,3,34,117,55,109,0,108,101,2,118,3,34,117,55,118,0,103,105,109,3,34,117,73,118,63,0,103,117,2,108,3,34,117,79,57,129,0,102,101,114,101,110,100,3,34,117,81,13,34,6,117,50,70,0,118,101,2,110,17,65,3,34,117,82,13,0,115,105,2,100,101,110,3,34,117,86,109,0,109,101,110,116,3,34,118,63,13,50,47,0,104,101,110,3,34,118,105,6,117,50,0,4,2,103,101,110,3,34,124,0,2,103,105,111,110,0,2,116,97,105,108,0,8,2,97,110,0,8,2,99,101,110,116,0,97,2,109,0,97,5,3,2,108,3,34,124,14,0,115,101,2,108,3,34,124,87,117,0,4,105,2,115,3,34,132,0,105,8,2,99,0,105,8,2,108,0,97,2,108,3,34,136,0,2,32,3,110,0,7,6,115,117,0,1,101,114,2,109,17,65,3,86,57,129,0,109,97,98,1,101,114,3,86,57,129,63,13,69,0,5,3,1,101,114,2,109,17,65,3,86,129,0,4,2,98,100,117,101,3,87,2,120,0,2,98,115,101,114,0,2,98,115,105,115,0,2,98,116,114,97,0,4,2,98,109,101,114,103,3,87,13,0,2,98,109,105,0,2,98,115,99,114,105,98,0,2,98,117,114,98,97,0,2,98,118,0,2,99,99,17,65,0,2,102,102,105,99,0,2,112,112,108,0,2,112,112,111,114,0,2,112,112,114,101,115,0,98,115,116,97,2,110,116,3,87,13,69,87,47,35,0,4,115,8,2,112,3,87,13,87,0,115,8,2,116,97,105,0,115,99,8,2,101,0,1,110,2,97,108,3,87,57,129,0,4,114,1,110,117,2,112,3,87,110,0,114,2,109,0,114,2,112,97,0,114,2,112,114,0,114,2,114,0,114,2,118,0,4,2,99,99,117,108,3,87,120,0,2,112,112,108,101,0,2,112,112,108,105,99,0,8,2,98,0,114,2,114,101,121,0,4,114,3,87,123,0,114,8,0,115,8,2,17,65,3,87,129,86,0,4,114,5,5,3,87,142,0,114,5,5,8,0,4,114,1,97,101,3,88,110,0,114,1,111,0,114,101,1,10,2,32,0,4,2,97,108,3,88,129,0,8,97,99,0,103,97,114,3,89,113,79,110,0,4,114,1,110,101,3,89,138,0,114,1,110,105,2,17,65,0,114,2,97,110,0,114,101,8,0,7,6,116,104,0,1,32,48,15,2,32,3,13,85,0,8,2,111,109,21,3,47,0,4,2,97,110,100,3,47,105,0,2,101,97,100,0,2,101,97,114,116,0,2,105,108,108,0,2,111,108,101,0,2,111,111,100,0,2,111,117,115,101,0,101,113,117,101,3,47,117,49,0,97,105,3,47,132,0,4,1,97,101,2,101,114,3,84,0,1,111,111,98,0,1,111,111,109,115,0,1,114,2,105,101,114,0,1,114,2,121,0,1,114,111,2,105,0,2,101,110,32,0,2,101,114,17,67,0,2,101,114,110,32,0,2,101,115,116,0,2,105,116,104,0,101,2,32,0,101,109,8,3,84,2,117,63,0,101,108,101,115,115,3,84,13,55,6,117,87,0,101,100,1,117,111,2,32,3,84,70,0,105,110,103,1,101,101,3,84,109,66,0,4,101,114,2,32,3,84,110,0,101,114,2,101,114,0,101,114,101,2,32,0,101,114,101,8,3,84,135,0,4,3,85,0,1,32,48,48,2,32,0,1,32,48,49,2,32,0,1,97,99,2,101,114,105,0,1,103,2,101,110,32,0,1,104,112,0,1,110,2,101,114,12,0,1,114,97,101,2,121,0,1,114,111,119,2,32,0,2,101,114,109,0,8,101,2,101,114,0,105,111,8,3,85,4,132,131,0,101,114,97,112,3,85,117,34,13,48,0,101,8,2,109,17,65,3,85,124,0,7,6,117,101,0,4,3,57,129,0,1,108,97,118,0,2,110,100,3,57,129,6,117,0,4,2,110,3,57,129,13,0,2,116,0,8,17,67,2,108,0,101,3,57,129,124,0,110,101,2,32,3,57,129,124,50,0,114,2,116,3,58,135,0,4,1,108,3,129,0,1,114,0,8,115,0,1,108,2,110,116,105,3,129,6,117,0,4,1,108,2,110,3,129,13,0,8,17,67,17,67,2,108,0,7,6,117,105,0,1,21,2,116,121,3,6,57,129,118,0,1,99,114,2,116,111,117,115,3,7,57,129,118,0,1,110,2,115,3,57,129,0,1,115,101,106,2,116,3,57,129,109,0,114,2,32,3,57,138,0,115,105,110,101,1,99,3,58,118,86,124,50,0,1,103,2,116,97,3,109,0,4,1,98,2,108,3,118,0,1,99,114,2,116,0,1,103,2,108,17,67,0,8,103,2,110,0,4,1,106,2,99,3,129,0,1,108,115,0,1,114,2,116,0,1,115,2,116,0,115,1,114,2,101,3,129,86,0,1,114,103,2,116,3,129,109,0,4,1,108,102,2,100,3,129,118,0,1,114,100,2,100,0,4,1,103,2,100,17,65,13,3,132,0,1,103,2,115,101,0,1,103,101,98,2,108,0,8,103,2,108,101,0,100,101,1,103,2,108,3,132,70,0,7,6,117,110,0,4,2,97,110,105,3,2,57,129,50,0,8,2,105,113,0,4,2,114,101,103,105,3,2,120,50,0,8,2,17,65,14,128,132,130,0,8,2,21,14,128,132,130,0,110,8,3,2,120,50,50,0,8,2,105,108,3,4,57,129,50,0,4,8,2,100,101,14,128,132,130,3,4,120,50,0,8,2,101,110,14,128,132,130,0,8,2,101,120,14,128,132,130,0,8,2,105,100,0,8,2,105,109,14,128,132,130,0,8,2,105,110,14,128,132,130,0,8,2,114,101,17,67,21,14,128,132,130,0,100,101,114,8,2,21,14,128,132,133,3,4,120,50,70,110,0,97,8,2,98,3,4,120,50,115,0,1,21,2,97,108,3,6,57,129,50,0,4,1,116,2,101,3,57,129,50,0,2,101,114,0,2,105,0,8,2,105,111,0,8,2,105,120,0,101,2,32,0,105,116,2,101,3,57,129,50,6,132,47,0,105,8,3,57,129,50,118,0,4,1,112,2,105,115,104,3,120,50,0,2,17,65,0,8,2,100,117,108,97,0,4,1,106,2,17,65,3,129,50,0,1,114,2,105,0,5,3,1,116,2,101,0,101,1,108,2,32,0,101,1,114,2,32,0,101,5,3,1,100,2,32,0,101,5,3,1,116,2,32,0,7,6,117,112,0,4,8,2,98,3,2,120,48,0,8,2,99,0,8,2,100,0,8,2,101,0,8,2,103,0,8,2,104,0,8,2,115,101,0,8,2,115,116,0,1,115,2,114,101,3,2,129,48,0,1,99,99,111,3,57,113,48,0,121,1,99,99,111,3,57,113,48,132,0,111,110,3,120,48,119,50,0,1,114,99,115,3,129,48,0,101,114,105,1,115,2,111,3,129,48,6,136,34,118,0,101,114,1,115,3,129,48,110,0,7,6,117,114,0,1,106,2,121,3,13,34,0,101,100,1,103,2,32,3,13,70,0,1,116,2,17,65,3,57,13,34,0,101,1,115,10,2,32,3,57,13,110,0,4,101,1,110,101,2,32,3,57,110,0,101,5,3,1,103,2,32,0,4,1,17,67,2,17,65,3,57,113,34,0,1,21,2,97,116,105,111,110,0,1,21,2,121,0,97,1,21,2,116,3,57,113,34,133,0,1,98,2,101,3,57,129,13,34,0,4,2,101,100,32,3,57,138,0,8,2,17,65,0,8,102,2,17,65,0,8,102,2,121,0,101,1,116,97,99,105,2,32,0,101,2,32,0,4,1,103,10,2,32,3,110,0,1,104,10,2,32,0,1,109,10,2,32,0,1,116,97,115,2,100,0,101,1,103,2,32,0,101,1,106,110,2,32,0,101,1,122,105,0,4,1,98,2,105,3,117,34,0,1,98,2,121,0,114,5,35,1,98,2,111,3,120,34,0,4,1,112,115,2,32,3,123,0,2,17,66,0,2,32,0,114,1,102,2,121,0,114,2,32,0,114,5,3,0,103,1,98,2,101,114,3,123,79,0,4,101,1,108,105,2,32,3,137,0,101,1,114,2,32,0,4,1,106,2,105,3,138,0,1,108,2,17,65,12,0,1,112,10,2,32,0,8,106,2,121,0,1,114,2,17,65,12,3,138,34,0,4,5,5,1,112,115,2,32,3,142,0,5,5,2,17,66,0,5,5,2,32,0,114,5,5,1,102,2,121,0,114,5,5,2,32,0,103,5,5,1,98,2,101,114,3,142,79,0,7,6,39,0,114,101,2,32,14,128,128,131,3,13,0,118,101,2,32,14,128,128,131,3,13,82,0,100,2,32,14,128,128,130,3,70,0,4,115,1,32,54,49,2,32,3,86,0,115,2,32,14,128,128,130,0,4,115,1,102,2,32,14,128,128,130,3,87,0,115,1,104,99,111,2,32,14,128,128,130,0,115,1,107,2,32,14,128,128,130,0,115,1,112,2,32,14,128,128,130,0,115,1,116,2,32,14,128,128,130,0,4,115,1,32,54,2,32,3,109,86,0,115,1,101,99,2,32,14,128,128,130,0,115,1,101,115,2,32,14,128,128,130,0,115,1,104,99,2,32,14,128,128,130,0,115,1,104,115,2,32,14,128,128,130,0,115,1,115,2,32,14,128,128,130,0,115,1,120,2,32,14,128,128,130,0,115,1,122,2,32,14,128,128,130,0,108,108,2,32,14,128,128,131,3,114,0,7,6,69,0,3,0,4,1,21,2,109,98,101,114,3,6,117,0,2,110,116,105,0,2,110,116,111,117,115,0,2,110,116,117,0,116,116,101,2,32,3,6,117,47,0,116,116,97,2,32,3,6,117,47,13,0,99,116,111,109,121,2,32,14,128,128,134,3,6,117,49,47,13,63,118,0,110,2,100,17,65,32,3,6,117,50,0,110,115,107,2,32,3,6,117,50,87,49,0,108,108,97,2,32,3,6,117,55,13,0,115,113,117,101,3,6,117,87,49,0,4,2,17,67,105,97,3,6,124,0,2,115,105,97,0,109,2,105,99,32,3,6,124,63,0,97,2,110,32,3,6,136,0,114,105,2,17,65,3,6,136,34,109,0,101,114,2,32,3,6,137,0,111,117,115,2,32,3,8,57,13,87,0,97,2,32,3,8,136,0,110,101,114,2,32,3,10,50,13,0,110,105,110,103,2,32,3,10,50,109,66,0,4,2,17,66,17,67,32,3,13,0,2,17,66,17,67,101,32,0,2,17,66,32,0,2,110,116,32,0,114,2,105,101,32,3,13,34,0,114,121,2,32,3,13,34,2,118,0,4,110,2,32,3,13,50,0,110,2,97,116,17,65,0,110,101,100,2,32,3,13,50,70,0,109,2,32,3,13,63,0,115,1,114,17,67,2,32,14,128,129,130,3,13,86,0,4,100,1,99,10,2,32,14,128,139,130,3,47,0,100,1,104,99,10,2,32,14,128,139,130,0,100,1,107,10,2,32,14,128,139,130,0,100,1,112,10,2,32,14,128,139,130,0,100,1,120,10,2,32,14,128,136,130,0,4,100,1,17,67,10,2,32,14,128,139,130,3,70,0,100,1,21,21,2,32,14,128,139,130,0,100,1,109,111,21,21,10,2,32,14,128,136,130,0,100,1,114,117,2,32,14,128,138,129,0,100,1,121,2,32,0,115,1,10,2,32,14,128,129,130,3,86,0,4,115,1,102,2,32,14,128,129,130,3,87,0,115,1,107,2,32,14,128,129,130,0,115,1,112,2,32,14,128,129,130,0,115,1,116,2,32,14,128,129,130,0,2,111,32,3,109,0,117,115,2,32,3,109,13,87,0,4,39,115,1,99,2,32,14,128,129,131,3,109,86,0,39,115,1,115,2,32,14,128,129,130,0,115,1,99,2,32,14,128,129,130,0,115,1,103,2,32,14,128,129,130,0,115,1,104,99,2,32,14,128,129,130,0,115,1,104,112,2,32,14,128,129,130,0,115,1,104,115,2,32,14,128,129,130,0,115,1,115,2,32,14,128,129,130,0,115,1,120,2,32,14,128,128,130,0,4,114,2,17,67,3,110,0,114,2,32,0,4,108,2,32,3,114,0,108,101,2,32,0,108,108,2,12,0,4,1,108,2,112,115,3,117,0,1,108,2,112,116,0,2,110,100,111,117,115,0,2,110,105,110,103,0,2,115,115,0,2,116,105,99,32,0,2,116,114,105,99,0,2,120,32,0,114,2,105,99,32,3,117,34,0,110,5,8,2,32,3,117,50,0,110,105,110,103,5,8,2,32,3,117,50,109,66,0,108,5,8,2,32,3,117,55,0,115,115,2,32,3,117,87,0,1,107,97,110,2,100,3,118,0,4,100,1,100,10,2,32,14,128,139,130,3,118,70,0,100,1,116,10,2,32,14,128,139,130,0,100,108,121,2,32,14,128,129,132,3,118,70,55,2,118,0,4,2,100,105,97,32,3,124,0,2,100,105,99,32,0,2,116,101,32,0,69,2,32,0,101,2,32,0,101,2,100,0,105,2,110,32,0,110,101,2,32,3,124,50,0,109,101,2,32,3,124,63,0,115,101,2,32,3,124,86,0,105,2,32,3,132,0,121,1,98,111,2,32,3,133,0,7,6,97,0,8,2,113,117,3,2,35,0,101,114,8,99,3,2,135,0,8,2,32,15,3,4,133,0,4,1,21,2,107,105,32,3,6,35,0,1,104,2,122,97,114,0,2,122,122,32,0,4,1,21,2,122,105,32,3,6,121,0,2,17,66,111,32,0,2,17,67,97,32,0,107,117,2,32,3,6,121,49,129,0,119,105,1,21,2,32,3,6,121,58,118,0,122,101,1,107,21,2,32,3,6,121,86,118,0,4,97,114,3,6,122,0,101,114,1,114,0,101,2,118,97,108,3,6,124,0,4,1,21,2,17,66,105,97,3,6,133,0,1,21,2,17,66,105,117,0,1,21,2,116,105,111,117,115,0,2,17,67,97,98,108,101,0,2,17,67,97,98,108,121,0,2,17,67,105,98,108,101,0,2,116,105,111,110,0,2,122,105,100,101,0,8,2,45,0,1,98,10,2,32,3,8,13,0,111,2,32,3,8,130,0,4,1,10,2,32,3,13,0,1,103,2,122,101,17,67,11,0,1,109,2,104,111,103,0,1,119,111,2,100,0,2,119,97,121,32,0,104,1,10,2,32,0,113,117,97,2,116,3,13,49,58,35,0,4,3,35,0,1,17,67,2,120,12,0,1,109,2,106,101,115,0,1,110,2,116,105,111,110,97,108,0,1,110,2,116,117,114,97,0,1,114,98,2,122,105,108,0,1,114,114,105,2,116,105,111,0,1,119,115,2,103,0,1,119,115,2,109,32,0,1,119,115,2,110,107,0,2,17,66,101,17,67,111,32,0,2,17,66,101,114,17,65,0,2,17,66,101,114,17,67,0,2,17,66,101,116,0,2,119,17,65,0,8,2,118,101,0,8,2,120,12,0,8,114,2,116,105,111,110,0,4,97,1,97,97,3,35,12,0,97,2,97,0,107,1,21,2,105,97,3,35,49,0,113,117,2,97,3,35,49,58,0,113,117,105,3,35,49,58,118,0,101,100,1,21,2,32,14,128,128,130,3,70,0,4,1,45,2,45,3,115,0,8,2,32,0,8,2,45,104,97,108,102,0,8,2,107,21,0,8,2,119,104,21,0,4,119,8,2,97,12,3,115,58,0,119,8,2,111,107,0,1,108,2,116,104,3,116,0,2,17,66,105,110,103,3,117,0,101,109,111,114,114,104,1,104,3,117,63,110,34,0,1,110,103,105,115,2,116,117,114,101,3,118,0,4,1,117,113,115,2,115,104,3,119,0,1,119,2,98,0,1,119,2,100,0,1,119,2,115,0,1,119,2,116,99,0,1,119,115,2,17,66,0,4,1,17,67,29,2,32,3,121,0,1,17,67,100,110,97,114,103,2,32,0,1,119,115,2,122,0,97,0,104,2,17,67,0,104,2,32,0,4,101,3,124,0,101,1,104,2,109,0,101,8,2,111,110,0,4,1,119,2,116,101,114,3,125,0,119,0,119,8,2,102,0,119,8,2,107,0,119,101,2,17,66,0,119,101,2,32,0,119,101,8,0,119,97,108,3,125,55,0,4,111,1,109,3,130,0,111,1,109,2,114,105,0,111,1,116,0,4,101,1,109,2,115,116,3,132,0,121,8,0,4,1,17,67,29,2,17,66,121,32,3,133,0,1,32,15,2,32,0,1,104,2,122,17,65,0,1,108,2,122,0,1,108,98,2,122,111,110,0,1,109,2,106,111,114,32,0,1,109,2,106,111,114,101,0,1,110,2,17,67,97,108,0,1,110,2,116,117,114,0,1,112,2,116,105,101,110,0,1,114,2,99,105,17,65,0,1,114,2,122,17,65,0,1,114,2,122,111,114,0,1,114,101,2,115,117,114,0,1,116,115,2,116,117,115,0,1,119,2,17,66,101,13,0,1,119,115,2,116,104,0,2,17,66,101,13,0,2,17,67,97,98,105,108,105,116,121,0,2,115,105,111,110,0,2,116,104,101,32,12,0,2,122,121,0,8,2,32,45,0,8,2,118,105,97,116,0,8,2,118,111,110,0,101,2,108,0,121,0,121,1,119,0,111,114,3,133,6,128,0,111,1,103,2,108,3,133,13,0,113,117,101,2,111,3,133,49,58,118,0,39,115,8,2,32,3,133,86,0,121,108,101,8,3,133,114,0,111,3,133,119,0,4,101,114,3,135,0,101,114,8,2,111,0,121,114,8,0,4,101,114,111,2,112,108,97,110,3,135,34,13,0,101,114,111,2,115,111,108,0,101,114,111,8,3,135,34,131,0,101,97,3,136,0,7,6,98,0,4,1,109,2,32,3,0,2,98,3,0,4,116,1,101,100,3,47,0,116,1,117,115,2,108,0,4,3,69,0,8,2,18,66,17,71,0,104,8,0,97,8,2,109,98,21,3,69,2,35,0,4,97,108,108,105,8,2,21,3,69,4,35,55,109,0,97,108,108,121,8,2,21,0,111,111,107,8,2,21,21,14,128,132,132,3,69,6,113,49,0,117,114,121,1,21,2,32,14,128,130,132,3,69,34,2,118,0,114,122,8,2,101,3,69,34,86,0,117,103,8,2,108,101,3,69,57,129,79,0,97,108,108,105,2,115,116,3,69,115,55,6,118,0,117,114,121,5,3,1,21,2,32,14,128,130,132,3,69,117,34,2,118,0,121,116,101,8,3,69,132,47,0,7,6,99,0,4,1,115,2,101,3,0,2,113,3,0,122,8,2,97,114,3,47,87,0,4,3,49,0,1,97,109,2,105,110,0,2,101,108,116,0,8,2,18,66,17,71,0,99,0,99,1,111,99,2,105,32,0,99,1,111,115,2,101,114,0,99,104,0,107,0,104,97,114,97,2,99,116,3,49,35,34,118,0,117,97,1,101,3,49,58,35,0,4,99,2,101,3,49,87,0,99,2,105,0,97,99,111,2,112,104,3,49,115,49,6,119,0,122,8,2,101,3,74,0,2,101,108,108,18,68,32,3,74,6,0,122,101,99,104,3,74,117,49,0,4,2,69,3,87,0,2,97,101,115,0,2,101,0,2,105,0,2,121,0,2,195,169,0,101,109,101,110,116,8,3,87,109,63,117,50,47,0,105,115,109,2,32,3,87,118,86,13,63,0,105,112,104,2,101,114,3,87,132,81,0,4,101,111,117,115,3,89,8,13,87,0,105,111,117,115,0,4,105,97,110,2,32,3,89,13,50,0,105,101,110,0,105,111,110,0,105,97,108,3,89,13,55,0,105,97,108,2,32,3,89,114,0,105,97,108,5,8,2,32,3,89,115,55,0,105,101,110,5,8,3,89,117,50,0,105,97,2,108,105,116,3,89,118,35,0,105,97,2,98,3,89,136,0,105,97,110,3,89,136,50,0,7,6,100,0,2,100,3,0,117,109,1,21,2,32,3,8,70,13,63,0,110,101,1,101,119,2,115,100,3,50,0,4,3,70,0,1,101,21,21,2,32,14,128,128,129,0,8,2,18,66,17,71,0,8,2,104,21,21,0,8,2,110,105,101,0,8,2,119,17,71,0,39,8,2,17,65,14,128,132,130,0,100,104,0,98,2,32,3,70,4,124,69,124,0,4,117,114,2,17,65,3,70,57,138,0,117,114,2,32,0,121,101,8,3,70,132,0,105,114,8,2,32,3,70,139,0,4,103,2,17,67,3,73,0,103,2,32,0,103,2,101,0,103,2,105,0,103,2,121,0,106,0,106,8,2,17,71,0,103,101,100,2,32,3,73,70,0,117,114,101,1,101,99,3,73,110,0,4,117,2,97,108,32,3,73,129,0,117,2,99,97,116,0,117,2,112,108,0,117,5,3,1,10,2,17,67,17,65,0,7,6,101,0,4,1,10,2,32,3,0,4,1,21,21,2,109,101,110,116,32,3,0,4,2,102,117,108,3,0,2,119,111,114,107,3,0,4,1,17,66,99,97,2,32,3,2,118,0,2,102,102,101,99,0,2,102,102,105,99,0,2,113,117,105,112,0,8,2,99,108,0,8,2,106,17,65,0,8,2,112,104,101,109,0,8,2,113,117,97,116,0,113,117,105,118,3,2,118,49,58,118,82,0,2,17,67,105,99,97,108,3,6,117,0,117,114,2,32,3,6,123,0,4,1,21,2,17,67,105,97,32,3,6,124,0,1,21,2,103,105,99,0,1,104,2,115,105,111,110,0,2,17,66,111,32,0,2,17,66,111,101,32,0,101,1,116,2,110,32,0,101,2,109,0,117,1,115,2,109,32,3,6,136,0,101,114,3,6,137,0,117,114,5,3,2,32,3,6,138,0,117,114,5,5,2,32,3,6,142,0,117,115,1,10,2,32,3,8,109,13,87,0,122,1,21,2,32,3,8,117,86,0,4,1,10,2,110,3,13,0,1,108,2,103,105,116,0,1,108,101,99,2,98,114,97,0,98,108,101,1,21,21,2,32,3,13,69,114,0,103,1,10,2,121,3,13,73,0,39,115,1,114,17,67,10,2,32,3,13,86,0,99,121,1,10,2,32,3,13,87,2,37,0,4,117,3,57,129,0,119,0,119,2,32,0,117,114,111,8,3,57,138,34,131,0,117,114,111,8,2,112,101,3,57,138,44,13,0,119,97,121,2,32,14,128,128,131,3,58,133,0,4,39,115,1,17,67,10,2,32,14,128,130,130,3,86,0,39,115,1,104,116,10,2,32,14,128,130,130,0,39,115,1,114,10,2,32,14,128,130,130,0,4,39,115,1,102,10,2,32,14,128,130,130,3,87,0,39,115,1,107,10,2,32,14,128,130,130,0,39,115,1,112,10,2,32,14,128,130,130,0,39,115,1,116,10,2,32,14,128,130,130,0,4,1,110,2,103,111,116,3,109,0,2,111,0,4,112,2,111,120,3,109,48,0,112,8,2,105,115,17,67,0,102,121,1,21,21,2,32,3,109,81,132,0,102,105,101,114,2,32,3,109,81,132,110,0,4,3,117,0,1,104,17,65,2,110,0,1,112,115,2,99,105,97,0,1,114,10,2,110,0,1,114,99,2,112,101,12,0,1,114,99,115,105,100,2,116,105,111,110,0,2,17,67,105,99,32,0,112,105,8,3,117,48,118,0,112,105,100,101,114,8,3,117,48,118,70,6,123,0,99,104,1,116,2,32,3,117,49,0,4,1,108,108,2,110,103,101,3,118,0,1,109,2,99,104,97,110,105,99,0,1,116,110,105,2,103,101,0,1,116,110,105,2,103,114,97,0,1,116,114,101,118,2,98,0,8,108,101,2,109,101,110,0,101,1,102,102,111,99,0,99,111,110,111,2,109,3,118,49,6,119,50,13,0,4,39,115,1,99,10,2,32,14,128,130,130,3,118,86,0,39,115,1,103,10,2,32,14,128,130,130,0,39,115,1,104,99,10,2,32,14,128,130,130,0,39,115,1,104,112,10,2,32,14,128,130,130,0,39,115,1,104,115,10,2,32,14,128,130,130,0,39,115,1,115,10,2,32,14,128,130,130,0,39,115,1,120,10,2,32,14,128,130,130,0,117,114,1,108,3,123,0,4,1,17,67,29,2,17,66,101,32,3,124,0,1,17,67,29,2,32,24,0,1,21,2,116,105,111,0,1,100,2,102,97,117,108,116,0,1,108,2,103,97,108,0,1,110,2,103,114,111,0,1,112,115,2,99,105,101,115,0,1,114,2,103,97,108,0,1,114,102,2,113,0,2,17,67,105,117,17,66,0,2,98,114,105,97,0,2,109,101,32,0,2,109,101,111,117,0,2,113,117,97,108,0,8,2,113,117,97,0,8,17,67,2,109,117,114,0,8,115,2,113,117,101,0,101,0,117,2,109,32,0,99,111,110,111,2,109,105,99,3,124,49,13,50,6,119,0,99,111,8,2,115,3,124,49,131,0,103,105,111,110,1,108,3,124,73,13,50,0,103,121,2,112,116,3,124,73,118,0,4,101,115,101,1,104,99,3,124,86,0,101,122,101,2,21,0,4,119,1,106,2,12,3,129,0,119,1,108,2,12,0,119,1,114,2,12,0,119,5,3,1,100,0,119,5,3,1,110,0,119,5,3,1,116,0,119,8,115,0,119,101,1,106,2,108,3,129,13,0,119,8,115,2,32,3,131,0,4,104,2,25,3,133,0,106,1,118,2,32,0,4,117,1,100,2,116,115,3,134,0,117,1,114,2,100,0,39,101,114,3,135,0,117,114,5,5,3,142,0,7,6,102,0,2,102,3,0,4,3,81,0,8,2,18,66,17,71,0,116,2,101,110,0,111,114,2,115,101,101,3,81,2,127,0,111,114,2,119,97,114,100,3,81,6,128,0,4,97,2,109,105,108,105,97,114,3,81,13,0,111,114,2,98,97,100,0,111,114,2,98,105,100,0,105,8,2,116,122,21,3,81,109,0,101,100,1,114,101,2,32,3,81,117,70,0,106,8,2,111,114,100,3,81,118,6,0,97,2,99,105,17,65,3,81,133,0,7,6,103,0,8,2,110,17,71,3,0,104,116,3,47,0,110,2,32,3,50,0,109,2,32,3,63,0,4,1,101,118,2,101,116,3,73,0,1,111,2,101,116,0,1,114,101,2,101,116,0,2,69,0,2,101,0,2,101,116,116,101,32,0,2,105,0,2,121,0,103,1,97,120,101,2,101,114,0,101,111,117,115,3,73,8,13,87,0,4,105,97,1,10,2,17,67,32,3,73,13,0,105,97,1,10,2,32,0,105,117,1,10,2,109,0,4,105,110,103,1,108,3,73,109,66,0,105,110,103,1,114,0,97,111,108,8,3,73,133,55,0,4,3,79,0,1,110,117,104,0,1,111,2,121,32,0,1,111,98,2,69,121,0,1,111,103,2,105,99,32,0,2,101,97,114,0,2,101,101,107,0,2,101,116,0,2,105,102,116,0,2,105,103,103,0,2,105,108,17,67,0,2,105,108,116,0,2,105,114,25,0,2,105,118,101,0,8,2,18,66,17,71,0,8,2,101,114,116,0,8,2,105,100,0,8,2,105,108,0,8,2,105,109,0,8,2,105,116,0,8,2,119,17,65,0,103,0,104,1,17,67,2,17,65,0,104,2,17,67,0,104,2,32,0,104,8,2,17,71,0,117,101,2,32,0,105,2,32,3,79,2,118,0,101,2,100,100,3,79,6,117,0,110,117,8,3,79,13,50,129,0,117,97,121,1,21,2,32,3,79,58,132,0,4,101,1,114,111,102,2,116,3,79,117,0,117,101,8,0,105,103,97,8,3,79,118,79,13,0,117,101,114,8,2,110,3,79,123,0,7,6,104,0,4,2,32,3,0,4,2,104,3,0,4,8,2,111,110,111,114,3,0,4,8,2,111,110,111,117,3,0,4,8,2,111,117,114,3,0,8,17,66,3,0,101,39,8,3,2,105,124,0,108,1,25,3,103,0,3,105,0,111,109,111,8,2,115,3,105,4,131,63,131,0,4,121,112,111,2,100,101,3,105,4,132,48,13,0,121,112,111,2,116,104,101,116,0,121,112,111,8,2,21,14,128,132,132,3,105,4,132,48,131,0,97,109,109,101,100,1,21,3,105,6,35,63,118,70,0,97,110,1,17,65,2,32,3,105,35,50,0,111,111,100,1,10,2,32,14,128,128,132,3,105,113,70,0,111,111,100,115,1,10,2,32,14,128,128,133,3,105,113,70,86,0,101,116,101,114,111,8,3,105,117,47,34,131,0,101,97,100,1,21,2,32,14,128,128,132,3,105,117,70,0,121,112,111,8,2,99,114,3,105,118,48,119,0,111,114,114,105,8,3,105,119,34,118,0,111,114,115,101,8,3,105,127,87,0,111,117,115,101,115,2,32,14,128,128,134,3,105,130,86,109,86,0,4,111,117,115,101,2,32,14,128,128,133,3,105,130,87,0,111,117,115,101,8,2,21,0,111,108,100,1,10,2,32,14,128,128,132,3,105,131,55,70,0,111,108,109,101,3,105,131,63,0,111,109,101,8,2,111,3,105,131,63,124,0,111,109,111,101,111,8,3,105,131,63,124,131,0,97,2,115,116,3,105,133,0,101,114,111,3,105,136,34,131,0,111,110,101,2,115,116,3,119,50,118,0,101,105,114,3,135,0,7,6,105,0,108,8,2,108,3,2,118,0,39,8,3,2,132,0,4,1,21,2,98,117,116,105,118,101,3,6,118,0,1,21,2,98,117,116,111,114,0,1,21,2,99,105,112,0,2,17,67,17,67,105,32,0,2,99,105,97,108,0,2,103,101,110,111,117,115,0,2,116,105,111,110,0,4,108,97,1,21,2,32,3,6,118,55,13,0,108,108,97,1,21,2,32,0,102,2,105,99,17,65,110,17,67,3,6,118,81,0,99,105,97,110,3,6,118,89,13,50,0,4,1,21,2,100,111,32,3,6,124,0,2,113,117,101,32,0,2,119,111,0,1,99,2,100,97,108,3,6,132,0,97,108,1,10,2,32,3,8,109,13,55,0,117,115,1,10,3,8,109,13,87,0,99,111,1,10,2,32,3,8,109,49,131,0,102,121,1,10,2,32,3,8,109,81,132,0,4,1,10,2,99,32,3,8,118,0,1,10,2,99,97,32,0,1,10,2,99,97,108,0,1,10,2,99,105,17,67,101,32,0,1,10,2,99,105,115,109,32,0,1,10,2,99,105,115,116,32,0,1,21,2,17,67,97,116,101,32,0,1,100,2,32,0,1,104,21,21,2,32,0,1,107,115,10,2,32,0,2,99,117,115,32,0,1,104,2,32,3,8,132,0,117,1,10,2,109,3,8,136,0,108,101,1,10,2,103,101,3,13,55,118,0,98,108,121,1,21,2,32,14,128,169,132,3,13,69,55,2,118,0,98,108,101,1,21,2,32,14,128,137,132,3,13,69,114,0,122,97,5,3,2,116,105,111,110,3,13,86,133,0,1,104,115,2,32,3,37,0,108,121,1,10,2,32,14,128,130,130,3,55,2,118,0,4,1,21,2,99,101,32,3,109,0,1,21,2,99,101,100,32,0,1,102,2,100,101,108,0,2,111,0,2,122,101,110,0,4,99,101,1,102,102,111,3,109,87,0,99,101,1,118,114,101,115,0,4,3,118,0,1,10,2,17,67,101,110,99,0,1,10,2,17,67,101,110,116,0,1,17,67,2,120,12,12,0,1,21,2,17,67,101,114,0,1,21,2,99,101,110,99,101,0,1,21,2,108,101,115,115,0,1,21,2,110,101,115,115,0,1,99,99,97,2,100,0,1,104,99,2,108,100,114,0,1,108,2,98,101,114,0,1,108,108,101,116,110,0,1,114,98,2,100,103,0,1,114,105,2,100,0,1,119,2,108,100,101,114,17,67,0,2,17,66,101,101,0,2,17,66,101,108,32,0,2,17,66,101,116,32,0,2,97,110,105,32,0,2,98,105,108,105,116,0,2,100,101,111,0,2,108,101,17,65,0,8,2,100,105,0,8,107,2,108,111,0,8,108,2,17,67,121,32,0,8,112,2,116,121,32,0,108,8,2,108,110,0,108,8,2,108,117,115,116,0,112,101,100,101,3,118,48,124,70,0,99,104,8,3,118,49,0,108,108,8,2,32,3,118,55,0,108,101,1,114,99,97,115,3,118,55,118,0,98,101,1,116,2,116,3,118,69,6,117,0,102,101,1,110,97,109,2,115,3,118,81,117,0,102,105,101,114,2,32,3,118,81,132,110,0,105,2,32,3,118,132,0,4,1,17,67,29,2,17,67,97,32,3,124,0,1,17,67,29,2,17,67,111,32,0,1,102,2,106,0,2,98,111,32,0,2,113,117,32,0,5,7,2,111,0,8,108,2,98,114,101,0,122,122,1,112,2,97,3,124,47,87,0,4,1,10,2,122,97,98,108,3,132,0,1,17,67,2,108,101,114,0,1,17,67,29,2,17,67,101,114,32,0,1,17,67,29,2,17,67,121,32,0,1,17,67,29,2,32,0,1,21,2,17,67,105,110,103,0,1,98,2,32,0,1,98,2,98,108,101,32,0,1,99,2,32,0,1,102,2,98,114,101,0,1,104,2,106,0,1,104,99,2,108,100,0,1,108,2,98,101,108,0,1,114,2,102,108,0,1,114,98,2,100,108,0,1,114,99,115,2,98,101,114,0,1,114,102,2,100,97,121,0,1,114,112,2,99,101,0,1,115,2,108,101,110,0,1,115,2,122,17,65,0,1,116,110,101,2,99,101,0,1,116,115,2,102,108,0,1,118,2,98,114,0,1,118,100,97,2,99,101,0,1,118,101,100,2,99,101,0,2,17,66,101,13,0,2,98,101,114,32,0,2,100,101,114,12,32,0,2,100,101,114,32,12,0,8,2,17,66,111,0,8,2,17,67,121,32,0,8,2,97,0,8,2,98,0,8,2,99,0,8,2,100,0,8,2,100,108,101,0,8,2,111,0,8,17,67,2,108,97,103,101,0,8,17,67,2,108,111,0,8,108,2,98,114,0,8,109,2,108,100,0,8,115,2,100,101,114,0,8,115,2,100,108,0,8,115,2,112,104,0,8,119,2,108,100,0,104,105,1,110,3,132,13,0,108,1,108,2,97,104,32,3,132,55,0,98,97,98,1,21,3,132,69,13,69,0,100,101,97,8,3,132,70,6,136,0,100,8,2,32,3,132,70,124,0,4,122,2,101,114,32,3,132,86,0,122,101,2,32,0,122,101,2,100,32,0,122,97,2,116,105,111,110,3,132,86,133,0,7,6,106,0,2,106,3,0,4,1,110,2,97,32,3,57,0,2,195,188,0,3,73,0,101,114,101,8,2,17,67,3,73,117,34,13,0,101,115,8,2,117,105,3,73,117,86,0,111,97,8,2,110,21,3,73,131,6,35,0,7,6,107,0,2,107,3,0,4,3,49,0,8,2,18,66,17,71,0,8,2,104,17,71,0,8,2,119,17,71,0,106,8,2,101,21,3,49,57,0,117,97,110,3,49,58,35,50,0,105,8,2,108,17,67,21,3,49,109,0,105,8,2,108,108,21,3,49,118,0,104,97,3,49,121,0,104,97,114,3,49,122,0,117,2,99,104,3,49,129,0,117,119,97,105,116,3,49,129,58,6,133,47,0,4,110,2,105,102,3,50,0,110,2,105,116,0,110,2,105,118,0,110,2,111,98,0,110,2,111,119,0,110,8,2,17,71,0,7,6,108,0,4,1,108,17,65,2,32,3,0,2,108,3,0,111,1,21,2,103,111,117,115,3,8,55,13,0,105,110,103,1,116,10,2,32,3,10,55,109,66,0,4,3,55,0,1,17,65,2,108,121,32,0,1,114,2,32,0,1,119,2,32,0,2,17,67,0,2,32,0,2,69,0,8,2,104,17,71,0,8,2,106,117,0,108,1,17,65,0,108,1,17,65,2,17,65,0,108,1,39,17,65,0,108,1,121,0,108,2,17,67,0,108,8,2,17,71,0,108,101,2,32,0,4,121,1,21,2,32,14,128,130,130,3,55,2,118,0,121,1,102,101,105,2,32,14,128,128,130,0,121,1,102,102,2,32,14,128,128,130,0,121,1,102,111,2,32,14,128,128,130,0,121,1,112,10,2,32,14,128,128,130,0,105,110,103,1,17,66,10,2,32,3,55,109,66,0,121,8,2,100,3,55,118,0,105,110,117,120,3,55,118,50,120,49,87,0,105,109,1,10,2,101,110,116,3,55,118,63,0,105,115,116,101,110,3,55,118,87,13,50,0,111,5,3,8,2,103,25,3,55,126,0,117,2,110,97,3,55,129,0,4,121,1,102,2,32,3,55,132,0,121,1,112,2,32,0,121,1,112,105,116,108,117,109,0,4,108,101,100,1,21,21,2,32,14,128,136,131,3,70,0,108,101,100,1,111,21,21,2,32,14,128,136,131,0,108,97,110,8,3,103,2,35,50,0,121,1,108,21,2,32,14,128,128,130,3,109,0,1,17,66,2,32,3,114,0,7,6,109,0,4,1,17,66,2,32,3,13,63,0,1,104,2,32,0,110,8,2,101,3,50,0,4,3,63,0,1,108,2,32,0,98,1,105,108,2,101,0,98,1,111,2,101,0,98,1,117,100,2,101,0,98,2,32,0,109,0,110,2,32,0,101,116,97,8,2,108,108,117,3,63,2,117,47,35,0,101,1,17,66,10,2,32,3,63,2,118,0,4,97,108,8,2,102,14,128,132,131,3,63,4,35,55,0,97,108,8,2,110,14,128,132,131,0,97,108,8,2,112,14,128,132,131,0,97,108,8,2,116,114,14,128,132,131,0,117,108,116,105,8,2,21,21,14,128,132,133,3,63,4,120,55,47,118,0,101,1,114,111,116,2,110,116,3,63,6,117,0,69,110,116,97,114,121,2,32,3,63,6,117,50,47,13,34,2,118,0,101,110,116,101,100,1,17,67,3,63,6,117,50,47,118,70,0,111,2,110,111,116,111,3,63,13,0,4,97,99,8,2,97,100,14,128,132,131,3,63,13,49,0,97,99,8,2,98,14,128,132,131,0,97,99,8,2,100,14,128,132,131,0,97,99,8,2,108,14,128,132,131,0,97,99,8,2,109,14,128,132,131,0,99,8,0,111,110,2,111,112,111,108,3,63,13,50,0,111,110,111,2,103,97,3,63,13,50,6,119,0,4,69,110,116,2,32,3,63,13,50,47,0,101,110,116,1,10,2,32,14,128,128,132,0,101,110,116,1,117,2,32,0,4,101,110,116,115,1,10,2,32,14,128,128,133,3,63,13,50,47,87,0,101,110,116,115,1,117,2,32,0,4,97,108,8,2,101,118,3,63,13,55,0,97,108,8,2,105,0,111,98,105,108,101,3,63,13,69,124,55,0,111,117,116,104,1,10,2,32,3,63,13,85,0,97,8,2,109,3,63,35,0,4,99,8,2,17,65,3,63,35,49,0,99,8,2,45,17,65,0,98,108,121,3,63,69,55,2,118,0,101,116,97,98,111,3,63,117,47,6,35,69,119,0,101,116,97,8,3,63,117,47,13,0,101,110,1,21,2,32,3,63,117,50,0,101,110,116,5,8,1,10,2,32,14,128,128,132,3,63,117,50,47,0,101,110,116,115,5,8,1,10,2,32,14,128,128,133,3,63,117,50,47,87,0,111,110,2,111,120,3,63,119,50,0,111,110,111,8,3,63,119,50,131,0,117,108,116,105,8,3,63,120,55,47,118,0,4,111,98,105,108,101,1,109,105,3,63,131,69,132,55,0,111,98,105,108,101,8,0,111,115,116,1,21,2,32,14,128,128,132,3,63,131,87,47,0,97,121,111,114,5,35,3,63,135,0,7,6,110,0,4,1,110,3,0,4,1,110,2,32,3,0,4,100,1,32,50,2,32,3,0,101,1,110,10,2,32,3,0,2,17,67,111,32,3,8,50,0,4,1,17,66,2,32,3,13,50,0,1,69,2,32,0,8,2,103,17,71,12,3,14,66,0,4,3,50,0,1,21,2,99,104,0,1,97,105,10,2,32,14,128,128,129,0,1,103,2,32,0,1,103,2,105,110,103,12,0,1,108,2,32,0,2,107,110,0,101,1,17,66,10,2,32,3,50,2,118,0,97,110,111,8,2,14,128,132,132,3,50,4,35,50,131,0,111,110,8,2,21,14,128,132,131,3,50,4,119,50,0,101,119,115,8,2,14,128,132,132,3,50,6,57,129,86,0,101,119,115,5,3,8,2,14,128,132,132,3,50,6,129,86,0,101,115,115,1,10,2,32,14,128,130,132,3,50,13,87,0,101,99,101,115,115,105,116,3,50,13,87,117,87,118,47,0,39,116,3,50,47,0,107,5,7,3,50,49,0,115,1,97,105,10,2,32,14,128,128,130,3,50,86,0,101,115,115,5,8,1,10,2,32,14,128,130,132,3,50,117,87,0,101,111,8,3,50,124,131,0,97,117,115,101,3,50,125,87,118,0,105,110,116,104,3,50,132,50,85,0,97,109,101,1,21,2,32,14,128,128,132,3,50,133,63,0,4,1,21,2,99,17,67,3,66,0,2,99,32,0,2,120,0,103,0,107,3,66,49,0,7,6,111,0,4,2,98,106,101,3,2,119,0,2,98,108,105,103,97,116,111,0,8,2,98,108,0,8,2,98,115,0,8,2,98,116,0,112,112,111,114,2,116,117,3,2,119,48,110,0,98,115,8,2,101,114,3,2,119,69,86,0,4,1,99,2,105,110,99,105,3,2,131,0,1,100,2,100,101,99,0,1,108,2,99,97,116,0,8,2,98,101,115,0,39,8,2,14,128,132,130,0,1,108,2,99,111,109,3,4,131,0,101,2,118,101,3,4,131,6,117,0,4,2,17,67,105,99,32,3,6,119,0,2,17,67,105,99,97,108,0,2,103,101,110,111,117,115,0,2,103,101,110,121,0,116,114,111,2,112,121,3,6,119,47,34,13,0,112,111,108,1,21,2,18,67,3,6,119,48,13,55,0,99,114,97,116,101,115,2,32,3,6,119,49,34,115,47,124,86,0,120,2,105,100,101,3,6,119,49,87,0,109,101,116,101,114,1,21,3,6,119,63,118,47,13,0,103,114,97,112,104,101,114,1,21,3,6,119,79,34,35,81,13,0,4,1,21,2,17,67,105,32,3,6,131,0,1,116,115,117,99,2,100,105,0,2,17,66,97,32,0,2,17,66,101,111,110,0,2,17,66,105,17,65,0,2,17,67,111,32,0,2,17,67,111,105,115,116,0,2,98,105,99,32,0,2,99,114,101,32,0,97,2,32,3,6,131,13,0,4,105,2,110,97,32,3,6,134,0,121,2,17,65,32,0,1,10,2,112,104,101,114,3,8,13,0,103,1,108,21,2,121,3,8,13,73,0,112,104,101,1,10,2,32,3,8,13,81,2,118,0,1,17,67,21,21,2,32,3,8,131,0,4,1,10,2,103,101,110,32,3,13,0,1,10,2,112,32,0,1,102,102,2,99,17,65,0,1,104,115,105,98,2,112,0,1,104,116,101,109,2,100,32,0,1,105,114,101,112,2,100,32,0,1,108,2,103,105,101,115,0,1,109,2,120,0,1,109,109,2,100,111,114,0,1,112,2,116,101,110,116,105,0,1,115,2,112,104,105,115,116,105,99,0,1,116,2,98,97,99,99,0,1,116,115,117,99,2,100,0,1,118,105,112,2,116,0,2,99,99,97,115,105,0,2,99,99,108,117,0,2,102,102,105,99,105,0,2,112,105,110,105,0,102,2,102,101,110,0,4,116,1,103,10,2,32,3,13,47,0,116,1,114,114,2,32,0,112,112,2,114,101,115,3,13,48,0,112,111,108,105,116,97,110,3,13,48,6,119,55,118,47,13,50,0,112,101,100,1,10,2,32,3,13,48,70,0,99,107,1,17,67,11,10,2,32,3,13,49,0,4,99,99,117,114,3,13,49,123,0,99,99,117,114,114,0,4,99,99,117,114,5,5,3,13,49,142,0,99,99,117,114,114,5,5,0,105,120,2,32,3,58,35,0,105,115,1,21,2,32,3,58,121,0,4,105,114,3,58,122,0,105,114,101,0,101,1,10,2,115,32,14,128,128,130,3,86,0,101,2,115,111,112,104,3,109,0,4,3,119,0,1,21,2,108,111,32,0,1,98,2,116,104,101,114,0,1,104,115,2,112,32,0,1,108,102,2,112,32,0,1,109,2,100,101,108,0,1,109,2,100,101,114,0,1,109,2,100,101,115,116,0,1,112,2,112,32,0,1,114,2,103,101,114,0,1,114,2,112,32,0,1,114,112,2,112,101,0,1,116,2,112,32,0,2,17,66,101,17,67,111,32,0,2,17,67,101,109,105,99,0,2,17,67,101,116,32,0,2,98,108,105,103,97,0,2,98,108,111,0,2,98,115,116,105,110,0,2,102,102,105,99,0,2,120,12,12,0,8,2,17,67,121,12,0,8,2,112,101,114,0,8,98,2,100,121,0,8,114,2,98,101,114,0,8,114,2,116,104,101,114,0,104,1,106,2,110,0,120,121,3,119,49,87,118,0,98,115,111,2,108,3,119,69,87,13,0,4,103,101,1,108,21,2,32,3,119,79,0,103,117,101,1,21,21,0,4,1,100,2,122,101,110,3,120,0,1,116,2,110,103,117,0,2,116,104,101,114,12,0,4,101,1,102,2,116,17,65,3,124,0,101,8,2,100,0,101,8,2,115,0,97,1,114,98,2,100,3,125,0,4,5,3,1,10,2,102,102,3,126,0,5,3,1,99,2,102,102,0,5,3,1,103,2,110,103,0,5,3,1,108,99,2,116,104,0,5,3,1,109,2,116,104,0,5,3,1,114,2,110,103,0,5,3,1,115,2,110,103,0,5,3,2,102,116,0,5,3,8,2,102,102,0,4,39,101,114,3,128,0,97,114,0,97,114,2,32,0,4,1,100,2,105,110,103,3,129,0,101,1,104,115,2,12,0,4,1,17,67,29,2,17,66,97,108,3,131,0,1,17,67,29,2,17,66,117,115,32,0,1,21,2,105,115,116,0,1,29,2,17,66,121,0,1,98,2,116,104,0,1,99,2,116,97,110,0,1,100,2,99,105,108,0,1,102,2,99,17,65,0,1,103,105,2,32,0,1,107,2,100,17,65,0,1,109,2,116,105,118,0,1,110,2,98,105,108,0,1,110,2,98,108,0,1,110,2,116,97,0,1,110,2,116,111,114,0,1,114,2,116,97,0,1,114,2,116,111,0,1,114,99,2,97,116,0,1,114,99,2,99,117,0,1,114,112,112,97,2,112,0,1,116,2,116,97,0,2,17,66,101,13,0,2,17,66,101,110,17,67,0,2,17,66,105,110,103,0,2,32,0,2,98,97,0,2,98,101,100,0,2,98,121,32,0,2,100,97,32,0,2,103,97,110,32,0,2,104,17,65,0,2,105,110,103,0,2,105,115,109,0,2,107,121,32,0,2,115,104,17,65,32,0,2,116,97,116,0,2,116,105,111,110,0,8,2,17,66,97,108,0,8,2,122,111,0,8,17,67,2,116,105,0,8,104,2,99,117,0,8,108,2,99,17,65,0,8,109,2,98,105,108,0,8,114,2,98,111,0,8,118,2,99,17,65,0,97,0,101,0,104,0,101,114,3,131,13,0,116,111,114,1,109,3,131,47,13,0,116,105,99,1,110,2,17,65,3,131,47,109,87,0,116,111,1,114,112,2,110,3,131,47,119,0,116,111,1,114,112,3,131,47,131,0,4,112,101,1,110,117,2,110,3,131,48,13,0,112,101,8,2,110,0,112,101,100,1,99,2,32,3,131,48,70,0,99,104,1,114,116,3,131,49,0,100,111,2,114,17,65,3,131,70,13,0,4,100,111,114,3,131,70,110,0,100,111,117,114,0,103,101,110,105,2,99,3,131,73,6,117,50,118,0,4,103,117,101,1,114,3,131,79,0,103,117,101,1,118,0,4,116,104,1,108,2,105,3,131,84,0,116,104,1,108,2,105,97,110,0,116,104,1,114,116,101,98,0,116,104,101,1,108,99,0,116,104,101,1,114,116,0,105,2,99,3,131,109,0,101,1,112,2,116,105,3,131,117,0,4,101,1,112,2,109,3,131,118,0,101,1,112,2,116,0,4,105,3,134,0,105,2,99,101,0,105,2,99,107,0,121,0,105,97,3,134,13,0,101,97,2,32,3,136,0,7,6,112,0,4,1,115,97,114,2,98,3,0,2,112,3,0,104,111,110,121,1,10,2,32,3,8,81,13,50,118,0,4,116,1,105,101,3,47,0,116,8,2,17,71,0,4,3,48,0,2,104,97,122,97,0,2,104,111,108,101,0,8,2,18,66,17,71,0,104,2,101,114,100,0,111,114,2,116,114,97,121,3,48,2,128,0,111,108,121,2,21,21,3,48,4,119,55,118,0,121,114,111,8,2,21,21,14,128,132,132,3,48,4,132,34,131,0,97,108,101,111,8,2,21,14,128,132,133,3,48,4,133,55,124,131,0,97,1,109,121,115,3,48,13,0,111,116,97,2,116,3,48,13,47,133,0,121,111,110,3,48,57,119,50,0,117,114,8,2,115,117,3,48,110,0,117,116,2,32,3,48,113,47,0,111,108,121,2,21,3,48,119,55,118,0,117,116,1,115,2,32,3,48,120,47,0,105,99,111,8,3,48,124,49,131,0,105,101,99,101,2,32,14,128,128,133,3,48,124,87,0,121,114,111,109,2,101,3,48,132,34,6,119,63,0,110,8,2,101,117,3,50,0,110,101,117,3,50,57,129,0,4,102,8,2,17,71,3,81,0,104,0,104,8,2,17,71,0,104,8,2,18,66,17,71,0,104,101,110,121,108,3,81,4,124,50,132,55,0,104,111,116,111,8,2,21,21,14,128,132,133,3,81,4,131,47,131,0,104,121,99,111,8,3,81,4,132,49,131,0,104,101,110,111,109,101,2,110,3,81,109,50,119,63,118,0,104,105,108,97,3,81,118,55,35,0,104,111,116,2,111,103,114,97,112,104,3,81,131,47,0,104,111,116,111,2,109,101,116,3,81,131,47,6,119,0,104,111,116,111,99,111,112,3,81,131,47,13,49,119,48,0,104,111,116,111,110,3,81,131,47,119,50,0,104,111,116,111,3,81,131,47,131,0,115,8,2,17,71,3,87,0,115,101,117,100,111,3,87,129,70,131,0,115,121,99,104,3,87,132,49,0,115,121,99,104,111,2,108,111,3,87,132,49,6,119,0,115,121,99,104,111,3,87,132,49,131,0,7,6,113,0,2,113,3,0,4,3,49,0,117,1,99,97,106,0,117,2,32,0,117,2,101,114,32,0,117,101,1,21,2,32,0,117,101,116,116,3,49,6,117,47,0,117,101,117,3,49,57,129,0,117,3,49,58,0,117,2,17,67,3,49,58,13,0,117,101,8,2,32,3,49,58,117,0,117,101,115,116,3,49,58,117,87,47,0,117,121,3,49,58,118,0,117,97,1,115,2,17,66,3,49,58,119,0,117,97,115,2,17,65,3,49,58,133,86,0,117,97,115,105,3,49,58,133,86,132,0,117,101,116,1,97,114,3,49,109,47,0,117,111,114,1,105,108,3,49,110,0,117,97,121,3,49,124,0,117,101,116,2,32,3,49,133,0,7,6,114,0,4,1,114,2,32,3,0,100,1,32,51,2,32,3,0,109,8,3,4,122,117,63,0,1,21,2,17,66,3,13,0,4,3,34,0,104,1,17,67,0,104,8,2,17,71,0,114,0,119,8,2,97,3,34,2,113,0,121,1,116,110,97,10,2,32,14,128,128,130,3,34,2,118,0,4,114,104,101,97,3,34,6,136,0,114,104,111,101,97,0,1,17,67,2,32,24,3,34,13,0,69,114,2,32,3,34,110,0,104,121,116,104,3,34,118,84,0,4,117,110,8,2,97,3,34,120,50,0,117,110,8,2,111,0,4,104,101,117,3,34,129,0,117,8,2,98,18,66,0,4,104,111,8,2,100,3,34,131,0,104,111,8,2,116,0,4,104,105,2,110,3,34,132,0,104,105,2,122,0,1,101,2,32,3,110,0,7,6,115,0,4,2,99,105,111,117,115,3,0,4,2,115,3,0,116,1,32,49,2,32,3,0,104,101,39,8,3,2,89,124,0,101,108,102,2,32,3,6,87,117,55,81,0,101,108,118,101,115,2,32,3,6,87,117,55,82,86,0,99,111,112,121,1,21,2,32,3,8,87,49,13,48,2,118,0,99,105,115,2,32,3,8,87,49,118,87,0,99,105,2,32,3,8,87,49,132,0,105,97,5,3,2,32,3,8,88,13,0,105,97,110,5,3,2,32,3,8,88,13,50,0,105,97,2,32,3,8,88,136,0,105,97,110,2,32,3,8,88,136,50,0,115,105,111,110,2,32,3,8,89,13,50,0,115,105,111,110,5,8,2,32,3,8,89,120,50,0,4,1,21,2,32,14,128,128,129,3,86,0,1,32,15,2,32,0,1,32,54,49,2,32,0,1,39,32,15,2,32,0,1,97,2,101,108,32,0,1,97,101,2,105,101,0,1,97,101,2,105,108,0,1,97,101,2,121,0,1,97,101,108,112,2,101,0,1,97,101,112,2,101,0,1,97,101,116,2,101,0,1,97,104,112,2,101,0,1,97,108,2,101,0,1,97,109,2,101,0,1,97,112,2,101,0,1,97,114,2,101,0,1,103,110,2,32,14,128,128,129,0,1,105,97,2,101,0,1,105,114,112,2,111,0,1,109,2,105,0,1,109,2,121,0,1,110,2,32,14,128,128,129,0,1,111,17,67,2,69,110,0,1,111,17,67,2,69,114,0,1,114,2,100,0,2,32,0,8,97,101,2,101,0,8,97,104,2,32,0,8,101,114,2,111,0,8,105,111,17,67,2,101,0,101,1,105,117,2,32,0,101,1,111,2,32,0,101,1,111,100,2,32,0,101,1,111,111,104,99,0,101,1,111,116,2,32,0,101,1,117,97,2,32,0,101,1,117,102,2,32,0,101,1,119,0,4,105,110,1,105,97,2,32,3,86,13,50,0,105,110,1,117,2,32,0,105,98,1,97,101,3,86,13,69,0,4,3,87,0,1,21,2,104,101,97,100,32,0,1,21,2,104,105,108,108,32,0,1,21,2,104,111,117,115,0,1,97,2,101,0,1,99,2,32,0,1,99,10,2,32,14,128,128,129,0,1,101,112,10,2,32,14,128,128,129,0,1,101,116,2,32,14,128,128,129,0,1,102,2,32,0,1,102,10,2,32,14,128,128,129,0,1,104,116,2,32,0,1,104,116,10,2,32,14,128,128,129,0,1,105,114,2,32,14,128,128,129,0,1,107,2,32,0,1,107,10,2,32,14,128,128,129,0,1,112,2,32,0,1,112,10,2,32,14,128,128,129,0,1,116,2,32,14,128,128,129,0,1,116,10,2,32,14,128,128,129,0,2,115,104,0,5,3,1,101,114,2,111,117,114,0,8,2,99,17,71,0,8,2,99,18,66,17,71,0,8,2,107,17,71,0,8,2,107,18,66,17,71,0,8,2,108,17,71,0,8,2,109,17,71,0,8,2,110,17,71,0,8,2,112,17,71,0,8,2,112,18,66,17,71,0,8,2,112,104,17,71,0,8,2,113,117,0,8,2,114,105,0,8,2,116,17,71,0,8,2,116,114,17,71,0,8,2,117,0,8,2,118,97,0,8,2,118,101,0,8,2,119,17,71,0,8,2,122,17,71,0,8,17,65,17,66,2,32,0,8,105,109,2,104,0,99,1,117,109,2,108,0,99,2,105,0,101,1,111,111,2,32,0,115,1,111,114,99,2,104,0,115,2,32,0,115,101,2,32,0,101,109,105,8,2,21,21,14,128,132,132,3,87,4,117,63,109,0,105,110,1,97,2,32,3,87,13,50,0,116,8,2,32,3,87,13,50,47,0,111,109,97,8,2,108,105,3,87,13,63,121,0,105,98,1,10,3,87,13,69,0,116,101,105,110,3,87,47,132,50,0,4,99,2,101,112,116,3,87,49,0,99,104,2,111,0,99,104,5,3,2,101,100,0,99,104,8,2,105,115,109,0,99,97,114,8,2,97,3,87,49,35,34,0,99,104,105,122,8,3,87,49,118,47,87,0,99,104,101,2,109,3,87,49,124,0,99,97,114,8,2,17,65,3,87,49,135,0,99,97,114,99,3,87,49,135,87,0,101,99,117,114,3,87,109,49,57,138,0,101,109,105,110,8,3,87,117,63,118,50,0,121,2,110,101,114,103,3,87,118,0,111,109,101,1,21,2,32,14,128,128,132,3,87,120,63,0,111,109,101,1,111,2,32,14,128,128,132,3,87,131,63,0,4,105,111,110,1,17,65,3,88,13,50,0,105,111,110,5,3,1,114,101,0,105,111,110,5,8,1,17,65,3,88,120,50,0,4,99,104,2,17,67,3,89,0,99,104,2,32,0,99,104,8,0,99,104,8,2,105,108,0,104,0,104,8,2,17,71,0,104,8,2,18,66,17,71,0,115,2,117,101,0,115,117,114,101,1,97,3,89,6,138,0,4,104,105,114,101,1,10,2,32,14,128,128,133,3,89,13,0,115,105,97,2,32,0,4,105,111,110,1,17,67,3,89,13,50,0,115,105,97,110,2,32,0,115,105,111,110,0,115,117,114,3,89,110,0,104,105,112,1,10,2,32,14,128,128,132,3,89,118,48,0,104,105,112,115,1,10,2,32,14,128,128,133,3,89,118,48,87,0,105,111,110,5,8,1,17,67,3,89,120,50,0,115,117,101,1,105,116,3,89,129,0,104,105,114,101,5,3,1,10,2,32,14,128,128,133,3,89,136,0,115,117,114,1,97,3,89,138,0,4,1,32,54,2,32,3,109,86,0,1,101,115,10,2,32,14,128,128,129,0,1,101,115,115,10,2,32,14,128,128,130,0,8,2,32,3,117,87,0,1,101,99,21,2,32,14,128,128,129,3,118,86,0,7,6,116,0,4,1,115,2,108,3,0,1,116,3,0,105,118,101,1,17,67,17,65,2,32,3,8,47,118,82,0,117,1,21,2,108,97,116,101,3,8,74,113,0,4,3,47,0,1,105,112,2,105,97,0,1,115,105,2,105,97,110,12,0,8,2,114,17,71,0,8,2,115,17,71,0,8,2,119,17,71,0,4,111,2,109,111,114,114,3,47,13,0,116,117,2,114,0,4,114,105,8,2,98,117,3,47,34,118,0,114,105,8,2,103,0,114,105,8,2,110,105,0,114,105,8,2,118,105,0,4,114,105,8,2,17,65,3,47,34,132,0,114,105,8,2,17,67,17,65,0,114,105,8,2,17,67,121,0,114,105,101,8,0,114,105,98,101,3,47,34,132,69,0,105,97,110,8,3,47,57,35,50,0,4,122,3,47,87,0,122,8,2,97,114,0,101,108,101,8,3,47,117,55,109,0,111,8,2,110,110,3,47,120,0,119,111,8,3,47,129,0,111,119,110,1,21,2,32,14,128,128,132,3,47,130,50,0,4,99,104,3,74,0,115,99,104,0,117,114,1,21,2,97,108,32,3,74,8,13,34,0,105,97,1,115,10,2,32,3,74,13,0,4,117,114,1,21,2,17,65,3,74,13,34,0,117,114,1,21,2,121,0,105,111,110,1,115,10,3,74,13,50,0,4,117,114,1,21,2,32,3,74,110,0,117,114,101,2,32,0,105,111,110,5,8,1,115,10,3,74,120,50,0,117,1,21,2,97,108,3,74,129,0,103,97,1,114,2,103,3,79,118,0,4,104,8,2,17,71,3,85,0,104,8,2,114,17,71,0,104,8,2,119,17,71,0,1,21,2,105,97,3,89,0,105,111,110,1,10,3,89,8,13,50,0,105,111,117,115,1,10,3,89,8,13,87,0,105,111,110,2,97,108,3,89,8,14,50,0,105,111,110,5,8,1,10,3,89,8,120,50,0,105,97,1,10,2,32,3,89,13,0,4,105,97,110,1,10,2,32,3,89,13,50,0,105,101,110,1,10,0,105,101,110,99,101,1,10,3,89,13,50,87,0,105,97,108,1,10,3,89,114,0,105,1,10,2,97,108,105,3,89,118,0,7,6,117,0,108,1,102,2,102,105,108,3,2,120,55,0,108,116,114,97,8,2,21,3,4,113,55,47,34,35,0,4,1,21,2,100,97,32,3,6,57,129,0,1,102,2,103,97,108,0,2,17,67,105,17,65,0,2,115,105,111,110,0,2,116,105,111,110,0,4,1,108,2,115,105,111,110,3,6,129,0,1,114,2,17,67,105,17,65,0,1,114,2,115,105,111,110,0,1,115,2,17,67,17,65,32,0,2,103,97,32,0,2,107,105,32,0,2,109,97,32,0,2,109,111,32,0,2,122,122,105,32,0,121,2,17,65,32,3,6,129,57,0,4,1,10,2,108,111,117,115,32,3,8,57,113,0,1,21,2,108,97,32,0,1,21,2,108,97,114,0,1,21,2,108,97,116,101,0,1,21,2,108,117,109,0,108,105,1,21,2,32,3,8,57,113,55,132,0,2,97,32,3,8,57,129,0,111,117,115,1,21,3,8,57,129,13,87,0,1,104,2,32,3,8,129,0,108,108,121,1,102,10,2,32,3,13,55,2,118,0,109,1,114,2,101,110,116,3,13,63,0,103,103,101,1,115,2,115,116,3,13,73,117,0,115,1,10,2,32,3,13,87,0,97,1,103,2,114,17,65,3,35,0,2,108,17,65,3,57,113,0,4,1,25,2,116,114,105,3,57,129,0,1,100,2,108,121,0,1,104,2,109,97,110,0,1,108,108,2,108,0,1,108,111,118,2,109,0,1,110,97,109,0,1,110,101,109,2,32,0,1,115,2,108,101,32,0,2,17,67,17,65,0,2,17,67,101,17,67,111,32,0,2,32,0,2,97,0,2,97,108,32,0,2,105,0,2,108,101,32,0,2,109,101,0,2,111,0,2,116,121,0,8,2,116,105,108,0,8,108,111,115,2,17,67,0,103,1,112,109,2,110,0,103,104,1,104,0,117,1,99,97,118,0,117,2,109,3,57,129,13,0,97,114,121,2,32,3,57,129,13,34,2,118,0,99,108,101,1,110,3,57,129,49,55,118,0,99,108,101,97,114,1,110,3,57,129,49,55,137,0,115,8,2,17,65,3,57,129,86,0,115,117,114,112,3,57,129,86,6,123,48,0,115,117,114,112,5,5,3,57,129,86,6,142,48,0,115,117,2,97,108,3,57,129,88,129,0,1,103,2,105,3,58,0,97,1,103,21,2,103,101,3,58,118,0,97,8,103,3,58,121,0,4,97,1,115,2,100,3,58,133,0,97,1,115,2,115,0,97,103,1,115,3,58,133,73,0,4,1,98,2,100,100,104,3,113,0,1,98,2,115,104,0,1,98,2,116,99,104,0,1,99,2,115,104,0,1,112,2,115,104,0,1,112,2,115,115,0,4,108,1,98,2,114,3,113,55,0,108,1,98,2,119,0,108,108,1,98,0,108,108,1,102,0,108,108,1,112,0,4,108,108,121,1,98,3,113,55,118,0,108,108,121,8,102,0,4,108,1,99,105,10,2,116,32,3,114,0,108,1,102,10,2,32,0,1,116,116,101,108,2,99,101,3,118,0,4,115,1,98,2,105,17,65,3,118,86,0,115,1,98,2,121,0,115,105,110,101,115,115,1,98,3,118,86,50,13,87,0,4,3,120,0,1,108,2,99,107,0,2,103,117,17,67,0,2,108,117,108,0,2,115,104,0,2,120,17,65,12,0,99,117,108,3,120,49,57,113,55,0,108,5,8,1,102,10,2,32,3,120,55,0,108,108,121,5,8,1,102,10,2,32,3,120,55,2,118,0,103,1,108,112,3,120,79,0,120,117,114,1,108,3,120,79,88,129,110,0,115,8,2,32,3,120,86,0,97,114,1,103,2,100,3,122,0,4,1,18,66,2,32,3,129,0,1,104,114,2,17,67,17,65,0,1,106,2,17,67,17,65,0,1,106,2,108,105,0,1,106,10,2,17,67,17,65,0,1,108,2,17,67,17,65,0,1,108,2,98,114,105,0,1,114,2,17,67,17,65,0,1,114,2,97,17,67,12,0,1,114,2,105,0,1,114,2,116,104,0,1,115,2,17,67,17,65,0,1,115,2,105,0,1,119,2,17,67,17,65,0,1,119,2,99,104,17,65,0,2,17,67,117,32,0,2,32,24,0,2,108,121,0,5,3,1,100,2,17,67,17,65,0,5,3,1,100,2,116,121,0,5,3,1,110,2,17,67,17,65,0,5,3,1,116,2,17,67,17,65,12,0,5,3,1,116,2,105,0,8,2,108,17,65,0,8,108,2,97,0,8,108,2,99,0,104,2,17,67,0,97,114,121,1,114,2,32,3,129,34,2,118,0,99,108,101,5,3,1,110,3,129,49,55,118,0,99,108,101,97,114,5,3,1,110,3,129,49,55,137,0,103,2,101,114,32,3,129,79,0,111,114,1,108,102,3,129,110,0,121,3,132,0,111,121,3,134,0,7,6,118,0,2,118,3,0,4,3,82,0,8,2,108,97,0,105,8,2,98,114,97,116,3,82,2,132,0,105,118,105,2,21,3,82,118,82,118,0,105,118,2,32,3,82,132,82,0,97,1,21,2,108,101,110,3,82,133,0,101,104,101,109,8,3,82,136,63,0,7,6,119,0,4,1,109,2,105,99,104,32,3,0,4,1,115,17,65,2,105,99,107,3,0,2,119,3,0,101,1,17,67,2,32,3,8,58,118,0,4,114,3,34,0,114,8,2,17,71,0,4,3,58,0,104,0,104,8,2,17,71,0,4,105,116,104,2,17,65,3,58,2,118,84,0,105,116,104,2,17,67,0,101,115,116,1,17,67,3,58,6,117,87,47,0,105,116,104,1,101,2,32,3,58,6,118,84,0,1,17,67,2,32,3,58,13,0,4,105,110,103,1,17,66,2,32,3,58,118,66,0,105,110,103,1,17,66,2,115,32,0,104,105,99,104,3,58,118,74,0,105,116,104,2,101,3,58,118,84,0,104,97,116,3,58,119,47,0,4,111,114,1,115,115,2,100,3,58,123,0,111,114,2,116,104,32,0,101,2,119,3,58,124,0,105,115,101,1,21,2,32,14,128,128,132,3,58,132,86,0,104,101,114,101,3,58,135,0,101,114,101,2,119,3,58,137,0,4,111,114,5,5,1,115,115,2,100,3,58,142,0,111,114,5,5,2,116,104,32,0,104,2,111,108,3,105,0,4,104,111,2,32,3,105,129,0,104,111,2,100,0,104,111,2,109,0,104,111,2,115,0,104,111,39,0,111,114,1,115,2,100,3,128,0,7,6,120,0,1,120,2,17,65,3,0,105,111,117,115,3,8,49,89,13,87,0,117,2,97,3,8,49,89,129,0,3,49,87,0,117,114,101,2,32,3,49,89,2,138,0,105,111,2,110,3,49,89,13,0,8,2,17,71,3,86,0,121,8,3,86,132,0,7,6,121,0,1,10,2,32,24,3,2,37,0,111,117,39,3,2,57,129,0,4,1,10,2,32,3,2,118,0,1,17,67,0,1,102,17,65,11,2,32,0,1,102,17,67,2,32,0,1,104,2,112,111,99,114,0,4,2,17,67,105,99,32,3,6,118,0,2,17,67,105,99,97,108,0,2,17,67,105,102,121,0,4,1,21,2,114,97,32,3,6,132,0,2,112,97,108,0,115,105,115,1,10,2,32,3,8,13,87,118,87,0,1,107,115,10,2,32,3,8,37,0,114,2,32,3,13,0,1,17,66,11,2,32,24,14,128,144,129,3,37,0,4,3,57,0,2,97,114,0,2,101,97,114,0,2,105,17,67,32,0,97,110,103,3,57,6,35,66,0,39,8,2,17,67,14,128,132,130,3,57,13,0,101,115,8,3,57,117,87,0,101,97,104,3,57,117,105,0,117,2,21,3,57,129,0,101,111,2,17,67,3,57,131,0,1,17,67,2,97,98,108,3,109,0,114,105,110,103,1,115,3,109,34,118,50,73,0,4,1,17,66,11,2,32,14,128,144,129,3,118,0,1,17,66,111,29,2,21,12,0,1,17,67,2,105,0,1,17,67,17,67,2,110,32,0,1,17,67,21,2,103,101,110,0,1,17,67,21,2,109,17,65,110,32,0,1,99,2,108,105,110,0,1,99,2,110,105,0,1,99,2,114,0,1,99,105,98,2,99,108,0,1,102,102,2,32,0,1,108,2,114,105,0,1,108,103,2,99,101,114,0,1,108,103,2,112,104,0,1,112,2,114,97,0,1,112,2,114,105,0,1,116,2,112,105,99,0,1,116,2,114,97,110,110,0,1,119,2,110,0,2,17,67,0,2,17,67,17,67,0,2,17,67,32,0,2,115,116,0,5,35,1,100,2,110,97,115,0,8,2,17,67,21,0,8,115,0,101,105,103,104,116,1,116,2,32,3,118,6,133,47,0,116,119,111,1,116,2,32,3,118,47,6,129,0,112,111,99,114,105,1,104,2,116,3,118,48,13,49,34,118,0,120,1,17,67,2,32,3,118,49,87,0,110,99,104,1,115,3,118,50,49,0,111,110,101,1,116,2,32,3,118,58,6,119,50,0,111,110,101,5,6,1,116,2,32,3,118,58,6,120,50,0,102,111,117,114,1,116,2,32,3,118,81,6,128,0,102,105,118,101,1,116,2,32,3,118,81,6,132,82,0,115,1,104,112,2,105,3,118,86,0,115,101,118,101,110,1,116,2,32,3,118,87,6,117,82,13,50,0,115,101,1,100,2,110,3,118,87,13,0,4,8,2,110,21,3,120,0,8,2,115,21,0,4,1,17,67,21,2,17,66,101,13,3,132,0,1,17,67,29,0,1,98,101,114,101,2,32,0,1,98,114,97,101,2,32,0,1,99,2,99,108,0,1,99,2,99,108,105,99,32,0,1,102,2,32,0,1,102,115,2,32,0,1,104,2,17,67,114,0,1,104,116,2,108,32,0,1,107,2,108,32,0,1,108,101,98,2,32,0,1,108,102,0,1,110,2,108,32,0,1,110,101,100,2,32,0,1,112,2,116,104,0,1,116,2,108,32,0,1,116,2,112,32,0,1,116,2,112,105,115,116,0,1,116,115,2,114,101,0,2,17,66,101,13,0,2,32,0,2,101,114,32,0,2,108,117,109,0,8,17,67,0,8,17,67,2,17,67,101,0,8,17,67,2,112,104,0,8,17,67,115,0,8,98,2,12,0,101,2,32,0,116,101,2,32,3,132,47,0,112,101,1,116,3,132,48,0,110,97,109,1,100,3,132,50,35,63,0,4,101,115,1,17,67,2,32,3,132,86,0,115,101,2,12,32,0,4,115,101,100,2,32,3,132,86,70,0,122,101,100,2,32,0,115,105,110,103,2,32,3,132,86,109,66,0,114,101,2,32,3,132,110,0,7,6,122,0,2,122,3,0,117,2,32,3,8,86,129,0,4,3,86,0,8,2,108,111,116,0,8,2,119,17,71,0,115,8,2,17,71,0,97,108,101,115,1,21,2,32,3,86,6,121,55,117,87,0,117,101,3,86,58,6,133,0,101,115,2,32,3,86,109,86,0,111,2,111,108,111,3,86,129,0,4,104,3,88,0,104,8,2,17,71,0,117,114,101,3,88,110,0,7,6,206,0,4,172,3,6,35,55,81,13,10,0,177,0,4,173,3,6,117,48,87,118,55,119,50,10,0,181,0,4,174,3,6,124,47,13,10,0,183,0,191,3,6,131,63,118,49,34,119,50,10,0,186,3,49,6,35,48,13,10,0,190,3,49,87,6,132,10,0,189,3,50,6,57,129,10,0,187,3,55,6,35,63,70,13,10,0,188,3,63,6,57,129,10,0,178,3,69,6,124,47,13,10,0,178,5,3,3,69,6,133,47,13,10,0,180,3,70,6,117,55,47,13,10,0,179,3,79,6,35,63,13,10,0,184,3,85,6,124,47,13,10,0,182,3,86,6,124,47,13,10,0,4,175,3,132,6,131,47,13,10,0,185,0,7,6,207,0,4,133,3,6,113,48,87,118,55,119,50,10,0,141,0,140,3,6,131,63,118,49,34,119,50,10,0,4,137,3,6,131,63,118,79,13,10,0,142,0,129,3,34,6,131,10,0,132,3,47,6,130,10,0,128,3,48,6,132,10,0,136,3,48,87,6,132,10,0,135,3,74,6,132,10,0,134,3,81,6,132,10,0,4,130,3,87,6,118,79,63,13,10,0,131,0,7,6,0,4,33,2,33,3,0,4,39,3,0,4,46,1,46,3,0,58,1,32,15,2,32,15,15,32,3,0,195,169,8,3,2,118,0,46,2,46,3,9,0,33,3,9,117,49,87,49,55,13,63,133,89,13,50,9,0,45,8,2,32,15,3,10,0,195,177,3,21,101,115,0,195,160,3,35,0,58,3,49,131,55,13,50,0,33,61,3,50,119,47,124,49,58,114,86,0,60,61,3,55,117,87,127,124,49,58,114,0,45,8,32,2,32,15,3,63,132,50,13,87,0,45,1,32,15,2,32,15,3,70,35,89,0,46,3,70,119,47,0,36,3,70,119,55,110,0,196,141,3,74,0,62,61,3,79,34,133,47,13,127,124,49,58,114,0,195,176,3,84,0,195,190,3,85,0,4,195,159,3,87,0,195,167,0,197,190,3,88,0,4,197,159,3,89,0,197,161,0,4,195,164,3,117,0,195,171,0,195,170,3,117,12,0,195,182,3,123,0,195,175,3,124,0,195,188,3,129,0,195,169,3,133,0,7,0];var yt=[47,47,32,109,111,118,105,110,103,32,116,111,119,97,114,100,115,32,85,83,32,69,110,103,108,105,115,104,10,110,97,109,101,32,101,110,103,108,105,115,104,45,117,115,10,108,97,110,103,117,97,103,101,32,101,110,45,117,115,32,50,10,108,97,110,103,117,97,103,101,32,101,110,45,114,10,108,97,110,103,117,97,103,101,32,101,110,32,51,10,103,101,110,100,101,114,32,109,97,108,101,10,10,112,104,111,110,101,109,101,115,32,101,110,45,117,115,10,100,105,99,116,114,117,108,101,115,32,51,32,54,10,111,112,116,105,111,110,32,114,101,100,117,99,101,95,116,32,49,10,10,115,116,114,101,115,115,76,101,110,103,116,104,32,49,52,53,32,49,50,53,32,49,57,48,32,49,55,48,32,48,32,48,32,50,54,48,32,50,57,48,10,115,116,114,101,115,115,65,109,112,32,32,49,55,32,49,54,32,32,49,57,32,49,57,32,32,49,57,32,49,57,32,32,50,49,32,49,57,10,10,114,101,112,108,97,99,101,32,48,51,32,73,32,32,105,10,114,101,112,108,97,99,101,32,48,51,32,73,50,32,105,10,114,101,112,108,97,99,101,32,48,51,32,64,32,32,64,47,10];"use strict";if(!this["Module"]){this["Module"]={}}if(!xv.arguments){try{xv.arguments=scriptArgs}catch(z2){try{xv.arguments=arguments}catch(z2){xv.arguments=[]}}}var mM={forceAlign:function(i,e){e=e||4;if(isNumber(i)&&isNumber(e)){return Math.ceil(i/e)*e}else{return"Math.ceil(("+i+")/"+e+")*"+e}},isNumberType:function(e){return e in mM.INT_TYPES||e in mM.FLOAT_TYPES},isPointerType:function ae(e){return pointingLevels(e)>0},isStructType:function wc(e){if(ae(e)){return false}if(new RegExp(/^\[\d+\ x\ (.*)\]/g).test(e)){return true}return !mM.isNumberType(e)&&e[0]=="%"},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{"float":0,"double":0},or64:function(e,AI){var i=(e|0)|(AI|0);var AH=(Math.round(e/4294967296)|Math.round(AI/4294967296))*4294967296;return i+AH},and64:function(e,AI){var i=(e|0)&(AI|0);var AH=(Math.round(e/4294967296)&Math.round(AI/4294967296))*4294967296;return i+AH},xor64:function(e,AI){var i=(e|0)^(AI|0);var AH=(Math.round(e/4294967296)^Math.round(AI/4294967296))*4294967296;return i+AH},getNativeFieldSize:function hg(e){return Math.max(mM.getNativeTypeSize(e),4)},getNativeTypeSize:function tv(i){if(4==1){return 1}var e={_i1:1,_i8:1,_i16:2,_i32:4,_i64:8,_float:4,_double:8}["_"+i];if(!e&&i[i.length-1]=="*"){e=4}return e},dedup:function kE(i,AH){var e={};if(AH){return i.filter(function(AI){if(e[AI[AH]]){return false}e[AI[AH]]=true;return true})}else{return i.filter(function(AI){if(e[AI]){return false}e[AI]=true;return true})}},set:function zL(){var AH=typeof arguments[0]==="object"?arguments[0]:arguments;var e={};for(var AI=0;AI=0){AH.push(AK-i)}i=AK;return AK});e.flatSize=mM.alignMemory(e.flatSize,e.alignSize);if(AH.length==0){e.flatFactor=e.flatSize}else{if(mM.dedup(AH).length==1){e.flatFactor=AH[0]}}e.needsFlattening=(e.flatFactor!=1);return e.flatIndexes},generateStructInfo:function(AI,e,AJ){var AH,AK;if(e){AJ=AJ||0;AH=typeof Types==="undefined"?mM.typeInfo[e]:Types.types[e];if(!AH){return null}if(!AI){AI=Types.structMetadata[e.replace(/.*\./,"")]}if(!AI){return null}S(AH.fields.length===AI.length,"Number of named fields must match the type for "+e);AK=AH.flatIndexes}else{var AH={fields:AI.map(function(AL){return AL[0]})};AK=mM.calculateStructAlignment(AH)}var i={__size__:AH.flatSize};if(e){AI.forEach(function(AO,AN){if(typeof AO==="string"){i[AO]=AK[AN]+AJ}else{var AM;for(var AL in AO){AM=AL}i[AM]=mM.generateStructInfo(AO[AM],AH.fields[AN],AK[AN])}})}else{AI.forEach(function(AM,AL){i[AM[1]]=AK[AL]})}return i},stackAlloc:function im(i){var e=vp;n1(vp,0,i);vp+=i;vp=Math.ceil((vp)/4)*4;return e},staticAlloc:function rt(i){var e=qH;qH+=i;qH=Math.ceil((qH)/4)*4;return e},alignMemory:function h(i,AH){var e=i=Math.ceil((i)/(AH?AH:4))*(AH?AH:4);return e},__dummy__:0};var xl={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(e,i,AH){if(!i){this.corrections++;if(this.corrections>=this.MAX_ALLOWED){gX("\n\nToo many corrections!")}}},print:function(){var e=[];for(var AJ in this.sigs){e.push({sig:AJ,fails:this.sigs[AJ][0],succeeds:this.sigs[AJ][1],total:this.sigs[AJ][0]+this.sigs[AJ][1]})}e.sort(function(i,AK){return AK.total-i.total});for(var AH=0;AH=0?Math.floor(e):Math.ceil(e)}var mA=function aD(){};var jL=false;var nG=[];var dO=false;var zK=0;function gX(e){bU(e+":\n"+(new Error).stack);dO=true;throw"Assertion: "+e}function S(i,e){if(!i){gX("Assertion failed: "+e)}}function kk(AH,i,e){if(e[e.length-1]==="*"){e="i32"}switch(e){case"i1":la[((AH)>>0)]=i;break;case"i8":la[((AH)>>0)]=i;break;case"i16":uW[((AH)>>1)]=i;break;case"i32":uA[((AH)>>2)]=i;break;case"i64":uA[((AH)>>2)]=i;break;case"float":pB[((AH)>>2)]=i;break;case"double":pB[((AH)>>2)]=i;break;default:gX("invalid type for setValue: "+e)}}function bO(i,e){if(e[e.length-1]==="*"){e="i32"}switch(e){case"i1":return la[((i)>>0)];case"i8":return la[((i)>>0)];case"i16":return uW[((i)>>1)];case"i32":return uA[((i)>>2)];case"i64":return uA[((i)>>2)];case"float":return pB[((i)>>2)];case"double":return pB[((i)>>2)];default:gX("invalid type for setValue: "+e)}return null}var na=0;var rh=1;var lh=2;function qj(AK,AL,e){var AI,AP;if(typeof AK==="number"){AI=true;AP=AK}else{AI=false;AP=AK.length}var AM=[fu,mM.stackAlloc,mM.staticAlloc][e===undefined?lh:e](Math.max(AP,1));var AH=typeof AL==="string"?AL:null;var AJ=0,AN;while(AJ>0)]);if(AH=="\0"){break}else{}e+=AH;AI+=1}return e}function wA(AI){var e="";for(var AH=0;AH>0)]=uS[z0]}xv.HEAP=hz;xv.HEAP8=la;xv.HEAP16=uW;xv.HEAP32=uA;xv.HEAPU8=ll;xv.HEAPU16=xV;xv.HEAPU32=xk;xv.HEAPF32=pB;n8=vp=wl(10);var nk=1024*1024;s=n8+nk;qH=wl(s);function gC(){while(nG.length>0){var i=nG.pop();var e=i.func;if(typeof e==="number"){e=lB[e]}e(i.arg===undefined?null:i.arg)}xl.print()}function ml(i,e){if(q7){return Array.prototype.slice.call(la.subarray(i,i+e))}else{return la.slice(i,i+e)}return hz.slice(i,i+e)}function rK(AH){var e=0;while(la[((AH+e)>>0)]){e++}return e}function ch(AI,AH){var e=rK(AI);if(AH){e++}var i=ml(AI,e);if(AH){i[e-1]=0}return i}if(typeof bU==="undefined"){bU=console.log}function jV(AK,AL){var e=[];var AI;var AH=0;while(AH255){AJ&=255}e.push(AJ);AH=AH+1}if(!AL){e.push(0)}return e}xv.intArrayFromString=jV;function fp(AJ){var e=[];for(var AH=0;AH255){AI&=255}e.push(String.fromCharCode(AI))}return e.join("")}function oD(i,e,AI,AH){if(i>=0){return i}return e<=32?2*Math.abs(1<<(e-1))+i:Math.pow(2,e)+i}function iB(AH,i,AJ,AI){if(AH<=0){return AH}var e=i<=32?Math.abs(1<<(i-1)):Math.pow(2,i-1);if(AH>=e){AH=-2*e+AH}return AH}var fA=8;var go=0;var jb=[];var zl=148;var rS=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,70,71,72,76,84,88,92,96,100,104,108];var nE=48;var db=280;var hf=[0,4,8,12,16,20,24,100,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,240,244,248,249,250,251,252,256,260,264,268,272,276];var oH=24;var ht=16;var vr=64;var oW=152;var i7=[0,4,68,88,108,124,128,132];var ku=24;var pe=[0,1,2,3,4,6,8,12,14,15,16,17,18,19,20,21];var xQ=8;var ip=[0,1,2,3,4,6];var oj=16;var iT=[0,4,8,10,11,12,13,14,15];var ss=48;var u6=[0,32,36,40,44];var Af=3;var nx=40;var ob=28;var wm=[0,16,20,24];var dq=16;var st=1104;var sx=[0,2,3,4];var N=1604;var ja=[0,2,3,4];var b5=64;var hD=76;var kc=[0,4,8,12,16,56];var eH=6;var or=16;var wv=[0,1,2,3,4,8,9,10,12];var jw=16;var tj=[0,1,2,3,4,5,8,12,13,14];var uF=68;var sT=[0,12,16,24,25,26,27,28,29,30,31,32,33,34,35,36,39,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,64];var zc=8328;var bE=[0,280,284,288,292,332,632,652,656,660,668,676,692,696,700,704,708,964,968,1000,1048,1052,1056,5152,5256,6280,6792,7272,7752,7756,8012,8268,8272,8276,8280,8284,8288,8292,8296,8300,8304,8308,8312,8316,8320,8324];var oP=64;var d=12;var vb=[0,4,6,8,9,10];var o4=12;var hj=16;var z1=268;var fc=[0,4,8,10,11];var vN=24;var nf=[0,4,8,12,13,14,15,16,20];var yP=64;var vZ=[0,2,16,17,18,26,32,35,39,44,49,56,63];var ro=44;var qK=[0,2,16,17,18,26,32,35,39];var cZ=8;var mw=20;var gl=288;var z=[0,4,8,48,88,128,168,172,176,180,184,188,192,196,200,204,208,248];var sN=2748;var pm=[0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,64,72,80,88,96,104,112,120,128,136,144,152,160,164,172,176,180,184,188,1468];var AC=80;var fy=[0,4,8,12,16,24,32,40,48,56,64,72];var m4=16;var pC=8;var ct=[0,4,6];var oc=64;var b4=88;var wt=88;var yr=[0,8,12,16,20,24,28,32,40,44,48,52,56,64,72,80,84];var jl=8;var cL=1344;var gj=[0,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,144,162,180,198,216,234,252,272,308,344];var iU;var s3;var oh;var r6;var r5;var ta;var r4;var r3;var r1;var oS;var g1;var rY;var sA;var u8;var pS;var rV;var pI;var ij;var h6;var wz;var rU;var ge;var wO;var gd;var gc;var gb;var ga;var f9;var f8;var f7;var f5;var zW;var f4;var fV;var fT;var fS;var fR;var fQ;var fP;var fO;var fN;var fL;var fK;var fo;var fm;var fl;var fk;var fj;var fi;var fe;var fd;var pv;var fb;var fa;var eX;var eU;var iF;var lj;var z5;var f3;var q6;var yc;var qh;var hV;var Ac;var r2;var jK;var aa;var tp;var kT;var eA;var wZ;var o3;var gN;var yC;var qI;var ix;var Aw;var si;var jU;var mV;var dz;var wu;var ou;var f1;var x0;var p2;var hL;var zV;var rE;var ux;var l8;var cG;var vS;var nL;var e2;var xg;var pj;var gV;var yX;var ay;var tY;var lA;var eT;var eS;var eR;var eO;var eN;var eM;var eK;var ez;var ey;var pc;var ex;var zs;var eu;var bv;var kC;var cH;var gv;var tg;var of;var a0;var p8;var bi;var bA;var et;var ei;var oo;var eq;var en;var em;var ek;var ej;var d8;var d7;var d5;var d4;var kJ;var d2;var d0;var dY;var li;var gg;var vA;var dV;var dU;var hA;var dN;var mf;var dL;var dJ;var nH;var dH;var dG;var dF;var dD;var dC;var dB;var dr;var dn;var dm;var dl;var dj;var di;var dh;var df;var ln;var de;var c4;var c2;var jP;var c1;var c0;var cX;var ic;var cW;var cU;var cR;var cO;var zP;var zN;var zM;var zJ;var zI;var zH;var zF;var zC;var zA;var zz;var zp;var zm;var zk;var zj;var zh;var k3;var qW;var no;var nq;var ms;var kp;var ik;var tq;var gp;var zg;var qD;var x2;var fE;var nI;var vk;var bD;var kM;var sY;var AA;var h7;var iE;var sk;var qo;var xZ;var fs;var nB;var u9;var by;var kH;var sQ;var Ax;var n0;var pu;var w7;var d6;var mU;var uB;var aQ;var bh;var j0;var rR;var wa;var hH;var zT;var g8;var wk;var cS;var yG;var lU;var c3;var tZ;var cV;var wp;var Ao;var uM;var eb;var mg;var av;var rG;var uJ;var m5;var qM;var aP;var ls;var y3;var ol;var uv;var aH;var hi;var dA;var w8;var lx;var e6;var q5;var wE;var vs;var pU;var pR;var o2;var dp;var vE;var me;var ft;var bj;var lC;var xc;var wD;var s9;var f;var rz;var cT;var An;var pW;var m3;var mI;var xA;var dT;var i6;var kO;var xU;var zn;var dd;var jc;var wX;var p1;var dS;var mr;var up;var aG;var xF;var rO;var mN;var zE;var g0;var ho;var pd;var wN;var dx;var mi;var ui;var az;var kP;var mb;var vW;var lO;var a2;var tt;var lu;var jO;var rJ;var zv;var ov;var v6;var zx;var k6;var jp;var cv;var cy;var ly;var tC;var D;var i1;var pH;var qP;var yj;var fZ;var jA;var pi;var ve;var bF;var kN;var sO;var At;var ar;var hU;var pQ;var xm;var eE;var nb;var rk;var aV;var j5;var r9;var t4;var rd;var oi;var al;var jx;var rv;var y6;var gI;var oF;var cc;var lv;var ty;var o;var iI;var qw;var x1;var fB;var nF;var vh;var ky;var sK;var As;var hJ;var px;var w9;var ec;var mX;var uL;var a3;var rN;var zB;var gZ;var oM;var wq;var c5;var o7;var lY;var t0;var ah;var vP;var jo;var ym;var f6;var n6;var e0;var vy;var b1;var k9;var td;var g6;var k;var iC;var qk;var eJ;var zr;var ng;var u0;var kX;var dE;var bb;var kj;var sq;var o5;var Ad;var hC;var pn;var w2;var lD;var jn;var tI;var L;var fq;var iS;var qG;var yd;var fY;var nR;var vz;var b0;var xu;var sS;var Ay;var h4;var pK;var rl;var xi;var es;var aA;var e1;var vQ;var zf;var zd;var mH;var zb;var yZ;var yY;var yW;var yU;var yS;var yR;var j2;var yQ;var yM;var sn;var ua;var t9;var t8;var iN;var wQ;var wR;var cA;var pl;var pb;var og;var vV;var ci;var v9;var lz;var tD;var E;var i2;var qQ;var x8;var yu;var gh;var oa;var vT;var u;var cb;var lt;var tx;var lI;var hy;var w;var X;var iR;var kL;var Ak;var hK;var pA;var xa;var ee;var mY;var uO;var a6;var kd;var r7;var gR;var oO;var wr;var c7;var l0;var t1;var ak;var jq;var rq;var yD;var nS;var vB;var Au;var b2;var dI;var lb;var tf;var hG;var cD;var ce;var oz;var l;var iD;var qm;var xX;var e5;var uV;var bd;var km;var su;var Aj;var hF;var ps;var w5;var d3;var mC;var ap;var jE;var rA;var ze;var gK;var oK;var wj;var cP;var lT;var tQ;var jW;var iM;var x7;var fM;var nM;var vn;var bT;var k0;var s5;var rc;var J;var oB;var jC;var gM;var tX;var hs;var gx;var ot;var v4;var mt;var AB;var ab;var cx;var lH;var tB;var B;var iX;var qN;var rf;var yF;var gm;var ok;var vY;var cl;var lo;var wn;var ib;var nm;var rW;var qn;var kw;var gq;var mG;var ur;var mp;var gU;var I;var s1;var fW;var nO;var vw;var bY;var kS;var bQ;var a;var il;var qb;var h8;var qB;var x4;var rC;var yA;var fG;var op;var iO;var hZ;var oY;var wS;var nJ;var pT;var xo;var eF;var nc;var uY;var f2;var bg;var nh;var gf;var q9;var qT;var tc;var we;var wd;var n3;var xn;var aq;var hk;var ma;var mD;var sz;var qf;var bX;var dk;var lS;var b9;var tW;var oR;var vU;var sL;var q;var j;var oy;var jY;var wM;var lP;var y;var hn;var jg;var za;var ea;var kI;var fD;var it;var bM;var eW;var AF;var zX;var i9;var tz;var xy;var oL;var yy;var l3;var nd;var pX;var pL;var u7;var hp;var g4;var vC;var qv;var sW;var nW;var wL;var C;var mo;var lc;var y8;var eB;var yx;var wh;var y4;var v;var eh;var us;var ni;var Ag;var y5;var gH;var eD;var l2;var t;var p6;var oE;var tR;var v1;var cu;var at;var lF;var Ab;var c8;var tJ;var gO;var vD;var bm;var M;var i5;var bI;var wH;var jm;var mT;var o6;var ju;var hX;var cg;var ue;var vH;var q8;var yz;var aE;var ax;var te;var qa;var co;var yT;var v5;var xt;var js;var iW;var rM;var eC;var xY;var nT;var u1;var vm;var dW;var Aa;var xP;var xO;var xL;var xK;var xJ;var xI;var xG;var iL;var c9;var oX;var sc;var eg;var yN;var cw;var xC;var eP;var nl;var u3;var bl;var kt;var sI;var hq;var Aq;var hM;var ig;var ki;var zu;var nv;var aO;var xD;var sr;var u2;var oQ;var Ae;var kD;var bc;var hB;var po;var w1;var dZ;var mP;var uH;var jM;var ry;var y9;var gJ;var oI;var wi;var cN;var lQ;var tT;var Z;var qO;var x5;var fH;var nK;var vl;var bP;var uf;var cp;var ha;var d9;var gu;var v8;var rs;var hw;var xx;var a5;var i0;var zo;var sm;var rr;var y1;var gD;var oA;var wb;var cC;var lL;var vG;var pF;var v2;var aK;var tG;var kq;var rL;var qe;var gi;var ru;var hu;var q4;var g5;var q1;var qV;var gY;var mB;var bs;var qy;var qA;var gG;var kv;var ev;var vd;var v3;var pr;var qx;var gF;var cB;var qu;var gE;var kK;var qr;var gB;var qi;var gn;var pG;var fJ;var mJ;var fz;var pD;var ck;var py;var fw;var pw;var aU;var da;var pp;var fh;var pg;var H;var ad;var sJ;var pf;var e3;var uc;var xN;var y0;var jQ;var kg;var s2;var oT;var ed;var oC;var dP;var oq;var dy;var hP;var jj;var n7;var n4;var nN;var cK;var nw;var cs;var nt;var cj;var rm;var m2;var bR;var mQ;var bC;var yO;var mK;var bz;var mF;var bx;var mE;var bw;var mk;var bk;var lX;var a1;var dQ;var kQ;var O;var b6;var mm;var rZ;var q2;var yk;var f0;var k5;var zw;var nX;var vI;var b7;var lg;var tl;var m;var K;var iQ;var qF;var yb;var uj;var fX;var nP;var yK;var sF;var vx;var l6;var bZ;var k7;var tb;var qd;var h2;var pJ;var xh;var er;var h9;var qR;var m6;var gz;var kx;var lJ;var xB;var tL;var uT;var ba;var hc;var j8;var tO;var r;var h5;var hY;var kh;var so;var z3;var oV;var wx;var dc;var xb;var vi;var wJ;var l5;var uU;var t5;var an;var jy;var rw;var y7;var gy;var vL;var b8;var lk;var tn;var p;var iK;var qz;var x3;var fF;var hW;var w3;var dX;var mO;var uG;var aY;var j7;var sa;var zZ;var hh;var oZ;var cM;var lR;var tS;var Y;var jh;var rj;var yI;var gr;var on;var vR;var kZ;var s4;var g;var ir;var qg;var xR;var bq;var e9;var nu;var va;var bn;var sj;var z7;var hv;var vo;var uz;var Ap;var t3;var aI;var hN;var W;var uR;var bW;var kV;var qZ;var Al;var dR;var lN;var fv;var tK;var ph;var uo;var bS;var sM;var Az;var b;var bG;var cf;var Av;var a7;var b3;var hT;var i3;var p7;var Ar;var xH;var pa;var kU;var mn;var mj;var xs;var bf;var os;var Ai;var ep;var T;var ih;var g7;var ie;var v0;var th;var tm;var iq;var j4;var du;var uk;var ke;var jf;var rT;var nC;var aj;var rx;var m0;var rH;var lM;var uN;var ra;var yn;var sf;var sH;var q0;var vt;var od;var ww;var sp;var vF;var id;var fr;var ys;var pM;var z4;var gQ;var jk;var cz;var m7;var xe;var uC;var uq;var kn;var be;var tu;var cQ;var k1;var lK;var bL;var bH;var ia;var vJ;var ks;var fC;var un;var mu;var uu;var aS;var z8;var kl;var cd;var aR;var yv;var yH;var zi;var eV;var um;var yg;var w6;var wB;var gk;var se;var nn;var a4;var iZ;var hO;var i4;var wK;var aX;var zR;var uD;var iH;var hE;var pq;var w4;var d1;var mR;var uy;var lG;var t2=function t2(i,e){return 0};var sE={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18};var sD=function sD(i){var e=sD;if(!e.ptr){e.ptr=qj([0],"i32",lh)}uA[((e.ptr)>>2)]=i;return i};var pv=0;var oS=0;var ta=0;var hm={root:{read:true,write:false,isFolder:true,isDevice:false,timestamp:"2011-08-02T23:43:58.401Z",inodeNumber:1,contents:{}},currentPath:"/",nextInode:2,cmask:511,streams:[null],ignorePermissions:true,absolutePath:function(AI,AH){if(typeof AI!=="string"){return null}if(AH===undefined){AH=hm.currentPath}if(AI&&AI[0]=="/"){AH=""}var i=AH+"/"+AI;var AJ=i.split("/").reverse();var AK=[""];while(AJ.length){var e=AJ.pop();if(e==""||e=="."){}else{if(e==".."){if(AK.length>1){AK.pop()}}else{AK.push(e)}}}return AK.length==1?"/":AK.join("/")},analyzePath:function(AM,i,AI){var e={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};AM=hm.absolutePath(AM);if(AM=="/"){e.isRoot=true;e.exists=e.parentExists=true;e.name="/";e.path=e.parentPath="/";e.object=e.parentObject=hm.root}else{if(AM!==null){AI=AI||0;AM=AM.slice(1).split("/");var AL=hm.root;var AJ=[""];while(AM.length){if(AM.length==1&&AL.isFolder){e.parentExists=true;e.parentPath=AJ.length==1?"/":AJ.join("/");e.parentObject=AL;e.name=AM[0]}var AK=AM.shift();if(!AL.isFolder){e.error=sE.ENOTDIR;break}else{if(!AL.read){e.error=sE.EACCES;break}else{if(!AL.contents.hasOwnProperty(AK)){e.error=sE.ENOENT;break}}}AL=AL.contents[AK];if(AL.link&&!(i&&AM.length==0)){if(AI>40){e.error=sE.ELOOP;break}var AH=hm.absolutePath(AL.link,AJ.join("/"));return hm.analyzePath([AH].concat(AM).join("/"),i,AI+1)}AJ.push(AK);if(AM.length==0){e.exists=true;e.path=AJ.join("/");e.object=AL}}return e}}return e},findObject:function(AH,i){var e=hm.analyzePath(AH,i);if(e.exists){return e.object}else{sD(e.error);return null}},createObject:function(AJ,i,AI,e,AK){if(!AJ){AJ="/"}if(typeof AJ==="string"){AJ=hm.findObject(AJ)}if(!AJ){sD(sE.EACCES);throw new Error("Parent path must exist.")}if(!AJ.isFolder){sD(sE.ENOTDIR);throw new Error("Parent must be a folder.")}if(!AJ.write&&!hm.ignorePermissions){sD(sE.EACCES);throw new Error("Parent folder must be writeable.")}if(!i||i=="."||i==".."){sD(sE.ENOENT);throw new Error("Name must not be empty.")}if(AJ.contents.hasOwnProperty(i)){sD(sE.EEXIST);throw new Error("Can't overwrite object.")}AJ.contents[i]={read:e===undefined?true:e,write:AK===undefined?false:AK,timestamp:new Date(),inodeNumber:hm.nextInode++};for(var AH in AI){if(AI.hasOwnProperty(AH)){AJ.contents[i][AH]=AI[AH]}}return AJ.contents[i]},createFolder:function(AI,i,e,AJ){var AH={isFolder:true,isDevice:false,contents:{}};return hm.createObject(AI,i,AH,e,AJ)},createPath:function(AH,AK,e,AI){var AJ=hm.findObject(AH);if(AJ===null){throw new Error("Invalid parent.")}AK=AK.split("/").reverse();while(AK.length){var i=AK.pop();if(!i){continue}if(!AJ.contents.hasOwnProperty(i)){hm.createFolder(AJ,i,e,AI)}AJ=AJ.contents[i]}return AJ},createFile:function(AI,i,AH,e,AJ){AH.isFolder=false;return hm.createObject(AI,i,AH,e,AJ)},createDataFile:function(AL,AI,AN,AH,AM){if(typeof AN==="string"){var e=[];for(var AK=0;AK>0)]}AL.object.timestamp=new Date();return AJ}}}}};var le=function le(AI,AJ,AH){var AN=hm.streams[AI];if(!AN){sD(sE.EBADF);return -1}else{if(!AN.isWrite){sD(sE.EACCES);return -1}else{if(AH<0){sD(sE.EINVAL);return -1}else{if(AN.object.isDevice){if(AN.object.output){for(var AK=0;AK>0)])}catch(AM){sD(sE.EIO);return -1}}AN.object.timestamp=new Date();return AK}else{sD(sE.ENXIO);return -1}}else{var AL=tw(AI,AJ,AH,AN.position);if(AL!=-1){AN.position+=AL}return AL}}}}};var yf=function yf(AK,AH,i,AJ){var e=i*AH;if(e==0){return 0}var AI=le(AJ,AK,e);if(AI==-1){if(hm.streams[AJ]){hm.streams[AJ].error=true}return -1}else{return Math.floor(AI/AH)}};var h1=function h1(e){gC();dO=true;throw"exit("+e+") called, at "+new Error().stack};var wY=function wY(e){h1(e)};var pz=function pz(AT,AW){var A7=AW;var AP=0;var A4;if(AT){var AH=arguments[2];A4=function(Bg){var i;if(Bg==="double"){i=pB[((AH+AP)>>2)]}else{if(Bg==="float"){i=pB[((AH+AP)>>2)]}else{if(Bg==="i64"){i=uA[((AH+AP)>>2)]}else{if(Bg==="i32"){i=uA[((AH+AP)>>2)]}else{if(Bg==="i16"){i=uW[((AH+AP)>>1)]}else{if(Bg==="i8"){i=la[((AH+AP)>>0)]}else{if(Bg[Bg.length-1]==="*"){i=uA[((AH+AP)>>2)]}else{throw new Error("Unknown formatString argument type: "+Bg)}}}}}}}AP+=mM.getNativeFieldSize(Bg);return Number(i)}}else{var A5=arguments;A4=function(){return Number(A5[2+AP++])}}var AY=[];var A0,AI,AQ;while(1){var AX=A7;A0=la[((A7)>>0)];if(A0===0){break}AI=la[((A7+1)>>0)];if(A0=="%".charCodeAt(0)){var AZ=false;var AS=false;var AL=false;var AJ=false;flagsLoop:while(1){switch(AI){case"+".charCodeAt(0):AZ=true;break;case"-".charCodeAt(0):AS=true;break;case"#".charCodeAt(0):AL=true;break;case"0".charCodeAt(0):if(AJ){break flagsLoop}else{AJ=true;break}default:break flagsLoop}A7++;AI=la[((A7+1)>>0)]}var e=0;if(AI=="*".charCodeAt(0)){e=A4("i32");A7++;AI=la[((A7+1)>>0)]}else{while(AI>="0".charCodeAt(0)&&AI<="9".charCodeAt(0)){e=e*10+(AI-"0".charCodeAt(0));A7++;AI=la[((A7+1)>>0)]}}var Bc=false;if(AI==".".charCodeAt(0)){var Ba=0;Bc=true;A7++;AI=la[((A7+1)>>0)];if(AI=="*".charCodeAt(0)){Ba=A4("i32");A7++}else{while(1){var A6=la[((A7+1)>>0)];if(A6<"0".charCodeAt(0)||A6>"9".charCodeAt(0)){break}Ba=Ba*10+(A6-"0".charCodeAt(0));A7++}}AI=la[((A7+1)>>0)]}else{var Ba=6}var Bb;switch(String.fromCharCode(AI)){case"h":var Bf=la[((A7+2)>>0)];if(Bf=="h".charCodeAt(0)){A7++;Bb=1}else{Bb=2}break;case"l":var Bf=la[((A7+2)>>0)];if(Bf=="l".charCodeAt(0)){A7++;Bb=8}else{Bb=4}break;case"L":case"q":case"j":Bb=8;break;case"z":case"t":case"I":Bb=4;break;default:Bb=undefined}if(Bb!==undefined){A7++}AI=la[((A7+1)>>0)];if(["d","i","u","o","x","X","p"].indexOf(String.fromCharCode(AI))!=-1){var AK=AI=="d".charCodeAt(0)||AI=="i".charCodeAt(0);Bb=Bb||4;var AQ=A4("i"+(Bb*8));if(Bb<=4){var AR=Math.pow(256,Bb)-1;AQ=(AK?iB:oD)(AQ&AR,Bb*8)}var A3=Math.abs(AQ);var AM;var A2="";if(AI=="d".charCodeAt(0)||AI=="i".charCodeAt(0)){AM=A3.toString(10)}else{if(AI=="u".charCodeAt(0)){AM=oD(AQ,8*Bb).toString(10);AQ=Math.abs(AQ)}else{if(AI=="o".charCodeAt(0)){AM=(AL?"0":"")+A3.toString(8)}else{if(AI=="x".charCodeAt(0)||AI=="X".charCodeAt(0)){A2=AL?"0x":"";if(AQ<0){AQ=-AQ;AM=(A3-1).toString(16);var AU=[];for(var A8=0;A8Be&&Be>=-4){AI=((AI=="g".charCodeAt(0))?"f":"F").charCodeAt(0);Ba-=Be+1}else{AI=((AI=="g".charCodeAt(0))?"e":"E").charCodeAt(0);Ba--}AN=Math.min(Ba,20)}if(AI=="e".charCodeAt(0)||AI=="E".charCodeAt(0)){AM=AQ.toExponential(AN);if(/[eE][-+]\d$/.test(AM)){AM=AM.slice(0,-1)+"0"+AM.slice(-1)}}else{if(AI=="f".charCodeAt(0)||AI=="F".charCodeAt(0)){AM=AQ.toFixed(AN)}}var A9=AM.split("e");if(AO&&!AL){while(A9[0].length>1&&A9[0].indexOf(".")!=-1&&(A9[0].slice(-1)=="0"||A9[0].slice(-1)==".")){A9[0]=A9[0].slice(0,-1)}}else{if(AL&&AM.indexOf(".")==-1){A9[0]+="."}while(Ba>AN++){A9[0]+="0"}}AM=A9[0]+(A9.length>1?"e"+A9[1]:"");if(AI=="E".charCodeAt(0)){AM=AM.toUpperCase()}if(AZ&&AQ>=0){AM="+"+AM}}}while(AM.lengthBa){A1=A1.slice(0,Ba)}}else{A1=jV("(null)",true)}if(!AS){while(A1.length0){AY.push(" ".charCodeAt(0))}if(!AS){AY.push(A4("i8"))}}else{if(AI=="n".charCodeAt(0)){var Bd=A4("i32*");uA[((Bd)>>2)]=AY.length}else{if(AI=="%".charCodeAt(0)){AY.push(A0)}else{for(var A8=AX;A8>0)])}}}}}}}A7+=2}else{AY.push(A0);A7+=1}}return AY};var Am=function Am(AK,AJ){var AI=Array.prototype.slice.call(arguments,1);AI.unshift(false);var e=pz.apply(null,AI);var i=qj(e,"i8",na);var AH=yf(i,1,e.length,AK);br(i);return AH};var yV=function yV(AJ,AH,AL){var AI=0;while(AI>0)];var AK=la[((AH+AI)>>0)];if(e==AK&&e==0){return 0}if(e==0){return -1}if(AK==0){return 1}if(e==AK){AI++;continue}else{return e>AK?1:-1}}return 0};var pt=function pt(i,e){return yV(i,e,ko)};var uZ={__size__:268,d_ino:0,d_off:4,d_reclen:8,d_type:10,d_name:11};var k4=function k4(AT,AU,AL){var AR=AU&3;var AS=AR!=0;var AO=AR!=1;var e=Boolean(AU&64);var AI=Boolean(AU&128);var AK=Boolean(AU&512);var AP=Boolean(AU&1024);var AJ=AT;AT=hm.analyzePath(rB(AT));if(!AT.parentExists){sD(AT.error);return -1}var AM=AT.object||null;if(AM){if(e&&AI){sD(sE.EEXIST);return -1}if((AS||e||AK)&&AM.isFolder){sD(sE.EISDIR);return -1}if(AO&&!AM.read||AS&&!AM.write){sD(sE.EACCES);return -1}if(AK&&!AM.isDevice){AM.contents=[]}else{if(!hm.forceLoadFile(AM)){sD(sE.EIO);return -1}}}else{if(!e){sD(sE.ENOENT);return -1}if(!AT.parentObject.write){sD(sE.EACCES);return -1}AM=hm.createDataFile(AT.parentObject,AT.name,[],AL&256,AL&128)}var i=hm.streams.length;if(AM.isFolder){var AN=0;if(uZ){AN=fu(uZ.__size__)}var AH=[];for(var AQ in AM.contents){AH.push(AQ)}hm.streams[i]={path:AT.path,object:AM,position:-2,isRead:true,isWrite:false,isAppend:false,error:false,eof:false,ungotten:[],contents:AH,currentEntry:AN}}else{hm.streams[i]={path:AT.path,object:AM,position:0,isRead:AO,isWrite:AS,isAppend:AP,error:false,eof:false,ungotten:[]}}return i};var uE=function uE(i,AI){var e;AI=rB(AI);if(AI[0]=="r"){if(AI.indexOf("+")!=-1){e=2}else{e=0}}else{if(AI[0]=="w"){if(AI.indexOf("+")!=-1){e=2}else{e=1}e|=64;e|=512}else{if(AI[0]=="a"){if(AI.indexOf("+")!=-1){e=2}else{e=1}e|=64;e|=1024}else{sD(sE.EINVAL);return 0}}}var AH=k4(i,e,511);return(AH==-1)?0:AH};var sh=function sh(AK){var AH=function(e){if(e in hm.streams&&hm.streams[e].object.output){hm.streams[e].object.output(null)}};try{if(AK===0){for(var AI in hm.streams){AH(AI)}}else{AH(AK)}return 0}catch(AJ){sD(sE.EIO);return -1}};var rn=function rn(e){if(e in hm.streams){e=hm.streams[e];if(e.object.isDevice){sD(sE.ESPIPE);return -1}else{return e.position}}else{sD(sE.EBADF);return -1}};var aW=function aW(i,AJ,AH){if(hm.streams[i]&&!hm.streams[i].isDevice){var AI=hm.streams[i];var e=AJ;if(AH===1){e+=AI.position}else{if(AH===2){e+=AI.object.contents.length}}if(e<0){sD(sE.EINVAL);return -1}else{AI.ungotten=[];AI.position=e;return e}}else{sD(sE.EBADF);return -1}};var k2=function k2(AI,AH,i){var e=aW(AI,AH,i);if(e==-1){return -1}else{hm.streams[AI].eof=false;return 0}};var fU=function fU(e){if(hm.streams[e]){if(hm.streams[e].currentEntry){br(hm.streams[e].currentEntry)}delete hm.streams[e];return 0}else{sD(sE.EBADF);return -1}};var aM=function aM(e){if(hm.streams[e]){return 0}else{sD(sE.EBADF);return -1}};var ts=function ts(e){aM(e);return fU(e)};var qS=function qS(AK,AM,AL){var AI=Array.prototype.slice.call(arguments,2);AI.unshift(false);var e=pz.apply(null,AI);var AH=(AM===undefined)?e.length:Math.min(e.length,AM-1);for(var AJ=0;AJ>0)]=e[AJ]}la[((AK+AJ)>>0)]=0;return e.length};var qs=function qs(i,AH){var e=[i,undefined].concat(Array.prototype.slice.call(arguments,1));return qS.apply(null,e)};var wg=function wg(e){return rK(e)};var ld=function ld(AK,e,AI,AL){var AJ,AN,i,AH,AM;AJ=e;AN=AK;i=AJ+AI;AM=(AN%4)===(AJ%4);while(AJ%4!==0&&AJ>=2;AN>>=2;AH=i>>2;while(AJ>0)]=i;var e=le(AH,jR.buffer,1);if(e==-1){if(AH in hm.streams){hm.streams[AH].error=true}return -1}else{return i}};var br=function br(){};var fu=function rt(i){var e=qH;qH+=i;qH=Math.ceil((qH)/4)*4;return e};var je={__size__:88,st_dev:0,__pad1:8,st_ino:12,st_mode:16,st_nlink:20,st_uid:24,st_gid:28,st_rdev:32,__pad2:40,st_size:44,st_blksize:48,st_blocks:52,st_atim:{__size__:8,tv_sec:56,tv_nsec:60},st_mtim:{__size__:8,tv_sec:64,tv_nsec:68},st_ctim:{__size__:8,tv_sec:72,tv_nsec:76},__unused4:80,__unused5:84};var kB=function kB(AR,i,AP){var AL=hm.findObject(rB(AR),AP);if(AL===null||!hm.forceLoadFile(AL)){return -1}var AI=je;uA[((i+AI.st_nlink)>>2)]=1;uA[((i+AI.st_uid)>>2)]=0;uA[((i+AI.st_gid)>>2)]=0;uA[((i+AI.st_blksize)>>2)]=4096;uA[((i+AI.st_ino)>>2)]=AL.inodeNumber;var AH=Math.floor(AL.timestamp.getTime()/1000);if(AI.st_atime===undefined){AI.st_atime=AI.st_atim.tv_sec;AI.st_mtime=AI.st_mtim.tv_sec;AI.st_ctime=AI.st_ctim.tv_sec;var AJ=(AL.timestamp.getTime()%1000)*1000;uA[((i+AI.st_atim.tv_nsec)>>2)]=AJ;uA[((i+AI.st_mtim.tv_nsec)>>2)]=AJ;uA[((i+AI.st_ctim.tv_nsec)>>2)]=AJ}uA[((i+AI.st_atime)>>2)]=AH;uA[((i+AI.st_mtime)>>2)]=AH;uA[((i+AI.st_ctime)>>2)]=AH;var AN=0;var AQ=0;var e=0;var AM=0;var AO=0;if(AL.isDevice){AM=AO=AL.inodeNumber;AQ=e=0;AN=8192}else{AM=1;AO=0;if(AL.isFolder){AQ=4096;e=1;AN=16384}else{var AK=AL.contents||AL.link;AQ=AK.length;e=Math.ceil(AK.length/4096);AN=AL.link===undefined?32768:40960}}uA[((i+AI.st_dev)>>2)]=AM;uA[((i+AI.st_rdev)>>2)]=AO;uA[((i+AI.st_size)>>2)]=AQ;uA[((i+AI.st_blocks)>>2)]=e;if(AL.read){AN|=365}if(AL.write){AN|=146}uA[((i+AI.st_mode)>>2)]=AN;return 0};var sy=null;var ny=function ny(AJ){if(sy===null){sy=qj([0],"i8**",lh)}var AK=4;var AL=uA[((sy)>>2)];if(AL!==0){var AM=AL;while(uA[((AM)>>2)]!==0){br(uA[((AM)>>2)]);AM+=AK}br(AL)}var AO=[];for(var AN in AJ){if(typeof AJ[AN]==="string"){AO.push(AN+"="+AJ[AN])}}AL=fu(AK*(AO.length+1));uA[((sy)>>2)]=AL;for(var AI=0;AI>0)]=AP.charCodeAt(AH)}la[((e+AH)>>0)]=0;uA[((AL+AI*AK)>>2)]=e}uA[((AL+AO.length*AK)>>2)]=0};var p0={USER:"root",PATH:"/",PWD:"/",HOME:"/",LANG:"en_US.UTF-8",_:"./this.program"};var lr=function lr(e){if(e===0){return 0}e=rB(e);if(!p0.hasOwnProperty(e)){return 0}if(lr.ret){br(lr.ret)}lr.ret=qj(jV(p0[e]),"i8",na);return lr.ret};var gT=function gT(AH,i){AH=rB(AH);var e=hm.findObject(AH);if(e===null){return -1}if((i&2&&!e.write)||((i&1||i&4)&&!e.read)){sD(sE.EACCES);return -1}else{return 0}};var p4=function p4(AT,AH,AI,AP){AT=rB(AT);var i=0;var AO=0;var AM=0;for(var i=0;i="0".charCodeAt(0)&&AT[i].charCodeAt(0)<="9".charCodeAt(0)){i++}var AS;if(i!=AR){AS=parseInt(AT.slice(AR,i),10)}var AQ=AT[i];i++;var AV=0;var AK=[];while((AV0){if((AQ==="d"&&AL>="0".charCodeAt(0)&&AL<="9".charCodeAt(0))||(AQ==="x"&&(AL>="0".charCodeAt(0)&&AL<="9".charCodeAt(0)||AL>="a".charCodeAt(0)&&AL<="f".charCodeAt(0)||AL>="A".charCodeAt(0)&&AL<="F".charCodeAt(0)))||(AQ==="s")){AK.push(String.fromCharCode(AL));AL=AH()}else{break}}if(AK.length===0){return 0}var AU=AK.join("");switch(AQ){case"d":uA[((AP.shift())>>2)]=parseInt(AU,10);break;case"x":uA[((AP.shift())>>2)]=parseInt(AU,16);break;case"s":var AN=jV(AU);var e=AP.shift();for(var AJ=0;AJ>0)]=AN[AJ]}break}AM++}else{if(AT[i].charCodeAt(0)!==AL){AI(AL);return AM}}}return AM};var lE=function lE(AJ,AK){var AI=0;var AH=function(){return la[((AJ+AI++)>>0)]};var e=function(){AI--};var i=Array.prototype.slice.call(arguments,2);return p4(AK,AH,e,i)};var a9=function a9(i){var e=Array.prototype.slice.call(arguments,0);e.unshift(uA[((oS)>>2)]);return Am.apply(null,e)};var wU=function wU(e){return Math.floor(Number(rB(e)))};var n1=function n1(AM,AJ,e){var AI,AH,i,AL,AK;AI=AM;AH=AI+e;AK=AJ;if(AK<0){AK+=256}AK=AK+(AK<<8)+(AK<<16)+(AK*16777216);while(AI%4!==0&&AI>=2;i=AH>>2;while(AI>0)]==i){return e}e--}while(e>=AH);return 0};var oJ=function oJ(AJ,e){var AI=0;do{var AL,AM,AK,AH,AN;AL=e+AI;AM=AJ+AI;AK=AL+1;AN=(AM%4)===(AL%4);while(AL%4!==0&&AL>=2;AM>>=2;AH=AK>>2;while(AL>0)]!=0);return AJ};var l4=function l4(AK,AI,e){for(var AH=0;AH>0)];var AJ=la[((AI+AH)>>0)];if(AL!=AJ){return AL>AJ?1:-1}}return 0};var sU=function sU(e,AM){var AK=wg(e);var AI=0;do{var AL,AO,AH,AJ,AN;AL=AM+AI;AO=e+AK+AI;AH=AL+1;AN=(AO%4)===(AL%4);while(AL%4!==0&&AL>=2;AO>>=2;AJ=AH>>2;while(AL>0)]!=0);return e};var mx=function mx(e){return(e>="0".charCodeAt(0)&&e<="9".charCodeAt(0))||(e>="a".charCodeAt(0)&&e<="z".charCodeAt(0))||(e>="A".charCodeAt(0)&&e<="Z".charCodeAt(0))};var qX=function qX(AH,e){AH--;do{AH++;var i=la[((AH)>>0)];if(i==e){return AH}}while(i);return 0};var yi=function yi(AM,AH,AL,AJ){var AN=hm.streams[AM];if(!AN||AN.object.isDevice){sD(sE.EBADF);return -1}else{if(!AN.isRead){sD(sE.EACCES);return -1}else{if(AN.object.isFolder){sD(sE.EISDIR);return -1}else{if(AL<0||AJ<0){sD(sE.EINVAL);return -1}else{var e=0;while(AN.ungotten.length&&AL>0){la[((AH++)>>0)]=AN.ungotten.pop();AL--;e++}var AI=AN.object.contents;var AO=Math.min(AI.length-AJ,AL);for(var AK=0;AK>0)]=AI[AJ+AK];e++}return e}}}}};var u5=function u5(AM,AI,AK){var AN=hm.streams[AM];if(!AN){sD(sE.EBADF);return -1}else{if(!AN.isRead){sD(sE.EACCES);return -1}else{if(AK<0){sD(sE.EINVAL);return -1}else{var AH;if(AN.object.isDevice){if(AN.object.input){AH=0;while(AN.ungotten.length&&AK>0){la[((AI++)>>0)]=AN.ungotten.pop();AK--;AH++}for(var AJ=0;AJ>0)]=AP}return AH}else{sD(sE.ENXIO);return -1}}else{var AO=AN.ungotten.length;AH=yi(AM,AI,AK,AN.position);if(AH!=-1){AN.position+=(AN.ungotten.length-AO)+AH}return AH}}}}};var sd=function sd(AH){if(!(AH in hm.streams)){return -1}if(!sd.buffer){sd.buffer=fu(1)}var i=hm.streams[AH];if(i.eof||i.error){return -1}var e=u5(AH,sd.buffer,1);if(e==0){i.eof=true;return -1}else{if(e==-1){i.error=true;return -1}else{return la[((sd.buffer)>>0)]}}};var r0=function r0(AH,AL,AJ){if(!(AJ in hm.streams)){return 0}var AI=hm.streams[AJ];if(AI.error||AI.eof){return 0}for(var e=0;e>0)]=AK}la[((AH+e)>>0)]=0;return AH};var eI=function eI(AM,AI,AK,e){e=lB[e];var AL=[];for(var AJ=0;AJ=0?AH+e:0};var jJ=function jJ(e,i){return le(i,e,wg(e))};var kF=function kF(e){e=hm.analyzePath(rB(e));if(!e.parentExists||!e.exists){sD(e.error);return -1}else{if(e.object.isFolder){sD(sE.EISDIR);return -1}else{if(!e.object.write){sD(sE.EACCES);return -1}else{delete e.parentObject.contents[e.name];return 0}}}};var fn=function fn(AH){AH=hm.analyzePath(rB(AH));if(!AH.parentExists||!AH.exists){sD(AH.error);return -1}else{if(!AH.object.write||AH.isRoot){sD(sE.EACCES);return -1}else{if(!AH.object.isFolder){sD(sE.ENOTDIR);return -1}else{for(var e in AH.object.contents){sD(sE.ENOTEMPTY);return -1}if(AH.path==hm.currentPath){sD(sE.EBUSY);return -1}else{delete AH.parentObject.contents[AH.name];return 0}}}}};var nA=function nA(i){var e=kF(i);if(e==-1){e=fn(i)}return e};var z6=function z6(e){return(e>="a".charCodeAt(0)&&e<="z".charCodeAt(0))||(e>="A".charCodeAt(0)&&e<="Z".charCodeAt(0))};var xE=function xE(e){return e in {32:0,9:0,10:0,11:0,12:0,13:0}};var m9=function m9(e){if(e>="A".charCodeAt(0)&&e<="Z".charCodeAt(0)){return e-"A".charCodeAt(0)+"a".charCodeAt(0)}else{return e}};var dg=function dg(AL,i,e,AK){var AJ=e*i;if(AJ==0){return 0}var AI=u5(AK,AL,AJ);var AH=hm.streams[AK];if(AI==-1){if(AH){AH.error=true}return -1}else{if(AI>0)];la[((AJ+AI)>>0)]=AK;AL=AL||la[((AH+AI)>>0)]==0}return AJ};var jv;var x=function x(e){sD(sE.EAGAIN);return -1};var vv=function vv(AH,i){if(!i){if(AH){br(AH)}return 0}var e=fu(i);if(AH){ld(e,AH,i);br(AH)}return e};var aJ=function aJ(e){return Number(e in hm.streams&&hm.streams[e].eof)};var bp=function bp(i,e){if(e in hm.streams){i=oD(i&255);hm.streams[e].ungotten.push(i);return i}else{return -1}};var wV;var ne=function ne(e){return(e>="!".charCodeAt(0)&&e<="/".charCodeAt(0))||(e>=":".charCodeAt(0)&&e<="@".charCodeAt(0))||(e>="[".charCodeAt(0)&&e<="`".charCodeAt(0))||(e>="{".charCodeAt(0)&&e<="~".charCodeAt(0))};var t7=function t7(e){return e>="a".charCodeAt(0)&&e<="z".charCodeAt(0)};var tM=function tM(e){return e>="A".charCodeAt(0)&&e<="Z".charCodeAt(0)};var wF;var AE=function AE(AK,AJ,AI){var e=pz(true,AJ,AI);var i=qj(e,"i8",na);var AH=yf(i,1,e.length,AK);br(i);return AH};var yB;var kA=function kA(AK,AM,AL,AJ){var e=pz(true,AL,AJ);var AH=(AM===undefined)?e.length:Math.min(e.length,AM-1);for(var AI=0;AI>0)]=e[AI]}la[((AK+AI)>>0)]=0;return e.length};var md=function md(e){sD(sE.ECHILD);return -1};var lW=md;var fx=function fx(){if(!sD.ptr){sD(0)}return sD.ptr};var jT={"1":"Operation not permitted","2":"No such file or directory","3":"No such process","4":"Interrupted system call","5":"Input/output error","6":"No such device or address","8":"Exec format error","9":"Bad file descriptor","10":"No child processes","11":"Resource temporarily unavailable","12":"Cannot allocate memory","13":"Permission denied","14":"Bad address","16":"Device or resource busy","17":"File exists","18":"Invalid cross-device link","19":"No such device","20":"Not a directory","21":"Is a directory","22":"Invalid argument","23":"Too many open files in system","24":"Too many open files","25":"Inappropriate ioctl for device","26":"Text file busy","27":"File too large","28":"No space left on device","29":"Illegal seek","30":"Read-only file system","31":"Too many links","32":"Broken pipe","33":"Numerical argument out of domain","34":"Numerical result out of range","35":"Resource deadlock avoided","36":"File name too long","37":"No locks available","38":"Function not implemented","39":"Directory not empty","40":"Too many levels of symbolic links","42":"No message of desired type","43":"Identifier removed","60":"Device not a stream","61":"No data available","62":"Timer expired","63":"Out of streams resources","67":"Link has been severed","71":"Protocol error","72":"Multihop attempted","74":"Bad message","75":"Value too large for defined data type","84":"Invalid or incomplete multibyte or wide character","88":"Socket operation on non-socket","89":"Destination address required","90":"Message too long","91":"Protocol wrong type for socket","92":"Protocol not available","93":"Protocol not supported","95":"Operation not supported","97":"Address family not supported by protocol","98":"Address already in use","99":"Cannot assign requested address","100":"Network is down","101":"Network is unreachable","102":"Network dropped connection on reset","103":"Software caused connection abort","104":"Connection reset by peer","105":"No buffer space available","106":"Transport endpoint is already connected","107":"Transport endpoint is not connected","110":"Connection timed out","111":"Connection refused","113":"No route to host","114":"Operation already in progress","115":"Operation now in progress","116":"Stale NFS file handle","122":"Disk quota exceeded","125":"Operation canceled","130":"Owner died","131":"State not recoverable"};var he=function he(AI,AJ,e){if(AI in jT){if(jT[AI].length>e-1){return sD(sE.ERANGE)}else{var AK=jT[AI];for(var AH=0;AH>0)]=AK.charCodeAt(AH)}la[((AJ+AH)>>0)]=0;return 0}}else{return sD(sE.EINVAL)}};var eZ=function eZ(e){if(!eZ.buffer){eZ.buffer=fu(256)}he(e,eZ.buffer,256);return eZ.buffer};var xq=function xq(AH,AJ,i,e){if(i===0){return}var AI=fu(i);ld(AI,AJ,i);ld(AH,AI,i);br(AI)};var tP=xq;var jd=function jd(e,i){sD(sE.EPERM);return -1};var np=function np(AJ,AI,e){AI=oD(AI);for(var AH=0;AH>0)]==AI){return AJ}AJ++}return 0};var y2={__size__:8,fd:0,events:4,revents:6};var zt=function zt(AJ,AM,AN){var AI=y2;var AL=0;for(var AK=0;AK>2)];var AQ=uW[((AH+AI.events)>>1)];var AO=0;if(e in hm.streams){var AP=hm.streams[e];if(AQ&1){AO|=1}if(AQ&4){AO|=4}}else{if(AQ&32){AO|=32}}if(AO){AL++}uW[((AH+AI.revents)>>1)]=AO}return AL};var u4=function u4(e){sD(sE.ENOSYS);return -1};var xM=function xM(){sD(sE.EAGAIN);return -1};var ai=null;var rI=function rI(AH,AI,e){if(!(AH in hm.streams)){sD(sE.EBADF);return -1}var AK=hm.streams[AH];switch(AI){case 0:if(e<0){sD(sE.EINVAL);return -1}var AM={};for(var AL in AK){AM[AL]=AK[AL]}if(e in hm.streams){e=hm.streams.length}hm.streams[e]=AM;return e;case 1:case 2:return 0;case 3:var i=0;if(AK.isRead&&AK.isWrite){i=2}else{if(!AK.isRead&&AK.isWrite){i=1}else{if(AK.isRead&&!AK.isWrite){i=0}}}if(AK.isAppend){i|=1024}return i;case 4:AK.isAppend=Boolean(e|1024);return 0;case 5:var AJ=ai.l_type;uW[((e+AJ)>>1)]=2;return 0;case 6:case 7:return 0;case 8:case 9:sD(sE.EINVAL);return -1;default:sD(sE.EINVAL);return -1}return -1};var mq=function mq(i,e){if(e<0){sD(sE.EBADF);return -1}else{if(i===e&&hm.streams[i]){return i}else{fU(e);return rI(i,0,e)}}};var yh=function yh(i,e){return 0};var rD=function rD(){sD(sE.ENOEXEC);return -1};var sv=rD;var el=function el(e){return qj(ch(e,true),"i8",na)};var kW=function kW(AH,i){var e=fu(AH*i);n1(e,0,AH*i);return e};var e4=function e4(AJ){var AI=hm.absolutePath(rB(AJ));if(AI===null){sD(sE.ENOENT);return 0}var AH=hm.findObject(AI);if(AH===null){return 0}if(!AH.isFolder){sD(sE.ENOTDIR);return 0}else{if(!AH.read){sD(sE.EACCES);return 0}}var AK=hm.streams.length;var i=[];for(var e in AH.contents){i.push(e)}hm.streams[AK]={path:AI,object:AH,position:-2,isRead:true,isWrite:false,isAppend:false,error:false,eof:false,ungotten:[],contents:i,currentEntry:fu(uZ.__size__)};return AK};var cI=function cI(AI,AO,AR){if(!hm.streams[AI]||!hm.streams[AI].object.isFolder){return sD(sE.EBADF)}var AQ=hm.streams[AI];var AM=AQ.position;var AL=0;for(var AP in AQ.contents){AL++}if(AM<-2||AM>=AL){uA[((AR)>>2)]=0}else{var e,AH;if(AM===-2){e=".";AH=1}else{if(AM===-1){e="..";AH=1}else{e=AQ.contents[AM];AH=AQ.object.contents[e].inodeNumber}}AQ.position++;var AJ=uZ;uA[((AO+AJ.d_ino)>>2)]=AH;uA[((AO+AJ.d_off)>>2)]=AQ.position;uA[((AO+AJ.d_reclen)>>2)]=e.length+1;for(var AK=0;AK>0)]=e.charCodeAt(AK)}la[((AO+AJ.d_name+AK)>>0)]=0;var AN=AQ.object.isDevice?2:AQ.object.isFolder?4:AQ.object.link!==undefined?10:8;la[((AO+AJ.d_type)>>0)]=AN;uA[((AR)>>2)]=AO}return 0};var Ah=function Ah(e){if(!hm.streams[e]||!hm.streams[e].object.isFolder){sD(sE.EBADF);return 0}else{if(!Ah.result){Ah.result=fu(4)}cI(e,hm.streams[e].currentEntry,Ah.result);if(uA[((Ah.result)>>2)]===0){return 0}else{return hm.streams[e].currentEntry}}};var dt=function dt(e){if(!hm.streams[e]||!hm.streams[e].object.isFolder){return sD(sE.EBADF)}else{br(hm.streams[e].currentEntry);delete hm.streams[e];return 0}};var ql=Math.exp;var h0=Math.cos;var x6;var jD=Math.sin;var i8=function i8(i,AH,e){return kA(i,undefined,AH,e)};var vO=function vO(e){return Math.pow(2,e)};function om(i){var e;return;return}function ti(AL,AP,AM,AN){var AO;var e;var AI;var AJ;var AK;e=AL;AI=AP;AJ=AM;AK=AN;var AH=e;var i=(((AH))|0)==2;if(i){AO=1}else{AO=2}if(AO==1){uA[((s3)>>2)]=1}return;return}function pP(Bq,Bj){var AV;var AY=null;var Bl;var A4;var AQ;var i;var AH;var AL;var AI;var AW;var AX;var Bi;AI=Bq;AW=Bj;var Bh=AI;var Bg=(Bh)==0;if(Bg){AV=1}else{AV=2}if(AV==1){Bi=2}else{if(AV==2){var Bf=AI;var Be=pt(Bf,((r1)&4294967295));var Bd=(((Be))|0)==0;if(Bd){AV=3}else{AV=4}if(AV==3){var Bc=uA[((oS)>>2)];uA[((g1)>>2)]=Bc;AY=3}else{if(AV==4){var Ba=AI;var A8=uE(Ba,((rY)&4294967295));uA[((g1)>>2)]=A8;AY=4}}var A6=AY==4?A8:(Bc);var AU=(A6)!=0;if(AU){AV=6}else{AV=11}if(AV==6){var AT=uA[((g1)>>2)];var AS=yf(((sA)&4294967295),1,24,AT);var AR=uA[((g1)>>2)];var AP=AW;i=AR;AH=AP;AL=0;$bb_i$11:while(1){var AO=AH;var AN=(AO)&255;var AM=i;var AK=jR(AN,AM);var AJ=AH;var e=(((AJ))|0)>>8;AH=e;var Bv=AL;var Bu=(((Bv)+1)&4294967295);AL=Bu;var Bt=(((Bu))|0)<=3;if(Bt){AV=7;continue $bb_i$11}else{AV=8;break $bb_i$11}}var Bs=AW;var Br=(((Bs)*2)&4294967295);var Bp=uA[((g1)>>2)];Bl=Bp;A4=Br;AQ=0;while(1){var Bo=A4;var Bn=(Bo)&255;var Bm=Bl;var Bb=jR(Bn,Bm);var A9=A4;var A7=(((A9))|0)>>8;A4=A7;var A5=AQ;var A3=(((A5)+1)&4294967295);AQ=A3;var A2=(((A3))|0)<=3;if(A2){AV=9;continue}else{AV=10;break}}var A1=uA[((g1)>>2)];var A0=yf(((sA+32)&4294967295),1,12,A1);Bi=0}else{if(AV==11){Bi=1}}}}var AZ=Bi;AX=AZ;var Bk=AX;return Bk;return null}function ji(){var AV;var Bg;var A1;var AP;var i;var AH;var AK;var AU;var Bf=uA[((g1)>>2)];var Be=(Bf)==0;if(Be){AV=7}else{AV=1}$return$$bb$2:do{if(AV==1){var Bd=uA[((g1)>>2)];var Bc=uA[((oS)>>2)];var Bb=(Bd)==(Bc);if(Bb){AV=7;break $return$$bb$2}var Ba=uA[((g1)>>2)];var A9=sh(Ba);var A7=uA[((g1)>>2)];var A5=rn(A7);AU=A5;var A3=uA[((g1)>>2)];var AT=k2(A3,4,0);var AS=AU;var AR=(((AS)-8)&4294967295);var AQ=uA[((g1)>>2)];i=AQ;AH=AR;AK=0;$bb_i$5:while(1){var AO=AH;var AN=(AO)&255;var AM=i;var AL=jR(AN,AM);var AJ=AH;var AI=(((AJ))|0)>>8;AH=AI;var e=AK;var Bp=(((e)+1)&4294967295);AK=Bp;var Bo=(((Bp))|0)<=3;if(Bo){AV=3;continue $bb_i$5}else{AV=4;break $bb_i$5}}var Bn=uA[((g1)>>2)];var Bm=k2(Bn,40,0);var Bl=AU;var Bk=(((Bl)-44)&4294967295);var Bj=uA[((g1)>>2)];Bg=Bj;A1=Bk;AP=0;while(1){var Bi=A1;var Bh=(Bi)&255;var A8=Bg;var A6=jR(Bh,A8);var A4=A1;var A2=(((A4))|0)>>8;A1=A2;var A0=AP;var AZ=(((A0)+1)&4294967295);AP=AZ;var AY=(((AZ))|0)<=3;if(AY){AV=5;continue}else{AV=6;break}}var AX=uA[((g1)>>2)];var AW=ts(AX);uA[((g1)>>2)]=0}}while(0);return;return}function zQ(B5,By){var A1=vp;vp+=36;n1(A1,0,36);var BA;var Ba;var Bx;var A9;var AU;var BB;var BC;var BY;var AS;var Bz;var AI;var Bc=A1;var BX;var Ch=A1+12;Ba=B5;Bx=By;AS=0;var Ck=Bx;var Cj=(Ck)==0;if(Cj){BA=3}else{BA=1}$bb2$$bb$2:do{if(BA==1){var Ci=Bx;var Cg=((Ci)&4294967295);var Cf=la[((Cg)>>0)];var Ce=iB((Cf),8,0)==0;if(Ce){BA=3;break $bb2$$bb$2}var Cd=((Ch+4)&4294967295);var Cc=Bx;uA[((Cd)>>2)]=Cc;var Cb=((Ch+13)&4294967295);la[((Cb)>>0)]=0;var Ca=((Ch+12)&4294967295);la[((Ca)>>0)]=0;var BR=((Ch)&4294967295);uA[((BR)>>2)]=0;var BP=mv(Ch);BX=BP;AS=1;BA=4;break $bb2$$bb$2}}while(0);if(BA==3){var BN=mv(0);BX=BN}var BL=Ba;var BJ=yf(((rU)&4294967295),1,64,BL);AU=0;var BH=BX;var BG=AU;var BF=((BH+4*BG)&4294967295);var BE=uA[((BF)>>2)];Bz=BE;var BD=(BE)!=0;var Br=oD((BD),1,0);A9=Br;if(BD){BA=5}else{BA=15}$bb4_lr_ph$$return$8:do{if(BA==5){var Bp=((Bc)&4294967295);var Bn=((Bc)&4294967295);var Bl=((Bc)&4294967295);$bb4$10:while(1){BY=0;var Bj=Bz;var Bh=((Bj+4)&4294967295);var Bg=uA[((Bh)>>2)];BB=Bg;var Bf=BB;var Be=la[((Bf)>>0)];var Bd=iB((Be),8,0)!=0;if(Bd){BA=7}else{BA=14}$bb5$$bb13$12:do{if(BA==7){while(1){var A5=BB;var A4=((A5+1)&4294967295);var A3=wg(A4);BC=A3;var A2=BB;var A0=((A2+1)&4294967295);AI=A0;var AZ=Bz;var AY=((AZ+13)&4294967295);var AX=la[((AY)>>0)];var AW=iB((AX),8,0)==0;if(AW){BA=8}else{BA=9}if(BA==8){ns(Bp,((yR)&4294967295),4,1,0)}else{if(BA==9){var AV=Bz;var AT=((AV+13)&4294967295);var AR=ll[((AT)>>0)];var AQ=oD((AR),8,0);var AP=qs(Bl,((ge)&4294967295),AQ)}}var AO=BY;var AN=(((AO))|0)==0;if(AN){BA=11}else{BA=12}if(BA==11){var AM=Bz;var AL=((AM+8)&4294967295);var AK=uA[((AL)>>2)];var AJ=Bz;var AH=((AJ)&4294967295);var i=uA[((AH)>>2)];var e=Bz;var Cr=((e+12)&4294967295);var Cq=ll[((Cr)>>0)];var Cp=oD((Cq),8,0);var Co=((wO+Cp)&4294967295);var Cn=la[((Co)>>0)];var Cm=iB((Cn),8,0);var Cl=BB;var B9=((Cl)&4294967295);var B8=la[((B9)>>0)];var B7=iB((B8),8,0);var B6=Ba;var B4=AI;var B3=Am(B6,((gd)&4294967295),B7,B4,Bn,Cm,i,AK)}else{if(BA==12){var B2=BB;var B1=((B2)&4294967295);var B0=la[((B1)>>0)];var BZ=iB((B0),8,0);var BW=Ba;var BV=AI;var BU=Am(BW,((gc)&4294967295),BV,BZ)}}var BT=BY;var BS=(((BT)+1)&4294967295);BY=BS;var BQ=BC;var BO=(((BQ)+2)&4294967295);var BM=BB;var BK=((BM+BO)&4294967295);BB=BK;var BI=BB;var Bw=la[((BI)>>0)];var Bv=iB((Bw),8,0)!=0;if(Bv){BA=7;continue}else{BA=14;break $bb5$$bb13$12}}}}while(0);var Bu=Ba;var Bt=jR(10,Bu);var Bs=AU;var Bq=(((Bs)+1)&4294967295);AU=Bq;var Bo=BX;var Bm=AU;var Bk=((Bo+4*Bm)&4294967295);var Bi=uA[((Bk)>>2)];Bz=Bi;var A8=Bz;var A7=(A8)!=0;var A6=oD((A7),1,0);A9=A6;var Bb=iB((A6),8,0)!=0;if(Bb){BA=6;continue $bb4$10}else{BA=15;break $bb4_lr_ph$$return$8}}}}while(0);vp=A1;return;return}function t6(AH){var AI;var AJ;AJ=AH;var i=AJ;var e=(i)!=0;if(e){AI=1}else{AI=2}if(AI==1){var AK=AJ;br(AK)}return;return}function gS(AW){var AS;var AQ;var AV;var AO;var AP;var AX;AQ=AW;var AN=AQ;var AM=fu(AN);AX=AM;var AL=AX;var AK=(AL)==0;var AJ=oD((AK),1,0);AP=AJ;var AI=AP;var AU=iB((AI),8,0)!=0;if(AU){AS=1}else{AS=2}if(AS==1){var AH=uA[((ta)>>2)];var i=yf(((gb)&4294967295),1,22,AH)}var e=AX;AO=e;var AT=AO;AV=AT;var AR=AV;return AR;return null}function wo(e){var A0=vp;vp+=88;n1(A0,0,88);var AW;var AT;var AZ;var AP;var AQ;var AR=A0;AT=e;var AO=AT;var AN=kB(AO,AR);var AM=(((AN))|0)!=0;var AL=oD((AM),1,0);AQ=AL;var AK=AQ;var AY=iB((AK),8,0)!=0;if(AY){AW=1}else{AW=2}if(AW==1){AP=0}else{if(AW==2){var AJ=((AR+16)&4294967295);var AI=uA[((AJ)>>2)];var AH=(AI)&61440;var i=(((AH))|0)==16384;if(i){AW=3}else{AW=4}if(AW==3){AP=-2}else{if(AW==4){var AX=((AR+44)&4294967295);var AV=uA[((AX)>>2)];AP=AV}}}}var AU=AP;AZ=AU;var AS=AZ;vp=A0;return AS;return null}function mZ(Bg,AW){var AY=vp;vp+=88;n1(AY,0,88);var AV;var Bf;var AO;var Be;var A2;var Bl=AY;var Bq;var AU;var AX;var AZ;var A0;var Bm;Bq=Bg;AU=AW;var Bd=AU;var Bc=(Bd)!=0;if(Bc){AV=1}else{AV=2}$bb$$bb1$2:do{if(AV==1){var Bb=AU;var Ba=qs(((iU)&4294967295),((ga)&4294967295),Bb)}else{if(AV==2){var A9=lr(((f9)&4294967295));Bm=A9;var A7=Bm;var A5=(A7)!=0;var A4=oD((A5),1,0);A0=A4;var A3=A0;var A1=iB((A3),8,0)!=0;if(A1){AV=3}else{AV=9}if(AV==3){var AT=Bm;var AR=qS(((iU)&4294967295),150,((ga)&4294967295),AT);Bf=((iU)&4294967295);var AQ=Bf;var AP=kB(AQ,Bl);var AN=(((AP))|0)!=0;var AM=oD((AN),1,0);A2=AM;var AL=A2;var AS=iB((AL),8,0)!=0;if(AS){AV=4}else{AV=5}if(AV==4){Be=0}else{if(AV==5){var AK=((Bl+16)&4294967295);var AI=uA[((AK)>>2)];var AH=(AI)&61440;var e=(((AH))|0)==16384;if(e){AV=6}else{AV=7}if(AV==6){Be=-2}else{if(AV==7){var Bs=((Bl+44)&4294967295);var Br=uA[((Bs)>>2)];Be=Br}}}}var Bp=Be;AO=Bp;var A8=AO;var Bo=(((A8))|0)==-2;var Bn=oD((Bo),1,0);AZ=Bn;var AJ=iB((Bn),8,0)!=0;if(AJ){AV=11;break $bb$$bb1$2}}var Bk=lr(((f8)&4294967295));var Bj=qS(((iU)&4294967295),150,((ga)&4294967295),Bk);var Bi=gT(((iU)&4294967295),4);var Bh=(((Bi))|0)!=0;var A6=oD((Bh),1,0);AX=A6;var i=iB((A6),8,0)!=0;if(!(i)){AV=11;break $bb$$bb1$2}ns(((iU)&4294967295),((f7)&4294967295),23,1,0)}}}while(0);vp=AY;return;return}function mz(Gw,Gd){var BC=vp;vp+=1256;n1(BC,0,1256);var Hc;var Gv=null;var EI;var Di;var E8;var CU;var Dh;var Bx;var G4=BC;var Bb=BC+1024;var Bf;var EC;var Et;var He;var BS;var HF;var BN;var H4;var DH;var BB;var C5;var CZ;var D8;var C6;var C3;var Ec;var EG;var BQ;var CV;var C0;var Ba;var Df;var C4;var CR;var Hd;var Bs;var B7;var Dg;var Cw=BC+1236;var Hq;var G7;G7=((fe)&4294967295);var Dk;Dk=((fm)&4294967295);var C2;var Fe;var D2;var De;var Ho;var Hr;var Hs;var HA;var e;var AS;var AY;var BR;var A4;var B5;var Bp;var By;var EH;var FR;var Cv=vp;n1(vp,0,4);vp+=4;vp=Math.ceil((vp)/4)*4;var C1;var HR=vp;n1(vp,0,4);vp+=4;vp=Math.ceil((vp)/4)*4;var H0;var Dj;var DM;var El;var Ht;var Ei;var BD;var Hb;var Ds;var B3=vp;n1(vp,0,24);vp+=24;vp=Math.ceil((vp)/4)*4;var AQ=vp;n1(vp,0,200);vp+=200;vp=Math.ceil((vp)/4)*4;var Hu=vp;n1(vp,0,40);vp+=40;vp=Math.ceil((vp)/4)*4;var Dx=vp;n1(vp,0,40);vp+=40;vp=Math.ceil((vp)/4)*4;var CY;C2=Gw;Fe=Gd;By=0;EH=0;FR=0;uA[((Cv)>>2)]=0;H0=175;El=100;Ht=0;Ei=0;BD=0;Hb=0;Ds=50;var Dd=((Hu)&4294967295);la[((Dd)>>0)]=0;la[((((jg)&4294967295))>>0)]=0;var Dc=((Dx)&4294967295);la[((Dc)>>0)]=0;la[((((pI)&4294967295))>>0)]=0;var Db=((AQ)&4294967295);la[((Db)>>0)]=0;uA[((u1)>>2)]=0;uA[((us)>>2)]=0;uA[((m7)>>2)]=0;uA[((xY)>>2)]=0;uA[((co)>>2)]=1;uA[((te)>>2)]=1;uA[((yT)>>2)]=0;var Da=uA[((oS)>>2)];uA[((ni)>>2)]=Da;var C9=((AQ)&4294967295);var C8=((Hu)&4294967295);var GX=((Hu)&4294967295);$bb$2:while(1){var GW=C2;var GV=Fe;Df=GW;C4=GV;CR=((f5)&4294967295);Hd=((zW)&4294967295);Bs=Cv;Ba=Cw;var GU=uA[((i4)>>2)];var GT=Ba;var GS=((GT)&4294967295);uA[((GS)>>2)]=GU;var GR=uA[((wK)>>2)];var GQ=Ba;var GP=((GQ+4)&4294967295);uA[((GP)>>2)]=GR;var GO=uA[((aX)>>2)];var Gr=Ba;var Gq=((Gr+8)&4294967295);uA[((Gq)>>2)]=GO;var Gp=uA[((zR)>>2)];var Go=Ba;var Gn=((Go+12)&4294967295);uA[((Gn)>>2)]=Gp;var Gm=uA[((uD)>>2)];var Gl=Ba;var Gk=((Gl+16)&4294967295);uA[((Gk)>>2)]=Gm;var Gj=Df;var Gh=C4;var FV=CR;var FU=Hd;var FT=Bs;var FS=vg(Gj,Gh,FV,FU,FT,0,Cw);Hq=FS;C0=Cw;var FQ=C0;var FP=((FQ)&4294967295);var FO=uA[((FP)>>2)];uA[((i4)>>2)]=FO;var FN=C0;var FM=((FN+4)&4294967295);var FL=uA[((FM)>>2)];uA[((wK)>>2)]=FL;var Fp=C0;var Fo=((Fp+8)&4294967295);var Fn=uA[((Fo)>>2)];uA[((aX)>>2)]=Fn;var Fl=C0;var Fk=((Fl+12)&4294967295);var Fj=uA[((Fk)>>2)];uA[((zR)>>2)]=Fj;var Fi=C0;var Fh=((Fi+16)&4294967295);var Fg=uA[((Fh)>>2)];uA[((uD)>>2)]=Fg;var Ff=Hq;Dg=Ff;B7=Ff;C1=Ff;var ES=(((Ff))|0)==-1;if(ES){Hc=43;break $bb$2}var ER=uA[((i4)>>2)];DM=ER;var EQ=C1;if(EQ==88){Hc=9}else{if(EQ==97){Hc=16}else{if(EQ==98){Hc=3}else{if(EQ==102){Hc=14}else{if(EQ==103){Hc=18}else{if(EQ==104){Hc=6;break $bb$2}else{if(EQ==107){Hc=7}else{if(EQ==108){Hc=15}else{if(EQ==109){Hc=10}else{if(EQ==112){Hc=11}else{if(EQ==113){Hc=13}else{if(EQ==115){Hc=17}else{if(EQ==118){Hc=19}else{if(EQ==119){Hc=20}else{if(EQ==120){Hc=8}else{if(EQ==122){Hc=21}else{if(EQ==256){Hc=22}else{if(EQ==257){Hc=24}else{if(EQ==258){Hc=24}else{if(EQ==259){Hc=27}else{if(EQ==260){Hc=33;break $bb$2}else{if(EQ==261){Hc=23}else{if(EQ==262){Hc=34}else{if(EQ==263){Hc=37}else{if(EQ==264){Hc=38}else{if(EQ==265){Hc=40}else{if(EQ==266){Hc=41}else{Hc=42;break $bb$2}}}}}}}}}}}}}}}}}}}}}}}}}}}if(Hc==9){uA[((us)>>2)]=2;Hc=1;continue $bb$2}else{if(Hc==16){var DD=DM;var DC=wU(DD);El=DC;Hc=1;continue $bb$2}else{if(Hc==3){uA[((yT)>>2)]=2;var EP=DM;var EO=lE(EP,((fo)&4294967295),HR);var EN=(((EO))|0)!=1;var EM=uA[((HR)>>2)];var EL=(((EM))|0)>4;var C7=(EN)|(EL);if(C7){Hc=4}else{Hc=5}if(Hc==4){B5=0;Bp=0;Hc=1;continue $bb$2}else{if(Hc==5){B5=1;Bp=1;var EK=uA[((HR)>>2)];uA[((yT)>>2)]=EK;Hc=1;continue $bb$2}}}else{if(Hc==14){var D1=DM;EG=C9;BQ=D1;CV=200;var D0=CV;var DZ=EG;var DY=BQ;var DX=xT(DZ,DY,D0);var DW=CV;var DV=(((DW)-1)&4294967295);var DU=EG;var DI=((DU+DV)&4294967295);la[((DI)>>0)]=0;Hc=1;continue $bb$2}else{if(Hc==18){var Dz=DM;var Dy=wU(Dz);Ht=Dy;Hc=1;continue $bb$2}else{if(Hc==7){var En=DM;var Em=wU(En);uA[((wH)>>2)]=Em;Hc=1;continue $bb$2}else{if(Hc==15){uA[((HR)>>2)]=0;var DG=DM;var DF=wU(DG);uA[((HR)>>2)]=DF;var DE=uA[((HR)>>2)];uA[((u1)>>2)]=DE;Hc=1;continue $bb$2}else{if(Hc==10){uA[((rM)>>2)]=1;Hc=1;continue $bb$2}else{if(Hc==11){var Ek=DM;var Ej=wU(Ek);Ds=Ej;var D4=Ds;var D3=(((D4))|0)>99;if(!(D3)){Hc=1;continue $bb$2}Ds=99;Hc=1;continue $bb$2}else{if(Hc==13){uA[((u8)>>2)]=1;Hc=1;continue $bb$2}else{if(Hc==17){var DB=DM;var DA=wU(DB);H0=DA;Hc=1;continue $bb$2}else{if(Hc==19){var Dv=DM;C6=C8;C3=Dv;Ec=40;var Du=Ec;var Dt=C6;var Dr=C3;var Dq=xT(Dt,Dr,Du);var Dp=Ec;var Do=(((Dp)-1)&4294967295);var Dn=C6;var Dm=((Dn+Do)&4294967295);la[((Dm)>>0)]=0;Hc=1;continue $bb$2}else{if(Hc==20){uA[((m7)>>2)]=1;var Dl=DM;C5=((pI)&4294967295);CZ=Dl;D8=200;var CT=D8;var CS=C5;var CQ=CZ;var CP=xT(CS,CQ,CT);var CO=D8;var CN=(((CO)-1)&4294967295);var CM=C5;var CL=((CM+CN)&4294967295);la[((CL)>>0)]=0;Hc=1;continue $bb$2}else{if(Hc==8){uA[((us)>>2)]=1;Hc=1;continue $bb$2}else{if(Hc==21){uA[((co)>>2)]=0;Hc=1;continue $bb$2}else{if(Hc==22){BD=1;Hc=1;continue $bb$2}else{if(Hc==24){var CK=(ER)!=0;if(CK){Hc=25}else{Hc=26}if(Hc==25){var CJ=DM;H4=GX;DH=CJ;BB=40;var CG=BB;var CF=H4;var CE=DH;var CD=xT(CF,CE,CG);var CC=BB;var CB=(((CC)-1)&4294967295);var CA=H4;var Cz=((CA+CB)&4294967295);la[((Cz)>>0)]=0}var Cy=C1;Hb=Cy;Hc=1;continue $bb$2}else{if(Hc==27){uA[((iW)>>2)]=1;var Cx=DM;var Cu=(Cx)!=0;if(!(Cu)){Hc=1;continue $bb$2}Dj=0;Gv=28;while(1){var Cr=Gv==29?Cs:(0);var Cq=(((Cr))|0)>59;if(Cq){Hc=32;break}var Cp=Dj;var Co=DM;var Cn=Dj;var Cm=((Co+Cn)&4294967295);var Cl=la[((Cm)>>0)];var Cj=iB((Cl),8,0);var Ci=((nT+Cp*4)&4294967295);uA[((Ci)>>2)]=Cj;var Cg=((nT+Cp*4)&4294967295);var Cf=uA[((Cg)>>2)];var Ce=(((Cf))|0)==0;if(Ce){Hc=32;break}BR=1;A4=1;var Ct=Dj;var Cs=(((Ct)+1)&4294967295);Dj=Cs;Gv=29;Hc=30;continue}BR=0;A4=0;uA[((((nT+236)&4294967295))>>2)]=0;uA[((iW)>>2)]=2;Hc=1;continue $bb$2}else{if(Hc==23){uA[((m7)>>2)]=1;ns(((pI)&4294967295),((r1)&4294967295),7,1,0);Hc=1;continue $bb$2}else{if(Hc==34){var B1=DM;var B0=(B1)==0;if(B0){Hc=35}else{Hc=36}if(Hc==35){uA[((h6)>>2)]=30;Hc=1;continue $bb$2}else{if(Hc==36){var BZ=DM;var BY=wU(BZ);uA[((h6)>>2)]=BY;Hc=1;continue $bb$2}}}else{if(Hc==37){var BX=DM;FR=BX;Hc=1;continue $bb$2}else{if(Hc==38){var BW=DM;var BV=uE(BW,((fk)&4294967295));uA[((ni)>>2)]=BV;var BU=uA[((ni)>>2)];var BT=(BU)==0;var BO=oD((BT),1,0);AY=BO;var BM=AY;var CX=iB((BM),8,0)!=0;if(!(CX)){Hc=1;continue $bb$2}var BL=uA[((ta)>>2)];var BK=DM;var BJ=Am(BL,((fj)&4294967295),BK);var BI=uA[((ta)>>2)];uA[((ni)>>2)]=BI;Hc=1;continue $bb$2}else{if(Hc==40){uA[((rc)>>2)]=16;Hc=1;continue $bb$2}else{if(Hc==41){uA[((us)>>2)]=3;Hc=1;continue $bb$2}}}}}}}}}}}}}}}}}}}}}}}}}if(Hc==43){var BH=Fe;var BG=((BH)&4294967295);var BF=uA[((BG)>>2)];var BE=FR;mZ(BF,BE);var BA=t2(0,((oh)&4294967295));var Bz=(BA)==0;var Bw=oD((Bz),1,0);BS=Bw;var Bv=BS;var DT=iB((Bv),8,0)!=0;if(DT){Hc=44}else{Hc=46}$bb_i$$bb3_i$49:do{if(Hc==44){var Bu=t2(0,((r6)&4294967295));var Bt=(Bu)==0;var Br=oD((Bt),1,0);He=Br;var Bq=He;var FK=iB((Bq),8,0)!=0;if(!(FK)){Hc=46;break $bb_i$$bb3_i$49}var Bn=t2(0,((r5)&4294967295))}}while(0);iz(22050,0);var Bl=a8();BN=Bl;var A9=BN;var A8=(((A9))|0)!=1;var A7=oD((A8),1,0);Et=A7;var H6=iB((A7),8,0)!=0;if(H6){Hc=47}else{Hc=50}if(Hc==47){var A6=BN;var A5=(((A6))|0)==-1;var A3=xk[((ta)>>2)];if(A5){Hc=48}else{Hc=49}if(Hc==48){var A2=yf(((r4)&4294967295),1,27,A3);wY(1);throw"Reached an unreachable! Original .ll line: 2514"}else{if(Hc==49){var A1=BN;var AZ=Am(A3,((r3)&4294967295),A1,83200,((iU)&4294967295))}}}iJ();nY(0);uA[((hk)>>2)]=0;uA[((ma)>>2)]=0;uA[((mD)>>2)]=0;uA[((sz)>>2)]=-1;HF=0;$bb9_i$59:while(1){var AW=HF;var AK=HF;var AJ=((sn+AK*4)&4294967295);var AI=uA[((AJ)>>2)];var AH=((((s9+4)&4294967295)+AW*4)&4294967295);uA[((AH)>>2)]=AI;var i=HF;var H9=(((i)+1)&4294967295);HF=H9;var H8=(((H9))|0)<=14;if(H8){Hc=51;continue $bb9_i$59}else{Hc=52;break $bb9_i$59}}var H7=Hb;var H5=(((H7))|0)!=0;var H2=((Hu)&4294967295);if(H5){Hc=53}else{Hc=54}if(Hc==53){var HQ=tV(H2,5);var HP=Hb;var HO=(HP)&1;var HN=wf(0,((n0)&4294967295),0,0,HO);wY(0);throw"Reached an unreachable! Original .ll line: 2556"}else{if(Hc==54){var HM=la[((H2)>>0)];var HL=iB((HM),8,0)==0;if(HL){Hc=55}else{Hc=56}if(Hc==55){var HK=((Hu)&4294967295);ns(HK,((fi)&4294967295),8,1,0)}var HJ=((Hu)&4294967295);var HI=wW(HJ);var HG=(((HI))|0)!=0;var Bo=oD((HG),1,0);AS=Bo;var CI=iB((Bo),8,0)!=0;if(CI){Hc=57}else{Hc=59}$bb62$$bb66$68:do{if(Hc==57){var Gi=B3;ud(Gi,0,24,1,0);var Bm=((B3+4)&4294967295);var Bk=((Hu)&4294967295);uA[((Bm)>>2)]=Bk;var Bj=vM(B3);var Bi=(((Bj))|0)!=0;var Bh=oD((Bi),1,0);e=Bh;var Bg=e;var CH=iB((Bg),8,0)!=0;if(!(CH)){Hc=59;break $bb62$$bb66$68}var Be=G7;var Bd=uA[((ta)>>2)];var Bc=((Hu)&4294967295);var A0=Am(Bd,((fd)&4294967295),Be,Bc);wY(2);throw"Reached an unreachable! Original .ll line: 2597"}}while(0);var AX=H0;vu(1,AX,0);var AV=El;vu(2,AV,0);var AU=uA[((wH)>>2)];vu(6,AU,0);var AT=uA[((iW)>>2)];vu(5,AT,0);var AR=Ht;vu(7,AR,0);var AP=Ds;var AO=(((AP))|0)!=50;if(AO){Hc=60}else{Hc=61}if(Hc==60){var AN=Ds;vu(3,AN,0)}var AM=uA[((k5)>>2)];Bf=AM;var H3=fu(1344);var H1=H3;EC=H1;var HZ=EC;var HY=Bf;var HX=HZ;var HW=HY;ns(HX,HW,1344,1,0);var HV=uA[((t3)>>2)];var HU=((v0+HV*16)&4294967295);var HT=((HU)&4294967295);uA[((HT)>>2)]=11;var HS=uA[((t3)>>2)];var HH=EC;var HE=(HH);var HD=((v0+HS*16)&4294967295);var HC=((HD+4)&4294967295);uA[((HC)>>2)]=HE;var HB=uA[((t3)>>2)];var Hz=(((HB)+1)&4294967295);uA[((t3)>>2)]=Hz;var Hy=(((Hz))|0)>159;if(Hy){Hc=62}else{Hc=63}if(Hc==62){uA[((t3)>>2)]=0}var Hx=((AQ)&4294967295);var Hw=la[((Hx)>>0)];var Hv=iB((Hw),8,0)==0;if(Hv){Hc=64}else{Hc=70}$bb69$$bb75$78:do{if(Hc==64){var Hp=uA[((wK)>>2)];var Hn=C2;var Hm=(((Hp))|0)>=(((Hn))|0);var AL=BD;if(Hm){Hc=68}else{Hc=65}if(Hc==68){var Hf=uA[((pv)>>2)];By=Hf;var G9=(((AL))|0)==0;if(G9){Gv=68}else{Gv=68;Hc=72;break $bb69$$bb75$78}uA[((u1)>>2)]=-1}else{if(Hc==65){var Hl=(((AL))|0)!=0;if(Hl){Hc=66}else{Hc=67}if(Hc==66){var Hk=uA[((pv)>>2)];By=Hk;Gv=66;Hc=72;break $bb69$$bb75$78}else{if(Hc==67){var Hj=uA[((wK)>>2)];var Hi=Fe;var Hh=((Hi+4*Hj)&4294967295);var Hg=uA[((Hh)>>2)];EH=Hg}}}}var Ch=By;Gv=71}else{if(Hc==70){var G8=((AQ)&4294967295);var G6=uE(G8,((fb)&4294967295));By=G6;Gv=70}}}while(0);var G5=Gv==71?Ch:(Gv==66?Hk:(Gv==68?Hf:(G6)));var G3=(G5)==0;if(G3){Hc=73}else{Hc=75}$bb77$$bb79$90:do{if(Hc==73){var G2=EH;var G1=(G2)==0;if(!(G1)){Hc=75;break $bb77$$bb79$90}var G0=G7;var GZ=uA[((ta)>>2)];var GY=((AQ)&4294967295);var GN=Am(GZ,((fa)&4294967295),G0,GY);wY(1);throw"Reached an unreachable! Original .ll line: 2718"}}while(0);var GM=uA[((m7)>>2)];var GL=(((GM))|0)!=0;var GK=uA[((u8)>>2)];var GJ=(((GK))|0)!=0;var Dw=(GL)|(GJ);if(Dw){Hc=76}else{Hc=102}$bb81$$bb100$94:do{if(Hc==76){var GI=uA[((u8)>>2)];var GH=(((GI))|0)!=0;var GG=uA[((bW)>>2)];if(GH){Hc=77}else{Hc=78}$bb82$$bb83$96:do{if(Hc==77){var GF=pP(0,GG);uA[((m7)>>2)]=1}else{if(Hc==78){var GD=uA[((h6)>>2)];var Gg=(((GG)*60)&4294967295);var Gf=(((Gg)*(GD))&4294967295);uA[((h6)>>2)]=Gf;var Ge=uA[((h6)>>2)];var Gc=(((Ge))|0)!=0;if(Gc){Hc=79}else{Hc=82}if(Hc==79){var Gb=ew(((pI)&4294967295),46);CY=Gb;var Ga=CY;var F9=(Ga)!=0;if(!(F9)){Hc=84;break $bb82$$bb83$96}var F8=wg(((pI)&4294967295));var F7=((((pI)&4294967295)+F8)&4294967295);var F5=(F7);var FJ=CY;var FI=(FJ);var FH=(((F5)-(FI))&4294967295);var FG=(((FH))|0)<=4;if(!(FG)){Hc=84;break $bb82$$bb83$96}var FF=CY;var FE=oJ(((ij)&4294967295),FF);var FD=CY;la[((FD)>>0)]=0}else{if(Hc==82){var FC=uA[((bW)>>2)];var FB=pP(((pI)&4294967295),FC);var Fz=(((FB))|0)!=0;var Fd=oD((Fz),1,0);HA=Fd;var Fc=HA;var Ck=iB((Fc),8,0)!=0;if(!(Ck)){Hc=84;break $bb82$$bb83$96}var Fb=uA[((ta)>>2)];var Fa=Am(Fb,((eX)&4294967295),((pI)&4294967295));wY(3);throw"Reached an unreachable! Original .ll line: 2787"}}}}}while(0);jS(0);var E9=By;var E7=EH;var E6=mh(E9,E7,0);Dj=1;var E5=((G4)&4294967295);var E4=((G4)&4294967295);var E2=((E4+1024)&4294967295);var GE=((Bb)&4294967295);var GC=((Bb)&4294967295);var BP=(G4);var Eh=(G4);var GB=((G4)&4294967295);$bb92$106:while(1){uA[((uC)>>2)]=E5;var GA=uA[((uC)>>2)];uA[((xH)>>2)]=GA;uA[((kU)>>2)]=E2;var Gz=nU(0);Bx=Gz;var Gy=uA[((u8)>>2)];var Gx=(((Gy))|0)!=0;if(Gx){Hc=86}else{Hc=87}$bb_i14$$bb1_i$108:do{if(Hc==86){var Gu=Bx;Dh=Gu}else{if(Hc==87){var Gt=uA[((g1)>>2)];var Gs=(Gt)==0;if(Gs){Hc=88}else{Hc=90}$bb2_i16$$bb4_i$111:do{if(Hc==88){var F6=uA[((pS)>>2)];var F4=(((F6)+1)&4294967295);uA[((pS)>>2)]=F4;var F3=uA[((pS)>>2)];var F2=qs(GE,((rV)&4294967295),((pI)&4294967295),F3,((ij)&4294967295));var F1=uA[((bW)>>2)];var F0=pP(GC,F1);var FZ=(((F0))|0)!=0;var FY=oD((FZ),1,0);CU=FY;var FX=CU;var B8=iB((FX),8,0)!=0;if(!(B8)){Hc=90;break $bb2_i16$$bb4_i$111}Dh=1;Hc=97;break $bb_i14$$bb1_i$108}}while(0);var FW=uA[((s3)>>2)];var FA=(((FW))|0)!=0;if(FA){Hc=91}else{Hc=94}$bb5_i18$$bb8_i21$115:do{if(Hc==91){uA[((s3)>>2)]=0;var Fy=uA[((h6)>>2)];var Fx=(((Fy))|0)!=0;if(!(Fx)){Hc=94;break $bb5_i18$$bb8_i21$115}var Fw=xk[((wz)>>2)];var Fv=xk[((h6)>>2)];var Fu=(((Fw))>>>0)>(((Fv))>>>0);if(!(Fu)){Hc=94;break $bb5_i18$$bb8_i21$115}ji();uA[((wz)>>2)]=0}}while(0);var Ft=uA[((g1)>>2)];var Fs=(Ft)!=0;if(Fs){Hc=95}else{Hc=96}if(Hc==95){var Fr=uA[((xH)>>2)];var Fq=(Fr);var E3=(((Fq)-(BP))&4294967295);var E1=(((((E3))|0)/2)|0);var E0=uA[((wz)>>2)];var EZ=(((E0)+(E1))&4294967295);uA[((wz)>>2)]=EZ;var EY=uA[((g1)>>2)];var EX=uA[((xH)>>2)];var EW=(EX);var EV=(((EW)-(Eh))&4294967295);var EU=yf(GB,1,EV,EY)}var ET=Bx;Dh=ET}}}while(0);var EF=Dh;E8=EF;var CW=E8;var EE=(((CW))|0)!=0;var ED=oD((EE),1,0);Hs=ED;var B6=iB((ED),8,0)!=0;if(B6){Hc=98}else{Hc=99}if(Hc==98){var EB=Dj;var EA=(((EB))|0)==0;if(EA){Hc=101;break $bb92$106}}var Ez=AD(((eW)&4294967295),xn,1);var Ey=(((Ez))|0)==0;var Ex=oD((Ey),1,0);Hr=Ex;var B4=iB((Ex),8,0)!=0;if(!(B4)){Hc=85;continue $bb92$106}var Ew=mh(0,0,1);Dj=Ew;Hc=85;continue $bb92$106}ji();Hc=106;break $bb81$$bb100$94}else{if(Hc==102){Di=0;var Ev=Di;EI=Ev;jS(0);var Eg=By;var Ef=EH;var Ee=mh(Eg,Ef,0);var Ed=uA[((js)>>2)];var Eb=(((Ed))|0)!=0;if(Eb){Hc=103}else{Hc=105}if(Hc==103){while(1){var Ea=mh(0,0,1);var D9=(((Ea))|0)!=0;var D7=oD((D9),1,0);Ho=D7;var Fm=iB((D7),8,0)!=0;if(Fm){Hc=103;continue}else{Hc=104;break}}De=0;Hc=110;break $bb81$$bb100$94}else{if(Hc==105){var D6=uA[((ta)>>2)];var D5=yf(((eU)&4294967295),1,79,D6);Hc=106;break $bb81$$bb100$94}}}}}while(0);if(Hc==106){var DS=uA[((ni)>>2)];var DR=uA[((oS)>>2)];var DQ=(DS)!=(DR);if(DQ){Hc=107}else{Hc=109}$bb106$$bb108$137:do{if(Hc==107){var DP=uA[((ni)>>2)];var DO=uA[((ta)>>2)];var DN=(DP)!=(DO);if(!(DN)){Hc=109;break $bb106$$bb108$137}var DL=uA[((ni)>>2)];var DK=ts(DL)}}while(0);De=0}var DJ=De;D2=DJ;var Ha=D2;vp=BC;return Ha}}}else{if(Hc==42){wY(0);throw"Reached an unreachable! Original .ll line: 2463"}else{if(Hc==6){var EJ=Fe;var Eu=((EJ)&4294967295);var Es=uA[((Eu)>>2)];var Er=FR;mZ(Es,Er);var Eq=Dk;var Ep=uA[((ib)>>2)];var Eo=a9(((fl)&4294967295),Ep,((iU)&4294967295),Eq);wY(0);throw"Reached an unreachable! Original .ll line: 2195"}else{if(Hc==33){var Cd=Fe;var Cc=((Cd)&4294967295);var Cb=uA[((Cc)>>2)];var Ca=FR;mZ(Cb,Ca);var B9=uA[((oS)>>2)];var B2=DM;zQ(B9,B2);wY(0);throw"Reached an unreachable! Original .ll line: 2411"}}}}return null}xv._main=mz;function iu(AI){var AU;var AP;var AT;var AQ;var AS;var AM;var AK;AP=AI;var AO=AP;var AN=(AO)&255;AK=AN;var AL=AK;var AJ=(((AL))|0)==0;if(AJ){AU=2}else{AU=1}$bb4$$bb$2:do{if(AU==1){var AH=AP;var i=(((AH))>>>0)>32;if(i){AU=2;break $bb4$$bb$2}AS=0;AM=0;AQ=1;AU=4;break $bb4$$bb$2}}while(0);if(AU==2){AS=1;AM=1;AQ=0}var e=AQ;AT=e;var AR=AT;return AR;return null}function wP(AS,AQ){var AX;var AU;var AP;var A0;var AO;AU=AS;AP=AQ;while(1){var AZ=AU;var AY=((AZ)&4294967295);var AW=uA[((AY)>>2)];var AV=(AW)!=0;if(!(AV)){AX=5;break}var AN=AU;var AM=((AN+4)&4294967295);var AL=uA[((AM)>>2)];var AK=AP;var AJ=(((AL))|0)==(((AK))|0);var AI=AU;if(AJ){AX=2;break}var e=((AI+8)&4294967295);AU=e;AX=4;continue}if(AX==2){var AH=((AI)&4294967295);var i=uA[((AH)>>2)];AO=i}else{if(AX==5){AO=((r5)&4294967295)}}var AT=AO;A0=AT;var AR=A0;return AR;return null}function gW(Ba){var AT;var AH;var i;var AO;var A6;var AV;var AU;var A5;AV=Ba;var A4=AV;var A3=((A4+4)&4294967295);var A2=uA[((A3)>>2)];var A1=AV;var A0=((A1)&4294967295);var AZ=uA[((A0)>>2)];var AY=AV;var AX=((AY)&4294967295);var AS=uA[((AX)>>2)];var AR=(AS)&15;var AQ=(((AR)+64)&4294967295);AH=((q6)&4294967295);i=AQ;while(1){var Bf=AH;var Be=((Bf)&4294967295);var Bd=uA[((Be)>>2)];var Bc=(Bd)!=0;if(!(Bc)){AT=5;break}var AP=AH;var AN=((AP+4)&4294967295);var AM=uA[((AN)>>2)];var AL=i;var AK=(((AM))|0)==(((AL))|0);var AJ=AH;if(AK){AT=2;break}var Bg=((AJ+8)&4294967295);AH=Bg;AT=4;continue}if(AT==2){var AI=((AJ)&4294967295);var e=uA[((AI)>>2)];A6=e}else{if(AT==5){A6=((r5)&4294967295)}}var Bb=A6;AO=Bb;var AW=AO;var A9=qs(((pc)&4294967295),((ex)&4294967295),AW,AZ,A2);A5=((pc)&4294967295);var A8=A5;AU=A8;var A7=AU;return A7;return null}function bK(A0,AS){var A2;var AT;var AY;var A5;var AP;var AQ;var AI;AT=A0;AY=AS;var AO=AT;var AN=AY;var AM=uE(AO,AN);AI=AM;var AL=AI;var AK=(AL)==0;var AJ=oD((AK),1,0);AQ=AJ;var AH=AQ;var A4=iB((AH),8,0)!=0;var i=uA[((zs)>>2)];var e=(i)!=0;var AR=(A4)&(e);if(AR){A2=1}else{A2=2}if(A2==1){var A3=uA[((zs)>>2)];var A1=AY;var AZ=AT;var AX=Am(A3,((eu)&4294967295),A1,AZ)}var AW=AI;AP=AW;var AV=AP;A5=AV;var AU=A5;return AU;return null}function ws(ET,AT){var EU;var En=null;var Bs;var BO;var CJ;var Br;var BP;var Dj;var Ey;var Ec;var AK;var E1;var Di;var Cx;var CK;var BN;var Cy;var Cw;var Fq;var Ch;var Cv;Ey=ET;Ec=AT;var CI=Ey;var CH=((CI)&4294967295);var CG=la[((CH)>>0)];var CF=iB((CG),8,0)==0;if(CF){EU=75}else{EU=1}if(EU==1){var CE=Ec;var CD=uA[((CE)>>2)];var CC=((cH+CD*4)&4294967295);var CB=uA[((CC)>>2)];Di=CB;var CA=Ec;var EI=uA[((CA)>>2)];var EH=(((EI))|0)==4;if(EH){EU=2}else{EU=5}if(EU==2){var EG=wg(((p8)&4294967295));BN=EG;var EF=BN;var EE=(((EF))|0)>0;if(EE){EU=3}else{EU=4}if(EU==3){var ED=BN;var EC=((p8+ED)&4294967295);la[((EC)>>0)]=32;var EB=BN;var EA=(((EB)+1)&4294967295);BN=EA}var Ez=BN;var Em=((p8+Ez)&4294967295);Di=Em}Cw=8421376;var El=Ey;Cx=El;CK=0;$bb5$10:while(1){Ch=0;var Ek=Cx;var Ej=la[((Ek)>>0)];Cy=Ej;var Ei=Cx;var Eh=((Ei+1)&4294967295);Cx=Eh;var Eg=iB((Ej),8,0)==92;if(Eg){EU=7}else{EU=14}if(EU==7){var Ef=Cx;var Ee=la[((Ef)>>0)];Cy=Ee;var Ed=Cx;var D1=((Ed+1)&4294967295);Cx=D1;var D0=Cy;var DZ=iB((D0),8,0)>47;var DY=Cy;var DX=iB((DY),8,0)<=51;var Cz=(DZ)&(DX);if(Cz){EU=8}else{EU=13}$bb8$$bb13$14:do{if(EU==8){var DW=Cx;var DV=((DW)&4294967295);var DU=la[((DV)>>0)];var DT=iB((DU),8,0)>47;if(!(DT)){EU=13;break $bb8$$bb13$14}var DS=Cx;var DN=((DS)&4294967295);var DM=la[((DN)>>0)];var DL=iB((DM),8,0)<=55;if(!(DL)){EU=13;break $bb8$$bb13$14}var DK=Cx;var DJ=((DK+1)&4294967295);var DI=la[((DJ)>>0)];var DH=iB((DI),8,0)>47;if(!(DH)){EU=13;break $bb8$$bb13$14}var DG=Cx;var DF=((DG+1)&4294967295);var DE=la[((DF)>>0)];var DD=iB((DE),8,0)<=55;if(!(DD)){EU=13;break $bb8$$bb13$14}var DC=Cy;var DB=iB((DC),8,0);var DA=(((DB)*64)&4294967295);var Dz=(((DA))&255);var Dy=Cx;var Dx=((Dy)&4294967295);var Dw=la[((Dx)>>0)];var Dv=iB((Dw),8,0);var Du=(((Dv)*8)&4294967295);var Dt=(((Du))&255);var Ds=Cx;var Dr=((Ds+1)&4294967295);var Dq=la[((Dr)>>0)];var Dp=(((Dz)+80)&255);var Do=(((Dp)+(Dq))&255);var Dn=(((Do)+(Dt))&255);Cy=Dn;var Dm=Cx;var Dl=((Dm+2)&4294967295);Cx=Dl}}while(0);Ch=1}var Dk=Ec;var Dh=uA[((Dk)>>2)];var Dg=(((Dh))|0)==1;if(Dg){EU=16}else{EU=15}$bb16$$bb15$22:do{if(EU==15){var Df=Ec;var De=uA[((Df)>>2)];var Dd=(((De))|0)==3;if(Dd){EU=16;break $bb16$$bb15$22}else{EU=73;break $bb16$$bb15$22}}}while(0);$bb16$$bb79$24:do{if(EU==16){var Dc=Ch;var Db=(((Dc))|0)==0;if(!(Db)){EU=73;break $bb16$$bb79$24}var Da=Cy;if(Da==33){EU=33}else{if(Da==35){EU=32}else{if(Da==36){EU=46}else{if(Da==37){EU=31}else{if(Da==38){EU=30}else{if(Da==43){EU=28}else{if(Da==64){EU=29}else{if(Da==65){EU=20}else{if(Da==66){EU=20}else{if(Da==67){EU=20}else{if(Da==68){EU=23}else{if(Da==70){EU=20}else{if(Da==71){EU=20}else{if(Da==72){EU=20}else{if(Da==74){EU=37}else{if(Da==75){EU=24}else{if(Da==76){EU=38}else{if(Da==78){EU=25}else{if(Da==80){EU=54}else{if(Da==83){EU=55}else{if(Da==84){EU=34}else{if(Da==86){EU=26}else{if(Da==87){EU=35}else{if(Da==88){EU=36}else{if(Da==89){EU=19}else{if(Da==90){EU=27}else{if(Da==95){EU=18}else{EU=73;break $bb16$$bb79$24}}}}}}}}}}}}}}}}}}}}}}}}}}}$bb34$$bb33$$bb50$$bb32$$bb31$$bb29$$bb30$$bb20$$bb24$$bb38$$bb25$$bb39$$bb26$$bb58$$bb59$$bb35$$bb27$$bb36$$bb37$$bb19$$bb28$$bb18$27:do{if(EU==33){Cy=19;EU=73;break $bb16$$bb79$24}else{if(EU==32){Cy=13;EU=73;break $bb16$$bb79$24}else{if(EU==46){var Bm=Di;var Bl=CK;var Bk=((Bm+Bl)&4294967295);la[((Bk)>>0)]=28;var Bj=CK;var Bh=(((Bj)+1)&4294967295);CK=Bh;Cy=0;Cv=((f3)&4294967295);while(1){var FB=Cv;var Fz=((FB)&4294967295);var Fp=uA[((Fz)>>2)];var Fo=(Fp)!=0;if(!(Fo)){EU=51;break}var Bf=Cv;var A6=((Bf)&4294967295);var A5=uA[((A6)>>2)];var A4=wg(A5);BN=A4;var A3=BN;var A2=Cv;var A1=((A2)&4294967295);var A0=uA[((A1)>>2)];var AZ=Cx;var AX=l4(AZ,A0,A3);var AV=(((AX))|0)==0;var AJ=Cv;if(AV){EU=48;break}var FD=((AJ+8)&4294967295);Cv=FD;EU=50;continue}if(EU==51){var AL=Cy;En=51}else{if(EU==48){var AI=((AJ+4)&4294967295);var AH=uA[((AI)>>2)];var i=(((AH))&255);Cy=i;var e=Cx;var FF=BN;var FE=((e+FF)&4294967295);Cx=FE;En=48}}var Fn=En==51?AL:(i);var Fm=iB((Fn),8,0)==0;if(!(Fm)){EU=73;break $bb16$$bb79$24}var Fl=uA[((bA)>>2)];var Fk=uA[((zs)>>2)];var Fj=Am(Fk,((d4)&4294967295),Fl);var Fi=uA[((ei)>>2)];var Fg=(((Fi)+1)&4294967295);uA[((ei)>>2)]=Fg;EU=73;break $bb16$$bb79$24}else{if(EU==31){Cy=11;EU=73;break $bb16$$bb79$24}else{if(EU==30){Cy=10;EU=73;break $bb16$$bb79$24}else{if(EU==28){Cy=12;EU=73;break $bb16$$bb79$24}else{if(EU==29){Cy=21;EU=73;break $bb16$$bb79$24}else{if(EU==23){Cy=15;EU=73;break $bb16$$bb79$24}else{if(EU==37){Cy=23;EU=73;break $bb16$$bb79$24}else{if(EU==24){Cy=25;EU=73;break $bb16$$bb79$24}else{if(EU==38){var Cm=Cx;var Cl=la[((Cm)>>0)];var Ck=(((Cl)-48)&255);Cy=Ck;var Cj=Cx;var Ci=((Cj+1)&4294967295);Cx=Ci;var Cg=Cx;var Cf=la[((Cg)>>0)];var Ce=iB((Cf),8,0);var Cd=(((Ce)-48)&4294967295);Fq=Cd;var Cc=Cx;var Cb=((Cc+1)&4294967295);Cx=Cb;var Ca=Cy;var B9=iB((Ca),8,0);var B8=(((B9)*10)&4294967295);var B7=(((B8))&255);var B6=Fq;var B5=(((B6))&255);var B4=(((B7)+(B5))&255);Cy=B4;var B3=Fq;var B2=(((B3))|0)<0;var B1=Fq;var B0=(((B1))|0)>9;var CX=(B2)|(B0);if(CX){EU=39}else{EU=40}$bb41$$bb42$48:do{if(EU==39){Cy=0;var BZ=uA[((bA)>>2)];var BY=uA[((zs)>>2)];var BX=Am(BY,((et)&4294967295),BZ);var BW=uA[((ei)>>2)];var BV=(((BW)+1)&4294967295);uA[((ei)>>2)]=BV}else{if(EU==40){var BU=Cy;var BT=iB((BU),8,0)<=0;var BS=Cy;var BR=iB((BS),8,0)>25;var CW=(BT)|(BR);if(CW){EU=42}else{EU=41}if(EU==41){var BQ=Cy;var BM=iB((BQ),8,0);var BL=((oo+BM)&4294967295);var BK=la[((BL)>>0)];var BJ=iB((BK),8,0)==0;if(!(BJ)){EU=43;break $bb41$$bb42$48}}var BI=Cy;var BH=iB((BI),8,0);var BG=uA[((bA)>>2)];var BF=uA[((zs)>>2)];var BE=Am(BF,((eq)&4294967295),BG,BH);var BD=uA[((ei)>>2)];var BC=(((BD)+1)&4294967295);uA[((ei)>>2)]=BC}}}while(0);var BB=Cy;var BA=(((BB)+65)&255);Cy=BA;var Bz=Ec;var By=uA[((Bz)>>2)];var Bx=(((By))|0)==1;var Bw=Di;var Bv=CK;var Bu=((Bw+Bv)&4294967295);if(Bx){EU=44}else{EU=45}if(EU==44){var Bt=Cy;la[((Bu)>>0)]=Bt;var Bq=CK;var Bp=(((Bq)+1)&4294967295);CK=Bp;Cy=18;EU=73;break $bb16$$bb79$24}else{if(EU==45){la[((Bu)>>0)]=18;var Bo=CK;var Bn=(((Bo)+1)&4294967295);CK=Bn;EU=73;break $bb16$$bb79$24}}}else{if(EU==25){Cy=24;EU=73;break $bb16$$bb79$24}else{if(EU==54){var Fe=Cw;var Bi=(Fe)|1024;Cw=Bi;EU=55;break $bb34$$bb33$$bb50$$bb32$$bb31$$bb29$$bb30$$bb20$$bb24$$bb38$$bb25$$bb39$$bb26$$bb58$$bb59$$bb35$$bb27$$bb36$$bb37$$bb19$$bb28$$bb18$27}else{if(EU==34){var Cr=Di;var Cq=CK;var Cp=((Cr+Cq)&4294967295);la[((Cp)>>0)]=28;var Co=CK;var Cn=(((Co)+1)&4294967295);CK=Cn;Cy=17;EU=73;break $bb16$$bb79$24}else{if(EU==26){Cy=26;EU=73;break $bb16$$bb79$24}else{if(EU==35){Cy=31;EU=73;break $bb16$$bb79$24}else{if(EU==36){Cy=29;EU=73;break $bb16$$bb79$24}else{if(EU==19){Cy=73;EU=20;break $bb34$$bb33$$bb50$$bb32$$bb31$$bb29$$bb30$$bb20$$bb24$$bb38$$bb25$$bb39$$bb26$$bb58$$bb59$$bb35$$bb27$$bb36$$bb37$$bb19$$bb28$$bb18$27}else{if(EU==27){Cy=16;EU=73;break $bb16$$bb79$24}else{if(EU==18){Cy=32;EU=73;break $bb16$$bb79$24}}}}}}}}}}}}}}}}}}}}}while(0);if(EU==20){var C9=Ec;var C8=uA[((C9)>>2)];var C7=(((C8))|0)==1;if(C7){EU=21}else{EU=22}if(EU==21){var C6=Cy;var C5=iB((C6),8,0);var C4=(((C5)-65)&4294967295);var C3=((bi+C4)&4294967295);var C2=la[((C3)>>0)];var C1=(((C2)+65)&255);var C0=Di;var CZ=CK;var CY=((C0+CZ)&4294967295);la[((CY)>>0)]=C1;var CV=CK;var CT=(((CV)+1)&4294967295);CK=CT;Cy=17}else{if(EU==22){var CS=Di;var CR=CK;var CQ=((CS+CR)&4294967295);la[((CQ)>>0)]=17;var CP=CK;var CO=(((CP)+1)&4294967295);CK=CO;var CN=Cy;var CM=iB((CN),8,0);var CL=(((CM)-65)&4294967295);var Cu=((bi+CL)&4294967295);var Ct=la[((Cu)>>0)];var Cs=(((Ct)+65)&255);Cy=Cs}}}else{if(EU==55){var Bg=Di;var Be=CK;var Bd=((Bg+Be)&4294967295);la[((Bd)>>0)]=14;var Bc=CK;var Bb=(((Bc)+1)&4294967295);CK=Bb;Fq=0;while(1){var E8=Cx;var E7=la[((E8)>>0)];Cy=E7;var E6=Cy;var E5=iB((E6),8,0);var E4=Cx;var E3=((E4+1)&4294967295);Cx=E3;Bs=E5;var E2=Bs;var E0=(E2)&255;Dj=E0;var EZ=(((E0))|0)==0;var EY=Bs;var EX=(((EY))>>>0)>32;var CU=(EZ)|(EX);if(!(CU)){EU=70;break}Br=1;BP=1;CJ=0;BO=0;var EW=Cy;var EV=iB((EW),8,0)==0;if(EV){EU=72;break}AK=1;E1=1;var Ba=Cy;if(Ba==97){EU=66}else{if(Ba==98){EU=65}else{if(Ba==100){EU=61}else{if(Ba==101){EU=57}else{if(Ba==102){EU=62}else{if(Ba==105){EU=58}else{if(Ba==112){EU=59}else{if(Ba==113){EU=63}else{if(Ba==116){EU=64}else{if(Ba==118){EU=60}else{EU=67}}}}}}}}}}if(EU==67){var Ft=Cy;var Fs=iB((Ft),8,0);var Fr=(((Fs)-48)&4294967295);var Fh=(((Fr))>>>0)<=9;if(!(Fh)){EU=69;continue}var Ff=Fq;var Fd=(((Ff)*10)&4294967295);var Fc=Cy;var Fb=iB((Fc),8,0);var Fa=(((Fd)+-48)&4294967295);var E9=(((Fa)+(Fb))&4294967295);Fq=E9;EU=69;continue}else{if(EU==66){var Fv=Cw;var Fu=(Fv)|262144;Cw=Fu;EU=69;continue}else{if(EU==65){var Fx=Cw;var Fw=(Fx)|131072;Cw=Fw;EU=69;continue}else{if(EU==61){var AQ=Cw;var AP=(AQ)|4096;Cw=AP;EU=69;continue}else{if(EU==57){var A9=Cw;var A8=(A9)|256;Cw=A8;EU=69;continue}else{if(EU==62){var AO=Cw;var AN=(AO)|8192;Cw=AN;EU=69;continue}else{if(EU==58){var A7=Cw;var AY=(A7)|512;Cw=AY;EU=69;continue}else{if(EU==59){var AW=Cw;var AU=(AW)|1024;Cw=AU;EU=69;continue}else{if(EU==63){var AM=Cw;var FC=(AM)|16384;Cw=FC;EU=69;continue}else{if(EU==64){var FA=Cw;var Fy=(FA)|65536;Cw=Fy;EU=69;continue}else{if(EU==60){var AS=Cw;var AR=(AS)|2048;Cw=AR;EU=69;continue}}}}}}}}}}}}if(EU==70){Br=0;BP=0;CJ=1;BO=1}AK=0;E1=0;var ES=Cx;var ER=((ES+-1)&4294967295);Cx=ER;var EQ=Cw;var EP=(((EQ))|0)>>16;var EO=(((EP))&255);var EN=Di;var EM=CK;var EL=((EN+EM)&4294967295);la[((EL)>>0)]=EO;var EK=CK;var EJ=(((EK)+1)&4294967295);CK=EJ;var Ex=Cw;var Ew=(((Ex))|0)>>8;var Ev=(((Ew))&255);var Eu=Di;var Et=CK;var Es=((Eu+Et)&4294967295);la[((Es)>>0)]=Ev;var Er=CK;var Eq=(((Er)+1)&4294967295);CK=Eq;var Ep=Fq;var Eo=(((Ep))&255);var Eb=(Eo)|-128;Cy=Eb}}}}while(0);var Ea=Di;var D9=CK;var D8=((Ea+D9)&4294967295);var D7=Cy;la[((D8)>>0)]=D7;var D6=CK;var D5=(((D6)+1)&4294967295);CK=D5;var D4=Cy;var D3=iB((D4),8,0)==0;if(D3){EU=74;break $bb5$10}else{EU=6;continue $bb5$10}}var D2=Ec;var DR=uA[((D2)>>2)];var DQ=((kJ+DR*4)&4294967295);var DP=uA[((DQ)>>2)];var DO=Ec;uA[((DO)>>2)]=DP}return;return}function n2(Et,EI,C4,Bv){var Bu=vp;vp+=140;n1(Bu,0,140);var EJ;var El=null;var DL;var Cg;var BT;var CS;var DG;var DP;var Da;var AS;var Do;var CQ;var B7;var CD;var Ca;var BJ;var CG;var CF;var CT;var A8;var Em;var Fj;var EM;var BQ;var CE;var Ea;var EH;var EY;var Bl=Bu;var Ch=Bu+60;var Eo=Bu+120;DG=Et;DP=EI;Da=C4;AS=Bv;Em=0;EM=0;Ea=0;EH=0;A8=0;var CP=((Ch)&4294967295);la[((CP)>>0)]=0;CT=0;var CO=CT;var CN=DP;var CM=(((CO))|0)<(((CN))|0);var CK=CT;if(CM){El=-1;EJ=1}else{El=-1;EJ=2}$bb$$bb2$2:do{if(EJ==1){while(1){var CJ=El==1?Ep:(CK);var CI=DG;var CH=CT;var Ey=((CI+CH)&4294967295);var Ex=la[((Ey)>>0)];var Ew=((Bl+CJ)&4294967295);la[((Ew)>>0)]=Ex;var Ev=CT;var Eu=(((Ev)+1)&4294967295);CT=Eu;var Es=CT;var Er=DP;var Eq=(((Es))|0)<(((Er))|0);var Ep=CT;if(Eq){El=1;EJ=1;continue}else{El=1;EJ=2;break $bb$$bb2$2}}}}while(0);var CR=El==-1?CK:(Ep);var En=((Bl+CR)&4294967295);la[((En)>>0)]=0;var Ek=((Bl)&4294967295);var Ej=wg(Ek);var Ei=((Bl+Ej)&4294967295);CF=Ei;var Eh=((Ch)&4294967295);var Eg=((Bl)&4294967295);var Ef=((Bl)&4294967295);var Ee=((Eo)&4294967295);var Ed=((Eo)&4294967295);var Ec=((Eo)&4294967295);var Eb=((Eo)&4294967295);$bb39thread_pre_split$6:while(1){var AK=Em;El=42;$bb39$8:while(1){var Fd=El==42?AK:(1);var Fc=(((Fd))|0)==0;if(!(Fc)){EJ=44;break $bb39thread_pre_split$6}var D9=Da;var D8=la[((D9)>>0)];BJ=D8;var D7=Da;var D6=((D7+1)&4294967295);Da=D6;var D5=BJ;var D4=oD((D5),8,0)<=9;var D3=BJ;if(!(D4)){EJ=11;break $bb39$8}var D2=oD((D3),8,0);if(D2==0){}else{if(D2==1){EJ=7;break $bb39$8}else{if(D2==2){EJ=8;break $bb39$8}else{if(D2==3){}else{if(D2==9){EJ=10;break $bb39$8}else{if(D2==5){EJ=9;break $bb39$8}else{if(D2==8){EJ=6;break $bb39$8}else{EJ=42;continue $bb39thread_pre_split$6}}}}}}}Em=1;El=5;EJ=43;continue $bb39$8}if(EJ==11){var Dx=iB((D3),8,0)==28;if(Dx){EJ=12}else{EJ=22}if(EJ==12){var Dw=Da;var Dv=la[((Dw)>>0)];var Du=iB((Dv),8,0);var Dt=(Du)&255;Fj=Dt;var Ds=Da;var Dq=((Ds+1)&4294967295);Da=Dq;var Dp=Fj;var Dn=(((Dp))|0)!=1;if(Dn){EJ=14}else{EJ=13}$bb16$$bb15$17:do{if(EJ==13){var Dm=AS;var Dl=(((Dm))|0)<0;if(Dl){EJ=14;break $bb16$$bb15$17}else{EJ=21;break $bb16$$bb15$17}}}while(0);if(EJ==14){var Dk=CF;var Dj=((Dk)&4294967295);la[((Dj)>>0)]=36;var Di=Fj;DL=((f3)&4294967295);Cg=Di;while(1){var C7=DL;var C6=((C7)&4294967295);var C5=uA[((C6)>>2)];var C3=(C5)!=0;if(!(C3)){EJ=19;break}var Dh=DL;var Dg=((Dh+4)&4294967295);var Df=uA[((Dg)>>2)];var De=Cg;var Dd=(((Df))|0)==(((De))|0);var Dc=DL;if(Dd){EJ=16;break}var C8=((Dc+8)&4294967295);DL=C8;EJ=18;continue}if(EJ==19){CS=((r5)&4294967295)}else{if(EJ==16){var Db=((Dc)&4294967295);var C9=uA[((Db)>>2)];CS=C9}}var C2=CS;BT=C2;var DE=BT;EY=DE;var C1=CF;var C0=((C1+1)&4294967295);var CZ=EY;var CY=oJ(C0,CZ);var CX=EY;var CW=wg(CX);var CV=(((CW)+1)&4294967295);var CU=CF;var CB=((CU+CV)&4294967295);CF=CB}CG=32}else{if(EJ==22){var CA=BJ;var Cz=iB((CA),8,0)==14;if(Cz){EJ=23}else{EJ=30}if(EJ==23){var Cy=Da;var Cx=((Cy)&4294967295);var Cw=la[((Cx)>>0)];var Cv=iB((Cw),8,0);var Cu=(Cv)&127;var Ct=(((Cu)*256)&4294967295);var Cs=Da;var Cr=((Cs+1)&4294967295);var Cq=la[((Cr)>>0)];var Cp=iB((Cq),8,0);var Co=(Cp)&127;var Cn=(((Co)+(Ct))&4294967295);BQ=Cn;CE=83;var Cm=BQ;var Cl=(Cm)&4;var Ck=(((Cl))|0)!=0;if(Ck){EJ=24}else{EJ=25}if(EJ==24){CE=80}var Cj=Da;var Ci=((Cj+2)&4294967295);var Cf=la[((Ci)>>0)];var Ce=iB((Cf),8,0);var Cd=(Ce)&127;var Cc=CE;var Cb=qs(Ee,((d0)&4294967295),Cc,Cd);var B9=Da;var B8=((B9+3)&4294967295);Da=B8;CT=0;while(1){var B6=BQ;var B5=(B6)&1;var B4=(((B5))&255);var EK=iB((B4),8,0)!=0;if(EK){EJ=27}else{EJ=28}if(EJ==27){var B3=CT;var B2=((((dY)&4294967295)+B3)&4294967295);var B1=la[((B2)>>0)];var B0=iB((B1),8,0);var BZ=wg(Ed);var BY=((Eo+BZ)&4294967295);var EL=(((B0))&255);la[((BY)>>0)]=EL;var AV=((BY+1)&4294967295);la[((AV)>>0)]=0}var BX=BQ;var BW=(((BX))|0)>>1;BQ=BW;var BV=CT;var BU=(((BV)+1)&4294967295);CT=BU;var BS=(((BU))|0)<=8;if(BS){EJ=26;continue}else{EJ=29;break}}var BR=CF;var BP=oJ(BR,Ec);var BO=wg(Eb);var BM=CF;var BL=((BM+BO)&4294967295);CF=BL;CG=32}else{if(EJ==30){var BK=BJ;var BI=iB((BK),8,0)==17;if(BI){EJ=31}else{EJ=32}if(EJ==31){var BH=Da;var BG=la[((BH)>>0)];var BF=iB((BG),8,0);var BE=(((BF)-65)&4294967295);var BD=((li+BE)&4294967295);var BC=la[((BD)>>0)];CG=BC;var BB=Da;var BA=((BB+1)&4294967295);Da=BA}else{if(EJ==32){var Bz=BJ;var By=iB((Bz),8,0)==18;if(By){EJ=33}else{EJ=36}if(EJ==33){var Bx=Da;var Bw=la[((Bx)>>0)];var Bt=iB((Bw),8,0);var Bs=(((Bt)-65)&4294967295);Fj=Bs;var Br=Da;var Bq=((Br+1)&4294967295);Da=Bq;var Bp=CF;var Bo=((Bp)&4294967295);la[((Bo)>>0)]=76;var Bn=Fj;var Bm=(((((Bn))|0)/10)|0);var Bj=(((Bm))&255);var Bh=(((Bj)+48)&255);var A7=CF;var A6=((A7+1)&4294967295);la[((A6)>>0)]=Bh;var A5=Fj;var A4=(((A5))|0)%10;var A3=(((A4))&255);var A2=(((A3)+48)&255);CG=A2;var A1=A8;var A0=(((A1))|0)==1;if(A0){EJ=34}else{EJ=35}if(EJ==34){var AY=CG;var AW=CF;var AJ=((AW)&4294967295);la[((AJ)>>0)]=AY;CG=76}var AI=CF;var AH=((AI+2)&4294967295);CF=AH}else{if(EJ==36){var i=BJ;var e=oD((i),8,0)<=31;var Fy=BJ;if(e){EJ=37}else{EJ=38}if(EJ==37){var Fx=oD((Fy),8,0);var Fw=((gg+Fx)&4294967295);var Fu=la[((Fw)>>0)];CG=Fu}else{if(EJ==38){var Fs=iB((Fy),8,0)==32;if(Fs){EJ=39}else{EJ=40}if(EJ==39){CG=95}else{if(EJ==40){var Fi=BJ;CG=Fi}}}}}}}}}}}}var Fh=CG;var Fg=CF;la[((Fg)>>0)]=Fh;var Ff=CF;var Fe=((Ff+1)&4294967295);CF=Fe;EJ=42;continue $bb39thread_pre_split$6}else{if(EJ==8){A8=2;var D0=CF;la[((D0)>>0)]=0;var CL=wg(Eg);var AP=((Eg+CL)&4294967295);ns(AP,((d2)&4294967295),3,1,0);var DZ=wg(Ef);var DY=((Bl+DZ)&4294967295);CF=DY;EJ=42;continue $bb39thread_pre_split$6}else{if(EJ==10){var DS=Da;var DR=((DS+1)&4294967295);var DQ=la[((DR)>>0)];var DO=iB((DQ),8,0);var DN=(DO)&255;var DM=(((DN)-1)&4294967295);Fj=DM;var DK=Da;var DJ=((DK)&4294967295);var DI=la[((DJ)>>0)];var DH=iB((DI),8,0);var DF=(DH)&255;var DD=Fj;var DC=(((DD)*255)&4294967295);var DB=(((DC)+-1)&4294967295);var DA=(((DB)+(DF))&4294967295);EM=DA;var Dz=Da;var Dy=((Dz+2)&4294967295);Da=Dy;EJ=42;continue $bb39thread_pre_split$6}else{if(EJ==9){var DX=Da;var DW=la[((DX)>>0)];var DV=iB((DW),8,0);Ea=DV;var DU=Da;var DT=((DU+1)&4294967295);Da=DT;EJ=42;continue $bb39thread_pre_split$6}else{if(EJ==6){EH=1}}}}}A8=1;var D1=CF;la[((D1)>>0)]=0;CF=Eh;EJ=42;continue $bb39thread_pre_split$6}var Fb=CF;la[((Fb)>>0)]=0;CF=((vA)&4294967295);var E9=EM;var E7=(((E9))|0)>0;if(E7){EJ=45}else{EJ=46}if(EJ==45){var Bk=CF;var Bi=EM;var Bg=qs(Bk,((dV)&4294967295),Bi);var Bf=CF;var Be=((Bf+7)&4294967295);CF=Be}var Bd=Ea;var Bc=(((Bd))|0)>0;if(Bc){EJ=47}else{EJ=48}if(EJ==47){var Bb=CF;var Ba=Ea;var A9=qs(Bb,((dU)&4294967295),Ba);var AZ=CF;var AX=wg(AZ);var AU=CF;var AT=((AU+AX)&4294967295);CF=AT}var AR=((Ch)&4294967295);var AQ=wg(AR);CT=AQ;var AO=(((AQ))|0)>0;var Dr=EH;if(AO){EJ=52}else{EJ=49}$bb50$$bb45$71:do{if(EJ==52){CD=1;Ca=1;var AM=(((Dr))|0)!=0;if(AM){EJ=53;break $bb50$$bb45$71}else{EJ=54;break $bb50$$bb45$71}}else{if(EJ==49){var AN=(((Dr))|0)!=0;if(AN){EJ=50}else{EJ=51}if(EJ==50){CD=1;Ca=1;EJ=53;break $bb50$$bb45$71}else{if(EJ==51){CD=0;Ca=0;EJ=57;break $bb50$$bb45$71}}}}}while(0);$bb51$$bb54_preheader$$bb57$77:do{if(EJ==53){var AL=CF;la[((AL)>>0)]=95;var Fv=CF;var Ft=((Fv+1)&4294967295);CF=Ft;EJ=54;break $bb51$$bb54_preheader$$bb57$77}}while(0);if(EJ==54){var Fr=CT;var Fq=(((Fr)-1)&4294967295);CT=Fq;var Fp=(((Fq))|0)>=0;var Fo=oD((Fp),1,0);B7=Fo;if(Fp){EJ=55}else{EJ=56}$bb53$$bb56$81:do{if(EJ==55){while(1){var Fn=CT;var Fm=((Ch+Fn)&4294967295);var Fl=la[((Fm)>>0)];var Fk=CF;la[((Fk)>>0)]=Fl;var Fa=CF;var E8=((Fa+1)&4294967295);CF=E8;var E6=CT;var E5=(((E6)-1)&4294967295);CT=E5;var E4=CT;var E3=(((E4))|0)>=0;var E2=oD((E3),1,0);B7=E2;var CC=iB((E2),8,0)!=0;if(CC){EJ=55;continue}else{EJ=56;break $bb53$$bb56$81}}}}while(0);var E1=CF;la[((E1)>>0)]=41;var E0=CF;var EZ=((E0+1)&4294967295);CF=EZ;var EW=CF;la[((EW)>>0)]=32;var EV=CF;var EU=((EV+1)&4294967295);CF=EU}var ET=CF;la[((ET)>>0)]=0;var ES=CF;var ER=((Bl)&4294967295);var EQ=sU(ES,ER);var EP=wg(((vA)&4294967295));CT=EP;var EO=(((EP))|0)<=7;var EN=CT;var EG=((vA+EN)&4294967295);if(EO){El=57;EJ=58}else{El=57;EJ=59}$bb58$$bb60$86:do{if(EJ==58){while(1){var EF=El==58?EA:(EG);la[((EF)>>0)]=32;var EE=CT;var ED=(((EE)+1)&4294967295);CT=ED;var EC=(((ED))|0)<=7;var EB=CT;var EA=((vA+EB)&4294967295);if(EC){El=58;EJ=58;continue}else{El=58;EJ=59;break $bb58$$bb60$86}}}}while(0);var BN=El==57?EG:(EA);la[((BN)>>0)]=0;CQ=((vA)&4294967295);var Ez=CQ;Do=Ez;var EX=Do;vp=Bu;return EX;return null}function tA(A4,GE){var Bz=vp;vp+=840;n1(Bz,0,840);var AY;var Jk=null;var I0;var Fh;var Bf;var GR;var AU;var I5;var Bb;var Ii;var CM;var CA;var F5;var Iw;var Cy;var Bl;var Ep;var D0;var Jp;var KR;var EJ;var J4;var Cx;var Hi;var BX;var En;var Cw;var Jz;var AZ;var J9;var GS;var Jt;var Cv;var BZ;var FG;var C3;var Lh;var BY;var Cu;var Hd;var J2;var IH;var IS;var KZ;var Ct;var Bn;var JE;var Br;var Gj;var J6;var Bj;var Cs;var Gh;var Li;var Cr;var Ch;var IX;var J3;var B1;var Fu;var Lt;var FR;var DO;var Cq;var Jj;var EV;var AI;var HY;var Kj;var BW;var Em;var Ce;var JC;var BV;var KQ;var AW;var Jh;var HG;var GG;var DR;var A1;var CK;var Fm;var B0;var AX;var FY;var ER=Bz;var J1;var Lg;var JX;var He=Bz+4;var Ki=Bz+104;var FS=Bz+304;var Cd=Bz+308;var KS;var Fj;var e;var FF;var i;var AH;var Hk;var Ee=Bz+312;var B2;var I7;var HB;var Gx=Bz+316;var Jy=Bz+516;var Ko=Bz+712;KS=A4;Fj=GE;I7=0;la[((mf)>>0)]=0;var FE=((Jy)&4294967295);var FD=KS;var FC=Fj;var FB=qs(FE,((dC)&4294967295),FD,FC);var FA=((Jy)&4294967295);var Fz=uE(FA,((fb)&4294967295));HB=Fz;var Fy=HB;var Fx=(Fy)==0;var Fw=oD((Fx),1,0);AH=Fw;var Fs=AH;var Kv=iB((Fs),8,0)!=0;if(Kv){AY=1}else{AY=3}$bb$$bb3$2:do{if(AY==1){var Fr=((Jy)&4294967295);var Fq=KS;var Fp=Fj;var Fo=qs(Fr,((dB)&4294967295),Fq,Fp);var Fn=((Jy)&4294967295);var Fl=uE(Fn,((fb)&4294967295));HB=Fl;var Fk=HB;var Fi=(Fk)==0;var Fg=oD((Fi),1,0);i=Fg;var Ff=i;var By=iB((Ff),8,0)!=0;if(!(By)){AY=3;break $bb$$bb3$2}FF=-1;AY=142;break $bb$$bb3$2}}while(0);if(AY==3){var Fe=uA[((zs)>>2)];var Fd=((Jy)&4294967295);var Fc=Am(Fe,((dr)&4294967295),Fd);uA[((bA)>>2)]=0;var Fb=((Gx)&4294967295);var Fa=((Gx)&4294967295);var E9=((Ko)&4294967295);var E8=((Ki)&4294967295);var E7=((Ki)&4294967295);var E6=((Ki)&4294967295);var EU=((Ko)&4294967295);var ET=((Ki)&4294967295);var ES=((Ki)&4294967295);var EQ=((FS)&4294967295);var EP=((Ki)&4294967295);var EO=((FS)&4294967295);var EN=((FS)&4294967295);var EM=((FS)&4294967295);$bb10$7:while(1){var Bd=HB;var Bc=r0(Fb,200,Bd);var Ba=(Bc)!=0;var A9=oD((Ba),1,0);e=A9;var AJ=iB((A9),8,0)!=0;if(!(AJ)){AY=141;break $bb10$7}var EL=uA[((bA)>>2)];var EK=(((EL)+1)&4294967295);uA[((bA)>>2)]=EK;B1=Fa;Fu=E9;Lt=Ee;Jh=0;DR=0;A1=0;CK=0;Fm=0;JX=0;FY=0;JC=((hA)&4294967295);var Ey=JC;BV=Ey;var Ex=B1;var Ew=l4(Ex,((dN)&4294967295),2);var Ev=(((Ew))|0)==0;if(Ev){AY=5}else{AY=6}if(AY==5){AW=1}var Eu=B1;Ce=Eu;AW=0;Em=0;$bb2_i$13:while(1){var Et=Ce;var Es=ll[((Et)>>0)];Em=Es;var Er=iB((Es),8,0)==63;if(Er){Jk=7;AY=8}else{Jk=7;AY=17}if(AY==8){var Eq=AW;var Eo=(((Eq))|0)==0;if(Eo){AY=9}else{AY=16}if(AY==9){HG=100;var Ea=Ce;var D9=((Ea+1)&4294967295);Ce=D9;var D8=Ce;var D7=la[((D8)>>0)];var D6=iB((D7),8,0)==33;if(D6){AY=10}else{AY=11}if(AY==10){HG=132;var D5=Ce;var D4=((D5+1)&4294967295);Ce=D4}KQ=0;var D3=Ce;var D2=la[((D3)>>0)];var D1=iB((D2),8,0);var DN=(((D1)-48)&4294967295);var DM=(((DN))>>>0)<=9;if(DM){AY=12}else{AY=13}if(AY==12){var DL=Ce;var DK=la[((DL)>>0)];var DJ=iB((DK),8,0);var DI=KQ;var DH=(((DJ)+-48)&4294967295);var DG=(((DH)+(DI))&4294967295);KQ=DG;var DF=Ce;var DE=((DF+1)&4294967295);Ce=DE}var Ds=Ce;var Dr=la[((Ds)>>0)];var Dq=iB((Dr),8,0);var Dp=(((Dq)-48)&4294967295);var Do=(((Dp))>>>0)<=9;if(Do){AY=14}else{AY=15}if(AY==14){var Dn=KQ;var Dm=(((Dn)*10)&4294967295);var Dl=Ce;var Dk=la[((Dl)>>0)];var Dj=iB((Dk),8,0);var C8=(((Dm)+-48)&4294967295);var C7=(((C8)+(Dj))&4294967295);KQ=C7;var C6=Ce;var C5=((C6+1)&4294967295);Ce=C5}var C4=Jh;var C2=KQ;var C1=(((C2))&255);var C0=HG;var CY=(((C0))&255);var CX=(((CY)+(C1))&255);var Ih=((He+C4)&4294967295);la[((Ih)>>0)]=CX;var If=Jh;var Id=(((If)+1)&4294967295);Jh=Id;var Ib=Ce;var H9=la[((Ib)>>0)];Em=H9;Jk=15}else{if(AY==16){var Bk=Em;Jk=16}}}var H7=Jk==16?Bk:(Jk==15?H9:(Es));var H5=iB((H7),8,0)==36;if(H5){AY=18}else{AY=40}$bb12_i$$bb26_i$30:do{if(AY==18){var H3=Ce;var H1=((H3+1)&4294967295);var HZ=la[((H1)>>0)];var HW=iB((HZ),8,0);var HU=mx(HW);var HS=(((HU))|0)!=0;if(!(HS)){AY=40;break $bb12_i$$bb26_i$30}var HQ=Ce;Lg=HQ;$bb15_i$33:while(1){var HM=Ce;var HK=la[((HM)>>0)];Em=HK;var HI=Em;var HF=oD((HI),8,0);Gh=HF;var HD=Gh;var Hz=(HD)&255;J3=Hz;var Hx=(((Hz))|0)==0;var Hv=Gh;var Ht=(((Hv))>>>0)>32;var Ji=(Hx)|(Ht);if(Ji){AY=22}else{AY=23}if(AY==22){Ch=1;IX=1;Cr=0}else{if(AY==23){Ch=0;IX=0;Cr=1}}var Hr=Cr;Li=Hr;var Ft=Li;var Hp=(((Ft))|0)==0;var Hn=oD((Hp),1,0);BW=Hn;var A0=iB((Hn),8,0)!=0;var Hl=Ce;if(!(A0)){AY=25;break $bb15_i$33}var HO=((Hl+1)&4294967295);Ce=HO;AY=21;continue $bb15_i$33}la[((Hl)>>0)]=0;var Hh=Lg;Gj=((q6)&4294967295);J6=Hh;while(1){var GV=Gj;var GT=((GV)&4294967295);var GQ=uA[((GT)>>2)];var GP=(GQ)!=0;var GO=Gj;if(!(GP)){AY=30;break}var Hf=((GO)&4294967295);var Hb=uA[((Hf)>>2)];var G9=J6;var G7=pt(G9,Hb);var G5=(((G7))|0)==0;var G3=Gj;if(G5){AY=27;break}var GX=((G3+8)&4294967295);Gj=GX;AY=29;continue}if(AY==30){var GN=((GO+4)&4294967295);var GM=uA[((GN)>>2)];Cs=GM;Jk=30}else{if(AY==27){var G1=((G3+4)&4294967295);var GZ=uA[((G1)>>2)];Cs=GZ;Jk=27}}var GL=Jk==27?GZ:(GM);Bj=GL;KQ=GL;var GK=(((GL))|0)!=0;if(GK){AY=32}else{AY=39}if(AY==32){var GJ=KQ;var GI=(((GJ))|0)==200;if(GI){AY=33}else{AY=34}if(AY==33){la[((mf)>>0)]=1}else{if(AY==34){var GH=KQ;var GF=(((GH))|0)==201;if(GF){AY=35}else{AY=36}if(AY==35){la[((mf)>>0)]=0}else{if(AY==36){var GD=KQ;var GC=(((GD))|0)==29;if(GC){AY=37}else{AY=38}if(AY==37){FY=1}else{if(AY==38){var GB=Jh;var GA=KQ;var Gz=(((GA))&255);var Gy=((He+GB)&4294967295);la[((Gy)>>0)]=Gz;var Gw=Jh;var Gv=(((Gw)+1)&4294967295);Jh=Gv}}}}}}}else{if(AY==39){var Gu=uA[((bA)>>2)];var Gt=uA[((zs)>>2)];var Gs=Lg;var Gr=Am(Gt,((dL)&4294967295),Gu,Gs);var Gq=uA[((ei)>>2)];var Gp=(((Gq)+1)&4294967295);uA[((ei)>>2)]=Gp}}}}while(0);var Go=Em;var Gn=iB((Go),8,0)==47;if(Gn){AY=41}else{AY=44}$bb27_i$$bb30_i$62:do{if(AY==41){var Gm=Ce;var Gl=((Gm+1)&4294967295);var Gk=la[((Gl)>>0)];var Gg=iB((Gk),8,0)==47;if(!(Gg)){AY=44;break $bb27_i$$bb30_i$62}var Gf=DR;var Ge=(((Gf))|0)==0;if(!(Ge)){AY=44;break $bb27_i$$bb30_i$62}Em=10;var Gd=Ce;JX=Gd}}while(0);var Gc=AW;if(Gc==0){AY=45}else{if(Gc==1){AY=53}else{if(Gc==2){AY=68}else{if(Gc==3){AY=76}else{if(Gc==4){AY=82}else{AY=88}}}}}$bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67:do{if(AY==45){var Gb=Em;var Ga=iB((Gb),8,0)==40;if(Ga){AY=46}else{AY=47}if(AY==46){DR=1;var F9=Ce;var F8=((F9+1)&4294967295);JC=F8;AW=1;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}else{if(AY==47){var F7=Em;var F4=oD((F7),8,0);IS=F4;var F3=IS;var F2=(F3)&255;Br=F2;var F1=Br;var F0=(((F1))|0)==0;if(F0){AY=49}else{AY=48}$bb4_i12_i$$bb_i11_i$72:do{if(AY==48){var FZ=IS;var FX=(((FZ))>>>0)>32;if(FX){AY=49;break $bb4_i12_i$$bb_i11_i$72}Bn=0;JE=0;Ct=1;AY=51;break $bb4_i12_i$$bb_i11_i$72}}while(0);if(AY==49){Bn=1;JE=1;Ct=0}var FW=Ct;KZ=FW;var JP=KZ;var FV=(((JP))|0)==0;var FU=oD((FV),1,0);Kj=FU;var CL=iB((FU),8,0)!=0;if(!(CL)){AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var FQ=Ce;JC=FQ;AW=1;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}}}else{if(AY==53){var FP=Em;var FO=iB((FP),8,0)==45;if(FO){AY=54}else{AY=58}$bb38_i$$bb42_i$80:do{if(AY==54){var FN=DR;var FM=(((FN))|0)!=0;if(!(FM)){AY=58;break $bb38_i$$bb42_i$80}var FL=JC;var FK=((FL)&4294967295);var FJ=la[((FK)>>0)];var FI=iB((FJ),8,0);var FH=(((FI)-48)&4294967295);var AT=(((FH))>>>0)<=9;if(AT){AY=56}else{AY=57}if(AY==56){A1=1}var AS=Jh;var AR=((He+AS)&4294967295);la[((AR)>>0)]=44;var AQ=Jh;var AP=(((AQ)+1)&4294967295);Jh=AP;Em=32}}while(0);var AO=Em;var AN=oD((AO),8,0);Lh=AN;var AM=Lh;var AL=(AM)&255;IH=AL;var AK=(((AL))|0)==0;var Ls=Lh;var Lr=(((Ls))>>>0)>32;var Gi=(AK)|(Lr);if(Gi){AY=59}else{AY=60}if(AY==59){Hd=1;J2=1;Cu=0}else{if(AY==60){Hd=0;J2=0;Cu=1}}var Lq=Cu;BY=Lq;var Fv=BY;var Lp=(((Fv))|0)!=0;var Lo=oD((Lp),1,0);HY=Lo;var FT=iB((Lo),8,0)!=0;if(FT){AY=62}else{AY=65}if(AY==62){var Ln=Ce;var Lm=((Ln)&4294967295);la[((Lm)>>0)]=0;var Ll=DR;var Lk=(((Ll))|0)!=0;if(Lk){AY=63}else{AY=64}if(AY==63){var Lj=Ce;var Lf=((Lj+1)&4294967295);Fm=Lf;var Le=Fm;CK=Le;AW=2;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}else{if(AY==64){AW=3;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}}}else{if(AY==65){var Ld=Em;var Lc=iB((Ld),8,0)==41;if(Lc){Jk=65}else{Jk=65;AY=89;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var Lb=DR;var La=(((Lb))|0)!=0;if(!(La)){AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var K8=Ce;var K7=((K8)&4294967295);la[((K7)>>0)]=0;AW=3;DR=0;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}}}else{if(AY==68){var K6=Em;var K5=oD((K6),8,0);GS=K5;var K3=GS;var K2=(K3)&255;C3=K2;var K1=C3;var K0=(((K1))|0)==0;if(K0){AY=70}else{AY=69}$bb4_i32_i$$bb_i31_i$100:do{if(AY==69){var KY=GS;var KX=(((KY))>>>0)>32;if(KX){AY=70;break $bb4_i32_i$$bb_i31_i$100}BZ=0;FG=0;Cv=1;AY=72;break $bb4_i32_i$$bb_i31_i$100}}while(0);if(AY==70){BZ=1;FG=1;Cv=0}var KW=Cv;Jt=KW;var AV=Jt;var KV=(((AV))|0)!=0;var KU=oD((KV),1,0);AI=KU;var A5=iB((KU),8,0)!=0;if(A5){AY=73}else{AY=74}if(AY==73){var KT=DR;var KP=(((KT)+1)&4294967295);DR=KP;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}else{if(AY==74){var KO=Em;var KN=iB((KO),8,0)==41;if(KN){Jk=74}else{Jk=74;AY=89;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var KM=Ce;var KL=((KM)&4294967295);la[((KL)>>0)]=32;var KK=Ce;var KJ=((KK+1)&4294967295);Fm=KJ;AW=3;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}}}else{if(AY==76){var KI=Em;var KH=oD((KI),8,0);BX=KH;var KG=BX;var KF=(KG)&255;J9=KF;var KE=J9;var KD=(((KE))|0)==0;if(KD){AY=78}else{AY=77}$bb4_i42_i$$bb_i41_i$111:do{if(AY==77){var KC=BX;var KB=(((KC))>>>0)>32;if(KB){AY=78;break $bb4_i42_i$$bb_i41_i$111}Jz=0;AZ=0;Cw=1;AY=80;break $bb4_i42_i$$bb_i41_i$111}}while(0);if(AY==78){Jz=1;AZ=1;Cw=0}var KA=Cw;En=KA;var HC=En;var Kz=(((HC))|0)==0;var Ky=oD((Kz),1,0);EV=Ky;var Dz=iB((Ky),8,0)!=0;if(!(Dz)){AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var Kx=Ce;BV=Kx;AW=4;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}else{if(AY==82){var Kw=Em;var Ku=oD((Kw),8,0);F5=Ku;var Kt=F5;var Ks=(Kt)&255;D0=Ks;var Kr=D0;var Kq=(((Kr))|0)==0;if(Kq){AY=84}else{AY=83}$bb4_i57_i$$bb_i56_i$119:do{if(AY==83){var Kp=F5;var Kn=(((Kp))>>>0)>32;if(Kn){AY=84;break $bb4_i57_i$$bb_i56_i$119}Bl=0;Ep=0;Cy=1;AY=86;break $bb4_i57_i$$bb_i56_i$119}}while(0);if(AY==84){Bl=1;Ep=1;Cy=0}var Km=Cy;Iw=Km;var Bh=Iw;var Kl=(((Bh))|0)!=0;var Kk=oD((Kl),1,0);Jj=Kk;var Ik=iB((Kk),8,0)!=0;if(!(Ik)){AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}var Kh=Ce;var Kg=((Kh)&4294967295);la[((Kg)>>0)]=0;AW=5;AY=88;break $bb65thread_pre_split_i$$bb31_i$$bb37_i$$bb52_i$$bb58_i$$bb62_i$67}}}}}}while(0);if(AY==88){var JD=Em;Jk=88}var F6=Jk==88?JD:(Jk==74?KO:(Ld));var Kf=Ce;var Ke=((Kf+1)&4294967295);Ce=Ke;var Kd=iB((F6),8,0)!=10;if(Kd){AY=7;continue $bb2_i$13}else{AY=90;break $bb2_i$13}}var Kc=JC;var Kb=((Kc)&4294967295);var Ka=la[((Kb)>>0)];var J8=iB((Ka),8,0)==0;if(J8){AY=91}else{AY=92}if(AY==91){Cq=0;FR=0;Hk=0;AY=140;continue $bb10$7}else{if(AY==92){var JA=ll[((mf)>>0)];var J7=oD((JA),1,0);var J0=(((J7))|0)!=0;if(J0){AY=93}else{AY=94}$bb71_thread_i$$bb71_i$133:do{if(AY==93){FY=1;AY=95;break $bb71_thread_i$$bb71_i$133}else{if(AY==94){var J5=FY;var JZ=(((J5))|0)!=0;if(JZ){AY=95;break $bb71_thread_i$$bb71_i$133}var ED=BV;var EC=j6(ED,ES,EQ);var EB=qX(EP,21);var EA=(EB)!=0;if(EA){AY=100}else{AY=101}if(AY==100){var Ez=Jh;var El=((He+Ez)&4294967295);la[((El)>>0)]=10;var Ek=Jh;var Ej=(((Ek)+1)&4294967295);Jh=Ej}var Ei=la[((EO)>>0)];var Eh=iB((Ei),8,0)!=0;if(!(Eh)){AY=103;break $bb71_thread_i$$bb71_i$133}var Eg=ll[((EN)>>0)];var Ef=oD((Eg),8,0);var Ed=ll[((EM)>>0)];var Ec=oD((Ed),8,0);var Eb=uA[((bA)>>2)];var DZ=uA[((zs)>>2)];var DY=JC;var DX=BV;var DW=Am(DZ,((dG)&4294967295),Eb,Ec,Ef,DY,DX);var DV=uA[((ei)>>2)];var DU=(((DV)+1)&4294967295);uA[((ei)>>2)]=DU;AY=103;break $bb71_thread_i$$bb71_i$133}}}while(0);$bb72_i$$bb83_i$141:do{if(AY==95){var JY=JC;var JW=((JY)&4294967295);var JV=la[((JW)>>0)];var JU=iB((JV),8,0)==95;var JT=BV;if(JU){AY=96}else{AY=98}if(AY==96){var BU=wg(JT);var K9=((JT+BU)&4294967295);ns(K9,((dJ)&4294967295),2,1,0);var JS=uA[((xy)>>2)];var JR=BV;var JQ=kY(JS,JR,0,0);FY=0;GR=E8;AU=((eh)&4294967295);I5=156;var JO=I5;var JN=GR;var JM=AU;var JL=xT(JN,JM,JO);var JK=I5;var JJ=(((JK)-1)&4294967295);var JI=GR;var JH=((JI+JJ)&4294967295);la[((JH)>>0)]=0;var JG=la[((((eh)&4294967295))>>0)];var JF=iB((JG),8,0)==0;var E5=uA[((nH)>>2)];var E4=(((E5))|0)<=2;var JB=(JF)&(E4);if(!(JB)){AY=103;break $bb72_i$$bb83_i$141}var E3=uA[((nH)>>2)];var E2=(((E3)+1)&4294967295);uA[((nH)>>2)]=E2;var E1=uA[((bA)>>2)];var E0=uA[((zs)>>2)];var EZ=Am(E0,((dH)&4294967295),E1)}else{if(AY==98){I0=E7;Fh=JT;Bf=156;var EY=Bf;var EX=I0;var EW=Fh;var EI=xT(EX,EW,EY);var EH=Bf;var EG=(((EH)-1)&4294967295);var EF=I0;var EE=((EF+EG)&4294967295);la[((EE)>>0)]=0}}}}while(0);var DT=uA[((xy)>>2)];var DS=((DT)&4294967295);var DQ=((DS+252)&4294967295);var DP=la[((DQ)>>0)];var DD=iB((DP),8,0);var DC=FY;var DB=(((DD))|0)!=(((DC))|0);if(DB){AY=104}else{AY=105}if(AY==104){var DA=Jh;var Dy=((He+DA)&4294967295);la[((Dy)>>0)]=29;var Dx=Jh;var Dw=(((Dx)+1)&4294967295);Jh=Dw}var Dv=JC;var Du=lE(Dv,((dF)&4294967295),ER);var Dt=(((Du))|0)==1;var Di=oD((Dt),1,0);DO=Di;var K4=iB((Di),8,0)!=0;if(K4){AY=106}else{AY=107}$bb87_i$$bb88_i$151:do{if(AY==106){var Dh=uA[((ER)>>2)];var Dg=JC;var Df=zD(Dh,Dg);KQ=Df;var De=JC;var Dd=KQ;var Dc=((De+Dd)&4294967295);la[((Dc)>>0)]=0}else{if(AY==107){var Db=JC;var Da=((Db)&4294967295);var C9=la[((Da)>>0)];var CW=iB((C9),8,0)!=95;if(!(CW)){AY=121;break $bb87_i$$bb88_i$151}J1=1;var CV=JC;Ce=CV;var CU=JC;Ce=CU;$bb90_i$155:while(1){var CT=Ce;Bb=Cd;Ii=CT;var CS=Bb;var CR=Ii;var CQ=F(CS,CR,0);CA=CQ;var CP=CA;CM=CP;var CZ=CM;KQ=CZ;var CO=uA[((Cd)>>2)];var CN=(((CO))|0)==0;if(CN){AY=119;break $bb90_i$155}var CJ=uA[((Cd)>>2)];Jp=CJ;var CI=Jp;var CH=(((CI))>>>0)<=255;var CG=Jp;if(CH){AY=115}else{AY=111}$iswupper_exit_i$$bb1_i49_i$158:do{if(AY==115){var Cl=tM(CG);Cx=Cl;KR=Cl;var Ck=(((Cl))|0)!=0;if(Ck){AY=116;break $iswupper_exit_i$$bb1_i49_i$158}else{AY=117;break $iswupper_exit_i$$bb1_i49_i$158}}else{if(AY==111){var CF=(((CG))>>>0)>563;if(CF){AY=113}else{AY=112}$iswupper_exit_thread68_i$$bb2_i50_i$161:do{if(AY==112){var CE=Jp;var CD=(((CE)-256)&4294967295);var CC=((xF+CD)&4294967295);var CB=ll[((CC)>>0)];var Cz=oD((CB),8,0);Hi=Cz;var Cp=Hi;var Co=(((Cp))|0)==0;var Cn=Hi;var Cm=(((Cn))|0)==255;var Jm=(Co)|(Cm);if(Jm){AY=113;break $iswupper_exit_thread68_i$$bb2_i50_i$161}EJ=0;J4=0;Cx=1;KR=1;AY=116;break $iswupper_exit_i$$bb1_i49_i$158}}while(0);EJ=1;J4=1;Cx=0;KR=0;AY=117;break $iswupper_exit_i$$bb1_i49_i$158}}}while(0);if(AY==116){var Cj=uA[((Cd)>>2)];var Ci=q3(Cj);var Cg=Ce;var Cf=zD(Ci,Cg)}else{if(AY==117){J1=0}}var Cc=Ce;var Cb=KQ;var Ca=((Cc+Cb)&4294967295);Ce=Ca;AY=109;continue $bb90_i$155}var B9=J1;var B8=(((B9))|0)!=0;if(!(B8)){AY=121;break $bb87_i$$bb88_i$151}var B7=Jh;var B6=((He+B7)&4294967295);la[((B6)>>0)]=42;var B5=Jh;var B4=(((B5)+1)&4294967295);Jh=B4}}}while(0);var B3=JC;var Jx=wg(B3);B0=Jx;var Jw=uA[((xy)>>2)];var Jv=((Jw+288)&4294967295);var Ju=uA[((Jv)>>2)];var Js=(((Ju))|0)>0;if(Js){AY=122}else{AY=123}if(AY==122){var Jr=uA[((xy)>>2)];var Jq=JC;var Jo=zU(Jr,Jq);B0=Jo}var Jn=JC;var Jl=ca(Jn);var Jg=Lt;uA[((Jg)>>2)]=Jl;var Jf=wg(E6);AX=Jf;var Je=B0;var Jd=(((Je))&255);var Jc=Fu;var Jb=((Jc+1)&4294967295);la[((Jb)>>0)]=Jd;var Ja=B0;var I9=(Ja)&63;B0=I9;var I8=B0;var I6=Fu;var I4=((I6+2)&4294967295);var I3=JC;ns(I4,I3,I8,1,0);var I2=AX;var I1=(((I2))|0)==0;if(I1){AY=124}else{AY=125}if(AY==124){var IZ=Fu;var IY=((IZ+1)&4294967295);var IW=la[((IY)>>0)];var IV=(IW)|-128;var IU=Fu;var IT=((IU+1)&4294967295);la[((IT)>>0)]=IV;var IR=B0;var IQ=(((IR)+2)&4294967295);GG=IQ}else{if(AY==125){var IP=B0;var IO=AX;var IN=(((IP)+3)&4294967295);var IM=(((IN)+(IO))&4294967295);GG=IM;var IL=B0;var IK=(((IL)+2)&4294967295);var IJ=Fu;var II=((IJ+IK)&4294967295);var IG=oJ(II,ET)}}KQ=0;var IF=KQ;var IE=Jh;var ID=(((IF))>>>0)<(((IE))>>>0);var IC=GG;if(ID){Jk=126;AY=127}else{Jk=126;AY=128}$bb103_i$$bb105_i$179:do{if(AY==127){while(1){var IB=Jk==127?Im:(IC);var IA=KQ;var Iz=(((IA)+(IB))&4294967295);var Iy=KQ;var Ix=((He+Iy)&4294967295);var Iv=la[((Ix)>>0)];var Iu=Fu;var It=((Iu+Iz)&4294967295);la[((It)>>0)]=Iv;var Is=KQ;var Ir=(((Is)+1)&4294967295);KQ=Ir;var Iq=KQ;var Ip=Jh;var In=(((Iq))>>>0)<(((Ip))>>>0);var Im=GG;if(In){Jk=127;AY=127;continue}else{Jk=127;AY=128;break $bb103_i$$bb105_i$179}}}}while(0);var Io=Jk==126?IC:(Im);var Il=Jh;var Ij=(((Il)+(Io))&4294967295);GG=Ij;var Ig=CK;var Ie=(Ig)!=0;if(Ie){AY=129}else{AY=135}$bb106_i$$_ZL12compile_linePcS_Pi_exit$183:do{if(AY==129){var Ic=DR;var Ia=(((Ic))|0)>0;if(!(Ia)){AY=135;break $bb106_i$$_ZL12compile_linePcS_Pi_exit$183}var H8=DR;var H6=(((H8))|0)>10;if(H6){AY=131}else{AY=132}if(AY==131){var H4=uA[((bA)>>2)];var H2=uA[((zs)>>2)];var H0=DR;var HX=Am(H2,((dD)&4294967295),H4,H0)}else{if(AY==132){var HV=DR;var HT=(((HV))&255);var HR=(((HT)+80)&255);var HP=Fu;var HN=GG;var HL=((HP+HN)&4294967295);la[((HL)>>0)]=HR;var HJ=GG;var HH=(((HJ)+1)&4294967295);GG=HH;var HE=Fm;var HA=(HE);var Hy=CK;var Hw=(Hy);var Hu=(((HA)-(Hw))&4294967295);KQ=Hu;var Hs=A1;var Hq=(((Hs))|0)!=0;if(Hq){AY=133}else{AY=134}if(AY==133){var Ho=Fu;var Hm=GG;var Hj=((Ho+Hm)&4294967295);la[((Hj)>>0)]=32;var Hg=GG;var Hc=(((Hg)+1)&4294967295);GG=Hc}var Ha=Fu;var G8=GG;var G6=((Ha+G8)&4294967295);var G4=CK;var G2=KQ;ns(G6,G4,G2,1,0);var G0=GG;var GY=KQ;var GW=(((GY)+(G0))&4294967295);GG=GW}}}}while(0);var GU=GG;var BT=(((GU))&255);var BS=Fu;var BR=((BS)&4294967295);la[((BR)>>0)]=BT;var BQ=GG;Cq=BQ;FR=BQ;Hk=BQ;var BP=(((BQ))|0)==0;if(BP){AY=140;continue $bb10$7}var BO=uA[((Ee)>>2)];var BN=((kC+BO*4)&4294967295);var BM=uA[((BN)>>2)];var BL=(((BM)+1)&4294967295);var BK=((kC+BO*4)&4294967295);uA[((BK)>>2)]=BL;var BJ=Hk;var BI=(((BJ)+4)&4294967295);var BH=fu(BI);B2=BH;var BG=B2;var BF=(BG)==0;if(BF){AY=137;break $bb10$7}var Bw=uA[((Ee)>>2)];var Bv=((bv+Bw*4)&4294967295);var Bu=B2;var Bt=Bv;ns(Bu,Bt,4,1,0);var Bs=uA[((Ee)>>2)];var Bq=((bv+Bs*4)&4294967295);var Bp=B2;uA[((Bq)>>2)]=Bp;var Bo=Hk;var Bm=B2;var Bi=((Bm+4)&4294967295);ns(Bi,EU,Bo,1,0);var Bg=I7;var Be=(((Bg)+1)&4294967295);I7=Be;AY=140;continue $bb10$7}}}$bb12$$bb6$195:do{if(AY==137){var BE=uA[((zs)>>2)];var BD=(BE)!=0;if(!(BD)){AY=141;break $bb12$$bb6$195}var BC=uA[((zs)>>2)];var BB=yf(((gb)&4294967295),1,22,BC);var BA=uA[((ei)>>2)];var Bx=(((BA)+1)&4294967295);uA[((ei)>>2)]=Bx}}while(0);var A8=uA[((zs)>>2)];var A7=I7;var A6=Am(A8,((dn)&4294967295),A7);var A3=HB;var A2=ts(A3);FF=0}vp=Bz;return;return}function rF(AJ,AI){var AX;var A0;var i;var AY;var Ba;var AH;var AN;var AL;var AT;A0=AJ;i=AI;var A9=i;var A8=uA[((A9)>>2)];AL=A8;var A7=A0;var A6=uA[((A7)>>2)];AN=A6;var A5=AN;var A4=AL;var A3=pt(A5,A4);AT=A3;var A2=AT;var A1=(((A2))|0)!=0;var AW=oD((A1),1,0);AH=AW;var AV=AH;var AZ=iB((AV),8,0)!=0;if(AZ){AX=1}else{AX=2}if(AX==1){var AU=AT;Ba=AU}else{if(AX==2){var AS=AN;var AR=wg(AS);var AQ=(((AR)+1)&4294967295);var AP=AN;var AO=((AP+AQ)&4294967295);AN=AO;var AM=AL;var AK=wg(AM);var e=(((AK)+1)&4294967295);var Bh=AL;var Bg=((Bh+e)&4294967295);AL=Bg;var Bf=AN;var Be=AL;var Bd=pt(Bf,Be);Ba=Bd}}var Bc=Ba;AY=Bc;var Bb=AY;return Bb;return null}function ut(AI,AH){var AU;var AW;var i;var AV;var A7;var AQ;AW=AI;i=AH;var A6=i;var A5=((A6)&4294967295);var A4=((A5)&4294967295);var A3=wg(A4);var A2=AW;var A1=((A2)&4294967295);var AZ=((A1)&4294967295);var AY=wg(AZ);var AX=(((A3)-(AY))&4294967295);AQ=AX;var AT=AQ;var AS=(((AT))|0)!=0;if(AS){AU=1}else{AU=2}if(AU==1){var AR=AQ;A7=AR}else{if(AU==2){var AP=i;var AO=((AP)&4294967295);var AN=((AO)&4294967295);var AM=AW;var AL=((AM)&4294967295);var AK=((AL)&4294967295);var AJ=pt(AK,AN);AQ=AJ;var e=AQ;var Bh=(((e))|0)!=0;if(Bh){AU=3}else{AU=4}if(AU==3){var Bg=AQ;A7=Bg}else{if(AU==4){var Bf=AW;var Be=((Bf+16)&4294967295);var Bd=uA[((Be)>>2)];var Bc=i;var Bb=((Bc+16)&4294967295);var Ba=uA[((Bb)>>2)];var A9=(((Bd)-(Ba))&4294967295);A7=A9}}}}var A0=A7;AV=A0;var A8=AV;return A8;return null}function wf(PG,Jc,Pm,Qy,AS){var Fb=vp;vp+=14364;n1(Fb,0,14364);var EV;var Ok=null;var GL;var Mq;var Jg;var Iy;var Kj;var PI;var Pv;var CW;var B5;var Ns;var I7;var O5;var LI;var NU;var B2;var LH;var DC;var Sf;var AN;var Jh;var FO;var Kn;var LG;var Ic;var Pe;var LF;var Qm;var Bz;var C5;var Cn;var I8;var LE;var Rh;var GY;var LD;var Oj;var DR;var Oy;var LC;var Ol;var Qb;var C9;var R8;var LB;var EI;var JI;var P5;var Ha=Fb;var GT;var H3;var Ji;var QJ;var S3;var Tg=Fb+4;var B7;var M9;var Jj=Fb+8;var I6=Fb+88;var Jb=Fb+240;var R6;var Oz;var AZ;var LA;var Ma;var Pf;var Je;var Lz;var Mg;var BZ;var Ed;var A8;var RJ;var Pd;var Cc;var Pk;var Eb;var ET;var Gy;var NV;var OO;var Ki;var Ms;var Tt;var Ea;var B1;var HX;var I9;var Od;var PH;var BB;var Gx;var A0=Fb+244;var GE=Fb+1044;var Ib;var B4;var Qx;var L8;var Bq;var GM;var KW;var Pl;var Ja;var OC;var AL;var Po;var Cb=Fb+1244;var IJ;var P7;var PY;var Jd;var Ca;var HB;var Fe;var CA;var JG;var FR;var PT;var HC;var B0;var D9;var NZ;var NF;var Sg;var Jk;var Pg=Fb+1756;var O0;var By;var Ph=Fb+1760;var Ec;var PF;var KR=Fb+1764;var Ps;var JK=Fb+1768;var Cd;var B9;var Pc=Fb+1772;var I5=Fb+2272;var BL;var Qw;var B6=Fb+10272;var Kx;var E9;var JE;var K1;var Ia;var P6;var Nb=Fb+13632;var BN;var OL;var Pq=Fb+13636;var L3;var P8;var BO;var IK;var Hl;var Pr;var R7;var DS;var CX;var E6;var B8;var Dp;var C7;var D8;var Da;var Dc;var MO;var KP;var DE;var J7;var MD=Fb+13640;var ON=Fb+13836;var Pp=Fb+14004;var Rq=Fb+14172;R7=PG;DS=Jc;CX=Pm;E6=Qy;B8=AS;DE=0;uA[((ei)>>2)]=0;uA[((nH)>>2)]=0;ud(((oo)&4294967295),0,26,1,0);var D6=B8;var D4=(D6)&1;uA[((jP)>>2)]=D4;var D2=R7;var D0=(D2)==0;if(D0){EV=1}else{EV=2}if(EV==1){R7=((r5)&4294967295)}var DY=CX;uA[((zs)>>2)]=DY;var DQ=(DY)==0;if(DQ){EV=3}else{EV=4}if(EV==3){var DP=uA[((ta)>>2)];uA[((zs)>>2)]=DP}var DO=((Rq)&4294967295);var DN=R7;var DM=DS;var DK=qs(DO,((zI)&4294967295),DN,DM);var DJ=((MD)&4294967295);var DH=((Rq)&4294967295);var DG=qs(DJ,((zH)&4294967295),DH);var DF=((MD)&4294967295);var DB=uE(DF,((fb)&4294967295));MO=DB;var DA=MO;var Dy=(DA)==0;var Dx=oD((Dy),1,0);Dc=Dx;var DL=iB((Dx),8,0)!=0;if(DL){EV=5}else{EV=9}$bb4$$bb9$8:do{if(EV==5){var Dw=((MD)&4294967295);var Dv=((Rq)&4294967295);var Du=qs(Dw,((zF)&4294967295),Dv);var Dt=((MD)&4294967295);var Ds=bK(Dt,((fb)&4294967295));MO=Ds;var Dr=MO;var Do=(Dr)==0;var Dn=oD((Do),1,0);Da=Dn;var Dm=Da;var OM=iB((Dm),8,0)!=0;if(!(OM)){EV=9;break $bb4$$bb9$8}var Dl=E6;var Dk=(Dl)!=0;if(Dk){EV=7}else{EV=8}if(EV==7){var Dj=E6;var Di=((MD)&4294967295);var Dh=oJ(Dj,Di)}D8=-1;EV=205;break $bb4$$bb9$8}}while(0);if(EV==9){var Dg=((ON)&4294967295);var Df=DS;var Dd=qs(Dg,((zC)&4294967295),((iU)&4294967295),47,Df);var Db=((ON)&4294967295);var C8=bK(Db,((zA)&4294967295));KP=C8;var C6=KP;var C4=(C6)==0;var C3=oD((C4),1,0);C7=C3;var Na=iB((C3),8,0)!=0;if(Na){EV=10}else{EV=13}if(EV==10){var C2=E6;var C1=(C2)!=0;if(C1){EV=11}else{EV=12}if(EV==11){var C0=E6;var CZ=((MD)&4294967295);var CV=oJ(C0,CZ)}D8=-1}else{if(EV==13){var CU=((Pp)&4294967295);var CT=qs(CU,((zz)&4294967295),((iU)&4294967295),47);J7=1024;var CS=KP;var CR=J7;IK=CS;Hl=CR;Pr=0;$bb_i$22:while(1){var CQ=Hl;var CP=(CQ)&255;var CO=IK;var CN=jR(CP,CO);var CM=Hl;var CL=(((CM))|0)>>8;Hl=CL;var CK=Pr;var CJ=(((CK)+1)&4294967295);Pr=CJ;var CI=(((CJ))|0)<=3;if(CI){EV=14;continue $bb_i$22}else{EV=15;break $bb_i$22}}var CH=KP;var CF=DE;L3=CH;P8=CF;BO=0;$bb_i4$25:while(1){var CE=P8;var CD=(CE)&255;var CC=L3;var CB=jR(CD,CC);var Cz=P8;var Cy=(((Cz))|0)>>8;P8=Cy;var Cx=BO;var Cw=(((Cx)+1)&4294967295);BO=Cw;var Cv=(((Cw))|0)<=3;if(Cv){EV=16;continue $bb_i4$25}else{EV=17;break $bb_i4$25}}BN=0;var DI=Pq;$bb_i7$28:while(1){var Cu=BN;var Ct=((bv+Cu*4)&4294967295);var Cs=uA[((Ct)>>2)];OL=Cs;var Cr=(Cs)!=0;if(Cr){EV=19}else{EV=20}$bb1_i$$bb4_i$30:do{if(EV==19){while(1){var Cq=OL;ns(DI,Cq,4,1,0);var Cp=OL;br(Cp);var Co=uA[((Pq)>>2)];OL=Co;var Cm=(Co)!=0;if(Cm){EV=19;continue}else{EV=20;break $bb1_i$$bb4_i$30}}}}while(0);var Cl=BN;var Ck=((bv+Cl*4)&4294967295);uA[((Ck)>>2)]=0;var Cj=BN;var Ci=((kC+Cj*4)&4294967295);uA[((Ci)>>2)]=0;var Ch=BN;var Cg=(((Ch)+1)&4294967295);BN=Cg;var Cf=(((Cg))|0)<=1023;if(Cf){EV=18;continue $bb_i7$28}else{EV=21;break $bb_i7$28}}var R2=uA[((rC)>>2)];var R0=((ur+R2*48)&4294967295);var RY=((R0)&4294967295);var RW=((RY)&4294967295);var RU=uA[((zs)>>2)];var RS=Am(RU,((zp)&4294967295),RW);var RQ=((Rq)&4294967295);tA(RQ,((zm)&4294967295));var RO=uA[((xy)>>2)];var RN=((RO)&4294967295);var RM=((RN+260)&4294967295);var RH=uA[((RM)>>2)];var RF=(((RH))|0)!=0;var RD=((Rq)&4294967295);if(RF){EV=22}else{EV=23}if(EV==22){tA(RD,((zk)&4294967295));var RB=((Rq)&4294967295);tA(RB,((zj)&4294967295))}else{if(EV==23){tA(RD,((zj)&4294967295));var Rz=((Rq)&4294967295);tA(Rz,((zk)&4294967295))}}var Rx=((Rq)&4294967295);tA(Rx,((zh)&4294967295));var Rv=KP;K1=Rv;Ia=0;var BA=Nb;$bb_i10$39:while(1){var Rt=Ia;var Rs=((bv+Rt*4)&4294967295);var Rr=uA[((Rs)>>2)];uA[((Nb)>>2)]=Rr;var Rm=Ia;var Rk=K1;var Ri=rn(Rk);var Rf=((kC+Rm*4)&4294967295);uA[((Rf)>>2)]=Ri;var Rd=uA[((Nb)>>2)];var Rb=(Rd)!=0;if(Rb){EV=26}else{EV=27}$bb1_i11$$bb4_i12$41:do{if(EV==26){while(1){var Q9=uA[((Nb)>>2)];var Q7=((Q9+4)&4294967295);var Q6=la[((Q7)>>0)];var Q5=iB((Q6),8,0);P6=Q5;var Q0=P6;var QY=uA[((Nb)>>2)];var QW=((QY+4)&4294967295);var QU=K1;var QS=yf(QW,Q0,1,QU);var QQ=uA[((Nb)>>2)];ns(BA,QQ,4,1,0);var QO=uA[((Nb)>>2)];var QM=(QO)!=0;if(QM){EV=26;continue}else{EV=27;break $bb1_i11$$bb4_i12$41}}}}while(0);var QL=K1;var QK=jR(0,QL);var QI=Ia;var QH=(((QI)+1)&4294967295);Ia=QH;var QG=(((QH))|0)<=1023;if(QG){EV=25;continue $bb_i10$39}else{EV=28;break $bb_i10$39}}var QF=KP;var QE=rn(QF);DE=QE;var QD=uA[((zs)>>2)];var QC=((MD)&4294967295);var QB=Am(QD,((dr)&4294967295),QC);var QA=MO;var Qz=KP;var Qv=((Pp)&4294967295);IJ=QA;P7=Qz;PY=Qv;uA[((Ph)>>2)]=0;Ec=0;Cd=0;BL=0;Qw=0;uA[((bA)>>2)]=0;la[((((ln)&4294967295))>>0)]=0;var Qu=PY;var Qt=bK(Qu,((rY)&4294967295));By=Qt;var Qs=By;var Qr=(Qs)==0;var Qq=oD((Qr),1,0);NZ=Qq;var Qp=NZ;var De=iB((Qp),8,0)!=0;if(De){EV=30}else{EV=29}if(EV==30){D9=1}else{if(EV==29){var Qo=((Pc)&4294967295);var Qn=((Jj)&4294967295);var Ql=((Jj)&4294967295);var Qj=((Jj)&4294967295);var Qi=((Jj)&4294967295);var Qh=((Jj)&4294967295);var Qg=((Jj)&4294967295);var Qf=((Jj)&4294967295);var Qe=((Jj)&4294967295);var Qd=((Jj)&4294967295);var Qc=((Jj)&4294967295);var Qa=((Jb)&4294967295);var P9=((Jb)&4294967295);var P4=((Jb)&4294967295);var P3=((I6)&4294967295);var P2=((Jj)&4294967295);var P1=((Jj)&4294967295);var P0=((I6)&4294967295);var PZ=((I5)&4294967295);var PX=((Cb)&4294967295);var PW=PX;var FU=Ph;$bb1_i17$49:while(1){var PV=uA[((bA)>>2)];var PU=(((PV)+1)&4294967295);uA[((bA)>>2)]=PU;var PS=IJ;var PR=r0(Qo,500,PS);B9=PR;var PQ=(PR)!=0;if(PQ){EV=32}else{EV=38}$bb2_i$$bb9_i$51:do{if(EV==32){var PP=B9;var PO=nr(PP,((cX)&4294967295));Sg=PO;var PN=Sg;var PM=(PN)!=0;var PL=oD((PM),1,0);B0=PL;var PK=B0;var HY=iB((PK),8,0)!=0;if(HY){EV=33}else{EV=34}if(EV==33){var PJ=Sg;la[((PJ)>>0)]=0}var PE=B9;var PD=((PE)&4294967295);var PC=la[((PD)>>0)];var PB=iB((PC),8,0)==13;if(PB){Ok=34;EV=35}else{Ok=34;EV=36}if(EV==35){var PA=B9;var Pz=((PA+1)&4294967295);B9=Pz;Ok=35}var Py=Ok==35?Pz:(PE);var Px=(Py)==0;if(Px){EV=38;break $bb2_i$$bb9_i$51}var Pw=B9;var Pu=((Pw)&4294967295);var LZ=la[((Pu)>>0)];var LX=iB((LZ),8,0)==46;if(LX){EV=38;break $bb2_i$$bb9_i$51}var LQ=Cd;if(LQ==1){EV=114}else{if(LQ==2){EV=168}else{EV=31;continue $bb1_i17$49}}if(EV==114){var LO=B9;Ol=LO;uA[((Tg)>>2)]=2;B7=0;M9=0;la[((Qn)>>0)]=0;la[((((gv)&4294967295))>>0)]=0;la[((((tg)&4294967295))>>0)]=0;la[((((a0)&4294967295))>>0)]=0;la[((((of)&4294967295))>>0)]=0;la[((((p8)&4294967295))>>0)]=0;GT=Ql;JI=0;var LM=B7;var Ly=(((LM))|0)==0;if(Ly){EV=115}else{EV=126}$bb_i25_i$$bb14_i36_i$63:do{if(EV==115){$bb_i25_i$64:while(1){var Lx=Ol;var Lw=JI;var Lu=((Lx+Lw)&4294967295);var Ls=la[((Lu)>>0)];P5=Ls;var Lq=Ol;var Lo=JI;var Lm=((Lq+Lo)&4294967295);var Lk=la[((Lm)>>0)];P5=Lk;var Lh=P5;var Ld=oD((Lh),8,0);EI=Ld;if(Ld==0){EV=119;break $bb_i25_i$64}else{if(Ld==9){EV=120}else{if(Ld==10){EV=119;break $bb_i25_i$64}else{if(Ld==13){EV=119;break $bb_i25_i$64}else{if(Ld==32){EV=120}else{if(Ld==40){EV=117}else{if(Ld==41){EV=116}else{if(Ld==63){EV=121}else{EV=124}}}}}}}}$bb11_i33_i$$bb6_i29_i$$bb2_i27_i$$bb1_i26_i$$bb7_i30_i$66:do{if(EV==124){var HM=P5;var HK=GT;la[((HK)>>0)]=HM;var HI=GT;var HG=((HI+1)&4294967295);GT=HG}else{if(EV==120){var KD=GT;la[((KD)>>0)]=0;ws(Qi,Tg);GT=Qh}else{if(EV==117){var Lb=GT;la[((Lb)>>0)]=0;uA[((Tg)>>2)]=2;ws(Qg,Tg);uA[((Tg)>>2)]=3;GT=Qf;var K9=JI;var K7=(((K9)+1)&4294967295);var K5=Ol;var K3=((K5+K7)&4294967295);var K0=la[((K3)>>0)];var KY=iB((K0),8,0)==32;if(!(KY)){EV=125;break $bb11_i33_i$$bb6_i29_i$$bb2_i27_i$$bb1_i26_i$$bb7_i30_i$66}var KV=uA[((bA)>>2)];var KQ=uA[((zs)>>2)];var KO=Am(KQ,((dh)&4294967295),KV);var KN=uA[((ei)>>2)];var KL=(((KN)+1)&4294967295);uA[((ei)>>2)]=KL}else{if(EV==116){var Lc=GT;la[((Lc)>>0)]=0;uA[((Tg)>>2)]=1;M9=1;ws(Qe,Tg);GT=Qd}else{if(EV==121){var KB=uA[((Tg)>>2)];var Kz=(((KB))|0)==2;if(Kz){EV=122}else{EV=123}if(EV==122){uA[((Tg)>>2)]=0}else{if(EV==123){var HU=P5;var HS=GT;la[((HS)>>0)]=HU;var HQ=GT;var HO=((HQ+1)&4294967295);GT=HO}}}}}}}}while(0);var CY=B7;var HE=JI;var HD=(((HE)+1)&4294967295);JI=HD;var Hy=(((CY))|0)==0;if(Hy){EV=115;continue $bb_i25_i$64}else{EV=126;break $bb_i25_i$$bb14_i36_i$63}}var KJ=GT;la[((KJ)>>0)]=0;ws(Qj,Tg);B7=1;var KH=JI;var KF=(((KH)+1)&4294967295);JI=KF}}while(0);var Hw=pt(((of)&4294967295),((df)&4294967295));var Hu=(((Hw))|0)==0;if(Hu){EV=127}else{EV=128}if(EV==127){var Hs=oJ(((of)&4294967295),((ln)&4294967295))}var Hr=la[((((of)&4294967295))>>0)];var Hq=iB((Hr),8,0)==0;if(Hq){EV=129}else{EV=132}if(EV==129){var Hp=la[((((a0)&4294967295))>>0)];var Ho=iB((Hp),8,0)!=0;if(Ho){EV=130}else{EV=131}if(EV==130){var Hn=uA[((bA)>>2)];var Hm=uA[((zs)>>2)];var Hk=Am(Hm,((de)&4294967295),Hn);var Hj=uA[((ei)>>2)];var Hi=(((Hj)+1)&4294967295);uA[((ei)>>2)]=Hi}LB=0;Qb=0;NF=0;EV=31;continue $bb1_i17$49}else{if(EV==132){var Hh=j6(((p8)&4294967295),Qc,Qa);var Hg=la[((P9)>>0)];var Hf=iB((Hg),8,0)!=0;if(Hf){EV=133}else{EV=134}if(EV==133){var He=ll[((P4)>>0)];var Hd=oD((He),8,0);var Hc=uA[((bA)>>2)];var Hb=uA[((zs)>>2)];var G8=Ol;var G7=Am(Hb,((c4)&4294967295),Hc,Hd,G8);var G6=uA[((ei)>>2)];var G5=(((G6)+1)&4294967295);uA[((ei)>>2)]=G5}var G4=oJ(P3,P2);var G3=wg(P1);var G2=(((G3)+1)&4294967295);Ji=G2;var G1=wg(((ln)&4294967295));QJ=G1;var G0=(((G1))|0)>0;if(G0){EV=135}else{EV=148}$bb23_i43_i$$bb33_i_i$91:do{if(EV==135){var GZ=QJ;var GX=l4(((of)&4294967295),((ln)&4294967295),GZ);var GW=(((GX))|0)!=0;if(!(GW)){EV=148;break $bb23_i43_i$$bb33_i_i$91}Oj=Ha;DR=((of)&4294967295);var GV=Oj;var GU=DR;var GS=F(GV,GU,0);LC=GS;var GR=LC;Oy=GR;var GQ=la[((((ln)&4294967295))>>0)];var GP=iB((GQ),8,0)!=57;if(GP){EV=145}else{EV=137}$bb27_i_i$$bb25_i45_i$94:do{if(EV==137){var GO=uA[((Ha)>>2)];Rh=GO;var GN=Rh;Cn=GN;var GJ=Cn;var GI=(((GJ))>>>0)<=255;if(GI){EV=139}else{EV=138}$iswdigit_exit_i_i_i$$iswdigit_exit_thread_i_i_i$96:do{if(EV==139){var GH=Cn;var GG=(((GH)-48)&4294967295);var GF=(((GG))>>>0)<=9;var GD=oD((GF),1,0);LE=GD;I8=GD;var GC=(((GD))|0)!=0;if(!(GC)){EV=141;break $iswdigit_exit_i_i_i$$iswdigit_exit_thread_i_i_i$96}LD=1;EV=144;break $iswdigit_exit_i_i_i$$iswdigit_exit_thread_i_i_i$96}else{if(EV==138){LE=0;I8=0;EV=141;break $iswdigit_exit_i_i_i$$iswdigit_exit_thread_i_i_i$96}}}while(0);if(EV==141){var GB=Rh;var GA=(((GB))>>>0)>2405;var Gz=Rh;var Gw=(((Gz))>>>0)<=2415;var JH=(GA)&(Gw);if(JH){EV=142}else{EV=143}if(EV==142){LD=1}else{if(EV==143){LD=0;GY=0;EV=145;break $bb27_i_i$$bb25_i45_i$94}}}GY=1;C9=1;EV=146;break $bb27_i_i$$bb25_i45_i$94}}while(0);if(EV==145){C9=0}var Gv=C9;R8=Gv;var Gu=R8;var Ce=iB((Gu),8,0)!=0;var Ox=(Ce)^1;var CG=oD((Ox),1,0);var GK=iB((CG),8,0)!=0;if(!(GK)){EV=148;break $bb23_i43_i$$bb33_i_i$91}var Gs=uA[((bA)>>2)];var Gq=uA[((zs)>>2)];var Go=Am(Gq,((c2)&4294967295),Gs,((of)&4294967295),((ln)&4294967295));var Gm=uA[((ei)>>2)];var Gk=(((Gm)+1)&4294967295);uA[((ei)>>2)]=Gk}}while(0);var Gi=Ji;var Gg=((I6+Gi)&4294967295);var Gc=oJ(Gg,((of)&4294967295));var Gb=wg(((of)&4294967295));var Ga=Ji;var F8=(((Ga)+(Gb))&4294967295);Ji=F8;var F6=uA[((jP)>>2)];var F4=(((F6))|0)!=0;if(F4){EV=149}else{EV=150}if(EV==149){var F2=Ji;var F0=((I6+F2)&4294967295);la[((F0)>>0)]=9;var FY=Ji;var FW=(((FY)+1)&4294967295);var FQ=uA[((bA)>>2)];var FP=(((FQ))|0)%255;var FN=(((FP))&255);var FL=(((FN)+1)&255);var FJ=((I6+FW)&4294967295);la[((FJ)>>0)]=FL;var FH=Ji;var FF=(((FH)+2)&4294967295);var FD=uA[((bA)>>2)];var FB=(((((FD))|0)/255)|0);var Fz=(((FB))&255);var Fu=(((Fz)+1)&255);var Ft=((I6+FF)&4294967295);la[((Ft)>>0)]=Fu;var Fs=Ji;var Fq=(((Fs)+3)&4294967295);Ji=Fq}var Fo=la[((((gv)&4294967295))>>0)];var Fm=iB((Fo),8,0)!=0;if(Fm){EV=151}else{EV=157}if(EV==151){JI=-1;var Fk=la[((((gv)&4294967295))>>0)];var Fi=iB((Fk),8,0)==33;if(Fi){EV=152}else{EV=153}if(EV==152){var Fg=wU(((gv+1)&4294967295));var Fd=(((Fg)+32)&4294967295);JI=Fd}else{if(EV==153){var BY=wU(((gv)&4294967295));JI=BY}}var BX=JI;var BW=(((BX))|0)<=0;var BV=JI;var BU=(((BV))|0)>254;var N7=(BW)|(BU);if(N7){EV=156}else{EV=155}if(EV==156){var BG=uA[((bA)>>2)];var BF=uA[((zs)>>2)];var BE=JI;var BD=Am(BF,((c1)&4294967295),BG,BE);var BC=uA[((ei)>>2)];var Bx=(((BC)+1)&4294967295);uA[((ei)>>2)]=Bx}else{if(EV==155){var BT=Ji;var BS=((I6+BT)&4294967295);la[((BS)>>0)]=5;var BR=Ji;var BQ=(((BR)+1)&4294967295);Ji=BQ;var BP=Ji;var BM=JI;var BK=(((BM))&255);var BJ=((I6+BP)&4294967295);la[((BJ)>>0)]=BK;var BI=Ji;var BH=(((BI)+1)&4294967295);Ji=BH}}}var Bw=la[((((tg)&4294967295))>>0)];var Bv=iB((Bw),8,0)!=0;if(Bv){EV=158}else{EV=163}$bb44_i_i$$bb50_i_i$124:do{if(EV==158){S3=0;var Bu=la[((((tg)&4294967295))>>0)];var Bt=iB((Bu),8,0)==32;if(Bt){EV=159}else{EV=160}if(EV==159){P5=8;S3=1}else{if(EV==160){P5=1}}var Bs=Ji;var Br=P5;var Bp=((I6+Bs)&4294967295);la[((Bp)>>0)]=Br;var Bo=Ji;var Bn=(((Bo)+1)&4294967295);Ji=Bn;var Bl=wg(((tg)&4294967295));var Bk=(((Bl)-1)&4294967295);JI=Bk;var Bj=JI;var Bi=S3;var Bh=(((Bj))|0)>=(((Bi))|0);if(!(Bh)){EV=163;break $bb44_i_i$$bb50_i_i$124}while(1){var Bg=Ji;var Bf=JI;var Be=((tg+Bf)&4294967295);var Bd=la[((Be)>>0)];var Bc=((I6+Bg)&4294967295);la[((Bc)>>0)]=Bd;var Bb=Ji;var Ba=(((Bb)+1)&4294967295);Ji=Ba;var A9=JI;var A7=(((A9)-1)&4294967295);JI=A7;var A6=JI;var A5=S3;var A4=(((A6))|0)>=(((A5))|0);if(A4){EV=162;continue}else{EV=163;break $bb44_i_i$$bb50_i_i$124}}}}while(0);var A3=la[((((a0)&4294967295))>>0)];var A2=iB((A3),8,0)!=0;if(A2){EV=164}else{EV=165}if(EV==164){var A1=Ji;var AY=((I6+A1)&4294967295);var AX=qs(AY,((c0)&4294967295),2,((a0)&4294967295));var AW=wg(((a0)&4294967295));var AV=Ji;var AU=(((AW)+1)&4294967295);var AT=(((AU)+(AV))&4294967295);Ji=AT}var AR=Ji;var AQ=((I6+AR)&4294967295);la[((AQ)>>0)]=0;var AP=Ji;var AO=(((AP)+1)&4294967295);Ji=AO;var AK=Ji;var AJ=fu(AK);H3=AJ;var AI=Ji;var i=H3;ns(i,P0,AI,1,0);var TJ=H3;LB=TJ;Qb=TJ;NF=TJ;var TH=(TJ)!=0;if(!(TH)){EV=31;continue $bb1_i17$49}var TF=uA[((Ph)>>2)];var TD=(((TF))|0)<=1999;if(!(TD)){EV=31;continue $bb1_i17$49}var TB=uA[((Ph)>>2)];var Tz=((I5+TB*4)&4294967295);var Tv=NF;uA[((Tz)>>2)]=Tv;var Tu=(((TB)+1)&4294967295);uA[((Ph)>>2)]=Tu;EV=31;continue $bb1_i17$49}}}else{if(EV==168){var Ts=B9;JE=Ts;Kx=0;E9=0;$bb59_i$139:while(1){var Tm=JE;var Tk=la[((Tm)>>0)];var Ti=iB((Tk),8,0);Ic=Ti;var Tf=Ic;var Td=(Tf)&255;C5=Td;var S9=(((Td))|0)==0;var S8=Ic;var S7=(((S8))>>>0)>32;var Pn=(S9)|(S7);if(Pn){EV=171}else{EV=172}if(EV==171){Qm=1;Bz=1;LF=0}else{if(EV==172){Qm=0;Bz=0;LF=1}}var S5=LF;Pe=S5;var G9=Pe;var S2=(((G9))|0)!=0;var S0=oD((S2),1,0);Fe=S0;var B3=iB((S0),8,0)!=0;if(!(B3)){EV=174;break $bb59_i$139}var Tq=JE;var To=((Tq+1)&4294967295);JE=To;EV=170;continue $bb59_i$139}Jk=0;var SY=JE;var SW=ll[((SY)>>0)];var SU=oD((SW),8,0)>32;if(SU){EV=175}else{EV=177}$bb62_i$$bb66_i$147:do{if(EV==175){while(1){var SS=JE;Jh=Pg;FO=SS;var SO=Jh;var SN=FO;var SM=F(SO,SN,0);LG=SM;var SK=LG;Kn=SK;var Pt=Kn;var SI=JE;var SG=((SI+Pt)&4294967295);JE=SG;var SE=uA[((Pg)>>2)];var SC=Jk;var SA=(SE)<<(SC);var Sy=Kx;var Pb=(((SA)+(Sy))&4294967295);Kx=Pb;var Pa=Jk;var O9=(((Pa)+16)&4294967295);Jk=O9;var O8=JE;var O7=ll[((O8)>>0)];var O6=oD((O7),8,0)>32;if(O6){EV=175;continue}else{EV=177;break $bb62_i$$bb66_i$147}}}}while(0);$bb66_i$150:while(1){var O2=JE;var O1=la[((O2)>>0)];var OZ=iB((O1),8,0);NU=OZ;var OY=NU;var OX=(OY)&255;AN=OX;var OW=(((OX))|0)==0;var OV=NU;var OU=(((OV))>>>0)>32;var Dz=(OW)|(OU);if(Dz){EV=178}else{EV=179}if(EV==178){DC=1;Sf=1;LH=0}else{if(EV==179){DC=0;Sf=0;LH=1}}var OT=LH;B2=OT;var E7=B2;var OS=(((E7))|0)!=0;var OQ=oD((OS),1,0);HB=OQ;var Qk=iB((OQ),8,0)!=0;if(!(Qk)){EV=181;break $bb66_i$150}var O4=JE;var O3=((O4+1)&4294967295);JE=O3;EV=177;continue $bb66_i$150}Jk=0;var OP=JE;var OK=ll[((OP)>>0)];var OJ=oD((OK),8,0)>32;if(OJ){EV=182}else{EV=183}$bb69_i$$bb71_i$158:do{if(EV==182){while(1){var OI=JE;Ns=Pg;I7=OI;var OH=Ns;var OG=I7;var OF=F(OH,OG,0);LI=OF;var OE=LI;O5=OE;var AM=O5;var OD=JE;var OB=((OD+AM)&4294967295);JE=OB;var OA=uA[((Pg)>>2)];var Ow=Jk;var Ov=(OA)<<(Ow);var Ot=E9;var Os=(((Ov)+(Ot))&4294967295);E9=Os;var Or=Jk;var Oq=(((Or)+16)&4294967295);Jk=Oq;var Op=JE;var Oo=ll[((Op)>>0)];var On=oD((Oo),8,0)>32;if(On){EV=182;continue}else{EV=183;break $bb69_i$$bb71_i$158}}}}while(0);var Om=Kx;var Oi=(((Om))|0)!=0;if(!(Oi)){EV=31;continue $bb1_i17$49}var Oh=P7;var Og=Kx;Pv=Oh;CW=Og;B5=0;$bb_i76_i$163:while(1){var Of=CW;var Oe=(Of)&255;var Oc=Pv;var Ob=jR(Oe,Oc);var Oa=CW;var N9=(((Oa))|0)>>8;CW=N9;var N8=B5;var N6=(((N8)+1)&4294967295);B5=N6;var N5=(((N6))|0)<=3;if(N5){EV=185;continue $bb_i76_i$163}else{EV=186;break $bb_i76_i$163}}var N4=P7;var N3=E9;Iy=N4;Kj=N3;PI=0;while(1){var N2=Kj;var N1=(N2)&255;var N0=Iy;var NY=jR(N1,N0);var NX=Kj;var NW=(((NX))|0)>>8;Kj=NW;var NT=PI;var NS=(((NT)+1)&4294967295);PI=NS;var NR=(((NS))|0)<=3;if(NR){EV=187;continue}else{EV=31;continue $bb1_i17$49}}}}}}while(0);var LV=uA[((Ph)>>2)];var LT=(((LV))|0)>0;if(LT){EV=39}else{EV=51}if(EV==39){var LR=BL;var LP=((B6+LR*28)&4294967295);var LN=((LP)&4294967295);var LL=((LN)&4294967295);var LK=oJ(LL,((ln)&4294967295));var LJ=BL;var Lv=uA[((ic)>>2)];var Lt=((B6+LJ*28)&4294967295);var Lr=((Lt+24)&4294967295);uA[((Lr)>>2)]=Lv;var Lp=BL;var Ln=By;var Ll=rn(Ln);var Lj=((B6+Lp*28)&4294967295);var Lg=((Lj+16)&4294967295);uA[((Lg)>>2)]=Ll;var Lf=uA[((Ph)>>2)];var Le=By;Ib=Le;B4=Lf;Qx=PZ;L8=((ln)&4294967295);ud(PW,0,512,1,0);var La=L8;var K8=wg(La);Pl=K8;Po=((r5)&4294967295);var K6=B4;var K4=Qx;var K2=K4;eI(K2,K6,4,2);var KZ=L8;var KX=pt(KZ,((dm)&4294967295));var KU=(((KX))|0)==0;if(KU){EV=40}else{EV=41}if(EV==40){Pl=0}Bq=0;var KT=Bq;var KS=B4;var KM=(((KT))|0)<(((KS))|0);if(KM){EV=42}else{EV=50}$bb2_i_i$$_ZL17output_rule_groupP8_IO_FILEiPPcS1__exit_i$174:do{if(EV==42){$bb2_i_i$175:while(1){var KK=Qx;var KI=Bq;var KG=((KK+4*KI)&4294967295);var KE=uA[((KG)>>2)];Ja=KE;var KC=Ja;var KA=wg(KC);var Ky=(((KA)+1)&4294967295);GM=Ky;var Kw=Ja;var Kv=GM;var Ku=((Kw+Kv)&4294967295);AL=Ku;var Kt=AL;var Ks=Pl;var Kr=((Kt+Ks)&4294967295);OC=Kr;var Kq=OC;var Kp=wg(Kq);KW=Kp;var Ko=OC;var Km=((Ko)&4294967295);var Kl=ll[((Km)>>0)];var Kk=oD((Kl),8,0);var Kh=((Cb+Kk*2)&4294967295);var Kg=uW[((Kh)>>1)];var Kf=(((Kg)+1)&65535);var Ke=((Cb+Kk*2)&4294967295);uW[((Ke)>>1)]=Kf;var Kd=Po;var Kc=((Kd)&4294967295);var Kb=la[((Kc)>>0)];var Ka=iB((Kb),8,0)==0;if(Ka){EV=45}else{EV=43}$bb5_i_i$$bb3_i_i$177:do{if(EV==43){var J9=Ja;var J8=Po;var J5=pt(J9,J8);var J4=(((J5))|0)!=0;if(J4){EV=45;break $bb5_i_i$$bb3_i_i$177}var J3=KW;var J2=OC;var J1=Ib;var J0=yf(J2,J3,1,J1);var JZ=Ib;var JY=jR(0,JZ);EV=49;break $bb5_i_i$$bb3_i_i$177}}while(0);if(EV==45){var JX=B4;var JW=(((JX)-1)&4294967295);var JU=Bq;var JT=(((JW))|0)>(((JU))|0);if(JT){EV=46}else{EV=48}$bb6_i_i$$bb8_i_i$182:do{if(EV==46){var JS=Bq;var JR=(((JS)+1)&4294967295);var JQ=Qx;var JP=((JQ+4*JR)&4294967295);var JO=uA[((JP)>>2)];var JN=Ja;var JM=pt(JN,JO);var JL=(((JM))|0)==0;if(!(JL)){EV=48;break $bb6_i_i$$bb8_i_i$182}var JF=Qx;var JD=Bq;var JC=((JF+4*JD)&4294967295);var JB=uA[((JC)>>2)];Po=JB;var JA=Ib;var Jz=jR(4,JA)}}while(0);var Jy=KW;var Jx=OC;var Jw=Ib;var Jv=yf(Jx,Jy,1,Jw);var Ju=Ib;var Jt=jR(3,Ju);var Js=GM;var Jr=Ja;var Jq=Ib;var Jp=yf(Jr,Js,1,Jq)}var Jo=Bq;var Jn=(((Jo)+1)&4294967295);Bq=Jn;var Jm=Bq;var Jl=B4;var Gt=(((Jm))|0)<(((Jl))|0);if(Gt){EV=42;continue $bb2_i_i$175}else{EV=50;break $bb2_i_i$$_ZL17output_rule_groupP8_IO_FILEiPPcS1__exit_i$174}}}}while(0);var Gr=BL;var Gp=By;var Gn=rn(Gp);var Gl=BL;var Gj=((B6+Gl*28)&4294967295);var Gh=((Gj+16)&4294967295);var Gf=uA[((Gh)>>2)];var Ge=(((Gn)-(Gf))&4294967295);var Gd=((B6+Gr*28)&4294967295);var F9=((Gd+20)&4294967295);uA[((F9)>>2)]=Ge;var F7=BL;var F5=(((F7)+1)&4294967295);BL=F5;var F3=uA[((Ph)>>2)];var F1=Ec;var FZ=(((F1)+(F3))&4294967295);Ec=FZ}uA[((Ph)>>2)]=0;var FX=Cd;var FV=(((FX))|0)==2;if(FV){EV=52}else{EV=53}if(EV==52){var FT=P7;var FS=yf(FU,1,4,FT);Cd=0}var FM=B9;var FK=(FM)==0;if(FK){EV=188;break $bb1_i17$49}var FI=B9;var FG=l4(FI,((cW)&4294967295),2);var FE=(((FG))|0)==0;var FC=B9;if(FE){EV=55}else{EV=87}if(EV==55){var FA=((FC+2)&4294967295);var Fy=P7;OO=FA;Ki=Fy;Gx=0;var Fx=OO;B1=Fx;var Fw=B1;var Fr=((Fw)&4294967295);var Fp=la[((Fr)>>0)];var Fn=iB((Fp),8,0);var Fl=(((Fn)-48)&4294967295);var Fj=(((Fl))>>>0)>9;if(Fj){EV=57}else{EV=56}$bb1_i6_i$$bb_i5_i$195:do{if(EV==56){var Fh=B1;var Ff=((Fh+1)&4294967295);var Fc=la[((Ff)>>0)];var Fa=iB((Fc),8,0);var E8=(((Fa)-48)&4294967295);var E5=(((E8))>>>0)>9;if(E5){EV=57;break $bb1_i6_i$$bb_i5_i$195}var EY=B1;var EX=((EY)&4294967295);var EW=wU(EX);I9=EW;var EU=I9;var ES=(((EU))|0)>25;if(ES){EV=59}else{EV=61}if(EV==59){var ER=uA[((bA)>>2)];var EQ=uA[((zs)>>2)];var EP=Am(EQ,((dj)&4294967295),ER,25);var EO=uA[((ei)>>2)];var EN=(((EO)+1)&4294967295);uA[((ei)>>2)]=EN;Ea=1;EV=31;continue $bb1_i17$49}else{if(EV==61){$bb6_i10_i$200:while(1){var EK=B1;var EJ=la[((EK)>>0)];var EH=iB((EJ),8,0);Cc=EH;var EG=Cc;var EF=(EG)&255;NV=EF;var EE=(((EF))|0)==0;var ED=Cc;var EC=(((ED))>>>0)>32;var Q4=(EE)|(EC);if(Q4){EV=62}else{EV=63}if(EV==62){ET=1;Gy=1;Eb=0}else{if(EV==63){ET=0;Gy=0;Eb=1}}var EB=Eb;Pk=EB;var DD=Pk;var EA=(((DD))|0)==0;var Ez=oD((EA),1,0);Tt=Ez;var Jf=iB((Ez),8,0)!=0;if(!(Jf)){EV=65;break $bb6_i10_i$200}var EM=B1;var EL=((EM+1)&4294967295);B1=EL;EV=61;continue $bb6_i10_i$200}var Ey=Ki;var Ex=jR(6,Ey);var Ew=Ki;var Ev=jR(18,Ew);var Eu=I9;var Et=(((Eu)+65)&4294967295);var Es=Ki;var Er=jR(Et,Es);var Eq=I9;var Ep=((oo+Eq)&4294967295);var Eo=la[((Ep)>>0)];var En=iB((Eo),8,0)!=0;if(En){EV=66}else{EV=67}if(EV==66){var Em=uA[((bA)>>2)];var El=uA[((zs)>>2)];var Ek=I9;var Ej=Am(El,((di)&4294967295),Em,Ek);var Ei=uA[((ei)>>2)];var Eh=(((Ei)+1)&4294967295);uA[((ei)>>2)]=Eh}var Eg=I9;var Ef=((oo+Eg)&4294967295);la[((Ef)>>0)]=1;PH=0;Ok=67;$bb21_i_i$211:while(1){var Sv=Ok==78?Sw:(0);var Su=(((Sv))|0)<=199;if(!(Su)){EV=85;break $bb21_i_i$211}$bb12_i_i$213:while(1){var D7=B1;var D5=la[((D7)>>0)];var D3=iB((D5),8,0);Mg=D3;var D1=Mg;var DZ=(D1)&255;Pd=DZ;var DX=(((DZ))|0)==0;var DW=Mg;var DV=(((DW))>>>0)>32;var Li=(DX)|(DV);if(Li){EV=70}else{EV=71}if(EV==70){A8=1;RJ=1;Ed=0}else{if(EV==71){A8=0;RJ=0;Ed=1}}var DU=Ed;BZ=DU;var OR=BZ;var DT=(((OR))|0)!=0;var AH=oD((DT),1,0);Ms=AH;var Ou=iB((AH),8,0)!=0;var e=B1;if(!(Ou)){EV=73;break $bb12_i_i$213}var Ee=((e+1)&4294967295);B1=Ee;EV=69;continue $bb12_i_i$213}var TI=la[((e)>>0)];var TG=iB((TI),8,0)==0;if(TG){EV=85;break $bb21_i_i$211}var TE=PH;var TC=B1;HX=TC;var TA=((A0+TE*4)&4294967295);var Ty=HX;uA[((TA)>>2)]=Ty;var Tx=B1;var Tw=la[((Tx)>>0)];var Tr=iB((Tw),8,0);var Tp=(Tr)&255;var Tn=(((Tp))|0)>32;var Tl=B1;if(Tn){Ok=74;EV=75}else{Ok=74;EV=76}$bb16_i_i$$bb18_i_i$222:do{if(EV==75){while(1){var Tj=Ok==75?S4:(Tl);var Th=((Tj+1)&4294967295);B1=Th;var Te=B1;var Tc=la[((Te)>>0)];var Tb=iB((Tc),8,0);var Ta=(Tb)&255;var S6=(((Ta))|0)>32;var S4=B1;if(S6){Ok=75;EV=75;continue}else{Ok=75;EV=76;break $bb16_i_i$$bb18_i_i$222}}}}while(0);var Pj=Ok==74?Tl:(S4);la[((Pj)>>0)]=0;var S1=B1;var SZ=((S1+1)&4294967295);B1=SZ;var SX=B1;var SV=(SX);var ST=HX;var SR=(ST);var SQ=(((SV)-(SR))&4294967295);BB=SQ;var SP=BB;var SL=Gx;var SJ=(((SP))|0)>(((SL))|0);if(SJ){EV=77}else{EV=78}if(EV==77){var SH=BB;Gx=SH}var SF=PH;var SD=BB;var SB=(((SD))&255);var Sz=((GE+SF)&4294967295);la[((Sz)>>0)]=SB;var Sx=PH;var Sw=(((Sx)+1)&4294967295);PH=Sw;Ok=78;EV=79;continue $bb21_i_i$211}var Nw=Gx;var RZ=(((Nw))|0)>1;if(RZ){EV=80}else{EV=86}$bb23_i_i$$bb30_i_i$230:do{if(EV==80){$bb23_i_i$231:while(1){Od=0;var St=Od;var Ss=PH;var Sr=(((St))|0)<(((Ss))|0);if(Sr){EV=81}else{EV=84}$bb24_i_i$$bb28_i_i$233:do{if(EV==81){while(1){var Sq=Od;var Sp=((GE+Sq)&4294967295);var So=la[((Sp)>>0)];var Sn=iB((So),8,0);var Sm=Gx;var Sl=(((Sn))|0)==(((Sm))|0);if(Sl){EV=82}else{EV=83}if(EV==82){var Sk=Gx;var Sj=Od;var Si=((A0+Sj*4)&4294967295);var Sh=uA[((Si)>>2)];var Se=Ki;var Sd=yf(Sh,1,Sk,Se)}var Sc=Od;var Sb=(((Sc)+1)&4294967295);Od=Sb;var Sa=Od;var R9=PH;var R5=(((Sa))|0)<(((R9))|0);if(R5){EV=81;continue}else{EV=84;break $bb24_i_i$$bb28_i_i$233}}}}while(0);var R4=Gx;var R3=(((R4)-1)&4294967295);Gx=R3;var R1=(((R3))|0)>1;if(R1){EV=80;continue $bb23_i_i$231}else{EV=86;break $bb23_i_i$$bb30_i_i$230}}}}while(0);var RX=Ki;var RV=jR(7,RX);Ea=0;EV=31;continue $bb1_i17$49}}}}while(0);var E3=uA[((bA)>>2)];var E2=uA[((zs)>>2)];var E1=Am(E2,((dl)&4294967295),E3);var E0=uA[((ei)>>2)];var EZ=(((E0)+1)&4294967295);uA[((ei)>>2)]=EZ;Ea=1;EV=31;continue $bb1_i17$49}else{if(EV==87){var RT=l4(FC,((cU)&4294967295),8);var RR=(((RT))|0)==0;if(RR){EV=88}else{EV=90}$bb18_i$$bb22_i$243:do{if(EV==88){Cd=2;var RP=P7;var RL=jR(6,RP);var RK=P7;var RI=jR(20,RK);var RG=P7;var RE=rn(RG);var RC=(RE)&3;var RA=(((RC))|0)!=0;var Ry=oD((RA),1,0);HC=Ry;var Ix=iB((Ry),8,0)!=0;if(!(Ix)){EV=90;break $bb18_i$$bb22_i$243}while(1){var Rw=P7;var Ru=jR(0,Rw);var Rp=P7;var Ro=rn(Rp);var Rn=(Ro)&3;var Rl=(((Rn))|0)!=0;var Rj=oD((Rl),1,0);HC=Rj;var J6=iB((Rj),8,0)!=0;if(J6){EV=89;continue}else{EV=90;break $bb18_i$$bb22_i$243}}}}while(0);var Rg=B9;var Re=l4(Rg,((cR)&4294967295),6);var Rc=(((Re))|0)==0;if(!(Rc)){EV=31;continue $bb1_i17$49}Cd=1;var Ra=B9;var Q8=((Ra+6)&4294967295);Sg=Q8;$bb25_i$249:while(1){var Q1=Sg;var QZ=((Q1)&4294967295);var QX=la[((QZ)>>0)];var QV=iB((QX),8,0)==32;if(QV){EV=92}else{EV=94}if(EV==94){var QT=Sg;var QR=((QT)&4294967295);var QP=la[((QR)>>0)];var QN=iB((QP),8,0)==9;if(!(QN)){EV=95;break $bb25_i$249}}var Q3=Sg;var Q2=((Q3+1)&4294967295);Sg=Q2;EV=93;continue $bb25_i$249}Jk=0;$bb29_i$255:while(1){var NA=Sg;var Nz=ll[((NA)>>0)];var Nt=oD((Nz),8,0)<=32;if(Nt){EV=99;break $bb29_i$255}var Nq=Jk;var No=(((Nq))|0)<=11;if(!(No)){EV=99;break $bb29_i$255}var NQ=Jk;var NO=Sg;var NM=la[((NO)>>0)];var NK=((ln+NQ)&4294967295);la[((NK)>>0)]=NM;var NI=Jk;var NG=(((NI)+1)&4294967295);Jk=NG;var ND=Sg;var NB=((ND+1)&4294967295);Sg=NB;EV=97;continue $bb29_i$255}var Nm=Jk;var Nk=((ln+Nm)&4294967295);la[((Nk)>>0)]=0;uA[((ic)>>2)]=0;var Ni=lE(((ln)&4294967295),((cO)&4294967295),JK);var Ng=(((Ni))|0)==1;var Ne=oD((Ng),1,0);PT=Ne;var JJ=iB((Ne),8,0)!=0;if(JJ){EV=100}else{EV=103}$bb33_i$$bb36_i$260:do{if(EV==100){Sg=((ln)&4294967295);var Nd=xk[((JK)>>2)];var Nc=(((Nd))>>>0)>256;if(Nc){EV=101}else{EV=102}if(EV==101){var M5=xk[((JK)>>2)];var M3=(((M5))>>>0)>>>8;var M1=(((M3))&255);var MZ=Sg;la[((MZ)>>0)]=M1;var MX=Sg;var MV=((MX+1)&4294967295);Sg=MV}var MT=uA[((JK)>>2)];var MR=(((MT))&255);var MQ=Sg;la[((MQ)>>0)]=MR;var MP=Sg;var MK=((MP+1)&4294967295);Sg=MK;var MI=Sg;la[((MI)>>0)]=0;EV=107;break $bb33_i$$bb36_i$260}else{if(EV==103){var MG=uA[((xy)>>2)];var ME=((MG+964)&4294967295);var MB=uA[((ME)>>2)];var Mz=(((MB))|0)>0;if(!(Mz)){EV=107;break $bb33_i$$bb36_i$260}Ma=KR;Pf=((ln)&4294967295);var Mx=Ma;var Mv=Pf;var Mu=F(Mx,Mv,0);Lz=Mu;var Mt=Lz;Je=Mt;var Mr=uA[((KR)>>2)];var Mp=uA[((xy)>>2)];var Mo=((Mp+964)&4294967295);var Mn=uA[((Mo)>>2)];var Mm=(((Mr)-(Mn))&4294967295);Jk=Mm;var Ml=Jk;var Mk=(((Ml))|0)<0;var Mj=Jk;var Mi=(((Mj))|0)>127;var Dq=(Mk)|(Mi);if(Dq){EV=105}else{EV=106}if(EV==105){JG=0;FR=0;EV=107;break $bb33_i$$bb36_i$260}else{if(EV==106){JG=1;FR=1;var Mh=Jk;var Mf=(((Mh)+1)&4294967295);uA[((ic)>>2)]=Mf;Ok=106;EV=108;break $bb33_i$$bb36_i$260}}}}}while(0);if(EV==107){var Bm=uA[((ic)>>2)];Ok=107}var Me=Ok==107?Bm:(Mf);var Md=(((Me))|0)==0;if(!(Md)){EV=31;continue $bb1_i17$49}var Mc=wg(((ln)&4294967295));var Mb=(((Mc))>>>0)>2;if(!(Mb)){EV=31;continue $bb1_i17$49}R6=Pg;Oz=((ln)&4294967295);var L9=R6;var L7=Oz;var L6=F(L9,L7,0);LA=L6;var L5=LA;AZ=L5;var E4=AZ;var L4=(((E4))|0)<=1;var L2=oD((L4),1,0);CA=L2;var L1=CA;var Fv=iB((L1),8,0)!=0;if(Fv){EV=111}else{EV=112}if(EV==111){var L0=uA[((bA)>>2)];var LY=uA[((zs)>>2)];var LW=Am(LY,((zP)&4294967295),L0);var LU=uA[((ei)>>2)];var LS=(((LU)+1)&4294967295);uA[((ei)>>2)]=LS}la[((((ln+2)&4294967295))>>0)]=0;EV=31;continue $bb1_i17$49}}}var NP=By;var NN=ts(NP);var NL=BL;var NJ=((B6)&4294967295);var NH=NJ;eI(NH,NL,28,4);var NE=PY;var NC=uE(NE,((zN)&4294967295));By=NC;var Nx=By;var Nv=(Nx)==0;var Nu=oD((Nv),1,0);Ca=Nu;var Nr=Ca;var Pi=iB((Nr),8,0)!=0;if(Pi){EV=189}else{EV=190}if(EV==189){D9=2}else{if(EV==190){Ps=((zM)&4294967295);O0=0;var Np=O0;var Nn=BL;var Nl=(((Np))|0)<(((Nn))|0);if(Nl){EV=191}else{EV=201}$bb78_i$$bb91_i$282:do{if(EV==191){$bb78_i$283:while(1){var Nj=O0;var Nh=((B6+Nj*28)&4294967295);var Nf=((Nh+16)&4294967295);var M8=uA[((Nf)>>2)];var M7=By;var M6=k2(M7,M8,0);var M4=O0;var M2=((B6+M4*28)&4294967295);var M0=((M2)&4294967295);var MY=((M0)&4294967295);var MW=Ps;var MU=pt(MY,MW);PF=MU;var MS=PF;var MN=(((MS))|0)!=0;var MM=oD((MN),1,0);Jd=MM;var JV=iB((MM),8,0)!=0;if(JV){EV=192}else{EV=198}if(EV==192){var ML=O0;var MJ=(((ML))|0)>0;if(MJ){EV=193}else{EV=194}if(EV==193){var MH=P7;var MF=jR(7,MH)}var MC=P7;var MA=jR(6,MC);var My=O0;var Mw=((B6+My*28)&4294967295);var I4=((Mw+24)&4294967295);var I3=uA[((I4)>>2)];var I2=(((I3))|0)!=0;if(I2){EV=195}else{EV=196}if(EV==195){var I1=Qw;var I0=(((I1)+1)&4294967295);Qw=I0;var IZ=P7;var IY=jR(1,IZ);var IX=O0;var IW=((B6+IX*28)&4294967295);var IV=((IW+24)&4294967295);var IU=uA[((IV)>>2)];var IT=P7;var IS=jR(IU,IT)}else{if(EV==196){var IR=O0;var IQ=((B6+IR*28)&4294967295);var IP=((IQ)&4294967295);var IO=((IP)&4294967295);Ps=IO;var IN=Ps;var IM=P7;var IL=jJ(IN,IM)}}var II=P7;var IH=jR(0,II)}var IG=O0;var IF=((B6+IG*28)&4294967295);var IE=((IF+20)&4294967295);var ID=uA[((IE)>>2)];Jk=ID;var IC=(((ID))|0)>0;if(IC){EV=199}else{EV=200}$bb87_i$$bb89_i$295:do{if(EV==199){while(1){var IB=By;var IA=sd(IB);uA[((Pg)>>2)]=IA;var Iz=uA[((Pg)>>2)];var Iw=P7;var Iv=jR(Iz,Iw);var Iu=Jk;var It=(((Iu)-1)&4294967295);Jk=It;var Is=(((It))|0)>0;if(Is){EV=199;continue}else{EV=200;break $bb87_i$$bb89_i$295}}}}while(0);var Ir=O0;var Iq=(((Ir)+1)&4294967295);O0=Iq;var Ip=O0;var Io=BL;var In=(((Ip))|0)<(((Io))|0);if(In){EV=191;continue $bb78_i$283}else{EV=201;break $bb78_i$$bb91_i$282}}}}while(0);var Im=P7;var Il=jR(7,Im);var Ik=P7;var Ij=jR(0,Ik);var Ii=By;var Ih=ts(Ii);var Ig=PY;var If=nA(Ig);var Ie=uA[((zs)>>2)];var Id=Ec;var H9=BL;var H8=Qw;var H7=Am(Ie,((zJ)&4294967295),Id,H9,H8);D9=0}}}}var H6=MO;var H5=ts(H6);var H4=KP;var H2=k2(H4,4,0);var H1=KP;var H0=DE;GL=H1;Mq=H0;Jg=0;while(1){var HZ=Mq;var HW=(HZ)&255;var HV=GL;var HT=jR(HW,HV);var HR=Mq;var HP=(((HR))|0)>>8;Mq=HP;var HN=Jg;var HL=(((HN)+1)&4294967295);Jg=HL;var HJ=(((HL))|0)<=3;if(HJ){EV=203;continue}else{EV=204;break}}var HH=KP;var HF=ts(HH);var HA=uA[((xy)>>2)];var Hz=DS;var Hx=io(HA,Hz,0);var Hv=uA[((ei)>>2)];D8=Hv}}}var Ht=D8;Dp=Ht;var Ny=Dp;vp=Fb;return Ny;return null}function kR(AJ){var AH;var AK;var AI;var i;AK=AJ;var e=AK;i=e;var AM=i;AI=AM;var AL=AI;return AL;return null}function ca(AT){var AV;var AZ=null;var AR;var AW;var Bf;var AU;var i;var AY;var Bp;AR=AT;AY=0;Bp=0;var Be=AR;var Bd=la[((Be)>>0)];var Bc=iB((Bd),8,0);var Bb=(Bc)&255;i=Bb;var Ba=i;var A9=(((Ba))|0)!=0;var A7=oD((A9),1,0);AU=A7;var A5=AR;var A3=((A5+1)&4294967295);AR=A3;var AQ=Bp;if(A9){AZ=-1;AV=1}else{AZ=-1;AV=2}$bb$$bb2$2:do{if(AV==1){while(1){var AP=AZ==1?A6:(AQ);var AO=(((AP)*8)&4294967295);var AN=i;var AM=(((AN)+(AO))&4294967295);Bp=AM;var AL=Bp;var AK=(AL)&1023;var AJ=Bp;var AI=(((AJ))|0)>>8;var AH=(AI)^(AK);Bp=AH;var e=AY;var Bq=(((e)+1)&4294967295);AY=Bq;var Bo=AR;var Bn=la[((Bo)>>0)];var Bm=iB((Bn),8,0);var Bl=(Bm)&255;i=Bl;var Bk=i;var Bj=(((Bk))|0)!=0;var Bi=oD((Bj),1,0);AU=Bi;var Bh=AR;var A8=((Bh+1)&4294967295);AR=A8;var AX=iB((Bi),8,0)!=0;var A6=Bp;if(AX){AZ=1;AV=1;continue}else{AZ=1;AV=2;break $bb$$bb2$2}}}}while(0);var AS=AZ==-1?AQ:(A6);var A4=AY;var A2=(((A4)+(AS))&4294967295);var A1=(A2)&1023;Bf=A1;var A0=Bf;AW=A0;var Bg=AW;return Bg;return null}function o0(Eu,C4,AN,Er,Bt,AM){var Cn;var Db=null;var C3;var BS;var BD;var D5;var DT;var AQ;var AH;var Et;var D7;var CE;var Eo;var BR;var Cc;var AL;var DA;var DO;var D4;var DS;var DR;var BX;C3=Eu;BS=C4;BD=AN;D5=Er;DT=Bt;AQ=AM;var Es=BS;AL=Es;DA=1;DO=-1;DR=-1;BX=0;var Eq=BD;var Ep=((Eq)&4294967295);la[((Ep)>>0)]=1;$bb42$2:while(1){var C2=BS;var C1=la[((C2)>>0)];BR=C1;var C0=BR;var CZ=iB((C0),8,0)!=0;var CY=oD((CZ),1,0);var CX=BS;var CW=((CX+1)&4294967295);BS=CW;var Dk=iB((CY),8,0)!=0;var Ds=(Dk)^1;var Bv=oD((Ds),1,0);var De=iB((Bv),8,0)!=0;if(De){Cn=39;break $bb42$2}var CV=DA;var CT=(((CV))|0)>78;if(CT){Cn=39;break $bb42$2}CE=1;Eo=1;var En=BR;var Em=oD((En),8,0);var El=((nm+Em*4)&4294967295);var Ek=uA[((El)>>2)];Cc=Ek;var Ej=Cc;var Ei=(Ej)==0;var Di=oD((Ei),1,0);D7=Di;var Dg=D7;var BT=iB((Dg),8,0)!=0;if(BT){Cn=37;continue $bb42$2}var Dd=Cc;var Dc=((Dd+11)&4294967295);var Da=la[((Dc)>>0)];var C9=iB((Da),8,0)==1;if(C9){Cn=3}else{Cn=22}$bb2$$bb25$7:do{if(Cn==3){var C8=Cc;var C7=((C8+8)&4294967295);var C6=uW[((C7)>>1)];var C5=iB((C6),16,0)==0;if(!(C5)){Cn=22;break $bb2$$bb25$7}var CU=BR;var CS=iB((CU),8,0)==8;if(CS){Cn=5}else{Cn=18}if(Cn==5){var CQ=DA;var CP=(((CQ)-1)&4294967295);DS=CP;Db=5;$bb16$12:while(1){var Bx=Db==14?By:(CP);var Bw=(((Bx))|0)<=0;if(Bw){Cn=37;continue $bb42$2}var Bl=DT;var Bj=uA[((Bl)>>2)];var Bh=(((Bj))|0)!=0;if(Bh){Cn=37;continue $bb42$2}var Bg=BD;var Bf=DS;var Be=((Bg+Bf)&4294967295);var Bd=la[((Be)>>0)];var Bc=iB((Bd),8,0)<=3;if(!(Bc)){Cn=37;continue $bb42$2}var CO=BD;var CN=DS;var CM=((CO+CN)&4294967295);var CL=la[((CM)>>0)];var CK=iB((CL),8,0)!=0;if(CK){Cn=7}else{Cn=14}if(Cn==7){var CJ=BD;var Cz=DS;var Cx=((CJ+Cz)&4294967295);var Cv=la[((Cx)>>0)];var Cu=iB((Cv),8,0)!=1;if(Cu){Cn=8;break $bb16$12}}var Bz=DS;var By=(((Bz)-1)&4294967295);DS=By;Db=14;Cn=15;continue $bb16$12}var Ct=BD;var Cs=DS;var Cr=((Ct+Cs)&4294967295);la[((Cr)>>0)]=4;var Cq=DO;var Cp=(((Cq))|0)<=3;if(Cp){Cn=9}else{Cn=10}if(Cn==9){DO=4;var Co=DS;BX=Co}D4=1;var Ce=D4;var Cb=DS;var B8=(((Ce))|0)<(((Cb))|0);if(!(B8)){Cn=37;continue $bb42$2}while(1){var B6=BD;var B4=D4;var B2=((B6+B4)&4294967295);var B0=la[((B2)>>0)];var BY=iB((B0),8,0)==4;if(BY){Cn=12}else{Cn=13}if(Cn==12){var BV=BD;var BU=D4;var BI=((BV+BU)&4294967295);la[((BI)>>0)]=3}var BG=D4;var BE=(((BG)+1)&4294967295);D4=BE;var BC=D4;var BB=DS;var BA=(((BC))|0)<(((BB))|0);if(BA){Cn=11;continue}else{Cn=37;continue $bb42$2}}}else{if(Cn==18){var Bb=Cc;var Ba=((Bb+14)&4294967295);var A1=ll[((Ba)>>0)];var AZ=oD((A1),8,0)<=3;if(AZ){Cn=20}else{Cn=19}if(Cn==19){var AX=DT;var AW=uA[((AX)>>2)];var AV=(((AW))|0)==0;if(!(AV)){Cn=37;continue $bb42$2}}var AU=Cc;var AT=((AU+14)&4294967295);var AS=ll[((AT)>>0)];var AR=oD((AS),8,0);DR=AR;var AP=DR;var AK=DO;var AJ=(((AP))|0)>(((AK))|0);if(!(AJ)){Cn=37;continue $bb42$2}var AI=DR;DO=AI;Cn=37;continue $bb42$2}}}}while(0);var i=Cc;var e=((i+11)&4294967295);var Ez=la[((e)>>0)];var Ey=iB((Ez),8,0)!=2;if(Ey){Cn=32}else{Cn=23}$bb36$$bb26$35:do{if(Cn==23){var Ex=Cc;var Ew=((Ex+4)&4294967295);var Ev=uA[((Ew)>>2)];var Eh=(Ev)&1048576;var Eg=(((Eh))|0)!=0;if(Eg){Cn=32;break $bb36$$bb26$35}var Ef=DR;var Ee=(((Ef))&255);var Ed=BD;var Ec=DA;var Eb=((Ed+Ec)&4294967295);la[((Eb)>>0)]=Ee;var Ea=DR;var D9=(((Ea))|0)>3;if(D9){Db=24;Cn=25}else{Db=24;Cn=27}$bb28$$bb30$38:do{if(Cn==25){var D8=DR;var D3=DO;var D2=(((D8))|0)>=(((D3))|0);if(D2){Db=25}else{Db=25;Cn=27;break $bb28$$bb30$38}var D1=DA;BX=D1;var D0=DR;DO=D0;Db=26}}while(0);var DZ=Db==26?D0:(Db==25?D8:(Ea));var DY=(((DZ))|0)<0;if(DY){Cn=28}else{Cn=31}$bb31$$bb35$42:do{if(Cn==28){var DX=AQ;var DW=(DX)&1;var DV=(((DW))&255);var Dy=iB((DV),8,0)!=0;if(!(Dy)){Cn=31;break $bb31$$bb35$42}var DU=Cc;var DQ=((DU+4)&4294967295);var DP=uA[((DQ)>>2)];var DN=(DP)&2;var DM=(((DN))|0)!=0;if(!(DM)){Cn=31;break $bb31$$bb35$42}var DL=BD;var DK=DA;var DJ=((DL+DK)&4294967295);la[((DJ)>>0)]=1}}while(0);var DI=DA;var DH=(((DI)+1)&4294967295);DA=DH;DR=-1;Cn=36;break $bb36$$bb26$35}}while(0);$bb36$$bb41$47:do{if(Cn==32){var DG=BR;var DF=iB((DG),8,0)==20;if(!(DF)){Cn=36;break $bb36$$bb41$47}var DE=DR;var DD=(((DE))&255);var DC=BD;var DB=DA;var Dz=((DC+DB)&4294967295);la[((Dz)>>0)]=DD;var Dx=DR;var Dw=(((Dx))|0)==0;if(!(Dw)){Cn=36;break $bb36$$bb41$47}var Dv=AQ;var Du=(Dv)&1;var Dr=(((Du))&255);var Dt=iB((Dr),8,0)!=0;if(!(Dt)){Cn=36;break $bb36$$bb41$47}var Dq=BD;var Dp=DA;var Do=((Dq+Dp)&4294967295);la[((Do)>>0)]=1;var Dn=DA;var Dm=(((Dn)+1)&4294967295);DA=Dm}}while(0);var Dl=AL;var Dj=BR;la[((Dl)>>0)]=Dj;var Dh=AL;var Df=((Dh+1)&4294967295);AL=Df;Cn=37;continue $bb42$2}CE=0;Eo=0;var CR=BD;var CI=DA;var CH=((CR+CI)&4294967295);la[((CH)>>0)]=1;var CG=AL;la[((CG)>>0)]=0;var CF=DT;var CD=uA[((CF)>>2)];var CC=(((CD))|0)>0;if(CC){Cn=40}else{Cn=43}$bb53$$bb56$54:do{if(Cn==40){var CB=DT;var CA=uA[((CB)>>2)];var Cy=DA;var Cw=(((CA))|0)>=(((Cy))|0);if(Cw){Cn=41}else{Cn=42}if(Cn==41){var Cm=DA;var Cl=(((Cm)-1)&4294967295);var Ck=DT;uA[((Ck)>>2)]=Cl}var Cj=DT;var Ci=uA[((Cj)>>2)];var Ch=BD;var Cg=((Ch+Ci)&4294967295);la[((Cg)>>0)]=4;DO=4;var Cf=DT;var Cd=uA[((Cf)>>2)];BX=Cd}else{if(Cn==43){var AO=DO;var Ca=(((AO))|0)==5;if(!(Ca)){Cn=53;break $bb53$$bb56$54}D4=1;var BQ=D4;var BP=DA;var BO=(((BQ))|0)<(((BP))|0);if(BO){Cn=45}else{Cn=52}$bb58$$bb66$61:do{if(Cn==45){while(1){var BN=BD;var BM=D4;var BL=((BN+BM)&4294967295);var BK=la[((BL)>>0)];var BJ=iB((BK),8,0)==4;if(BJ){Cn=46}else{Cn=49}if(Cn==46){var BH=C3;var BF=((BH)&4294967295);var Bu=((BF+12)&4294967295);var Bs=uA[((Bu)>>2)];var Br=(Bs)&131072;var Bq=(((Br))|0)!=0;var Bp=BD;var Bo=D4;var Bn=((Bp+Bo)&4294967295);if(Bq){Cn=47}else{Cn=48}if(Cn==47){la[((Bn)>>0)]=1}else{if(Cn==48){la[((Bn)>>0)]=3}}}var Bm=BD;var Bk=D4;var Bi=((Bm+Bk)&4294967295);var A9=la[((Bi)>>0)];var A8=iB((A9),8,0)==5;if(A8){Cn=50}else{Cn=51}if(Cn==50){var A7=BD;var A6=D4;var A5=((A7+A6)&4294967295);la[((A5)>>0)]=4;var A4=D4;BX=A4}var A3=D4;var A2=(((A3)+1)&4294967295);D4=A2;var A0=D4;var AY=DA;var B9=(((A0))|0)<(((AY))|0);if(B9){Cn=45;continue}else{Cn=52;break $bb58$$bb66$61}}}}while(0);DO=4}}}while(0);var B7=DT;var B5=BX;uA[((B7)>>2)]=B5;var B3=D5;var B1=DA;uA[((B3)>>2)]=B1;var BZ=DO;Et=BZ;var BW=Et;AH=BW;var D6=AH;return D6;return null}function m8(Bb,Hj,CV,DO,Lb){var BL=vp;vp+=408;n1(BL,0,408);var Ba;var KP=null;var GV;var HD;var La;var NO;var DN;var Ju;var Mg;var MB;var JP;var MO;var J0;var MR;var No;var LG;var Cb;var BZ;var Ck;var KB;var Iu=BL;var C0;var B9;var DP;var Lz=BL+4;var En;var Ci;var Op;var Ds;var Ij;var GQ;var Lu;var CC;var B7;var DQ;var LK;var Bz;var Cy;var Ls=BL+8;var CU=BL+88;var B8=BL+168;var BK=BL+248;var LS;var GA;var N4;var EV;var Kc;var Jt;GV=Bb;HD=Hj;La=CV;NO=DO;DN=Lb;Ci=0;Bz=0;var CK=GV;var CI=((CK)&4294967295);var CH=((CI+12)&4294967295);var CG=uA[((CH)>>2)];LK=CG;var CF=La;var CE=(CF)!=0;if(CE){Ba=1}else{Ba=2}if(Ba==1){var CD=La;var CB=((CD)&4294967295);var CA=uA[((CB)>>2)];Bz=CA}C0=0;KP=2;$bb6$5:while(1){var Gh=KP==6?Gi:(0);var Gg=(((Gh))|0)<=159;var F3=C0;if(Gg){KP=7}else{KP=7;Ba=8;break $bb6$5}var Cz=HD;var GK=C0;var GJ=((Cz+GK)&4294967295);var GI=la[((GJ)>>0)];var GH=((BK+F3)&4294967295);la[((GH)>>0)]=GI;var GG=C0;var GF=((BK+GG)&4294967295);var GE=ll[((GF)>>0)];var GD=oD((GE),8,0);var GC=uA[((rW)>>2)];var GB=(((GD))|0)>=(((GC))|0);if(GB){Ba=4}else{Ba=5}if(Ba==4){var Gp=C0;var Go=((BK+Gp)&4294967295);la[((Go)>>0)]=13}var Gn=C0;var Gm=((BK+Gn)&4294967295);var Gl=la[((Gm)>>0)];var Gk=iB((Gl),8,0)==0;if(Gk){KP=5;Ba=8;break $bb6$5}else{KP=5}var Gj=C0;var Gi=(((Gj)+1)&4294967295);C0=Gi;KP=6;Ba=7;continue $bb6$5}var F2=KP==5?Gn:(F3);var F1=(((F2))|0)==0;if(F1){Ba=225}else{Ba=9}if(Ba==9){var F0=C0;var FZ=(((F0)-1)&4294967295);var FY=((BK+FZ)&4294967295);var FX=ll[((FY)>>0)];var FW=oD((FX),8,0);Ds=FW;var FV=C0;var FU=(((FV)-2)&4294967295);var Fx=((BK+FU)&4294967295);var Fw=ll[((Fx)>>0)];var Fv=oD((Fw),8,0);Ij=Fv;var Fu=HD;var Ft=((Fu+157)&4294967295);Op=Ft;var Fs=Bz;var Fr=(Fs)&7;uA[((Lz)>>2)]=Fr;var Fq=Bz;var Fp=(Fq)&8;var Fo=(((Fp))|0)!=0;if(Fo){Ba=10}else{Ba=11}if(Ba==10){var E3=Bz;var E2=(E3)&3;uA[((Lz)>>2)]=E2;Ci=1}var E1=GV;var E0=((BK)&4294967295);var EZ=((Ls)&4294967295);var EY=o0(E1,E0,EZ,Iu,Lz,1);KB=EY;var EX=(((EY))|0)<0;if(EX){Ba=12}else{Ba=17}$bb11$$bb16$18:do{if(Ba==12){var EW=La;var EU=(EW)!=0;if(!(EU)){Ba=17;break $bb11$$bb16$18}var ET=GV;var Ey=((ET)&4294967295);var Ex=((Ey+12)&4294967295);var Ew=uA[((Ex)>>2)];var Ev=(Ew)&1;var Eu=(((Ev))&255);var M0=iB((Eu),8,0)!=0;if(M0){Ba=14}else{Ba=16}$bb13$$bb15$21:do{if(Ba==14){var Et=uA[((Iu)>>2)];var Es=(((Et))|0)==2;if(!(Es)){Ba=16;break $bb13$$bb15$21}var Er=((Ls+1)&4294967295);la[((Er)>>0)]=0;var Ep=La;var Eo=((Ep)&4294967295);var D0=uA[((Eo)>>2)];var DZ=(D0)|4096;var DY=La;var DX=((DY)&4294967295);uA[((DX)>>2)]=DZ}}while(0);KB=0}}while(0);C0=1;var DW=((BK)&4294967295);Cb=DW;var DV=Cb;var DU=la[((DV)>>0)];var DT=iB((DU),8,0)!=0;if(DT){Ba=18}else{Ba=33}$bb17$$bb33$26:do{if(Ba==18){$bb17$27:while(1){var DS=Cb;var DR=((DS)&4294967295);var DC=ll[((DR)>>0)];var DB=oD((DC),8,0);var DA=((nm+DB*4)&4294967295);var Dz=uA[((DA)>>2)];var Dy=((Dz+11)&4294967295);var Dx=la[((Dy)>>0)];var Dw=iB((Dx),8,0)==2;if(Dw){Ba=19}else{Ba=32}$bb18$$bb31$29:do{if(Ba==19){var Dv=Cb;var Du=((Dv)&4294967295);var Dt=ll[((Du)>>0)];var Dh=oD((Dt),8,0);var Dg=((nm+Dh*4)&4294967295);var Df=uA[((Dg)>>2)];var De=((Df+4)&4294967295);var Dd=uA[((De)>>2)];var Dc=(Dd)&1048576;var Db=(((Dc))|0)==0;if(!(Db)){Ba=32;break $bb18$$bb31$29}LS=0;GA=0;var Da=Cb;var C9=((Da+1)&4294967295);var C8=ll[((C9)>>0)];var JM=oD((C8),8,0);var JK=((nm+JM*4)&4294967295);var JI=uA[((JK)>>2)];var JG=((JI+10)&4294967295);var JE=la[((JG)>>0)];var JC=iB((JE),8,0)==12;if(JC){Ba=21}else{Ba=22}$bb21_thread$$bb21$32:do{if(Ba==21){GA=1;Ba=24;break $bb21_thread$$bb21$32}else{if(Ba==22){var J5=GA;var JA=(((J5))|0)!=0;if(JA){Ba=24;break $bb21_thread$$bb21$32}var Jy=Cb;var Jw=((Jy)&4294967295);var Jv=ll[((Jw)>>0)];var Jq=oD((Jv),8,0);var Jo=((nm+Jq*4)&4294967295);var Jm=uA[((Jo)>>2)];var Jk=((Jm+4)&4294967295);var Ji=uA[((Jk)>>2)];var Jg=(Ji)&2097152;var Je=(((Jg))|0)!=0;if(Je){Ba=24;break $bb21_thread$$bb21$32}else{Ba=25;break $bb21_thread$$bb21$32}}}}while(0);if(Ba==24){var Jc=LS;var Ja=(((Jc)+1)&4294967295);LS=Ja}var I9=C0;var I6=LS;var I4=(((I6))&255);var I2=((B8+I9)&4294967295);la[((I2)>>0)]=I4;var I0=GA;var IY=(((I0))|0)!=0;if(IY){Ba=26}else{Ba=27}if(Ba==26){var IW=Cb;var IU=((IW+1)&4294967295);Cb=IU}var IS=Cb;var IQ=((IS+1)&4294967295);var IP=ll[((IQ)>>0)];var IM=oD((IP),8,0);var IK=((nm+IM*4)&4294967295);var II=uA[((IK)>>2)];var IG=((II+11)&4294967295);var IE=ll[((IG)>>0)];var IC=oD((IE),8,0);var IA=((qW+IC)&4294967295);var Iy=la[((IA)>>0)];var Iw=iB((Iy),8,0)!=0;if(Iw){Ba=28}else{Ba=31}$bb27$$bb30$42:do{if(Ba==28){var Iv=Cb;var It=((Iv+2)&4294967295);var Is=ll[((It)>>0)];var Ir=oD((Is),8,0);var Iq=((nm+Ir*4)&4294967295);var Ip=uA[((Iq)>>2)];var Io=((Ip+11)&4294967295);var In=la[((Io)>>0)];var Im=iB((In),8,0)!=2;if(Im){Ba=30}else{Ba=29}if(Ba==29){var Il=Cb;var Ik=((Il+1)&4294967295);var Ii=ll[((Ik)>>0)];var Ih=oD((Ii),8,0);var Ig=((nm+Ih*4)&4294967295);var If=uA[((Ig)>>2)];var Ie=((If+4)&4294967295);var Id=uA[((Ie)>>2)];var Ic=(Id)&2097152;var Ib=(((Ic))|0)!=0;if(!(Ib)){Ba=31;break $bb27$$bb30$42}}var Ia=LS;var H9=(((Ia)+1)&4294967295);LS=H9}}while(0);var H8=C0;var H7=LS;var H6=(((H7))&255);var H5=((CU+H8)&4294967295);la[((H5)>>0)]=H6;var H4=C0;var H3=(((H4)+1)&4294967295);C0=H3}}while(0);var H2=Cb;var H1=((H2+1)&4294967295);Cb=H1;var H0=Cb;var HZ=la[((H0)>>0)];var HO=iB((HZ),8,0)!=0;if(HO){Ba=18;continue $bb17$27}else{Ba=33;break $bb17$$bb33$26}}}}while(0);var HN=GV;var HM=((HN)&4294967295);var HL=((HM+8)&4294967295);var HK=uA[((HL)>>2)];if(HK==1){Ba=36}else{if(HK==2){Ba=44}else{if(HK==3){Ba=68}else{if(HK==4){Ba=75}else{if(HK==5){Ba=81}else{if(HK==6){Ba=89}else{if(HK==7){Ba=101}else{if(HK==8){Ba=34}else{if(HK==9){Ba=108}else{if(HK==10){Ba=41}else{Ba=112}}}}}}}}}}$bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50:do{if(Ba==68){var Mb=uA[((Lz)>>2)];var Ma=(((Mb))|0)==0;if(!(Ma)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var L9=uA[((Iu)>>2)];var L8=(((L9)-1)&4294967295);uA[((Lz)>>2)]=L8;KP=69;while(1){var LP=KP==72?LQ:(L8);var LO=(((LP))|0)>0;if(!(LO)){Ba=74;break}var LX=uA[((Lz)>>2)];var LW=((Ls+LX)&4294967295);var LV=la[((LW)>>0)];var LU=iB((LV),8,0)<0;var LT=uA[((Lz)>>2)];if(LU){Ba=71;break}var LQ=(((LT)-1)&4294967295);uA[((Lz)>>2)]=LQ;KP=72;Ba=73;continue}if(Ba==71){var LR=((Ls+LT)&4294967295);la[((LR)>>0)]=4}KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{if(Ba==75){var LN=uA[((Lz)>>2)];var FS=(((LN))|0)==0;if(!(FS)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var FQ=uA[((Iu)>>2)];var FO=(((FQ)-3)&4294967295);uA[((Lz)>>2)]=FO;var FM=uA[((Lz)>>2)];var FK=(((FM))|0)<=0;if(FK){Ba=77}else{Ba=78}if(Ba==77){uA[((Lz)>>2)]=1}var FI=KB;var FG=(((FI))|0)==0;if(FG){Ba=79}else{Ba=80}if(Ba==79){var FE=uA[((Lz)>>2)];var FC=((Ls+FE)&4294967295);la[((FC)>>0)]=4}KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{if(Ba==81){var FA=uA[((Lz)>>2)];var Fm=(((FA))|0)==0;if(!(Fm)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var Fk=uA[((Iu)>>2)];var Fi=(((Fk)-3)&4294967295);uA[((Lz)>>2)]=Fi;var Fg=uA[((Iu)>>2)];var Fe=(((Fg))|0)<=15;if(Fe){Ba=83}else{Ba=88}if(Ba==83){var Fc=Ds;var Fa=((nm+Fc*4)&4294967295);var E8=uA[((Fa)>>2)];var E6=((E8+11)&4294967295);var E4=la[((E6)>>0)];var ER=iB((E4),8,0)==2;if(ER){Ba=84}else{Ba=85}if(Ba==84){var EP=uA[((Iu)>>2)];var EN=((no+EP)&4294967295);var EL=la[((EN)>>0)];var EJ=iB((EL),8,0);uA[((Lz)>>2)]=EJ}else{if(Ba==85){var EH=Ds;var EF=((nm+EH*4)&4294967295);var ED=uA[((EF)>>2)];var EB=((ED+11)&4294967295);var Ez=la[((EB)>>0)];var El=iB((Ez),8,0)==4;var Ej=uA[((Iu)>>2)];if(El){Ba=86}else{Ba=87}if(Ba==86){var Eh=((nq+Ej)&4294967295);var Ef=la[((Eh)>>0)];var Ed=iB((Ef),8,0);uA[((Lz)>>2)]=Ed}else{if(Ba==87){var Ea=((ms+Ej)&4294967295);var D8=la[((Ea)>>0)];var D6=iB((D8),8,0);uA[((Lz)>>2)]=D6}}}}}var D3=uA[((Lz)>>2)];var D1=((Ls+D3)&4294967295);la[((D1)>>0)]=4;KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{if(Ba==89){var DM=uA[((Lz)>>2)];var DL=(((DM))|0)==0;if(!(DL)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}EV=-1;C0=1;var DK=uA[((Iu)>>2)];var DJ=(((DK)-1)&4294967295);var DI=C0;var DH=(((DJ))|0)>(((DI))|0);if(DH){Ba=91}else{Ba=95}$bb100$$bb106$81:do{if(Ba==91){$bb100$82:while(1){var DG=C0;var DF=((Ls+DG)&4294967295);var DE=la[((DF)>>0)];var DD=iB((DE),8,0)<0;if(DD){Ba=92}else{Ba=94}$bb101$$bb104$84:do{if(Ba==92){var Dr=C0;var Dq=((CU+Dr)&4294967295);var Dp=la[((Dq)>>0)];var Do=iB((Dp),8,0);N4=Do;var Dn=N4;var Dm=EV;var Dl=(((Dn))|0)>=(((Dm))|0);var Dk=oD((Dl),1,0);No=Dk;var Dj=No;var Br=iB((Dj),8,0)!=0;if(!(Br)){Ba=94;break $bb101$$bb104$84}var Di=N4;EV=Di;var C7=uA[((Lz)>>2)];Kc=C7;var C6=C0;uA[((Lz)>>2)]=C6}}while(0);var C5=C0;var C4=(((C5)+1)&4294967295);C0=C4;var C3=uA[((Iu)>>2)];var C2=(((C3)-1)&4294967295);var C1=C0;var CZ=(((C2))|0)>(((C1))|0);if(CZ){Ba=91;continue $bb100$82}else{Ba=95;break $bb100$$bb106$81}}}}while(0);var CY=uA[((Iu)>>2)];var CX=(((CY)-1)&4294967295);var CT=((CU+CX)&4294967295);var CS=la[((CT)>>0)];var CR=iB((CS),8,0)!=2;var J2=EV;if(CR){Ba=98}else{Ba=96}$bb109$$bb107$89:do{if(Ba==98){var CN=(((J2))|0)<=0;if(!(CN)){Ba=100;break $bb109$$bb107$89}uA[((Lz)>>2)]=1}else{if(Ba==96){var CQ=(((J2))|0)>1;if(CQ){Ba=100;break $bb109$$bb107$89}var CP=uA[((Iu)>>2)];var CO=(((CP)-1)&4294967295);uA[((Lz)>>2)]=CO}}}while(0);var CM=uA[((Lz)>>2)];var CL=((Ls+CM)&4294967295);la[((CL)>>0)]=4;KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{if(Ba==101){var CJ=uA[((Lz)>>2)];var Cx=(((CJ))|0)==0;if(!(Cx)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var Cw=uA[((Iu)>>2)];var Cv=(((Cw)-1)&4294967295);uA[((Lz)>>2)]=Cv;C0=1;while(1){var Cn=uA[((Iu)>>2)];var Cm=C0;var Cl=(((Cm))|0)<(((Cn))|0);if(!(Cl)){Ba=107;break}var Cu=C0;var Ct=((Ls+Cu)&4294967295);var Cs=la[((Ct)>>0)];var Cr=iB((Cs),8,0)==1;var Cq=C0;if(Cr){Ba=104;break}var Co=(((Cq)+1)&4294967295);C0=Co;Ba=106;continue}if(Ba==104){var Cp=(((Cq)-1)&4294967295);uA[((Lz)>>2)]=Cp}var Cj=uA[((Lz)>>2)];var Ch=((Ls+Cj)&4294967295);la[((Ch)>>0)]=4;KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{if(Ba==34){var HJ=((CU+1)&4294967295);var HI=la[((HJ)>>0)];var HH=iB((HI),8,0)>0;if(HH){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var HG=((CU+2)&4294967295);var HF=la[((HG)>>0)];var Ht=iB((HF),8,0)==0;if(Ht){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}else{Ba=36;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}}else{if(Ba==108){C0=1;var Cg=uA[((Iu)>>2)];var Cf=C0;var Ce=(((Cf))|0)<(((Cg))|0);if(!(Ce)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}while(1){var Cd=C0;var Cc=((Ls+Cd)&4294967295);var K8=la[((Cc)>>0)];var K6=iB((K8),8,0)<0;if(K6){Ba=110}else{Ba=111}if(Ba==110){var K4=C0;var K2=((Ls+K4)&4294967295);la[((K2)>>0)]=4}var K0=C0;var KY=(((K0)+1)&4294967295);C0=KY;var KW=uA[((Iu)>>2)];var KU=C0;var KS=(((KU))|0)<(((KW))|0);if(KS){Ba=109;continue}else{Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}}}else{if(Ba==41){var Hk=uA[((Lz)>>2)];var G8=(((Hk))|0)==0;if(!(G8)){Ba=112;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var G7=uA[((Iu)>>2)];var G6=(((G7))|0)<=3;if(!(G6)){Ba=44;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}var G5=uA[((Iu)>>2)];var G4=(((G5)-1)&4294967295);var G3=((Ls+G4)&4294967295);la[((G3)>>0)]=4;KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb74$$bb82$$bb89$$bb98$$bb113$$bb34$$bb121$$bb43$50}}}}}}}}}while(0);$bb126$$bb37$$bb46$$bb128$115:do{if(Ba==36){var Hs=uA[((Lz)>>2)];var Hr=(((Hs))|0)==0;if(!(Hr)){Ba=112;break $bb126$$bb37$$bb46$$bb128$115}var Hq=uA[((Iu)>>2)];var Hp=(((Hq))|0)>2;if(!(Hp)){Ba=112;break $bb126$$bb37$$bb46$$bb128$115}uA[((Lz)>>2)]=2;var Ho=KB;var Hn=(((Ho))|0)==0;if(Hn){Ba=39}else{Ba=40}if(Ba==39){var Hm=uA[((Lz)>>2)];var Hl=((Ls+Hm)&4294967295);la[((Hl)>>0)]=4}KB=4;Ba=114;break $bb126$$bb37$$bb46$$bb128$115}else{if(Ba==44){var J3=uA[((Lz)>>2)];var G2=(((J3))|0)==0;if(!(G2)){Ba=112;break $bb126$$bb37$$bb46$$bb128$115}KB=4;var G1=uA[((Iu)>>2)];var G0=(((G1))|0)>2;if(G0){Ba=46}else{Ba=63}$bb48$$bb68$124:do{if(Ba==46){var GZ=uA[((Iu)>>2)];var AX=(((GZ)-2)&4294967295);uA[((Lz)>>2)]=AX;var AV=LK;var AT=(AV)&768;var AR=(((AT))|0)!=0;if(AR){Ba=47}else{Ba=55}$bb49$$bb59$126:do{if(Ba==47){var AP=Ds;var AN=((nm+AP*4)&4294967295);var AL=uA[((AN)>>2)];var AJ=((AL+11)&4294967295);var AH=la[((AJ)>>0)];var e=iB((AH),8,0)!=2;if(!(e)){Ba=55;break $bb49$$bb59$126}var On=LK;var Ol=(On)&256;var Oj=(((Ol))|0)!=0;if(Oj){Ba=49}else{Ba=50}if(Ba==49){var Oh=uA[((Iu)>>2)];var Of=(((Oh)-1)&4294967295);uA[((Lz)>>2)]=Of}else{if(Ba==50){var Od=Ds;var Ob=((nm+Od*4)&4294967295);var N9=uA[((Ob)>>2)];var N7=((N9)&4294967295);var N5=uA[((N7)>>2)];GQ=N5;var N2=Ij;var N0=((nm+N2*4)&4294967295);var NY=uA[((N0)>>2)];var NW=((NY)&4294967295);var NU=uA[((NW)>>2)];Lu=NU;var NS=GQ;var NQ=(((NS))|0)!=115;if(NQ){Ba=52}else{Ba=51}if(Ba==51){var NN=Lu;var NL=(((NN))|0)!=110;if(!(NL)){Ba=55;break $bb49$$bb59$126}}var NJ=GQ;var NH=(((NJ))|0)!=110;var NF=GQ;var ND=(((NF))|0)!=115;var KA=(NH)&(ND);if(KA){Ba=54}else{Ba=53}if(Ba==53){var NB=Ij;var Nz=((nm+NB*4)&4294967295);var Nx=uA[((Nz)>>2)];var Nv=((Nx+11)&4294967295);var Nt=la[((Nv)>>0)];var Nr=iB((Nt),8,0)!=2;if(!(Nr)){Ba=55;break $bb49$$bb59$126}}var Np=uA[((Iu)>>2)];var Nn=(((Np)-1)&4294967295);uA[((Lz)>>2)]=Nn}}}}while(0);var Nm=LK;var Nl=(Nm)&524288;var Nk=(((Nl))|0)!=0;if(Nk){Ba=56}else{Ba=58}$bb60$$bb62$139:do{if(Ba==56){var Nj=uA[((Iu)>>2)];var Ni=(((Nj)-1)&4294967295);var Nh=((B8+Ni)&4294967295);var Ng=la[((Nh)>>0)];var Nf=uA[((Iu)>>2)];var Ne=(((Nf)-2)&4294967295);var Nd=((B8+Ne)&4294967295);var Nc=la[((Nd)>>0)];var Nb=iB((Ng),8,0)>iB((Nc),8,0);if(!(Nb)){Ba=58;break $bb60$$bb62$139}var Na=uA[((Iu)>>2)];var M9=(((Na)-1)&4294967295);uA[((Lz)>>2)]=M9}}while(0);var M8=uA[((Lz)>>2)];var M7=((Ls+M8)&4294967295);var M5=la[((M7)>>0)];var M4=iB((M5),8,0)==0;if(M4){KP=58;Ba=60}else{KP=58;Ba=59}if(Ba==59){var M3=uA[((Lz)>>2)];var MZ=((Ls+M3)&4294967295);var MY=la[((MZ)>>0)];var MX=iB((MY),8,0)==1;if(MX){KP=59}else{KP=59;Ba=64;break $bb48$$bb68$124}}var MW=KP==59?M3:(M8);var MV=(((MW))|0)>1;var MU=uA[((Lz)>>2)];if(MV){Ba=61}else{Ba=62}if(Ba==61){var MT=(((MU)-1)&4294967295);uA[((Lz)>>2)]=MT}else{if(Ba==62){var MS=(((MU)+1)&4294967295);uA[((Lz)>>2)]=MS}}}else{if(Ba==63){uA[((Lz)>>2)]=1}}}while(0);var MQ=uA[((Lz)>>2)];var MP=((Ls+MQ)&4294967295);var MD=la[((MP)>>0)];var MC=iB((MD),8,0)<0;if(!(MC)){Ba=112;break $bb126$$bb37$$bb46$$bb128$115}var MA=uA[((Lz)>>2)];var Mz=(((MA)-1)&4294967295);var My=((Ls+Mz)&4294967295);var Mx=la[((My)>>0)];var Mw=iB((Mx),8,0)<=3;if(Mw){Ba=67}else{Ba=66}if(Ba==66){var Mv=uA[((Lz)>>2)];var Mu=(((Mv)+1)&4294967295);var Mt=((Ls+Mu)&4294967295);var Mi=la[((Mt)>>0)];var Mh=iB((Mi),8,0)<=3;if(!(Mh)){Ba=112;break $bb126$$bb37$$bb46$$bb128$115}}var Mf=uA[((Lz)>>2)];var Me=KB;var Md=(((Me))&255);var Mc=((Ls+Mf)&4294967295);la[((Mc)>>0)]=Md;Ba=112;break $bb126$$bb37$$bb46$$bb128$115}}}while(0);$bb126$$bb128$155:do{if(Ba==112){var J1=KB;var KQ=(((J1))|0)<=3;if(!(KQ)){Ba=114;break $bb126$$bb128$155}Ck=4;Ba=115;break $bb126$$bb128$155}}while(0);if(Ba==114){Ck=3}var KN=LK;var KL=(KN)&4096;var KJ=(((KL))|0)!=0;if(KJ){Ba=116}else{Ba=121}$bb130$$bb135$161:do{if(Ba==116){var KI=uA[((Iu)>>2)];var KH=(((KI))|0)==2;if(!(KH)){Ba=121;break $bb130$$bb135$161}var KG=((Ls+1)&4294967295);var KF=la[((KG)>>0)];var KE=iB((KF),8,0)==4;if(KE){Ba=118}else{Ba=119}if(Ba==118){var KD=((Ls+2)&4294967295);la[((KD)>>0)]=3}var KC=((Ls+2)&4294967295);var Kz=la[((KC)>>0)];var Ky=iB((Kz),8,0)==4;if(!(Ky)){Ba=121;break $bb130$$bb135$161}var Kx=((Ls+1)&4294967295);la[((Kx)>>0)]=3}}while(0);var Kw=LK;var Kv=(Kw)&8192;var Ku=(((Kv))|0)!=0;if(Ku){Ba=122}else{Ba=126}$bb136$$bb140$169:do{if(Ba==122){var Kt=((Ls+1)&4294967295);var Ks=la[((Kt)>>0)];var Kr=iB((Ks),8,0)<0;if(!(Kr)){Ba=126;break $bb136$$bb140$169}var Kq=uA[((Iu)>>2)];var Kp=(((Kq))|0)>2;if(!(Kp)){Ba=126;break $bb136$$bb140$169}var Ko=((Ls+2)&4294967295);var Kn=la[((Ko)>>0)];var Km=iB((Kn),8,0)>3;if(!(Km)){Ba=126;break $bb136$$bb140$169}var Kl=((Ls+1)&4294967295);la[((Kl)>>0)]=3}}while(0);DQ=0;Cy=0;B9=1;var Kk=uA[((Iu)>>2)];var Kj=B9;var Ki=(((Kj))|0)<(((Kk))|0);if(Ki){Ba=127}else{Ba=151}$bb141$$bb167$175:do{if(Ba==127){$bb141$176:while(1){var Kh=B9;var Kg=((Ls+Kh)&4294967295);var Kf=la[((Kg)>>0)];var Ke=iB((Kf),8,0)<0;if(Ke){Ba=128}else{Ba=145}$bb142$$bb160$178:do{if(Ba==128){var Kd=LK;var Kb=(Kd)&16;var Ka=(((Kb))|0)==0;if(Ka){Ba=131}else{Ba=129}$bb146$$bb143$180:do{if(Ba==129){var J9=Ck;var J8=(((J9))|0)>3;if(J8){Ba=131;break $bb146$$bb143$180}var J7=uA[((Iu)>>2)];var J6=(((J7)-1)&4294967295);var J4=B9;var JZ=(((J6))|0)!=(((J4))|0);if(!(JZ)){Ba=145;break $bb142$$bb160$178}}}while(0);var JY=LK;var JX=(JY)&32768;var JW=(((JX))|0)==0;if(JW){Ba=134}else{Ba=132}$bb149$$bb147$184:do{if(Ba==132){var JV=DQ;var JU=(((JV))|0)!=0;if(JU){Ba=134;break $bb149$$bb147$184}var JT=B9;var JS=Ck;var JR=(((JS))&255);var JQ=((Ls+JT)&4294967295);la[((JQ)>>0)]=JR;DQ=1;Ck=3;Ba=145;break $bb142$$bb160$178}}while(0);var JO=B9;var JN=(((JO)-1)&4294967295);var JL=((Ls+JN)&4294967295);var JJ=la[((JL)>>0)];var JH=iB((JJ),8,0)<=1;if(!(JH)){Ba=145;break $bb142$$bb160$178}var JF=B9;var JD=(((JF)+1)&4294967295);var JB=((Ls+JD)&4294967295);var Jz=la[((JB)>>0)];var Jx=iB((Jz),8,0)<=1;if(Jx){Ba=138}else{Ba=136}if(Ba==136){var Js=Ck;var Jr=(((Js))|0)!=4;if(Jr){Ba=145;break $bb142$$bb160$178}var Jp=B9;var Jn=(((Jp)+1)&4294967295);var Jl=((Ls+Jn)&4294967295);var Jj=la[((Jl)>>0)];var Jh=iB((Jj),8,0)<=2;if(!(Jh)){Ba=145;break $bb142$$bb160$178}}var Jf=Ck;var Jd=(((Jf))|0)==3;if(Jd){Ba=139}else{Ba=140}if(Ba==139){var Jb=LK;var I8=(Jb)&32;var I7=(((I8))|0)!=0;if(I7){Ba=150;break $bb142$$bb160$178}}var I5=B9;var I3=(((I5))|0)>1;if(I3){Ba=141}else{Ba=144}$bb156$$bb159$196:do{if(Ba==141){var I1=LK;var IZ=(I1)&64;var IX=(((IZ))|0)!=0;if(!(IX)){Ba=144;break $bb156$$bb159$196}var IV=B9;var IT=((CU+IV)&4294967295);var IR=la[((IT)>>0)];var IO=iB((IR),8,0)==0;if(!(IO)){Ba=144;break $bb156$$bb159$196}var IN=B9;var IL=(((IN)+1)&4294967295);var IJ=((CU+IL)&4294967295);var IH=la[((IJ)>>0)];var IF=iB((IH),8,0)>0;if(IF){Ba=150;break $bb142$$bb160$178}}}while(0);var ID=B9;var IB=Ck;var Iz=(((IB))&255);var Ix=((Ls+ID)&4294967295);la[((Ix)>>0)]=Iz;DQ=1;Ck=3;Ba=145;break $bb142$$bb160$178}}while(0);$bb165$$bb160$201:do{if(Ba==145){var B6=B9;var B5=((Ls+B6)&4294967295);var B4=la[((B5)>>0)];var B3=iB((B4),8,0)>3;if(!(B3)){Ba=150;break $bb165$$bb160$201}var B2=Cy;var B1=(((B2))|0)==0;if(B1){Ba=147}else{Ba=148}if(Ba==147){var B0=B9;Cy=B0}else{if(Ba==148){var BY=LK;var BX=(BY)&128;var BW=(((BX))|0)!=0;if(!(BW)){Ba=150;break $bb165$$bb160$201}var BV=B9;var BU=((Ls+BV)&4294967295);la[((BU)>>0)]=3}}}}while(0);var BT=B9;var BS=(((BT)+1)&4294967295);B9=BS;var BR=uA[((Iu)>>2)];var BQ=B9;var BP=(((BQ))|0)<(((BR))|0);if(BP){Ba=127;continue $bb141$176}else{Ba=151;break $bb141$$bb167$175}}}}while(0);var BO=Ci;var BN=(((BO))|0)!=0;if(BN){Ba=152}else{Ba=156}$bb168$$bb172$210:do{if(Ba==152){var BM=NO;var BJ=(((BM))|0)<0;if(!(BJ)){Ba=156;break $bb168$$bb172$210}var BI=uA[((Iu)>>2)];var BH=(((BI))|0)<=2;var BG=GV;var BF=((BG)&4294967295);if(BH){Ba=154}else{Ba=155}if(Ba==154){var BE=((BF+16)&4294967295);var BD=uA[((BE)>>2)];NO=BD}else{if(Ba==155){var BC=((BF+20)&4294967295);var BB=uA[((BC)>>2)];NO=BB}}}}while(0);KB=0;En=0;B9=1;var BA=uA[((Iu)>>2)];var By=B9;var Bx=(((By))|0)<(((BA))|0);if(Bx){Ba=157}else{Ba=160}$bb173$$bb177$217:do{if(Ba==157){while(1){var Bw=B9;var Bv=((Ls+Bw)&4294967295);var Bu=la[((Bv)>>0)];var Bs=iB((Bu),8,0);var Bq=KB;var Bp=(((Bs))|0)>=(((Bq))|0);if(Bp){Ba=158}else{Ba=159}if(Ba==158){var Bo=B9;var Bn=((Ls+Bo)&4294967295);var Bm=la[((Bn)>>0)];var Bl=iB((Bm),8,0);KB=Bl;var Bk=B9;En=Bk}var Bj=B9;var Bi=(((Bj)+1)&4294967295);B9=Bi;var Bh=uA[((Iu)>>2)];var Bg=B9;var Bf=(((Bg))|0)<(((Bh))|0);if(Bf){Ba=157;continue}else{Ba=160;break $bb173$$bb177$217}}}}while(0);var Bd=NO;var Bc=(((Bd))|0)>=0;if(Bc){Ba=161}else{Ba=164}if(Ba==161){var A8=NO;var A7=KB;var A6=(((A8))|0)>(((A7))|0);var A5=KB;var A4=(((A5))|0)<=4;var Gf=(A6)|(A4);if(Gf){Ba=162}else{Ba=163}if(Ba==162){var A3=En;var A2=NO;var A1=(((A2))&255);var A0=((Ls+A3)&4294967295);la[((A0)>>0)]=A1}var AZ=NO;KB=AZ}var AY=((BK)&4294967295);Cb=AY;B9=1;var AW=DN;var AU=(AW)&1;var AS=(((AU))&255);var M6=iB((AS),8,0)!=0;var CW=(M6)^1;var LA=oD((CW),1,0);var M2=iB((LA),8,0)!=0;var A9=(M2)^1;var Bt=oD((A9),1,0);var M1=iB((Bt),8,0)!=0;if(M1){Ba=166}else{Ba=165}$bb193$$bb190$230:do{if(Ba==165){var AQ=Cb;var AO=ll[((AQ)>>0)];var AM=oD((AO),8,0);var AK=((nm+AM*4)&4294967295);var AI=uA[((AK)>>2)];BZ=AI;var i=BZ;var Oo=(i)==0;if(Oo){Ba=166;break $bb193$$bb190$230}J0=1;MR=1;var Om=BZ;var Ok=((Om+11)&4294967295);var Oi=la[((Ok)>>0)];var Og=iB((Oi),8,0)==1;if(Og){Ba=168}else{Ba=169}if(Ba==168){var Oe=Cb;var Oc=((Oe+1)&4294967295);var Oa=ll[((Oc)>>0)];var N8=oD((Oa),8,0);var N6=((nm+N8*4)&4294967295);var N3=uA[((N6)>>2)];BZ=N3}var N1=GV;var NZ=((N1)&4294967295);var NX=((NZ+4)&4294967295);var NV=uA[((NX)>>2)];var NT=(NV)&48;var NR=(((NT))|0)!=0;if(!(NR)){Ba=175;break $bb193$$bb190$230}var NP=BZ;var NM=((NP+11)&4294967295);var NK=la[((NM)>>0)];var NI=iB((NK),8,0)==2;if(!(NI)){Ba=175;break $bb193$$bb190$230}var NG=GV;var NE=((NG)&4294967295);var NC=((NE+4)&4294967295);var NA=uA[((NC)>>2)];var Ny=(NA)&32;var Nw=(((Ny))|0)==0;if(Nw){Ba=174}else{Ba=172}$bb202$$bb200$238:do{if(Ba==172){var Nu=((Ls+1)&4294967295);var Ns=la[((Nu)>>0)];var Nq=iB((Ns),8,0)<=3;if(Nq){Ba=174;break $bb202$$bb200$238}var HY=HD;la[((HY)>>0)]=11;var HX=HD;var HW=((HX+1)&4294967295);HD=HW;Ba=175;break $bb193$$bb190$230}}while(0);var HV=HD;la[((HV)>>0)]=23;var HU=HD;var HT=((HU+1)&4294967295);HD=HT;Ba=175;break $bb193$$bb190$230}}while(0);if(Ba==166){J0=0;MR=0}var HS=((BK)&4294967295);Cb=HS;CC=0;$bb260$245:while(1){var K9=Cb;var K7=la[((K9)>>0)];LG=K7;var K5=LG;var K3=iB((K5),8,0)!=0;var K1=oD((K3),1,0);var KZ=Cb;var KX=((KZ+1)&4294967295);Cb=KX;var Ec=iB((K1),8,0)!=0;var GT=(Ec)^1;var Lj=oD((GT),1,0);var D5=iB((Lj),8,0)!=0;if(D5){Ba=224;break $bb260$245}var KV=HD;var KT=Op;var KR=(KV)>=(KT);if(KR){Ba=224;break $bb260$245}JP=1;MO=1;var HR=LG;var HQ=oD((HR),8,0);var HP=((nm+HQ*4)&4294967295);var HE=uA[((HP)>>2)];BZ=HE;var HC=BZ;var HB=(HC)==0;var HA=oD((HB),1,0);MB=HA;var Hz=MB;var GM=iB((Hz),8,0)!=0;if(GM){Ba=222;continue $bb260$245}var Hy=BZ;var Hx=((Hy+11)&4294967295);var Hw=la[((Hx)>>0)];var Hv=iB((Hw),8,0)==0;if(Hv){Ba=178}else{Ba=179}$bb207$$bb208$250:do{if(Ba==178){var Hu=GV;var Hi=((Hu+8288)&4294967295);uA[((Hi)>>2)]=0}else{if(Ba==179){var Hh=BZ;var Hg=((Hh+11)&4294967295);var Hf=la[((Hg)>>0)];var He=iB((Hf),8,0)!=2;if(He){Ba=181}else{Ba=180}$bb210$$bb209$253:do{if(Ba==180){var Hd=BZ;var Hc=((Hd+4)&4294967295);var Hb=uA[((Hc)>>2)];var Ha=(Hb)&1048576;var G9=(((Ha))|0)==0;if(G9){Ba=182;break $bb210$$bb209$253}else{Ba=181;break $bb210$$bb209$253}}}while(0);if(Ba==181){var GY=Cb;var GX=la[((GY)>>0)];var GW=iB((GX),8,0)==20;if(!(GW)){Ba=220;break $bb207$$bb208$250}}var GU=B9;var GS=((Ls+GU)&4294967295);var GR=la[((GS)>>0)];var GP=iB((GR),8,0);DP=GP;var GO=GV;var GN=((GO+8288)&4294967295);var GL=DP;uA[((GN)>>2)]=GL;var Gz=B9;var Gy=(((Gz)-1)&4294967295);var Gx=((Ls+Gy)&4294967295);var Gw=la[((Gx)>>0)];var Gv=iB((Gw),8,0);var Gu=KB;var Gt=(((Gv))|0)>=(((Gu))|0);if(Gt){Ba=183}else{Ba=184}if(Ba==183){CC=1}var Gs=DP;var Gr=(((Gs))|0)<=1;if(Gr){Ba=185}else{Ba=200}$bb214$$bb229$261:do{if(Ba==185){var Gq=B9;var Gd=(((Gq))|0)<=1;if(Gd){Ba=190}else{Ba=186}$bb219$$bb215$263:do{if(Ba==186){var Gc=KB;var Gb=(((Gc))|0)<=3;if(Gb){Ba=190;break $bb219$$bb215$263}var Ga=LK;var F9=(Ga)&4;var F8=(((F9))|0)==0;if(F8){Ba=190;break $bb219$$bb215$263}var F7=uA[((Iu)>>2)];var F6=(((F7)-1)&4294967295);var F5=B9;var F4=(((F6))|0)!=(((F5))|0);if(F4){Ba=190;break $bb219$$bb215$263}DP=0;Ba=200;break $bb214$$bb229$261}}while(0);var FT=LK;var FR=(FT)&2;var FP=(((FR))|0)!=0;if(FP){Ba=193}else{Ba=191}$bb222$$bb220$269:do{if(Ba==191){var FN=B9;var FL=(((FN))|0)==1;if(FL){Ba=193;break $bb222$$bb220$269}var FJ=uA[((Iu)>>2)];var FH=(((FJ)-1)&4294967295);var FF=B9;var FD=(((FH))|0)==(((FF))|0);if(FD){Ba=193;break $bb222$$bb220$269}var FB=uA[((Iu)>>2)];var Fn=(((FB)-2)&4294967295);var Fl=B9;var Fj=(((Fn))|0)!=(((Fl))|0);if(Fj){Ba=197}else{Ba=195}$bb226$$bb224$273:do{if(Ba==195){var Fh=uA[((Iu)>>2)];var Ff=(((Fh)-1)&4294967295);var Fd=((Ls+Ff)&4294967295);var Fb=la[((Fd)>>0)];var E9=iB((Fb),8,0)>1;if(E9){Ba=197;break $bb226$$bb224$273}DP=1;Ba=200;break $bb214$$bb229$261}}while(0);var E7=B9;var E5=(((E7)-1)&4294967295);var ES=((Ls+E5)&4294967295);var EQ=la[((ES)>>0)];var EO=iB((EQ),8,0)<0;if(EO){Ba=199}else{Ba=198}if(Ba==198){var EM=LK;var EK=(EM)&65536;var EI=(((EK))|0)==0;if(!(EI)){Ba=200;break $bb214$$bb229$261}}DP=0;var EG=B9;var EE=DP;var EC=(((EE))&255);var EA=((Ls+EG)&4294967295);la[((EA)>>0)]=EC;Ba=200;break $bb214$$bb229$261}}while(0);DP=1}}while(0);var Em=DP;var Ek=(((Em))|0)==0;var Ei=DP;var Eg=(((Ei))|0)>1;var Ge=(Ek)|(Eg);if(Ge){Ba=201}else{Ba=202}if(Ba==201){var Ee=DP;var Eb=((kp+Ee)&4294967295);var D9=la[((Eb)>>0)];var D7=HD;la[((D7)>>0)]=D9;var D4=HD;var D2=((D4+1)&4294967295);HD=D2}var MN=B9;var MM=((Ls+MN)&4294967295);var ML=la[((MM)>>0)];var MK=iB((ML),8,0);var MJ=KB;var MI=(((MK))|0)>(((MJ))|0);if(MI){Ba=203}else{Ba=204}if(Ba==203){var MH=B9;var MG=((Ls+MH)&4294967295);var MF=la[((MG)>>0)];var ME=iB((MF),8,0);KB=ME}var Ms=Cb;var Mr=la[((Ms)>>0)];var Mq=iB((Mr),8,0)!=12;if(Mq){Ba=206}else{Ba=205}$bb242$$bb235$288:do{if(Ba==205){var Mp=GV;var Mo=((Mp)&4294967295);var Mn=((Mo+24)&4294967295);var Mm=((Mn+8)&4294967295);var Ml=uA[((Mm)>>2)];B7=Ml;var Mk=B7;var Mj=(Mk)&1;var L7=(((Mj))&255);var Fz=iB((L7),8,0)!=0;var Eq=(Fz)^1;var Ca=oD((Eq),1,0);var Fy=iB((Ca),8,0)!=0;if(Fy){Ba=206;break $bb242$$bb235$288}Ju=1;Mg=1;Jt=0;var L6=B7;var L5=(L6)&16;var L4=(((L5))|0)!=0;if(L4){Ba=208}else{Ba=210}$bb245$$bb248$291:do{if(Ba==208){var L3=B9;var L2=En;var L1=(((L3))|0)!=(((L2))|0);if(!(L1)){Ba=212;break $bb245$$bb248$291}Jt=1;Ba=213;break $bb245$$bb248$291}else{if(Ba==210){var L0=DP;var LZ=(((L0))|0)<=3;if(!(LZ)){Ba=212;break $bb245$$bb248$291}Jt=1;Ba=213;break $bb245$$bb248$291}}}while(0);if(Ba==212){var Be=Jt;var LY=(((Be))|0)!=0;if(!(LY)){Ba=214;break $bb242$$bb235$288}}var LM=Cb;var LL=((LM+1)&4294967295);Cb=LL;Ba=214;break $bb242$$bb235$288}}while(0);if(Ba==206){Ju=0;Mg=0}var LJ=DP;var LI=(((LJ))|0)>3;if(LI){Ba=215}else{Ba=219}$bb253$$bb257$302:do{if(Ba==215){var LH=GV;var LF=((LH)&4294967295);var LE=((LF+24)&4294967295);var LD=((LE+8)&4294967295);var LC=uA[((LD)>>2)];var LB=(((LC))|0)==2;if(!(LB)){Ba=219;break $bb253$$bb257$302}var Ly=uA[((Iu)>>2)];var Lx=(((Ly)-2)&4294967295);var Lw=B9;var Lv=(((Lx))|0)==(((Lw))|0);if(!(Lv)){Ba=219;break $bb253$$bb257$302}var Lt=B9;var Lr=((CU+Lt)&4294967295);var Lq=la[((Lr)>>0)];var Lp=iB((Lq),8,0)==0;if(!(Lp)){Ba=219;break $bb253$$bb257$302}var Lo=LG;var Ln=HD;la[((Ln)>>0)]=Lo;var Lm=HD;var Ll=((Lm+1)&4294967295);HD=Ll;LG=12}}while(0);var Lk=B9;var Li=(((Lk)+1)&4294967295);B9=Li}}}while(0);var Lh=LG;var Lg=iB((Lh),8,0)!=1;if(!(Lg)){Ba=222;continue $bb260$245}var Lf=LG;var Le=HD;la[((Le)>>0)]=Lf;var Ld=HD;var Lc=((Ld+1)&4294967295);HD=Lc;Ba=222;continue $bb260$245}JP=0;MO=0;var KO=HD;la[((KO)>>0)]=0;var KM=HD;var KK=((KM+1)&4294967295);HD=KK}vp=BL;return;return}function pE(Bw,Bz,BH,Bb){var A8;var A6;var AM;var By;var BD;var A9;var AJ;var Bv;var AK;var BL;var AL;A6=Bw;AM=Bz;By=BH;BD=Bb;AL=0;var Bu=By;var Bt=A6;var Bs=((Bt+5152)&4294967295);var Br=((Bs+Bu*4)&4294967295);var Bq=uA[((Br)>>2)];AK=Bq;var Bp=AK;var Bn=(Bp)==0;if(Bn){A8=1}else{A8=12}if(A8==1){Bv=0}else{if(A8==12){$bb13$4:while(1){var AQ=AK;var AI=la[((AQ)>>0)];var AH=iB((AI),8,0)!=7;if(!(AH)){A8=13;break $bb13$4}var Bl=BD;var Bj=(((Bl))|0)!=0;if(Bj){A8=3}else{A8=4}if(A8==3){var A4=AK;var A2=wg(A4);AL=A2;var A0=AL;var AY=((0-(A0))&4294967295);var AW=AM;var AU=((AW+AY)&4294967295);var AS=((AU+1)&4294967295);BL=AS}else{if(A8==4){var AP=AM;BL=AP}}var AO=AK;var AN=la[((AO)>>0)];var i=BL;var BK=la[((i)>>0)];var BJ=iB((AN),8,0)==iB((BK),8,0);if(BJ){A8=6}else{A8=7}$bb6$$bb8$11:do{if(A8==6){while(1){var BI=BL;var BG=((BI+1)&4294967295);BL=BG;var BF=AK;var BE=((BF+1)&4294967295);AK=BE;var BC=AK;var BB=la[((BC)>>0)];var BA=BL;var Bo=la[((BA)>>0)];var Bm=iB((BB),8,0)==iB((Bo),8,0);if(Bm){A8=6;continue}else{A8=7;break $bb6$$bb8$11}}}}while(0);var Bk=AK;var Bi=la[((Bk)>>0)];var Bh=iB((Bi),8,0)==0;if(Bh){A8=8;break $bb13$4}while(1){var A1=AK;var AZ=la[((A1)>>0)];var AX=iB((AZ),8,0)!=0;var AV=oD((AX),1,0);AJ=AV;var AT=AK;var AR=((AT+1)&4294967295);AK=AR;var Ba=iB((AV),8,0)!=0;if(Ba){A8=11;continue}else{A8=12;continue $bb13$4}}}if(A8==13){Bv=0}else{if(A8==8){var Bg=BD;var Bf=(((Bg))|0)!=0;if(Bf){A8=9}else{A8=10}if(A8==9){var Be=AL;Bv=Be}else{if(A8==10){var Bd=BL;var Bc=(Bd);var A7=AM;var A5=(A7);var A3=(((Bc)-(A5))&4294967295);Bv=A3}}}}}}var e=Bv;A9=e;var Bx=A9;return Bx;return null}function jG(AU,AN){var A0;var AW;var AQ;var A3;var AP;AW=AU;AQ=AN;while(1){var A2=AW;var A1=((A2)&4294967295);var AZ=uA[((A1)>>2)];var AY=(AZ)!=0;var AX=AW;if(!(AY)){A0=5;break}var AO=((AX)&4294967295);var AM=uA[((AO)>>2)];var AL=AQ;var AK=pt(AL,AM);var AJ=(((AK))|0)==0;var AI=AW;if(AJ){A0=2;break}var e=((AI+8)&4294967295);AW=e;A0=4;continue}if(A0==2){var AH=((AI+4)&4294967295);var i=uA[((AH)>>2)];AP=i}else{if(A0==5){var AV=((AX+4)&4294967295);var AT=uA[((AV)>>2)];AP=AT}}var AS=AP;A3=AS;var AR=A3;return AR;return null}function yE(Ba,BC,AR){var Bn;var AI;var Bl;var AJ;var BX;var Bo;var Bp;var AU;var A6;var AP;var BG;var BW;var Bj;Bo=Ba;Bp=BC;AU=AR;var BV=AU;var BU=Bo;var BT=((BU+968)&4294967295);var BS=((BT+BV*4)&4294967295);var BR=uA[((BS)>>2)];var BQ=(BR)!=0;var BP=AU;if(BQ){Bn=1}else{Bn=9}$bb$$bb3$2:do{if(Bn==1){var BO=Bo;var BA=((BO+968)&4294967295);var Bz=((BA+BP*4)&4294967295);var By=uA[((Bz)>>2)];var Bx=Bp;AI=By;Bl=Bx;$bb3_i$4:while(1){var Bm=AI;var Bk=uA[((Bm)>>2)];var Bi=(((Bk))|0)!=0;if(!(Bi)){Bn=5;break $bb3_i$4}var Bw=AI;var Bv=uA[((Bw)>>2)];var Bu=Bl;var Bt=(((Bv))|0)==(((Bu))|0);var Bs=AI;if(Bt){Bn=6;break $bb3_i$4}var Br=((Bs+4)&4294967295);AI=Br;Bn=4;continue $bb3_i$4}$wcschr_exit_thread$$wcschr_exit$8:do{if(Bn==5){BX=0;AJ=0}else{if(Bn==6){BX=Bs;AJ=Bs;var Bh=(Bs)!=0;if(!(Bh)){Bn=8;break $wcschr_exit_thread$$wcschr_exit$8}BW=1;Bn=20;break $bb$$bb3$2}}}while(0);BW=0}else{if(Bn==9){var Bg=(((BP))|0)>7;if(Bg){Bn=10}else{Bn=11}if(Bn==10){BW=0}else{if(Bn==11){var Bf=Bo;var Be=((Bf+964)&4294967295);var Bd=uA[((Be)>>2)];var Bc=(((Bd))|0)>0;if(Bc){Bn=12}else{Bn=15}$bb6$$bb13$17:do{if(Bn==12){var Bb=Bo;var A7=((Bb+964)&4294967295);var A5=uA[((A7)>>2)];var A4=Bp;var A3=(((A4)-(A5))&4294967295);Bj=A3;var A2=Bj;var A1=(((A2))|0)<=0;var A0=Bj;var AZ=(((A0))|0)>127;var Bq=(A1)|(AZ);if(Bq){Bn=14}else{Bn=13}if(Bn==14){AP=0;BG=0;BW=0;Bn=20;break $bb$$bb3$2}else{if(Bn==13){AP=1;BG=1;var AY=Bj;Bp=AY}}}else{if(Bn==15){var AX=Bp;var AW=(((AX))|0)>191;var AV=Bp;var AT=(((AV))|0)<=605;var A9=(AW)&(AT);if(!(A9)){Bn=17;break $bb6$$bb13$17}var AS=Bp;var AQ=(((AS)-192)&4294967295);var AO=((ik+AQ)&4294967295);var AN=ll[((AO)>>0)];var AM=oD((AN),8,0);var AL=Bo;var AK=((AL+708)&4294967295);var AH=((AK+AM)&4294967295);var i=ll[((AH)>>0)];var e=oD((i),8,0);var B4=AU;var B3=1<<(B4);var B2=(B3)&(e);BW=B2;Bn=20;break $bb$$bb3$2}}}while(0);var B1=Bp;var B0=(((B1))|0)>=0;var BZ=Bp;var BY=(((BZ))|0)<=127;var A8=(B0)&(BY);if(A8){Bn=18}else{Bn=19}if(Bn==18){var BN=Bp;var BM=Bo;var BL=((BM+708)&4294967295);var BK=((BL+BN)&4294967295);var BJ=ll[((BK)>>0)];var BI=oD((BJ),8,0);var BH=AU;var BF=1<<(BH);var BE=(BF)&(BI);BW=BE}else{if(Bn==19){BW=0}}}}}}}while(0);var BD=BW;A6=BD;var BB=A6;return BB;return null}function yq(D0,CZ,Ds,Da){var BU;var CJ=null;var CC;var Dx;var CY;var De;var AH;var DY;var DE;var C4;var Be;var C7;var Dr;var Bd;var Cg;var Cb;var Dq;var BR;CC=D0;Dx=CZ;CY=Ds;De=Da;var DX=Dx;Bd=DX;var DW=Bd;var DV=la[((DW)>>0)];var DU=iB((DV),8,0)!=32;var DT=Bd;if(DU){CJ=-1;BU=1}else{CJ=-1;BU=4}$bb$$bb4$2:do{if(BU==1){while(1){var DS=CJ==3?CH:(DT);var DR=la[((DS)>>0)];var DQ=iB((DR),8,0)==69;if(DQ){BU=2}else{BU=3}if(BU==2){var DP=Bd;la[((DP)>>0)]=101}var CP=Bd;var CN=((CP+1)&4294967295);Bd=CN;var CL=Bd;var CK=la[((CL)>>0)];var CI=iB((CK),8,0)!=32;var CH=Bd;if(CI){CJ=3;BU=1;continue}else{CJ=3;BU=4;break $bb$$bb4$2}}}}while(0);var AL=CJ==-1?DT:(CH);var CG=(AL);var CF=Dx;var CE=(CF);var CD=(((CG)-(CE))&4294967295);Dr=CD;var Cs=Dr;var Cq=De;var Co=Dx;ns(Cq,Co,Cs,1,0);var Cn=De;var Cm=Dr;var Cl=((Cn+Cm)&4294967295);la[((Cl)>>0)]=0;var Ck=CY;var Cj=(Ck)&63;Dr=Cj;Cg=Cj;var Ci=(((Cj))|0)>0;if(Ci){BU=5}else{BU=8}$bb5$$bb10$9:do{if(BU==5){$bb5$10:while(1){var Ch=Bd;var B6=((Ch+-1)&4294967295);Bd=B6;var B4=Bd;var B2=la[((B4)>>0)];var B1=iB((B2),8,0);var B0=(B1)&192;var BZ=(((B0))|0)==128;if(BZ){BU=6}else{BU=7}$bb6$$bb8$12:do{if(BU==6){while(1){var BY=Bd;var BX=((BY+-1)&4294967295);Bd=BX;var BW=Cg;var BV=(((BW)+1)&4294967295);Cg=BV;var BK=Bd;var BI=la[((BK)>>0)];var BG=iB((BI),8,0);var BF=(BG)&192;var BE=(((BF))|0)==128;if(BE){BU=6;continue}else{BU=7;break $bb6$$bb8$12}}}}while(0);var BD=Dr;var BC=(((BD)-1)&4294967295);Dr=BC;var BB=(((BC))|0)>0;if(BB){BU=5;continue $bb5$10}else{BU=8;break $bb5$$bb10$9}}}}while(0);Dr=0;var BA=Dr;var Bz=Cg;var Bq=(((BA))|0)<(((Bz))|0);var Bo=Dr;if(Bq){CJ=8;BU=9}else{CJ=8;BU=10}$bb11$$bb13$17:do{if(BU==9){while(1){var Bm=CJ==9?AZ:(Bo);var Bl=Bd;var Bk=Dr;var Bj=((Bl+Bk)&4294967295);var Bi=la[((Bj)>>0)];var Bh=((tq+Bm)&4294967295);la[((Bh)>>0)]=Bi;var Bg=Bd;var Bf=Dr;var A5=((Bg+Bf)&4294967295);la[((A5)>>0)]=32;var A4=Dr;var A3=(((A4)+1)&4294967295);Dr=A3;var A2=Dr;var A1=Cg;var A0=(((A2))|0)<(((A1))|0);var AZ=Dr;if(A0){CJ=9;BU=9;continue}else{CJ=9;BU=10;break $bb11$$bb13$17}}}}while(0);var CB=CJ==8?Bo:(AZ);var AY=((tq+CB)&4294967295);la[((AY)>>0)]=0;var AX=Bd;var AW=((AX+-1)&4294967295);Bd=AW;var AV=CY;var AU=(AV)&65520;var AT=(AU)|4;Cb=AT;var AS=CY;var AR=(AS)&512;var AQ=(((AR))|0)!=0;if(AQ){BU=11}else{BU=13}$bb14$$bb16$21:do{if(BU==11){var AP=Bd;var AO=((AP)&4294967295);var AN=la[((AO)>>0)];var AM=iB((AN),8,0)==105;if(!(AM)){BU=13;break $bb14$$bb16$21}var AK=Bd;var AJ=((AK)&4294967295);la[((AJ)>>0)]=121}}while(0);var AI=CY;var i=(AI)&256;var e=(((i))|0)!=0;if(e){BU=14}else{BU=33}$bb17$$bb43$25:do{if(BU==14){var D5=CC;var D4=((D5+280)&4294967295);var D3=uA[((D4)>>2)];var D2=(((D3))|0)==25966;if(D2){BU=15}else{BU=28}$bb18$$bb38$27:do{if(BU==15){var D1=Bd;var DO=((D1+-1)&4294967295);var DN=la[((DO)>>0)];var DM=iB((DN),8,0);var DL=CC;var DK=yE(DL,DM,7);var DJ=(((DK))|0)==0;if(DJ){BU=18}else{BU=16}$bb22$$bb19$29:do{if(BU==16){var DI=Bd;var DH=((DI)&4294967295);var DG=la[((DH)>>0)];var DF=iB((DG),8,0);var DD=CC;var DC=yE(DD,DF,1);var DB=(((DC))|0)==0;if(DB){BU=18;break $bb22$$bb19$29}Be=1;C7=1;Dr=0;while(1){var Dk=Dr;var Dj=((gp+Dk*4)&4294967295);var Di=uA[((Dj)>>2)];Dq=Di;var Dh=Dq;var Dg=(Dh)!=0;var Dd=oD((Dg),1,0);C4=Dd;var Df=iB((Dd),8,0)!=0;if(Df){CJ=21}else{CJ=21;BU=22;break}var DA=Dq;var Dz=wg(DA);BR=Dz;var Dy=BR;var Dw=BR;var Dv=((1-(Dw))&4294967295);var Du=Bd;var Dt=((Du+Dv)&4294967295);var Dp=Dq;var Do=l4(Dp,Dt,Dy);var Dn=(((Do))|0)==0;if(Dn){CJ=19;BU=22;break}else{CJ=19}var Dm=Dr;var Dl=(((Dm)+1)&4294967295);Dr=Dl;BU=21;continue}var Dc=CJ==21?Dh:(Dp);var Db=(Dc)==0;if(!(Db)){BU=30;break $bb18$$bb38$27}var C9=Cb;var C8=(C9)|16;Cb=C8;BU=30;break $bb18$$bb38$27}}while(0);Be=0;C7=0;Dr=0;while(1){var CM=Dr;var CA=((qD+CM*4)&4294967295);var Cz=uA[((CA)>>2)];Dq=Cz;var Cy=Dq;var Cx=(Cy)!=0;var Cw=oD((Cx),1,0);DE=Cw;var C0=iB((Cw),8,0)!=0;if(!(C0)){BU=30;break $bb18$$bb38$27}var C6=Dq;var C5=wg(C6);BR=C5;var C3=BR;var C2=BR;var C1=((1-(C2))&4294967295);var CX=Bd;var CW=((CX+C1)&4294967295);var CV=Dq;var CU=l4(CV,CW,C3);var CT=(((CU))|0)==0;if(CT){BU=25;break}var CQ=Dr;var CO=(((CQ)+1)&4294967295);Dr=CO;BU=27;continue}var CS=Cb;var CR=(CS)|16;Cb=CR}else{if(BU==28){var Cv=CC;var Cu=((Cv)&4294967295);var Ct=((Cu+276)&4294967295);var Cr=uA[((Ct)>>2)];var Cp=(((Cr))|0)!=0;if(!(Cp)){BU=30;break $bb18$$bb38$27}var Cf=Cb;var Ce=(Cf)|16;Cb=Ce}}}while(0);var Cd=Cb;var Cc=(Cd)&16;var Ca=(((Cc))|0)!=0;if(!(Ca)){BU=33;break $bb17$$bb43$25}var B9=Bd;var B8=((B9+1)&4294967295);var B7=CC;var B5=((B7)&4294967295);var B3=((B5+276)&4294967295);var BT=uA[((B3)>>2)];var BS=zD(BT,B8);var BQ=uA[((us)>>2)];var BP=(((BQ))|0)==2;if(!(BP)){BU=33;break $bb17$$bb43$25}var BO=uA[((ni)>>2)];var BN=yf(((AA)&4294967295),1,6,BO)}}while(0);var BM=CY;var BL=(BM)&2048;var BJ=(((BL))|0)!=0;if(BJ){BU=34}else{BU=36}$bb44$$bb46$50:do{if(BU==34){var BH=CC;var By=((BH+8272)&4294967295);var Bx=uA[((By)>>2)];var Bw=(((Bx))|0)==0;if(!(Bw)){BU=36;break $bb44$$bb46$50}var Bv=CC;var Bu=((Bv+8272)&4294967295);uA[((Bu)>>2)]=1}}while(0);var Bt=pt(((tq)&4294967295),((h7)&4294967295));var Bs=(((Bt))|0)==0;if(Bs){BU=38}else{BU=37}$bb48$$bb47$54:do{if(BU==37){var Br=pt(((tq)&4294967295),((iE)&4294967295));var Bp=(((Br))|0)==0;if(Bp){BU=38;break $bb48$$bb47$54}else{BU=39;break $bb48$$bb47$54}}}while(0);if(BU==38){var Bn=Cb;var Bc=(Bn)|8;Cb=Bc}var Bb=la[((((tq)&4294967295))>>0)];var Ba=iB((Bb),8,0)==39;if(Ba){BU=40}else{BU=41}if(BU==40){var A9=Cb;var A8=(A9)&-5;Cb=A8}var A7=Cb;DY=A7;var A6=DY;AH=A6;var DZ=AH;return DZ;return null}function p9(AK,AN){var AQ;var AP;var AM;var AL;var AJ;AP=AK;AM=AN;var AI=AP;var AH=AM;var i=yE(AI,AH,7);AJ=i;var e=AJ;AL=e;var AO=AL;return AO;return null}function zU(Dk,B0){var Bf=vp;vp+=4;n1(Bf,0,4);var Bz;var B7=null;var CX;var Cq;var BK;var Dj;var BZ;var CS;var AH;var Di;var AQ;var AT;var CP=Bf;var BY;var CY;var AZ;var BX;var A0;var CJ;var BM;var AV;var Da;var A1;var CI;var Cx;BZ=Dk;CS=B0;var Dh=CS;CJ=Dh;var Dg=CS;BM=Dg;AV=1;var Df=BZ;var De=((Df+288)&4294967295);var Dd=uA[((De)>>2)];var Dc=(((Dd)-1)&4294967295);AZ=Dc;var Db=BZ;var C9=((Db+288)&4294967295);var Cd=uA[((C9)>>2)];BX=Cd;var Cb=BZ;var B9=((Cb+284)&4294967295);var B8=uA[((B9)>>2)];A0=B8;var B6=A0;var B5=BX;var Dl=((0-(B5))&4294967295);var B4=(((B6)+2)&4294967295);var B3=(((B4)+(Dl))&4294967295);CI=B3;$bb$2:while(1){var B2=CJ;CX=CP;Cq=B2;var B1=CX;var BV=Cq;var BU=F(B1,BV,0);Dj=BU;var BT=Dj;BK=BT;var AJ=BK;var BS=CJ;var BR=((BS+AJ)&4294967295);CJ=BR;var BQ=uA[((CP)>>2)];var BP=BX;var BO=(((BQ))|0)<(((BP))|0);if(BO){B7=1;Bz=4}else{B7=1;Bz=2}$bb3$$bb1$4:do{if(Bz==2){var BN=uA[((CP)>>2)];var BL=A0;var BJ=(((BN))|0)>(((BL))|0);if(BJ){B7=2;Bz=4;break $bb3$$bb1$4}else{B7=2}var BI=uA[((CP)>>2)];var BH=(((BI))&255);var BG=AZ;var BF=(((BG))&255);var BE=(((BH)-(BF))&255);var BD=BM;la[((BD)>>0)]=BE;var BC=BM;var BB=((BC+1)&4294967295);BM=BB;Bz=6;break $bb3$$bb1$4}}while(0);$bb3$$bb5$7:do{if(Bz==4){var BA=B7==2?BN:(BQ);var By=(((BA))|0)!=0;if(!(By)){Bz=6;break $bb3$$bb5$7}var Bx=uA[((CP)>>2)];var Bw=BM;var Bv=zD(Bx,Bw);var Bu=BM;var Bt=((Bu+Bv)&4294967295);BM=Bt;AV=0}}while(0);var Bs=uA[((CP)>>2)];var Br=(((Bs))|0)!=0;if(Br){Bz=1;continue $bb$2}else{Bz=7;break $bb$2}}var Bq=BM;la[((Bq)>>0)]=0;var Bp=AV;var Bn=(((Bp))|0)!=0;if(Bn){Bz=8}else{Bz=21}if(Bz==8){A1=0;Da=0;var Bm=CS;CJ=Bm;var Bl=CS;BM=Bl;var Bk=CJ;var Bj=la[((Bk)>>0)];var Bi=iB((Bj),8,0);uA[((CP)>>2)]=Bi;var Bh=uA[((CP)>>2)];var Bg=(((Bh))|0)!=0;var Be=oD((Bg),1,0);AT=Be;var Bd=CJ;var Bb=((Bd+1)&4294967295);CJ=Bb;if(Bg){Bz=9}else{Bz=18}$bb8$$bb18$14:do{if(Bz==9){$bb8$15:while(1){var Ba=BZ;var A9=((Ba+8268)&4294967295);var A8=uA[((A9)>>2)];Cx=A8;var A7=Cx;var A6=(A7)!=0;var A5=oD((A6),1,0);AQ=A5;var Bo=iB((A5),8,0)!=0;if(Bo){Bz=10}else{Bz=15}$bb9$$bb14$17:do{if(Bz==10){var A4=CJ;var A3=la[((A4)>>0)];var A2=iB((A3),8,0);var AY=(((A2)*256)&4294967295);var AX=uA[((CP)>>2)];var AW=(((AY)+(AX))&4294967295);BY=AW;CY=0;while(1){var Dp=Cx;var Do=CY;var Dn=((Dp+2*Do)&4294967295);var Dm=uW[((Dn)>>1)];var C8=iB((Dm),16,0);var C7=BY;var C6=(((C8))|0)<=(((C7))|0);if(!(C6)){Bz=15;break $bb9$$bb14$17}var AU=Cx;var AS=CY;var AR=((AU+2*AS)&4294967295);var AP=uW[((AR)>>1)];var AO=iB((AP),16,0);var AN=BY;var AM=(((AO))|0)==(((AN))|0);var AL=CY;if(AM){Bz=12;break}var Dq=(((AL)+1)&4294967295);CY=Dq;Bz=14;continue}var AK=CI;var AI=(((AK)+(AL))&4294967295);uA[((CP)>>2)]=AI;var i=CJ;var e=((i+1)&4294967295);CJ=e}}while(0);var C5=A1;var C4=(((C5)*64)&4294967295);var C3=uA[((CP)>>2)];var C2=(C3)&63;var C1=(((C2)+(C4))&4294967295);A1=C1;var C0=Da;var CZ=(((C0)+6)&4294967295);Da=CZ;var CW=(((CZ))|0)>7;if(CW){Bz=17}else{Bz=16}if(Bz==17){var CL=Da;var CH=(((CL)-8)&4294967295);Da=CH;var CG=A1;var CF=Da;var CE=(((CG))|0)>>(((CF))|0);var CD=(((CE))&255);var CC=BM;la[((CC)>>0)]=CD;var CB=BM;var CA=((CB+1)&4294967295);BM=CA}var CV=CJ;var CU=la[((CV)>>0)];var CT=iB((CU),8,0);uA[((CP)>>2)]=CT;var CR=uA[((CP)>>2)];var CQ=(((CR))|0)!=0;var CO=oD((CQ),1,0);AT=CO;var CN=CJ;var CM=((CN+1)&4294967295);CJ=CM;var CK=iB((CO),8,0)!=0;if(CK){Bz=9;continue $bb8$15}else{Bz=18;break $bb8$$bb18$14}}}}while(0);var Cz=Da;var Cy=(((Cz))|0)>0;if(Cy){Bz=19}else{Bz=20}if(Bz==19){var Cw=Da;var Cv=((8-(Cw))&4294967295);var Cu=A1;var Ct=(Cu)<<(Cv);var Cs=(((Ct))&255);var Cr=BM;la[((Cr)>>0)]=Cs;var Cp=BM;var Co=((Cp+1)&4294967295);BM=Co}var Cn=BM;la[((Cn)>>0)]=0;var Cm=BM;var Cl=(Cm);var Ck=CS;var Cj=(Ck);var Ci=(((Cl)-(Cj))&4294967295);var Ch=(Ci)|64;Di=Ch}else{if(Bz==21){var Cg=BM;var Cf=(Cg);var Ce=CS;var Cc=(Ce);var Ca=(((Cf)-(Cc))&4294967295);Di=Ca}}var BW=Di;AH=BW;var Bc=AH;vp=Bf;return Bc;return null}function uQ(A7,BW,Cc){var A0=vp;vp+=248;n1(A0,0,248);var Bt;var Bv;var Bl;var BL;var AS;var Bw;var Cl;var A6=A0;var Cf=A0+4;var Bu=A0+8;var AY=A0+168;Bv=A7;Bl=BW;BL=Cc;uA[((Cf)>>2)]=0;var BS=Bu;var Ce=Bl;var Cd=oJ(BS,Ce);var Cb=Bv;var Ca=((Bu)&4294967295);var B9=((AY)&4294967295);var B8=o0(Cb,Ca,B9,A6,Cf,0);Cl=B8;var B7=BL;var B6=(((B7))|0)>3;AS=1;if(B6){Bt=5}else{Bt=1}$bb6$$bb12_preheader$2:do{if(Bt==5){while(1){var Bi=uA[((A6)>>2)];var Bg=AS;var Be=(((Bg))|0)<(((Bi))|0);if(!(Be)){Bt=9;break $bb6$$bb12_preheader$2}var BJ=AS;var BH=((AY+BJ)&4294967295);var BF=la[((BH)>>0)];var BD=iB((BF),8,0);var BB=Cl;var BA=(((BD))|0)>=(((BB))|0);var Bz=AS;if(BA){Bt=3;break}var Bk=(((Bz)+1)&4294967295);AS=Bk;Bt=5;continue}var By=BL;var Bx=(((By))&255);var Bn=((AY+Bz)&4294967295);la[((Bn)>>0)]=Bx}else{if(Bt==1){var B5=uA[((A6)>>2)];var B4=AS;var BM=(((B4))|0)<(((B5))|0);if(!(BM)){Bt=9;break $bb6$$bb12_preheader$2}while(1){var Bc=AS;var Bb=((AY+Bc)&4294967295);var Ba=la[((Bb)>>0)];var A9=iB((Ba),8,0);var A8=BL;var A4=(((A9))|0)>(((A8))|0);if(A4){Bt=7}else{Bt=8}if(Bt==7){var A3=AS;var A2=BL;var A1=(((A2))&255);var AZ=((AY+A3)&4294967295);la[((AZ)>>0)]=A1}var AX=AS;var AW=(((AX)+1)&4294967295);AS=AW;var AV=uA[((A6)>>2)];var AU=AS;var AT=(((AU))|0)<(((AV))|0);if(AT){Bt=6;continue}else{Bt=9;break $bb6$$bb12_preheader$2}}}}}while(0);AS=1;var AR=((Bu)&4294967295);Bw=AR;var AQ=Bw;var AP=la[((AQ)>>0)];var AO=iB((AP),8,0)!=0;if(AO){Bt=10}else{Bt=17}$bb14$$bb22$15:do{if(Bt==10){$bb14$16:while(1){var AN=Bw;var AM=ll[((AN)>>0)];var AL=oD((AM),8,0);var AK=((nm+AL*4)&4294967295);var AJ=uA[((AK)>>2)];var AI=((AJ+11)&4294967295);var AH=la[((AI)>>0)];var i=iB((AH),8,0)==2;if(i){Bt=11}else{Bt=16}$bb15$$bb20$18:do{if(Bt==11){var e=Bw;var Cn=ll[((e)>>0)];var Cm=oD((Cn),8,0);var Ck=((nm+Cm*4)&4294967295);var Cj=uA[((Ck)>>2)];var Ci=((Cj+4)&4294967295);var Ch=uA[((Ci)>>2)];var Cg=(Ch)&1048576;var B3=(((Cg))|0)==0;if(!(B3)){Bt=16;break $bb15$$bb20$18}var B2=AS;var B1=((AY+B2)&4294967295);var B0=la[((B1)>>0)];var BZ=iB((B0),8,0)==0;if(BZ){Bt=14}else{Bt=13}$bb18$$bb17$21:do{if(Bt==13){var BY=AS;var BX=((AY+BY)&4294967295);var BV=la[((BX)>>0)];var BU=iB((BV),8,0)>1;if(BU){Bt=14;break $bb18$$bb17$21}else{Bt=15;break $bb18$$bb17$21}}}while(0);if(Bt==14){var BT=AS;var BR=((AY+BT)&4294967295);var BQ=ll[((BR)>>0)];var BP=oD((BQ),8,0);var BO=((kp+BP)&4294967295);var BN=la[((BO)>>0)];var BK=Bl;la[((BK)>>0)]=BN;var BI=Bl;var BG=((BI+1)&4294967295);Bl=BG}var BE=AS;var BC=(((BE)+1)&4294967295);AS=BC}}while(0);var Bs=Bw;var Br=la[((Bs)>>0)];var Bq=Bl;la[((Bq)>>0)]=Br;var Bp=Bl;var Bo=((Bp+1)&4294967295);Bl=Bo;var Bm=Bw;var Bj=((Bm+1)&4294967295);Bw=Bj;var Bh=Bw;var Bf=la[((Bh)>>0)];var Bd=iB((Bf),8,0)!=0;if(Bd){Bt=10;continue $bb14$16}else{Bt=17;break $bb14$$bb22$15}}}}while(0);var A5=Bl;la[((A5)>>0)]=0;vp=A0;return;return}function nQ(A9,A7,B1){var Bn;var A5;var Bm;var B0;var BF;var Bh;var AJ;var BZ;var AV;var Bo;var Bq;var BG;var AI;var Bp;var Bg;Bo=A9;Bq=A7;BG=B1;var BY=BG;var BX=(BY)&3145728;var BW=(((BX))|0)==0;if(BW){Bn=18}else{Bn=1}$return$$bb$2:do{if(Bn==1){var BV=Bq;var BU=wg(BV);Bp=BU;var BT=Bp;var BS=(((BT)-1)&4294967295);var BR=Bq;var BB=((BR+BS)&4294967295);Bg=BB;var BA=Bo;var Bz=((BA+280)&4294967295);var By=uA[((Bz)>>2)];var B2=(((By))|0)==29295;if(!(B2)){Bn=18;break $return$$bb$2}var Bx=Bg;var Bw=((Bx)&4294967295);var Bv=la[((Bw)>>0)];var Bu=iB((Bv),8,0);Bh=106;AV=0;$bb4_i$5:while(1){var AY=uA[((rW)>>2)];var AX=AV;var AW=(((AX))|0)<(((AY))|0);if(!(AW)){Bn=8;break $bb4_i$5}var Bt=AV;var Bs=((nm+Bt*4)&4294967295);var Bl=uA[((Bs)>>2)];var Bk=(Bl)==0;if(Bk){Bn=6}else{Bn=4}if(Bn==4){var Bj=AV;var Bi=((nm+Bj*4)&4294967295);var Bf=uA[((Bi)>>2)];var Be=((Bf)&4294967295);var Bd=uA[((Be)>>2)];var Bc=Bh;var Bb=(((Bd))|0)==(((Bc))|0);if(Bb){Bn=5;break $bb4_i$5}}var A0=AV;var AZ=(((A0)+1)&4294967295);AV=AZ;Bn=7;continue $bb4_i$5}if(Bn==8){BZ=0}else{if(Bn==5){var Ba=AV;var A6=((nm+Ba*4)&4294967295);var A4=uA[((A6)>>2)];var A3=((A4+10)&4294967295);var A2=ll[((A3)>>0)];var A1=oD((A2),8,0);BZ=A1}}var AU=BZ;AJ=AU;var AL=AJ;var AT=(((Bu))|0)==(((AL))|0);var AS=oD((AT),1,0);AI=AS;var A8=iB((AS),8,0)!=0;if(!(A8)){Bn=18;break $return$$bb$2}var AR=Bg;var AQ=((AR)&4294967295);la[((AQ)>>0)]=6;A5=105;BF=0;while(1){var BM=uA[((rW)>>2)];var BL=BF;var BK=(((BL))|0)<(((BM))|0);if(!(BK)){Bn=16;break}var AP=BF;var AO=((nm+AP*4)&4294967295);var AN=uA[((AO)>>2)];var AM=(AN)==0;if(AM){Bn=14}else{Bn=12}if(Bn==12){var AK=BF;var AH=((nm+AK*4)&4294967295);var i=uA[((AH)>>2)];var e=((i)&4294967295);var B9=uA[((e)>>2)];var B8=A5;var B7=(((B9))|0)==(((B8))|0);if(B7){Bn=13;break}}var BO=BF;var BN=(((BO)+1)&4294967295);BF=BN;Bn=15;continue}if(Bn==16){B0=0}else{if(Bn==13){var B6=BF;var B5=((nm+B6*4)&4294967295);var B4=uA[((B5)>>2)];var B3=((B4+10)&4294967295);var BQ=ll[((B3)>>0)];var BP=oD((BQ),8,0);B0=BP}}var BJ=B0;Bm=BJ;var Br=Bm;var BI=(((Br))&255);var BH=Bg;var BE=((BH+1)&4294967295);la[((BE)>>0)]=BI;var BD=Bg;var BC=((BD+2)&4294967295);la[((BC)>>0)]=0}}while(0);return;return}function ub(A6,Cc,Es){var EE;var ED;var CY;var CV;var CB;var EI;var Dd;var CU;var CG;var EQ;var Dp;var CT;var CJ;var Fd;var DA;var CS;var CL;var AR;var DL;var CR;var CW;var Bf;var DW;var CQ;var Dc;var B3;var E6;var CP;var CH;var Bn;var BR;var CO;var EG;var EH;var Eh;var Do;var Co;var Cq;var Cs;var Cu;var CX;var BQ;var CI;EH=A6;Eh=Cc;Do=Es;var CN=Eh;var CM=wg(CN);BQ=CM;var EC=EH;var EB=((EC)&4294967295);var EA=((EB+24)&4294967295);var Ez=((EA+60)&4294967295);var Ey=uA[((Ez)>>2)];var Ex=(Ey)&2;var Ew=(((Ex))|0)!=0;if(Ew){EE=1}else{EE=70}$bb$$return$2:do{if(EE==1){CX=0;$bb17$4:while(1){var EM=BQ;var EL=(((EM)-1)&4294967295);var EK=CX;var EJ=(((EL))|0)>(((EK))|0);if(!(EJ)){EE=70;break $bb$$return$2}var Ev=Eh;var Eu=CX;var Et=((Ev+Eu)&4294967295);var Er=la[((Et)>>0)];var Eq=iB((Er),8,0)==6;var Ep=CX;var Eo=(((Ep)+1)&4294967295);if(Eq){EE=3;break $bb17$4}CX=Eo;EE=69;continue $bb17$4}var En=Eh;var Em=((En+Eo)&4294967295);CI=Em;var El=Do;var Ek=(El)&2097152;var Ej=(((Ek))|0)!=0;var Ei=CI;var Eg=la[((Ei)>>0)];var Ef=iB((Eg),8,0);if(Ej){EE=4}else{EE=36}if(EE==4){Bn=69;EG=0;$bb4_i$11:while(1){var DU=uA[((rW)>>2)];var DT=EG;var DS=(((DT))|0)<(((DU))|0);if(!(DS)){EE=10;break $bb4_i$11}var Ee=EG;var Ed=((nm+Ee*4)&4294967295);var Ec=uA[((Ed)>>2)];var Eb=(Ec)==0;if(Eb){EE=8}else{EE=6}if(EE==6){var Ea=EG;var D9=((nm+Ea*4)&4294967295);var D8=uA[((D9)>>2)];var D7=((D8)&4294967295);var D6=uA[((D7)>>2)];var D5=Bn;var D4=(((D6))|0)==(((D5))|0);if(D4){EE=7;break $bb4_i$11}}var DX=EG;var DV=(((DX)+1)&4294967295);EG=DV;EE=9;continue $bb4_i$11}if(EE==10){CO=0}else{if(EE==7){var D3=EG;var D2=((nm+D3*4)&4294967295);var D1=uA[((D2)>>2)];var D0=((D1+10)&4294967295);var DZ=ll[((D0)>>0)];var DY=oD((DZ),8,0);CO=DY}}var DR=CO;BR=DR;var CK=BR;var DQ=(((Ef))|0)==(((CK))|0);var DP=oD((DQ),1,0);Cu=DP;var EF=iB((DP),8,0)!=0;if(EF){EE=12}else{EE=20}if(EE==12){ED=101;CB=0;while(1){var Dt=uA[((rW)>>2)];var Ds=CB;var Dr=(((Ds))|0)<(((Dt))|0);if(!(Dr)){EE=18;break}var DO=CB;var DN=((nm+DO*4)&4294967295);var DM=uA[((DN)>>2)];var DK=(DM)==0;if(DK){EE=16}else{EE=14}if(EE==14){var DJ=CB;var DI=((nm+DJ*4)&4294967295);var DH=uA[((DI)>>2)];var DG=((DH)&4294967295);var DF=uA[((DG)>>2)];var DE=ED;var DD=(((DF))|0)==(((DE))|0);if(DD){EE=15;break}}var Dv=CB;var Du=(((Dv)+1)&4294967295);CB=Du;EE=17;continue}if(EE==18){CV=0}else{if(EE==15){var DC=CB;var DB=((nm+DC*4)&4294967295);var Dz=uA[((DB)>>2)];var Dy=((Dz+10)&4294967295);var Dx=ll[((Dy)>>0)];var Dw=oD((Dx),8,0);CV=Dw}}var Dq=CV;CY=Dq;var AV=CY;var Dn=(((AV))&255);var Dm=CI;la[((Dm)>>0)]=Dn}var Dl=CI;var Dk=la[((Dl)>>0)];var Dj=iB((Dk),8,0);EI=79;CG=0;$bb4_i63$34:while(1){var CA=uA[((rW)>>2)];var Cz=CG;var Cy=(((Cz))|0)<(((CA))|0);if(!(Cy)){EE=26;break $bb4_i63$34}var Di=CG;var Dh=((nm+Di*4)&4294967295);var Dg=uA[((Dh)>>2)];var Df=(Dg)==0;if(Df){EE=24}else{EE=22}if(EE==22){var De=CG;var Db=((nm+De*4)&4294967295);var C9=uA[((Db)>>2)];var C8=((C9)&4294967295);var C7=uA[((C8)>>2)];var C6=EI;var C5=(((C7))|0)==(((C6))|0);if(C5){EE=23;break $bb4_i63$34}}var CD=CG;var CC=(((CD)+1)&4294967295);CG=CC;EE=25;continue $bb4_i63$34}if(EE==26){CU=0}else{if(EE==23){var C4=CG;var C3=((nm+C4*4)&4294967295);var C1=uA[((C3)>>2)];var C0=((C1+10)&4294967295);var CF=ll[((C0)>>0)];var CE=oD((CF),8,0);CU=CE}}var Cx=CU;Dd=Cx;var Bk=Dd;var Cw=(((Dj))|0)==(((Bk))|0);var Cv=oD((Cw),1,0);Cs=Cv;var Da=iB((Cv),8,0)!=0;if(!(Da)){EE=70;break $bb$$return$2}EQ=111;CJ=0;while(1){var B4=uA[((rW)>>2)];var B2=CJ;var B1=(((B2))|0)<(((B4))|0);if(!(B1)){EE=34;break}var Ct=CJ;var Cr=((nm+Ct*4)&4294967295);var Cp=uA[((Cr)>>2)];var Cn=(Cp)==0;if(Cn){EE=32}else{EE=30}if(EE==30){var Cl=CJ;var Ck=((nm+Cl*4)&4294967295);var Cj=uA[((Ck)>>2)];var Ci=((Cj)&4294967295);var Ch=uA[((Ci)>>2)];var Cg=EQ;var Cf=(((Ch))|0)==(((Cg))|0);if(Cf){EE=31;break}}var B6=CJ;var B5=(((B6)+1)&4294967295);CJ=B5;EE=33;continue}if(EE==34){CT=0}else{if(EE==31){var Ce=CJ;var Cd=((nm+Ce*4)&4294967295);var Cb=uA[((Cd)>>2)];var B9=((Cb+10)&4294967295);var B8=ll[((B9)>>0)];var B7=oD((B8),8,0);CT=B7}}var B0=CT;Dp=B0;var Bx=Dp;var BZ=(((Bx))&255);var BY=CI;la[((BY)>>0)]=BZ}else{if(EE==36){Fd=101;CL=0;$bb4_i41$56:while(1){var BA=uA[((rW)>>2)];var Bz=CL;var By=(((Bz))|0)<(((BA))|0);if(!(By)){EE=42;break $bb4_i41$56}var BW=CL;var BV=((nm+BW*4)&4294967295);var BU=uA[((BV)>>2)];var BT=(BU)==0;if(BT){EE=40}else{EE=38}if(EE==38){var BS=CL;var BP=((nm+BS*4)&4294967295);var BO=uA[((BP)>>2)];var BN=((BO)&4294967295);var BM=uA[((BN)>>2)];var BL=Fd;var BK=(((BM))|0)==(((BL))|0);if(BK){EE=39;break $bb4_i41$56}}var BC=CL;var BB=(((BC)+1)&4294967295);CL=BB;EE=41;continue $bb4_i41$56}if(EE==42){CS=0}else{if(EE==39){var BI=CL;var BH=((nm+BI*4)&4294967295);var BG=uA[((BH)>>2)];var BF=((BG+10)&4294967295);var BE=ll[((BF)>>0)];var BD=oD((BE),8,0);CS=BD}}var Bw=CS;DA=Bw;var BJ=DA;var Bv=(((Ef))|0)==(((BJ))|0);var Bu=oD((Bv),1,0);Cq=Bu;var C2=iB((Bu),8,0)!=0;if(C2){EE=44}else{EE=52}if(EE==44){AR=69;CW=0;while(1){var AT=uA[((rW)>>2)];var AJ=CW;var AI=(((AJ))|0)<(((AT))|0);if(!(AI)){EE=50;break}var Bt=CW;var Bs=((nm+Bt*4)&4294967295);var Br=uA[((Bs)>>2)];var Bq=(Br)==0;if(Bq){EE=48}else{EE=46}if(EE==46){var Bp=CW;var Bo=((nm+Bp*4)&4294967295);var Bm=uA[((Bo)>>2)];var Bl=((Bm)&4294967295);var Bi=uA[((Bl)>>2)];var Bg=AR;var A5=(((Bi))|0)==(((Bg))|0);if(A5){EE=47;break}}var AY=CW;var AW=(((AY)+1)&4294967295);CW=AW;EE=49;continue}if(EE==50){CR=0}else{if(EE==47){var A4=CW;var A3=((nm+A4*4)&4294967295);var A2=uA[((A3)>>2)];var A1=((A2+10)&4294967295);var A0=ll[((A1)>>0)];var AZ=oD((A0),8,0);CR=AZ}}var AH=CR;DL=AH;var BX=DL;var i=(((BX))&255);var e=CI;la[((e)>>0)]=i}var Fm=CI;var Fl=la[((Fm)>>0)];var Fk=iB((Fl),8,0);Bf=111;Dc=0;$bb4_i19$79:while(1){var A9=uA[((rW)>>2)];var A8=Dc;var A7=(((A8))|0)<(((A9))|0);if(!(A7)){EE=58;break $bb4_i19$79}var Fi=Dc;var Fg=((nm+Fi*4)&4294967295);var E5=uA[((Fg)>>2)];var E4=(E5)==0;if(E4){EE=56}else{EE=54}if(EE==54){var E3=Dc;var E2=((nm+E3*4)&4294967295);var E1=uA[((E2)>>2)];var E0=((E1)&4294967295);var EZ=uA[((E0)>>2)];var EY=Bf;var EW=(((EZ))|0)==(((EY))|0);if(EW){EE=55;break $bb4_i19$79}}var Bb=Dc;var Ba=(((Bb)+1)&4294967295);Dc=Ba;EE=57;continue $bb4_i19$79}if(EE==58){CQ=0}else{if(EE==55){var EU=Dc;var Bj=((nm+EU*4)&4294967295);var Bh=uA[((Bj)>>2)];var Be=((Bh+10)&4294967295);var Bd=ll[((Be)>>0)];var Bc=oD((Bd),8,0);CQ=Bc}}var AX=CQ;DW=AX;var Ca=DW;var AU=(((Fk))|0)==(((Ca))|0);var AS=oD((AU),1,0);Co=AS;var CZ=iB((AS),8,0)!=0;if(!(CZ)){EE=70;break $bb$$return$2}B3=79;CH=0;while(1){var ET=uA[((rW)>>2)];var ES=CH;var ER=(((ES))|0)<(((ET))|0);if(!(ER)){EE=66;break}var AQ=CH;var AP=((nm+AQ*4)&4294967295);var AO=uA[((AP)>>2)];var AN=(AO)==0;if(AN){EE=64}else{EE=62}if(EE==62){var AM=CH;var AL=((nm+AM*4)&4294967295);var AK=uA[((AL)>>2)];var Fj=((AK)&4294967295);var Fh=uA[((Fj)>>2)];var Ff=B3;var Fe=(((Fh))|0)==(((Ff))|0);if(Fe){EE=63;break}}var EX=CH;var EV=(((EX)+1)&4294967295);CH=EV;EE=65;continue}if(EE==66){CP=0}else{if(EE==63){var Fc=CH;var Fb=((nm+Fc*4)&4294967295);var Fa=uA[((Fb)>>2)];var E9=((Fa+10)&4294967295);var E8=ll[((E9)>>0)];var E7=oD((E8),8,0);CP=E7}}var EP=CP;E6=EP;var Cm=E6;var EO=(((Cm))&255);var EN=CI;la[((EN)>>0)]=EO}}}}while(0);return;return}function jH(A5,BV,Bj,AN){var Bg;var Bh;var BS;var Bq;var By;var AI;var Bi;var Bp;var BQ;var Br;Bh=A5;BS=BV;Bq=Bj;By=AN;var BU=By;var BT=wg(BU);var BR=BS;var BP=wg(BR);var BO=(((BP)+(BT))&4294967295);Br=BO;var BN=Br;var BM=Bq;var BL=(((BN))|0)>=(((BM))|0);if(BL){Bg=14}else{Bg=1}$return$$bb$2:do{if(Bg==1){BQ=0;var BK=By;Bi=BK;var BJ=Bi;var Bw=la[((BJ)>>0)];Bp=Bw;var Bv=Bp;var Bu=iB((Bv),8,0)!=0;var Bt=oD((Bu),1,0);AI=Bt;var Bs=Bi;var Bo=((Bs+1)&4294967295);Bi=Bo;if(Bu){Bg=2}else{Bg=12}$bb1$$bb12$4:do{if(Bg==2){$bb1$5:while(1){var Bn=Bp;var Bm=oD((Bn),8,0);var Bl=uA[((rW)>>2)];var Bk=(((Bm))|0)>=(((Bl))|0);if(Bk){Bg=3}else{Bg=4}$bb11_backedge$$bb2$7:do{if(Bg==4){var A8=Bp;var A7=oD((A8),8,0);var A6=((nm+A7*4)&4294967295);var A3=uA[((A6)>>2)];var A2=((A3+11)&4294967295);var A1=la[((A2)>>0)];var A0=iB((A1),8,0)==1;var AZ=Bp;var AY=oD((AZ),8,0);var AX=((nm+AY*4)&4294967295);var AW=uA[((AX)>>2)];if(A0){Bg=5}else{Bg=7}if(Bg==5){var AV=((AW+14)&4294967295);var AU=ll[((AV)>>0)];var AT=oD((AU),8,0)<=3;if(!(AT)){Bg=3;break $bb11_backedge$$bb2$7}BQ=1}else{if(Bg==7){var AS=((AW+11)&4294967295);var AR=la[((AS)>>0)];var AQ=iB((AR),8,0)==2;if(!(AQ)){Bg=3;break $bb11_backedge$$bb2$7}var AP=Bp;var AO=oD((AP),8,0);var AM=((nm+AO*4)&4294967295);var AL=uA[((AM)>>2)];var AK=((AL+4)&4294967295);var AJ=uA[((AK)>>2)];var AH=(AJ)&2;var i=(((AH))|0)==0;if(i){Bg=9}else{Bg=11}$bb8$$bb10$14:do{if(Bg==9){var e=BQ;var B2=(((e))|0)==0;if(!(B2)){Bg=11;break $bb8$$bb10$14}var B1=Bh;var B0=((B1+8300)&4294967295);var BZ=uA[((B0)>>2)];var BY=(((BZ)+1)&4294967295);var BX=Bh;var BW=((BX+8300)&4294967295);uA[((BW)>>2)]=BY}}while(0);BQ=0;var BI=Bh;var BH=((BI+8296)&4294967295);var BG=uA[((BH)>>2)];var BF=(((BG)+1)&4294967295);var BE=Bh;var BD=((BE+8296)&4294967295);uA[((BD)>>2)]=BF}}}}while(0);var Bf=Bi;var Be=la[((Bf)>>0)];Bp=Be;var Bd=Bp;var Bc=iB((Bd),8,0)!=0;var Bb=oD((Bc),1,0);AI=Bb;var Ba=Bi;var A9=((Ba+1)&4294967295);Bi=A9;var A4=iB((Bb),8,0)!=0;if(A4){Bg=2;continue $bb1$5}else{Bg=12;break $bb1$$bb12$4}}}}while(0);var BC=BS;var BB=(BC)!=0;if(!(BB)){Bg=14;break $return$$bb$2}var BA=BS;var Bz=By;var Bx=sU(BA,Bz)}}while(0);return;return}function aB(CI,Cw,Bv,AL){var A9=vp;vp+=248;n1(A9,0,248);var Bz;var Cp;var BV;var BW;var BK=A9;var Cx;var Bk;var AM;var Cv;var Bi;var Bj;var Cm;var i;var Bx;var B7;var CH;var By=A9+96;Cx=CI;Bk=Cw;AM=Bv;Cv=AL;CH=0;var CV=uA[((us)>>2)];var CU=(((CV))|0)==3;if(CU){Bz=1}else{Bz=10}$bb$$bb7$2:do{if(Bz==1){var CT=((By+132)&4294967295);var CS=((CT)&4294967295);la[((CS)>>0)]=0;var CR=Cv;var CQ=(CR)==0;if(CQ){Bz=2}else{Bz=5}if(Bz==2){var CP=AM;var CO=((CP+10)&4294967295);var CN=ll[((CO)>>0)];var CM=oD((CN),8,0);Cp=CM;BV=By;var B6=((BK)&4294967295);var B5=B6;ud(B5,0,96,1,0);BW=0;while(1){var B4=BW;var B3=((BK+B4*24)&4294967295);var B2=((B3)&4294967295);la[((B2)>>0)]=9;var B1=BW;var B0=uA[((((nm+36)&4294967295))>>2)];var BZ=((BK+B1*24)&4294967295);var BY=((BZ+8)&4294967295);uA[((BY)>>2)]=B0;var BX=BW;var BU=(((BX)+1)&4294967295);BW=BU;var BT=(((BU))|0)<=3;if(BT){Bz=3;continue}else{Bz=4;break}}var BS=Cp;var BR=(((BS))&255);var BQ=((BK+24)&4294967295);var BP=((BQ)&4294967295);la[((BP)>>0)]=BR;var BO=Cp;var BN=((nm+BO*4)&4294967295);var BM=uA[((BN)>>2)];var BL=((BK+24)&4294967295);var BJ=((BL+8)&4294967295);uA[((BJ)>>2)]=BM;var BI=((BK+48)&4294967295);var BH=((BI+6)&4294967295);uW[((BH)>>1)]=1;var BG=((BK+24)&4294967295);var BF=BV;lw(0,0,BG,BF)}else{if(Bz==5){var BE=Cv;lw(0,0,BE,By)}}var BD=((By+132)&4294967295);var BC=((BD)&4294967295);var BB=wg(BC);Bx=BB;var BA=(((BB))|0)>0;if(!(BA)){Bz=10;break $bb$$bb7$2}var Bw=((By+132)&4294967295);var Bu=((Bw)&4294967295);var Bt=la[((Bu)>>0)];var Bs=iB((Bt),8,0);CH=Bs;var Br=CH;var Bq=(((Br))>>>0)>32;var Bp=oD((Bq),1,0);Bj=Bp;var Bo=Bj;var Bl=iB((Bo),8,0)!=0;if(Bl){Bz=8}else{Bz=9}if(Bz==8){var Bn=Bk;var Bm=uA[((Bn)>>2)];var Bh=Cx;var Bg=((Bh+Bm)&4294967295);var Bf=((By+132)&4294967295);var Be=((Bf)&4294967295);var Bd=oJ(Bg,Be);var Bc=Bk;var Bb=uA[((Bc)>>2)];var Ba=Bx;var A8=(((Ba)+(Bb))&4294967295);var A7=Bk;uA[((A7)>>2)]=A8}var A6=CH;var A5=(((A6))>>>0)>31;if(A5){Bz=25;break $bb$$bb7$2}else{Bz=10;break $bb$$bb7$2}}}while(0);$return$$bb7$15:do{if(Bz==10){B7=1;var A4=AM;var A3=((A4)&4294967295);var A2=uA[((A3)>>2)];i=A2;$bb24$17:while(1){var Ce=i;var Cd=(Ce)&255;Cm=Cd;var Cc=Cm;var Cb=(((Cc))|0)!=0;var Ca=oD((Cb),1,0);Bi=Ca;var B9=iB((Ca),8,0)!=0;if(!(B9)){Bz=25;break $return$$bb7$15}var A1=Cm;var A0=(((A1))|0)==47;var AZ=uA[((eC)>>2)];var AY=(((AZ))|0)==0;var B8=(A0)&(AY);if(B8){Bz=25;break $return$$bb7$15}var AX=uA[((us)>>2)];var AW=(((AX))|0)==3;if(AW){Bz=13}else{Bz=21}$bb11$$bb21$21:do{if(Bz==13){var AV=B7;var AU=(((AV))|0)!=0;var AT=Cm;var AS=(((AT))|0)==95;var CA=(AU)&(AS);if(CA){Bz=25;break $return$$bb7$15}var AR=(((AT))|0)==35;if(AR){Bz=15}else{Bz=16}if(Bz==15){var AQ=AM;var AP=((AQ+11)&4294967295);var AO=la[((AP)>>0)];var AN=iB((AO),8,0)==2;if(AN){Bz=25;break $return$$bb7$15}}var AK=B7;var AJ=(((AK))|0)==0;if(AJ){Bz=17}else{Bz=18}if(Bz==17){var AI=Cm;var AH=(((AI)-48)&4294967295);var e=(((AH))>>>0)<=9;if(e){Bz=23;break $bb11$$bb21$21}}var C0=Cm;var CZ=(((C0))|0)>31;var CY=Cm;var CX=(((CY))|0)<=127;var CC=(CZ)&(CX);if(CC){Bz=19}else{Bz=20}if(Bz==19){var CW=Cm;var CL=(((CW)-32)&4294967295);var CK=((sk+CL*2)&4294967295);var CJ=xV[((CK)>>1)];var CG=oD((CJ),16,0);Cm=CG}var CF=Bk;var CE=uA[((CF)>>2)];var CD=Bk;var CB=uA[((CD)>>2)];var Cz=Cx;var Cy=((Cz+CB)&4294967295);var Cu=Cm;var Ct=zD(Cu,Cy);var Cs=(((Ct)+(CE))&4294967295);var Cr=Bk;uA[((Cr)>>2)]=Cs;Bz=22;break $bb11$$bb21$21}else{if(Bz==21){var Cq=Bk;var Co=uA[((Cq)>>2)];var Cn=Cm;var Cl=(((Cn))&255);var Ck=Cx;var Cj=((Ck+Co)&4294967295);la[((Cj)>>0)]=Cl;var Ci=(((Co)+1)&4294967295);var Ch=Bk;uA[((Ch)>>2)]=Ci;Bz=22;break $bb11$$bb21$21}}}while(0);if(Bz==22){B7=0}var Cg=i;var Cf=(((Cg))|0)>>8;i=Cf;Bz=24;continue $bb24$17}}}while(0);vp=A9;return;return}function qL(BV,BZ){var Bf=vp;vp+=4;n1(Bf,0,4);var BX;var AI;var Cl;var AJ;var A5;var CE=Bf;var A2;var B5;var BY;var Cm;AI=BV;Cl=BZ;uA[((CE)>>2)]=0;var CH=AI;var CG=(CH)!=0;if(CG){BX=1}else{BX=28}if(BX==1){A5=1;$bb24$4:while(1){var Bq=uA[((xn)>>2)];var Bn=(((Bq)-2)&4294967295);var Bk=A5;var Bh=(((Bn))|0)<=(((Bk))|0);if(Bh){BX=25;break $bb24$4}var Bd=Cl;var Ba=(((Bd)-6)&4294967295);var A4=uA[((CE)>>2)];var A3=(((Ba))|0)>(((A4))|0);if(!(A3)){BX=25;break $bb24$4}var CF=A5;var CD=((eW+CF*24)&4294967295);Cm=CD;var CC=Cm;var CB=((CC+19)&4294967295);var CA=la[((CB)>>0)];var Cz=iB((CA),8,0)!=0;if(Cz){BX=3}else{BX=4}if(BX==3){var Cy=uA[((CE)>>2)];var Cx=AI;var Cf=((Cx+Cy)&4294967295);la[((Cf)>>0)]=32;var Cd=(((Cy)+1)&4294967295);uA[((CE)>>2)]=Cd}var Cb=Cm;var B9=((Cb+4)&4294967295);var B7=xV[((B9)>>1)];var B4=oD((B7),16,0);var B3=(B4)&4;var B2=(((B3))|0)!=0;if(B2){BX=5}else{BX=13}$bb4$$bb14$11:do{if(BX==5){var B1=Cm;var B0=((B1+1)&4294967295);var BQ=ll[((B0)>>0)];var BO=oD((BQ),8,0);A2=BO;var BM=A2;var BK=(((BM))|0)>1;var BI=oD((BK),1,0);AJ=BI;var BG=AJ;var BB=iB((BG),8,0)!=0;if(!(BB)){BX=13;break $bb4$$bb14$11}B5=0;var BF=A2;var BE=(((BF))|0)>5;if(BE){BX=7}else{BX=8}if(BX==7){A2=5}var BD=uA[((us)>>2)];var BC=(((BD))|0)==3;if(BC){BX=9}else{BX=11}$bb8$$bb12$17:do{if(BX==9){B5=716;var Br=A2;var Bo=(((Br))|0)>3;if(!(Bo)){BX=12;break $bb8$$bb12$17}B5=712}else{if(BX==11){var Bl=A2;var Bi=((((qo)&4294967295)+Bl)&4294967295);var Be=la[((Bi)>>0)];var Bb=iB((Be),8,0);B5=Bb;var A9=(((Bb))|0)!=0;if(!(A9)){BX=13;break $bb4$$bb14$11}}}}while(0);var A8=uA[((CE)>>2)];var A7=AI;var A6=((A7+A8)&4294967295);var AZ=B5;var AX=zD(AZ,A6);var AV=uA[((CE)>>2)];var AT=(((AV)+(AX))&4294967295);uA[((CE)>>2)]=AT}}while(0);var AR=Cm;var AP=((AR+8)&4294967295);var AN=uA[((AP)>>2)];var AM=((AN+10)&4294967295);var AL=la[((AM)>>0)];var AK=iB((AL),8,0)==21;var AH=Cm;if(AK){BX=14}else{BX=15}$bb15$$bb16$23:do{if(BX==14){var i=((AH+3)&4294967295);var e=ll[((i)>>0)];var CO=oD((e),8,0);var CN=((ur+CO*48)&4294967295);var CM=((CN)&4294967295);var CL=((CM)&4294967295);BY=CL;var CK=uA[((CE)>>2)];var CJ=AI;var CI=((CJ+CK)&4294967295);var Cw=BY;var Cv=qs(CI,((xZ)&4294967295),Cw);var Cu=BY;var Ct=wg(Cu);var Cs=uA[((CE)>>2)];var Cr=(((Ct)+2)&4294967295);var Cq=(((Cr)+(Cs))&4294967295);uA[((CE)>>2)]=Cq}else{if(BX==15){var Cp=((AH+8)&4294967295);var Co=uA[((Cp)>>2)];var Cn=AI;var Ck=Cm;aB(Cn,CE,Co,Ck);var Cj=Cm;var Ci=((Cj+4)&4294967295);var Ch=xV[((Ci)>>1)];var Cg=oD((Ch),16,0);var Ce=(Cg)&8;var Cc=(((Ce))|0)!=0;if(Cc){BX=16}else{BX=17}if(BX==16){var Ca=uA[((((nm+48)&4294967295))>>2)];var B8=AI;aB(B8,CE,Ca,0)}var B6=Cm;var BW=((B6+4)&4294967295);var BU=xV[((BW)>>1)];var BT=oD((BU),16,0);var BS=(BT)&4;var BR=(((BS))|0)!=0;if(BR){BX=18}else{BX=20}$bb19$$bb21$29:do{if(BX==18){var BP=Cm;var BN=((BP+15)&4294967295);var BL=la[((BN)>>0)];var BJ=iB((BL),8,0)!=2;if(!(BJ)){BX=20;break $bb19$$bb21$29}var BH=uA[((((nm+80)&4294967295))>>2)];var BA=AI;aB(BA,CE,BH,0)}}while(0);var Bz=Cm;var Bx=((Bz+3)&4294967295);var Bv=la[((Bx)>>0)];var Bt=iB((Bv),8,0)!=0;if(!(Bt)){BX=22;break $bb15$$bb16$23}var Bp=Cm;var Bm=((Bp+3)&4294967295);var Bj=ll[((Bm)>>0)];var Bg=oD((Bj),8,0);var Bc=((nm+Bg*4)&4294967295);var By=uA[((Bc)>>2)];var Bw=AI;aB(Bw,CE,By,0)}}}while(0);var Bu=A5;var Bs=(((Bu)+1)&4294967295);A5=Bs;BX=23;continue $bb24$4}var A1=uA[((CE)>>2)];var A0=Cl;var AY=(((A1))|0)>=(((A0))|0);if(AY){BX=26}else{BX=27}if(BX==26){var AW=Cl;var AU=(((AW)-1)&4294967295);uA[((CE)>>2)]=AU}var AS=uA[((CE)>>2)];var AQ=AI;var AO=((AQ+AS)&4294967295);la[((AO)>>0)]=0}vp=Bf;return;return}function dM(BP,Cc){var Bq;var AT;var BK;var AV;var AY;var A0;var BO;var Bw;var BB;var AM;AT=BP;BK=Cc;var Ca=AT;var B9=la[((Ca)>>0)];BO=B9;var B8=BO;var B7=iB((B8),8,0)!=0;var B6=oD((B7),1,0);A0=B6;var B4=AT;var B3=((B4+1)&4294967295);AT=B3;if(B7){Bq=1}else{Bq=14}$bb$$bb18$2:do{if(Bq==1){$bb$3:while(1){var B2=BO;var B1=iB((B2),8,0)==-1;if(B1){Bq=2}else{Bq=3}$bb16_backedge$$bb1$5:do{if(Bq==3){var Bu=BO;var Bt=oD((Bu),8,0);var Bs=((nm+Bt*4)&4294967295);var Br=uA[((Bs)>>2)];AM=Br;var Bk=AM;var Bi=(Bk)==0;var Bg=oD((Bi),1,0);AY=Bg;var Be=AY;var A7=iB((Be),8,0)!=0;if(A7){Bq=2;break $bb16_backedge$$bb1$5}var Bd=AM;var Bc=((Bd+11)&4294967295);var Bb=la[((Bc)>>0)];var Ba=iB((Bb),8,0)!=1;if(Ba){Bq=9}else{Bq=5}$bb8$$bb3$8:do{if(Bq==5){var A9=AM;var A8=((A9+14)&4294967295);var A6=ll[((A8)>>0)];var A5=oD((A6),8,0)>4;if(A5){Bq=9;break $bb8$$bb3$8}var A4=AM;var A3=((A4+8)&4294967295);var A2=uW[((A3)>>1)];var A1=iB((A2),16,0)!=0;if(A1){Bq=9;break $bb8$$bb3$8}var AZ=AM;var AX=((AZ+14)&4294967295);var AW=ll[((AX)>>0)];var AU=oD((AW),8,0)>1;if(!(AU)){Bq=2;break $bb16_backedge$$bb1$5}var AS=AM;var AR=((AS+14)&4294967295);var AQ=ll[((AR)>>0)];var AP=oD((AQ),8,0);var AO=((((fs)&4294967295)+AP)&4294967295);var AN=la[((AO)>>0)];var AL=BK;la[((AL)>>0)]=AN;var AK=BK;var AJ=((AK+1)&4294967295);BK=AJ;Bq=2;break $bb16_backedge$$bb1$5}}while(0);var AI=AM;var AH=((AI)&4294967295);var i=uA[((AH)>>2)];BB=i;var e=BB;var Ck=(((e))&255);Bw=Ck;var Cj=Bw;var Ci=iB((Cj),8,0)!=0;var Ch=oD((Ci),1,0);AV=Ch;var Cd=iB((Ch),8,0)!=0;if(Cd){Bq=10}else{Bq=11}$bb9$$bb12$14:do{if(Bq==10){while(1){var Cg=Bw;var Cf=BK;la[((Cf)>>0)]=Cg;var Ce=BK;var BZ=((Ce+1)&4294967295);BK=BZ;var BY=BB;var BX=(((BY))>>>0)>>>8;BB=BX;var BW=BB;var BV=(((BW))&255);Bw=BV;var BU=Bw;var BT=iB((BU),8,0)!=0;var BS=oD((BT),1,0);AV=BS;var Cb=iB((BS),8,0)!=0;if(Cb){Bq=10;continue}else{Bq=11;break $bb9$$bb12$14}}}}while(0);var BR=BO;var BQ=iB((BR),8,0)==21;if(!(BQ)){Bq=2;break $bb16_backedge$$bb1$5}var BN=AT;var BM=la[((BN)>>0)];var BL=iB((BM),8,0);var BJ=z6(BL);var BI=(((BJ))|0)!=0;if(!(BI)){Bq=2;break $bb16_backedge$$bb1$5}while(1){var BH=AT;var BF=la[((BH)>>0)];var BD=BK;la[((BD)>>0)]=BF;var BA=BK;var By=((BA+1)&4294967295);BK=By;var Bp=AT;var Bo=((Bp+1)&4294967295);AT=Bo;var Bn=AT;var Bm=la[((Bn)>>0)];var Bl=iB((Bm),8,0);var Bj=z6(Bl);var Bh=(((Bj))|0)!=0;if(Bh){Bq=13;continue}else{Bq=2;break $bb16_backedge$$bb1$5}}}}while(0);var B0=AT;var BG=la[((B0)>>0)];BO=BG;var BE=BO;var BC=iB((BE),8,0)!=0;var Bz=oD((BC),1,0);A0=Bz;var Bx=AT;var Bv=((Bx+1)&4294967295);AT=Bv;var B5=iB((Bz),8,0)!=0;if(B5){Bq=1;continue $bb$3}else{Bq=14;break $bb$$bb18$2}}}}while(0);var Bf=BK;la[((Bf)>>0)]=0;return;return}function aT(A6,Dz,CF,Cy,BL,Cz,A5){var Br=vp;vp+=320;n1(Br,0,320);var Gg;var Gi;var Er;var C6;var GR;var FN;var CB;var Cg;var Dq;var CU;var CI;var CK;var EH;var CD;var Gj;var CE;var BV;var Cq;var Gk;var BC;var DA;var CA;var CV;var BZ;var CG;var Dt;var En=Br;var GA;var Cl=Br+160;var CJ;Gi=A6;Er=Dz;C6=CF;GR=Cy;FN=BL;CB=Cz;Cg=A5;Gk=0;Dt=0;var CT=Cg;var CS=(CT)!=0;if(CS){Gg=1}else{Gg=2}if(Gg==1){var CR=Cg;var CQ=((CR)&4294967295);var CP=uA[((CQ)>>2)];Dt=CP}var CO=Er;CG=CO;var CN=Gi;var CM=((CN+288)&4294967295);var CL=uA[((CM)>>2)];var F5=(((CL))|0)>0;if(F5){Gg=3}else{Gg=4}if(Gg==3){var F4=((En)&4294967295);var F3=Er;var F2=oJ(F4,F3);var F1=Gi;var F0=((En)&4294967295);var FZ=zU(F1,F0);Gj=FZ;var FY=((En)&4294967295);Er=FY}else{if(Gg==4){var FX=Er;var FW=wg(FX);Gj=FW}}var FA=Er;var Fz=ca(FA);EH=Fz;var Fy=EH;var Fx=Gi;var Fw=((Fx+1056)&4294967295);var Fv=((Fw+Fy*4)&4294967295);var Fu=uA[((Fv)>>2)];CI=Fu;var Ft=(Fu)==0;if(Ft){Gg=6}else{Gg=94}if(Gg==6){var Fs=FN;var Fr=(Fs)!=0;if(Fr){Gg=7}else{Gg=8}if(Gg==7){var E6=FN;uA[((E6)>>2)]=0}CU=0}else{if(Gg==94){$bb105$14:while(1){var Dx=CI;var Dw=la[((Dx)>>0)];var Dv=iB((Dw),8,0)!=0;if(!(Dv)){Gg=95;break $bb105$14}var E5=CI;var E4=((E5)&4294967295);var E3=la[((E4)>>0)];var E2=iB((E3),8,0);var E1=CI;var E0=((E1+E2)&4294967295);CK=E0;var EZ=CI;var EY=((EZ+1)&4294967295);var EX=la[((EY)>>0)];var EB=iB((EX),8,0);var EA=(EB)&127;var Ez=Gj;var Ey=(((EA))|0)!=(((Ez))|0);if(Ey){Gg=11}else{Gg=10}$bb11$$bb10$17:do{if(Gg==10){var Ex=Gj;var Ew=(Ex)&63;var Ev=CI;var Eu=((Ev+2)&4294967295);var Et=Er;var Es=l4(Et,Eu,Ew);var D5=(((Es))|0)!=0;if(D5){Gg=11;break $bb11$$bb10$17}var D3=C6;BZ=D3;BV=0;Cq=0;var D2=CI;var D1=((D2+1)&4294967295);var D0=la[((D1)>>0)];var DZ=iB((D0),8,0);var DY=(DZ)&128;DA=DY;var DX=CI;var DW=((DX+1)&4294967295);var DK=la[((DW)>>0)];var DJ=iB((DK),8,0);var DI=(DJ)&63;var DH=(((DI)+2)&4294967295);var DG=CI;var DF=((DG+DH)&4294967295);CI=DF;var DE=DA;var DD=(((DE))|0)!=0;var DC=GR;if(DD){Gg=13}else{Gg=14}if(Gg==13){var DB=((DC)&4294967295);la[((DB)>>0)]=0;CD=0}else{if(Gg==14){var Ds=CI;var Dr=oJ(DC,Ds);var Dp=CI;var Do=wg(Dp);CD=Do;var Dn=CD;var Dm=(((Dn)+1)&4294967295);var Dl=CI;var Dk=((Dl+Dm)&4294967295);CI=Dk}}$bb42$23:while(1){var Bt=CI;var Bs=CK;var Bq=(Bt)<(Bs);if(!(Bq)){Gg=38;break $bb42$23}var Dj=CI;var Di=la[((Dj)>>0)];CE=Di;var Dg=CI;var Df=((Dg+1)&4294967295);CI=Df;var De=CE;var Dd=oD((De),8,0)>99;var Dc=CE;if(Dd){Gg=16}else{Gg=21}if(Gg==16){var Db=oD((Dc),8,0)>131;var Da=Gi;var C9=((Da+692)&4294967295);var C8=xk[((C9)>>2)];var C7=CE;var C5=oD((C7),8,0);if(Db){Gg=17}else{Gg=19}if(Gg==17){var C4=(((C5)-132)&4294967295);var C3=(((C8))|0)>>(((C4))|0);var C2=(C3)&1;var C1=(((C2))&255);var Gh=iB((C1),8,0)!=0;if(!(Gh)){Gg=37;continue $bb42$23}Gk=1;Gg=37;continue $bb42$23}else{if(Gg==19){var C0=(((C5)-100)&4294967295);var CZ=(((C8))|0)>>(((C0))|0);var CY=(CZ)&1;var CX=(((CY))|0)==0;if(!(CX)){Gg=37;continue $bb42$23}Gk=1;Gg=37;continue $bb42$23}}}else{if(Gg==21){var CW=oD((Dc),8,0)>80;if(CW){Gg=22}else{Gg=31}if(Gg==22){var Cx=CK;var Cw=(Cx);var Cv=CI;var Cu=(Cv);var Ct=(((Cw)-(Cu))&4294967295);BC=Ct;var Cs=CE;var Cr=oD((Cs),8,0);var Cp=(((Cr)-80)&4294967295);CA=Cp;CV=0;var Co=CV;var Cn=CA;var Ck=(((Co))|0)<=(((Cn))|0);if(Ck){Gg=23}else{Gg=26}$bb26$$bb30$36:do{if(Gg==23){while(1){var Cj=Dt;var Ci=(Cj)&3072;var Ch=(((Ci))|0)!=0;if(Ch){Gg=24}else{Gg=25}if(Gg==24){Gk=1}var Cf=CV;var Ce=(((Cf)+1)&4294967295);CV=Ce;var Cd=CV;var Cc=CA;var Cb=(((Cd))|0)<=(((Cc))|0);if(Cb){Gg=23;continue}else{Gg=26;break $bb26$$bb30$36}}}}while(0);var Ca=BC;var B9=C6;var B8=CI;var B7=l4(B9,B8,Ca);var B6=(((B7))|0)!=0;if(B6){Gg=27;break $bb42$23}var AK=Gk;var B5=(((AK))|0)!=0;if(B5){Gg=29;break $bb42$23}var B3=BV;var B2=(B3)|128;BV=B2;var B1=CA;uA[((k3)>>2)]=B1;var B0=CK;CI=B0;var BY=C6;var BX=BC;var BW=((BY+BX)&4294967295);BZ=BW;Gg=37;continue $bb42$23}else{if(Gg==31){var BU=CE;var BT=oD((BU),8,0)>64;if(BT){Gg=32}else{Gg=34}if(Gg==32){var BS=BV;var BR=(BS)&-16;var BQ=CE;var BP=oD((BQ),8,0);var BO=(BP)&15;var BN=(BO)|(BR);BV=BN;var BM=CE;var BK=oD((BM),8,0);var BJ=(BK)&12;var BI=(((BJ))|0)==12;if(!(BI)){Gg=37;continue $bb42$23}var BH=BV;var BG=(BH)|2048;BV=BG;Gg=37;continue $bb42$23}else{if(Gg==34){var BF=CE;var BE=oD((BF),8,0)>31;var BD=CE;var BB=oD((BD),8,0);if(BE){Gg=35}else{Gg=36}if(Gg==35){var BA=(((BB)-32)&4294967295);var Bz=1<<(BA);var By=Cq;var Bx=(By)|(Bz);Cq=Bx;Gg=37;continue $bb42$23}else{if(Gg==36){var Bw=1<<(BB);var Bv=BV;var Bu=(Bv)|(Bw);BV=Bu;Gg=37;continue $bb42$23}}}}}}}}}$bb43$$bb32_thread$$bb33$53:do{if(Gg==27){Gk=1;Gg=29;break $bb43$$bb32_thread$$bb33$53}}while(0);if(Gg==29){var B4=CK;CI=B4}var Bp=Gk;var Bo=(((Bp))|0)!=0;if(Bo){Gg=39}else{Gg=40}if(Gg==39){Gk=0;Gg=94;continue $bb105$14}else{if(Gg==40){var Bn=CB;var Bm=(Bn)&4;var Bl=(((Bm))|0)==0;if(Bl){Gg=41}else{Gg=42}if(Gg==41){var Bk=BV;var Bj=(Bk)&262144;var Bh=(((Bj))|0)!=0;if(Bh){Gg=94;continue $bb105$14}}var Bf=CB;var A4=(Bf)&1024;var A3=(((A4))|0)!=0;if(A3){Gg=43}else{Gg=44}if(Gg==43){var A2=BV;var A1=(A2)&1536;var A0=(((A1))|0)!=0;if(A0){Gg=94;continue $bb105$14}}var AZ=CB;var AY=(AZ)&4;var AX=(((AY))|0)!=0;if(AX){Gg=45}else{Gg=48}$bb50$$bb53$67:do{if(Gg==45){var AV=BV;var AT=(AV)&512;var AJ=(((AT))|0)!=0;if(AJ){Gg=94;continue $bb105$14}var AI=BV;var AH=(AI)&1024;var i=(((AH))|0)!=0;if(!(i)){Gg=48;break $bb50$$bb53$67}var e=CB;var G6=(e)&8;var G5=(((G6))|0)==0;if(G5){Gg=94;continue $bb105$14}}}while(0);var G4=Cq;var G2=(G4)&4096;var G0=(((G2))|0)!=0;if(G0){Gg=49}else{Gg=50}if(Gg==49){var GQ=Dt;var GP=(GQ)&16384;var GO=(((GP))|0)==0;if(GO){Gg=94;continue $bb105$14}}var GN=Cq;var GM=(GN)&512;var GL=(((GM))|0)!=0;if(GL){Gg=51}else{Gg=52}if(Gg==51){var GK=Dt;var GJ=(GK)&2;var GH=(((GJ))|0)==0;if(GH){Gg=94;continue $bb105$14}}var GF=Cq;var Bi=(GF)&1024;var Bg=(((Bi))|0)!=0;if(Bg){Gg=53}else{Gg=54}if(Gg==53){var Be=Dt;var Bd=(Be)&1;var Bc=(((Bd))&255);var CC=iB((Bc),8,0)!=0;var DV=(CC)^1;var CH=oD((DV),1,0);var Cm=iB((CH),8,0)!=0;if(Cm){Gg=94;continue $bb105$14}}var Bb=BV;var Ba=(Bb)&33554432;var A9=(((Ba))|0)!=0;if(A9){Gg=55}else{Gg=56}if(Gg==55){var A8=Dt;var A7=(A8)&65536;var AW=(((A7))|0)==0;if(AW){Gg=94;continue $bb105$14}}var AU=BV;var AS=(AU)&16384;var AR=(((AS))|0)!=0;if(AR){Gg=57}else{Gg=58}if(Gg==57){var AQ=Gi;var AP=((AQ+8292)&4294967295);var AO=xk[((AP)>>2)];var AN=BZ;var AM=(AO)>(AN);if(AM){Gg=94;continue $bb105$14}}var AL=BV;var G3=(AL)&32768;var G1=(((G3))|0)!=0;if(G1){Gg=59}else{Gg=60}if(Gg==59){var GZ=Cg;var GY=((GZ)&4294967295);var GX=uA[((GY)>>2)];var GW=(GX)&512;var GV=(((GW))|0)==0;if(GV){Gg=94;continue $bb105$14}}var GU=Cq;var GT=(GU)&8192;var GS=(((GT))|0)!=0;if(GS){Gg=61}else{Gg=62}if(Gg==61){var GI=Gi;var GG=((GI+8324)&4294967295);var GE=uA[((GG)>>2)];var GD=(GE)&524288;var GC=(((GD))|0)==0;if(GC){Gg=94;continue $bb105$14}}var GB=Cq;var Gz=(GB)&16;var Gy=(((Gz))|0)!=0;if(Gy){Gg=63}else{Gg=66}$bb72$$bb77$93:do{if(Gg==63){var Gx=Gi;var Gw=((Gx+8272)&4294967295);var Gv=uA[((Gw)>>2)];var Gu=(((Gv))|0)==0;if(!(Gu)){Gg=66;break $bb72$$bb77$93}var Gt=Gi;var Gs=((Gt+8280)&4294967295);var Gr=uA[((Gs)>>2)];var Gq=(((Gr))|0)==0;if(Gq){Gg=94;continue $bb105$14}var Go=CB;var Gn=(Go)&8;var Gm=(((Gn))|0)==0;if(Gm){Gg=94;continue $bb105$14}}}while(0);var Gl=Cq;var Gf=(Gl)&64;var Ge=(((Gf))|0)!=0;if(Ge){Gg=67}else{Gg=68}if(Gg==67){var Gd=Gi;var Gc=((Gd+8276)&4294967295);var Gb=uA[((Gc)>>2)];var Ga=(((Gb))|0)==0;if(Ga){Gg=94;continue $bb105$14}}var F9=Cq;var F8=(F9)&32;var F7=(((F8))|0)!=0;if(F7){Gg=69}else{Gg=70}if(Gg==69){var F6=Gi;var FV=((F6+8284)&4294967295);var FU=uA[((FV)>>2)];var FT=(((FU))|0)==0;if(FT){Gg=94;continue $bb105$14}}var FS=BV;var FR=(FS)&2097152;var FQ=(((FR))|0)!=0;if(!(FQ)){Gg=73;break $bb105$14}var FP=Gi;var FO=((FP+280)&4294967295);var FM=uA[((FO)>>2)];var FK=(((FM))|0)==26741;if(!(FK)){Gg=73;break $bb105$14}var Fq=Gi;var Fp=((Fq+8320)&4294967295);var Fo=uA[((Fp)>>2)];var Fn=(Fo)&1048576;var Fm=(((Fn))|0)==0;if(Fm){Gg=94;continue $bb105$14}else{Gg=73;break $bb105$14}}}}}while(0);var D4=CK;CI=D4;Gg=94;continue $bb105$14}if(Gg==95){CU=0}else{if(Gg==73){var Fl=FN;var Fk=(Fl)!=0;if(Fk){Gg=74}else{Gg=75}if(Gg==74){var Fj=BV;var Fi=(Fj)|1073741824;var Fg=FN;var EW=((Fg)&4294967295);uA[((EW)>>2)]=Fi;var EV=FN;var EU=((EV+4)&4294967295);var ET=Cq;uA[((EU)>>2)]=ET}var ES=CD;var ER=(((ES))|0)==0;if(ER){Gg=76}else{Gg=79}if(Gg==76){var EQ=uA[((us)>>2)];var EP=(((EQ))|0)==2;if(EP){Gg=77}else{Gg=78}if(Gg==77){var EO=FN;var EM=gW(EO);var Eq=uA[((ni)>>2)];var Ep=CG;var Eo=Am(Eq,((nB)&4294967295),Ep,EM)}CU=0}else{if(Gg==79){var Em=FN;var El=(Em)!=0;if(El){Gg=80}else{Gg=81}if(Gg==80){var Ek=FN;var Ej=((Ek)&4294967295);var Ei=uA[((Ej)>>2)];var Eh=(Ei)|-2147483648;var Ef=FN;var FL=((Ef)&4294967295);uA[((FL)>>2)]=Eh}var FJ=uA[((us)>>2)];var FI=(((FJ))|0)==2;if(FI){Gg=82}else{Gg=93}$bb93$$bb104$122:do{if(Gg==82){GA=0;var FH=GR;var FG=((Cl)&4294967295);dM(FH,FG);var FF=FN;var FE=(FF)!=0;if(FE){Gg=83}else{Gg=84}if(Gg==83){var FD=FN;var FC=((FD)&4294967295);var FB=uA[((FC)>>2)];GA=FB}var Fh=BV;var Ff=(Fh)&536870912;var Fe=(((Ff))|0)==0;if(Fe){Gg=85}else{Gg=86}if(Gg==85){CJ=0}else{if(Gg==86){CJ=1}}var Fd=uA[((xy)>>2)];var Fc=((Fd)&4294967295);var Fb=((Fc+252)&4294967295);var Fa=la[((Fb)>>0)];var E9=iB((Fa),8,0);var E8=CJ;var E7=(((E9))|0)==(((E8))|0);if(!(E7)){Gg=93;break $bb93$$bb104$122}var EN=uA[((k3)>>2)];var EL=(((EN))|0)==0;if(EL){Gg=91}else{Gg=89}$bb102$$bb100$132:do{if(Gg==89){var EK=Cg;var EJ=(EK)==0;if(EJ){Gg=91;break $bb102$$bb100$132}var EI=BZ;var EG=(EI);var EF=C6;var EE=(EF);var ED=(((EG)-(EE))&4294967295);var EC=((En)&4294967295);var Eg=C6;ns(EC,Eg,ED,1,0);var Ee=BZ;var Ed=(Ee);var Ec=C6;var Eb=(Ec);var Dh=((0-(Eb))&4294967295);var Ea=(((Ed)+-1)&4294967295);var D9=(((Ea)+(Dh))&4294967295);var D8=((En+D9)&4294967295);la[((D8)>>0)]=0;var D7=uA[((ni)>>2)];var D6=CG;var DU=((En)&4294967295);var DT=Am(D7,((u9)&4294967295),D6,DU);Gg=92;break $bb102$$bb100$132}}while(0);if(Gg==91){var DS=uA[((ni)>>2)];var DR=CG;var DQ=Am(DS,((by)&4294967295),DR)}var DP=FN;var DO=gW(DP);var DN=uA[((ni)>>2)];var DM=((Cl)&4294967295);var DL=Am(DN,((kH)&4294967295),DM,DO)}}while(0);var Dy=BZ;CU=Dy}}}}}}var Du=CU;Dq=Du;var Gp=Dq;vp=Br;return Gp;return null}function j6(CP,Ba,Dv){var BB;var Dp;var Cr;var AX;var AH;var C3;var By;var Do;var C4;var Bz;var BA;var Dq;var BM;var C1;var CT;var Cw;var AY;var A9;var Bx;var Bp;var AW;Dp=CP;Cr=Ba;AX=Dv;var Dn=AX;var Dm=((Dn)&4294967295);la[((Dm)>>0)]=0;var Dl=Dp;var Dk=la[((Dl)>>0)];var Dj=iB((Dk),8,0);var Di=xE(Dj);var Dh=(((Di))|0)!=0;if(Dh){BB=1}else{BB=31}$bb$$bb45$2:do{if(BB==1){while(1){var Dg=Dp;var Df=((Dg+1)&4294967295);Dp=Df;var Ch=Dp;var Cf=la[((Ch)>>0)];var Cd=iB((Cf),8,0);var Cc=xE(Cd);var Cb=(((Cc))|0)!=0;if(Cb){BB=1;continue}else{BB=31;break $bb$$bb45$2}}}}while(0);$bb45$5:while(1){var Ce=Dp;var B5=la[((Ce)>>0)];CT=B5;var B4=iB((B5),8,0)==0;if(B4){BB=33;break $bb45$5}var B3=CT;var B2=oD((B3),8,0);var B1=xE(B2);var B0=(((B1))|0)!=0;if(B0){BB=33;break $bb45$5}Dq=1;BM=1;Bx=0;var Ca=CT;var B9=oD((Ca),8,0);var Cq=(((B9))|0)==124;if(Cq){BB=3}else{BB=5}$bb4$$bb9$9:do{if(BB==3){var B8=Dp;var B7=((B8+1)&4294967295);var B6=la[((B7)>>0)];CT=B6;var BX=CT;var BV=iB((BX),8,0)==124;var BU=oD((BV),1,0);BA=BU;var BT=BA;var Bl=iB((BT),8,0)!=0;var CD=(Bl)^1;var CO=oD((CD),1,0);var C2=iB((CO),8,0)!=0;if(!(C2)){BB=5;break $bb4$$bb9$9}var BS=Dp;var BR=((BS+1)&4294967295);Dp=BR;BB=31;continue $bb45$5}}while(0);AY=-1;A9=0;C1=1;var BQ=uA[((rW)>>2)];var BP=C1;var BO=(((BP))|0)<(((BQ))|0);if(!(BO)){BB=19;break $bb45$5}$bb10$13:while(1){var BN=C1;var BL=((nm+BN*4)&4294967295);var BK=uA[((BL)>>2)];var BJ=(BK)==0;if(BJ){BB=17}else{BB=7}$bb25$$bb11$15:do{if(BB==7){var BI=C1;var BH=((nm+BI*4)&4294967295);var BG=uA[((BH)>>2)];var BF=((BG+11)&4294967295);var BE=la[((BF)>>0)];var BD=iB((BE),8,0)==15;if(BD){BB=17;break $bb25$$bb11$15}Cw=0;var BC=C1;var Bw=((nm+BC*4)&4294967295);var Bv=uA[((Bw)>>2)];var Bu=((Bv)&4294967295);var Bt=uA[((Bu)>>2)];Bp=Bt;while(1){var Bq=Dp;var Bo=Cw;var Bn=((Bq+Bo)&4294967295);var Bm=ll[((Bn)>>0)];CT=Bm;var Bk=oD((Bm),8,0)<=32;if(Bk){BB=13;break}var Bj=Cw;var Bi=(((Bj))|0)>3;if(Bi){BB=13;break}var Bh=CT;var Bg=oD((Bh),8,0);var Bf=Cw;var Be=(((Bf)*8)&4294967295);var Bd=Bp;var Bc=(((Bd))>>>0)>>>(((Be))>>>0);var Bb=(Bc)&255;var A8=(((Bg))|0)!=(((Bb))|0);if(A8){BB=13;break}C4=1;Bz=1;var Bs=Cw;var Br=(((Bs)+1)&4294967295);Cw=Br;BB=10;continue}C4=0;Bz=0;var A7=Cw;var A6=AY;var A5=(((A7))|0)>(((A6))|0);if(!(A5)){BB=17;break $bb25$$bb11$15}var A4=Cw;var A3=(((A4))|0)==4;if(A3){BB=16}else{BB=15}if(BB==15){var A2=Cw;var A1=(((A2)*8)&4294967295);var A0=Bp;var AZ=(((A0))>>>0)>>>(((A1))>>>0);var AV=(AZ)&255;var AU=(((AV))|0)==0;if(!(AU)){BB=17;break $bb25$$bb11$15}}var AT=Cw;AY=AT;var AS=C1;var AR=((nm+AS*4)&4294967295);var AQ=uA[((AR)>>2)];var AP=((AQ+10)&4294967295);var AO=ll[((AP)>>0)];var AN=oD((AO),8,0);A9=AN}}while(0);var AL=C1;var AK=(((AL)+1)&4294967295);C1=AK;var AJ=uA[((rW)>>2)];var AI=C1;var i=(((AI))|0)<(((AJ))|0);if(i){BB=6;continue $bb10$13}else{BB=18;break $bb10$13}}var AM=A9;var e=(((AM))|0)==0;if(e){BB=19;break $bb45$5}var C8=AY;var C7=(((C8))|0)<=0;if(C7){BB=21}else{BB=22}if(BB==21){AY=1}var C6=Bx;var C5=AY;var C0=(((C5)+(C6))&4294967295);var CZ=Dp;var CY=((CZ+C0)&4294967295);Dp=CY;var CX=A9;var CW=(((CX))&255);var CV=Cr;la[((CV)>>0)]=CW;var CU=Cr;var CS=((CU+1)&4294967295);Cr=CS;var CR=A9;var CQ=(((CR))|0)==21;if(!(CQ)){BB=31;continue $bb45$5}var CN=Cr;AW=CN;while(1){var CC=Dp;var CB=la[((CC)>>0)];CT=CB;var CA=CT;var Cz=oD((CA),8,0);var Cy=xE(Cz);var Cx=(((Cy))|0)!=0;if(Cx){BB=27;break}var Cv=CT;var Cu=iB((Cv),8,0)==0;if(Cu){BB=27;break}C3=1;By=1;var CM=Dp;var CL=((CM+1)&4294967295);Dp=CL;var CK=CT;var CJ=oD((CK),8,0);var CI=m9(CJ);var CH=(((CI))&255);var CG=Cr;la[((CG)>>0)]=CH;var CF=Cr;var CE=((CF+1)&4294967295);Cr=CE;BB=25;continue}C3=0;By=0;var Ct=Cr;la[((Ct)>>0)]=0;var Cs=CT;var Cp=iB((Cs),8,0)==0;if(Cp){BB=28}else{BB=30}if(BB==28){var Co=AW;var Cn=pt(Co,((sQ)&4294967295));var Cm=(((Cn))|0)==0;if(Cm){BB=29;break $bb45$5}else{BB=31;continue $bb45$5}}else{if(BB==30){var Cj=Cr;la[((Cj)>>0)]=124;var Ci=Cr;var Cg=((Ci+1)&4294967295);Cr=Cg;BB=31;continue $bb45$5}}}if(BB==19){var Dx=Dp;var Dw=la[((Dx)>>0)];var Du=AX;var Dt=((Du)&4294967295);la[((Dt)>>0)]=Dw;var Ds=AX;var De=((Ds+1)&4294967295);la[((De)>>0)]=0;var Dd=Cr;la[((Dd)>>0)]=0;var Dc=Cr;var Db=((Dc+1)&4294967295);Cr=Db;var Da=Dp;var C9=((Da+1)&4294967295);Do=C9}else{if(BB==29){var Cl=AW;la[((Cl)>>0)]=0;var Ck=Dp;Do=Ck}else{if(BB==33){Dq=0;BM=0;var BZ=Cr;la[((BZ)>>0)]=0;var BY=Dp;Do=BY}}}var BW=Do;AH=BW;var Dr=AH;return Dr;return null}function io(A4,Go,F8){var Bq=vp;vp+=260;n1(Bq,0,260);var F7;var Ft=null;var G0;var D4;var CV;var EI;var F9;var DF;var Cg;var Ce;var Eb;var Du;var DN;var Gn;var GL;var CU;var CF;var GM;var CT;var CB;var GN;var CS;var Gp;var CG;var Fw;var BU;var BN;var CR;var BO;var CH=Bq;var Ga;var CJ;var FK;var Dr;var B2;var CC;var B8;var CQ;var Eu;var CD;var B1;var C6;var CE;var BM;var Cf=Bq+88;Ga=A4;CJ=Go;FK=F8;var CO=CJ;var CN=oJ(((n0)&4294967295),CO);var CM=Ga;var CL=((CM+292)&4294967295);var FW=((CL)&4294967295);var FV=CJ;var FU=oJ(FW,FV);var FT=((Cf)&4294967295);var FS=CJ;var FR=qs(FT,((pu)&4294967295),((iU)&4294967295),47,FS);var FQ=((Cf)&4294967295);BU=FQ;var FP=BU;var FO=kB(FP,CH);var FN=(((FO))|0)!=0;var Fp=oD((FN),1,0);BO=Fp;var Fo=BO;var Di=iB((Fo),8,0)!=0;if(Di){F7=1}else{F7=2}if(F7==1){CR=0}else{if(F7==2){var Fn=((CH+16)&4294967295);var Fm=uA[((Fn)>>2)];var Fl=(Fm)&61440;var Fk=(((Fl))|0)==16384;if(Fk){F7=3}else{F7=4}if(F7==3){CR=-2}else{if(F7==4){var Fj=((CH+44)&4294967295);var Fi=uA[((Fj)>>2)];CR=Fi}}}}var Fh=CR;BN=Fh;var Gm=BN;BM=Gm;var Fg=Ga;var EU=((Fg+1052)&4294967295);var ET=uA[((EU)>>2)];var ES=(ET)!=0;if(ES){F7=6}else{F7=9}if(F7==6){var ER=Ga;var EQ=((ER+1052)&4294967295);var EP=uA[((EQ)>>2)];Fw=EP;var EO=Fw;var EN=(EO)!=0;if(EN){F7=7}else{F7=8}if(F7==7){var EM=Fw;br(EM)}var EL=Ga;var Eo=((EL+1052)&4294967295);uA[((Eo)>>2)]=0}var En=((Cf)&4294967295);var Em=uE(En,((w7)&4294967295));CE=Em;var El=(Em)==0;if(El){F7=11}else{F7=10}$bb3$$bb2$15:do{if(F7==10){var Ek=BM;var Ej=(((Ek))|0)==0;if(Ej){F7=11;break $bb3$$bb2$15}var DP=BM;CB=DP;var DO=CB;var DM=fu(DO);CG=DM;var DL=CG;var DK=(DL)==0;var DJ=oD((DK),1,0);Gp=DJ;var DI=Gp;var E9=iB((DI),8,0)!=0;if(E9){F7=15}else{F7=16}if(F7==15){var DH=uA[((ta)>>2)];var DG=yf(((gb)&4294967295),1,22,DH)}var DE=CG;CS=DE;var DD=CS;GN=DD;var DT=GN;var DC=Ga;var DB=((DC+1052)&4294967295);uA[((DB)>>2)]=DT;var DA=Ga;var Dz=((DA+1052)&4294967295);var Dy=uA[((Dz)>>2)];var Dx=BM;var Dw=CE;var Dv=dg(Dy,1,Dx,Dw);BM=Dv;var Dt=CE;var Ds=ts(Dt);var Dq=Ga;var Dp=((Dq+1052)&4294967295);var Do=uA[((Dp)>>2)];var Dn=Do;B1=Dn;var Dm=B1;var Dl=((Dm+4)&4294967295);var Dk=uA[((Dl)>>2)];CF=Dk;var Dj=CF;CT=Dj;var Dh=CT;GM=Dh;var Gs=GM;C6=Gs;var Dg=BM;var Df=(((Dg))>>>0)<=1032;if(Df){F7=17}else{F7=18}if(F7==17){var De=uA[((ta)>>2)];var Dd=((Cf)&4294967295);var Dc=Am(De,((mU)&4294967295),Dd);CQ=2;F7=53;break $bb3$$bb2$15}else{if(F7==18){var Db=B1;var Da=((Db)&4294967295);var C9=uA[((Da)>>2)];Gn=C9;var C8=Gn;CU=C8;var C5=CU;GL=C5;var D0=GL;var C4=(((D0))|0)!=1024;if(C4){F7=20}else{F7=19}$bb14$$bb9$24:do{if(F7==19){var C3=C6;var C2=(((C3))|0)<=0;var C1=C6;var C0=(((C1))|0)>134217728;var CK=(C2)|(C0);if(CK){F7=20;break $bb14$$bb9$24}CC=0;B8=0;var Cv=Ga;var Cu=((Cv+1052)&4294967295);var Ct=uA[((Cu)>>2)];var Cs=C6;var Cr=((Ct+Cs)&4294967295);var Cq=Ga;var Cp=((Cq+1048)&4294967295);uA[((Cp)>>2)]=Cr;var Co=Ga;EI=Co;var Cn=EI;var Cm=((Cn+7752)&4294967295);uA[((Cm)>>2)]=0;F9=0;$bb_i12$27:while(1){var Cl=F9;var Ck=EI;var Cj=((Ck+5256)&4294967295);var Ci=((Cj+Cl*4)&4294967295);uA[((Ci)>>2)]=0;var Ch=F9;var Cd=EI;var Cc=((Cd+7756)&4294967295);var Cb=((Cc+Ch)&4294967295);la[((Cb)>>0)]=0;var Ca=F9;var B9=EI;var B7=((B9+8012)&4294967295);var B6=((B7+Ca)&4294967295);la[((B6)>>0)]=-1;var B5=F9;var B4=(((B5)+1)&4294967295);F9=B4;var B3=(((B4))|0)<=255;if(B3){F7=22;continue $bb_i12$27}else{F7=23;break $bb_i12$27}}var B0=EI;var BZ=((B0+5152)&4294967295);var BY=((BZ)&4294967295);var BX=BY;ud(BX,0,104,1,0);var BW=EI;var BV=((BW+6280)&4294967295);var BT=((BV)&4294967295);var BS=BT;ud(BS,0,512,1,0);var BR=EI;var BQ=((BR+1048)&4294967295);var BL=uA[((BQ)>>2)];DF=BL;$bb28_i$30:while(1){var D6=DF;var D5=la[((D6)>>0)];var D2=iB((D5),8,0)!=0;if(!(D2)){F7=46;break $bb28_i$30}var BK=DF;var BJ=la[((BK)>>0)];var BI=iB((BJ),8,0)!=6;var BG=DF;if(BI){F7=25;break $bb28_i$30}var Bx=((BG+1)&4294967295);DF=Bx;var Bw=DF;var Bv=((Bw)&4294967295);var Bu=la[((Bv)>>0)];var Bt=iB((Bu),8,0)==20;var Bs=DF;if(Bt){F7=27}else{F7=30}if(F7==27){var Br=(Bs);var Bp=(((Br)+4)&4294967295);var Bo=(Bp)&-4;var Bn=(Bo);Ce=Bn;var Bm=EI;var Bl=((Bm)&4294967295);var Bk=((Bl+264)&4294967295);var Bj=Ce;uA[((Bk)>>2)]=Bj;var Bi=Ce;var Bg=((Bi)&4294967295);var Be=uA[((Bg)>>2)];var A3=(((Be))|0)!=0;var A2=Ce;if(A3){Ft=27;F7=28}else{Ft=27;F7=29}$bb7_i$$bb9_i$36:do{if(F7==28){while(1){var A1=Ft==28?AU:(A2);var A0=((A1+8)&4294967295);Ce=A0;var AZ=Ce;var AY=((AZ)&4294967295);var AX=uA[((AY)>>2)];var AW=(((AX))|0)!=0;var AU=Ce;if(AW){Ft=28;F7=28;continue}else{Ft=28;F7=29;break $bb7_i$$bb9_i$36}}}}while(0);var Gl=Ft==27?A2:(AU);var AS=((Gl+4)&4294967295);var AJ=AS;DF=AJ;F7=45;continue $bb28_i$30}else{if(F7==30){var AI=((Bs)&4294967295);var AH=la[((AI)>>0)];var i=iB((AH),8,0)==18;var e=DF;if(i){F7=31}else{F7=33}$bb11_i$$bb15_i$41:do{if(F7==31){var G3=((e+1)&4294967295);var G2=la[((G3)>>0)];var G1=iB((G2),8,0);var GY=(((G1)-65)&4294967295);F9=GY;var GW=DF;var GK=((GW+2)&4294967295);DF=GK;var GJ=F9;var GI=(((GJ))|0)>=0;var GH=F9;var GG=(((GH))|0)<=25;var CI=(GI)&(GG);if(!(CI)){F7=42;break $bb11_i$$bb15_i$41}var GF=F9;var GE=EI;var GD=((GE+5152)&4294967295);var GB=((GD+GF*4)&4294967295);var Gz=DF;uA[((GB)>>2)]=Gz}else{if(F7==33){var Bh=wg(e);DN=Bh;var Bf=DF;Cg=Bf;var Bc=Cg;var Bb=((Bc)&4294967295);var Ba=la[((Bb)>>0)];Eb=Ba;var A9=Cg;var A8=((A9+1)&4294967295);var A7=la[((A8)>>0)];Du=A7;var A6=DN;var A5=(((A6)+1)&4294967295);var AV=DF;var AT=((AV+A5)&4294967295);DF=AT;var AR=DN;var AQ=(((AR))|0)==1;if(AQ){F7=34}else{F7=35}if(F7==34){var AP=Eb;var AO=oD((AP),8,0);var AN=EI;var AM=((AN+5256)&4294967295);var AL=((AM+AO*4)&4294967295);var AK=DF;uA[((AL)>>2)]=AK}else{if(F7==35){var GZ=DN;var GX=(((GZ))|0)==0;if(GX){F7=36}else{F7=37}if(F7==36){var GV=EI;var GU=((GV+5256)&4294967295);var GT=((GU)&4294967295);var GS=DF;uA[((GT)>>2)]=GS}else{if(F7==37){var GR=Eb;var GQ=iB((GR),8,0)==1;if(GQ){F7=38}else{F7=39}if(F7==38){var GP=Du;var GO=oD((GP),8,0);var GC=(((GO)-1)&4294967295);var GA=EI;var Gy=((GA+6280)&4294967295);var Gx=((Gy+GC*4)&4294967295);var Gw=DF;uA[((Gx)>>2)]=Gw}else{if(F7==39){var Gv=Eb;var Gu=oD((Gv),8,0);var Gt=EI;var Gr=((Gt+8012)&4294967295);var Gq=((Gr+Gu)&4294967295);var Gk=la[((Gq)>>0)];var Gj=iB((Gk),8,0)==-1;if(Gj){F7=40}else{F7=41}if(F7==40){var Gi=Eb;var Gh=oD((Gi),8,0);var Gg=EI;var Gf=((Gg+7752)&4294967295);var Ge=uA[((Gf)>>2)];var Gd=(((Ge))&255);var Gc=EI;var Gb=((Gc+8012)&4294967295);var F6=((Gb+Gh)&4294967295);la[((F6)>>0)]=Gd}var F5=Eb;var F4=oD((F5),8,0);var F3=EI;var F2=((F3+7756)&4294967295);var F1=((F2+F4)&4294967295);var F0=la[((F1)>>0)];var FZ=(((F0)+1)&255);var FY=EI;var FX=((FY+7756)&4294967295);var FM=((FX+F4)&4294967295);la[((FM)>>0)]=FZ;var FL=EI;var FJ=((FL+7752)&4294967295);var FI=uA[((FJ)>>2)];var FH=EI;var FG=((FH+6792)&4294967295);var FF=((FG+FI*4)&4294967295);var FE=DF;uA[((FF)>>2)]=FE;var FD=EI;var FB=((FD+7752)&4294967295);var Ff=uA[((FB)>>2)];var Fe=Eb;var Fd=oD((Fe),8,0);var Fc=Du;var Fb=oD((Fc),8,0);var Fa=(((Fb)*256)&4294967295);var E8=(((Fa)+(Fd))&4294967295);var E7=EI;var E6=((E7+7272)&4294967295);var E4=((E6+Ff*4)&4294967295);uA[((E4)>>2)]=E8;var EK=(((Ff)+1)&4294967295);var EJ=EI;var EH=((EJ+7752)&4294967295);uA[((EH)>>2)]=EK}}}}}}}}}while(0);var EG=DF;var EF=la[((EG)>>0)];var EE=iB((EF),8,0)!=7;var ED=DF;if(EE){Ft=42;F7=43}else{Ft=42;F7=44}$bb25_i$$bb27_i$58:do{if(F7==43){while(1){var EC=Ft==43?D8:(ED);var EB=wg(EC);var Ez=(((EB)+1)&4294967295);var Ee=DF;var Ed=((Ee+Ez)&4294967295);DF=Ed;var Ec=DF;var Ea=la[((Ec)>>0)];var D9=iB((Ea),8,0)!=7;var D8=DF;if(D9){Ft=43;F7=43;continue}else{Ft=43;F7=44;break $bb25_i$$bb27_i$58}}}}while(0);var C7=Ft==42?ED:(D8);var D7=((C7+1)&4294967295);DF=D7;F7=45;continue $bb28_i$30}}}if(F7==25){var BF=(BG);var BE=EI;var BD=((BE+1048)&4294967295);var BC=uA[((BD)>>2)];var BB=(BC);var BA=(((BF)-(BB))&4294967295);var Bz=uA[((ta)>>2)];var By=Am(Bz,((Ax)&4294967295),((n0)&4294967295),BA)}var FC=Ga;var FA=((FC+5256)&4294967295);var Fz=((FA)&4294967295);var Fy=uA[((Fz)>>2)];var Fx=(Fy)==0;if(Fx){F7=47}else{F7=48}if(F7==47){var Fv=uA[((ta)>>2)];var Fu=CJ;var Fs=Am(Fv,((aQ)&4294967295),Fu)}var Fr=Ga;var Fq=((Fr+1052)&4294967295);var E5=uA[((Fq)>>2)];var E3=((E5+8)&4294967295);CD=E3;Eu=0;$bb18$68:while(1){var E2=Eu;var E1=Ga;var E0=((E1+1056)&4294967295);var EZ=((E0+E2*4)&4294967295);var EY=CD;uA[((EZ)>>2)]=EY;var EX=CD;var EW=la[((EX)>>0)];var EV=iB((EW),8,0);C6=EV;var EA=C6;var Ey=(((EA))|0)!=0;var Ex=oD((Ey),1,0);B2=Ex;var BP=iB((Ex),8,0)!=0;var Ew=CD;if(BP){Ft=49;F7=50}else{Ft=49;F7=51}$bb19$$bb22$70:do{if(F7==50){while(1){var Ev=Ft==50?DY:(Ew);var Et=C6;var Es=((Ev+Et)&4294967295);CD=Es;var Er=CD;var Eq=la[((Er)>>0)];var Ep=iB((Eq),8,0);C6=Ep;var D3=C6;var D1=(((D3))|0)!=0;var DZ=oD((D1),1,0);B2=DZ;var CP=iB((DZ),8,0)!=0;var DY=CD;if(CP){Ft=50;F7=50;continue}else{Ft=50;F7=51;break $bb19$$bb22$70}}}}while(0);var BH=Ft==49?Ew:(DY);var DX=((BH+1)&4294967295);CD=DX;var DW=Eu;var DV=(((DW)+1)&4294967295);Eu=DV;var DU=(((DV))|0)<=1023;if(DU){F7=49;continue $bb18$68}else{F7=52;break $bb18$68}}CQ=0;F7=53;break $bb3$$bb2$15}}while(0);CC=1;B8=1;var CZ=B1;var CY=((CZ)&4294967295);var CX=uA[((CY)>>2)];G0=CX;var CW=G0;CV=CW;var CA=CV;D4=CA;var DR=D4;var Cz=uA[((ta)>>2)];var Cy=((Cf)&4294967295);var Cx=C6;var Cw=Am(Cz,((uB)&4294967295),Cy,DR,Cx);CQ=2;F7=53;break $bb3$$bb2$15}}}}while(0);if(F7==11){var Ei=FK;var Eh=(((Ei))|0)==0;if(Eh){F7=12}else{F7=13}if(F7==12){var Eg=uA[((ta)>>2)];var Ef=((Cf)&4294967295);var DQ=Am(Eg,((d6)&4294967295),Ef)}CQ=1}var DS=CQ;Dr=DS;var Bd=Dr;vp=Bq;return Bd;return null}function ug(AP,AQ,AR){var AT;var AS;var AO;var AI;AS=AP;AO=AQ;AI=AR;var AN=AI;var AM=AS;var AL=AO;var AK=xT(AM,AL,AN);var AJ=AI;var AH=(((AJ)-1)&4294967295);var i=AS;var e=((i+AH)&4294967295);la[((e)>>0)]=0;return;return}function tN(A7,E4,Ct,BQ,CG,A6){var Bt=vp;vp+=164;n1(Bt,0,164);var E3;var Ew=null;var A5;var FC;var CY;var DV;var DK;var BG;var CI;var Bs;var ES;var BU;var CX;var E5;var CM;var BV;var Ez;var CH;var Co;var Dv;var Cg;var Bw;var CW;var Ch;var BB;var Cu;var BI;var Dc;var Cy;var CK;var CJ;var CL;var C0;var BT;var Dz=Bt;var El=Bt+160;E5=A7;CM=E4;BV=Ct;Ez=BQ;CH=CG;Co=A6;Dc=0;var CV=CM;var CU=uA[((CV)>>2)];CK=CU;var CT=CK;CJ=CT;$bb1$2:while(1){var Eu=CJ;A5=Eu;var Et=A5;var Es=((Et)&4294967295);var Er=la[((Es)>>0)];DV=Er;var Eq=iB((Er),8,0)>=0;if(Eq){E3=3}else{E3=4}if(E3==3){CY=1}else{if(E3==4){var Ep=DV;var Eo=oD((Ep),8,0)<=223;if(Eo){E3=5}else{E3=6}if(E3==5){CY=2}else{if(E3==6){var En=DV;var Em=oD((En),8,0)<=239;if(Em){E3=7}else{E3=8}if(E3==7){CY=3}else{if(E3==8){CY=4}}}}}}var Ef=CY;FC=Ef;var CN=FC;C0=CN;var Ee=CJ;var Ed=C0;var Ec=((Ee+Ed)&4294967295);var Eb=la[((Ec)>>0)];var Ea=iB((Eb),8,0)!=32;if(Ea){E3=11;break $bb1$2}var D9=C0;var D8=(((D9)+1)&4294967295);var D7=CJ;var D6=((D7+D8)&4294967295);var D5=la[((D6)>>0)];var D4=iB((D5),8,0)!=46;if(D4){E3=11;break $bb1$2}Cu=1;BI=1;var CS=C0;var CR=Dc;var CQ=((Dz+CR)&4294967295);var CP=CJ;ns(CQ,CP,CS,1,0);var ER=Dc;var EQ=C0;var EP=(((EQ)+(ER))&4294967295);Dc=EP;var EO=Dc;var EN=((Dz+EO)&4294967295);la[((EN)>>0)]=46;var EM=Dc;var EL=(((EM)+1)&4294967295);Dc=EL;var EK=C0;var EJ=(((EK)+3)&4294967295);var EI=CJ;var Ev=((EI+EJ)&4294967295);CJ=Ev;E3=2;continue $bb1$2}Cu=0;BI=0;var D3=Dc;var D2=(((D3))|0)>0;if(D2){E3=12}else{E3=16}$bb7$$bb17$17:do{if(E3==12){C0=0;var D1=CJ;var D0=C0;var DZ=((D1+D0)&4294967295);var DY=la[((DZ)>>0)];CL=DY;var DX=CL;var DW=iB((DX),8,0)==0;var DU=CL;var DT=iB((DU),8,0)==32;var Da=(DW)|(DT);if(Da){E3=14}else{E3=13}$bb15$$bb8$19:do{if(E3==13){while(1){Ch=1;BB=1;var DS=C0;var DR=(((DS)+1)&4294967295);C0=DR;var DQ=CJ;var DP=C0;var DO=((DQ+DP)&4294967295);var DN=la[((DO)>>0)];CL=DN;var DM=CL;var DL=iB((DM),8,0)==0;var DJ=CL;var DI=iB((DJ),8,0)==32;var CO=(DL)|(DI);if(CO){E3=14;break $bb15$$bb8$19}else{E3=13;continue}}}}while(0);Ch=0;BB=0;var DH=C0;var DG=Dc;var DF=((Dz+DG)&4294967295);var DE=CJ;ns(DF,DE,DH,1,0);var DD=Dc;var DC=C0;var DB=(((DC)+(DD))&4294967295);var DA=((Dz+DB)&4294967295);la[((DA)>>0)]=0;var Dx=E5;var Dw=((Dz)&4294967295);var Du=CJ;var Dt=BV;var Ds=Ez;var Dr=CH;var Dq=Co;var Dp=aT(Dx,Dw,Du,Dt,Ds,Dr,Dq);Cy=Dp;var Do=(Dp)!=0;if(!(Do)){E3=16;break $bb7$$bb17$17}var Dn=Ez;var Dm=((Dn)&4294967295);var Dl=uA[((Dm)>>2)];var Dk=(Dl)|128;var Dj=Ez;var Di=((Dj)&4294967295);uA[((Di)>>2)]=Dk;var Dh=Dc;uA[((k3)>>2)]=Dh;CW=1;E3=55;break $bb7$$bb17$17}}while(0);if(E3==16){Dc=0;Ew=16;$bb29$26:while(1){var Cr=Ew==23?Cs:(0);var Cq=(((Cr))|0)<=158;if(!(Cq)){E3=25;break $bb29$26}var Dg=CK;var Df=la[((Dg)>>0)];CL=Df;var De=CL;var Dd=iB((De),8,0)==0;var Db=oD((Dd),1,0);var C9=CK;var C8=((C9+1)&4294967295);CK=C8;var CZ=iB((Db),8,0)!=0;if(CZ){E3=19;break $bb29$26}var C7=CL;var C6=iB((C7),8,0)==32;if(C6){E3=19;break $bb29$26}Cg=0;Bw=0;var C5=CL;var C4=iB((C5),8,0)==46;if(C4){E3=21}else{E3=23}$bb26$$bb28$31:do{if(E3==21){var C3=Dc;var C2=(((C3))|0)>0;if(!(C2)){E3=23;break $bb26$$bb28$31}var C1=Dc;var CF=(((C1)-1)&4294967295);var CE=((Dz+CF)&4294967295);var CD=la[((CE)>>0)];var CC=iB((CD),8,0);var CB=(((CC)-48)&4294967295);var CA=(((CB))>>>0)<=9;if(CA){E3=25;break $bb29$26}}}while(0);var Cz=Dc;var Cx=CL;var Cw=((Dz+Cz)&4294967295);la[((Cw)>>0)]=Cx;var Cv=Dc;var Cs=(((Cv)+1)&4294967295);Dc=Cs;Ew=23;E3=24;continue $bb29$26}if(E3==19){Cg=1;Bw=1}var Cp=Dc;var Cn=((Dz+Cp)&4294967295);la[((Cn)>>0)]=0;var Cm=E5;var Cl=((Dz)&4294967295);var Ck=CK;var Cj=BV;var Ci=Ez;var Cf=CH;var Ce=Co;var Cd=aT(Cm,Cl,Ck,Cj,Ci,Cf,Ce);Cy=Cd;var Cc=Ez;var Cb=((Cc)&4294967295);var Ca=uA[((Cb)>>2)];var B9=(Ca)&134217728;var B8=(((B9))|0)!=0;var B7=E5;if(B8){E3=26}else{E3=30}$bb31$$bb37$38:do{if(E3==26){var B6=((B7+632)&4294967295);var B5=((B6)&4294967295);var B4=BV;var B3=pt(B4,B5);var B2=(((B3))|0)==0;var B1=E5;if(B2){E3=27}else{E3=29}if(E3==27){var B0=((B1+652)&4294967295);var BZ=uA[((B0)>>2)];var BY=(((BZ)+1)&4294967295);var BX=E5;var BW=((BX+652)&4294967295);uA[((BW)>>2)]=BY;var BS=E5;var BR=((BS+652)&4294967295);var BP=uA[((BR)>>2)];var BO=(((BP))|0)>3;if(!(BO)){E3=31;break $bb31$$bb37$38}var BN=BV;var BM=((BN)&4294967295);la[((BM)>>0)]=0}else{if(E3==29){var BL=((B1+632)&4294967295);var BK=((BL)&4294967295);var BJ=BV;DK=BK;BG=BJ;CI=20;var BH=CI;var BF=DK;var BE=BG;var BD=xT(BF,BE,BH);var BC=CI;var BA=(((BC)-1)&4294967295);var Bz=DK;var By=((Bz+BA)&4294967295);la[((By)>>0)]=0;var Bx=E5;var Bv=((Bx+652)&4294967295);uA[((Bv)>>2)]=1}}}else{if(E3==30){var Bu=((B7+652)&4294967295);uA[((Bu)>>2)]=0}}}while(0);var Br=Cy;var Bq=(Br)==0;if(Bq){E3=32}else{E3=44}$bb39$$bb50thread_pre_split$46:do{if(E3==32){var Bp=Ez;var Bo=((Bp+4)&4294967295);var Bn=uA[((Bo)>>2)];var Bm=(Bn)&2048;var Bl=(((Bm))|0)!=0;if(Bl){E3=33}else{E3=36}if(E3==33){var Bk=((Dz)&4294967295);CJ=Bk;var Bi=CJ;var Bg=la[((Bi)>>0)];var A4=iB((Bg),8,0)==95;if(A4){E3=34}else{E3=35}if(E3==34){var A3=CJ;var A2=((A3+1)&4294967295);CJ=A2}var A1=CJ;Bs=El;ES=A1;var A0=Bs;var AZ=ES;var AY=F(A0,AZ,0);CX=AY;var AX=CX;BU=AX;var Fj=BU;BT=Fj;var AV=uA[((El)>>2)];var AT=E5;var AJ=BV;lZ(AT,AV,AJ);var AI=CJ;var AH=BT;var i=((AI+AH)&4294967295);Cy=i;Ew=35}else{if(E3==36){var AK=Cy;Ew=36}}var e=Ew==36?AK:(i);var FR=(e)==0;if(!(FR)){E3=44;break $bb39$$bb50thread_pre_split$46}var FQ=BV;var FP=((FQ)&4294967295);la[((FP)>>0)]=0;var FN=CH;var FL=(FN)&16;var FB=(((FL))|0)==0;if(FB){E3=41}else{E3=39}$bb47$$bb45$56:do{if(E3==39){var FA=Dc;var Fz=(((FA)-1)&4294967295);var Fy=((Dz+Fz)&4294967295);var Fx=la[((Fy)>>0)];var Fw=iB((Fx),8,0)!=101;if(Fw){E3=41;break $bb47$$bb45$56}var Fv=Dc;var Fu=(((Fv)-1)&4294967295);var Fs=((Dz+Fu)&4294967295);la[((Fs)>>0)]=0;var Fq=E5;var Bj=((Dz)&4294967295);var Bh=CK;var Bf=BV;var Be=Ez;var Bd=CH;var Bc=Co;var Bb=aT(Fq,Bj,Bh,Bf,Be,Bd,Bc);Cy=Bb;Ew=40;E3=45;break $bb39$$bb50thread_pre_split$46}}while(0);var Ba=CH;var A9=(Ba)&4096;var A8=(((A9))|0)!=0;if(!(A8)){E3=44;break $bb39$$bb50thread_pre_split$46}var AW=Dc;var AU=(((AW)-1)&4294967295);var AS=((Dz+AU)&4294967295);var AR=la[((AS)>>0)];var AQ=Dc;var AP=(((AQ)-2)&4294967295);var AO=((Dz+AP)&4294967295);var AN=la[((AO)>>0)];var AM=iB((AR),8,0)==iB((AN),8,0);if(!(AM)){E3=44;break $bb39$$bb50thread_pre_split$46}var AL=Dc;var FO=(((AL)-1)&4294967295);var FM=((Dz+FO)&4294967295);la[((FM)>>0)]=0;var FK=E5;var FJ=((Dz)&4294967295);var FI=CK;var FH=BV;var FG=Ez;var FF=CH;var FE=Co;var FD=aT(FK,FJ,FI,FH,FG,FF,FE);Cy=FD;Ew=43;E3=45;break $bb39$$bb50thread_pre_split$46}}while(0);if(E3==44){var Dy=Cy;Ew=44}var Ft=Ew==44?Dy:(Ew==43?FD:(Bb));var Fr=(Ft)!=0;if(Fr){E3=46}else{E3=54}if(E3==46){var Fp=E5;var Fo=((Fp)&4294967295);var Fn=((Fo+252)&4294967295);var Fm=la[((Fn)>>0)];var Fl=iB((Fm),8,0)!=0;if(Fl){E3=47}else{E3=48}if(E3==47){var Fk=Ez;var Fi=uA[((Fk)>>2)];var Fh=(Fi)^536870912;var Ff=Ez;uA[((Ff)>>2)]=Fh}var Fe=Ez;var Fd=uA[((Fe)>>2)];var Fc=(Fd)&536870912;var Fb=(((Fc))|0)!=0;if(Fb){E3=49}else{E3=53}if(E3==49){var Fa=CH;var E9=(Fa)&2;var E8=(((E9))|0)!=0;if(E8){E3=50}else{E3=52}$bb55$$bb57$72:do{if(E3==50){la[((((bh)&4294967295))>>0)]=0;la[((((bh+1)&4294967295))>>0)]=32;var E7=BV;var E6=qs(((bh+2)&4294967295),((j0)&4294967295),E7);var E2=CM;var E1=uA[((E2)>>2)];CK=E1;var E0=CM;uA[((E0)>>2)]=((bh+2)&4294967295);var EZ=uA[((us)>>2)];var EY=(((EZ))|0)==2;if(!(EY)){E3=52;break $bb55$$bb57$72}var EX=Cy;var EW=(EX);var EV=CK;var EU=(EV);var ET=(((EW)-(EU))&4294967295);BT=ET;var EH=BT;var EG=((Dz)&4294967295);var EF=CK;ns(EG,EF,EH,1,0);var EE=BT;var ED=((Dz+EE)&4294967295);la[((ED)>>0)]=0;var EC=CM;var EB=uA[((EC)>>2)];var EA=uA[((ni)>>2)];var Ey=((Dz)&4294967295);var Ex=Am(EA,((rR)&4294967295),Ey,EB)}}while(0);var Ek=BV;var Ej=((Ek)&4294967295);la[((Ej)>>0)]=0;CW=0}else{if(E3==53){CW=1}}}else{if(E3==54){var Ei=BV;var Eh=((Ei)&4294967295);la[((Eh)>>0)]=0;CW=0}}}var Eg=CW;Dv=Eg;var Fg=Dv;vp=Bt;return Fg;return null}function nZ(AU,e){var AV=vp;vp+=104;n1(AV,0,104);var AR;var AW;var AP;var AT;var AO;var AN=AV;var AS=AV+100;AW=AU;AP=e;uA[((((wa+4)&4294967295))>>2)]=0;var AM=uA[((((wa+4)&4294967295))>>2)];uA[((((wa)&4294967295))>>2)]=AM;var AL=AP;uA[((AS)>>2)]=AL;var AK=AW;var AJ=((AN)&4294967295);var AI=tN(AK,AS,AJ,((wa)&4294967295),0,0);var AH=uA[((((wa)&4294967295))>>2)];AO=AH;var i=AO;AT=i;var AQ=AT;vp=AV;return AQ;return null}function ox(Be,HV,GC,Df,M5,D9,C5,Dt){var BO=vp;vp+=368;n1(BO,0,368);var Bd;var Ls=null;var CH;var AM;var MO;var CV;var J4=BO;var Bq=BO+100;var Gu;var Ne;var CT;var CI;var Bf;var CS;var G7;var Nu;var CR;var Hc;var Jl;var NF;var CQ;var Hv;var Jm;var NK;var CP;var Hy;var JI;var NY;var CN;var HE;var JJ;var N8;var CM;var Ot;var OL;var CL;var Ii;var OF;var CK;var Oy;var OQ;var G5;var LI;var Mv;var HF;var G4;var Hg;var K5;var Cv;var Co;var KR;var Lr;var NL;var BN;var Ek;var Et;var ER;var EW;var EZ;var E4;var Fu;var Cc;var FQ;var FV;var Gl;var Cg;var Gq;var Gs;var Gw;var Ch;var Mh;var BL;var DX;var IZ=BO+104;var Ez;var NP;var JE;var K2;var Ci;var Cj;var C9;var LS;var Ms;var Cb;var Lf;var MM;var HC;var Lo;var DE;var HW;var LF;var E9;var Ng;var NM;var Mg;var MS=BO+108;var A8;var Kr;var B0;var HZ;var BP=BO+124;var Ih;var I0;var Hu;var G6;var Cf;var Ej=BO+284;var MQ;var LE;var Ly=BO+288;Hg=Be;K5=HV;Cv=GC;Co=Df;KR=M5;Lr=D9;NL=C5;BN=Dt;var G3=K5;var G2=uA[((G3)>>2)];HZ=G2;var G1=KR;var G0=(G1)==0;if(G0){Bd=1}else{Bd=2}if(Bd==1){var GZ=Lr;var GY=((GZ)&4294967295);uA[((GY)>>2)]=0;var GX=K5;var GW=uA[((GX)>>2)];var GK=((GW+1)&4294967295);var GJ=K5;uA[((GJ)>>2)]=GK}else{if(Bd==2){A8=0;B0=0;LS=0;uA[((((hH)&4294967295))>>2)]=0;uA[((((hH+4)&4294967295))>>2)]=((zT)&4294967295);uA[((((hH+8)&4294967295))>>2)]=0;uA[((((hH+12)&4294967295))>>2)]=0;var GI=KR;var GH=la[((GI)>>0)];var GG=iB((GH),8,0)!=7;if(GG){Bd=3}else{Bd=229}$bb2_lr_ph$$bb269$5:do{if(Bd==3){var GF=((MS)&4294967295);var GE=((MS+8)&4294967295);var GD=((MS+12)&4294967295);var GB=((MS+4)&4294967295);var GA=((MS+4)&4294967295);var Gk=((MS+4)&4294967295);var Gj=((MS+4)&4294967295);var Gi=((MS+4)&4294967295);var Gh=((MS+4)&4294967295);var Gg=((MS+4)&4294967295);var Gf=((MS+4)&4294967295);var Ge=((MS)&4294967295);var Gd=((MS)&4294967295);var Gc=((MS)&4294967295);var Gb=((MS)&4294967295);var FO=((MS+12)&4294967295);var FN=((MS+8)&4294967295);var FM=((MS+8)&4294967295);var FL=((BP)&4294967295);var FK=((BP+1)&4294967295);var FJ=((J4)&4294967295);var FI=((MS)&4294967295);var Nv=MS;var FH=((MS)&4294967295);var FG=((MS)&4294967295);var FF=((MS+4)&4294967295);var Fi=((Ly)&4294967295);var Fh=((Ly)&4294967295);var Fg=((MS)&4294967295);var Ff=((MS)&4294967295);$bb2$7:while(1){var Fe=NL;var Fd=(Fe)&-2147483648;Cb=Fd;LS=0;Lf=0;DX=0;DE=-6;HW=-2;Mg=0;uA[((GF)>>2)]=1;uA[((GE)>>2)]=0;uA[((GD)>>2)]=0;var Fc=K5;var Fb=uA[((Fc)>>2)];JE=Fb;var Fa=K5;var E8=uA[((Fa)>>2)];var EJ=Co;var EI=((E8+EJ)&4294967295);K2=EI;var EH=KR;Ci=EH;Ms=0;$bb3$9:while(1){var EG=KR;var EF=ll[((EG)>>0)];BL=EF;var EE=KR;var ED=((EE+1)&4294967295);KR=ED;var EC=oD((EF),8,0)<=9;if(EC){Bd=6}else{Bd=32}$bb4$$bb42$11:do{if(Bd==6){var EB=BL;var EA=oD((EB),8,0);if(EA==0){Bd=7;break $bb3$9}else{if(EA==1){Bd=19}else{if(EA==2){Bd=21}else{if(EA==3){Bd=22;break $bb3$9}else{if(EA==4){Bd=23}else{if(EA==5){Bd=24}else{if(EA==8){Bd=18}else{if(EA==9){Bd=31}else{Bd=210;break $bb4$$bb42$11}}}}}}}}if(Bd==19){LS=1;var Dr=NL;var Dq=(((Dr))|0)<0;if(Dq){Bd=20;break $bb3$9}}else{if(Bd==21){LS=2}else{if(Bd==23){var Do=KR;B0=Do}else{if(Bd==24){var Dn=KR;var Dm=la[((Dn)>>0)];Kr=Dm;var Dk=KR;var Dj=((Dk+1)&4294967295);KR=Dj;var Di=Kr;var Ko=oD((Di),8,0)>31;var Km=Hg;var Kk=((Km+692)&4294967295);var Ki=uA[((Kk)>>2)];var Kg=Kr;var Ke=oD((Kg),8,0);if(Ko){Bd=25}else{Bd=27}if(Bd==25){var Kc=(((Ke)-32)&4294967295);var Ka=(((Ki))|0)>>(((Kc))|0);var J8=(Ka)&1;var J6=(((J8))&255);var Og=iB((J6),8,0)!=0;if(Og){Bd=26;break $bb3$9}}else{if(Bd==27){var J1=(((Ki))|0)>>(((Ke))|0);var JZ=(J1)&1;var JX=(((JZ))|0)==0;if(JX){Bd=28;break $bb3$9}}}var Oi=Ms;var JV=(((Oi))|0)==0;if(!(JV)){Bd=212;break $bb3$9}var JT=uA[((Ge)>>2)];var JR=(((JT)+1)&4294967295);uA[((Gd)>>2)]=JR}else{if(Bd==18){Mg=1;Cb=0;LS=1}else{if(Bd==31){var JP=KR;var JN=((JP+2)&4294967295);KR=JN}}}}}}}else{if(Bd==32){Ng=0;var JL=LS;if(JL==0){Bd=33}else{if(JL==1){Bd=133}else{if(JL==2){Bd=40}else{Bd=209}}}$bb248$$bb43$$bb165$$bb51$26:do{if(Bd==33){var JK=DX;NP=JK;var JF=K2;var JC=la[((JF)>>0)];DX=JC;var JA=K2;var Jy=((JA+1)&4294967295);K2=Jy;var Jw=DX;var Ju=BL;var Js=iB((Jw),8,0)==iB((Ju),8,0);if(Js){Bd=36}else{Bd=34}if(Bd==34){var Jq=DX;var Jo=iB((Jq),8,0)!=69;if(Jo){Bd=39;break $bb3$9}var Jn=BL;var Ji=iB((Jn),8,0)==101;if(!(Ji)){Bd=39;break $bb3$9}}var Jg=DX;var Je=oD((Jg),8,0);var Jc=(Je)&192;var Ja=(((Jc))|0)!=128;if(Ja){Bd=37}else{Bd=38}if(Bd==37){Ng=21}var I8=Lf;var I6=(((I8)+1)&4294967295);Lf=I6}else{if(Bd==133){var Kf=HW;var Kd=(((Kf)+2)&4294967295);HW=Kd;var Kb=HW;var J9=(((Kb))|0)>18;if(J9){Bd=134}else{Bd=135}if(Bd==134){HW=19}var J3=JE;var J2=la[((J3)>>0)];NP=J2;var J0=JE;var JY=((J0+-1)&4294967295);JE=JY;var JW=JE;var JU=F(IZ,JW,1);var JS=(((JU)-1)&4294967295);Ez=JS;var JQ=JE;var JO=la[((JQ)>>0)];DX=JO;var JM=BL;var JH=oD((JM),8,0);if(JH==10){Bd=175}else{if(JH==11){Bd=147}else{if(JH==15){Bd=150}else{if(JH==16){Bd=160}else{if(JH==17){Bd=136}else{if(JH==18){Bd=141}else{if(JH==19){Bd=188}else{if(JH==21){Bd=170}else{if(JH==25){Bd=144}else{if(JH==26){Bd=185}else{if(JH==29){Bd=178}else{if(JH==45){Bd=198}else{if(JH==46){Bd=191}else{Bd=203}}}}}}}}}}}}}if(Bd==203){var Gr=DX;var Gp=BL;var Go=iB((Gr),8,0)==iB((Gp),8,0);if(!(Go)){Bd=208;break $bb3$9}var Gn=DX;var Gm=iB((Gn),8,0)==32;if(Gm){Bd=205}else{Bd=206}if(Bd==205){Ng=4}else{if(Bd==206){var Ga=DX;var F9=oD((Ga),8,0);var F7=(F9)&192;var F5=(((F7))|0)!=128;if(!(F5)){Bd=209;break $bb248$$bb43$$bb165$$bb51$26}var F3=HW;var F1=((21-(F3))&4294967295);Ng=F1}}}else{if(Bd==175){var Ip=Hg;var Io=((Ip+8300)&4294967295);var In=uA[((Io)>>2)];var Il=(((In))|0)>0;if(!(Il)){Bd=177;break $bb3$9}Ng=19}else{if(Bd==147){var Bw=DX;var Bu=NP;var Bt=iB((Bw),8,0)==iB((Bu),8,0);if(!(Bt)){Bd=149;break $bb3$9}var Bs=HW;var Br=((21-(Bs))&4294967295);Ng=Br}else{if(Bd==150){var Bp=uA[((IZ)>>2)];G7=Bp;var Bo=G7;CI=Bo;var Bn=CI;var Bm=(((Bn))>>>0)<=255;if(Bm){Bd=152}else{Bd=151}$iswdigit_exit_i32$$iswdigit_exit_thread_i31$51:do{if(Bd==152){var Bl=CI;var Bk=(((Bl)-48)&4294967295);var Bj=(((Bk))>>>0)<=9;var Bi=oD((Bj),1,0);CS=Bi;Bf=Bi;var Bh=(((Bi))|0)!=0;if(!(Bh)){Bd=154;break $iswdigit_exit_i32$$iswdigit_exit_thread_i31$51}CR=1;Bd=157;break $iswdigit_exit_i32$$iswdigit_exit_thread_i31$51}else{if(Bd==151){CS=0;Bf=0;Bd=154;break $iswdigit_exit_i32$$iswdigit_exit_thread_i31$51}}}while(0);if(Bd==154){var Bg=G7;var Bc=(((Bg))>>>0)>2405;var Bb=G7;var Ba=(((Bb))>>>0)<=2415;var KL=(Bc)&(Ba);if(KL){Bd=155}else{Bd=156}if(Bd==155){CR=1}else{if(Bd==156){CR=0}}}var A9=CR;Nu=A9;var OE=Nu;var A7=(((OE))|0)!=0;var A6=oD((A7),1,0);ER=A6;var Nb=iB((A6),8,0)!=0;if(!(Nb)){Bd=159;break $bb3$9}var A5=HW;var A4=((21-(A5))&4294967295);Ng=A4;var A3=Ez;var A2=((0-(A3))&4294967295);var A1=JE;var A0=((A1+A2)&4294967295);JE=A0}else{if(Bd==160){var AY=uA[((IZ)>>2)];Gu=AY;var AW=Gu;var AU=(((AW))>>>0)<=255;var AS=Gu;if(AU){Bd=161}else{Bd=162}$bb_i43$$bb1_i45$63:do{if(Bd==161){var AQ=z6(AS);CT=AQ;Ls=161;Bd=167;break $bb_i43$$bb1_i45$63}else{if(Bd==162){var AN=(((AS))>>>0)>12352;var AK=Gu;var AI=(((AK))>>>0)<=42752;var KA=(AN)&(AI);if(KA){Bd=163;break $bb3$9}var O1=Gu;var O0=(((O1))>>>0)>563;if(O0){Bd=165}else{Bd=166}if(Bd==165){CT=0;Ne=0;Bd=168;break $bb_i43$$bb1_i45$63}else{if(Bd==166){var OY=Gu;var OW=(((OY)-256)&4294967295);var OU=((xF+OW)&4294967295);var OS=ll[((OU)>>0)];var OP=oD((OS),8,0);CT=OP;Ls=166;Bd=167;break $bb_i43$$bb1_i45$63}}}}}while(0);if(Bd==167){var ON=Ls==161?AQ:(OP);Ne=ON;var OK=(((ON))|0)==0;if(!(OK)){Bd=169;break $bb3$9}}var OI=DE;var OD=((21-(OI))&4294967295);Ng=OD;var OC=Ez;var OA=((0-(OC))&4294967295);var Ox=JE;var Ov=((Ox+OA)&4294967295);JE=Ov}else{if(Bd==136){var JG=KR;var JD=la[((JG)>>0)];var JB=iB((JD),8,0);var Jz=(((JB)-65)&4294967295);Lo=Jz;var Jx=KR;var Jv=((Jx+1)&4294967295);KR=Jv;var Jt=uA[((IZ)>>2)];var Jr=Hg;var Jp=Lo;var Jk=yE(Jr,Jt,Jp);var Jj=(((Jk))|0)!=0;var Jh=oD((Jj),1,0);E4=Jh;var Jf=E4;var NO=iB((Jf),8,0)!=0;if(!(NO)){Bd=140;break $bb3$9}LF=20;var Jd=Lo;var Jb=(((Jd))|0)==2;if(Jb){Bd=138}else{Bd=139}if(Bd==138){LF=19}var I9=LF;var I7=HW;var I5=(((I9)-(I7))&4294967295);Ng=I5;var I3=Ez;var Ca=((0-(I3))&4294967295);var B9=JE;var B8=((B9+Ca)&4294967295);JE=B8}else{if(Bd==141){var B7=KR;var B6=la[((B7)>>0)];var B5=iB((B6),8,0);var B4=(((B5)-65)&4294967295);Lo=B4;var B3=KR;var B2=((B3+1)&4294967295);KR=B2;var B1=Hg;var BZ=JE;var BY=Lo;var BX=pE(B1,BZ,BY,1);E9=BX;var BW=E9;var BV=(((BW))|0)>0;var BU=oD((BV),1,0);EZ=BU;var BT=EZ;var Ny=iB((BT),8,0)!=0;if(!(Ny)){Bd=143;break $bb3$9}var BS=DE;var BR=((20-(BS))&4294967295);Ng=BR;var BQ=E9;var BM=((1-(BQ))&4294967295);var BK=JE;var BJ=((BK+BM)&4294967295);JE=BJ}else{if(Bd==188){var Hi=NL;var Hh=(Hi)&2;var Hf=(((Hh))|0)!=0;if(!(Hf)){Bd=190;break $bb3$9}Ng=1}else{if(Bd==170){MM=1;var Os=KR;var Oq=la[((Os)>>0)];var Oo=iB((Oq),8,0)==21;if(Oo){Bd=171}else{Bd=172}$bb199$$bb201$83:do{if(Bd==171){while(1){var Om=KR;var Ok=((Om+1)&4294967295);KR=Ok;var Od=MM;var Oc=(((Od)+1)&4294967295);MM=Oc;var Oa=KR;var N7=la[((Oa)>>0)];var N5=iB((N7),8,0)==21;if(N5){Bd=171;continue}else{Bd=172;break $bb199$$bb201$83}}}}while(0);var N3=Hg;var N0=((N3+8296)&4294967295);var NX=uA[((N0)>>2)];var NV=MM;var NT=(((NX))|0)>=(((NV))|0);if(!(NT)){Bd=174;break $bb3$9}var It=MM;var Is=HW;var J5=((0-(Is))&4294967295);var Ir=(((It)+18)&4294967295);var Iq=(((Ir)+(J5))&4294967295);Ng=Iq}else{if(Bd==144){var BI=uA[((IZ)>>2)];var BH=Hg;var BG=yE(BH,BI,0);var BF=(((BG))|0)==0;var BE=oD((BF),1,0);EW=BE;var BD=EW;var Np=iB((BD),8,0)!=0;if(!(Np)){Bd=146;break $bb3$9}var BC=HW;var BB=((20-(BC))&4294967295);Ng=BB;var BA=Ez;var Bz=((0-(BA))&4294967295);var By=JE;var Bx=((By+Bz)&4294967295);JE=Bx}else{if(Bd==185){var Hz=Hg;var Hx=((Hz+8272)&4294967295);var Hw=uA[((Hx)>>2)];var Hj=(((Hw))|0)!=0;if(!(Hj)){Bd=187;break $bb3$9}Ng=1}else{if(Bd==178){var Ik=Ez;var Ij=((0-(Ik))&4294967295);var H6=JE;var H5=((H6+Ij)&4294967295);var H4=((H5+-1)&4294967295);MQ=H4;while(1){var HD=uA[((IZ)>>2)];var HB=(((HD))|0)!=32;if(!(HB)){Bd=183;break}var H3=uA[((IZ)>>2)];var H2=Hg;var H1=yE(H2,H3,7);var H0=(((H1))|0)!=0;var HY=oD((H0),1,0);Et=HY;var HX=Et;var GP=iB((HX),8,0)!=0;if(GP){Bd=180;break $bb3$9}var HU=MQ;var HJ=F(IZ,HU,1);var HI=((0-(HJ))&4294967295);var HH=MQ;var HG=((HH+HI)&4294967295);MQ=HG;Bd=182;continue}var N1=Ms;var HA=(((N1))|0)==0;if(!(HA)){Bd=212;break $bb3$9}Ng=3}else{if(Bd==198){var GO=DX;var GN=iB((GO),8,0)==45;if(GN){Bd=201}else{Bd=199}if(Bd==199){var GM=DX;var GL=iB((GM),8,0)!=32;if(GL){Bd=202;break $bb3$9}var Gz=NL;var Gy=(Gz)&128;var Gx=(((Gy))|0)!=0;if(!(Gx)){Bd=202;break $bb3$9}}var Gv=DE;var Gt=((22-(Gv))&4294967295);Ng=Gt}else{if(Bd==191){var He=JE;Cj=He;while(1){var GV=Cj;var GU=la[((GV)>>0)];var GT=iB((GU),8,0)!=32;if(!(GT)){Bd=196;break}var Hd=Cj;var Hb=la[((Hd)>>0)];var Ha=iB((Hb),8,0)==46;if(Ha){Bd=193;break}var G9=Cj;var G8=((G9+-1)&4294967295);Cj=G8;Bd=195;continue}if(Bd==193){Ng=50}var GS=Cj;var GR=la[((GS)>>0)];var GQ=iB((GR),8,0)==32;if(GQ){Bd=197;break $bb3$9}}}}}}}}}}}}}}}}else{if(Bd==40){var I4=DE;var I2=(((I4)+6)&4294967295);DE=I2;var I1=DE;var IX=(((I1))|0)>18;if(IX){Bd=41}else{Bd=42}if(Bd==41){DE=19}var IW=DX;NP=IW;var IV=K2;LI=IZ;Mv=IV;var IU=LI;var IT=Mv;var IS=F(IU,IT,0);G4=IS;var IR=G4;HF=IR;var Oe=HF;var IQ=(((Oe)-1)&4294967295);Ez=IQ;var IP=K2;var IO=la[((IP)>>0)];DX=IO;var IN=K2;var IM=((IN+1)&4294967295);K2=IM;var IL=BL;var IK=oD((IL),8,0);if(IK==11){Bd=78}else{if(IK==12){Bd=119}else{if(IK==13){Bd=120}else{if(IK==14){Bd=125}else{if(IK==15){Bd=56}else{if(IK==16){Bd=68}else{if(IK==17){Bd=43}else{if(IK==18){Bd=48}else{if(IK==21){Bd=96}else{if(IK==23){Bd=115}else{if(IK==24){Bd=126}else{if(IK==25){Bd=51}else{if(IK==28){Bd=81}else{if(IK==29){Bd=108}else{if(IK==45){Bd=91}else{Bd=129}}}}}}}}}}}}}}}if(Bd==129){var Kv=DX;var Ku=BL;var Kt=iB((Kv),8,0)==iB((Ku),8,0);if(!(Kt)){Bd=132;break $bb3$9}var Kq=DX;var Kp=oD((Kq),8,0);var Kn=(Kp)&192;var Kl=(((Kn))|0)!=128;if(!(Kl)){Bd=209;break $bb248$$bb43$$bb165$$bb51$26}var Kj=DE;var Kh=((21-(Kj))&4294967295);Ng=Kh}else{if(Bd==78){var Nc=DX;var Na=NP;var M9=iB((Nc),8,0)==iB((Na),8,0);if(!(M9)){Bd=80;break $bb3$9}var M8=DE;var M7=((21-(M8))&4294967295);Ng=M7}else{if(Bd==119){Ng=20}else{if(Bd==120){var Lb=K5;var La=uA[((Lb)>>2)];var K9=Co;var K8=((La+K9)&4294967295);Cj=K8;while(1){var K0=Cj;var KZ=K2;var KY=(K0)<(KZ);if(!(KY)){Bd=209;break $bb248$$bb43$$bb165$$bb51$26}var K7=Cj;var K6=la[((K7)>>0)];var K4=iB((K6),8,0)==101;var K3=Cj;if(K4){Bd=122;break}var K1=((K3+1)&4294967295);Cj=K1;Bd=124;continue}uA[((FO)>>2)]=K3}else{if(Bd==125){var KX=KR;var KW=((KX)&4294967295);var KV=la[((KW)>>0)];var KU=iB((KV),8,0);var KT=(((KU)*65536)&4294967295);var KS=KR;var KP=((KS+1)&4294967295);var KO=la[((KP)>>0)];var KN=iB((KO),8,0);var KM=(KN)&127;var KK=(((KM)*256)&4294967295);var KJ=KR;var KI=((KJ+2)&4294967295);var KH=la[((KI)>>0)];var KG=iB((KH),8,0);var KF=(KG)&127;var KE=(((KK)+(KT))&4294967295);var KD=(((KE)+(KF))&4294967295);uA[((FN)>>2)]=KD;var KC=KR;var KB=((KC+3)&4294967295);KR=KB}else{if(Bd==56){var OZ=uA[((IZ)>>2)];Oy=OZ;var OX=Oy;Ii=OX;var OV=Ii;var OT=(((OV))>>>0)<=255;if(OT){Bd=58}else{Bd=57}$iswdigit_exit_i$$iswdigit_exit_thread_i$131:do{if(Bd==58){var OR=Ii;var OO=(((OR)-48)&4294967295);var OM=(((OO))>>>0)<=9;var OJ=oD((OM),1,0);CK=OJ;OF=OJ;var OH=(((OJ))|0)!=0;if(!(OH)){Bd=60;break $iswdigit_exit_i$$iswdigit_exit_thread_i$131}G5=1;Bd=63;break $iswdigit_exit_i$$iswdigit_exit_thread_i$131}else{if(Bd==57){CK=0;OF=0;Bd=60;break $iswdigit_exit_i$$iswdigit_exit_thread_i$131}}}while(0);if(Bd==60){var OG=Oy;var OB=(((OG))>>>0)>2405;var Oz=Oy;var Ow=(((Oz))>>>0)<=2415;var LG=(OB)&(Ow);if(LG){Bd=61}else{Bd=62}if(Bd==61){G5=1}else{if(Bd==62){G5=0}}}var Ou=G5;OQ=Ou;var LV=OQ;var Or=(((LV))|0)!=0;var Op=oD((Or),1,0);Gl=Op;var M0=iB((Op),8,0)!=0;if(M0){Bd=64}else{Bd=65}if(Bd==64){var On=DE;var Ol=((20-(On))&4294967295);Ng=Ol;var Oj=K2;var Oh=Ez;var Ob=((Oj+Oh)&4294967295);K2=Ob}else{if(Bd==65){var N9=Hg;var N6=((N9)&4294967295);var N4=((N6+250)&4294967295);var N2=la[((N4)>>0)];var NZ=iB((N2),8,0)!=0;if(!(NZ)){Bd=67;break $bb3$9}var NW=DE;var NU=((20-(NW))&4294967295);Ng=NU;var NS=K2;var NQ=((NS+-1)&4294967295);K2=NQ}}}else{if(Bd==68){var NJ=uA[((IZ)>>2)];Ot=NJ;var NI=Ot;var NH=(((NI))>>>0)<=255;var NG=Ot;if(NH){Bd=69}else{Bd=70}$bb_i6$$bb1_i8$146:do{if(Bd==69){var NE=z6(NG);CL=NE;Ls=69;Bd=75;break $bb_i6$$bb1_i8$146}else{if(Bd==70){var ND=(((NG))>>>0)>12352;var NB=Ot;var NA=(((NB))>>>0)<=42752;var Ks=(ND)&(NA);if(Ks){Bd=71;break $bb3$9}var Nz=Ot;var Nx=(((Nz))>>>0)>563;if(Nx){Bd=73}else{Bd=74}if(Bd==73){CL=0;OL=0;Bd=76;break $bb_i6$$bb1_i8$146}else{if(Bd==74){var Nt=Ot;var Ns=(((Nt)-256)&4294967295);var Nr=((xF+Ns)&4294967295);var Nq=ll[((Nr)>>0)];var No=oD((Nq),8,0);CL=No;Ls=74;Bd=75;break $bb_i6$$bb1_i8$146}}}}}while(0);if(Bd==75){var Nn=Ls==69?NE:(No);OL=Nn;var Nm=(((Nn))|0)==0;if(!(Nm)){Bd=77;break $bb3$9}}var Nl=DE;var Nk=((21-(Nl))&4294967295);Ng=Nk;var Nj=K2;var Nf=Ez;var Nd=((Nj+Nf)&4294967295);K2=Nd}else{if(Bd==43){var IJ=KR;var II=la[((IJ)>>0)];var IH=iB((II),8,0);var IG=(((IH)-65)&4294967295);Lo=IG;var IF=KR;var IE=((IF+1)&4294967295);KR=IE;var ID=uA[((IZ)>>2)];var IC=Hg;var IB=Lo;var IA=yE(IC,ID,IB);var Iz=(((IA))|0)!=0;var Iy=oD((Iz),1,0);Gw=Iy;var Ix=Gw;var Nw=iB((Ix),8,0)!=0;if(!(Nw)){Bd=47;break $bb3$9}LF=20;var Iw=Lo;var Iv=(((Iw))|0)==2;if(Iv){Bd=45}else{Bd=46}if(Bd==45){LF=19}var Iu=LF;var Ig=DE;var If=(((Iu)-(Ig))&4294967295);Ng=If;var Ie=K2;var Id=Ez;var Ic=((Ie+Id)&4294967295);K2=Ic}else{if(Bd==48){var Ib=KR;var Ia=la[((Ib)>>0)];var H9=iB((Ia),8,0);var H8=(((H9)-65)&4294967295);Lo=H8;var H7=KR;var HT=((H7+1)&4294967295);KR=HT;var HS=K2;var HR=((HS+-1)&4294967295);var HQ=Hg;var HP=Lo;var HO=pE(HQ,HR,HP,0);E9=HO;var HN=E9;var HM=(((HN))|0)>0;var HL=oD((HM),1,0);Gs=HL;var HK=Gs;var Ni=iB((HK),8,0)!=0;if(!(Ni)){Bd=50;break $bb3$9}var Ht=DE;var Hs=((20-(Ht))&4294967295);Ng=Hs;var Hr=E9;var Hq=(((Hr)-1)&4294967295);var Hp=K2;var Ho=((Hp+Hq)&4294967295);K2=Ho}else{if(Bd==96){var EM=K2;var EK=Ez;var Ex=((EM+EK)&4294967295);Ih=Ex;I0=0;MM=1;var Ev=KR;var Es=la[((Ev)>>0)];var Eq=iB((Es),8,0)==21;if(Eq){Bd=97}else{Bd=98}$bb113$$bb115$164:do{if(Bd==97){while(1){var Eo=KR;var Em=((Eo+1)&4294967295);KR=Em;var Ei=MM;var Eg=(((Ei)+1)&4294967295);MM=Eg;var Ee=KR;var Ec=la[((Ee)>>0)];var DZ=iB((Ec),8,0)==21;if(DZ){Bd=97;continue}else{Bd=98;break $bb113$$bb115$164}}}}while(0);HC=0;var DY=uA[((IZ)>>2)];var DW=(((DY))|0)!=32;if(DW){Ls=98;Bd=100}else{Ls=98;Bd=105}$bb116$$bb125$168:do{if(Bd==100){$bb116$169:while(1){var DV=Ls==99?NN:(0);var DU=(((DV))|0)!=0;if(DU){Bd=102}else{Bd=101}$bb120$$bb117$171:do{if(Bd==101){var DT=uA[((IZ)>>2)];var DS=Hg;var DR=yE(DS,DT,7);var DQ=(((DR))|0)==0;if(DQ){Bd=102;break $bb120$$bb117$171}Cc=1;FQ=1;var DP=I0;var DD=(((DP)+1)&4294967295);I0=DD;Bd=104;break $bb120$$bb117$171}}while(0);if(Bd==102){Cc=0;FQ=0}var DC=uA[((IZ)>>2)];var DB=Hg;var DA=yE(DB,DC,7);HC=DA;var Dz=Ih;HE=IZ;JJ=Dz;var Dy=HE;var Dx=JJ;var Dw=F(Dy,Dx,0);CM=Dw;var Dv=CM;N8=Dv;var CO=N8;var Du=Ih;var Dh=((Du+CO)&4294967295);Ih=Dh;var Dg=uA[((IZ)>>2)];var De=(((Dg))|0)!=32;if(!(De)){Bd=105;break $bb116$$bb125$168}var NN=HC;Ls=99;Bd=100;continue $bb116$169}}}while(0);var Dd=MM;var Dc=I0;var Db=(((Dd))|0)<=(((Dc))|0);if(!(Db)){Bd=107;break $bb3$9}var Da=MM;var C8=DE;var J7=((0-(C8))&4294967295);var C7=(((Da)+18)&4294967295);var C6=(((C7)+(J7))&4294967295);Ng=C6}else{if(Bd==115){var Ct=K2;var Cs=Ez;var Cr=((Ct+Cs)&4294967295);G6=Cr;var Cq=G6;Cf=Cq;var Cp=KR;Hv=Ej;Jm=Cp;var Cn=Hv;var Cm=Jm;var Cl=F(Cn,Cm,0);CP=Cl;var Ck=CP;NK=Ck;var LD=uA[((IZ)>>2)];var LC=uA[((Ej)>>2)];var LB=(((LD))|0)!=(((LC))|0);var LA=uA[((IZ)>>2)];var Lz=(((LA))|0)!=32;var Kz=(LB)&(Lz);if(Kz){Bd=116}else{Bd=117}$bb141$$bb144$181:do{if(Bd==116){while(1){var Lx=G6;Cf=Lx;var Lw=G6;Hc=IZ;Jl=Lw;var Lv=Hc;var Lu=Jl;var Lt=F(Lv,Lu,0);CQ=Lt;var Lq=CQ;NF=Lq;var Cw=NF;var Lp=G6;var Ln=((Lp+Cw)&4294967295);G6=Ln;var Lm=uA[((IZ)>>2)];var Ll=uA[((Ej)>>2)];var Lk=(((Lm))|0)!=(((Ll))|0);var Lj=uA[((IZ)>>2)];var Li=(((Lj))|0)!=32;var Le=(Lk)&(Li);if(Le){Bd=116;continue}else{Bd=117;break $bb141$$bb144$181}}}}while(0);var Lh=uA[((IZ)>>2)];var Lg=uA[((Ej)>>2)];var Ld=(((Lh))|0)==(((Lg))|0);if(!(Ld)){Bd=209;break $bb248$$bb43$$bb165$$bb51$26}var Lc=Cf;K2=Lc}else{if(Bd==126){var Ky=NL;var Kx=(Ky)&8192;var Kw=(((Kx))|0)!=0;if(Kw){Bd=127;break $bb3$9}Ng=1}else{if(Bd==51){var Hn=uA[((IZ)>>2)];var Hm=Hg;var Hl=yE(Hm,Hn,0);var Hk=(((Hl))|0)!=0;if(Hk){Bd=54;break $bb3$9}var AZ=uA[((IZ)>>2)];var AX=(((AZ))|0)!=32;if(AX){Bd=55}else{Bd=53}if(Bd==53){var AV=NL;var AT=(AV)&134217728;var AR=(((AT))|0)!=0;if(AR){Bd=54;break $bb3$9}}Cg=0;Gq=0;var AP=DE;var AL=((20-(AP))&4294967295);Ng=AL;var AJ=K2;var AH=Ez;var i=((AJ+AH)&4294967295);K2=i}else{if(Bd==81){var M6=KR;var M4=la[((M6)>>0)];var M3=iB((M4),8,0);NM=M3;var MP=KR;var MN=((MP+1)&4294967295);KR=MN;var ML=NM;var MK=(((ML))|0)==1;if(MK){Bd=82}else{Bd=83}if(Bd==82){uA[((FM)>>2)]=32768}else{if(Bd==83){var MJ=NM;var MI=(MJ)&240;var MH=(((MI))|0)==16;var MG=NM;if(MH){Bd=84}else{Bd=87}if(Bd==84){var MF=(MG)&15;var ME=(((MF)+19)&4294967295);var Mr=BN;var Mq=(((Mr))|0)>>(((ME))|0);var Mp=(Mq)&1;var Mo=(((Mp))&255);var Mf=iB((Mo),8,0)!=0;if(!(Mf)){Bd=86;break $bb3$9}Ng=23}else{if(Bd==87){var Mn=(MG)&240;var Mm=(((Mn))|0)==32;if(!(Mm)){Bd=209;break $bb248$$bb43$$bb165$$bb51$26}var Ml=K5;var Mk=uA[((Ml)>>2)];var Mj=(Mk);var Mi=Cv;var L4=(Mi);var Ce=((0-(L4))&4294967295);var L3=Lf;var L2=Co;var L1=(((Mj)+1)&4294967295);var L0=(((L1)+(L3))&4294967295);var LZ=(((L0)+(Ce))&4294967295);var LY=(((LZ)+(L2))&4294967295);C9=LY;var LX=C9;var LW=Cv;var LU=((LW+-1)&4294967295);ns(FL,LU,LX,1,0);var F8=C9;var F6=((BP+F8)&4294967295);la[((F6)>>0)]=32;var F4=C9;var F2=(((F4)+1)&4294967295);var F0=((BP+F2)&4294967295);la[((F0)>>0)]=0;var FZ=Hg;CH=FZ;AM=FK;uA[((((wa+4)&4294967295))>>2)]=0;var FX=uA[((((wa+4)&4294967295))>>2)];uA[((((wa)&4294967295))>>2)]=FX;var FU=AM;uA[((Bq)>>2)]=FU;var FS=CH;var FP=tN(FS,Bq,FJ,((wa)&4294967295),0,0);var FC=uA[((((wa)&4294967295))>>2)];CV=FC;var FA=CV;MO=FA;var Cd=MO;var Fy=NM;var Fw=(Fy)&15;var Ft=(((Fw)+19)&4294967295);var Fr=(((Cd))|0)>>(((Ft))|0);var Fp=(Fr)&1;var Fn=(((Fp))&255);FV=Fn;var Fl=FV;var Bv=iB((Fl),8,0)!=0;if(!(Bv)){Bd=90;break $bb3$9}Ng=23}}}}}else{if(Bd==108){var C4=K2;var C3=Ez;var C2=((C4+C3)&4294967295);Hu=C2;while(1){var CA=uA[((IZ)>>2)];var Cz=(((CA))|0)!=32;if(!(Cz)){Bd=113;break}var C1=uA[((IZ)>>2)];var C0=Hg;var CZ=yE(C0,C1,7);var CY=(((CZ))|0)!=0;var CX=oD((CY),1,0);Fu=CX;var CW=Fu;var AO=iB((CW),8,0)!=0;if(AO){Bd=110;break $bb3$9}var CU=Hu;Hy=IZ;JI=CU;var CG=Hy;var CF=JI;var CE=F(CG,CF,0);CN=CE;var CD=CN;NY=CD;var CJ=NY;var CC=Hu;var CB=((CC+CJ)&4294967295);Hu=CB;Bd=112;continue}var Of=Ms;var Cy=(((Of))|0)==0;if(!(Cy)){Bd=212;break $bb3$9}var Cx=DE;var Cu=((19-(Cx))&4294967295);Ng=Cu}else{if(Bd==91){var Fj=DX;var E6=iB((Fj),8,0)==45;if(E6){Bd=94}else{Bd=92}if(Bd==92){var E3=DX;var E1=iB((E3),8,0)!=32;if(E1){Bd=95;break $bb3$9}var EY=NL;var EV=(EY)&16384;var ET=(((EV))|0)!=0;if(!(ET)){Bd=95;break $bb3$9}}var EQ=DE;var EO=((22-(EQ))&4294967295);Ng=EO}}}}}}}}}}}}}}}}}}}}while(0);var KQ=Ms;var FY=(((KQ))|0)==0;if(!(FY)){Bd=212;break $bb3$9}var FT=uA[((Gc)>>2)];var FR=Ng;var FD=(((FR)+(FT))&4294967295);uA[((Gb)>>2)]=FD}}}while(0);var Dl=Ms;var FW=(((Dl))|0)==0;if(FW){Ls=210;Bd=5;continue $bb3$9}else{Ls=210;Bd=213;break $bb3$9}}$bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218:do{if(Bd==7){var Ea=B0;var D8=(Ea)!=0;if(D8){Bd=8}else{Bd=16}if(Bd==8){var D7=B0;uA[((GB)>>2)]=D7;while(1){var DN=xk[((GA)>>2)];var DM=la[((DN)>>0)];BL=DM;var DL=BL;var DK=iB((DL),8,0)!=0;var DJ=oD((DK),1,0);var DI=((DN+1)&4294967295);uA[((Gk)>>2)]=DI;var Nh=iB((DJ),8,0)!=0;var IY=(Nh)^1;var FE=oD((IY),1,0);var e=iB((FE),8,0)!=0;if(e){Bd=15;break}var DH=BL;var DG=iB((DH),8,0)==3;if(DG){Bd=15;break}Ch=1;Mh=1;var D6=BL;var D5=iB((D6),8,0)==5;if(D5){Ls=9;Bd=10}else{Ls=9;Bd=11}if(Bd==10){var D4=uA[((Gj)>>2)];var D3=((D4+1)&4294967295);uA[((Gi)>>2)]=D3;var Im=BL;Ls=10}var D2=Ls==10?Im:(D6);var D1=iB((D2),8,0)==9;if(!(D1)){Bd=13;continue}var D0=uA[((Gh)>>2)];var DO=((D0+2)&4294967295);uA[((Gg)>>2)]=DO;Bd=13;continue}Ch=0;Mh=0}else{if(Bd==16){uA[((GB)>>2)]=((zT)&4294967295)}}var DF=KR;var Ds=((DF+-1)&4294967295);KR=Ds;Ms=2;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==22){var Dp=KR;uA[((Gf)>>2)]=Dp;Ms=2;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==20){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==26){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==28){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==39){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==208){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==177){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==149){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==159){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==163){CT=1;Ne=1;Bd=169;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==140){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==143){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==190){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==174){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==146){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==187){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==180){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==202){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==197){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==132){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==80){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==67){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==71){CL=1;OL=1;Bd=77;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==47){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==50){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==107){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==127){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==54){Cg=1;Gq=1;Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==86){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==90){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==110){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}else{if(Bd==95){Ms=1;Bd=212;break $bb5$$bb28$$bb251$$bb25$$bb33$$bb251thread_pre_split$$bb36$$bb49$$bb247$$bb207$$bb187$$bb192$$bb196$$iswalpha_exit51_thread60$$bb173$$bb178$$bb225$$bb203$$bb183$$bb221$$bb216_thread$$bb239$$bb233$$bb163$$bb89$$bb81$$bb85$$iswalpha_exit_thread57$$bb59$$bb64$$bb127$$bb156$$bb73$$bb97$$bb103$$bb136_thread$$bb109$218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}while(0);$bb251thread_pre_split$$bb251$$bb196$$bb85$265:do{if(Bd==169){Ms=1;Bd=212;break $bb251thread_pre_split$$bb251$$bb196$$bb85$265}else{if(Bd==77){Ms=1;Bd=212;break $bb251thread_pre_split$$bb251$$bb196$$bb85$265}}}while(0);if(Bd==212){var NC=Ms;Ls=212}var FB=Ls==212?NC:(Dl);var Fz=(((FB))|0)==2;if(Fz){Bd=214}else{Bd=227}$bb252$$bb266$271:do{if(Bd==214){var Fx=Cb;var Fv=(((Fx))|0)==0;if(!(Fv)){Bd=227;break $bb252$$bb266$271}var Fs=Mg;var Fq=(((Fs))|0)==0;if(Fq){Bd=219}else{Bd=216}$bb257$$bb254$274:do{if(Bd==216){var Fo=JE;var Fm=((Fo+-1)&4294967295);var Fk=la[((Fm)>>0)];var E7=iB((Fk),8,0)==32;if(!(E7)){Bd=227;break $bb252$$bb266$271}var NR=Mg;var E5=(((NR))|0)!=0;if(!(E5)){Bd=219;break $bb257$$bb254$274}var E2=uA[((Fg)>>2)];var E0=(((E2)+4)&4294967295);uA[((Ff)>>2)]=E0}}while(0);var EX=uA[((FI)>>2)];var EU=uA[((((hH)&4294967295))>>2)];var ES=(((EX))|0)>=(((EU))|0);if(ES){Bd=220}else{Bd=221}if(Bd==220){ns(hH,Nv,16,1,0);var EP=Lf;A8=EP}var EN=uA[((us)>>2)];var EL=(((EN))|0)==2;if(!(EL)){Bd=227;break $bb252$$bb266$271}var Ey=uA[((FH)>>2)];var Ew=(((Ey))|0)>0;if(!(Ew)){Bd=227;break $bb252$$bb266$271}var Eu=NL;var Er=(Eu)&268435456;var Ep=(((Er))|0)==0;if(!(Ep)){Bd=227;break $bb252$$bb266$271}var En=uA[((FG)>>2)];LE=En;var El=Co;var Eh=(((El))|0)>1;if(Eh){Bd=225}else{Bd=226}if(Bd==225){var Ef=LE;var Ed=(((Ef)+35)&4294967295);LE=Ed}var M2=uA[((FF)>>2)];dM(M2,Fi);var M1=HZ;var MZ=Co;var MY=Ci;var MX=NL;var MW=n2(M1,MZ,MY,MX);var MV=uA[((ni)>>2)];var MU=LE;var MT=Am(MV,((g8)&4294967295),MU,MW,Fh)}}while(0);while(1){var MR=KR;var MD=la[((MR)>>0)];var MC=iB((MD),8,0)!=0;var MB=oD((MC),1,0);Ek=MB;var MA=KR;var Mz=((MA+1)&4294967295);KR=Mz;var Eb=iB((MB),8,0)!=0;if(Eb){Bd=227;continue}else{Bd=228;break}}var My=KR;var Mx=((My)&4294967295);var Mw=la[((Mx)>>0)];var Mu=iB((Mw),8,0)!=7;if(Mu){Bd=4;continue $bb2$7}else{Bd=229;break $bb2_lr_ph$$bb269$5}}}}while(0);var Mt=uA[((us)>>2)];var Me=(((Mt))|0)==2;if(Me){Bd=230}else{Bd=233}$bb270$$bb273$292:do{if(Bd==230){var Md=NL;var Mc=(Md)&268435456;var Mb=(((Mc))|0)==0;if(!(Mb)){Bd=233;break $bb270$$bb273$292}var Ma=Co;var L9=(((Ma))|0)<=1;if(!(L9)){Bd=233;break $bb270$$bb273$292}var L8=uA[((ni)>>2)];var L7=jR(10,L8)}}while(0);var L6=A8;var L5=Co;var LT=(((L5)+(L6))&4294967295);A8=LT;var LR=(((LT))|0)==0;if(LR){Bd=234}else{Bd=235}if(Bd==234){A8=1}var LQ=K5;var LP=uA[((LQ)>>2)];var LO=A8;var LN=((LP+LO)&4294967295);var LM=K5;uA[((LM)>>2)]=LN;var LL=uA[((((hH)&4294967295))>>2)];var LK=(((LL))|0)==0;if(LK){Bd=236}else{Bd=237}if(Bd==236){uA[((((hH+4)&4294967295))>>2)]=((zT)&4294967295)}var LJ=Lr;var LH=LJ;ns(LH,hH,16,1,0)}}vp=BO;return;return}function cq(AY,e,A1){var AZ=vp;vp+=12;n1(AZ,0,12);var AT;var A0;var AP;var AR;var AW;var AQ;var AX=AZ;var AV=AZ+8;A0=AY;AP=e;AR=A1;var AO=((AX+4)&4294967295);uA[((AO)>>2)]=0;var AN=((AX+4)&4294967295);var AM=uA[((AN)>>2)];var AL=((AX)&4294967295);uA[((AL)>>2)]=AM;var AK=AP;uA[((AV)>>2)]=AK;var AJ=A0;var AI=AR;var AH=((AX)&4294967295);var i=tN(AJ,AV,AI,AH,0,0);AQ=i;var AU=AQ;AW=AU;var AS=AW;vp=AZ;return AS;return null}function uI(Bd,II,GY,GV,Lk,C3,Dr){var BQ=vp;vp+=432;n1(BQ,0,432);var Bc;var Js=null;var Lo;var Ce;var Jg;var KC;var CS;var LK=BQ;var CH;var AM;var BP;var KI;var CQ;var B4=BQ+4;var Bp=BQ+12;var FW;var Hs;var KK;var CP;var FX;var KV;var CO;var e;var F9;var K8;var CN;var KY;var Gx;var LO;var CM;var Ga;var Ld;var CL;var JM;var Ka;var Gb;var CK;var FY;var Ib;var Fw;var Ll;var JY;var KX;var BN;var IH;var Jt;var GO;var JD;var JH;var JI;var Ma;var Cz;var CD;var Bb;var Da;var Dd;var Bo;var Dv;var Dz;var Bq;var DO;var BC;var DW;var CJ;var Cu;var FL;var D5;var JJ;var L5=BQ+16;var Gw;var Lm;var Cf=BQ+20;var JN;var Cr;var EG;var Cj;var DY=BQ+24;var EL;var C7;var HQ;var Ch=BQ+28;var LL;var Hu=BQ+32;var Ht=BQ+48;var C0=BQ+64;var JG=BQ+104;var KZ=BQ+264;var B2;var JL=BQ+384;var GM=BQ+392;FY=Bd;Ib=II;Fw=GY;Ll=GV;JY=Lk;KX=C3;BN=Dr;uA[((L5)>>2)]=0;EL=0;HQ=0;LL=0;var CI=FY;var FV=((CI+1048)&4294967295);var FU=uA[((FV)>>2)];var FT=(FU)==0;if(FT){Bc=1}else{Bc=2}$bb$$bb1$2:do{if(Bc==1){CJ=0}else{if(Bc==2){var FS=BN;var FR=(FS)!=0;if(FR){Bc=3}else{Bc=4}if(Bc==3){var FQ=BN;var FP=((FQ)&4294967295);var FO=uA[((FP)>>2)];LL=FO}C7=0;Js=4;$bb5$8:while(1){var FA=Js==5?FE:(0);var Fv=(((FA))|0)<=158;if(!(Fv)){Bc=7;break $bb5$8}var FN=Ib;var FM=C7;var FK=((FN+FM)&4294967295);var FJ=la[((FK)>>0)];Cu=FJ;var FI=C7;var FH=Cu;var FG=((JG+FI)&4294967295);la[((FG)>>0)]=FH;var FF=C7;var FE=(((FF)+1)&4294967295);C7=FE;var FD=Cu;var FC=iB((FD),8,0)==0;if(FC){Js=5;Bc=7;break $bb5$8}else{Js=5;Bc=6;continue $bb5$8}}var Fu=C7;var Ft=((JG+Fu)&4294967295);la[((Ft)>>0)]=0;var Fs=uA[((us)>>2)];var Fr=(((Fs))|0)==2;if(Fr){Bc=8}else{Bc=14}$bb7$$bb19$12:do{if(Bc==8){var Fq=KX;var Fp=(Fq)&268435456;var Fo=(((Fp))|0)==0;if(!(Fo)){Bc=14;break $bb7$$bb19$12}B2=0;var Fn=Ib;var Fm=B2;var Fb=((Fn+Fm)&4294967295);var Fa=la[((Fb)>>0)];Cu=Fa;var E9=Cu;var E8=iB((E9),8,0)==32;var E7=Cu;var E6=iB((E7),8,0)==0;var IT=(E8)|(E6);if(IT){Bc=11}else{Bc=10}$bb16$$bb10$15:do{if(Bc==10){while(1){BC=1;DW=1;var E5=B2;var E4=Cu;var E3=((KZ+E5)&4294967295);la[((E3)>>0)]=E4;var E2=B2;var ER=(((E2)+1)&4294967295);B2=ER;var EQ=Ib;var EP=B2;var EO=((EQ+EP)&4294967295);var EN=la[((EO)>>0)];Cu=EN;var EM=Cu;var EK=iB((EM),8,0)==32;var EJ=Cu;var EI=iB((EJ),8,0)==0;var Jf=(EK)|(EI);if(Jf){Bc=11;break $bb16$$bb10$15}else{Bc=10;continue}}}}while(0);BC=0;DW=0;var EH=B2;var Ev=((KZ+EH)&4294967295);la[((Ev)>>0)]=0;var Eu=KX;var Et=(((Eu))|0)<0;var Es=uA[((ni)>>2)];var Er=((KZ)&4294967295);if(Et){Bc=12}else{Bc=13}if(Bc==12){var Eq=Am(Es,((wk)&4294967295),Er)}else{if(Bc==13){var Ep=Am(Es,((cS)&4294967295),Er)}}}}while(0);var Eo=Ib;uA[((Ch)>>2)]=Eo;var En=FY;var Em=((En+8296)&4294967295);uA[((Em)>>2)]=0;var Eb=FY;var Ea=((Eb+8300)&4294967295);uA[((Ea)>>2)]=0;var D9=JY;var D8=(D9)!=0;if(D8){Bc=15}else{Bc=16}if(Bc==15){var D7=JY;var D6=((D7)&4294967295);la[((D6)>>0)]=0}var D4=((JL)&4294967295);var D3=((JL+1)&4294967295);var D2=((JL)&4294967295);var D1=((GM)&4294967295);var DN=((B4+4)&4294967295);var DM=((B4+4)&4294967295);var DL=((B4)&4294967295);var DK=((B4)&4294967295);var DJ=((GM)&4294967295);var DI=((GM)&4294967295);var DH=((Ht)&4294967295);var DG=((Ht)&4294967295);var DF=((Ht)&4294967295);var DE=((Ht)&4294967295);var Dq=((Hu)&4294967295);var GW=Hu;var KL=Ht;var Dp=((Hu)&4294967295);var Do=((C0)&4294967295);var Dn=((C0)&4294967295);var Dm=((Hu+4)&4294967295);var Dl=((C0)&4294967295);var Dk=((Hu)&4294967295);var Dj=((Hu)&4294967295);var Di=((C0)&4294967295);var Dh=((B4+4)&4294967295);var It=((B4+4)&4294967295);var Ir=((B4)&4294967295);var Iq=((B4)&4294967295);var Io=((Hu+4)&4294967295);var Im=((C0)&4294967295);var Ik=((Hu)&4294967295);var Ii=((Hu+4)&4294967295);var Ig=((Hu+4)&4294967295);var Ie=((Hu)&4294967295);var Ic=((Hu+4)&4294967295);var H9=((Hu+8)&4294967295);var H7=((Hu+8)&4294967295);var H5=((Hu+8)&4294967295);var H3=((Hu+12)&4294967295);var H1=((Hu+12)&4294967295);var HZ=((Hu+4)&4294967295);$bb138$26:while(1){var LE=uA[((Ch)>>2)];var LC=la[((LE)>>0)];Cu=LC;var LA=Cu;var Ly=iB((LA),8,0)==32;var Lw=Cu;var Lu=iB((Lw),8,0)==0;var JF=(Ly)|(Lu);if(JF){Bc=118;break $bb138$26}Bq=1;DO=1;var HX=uA[((L5)>>2)];Gw=HX;var HV=uA[((Ch)>>2)];JM=L5;Ka=HV;var HT=JM;var HR=Ka;var HO=F(HT,HR,0);CK=HO;var HM=CK;Gb=HM;var Lj=Gb;Lm=Lj;var HK=uA[((L5)>>2)];var HI=kr(HK);var HG=(((HI))|0)!=0;var HE=oD((HG),1,0);Dz=HE;var HC=Dz;var LM=iB((HC),8,0)!=0;if(LM){Bc=18}else{Bc=19}if(Bc==18){var HA=EL;var Hy=(((HA)+1)&4294967295);EL=Hy}var Hw=Cu;var Hq=oD((Hw),8,0);var Ho=FY;var Hm=((Ho+7756)&4294967295);var Hk=((Hm+Hq)&4294967295);var Hi=ll[((Hk)>>0)];var Hg=oD((Hi),8,0);Cj=Hg;var He=xk[((L5)>>2)];Ga=He;Gx=He;var Hc=(((He))>>>0)<=255;if(Hc){Bc=21}else{Bc=20}$iswdigit_exit_i$$iswdigit_exit_thread_i$32:do{if(Bc==21){var Ha=Gx;var G8=(((Ha)-48)&4294967295);var G7=(((G8))>>>0)<=9;var G6=oD((G7),1,0);CM=G6;LO=G6;var G5=(((G6))|0)!=0;if(!(G5)){Bc=23;break $iswdigit_exit_i$$iswdigit_exit_thread_i$32}CL=1;Bc=26;break $iswdigit_exit_i$$iswdigit_exit_thread_i$32}else{if(Bc==20){CM=0;LO=0;Bc=23;break $iswdigit_exit_i$$iswdigit_exit_thread_i$32}}}while(0);$bb26$$bb1_i$36:do{if(Bc==23){var G4=Ga;var G3=(((G4))>>>0)>2405;var G2=Ga;var G1=(((G2))>>>0)<=2415;var JK=(G3)&(G1);if(JK){Bc=24}else{Bc=25}if(Bc==24){CL=1;Bc=26;break $bb26$$bb1_i$36}else{if(Bc==25){CL=0;Ld=0;Bc=31;break $bb26$$bb1_i$36}}}}while(0);$bb26$$bb36$41:do{if(Bc==26){Ld=1;var G0=FY;var GZ=((G0)&4294967295);var GX=((GZ+250)&4294967295);var GU=la[((GX)>>0)];var GT=iB((GU),8,0)==0;if(GT){Bc=28}else{Bc=27}if(Bc==27){var GS=EL;var GR=(((GS))|0)==0;if(!(GR)){Bc=31;break $bb26$$bb36$41}}Bo=1;Dv=1;la[((D4)>>0)]=95;var GQ=Lm;var GP=uA[((Ch)>>2)];ns(D3,GP,GQ,1,0);var GN=Lm;var GL=(((GN)+1)&4294967295);var GK=((JL+GL)&4294967295);la[((GK)>>0)]=0;var GJ=FY;Lo=GJ;Ce=D2;Jg=D1;uA[((DN)>>2)]=0;var GI=uA[((DM)>>2)];uA[((DL)>>2)]=GI;var GH=Ce;uA[((LK)>>2)]=GH;var GG=Lo;var GF=Jg;var GE=tN(GG,LK,GF,DK,0,0);CS=GE;var GD=CS;KC=GD;var GC=HQ;var GB=(((GC)+1)&4294967295);HQ=GB;var GA=HQ;var Gz=(((GA))>>>0)>1;var Gv=oD((Gz),1,0);Dd=Gv;var Ln=iB((Gv),8,0)!=0;if(Ln){Bc=29}else{Bc=30}if(Bc==29){var BR=wg(DJ);var Iv=((DJ+BR)&4294967295);ns(Iv,((yG)&4294967295),2,1,0);HQ=0}var Gu=FY;var Gt=Fw;var Gs=Ll;jH(Gu,Gt,Gs,DI);var Gr=uA[((Ch)>>2)];var Gq=Lm;var Gp=((Gr+Gq)&4294967295);uA[((Ch)>>2)]=Gp;Bc=117;continue $bb138$26}}while(0);Bo=0;Dv=0;HQ=0;JN=0;var Go=uA[((L5)>>2)];var Gn=FY;var Gm=((Gn+964)&4294967295);var Gl=uA[((Gm)>>2)];var Gk=(((Go)-(Gl))&4294967295);C7=Gk;var Gj=C7;var Gi=(((Gj))|0)<0;var Gh=C7;var Gg=(((Gh))|0)>127;var FB=(Gi)|(Gg);if(FB){Bc=32}else{Bc=33}$bb40$$bb42$50:do{if(Bc==32){Bb=0;Da=0;Bc=35;break $bb40$$bb42$50}else{if(Bc==33){Bb=1;Da=1;var Gf=C7;var Ge=FY;var Gd=((Ge+6280)&4294967295);var Gc=((Gd+Gf*4)&4294967295);var F8=uA[((Gc)>>2)];var F7=(F8)!=0;if(!(F7)){Bc=35;break $bb40$$bb42$50}var F6=C7;var F5=FY;var F4=((F5+6280)&4294967295);var F3=((F4+F6*4)&4294967295);var F2=uA[((F3)>>2)];var F1=FY;var F0=Ib;var FZ=Lm;var AZ=KX;var AX=LL;ox(F1,Ch,F0,FZ,F2,Hu,AZ,AX);JN=1;Bc=98;break $bb40$$bb42$50}}}while(0);$bb44$$bb118$54:do{if(Bc==35){var Gy=JN;var AV=(((Gy))|0)==0;if(!(AV)){Bc=98;break $bb44$$bb118$54}var AT=Cj;var AR=(((AT))|0)>0;if(AR){Bc=37}else{Bc=44}$bb46$$bb56$57:do{if(Bc==37){var AP=uA[((Ch)>>2)];var AN=((AP+1)&4294967295);var AK=la[((AN)>>0)];FL=AK;var AI=Cu;var i=oD((AI),8,0);var L8=FL;var L6=oD((L8),8,0);var L3=(((L6)*256)&4294967295);var L1=(((L3)+(i))&4294967295);D5=L1;var LZ=uA[((Ch)>>2)];var LX=((LZ+2)&4294967295);var LV=la[((LX)>>0)];var LT=iB((LV),8,0);var LR=(((LT)*65536)&4294967295);var LP=D5;var LI=(((LR)+(LP))&4294967295);JJ=LI;var LG=Cu;var LD=oD((LG),8,0);var LB=FY;var Lz=((LB+8012)&4294967295);var Lx=((Lz+LD)&4294967295);var Lv=ll[((Lx)>>0)];var Lt=oD((Lv),8,0);EG=Lt;var Ls=EG;Cr=Ls;var Lp=EG;var Lh=Cj;var Lf=(((Lh)+(Lp))&4294967295);var Lc=Cr;var La=(((Lf))|0)>(((Lc))|0);if(!(La)){Bc=44;break $bb46$$bb56$57}$bb47$59:while(1){var K7=Cr;var K5=FY;var K3=((K5+7272)&4294967295);var K2=((K3+K7*4)&4294967295);var K1=uA[((K2)>>2)];var K0=D5;var KW=(((K1))|0)==(((K0))|0);if(KW){Bc=39}else{Bc=43}$bb48$$bb54$61:do{if(Bc==39){JN=1;var KU=uA[((Ch)>>2)];uA[((Cf)>>2)]=KU;var KT=Cr;var KS=FY;var KR=((KS+6792)&4294967295);var KQ=((KR+KT*4)&4294967295);var KP=uA[((KQ)>>2)];var KO=FY;var KN=Ib;var KM=KX;var KJ=LL;ox(KO,Cf,KN,2,KP,Ht,KM,KJ);var KH=uA[((DH)>>2)];var KG=(((KH))|0)>0;if(KG){Bc=40}else{Bc=41}if(Bc==40){var KF=uA[((DG)>>2)];var KE=(((KF)+35)&4294967295);uA[((DF)>>2)]=KE}var KD=Cu;var KB=oD((KD),8,0);var KA=FY;var Kz=((KA+5256)&4294967295);var Ky=((Kz+KB*4)&4294967295);var Kw=uA[((Ky)>>2)];var Kv=FY;var Ku=Ib;var Kt=KX;var Ks=LL;ox(Kv,Ch,Ku,1,Kw,Hu,Kt,Ks);var Kr=uA[((DE)>>2)];var Kq=uA[((Dq)>>2)];var Kp=(((Kr))|0)>=(((Kq))|0);if(!(Kp)){Bc=43;break $bb48$$bb54$61}ns(GW,KL,16,1,0);var Ko=uA[((Cf)>>2)];uA[((Ch)>>2)]=Ko}}while(0);var Kn=Cr;var Km=(((Kn)+1)&4294967295);Cr=Km;var Kl=EG;var Kk=Cj;var Kj=(((Kk)+(Kl))&4294967295);var Ki=Cr;var Kh=(((Kj))|0)>(((Ki))|0);if(Kh){Bc=38;continue $bb47$59}else{Bc=44;break $bb46$$bb56$57}}}}while(0);var Jr=JN;var Kg=(((Jr))|0)==0;if(!(Kg)){Bc=98;break $bb44$$bb118$54}var Kf=Cu;var Ke=oD((Kf),8,0);var Kd=FY;var J8=((Kd+5256)&4294967295);var J7=((J8+Ke*4)&4294967295);var J6=uA[((J7)>>2)];var J5=(J6)!=0;if(J5){Bc=46}else{Bc=47}$bb58$$bb59$70:do{if(Bc==46){var J4=Cu;var J3=oD((J4),8,0);var J2=FY;var J1=((J2+5256)&4294967295);var J0=((J1+J3*4)&4294967295);var JZ=uA[((J0)>>2)];var JX=FY;var JW=Ib;var JV=KX;var JU=LL;ox(JX,Ch,JW,1,JZ,Hu,JV,JU);Bc=87;break $bb58$$bb59$70}else{if(Bc==47){var JT=FY;var JS=((JT+5256)&4294967295);var JR=((JS)&4294967295);var JQ=uA[((JR)>>2)];var JP=FY;var JO=Ib;var Fl=KX;var Fk=LL;ox(JP,Ch,JO,0,JQ,Hu,Fl,Fk);var Fj=uA[((Dj)>>2)];var Fi=(((Fj))|0)==0;if(!(Fi)){Bc=97;break $bb58$$bb59$70}var Fh=uA[((y8)>>2)];var Fg=(Fh)&16;var Ff=(((Fg))|0)==0;if(!(Ff)){Bc=87;break $bb58$$bb59$70}var Fe=uA[((Ch)>>2)];var Fd=((Fe+-1)&4294967295);FW=DY;Hs=Fd;var Fc=FW;var E1=Hs;var E0=F(Fc,E1,0);CP=E0;var EZ=CP;KK=EZ;var Cg=KK;var EY=(((Cg)-1)&4294967295);Cj=EY;var EX=FY;var EW=((EX+964)&4294967295);var EV=uA[((EW)>>2)];var EU=(((EV))|0)>0;if(EU){Bc=50}else{Bc=60}$bb62$$bb65thread_pre_split$75:do{if(Bc==50){var ET=xk[((DY)>>2)];var ES=(((ET))|0)<=577;if(ES){Js=50}else{Js=50;Bc=61;break $bb62$$bb65thread_pre_split$75}var EF=uA[((DY)>>2)];FX=EF;var EE=FX;var ED=(((EE))>>>0)<=255;var EC=FX;if(ED){Bc=52}else{Bc=53}if(Bc==52){var EB=z6(EC);CO=EB;Js=52}else{if(Bc==53){var EA=(((EC))>>>0)>12352;var Ez=FX;var Ey=(((Ez))>>>0)<=42752;var I0=(EA)&(Ey);if(I0){Bc=54;break $bb138$26}var Ex=FX;var Ew=(((Ex))>>>0)>563;if(Ew){Bc=56}else{Bc=57}if(Bc==56){CO=0;KV=0;Bc=60;break $bb62$$bb65thread_pre_split$75}else{if(Bc==57){var El=FX;var Ek=(((El)-256)&4294967295);var Ej=((xF+Ek)&4294967295);var Ei=ll[((Ej)>>0)];var Eh=oD((Ei),8,0);CO=Eh;Js=57}}}}var Eg=Js==52?EB:(Eh);KV=Eg;var Ef=(((Eg))|0)!=0;if(Ef){Bc=59;break $bb138$26}else{Bc=60;break $bb62$$bb65thread_pre_split$75}}}while(0);if(Bc==60){var LN=uA[((DY)>>2)];Js=60}var DV=Js==60?LN:(ET);var DU=(((DV))|0)==57384;if(DU){Bc=62}else{Bc=64}$bb66$$bb68$89:do{if(Bc==62){var DT=FY;var DS=((DT)&4294967295);var DR=((DS+100)&4294967295);var DQ=((DR+64)&4294967295);var DP=uA[((DQ)>>2)];var DD=uA[((hX)>>2)];var DC=(((DP))|0)>(((DD))|0);if(!(DC)){Bc=64;break $bb66$$bb68$89}var DB=FY;var DA=((DB)&4294967295);var Dy=((DA+100)&4294967295);var Dx=((Dy+64)&4294967295);var Dw=uA[((Dx)>>2)];uA[((hX)>>2)]=Dw}}while(0);var Du=uA[((DY)>>2)];var Dt=s7(Du);var Ds=(((Dt))|0)!=0;var Dg=oD((Ds),1,0);CD=Dg;var Kx=iB((Dg),8,0)!=0;if(Kx){Bc=65}else{Bc=67}$bb70$$bb72$93:do{if(Bc==65){var Df=FY;var De=((Df)&4294967295);var Dc=((De+24)&4294967295);var Db=((Dc+64)&4294967295);var C9=uA[((Db)>>2)];var C8=uA[((hX)>>2)];var C6=(((C9))|0)>(((C8))|0);if(!(C6)){Bc=67;break $bb70$$bb72$93}var C5=FY;var C4=((C5)&4294967295);var C2=((C4+24)&4294967295);var C1=((C2+64)&4294967295);var CZ=uA[((C1)>>2)];uA[((hX)>>2)]=CZ}}while(0);var CY=uA[((DY)>>2)];var CX=(((CY))|0)<=191;var CW=uA[((DY)>>2)];var CV=(((CW))|0)>605;var Fz=(CX)|(CV);if(Fz){Bc=84}else{Bc=68}$bb98$$bb74$97:do{if(Bc==68){var CU=uA[((DY)>>2)];var CT=(((CU)-192)&4294967295);var CR=((ik+CT)&4294967295);var CG=ll[((CR)>>0)];var CF=oD((CG),8,0);C7=CF;var CE=C7;var CC=(((CE))|0)==0;if(CC){Bc=84;break $bb98$$bb74$97}Ma=1;Cz=1;var CB=uA[((Ch)>>2)];var CA=((CB+-2)&4294967295);var Cy=la[((CA)>>0)];var Cx=iB((Cy),8,0)!=32;if(Cx){Bc=71}else{Bc=70}if(Bc==70){var Cw=uA[((Ch)>>2)];var Cv=Cj;var Ct=((Cw+Cv)&4294967295);var Cs=la[((Ct)>>0)];var Cq=iB((Cs),8,0)!=32;if(!(Cq)){Bc=87;break $bb58$$bb59$70}}var Cp=uA[((Ch)>>2)];var Co=((Cp+-1)&4294967295);uA[((Cf)>>2)]=Co;var Cn=uA[((Ch)>>2)];var Cm=C7;var Cl=(((Cm))&255);var Ck=((Cn+-1)&4294967295);la[((Ck)>>0)]=Cl;var Ci=uA[((Ch)>>2)];var JE=uA[((Ch)>>2)];var JC=Cj;var JB=((JE+JC)&4294967295);var JA=la[((JB)>>0)];var Jz=((Ci)&4294967295);la[((Jz)>>0)]=JA;var Jy=((Ci)&4294967295);var Jx=la[((Jy)>>0)];var Jw=iB((Jx),8,0)!=32;var Jv=oD((Jw),1,0);JI=Jv;var BO=iB((Jv),8,0)!=0;if(BO){Bc=72}else{Bc=74}$bb82$$bb87_loopexit$103:do{if(Bc==72){while(1){var Ju=uA[((Ch)>>2)];var Jq=((Ju+1)&4294967295);uA[((Ch)>>2)]=Jq;var Jp=uA[((Ch)>>2)];var Jo=uA[((Ch)>>2)];var Jn=Cj;var Jm=((Jo+Jn)&4294967295);var Jl=la[((Jm)>>0)];var Jk=((Jp)&4294967295);la[((Jk)>>0)]=Jl;var Jj=((Jp)&4294967295);var Ji=la[((Jj)>>0)];var Jh=iB((Ji),8,0)!=32;var Je=oD((Jh),1,0);JI=Je;var Kc=iB((Je),8,0)!=0;if(Kc){Bc=72;continue}else{Bc=74;break $bb82$$bb87_loopexit$103}}}}while(0);var I6=Cj;var I5=(((I6))|0)>0;var I4=oD((I5),1,0);JH=I4;var I3=Cj;var I2=(((I3)-1)&4294967295);Cj=I2;var Hv=iB((I4),8,0)!=0;if(Hv){Bc=73}else{Bc=75}$bb86$$bb89$107:do{if(Bc==73){while(1){var Jd=uA[((Ch)>>2)];la[((Jd)>>0)]=32;var Jc=((Jd+1)&4294967295);uA[((Ch)>>2)]=Jc;var Jb=Cj;var Ja=(((Jb))|0)>0;var I9=oD((Ja),1,0);JH=I9;var I8=Cj;var I7=(((I8)-1)&4294967295);Cj=I7;var Kb=iB((I9),8,0)!=0;if(Kb){Bc=73;continue}else{Bc=75;break $bb86$$bb89$107}}}}while(0);var I1=FY;var IZ=((I1)&4294967295);var IY=((IZ+24)&4294967295);var IX=((IY+4)&4294967295);var IW=uA[((IX)>>2)];var IV=(((IW))|0)==0;if(IV){Bc=83}else{Bc=76}$bb96$$bb90$111:do{if(Bc==76){var IU=uA[((DY)>>2)];e=((c3)&4294967295);F9=IU;KY=0;while(1){var IJ=e;var IG=KY;var IF=((IJ+2*IG)&4294967295);var IE=uW[((IF)>>1)];var ID=iB((IE),16,0)!=0;if(!(ID)){Bc=80;break}var IS=e;var IR=KY;var IQ=((IS+2*IR)&4294967295);var IP=xV[((IQ)>>1)];var IO=oD((IP),16,0);var IN=F9;var IM=(((IO))|0)==(((IN))|0);var IL=KY;var IK=(((IL)+1)&4294967295);if(IM){Bc=81;break}KY=IK;Bc=79;continue}if(Bc==80){CN=0;K8=0}else{if(Bc==81){CN=IK;K8=IK;var IC=(((IK))|0)<=0;if(IC){Bc=83;break $bb96$$bb90$111}GO=1;JD=1;var IB=uA[((Cf)>>2)];uA[((Ch)>>2)]=IB;Bc=117;continue $bb138$26}}}}while(0);GO=0;JD=0;var IA=Fw;var Iz=((IA)&4294967295);la[((Iz)>>0)]=0;var Iy=Ib;uA[((Ch)>>2)]=Iy;var Ix=FY;var Iw=((Ix+8296)&4294967295);uA[((Iw)>>2)]=0;var Iu=FY;var Is=((Iu+8300)&4294967295);uA[((Is)>>2)]=0;Bc=117;continue $bb138$26}}while(0);Ma=0;Cz=0;var Ip=uA[((DY)>>2)];var In=(((Ip))|0)>12799;var Il=uA[((DY)>>2)];var Ij=(((Il))|0)<=42751;var Fy=(In)&(Ij);if(!(Fy)){Bc=87;break $bb58$$bb59$70}var Ih=JY;var If=(Ih)!=0;if(!(If)){Bc=87;break $bb58$$bb59$70}var Id=FY;CH=Id;AM=((tZ)&4294967295);BP=Di;uA[((Dh)>>2)]=0;var Ia=uA[((It)>>2)];uA[((Ir)>>2)]=Ia;var H8=AM;uA[((Bp)>>2)]=H8;var H6=CH;var H4=BP;var H2=tN(H6,Bp,H4,Iq,0,0);CQ=H2;var H0=CQ;KI=H0;uA[((Io)>>2)]=Im;uA[((Ik)>>2)]=1;var HY=uA[((Ch)>>2)];var HW=Lm;var HU=(((HW)-1)&4294967295);var HS=((HY+HU)&4294967295);uA[((Ch)>>2)]=HS;Bc=87;break $bb58$$bb59$70}}}while(0);$bb102$$bb117$125:do{if(Bc==87){var Lr=uA[((Dp)>>2)];var HP=(((Lr))|0)==0;if(!(HP)){Bc=97;break $bb102$$bb117$125}var HN=uA[((L5)>>2)];var HL=(((HN))|0)<=767;var HJ=uA[((L5)>>2)];var HH=(((HJ))|0)>879;var Fx=(HL)|(HH);if(Fx){Bc=89}else{Bc=96}$bb106$$bb116$128:do{if(Bc==89){var HF=uA[((L5)>>2)];var HD=kr(HF);var HB=(((HD))|0)!=0;var Hz=oD((HB),1,0);Jt=Hz;var Hx=Jt;var Br=iB((Hx),8,0)!=0;if(Br){Bc=90}else{Bc=94}if(Bc==90){var Hr=EL;var Hp=(((Hr))|0)>1;if(Hp){Bc=92;break $bb138$26}var Hn=uA[((Ch)>>2)];var Hl=Lm;var Hj=(((Hl)-1)&4294967295);var Hh=((Hn+Hj)&4294967295);var Hf=la[((Hh)>>0)];var Hd=iB((Hf),8,0)>32;if(Hd){Bc=92;break $bb138$26}}else{if(Bc==94){var B5=uA[((L5)>>2)];var B3=FY;hr(B3,B5,-1,Do,0);var B1=la[((Dn)>>0)];var B0=iB((B1),8,0)!=0;if(!(B0)){Bc=96;break $bb106$$bb116$128}uA[((Dm)>>2)]=Dl;uA[((Dk)>>2)]=1}}}}while(0);var BZ=uA[((Ch)>>2)];var BY=Lm;var BX=(((BY)-1)&4294967295);var BW=((BZ+BX)&4294967295);uA[((Ch)>>2)]=BW;Bc=98;break $bb44$$bb118$54}}while(0);var BV=FY;var BU=((BV+652)&4294967295);uA[((BU)>>2)]=0}}while(0);var BT=uA[((Ii)>>2)];var BS=(BT)==0;if(BS){Bc=99}else{Bc=100}if(Bc==99){uA[((Ig)>>2)]=((zT)&4294967295)}var BM=uA[((Ie)>>2)];var BL=(((BM))|0)>0;if(!(BL)){Bc=117;continue $bb138$26}var BK=KX;var BJ=(((BK))|0)<0;if(BJ){Bc=102;break $bb138$26}var BF=uA[((Ic)>>2)];var BE=((BF)&4294967295);var BD=la[((BE)>>0)];var BB=iB((BD),8,0)==21;if(BB){Bc=104}else{Bc=106}if(Bc==104){var BA=KX;var Bz=(BA)&4096;var By=(((Bz))|0)==0;if(By){Bc=105;break $bb138$26}}var Bt=uA[((H9)>>2)];var Bs=(Bt)&-32769;uA[((H7)>>2)]=Bs;var Bn=(((Bs))|0)!=0;if(Bn){Bc=107}else{Bc=114}$bb127$$bb135$146:do{if(Bc==107){var Bm=JY;var Bl=(Bm)!=0;if(!(Bl)){Bc=114;break $bb127$$bb135$146}var Bk=uA[((H5)>>2)];var Bj=(Bk)&1024;var Bi=(((Bj))|0)==0;if(Bi){Bc=110;break $bb138$26}var Bh=KX;var Bg=(Bh)&536870912;var Bf=(((Bg))|0)==0;if(Bf){Bc=110;break $bb138$26}}}while(0);var LW=uA[((H3)>>2)];var LU=(LW)!=0;if(LU){Bc=115}else{Bc=116}if(Bc==115){var LS=uA[((H1)>>2)];la[((LS)>>0)]=69}var LQ=uA[((HZ)>>2)];var LJ=FY;var LH=Fw;var LF=Ll;jH(LJ,LH,LF,LQ);Bc=117;continue $bb138$26}$bb142$$bb110$$bb122$$bb125$$bb131$$bb64$$iswalpha_exit_thread$154:do{if(Bc==118){Bq=0;DO=0;Bc=119;break $bb142$$bb110$$bb122$$bb125$$bb131$$bb64$$iswalpha_exit_thread$154}else{if(Bc==92){var Hb=Fw;var G9=((Hb)&4294967295);la[((G9)>>0)]=0;var Cd=BN;var Cc=(Cd)!=0;if(!(Cc)){Bc=119;break $bb142$$bb110$$bb122$$bb125$$bb131$$bb64$$iswalpha_exit_thread$154}var Cb=BN;var Ca=((Cb)&4294967295);var B9=uA[((Ca)>>2)];var B8=(B9)|65536;var B7=BN;var B6=((B7)&4294967295);uA[((B6)>>2)]=B8;Bc=119;break $bb142$$bb110$$bb122$$bb125$$bb131$$bb64$$iswalpha_exit_thread$154}else{if(Bc==102){var BI=((Hu+8)&4294967295);var BH=uA[((BI)>>2)];var BG=(BH)|1;CJ=BG;Bc=120;break $bb$$bb1$2}else{if(Bc==105){var Bx=((Hu+4)&4294967295);var Bw=uA[((Bx)>>2)];var Bv=Fw;var Bu=oJ(Bv,Bw);CJ=0;Bc=120;break $bb$$bb1$2}else{if(Bc==110){var Be=((Hu+8)&4294967295);var Ba=uA[((Be)>>2)];var A9=(Ba)&1024;var A8=(((A9))|0)!=0;if(A8){Bc=111}else{Bc=113}$bb132$$bb134$161:do{if(Bc==111){var A7=((Hu+8)&4294967295);var A6=uA[((A7)>>2)];var A5=(A6)&127;var A4=(((A5))|0)==0;if(!(A4)){Bc=113;break $bb132$$bb134$161}var A3=((Hu+8)&4294967295);var A2=uA[((A3)>>2)];var A1=uA[((Ch)>>2)];var A0=(A1);var AY=Ib;var AW=(AY);var AU=(((A0)-(AW))&4294967295);var AS=(AU)|(A2);var AQ=((Hu+8)&4294967295);uA[((AQ)>>2)]=AS}}while(0);var AO=((Hu+4)&4294967295);var AL=uA[((AO)>>2)];var AJ=JY;var AH=oJ(AJ,AL);var L9=((JG)&4294967295);var L7=wg(L9);var L4=Ib;var L2=((JG)&4294967295);ns(L4,L2,L7,1,0);var L0=((Hu+8)&4294967295);var LY=uA[((L0)>>2)];CJ=LY;Bc=120;break $bb$$bb1$2}else{if(Bc==54){CO=1;KV=1;Bc=59;break $bb142$$bb110$$bb122$$bb125$$bb131$$bb64$$iswalpha_exit_thread$154}}}}}}}while(0);if(Bc==119){var Lq=FY;var Li=Fw;var Lg=LL;nQ(Lq,Li,Lg);var Le=((JG)&4294967295);var Lb=wg(Le);var K9=Ib;var K6=((JG)&4294967295);ns(K9,K6,Lb,1,0);CJ=0}else{if(Bc==59){var Ee=FY;var Ed=((Ee)&4294967295);var Ec=((Ed+268)&4294967295);var D0=uA[((Ec)>>2)];var DZ=Fw;var DX=qs(DZ,((lU)&4294967295),21,D0);CJ=0}}}}}while(0);var K4=CJ;IH=K4;var J9=IH;vp=BQ;return J9;return null}function lf(Ds,Cn,AK){var Bi=vp;vp+=164;n1(Bi,0,164);var BE;var Ce=null;var AP;var AM;var CP;var Dq;var BS;var A3;var BR=Bi;var A2;var CU;var Dp;var Do;var BP;var CZ;var Dn;var B5;var BC;var C3;var Dm;var C2;var Cs;var BT;var Dl;var B7;var CV;var A5;var AH;var Dr;var Cg;var AN;var Dk;var CR=Bi+160;var B6;var BD;var A4;var Cu;var CT;B7=Ds;CV=Cn;A5=AK;B6=0;BD=9;CT=0;var Dj=CV;C2=CR;Cs=Dj;var Di=C2;var Dh=Cs;var Dg=F(Di,Dh,0);Dl=Dg;var Cj=Dl;BT=Cj;var Ci=B7;var Ch=((Ci+964)&4294967295);var Cf=uA[((Ch)>>2)];var Cd=(((Cf))|0)>0;if(Cd){BE=1}else{BE=3}$bb$$bb2$2:do{if(BE==1){var Cc=uA[((CR)>>2)];var Cb=(((Cc))|0)<=576;if(!(Cb)){BE=3;break $bb$$bb2$2}Dk=0;BE=40;break $bb$$bb2$2}}while(0);$bb37$$bb2$5:do{if(BE==3){var Ca=B7;var B9=((Ca)&4294967295);var B8=((B9+24)&4294967295);var B4=((B8+20)&4294967295);var B3=uA[((B4)>>2)];var B2=(((B3))|0)==1;if(B2){BE=4}else{BE=5}if(BE==4){Dk=0}else{if(BE==5){var B1=CV;var B0=la[((B1)>>0)];var BZ=iB((B0),8,0);uA[((CR)>>2)]=BZ;var BY=uA[((CR)>>2)];var BX=(((BY))|0)==32;var BV=uA[((CR)>>2)];var BU=(((BV))|0)==0;var CA=(BX)|(BU);var BQ=uA[((CR)>>2)];var BO=(((BQ))|0)==39;var C8=(CA)|(BO);if(C8){BE=6}else{BE=7}if(BE==6){Cg=1;AN=1;Dk=0}else{if(BE==7){Cg=0;AN=0;A4=0;Cu=0;$bb12$13:while(1){var BN=CV;var BM=A4;var BL=((BN+BM)&4294967295);B5=CR;BC=BL;var BK=B5;var BI=BC;var BH=F(BK,BI,0);Dm=BH;var BG=Dm;C3=BG;var BJ=C3;var BF=A4;var BB=(((BF)+(BJ))&4294967295);A4=BB;var BA=uA[((CR)>>2)];var Bz=(((BA))|0)==0;var By=uA[((CR)>>2)];var Bx=(((By))|0)==32;var C5=(Bz)|(Bx);if(C5){BE=27;break $bb12$13}var Bw=uA[((CR)>>2)];var Bv=(((Bw))|0)==39;if(Bv){BE=10}else{BE=12}if(BE==10){var Bu=Cu;var Bt=(((Bu))|0)>1;if(Bt){BE=27;break $bb12$13}var Bs=A5;var Br=(((Bs))|0)>0;if(Br){BE=27;break $bb12$13}}var Bp=Cu;var Bo=(((Bp))|0)==0;if(Bo){BE=13}else{BE=14}if(BE==13){var Bn=uA[((CR)>>2)];B6=Bn}var Bm=Cu;var Bl=(((Bm)+1)&4294967295);Cu=Bl;var Bk=uA[((CR)>>2)];var Bj=B7;Do=Bj;BP=Bk;var Bh=Do;var Bg=BP;var Bf=yE(Bh,Bg,7);Dn=Bf;var Be=Dn;CZ=Be;var Bq=CZ;var Bd=(((Bq))|0)!=0;var Bc=oD((Bd),1,0);Dr=Bc;var CF=iB((Bc),8,0)!=0;if(CF){BE=15;break $bb12$13}var Ba=uA[((CR)>>2)];var A9=(((Ba))|0)==39;if(A9){BE=17}else{BE=18}if(BE==17){CT=1;BE=8;continue $bb12$13}else{if(BE==18){var A8=uA[((CR)>>2)];A2=A8;var A7=A2;var A6=(((A7))>>>0)<=255;var A0=A2;if(A6){BE=19}else{BE=20}if(BE==19){var AZ=z6(A0);Dp=AZ;Ce=19}else{if(BE==20){var AY=(((A0))>>>0)>12352;var AX=A2;var AW=(((AX))>>>0)<=42752;var AO=(AY)&(AW);if(AO){BE=21}else{BE=22}if(BE==21){Dp=1;CU=1;BE=8;continue $bb12$13}else{if(BE==22){var AV=A2;var AU=(((AV))>>>0)>563;if(AU){BE=23;break $bb12$13}var AT=A2;var AS=(((AT)-256)&4294967295);var AQ=((xF+AS)&4294967295);var AL=ll[((AQ)>>0)];var AJ=oD((AL),8,0);Dp=AJ;Ce=24}}}}var AI=Ce==19?AZ:(AJ);CU=AI;var i=(((AI))|0)==0;if(i){BE=26;break $bb12$13}else{BE=8;continue $bb12$13}}}}$bb29thread_pre_split$$bb23$$bb27$$iswalpha_exit_thread$35:do{if(BE==27){var AR=BD;Ce=27;BE=28;break $bb29thread_pre_split$$bb23$$bb27$$iswalpha_exit_thread$35}else{if(BE==15){var Bb=Cu;BD=Bb;Ce=15;BE=28;break $bb29thread_pre_split$$bb23$$bb27$$iswalpha_exit_thread$35}else{if(BE==23){Dp=0;CU=0;BE=26;break $bb29thread_pre_split$$bb23$$bb27$$iswalpha_exit_thread$35}}}}while(0);if(BE==28){var e=Ce==27?AR:(Bb);var Dx=(((e))|0)>2;if(Dx){BE=29}else{BE=35}$bb30$$bb32$41:do{if(BE==29){var Dw=B7;var Dv=((Dw)&4294967295);var Du=((Dv+24)&4294967295);var Dt=((Du+20)&4294967295);var Df=uA[((Dt)>>2)];var De=(((Df))|0)==2;if(!(De)){BE=35;break $bb30$$bb32$41}var Dd=B7;var Dc=CV;AP=Dd;AM=Dc;var Db=((BR)&4294967295);la[((Db)>>0)]=0;var Da=AM;var C9=((Da+-1)&4294967295);var C7=la[((C9)>>0)];var C6=iB((C7),8,0);BS=C6;var C4=AM;var C1=((C4+-1)&4294967295);la[((C1)>>0)]=32;var C0=AP;var CY=AM;var CX=((BR)&4294967295);var CW=uI(C0,CY,CX,160,0,-2147483648,0);A3=CW;var CS=BS;var CQ=(((CS))&255);var CO=AM;var CN=((CO+-1)&4294967295);la[((CN)>>0)]=CQ;var CM=A3;var CL=(((CM))|0)==0;if(CL){BE=32}else{BE=31}$bb1_i17$$bb_i16$44:do{if(BE==31){var CK=A3;var CJ=(CK)&32768;var CI=(((CJ))|0)!=0;if(CI){BE=32;break $bb1_i17$$bb_i16$44}Dq=0;BE=34;break $bb1_i17$$bb_i16$44}}while(0);if(BE==32){Dq=1}var CH=Dq;CP=CH;var BW=CP;Dk=BW;BE=40;break $bb37$$bb2$5}}while(0);var CG=B7;var CE=((CG)&4294967295);var CD=((CE+24)&4294967295);var CC=((CD+20)&4294967295);var CB=uA[((CC)>>2)];var Cz=B6;var Cy=(((CB))|0)==(((Cz))|0);if(Cy){BE=36}else{BE=37}if(BE==36){var Cx=BD;var Cw=(((Cx)-1)&4294967295);BD=Cw}var Cv=B7;var Ct=((Cv)&4294967295);var Cr=((Ct+248)&4294967295);var Cq=la[((Cr)>>0)];var Cp=iB((Cq),8,0);var Co=(((Cp)+1)&4294967295);var Cm=BD;var Cl=(((Co))|0)<(((Cm))|0);if(Cl){BE=38}else{BE=39}if(BE==38){Dk=1}else{if(BE==39){Dk=0}}}else{if(BE==26){Dk=0}}}}}}}}while(0);var Ck=Dk;AH=Ck;var A1=AH;vp=Bi;return A1;return null}function x9(By,A6,A7){var Bj;var A8=null;var AI;var Bq;var Bv;var AU;var AT;var BO;var BI;var Bw;AI=By;Bq=A6;Bv=A7;BO=0;BI=0;Bw=0;uA[((wp)>>2)]=-1;uA[((Ao)>>2)]=0;uA[((uM)>>2)]=-1;var BH=AI;AU=BH;var BG=AU;var BF=Bq;var BE=(((BG))|0)<(((BF))|0);if(BE){Bj=1}else{Bj=11}$bb$$bb11$2:do{if(Bj==1){while(1){var BD=uA[((eb)>>2)];var BC=AU;var BB=((BD+6*BC)&4294967295);var BA=((BB)&4294967295);var Bz=la[((BA)>>0)];var Bx=iB((Bz),8,0);AT=Bx;var Bu=AT;var Bt=BO;var Bs=(((Bu))|0)>=(((Bt))|0);if(Bs){A8=1;Bj=2}else{A8=1;Bj=6}if(Bj==2){var Br=AT;var Bp=BO;var Bo=(((Br))|0)>(((Bp))|0);if(Bo){Bj=3}else{Bj=4}if(Bj==3){var Bn=AU;Bw=Bn}else{if(Bj==4){var Bm=BI;Bw=Bm}}var Bl=AU;BI=Bl;var Bk=AT;BO=Bk;A8=5}var Bi=A8==5?Bk:(Bu);var Bh=(((Bi))|0)>3;if(Bh){Bj=7}else{Bj=10}if(Bj==7){var Bg=uA[((wp)>>2)];var Bf=(((Bg))|0)<0;if(Bf){Bj=8}else{Bj=9}if(Bj==8){var Be=AU;var Bd=AI;var Bc=(((Be)-(Bd))&4294967295);uA[((wp)>>2)]=Bc}var Bb=AU;uA[((uM)>>2)]=Bb}var Ba=AU;var A9=(((Ba)+1)&4294967295);AU=A9;var A5=AU;var A4=Bq;var A3=(((A5))|0)<(((A4))|0);if(A3){Bj=1;continue}else{Bj=11;break $bb$$bb11$2}}}}while(0);var A2=uA[((wp)>>2)];var A1=(((A2))|0)<0;if(A1){Bj=12}else{Bj=13}if(Bj==12){var AZ=Bq;uA[((wp)>>2)]=AZ}var AY=Bq;var AX=BI;var A0=((0-(AX))&4294967295);var AW=(((AY)+-1)&4294967295);var AV=(((AW)+(A0))&4294967295);uA[((Ao)>>2)]=AV;var AS=BI;uA[((mg)>>2)]=AS;var AR=Bw;uA[((av)>>2)]=AR;var BJ=ll[((rG)>>0)];var AQ=oD((BJ),1,0);var AP=(((AQ))|0)!=0;if(AP){Bj=14}else{Bj=15}$bb14$$bb15$22:do{if(Bj==14){var AO=Bq;uA[((av)>>2)]=AO;var AN=uA[((av)>>2)];uA[((mg)>>2)]=AN}else{if(Bj==15){var AM=uA[((uM)>>2)];var AL=(((AM))|0)>=0;if(AL){Bj=16}else{Bj=18}if(Bj==16){var AK=Bq;var AJ=Bv;var AH=(((AK))|0)==(((AJ))|0);if(!(AH)){Bj=19;break $bb14$$bb15$22}var i=uA[((eb)>>2)];var e=uA[((uM)>>2)];var BQ=((i+6*e)&4294967295);var BP=((BQ)&4294967295);la[((BP)>>0)]=7}else{if(Bj==18){var BN=uA[((eb)>>2)];var BM=uA[((mg)>>2)];var BL=((BN+6*BM)&4294967295);var BK=((BL)&4294967295);la[((BK)>>0)]=7}}}}}while(0);return;return}function p5(A8,AU,AV){var AR;var AT=null;var A7;var AW;var AS;var Ba;var A9;var Be;A7=A8;AW=AU;AS=AV;Be=0;var A6=AW;var A5=(((A6))|0)<0;if(A5){AT=-1;AR=1}else{AT=-1;AR=2}if(AR==1){AW=0;var i=AS;AT=1}var A4=AT==1?i:(AV);var A3=AW;A9=A3;var A2=(((A4))|0)<0;if(A2){AR=3}else{AR=4}if(AR==3){Be=1;var A1=AS;var A0=((0-(A1))&4294967295);AS=A0}var AZ=A9;var AY=AS;var AX=(((AY)+(AZ))&4294967295);Ba=AX;var AQ=(((AX))|0)<0;if(AQ){AR=5}else{AR=6}$bb5_thread$$bb5$8:do{if(AR==5){Ba=0}else{if(AR==6){var AP=(((AX))|0)>254;if(!(AP)){AR=8;break $bb5_thread$$bb5$8}Ba=254}}}while(0);var AO=A9;var AN=(((AO))|0)>254;if(AN){AR=9}else{AR=10}if(AR==9){A9=254}var AM=Ba;var AL=(((AM))&255);var AK=A7;var AJ=((AK+4)&4294967295);la[((AJ)>>0)]=AL;var AI=A9;var AH=(((AI))&255);var e=A7;var Bk=((e+5)&4294967295);la[((Bk)>>0)]=AH;var Bj=A7;var Bi=((Bj+2)&4294967295);var Bh=la[((Bi)>>0)];var Bg=Be;var Bf=(((Bg))&255);var Bd=(Bf)|(Bh);var Bc=A7;var Bb=((Bc+2)&4294967295);la[((Bb)>>0)]=Bd;return;return}function bt(BB,Bl,Bk,AJ){var Bm;var A8=null;var BI;var Bj;var Bn;var AX;var AW;var AV;var AI;var BA;var By;var Bu;var AK;BI=BB;Bj=Bl;Bn=Bk;AX=AJ;var BM=AX;var BL=Bn;var BK=(((BM)-(BL))&4294967295);var BJ=(BK)<<8;BA=BJ;var BH=Bj;var BG=BI;var BF=(((BH)-(BG))&4294967295);By=BF;var BE=By;var BD=(((BE))|0)<=0;if(BD){Bm=12}else{Bm=1}$return$$bb$2:do{if(Bm==1){var BC=By;var Bz=(((BC))|0)>1;if(Bz){Bm=2}else{Bm=3}if(Bm==2){var Bx=BA;var Bw=By;var Bv=(((((Bx))|0)/(((Bw))|0))|0);BA=Bv}var Bt=Bn;var Bs=(Bt)<<8;AI=Bs;var Br=BI;AW=Br;var Bq=AW;var Bp=Bj;var Bo=(((Bq))|0)<(((Bp))|0);if(!(Bo)){Bm=12;break $return$$bb$2}while(1){var Bi=uA[((eb)>>2)];var Bh=AW;var Bg=((Bi+6*Bh)&4294967295);AK=Bg;var Bf=AK;var Be=((Bf)&4294967295);var Bd=la[((Be)>>0)];var Bc=iB((Bd),8,0);AV=Bc;var Bb=BA;var Ba=(((Bb))|0)>0;var A9=BA;var A7=(((A9))|0)>>8;var A6=((0-(A7))&4294967295);if(Ba){Bm=5}else{Bm=6}if(Bm==5){var A5=AI;var A4=(((A5))|0)>>8;var A3=AK;p5(A3,A4,A6);var A2=AI;var A1=BA;var A0=(((A1)+(A2))&4294967295);AI=A0}else{if(Bm==6){Bu=A6;var AZ=AV;var AY=((qM+AZ*4)&4294967295);var AU=uA[((AY)>>2)];var AT=Bu;var AS=(((AU))|0)>(((AT))|0);if(AS){A8=6;Bm=7}else{A8=6;Bm=8}if(Bm==7){var AR=AV;var AQ=((qM+AR*4)&4294967295);var AP=uA[((AQ)>>2)];Bu=AP;A8=7}var AO=A8==7?AP:(AT);var AN=AI;var AM=BA;var AL=(((AM)+(AN))&4294967295);AI=AL;var AH=(((AO))|0)>18;if(AH){Bm=9}else{Bm=10}if(Bm==9){Bu=18}var i=AI;var e=(((i))|0)>>8;var BT=AK;var BS=Bu;p5(BT,e,BS)}}var BR=AW;var BQ=(((BR)+1)&4294967295);AW=BQ;var BP=AW;var BO=Bj;var BN=(((BP))|0)<(((BO))|0);if(BN){Bm=4;continue}else{Bm=12;break $return$$bb$2}}}}while(0);return;return}function sV(Lg,LO,Ll,LT){var Ba;var K3=null;var Ex;var CJ;var CL;var K1;var CQ;var Gd;var Lj;var MX;var Lm;var DJ;var MR;var Mi;var EZ;var NM;var CO;var Lk;var LA;var Cf;var Ev;var Ca;var BK;var Iz;var KQ;var Cb;var Ix;var IZ;var Ce;var Ek;var Bo;var Mg;var Bh;var K6;var CN;var CC;var B3;var DN;var Iy;var FQ;var CM;var AZ;var MT;var Cq;var B9;var GR;var CK;var ME;var HS;var GN;var LZ;var DH;var BL;var CI;var K2;var J9;var DY;var LN;var Ds;var Lx;var ND;var CH;var L9;var Li;var Gv;var Ln;var Nu;var D2;var CA;var BX;var Hr;var NV;var Lf;var JL;var JO;var MP;var Hi;var Nv;var G7;var Nh;var C0;var CG;var Nf;var Hp;var CF;var MS;var Ku;var MG;var JN;var DX;var IA;var DF;var Dl;var CE;var C4;var Bf;var Bb;var Gm;var BW;DX=Lg;IA=LO;DF=Ll;Dl=LT;BW=0;var CD=DX;var GW=(((CD))|0)==0;var GV=IA;if(GW){Ba=1}else{Ba=70}if(Ba==1){var GU=DF;var GT=Dl;C0=GV;CG=GU;Nf=GT;JN=0;var GS=C0;var GQ=(((GS))|0)>0;if(GQ){Ba=2}else{Ba=3}if(Ba==2){JN=1}var GP=uA[((aP)>>2)];var GO=Nf;var GM=((GP+68*GO)&4294967295);Ku=GM;var GL=C0;MS=GL;var Gz=Ku;var Gy=((Gz+25)&4294967295);var Gx=ll[((Gy)>>0)];var Gw=oD((Gx),8,0);var Gu=Ku;var Gt=((Gu+24)&4294967295);var Gs=ll[((Gt)>>0)];var Gr=oD((Gs),8,0);var Gq=uA[((wp)>>2)];var Gp=MS;var Gc=(((Gp)+(Gq))&4294967295);var Gb=MS;bt(Gb,Gc,Gr,Gw);var Ga=uA[((wp)>>2)];var F9=MS;var F8=(((F9)+(Ga))&4294967295);MS=F8;var F7=uA[((tR)>>2)];var F6=(F7)&512;var F5=(((F6))|0)!=0;if(F5){Ba=4}else{Ba=5}if(Ba==4){var F4=uA[((av)>>2)];uA[((mg)>>2)]=F4}var F3=uA[((mg)>>2)];var FG=Ku;var FF=MS;DY=FG;LN=FF;Ds=F3;Lx=0;Ln=0;Nu=0;D2=0;Hr=0;JO=0;MP=0;Nv=0;var FE=Ds;G7=FE;Nh=2;var FD=DY;var FC=((FD+32)&4294967295);var FB=ll[((FC)>>0)];var FA=oD((FB),8,0);var Fz=DY;var Fy=((Fz+31)&4294967295);var Fx=ll[((Fy)>>0)];var Fc=oD((Fx),8,0);var Fb=(((FA)-(Fc))&4294967295);var Fa=(Fb)<<8;NV=Fa;var E9=NV;var GK=((0-(E9))&4294967295);var Dy=(((E9))|0)>=0;var F2=(Dy)?(E9):(GK);Lf=F2;JL=((uJ)&4294967295);BX=1;CA=0;var E8=DY;var E7=((E8+30)&4294967295);var E6=la[((E7)>>0)];var E5=iB((E6),8,0)==-1;if(E5){Ba=6}else{Ba=7}if(Ba==6){CA=1}var E4=DY;var E3=((E4+33)&4294967295);var EH=la[((E3)>>0)];var EG=iB((EH),8,0)!=-1;if(EG){Ba=8}else{Ba=13}$bb2_i_i$$bb39_preheader_i_i$13:do{if(Ba==8){var EF=Ds;var EE=(((EF)-1)&4294967295);Gv=EE;while(1){var D7=Gv;var D6=LN;var D5=(((D7))|0)>=(((D6))|0);if(!(D5)){Ba=13;break $bb2_i_i$$bb39_preheader_i_i$13}var ED=uA[((eb)>>2)];var EC=Gv;var EB=((ED+6*EC)&4294967295);var EA=((EB)&4294967295);var Ey=la[((EA)>>0)];var Ew=iB((Ey),8,0)>3;var D9=Gv;if(Ew){Ba=10;break}var D8=(((D9)-1)&4294967295);Gv=D8;Ba=12;continue}G7=D9}}while(0);var D4=LN;var D3=Ds;var D1=(((D4))|0)<(((D3))|0);if(D1){Ba=14}else{Ba=61}$bb8_i_i$$_ZL17SetHeadIntonationP4TUNEiii_exit_i$21:do{if(Ba==14){$bb8_i_i$22:while(1){var D0=uA[((eb)>>2)];var DZ=LN;var DL=((D0+6*DZ)&4294967295);Li=DL;var DK=Li;var DI=((DK)&4294967295);var DG=la[((DI)>>0)];var DE=iB((DG),8,0);L9=DE;var DD=BX;var DC=(((DD))|0)!=0;if(DC){Ba=18}else{Ba=15}$bb12_i_i$$bb9_i_i$24:do{if(Ba==15){var DB=L9;var DA=(((DB))|0)>3;if(!(DA)){Ba=50;break $bb12_i_i$$bb9_i_i$24}var LB=BX;var Dz=(((LB))|0)!=0;if(Dz){Ba=18;break $bb12_i_i$$bb9_i_i$24}var Dm=L9;var Dk=(((Dm))|0)==5;if(Dk){Ba=18;break $bb12_i_i$$bb9_i_i$24}var Ig=LN;var If=G7;var Ie=(((Ig))|0)==(((If))|0);if(Ie){Ba=37}else{Ba=38}if(Ba==37){var Id=DY;var H2=((Id+33)&4294967295);var H1=ll[((H2)>>0)];var H0=oD((H1),8,0);var HZ=(H0)<<8;Ln=HZ;CA=2;Ba=44;break $bb12_i_i$$bb9_i_i$24}else{if(Ba==38){var HY=Nv;var HX=(((HY))|0)!=0;if(HX){Ba=39}else{Ba=40}if(Ba==39){CA=1;Nv=0;var HW=DY;var HV=((HW+31)&4294967295);var HU=ll[((HV)>>0)];var HT=oD((HU),8,0);var HG=(HT)<<8;Ln=HG;var HE=D2;var HD=(((HE)+1)&4294967295);D2=HD;Ba=44;break $bb12_i_i$$bb9_i_i$24}else{if(Ba==40){var HC=D2;var HB=(((HC))|0)>0;if(HB){Ba=41}else{Ba=42}if(Ba==41){var HA=Ln;var Hy=Nu;var Hx=(((Hy)+(HA))&4294967295);Ln=Hx;Ba=44;break $bb12_i_i$$bb9_i_i$24}else{if(Ba==42){var Hw=DY;var Hv=((Hw+32)&4294967295);var Hh=ll[((Hv)>>0)];var Hg=oD((Hh),8,0);var Hf=(((Hg)*256)&4294967295);var He=Hr;var Hd=DY;var Hc=((Hd+16)&4294967295);var Hb=((Hc+He)&4294967295);var Ha=la[((Hb)>>0)];var G9=iB((Ha),8,0);var G8=Lf;var AX=(((G9)*(G8))&4294967295);var AV=(((((AX))|0)/64)|0);var AT=(((AV)+(Hf))&4294967295);Ln=AT;var AR=Hr;var AP=(((AR)+1)&4294967295);Hr=AP;var AN=DY;var AL=((AN+35)&4294967295);var AJ=ll[((AL)>>0)];var AH=oD((AJ),8,0);var e=Hr;var NZ=(((AH))|0)<=(((e))|0);if(!(NZ)){Ba=44;break $bb12_i_i$$bb9_i_i$24}Hr=0;Ba=44;break $bb12_i_i$$bb9_i_i$24}}}}}}}}while(0);$bb12_i_i$$bb30_i_i$$bb32_i_i$39:do{if(Ba==18){BX=0;Hr=0;var Dj=DY;var Di=((Dj+30)&4294967295);var Dh=la[((Di)>>0)];var Dg=iB((Dh),8,0)==-1;var Df=LN;if(Dg){Ba=19}else{Ba=25}if(Ba==19){var De=G7;GN=Df;LZ=De;DH=4;K2=0;while(1){var JE=GN;var JC=LZ;var Jz=(((JE))|0)<(((JC))|0);if(!(Jz)){Ba=24;break}var Dd=uA[((eb)>>2)];var Dc=GN;var J6=((Dd+6*Dc)&4294967295);var J4=((J6)&4294967295);var J2=la[((J4)>>0)];var J0=iB((J2),8,0);J9=J0;var JY=GN;var JX=(((JY)+1)&4294967295);GN=JX;var JV=J9;var JT=(((JV))|0)>6;if(JT){Ba=24;break}var JR=J9;var JP=DH;var JK=(((JR))|0)>=(((JP))|0);if(!(JK)){Ba=23;continue}var JI=K2;var JG=(((JI)+1)&4294967295);K2=JG;Ba=23;continue}var Jx=K2;CI=Jx;var Jv=CI;BL=Jv;var Ez=BL;D2=Ez;var Jt=DY;var Jr=((Jt+31)&4294967295);var Jo=ll[((Jr)>>0)];var Jm=oD((Jo),8,0);var Jk=(Jm)<<8;Ln=Jk}else{if(Ba==25){var Ji=(((Df)+1)&4294967295);var Jg=G7;MT=Ji;Cq=Jg;B9=4;ME=0;while(1){var IK=MT;var IJ=Cq;var II=(((IK))|0)<(((IJ))|0);if(!(II)){Ba=30;break}var Je=uA[((eb)>>2)];var Jc=MT;var Ja=((Je+6*Jc)&4294967295);var I8=((Ja)&4294967295);var I6=la[((I8)>>0)];var I4=iB((I6),8,0);HS=I4;var I2=MT;var I0=(((I2)+1)&4294967295);MT=I0;var IX=HS;var IV=(((IX))|0)>6;if(IV){Ba=30;break}var IT=HS;var IR=B9;var IP=(((IT))|0)>=(((IR))|0);if(!(IP)){Ba=29;continue}var IN=ME;var IL=(((IN)+1)&4294967295);ME=IL;Ba=29;continue}var IH=ME;CK=IH;var IG=CK;GR=IG;var Jq=GR;D2=Jq;var IF=DY;var IE=((IF+30)&4294967295);var ID=ll[((IE)>>0)];var IC=oD((ID),8,0);var IB=(IC)<<8;Ln=IB;Nv=1}}var Iw=DY;var Iv=((Iw+34)&4294967295);var Iu=ll[((Iv)>>0)];var It=oD((Iu),8,0);var Is=D2;var Ir=(((It))|0)<(((Is))|0);if(Ir){K3=31;Ba=32}else{K3=31;Ba=33}if(Ba==32){var Iq=DY;var Ip=((Iq+34)&4294967295);var Io=ll[((Ip)>>0)];var In=oD((Io),8,0);D2=In;K3=32}var Im=K3==32?In:(Is);var Il=(((Im))|0)>1;if(Il){Ba=34}else{Ba=35}if(Ba==34){var Ik=D2;var Ij=(((Ik)-1)&4294967295);var Ii=NV;var Ih=(((((Ii))|0)/(((Ij))|0))|0);Nu=Ih;Ba=44;break $bb12_i_i$$bb30_i_i$$bb32_i_i$39}else{if(Ba==35){Nu=0;Ba=44;break $bb12_i_i$$bb30_i_i$$bb32_i_i$39}}}}while(0);$bb30_i_i$$bb32_i_i$63:do{if(Ba==44){var NW=D2;var NT=(((NW)-1)&4294967295);D2=NT;var LM=L9;var NR=(((LM))|0)>3;if(!(NR)){Ba=50;break $bb30_i_i$$bb32_i_i$63}var NP=LN;var NN=(((NP)+1)&4294967295);var NK=Ds;var NI=Nh;B3=NN;DN=NK;Iy=NI;var NG=B3;AZ=NG;while(1){var Ng=AZ;var Nd=DN;var Nb=(((Ng))|0)<=(((Nd))|0);if(!(Nb)){Ba=49;break}var NE=uA[((eb)>>2)];var NB=AZ;var Nz=((NE+6*NB)&4294967295);var Nx=((Nz)&4294967295);var Nt=la[((Nx)>>0)];var Nr=iB((Nt),8,0);var Np=Iy;var Nn=(((Nr))|0)>=(((Np))|0);if(Nn){Ba=49;break}var Nl=AZ;var Nj=(((Nl)+1)&4294967295);AZ=Nj;Ba=48;continue}var M9=AZ;var M7=B3;var M5=(((M9)-(M7))&4294967295);CM=M5;var M3=CM;FQ=M3;var HH=FQ;JO=HH;MP=0;var M1=Li;var MZ=((M1)&4294967295);la[((MZ)>>0)]=6;var MW=DY;var MU=((MW+26)&4294967295);var MQ=la[((MU)>>0)];var MO=Li;var MN=((MO+1)&4294967295);la[((MN)>>0)]=MQ;var MM=DY;var ML=((MM+27)&4294967295);var MK=ll[((ML)>>0)];var MJ=oD((MK),8,0);var MI=Ln;var MH=(((MI))|0)>>8;var MF=Li;p5(MF,MH,MJ);Ba=60;break $bb30_i_i$$bb32_i_i$63}}while(0);if(Ba==50){var MD=L9;var MC=Nh;var MB=(((MD))|0)>=(((MC))|0);if(MB){Ba=51}else{Ba=56}if(Ba==51){var MA=LN;var Mz=(((MA)+1)&4294967295);var My=Ds;var Mx=Nh;Bo=Mz;Mg=My;Bh=Mx;var Mw=Bo;CC=Mw;while(1){var Mk=CC;var Mj=Mg;var L4=(((Mk))|0)<=(((Mj))|0);if(!(L4)){Ba=55;break}var Mv=uA[((eb)>>2)];var Mu=CC;var Ms=((Mv+6*Mu)&4294967295);var Mr=((Ms)&4294967295);var Mq=la[((Mr)>>0)];var Mp=iB((Mq),8,0);var Mo=Bh;var Mn=(((Mp))|0)>=(((Mo))|0);if(Mn){Ba=55;break}var Mm=CC;var Ml=(((Mm)+1)&4294967295);CC=Ml;Ba=54;continue}var L3=CC;var L2=Bo;var L1=(((L3)-(L2))&4294967295);CN=L1;var L0=CN;K6=L0;var LR=K6;JO=LR;MP=0;var LY=JL;var LX=L9;var LW=((LY+4*LX)&4294967295);var LV=uA[((LW)>>2)];var LU=Ln;var LL=(((LU))|0)>>8;var LK=Li;p5(LK,LL,LV)}else{if(Ba==56){var LJ=JO;var LI=(((LJ))|0)>1;if(LI){Ba=57}else{Ba=58}if(Ba==57){var LH=CA;var LG=DY;var LF=((LG+39)&4294967295);var LE=((LF+LH)&4294967295);var LD=la[((LE)>>0)];var LC=iB((LD),8,0);var Lz=CA;var Ly=DY;var Lw=((Ly+36)&4294967295);var Lv=((Lw+Lz)&4294967295);var Lu=la[((Lv)>>0)];var Lt=iB((Lu),8,0);var Ls=(((LC)-(Lt))&4294967295);var Lr=JO;var Lq=(((Lr)-1)&4294967295);var Lp=(((((Ls))|0)/(((Lq))|0))|0);Hi=Lp}else{if(Ba==58){Hi=0}}var F0=JL;var FY=L9;var FW=((F0+4*FY)&4294967295);var FU=uA[((FW)>>2)];var FS=Ln;var FP=(((FS))|0)>>8;var FN=CA;var FL=DY;var FJ=((FL+36)&4294967295);var FH=((FJ+FN)&4294967295);var Fv=la[((FH)>>0)];var Ft=iB((Fv),8,0);var Fr=Hi;var Fp=MP;var Fn=(((Fp)*(Fr))&4294967295);var Fl=(((Ft)+(FP))&4294967295);var Fj=(((Fl)+(Fn))&4294967295);var Fh=Li;p5(Fh,Fj,FU);var Ff=MP;var Fd=(((Ff)+1)&4294967295);MP=Fd}}}var E1=LN;var EY=(((E1)+1)&4294967295);LN=EY;var EW=LN;var EU=Ds;var ES=(((EW))|0)<(((EU))|0);if(ES){Ba=14;continue $bb8_i_i$22}else{Ba=61;break $bb8_i_i$$_ZL17SetHeadIntonationP4TUNEiii_exit_i$21}}}}while(0);var EQ=LN;CH=EQ;var EO=CH;ND=EO;var Cc=ND;MS=Cc;var Lh=ll[((rG)>>0)];var EM=oD((Lh),1,0);var EK=(((EM))|0)!=0;if(EK){Ba=62}else{Ba=63}if(Ba==62){CF=0}else{if(Ba==63){var EI=uA[((Ao)>>2)];var Et=(((EI))|0)==0;var Er=Ku;if(Et){Ba=64}else{Ba=65}if(Ba==64){var Ep=((Er+42)&4294967295);var En=ll[((Ep)>>0)];var El=oD((En),8,0);uA[((ls)>>2)]=El;var Ei=Ku;var Eg=((Ei+43)&4294967295);var Ee=ll[((Eg)>>0)];var Ec=oD((Ee),8,0);var Ea=Ku;var DW=((Ea+44)&4294967295);var DV=ll[((DW)>>0)];var DU=oD((DV),8,0);var DT=(((Ec)-(DU))&4294967295);MG=DT;var DS=Ku;var DR=((DS+44)&4294967295);var DQ=ll[((DR)>>0)];var DP=oD((DQ),8,0);var DO=uA[((eb)>>2)];var DM=MS;var Dx=((DO+6*DM)&4294967295);var Dw=MS;var Dv=(((Dw)+1)&4294967295);MS=Dv;var Du=MG;p5(Dx,DP,Du)}else{if(Ba==65){var Dt=((Er+45)&4294967295);var Dr=ll[((Dt)>>0)];var Dq=oD((Dr),8,0);uA[((ls)>>2)]=Dq;var Dp=Ku;var Do=((Dp+46)&4294967295);var Dn=ll[((Do)>>0)];var Db=oD((Dn),8,0);var Da=Ku;var C9=((Da+47)&4294967295);var C8=ll[((C9)>>0)];var C7=oD((C8),8,0);var C6=(((Db)-(C7))&4294967295);MG=C6;var C5=Ku;var C3=((C5+47)&4294967295);var C2=ll[((C3)>>0)];var C1=oD((C2),8,0);var CZ=uA[((eb)>>2)];var CY=MS;var CX=((CZ+6*CY)&4294967295);var CW=MS;var CV=(((CW)+1)&4294967295);MS=CV;var CU=MG;p5(CX,C1,CU)}}var CT=uA[((eb)>>2)];var CS=uA[((mg)>>2)];var CR=((CT+6*CS)&4294967295);var CP=uA[((ls)>>2)];var CB=(((CP))&255);var Cz=((CR+1)&4294967295);la[((Cz)>>0)]=CB;var Cy=uA[((eb)>>2)];var Cx=uA[((mg)>>2)];var Cw=((Cy+6*Cx)&4294967295);var Cv=((Cw)&4294967295);var Cu=la[((Cv)>>0)];var Ct=iB((Cu),8,0)==4;if(Ct){Ba=67}else{Ba=68}if(Ba==67){var Cs=uA[((eb)>>2)];var Cr=uA[((mg)>>2)];var Cp=((Cs+6*Cr)&4294967295);var Co=((Cp)&4294967295);la[((Co)>>0)]=6}var Cn=Ku;var Cm=((Cn+49)&4294967295);var Cl=ll[((Cm)>>0)];var Ck=oD((Cl),8,0);var Cj=Ku;var Ci=((Cj+48)&4294967295);var Ch=ll[((Ci)>>0)];var Cg=oD((Ch),8,0);var Le=MS;var Ld=CG;bt(Le,Ld,Cg,Ck);var Lc=uA[((ls)>>2)];CF=Lc}}var Lb=CF;Hp=Lb;var Cd=Hp;CE=Cd}else{if(Ba==70){var La=(((GV))|0)>0;if(La){Ba=71}else{Ba=72}if(Ba==71){BW=1}var K9=Dl;var K8=((y3+K9*16)&4294967295);Bf=K8;var K7=Dl;var K5=((hi+K7*16)&4294967295);Bb=K5;var K4=IA;C4=K4;var K0=Bf;var KZ=((K0+1)&4294967295);var KY=ll[((KZ)>>0)];var KX=oD((KY),8,0);var KW=Bf;var KV=((KW)&4294967295);var KU=ll[((KV)>>0)];var KT=oD((KU),8,0);var KS=uA[((wp)>>2)];var KR=C4;var KP=(((KR)+(KS))&4294967295);var KO=C4;bt(KO,KP,KT,KX);var KN=uA[((wp)>>2)];var KM=C4;var KL=(((KM)+(KN))&4294967295);C4=KL;var KK=uA[((tR)>>2)];var KJ=(KK)&512;var KI=(((KJ))|0)!=0;if(KI){Ba=73}else{Ba=74}if(Ba==73){var KH=uA[((av)>>2)];uA[((mg)>>2)]=KH}var KG=uA[((mg)>>2)];var KE=C4;var KD=Bf;var KC=Bb;var KB=BW;MX=KE;Lm=KG;DJ=KD;MR=KC;Mi=4;EZ=KB;LA=0;Cf=0;Ev=0;Ca=0;Iz=0;var KA=DJ;var Kz=((KA+4)&4294967295);var Ky=uA[((Kz)>>2)];IZ=Ky;var Kx=DJ;var Kw=((Kx+3)&4294967295);var Kv=ll[((Kw)>>0)];var Kt=oD((Kv),8,0);var Ks=DJ;var Kr=((Ks+2)&4294967295);var Kq=ll[((Kr)>>0)];var Kp=oD((Kq),8,0);var Ko=(((Kt)-(Kp))&4294967295);var Kn=(Ko)<<8;Cb=Kn;var Km=Cb;var Lo=((0-(Km))&4294967295);var Hz=(((Km))|0)>=0;var Mh=(Hz)?(Km):(Lo);Ix=Mh;var Kl=EZ;var Kk=(((Kl))|0)!=0;if(Kk){Ba=75}else{Ba=76}if(Ba==75){BK=0;Iz=0;KQ=5;Ce=((m5)&4294967295);var Kj=DJ;var Ki=((Kj+8)&4294967295);var Kh=ll[((Ki)>>0)];var Kg=oD((Kh),8,0);var Kf=(((Kg)-1)&4294967295);var Ke=Cb;var Kd=(((((Ke))|0)/(((Kf))|0))|0);Cf=Kd}else{if(Ba==76){var Kc=DJ;var Kb=((Kc+10)&4294967295);var Ka=ll[((Kb)>>0)];var J8=oD((Ka),8,0);KQ=J8;var J7=DJ;var J5=((J7+12)&4294967295);var J3=uA[((J5)>>2)];Ce=J3;BK=1}}var J1=MX;var JZ=Lm;var JW=(((J1))|0)<(((JZ))|0);if(JW){Ba=78}else{Ba=109}$bb3_i7$$_ZL18calc_pitch_segmentiiP9TONE_HEADP12TONE_NUCLEUSii_exit$109:do{if(Ba==78){$bb3_i7$110:while(1){var JU=uA[((eb)>>2)];var JS=MX;var JQ=((JU+6*JS)&4294967295);Ek=JQ;var JM=Ek;var JJ=((JM)&4294967295);var JH=la[((JJ)>>0)];var JF=iB((JH),8,0);Lk=JF;var JD=BK;var JB=(((JD))|0)!=0;if(JB){Ba=82}else{Ba=79}$bb7_i11$$bb4_i8$112:do{if(Ba==79){var Jy=Lk;var Jw=Mi;var Ju=(((Jy))|0)>=(((Jw))|0);if(Ju){K3=79}else{K3=79;Ba=101;break $bb7_i11$$bb4_i8$112}var Bz=BK;var Js=(((Bz))|0)!=0;if(Js){Ba=82;break $bb7_i11$$bb4_i8$112}var Jp=Lk;var Jn=(((Jp))|0)==5;if(Jn){Ba=82;break $bb7_i11$$bb4_i8$112}var BC=Ca;var BB=(((BC))|0)>0;if(BB){Ba=94}else{Ba=95}if(Ba==94){var BA=LA;var By=Cf;var Bx=(((By)+(BA))&4294967295);LA=Bx;Ba=97;break $bb7_i11$$bb4_i8$112}else{if(Ba==95){var Bw=DJ;var Bv=((Bw+3)&4294967295);var Bu=ll[((Bv)>>0)];var Bt=oD((Bu),8,0);var Bs=(((Bt)*256)&4294967295);var Br=Ce;var Bq=Iz;var Bp=((Br+Bq)&4294967295);var Bn=la[((Bp)>>0)];var Bm=iB((Bn),8,0);var Bl=Ix;var Bk=(((Bm)*(Bl))&4294967295);var Bj=(((((Bk))|0)/64)|0);var Bi=(((Bj)+(Bs))&4294967295);LA=Bi;var Bg=Iz;var Be=(((Bg)+1)&4294967295);Iz=Be;var Bd=Iz;var Bc=KQ;var A9=(((Bd))|0)>=(((Bc))|0);if(!(A9)){Ba=97;break $bb7_i11$$bb4_i8$112}Iz=0;var A8=DJ;var A7=((A8+12)&4294967295);var A6=uA[((A7)>>2)];Ce=A6;Ba=97;break $bb7_i11$$bb4_i8$112}}}}while(0);$bb7_i11$$bb17_i$$bb20_i$121:do{if(Ba==82){BK=0;Iz=0;var Jl=MX;var Jj=Lm;var Jh=Mi;Ex=Jl;CJ=Jj;CL=Jh;Gd=0;while(1){var B8=Ex;var B7=CJ;var B6=(((B8))|0)<(((B7))|0);if(!(B6)){Ba=87;break}var Jf=uA[((eb)>>2)];var Jd=Ex;var Jb=((Jf+6*Jd)&4294967295);var I9=((Jb)&4294967295);var I7=la[((I9)>>0)];var I5=iB((I7),8,0);Lj=I5;var I3=Ex;var I1=(((I3)+1)&4294967295);Ex=I1;var IY=Lj;var IW=(((IY))|0)>6;if(IW){Ba=87;break}var IU=Lj;var IS=CL;var IQ=(((IU))|0)>=(((IS))|0);if(!(IQ)){Ba=86;continue}var IO=Gd;var IM=(((IO)+1)&4294967295);Gd=IM;Ba=86;continue}var B5=Gd;CQ=B5;var B4=CQ;K1=B4;var KF=K1;Ev=KF;var B2=Ev;Ca=B2;var B1=DJ;var B0=((B1+8)&4294967295);var BZ=ll[((B0)>>0)];var BY=oD((BZ),8,0);var BV=Ca;var BU=(((BY))|0)<(((BV))|0);if(BU){K3=87;Ba=88}else{K3=87;Ba=89}if(Ba==88){var BT=DJ;var BS=((BT+8)&4294967295);var BR=ll[((BS)>>0)];var BQ=oD((BR),8,0);Ca=BQ;K3=88}var BP=K3==88?BQ:(BV);var BO=(((BP))|0)>1;if(BO){Ba=90}else{Ba=91}if(Ba==90){var BN=Ca;var BM=(((BN)-1)&4294967295);var BJ=Cb;var BI=(((((BJ))|0)/(((BM))|0))|0);Cf=BI}else{if(Ba==91){Cf=0}}var BH=DJ;var BG=((BH+2)&4294967295);var BF=ll[((BG)>>0)];var BE=oD((BF),8,0);var BD=(BE)<<8;LA=BD;Ba=97;break $bb7_i11$$bb17_i$$bb20_i$121}}while(0);if(Ba==97){var A5=Ca;var A4=(((A5)-1)&4294967295);Ca=A4;var A3=Ev;var A2=(((A3)-1)&4294967295);Ev=A2;var A1=MR;var A0=((A1+8)&4294967295);var AY=uA[((A0)>>2)];var AW=(AY)!=0;if(AW){Ba=98}else{Ba=100}$bb18_i$$bb20thread_pre_split_i$138:do{if(Ba==98){var AU=Ev;var AS=(((AU))|0)<=1;if(!(AS)){Ba=100;break $bb18_i$$bb20thread_pre_split_i$138}var AQ=MR;var AO=((AQ+8)&4294967295);var AM=uA[((AO)>>2)];var AK=Ev;var AI=((AM+2*AK)&4294967295);var i=uW[((AI)>>1)];var N0=iB((i),16,0);var NY=(N0)<<8;LA=NY}}while(0);var NX=Lk;K3=100}var NU=K3==100?NX:(Jy);var NS=(((NU))|0)>3;if(NS){Ba=102}else{Ba=103}if(Ba==102){var NQ=Ek;var NO=((NQ)&4294967295);la[((NO)>>0)]=6;var NL=IZ;var NJ=Lk;var NH=((NL+4*NJ)&4294967295);var NF=uA[((NH)>>2)];var NC=LA;var NA=(((NC))|0)>>8;var Ny=Ek;p5(Ny,NA,NF)}else{if(Ba==103){var Nw=Lk;var Ns=(((Nw))|0)>2;if(Ns){Ba=104}else{Ba=105}if(Ba==104){var Nq=IZ;var No=Lk;var Nm=((Nq+4*No)&4294967295);var Nk=uA[((Nm)>>2)];var Ni=LA;var Ne=(((Ni))|0)>>8;var Nc=Ek;p5(Nc,Ne,Nk)}else{if(Ba==105){var Na=uA[((eb)>>2)];var M8=MX;var M6=(((M8)-1)&4294967295);var M4=((Na+6*M6)&4294967295);var M2=((M4)&4294967295);var M0=la[((M2)>>0)];var MY=iB((M0),8,0);var MV=(MY)&63;var Ic=(((MV))|0)>2;var Ib=IZ;var Ia=Lk;var H9=((Ib+4*Ia)&4294967295);var H8=uA[((H9)>>2)];var H7=LA;var H6=(((H7))|0)>>8;if(Ic){Ba=106}else{Ba=107}if(Ba==106){var H5=DJ;var H4=((H5+9)&4294967295);var H3=la[((H4)>>0)];var HR=iB((H3),8,0);var HQ=(((H6)-(HR))&4294967295);var HP=Ek;p5(HP,HQ,H8)}else{if(Ba==107){var HO=Ek;p5(HO,H6,H8)}}}}}}var HN=MX;var HM=(((HN)+1)&4294967295);MX=HM;var HL=MX;var HK=Lm;var HJ=(((HL))|0)<(((HK))|0);if(HJ){Ba=78;continue $bb3_i7$110}else{Ba=109;break $bb3_i7$$_ZL18calc_pitch_segmentiiP9TONE_HEADP12TONE_NUCLEUSii_exit$109}}}}while(0);var HI=MX;CO=HI;var Hu=CO;NM=Hu;var JA=NM;C4=JA;var HF=ll[((rG)>>0)];var Ht=oD((HF),1,0);var Hs=(((Ht))|0)!=0;if(Hs){Ba=110}else{Ba=111}if(Ba==110){CE=0}else{if(Ba==111){var Hq=Bb;var Ho=((Hq+14)&4294967295);var Hn=ll[((Ho)>>0)];var Hm=oD((Hn),8,0);var Hl=(Hm)&1;var Hk=(((Hl))&255);var Mt=iB((Hk),8,0)!=0;if(Mt){Ba=112}else{Ba=113}if(Ba==112){var Hj=uA[((eb)>>2)];var G6=C4;var G5=((Hj+6*G6)&4294967295);var G4=uA[((eb)>>2)];var G3=C4;var G2=((G4+6*G3)&4294967295);var G1=((G2+2)&4294967295);var G0=la[((G1)>>0)];var GZ=(G0)|2;var GY=((G5+2)&4294967295);la[((GY)>>0)]=GZ}var GX=uA[((Ao)>>2)];var GJ=(((GX))|0)==0;var GI=Bb;if(GJ){Ba=114}else{Ba=115}if(Ba==114){var GH=((GI)&4294967295);var GG=ll[((GH)>>0)];var GF=oD((GG),8,0);uA[((ls)>>2)]=GF;var GE=Bb;var GD=((GE+1)&4294967295);var GC=ll[((GD)>>0)];var GB=oD((GC),8,0);var GA=Bb;var Go=((GA+2)&4294967295);var Gn=ll[((Go)>>0)];var Gl=oD((Gn),8,0);var Gk=(((GB)-(Gl))&4294967295);Gm=Gk;var Gj=Bb;var Gi=((Gj+2)&4294967295);var Gh=ll[((Gi)>>0)];var Gg=oD((Gh),8,0);var Gf=uA[((eb)>>2)];var Ge=C4;var F1=((Gf+6*Ge)&4294967295);var FZ=C4;var FX=(((FZ)+1)&4294967295);C4=FX;var FV=Gm;p5(F1,Gg,FV)}else{if(Ba==115){var FT=((GI+3)&4294967295);var FR=ll[((FT)>>0)];var FO=oD((FR),8,0);uA[((ls)>>2)]=FO;var FM=Bb;var FK=((FM+4)&4294967295);var FI=ll[((FK)>>0)];var Fw=oD((FI),8,0);var Fu=Bb;var Fs=((Fu+5)&4294967295);var Fq=ll[((Fs)>>0)];var Fo=oD((Fq),8,0);var Fm=(((Fw)-(Fo))&4294967295);Gm=Fm;var Fk=Bb;var Fi=((Fk+5)&4294967295);var Fg=ll[((Fi)>>0)];var Fe=oD((Fg),8,0);var E2=uA[((eb)>>2)];var E0=C4;var EX=((E2+6*E0)&4294967295);var EV=C4;var ET=(((EV)+1)&4294967295);C4=ET;var ER=Gm;p5(EX,Fe,ER)}}var EP=uA[((eb)>>2)];var EN=uA[((mg)>>2)];var EL=((EP+6*EN)&4294967295);var EJ=uA[((ls)>>2)];var Eu=(((EJ))&255);var Es=((EL+1)&4294967295);la[((Es)>>0)]=Eu;var Eq=uA[((eb)>>2)];var Eo=uA[((mg)>>2)];var Em=((Eq+6*Eo)&4294967295);var Ej=((Em)&4294967295);var Eh=la[((Ej)>>0)];var Ef=iB((Eh),8,0)==4;if(Ef){Ba=117}else{Ba=118}if(Ba==117){var Ed=uA[((eb)>>2)];var Eb=uA[((mg)>>2)];var Mf=((Ed+6*Eb)&4294967295);var Me=((Mf)&4294967295);la[((Me)>>0)]=6}var Md=Bb;var Mc=((Md+13)&4294967295);var Mb=ll[((Mc)>>0)];var Ma=oD((Mb),8,0);var L8=Bb;var L7=((L8+12)&4294967295);var L6=ll[((L7)>>0)];var L5=oD((L6),8,0);var LS=C4;var LQ=DF;bt(LS,LQ,L5,Ma);var LP=uA[((ls)>>2)];CE=LP}}}}return;return}function wy(Ba,Ev){var BK=vp;vp+=6000;n1(BK,0,6000);var A9;var Ml=null;var JR;var Ie;var DG;var Kn;var KB;var IM;var DE;var MV;var K5;var Jc;var DD;var No;var Lj;var Jv;var DB;var NW;var LZ;var Kc;var DA;var Ot;var MD;var KN;var Dz;var OR;var MR;var K8;var Dx;var Pe;var E4;var Bx;var Dv;var BX;var Kz;var Pz;var Dt;var Hl;var Dk;var Pl;var C0;var OS;var Of;var Fr;var E6;var NG;var DS;var NL;var BV;var CA;var Cl;var Os;var JJ;var Jg;var Ox;var Ju;var HS;var Ne;var CM;var M3;var D5;var CG;var Ez;var Cc;var Cz;var LE;var Dd;var Bw;var OK;var Ke;var Ir;var L1;var DK;var Bo;var B0;var IX;var KA=BK;HS=Ba;Ne=Ev;OK=0;var Dr=uA[((xn)>>2)];IX=Dr;var HK=((KA)&4294967295);uA[((eb)>>2)]=HK;Cc=0;DK=0;D5=0;var HJ=uA[((xn)>>2)];var HI=(((HJ)-1)&4294967295);var HH=D5;var HG=(((HI))|0)>(((HH))|0);if(HG){A9=1}else{A9=8}$bb$$bb9$2:do{if(A9==1){$bb$3:while(1){var HF=D5;var HE=((eW+HF*24)&4294967295);CM=HE;var HD=CM;var HC=((HD+4)&4294967295);var HB=xV[((HC)>>1)];var Hp=oD((HB),16,0);var Ho=(Hp)&4;var Hn=(((Ho))|0)!=0;if(Hn){A9=2}else{A9=4}$bb1$$bb4$5:do{if(A9==2){var Hm=uA[((eb)>>2)];var Hk=Cc;var Hj=((Hm+6*Hk)&4294967295);var Hi=((Hj+2)&4294967295);la[((Hi)>>0)]=0;var Hh=uA[((eb)>>2)];var Hg=Cc;var Hf=((Hh+6*Hg)&4294967295);var G4=((Hf+1)&4294967295);la[((G4)>>0)]=0;var G3=uA[((eb)>>2)];var G2=Cc;var G1=((G3+6*G2)&4294967295);var G0=D5;var GZ=(((G0)+1)&4294967295);var GY=((eW+GZ*24)&4294967295);var GX=((GY+15)&4294967295);var GW=la[((GX)>>0)];var GV=((G1+3)&4294967295);la[((GV)>>0)]=GW;var GA=uA[((eb)>>2)];var Gz=Cc;var Gy=((GA+6*Gz)&4294967295);var Gx=CM;var Gw=((Gx+1)&4294967295);var Gv=la[((Gw)>>0)];var Gu=((Gy)&4294967295);la[((Gu)>>0)]=Gv;var Gt=Cc;var Gs=(((Gt)+1)&4294967295);Cc=Gs;var Gr=CM;var F6=((Gr+1)&4294967295);var F5=ll[((F6)>>0)];var F4=oD((F5),8,0)>3;if(!(F4)){A9=7;break $bb1$$bb4$5}var F3=DK;var F2=(((F3)+1)&4294967295);DK=F2}else{if(A9==4){var F1=CM;var F0=((F1+8)&4294967295);var FZ=uA[((F0)>>2)];var FY=((FZ+10)&4294967295);var FX=la[((FY)>>0)];var FB=iB((FX),8,0)==27;if(!(FB)){A9=7;break $bb1$$bb4$5}var FA=Cc;var Fz=(((FA))|0)>0;if(!(Fz)){A9=7;break $bb1$$bb4$5}var Fy=uA[((eb)>>2)];var Fx=Cc;var Fw=(((Fx)-1)&4294967295);var Fv=((Fy+6*Fw)&4294967295);var Fu=uA[((eb)>>2)];var Ft=Cc;var Fs=(((Ft)-1)&4294967295);var E5=((Fu+6*Fs)&4294967295);var E3=((E5+2)&4294967295);var E2=la[((E3)>>0)];var E1=(E2)|4;var E0=((Fv+2)&4294967295);la[((E0)>>0)]=E1}}}while(0);var EZ=D5;var EY=(((EZ)+1)&4294967295);D5=EY;var EX=uA[((xn)>>2)];var EW=(((EX)-1)&4294967295);var EV=D5;var EJ=(((EW))|0)>(((EV))|0);if(EJ){A9=1;continue $bb$3}else{A9=8;break $bb$$bb9$2}}}}while(0);var EI=uA[((eb)>>2)];var EH=Cc;var EG=((EI+6*EH)&4294967295);var EF=((EG)&4294967295);la[((EF)>>0)]=0;var EE=Cc;var ED=(((EE))|0)==0;if(ED){A9=191}else{A9=9}$return$$bb10$13:do{if(A9==9){var EC=HS;var EB=((EC)&4294967295);var EA=((EB+224)&4294967295);var En=uA[((EA)>>2)];var Em=(((En))|0)==1;var El=HS;if(Em){A9=10}else{A9=132}if(A9==10){var Ek=Ne;Dk=El;Pl=Ek;Of=0;Fr=0;JJ=0;Jg=0;Ox=0;Ju=0;C0=((eW)&4294967295);OS=0;var Ej=uA[((xn)>>2)];var Ei=OS;var Eh=(((Ei))|0)<(((Ej))|0);if(Eh){A9=11}else{A9=18}$bb_i$$bb8_i$17:do{if(A9==11){$bb_i$18:while(1){var Eg=C0;var Ef=((Eg+15)&4294967295);var Ed=la[((Ef)>>0)];var KU=iB((Ed),8,0)==2;if(KU){A9=12}else{A9=17}$bb1_i$$bb6_i$20:do{if(A9==12){var KS=C0;var KQ=((KS+1)&4294967295);var KO=ll[((KQ)>>0)];var KL=oD((KO),8,0)>3;if(!(KL)){A9=17;break $bb1_i$$bb6_i$20}var KJ=Of;var KH=(((KJ))|0)==0;if(KH){A9=14}else{A9=15}if(A9==14){var KF=OS;Fr=KF}var KD=C0;var KC=((KD+1)&4294967295);var Kw=ll[((KC)>>0)];var Ku=oD((Kw),8,0)>3;if(!(Ku)){A9=17;break $bb1_i$$bb6_i$20}var Ks=OS;Fr=Ks;var Kq=Of;var Ko=(((Kq)+1)&4294967295);Of=Ko}}while(0);var Kl=OS;var Kj=(((Kl)+1)&4294967295);OS=Kj;var Kh=C0;var Kf=((Kh+24)&4294967295);C0=Kf;var Kd=uA[((xn)>>2)];var J9=OS;var J7=(((J9))|0)<(((Kd))|0);if(J7){A9=11;continue $bb_i$18}else{A9=18;break $bb_i$$bb8_i$17}}}}while(0);var J5=Fr;var J3=((eW+J5*24)&4294967295);var J1=((J3+1)&4294967295);la[((J1)>>0)]=7;var JZ=Dk;var JX=((JZ+280)&4294967295);var JV=uA[((JX)>>2)];var JT=(((JV))|0)==30313;if(JT){A9=19}else{A9=28}$bb9_i$$bb11_i$29:do{if(A9==19){var JS=Fr;var JO=((eW+JS*24)&4294967295);C0=JO;var JM=C0;var JK=((JM+3)&4294967295);var JH=la[((JK)>>0)];var JG=iB((JH),8,0)==0;if(!(JG)){A9=28;break $bb9_i$$bb11_i$29}Kz=55;Hl=0;while(1){var Je=uA[((rW)>>2)];var Jd=Hl;var Jb=(((Jd))|0)<(((Je))|0);if(!(Jb)){A9=26;break}var JE=Hl;var JC=((nm+JE*4)&4294967295);var JA=uA[((JC)>>2)];var Jy=(JA)==0;if(Jy){A9=24}else{A9=22}if(A9==22){var Jw=Hl;var Jt=((nm+Jw*4)&4294967295);var Js=uA[((Jt)>>2)];var Jr=((Js)&4294967295);var Jq=uA[((Jr)>>2)];var Jp=Kz;var Jo=(((Jq))|0)==(((Jp))|0);if(Jo){A9=23;break}}var Jh=Hl;var Jf=(((Jh)+1)&4294967295);Hl=Jf;A9=25;continue}if(A9==26){Dt=0}else{if(A9==23){var Jn=Hl;var Jm=((nm+Jn*4)&4294967295);var Jl=uA[((Jm)>>2)];var Jk=((Jl+10)&4294967295);var Jj=ll[((Jk)>>0)];var Ji=oD((Jj),8,0);Dt=Ji}}var Ja=Dt;Pz=Ja;var Hq=Pz;var I9=(((Hq))&255);var I8=C0;var I7=((I8+3)&4294967295);la[((I7)>>0)]=I9}}while(0);NG=1;DS=0;C0=((eW)&4294967295);var I6=C0;Os=I6;var I5=uA[((((nm+36)&4294967295))>>2)];CA=I5;var I4=CA;BV=I4;OS=0;var I3=uA[((xn)>>2)];var I2=OS;var I1=(((I2))|0)<(((I3))|0);if(I1){A9=29}else{A9=120}$bb12_i$$bb48_i$43:do{if(A9==29){$bb12_i$44:while(1){var I0=C0;var IZ=((I0+15)&4294967295);var IY=la[((IZ)>>0)];var IL=iB((IY),8,0)==0;if(IL){A9=30}else{A9=32}$bb13_i$$bb15_i$46:do{if(A9==30){var IK=C0;var IJ=((IK+8)&4294967295);var II=uA[((IJ)>>2)];var IH=((II+14)&4294967295);var IG=ll[((IH)>>0)];var IF=oD((IG),8,0)>50;if(!(IF)){A9=32;break $bb13_i$$bb15_i$46}NG=1;var IE=uA[((((nm+36)&4294967295))>>2)];CA=IE}}while(0);var ID=C0;var IC=((ID+19)&4294967295);var Iq=la[((IC)>>0)];var Ip=iB((Iq),8,0)!=0;if(Ip){A9=33}else{A9=34}if(A9==33){var Io=uA[((((nm+36)&4294967295))>>2)];BV=Io}var In=C0;var Im=((In+4)&4294967295);var Il=xV[((Im)>>1)];var Ik=oD((Il),16,0);var Ij=(Ik)&4;var Ii=(((Ij))|0)!=0;if(Ii){A9=35}else{A9=119}if(A9==35){var Ih=C0;var H5=((Ih+3)&4294967295);var H4=ll[((H5)>>0)];var H3=oD((H4),8,0);E6=H3;var H2=E6;var H1=((nm+H2*4)&4294967295);var H0=uA[((H1)>>2)];NL=H0;var HZ=Dk;var HY=((HZ+280)&4294967295);var HX=uA[((HY)>>2)];var HW=(((HX))|0)==31336;if(HW){A9=36}else{A9=118}$bb19_i$$bb45_i$55:do{if(A9==36){var AX=E6;var AV=(((AX))|0)==0;if(AV){A9=37}else{A9=56}if(A9==37){var AT=NG;var AR=(((AT))|0)!=0;if(AR){A9=39}else{A9=38}$bb22_i$$bb21_i$59:do{if(A9==38){var AP=DS;var AN=(((AP))|0)!=0;if(AN){A9=39;break $bb22_i$$bb21_i$59}KB=12593;MV=0;while(1){var OH=uA[((rW)>>2)];var OG=MV;var OF=(((OG))|0)<(((OH))|0);if(!(OF)){A9=53;break}var Pd=MV;var Pb=((nm+Pd*4)&4294967295);var O9=uA[((Pb)>>2)];var O7=(O9)==0;if(O7){A9=51}else{A9=49}if(A9==49){var O5=MV;var O3=((nm+O5*4)&4294967295);var O1=uA[((O3)>>2)];var OZ=((O1)&4294967295);var OX=uA[((OZ)>>2)];var OV=KB;var OT=(((OX))|0)==(((OV))|0);if(OT){A9=50;break}}var OJ=MV;var OI=(((OJ)+1)&4294967295);MV=OI;A9=52;continue}if(A9==53){DE=0}else{if(A9==50){var OQ=MV;var OP=((nm+OQ*4)&4294967295);var OO=uA[((OP)>>2)];var ON=((OO+10)&4294967295);var OM=ll[((ON)>>0)];var OL=oD((OM),8,0);DE=OL}}var OE=DE;IM=OE;var Cb=IM;E6=Cb;A9=55;break $bb22_i$$bb21_i$59}}while(0);if(A9==39){JR=13621;Kn=0;while(1){var Pn=uA[((rW)>>2)];var Pk=Kn;var Pi=(((Pk))|0)<(((Pn))|0);if(!(Pi)){A9=45;break}var AL=Kn;var AJ=((nm+AL*4)&4294967295);var AH=uA[((AJ)>>2)];var e=(AH)==0;if(e){A9=43}else{A9=41}if(A9==41){var PS=Kn;var PQ=((nm+PS*4)&4294967295);var PO=uA[((PQ)>>2)];var PM=((PO)&4294967295);var PK=uA[((PM)>>2)];var PI=JR;var PG=(((PK))|0)==(((PI))|0);if(PG){A9=42;break}}var Pr=Kn;var Pp=(((Pr)+1)&4294967295);Kn=Pp;A9=44;continue}if(A9==45){DG=0}else{if(A9==42){var PE=Kn;var PC=((nm+PE*4)&4294967295);var PA=uA[((PC)>>2)];var Px=((PA+10)&4294967295);var Pv=ll[((Px)>>0)];var Pt=oD((Pv),8,0);DG=Pt}}var Pg=DG;Ie=Pg;var BJ=Ie;E6=BJ;DS=1}var OD=E6;var OC=(((OD))&255);var OB=C0;var OA=((OB+3)&4294967295);la[((OA)>>0)]=OC;var Oz=E6;var Oy=((nm+Oz*4)&4294967295);var Ow=uA[((Oy)>>2)];NL=Ow}else{if(A9==56){DS=0}}var Ov=OS;var Or=Fr;var Oq=(((Ov))|0)==(((Or))|0);if(Oq){A9=58}else{A9=61}$bb27_i$$bb30_i$87:do{if(A9==58){var Op=NL;var Oo=((Op)&4294967295);var On=uA[((Oo)>>2)];var Om=(((On))|0)==13621;if(Om){A9=60}else{A9=59}if(A9==59){var Ol=NL;var Ok=((Ol)&4294967295);var Oj=uA[((Ok)>>2)];var Oi=(((Oj))|0)==12597;if(!(Oi)){A9=61;break $bb27_i$$bb30_i$87}}var N6=Fr;var N5=((eW+N6*24)&4294967295);var N4=((N5+1)&4294967295);la[((N4)>>0)]=6}}while(0);var N3=CA;var N2=((N3)&4294967295);var N1=uA[((N2)>>2)];var N0=(((N1))|0)==3420466;if(N0){A9=62}else{A9=79}if(A9==62){var NZ=NL;var NY=((NZ)&4294967295);var NX=uA[((NY)>>2)];var NK=(((NX))|0)==3420466;if(NK){A9=63}else{A9=71}if(A9==63){K5=13619;No=0;while(1){var GT=uA[((rW)>>2)];var GR=No;var GP=(((GR))|0)<(((GT))|0);if(!(GP)){A9=69;break}var NJ=No;var NI=((nm+NJ*4)&4294967295);var NH=uA[((NI)>>2)];var NF=(NH)==0;if(NF){A9=67}else{A9=65}if(A9==65){var NE=No;var ND=((nm+NE*4)&4294967295);var NC=uA[((ND)>>2)];var NB=((NC)&4294967295);var NA=uA[((NB)>>2)];var Np=K5;var Nn=(((NA))|0)==(((Np))|0);if(Nn){A9=66;break}}var Ng=No;var Nf=(((Ng)+1)&4294967295);No=Nf;A9=68;continue}if(A9==69){DD=0}else{if(A9==66){var Nm=No;var Nl=((nm+Nm*4)&4294967295);var Nk=uA[((Nl)>>2)];var Nj=((Nk+10)&4294967295);var Ni=ll[((Nj)>>0)];var Nh=oD((Ni),8,0);DD=Nh}}var GN=DD;Jc=GN;var Cp=Jc;var GL=(((Cp))&255);var GJ=Os;var GH=((GJ+3)&4294967295);la[((GH)>>0)]=GL}else{if(A9==71){Lj=12594;NW=0;while(1){var FJ=uA[((rW)>>2)];var FH=NW;var FF=(((FH))|0)<(((FJ))|0);if(!(FF)){A9=77;break}var GF=NW;var GD=((nm+GF*4)&4294967295);var GB=uA[((GD)>>2)];var Gp=(GB)==0;if(Gp){A9=75}else{A9=73}if(A9==73){var Gn=NW;var Gl=((nm+Gn*4)&4294967295);var Gj=uA[((Gl)>>2)];var Gh=((Gj)&4294967295);var Gf=uA[((Gh)>>2)];var Gd=Lj;var Gb=(((Gf))|0)==(((Gd))|0);if(Gb){A9=74;break}}var FN=NW;var FL=(((FN)+1)&4294967295);NW=FL;A9=76;continue}if(A9==77){DB=0}else{if(A9==74){var F9=NW;var F7=((nm+F9*4)&4294967295);var FV=uA[((F7)>>2)];var FT=((FV+10)&4294967295);var FR=ll[((FT)>>0)];var FP=oD((FR),8,0);DB=FP}}var FD=DB;Jv=FD;var CV=Jv;var Fp=(((CV))&255);var Fn=Os;var Fl=((Fn+3)&4294967295);la[((Fl)>>0)]=Fp}}}var Fj=BV;var Fh=((Fj)&4294967295);var Ff=uA[((Fh)>>2)];var Fd=(((Ff))|0)==12597;if(Fd){A9=80}else{A9=89}$bb35_i$$bb37_i$119:do{if(A9==80){var Fb=NL;var E9=((Fb)&4294967295);var E7=uA[((E9)>>2)];var EU=(((E7))|0)==12597;if(!(EU)){A9=89;break $bb35_i$$bb37_i$119}LZ=13109;Ot=0;while(1){var Ec=uA[((rW)>>2)];var Eb=Ot;var Ea=(((Eb))|0)<(((Ec))|0);if(!(Ea)){A9=87;break}var ES=Ot;var ER=((nm+ES*4)&4294967295);var EQ=uA[((ER)>>2)];var EP=(EQ)==0;if(EP){A9=85}else{A9=83}if(A9==83){var EO=Ot;var EN=((nm+EO*4)&4294967295);var EM=uA[((EN)>>2)];var EL=((EM)&4294967295);var EK=uA[((EL)>>2)];var Ey=LZ;var Ex=(((EK))|0)==(((Ey))|0);if(Ex){A9=84;break}}var Ep=Ot;var Eo=(((Ep)+1)&4294967295);Ot=Eo;A9=86;continue}if(A9==87){DA=0}else{if(A9==84){var Ew=Ot;var Eu=((nm+Ew*4)&4294967295);var Et=uA[((Eu)>>2)];var Es=((Et+10)&4294967295);var Er=ll[((Es)>>0)];var Eq=oD((Er),8,0);DA=Eq}}var D9=DA;Kc=D9;var DC=Kc;var D8=(((DC))&255);var D7=Os;var D6=((D7+3)&4294967295);la[((D6)>>0)]=D8}}while(0);var D4=NL;var D3=((D4)&4294967295);var D2=uA[((D3)>>2)];var DQ=(((D2))|0)==12593;if(!(DQ)){A9=118;break $bb19_i$$bb45_i$55}var DP=CA;var DO=((DP)&4294967295);var DN=uA[((DO)>>2)];var DM=(((DN))|0)==13621;if(DM){A9=91}else{A9=99}if(A9==91){MD=12850;OR=0;while(1){var CS=uA[((rW)>>2)];var CR=OR;var CQ=(((CR))|0)<(((CS))|0);if(!(CQ)){A9=97;break}var DL=OR;var DJ=((nm+DL*4)&4294967295);var DI=uA[((DJ)>>2)];var DH=(DI)==0;if(DH){A9=95}else{A9=93}if(A9==93){var DF=OR;var Dj=((nm+DF*4)&4294967295);var Di=uA[((Dj)>>2)];var Dh=((Di)&4294967295);var Dg=uA[((Dh)>>2)];var Df=MD;var De=(((Dg))|0)==(((Df))|0);if(De){A9=94;break}}var CU=OR;var CT=(((CU)+1)&4294967295);OR=CT;A9=96;continue}if(A9==97){Dz=0}else{if(A9==94){var Dc=OR;var Db=((nm+Dc*4)&4294967295);var Da=uA[((Db)>>2)];var C9=((Da+10)&4294967295);var CX=ll[((C9)>>0)];var CW=oD((CX),8,0);Dz=CW}}var CP=Dz;KN=CP;var Ee=KN;var CO=(((Ee))&255);var CN=C0;var MF=((CN+3)&4294967295);la[((MF)>>0)]=CO}var MC=CA;var MA=((MC)&4294967295);var My=uA[((MA)>>2)];var Mw=(((My))|0)==13619;if(Mw){A9=100}else{A9=108}if(A9==100){MR=13107;Pe=0;while(1){var LP=uA[((rW)>>2)];var LN=Pe;var LL=(((LN))|0)<(((LP))|0);if(!(LL)){A9=106;break}var Mu=Pe;var Ms=((nm+Mu*4)&4294967295);var Mq=uA[((Ms)>>2)];var Mo=(Mq)==0;if(Mo){A9=104}else{A9=102}if(A9==102){var Mm=Pe;var Mj=((nm+Mm*4)&4294967295);var Mh=uA[((Mj)>>2)];var Mf=((Mh)&4294967295);var Md=uA[((Mf)>>2)];var Mb=MR;var L9=(((Md))|0)==(((Mb))|0);if(L9){A9=103;break}}var LT=Pe;var LR=(((LT)+1)&4294967295);Pe=LR;A9=105;continue}if(A9==106){Dx=0}else{if(A9==103){var L7=Pe;var L5=((nm+L7*4)&4294967295);var L3=uA[((L5)>>2)];var L0=((L3+10)&4294967295);var LX=ll[((L0)>>0)];var LV=oD((LX),8,0);Dx=LV}}var LJ=Dx;K8=LJ;var ET=K8;var LH=(((ET))&255);var LF=C0;var LC=((LF+3)&4294967295);la[((LC)>>0)]=LH}var LA=CA;var Ly=((LA)&4294967295);var Lw=uA[((Ly)>>2)];var Lu=(((Lw))|0)==3420466;if(Lu){A9=109}else{A9=117}if(A9==109){E4=13364;BX=0;while(1){var K2=uA[((rW)>>2)];var K1=BX;var K0=(((K1))|0)<(((K2))|0);if(!(K0)){A9=115;break}var Ls=BX;var Lq=((nm+Ls*4)&4294967295);var Lo=uA[((Lq)>>2)];var Lm=(Lo)==0;if(Lm){A9=113}else{A9=111}if(A9==111){var Lk=BX;var Li=((nm+Lk*4)&4294967295);var Lh=uA[((Li)>>2)];var Lg=((Lh)&4294967295);var Lf=uA[((Lg)>>2)];var Le=E4;var Ld=(((Lf))|0)==(((Le))|0);if(Ld){A9=112;break}}var K4=BX;var K3=(((K4)+1)&4294967295);BX=K3;A9=114;continue}if(A9==115){Dv=0}else{if(A9==112){var Lc=BX;var Lb=((nm+Lc*4)&4294967295);var La=uA[((Lb)>>2)];var K9=((La+10)&4294967295);var K7=ll[((K9)>>0)];var K6=oD((K7),8,0);Dv=K6}}var KZ=Dv;Bx=KZ;var FC=Bx;var KY=(((FC))&255);var KX=C0;var KW=((KX+3)&4294967295);la[((KW)>>0)]=KY}var KV=C0;var KT=((KV+1)&4294967295);la[((KT)>>0)]=0}}while(0);var KR=C0;Os=KR;var KP=CA;Cl=KP;var KM=NL;BV=KM;var KK=BV;CA=KK;NG=0}var KI=OS;var KG=(((KI)+1)&4294967295);OS=KG;var KE=C0;var Ky=((KE+24)&4294967295);C0=Ky;var Kx=uA[((xn)>>2)];var Kv=OS;var Kt=(((Kv))|0)<(((Kx))|0);if(Kt){A9=29;continue $bb12_i$44}else{A9=120;break $bb12_i$$bb48_i$43}}}}while(0);C0=((eW)&4294967295);OS=0;var Kr=uA[((xn)>>2)];var Kp=OS;var Km=(((Kp))|0)<(((Kr))|0);if(!(Km)){A9=191;break $return$$bb10$13}$bb49_i$176:while(1){var Kk=C0;var Ki=((Kk+4)&4294967295);var Kg=xV[((Ki)>>1)];var Kb=oD((Kg),16,0);var Ka=(Kb)&4;var J8=(((Ka))|0)!=0;if(J8){A9=122}else{A9=131}if(A9==122){var J6=C0;var J4=((J6+3)&4294967295);var J2=ll[((J4)>>0)];var J0=oD((J2),8,0);E6=J0;var JY=C0;var JW=((JY+1)&4294967295);var JU=la[((JW)>>0)];var JQ=iB((JU),8,0)!=0;if(JQ){Ml=122;A9=123}else{Ml=122;A9=128}if(A9==123){var JP=OS;var JN=Fr;var JL=(((JP))|0)==(((JN))|0);if(JL){A9=124}else{A9=125}$bb52_i$$bb53_i$182:do{if(A9==124){var JI=Ox;JJ=JI}else{if(A9==125){var JF=JJ;var JD=Jg;var JB=(((JF)-(JD))&4294967295);JJ=JB;var Jz=JJ;var Jx=Ox;var B9=(((Jz))|0)<=(((Jx))|0);if(!(B9)){A9=127;break $bb52_i$$bb53_i$182}var B7=Ju;JJ=B7}}}while(0);var By=E6;Ml=127}var B5=Ml==127?By:(J0);var B4=(((B5))|0)==0;if(B4){A9=129}else{A9=130}if(A9==129){E6=17;var B3=E6;var B2=(((B3))&255);var B1=C0;var BZ=((B1+3)&4294967295);la[((BZ)>>0)]=B2}var BY=E6;var BW=((nm+BY*4)&4294967295);var BU=uA[((BW)>>2)];var BT=((BU+12)&4294967295);var BS=la[((BT)>>0)];var BR=JJ;var BQ=(((BR))&255);var BP=(((BQ)+(BS))&255);var BO=C0;var BN=((BO+20)&4294967295);la[((BN)>>0)]=BP;var BM=E6;var BL=((nm+BM*4)&4294967295);var BI=uA[((BL)>>2)];var BH=((BI+13)&4294967295);var BG=la[((BH)>>0)];var BF=JJ;var BE=(((BF))&255);var BD=(((BE)+(BG))&255);var BC=C0;var BB=((BC+21)&4294967295);la[((BB)>>0)]=BD}var BA=OS;var Bz=(((BA)+1)&4294967295);OS=Bz;var Bv=C0;var Bu=((Bv+24)&4294967295);C0=Bu;var Bt=uA[((xn)>>2)];var Bs=OS;var Br=(((Bs))|0)<(((Bt))|0);if(Br){A9=121;continue $bb49_i$176}else{A9=191;break $return$$bb10$13}}}else{if(A9==132){var Bq=((El)&4294967295);var Bp=((Bq+228)&4294967295);var Bn=uA[((Bp)>>2)];Cz=Bn;var Bm=Cz;var Bl=(((Bm))|0)>7;if(Bl){A9=133}else{A9=134}$bb14_thread$$bb14$193:do{if(A9==133){Cz=1;A9=136;break $bb14_thread$$bb14$193}else{if(A9==134){var Bk=(((Bm))|0)==0;if(!(Bk)){A9=136;break $bb14_thread$$bb14$193}var Bj=Ne;var Bi=HS;var Bh=((Bi)&4294967295);var Bg=((Bh+232)&4294967295);var Bf=((Bg+Bj)&4294967295);var Be=ll[((Bf)>>0)];var Bd=oD((Be),8,0);LE=Bd;var Bc=HS;var Bb=((Bc)&4294967295);var A8=((Bb+232)&4294967295);var A7=((A8+5)&4294967295);var A6=ll[((A7)>>0)];var A5=oD((A6),8,0);Dd=A5;var A4=HS;var A3=((A4)&4294967295);var A2=((A3+232)&4294967295);var A1=((A2+1)&4294967295);var A0=ll[((A1)>>0)];var AZ=oD((A0),8,0);Bw=AZ;A9=137;break $bb14_thread$$bb14$193}}}while(0);if(A9==136){var AY=Cz;var AW=Ne;var AU=HS;var AS=((AU+1000)&4294967295);var AQ=((AS+AY*6)&4294967295);var AO=((AQ+AW)&4294967295);var AM=ll[((AO)>>0)];var AK=oD((AM),8,0);LE=AK;var AI=Cz;var i=HS;var PT=((i+1000)&4294967295);var PR=((PT+AI*6)&4294967295);var PP=((PR+5)&4294967295);var PN=ll[((PP)>>0)];var PL=oD((PN),8,0);Dd=PL;var PJ=Cz;var PH=HS;var PF=((PH+1000)&4294967295);var PD=((PF+PJ*6)&4294967295);var PB=((PD+1)&4294967295);var Py=ll[((PB)>>0)];var Pw=oD((Py),8,0);Bw=Pw}var Pu=Ne;var Ps=(((Pu))|0)==4;if(Ps){A9=138}else{A9=139}if(A9==138){la[((rG)>>0)]=1}else{if(A9==139){la[((rG)>>0)]=0}}Ke=0;Bo=0;Ez=0;var Pq=Ez;var Po=Cc;var Pm=(((Pq))|0)<(((Po))|0);if(Pm){A9=141}else{A9=175}$bb21$$bb56$204:do{if(A9==141){$bb21$205:while(1){var Pj=uA[((eb)>>2)];var Ph=Ez;var Pf=((Pj+6*Ph)&4294967295);M3=Pf;var Pc=M3;var Pa=((Pc)&4294967295);var O8=la[((Pa)>>0)];var O6=iB((O8),8,0)>3;if(O6){A9=142}else{A9=143}if(A9==142){var O4=Bo;var O2=(((O4)+1)&4294967295);Bo=O2}var O0=M3;var OY=((O0)&4294967295);var OW=la[((OY)>>0)];var OU=iB((OW),8,0)==6;if(OU){A9=144}else{A9=157}$bb24$$bb37$210:do{if(A9==144){var IW=Ez;var IV=(((IW)-1)&4294967295);D5=IV;$bb29$212:while(1){var Ig=D5;var If=Ke;var Id=(((Ig))|0)<(((If))|0);if(Id){A9=151;break $bb29$212}var Ic=Ez;var Ib=(((Ic)-3)&4294967295);var Ia=D5;var H9=(((Ib))|0)<=(((Ia))|0);if(!(H9)){A9=151;break $bb29$212}var IU=uA[((eb)>>2)];var IT=D5;var IS=((IU+6*IT)&4294967295);var IR=((IS)&4294967295);var IQ=la[((IR)>>0)];var IP=iB((IQ),8,0)==6;if(IP){A9=151;break $bb29$212}var IO=uA[((eb)>>2)];var IN=D5;var IB=((IO+6*IN)&4294967295);var IA=((IB)&4294967295);var Iz=la[((IA)>>0)];var Iy=iB((Iz),8,0)==4;if(Iy){A9=147;break $bb29$212}var It=D5;var Is=(((It)-1)&4294967295);D5=Is;A9=149;continue $bb29$212}if(A9==147){var Ix=uA[((eb)>>2)];var Iw=D5;var Iv=((Ix+6*Iw)&4294967295);var Iu=((Iv)&4294967295);la[((Iu)>>0)]=3}var H8=Ez;var H7=(((H8)+1)&4294967295);D5=H7;while(1){var Hr=D5;var He=Cc;var Hd=(((Hr))|0)<(((He))|0);if(!(Hd)){A9=157;break $bb24$$bb37$210}var H6=uA[((eb)>>2)];var HV=D5;var HU=((H6+6*HV)&4294967295);var HT=((HU)&4294967295);var HR=la[((HT)>>0)];var HQ=iB((HR),8,0)==4;if(HQ){A9=157;break $bb24$$bb37$210}var HP=uA[((eb)>>2)];var HO=D5;var HN=((HP+6*HO)&4294967295);var HM=((HN)&4294967295);var HL=la[((HM)>>0)];var HA=iB((HL),8,0)==6;if(HA){A9=154;break}var Ht=D5;var Hs=(((Ht)+1)&4294967295);D5=Hs;A9=156;continue}var Hz=uA[((eb)>>2)];var Hy=Ez;var Hx=((Hz+6*Hy)&4294967295);var Hw=((Hx+2)&4294967295);la[((Hw)>>0)]=2;var Hv=M3;var Hu=((Hv)&4294967295);la[((Hu)>>0)]=5}}while(0);var Hc=M3;var Hb=((Hc)&4294967295);var Ha=la[((Hb)>>0)];var G9=iB((Ha),8,0)==6;if(G9){A9=158}else{A9=171}if(A9==158){var G8=uA[((eb)>>2)];var G7=Ez;var G6=((G8+6*G7)&4294967295);var G5=((G6+2)&4294967295);la[((G5)>>0)]=2;L1=0;var GU=DK;var GS=Bo;var GQ=(((GU)-(GS))&4294967295);var GO=(((GQ))|0)>1;if(GO){A9=159}else{A9=160}if(A9==159){L1=1}var GM=Ez;var GK=(((GM)+1)&4294967295);D5=GK;$bb45$233:while(1){var FO=D5;var FM=Cc;var FK=(((FO))|0)<(((FM))|0);if(!(FK)){A9=166;break $bb45$233}var GI=uA[((eb)>>2)];var GG=D5;var GE=((GI+6*GG)&4294967295);var GC=((GE)&4294967295);var Gq=la[((GC)>>0)];var Go=iB((Gq),8,0)>4;if(Go){A9=166;break $bb45$233}var Gm=uA[((eb)>>2)];var Gk=D5;var Gi=((Gm+6*Gk)&4294967295);var Gg=((Gi)&4294967295);var Ge=la[((Gg)>>0)];var Gc=iB((Ge),8,0)==4;if(Gc){A9=163}else{A9=164}if(A9==163){var Ga=L1;var F8=(((Ga)+1)&4294967295);L1=F8;var FW=L1;var FU=(((FW))|0)>1;if(FU){A9=166;break $bb45$233}}var FS=D5;var FQ=(((FS)+1)&4294967295);D5=FQ;A9=165;continue $bb45$233}var FI=Ke;var FG=D5;var FE=Cc;x9(FI,FG,FE);var Fq=D5;var Fo=Cc;var Fm=(((Fq))|0)<(((Fo))|0);if(Fm){A9=168}else{A9=167}$bb48$$bb47$241:do{if(A9==167){var Fk=Ne;var Fi=(((Fk))|0)==0;if(Fi){A9=168;break $bb48$$bb47$241}var E8=Cz;var Oh=Ke;var Og=D5;var Oe=LE;sV(E8,Oh,Og,Oe);A9=170;break $bb48$$bb47$241}}while(0);if(A9==168){var Fg=Cz;var Fe=Ke;var Fc=D5;var Fa=Dd;sV(Fg,Fe,Fc,Fa)}var Od=D5;Ke=Od}var Oc=Ke;var Ob=Ez;var Oa=(((Oc))|0)<(((Ob))|0);if(Oa){A9=172}else{A9=174}$bb52$$bb54$248:do{if(A9==172){var N9=M3;var N8=((N9+2)&4294967295);var N7=la[((N8)>>0)];var NV=iB((N7),8,0);var NU=(NV)&4;var NT=(((NU))|0)!=0;if(!(NT)){A9=174;break $bb52$$bb54$248}var NS=Ez;var NR=(((NS)+1)&4294967295);Ir=NR;var NQ=Ke;var NP=Ir;var NO=Ir;x9(NQ,NP,NO);var NN=Cz;var NM=Ke;var Nz=Ir;var Ny=Bw;sV(NN,NM,Nz,Ny);var Nx=Ir;Ke=Nx}}while(0);var Nw=Ez;var Nv=(((Nw)+1)&4294967295);Ez=Nv;var Nu=Ez;var Nt=Cc;var Ns=(((Nu))|0)<(((Nt))|0);if(Ns){A9=141;continue $bb21$205}else{A9=175;break $bb21$$bb56$204}}}}while(0);var Nr=Ke;var Nq=Ez;var Nd=(((Nr))|0)<(((Nq))|0);if(Nd){A9=176}else{A9=177}if(A9==176){var Nc=Ke;var Nb=Ez;var Na=Cc;x9(Nc,Nb,Na);var M9=Cz;var M8=Ke;var M7=Ez;var M6=LE;sV(M9,M8,M7,M6)}Ez=0;var M5=OK;D5=M5;var M4=D5;var M2=IX;var M1=(((M4))|0)<(((M2))|0);if(!(M1)){A9=191;break $return$$bb10$13}$bb59$256:while(1){var M0=D5;var MZ=((eW+M0*24)&4294967295);CM=MZ;var MY=uA[((eb)>>2)];var MX=Ez;var MW=((MY+6*MX)&4294967295);var MU=((MW)&4294967295);var MT=la[((MU)>>0)];var MS=CM;var MQ=((MS+1)&4294967295);la[((MQ)>>0)]=MT;var MP=CM;var MO=((MP+4)&4294967295);var MN=xV[((MO)>>1)];var MM=oD((MN),16,0);var ML=(MM)&4;var MK=(((ML))|0)!=0;if(MK){A9=179}else{A9=190}if(A9==179){var MJ=uA[((eb)>>2)];var MI=Ez;var MH=((MJ+6*MI)&4294967295);M3=MH;var MG=M3;var ME=((MG+4)&4294967295);var MB=la[((ME)>>0)];var Mz=CM;var Mx=((Mz+20)&4294967295);la[((Mx)>>0)]=MB;var Mv=M3;var Mt=((Mv+5)&4294967295);var Mr=la[((Mt)>>0)];var Mp=CM;var Mn=((Mp+21)&4294967295);la[((Mn)>>0)]=Mr;var Mk=CM;var Mi=((Mk+14)&4294967295);la[((Mi)>>0)]=0;var Mg=M3;var Me=((Mg+2)&4294967295);var Mc=la[((Me)>>0)];var Ma=iB((Mc),8,0);var L8=(Ma)&1;var L6=(((L8))&255);var Ou=iB((L6),8,0)!=0;var L4=CM;if(Ou){A9=180}else{A9=181}$bb61$$bb62$260:do{if(A9==180){var L2=((L4+14)&4294967295);la[((L2)>>0)]=2}else{if(A9==181){var LY=((L4+1)&4294967295);var LW=ll[((LY)>>0)];var LU=oD((LW),8,0)>5;if(!(LU)){A9=183;break $bb61$$bb62$260}var LS=M3;var LQ=((LS+1)&4294967295);var LO=la[((LQ)>>0)];var LM=CM;var LK=((LM+14)&4294967295);la[((LK)>>0)]=LO}}}while(0);var LI=CM;var LG=((LI+20)&4294967295);var LD=ll[((LG)>>0)];var LB=CM;var Lz=((LB+21)&4294967295);var Lx=ll[((Lz)>>0)];var Lv=oD((LD),8,0)>oD((Lx),8,0);if(Lv){A9=184}else{A9=185}if(A9==184){var Lt=CM;var Lr=((Lt+20)&4294967295);var Lp=ll[((Lr)>>0)];var Ln=oD((Lp),8,0);CG=Ln;var Ll=CM;var D1=((Ll+21)&4294967295);var D0=la[((D1)>>0)];var DZ=CM;var DY=((DZ+20)&4294967295);la[((DY)>>0)]=D0;var DX=CG;var DW=(((DX))&255);var DV=CM;var DU=((DV+21)&4294967295);la[((DU)>>0)]=DW}var DT=CM;var DR=((DT+3)&4294967295);var Dy=la[((DR)>>0)];var Dw=iB((Dy),8,0)!=0;if(Dw){A9=186}else{A9=187}if(A9==186){var Du=CM;var Ds=((Du+3)&4294967295);var Dq=ll[((Ds)>>0)];var Dp=oD((Dq),8,0);var Do=((nm+Dp*4)&4294967295);var Dn=uA[((Do)>>2)];B0=Dn;var Dm=CM;var Dl=((Dm+20)&4294967295);var C8=ll[((Dl)>>0)];var C7=oD((C8),8,0);var C6=CM;var C5=((C6+21)&4294967295);var C4=ll[((C5)>>0)];var C3=oD((C4),8,0);var C2=(((C3)+(C7))&4294967295);var C1=(((((C2))|0)/2)|0);CG=C1;var CZ=B0;var CY=((CZ+13)&4294967295);var CL=la[((CY)>>0)];var CK=CG;var CJ=(((CK))&255);var CI=(((CJ)+(CL))&255);var CH=CM;var CF=((CH+21)&4294967295);la[((CF)>>0)]=CI;var CE=B0;var CD=((CE+12)&4294967295);var CC=la[((CD)>>0)];var CB=CG;var Cy=(((CB))&255);var Cx=(((Cy)+(CC))&255);var Cw=CM;var Cv=((Cw+20)&4294967295);la[((Cv)>>0)]=Cx}var Cu=M3;var Ct=((Cu+2)&4294967295);var Cs=la[((Ct)>>0)];var Cr=iB((Cs),8,0);var Cq=(Cr)&2;var Co=(((Cq))|0)!=0;if(Co){A9=188}else{A9=189}if(A9==188){var Cn=CM;var Cm=((Cn+1)&4294967295);var Ck=la[((Cm)>>0)];var Cj=(Ck)|8;var Ci=CM;var Ch=((Ci+1)&4294967295);la[((Ch)>>0)]=Cj}var Cg=Ez;var Cf=(((Cg)+1)&4294967295);Ez=Cf}var Ce=D5;var Cd=(((Ce)+1)&4294967295);D5=Cd;var Ca=D5;var B8=IX;var B6=(((Ca))|0)<(((B8))|0);if(B6){A9=178;continue $bb59$256}else{A9=191;break $return$$bb10$13}}}}}}while(0);vp=BK;return;return}function jB(AI){var AR;var AN;var AP;var AO;AN=AI;var AM=AN;var AL=(((AM))>>>0)<=255;if(AL){AR=1}else{AR=2}if(AR==1){var AK=AN;var AJ=(((AK)-48)&4294967295);var AH=(((AJ))>>>0)<=9;var i=oD((AH),1,0);AO=i}else{if(AR==2){AO=0}}var e=AO;AP=e;var AQ=AP;return AQ;return null}function oG(i,AM){var AU;var AS;var AR;var AW;var AQ;AS=i;AR=AM;while(1){var AI=AS;var AH=uA[((AI)>>2)];var e=(((AH))|0)!=0;if(!(e)){AU=5;break}var AP=AS;var AO=uA[((AP)>>2)];var AN=AR;var AL=(((AO))|0)==(((AN))|0);var AK=AS;if(AL){AU=2;break}var AJ=((AK+4)&4294967295);AS=AJ;AU=4;continue}if(AU==2){AQ=AK}else{if(AU==5){AQ=0}}var AV=AQ;AW=AV;var AT=AW;return AT;return null}function uh(i){var AV;var AS=null;var AR;var AX;var AQ;var AK;AR=i;AK=0;var AP=AR;var AO=uA[((AP)>>2)];var AN=(((AO))|0)!=0;var AM=AK;if(AN){AS=-1;AV=1}else{AS=-1;AV=2}$bb$$bb2$2:do{if(AV==1){while(1){var AL=AS==1?AW:(AM);var AJ=(((AL)+1)&4294967295);AK=AJ;var AI=AR;var AH=uA[((AI)>>2)];var e=(((AH))|0)!=0;var AW=AK;if(e){AS=1;AV=1;continue}else{AS=1;AV=2;break $bb$$bb2$2}}}}while(0);var AY=AS==-1?AM:(AW);AQ=AY;var AU=AQ;AX=AU;var AT=AX;return AT;return null}function nz(AH,i){var AU;var Bc;var AS;var AV;var Bb;var AP;Bc=AH;AS=i;var Ba=Bc;var A9=(Ba)==0;if(A9){AU=1}else{AU=2}$bb$$bb1$2:do{if(AU==1){Bb=1}else{if(AU==2){AP=0;$bb3$5:while(1){var A6=Bc;var A5=AP;var A3=((A6+4*A5)&4294967295);var A1=uA[((A3)>>2)];var AZ=AS;var AT=AP;var AR=((AZ+AT)&4294967295);var AQ=la[((AR)>>0)];var AO=iB((AQ),8,0);var AN=(((A1))|0)!=(((AO))|0);if(AN){AU=6;break $bb3$5}var AM=Bc;var AL=AP;var AK=((AM+4*AL)&4294967295);var AJ=uA[((AK)>>2)];var AI=(((AJ))|0)!=0;if(!(AI)){AU=6;break $bb3$5}var A8=AP;var A7=(((A8)+1)&4294967295);AP=A7;AU=4;continue $bb3$5}var e=Bc;var Bm=AP;var Bl=((e+4*Bm)&4294967295);var Bk=uA[((Bl)>>2)];var Bj=(((Bk))|0)==34;if(Bj){AU=8}else{AU=7}$bb7$$bb6$10:do{if(AU==7){var Bi=Bc;var Bh=AP;var Bg=((Bi+4*Bh)&4294967295);var Bf=uA[((Bg)>>2)];var Be=(((Bf))|0)==39;if(Be){AU=8;break $bb7$$bb6$10}else{AU=10;break $bb7$$bb6$10}}}while(0);$bb7$$bb9$12:do{if(AU==8){var A4=AS;var A2=AP;var A0=((A4+A2)&4294967295);var AY=la[((A0)>>0)];var AX=iB((AY),8,0)==0;if(!(AX)){AU=10;break $bb7$$bb9$12}Bb=0;AU=11;break $bb$$bb1$2}}while(0);Bb=1}}}while(0);var AW=Bb;AV=AW;var Bd=AV;return Bd;return null}function jZ(i,A7){var AT;var A8;var AH;var AU;var A6;var A4;var AP;A8=i;AH=A7;AP=0;while(1){var AM=AH;var AL=AP;var AK=((AM+8*AL)&4294967295);var AJ=((AK)&4294967295);var AI=uA[((AJ)>>2)];var e=(AI)!=0;var Bf=AH;var Be=AP;var Bd=((Bf+8*Be)&4294967295);if(!(e)){AT=5;break}var A5=((Bd)&4294967295);var A3=uA[((A5)>>2)];var A2=A8;var A1=nz(A2,A3);var A0=(((A1))|0)==0;var AZ=oD((A0),1,0);A4=AZ;var AY=A4;var AV=iB((AY),8,0)!=0;if(AV){AT=2;break}var AO=AP;var AN=(((AO)+1)&4294967295);AP=AN;AT=4;continue}if(AT==2){var AX=AH;var AW=AP;var AS=((AX+8*AW)&4294967295);var AR=((AS+4)&4294967295);var AQ=uA[((AR)>>2)];A6=AQ}else{if(AT==5){var Bc=((Bd+4)&4294967295);var Bb=uA[((Bc)>>2)];A6=Bb}}var Ba=A6;AU=Ba;var A9=AU;return A9;return null}function sg(){var AP;var AK;uA[((lC)>>2)]=0;uA[((f)>>2)]=0;uA[((rz)>>2)]=1;uA[((wD)>>2)]=1;uA[((((cT)&4294967295))>>2)]=0;AK=0;while(1){var AO=AK;var AN=AK;var AM=((((s9+4)&4294967295)+AN*4)&4294967295);var AL=uA[((AM)>>2)];var AJ=((An+AO*4)&4294967295);uA[((AJ)>>2)]=AL;var AI=AK;var AH=(((AI)+1)&4294967295);AK=AH;var i=(((AH))|0)<=14;if(i){AP=1;continue}else{AP=2;break}}var e=uA[((((An+20)&4294967295))>>2)];uA[((iW)>>2)]=e;var AQ=uA[((((An+24)&4294967295))>>2)];uA[((wH)>>2)]=AQ;la[((((pW)&4294967295))>>0)]=0;la[((m3)>>0)]=0;la[((mI)>>0)]=0;la[((xA)>>0)]=0;uA[((dT)>>2)]=-1;uA[((i6)>>2)]=0;uA[((kO)>>2)]=0;return;return}function AG(){var AH;uA[((zn)>>2)]=0;var i=uA[((bj)>>2)];var e=(i)!=0;if(e){AH=1}else{AH=2}if(AH==1){var AI=uA[((bj)>>2)];br(AI);uA[((bj)>>2)]=0;uA[((dd)>>2)]=0}return;return}function sP(AW,Bi){var A3=vp;vp+=80;n1(A3,0,80);var Bo;var Ba=null;var AJ;var Bn;var Bb;var AU;var AV;var AI;var A8=A3;var BW=A3+20;AJ=AW;Bn=Bi;AU=0;$bb$2:while(1){var BV=AU;var BU=((BW+BV*4)&4294967295);uA[((BU)>>2)]=-1;var BT=AU;var BS=(((BT)+1)&4294967295);AU=BS;var BR=(((BS))|0)<=14;if(BR){Bo=1;continue $bb$2}else{Bo=2;break $bb$2}}AV=0;var BQ=uA[((wD)>>2)];var BP=AV;var BO=(((BP))|0)<(((BQ))|0);AU=0;if(BO){Bo=7}else{Bo=8}$bb7_preheader$$bb18_preheader$5:do{if(Bo==7){$bb7_preheader$6:while(1){var A6=AV;Ba=7;while(1){var BN=Ba==7?A6:(Bf);var BM=AU;var By=((s9+BN*64)&4294967295);var Bx=((By+4)&4294967295);var Bw=((Bx+BM*4)&4294967295);var Bv=uA[((Bw)>>2)];var Bu=(((Bv))|0)>=0;if(Bu){Bo=4}else{Bo=5}if(Bo==4){var Bt=AU;var Bs=AV;var Br=AU;var Bq=((s9+Bs*64)&4294967295);var Bp=((Bq+4)&4294967295);var Bm=((Bp+Br*4)&4294967295);var Bl=uA[((Bm)>>2)];var Bk=((BW+Bt*4)&4294967295);uA[((Bk)>>2)]=Bl}var Bj=AU;var Bh=(((Bj)+1)&4294967295);AU=Bh;var Bg=(((Bh))|0)<=14;var Bf=AV;if(Bg){Ba=5;Bo=3;continue}else{Ba=5;Bo=6;break}}var Be=(((Bf)+1)&4294967295);AV=Be;var Bd=uA[((wD)>>2)];var Bc=AV;var A7=(((Bc))|0)<(((Bd))|0);AU=0;if(A7){Bo=7;continue $bb7_preheader$6}else{Bo=8;break $bb7_preheader$$bb18_preheader$5}}}}while(0);var A5=((A8)&4294967295);var A4=((A8)&4294967295);var A2=((A8)&4294967295);var A1=((A8)&4294967295);while(1){var A0=AU;var AZ=((BW+A0*4)&4294967295);var AY=uA[((AZ)>>2)];AI=AY;var AX=AU;var AT=((An+AX*4)&4294967295);var AS=uA[((AT)>>2)];var AR=AI;var AQ=(((AR))|0)!=(((AS))|0);var AP=oD((AQ),1,0);Bb=AP;var A9=iB((AP),8,0)!=0;if(A9){Bo=10}else{Bo=15}if(Bo==10){la[((A5)>>0)]=0;var AO=AU;if(AO==1){Bo=13}else{if(AO==2){Bo=13}else{if(AO==3){Bo=13}else{if(AO==4){Bo=13}else{if(AO==5){Bo=11}else{if(AO==6){Bo=12}else{if(AO==12){Bo=13}else{Bo=14}}}}}}}if(Bo==13){var AK=AU;var AH=((jc+AK)&4294967295);var i=la[((AH)>>0)];var e=iB((i),8,0);var B3=AI;var B2=qs(A1,((wX)&4294967295),1,B3,e)}else{if(Bo==11){var AN=AI;var AM=(((AN)-1)&4294967295);uA[((iW)>>2)]=AM}else{if(Bo==12){var AL=AI;uA[((wH)>>2)]=AL}}}var B1=AU;var B0=AU;var BZ=((BW+B0*4)&4294967295);var BY=uA[((BZ)>>2)];var BX=((An+B1*4)&4294967295);uA[((BX)>>2)]=BY;var BL=Bn;var BK=uA[((BL)>>2)];var BJ=AJ;var BI=((BJ+BK)&4294967295);var BH=oJ(BI,A4);var BG=Bn;var BF=uA[((BG)>>2)];var BE=wg(A2);var BD=(((BE)+(BF))&4294967295);var BC=Bn;uA[((BC)>>2)]=BD}var BB=AU;var BA=(((BB)+1)&4294967295);AU=BA;var Bz=(((BA))|0)<=14;if(Bz){Bo=9;continue}else{Bo=16;break}}vp=A3;return;return}function aZ(AT,AK,A8){var A3;var AV;var A5;var AO;var AJ;var Bb;AV=AT;A5=AK;AO=A8;Bb=0;var AR=AV;var AQ=(((AR))|0)>31;if(AQ){A3=1}else{A3=2}if(A3==1){var AP=AV;var AN=(((AP)-32)&4294967295);AV=AN}AJ=0;var AM=uA[((wD)>>2)];var AL=AJ;var AI=(((AL))|0)<(((AM))|0);if(AI){A3=3}else{A3=6}$bb2$$bb6$5:do{if(A3==3){while(1){var AH=AJ;var i=((s9+AH*64)&4294967295);var e=((i)&4294967295);var A4=uA[((e)>>2)];var A2=AV;var A1=(((A4))|0)==(((A2))|0);if(A1){A3=4}else{A3=5}if(A3==4){var A0=AJ;Bb=A0}var AZ=AJ;var AY=(((AZ)+1)&4294967295);AJ=AY;var AX=uA[((wD)>>2)];var AW=AJ;var AU=(((AW))|0)<(((AX))|0);if(AU){A3=3;continue}else{A3=6;break $bb2$$bb6$5}}}}while(0);var AS=Bb;var Ba=(((AS))|0)>0;if(Ba){A3=7}else{A3=8}if(A3==7){var A9=Bb;uA[((wD)>>2)]=A9}var A7=A5;var A6=AO;sP(A7,A6);return;return}function ef(AK,i,AJ){var A0;var AZ;var Bn;var AN;var A2;var Bh;var A4;var Be;var AM;var AV;var AH;var A1;AZ=AK;Bn=i;AN=AJ;AV=0;A1=0;var Bg=Bn;var Bf=(Bg)!=0;if(Bf){A0=4}else{A0=7}$bb4$$bb13$2:do{if(A0==4){while(1){var AR=AN;var AQ=(((AR)-4)&4294967295);var AP=AV;var AO=(((AQ))|0)<=(((AP))|0);if(AO){A0=6;break}var e=Bn;var Bt=uA[((e)>>2)];AM=Bt;var Bs=AM;var Br=(((Bs))|0)!=0;var Bq=oD((Br),1,0);var Bp=Bn;var Bo=((Bp+4)&4294967295);Bn=Bo;var A3=iB((Bq),8,0)!=0;var Bi=(A3)^1;var AI=oD((Bi),1,0);var AL=iB((AI),8,0)!=0;if(AL){A0=6;break}A4=1;Be=1;var Bd=AM;var Bc=(((Bd))|0)==34;if(Bc){A0=2}else{A0=3}if(A0==2){var Bb=A1;var Ba=(((Bb))|0)!=92;if(Ba){A0=7;break $bb4$$bb13$2}}var A8=AZ;var A6=AV;var A5=((A8+A6)&4294967295);var AY=AM;var AX=zD(AY,A5);AH=AX;var AW=AV;var AU=AH;var AT=(((AU)+(AW))&4294967295);AV=AT;var AS=AM;A1=AS;A0=4;continue}A4=0;Be=0}}while(0);var Bm=AZ;var Bl=AV;var Bk=((Bm+Bl)&4294967295);la[((Bk)>>0)]=0;var A9=AV;Bh=A9;var A7=Bh;A2=A7;var Bj=A2;return Bj;return null}function qp(AJ){var AS;var AO;var AQ;var AP;AO=AJ;var AN=AO;var AM=(((AN)-1)&4294967295);var AL=m9(AM);var AK=AO;var AI=(((AL))|0)==(((AK))|0);var AH=AO;if(AI){AS=1}else{AS=2}if(AS==1){var i=(((AH)-1)&4294967295);AP=i}else{if(AS==2){AP=AH}}var e=AP;AQ=e;var AR=AQ;return AR;return null}function q3(AL){var A2;var AR;var A6;var AM;var AS;var AQ;var A5;AR=AL;var AP=AR;var AO=(((AP))>>>0)<=255;var AN=AR;if(AO){A2=1}else{A2=2}$bb$$bb1$2:do{if(A2==1){var AK=m9(AN);AQ=AK}else{if(A2==2){var AJ=(((AN))>>>0)>563;if(AJ){A2=4}else{A2=3}$bb6$$bb2$5:do{if(A2==3){var AI=AR;var AH=(((AI)-256)&4294967295);var i=((xF+AH)&4294967295);var e=ll[((i)>>0)];var A3=oD((e),8,0);A5=A3;var A1=A5;var A0=(((A1))|0)==255;if(A0){A2=4;break $bb6$$bb2$5}AM=0;AS=0;var AY=A5;var AX=(((AY))|0)==254;if(AX){A2=6}else{A2=8}$bb8$$bb10$8:do{if(A2==6){var AW=AR;var AV=(((AW))|0)==304;if(!(AV)){A2=8;break $bb8$$bb10$8}AQ=105;A2=9;break $bb$$bb1$2}}while(0);var AU=A5;var AT=AR;var A8=(((AT)+(AU))&4294967295);AQ=A8;A2=9;break $bb$$bb1$2}}while(0);AM=1;AS=1;var AZ=AR;AQ=AZ}}}while(0);var A7=AQ;A6=A7;var A4=A6;return A4;return null}function sX(i,Bb,AH){var AU;var Bg;var A4;var AI;var AV;var Ba;var AT;Bg=i;A4=Bb;AI=AH;AT=0;var A9=Bg;var A8=(A9)==0;if(A8){AU=3}else{AU=1}$bb1$$bb$2:do{if(AU==1){var A7=Bg;var A6=uA[((A7)>>2)];var A5=(((A6)-48)&4294967295);var A3=(((A5))>>>0)>9;if(A3){AU=3;break $bb1$$bb$2}var A1=Bg;var AZ=uA[((A1)>>2)];var AX=(((AZ)-48)&4294967295);var AS=(((AX))>>>0)<=9;if(AS){AU=4}else{AU=5}$bb3$$bb5$5:do{if(AU==4){while(1){var AQ=AT;var AP=(((AQ)*10)&4294967295);var AO=Bg;var AN=uA[((AO)>>2)];var AM=(((AP)+-48)&4294967295);var AL=(((AM)+(AN))&4294967295);AT=AL;var AK=Bg;var AJ=((AK+4)&4294967295);Bg=AJ;var e=Bg;var Bm=uA[((e)>>2)];var Bl=(((Bm)-48)&4294967295);var Bk=(((Bl))>>>0)<=9;if(Bk){AU=4;continue}else{AU=5;break $bb3$$bb5$5}}}}while(0);var Bj=AI;var Bi=(((Bj))|0)==1;if(Bi){AU=6}else{AU=8}$bb6$$bb8$9:do{if(AU==6){var Bh=Bg;var Bf=uA[((Bh)>>2)];var Be=q3(Bf);var Bd=(((Be))|0)==115;if(!(Bd)){AU=8;break $bb6$$bb8$9}var A2=AT;var A0=(((A2)*1000)&4294967295);AT=A0}}while(0);var AY=AT;Ba=AY;AU=9;break $bb1$$bb$2}}while(0);if(AU==3){var AR=A4;Ba=AR}var AW=Ba;AV=AW;var Bc=AV;return Bc;return null}function ye(AJ){var AS;var AO;var AQ;var AP;AO=AJ;var AN=AO;var AM=(((AN))|0)==73;if(AM){AS=1}else{AS=3}$bb$$bb2$2:do{if(AS==1){var AL=uA[((xy)>>2)];var AK=((AL+280)&4294967295);var AI=uA[((AK)>>2)];var AH=(((AI))|0)==29810;if(!(AH)){AS=3;break $bb$$bb2$2}AO=305}}while(0);var i=AO;var e=q3(i);AP=e;var AT=AP;AQ=AT;var AR=AQ;return AR;return null}function re(C4,Cv,CB){var Be=vp;vp+=156;n1(Be,0,156);var BA;var Cg;var AL;var BL;var C1;var Bo;var B0;var Cr;var AP;var BY;var Cc;var BX;var AH;var C0;var AM;var AN;var AO;var CE;var CN=Be;var Bm=Be+8;var BZ=Be+32;var BM=Be+92;var B8;var Ba=Be+152;BY=C4;Cc=Cv;BX=CB;B8=0;la[((((mN)&4294967295))>>0)]=0;var CZ=((CN)&4294967295);uA[((CZ)>>2)]=0;var CY=((CN+4)&4294967295);uA[((CY)>>2)]=0;var CX=((Bm)&4294967295);la[((CX)>>0)]=0;var CW=((Bm+1)&4294967295);la[((CW)>>0)]=95;var CV=Cc;var CU=((Bm+2)&4294967295);var CT=zD(CV,CU);CE=CT;var CS=CE;var Cb=(((CS)+2)&4294967295);var Ca=((Bm+Cb)&4294967295);la[((Ca)>>0)]=0;var B9=BX;var B7=(((B9))|0)!=0;if(B7){BA=1}else{BA=2}$bb$$bb1$2:do{if(BA==1){var B6=((Bm+2)&4294967295);uA[((Ba)>>2)]=B6;var B5=BY;var B4=((BZ)&4294967295);var B3=((CN)&4294967295);var B2=tN(B5,Ba,B4,B3,0,0)}else{if(BA==2){var B1=((Bm+1)&4294967295);uA[((Ba)>>2)]=B1;var BW=BY;var BV=((BZ)&4294967295);var BU=((CN)&4294967295);var BT=tN(BW,Ba,BV,BU,0,0);var BS=(((BT))|0)==0;var BR=oD((BS),1,0);AO=BR;var BQ=AO;var Bp=iB((BQ),8,0)!=0;if(!(Bp)){BA=5;break $bb$$bb1$2}var BP=((Bm+2)&4294967295);uA[((Ba)>>2)]=BP;var BO=BY;var BN=((BZ)&4294967295);var BK=((CN)&4294967295);var BJ=tN(BO,Ba,BN,BK,0,0);var BI=(((BJ))|0)==0;var BH=oD((BI),1,0);AN=BH;var BG=AN;var CG=iB((BG),8,0)!=0;if(!(CG)){BA=5;break $bb$$bb1$2}var BF=((Bm+1)&4294967295);la[((BF)>>0)]=32;var BE=BY;var BD=((Bm+2)&4294967295);var BC=((BZ)&4294967295);var BB=uI(BE,BD,BC,60,0,0,0)}}}while(0);var Bz=BX;var By=(((Bz))|0)==0;if(By){BA=6}else{BA=13}$bb6$$bb14$8:do{if(BA==6){var Bx=((BZ)&4294967295);var Bw=la[((Bx)>>0)];var Bv=iB((Bw),8,0)==0;if(!(Bv)){BA=13;break $bb6$$bb14$8}var Bu=BY;var Bt=((Bu+280)&4294967295);var Bs=uA[((Bt)>>2)];var Br=(((Bs))|0)!=25966;if(!(Br)){BA=13;break $bb6$$bb14$8}var Bq=wG(((zE)&4294967295));var Bn=((Bm+1)&4294967295);uA[((Ba)>>2)]=Bn;var Bl=((Bm+1)&4294967295);la[((Bl)>>0)]=95;var Bk=uA[((vD)>>2)];var Bj=((BZ)&4294967295);var Bi=((CN)&4294967295);var Bh=tN(Bk,Ba,Bj,Bi,0,0);var Bg=(((Bh))|0)==0;var Bf=oD((Bg),1,0);AM=Bf;var Bd=AM;var CF=iB((Bd),8,0)!=0;if(CF){BA=9}else{BA=10}if(BA==9){var Bc=((Bm+2)&4294967295);uA[((Ba)>>2)]=Bc;var A9=uA[((vD)>>2)];var A8=((BZ)&4294967295);var A7=((CN)&4294967295);var A6=tN(A9,Ba,A8,A7,0,0)}var A5=((BZ)&4294967295);var A4=la[((A5)>>0)];var A3=iB((A4),8,0)!=0;if(A3){BA=11}else{BA=12}if(BA==11){B8=((zE)&4294967295)}else{if(BA==12){var A2=uA[((k5)>>2)];var A1=((A2+40)&4294967295);var A0=uA[((A1)>>2)];AP=A0;uA[((rW)>>2)]=0;var AZ=AP;m1(AZ,0);var AY=uA[((rW)>>2)];var AX=(((AY)+1)&4294967295);uA[((rW)>>2)]=AX;var AW=AP;uA[((mp)>>2)]=AW}}}}while(0);var AV=((BZ)&4294967295);var AU=la[((AV)>>0)];var AT=iB((AU),8,0)!=0;if(AT){BA=14}else{BA=21}$bb15$$bb19$19:do{if(BA==14){var AS=B8;var AR=(AS)!=0;if(AR){BA=15}else{BA=20}if(BA==15){var AQ=uA[((vD)>>2)];var AK=((BZ)&4294967295);var AJ=((CN)&4294967295);m8(AQ,AK,AJ,-1,0);var AI=((BZ)&4294967295);var i=((BM)&4294967295);dM(AI,i);var e=BY;var C9=((e+280)&4294967295);var C8=uA[((C9)>>2)];AL=C8;Cr=((xc)&4294967295);B0=3;while(1){var C7=B0;var C6=(((C7)*8)&4294967295);var C5=AL;var CR=(((C5))>>>0)>>>(((C6))>>>0);var CQ=(((CR))&255);var CP=Cr;la[((CP)>>0)]=CQ;var CO=Cr;var CM=la[((CO)>>0)];var CL=iB((CM),8,0)!=0;var CK=oD((CL),1,0);Bo=CK;var C2=iB((CK),8,0)!=0;if(C2){BA=17}else{BA=18}if(BA==17){var CJ=Cr;var CI=((CJ+1)&4294967295);Cr=CI}var CH=B0;var CD=(((CH)-1)&4294967295);B0=CD;var CC=(((CD))|0)>=0;if(CC){BA=16;continue}else{BA=19;break}}var CA=Cr;la[((CA)>>0)]=0;C1=((xc)&4294967295);var Cz=C1;BL=Cz;var C3=BL;var Cy=((BM)&4294967295);var Cx=qs(((mN)&4294967295),((g0)&4294967295),((zE)&4294967295),Cy,C3);var Cw=uA[((k5)>>2)];var Cu=((Cw+40)&4294967295);var Ct=uA[((Cu)>>2)];Cg=Ct;uA[((rW)>>2)]=0;var Cs=Cg;m1(Cs,0);var Cq=uA[((rW)>>2)];var Cp=(((Cq)+1)&4294967295);uA[((rW)>>2)]=Cp;var Co=Cg;uA[((mp)>>2)]=Co}else{if(BA==20){var Cn=BY;var Cm=((BZ)&4294967295);var Cl=((CN)&4294967295);m8(Cn,Cm,Cl,-1,0);var Ck=((BZ)&4294967295);var Cj=((BM)&4294967295);dM(Ck,Cj);var Ci=((BM)&4294967295);var Ch=qs(((mN)&4294967295),((ho)&4294967295),Ci)}}}else{if(BA==21){var Cf=BX;var Ce=(((Cf))|0)==0;if(!(Ce)){BA=23;break $bb15$$bb19$19}ns(((mN)&4294967295),((pd)&4294967295),17,1,0)}}}while(0);C0=((mN)&4294967295);var Cd=C0;AH=Cd;var Bb=AH;vp=Be;return Bb;return null}function jX(AI){var AY;var A1;var A2;var AR;var AK;var AN;var A0;A1=AI;A0=0;AK=0;while(1){var AQ=A1;var AP=sd(AQ);var AO=(((AP))&255);AN=AO;var AM=AN;var AL=oD((AM),8,0);var AJ=AK;var AH=(((AJ)*8)&4294967295);var i=(AL)<<(AH);var e=A0;var AZ=(((i)+(e))&4294967295);A0=AZ;var AX=AK;var AW=(((AX)+1)&4294967295);AK=AW;var AV=(((AW))|0)<=3;if(AV){AY=1;continue}else{AY=2;break}}var AU=A0;AR=AU;var AT=AR;A2=AT;var AS=A2;return AS;return null}function Q(CZ,AY){var Be=vp;vp+=852;n1(Be,0,852);var BA;var B7=null;var Ba;var C5;var Dm;var Dq;var BS=Be;var Cw;var BN;var Dk;var BZ;var BM;var AL;var BB;var Cr;var AH;var Dg;var Di;var Dl;var Do;var Dj;var CM;var CI;var CX;var Bn;var Bo=Be+88;var Cl=Be+188;var CW;var AZ;var Cj;var AX=Be+392;var B0=Be+404;BB=CZ;Cr=AY;var Dh=BB;var Df=(Dh)==0;if(Df){BA=1}else{BA=3}$bb1$$bb3$2:do{if(BA==1){var De=Cr;var Dd=((y+De*16)&4294967295);var Dc=((Dd+12)&4294967295);var Db=uA[((Dc)>>2)];BB=Db;var Da=(Db)==0;if(!(Da)){BA=3;break $bb1$$bb3$2}Dj=1;BA=31;break $bb1$$bb3$2}}while(0);$bb27$$bb3$5:do{if(BA==3){var Cb=BB;var Ca=((Cb)&4294967295);var B9=la[((Ca)>>0)];var B8=iB((B9),8,0)!=47;if(B8){BA=4}else{BA=5}if(BA==4){var B6=((Cl)&4294967295);var B5=BB;var B4=qs(B6,((wN)&4294967295),((iU)&4294967295),47,47,B5);var B3=((Cl)&4294967295);BB=B3}CM=0;var B2=BB;var B1=uE(B2,((dx)&4294967295));CM=B1;var BY=CM;var BX=(BY)!=0;var BW=oD((BX),1,0);Do=BW;var Bp=iB((BW),8,0)!=0;if(Bp){B7=5;BA=6}else{B7=5;BA=20}if(BA==6){var BV=CM;var BU=k2(BV,20,0);CW=0;$bb7$12:while(1){var BT=CW;var BR=CM;Cw=BR;AL=0;BZ=0;while(1){var BQ=Cw;var BP=sd(BQ);var BO=(((BP))&255);BM=BO;var BL=BM;var BK=oD((BL),8,0);var BJ=BZ;var BI=(((BJ)*8)&4294967295);var BH=(BK)<<(BI);var BG=AL;var BF=(((BH)+(BG))&4294967295);AL=BF;var BE=BZ;var BD=(((BE)+1)&4294967295);BZ=BD;var BC=(((BD))|0)<=3;if(BC){BA=8;continue}else{BA=9;break}}var Bz=AL;Dk=Bz;var By=Dk;BN=By;var Ds=BN;var Bx=((AX+BT*4)&4294967295);uA[((Bx)>>2)]=Ds;var Bw=CW;var Bv=(((Bw)+1)&4294967295);CW=Bv;var Bu=(((Bv))|0)<=2;if(Bu){BA=7;continue $bb7$12}else{BA=10;break $bb7$12}}var Bt=((AX)&4294967295);var Bs=uA[((Bt)>>2)];var Br=(((Bs))|0)!=65537;if(Br){BA=13}else{BA=11}$bb12$$bb10$18:do{if(BA==11){var Bq=((AX+4)&4294967295);var Bm=uA[((Bq)>>2)];var Bl=uA[((bW)>>2)];var Bk=(((Bm))|0)!=(((Bl))|0);if(Bk){BA=13;break $bb12$$bb10$18}var Bj=((AX+8)&4294967295);var Bi=uA[((Bj)>>2)];var Bh=uA[((bW)>>2)];var Bg=(((Bh)*2)&4294967295);var Bf=(((Bi))|0)!=(((Bg))|0);if(Bf){BA=13;break $bb12$$bb10$18}else{BA=19;break $bb12$$bb10$18}}}while(0);$bb12$$bb20thread_pre_split$21:do{if(BA==13){var Bd=CM;var Bc=ts(Bd);CM=0;var A9=((AX+8)&4294967295);var A8=uA[((A9)>>2)];var A7=uA[((bW)>>2)];var A6=(((A8))|0)==(((A7))|0);if(A6){BA=14}else{BA=15}if(BA==14){Cj=((xU)&4294967295)}else{if(BA==15){Cj=((mi)&4294967295)}}var A5=((Bo)&4294967295);ns(A5,((ui)&4294967295),18,1,0);var A4=((Bo)&4294967295);var A3=jv(A4);AZ=A3;var A2=AZ;var A1=(((A2))|0)>=0;var A0=oD((A1),1,0);Dl=A0;var CK=iB((A0),8,0)!=0;if(!(CK)){BA=19;break $bb12$$bb20thread_pre_split$21}var AW=AZ;var AV=fU(AW);var AU=uA[((bW)>>2)];var AT=((B0)&4294967295);var AS=BB;var AR=((Bo)&4294967295);var AQ=Cj;var AP=qs(AT,((az)&4294967295),AS,AU,AR,AQ);var AO=((B0)&4294967295);var AM=x(AO);var AK=(((AM))|0)==0;var AJ=oD((AK),1,0);Di=AJ;var AI=Di;var CJ=iB((AI),8,0)!=0;if(!(CJ)){BA=19;break $bb12$$bb20thread_pre_split$21}var i=((Bo)&4294967295);BB=i}}while(0);var AN=CM;B7=19}var e=B7==19?AN:(BY);var Dw=(e)==0;if(Dw){BA=21}else{BA=23}$bb21$$bb23$31:do{if(BA==21){var Dv=BB;var Du=uE(Dv,((dx)&4294967295));CM=Du;var Dt=CM;var Dr=(Dt)==0;if(!(Dr)){BA=23;break $bb21$$bb23$31}Dj=3;BA=31;break $bb27$$bb3$5}}while(0);var C9=BB;Ba=C9;var C8=Ba;var C7=kB(C8,BS);var C6=(((C7))|0)!=0;var C4=oD((C6),1,0);Dq=C4;var Dn=iB((C4),8,0)!=0;if(Dn){BA=24}else{BA=25}if(BA==24){Dm=0}else{if(BA==25){var C3=((BS+16)&4294967295);var C2=uA[((C3)>>2)];var C1=(C2)&61440;var C0=(((C1))|0)==16384;if(C0){BA=26}else{BA=27}if(BA==26){Dm=-2}else{if(BA==27){var CY=((BS+44)&4294967295);var CV=uA[((CY)>>2)];Dm=CV}}}}var CU=Dm;C5=CU;var Dp=C5;Bn=Dp;var CT=CM;var CS=k2(CT,0,0);var CR=Bn;var CQ=Cr;var CP=((y+CQ*16)&4294967295);var CO=((CP+8)&4294967295);var CN=uA[((CO)>>2)];var CL=vv(CN,CR);CI=CL;var CH=CI;var CG=(CH)==0;var CF=oD((CG),1,0);Dg=CF;var Cz=iB((CF),8,0)!=0;if(Cz){BA=29}else{BA=30}if(BA==29){var CE=CM;var CD=ts(CE);Dj=4}else{if(BA==30){var CC=Bn;var CB=CI;var CA=CM;var Cy=dg(CB,1,CC,CA);Bn=Cy;var Cx=CM;var Cv=ts(Cx);var Cu=((Bo)&4294967295);var Ct=nA(Cu);var Cs=CI;var Cq=((Cs+40)&4294967295);var Cp=Cq;CX=Cp;var Co=Cr;var Cn=CX;var Cm=uA[((Cn)>>2)];var Ck=(((((Cm))|0)/2)|0);var Ci=((y+Co*16)&4294967295);var Ch=((Ci+4)&4294967295);uA[((Ch)>>2)]=Ck;var Cg=Cr;var Cf=((y+Cg*16)&4294967295);var Ce=((Cf+8)&4294967295);var Cd=CI;uA[((Ce)>>2)]=Cd;Dj=0}}}}while(0);var Cc=Dj;AH=Cc;var Bb=AH;vp=Be;return Bb;return null}function zq(Bs){var AZ;var i;var A0;var Bm;var Bl;var AQ;i=Bs;AQ=0;while(1){var AK=uA[((lP)>>2)];var AJ=AQ;var AI=(((AJ))|0)<(((AK))|0);if(!(AI)){AZ=6;break}var Bk=AQ;var Bj=((y+Bk*16)&4294967295);var Bi=((Bj+12)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=(Bh)!=0;if(Bg){AZ=2}else{AZ=4}if(AZ==2){var Bf=AQ;var Bd=((y+Bf*16)&4294967295);var Bb=((Bd+12)&4294967295);var A9=uA[((Bb)>>2)];var AW=i;var AU=pt(AW,A9);var AS=(((AU))|0)==0;if(AS){AZ=3;break}}var AN=AQ;var AL=(((AN)+1)&4294967295);AQ=AL;AZ=5;continue}if(AZ==3){var AP=AQ;Bl=AP}else{if(AZ==6){var AH=uA[((kP)>>2)];var e=(((AH)+1)&4294967295);uA[((kP)>>2)]=e;var Bx=uA[((kP)>>2)];var Bw=(((Bx))|0)>3;if(Bw){AZ=7}else{AZ=8}if(AZ==7){uA[((kP)>>2)]=0}var Bv=uA[((kP)>>2)];var Bu=i;var Bt=Q(Bu,Bv);var Br=(((Bt))|0)!=0;var Bq=oD((Br),1,0);Bm=Bq;var A1=iB((Bq),8,0)!=0;if(A1){AZ=9}else{AZ=10}if(AZ==9){Bl=-1}else{if(AZ==10){var Bp=uA[((kP)>>2)];var Bo=i;var Be=wg(Bo);var Bc=(((Be)+1)&4294967295);var Ba=AQ;var A8=((y+Ba*16)&4294967295);var A7=((A8+12)&4294967295);var A6=uA[((A7)>>2)];var A5=vv(A6,Bc);var A4=((y+Bp*16)&4294967295);var A3=((A4+12)&4294967295);uA[((A3)>>2)]=A5;var A2=uA[((kP)>>2)];var AY=((y+A2*16)&4294967295);var AX=((AY+12)&4294967295);var AV=uA[((AX)>>2)];var AT=i;var AR=oJ(AV,AT);var AO=uA[((kP)>>2)];Bl=AO}}}}var AM=Bl;A0=AM;var Bn=A0;return Bn;return null}function k8(){var A8;var A9;var Bv;var AJ;var AK;var AL;var BL;var Bu=uA[((mb)>>2)];var Bt=(Bu)!=0;if(Bt){A8=1}else{A8=8}$bb$$bb8$2:do{if(A8==1){var Bs=uA[((mb)>>2)];var Br=sd(Bs);AL=Br;var Bq=uA[((mb)>>2)];var Bp=aJ(Bq);var Bn=(((Bp))|0)!=0;var Bl=oD((Bn),1,0);AK=Bl;var Bj=AK;var Ba=iB((Bj),8,0)!=0;if(Ba){A8=2}else{A8=3}if(A8==2){AL=32}var A5=uA[((yT)>>2)];var A3=(((A5))|0)==4;if(A3){A8=4}else{A8=7}if(A8==4){var A1=uA[((mb)>>2)];var AZ=sd(A1);BL=AZ;var AX=uA[((mb)>>2)];var AV=aJ(AX);var AS=(((AV))|0)!=0;var AQ=oD((AS),1,0);AJ=AQ;var AO=AJ;var AN=iB((AO),8,0)!=0;if(AN){A8=5}else{A8=6}if(A8==5){BL=0}var AM=BL;var i=(((AM)*256)&4294967295);var BK=AL;var BI=(((i)+(BK))&4294967295);AL=BI}var BG=AL;Bv=BG}else{if(A8==8){var BE=uA[((yT)>>2)];var BC=(((BE))|0)==3;if(BC){A8=9}else{A8=13}$bb9$$bb14$14:do{if(A8==9){var BA=uA[((vW)>>2)];var Bz=uA[((BA)>>2)];var By=(((Bz))|0)==0;if(By){A8=10}else{A8=11}if(A8==10){la[((lO)>>0)]=1;Bv=0;A8=20;break $bb$$bb8$2}else{if(A8==11){var AU=ll[((lO)>>0)];var Bx=oD((AU),1,0);var Bo=(((Bx))|0)==0;if(!(Bo)){A8=19;break $bb9$$bb14$14}var Bm=xk[((vW)>>2)];var Bk=uA[((Bm)>>2)];Bv=Bk;var Bi=((Bm+4)&4294967295);uA[((vW)>>2)]=Bi;A8=20;break $bb$$bb8$2}}}else{if(A8==13){var Bh=uA[((a2)>>2)];var Bg=la[((Bh)>>0)];var Bf=iB((Bg),8,0)==0;if(Bf){A8=14}else{A8=15}if(A8==14){la[((lO)>>0)]=1;Bv=0;A8=20;break $bb$$bb8$2}else{if(A8==15){var Bw=ll[((lO)>>0)];var Be=oD((Bw),1,0);var Bd=(((Be))|0)==0;if(!(Bd)){A8=19;break $bb9$$bb14$14}var Bc=uA[((yT)>>2)];var A7=(((Bc))|0)==4;var A6=xk[((a2)>>2)];if(A7){A8=17}else{A8=18}if(A8==17){var A4=((A6)&4294967295);var A2=ll[((A4)>>0)];var A0=oD((A2),8,0);var AY=uA[((a2)>>2)];var AW=((AY+1)&4294967295);var AT=ll[((AW)>>0)];var AR=oD((AT),8,0);var AP=(((AR)*256)&4294967295);var AI=(((AP)+(A0))&4294967295);AL=AI;var AH=uA[((a2)>>2)];var e=((AH+2)&4294967295);uA[((a2)>>2)]=e;var BJ=AL;Bv=BJ;A8=20;break $bb$$bb8$2}else{if(A8==18){var BH=ll[((A6)>>0)];var BF=oD((BH),8,0);Bv=BF;var BD=((A6+1)&4294967295);uA[((a2)>>2)]=BD;A8=20;break $bb$$bb8$2}}}}}}}while(0);Bv=0}}}while(0);var BB=Bv;A9=BB;var Bb=A9;return Bb;return null}function G(){var AR;var AQ;var AN;var AM=uA[((lC)>>2)];var AL=(((AM))|0)!=0;if(AL){AR=1}else{AR=2}if(AR==1){AN=0}else{if(AR==2){var AK=uA[((mb)>>2)];var AJ=(AK)!=0;if(AJ){AR=3}else{AR=4}if(AR==3){var AI=uA[((mb)>>2)];var AH=aJ(AI);AN=AH}else{if(AR==4){var AO=ll[((lO)>>0)];var i=oD((AO),1,0);AN=i}}}}var e=AN;AQ=e;var AP=AQ;return AP;return null}function n5(){var Bd=vp;vp+=16;n1(Bd,0,16);var Bx;var B2=null;var BI;var C7;var BV;var CL;var AH;var Cc;var AX;var A8;var A9;var C6;var Ba;var CD;var BU;var BT;var Ch=Bd;var CM;var CW;var Cy;var C5=uA[((lC)>>2)];BU=C5;var C4=BU;var C3=(((C4))|0)!=0;var C2=oD((C3),1,0);Ba=C2;var C1=Ba;var Bm=iB((C1),8,0)!=0;if(Bm){Bx=1}else{Bx=2}$bb$$bb1$2:do{if(Bx==1){uA[((lC)>>2)]=0;var C0=BU;C6=C0}else{if(Bx==2){var CZ=uA[((tt)>>2)];var CY=(((CZ))|0)!=0;if(CY){Bx=3}else{Bx=4}if(Bx==3){var B7=uA[((tt)>>2)];BU=B7;uA[((tt)>>2)]=0}else{if(Bx==4){var B5=k8();BU=B5}}var B4=uA[((yT)>>2)];var B3=(((B4))|0)==3;var B1=uA[((yT)>>2)];var B0=(((B1))|0)==4;var Cm=(B3)|(B0);if(Cm){Bx=6}else{Bx=7}if(Bx==6){var BZ=uA[((dT)>>2)];var BY=(((BZ)+1)&4294967295);uA[((dT)>>2)]=BY;var BX=BU;C6=BX}else{if(Bx==7){var BW=uA[((yT)>>2)];var BS=(((BW))|0)<=1;if(BS){Bx=8}else{Bx=45}$bb8$$bb41thread_pre_split$12:do{if(Bx==8){var BR=BU;var BQ=(BR)&128;var BP=(((BQ))|0)!=0;if(BP){B2=8}else{B2=8;Bx=46;break $bb8$$bb41thread_pre_split$12}CW=0;var BO=BU;var BN=(BO)&224;var BM=(((BN))|0)!=192;if(BM){Bx=12}else{Bx=10}$bb12$$bb10$15:do{if(Bx==10){var BL=BU;var BK=(BL)&30;var BJ=(((BK))|0)==0;if(BJ){Bx=12;break $bb12$$bb10$15}CW=1;Bx=17;break $bb12$$bb10$15}}while(0);$bb12$$bb17$18:do{if(Bx==12){var BH=BU;var BG=(BH)&240;var BF=(((BG))|0)==224;if(BF){Bx=13}else{Bx=14}if(Bx==13){CW=2}else{if(Bx==14){var BE=BU;var BD=(BE)&248;var BC=(((BD))|0)==240;if(!(BC)){Bx=17;break $bb12$$bb17$18}var BB=BU;var BA=(BB)&15;var Bz=(((BA))|0)<=4;if(!(Bz)){Bx=17;break $bb12$$bb17$18}CW=3}}}}while(0);var By=CW;CM=By;var Bw=CM;var Bv=(((Bw))|0)>0;var Bu=oD((Bv),1,0);A9=Bu;var Cz=iB((Bu),8,0)!=0;if(Cz){Bx=18}else{Bx=36}$bb19$$bb34$26:do{if(Bx==18){var Bt=CM;var Bs=((u7+Bt)&4294967295);var Br=ll[((Bs)>>0)];var Bq=oD((Br),8,0);var Bp=BU;var Bo=(Bq)&(Bp);CD=Bo;var Bn=CM;var Bl=((lu+Bn)&4294967295);var Bk=la[((Bl)>>0)];Cy=Bk;B2=18;$bb31$28:while(1){var CK=B2==32?CN:(Bn);var CJ=(((CK))|0)>0;if(!(CJ)){Bx=34;break $bb31$28}var Bj=CM;var Bi=k8();var Bh=((Ch+Bj*4)&4294967295);uA[((Bh)>>2)]=Bi;var Bg=((Ch+Bj*4)&4294967295);var Bf=uA[((Bg)>>2)];BT=Bf;var Be=BT;var Bc=(((Be))|0)==0;var Bb=oD((Bc),1,0);A8=Bb;var A7=A8;var Cr=iB((A7),8,0)!=0;if(Cr){Bx=20;break $bb31$28}var AT=BT;var AS=(AT)&192;var AR=(((AS))|0)!=128;if(AR){Bx=26;break $bb31$28}Cy=-128;var CT=CD;var CS=(((CT)*64)&4294967295);var CR=BT;var CQ=(CR)&63;var CP=(((CQ)+(CS))&4294967295);CD=CP;var CO=CM;var CN=(((CO)-1)&4294967295);CM=CN;B2=32;Bx=33;continue $bb31$28}if(Bx==20){var A6=uA[((yT)>>2)];var A5=(((A6))|0)==0;if(A5){Bx=21}else{Bx=22}if(Bx==21){uA[((yT)>>2)]=2}CL=32;var A4=uA[((mb)>>2)];var A3=(A4)!=0;if(A3){Bx=23}else{Bx=24}if(Bx==23){var A2=uA[((mb)>>2)];var A1=CL;var A0=bp(A1,A2)}else{if(Bx==24){var AZ=uA[((a2)>>2)];var AY=((AZ+-1)&4294967295);uA[((a2)>>2)]=AY;var AW=uA[((a2)>>2)];var AV=CL;var AU=(((AV))&255);la[((AW)>>0)]=AU;la[((lO)>>0)]=0}}}else{if(Bx==26){var AQ=CW;var AP=(((AQ))|0)==2;if(AP){Bx=27}else{Bx=29}$bb27$$bb29$42:do{if(Bx==27){var AO=CM;var AM=(((AO))|0)==1;if(!(AM)){Bx=29;break $bb27$$bb29$42}var AK=((Ch+8)&4294967295);var AJ=uA[((AK)>>2)];uA[((tt)>>2)]=AJ}}while(0);var AI=BT;BV=AI;var i=uA[((mb)>>2)];var e=(i)!=0;if(e){Bx=30}else{Bx=31}if(Bx==30){var Dc=uA[((mb)>>2)];var Db=BV;var Da=bp(Db,Dc)}else{if(Bx==31){var C9=uA[((a2)>>2)];var C8=((C9+-1)&4294967295);uA[((a2)>>2)]=C8;var CX=uA[((a2)>>2)];var CV=BV;var CU=(((CV))&255);la[((CX)>>0)]=CU;la[((lO)>>0)]=0}}}}var CI=CM;var CH=(((CI))|0)==0;if(!(CH)){Bx=36;break $bb19$$bb34$26}var CG=uA[((dT)>>2)];var CF=(((CG)+1)&4294967295);uA[((dT)>>2)]=CF;var CE=CD;C6=CE;Bx=49;break $bb$$bb1$2}}while(0);var CC=uA[((yT)>>2)];var CB=(((CC))|0)!=0;if(CB){Bx=43}else{Bx=37}$bb38$$bb35$52:do{if(Bx==37){var CA=uA[((lC)>>2)];var Cx=(((CA))|0)!=0;if(Cx){Bx=38}else{Bx=39}if(Bx==38){C7=0;BI=0}else{if(Bx==39){var Cw=uA[((mb)>>2)];var Cv=(Cw)!=0;if(Cv){Bx=40}else{Bx=41}if(Bx==40){var Cu=uA[((mb)>>2)];var Ct=aJ(Cu);C7=Ct;B2=40}else{if(Bx==41){var B6=ll[((lO)>>0)];var Cs=oD((B6),1,0);C7=Cs;B2=41}}var Cq=B2==40?Ct:(Cs);BI=Cq;var Cp=(((Cq))|0)!=0;if(Cp){Bx=43;break $bb38$$bb35$52}}}Cc=1;AX=1;uA[((yT)>>2)]=2;Bx=45;break $bb8$$bb41thread_pre_split$12}}while(0);Cc=0;AX=0;Bx=45;break $bb8$$bb41thread_pre_split$12}}while(0);if(Bx==45){var AN=BU;B2=45}var Co=B2==45?AN:(BR);var Cn=uA[((dT)>>2)];var Cl=(((Cn)+1)&4294967295);uA[((dT)>>2)]=Cl;var Ck=(((Co))|0)>159;if(Ck){Bx=47}else{Bx=48}if(Bx==47){var Cj=uA[((xy)>>2)];var Ci=((Cj+696)&4294967295);var Cg=uA[((Ci)>>2)];var Cf=BU;var Ce=(((Cf)-160)&4294967295);var Cd=((Cg+2*Ce)&4294967295);var Cb=xV[((Cd)>>1)];var Ca=oD((Cb),16,0);C6=Ca}else{if(Bx==48){var B9=BU;C6=B9}}}}}}}while(0);var B8=C6;AH=B8;var AL=AH;vp=Bd;return AL;return null}function nY(i){var AW;var AX;var AH;AX=i;AH=((cT)&4294967295);var Bh=AX;var Bg=(Bh)==0;if(Bg){AW=1}else{AW=2}if(AW==1){var Bf=AH;var Be=Bf;ud(Be,0,76,1,0)}else{if(AW==2){var Bd=AX;var Bc=((Bd+4)&4294967295);var Bb=uA[((Bc)>>2)];var A9=(Bb)!=0;if(A9){AW=3}else{AW=4}if(AW==3){var A7=AX;var A5=((A7+4)&4294967295);var AT=uA[((A5)>>2)];var AR=AH;var AP=((AR+56)&4294967295);var AO=((AP)&4294967295);var AN=oJ(AO,AT)}var AM=AX;var AL=((AM)&4294967295);var AK=uA[((AL)>>2)];var AJ=(AK)!=0;if(AJ){AW=5}else{AW=6}if(AW==5){var AI=AX;var e=((AI)&4294967295);var Bq=uA[((e)>>2)];var Bp=AH;var Bo=((Bp+16)&4294967295);var Bn=((Bo)&4294967295);var Bm=oJ(Bn,Bq)}var Bl=AX;var Bk=((Bl+14)&4294967295);var Bj=ll[((Bk)>>0)];var Bi=oD((Bj),8,0);var Ba=AH;var A8=((Ba+4)&4294967295);uA[((A8)>>2)]=Bi;var A6=AX;var A4=((A6+13)&4294967295);var A3=ll[((A4)>>0)];var A2=oD((A3),8,0);var A1=AH;var A0=((A1+12)&4294967295);uA[((A0)>>2)]=A2;var AZ=AX;var AY=((AZ+12)&4294967295);var AV=ll[((AY)>>0)];var AU=oD((AV),8,0);var AS=AH;var AQ=((AS+8)&4294967295);uA[((AQ)>>2)]=AU}}return;return}function gw(BD,AZ){var Bo;var Bd=null;var AI;var AJ;var BN;var AX;var BC;var Bb;var A9;var BM;var AK;var AW;var Bp;var AM;BC=BD;Bb=AZ;var BL=Bb;var BK=(((BL))|0)!=0;var BJ=BC;if(BK){Bo=1}else{Bo=4}if(Bo==1){var BI=BJ;AI=BI;AX=0;var BH=AI;var BG=uA[((BH)>>2)];var BF=(((BG))|0)!=0;var BE=AX;if(BF){Bd=1;Bo=2}else{Bd=1;Bo=3}$bb_i$$wcslen_exit$4:do{if(Bo==2){while(1){var BA=Bd==2?Bv:(BE);var Bz=(((BA)+1)&4294967295);AX=Bz;var By=AI;var Bx=uA[((By)>>2)];var Bw=(((Bx))|0)!=0;var Bv=AX;if(Bw){Bd=2;Bo=2;continue}else{Bd=2;Bo=3;break $bb_i$$wcslen_exit$4}}}}while(0);var BB=Bd==1?BE:(Bv);BN=BB;var Bu=BN;AJ=Bu;var AY=AJ;var Bt=(((AY)+1)&4294967295);var Bs=(((Bt)*4)&4294967295);Bp=Bs;var Br=uA[((dd)>>2)];var Bn=(((Br)+3)&4294967295);var Bm=(Bn)&3;uA[((dd)>>2)]=Bm}else{if(Bo==4){var Bl=wg(BJ);var Bk=(((Bl)+1)&4294967295);Bp=Bk}}var Bj=uA[((zn)>>2)];var Bi=Bp;var Bh=(((Bi)+(Bj))&4294967295);var Bg=uA[((dd)>>2)];var Bf=(((Bh))|0)>=(((Bg))|0);if(Bf){Bo=6}else{Bo=9}$bb3$$bb6$10:do{if(Bo==6){var Be=uA[((zn)>>2)];var Ba=Bp;var A8=(((Be)+300)&4294967295);var A7=(((A8)+(Ba))&4294967295);var A6=uA[((bj)>>2)];var A5=vv(A6,A7);AM=A5;var A4=AM;var A3=(A4)==0;var A2=oD((A3),1,0);AK=A2;var A1=AK;var Bc=iB((A1),8,0)!=0;if(Bc){Bo=7}else{Bo=8}if(Bo==7){BM=-1;Bo=10;break $bb3$$bb6$10}else{if(Bo==8){var A0=AM;uA[((bj)>>2)]=A0;var AV=uA[((zn)>>2)];var AU=Bp;var AT=(((AV)+300)&4294967295);var AS=(((AT)+(AU))&4294967295);uA[((dd)>>2)]=AS;Bo=9;break $bb3$$bb6$10}}}}while(0);if(Bo==9){var AR=Bp;var AQ=uA[((bj)>>2)];var AP=uA[((zn)>>2)];AW=AP;var AO=AW;var AN=((AQ+AO)&4294967295);var AL=BC;ns(AN,AL,AR,1,0);var AH=uA[((zn)>>2)];var i=Bp;var e=(((i)+(AH))&4294967295);uA[((zn)>>2)]=e;var BP=AW;BM=BP}var BO=BM;A9=BO;var Bq=A9;return Bq;return null}function ow(i){var AP;var AL;var AN;var AM;AL=i;var AK=AL;var AJ=(((AK))>>>0)<=255;if(AJ){AP=1}else{AP=2}if(AP==1){var AI=AL;var AH=xE(AI);AM=AH}else{if(AP==2){AM=0}}var e=AM;AN=e;var AO=AN;return AO;return null}function zO(AI,BG){var Bk;var A6=null;var BW;var Bi;var BV;var BZ;var Bj;var BU;var Bg;var AJ;var BT;var B4;var BB;var A4;var BS;var AU;B4=AI;BB=BG;$bb18$2:while(1){var Bz=B4;var By=uA[((Bz)>>2)];var Bw=(((By))|0)!=0;if(!(Bw)){Bk=23;break $bb18$2}var BR=B4;var BQ=((BR+-4)&4294967295);var BP=uA[((BQ)>>2)];Bg=BP;var BO=Bg;var BN=(((BO))>>>0)<=255;if(BN){Bk=3}else{Bk=2}$iswspace_exit$$iswspace_exit_thread$5:do{if(Bk==3){var BM=Bg;var Bu=xE(BM);BT=Bu;AJ=Bu;var Bt=(((Bu))|0)!=0;if(!(Bt)){Bk=21;break $iswspace_exit$$iswspace_exit_thread$5}AU=0;var Bs=B4;var Br=uA[((Bs)>>2)];var Bq=BB;var Bp=AU;var Bo=((Bq+Bp)&4294967295);var Bn=la[((Bo)>>0)];var Bm=iB((Bn),8,0);var Bl=(((Br))|0)==(((Bm))|0);if(Bl){Bk=5}else{Bk=6}$bb2$$bb4$8:do{if(Bk==5){while(1){var Bh=B4;var Bf=((Bh+4)&4294967295);B4=Bf;var Be=AU;var Bd=(((Be)+1)&4294967295);AU=Bd;var Bc=B4;var Bb=uA[((Bc)>>2)];var Ba=BB;var A9=AU;var A8=((Ba+A9)&4294967295);var A7=la[((A8)>>0)];var A5=iB((A7),8,0);var A3=(((Bb))|0)==(((A5))|0);if(A3){Bk=5;continue}else{Bk=6;break $bb2$$bb4$8}}}}while(0);var A2=BB;var A1=AU;var A0=((A2+A1)&4294967295);var AZ=la[((A0)>>0)];var AY=iB((AZ),8,0)==0;if(AY){Bk=8;break $bb18$2}}else{if(Bk==2){BT=0;AJ=0}}}while(0);var BC=B4;var BA=((BC+4)&4294967295);B4=BA;Bk=22;continue $bb18$2}$bb7$$bb19$14:do{if(Bk==8){$bb7$15:while(1){var AW=B4;var AV=xk[((AW)>>2)];BZ=AV;var AT=(((AV))>>>0)<=255;if(!(AT)){Bk=9;break $bb7$15}var AR=BZ;var AQ=xE(AR);BU=AQ;Bj=AQ;var AP=(((AQ))|0)!=0;var AO=B4;if(AP){A6=10}else{A6=10;Bk=11;break $bb7$15}var AX=((AO+4)&4294967295);B4=AX;Bk=8;continue $bb7$15}if(Bk==9){BU=0;Bj=0;var AS=B4;A6=9}var AN=A6==9?AS:(AO);var AM=uA[((AN)>>2)];var AL=(((AM))|0)==61;if(AL){Bk=12}else{Bk=14}if(Bk==12){var AK=B4;var AH=((AK+4)&4294967295);B4=AH}$bb12$24:while(1){var e=B4;var B5=xk[((e)>>2)];BW=B5;var B3=(((B5))>>>0)<=255;if(!(B3)){Bk=15;break $bb12$24}var B1=BW;var B0=xE(B1);BV=B0;Bi=B0;var BY=(((B0))|0)!=0;var BX=B4;if(BY){A6=16}else{A6=16;Bk=17;break $bb12$24}var i=((BX+4)&4294967295);B4=i;Bk=14;continue $bb12$24}if(Bk==15){BV=0;Bi=0;var B2=B4;A6=15}var BL=A6==15?B2:(BX);var BK=uA[((BL)>>2)];var BJ=(((BK))|0)==34;if(BJ){Bk=19}else{Bk=18}$bb15$$bb14$31:do{if(Bk==18){var BI=B4;var BH=uA[((BI)>>2)];var BF=(((BH))|0)==39;if(BF){Bk=19;break $bb15$$bb14$31}BS=((cv)&4294967295);Bk=24;break $bb7$$bb19$14}}while(0);var BE=B4;var BD=((BE+4)&4294967295);BS=BD}else{if(Bk==23){BS=0}}}while(0);var Bv=BS;A4=Bv;var Bx=A4;return Bx;return null}function cJ(Bn,BA){var Be=vp;vp+=108;n1(Be,0,108);var BB;var BM;var Dr;var Ba;var CV;var B9;var CU;var CG;var AM;var A9=Be;var AL=Be+4;var BQ=Be+28;var Cv=Be+68;var C7;var Bu;var AH;var Dq;var CI;var CH;var Bb;var CW;var A6;var AP;var Ca;C7=Bn;Bu=BA;var Dp=Bu;var Do=(Dp)&32;var Dn=(((Do))|0)!=0;if(Dn){BB=1}else{BB=3}$bb$$bb3$2:do{if(BB==1){var Dm=uA[((rz)>>2)];var Dl=(((Dm))|0)>1;if(!(Dl)){BB=10;break $bb$$bb3$2}var Dk=uA[((rz)>>2)];var Dj=(((Dk)-1)&4294967295);uA[((rz)>>2)]=Dj;BB=10;break $bb$$bb3$2}else{if(BB==3){var Di=C7;var Cm=zO(Di,((cy)&4294967295));CI=Cm;var Ck=Bu;var Ci=(((Ck))|0)!=2;if(Ci){BB=4}else{BB=5}if(BB==4){Bb=0;A6=0;CW=0;CH=0}else{if(BB==5){var Ch=C7;var Cg=zO(Ch,((ly)&4294967295));Bb=Cg;var Cf=C7;var Ce=zO(Cf,((tC)&4294967295));A6=Ce;var Cd=C7;var Cc=zO(Cd,((D)&4294967295));CW=Cc;var Cb=C7;var B0=zO(Cb,((i1)&4294967295));CH=B0}}var BY=Bu;var BW=(((BY))|0)!=2;if(BW){BB=7}else{BB=9}$bb7$$bb9$10:do{if(BB==7){var BV=CI;var BU=(BV)==0;if(!(BU)){BB=9;break $bb7$$bb9$10}Dq=0;BB=32;break $bb$$bb3$2}}while(0);var BT=uA[((rz)>>2)];var BS=((cT+BT*76)&4294967295);Ca=BS;var BR=(((BT)+1)&4294967295);uA[((rz)>>2)]=BR;var BP=Ca;var BO=((BP+56)&4294967295);var BL=((BO)&4294967295);var BK=CI;var BJ=ef(BL,BK,20);var BI=Ca;var BH=((BI+16)&4294967295);var BG=((BH)&4294967295);var BF=Bb;var BE=ef(BG,BF,40);var BD=A6;var BC=sX(BD,1,0);var Bz=(((BC)-1)&4294967295);var By=Ca;var Bx=((By+4)&4294967295);uA[((Bx)>>2)]=Bz;var Bw=CW;var Bv=sX(Bw,0,0);var Bt=Ca;var Bs=((Bt+12)&4294967295);uA[((Bs)>>2)]=Bv;var Br=CH;var Bq=jZ(Br,((pH)&4294967295));var Bp=Ca;var Bm=((Bp+8)&4294967295);uA[((Bm)>>2)]=Bq;var Bl=Ca;var Bk=((Bl)&4294967295);var Bj=Bu;uA[((Bk)>>2)]=Bj;BB=10;break $bb$$bb3$2}}}while(0);if(BB==10){var Bi=((BQ)&4294967295);var Bh=oJ(Bi,((cT+16)&4294967295));var Bg=((Cv)&4294967295);var Bf=oJ(Bg,((cT+56)&4294967295));var Bd=uA[((((cT+12)&4294967295))>>2)];var Bc=(((Bd))&255);var A8=((AL+13)&4294967295);la[((A8)>>0)]=Bc;var A7=uA[((((cT+8)&4294967295))>>2)];var A5=(((A7))&255);var A4=((AL+12)&4294967295);la[((A4)>>0)]=A5;var A3=uA[((((cT+4)&4294967295))>>2)];var A2=(((A3))&255);var A1=((AL+14)&4294967295);la[((A1)>>0)]=A2;var A0=((AL+8)&4294967295);uA[((A0)>>2)]=0;B9=0;var AZ=uA[((rz)>>2)];var AY=B9;var AX=(((AY))|0)<(((AZ))|0);if(AX){BB=11}else{BB=26}$bb_lr_ph_i$$bb17_i$16:do{if(BB==11){var AW=((Cv)&4294967295);var AV=((BQ)&4294967295);var AU=((AL+12)&4294967295);var AT=((AL+13)&4294967295);var AS=((AL+14)&4294967295);var AR=((BQ)&4294967295);var AQ=((Cv)&4294967295);var AO=((AL+12)&4294967295);var AN=((AL+13)&4294967295);var AK=((AL+14)&4294967295);$bb_i$18:while(1){var AJ=B9;var AI=((cT+AJ*76)&4294967295);CU=AI;AM=0;var i=CU;var e=((i+16)&4294967295);var Dw=((e)&4294967295);var Dv=la[((Dw)>>0)];var Du=iB((Dv),8,0)==0;if(Du){BB=14}else{BB=13}$bb4_i$$bb1_i$20:do{if(BB==13){var Dt=CU;var Ds=((Dt+16)&4294967295);var Dh=((Ds)&4294967295);var Dg=cE(0,Dh);var Df=(Dg)==0;if(Df){BB=14;break $bb4_i$$bb1_i$20}Ba=1;CV=1;AM=1;var De=CU;var Dd=((De+16)&4294967295);var Dc=((Dd)&4294967295);var Db=oJ(AR,Dc);la[((AQ)>>0)]=0;la[((AO)>>0)]=0;la[((AN)>>0)]=0;la[((AK)>>0)]=0;BB=16;break $bb4_i$$bb1_i$20}}while(0);if(BB==14){Ba=0;CV=0}var Da=CU;var C9=((Da+56)&4294967295);var C8=((C9)&4294967295);var C6=la[((C8)>>0)];var C5=iB((C6),8,0)!=0;if(C5){BB=17}else{BB=19}$bb7_i$$bb9_i$26:do{if(BB==17){var C4=CU;var C3=((C4+56)&4294967295);var C2=((C3)&4294967295);var C1=oJ(AW,C2);var C0=AM;var CZ=(((C0))|0)==0;if(!(CZ)){BB=19;break $bb7_i$$bb9_i$26}la[((AV)>>0)]=0}}while(0);var CY=CU;var CX=((CY+8)&4294967295);var CT=uA[((CX)>>2)];var CS=(((CT))|0)!=0;if(CS){BB=20}else{BB=21}if(BB==20){var CR=CU;var CQ=((CR+8)&4294967295);var CP=uA[((CQ)>>2)];var CO=(((CP))&255);la[((AU)>>0)]=CO}var CN=CU;var CM=((CN+12)&4294967295);var CL=uA[((CM)>>2)];var CK=(((CL))|0)!=0;if(CK){BB=22}else{BB=23}if(BB==22){var CF=CU;var CE=((CF+12)&4294967295);var CD=uA[((CE)>>2)];var CC=(((CD))&255);la[((AT)>>0)]=CC}var CB=CU;var CA=((CB+4)&4294967295);var Cz=uA[((CA)>>2)];var Cy=(((Cz))|0)!=0;if(Cy){BB=24}else{BB=25}if(BB==24){var Cx=CU;var Cw=((Cx+4)&4294967295);var Cu=uA[((Cw)>>2)];var Ct=(((Cu))&255);la[((AS)>>0)]=Ct}var Cs=B9;var Cr=(((Cs)+1)&4294967295);B9=Cr;var Cq=uA[((rz)>>2)];var Cp=B9;var Co=(((Cp))|0)<(((Cq))|0);if(Co){BB=12;continue $bb_i$18}else{BB=26;break $bb_lr_ph_i$$bb17_i$16}}}}while(0);var Cn=((AL)&4294967295);var Cl=((BQ)&4294967295);uA[((Cn)>>2)]=Cl;var Cj=((AL+4)&4294967295);var B8=((Cv)&4294967295);uA[((Cj)>>2)]=B8;var B7=pZ(AL,A9);CG=B7;var B6=(B7)==0;if(B6){BB=27}else{BB=28}if(BB==27){Dr=((fi)&4294967295)}else{if(BB==28){var B5=CG;Dr=B5}}var B4=Dr;BM=B4;var CJ=BM;AP=CJ;var B3=AP;var B2=pt(B3,((pW)&4294967295));var B1=(((B2))|0)!=0;if(B1){BB=30}else{BB=31}if(BB==30){var BZ=AP;var BX=oJ(((pW)&4294967295),BZ);Dq=131072}else{if(BB==31){Dq=0}}}var BN=Dq;AH=BN;var Bo=AH;vp=Be;return Bo;return null}function ds(AU,Bd){var AV=vp;vp+=80;n1(AV,0,80);var AT;var AX=null;var Bg;var AH;var AW;var Be;var AP;var i=AV;Bg=AU;AH=Bd;var Bc=Bg;var Bb=uA[((Bc)>>2)];var Ba=xE(Bb);var A9=(((Ba))|0)!=0;if(A9){AT=1}else{AT=2}$bb$$bb2$2:do{if(AT==1){while(1){var A8=Bg;var A7=((A8+4)&4294967295);Bg=A7;var A5=Bg;var A3=uA[((A5)>>2)];var A1=xE(A3);var AS=(((A1))|0)!=0;if(AS){AT=1;continue}else{AT=2;break $bb$$bb2$2}}}}while(0);AP=0;AX=2;while(1){var Bk=AX==4?Bl:(0);var Bj=(((Bk))|0)<=79;if(!(Bj)){AT=6;break}var AR=AP;var AQ=Bg;var AO=AP;var AN=((AQ+4*AO)&4294967295);var AM=uA[((AN)>>2)];var AL=(((AM))&255);var AK=((i+AR)&4294967295);la[((AK)>>0)]=AL;var AJ=AP;var AI=((i+AJ)&4294967295);var e=la[((AI)>>0)];var Bp=iB((e),8,0);var Bo=xE(Bp);var Bn=(((Bo))|0)!=0;if(Bn){AT=6;break}var Bm=AP;var Bl=(((Bm)+1)&4294967295);AP=Bl;AX=4;AT=5;continue}var Bi=Bg;var Bh=AP;var A6=((Bi+4*Bh)&4294967295);var A4=AH;uA[((A4)>>2)]=A6;var A2=((i)&4294967295);var A0=wV(A2);var AZ=(A0);Be=AZ;var AY=Be;AW=AY;var Bf=AW;vp=AV;return Bf;return null}function cn(i){var AP;var AL;var AN;var AM;AL=i;var AK=AL;var AJ=(((AK))>>>0)<=255;if(AJ){AP=1}else{AP=2}if(AP==1){var AI=AL;var AH=ne(AI);AM=AH}else{if(AP==2){AM=0}}var e=AM;AN=e;var AO=AN;return AO;return null}function kz(AJ){var AU;var AO;var AT;var AP;AO=AJ;var AN=AO;var AM=(((AN))>>>0)<=255;var AL=AO;if(AM){AU=1}else{AU=2}$bb$$bb1$2:do{if(AU==1){var AK=t7(AL);AP=AK}else{if(AU==2){var AI=(((AL))>>>0)>563;if(AI){AU=4}else{AU=3}$bb3$$bb2$5:do{if(AU==3){var AH=AO;var i=(((AH)-256)&4294967295);var e=((xF+i)&4294967295);var AV=la[((e)>>0)];var AS=iB((AV),8,0)!=-1;if(AS){AU=4;break $bb3$$bb2$5}AP=1;AU=6;break $bb$$bb1$2}}while(0);AP=0}}}while(0);var AR=AP;AT=AR;var AQ=AT;return AQ;return null}function j9(AM){var AZ;var AS;var A3;var AH;var AN;var AR;var A2;AS=AM;var AQ=AS;var AP=(((AQ))>>>0)<=255;var AO=AS;if(AP){AZ=1}else{AZ=2}$bb$$bb1$2:do{if(AZ==1){var AL=tM(AO);AR=AL}else{if(AZ==2){var AK=(((AO))>>>0)>563;if(AK){AZ=4}else{AZ=3}$bb7$$bb2$5:do{if(AZ==3){var AJ=AS;var AI=(((AJ)-256)&4294967295);var i=((xF+AI)&4294967295);var e=ll[((i)>>0)];var A0=oD((e),8,0);A2=A0;var AY=A2;var AX=(((AY))|0)==0;var AW=A2;var AV=(((AW))|0)==255;var AT=(AX)|(AV);if(AT){AZ=4;break $bb7$$bb2$5}AH=0;AN=0;AR=1;AZ=6;break $bb$$bb1$2}}while(0);AH=1;AN=1;AR=0}}}while(0);var AU=AR;A3=AU;var A1=A3;return A1;return null}function qE(AL){var AX;var AQ;var A0;var AP;AQ=AL;var AO=AQ;var AN=(((AO))>>>0)<=255;var AM=AQ;if(AN){AX=1}else{AX=2}if(AX==1){var AK=z6(AM);AP=AK}else{if(AX==2){var AJ=(((AM))>>>0)>12352;var AI=AQ;var AH=(((AI))>>>0)<=42752;var AS=(AJ)&(AH);if(AS){AX=3}else{AX=4}if(AX==3){AP=1}else{if(AX==4){var i=AQ;var e=(((i))>>>0)>563;if(e){AX=5}else{AX=6}if(AX==5){AP=0}else{if(AX==6){var AZ=AQ;var AY=(((AZ)-256)&4294967295);var AW=((xF+AY)&4294967295);var AV=ll[((AW)>>0)];var AU=oD((AV),8,0);AP=AU}}}}}}var AT=AP;A0=AT;var AR=A0;return AR;return null}function bJ(AI){var AV;var AX;var AH;var A8;var A9;var AP;var A7;var AY;var AW;var A6;AY=AI;var A5=AY;A9=A5;var A4=A9;var A3=(((A4))>>>0)<=255;if(A3){AV=2}else{AV=1}$iswdigit_exit$$iswdigit_exit_thread$2:do{if(AV==2){var A2=A9;var A1=(((A2)-48)&4294967295);var A0=(((A1))>>>0)<=9;var AZ=oD((A0),1,0);A7=AZ;AP=AZ;var AT=(((AZ))|0)!=0;if(!(AT)){AV=4;break $iswdigit_exit$$iswdigit_exit_thread$2}A6=1;AV=12;break $iswdigit_exit$$iswdigit_exit_thread$2}else{if(AV==1){A7=0;AP=0;AV=4;break $iswdigit_exit$$iswdigit_exit_thread$2}}}while(0);if(AV==4){var AS=AY;AX=AS;var AR=(((AS))>>>0)<=255;var AQ=AX;if(AR){AV=5}else{AV=6}if(AV==5){var AO=z6(AQ);A8=AO}else{if(AV==6){var AN=(((AQ))>>>0)>12352;var AM=AX;var AL=(((AM))>>>0)<=42752;var i=(AN)&(AL);if(i){AV=7}else{AV=8}if(AV==7){A8=1}else{if(AV==8){var AK=AX;var AJ=(((AK))>>>0)>563;if(AJ){AV=9}else{AV=10}if(AV==9){A8=0}else{if(AV==10){var e=AX;var Bg=(((e)-256)&4294967295);var Bf=((xF+Bg)&4294967295);var Be=ll[((Bf)>>0)];var Bd=oD((Be),8,0);A8=Bd}}}}}}var Bc=A8;AH=Bc;var AU=AH;A6=AU}var Bb=A6;AW=Bb;var Ba=AW;return Ba;return null}function qq(ajf,ajr,Yr,ajl,aot,B3,EU,F2){var UX=vp;vp+=1892;n1(UX,0,1892);var VJ;var ajs=null;var RZ;var ajY;var Hu;var Hv;var Sb;var ajX;var HR;var Sv;var ajW;var HS;var Id;var SM;var ajV;var Ta;var ajU;var IB;var Th;var ajT;var IC;var IT;var TN;var ajS;var NV;var Zt;var ajR;var NW;var ZB;var ajQ;var N8;var ZV;var ajP;var Ov;var Z7;var Fs;var OS;var aah;var Fr;var Pg;var aao;var Fq;var PD;var aaK;var Fp;var PF;var aa4;var Fo;var P2;var abl;var Fn;var Qd;var abw;var Fm;var abR;var Fl;var Qr;var acb;var Fk;var M0;var UW;var aeF;var ajj;var C9;var Fj;var ai8;var anR;var UV;var W0;var Fg;var T2;var Xz;var akc;var G8;var FF;var R2;var YR;var N9;var agc;var Ff;var UT;var adj;var Go;var JZ;var aoI;var adC;var L0;var In;var akY;var Vj;var alB;var ajc;var anS=UX;var CO;var Xv;var agC;var Fe;var X2;var agQ;var Fd;var ahc;var Fc;var Yq;var aho;var Fb;var PG;var YE;var ahK;var Fa;var ajd;var YP;var YQ;var Y9;var aic;var E9;var Ze;var aii;var E8;var Zf;var adg;var NK;var aeh;var E7;var Iq;var Vy=UX+200;var aeg;var aet;var aj5;var E5;var aki;var E4;var aeU;var akv;var E3;var ag3;var Ux;var adh;var akA;var E2;var EI;var Ny=UX+204;var UO=UX+212;var ao7=UX+268;var adT=UX+324;var afg;var ald;var KM;var afj;var E1;var apO;var afh;var alu;var KW;var aiw;var E0;var G0;var afi;var afk;var alJ;var EZ;var X5;var afl;var al6;var EY;var anH;var afm;var amB;var EX;var afy;var amG;var EV;var anM;var ET;var Fi;var anQ;var ES;var VZ;var FD;var anT;var ER;var De;var MR;var aac;var EQ;var adv;var Qf;var aoJ;var Es;var ahp;var EP;var Yv;var ajb;var aje;var EO;var aoW;var aiv=UX+328;var ai9;var anE;var SS;var Fh;var Sj;var EN;var Vk;var Ja;var afq;var amU;var EM;var aou;var A1;var ady;var al8;var EL;var TU;var anP=UX+368;var Vw;var an3;var Wx;var Ys;var Nf;var JS;var amt=UX+372;var ans;var B1;var ap9;var EK;var DO;var aka;var TJ;var Lu;var EJ;var alZ;var Cc;var akX;var acW;var akC;var EH;var TF;var anO;var aeu;var EG;var MY;var Dq;var EF;var ao8;var VL;var FQ;var MT;var anV;var anU;var aeG;var ajh;var Ea;var Mf;var aaO;var ak3;var OA;var aeP;var abq;var ahj;var alE;var ap5;var Lt;var abS;var ahL;var al7;var EE;var PE;var X3;var ajk;var acg;var TX;var ajq;var aoh;var DN;var aiS;var ZE;var Q7;var aqd;var Vx;var aik;var acv;var TW;var Dp;var act;var Oa;var Jl=UX+376;var am8=UX+416;var GK;var I6;var X4=UX+496;var anW;var ED;var F1;var anZ;var EC;var an0;var EB;var agj;var an4;var an1;var EA;var an5;var Ez;var Qq;var Ey;var anD;var TK;var ai4;var Ew;var anv;var U8=UX+752;var ad5;var NJ;var anz;var af6;var ajZ;var VP;var aja;var RO;var Ph;var OR;var anA;var Mc;var anB;var Mp;var MA;var MM;var anG;var MO;var anJ;var MS;var anK;var MU;var MV;var anN;var MW;var CN;var Tx;var TD;var TE;var C0;var TV;var Dr;var Uj;var Uv;var UM;var DZ;var UQ;var UR;var El;var UU;var ab7;var Kp;var acq;var Kr;var acu;var acG;var K8;var acY;var ac4;var Ev;var L1;var adi;var amT=UX+756;var amR=UX+760;var ang;var ae5;var ai5;var MQ;var ako=UX+764;var ajt;var adc;var E6;var ach;var adk;var aiT;var ant;var JR;var Md;var aji;var aeT;var ala;var J2;var Em;var MX;var ZD;var anw;var aeM=UX+768;var Fx=UX+1796;var ahM;var T8=UX+1820;var agF=UX+1860;var ajp;NJ=ajf;anz=ajr;af6=Yr;ajZ=ajl;VP=aot;aja=B3;RO=EU;Ph=F2;uA[((amT)>>2)]=32;ang=32;ae5=32;uA[((ako)>>2)]=0;E6=0;ach=0;Md=0;aeT=0;J2=0;MX=0;ZD=0;anw=0;var C6=ll[((xA)>>0)];var Eu=oD((C6),1,0);var Et=(((Eu))|0)!=0;if(Et){VJ=1}else{VJ=2}if(VJ==1){uA[((mo)>>2)]=0;la[((xA)>>0)]=0}var Er=NJ;var Eq=((Er+652)&4294967295);uA[((Eq)>>2)]=0;var Ep=NJ;var Eo=((Ep+8304)&4294967295);uA[((Eo)>>2)]=0;var En=NJ;var Ek=((En+8308)&4294967295);uA[((Ek)>>2)]=0;la[((lO)>>0)]=0;var Ej=RO;uA[((Ej)>>2)]=0;var Ei=Ph;la[((Ei)>>0)]=0;var Eh=anz;uA[((mb)>>2)]=Eh;var Eg=uA[((aA)>>2)];var Ef=(Eg)!=0;if(Ef){VJ=3}else{VJ=4}if(VJ==3){var Ee=uA[((aA)>>2)];var Ed=af6;var Ec=oJ(Ed,Ee);var Eb=uA[((aA)>>2)];var D9=wg(Eb);var D8=uA[((ako)>>2)];var D7=(((D8)+(D9))&4294967295);uA[((ako)>>2)]=D7;uA[((aA)>>2)]=0}var D6=uA[((f)>>2)];var D5=(((D6))|0)!=0;if(D5){VJ=5}else{VJ=6}if(VJ==5){var D4=uA[((f)>>2)];uA[((amR)>>2)]=D4}else{if(VJ==6){var D3=n5();uA[((amR)>>2)]=D3}}var D2=((aeM)&4294967295);var D1=((Jl)&4294967295);var D0=((Jl+1)&4294967295);var DY=((am8)&4294967295);var DX=((am8)&4294967295);var DW=((am8)&4294967295);var DV=((am8)&4294967295);var DU=((am8)&4294967295);var DT=((am8)&4294967295);var DS=((am8)&4294967295);var DR=((am8)&4294967295);var DQ=((am8)&4294967295);var DP=((am8)&4294967295);var ZQ=((am8)&4294967295);var ajg=aiv;var ZO=((aiv)&4294967295);var ZM=((Jl)&4294967295);var ZL=((Fx)&4294967295);var ZK=((Fx)&4294967295);var ZJ=((Fx+1)&4294967295);var ZI=((Fx+2)&4294967295);var ZH=((Fx+1)&4294967295);var ZG=((Fx)&4294967295);var ZF=((agF)&4294967295);var Zs=((Ny+4)&4294967295);var Zq=((Ny+4)&4294967295);var Zo=((Ny)&4294967295);var Zn=((UO)&4294967295);var Zm=((Ny)&4294967295);var Zl=((UO)&4294967295);var Zk=((Ny)&4294967295);var Zj=((UO)&4294967295);var Zi=((ao7)&4294967295);var Zh=((ao7)&4294967295);var Y4=((T8)&4294967295);var Y2=((agF)&4294967295);var Y0=((T8)&4294967295);var YZ=((T8)&4294967295);var YY=((anS)&4294967295);var YX=((anS)&4294967295);var YW=((anS)&4294967295);var YV=((anS)&4294967295);var YU=((anS)&4294967295);var YT=((anS)&4294967295);var YO=((anS)&4294967295);var YN=((am8)&4294967295);var YM=((anS)&4294967295);var YL=((am8)&4294967295);var YK=((am8)&4294967295);var YJ=((anS)&4294967295);var YI=((am8)&4294967295);var YH=((anS)&4294967295);var YG=((anS+1)&4294967295);$bb340$12:while(1){var adl=uA[((lC)>>2)];var XQ=(((adl))|0)!=0;if(XQ){VJ=668}else{VJ=669}if(VJ==668){ajY=0}else{if(VJ==669){var XN=uA[((mb)>>2)];var XK=(XN)!=0;if(XK){VJ=670}else{VJ=671}if(VJ==670){var XH=uA[((mb)>>2)];var XE=aJ(XH);ajY=XE}else{if(VJ==671){var B5=ll[((lO)>>0)];var XC=oD((B5),1,0);ajY=XC}}}}var XA=ajY;RZ=XA;var anX=RZ;var Xy=(((anX))|0)==0;var Xx=uA[((lC)>>2)];var Xw=(((Xx))|0)!=0;var Nd=(Xy)|(Xw);var Xk=uA[((f)>>2)];var Xh=(((Xk))|0)!=0;var Nc=(Nd)|(Xh);var Xe=uA[((e1)>>2)];var Xb=(((Xe))|0)>=0;var MZ=(Nc)|(Xb);if(!(MZ)){VJ=673;break $bb340$12}L1=1;adi=1;var YF=uA[((amT)>>2)];var YD=bJ(YF);var YC=(((YD))|0)==0;if(YC){VJ=9}else{VJ=15}$bb8$$bb14$22:do{if(VJ==9){var YB=uA[((qv)>>2)];var YA=(((YB))|0)>0;if(YA){VJ=10}else{VJ=12}if(VJ==10){var Yz=uA[((dT)>>2)];var Yy=uA[((qv)>>2)];var Yx=(((Yz))|0)>(((Yy))|0);if(Yx){VJ=11;break $bb340$12}}var Yw=uA[((C)>>2)];var Yu=(((Yw))|0)>0;if(!(Yu)){VJ=15;break $bb8$$bb14$22}var Yt=uA[((dT)>>2)];var Ym=uA[((C)>>2)];var Yk=(((Yt))|0)>(((Ym))|0);if(Yk){VJ=14;break $bb340$12}}}while(0);var Ye=ang;ae5=Ye;var Yc=uA[((amT)>>2)];ang=Yc;var Ya=uA[((amR)>>2)];uA[((amT)>>2)]=Ya;var X8=uA[((e1)>>2)];var X7=(((X8))|0)>=0;if(X7){VJ=16}else{VJ=18}$bb15$$bb17$29:do{if(VJ==16){var X6=uA[((e1)>>2)];var XX=((vQ+X6)&4294967295);var XV=la[((XX)>>0)];var XT=iB((XV),8,0)==0;if(!(XT)){VJ=18;break $bb15$$bb17$29}uA[((e1)>>2)]=-1}}while(0);var XR=uA[((e1)>>2)];var XO=(((XR))|0)==0;var XL=uA[((f)>>2)];var XI=(((XL))|0)==0;var M2=(XO)&(XI);if(M2){ajs=18;VJ=19}else{ajs=18;VJ=20}if(VJ==19){var XF=uA[((e1)>>2)];var XD=((vQ+XF)&4294967295);var XB=la[((XD)>>0)];var Xr=iB((XB),8,0);uA[((amT)>>2)]=Xr;var Xp=(((XF)+1)&4294967295);uA[((e1)>>2)]=Xp;ajs=19}var Xn=ajs==19?Xp:(XR);var Xl=(((Xn))|0)>=0;if(Xl){VJ=21}else{VJ=22}$bb21$$bb22$36:do{if(VJ==21){var Xi=uA[((e1)>>2)];var Xf=((vQ+Xi)&4294967295);var Xc=la[((Xf)>>0)];var W9=iB((Xc),8,0);uA[((amR)>>2)]=W9;var W8=(((Xi)+1)&4294967295);uA[((e1)>>2)]=W8}else{if(VJ==22){var W6=n5();uA[((amR)>>2)]=W6;var WW=uA[((lC)>>2)];var WU=(((WW))|0)!=0;if(WU){VJ=23}else{VJ=24}if(VJ==23){Ey=0}else{if(VJ==24){var WS=uA[((mb)>>2)];var WQ=(WS)!=0;if(WQ){VJ=25}else{VJ=26}if(VJ==25){var WO=uA[((mb)>>2)];var WL=aJ(WO);Ey=WL}else{if(VJ==26){var Qe=ll[((lO)>>0)];var WI=oD((Qe),1,0);Ey=WI}}}}var WE=Ey;Qq=WE;var aiR=Qq;var WC=(((aiR))|0)!=0;var WA=oD((WC),1,0);ac4=WA;var abT=iB((WA),8,0)!=0;if(!(abT)){VJ=29;break $bb21$$bb22$36}uA[((amR)>>2)]=32}}}while(0);uA[((f)>>2)]=0;var Wq=uA[((rM)>>2)];var Wo=(((Wq))|0)!=0;if(Wo){VJ=30}else{VJ=288}$bb25$$bb93$48:do{if(VJ==30){var Wm=ach;var Wk=(((Wm))|0)==0;if(!(Wk)){VJ=288;break $bb25$$bb93$48}var Wi=uA[((zx)>>2)];var Wf=(((Wi))|0)==38;if(Wf){VJ=65}else{VJ=32}$bb61$$bb27$51:do{if(VJ==32){var Wc=uA[((amT)>>2)];var V9=(((Wc))|0)!=38;if(V9){VJ=65;break $bb61$$bb27$51}var V7=uA[((amR)>>2)];var V5=(((V7))|0)==35;if(V5){VJ=35}else{VJ=34}if(VJ==34){var Rk=uA[((amR)>>2)];var Ri=(((Rk))|0)>96;var Rg=uA[((amR)>>2)];var Re=(((Rg))|0)<=122;var B6=(Ri)&(Re);if(!(B6)){VJ=65;break $bb61$$bb27$51}}adk=0;var Rd=uA[((amR)>>2)];uA[((amT)>>2)]=Rd;$bb33$57:while(1){var QU=uA[((lC)>>2)];var QS=(((QU))|0)!=0;if(QS){VJ=38}else{VJ=39}if(VJ==38){Ez=0;an5=0}else{if(VJ==39){var QR=uA[((mb)>>2)];var QQ=(QR)!=0;if(QQ){VJ=40}else{VJ=41}if(VJ==40){var QP=uA[((mb)>>2)];var QO=aJ(QP);Ez=QO;ajs=40}else{if(VJ==41){var i=ll[((lO)>>0)];var QN=oD((i),1,0);Ez=QN;ajs=41}}var QM=ajs==40?QO:(QN);an5=QM;var QE=(((QM))|0)!=0;if(QE){VJ=45;break $bb33$57}}}var QC=uA[((amT)>>2)];var QA=bJ(QC);var Qy=(((QA))|0)!=0;var Qx=uA[((amT)>>2)];var Qw=(((Qx))|0)==35;var B4=(Qy)|(Qw);if(!(B4)){VJ=45;break $bb33$57}var Qv=adk;var Qu=(((Qv))|0)>19;if(Qu){VJ=45;break $bb33$57}K8=1;acY=1;var Rc=adk;var Rb=uA[((amT)>>2)];var Ra=(((Rb))&255);var Q9=((Fx+Rc)&4294967295);la[((Q9)>>0)]=Ra;var Q8=adk;var QY=(((Q8)+1)&4294967295);adk=QY;var QW=n5();uA[((amT)>>2)]=QW;VJ=37;continue $bb33$57}K8=0;acY=0;var Qt=adk;var Qs=((Fx+Qt)&4294967295);la[((Qs)>>0)]=0;var Qp=n5();uA[((amR)>>2)]=Qp;var Qo=uA[((amR)>>2)];var Qn=uA[((amT)>>2)];var Qm=qs(((vQ)&4294967295),((zf)&4294967295),ZL,Qn,Qo);var Ql=uA[((amT)>>2)];var Qk=(((Ql))|0)==59;if(Qk){VJ=46}else{VJ=59}$bb42$$bb54_thread$70:do{if(VJ==46){var Qj=la[((ZK)>>0)];var Qi=iB((Qj),8,0)==35;if(Qi){VJ=47}else{VJ=50}$bb43$$bb48$72:do{if(VJ==47){var Qh=la[((ZJ)>>0)];var Qg=iB((Qh),8,0)==120;if(Qg){VJ=48}else{VJ=49}if(VJ==48){var Qc=lE(ZI,((zd)&4294967295),amT);JR=Qc;ajs=48}else{if(VJ==49){var Qb=lE(ZH,((fo)&4294967295),amT);JR=Qb;ajs=49}}}else{if(VJ==50){agj=((mH)&4294967295);an4=ZG;while(1){var PX=agj;var PV=((PX)&4294967295);var PT=uA[((PV)>>2)];var PR=(PT)!=0;var PP=agj;if(!(PR)){VJ=55;break}var Qa=((PP)&4294967295);var P9=uA[((Qa)>>2)];var P8=an4;var P7=pt(P8,P9);var P6=(((P7))|0)==0;var P5=agj;if(P6){VJ=52;break}var PZ=((P5+8)&4294967295);agj=PZ;VJ=54;continue}if(VJ==55){var PN=((PP+4)&4294967295);var PL=uA[((PN)>>2)];EA=PL}else{if(VJ==52){var P4=((P5+4)&4294967295);var P3=uA[((P4)>>2)];EA=P3}}var PJ=EA;an1=PJ;var ac3=an1;JR=ac3;var PI=JR;var PA=(((PI))|0)!=-1;var Py=oD((PA),1,0);acG=Py;var X1=iB((Py),8,0)!=0;if(X1){ajs=56}else{ajs=56;VJ=60;break $bb43$$bb48$72}var Pw=JR;uA[((amT)>>2)]=Pw;var Pu=uA[((amR)>>2)];var Pr=(((Pu))|0)==0;if(Pr){ajs=57}else{ajs=57;VJ=60;break $bb43$$bb48$72}uA[((amR)>>2)]=32;var aoC=JR;ajs=58}}}while(0);var Pp=ajs==56?PI:(ajs==57?Pw:(ajs==58?aoC:(ajs==49?Qb:(Qc))));var Pn=(((Pp))|0)<=0;if(Pn){VJ=61;break $bb42$$bb54_thread$70}var US=uA[((amT)>>2)];var Pl=(((US))|0)<=32;if(!(Pl)){VJ=288;break $bb25$$bb93$48}var Pj=uA[((i6)>>2)];var Pi=(((Pj))|0)==20;var Pd=uA[((i6)>>2)];var Pb=(((Pd))|0)==36;var B2=(Pi)|(Pb);if(!(B2)){VJ=288;break $bb25$$bb93$48}var O9=uA[((amT)>>2)];var O7=(((O9)+57344)&4294967295);uA[((amT)>>2)]=O7;VJ=288;break $bb25$$bb93$48}else{if(VJ==59){JR=-1}}}while(0);uA[((e1)>>2)]=0;uA[((amT)>>2)]=38;uA[((amR)>>2)]=32;VJ=288;break $bb25$$bb93$48}}while(0);var O5=uA[((amT)>>2)];var O2=(((O5))|0)==60;var O0=uA[((zx)>>2)];var OY=(((O0))|0)!=60;var Nw=(O2)&(OY);if(!(Nw)){VJ=288;break $bb25$$bb93$48}var OV=uA[((amR)>>2)];var OU=(((OV))|0)==33;if(OU){VJ=68}else{VJ=76}if(VJ==68){while(1){var OM=uA[((lC)>>2)];var OK=(((OM))|0)!=0;if(OK){VJ=69}else{VJ=70}if(VJ==69){EB=0;an0=0}else{if(VJ==70){var OI=uA[((mb)>>2)];var OG=(OI)!=0;if(OG){VJ=71}else{VJ=72}if(VJ==71){var OE=uA[((mb)>>2)];var OC=aJ(OE);EB=OC;ajs=71}else{if(VJ==72){var aqc=ll[((lO)>>0)];var Oz=oD((aqc),1,0);EB=Oz;ajs=72}}var Ox=ajs==71?OC:(Oz);an0=Ox;var Ow=(((Ox))|0)!=0;if(Ow){VJ=75;break}}}var Os=uA[((amT)>>2)];var Oq=(((Os))|0)==62;if(Oq){VJ=75;break}Kr=1;acu=1;var OO=n5();uA[((amT)>>2)]=OO;VJ=68;continue}Kr=0;acu=0;uA[((amR)>>2)]=32}else{if(VJ==76){var Oo=uA[((amR)>>2)];var Om=(((Oo))|0)==47;if(Om){VJ=85}else{VJ=77}$bb75$$bb74$110:do{if(VJ==77){var Ok=uA[((amR)>>2)];F1=Ok;var Oi=F1;var Og=(((Oi))>>>0)<=255;var Oe=F1;if(Og){VJ=78}else{VJ=79}if(VJ==78){var Oc=z6(Oe);EC=Oc;ajs=78}else{if(VJ==79){var Ob=(((Oe))>>>0)>12352;var Jy=F1;var Jw=(((Jy))>>>0)<=42752;var CC=(Ob)&(Jw);if(CC){VJ=80}else{VJ=81}if(VJ==80){EC=1;anZ=1;VJ=85;break $bb75$$bb74$110}else{if(VJ==81){var Ju=F1;var Js=(((Ju))>>>0)>563;if(Js){VJ=82}else{VJ=83}if(VJ==82){EC=0;anZ=0;VJ=288;break $bb25$$bb93$48}else{if(VJ==83){var Jr=F1;var Jq=(((Jr)-256)&4294967295);var Jp=((xF+Jq)&4294967295);var Jo=ll[((Jp)>>0)];var Jn=oD((Jo),8,0);EC=Jn;ajs=83}}}}}}var Jm=ajs==78?Oc:(Jn);anZ=Jm;var Jc=(((Jm))|0)!=0;if(!(Jc)){VJ=288;break $bb25$$bb93$48}}}while(0);adk=0;var I9=uA[((amR)>>2)];uA[((amT)>>2)]=I9;$bb77$123:while(1){var IZ=uA[((lC)>>2)];var IY=(((IZ))|0)!=0;if(IY){VJ=88}else{VJ=89}if(VJ==88){ED=0;anW=0}else{if(VJ==89){var IP=uA[((mb)>>2)];var IN=(IP)!=0;if(IN){VJ=90}else{VJ=91}if(VJ==90){var IL=uA[((mb)>>2)];var IJ=aJ(IL);ED=IJ;ajs=90}else{if(VJ==91){var apt=ll[((lO)>>0)];var II=oD((apt),1,0);ED=II;ajs=91}}var IH=ajs==90?IJ:(II);anW=IH;var IG=(((IH))|0)!=0;if(IG){VJ=95;break $bb77$123}}}var IF=uA[((amT)>>2)];var IE=(((IF))|0)==62;if(IE){VJ=95;break $bb77$123}var ID=adk;var IA=(((ID))|0)>255;if(IA){VJ=95;break $bb77$123}Kp=1;acq=1;var I7=adk;var I4=uA[((amT)>>2)];var I3=((aeM+I7*4)&4294967295);uA[((I3)>>2)]=I4;var I2=adk;var I1=(((I2)+1)&4294967295);adk=I1;var I0=n5();uA[((amT)>>2)]=I0;VJ=87;continue $bb77$123}Kp=0;acq=0;var Iz=adk;var Iy=((aeM+Iz*4)&4294967295);uA[((Iy)>>2)]=0;uA[((amR)>>2)]=32;aji=0;var Ix=adk;var Iw=(((Ix)-1)&4294967295);var Iv=((aeM+Iw*4)&4294967295);var Iu=uA[((Iv)>>2)];var It=(((Iu))|0)==47;if(It){VJ=96}else{VJ=97}if(VJ==96){var Is=adk;var Ir=(((Is)-1)&4294967295);var Ip=((aeM+Ir*4)&4294967295);uA[((Ip)>>2)]=32;aji=1}var Io=af6;var Im=aja;var Il=aji;ao8=D2;VL=Io;FQ=ako;MT=Im;anV=Il;TX=0;ajs=97;$bb6_i76$139:while(1){var HE=ajs==103?HG:(0);var HC=(((HE))>>>0)<=38;if(!(HC)){VJ=105;break $bb6_i76$139}var Ik=ao8;var Ij=TX;var Ih=((Ik+4*Ij)&4294967295);var Ig=uA[((Ih)>>2)];aoh=Ig;var If=aoh;var Ie=(((If))|0)==0;if(Ie){VJ=102;break $bb6_i76$139}var Ia=aoh;MY=Ia;var H8=MY;var H6=(((H8))>>>0)<=255;if(H6){VJ=101}else{VJ=100}if(VJ==101){var H4=MY;var H2=xE(H4);EF=H2;Dq=H2;var H0=(((H2))|0)!=0;if(H0){VJ=102;break $bb6_i76$139}}else{if(VJ==100){EF=0;Dq=0}}ajk=0;acg=0;var HY=TX;var HW=aoh;var HU=(((HW))&255);var HT=iB((HU),8,0);var HO=m9(HT);var HM=(((HO))&255);var HK=((Jl+HY)&4294967295);la[((HK)>>0)]=HM;var HI=TX;var HG=(((HI)+1)&4294967295);TX=HG;ajs=103;VJ=104;continue $bb6_i76$139}if(VJ==102){ajk=1;acg=1}var HA=TX;var Hy=((Jl+HA)&4294967295);la[((Hy)>>0)]=0;var Hx=ao8;var Hr=TX;var Hp=((Hx+4*Hr)&4294967295);Vx=Hp;var Hn=la[((D1)>>0)];var Hl=iB((Hn),8,0)==47;if(Hl){VJ=106}else{VJ=115}$bb8_i$$bb12_i$150:do{if(VJ==106){TF=((oi)&4294967295);anO=D0;while(1){var GX=TF;var GV=((GX)&4294967295);var GT=uA[((GV)>>2)];var GR=(GT)!=0;var GP=TF;if(!(GR)){VJ=111;break}var Hj=((GP)&4294967295);var Hg=uA[((Hj)>>2)];var He=anO;var Hc=pt(He,Hg);var Ha=(((Hc))|0)==0;var G9=TF;if(Ha){VJ=108;break}var GZ=((G9+8)&4294967295);TF=GZ;VJ=110;continue}if(VJ==111){var GM=((GP+4)&4294967295);var GL=uA[((GM)>>2)];EG=GL}else{if(VJ==108){var G5=((G9+4)&4294967295);var G3=uA[((G5)>>2)];EG=G3}}var GH=EG;aeu=GH;var Ii=aeu;DN=Ii;var GF=DN;var GD=(((GF))|0)!=16;var GB=oD((GD),1,0);X3=GB;var aos=iB((GB),8,0)!=0;if(aos){VJ=113}else{VJ=114}if(VJ==113){var Gz=FQ;var Gx=uA[((Gz)>>2)];var Gv=VL;var Gt=((Gv+Gx)&4294967295);la[((Gt)>>0)]=32;var Gr=(((Gx)+1)&4294967295);var Gq=FQ;uA[((Gq)>>2)]=Gr}var Ck=DN;var Ci=(((Ck)+32)&4294967295);DN=Ci;ajs=114;VJ=126;break $bb8_i$$bb12_i$150}else{if(VJ==115){akX=((oi)&4294967295);acW=ZM;while(1){var BR=akX;var BP=((BR)&4294967295);var BN=uA[((BP)>>2)];var BM=(BN)!=0;var BL=akX;if(!(BM)){VJ=120;break}var Cg=((BL)&4294967295);var Ce=uA[((Cg)>>2)];var Cd=acW;var Cb=pt(Cd,Ce);var Ca=(((Cb))|0)==0;var B9=akX;if(Ca){VJ=117;break}var BT=((B9+8)&4294967295);akX=BT;VJ=119;continue}if(VJ==120){var BK=((BL+4)&4294967295);var BJ=uA[((BK)>>2)];EH=BJ}else{if(VJ==117){var B8=((B9+4)&4294967295);var B7=uA[((B8)>>2)];EH=B7}}var BI=EH;akC=BI;var RD=akC;DN=RD;var BH=DN;var Bz=(((BH))|0)!=16;var Bx=oD((Bz),1,0);PE=Bx;var SV=iB((Bx),8,0)!=0;if(SV){VJ=122}else{VJ=123}if(VJ==122){var Bv=FQ;var Bt=uA[((Bv)>>2)];var Bs=VL;var Br=((Bs+Bt)&4294967295);la[((Br)>>0)]=32;var Bq=(((Bt)+1)&4294967295);var Bp=FQ;uA[((Bp)>>2)]=Bq}var Bo=anV;var Bn=(((Bo))|0)!=0;var Bm=DN;if(Bn){ajs=123}else{ajs=123;VJ=126;break $bb8_i$$bb12_i$150}var Bl=((o7+Bm)&4294967295);var Bk=la[((Bl)>>0)];var Bj=iB((Bk),8,0)!=0;if(Bj){ajs=124}else{ajs=124;VJ=126;break $bb8_i$$bb12_i$150}EE=0;VJ=280;break $bb8_i$$bb12_i$150}}}while(0);$bb18_i$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread473$177:do{if(VJ==126){var Bi=ajs==124?Bm:(ajs==114?Ci:(Bm));aqd=0;Dp=16384;var Bh=xk[((rz)>>2)];var Bg=(((Bh)-1)&4294967295);var Bf=((cT+Bg*76)&4294967295);I6=Bf;if(Bi==1){ajs=126;VJ=245}else{if(Bi==2){ajs=126;VJ=251}else{if(Bi==3){ajs=126;VJ=136}else{if(Bi==4){ajs=126;VJ=186}else{if(Bi==5){ajs=126;VJ=208}else{if(Bi==6){ajs=126;VJ=263}else{if(Bi==7){ajs=126;VJ=266}else{if(Bi==9){ajs=126;VJ=204}else{if(Bi==10){ajs=126;VJ=127}else{if(Bi==11){ajs=126;VJ=213;break $bb340$12}else{if(Bi==12){ajs=126;VJ=175}else{if(Bi==13){ajs=126;VJ=233}else{if(Bi==14){ajs=126;VJ=206}else{if(Bi==15){ajs=126;VJ=262;break $bb340$12}else{if(Bi==33){ajs=126;VJ=255}else{if(Bi==34){ajs=126;VJ=259}else{if(Bi==35){ajs=126;VJ=185}else{if(Bi==36){ajs=126;VJ=193}else{if(Bi==38){ajs=126;VJ=271}else{if(Bi==39){ajs=126;VJ=274}else{if(Bi==41){ajs=126;VJ=207}else{if(Bi==42){ajs=126;VJ=185}else{if(Bi==43){ajs=126;VJ=232;break $bb340$12}else{if(Bi==44){ajs=126;VJ=185}else{if(Bi==46){ajs=126;VJ=207}else{if(Bi==47){ajs=126;VJ=262;break $bb340$12}else{ajs=126;VJ=278}}}}}}}}}}}}}}}}}}}}}}}}}}$bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179:do{if(VJ==245){var KH=Vx;var KF=zO(KH,((es)&4294967295));aik=KF;var KD=aik;var KB=(KD)!=0;var Kz=oD((KB),1,0);Mf=Kz;var Kx=Mf;var Bc=iB((Kx),8,0)!=0;if(Bc){VJ=246}else{VJ=248}$bb101_i$$bb104_i$181:do{if(VJ==246){var Kv=aik;var Kt=ef(DY,Kv,80);var Ks=gw(DX,0);ajq=Ks;var Km=ajq;var Kk=(((Km))|0)>=0;var Ki=oD((Kk),1,0);Ea=Ki;var Kg=Ea;var aij=iB((Kg),8,0)!=0;if(!(aij)){VJ=248;break $bb101_i$$bb104_i$181}var Ke=uA[((bj)>>2)];var Kc=ajq;var Ka=((Ke+Kc)&4294967295);uA[((kO)>>2)]=Ka}}while(0);var J8=Vx;var J6=DN;var J5=cJ(J8,J6);var Yp=(((J5))|0)==0;var Yo=oD((Yp),1,0);ajh=Yo;var LZ=iB((Yo),8,0)!=0;if(!(LZ)){VJ=250;break $bb340$12}EE=0;VJ=280;break $bb18_i$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread473$177}else{if(VJ==251){var Yn=Vx;var Yl=DN;var Yj=cJ(Yn,Yl);var Yh=(((Yj))|0)==0;var Yf=oD((Yh),1,0);aeG=Yf;var Yd=aeG;var aej=iB((Yd),8,0)!=0;if(!(aej)){VJ=253;break $bb340$12}EE=0;VJ=280;break $bb18_i$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread473$177}else{if(VJ==136){var apC=DN;B1=apC;var apA=uA[((wD)>>2)];var apy=((s9+apA*64)&4294967295);aka=apy;var apw=(((apA))|0)<=18;if(apw){VJ=137}else{VJ=138}if(VJ==137){var apv=uA[((wD)>>2)];var apu=(((apv)+1)&4294967295);uA[((wD)>>2)]=apu}var app=aka;var apn=((app)&4294967295);var apl=B1;uA[((apn)>>2)]=apl;DO=0;$bb2_i25_i$192:while(1){var apj=DO;var aph=aka;var apf=((aph+4)&4294967295);var apd=((apf+apj*4)&4294967295);uA[((apd)>>2)]=-1;var apb=DO;var apa=(((apb)+1)&4294967295);DO=apa;var ao9=(((apa))|0)<=14;if(ao9){VJ=139;continue $bb2_i25_i$192}else{VJ=140;break $bb2_i25_i$192}}var anr=aka;EK=anr;var anq=EK;ap9=anq;var amS=ap9;GK=amS;Oa=1;$bb27_i$195:while(1){var anp=Oa;var ano=((g6+anp*4)&4294967295);var ann=uA[((ano)>>2)];var anm=Vx;var ank=zO(anm,ann);aik=ank;var anj=aik;var ani=(anj)!=0;var anh=oD((ani),1,0);abS=anh;var ai7=iB((anh),8,0)!=0;if(ai7){VJ=142}else{VJ=173}$bb29_i$$bb30_i$197:do{if(VJ==142){var anf=Oa;var ane=aik;var and=GK;Wx=anf;Ys=ane;Nf=and;var anc=Wx;var anb=((jA+anc*4)&4294967295);var ana=uA[((anb)>>2)];var am9=Ys;var am7=jZ(am9,ana);uA[((amt)>>2)]=am7;var am6=uA[((amt)>>2)];var am5=(((am6))|0)>=0;var am4=oD((am5),1,0);JS=am4;var am3=JS;var alY=iB((am3),8,0)!=0;var am2=Wx;if(alY){VJ=143}else{VJ=144}if(VJ==143){var am1=Wx;var am0=((((s9+4)&4294967295)+am1*4)&4294967295);var amZ=uA[((am0)>>2)];var amY=uA[((amt)>>2)];var amX=(((amY)*(amZ))&4294967295);var amW=(((((amX))|0)/100)|0);var amV=Nf;var amQ=((amV+4)&4294967295);var amP=((amQ+am2*4)&4294967295);uA[((amP)>>2)]=amW}else{if(VJ==144){var amO=Ys;aou=am2;A1=amO;ady=amt;TU=0;$bb1_i_i_i$202:while(1){var amM=A1;var amL=xk[((amM)>>2)];afq=amL;var amK=(((amL))>>>0)<=255;if(!(amK)){VJ=147;break $bb1_i_i_i$202}var amI=afq;var amH=xE(amI);EM=amH;amU=amH;var amF=(((amH))|0)!=0;var amE=A1;if(amF){ajs=148}else{ajs=148;VJ=149;break $bb1_i_i_i$202}var amN=((amE+4)&4294967295);A1=amN;VJ=146;continue $bb1_i_i_i$202}if(VJ==147){EM=0;amU=0;var amJ=A1;ajs=147}var amD=ajs==147?amJ:(amE);var amC=uA[((amD)>>2)];var amA=(((amC))|0)==43;if(amA){VJ=150}else{VJ=151}if(VJ==150){var amz=A1;var amy=((amz+4)&4294967295);A1=amy;TU=1}var amx=A1;var amw=uA[((amx)>>2)];var amv=(((amw))|0)==45;if(amv){VJ=152}else{VJ=153}if(VJ==152){var amq=A1;var amo=((amq+4)&4294967295);A1=amo;TU=-1}var amm=A1;var amk=ds(amm,anP);var ami=(amk);Vw=ami;var amg=uA[((anP)>>2)];var ame=A1;var amc=(amg)==(ame);if(amc){VJ=154}else{VJ=155}$bb7_i_i_i$$bb8_i_i_i$215:do{if(VJ==154){var ama=ady;uA[((ama)>>2)]=100;EL=2;VJ=167;break $bb7_i_i_i$$bb8_i_i_i$215}else{if(VJ==155){var al9=uA[((anP)>>2)];var al3=uA[((al9)>>2)];var al1=(((al3))|0)==37;if(al1){VJ=156}else{VJ=159}if(VJ==156){var alX=TU;var alV=(((alX))|0)!=0;if(alV){VJ=157}else{VJ=158}if(VJ==157){var alT=TU;var alR=(((alT))|0);var alP=Vw;var alN=(alR)*(alP);var alL=(alN)+100;Vw=alL}var alK=Vw;var alG=(((alK))|0);var alD=ady;uA[((alD)>>2)]=alG;EL=2;VJ=167;break $bb7_i_i_i$$bb8_i_i_i$215}else{if(VJ==159){var alA=uA[((anP)>>2)];var aly=((alA)&4294967295);var alw=uA[((aly)>>2)];var alt=(((alw))|0)==115;if(alt){VJ=160}else{VJ=162}$bb13_i_i_i$$bb15_i_i_i$224:do{if(VJ==160){var alr=uA[((anP)>>2)];var alp=((alr+4)&4294967295);var aln=uA[((alp)>>2)];var alm=(((aln))|0)==116;if(!(alm)){VJ=162;break $bb13_i_i_i$$bb15_i_i_i$224}var alj=TU;var alh=(((alj))|0);var alf=Vw;var alc=(alh)*(alf);var ak9=(alc)/12;var afS=vO(ak9);var ak7=(afS)*100;an3=ak7;var ak5=an3;var ak2=(((ak5))|0);var ak0=ady;uA[((ak0)>>2)]=ak2;EL=2;VJ=167;break $bb7_i_i_i$$bb8_i_i_i$215}}while(0);var akZ=aou;var akU=(((akZ))|0)==1;if(akU){VJ=163}else{VJ=168}if(VJ==163){var akS=TU;var akQ=(((akS))|0)==0;if(akQ){VJ=164}else{VJ=165}if(VJ==164){var akO=Vw;var akM=(akO)*100;var akK=(((akM))|0);var akI=ady;uA[((akI)>>2)]=akK}else{if(VJ==165){var akG=TU;var akE=(((akG))|0);var akD=Vw;var ai3=(akE)*(akD);var ai2=(ai3)*100;var ai1=(((ai2))|0);var ai0=(((ai1)+100)&4294967295);var aiZ=ady;uA[((aiZ)>>2)]=ai0}}EL=2;VJ=167;break $bb7_i_i_i$$bb8_i_i_i$215}else{if(VJ==168){var aiQ=Vw;var aiP=(((aiQ))|0);var aiO=ady;uA[((aiO)>>2)]=aiP;var aiN=TU;EL=aiN;al8=aiN;ans=aiN;var aiM=(((aiN))|0)==0;if(aiM){VJ=169}else{VJ=170}if(VJ==169){var aiL=Wx;var aiK=uA[((amt)>>2)];var aiJ=Nf;var aiI=((aiJ+4)&4294967295);var aiH=((aiI+aiL*4)&4294967295);uA[((aiH)>>2)]=aiK;VJ=173;break $bb29_i$$bb30_i$197}else{if(VJ==170){var aiG=(((aiN))|0)==2;var aiF=Wx;var aiE=Wx;var aiD=((An+aiE*4)&4294967295);var aiC=uA[((aiD)>>2)];var aiB=uA[((amt)>>2)];if(aiG){ajs=170;VJ=171;break $bb7_i_i_i$$bb8_i_i_i$215}else{ajs=170}var aiq=ans;var aip=(((aiq)*(aiB))&4294967295);var aio=(((aip)+(aiC))&4294967295);var ain=Nf;var aim=((ain+4)&4294967295);var ail=((aim+aiF*4)&4294967295);uA[((ail)>>2)]=aio;VJ=173;break $bb29_i$$bb30_i$197}}}}}}}}}while(0);if(VJ==167){al8=2;ans=2;var aiY=Wx;var aiX=Wx;var aiW=((An+aiX*4)&4294967295);var aiV=uA[((aiW)>>2)];var aiU=uA[((amt)>>2)];ajs=167}var aiA=ajs==167?aiU:(aiB);var aiz=ajs==167?aiV:(aiC);var aiy=ajs==167?aiY:(aiF);var aix=(((aiz)*(aiA))&4294967295);var aiu=(((((aix))|0)/100)|0);var ait=Nf;var ais=((ait+4)&4294967295);var air=((ais+aiy*4)&4294967295);uA[((air)>>2)]=aiu}}}}while(0);var aih=Oa;var aig=(((aih)+1)&4294967295);Oa=aig;var aif=(((aig))|0)<=4;if(aif){VJ=141;continue $bb27_i$195}else{VJ=174;break $bb27_i$195}}var aie=VL;var aid=FQ;sP(aie,aid);VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==186){var agk=Vx;var adf=zO(agk,((bb)&4294967295));aik=adf;var ade=Vx;var add=zO(ade,((kj)&4294967295));acv=add;var adb=Vx;var ada=zO(adb,((sq)&4294967295));TW=ada;var ac9=aik;var ac8=jZ(ac9,((o5)&4294967295));aiS=ac8;var ac7=acv;var ac6=jZ(ac7,((jn)&4294967295));ZE=ac6;var ac5=ZE;var ac2=(((ac5))|0)==1;if(ac2){VJ=187}else{VJ=188}if(VJ==187){aiS=19}var ac1=TW;var ac0=sX(ac1,0,0);Q7=ac0;var acZ=aiS;var acX=(((acZ))|0)==64;if(acX){VJ=189}else{VJ=192}if(VJ==189){var acV=Q7;var acU=(((acV))|0)<=1;if(acU){VJ=190}else{VJ=191}if(VJ==190){aiS=193}else{if(VJ==191){var acT=Q7;var acS=(((acT)+64)&4294967295);aiS=acS}}}var acR=aiS;var acQ=qs(DW,((L)&4294967295),1,acR);var acP=FQ;var acO=uA[((acP)>>2)];var acN=VL;var acM=((acN+acO)&4294967295);var acL=oJ(acM,DV);var acK=FQ;var acJ=uA[((acK)>>2)];var acI=wg(DU);var acH=(((acI)+(acJ))&4294967295);var acF=FQ;uA[((acF)>>2)]=acH;var acE=FQ;var acD=uA[((acE)>>2)];uA[((fq)>>2)]=acD;var acC=aiS;uA[((i6)>>2)]=acC;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==208){var UB=Vx;var UA=zO(UB,((ly)&4294967295));aik=UA;var Uz=aik;var Uu=(Uz)!=0;var Ut=oD((Uu),1,0);alE=Ut;var Us=alE;var JG=iB((Us),8,0)!=0;if(!(JG)){VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}var Ur=aik;var Uq=ef(DT,Ur,80);var Up=pt(((nW)&4294967295),DS);var Uo=(((Up))|0)==0;if(Uo){VJ=210;break $bb340$12}var Un=gw(DR,0);ajq=Un;var Um=ajq;var Ul=(((Um))|0)>=0;var Uk=oD((Ul),1,0);ahj=Uk;var Ui=ahj;var Nx=iB((Ui),8,0)!=0;if(!(Nx)){VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}var Uh=ajq;var Ug=qs(DQ,((qG)&4294967295),1,Uh);var Uf=FQ;var Ue=uA[((Uf)>>2)];var Ud=VL;var Uc=((Ud+Ue)&4294967295);var Ub=oJ(Uc,DP);var Ua=FQ;var T9=uA[((Ua)>>2)];var T7=wg(ZQ);var T6=(((T7)+(T9))&4294967295);var T5=FQ;uA[((T5)>>2)]=T6;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==263){var WM=I6;var WJ=((WM)&4294967295);var WG=uA[((WJ)>>2)];var Wt=(((WG))|0)==6;if(Wt){VJ=264}else{VJ=265}if(VJ==264){var Ws=Vx;var Wr=cJ(Ws,38);aqd=Wr}var Wp=Vx;var Wn=DN;var Wl=cJ(Wp,Wn);var Wj=aqd;var Wg=(Wj)|(Wl);aqd=Wg;var Wd=aqd;var Wa=(((Wd)+524358)&4294967295);EE=Wa;ajs=265;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==266){var VY=I6;var VX=((VY)&4294967295);var VW=uA[((VX)>>2)];var VV=(((VW))|0)==6;if(VV){VJ=267}else{VJ=268}if(VJ==267){var VU=Vx;var VT=cJ(VU,38);aqd=VT}var VS=I6;var VQ=((VS)&4294967295);var VN=uA[((VQ)>>2)];var VM=(((VN))|0)==7;if(VM){VJ=269}else{VJ=270}if(VJ==269){var VI=Vx;var VH=cJ(VI,39);var VG=aqd;var VF=(VG)|(VH);aqd=VF}var VE=Vx;var VD=DN;var VC=cJ(VE,VD);var VB=aqd;var VA=(VB)|(VC);aqd=VA;var Vz=aqd;var Vv=(((Vz)+524358)&4294967295);EE=Vv;ajs=270;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==204){var aaN=Vx;var aaM=zO(aaN,((iS)&4294967295));aik=aaM;var aaL=aik;var aaF=(aaL)!=0;var aaD=oD((aaF),1,0);ap5=aaD;var aaB=ap5;var F3=iB((aaB),8,0)!=0;if(!(F3)){VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}la[((m3)>>0)]=1;var aaz=FQ;var aax=uA[((aaz)>>2)];var aav=FQ;var aat=uA[((aav)>>2)];var aar=MT;var aaq=(((aar)-(aat))&4294967295);var aap=FQ;var UJ=uA[((aap)>>2)];var UI=VL;var UH=((UI+UJ)&4294967295);var UG=aik;var UF=ef(UH,UG,aaq);var UD=(((UF)+(aax))&4294967295);var UC=FQ;uA[((UC)>>2)]=UD;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==127){var Be=DN;TJ=Be;var Bd=uA[((wD)>>2)];var Bb=((s9+Bd*64)&4294967295);Cc=Bb;var Ba=(((Bd))|0)<=18;if(Ba){VJ=128}else{VJ=129}if(VJ==128){var A9=uA[((wD)>>2)];var A8=(((A9)+1)&4294967295);uA[((wD)>>2)]=A8}var A7=Cc;var A6=((A7)&4294967295);var A5=TJ;uA[((A6)>>2)]=A5;alZ=0;$bb2_i17_i$275:while(1){var A4=alZ;var A3=Cc;var A2=((A3+4)&4294967295);var AY=((A2+A4*4)&4294967295);uA[((AY)>>2)]=-1;var AV=alZ;var AT=(((AV)+1)&4294967295);alZ=AT;var AR=(((AT))|0)<=14;if(AR){VJ=130;continue $bb2_i17_i$275}else{VJ=131;break $bb2_i17_i$275}}var AP=Cc;EJ=AP;var AN=EJ;Lu=AN;var Z0=Lu;GK=Z0;var AL=Vx;var AJ=zO(AL,((lY)&4294967295));aik=AJ;var AI=Vx;var AH=zO(AI,((t0)&4294967295));acv=AH;var aqu=aik;var aqs=nz(aqu,((ah)&4294967295));var aqq=(((aqs))|0)==0;var aqo=oD((aqq),1,0);al7=aqo;var aqm=al7;var apP=iB((aqm),8,0)!=0;if(apP){VJ=132}else{VJ=133}$bb21_i$$bb22_i$278:do{if(VJ==132){var aqk=acv;var aqi=jZ(aqk,((vP)&4294967295));aiS=aqi;var aqg=GK;var aqf=((aqg+4)&4294967295);var aqe=((aqf+20)&4294967295);var ap7=aiS;uA[((aqe)>>2)]=ap7}else{if(VJ==133){var ap4=aik;var ap2=nz(ap4,((n6)&4294967295));var ap0=(((ap2))|0)==0;var apY=oD((ap0),1,0);ahL=apY;var apW=ahL;var aa8=iB((apW),8,0)!=0;if(!(aa8)){VJ=135;break $bb21_i$$bb22_i$278}var apU=acv;var apS=jZ(apU,((e0)&4294967295));aiS=apS;var apR=GK;var apQ=((apR+4)&4294967295);var apK=((apQ+24)&4294967295);var apI=aiS;uA[((apK)>>2)]=apI}}}while(0);var apG=VL;var apE=FQ;sP(apG,apE);VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==175){var aib=DN;Fh=aib;var aia=uA[((wD)>>2)];var ah9=((s9+aia*64)&4294967295);Ja=ah9;var ah8=(((aia))|0)<=18;if(ah8){VJ=176}else{VJ=177}if(VJ==176){var ah7=uA[((wD)>>2)];var ah4=(((ah7)+1)&4294967295);uA[((wD)>>2)]=ah4}var ah2=Ja;var ah0=((ah2)&4294967295);var ahY=Fh;uA[((ah0)>>2)]=ahY;Vk=0;while(1){var ahW=Vk;var ahU=Ja;var ahS=((ahU+4)&4294967295);var ahQ=((ahS+ahW*4)&4294967295);uA[((ahQ)>>2)]=-1;var ahO=Vk;var ahN=(((ahO)+1)&4294967295);Vk=ahN;var ahH=(((ahN))|0)<=14;if(ahH){VJ=178;continue}else{VJ=179;break}}var ahF=Ja;EN=ahF;var ahD=EN;Sj=ahD;var anY=Sj;GK=anY;aiS=3;var ahB=Vx;var ahz=zO(ahB,((eJ)&4294967295));aik=ahz;var ahx=aik;var ahv=(ahx)!=0;var aht=oD((ahv),1,0);Lt=aht;var ahr=Lt;var aaJ=iB((ahr),8,0)!=0;if(aaJ){VJ=180}else{VJ=181}if(VJ==180){var ahq=aik;var ahl=jZ(ahq,((zr)&4294967295));aiS=ahl}var ahi=uA[((xy)>>2)];var ahg=((ahi)&4294967295);var ahe=((ahg+224)&4294967295);var ahb=uA[((ahe)>>2)];var ag9=(((ahb))|0)==1;if(ag9){VJ=182}else{VJ=183}if(VJ==182){var ag7=aiS;var ag5=((kX+ag7)&4294967295);var ag2=ll[((ag5)>>0)];var ag1=oD((ag2),8,0);var agY=GK;var agW=((agY+4)&4294967295);var agU=((agW+16)&4294967295);uA[((agU)>>2)]=ag1;var agS=aiS;var agP=((dE+agS)&4294967295);var agN=ll[((agP)>>0)];var agL=oD((agN),8,0);var agJ=GK;var agH=((agJ+4)&4294967295);var agG=((agH+8)&4294967295);uA[((agG)>>2)]=agL}else{if(VJ==183){var agB=GK;var agz=((agB+4)&4294967295);var agx=((agz+48)&4294967295);var agv=aiS;uA[((agx)>>2)]=agv}}var agt=VL;var agr=FQ;sP(agt,agr);VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==233){aiS=21;Dp=16384;var LY=Vx;var LX=zO(LY,((b0)&4294967295));aik=LX;var LW=aik;var LV=(LW)!=0;var LU=oD((LV),1,0);ak3=LU;var LT=ak3;var an2=iB((LT),8,0)!=0;if(an2){VJ=234}else{VJ=237}if(VJ==234){var LS=aik;var LR=jZ(LS,((xu)&4294967295));aiS=LR;var LQ=aiS;var LP=(((LQ))|0)<=2;if(LP){VJ=235}else{VJ=236}if(VJ==235){var LM=FQ;var LK=uA[((LM)>>2)];var LI=VL;var LG=((LI+LK)&4294967295);var LE=aiS;var LC=qs(LG,((pK)&4294967295),1,LE);var LA=FQ;var Ly=uA[((LA)>>2)];var Lw=(((Ly)+3)&4294967295);var Lv=FQ;uA[((Lv)>>2)]=Lw;Dp=0}var Lq=aiS;var Lo=((rl+Lq*4)&4294967295);var Lm=uA[((Lo)>>2)];aiS=Lm}var Lk=Vx;var Li=zO(Lk,((xi)&4294967295));acv=Li;var Lg=acv;var Le=(Lg)!=0;var Lc=oD((Le),1,0);aaO=Lc;var any=iB((Lc),8,0)!=0;if(any){VJ=238}else{VJ=240}$bb92_i$$bb94_i$304:do{if(VJ==238){var La=acv;var K9=sX(La,0,1);var K5=(((K9)*25)&4294967295);var K3=uA[((((bX)&4294967295))>>2)];var K1=(((((K5))|0)/(((K3))|0))|0);aiS=K1;var KZ=Dp;var KX=(((KZ))|0)==0;if(KX){ajs=238}else{ajs=238;VJ=242;break $bb92_i$$bb94_i$304}Dp=16384;VJ=241;break $bb92_i$$bb94_i$304}else{if(VJ==240){var Q6=Dp;var KU=(((Q6))|0)!=0;if(KU){VJ=241;break $bb92_i$$bb94_i$304}else{VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}}}}while(0);if(VJ==241){var Jk=aiS;ajs=241}var KS=ajs==241?Jk:(K1);var KQ=(((KS))|0)>4095;if(KQ){VJ=243}else{VJ=244}if(VJ==243){aiS=4095}var KO=Dp;var KN=aiS;var KJ=(((KN)+(KO))&4294967295);EE=KJ;ajs=244;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==206){la[((m3)>>0)]=1;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==255){while(1){var X0=ajs==254?X9:(Bh);var XZ=(((X0))|0)<=1;if(XZ){VJ=257;break}var XY=uA[((rz)>>2)];var XW=(((XY)-1)&4294967295);var XU=((cT+XW*76)&4294967295);var XS=((XU)&4294967295);var XP=uA[((XS)>>2)];var XM=(((XP))|0)!=1;if(!(XM)){VJ=257;break}var Yb=uA[((rz)>>2)];var X9=(((Yb)-1)&4294967295);uA[((rz)>>2)]=X9;ajs=254;VJ=255;continue}var XJ=Vx;var XG=DN;var Xu=cJ(XJ,XG);var Xt=(((Xu)+524328)&4294967295);EE=Xt;ajs=257;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==259){while(1){var Xo=ajs==258?Xq:(Bh);var Xm=(((Xo))|0)<=1;if(Xm){VJ=261;break}var Xj=uA[((rz)>>2)];var Xg=(((Xj)-1)&4294967295);var Xd=((cT+Xg*76)&4294967295);var Xa=((Xd)&4294967295);var WZ=uA[((Xa)>>2)];var WY=(((WZ))|0)!=2;if(!(WY)){VJ=261;break}var Xs=uA[((rz)>>2)];var Xq=(((Xs)-1)&4294967295);uA[((rz)>>2)]=Xq;ajs=258;VJ=259;continue}Dp=0;var WX=Vx;var WV=DN;var WT=cJ(WX,WV);var WR=Dp;var WP=(((WR)+(WT))&4294967295);EE=WP;ajs=261;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==185){var agp=DN;var agn=VL;var agl=FQ;aZ(agp,agn,agl);VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==193){var acB=uA[((i6)>>2)];var acA=(((acB))|0)==36;if(acA){VJ=194}else{VJ=203}if(VJ==194){var acz=FQ;var acy=uA[((acz)>>2)];var acx=VL;var acw=((acx+acy)&4294967295);la[((acw)>>0)]=0;var acs=uA[((fq)>>2)];var acr=VL;var acp=FQ;Yv=acr;ajb=acs;aje=acp;ns(ajg,p1,40,4,0);var aco=Yv;var acn=ajb;var acm=((aco+acn)&4294967295);SS=acm;var acl=SS;aoJ=ZO;Es=acl;while(1){var abZ=aoJ;var abX=((abZ)&4294967295);var abV=uA[((abX)>>2)];var abU=(abV)!=0;var abO=aoJ;if(!(abU)){VJ=199;break}var ack=((abO)&4294967295);var acj=uA[((ack)>>2)];var aci=Es;var acd=pt(aci,acj);var aca=(((acd))|0)==0;var ab8=aoJ;if(aca){VJ=196;break}var ab1=((ab8+8)&4294967295);aoJ=ab1;VJ=198;continue}if(VJ==199){var abM=((abO+4)&4294967295);var abK=uA[((abM)>>2)];EP=abK}else{if(VJ==196){var ab5=((ab8+4)&4294967295);var ab3=uA[((ab5)>>2)];EP=ab3}}var abI=EP;ahp=abI;var agi=ahp;anE=agi;var abF=anE;var abD=(((abF))|0)!=0;var abB=oD((abD),1,0);aoW=abB;var Hi=iB((abB),8,0)!=0;if(Hi){VJ=201}else{VJ=202}if(VJ==201){var abz=anE;var aby=SS;var abx=zD(abz,aby);ai9=abx;var abs=ajb;var abp=ai9;var abn=(((abp)+(abs))&4294967295);var abk=aje;uA[((abk)>>2)]=abn;var abi=anE;EO=abi}else{if(VJ==202){EO=0}}}var abg=FQ;var abe=uA[((abg)>>2)];var abc=VL;var abb=((abc+abe)&4294967295);la[((abb)>>0)]=1;var aba=(((abe)+1)&4294967295);var aa2=FQ;uA[((aa2)>>2)]=aba;var aa0=FQ;var aaY=uA[((aa0)>>2)];var aaW=VL;var aaU=((aaW+aaY)&4294967295);la[((aaU)>>0)]=89;var aaS=(((aaY)+1)&4294967295);var aaQ=FQ;uA[((aaQ)>>2)]=aaS;uA[((i6)>>2)]=0;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==271){var Vu=I6;var Vt=((Vu)&4294967295);var Vs=uA[((Vt)>>2)];var Vq=(((Vs))|0)==6;if(Vq){VJ=272}else{VJ=273}if(VJ==272){var Vp=Vx;var Vo=DN;var Vn=cJ(Vp,Vo);aqd=Vn}var Vm=aqd;var Vl=(((Vm)+524328)&4294967295);EE=Vl;ajs=273;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==274){var Vi=I6;var Vh=((Vi)&4294967295);var Vg=uA[((Vh)>>2)];var Vf=(((Vg))|0)==6;if(Vf){VJ=276}else{VJ=275}if(VJ==275){var Ve=I6;var Vd=((Ve)&4294967295);var Vc=uA[((Vd)>>2)];var Vb=(((Vc))|0)==7;if(!(Vb)){VJ=277;break $bb340$12}}var Va=Vx;var U9=DN;var U7=cJ(Va,U9);var U6=(((U7)+524358)&4294967295);EE=U6;ajs=276;VJ=281;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}else{if(VJ==207){la[((m3)>>0)]=0;VJ=278;break $bb138_i$$bb99_i$$bb108_i$$bb26_i$$bb41_i$$bb57_i$$bb123_i$$bb126_i$$bb51_i$$bb19_i$$bb33_i$$bb85_i$$bb55_i$$bb114_i$$bb119_i$$bb40_i$$bb48_i$$bb131_i$$bb134_i$$bb56_i$179}}}}}}}}}}}}}}}}}}}}while(0);if(VJ==278){EE=0;VJ=280;break $bb18_i$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread473$177}else{if(VJ==281){var U5=ajs==244?KJ:(ajs==257?Xt:(ajs==261?WP:(ajs==265?Wa:(ajs==270?Vv:(ajs==273?Vl:(U6))))));anU=U5;aiT=U5;var U4=(((U5))|0)!=0;if(U4){VJ=282;break $bb340$12}else{VJ=287;break $bb18_i$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread473$177}}}}}while(0);if(VJ==280){anU=0;aiT=0}uA[((amT)>>2)]=32;var PC=n5();uA[((amR)>>2)]=PC;VJ=667;continue $bb340$12}}}}while(0);uA[((zx)>>2)]=0;var anl=ll[((m3)>>0)];var PB=oD((anl),1,0);var Pz=(((PB))|0)!=0;if(Pz){VJ=667;continue $bb340$12}var Px=uA[((amR)>>2)];var Pv=(((Px))|0)==10;var Pt=uA[((u1)>>2)];var Pq=(((Pt))|0)==-1;var Nv=(Pv)&(Pq);var Po=xk[((amT)>>2)];if(Nv){VJ=290;break $bb340$12}var NQ=(((Po))|0)==1;if(NQ){VJ=302}else{VJ=301}$bb103$$bb102$359:do{if(VJ==301){var NP=la[((ax)>>0)];var NO=iB((NP),8,0);var NN=uA[((amT)>>2)];var NM=(((NO))|0)==(((NN))|0);if(NM){VJ=302;break $bb103$$bb102$359}else{VJ=333;break $bb103$$bb102$359}}}while(0);$bb103$$bb129$361:do{if(VJ==302){var NL=uA[((amR)>>2)];var NI=(((NL))|0)==86;if(NI){VJ=303;break $bb340$12}var H7=uA[((amR)>>2)];var H5=(((H7))|0)==66;if(!(H5)){VJ=333;break $bb103$$bb129$361}var H3=uA[((ako)>>2)];var H1=af6;var HZ=((H1+H3)&4294967295);ns(HZ,((yR)&4294967295),4,1,0);var HX=uA[((ako)>>2)];var HV=(((HX)+3)&4294967295);uA[((ako)>>2)]=HV;var HQ=n5();uA[((amR)>>2)]=HQ;var HP=uA[((amR)>>2)];var HN=(((HP))|0)==48;var HL=oD((HN),1,0);UR=HL;var HJ=UR;var WF=iB((HJ),8,0)!=0;if(WF){VJ=318}else{VJ=319}$bb117$$bb118$365:do{if(VJ==318){uA[((iW)>>2)]=0}else{if(VJ==319){uA[((iW)>>2)]=1;uA[((((nT)&4294967295))>>2)]=0;var HH=uA[((amR)>>2)];var HF=(((HH))|0)!=49;if(!(HF)){VJ=332;break $bb117$$bb118$365}ajt=0;while(1){var Hf=xk[((amR)>>2)];afy=Hf;var Hd=(((Hf))>>>0)<=255;if(Hd){VJ=324}else{VJ=323}if(VJ==324){var Hb=afy;var G7=xE(Hb);EV=G7;amG=G7;var G6=(((G7))|0)!=0;if(G6){VJ=331;break}}else{if(VJ==323){EV=0;amG=0}}var G4=uA[((lC)>>2)];var G2=(((G4))|0)!=0;if(G2){VJ=326}else{VJ=327}if(VJ==326){EX=0;amB=0}else{if(VJ==327){var GY=uA[((mb)>>2)];var GW=(GY)!=0;if(GW){VJ=328}else{VJ=329}if(VJ==328){var GU=uA[((mb)>>2)];var GS=aJ(GU);EX=GS;ajs=328}else{if(VJ==329){var aa9=ll[((lO)>>0)];var GQ=oD((aa9),1,0);EX=GQ;ajs=329}}var GO=ajs==328?GS:(GQ);amB=GO;var GJ=(((GO))|0)!=0;if(GJ){VJ=331;break}}}DZ=1;UQ=1;var HD=ajt;var HB=uA[((amR)>>2)];var Hz=((nT+HD*4)&4294967295);uA[((Hz)>>2)]=HB;var Ht=ajt;var Hs=(((Ht)+1)&4294967295);ajt=Hs;var Hq=n5();uA[((amR)>>2)]=Hq;var Ho=uA[((ako)>>2)];var Hm=af6;var Hk=((Hm+Ho)&4294967295);la[((Hk)>>0)]=32;var Hh=(((Ho)+1)&4294967295);uA[((ako)>>2)]=Hh;VJ=322;continue}DZ=0;UQ=0;var GI=ajt;var GG=((nT+GI*4)&4294967295);uA[((GG)>>2)]=0;uA[((iW)>>2)]=2}}}while(0);var GE=n5();uA[((amR)>>2)]=GE;VJ=667;continue $bb340$12}}while(0);var GC=E6;var GA=(((GC)+1)&4294967295);E6=GA;var Gy=uA[((amT)>>2)];var Gw=bJ(Gy);var Gu=(((Gw))|0)!=0;if(Gu){VJ=334}else{VJ=335}$bb130$$bb131$386:do{if(VJ==334){Md=1;VJ=356;break $bb130$$bb131$386}else{if(VJ==335){var Gs=MX;var Gp=(((Gs))|0)!=0;if(Gp){VJ=336}else{VJ=337}if(VJ==336){MX=0;uA[((amT)>>2)]=1328;var Gn=uA[((amR)>>2)];afm=Gn;var Gm=afm;uA[((lC)>>2)]=Gm;uA[((amR)>>2)]=32}var Gl=uA[((amT)>>2)];X5=((j2)&4294967295);afl=Gl;anH=0;$bb3_i125$392:while(1){var Ga=X5;var F9=anH;var F8=((Ga+2*F9)&4294967295);var F7=uW[((F8)>>1)];var F6=iB((F7),16,0)!=0;if(!(F6)){VJ=342;break $bb3_i125$392}var Gk=X5;var Gj=anH;var Gh=((Gk+2*Gj)&4294967295);var Gg=xV[((Gh)>>1)];var Gf=oD((Gg),16,0);var Ge=afl;var Gd=(((Gf))|0)==(((Ge))|0);var Gc=anH;var Gb=(((Gc)+1)&4294967295);if(Gd){VJ=339;break $bb3_i125$392}anH=Gb;VJ=341;continue $bb3_i125$392}if(VJ==342){EY=0}else{if(VJ==339){EY=Gb}}var F5=EY;al6=F5;var ao6=al6;var F4=(((ao6))|0)!=0;var F0=oD((F4),1,0);UM=F0;var VO=iB((F0),8,0)!=0;if(VO){VJ=667;continue $bb340$12}var FZ=uA[((amT)>>2)];afk=FZ;var FY=afk;var FX=(((FY))>>>0)<=255;if(FX){VJ=346}else{VJ=345}$iswspace_exit136$$iswspace_exit136_thread$401:do{if(VJ==346){var FW=afk;var FV=xE(FW);EZ=FV;alJ=FV;var FU=(((FV))|0)!=0;if(!(FU)){VJ=353;break $iswspace_exit136$$iswspace_exit136_thread$401}var FT=NJ;var FS=((FT+280)&4294967295);var FR=uA[((FS)>>2)];var FP=(((FR))|0)==6972015;if(!(FP)){VJ=353;break $iswspace_exit136$$iswspace_exit136_thread$401}var FO=uA[((ako)>>2)];var FN=(((FO)-1)&4294967295);var FM=af6;var FL=((FM+FN)&4294967295);ahM=FL;var FK=ahM;var FJ=((FK)&4294967295);var FI=la[((FJ)>>0)];var FH=iB((FI),8,0)==105;if(!(FH)){VJ=353;break $iswspace_exit136$$iswspace_exit136_thread$401}var FG=ahM;var FE=((FG+-1)&4294967295);var FC=la[((FE)>>0)];var FB=iB((FC),8,0)==46;if(FB){VJ=350}else{VJ=351}if(VJ==350){var FA=ahM;var Fz=((FA+-1)&4294967295);ahM=Fz}var Fy=ahM;var Fw=((Fy+-1)&4294967295);var Fv=la[((Fw)>>0)];var Fu=iB((Fv),8,0)==32;if(Fu){VJ=352;break $bb340$12}}else{if(VJ==345){EZ=0;alJ=0}}}while(0);var AW=uA[((amT)>>2)];var AU=(((AW))|0)==3405;if(AU){ajs=353}else{ajs=353;VJ=357;break $bb130$$bb131$386}var AS=uA[((amR)>>2)];var AQ=(((AS))|0)==8205;if(!(AQ)){VJ=356;break $bb130$$bb131$386}uA[((amT)>>2)]=3406;afh=3406;var AO=afh;ajs=355;VJ=358;break $bb130$$bb131$386}}}while(0);$bb145thread_pre_split$$bb1_i141$$bb145$413:do{if(VJ==356){var UP=uA[((amT)>>2)];ajs=356;VJ=357;break $bb145thread_pre_split$$bb1_i141$$bb145$413}}while(0);$bb145$$bb1_i141$415:do{if(VJ==357){var AM=ajs==356?UP:(AW);afh=AM;var AK=(((AM))>>>0)<=255;var e=afh;if(AK){ajs=357}else{ajs=357;VJ=358;break $bb145$$bb1_i141$415}var ap8=tM(e);E0=ap8;alu=ap8;var ap6=(((ap8))|0)!=0;if(ap6){VJ=363;break $bb145$$bb1_i141$415}else{VJ=376;break $bb145$$bb1_i141$415}}}while(0);$bb146$$bb154$$bb1_i141$418:do{if(VJ==358){var aqw=ajs==355?AO:(e);var aqv=(((aqw))>>>0)>563;if(aqv){VJ=360}else{VJ=359}$iswupper_exit_thread477$$bb2_i143$420:do{if(VJ==359){var aqt=afh;var aqr=(((aqt)-256)&4294967295);var aqp=((xF+aqr)&4294967295);var aqn=ll[((aqp)>>0)];var aql=oD((aqn),8,0);G0=aql;var aqj=G0;var aqh=(((aqj))|0)==0;var aqb=G0;var aqa=(((aqb))|0)==255;var anI=(aqh)|(aqa);if(anI){VJ=360;break $iswupper_exit_thread477$$bb2_i143$420}KW=0;aiw=0;E0=1;alu=1;VJ=363;break $bb146$$bb154$$bb1_i141$418}}while(0);KW=1;aiw=1;E0=0;alu=0;VJ=376;break $bb146$$bb154$$bb1_i141$418}}while(0);$bb146$$bb154$424:do{if(VJ==363){var ap3=NJ;var ap1=((ap3+8304)&4294967295);var apZ=uA[((ap1)>>2)];var apX=(((apZ)+1)&4294967295);var apV=NJ;var apT=((apV+8304)&4294967295);uA[((apT)>>2)]=apX;var apN=uA[((wH)>>2)];var apM=(((apN))|0)==2;var apL=uA[((i6)>>2)];var apJ=(((apL))|0)==0;var Nu=(apM)&(apJ);if(!(Nu)){VJ=385;break $bb146$$bb154$424}var apH=ang;afg=apH;var apF=afg;var apD=(((apF))>>>0)<=255;var apB=afg;if(apD){VJ=369}else{VJ=365}if(VJ==369){var ape=tM(apB);E1=ape;ald=ape;var apc=(((ape))|0)==0;if(!(apc)){VJ=385;break $bb146$$bb154$424}}else{if(VJ==365){var apz=(((apB))>>>0)>563;if(apz){VJ=367}else{VJ=366}$iswupper_exit158_thread$$bb2_i154$430:do{if(VJ==366){var apx=afg;var aps=(((apx)-256)&4294967295);var apr=((xF+aps)&4294967295);var apq=ll[((apr)>>0)];var apo=oD((apq),8,0);apO=apo;var apm=apO;var apk=(((apm))|0)==0;var api=apO;var apg=(((api))|0)==255;var anF=(apk)|(apg);if(anF){VJ=367;break $iswupper_exit158_thread$$bb2_i154$430}KM=0;afj=0;E1=1;ald=1;VJ=385;break $bb146$$bb154$424}}while(0);KM=1;afj=1;E1=0;ald=0}}var ao5=NJ;ag3=ao5;Ux=((yM)&4294967295);adh=ZF;var ao4=Ux;uA[((adT)>>2)]=ao4;uA[((Zs)>>2)]=0;var ao3=uA[((Zq)>>2)];uA[((Zo)>>2)]=ao3;var ao2=ag3;var ao1=tN(ao2,adT,Zn,Zm,0,0);var ao0=(((ao1))|0)!=0;var aoZ=oD((ao0),1,0);EI=aoZ;var MB=iB((aoZ),8,0)!=0;if(MB){VJ=371}else{VJ=372}if(VJ==371){var aoY=ag3;m8(aoY,Zl,Zk,-1,0);dM(Zj,Zi);var aoX=adh;var aoV=qs(aoX,((rO)&4294967295),Zh);var aoU=adh;E2=aoU}else{if(VJ==372){E2=0}}var aoT=E2;akA=aoT;var PH=akA;var aoS=(PH)!=0;var aoR=oD((aoS),1,0);Uv=aoR;var Vr=iB((aoR),8,0)!=0;if(!(Vr)){VJ=385;break $bb146$$bb154$424}var aoP=oJ(Y4,Y2);var aoO=wg(Y0);ajt=aoO;var aoN=uA[((ako)>>2)];var aoM=ajt;var aoL=(((aoM)+(aoN))&4294967295);var aoK=aja;var aoF=(((aoL))|0)<(((aoK))|0);if(!(aoF)){VJ=385;break $bb146$$bb154$424}var aoE=uA[((ako)>>2)];var aoD=af6;var aoB=((aoD+aoE)&4294967295);var aoA=oJ(aoB,YZ);var aoz=uA[((ako)>>2)];var aoy=ajt;var aox=(((aoy)+(aoz))&4294967295);uA[((ako)>>2)]=aox}else{if(VJ==376){var aow=xk[((amT)>>2)];aeU=aow;var aov=(((aow))>>>0)<=255;var aor=aeU;if(aov){VJ=377}else{VJ=378}$bb_i167$$bb1_i169$442:do{if(VJ==377){var aoq=z6(aor);E3=aoq;ajs=377;VJ=383;break $bb_i167$$bb1_i169$442}else{if(VJ==378){var aop=(((aor))>>>0)>12352;var aoo=aeU;var aon=(((aoo))>>>0)<=42752;var anC=(aop)&(aon);if(anC){VJ=379}else{VJ=380}if(VJ==379){E3=1;akv=1;VJ=384;break $bb_i167$$bb1_i169$442}else{if(VJ==380){var aom=aeU;var aol=(((aom))>>>0)>563;if(aol){VJ=381}else{VJ=382}if(VJ==381){E3=0;akv=0;VJ=385;break $bb146$$bb154$424}else{if(VJ==382){var aok=aeU;var aoj=(((aok)-256)&4294967295);var aoi=((xF+aoj)&4294967295);var aog=ll[((aoi)>>0)];var aof=oD((aog),8,0);E3=aof;ajs=382;VJ=383;break $bb_i167$$bb1_i169$442}}}}}}}while(0);if(VJ==383){var aoe=ajs==377?aoq:(aof);akv=aoe;var aod=(((aoe))|0)!=0;if(!(aod)){VJ=385;break $bb146$$bb154$424}}var aoc=NJ;var aob=((aoc+8308)&4294967295);var aoa=uA[((aob)>>2)];var an9=(((aoa)+1)&4294967295);var an8=NJ;var an7=((an8+8308)&4294967295);uA[((an7)>>2)]=an9}}}while(0);var ams=uA[((te)>>2)];var amr=(((ams))|0)!=0;if(amr){VJ=386}else{VJ=395}$bb157$$bb165$455:do{if(VJ==386){var amp=ach;var amn=(((amp))|0)>0;if(amn){VJ=387}else{VJ=388}if(VJ==387){var aml=ach;var amj=(((aml)-1)&4294967295);ach=amj}else{if(VJ==388){var amh=uA[((amT)>>2)];var amf=(((amh))|0)!=91;if(amf){ajs=388;VJ=392}else{ajs=388;VJ=389}if(VJ==389){var amd=uA[((amR)>>2)];var amb=(((amd))|0)!=91;if(amb){VJ=391}else{VJ=390}if(VJ==391){var UN=uA[((amT)>>2)];ajs=391}else{if(VJ==390){ach=-1;VJ=395;break $bb157$$bb165$455}}}var al5=ajs==391?UN:(amh);var al4=(((al5))|0)==93;if(!(al4)){VJ=395;break $bb157$$bb165$455}var al2=uA[((amR)>>2)];var al0=(((al2))|0)==93;if(!(al0)){VJ=395;break $bb157$$bb165$455}ach=2}}}}while(0);var alW=uA[((amT)>>2)];var alU=(((alW))|0)==10;if(alU){VJ=396}else{VJ=420}if(VJ==396){MQ=0;while(1){var alH=uA[((lC)>>2)];var alF=(((alH))|0)!=0;if(alF){VJ=401}else{VJ=402}if(VJ==401){E4=0;aki=0}else{if(VJ==402){var alC=uA[((mb)>>2)];var alz=(alC)!=0;if(alz){VJ=403}else{VJ=404}if(VJ==403){var alx=uA[((mb)>>2)];var alv=aJ(alx);E4=alv;ajs=403}else{if(VJ==404){var YS=ll[((lO)>>0)];var als=oD((YS),1,0);E4=als;ajs=404}}var alq=ajs==403?alv:(als);aki=alq;var alo=(((alq))|0)!=0;if(alo){VJ=409;break}}}var all=xk[((amR)>>2)];aet=all;var alk=(((all))>>>0)<=255;if(!(alk)){VJ=407;break}var ali=aet;var alg=xE(ali);E5=alg;aj5=alg;var ale=(((alg))|0)==0;if(ale){VJ=409;break}Dr=1;Uj=1;var alS=uA[((amR)>>2)];var alQ=(((alS))|0)==10;if(alQ){VJ=398}else{VJ=399}if(VJ==398){var alO=MQ;var alM=(((alO)+1)&4294967295);MQ=alM}var alI=n5();uA[((amR)>>2)]=alI;VJ=400;continue}if(VJ==407){E5=0;aj5=0}Dr=0;Uj=0;var alb=MQ;var ak8=(((alb))|0)>0;if(ak8){VJ=410;break $bb340$12}var akj=uA[((u1)>>2)];var akh=E6;var akg=(((akh))|0)<=(((akj))|0);if(akg){VJ=418;break $bb340$12}E6=0}var aj3=J2;Em=aj3;J2=0;var aj2=ach;var aj1=(((aj2))|0)==0;var aj0=uA[((i6)>>2)];var ajO=(((aj0))|0)==0;var Nt=(aj1)&(ajO);if(Nt){VJ=421}else{VJ=643}$bb189$$bb313$492:do{if(VJ==421){ala=0;var ajN=ZD;var ajM=(((ajN))|0)!=0;if(ajM){VJ=422}else{VJ=434}$bb190$$bb199$494:do{if(VJ==422){var ajL=uA[((amT)>>2)];Ze=ajL;var ajK=Ze;var ajJ=(((ajK))>>>0)<=255;if(ajJ){VJ=424}else{VJ=423}if(VJ==424){var ajI=Ze;var ajH=xE(ajI);E8=ajH;aii=ajH;var ajG=(((ajH))|0)==0;if(!(ajG)){VJ=434;break $bb190$$bb199$494}}else{if(VJ==423){E8=0;aii=0}}var ajF=uA[((amT)>>2)];var ajD=kr(ajF);var ajC=(((ajD))|0)==0;if(ajC){VJ=432;break $bb340$12}var ajB=uA[((amT)>>2)];Y9=ajB;var ajA=Y9;var ajz=(((ajA))>>>0)<=255;var ajy=Y9;if(ajz){VJ=431}else{VJ=427}if(VJ==431){var ah3=t7(ajy);E9=ah3;aic=ah3;var ah1=(((ah3))|0)==0;if(ah1){VJ=432;break $bb340$12}}else{if(VJ==427){var ajx=(((ajy))>>>0)>563;if(ajx){VJ=429;break $bb340$12}var ajw=Y9;var ajv=(((ajw)-256)&4294967295);var aju=((xF+ajv)&4294967295);var ah6=la[((aju)>>0)];var ah5=iB((ah6),8,0)!=-1;if(ah5){VJ=429;break $bb340$12}E9=1;aic=1}}C0=0;TV=0;ZD=0}}while(0);var ahA=uA[((amT)>>2)];var ahy=(((ahA))|0)==46;if(ahy){VJ=435}else{VJ=441}$bb200$$bb208$508:do{if(VJ==435){var ahw=uA[((amR)>>2)];var ahu=(((ahw))|0)==46;if(!(ahu)){VJ=441;break $bb200$$bb208$508}var ahs=n5();ai5=ahs;var ahn=ai5;var ahm=(((ahn))|0)==46;var ahk=oD((ahm),1,0);TE=ahk;var Gi=iB((ahk),8,0)!=0;if(Gi){VJ=437}else{VJ=438}$bb202$$bb205$511:do{if(VJ==437){while(1){uA[((amT)>>2)]=8230;uA[((amR)>>2)]=32;var ahh=n5();ai5=ahh;var ahf=ai5;var ahd=(((ahf))|0)==46;var aha=oD((ahd),1,0);TE=aha;var O3=iB((aha),8,0)!=0;if(O3){VJ=437;continue}else{VJ=438;break $bb202$$bb205$511}}}}while(0);var ag8=uA[((amT)>>2)];var ag6=(((ag8))|0)==8230;var ag4=ai5;if(ag6){VJ=439}else{VJ=440}if(VJ==439){uA[((amR)>>2)]=ag4}else{if(VJ==440){YP=ag4;var ag0=YP;uA[((lC)>>2)]=ag0}}}}while(0);aeT=0;var agZ=uA[((amT)>>2)];PG=((k6)&4294967295);YE=agZ;ajd=0;$bb3_i226$519:while(1){var agD=PG;var agA=ajd;var agy=((agD+2*agA)&4294967295);var agw=uW[((agy)>>1)];var agu=iB((agw),16,0)!=0;if(!(agu)){VJ=446;break $bb3_i226$519}var agX=PG;var agV=ajd;var agT=((agX+2*agV)&4294967295);var agR=xV[((agT)>>1)];var agO=oD((agR),16,0);var agM=YE;var agK=(((agO))|0)==(((agM))|0);var agI=ajd;var agE=(((agI)+1)&4294967295);if(agK){VJ=443;break $bb3_i226$519}ajd=agE;VJ=445;continue $bb3_i226$519}if(VJ==446){Fa=0}else{if(VJ==443){Fa=agE}}var ags=Fa;ahK=ags;var akB=ahK;ant=akB;var agq=ant;var ago=(((agq))|0)!=0;var agm=oD((ago),1,0);TD=agm;var OT=iB((agm),8,0)!=0;if(OT){VJ=448}else{VJ=464}$bb210$$bb223$527:do{if(VJ==448){var agh=ant;var agg=((jp+agh*4)&4294967295);var agf=uA[((agg)>>2)];aeT=agf;var age=aeT;var agd=(age)&1048576;var agb=(((agd))|0)!=0;if(agb){VJ=449}else{VJ=450}if(VJ==449){MX=1;var aga=aeT;var af9=(((aga))|0)>>12;var af8=(af9)&15;var af7=RO;uA[((af7)>>2)]=af8;VJ=667;continue $bb340$12}else{if(VJ==450){var af4=uA[((amR)>>2)];Yq=af4;var af3=Yq;var af2=(((af3))>>>0)<=255;if(af2){VJ=452}else{VJ=451}$iswspace_exit237$$iswspace_exit237_thread$532:do{if(VJ==452){var af1=Yq;var af0=xE(af1);Fb=af0;aho=af0;var afZ=(((af0))|0)!=0;if(afZ){VJ=463;break $iswspace_exit237$$iswspace_exit237_thread$532}else{VJ=453;break $iswspace_exit237$$iswspace_exit237_thread$532}}else{if(VJ==451){Fb=0;aho=0;VJ=453;break $iswspace_exit237$$iswspace_exit237_thread$532}}}while(0);$bb222$$bb213$535:do{if(VJ==453){var afY=aeT;var afX=(afY)&32768;var afW=(((afX))|0)!=0;if(afW){VJ=463;break $bb222$$bb213$535}var afV=uA[((amR)>>2)];var afU=s7(afV);var afT=(((afU))|0)!=0;var afR=uA[((amR)>>2)];var afQ=(((afR))|0)==63;var Ns=(afT)|(afQ);if(Ns){VJ=463;break $bb222$$bb213$535}var afP=uA[((lC)>>2)];var afO=(((afP))|0)!=0;if(afO){VJ=456}else{VJ=457}if(VJ==456){Fc=0;ahc=0}else{if(VJ==457){var afN=uA[((mb)>>2)];var afM=(afN)!=0;if(afM){VJ=458}else{VJ=459}if(VJ==458){var afL=uA[((mb)>>2)];var afK=aJ(afL);Fc=afK;ajs=458}else{if(VJ==459){var RC=ll[((lO)>>0)];var afI=oD((RC),1,0);Fc=afI;ajs=459}}var afH=ajs==458?afK:(afI);ahc=afH;var afG=(((afH))|0)!=0;if(afG){VJ=463;break $bb222$$bb213$535}}}var afF=la[((ax)>>0)];var afE=iB((afF),8,0);var afD=uA[((amR)>>2)];var afC=(((afE))|0)==(((afD))|0);if(afC){VJ=463;break $bb222$$bb213$535}CN=0;Tx=0;VJ=464;break $bb210$$bb223$527}}while(0);CN=1;Tx=1;ala=1}}}}while(0);var afB=uA[((amT)>>2)];var afA=(((afB))|0)==57404;if(afA){VJ=465}else{VJ=466}if(VJ==465){uA[((amT)>>2)]=60}var afz=uA[((iW)>>2)];var afx=(((afz))|0)!=0;if(afx){VJ=467}else{VJ=537}$bb226$$bb238$553:do{if(VJ==467){var afw=uA[((amT)>>2)];X2=afw;var afv=X2;var afu=(((afv))>>>0)<=255;if(afu){VJ=469}else{VJ=468}if(VJ==469){var aft=X2;var afs=ne(aft);Fd=afs;agQ=afs;var afr=(((afs))|0)!=0;if(!(afr)){VJ=537;break $bb226$$bb238$553}var C8=ll[((mI)>>0)];var afp=oD((C8),1,0);var afo=(((afp))|0)==0;if(!(afo)){VJ=537;break $bb226$$bb238$553}var afn=uA[((iW)>>2)];var acf=(((afn))|0)==1;if(acf){VJ=479}else{VJ=472}$bb234$$bb229$559:do{if(VJ==472){var ace=uA[((amT)>>2)];CO=((nT)&4294967295);Xv=ace;while(1){var abY=CO;var abW=uA[((abY)>>2)];var abQ=(((abW))|0)!=0;if(!(abQ)){VJ=476;break}var acc=CO;var ab9=uA[((acc)>>2)];var ab6=Xv;var ab4=(((ab9))|0)==(((ab6))|0);var ab2=CO;if(ab4){VJ=477;break}var ab0=((ab2+4)&4294967295);CO=ab0;VJ=475;continue}if(VJ==476){Fe=0;agC=0}else{if(VJ==477){Fe=ab2;agC=ab2;var abP=(ab2)!=0;if(abP){VJ=479;break $bb234$$bb229$559}}}anN=0;MW=0;VJ=537;break $bb226$$bb238$553}}while(0);anN=1;MW=1;var abN=NJ;var abL=((abN+652)&4294967295);uA[((abL)>>2)]=0;var abJ=uA[((amT)>>2)];var abH=NJ;var abG=af6;var abE=ala;akc=abH;G8=abJ;FF=amR;R2=abG;YR=ako;N9=abE;adC=0;var abC=FF;var abA=uA[((abC)>>2)];Vj=abA;la[((YY)>>0)]=0;var abv=G8;UV=abv;Xz=4;$bb6_i_i$570:while(1){var aaP=uA[((lP)>>2)];var aaI=Xz;var aaH=(((aaI))|0)<(((aaP))|0);if(!(aaH)){VJ=487;break $bb6_i_i$570}var abu=Xz;var abt=((y+abu*16)&4294967295);var abr=((abt)&4294967295);var abo=uA[((abr)>>2)];var abm=UV;var abj=(((abo))|0)==(((abm))|0);var abh=Xz;if(abj){VJ=481;break $bb6_i_i$570}var aaR=(((abh)+1)&4294967295);Xz=aaR;VJ=486;continue $bb6_i_i$570}$bb7_i_i$$bb1_i_i$574:do{if(VJ==487){Fg=-1}else{if(VJ==481){var abf=((y+abh*16)&4294967295);var abd=((abf+4)&4294967295);var aa6=uA[((abd)>>2)];var aa5=(((aa6))|0)==0;if(aa5){VJ=482}else{VJ=484}$bb2_i_i270$$bb4_i_i272$577:do{if(VJ==482){var aa3=Xz;var aa1=Q(0,aa3);var aaZ=(((aa1))|0)!=0;var aaX=oD((aaZ),1,0);T2=aaX;var aaV=T2;var Ps=iB((aaV),8,0)!=0;if(!(Ps)){VJ=484;break $bb2_i_i270$$bb4_i_i272$577}Fg=-1;VJ=488;break $bb7_i_i$$bb1_i_i$574}}while(0);var aaT=Xz;Fg=aaT}}}while(0);var aaG=Fg;W0=aaG;var Hw=W0;L0=Hw;var aaE=L0;var aaC=(((aaE))|0)>=0;var aaA=oD((aaC),1,0);Go=aaA;var aoQ=iB((aaA),8,0)!=0;if(aoQ){VJ=489}else{VJ=490}$bb31_thread_i$$bb1_i275$582:do{if(VJ==489){var aay=L0;var aaw=qs(YX,((jO)&4294967295),aay);var aau=Vj;anR=aau;var aas=anR;uA[((lC)>>2)]=aas;adC=1;VJ=514;break $bb31_thread_i$$bb1_i275$582}else{if(VJ==490){var aan=akc;var aam=G8;var aal=re(aan,aam,0);aoI=aal;var aak=aoI;var aaj=(aak)!=0;var aai=oD((aaj),1,0);adj=aai;var aag=adj;var Dy=iB((aag),8,0)!=0;if(Dy){VJ=491}else{VJ=512}$bb3_i276$$bb31_i$585:do{if(VJ==491){adC=1;var aaf=YR;var aae=uA[((aaf)>>2)];var aad=(((aae))|0)==0;if(aad){VJ=494}else{VJ=492}$bb6_i279$$bb4_i277$587:do{if(VJ==492){var aab=N9;var aaa=(((aab))|0)==0;if(aaa){VJ=494;break $bb6_i279$$bb4_i277$587}var Z9=akc;var Z8=((Z9)&4294967295);var Z6=((Z8+24)&4294967295);var Z5=((Z6+68)&4294967295);var Z4=uA[((Z5)>>2)];var Z3=(Z4)&2;var Z2=(((Z3))|0)!=0;if(Z2){VJ=494;break $bb6_i279$$bb4_i277$587}var S4=Vj;UW=S4;var S2=UW;uA[((lC)>>2)]=S2;var S0=uA[((rM)>>2)];var SY=(((S0))|0)!=0;if(SY){VJ=509}else{VJ=511}$bb27_i294$$bb30_i296$591:do{if(VJ==509){var ST=G8;var SR=(((ST))|0)==60;var SQ=G8;var SO=(((SQ))|0)==38;var EW=(SR)|(SO);if(!(EW)){VJ=511;break $bb27_i294$$bb30_i296$591}var SL=G8;uA[((zx)>>2)]=SL}}while(0);var SJ=G8;uA[((f)>>2)]=SJ;la[((YH)>>0)]=32;la[((YG)>>0)]=0;VJ=512;break $bb3_i276$$bb31_i$585}}while(0);JZ=1;var Z1=Vj;var ZZ=G8;var ZY=(((Z1))|0)==(((ZZ))|0);var ZX=G8;var ZW=(((ZX))|0)!=60;var TR=(ZY)&(ZW);if(TR){VJ=495}else{VJ=496}$bb7_i281$$bb10_i282$596:do{if(VJ==495){while(1){var ZU=JZ;var ZT=(((ZU)+1)&4294967295);JZ=ZT;var ZS=n5();Vj=ZS;var ZR=Vj;var ZP=G8;var ZN=(((ZR))|0)==(((ZP))|0);var ZC=G8;var ZA=(((ZC))|0)!=60;var ai6=(ZN)&(ZA);if(ai6){VJ=495;continue}else{VJ=496;break $bb7_i281$$bb10_i282$596}}}}while(0);var Zz=FF;var Zy=Vj;uA[((Zz)>>2)]=Zy;var Zx=N9;var Zw=(((Zx))|0)!=0;if(Zw){VJ=497}else{VJ=498}if(VJ==497){var Zv=Vj;M0=Zv;var Zu=M0;uA[((lC)>>2)]=Zu}var Zr=JZ;var Zp=(((Zr))|0)==1;if(Zp){VJ=499}else{VJ=500}if(VJ==499){var Zd=aoI;var Zc=qs(YU,((rJ)&4294967295),Zd)}else{if(VJ==500){var Zb=JZ;var Za=(((Zb))|0)<=3;if(Za){VJ=501}else{VJ=507}if(VJ==501){la[((YT)>>0)]=0;var Y8=uA[((((aI+8)&4294967295))>>2)];var Y7=(((Y8))|0)<=299;if(Y7){VJ=502}else{VJ=503}if(VJ==502){ns(YO,((zv)&4294967295),6,1,0)}var Y6=JZ;var Y5=(((Y6))|0)>0;var Y3=oD((Y5),1,0);UT=Y3;var Y1=JZ;var TC=(((Y1)-1)&4294967295);JZ=TC;if(Y5){VJ=504}else{VJ=505}$bb18_i289$$bb21_i290$611:do{if(VJ==504){while(1){var TB=aoI;var Tz=qs(YN,((rJ)&4294967295),TB);var Tw=sU(YM,YL);var Tu=JZ;var Ts=(((Tu))|0)>0;var Tq=oD((Ts),1,0);UT=Tq;var To=JZ;var Tm=(((To)-1)&4294967295);JZ=Tm;var anu=iB((Tq),8,0)!=0;if(anu){VJ=504;continue}else{VJ=505;break $bb18_i289$$bb21_i290$611}}}}while(0);var Tk=uA[((((aI+8)&4294967295))>>2)];var Tg=(((Tk))|0)<=299;if(!(Tg)){VJ=512;break $bb3_i276$$bb31_i$585}ns(YK,((ov)&4294967295),7,1,0);var Tf=sU(YJ,YI)}else{if(VJ==507){var Td=aoI;var Tb=JZ;var S8=aoI;var S6=qs(YT,((v6)&4294967295),Td,Tb,S8)}}}}}}while(0);var MP=adC;var SH=(((MP))|0)==0;if(!(SH)){VJ=514;break $bb31_thread_i$$bb1_i275$582}Ff=-1;VJ=534;break $bb31_thread_i$$bb1_i275$582}}}while(0);$bb33_i298$$_ZL19AnnouncePunctuationP10TranslatoriPiPcS1_i_exit$619:do{if(VJ==514){var SF=YR;var SD=uA[((SF)>>2)];ajc=SD;var SB=wg(YW);alB=SB;var Sx=YR;var Sw=uA[((Sx)>>2)];var Su=R2;var Ss=((Su+Sw)&4294967295);var Sq=oJ(Ss,YV);var So=YR;var Sm=uA[((So)>>2)];var Sk=alB;var Sh=(((Sk)+(Sm))&4294967295);var Sf=YR;uA[((Sf)>>2)]=Sh;var Sa=N9;var R9=(((Sa))|0)==0;if(R9){VJ=515}else{VJ=516}if(VJ==515){Ff=-1}else{if(VJ==516){var R8=G8;var R6=(((R8))|0)==45;if(R6){VJ=517}else{VJ=518}if(VJ==517){Ff=16384}else{if(VJ==518){var R4=G8;aeF=((k6)&4294967295);ajj=R4;ai8=0;$bb3_i11_i$627:while(1){var RJ=aeF;var RI=ai8;var RH=((RJ+2*RI)&4294967295);var RG=uW[((RH)>>1)];var RF=iB((RG),16,0)!=0;if(!(RF)){VJ=523;break $bb3_i11_i$627}var R1=aeF;var RY=ai8;var RW=((R1+2*RY)&4294967295);var RU=xV[((RW)>>1)];var RS=oD((RU),16,0);var RN=ajj;var RM=(((RS))|0)==(((RN))|0);var RL=ai8;var RK=(((RL)+1)&4294967295);if(RM){VJ=520;break $bb3_i11_i$627}ai8=RK;VJ=522;continue $bb3_i11_i$627}if(VJ==523){Fj=0}else{if(VJ==520){Fj=RK}}var RE=Fj;C9=RE;var UE=C9;var RB=((jp+UE*4)&4294967295);var RA=uA[((RB)>>2)];In=RA;akY=262148;var Rz=In;var Ry=(Rz)&28672;var Rx=(((Ry))|0)==4096;if(Rx){VJ=525}else{VJ=526}if(VJ==525){akY=266244}var Rw=ajc;var Rv=(((Rw))|0)>0;if(Rv){VJ=527}else{VJ=531}$bb40_i305$$bb44_i309$638:do{if(VJ==527){var Ru=akc;var Rt=((Ru)&4294967295);var Rs=((Rt+24)&4294967295);var Rr=((Rs+68)&4294967295);var Rq=uA[((Rr)>>2)];var Rp=(Rq)&2;var Ro=(((Rp))|0)==0;if(!(Ro)){VJ=531;break $bb40_i305$$bb44_i309$638}var Rn=In;var Rm=(Rn)&-32769;var Rl=(((Rm))|0)==266270;if(Rl){VJ=529}else{VJ=530}if(VJ==529){Ff=262148;VJ=534;break $bb33_i298$$_ZL19AnnouncePunctuationP10TranslatoriPiPcS1_i_exit$619}else{if(VJ==530){var Rj=akY;Ff=Rj;VJ=534;break $bb33_i298$$_ZL19AnnouncePunctuationP10TranslatoriPiPcS1_i_exit$619}}}}while(0);var Rh=In;var Rf=(Rh)&524288;var Q5=(((Rf))|0)!=0;if(Q5){VJ=532}else{VJ=533}if(VJ==532){var Q4=In;Ff=Q4}else{if(VJ==533){var Q3=akY;Ff=Q3}}}}}}}}while(0);var Q2=Ff;agc=Q2;var anL=agc;aiT=anL;var Q1=aiT;var Q0=(((Q1))|0)>=0;var QZ=oD((Q0),1,0);MV=QZ;var NZ=iB((QZ),8,0)!=0;if(NZ){VJ=535;break $bb340$12}var QV=uA[((amT)>>2)];J2=QV}else{if(VJ==468){Fd=0;agQ=0}}}}while(0);var QT=aeT;var QL=(QT)&2097152;var QK=(((QL))|0)!=0;if(QK){VJ=538}else{VJ=541}$bb239$$bb242$652:do{if(VJ==538){var QJ=J2;var QI=(((QJ))|0)==0;if(!(QI)){VJ=541;break $bb239$$bb242$652}var QH=uA[((ako)>>2)];var QG=af6;var QF=((QG+QH)&4294967295);ajp=QF;var QD=uA[((amT)>>2)];var QB=NJ;var Qz=re(QB,QD,1);var LO=ajp;var LN=oJ(LO,Qz);var LL=ajp;var LJ=((LL)&4294967295);var LH=la[((LJ)>>0)];var LF=iB((LH),8,0)!=0;if(!(LF)){VJ=541;break $bb239$$bb242$652}var LD=ajp;var LB=wg(LD);var Lz=uA[((ako)>>2)];var Lx=(((Lz)+(LB))&4294967295);uA[((ako)>>2)]=Lx;var Ls=uA[((amT)>>2)];J2=Ls;var Lr=aeT;var Lp=(Lr)&-28673;aeT=Lp}}while(0);var Ln=ala;var Ll=(((Ln))|0)!=0;if(!(Ll)){VJ=643;break $bb189$$bb313$492}adc=0;var Lj=uA[((amR)>>2)];ai5=Lj;var Lh=ai5;Qr=Lh;var Lf=Qr;var Ld=(((Lf))>>>0)<=255;if(Ld){VJ=544}else{VJ=543}$iswspace_exit319$$iswspace_exit319_thread$658:do{if(VJ==544){var Lb=Qr;var K7=xE(Lb);Fk=K7;acb=K7;var K6=(((K7))|0)!=0;if(!(K6)){VJ=558;break $iswspace_exit319$$iswspace_exit319_thread$658}while(1){var KT=uA[((lC)>>2)];var KR=(((KT))|0)!=0;if(KR){VJ=549}else{VJ=550}if(VJ==549){Fl=0;abR=0}else{if(VJ==550){var KP=uA[((mb)>>2)];var KL=(KP)!=0;if(KL){VJ=551}else{VJ=552}if(VJ==551){var KK=uA[((mb)>>2)];var KI=aJ(KK);Fl=KI;ajs=551}else{if(VJ==552){var Kq=ll[((lO)>>0)];var KG=oD((Kq),1,0);Fl=KG;ajs=552}}var KE=ajs==551?KI:(KG);abR=KE;var KC=(((KE))|0)!=0;if(KC){VJ=557;break}}}var KA=ai5;Qd=KA;var Ky=(((KA))>>>0)<=255;if(!(Ky)){VJ=555;break}var Kw=Qd;var Ku=xE(Kw);Fm=Ku;abw=Ku;var Ko=(((Ku))|0)==0;if(Ko){VJ=557;break}anK=1;MU=1;var K4=ai5;var K2=(((K4))|0)==10;if(K2){VJ=546}else{VJ=547}if(VJ==546){var K0=adc;var KY=(((K0)+1)&4294967295);adc=KY}var KV=n5();ai5=KV;VJ=548;continue}if(VJ==555){Fm=0;abw=0}anK=0;MU=0}else{if(VJ==543){Fk=0;acb=0}}}while(0);var Kn=uA[((amT)>>2)];var Kl=(((Kn))|0)==46;if(Kl){VJ=559}else{VJ=561}$bb255$$bb257$680:do{if(VJ==559){var Kj=adc;var Kh=(((Kj))|0)<=1;if(!(Kh)){VJ=621;break $bb255$$bb257$680}var Kf=aeT;var Kd=(Kf)|4194304;aeT=Kd;VJ=561;break $bb255$$bb257$680}}while(0);$bb257$$bb295$683:do{if(VJ==561){var UL=adc;var Kb=(((UL))|0)==0;if(!(Kb)){VJ=621;break $bb257$$bb295$683}var J9=xk[((amT)>>2)];var J7=(((J9))|0)==44;if(J7){ajs=562;VJ=563}else{ajs=562;VJ=579}$bb259$$bb265$686:do{if(VJ==563){var J4=ang;var J3=(((J4))|0)==46;if(J3){VJ=564}else{VJ=578}$bb260$$bb265thread_pre_split$688:do{if(VJ==564){var J1=NJ;var J0=((J1+280)&4294967295);var JY=uA[((J0)>>2)];var JX=(((JY))|0)==26741;if(!(JX)){VJ=578;break $bb260$$bb265thread_pre_split$688}var JW=ae5;P2=JW;var JV=P2;var JU=(((JV))>>>0)<=255;if(JU){VJ=567}else{VJ=566}if(VJ==567){var JT=P2;var JQ=(((JT)-48)&4294967295);var JP=(((JQ))>>>0)<=9;var JO=oD((JP),1,0);Fn=JO;abl=JO;var JN=(((JO))|0)!=0;if(!(JN)){VJ=578;break $bb260$$bb265thread_pre_split$688}var JM=ai5;PF=JM;var JL=PF;var JK=(((JL))>>>0)<=255;if(JK){VJ=570}else{VJ=569}$iswdigit_exit348$$iswdigit_exit348_thread$694:do{if(VJ==570){var JJ=PF;var JI=(((JJ)-48)&4294967295);var JH=(((JI))>>>0)<=9;var JF=oD((JH),1,0);Fo=JF;aa4=JF;var JE=(((JF))|0)!=0;if(JE){VJ=577;break $iswdigit_exit348$$iswdigit_exit348_thread$694}else{VJ=571;break $iswdigit_exit348$$iswdigit_exit348_thread$694}}else{if(VJ==569){Fo=0;aa4=0;VJ=571;break $iswdigit_exit348$$iswdigit_exit348_thread$694}}}while(0);$bb265_thread$$bb263$697:do{if(VJ==571){var JD=ai5;PD=JD;var JC=(((JD))>>>0)<=255;if(JC){VJ=576}else{VJ=572}if(VJ==576){var Jj=t7(JD);Fp=Jj;aaK=Jj;var Ji=(((Jj))|0)!=0;if(!(Ji)){VJ=578;break $bb260$$bb265thread_pre_split$688}}else{if(VJ==572){var JB=(((JD))>>>0)>563;if(JB){VJ=574}else{VJ=573}$iswlower_exit358_thread488$$bb2_i353$702:do{if(VJ==573){var JA=PD;var Jz=(((JA)-256)&4294967295);var Jx=((xF+Jz)&4294967295);var Jv=la[((Jx)>>0)];var Jt=iB((Jv),8,0)!=-1;if(Jt){VJ=574;break $iswlower_exit358_thread488$$bb2_i353$702}Fp=1;aaK=1;VJ=577;break $bb265_thread$$bb263$697}}while(0);Fp=0;aaK=0;VJ=578;break $bb260$$bb265thread_pre_split$688}}}}while(0);uA[((amT)>>2)]=1367;ala=0;VJ=615;break $bb259$$bb265$686}else{if(VJ==566){Fn=0;abl=0}}}}while(0);var UK=uA[((amT)>>2)];ajs=578;VJ=579;break $bb259$$bb265$686}}while(0);$bb288$$bb265$709:do{if(VJ==579){var Jh=ajs==578?UK:(J9);var Jg=(((Jh))|0)==46;if(!(Jg)){VJ=615;break $bb288$$bb265$709}var Jf=NJ;var Je=((Jf)&4294967295);var Jd=((Je+184)&4294967295);var Jb=uA[((Jd)>>2)];var I8=(Jb)&65536;var I5=(((I8))|0)==0;if(I5){VJ=603}else{VJ=581}$bb281$$bb267$712:do{if(VJ==581){var IX=ang;Pg=IX;var IW=Pg;var IV=(((IW))>>>0)<=255;if(IV){VJ=583}else{VJ=582}$iswdigit_exit365$$iswdigit_exit365_thread$714:do{if(VJ==583){var IU=Pg;var IS=(((IU)-48)&4294967295);var IR=(((IS))>>>0)<=9;var IQ=oD((IR),1,0);Fq=IQ;aao=IQ;var IO=(((IQ))|0)!=0;if(IO){VJ=591;break $iswdigit_exit365$$iswdigit_exit365_thread$714}else{VJ=584;break $iswdigit_exit365$$iswdigit_exit365_thread$714}}else{if(VJ==582){Fq=0;aao=0;VJ=584;break $iswdigit_exit365$$iswdigit_exit365_thread$714}}}while(0);if(VJ==584){var IM=ang;OS=IM;var IK=OS;var DM=(((IK))|0)==73;var DL=OS;var DK=(((DL))|0)==86;var adU=(DM)|(DK);var DJ=OS;var DI=(((DJ))|0)==88;var ajo=(adU)|(DI);var DH=OS;var DG=(((DH))|0)==76;var ajn=(ajo)|(DG);if(ajn){VJ=586}else{VJ=585}if(VJ==586){Fr=1;aah=1;var DF=ae5;Ov=DF;var DE=Ov;var DD=(((DE))|0)==73;var DC=Ov;var DB=(((DC))|0)==86;var adI=(DD)|(DB);var DA=Ov;var Dz=(((DA))|0)==88;var ajm=(adI)|(Dz);var Dx=Ov;var Dw=(((Dx))|0)==76;var anx=(ajm)|(Dw);if(anx){VJ=587}else{VJ=588}if(VJ==587){Fs=1;Z7=1}else{if(VJ==588){Fs=0;Z7=0;var Dv=ae5;N8=Dv;var Du=N8;var Dt=(((Du))>>>0)<=255;if(Dt){VJ=590}else{VJ=589}if(VJ==590){var Ds=N8;var Do=xE(Ds);ajP=Do;ZV=Do;var Dn=(((Do))|0)!=0;if(!(Dn)){VJ=603;break $bb281$$bb267$712}}else{if(VJ==589){ajP=0;ZV=0;VJ=603;break $bb281$$bb267$712}}}}}else{if(VJ==585){Fr=0;aah=0;VJ=603;break $bb281$$bb267$712}}}anJ=1;MS=1;var Dm=ang;NW=Dm;var Dl=(((Dm))>>>0)<=255;if(Dl){VJ=593}else{VJ=592}$iswdigit_exit397$$iswdigit_exit397_thread$729:do{if(VJ==593){var Dk=NW;var Dj=(((Dk)-48)&4294967295);var Di=(((Dj))>>>0)<=9;var Dh=oD((Di),1,0);ajQ=Dh;ZB=Dh;var Dg=(((Dh))|0)==0;if(Dg){VJ=594;break $iswdigit_exit397$$iswdigit_exit397_thread$729}var Df=ai5;NV=Df;var Dd=NV;var Dc=(((Dd))>>>0)<=255;var Db=NV;if(Dc){VJ=596}else{VJ=597}$bb_i400$$bb1_i401$732:do{if(VJ==596){var Da=t7(Db);ajR=Da}else{if(VJ==597){var C7=(((Db))>>>0)>563;if(C7){VJ=599}else{VJ=598}$bb3_i403$$bb2_i402$735:do{if(VJ==598){var C5=NV;var C4=(((C5)-256)&4294967295);var C3=((xF+C4)&4294967295);var C2=la[((C3)>>0)];var C1=iB((C2),8,0)!=-1;if(C1){VJ=599;break $bb3_i403$$bb2_i402$735}ajR=1;VJ=601;break $bb_i400$$bb1_i401$732}}while(0);ajR=0}}}while(0);var CZ=ajR;Zt=CZ;var aa7=Zt;var CY=(((aa7))|0)!=0;var CX=ai5;var CW=(((CX))|0)==45;var Nh=(CY)|(CW);if(Nh){ajs=601}else{ajs=601;VJ=606;break $bb281$$bb267$712}ala=0;VJ=605;break $bb281$$bb267$712}else{if(VJ==592){ajQ=0;ZB=0}}}while(0);ala=0;VJ=605;break $bb281$$bb267$712}}while(0);$bb281$$bb283thread_pre_split$$bb283$743:do{if(VJ==603){anJ=0;MS=0;var CV=ai5;var CU=(((CV))|0)==39;if(CU){ajs=603}else{ajs=603;VJ=606;break $bb281$$bb283thread_pre_split$$bb283$743}ala=0;VJ=605;break $bb281$$bb283thread_pre_split$$bb283$743}}while(0);if(VJ==605){var Uy=ai5;ajs=605}var CT=ajs==605?Uy:(ajs==601?CX:(CV));IT=CT;var CS=(((CT))>>>0)<=255;if(CS){VJ=611}else{VJ=607}$iswlower_exit417$$bb1_i411$749:do{if(VJ==611){var CI=t7(CT);ajS=CI;TN=CI;var CH=(((CI))|0)!=0;if(CH){VJ=612;break $iswlower_exit417$$bb1_i411$749}else{VJ=613;break $iswlower_exit417$$bb1_i411$749}}else{if(VJ==607){var CR=(((CT))>>>0)>563;if(CR){VJ=609}else{VJ=608}$iswlower_exit417_thread492$$bb2_i412$752:do{if(VJ==608){var CQ=IT;var CM=(((CQ)-256)&4294967295);var CL=((xF+CM)&4294967295);var CK=la[((CL)>>0)];var CJ=iB((CK),8,0)!=-1;if(CJ){VJ=609;break $iswlower_exit417_thread492$$bb2_i412$752}ajS=1;TN=1;VJ=612;break $iswlower_exit417$$bb1_i411$749}}while(0);ajS=0;TN=0;VJ=613;break $iswlower_exit417$$bb1_i411$749}}}while(0);if(VJ==612){ala=0}var CG=Md;var CF=(((CG))|0)==0;if(!(CF)){VJ=617;break $bb288$$bb265$709}uA[((amT)>>2)]=32;ala=0;VJ=633;break $bb257$$bb295$683}}while(0);$bb288$$bb290$760:do{if(VJ==615){var CE=Md;var CD=(((CE))|0)==0;if(!(CD)){VJ=617;break $bb288$$bb290$760}ala=0;VJ=633;break $bb257$$bb295$683}}while(0);var Uw=ala;var CB=(((Uw))|0)!=0;if(!(CB)){VJ=633;break $bb257$$bb295$683}var CA=uA[((amT)>>2)];var Cz=(((CA))|0)==46;if(!(Cz)){VJ=621;break $bb257$$bb295$683}var Cy=ai5;var Cx=(((Cy))|0)==60;var Cw=uA[((rM)>>2)];var Cv=(((Cw))|0)!=0;var Ng=(Cx)&(Cv);if(!(Ng)){VJ=621;break $bb257$$bb295$683}ala=0;var Cu=uA[((ako)>>2)];anw=Cu;var Ct=aeT;ZD=Ct;VJ=633;break $bb257$$bb295$683}}while(0);if(VJ==621){var af5=ala;var Cs=(((af5))|0)!=0;if(Cs){VJ=622;break $bb340$12}}var aff=uA[((lC)>>2)];var afe=(((aff))|0)!=0;if(afe){VJ=634}else{VJ=635}if(VJ==634){ajU=0}else{if(VJ==635){var afd=uA[((mb)>>2)];var afc=(afd)!=0;if(afc){VJ=636}else{VJ=637}if(VJ==636){var afb=uA[((mb)>>2)];var afa=aJ(afb);ajU=afa}else{if(VJ==637){var CP=ll[((lO)>>0)];var ae9=oD((CP),1,0);ajU=ae9}}}}var ae8=ajU;Ta=ae8;var an6=Ta;var ae7=(((an6))|0)==0;var ae6=oD((ae7),1,0);MM=ae6;var G1=iB((ae6),8,0)!=0;if(!(G1)){VJ=643;break $bb189$$bb313$492}var ae4=uA[((amR)>>2)];Id=ae4;var ae3=Id;var ae2=(((ae3))>>>0)<=255;if(ae2){VJ=641}else{VJ=640}if(VJ==641){var ae1=Id;var ae0=xE(ae1);ajV=ae0;SM=ae0;var aeZ=(((ae0))|0)!=0;if(!(aeZ)){VJ=643;break $bb189$$bb313$492}var aeY=ai5;HS=aeY;var aeX=HS;uA[((lC)>>2)]=aeX}else{if(VJ==640){ajV=0;SM=0}}}}while(0);var aeW=uA[((((An)&4294967295))>>2)];var aeV=(((aeW))|0)==1;if(aeV){VJ=667;continue $bb340$12}var aeS=xk[((amT)>>2)];var aeR=J2;var aeQ=(((aeS))|0)==(((aeR))|0);if(aeQ){VJ=645}else{VJ=650}$bb315$$bb320$784:do{if(VJ==645){var aeO=uA[((amT)>>2)];var aeN=s7(aeO);var aeL=(((aeN))|0)!=0;var aeK=oD((aeL),1,0);MA=aeK;var aeJ=MA;var GN=iB((aeJ),8,0)!=0;if(GN){VJ=646}else{VJ=647}$bb317$$bb318$786:do{if(VJ==646){uA[((amT)>>2)]=57384}else{if(VJ==647){var aeI=uA[((amT)>>2)];var aeH=(((aeI))|0)!=45;if(!(aeH)){VJ=649;break $bb317$$bb318$786}uA[((amT)>>2)]=32}}}while(0);var aeE=uA[((ako)>>2)];var aeD=(((aeE)+1)&4294967295);ajt=aeD}else{if(VJ==650){var aeC=uA[((ako)>>2)];var aeB=(((aeC)+1)&4294967295);ajt=aeB;var aeA=(((aeS))|0)==57404;if(!(aeA)){VJ=652;break $bb315$$bb320$784}uA[((amT)>>2)]=60}}}while(0);var aez=uA[((ako)>>2)];var aey=af6;var aex=((aey+aez)&4294967295);var aew=uA[((amT)>>2)];var aev=zD(aew,aex);var aes=uA[((ako)>>2)];var aer=(((aes)+(aev))&4294967295);uA[((ako)>>2)]=aer;var aeq=xk[((amT)>>2)];HR=aeq;var aep=(((aeq))>>>0)<=255;if(aep){VJ=654}else{VJ=653}$iswspace_exit449$$iswspace_exit449_thread$794:do{if(VJ==654){var aeo=HR;var aen=xE(aeo);ajW=aen;Sv=aen;var aem=(((aen))|0)!=0;if(aem){VJ=656;break $iswspace_exit449$$iswspace_exit449_thread$794}else{VJ=655;break $iswspace_exit449$$iswspace_exit449_thread$794}}else{if(VJ==653){ajW=0;Sv=0;VJ=655;break $iswspace_exit449$$iswspace_exit449_thread$794}}}while(0);$bb326$$bb323$797:do{if(VJ==655){var ael=uA[((amT)>>2)];var aek=s7(ael);var aei=(((aek))|0)!=0;if(aei){VJ=656;break $bb326$$bb323$797}anB=1;Mp=1;var aef=uA[((ako)>>2)];var aee=uA[((dT)>>2)];var aed=(((aee))&65535);var aec=uA[((cg)>>2)];var aeb=(((aec))&65535);var aea=(((aed)-(aeb))&65535);var ad9=ajZ;var ad8=((ad9+2*aef)&4294967295);uW[((ad8)>>1)]=aea;var ad7=uA[((ako)>>2)];var ad6=ajt;var ad4=(((ad6))|0)<(((ad7))|0);if(!(ad4)){VJ=659;break $bb326$$bb323$797}while(1){var ad3=ajZ;var ad2=ajt;var ad1=((ad3+2*ad2)&4294967295);uW[((ad1)>>1)]=-1;var ad0=ajt;var adZ=(((ad0)+1)&4294967295);ajt=adZ;var adY=uA[((ako)>>2)];var adX=ajt;var adW=(((adX))|0)<(((adY))|0);if(adW){VJ=658;continue}else{VJ=659;break $bb326$$bb323$797}}}}while(0);if(VJ==656){anB=0;Mp=0}var adV=uA[((ako)>>2)];var adS=VP;uA[((adS)>>2)]=adV;var adR=aja;var adQ=(((adR)-20)&4294967295);var adP=uA[((ako)>>2)];var adO=(((adQ))|0)>=(((adP))|0);if(adO){VJ=664}else{VJ=660}$bb334$$bb332$805:do{if(VJ==660){var adN=uA[((amT)>>2)];var adM=kr(adN);var adL=(((adM))|0)!=0;if(adL){VJ=664;break $bb334$$bb332$805}var adK=uA[((amT)>>2)];Hv=adK;var adJ=Hv;var adH=(((adJ))>>>0)<=255;if(!(adH)){VJ=662;break $bb340$12}var adG=Hv;var adF=(((adG)-48)&4294967295);var adE=(((adF))>>>0)<=9;var adD=oD((adE),1,0);ajX=adD;Sb=adD;var adB=(((adD))|0)==0;if(adB){VJ=666;break $bb340$12}}}while(0);var adA=aja;var adz=(((adA)-2)&4294967295);var adx=uA[((ako)>>2)];var adw=(((adz))|0)<=(((adx))|0);if(adw){VJ=666;break $bb340$12}anA=0;Mc=0;VJ=667;continue $bb340$12}$bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811:do{if(VJ==11){la[((lO)>>0)]=1;Ev=589864;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==14){la[((xA)>>0)]=1;uA[((C)>>2)]=0;var Yi=uA[((amR)>>2)];ad5=Yi;var Yg=ad5;uA[((lC)>>2)]=Yg;Ev=16384;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==213){var T4=DN;MR=T4;var T3=uA[((wD)>>2)];var T1=((s9+T3*64)&4294967295);Qf=T1;var T0=(((T3))|0)<=18;if(T0){VJ=214}else{VJ=215}if(VJ==214){var TZ=uA[((wD)>>2)];var TY=(((TZ)+1)&4294967295);uA[((wD)>>2)]=TY}var TT=Qf;var TS=((TT)&4294967295);var TQ=MR;uA[((TS)>>2)]=TQ;adv=0;$bb2_i61_i$818:while(1){var TP=adv;var TO=Qf;var TM=((TO+4)&4294967295);var TL=((TM+TP*4)&4294967295);uA[((TL)>>2)]=-1;var TI=adv;var TH=(((TI)+1)&4294967295);adv=TH;var TG=(((TH))|0)<=14;if(TG){VJ=216;continue $bb2_i61_i$818}else{VJ=217;break $bb2_i61_i$818}}var TA=Qf;EQ=TA;var Ty=EQ;aac=Ty;var Ex=aac;GK=Ex;var Tv=Vx;var Tt=zO(Tv,((yd)&4294967295));aik=Tt;var Tr=aik;var Tp=(Tr)!=0;var Tn=oD((Tp),1,0);abq=Tn;var Tl=abq;var afJ=iB((Tl),8,0)!=0;if(afJ){VJ=218}else{VJ=228}$bb67_i$$bb80_i$821:do{if(VJ==218){var Tj=((am8)&4294967295);var Ti=aik;var Te=ef(Tj,Ti,80);var Tc=uA[((iF)>>2)];var S9=(Tc)==0;if(S9){VJ=219}else{VJ=225}if(VJ==219){var S7=uA[((kO)>>2)];var S5=(S7)==0;if(S5){VJ=222}else{VJ=220}$bb71_i$$bb69_i$825:do{if(VJ==220){var S3=((am8)&4294967295);var S1=la[((S3)>>0)];var SZ=iB((S1),8,0)==47;if(SZ){VJ=222;break $bb71_i$$bb69_i$825}var SX=uA[((kO)>>2)];var SW=((X4)&4294967295);var SP=((am8)&4294967295);var SN=qs(SW,((fY)&4294967295),SX,SP);var SK=((X4)&4294967295);var SI=zq(SK);ajq=SI;ajs=221;VJ=223;break $bb71_i$$bb69_i$825}}while(0);if(VJ==222){var SG=((am8)&4294967295);var SE=zq(SG);ajq=SE;ajs=222}var SC=ajs==222?SE:(SI);var SA=(((SC))|0)>=0;if(!(SA)){VJ=228;break $bb67_i$$bb80_i$821}var Sz=((am8)&4294967295);var Sy=ajq;var St=qs(Sz,((nR)&4294967295),1,Sy);var Sr=FQ;var Sp=uA[((Sr)>>2)];var Sn=VL;var Sl=((Sn+Sp)&4294967295);var Si=((am8)&4294967295);var Sg=oJ(Sl,Si);var Se=FQ;var Sd=uA[((Se)>>2)];var Sc=((am8)&4294967295);var R7=wg(Sc);var R5=(((R7)+(Sd))&4294967295);var R3=FQ;uA[((R3)>>2)]=R5;var R0=GK;var RX=((R0+4)&4294967295);var RV=((RX)&4294967295);uA[((RV)>>2)]=1}else{if(VJ==225){var RT=((am8)&4294967295);var RR=gw(RT,0);ajq=RR;var RQ=ajq;var RP=(((RQ))|0)>=0;var MN=oD((RP),1,0);aeP=MN;var ML=aeP;var ajE=iB((ML),8,0)!=0;if(!(ajE)){VJ=228;break $bb67_i$$bb80_i$821}var MK=uA[((bj)>>2)];var MJ=ajq;var MI=((MK+MJ)&4294967295);act=MI;var MH=uA[((iF)>>2)];var MG=uA[((kO)>>2)];var MF=act;var ME=lB[MH](1,MF,MG);var MD=(((ME))|0)==0;var Mz=oD((MD),1,0);OA=Mz;var My=OA;var Zg=iB((My),8,0)!=0;if(!(Zg)){VJ=228;break $bb67_i$$bb80_i$821}var Mx=((am8)&4294967295);var Mw=ajq;var Mv=qs(Mx,((vz)&4294967295),1,Mw);var Mu=FQ;var Mt=uA[((Mu)>>2)];var Ms=VL;var Mr=((Ms+Mt)&4294967295);var Mq=((am8)&4294967295);var Mo=oJ(Mr,Mq);var Mn=FQ;var Mm=uA[((Mn)>>2)];var Ml=((am8)&4294967295);var Mk=wg(Ml);var Mj=(((Mk)+(Mm))&4294967295);var Mi=FQ;uA[((Mi)>>2)]=Mj;var Mh=GK;var Mg=((Mh+4)&4294967295);var Me=((Mg)&4294967295);uA[((Me)>>2)]=1}}}}while(0);var Mb=VL;var Ma=FQ;sP(Mb,Ma);var L9=anV;var L8=(((L9))|0)!=0;if(L8){VJ=229}else{VJ=230}if(VJ==229){var L7=DN;var L6=VL;var L5=FQ;aZ(L7,L6,L5)}else{if(VJ==230){la[((mI)>>0)]=1}}EE=16384;ajs=231;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==262){EE=262174;ajs=262;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==232){var L4=DN;var L3=VL;var L2=FQ;aZ(L4,L3,L2);la[((mI)>>0)]=0;EE=16384;ajs=232;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==210){la[((xA)>>0)]=1;la[((((nW)&4294967295))>>0)]=0;EE=16384;ajs=210;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==250){EE=147456;ajs=250;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==253){EE=147456;ajs=253;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==277){EE=524358;ajs=277;VJ=279;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==290){VZ=((k6)&4294967295);FD=Po;De=0;while(1){var O1=VZ;var OZ=De;var OX=((O1+2*OZ)&4294967295);var OQ=uW[((OX)>>1)];var OP=iB((OQ),16,0)!=0;if(!(OP)){VJ=295;break}var Pm=VZ;var Pk=De;var Pf=((Pm+2*Pk)&4294967295);var Pe=xV[((Pf)>>1)];var Pc=oD((Pe),16,0);var Pa=FD;var O8=(((Pc))|0)==(((Pa))|0);var O6=De;var O4=(((O6)+1)&4294967295);if(O8){VJ=292;break}De=O4;VJ=294;continue}if(VJ==295){ER=0}else{if(VJ==292){ER=O4}}var ON=ER;anT=ON;var SU=anT;ant=SU;var OL=ant;var OJ=(((OL))|0)==0;var OH=oD((OJ),1,0);ab7=OH;var VK=iB((OH),8,0)!=0;if(VK){VJ=297}else{VJ=298}if(VJ==297){var OF=uA[((ako)>>2)];var OD=uA[((dT)>>2)];var OB=(((OD))&65535);var Oy=uA[((cg)>>2)];var Ou=(((Oy))&65535);var Ot=(((OB)-(Ou))&65535);var Or=ajZ;var Op=((Or+2*OF)&4294967295);uW[((Op)>>1)]=Ot;var On=uA[((ako)>>2)];var Ol=VP;uA[((Ol)>>2)]=On;var Oj=uA[((ako)>>2)];var Oh=af6;var Of=((Oh+Oj)&4294967295);var Od=uA[((amT)>>2)];var N7=zD(Od,Of);var N6=uA[((ako)>>2)];var N5=(((N6)+(N7))&4294967295);uA[((ako)>>2)]=N5;aiT=524328}else{if(VJ==298){var N4=ant;var N3=((jp+N4*4)&4294967295);var N2=uA[((N3)>>2)];aiT=N2}}var N1=uA[((ako)>>2)];var N0=af6;var NY=((N0+N1)&4294967295);la[((NY)>>0)]=32;var NX=uA[((ako)>>2)];var NU=(((NX)+1)&4294967295);var NT=af6;var NS=((NT+NU)&4294967295);la[((NS)>>0)]=0;var NR=aiT;Ev=NR;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==303){var NH=uA[((ako)>>2)];var NG=af6;var NF=((NG+NH)&4294967295);la[((NF)>>0)]=0;var NE=(((NH)+1)&4294967295);uA[((ako)>>2)]=NE;while(1){var Nq=n5();uA[((amT)>>2)]=Nq;Fi=Nq;var Np=(((Nq))>>>0)<=255;if(Np){VJ=307}else{VJ=306}if(VJ==307){var No=Fi;var Nn=xE(No);ES=Nn;anQ=Nn;var Nm=(((Nn))|0)!=0;if(Nm){VJ=315;break}}else{if(VJ==306){ES=0;anQ=0}}var Nl=uA[((lC)>>2)];var Nk=(((Nl))|0)!=0;if(Nk){VJ=309}else{VJ=310}if(VJ==309){ET=0;anM=0}else{if(VJ==310){var Nj=uA[((mb)>>2)];var Ni=(Nj)!=0;if(Ni){VJ=311}else{VJ=312}if(VJ==311){var Nb=uA[((mb)>>2)];var Na=aJ(Nb);ET=Na;ajs=311}else{if(VJ==312){var aoG=ll[((lO)>>0)];var M9=oD((aoG),1,0);ET=M9;ajs=312}}var M8=ajs==311?Na:(M9);anM=M8;var M7=(((M8))|0)!=0;if(M7){VJ=315;break}}}var M6=aja;var M5=(((M6)-1)&4294967295);var M4=uA[((ako)>>2)];var M3=(((M5))|0)<=(((M4))|0);if(M3){VJ=315;break}El=1;UU=1;var ND=uA[((ako)>>2)];var NC=uA[((amT)>>2)];var NB=(((NC))&255);var NA=af6;var Nz=((NA+ND)&4294967295);la[((Nz)>>0)]=NB;var Nr=(((ND)+1)&4294967295);uA[((ako)>>2)]=Nr;VJ=305;continue}El=0;UU=0;var M1=uA[((ako)>>2)];var Ic=af6;var Ib=((Ic+M1)&4294967295);la[((Ib)>>0)]=0;var H9=(((M1)+1)&4294967295);uA[((ako)>>2)]=H9;Ev=147456;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==352){uA[((aA)>>2)]=((yQ)&4294967295);var Ft=uA[((amR)>>2)];afi=Ft;var A0=afi;uA[((lC)>>2)]=A0;var AZ=ahM;var AX=((AZ)&4294967295);la[((AX)>>0)]=0;Ev=524328;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==410){var ak6=uA[((amR)>>2)];aeg=ak6;var ak4=aeg;uA[((lC)>>2)]=ak4;var ak1=ZD;var akW=(((ak1))|0)!=0;if(akW){VJ=411}else{VJ=412}if(VJ==411){var akV=af6;var akT=anw;var akR=((akV+akT)&4294967295);Iq=akR;var akP=Iq;adg=Vy;NK=akP;var akN=adg;var akL=NK;var akJ=F(akN,akL,0);E7=akJ;var akH=E7;aeh=akH;var OW=aeh;var akF=Iq;ud(akF,32,OW,1,0)}var akz=uA[((ako)>>2)];var aky=af6;var akx=((aky+akz)&4294967295);la[((akx)>>0)]=32;var akw=uA[((ako)>>2)];var aku=(((akw)+1)&4294967295);var akt=af6;var aks=((akt+aku)&4294967295);la[((aks)>>0)]=0;var akr=MQ;var akq=(((akr))|0)>3;if(akq){VJ=413}else{VJ=414}if(VJ==413){MQ=3}var akp=uA[((rM)>>2)];var akn=(((akp))|0)!=0;if(akn){VJ=415}else{VJ=416}if(VJ==415){MQ=1}var akm=MQ;var akl=(((akm)*30)&4294967295);var akk=(((akl)+524328)&4294967295);Ev=akk;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==418){var akf=uA[((amR)>>2)];Zf=akf;var ake=Zf;uA[((lC)>>2)]=ake;var akd=uA[((ako)>>2)];var akb=af6;var aj9=((akb+akd)&4294967295);la[((aj9)>>0)]=32;var aj8=uA[((ako)>>2)];var aj7=(((aj8)+1)&4294967295);var aj6=af6;var aj4=((aj6+aj7)&4294967295);la[((aj4)>>0)]=0;Ev=262174;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==429){E9=0;aic=0;VJ=432;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==535){var QX=aiT;Ev=QX;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==622){var Cr=ai5;IC=Cr;var Cq=IC;uA[((lC)>>2)]=Cq;var Cp=uA[((ako)>>2)];var Co=af6;var Cn=((Co+Cp)&4294967295);la[((Cn)>>0)]=32;var Cm=uA[((ako)>>2)];var Cl=(((Cm)+1)&4294967295);var Cj=af6;var Ch=((Cj+Cl)&4294967295);la[((Ch)>>0)]=0;var Cf=ang;IB=Cf;var B0=IB;var BZ=(((B0))>>>0)<=255;if(BZ){VJ=624}else{VJ=623}$iswdigit_exit425$$iswdigit_exit425_thread$891:do{if(VJ==624){var BY=IB;var BX=(((BY)-48)&4294967295);var BW=(((BX))>>>0)<=9;var BV=oD((BW),1,0);ajT=BV;Th=BV;var BU=(((BV))|0)==0;if(BU){VJ=626;break $iswdigit_exit425$$iswdigit_exit425_thread$891}var BS=ai5;var BQ=kr(BS);var BO=(((BQ))|0)!=0;if(BO){VJ=626;break $iswdigit_exit425$$iswdigit_exit425_thread$891}anG=1;MO=1;var BG=aeT;var BF=(BG)&-4194305;aeT=BF;VJ=628;break $iswdigit_exit425$$iswdigit_exit425_thread$891}else{if(VJ==623){ajT=0;Th=0;VJ=626;break $iswdigit_exit425$$iswdigit_exit425_thread$891}}}while(0);if(VJ==626){anG=0;MO=0}var BE=adc;var BD=(((BE))|0)>1;var BC=aeT;if(BD){VJ=629}else{VJ=632}if(VJ==629){var BB=(((BC))|0)==532520;var BA=aeT;var By=(((BA))|0)==536621;var Ne=(BB)|(By);if(Ne){VJ=630}else{VJ=631}if(VJ==630){var Bw=aeT;var Bu=(((Bw)+35)&4294967295);Ev=Bu;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==631){Ev=524358;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}}}else{if(VJ==632){Ev=BC;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}}}else{if(VJ==662){ajX=0;Sb=0;VJ=666;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}else{if(VJ==673){L1=0;adi=0;var W7=MX;var W5=(((W7))|0)!=0;if(W5){VJ=674}else{VJ=675}if(VJ==674){var W4=uA[((ako)>>2)];var W3=af6;var W2=((W3+W4)&4294967295);var W1=zD(1328,W2);var WN=uA[((ako)>>2)];var WK=(((WN)+(W1))&4294967295);uA[((ako)>>2)]=WK}var WH=ZD;var WD=(((WH))|0)!=0;if(WD){VJ=676}else{VJ=677}if(VJ==676){var WB=af6;var Wz=anw;var Wy=((WB+Wz)&4294967295);anv=Wy;var Ww=anv;anD=U8;TK=Ww;var Wv=anD;var Wu=TK;var Wh=F(Wv,Wu,0);Ew=Wh;var We=Ew;ai4=We;var amu=ai4;var Wb=anv;ud(Wb,32,amu,1,0)}var V8=uA[((ako)>>2)];var V6=af6;var V4=((V6+V8)&4294967295);la[((V4)>>0)]=32;var V3=uA[((ako)>>2)];var V2=(((V3)+1)&4294967295);var V1=af6;var V0=((V1+V2)&4294967295);la[((V0)>>0)]=0;Ev=589864;VJ=678;break $bb10$$bb13$$bb65_i$$bb122_i$$bb84_i$$bb60_i$$bb107_i$$bb111_i$$bb137_i$$bb87$$bb96$$bb104$$bb141$$bb177$$bb185$$bb197$$iswlower_exit_thread$$bb236$$bb296$$iswdigit_exit456_thread$$bb339$$bb348$811}}}}}}}}}}}}}}}}}}}}while(0);$bb353$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread$$bb87$$bb197$$bb339$913:do{if(VJ==279){var aoH=ajs==210?16384:(ajs==231?16384:(ajs==232?16384:(ajs==250?147456:(ajs==253?147456:(ajs==262?262174:(524358))))));anU=aoH;aiT=aoH;VJ=282;break $bb353$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread$$bb87$$bb197$$bb339$913}else{if(VJ==432){C0=1;TV=1;var ahZ=uA[((amR)>>2)];YQ=ahZ;var ahX=YQ;uA[((lC)>>2)]=ahX;var ahV=uA[((amT)>>2)];uA[((f)>>2)]=ahV;var ahT=af6;var ahR=anw;var ahP=((ahT+ahR)&4294967295);la[((ahP)>>0)]=32;var ahJ=anw;var ahI=(((ahJ)+1)&4294967295);var ahG=af6;var ahE=((ahG+ahI)&4294967295);la[((ahE)>>0)]=0;var ahC=ZD;Ev=ahC;VJ=678;break $bb353$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread$$bb87$$bb197$$bb339$913}else{if(VJ==666){anA=1;Mc=1;var adu=uA[((ako)>>2)];var adt=af6;var ads=((adt+adu)&4294967295);la[((ads)>>0)]=32;var adr=uA[((ako)>>2)];var adq=(((adr)+1)&4294967295);var adp=af6;var ado=((adp+adq)&4294967295);la[((ado)>>0)]=0;var adn=uA[((amR)>>2)];Hu=adn;var adm=Hu;uA[((lC)>>2)]=adm;Ev=16384;VJ=678;break $bb353$$_ZL14ProcessSsmlTagPwPcRiii_exit_thread$$bb87$$bb197$$bb339$913}}}}while(0);if(VJ==282){var U3=ZD;var U2=(((U3))|0)!=0;if(U2){VJ=283}else{VJ=284}if(VJ==283){var U1=anw;uA[((ako)>>2)]=U1}var U0=uA[((ako)>>2)];var UZ=af6;var UY=((UZ+U0)&4294967295);la[((UY)>>0)]=32;var P1=uA[((ako)>>2)];var P0=af6;var PY=((P0+P1)&4294967295);la[((PY)>>0)]=0;var PW=(((P1)+1)&4294967295);uA[((ako)>>2)]=PW;var PU=aiT;var PS=(PU)&131072;var PQ=(((PS))|0)!=0;if(PQ){VJ=285}else{VJ=286}if(VJ==285){var PO=Ph;var PM=oJ(PO,((pW)&4294967295))}var PK=aiT;Ev=PK}var VR=Ev;OR=VR;var MC=OR;vp=UX;return MC;return null}function jF(AK){var Cb;var CZ=null;var Cw;var DB;var AR;var Cx;var DA;var Bx;var DM;var Dg;var A9;var Bi;AR=AK;uA[((((bX+28)&4294967295))>>2)]=0;uA[((((bX+24)&4294967295))>>2)]=450;uA[((((bX+16)&4294967295))>>2)]=110;uA[((((bX+20)&4294967295))>>2)]=100;uA[((((bX+8)&4294967295))>>2)]=5;var D6=uA[((((aI+8)&4294967295))>>2)];DM=D6;var D5=AR;var D4=(((D5))|0)==2;if(D4){Cb=1}else{Cb=2}if(Cb==1){var D3=uA[((((aI+32)&4294967295))>>2)];DM=D3}var D2=DM;A9=D2;var D1=uA[((k5)>>2)];var D0=((D1+64)&4294967295);var DZ=uA[((D0)>>2)];var DY=(((DZ))|0)>0;if(DY){Cb=3}else{Cb=4}if(Cb==3){var DX=uA[((k5)>>2)];var C5=((DX+64)&4294967295);var C3=uA[((C5)>>2)];var C1=DM;var C0=(((C1)*(C3))&4294967295);var CY=(((((C0))|0)/100)|0);DM=CY}var CX=AR;var CW=(CX)&2;var CV=(((CW))|0)!=0;if(CV){Cb=5}else{Cb=7}$bb4$$bb5$8:do{if(Cb==5){DB=1024;var CU=uA[((t3)>>2)];var CT=((v0+CU*16)&4294967295);var CJ=((CT)&4294967295);uA[((CJ)>>2)]=15;var CH=uA[((t3)>>2)];var CF=((v0+CH*16)&4294967295);var CE=((CF+4)&4294967295);var CD=DB;uA[((CE)>>2)]=CD;var CC=uA[((t3)>>2)];var CB=(((CC)+1)&4294967295);uA[((t3)>>2)]=CB;var CA=(((CB))|0)>159;if(!(CA)){Cb=7;break $bb4$$bb5$8}uA[((t3)>>2)]=0}}while(0);var Cz=A9;var Cy=(((Cz))|0)>450;if(Cy){Cb=11}else{Cb=8}$bb8$$bb6$12:do{if(Cb==8){var Cn=uA[((((bX+32)&4294967295))>>2)];var Cl=A9;var Cj=(((Cn))|0)>=(((Cl))|0);var AQ=DM;if(Cj){Cb=17}else{Cb=9}$bb13$$bb7$14:do{if(Cb==17){var AT=(((AQ))|0)>450;if(AT){CZ=17}else{CZ=17;Cb=19;break $bb13$$bb7$14}DM=450;Cb=20;break $bb13$$bb7$14}else{if(Cb==9){var Ci=(((AQ))|0)>350;if(Ci){Cb=11;break $bb8$$bb6$12}var AO=DM;CZ=10;Cb=19;break $bb13$$bb7$14}}}while(0);$bb16$$bb15$19:do{if(Cb==19){var AS=CZ==10?AO:(AQ);var AP=(((AS))|0)>360;if(AP){Cb=20;break $bb16$$bb15$19}else{Cb=21;break $bb16$$bb15$19}}}while(0);if(Cb==20){var AJ=DM;var AI=(((AJ)-360)&4294967295);var AH=(((((AI))|0)/8)|0);uA[((((bX+28)&4294967295))>>2)]=AH}var i=DM;Dg=i;var e=(((i))|0)>359;if(e){CZ=21;Cb=22}else{CZ=21;Cb=23}if(Cb==22){Dg=359;var AN=DM;CZ=22}var Eb=CZ==22?AN:(i);var Ea=(((Eb))|0)<=79;if(Ea){Cb=24}else{Cb=25}if(Cb==24){Dg=80}var D9=Dg;var D8=(((D9)-80)&4294967295);var D7=((iN+D8)&4294967295);var DW=ll[((D7)>>0)];var DV=oD((DW),8,0);DA=DV;var DU=DM;var DT=(((DU))|0)>379;if(DT){Cb=26}else{Cb=28}$bb23$$bb25$30:do{if(Cb==26){DA=7;var AM=DM;var DS=(((AM))|0)>399;if(!(DS)){Cb=28;break $bb23$$bb25$30}DA=6}}while(0);var DR=AR;var DQ=(DR)&1;var DP=(((DQ))&255);var Dp=iB((DP),8,0)!=0;if(Dp){Cb=29}else{Cb=31}$bb27$$bb29$34:do{if(Cb==29){var DO=uA[((k5)>>2)];var DN=((DO+52)&4294967295);var DL=uA[((DN)>>2)];var DK=DA;var DJ=(((DK)*(DL))&4294967295);var DI=(((((DJ))|0)/256)|0);uA[((ua)>>2)]=DI;var DH=uA[((k5)>>2)];var DG=((DH+56)&4294967295);var DF=uA[((DG)>>2)];var DE=DA;var DD=(((DE)*(DF))&4294967295);var DC=(((((DD))|0)/256)|0);uA[((t9)>>2)]=DC;var Dz=uA[((k5)>>2)];var Dy=((Dz+60)&4294967295);var Dx=uA[((Dy)>>2)];var Dw=DA;var Dv=(((Dw)*(Dx))&4294967295);var Du=(((((Dv))|0)/256)|0);uA[((t8)>>2)]=Du;var Dt=DA;var Ds=(((Dt))|0)<=7;if(!(Ds)){Cb=31;break $bb27$$bb29$34}var Dr=DA;uA[((ua)>>2)]=Dr;var Dq=DA;var Do=(((Dq)-1)&4294967295);uA[((t8)>>2)]=Do;var Dn=uA[((t8)>>2)];uA[((t9)>>2)]=Dn}}while(0);var Dm=AR;var Dl=(Dm)&2;var Dk=(((Dl))|0)!=0;if(!(Dk)){Cb=54;break $bb8$$bb6$12}var Dj=DM;var Di=(((Dj))|0)>350;var Dh=DM;if(Di){Cb=33}else{Cb=34}$bb31$$bb32$39:do{if(Cb==33){var Df=(((Dh)-350)&4294967295);var De=(((((Df))|0)/3)|0);var Dd=((85-(De))&4294967295);uA[((((bX+16)&4294967295))>>2)]=Dd;var Dc=DM;var Db=(((Dc)-350)&4294967295);var Da=(((((Db))|0)/8)|0);var C9=((60-(Da))&4294967295);uA[((((bX+20)&4294967295))>>2)]=C9}else{if(Cb==34){var C8=(((Dh))|0)>250;if(!(C8)){Cb=36;break $bb31$$bb32$39}var C7=DM;var C6=(((C7)-250)&4294967295);var C4=(((((C6))|0)/4)|0);var C2=((110-(C4))&4294967295);uA[((((bX+16)&4294967295))>>2)]=C2;var CS=DM;var CR=(((CS)-250)&4294967295);var CQ=(((((CR))|0)/2)|0);var CP=((110-(CQ))&4294967295);uA[((((bX+20)&4294967295))>>2)]=CP}}}while(0);var CO=uA[((k5)>>2)];var CN=((CO+52)&4294967295);var CM=uA[((CN)>>2)];var CK=DA;var CI=(((CK)*(CM))&4294967295);var CG=(((((CI))|0)/256)|0);Bx=CG;var Cv=DM;var Cu=(((Cv))|0)>169;var Ct=Bx;if(Cu){Cb=37}else{Cb=38}if(Cb==37){var Cs=(((Ct)*150)&4294967295);var Cr=(((((Cs))|0)/128)|0);var Cq=(((Cr)+110)&4294967295);uA[((((bX+12)&4294967295))>>2)]=Cq}else{if(Cb==38){var Cp=(((Ct)*128)&4294967295);var Co=(((((Cp))|0)/130)|0);var Cm=(((Co)+128)&4294967295);uA[((((bX+12)&4294967295))>>2)]=Cm}}var Ck=DM;var Ca=(((Ck))|0)>349;if(Ca){Cb=40}else{Cb=43}$bb39$$bb42$48:do{if(Cb==40){var B9=DM;var B8=(((B9)-350)&4294967295);var B7=((wQ+B8)&4294967295);var B6=ll[((B7)>>0)];var B5=oD((B6),8,0);uA[((((bX+12)&4294967295))>>2)]=B5;var AL=DM;var B4=(((AL))|0)>389;if(!(B4)){Cb=43;break $bb39$$bb42$48}var B3=DM;var B2=(((B3)-400)&4294967295);var B0=(((((B2))|0)/2)|0);var BP=((450-(B0))&4294967295);uA[((((bX+24)&4294967295))>>2)]=BP;var BO=DM;var BN=(((BO))|0)>440;if(!(BN)){Cb=43;break $bb39$$bb42$48}var BM=DM;var BL=((860-(BM))&4294967295);uA[((((bX+24)&4294967295))>>2)]=BL}}while(0);var BK=Bx;var BJ=(((BK)*256)&4294967295);var BI=(((((BJ))|0)/115)|0);uA[((((bX)&4294967295))>>2)]=BI;uA[((((bX+4)&4294967295))>>2)]=0;var BH=DM;var BF=(((BH))|0)>430;if(BF){Cb=44}else{Cb=45}$bb43$$bb44$53:do{if(Cb==44){uA[((((bX)&4294967295))>>2)]=12}else{if(Cb==45){var Bu=DM;var Bt=(((Bu))|0)>400;if(Bt){Cb=46}else{Cb=47}if(Cb==46){uA[((((bX)&4294967295))>>2)]=13}else{if(Cb==47){var Bs=DM;var Br=(((Bs))|0)>374;if(Br){Cb=48}else{Cb=49}if(Cb==48){uA[((((bX)&4294967295))>>2)]=14}else{if(Cb==49){var Bq=DM;var Bp=(((Bq))|0)>350;if(!(Bp)){Cb=51;break $bb43$$bb44$53}var Bo=DM;var Bn=(((Bo)-350)&4294967295);var Bm=((wR+Bn)&4294967295);var Bk=ll[((Bm)>>0)];var A8=oD((Bk),8,0);uA[((((bX)&4294967295))>>2)]=A8}}}}}}}while(0);var A7=uA[((((bX+4)&4294967295))>>2)];var A6=(((A7))|0)==0;if(!(A6)){Cb=54;break $bb8$$bb6$12}var A5=uA[((((bX)&4294967295))>>2)];uA[((((bX+4)&4294967295))>>2)]=A5;var A4=uA[((((bX+4)&4294967295))>>2)];var A3=(((A4))|0)<=15;var A2=oD((A3),1,0);Cx=A2;var A1=Cx;var CL=iB((A1),8,0)!=0;if(!(CL)){Cb=54;break $bb8$$bb6$12}uA[((((bX+4)&4294967295))>>2)]=16;Cb=54;break $bb8$$bb6$12}}while(0);$bb8$$return$66:do{if(Cb==11){var Ch=DM;Dg=Ch;DM=175;DA=73;var Cg=AR;var Cf=(Cg)&1;var Ce=(((Cf))&255);var BQ=iB((Ce),8,0)!=0;if(BQ){Cb=12}else{Cb=13}if(Cb==12){var Cd=uA[((k5)>>2)];var Cc=((Cd+52)&4294967295);var B1=uA[((Cc)>>2)];var BZ=DA;var BY=(((BZ)*(B1))&4294967295);var BX=(((((BY))|0)/256)|0);uA[((ua)>>2)]=BX;var BW=uA[((k5)>>2)];var BV=((BW+56)&4294967295);var BU=uA[((BV)>>2)];var BT=DA;var BS=(((BT)*(BU))&4294967295);var BR=(((((BS))|0)/256)|0);uA[((t9)>>2)]=BR;var BG=uA[((k5)>>2)];var BE=((BG+60)&4294967295);var BD=uA[((BE)>>2)];var BC=DA;var BB=(((BC)*(BD))&4294967295);var BA=(((((BB))|0)/256)|0);uA[((t8)>>2)]=BA}var Bz=AR;var By=(Bz)&2;var Bw=(((By))|0)!=0;if(!(Bw)){Cb=54;break $bb8$$return$66}var Bv=Dg;var Bl=(((Bv))|0);var Bj=DM;var Bh=(((Bj))|0);var Bg=(Bl)/(Bh);Bi=Bg;var Bf=Bi;var Be=(Bf)*1024;var Bd=(((Be))|0);Cw=Bd;var Bc=uA[((t3)>>2)];var Bb=((v0+Bc*16)&4294967295);var Ba=((Bb)&4294967295);uA[((Ba)>>2)]=15;var A0=uA[((t3)>>2)];var AZ=((v0+A0*16)&4294967295);var AY=((AZ+4)&4294967295);var AX=Cw;uA[((AY)>>2)]=AX;var AW=uA[((t3)>>2)];var AV=(((AW)+1)&4294967295);uA[((t3)>>2)]=AV;var AU=(((AV))|0)>159;if(AU){Cb=15}else{Cb=16}if(Cb==15){uA[((t3)>>2)]=0}uA[((((bX)&4294967295))>>2)]=85;uA[((((bX+4)&4294967295))>>2)]=80;uA[((((bX+8)&4294967295))>>2)]=22;uA[((((bX+24)&4294967295))>>2)]=900;uA[((((bX+12)&4294967295))>>2)]=211;uA[((((bX+16)&4294967295))>>2)]=210;uA[((((bX+20)&4294967295))>>2)]=170}}while(0);return;return}function l7(Be){var B6=vp;vp+=252;n1(B6,0,252);var Bd;var NS=null;var QU;var Iy;var D8;var B5;var A1;var Qe;var Cs=B6;var Je;var Oy;var Ie;var BJ;var BK;var Ev;var Cr;var Nb;var ET;var Oo;var On;var Di;var CX;var Dq;var IZ;var AM;var LY;var Hh;var NR;var Fd;var K9;var Ht;var Ey;var P3=B6+96;var Kw;var Na;var Ge;var Bb;var e;var MZ=B6+100;Ie=Be;AM=0;LY=0;Hh=0;uA[((P3)>>2)]=0;e=0;Ev=1;var D6=uA[((xn)>>2)];var D5=Ev;var D4=(((D5))|0)<(((D6))|0);if(D4){Bd=1}else{Bd=201}$bb_lr_ph$$return$2:do{if(Bd==1){var D3=((Cs)&4294967295);var D2=D3;var D0=((Cs+24)&4294967295);var DY=((D0)&4294967295);var DW=((Cs+24)&4294967295);var DU=((DW+8)&4294967295);var H6=((Cs+48)&4294967295);var H5=((H6+6)&4294967295);var H4=((Cs+24)&4294967295);var H3=((MZ+124)&4294967295);$bb$4:while(1){var H2=Ev;var H1=(((H2)-1)&4294967295);var H0=((eW+H1*24)&4294967295);Nb=H0;var HZ=Ev;var HY=((eW+HZ*24)&4294967295);Di=HY;var HX=Di;var HM=((HX+1)&4294967295);var HL=ll[((HM)>>0)];var HK=oD((HL),8,0);var HJ=(HK)&7;Dq=HJ;var HI=Di;var HH=((HI+1)&4294967295);var HG=ll[((HH)>>0)];var HF=oD((HG),8,0);var HE=(HF)&8;Ge=HE;var HD=Ev;var Hr=(((HD)+1)&4294967295);var Hq=((eW+Hr*24)&4294967295);ET=Hq;var Hp=Di;var Ho=((Hp+4)&4294967295);var Hn=xV[((Ho)>>1)];var Hm=oD((Hn),16,0);var Hl=(Hm)&2;var Hk=(((Hl))|0)!=0;if(Hk){Bd=3}else{Bd=7}$bb1$$bb2$6:do{if(Bd==3){Je=P3;while(1){var Hj=Je;var Hi=uA[((Hj)>>2)];var GW=((p6+Hi*4)&4294967295);var GV=uA[((GW)>>2)];Oy=GV;var GU=(((Hi)+1)&4294967295);var GT=Je;uA[((GT)>>2)]=GU;var GS=Oy;var GR=(GS)&31;var GQ=(((GR))|0)==2;if(GQ){Bd=5}else{Bd=6}if(Bd==5){var GP=Oy;var GO=(((GP))>>>0)>>>8;var GN=Oy;var Gs=(GN)&127;yJ(Gs,GO);jF(1)}var Gr=Oy;var Gq=(Gr)&128;var Gp=(((Gq))|0)==0;if(Gp){Bd=4;continue}else{Bd=7;break $bb1$$bb2$6}}}}while(0);var Go=Di;var Gn=((Go+15)&4294967295);var Gm=ll[((Gn)>>0)];var Gl=oD((Gm),8,0);IZ=Gl;var Gk=Di;var Gj=((Gk+4)&4294967295);var FX=xV[((Gj)>>1)];var FW=oD((FX),16,0);var FV=(FW)&4;var FU=(((FV))|0)!=0;if(FU){Bd=8}else{Bd=9}$bb4_thread$$bb4$14:do{if(Bd==8){IZ=2;Bd=101;break $bb4_thread$$bb4$14}else{if(Bd==9){var Jr=IZ;if(Jr==0){Bd=10}else{if(Jr==2){Bd=101;break $bb4_thread$$bb4$14}else{if(Jr==3){Bd=77}else{if(Jr==4){Bd=11}else{if(Jr==5){Bd=52}else{if(Jr==6){Bd=26}else{if(Jr==7){Bd=26}else{if(Jr==8){Bd=77}else{Bd=200;break $bb4_thread$$bb4$14}}}}}}}}if(Bd==10){Hh=0;Bd=200;break $bb4_thread$$bb4$14}else{if(Bd==77){var Gf=Ie;var Gc=((Gf+660)&4294967295);var Ga=((Gc)&4294967295);var F8=la[((Ga)>>0)];var F6=Di;var F4=((F6+18)&4294967295);la[((F4)>>0)]=F8;var F2=Di;var F0=((F2+12)&4294967295);uW[((F0)>>1)]=256;Kw=0;var FY=Di;var FM=((FY+19)&4294967295);var FK=la[((FM)>>0)];var FI=iB((FK),8,0)!=0;if(FI){Bd=78}else{Bd=83}$bb78$$bb83$20:do{if(Bd==78){var FG=Nb;var FE=((FG+15)&4294967295);var FC=la[((FE)>>0)];var FA=iB((FC),8,0)==3;if(FA){Bd=79}else{Bd=80}if(Bd==79){var Fy=Di;var Fw=((Fy+16)&4294967295);la[((Fw)>>0)]=25}var Fu=Nb;var Fj=((Fu+15)&4294967295);var Fi=la[((Fj)>>0)];var Fh=iB((Fi),8,0)==2;if(!(Fh)){Bd=83;break $bb78$$bb83$20}var Fg=Di;var Ff=((Fg+8)&4294967295);var Fe=uA[((Ff)>>2)];var Fc=((Fe+4)&4294967295);var Fb=uA[((Fc)>>2)];var Fa=(Fb)&16777216;var E9=(((Fa))|0)==0;if(!(E9)){Bd=83;break $bb78$$bb83$20}var EY=Di;var EX=((EY+16)&4294967295);la[((EX)>>0)]=12}}while(0);var EW=ET;var EV=((EW+15)&4294967295);var EU=la[((EV)>>0)];var ES=iB((EU),8,0)==2;if(ES){Bd=84}else{Bd=85}if(Bd==84){AM=1;Bd=200;break $bb4_thread$$bb4$14}else{if(Bd==85){var ER=Hh;var EQ=(((ER))&255);var EP=Di;var EO=((EP+21)&4294967295);la[((EO)>>0)]=EQ;var ED=Nb;var EC=((ED+15)&4294967295);var EB=la[((EC)>>0)];var EA=iB((EB),8,0)==2;if(EA){Bd=87}else{Bd=86}$bb87$$bb86$31:do{if(Bd==86){var Ez=Nb;var Ex=((Ez+15)&4294967295);var Ew=la[((Ex)>>0)];var Eu=iB((Ew),8,0)==3;if(Eu){Bd=87;break $bb87$$bb86$31}var NX=Ev;Cr=NX;while(1){var Nu=uA[((xn)>>2)];var Ns=Cr;var Nq=(((Ns))|0)<(((Nu))|0);if(!(Nq)){Bd=98;break $bb87$$bb86$31}var NV=Cr;var NT=((eW+NV*24)&4294967295);var NP=((NT+15)&4294967295);var NN=la[((NP)>>0)];var NL=iB((NN),8,0)==2;var NJ=Cr;if(NL){Bd=95;break}var Nx=(((NJ)+1)&4294967295);Cr=Nx;Bd=97;continue}var NH=((eW+NJ*24)&4294967295);var NF=((NH+21)&4294967295);var ND=la[((NF)>>0)];var NB=Di;var Nz=((NB+21)&4294967295);la[((Nz)>>0)]=ND;Bd=98;break $bb87$$bb86$31}}while(0);$bb87$$bb99$39:do{if(Bd==87){var Et=Nb;var Es=((Et+12)&4294967295);var Eh=uW[((Es)>>1)];var Eg=Di;var Ef=((Eg+12)&4294967295);uW[((Ef)>>1)]=Eh;var Ee=Di;var Ed=((Ee+15)&4294967295);var Ec=la[((Ed)>>0)];var Eb=iB((Ec),8,0)==3;if(Eb){Bd=88}else{Bd=89}if(Bd==88){var Ea=uA[((ua)>>2)];var D9=(((Ea))&65535);var D7=Di;var DN=((D7+12)&4294967295);uW[((DN)>>1)]=D9}var DM=ET;var DL=((DM+15)&4294967295);var DK=la[((DL)>>0)];var DJ=iB((DK),8,0)==5;if(DJ){Bd=90}else{Bd=91}if(Bd==90){var DI=Di;var DH=((DI+12)&4294967295);var DG=uW[((DH)>>1)];var DF=iB((DG),16,0);var DE=(((DF)*160)&4294967295);var Dt=(((((DE))|0)/100)|0);var Ds=(((Dt))&65535);var Dr=Di;var Dp=((Dr+12)&4294967295);uW[((Dp)>>1)]=Ds}var Do=ET;var Dn=((Do+15)&4294967295);var Dm=la[((Dn)>>0)];var Dl=iB((Dm),8,0)==7;if(!(Dl)){Bd=98;break $bb87$$bb99$39}var Dk=Di;var Dj=((Dk+12)&4294967295);var Ob=uW[((Dj)>>1)];var N9=iB((Ob),16,0);var N7=(((N9)*120)&4294967295);var N5=(((((N7))|0)/100)|0);var N3=(((N5))&65535);var N1=Di;var NZ=((N1+12)&4294967295);uW[((NZ)>>1)]=N3}}while(0);var No=Di;var Nm=((No+21)&4294967295);var Nk=la[((Nm)>>0)];var Ni=(((Nk)-16)&255);var Ng=Di;var Ne=((Ng+20)&4294967295);la[((Ne)>>0)]=Ni;var Nc=Di;var M7=((Nc+21)&4294967295);var M5=ll[((M7)>>0)];var M3=oD((M5),8,0)<=15;if(M3){Bd=99}else{Bd=100}if(Bd==99){var M1=Di;var MY=((M1+20)&4294967295);la[((MY)>>0)]=0}var MW=Di;var MU=((MW+14)&4294967295);la[((MU)>>0)]=0;LY=0;Bd=200;break $bb4_thread$$bb4$14}}}else{if(Bd==11){Hh=0;var FT=Nb;var FS=((FT+15)&4294967295);var FR=la[((FS)>>0)];var FQ=iB((FR),8,0)==6;if(FQ){Bd=12}else{Bd=13}$bb7$$bb8$53:do{if(Bd==12){var FP=Di;var FO=((FP+16)&4294967295);la[((FO)>>0)]=25}else{if(Bd==13){var Ft=uA[((cA)>>2)];var Fs=(((Ft))|0)>0;if(Fs){Bd=15}else{Bd=14}$bb10$$bb9$56:do{if(Bd==14){var Fr=Dq;var Fq=(((Fr))|0)<=3;if(Fq){Bd=15;break $bb10$$bb9$56}var Fn=Di;var Fm=((Fn+16)&4294967295);la[((Fm)>>0)]=60;Bd=17;break $bb7$$bb8$53}}while(0);var Fp=Di;var Fo=((Fp+16)&4294967295);la[((Fo)>>0)]=48}}}while(0);var Fl=Nb;var Fk=((Fl+15)&4294967295);var E8=la[((Fk)>>0)];var E7=iB((E8),8,0)==4;if(E7){Bd=18}else{Bd=19}if(Bd==18){var E6=Di;var E5=((E6+16)&4294967295);la[((E5)>>0)]=60}var E4=Ie;var E3=((E4)&4294967295);var E2=((E3)&4294967295);var E1=uA[((E2)>>2)];var E0=(E1)&16;var EZ=(((E0))|0)!=0;if(EZ){Bd=20}else{Bd=22}$bb15$$bb17$64:do{if(Bd==20){var EN=Di;var EM=((EN+19)&4294967295);var EL=la[((EM)>>0)];var EK=iB((EL),8,0)!=0;if(!(EK)){Bd=22;break $bb15$$bb17$64}var EJ=Di;var EI=((EJ+16)&4294967295);la[((EI)>>0)]=60}}while(0);var EH=Di;var EG=((EH+8)&4294967295);var EF=uA[((EG)>>2)];var EE=((EF+4)&4294967295);var Mq=uA[((EE)>>2)];var Mo=(Mq)&4194304;var Mm=(((Mo))|0)!=0;if(Mm){Bd=23}else{Bd=24}if(Bd==23){var Mk=Di;var Mi=((Mk+16)&4294967295);var Mg=la[((Mi)>>0)];var Me=(((Mg)+30)&255);var Mc=Di;var Ma=((Mc+16)&4294967295);la[((Ma)>>0)]=Me}var L9=Di;var LV=((L9+4)&4294967295);var LT=xV[((LV)>>1)];var LR=oD((LT),16,0);var LP=(LR)&8;var LN=(((LP))|0)!=0;if(!(LN)){Bd=200;break $bb4_thread$$bb4$14}var LL=Di;var LJ=((LL+16)&4294967295);var LH=la[((LJ)>>0)];var LF=Ie;var LE=((LF)&4294967295);var Lr=((LE+240)&4294967295);var Lp=uA[((Lr)>>2)];var Ln=(((Lp))&255);var Ll=(((Ln)+(LH))&255);var Lj=Di;var Lh=((Lj+16)&4294967295);la[((Lh)>>0)]=Ll;Bd=200;break $bb4_thread$$bb4$14}else{if(Bd==52){var QE=Nb;var QC=((QE+15)&4294967295);var QA=la[((QC)>>0)];var Qx=iB((QA),8,0)==7;if(Qx){Bd=56}else{Bd=53}$bb55$$bb52$73:do{if(Bd==53){var Qv=Nb;var Qt=((Qv+15)&4294967295);var Qr=la[((Qt)>>0)];var Qp=iB((Qr),8,0)==6;if(Qp){Bd=56;break $bb55$$bb52$73}var Qn=Nb;var Ql=((Qn+8)&4294967295);var Qj=uA[((Ql)>>2)];var Qh=((Qj+4)&4294967295);var Qf=uA[((Qh)>>2)];var Qd=(Qf)&32;var Qc=(((Qd))|0)!=0;if(Qc){Bd=56;break $bb55$$bb52$73}var Qb=Nb;var Qa=((Qb+15)&4294967295);var P9=la[((Qa)>>0)];var P8=iB((P9),8,0)==3;if(P8){Bd=56;break $bb55$$bb52$73}else{Bd=57;break $bb55$$bb52$73}}}while(0);if(Bd==56){var P7=Di;var P6=((P7+16)&4294967295);la[((P6)>>0)]=30}var P5=ET;var P4=((P5+15)&4294967295);var P2=la[((P4)>>0)];var P1=iB((P2),8,0)==2;if(P1){Bd=59}else{Bd=58}$bb58$$bb57$80:do{if(Bd==58){var P0=ET;var PZ=((P0+15)&4294967295);var PY=la[((PZ)>>0)];var PX=iB((PY),8,0)==3;if(PX){Bd=59;break $bb58$$bb57$80}else{Bd=73;break $bb58$$bb57$80}}}while(0);$bb58$$bb72$82:do{if(Bd==59){var PW=ET;var PV=((PW+15)&4294967295);var PU=la[((PV)>>0)];var PT=iB((PU),8,0)==2;if(PT){Bd=61}else{Bd=60}$bb60$$bb59$84:do{if(Bd==60){var PR=ET;var PQ=((PR+19)&4294967295);var PP=la[((PQ)>>0)];var PO=iB((PP),8,0)==0;if(PO){Bd=61;break $bb60$$bb59$84}else{Bd=62;break $bb60$$bb59$84}}}while(0);if(Bd==61){LY=1}var PN=Di;var PM=((PN+16)&4294967295);la[((PM)>>0)]=40;var PL=Nb;var PK=((PL+15)&4294967295);var PJ=la[((PK)>>0)];var PI=iB((PJ),8,0)==0;if(PI){Bd=64}else{Bd=63}$bb63$$bb62$89:do{if(Bd==63){var Px=Nb;var Pw=((Px+15)&4294967295);var Pv=la[((Pw)>>0)];var Pu=iB((Pv),8,0)==2;if(Pu){Bd=64;break $bb63$$bb62$89}var Pr=Di;var Pq=((Pr+19)&4294967295);var Pp=la[((Pq)>>0)];var Po=iB((Pp),8,0)==0;if(!(Po)){Bd=73;break $bb58$$bb72$82}var Pd=Nb;var Pc=((Pd+15)&4294967295);var Pb=la[((Pc)>>0)];var Pa=iB((Pb),8,0)==3;if(Pa){Bd=67}else{Bd=68}if(Bd==67){var O9=Di;var O8=((O9+16)&4294967295);la[((O8)>>0)]=20}var O7=Nb;var O6=((O7+15)&4294967295);var O5=la[((O6)>>0)];var O4=iB((O5),8,0)==8;if(O4){Bd=69}else{Bd=70}if(Bd==69){var OT=Di;var OS=((OT+16)&4294967295);la[((OS)>>0)]=12}var OR=Nb;var OQ=((OR+15)&4294967295);var OP=la[((OQ)>>0)];var OO=iB((OP),8,0)==4;if(!(OO)){Bd=73;break $bb58$$bb72$82}var ON=Nb;var OM=((ON+8)&4294967295);var OL=uA[((OM)>>2)];var OK=((OL+4)&4294967295);var Hf=uA[((OK)>>2)];var Hd=(Hf)&8;var Hb=(((Hd))|0)==0;if(!(Hb)){Bd=73;break $bb58$$bb72$82}var G9=Di;var G7=((G9+16)&4294967295);la[((G7)>>0)]=0;Bd=73;break $bb58$$bb72$82}}while(0);var Pt=Di;var Ps=((Pt+16)&4294967295);la[((Ps)>>0)]=0}}while(0);var G5=Ie;var G3=((G5)&4294967295);var G1=((G3)&4294967295);var GZ=uA[((G1)>>2)];var GX=(GZ)&16;var GL=(((GX))|0)!=0;if(!(GL)){Bd=200;break $bb4_thread$$bb4$14}var GJ=Di;var GH=((GJ+19)&4294967295);var GF=la[((GH)>>0)];var GD=iB((GF),8,0)!=0;if(!(GD)){Bd=200;break $bb4_thread$$bb4$14}var GB=Di;var Gz=((GB+16)&4294967295);var Gx=ll[((Gz)>>0)];var Gv=oD((Gx),8,0)<=19;if(!(Gv)){Bd=200;break $bb4_thread$$bb4$14}var Gt=Di;var Gh=((Gt+16)&4294967295);la[((Gh)>>0)]=20;Bd=200;break $bb4_thread$$bb4$14}else{if(Bd==26){var Lf=Di;var Ld=((Lf+19)&4294967295);var Lb=la[((Ld)>>0)];var La=iB((Lb),8,0)!=0;if(La){Bd=27}else{Bd=30}$bb23$$bb27$107:do{if(Bd==27){var KW=Nb;var KU=((KW+15)&4294967295);var KS=la[((KU)>>0)];var KQ=iB((KS),8,0)!=2;if(KQ){Bd=29}else{Bd=28}if(Bd==28){var KO=Di;var KM=((KO+8)&4294967295);var KK=uA[((KM)>>2)];var KI=((KK+4)&4294967295);var KG=uA[((KI)>>2)];var KF=(KG)&16777216;var Kt=(((KF))|0)==0;if(!(Kt)){Bd=30;break $bb23$$bb27$107}}var Ks=Di;var Kr=((Ks+16)&4294967295);la[((Kr)>>0)]=15}}while(0);var Kq=ET;var Kp=((Kq+15)&4294967295);var Ko=la[((Kp)>>0)];var Kn=iB((Ko),8,0)==0;if(Kn){Bd=31}else{Bd=34}$bb28$$bb31$113:do{if(Bd==31){var Km=Nb;var Kl=((Km+15)&4294967295);var Kj=la[((Kl)>>0)];var J8=iB((Kj),8,0)==8;if(!(J8)){Bd=34;break $bb28$$bb31$113}var J7=Di;var J6=((J7+8)&4294967295);var J5=uA[((J6)>>2)];var J4=((J5+4)&4294967295);var J3=uA[((J4)>>2)];var J2=(J3)&8;var J1=(((J2))|0)==0;if(!(J1)){Bd=34;break $bb28$$bb31$113}var J0=Di;var JZ=((J0+16)&4294967295);la[((JZ)>>0)]=25}}while(0);var JO=Nb;var JN=((JO+8)&4294967295);var JM=uA[((JN)>>2)];var JL=((JM+4)&4294967295);var JK=uA[((JL)>>2)];var JJ=(JK)&16384;var JI=(((JJ))|0)!=0;if(JI){Bd=35}else{Bd=36}if(Bd==35){var JH=Di;var JG=((JH+16)&4294967295);la[((JG)>>0)]=30}var JF=Ie;var Jj=((JF)&4294967295);var Ji=((Jj)&4294967295);var Jh=uA[((Ji)>>2)];var Jg=(Jh)&16;var Jf=(((Jg))|0)!=0;if(Jf){Bd=37}else{Bd=39}$bb34$$bb36$121:do{if(Bd==37){var Jd=Di;var Jc=((Jd+19)&4294967295);var Jb=la[((Jc)>>0)];var Ja=iB((Jb),8,0)!=0;if(!(Ja)){Bd=39;break $bb34$$bb36$121}var I9=Di;var IN=((I9+16)&4294967295);la[((IN)>>0)]=30}}while(0);var IM=Di;var IL=((IM+8)&4294967295);var IK=uA[((IL)>>2)];var IJ=((IK+4)&4294967295);var II=uA[((IJ)>>2)];var IH=(II)&32;var IG=(((IH))|0)==0;if(IG){Bd=45}else{Bd=40}$bb43$$bb37$125:do{if(Bd==40){var IF=ET;var IE=((IF+15)&4294967295);var Ir=la[((IE)>>0)];var Iq=iB((Ir),8,0)!=4;if(Iq){Bd=45;break $bb43$$bb37$125}var Ip=ET;var Io=((Ip+19)&4294967295);var In=la[((Io)>>0)];var Im=iB((In),8,0)!=0;if(Im){Bd=45;break $bb43$$bb37$125}var Il=Nb;var Ik=((Il+15)&4294967295);var Ij=la[((Ik)>>0)];var Ii=iB((Ij),8,0)==2;var AZ=Di;var AX=((AZ+12)&4294967295);if(Ii){Bd=43}else{Bd=44}if(Bd==43){uW[((AX)>>1)]=200;Bd=46;break $bb43$$bb37$125}else{if(Bd==44){uW[((AX)>>1)]=150;Bd=46;break $bb43$$bb37$125}}}}while(0);if(Bd==45){var AV=Di;var AT=((AV+12)&4294967295);uW[((AT)>>1)]=256}var AR=IZ;var AP=(((AR))|0)==7;if(!(AP)){Bd=200;break $bb4_thread$$bb4$14}var AN=ET;var AK=((AN+15)&4294967295);var AI=la[((AK)>>0)];var i=iB((AI),8,0)==2;if(i){Bd=48}else{Bd=49}if(Bd==48){LY=1}var Rd=Nb;var Rb=((Rd+15)&4294967295);var Q9=la[((Rb)>>0)];var Q7=iB((Q9),8,0)==2;if(Q7){Bd=51}else{Bd=50}if(Bd==50){var Q5=Nb;var Q3=((Q5+15)&4294967295);var Q1=la[((Q3)>>0)];var QZ=iB((Q1),8,0)==3;if(!(QZ)){Bd=200;break $bb4_thread$$bb4$14}}var QX=Nb;var QV=((QX+12)&4294967295);var QS=uW[((QV)>>1)];var QQ=iB((QS),16,0);var QO=(((QQ)+255)&4294967295);var QM=(((((QO))|0)/2)|0);var QK=(((QM))&65535);var QI=Di;var QG=((QI+12)&4294967295);uW[((QG)>>1)]=QK;Bd=200;break $bb4_thread$$bb4$14}}}}}}}}while(0);if(Bd==101){Kw=0;var MS=Ev;var MQ=(((MS)+2)&4294967295);var MO=((eW+MQ*24)&4294967295);Oo=MO;var MN=Ev;var MM=(((MN)+3)&4294967295);var ML=((eW+MM*24)&4294967295);On=ML;var MK=Dq;var MJ=(((MK))|0)>7;if(MJ){Bd=102}else{Bd=103}$bb105_thread$$bb105$144:do{if(Bd==102){Dq=7}else{if(Bd==103){var MI=(((MK))|0)<=1;if(!(MI)){Bd=105;break $bb105_thread$$bb105$144}var MH=Dq;var MG=(MH)^1;Dq=MG}}}while(0);var MF=AM;var ME=(((MF))|0)!=0;var MC=Dq;var MB=Ie;var MA=((MB+660)&4294967295);var Mz=((MA+MC)&4294967295);var My=la[((Mz)>>0)];if(ME){Bd=106}else{Bd=107}if(Bd==106){var Mx=(((My)-1)&255);var Mw=Di;var Mv=((Mw+18)&4294967295);la[((Mv)>>0)]=Mx}else{if(Bd==107){var Mu=Di;var Mt=((Mu+18)&4294967295);la[((Mt)>>0)]=My}}var Ms=Ge;var Mr=(((Ms))|0)!=0;if(Mr){Bd=109}else{Bd=110}if(Bd==109){var Mp=Di;var Mn=((Mp+18)&4294967295);la[((Mn)>>0)]=25}var Ml=uA[((xn)>>2)];var Mj=(((Ml)-3)&4294967295);var Mh=Ev;var Mf=(((Mj))|0)<=(((Mh))|0);if(Mf){Bd=111}else{Bd=113}$bb113$$bb115$156:do{if(Bd==111){var Md=Di;var Mb=((Md+18)&4294967295);var LX=ll[((Mb)>>0)];var LW=oD((LX),8,0);var LU=Ie;var LS=((LU)&4294967295);var LQ=((LS+24)&4294967295);var LO=((LQ+36)&4294967295);var LM=uA[((LO)>>2)];var LK=(((LW))|0)>(((LM))|0);if(!(LK)){Bd=113;break $bb113$$bb115$156}var LI=Ie;var LG=((LI)&4294967295);var Lt=((LG+24)&4294967295);var Ls=((Lt+36)&4294967295);var Lq=uA[((Ls)>>2)];var Lo=(((Lq))&255);var Lm=Di;var Lk=((Lm+18)&4294967295);la[((Lk)>>0)]=Lo}}while(0);uA[((cA)>>2)]=0;Ey=0;var Li=Di;var Lg=((Li+24)&4294967295);CX=Lg;var Le=CX;var Lc=((Le+19)&4294967295);var KY=la[((Lc)>>0)];var KX=iB((KY),8,0)==0;var KV=CX;if(KX){NS=113;Bd=114}else{NS=113;Bd=120}$bb116$$bb123$160:do{if(Bd==114){$bb116$161:while(1){var KT=NS==119?B9:(KV);var KR=((KT+15)&4294967295);var KP=la[((KR)>>0)];var KN=iB((KP),8,0)==2;if(KN){Bd=115}else{Bd=117}$bb117$$bb119$163:do{if(Bd==115){var KL=CX;var KJ=((KL+8)&4294967295);var KH=uA[((KJ)>>2)];var CL=((KH+4)&4294967295);var CJ=uA[((CL)>>2)];var CH=(CJ)&1048576;var CF=(((CH))|0)==0;if(!(CF)){Bd=117;break $bb117$$bb119$163}var CD=uA[((cA)>>2)];var CB=(((CD)+1)&4294967295);uA[((cA)>>2)]=CB}}while(0);var Cz=CX;var Cx=((Cz+8)&4294967295);var Cv=uA[((Cx)>>2)];var Ct=((Cv+10)&4294967295);var Cp=la[((Ct)>>0)];var Cn=iB((Cp),8,0)==27;if(Cn){Bd=118}else{Bd=119}if(Bd==118){Ey=2}var Cl=CX;var Cj=((Cl+24)&4294967295);CX=Cj;var Ch=CX;var Cf=((Ch+19)&4294967295);var Cd=la[((Cf)>>0)];var Cb=iB((Cd),8,0)==0;var B9=CX;if(Cb){NS=119;Bd=114;continue $bb116$161}else{NS=119;Bd=120;break $bb116$$bb123$160}}}}while(0);var Kk=NS==113?KV:(B9);var B7=((Kk+8)&4294967295);var B3=uA[((B7)>>2)];var B1=((B3+10)&4294967295);var BZ=la[((B1)>>0)];var BX=iB((BZ),8,0)==27;if(BX){Bd=121}else{Bd=122}if(Bd==121){Ey=2}var BV=CX;var BT=((BV+19)&4294967295);var BR=ll[((BT)>>0)];var BP=oD((BR),8,0);var BN=(BP)&2;var BL=(((BN))|0)!=0;var BH=uA[((cA)>>2)];var BF=(((BH))|0)==0;var Nw=(BL)&(BF);if(Nw){Bd=123}else{Bd=124}if(Bd==123){Ey=2}var BD=ET;var BB=((BD+8)&4294967295);var Bz=uA[((BB)>>2)];var Bx=((Bz+10)&4294967295);var Bv=la[((Bx)>>0)];var Bt=iB((Bv),8,0)==23;if(Bt){Bd=125}else{Bd=127}$bb129$$bb131$177:do{if(Bd==125){var Br=Oo;var Bp=((Br+15)&4294967295);var Bo=la[((Bp)>>0)];var Bn=iB((Bo),8,0)==0;if(!(Bn)){Bd=127;break $bb129$$bb131$177}var Bm=Oo;ET=Bm;var Bl=On;Oo=Bl;var Bk=Ev;var Bj=(((Bk)+4)&4294967295);var Bi=((eW+Bj*24)&4294967295);On=Bi}}while(0);var Bh=uA[((cA)>>2)];var Bg=(((Bh))|0)==0;var Bf=Ie;var Bc=((Bf)&4294967295);if(Bg){Bd=128}else{Bd=132}$bb132$$bb137$181:do{if(Bd==128){var Ba=((Bc+180)&4294967295);var A9=uA[((Ba)>>2)];var A8=Oo;var A7=((A8+8)&4294967295);var A6=uA[((A7)>>2)];var A5=((A6+15)&4294967295);var A4=ll[((A5)>>0)];var A3=oD((A4),8,0);var A2=(((A3)*10)&4294967295);var A0=ET;var AY=((A0+8)&4294967295);var AW=uA[((AY)>>2)];var AU=((AW+15)&4294967295);var AS=ll[((AU)>>0)];var AQ=oD((AS),8,0);var AO=(((AQ)+(A2))&4294967295);var AL=((A9+AO)&4294967295);var AJ=ll[((AL)>>0)];var AH=oD((AJ),8,0);K9=AH;var Re=ET;var Rc=((Re+19)&4294967295);var Ra=la[((Rc)>>0)];var Q8=iB((Ra),8,0)==0;if(Q8){Bd=131}else{Bd=129}$bb135$$bb133$183:do{if(Bd==129){var Q6=Ie;var Q4=((Q6)&4294967295);var Q2=((Q4)&4294967295);var Q0=uA[((Q2)>>2)];var QY=(Q0)&32;var QW=(((QY))|0)==0;if(QW){Bd=131;break $bb135$$bb133$183}var QT=Ie;var QR=((QT)&4294967295);var QP=((QR+180)&4294967295);var QN=uA[((QP)>>2)];var QL=ET;var QJ=((QL+8)&4294967295);var QH=uA[((QJ)>>2)];var QF=((QH+15)&4294967295);var QD=ll[((QF)>>0)];var QB=oD((QD),8,0);var Qy=(((QB)*10)&4294967295);var Qw=(((Qy)+1)&4294967295);var Qu=((QN+Qw)&4294967295);var Qs=ll[((Qu)>>0)];var Qq=oD((Qs),8,0);var Qo=K9;var Qm=(((Qq)+(Qo))&4294967295);var Qk=(((((Qm))|0)/2)|0);Fd=Qk;Bd=137;break $bb132$$bb137$181}}while(0);var Qi=K9;Fd=Qi}else{if(Bd==132){var Qg=((Bc+176)&4294967295);var JD=uA[((Qg)>>2)];var JB=Oo;var Jz=((JB+8)&4294967295);var Jx=uA[((Jz)>>2)];var Jv=((Jx+15)&4294967295);var Jt=ll[((Jv)>>0)];var Jq=oD((Jt),8,0);var Jo=(((Jq)*10)&4294967295);var Jm=ET;var Jk=((Jm+8)&4294967295);var I7=uA[((Jk)>>2)];var I5=((I7+15)&4294967295);var I3=ll[((I5)>>0)];var I1=oD((I3),8,0);var IY=(((I1)+(Jo))&4294967295);var IW=((JD+IY)&4294967295);var IU=ll[((IW)>>0)];var IS=oD((IU),8,0);Fd=IS;var IQ=ET;var IO=((IQ+15)&4294967295);var IC=la[((IO)>>0)];var IB=iB((IC),8,0)==8;if(!(IB)){Bd=137;break $bb132$$bb137$181}var IA=Oo;var Iz=((IA+15)&4294967295);var Ix=la[((Iz)>>0)];var Iw=iB((Ix),8,0)==4;if(Iw){Bd=135}else{Bd=134}if(Bd==134){var Iv=Oo;var Iu=((Iv+15)&4294967295);var It=la[((Iu)>>0)];var Is=iB((It),8,0)==5;if(!(Is)){Bd=137;break $bb132$$bb137$181}}var Ih=On;var Ig=((Ih+8)&4294967295);var If=uA[((Ig)>>2)];var Id=((If+4)&4294967295);var Ic=uA[((Id)>>2)];var Ib=(Ic)&8;var Ia=(((Ib))|0)!=0;if(!(Ia)){Bd=137;break $bb132$$bb137$181}var H9=Fd;var H8=(((H9)-15)&4294967295);Fd=H8}}}while(0);var H7=uA[((cA)>>2)];var HW=(((H7))|0)==0;if(HW){Bd=138}else{Bd=139}if(Bd==138){var HV=uA[((ua)>>2)];var HU=Fd;var HT=(((HU)*(HV))&4294967295);Fd=HT}else{if(Bd==139){var HS=uA[((cA)>>2)];var HR=(((HS))|0)==1;if(HR){Bd=140}else{Bd=141}if(Bd==140){var HQ=uA[((t9)>>2)];var HP=Fd;var HO=(((HP)*(HQ))&4294967295);Fd=HO}else{if(Bd==141){var HN=uA[((t8)>>2)];var HC=Fd;var HB=(((HC)*(HN))&4294967295);Fd=HB}}}}var HA=Fd;var Hz=(((((HA))|0)/128)|0);Fd=Hz;var Hy=(((Hz))|0)<=7;if(Hy){Bd=143}else{Bd=144}if(Bd==143){Fd=8}var Hx=Dq;var Hw=(((Hx))|0)>6;if(Hw){Bd=145}else{Bd=147}$bb150$$bb153$204:do{if(Bd==145){var Hv=Fd;var Hu=(((Hv)+20)&4294967295);Fd=Hu;var Hs=Ge;var Hg=(((Hs))|0)!=0;if(!(Hg)){Bd=149;break $bb150$$bb153$204}var He=Fd;var Hc=(((He)+10)&4294967295);Fd=Hc}else{if(Bd==147){var Ha=Ge;var G8=(((Ha))|0)!=0;if(!(G8)){Bd=149;break $bb150$$bb153$204}var G6=Fd;var G4=(((G6)+20)&4294967295);Fd=G4}}}while(0);var G2=Dq;var G0=Ie;var GY=((G0+676)&4294967295);var GM=((GY+G2*2)&4294967295);var GK=uW[((GM)>>1)];var GI=iB((GK),16,0);K9=GI;var GG=K9;var GE=(((GG))|0)==0;var GC=oD((GE),1,0);BK=GC;var PS=iB((GC),8,0)!=0;if(PS){Bd=150}else{Bd=151}if(Bd==150){var GA=Ie;var Gy=((GA+676)&4294967295);var Gw=((Gy+12)&4294967295);var Gu=uW[((Gw)>>1)];var Gi=iB((Gu),16,0);K9=Gi}var Gg=Fd;var Gd=K9;var Gb=(((Gd)*(Gg))&4294967295);Fd=Gb;var F9=Di;var F7=((F9+3)&4294967295);var F5=la[((F7)>>0)];var F3=iB((F5),8,0)!=0;if(F3){Bd=152}else{Bd=154}$bb158$$bb161$213:do{if(Bd==152){var F1=Di;var FZ=((F1+3)&4294967295);var FN=ll[((FZ)>>0)];var FL=oD((FN),8,0);var FJ=((nm+FL*4)&4294967295);var FH=uA[((FJ)>>2)];var FF=((FH+14)&4294967295);var FD=ll[((FF)>>0)];var FB=oD((FD),8,0);Bb=FB;var Fz=Bb;var Fx=(((Fz))|0)>0;var Fv=oD((Fx),1,0);BJ=Fv;var PH=BJ;var Qz=iB((PH),8,0)!=0;if(!(Qz)){Bd=154;break $bb158$$bb161$213}var PG=Fd;var PF=Bb;var PE=(((PF)*(PG))&4294967295);var PD=(((((PE))|0)/100)|0);Fd=PD}}while(0);var PC=Ey;var PB=(((PC))|0)==2;if(PB){Bd=155}else{Bd=158}if(Bd==155){var PA=Di;var Pz=((PA+8)&4294967295);var Py=uA[((Pz)>>2)];var Pn=((Py+14)&4294967295);var Pm=ll[((Pn)>>0)];var Pl=oD((Pm),8,0);var Pk=(((Pl)*2)&4294967295);K9=Pk;var Pj=Ie;var Pi=((Pj)&4294967295);var Ph=((Pi+12)&4294967295);var Pg=uA[((Ph)>>2)];var Pf=(Pg)&262144;var Pe=(((Pf))|0)!=0;if(Pe){Bd=156}else{Bd=157}if(Bd==156){K9=200}var O3=K9;var O2=((280-(O3))&4294967295);var O1=(((((O2))|0)/3)|0);var O0=(((O1)+256)&4294967295);var OZ=Fd;var OY=(((O0)*(OZ))&4294967295);var OX=(((((OY))|0)/256)|0);Fd=OX}var OW=Ie;var OV=((OW)&4294967295);var OU=((OV+272)&4294967295);var OJ=uA[((OU)>>2)];var OI=uA[((ua)>>2)];var OH=(((OI)*(OJ))&4294967295);var OG=Fd;var OF=(((OH))|0)<(((OG))|0);if(OF){Bd=159}else{Bd=160}if(Bd==159){var OE=Ie;var OD=((OE)&4294967295);var OC=((OD+272)&4294967295);var OB=uA[((OC)>>2)];var OA=uA[((ua)>>2)];var Oz=(((OA)*(OB))&4294967295);Fd=Oz}var Ox=Fd;var Ow=(((((Ox))|0)/128)|0);Fd=Ow;var Ov=Di;var Ou=((Ov+15)&4294967295);var Ot=la[((Ou)>>0)];var Os=iB((Ot),8,0)!=2;if(Os){Bd=161}else{Bd=162}if(Bd==161){Fd=256;Kw=16}var Or=Fd;var Oq=(((Or))&65535);var Op=Di;var Om=((Op+12)&4294967295);uW[((Om)>>1)]=Oq;var Ol=Di;var Ok=((Ol+14)&4294967295);var Oj=ll[((Ok)>>0)];var Oi=oD((Oj),8,0)>18;if(Oi){Bd=163}else{Bd=164}if(Bd==163){var Oh=uA[((ta)>>2)];var Og=yf(((pl)&4294967295),1,28,Oh);var Of=Di;var Oe=((Of+14)&4294967295);la[((Oe)>>0)]=0}var Od=Di;var Oc=((Od+14)&4294967295);var Oa=ll[((Oc)>>0)];var N8=oD((Oa),8,0);var N6=(((N8)+1)&4294967295);Ht=N6;var N4=Di;var N2=((N4+3)&4294967295);var N0=la[((N2)>>0)];var NY=iB((N0),8,0)!=0;if(NY){Bd=165}else{Bd=171}if(Bd==165){var NW=Di;var NU=((NW+3)&4294967295);var NQ=ll[((NU)>>0)];var NO=oD((NQ),8,0);B5=NO;A1=MZ;ud(D2,0,96,1,0);Qe=0;while(1){var NM=Qe;var NK=((Cs+NM*24)&4294967295);var NI=((NK)&4294967295);la[((NI)>>0)]=9;var NG=Qe;var NE=uA[((((nm+36)&4294967295))>>2)];var NC=((Cs+NG*24)&4294967295);var NA=((NC+8)&4294967295);uA[((NA)>>2)]=NE;var Ny=Qe;var Nv=(((Ny)+1)&4294967295);Qe=Nv;var Nt=(((Nv))|0)<=3;if(Nt){Bd=166;continue}else{Bd=167;break}}var Nr=B5;var Np=(((Nr))&255);la[((DY)>>0)]=Np;var Nn=B5;var Nl=((nm+Nn*4)&4294967295);var Nj=uA[((Nl)>>2)];uA[((DU)>>2)]=Nj;uW[((H5)>>1)]=1;var Nh=A1;lw(0,0,H4,Nh);var Nf=uA[((H3)>>2)];QU=Nf;var Nd=QU;var M8=(((Nd))|0)==0;if(M8){Bd=168}else{Bd=169}if(Bd==168){var M6=uA[((ta)>>2)];var M4=yf(((fG)&4294967295),1,20,M6);var M2=uA[((((lx)&4294967295))>>2)];D8=M2}else{if(Bd==169){var M0=uA[((op)>>2)];var MX=QU;var MV=((M0+MX)&4294967295);D8=MV}}var MT=D8;Iy=MT;var M9=Iy;e=M9}else{if(Bd==171){var MR=Ht;var MP=((lx+MR*4)&4294967295);var Er=uA[((MP)>>2)];e=Er}}var Eq=Di;var Ep=((Eq+20)&4294967295);var Eo=ll[((Ep)>>0)];var En=oD((Eo),8,0);var Em=Di;var El=((Em+21)&4294967295);var Ek=ll[((El)>>0)];var Ej=oD((Ek),8,0);var Ei=Di;var D1=((Ei+20)&4294967295);var DZ=ll[((D1)>>0)];var DX=oD((DZ),8,0);var DV=(((Ej)-(DX))&4294967295);var DT=e;var DS=((DT)&4294967295);var DR=ll[((DS)>>0)];var DQ=oD((DR),8,0);var DP=(((DQ)*(DV))&4294967295);var DO=(((((DP))|0)/256)|0);var DD=(((DO)+(En))&4294967295);NR=DD;var DC=AM;var DB=(((DC))|0)!=0;if(DB){NS=172;Bd=175}else{NS=172;Bd=173}$bb176$$bb175$243:do{if(Bd==173){var DA=LY;var Dz=(((DA))|0)!=0;if(!(Dz)){Bd=185;break $bb176$$bb175$243}var MD=NR;NS=174;Bd=175;break $bb176$$bb175$243}}while(0);$bb176$$bb186$246:do{if(Bd==175){var Dy=NS==174?MD:(DD);var Dx=(((Dy))|0)==255;if(Dx){Bd=176}else{Bd=177}if(Bd==176){var Dw=NR;Hh=Dw}var Dv=NR;var Du=Hh;var Dh=(((Dv)-(Du))&4294967295);var Dg=(((Dh))|0)>16;if(Dg){Bd=178}else{Bd=179}if(Bd==178){var Df=NR;var De=(((Df)-16)&4294967295);Hh=De}var Dd=Hh;var Dc=(((Dd))&255);var Db=Nb;var Da=((Db+20)&4294967295);la[((Da)>>0)]=Dc;var C9=NR;var C8=(((C9))&255);var C7=Nb;var C6=((C7+21)&4294967295);la[((C6)>>0)]=C8;var C5=Hh;var C4=NR;var C3=(((C5))|0)<(((C4))|0);var C2=Nb;var C1=((C2+14)&4294967295);if(C3){Bd=180}else{Bd=181}if(Bd==180){la[((C1)>>0)]=2;var C0=Ht;var CZ=(((C0))&255);var CY=Di;var CW=((CY+14)&4294967295);la[((CW)>>0)]=CZ}else{if(Bd==181){la[((C1)>>0)]=0}}var CV=Fd;var CU=(((CV))&65535);var CT=Nb;var CS=((CT+12)&4294967295);uW[((CS)>>1)]=CU;var CR=Di;var CQ=((CR+18)&4294967295);var CP=la[((CQ)>>0)];var CO=Nb;var CN=((CO+18)&4294967295);la[((CN)>>0)]=CP;var CM=Nb;var CK=((CM+15)&4294967295);var CI=la[((CK)>>0)];var CG=iB((CI),8,0)!=3;if(!(CG)){Bd=185;break $bb176$$bb186$246}var CE=Nb;var CC=((CE+18)&4294967295);var CA=ll[((CC)>>0)];var Cy=oD((CA),8,0)>18;if(!(Cy)){Bd=185;break $bb176$$bb186$246}var Cw=Nb;var Cu=((Cw+18)&4294967295);la[((Cu)>>0)]=18}}while(0);var Cq=ET;var Co=((Cq+4)&4294967295);var Cm=uW[((Co)>>1)];var Ck=(Cm)&-2;var Ci=ET;var Cg=((Ci+4)&4294967295);uW[((Cg)>>1)]=Ck;var Ce=ET;var Cc=((Ce+15)&4294967295);var Ca=la[((Cc)>>0)];var B8=iB((Ca),8,0)==8;if(B8){Bd=186}else{Bd=188}$bb187$$bb189$261:do{if(Bd==186){var B4=Oo;var B2=((B4+15)&4294967295);var B0=la[((B2)>>0)];var BY=iB((B0),8,0)!=2;if(!(BY)){Bd=188;break $bb187$$bb189$261}var BW=ET;var BU=((BW+4)&4294967295);var BS=uW[((BU)>>1)];var BQ=(BS)|1;var BO=ET;var BM=((BO+4)&4294967295);uW[((BM)>>1)]=BQ}}while(0);var BI=ET;var BG=((BI+15)&4294967295);var BE=la[((BG)>>0)];var BC=iB((BE),8,0)==3;if(BC){Bd=189}else{Bd=194}$bb190$$bb195$265:do{if(Bd==189){var BA=ET;var By=((BA+4)&4294967295);var Bw=uW[((By)>>1)];var Bu=(Bw)|1;var Bs=ET;var Bq=((Bs+4)&4294967295);uW[((Bq)>>1)]=Bu;var L8=Oo;var L7=((L8+15)&4294967295);var L6=la[((L7)>>0)];var L5=iB((L6),8,0)==2;if(L5){Bd=190}else{Bd=191}if(Bd==190){var L4=ET;var L3=((L4+4)&4294967295);var L2=uW[((L3)>>1)];var L1=(L2)&-2;var L0=ET;var LZ=((L0+4)&4294967295);uW[((LZ)>>1)]=L1}var LD=Oo;var LC=((LD+15)&4294967295);var LB=la[((LC)>>0)];var LA=iB((LB),8,0)!=2;if(!(LA)){Bd=194;break $bb190$$bb195$265}var Lz=ET;var Ly=((Lz+8)&4294967295);var Lx=uA[((Ly)>>2)];var Lw=((Lx)&4294967295);var Lv=uA[((Lw)>>2)];var Lu=(((Lv))|0)==12146;if(!(Lu)){Bd=194;break $bb190$$bb195$265}var K8=ET;var K7=((K8+4)&4294967295);var K6=uW[((K7)>>1)];var K5=(K6)&-2;var K4=ET;var K3=((K4+4)&4294967295);uW[((K3)>>1)]=K5}}while(0);var K2=Kw;var K1=(((K2))|0)>0;if(K1){Bd=195}else{Bd=199}$bb196$$bb200$273:do{if(Bd==195){var K0=Di;var KZ=((K0+21)&4294967295);var KE=ll[((KZ)>>0)];var KD=oD((KE),8,0);var KC=Di;var KB=((KC+20)&4294967295);var KA=ll[((KB)>>0)];var Kz=oD((KA),8,0);var Ky=(((KD)-(Kz))&4294967295);var Kx=Kw;var Kv=(((Ky))|0)<(((Kx))|0);if(!(Kv)){Bd=199;break $bb196$$bb200$273}var Ku=Di;var Ki=((Ku+21)&4294967295);var Kh=ll[((Ki)>>0)];var Kg=oD((Kh),8,0);var Kf=Kw;var Ke=(((Kg)-(Kf))&4294967295);Na=Ke;var Kd=Na;var Kc=(((Kd))|0)<0;if(Kc){Bd=197}else{Bd=198}if(Bd==197){Na=0}var Kb=Na;var Ka=(((Kb))&255);var J9=Di;var JY=((J9+20)&4294967295);la[((JY)>>0)]=Ka}}while(0);var JX=Di;var JW=((JX+20)&4294967295);var JV=ll[((JW)>>0)];var JU=oD((JV),8,0);var JT=Di;var JS=((JT+21)&4294967295);var JR=ll[((JS)>>0)];var JQ=oD((JR),8,0);var JP=Di;var JE=((JP+20)&4294967295);var JC=ll[((JE)>>0)];var JA=oD((JC),8,0);var Jy=(((JQ)-(JA))&4294967295);var Jw=Di;var Ju=((Jw+14)&4294967295);var Js=ll[((Ju)>>0)];var Jp=oD((Js),8,0);var Jn=((lx+Jp*4)&4294967295);var Jl=uA[((Jn)>>2)];var I8=((Jl+127)&4294967295);var I6=ll[((I8)>>0)];var I4=oD((I6),8,0);var I2=(((I4)*(Jy))&4294967295);var I0=(((((I2))|0)/256)|0);var IX=(((I0)+(JU))&4294967295);Hh=IX;AM=0;LY=0}var IV=Ev;var IT=(((IV)+1)&4294967295);Ev=IT;var IR=uA[((xn)>>2)];var IP=Ev;var ID=(((IP))|0)<(((IR))|0);if(ID){Bd=2;continue $bb$4}else{Bd=201;break $bb_lr_ph$$return$2}}}}while(0);vp=B6;return;return}function vu(AI,A4,Ba){var A7;var AT;var Bu;var Bn;var Bq;var Bv;var A6;var A3;var Bw;Bq=AI;Bv=A4;A6=Ba;var Bt=Bv;A3=Bt;var Bs=A6;var Br=(((Bs))|0)!=0;if(Br){A7=1}else{A7=3}$bb$$bb2$2:do{if(A7==1){var Bp=Bq;var Bo=(((Bp))|0)<=4;if(!(Bo)){A7=3;break $bb$$bb2$2}var Bm=Bq;var Bk=((sn+Bm*4)&4294967295);var Bi=uA[((Bk)>>2)];Bw=Bi;var Bg=Bw;var A1=Bv;var AZ=(((A1)*(Bg))&4294967295);var AX=(((((AZ))|0)/100)|0);var AV=Bw;var AS=(((AV)+(AX))&4294967295);A3=AS}}while(0);var AQ=Bq;var AO=((((s9+4)&4294967295)+AQ*4)&4294967295);var AM=A3;uA[((AO)>>2)]=AM;var AK=Bq;if(AK==1){A7=4}else{if(AK==2){A7=5}else{if(AK==3){A7=6}else{if(AK==4){A7=11}else{if(AK==7){A7=15}else{if(AK==9){A7=16}else{if(AK==13){A7=14}else{A7=19}}}}}}}if(A7==4){var AJ=A3;uA[((((aI+8)&4294967295))>>2)]=AJ;var e=A3;uA[((((aI+32)&4294967295))>>2)]=e;jF(3)}else{if(A7==5){var BF=A3;uA[((((aI+12)&4294967295))>>2)]=BF;var BE=uA[((((aI+12)&4294967295))>>2)];var BD=(((BE)*55)&4294967295);var BC=(((((BD))|0)/100)|0);Bn=BC;var BB=uA[((((aI+52)&4294967295))>>2)];var BA=((hN+BB)&4294967295);var Bz=ll[((BA)>>0)];var By=oD((Bz),8,0);var Bx=Bn;var Bl=(((By)*(Bx))&4294967295);var Bj=(((((Bl))|0)/16)|0);uA[((W)>>2)]=Bj;var Bh=uA[((W)>>2)];Bu=Bh;var Bf=Bu;AT=Bf}else{if(A7==6){var Be=A3;var Bd=(((Be))|0)>99;if(Bd){A7=7}else{A7=8}$bb7_thread$$bb7$10:do{if(A7==7){A3=99}else{if(A7==8){var Bc=(((Be))|0)<0;if(!(Bc)){A7=10;break $bb7_thread$$bb7$10}A3=0}}}while(0);var Bb=A3;uA[((((aI+4)&4294967295))>>2)]=Bb}else{if(A7==11){var A9=A3;var A8=(((A9))|0)>99;if(A8){A7=12}else{A7=13}if(A7==12){A3=99}var A5=A3;uA[((((aI+16)&4294967295))>>2)]=A5}else{if(A7==15){var A0=A3;uA[((xY)>>2)]=A0}else{if(A7==16){var AY=A3;var AW=(AY)&255;var AU=(((AW))|0)!=0;if(AU){A7=17}else{A7=18}if(A7==17){var AR=uA[((xy)>>2)];var AP=A3;var AN=(AP)&255;var AL=((AR)&4294967295);var AH=((AL+228)&4294967295);uA[((AH)>>2)]=AN}var i=A3;uA[((tR)>>2)]=i}else{if(A7==14){var A2=A3;uA[((u1)>>2)]=A2}}}}}}}return;return}function lZ(Dy,AY,CF){var Be=vp;vp+=144;n1(Be,0,144);var BD;var Cc=null;var AZ;var Br;var Bq;var Db;var Dx;var C0=Be;var Dv;var AL;var B0;var BP;var Dw;var Da=Be+4;var BG=Be+12;var B5;var BC;var Bn;var Cd;var Cg;var Cl;var B4;var Cy;var Cx;var Cw;var AM;var Co=Be+16;var Cm=Be+48;var A2=Be+80;var A0=Be+112;B5=Dy;BC=AY;Bn=CF;B4=0;Cy=0;Cx=0;AM=0;var Du=((A0)&4294967295);la[((Du)>>0)]=0;var Dt=BC;var Ds=(((Dt))>>>0)<=223;var Dr=BC;var Dq=(((Dr))>>>0)>382;var CK=(Ds)|(Dq);var Dp=BC;if(CK){BD=2}else{BD=1}if(BD==2){var Cf=(((Dp))>>>0)>591;var Ce=BC;var Cb=(((Ce))>>>0)<=680;var Df=(Cf)&(Cb);if(Df){BD=3}else{BD=4}if(BD==3){var Ca=BC;var B9=(((Ca)-592)&4294967295);var B8=((cD+B9*2)&4294967295);var B7=xV[((B8)>>1)];var B6=oD((B7),16,0);B4=B6;Cc=3}else{if(BD==4){var AO=B4;Cc=4}}}else{if(BD==1){var Do=(((Dp)-224)&4294967295);var Dn=((hG+Do*2)&4294967295);var Ck=xV[((Dn)>>1)];var Ci=oD((Ck),16,0);B4=Ci;Cc=1}}var BZ=Cc==4?AO:(Cc==3?B6:(Ci));var BY=(((BZ))|0)!=0;if(BY){BD=6}else{BD=24}$bb6$$return$9:do{if(BD==6){var BX=B4;var BW=(BX)&63;var BV=(((BW)+59)&4294967295);Cw=BV;var BU=Cw;var BT=(((BU))|0)<=96;if(BT){BD=7}else{BD=8}if(BD==7){var BS=Cw;var BR=(((BS)-59)&4294967295);var BQ=((ce+BR*2)&4294967295);var BO=uW[((BQ)>>1)];var BN=iB((BO),16,0);Cw=BN}var BM=B4;var BL=(BM)&32768;var BK=(((BL))|0)!=0;var BJ=B4;var BI=(((BJ))|0)>>6;if(BK){BD=9}else{BD=10}if(BD==9){var BH=(BI)&63;AM=BH;var BF=AM;var BE=(((BF)+59)&4294967295);AM=BE;var BB=B4;var BA=(((BB))|0)>>12;var Bz=(BA)&7;Cx=Bz}else{if(BD==10){var By=(BI)&31;Cy=By;var Bx=B4;var Bw=(((Bx))|0)>>11;var Bv=(Bw)&15;Cx=Bv}}var Bu=Cy;var Bt=((oz+Bu*8)&4294967295);var Bs=((Bt)&4294967295);var Bm=uA[((Bs)>>2)];var Bl=B5;var Bk=((A2)&4294967295);Dv=Bl;AL=Bm;B0=Bk;var Bj=((Da+4)&4294967295);uA[((Bj)>>2)]=0;var Bi=((Da+4)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=((Da)&4294967295);uA[((Bg)>>2)]=Bh;var Bf=AL;uA[((BG)>>2)]=Bf;var Bd=Dv;var Bc=B0;var Bb=((Da)&4294967295);var Ba=tN(Bd,BG,Bc,Bb,0,0);Dw=Ba;var A9=Dw;BP=A9;var AI=BP;var A8=(((AI))|0)!=0;var A7=oD((A8),1,0);Cl=A7;var Bp=iB((A7),8,0)!=0;if(!(Bp)){BD=24;break $bb6$$return$9}var A6=Cw;var A5=B5;var A4=((Co)&4294967295);var A3=jz(A5,A6,A4);var A1=(((A3))|0)!=0;var AX=oD((A1),1,0);Cg=AX;var AW=Cg;var C2=iB((AW),8,0)!=0;if(!(C2)){BD=24;break $bb6$$return$9}var AV=Cx;var AU=(((AV))|0)!=0;if(AU){BD=14}else{BD=16}$bb15$$bb18$20:do{if(BD==14){var AT=Cx;var AS=((oz+AT*8)&4294967295);var AR=((AS)&4294967295);var AQ=uA[((AR)>>2)];var AP=B5;var AN=((A0)&4294967295);AZ=AP;Br=AQ;Bq=AN;var AK=((Da+4)&4294967295);uA[((AK)>>2)]=0;var AJ=((Da+4)&4294967295);var AH=uA[((AJ)>>2)];var i=((Da)&4294967295);uA[((i)>>2)]=AH;var e=Br;uA[((C0)>>2)]=e;var DD=AZ;var DC=Bq;var DB=((Da)&4294967295);var DA=tN(DD,C0,DC,DB,0,0);Dx=DA;var Dz=Dx;Db=Dz;var Bo=Db;var Dm=(((Bo))|0)==0;var Dl=oD((Dm),1,0);Cd=Dl;var Dk=Cx;var Dj=((oz+Dk*8)&4294967295);var Di=((Dj+4)&4294967295);var Dh=uA[((Di)>>2)];var Dg=(Dh)&1;var De=(((Dg))&255);var CX=iB((De),8,0)!=0;if(!(CX)){BD=16;break $bb15$$bb18$20}var Dd=Bn;var Dc=((A0)&4294967295);var C9=oJ(Dd,Dc);var C8=Bn;var C7=wg(C8);var C6=Bn;var C5=((C6+C7)&4294967295);Bn=C5;var C4=((A0)&4294967295);la[((C4)>>0)]=0}}while(0);var C3=AM;var C1=(((C3))|0)!=0;if(C1){BD=17}else{BD=18}if(BD==17){var CZ=AM;var CY=B5;var CW=((Cm)&4294967295);var CV=jz(CY,CZ,CW);var CU=Bn;var CT=((A2)&4294967295);var CS=((Co)&4294967295);var CR=((Cm)&4294967295);var CQ=((A0)&4294967295);var CP=qs(CU,((cP)&4294967295),CT,23,CS,6,CR,CQ)}else{if(BD==18){var CN=Cy;var CM=(((CN))|0)==0;if(CM){BD=19}else{BD=20}if(BD==19){var CJ=Bn;var CI=((Co)&4294967295);var CH=oJ(CJ,CI)}else{if(BD==20){var CG=B5;var CE=((CG)&4294967295);var CD=((CE+220)&4294967295);var CC=uA[((CD)>>2)];var CB=(CC)&1;var CA=(((CB))&255);var CO=iB((CA),8,0)!=0;if(CO){BD=22}else{BD=21}$bb26$$bb24$30:do{if(BD==21){var Cz=Cy;var Cv=((oz+Cz*8)&4294967295);var Cu=((Cv+4)&4294967295);var Ct=uA[((Cu)>>2)];var Cs=(Ct)&1;var Cr=(((Cs))&255);var CL=iB((Cr),8,0)!=0;if(CL){BD=22;break $bb26$$bb24$30}var Ch=Bn;var B3=((Co)&4294967295);var B2=((A2)&4294967295);var B1=qs(Ch,((tQ)&4294967295),4,B3,23,B2,23);BD=24;break $bb6$$return$9}}while(0);var Cq=Bn;var Cp=((A2)&4294967295);var Cn=((Co)&4294967295);var Cj=qs(Cq,((lT)&4294967295),Cp,23,6,Cn)}}}}}}while(0);vp=Be;return;return}function jt(Bc,A9,Bz,Cj){var A3=vp;vp+=160;n1(A3,0,160);var Bw;var Bb=null;var Bx;var By;var B1;var AV;var AU;var AW;var AT;var BF;var Ci;var BW;var A8=A3;Bx=Bc;By=A9;B1=Bz;AV=Cj;Ci=0;AT=0;var Ch=By;var Cg=AT;var Cf=((Ch+Cg)&4294967295);var Ce=la[((Cf)>>0)];var Cd=iB((Ce),8,0);BF=Cd;var Cc=BF;var Cb=(((Cc))|0)!=0;var Ca=oD((Cb),1,0);AW=Ca;if(Cb){Bb=-1;Bw=1}else{Bb=-1;Bw=4}$bb$$bb4$2:do{if(Bw==1){while(1){var B9=Bb==-1?Cc:(Bk);var B8=(((B9))|0)==6;if(B8){Bw=2}else{Bw=3}if(Bw==2){var BP=Ci;var BN=(((BP)+1)&4294967295);Ci=BN}var BL=AT;var BJ=BF;var BH=(((BJ))&255);var BE=((A8+BL)&4294967295);la[((BE)>>0)]=BH;var BD=AT;var BC=(((BD)+1)&4294967295);AT=BC;var BB=By;var BA=AT;var Bq=((BB+BA)&4294967295);var Bo=la[((Bq)>>0)];var Bm=iB((Bo),8,0);BF=Bm;var Bk=BF;var Bi=(((Bk))|0)!=0;var Bh=oD((Bi),1,0);AW=Bh;var Ba=iB((Bh),8,0)!=0;if(Ba){Bb=3;Bw=1;continue}else{Bb=3;Bw=4;break $bb$$bb4$2}}}}while(0);var Bg=AT;var Bf=((A8+Bg)&4294967295);la[((Bf)>>0)]=0;BW=0;AT=0;var Be=AT;var Bd=((A8+Be)&4294967295);var A7=ll[((Bd)>>0)];var A6=oD((A7),8,0);BF=A6;var A5=(((A6))|0)!=0;var A4=oD((A5),1,0);AU=A4;if(A5){Bb=4;Bw=5}else{Bb=4;Bw=26}$bb5$$bb30$9:do{if(Bw==5){$bb5$10:while(1){var A2=Bb==4?A6:(Bv);var A1=(((A2))|0)!=6;if(A1){Bb=5;Bw=15}else{Bb=5;Bw=6}$bb16$$bb6$12:do{if(Bw==6){var A0=AV;var AZ=(((A0))|0)<=1;if(AZ){Bw=14}else{Bw=7}if(Bw==14){var AS=BF;Bb=14;Bw=15;break $bb16$$bb6$12}else{if(Bw==7){var AY=BW;var AX=(((AY)+1)&4294967295);BW=AX;var AR=Bx;var AQ=((AR)&4294967295);var AP=((AQ+249)&4294967295);var AO=la[((AP)>>0)];var AN=iB((AO),8,0)==1;var AM=BW;if(AN){Bw=8}else{Bw=10}if(Bw==8){var AL=(((AM))|0)>1;if(!(AL)){Bw=24;break $bb16$$bb6$12}BF=5;Bw=24;break $bb16$$bb6$12}else{if(Bw==10){var AK=Ci;var AJ=(((AM))|0)!=(((AK))|0);if(!(AJ)){Bw=24;break $bb16$$bb6$12}var AI=BW;var AH=(((AI))|0)%3;var i=(((AH))|0)!=0;if(i){Bw=13}else{Bw=12}if(Bw==12){var e=Ci;var Cq=(((e)-1)&4294967295);var Cp=BW;var Co=(((Cq))|0)==(((Cp))|0);if(!(Co)){Bw=24;break $bb16$$bb6$12}}BF=5;Bw=24;break $bb16$$bb6$12}}}}}}while(0);$bb16$$bb26$25:do{if(Bw==15){var Cn=Bb==14?AS:(A2);var Cm=(((Cn))|0)==255;if(!(Cm)){Bw=24;break $bb16$$bb26$25}var Cl=B1;var Ck=(((Cl))|0)<=1;if(Ck){Bw=25;break $bb16$$bb26$25}var B7=AT;var B6=(((B7))|0)==0;if(B6){Bw=25;break $bb16$$bb26$25}var B5=B1;var B4=(((B5))|0)==4;if(B4){Bw=19}else{Bw=20}if(Bw==19){BF=9}var B3=BW;var B2=(((B3))|0)%3;var B0=(((B2))|0)==0;if(B0){Bw=22}else{Bw=21}$bb24$$bb23$33:do{if(Bw==21){var BZ=B1;var BY=(((BZ))|0)>2;if(BY){Bw=22;break $bb24$$bb23$33}BF=23;Bw=24;break $bb16$$bb26$25}}while(0);BF=11;Bw=24;break $bb16$$bb26$25}}while(0);if(Bw==24){var BX=BF;var BU=(((BX))&255);var BT=By;la[((BT)>>0)]=BU;var BS=By;var BR=((BS+1)&4294967295);By=BR}var BQ=AT;var BO=(((BQ)+1)&4294967295);AT=BO;var BM=AT;var BK=((A8+BM)&4294967295);var BI=ll[((BK)>>0)];var BG=oD((BI),8,0);BF=BG;var Bv=BF;var Bu=(((Bv))|0)!=0;var Bt=oD((Bu),1,0);AU=Bt;var BV=iB((Bt),8,0)!=0;if(BV){Bb=25;Bw=5;continue $bb5$10}else{Bb=25;Bw=26;break $bb5$$bb30$9}}}}while(0);var Bs=B1;var Br=(((Bs))|0)>1;if(Br){Bw=27}else{Bw=28}if(Bw==27){var Bp=By;la[((Bp)>>0)]=11;var Bn=By;var Bl=((Bn+1)&4294967295);By=Bl}var Bj=By;la[((Bj)>>0)]=0;vp=A3;return;return}function hl(Bc,Bh,AR){var AS;var i;var A9;var Ba;var AT;var A8;i=Bc;A9=Bh;Ba=AR;var A7=i;var A6=((A7)&4294967295);var A5=la[((A6)>>0)];var A4=iB((A5),8,0)==97;if(A4){AS=2}else{AS=1}$bb1$$bb$2:do{if(AS==1){var A3=i;var A2=((A3)&4294967295);var A0=la[((A2)>>0)];var AY=iB((A0),8,0)==101;if(AY){AS=2;break $bb1$$bb$2}A8=0;AS=13;break $bb1$$bb$2}}while(0);$bb1$$bb12$5:do{if(AS==2){var AW=i;var AQ=((AW+1)&4294967295);var AP=la[((AQ)>>0)];var AO=iB((AP),8,0)==32;if(AO){AS=6}else{AS=3}$bb5$$bb2$7:do{if(AS==3){var AN=i;var AM=((AN+1)&4294967295);var AL=la[((AM)>>0)];var AK=iB((AL),8,0)==122;if(AK){AS=6;break $bb5$$bb2$7}var AJ=i;var AI=((AJ+1)&4294967295);var AH=la[((AI)>>0)];var e=iB((AH),8,0)!=116;if(e){AS=7}else{AS=5}if(AS==5){var Bm=i;var Bl=((Bm+2)&4294967295);var Bk=la[((Bl)>>0)];var Bj=iB((Bk),8,0)==116;if(Bj){AS=6;break $bb5$$bb2$7}}var Bi=A9;var Bg=(((Bi))|0)==1;if(Bg){AS=9}else{AS=8}$bb8$$bb7$13:do{if(AS==8){var Bf=Ba;var Be=(((Bf))|0)%1000;var Bd=(((Be))|0)==0;if(Bd){AS=9;break $bb8$$bb7$13}else{AS=11;break $bb8$$bb7$13}}}while(0);$bb8$$bb10$15:do{if(AS==9){var A1=i;var AZ=((A1+1)&4294967295);var AX=la[((AZ)>>0)];var AV=iB((AX),8,0)==108;if(!(AV)){AS=11;break $bb8$$bb10$15}A8=0;AS=13;break $bb1$$bb12$5}}while(0);A8=1;AS=13;break $bb1$$bb12$5}}while(0);A8=0}}while(0);var AU=A8;AT=AU;var Bb=AT;return Bb;return null}function hS(AQ){var AR;var Bd;var AS;var Bb;Bd=AQ;var Ba=uA[((xy)>>2)];var A9=((Ba)&4294967295);var A8=((A9+188)&4294967295);var A7=uA[((A8)>>2)];var A6=(A7)&256;var A5=(((A6))|0)==0;if(A5){AR=3}else{AR=1}$bb3$$bb$2:do{if(AR==1){var A3=Bd;var A1=(((A3))|0)<=1;var AZ=Bd;var AP=(((AZ))|0)>4;var Bc=(A1)|(AP);if(Bc){AR=3;break $bb3$$bb$2}Bb=((pb)&4294967295);AR=13;break $bb3$$bb$2}}while(0);$bb3$$bb13$5:do{if(AR==3){var AO=Bd;var AN=(((AO))|0)%100;var AM=(((AN))|0)<=9;if(AM){AR=5}else{AR=4}$bb5$$bb4$7:do{if(AR==4){var AL=Bd;var AK=(((AL))|0)%100;var AJ=(((AK))|0)>20;if(AJ){AR=5;break $bb5$$bb4$7}else{AR=12;break $bb5$$bb4$7}}}while(0);$bb5$$bb12$9:do{if(AR==5){var AI=uA[((xy)>>2)];var AH=((AI)&4294967295);var i=((AH+188)&4294967295);var e=uA[((i)>>2)];var Bn=(e)&64;var Bm=(((Bn))|0)!=0;if(Bm){AR=6}else{AR=9}$bb6$$bb9$11:do{if(AR==6){var Bl=Bd;var Bk=(((Bl))|0)%10;var Bj=(((Bk))|0)>1;if(!(Bj)){AR=9;break $bb6$$bb9$11}var Bi=Bd;var Bh=(((Bi))|0)%10;var Bg=(((Bh))|0)<=4;if(!(Bg)){AR=9;break $bb6$$bb9$11}Bb=((pb)&4294967295);AR=13;break $bb3$$bb13$5}}while(0);var Bf=uA[((xy)>>2)];var A4=((Bf)&4294967295);var A2=((A4+188)&4294967295);var A0=uA[((A2)>>2)];var AY=(A0)&128;var AX=(((AY))|0)!=0;if(!(AX)){AR=12;break $bb5$$bb12$9}var AW=Bd;var AV=(((AW))|0)%10;var AU=(((AV))|0)==1;if(!(AU)){AR=12;break $bb5$$bb12$9}Bb=((og)&4294967295);AR=13;break $bb3$$bb13$5}}while(0);Bb=((vV)&4294967295)}}while(0);var AT=Bb;AS=AT;var Be=AS;return Be;return null}function n9(A9,GX,BF,ES,Ct){var Bu=vp;vp+=164;n1(Bu,0,164);var Gc;var FA=null;var CQ;var EV;var DV;var CM;var C6;var BQ=Bu;var CS;var E1;var D8;var CU;var C5;var B3=Bu+4;var C7;var Fn;var Ek;var C9;var C4;var Cb=Bu+8;var Dm;var FI;var ED;var Da;var C3;var Ch=Bu+12;var Dr;var FN;var EM;var Ds;var C2;var Cr=Bu+16;var DF;var Ga;var E8;var DH;var C0;var CB=Bu+20;var DT;var Gp;var Fr;var DX;var CZ;var CG=Bu+24;var D5;var Gs;var Fz;var DY;var CY;var CH=Bu+28;var Ec;var GK;var FW;var Ee;var CX;var CI=Bu+32;var Er;var G8;var Ge;var Eu;var CW;var CL=Bu+36;var EC;var Gt;var Gf;var Ew;var FZ;var CT=Bu+40;var EL;var Gw;var Hc;var GW;var FY;var Et=Bu+44;var EY;var CK;var CO;var BS;var FX;var FU=Bu+48;var En=Bu+56;var Gg;var DA;var FM;var BR;var BT;var DR;var FV;var AR;var AT;var AV;var Cx;var CJ;var Gb=Bu+60;var A1=Bu+72;var BY=Bu+84;var DL=Bu+124;Gg=A9;DA=GX;FM=BF;BR=ES;BT=Ct;CJ=0;var FT=((A1)&4294967295);la[((FT)>>0)]=0;var FS=DA;var FR=(((FS))|0)>0;if(FR){Gc=1}else{Gc=12}$bb$$bb12thread_pre_split$2:do{if(Gc==1){var FQ=BR;var FP=(FQ)&1;var FO=(((FP))&255);var Gd=iB((FO),8,0)!=0;if(Gd){Gc=2}else{Gc=9}$bb1$$bb10thread_pre_split$4:do{if(Gc==2){var Fy=BR;var Fx=(Fy)&2;var Fw=(((Fx))|0)!=0;if(Fw){Gc=3}else{Gc=4}if(Gc==3){var Fv=((Gb)&4294967295);var Fu=DA;var Ft=FM;var Fs=qs(Fv,((ci)&4294967295),Fu,Ft);var Fq=Gg;var Fp=((Gb)&4294967295);var Fo=((BY)&4294967295);EY=Fq;CK=Fp;CO=Fo;var Fc=((FU+4)&4294967295);uA[((Fc)>>2)]=0;var Fb=((FU+4)&4294967295);var Fa=uA[((Fb)>>2)];var E9=((FU)&4294967295);uA[((E9)>>2)]=Fa;var E7=CK;uA[((En)>>2)]=E7;var E6=EY;var E5=CO;var E4=((FU)&4294967295);var E3=tN(E6,En,E5,E4,0,0);FX=E3;var E2=FX;BS=E2;var Gx=BS;CJ=Gx}var EN=CJ;var EK=(((EN))|0)==0;var EJ=oD((EK),1,0);var EI=uA[((v9)>>2)];var EH=(EI)&1;var EG=(((EH))&255);var Dp=iB((EJ),8,0)!=0;var Do=iB((EG),8,0)!=0;var EF=(Dp)&(Do);var EE=oD((EF),1,0);var Dl=iB((EE),8,0)!=0;if(Dl){Gc=5}else{Gc=6}if(Gc==5){var EB=((Gb)&4294967295);var EA=DA;var Eq=FM;var Ep=qs(EB,((lz)&4294967295),EA,Eq);var Eo=Gg;var Em=((Gb)&4294967295);var El=((BY)&4294967295);EL=Eo;Gw=Em;Hc=El;var Ej=((FU+4)&4294967295);uA[((Ej)>>2)]=0;var Ei=((FU+4)&4294967295);var Eh=uA[((Ei)>>2)];var Eg=((FU)&4294967295);uA[((Eg)>>2)]=Eh;var Ef=Gw;uA[((Et)>>2)]=Ef;var Ea=EL;var D9=Hc;var D7=((FU)&4294967295);var D6=tN(Ea,Et,D9,D7,0,0);FY=D6;var D4=FY;GW=D4;var Eb=GW;CJ=Eb;FA=5}else{if(Gc==6){var AK=CJ;FA=6}}var D3=FA==6?AK:(Eb);var D2=(((D3))|0)==0;if(!(D2)){Gc=9;break $bb1$$bb10thread_pre_split$4}var D1=((Gb)&4294967295);var D0=DA;var DZ=FM;var DU=qs(D1,((tD)&4294967295),D0,DZ);var DS=Gg;var DQ=((Gb)&4294967295);var DP=((BY)&4294967295);EC=DS;Gt=DQ;Gf=DP;var DO=((FU+4)&4294967295);uA[((DO)>>2)]=0;var DN=((FU+4)&4294967295);var DM=uA[((DN)>>2)];var DK=((FU)&4294967295);uA[((DK)>>2)]=DM;var DJ=Gt;uA[((CT)>>2)]=DJ;var DI=EC;var DE=Gf;var DD=((FU)&4294967295);var DB=tN(DI,CT,DE,DD,0,0);FZ=DB;var Dz=FZ;Ew=Dz;var Es=Ew;CJ=Es;FA=8;Gc=10;break $bb1$$bb10thread_pre_split$4}}while(0);if(Gc==9){var GV=CJ;FA=9}var Dy=FA==9?GV:(Es);var Dx=(((Dy))|0)==0;if(!(Dx)){Gc=12;break $bb$$bb12thread_pre_split$2}var Dw=((Gb)&4294967295);var Dv=DA;var Du=FM;var Dt=qs(Dw,((E)&4294967295),Dv,Du);var Dn=Gg;var Dk=((Gb)&4294967295);var Dj=((BY)&4294967295);Er=Dn;G8=Dk;Ge=Dj;var Di=((FU+4)&4294967295);uA[((Di)>>2)]=0;var Dh=((FU+4)&4294967295);var Dg=uA[((Dh)>>2)];var Df=((FU)&4294967295);uA[((Df)>>2)]=Dg;var De=G8;uA[((CL)>>2)]=De;var Dd=Er;var Dc=Ge;var CF=((FU)&4294967295);var CE=tN(Dd,CL,Dc,CF,0,0);CW=CE;var CD=CW;Eu=CD;var Ed=Eu;CJ=Ed;FA=11;Gc=13;break $bb$$bb12thread_pre_split$2}}while(0);if(Gc==12){var GU=CJ;FA=12}var CC=FA==12?GU:(Ed);var CA=(((CC))|0)==0;if(CA){Gc=14}else{Gc=36}$bb13$$bb37$21:do{if(Gc==14){var Cz=DA;var Cy=(((Cz))|0)%100;var Cw=(((Cy))|0)>19;if(Cw){Gc=15}else{Gc=16}if(Gc==15){var Cv=Gg;var Cu=((A1)&4294967295);Ec=Cv;GK=((i2)&4294967295);FW=Cu;var Cs=((FU+4)&4294967295);uA[((Cs)>>2)]=0;var Cq=((FU+4)&4294967295);var Cp=uA[((Cq)>>2)];var Co=((FU)&4294967295);uA[((Co)>>2)]=Cp;var Cn=GK;uA[((CI)>>2)]=Cn;var Cm=Ec;var Cl=FW;var Ck=((FU)&4294967295);var Cj=tN(Cm,CI,Cl,Ck,0,0);CX=Cj;var Ci=CX;Ee=Ci}Cx=0;var Cg=BR;var Cf=(Cg)&1;var Ce=(((Cf))&255);var Db=iB((Ce),8,0)!=0;if(Db){Gc=17}else{Gc=28}if(Gc==17){var Cd=BR;var Cc=(Cd)&2;var Ca=(((Cc))|0)!=0;if(Ca){Gc=18}else{Gc=19}if(Gc==18){var B9=DA;var B8=hS(B9);var B7=((Gb)&4294967295);var B6=FM;var B5=qs(B7,((qQ)&4294967295),B8,B6);var B4=Gg;var B2=((Gb)&4294967295);var B1=((BY)&4294967295);D5=B4;Gs=B2;Fz=B1;var B0=((FU+4)&4294967295);uA[((B0)>>2)]=0;var BZ=((FU+4)&4294967295);var BX=uA[((BZ)>>2)];var BW=((FU)&4294967295);uA[((BW)>>2)]=BX;var BV=Gs;uA[((CH)>>2)]=BV;var BU=D5;var BP=Fz;var BO=((FU)&4294967295);var BN=tN(BU,CH,BP,BO,0,0);CY=BN;var BM=CY;DY=BM;var DW=DY;Cx=DW;FA=18}else{if(Gc==19){var GS=Cx;FA=19}}var BL=FA==19?GS:(DW);var BK=(((BL))|0)==0;if(BK){Gc=21}else{Gc=23}$bb20$$bb23thread_pre_split$32:do{if(Gc==21){var BJ=uA[((v9)>>2)];var BI=(BJ)&1;var BH=(((BI))&255);var C1=iB((BH),8,0)!=0;if(!(C1)){Gc=23;break $bb20$$bb23thread_pre_split$32}var BG=DA;var BE=hS(BG);var BD=((Gb)&4294967295);var BC=FM;var BB=qs(BD,((x8)&4294967295),BE,BC);var BA=Gg;var Bz=((Gb)&4294967295);var By=((BY)&4294967295);DT=BA;Gp=Bz;Fr=By;var Bx=((FU+4)&4294967295);uA[((Bx)>>2)]=0;var Bw=((FU+4)&4294967295);var Bv=uA[((Bw)>>2)];var Bt=((FU)&4294967295);uA[((Bt)>>2)]=Bv;var Bs=Gp;uA[((CG)>>2)]=Bs;var Br=DT;var Bq=Fr;var Bp=((FU)&4294967295);var Bo=tN(Br,CG,Bq,Bp,0,0);CZ=Bo;var Bn=CZ;DX=Bn;var DG=DX;Cx=DG;FA=22;Gc=24;break $bb20$$bb23thread_pre_split$32}}while(0);if(Gc==23){var GQ=Cx;FA=23}var Bm=FA==23?GQ:(DG);var Bl=(((Bm))|0)==0;if(Bl){Gc=25}else{Gc=26}if(Gc==25){var Bj=DA;var A8=hS(Bj);var A7=((Gb)&4294967295);var A6=FM;var A5=qs(A7,((yu)&4294967295),A8,A6);var A4=Gg;var A3=((Gb)&4294967295);var A2=((BY)&4294967295);DF=A4;Ga=A3;E8=A2;var A0=((FU+4)&4294967295);uA[((A0)>>2)]=0;var AZ=((FU+4)&4294967295);var AX=uA[((AZ)>>2)];var AJ=((FU)&4294967295);uA[((AJ)>>2)]=AX;var AI=Ga;uA[((CB)>>2)]=AI;var AH=DF;var i=E8;var e=((FU)&4294967295);var Hf=tN(AH,CB,i,e,0,0);C0=Hf;var He=C0;DH=He;var DC=DH;Cx=DC;FA=25}else{if(Gc==26){var GO=Cx;FA=26}}var Hb=FA==26?GO:(DC);var Ha=(((Hb))|0)==0;if(!(Ha)){Gc=36;break $bb13$$bb37$21}}var G7=DA;var GT=hS(G7);var GR=((Gb)&4294967295);var GP=FM;var GN=qs(GR,((gh)&4294967295),GT,GP);var GM=Gg;var GL=((Gb)&4294967295);var GJ=((BY)&4294967295);Dr=GM;FN=GL;EM=GJ;var GI=((FU+4)&4294967295);uA[((GI)>>2)]=0;var GH=((FU+4)&4294967295);var GF=uA[((GH)>>2)];var Bk=((FU)&4294967295);uA[((Bk)>>2)]=GF;var Bi=FN;uA[((Cr)>>2)]=Bi;var Bh=Dr;var Bg=EM;var Bf=((FU)&4294967295);var Be=tN(Bh,Cr,Bg,Bf,0,0);C2=Be;var Bd=C2;Ds=Bd;var Dq=Ds;var Bc=(((Dq))|0)==0;var Bb=oD((Bc),1,0);AV=Bb;var CV=iB((Bb),8,0)!=0;if(!(CV)){Gc=36;break $bb13$$bb37$21}var Ba=FM;var AY=(((Ba))|0)>3;if(AY){Gc=30}else{Gc=32}$bb29$$bb32$44:do{if(Gc==30){var AW=FM;var AU=(((AW)-1)&4294967295);var AS=((Gb)&4294967295);var AQ=qs(AS,((oa)&4294967295),AU);var AP=Gg;var AO=((Gb)&4294967295);var AN=((DL)&4294967295);Dm=AP;FI=AO;ED=AN;var AM=((FU+4)&4294967295);uA[((AM)>>2)]=0;var AL=((FU+4)&4294967295);var G9=uA[((AL)>>2)];var G6=((FU)&4294967295);uA[((G6)>>2)]=G9;var G5=FI;uA[((Ch)>>2)]=G5;var G4=Dm;var G3=ED;var G2=((FU)&4294967295);var G1=tN(G4,Ch,G3,G2,0,0);C3=G1;var G0=C3;Da=G0;var C8=Da;var GZ=(((C8))|0)==0;var GY=oD((GZ),1,0);AT=GY;var GG=AT;var CP=iB((GG),8,0)!=0;if(!(CP)){Gc=32;break $bb29$$bb32$44}var GE=Gg;var GD=((BY)&4294967295);C7=GE;Fn=((vT)&4294967295);Ek=GD;var GC=((FU+4)&4294967295);uA[((GC)>>2)]=0;var GB=((FU+4)&4294967295);var GA=uA[((GB)>>2)];var Gz=((FU)&4294967295);uA[((Gz)>>2)]=GA;var Gy=Fn;uA[((Cb)>>2)]=Gy;var Gv=C7;var Gu=Ek;var Gr=((FU)&4294967295);var Gq=tN(Gv,Cb,Gu,Gr,0,0);C4=Gq;var Go=C4;C9=Go;uA[((u)>>2)]=3}}while(0);var Gn=((BY)&4294967295);var Gm=la[((Gn)>>0)];var Gl=iB((Gm),8,0)==0;if(!(Gl)){Gc=36;break $bb13$$bb37$21}var Gk=((Gb)&4294967295);var Gj=DA;var Gi=qs(Gk,((cb)&4294967295),Gj);var Gh=Gg;var F9=((Gb)&4294967295);var F8=((BY)&4294967295);CS=Gh;E1=F9;D8=F8;var F7=((FU+4)&4294967295);uA[((F7)>>2)]=0;var F6=((FU+4)&4294967295);var F5=uA[((F6)>>2)];var F4=((FU)&4294967295);uA[((F4)>>2)]=F5;var F3=E1;uA[((B3)>>2)]=F3;var F2=CS;var F1=D8;var F0=((FU)&4294967295);var FL=tN(F2,B3,F1,F0,0,0);C5=FL;var FK=C5;CU=FK;var CR=CU;CJ=CR;var FJ=CJ;var FH=(((FJ))|0)==0;var FG=oD((FH),1,0);AR=FG;var FF=AR;var CN=iB((FF),8,0)!=0;if(CN){Gc=34}else{Gc=35}if(Gc==34){var FE=Gg;var FD=((BY)&4294967295);CQ=FE;EV=((lt)&4294967295);DV=FD;var FC=((FU+4)&4294967295);uA[((FC)>>2)]=0;var FB=((FU+4)&4294967295);var Fm=uA[((FB)>>2)];var Fl=((FU)&4294967295);uA[((Fl)>>2)]=Fm;var Fk=EV;uA[((BQ)>>2)]=Fk;var Fj=CQ;var Fi=DV;var Fh=((FU)&4294967295);var Fg=tN(Fj,BQ,Fi,Fh,0,0);C6=Fg;var Ff=C6;CM=Ff}uA[((u)>>2)]=2}}while(0);var Fe=BT;var Fd=((A1)&4294967295);var E0=((BY)&4294967295);var EZ=qs(Fe,((tx)&4294967295),Fd,E0);var EX=DA;var EW=(((EX))|0)==1;if(EW){Gc=37}else{Gc=40}$bb38$$bb41$53:do{if(Gc==37){var EU=FM;var ET=(((EU))|0)==1;if(!(ET)){Gc=40;break $bb38$$bb41$53}var ER=Gg;var EQ=((ER)&4294967295);var EP=((EQ+184)&4294967295);var EO=uA[((EP)>>2)];var Ez=(EO)&2097152;var Ey=(((Ez))|0)!=0;if(!(Ey)){Gc=40;break $bb38$$bb41$53}FV=1;Gc=41;break $bb38$$bb41$53}}while(0);if(Gc==40){var Ex=CJ;FV=Ex}var Ev=FV;DR=Ev;var Hd=DR;vp=Bu;return Hd;return null}function sC(C5,Cc,Bc,BL,Cb){var Bf=vp;vp+=4;n1(Bf,0,4);var Bz;var BX;var CK;var C4;var BZ;var By;var CO;var C3;var CI;var Ce;var BK;var C2;var BY;var CB;var AL;var Ba;var AW;var AH;var C1;var A9;var Cp;var Bb;var AY;var BW=Bf;var B9;BY=C5;CB=Cc;AL=Bc;Ba=BL;AW=Cb;AY=0;var C0=BY;var CZ=((C0)&4294967295);var CY=((CZ+184)&4294967295);var CX=uA[((CY)>>2)];var CW=(CX)&65536;var CV=(((CW))|0)!=0;if(CV){Bz=1}else{Bz=35}$bb$$bb35$2:do{if(Bz==1){var Ca=AL;var B8=((Ca)&4294967295);var B7=la[((B8)>>0)];var B6=iB((B7),8,0)==46;if(B6){Bz=3}else{Bz=2}if(Bz==2){var B5=Ba;var B4=((B5)&4294967295);var B3=((B4)&4294967295);var B2=uA[((B3)>>2)];var B1=(B2)&65536;var B0=(((B1))|0)!=0;if(!(B0)){Bz=35;break $bb$$bb35$2}}var BV=Ba;var BU=((BV+12)&4294967295);var BT=((BU)&4294967295);var BS=uA[((BT)>>2)];var BR=(BS)&256;var BQ=(((BR))|0)==0;if(!(BQ)){Bz=35;break $bb$$bb35$2}var BP=AW;var BO=(((BP))|0)!=0;if(BO){Bz=6}else{Bz=5}if(Bz==5){var BN=Ba;var BM=((BN+12)&4294967295);var BJ=((BM)&4294967295);var BI=uA[((BJ)>>2)];var BH=(BI)&2;var BG=(((BH))|0)==0;if(!(BG)){Bz=35;break $bb$$bb35$2}}var BF=AL;var BE=((BF)&4294967295);var BD=la[((BE)>>0)];var BC=iB((BD),8,0)==46;var BB=AL;if(BC){Bz=7}else{Bz=8}if(Bz==7){var BA=((BB+2)&4294967295);CI=BW;Ce=BA;var Bx=CI;var Bw=Ce;var Bv=F(Bx,Bw,0);C2=Bv;var Bu=C2;BK=Bu}else{if(Bz==8){var Bt=((BB)&4294967295);BZ=BW;By=Bt;var Bs=BZ;var Br=By;var Bq=F(Bs,Br,0);C3=Bq;var Bp=C3;CO=Bp}}var Bo=AL;var Bn=((Bo)&4294967295);var Bm=la[((Bn)>>0)];var Bl=iB((Bm),8,0)==0;if(Bl){Bz=14}else{Bz=10}$bb15$$bb9$15:do{if(Bz==10){var Bk=AL;var Bj=((Bk+1)&4294967295);var Bi=la[((Bj)>>0)];var Bh=iB((Bi),8,0)==0;if(Bh){Bz=14;break $bb15$$bb9$15}var Bg=uA[((BW)>>2)];var Be=(((Bg))|0)==0;if(Be){Bz=15}else{Bz=12}$bb16$$bb11$18:do{if(Bz==12){var Bd=Ba;var A8=((Bd)&4294967295);var A7=((A8)&4294967295);var A6=uA[((A7)>>2)];var A5=(A6)&131072;var A4=(((A5))|0)!=0;if(A4){Bz=15;break $bb16$$bb11$18}var A3=uA[((BW)>>2)];var A2=kr(A3);var A1=(((A2))|0)!=0;if(!(A1)){Bz=14;break $bb15$$bb9$15}}}while(0);Cp=1;Bb=1;AY=2;var A0=AL;var AZ=((A0)&4294967295);var AV=la[((AZ)>>0)];var AU=iB((AV),8,0)==46;if(AU){Bz=16}else{Bz=17}if(Bz==16){var AT=AL;var AS=((AT)&4294967295);la[((AS)>>0)]=32}var AR=AW;var AQ=(((AR))|0)==0;if(!(AQ)){Bz=35;break $bb$$bb35$2}var AP=BY;var AO=((AP+280)&4294967295);var AN=uA[((AO)>>2)];var AM=(((AN))|0)==26741;if(!(AM)){Bz=35;break $bb$$bb35$2}B9=0;var AK=uA[((BW)>>2)];var AJ=kr(AK);var AI=(((AJ))|0)!=0;var i=oD((AI),1,0);A9=i;var e=A9;var Cr=iB((e),8,0)!=0;if(Cr){Bz=20}else{Bz=21}if(Bz==20){var Da=AL;var C9=((Da+2)&4294967295);var C8=BY;var C7=kY(C8,C9,0,0);B9=C7}var C6=BY;var CU=((C6+8320)&4294967295);var CT=uA[((CU)>>2)];var CS=(CT)&1048576;var CR=(((CS))|0)!=0;if(CR){Bz=22}else{Bz=28}$bb24$$bb28$30:do{if(Bz==22){var CQ=uA[((BW)>>2)];var CP=(((CQ))|0)==0;if(CP){Bz=27}else{Bz=23}$bb27$$bb25$32:do{if(Bz==23){var CN=Ba;var CM=((CN)&4294967295);var CL=((CM)&4294967295);var CJ=uA[((CL)>>2)];var CH=(CJ)&131072;var CG=(((CH))|0)!=0;if(CG){Bz=27;break $bb27$$bb25$32}var CF=uA[((BW)>>2)];BX=CF;var CE=BX;var CD=(((CE))>>>0)<=255;if(CD){Bz=26}else{Bz=25}if(Bz==26){var CC=BX;var CA=(((CC)-48)&4294967295);var Cz=(((CA))>>>0)<=9;var Cy=oD((Cz),1,0);C4=Cy;CK=Cy;var Cx=(((Cy))|0)!=0;if(!(Cx)){Bz=28;break $bb24$$bb28$30}}else{if(Bz==25){C4=0;CK=0;Bz=28;break $bb24$$bb28$30}}}}while(0);AY=0}}while(0);var Cw=B9;var Cv=(Cw)&1048576;var Cu=(((Cv))|0)!=0;if(Cu){Bz=29}else{Bz=30}if(Bz==29){AY=0}var Ct=B9;var Cs=(Ct)&4194304;var Cq=(((Cs))|0)!=0;if(!(Cq)){Bz=35;break $bb$$bb35$2}var Co=CB;var Cn=((Co+-2)&4294967295);var Cm=la[((Cn)>>0)];var Cl=iB((Cm),8,0)==45;if(Cl){Bz=32}else{Bz=33}if(Bz==32){AY=0}var Ck=BY;var Cj=((Ck+8320)&4294967295);var Ci=uA[((Cj)>>2)];var Ch=(Ci)&5242880;var Cg=(((Ch))|0)!=0;if(!(Cg)){Bz=35;break $bb$$bb35$2}AY=34;Bz=35;break $bb$$bb35$2}}while(0);Cp=0;Bb=0}}while(0);var Cf=AY;C1=Cf;var Cd=C1;AH=Cd;var AX=AH;vp=Bf;return AX;return null}function wI(Bl,Js,JI,BX){var B2=vp;vp+=228;n1(B2,0,228);var Bi;var Jv=null;var Kx;var Jd;var LX;var IA;var Db;var Cp=B2;var KO;var Jq;var Mg;var IC;var C9;var Cs=B2+4;var KS;var Jt;var Ml;var IO;var C8;var Cv=B2+8;var J5;var A7;var HF;var JJ;var C7;var Kh=B2+12;var Kj;var Bk;var H0;var JK;var C6;var Ki=B2+16;var Ky;var Bn;var H2;var JM;var C5;var Kw=B2+20;var KB;var Bz;var In;var JV;var C4;var KN=B2+24;var KT;var BL;var Iz;var J8;var C2;var KQ=B2+28;var K8;var BZ;var IB;var Kg;var C1;var K5=B2+32;var Ld;var B1;var IN;var Kr;var C0;var Lq=B2+36;var Lt;var Cf;var I1;var KF;var FX;var LH=B2+40;var LJ;var Ct;var Jf;var KM;var FW;var LI=B2+44;var LP;var Cu;var Jg;var K2;var FV;var LY=B2+48;var L1;var Cx;var Ju;var Lg;var FU;var Mk=B2+52;var AI;var Cy;var JG;var Lw;var FT;var i=B2+56;var J0;var Cz;var JH;var LE;var FS;var A6=B2+60;var J1;var EP;var Gm;var L5;var FR;var A5=B2+64;var CZ;var AP;var B0;var Ga;var FQ;var Ch=B2+68;var By=B2+76;var FY;var F2;var Ea;var KC;var Iy;var FP;var LZ;var I0;var Mj;var Mm;var e;var JO;var Do;var LW;var Bj;var CO;var Bm;var JN;var CN;var JL=B2+80;var H1=B2+92;var Kv=B2+112;var I5=B2+164;var A4=B2+216;FY=Bl;F2=Js;Ea=JI;KC=BX;CO=0;Bm=0;CN=111;var FO=F2;var FN=(((FO))|0)%10;LW=FN;var FM=F2;var FL=(((((FM))|0)/10)|0);Bj=FL;JO=0;var FK=((H1)&4294967295);la[((FK)>>0)]=0;var FJ=((Kv)&4294967295);la[((FJ)>>0)]=0;var FI=((I5)&4294967295);la[((FI)>>0)]=0;var FH=((A4)&4294967295);la[((FH)>>0)]=0;var FG=Ea;var FF=(FG)&32;var FE=(((FF))|0)!=0;if(FE){Bi=1}else{Bi=2}if(Bi==1){CN=113}var FD=Ea;var FC=(FD)&2;var FB=(((FC))|0)==0;var FA=uA[((lI)>>2)];var Fz=(((FA))|0)!=2;var Je=(FB)|(Fz);var Fy=uA[((hy)>>2)];if(Je){Bi=4}else{Bi=3}$bb4$$bb3$5:do{if(Bi==4){var Fv=((Fy)&4294967295);var Fu=la[((Fv)>>0)];var Fj=iB((Fu),8,0)==0;if(Fj){Bi=5}else{Bi=23}$bb5$$bb22$7:do{if(Bi==5){var Fi=Ea;var Fh=(Fi)&8;var Fg=(((Fh))|0)!=0;if(Fg){Bi=6}else{Bi=7}if(Bi==6){var Ff=((JL)&4294967295);var Fe=F2;var Fd=qs(Ff,((w)&4294967295),Fe);var Fc=FY;var Fb=((JL)&4294967295);var Fa=((I5)&4294967295);CZ=Fc;AP=Fb;B0=Fa;var EZ=((Ch+4)&4294967295);uA[((EZ)>>2)]=0;var EY=((Ch+4)&4294967295);var EX=uA[((EY)>>2)];var EW=((Ch)&4294967295);uA[((EW)>>2)]=EX;var EV=AP;uA[((By)>>2)]=EV;var EU=CZ;var ET=B0;var ES=((Ch)&4294967295);var ER=tN(EU,By,ET,ES,0,0);FQ=ER;var EQ=FQ;Ga=EQ;var LG=Ga;JO=LG;Jv=6}else{if(Bi==7){var EE=Ea;var ED=(EE)&1;var EC=(((ED))&255);var KR=iB((EC),8,0)!=0;if(KR){Bi=8}else{Bi=14}if(Bi==8){var EB=((H1)&4294967295);var EA=oJ(EB,((X)&4294967295));var Ez=Ea;var Ey=(Ez)&4;var Ex=(((Ey))|0)!=0;if(Ex){Bi=9}else{Bi=10}if(Bi==9){var Ew=((JL)&4294967295);var Ev=F2;var Ek=CN;var Ej=qs(Ew,((iR)&4294967295),Ev,Ek);var Ei=FY;var Eh=((JL)&4294967295);var Eg=((I5)&4294967295);J1=Ei;EP=Eh;Gm=Eg;var Ef=((Ch+4)&4294967295);uA[((Ef)>>2)]=0;var Ee=((Ch+4)&4294967295);var Ed=uA[((Ee)>>2)];var Ec=((Ch)&4294967295);uA[((Ec)>>2)]=Ed;var Eb=EP;uA[((A5)>>2)]=Eb;var DZ=J1;var DY=Gm;var DX=((Ch)&4294967295);var DW=tN(DZ,A5,DY,DX,0,0);FR=DW;var DV=FR;L5=DV;var J2=L5;JO=J2;Jv=9}else{if(Bi==10){var Gw=JO;Jv=10}}var DU=Jv==10?Gw:(J2);var DT=(((DU))|0)==0;if(DT){Bi=12}else{Bi=13}if(Bi==12){var DS=((JL)&4294967295);var DR=F2;var DQ=CN;var DF=qs(DS,((kL)&4294967295),DR,DQ);var DE=FY;var DD=((JL)&4294967295);var DC=((I5)&4294967295);J0=DE;Cz=DD;JH=DC;var DB=((Ch+4)&4294967295);uA[((DB)>>2)]=0;var DA=((Ch+4)&4294967295);var Dz=uA[((DA)>>2)];var Dy=((Ch)&4294967295);uA[((Dy)>>2)]=Dz;var Dx=Cz;uA[((A6)>>2)]=Dx;var Dw=J0;var Il=JH;var Ij=((Ch)&4294967295);var Ih=tN(Dw,A6,Il,Ij,0,0);FS=Ih;var If=FS;LE=If;var C3=LE;JO=C3}var Id=JO;Bm=Id;Jv=13}else{if(Bi==14){var Lr=JO;Jv=14}}}}var Ib=Jv==14?Lr:(Jv==13?Id:(LG));var H9=(((Ib))|0)==0;if(!(H9)){Bi=23;break $bb5$$bb22$7}var H7=Ea;var H5=(H7)&2;var H3=(((H5))|0)!=0;if(H3){Bi=17}else{Bi=19}if(Bi==17){var HY=uA[((v9)>>2)];var HW=(HY)&1;var HU=(((HW))&255);var AH=iB((HU),8,0)!=0;if(AH){Bi=18}else{Bi=20}if(Bi==18){var HS=((JL)&4294967295);var HQ=F2;var HO=qs(HS,((Ak)&4294967295),HQ);var HM=FY;var HK=((JL)&4294967295);var HI=((I5)&4294967295);AI=HM;Cy=HK;JG=HI;var HG=((Ch+4)&4294967295);uA[((HG)>>2)]=0;var HD=((Ch+4)&4294967295);var HB=uA[((HD)>>2)];var Hz=((Ch)&4294967295);uA[((Hz)>>2)]=HB;var Hx=Cy;uA[((i)>>2)]=Hx;var Hv=AI;var Ht=JG;var Hr=((Ch)&4294967295);var Hp=tN(Hv,i,Ht,Hr,0,0);FT=Hp;var Hn=FT;Lw=Hn;var CM=Lw;JO=CM;Jv=18}else{if(Bi==20){var Lp=JO;Jv=20}}}else{if(Bi==19){var Hl=((JL)&4294967295);var Hj=F2;var Hh=qs(Hl,((hK)&4294967295),Hj);var Hf=FY;var Hd=((JL)&4294967295);var Hb=((I5)&4294967295);L1=Hf;Cx=Hd;Ju=Hb;var G9=((Ch+4)&4294967295);uA[((G9)>>2)]=0;var G7=((Ch+4)&4294967295);var G5=uA[((G7)>>2)];var G3=((Ch)&4294967295);uA[((G3)>>2)]=G5;var G1=Cx;uA[((Mk)>>2)]=G1;var G0=L1;var GZ=Ju;var GY=((Ch)&4294967295);var GX=tN(G0,Mk,GZ,GY,0,0);FU=GX;var GW=FU;Lg=GW;var CL=Lg;JO=CL;Jv=19}}var GV=Jv==20?Lp:(Jv==18?CM:(CL));var GU=(((GV))|0)==0;if(!(GU)){Bi=23;break $bb5$$bb22$7}var GT=((JL)&4294967295);var GS=F2;var GR=qs(GT,((pA)&4294967295),GS);var GQ=FY;var GP=((JL)&4294967295);var GO=((I5)&4294967295);LP=GQ;Cu=GP;Jg=GO;var GN=((Ch+4)&4294967295);uA[((GN)>>2)]=0;var GM=((Ch+4)&4294967295);var GL=uA[((GM)>>2)];var GK=((Ch)&4294967295);uA[((GK)>>2)]=GL;var GJ=Cu;uA[((LY)>>2)]=GJ;var GI=LP;var GH=Jg;var GG=((Ch)&4294967295);var GF=tN(GI,LY,GH,GG,0,0);FV=GF;var GE=FV;K2=GE;var CA=K2;JO=CA}}while(0);var GD=Ea;var GC=(GD)&16;var GB=(((GC))|0)==0;if(GB){Bi=26}else{Bi=24}$bb25$$bb23$33:do{if(Bi==24){var GA=F2;var Gz=(((GA))|0)>9;if(Gz){Bi=26;break $bb25$$bb23$33}var Gy=FY;var Gx=((Kv)&4294967295);LJ=Gy;Ct=((xa)&4294967295);Jf=Gx;var Gv=((Ch+4)&4294967295);uA[((Gv)>>2)]=0;var Gu=((Ch+4)&4294967295);var Gt=uA[((Gu)>>2)];var Gs=((Ch)&4294967295);uA[((Gs)>>2)]=Gt;var Gr=Ct;uA[((LI)>>2)]=Gr;var Gq=LJ;var Gp=Jf;var Go=((Ch)&4294967295);var Gn=tN(Gq,LI,Gp,Go,0,0);FW=Gn;var Gl=FW;KM=Gl;Bi=61;break $bb25$$bb23$33}}while(0);$bb25$$bb67$36:do{if(Bi==26){var Gk=JO;var Gj=(((Gk))|0)!=0;if(Gj){Bi=27}else{Bi=28}if(Bi==27){var Gi=((Kv)&4294967295);la[((Gi)>>0)]=0}else{if(Bi==28){var Gh=Ea;var Gg=(Gh)&1;var Gf=(((Gg))&255);var L0=iB((Gf),8,0)!=0;if(L0){Bi=29}else{Bi=36}$bb29$$bb37$41:do{if(Bi==29){var Ge=LW;var Gd=(((Ge))|0)==0;if(Gd){Bi=32}else{Bi=30}$bb32$$bb30$43:do{if(Bi==30){var Gc=FY;var Gb=((Gc)&4294967295);var F9=((Gb+184)&4294967295);var F8=uA[((F9)>>2)];var F7=(F8)&16;var F6=(((F7))|0)!=0;if(F6){Bi=32;break $bb32$$bb30$43}var F5=FY;var F4=((F5)&4294967295);var F3=((F4+188)&4294967295);var F1=uA[((F3)>>2)];var F0=(F1)&4096;var FZ=(((F0))|0)!=0;if(!(FZ)){Bi=36;break $bb29$$bb37$41}}}while(0);var A2=((JL)&4294967295);var A0=Bj;var AY=CN;var AW=qs(A2,((ee)&4294967295),A0,AY);var AU=FY;var AS=((JL)&4294967295);var AQ=((Kv)&4294967295);Lt=AU;Cf=AS;I1=AQ;var AN=((Ch+4)&4294967295);uA[((AN)>>2)]=0;var AL=((Ch+4)&4294967295);var AJ=uA[((AL)>>2)];var Mh=((Ch)&4294967295);uA[((Mh)>>2)]=AJ;var Me=Cf;uA[((LH)>>2)]=Me;var Mc=Lt;var Ma=I1;var L8=((Ch)&4294967295);var L7=tN(Mc,LH,Ma,L8,0,0);FX=L7;var L6=FX;KF=L6;var Cw=KF;var L4=(((Cw))|0)!=0;var L3=oD((L4),1,0);e=L3;var LK=iB((L3),8,0)!=0;if(!(LK)){Bi=36;break $bb29$$bb37$41}Bm=1;var L2=LW;var LV=(((L2))|0)!=0;if(!(LV)){Bi=38;break $bb29$$bb37$41}var LU=FY;var LT=((LU)&4294967295);var LS=((LT+188)&4294967295);var LR=uA[((LS)>>2)];var LQ=(LR)&4096;var LO=(((LQ))|0)!=0;if(!(LO)){Bi=36;break $bb29$$bb37$41}var LN=((Kv)&4294967295);var LM=sU(LN,((X)&4294967295));Bi=36;break $bb29$$bb37$41}}while(0);$bb37$$bb39$50:do{if(Bi==36){var Lo=Bm;var LL=(((Lo))|0)==0;if(!(LL)){Bi=38;break $bb37$$bb39$50}var LF=((JL)&4294967295);var LD=Bj;var LC=qs(LF,((mY)&4294967295),LD);var LB=FY;var LA=((JL)&4294967295);var Lz=((Kv)&4294967295);Ld=LB;B1=LA;IN=Lz;var Ly=((Ch+4)&4294967295);uA[((Ly)>>2)]=0;var Lx=((Ch+4)&4294967295);var Lv=uA[((Lx)>>2)];var Lu=((Ch)&4294967295);uA[((Lu)>>2)]=Lv;var Ll=B1;uA[((Lq)>>2)]=Ll;var Lk=Ld;var Lj=IN;var Li=((Ch)&4294967295);var Lh=tN(Lk,Lq,Lj,Li,0,0);C0=Lh;var Lf=C0;Kr=Lf}}while(0);var Le=((Kv)&4294967295);var Lc=la[((Le)>>0)];var Lb=iB((Lc),8,0)==0;if(Lb){Bi=39}else{Bi=41}$bb40$$bb42$54:do{if(Bi==39){var La=FY;var K4=((La)&4294967295);var K3=((K4+184)&4294967295);var K1=uA[((K3)>>2)];var K0=(K1)&1048576;var KZ=(((K0))|0)!=0;if(!(KZ)){Bi=41;break $bb40$$bb42$54}var KY=F2;var KX=(((KY))|0)%20;LW=KX;var KW=Bj;var KV=(KW)&254;var KU=((JL)&4294967295);var KL=qs(KU,((mY)&4294967295),KV);var KK=FY;var KJ=((JL)&4294967295);var KI=((Kv)&4294967295);K8=KK;BZ=KJ;IB=KI;var KH=((Ch+4)&4294967295);uA[((KH)>>2)]=0;var KG=((Ch+4)&4294967295);var KE=uA[((KG)>>2)];var KD=((Ch)&4294967295);uA[((KD)>>2)]=KE;var KA=BZ;uA[((K5)>>2)]=KA;var Kz=K8;var Ku=IB;var Kt=((Ch)&4294967295);var Ks=tN(Kz,K5,Ku,Kt,0,0);C1=Ks;var Kq=C1;Kg=Kq}}while(0);var Kp=((I5)&4294967295);la[((Kp)>>0)]=0;var Ko=LW;var Kn=(((Ko))|0)>0;if(!(Kn)){Bi=61;break $bb25$$bb67$36}JO=0;var Km=Ea;var Kl=(Km)&2;var Kk=(((Kl))|0)==0;if(Kk){Bi=45}else{Bi=43}$bb46$$bb44$59:do{if(Bi==43){var Kf=uA[((hy)>>2)];var Ke=((Kf)&4294967295);var Kd=la[((Ke)>>0)];var Kc=iB((Kd),8,0)==0;if(Kc){Bi=45;break $bb46$$bb44$59}var Kb=uA[((hy)>>2)];var Ka=((I5)&4294967295);var J9=oJ(Ka,Kb);Bm=1;var J7=((H1)&4294967295);la[((J7)>>0)]=0;Bi=61;break $bb25$$bb67$36}}while(0);var J6=Ea;var J4=(J6)&8;var JZ=(((J4))|0)!=0;if(JZ){Bi=46}else{Bi=47}if(Bi==46){var JY=((JL)&4294967295);var JX=LW;var JW=qs(JY,((w)&4294967295),JX);var JU=FY;var JT=((JL)&4294967295);var JS=((I5)&4294967295);KT=JU;BL=JT;Iz=JS;var JR=((Ch+4)&4294967295);uA[((JR)>>2)]=0;var JQ=((Ch+4)&4294967295);var JP=uA[((JQ)>>2)];var Ft=((Ch)&4294967295);uA[((Ft)>>2)]=JP;var Fs=BL;uA[((KQ)>>2)]=Fs;var Fr=KT;var Fq=Iz;var Fp=((Ch)&4294967295);var Fo=tN(Fr,KQ,Fq,Fp,0,0);C2=Fo;var Fn=C2;J8=Fn;var Ce=J8;JO=Ce}var Fm=Ea;var Fl=(Fm)&1;var Fk=(((Fl))&255);var Ls=iB((Fk),8,0)!=0;if(Ls){Bi=48}else{Bi=51}$bb50$$bb54$66:do{if(Bi==48){var E9=FY;var E8=((E9)&4294967295);var E7=((E8+184)&4294967295);var E6=uA[((E7)>>2)];var E5=(E6)&16;var E4=(((E5))|0)==0;if(!(E4)){Bi=51;break $bb50$$bb54$66}var E3=((JL)&4294967295);var E2=LW;var E1=CN;var E0=qs(E3,((kL)&4294967295),E2,E1);var EO=FY;var EN=((JL)&4294967295);var EM=((I5)&4294967295);KB=EO;Bz=EN;In=EM;var EL=((Ch+4)&4294967295);uA[((EL)>>2)]=0;var EK=((Ch+4)&4294967295);var EJ=uA[((EK)>>2)];var EI=((Ch)&4294967295);uA[((EI)>>2)]=EJ;var EH=Bz;uA[((KN)>>2)]=EH;var EG=KB;var EF=In;var Eu=((Ch)&4294967295);var Et=tN(EG,KN,EF,Eu,0,0);C4=Et;var Es=C4;JV=Es;var Ca=JV;JO=Ca;var Er=JO;var Eq=(((Er))|0)!=0;var Ep=oD((Eq),1,0);Mm=Ep;var Eo=Mm;var K9=iB((Eo),8,0)!=0;if(!(K9)){Bi=51;break $bb50$$bb54$66}Bm=1}}while(0);var En=JO;var Em=(((En))|0)==0;if(!(Em)){Bi=61;break $bb25$$bb67$36}var El=uA[((v9)>>2)];var D9=(El)&1;var D8=(((D9))&255);var K7=iB((D8),8,0)!=0;var IP=(K7)^1;var BY=oD((IP),1,0);var K6=iB((BY),8,0)!=0;if(K6){Bi=55}else{Bi=53}$bb62$$bb60$72:do{if(Bi==53){var D7=Ea;var D6=(D7)&2;var D5=(((D6))|0)==0;if(D5){Bi=55;break $bb62$$bb60$72}var D4=((JL)&4294967295);var D3=LW;var D2=qs(D4,((Ak)&4294967295),D3);var D1=FY;var D0=((JL)&4294967295);var DP=((I5)&4294967295);Ky=D1;Bn=D0;H2=DP;var DO=((Ch+4)&4294967295);uA[((DO)>>2)]=0;var DN=((Ch+4)&4294967295);var DM=uA[((DN)>>2)];var DL=((Ch)&4294967295);uA[((DL)>>2)]=DM;var DK=Bn;uA[((Kw)>>2)]=DK;var DJ=Ky;var DI=H2;var DH=((Ch)&4294967295);var DG=tN(DJ,Kw,DI,DH,0,0);C5=DG;var Dv=C5;JM=Dv;var BW=JM;JO=BW;Jv=54;Bi=59;break $bb62$$bb60$72}}while(0);$bb62$$bb65$75:do{if(Bi==55){var Du=Ea;var Dt=(Du)&2;var Ds=(((Dt))|0)==0;if(Ds){Bi=57}else{Bi=56}$bb64$$bb63$77:do{if(Bi==56){var Dr=FY;var Dq=((Dr)&4294967295);var Dp=((Dq+184)&4294967295);var Dn=uA[((Dp)>>2)];var Dm=(Dn)&16;var Dl=(((Dm))|0)!=0;if(Dl){Bi=57;break $bb64$$bb63$77}var Ln=JO;Jv=58;Bi=59;break $bb62$$bb65$75}}while(0);var Dk=((JL)&4294967295);var Dj=LW;var Di=qs(Dk,((hK)&4294967295),Dj);var Dh=FY;var Dg=((JL)&4294967295);var Df=((I5)&4294967295);Kj=Dh;Bk=Dg;H0=Df;var De=((Ch+4)&4294967295);uA[((De)>>2)]=0;var Dd=((Ch+4)&4294967295);var Dc=uA[((Dd)>>2)];var Da=((Ch)&4294967295);uA[((Da)>>2)]=Dc;var CY=Bk;uA[((Ki)>>2)]=CY;var CX=Kj;var CW=H0;var CV=((Ch)&4294967295);var CU=tN(CX,Ki,CW,CV,0,0);C6=CU;var CT=C6;JK=CT;var BK=JK;JO=BK;Jv=57}}while(0);var CS=Jv==58?Ln:(Jv==57?BK:(BW));var CR=(((CS))|0)==0;if(!(CR)){Bi=61;break $bb25$$bb67$36}var CQ=((JL)&4294967295);var CP=LW;var CK=qs(CQ,((pA)&4294967295),CP);var CJ=FY;var CI=((JL)&4294967295);var CH=((I5)&4294967295);J5=CJ;A7=CI;HF=CH;var CG=((Ch+4)&4294967295);uA[((CG)>>2)]=0;var CF=((Ch+4)&4294967295);var CE=uA[((CF)>>2)];var CD=((Ch)&4294967295);uA[((CD)>>2)]=CE;var CC=A7;uA[((Kh)>>2)]=CC;var CB=J5;var JF=HF;var JE=((Ch)&4294967295);var JD=tN(CB,Kh,JF,JE,0,0);C7=JD;var JC=C7;JJ=JC}}}}while(0);var JB=Ea;var JA=(JB)&1;var Jz=(((JA))&255);var KP=iB((Jz),8,0)!=0;if(KP){Bi=62}else{Bi=70}$bb69$$bb77$84:do{if(Bi==62){var Jy=Bm;var Jx=(((Jy))|0)==0;if(!(Jx)){Bi=70;break $bb69$$bb77$84}var Jw=((H1)&4294967295);var Jr=la[((Jw)>>0)];var Jp=iB((Jr),8,0)==0;if(!(Jp)){Bi=70;break $bb69$$bb77$84}var Jo=F2;var Jn=(((Jo))|0)>19;if(Jn){Bi=65}else{Bi=68}$bb72$$bb75$88:do{if(Bi==65){var Jm=F2;var Jl=(((Jm))|0)%10;var Jk=(((Jl))|0)==0;if(Jk){Bi=67}else{Bi=66}if(Bi==66){var Jj=FY;var Ji=((Jj)&4294967295);var Jh=((Ji+184)&4294967295);var Jc=uA[((Jh)>>2)];var Jb=(Jc)&16;var Ja=(((Jb))|0)!=0;if(!(Ja)){Bi=68;break $bb72$$bb75$88}}var I9=FY;var I8=((H1)&4294967295);KS=I9;Jt=((uO)&4294967295);Ml=I8;var I7=((Ch+4)&4294967295);uA[((I7)>>2)]=0;var I6=((Ch+4)&4294967295);var I4=uA[((I6)>>2)];var I3=((Ch)&4294967295);uA[((I3)>>2)]=I4;var I2=Jt;uA[((Cv)>>2)]=I2;var IZ=KS;var IY=Ml;var IX=((Ch)&4294967295);var IW=tN(IZ,Cv,IY,IX,0,0);C8=IW;var IV=C8;IO=IV}}while(0);var IU=((H1)&4294967295);var IT=la[((IU)>>0)];var IS=iB((IT),8,0)==0;if(!(IS)){Bi=70;break $bb69$$bb77$84}var IR=FY;var IQ=((H1)&4294967295);KO=IR;Jq=((a6)&4294967295);Mg=IQ;var IM=((Ch+4)&4294967295);uA[((IM)>>2)]=0;var IL=((Ch+4)&4294967295);var IK=uA[((IL)>>2)];var IJ=((Ch)&4294967295);uA[((IJ)>>2)]=IK;var II=Jq;uA[((Cs)>>2)]=II;var IH=KO;var IG=Mg;var IF=((Ch)&4294967295);var IE=tN(IH,Cs,IG,IF,0,0);C9=IE;var ID=C9;IC=ID}}while(0);var Ix=FY;var Iw=((Ix)&4294967295);var Iv=((Iw+184)&4294967295);var Iu=uA[((Iv)>>2)];var It=(Iu)&48;var Is=(((It))|0)==0;if(Is){Bi=79}else{Bi=71}$bb86$$bb78$96:do{if(Bi==71){var Ir=((Kv)&4294967295);var Iq=la[((Ir)>>0)];var Ip=iB((Iq),8,0)==0;if(Ip){Bi=79;break $bb86$$bb78$96}var Io=((I5)&4294967295);var Im=la[((Io)>>0)];var Ik=iB((Im),8,0)==0;if(Ik){Bi=79;break $bb86$$bb78$96}var Ii=FY;var Ig=((A4)&4294967295);Kx=Ii;Jd=((kd)&4294967295);LX=Ig;var Ie=((Ch+4)&4294967295);uA[((Ie)>>2)]=0;var Ic=((Ch+4)&4294967295);var Ia=uA[((Ic)>>2)];var H8=((Ch)&4294967295);uA[((H8)>>2)]=Ia;var H6=Jd;uA[((Cp)>>2)]=H6;var H4=Kx;var HZ=LX;var HX=((Ch)&4294967295);var HV=tN(H4,Cp,HZ,HX,0,0);Db=HV;var HT=Db;IA=HT;var HR=FY;var HP=((HR)&4294967295);var HN=((HP+188)&4294967295);var HL=uA[((HN)>>2)];var HJ=(HL)&4096;var HH=(((HJ))|0)!=0;if(HH){Bi=74}else{Bi=75}if(Bi==74){var HE=((A4)&4294967295);la[((HE)>>0)]=0}var HC=FY;var HA=((HC)&4294967295);var Hy=((HA+184)&4294967295);var Hw=uA[((Hy)>>2)];var Hu=(Hw)&16;var Hs=(((Hu))|0)!=0;var Hq=KC;if(Hs){Bi=76}else{Bi=77}if(Bi==76){var Ho=((I5)&4294967295);var Hm=((A4)&4294967295);var Hk=((Kv)&4294967295);var Hi=((H1)&4294967295);var Hg=qs(Hq,((r7)&4294967295),Ho,Hm,Hk,Hi)}else{if(Bi==77){var He=((Kv)&4294967295);var Hc=((A4)&4294967295);var Ha=((I5)&4294967295);var G8=((H1)&4294967295);var G6=qs(Hq,((r7)&4294967295),He,Hc,Ha,G8)}}CO=1;Bi=89;break $bb4$$bb3$5}}while(0);var G4=FY;var G2=((G4)&4294967295);var Cr=((G2+184)&4294967295);var Cq=uA[((Cr)>>2)];var Co=(Cq)&512;var Cn=(((Co))|0)!=0;if(Cn){Bi=80}else{Bi=88}$bb87$$bb99$108:do{if(Bi==80){var Cm=((Kv)&4294967295);var Cl=wg(Cm);var Ck=(((Cl)-1)&4294967295);Do=Ck;var Cj=Do;var Ci=(((Cj))|0)<0;if(Ci){Bi=82}else{Bi=81}$bb91$$bb88$110:do{if(Bi==81){var Cg=((I5)&4294967295);var Cd=la[((Cg)>>0)];var Cc=iB((Cd),8,0)==0;if(Cc){Bi=82;break $bb91$$bb88$110}I0=1;Mj=1;var Cb=((I5)&4294967295);var B9=la[((Cb)>>0)];var B8=iB((B9),8,0);var B7=((nm+B8*4)&4294967295);var B6=uA[((B7)>>2)];var B5=((B6+11)&4294967295);var B4=ll[((B5)>>0)];var B3=oD((B4),8,0);JN=B3;var BV=JN;var BU=(((BV))|0)==1;var BT=oD((BU),1,0);LZ=BT;var BS=LZ;var J3=iB((BS),8,0)!=0;if(J3){Bi=84}else{Bi=85}if(Bi==84){var BR=((I5+1)&4294967295);var BQ=la[((BR)>>0)];var BP=iB((BQ),8,0);var BO=((nm+BP*4)&4294967295);var BN=uA[((BO)>>2)];var BM=((BN+11)&4294967295);var BJ=ll[((BM)>>0)];var BI=oD((BJ),8,0);JN=BI}var BH=Do;var BG=((Kv+BH)&4294967295);var BF=la[((BG)>>0)];var BE=iB((BF),8,0);var BD=((nm+BE*4)&4294967295);var BC=uA[((BD)>>2)];var BB=((BC+11)&4294967295);var BA=la[((BB)>>0)];var Bx=iB((BA),8,0)==2;if(!(Bx)){Bi=88;break $bb87$$bb99$108}var Bw=JN;var Bv=(((Bw))|0)==2;if(!(Bv)){Bi=88;break $bb87$$bb99$108}var Bu=Do;var Bt=((Kv+Bu)&4294967295);la[((Bt)>>0)]=0;Bi=88;break $bb87$$bb99$108}}while(0);I0=0;Mj=0}}while(0);var Bs=KC;var Br=((Kv)&4294967295);var Bq=((I5)&4294967295);var Bp=((H1)&4294967295);var Bo=qs(Bs,((gR)&4294967295),Br,Bq,Bp)}else{if(Bi==3){var Fx=KC;var Fw=oJ(Fx,Fy)}}}while(0);var Bh=FY;var Bg=((Bh)&4294967295);var Bf=((Bg+184)&4294967295);var Be=uA[((Bf)>>2)];var Bd=(Be)&256;var Bc=(((Bd))|0)!=0;if(Bc){Bi=90}else{Bi=96}$bb101$$bb108$122:do{if(Bi==90){JO=0;var Bb=KC;var Ba=wg(Bb);var A9=(((Ba)-1)&4294967295);Do=A9;var A8=(((A9))|0)>=0;if(!(A8)){Bi=96;break $bb101$$bb108$122}while(1){var A3=KC;var A1=Do;var AZ=((A3+A1)&4294967295);var AX=la[((AZ)>>0)];var AV=iB((AX),8,0)==6;if(AV){Bi=92}else{Bi=95}if(Bi==92){var AT=JO;var AR=(((AT))|0)!=0;if(AR){Bi=93}else{Bi=94}if(Bi==93){var AO=KC;var AM=Do;var AK=((AO+AM)&4294967295);la[((AK)>>0)]=5}else{if(Bi==94){JO=1}}}var Mi=Do;var Mf=(((Mi)-1)&4294967295);Do=Mf;var Md=(((Mf))|0)>=0;if(Md){Bi=91;continue}else{Bi=96;break $bb101$$bb108$122}}}}while(0);var Mb=CO;FP=Mb;var L9=FP;Iy=L9;var Lm=Iy;vp=B2;return Lm;return null}function xz(Bc,IJ,Cz,Gi,BJ,By){var Bx=vp;vp+=428;n1(Bx,0,428);var H0;var Hc=null;var DL;var Hq;var Fw;var DC;var Dq;var Cl=Bx;var DT;var Hw;var F2;var D0;var Do;var Cw=Bx+4;var Ek;var HY;var Gw;var Et;var Dn;var CL=Bx+8;var EE;var Ic;var GY;var Ev;var Dm;var CR=Bx+12;var EN;var Ig;var G7;var ES;var Dk;var CS=Bx+16;var E8;var Iz;var HF;var Fh;var Dj;var CV=Bx+20;var Ft;var IS;var H2;var FD;var Dh;var CW=Bx+24;var FT;var AH;var H3;var FN;var Dg;var C5=Bx+28;var F1;var Ii;var IW;var II;var Df;var FB=Bx+32;var Go;var CX;var C0;var BW;var Dd;var HE=Bx+36;var Fp=Bx+44;var H4;var Ea;var BX;var HM;var Hv;var AS;var Ix;var IA;var CI;var HK;var Ir;var CT;var Dw;var CA;var HD;var CY;var HZ=Bx+48;var CH=Bx+60;var CF=Bx+160;var HL=Bx+260;var G4=Bx+280;var HP=Bx+300;var B2=Bx+352;var Ik=Bx+404;var De=Bx+416;H4=Bc;Ea=IJ;BX=Cz;HM=Gi;Hv=BJ;AS=By;CY=0;var HJ=AS;var HI=(HJ)&34;HD=HI;var HH=Ea;var HG=(((((HH))|0)/100)|0);HK=HG;var HC=Ea;var HB=(((HC))|0)%100;Ir=HB;var HA=((CH)&4294967295);la[((HA)>>0)]=0;var Hz=((B2)&4294967295);la[((Hz)>>0)]=0;var Hy=((De)&4294967295);la[((Hy)>>0)]=0;var Hx=H4;var G8=((Hx)&4294967295);var G6=((G8+184)&4294967295);var G5=uA[((G6)>>2)];var G3=(G5)&4194304;var G2=(((G3))|0)!=0;if(G2){H0=1}else{H0=4}$bb$$bb3thread_pre_split$2:do{if(H0==1){var G1=AS;var G0=(G1)&1;var GZ=(((G0))&255);var H1=iB((GZ),8,0)!=0;if(H1){H0=3}else{H0=2}if(H0==2){var GX=HK;var GW=(((GX))|0)>9;if(GW){Hc=2}else{Hc=2;H0=5;break $bb$$bb3thread_pre_split$2}}CY=1;H0=4;break $bb$$bb3thread_pre_split$2}}while(0);if(H0==4){var AL=HK;Hc=4}var GB=Hc==4?AL:(GX);var GA=(((GB))|0)>0;if(GA){H0=7}else{H0=6}$bb5$$bb4$10:do{if(H0==6){var Gz=CY;var Gy=(((Gz))|0)!=0;if(Gy){H0=7;break $bb5$$bb4$10}else{H0=61;break $bb5$$bb4$10}}}while(0);if(H0==7){CI=0;var Gx=HD;var Gv=(((Gx))|0)!=0;if(Gv){H0=8}else{H0=12}$bb6$$bb9$14:do{if(H0==8){var Gu=Ir;var Gt=(((Gu))|0)==0;if(Gt){H0=9}else{H0=10}if(H0==9){var Gs=H4;var Gr=((HL)&4294967295);Go=Gs;CX=((oO)&4294967295);C0=Gr;var F4=((HE+4)&4294967295);uA[((F4)>>2)]=0;var F3=((HE+4)&4294967295);var F0=uA[((F3)>>2)];var FZ=((HE)&4294967295);uA[((FZ)>>2)]=F0;var FY=CX;uA[((Fp)>>2)]=FY;var FX=Go;var FW=C0;var FV=((HE)&4294967295);var FU=tN(FX,Fp,FW,FV,0,0);Dd=FU;var FS=Dd;BW=FS;var Il=BW;CI=Il;Hc=9}else{if(H0==10){var Ba=CI;Hc=10}}var Fs=Hc==10?Ba:(Il);var Fr=(((Fs))|0)==0;if(Fr){H0=12;break $bb6$$bb9$14}else{H0=17;break $bb6$$bb9$14}}}while(0);$bb9$$bb13$20:do{if(H0==12){var Fq=Ir;var Fo=(((Fq))|0)==0;if(Fo){H0=13}else{H0=14}if(H0==13){var Fn=H4;var Fm=((HL)&4294967295);F1=Fn;Ii=((wr)&4294967295);IW=Fm;var Fl=((HE+4)&4294967295);uA[((Fl)>>2)]=0;var Fk=((HE+4)&4294967295);var Fj=uA[((Fk)>>2)];var Fi=((HE)&4294967295);uA[((Fi)>>2)]=Fj;var E4=Ii;uA[((FB)>>2)]=E4;var E2=F1;var E0=IW;var EZ=((HE)&4294967295);var EY=tN(E2,FB,E0,EZ,0,0);Df=EY;var EX=Df;II=EX;var E3=II;CI=E3;Hc=13}else{if(H0==14){var A9=CI;Hc=14}}var EW=Hc==14?A9:(E3);var EV=(((EW))|0)==0;if(!(EV)){H0=17;break $bb9$$bb13$20}var EU=H4;var ET=((HL)&4294967295);FT=EU;AH=((c7)&4294967295);H3=ET;var EG=((HE+4)&4294967295);uA[((EG)>>2)]=0;var EF=((HE+4)&4294967295);var ED=uA[((EF)>>2)];var EC=((HE)&4294967295);uA[((EC)>>2)]=ED;var EB=AH;uA[((C5)>>2)]=EB;var EA=FT;var Ez=H3;var Ey=((HE)&4294967295);var Ex=tN(EA,C5,Ez,Ey,0,0);Dg=Ex;var Ew=Dg;FN=Ew}}while(0);var Ef=H4;var Ed=((Ef)&4294967295);var Eb=((Ed+184)&4294967295);var D8=uA[((Eb)>>2)];var D7=(D8)&2048;var D6=(((D7))|0)==0;var Bb=HK;if(D6){H0=19}else{H0=18}$bb16$$bb14$28:do{if(H0==19){var D1=(((Bb))|0)>9;if(D1){H0=20;break $bb16$$bb14$28}else{H0=33;break $bb16$$bb14$28}}else{if(H0==18){var D5=(((Bb))|0)!=19;var D4=HK;var D3=(((D4))|0)>9;var Dc=(D5)&(D3);if(Dc){H0=20;break $bb16$$bb14$28}else{H0=33;break $bb16$$bb14$28}}}}while(0);if(H0==20){var D2=((HP)&4294967295);la[((D2)>>0)]=0;CA=0;var DN=Ea;var DM=(((DN))|0)%1000;var DK=(((DM))|0)==0;if(DK){H0=21}else{H0=22}if(H0==21){CA=1}var DJ=CA;var DI=HD;var DH=(DI)|(DJ);var DG=Hv;var DF=(((DG)+1)&4294967295);var DE=HK;var DD=(((((DE))|0)/10)|0);var CQ=H4;var CP=((G4)&4294967295);var CO=n9(CQ,DD,DF,DH,CP);var CN=(((CO))|0)==0;var CM=oD((CN),1,0);IA=CM;var Dl=iB((CM),8,0)!=0;if(Dl){H0=23}else{H0=26}if(H0==23){CT=0;var CK=H4;var CJ=((CK)&4294967295);var CG=((CJ+188)&4294967295);var CE=uA[((CG)>>2)];var CD=Hv;var Cy=(((CD)+1)&4294967295);var Cx=(((CE))|0)>>(((Cy))|0);var Cv=(Cx)&1;var Cu=(((Cv))&255);var Di=iB((Cu),8,0)!=0;if(Di){H0=24}else{H0=25}if(H0==24){CT=8}var Ct=HK;var Cs=(((((Ct))|0)/10)|0);var Cr=H4;var Cq=CT;var Cp=((HP)&4294967295);var Co=wI(Cr,Cs,Cq,Cp)}var Ck=H4;var Cj=((Ck)&4294967295);var Ci=((Cj+188)&4294967295);var Ch=uA[((Ci)>>2)];var Cg=(Ch)&512;var Cf=(((Cg))|0)!=0;var Ce=((B2)&4294967295);if(Cf){H0=27}else{H0=28}if(H0==27){var Cd=((G4)&4294967295);var Cc=((HP)&4294967295);var Cb=qs(Ce,((tx)&4294967295),Cd,Cc)}else{if(H0==28){var B8=((HP)&4294967295);var B7=((G4)&4294967295);var B6=qs(Ce,((tx)&4294967295),B8,B7)}}var B5=HK;var B4=(((B5))|0)%10;HK=B4;var B3=(((B4))|0)==0;if(B3){H0=30}else{H0=32}$bb29$$bb31$46:do{if(H0==30){var B1=CY;var B0=(((B1))|0)==0;if(!(B0)){H0=32;break $bb29$$bb31$46}var BZ=((HL)&4294967295);la[((BZ)>>0)]=0}}while(0);HM=1}var BY=((HP)&4294967295);la[((BY)>>0)]=0;var BT=HK;var BS=(((BT))|0)>0;if(BS){H0=35}else{H0=34}$bb34$$bb33$51:do{if(H0==34){var BR=CY;var BQ=(((BR))|0)!=0;if(BQ){H0=35;break $bb34$$bb33$51}else{H0=60;break $bb34$$bb33$51}}}while(0);$bb34$$bb58$53:do{if(H0==35){var BP=H4;var BO=((BP)&4294967295);var BN=((BO+184)&4294967295);var BM=uA[((BN)>>2)];var BL=(BM)&262144;var BK=(((BL))|0)!=0;if(BK){H0=36}else{H0=39}$bb35$$bb39$55:do{if(H0==36){var BI=AS;var BH=(BI)&1;var BG=(((BH))&255);var CZ=iB((BG),8,0)!=0;if(CZ){H0=38}else{H0=37}if(H0==37){var BF=((B2)&4294967295);var BE=la[((BF)>>0)];var BD=iB((BE),8,0)!=0;if(!(BD)){H0=39;break $bb35$$bb39$55}}var BC=H4;var BB=((De)&4294967295);Ft=BC;IS=((kd)&4294967295);H2=BB;var BA=((HE+4)&4294967295);uA[((BA)>>2)]=0;var Bz=((HE+4)&4294967295);var Bw=uA[((Bz)>>2)];var Bv=((HE)&4294967295);uA[((Bv)>>2)]=Bw;var Bu=IS;uA[((CW)>>2)]=Bu;var Bt=Ft;var Bs=H2;var Br=((HE)&4294967295);var Bq=tN(Bt,CW,Bs,Br,0,0);Dh=Bq;var Bp=Dh;FD=Bp}}while(0);HM=1;CI=0;var Bo=HD;var Bm=(((Bo))|0)!=0;if(Bm){H0=40}else{H0=45}$bb40$$bb45$61:do{if(H0==40){var A8=Ir;var A7=(((A8))|0)==0;if(A7){H0=42}else{H0=41}if(H0==41){var A5=H4;var A3=((A5)&4294967295);var A2=((A3+188)&4294967295);var A1=uA[((A2)>>2)];var A0=(A1)&4096;var AZ=(((A0))|0)!=0;if(!(AZ)){H0=45;break $bb40$$bb45$61}}var AY=((HZ)&4294967295);var AW=HK;var AK=qs(AY,((l0)&4294967295),AW);var AJ=H4;var AI=((HZ)&4294967295);var i=((HP)&4294967295);E8=AJ;Iz=AI;HF=i;var e=((HE+4)&4294967295);uA[((e)>>2)]=0;var I0=((HE+4)&4294967295);var IZ=uA[((I0)>>2)];var IY=((HE)&4294967295);uA[((IY)>>2)]=IZ;var IX=Iz;uA[((CV)>>2)]=IX;var IU=E8;var IH=HF;var IG=((HE)&4294967295);var IF=tN(IU,CV,IH,IG,0,0);Dj=IF;var IE=Dj;Fh=IE;var E1=Fh;CI=E1;var ID=H4;var IC=((ID)&4294967295);var IB=((IC+188)&4294967295);var Iy=uA[((IB)>>2)];var Iw=(Iy)&4096;var Iu=(((Iw))|0)!=0;if(!(Iu)){H0=45;break $bb40$$bb45$61}var Bn=Ir;var Bl=(((Bn))|0)>0;if(!(Bl)){H0=45;break $bb40$$bb45$61}var Bk=((HP)&4294967295);var Bj=sU(Bk,((X)&4294967295))}}while(0);var Bi=HK;var Bh=(((Bi))|0)!=0;if(Bh){H0=48}else{H0=46}$bb48$$bb46$69:do{if(H0==46){var Bg=CY;var Bf=(((Bg))|0)==0;if(Bf){H0=48;break $bb48$$bb46$69}var Be=H4;var Bd=((HP)&4294967295);EN=Be;Ig=((xa)&4294967295);G7=Bd;var AX=((HE+4)&4294967295);uA[((AX)>>2)]=0;var AV=((HE+4)&4294967295);var AU=uA[((AV)>>2)];var AT=((HE)&4294967295);uA[((AT)>>2)]=AU;var AR=Ig;uA[((CS)>>2)]=AR;var AQ=EN;var AP=G7;var AO=((HE)&4294967295);var AN=tN(AQ,CS,AP,AO,0,0);Dk=AN;var AM=Dk;ES=AM;H0=60;break $bb34$$bb58$53}}while(0);var IV=CI;var IT=(((IV))|0)==0;if(IT){H0=49}else{H0=54}$bb49$$bb53thread_pre_split$73:do{if(H0==49){var IR=Ir;var IQ=(((IR))|0)==0;if(IQ){H0=50}else{H0=51}if(H0==50){var IP=((HZ)&4294967295);var IO=HK;var IN=qs(IP,((t1)&4294967295),IO);var IM=H4;var IL=((HZ)&4294967295);var IK=((HP)&4294967295);EE=IM;Ic=IL;GY=IK;var Iv=((HE+4)&4294967295);uA[((Iv)>>2)]=0;var It=((HE+4)&4294967295);var Is=uA[((It)>>2)];var Iq=((HE)&4294967295);uA[((Iq)>>2)]=Is;var Ip=Ic;uA[((CR)>>2)]=Ip;var Io=EE;var In=GY;var Im=((HE)&4294967295);var Ij=tN(Io,CR,In,Im,0,0);Dm=Ij;var Ih=Dm;Ev=Ih;var Eo=Ev;CI=Eo;Hc=50}else{if(H0==51){var A6=CI;Hc=51}}var If=Hc==51?A6:(Eo);var Ie=(((If))|0)==0;if(!(Ie)){H0=54;break $bb49$$bb53thread_pre_split$73}var Id=((HZ)&4294967295);var Ib=HK;var Ia=qs(Id,((ak)&4294967295),Ib);var H9=H4;var H8=((HZ)&4294967295);var H7=((HP)&4294967295);Ek=H9;HY=H8;Gw=H7;var H6=((HE+4)&4294967295);uA[((H6)>>2)]=0;var H5=((HE+4)&4294967295);var HX=uA[((H5)>>2)];var HW=((HE)&4294967295);uA[((HW)>>2)]=HX;var HV=HY;uA[((CL)>>2)]=HV;var HU=Ek;var HT=Gw;var HS=((HE)&4294967295);var HR=tN(HU,CL,HT,HS,0,0);Dn=HR;var HQ=Dn;Et=HQ;var DX=Et;CI=DX;Hc=53;H0=55;break $bb49$$bb53thread_pre_split$73}}while(0);if(H0==54){var A4=CI;Hc=54}var HO=Hc==54?A4:(DX);var HN=(((HO))|0)!=0;if(HN){H0=56}else{H0=57}if(H0==56){var Hu=((HL)&4294967295);la[((Hu)>>0)]=0}else{if(H0==57){var Ht=HK;var Hs=(((Ht))|0)>1;if(Hs){H0=59}else{H0=58}if(H0==58){var Hr=H4;var Hp=((Hr)&4294967295);var Ho=((Hp+184)&4294967295);var Hn=uA[((Ho)>>2)];var Hm=(Hn)&1024;var Hl=(((Hm))|0)==0;if(!(Hl)){H0=60;break $bb34$$bb58$53}}var Hj=H4;var GV=HK;var GU=((HP)&4294967295);var GT=wI(Hj,GV,0,GU)}}}}while(0);var GS=((CH)&4294967295);var GR=((B2)&4294967295);var GQ=((De)&4294967295);var GP=((HP)&4294967295);var GO=((HL)&4294967295);var GN=qs(GS,((r7)&4294967295),GR,GQ,GP,GO)}var GL=((Ik)&4294967295);la[((GL)>>0)]=0;var Gq=Ir;var Gp=(((Gq))|0)>0;if(Gp){H0=62}else{H0=74}$bb60$$bb77$91:do{if(H0==62){var Gn=Ea;var Gm=(((Gn))|0)>100;if(Gm){H0=65}else{H0=63}$bb67$$bb61$93:do{if(H0==63){var Gl=AS;var Gk=(Gl)&1;var Gj=(((Gk))&255);var CC=iB((Gj),8,0)!=0;var Dp=(CC)^1;var Cm=oD((Dp),1,0);var CB=iB((Cm),8,0)!=0;if(CB){H0=69;break $bb67$$bb61$93}var Gh=Hv;var Gg=(((Gh))|0)==0;if(Gg){H0=65;break $bb67$$bb61$93}else{H0=69;break $bb67$$bb61$93}}}while(0);$bb67$$bb71$96:do{if(H0==65){var Ge=H4;var FR=((Ge)&4294967295);var FQ=((FR+184)&4294967295);var FP=uA[((FQ)>>2)];var FO=(FP)&64;var FM=(((FO))|0)!=0;if(FM){H0=68}else{H0=66}if(H0==66){var FL=H4;var FK=((FL)&4294967295);var FJ=((FK+184)&4294967295);var FI=uA[((FJ)>>2)];var FG=(FI)&8388608;var Hk=(((FG))|0)==0;if(Hk){H0=69;break $bb67$$bb71$96}var Hi=Ir;var Hh=(((Hi))|0)<=9;if(!(Hh)){H0=69;break $bb67$$bb71$96}}var Hg=H4;var Hf=((Ik)&4294967295);DT=Hg;Hw=((kd)&4294967295);F2=Hf;var He=((HE+4)&4294967295);uA[((He)>>2)]=0;var Hd=((HE+4)&4294967295);var Hb=uA[((Hd)>>2)];var Ha=((HE)&4294967295);uA[((Ha)>>2)]=Hb;var G9=Hw;uA[((Cw)>>2)]=G9;var GM=DT;var GK=F2;var GJ=((HE)&4294967295);var GI=tN(GM,Cw,GK,GJ,0,0);Do=GI;var GH=Do;D0=GH}}while(0);var GG=H4;var GF=((GG)&4294967295);var GE=((GF+184)&4294967295);var GD=uA[((GE)>>2)];var GC=(GD)&524288;var Gf=(((GC))|0)!=0;if(!(Gf)){H0=74;break $bb60$$bb77$91}var Gd=HK;var Gc=(((Gd))|0)==0;if(!(Gc)){H0=74;break $bb60$$bb77$91}var Gb=AS;var Ga=(Gb)&1;var F9=(((Ga))&255);var Cn=iB((F9),8,0)!=0;if(Cn){H0=73}else{H0=72}if(H0==72){var F8=((B2)&4294967295);var F7=la[((F8)>>0)];var F6=iB((F7),8,0)!=0;if(!(F6)){H0=74;break $bb60$$bb77$91}}var F5=H4;var FH=((Ik)&4294967295);DL=F5;Hq=((kd)&4294967295);Fw=FH;var FF=((HE+4)&4294967295);uA[((FF)>>2)]=0;var FE=((HE+4)&4294967295);var FC=uA[((FE)>>2)];var FA=((HE)&4294967295);uA[((FA)>>2)]=FC;var Fz=Hq;uA[((Cl)>>2)]=Fz;var Fy=DL;var Fx=Fw;var Fv=((HE)&4294967295);var Fu=tN(Fy,Cl,Fx,Fv,0,0);Dq=Fu;var Fg=Dq;DC=Fg}}while(0);var Fe=((CF)&4294967295);la[((Fe)>>0)]=0;var Fd=Ir;var Fc=(((Fd))|0)!=0;if(Fc){H0=76}else{H0=75}$bb79$$bb78$109:do{if(H0==75){var Fb=HM;var Fa=(((Fb))|0)==0;if(Fa){H0=76;break $bb79$$bb78$109}var Dx=la[((((X)&4294967295))>>0)];var Dv=iB((Dx),8,0)!=0;if(!(Dv)){H0=94;break $bb79$$bb78$109}var Du=((CH)&4294967295);var Dt=wg(Du);Dw=Dt;var Ds=Dw;var Dr=(((Ds))|0)>0;if(Dr){H0=91}else{H0=93}$bb102$$bb104$113:do{if(H0==91){var Db=Dw;var Da=(((Db)-1)&4294967295);var C9=((CH+Da)&4294967295);var C8=la[((C9)>>0)];var C7=iB((C8),8,0)==10;if(!(C7)){H0=93;break $bb102$$bb104$113}var C6=Dw;var C4=(((C6)-1)&4294967295);var C3=((CH+C4)&4294967295);la[((C3)>>0)]=0}}while(0);var C2=((CF)&4294967295);var C1=oJ(C2,((X)&4294967295));H0=94;break $bb79$$bb78$109}}while(0);$bb79$$bb105$117:do{if(H0==76){CT=0;var E9=Hv;var E7=(((E9))|0)==0;if(E7){H0=77}else{H0=84}$bb80$$bb92$119:do{if(H0==77){CT=2;var E6=HD;var E5=(((E6))|0)!=0;if(E5){H0=78}else{H0=79}if(H0==78){CT=3}var ER=Ea;var EQ=(((ER))|0)<=99;if(EQ){H0=80}else{H0=82}$bb83$$bb89$124:do{if(H0==80){var EP=AS;var EO=(EP)&1;var EM=(((EO))&255);var Ca=iB((EM),8,0)!=0;var Ff=(Ca)^1;var CU=oD((Ff),1,0);var B9=iB((CU),8,0)!=0;if(!(B9)){H0=82;break $bb83$$bb89$124}var EL=CT;var EK=(EL)|4;CT=EK}}while(0);var EJ=HD;var EI=(EJ)&32;var EH=(((EI))|0)!=0;if(!(EH)){H0=86;break $bb80$$bb92$119}var Eu=CT;var Es=(Eu)|32;CT=Es}else{if(H0==84){var Er=H4;var Eq=((Er)&4294967295);var Ep=((Eq+188)&4294967295);var En=uA[((Ep)>>2)];var Em=Hv;var El=(((En))|0)>>(((Em))|0);var Ej=(El)&1;var Eh=(((Ej))&255);var BV=iB((Eh),8,0)!=0;if(!(BV)){H0=86;break $bb80$$bb92$119}CT=8}}}while(0);var DZ=H4;var DY=Ir;var DW=CT;var DV=((CF)&4294967295);var DU=wI(DZ,DY,DW,DV);var DS=(((DU))|0)!=0;var DR=oD((DS),1,0);Ix=DR;var BU=iB((DR),8,0)!=0;if(!(BU)){H0=94;break $bb79$$bb105$117}var DQ=H4;var DP=((DQ)&4294967295);var DO=((DP+184)&4294967295);var DB=uA[((DO)>>2)];var DA=(DB)&128;var Dz=(((DA))|0)!=0;if(!(Dz)){H0=94;break $bb79$$bb105$117}var Dy=((Ik)&4294967295);la[((Dy)>>0)]=0}}while(0);var Ei=BX;var Eg=((CH)&4294967295);var Ee=((Ik)&4294967295);var Ec=((CF)&4294967295);var D9=qs(Ei,((gR)&4294967295),Eg,Ee,Ec);vp=Bx;return;return}function ac(Bm,AX,Cl,M7,Ni,Oz){var Cp=vp;vp+=608;n1(Cp,0,608);var Bh;var Ob=null;var Ft;var Jp;var EC;var QU;var BY;var JU;var EA;var JT;var Mv;var e;var Ez;var M5;var RC;var L2;var J7;var Ey;var C9=Cp;var BX;var G9;var AK;var Bi;var Ex;var MM=Cp+4;var Ls;var Qq;var Kt;var KH;var Ew;var DQ=Cp+8;var C5;var Io;var BC;var Cm;var Eu;var K3=Cp+12;var MK;var OX;var IU;var Jv;var Es;var CL=Cp+16;var Bn;var Gp;var RB;var AS;var Eq;var Mx=Cp+20;var KS;var PT;var J8;var Kv;var Eo;var A4=Cp+24;var Kp;var Oa;var Qo;var QH;var IH;var KD=Cp+28;var QF;var C2;var Ov;var Pg;var IG;var Bk=Cp+32;var Bl;var Ec;var OY;var RE;var IF;var My=Cp+36;var BA=Cp+44;var Eh;var AN;var Cn;var Fv;var K5;var Ju;var Jd;var QG;var M4;var Dq;var OO;var Iq;var Br;var FI;var Dd;var Pw;var A8;var NK;var Qu;var IE;var M2;var Dy;var O4;var JP;var QT;var J2;var GQ;var JS;var M3;var B0;var QE;var DO;var IO;var BZ;var L7;var N9;var BB;var Cy;var Pa;var Lx;var Bz;var ML;var DX=Cp+48;var OD=Cp+52;var QS=Cp+72;var K4=Cp+172;var Ns=Cp+224;var Co=Cp+424;var Jn=Cp+476;var Oq=Cp+528;var RA=Cp+548;var Qx=Cp+600;var Dj=Cp+604;var Hw;var IQ;var H1;var Qg;var E7;var I6;var FQ;var MJ;var ID;IQ=Bm;H1=AX;Qg=Cl;E7=M7;I6=Ni;FQ=Oz;var IC=uA[((y8)>>2)];var IB=(((IC))|0)==193;if(IB){Bh=2}else{Bh=1}$bb1$$bb$2:do{if(Bh==1){var IA=I6;var Iz=((IA)&4294967295);var Iy=((Iz)&4294967295);var Il=uA[((Iy)>>2)];var Ik=(Il)&524288;var Ij=(((Ik))|0)!=0;if(Ij){Bh=2;break $bb1$$bb$2}var Ii=IQ;var Ih=((Ii)&4294967295);var Ig=((Ih+184)&4294967295);var If=uA[((Ig)>>2)];var Ie=(((If))|0)!=0;if(Ie){Bh=4}else{Bh=172}if(Bh==4){var Id=IQ;var Ic=H1;var H0=Qg;var HZ=E7;var HY=I6;var HX=FQ;Eh=Id;AN=Ic;Cn=H0;Fv=HZ;K5=HY;Ju=HX;JS=0;M3=0;B0=0;QE=1;DO=0;IO=0;BZ=0;ML=0;var HW=Fv;uA[((HW)>>2)]=0;uA[((lI)>>2)]=0;var HV=((RA)&4294967295);la[((HV)>>0)]=0;var HU=((RA)&4294967295);uA[((hy)>>2)]=HU;var HT=Ju;uA[((v9)>>2)]=HT;QT=0;var HS=AN;var HR=QT;var Hv=((HS+HR)&4294967295);var Hu=la[((Hv)>>0)];var Ht=iB((Hu),8,0);var Hs=(((Ht)-48)&4294967295);var Hr=(((Hs))>>>0)<=9;var Hq=QT;if(Hr){Ob=4;Bh=5}else{Ob=4;Bh=6}$bb_i$$bb2_i$7:do{if(Bh==5){while(1){var Hp=Ob==5?GV:(Hq);var Ho=(((Hp)+1)&4294967295);QT=Ho;var Hn=AN;var Hm=QT;var G0=((Hn+Hm)&4294967295);var GZ=la[((G0)>>0)];var GY=iB((GZ),8,0);var GX=(((GY)-48)&4294967295);var GW=(((GX))>>>0)<=9;var GV=QT;if(GW){Ob=5;Bh=5;continue}else{Ob=5;Bh=6;break $bb_i$$bb2_i$7}}}}while(0);var LX=Ob==4?Hq:(GV);O4=LX;var GU=AN;var GT=wU(GU);N9=GT;var GS=N9;JP=GS;var GR=(((LX))|0)!=3;if(GR){Bh=10}else{Bh=7}$bb6_i$$bb3_i$11:do{if(Bh==7){var Gv=AN;var Gu=((Gv+-2)&4294967295);var Gt=la[((Gu)>>0)];var Gs=iB((Gt),8,0);var Gr=Eh;var Gq=((Gr)&4294967295);var Go=((Gq+204)&4294967295);var Gn=uA[((Go)>>2)];var Gm=(((Gs))|0)!=(((Gn))|0);if(Gm){Bh=10;break $bb6_i$$bb3_i$11}var Gl=AN;var F0=((Gl+-3)&4294967295);var FZ=la[((F0)>>0)];var FY=iB((FZ),8,0);var FX=(((FY)-48)&4294967295);var FW=(((FX))>>>0)>9;if(FW){Bh=10;break $bb6_i$$bb3_i$11}IO=1;Bh=18;break $bb6_i$$bb3_i$11}}while(0);$bb6_i$$bb14_i$15:do{if(Bh==10){var FV=Eh;var FU=((FV)&4294967295);var FT=((FU+204)&4294967295);var FS=uA[((FT)>>2)];var FR=(((FS))|0)==32;if(FR){Bh=12}else{Bh=11}$bb8_i$$bb7_i$17:do{if(Bh==11){var FE=Eh;var FD=((FE)&4294967295);var FC=((FD+184)&4294967295);var FB=uA[((FC)>>2)];var FA=(FB)&4096;var Fz=(((FA))|0)!=0;if(Fz){Bh=12;break $bb8_i$$bb7_i$17}else{Bh=16;break $bb8_i$$bb7_i$17}}}while(0);$bb8_i$$bb12_i$19:do{if(Bh==12){var Fy=O4;var Fx=(((Fy))|0)==3;if(!(Fx)){Bh=16;break $bb8_i$$bb12_i$19}var Fw=K5;var Fu=((Fw)&4294967295);var Fi=uA[((Fu)>>2)];var Fh=(Fi)&262144;var Fg=(((Fh))|0)==0;if(!(Fg)){Bh=16;break $bb8_i$$bb12_i$19}var Ff=AN;var Fe=((Ff+-2)&4294967295);var Fd=la[((Fe)>>0)];var Fc=iB((Fd),8,0);var Fb=(((Fc)-48)&4294967295);var E9=(((Fb))>>>0)<=9;if(!(E9)){Bh=16;break $bb8_i$$bb12_i$19}IO=1;Bh=18;break $bb6_i$$bb14_i$15}}while(0);var JZ=IO;var E8=(((JZ))|0)==0;if(!(E8)){Bh=18;break $bb6_i$$bb14_i$15}uA[((u)>>2)]=0}}while(0);la[((((X)&4294967295))>>0)]=0;var Mu=((Jn)&4294967295);la[((Mu)>>0)]=0;var Mr=IO;var Mp=(((Mr))|0)!=0;if(Mp){Bh=20}else{Bh=19}$bb16_i$$bb15_i$27:do{if(Bh==19){var Mn=AN;var Ml=((Mn)&4294967295);var Mj=la[((Ml)>>0)];var Mh=iB((Mj),8,0)!=48;if(Mh){Bh=20;break $bb16_i$$bb15_i$27}else{Bh=22;break $bb16_i$$bb15_i$27}}}while(0);$bb16_i$$bb18_i$29:do{if(Bh==20){var Mf=AN;var Md=QT;var Mb=((Mf+Md)&4294967295);var LV=Eh;var LT=AN;var LR=K5;var LP=sC(LV,LT,Mb,LR,0);BZ=LP;var LN=BZ;var LL=(((LN))|0)!=0;var LJ=oD((LL),1,0);Dy=LJ;var Bj=iB((LJ),8,0)!=0;if(!(Bj)){Bh=22;break $bb16_i$$bb18_i$29}L7=1}}while(0);var LH=AN;var LF=QT;var LD=((LH+LF)&4294967295);var Lp=la[((LD)>>0)];var Ln=iB((Lp),8,0)==46;if(Ln){Bh=23}else{Bh=27}$bb19_i$$bb23_i$33:do{if(Bh==23){var Ll=QT;var Lj=(((Ll)+1)&4294967295);var Lh=AN;var Lf=((Lh+Lj)&4294967295);var Ld=la[((Lf)>>0)];var Lb=iB((Ld),8,0);var K9=(((Lb)-48)&4294967295);var K7=(((K9))>>>0)>9;if(!(K7)){Bh=27;break $bb19_i$$bb23_i$33}var K1=QT;var KZ=(((K1)+2)&4294967295);var KX=AN;var KV=((KX+KZ)&4294967295);var KT=la[((KV)>>0)];var KQ=iB((KT),8,0);var KO=(((KQ)-48)&4294967295);var KM=(((KO))>>>0)>9;if(!(KM)){Bh=27;break $bb19_i$$bb23_i$33}var KK=K5;var KI=((KK+12)&4294967295);var KG=((KI)&4294967295);var KF=uA[((KG)>>2)];var KE=(KF)&256;var KC=(((KE))|0)==0;if(!(KC)){Bh=27;break $bb19_i$$bb23_i$33}var KB=AN;var KA=QT;var Kz=((KB+KA)&4294967295);la[((Kz)>>0)]=0}}while(0);var Ky=BZ;var Kx=(((Ky))|0)==0;if(Kx){Bh=29}else{Bh=28}$bb25_i$$bb24_i$39:do{if(Bh==28){var Kw=Eh;var Ku=((Kw+280)&4294967295);var Ks=uA[((Ku)>>2)];var Kr=(((Ks))|0)==26741;if(Kr){Bh=29;break $bb25_i$$bb24_i$39}else{Bh=42;break $bb25_i$$bb24_i$39}}}while(0);$bb25_i$$bb40_i$41:do{if(Bh==29){var Kq=QT;var Ko=(((Kq)+1)&4294967295);QT=Ko;Lx=0;var Kn=((Oq)&4294967295);uA[((DX)>>2)]=Kn;var Km=K5;var Kl=((Km)&4294967295);var Kk=((Kl)&4294967295);var Kj=uA[((Kk)>>2)];var Ki=(Kj)&16384;var Kh=(((Ki))|0)!=0;if(Kh){Bh=30}else{Bh=32}if(Bh==30){var Kg=uA[((DX)>>2)];la[((Kg)>>0)]=45;var Kf=((Kg+1)&4294967295);uA[((DX)>>2)]=Kf;Lx=1;var Ke=QT;var Kd=(((Ke)+1)&4294967295);QT=Kd}$bb29_i$45:while(1){var JM=AN;var JL=QT;var JK=((JM+JL)&4294967295);var JJ=la[((JK)>>0)];var JI=iB((JJ),8,0)==0;if(JI){Bh=35;break $bb29_i$45}var JH=AN;var Jt=QT;var Js=((JH+Jt)&4294967295);var Jr=la[((Js)>>0)];var Jq=iB((Jr),8,0)==32;if(Jq){Bh=35;break $bb29_i$45}var Jo=QT;var Jm=(((Jo))|0)<=18;if(!(Jm)){Bh=35;break $bb29_i$45}var Kc=uA[((DX)>>2)];var Kb=AN;var Ka=QT;var J9=((Kb+Ka)&4294967295);var JR=la[((J9)>>0)];la[((Kc)>>0)]=JR;var JQ=((Kc+1)&4294967295);uA[((DX)>>2)]=JQ;var JO=QT;var JN=(((JO)+1)&4294967295);QT=JN;Bh=32;continue $bb29_i$45}var Jl=uA[((DX)>>2)];la[((Jl)>>0)]=0;var Jk=((Oq)&4294967295);var Jj=la[((Jk)>>0)];var Ji=iB((Jj),8,0)!=0;if(!(Ji)){Bh=42;break $bb25_i$$bb40_i$41}var I5=Eh;var I4=((I5)&4294967295);var I3=((I4+216)&4294967295);var I2=uA[((I3)>>2)];var I1=(I2)==0;if(I1){Bh=39}else{Bh=37}$bb36_i$$bb34_i$52:do{if(Bh==37){var I0=Eh;var IZ=((I0)&4294967295);var IY=((IZ+216)&4294967295);var IW=uA[((IY)>>2)];var IV=((Oq)&4294967295);var A2=pt(IV,IW);var A0=(((A2))|0)!=0;if(A0){Bh=39;break $bb36_i$$bb34_i$52}BZ=2;Bh=42;break $bb25_i$$bb40_i$41}}while(0);var AY=((Oq)&4294967295);var AV=la[((AY)>>0)];var AT=iB((AV),8,0);var AQ=(((AT)-48)&4294967295);var AO=(((AQ))>>>0)>9;if(!(AO)){Bh=42;break $bb25_i$$bb40_i$41}var AL=((OD)&4294967295);var AI=((Oq)&4294967295);var i=qs(AL,((jq)&4294967295),AI);var RX=Eh;var RV=((OD)&4294967295);Bl=RX;Ec=RV;OY=((X)&4294967295);var RT=((My+4)&4294967295);uA[((RT)>>2)]=0;var RR=((My+4)&4294967295);var RP=uA[((RR)>>2)];var RN=((My)&4294967295);uA[((RN)>>2)]=RP;var RL=Ec;uA[((BA)>>2)]=RL;var RJ=Bl;var RH=OY;var RF=((My)&4294967295);var Ry=tN(RJ,BA,RH,RF,0,0);IF=Ry;var Rw=IF;RE=Rw;var Fa=RE;var Ru=(((Fa))|0)!=0;var Rs=oD((Ru),1,0);M2=Rs;var Rq=M2;var N8=iB((Rq),8,0)!=0;if(!(N8)){Bh=42;break $bb25_i$$bb40_i$41}BZ=2;var Ro=Fv;var Rm=((Ro)&4294967295);var Rk=uA[((Rm)>>2)];var Ri=(Rk)|128;var Rg=Fv;var Rd=((Rg)&4294967295);uA[((Rd)>>2)]=Ri;ML=1}}while(0);var Rb=K5;var Q9=((Rb)&4294967295);var Q7=((Q9)&4294967295);var Q5=uA[((Q7)>>2)];var Q3=(Q5)&32768;var Q1=(((Q3))|0)!=0;if(Q1){Bh=43}else{Bh=44}if(Bh==43){BZ=2}var QZ=((K4)&4294967295);la[((QZ)>>0)]=0;var QX=((Co)&4294967295);la[((QX)>>0)]=0;var QV=AN;var QR=((QV)&4294967295);var QQ=la[((QR)>>0)];var QP=iB((QQ),8,0)==48;if(QP){Bh=45}else{Bh=59}$bb43_i$$bb57_i$62:do{if(Bh==45){var QO=IO;var QN=(((QO))|0)==0;if(!(QN)){Bh=59;break $bb43_i$$bb57_i$62}var QM=AN;var QL=((QM+1)&4294967295);var QK=la[((QL)>>0)];var QJ=iB((QK),8,0)!=32;if(!(QJ)){Bh=59;break $bb43_i$$bb57_i$62}var QI=AN;var QD=((QI+1)&4294967295);var QC=la[((QD)>>0)];var QB=iB((QC),8,0);var QA=Eh;var Qz=((QA)&4294967295);var Qy=((Qz+208)&4294967295);var Qw=uA[((Qy)>>2)];var Qv=(((QB))|0)!=(((Qw))|0);if(!(Qv)){Bh=59;break $bb43_i$$bb57_i$62}var Qt=O4;var Qr=(((Qt))|0)!=2;if(Qr){Ob=48;Bh=53}else{Ob=48;Bh=49}if(Bh==49){var Qp=AN;var Qn=((Qp+3)&4294967295);var Qm=la[((Qn)>>0)];var Ql=iB((Qm),8,0)!=58;if(Ql){Bh=52}else{Bh=50}$bb51_ithread_pre_split$$bb48_i$69:do{if(Bh==50){var Qk=AN;var Qj=((Qk+5)&4294967295);var Qi=la[((Qj)>>0)];var Qh=iB((Qi),8,0);var Qf=(((Qh)-48)&4294967295);var Qe=(((Qf))>>>0)>9;if(Qe){Bh=52;break $bb51_ithread_pre_split$$bb48_i$69}var P3=AN;var P2=((P3+7)&4294967295);var P1=la[((P2)>>0)];var P0=iB((P1),8,0);var PZ=xE(P0);var PY=(((PZ))|0)==0;if(!(PY)){Bh=59;break $bb43_i$$bb57_i$62}}}while(0);var MY=O4;Ob=52}var PX=Ob==52?MY:(Qt);var PW=(((PX))|0)>3;if(PW){Bh=54}else{Bh=55}if(Bh==54){var PV=Fv;var PU=((PV)&4294967295);var PI=uA[((PU)>>2)];var PH=(PI)&-129;var PG=Fv;var PF=((PG)&4294967295);uA[((PF)>>2)]=PH;IE=0;Bh=171;break $bb43_i$$bb57_i$62}else{if(Bh==55){QT=0;var PE=((Jn)&4294967295);var PD=((My+4)&4294967295);var PC=((My+4)&4294967295);var PB=((My)&4294967295);var PA=((My)&4294967295);while(1){var HP=AN;var HN=QT;var HL=((HP+HN)&4294967295);var HJ=la[((HL)>>0)];var HH=iB((HJ),8,0)!=48;if(HH){Bh=59;break $bb43_i$$bb57_i$62}var HF=O4;var HD=(((HF)-1)&4294967295);var HB=QT;var Hz=(((HD))|0)>(((HB))|0);if(!(Hz)){Bh=59;break $bb43_i$$bb57_i$62}var Pz=wg(PE);var Pl=((Jn+Pz)&4294967295);var Pk=Eh;QF=Pk;C2=((xa)&4294967295);Ov=Pl;uA[((PD)>>2)]=0;var Pj=uA[((PC)>>2)];uA[((PB)>>2)]=Pj;var Pi=C2;uA[((Bk)>>2)]=Pi;var Ph=QF;var Pf=Ov;var Pe=tN(Ph,Bk,Pf,PA,0,0);IG=Pe;var Pd=IG;Pg=Pd;var Pc=QT;var Pb=(((Pc)+1)&4294967295);QT=Pb;Bh=57;continue}}}}}while(0);if(Bh==59){var Hx=Eh;var Hk=((Hx)&4294967295);var Hi=((Hk+184)&4294967295);var Hg=uA[((Hi)>>2)];var He=(Hg)&4096;var Hc=(((He))|0)==0;if(Hc){Bh=62}else{Bh=60}$bb60_i$$bb58_i$83:do{if(Bh==60){var Ha=AN;var G7=O4;var G5=((Ha+G7)&4294967295);var G3=la[((G5)>>0)];var G1=iB((G3),8,0)!=32;if(G1){Bh=62;break $bb60_i$$bb58_i$83}DO=1;Bh=64;break $bb60_i$$bb58_i$83}}while(0);$bb60_i$$bb62_i_thread$86:do{if(Bh==62){var GO=AN;var GM=O4;var GK=((GO+GM)&4294967295);var GI=la[((GK)>>0)];var GG=iB((GI),8,0);var GE=Eh;var GC=((GE)&4294967295);var GA=((GC+204)&4294967295);var Gy=uA[((GA)>>2)];var Gw=(((GG))|0)==(((Gy))|0);if(Gw){Bh=63}else{Bh=65}if(Bh==63){DO=2;Bh=64;break $bb60_i$$bb62_i_thread$86}else{if(Bh==65){var MW=DO;var Gf=O4;var Gd=(((Gf)+2)&4294967295);Bz=Gd;var Gb=(((MW))|0)>0;if(Gb){Bh=66;break $bb60_i$$bb62_i_thread$86}else{Bh=81;break $bb60_i$$bb62_i_thread$86}}}}}while(0);$bb62_i_thread$$bb63_i$$bb79_i$91:do{if(Bh==64){var Gj=O4;var Gh=(((Gj)+2)&4294967295);Bz=Gh;Bh=66;break $bb62_i_thread$$bb63_i$$bb79_i$91}}while(0);$bb63_i$$bb79_i$93:do{if(Bh==66){var F9=O4;var F7=DO;var F5=(((F7)+(F9))&4294967295);J2=F5;$bb73_i$95:while(1){var Ea=B0;var D9=(((Ea)+1)&4294967295);var D8=K5;var D7=((D8+12*D9)&4294967295);var D6=((D7)&4294967295);var DU=uA[((D6)>>2)];var DT=(DU)&262144;var DS=(((DT))|0)!=0;if(DS){Bh=81;break $bb63_i$$bb79_i$93}var DR=AN;var DP=J2;var DN=((DR+DP)&4294967295);var DM=la[((DN)>>0)];var DL=iB((DM),8,0);var DK=(((DL)-48)&4294967295);var DJ=(((DK))>>>0)>9;if(DJ){Bh=81;break $bb63_i$$bb79_i$93}var Ox=J2;var Ou=(((Ox)+1)&4294967295);var Os=AN;var Op=((Os+Ou)&4294967295);var On=la[((Op)>>0)];var Ol=iB((On),8,0);var Oj=(((Ol)-48)&4294967295);var Oh=(((Oj))>>>0)>9;if(Oh){Bh=81;break $bb63_i$$bb79_i$93}var Of=J2;var Od=(((Of)+2)&4294967295);var N6=AN;var N4=((N6+Od)&4294967295);var N2=la[((N4)>>0)];var N0=iB((N2),8,0);var NY=(((N0)-48)&4294967295);var NW=(((NY))>>>0)>9;if(NW){Bh=81;break $bb63_i$$bb79_i$93}var NU=J2;var NS=(((NU)+3)&4294967295);var NQ=AN;var NO=((NQ+NS)&4294967295);var NM=la[((NO)>>0)];var NJ=iB((NM),8,0);var NH=(((NJ)-48)&4294967295);var NF=(((NH))>>>0)<=9;if(NF){Bh=81;break $bb63_i$$bb79_i$93}var ND=J2;var NB=(((ND)-1)&4294967295);var Nz=AN;var Nx=((Nz+NB)&4294967295);var Nv=la[((Nx)>>0)];var Nt=iB((Nv),8,0);var Nq=(((Nt)-48)&4294967295);var No=(((Nq))>>>0)>9;if(!(No)){Bh=81;break $bb63_i$$bb79_i$93}var F3=AN;var F1=J2;var FP=((F3+F1)&4294967295);var FO=la[((FP)>>0)];var FN=iB((FO),8,0)!=48;if(FN){Bh=70}else{Bh=68}$bb67_i$$bb65_i$103:do{if(Bh==68){var FM=J2;var FL=(((FM)+1)&4294967295);var FK=AN;var FJ=((FK+FL)&4294967295);var FH=la[((FJ)>>0)];var FG=iB((FH),8,0)!=48;if(FG){Bh=70;break $bb67_i$$bb65_i$103}var FF=J2;var Fs=(((FF)+2)&4294967295);var Fr=AN;var Fq=((Fr+Fs)&4294967295);var Fp=la[((Fq)>>0)];var Fo=iB((Fp),8,0)!=48;if(Fo){Bh=70;break $bb67_i$$bb65_i$103}else{Bh=71;break $bb67_i$$bb65_i$103}}}while(0);if(Bh==70){QE=0}var Fn=B0;var Fm=(((Fn)+1)&4294967295);B0=Fm;var Fl=J2;var Fk=(((Fl)+3)&4294967295);J2=Fk;var Fj=AN;var E5=J2;var E4=((Fj+E5)&4294967295);var E3=la[((E4)>>0)];var E2=iB((E3),8,0);var E1=Eh;var E0=((E1)&4294967295);var EZ=((E0+204)&4294967295);var EY=uA[((EZ)>>2)];var EX=(((E2))|0)==(((EY))|0);if(EX){Bh=74}else{Bh=72}if(Bh==72){var EW=Eh;var EL=((EW)&4294967295);var EK=((EL+184)&4294967295);var EJ=uA[((EK)>>2)];var EI=(EJ)&4096;var EH=(((EI))|0)==0;if(EH){Bh=81;break $bb63_i$$bb79_i$93}var EG=AN;var EF=J2;var EE=((EG+EF)&4294967295);var ED=la[((EE)>>0)];var EB=iB((ED),8,0)==32;if(!(EB)){Bh=81;break $bb63_i$$bb79_i$93}}var Eg=J2;var Ef=(((Eg)+2)&4294967295);Bz=Ef;var Ee=J2;var Ed=DO;var Eb=(((Ed)+(Ee))&4294967295);J2=Eb;Bh=75;continue $bb73_i$95}}}while(0);var Nm=JP;var Nk=(((Nm))|0)==0;if(Nk){Bh=82}else{Bh=84}$bb80_i$$bb82_i$114:do{if(Bh==82){var Nh=IO;var Nf=(((Nh))|0)!=0;if(!(Nf)){Bh=84;break $bb80_i$$bb82_i$114}JS=1}}while(0);var Nd=Eh;var Nb=((Nd+280)&4294967295);var M9=uA[((Nb)>>2)];var M6=(((M9))|0)==26741;if(M6){Bh=85}else{Bh=90}$bb83_i$$bb91_i$118:do{if(Bh==85){var M1=K5;var M0=B0;var MZ=((M1+12*M0)&4294967295);var MX=((MZ)&4294967295);var MV=uA[((MX)>>2)];var MU=(MV)&16384;var MT=(((MU))|0)==0;if(MT){Bh=88}else{Bh=86}$bb88_i$$bb84_i$120:do{if(Bh==86){var MS=QE;var MQ=(((MS))|0)!=1;if(MQ){Bh=88;break $bb88_i$$bb84_i$120}var MP=AN;var MI=Bz;var MH=((MP+MI)&4294967295);var MG=B0;var MF=JP;var ME=hl(MH,MG,MF);var MD=(((ME))|0)==0;if(MD){Bh=88;break $bb88_i$$bb84_i$120}NK=1;Qu=1;var MC=uA[((v9)>>2)];var MB=(MC)|1;uA[((v9)>>2)]=MB;Bh=90;break $bb83_i$$bb91_i$118}}while(0);NK=0;Qu=0}}while(0);var MA=AN;var Mz=O4;var Mw=((MA+Mz)&4294967295);var Mt=la[((Mw)>>0)];var Mq=iB((Mt),8,0);var Mo=Eh;var Mm=((Mo)&4294967295);var Mk=((Mm+208)&4294967295);var Mi=uA[((Mk)>>2)];var Mg=(((Mq))|0)!=(((Mi))|0);if(Mg){Bh=93}else{Bh=91}$bb94_i$$bb92_i$126:do{if(Bh==91){var Me=O4;var Mc=(((Me)+1)&4294967295);var LW=AN;var LU=((LW+Mc)&4294967295);var LS=la[((LU)>>0)];var LQ=iB((LS),8,0);var LO=(((LQ)-48)&4294967295);var LM=(((LO))>>>0)>9;if(LM){Bh=93;break $bb94_i$$bb92_i$126}var LK=Eh;var LI=((K4)&4294967295);Kp=LK;Oa=((rq)&4294967295);Qo=LI;var LG=((My+4)&4294967295);uA[((LG)>>2)]=0;var LE=((My+4)&4294967295);var Lq=uA[((LE)>>2)];var Lo=((My)&4294967295);uA[((Lo)>>2)]=Lq;var Lm=Oa;uA[((KD)>>2)]=Lm;var Lk=Kp;var Li=Qo;var Lg=((My)&4294967295);var Le=tN(Lk,KD,Li,Lg,0,0);IH=Le;var Lc=IH;QH=Lc;M3=1;Bh=104;break $bb94_i$$bb92_i$126}}while(0);$bb94_i$$bb110_i$129:do{if(Bh==93){var La=JS;var K8=(((La))|0)==0;if(K8){Bh=94}else{Bh=101}if(Bh==94){var K2=DO;var K0=(((K2))|0)>0;if(!(K0)){Bh=104;break $bb94_i$$bb110_i$129}var KY=B0;var KW=(((KY))|0)>0;if(!(KW)){Bh=104;break $bb94_i$$bb110_i$129}var KU=JP;var KR=(((KU))|0)<=999;if(!(KR)){Bh=104;break $bb94_i$$bb110_i$129}var KP=JS;var KN=(((KP))|0)!=0;if(KN){Bh=99}else{Bh=98}$bb102_i$$bb99_i$136:do{if(Bh==98){var KL=Eh;var KJ=JP;var C7=B0;var C4=QE;var C1=((K4)&4294967295);var CZ=n9(KL,KJ,C7,C4,C1);var CX=(((CZ))|0)==0;if(CX){Bh=99;break $bb102_i$$bb99_i$136}Pw=1;A8=1;JP=0;JS=1;Bh=104;break $bb94_i$$bb110_i$129}}while(0);Pw=0;A8=0}else{if(Bh==101){var CV=uA[((u)>>2)];var CT=(((CV))|0)==1;if(!(CT)){Bh=104;break $bb94_i$$bb110_i$129}var CR=B0;var CP=(((CR)+1)&4294967295);var CN=((OD)&4294967295);var CK=qs(CN,((oa)&4294967295),CP);var CI=Eh;var CG=((OD)&4294967295);var CE=((QS)&4294967295);KS=CI;PT=CG;J8=CE;var CC=((My+4)&4294967295);uA[((CC)>>2)]=0;var CA=((My+4)&4294967295);var Cx=uA[((CA)>>2)];var Cv=((My)&4294967295);uA[((Cv)>>2)]=Cx;var Ct=PT;uA[((A4)>>2)]=Ct;var Cr=KS;var Cj=J8;var Ch=((My)&4294967295);var Cf=tN(Cr,A4,Cj,Ch,0,0);Eo=Cf;var Cd=Eo;Kv=Cd;var LY=Kv;var Cb=(((LY))|0)==0;var B9=oD((Cb),1,0);Dd=B9;var B7=Dd;var Py=iB((B7),8,0)!=0;if(!(Py)){Bh=104;break $bb94_i$$bb110_i$129}var B5=((OD)&4294967295);var B3=B0;var B1=qs(B5,((oa)&4294967295),B3);var BV=Eh;var BT=((OD)&4294967295);var BR=((K4)&4294967295);Bn=BV;Gp=BT;RB=BR;var BP=((My+4)&4294967295);uA[((BP)>>2)]=0;var BN=((My+4)&4294967295);var BL=uA[((BN)>>2)];var BJ=((My)&4294967295);uA[((BJ)>>2)]=BL;var BH=Gp;uA[((Mx)>>2)]=BH;var BF=Bn;var BD=RB;var By=((My)&4294967295);var Bx=tN(BF,Mx,BD,By,0,0);Eq=Bx;var Bw=Eq;AS=Bw}}}}while(0);var Bv=((K4)&4294967295);var Bu=la[((Bv)>>0)];var Bt=iB((Bu),8,0)==0;if(Bt){Bh=105}else{Bh=108}$bb111_i$$bb114_i$144:do{if(Bh==105){var Bs=AN;var Bq=O4;var Bp=((Bs+Bq)&4294967295);var Bo=la[((Bp)>>0)];var Bf=iB((Bo),8,0)==46;if(!(Bf)){Bh=108;break $bb111_i$$bb114_i$144}var Be=B0;var Bd=(((Be))|0)==0;if(!(Bd)){Bh=118;break $bb111_i$$bb114_i$144}var Bc=Eh;var Bb=((K4)&4294967295);MK=Bc;OX=((yD)&4294967295);IU=Bb;var Ba=((My+4)&4294967295);uA[((Ba)>>2)]=0;var A9=((My+4)&4294967295);var A7=uA[((A9)>>2)];var A6=((My)&4294967295);uA[((A6)>>2)]=A7;var A5=OX;uA[((CL)>>2)]=A5;var A3=MK;var A1=IU;var AZ=((My)&4294967295);var AW=tN(A3,CL,A1,AZ,0,0);Es=AW;var AU=Es;Jv=AU;Bh=108;break $bb111_i$$bb114_i$144}}while(0);$bb114_i$$bb127_i$148:do{if(Bh==108){var MR=B0;var AR=(((MR))|0)==0;if(!(AR)){Bh=118;break $bb114_i$$bb127_i$148}var AP=AN;uA[((DX)>>2)]=AP;var AM=uA[((DX)>>2)];var AJ=((AM+1)&4294967295);var AH=la[((AJ)>>0)];var RY=iB((AH),8,0);var RW=(((RY)-48)&4294967295);var RU=(((RW))>>>0)<=9;var RS=xk[((DX)>>2)];if(RU){Ob=109;Bh=110}else{Ob=109;Bh=111}$bb116_i$$bb118_i$151:do{if(Bh==110){while(1){var RQ=Ob==110?Rv:(RS);var RO=((RQ+1)&4294967295);uA[((DX)>>2)]=RO;var RM=uA[((DX)>>2)];var RK=((RM+1)&4294967295);var RI=la[((RK)>>0)];var RG=iB((RI),8,0);var Rz=(((RG)-48)&4294967295);var Rx=(((Rz))>>>0)<=9;var Rv=xk[((DX)>>2)];if(Rx){Ob=110;Bh=110;continue}else{Ob=110;Bh=111;break $bb116_i$$bb118_i$151}}}}while(0);var Rf=Ob==109?RS:(Rv);var Rt=((Rf+-1)&4294967295);var Rr=la[((Rt)>>0)];var Rp=iB((Rr),8,0);var Rn=(((Rp)-48)&4294967295);var Rl=(((Rn))>>>0)<=9;if(Rl){Bh=112}else{Bh=114}$bb119_i$$bb122_i$155:do{if(Bh==112){var Rj=uA[((DX)>>2)];var Rh=((Rj+-1)&4294967295);uA[((Qx)>>2)]=Rh;var Re=Eh;var Rc=((RA)&4294967295);var Ra=Fv;var Q8=K5;var Q6=tN(Re,Qx,Rc,Ra,4,Q8);var Q4=(((Q6))|0)!=0;var Q2=oD((Q4),1,0);FI=Q2;var Q0=FI;var Bg=iB((Q0),8,0)!=0;if(!(Bg)){Bh=114;break $bb119_i$$bb122_i$155}uA[((lI)>>2)]=2}}while(0);var QY=((RA)&4294967295);var QW=la[((QY)>>0)];var J6=iB((QW),8,0)==0;if(!(J6)){Bh=118;break $bb114_i$$bb127_i$148}var J5=uA[((DX)>>2)];var J4=la[((J5)>>0)];var J3=iB((J4),8,0)!=48;if(!(J3)){Bh=118;break $bb114_i$$bb127_i$148}var J1=Eh;var J0=((RA)&4294967295);var JY=Fv;var JX=K5;var JW=tN(J1,DX,J0,JY,4,JX);var JV=(((JW))|0)!=0;var JG=oD((JV),1,0);Br=JG;var JF=Br;var Qs=iB((JF),8,0)!=0;if(!(Qs)){Bh=118;break $bb114_i$$bb127_i$148}uA[((lI)>>2)]=1}}while(0);var JE=IO;var JC=BZ;var JB=(JC)|(JE);var JA=Eh;var Jz=JP;var Jy=((Ns)&4294967295);var Jx=JS;var Jw=B0;xz(JA,Jz,Jy,Jx,Jw,JB);var Jh=B0;var Jg=(((Jh))|0)<=0;if(Jg){Bh=121}else{Bh=119}$bb130_i$$bb128_i$163:do{if(Bh==119){var Jf=Eh;var Je=((Jf)&4294967295);var Jc=((Je+188)&4294967295);var Jb=uA[((Jc)>>2)];var Ja=(Jb)&512;var I9=(((Ja))|0)==0;if(I9){Bh=121;break $bb130_i$$bb128_i$163}var I8=Cn;var I7=((Jn)&4294967295);var IT=((K4)&4294967295);var IS=((Co)&4294967295);var IR=((Ns)&4294967295);var IP=qs(I8,((r7)&4294967295),I7,IT,IS,IR);Bh=122;break $bb130_i$$bb128_i$163}}while(0);if(Bh==121){var IN=Cn;var IM=((Jn)&4294967295);var IL=((Co)&4294967295);var IK=((Ns)&4294967295);var IJ=((K4)&4294967295);var II=qs(IN,((r7)&4294967295),IM,IL,IK,IJ)}var Ix=((Ns)&4294967295);var Iw=((OD)&4294967295);var Iv=((OD)&4294967295);var Iu=((QS)&4294967295);var It=((My+4)&4294967295);var Is=((My+4)&4294967295);var Ir=((My)&4294967295);var Ip=((My)&4294967295);var In=((Ns)&4294967295);var Im=((QS)&4294967295);var Ib=((Ns)&4294967295);var Ia=((QS)&4294967295);var H9=((QS)&4294967295);var H8=((QS)&4294967295);var H7=((QS)&4294967295);var H6=((QS)&4294967295);var H5=((My+4)&4294967295);var H4=((My+4)&4294967295);var H3=((My)&4294967295);var H2=((My)&4294967295);var HQ=((QS)&4294967295);var HO=((QS)&4294967295);var HM=((QS)&4294967295);var HK=((QS)&4294967295);var HI=((My+4)&4294967295);var HG=((My+4)&4294967295);var HE=((My)&4294967295);var HC=((My)&4294967295);var HA=((QS)&4294967295);var Hy=((QS)&4294967295);var Hl=((My+4)&4294967295);var Hj=((My+4)&4294967295);var Hh=((My)&4294967295);var Hf=((My)&4294967295);var Hd=((QS)&4294967295);$bb168_ithread_pre_split$169:while(1){var MO=M3;Ob=149;$bb168_i$171:while(1){var Dm=Ob==149?MO:(0);var Dl=(((Dm))|0)!=0;if(!(Dl)){Bh=151;break $bb168_ithread_pre_split$169}var Hb=O4;var G8=(((Hb)+1)&4294967295);O4=G8;BB=0;var G6=O4;var G4=BB;var G2=(((G4)+(G6))&4294967295);var GP=AN;var GN=((GP+G2)&4294967295);var GL=la[((GN)>>0)];var GJ=iB((GL),8,0);var GH=(((GJ)-48)&4294967295);var GF=(((GH))>>>0)<=9;if(GF){Bh=124}else{Bh=125}$bb133_i$$bb135_i$174:do{if(Bh==124){while(1){var GD=BB;var GB=(((GD)+1)&4294967295);BB=GB;var Gz=O4;var Gx=BB;var Gk=(((Gx)+(Gz))&4294967295);var Gi=AN;var Gg=((Gi+Gk)&4294967295);var Ge=la[((Gg)>>0)];var Gc=iB((Ge),8,0);var Ga=(((Gc)-48)&4294967295);var F8=(((Ga))>>>0)<=9;if(F8){Bh=124;continue}else{Bh=125;break $bb133_i$$bb135_i$174}}}}while(0);Cy=2;var F6=Eh;var F4=((F6)&4294967295);var F2=((F4+184)&4294967295);var Qd=uA[((F2)>>2)];var Qc=(Qd)&57344;Pa=Qc;Iq=Qc;if(Qc==8192){Bh=132}else{if(Qc==16384){Bh=127}else{if(Qc==24576){Bh=137}else{if(Qc==32768){Bh=126}else{if(Qc==40960){Bh=132}else{Bh=141}}}}}$bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178:do{if(Bh==132){var OR=AN;var OP=O4;var ON=((OR+OP)&4294967295);var OM=wU(ON);var OL=Eh;xz(OL,OM,Ix,0,0,0);var OK=AN;var OJ=O4;var OI=((OK+OJ)&4294967295);var OH=la[((OI)>>0)];var OG=iB((OH),8,0)==48;if(OG){Bh=134}else{Bh=133}$bb146_i$$bb145_i$180:do{if(Bh==133){var OF=Pa;var OE=(((OF))|0)==40960;if(OE){Bh=134;break $bb146_i$$bb145_i$180}else{Bh=136;break $bb146_i$$bb145_i$180}}}while(0);if(Bh==134){var OC=BB;var OB=qs(Iw,((nS)&4294967295),OC);var OA=Eh;Ls=OA;Qq=Iv;Kt=Iu;uA[((It)>>2)]=0;var Oy=uA[((Is)>>2)];uA[((Ir)>>2)]=Oy;var Ow=Qq;uA[((DQ)>>2)]=Ow;var Ot=Ls;var Or=Kt;var Oo=tN(Ot,DQ,Or,Ip,0,0);Ew=Oo;var Om=Ew;KH=Om;var OQ=KH;var Ok=(((OQ))|0)==0;var Oi=oD((Ok),1,0);OO=Oi;var Pr=iB((Oi),8,0)!=0;if(Pr){Bh=141;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}var Og=sU(In,Im)}var Oe=Cn;var N7=sU(Oe,Ib);var N5=O4;var N3=BB;var N1=(((N3)+(N5))&4294967295);O4=N1;Bh=141;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}else{if(Bh==137){var NZ=BB;var NX=(((NZ))|0)<=4;if(!(NX)){Bh=141;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}var NV=AN;var NT=O4;var NR=((NV+NT)&4294967295);var NP=la[((NR)>>0)];var NN=iB((NP),8,0)!=48;if(!(NN)){Bh=141;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}var NL=AN;var NI=O4;var NG=((NL+NI)&4294967295);var NE=wU(NG);var NC=Eh;xz(NC,NE,Ia,0,0,0);var NA=Cn;var Ny=sU(NA,H9);var Nw=O4;var Nu=BB;var Nr=(((Nu)+(Nw))&4294967295);O4=Nr;Bh=141;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}else{if(Bh==126){Cy=5;Bh=127;break $bb155_i$$bb144_i$$bb139_i_preheader$$bb150_i$$bb136_i$178}}}}while(0);$bb155_i$$bb139_i_preheader$190:do{if(Bh==127){var Qb=AN;var Qa=O4;var P9=((Qb+Qa)&4294967295);var P8=la[((P9)>>0)];var P7=iB((P8),8,0)==48;if(P7){Bh=128}else{Bh=129}$bb138_i$$bb140_i$192:do{if(Bh==128){while(1){var P6=Eh;C5=P6;Io=((xa)&4294967295);BC=H6;uA[((H5)>>2)]=0;var P5=uA[((H4)>>2)];uA[((H3)>>2)]=P5;var P4=Io;uA[((K3)>>2)]=P4;var PS=C5;var PR=BC;var PQ=tN(PS,K3,PR,H2,0,0);Eu=PQ;var PP=Eu;Cm=PP;var PO=Cn;var PN=sU(PO,HQ);var PM=BB;var PL=(((PM)-1)&4294967295);BB=PL;var PK=O4;var PJ=(((PK)+1)&4294967295);O4=PJ;var Px=AN;var Pv=O4;var Pu=((Px+Pv)&4294967295);var Pt=la[((Pu)>>0)];var Ps=iB((Pt),8,0)==48;if(Ps){Bh=128;continue}else{Bh=129;break $bb138_i$$bb140_i$192}}}}while(0);var Pq=BB;var Pp=Cy;var Po=(((Pq))|0)<=(((Pp))|0);if(!(Po)){Bh=141;break $bb155_i$$bb139_i_preheader$190}var Pn=AN;var Pm=O4;var O9=((Pn+Pm)&4294967295);var O8=la[((O9)>>0)];var O7=iB((O8),8,0);var O6=(((O7)-48)&4294967295);var O5=(((O6))>>>0)<=9;if(!(O5)){Bh=141;break $bb155_i$$bb139_i_preheader$190}var O3=AN;var O2=O4;var O1=((O3+O2)&4294967295);var O0=wU(O1);var OZ=Eh;xz(OZ,O0,H8,0,0,0);var OW=Cn;var OV=sU(OW,H7);var OU=O4;var OT=BB;var OS=(((OT)+(OU))&4294967295);O4=OS}}while(0);while(1){var ER=AN;var EQ=O4;var EP=((ER+EQ)&4294967295);var EO=la[((EP)>>0)];GQ=EO;var EN=GQ;var EM=oD((EN),8,0);var Ev=(((EM)-48)&4294967295);var Et=(((Ev))>>>0)>9;if(Et){Bh=143;break}var Er=Cn;var Ep=wg(Er);var En=(((Ep))>>>0)>149;if(En){Bh=143;break}M4=1;Dq=1;var Np=AN;var Nn=O4;var Nl=((Np+Nn)&4294967295);var Nj=la[((Nl)>>0)];var Ng=iB((Nj),8,0);var Ne=(((Ng)-48)&4294967295);JP=Ne;var Nc=O4;var Na=(((Nc)+1)&4294967295);O4=Na;var M8=Eh;var EV=JP;var EU=wI(M8,EV,2,HO);var ET=Cn;var ES=sU(ET,HM);Bh=141;continue}M4=0;Dq=0;var Em=Eh;BX=Em;G9=((vB)&4294967295);AK=HK;uA[((HI)>>2)]=0;var El=uA[((HG)>>2)];uA[((HE)>>2)]=El;var Ek=G9;uA[((MM)>>2)]=Ek;var Ej=BX;var Ei=AK;var D5=tN(Ej,MM,Ei,HC,0,0);Ex=D5;var D4=Ex;Bi=D4;var E6=Bi;var D3=(((E6))|0)!=0;var D2=oD((D3),1,0);QG=D2;var Di=iB((D2),8,0)!=0;if(Di){Bh=144}else{Bh=145}if(Bh==144){var D1=Cn;var D0=sU(D1,HA)}var DZ=GQ;var DY=oD((DZ),8,0);var DW=Eh;var DV=((DW)&4294967295);var DI=((DV+208)&4294967295);var DH=uA[((DI)>>2)];var DG=(((DY))|0)!=(((DH))|0);if(DG){Bh=148}else{Bh=146}if(Bh==146){var DF=O4;var DE=(((DF)+1)&4294967295);var DD=AN;var DC=((DD+DE)&4294967295);var DB=la[((DC)>>0)];var DA=iB((DB),8,0);var Dz=(((DA)-48)&4294967295);var Dx=(((Dz))>>>0)>9;if(!(Dx)){Bh=147;break $bb168_i$171}}M3=0;Ob=148;Bh=150;continue $bb168_i$171}var Dw=Eh;M5=Dw;RC=((rq)&4294967295);L2=Hy;uA[((Hl)>>2)]=0;var Dv=uA[((Hj)>>2)];uA[((Hh)>>2)]=Dv;var Du=RC;uA[((C9)>>2)]=Du;var Dt=M5;var Ds=L2;var Dr=tN(Dt,C9,Ds,Hf,0,0);Ey=Dr;var Dp=Ey;J7=Dp;var Do=Cn;var Dn=sU(Do,Hd);Bh=149;continue $bb168_ithread_pre_split$169}var Dk=Cn;var Dh=((Dk)&4294967295);var Dg=la[((Dh)>>0)];var Df=iB((Dg),8,0)!=0;if(Df){Bh=152}else{Bh=168}$bb170_i$$bb179_i$211:do{if(Bh==152){var De=Cn;var Dc=((De)&4294967295);var Db=la[((Dc)>>0)];var Da=iB((Db),8,0)!=21;if(!(Da)){Bh=168;break $bb170_i$$bb179_i$211}var C8=O4;var C6=(((C8)+1)&4294967295);var C3=AN;var C0=((C3+C6)&4294967295);Hw=C0;var CY=Hw;JT=Dj;Mv=CY;var CW=JT;var CU=Mv;var CS=F(CW,CU,0);Ez=CS;var CQ=Ez;e=CQ;var JD=e;var CO=Hw;var CM=((CO+JD)&4294967295);Hw=CM;var CJ=Eh;var CH=((CJ)&4294967295);var CF=((CH+184)&4294967295);var CD=uA[((CF)>>2)];var CB=(CD)&131072;var Cz=(((CB))|0)!=0;if(Cz){Bh=154}else{Bh=156}$bb173_i$$bb175_ithread_pre_split$214:do{if(Bh==154){var Cw=uA[((Dj)>>2)];var Cu=(((Cw))|0)==32;if(Cu){Ob=154}else{Ob=154;Bh=157;break $bb173_i$$bb175_ithread_pre_split$214}var Cs=Hw;QU=Dj;BY=Cs;var Ck=QU;var Ci=BY;var Cg=F(Ck,Ci,0);EA=Cg;var Ce=EA;JU=Ce;Bh=156;break $bb173_i$$bb175_ithread_pre_split$214}}while(0);if(Bh==156){var MN=uA[((Dj)>>2)];Ob=156}var Cc=Ob==156?MN:(Cw);Ft=Cc;var Ca=(((Cc))>>>0)<=255;var B8=Ft;if(Ca){Bh=158}else{Bh=159}$bb_i_i$$bb1_i_i$220:do{if(Bh==158){var B6=z6(B8);EC=B6;Ob=158;Bh=164;break $bb_i_i$$bb1_i_i$220}else{if(Bh==159){var B4=(((B8))>>>0)>12352;var B2=Ft;var BW=(((B2))>>>0)<=42752;var Oc=(B4)&(BW);if(Oc){Bh=160}else{Bh=161}if(Bh==160){EC=1;Jp=1;Bh=168;break $bb170_i$$bb179_i$211}else{if(Bh==161){var BU=Ft;var BS=(((BU))>>>0)>563;if(BS){Bh=162}else{Bh=163}if(Bh==162){EC=0;Jp=0;Bh=165;break $bb_i_i$$bb1_i_i$220}else{if(Bh==163){var BQ=Ft;var BO=(((BQ)-256)&4294967295);var BM=((xF+BO)&4294967295);var BK=ll[((BM)>>0)];var BI=oD((BK),8,0);EC=BI;Ob=163;Bh=164;break $bb_i_i$$bb1_i_i$220}}}}}}}while(0);if(Bh==164){var BG=Ob==163?BI:(B6);Jp=BG;var BE=(((BG))|0)==0;if(!(BE)){Bh=168;break $bb170_i$$bb179_i$211}}var Ma=K5;var L9=B0;var L8=((Ma+12*L9)&4294967295);var L6=((L8)&4294967295);var L5=uA[((L6)>>2)];var L4=(L5)&16384;var L3=(((L4))|0)==0;if(L3){Bh=167}else{Bh=166}if(Bh==166){var L1=QE;var L0=(((L1))|0)==0;if(!(L0)){Bh=168;break $bb170_i$$bb179_i$211}}var LZ=Cn;var Cq=wg(LZ);var Ms=((LZ+Cq)&4294967295);ns(Ms,((Au)&4294967295),2,1,0)}}while(0);var LC=Fv;var LB=uA[((LC)>>2)];var LA=(LB)|-2147483648;var Lz=Fv;uA[((Lz)>>2)]=LA;var Ly=uA[((u)>>2)];var Lw=(((Ly)-1)&4294967295);uA[((u)>>2)]=Lw;var Lv=ML;var Lu=(((Lv))|0)!=0;if(Lu){Bh=169}else{Bh=170}if(Bh==169){var Lt=ML;uA[((k3)>>2)]=Lt}IE=1}var Lr=IE;Jd=Lr;var RD=Jd;ID=RD;Bh=173;break $bb1$$bb$2}else{if(Bh==172){ID=0;Bh=173;break $bb1$$bb$2}}}}while(0);if(Bh==2){ID=0}var K6=ID;MJ=K6;var IX=MJ;vp=Cp;return IX;return null}function lV(EH,DA,AL,CO){var BB=vp;vp+=212;n1(BB,0,212);var Cq;var Di=null;var EE;var AN;var C4;var CM;var EG;var Ef=BB;var Ct=BB+8;var Db;var D8;var Eb;var By;var AH;var Du;var A8;var Ba;var Bb;var Bc;var EF;var D6;var D1;var CQ;var Bd;var Dx;var Cc;var BL;var DZ;var AM;var A1;var DB;var Er=BB+12;var Eg=BB+20;var CJ=BB+52;Db=EH;D8=DA;Eb=AL;By=CO;DZ=0;AM=0;DB=0;Bd=0;Dx=0;BL=32767;var ED=Eb;var EC=((ED)&4294967295);la[((EC)>>0)]=0;var EB=((Er)&4294967295);uA[((EB)>>2)]=0;var EA=((Er+4)&4294967295);uA[((EA)>>2)]=0;var Ez=Db;var Ey=((Ez)&4294967295);var Ex=((Ey+184)&4294967295);var Ew=uA[((Ex)>>2)];var Do=(Ew)&33554432;var Dm=(((Do))|0)==0;if(Dm){Cq=2}else{Cq=1}$bb4$$bb$2:do{if(Cq==1){var Dk=By;var Dj=((Dk)&4294967295);var Dh=((Dj)&4294967295);var Dg=uA[((Dh)>>2)];var Df=(Dg)&1;var De=(((Df))&255);var BW=iB((De),8,0)!=0;var DO=(BW)^1;var D0=oD((DO),1,0);var Ei=iB((D0),8,0)!=0;if(Ei){Cq=3;break $bb4$$bb$2}else{Cq=2;break $bb4$$bb$2}}}while(0);$bb4$$bb5$4:do{if(Cq==2){var Dd=D8;var Dc=((Dd+-2)&4294967295);var C1=la[((Dc)>>0)];var CZ=iB((C1),8,0);var CX=(((CZ)-48)&4294967295);var CW=(((CX))>>>0)<=9;if(CW){Cq=3;break $bb4$$bb5$4}var CV=D8;A1=CV;$bb30$7:while(1){var AR=D8;var AQ=la[((AR)>>0)];var AP=iB((AQ),8,0);D6=AP;var AO=D6;var AK=(((AO))|0)!=32;var AJ=oD((AK),1,0);Bc=AJ;var AI=D8;var i=((AI+1)&4294967295);D8=i;var DH=iB((AJ),8,0)!=0;if(!(DH)){Cq=25;break $bb30$7}var CU=D6;var BV=np(((b2)&4294967295),CU,8);CQ=BV;var CT=CQ;var CS=(CT)==0;var CR=oD((CS),1,0);Bb=CR;var CP=Bb;var Eh=iB((CP),8,0)!=0;if(Eh){Cq=6;break $bb30$7}var CD=CQ;var CB=(CD);var Cz=(((CB)-(b2))&4294967295);var Cy=((dI+Cz*4)&4294967295);var Cx=uA[((Cy)>>2)];Cc=Cx;var Cw=Cc;var Cv=Dx;var Cu=(((Cw))|0)==(((Cv))|0);if(Cu){Cq=8}else{Cq=10}if(Cq==8){var Cs=DZ;var Cr=(((Cs)+1)&4294967295);DZ=Cr;var Ch=DZ;var Cf=(((Ch))|0)>2;if(Cf){Cq=9;break $bb30$7}}else{if(Cq==10){DZ=0}}var Cb=Dx;var B9=(((Cb))|0)>1;var B7=Dx;var B5=(((B7))|0)!=10;var DN=(B9)&(B5);var B3=Dx;var B1=(((B3))|0)!=100;var En=(DN)&(B1);if(En){Di=11;Cq=12}else{Di=11;Cq=14}if(Cq==12){var BZ=Cc;var BX=Dx;var BM=(((BZ))|0)>=(((BX))|0);if(BM){Di=12;Cq=13;break $bb30$7}else{Di=12}}var BJ=Di==12?BX:(B3);var BH=(((BJ))|0)==0;if(BH){Cq=20}else{Cq=15}$bb26$$bb21$18:do{if(Cq==15){var BG=Dx;var BF=Cc;var BE=(((BG))|0)>=(((BF))|0);if(BE){Cq=20;break $bb26$$bb21$18}var BD=Bd;var BC=(((BD))|0)%10;var BA=(((BC))|0)!=0;if(BA){Cq=18;break $bb30$7}var Bz=Dx;var Bp=(((Bz)*10)&4294967295);var Bn=Cc;var Bl=(((Bp))|0)<(((Bn))|0);if(Bl){Cq=18;break $bb30$7}var Bk=Dx;BL=Bk;var Bj=Cc;var Bi=BL;var Bh=(((Bj)-(Bi))&4294967295);Cc=Bh;Cq=23;break $bb26$$bb21$18}}while(0);if(Cq==20){var Bg=Cc;var Bf=BL;var Be=(((Bg))|0)>=(((Bf))|0);if(Be){Cq=21;break $bb30$7}var AZ=Bd;var AX=Dx;var AV=(((AX)+(AZ))&4294967295);Bd=AV}var AU=Cc;Dx=AU;var AT=AM;var AS=(((AT)+1)&4294967295);AM=AS;Cq=24;continue $bb30$7}if(Cq==25){var e=D8;var EM=((e)&4294967295);var EL=la[((EM)>>0)];var EK=iB((EL),8,0);var EJ=(((EK)-48)&4294967295);var EI=(((EJ))>>>0)<=9;if(EI){Cq=26}else{Cq=27}if(Cq==26){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==27){var Ev=Bd;var Eu=Dx;var Et=(((Eu)+(Ev))&4294967295);Bd=Et;var Es=Db;var Eq=((Es)&4294967295);var Ep=((Eq+200)&4294967295);var Eo=uA[((Ep)>>2)];var Em=Bd;var El=(((Eo))|0)>(((Em))|0);if(El){Cq=28}else{Cq=29}if(Cq==28){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==29){var Ek=Db;var Ee=((Ek)&4294967295);var Ed=((Ee+196)&4294967295);var Ec=uA[((Ed)>>2)];var Ea=Bd;var D9=(((Ec))|0)<(((Ea))|0);if(D9){Cq=30}else{Cq=31}if(Cq==30){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==31){var D7=Db;var D5=((Eg)&4294967295);EE=D7;AN=((lb)&4294967295);C4=D5;var D4=((Ef+4)&4294967295);uA[((D4)>>2)]=0;var D3=((Ef+4)&4294967295);var D2=uA[((D3)>>2)];var DY=((Ef)&4294967295);uA[((DY)>>2)]=D2;var DX=AN;uA[((Ct)>>2)]=DX;var DW=EE;var DV=C4;var DU=((Ef)&4294967295);var DT=tN(DW,Ct,DV,DU,0,0);EG=DT;var DS=EG;CM=DS;var DR=Eb;var DQ=((DR)&4294967295);D1=DQ;var DP=Db;var DM=((DP)&4294967295);var DL=((DM+184)&4294967295);var DK=uA[((DL)>>2)];var DJ=(DK)&67108864;var DI=(((DJ))|0)==0;if(DI){Cq=32}else{Cq=33}if(Cq==32){var DG=Eb;var DF=((Eg)&4294967295);var DE=oJ(DG,DF);var DD=((Eg)&4294967295);var DC=wg(DD);var Dz=Eb;var Dy=((Dz+DC)&4294967295);D1=Dy}var Dw=((CJ)&4294967295);var Dv=Bd;var Dt=qs(Dw,((tf)&4294967295),Dv);var Ds=D8;var Dr=((Ds)&4294967295);var Dq=la[((Dr)>>0)];var Dn=iB((Dq),8,0)==46;if(Dn){Cq=34}else{Cq=35}if(Cq==34){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==35){var Dl=Db;var Da=A1;var C9=D8;var C8=By;var C7=sC(Dl,Da,C9,C8,1);var C6=(((C7))|0)!=0;var C5=oD((C6),1,0);Ba=C5;var C3=Ba;var Dp=iB((C3),8,0)!=0;if(Dp){Cq=36}else{Cq=37}if(Cq==36){var C2=By;var C0=((C2)&4294967295);var CY=By;var CN=((CY)&4294967295);var CL=((CN)&4294967295);var CK=uA[((CL)>>2)];var CI=(CK)|32768;var CH=((C0)&4294967295);uA[((CH)>>2)]=CI}var CG=Db;var CF=((CG)&4294967295);var CE=((CF+184)&4294967295);var CC=uA[((CE)>>2)];var CA=(CC)&134217728;var Cp=(((CA))|0)!=0;if(Cp){Cq=38}else{Cq=45}$bb46$$bb58$47:do{if(Cq==38){var Co=Db;var Cn=((Co+280)&4294967295);var Cm=uA[((Cn)>>2)];var Cl=(((Cm))|0)==26741;var Ck=By;var Cj=((Ck)&4294967295);if(Cl){Cq=39}else{Cq=44}if(Cq==39){var Ci=((Cj)&4294967295);var Cg=uA[((Ci)>>2)];var Ce=(Cg)&32768;var BU=(((Ce))|0)==0;if(!(BU)){Cq=45;break $bb46$$bb58$47}var BT=By;var BS=((BT)&4294967295);var BR=((BS)&4294967295);var BQ=uA[((BR)>>2)];var BP=(BQ)&16384;var BO=(((BP))|0)==0;if(BO){Cq=43}else{Cq=41}$bb55$$bb49$52:do{if(Cq==41){var BN=D8;var BK=Bd;var BI=hl(BN,0,BK);var Bx=(((BI))|0)==0;if(Bx){Cq=43;break $bb55$$bb49$52}Du=1;A8=1;var Bw=DB;var Bv=(Bw)|1;DB=Bv;Cq=45;break $bb46$$bb58$47}}while(0);Du=0;A8=0;EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==44){var Bu=By;var Bt=((Bu)&4294967295);var Bs=((Bt)&4294967295);var Br=uA[((Bs)>>2)];var Bq=(Br)|32768;var Bo=((Cj)&4294967295);uA[((Bo)>>2)]=Bq}}}}while(0);var Bm=Db;var A9=((Bm+8320)&4294967295);uA[((A9)>>2)]=0;var A7=Db;var A6=((CJ+2)&4294967295);var A5=D1;var A4=((Er)&4294967295);var A3=By;var A2=DB;var A0=ac(A7,A6,A5,A4,A3,A2);var AY=Db;var AW=((AY)&4294967295);var Cd=((AW+184)&4294967295);var Ca=uA[((Cd)>>2)];var B8=(Ca)&67108864;var B6=(((B8))|0)!=0;if(B6){Cq=46}else{Cq=47}if(Cq==46){var B4=Eb;var B2=((Eg)&4294967295);var B0=sU(B4,B2)}EF=1;Cq=48;break $bb4$$bb5$4}}}}}}}}}else{if(Cq==6){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==9){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==13){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==21){EF=0;Cq=48;break $bb4$$bb5$4}else{if(Cq==18){EF=0;Cq=48;break $bb4$$bb5$4}}}}}}}}while(0);if(Cq==3){EF=0}var BY=EF;AH=BY;var Ej=AH;vp=BB;return Ej;return null}function jz(Bd,BL,AZ){var A1=vp;vp+=28;n1(A1,0,28);var Br;var Bo;var BM;var BO;var Bp;var BX;var Bq=A1;var BY;var BK;var A9;var AI;var BW;var A3=A1+4;var Bs=A1+12;var Bt;var Bu;var BJ;var A7;var BV;var Ba;var Bb;var Bv;var AT=A1+16;Bt=Bd;Bu=BL;BJ=AZ;var BU=((AT)&4294967295);la[((BU)>>0)]=0;var BT=((AT+1)&4294967295);la[((BT)>>0)]=95;var BS=Bu;var BR=((AT+2)&4294967295);var BQ=zD(BS,BR);Bv=BQ;var BP=Bv;var BN=(((BP)+2)&4294967295);var BH=((AT+BN)&4294967295);la[((BH)>>0)]=32;var BG=Bv;var BF=(((BG)+3)&4294967295);var BE=((AT+BF)&4294967295);la[((BE)>>0)]=0;var BD=Bt;var BC=((AT+1)&4294967295);var BB=BJ;BY=BD;BK=BC;A9=BB;var BA=((A3+4)&4294967295);uA[((BA)>>2)]=0;var By=((A3+4)&4294967295);var Bx=uA[((By)>>2)];var Bn=((A3)&4294967295);uA[((Bn)>>2)]=Bx;var Bm=BK;uA[((Bs)>>2)]=Bm;var Bl=BY;var Bk=A9;var Bj=((A3)&4294967295);var Bi=tN(Bl,Bs,Bk,Bj,0,0);BW=Bi;var Bh=BW;AI=Bh;var A2=AI;var Bg=(((A2))|0)==0;var Bf=oD((Bg),1,0);Bb=Bf;var Be=Bb;var Bc=iB((Be),8,0)!=0;if(Bc){Br=1}else{Br=3}$bb$$bb3$2:do{if(Br==1){var A8=((AT+1)&4294967295);la[((A8)>>0)]=32;var A6=Bt;var A5=((AT+2)&4294967295);var A4=BJ;Bo=A6;BM=A5;BO=A4;var A0=((A3+4)&4294967295);uA[((A0)>>2)]=0;var AY=((A3+4)&4294967295);var AX=uA[((AY)>>2)];var AW=((A3)&4294967295);uA[((AW)>>2)]=AX;var AV=BM;uA[((Bq)>>2)]=AV;var AU=Bo;var AS=BO;var AR=((A3)&4294967295);var AQ=tN(AU,Bq,AS,AR,0,0);BX=AQ;var AP=BX;Bp=AP;var BI=Bp;var AO=(((BI))|0)==0;var AN=oD((AO),1,0);Ba=AN;var AM=Ba;var Bz=iB((AM),8,0)!=0;if(!(Bz)){Br=3;break $bb$$bb3$2}var AL=Bt;var AK=((AT+2)&4294967295);var AJ=BJ;var AH=uI(AL,AK,AJ,20,0,0,0)}}while(0);var i=BJ;var e=((i)&4294967295);var B1=la[((e)>>0)];var B0=iB((B1),8,0);BV=B0;var BZ=BV;A7=BZ;var Bw=A7;vp=A1;return Bw;return null}function hr(Ec,A9,Bb,C0,AM){var Br=vp;vp+=80;n1(Br,0,80);var BQ;var DS;var DL;var Dc;var C6;var Ea;var D4=Br;var Ef;var Eb;var Dl;var Df;var D9;var AL=Br+4;var AT;var AO;var Dy;var Dp;var D7;var AP=Br+8;var A8;var AR;var DH;var DB;var D6;var A7=Br+12;var Ba;var BE;var BC;var DP;var D5;var Dx=Br+16;var D8;var AN;var Cx;var DV;var D3;var DG=Br+20;var BT=Br+28;var DI;var Cc;var D2;var AS;var CE;var BP;var Dr;var BA;var AV;var Ce;var Cf;var Cg;var Ch;var Ci;var BO;var Bo=Br+32;var CZ=Br+40;var A4;CE=Ec;BP=A9;Dr=Bb;BA=C0;AV=AM;var D1=BA;var D0=((D1)&4294967295);la[((D0)>>0)]=0;var DZ=BP;var CQ=zD(DZ,((jW+2)&4294967295));BO=CQ;var CO=BO;var CM=(((CO)+2)&4294967295);var CL=((jW+CM)&4294967295);la[((CL)>>0)]=32;var CK=Dr;var CJ=(((CK))|0)==-1;if(CJ){BQ=1}else{BQ=7}$bb$$bb8$2:do{if(BQ==1){var CI=CE;var CH=BA;DS=CI;DL=((jW+2)&4294967295);Dc=CH;var CG=((DG+4)&4294967295);uA[((CG)>>2)]=0;var CF=((DG+4)&4294967295);var Cu=uA[((CF)>>2)];var Cs=((DG)&4294967295);uA[((Cs)>>2)]=Cu;var Cq=DL;uA[((D4)>>2)]=Cq;var Cp=DS;var Co=Dc;var Cn=((DG)&4294967295);var Cm=tN(Cp,D4,Co,Cn,0,0);Ea=Cm;var Cl=Ea;C6=Cl;var A0=C6;var Ck=(((A0))|0)!=0;var Cj=oD((Ck),1,0);Ci=Cj;var B4=Ci;var BB=iB((B4),8,0)!=0;if(BB){BQ=22;break $bb$$bb8$2}la[((((jW+1)&4294967295))>>0)]=95;var B2=CE;var B0=((CZ)&4294967295);Ef=B2;Eb=((jW+1)&4294967295);Dl=B0;var BZ=((DG+4)&4294967295);uA[((BZ)>>2)]=0;var BY=((DG+4)&4294967295);var BW=uA[((BY)>>2)];var BV=((DG)&4294967295);uA[((BV)>>2)]=BW;var BU=Eb;uA[((AL)>>2)]=BU;var BS=Ef;var BR=Dl;var BN=((DG)&4294967295);var BM=tN(BS,AL,BR,BN,0,0);D9=BM;var BL=D9;Df=BL;var Be=Df;var BK=(((Be))|0)!=0;var BJ=oD((BK),1,0);Ch=BJ;var BI=Ch;var DK=iB((BI),8,0)!=0;if(DK){BQ=22;break $bb$$bb8$2}var BH=CE;var BG=((BH+280)&4294967295);var BF=uA[((BG)>>2)];var BD=(((BF))|0)==25966;if(BD){BQ=22;break $bb$$bb8$2}var Bz=wG(((iM)&4294967295));var By=uA[((vD)>>2)];var Bx=((CZ)&4294967295);AT=By;AO=((jW+2)&4294967295);Dy=Bx;var Bw=((DG+4)&4294967295);uA[((Bw)>>2)]=0;var Bv=((DG+4)&4294967295);var Bu=uA[((Bv)>>2)];var Bt=((DG)&4294967295);uA[((Bt)>>2)]=Bu;var Bs=AO;uA[((AP)>>2)]=Bs;var Bq=AT;var Bp=Dy;var Bn=((DG)&4294967295);var Bl=tN(Bq,AP,Bp,Bn,0,0);D7=Bl;var Bk=D7;Dp=Bk;var Bm=Dp;var Bj=(((Bm))|0)!=0;var Bi=oD((Bj),1,0);Cg=Bi;var Bh=Cg;var DJ=iB((Bh),8,0)!=0;if(DJ){BQ=5}else{BQ=6}if(BQ==5){var Bg=BA;la[((Bg)>>0)]=21;var AQ=((Bg+1)&4294967295);la[((AQ)>>0)]=0}var Bf=uA[((k5)>>2)];var Bd=((Bf+40)&4294967295);var Bc=uA[((Bd)>>2)];AS=Bc;uA[((rW)>>2)]=0;var A6=AS;m1(A6,0);var A5=uA[((rW)>>2)];var A3=(((A5)+1)&4294967295);uA[((rW)>>2)]=A3;var A2=AS;uA[((mp)>>2)]=A2}else{if(BQ==7){var A1=BP;var AZ=(((A1))>>>0)<=32;if(AZ){BQ=11}else{BQ=8}$bb10$$bb9$11:do{if(BQ==8){var AY=BP;DI=AY;var AX=DI;var AW=(((AX))>>>0)<=255;if(AW){BQ=10}else{BQ=9}if(BQ==10){var AU=DI;var AK=xE(AU);D2=AK;Cc=AK;var AJ=(((AK))|0)!=0;if(AJ){BQ=11;break $bb10$$bb9$11}}else{if(BQ==9){D2=0;Cc=0}}var DQ=Dr;var DO=(((DQ))|0)!=32;if(DO){BQ=13}else{BQ=14}if(BQ==13){Dr=31}var DN=BO;var DM=(((DN)+3)&4294967295);var DF=Dr;var DE=(((DF))&255);var DD=((jW+DM)&4294967295);la[((DD)>>0)]=DE;la[((((jW+1)&4294967295))>>0)]=95;var DC=((Bo+4)&4294967295);uA[((DC)>>2)]=0;A4=((jW+1)&4294967295);var DA=CE;var Dz=((CZ)&4294967295);Ba=DA;BE=((jW+1)&4294967295);BC=Dz;var Dw=((DG+4)&4294967295);uA[((Dw)>>2)]=0;var Dv=((DG+4)&4294967295);var Du=uA[((Dv)>>2)];var Ds=((DG)&4294967295);uA[((Ds)>>2)]=Du;var Do=BE;uA[((Dx)>>2)]=Do;var Dn=Ba;var Dm=BC;var Dk=((DG)&4294967295);var Dj=tN(Dn,Dx,Dm,Dk,0,0);D5=Dj;var Di=D5;DP=Di;var BX=DP;var Dh=(((BX))|0)==0;var Dg=oD((Dh),1,0);Cf=Dg;var Dt=iB((Dg),8,0)!=0;if(Dt){BQ=15}else{BQ=17}$bb15$$bb18$20:do{if(BQ==15){la[((((jW+1)&4294967295))>>0)]=32;var De=CE;var Dd=((CZ)&4294967295);D8=De;AN=((jW+2)&4294967295);Cx=Dd;var Db=((DG+4)&4294967295);uA[((Db)>>2)]=0;var Da=((DG+4)&4294967295);var C9=uA[((Da)>>2)];var C8=((DG)&4294967295);uA[((C8)>>2)]=C9;var C7=AN;uA[((BT)>>2)]=C7;var C5=D8;var C4=Cx;var C3=((DG)&4294967295);var C2=tN(C5,BT,C4,C3,0,0);D3=C2;var C1=D3;DV=C1;var AI=DV;var CY=(((AI))|0)==0;var CX=oD((CY),1,0);Ce=CX;var CW=Ce;var Dq=iB((CW),8,0)!=0;if(!(Dq)){BQ=17;break $bb15$$bb18$20}var CV=CE;var CU=((CZ)&4294967295);var CT=uI(CV,((jW+2)&4294967295),CU,40,0,268435456,0)}}while(0);var CS=((CZ)&4294967295);var CR=la[((CS)>>0)];var CP=iB((CR),8,0)==0;if(CP){BQ=18}else{BQ=19}if(BQ==18){var CN=CE;var CD=BP;var CC=((CZ)&4294967295);lZ(CN,CD,CC)}var CB=BA;var CA=((CZ)&4294967295);var Cz=oJ(CB,CA);var Cy=BA;var Cw=((Cy)&4294967295);var Cv=la[((Cw)>>0)];var Ct=iB((Cv),8,0)==0;if(Ct){BQ=22;break $bb$$bb8$2}var Cr=BA;var Cd=((Cr)&4294967295);var Cb=la[((Cd)>>0)];var Ca=iB((Cb),8,0)==21;if(Ca){BQ=22;break $bb$$bb8$2}var B9=((Bo)&4294967295);uA[((B9)>>2)]=0;var B8=((Bo+4)&4294967295);uA[((B8)>>2)]=0;var B7=AV;var B6=(B7)&1;var B5=CE;var B3=BA;var B1=((Bo)&4294967295);m8(B5,B3,B1,-1,B6);BQ=22;break $bb$$bb8$2}}while(0);var AH=BP;var i=qs(((jW+1)&4294967295),((x7)&4294967295),AH);var e=CE;var Ei=BA;A8=e;AR=((jW+1)&4294967295);DH=Ei;var Eh=((DG+4)&4294967295);uA[((Eh)>>2)]=0;var Eg=((DG+4)&4294967295);var Ee=uA[((Eg)>>2)];var Ed=((DG)&4294967295);uA[((Ed)>>2)]=Ee;var DY=AR;uA[((A7)>>2)]=DY;var DX=A8;var DW=DH;var DU=((DG)&4294967295);var DT=tN(DX,A7,DW,DU,0,0);D6=DT;var DR=D6;DB=DR}}}while(0);vp=Br;return;return}function sG(EZ,DL,Dn,AM){var BE=vp;vp+=172;n1(BE,0,172);var CA;var Du=null;var EX;var Ev;var D0;var DU;var EW;var ER=BE;var AQ;var D7;var EV;var AT;var AO;var Ej;var Ee;var ET;var AP=BE+4;var Bf;var Eo;var ES;var AS;var Dk;var Ey;var EQ;var EU;var AN;var Dd;var EC;var EP;var Es=BE+8;var CD=BE+16;var Dm;var EE;var EY;var EK;var EO;var D4;var Et;var DR;var CV;var EN;var Dl;var El;var B4;var AV;var AH;var EM;var EI;var Bg=BE+20;var Cx;var D1;var CY;var C3;var Dw=BE+24;var DV=BE+44;var DM=BE+104;var Eu=BE+164;Dl=EZ;El=DL;B4=Dn;AV=AM;var EL=((DV)&4294967295);la[((EL)>>0)]=0;var DB=((Dw)&4294967295);la[((DB)>>0)]=0;var Dz=El;Et=Bg;DR=Dz;var Dx=Et;var Dv=DR;var Dt=F(Dx,Dv,0);EN=Dt;var Ds=EN;CV=Ds;var AJ=CV;EI=AJ;var Dr=uA[((Bg)>>2)];var Dq=(Dr)&1048320;var Dp=(((Dq))|0)==57344;if(Dp){CA=1}else{CA=2}if(CA==1){var Do=uA[((Bg)>>2)];var Da=(Do)&255;uA[((Bg)>>2)]=Da}var C8=AV;var C6=(C8)&2;var C5=(((C6))|0)!=0;if(C5){CA=3}else{CA=10}$bb2$$bb4$5:do{if(CA==3){var C4=uA[((Bg)>>2)];Dm=C4;var C2=Dm;var C1=(((C2))>>>0)<=255;var C0=Dm;if(C1){CA=8}else{CA=4}$iswupper_exit$$bb1_i$7:do{if(CA==8){var CC=tM(C0);EO=CC;EE=CC;var CB=(((CC))|0)!=0;if(!(CB)){CA=10;break $bb2$$bb4$5}}else{if(CA==4){var CZ=(((C0))>>>0)>563;if(CZ){CA=6}else{CA=5}$iswupper_exit_thread36$$bb2_i$10:do{if(CA==5){var CX=Dm;var CN=(((CX)-256)&4294967295);var CL=((xF+CN)&4294967295);var CJ=ll[((CL)>>0)];var CI=oD((CJ),8,0);D4=CI;var CH=D4;var CG=(((CH))|0)==0;var CF=D4;var CE=(((CF))|0)==255;var AR=(CG)|(CE);if(AR){CA=6;break $iswupper_exit_thread36$$bb2_i$10}EY=0;EK=0;EO=1;EE=1;CA=9;break $iswupper_exit$$bb1_i$7}}while(0);EY=1;EK=1;EO=0;EE=0;CA=10;break $bb2$$bb4$5}}}while(0);var Cq=Dl;var Co=((Dw)&4294967295);EU=Cq;AN=((fM)&4294967295);Dd=Co;var Cl=((Es+4)&4294967295);uA[((Cl)>>2)]=0;var Cj=((Es+4)&4294967295);var Ch=uA[((Cj)>>2)];var Cf=((Es)&4294967295);uA[((Cf)>>2)]=Ch;var Cd=AN;uA[((CD)>>2)]=Cd;var Cb=EU;var B9=Dd;var B7=((Es)&4294967295);var BV=tN(Cb,CD,B9,B7,0,0);EP=BV;var BT=EP;EC=BT}}while(0);var BQ=uA[((Bg)>>2)];Dk=BQ;var BO=(((BQ))|0)==73;if(BO){CA=11}else{CA=13}$bb_i7$$_Z9towlower2j_exit$16:do{if(CA==11){var BM=uA[((xy)>>2)];var BK=((BM+280)&4294967295);var BI=uA[((BK)>>2)];var BG=(((BI))|0)==29810;if(!(BG)){CA=13;break $bb_i7$$_Z9towlower2j_exit$16}Dk=305}}while(0);var BD=Dk;var BC=q3(BD);EQ=BC;var Bs=EQ;Ey=Bs;var E1=Ey;uA[((Bg)>>2)]=E1;var Bq=AV;var Bo=(Bq)&1;var Bn=El;var Bm=EI;var Bl=((Bn+Bm)&4294967295);var Bk=la[((Bl)>>0)];var Bj=iB((Bk),8,0);var Bi=uA[((Bg)>>2)];var Bh=Dl;var A6=((DV)&4294967295);hr(Bh,Bi,Bj,A6,Bo);var A4=((DV)&4294967295);var A2=la[((A4)>>0)];var A1=iB((A2),8,0)==21;if(A1){CA=14}else{CA=15}$bb5$$bb6$20:do{if(CA==14){var A0=B4;var AZ=((DV)&4294967295);var AY=oJ(A0,AZ);EM=0}else{if(CA==15){var AX=((DV)&4294967295);var AW=la[((AX)>>0)];var AU=iB((AW),8,0)==0;if(AU){CA=16}else{CA=19}$bb7$$bb10$23:do{if(CA==16){var AL=Dl;var AK=((AL+280)&4294967295);var AI=uA[((AK)>>2)];var i=(((AI))|0)!=25966;if(!(i)){CA=19;break $bb7$$bb10$23}var e=wG(((iM)&4294967295));var E5=uA[((us)>>2)];D1=E5;uA[((us)>>2)]=0;var E4=AV;var E3=(E4)&1;var E2=El;var E0=EI;var EJ=((E2+E0)&4294967295);var EH=la[((EJ)>>0)];var EG=iB((EH),8,0);var EF=uA[((Bg)>>2)];var ED=uA[((vD)>>2)];var EB=((DV)&4294967295);hr(ED,EF,EG,EB,E3);var EA=uA[((k5)>>2)];var Ez=((EA+40)&4294967295);var Ex=uA[((Ez)>>2)];AS=Ex;uA[((rW)>>2)]=0;var Ew=AS;m1(Ew,0);var Er=uA[((rW)>>2)];var Eq=(((Er)+1)&4294967295);uA[((rW)>>2)]=Eq;var Ep=AS;uA[((mp)>>2)]=Ep;var En=D1;uA[((us)>>2)]=En;var Em=((DV)&4294967295);var Ek=la[((Em)>>0)];var Ei=iB((Ek),8,0)!=0;if(!(Ei)){CA=19;break $bb7$$bb10$23}var Eh=B4;var Eg=qs(Eh,((nM)&4294967295),21);EM=0;CA=43;break $bb5$$bb6$20}}while(0);var Ef=((DV)&4294967295);var Ed=la[((Ef)>>0)];var Ec=iB((Ed),8,0)==0;if(Ec){CA=20}else{CA=37}$bb11$$bb20$28:do{if(CA==20){var Eb=uA[((Bg)>>2)];Bf=Eb;var Ea=Bf;var D9=(((Ea))>>>0)<=255;var D8=Bf;if(D9){CA=21}else{CA=22}$bb_i12$$bb1_i14$30:do{if(CA==21){var D6=z6(D8);ES=D6;Du=21;CA=27;break $bb_i12$$bb1_i14$30}else{if(CA==22){var D5=(((D8))>>>0)>12352;var D3=Bf;var D2=(((D3))>>>0)<=42752;var DK=(D5)&(D2);if(DK){CA=23}else{CA=24}if(CA==23){ES=1;Eo=1;CA=28;break $bb_i12$$bb1_i14$30}else{if(CA==24){var DZ=Bf;var DY=(((DZ))>>>0)>563;if(DY){CA=25}else{CA=26}if(CA==25){ES=0;Eo=0;CA=29;break $bb_i12$$bb1_i14$30}else{if(CA==26){var DX=Bf;var DW=(((DX)-256)&4294967295);var DT=((xF+DW)&4294967295);var DS=ll[((DT)>>0)];var DQ=oD((DS),8,0);ES=DQ;Du=26;CA=27;break $bb_i12$$bb1_i14$30}}}}}}}while(0);$iswalpha_exit$$bb12$$bb13$39:do{if(CA==27){var DP=Du==21?D6:(DQ);Eo=DP;var DO=(((DP))|0)!=0;if(DO){CA=28;break $iswalpha_exit$$bb12$$bb13$39}else{CA=29;break $iswalpha_exit$$bb12$$bb13$39}}}while(0);if(CA==28){var DN=Dl;var DJ=((DV)&4294967295);AT=DN;AO=((vn)&4294967295);Ej=DJ;var DI=((Es+4)&4294967295);uA[((DI)>>2)]=0;var DH=((Es+4)&4294967295);var DG=uA[((DH)>>2)];var DF=((Es)&4294967295);uA[((DF)>>2)]=DG;var DE=AO;uA[((AP)>>2)]=DE;var DD=AT;var DC=Ej;var DA=((Es)&4294967295);var Dy=tN(DD,AP,DC,DA,0,0);ET=Dy;var Dj=ET;Ee=Dj}var Di=((DV)&4294967295);var Dh=la[((Di)>>0)];var Dg=iB((Dh),8,0)==0;if(Dg){CA=30}else{CA=34}$bb14$$bb16$44:do{if(CA==30){var Df=uA[((Bg)>>2)];AQ=Df;var De=AQ;var Dc=(((De))>>>0)<=255;if(Dc){CA=32}else{CA=31}if(CA==32){var Db=AQ;var C9=xE(Db);EV=C9;D7=C9;var C7=(((C9))|0)==0;if(!(C7)){CA=34;break $bb14$$bb16$44}}else{if(CA==31){EV=0;D7=0}}var CW=Dl;var CU=((DV)&4294967295);EX=CW;Ev=((bT)&4294967295);D0=CU;var CT=((Es+4)&4294967295);uA[((CT)>>2)]=0;var CS=((Es+4)&4294967295);var CR=uA[((CS)>>2)];var CQ=((Es)&4294967295);uA[((CQ)>>2)]=CR;var CP=Ev;uA[((ER)>>2)]=CP;var CO=EX;var CM=D0;var CK=((Es)&4294967295);var Cz=tN(CO,ER,CM,CK,0,0);EW=Cz;var Cy=EW;DU=Cy}}while(0);var Cw=((DV)&4294967295);var Cv=la[((Cw)>>0)];var Cu=iB((Cv),8,0)!=0;if(!(Cu)){CA=37;break $bb11$$bb20$28}var Ct=uA[((Bg)>>2)];var Cs=((Eu)&4294967295);var Cr=qs(Cs,((k0)&4294967295),Ct);var Cp=((DV)&4294967295);C3=Cp;var Cn=((Eu)&4294967295);CY=Cn;var B3=CY;var B2=la[((B3)>>0)];var B1=iB((B2),8,0)!=0;if(!(B1)){CA=37;break $bb11$$bb20$28}while(1){var B0=C3;var BZ=wg(B0);var BY=C3;var BX=((BY+BZ)&4294967295);C3=BX;var BW=C3;la[((BW)>>0)]=23;var BU=C3;var BS=((BU+1)&4294967295);C3=BS;var BA=CY;var Bz=la[((BA)>>0)];var By=iB((Bz),8,0);var Bx=Dl;var Bw=C3;hr(Bx,By,0,Bw,1);var Bv=CY;var Bu=((Bv+1)&4294967295);CY=Bu;var Bt=CY;var Br=la[((Bt)>>0)];var Bp=iB((Br),8,0)!=0;if(Bp){CA=36;continue}else{CA=37;break $bb11$$bb20$28}}}}while(0);var Be=B4;var Bd=wg(Be);Cx=Bd;var Bc=Dl;var Bb=((Bc)&4294967295);var Ba=((Bb+220)&4294967295);var A9=uA[((Ba)>>2)];var A8=(A9)&2;var A7=(((A8))|0)!=0;var A5=((DM)&4294967295);if(A7){CA=38}else{CA=39}if(CA==38){var A3=((DV)&4294967295);var Cm=((Dw)&4294967295);var Ck=qs(A5,((s5)&4294967295),255,A3,Cm)}else{if(CA==39){var Ci=((Dw)&4294967295);var Cg=((DV)&4294967295);var Ce=qs(A5,((s5)&4294967295),255,Ci,Cg)}}var Cc=((DM)&4294967295);var Ca=wg(Cc);var B8=Cx;var B6=(((B8)+(Ca))&4294967295);var B5=(((B6))>>>0)<=159;if(B5){CA=41}else{CA=42}if(CA==41){var BR=B4;var BP=Cx;var BN=((BR+BP)&4294967295);var BL=((DM)&4294967295);var BJ=oJ(BN,BL)}var BH=EI;EM=BH}}}while(0);var BF=EM;AH=BF;var BB=AH;vp=BE;return BB;return null}function oU(){var i;var e=eY();return;return}function ri(AZ,AR){var AW;var AU;var AX;var AO;var Bm;var A8;var Bn;var i;var AY;var AM;var Bl;var A1;var A0;Bn=AZ;i=AR;var Bk=i;var Bj=(((Bk))|0)==0;if(Bj){AW=1}else{AW=2}if(AW==1){var Bi=uA[((bW)>>2)];var Bh=Bn;var Bg=(((Bh)*(Bi))&4294967295);var Be=(((((Bg))|0)/1000)|0);uA[((gM)>>2)]=Be}var Bc=uA[((kU)>>2)];var Ba=(Bc);var AT=uA[((xH)>>2)];var AS=(AT);var AQ=(((Ba)-(AS))&4294967295);var AP=(((((AQ))|0)/2)|0);A1=AP;var AN=uA[((gM)>>2)];var AL=A1;var AK=(((AL))|0)>(((AN))|0);if(AK){AW=3}else{AW=4}if(AW==3){var AJ=uA[((gM)>>2)];A1=AJ}var AI=uA[((xH)>>2)];var AH=AI;var e=AH;var Bx=A1;AU=e;AX=Bx;var Bw=AX;var Bv=(((Bw)*2)&4294967295);var Bu=AU;var Bt=gt(Bu,Bv);A8=Bt;var Bs=(((Bt))|0)>0;if(Bs){AW=6}else{AW=5}$read_MBR_exit$$read_MBR_exit_thread$8:do{if(AW==6){var Br=A8;var Bq=(((((Br))|0)/2)|0);A8=Bq;Bm=Bq;AO=Bq;A0=Bq;var Bp=(((Bq))|0)<=0;if(Bp){AW=7;break $read_MBR_exit$$read_MBR_exit_thread$8}var Bf=uA[((xH)>>2)];var Bd=A0;var Bb=(((Bd)*2)&4294967295);var A9=((Bf+Bb)&4294967295);uA[((xH)>>2)]=A9;var A7=uA[((gM)>>2)];var A6=A0;var A5=(((A7)-(A6))&4294967295);uA[((gM)>>2)]=A5;var A4=uA[((gM)>>2)];var A3=(((A4))|0)!=0;if(A3){AW=9}else{AW=10}if(AW==9){AM=1}else{if(AW==10){AM=0}}var A2=AM;Bl=A2;AW=12;break $read_MBR_exit$$read_MBR_exit_thread$8}else{if(AW==5){Bm=Bt;AO=Bt;A0=Bt;AW=7;break $read_MBR_exit$$read_MBR_exit_thread$8}}}while(0);if(AW==7){Bl=0}var AV=Bl;AY=AV;var Bo=AY;return Bo;return null}function xr(A9,CS,CR,BI,A5){var Bh=vp;vp+=76;n1(Bh,0,76);var BL;var CC=null;var DR;var A1;var BS;var CT;var C6;var AH;var DQ;var Dj;var Dv;var AR=Bh;var BK=Bh+4;var Cb;var B9;var C5;var Be;var AZ;var Cv;var AW;var Ch;var Dk;var Db;var Di=Bh+8;var BT;var Bb=Bh+24;DR=A9;A1=CS;BS=CR;CT=BI;C6=A5;AZ=-1;Cv=999;AW=0;Ch=0;Dk=80;la[((((tX)&4294967295))>>0)]=0;var DP=DR;var DO=((lx+DP*4)&4294967295);var DN=uA[((DO)>>2)];Be=DN;var DM=uA[((k5)>>2)];var DL=A1;var DK=BS;pO(DM,DL,DK,AR,BK);var DJ=CT;var DI=(((DJ)*128)&4294967295);var DH=(((((DI))|0)/100)|0);BT=DH;var CI=BT;var CG=(((CI))|0)<0;if(CG){BL=1}else{BL=2}if(BL==1){var CE=BT;var CD=((0-(CE))&4294967295);BT=CD}Dj=0;$bb2$5:while(1){var CB=Be;var CA=Dj;var Cz=((CB+CA)&4294967295);var Cy=ll[((Cz)>>0)];var Cx=oD((Cy),8,0);var Cw=AZ;var Cm=(((Cx))|0)>(((Cw))|0);if(Cm){BL=4}else{BL=5}if(BL==4){var Ck=Be;var Ci=Dj;var Cg=((Ck+Ci)&4294967295);var Cf=ll[((Cg)>>0)];var Ce=oD((Cf),8,0);AZ=Ce;var Cd=Dj;AW=Cd}var Cc=Be;var Ca=Dj;var B8=((Cc+Ca)&4294967295);var BZ=ll[((B8)>>0)];var BX=oD((BZ),8,0);var BV=Cv;var BU=(((BX))|0)<(((BV))|0);if(BU){BL=6}else{BL=7}if(BL==6){var BR=Be;var BQ=Dj;var BP=((BR+BQ)&4294967295);var BO=ll[((BP)>>0)];var BN=oD((BO),8,0);Cv=BN;var BM=Dj;Ch=BM}var Bz=Dj;var By=(((Bz)+1)&4294967295);Dj=By;var Bx=(((By))|0)<=127;if(Bx){BL=3;continue $bb2$5}else{BL=8;break $bb2$5}}var Bw=((Di+8)&4294967295);uA[((Bw)>>2)]=64;var Bv=AW;var Bu=(((Bv))|0)>0;var Bt=AW;var Bs=(((Bt))|0)<=126;var C4=(Bu)&(Bs);if(C4){BL=9}else{BL=10}if(BL==9){var Br=((Di+8)&4294967295);var Bq=AW;uA[((Br)>>2)]=Bq}var Bp=Ch;var Bo=(((Bp))|0)>0;var Bn=Ch;var Bm=(((Bn))|0)<=126;var Dz=(Bo)&(Bm);if(Dz){BL=11}else{BL=12}if(BL==11){var Bl=((Di+8)&4294967295);var Bk=Ch;uA[((Bl)>>2)]=Bk}var Bj=((Di+8)&4294967295);var Bi=uA[((Bj)>>2)];var Bg=(((((Bi))|0)/2)|0);var Bf=((Di+4)&4294967295);uA[((Bf)>>2)]=Bg;var Bd=((Di+8)&4294967295);var Bc=uA[((Bd)>>2)];var Ba=((Di+8)&4294967295);var A8=uA[((Ba)>>2)];var A7=((127-(A8))&4294967295);var A6=(((((A7))|0)/2)|0);var A4=(((A6)+(Bc))&4294967295);var A3=((Di+12)&4294967295);uA[((A3)>>2)]=A4;var A2=Be;var A0=((A2)&4294967295);var AV=ll[((A0)>>0)];var AU=oD((AV),8,0);var AT=uA[((BK)>>2)];var AS=(((AU)*(AT))&4294967295);var AQ=(((AS))|0)>>8;var AP=uA[((AR)>>2)];var AO=(((AQ)+(AP))&4294967295);Cb=AO;var AN=Be;var AM=((AN+127)&4294967295);var AL=ll[((AM)>>0)];var AK=oD((AL),8,0);var AJ=uA[((BK)>>2)];var AI=(((AK)*(AJ))&4294967295);var i=(((AI))|0)>>8;var e=uA[((AR)>>2)];var DW=(((i)+(e))&4294967295);C5=DW;var DV=CT;var DU=(((DV))|0)>=0;if(DU){BL=13}else{BL=14}if(BL==13){var DT=Cb;var DS=(((((DT))|0)/4096)|0);var DG=((Bb)&4294967295);var DF=qs(DG,((hs)&4294967295),DS);var DE=((Bb)&4294967295);var DD=sU(((tX)&4294967295),DE)}var DC=DR;var DB=(((DC))|0)>1;if(DB){BL=15}else{BL=25}$bb17$$bb28$23:do{if(BL==15){Dv=1;var DA=((Bb)&4294967295);var Dy=((Bb)&4294967295);$bb18$25:while(1){var Dx=Dv;var Dw=((Di+Dx*4)&4294967295);var Du=uA[((Dw)>>2)];var Dt=Be;var Ds=((Dt+Du)&4294967295);var Dr=ll[((Ds)>>0)];var Dq=oD((Dr),8,0);var Dp=uA[((BK)>>2)];var Do=(((Dq)*(Dp))&4294967295);var Dn=(((Do))|0)>>8;var Dm=uA[((AR)>>2)];var Dl=(((Dn)+(Dm))&4294967295);B9=Dl;var Dh=CT;var Dg=(((Dh))|0)>0;if(Dg){BL=17}else{BL=18}if(BL==17){var Df=Dv;var De=((Di+Df*4)&4294967295);var Dd=uA[((De)>>2)];var Dc=Dk;var Da=(((Dc)*(Dd))&4294967295);var C9=BT;var C8=(((((Da))|0)/(((C9))|0))|0);Db=C8;CC=17}else{if(BL==18){var C7=CT;var C3=(((C7))|0)<0;var C2=Dv;var C1=((Di+C2*4)&4294967295);var C0=uA[((C1)>>2)];if(C3){BL=19}else{BL=20}if(BL==19){var CZ=BT;var CY=(((C0)-(CZ))&4294967295);var CX=Dk;var CW=(((CY)*(CX))&4294967295);var CV=BT;var CU=(((((CW))|0)/(((CV))|0))|0);Db=CU;CC=19}else{if(BL==20){var CQ=Dk;var CP=(((CQ)*(C0))&4294967295);var CO=(((((CP))|0)/128)|0);Db=CO;CC=20}}}}var CN=CC==20?CO:(CC==19?CU:(C8));var CM=(((CN))|0)>0;if(CM){BL=22}else{BL=24}$bb24$$bb26$34:do{if(BL==22){var CL=Db;var CK=Dk;var CJ=(((CL))|0)<=(((CK))|0);if(!(CJ)){BL=24;break $bb24$$bb26$34}var CH=B9;var CF=(((((CH))|0)/4096)|0);var Cu=Db;var Ct=qs(DA,((gx)&4294967295),Cu,CF);var Cs=sU(((tX)&4294967295),Dy)}}while(0);var Cr=Dv;var Cq=(((Cr)+1)&4294967295);Dv=Cq;var Cp=(((Cq))|0)<=3;if(Cp){BL=16;continue $bb18$25}else{BL=25;break $bb17$$bb28$23}}}}while(0);var Co=C5;var Cn=(((((Co))|0)/4096)|0);C5=Cn;var Cl=CT;var Cj=(((Cl))|0)<=0;if(Cj){BL=26}else{BL=27}if(BL==26){var B7=((Bb)&4294967295);var B6=Dk;var B5=C5;var B4=qs(B7,((gx)&4294967295),B6,B5);var B3=((Bb)&4294967295);var B2=sU(((tX)&4294967295),B3)}var B1=Dk;var B0=(((B1))|0)<=99;if(B0){BL=28}else{BL=29}if(BL==28){var BY=((Bb)&4294967295);var BW=C5;var BH=qs(BY,((gx)&4294967295),100,BW);var BG=((Bb)&4294967295);var BF=sU(((tX)&4294967295),BG)}var BJ=wg(((tX)&4294967295));var AY=((((tX)&4294967295)+BJ)&4294967295);ns(AY,((ot)&4294967295),2,1,0);var BE=C6;var BD=(((BE))|0)!=0;if(BD){BL=30}else{BL=31}if(BL==30){var BC=C5;var BB=qs(((tX)&4294967295),((v4)&4294967295),BC)}DQ=((tX)&4294967295);var BA=DQ;AH=BA;var AX=AH;vp=Bh;return AX;return null}function ul(A3,Mk,Hb,If){var BV=vp;vp+=332;n1(BV,0,332);var Be;var K1=null;var BH;var KD;var LF;var C0;var CW;var BW;var LS;var CY;var DP;var B8;var L3;var CX;var Ec;var LU;var J2;var Hn;var BC;var HW;var Kq;var Co;var J7;var Lh;var ID;var K4;var Mj;var CV;var Lu;var BN;var BD;var AM;var Mq;var CU;var Mz;var Cn;var Lg;var MH;var CT;var EC;var LH;var Hy;var MQ;var CS;var KQ;var IC;var Ci;var Cp;var Cm;var Ct;var Nn;var CR;var M5;var Bt;var Jl;var BG;var Nu;var CQ;var Hi;var CP;var I3;var Cl;var Mr;var BU;var Ig;var Kf;var GQ;var BE;var A2;var IZ;var EU;var Cc;var B7;var Ir;var Cu;var Dz;var KE;var LG=BV;var JH=BV+152;var e;var Cr;var Jm=BV+200;var Le=BV+204;var D1;var Gw=BV+208;var Bf;var Lf;var Cs=BV+212;var Kr;var Ld;var Ls;Cl=A3;Mr=Mk;BU=Hb;Ig=If;e=0;var GP=BU;var GO=(((GP))|0)==0;if(GO){Be=1}else{Be=2}if(Be==1){uA[((mt)>>2)]=1;uA[((AB)>>2)]=0;uA[((ab)>>2)]=0}var GN=((Cs)&4294967295);var Bq=(Cs);var GM=((Cs)&4294967295);var GL=((Cs)&4294967295);var Cq=JH;var GK=((LG+68)&4294967295);var GJ=((GK)&4294967295);var GI=((JH+8)&4294967295);$bb70$5:while(1){var E0=uA[((mt)>>2)];var EY=Mr;var EW=(((E0))|0)<(((EY))|0);if(!(EW)){Be=122;break $bb70$5}var GH=uA[((Ap)>>2)];var Gv=uA[((t3)>>2)];var Gu=(((GH)-(Gv))&4294967295);I3=Gu;var Gt=I3;var Gs=(((Gt))|0)<=0;if(Gs){Be=4}else{Be=5}if(Be==4){var Gr=I3;var Gq=(((Gr)+160)&4294967295);I3=Gq}var Gp=I3;CP=Gp;var Go=CP;Hi=Go;var Ex=Hi;var Gn=(((Ex))|0)<=21;var Gm=oD((Gn),1,0);BE=Gm;var L8=iB((Gm),8,0)!=0;if(L8){Be=6;break $bb70$5}Lf=GN;var Gb=uA[((mt)>>2)];var Ga=Cl;var F9=((Ga+24*Gb)&4294967295);Cu=F9;var F8=uA[((mt)>>2)];var F7=(((F8)+1)&4294967295);var F6=Cl;var F5=((F6+24*F7)&4294967295);Dz=F5;var F4=uA[((mt)>>2)];var F3=(((F4)-1)&4294967295);var F2=Cl;var FH=((F2+24*F3)&4294967295);KE=FH;var FG=Cu;var FF=((FG+8)&4294967295);var FE=uA[((FF)>>2)];Cc=FE;var FD=uA[((mt)>>2)];var FC=(((FD)-1)&4294967295);var FB=Cl;var FA=((FB+24*FC)&4294967295);var Fz=((FA+8)&4294967295);var Fy=uA[((Fz)>>2)];Ir=Fy;var Fd=uA[((mt)>>2)];var Fc=(((Fd)+1)&4294967295);var Fb=Cl;var Fa=((Fb+24*Fc)&4294967295);var E9=((Fa+8)&4294967295);var E8=uA[((E9)>>2)];B7=E8;var E7=Cu;var E6=((E7+4)&4294967295);var E5=xV[((E6)>>1)];var E4=oD((E5),16,0);var EI=(E4)&2;var EH=(((EI))|0)!=0;if(EH){Be=8}else{Be=9}if(Be==8){var EG=Cu;var EF=((EG+6)&4294967295);var EE=xV[((EF)>>1)];var ED=oD((EE),16,0);aF(AB,ED)}var EB=Cu;var EA=((EB+19)&4294967295);var Ez=ll[((EA)>>0)];var Ey=oD((Ez),8,0);var Eb=(Ey)&4;var Ea=(((Eb))|0)!=0;if(Ea){Be=10}else{Be=12}$bb7$$bb8$15:do{if(Be==10){var D9=uA[((g4)>>2)];var D8=Cu;var D7=((D8+6)&4294967295);var D6=xV[((D7)>>1)];var D5=oD((D6),16,0);var D4=(D5)&2047;var D3=uA[((cg)>>2)];var D2=(((D4)+(D3))&4294967295);M5=2;Bt=D2;Jl=0;BG=D9;var DO=uA[((t3)>>2)];var DN=((v0+DO*16)&4294967295);var DM=((DN)&4294967295);uA[((DM)>>2)]=10;var DL=uA[((t3)>>2)];var DK=((v0+DL*16)&4294967295);var DJ=((DK+4)&4294967295);var DI=M5;uA[((DJ)>>2)]=DI;var DH=uA[((t3)>>2)];var DG=Bt;var DF=(DG)&16777215;var Dt=Jl;var Ds=(Dt)<<24;var Dr=(Ds)|(DF);var Dq=((v0+DH*16)&4294967295);var Dp=((Dq+8)&4294967295);uA[((Dp)>>2)]=Dr;var Do=uA[((t3)>>2)];var Dn=((v0+Do*16)&4294967295);var Dm=((Dn+12)&4294967295);var Dl=BG;uA[((Dm)>>2)]=Dl;var Dk=uA[((t3)>>2)];var J1=(((Dk)+1)&4294967295);uA[((t3)>>2)]=J1;var JZ=(((J1))|0)>159;if(!(JZ)){Be=12;break $bb7$$bb8$15}uA[((t3)>>2)]=0}}while(0);var JX=Cu;var JV=((JX+19)&4294967295);var JT=ll[((JV)>>0)];var JQ=oD((JT),8,0);var JO=(JQ)&1;var JM=(((JO))&255);var BP=iB((JM),8,0)!=0;if(BP){Be=13}else{Be=15}$bb10$$bb11$19:do{if(Be==13){var JK=uA[((ab)>>2)];var JI=uA[((ue)>>2)];var JF=(((JI)+(JK))&4294967295);var JD=(((JK)+1)&4294967295);uA[((ab)>>2)]=JD;var JB=Cu;var Jz=((JB+6)&4294967295);var Jx=xV[((Jz)>>1)];var Jv=oD((Jx),16,0)>>>11;var Jt=oD((Jv),16,0);var Jr=Cu;var Jp=((Jr+6)&4294967295);var Jn=xV[((Jp)>>1)];var Jj=oD((Jn),16,0);var Jh=(Jj)&2047;var Jf=uA[((cg)>>2)];var Jd=(((Jh)+(Jf))&4294967295);IC=1;Ci=Jd;Cp=Jt;Cm=JF;var Jb=uA[((t3)>>2)];var I9=((v0+Jb*16)&4294967295);var I7=((I9)&4294967295);uA[((I7)>>2)]=10;var I5=uA[((t3)>>2)];var I2=((v0+I5*16)&4294967295);var I0=((I2+4)&4294967295);var IX=IC;uA[((I0)>>2)]=IX;var IV=uA[((t3)>>2)];var IT=Ci;var IR=(IT)&16777215;var IP=Cp;var IN=(IP)<<24;var IL=(IN)|(IR);var IJ=((v0+IV*16)&4294967295);var IH=((IJ+8)&4294967295);uA[((IH)>>2)]=IL;var IE=uA[((t3)>>2)];var IB=((v0+IE*16)&4294967295);var IA=((IB+12)&4294967295);var Iz=Cm;uA[((IA)>>2)]=Iz;var Iy=uA[((t3)>>2)];var Ix=(((Iy)+1)&4294967295);uA[((t3)>>2)]=Ix;var Iw=(((Ix))|0)>159;if(!(Iw)){Be=15;break $bb10$$bb11$19}uA[((t3)>>2)]=0}}while(0);var Iv=Cu;var Iu=Cc;var It=Ir;var Is=B7;HW=Iv;Kq=Iu;Co=It;J7=Is;Lh=Jm;ID=Gw;K4=Le;BD=0;var Iq=Lh;uA[((Iq)>>2)]=0;var Ip=ID;uA[((Ip)>>2)]=0;var Io=K4;uA[((Io)>>2)]=0;var In=Kq;var Im=((In)&4294967295);var Il=uA[((Im)>>2)];uA[((J)>>2)]=Il;var Ik=uA[((oB)>>2)];Lu=Ik;$bb26_i$23:while(1){var Ml=Lu;var Mi=((Ml)&4294967295);var Mh=uA[((Mi)>>2)];var Mg=(((Mh))|0)!=0;if(!(Mg)){Be=43;break $bb26_i$23}var Ij=Lu;var Ii=((Ij)&4294967295);var Ih=uA[((Ii)>>2)];var Ie=uA[((J)>>2)];var Id=(((Ih))|0)==(((Ie))|0);if(Id){Be=17}else{Be=41}$bb1_i33$$bb25_i$26:do{if(Be==17){var Ic=Lu;var Ib=((Ic+4)&4294967295);var Ia=uA[((Ib)>>2)];var H9=(((Ia))|0)==0;if(H9){Be=18}else{Be=19}$bb2_i34$$bb3_i$28:do{if(Be==18){BD=1}else{if(Be==19){var H8=Lu;var H7=((H8+4)&4294967295);var H6=uA[((H7)>>2)];var H5=(((H6))|0)!=58;if(H5){Be=22}else{Be=20}$bb6_i37$$bb4_i35$31:do{if(Be==20){var HS=HW;var HR=((HS+4)&4294967295);var HQ=xV[((HR)>>1)];var HP=oD((HQ),16,0);var HO=(HP)&8;var HN=(((HO))|0)==0;if(HN){Be=22;break $bb6_i37$$bb4_i35$31}BD=1;Be=34;break $bb2_i34$$bb3_i$28}}while(0);var HM=Lu;var HL=((HM+20)&4294967295);var HK=uA[((HL)>>2)];var HJ=(HK)&2;var Hx=(((HJ))|0)!=0;if(Hx){Be=23}else{Be=24}$bb7_i$$bb8_i$35:do{if(Be==23){var Hw=Co;BN=Hw}else{if(Be==24){var Hv=Lu;var Hu=((Hv+20)&4294967295);var Ht=uA[((Hu)>>2)];var Hs=(Ht)&8;var Hr=(((Hs))|0)==0;if(Hr){Be=27}else{Be=25}$bb11_i$$bb9_i$38:do{if(Be==25){var Hq=HW;var Hp=((Hq+24)&4294967295);var Ho=((Hp+19)&4294967295);var Ha=la[((Ho)>>0)];var G9=iB((Ha),8,0)==0;if(G9){Be=27;break $bb11_i$$bb9_i$38}var G8=uA[((((nm)&4294967295))>>2)];BN=G8;Be=28;break $bb7_i$$bb8_i$35}}while(0);var G7=J7;BN=G7}}}while(0);var G6=Lu;var G5=((G6+4)&4294967295);var G4=uA[((G5)>>2)];var G3=BN;var G2=((G3)&4294967295);var G1=uA[((G2)>>2)];var AZ=(((G4))|0)==(((G1))|0);if(AZ){Be=33}else{Be=29}$bb17_i$$bb13_i$43:do{if(Be==29){var AX=Lu;var AV=((AX+4)&4294967295);var AT=uA[((AV)>>2)];var AR=(((AT))|0)!=2;if(AR){Be=31}else{Be=30}if(Be==30){var AP=BN;var AN=((AP+11)&4294967295);var AK=la[((AN)>>0)];var AI=iB((AK),8,0)==2;if(AI){Be=33;break $bb17_i$$bb13_i$43}}var AH=Lu;var NB=((AH+4)&4294967295);var Nz=uA[((NB)>>2)];var Nx=(((Nz))|0)!=95;if(Nx){Be=34;break $bb2_i34$$bb3_i$28}var Nv=BN;var Ns=((Nv+11)&4294967295);var Nq=la[((Ns)>>0)];var No=iB((Nq),8,0)==0;if(!(No)){Be=34;break $bb2_i34$$bb3_i$28}}}while(0);BD=1}}}while(0);var Nl=Lu;var Nj=((Nl+20)&4294967295);var Nh=uA[((Nj)>>2)];var Nf=(Nh)&4;var Nd=(((Nf))|0)!=0;if(Nd){Be=35}else{Be=37}$bb19_i$$bb21_i$51:do{if(Be==35){var Nb=HW;var M9=((Nb+19)&4294967295);var M7=la[((M9)>>0)];var M4=iB((M7),8,0)==0;if(!(M4)){Be=37;break $bb19_i$$bb21_i$51}BD=0;Be=41;break $bb1_i33$$bb25_i$26}}while(0);var BF=BD;var M2=(((BF))|0)!=0;if(M2){Be=38;break $bb26_i$23}}}while(0);var Mn=Lu;var Mm=((Mn+24)&4294967295);Lu=Mm;Be=42;continue $bb26_i$23}$bb22_i$$bb27_i$56:do{if(Be==38){var M0=Lu;var MY=((M0+12)&4294967295);var MW=uA[((MY)>>2)];var MU=Lh;uA[((MU)>>2)]=MW;var MS=Lu;var MP=((MS+16)&4294967295);var MN=uA[((MP)>>2)];var ML=ID;uA[((ML)>>2)]=MN;var MJ=Lu;var MG=((MJ+20)&4294967295);var ME=uA[((MG)>>2)];var MC=K4;uA[((MC)>>2)]=ME;var MA=Lu;var My=((MA+20)&4294967295);var Mx=uA[((My)>>2)];var Mw=(Mx)&16;var Mv=(((Mw))|0)!=0;var Mu=Lu;var Mt=((Mu+8)&4294967295);var Mp=uA[((Mt)>>2)];if(Mv){Be=39}else{Be=40}if(Be==39){uA[((jC)>>2)]=Mp;CV=0;Be=46;break $bb22_i$$bb27_i$56}else{if(Be==40){uA[((J)>>2)]=Mp;Be=43;break $bb22_i$$bb27_i$56}}}}while(0);if(Be==43){var Mf=uA[((jC)>>2)];var Me=(((Mf))|0)!=0;if(Me){Be=44}else{Be=45}if(Be==44){var Md=uA[((J)>>2)];var Mc=(Md)<<8;var Mb=uA[((jC)>>2)];var Ma=(Mb)&255;var L9=(Ma)|(Mc);uA[((J)>>2)]=L9}uA[((jC)>>2)]=0;var L7=uA[((J)>>2)];CV=L7}var L6=CV;Mj=L6;var Nr=Mj;A2=Nr;var L5=uA[((Le)>>2)];var L4=(L5)&1;var L2=(((L4))&255);var i=iB((L2),8,0)!=0;if(i){K1=46;Be=47}else{K1=46;Be=48}if(Be==47){var L0=uA[((mt)>>2)];var LZ=(((L0)+1)&4294967295);uA[((mt)>>2)]=LZ;var HY=A2;K1=47}var LY=K1==47?HY:(Nr);var LX=(((LY))|0)==0;if(LX){Be=49}else{Be=50}if(Be==49){var LW=uA[((mt)>>2)];var LT=(((LW)+1)&4294967295);uA[((mt)>>2)]=LT;Be=121;continue $bb70$5}else{if(Be==50){var LR=Cc;var LP=((LR+11)&4294967295);var LO=la[((LP)>>0)];var LN=iB((LO),8,0)!=0;if(LN){Be=54}else{Be=51}$bb21$$bb17$73:do{if(Be==51){var LM=Cc;var LL=((LM)&4294967295);var LK=uA[((LL)>>2)];var LJ=A2;var LI=(((LK))|0)!=(((LJ))|0);if(LI){Be=54;break $bb21$$bb17$73}A2=95;var LE=Cu;var LD=((LE+12)&4294967295);var LC=uW[((LD)>>1)];var LB=iB((LC),16,0);var LA=uA[((((bX)&4294967295))>>2)];var Lz=(((LB)*(LA))&4294967295);var Ly=(((((Lz))|0)/256)|0);IZ=Ly;var Lx=IZ;var Lw=(((Lx))|0)==0;if(!(Lw)){Be=55;break $bb21$$bb17$73}IZ=1;Be=55;break $bb21$$bb17$73}}while(0);if(Be==54){var Lv=uA[((((bX+12)&4294967295))>>2)];var Lr=(((Lv)*80)&4294967295);var Lq=(((((Lr))|0)/256)|0);IZ=Lq}var Lp=Cc;var Lo=((Lp)&4294967295);var Ln=uA[((Lo)>>2)];var Lm=Cu;var Ll=((Lm+6)&4294967295);var Lk=xV[((Ll)>>1)];var Lj=oD((Lk),16,0);var Li=(Lj)&2047;var F0=uA[((cg)>>2)];var FY=(((Li)+(F0))&4294967295);LU=7;J2=FY;Hn=0;BC=Ln;var FW=uA[((t3)>>2)];var FU=((v0+FW*16)&4294967295);var FS=((FU)&4294967295);uA[((FS)>>2)]=10;var FQ=uA[((t3)>>2)];var FO=((v0+FQ*16)&4294967295);var FM=((FO+4)&4294967295);var FK=LU;uA[((FM)>>2)]=FK;var FI=uA[((t3)>>2)];var Fw=J2;var Fu=(Fw)&16777215;var Fs=Hn;var Fq=(Fs)<<24;var Fo=(Fq)|(Fu);var Fm=((v0+FI*16)&4294967295);var Fk=((Fm+8)&4294967295);uA[((Fk)>>2)]=Fo;var Fi=uA[((t3)>>2)];var Fg=((v0+Fi*16)&4294967295);var Fe=((Fg+12)&4294967295);var E2=BC;uA[((Fe)>>2)]=E2;var EZ=uA[((t3)>>2)];var EX=(((EZ)+1)&4294967295);uA[((t3)>>2)]=EX;var EV=(((EX))|0)>159;if(EV){Be=56}else{Be=57}if(Be==56){uA[((t3)>>2)]=0}var ET=A2;B8=ET;Ec=0;$bb_i47$83:while(1){var ER=Ec;var EP=Ec;var EN=(((EP)*8)&4294967295);var EL=B8;var EJ=(((EL))>>>0)>>>(((EN))>>>0);var Ev=(((EJ))&255);var Et=((aq+ER)&4294967295);la[((Et)>>0)]=Ev;var Er=Ec;var Ep=(((Er)+1)&4294967295);Ec=Ep;var En=(((Ep))|0)<=2;if(En){Be=58;continue $bb_i47$83}else{Be=59;break $bb_i47$83}}la[((((aq+4)&4294967295))>>0)]=0;CX=((aq)&4294967295);var El=CX;L3=El;var L1=L3;var Ej=Lf;var Eh=qs(Ej,((cx)&4294967295),L1);var Ef=Lf;var Ed=((Ef+Eh)&4294967295);Lf=Ed;var DZ=uA[((Jm)>>2)];var DY=(((DZ))|0)==95;if(DY){Be=60}else{Be=61}if(Be==60){var DX=uA[((Gw)>>2)];e=DX;uA[((Jm)>>2)]=0}D1=0;Bf=((lH)&4294967295);var DW=Cc;var DV=((DW+11)&4294967295);var DU=ll[((DV)>>0)];var DT=oD((DU),8,0);if(DT==2){Be=62}else{if(DT==3){Be=90}else{if(DT==4){Be=72}else{if(DT==5){Be=82}else{if(DT==6){Be=83}else{if(DT==8){Be=86}else{Be=92}}}}}}$bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89:do{if(Be==62){var DS=Cc;var DR=((DS+14)&4294967295);var DQ=ll[((DR)>>0)];var DE=oD((DQ),8,0);IZ=DE;var DD=Cu;var DC=((DD+4)&4294967295);var DB=xV[((DC)>>1)];var DA=oD((DB),16,0);var Dy=(DA)&8;var Dx=(((Dy))|0)!=0;if(Dx){Be=63}else{Be=64}if(Be==63){var Dw=uA[((((nm+48)&4294967295))>>2)];var Dv=((Dw+14)&4294967295);var Du=ll[((Dv)>>0)];var Dj=oD((Du),8,0);var Di=IZ;var Dh=(((Dj)+(Di))&4294967295);IZ=Dh}var Dg=B7;var Df=((Dg+11)&4294967295);var De=la[((Df)>>0)];var Dd=iB((De),8,0)==0;if(Dd){Be=65}else{Be=66}if(Be==65){var Dc=IZ;var Db=(((Dc)+50)&4294967295);IZ=Db}var Da=Cu;var C9=((Da+12)&4294967295);var C8=uW[((C9)>>1)];var C7=iB((C8),16,0);var C6=IZ;var C5=(((C7)*(C6))&4294967295);var C4=(((((C5))|0)/256)|0);IZ=C4;var C3=uA[((Jm)>>2)];var C2=(((C3))|0)==0;if(C2){Be=67}else{Be=68}if(Be==67){var C1=Cu;var CZ=((C1+21)&4294967295);var CO=ll[((CZ)>>0)];var CN=oD((CO),8,0);var CM=Cu;var CL=((CM+20)&4294967295);var CK=ll[((CL)>>0)];var CJ=oD((CK),8,0);var CI=Cu;var CH=((CI+14)&4294967295);var CG=ll[((CH)>>0)];var CF=oD((CG),8,0);var CE=xr(CF,CJ,CN,0,0);Kr=CE;var CD=Lf;var CC=IZ;var CB=Kr;var CA=qs(CD,((tB)&4294967295),CC,CB);var Cz=Lf;var Cy=((Cz+CA)&4294967295);Lf=Cy}else{if(Be==68){var Cx=uA[((Gw)>>2)];var Cw=Cu;var Cv=((Cw+21)&4294967295);var Lc=ll[((Cv)>>0)];var Lb=oD((Lc),8,0);var La=Cu;var K9=((La+20)&4294967295);var K8=ll[((K9)>>0)];var K7=oD((K8),8,0);var K6=Cu;var K5=((K6+14)&4294967295);var K3=ll[((K5)>>0)];var K2=oD((K3),8,0);var K0=xr(K2,K7,Lb,Cx,0);Ld=K0;var KZ=uA[((Gw)>>2)];var KY=IZ;var KX=(((KY)*(KZ))&4294967295);var KW=(((((KX))|0)/100)|0);EU=KW;var KV=Lf;var KU=EU;var KT=Ld;var KS=qs(KV,((tB)&4294967295),KU,KT);var KR=Lf;var KP=((KR+KS)&4294967295);Lf=KP;var KO=uA[((Gw)>>2)];var KN=((0-(KO))&4294967295);var KL=Cu;var KK=((KL+21)&4294967295);var KJ=ll[((KK)>>0)];var KI=oD((KJ),8,0);var KH=Cu;var KG=((KH+20)&4294967295);var KF=ll[((KG)>>0)];var KB=oD((KF),8,0);var KA=Cu;var Kz=((KA+14)&4294967295);var Ky=ll[((Kz)>>0)];var Kx=oD((Ky),8,0);var Kw=xr(Kx,KB,KI,KN,0);Ld=Kw;var Kv=IZ;var Ku=EU;var Kt=uA[((Jm)>>2)];BW=Kt;DP=0;while(1){var Ks=DP;var Kp=DP;var Ko=(((Kp)*8)&4294967295);var Kn=BW;var Km=(((Kn))>>>0)>>>(((Ko))>>>0);var Kl=(((Km))&255);var Kk=((aq+Ks)&4294967295);la[((Kk)>>0)]=Kl;var Kj=DP;var Ki=(((Kj)+1)&4294967295);DP=Ki;var Kh=(((Ki))|0)<=2;if(Kh){Be=69;continue}else{Be=70;break}}var Kg=(((Kv)-(Ku))&4294967295);la[((((aq+4)&4294967295))>>0)]=0;CY=((aq)&4294967295);var Ke=CY;LS=Ke;var LQ=LS;var Kd=Lf;var Kc=Ld;var Kb=qs(Kd,((B)&4294967295),LQ,Kg,Kc);var Ka=Lf;var J9=((Ka+Kb)&4294967295);Lf=J9}}D1=1;Be=98;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}else{if(Be==90){var A6=Dz;var A5=((A6+15)&4294967295);var A4=la[((A5)>>0)];var A1=iB((A4),8,0)==0;if(!(A1)){Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}var A0=IZ;var AY=(((A0)+50)&4294967295);IZ=AY;var AW=Cu;var AU=((AW+21)&4294967295);var AS=ll[((AU)>>0)];var AQ=oD((AS),8,0);var AO=Cu;var AL=((AO+20)&4294967295);var AJ=ll[((AL)>>0)];var ND=oD((AJ),8,0);var NC=Cu;var NA=((NC+14)&4294967295);var Ny=ll[((NA)>>0)];var Nw=oD((Ny),8,0);var Nt=xr(Nw,ND,AQ,0,1);Bf=Nt;Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}else{if(Be==72){Cr=0;var J8=Dz;var J6=((J8+15)&4294967295);var J5=la[((J6)>>0)];var J4=iB((J5),8,0)==2;if(J4){Be=73}else{Be=74}if(Be==73){Cr=1}var J3=Dz;var J0=((J3+15)&4294967295);var JY=la[((J0)>>0)];var JW=iB((JY),8,0)==3;if(JW){Be=75}else{Be=77}$bb37$$bb39$110:do{if(Be==75){var JU=Dz;var JS=((JU+19)&4294967295);var JP=la[((JS)>>0)];var JN=iB((JP),8,0)==0;if(!(JN)){Be=77;break $bb37$$bb39$110}Cr=1;Be=79;break $bb37$$bb39$110}}while(0);$bb5_i66$$bb39$113:do{if(Be==77){var Ms=Cr;var JL=(((Ms))|0)==0;if(!(JL)){Be=79;break $bb5_i66$$bb39$113}var JJ=Cu;var JG=((JJ+4)&4294967295);var JE=uW[((JG)>>1)];var JC=(JE)|8192;var JA=Cu;var Jy=((JA+4)&4294967295);uW[((Jy)>>1)]=JC}}while(0);var Jw=Cu;lw(0,0,Jw,LG);var Ju=c(LG,0,-1);IZ=Ju;var Js=IZ;var Jq=(((Js)*1000)&4294967295);var Jo=uA[((bW)>>2)];var Jk=(((((Jq))|0)/(((Jo))|0))|0);IZ=Jk;var Ji=Cu;var Jg=((Ji+16)&4294967295);var Je=ll[((Jg)>>0)];var Jc=oD((Je),8,0);BH=Jc;KD=1;var Ja=uA[((((bX+12)&4294967295))>>2)];var I8=BH;var I6=(((I8)*(Ja))&4294967295);var I4=(((((I6))|0)/256)|0);CW=I4;var I1=uA[((((bX+8)&4294967295))>>2)];var IY=CW;var IW=(((I1))|0)>(((IY))|0);if(IW){Be=80}else{Be=81}if(Be==80){var IU=uA[((((bX+8)&4294967295))>>2)];CW=IU}var IS=CW;C0=IS;var IQ=C0;LF=IQ;var JR=LF;var IO=IZ;var IM=(((IO)+(JR))&4294967295);IZ=IM;Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}else{if(Be==82){var IK=uA[((((bX+12)&4294967295))>>2)];var II=(((IK)*80)&4294967295);var IG=(((((II))|0)/256)|0);IZ=IG;Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}else{if(Be==83){IZ=0;var Ck=Cu;lw(0,0,Ck,LG);var Cj=Cu;var Ch=((Cj+4)&4294967295);var Cg=xV[((Ch)>>1)];var Cf=oD((Cg),16,0);var Ce=(Cf)&8;var Cd=(((Ce))|0)!=0;if(Cd){Be=84}else{Be=85}if(Be==84){var Cb=Cu;var Ca=((Cb+12)&4294967295);var B9=uW[((Ca)>>1)];var B6=iB((B9),16,0);var B5=c(LG,B6,-1);IZ=B5}var B4=Cu;var B3=((B4+12)&4294967295);var B2=uW[((B3)>>1)];var B1=iB((B2),16,0);var B0=c(LG,B1,-1);var BZ=IZ;var BY=(((BZ)+(B0))&4294967295);IZ=BY;var BX=IZ;var BT=(((BX)*1000)&4294967295);var BS=uA[((bW)>>2)];var BR=(((((BT))|0)/(((BS))|0))|0);IZ=BR;Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}else{if(Be==86){var BQ=Dz;var BO=((BQ+15)&4294967295);var BM=la[((BO)>>0)];var BL=iB((BM),8,0)!=2;if(!(BL)){Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}ud(Cq,0,48,1,0);var BK=Cu;lw(0,0,BK,LG);var BJ=uA[((GJ)>>2)];uA[((GI)>>2)]=BJ;var BI=Cu;var BB=((BI+8)&4294967295);var BA=uA[((BB)>>2)];var Bz=Cu;var By=gP(BA,0,JH,Bz,-1);IZ=By;var Bx=IZ;var Bw=(((Bx)*1000)&4294967295);var Bv=uA[((bW)>>2)];var Bu=(((((Bw))|0)/(((Bv))|0))|0);IZ=Bu;var Bs=Dz;var Br=((Bs+15)&4294967295);var Bp=la[((Br)>>0)];var Bo=iB((Bp),8,0)==0;if(Bo){Be=88}else{Be=89}if(Be==88){var Bn=IZ;var Bm=(((Bn)+50)&4294967295);IZ=Bm}var Bl=Cu;var Bk=((Bl+21)&4294967295);var Bj=ll[((Bk)>>0)];var Bi=oD((Bj),8,0);var Bh=Cu;var Bg=((Bh+20)&4294967295);var Bd=ll[((Bg)>>0)];var Bc=oD((Bd),8,0);var Bb=Cu;var Ba=((Bb+14)&4294967295);var A9=ll[((Ba)>>0)];var A8=oD((A9),8,0);var A7=xr(A8,Bc,Bi,0,1);Bf=A7;Be=92;break $bb54$$bb25$$bb52$$bb34$$bb42$$bb43$$bb46$89}}}}}}}while(0);$bb54$$bb58$130:do{if(Be==92){var Mo=D1;var Np=(((Mo))|0)==0;if(!(Np)){Be=98;break $bb54$$bb58$130}var Nm=uA[((Jm)>>2)];var Nk=(((Nm))|0)!=0;if(Nk){Be=94}else{Be=97}if(Be==94){var Ni=uA[((Gw)>>2)];var Ng=IZ;var Ne=(((Ng)*(Ni))&4294967295);var Nc=(((((Ne))|0)/100)|0);EU=Nc;var Na=uA[((Jm)>>2)];AM=Na;Mz=0;while(1){var M8=Mz;var M6=Mz;var M3=(((M6)*8)&4294967295);var M1=AM;var MZ=(((M1))>>>0)>>>(((M3))>>>0);var MX=(((MZ))&255);var MV=((aq+M8)&4294967295);la[((MV)>>0)]=MX;var MT=Mz;var MR=(((MT)+1)&4294967295);Mz=MR;var MO=(((MR))|0)<=2;if(MO){Be=95;continue}else{Be=96;break}}la[((((aq+4)&4294967295))>>0)]=0;CU=((aq)&4294967295);var MM=CU;Mq=MM;var KC=Mq;var MK=Lf;var MI=EU;var MF=qs(MK,((iX)&4294967295),MI,KC);var MD=Lf;var MB=((MD+MF)&4294967295);Lf=MB;var H4=IZ;var H3=EU;var H2=(((H4)-(H3))&4294967295);IZ=H2}var H1=Lf;var H0=IZ;var HZ=Bf;var HX=qs(H1,((qN)&4294967295),H0,HZ);var HV=Lf;var HU=((HV+HX)&4294967295);Lf=HU}}while(0);var HT=e;var HI=(((HT))|0)!=0;if(HI){Be=99}else{Be=112}if(Be==99){var HH=e;Cn=HH;Lg=0;var HG=Lg;var HF=(((HG))|0)==0;if(HF){Be=100}else{Be=103}if(Be==100){var HE=Cn;var HD=(((HE))|0)>199;if(HD){Be=101}else{Be=102}if(Be==101){var HC=uA[((((bX+4)&4294967295))>>2)];var HB=Cn;var HA=(((HB)*(HC))&4294967295);var Hz=(((((HA))|0)/256)|0);EC=Hz}else{if(Be==102){var Hm=uA[((((bX)&4294967295))>>2)];var Hl=Cn;var Hk=(((Hl)*(Hm))&4294967295);var Hj=(((((Hk))|0)/256)|0);EC=Hj}}}else{if(Be==103){var Hh=uA[((((bX+12)&4294967295))>>2)];var Hg=Cn;var Hf=(((Hg)*(Hh))&4294967295);var He=(((((Hf))|0)/256)|0);EC=He}}var Hd=uA[((((bX+8)&4294967295))>>2)];var Hc=EC;var G0=(((Hd))|0)>(((Hc))|0);if(G0){Be=105}else{Be=106}if(Be==105){var GZ=uA[((((bX+8)&4294967295))>>2)];EC=GZ}var GY=EC;CT=GY;var GX=CT;MH=GX;var KM=MH;var GW=IZ;var GV=(((GW)+(KM))&4294967295);IZ=GV;var GU=e;LH=GU;Hy=0;var GT=(((GU))|0)>199;if(GT){Be=107}else{Be=108}if(Be==107){var GS=uA[((((bX+4)&4294967295))>>2)];var GR=LH;var GG=(((GR)*(GS))&4294967295);var GF=(((((GG))|0)/256)|0);KQ=GF}else{if(Be==108){var GE=uA[((((bX)&4294967295))>>2)];var GD=LH;var GC=(((GD)*(GE))&4294967295);var GB=(((((GC))|0)/256)|0);KQ=GB}}var GA=uA[((((bX+8)&4294967295))>>2)];var Gz=KQ;var Gy=(((GA))|0)>(((Gz))|0);if(Gy){Be=110}else{Be=111}if(Be==110){var Gx=uA[((((bX+8)&4294967295))>>2)];KQ=Gx}var Gl=KQ;CS=Gl;var Gk=CS;MQ=Gk;var IF=MQ;var Gj=Lf;var Gi=qs(Gj,((rf)&4294967295),IF);var Gh=Lf;var Gg=((Gh+Gi)&4294967295);Lf=Gg;e=0}var Gf=Ig;var Ge=(Gf)!=0;if(Ge){Be=113}else{Be=114}$bb61$$bb64$160:do{if(Be==113){var Gd=Lf;var Gc=(Gd);var F1=(((Gc)-(Bq))&4294967295);var FZ=Ig;var FX=yf(GM,1,F1,FZ)}else{if(Be==114){Ct=GL;uA[((zu)>>2)]=2;var FV=Ct;var FT=o9(FV);CR=FT;var FR=CR;Nn=FR;var Lt=Nn;Ls=Lt;var FP=Ls;var FN=(((FP))|0)<0;if(FN){Be=115;break $bb70$5}var FL=Ls;var FJ=(((FL))|0)==0;if(FJ){Be=117;break $bb70$5}var Fx=uA[((t3)>>2)];var Fv=((v0+Fx*16)&4294967295);var Ft=((Fv)&4294967295);uA[((Ft)>>2)]=13;var Fr=uA[((t3)>>2)];var Fp=((v0+Fr*16)&4294967295);var Fn=((Fp+4)&4294967295);var Fl=IZ;uA[((Fn)>>2)]=Fl;var Fj=uA[((t3)>>2)];var Fh=(((Fj)+1)&4294967295);uA[((t3)>>2)]=Fh;var Ff=(((Fh))|0)>159;if(!(Ff)){Be=120;break $bb61$$bb64$160}uA[((t3)>>2)]=0}}}while(0);var E3=uA[((mt)>>2)];var E1=(((E3)+1)&4294967295);uA[((mt)>>2)]=E1;Be=121;continue $bb70$5}}}if(Be==6){GQ=1}else{if(Be==115){GQ=0}else{if(Be==117){GQ=1}else{if(Be==122){var ES=Ig;var EQ=(ES)==0;if(EQ){Be=123}else{Be=125}$bb72$$bb73$172:do{if(Be==123){var EO=o9(((Ae)&4294967295));var EM=(((EO))|0)==3;var EK=oD((EM),1,0);CQ=EK;var Ew=CQ;Nu=Ew;var Eu=uA[((t3)>>2)];var Es=((v0+Eu*16)&4294967295);var Eq=((Es)&4294967295);uA[((Eq)>>2)]=13;var Eo=uA[((t3)>>2)];var Em=((v0+Eo*16)&4294967295);var Ek=((Em+4)&4294967295);uA[((Ek)>>2)]=500;var Ei=uA[((t3)>>2)];var Eg=(((Ei)+1)&4294967295);uA[((t3)>>2)]=Eg;var Ee=(((Eg))|0)>159;if(!(Ee)){Be=125;break $bb72$$bb73$172}uA[((t3)>>2)]=0}}while(0);GQ=0}}}}var LV=GQ;Kf=LV;var D0=Kf;vp=BV;return D0;return null}function rX(A3,AI,AR){var A0;var AT;var A2;var A4;var A5;var AQ;var e;var A6;AT=A3;A2=AI;A4=AR;e=0;var AP=A2;var AO=uA[((AP)>>2)];var AN=(((AO))|0)==0;if(AN){A0=1}else{A0=2}if(A0==1){AQ=0}else{if(A0==2){var AM=uA[((rc)>>2)];var AL=(((AM))|0)!=0;if(AL){A0=3}else{A0=4}if(A0==3){var AK=uA[((ni)>>2)];e=AK}var AJ=A2;var AH=uA[((AJ)>>2)];var i=AT;var A1=A4;var AZ=e;var AY=ul(i,AH,A1,AZ);A6=AY;var AX=(((AY))|0)==0;if(AX){A0=5}else{A0=6}if(A0==5){var AW=A2;uA[((AW)>>2)]=0}var AV=A6;AQ=AV}}var AU=AQ;A5=AU;var AS=A5;return AS;return null}function sB(A3,C5,C3){var By=vp;vp+=520;n1(By,0,520);var Cg;var D0;var A7;var Ds;var EG;var Bl;var Be;var AN;var DN;var Dy;var EF;var C4;var CD;var AO;var AT;var DM;var Ej;var DJ;var Bv;var DS;var EE;var Dh;var Ca=By;var BT;var D8;var ED;var DB;var Cz=By+88;var A9;var Eq;var EC;var Dz;var Ez=By+176;var Bo;var CF;var EB;var EK;var CL=By+264;var Cm;var Ck;var Ef;var AH;var Dc;var De;var Dg;var Dk;var Dn;var Dp;var EA;var Bh;var Eg;var BR;var DZ;var AR=By+352;Cm=A3;Ck=C5;Ef=C3;la[((((jg)&4294967295))>>0)]=0;uA[((tz)>>2)]=0;uA[((jC)>>2)]=0;var Ey=Cm;var Ex=(Ey)==0;if(Ex){Cg=1}else{Cg=2}if(Cg==1){var Ew=uA[((gQ)>>2)];uA[((bW)>>2)]=Ew;vu(14,0,0);EA=0}else{if(Cg==2){var Dm=((AR)&4294967295);var Dj=Cm;var Df=qs(Dm,((yF)&4294967295),((iU)&4294967295),Dj);var Dd=((AR)&4294967295);Bo=Dd;var Db=Bo;var Da=kB(Db,CL);var C9=(((Da))|0)!=0;var C8=oD((C9),1,0);EK=C8;var C7=EK;var EH=iB((C7),8,0)!=0;if(EH){Cg=3}else{Cg=4}if(Cg==3){EB=0}else{if(Cg==4){var C6=((CL+16)&4294967295);var CT=uA[((C6)>>2)];var CR=(CT)&61440;var CP=(((CR))|0)==16384;if(CP){Cg=5}else{Cg=6}if(Cg==5){EB=-2}else{if(Cg==6){var CO=((CL+44)&4294967295);var CN=uA[((CO)>>2)];EB=CN}}}}var CM=EB;CF=CM;var EJ=CF;var CK=(((EJ))|0)<=0;var CJ=oD((CK),1,0);Dp=CJ;var BS=iB((CJ),8,0)!=0;if(BS){Cg=8}else{Cg=9}if(Cg==8){var CI=((AR)&4294967295);var CH=Cm;var Cu=qs(CI,((gm)&4294967295),CH)}var Cs=((AR)&4294967295);A9=Cs;var Cq=A9;var Cp=kB(Cq,Ez);var Co=(((Cp))|0)!=0;var Cn=oD((Co),1,0);Dz=Cn;var AL=iB((Cn),8,0)!=0;if(AL){Cg=10}else{Cg=11}if(Cg==10){EC=0}else{if(Cg==11){var Cl=((Ez+16)&4294967295);var Cj=uA[((Cl)>>2)];var Ci=(Cj)&61440;var Ch=(((Ci))|0)==16384;if(Ch){Cg=12}else{Cg=13}if(Cg==12){EC=-2}else{if(Cg==13){var B5=((Ez+44)&4294967295);var B3=uA[((B5)>>2)];EC=B3}}}}var B1=EC;Eq=B1;var A2=Eq;var B0=(((A2))|0)<=0;var BZ=oD((B0),1,0);Dn=BZ;var Ei=iB((BZ),8,0)!=0;if(Ei){Cg=15}else{Cg=16}if(Cg==15){var BY=((AR)&4294967295);var BX=Cm;var BW=Cm;var BV=qs(BY,((ok)&4294967295),BX,BW)}var BU=((AR)&4294967295);BT=BU;var BI=BT;var BG=kB(BI,Cz);var BE=(((BG))|0)!=0;var BD=oD((BE),1,0);DB=BD;var AJ=iB((BD),8,0)!=0;if(AJ){Cg=17}else{Cg=18}if(Cg==17){ED=0}else{if(Cg==18){var BC=((Cz+16)&4294967295);var BB=uA[((BC)>>2)];var BA=(BB)&61440;var Bz=(((BA))|0)==16384;if(Bz){Cg=19}else{Cg=20}if(Cg==19){ED=-2}else{if(Cg==20){var Bx=((Cz+44)&4294967295);var Bw=uA[((Bx)>>2)];ED=Bw}}}}var Bj=ED;D8=Bj;var AP=D8;var Bg=(((AP))|0)<=0;var Bd=oD((Bg),1,0);Dk=Bd;var Eh=iB((Bd),8,0)!=0;if(Eh){Cg=22}else{Cg=23}if(Cg==22){var Bc=((AR)&4294967295);var Bb=Cm;var Ba=qs(Bc,((vY)&4294967295),Bb)}var A8=((AR)&4294967295);var A6=r8(A8);var A5=(((A6))|0)!=0;var A4=oD((A5),1,0);Dg=A4;var Ea=iB((A4),8,0)!=0;if(Ea){Cg=24}else{Cg=25}if(Cg==24){EA=2}else{if(Cg==25){var A1=((AR)&4294967295);var A0=Ck;var AZ=qs(A1,((cl)&4294967295),((iU)&4294967295),A0);var AY=((AR)&4294967295);Bv=AY;var AX=Bv;var AW=kB(AX,Ca);var AV=(((AW))|0)!=0;var AU=oD((AV),1,0);Dh=AU;var AS=Dh;var Es=iB((AS),8,0)!=0;if(Es){Cg=26}else{Cg=27}if(Cg==26){EE=0}else{if(Cg==27){var AQ=((Ca+16)&4294967295);var AM=uA[((AQ)>>2)];var AK=(AM)&61440;var AI=(((AK))|0)==16384;if(AI){Cg=28}else{Cg=29}if(Cg==28){EE=-2}else{if(Cg==29){var i=((Ca+44)&4294967295);var e=uA[((i)>>2)];EE=e}}}}var EQ=EE;DS=EQ;var EI=DS;Bh=EI;var EP=((AR)&4294967295);var EO=uE(EP,((lo)&4294967295));DZ=EO;var EN=DZ;var EM=(EN)==0;var Ev=oD((EM),1,0);De=Ev;var D5=iB((Ev),8,0)!=0;if(D5){Cg=31}else{Cg=34}if(Cg==31){af();var Eu=uA[((u2)>>2)];DJ=Eu;var Et=(Eu)!=0;if(Et){Cg=32}else{Cg=33}$bb_i_i$$close_MBR_exit$47:do{if(Cg==32){while(1){var Er=DJ;Ej=Er;var Ep=DJ;var Eo=((Ep)&4294967295);var En=uA[((Eo)>>2)];DJ=En;var Em=Ej;var El=Em;br(El);var C2=DJ;var Ek=(C2)!=0;if(Ek){Cg=32;continue}else{Cg=33;break $bb_i_i$$close_MBR_exit$47}}}}while(0);uA[((u2)>>2)]=0;uA[((oQ)>>2)]=0;var Ee=uA[((kD)>>2)];br(Ee);uA[((kD)>>2)]=0;pB[((bc)>>2)]=1;EA=2}else{if(Cg==34){var Ed=Bh;var Ec=uA[((oB)>>2)];var Eb=Ec;var D9=vv(Eb,Ed);var D7=D9;uA[((oB)>>2)]=D7;var D6=uA[((oB)>>2)];var D4=(D6)==0;var D3=oD((D4),1,0);Dc=D3;var D2=Dc;var D1=iB((D2),8,0)!=0;var DY=DZ;if(D1){Cg=35}else{Cg=38}if(Cg==35){var DX=ts(DY);af();var DW=uA[((u2)>>2)];DM=DW;var DV=(DW)!=0;if(DV){Cg=36}else{Cg=37}$bb_i_i37$$close_MBR_exit38$54:do{if(Cg==36){while(1){var DU=DM;AT=DU;var DT=DM;var DR=((DT)&4294967295);var DQ=uA[((DR)>>2)];DM=DQ;var DP=AT;var DO=DP;br(DO);var B9=DM;var DL=(B9)!=0;if(DL){Cg=36;continue}else{Cg=37;break $bb_i_i37$$close_MBR_exit38$54}}}}while(0);uA[((u2)>>2)]=0;uA[((oQ)>>2)]=0;var DK=uA[((kD)>>2)];br(DK);uA[((kD)>>2)]=0;pB[((bc)>>2)]=1;EA=-1}else{if(Cg==38){DN=DY;AO=0;C4=0;$bb_i40$59:while(1){var DI=DN;var DH=sd(DI);var DG=(((DH))&255);CD=DG;var DF=CD;var DE=oD((DF),8,0);var DD=C4;var DC=(((DD)*8)&4294967295);var DA=(DE)<<(DC);var Dx=AO;var Dw=(((DA)+(Dx))&4294967295);AO=Dw;var Dv=C4;var Du=(((Dv)+1)&4294967295);C4=Du;var Dt=(((Du))|0)<=3;if(Dt){Cg=39;continue $bb_i40$59}else{Cg=40;break $bb_i40$59}}var Dr=AO;EF=Dr;var Dq=EF;Dy=Dq;var EL=Dy;uA[((wn)>>2)]=EL;var Do=uA[((oB)>>2)];var Dl=Do;BR=Dl;Eg=4;var Di=Eg;var C1=Bh;var C0=(((Di))|0)<(((C1))|0);if(C0){Cg=41}else{Cg=44}$bb19$$bb21$62:do{if(Cg==41){$bb19$63:while(1){var CZ=DZ;A7=CZ;AN=0;Bl=0;while(1){var CY=A7;var CX=sd(CY);var CW=(((CX))&255);Be=CW;var CV=Be;var CU=oD((CV),8,0);var CS=Bl;var CQ=(((CS)*8)&4294967295);var CG=(CU)<<(CQ);var CE=AN;var CC=(((CG)+(CE))&4294967295);AN=CC;var CB=Bl;var Cy=(((CB)+1)&4294967295);Bl=Cy;var Cx=(((Cy))|0)<=3;if(Cx){Cg=42;continue}else{Cg=43;break}}var Cw=AN;EG=Cw;var Cv=EG;Ds=Cv;var CA=Ds;var Ct=BR;uA[((Ct)>>2)]=CA;var Cr=BR;var Cf=((Cr+4)&4294967295);BR=Cf;var Ce=Eg;var Cd=(((Ce)+4)&4294967295);Eg=Cd;var Cc=Eg;var Cb=Bh;var B8=(((Cc))|0)<(((Cb))|0);if(B8){Cg=41;continue $bb19$63}else{Cg=44;break $bb19$$bb21$62}}}}while(0);var B7=Bh;var B6=uA[((oB)>>2)];var B4=B6;var B2=DZ;var BQ=dg(B4,1,B7,B2);Bh=BQ;var BP=DZ;var BO=ts(BP);var BN=uA[((wn)>>2)];var BM=(BN)&255;var BL=(((BM))|0);var BK=(BL)/16;D0=BK;var BJ=pB[((bc)>>2)];var BH=D0;var BF=(BH)==(BJ);if(BF){Cg=47}else{Cg=45}$setVolumeRatio_MBR_exit$$bb_i51$69:do{if(Cg==45){var Bt=D0;pB[((bc)>>2)]=Bt;var Bs=uA[((zu)>>2)];var Br=(((Bs))|0)!=1;if(Br){Cg=47;break $setVolumeRatio_MBR_exit$$bb_i51$69}af();var Bq=uA[((kD)>>2)];var Bp=r8(Bq)}}while(0);var Bn=Ef;uA[((bW)>>2)]=Bn;var Bm=(((Bn))|0)==22050;if(Bm){Cg=48}else{Cg=49}if(Cg==48){vu(14,0,0)}else{if(Cg==49){vu(14,1,0)}}var Bk=Cm;var Bi=oJ(((jg)&4294967295),Bk);uA[((tz)>>2)]=1000;EA=0}}}}}}}}var Bf=EA;AH=Bf;var Bu=AH;vp=By;return Bu;return null}function zS(AQ){var A2;var AV;var A4;var AP;var AJ;AV=AQ;AJ=0;while(1){var A8=uA[((rW)>>2)];var A7=AJ;var A6=(((A7))|0)<(((A8))|0);if(!(A6)){A2=6;break}var AO=AJ;var AN=((nm+AO*4)&4294967295);var AM=uA[((AN)>>2)];var AL=(AM)==0;if(AL){A2=4}else{A2=2}if(A2==2){var AK=AJ;var AI=((nm+AK*4)&4294967295);var AH=uA[((AI)>>2)];var i=((AH)&4294967295);var e=uA[((i)>>2)];var A3=AV;var A1=(((e))|0)==(((A3))|0);if(A1){A2=3;break}}var AT=AJ;var AS=(((AT)+1)&4294967295);AJ=AS;A2=5;continue}if(A2==3){var A0=AJ;var AZ=((nm+A0*4)&4294967295);var AY=uA[((AZ)>>2)];var AX=((AY+10)&4294967295);var AW=ll[((AX)>>0)];var AU=oD((AW),8,0);AP=AU}else{if(A2==6){AP=0}}var A5=AP;A4=A5;var AR=A4;return AR;return null}function jN(A4){var A5;var A8=null;var AH;var AR;var Bs;var AL;var A1;var A6;var Br;var AU;var AI;var i;A1=A4;i=0;AU=0;A8=-1;$bb2$2:while(1){var e=A8==2?AJ:(0);var BC=(((e))|0)<=3;if(!(BC)){A5=4;break $bb2$2}var Bq=A1;var Bp=AU;var Bo=((Bq+Bp)&4294967295);var Bn=la[((Bo)>>0)];var Bm=iB((Bn),8,0)==0;if(Bm){A5=4;break $bb2$2}var Bk=A1;var Bi=AU;var Bg=((Bk+Bi)&4294967295);var AZ=la[((Bg)>>0)];AI=AZ;var AY=AI;var AW=oD((AY),8,0);var AT=AU;var AQ=(((AT)*8)&4294967295);var AO=(AW)<<(AQ);var AN=i;var AM=(AO)|(AN);i=AM;var AK=AU;var AJ=(((AK)+1)&4294967295);AU=AJ;A8=2;A5=3;continue $bb2$2}var BB=i;AH=BB;AL=0;while(1){var A0=uA[((rW)>>2)];var AX=AL;var AV=(((AX))|0)<(((A0))|0);if(!(AV)){A5=10;break}var BA=AL;var Bz=((nm+BA*4)&4294967295);var By=uA[((Bz)>>2)];var Bx=(By)==0;if(Bx){A5=8}else{A5=6}if(A5==6){var Bw=AL;var Bv=((nm+Bw*4)&4294967295);var Bu=uA[((Bv)>>2)];var Bl=((Bu)&4294967295);var Bj=uA[((Bl)>>2)];var Bh=AH;var Bf=(((Bj))|0)==(((Bh))|0);if(Bf){A5=7;break}}var A3=AL;var A2=(((A3)+1)&4294967295);AL=A2;A5=9;continue}if(A5==7){var Be=AL;var Bd=((nm+Be*4)&4294967295);var Bc=uA[((Bd)>>2)];var Bb=((Bc+10)&4294967295);var Ba=ll[((Bb)>>0)];var A9=oD((Ba),8,0);Bs=A9}else{if(A5==10){Bs=0}}var AS=Bs;AR=AS;var A7=AR;Br=A7;var AP=Br;A6=AP;var Bt=A6;return Bt;return null}function yp(A9,BH,Bl,Bn){var Bk;var Bm;var AU;var A7;var BM;var A4;var B2;var A8;var AJ;Bm=A9;AU=BH;A7=Bl;BM=Bn;var B1=AU;var B0=((B1)&4294967295);var BZ=((B0)&4294967295);var BY=ll[((BZ)>>0)];var BX=oD((BY),8,0);var BW=((nm+BX*4)&4294967295);var BV=uA[((BW)>>2)];var BU=((BV+11)&4294967295);var BT=la[((BU)>>0)];var BA=iB((BT),8,0)==2;var By=AU;if(BA){Bk=1}else{Bk=2}$bb$$bb1$2:do{if(Bk==1){AJ=By;Bk=5;break $bb$$bb1$2}else{if(Bk==2){var Bw=((By+24)&4294967295);var Bu=((Bw)&4294967295);var Bt=ll[((Bu)>>0)];var Bs=oD((Bt),8,0);var Br=((nm+Bs*4)&4294967295);var Bq=uA[((Br)>>2)];var Bp=((Bq+11)&4294967295);var Bo=la[((Bp)>>0)];var Bj=iB((Bo),8,0)==2;if(Bj){Bk=3}else{Bk=4}if(Bk==3){var Bi=AU;var Bh=((Bi+24)&4294967295);AJ=Bh;Bk=5;break $bb$$bb1$2}else{if(Bk==4){B2=0;Bk=21;break $bb$$bb1$2}}}}}while(0);$bb4$$bb21$8:do{if(Bk==5){var Bg=AJ;var Bf=((Bg+1)&4294967295);var Be=ll[((Bf)>>0)];var Bd=oD((Be),8,0);var Bc=(Bd)&15;A8=Bc;var Bb=Bm;var Ba=(Bb)!=0;if(Ba){Bk=6}else{Bk=13}$bb5$$bb12$10:do{if(Bk==6){var A5=BM;var A3=(A5)&1;var A2=(((A3))&255);var A6=iB((A2),8,0)!=0;if(A6){Bk=7}else{Bk=10}$bb6$$bb9$12:do{if(Bk==7){var A1=AU;var A0=((A1+4)&4294967295);var AZ=xV[((A0)>>1)];var AY=oD((AZ),16,0);var AX=(AY)&16;var AW=(((AX))|0)!=0;if(!(AW)){Bk=10;break $bb6$$bb9$12}var AV=Bm;var AT=((AV)&4294967295);var AS=((AT+24)&4294967295);var AR=((AS+40)&4294967295);var AQ=uA[((AR)>>2)];var AP=(AQ)&1;var AO=(((AP))|0)==0;if(!(AO)){Bk=10;break $bb6$$bb9$12}B2=0;Bk=21;break $bb4$$bb21$8}}while(0);var AN=Bm;var AM=((AN)&4294967295);var AL=((AM+24)&4294967295);var AK=((AL+40)&4294967295);var AH=uA[((AK)>>2)];var i=(AH)&2;var e=(((i))|0)!=0;if(!(e)){Bk=13;break $bb5$$bb12$10}var B9=AJ;var B8=((B9+2)&4294967295);var B7=ll[((B8)>>0)];var B6=oD((B7),8,0);var B5=A8;var B4=(((B6))|0)<=(((B5))|0);if(!(B4)){Bk=13;break $bb5$$bb12$10}A8=4}}while(0);var B3=A7;var BS=(((B3))|0)==4;if(BS){Bk=14}else{Bk=15}if(Bk==14){var BR=AJ;var BQ=((BR+2)&4294967295);var BP=ll[((BQ)>>0)];var BO=oD((BP),8,0);var BN=A8;var BL=(((BO))|0)<=(((BN))|0);var BK=oD((BL),1,0);B2=BK}else{if(Bk==15){var BJ=A7;var BI=(((BJ))|0)==3;if(BI){Bk=16}else{Bk=18}$bb15$$bb18$23:do{if(Bk==16){var BG=A8;var BF=(((BG))|0)>3;if(!(BF)){Bk=20;break $bb15$$bb18$23}B2=1;Bk=21;break $bb4$$bb21$8}else{if(Bk==18){var BE=A7;var BC=((qn+BE*4)&4294967295);var BB=uA[((BC)>>2)];var Bz=A8;var Bx=(((BB))|0)>(((Bz))|0);if(!(Bx)){Bk=20;break $bb15$$bb18$23}B2=1;Bk=21;break $bb4$$bb21$8}}}while(0);B2=0}}}}while(0);var Bv=B2;A4=Bv;var BD=A4;var AI=(((BD))&255);return AI;return null}function kG(A9,Bx,Fg,B1){var EJ;var Ec=null;var EK;var AU;var Cp;var EV;var De;var Ba;var AK;var AM;var AR;var CJ;var CL;var Be;var BM;var CK;var B4;var Bw;EK=A9;AU=Bx;Cp=Fg;EV=B1;var CI=EV;var CH=(CI)&255;Be=CH;var CG=EV;var CF=(((CG))|0)>>8;BM=CF;var CE=BM;var CD=(((CE))|0)<=13;var CC=BM;if(CD){EJ=1}else{EJ=73}$bb$$bb76$2:do{if(EJ==1){var CB=(((CC))|0)%7;CL=CB;var CA=CL;var Ex=(((CA))|0)==4;if(Ex){Ec=1;EJ=2}else{Ec=1;EJ=5}if(EJ==2){var Ew=Cp;var Ev=((Ew+24)&4294967295);var Eu=((Ev+6)&4294967295);var Et=uW[((Eu)>>1)];var Es=iB((Et),16,0)!=0;if(Es){EJ=3}else{EJ=4}if(EJ==3){CJ=0;EJ=79;break $bb$$bb76$2}else{if(EJ==4){var AL=CL;Ec=4}}}var Er=Ec==4?AL:(CA);var Eq=(((Er))|0)==5;if(Eq){EJ=6}else{EJ=8}$bb4$$bb6$10:do{if(EJ==6){var Ep=Cp;var Eo=((Ep)&4294967295);var Eb=((Eo+6)&4294967295);var Ea=uW[((Eb)>>1)];var D9=iB((Ea),16,0)!=0;if(!(D9)){EJ=8;break $bb4$$bb6$10}CJ=0;EJ=79;break $bb$$bb76$2}}while(0);var D8=CL;var D7=(((D8))|0)==7;if(D7){Ec=8;EJ=9}else{Ec=8;EJ=13}$bb7$$bb10$14:do{if(EJ==9){var D6=Cp;var D5=((D6+24)&4294967295);var D4=((D5+6)&4294967295);var D3=uW[((D4)>>1)];var D2=iB((D3),16,0)!=0;if(D2){EJ=11}else{EJ=10}$bb9$$bb8$16:do{if(EJ==10){var DW=Cp;var DV=((DW+48)&4294967295);var DU=((DV+6)&4294967295);var DT=uW[((DU)>>1)];var DS=iB((DT),16,0)!=0;if(DS){EJ=11;break $bb9$$bb8$16}var Di=CL;Ec=12;EJ=13;break $bb7$$bb10$14}}while(0);CJ=0;EJ=79;break $bb$$bb76$2}}while(0);var DR=Ec==12?Di:(D8);var DQ=(((DR))|0)==6;if(DQ){EJ=14}else{EJ=19}$bb11$$bb17$21:do{if(EJ==14){CL=2;while(1){var DP=CL;var DO=(((DP)-1)&4294967295);var DN=Cp;var DM=((DN+24*DO)&4294967295);var DL=((DM+6)&4294967295);var DK=uW[((DL)>>1)];var DJ=iB((DK),16,0)!=0;if(DJ){EJ=16;break}var DI=CL;var DH=(((DI)-1)&4294967295);var DG=Cp;var DF=((DG+24*DH)&4294967295);var DE=((DF)&4294967295);var DD=ll[((DE)>>0)];var DC=oD((DD),8,0);var DB=((nm+DC*4)&4294967295);var DA=uA[((DB)>>2)];var Dz=((DA+11)&4294967295);var Dy=la[((Dz)>>0)];var Dx=iB((Dy),8,0)==2;var Dh=CL;if(Dx){Ec=17;EJ=20;break $bb11$$bb17$21}else{Ec=17}var Dw=(((Dh)+1)&4294967295);CL=Dw;EJ=15;continue}CJ=0;EJ=79;break $bb$$bb76$2}else{if(EJ==19){var Dv=CL;var Du=((kw+Dv*4)&4294967295);var Dt=uA[((Du)>>2)];CL=Dt;Ec=19}}}while(0);var Ds=Ec==19?Dt:(Dh);var Dr=Cp;Bw=Dr;var Dq=(((Ds)-1)&4294967295);var Dp=Cp;var Do=((Dp+24*Dq)&4294967295);Cp=Do;var Dn=(((Ds))|0)==0;if(Dn){EJ=21}else{EJ=23}$bb19$$bb21$30:do{if(EJ==21){var Dm=Cp;var Dl=((Dm)&4294967295);var Dk=la[((Dl)>>0)];var Dj=iB((Dk),8,0)==1;if(!(Dj)){EJ=23;break $bb19$$bb21$30}var Dg=Cp;var Df=((Dg+-24)&4294967295);Cp=Df}}while(0);var Dd=AU;var Dc=(Dd)&256;var Db=(((Dc))|0)!=0;if(Db){EJ=24}else{EJ=25}if(EJ==24){var Da=Cp;var C9=((Da)&4294967295);var C8=ll[((C9)>>0)];var C7=oD((C8),8,0);var C6=((nm+C7*4)&4294967295);var C5=uA[((C6)>>2)];var C4=Cp;var C3=((C4+8)&4294967295);uA[((C3)>>2)]=C5}var C2=Cp;var C1=((C2+8)&4294967295);var C0=uA[((C1)>>2)];B4=C0;var CZ=BM;var CY=(((CZ))|0)<=6;if(CY){EJ=26}else{EJ=32}if(EJ==26){var CX=Be;var CW=((nm+CX*4)&4294967295);var CV=uA[((CW)>>2)];var CU=((CV)&4294967295);var CT=uA[((CU)>>2)];var CS=B4;var CR=((CS)&4294967295);var CQ=uA[((CR)>>2)];var CP=(((CT))|0)==(((CQ))|0);if(CP){EJ=27}else{EJ=28}if(EJ==27){AR=1;CJ=1}else{if(EJ==28){AR=0;var CO=CL;var CN=(((CO))|0)==0;if(CN){EJ=29}else{EJ=31}$bb30$$bb32$42:do{if(EJ==29){var CM=B4;var Cz=((CM+11)&4294967295);var Cy=la[((Cz)>>0)];var Cx=iB((Cy),8,0)==2;if(!(Cx)){EJ=31;break $bb30$$bb32$42}var Cw=B4;var Cv=((Cw+13)&4294967295);var Cu=ll[((Cv)>>0)];var Ct=oD((Cu),8,0);var Cs=Be;var Cr=(((Ct))|0)==(((Cs))|0);var Cq=oD((Cr),1,0);CJ=Cq;EJ=79;break $bb$$bb76$2}}while(0);var Co=B4;var Cn=((Co+12)&4294967295);var Cm=ll[((Cn)>>0)];var Cl=oD((Cm),8,0);var Ck=Be;var Cj=(((Cl))|0)==(((Ck))|0);var Ci=oD((Cj),1,0);CJ=Ci}}}else{if(EJ==32){var Ch=EV;var Cg=(Ch)&31;Be=Cg;var Cf=EV;var Ce=(Cf)&224;if(Ce==0){EJ=33}else{if(Ce==13){EJ=66}else{if(Ce==32){EJ=34}else{if(Ce==64){EJ=35}else{if(Ce==128){EJ=36}else{EJ=72}}}}}$bb75$$bb34$$bb69$$bb35$$bb36$$bb37$47:do{if(EJ==72){CJ=0;EJ=79;break $bb$$bb76$2}else{if(EJ==33){var Cd=B4;var Cc=((Cd+11)&4294967295);var Cb=ll[((Cc)>>0)];var Ca=oD((Cb),8,0);var B9=Be;var B8=(((Ca))|0)==(((B9))|0);var B7=oD((B8),1,0);CJ=B7;EJ=79;break $bb$$bb76$2}else{if(EJ==34){var B6=B4;var B5=((B6+4)&4294967295);var B3=xk[((B5)>>2)];var B2=(((B3))>>>0)>>>16;var B0=(B2)&15;var BZ=Be;var BY=(((B0))|0)==(((BZ))|0);var BX=oD((BY),1,0);CJ=BX;EJ=79;break $bb$$bb76$2}else{if(EJ==35){var BW=B4;var BV=((BW+4)&4294967295);var BU=uA[((BV)>>2)];var BT=Be;var BS=1<<(BT);var BR=(BS)&(BU);var BQ=(((BR))|0)!=0;var BP=oD((BQ),1,0);CJ=BP;EJ=79;break $bb$$bb76$2}else{if(EJ==36){var BO=Be;if(BO==0){EJ=37}else{if(BO==1){EJ=37}else{if(BO==2){EJ=37}else{if(BO==3){EJ=37}else{if(BO==4){EJ=37}else{if(BO==5){EJ=38}else{if(BO==6){EJ=43}else{if(BO==7){EJ=44}else{if(BO==8){EJ=45}else{if(BO==9){EJ=50}else{if(BO==10){EJ=55}else{if(BO==11){EJ=56}else{if(BO==12){EJ=60}else{EJ=66;break $bb75$$bb34$$bb69$$bb35$$bb36$$bb37$47}}}}}}}}}}}}}if(EJ==37){var BN=Be;var BL=EK;var BK=Cp;var BJ=yp(BL,BK,BN,0);var BI=oD((BJ),8,0);CJ=BI;EJ=79;break $bb$$bb76$2}else{if(EJ==38){var BH=B4;var BG=((BH+11)&4294967295);var BF=la[((BG)>>0)];var BE=iB((BF),8,0)==0;if(BE){EJ=40}else{EJ=39}$bb41$$bb40$56:do{if(EJ==39){var BD=Bw;var BC=((BD+4)&4294967295);var BB=xV[((BC)>>1)];var BA=oD((BB),16,0);var Bz=(BA)&8192;var By=(((Bz))|0)!=0;if(By){EJ=40;break $bb41$$bb40$56}AM=0;EJ=42;break $bb41$$bb40$56}}while(0);if(EJ==40){AM=1}var Bv=AM;var Bu=oD((Bv),8,0);CJ=Bu;EJ=79;break $bb$$bb76$2}else{if(EJ==43){var Bt=Cp;var Bs=((Bt+6)&4294967295);var Br=uW[((Bs)>>1)];var Bq=iB((Br),16,0)!=0;var Bp=oD((Bq),1,0);CJ=Bp;EJ=79;break $bb$$bb76$2}else{if(EJ==44){var Bo=Cp;var Bm=((Bo+6)&4294967295);var Bk=uW[((Bm)>>1)];var A8=iB((Bk),16,0)==0;var A7=oD((A8),1,0);CJ=A7;EJ=79;break $bb$$bb76$2}else{if(EJ==45){var A6=Cp;var A5=((A6+24)&4294967295);var A4=((A5+6)&4294967295);var A3=uW[((A4)>>1)];var A2=iB((A3),16,0)!=0;if(A2){EJ=47}else{EJ=46}$bb48$$bb47$65:do{if(EJ==46){var A1=Cp;var AZ=((A1+24)&4294967295);var AX=((AZ+8)&4294967295);var AJ=uA[((AX)>>2)];var AI=((AJ+11)&4294967295);var AH=la[((AI)>>0)];var i=iB((AH),8,0)==0;if(i){EJ=47;break $bb48$$bb47$65}AK=0;EJ=49;break $bb48$$bb47$65}}while(0);if(EJ==47){AK=1}var e=AK;var Fv=oD((e),8,0);CJ=Fv;EJ=79;break $bb$$bb76$2}else{if(EJ==50){var Fu=Cp;var Ft=((Fu+6)&4294967295);var Fr=uW[((Ft)>>1)];var Fp=iB((Fr),16,0)!=0;if(Fp){EJ=51}else{EJ=52}if(EJ==51){CJ=0;EJ=79;break $bb$$bb76$2}else{if(EJ==52){while(1){var Ff=Cp;var Fe=((Ff+-24)&4294967295);Cp=Fe;var Fd=Cp;var Fc=((Fd+1)&4294967295);var Fb=ll[((Fc)>>0)];var Fa=oD((Fb),8,0);var E9=(Fa)&15;var E8=(((E9))|0)>3;if(E8){EJ=53;break}var E6=Cp;var E4=((E6+6)&4294967295);var Bn=uW[((E4)>>1)];var Bl=iB((Bn),16,0)==0;if(Bl){EJ=52;continue}else{EJ=66;break $bb75$$bb34$$bb69$$bb35$$bb36$$bb37$47}}CJ=1;EJ=79;break $bb$$bb76$2}}}else{if(EJ==55){var Bj=B4;var Bi=((Bj+11)&4294967295);var Bh=la[((Bi)>>0)];var Bg=iB((Bh),8,0)!=2;var Bf=oD((Bg),1,0);CJ=Bf;EJ=79;break $bb$$bb76$2}else{if(EJ==56){while(1){var Bd=Cp;var Bc=((Bd+24)&4294967295);Cp=Bc;var Bb=Cp;var A0=((Bb)&4294967295);var AY=ll[((A0)>>0)];var AW=oD((AY),8,0);var AV=((nm+AW*4)&4294967295);var AT=uA[((AV)>>2)];var AS=Cp;var AQ=((AS+8)&4294967295);uA[((AQ)>>2)]=AT;var AP=Cp;var AO=((AP+6)&4294967295);var AN=uW[((AO)>>1)];var Fs=iB((AN),16,0)!=0;if(Fs){EJ=57;break}var Fq=Cp;var Fo=((Fq+8)&4294967295);var Fn=uA[((Fo)>>2)];var Fm=((Fn+11)&4294967295);var Fl=la[((Fm)>>0)];var Fk=iB((Fl),8,0)==2;if(Fk){EJ=59;break}else{EJ=56;continue}}if(EJ==57){CJ=1;EJ=79;break $bb$$bb76$2}else{if(EJ==59){CJ=0;EJ=79;break $bb$$bb76$2}}}else{if(EJ==60){var Fj=B4;var Fi=((Fj+11)&4294967295);var Fh=la[((Fi)>>0)];var E7=iB((Fh),8,0)==2;if(E7){EJ=63}else{EJ=61}$bb66$$bb64$86:do{if(EJ==61){var E5=B4;var E3=((E5+11)&4294967295);var E2=la[((E3)>>0)];var E1=iB((E2),8,0)==3;if(E1){EJ=63;break $bb66$$bb64$86}var E0=B4;var EZ=((E0+4)&4294967295);var EY=uA[((EZ)>>2)];var EX=(EY)&16;var EW=(((EX))|0)!=0;if(EW){EJ=63;break $bb66$$bb64$86}Ba=0;EJ=65;break $bb66$$bb64$86}}while(0);if(EJ==63){Ba=1}var EU=Ba;var ET=oD((EU),8,0);CJ=ET;EJ=79;break $bb$$bb76$2}}}}}}}}}}}}}}}while(0);CK=0;while(1){var ES=Cp;var ER=((ES+8)&4294967295);var EQ=uA[((ER)>>2)];var EP=((EQ+11)&4294967295);var EO=la[((EP)>>0)];var EN=iB((EO),8,0)==2;if(EN){EJ=68}else{EJ=69}if(EJ==68){var EM=CK;var EL=(((EM)+1)&4294967295);CK=EL}var EH=Cp;var EG=((EH+6)&4294967295);var EF=uW[((EG)>>1)];var EE=iB((EF),16,0)!=0;if(EE){EJ=71;break}var ED=Cp;var EC=((ED+-24)&4294967295);Cp=EC;EJ=67;continue}var EB=CK;var EA=(((EB))|0)==1;var Ez=oD((EA),1,0);CJ=Ez}}}else{if(EJ==73){var Ey=(((CC))|0)==15;if(Ey){EJ=74}else{EJ=78}$bb77$$bb81$102:do{if(EJ==74){var Em=Be;if(Em==1){EJ=75}else{if(Em==2){EJ=76}else{if(Em==3){EJ=77}else{EJ=78;break $bb77$$bb81$102}}}if(EJ==75){var El=AU;var Ek=(El)&1;var Ej=(((Ek))&255);var Ei=oD((Ej),8,0);CJ=Ei;EJ=79;break $bb$$bb76$2}else{if(EJ==76){var Eh=uA[((k5)>>2)];var Eg=((Eh+112)&4294967295);var Ef=((Eg)&4294967295);var Ee=uA[((Ef)>>2)];var Ed=(((Ee))|0)!=0;var D1=oD((Ed),1,0);CJ=D1;EJ=79;break $bb$$bb76$2}else{if(EJ==77){var D0=la[((((jg)&4294967295))>>0)];var DZ=iB((D0),8,0)!=0;var DY=oD((DZ),1,0);CJ=DY;EJ=79;break $bb$$bb76$2}}}}}while(0);CJ=0}}}while(0);var DX=CJ;De=DX;var En=De;var EI=(((En))&255);return EI;return null}function aC(Bx,Bv,BM,AJ){var Bi;var AV;var AK;var Bu;var A6;var i;var Bw;var Bh;AV=Bx;AK=Bv;Bu=BM;A6=AJ;var BL=A6;var BK=(((BL))|0)==2;if(BK){Bi=1}else{Bi=2}if(Bi==1){var BJ=AK;var BI=((BJ)&4294967295);var BH=uA[((BI)>>2)];var BG=(BH)|2;var BF=AK;var BE=((BF)&4294967295);uA[((BE)>>2)]=BG;var BD=AV;var BC=((BD+24)&4294967295);var Bt=((BC+8)&4294967295);var Bs=uA[((Bt)>>2)];var Br=((Bs+12)&4294967295);var Bq=ll[((Br)>>0)];var Bp=oD((Bq),8,0);Bw=Bp}else{if(Bi==2){var Bo=AV;var Bn=((Bo+-24)&4294967295);var Bm=((Bn+8)&4294967295);var Bl=uA[((Bm)>>2)];var Bk=((Bl+13)&4294967295);var Bg=ll[((Bk)>>0)];var Bf=oD((Bg),8,0);Bw=Bf}}var Be=Bw;var Bd=(((Be)-28)&4294967295);Bw=Bd;var Bc=Bw;var Bb=(((Bc))|0)>=0;var Ba=Bw;var A9=(((Ba))|0)<=5;var Bj=(Bb)&(A9);if(Bj){Bi=4}else{Bi=5}if(Bi==4){var A8=Bu;var A7=uA[((A8)>>2)];var A5=Bw;var A4=(((A5)*2)&4294967295);var A3=((A7+2*A4)&4294967295);i=A3;var A2=A6;var A1=i;var A0=((A1+2)&4294967295);var AZ=xV[((A0)>>1)];var AY=oD((AZ),16,0);var AX=(AY)&15;var AW=(((AX)*65536)&4294967295);var AU=i;var AT=((AU+4)&4294967295);var AS=xV[((AT)>>1)];var AR=oD((AS),16,0);var AQ=(((AW)+(AR))&4294967295);var AP=(((AQ)*4)&4294967295);var AO=AK;var AN=((AO+68)&4294967295);var AM=((AN+A2*4)&4294967295);uA[((AM)>>2)]=AP;var AL=i;var AI=((AL+2)&4294967295);var AH=xV[((AI)>>1)];var e=oD((AH),16,0)>>>4;var BT=(((e))&255);Bh=BT;var BS=A6;var BR=Bh;var BQ=iB((BR),8,0);var BP=AK;var BO=((BP+88)&4294967295);var BN=((BO+BS*4)&4294967295);uA[((BN)>>2)]=BQ}var BB=Bu;var BA=uA[((BB)>>2)];var Bz=((BA+24)&4294967295);var By=Bu;uA[((By)>>2)]=Bz;return;return}function m1(AI,A8){var A6;var A2;var AJ;var Bt;var AW;var Bg;var Bw;var A9;A2=AI;AJ=A8;var Bv=AJ;var Bu=(((Bv))|0)==0;if(Bu){A6=1}else{A6=2}if(A6==1){ud(((mG)&4294967295),0,256,1,0)}var Bs=A2;var Br=((ur+Bs*48)&4294967295);var Bq=((Br+40)&4294967295);var Bp=uA[((Bq)>>2)];Bg=Bp;var Bo=Bg;var Bm=(((Bo))|0)>0;var Bk=oD((Bm),1,0);Bt=Bk;var A7=iB((Bk),8,0)!=0;if(A7){A6=3}else{A6=4}if(A6==3){var Bi=Bg;var A3=(((Bi)-1)&4294967295);m1(A3,1)}var A0=A2;var AY=((ur+A0*48)&4294967295);var AV=((AY+32)&4294967295);var AT=uA[((AV)>>2)];A9=AT;AW=0;var AR=A2;var AP=((ur+AR*48)&4294967295);var AN=((AP+36)&4294967295);var AL=uA[((AN)>>2)];var AK=AW;var e=(((AL))|0)>(((AK))|0);if(e){A6=5}else{A6=10}$bb4$$return$8:do{if(A6==5){while(1){var BF=A9;var BE=AW;var BD=((BF+16*BE)&4294967295);var BC=((BD+10)&4294967295);var BB=ll[((BC)>>0)];var BA=oD((BB),8,0);Bw=BA;var Bz=Bw;var By=A9;var Bx=AW;var Bn=((By+16*Bx)&4294967295);var Bl=((nm+Bz*4)&4294967295);uA[((Bl)>>2)]=Bn;var Bj=uA[((rW)>>2)];var Bh=Bw;var Bf=(((Bh))|0)>(((Bj))|0);if(Bf){A6=6}else{A6=7}if(A6==6){var Be=Bw;uA[((rW)>>2)]=Be}var Bd=AJ;var Bc=(((Bd))|0)==0;if(Bc){A6=8}else{A6=9}if(A6==8){var Bb=Bw;var Ba=Bw;var A5=((mG+Ba)&4294967295);var A4=la[((A5)>>0)];var A1=(A4)|1;var AZ=((mG+Bb)&4294967295);la[((AZ)>>0)]=A1}var AX=AW;var AU=(((AX)+1)&4294967295);AW=AU;var AS=A2;var AQ=((ur+AS*48)&4294967295);var AO=((AQ+36)&4294967295);var AM=uA[((AO)>>2)];var AH=AW;var i=(((AM))|0)>(((AH))|0);if(i){A6=5;continue}else{A6=10;break $bb4$$return$8}}}}while(0);return;return}function fg(AK){var AH;var AJ;AJ=AK;uA[((rW)>>2)]=0;var i=AJ;m1(i,0);var e=uA[((rW)>>2)];var AL=(((e)+1)&4294967295);uA[((rW)>>2)]=AL;var AI=AJ;uA[((mp)>>2)]=AI;return;return}function lw(A9,Bx,Io,FC){var Bw=vp;vp+=44;n1(Bw,0,44);var HO;var G8=null;var Cb;var F4;var Dm;var BX;var CL;var Hb;var CE;var BU;var Dl;var A2;var G3;var Cr;var H3;var CU;var Dk;var FO;var H2;var CY;var Bf;var GE;var Dj;var EL;var Gh;var Cc;var HQ;var AT;var CC;var Ch;var AK;var AL;var HJ;var Cd;var HL=Bw;var B4;var BN;var Ca;var EE;var Be;var B9;var Dy;var H1;var IC;var D4=Bw+4;HQ=A9;AT=Bx;CC=Io;Ch=FC;IC=0;var Di=CC;var Dh=((Di+8)&4294967295);var Dg=uA[((Dh)>>2)];Cd=Dg;var Df=Ch;var De=Df;ud(De,0,152,1,0);var Dd=Cd;var HA=((Dd+14)&4294967295);var Hz=ll[((HA)>>0)];var Hy=oD((Hz),8,0);var Hx=Ch;var Hw=((Hx+4)&4294967295);var Hv=((Hw+40)&4294967295);uA[((Hv)>>2)]=Hy;var Hu=Cd;var Ht=((Hu+15)&4294967295);var Hs=ll[((Ht)>>0)];var Hr=oD((Hs),8,0);var G4=Ch;var G2=((G4+4)&4294967295);var G1=((G2+36)&4294967295);uA[((G1)>>2)]=Hr;var G0=Cd;var GZ=((G0+8)&4294967295);var GY=uW[((GZ)>>1)];var GX=iB((GY),16,0)==0;if(GX){HO=87}else{HO=1}$return$$bb$2:do{if(HO==1){B9=0;var GW=uA[((I)>>2)];var GV=Cd;var GU=((GV+8)&4294967295);var Gy=xV[((GU)>>1)];var Gx=oD((Gy),16,0);var Gw=((GW+2*Gx)&4294967295);uA[((HL)>>2)]=Gw;var Gv=B9;var Gu=(((Gv))|0)!=1;if(!(Gu)){HO=87;break $return$$bb$2}$bb1$4:while(1){var Gt=uA[((HL)>>2)];var Gs=uW[((Gt)>>1)];B4=Gs;var Gr=B4;var Gq=oD((Gr),16,0)>>>8;var Gp=oD((Gq),16,0);var F2=(Gp)&15;BN=F2;Ca=0;var F1=B4;var F0=oD((F1),16,0)>>>12;var FZ=oD((F0),16,0);if(FZ==0){HO=3}else{if(FZ==1){HO=25}else{if(FZ==2){HO=29}else{if(FZ==3){HO=29}else{if(FZ==6){HO=56}else{if(FZ==9){HO=60}else{if(FZ==10){HO=65}else{if(FZ==11){HO=69}else{if(FZ==12){HO=69}else{if(FZ==13){HO=69}else{if(FZ==14){HO=69}else{if(FZ==15){HO=69}else{HO=77}}}}}}}}}}}}$bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6:do{if(HO==77){var Du=B4;var Ds=oD((Du),16,0);var Db=Cd;CL=Db;Hb=Ds;var Da=CL;var C9=((Da)&4294967295);var C8=uA[((C9)>>2)];Cb=C8;BX=0;while(1){var C7=BX;var C6=BX;var C5=(((C6)*8)&4294967295);var C4=Cb;var C3=(((C4))>>>0)>>>(((C5))>>>0);var C2=(((C3))&255);var Ev=((aq+C7)&4294967295);la[((Ev)>>0)]=C2;var Et=BX;var Eq=(((Et)+1)&4294967295);BX=Eq;var Eo=(((Eq))|0)<=2;if(Eo){HO=78;continue}else{HO=79;break}}la[((((aq+4)&4294967295))>>0)]=0;Dm=((aq)&4294967295);var Em=Dm;F4=Em;var Cp=F4;var Ek=uA[((ta)>>2)];var Ei=Hb;var Eh=Am(Ek,((gU)&4294967295),Ei,Cp)}else{if(HO==3){var FY=B4;var FX=oD((FY),16,0);var FW=(FX)&255;Be=FW;var FV=BN;var FU=(((FV))|0)==0;if(FU){HO=4}else{HO=9}if(HO==4){var FT=Be;if(FT==1){HO=5}else{if(FT==2){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}else{HO=6}}if(HO==6){var Fv=B4;var Fu=oD((Fv),16,0);var Ft=Cd;Gh=Ft;Cc=Fu;var Fs=Gh;var Fr=((Fs)&4294967295);var Fq=uA[((Fr)>>2)];Bf=Fq;EL=0;while(1){var Fp=EL;var Fo=EL;var Fn=(((Fo)*8)&4294967295);var Fm=Bf;var Fb=(((Fm))>>>0)>>>(((Fn))>>>0);var Fa=(((Fb))&255);var E9=((aq+Fp)&4294967295);la[((E9)>>0)]=Fa;var E8=EL;var E7=(((E8)+1)&4294967295);EL=E7;var E6=(((E7))|0)<=2;if(E6){HO=7;continue}else{HO=8;break}}la[((((aq+4)&4294967295))>>0)]=0;Dj=((aq)&4294967295);var E5=Dj;GE=E5;var E1=GE;var E4=uA[((ta)>>2)];var E3=Cc;var E2=Am(E4,((gU)&4294967295),E3,E1)}else{if(HO==5){B9=1}}}else{if(HO==9){var EP=BN;var EO=(((EP))|0)==5;if(EO){HO=10}else{HO=12}if(HO==10){var EN=CC;var EM=((EN+24)&4294967295);var EK=((EM)&4294967295);var EJ=ll[((EK)>>0)];var EI=oD((EJ),8,0);var EH=((nm+EI*4)&4294967295);var EG=uA[((EH)>>2)];var EF=((EG+11)&4294967295);var Er=la[((EF)>>0)];var Ep=iB((Er),8,0)==2;if(!(Ep)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var En=Ch;var El=((En+4)&4294967295);var Ej=((El+16)&4294967295);var Eg=Be;uA[((Ej)>>2)]=Eg}else{if(HO==12){var Ef=BN;var Ed=(((Ef))|0)==13;if(Ed){HO=13}else{HO=16}if(HO==13){Dy=0;var Eb=Dy;var Ea=Be;var DV=(((Eb))|0)<(((Ea))|0);var DT=Dy;var DR=(((DT))|0)<=15;var CJ=(DV)&(DR);if(CJ){HO=14}else{HO=15}$bb14$$bb17$27:do{if(HO==14){while(1){var DP=uA[((HL)>>2)];var DN=((DP+2)&4294967295);uA[((HL)>>2)]=DN;var DL=Dy;var DJ=uA[((HL)>>2)];var DH=((DJ)&4294967295);var DF=xV[((DH)>>1)];var DE=oD((DF),16,0)>>>8;var CQ=(((DE))&255);var CP=Ch;var CO=((CP+132)&4294967295);var CN=((CO+DL)&4294967295);la[((CN)>>0)]=CQ;var CM=Dy;var CK=(((CM)+1)&4294967295);var CI=uA[((HL)>>2)];var CH=((CI)&4294967295);var CG=uW[((CH)>>1)];var CF=(((CG))&255);var CB=Ch;var CA=((CB+132)&4294967295);var Cz=((CA+CK)&4294967295);la[((Cz)>>0)]=CF;var Cy=Dy;var Cx=(((Cy)+2)&4294967295);Dy=Cx;var Cw=Dy;var Cv=Be;var Cu=(((Cw))|0)<(((Cv))|0);var Ct=Dy;var Cs=(((Ct))|0)<=15;var Dc=(Cu)&(Cs);if(Dc){HO=14;continue}else{HO=15;break $bb14$$bb17$27}}}}while(0);var Co=Dy;var Cn=Ch;var Cm=((Cn+132)&4294967295);var Cl=((Cm+Co)&4294967295);la[((Cl)>>0)]=0}else{if(HO==16){var Ck=BN;var Cj=(((Ck))|0)<=15;if(Cj){HO=17}else{HO=22}if(HO==17){var Ci=BN;var Cg=(((Ci))|0)==12;if(Cg){HO=18}else{HO=19}if(HO==18){var Cf=Ch;var Ce=((Cf+4)&4294967295);var B6=((Ce+4)&4294967295);var B5=Be;uA[((B6)>>2)]=B5}var B3=BN;var B2=Ch;var B1=((B2+4)&4294967295);var B0=((B1+B3*4)&4294967295);var BZ=Be;uA[((B0)>>2)]=BZ;var BY=BN;var BW=(((BY))|0)==1;if(!(BW)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var BV=AT;var BT=(BV)&256;var BS=(((BT))|0)!=0;if(!(BS)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}B9=1}else{if(HO==22){var BR=B4;var BQ=oD((BR),16,0);var BP=Cd;H2=BP;CY=BQ;var BO=H2;var BM=((BO)&4294967295);var BL=uA[((BM)>>2)];H3=BL;FO=0;while(1){var BK=FO;var BJ=FO;var BH=(((BJ)*8)&4294967295);var BG=H3;var BF=(((BG))>>>0)>>>(((BH))>>>0);var BE=(((BF))&255);var BD=((aq+BK)&4294967295);la[((BD)>>0)]=BE;var BC=FO;var BB=(((BC)+1)&4294967295);FO=BB;var BA=(((BB))|0)<=2;if(BA){HO=23;continue}else{HO=24;break}}la[((((aq+4)&4294967295))>>0)]=0;Dk=((aq)&4294967295);var Bz=Dk;CU=Bz;var Cq=CU;var By=uA[((ta)>>2)];var Bv=CY;var Bu=Am(By,((gU)&4294967295),Bv,Cq)}}}}}}}}}else{if(HO==25){var Bt=HQ;var Bs=(Bt)==0;if(Bs){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var Br=BN;var Bq=(((Br))|0)<=7;if(!(Bq)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var Bp=BN;var Bo=(Bp)&7;var Bm=HQ;var Bk=CC;var A8=yp(Bm,Bk,Bo,1);HJ=A8;var A7=HJ;var HP=iB((A7),8,0)!=0;if(!(HP)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var A6=B4;var A5=oD((A6),16,0);var A4=(A5)&255;var A3=Ch;var A1=((A3+4)&4294967295);var A0=((A1+4)&4294967295);uA[((A0)>>2)]=A4;B9=1}else{if(HO==29){Ca=0;EE=1;var AZ=B4;var AX=oD((AZ),16,0);var AJ=(AX)&57344;var AI=(((AJ))|0)==8192;if(AI){G8=29;HO=31}else{G8=29;HO=43}$bb33$$bb56$48:do{if(HO==31){$bb33$49:while(1){var AH=G8==30?B8:(1);var i=Ca;var e=(((i))|0)!=0;var C1=iB((AH),8,0)!=0;if(e){HO=32}else{HO=37}if(HO==32){if(C1){HO=34}else{HO=33}$bb38$$bb36$53:do{if(HO==33){var IE=B4;var ID=oD((IE),16,0);var IB=(ID)&4095;var IA=HQ;var Iy=AT;var In=CC;var Im=kG(IA,Iy,In,IB);var C0=iB((Im),8,0)!=0;if(C0){HO=34;break $bb38$$bb36$53}AL=0;HO=36;break $bb38$$bb36$53}}while(0);if(HO==34){AL=1}var Il=AL;EE=Il}else{if(HO==37){var EZ=(C1)^1;var HB=oD((EZ),1,0);var CW=iB((HB),8,0)!=0;if(CW){HO=40}else{HO=38}$bb52$$bb46$60:do{if(HO==38){var Ik=B4;var Ij=oD((Ik),16,0);var Ii=(Ij)&4095;var Ih=HQ;var Ig=AT;var If=CC;var Id=kG(Ih,Ig,If,Ii);var CV=iB((Id),8,0)!=0;var CX=(CV)^1;var BI=oD((CX),1,0);var CT=iB((BI),8,0)!=0;if(CT){HO=40;break $bb52$$bb46$60}AK=1;HO=41;break $bb52$$bb46$60}}while(0);if(HO==40){AK=0}var Bn=AK;EE=Bn}}var Bl=B4;var Bj=oD((Bl),16,0);var Bi=(Bj)&4096;Ca=Bi;var Bh=uA[((HL)>>2)];var Bg=((Bh+2)&4294967295);uA[((HL)>>2)]=Bg;var Bd=uA[((HL)>>2)];var Bc=uW[((Bd)>>1)];B4=Bc;var Bb=B4;var Ba=oD((Bb),16,0);var AY=(Ba)&57344;var AW=(((AY))|0)==8192;if(!(AW)){HO=43;break $bb33$$bb56$48}var B8=EE;G8=30;HO=31;continue $bb33$49}}}while(0);var AV=EE;var CS=iB((AV),8,0)!=0;var CR=(CS)^1;var FA=oD((CR),1,0);var CD=iB((FA),8,0)!=0;if(CD){HO=44}else{HO=55}$bb61$$bb65$69:do{if(HO==44){var AU=B4;var AS=oD((AU),16,0);var AR=(AS)&63488;var AQ=(((AR))|0)==26624;var AP=uA[((HL)>>2)];if(AQ){HO=45}else{HO=46}if(HO==45){var AO=B4;var AN=oD((AO),16,0);var Iz=(AN)&255;var Ix=((AP+2*Iz)&4294967295);uA[((HL)>>2)]=Ix}else{if(HO==46){var Iw=uA[((HL)>>2)];CE=Iw;var Iv=CE;var Iu=xV[((Iv)>>1)];var It=oD((Iu),16,0);A2=It;var Is=A2;var Ir=(((Is))|0)>>12;Cr=Ir;var Iq=Cr;var Ip=(((Iq))|0)<=10;if(Ip){HO=47}else{HO=48}if(HO==47){var Ie=Cr;var Ic=((gq+Ie)&4294967295);var Ib=la[((Ic)>>0)];var Ia=iB((Ib),8,0);Dl=Ia}else{if(HO==48){var H9=CE;var H8=((H9+4)&4294967295);var H7=xV[((H8)>>1)];var H6=oD((H7),16,0);G3=H6;var H5=G3;var H4=(((H5))|0)>>12;var H0=(((H4))|0)==15;if(H0){HO=49}else{HO=50}if(HO==49){Dl=4}else{if(HO==50){var HZ=G3;var HY=(((HZ))|0)==2;if(HY){HO=51}else{HO=52}if(HO==51){Dl=3}else{if(HO==52){Dl=2}}}}}}var HX=Dl;BU=HX;var CZ=BU;var HW=((AP+2*CZ)&4294967295);uA[((HL)>>2)]=HW;var HV=uA[((HL)>>2)];var HU=((HV)&4294967295);var HT=xV[((HU)>>1)];var HS=oD((HT),16,0);var HR=(HS)&65024;var HN=(((HR))|0)==24576;if(!(HN)){HO=55;break $bb61$$bb65$69}var HM=uA[((HL)>>2)];var HK=((HM+2)&4294967295);uA[((HL)>>2)]=HK}}}}while(0);var HI=uA[((HL)>>2)];var HH=((HI+-2)&4294967295);uA[((HL)>>2)]=HH}else{if(HO==56){var HG=BN;var HF=(((HG))|0)>>1;if(HF==0){HO=57}else{if(HF==6){HO=59}else{if(HF==5){HO=58}else{HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}}}if(HO==57){var HE=uA[((HL)>>2)];var HD=B4;var HC=oD((HD),16,0);var Hq=(HC)&255;var Hp=(((Hq)-1)&4294967295);var Ho=((HE+2*Hp)&4294967295);uA[((HL)>>2)]=Ho}else{if(HO==59){var Hl=CC;var Hk=Ch;aC(Hl,Hk,HL,3)}else{if(HO==58){var Hn=CC;var Hm=Ch;aC(Hn,Hm,HL,2)}}}}else{if(HO==60){var Hj=B4;var Hi=oD((Hj),16,0);var Hg=(Hi)&15;var GT=(((Hg)*65536)&4294967295);var GS=uA[((HL)>>2)];var GR=((GS+2)&4294967295);var GQ=xV[((GR)>>1)];var GP=oD((GQ),16,0);var GO=(((GT)+(GP))&4294967295);Be=GO;var GN=uA[((HL)>>2)];var GM=((GN+2)&4294967295);uA[((HL)>>2)]=GM;var GL=BN;if(GL==1){HO=61}else{if(GL==2){HO=63}else{if(GL==3){HO=64}else{HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}}}if(HO==61){var GJ=IC;var Go=(((GJ))|0)<=9;if(!(Go)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var Gn=IC;var Gm=uA[((HL)>>2)];var Gl=((D4+Gn*4)&4294967295);uA[((Gl)>>2)]=Gm;var Gk=IC;var Gj=(((Gk)+1)&4294967295);IC=Gj;var Gi=uA[((I)>>2)];var Gg=Be;var Gf=((Gi+2*Gg)&4294967295);var Gd=((Gf+-2)&4294967295);uA[((HL)>>2)]=Gd}else{if(HO==63){var FS=Ch;var FR=((FS+124)&4294967295);var FQ=Be;uA[((FR)>>2)]=FQ}else{if(HO==64){var FP=Ch;var FN=((FP+128)&4294967295);var FM=Be;uA[((FN)>>2)]=FM}}}}else{if(HO==65){var FL=BN;var FK=(((FL))|0)==1;if(FK){HO=66}else{HO=67}if(HO==66){Dy=0}else{if(HO==67){Dy=2}}var FJ=Dy;var FH=uA[((HL)>>2)];var Hh=((FH)&4294967295);var Hf=xV[((Hh)>>1)];var He=oD((Hf),16,0);var Hd=(He)&255;var Hc=(((Hd)*65536)&4294967295);var Ha=uA[((HL)>>2)];var G9=((Ha+2)&4294967295);var G7=xV[((G9)>>1)];var G6=oD((G7),16,0);var G5=(((Hc)+(G6))&4294967295);var GK=Ch;var GI=((GK+108)&4294967295);var GH=((GI+FJ*4)&4294967295);uA[((GH)>>2)]=G5;var GG=Dy;var GF=(((GG)+1)&4294967295);var GD=uA[((HL)>>2)];var GC=((GD+4)&4294967295);var GB=xV[((GC)>>1)];var GA=oD((GB),16,0);var Gz=(((GA)*65536)&4294967295);var Ge=uA[((HL)>>2)];var Gc=((Ge+6)&4294967295);var Gb=xV[((Gc)>>1)];var Ga=oD((Gb),16,0);var F9=(((Ga)+(Gz))&4294967295);var F8=Ch;var F7=((F8+108)&4294967295);var F6=((F7+GF*4)&4294967295);uA[((F6)>>2)]=F9;var F5=uA[((HL)>>2)];var F3=((F5+6)&4294967295);uA[((HL)>>2)]=F3}else{if(HO==69){var FI=B4;var FG=oD((FI),16,0)>>>12;var FF=oD((FG),16,0);var FE=(((FF)-11)&4294967295);BN=FE;var FD=BN;var FB=B4;var Fz=oD((FB),16,0);var Fy=(Fz)&15;var Fx=(((Fy)*262144)&4294967295);var Fw=uA[((HL)>>2)];var Fl=((Fw+2)&4294967295);var Fk=xV[((Fl)>>1)];var Fj=oD((Fk),16,0);var Fi=(((Fj)*4)&4294967295);var Fh=(((Fi)+(Fx))&4294967295);var Fg=Ch;var Ff=((Fg+68)&4294967295);var Fe=((Ff+FD*4)&4294967295);uA[((Fe)>>2)]=Fh;var Fd=BN;var Fc=B4;var E0=oD((Fc),16,0)>>>4;var EY=oD((E0),16,0);var EX=(EY)&255;var EW=Ch;var EV=((EW+88)&4294967295);var EU=((EV+Fd*4)&4294967295);uA[((EU)>>2)]=EX;var ET=Ch;var ES=((ET+88)&4294967295);var ER=((ES+Fd*4)&4294967295);var EQ=uA[((ER)>>2)];var ED=(((EQ))&255);H1=ED;var EC=uA[((HL)>>2)];var EB=((EC+2)&4294967295);uA[((HL)>>2)]=EB;var EA=uA[((HL)>>2)];var Ez=((EA+2)&4294967295);var Ey=uW[((Ez)>>1)];var Ex=iB((Ey),16,0)!=2;if(!(Ex)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var Ew=BN;var Eu=(((Ew))|0)<=1;if(Eu){HO=71}else{HO=73}$bb85$$bb88$104:do{if(HO==71){B9=1;var Es=uA[((HL)>>2)];var D9=((Es+2)&4294967295);var D8=xV[((D9)>>1)];var D7=oD((D8),16,0)>>>12;var D6=iB((D7),16,0)==15;if(!(D6)){HO=75;break $bb85$$bb88$104}B9=2}else{if(HO==73){var D5=BN;var D3=(((D5))|0)==4;if(!(D3)){HO=75;break $bb85$$bb88$104}var D2=B9;var D0=(((D2)-1)&4294967295);B9=D0}}}while(0);var DZ=BN;var DX=(((DZ))|0)==2;var DD=BN;var DC=(((DD))|0)==3;var D1=(DX)|(DC);if(!(D1)){HO=80;break $bb94$$bb2$$bb27$$bb32$$bb66$$bb72$$bb79$$bb83$6}var DB=BN;var DA=H1;var Dz=iB((DA),8,0);var Dx=Ch;var Dw=((Dx+88)&4294967295);var Dv=((Dw+DB*4)&4294967295);uA[((Dv)>>2)]=Dz}}}}}}}}}while(0);var Ee=Cd;var Ec=((Ee+4)&4294967295);var DY=uA[((Ec)>>2)];var DW=(DY)&4096;var DU=(((DW))|0)!=0;if(DU){HO=81}else{HO=82}$bb97_thread$$bb97$112:do{if(HO==81){B9=1}else{if(HO==82){var AM=B9;var DS=(((AM))|0)==1;if(DS){HO=84;break $bb97_thread$$bb97$112}var DQ=uA[((HL)>>2)];var DO=((DQ+2)&4294967295);uA[((HL)>>2)]=DO;HO=2;continue $bb1$4}}}while(0);var DM=IC;var DK=(((DM))|0)>0;if(DK){HO=85}else{HO=86}if(HO==85){B9=0;var DI=IC;var DG=(((DI)-1)&4294967295);IC=DG;var Dt=IC;var Dr=((D4+Dt*4)&4294967295);var Dq=uA[((Dr)>>2)];uA[((HL)>>2)]=Dq}var B7=B9;var Dp=uA[((HL)>>2)];var Do=((Dp+2)&4294967295);uA[((HL)>>2)]=Do;var Dn=(((B7))|0)!=1;if(Dn){HO=2;continue $bb1$4}else{HO=87;break $return$$bb$2}}}}while(0);vp=Bw;return;return}function nj(AL,i){var Bb=vp;vp+=96;n1(Bb,0,96);var A2;var AX;var Ba;var AK;var A3=Bb;AX=AL;Ba=i;var AR=((A3)&4294967295);var AQ=AR;ud(AQ,0,96,1,0);AK=0;while(1){var AP=AK;var AO=((A3+AP*24)&4294967295);var AN=((AO)&4294967295);la[((AN)>>0)]=9;var AM=AK;var AJ=uA[((((nm+36)&4294967295))>>2)];var AI=((A3+AM*24)&4294967295);var AH=((AI+8)&4294967295);uA[((AH)>>2)]=AJ;var e=AK;var A4=(((e)+1)&4294967295);AK=A4;var A1=(((A4))|0)<=3;if(A1){A2=1;continue}else{A2=2;break}}var A0=AX;var AZ=(((A0))&255);var AY=((A3+24)&4294967295);var AW=((AY)&4294967295);la[((AW)>>0)]=AZ;var AV=AX;var AU=((nm+AV*4)&4294967295);var AT=uA[((AU)>>2)];var AS=((A3+24)&4294967295);var A9=((AS+8)&4294967295);uA[((A9)>>2)]=AT;var A8=((A3+48)&4294967295);var A7=((A8+6)&4294967295);uW[((A7)>>1)]=1;var A6=((A3+24)&4294967295);var A5=Ba;lw(0,0,A6,A5);vp=Bb;return;return}function iJ(){var Bd=vp;vp+=364;n1(Bd,0,364);var B2;var BC=null;var A2;var AI;var CM;var Cr;var BE;var BR;var BB;var A1;var BL;var BO;var BS;var Bq=Bd;var B8;var A0;var B3=Bd+160;var B4;var CN=Bd+164;uA[((s1)>>2)]=0;A0=0;$bb$2:while(1){var CL=A0;var CK=((y+CL*16)&4294967295);var CJ=((CK+12)&4294967295);uA[((CJ)>>2)]=0;var CI=A0;var CH=((y+CI*16)&4294967295);var CF=((CH+8)&4294967295);uA[((CF)>>2)]=0;var CE=A0;var CD=(((CE)+1)&4294967295);A0=CD;var CC=(((CD))|0)<=3;if(CC){B2=1;continue $bb$2}else{B2=2;break $bb$2}}var Cl=((Bq)&4294967295);var Cj=qs(Cl,((fW)&4294967295),((iU)&4294967295),47,((nO)&4294967295));var Ch=((Bq)&4294967295);var Cf=uE(Ch,((vw)&4294967295));B8=Cf;var Cd=B8;var Cb=(Cd)==0;var Ca=oD((Cb),1,0);BS=Ca;var B9=BS;var BA=iB((B9),8,0)!=0;if(BA){B2=21}else{B2=3}$return$$bb17_preheader$5:do{if(B2==3){var B7=((Bq)&4294967295);var B6=B8;var BW=r0(B7,160,B6);var BU=(BW)!=0;var BQ=oD((BU),1,0);BO=BQ;if(!(BU)){B2=21;break $return$$bb17_preheader$5}var BN=((Bq)&4294967295);var BK=((Bq)&4294967295);var BI=((Bq+4)&4294967295);var BH=((CN)&4294967295);var BG=((CN)&4294967295);var BF=((Bq)&4294967295);var BD=((Bq+5)&4294967295);var Bp=((Bq)&4294967295);var Bm=((Bq+10)&4294967295);var Bj=((Bq)&4294967295);var Bg=((Bq+10)&4294967295);var Bc=((CN)&4294967295);var A9=((CN)&4294967295);var A7=((CN)&4294967295);$bb4$8:while(1){var A6=la[((BN)>>0)];var A5=iB((A6),8,0)==47;if(A5){B2=6}else{B2=7}$bb17_backedge$$bb5$10:do{if(B2==7){var AQ=l4(BK,((bY)&4294967295),3);var AP=(((AQ))|0)==0;if(AP){B2=8}else{B2=10}if(B2==8){var AN=lE(BI,((kS)&4294967295),s1,BH);var AM=(((AN))|0)==2;var AL=oD((AM),1,0);BL=AL;var AK=BL;var B5=iB((AK),8,0)!=0;if(!(B5)){B2=6;break $bb17_backedge$$bb5$10}var AJ=uE(BG,((fk)&4294967295));uA[((bQ)>>2)]=AJ}else{if(B2==10){var AH=l4(BF,((a)&4294967295),4);var i=(((AH))|0)==0;if(i){B2=11}else{B2=14}if(B2==11){BR=BD;BB=((hY)&4294967295);A1=0;var e=BB;BC=11;while(1){var CU=BC==11?e:(CO);var CT=A1;var CS=((CU+4*CT)&4294967295);uA[((CS)>>2)]=-1;var CR=A1;var CQ=(((CR)+1)&4294967295);A1=CQ;var CP=(((CQ))|0)<=11;var CO=BB;if(CP){BC=12;B2=12;continue}else{BC=12;B2=13;break}}var CB=((CO+36)&4294967295);var CA=BB;var Cz=((CA+32)&4294967295);var Cy=BB;var Cx=((Cy+28)&4294967295);var Cw=BB;var Cv=((Cw+24)&4294967295);var Cu=BB;var Ct=((Cu+20)&4294967295);var Cs=BB;var Cq=((Cs+16)&4294967295);var Cp=BB;var Co=((Cp+12)&4294967295);var Cn=BB;var Cm=((Cn+8)&4294967295);var Ck=BB;var Ci=((Ck+4)&4294967295);var Cg=BB;var Ce=((Cg)&4294967295);var Cc=BR;var B1=lE(Cc,((nX)&4294967295),Ce,Ci,Cm,Co,Cq,Ct,Cv,Cx,Cz,CB)}else{if(B2==14){var B0=l4(Bp,((il)&4294967295),9);var BZ=(((B0))|0)==0;if(BZ){B2=15}else{B2=16}if(B2==15){var BY=lE(Bm,((qb)&4294967295),h8)}else{if(B2==16){var BX=l4(Bj,((qB)&4294967295),9);var BV=(((BX))|0)==0;if(!(BV)){B2=6;break $bb17_backedge$$bb5$10}var BT=lE(Bg,((x4)&4294967295),B3,Bc);A0=BT;var BP=A0;var BM=(((BP))|0)==2;if(!(BM)){B2=6;break $bb17_backedge$$bb5$10}var BJ=uA[((lP)>>2)];var Bz=la[((B3)>>0)];var By=iB((Bz),8,0);var Bw=((y+BJ*16)&4294967295);var Bu=((Bw)&4294967295);uA[((Bu)>>2)]=By;var Bs=wg(A9);var Bo=(((Bs)+1)&4294967295);A2=Bo;var Bl=A2;var Bi=fu(Bl);BE=Bi;var Bf=BE;var Bb=(Bf)==0;var Bx=oD((Bb),1,0);Cr=Bx;var Bv=Cr;var AO=iB((Bv),8,0)!=0;if(AO){B2=19}else{B2=20}if(B2==19){var Bt=uA[((ta)>>2)];var Br=yf(((gb)&4294967295),1,22,Bt)}var Bn=BE;CM=Bn;var Bk=CM;AI=Bk;var A3=AI;B4=A3;var Bh=B4;var Be=oJ(Bh,A7);var Ba=uA[((lP)>>2)];var A8=((y+Ba*16)&4294967295);var AZ=((A8+12)&4294967295);var AY=B4;uA[((AZ)>>2)]=AY;var AX=uA[((lP)>>2)];var AW=((y+AX*16)&4294967295);var AV=((AW+4)&4294967295);uA[((AV)>>2)]=0;var AT=(((AX)+1)&4294967295);uA[((lP)>>2)]=AT}}}}}}}}while(0);var A4=B8;var AU=r0(B7,160,A4);var AS=(AU)!=0;var AR=oD((AS),1,0);BO=AR;var CG=iB((AR),8,0)!=0;if(CG){B2=5;continue $bb4$8}else{B2=21;break $return$$bb17_preheader$5}}}}while(0);vp=Bd;return;return}function ka(AO){var AY;var A2;var A1;var AQ;var AJ;A2=AO;AJ=0;while(1){var A0=uA[((yA)>>2)];var AZ=AJ;var AX=(((AZ))|0)<(((A0))|0);if(!(AX)){AY=5;break}var AP=AJ;var AN=((ur+AP*48)&4294967295);var AM=((AN)&4294967295);var AL=((AM)&4294967295);var AK=A2;var AI=pt(AK,AL);var AH=(((AI))|0)==0;var i=AJ;if(AH){AY=2;break}var e=(((i)+1)&4294967295);AJ=e;AY=4;continue}if(AY==2){uA[((rC)>>2)]=i}var AW=uA[((yA)>>2)];var AV=AJ;var AU=(((AV))|0)==(((AW))|0);if(AU){AY=6}else{AY=7}if(AY==6){AQ=-1}else{if(AY==7){var AT=AJ;AQ=AT}}var AS=AQ;A1=AS;var AR=A1;return AR;return null}function eo(AW){var AV;var Bj;var AZ;var AN;var Ba;var AI;var A9;var AX;var A8;var AU;var AP;A9=AW;var A7=A9;AZ=A7;AI=0;while(1){var AQ=uA[((yA)>>2)];var AO=AI;var AM=(((AO))|0)<(((AQ))|0);if(!(AM)){AV=5;break}var A6=AI;var A5=((ur+A6*48)&4294967295);var A4=((A5)&4294967295);var A3=((A4)&4294967295);var A2=AZ;var A1=pt(A2,A3);var A0=(((A1))|0)==0;var AS=AI;if(A0){AV=2;break}var AR=(((AS)+1)&4294967295);AI=AR;AV=4;continue}if(AV==2){uA[((rC)>>2)]=AS}var AL=uA[((yA)>>2)];var AK=AI;var AJ=(((AK))|0)==(((AL))|0);if(AJ){AV=6}else{AV=7}if(AV==6){Ba=-1}else{if(AV==7){var AH=AI;Ba=AH}}var i=Ba;AN=i;var AT=AN;AP=AT;var e=AP;var Bl=(((e))|0)==-1;var Bk=oD((Bl),1,0);AU=Bk;var AY=iB((Bk),8,0)!=0;if(AY){AV=9}else{AV=10}if(AV==9){A8=-1}else{if(AV==10){var Bi=AP;Bj=Bi;uA[((rW)>>2)]=0;var Bh=Bj;m1(Bh,0);var Bg=uA[((rW)>>2)];var Bf=(((Bg)+1)&4294967295);uA[((rW)>>2)]=Bf;var Be=Bj;uA[((mp)>>2)]=Be;var Bd=AP;A8=Bd}}var Bc=A8;AX=Bc;var Bb=AX;return Bb;return null}function lm(AP){var AS;var AO;var AQ;var AN;AO=AP;var AM=AO;var AL=(((AM))|0)==0;if(AL){AS=1}else{AS=2}if(AS==1){var AK=uA[((ta)>>2)];var AJ=yf(((fG)&4294967295),1,20,AK);var AI=uA[((((lx)&4294967295))>>2)];AN=AI}else{if(AS==2){var AH=uA[((op)>>2)];var i=AO;var e=((AH+i)&4294967295);AN=e}}var AT=AN;AQ=AT;var AR=AQ;return AR;return null}function lp(Cc,CM,Dq,Cq,FS){var Bq=vp;vp+=4;n1(Bq,0,4);var Fj;var EG=null;var CH;var Cv;var Cx;var BV;var Ci;var Dg;var CJ;var CK;var Cj=Bq;var DR;var Fl;var CL;var Fi;var B6;var Dw;var Cw;var Dk;var CX;var AQ;var Fm;CH=Cc;Cv=CM;Cx=Dq;BV=Cq;Ci=FS;var CI=uA[((op)>>2)];var CG=Cx;var CF=((CG+8)&4294967295);var CE=uA[((CF)>>2)];var CD=((CI+CE)&4294967295);var CC=CD;Cw=CC;var CA=Cw;var Cz=CA;CX=Cz;var Cy=Cw;var E7=((Cy+2)&4294967295);var E6=ll[((E7)>>0)];var E5=oD((E6),8,0);uA[((Cj)>>2)]=E5;var E4=uA[((Cj)>>2)];var E3=(((E4))|0)>24;if(E3){Fj=1}else{Fj=2}if(Fj==1){uA[((Cj)>>2)]=24}var E2=Cx;var E1=((E2+24)&4294967295);var E0=uA[((E1)>>2)];var EZ=Cx;var EY=((EZ+12)&4294967295);var EF=uA[((EY)>>2)];var EE=(((EF)+(E0))&4294967295);uA[((iO)>>2)]=EE;Fl=0;CK=0;var ED=uA[((Cj)>>2)];var EC=CK;var EB=(((EC))|0)<(((ED))|0);if(EB){Fj=4}else{Fj=3}$bb2$$bb9_thread$5:do{if(Fj==4){while(1){var EA=Cw;var Ez=((EA+4)&4294967295);var Ey=((Ez)&4294967295);var Ex=((Ey)&4294967295);var Ew=uW[((Ex)>>1)];var El=iB((Ew),16,0);var Ek=(El)&1;var Ej=(((Ek))&255);var Fk=iB((Ej),8,0)!=0;var Ei=CK;if(Fk){Fj=5}else{Fj=6}if(Fj==5){var Eh=CX;var Eg=((Eh+4)&4294967295);var Ef=((Eg+Ei*64)&4294967295);Fm=Ef}else{if(Fj==6){var Ee=Cw;var Ed=((Ee+4)&4294967295);var Ec=((Ed+Ei*44)&4294967295);var D1=Ec;Fm=D1}}var D0=CK;var DZ=((hZ+D0*8)&4294967295);var DY=((DZ+4)&4294967295);var DX=Fm;uA[((DY)>>2)]=DX;var DW=CK;var DV=Fm;var DU=((DV)&4294967295);var DT=uW[((DU)>>1)];var DS=((hZ+DW*8)&4294967295);var DG=((DS+2)&4294967295);uW[((DG)>>1)]=DT;var DF=CK;var DE=Fm;var DD=((DE+16)&4294967295);var DC=ll[((DD)>>0)];var DB=oD((DC),8,0);var DA=((hZ+DF*8)&4294967295);var Dz=((DA)&4294967295);uW[((Dz)>>1)]=DB;var Dy=Fm;var Dx=((Dy)&4294967295);var Dv=uW[((Dx)>>1)];var Du=iB((Dv),16,0);var Dt=(Du)&2;var Ds=(((Dt))|0)!=0;if(Ds){Fj=8}else{Fj=9}if(Fj==8){var Dr=CK;Fl=Dr}var Dp=CK;var Do=(((Dp)+1)&4294967295);CK=Do;var Dn=uA[((Cj)>>2)];var Dm=CK;var Dl=(((Dm))|0)<(((Dn))|0);if(Dl){Fj=4;continue}else{Fj=10;break}}var Dj=Fl;CL=((hZ)&4294967295);var Di=(((Dj))|0)>0;if(!(Di)){Fj=14;break $bb2$$bb9_thread$5}var Dh=Cv;var Df=(((Dh))|0)==1;var De=Fl;if(Df){Fj=12}else{Fj=13}if(Fj==12){var Dd=(((De)+1)&4294967295);uA[((Cj)>>2)]=Dd}else{if(Fj==13){var Dc=((hZ+De*8)&4294967295);CL=Dc;var Db=uA[((Cj)>>2)];var Da=Fl;var C9=(((Db)-(Da))&4294967295);uA[((Cj)>>2)]=C9}}}else{if(Fj==3){CL=((hZ)&4294967295)}}}while(0);var C8=CH;var C7=((C8+11)&4294967295);var C6=la[((C7)>>0)];var C5=iB((C6),8,0)==2;if(C5){Fj=15}else{Fj=18}$bb14$$bb17$22:do{if(Fj==15){var C4=Cx;var C3=((C4+20)&4294967295);var C2=uA[((C3)>>2)];var C1=(((C2))|0)==0;if(!(C1)){Fj=18;break $bb14$$bb17$22}var C0=Cx;var CZ=((C0+4)&4294967295);var CY=uA[((CZ)>>2)];var CW=(((CY))|0)!=0;if(!(CW)){Fj=18;break $bb14$$bb17$22}var CV=Cx;var CU=((CV+40)&4294967295);var CT=uA[((CU)>>2)];var CS=Cx;var CR=((CS+36)&4294967295);var CQ=uA[((CR)>>2)];var CP=CL;var CO=Cv;var CN=hQ(CP,Cj,CQ,CT,0,CO);var Cu=uA[((iO)>>2)];var Ct=(((Cu)+(CN))&4294967295);uA[((iO)>>2)]=Ct}}while(0);Fi=0;var Cs=uA[((Cj)>>2)];var Cr=(((Cs)-1)&4294967295);DR=Cr;CK=0;var Cp=CK;var Co=DR;var Cn=(((Cp))|0)<(((Co))|0);if(Cn){Fj=19}else{Fj=20}$bb18$$bb20$27:do{if(Fj==19){while(1){var Cm=CL;var Cl=CK;var Ck=((Cm+8*Cl)&4294967295);var Ch=((Ck)&4294967295);var Cg=uW[((Ch)>>1)];var Cf=iB((Cg),16,0);var Ce=Fi;var Cd=(((Cf)+(Ce))&4294967295);Fi=Cd;var Cb=CK;var Ca=(((Cb)+1)&4294967295);CK=Ca;var B9=CK;var B8=DR;var B7=(((B9))|0)<(((B8))|0);if(B7){Fj=19;continue}else{Fj=20;break $bb18$$bb20$27}}}}while(0);var B5=Cx;var B4=((B5+20)&4294967295);var B3=uA[((B4)>>2)];var B2=(((B3))|0)!=0;if(B2){Fj=21}else{Fj=29}if(Fj==21){var B1=uA[((op)>>2)];var B0=Cx;var BZ=((B0+20)&4294967295);var BY=uA[((BZ)>>2)];var BX=((B1+BY)&4294967295);var BW=BX;Dk=BW;var BU=Dk;var BT=BU;AQ=BT;var BS=uA[((Cj)>>2)];var BR=(((BS)-1)&4294967295);uA[((Cj)>>2)]=BR;CK=0;var BQ=Dk;var BP=((BQ+2)&4294967295);var BO=ll[((BP)>>0)];var BN=oD((BO),8,0);var BM=CK;var BL=(((BN))|0)>(((BM))|0);if(BL){Fj=22}else{Fj=28}$bb22$$bb30$33:do{if(Fj==22){while(1){var BK=Dk;var BJ=((BK+4)&4294967295);var BI=((BJ)&4294967295);var BH=((BI)&4294967295);var BG=uW[((BH)>>1)];var BF=iB((BG),16,0);var BE=(BF)&1;var BD=(((BE))&255);var CB=iB((BD),8,0)!=0;var BC=CK;if(CB){Fj=23}else{Fj=24}if(Fj==23){var BB=AQ;var BA=((BB+4)&4294967295);var Bz=((BA+BC*64)&4294967295);Fm=Bz}else{if(Fj==24){var By=Dk;var Bx=((By+4)&4294967295);var Bw=((Bx+BC*44)&4294967295);var Bv=Bw;Fm=Bv}}var Bu=uA[((Cj)>>2)];var Bt=CL;var Bs=((Bt+8*Bu)&4294967295);var Br=Fm;var Bp=((Br+16)&4294967295);var Bo=ll[((Bp)>>0)];var Bn=oD((Bo),8,0);var Bm=((Bs)&4294967295);uW[((Bm)>>1)]=Bn;var Bl=CK;var Bk=(((Bl))|0)>0;if(Bk){Fj=26}else{Fj=27}if(Fj==26){var Bj=uA[((Cj)>>2)];var Bi=CL;var Bg=((Bi+8*Bj)&4294967295);var Be=((Bg+4)&4294967295);var A5=Fm;uA[((Be)>>2)]=A5;var A4=uA[((Cj)>>2)];var A3=CL;var A2=((A3+8*A4)&4294967295);var A1=Fm;var A0=((A1)&4294967295);var AZ=uW[((A0)>>1)];var AY=((A2+2)&4294967295);uW[((AY)>>1)]=AZ}var AW=uA[((Cj)>>2)];var AU=(((AW)+1)&4294967295);uA[((Cj)>>2)]=AU;var AJ=CK;var AI=(((AJ)+1)&4294967295);CK=AI;var AH=Dk;var i=((AH+2)&4294967295);var e=ll[((i)>>0)];var F7=oD((e),8,0);var F6=CK;var F5=(((F7))|0)>(((F6))|0);if(F5){Fj=22;continue}else{Fj=28;break $bb22$$bb30$33}}}}while(0);uA[((oY)>>2)]=0}var F3=Fi;var F1=(((F3))|0)>0;if(F1){Fj=30}else{Fj=47}$bb32$$bb52$45:do{if(Fj==30){var FR=Cv;var FQ=(((FR))|0)==2;if(FQ){Fj=31}else{Fj=37}if(Fj==31){var FP=Cx;var FO=((FP+44)&4294967295);var FN=uA[((FO)>>2)];var FM=uA[((iO)>>2)];var FL=(((FN)+-45)&4294967295);var FJ=(((FL)+(FM))&4294967295);B6=FJ;var FH=B6;var FF=(((FH))|0)<=9;if(FF){Fj=32}else{Fj=33}if(Fj==32){B6=10}var Bh=Ci;var Bf=((Bh+4)&4294967295);var Bd=xV[((Bf)>>1)];var Bc=oD((Bd),16,0);var Bb=(Bc)&8;var Ba=(((Bb))|0)!=0;if(Ba){Fj=34}else{Fj=35}if(Fj==34){var A9=uA[((((nm+48)&4294967295))>>2)];var A8=((A9+14)&4294967295);var A7=ll[((A8)>>0)];var A6=oD((A7),8,0);var AX=(((A6)*2)&4294967295);var AV=B6;var AT=(((AX)+(AV))&4294967295);B6=AT}var AS=B6;var AR=(((AS)*256)&4294967295);var AP=Fi;var AO=(((((AR))|0)/(((AP))|0))|0);Dw=AO;CK=0;var AN=CK;var AM=DR;var AL=(((AN))|0)<(((AM))|0);if(!(AL)){Fj=47;break $bb32$$bb52$45}while(1){var F4=CL;var F2=CK;var F0=((F4+8*F2)&4294967295);var FZ=CL;var FY=CK;var FX=((FZ+8*FY)&4294967295);var FW=((FX)&4294967295);var FV=uW[((FW)>>1)];var FU=iB((FV),16,0);var FT=Dw;var FI=(((FU)*(FT))&4294967295);var FG=(((((FI))|0)/256)|0);var FE=(((FG))&65535);var FD=((F0)&4294967295);uW[((FD)>>1)]=FE;var FC=CK;var FB=(((FC)+1)&4294967295);CK=FB;var FA=CK;var Fz=DR;var Fy=(((FA))|0)<(((Fz))|0);if(Fy){Fj=36;continue}else{Fj=47;break $bb32$$bb52$45}}}else{if(Fj==37){var Fx=Cv;var Fw=(((Fx))|0)==1;var Fv=Cx;if(Fw){Fj=38}else{Fj=41}$bb42$$bb46$58:do{if(Fj==38){var Fu=((Fv)&4294967295);var Ft=uA[((Fu)>>2)];var Fs=(((Ft))|0)==1;if(!(Fs)){Fj=43;break $bb42$$bb46$58}var Fr=Cx;var Fq=((Fr+44)&4294967295);var Fp=uA[((Fq)>>2)];var Fo=(((Fp))|0)<=129;if(!(Fo)){Fj=43;break $bb42$$bb46$58}var Fn=CL;var Fh=((Fn)&4294967295);var Fg=CL;var Ff=((Fg)&4294967295);var Fe=((Ff)&4294967295);var Fd=uW[((Fe)>>1)];var Fc=iB((Fd),16,0);var Fb=Cx;var Fa=((Fb+44)&4294967295);var E9=uA[((Fa)>>2)];var E8=(((E9)*(Fc))&4294967295);var EX=(((((E8))|0)/130)|0);var EW=(((EX))&65535);var EV=((Fh)&4294967295);uW[((EV)>>1)]=EW;Fj=43;break $bb42$$bb46$58}else{if(Fj==41){var EU=((Fv+44)&4294967295);var ET=uA[((EU)>>2)];var ES=(((ET))|0)>0;if(!(ES)){Fj=43;break $bb42$$bb46$58}var ER=Cx;var EQ=((ER+44)&4294967295);var EP=uA[((EQ)>>2)];var EN=Fi;var Ev=(((EP)-(EN))&4294967295);var Eu=uA[((iO)>>2)];var Et=(((Ev)+(Eu))&4294967295);uA[((iO)>>2)]=Et;EG=42;Fj=44;break $bb42$$bb46$58}}}while(0);if(Fj==43){var AK=uA[((iO)>>2)];EG=43}var Es=EG==43?AK:(Et);var Er=(((Es))|0)!=0;if(!(Er)){Fj=47;break $bb32$$bb52$45}var Eq=uA[((iO)>>2)];var Ep=Fi;var Eo=(((Ep)+(Eq))&4294967295);var En=(((Eo)*256)&4294967295);var Em=Fi;var Eb=(((((En))|0)/(((Em))|0))|0);Dw=Eb;CK=0;var Ea=CK;var D9=DR;var D8=(((Ea))|0)<(((D9))|0);if(!(D8)){Fj=47;break $bb32$$bb52$45}while(1){var D7=CL;var D6=CK;var D5=((D7+8*D6)&4294967295);var D4=CL;var D3=CK;var D2=((D4+8*D3)&4294967295);var DQ=((D2)&4294967295);var DP=uW[((DQ)>>1)];var DO=iB((DP),16,0);var DN=Dw;var DM=(((DO)*(DN))&4294967295);var DL=(((((DM))|0)/256)|0);var DK=(((DL))&65535);var DJ=((D5)&4294967295);uW[((DJ)>>1)]=DK;var DI=CK;var DH=(((DI)+1)&4294967295);CK=DH;var EO=CK;var EM=DR;var EL=(((EO))|0)<(((EM))|0);if(EL){Fj=46;continue}else{Fj=47;break $bb32$$bb52$45}}}}}}while(0);var EK=uA[((Cj)>>2)];var EJ=BV;uA[((EJ)>>2)]=EK;var EI=CL;CJ=EI;var EH=CJ;Dg=EH;var FK=Dg;vp=Bq;return FK;return null}function hR(){var AS;var AL;var AO;var AH;var AQ=uA[((wS)>>2)];AH=AQ;var AP=AH;var AN=(AP)!=0;if(AN){AS=1}else{AS=2}if(AS==1){var AM=AH;br(AM)}var AK=uA[((I)>>2)];var AJ=AK;AO=AJ;var AI=(AJ)!=0;if(AI){AS=3}else{AS=4}if(AS==3){var i=AO;br(i)}var e=uA[((op)>>2)];AL=e;var AT=(e)!=0;if(AT){AS=5}else{AS=6}if(AS==5){var AR=AL;br(AR)}uA[((wS)>>2)]=0;uA[((I)>>2)]=0;uA[((op)>>2)]=0;return;return}function U(Cd,AI,By){var A6=vp;vp+=280;n1(A6,0,280);var Bv;var AW;var Bu;var B4;var BM;var Bk;var Bf;var BN;var AJ;var B3;var BO;var A1=A6;var BS;var B5;var BF;var Ba;var Bd;var Be;var B2;var Bg;var AX;var Bw;var BG;var Bc=A6+88;BS=Cd;B5=AI;BF=By;var B1=((Bc)&4294967295);var B0=B5;var BZ=qs(B1,((fW)&4294967295),((iU)&4294967295),47,B0);var BY=((Bc)&4294967295);BN=BY;var BX=BN;var BW=kB(BX,A1);var BV=(((BW))|0)!=0;var BL=oD((BV),1,0);BO=BL;var BK=BO;var AQ=iB((BK),8,0)!=0;if(AQ){Bv=1}else{Bv=2}if(Bv==1){B3=0}else{if(Bv==2){var BJ=((A1+16)&4294967295);var BI=uA[((BJ)>>2)];var BH=(BI)&61440;var BE=(((BH))|0)==16384;if(BE){Bv=3}else{Bv=4}if(Bv==3){B3=-2}else{if(Bv==4){var BD=((A1+44)&4294967295);var BC=uA[((BD)>>2)];B3=BC}}}}var BB=B3;AJ=BB;var AV=AJ;BG=AV;var BA=((Bc)&4294967295);var Bt=uE(BA,((nJ)&4294967295));AX=Bt;var Bs=AX;var Br=(Bs)==0;var Bq=oD((Br),1,0);Bg=Bq;var Bh=iB((Bq),8,0)!=0;if(Bh){Bv=6}else{Bv=7}if(Bv==6){var Bp=uA[((ta)>>2)];var Bo=((Bc)&4294967295);var Bn=Am(Bp,((pT)&4294967295),Bo);B2=0}else{if(Bv==7){var Bm=BS;var Bl=(Bm)!=0;if(Bl){Bv=8}else{Bv=10}$bb2$$bb3$12:do{if(Bv==8){var Bj=BS;Bf=Bj;var Bb=Bf;var A9=(Bb)!=0;if(!(A9)){Bv=10;break $bb2$$bb3$12}var A8=Bf;br(A8)}}while(0);var A7=BG;AW=A7;var A5=AW;var A4=fu(A5);Bk=A4;var A3=Bk;var A2=(A3)==0;var A0=oD((A2),1,0);BM=A0;var Bi=iB((A0),8,0)!=0;if(Bi){Bv=11}else{Bv=12}if(Bv==11){var AZ=uA[((ta)>>2)];var AU=yf(((gb)&4294967295),1,22,AZ)}var AT=Bk;B4=AT;var AS=B4;Bu=AS;var AY=Bu;Bw=AY;var AR=Bw;var AP=(AR)==0;var AO=oD((AP),1,0);Be=AO;var Bz=iB((AO),8,0)!=0;if(Bz){Bv=13}else{Bv=14}if(Bv==13){var AN=AX;var AM=ts(AN);B2=0}else{if(Bv==14){var AL=Bw;var AK=BG;var AH=AX;var i=dg(AL,1,AK,AH);var e=BG;var Cc=(((i))|0)!=(((e))|0);var Cb=oD((Cc),1,0);Bd=Cb;var Ca=Bd;var Bx=iB((Ca),8,0)!=0;var B9=AX;var B8=ts(B9);if(Bx){Bv=15}else{Bv=16}if(Bv==15){B2=0}else{if(Bv==16){var B7=BF;var B6=(B7)!=0;if(B6){Bv=17}else{Bv=18}if(Bv==17){var BU=BG;var BT=BF;uA[((BT)>>2)]=BU}var BR=Bw;B2=BR}}}}}}var BQ=B2;Ba=BQ;var BP=Ba;vp=A6;return BP;return null}function a8(){var Bb=vp;vp+=4;n1(Bb,0,4);var BX;var Cq;var AJ;var CK;var Bl;var B1;var B5;var Bo;var CJ;var Bw;var A0;var BA;var AK;var BT;var Ca=Bb;var BY;var AI;BT=1;var CI=uA[((wS)>>2)];var CH=U(CI,((xo)&4294967295),0);uA[((wS)>>2)]=CH;var CG=uA[((wS)>>2)];var CF=(CG)==0;var CE=oD((CF),1,0);Bw=CE;var CD=Bw;var BB=iB((CD),8,0)!=0;if(BB){BX=1}else{BX=2}if(BX==1){CJ=-1}else{if(BX==2){var CC=uA[((I)>>2)];var CB=CC;var Cj=U(CB,((eF)&4294967295),0);var Ch=Cj;uA[((I)>>2)]=Ch;var Cf=uA[((I)>>2)];var Cd=(Cf)==0;var Cb=oD((Cd),1,0);Bo=Cb;var B8=Bo;var B3=iB((B8),8,0)!=0;if(B3){BX=3}else{BX=4}if(BX==3){CJ=-1}else{if(BX==4){var B7=uA[((op)>>2)];var B6=U(B7,((nc)&4294967295),0);uA[((op)>>2)]=B6;var B4=uA[((op)>>2)];var B2=(B4)==0;var BQ=oD((B2),1,0);B5=BQ;var BO=B5;var B0=iB((BO),8,0)!=0;if(B0){BX=5}else{BX=6}if(BX==5){CJ=-1}else{if(BX==6){var BM=uA[((aP)>>2)];var BK=BM;var BI=U(BK,((uY)&4294967295),Ca);var BG=BI;uA[((aP)>>2)]=BG;var BF=uA[((aP)>>2)];var BE=(BF)==0;var BD=oD((BE),1,0);B1=BD;var BC=B1;var BZ=iB((BC),8,0)!=0;if(BZ){BX=7}else{BX=8}if(BX==7){CJ=-1}else{if(BX==8){var Bp=uA[((op)>>2)];uA[((f2)>>2)]=Bp;var Bk=xk[((Ca)>>2)];var Bh=Math.floor((((Bk))>>>0)/68);uA[((ft)>>2)]=Bh;AK=0;A0=0;$bb11$14:while(1){var Be=uA[((f2)>>2)];var Ba=A0;var A6=((Be+Ba)&4294967295);var A4=ll[((A6)>>0)];var A3=oD((A4),8,0);var A2=A0;var A1=(((A2)*8)&4294967295);var AV=(A3)<<(A1);var AT=AK;var AS=(((AV)+(AT))&4294967295);AK=AS;var AR=A0;var AQ=(((AR)+1)&4294967295);A0=AQ;var AP=(((AQ))|0)<=3;if(AP){BX=9;continue $bb11$14}else{BX=10;break $bb11$14}}var AO=AK;var AN=(((AO))|0)!=83200;if(AN){BX=11}else{BX=12}if(BX==11){var AM=AK;BT=AM}var AL=uA[((wS)>>2)];BY=AL;var AH=BY;var i=((AH)&4294967295);var e=ll[((i)>>0)];var CR=oD((e),8,0);uA[((yA)>>2)]=CR;var CQ=BY;var CP=((CQ+4)&4294967295);BY=CP;A0=0;var CO=uA[((yA)>>2)];var CN=A0;var CM=(((CN))|0)<(((CO))|0);if(CM){BX=13}else{BX=14}$bb16$$bb18$20:do{if(BX==13){while(1){var CL=BY;var CA=((CL)&4294967295);var Cz=ll[((CA)>>0)];var Cy=oD((Cz),8,0);BA=Cy;var Cx=A0;var Cw=BY;var Cv=((Cw)&4294967295);var Cu=ll[((Cv)>>0)];var Ct=oD((Cu),8,0);var Cs=((ur+Cx*48)&4294967295);var Cr=((Cs+36)&4294967295);uA[((Cr)>>2)]=Ct;var Cp=A0;var Co=BY;var Cn=((Co+1)&4294967295);var Cl=ll[((Cn)>>0)];var Ck=oD((Cl),8,0);var Ci=((ur+Cp*48)&4294967295);var Cg=((Ci+40)&4294967295);uA[((Cg)>>2)]=Ck;var Ce=BY;var Cc=Ce;AI=Cc;var B9=A0;var BW=AI;var BV=((BW+4)&4294967295);var BU=uA[((BV)>>2)];Cq=BU;var BS=Cq;CK=BS;var BR=CK;AJ=BR;var A9=AJ;var BP=((ur+B9*48)&4294967295);var BN=((BP+44)&4294967295);uA[((BN)>>2)]=A9;var BL=BY;var BJ=((BL+8)&4294967295);BY=BJ;var BH=A0;var Bz=((ur+BH*48)&4294967295);var By=((Bz)&4294967295);var Bv=((By)&4294967295);var Bt=BY;ns(Bv,Bt,32,1,0);var Br=BY;var Bn=((Br+32)&4294967295);BY=Bn;var Bj=A0;var Bg=BY;var Bd=Bg;var A8=((ur+Bj*48)&4294967295);var Bx=((A8+32)&4294967295);uA[((Bx)>>2)]=Bd;var Bu=BA;var Bs=(((Bu)*16)&4294967295);var Bq=BY;var Bm=((Bq+Bs)&4294967295);BY=Bm;var Bi=A0;var Bf=(((Bi)+1)&4294967295);A0=Bf;var Bc=uA[((yA)>>2)];var A7=A0;var A5=(((A7))|0)<(((Bc))|0);if(A5){BX=13;continue}else{BX=14;break $bb16$$bb18$20}}}}while(0);var AZ=uA[((rC)>>2)];var AY=uA[((yA)>>2)];var AX=(((AZ))|0)>=(((AY))|0);if(AX){BX=15}else{BX=16}if(BX==15){uA[((rC)>>2)]=0}var AW=BT;CJ=AW}}}}}}}}var AU=CJ;Bl=AU;var Cm=Bl;vp=Bb;return Cm;return null}function A(e){var AT;var AR;var AW;var AQ;var AK;AR=e;AK=0;while(1){var AP=AK;var AO=AK;var AN=(((AO)*8)&4294967295);var AM=AR;var AL=(((AM))>>>0)>>>(((AN))>>>0);var AJ=(((AL))&255);var AI=((aq+AP)&4294967295);la[((AI)>>0)]=AJ;var AH=AK;var i=(((AH)+1)&4294967295);AK=i;var AV=(((i))|0)<=2;if(AV){AT=1;continue}else{AT=2;break}}la[((((aq+4)&4294967295))>>0)]=0;AQ=((aq)&4294967295);var AU=AQ;AW=AU;var AS=AW;return AS;return null}function mS(){var e;uA[((hk)>>2)]=0;uA[((ma)>>2)]=0;uA[((mD)>>2)]=0;uA[((sz)>>2)]=-1;return;return}function uP(A5,A8){var A1;var AU;var A9;var A3;var AP;var AL;AU=A5;A9=A8;var AO=A9;var AN=(((AO))|0)==0;if(AN){A1=1}else{A1=4}if(A1==1){var AM=AU;var AK=(((AM))|0)>199;if(AK){A1=2}else{A1=3}if(A1==2){var AJ=uA[((((bX+4)&4294967295))>>2)];var AI=AU;var AH=(((AI)*(AJ))&4294967295);var i=(((((AH))|0)/256)|0);AL=i}else{if(A1==3){var e=uA[((((bX)&4294967295))>>2)];var A2=AU;var A0=(((A2)*(e))&4294967295);var AZ=(((((A0))|0)/256)|0);AL=AZ}}}else{if(A1==4){var AY=uA[((((bX+12)&4294967295))>>2)];var AX=AU;var AW=(((AX)*(AY))&4294967295);var AV=(((((AW))|0)/256)|0);AL=AV}}var AT=uA[((((bX+8)&4294967295))>>2)];var AS=AL;var AR=(((AT))|0)>(((AS))|0);if(AR){A1=6}else{A1=7}if(A1==6){var A7=uA[((((bX+8)&4294967295))>>2)];AL=A7}var A6=AL;AP=A6;var A4=AP;A3=A4;var AQ=A3;return AQ;return null}function gL(AX,Bd){var AZ;var AN;var Bk;var Bu;var i;var AP;AN=AX;Bk=Bd;var Bl=uA[((k5)>>2)];var Bj=((Bl+112)&4294967295);var Bi=((Bj)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=(((Bh))|0)!=0;if(Bg){AZ=1}else{AZ=3}$bb$$bb3$2:do{if(AZ==1){var Bf=Bk;var Be=(((Bf))|0)==-1;if(!(Be)){AZ=8;break $bb$$bb3$2}var Bb=AN;var A9=((Bb+39)&4294967295);var A7=((A9)&4294967295);la[((A7)>>0)]=50}else{if(AZ==3){var AV=AN;var AT=((AV+17)&4294967295);var AR=la[((AT)>>0)];var AO=iB((AR),8,0)==0;if(AO){AZ=8;break $bb$$bb3$2}var AM=Bk;var AL=(((AM)*64)&4294967295);var AK=AN;var AJ=((AK+17)&4294967295);var AI=ll[((AJ)>>0)];var AH=oD((AI),8,0);var e=(((((AL))|0)/(((AH))|0))|0);Bu=e;var Bv=Bu;var Bt=(((Bv))|0)>199;if(Bt){AZ=5}else{AZ=6}if(AZ==5){Bu=199}var Bs=Bu;var Br=((b9+Bs*2)&4294967295);var Bq=uW[((Br)>>1)];var Bp=iB((Bq),16,0);Bu=Bp;AP=0;while(1){var Bo=AP;var Bn=AN;var Bm=((Bn+18)&4294967295);var Bc=((Bm+Bo)&4294967295);var Ba=ll[((Bc)>>0)];var A8=oD((Ba),8,0);var A6=Bu;var A5=(((A8)*(A6))&4294967295);i=A5;var A4=AP;var A3=i;var A2=(((((A3))|0)/512)|0);var A1=(((A2))&255);var A0=AN;var AY=((A0+18)&4294967295);var AW=((AY+A4)&4294967295);la[((AW)>>0)]=A1;var AU=AP;var AS=(((AU)+1)&4294967295);AP=AS;var AQ=(((AS))|0)<=7;if(AQ){AZ=7;continue}else{AZ=8;break $bb$$bb3$2}}}}}while(0);return;return}function c6(AW,Co,Cu,AX,B7,Dr,C3,Dy){var BL;var CD=null;var B6;var AK;var Cw;var C4;var Dp;var Cv;var BK;var A9;var A8;var BJ;var Dq;var Cq;var De;Dp=AW;Cv=Co;BK=Cu;A9=AX;A8=B7;BJ=Dr;Dq=C3;Cq=Dy;var DM=uA[((k5)>>2)];var DL=((DM+96)&4294967295);var DK=uA[((DL)>>2)];var DJ=Cv;var DI=(((DJ)*(DK))&4294967295);var DH=(((((DI))|0)/256)|0);Cv=DH;var DG=Dp;var DF=((DG+2)&4294967295);var DE=((DF+4)&4294967295);var DD=uW[((DE)>>1)];var CJ=iB((DD),16,0);var CH=Cv;var CF=(((CH)-(CJ))&4294967295);var CE=(((((CF))|0)/2)|0);De=CE;var CC=De;var CB=A9;var CA=(((CC))|0)>(((CB))|0);if(CA){BL=1}else{BL=2}if(BL==1){var Cz=A9;De=Cz}var Cy=De;var Cx=BK;var Cj=(((Cy))|0)<(((Cx))|0);if(Cj){BL=3}else{BL=4}if(BL==3){var Ch=BK;De=Ch}var Cf=Dp;var Ce=((Cf+2)&4294967295);var Cd=((Ce+4)&4294967295);var Cc=uW[((Cd)>>1)];var Cb=De;var Ca=(((Cb))&65535);var B9=(((Ca)+(Cc))&65535);var B8=Dp;var BX=((B8+2)&4294967295);var BV=((BX+4)&4294967295);uW[((BV)>>1)]=B9;var BT=Dp;var BS=((BT+2)&4294967295);var BR=((BS+6)&4294967295);var BQ=uW[((BR)>>1)];var BP=BJ;var BO=(((BP))&65535);var BN=(((BO)+(BQ))&65535);var BM=Dp;var BA=((BM+2)&4294967295);var By=((BA+6)&4294967295);uW[((By)>>1)]=BN;var Bw=Cq;var Bv=(Bw)&32;var Bu=(((Bv))|0)!=0;if(Bu){BL=5}else{BL=6}if(BL==5){var Bt=BJ;var Bs=((0-(Bt))&4294967295);BJ=Bs}var Br=Dp;var Bq=((Br+2)&4294967295);var Bp=((Bq+8)&4294967295);var Bj=uW[((Bp)>>1)];var Bi=BJ;var Bh=(((Bi))&65535);var Bg=(((Bh)+(Bj))&65535);var Bf=Dp;var Be=((Bf+2)&4294967295);var Bd=((Be+8)&4294967295);uW[((Bd)>>1)]=Bg;var Bc=Dp;var Bb=((Bc+2)&4294967295);var Ba=((Bb+10)&4294967295);var A7=uW[((Ba)>>1)];var A6=BJ;var A5=(((A6))&65535);var A4=(((A5)+(A7))&65535);var A3=Dp;var A2=((A3+2)&4294967295);var A1=((A2+10)&4294967295);uW[((A1)>>1)]=A4;var A0=A8;var AZ=(((A0))|0)==1;if(AZ){CD=6;BL=7}else{CD=6;BL=12}if(BL==7){var AY=Dp;var AV=((AY+2)&4294967295);var AU=((AV+2)&4294967295);var AT=uW[((AU)>>1)];var AS=iB((AT),16,0);var AR=((235-(AS))&4294967295);De=AR;var AQ=De;var AP=(((AQ))|0)<-100;if(AP){BL=8}else{BL=9}$bb8_thread$$bb8$13:do{if(BL==8){De=-100}else{if(BL==9){var AO=(((AQ))|0)>-60;if(!(AO)){BL=11;break $bb8_thread$$bb8$13}De=-60}}}while(0);var AN=Dp;var AL=((AN+2)&4294967295);var AJ=((AL+2)&4294967295);var AI=uW[((AJ)>>1)];var AH=De;var i=(((AH))&65535);var e=(((i)+(AI))&65535);var DR=Dp;var DQ=((DR+2)&4294967295);var DP=((DQ+2)&4294967295);uW[((DP)>>1)]=e;var AM=A8;CD=11}var DO=CD==11?AM:(A0);var DN=(((DO))|0)==2;if(DN){BL=13}else{BL=18}if(BL==13){var DC=Dp;var DB=((DC+2)&4294967295);var DA=((DB+2)&4294967295);var Dz=uW[((DA)>>1)];var Dx=iB((Dz),16,0);var Dw=((235-(Dx))&4294967295);De=Dw;var Dv=De;var Du=(((Dv))|0)<-300;if(Du){BL=14}else{BL=15}$bb14_thread$$bb14$21:do{if(BL==14){De=-300}else{if(BL==15){var Dt=(((Dv))|0)>-150;if(!(Dt)){BL=17;break $bb14_thread$$bb14$21}De=-150}}}while(0);var Ds=Dp;var Do=((Ds+2)&4294967295);var Dn=((Do+2)&4294967295);var Dm=uW[((Dn)>>1)];var Dl=De;var Dk=(((Dl))&65535);var Dj=(((Dk)+(Dm))&65535);var Di=Dp;var Dh=((Di+2)&4294967295);var Dg=((Dh+2)&4294967295);uW[((Dg)>>1)]=Dj;var Df=Dp;var Dd=((Df+2)&4294967295);var Dc=((Dd)&4294967295);var Db=uW[((Dc)>>1)];var Da=De;var C9=(((Da))&65535);var C8=(((C9)+(Db))&65535);var C7=Dp;var C6=((C7+2)&4294967295);var C5=((C6)&4294967295);uW[((C5)>>1)]=C8}var C2=A8;var C1=(((C2))|0)==3;if(C1){BL=19}else{BL=24}if(BL==19){var C0=Dp;var CZ=((C0+2)&4294967295);var CY=((CZ+2)&4294967295);var CX=uW[((CY)>>1)];var CW=iB((CX),16,0);var CV=((100-(CW))&4294967295);De=CV;var CU=De;var CT=(((CU))|0)<-400;if(CT){BL=20}else{BL=21}$bb20_thread$$bb20$29:do{if(BL==20){De=-400}else{if(BL==21){var CS=(((CU))|0)>-300;if(!(CS)){BL=23;break $bb20_thread$$bb20$29}De=-400}}}while(0);var CR=Dp;var CQ=((CR+2)&4294967295);var CP=((CQ+2)&4294967295);var CO=uW[((CP)>>1)];var CN=De;var CM=(((CN))&65535);var CL=(((CM)+(CO))&65535);var CK=Dp;var CI=((CK+2)&4294967295);var CG=((CI+2)&4294967295);uW[((CG)>>1)]=CL;var Ct=Dp;var Cs=((Ct+2)&4294967295);var Cr=((Cs)&4294967295);var Cp=uW[((Cr)>>1)];var Cn=De;var Cm=(((Cn))&65535);var Cl=(((Cm)+(Cp))&65535);var Ck=Dp;var Ci=((Ck+2)&4294967295);var Cg=((Ci)&4294967295);uW[((Cg)>>1)]=Cl}var B5=Dp;var B4=Dq;B6=B5;AK=B4;var B3=uA[((k5)>>2)];var B2=((B3+112)&4294967295);var B1=((B2)&4294967295);var B0=uA[((B1)>>2)];var BZ=(((B0))|0)!=0;if(BZ){BL=27}else{BL=25}$_ZL18formants_reduce_hfP7frame_ti_exit$$bb_i$35:do{if(BL==25){Cw=2;while(1){var BY=Cw;var BW=B6;var BU=((BW+18)&4294967295);var BI=((BU+BY)&4294967295);var BH=ll[((BI)>>0)];var BG=oD((BH),8,0);var BF=AK;var BE=(((BG)*(BF))&4294967295);C4=BE;var BD=Cw;var BC=C4;var BB=(((((BC))|0)/100)|0);var Bz=(((BB))&255);var Bx=B6;var Bo=((Bx+18)&4294967295);var Bn=((Bo+BD)&4294967295);la[((Bn)>>0)]=Bz;var Bm=Cw;var Bl=(((Bm)+1)&4294967295);Cw=Bl;var Bk=(((Bl))|0)<=7;if(Bk){BL=26;continue}else{BL=27;break $_ZL18formants_reduce_hfP7frame_ti_exit$$bb_i$35}}}}while(0);return;return}function g9(){var AO;var AM;var AK;var AL=ll[((vU)>>0)];var AJ=oD((AL),1,0);var e=la[((sL)>>0)];var AI=(e)?2:0;var AH=(AI)|(AJ);AK=AH;var i=AK;AM=i;var AN=AM;return AN;return null}function ao(AP){var AQ;var AO;AO=AP;var AN=uA[((t3)>>2)];var AM=((v0+AN*16)&4294967295);var AL=((AM)&4294967295);uA[((AL)>>2)]=15;var AK=uA[((t3)>>2)];var AJ=((v0+AK*16)&4294967295);var AI=((AJ+4)&4294967295);var AH=AO;uA[((AI)>>2)]=AH;var i=uA[((t3)>>2)];var e=(((i)+1)&4294967295);uA[((t3)>>2)]=e;var AR=(((e))|0)>159;if(AR){AQ=1}else{AQ=2}if(AQ==1){uA[((t3)>>2)]=0}return;return}function dK(AW,e,AT,AS){var A5;var AI;var A2;var A7;var AR;AI=AW;A2=e;A7=AT;AR=AS;var AQ=uA[((t3)>>2)];var AP=((v0+AQ*16)&4294967295);var AO=((AP)&4294967295);uA[((AO)>>2)]=10;var AN=uA[((t3)>>2)];var AM=((v0+AN*16)&4294967295);var AL=((AM+4)&4294967295);var AK=AI;uA[((AL)>>2)]=AK;var AJ=uA[((t3)>>2)];var AH=A2;var i=(AH)&16777215;var A6=A7;var A4=(A6)<<24;var A3=(A4)|(i);var A1=((v0+AJ*16)&4294967295);var A0=((A1+8)&4294967295);uA[((A0)>>2)]=A3;var AZ=uA[((t3)>>2)];var AY=((v0+AZ*16)&4294967295);var AX=((AY+12)&4294967295);var AV=AR;uA[((AX)>>2)]=AV;var AU=uA[((t3)>>2)];var A9=(((AU)+1)&4294967295);uA[((t3)>>2)]=A9;var A8=(((A9))|0)>159;if(A8){A5=1}else{A5=2}if(A5==1){uA[((t3)>>2)]=0}return;return}function qY(A9,Dj,AM,AL,Dx,B7){var CC;var Dq=null;var DN;var Di;var CX;var AO;var D3;var BB;var AH;var EB;var B1;var DM;var EC;var Eh;var D2;var D4;var D5;var D6;DN=A9;Di=Dj;CX=AM;AO=AL;D3=Dx;BB=B7;var EA=DN;var Ez=(EA)&8388607;DN=Ez;var Ey=uA[((f2)>>2)];var Ex=DN;var Ew=((Ey+Ex)&4294967295);D6=Ew;var Ev=D6;var Eu=((Ev+2)&4294967295);var Et=ll[((Eu)>>0)];var Es=oD((Et),8,0);EC=Es;var Dw=D6;var Du=((Dw+1)&4294967295);var Ds=ll[((Du)>>0)];var Dr=oD((Ds),8,0);var Dp=(((Dr)*256)&4294967295);DM=Dp;var Do=D6;var Dn=((Do)&4294967295);var Dm=ll[((Dn)>>0)];var Dl=oD((Dm),8,0);var Dk=DM;var C9=(((Dl)+(Dk))&4294967295);DM=C9;var C7=DM;var C5=(((C7))|0)==0;if(C5){CC=1}else{CC=2}if(CC==1){EB=0}else{if(CC==2){var C4=uA[((((bX+24)&4294967295))>>2)];Eh=C4;var C3=EC;var C2=(((C3))|0)==0;if(C2){CC=3}else{CC=4}if(CC==3){var C1=Eh;var C0=(((C1)*2)&4294967295);Eh=C0}var CZ=CX;var CY=(((CZ))|0)>0;if(CY){CC=5}else{CC=9}$bb4$$bb9$8:do{if(CC==5){var CO=uA[((bW)>>2)];var CM=CX;var CK=(((CM)*(CO))&4294967295);var CJ=(((((CK))|0)/1000)|0);CX=CJ;var CI=EC;var CH=(((CI))|0)==0;if(CH){CC=6}else{CC=7}if(CC==6){var CG=CX;var CF=(((CG)*2)&4294967295);CX=CF}var CE=Eh;var CD=CX;var Ct=(((CD)*(CE))&4294967295);var Cr=DM;var Co=(((((Ct))|0)/(((Cr))|0))|0);D2=Co;var Cm=D2;var Ck=Eh;var Ci=(((Cm))|0)>(((Ck))|0);if(!(Ci)){CC=10;break $bb4$$bb9$8}var Cg=D2;Eh=Cg}else{if(CC==9){var Ce=DM;CX=Ce}}}while(0);var Cc=D3;var Ca=(((Cc))|0)>0;if(Ca){CC=11}else{CC=12}if(CC==11){var BX=CX;var BV=D3;var BS=(((BV)*(BX))&4294967295);var BQ=(((((BS))|0)/256)|0);CX=BQ}var BO=uA[((((bX+12)&4294967295))>>2)];var BM=CX;var BK=(((BM)*(BO))&4294967295);var BI=(((((BK))|0)/256)|0);B1=BI;var BG=AO;var BE=(BG)&4;var Bs=(((BE))|0)!=0;if(Bs){CC=13}else{CC=15}$bb13$$bb15$19:do{if(CC==13){var Bq=B1;var Bn=CX;var Bl=(((Bq))|0)>(((Bn))|0);if(!(Bl)){CC=15;break $bb13$$bb15$19}var Bj=CX;B1=Bj}}while(0);var Bh=B1;var Bf=Eh;var Bd=(((Bh))|0)<(((Bf))|0);if(Bd){CC=16}else{CC=17}if(CC==16){var Bb=Eh;B1=Bb}var Ba=EC;var AZ=(((Ba))|0)==0;if(AZ){CC=18}else{CC=19}if(CC==18){var AX=B1;var AV=(((((AX))|0)/2)|0);B1=AV;var AU=DM;var AT=(((((AU))|0)/2)|0);DM=AT}var AS=BB;var AR=(((AS))|0)<0;if(AR){CC=20}else{CC=21}if(CC==20){var AQ=B1;EB=AQ}else{if(CC==21){var AP=DM;var AN=(((((AP))|0)/4)|0);D4=AN;var AK=DN;var AJ=(((AK)+4)&4294967295);DN=AJ;var AI=Di;var i=(AI)&256;var e=(((i))|0)!=0;if(e){CC=22}else{CC=25}if(CC==22){var EH=uA[((t3)>>2)];uA[((q)>>2)]=EH;var EG=uA[((t3)>>2)];var EF=((v0+EG*16)&4294967295);var EE=((EF)&4294967295);D5=EE;var ED=D5;var Er=((ED)&4294967295);uA[((Er)>>2)]=7;var Eq=DM;var Ep=(Eq)<<16;var Eo=B1;var En=(Ep)|(Eo);var Em=D5;var El=((Em+4)&4294967295);uA[((El)>>2)]=En;var Ek=uA[((f2)>>2)];var Ej=DN;var Ei=((Ek+Ej)&4294967295);var Eg=(Ei);var Ef=D5;var Ee=((Ef+8)&4294967295);uA[((Ee)>>2)]=Eg;var Ed=BB;var Ec=(((Ed)*256)&4294967295);var Eb=EC;var Ea=(((Ec)+(Eb))&4294967295);var D9=D5;var D8=((D9+12)&4294967295);uA[((D8)>>2)]=Ea;var D7=uA[((t3)>>2)];var D1=(((D7)+1)&4294967295);uA[((t3)>>2)]=D1;var D0=(((D1))|0)>159;if(D0){CC=23}else{CC=24}if(CC==23){uA[((t3)>>2)]=0}var DZ=B1;EB=DZ}else{if(CC==25){var DY=B1;var DX=DM;var DW=(((DY))|0)>(((DX))|0);if(DW){CC=26}else{CC=27}if(CC==26){var DV=D4;var DU=(((DV)*3)&4294967295);D2=DU;var DT=B1;var DS=D2;var DR=(((DT)-(DS))&4294967295);B1=DR}else{if(CC==27){var DQ=B1;D2=DQ;B1=0}}var DP=uA[((t3)>>2)];uA[((q)>>2)]=DP;var DO=uA[((t3)>>2)];var DL=((v0+DO*16)&4294967295);var DK=((DL)&4294967295);D5=DK;var DJ=D5;var DI=((DJ)&4294967295);uA[((DI)>>2)]=6;var DH=D5;var DG=((DH+4)&4294967295);var DF=D2;uA[((DG)>>2)]=DF;var DE=uA[((f2)>>2)];var DD=DN;var DC=((DE+DD)&4294967295);var DB=(DC);var DA=D5;var Dz=((DA+8)&4294967295);uA[((Dz)>>2)]=DB;var Dy=BB;var Dv=(((Dy)*256)&4294967295);var Dt=EC;var Dh=(((Dv)+(Dt))&4294967295);var Dg=D5;var Df=((Dg+12)&4294967295);uA[((Df)>>2)]=Dh;var De=uA[((t3)>>2)];var Dd=(((De)+1)&4294967295);uA[((t3)>>2)]=Dd;var Dc=(((Dd))|0)>159;if(Dc){CC=29}else{CC=30}if(CC==29){uA[((t3)>>2)]=0}var Db=D4;var Da=(((Db)*3)&4294967295);var C8=B1;var C6=(((Da))|0)<(((C8))|0);if(C6){Dq=30;CC=31}else{Dq=30;CC=36}$bb27$$bb31$45:do{if(CC==31){while(1){var CW=D4;D2=CW;var CV=EC;var CU=(((CV))|0)==0;if(CU){CC=32}else{CC=33}if(CC==32){var CT=D2;var CS=(((CT)*2)&4294967295);D2=CS}var CR=uA[((t3)>>2)];uA[((q)>>2)]=CR;var CQ=uA[((t3)>>2)];var CP=((v0+CQ*16)&4294967295);var CN=((CP)&4294967295);D5=CN;var CL=D5;var CB=((CL)&4294967295);uA[((CB)>>2)]=6;var CA=D4;var Cz=(((CA)*2)&4294967295);var Cy=D5;var Cx=((Cy+4)&4294967295);uA[((Cx)>>2)]=Cz;var Cw=uA[((f2)>>2)];var Cv=DN;var Cu=D2;var Cs=(((Cu)+(Cv))&4294967295);var Cq=((Cw+Cs)&4294967295);var B6=(Cq);var B5=D5;var B4=((B5+8)&4294967295);uA[((B4)>>2)]=B6;var B3=BB;var B2=(((B3)*256)&4294967295);var B0=EC;var BZ=(((B2)+(B0))&4294967295);var BY=D5;var BW=((BY+12)&4294967295);uA[((BW)>>2)]=BZ;var BU=uA[((t3)>>2)];var BA=(((BU)+1)&4294967295);uA[((t3)>>2)]=BA;var Bz=(((BA))|0)>159;if(Bz){CC=34}else{CC=35}if(CC==34){uA[((t3)>>2)]=0}var By=D4;var Bx=(((By)*2)&4294967295);var Bw=B1;var Bv=(((Bw)-(Bx))&4294967295);B1=Bv;var Bu=D4;var Bt=(((Bu)*3)&4294967295);var Br=B1;var Bp=(((Bt))|0)<(((Br))|0);if(Bp){Dq=35;CC=31;continue}else{Dq=35;CC=36;break $bb27$$bb31$45}}}}while(0);var A7=Dq==35?Br:(C8);var A6=(((A7))|0)>0;if(A6){CC=37}else{CC=41}$bb32$$bb35$55:do{if(CC==37){var A5=DM;var A4=B1;var A3=(((A5)-(A4))&4294967295);D2=A3;var A2=EC;var A1=(((A2))|0)==0;if(A1){CC=38}else{CC=39}if(CC==38){var A0=D2;var AY=(((A0)*2)&4294967295);D2=AY}var AW=uA[((t3)>>2)];uA[((q)>>2)]=AW;var Cp=uA[((t3)>>2)];var Cn=((v0+Cp*16)&4294967295);var Cl=((Cn)&4294967295);D5=Cl;var Cj=D5;var Ch=((Cj)&4294967295);uA[((Ch)>>2)]=6;var Cf=D5;var Cd=((Cf+4)&4294967295);var Cb=B1;uA[((Cd)>>2)]=Cb;var B9=uA[((f2)>>2)];var B8=DN;var BT=D2;var BR=(((BT)+(B8))&4294967295);var BP=((B9+BR)&4294967295);var BN=(BP);var BL=D5;var BJ=((BL+8)&4294967295);uA[((BJ)>>2)]=BN;var BH=BB;var BF=(((BH)*256)&4294967295);var BD=EC;var BC=(((BF)+(BD))&4294967295);var Bo=D5;var Bm=((Bo+12)&4294967295);uA[((Bm)>>2)]=BC;var Bk=uA[((t3)>>2)];var Bi=(((Bk)+1)&4294967295);uA[((t3)>>2)]=Bi;var Bg=(((Bi))|0)>159;if(!(Bg)){CC=41;break $bb32$$bb35$55}uA[((t3)>>2)]=0}}while(0);var Be=B1;EB=Be}}}}}}var Bc=EB;AH=Bc;var A8=AH;return A8;return null}function iV(AL,i){var AU;var AP;var A7;var AV;var AX;var AW;var A6;var AJ;AV=AL;AX=i;var A5=AX;var A4=(((A5))|0)==0;if(A4){AU=1}else{AU=3}$bb$$bb2$2:do{if(AU==1){var A3=AV;var A2=((A3)&4294967295);var A1=uW[((A2)>>1)];var A0=iB((A1),16,0)<0;if(!(A0)){AU=3;break $bb$$bb2$2}var AZ=AV;A6=AZ;AU=8;break $bb$$bb2$2}}while(0);if(AU==3){var AY=uA[((dk)>>2)];var AT=(((AY)+1)&4294967295);uA[((dk)>>2)]=AT;var AS=(((AT))|0)>159;if(AS){AU=4}else{AU=5}if(AU==4){uA[((dk)>>2)]=0}var AR=uA[((dk)>>2)];var AQ=((lS+AR*64)&4294967295);A7=AQ;AP=AQ;AJ=AQ;var AO=(AQ)!=0;if(AO){AU=6}else{AU=7}if(AU==6){var AN=AJ;var AM=AV;var AK=AN;var AI=AM;ns(AK,AI,64,1,0);var AH=AJ;var e=((AH+16)&4294967295);la[((e)>>0)]=0;var Bg=AJ;var Bf=((Bg)&4294967295);var Be=uW[((Bf)>>1)];var Bd=(Be)|-32768;var Bc=AJ;var Bb=((Bc)&4294967295);uW[((Bb)>>1)]=Bd}var Ba=AJ;A6=Ba}var A9=A6;AW=A9;var A8=AW;return A8;return null}function yw(){var Fl;var EI=null;var FY;var AU;var Cs;var Fn;var CZ;var C0;var Fa;var CD;var BK;var BV;var Cn;var CO;var C7;var DD;var DB;var BJ;var Fy;var CC=uA[((oR)>>2)];var CB=uA[((tW)>>2)];var CA=(((CC))|0)==(((CB))|0);if(CA){Fl=58}else{Fl=1}$return$$bb$2:do{if(Fl==1){var Cz=uA[((sz)>>2)];var Cy=(((Cz))|0)<0;if(Cy){Fl=3}else{Fl=2}$bb2$$bb1$4:do{if(Fl==2){var Cx=uA[((sz)>>2)];var Cw=uA[((oR)>>2)];var Cv=(((Cx))|0)==(((Cw))|0);if(Cv){Fl=3;break $bb2$$bb1$4}var Ct=uA[((sz)>>2)];var E9=((v0+Ct*16)&4294967295);var E8=((E9)&4294967295);Cs=E8;var E7=Cs;var E6=((E7+8)&4294967295);var E5=uA[((E6)>>2)];var E4=(E5);Fa=E4;var E3=uA[((sz)>>2)];var E2=(((E3)-1)&4294967295);CD=E2;var E1=Fa;CZ=E1;var E0=CZ;Fn=E0;EI=4;$bb4$7:while(1){var EE=EI==30?A3:(E2);var ED=(((EE))|0)<0;if(ED){Fl=6}else{Fl=7}if(Fl==6){CD=159}var EC=CD;var EB=((v0+EC*16)&4294967295);var EA=((EB)&4294967295);Cs=EA;var Ez=Cs;var Ey=((Ez)&4294967295);var Ex=uA[((Ey)>>2)];var Ew=(((Ex))|0)==5;if(Ew){Fl=31;break $bb4$7}var Ev=Cs;var Eb=((Ev)&4294967295);var Ea=uA[((Eb)>>2)];var D9=(((Ea))|0)==6;if(D9){Fl=31;break $bb4$7}var D8=Cs;var D7=((D8)&4294967295);var D6=uA[((D7)>>2)];var D5=(((D6))|0)<=4;if(D5){Fl=10}else{Fl=29}$bb10$$bb30$14:do{if(Fl==10){var D4=Cs;var D3=((D4+4)&4294967295);var D2=uA[((D3)>>2)];var DR=(D2)&65535;BK=DR;var DQ=Cs;var DP=((DQ+12)&4294967295);var DO=uA[((DP)>>2)];var DN=(DO);C0=DN;var DM=C0;var DL=Fn;var DK=(DM)==(DL);if(!(DK)){Fl=31;break $bb4$7}var DJ=CZ;var DI=(DJ);var Dv=Cs;var Du=((Dv+12)&4294967295);uA[((Du)>>2)]=DI;var Dt=CZ;C0=Dt;var Ds=Cs;var Dr=((Ds+8)&4294967295);var Dq=uA[((Dr)>>2)];var Dp=(Dq);CZ=Dp;var Do=CZ;Fn=Do;Cn=0;var Dn=Fn;var Dm=((Dn)&4294967295);var Dl=uW[((Dm)>>1)];var Dk=iB((Dl),16,0);var Dj=(Dk)&16;var Di=(((Dj))|0)!=0;if(Di){Fl=31;break $bb4$7}var Dh=Fn;var Dg=((Dh)&4294967295);var Df=uW[((Dg)>>1)];var De=iB((Df),16,0);var Dd=(De)&32;var Dc=(((Dd))|0)!=0;if(Dc){Fl=13}else{Fl=14}if(Fl==13){var Db=BK;var Da=(((Db)*12)&4294967295);var C9=(((((Da))|0)/10)|0);BK=C9}BV=0;$bb15$21:while(1){var C8=Fn;var C6=((C8)&4294967295);var C5=uW[((C6)>>1)];var C4=iB((C5),16,0);var C3=(C4)&8;var C2=(((C3))|0)!=0;if(C2){Fl=16}else{Fl=17}$bb16$$bb17$23:do{if(Fl==16){var C1=BV;var CY=(((C1))|0)<=2;if(CY){Fl=28;break $bb16$$bb17$23}else{Fl=17;break $bb16$$bb17$23}}}while(0);$bb28$$bb17$25:do{if(Fl==17){var CX=BV;var CW=C0;var CV=((CW+2)&4294967295);var CU=((CV+CX*2)&4294967295);var CT=uW[((CU)>>1)];var CS=iB((CT),16,0);DD=CS;var CR=BV;var CQ=Fn;var CP=((CQ+2)&4294967295);var CN=((CP+CR*2)&4294967295);var CM=uW[((CN)>>1)];var CL=iB((CM),16,0);DB=CL;var CK=DB;var CJ=DD;var CI=(((CK)-(CJ))&4294967295);C7=CI;var CH=C7;var CG=(((CH))|0)>0;var CF=oD((CG),1,0);AU=CF;var Fm=iB((CF),8,0)!=0;if(Fm){Fl=18}else{Fl=19}if(Fl==18){var CE=DD;var Cq=(((CE)*2)&4294967295);var Cp=DB;var Co=(((Cq)+(Cp))&4294967295);CO=Co}else{if(Fl==19){var Cm=DB;var Cl=(((Cm)*2)&4294967295);var Ck=DD;var Cj=(((Cl)+(Ck))&4294967295);CO=Cj}}var Ci=BV;var Ch=((h5+Ci*4)&4294967295);var Cg=uA[((Ch)>>2)];var Cf=CO;var Ce=(((Cf)*(Cg))&4294967295);var Cd=(((((Ce))|0)/3000)|0);CO=Cd;var Cc=CO;var Cb=BK;var Ca=(((Cb)*(Cc))&4294967295);var B9=(((((Ca))|0)/256)|0);CO=B9;var B8=C7;var B7=CO;var B6=(((B8))|0)>(((B7))|0);if(B6){Fl=21}else{Fl=24}if(Fl==21){var B5=Cn;var B4=(((B5))|0)==0;if(B4){Fl=22}else{Fl=23}if(Fl==22){var B3=Fn;var B2=iV(B3,0);CZ=B2;Cn=1}var B1=BV;var B0=BV;var BZ=C0;var BY=((BZ+2)&4294967295);var BX=((BY+B0*2)&4294967295);var BW=uW[((BX)>>1)];var BU=CO;var BT=(((BU))&65535);var BS=(((BT)+(BW))&65535);var BR=CZ;var BQ=((BR+2)&4294967295);var BP=((BQ+B1*2)&4294967295);uW[((BP)>>1)]=BS;var BO=CZ;var BN=(BO);var BM=Cs;var BL=((BM+8)&4294967295);uA[((BL)>>2)]=BN}else{if(Fl==24){var BI=CO;var BH=((0-(BI))&4294967295);var BG=C7;var BF=(((BH))|0)>(((BG))|0);if(!(BF)){Fl=28;break $bb28$$bb17$25}var BE=Cn;var BD=(((BE))|0)==0;if(BD){Fl=26}else{Fl=27}if(Fl==26){var BC=Fn;var BB=iV(BC,0);CZ=BB;Cn=1}var BA=BV;var Bz=BV;var By=C0;var Bx=((By+2)&4294967295);var Bw=((Bx+Bz*2)&4294967295);var Bv=uW[((Bw)>>1)];var Bu=CO;var Bt=(((Bu))&65535);var Bs=(((Bv)-(Bt))&65535);var Br=CZ;var Bq=((Br+2)&4294967295);var Bp=((Bq+BA*2)&4294967295);uW[((Bp)>>1)]=Bs;var Bo=CZ;var Bn=(Bo);var Bm=Cs;var Bl=((Bm+8)&4294967295);uA[((Bl)>>2)]=Bn}}}}while(0);var Bk=BV;var Bj=(((Bk)+1)&4294967295);BV=Bj;var Bi=(((Bj))|0)<=5;if(Bi){Fl=15;continue $bb15$21}else{Fl=29;break $bb10$$bb30$14}}}}while(0);var Bh=uA[((oR)>>2)];var Bf=CD;var Bd=(((Bf))|0)==(((Bh))|0);if(Bd){Fl=31;break $bb4$7}var A4=CD;var A3=(((A4)-1)&4294967295);CD=A3;EI=30;Fl=5;continue $bb4$7}var A2=uA[((sz)>>2)];CD=A2;Fn=0;$bb33$45:while(1){var A1=CD;var A0=((v0+A1*16)&4294967295);var AZ=((A0)&4294967295);Cs=AZ;var AY=Cs;var AX=((AY)&4294967295);var AV=uA[((AX)>>2)];var AS=(((AV))|0)==5;if(AS){Fl=57;break $bb33$45}var AJ=Cs;var AI=((AJ)&4294967295);var AH=uA[((AI)>>2)];var i=(((AH))|0)==6;if(i){Fl=57;break $bb33$45}var e=Cs;var F8=((e)&4294967295);var F7=uA[((F8)>>2)];var F6=(((F7))|0)<=4;if(F6){Fl=35}else{Fl=54}$bb37$$bb60$49:do{if(Fl==35){var F4=Cs;var F2=((F4+4)&4294967295);var FS=uA[((F2)>>2)];var FR=(FS)&65535;BK=FR;var FQ=Cs;var FP=((FQ+8)&4294967295);var FO=uA[((FP)>>2)];var FN=(FO);C0=FN;var FM=Fn;var FL=(FM)!=0;if(FL){Fl=36}else{Fl=38}if(Fl==36){var FJ=C0;var FH=Fn;var Bg=(FJ)==(FH);if(!(Bg)){Fl=57;break $bb33$45}var Be=CZ;var Bc=(Be);var Bb=Cs;var Ba=((Bb+8)&4294967295);uA[((Ba)>>2)]=Bc;var A9=CZ;C0=A9}var A8=Cs;var A7=((A8+12)&4294967295);var A6=uA[((A7)>>2)];var A5=(A6);CZ=A5;var AW=CZ;Fn=AW;Cn=0;var AT=C0;var AR=((AT)&4294967295);var AQ=uW[((AR)>>1)];var AP=iB((AQ),16,0);var AO=(AP)&16;var AN=(((AO))|0)!=0;if(AN){Fl=57;break $bb33$45}var AM=C0;var AL=((AM)&4294967295);var AK=uW[((AL)>>1)];var F5=iB((AK),16,0);var F3=(F5)&32;var F1=(((F3))|0)!=0;if(F1){Fl=40}else{Fl=41}if(Fl==40){var F0=BK;var FZ=(((F0)*6)&4294967295);var FX=(((((FZ))|0)/5)|0);BK=FX}BV=0;$bb44$59:while(1){var FW=BV;var FV=C0;var FU=((FV+2)&4294967295);var FT=((FU+FW*2)&4294967295);var FK=uW[((FT)>>1)];var FI=iB((FK),16,0);BJ=FI;var FG=BV;var FF=Fn;var FE=((FF+2)&4294967295);var FD=((FE+FG*2)&4294967295);var FC=uW[((FD)>>1)];var FB=iB((FC),16,0);Fy=FB;var FA=Fy;var Fz=BJ;var Fx=(((FA)-(Fz))&4294967295);C7=Fx;var Fw=C7;var Fv=(((Fw))|0)>0;var Fu=oD((Fv),1,0);FY=Fu;var Cr=iB((Fu),8,0)!=0;if(Cr){Fl=43}else{Fl=44}if(Fl==43){var Ft=BJ;var Fs=(((Ft)*2)&4294967295);var Fr=Fy;var Fq=(((Fs)+(Fr))&4294967295);CO=Fq}else{if(Fl==44){var Fp=Fy;var Fo=(((Fp)*2)&4294967295);var Fk=BJ;var Fj=(((Fo)+(Fk))&4294967295);CO=Fj}}var Fi=BV;var Fh=((h5+Fi*4)&4294967295);var Fg=uA[((Fh)>>2)];var Ff=CO;var Fe=(((Ff)*(Fg))&4294967295);var Fd=(((((Fe))|0)/3000)|0);CO=Fd;var Fc=CO;var Fb=BK;var EZ=(((Fb)*(Fc))&4294967295);var EY=(((((EZ))|0)/256)|0);CO=EY;var EX=C7;var EW=CO;var EV=(((EX))|0)>(((EW))|0);if(EV){Fl=46}else{Fl=49}$bb51$$bb54$65:do{if(Fl==46){var EU=Cn;var ET=(((EU))|0)==0;if(ET){Fl=47}else{Fl=48}if(Fl==47){var ES=Fn;var ER=iV(ES,0);CZ=ER;Cn=1}var EP=BV;var Eu=BV;var Et=C0;var Es=((Et+2)&4294967295);var Er=((Es+Eu*2)&4294967295);var Eq=uW[((Er)>>1)];var Ep=CO;var Eo=(((Ep))&65535);var En=(((Eo)+(Eq))&65535);var Em=CZ;var Ek=((Em+2)&4294967295);var D1=((Ek+EP*2)&4294967295);uW[((D1)>>1)]=En;var D0=CZ;var DZ=(D0);var DY=Cs;var DX=((DY+12)&4294967295);uA[((DX)>>2)]=DZ}else{if(Fl==49){var DW=CO;var DV=((0-(DW))&4294967295);var DU=C7;var DT=(((DV))|0)>(((DU))|0);if(!(DT)){Fl=53;break $bb51$$bb54$65}var DS=Cn;var DH=(((DS))|0)==0;if(DH){Fl=51}else{Fl=52}if(Fl==51){var DG=Fn;var DF=iV(DG,0);CZ=DF;Cn=1}var DE=BV;var DC=BV;var DA=C0;var Dz=((DA+2)&4294967295);var Dy=((Dz+DC*2)&4294967295);var Dx=uW[((Dy)>>1)];var Dw=CO;var EQ=(((Dw))&65535);var EO=(((Dx)-(EQ))&65535);var EN=CZ;var EM=((EN+2)&4294967295);var EL=((EM+DE*2)&4294967295);uW[((EL)>>1)]=EO;var EK=CZ;var EJ=(EK);var EH=Cs;var EG=((EH+12)&4294967295);uA[((EG)>>2)]=EJ}}}while(0);var EF=BV;var El=(((EF)+1)&4294967295);BV=El;var Ej=(((El))|0)<=5;if(Ej){Fl=42;continue $bb44$59}else{Fl=54;break $bb37$$bb60$49}}}}while(0);var Ei=CD;var Eh=(((Ei)+1)&4294967295);CD=Eh;var Eg=(((Eh))|0)>159;if(Eg){Fl=55}else{Fl=56}if(Fl==55){CD=0}var Ef=uA[((tW)>>2)];var Ee=CD;var Ed=(((Ee))|0)==(((Ef))|0);if(Ed){Fl=57;break $bb33$45}else{Fl=32;continue $bb33$45}}var Ec=uA[((tW)>>2)];uA[((oR)>>2)]=Ec;Fl=58;break $return$$bb$2}}while(0);var Cu=uA[((tW)>>2)];uA[((oR)>>2)]=Cu}}while(0);return;return}function sR(Bs,Bm){var Bi;var Bl;var AZ;var AI;var AJ;var BQ;var Bg;var Bh;var BA;var Bj;Bh=Bs;BA=Bm;var BP=Bh;var BO=(((BP))|0)==0;if(BO){Bi=1}else{Bi=2}if(Bi==1){Bj=0}else{if(Bi==2){var BN=Bh;var BM=BA;AZ=BN;AI=BM;var BL=AI;var BK=(((BL))|0)==0;if(BK){Bi=3}else{Bi=6}if(Bi==3){var BJ=AZ;var BI=(((BJ))|0)>199;if(BI){Bi=4}else{Bi=5}if(Bi==4){var BH=uA[((((bX+4)&4294967295))>>2)];var Bx=AZ;var Bw=(((Bx)*(BH))&4294967295);var Bv=(((((Bw))|0)/256)|0);Bg=Bv}else{if(Bi==5){var Bu=uA[((((bX)&4294967295))>>2)];var Bt=AZ;var Br=(((Bt)*(Bu))&4294967295);var Bq=(((((Br))|0)/256)|0);Bg=Bq}}}else{if(Bi==6){var Bp=uA[((((bX+12)&4294967295))>>2)];var Bo=AZ;var Bn=(((Bo)*(Bp))&4294967295);var Bf=(((((Bn))|0)/256)|0);Bg=Bf}}var Be=uA[((((bX+8)&4294967295))>>2)];var Bd=Bg;var Bc=(((Be))|0)>(((Bd))|0);if(Bc){Bi=8}else{Bi=9}if(Bi==8){var Bb=uA[((((bX+8)&4294967295))>>2)];Bg=Bb}var Ba=Bg;BQ=Ba;var A9=BQ;AJ=A9;var AK=AJ;Bj=AK;var A8=uA[((bW)>>2)];var A7=Bj;var A6=(((A7)*(A8))&4294967295);var A5=(((((A6))|0)/1000)|0);Bj=A5}}Bl=1;var A4=uA[((j)>>2)];var A3=(((A4))|0)>0;var A2=uA[((hk)>>2)];var A1=(((A2))|0)>=0;var Bk=(A3)&(A1);if(Bk){Bi=11}else{Bi=14}if(Bi==11){var A0=uA[((hk)>>2)];var AY=((v0+A0*16)&4294967295);var AX=((AY+4)&4294967295);var AW=uA[((AX)>>2)];var AV=(((AW))|0)==0;if(AV){Bi=12}else{Bi=13}if(Bi==12){var AU=uA[((hk)>>2)];var AT=uA[((j)>>2)];var AS=((v0+AU*16)&4294967295);var AR=((AS+4)&4294967295);uA[((AR)>>2)]=AT}uA[((j)>>2)]=0}var AQ=Bl;var AP=(((AQ))|0)!=0;if(AP){Bi=15}else{Bi=16}if(Bi==15){uA[((q)>>2)]=-1;uA[((mD)>>2)]=0;var AO=uA[((t3)>>2)];uA[((tW)>>2)]=AO;yw();uA[((sz)>>2)]=-1;ud(tc,0,16,1,0)}var AN=uA[((t3)>>2)];var AM=((v0+AN*16)&4294967295);var AL=((AM)&4294967295);uA[((AL)>>2)]=5;var AH=uA[((t3)>>2)];var i=((v0+AH*16)&4294967295);var e=((i+4)&4294967295);var BX=Bj;uA[((e)>>2)]=BX;var BW=uA[((t3)>>2)];var BV=(((BW)+1)&4294967295);uA[((t3)>>2)]=BV;var BU=(((BV))|0)>159;if(BU){Bi=17}else{Bi=18}if(Bi==17){uA[((t3)>>2)]=0}uA[((mD)>>2)]=0;var BT=uA[((oy)>>2)];var BS=(((BT))|0)!=0;if(BS){Bi=19}else{Bi=21}$bb3$$return$28:do{if(Bi==19){var BR=uA[((t3)>>2)];var BG=((v0+BR*16)&4294967295);var BF=((BG)&4294967295);uA[((BF)>>2)]=14;uA[((oy)>>2)]=0;var BE=uA[((t3)>>2)];var BD=((v0+BE*16)&4294967295);var BC=((BD+4)&4294967295);uA[((BC)>>2)]=0;var BB=uA[((t3)>>2)];var Bz=(((BB)+1)&4294967295);uA[((t3)>>2)]=Bz;var By=(((Bz))|0)>159;if(!(By)){Bi=21;break $bb3$$return$28}uA[((t3)>>2)]=0}}while(0);return;return}function lq(Bq,Bl,Bk){var AW;var AY;var Bj;var AK;var Bi;var AH;Bj=Bq;AK=Bl;Bi=Bk;AY=0;var Bh=uA[((j)>>2)];var Bg=(((Bh))|0)>0;var Bf=uA[((hk)>>2)];var Be=(((Bf))|0)>=0;var AI=(Bg)&(Be);if(AI){AW=1}else{AW=4}if(AW==1){var Bd=uA[((hk)>>2)];var Bc=((v0+Bd*16)&4294967295);var Bb=((Bc+4)&4294967295);var A9=uA[((Bb)>>2)];var A7=(((A9))|0)==0;if(A7){AW=2}else{AW=3}if(AW==2){var A5=uA[((hk)>>2)];var AT=uA[((j)>>2)];var AS=((v0+A5*16)&4294967295);var AR=((AS+4)&4294967295);uA[((AR)>>2)]=AT}uA[((j)>>2)]=0}var AQ=AY;var AP=(((AQ))|0)!=0;if(AP){AW=5}else{AW=6}if(AW==5){uA[((q)>>2)]=-1;uA[((mD)>>2)]=0;var AO=uA[((t3)>>2)];uA[((tW)>>2)]=AO;yw();uA[((sz)>>2)]=-1;ud(tc,0,16,1,0)}var AN=AK;var AM=(((AN))|0)==255;if(AM){AW=7}else{AW=8}$bb1_thread$$bb1$11:do{if(AW==7){AK=55;Bi=76;var AL=uA[((((lx)&4294967295))>>2)];Bj=AL;var AJ=uA[((t3)>>2)];uA[((hk)>>2)]=AJ;uA[((j)>>2)]=0}else{if(AW==8){var i=Bi;var e=uA[((t3)>>2)];uA[((hk)>>2)]=e;uA[((j)>>2)]=0;var Bv=(((i))|0)<0;if(!(Bv)){AW=10;break $bb1_thread$$bb1$11}Bi=0}}}while(0);var Bu=uA[((t3)>>2)];var Bt=((v0+Bu*16)&4294967295);var Bs=((Bt)&4294967295);AH=Bs;var Br=AH;var Bp=((Br)&4294967295);uA[((Bp)>>2)]=9;var Bo=AH;var Bn=((Bo+4)&4294967295);uA[((Bn)>>2)]=0;var Bm=Bj;var Ba=(Bm);var A8=AH;var A6=((A8+8)&4294967295);uA[((A6)>>2)]=Ba;var A4=AK;var A3=(((A4)*65536)&4294967295);var A2=Bi;var A1=(((A3)+(A2))&4294967295);var A0=AH;var AZ=((A0+12)&4294967295);uA[((AZ)>>2)]=A1;var AX=uA[((t3)>>2)];var AV=(((AX)+1)&4294967295);uA[((t3)>>2)]=AV;var AU=(((AV))|0)>159;if(AU){AW=11}else{AW=12}if(AW==11){uA[((t3)>>2)]=0}return;return}function c(A4,A9,Bv){var A5;var Bb;var Bx;var A8;var A6;var A7;var Bu;var AP;var AI;Bx=A4;A8=A9;A6=Bv;Bb=1;var Bt=uA[((j)>>2)];var Bs=(((Bt))|0)>0;var Br=uA[((hk)>>2)];var Bq=(((Br))|0)>=0;var AH=(Bs)&(Bq);if(AH){A5=1}else{A5=4}if(A5==1){var Bp=uA[((hk)>>2)];var Bo=((v0+Bp*16)&4294967295);var Bm=((Bo+4)&4294967295);var Bk=uA[((Bm)>>2)];var Bi=(((Bk))|0)==0;if(Bi){A5=2}else{A5=3}if(A5==2){var A1=uA[((hk)>>2)];var AZ=uA[((j)>>2)];var AX=((v0+A1*16)&4294967295);var AV=((AX+4)&4294967295);uA[((AV)>>2)]=AZ}uA[((j)>>2)]=0}var AT=Bb;var AR=(((AT))|0)!=0;if(AR){A5=5}else{A5=6}if(A5==5){uA[((q)>>2)]=-1;uA[((mD)>>2)]=0;var AO=uA[((t3)>>2)];uA[((tW)>>2)]=AO;yw();uA[((sz)>>2)]=-1;ud(tc,0,16,1,0)}var AM=A6;var AK=(((AM))|0)==-1;if(AK){A5=7}else{A5=8}if(A5==7){var AJ=A6;AP=AJ}else{if(A5==8){var e=Bx;var BG=((e+88)&4294967295);var BF=((BG+4)&4294967295);var BE=uA[((BF)>>2)];AP=BE;var BD=AP;var BC=(((BD))|0)==0;if(BC){A5=9}else{A5=10}if(A5==9){AP=100}var BB=AP;var BA=(((BB)*32)&4294967295);var Bz=(((((BA))|0)/100)|0);AP=Bz}}uA[((iO)>>2)]=0;var By=Bx;var Bn=((By+68)&4294967295);var Bl=((Bn+4)&4294967295);var Bj=uA[((Bl)>>2)];var Bh=(((Bj))|0)==0;if(Bh){A5=12}else{A5=13}if(A5==12){AI=0}else{if(A5==13){var Bg=Bx;var Bf=((Bg)&4294967295);var Be=uA[((Bf)>>2)];var Bd=Bx;var Bc=((Bd+4)&4294967295);var Ba=((Bc+40)&4294967295);var A3=uA[((Ba)>>2)];var A2=(((A3)*2)&4294967295);var A0=Bx;var AY=((A0+68)&4294967295);var AW=((AY+4)&4294967295);var AU=uA[((AW)>>2)];var AS=A8;var AQ=AP;var AN=qY(AU,2,A2,Be,AS,AQ);AI=AN}}uA[((mD)>>2)]=0;var AL=AI;Bu=AL;var i=Bu;A7=i;var Bw=A7;return Bw;return null}function hQ(CJ,Cw,Bi,Bg,Cv,C0){var FT;var F5;var CH;var CZ;var DX;var CX;var F4;var CI;var Gs;var CW;var CM;var Cn;var Ga;var BO;var CV;var BB;var CE;var CF;var B1;var CC;var BP;var Fy;var CD;var Du;var CU;var CY;var BA;var BS;var BN;var CB;var D2;var D0;var CL;var Ey;var Dx;var Cb;var BK;var DT;var Dy;var CG;CF=CJ;B1=Cw;CC=Bi;BP=Bg;Fy=Cv;CD=C0;Dy=0;var CT=B1;var CS=uA[((CT)>>2)];var CR=(((CS))|0)<=1;if(CR){FT=1}else{FT=2}if(FT==1){CU=0}else{if(FT==2){var CQ=CC;var CP=(CQ)&63;var CO=(((CP)*2)&4294967295);BN=CO;var FI=CC;var FH=(((FI))>>>0)>>>6;var FG=(FH)&63;CB=FG;var FF=CC;var FE=(((FF))>>>0)>>>12;BK=FE;var FD=BP;var FC=(FD)&63;var FB=(((FC)*50)&4294967295);D0=FB;var FA=BP;var Fz=(((FA))>>>0)>>>6;var Fd=(Fz)&31;var Fc=(((Fd)*50)&4294967295);var Fb=(((Fc)+-750)&4294967295);CL=Fb;var Fa=BP;var E9=(((Fa))>>>0)>>>11;var E8=(E9)&31;var E7=(((E8)*50)&4294967295);var E6=(((E7)+-750)&4294967295);Ey=E6;var E5=BP;var E4=(((E5))>>>0)>>>16;var EI=(E4)&31;var EH=(((EI)*50)&4294967295);var EG=(((EH)+-750)&4294967295);Dx=EG;var EF=BP;var EE=(((EF))>>>0)>>>21;var ED=(EE)&31;var EC=(((ED)*8)&4294967295);Cb=EC;var EB=BP;var EA=(((EB))>>>0)>>>26;var Ez=(EA)&7;D2=Ez;var Eg=BP;var Ef=(((Eg))>>>0)>>>29;DT=Ef;var Ee=Fy;var Ed=(Ee)!=0;if(Ed){FT=3}else{FT=5}$bb2$$bb4$5:do{if(FT==3){var Ec=Fy;var Eb=((Ec)&4294967295);var Ea=uA[((Eb)>>2)];var D9=(((Ea))|0)==63;if(!(D9)){FT=5;break $bb2$$bb4$5}var D8=BK;var D7=(D8)|8;BK=D7}}while(0);var DS=CD;var DR=(((DS))|0)==1;if(DR){FT=6}else{FT=27}$bb5$$bb21$9:do{if(FT==6){var DQ=CF;var DP=((DQ)&4294967295);var DO=((DP+4)&4294967295);var DN=uA[((DO)>>2)];var DM=iV(DN,0);Dy=DM;var DL=CF;var DK=((DL)&4294967295);var DJ=((DK+4)&4294967295);var DI=Dy;uA[((DJ)>>2)]=DI;var DH=CF;var DG=((DH)&4294967295);var DF=((DG)&4294967295);uW[((DF)>>1)]=50;var DE=BN;var DD=(((DE))|0)>0;if(DD){FT=7}else{FT=8}if(FT==7){var DC=CF;var DB=((DC)&4294967295);var DA=BN;var Dz=(((DA))&65535);var Dw=((DB)&4294967295);uW[((Dw)>>1)]=Dz}var Dv=CF;var Dt=((Dv)&4294967295);var Ds=CF;var Dr=((Ds)&4294967295);var Dq=((Dr+2)&4294967295);var Dp=uW[((Dq)>>1)];var Do=(Dp)|16384;var Dn=((Dt+2)&4294967295);uW[((Dn)>>1)]=Do;var Dm=Dy;var Dk=((Dm)&4294967295);var Dj=uW[((Dk)>>1)];var Di=(Dj)|16384;var Dh=Dy;var Dg=((Dh)&4294967295);uW[((Dg)>>1)]=Di;var Df=CF;var De=((Df+8)&4294967295);var Dd=((De+4)&4294967295);var Dc=uA[((Dd)>>2)];var Db=((Dc+17)&4294967295);var Da=ll[((Db)>>0)];var C9=oD((Da),8,0);BS=C9;var C8=uA[((k5)>>2)];var C7=((C8+112)&4294967295);var C6=((C7)&4294967295);var C5=uA[((C6)>>2)];var C4=(((C5))|0)!=0;if(C4){FT=9}else{FT=10}if(FT==9){var C3=CF;var C2=((C3+8)&4294967295);var C1=((C2+4)&4294967295);var CA=uA[((C1)>>2)];var Cz=((CA+39)&4294967295);var Cy=((Cz)&4294967295);var Cx=la[((Cy)>>0)];var Cu=(((Cx)-4)&255);var Ct=Dy;var Cs=((Ct+39)&4294967295);var Cr=((Cs)&4294967295);la[((Cr)>>0)]=Cu}var Cq=D0;var Cp=(((Cq))|0)!=0;if(Cp){FT=11}else{FT=15}$bb10$$bb15$17:do{if(FT==11){var Co=CB;var Cm=(Co)&32;var Cl=(((Cm))|0)!=0;if(Cl){FT=12}else{FT=13}if(FT==12){var Ck=CB;var Cj=(Ck)&31;var Ci=BS;var Cg=(((Cj)*(Ci))&4294967295);var Cf=(((((Cg))|0)/30)|0);var Ce=Dy;gL(Ce,Cf)}var Cd=Dy;var Cc=D0;var Ca=CL;var B9=Ey;var B8=D2;var B7=Dx;var B6=Cb;var B5=BK;c6(Cd,Cc,Ca,B9,B8,B7,B6,B5);var B4=CB;var B3=(B4)&32;var B2=(((B3))|0)==0;if(!(B2)){FT=18;break $bb10$$bb15$17}var B0=CB;var BZ=(((B0)*2)&4294967295);var BY=Dy;gL(BY,BZ)}else{if(FT==15){var BX=BK;var BW=(BX)&8;var BV=(((BW))|0)!=0;if(BV){FT=16}else{FT=17}if(FT==16){var BU=BS;var BT=(((BU)*24)&4294967295);var BR=(((((BT))|0)/32)|0);var BQ=Dy;gL(BQ,BR)}else{if(FT==17){var BM=Dy;gL(BM,28)}}}}}while(0);var BL=BK;var BJ=(BL)&8;var BI=(((BJ))|0)!=0;if(!(BI)){FT=47;break $bb5$$bb21$9}var BH=Dy;Ga=BH;var BG=Ga;var BF=((BG+2)&4294967295);var BE=((BF+2)&4294967295);var BD=uW[((BE)>>1)];var BC=iB((BD),16,0);CE=BC;var Bz=CE;var By=(((Bz))|0)<=299;var Bx=oD((By),1,0);BB=Bx;var Bw=BB;var Dl=iB((Bw),8,0)!=0;if(Dl){FT=20}else{FT=21}if(FT==20){CV=3}else{if(FT==21){var Bv=CE;var Bu=(((Bv))|0)<=399;if(Bu){FT=22}else{FT=23}if(FT==22){CV=2}else{if(FT==23){var Bt=CE;var Bs=(((Bt))|0)<=499;if(Bs){FT=24}else{FT=25}if(FT==24){CV=1}else{if(FT==25){CV=0}}}}}}var Br=CV;BO=Br;var CK=BO;var Bq=(((CK)*256)&4294967295);var Bp=(((Bq)+2048)&4294967295);uA[((jY)>>2)]=Bp}else{if(FT==27){var Bo=CB;var Bn=(((Bo)*2)&4294967295);CB=Bn;var Bm=D0;var Bl=(((Bm))|0)!=0;if(Bl){FT=29}else{FT=28}if(FT==28){var Bk=BK;var Bj=(((Bk))|0)!=0;if(!(Bj)){FT=47;break $bb5$$bb21$9}}var Bh=BK;var Be=(Bh)&8;var Bc=(((Be))|0)!=0;var A3=B1;var A2=xk[((A3)>>2)];if(Bc){FT=30}else{FT=38}$bb24$$bb25$43:do{if(FT==30){var A1=(((A2)-1)&4294967295);var A0=CF;var AZ=((A0+8*A1)&4294967295);var AY=((AZ+4)&4294967295);var AX=uA[((AY)>>2)];var AW=iV(AX,0);Dy=AW;var AU=B1;var AS=uA[((AU)>>2)];var AJ=(((AS)-1)&4294967295);var AI=CF;var AH=((AI+8*AJ)&4294967295);var i=((AH+4)&4294967295);var e=Dy;uA[((i)>>2)]=e;CB=35;var GI=Dy;CI=GI;var GH=CI;var GG=((GH+2)&4294967295);var GE=((GG+2)&4294967295);var GC=uW[((GE)>>1)];var Gr=iB((GC),16,0);Cn=Gr;var Gq=Cn;var Gp=(((Gq))|0)<=299;var Go=oD((Gp),1,0);CM=Go;var Gn=CM;var EV=iB((Gn),8,0)!=0;if(EV){FT=31}else{FT=32}if(FT==31){CW=3}else{if(FT==32){var Gm=Cn;var Gl=(((Gm))|0)<=399;if(Gl){FT=33}else{FT=34}if(FT==33){CW=2}else{if(FT==34){var Gk=Cn;var Gi=(((Gk))|0)<=499;if(Gi){FT=35}else{FT=36}if(FT==35){CW=1}else{if(FT==36){CW=0}}}}}}var Gg=CW;Gs=Gg;var Ch=Gs;var Bf=(((Ch)*256)&4294967295);var Bd=(((Bf)+1024)&4294967295);uA[((jY)>>2)]=Bd}else{if(FT==38){var Bb=(((A2)+1)&4294967295);var Ba=B1;uA[((Ba)>>2)]=Bb;var A9=CF;var A8=BN;F5=A9;CH=A2;CZ=A8;var A7=CH;var A6=(((A7)-1)&4294967295);var A5=F5;var A4=((A5+8*A6)&4294967295);var AV=CZ;var AT=(((AV))&65535);var AR=((A4)&4294967295);uW[((AR)>>1)]=AT;var AQ=CH;var AP=(((AQ)-1)&4294967295);var AO=F5;var AN=((AO+8*AP)&4294967295);var AM=((AN+4)&4294967295);var AL=uA[((AM)>>2)];var AK=iV(AL,1);F4=AK;var GF=F5;var GD=CH;var GB=((GF+8*GD)&4294967295);var GA=((GB+4)&4294967295);var Gy=F4;uA[((GA)>>2)]=Gy;var Gx=F5;var Gw=CH;var Gv=((Gx+8*Gw)&4294967295);var Gu=((Gv)&4294967295);uW[((Gu)>>1)]=0;var Gt=F4;CX=Gt;var Gj=CX;DX=Gj;var F8=DX;Dy=F8;var Gh=BN;var Gf=(((Gh))|0)>36;if(Gf){FT=39}else{FT=40}if(FT==39){var Ge=BN;var Gd=uA[((iO)>>2)];var Gc=(((Ge)+-36)&4294967295);var Gb=(((Gc)+(Gd))&4294967295);uA[((iO)>>2)]=Gb}var F9=D0;var F7=(((F9))|0)!=0;if(!(F7)){FT=42;break $bb24$$bb25$43}var F6=Dy;var F3=D0;var F2=CL;var F1=Ey;var F0=D2;var FZ=Dx;var FY=Cb;var FX=BK;c6(F6,F3,F2,F1,F0,FZ,FY,FX)}}}while(0);var FW=Dy;var FV=CB;gL(FW,FV);var FU=DT;var FS=(((FU))|0)>0;var FR=DT;var FQ=(((FR))|0)<=2;var CN=(FS)&(FQ);if(!(CN)){FT=47;break $bb5$$bb21$9}CY=0;var FP=B1;var FO=uA[((FP)>>2)];var FN=CY;var FM=(((FO))|0)>(((FN))|0);if(!(FM)){FT=47;break $bb5$$bb21$9}$bb32$62:while(1){var FL=CF;var FK=CY;var FJ=((FL+8*FK)&4294967295);var Fx=((FJ+4)&4294967295);var Fw=uA[((Fx)>>2)];var Fv=iV(Fw,0);Dy=Fv;var Fu=CF;var Ft=CY;var Fs=((Fu+8*Ft)&4294967295);var Fr=((Fs+4)&4294967295);var Fq=Dy;uA[((Fr)>>2)]=Fq;BA=1;while(1){var Fp=BA;var Fn=Dy;var E3=((Fn+2)&4294967295);var E2=((E3+Fp*2)&4294967295);var E1=uW[((E2)>>1)];var E0=iB((E1),16,0);var EZ=DT;var EY=(((EZ)-1)&4294967295);var EX=BA;var EW=(((EX)-1)&4294967295);var EU=((wM+EY*10)&4294967295);var ES=((EU+EW*2)&4294967295);var Ex=uW[((ES)>>1)];var Ew=iB((Ex),16,0);var Ev=(((Ew)*(E0))&4294967295);CG=Ev;var Eu=BA;var Et=CG;var Es=(((((Et))|0)/256)|0);var Er=(((Es))&65535);var Eq=Dy;var Ep=((Eq+2)&4294967295);var En=((Ep+Eu*2)&4294967295);uW[((En)>>1)]=Er;var D6=BA;var D5=(((D6)+1)&4294967295);BA=D5;var D4=(((D5))|0)<=5;if(D4){FT=45;continue}else{FT=46;break}}var D3=CY;var D1=(((D3)+1)&4294967295);CY=D1;var DZ=B1;var DY=uA[((DZ)>>2)];var DW=CY;var DV=(((DY))|0)>(((DW))|0);if(DV){FT=44;continue $bb32$62}else{FT=47;break $bb5$$bb21$9}}}}}while(0);var DU=Dy;var Fo=(DU)!=0;if(Fo){FT=48}else{FT=52}$bb38$$bb42$68:do{if(FT==48){var Fm=BK;var Fl=(Fm)&4;var Fk=(((Fl))|0)!=0;if(Fk){FT=49}else{FT=50}if(FT==49){var Fj=Dy;var Fi=((Fj)&4294967295);var Fh=uW[((Fi)>>1)];var Fg=(Fh)|32;var Ff=Dy;var Fe=((Ff)&4294967295);uW[((Fe)>>1)]=Fg}var ET=BK;var ER=(ET)&2;var EQ=(((ER))|0)!=0;if(!(EQ)){FT=52;break $bb38$$bb42$68}var EP=Dy;var EO=((EP)&4294967295);var EN=uW[((EO)>>1)];var EM=(EN)|16;var EL=Dy;var EK=((EL)&4294967295);uW[((EK)>>1)]=EM}}while(0);var EJ=BK;var Eo=(EJ)&64;var Em=(((Eo))|0)!=0;if(Em){FT=53}else{FT=54}if(FT==53){sR(12,0)}var El=BK;var Ek=(El)&16;var Ej=(((Ek))|0)!=0;if(Ej){FT=55}else{FT=56}if(FT==55){var Ei=BN;CU=Ei}else{if(FT==56){CU=0}}}}var Eh=CU;Du=Eh;var Gz=Du;return Gz;return null}function aF(Cm,A5){var BZ;var BC;var Cv;var B0;var CL;var BD;var A9;var Cl;var CC;var AK;var BE;var Cq;var AJ;var Bw;AK=Cm;BE=A5;$bb$2:while(1){var CJ=AK;var CI=uA[((CJ)>>2)];var CH=((p6+CI*4)&4294967295);var CG=uA[((CH)>>2)];Cq=CG;var CF=Cq;var CE=(((CF))>>>0)>>>8;AJ=CE;var CD=Cq;var CB=(CD)&127;Bw=CB;var CA=(((CB))|0)==0;if(CA){BZ=15;break $bb$2}var Cz=AK;var Cf=uA[((Cz)>>2)];var Cd=(((Cf)+1)&4294967295);var Cb=AK;uA[((Cb)>>2)]=Cd;var B9=Bw;var B7=(B9)&31;if(B7==2){BZ=3}else{if(B7==7){BZ=4}else{if(B7==10){BZ=8}else{if(B7==11){BZ=10}else{BZ=12}}}}$bb9$$bb2$$bb3$$bb7$$bb8$5:do{if(BZ==12){sR(10,0);var Bq=uA[((t3)>>2)];var Bn=((v0+Bq*16)&4294967295);var Bk=((Bn)&4294967295);uA[((Bk)>>2)]=12;var Bh=uA[((t3)>>2)];var Be=((v0+Bh*16)&4294967295);var Bb=((Be+4)&4294967295);var A4=Bw;uA[((Bb)>>2)]=A4;var A3=uA[((t3)>>2)];var A2=AJ;var A1=((v0+A3*16)&4294967295);var AZ=((A1+8)&4294967295);uA[((AZ)>>2)]=A2;var AY=uA[((t3)>>2)];var AW=(((AY)+1)&4294967295);uA[((t3)>>2)]=AW;var AU=(((AW))|0)>159;if(!(AU)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}uA[((t3)>>2)]=0}else{if(BZ==3){var B5=AJ;var B4=Bw;var B3=(B4)&96;var B2=(((B3)+8)&4294967295);yJ(B2,B5);jF(2)}else{if(BZ==4){var B1=AJ;var BT=uA[((lP)>>2)];var BR=(((B1))|0)<(((BT))|0);if(!(BR)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}var BP=AJ;var BN=((y+BP*16)&4294967295);var BL=((BN+4)&4294967295);var BJ=uA[((BL)>>2)];var BI=(((BJ))|0)!=0;if(!(BI)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}sR(10,0);var BH=uA[((t3)>>2)];var BG=((v0+BH*16)&4294967295);var BF=((BG)&4294967295);uA[((BF)>>2)]=6;var Br=uA[((t3)>>2)];var Bo=AJ;var Bl=((y+Bo*16)&4294967295);var Bi=((Bl+4)&4294967295);var Bf=uA[((Bi)>>2)];var Bc=((v0+Br*16)&4294967295);var Ba=((Bc+4)&4294967295);uA[((Ba)>>2)]=Bf;var A8=uA[((t3)>>2)];var A7=AJ;var A6=((y+A7*16)&4294967295);var A0=((A6+8)&4294967295);var AX=uA[((A0)>>2)];var AV=(AX);var AT=(((AV)+44)&4294967295);var AS=((v0+A8*16)&4294967295);var AQ=((AS+8)&4294967295);uA[((AQ)>>2)]=AT;var AO=uA[((t3)>>2)];var AN=((v0+AO*16)&4294967295);var AM=((AN+12)&4294967295);uA[((AM)>>2)]=5376;var AL=uA[((t3)>>2)];var AH=(((AL)+1)&4294967295);uA[((t3)>>2)]=AH;var i=(((AH))|0)>159;if(!(i)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}uA[((t3)>>2)]=0}else{if(BZ==8){var e=AJ;var CR=BE;var CQ=(CR)&2047;var CP=uA[((cg)>>2)];var CO=(((CQ)+(CP))&4294967295);BD=3;A9=CO;Cl=0;CC=e;var CN=uA[((t3)>>2)];var CM=((v0+CN*16)&4294967295);var CK=((CM)&4294967295);uA[((CK)>>2)]=10;var Cy=uA[((t3)>>2)];var Cx=((v0+Cy*16)&4294967295);var Cw=((Cx+4)&4294967295);var Cu=BD;uA[((Cw)>>2)]=Cu;var Ct=uA[((t3)>>2)];var Cs=A9;var Cr=(Cs)&16777215;var Cp=Cl;var Co=(Cp)<<24;var Cn=(Co)|(Cr);var Ck=((v0+Ct*16)&4294967295);var Cj=((Ck+8)&4294967295);uA[((Cj)>>2)]=Cn;var Ci=uA[((t3)>>2)];var Ch=((v0+Ci*16)&4294967295);var Cg=((Ch+12)&4294967295);var Ce=CC;uA[((Cg)>>2)]=Ce;var Cc=uA[((t3)>>2)];var Ca=(((Cc)+1)&4294967295);uA[((t3)>>2)]=Ca;var B8=(((Ca))|0)>159;if(!(B8)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}uA[((t3)>>2)]=0}else{if(BZ==10){var B6=AJ;var BY=uA[((dT)>>2)];var BX=(((BY)+1)&4294967295);BC=4;Cv=BX;B0=0;CL=B6;var BW=uA[((t3)>>2)];var BV=((v0+BW*16)&4294967295);var BU=((BV)&4294967295);uA[((BU)>>2)]=10;var BS=uA[((t3)>>2)];var BQ=((v0+BS*16)&4294967295);var BO=((BQ+4)&4294967295);var BM=BC;uA[((BO)>>2)]=BM;var BK=uA[((t3)>>2)];var BB=Cv;var BA=(BB)&16777215;var By=B0;var Bv=(By)<<24;var Bt=(Bv)|(BA);var Bp=((v0+BK*16)&4294967295);var Bm=((Bp+8)&4294967295);uA[((Bm)>>2)]=Bt;var Bj=uA[((t3)>>2)];var Bg=((v0+Bj*16)&4294967295);var Bd=((Bg+12)&4294967295);var Bz=CL;uA[((Bd)>>2)]=Bz;var Bx=uA[((t3)>>2)];var Bu=(((Bx)+1)&4294967295);uA[((t3)>>2)]=Bu;var Bs=(((Bu))|0)>159;if(!(Bs)){BZ=14;break $bb9$$bb2$$bb3$$bb7$$bb8$5}uA[((t3)>>2)]=0}}}}}}while(0);var AR=Cq;var AP=(AR)&128;var AI=(((AP))|0)==0;if(AI){BZ=1;continue $bb$2}else{BZ=15;break $bb$2}}return;return}function yL(AZ){var AV;var AY;var e;AY=AZ;var AP=fu(1344);var AO=AP;e=AO;var AN=e;var AM=AY;var AL=AN;var AK=AM;ns(AL,AK,1344,1,0);var AJ=uA[((t3)>>2)];var AI=((v0+AJ*16)&4294967295);var AH=((AI)&4294967295);uA[((AH)>>2)]=11;var i=uA[((t3)>>2)];var AX=e;var AW=(AX);var AU=((v0+i*16)&4294967295);var AT=((AU+4)&4294967295);uA[((AT)>>2)]=AW;var AS=uA[((t3)>>2)];var AR=(((AS)+1)&4294967295);uA[((t3)>>2)]=AR;var AQ=(((AR))|0)>159;if(AQ){AV=1}else{AV=2}if(AV==1){uA[((t3)>>2)]=0}return;return}function gP(Cf,CY,D8,Hi,BC){var Br=vp;vp+=104;n1(Br,0,104);var GK;var F7=null;var CJ;var Cx;var Cz;var Cl;var AR;var DN;var GV;var CL;var Cs=Br;var CU;var A7;var DE;var DD;var D2;var CR;var Cy;var BN;var FK;var Eo;var Ht;var BY;var BZ;var FR;var Fn;var DR=Br+4;CJ=Cf;Cx=CY;Cz=D8;Cl=Hi;AR=BC;FR=0;Fn=3;var CK=Cz;var CI=((CK+8)&4294967295);var CH=uA[((CI)>>2)];var CG=(((CH))|0)==0;if(CG){GK=1}else{GK=2}if(GK==1){CL=0}else{if(GK==2){var CF=Cl;var CE=((CF+12)&4294967295);var CD=uW[((CE)>>1)];var CC=iB((CD),16,0);Ht=CC;var CB=Ht;var Gy=(((CB))|0)==0;if(Gy){GK=3}else{GK=4}if(GK==3){Ht=256}var Gx=uA[((bW)>>2)];var Gw=(((((Gx))|0)/70)|0);BZ=Gw;var Gv=Cx;var Gu=(((Gv))|0)==2;if(Gu){F7=4;GK=5}else{F7=4;GK=11}if(GK==5){var Gt=uA[((xy)>>2)];var Gs=((Gt)&4294967295);var Gr=((Gs+24)&4294967295);var Gq=((Gr+72)&4294967295);var Gp=uA[((Gq)>>2)];var F3=(((Gp))|0)>0;if(F3){GK=6}else{GK=10}$bb5$$bb9thread_pre_split$10:do{if(GK==6){var F2=CJ;var F1=((F2+14)&4294967295);var F0=ll[((F1)>>0)];var FZ=oD((F0),8,0);var FY=uA[((xy)>>2)];var FX=((FY)&4294967295);var FW=((FX+24)&4294967295);var FV=((FW+72)&4294967295);var FU=uA[((FV)>>2)];var Fx=(((FZ))|0)>=(((FU))|0);if(Fx){GK=9}else{GK=7}$bb8$$bb6$12:do{if(GK==7){var Fw=Cl;var Fv=((Fw+4)&4294967295);var Fu=xV[((Fv)>>1)];var Ft=oD((Fu),16,0);var Fs=(Ft)&8;var Fr=(((Fs))|0)!=0;if(Fr){GK=9;break $bb8$$bb6$12}var Fq=CJ;var Fp=((Fq+4)&4294967295);var Fo=uA[((Fp)>>2)];var E2=(Fo)&2097152;var E1=(((E2))|0)!=0;if(!(E1)){GK=10;break $bb5$$bb9thread_pre_split$10}}}while(0);var E0=BZ;var EZ=(((E0)*2)&4294967295);BZ=EZ}}while(0);var AK=Cx;F7=10}var EY=F7==10?AK:(Gv);var EX=(((EY))|0)==1;if(EX){GK=12}else{GK=17}$bb10$$bb15$18:do{if(GK==12){var EW=CJ;var EV=((EW+11)&4294967295);var EU=la[((EV)>>0)];var ET=iB((EU),8,0)==3;if(ET){GK=15}else{GK=13}$bb13$$bb11$20:do{if(GK==13){var Ey=Cl;var Ex=((Ey+-24)&4294967295);var Ew=((Ex+15)&4294967295);var Ev=la[((Ew)>>0)];var Eu=iB((Ev),8,0)==3;if(Eu){GK=15;break $bb13$$bb11$20}var Et=Cl;var Es=((Et+-24)&4294967295);var Er=((Es+15)&4294967295);var Eq=la[((Er)>>0)];var Ep=iB((Eq),8,0)==8;if(!(Ep)){GK=17;break $bb10$$bb15$18}}}while(0);var Ed=uA[((xy)>>2)];var Ec=((Ed)&4294967295);var Eb=((Ec+24)&4294967295);var Ea=((Eb+28)&4294967295);var D9=uA[((Ea)>>2)];BN=D9;var D7=BN;var D6=Ht;var D5=(((D7))|0)>(((D6))|0);var D4=oD((D5),1,0);GV=D4;var GL=iB((D4),8,0)!=0;if(!(GL)){GK=17;break $bb10$$bb15$18}var D3=BN;Ht=D3}}while(0);uA[((jY)>>2)]=0;var DP=CJ;var DO=Cx;var DM=Cz;var DL=Cl;var DK=lp(DP,DO,DM,Cs,DL);CU=DK;var DJ=(DK)==0;if(DJ){GK=18}else{GK=19}if(GK==18){CL=0}else{if(GK==19){var DI=Cz;var DH=((DI+16)&4294967295);var DG=uA[((DH)>>2)];var DF=uA[((oy)>>2)];var Ds=(((DG))|0)!=(((DF))|0);if(Ds){GK=20}else{GK=22}$bb18$$bb19$29:do{if(GK==20){var Dr=uA[((t3)>>2)];var Dq=((v0+Dr*16)&4294967295);var Dp=((Dq)&4294967295);Cy=Dp;var Do=Cy;var Dn=((Do)&4294967295);uA[((Dn)>>2)]=14;var Dm=Cz;var Dl=((Dm+16)&4294967295);var Dk=uA[((Dl)>>2)];uA[((oy)>>2)]=Dk;var Dj=uA[((oy)>>2)];var C8=Cy;var C7=((C8+4)&4294967295);uA[((C7)>>2)]=Dj;var C6=uA[((t3)>>2)];var C5=(((C6)+1)&4294967295);uA[((t3)>>2)]=C5;var C4=(((C5))|0)>159;if(!(C4)){GK=22;break $bb18$$bb19$29}uA[((t3)>>2)]=0}}while(0);var C3=CU;var C2=((C3)&4294967295);var C1=((C2+4)&4294967295);var C0=uA[((C1)>>2)];DE=C0;var CZ=uA[((k5)>>2)];var Cw=((CZ+112)&4294967295);var Cv=((Cw)&4294967295);var Cu=uA[((Cv)>>2)];var Ct=(((Cu))|0)!=0;if(Ct){GK=23}else{GK=24}if(GK==23){Fn=1}var Cr=Cz;var Cq=((Cr+28)&4294967295);var Cp=uA[((Cq)>>2)];uA[((oY)>>2)]=Cp;var Co=Cz;var Cn=((Co+32)&4294967295);var Cm=uA[((Cn)>>2)];var Ck=(((Cm))|0)==0;if(Ck){GK=25}else{GK=26}if(GK==25){uA[((gf)>>2)]=32}else{if(GK==26){var Cj=Cz;var Ci=((Cj+32)&4294967295);var Ch=uA[((Ci)>>2)];var Cg=(((Ch)*32)&4294967295);var Ce=(((((Cg))|0)/100)|0);uA[((gf)>>2)]=Ce}}var Cd=uA[((oY)>>2)];var Cc=(((Cd))|0)==0;if(Cc){GK=28}else{GK=34}$bb25$$bb31$40:do{if(GK==28){var GX=ll[((hn)>>0)];var Cb=oD((GX),1,0);var Ca=(((Cb))|0)!=0;if(Ca){GK=29}else{GK=32}if(GK==29){Fn=4;var B9=uA[((k5)>>2)];var B8=((B9+112)&4294967295);var B7=((B8)&4294967295);var B6=uA[((B7)>>2)];var B5=(((B6))|0)!=0;if(B5){GK=30}else{GK=31}if(GK==30){Fn=2}la[((hn)>>0)]=0}else{if(GK==32){Fn=3;var B4=uA[((k5)>>2)];var B3=((B4+112)&4294967295);var B2=((B3)&4294967295);var B1=uA[((B2)>>2)];var B0=(((B1))|0)!=0;if(!(B0)){GK=34;break $bb25$$bb31$40}Fn=1}}}}while(0);var BX=uA[((mD)>>2)];var BW=(BX)!=0;if(BW){GK=35}else{GK=44}$bb32$$bb42$50:do{if(GK==35){var BV=uA[((mD)>>2)];var BU=((BV+16)&4294967295);var BT=ll[((BU)>>0)];var BS=oD((BT),8,0)<=1;if(BS){GK=37}else{GK=36}if(GK==36){var BR=uA[((mD)>>2)];var BQ=((BR)&4294967295);var BP=uW[((BQ)>>1)];var BO=iB((BP),16,0);var BM=(BO)&2;var BL=(((BM))|0)!=0;if(!(BL)){GK=44;break $bb32$$bb42$50}}var BK=uA[((mD)>>2)];var BJ=((BK)&4294967295);var BI=uW[((BJ)>>1)];var BH=iB((BI),16,0);var BG=(BH)&16;var BF=(((BG))|0)==0;if(!(BF)){GK=44;break $bb32$$bb42$50}var BE=uA[((q)>>2)];var BD=DE;var BB=(BD);var BA=((v0+BE*16)&4294967295);var Bz=((BA+12)&4294967295);uA[((Bz)>>2)]=BB;var By=uA[((mD)>>2)];var Bx=((By)&4294967295);var Bw=uW[((Bx)>>1)];var Bv=iB((Bw),16,0);var Bu=(Bv)&8;var Bt=(((Bu))|0)!=0;if(!(Bt)){GK=44;break $bb32$$bb42$50}var Bs=DE;var Bq=iV(Bs,1);D2=Bq;CR=3;F7=39;while(1){var Bp=F7==39?3:(AH);var Bo=(((Bp))|0)<=6;if(Bo){GK=41}else{GK=42}if(GK==41){var Bn=CR;var Bm=uA[((mD)>>2)];var Bl=CR;var Bk=((Bm+2)&4294967295);var Bj=((Bk+Bl*2)&4294967295);var Bh=uW[((Bj)>>1)];var Bf=D2;var A5=((Bf+2)&4294967295);var A4=((A5+Bn*2)&4294967295);uW[((A4)>>1)]=Bh}var A3=CR;var A2=uA[((mD)>>2)];var A1=CR;var A0=((A2+18)&4294967295);var AZ=((A0+A1)&4294967295);var AY=la[((AZ)>>0)];var AW=D2;var AU=((AW+18)&4294967295);var AJ=((AU+A3)&4294967295);la[((AJ)>>0)]=AY;var AI=CR;var AH=(((AI)+1)&4294967295);CR=AH;var i=(((AH))|0)<=7;if(i){F7=42;GK=40;continue}else{F7=42;GK=43;break}}var e=uA[((q)>>2)];var Hy=D2;var Hx=(Hy);var Hw=((v0+e*16)&4294967295);var Hu=((Hw+12)&4294967295);uA[((Hu)>>2)]=Hx}}while(0);var Hr=CJ;var Hh=((Hr+11)&4294967295);var Hg=la[((Hh)>>0)];var Hf=iB((Hg),8,0)==2;if(Hf){GK=45}else{GK=47}$bb43$$bb45$64:do{if(GK==45){var He=Cx;var Hd=(((He))|0)==2;if(!(Hd)){GK=47;break $bb43$$bb45$64}yw();var Hc=uA[((t3)>>2)];uA[((sz)>>2)]=Hc}}while(0);BY=0;A7=1;var Hb=uA[((Cs)>>2)];var Ha=A7;var G8=(((Ha))|0)<(((Hb))|0);if(G8){GK=48}else{GK=57}$bb46$$bb57$68:do{if(GK==48){$bb46$69:while(1){var G6=Ht;Eo=G6;var Bi=A7;var Bg=(((Bi)-1)&4294967295);var Be=CU;var Bd=((Be+8*Bg)&4294967295);var Bc=((Bd+2)&4294967295);var Bb=uW[((Bc)>>1)];var Ba=iB((Bb),16,0);var A9=(Ba)&4;var A8=(((A9))|0)!=0;if(A8){GK=49}else{GK=50}$bb47$$bb48$71:do{if(GK==49){var A6=uA[((((bX+16)&4294967295))>>2)];var AX=((256-(A6))&4294967295);var AV=Ht;var AT=(((AX)*(AV))&4294967295);var AS=uA[((((bX+16)&4294967295))>>2)];var AQ=(((AS)*256)&4294967295);var AP=(((AQ)+(AT))&4294967295);var AO=(((((AP))|0)/256)|0);Eo=AO}else{if(GK==50){var AN=A7;var AM=(((AN)-1)&4294967295);var AL=CU;var Hv=((AL+8*AM)&4294967295);var Hs=((Hv+2)&4294967295);var Hq=uW[((Hs)>>1)];var Hp=iB((Hq),16,0);var Ho=(Hp)&16384;var Hn=(((Ho))|0)!=0;if(!(Hn)){GK=52;break $bb47$$bb48$71}var Hm=uA[((((bX+20)&4294967295))>>2)];var Hl=((256-(Hm))&4294967295);var Hk=Ht;var Hj=(((Hl)*(Hk))&4294967295);var G9=uA[((((bX+20)&4294967295))>>2)];var G7=(((G9)*256)&4294967295);var G5=(((G7)+(Hj))&4294967295);var G4=(((((G5))|0)/256)|0);Eo=G4}}}while(0);var G3=A7;var G2=(((G3)-1)&4294967295);var G1=CU;var G0=((G1+8*G2)&4294967295);var GZ=((G0)&4294967295);var GY=uW[((GZ)>>1)];var GW=iB((GY),16,0);FK=GW;var GU=uA[((bW)>>2)];var GT=FK;var GS=(((GT)*(GU))&4294967295);var GR=(((((GS))|0)/1000)|0);BN=GR;var GQ=BN;var GP=Eo;var GO=(((GP)*(GQ))&4294967295);var GN=(((((GO))|0)/256)|0);BN=GN;var GM=BY;var GJ=BN;var GI=(((GJ)+(GM))&4294967295);BY=GI;var GH=A7;var GG=((DR+GH*4)&4294967295);var GF=BN;uA[((GG)>>2)]=GF;var GD=A7;var GC=(((GD)+1)&4294967295);A7=GC;var GB=uA[((Cs)>>2)];var GA=A7;var Gz=(((GA))|0)<(((GB))|0);if(Gz){GK=48;continue $bb46$69}else{GK=53;break $bb46$69}}var DX=BY;var Go=(((DX))|0)>0;if(!(Go)){GK=57;break $bb46$$bb57$68}var Gn=BY;var Gm=BZ;var Gl=(((Gn))|0)<(((Gm))|0);if(!(Gl)){GK=57;break $bb46$$bb57$68}A7=1;var Gk=uA[((Cs)>>2)];var Gj=A7;var Gi=(((Gj))|0)<(((Gk))|0);if(!(Gi)){GK=57;break $bb46$$bb57$68}while(1){var Gh=A7;var Gg=A7;var Ge=((DR+Gg*4)&4294967295);var FT=uA[((Ge)>>2)];var FS=BZ;var FQ=(((FS)*(FT))&4294967295);var FP=BY;var FO=(((((FQ))|0)/(((FP))|0))|0);var FN=((DR+Gh*4)&4294967295);uA[((FN)>>2)]=FO;var FM=A7;var FL=(((FM)+1)&4294967295);A7=FL;var FJ=uA[((Cs)>>2)];var FH=A7;var Fm=(((FH))|0)<(((FJ))|0);if(Fm){GK=56;continue}else{GK=57;break $bb46$$bb57$68}}}}while(0);A7=1;var Fl=uA[((Cs)>>2)];var Fk=A7;var Fj=(((Fk))|0)<(((Fl))|0);if(Fj){GK=58}else{GK=74}$bb58$$bb74$82:do{if(GK==58){$bb58$83:while(1){var Fi=CU;var Fh=A7;var Fg=((Fi+8*Fh)&4294967295);var Ff=((Fg+4)&4294967295);var Fe=uA[((Ff)>>2)];DD=Fe;var Fc=Cz;var ES=((Fc+28)&4294967295);var ER=uA[((ES)>>2)];var EQ=(((ER))|0)!=0;if(EQ){GK=59}else{GK=61}$bb59$$bb61$85:do{if(GK==59){var EP=DE;var EO=((EP)&4294967295);var EN=uW[((EO)>>1)];var EM=iB((EN),16,0);var EL=(EM)&128;var EK=(((EL))|0)==0;if(!(EK)){GK=61;break $bb59$$bb61$85}uA[((iO)>>2)]=0;var EI=uA[((gf)>>2)];var Gf=Cz;var Gd=((Gf)&4294967295);var Gc=uA[((Gd)>>2)];var Gb=Cx;var Ga=(((Gb)+256)&4294967295);var F9=Cz;var F8=((F9+28)&4294967295);var F6=uA[((F8)>>2)];var F5=qY(F6,Ga,0,Gc,0,EI);la[((hn)>>0)]=1;uA[((oY)>>2)]=0;var F4=Cz;var FI=((F4+28)&4294967295);uA[((FI)>>2)]=0}}while(0);var FG=AR;var FF=(((FG))|0)>=0;if(FF){GK=62}else{GK=67}$bb62$$bb67$89:do{if(GK==62){var FE=DE;var FD=((FE)&4294967295);var FC=uW[((FD)>>1)];var FB=iB((FC),16,0);var FA=(FB)&64;var Fz=(((FA))|0)!=0;if(Fz){GK=63}else{GK=64}if(GK==63){AR=6}var Fy=uA[((Cs)>>2)];var Fd=(((Fy)-1)&4294967295);var Fb=A7;var Fa=(((Fd))|0)==(((Fb))|0);if(!(Fa)){GK=67;break $bb62$$bb67$89}var E9=uA[((jY)>>2)];var E8=(E9)&3840;var E7=(((E8))|0)!=0;if(!(E7)){GK=67;break $bb62$$bb67$89}var E6=uA[((jY)>>2)];var E5=AR;var E4=(E5)|(E6);AR=E4}}while(0);var E3=A7;var EJ=((DR+E3*4)&4294967295);var EH=uA[((EJ)>>2)];BN=EH;var EG=uA[((j)>>2)];var EF=(((EG)+(EH))&4294967295);uA[((j)>>2)]=EF;var EE=uA[((qf)>>2)];var ED=(((EE)+(EH))&4294967295);uA[((qf)>>2)]=ED;var EC=(((EH))|0)==0;if(EC){GK=68}else{GK=69}if(GK==68){uA[((mD)>>2)]=0;var EB=DD;DE=EB}else{if(GK==69){var EA=uA[((t3)>>2)];uA[((q)>>2)]=EA;var Ez=AR;var En=(((Ez))|0)>=0;if(En){GK=70}else{GK=72}$bb70$$bb71$100:do{if(GK==70){var Em=uA[((t3)>>2)];var El=((v0+Em*16)&4294967295);var Ek=((El)&4294967295);Cy=Ek;var Ej=Cy;var Ei=((Ej)&4294967295);var Eh=Fn;uA[((Ei)>>2)]=Eh;var Eg=AR;var Ef=(((Eg)*65536)&4294967295);var Ee=BN;var D1=(((Ef)+(Ee))&4294967295);var D0=Cy;var DZ=((D0+4)&4294967295);uA[((DZ)>>2)]=D1;var DY=DE;var DW=(DY);var DV=Cy;var DU=((DV+8)&4294967295);uA[((DU)>>2)]=DW;var DT=DD;var DS=(DT);var DQ=Cy;var DC=((DQ+12)&4294967295);uA[((DC)>>2)]=DS;var DB=uA[((t3)>>2)];var DA=(((DB)+1)&4294967295);uA[((t3)>>2)]=DA;var Dz=(((DA))|0)>159;if(!(Dz)){GK=72;break $bb70$$bb71$100}uA[((t3)>>2)]=0}}while(0);var Dy=DD;DE=Dy;var Dx=DE;uA[((mD)>>2)]=Dx;var Dw=FR;var Dv=BN;var Du=(((Dv)+(Dw))&4294967295);FR=Du}}var Dt=A7;var Di=(((Dt)+1)&4294967295);A7=Di;var Dh=uA[((Cs)>>2)];var Dg=A7;var Df=(((Dg))|0)<(((Dh))|0);if(Df){GK=58;continue $bb58$83}else{GK=74;break $bb58$$bb74$82}}}}while(0);var De=Cx;var Dd=(((De))|0)!=1;var Dc=uA[((oy)>>2)];var Db=(((Dc))|0)!=0;var CA=(Dd)&(Db);if(CA){GK=75}else{GK=77}$bb76$$bb77$106:do{if(GK==75){var Da=uA[((t3)>>2)];var C9=((v0+Da*16)&4294967295);var CX=((C9)&4294967295);Cy=CX;var CW=Cy;var CV=((CW)&4294967295);uA[((CV)>>2)]=14;uA[((oy)>>2)]=0;var CT=Cy;var CS=((CT+4)&4294967295);uA[((CS)>>2)]=0;var CQ=uA[((t3)>>2)];var CP=(((CQ)+1)&4294967295);uA[((t3)>>2)]=CP;var CO=(((CP))|0)>159;if(!(CO)){GK=77;break $bb76$$bb77$106}uA[((t3)>>2)]=0}}while(0);var CN=FR;CL=CN}}}}var CM=CL;DN=CM;var GE=DN;vp=Br;return GE;return null}function AD(VC,Wt,C8){var Gg=vp;vp+=752;n1(Gg,0,752);var F4;var LG;var Qb;var DE;var LS;var Qt;var DO;var Ex;var AL;var SR;var Wj=Gg;var Hh;var Ud;var NH;var L4;var QW;var D1;var UV;var Uz;var NG;var Mf;var Rj;var Ed;var Mq;var Rz;var Eo;var Ms;var RF;var Ep;var MP;var RU;var EB;var Nb;var RX;var EC;var Nc;var R9;var EQ;var NB;var Sb;var ER;var GV;var Sx;var J0;var K4;var SN;var R6;var Oh;var Lh;var SQ;var Sg;var Op;var QU;var HK;var JL;var OG;var Q0;var HM;var JM;var Tn;var CK;var Gw;var Ug;var Lg;var IB;var EK;var NF;var UA;var LO;var SO;var Vg;var ED;var JX;var JY;var JZ;var Sa;var J9;var Km;var NE;var RH;var Br;var SM;var MO;var M6;var KS;var AW;var SA;var SP;var WE;var KG;var L3;var Vr;var KR=Gg+96;var SH=Gg+248;var CL=Gg+400;var SS=Gg+552;var D3=Gg+704;LO=VC;SO=Wt;Vg=C8;WE=0;var ND=uA[((js)>>2)];var NC=(((ND))|0)!=0;if(NC){F4=1}else{F4=2}if(F4==1){NE=0}else{if(F4==2){var NA=la[((((jg)&4294967295))>>0)];var Nz=iB((NA),8,0)!=0;if(Nz){F4=3}else{F4=4}if(F4==3){var Ny=LO;var Nx=SO;var Fn=Vg;var Fm=rX(Ny,Nx,Fn);NE=Fm}else{if(F4==4){var Fl=Vg;var Fk=(((Fl))|0)==0;if(Fk){F4=5}else{F4=6}if(F4==5){uA[((za)>>2)]=1;uA[((ea)>>2)]=0;uA[((kI)>>2)]=0;uA[((j)>>2)]=0;uA[((qf)>>2)]=0;uA[((mD)>>2)]=0;uA[((q)>>2)]=-1;var Fj=uA[((t3)>>2)];uA[((oR)>>2)]=Fj;var Fh=uA[((t3)>>2)];uA[((tW)>>2)]=Fh;uA[((sz)>>2)]=-1;uA[((hk)>>2)]=-1;ud(tc,0,16,1,0);sR(0,0)}var C0=D3;var Ff=((KR+4)&4294967295);var Fd=((Ff+40)&4294967295);var Fb=((D3+44)&4294967295);var E9=((KR+68)&4294967295);var E3=((E9+8)&4294967295);var E2=((D3+8)&4294967295);var E1=((D3+8)&4294967295);var E0=((SH+68)&4294967295);var EZ=((E0+8)&4294967295);var EX=((D3+8)&4294967295);var EW=((D3+8)&4294967295);var EV=((SH+88)&4294967295);var EU=((EV+8)&4294967295);var ET=((D3+24)&4294967295);var EP=((SH+108)&4294967295);var EO=((EP)&4294967295);var EN=((D3+36)&4294967295);var EM=((SH+108)&4294967295);var EL=((EM+4)&4294967295);var EJ=((D3+40)&4294967295);var EI=((D3+8)&4294967295);var EH=((D3+4)&4294967295);var EG=((D3)&4294967295);var EF=((KR+68)&4294967295);var EA=((EF)&4294967295);var Ez=((D3+8)&4294967295);var Ey=((KR+88)&4294967295);var Ew=((Ey)&4294967295);var Ev=((D3+16)&4294967295);var Eu=((Wj)&4294967295);var Et=Eu;var Es=((Wj+24)&4294967295);var Er=((Es)&4294967295);var Eq=((Wj+24)&4294967295);var En=((Eq+8)&4294967295);var Em=((Wj+48)&4294967295);var El=((Em+6)&4294967295);var Ek=((Wj+24)&4294967295);var Ej=((SS+124)&4294967295);var Ei=((SS+128)&4294967295);var Eh=((SS+128)&4294967295);var Eg=((KR+68)&4294967295);var Ef=((Eg)&4294967295);var Ee=((D3+8)&4294967295);var Ec=((KR+88)&4294967295);var Eb=((Ec)&4294967295);var Ea=((D3+16)&4294967295);var D9=((D3+36)&4294967295);var D8=((D3+40)&4294967295);var D7=((KR+68)&4294967295);var D6=((D7+12)&4294967295);var D5=((D3+20)&4294967295);var D4=((D3+20)&4294967295);var D2=((KR+88)&4294967295);var D0=((D2+12)&4294967295);var DZ=((D3+24)&4294967295);var DY=((D3+24)&4294967295);var DX=((D3+4)&4294967295);var DW=((CL+108)&4294967295);var DV=((DW+8)&4294967295);var DU=((D3+36)&4294967295);var DS=((CL+108)&4294967295);var DR=((DS+12)&4294967295);var DQ=((D3+40)&4294967295);var DP=((CL+68)&4294967295);var DN=((DP+12)&4294967295);var DM=((D3+20)&4294967295);var DL=((D3+20)&4294967295);var DK=((CL+88)&4294967295);var DJ=((DK+12)&4294967295);var DI=((D3+24)&4294967295);var DH=((KR)&4294967295);var DG=((KR+88)&4294967295);var DF=((DG+8)&4294967295);var DD=((D3+12)&4294967295);var Dg=D3;var DC=((KR+4)&4294967295);var DB=((DC+40)&4294967295);var DA=((D3+44)&4294967295);var Dz=((KR+68)&4294967295);var Dy=((Dz)&4294967295);var Dx=((D3+8)&4294967295);var Dw=((KR+88)&4294967295);var Dv=((Dw)&4294967295);var Du=((D3+16)&4294967295);var Vc=((KR+68)&4294967295);var Va=((Vc+16)&4294967295);var U8=((D3+28)&4294967295);var U6=((KR+88)&4294967295);var U4=((U6+16)&4294967295);var U2=((D3+32)&4294967295);var U0=((KR)&4294967295);var UY=((KR)&4294967295);var SK=D3;var UX=((D3)&4294967295);var UW=((KR+68)&4294967295);var UR=((UW)&4294967295);var UP=((D3+8)&4294967295);var UN=((KR+88)&4294967295);var UL=((UN)&4294967295);var UJ=((D3+16)&4294967295);var UH=((KR+68)&4294967295);var UF=((UH)&4294967295);var UD=((D3+8)&4294967295);var UC=((KR+88)&4294967295);var UB=((UC)&4294967295);var Uv=((D3+16)&4294967295);var Ut=((KR+68)&4294967295);var Ur=((Ut+16)&4294967295);var Up=((D3+28)&4294967295);var Un=((KR+88)&4294967295);var Ul=((Un+16)&4294967295);var Uj=((D3+32)&4294967295);var RV=D3;var Uh=((KR+4)&4294967295);var Uf=((Uh+40)&4294967295);var Ue=((D3+44)&4294967295);var T9=((KR+68)&4294967295);var T7=((T9)&4294967295);var T5=((D3+8)&4294967295);var T3=((KR+88)&4294967295);var T1=((T3)&4294967295);var TZ=((D3+16)&4294967295);var TX=((KR+68)&4294967295);var TV=((TX+16)&4294967295);var TU=((D3+28)&4294967295);var TT=((KR+88)&4294967295);var TS=((TT+16)&4294967295);var TR=((D3+32)&4294967295);var RJ=D3;var TQ=((KR+4)&4294967295);var TP=((TQ+40)&4294967295);var TO=((D3+44)&4294967295);var TN=((KR+68)&4294967295);var TM=((TN)&4294967295);var TL=((D3+8)&4294967295);var TK=((KR+88)&4294967295);var TJ=((TK)&4294967295);var TI=((D3+16)&4294967295);$bb169$11:while(1){var P1=SO;var P0=uA[((P1)>>2)];var PZ=uA[((za)>>2)];var PY=(((P0))|0)>(((PZ))|0);if(!(PY)){F4=181;break $bb169$11}var TH=uA[((za)>>2)];var TG=LO;var TF=((TG+24*TH)&4294967295);MO=TF;var TE=MO;var TD=((TE+15)&4294967295);var TC=la[((TD)>>0)];var TB=iB((TC),8,0)==0;if(TB){F4=8}else{F4=9}if(F4==8){SP=5}else{if(F4==9){var TA=MO;var Tz=((TA+15)&4294967295);var Ty=la[((Tz)>>0)];var Tx=iB((Ty),8,0)!=2;if(Tx){F4=10}else{F4=11}if(F4==10){SP=10}else{if(F4==11){SP=22}}}}var Tw=uA[((Ap)>>2)];var Tv=uA[((t3)>>2)];var Tu=(((Tw)-(Tv))&4294967295);UA=Tu;var Ts=(((Tu))|0)<=0;if(Ts){F4=13}else{F4=14}if(F4==13){var Tr=UA;var Tq=(((Tr)+160)&4294967295);UA=Tq}var Tp=UA;NF=Tp;var To=NF;EK=To;var K5=EK;var Tm=SP;var Tl=(((K5))|0)<=(((Tm))|0);var Tk=oD((Tl),1,0);Km=Tk;var EY=iB((Tk),8,0)!=0;if(EY){F4=15;break $bb169$11}var Tj=uA[((za)>>2)];var Ti=(((Tj)-1)&4294967295);var Th=LO;var Tg=((Th+24*Ti)&4294967295);RH=Tg;var Tf=uA[((za)>>2)];var Te=(((Tf)+1)&4294967295);var Td=LO;var Tc=((Td+24*Te)&4294967295);Br=Tc;var Tb=uA[((za)>>2)];var Ta=(((Tb)+2)&4294967295);var S9=LO;var S8=((S9+24*Ta)&4294967295);SM=S8;var S7=MO;var S6=((S7+4)&4294967295);var S5=xV[((S6)>>1)];var S4=oD((S5),16,0);var S3=(S4)&2;var S2=(((S3))|0)!=0;if(S2){F4=17}else{F4=18}if(F4==17){var S1=MO;var S0=((S1+6)&4294967295);var SZ=xV[((S0)>>1)];var SY=oD((SZ),16,0);aF(ea,SY)}var SX=MO;var SW=((SX+19)&4294967295);var SV=la[((SW)>>0)];var SU=iB((SV),8,0)!=0;if(SU){F4=19}else{F4=29}$bb16$$bb30$28:do{if(F4==19){var ST=MO;var NY=((ST+15)&4294967295);var NW=la[((NY)>>0)];var NU=iB((NW),8,0)!=2;if(NU){F4=21}else{F4=20}$bb23$$bb17$30:do{if(F4==20){var NS=uA[((xy)>>2)];var NQ=((NS)&4294967295);var NO=((NQ+24)&4294967295);var NM=((NO+32)&4294967295);var NK=uA[((NM)>>2)];var NJ=(NK)&1;var NI=(((NJ))&255);var O7=iB((NI),8,0)!=0;var Ps=(O7)^1;var Wh=oD((Ps),1,0);var OM=iB((Wh),8,0)!=0;if(OM){F4=21;break $bb23$$bb17$30}else{F4=23;break $bb23$$bb17$30}}}while(0);$bb23$$bb25$32:do{if(F4==21){var Nt=MO;var Nr=((Nt+8)&4294967295);var Np=uA[((Nr)>>2)];var Nn=((Np+4)&4294967295);var Nl=uA[((Nn)>>2)];var Nj=(Nl)&16777216;var Nh=(((Nj))|0)==0;if(!(Nh)){F4=23;break $bb23$$bb25$32}uA[((mD)>>2)]=0}}while(0);var Nf=MO;var Ne=((Nf+6)&4294967295);var Nd=xV[((Ne)>>1)];var M7=oD((Nd),16,0);var M4=(M7)&2047;var M2=uA[((cg)>>2)];var M0=(((M4)+(M2))&4294967295);uA[((fD)>>2)]=M0;var MY=MO;var MW=((MY+19)&4294967295);var MU=ll[((MW)>>0)];var MS=oD((MU),8,0);var MR=(MS)&4;var MQ=(((MR))|0)!=0;if(MQ){F4=24}else{F4=26}$bb26$$bb27$36:do{if(F4==24){var MK=uA[((g4)>>2)];var MI=uA[((fD)>>2)];Q0=2;HM=MI;JM=0;Tn=MK;var MG=uA[((t3)>>2)];var ME=((v0+MG*16)&4294967295);var MC=((ME)&4294967295);uA[((MC)>>2)]=10;var MA=uA[((t3)>>2)];var My=((v0+MA*16)&4294967295);var Mw=((My+4)&4294967295);var Mv=Q0;uA[((Mw)>>2)]=Mv;var Mu=uA[((t3)>>2)];var Mp=HM;var Mo=(Mp)&16777215;var Mn=JM;var Mm=(Mn)<<24;var Ml=(Mm)|(Mo);var Mk=((v0+Mu*16)&4294967295);var Mj=((Mk+8)&4294967295);uA[((Mj)>>2)]=Ml;var Mi=uA[((t3)>>2)];var Mh=((v0+Mi*16)&4294967295);var Mg=((Mh+12)&4294967295);var Me=Tn;uA[((Mg)>>2)]=Me;var Md=uA[((t3)>>2)];var Mc=(((Md)+1)&4294967295);uA[((t3)>>2)]=Mc;var Mb=(((Mc))|0)>159;if(!(Mb)){F4=26;break $bb26$$bb27$36}uA[((t3)>>2)]=0}}while(0);var Ma=MO;var L9=((Ma+19)&4294967295);var L8=ll[((L9)>>0)];var L7=oD((L8),8,0);var L6=(L7)&1;var L5=(((L6))&255);var OL=iB((L5),8,0)!=0;if(!(OL)){F4=29;break $bb16$$bb30$28}var L2=uA[((kI)>>2)];var L1=uA[((ue)>>2)];var L0=(((L1)+(L2))&4294967295);var LZ=(((L2)+1)&4294967295);uA[((kI)>>2)]=LZ;var LY=MO;var LX=((LY+6)&4294967295);var LW=xV[((LX)>>1)];var LV=oD((LW),16,0)>>>11;var LU=oD((LV),16,0);var LT=uA[((fD)>>2)];QU=1;HK=LT;JL=LU;OG=L0;var LR=uA[((t3)>>2)];var LQ=((v0+LR*16)&4294967295);var LP=((LQ)&4294967295);uA[((LP)>>2)]=10;var LN=uA[((t3)>>2)];var LM=((v0+LN*16)&4294967295);var LL=((LM+4)&4294967295);var LK=QU;uA[((LL)>>2)]=LK;var LJ=uA[((t3)>>2)];var LI=HK;var LH=(LI)&16777215;var LF=JL;var LE=(LF)<<24;var LD=(LE)|(LH);var LC=((v0+LJ*16)&4294967295);var LB=((LC+8)&4294967295);uA[((LB)>>2)]=LD;var LA=uA[((t3)>>2)];var Lz=((v0+LA*16)&4294967295);var Ly=((Lz+12)&4294967295);var Lx=OG;uA[((Ly)>>2)]=Lx;var Lw=uA[((t3)>>2)];var Lv=(((Lw)+1)&4294967295);uA[((t3)>>2)]=Lv;var Lu=(((Lv))|0)>159;if(!(Lu)){F4=29;break $bb16$$bb30$28}uA[((t3)>>2)]=0}}while(0);var Lt=uA[((qf)>>2)];var Ls=(((Lt))|0)>0;if(Ls){F4=30}else{F4=33}if(F4==30){var Lr=uA[((ma)>>2)];var Lq=((v0+Lr*16)&4294967295);var Lp=((Lq+4)&4294967295);var Lo=uA[((Lp)>>2)];var Ln=(((Lo))|0)==0;if(Ln){F4=31}else{F4=32}if(F4==31){var Lm=uA[((ma)>>2)];var Hx=uA[((qf)>>2)];var Hv=((v0+Lm*16)&4294967295);var Ht=((Hv+4)&4294967295);uA[((Ht)>>2)]=Hx}uA[((qf)>>2)]=0}var Hr=MO;var Hp=((Hr+16)&4294967295);var Hn=la[((Hp)>>0)];var Hm=iB((Hn),8,0)!=0;if(Hm){F4=34}else{F4=35}if(F4==34){var Hk=MO;var Hi=((Hk+16)&4294967295);var Hg=ll[((Hi)>>0)];var Hd=oD((Hg),8,0);sR(Hd,1)}var Hb=uA[((xt)>>2)];var G9=(((Hb))|0)!=0;if(G9){F4=36}else{F4=39}$bb33$$bb35$52:do{if(F4==36){var G7=MO;var G5=((G7+15)&4294967295);var G3=la[((G5)>>0)];var G1=iB((G3),8,0)!=2;if(!(G1)){F4=39;break $bb33$$bb35$52}var GZ=MO;var GX=((GZ+8)&4294967295);var GW=uA[((GX)>>2)];var GS=((GW)&4294967295);var GQ=uA[((GS)>>2)];var GO=uA[((fD)>>2)];Lh=7;SQ=GO;Sg=0;Op=GQ;var GM=uA[((t3)>>2)];var GK=((v0+GM*16)&4294967295);var GI=((GK)&4294967295);uA[((GI)>>2)]=10;var GF=uA[((t3)>>2)];var GD=((v0+GF*16)&4294967295);var GB=((GD+4)&4294967295);var GA=Lh;uA[((GB)>>2)]=GA;var Gx=uA[((t3)>>2)];var Gu=SQ;var Gs=(Gu)&16777215;var Gq=Sg;var Go=(Gq)<<24;var Gm=(Go)|(Gs);var Gk=((v0+Gx*16)&4294967295);var Gi=((Gk+8)&4294967295);uA[((Gi)>>2)]=Gm;var Gf=uA[((t3)>>2)];var Ge=((v0+Gf*16)&4294967295);var Gd=((Ge+12)&4294967295);var Gc=Op;uA[((Gd)>>2)]=Gc;var Gb=uA[((t3)>>2)];var Ga=(((Gb)+1)&4294967295);uA[((t3)>>2)]=Ga;var F9=(((Ga))|0)>159;if(!(F9)){F4=39;break $bb33$$bb35$52}uA[((t3)>>2)]=0}}while(0);var F8=MO;var F7=((F8+15)&4294967295);var F6=ll[((F7)>>0)];var F5=oD((F6),8,0);if(F5==0){F4=40}else{if(F5==2){F4=129}else{if(F5==3){F4=117}else{if(F5==4){F4=41}else{if(F5==5){F4=52}else{if(F5==6){F4=49}else{if(F5==7){F4=82}else{if(F5==8){F4=103}else{F4=179}}}}}}}}$bb168$$bb36$$bb123$$bb109$$bb37$$bb48$$bb45$$bb74$$bb89$57:do{if(F4==40){var F3=MO;var F1=((F3+12)&4294967295);var F0=uW[((F1)>>1)];var FZ=iB((F0),16,0);sR(FZ,0)}else{if(F4==129){var J5=MO;var J4=((J5+8)&4294967295);var J3=uA[((J4)>>2)];L3=J3;var J2=MO;var J1=((J2+1)&4294967295);var JW=ll[((J1)>>0)];var JV=oD((JW),8,0);var JU=(JV)&15;KS=JU;ud(C0,0,48,1,0);var JT=MO;lw(0,0,JT,KR);var JS=uA[((Fd)>>2)];var JR=(((JS)*2)&4294967295);uA[((Fb)>>2)]=JR;var JQ=uA[((E3)>>2)];uA[((E2)>>2)]=JQ;var JP=uA[((E1)>>2)];var JO=(((JP))|0)==0;if(JO){F4=132}else{F4=130}$bb131$$bb125$60:do{if(F4==130){var JN=uA[((DH)>>2)];var JK=(JN)&2;var JJ=(((JK))|0)!=0;if(JJ){F4=132;break $bb131$$bb125$60}Sa=1;J9=1;var JI=uA[((DF)>>2)];uA[((DD)>>2)]=JI;F4=136;break $bb131$$bb125$60}}while(0);$bb131$$bb136$63:do{if(F4==132){Sa=0;J9=0;var JH=RH;var JG=((JH+15)&4294967295);var JF=la[((JG)>>0)];var JE=iB((JF),8,0)!=0;if(!(JE)){F4=136;break $bb131$$bb136$63}var JD=RH;lw(0,0,JD,SH);var JC=uA[((EZ)>>2)];uA[((EX)>>2)]=JC;var JB=uA[((EW)>>2)];var JA=(((JB))|0)!=0;var Jz=oD((JA),1,0);JZ=Jz;var Jy=JZ;var KW=iB((Jy),8,0)!=0;if(KW){F4=134}else{F4=135}if(F4==134){var Jx=uA[((EU)>>2)];uA[((ET)>>2)]=Jx}var Jw=uA[((EO)>>2)];uA[((EN)>>2)]=Jw;var Jv=uA[((EL)>>2)];uA[((EJ)>>2)]=Jv}}while(0);var Ju=uA[((EI)>>2)];var Jt=(((Ju))|0)==0;if(Jt){F4=137}else{F4=138}if(F4==137){uA[((EH)>>2)]=1;uA[((EG)>>2)]=1;var Js=uA[((EA)>>2)];uA[((Ez)>>2)]=Js}var Jr=uA[((Ew)>>2)];uA[((Ev)>>2)]=Jr;var Jp=MO;var Jo=((Jp+14)&4294967295);var Jn=ll[((Jo)>>0)];var Jm=oD((Jn),8,0);var Jl=((lx+Jm*4)&4294967295);var Jk=uA[((Jl)>>2)];WE=Jk;KG=0;var Jj=MO;var Ji=((Jj+3)&4294967295);var Jh=la[((Ji)>>0)];var Jg=iB((Jh),8,0)!=0;if(Jg){F4=139}else{F4=149}$bb139$$bb141$73:do{if(F4==139){var Jf=MO;var Je=((Jf+3)&4294967295);var Jd=ll[((Je)>>0)];var Jb=oD((Jd),8,0);Ex=Jb;AL=SS;ud(Et,0,96,1,0);SR=0;while(1){var I9=SR;var I7=((Wj+I9*24)&4294967295);var I5=((I7)&4294967295);la[((I5)>>0)]=9;var I3=SR;var I1=uA[((((nm+36)&4294967295))>>2)];var IZ=((Wj+I3*24)&4294967295);var IV=((IZ+8)&4294967295);uA[((IV)>>2)]=I1;var IU=SR;var IT=(((IU)+1)&4294967295);SR=IT;var IR=(((IT))|0)<=3;if(IR){F4=140;continue}else{F4=141;break}}var IP=Ex;var IN=(((IP))&255);la[((Er)>>0)]=IN;var IL=Ex;var IJ=((nm+IL*4)&4294967295);var IH=uA[((IJ)>>2)];uA[((En)>>2)]=IH;uW[((El)>>1)]=1;var IF=AL;lw(0,0,Ek,IF);var IA=uA[((Ej)>>2)];Hh=IA;var Iz=Hh;var Iy=(((Iz))|0)==0;if(Iy){F4=142}else{F4=143}if(F4==142){var Iw=uA[((ta)>>2)];var Iu=yf(((fG)&4294967295),1,20,Iw);var Is=uA[((((lx)&4294967295))>>2)];NH=Is}else{if(F4==143){var Iq=uA[((op)>>2)];var Io=Hh;var Im=((Iq+Io)&4294967295);NH=Im}}var Ik=NH;Ud=Ik;var Oo=Ud;WE=Oo;var Ig=uA[((Ei)>>2)];var If=(((Ig))|0)>0;if(!(If)){F4=149;break $bb139$$bb141$73}var Ie=uA[((Eh)>>2)];UV=Ie;var Ic=UV;var Ia=(((Ic))|0)==0;if(Ia){F4=146}else{F4=147}if(F4==146){var H8=uA[((ta)>>2)];var H6=yf(((fG)&4294967295),1,20,H8);var H4=uA[((((lx)&4294967295))>>2)];NG=H4}else{if(F4==147){var H2=uA[((op)>>2)];var H0=UV;var Dt=((H2+H0)&4294967295);NG=Dt}}var Ds=NG;Uz=Ds;var DT=Uz;KG=DT}}while(0);var Dr=uA[((tW)>>2)];var Dq=uA[((oR)>>2)];var Dp=(((Dr))|0)==(((Dq))|0);if(Dp){F4=150}else{F4=151}if(F4==150){var Do=uA[((t3)>>2)];uA[((tW)>>2)]=Do}AW=2;var Dn=KS;var Dm=(((Dn))|0)<=1;if(Dm){F4=152}else{F4=153}$bb142$$bb143$91:do{if(F4==152){AW=1}else{if(F4==153){var Dl=KS;var Dk=(((Dl))|0)>6;if(!(Dk)){F4=155;break $bb142$$bb143$91}AW=3}}}while(0);var Dj=RH;var Di=((Dj+15)&4294967295);var Dh=la[((Di)>>0)];var Df=iB((Dh),8,0)==5;if(Df){F4=157}else{F4=156}$bb147$$bb146$96:do{if(F4==156){var De=RH;var Dd=((De+15)&4294967295);var Dc=la[((Dd)>>0)];var Db=iB((Dc),8,0)==7;if(Db){F4=157;break $bb147$$bb146$96}var Cl=RH;var Ck=((Cl+15)&4294967295);var Cj=la[((Ck)>>0)];var Ci=iB((Cj),8,0)==3;if(Ci){F4=162}else{F4=161}$bb150$$bb149$99:do{if(F4==161){var Ch=RH;var Cg=((Ch+15)&4294967295);var B5=la[((Cg)>>0)];var B4=iB((B5),8,0)==8;if(B4){F4=162;break $bb150$$bb149$99}var AY=MO;var AX=((AY+4)&4294967295);var SJ=xV[((AX)>>1)];var SI=oD((SJ),16,0);var SG=(SI)&1;var SF=(((SG))&255);var Kz=iB((SF),8,0)!=0;var CU=(Kz)^1;var Jq=oD((CU),1,0);var Kv=iB((Jq),8,0)!=0;if(Kv){F4=166}else{F4=169}if(F4==166){var SE=MO;var SD=((SE+18)&4294967295);var SC=ll[((SD)>>0)];var SB=oD((SC),8,0);var Sz=KG;Nc=SB;R9=Sz;var Sy=uA[((t3)>>2)];uA[((ma)>>2)]=Sy;uA[((qf)>>2)]=0;var Sw=uA[((t3)>>2)];var Sv=((v0+Sw*16)&4294967295);var Su=((Sv)&4294967295);EQ=Su;var St=EQ;var Ss=((St)&4294967295);uA[((Ss)>>2)]=8;var Sr=EQ;var Sq=((Sr+4)&4294967295);uA[((Sq)>>2)]=0;var Sp=R9;var So=(Sp);var Sn=EQ;var Sm=((Sn+8)&4294967295);uA[((Sm)>>2)]=So;var Sl=EQ;var Sk=((Sl+12)&4294967295);var Sj=Nc;uA[((Sk)>>2)]=Sj;var Si=uA[((t3)>>2)];var Sh=(((Si)+1)&4294967295);uA[((t3)>>2)]=Sh;var Sf=(((Sh))|0)>159;if(Sf){F4=167}else{F4=168}if(F4==167){uA[((t3)>>2)]=0}var Se=MO;var Sd=((Se+21)&4294967295);var Sc=ll[((Sd)>>0)];var R8=oD((Sc),8,0);var R7=MO;var R5=((R7+20)&4294967295);var R4=ll[((R5)>>0)];var R3=oD((R4),8,0);var R2=WE;lq(R2,R3,R8)}var R1=L3;var R0=MO;var RZ=AW;var RY=gP(R1,1,D3,R0,RZ);F4=170;break $bb147$$bb146$96}}while(0);var B3=MO;var B2=((B3+18)&4294967295);var B1=ll[((B2)>>0)];var B0=oD((B1),8,0);var BZ=KG;MP=B0;RU=BZ;var BY=uA[((t3)>>2)];uA[((ma)>>2)]=BY;uA[((qf)>>2)]=0;var BX=uA[((t3)>>2)];var BW=((v0+BX*16)&4294967295);var BL=((BW)&4294967295);EB=BL;var BK=EB;var BJ=((BK)&4294967295);uA[((BJ)>>2)]=8;var BI=EB;var BH=((BI+4)&4294967295);uA[((BH)>>2)]=0;var BG=RU;var BF=(BG);var BE=EB;var BD=((BE+8)&4294967295);uA[((BD)>>2)]=BF;var BC=EB;var Bq=((BC+12)&4294967295);var Bp=MP;uA[((Bq)>>2)]=Bp;var Bo=uA[((t3)>>2)];var Bn=(((Bo)+1)&4294967295);uA[((t3)>>2)]=Bn;var Bm=(((Bn))|0)>159;if(Bm){F4=163}else{F4=164}if(F4==163){uA[((t3)>>2)]=0}var Bl=L3;var Bk=MO;var Bj=AW;var Bi=gP(Bl,1,D3,Bk,Bj);var Bh=MO;var A6=((Bh+21)&4294967295);var A5=ll[((A6)>>0)];var A4=oD((A5),8,0);var A3=MO;var A2=((A3+20)&4294967295);var A1=ll[((A2)>>0)];var A0=oD((A1),8,0);var AZ=WE;lq(AZ,A0,A4);F4=170;break $bb147$$bb146$96}}while(0);if(F4==157){var Da=MO;var C9=((Da+18)&4294967295);var C7=ll[((C9)>>0)];var C6=oD((C7),8,0);var C5=KG;Mf=C6;Rj=C5;var C4=uA[((t3)>>2)];uA[((ma)>>2)]=C4;uA[((qf)>>2)]=0;var C3=uA[((t3)>>2)];var C2=((v0+C3*16)&4294967295);var C1=((C2)&4294967295);Ed=C1;var CZ=Ed;var CY=((CZ)&4294967295);uA[((CY)>>2)]=8;var CX=Ed;var CW=((CX+4)&4294967295);uA[((CW)>>2)]=0;var CV=Rj;var CT=(CV);var CS=Ed;var CR=((CS+8)&4294967295);uA[((CR)>>2)]=CT;var CQ=Ed;var CP=((CQ+12)&4294967295);var CO=Mf;uA[((CP)>>2)]=CO;var CN=uA[((t3)>>2)];var CM=(((CN)+1)&4294967295);uA[((t3)>>2)]=CM;var CJ=(((CM))|0)>159;if(CJ){F4=158}else{F4=159}if(F4==158){uA[((t3)>>2)]=0}var CI=MO;var CH=((CI+21)&4294967295);var CG=ll[((CH)>>0)];var CF=oD((CG),8,0);var CE=MO;var CD=((CE+20)&4294967295);var CC=ll[((CD)>>0)];var CB=oD((CC),8,0);var CA=WE;lq(CA,CB,CF);var Cp=L3;var Co=MO;var Cn=AW;var Cm=gP(Cp,1,D3,Co,Cn)}var RT=uA[((xt)>>2)];var RS=(((RT))|0)!=0;if(RS){F4=171}else{F4=173}$bb159$$bb160$118:do{if(F4==171){var RR=MO;var RQ=((RR+8)&4294967295);var RP=uA[((RQ)>>2)];var RO=((RP)&4294967295);var RN=uA[((RO)>>2)];var RM=uA[((fD)>>2)];K4=7;SN=RM;R6=0;Oh=RN;var RL=uA[((t3)>>2)];var RK=((v0+RL*16)&4294967295);var Rv=((RK)&4294967295);uA[((Rv)>>2)]=10;var Ru=uA[((t3)>>2)];var Rt=((v0+Ru*16)&4294967295);var Rs=((Rt+4)&4294967295);var Rr=K4;uA[((Rs)>>2)]=Rr;var Rq=uA[((t3)>>2)];var Rp=SN;var Ro=(Rp)&16777215;var Rn=R6;var Rm=(Rn)<<24;var Ra=(Rm)|(Ro);var Q9=((v0+Rq*16)&4294967295);var Q8=((Q9+8)&4294967295);uA[((Q8)>>2)]=Ra;var Q7=uA[((t3)>>2)];var Q6=((v0+Q7*16)&4294967295);var Q5=((Q6+12)&4294967295);var Q4=Oh;uA[((Q5)>>2)]=Q4;var Q3=uA[((t3)>>2)];var Q2=(((Q3)+1)&4294967295);uA[((t3)>>2)]=Q2;var Q1=(((Q2))|0)>159;if(!(Q1)){F4=173;break $bb159$$bb160$118}uA[((t3)>>2)]=0}}while(0);var QN=uA[((Ef)>>2)];uA[((Ee)>>2)]=QN;var QM=uA[((Eb)>>2)];uA[((Ea)>>2)]=QM;uA[((D9)>>2)]=0;uA[((D8)>>2)]=0;var QL=uA[((D6)>>2)];uA[((D5)>>2)]=QL;var QK=uA[((D4)>>2)];var QJ=(((QK))|0)!=0;var QI=oD((QJ),1,0);JY=QI;var Ko=iB((QI),8,0)!=0;if(Ko){F4=174}else{F4=175}$bb162$$bb163$122:do{if(F4==174){var QH=uA[((D0)>>2)];uA[((DZ)>>2)]=QH}else{if(F4==175){var QG=Br;var QF=((QG+15)&4294967295);var QE=la[((QF)>>0)];var Qs=iB((QE),8,0)!=0;if(!(Qs)){F4=178;break $bb162$$bb163$122}uA[((DY)>>2)]=0;var Qr=Br;lw(0,0,Qr,CL);uA[((DX)>>2)]=1;var Qq=uA[((DV)>>2)];uA[((DU)>>2)]=Qq;var Qp=uA[((DR)>>2)];uA[((DQ)>>2)]=Qp;var Qo=uA[((DN)>>2)];uA[((DM)>>2)]=Qo;var Qn=uA[((DL)>>2)];var Qm=(((Qn))|0)!=0;var Ql=oD((Qm),1,0);JX=Ql;var Qk=JX;var Kn=iB((Qk),8,0)!=0;if(!(Kn)){F4=178;break $bb162$$bb163$122}var Qj=uA[((DJ)>>2)];uA[((DI)>>2)]=Qj}}}while(0);var P7=L3;var P6=MO;var P5=AW;var P4=gP(P7,2,D3,P6,P5)}else{if(F4==117){ud(Dg,0,48,1,0);AW=0;var Qv=MO;var Qu=((Qv+8)&4294967295);var Qi=uA[((Qu)>>2)];var Qh=((Qi+4)&4294967295);var Qg=uA[((Qh)>>2)];var Qf=(Qg)&128;var Qe=(((Qf))|0)!=0;if(Qe){F4=118}else{F4=119}if(F4==118){AW=5}var Qd=RH;var Qc=((Qd+8)&4294967295);var Qa=uA[((Qc)>>2)];Vr=Qa;var P9=MO;var P8=((P9+4)&4294967295);var PX=xV[((P8)>>1)];var PW=oD((PX),16,0);var PV=(PW)&1;var PU=(((PV))&255);var Lj=iB((PU),8,0)!=0;var F2=(Lj)^1;var RW=oD((F2),1,0);var Li=iB((RW),8,0)!=0;if(Li){F4=120}else{F4=123}if(F4==120){var PT=MO;var PS=((PT+18)&4294967295);var PR=ll[((PS)>>0)];var PQ=oD((PR),8,0);LG=PQ;Qb=0;var PP=uA[((t3)>>2)];uA[((ma)>>2)]=PP;uA[((qf)>>2)]=0;var PO=uA[((t3)>>2)];var PM=((v0+PO*16)&4294967295);var PL=((PM)&4294967295);DE=PL;var PK=DE;var PI=((PK)&4294967295);uA[((PI)>>2)]=8;var PG=DE;var PE=((PG+4)&4294967295);uA[((PE)>>2)]=0;var PC=Qb;var PA=(PC);var Py=DE;var Pw=((Py+8)&4294967295);uA[((Pw)>>2)]=PA;var Pr=DE;var Pq=((Pr+12)&4294967295);var Pp=LG;uA[((Pq)>>2)]=Pp;var Pn=uA[((t3)>>2)];var Pl=(((Pn)+1)&4294967295);uA[((t3)>>2)]=Pl;var Pj=(((Pl))|0)>159;if(Pj){F4=121}else{F4=122}if(F4==121){uA[((t3)>>2)]=0}var Ph=MO;var Pf=((Ph+21)&4294967295);var Pd=ll[((Pf)>>0)];var Pb=oD((Pd),8,0);var O6=MO;var O5=((O6+20)&4294967295);var O4=ll[((O5)>>0)];var O2=oD((O4),8,0);var O0=MO;var OY=((O0+14)&4294967295);var OW=ll[((OY)>>0)];var OU=oD((OW),8,0);var OS=((lx+OU*4)&4294967295);var OQ=uA[((OS)>>2)];lq(OQ,O2,Pb)}var OK=RH;var OJ=((OK+15)&4294967295);var OI=la[((OJ)>>0)];var OF=iB((OI),8,0)==8;if(OF){F4=124}else{F4=125}if(F4==124){uA[((mD)>>2)]=0}var OD=Br;var OB=((OD+15)&4294967295);var Oz=la[((OB)>>0)];var Ox=iB((Oz),8,0)==2;if(Ox){F4=126}else{F4=128}$bb121$$bb122$141:do{if(F4==126){var Ov=uA[((tW)>>2)];var Ot=uA[((oR)>>2)];var Kl=(((Ov))|0)==(((Ot))|0);if(!(Kl)){F4=128;break $bb121$$bb122$141}var Kk=uA[((t3)>>2)];uA[((tW)>>2)]=Kk}}while(0);var Kj=MO;lw(0,0,Kj,KR);var Ki=uA[((DB)>>2)];var Kh=(((Ki)*2)&4294967295);uA[((DA)>>2)]=Kh;var Kg=uA[((Dy)>>2)];uA[((Dx)>>2)]=Kg;var Kf=uA[((Dv)>>2)];uA[((Du)>>2)]=Kf;var Ke=uA[((Va)>>2)];uA[((U8)>>2)]=Ke;var Kd=uA[((U4)>>2)];uA[((U2)>>2)]=Kd;var Kc=MO;var Kb=((Kc+8)&4294967295);var Ka=uA[((Kb)>>2)];var J8=MO;var J7=AW;var J6=gP(Ka,0,D3,J8,J7)}else{if(F4==41){M6=0;var FY=Br;var FX=((FY+15)&4294967295);var FW=la[((FX)>>0)];var FV=iB((FW),8,0)==2;if(FV){F4=42}else{F4=43}$bb38$$bb39$146:do{if(F4==42){M6=1}else{if(F4==43){var FU=Br;var FT=((FU+19)&4294967295);var FS=la[((FT)>>0)];var FR=iB((FS),8,0)==0;if(FR){F4=44}else{F4=46}$bb40$$bb42$149:do{if(F4==44){var FQ=Br;var FP=((FQ+15)&4294967295);var FO=la[((FP)>>0)];var FN=iB((FO),8,0)==3;if(!(FN)){F4=46;break $bb40$$bb42$149}M6=1;F4=48;break $bb38$$bb39$146}}while(0);var Tt=M6;var FM=(((Tt))|0)==0;if(!(FM)){F4=48;break $bb38$$bb39$146}var FL=MO;var FK=((FL+4)&4294967295);var FJ=uW[((FK)>>1)];var FI=(FJ)|8192;var FH=MO;var FG=((FH+4)&4294967295);uW[((FG)>>1)]=FI}}}while(0);var FF=MO;lw(0,0,FF,KR);var FE=uA[((U0)>>2)];var FD=(FE)|4;uA[((UY)>>2)]=FD;var FC=c(KR,0,0)}else{if(F4==52){var Fc=MO;var Fa=((Fc+8)&4294967295);var E8=uA[((Fa)>>2)];L3=E8;ud(SK,0,48,1,0);uA[((UX)>>2)]=4;SA=0;var E7=Br;var E6=((E7+15)&4294967295);var E5=la[((E6)>>0)];var E4=iB((E5),8,0)==2;if(E4){F4=53}else{F4=56}$bb50$$bb51$156:do{if(F4==53){var AI=MO;var i=((AI+18)&4294967295);var WS=ll[((i)>>0)];var WQ=oD((WS),8,0);GV=WQ;Sx=0;var WO=uA[((t3)>>2)];uA[((ma)>>2)]=WO;uA[((qf)>>2)]=0;var WM=uA[((t3)>>2)];var WK=((v0+WM*16)&4294967295);var WI=((WK)&4294967295);J0=WI;var WG=J0;var WF=((WG)&4294967295);uA[((WF)>>2)]=8;var WB=J0;var Wz=((WB+4)&4294967295);uA[((Wz)>>2)]=0;var Wx=Sx;var Wv=(Wx);var Ws=J0;var Wq=((Ws+8)&4294967295);uA[((Wq)>>2)]=Wv;var Wo=J0;var Wm=((Wo+12)&4294967295);var Wk=GV;uA[((Wm)>>2)]=Wk;var Wi=uA[((t3)>>2)];var We=(((Wi)+1)&4294967295);uA[((t3)>>2)]=We;var Wc=(((We))|0)>159;if(Wc){F4=54}else{F4=55}if(F4==54){uA[((t3)>>2)]=0}var Wa=MO;var V8=((Wa+21)&4294967295);var V6=ll[((V8)>>0)];var V4=oD((V6),8,0);var V2=MO;var V0=((V2+20)&4294967295);var VY=ll[((V0)>>0)];var VX=oD((VY),8,0);var VU=MO;var VS=((VU+14)&4294967295);var VQ=ll[((VS)>>0)];var VO=oD((VQ),8,0);var VM=((lx+VO*4)&4294967295);var VK=uA[((VM)>>2)];lq(VK,VX,V4);SA=1}else{if(F4==56){var VI=Br;var VG=((VI+15)&4294967295);var VE=la[((VG)>>0)];var VD=iB((VE),8,0)!=3;if(VD){F4=61}else{F4=57}$bb54$$bb52$162:do{if(F4==57){var VB=Br;var VA=((VB+19)&4294967295);var Vz=la[((VA)>>0)];var Vy=iB((Vz),8,0)!=0;if(Vy){F4=61;break $bb54$$bb52$162}var Vx=Br;var Vw=((Vx+18)&4294967295);var Vv=ll[((Vw)>>0)];var Vu=oD((Vv),8,0);NB=Vu;Sb=0;var Vt=uA[((t3)>>2)];uA[((ma)>>2)]=Vt;uA[((qf)>>2)]=0;var Vs=uA[((t3)>>2)];var Vq=((v0+Vs*16)&4294967295);var Vp=((Vq)&4294967295);ER=Vp;var Vo=ER;var Vn=((Vo)&4294967295);uA[((Vn)>>2)]=8;var Vm=ER;var Vl=((Vm+4)&4294967295);uA[((Vl)>>2)]=0;var Vk=Sb;var Vj=(Vk);var Vi=ER;var Vh=((Vi+8)&4294967295);uA[((Vh)>>2)]=Vj;var Vf=ER;var Ve=((Vf+12)&4294967295);var Vd=NB;uA[((Ve)>>2)]=Vd;var Vb=uA[((t3)>>2)];var U9=(((Vb)+1)&4294967295);uA[((t3)>>2)]=U9;var U7=(((U9))|0)>159;if(U7){F4=59}else{F4=60}if(F4==59){uA[((t3)>>2)]=0}var U5=Br;var U3=((U5+21)&4294967295);var U1=ll[((U3)>>0)];var UZ=oD((U1),8,0);var UU=Br;var UT=((UU+20)&4294967295);var US=ll[((UT)>>0)];var UQ=oD((US),8,0);var UO=Br;var UM=((UO+14)&4294967295);var UK=ll[((UM)>>0)];var UI=oD((UK),8,0);var UG=((lx+UI*4)&4294967295);var UE=uA[((UG)>>2)];lq(UE,UQ,UZ);SA=1;F4=65;break $bb50$$bb51$156}}while(0);var Uy=uA[((hk)>>2)];var Ux=(((Uy))|0)<0;if(!(Ux)){F4=65;break $bb50$$bb51$156}var Uw=Br;var Uu=((Uw+18)&4294967295);var Us=ll[((Uu)>>0)];var Uq=oD((Us),8,0);Nb=Uq;RX=0;var Uo=uA[((t3)>>2)];uA[((ma)>>2)]=Uo;uA[((qf)>>2)]=0;var Um=uA[((t3)>>2)];var Uk=((v0+Um*16)&4294967295);var Ui=((Uk)&4294967295);EC=Ui;var Uc=EC;var Ub=((Uc)&4294967295);uA[((Ub)>>2)]=8;var Ua=EC;var T8=((Ua+4)&4294967295);uA[((T8)>>2)]=0;var T6=RX;var T4=(T6);var T2=EC;var T0=((T2+8)&4294967295);uA[((T0)>>2)]=T4;var TY=EC;var TW=((TY+12)&4294967295);var PJ=Nb;uA[((TW)>>2)]=PJ;var PH=uA[((t3)>>2)];var PF=(((PH)+1)&4294967295);uA[((t3)>>2)]=PF;var PD=(((PF))|0)>159;if(PD){F4=63}else{F4=64}if(F4==63){uA[((t3)>>2)]=0}var PB=MO;var Pz=((PB+21)&4294967295);var Px=ll[((Pz)>>0)];var Pv=oD((Px),8,0);var Pu=MO;var Pt=((Pu+20)&4294967295);var Po=ll[((Pt)>>0)];var Pm=oD((Po),8,0);var Pk=MO;var Pi=((Pk+14)&4294967295);var Pg=ll[((Pi)>>0)];var Pe=oD((Pg),8,0);var Pc=((lx+Pe*4)&4294967295);var Pa=uA[((Pc)>>2)];lq(Pa,Pm,Pv)}}}while(0);var O9=RH;var O8=((O9+15)&4294967295);var O3=la[((O8)>>0)];var O1=iB((O3),8,0)==2;if(O1){F4=68}else{F4=66}$bb59$$bb57$174:do{if(F4==66){var OZ=RH;var OX=((OZ+8)&4294967295);var OV=uA[((OX)>>2)];var OT=((OV+4)&4294967295);var OR=uA[((OT)>>2)];var OP=(OR)&256;var OO=(((OP))|0)!=0;if(OO){F4=68;break $bb59$$bb57$174}var ON=L3;var OH=((ON+4)&4294967295);var OE=uA[((OH)>>2)];var OC=(OE)&33554432;var OA=(((OC))|0)!=0;if(OA){F4=68;break $bb59$$bb57$174}var Od=MO;var Oc=((Od+4)&4294967295);var Ob=xV[((Oc)>>1)];var Oa=oD((Ob),16,0);var N9=(Oa)&8;var N8=(((N9))|0)!=0;if(!(N8)){F4=72;break $bb59$$bb57$174}sR(50,0);F4=72;break $bb59$$bb57$174}}while(0);$bb59$$bb64$179:do{if(F4==68){var Oy=MO;lw(0,1,Oy,KR);var Ow=uA[((UR)>>2)];uA[((UP)>>2)]=Ow;var Ou=uA[((UL)>>2)];uA[((UJ)>>2)]=Ou;var Os=L3;var Or=MO;var Oq=gP(Os,0,D3,Or,0);var On=MO;var Om=((On+4)&4294967295);var Ol=xV[((Om)>>1)];var Ok=oD((Ol),16,0);var Oj=(Ok)&8;var Oi=(((Oj))|0)!=0;if(!(Oi)){F4=72;break $bb59$$bb64$179}sR(25,1);var Og=L3;var Of=MO;var Oe=gP(Og,0,D3,Of,0)}}while(0);var N6=SA;var N5=(((N6))|0)!=0;if(N5){F4=73}else{F4=75}$bb65$$bb66$183:do{if(F4==73){var N4=uA[((tW)>>2)];var N3=uA[((oR)>>2)];var N2=(((N4))|0)==(((N3))|0);if(!(N2)){F4=76;break $bb65$$bb66$183}var N1=uA[((t3)>>2)];uA[((tW)>>2)]=N1}else{if(F4==75){var N0=MO;var NZ=((N0+4)&4294967295);var NX=uW[((NZ)>>1)];var NV=(NX)|8192;var NT=MO;var NR=((NT+4)&4294967295);uW[((NR)>>1)]=NV}}}while(0);var NP=MO;lw(0,0,NP,KR);var NN=uA[((UF)>>2)];uA[((UD)>>2)]=NN;var NL=uA[((UB)>>2)];uA[((Uv)>>2)]=NL;var Nw=uA[((Ur)>>2)];uA[((Up)>>2)]=Nw;var Nv=uA[((Ul)>>2)];uA[((Uj)>>2)]=Nv;var Nu=L3;var Ns=MO;var Nq=gP(Nu,0,D3,Ns,0);var No=MO;var Nm=((No+19)&4294967295);var Nk=la[((Nm)>>0)];var Ni=iB((Nk),8,0)==0;if(!(Ni)){F4=179;break $bb168$$bb36$$bb123$$bb109$$bb37$$bb48$$bb45$$bb74$$bb89$57}var Ng=SM;var Na=((Ng+19)&4294967295);var M9=la[((Na)>>0)];var M8=iB((M9),8,0)==0;if(!(M8)){F4=179;break $bb168$$bb36$$bb123$$bb109$$bb37$$bb48$$bb45$$bb74$$bb89$57}var M5=Br;var M3=((M5+15)&4294967295);var M1=la[((M3)>>0)];var MZ=iB((M1),8,0)==7;if(MZ){F4=79}else{F4=80}if(F4==79){sR(20,0)}var MX=Br;var MV=((MX+15)&4294967295);var MT=la[((MV)>>0)];var MN=iB((MT),8,0)==6;if(!(MN)){F4=179;break $bb168$$bb36$$bb123$$bb109$$bb37$$bb48$$bb45$$bb74$$bb89$57}sR(12,0)}else{if(F4==49){var FB=MO;lw(0,0,FB,KR);var FA=MO;var Fz=((FA+4)&4294967295);var Fy=xV[((Fz)>>1)];var Fx=oD((Fy),16,0);var Fw=(Fx)&8;var Fv=(((Fw))|0)!=0;if(Fv){F4=50}else{F4=51}if(F4==50){var Fu=MO;var Ft=((Fu+12)&4294967295);var Fs=uW[((Ft)>>1)];var Fr=iB((Fs),16,0);var Fq=c(KR,Fr,0)}var Fp=MO;var Fo=((Fp+12)&4294967295);var Fi=uW[((Fo)>>1)];var Fg=iB((Fi),16,0);var Fe=c(KR,Fg,0)}else{if(F4==82){var MM=Br;var ML=((MM+15)&4294967295);var MJ=la[((ML)>>0)];var MH=iB((MJ),8,0)==2;if(MH){F4=83}else{F4=86}$bb75$$bb76$199:do{if(F4==83){var MF=MO;var MD=((MF+18)&4294967295);var MB=ll[((MD)>>0)];var Mz=oD((MB),8,0);Ms=Mz;RF=0;var Mx=uA[((t3)>>2)];uA[((ma)>>2)]=Mx;uA[((qf)>>2)]=0;var Jc=uA[((t3)>>2)];var Ja=((v0+Jc*16)&4294967295);var I8=((Ja)&4294967295);Ep=I8;var I6=Ep;var I4=((I6)&4294967295);uA[((I4)>>2)]=8;var I2=Ep;var I0=((I2+4)&4294967295);uA[((I0)>>2)]=0;var IY=RF;var IX=(IY);var IW=Ep;var IS=((IW+8)&4294967295);uA[((IS)>>2)]=IX;var IQ=Ep;var IO=((IQ+12)&4294967295);var IM=Ms;uA[((IO)>>2)]=IM;var IK=uA[((t3)>>2)];var II=(((IK)+1)&4294967295);uA[((t3)>>2)]=II;var IG=(((II))|0)>159;if(IG){F4=84}else{F4=85}if(F4==84){uA[((t3)>>2)]=0}var IE=MO;var ID=((IE+21)&4294967295);var IC=ll[((ID)>>0)];var Ix=oD((IC),8,0);var Iv=MO;var It=((Iv+20)&4294967295);var Ir=ll[((It)>>0)];var Ip=oD((Ir),8,0);var In=MO;var Il=((In+14)&4294967295);var Ij=ll[((Il)>>0)];var Ii=oD((Ij),8,0);var Ih=((lx+Ii*4)&4294967295);var Id=uA[((Ih)>>2)];lq(Id,Ip,Ix)}else{if(F4==86){var Ib=Br;var H9=((Ib+15)&4294967295);var H7=la[((H9)>>0)];var H5=iB((H7),8,0)==3;if(H5){F4=87}else{F4=90}if(F4==87){var H3=Br;var H1=((H3+18)&4294967295);var HZ=ll[((H1)>>0)];var HY=oD((HZ),8,0);Mq=HY;Rz=0;var HX=uA[((t3)>>2)];uA[((ma)>>2)]=HX;uA[((qf)>>2)]=0;var HW=uA[((t3)>>2)];var HV=((v0+HW*16)&4294967295);var HU=((HV)&4294967295);Eo=HU;var HT=Eo;var HS=((HT)&4294967295);uA[((HS)>>2)]=8;var HR=Eo;var HQ=((HR+4)&4294967295);uA[((HQ)>>2)]=0;var HP=Rz;var HO=(HP);var HN=Eo;var HL=((HN+8)&4294967295);uA[((HL)>>2)]=HO;var HJ=Eo;var HI=((HJ+12)&4294967295);var HH=Mq;uA[((HI)>>2)]=HH;var HG=uA[((t3)>>2)];var HF=(((HG)+1)&4294967295);uA[((t3)>>2)]=HF;var HE=(((HF))|0)>159;if(HE){F4=88}else{F4=89}if(F4==88){uA[((t3)>>2)]=0}var HD=Br;var HC=((HD+21)&4294967295);var HB=ll[((HC)>>0)];var HA=oD((HB),8,0);var Hz=Br;var Hy=((Hz+20)&4294967295);var Hw=ll[((Hy)>>0)];var Hu=oD((Hw),8,0);var Hs=Br;var Hq=((Hs+14)&4294967295);var Ho=ll[((Hq)>>0)];var Hl=oD((Ho),8,0);var Hj=((lx+Hl*4)&4294967295);var Hf=uA[((Hj)>>2)];lq(Hf,Hu,HA)}else{if(F4==90){var He=uA[((hk)>>2)];var Hc=(((He))|0)<0;if(!(Hc)){F4=94;break $bb75$$bb76$199}var Ha=MO;var G8=((Ha+18)&4294967295);var G6=ll[((G8)>>0)];var G4=oD((G6),8,0);L4=G4;QW=0;var G2=uA[((t3)>>2)];uA[((ma)>>2)]=G2;uA[((qf)>>2)]=0;var G0=uA[((t3)>>2)];var GY=((v0+G0*16)&4294967295);var GU=((GY)&4294967295);D1=GU;var GT=D1;var GR=((GT)&4294967295);uA[((GR)>>2)]=8;var GP=D1;var GN=((GP+4)&4294967295);uA[((GN)>>2)]=0;var GL=QW;var GJ=(GL);var GH=D1;var GE=((GH+8)&4294967295);uA[((GE)>>2)]=GJ;var GC=D1;var Gz=((GC+12)&4294967295);var Gy=L4;uA[((Gz)>>2)]=Gy;var Gv=uA[((t3)>>2)];var Gt=(((Gv)+1)&4294967295);uA[((t3)>>2)]=Gt;var Gr=(((Gt))|0)>159;if(Gr){F4=92}else{F4=93}if(F4==92){uA[((t3)>>2)]=0}var Gp=MO;var Gn=((Gp+21)&4294967295);var Gl=ll[((Gn)>>0)];var Gj=oD((Gl),8,0);var Gh=MO;var Cz=((Gh+20)&4294967295);var Cy=ll[((Cz)>>0)];var Cx=oD((Cy),8,0);var Cw=MO;var Cv=((Cw+14)&4294967295);var Cu=ll[((Cv)>>0)];var Ct=oD((Cu),8,0);var Cs=((lx+Ct*4)&4294967295);var Cr=uA[((Cs)>>2)];lq(Cr,Cx,Gj)}}}}}while(0);var Cq=Br;var Cf=((Cq+15)&4294967295);var Ce=la[((Cf)>>0)];var Cd=iB((Ce),8,0)==2;if(Cd){F4=97}else{F4=95}$bb83$$bb81$216:do{if(F4==95){var Cc=Br;var Cb=((Cc+15)&4294967295);var Ca=la[((Cb)>>0)];var B9=iB((Ca),8,0)!=3;if(B9){F4=99}else{F4=96}if(F4==96){var B8=Br;var B7=((B8+19)&4294967295);var B6=la[((B7)>>0)];var BV=iB((B6),8,0)==0;if(BV){F4=97;break $bb83$$bb81$216}}var BQ=MO;var BP=((BQ+4)&4294967295);var BO=uW[((BP)>>1)];var BN=(BO)|8192;var BM=MO;var BB=((BM+4)&4294967295);uW[((BB)>>1)]=BN;F4=100;break $bb83$$bb81$216}}while(0);$bb83$$bb85$221:do{if(F4==97){var BU=uA[((tW)>>2)];var BT=uA[((oR)>>2)];var BS=(((BU))|0)==(((BT))|0);if(!(BS)){F4=100;break $bb83$$bb85$221}var BR=uA[((t3)>>2)];uA[((tW)>>2)]=BR}}while(0);var BA=MO;lw(0,0,BA,KR);ud(RV,0,48,1,0);var Bz=uA[((Uf)>>2)];var By=(((Bz)*2)&4294967295);uA[((Ue)>>2)]=By;var Bx=uA[((T7)>>2)];uA[((T5)>>2)]=Bx;var Bw=uA[((T1)>>2)];uA[((TZ)>>2)]=Bw;var Bv=uA[((TV)>>2)];uA[((TU)>>2)]=Bv;var Bu=uA[((TS)>>2)];uA[((TR)>>2)]=Bu;var Bt=MO;var Bs=((Bt+4)&4294967295);var Bg=xV[((Bs)>>1)];var Bf=oD((Bg),16,0);var Be=(Bf)&8;var Bd=(((Be))|0)!=0;if(Bd){F4=101}else{F4=102}if(F4==101){var Bc=MO;var Bb=((Bc+8)&4294967295);var Ba=uA[((Bb)>>2)];var A9=MO;var A8=gP(Ba,0,D3,A9,0)}var A7=MO;var AV=((A7+8)&4294967295);var AU=uA[((AV)>>2)];var AT=MO;var AS=gP(AU,0,D3,AT,0)}else{if(F4==103){ud(RJ,0,48,1,0);var AR=MO;var AQ=((AR+4)&4294967295);var AP=xV[((AQ)>>1)];var AO=oD((AP),16,0);var AN=(AO)&1;var AM=(((AN))&255);var Mt=iB((AM),8,0)!=0;var SL=(Mt)^1;var N7=oD((SL),1,0);var Mr=iB((N7),8,0)!=0;if(Mr){F4=104}else{F4=107}if(F4==104){var AK=MO;var AJ=((AK+18)&4294967295);var AH=ll[((AJ)>>0)];var e=oD((AH),8,0);LS=e;Qt=0;var WR=uA[((t3)>>2)];uA[((ma)>>2)]=WR;uA[((qf)>>2)]=0;var WP=uA[((t3)>>2)];var WN=((v0+WP*16)&4294967295);var WL=((WN)&4294967295);DO=WL;var WJ=DO;var WH=((WJ)&4294967295);uA[((WH)>>2)]=8;var WD=DO;var WC=((WD+4)&4294967295);uA[((WC)>>2)]=0;var WA=Qt;var Wy=(WA);var Ww=DO;var Wu=((Ww+8)&4294967295);uA[((Wu)>>2)]=Wy;var Wr=DO;var Wp=((Wr+12)&4294967295);var Wn=LS;uA[((Wp)>>2)]=Wn;var Wl=uA[((t3)>>2)];var Wg=(((Wl)+1)&4294967295);uA[((t3)>>2)]=Wg;var Wf=(((Wg))|0)>159;if(Wf){F4=105}else{F4=106}if(F4==105){uA[((t3)>>2)]=0}var Wd=MO;var Wb=((Wd+21)&4294967295);var V9=ll[((Wb)>>0)];var V7=oD((V9),8,0);var V5=MO;var V3=((V5+20)&4294967295);var V1=ll[((V3)>>0)];var VZ=oD((V1),8,0);var VW=MO;var VV=((VW+14)&4294967295);var VT=ll[((VV)>>0)];var VR=oD((VT),8,0);var VP=((lx+VR*4)&4294967295);var VN=uA[((VP)>>2)];lq(VN,VZ,V7)}var VL=RH;var VJ=((VL+15)&4294967295);var VH=la[((VJ)>>0)];var VF=iB((VH),8,0)==8;if(VF){F4=108}else{F4=109}if(F4==108){uA[((mD)>>2)]=0}var RI=MO;lw(0,0,RI,KR);var RG=uA[((TP)>>2)];var RE=(((RG)*2)&4294967295);uA[((TO)>>2)]=RE;var RD=uA[((TM)>>2)];uA[((TL)>>2)]=RD;var RC=uA[((TJ)>>2)];uA[((TI)>>2)]=RC;var RB=Br;var RA=((RB+15)&4294967295);var Ry=la[((RA)>>0)];var Rx=iB((Ry),8,0)==2;if(Rx){F4=110}else{F4=113}if(F4==110){var Rw=uA[((tW)>>2)];var Rl=uA[((oR)>>2)];var Rk=(((Rw))|0)==(((Rl))|0);if(Rk){F4=111}else{F4=112}if(F4==111){var Ri=uA[((t3)>>2)];uA[((tW)>>2)]=Ri}var Rh=MO;var Rg=((Rh+8)&4294967295);var Rf=uA[((Rg)>>2)];var Re=MO;var Rd=gP(Rf,0,D3,Re,0)}else{if(F4==113){var Rc=RH;var Rb=((Rc+15)&4294967295);var QZ=la[((Rb)>>0)];var QY=iB((QZ),8,0)!=2;if(QY){F4=116}else{F4=114}$bb107$$bb101$244:do{if(F4==114){var QX=MO;var QV=((QX+4)&4294967295);var QT=xV[((QV)>>1)];var QS=oD((QT),16,0);var QR=(QS)&1;var QQ=(((QR))&255);var Ll=iB((QQ),8,0)!=0;var PN=(Ll)^1;var GG=oD((PN),1,0);var Lk=iB((GG),8,0)!=0;if(Lk){F4=116;break $bb107$$bb101$244}var QP=MO;var QO=((QP+8)&4294967295);var QD=uA[((QO)>>2)];var QC=MO;var QB=gP(QD,0,D3,QC,0);F4=179;break $bb168$$bb36$$bb123$$bb109$$bb37$$bb48$$bb45$$bb74$$bb89$57}}while(0);uA[((mD)>>2)]=0;var QA=MO;var Qz=((QA+8)&4294967295);var Qy=uA[((Qz)>>2)];var Qx=MO;var Qw=gP(Qy,0,D3,Qx,0);uA[((mD)>>2)]=0}}}}}}}}}}}while(0);var P3=uA[((za)>>2)];var P2=(((P3)+1)&4294967295);uA[((za)>>2)]=P2;F4=180;continue $bb169$11}if(F4==181){CK=1;var Lf=uA[((j)>>2)];var Le=(((Lf))|0)>0;var Ld=uA[((hk)>>2)];var Lc=(((Ld))|0)>=0;var EE=(Le)&(Lc);if(EE){F4=182}else{F4=185}if(F4==182){var Lb=uA[((hk)>>2)];var La=((v0+Lb*16)&4294967295);var K9=((La+4)&4294967295);var K8=uA[((K9)>>2)];var K7=(((K8))|0)==0;if(K7){F4=183}else{F4=184}if(F4==183){var K6=uA[((hk)>>2)];var K3=uA[((j)>>2)];var K2=((v0+K6*16)&4294967295);var K1=((K2+4)&4294967295);uA[((K1)>>2)]=K3}uA[((j)>>2)]=0}var K0=CK;var KZ=(((K0))|0)!=0;if(KZ){F4=186}else{F4=187}if(F4==186){uA[((q)>>2)]=-1;uA[((mD)>>2)]=0;var KY=uA[((t3)>>2)];uA[((tW)>>2)]=KY;yw();uA[((sz)>>2)]=-1;ud(tc,0,16,1,0)}var KX=SO;var KV=uA[((KX)>>2)];var KU=(((KV))|0)>0;if(KU){F4=188}else{F4=191}if(F4==188){var KT=uA[((g4)>>2)];var KQ=uA[((dT)>>2)];Gw=5;Ug=KQ;Lg=0;IB=KT;var KP=uA[((t3)>>2)];var KO=((v0+KP*16)&4294967295);var KN=((KO)&4294967295);uA[((KN)>>2)]=10;var KM=uA[((t3)>>2)];var KL=((v0+KM*16)&4294967295);var KK=((KL+4)&4294967295);var KJ=Gw;uA[((KK)>>2)]=KJ;var KI=uA[((t3)>>2)];var KH=Ug;var KF=(KH)&16777215;var KE=Lg;var KD=(KE)<<24;var KC=(KD)|(KF);var KB=((v0+KI*16)&4294967295);var KA=((KB+8)&4294967295);uA[((KA)>>2)]=KC;var Ky=uA[((t3)>>2)];var Kx=((v0+Ky*16)&4294967295);var Kw=((Kx+12)&4294967295);var Ku=IB;uA[((Kw)>>2)]=Ku;var Kt=uA[((t3)>>2)];var Ks=(((Kt)+1)&4294967295);uA[((t3)>>2)]=Ks;var Kr=(((Ks))|0)>159;if(Kr){F4=189}else{F4=190}if(F4==189){uA[((t3)>>2)]=0}var Kq=SO;uA[((Kq)>>2)]=0}NE=0}else{if(F4==15){NE=1}}}}}}var Kp=NE;ED=Kp;var ES=ED;vp=Gg;return ES;return null}function mh(CF,BA,AM){var Be=vp;vp+=8;n1(Be,0,8);var By;var B3=null;var BW;var Dl;var CK;var Dg;var CT;var CO;var Df;var AP;var BL;var De;var Bp;var AL;var AS;var AH;var Bz;var CP;var Dd;var Cb=Be;var C4=Be+4;Bp=CF;AL=BA;AS=AM;var Dc=AS;var Db=(((Dc))|0)==4;if(Db){By=1}else{By=4}$bb$$bb4$2:do{if(By==1){var Da=uA[((it)>>2)];var C9=(Da)!=0;var C8=uA[((bM)>>2)];var C7=(C8)!=0;var Ct=(C9)|(C7);if(Ct){By=3}else{By=2}if(By==3){Dd=1}else{if(By==2){Dd=0}}}else{if(By==4){var B9=AS;var B7=(((B9))|0)==2;if(B7){By=5}else{By=12}if(By==5){la[((vU)>>0)]=0;uA[((bM)>>2)]=0;var B5=uA[((it)>>2)];var B4=(B5)!=0;if(B4){By=6}else{By=7}if(By==6){var B2=uA[((it)>>2)];var B1=ts(B2);uA[((it)>>2)]=0}uA[((xn)>>2)]=0;uA[((Ap)>>2)]=0;uA[((t3)>>2)]=0;var B0=uA[((th)>>2)];var BZ=(B0)!=0;if(BZ){By=8}else{By=9}if(By==8){var BY=uA[((th)>>2)];rQ(BY);uA[((th)>>2)]=0}var BX=la[((((jg)&4294967295))>>0)];var BV=iB((BX),8,0)!=0;if(BV){By=10}else{By=11}if(By==10){var BU=eY()}uA[((((aI+24)&4294967295))>>2)]=0;Dd=0}else{if(By==12){var BT=AS;var BS=(((BT))|0)==3;if(BS){By=13}else{By=17}if(By==13){var Cu=la[((sL)>>0)];var BR=(Cu)?2:0;var BQ=(((BR))|0)==0;if(BQ){By=14}else{By=15}if(By==14){la[((vU)>>0)]=0;la[((sL)>>0)]=1}else{if(By==15){De=0;var BP=De;BL=BP;la[((vU)>>0)]=1;la[((sL)>>0)]=0;var BO=AD(((eW)&4294967295),xn,0)}}Dd=0}else{if(By==17){var BN=AS;var BM=(((BN))|0)==5;if(BM){By=18}else{By=23}if(By==18){uA[((xn)>>2)]=0;uA[((Ap)>>2)]=0;uA[((t3)>>2)]=0;var BK=uA[((th)>>2)];var BJ=(BK)!=0;if(BJ){By=19}else{By=20}if(By==19){var BI=uA[((th)>>2)];rQ(BI);uA[((th)>>2)]=0}var BH=la[((((jg)&4294967295))>>0)];var BG=iB((BH),8,0)!=0;if(BG){By=21}else{By=22}if(By==21){var BF=eY()}Dd=0}else{if(By==23){var BE=Bp;var BD=(BE)!=0;if(BD){By=25}else{By=24}$bb17$$bb16$36:do{if(By==24){var BC=AL;var BB=(BC)!=0;if(BB){By=25;break $bb17$$bb16$36}else{By=26;break $bb17$$bb16$36}}}while(0);if(By==25){var Bx=Bp;uA[((it)>>2)]=Bx;var Bw=AL;uA[((bM)>>2)]=Bw;la[((vU)>>0)]=1;la[((sL)>>0)]=0}var Bv=uA[((it)>>2)];var Bu=(Bv)==0;var Bt=uA[((bM)>>2)];var Bs=(Bt)==0;var CY=(Bu)&(Bs);if(CY){By=27}else{By=28}if(By==27){uA[((mo)>>2)]=0;la[((vU)>>0)]=0;Dd=0}else{if(By==28){var Br=uA[((it)>>2)];var Bq=(Br)==0;if(Bq){By=31}else{By=29}$bb27$$bb22$44:do{if(By==29){var Bo=uA[((it)>>2)];var Bn=aJ(Bo);var Bm=(((Bn))|0)==0;if(Bm){By=31;break $bb27$$bb22$44}Bz=1;CP=1;la[((vU)>>0)]=0;var Bl=uA[((it)>>2)];var Bk=ts(Bl);uA[((it)>>2)]=0;Dd=0;By=56;break $bb$$bb4$2}}while(0);Bz=0;CP=0;var Bj=uA[((k5)>>2)];var Bi=((Bj+40)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=uA[((mp)>>2)];var Bf=(((Bh))|0)!=(((Bg))|0);if(Bf){By=32}else{By=33}if(By==32){var Bd=uA[((k5)>>2)];var Bc=((Bd+40)&4294967295);var Bb=uA[((Bc)>>2)];AP=Bb;uA[((rW)>>2)]=0;var Ba=AP;m1(Ba,0);var A9=uA[((rW)>>2)];var A8=(((A9)+1)&4294967295);uA[((rW)>>2)]=A8;var A7=AP;uA[((mp)>>2)]=A7}var A6=uA[((bM)>>2)];var A5=uA[((it)>>2)];var A4=uA[((xy)>>2)];var A3=uw(A4,A5,A6,Cb,C4);uA[((bM)>>2)]=A3;var A2=uA[((Cb)>>2)];var A1=uA[((xy)>>2)];wy(A1,A2);var A0=uA[((xy)>>2)];l7(A0);var AZ=uA[((us)>>2)];var AY=(((AZ))|0)>0;var AX=uA[((lj)>>2)];var AW=(AX)!=0;var CV=(AY)|(AW);if(CV){By=34}else{By=46}$bb31$$bb36$51:do{if(By==34){var AV=uA[((xy)>>2)];var AU=((AV+332)&4294967295);var AT=((AU)&4294967295);qL(AT,300);var AR=uA[((us)>>2)];var AK=(((AR))|0)>0;if(AK){By=35}else{By=44}$bb32$$bb34$53:do{if(By==35){var AJ=uA[((xy)>>2)];var AI=((AJ+332)&4294967295);var i=((AI)&4294967295);var e=uA[((ni)>>2)];var Dm=Am(e,((AF)&4294967295),i);CT=269;var Dk=CT;var Dj=(((Dk))>>>0)<=255;var Di=CT;if(Dj){By=36}else{By=37}$bb_i11$$bb1_i12$55:do{if(By==36){var Dh=z6(Di);Df=Dh;B3=36;By=42;break $bb_i11$$bb1_i12$55}else{if(By==37){var C6=(((Di))>>>0)>12352;var C5=CT;var C3=(((C5))>>>0)<=42752;var AO=(C6)&(C3);if(AO){By=38}else{By=39}if(By==38){Df=1;CO=1;By=44;break $bb32$$bb34$53}else{if(By==39){var C2=CT;var C1=(((C2))>>>0)>563;if(C1){By=40}else{By=41}if(By==40){Df=0;CO=0;By=43;break $bb_i11$$bb1_i12$55}else{if(By==41){var C0=CT;var CZ=(((C0)-256)&4294967295);var CX=((xF+CZ)&4294967295);var CW=ll[((CX)>>0)];var CU=oD((CW),8,0);Df=CU;B3=41;By=42;break $bb_i11$$bb1_i12$55}}}}}}}while(0);if(By==42){var CS=B3==36?Dh:(CU);CO=CS;var CR=(((CS))|0)==0;if(!(CR)){By=44;break $bb32$$bb34$53}}var CQ=uA[((ta)>>2)];var CN=yf(((zX)&4294967295),1,88,CQ)}}while(0);var CM=uA[((lj)>>2)];var CL=(CM)!=0;if(!(CL)){By=46;break $bb31$$bb36$51}var CJ=uA[((lj)>>2)];var CI=uA[((xy)>>2)];var CH=((CI+332)&4294967295);var CG=((CH)&4294967295);var CE=lB[CJ](CG)}}while(0);var CD=uA[((mo)>>2)];var CC=(((CD))|0)!=0;if(CC){By=47}else{By=48}if(By==47){uA[((xn)>>2)]=0;Dd=1}else{if(By==48){var CB=AD(((eW)&4294967295),xn,0);Dg=0;var CA=Dg;CK=CA;var Cz=uA[((C4)>>2)];var Cy=(Cz)!=0;if(Cy){By=49}else{By=50}if(By==49){var Cx=uA[((C4)>>2)];var Cw=sZ(Cx,0);uA[((i9)>>2)]=Cw;B3=49}else{if(By==50){var AQ=uA[((i9)>>2)];B3=50}}var Cv=B3==50?AQ:(Cw);var Cs=(Cv)!=0;if(Cs){By=52}else{By=55}if(By==52){var Cr=uA[((k5)>>2)];BW=Cr;var Cq=fu(1344);var Cp=Cq;Dl=Cp;var Co=Dl;var Cn=BW;var Cm=Co;var Cl=Cn;ns(Cm,Cl,1344,1,0);var Ck=uA[((t3)>>2)];var Cj=((v0+Ck*16)&4294967295);var Ci=((Cj)&4294967295);uA[((Ci)>>2)]=11;var Ch=uA[((t3)>>2)];var Cg=Dl;var Cf=(Cg);var Ce=((v0+Ch*16)&4294967295);var Cd=((Ce+4)&4294967295);uA[((Cd)>>2)]=Cf;var Cc=uA[((t3)>>2)];var Ca=(((Cc)+1)&4294967295);uA[((t3)>>2)]=Ca;var B8=(((Ca))|0)>159;if(B8){By=53}else{By=54}if(By==53){uA[((t3)>>2)]=0}uA[((i9)>>2)]=0}Dd=1}}}}}}}}}}}}}while(0);var B6=Dd;AH=B6;var AN=AH;vp=Be;return AN;return null}function mL(){var AY;var AH;var Bc;var i;var Bb;var A1;var AI;var Ba;var AR;var A9;var AZ;var AU;var AW;var A8;var Bd=ll[((vU)>>0)];var A7=oD((Bd),1,0);var A6=(((A7))|0)==0;if(A6){AY=1}else{AY=2}if(AY==1){A9=0;var A5=A9;AR=A5;var AJ=AR;A8=AJ}else{if(AY==2){while(1){var A4=uA[((Ap)>>2)];var A3=uA[((t3)>>2)];var AX=(((A4)-(A3))&4294967295);A1=AX;var AV=(((AX))|0)<=0;if(AV){AY=3}else{AY=4}if(AY==3){var AT=A1;var AS=(((AT)+160)&4294967295);A1=AS}var AQ=A1;Bb=AQ;var AP=Bb;i=AP;var Bf=i;var AO=((160-(Bf))&4294967295);Ba=AO;var AN=Ba;AI=AN;var A2=AI;var AM=(((A2))|0)>0;var AK=oD((AM),1,0);AW=AK;var A0=iB((AK),8,0)!=0;if(A0){AY=5}else{AY=6}if(AY==5){Bc=0;var e=Bc;AH=e}var Bm=AD(((eW)&4294967295),xn,1);var Bl=(((Bm))|0)==0;var Bk=oD((Bl),1,0);AU=Bk;var AL=iB((Bk),8,0)!=0;if(AL){AY=7}else{AY=8}if(AY==7){var Bj=mh(0,0,1)}var Bi=uA[((mo)>>2)];var Bh=(((Bi))|0)!=0;if(Bh){AY=2;continue}else{AY=9;break}}A8=0}}var Bg=A8;AZ=Bg;var Be=AZ;return Be;return null}function bo(Bb,AQ){var A1;var Bc;var AP;var AR;var A4;Bc=Bb;AP=AQ;var AO=AP;var AN=(((AO))|0)%100;var AM=((oL+AN*4)&4294967295);var AL=uA[((AM)>>2)];var AK=Bc;var AJ=((AK)&4294967295);var AI=((AJ+176)&4294967295);uA[((AI)>>2)]=AL;var AH=Bc;var i=((AH)&4294967295);var e=((i+176)&4294967295);var A2=uA[((e)>>2)];var A0=Bc;var AZ=((A0)&4294967295);var AY=((AZ+180)&4294967295);uA[((AY)>>2)]=A2;var AX=AP;var AW=(((((AX))|0)/100)|0);A4=AW;var AV=A4;var AU=(((AV))|0)!=0;var AT=oD((AU),1,0);AR=AT;var AS=AR;var A3=iB((AS),8,0)!=0;if(A3){A1=1}else{A1=2}if(A1==1){var Ba=A4;var A9=((oL+Ba*4)&4294967295);var A8=uA[((A9)>>2)];var A7=Bc;var A6=((A7)&4294967295);var A5=((A6+180)&4294967295);uA[((A5)>>2)]=A8}return;return}function oe(AH,AN){var AY;var A2;var AS;var A1;var AR;var AK;A2=AH;AS=AN;AK=0;while(1){var A0=A2;var AZ=AK;var AX=((A0+2*AZ)&4294967295);var AW=uW[((AX)>>1)];var AV=iB((AW),16,0)!=0;if(!(AV)){AY=5;break}var AQ=A2;var AP=AK;var AO=((AQ+2*AP)&4294967295);var AM=xV[((AO)>>1)];var AL=oD((AM),16,0);var AJ=AS;var AI=(((AL))|0)==(((AJ))|0);var i=AK;var e=(((i)+1)&4294967295);if(AI){AY=2;break}AK=e;AY=4;continue}if(AY==2){AR=e}else{if(AY==5){AR=0}}var AU=AR;A1=AU;var AT=A1;return AT;return null}function s7(AM){var A6;var AW;var AQ;var AI;var AR;var AT;var AS;var A8;var AP;AS=AM;var AO=AS;var AN=(((AO))|0)>8211;var AL=AS;var AK=(((AL))|0)<=8223;var AX=(AN)&(AK);if(AX){A6=1}else{A6=2}if(A6==1){AP=1}else{if(A6==2){var AJ=AS;AW=((pX)&4294967295);AQ=AJ;AT=0;while(1){var A0=AW;var AY=AT;var AV=((A0+2*AY)&4294967295);var AU=uW[((AV)>>1)];var Bc=iB((AU),16,0)!=0;if(!(Bc)){A6=7;break}var AH=AW;var i=AT;var e=((AH+2*i)&4294967295);var A7=xV[((e)>>1)];var A5=oD((A7),16,0);var A4=AQ;var A3=(((A5))|0)==(((A4))|0);var A2=AT;var A1=(((A2)+1)&4294967295);if(A3){A6=4;break}AT=A1;A6=6;continue}if(A6==7){AR=0}else{if(A6==4){AR=A1}}var Ba=AR;AI=Ba;var Bb=AI;AP=Bb}}var A9=AP;A8=A9;var AZ=A8;return AZ;return null}function zD(AJ,AI){var A5;var A9;var A0;var A6;var Br;var A4;var AH;var i;A9=AJ;A0=AI;var Bq=A9;var Bp=(((Bq))>>>0)<=127;var Bo=A9;if(Bp){A5=1}else{A5=2}if(A5==1){var Bn=(((Bo))&255);var Bm=A0;var Bl=((Bm)&4294967295);la[((Bl)>>0)]=Bn;Br=1}else{if(A5==2){var Bj=(((Bo))>>>0)>1114111;if(Bj){A5=3}else{A5=4}if(A5==3){var Bh=A0;var Bf=((Bh)&4294967295);la[((Bf)>>0)]=32;Br=1}else{if(A5==4){var A1=A9;var AY=(((A1))>>>0)<=2047;if(AY){A5=5}else{A5=6}if(A5==5){A4=1}else{if(A5==6){var AW=A9;var AU=(((AW))>>>0)<=65535;if(AU){A5=7}else{A5=8}if(A5==7){A4=2}else{if(A5==8){A4=3}}}}var AS=A4;var AQ=(((AS)*6)&4294967295);i=AQ;var AO=A4;var AM=((pL+AO)&4294967295);var AL=la[((AM)>>0)];var AK=A9;var e=i;var BB=(((AK))>>>0)>>>(((e))>>>0);var BA=(((BB))&255);var Bz=(BA)|(AL);var By=A0;var Bx=((By)&4294967295);la[((Bx)>>0)]=Bz;AH=0;var Bw=AH;var Bv=A4;var Bu=(((Bw))|0)<(((Bv))|0);if(Bu){A5=10}else{A5=11}$bb9$$bb11$15:do{if(A5==10){while(1){var Bt=i;var Bk=(((Bt)-6)&4294967295);i=Bk;var Bi=AH;var Bg=(((Bi)+1)&4294967295);var Be=A9;var Bd=i;var Bc=(((Be))>>>0)>>>(((Bd))>>>0);var Bb=(((Bc))&255);var Ba=(Bb)&63;var A8=(((Ba)+-128)&255);var A7=A0;var A3=((A7+Bg)&4294967295);la[((A3)>>0)]=A8;var A2=AH;var AZ=(((A2)+1)&4294967295);AH=AZ;var AX=AH;var AV=A4;var AT=(((AX))|0)<(((AV))|0);if(AT){A5=10;continue}else{A5=11;break $bb9$$bb11$15}}}}while(0);var AR=A4;var AP=(((AR)+1)&4294967295);Br=AP}}}}var AN=Br;A6=AN;var Bs=A6;return Bs;return null}function n(AT){var AU;var i;var AS;var AP;var AK;i=AT;var AO=i;var AN=((AO)&4294967295);var AM=la[((AN)>>0)];AK=AM;var AL=AK;var AJ=iB((AL),8,0)>=0;if(AJ){AU=1}else{AU=2}if(AU==1){AP=1}else{if(AU==2){var AI=AK;var AH=oD((AI),8,0)<=223;if(AH){AU=3}else{AU=4}if(AU==3){AP=2}else{if(AU==4){var e=AK;var AV=oD((e),8,0)<=239;if(AV){AU=5}else{AU=6}if(AU==5){AP=3}else{if(AU==6){AP=4}}}}}}var AR=AP;AS=AR;var AQ=AS;return AQ;return null}function F(Br,A5,BL){var Bk;var Bv;var A7;var A9;var A3;var BK;var A6;var Bl;var AI;var AT;Bv=Br;A7=A5;A9=BL;var BJ=A7;var BI=la[((BJ)>>0)];var BH=iB((BI),8,0);var BG=(BH)&192;var BF=(((BG))|0)==128;if(BF){Bk=1}else{Bk=5}$bb$$bb4$2:do{if(Bk==1){while(1){var BE=A9;var BD=(((BE))|0)!=0;var BC=A7;if(BD){Bk=2}else{Bk=4}if(Bk==2){var BB=((BC+-1)&4294967295);A7=BB}else{if(Bk==4){var Bq=((BC+1)&4294967295);A7=Bq}}var Bx=A7;var Bw=la[((Bx)>>0)];var Bu=iB((Bw),8,0);var Bt=(Bu)&192;var Bs=(((Bt))|0)==128;if(Bs){Bk=1;continue}else{Bk=5;break $bb$$bb4$2}}}}while(0);AI=0;var Bp=A7;var Bo=la[((Bp)>>0)];var Bn=iB((Bo),8,0);Bl=Bn;var Bm=Bl;var Bj=(Bm)&128;var Bi=(((Bj))|0)!=0;var Bh=oD((Bi),1,0);A6=Bh;var Bg=A7;var Bf=((Bg+1)&4294967295);A7=Bf;var A8=iB((Bh),8,0)!=0;if(A8){Bk=6}else{Bk=14}$bb5$$bb14$10:do{if(Bk==6){var Be=Bl;var Bd=(Be)&224;var Bc=(((Bd))|0)==192;if(Bc){Bk=7}else{Bk=8}$bb6$$bb7$12:do{if(Bk==7){AI=1}else{if(Bk==8){var Bb=Bl;var Ba=(Bb)&240;var A4=(((Ba))|0)==224;if(A4){Bk=9}else{Bk=10}if(Bk==9){AI=2}else{if(Bk==10){var A2=Bl;var A1=(A2)&248;var A0=(((A1))|0)==240;if(!(A0)){Bk=12;break $bb6$$bb7$12}AI=3}}}}}while(0);var AZ=AI;var AY=((u7+AZ)&4294967295);var AX=ll[((AY)>>0)];var AW=oD((AX),8,0);var AV=Bl;var AU=(AW)&(AV);Bl=AU;AT=0;var AS=AT;var AR=AI;var AQ=(((AS))|0)<(((AR))|0);if(!(AQ)){Bk=14;break $bb5$$bb14$10}while(1){var AP=Bl;var AO=(((AP)*64)&4294967295);var AN=A7;var AM=la[((AN)>>0)];var AL=iB((AM),8,0);var AK=(AL)&63;var AJ=(((AK)+(AO))&4294967295);Bl=AJ;var AH=A7;var i=((AH+1)&4294967295);A7=i;var e=AT;var BS=(((e)+1)&4294967295);AT=BS;var BR=AT;var BQ=AI;var BP=(((BR))|0)<(((BQ))|0);if(BP){Bk=13;continue}else{Bk=14;break $bb5$$bb14$10}}}}while(0);var BO=Bv;var BN=Bl;uA[((BO)>>2)]=BN;var BM=AI;var BA=(((BM)+1)&4294967295);BK=BA;var Bz=BK;A3=Bz;var By=A3;return By;return null}function cY(i,AO){var AQ;var AL;var e;var AN;var AM;AL=i;e=AO;var AK=AL;var AJ=e;var AI=F(AK,AJ,0);AM=AI;var AH=AM;AN=AH;var AP=AN;return AP;return null}function jS(AX){var AU;var AP;var AY;AY=AX;uA[((g4)>>2)]=0;uA[((vC)>>2)]=0;uA[((qv)>>2)]=0;uA[((sW)>>2)]=0;la[((((nW)&4294967295))>>0)]=0;uA[((wL)>>2)]=0;uA[((C)>>2)]=0;uA[((mo)>>2)]=0;uA[((lc)>>2)]=1;uA[((y8)>>2)]=0;uA[((eB)>>2)]=0;uA[((yx)>>2)]=0;la[((wh)>>0)]=0;la[((hp)>>0)]=0;uA[((lC)>>2)]=0;uA[((f)>>2)]=0;uA[((rz)>>2)]=1;uA[((wD)>>2)]=1;uA[((((cT)&4294967295))>>2)]=0;AP=0;$bb_i$2:while(1){var AO=AP;var AN=AP;var AM=((((s9+4)&4294967295)+AN*4)&4294967295);var AL=uA[((AM)>>2)];var AK=((An+AO*4)&4294967295);uA[((AK)>>2)]=AL;var AJ=AP;var AI=(((AJ)+1)&4294967295);AP=AI;var AH=(((AI))|0)<=14;if(AH){AU=1;continue $bb_i$2}else{AU=2;break $bb_i$2}}var i=uA[((((An+20)&4294967295))>>2)];uA[((iW)>>2)]=i;var e=uA[((((An+24)&4294967295))>>2)];uA[((wH)>>2)]=e;la[((((pW)&4294967295))>>0)]=0;la[((m3)>>0)]=0;la[((mI)>>0)]=0;la[((xA)>>0)]=0;uA[((dT)>>2)]=-1;uA[((i6)>>2)]=0;uA[((kO)>>2)]=0;var AW=AY;var AV=(AW)&8192;var AT=(((AV))|0)==0;if(AT){AU=3}else{AU=5}$bb$$return$5:do{if(AU==3){uA[((zn)>>2)]=0;var AS=uA[((bj)>>2)];var AR=(AS)!=0;if(!(AR)){AU=5;break $bb$$return$5}var AQ=uA[((bj)>>2)];br(AQ);uA[((bj)>>2)]=0;uA[((dd)>>2)]=0}}while(0);return;return}function bB(AM){var AZ;var AQ;var AH;var AR;var AS;var A1;var AP;AS=AM;var AO=AS;AQ=AO;var AN=AQ;var AL=(((AN))>>>0)<=255;if(AL){AZ=2}else{AZ=1}$iswdigit_exit$$iswdigit_exit_thread$2:do{if(AZ==2){var AK=AQ;var AJ=(((AK)-48)&4294967295);var AI=(((AJ))>>>0)<=9;var i=oD((AI),1,0);AR=i;AH=i;var e=(((i))|0)!=0;if(!(e)){AZ=4;break $iswdigit_exit$$iswdigit_exit_thread$2}AP=1;AZ=7;break $iswdigit_exit$$iswdigit_exit_thread$2}else{if(AZ==1){AR=0;AH=0;AZ=4;break $iswdigit_exit$$iswdigit_exit_thread$2}}}while(0);if(AZ==4){var A0=AS;var AY=(((A0))>>>0)>2405;var AX=AS;var AW=(((AX))>>>0)<=2415;var AU=(AY)&(AW);if(AU){AZ=5}else{AZ=6}if(AZ==5){AP=1}else{if(AZ==6){AP=0}}}var AV=AP;A1=AV;var AT=A1;return AT;return null}function V(Bu){var A0=vp;vp+=4;n1(A0,0,4);var AZ;var A2;var AH;var Bo;var AV;var A9;var Bt;var A4;var AI;var A6;var By;var Bn;var Bq;var Bp;var A3;var AT;var Bm;var AL;var A1;var Bl;var AK;var Br;var AM=A0;AL=Bu;$bb2$2:while(1){var BA=AL;var Bz=la[((BA)>>0)];var Bx=iB((Bz),8,0)==0;if(Bx){AZ=12;break $bb2$2}var Bw=AL;var Bv=la[((Bw)>>0)];var Bi=iB((Bv),8,0);A2=Bi;var Bg=A2;var Be=(Bg)&255;Bt=Be;var Bc=Bt;var Ba=(((Bc))|0)==0;if(Ba){AZ=1}else{AZ=10}if(AZ==10){var A8=A2;var A7=(((A8))>>>0)>32;if(!(A7)){AZ=11;break $bb2$2}}AV=1;A9=1;Bo=0;AH=0;AK=1;Br=1;var Bk=AL;Bp=AM;A3=Bk;var Bj=Bp;var Bh=A3;var Bf=F(Bj,Bh,0);Bm=Bf;var Bd=Bm;AT=Bd;var AJ=AT;var Bb=AL;var AY=((Bb+AJ)&4294967295);AL=AY;var AX=xk[((AM)>>2)];A4=AX;var AW=(((AX))>>>0)<=255;if(AW){AZ=6}else{AZ=2}if(AZ==6){var BC=tM(AX);Bn=BC;AI=BC;var BB=(((BC))|0)==0;if(BB){AZ=7;break $bb2$2}else{AZ=8;continue $bb2$2}}else{if(AZ==2){var AU=(((AX))>>>0)>563;if(AU){AZ=4;break $bb2$2}var AS=A4;var AR=(((AS)-256)&4294967295);var AQ=((xF+AR)&4294967295);var AP=ll[((AQ)>>0)];var AO=oD((AP),8,0);Bq=AO;var AN=Bq;var e=(((AN))|0)==0;var BE=Bq;var BD=(((BE))|0)==255;var i=(e)|(BD);if(i){AZ=4;break $bb2$2}A6=0;By=0;Bn=1;AI=1;AZ=8;continue $bb2$2}}}$iswupper_exit_thread$$bb1$$bb7$$_Z8isspace2j_exit_thread$13:do{if(AZ==4){A6=1;By=1;Bn=0;AI=0;AZ=7;break $iswupper_exit_thread$$bb1$$bb7$$_Z8isspace2j_exit_thread$13}else{if(AZ==11){AV=0;A9=0;Bo=1;AH=1;AZ=12;break $iswupper_exit_thread$$bb1$$bb7$$_Z8isspace2j_exit_thread$13}}}while(0);if(AZ==7){Bl=0}else{if(AZ==12){AK=0;Br=0;Bl=1}}var A5=Bl;A1=A5;var Bs=A1;vp=A0;return Bs;return null}function kr(BA){var Br;var Bf=null;var AU;var Bs;var BI;var B1;var AV;var Bp;var AI;var B0;var BF;var A5;var A9;var BZ;BF=BA;var BY=BF;Bp=BY;var BX=Bp;var BW=(((BX))>>>0)<=255;var BV=Bp;if(BW){Br=1}else{Br=2}$bb_i$$bb1_i$2:do{if(Br==1){var BU=z6(BV);B0=BU;Bf=1;Br=7;break $bb_i$$bb1_i$2}else{if(Br==2){var BT=(((BV))>>>0)>12352;var BS=Bp;var BH=(((BS))>>>0)<=42752;var Bt=(BT)&(BH);if(Bt){Br=3}else{Br=4}if(Br==3){B0=1;AI=1;Br=8;break $bb_i$$bb1_i$2}else{if(Br==4){var BG=Bp;var BE=(((BG))>>>0)>563;if(BE){Br=5}else{Br=6}if(Br==5){B0=0;AI=0;Br=9;break $bb_i$$bb1_i$2}else{if(Br==6){var BD=Bp;var BB=(((BD)-256)&4294967295);var Bz=((xF+BB)&4294967295);var By=ll[((Bz)>>0)];var Bx=oD((By),8,0);B0=Bx;Bf=6;Br=7;break $bb_i$$bb1_i$2}}}}}}}while(0);$iswalpha_exit$$bb$$bb1$11:do{if(Br==7){var Bw=Bf==1?BU:(Bx);AI=Bw;var Bv=(((Bw))|0)!=0;if(Bv){Br=8;break $iswalpha_exit$$bb$$bb1$11}else{Br=9;break $iswalpha_exit$$bb$$bb1$11}}}while(0);if(Br==8){BZ=1}else{if(Br==9){var Bq=BF;var Bo=(((Bq))>>>0)>2304;var Bn=BF;var Bm=(((Bn))>>>0)<=3575;var Bu=(Bo)&(Bm);var Bl=BF;if(Bu){Br=10}else{Br=23}if(Br==10){var Bk=(Bl)&127;var Bj=(((Bk))>>>0)<=99;if(Bj){Br=11}else{Br=12}if(Br==11){BZ=1}else{if(Br==12){var Bi=BF;AU=((y4)&4294967295);Bs=Bi;AV=0;while(1){var AY=AU;var AX=AV;var AW=((AY+2*AX)&4294967295);var AT=uW[((AW)>>1)];var AS=iB((AT),16,0)!=0;if(!(AS)){Br=17;break}var Bh=AU;var Bg=AV;var A6=((Bh+2*Bg)&4294967295);var A4=xV[((A6)>>1)];var A3=oD((A4),16,0);var A2=Bs;var A1=(((A3))|0)==(((A2))|0);var A0=AV;var AZ=(((A0)+1)&4294967295);if(A1){Br=14;break}AV=AZ;Br=16;continue}if(Br==17){B1=0}else{if(Br==14){B1=AZ}}var AR=B1;BI=AR;var AP=BI;var AQ=(((AP))|0)!=0;var AO=oD((AQ),1,0);A9=AO;var Bc=iB((AO),8,0)!=0;if(Bc){Br=19}else{Br=20}if(Br==19){BZ=1}else{if(Br==20){var AN=BF;var AM=(((AN))>>>0)>3449;var AL=BF;var AK=(((AL))>>>0)<=3455;var Be=(AM)&(AK);if(Be){Br=21}else{Br=22}if(Br==21){BZ=1}else{if(Br==22){BZ=0}}}}}}}else{if(Br==23){var AJ=(((Bl))>>>0)>1610;var AH=BF;var i=(((AH))>>>0)<=1630;var Bd=(AJ)&(i);if(Bd){Br=24}else{Br=25}if(Br==24){BZ=1}else{if(Br==25){var e=BF;var B8=(((e))>>>0)>767;var B7=BF;var B6=(((B7))>>>0)<=879;var Bb=(B8)&(B6);if(Bb){Br=26}else{Br=27}if(Br==26){BZ=1}else{if(Br==27){var B5=BF;var B4=(((B5))>>>0)>1919;var B3=BF;var B2=(((B3))>>>0)<=1969;var Ba=(B4)&(B2);if(Ba){Br=28}else{Br=29}if(Br==28){BZ=1}else{if(Br==29){var BR=BF;var BQ=(((BR))>>>0)>4351;var BP=BF;var BO=(((BP))>>>0)<=4607;var A8=(BQ)&(BO);if(A8){Br=30}else{Br=31}if(Br==30){BZ=1}else{if(Br==31){var BN=BF;var BM=(((BN))>>>0)>12352;var BL=BF;var BK=(((BL))>>>0)<=42752;var A7=(BM)&(BK);if(A7){Br=32}else{Br=33}if(Br==32){BZ=1}else{if(Br==33){BZ=0}}}}}}}}}}}}}}var BJ=BZ;A5=BJ;var BC=A5;return BC;return null}function pV(Bc,Be,AI,Bn){var AV;var AU;var AH;var A4;var i;var AW;var Ba;var AX;var AR;var Bb;AU=Bc;AH=Be;A4=AI;i=Bn;AX=0;AR=0;Bb=0;var A9=i;var A8=(((A9))|0)>2;if(A8){AV=1}else{AV=4}if(AV==1){AR=2}while(1){var e=AH;var Bo=la[((e)>>0)];var Bm=iB((Bo),8,0)==32;if(Bm){AV=6;break}var Bl=AH;var Bk=la[((Bl)>>0)];var Bj=iB((Bk),8,0)!=0;if(!(Bj)){AV=6;break}var A7=AR;var A6=Bb;var A5=(A6)|(A7);var A3=AU;var A1=AH;var AZ=A4;var AY=sG(A3,A1,AZ,A5);var AT=AH;var AS=((AT+AY)&4294967295);AH=AS;var AQ=AX;var AP=(((AQ)+1)&4294967295);AX=AP;Bb=1;var AO=A4;var AN=((AO)&4294967295);var AM=la[((AN)>>0)];var AL=iB((AM),8,0)==21;if(AL){AV=3;break}else{AV=4;continue}}if(AV==3){var AK=A4;var AJ=oJ(((eh)&4294967295),AK);Ba=0}else{if(AV==6){var Bi=AU;var Bh=A4;var Bg=i;var Bf=AX;jt(Bi,Bh,Bg,Bf);var A2=AH;Ba=A2}}var A0=Ba;AW=A0;var Bd=AW;return Bd;return null}function hb(C7,BC,BX){var Bb=vp;vp+=160;n1(Bb,0,160);var Bz;var AN;var BW;var Cn;var Bk;var AH;var By;var C5;var BL;var CJ;var Bx;var CK;var Cx;var Bw;var Cg;var AL;var C6;var C1;var AM=Bb;BW=C7;Cn=BC;Bk=BX;C1=0;var C4=BW;var C3=((C4+656)&4294967295);var C2=uA[((C3)>>2)];var C0=((ur+C2*48)&4294967295);var CZ=((C0+44)&4294967295);var CY=uA[((CZ)>>2)];CJ=CY;var CX=CJ;var CW=(((CX))|0)==0;var CV=oD((CW),1,0);BL=CV;var B7=BL;var Bl=iB((B7),8,0)!=0;if(Bl){Bz=1}else{Bz=2}if(Bz==1){C5=0}else{if(Bz==2){var B6=uA[((op)>>2)];var B5=CJ;var B4=((B6+B5)&4294967295);Bw=B4;$bb2$5:while(1){var B3=Bw;var B2=((B3)&4294967295);var B1=la[((B2)>>0)];var B0=iB((B1),8,0)==0;if(B0){Bz=4;break $bb2$5}var BZ=Bw;var BY=((BZ)&4294967295);var BV=ll[((BY)>>0)];var BU=oD((BV),8,0);var BT=Cn;var BS=(((BU))|0)==(((BT))|0);var BR=Bw;if(BS){Bz=7;break $bb2$5}var BQ=((BR+2)&4294967295);var BP=ll[((BQ)>>0)];var BO=oD((BP),8,0);var BN=(((BO)*256)&4294967295);var BM=Bw;var BK=((BM+3)&4294967295);var BJ=ll[((BK)>>0)];var BI=oD((BJ),8,0);var BH=(((BI)+(BN))&4294967295);Bx=BH;var BG=Bx;var BF=(((BG)*4)&4294967295);var BE=Bw;var BD=((BE+BF)&4294967295);Bw=BD;Bz=3;continue $bb2$5}if(Bz==4){C5=0}else{if(Bz==7){var BB=((BR+1)&4294967295);var BA=ll[((BB)>>0)];var Bv=oD((BA),8,0);C1=Bv;var Bu=uA[((us)>>2)];var Bt=(((Bu))|0)==2;if(Bt){Bz=8}else{Bz=9}if(Bz==8){var Bs=Bk;var Br=((AM)&4294967295);dM(Bs,Br);var Bq=BW;var Bp=((Bq+656)&4294967295);var Bo=uA[((Bp)>>2)];var Bn=((ur+Bo*48)&4294967295);var Bm=((Bn)&4294967295);var Bj=((Bm)&4294967295);var Bi=Cn;var Bh=((ur+Bi*48)&4294967295);var Bg=((Bh)&4294967295);var Bf=((Bg)&4294967295);var Be=uA[((ni)>>2)];var Bd=((AM)&4294967295);var Bc=Am(Be,((Ag)&4294967295),Bf,Bd,Bj)}var Ba=Bk;C6=Ba;var A9=Bw;var A7=((A9+8)&4294967295);Cg=A7;var A6=((AM)&4294967295);AL=A6;var A5=C6;var A4=la[((A5)>>0)];CK=A4;var A3=iB((A4),8,0)!=0;var A2=oD((A3),1,0);By=A2;var A1=C6;var A0=((A1+1)&4294967295);C6=A0;if(A3){Bz=10}else{Bz=20}$bb9$$bb20$15:do{if(Bz==10){$bb9$16:while(1){var AZ=C1;var AY=(((AZ))|0)!=0;if(AY){Bz=11}else{Bz=13}$bb10$$bb11$18:do{if(Bz==11){var AX=CK;var AW=iB((AX),8,0);var AV=(AW)&255;var AU=(((AV))|0)<=7;if(AU){Bz=12;break $bb10$$bb11$18}else{Bz=13;break $bb10$$bb11$18}}}while(0);$bb18_backedge$$bb11$20:do{if(Bz==13){var AJ=Cg;Cx=AJ;while(1){var CI=Cx;var CH=la[((CI)>>0)];var CG=iB((CH),8,0)!=0;if(!(CG)){Bz=18;break}var AI=Cx;var i=((AI+1)&4294967295);var e=wg(i);Bx=e;var Dc=Cx;var Db=la[((Dc)>>0)];var Da=CK;var C9=iB((Db),8,0)==iB((Da),8,0);if(C9){Bz=15;break}var CO=Bx;var CN=(((CO)+2)&4294967295);var CM=Cx;var CL=((CM+CN)&4294967295);Cx=CL;Bz=17;continue}if(Bz==15){var C8=Cx;var CU=((C8+1)&4294967295);var CT=AL;var CS=oJ(CT,CU);var CR=AL;var CQ=Bx;var CP=((CR+CQ)&4294967295);AL=CP}var CF=Cx;var CE=la[((CF)>>0)];var CD=iB((CE),8,0)==0;if(!(CD)){Bz=12;break $bb18_backedge$$bb11$20}var CC=AL;var CB=CK;la[((CC)>>0)]=CB;var CA=AL;var Cz=((CA+1)&4294967295);AL=Cz}}while(0);var AT=C6;var AS=la[((AT)>>0)];CK=AS;var AR=CK;var AQ=iB((AR),8,0)!=0;var AP=oD((AQ),1,0);By=AP;var AO=C6;var AK=((AO+1)&4294967295);C6=AK;var Cy=iB((AP),8,0)!=0;if(Cy){Bz=10;continue $bb9$16}else{Bz=20;break $bb9$$bb20$15}}}}while(0);var Cw=AL;la[((Cw)>>0)]=0;var Cv=C1;var Cu=(((Cv))|0)!=0;if(Cu){Bz=21}else{Bz=22}if(Bz==21){var Ct=BW;var Cs=((AM)&4294967295);m8(Ct,Cs,0,-1,0)}var Cr=Bk;var Cq=((AM)&4294967295);var Cp=oJ(Cr,Cq);var Co=uA[((us)>>2)];var Cm=(((Co))|0)==2;if(Cm){Bz=23}else{Bz=24}if(Bz==23){var Cl=BW;var Ck=((Cl+656)&4294967295);var Cj=uA[((Ck)>>2)];AN=Cj;uA[((rW)>>2)]=0;var Ci=AN;m1(Ci,0);var Ch=uA[((rW)>>2)];var Cf=(((Ch)+1)&4294967295);uA[((rW)>>2)]=Cf;var Ce=AN;uA[((mp)>>2)]=Ce;var Cd=Bk;var Cc=((AM)&4294967295);dM(Cd,Cc);var Cb=uA[((ni)>>2)];var Ca=((AM)&4294967295);var B9=Am(Cb,((y5)&4294967295),Ca)}C5=1}}}}var B8=C5;AH=B8;var A8=AH;vp=Bb;return A8;return null}function cF(AP,AH){var AS;var AK;var AN;var AQ;var AO;AK=AP;AN=AH;var AM=AN;var AL=(((AM))|0)>127;if(AL){AS=1}else{AS=2}if(AS==1){AO=0}else{if(AS==2){var AJ=AK;var AI=AN;var i=qX(AJ,AI);AO=i}}var e=AO;AQ=e;var AR=AQ;return AR;return null}function kY(KM,JP,KB,F1){var Gi=vp;vp+=1752;n1(Gi,0,1752);var F3;var Pz=null;var Sg;var C5;var TZ;var M2;var HC;var KI;var KK;var Df;var FM;var T0;var M0;var Ds;var Um;var MZ;var Q9;var Gf;var QC;var Un;var MY;var Kf=Gi;var KJ=Gi+8;var Dt;var Uo;var MX;var Nz;var Rf;var KF;var MW;var Rp;var JS;var UK;var MV;var U7;var RS;var Mc=Gi+12;var Fi;var NE;var Pn;var Rv;var Tk;var L7;var Np=Gi+16;var Du;var Gd;var UL;var MU;var EN;var IH;var Hg;var MT;var Ub;var EH;var MS;var Ro;var S5;var Ij;var Q8;var EA;var Ru;var KG;var Rl;var RR;var Rm;var R3;var Rq;var Rr;var Rs;var Rt;var Fj;var Ik=Gi+96;var DT;var Nx;var Mb;var Ku;var UB;var SV=Gi+100;var D3=Gi+108;var HB;var SW;var Fv;var HE=Gi+116;var KD=Gi+120;var KL;var RL=Gi+280;var D2=Gi+440;var P6=Gi+600;var Po=Gi+760;var PZ=Gi+920;var Dw;var HY=Gi+1080;var LE;var Ep;var Bw;var JZ=Gi+1148;var Oc=Gi+1152;var Ft;var Kv;var KX;var NT;var Sr;var OR;var KE;var SC;var PA;var Ge=Gi+1156;var K9;var C6;var J9;var KH=Gi+1252;var K6;var P7;var U6=Gi+1256;var KC=Gi+1416;var Qw=Gi+1576;var BY=Gi+1580;var GV=Gi+1592;var HD;Ro=KM;S5=JP;Ij=KB;Q8=F1;HB=0;SW=0;LE=0;uA[((Oc)>>2)]=0;Ft=0;Kv=0;OR=0;PA=0;var Fh=Q8;var Fg=(Fh)==0;if(Fg){F3=1}else{F3=2}if(F3==1){var Ff=((Ge)&4294967295);var Fe=Ff;ud(Fe,0,96,1,0);var Fc=((Ge)&4294967295);Q8=Fc}var Fa=Q8;var E8=((Fa)&4294967295);var E6=uA[((E8)>>2)];KE=E6;var E4=Q8;var EY=((E4+9)&4294967295);var EX=ll[((EY)>>0)];var EW=oD((EX),8,0);SC=EW;var EV=((SV)&4294967295);uA[((EV)>>2)]=0;var EU=((SV+4)&4294967295);uA[((EU)>>2)]=0;var ES=((D3)&4294967295);uA[((ES)>>2)]=0;var ER=((D3+4)&4294967295);uA[((ER)>>2)]=0;uA[((k3)>>2)]=0;var EQ=((KD)&4294967295);la[((EQ)>>0)]=0;var EP=((D2)&4294967295);la[((EP)>>0)]=0;var EO=((RL)&4294967295);la[((EO)>>0)]=0;var EM=((P6)&4294967295);la[((EM)>>0)]=0;var EL=((KD+160)&4294967295);KL=EL;var EK=Ro;var EJ=((EK+1052)&4294967295);var EI=uA[((EJ)>>2)];var EG=(EI)==0;if(EG){F3=3}else{F3=4}$bb2$$bb3$5:do{if(F3==3){la[((((eh)&4294967295))>>0)]=0;Fj=0}else{if(F3==4){var EF=S5;uA[((Ik)>>2)]=EF;var EE=uA[((Ik)>>2)];var ED=la[((EE)>>0)];var EC=iB((ED),8,0)==32;if(EC){F3=5}else{F3=6}if(F3==5){var Ez=uA[((Ik)>>2)];var Ey=((Ez+1)&4294967295);uA[((Ik)>>2)]=Ey}var Ex=uA[((Ik)>>2)];uA[((HE)>>2)]=Ex;var Ew=uA[((HE)>>2)];EN=JZ;IH=Ew;var Ev=EN;var Eu=IH;var Et=F(Ev,Eu,0);MT=Et;var Es=MT;Hg=Es;DT=0;$bb7$11:while(1){var Eh=uA[((HE)>>2)];var Eg=la[((Eh)>>0)];var Ef=iB((Eg),8,0)==0;if(Ef){F3=10;break $bb7$11}var Ee=uA[((HE)>>2)];var Ed=la[((Ee)>>0)];var Ec=iB((Ed),8,0)!=32;if(!(Ec)){F3=10;break $bb7$11}var Er=uA[((HE)>>2)];var Eq=uA[((HE)>>2)];Du=Oc;Gd=Eq;var Eo=Du;var En=Gd;var Em=F(Eo,En,0);MU=Em;var El=MU;UL=El;var D4=UL;var Ek=((Er+D4)&4294967295);uA[((HE)>>2)]=Ek;var Ej=DT;var Ei=(((Ej)+1)&4294967295);DT=Ei;F3=8;continue $bb7$11}var Eb=uA[((HE)>>2)];var Ea=(Eb);var D9=S5;var D8=(D9);var D7=(((Ea)-(D8))&4294967295);Dw=D7;var D6=(((D7))|0)>159;if(D6){F3=11}else{F3=12}if(F3==11){Dw=159}var D5=Dw;var D1=((PZ)&4294967295);var D0=S5;ns(D1,D0,D5,1,0);NT=0;var DZ=uA[((y8)>>2)];var DY=(((DZ))|0)==36;if(DY){F3=13}else{F3=16}if(F3==13){var DX=DT;var DW=(((DX))|0)==1;if(DW){F3=14}else{F3=15}if(F3==14){NT=4}else{if(F3==15){var DV=uA[((Ik)>>2)];var DU=((DV+-1)&4294967295);uA[((Ik)>>2)]=DU;var DS=uA[((Ik)>>2)];la[((DS)>>0)]=95;var DR=Ro;var DQ=((KD)&4294967295);var DP=((SV)&4294967295);var DO=Q8;var DN=tN(DR,Ik,DQ,DP,0,DO);LE=DN}}}var DM=uA[((y8)>>2)];var DL=(DM)&16;var DK=(((DL))|0)!=0;if(DK){F3=17}else{F3=18}$bb16$$bb17$25:do{if(F3==17){var DJ=uA[((y8)>>2)];var DI=(DJ)&15;NT=DI;Pz=17;F3=101;break $bb16$$bb17$25}else{if(F3==18){var DH=LE;var DG=(((DH))|0)==0;if(DG){F3=19}else{F3=20}if(F3==19){var DF=Ro;var DE=((KD)&4294967295);var DD=((SV)&4294967295);var DC=Q8;var DB=tN(DF,Ik,DE,DD,2,DC);LE=DB}var DA=((SV)&4294967295);var Dz=uA[((DA)>>2)];var Dy=(Dz)&1;var Dx=(((Dy))&255);var ET=iB((Dx),8,0)!=0;if(ET){F3=21}else{F3=23}$bb20$$bb22$31:do{if(F3==21){var TV=uA[((HE)>>2)];var TT=((TV+1)&4294967295);var TR=la[((TT)>>0)];var TP=iB((TR),8,0)==46;if(!(TP)){F3=23;break $bb20$$bb22$31}var TN=uA[((HE)>>2)];var TL=((TN+1)&4294967295);la[((TL)>>0)]=32}}while(0);var TJ=((SV)&4294967295);var TH=uA[((TJ)>>2)];var TG=(TH)&536870912;var TF=(((TG))|0)!=0;if(TF){F3=24}else{F3=27}$bb23$$bb27$35:do{if(F3==24){var TB=uA[((Ik)>>2)];var Tz=((TB)&4294967295);var Tx=la[((Tz)>>0)];var Tv=iB((Tx),8,0);uA[((JZ)>>2)]=Tv;var Tt=((SV)&4294967295);var Tr=uA[((Tt)>>2)];var Tp=(Tr)&127;Sr=Tp;var Tn=Ro;var Tm=((KD)&4294967295);var Tl=((D3)&4294967295);var Tg=Q8;var Te=tN(Tn,Ik,Tm,Tl,0,Tg);LE=Te;var Tc=((D3)&4294967295);var Ta=uA[((Tc)>>2)];var S8=(((Ta))|0)!=0;if(!(S8)){F3=33;break $bb23$$bb27$35}var S6=((D3)&4294967295);var S3=uA[((S6)>>2)];var S1=((SV)&4294967295);uA[((S1)>>2)]=S3;var S0=((D3+4)&4294967295);var SZ=uA[((S0)>>2)];var ST=((SV+4)&4294967295);uA[((ST)>>2)]=SZ;var SR=Sr;var SP=(((SR))|0)!=0;if(!(SP)){F3=33;break $bb23$$bb27$35}var SN=((SV)&4294967295);var SL=uA[((SN)>>2)];var SJ=(SL)&-128;var SH=Sr;var SF=(SJ)|(SH);var SE=((SV)&4294967295);uA[((SE)>>2)]=SF}else{if(F3==27){var SD=LE;var SB=(((SD))|0)==0;if(!(SB)){F3=33;break $bb23$$bb27$35}var SA=((SV)&4294967295);var Sz=uA[((SA)>>2)];var Sy=(Sz)&128;var Sx=(((Sy))|0)!=0;if(!(Sx)){F3=33;break $bb23$$bb27$35}var Sw=uA[((Ik)>>2)];uA[((HE)>>2)]=Sw;Nx=0;var Sv=uA[((k3)>>2)];var Su=Nx;var St=(((Su))|0)<(((Sv))|0);if(!(St)){F3=33;break $bb23$$bb27$35}while(1){var Ss=uA[((HE)>>2)];var Sq=la[((Ss)>>0)];var Sp=iB((Sq),8,0)==32;if(Sp){F3=31}else{F3=32}if(F3==31){var So=uA[((HE)>>2)];la[((So)>>0)]=45;var Sn=Nx;var Sm=(((Sn)+1)&4294967295);Nx=Sm}var Sl=uA[((HE)>>2)];var Sk=((Sl+1)&4294967295);uA[((HE)>>2)]=Sk;var Si=uA[((k3)>>2)];var Sh=Nx;var Sf=(((Sh))|0)<(((Si))|0);if(Sf){F3=30;continue}else{F3=33;break $bb23$$bb27$35}}}}}while(0);var Se=DT;var Sd=(((Se))|0)==1;var Sc=uA[((k3)>>2)];var Sb=(((Sc))|0)==0;var H0=(Sd)&(Sb);if(H0){F3=34}else{F3=59}$bb36$$bb40$48:do{if(F3==34){var Sa=uA[((Ik)>>2)];var R8=Q8;Rp=Sa;JS=R8;Fi=0;var R7=Rp;Tk=R7;var R6=((Np)&4294967295);L7=R6;Rv=0;$bb_i15$50:while(1){Pn=0;var R5=Tk;Nz=Mc;Rf=R5;var R4=Nz;var R2=Rf;var R1=F(R4,R2,0);MW=R1;var R0=MW;KF=R0;var Pb=KF;NE=Pb;var RZ=Tk;var RY=NE;var RX=((RZ+RY)&4294967295);var RW=la[((RX)>>0)];var RV=iB((RW),8,0)!=32;if(RV){F3=37}else{F3=36}$bb4_i17$$bb1_i16$52:do{if(F3==36){var RU=uA[((Mc)>>2)];var RT=kr(RU);var RQ=(((RT))|0)==0;if(RQ){F3=37;break $bb4_i17$$bb1_i16$52}U7=1;RS=1;var RP=NE;var RO=(((RP)+1)&4294967295);var RN=Tk;var RM=((RN+RO)&4294967295);var RK=la[((RM)>>0)];var RJ=iB((RK),8,0)==46;if(RJ){F3=39}else{F3=43}if(F3==39){var RI=NE;var RH=(((RI)+2)&4294967295);var RG=Tk;var RF=((RG+RH)&4294967295);var RE=la[((RF)>>0)];var RD=iB((RE),8,0)==32;if(RD){F3=40}else{F3=41}if(F3==40){Pn=1;F3=47;break $bb4_i17$$bb1_i16$52}else{if(F3==41){var RC=NE;var RB=(((RC)+2)&4294967295);var RA=Tk;var Rz=((RA+RB)&4294967295);var Ry=la[((Rz)>>0)];var Rx=iB((Ry),8,0)==39;if(!(Rx)){F3=46;break $bb4_i17$$bb1_i16$52}var Rw=NE;var Nl=(((Rw)+2)&4294967295);NE=Nl;Pn=2;F3=47;break $bb4_i17$$bb1_i16$52}}}else{if(F3==43){var Nj=Fi;var Nh=(((Nj))|0)>0;if(!(Nh)){F3=46;break $bb4_i17$$bb1_i16$52}var Nf=Tk;var Nd=NE;var Nb=((Nf+Nd)&4294967295);var M9=la[((Nb)>>0)];var M7=iB((M9),8,0)==32;if(!(M7)){F3=46;break $bb4_i17$$bb1_i16$52}Pn=2;F3=47;break $bb4_i17$$bb1_i16$52}}}}while(0);$bb4_i17$$bb15_i$$bb14_i$64:do{if(F3==37){U7=0;RS=0;F3=46;break $bb4_i17$$bb15_i$$bb14_i$64}}while(0);if(F3==46){var BB=Pn;var M6=(((BB))|0)==0;if(M6){F3=52;break $bb_i15$50}}Rv=0;var M5=Rv;var MO=NE;var MM=(((M5))|0)<(((MO))|0);if(MM){F3=48}else{F3=49}$bb16_i$$bb18_i$69:do{if(F3==48){while(1){var MK=Tk;var MI=Rv;var MG=((MK+MI)&4294967295);var ME=la[((MG)>>0)];var MC=L7;la[((MC)>>0)]=ME;var MA=L7;var Mz=((MA+1)&4294967295);L7=Mz;var My=Rv;var Mu=(((My)+1)&4294967295);Rv=Mu;var Ms=Rv;var Mq=NE;var Mo=(((Ms))|0)<(((Mq))|0);if(Mo){F3=48;continue}else{F3=49;break $bb16_i$$bb18_i$69}}}}while(0);var Mm=Fi;var Mk=(((Mm)+1)&4294967295);Fi=Mk;var Mi=Pn;var Mg=(((Mi))|0)==2;if(Mg){F3=50;break $bb_i15$50}var L3=NE;var L1=(((L3)+3)&4294967295);var LZ=Tk;var LX=((LZ+L1)&4294967295);Tk=LX;F3=35;continue $bb_i15$50}if(F3==50){var Mf=Tk;var Me=NE;var L5=((Mf+Me)&4294967295);Tk=L5}var LV=Fi;var LT=(((LV))|0)>1;if(LT){F3=53}else{F3=56}if(F3==53){var LR=L7;var LQ=(LR);var Rn=(Np);var LP=(((LQ)-(Rn))&4294967295);Rv=LP;var LO=Rv;var LN=Rp;var LM=((Np)&4294967295);ns(LN,LM,LO,1,0);var LL=Rp;var LK=Rv;var LJ=((LL+LK)&4294967295);var LI=Tk;var LH=(LJ)<(LI);if(LH){F3=54}else{F3=55}$bb25_i$$bb27_i$79:do{if(F3==54){while(1){var LG=Rp;var LF=Rv;var LD=((LG+LF)&4294967295);la[((LD)>>0)]=32;var LC=Rv;var LB=(((LC)+1)&4294967295);Rv=LB;var LA=Rp;var Lz=Rv;var Ly=((LA+Lz)&4294967295);var Lx=Tk;var Lw=(Ly)<(Lx);if(Lw){F3=54;continue}else{F3=55;break $bb25_i$$bb27_i$79}}}}while(0);var Lv=Fi;var Lu=(((Lv)*2)&4294967295);var Lt=(((Lu)+-2)&4294967295);uA[((k3)>>2)]=Lt}var Ls=Fi;MV=Ls;var Lr=MV;UK=Lr;var B6=UK;var Lq=(((B6))|0)!=0;var Lp=oD((Lq),1,0);Rt=Lp;var NQ=iB((Lp),8,0)!=0;if(!(NQ)){F3=59;break $bb36$$bb40$48}var Lo=((SV)&4294967295);uA[((Lo)>>2)]=0;var Ln=((SV+4)&4294967295);uA[((Ln)>>2)]=0;NT=1;var Lm=uA[((k3)>>2)];var Ll=(((Lm))|0)!=0;if(!(Ll)){F3=59;break $bb36$$bb40$48}var Lk=((SV)&4294967295);uA[((Lk)>>2)]=128}}while(0);var Lj=((KD)&4294967295);var Li=la[((Lj)>>0)];var Lh=iB((Li),8,0)==21;if(Lh){F3=60}else{F3=61}if(F3==60){var Lg=((KD)&4294967295);var Lf=oJ(((eh)&4294967295),Lg);Fj=0;F3=278;break $bb2$$bb3$5}else{if(F3==61){var Le=SC;var Ld=(((Le))|0)>0;var Lc=SC;var Lb=(((Lc))|0)<=7;var Kt=(Ld)&(Lb);if(Kt){F3=62}else{F3=63}if(F3==62){var La=((SV)&4294967295);var K8=uA[((La)>>2)];var K7=(K8)&-16;var K5=SC;var K4=(K7)|(K5);var K3=((SV)&4294967295);uA[((K3)>>2)]=K4}var K2=LE;var K1=(((K2))|0)==0;if(K1){F3=64}else{F3=73}$bb46$$bb53$93:do{if(F3==64){var K0=((SV)&4294967295);var KZ=uA[((K0)>>2)];var KY=(KZ)&131072;var KW=(((KY))|0)!=0;if(KW){F3=65}else{F3=66}if(F3==65){NT=1}var R9=LE;var KV=(((R9))|0)==0;if(!(KV)){F3=73;break $bb46$$bb53$93}var KU=uA[((JZ)>>2)];Dt=KU;var KT=Dt;var KS=(((KT))>>>0)<=255;if(KS){F3=69}else{F3=68}if(F3==69){var KR=Dt;var KQ=(((KR)-48)&4294967295);var KP=(((KQ))>>>0)<=9;var KO=oD((KP),1,0);MX=KO;Uo=KO;var KN=(((KO))|0)!=0;if(!(KN)){F3=73;break $bb46$$bb53$93}var Hx=Ro;Q9=Hx;Gf=((oE)&4294967295);QC=((eh)&4294967295);var Hv=((Kf+4)&4294967295);uA[((Hv)>>2)]=0;var Ht=((Kf+4)&4294967295);var Hr=uA[((Ht)>>2)];var Hp=((Kf)&4294967295);uA[((Hp)>>2)]=Hr;var Hn=Gf;uA[((KJ)>>2)]=Hn;var Hl=Q9;var Hj=QC;var Hi=((Kf)&4294967295);var Hh=tN(Hl,KJ,Hj,Hi,0,0);MY=Hh;var Hc=MY;Un=Hc;var Ha=la[((((eh)&4294967295))>>0)];var G8=iB((Ha),8,0)==21;if(G8){F3=71}else{F3=72}if(F3==71){Fj=0;F3=278;break $bb2$$bb3$5}else{if(F3==72){var G6=uA[((Ik)>>2)];var G4=Ro;var G2=((KD)&4294967295);var G0=((SV)&4294967295);var GY=Q8;var GX=ac(G4,G6,G2,G0,GY,0);LE=GX}}}else{if(F3==68){MX=0;Uo=0}}}}while(0);var GW=LE;var GR=(((GW))|0)==0;var GP=oD((GR),1,0);var GN=KE;var GL=(GN)&3;var GJ=(((GL))|0)!=2;var GH=oD((GJ),1,0);var Ns=iB((GP),8,0)!=0;var Nr=iB((GH),8,0)!=0;var GF=(Ns)&(Nr);var GD=oD((GF),1,0);var Nq=iB((GD),8,0)!=0;if(Nq){F3=74}else{F3=81}$bb57$$bb66$107:do{if(F3==74){var GC=Ro;var GB=((GC)&4294967295);var Gx=((GB+184)&4294967295);var Gv=uA[((Gx)>>2)];var Gt=(Gv)&16777216;var Gr=(((Gt))|0)!=0;if(Gr){F3=77}else{F3=75}if(F3==75){var Gp=Ro;var Gn=((Gp)&4294967295);var Gl=((Gn+184)&4294967295);var Gj=uA[((Gl)>>2)];var Gh=(Gj)&33554432;var Gg=(((Gh))|0)==0;if(Gg){F3=81;break $bb57$$bb66$107}var Gc=KE;var Gb=(Gc)&1;var Ga=(((Gb))&255);var M4=iB((Ga),8,0)!=0;if(!(M4)){F3=81;break $bb57$$bb66$107}}var F9=KE;var F8=(F9)&16;var F7=(((F8))|0)!=0;if(F7){F3=79}else{F3=78}if(F3==78){var F6=Q8;var F5=((F6+12)&4294967295);var F4=((F5)&4294967295);var F2=uA[((F4)>>2)];var F0=(F2)&256;var FZ=(((F0))|0)==0;if(!(FZ)){F3=81;break $bb57$$bb66$107}}var FY=uA[((Ik)>>2)];var FX=Ro;var FW=((KD)&4294967295);var FV=Q8;var FU=lV(FX,FY,FW,FV);LE=FU;var FT=LE;var FS=(((FT))|0)!=0;var FR=oD((FS),1,0);Rs=FR;var M3=iB((FR),8,0)!=0;if(!(M3)){F3=81;break $bb57$$bb66$107}var FQ=((SV)&4294967295);var FP=uA[((FQ)>>2)];var FO=(FP)|131072;var FN=((SV)&4294967295);uA[((FN)>>2)]=FO}}while(0);var FL=KE;var FK=(FL)&1;var FJ=(((FK))&255);var M1=iB((FJ),8,0)!=0;if(M1){F3=82}else{F3=100}$bb68$$bb79thread_pre_split$118:do{if(F3==82){var FI=DT;var FH=(((FI))|0)>1;if(!(FH)){F3=100;break $bb68$$bb79thread_pre_split$118}var FG=uA[((JZ)>>2)];Ds=FG;var FF=Ds;var FE=(((FF))>>>0)<=255;var FD=Ds;if(FE){F3=84}else{F3=85}$bb_i28$$bb1_i30$121:do{if(F3==84){var FC=z6(FD);MZ=FC;Pz=84;F3=90;break $bb_i28$$bb1_i30$121}else{if(F3==85){var FB=(((FD))>>>0)>12352;var FA=Ds;var Fz=(((FA))>>>0)<=42752;var Ju=(FB)&(Fz);if(Ju){F3=86}else{F3=87}if(F3==86){MZ=1;Um=1;F3=91;break $bb_i28$$bb1_i30$121}else{if(F3==87){var Fy=Ds;var Fx=(((Fy))>>>0)>563;if(Fx){F3=88}else{F3=89}if(F3==88){MZ=0;Um=0;F3=100;break $bb68$$bb79thread_pre_split$118}else{if(F3==89){var Fw=Ds;var Fu=(((Fw)-256)&4294967295);var Fs=((xF+Fu)&4294967295);var Fr=ll[((Fs)>>0)];var Fq=oD((Fr),8,0);MZ=Fq;Pz=89;F3=90;break $bb_i28$$bb1_i30$121}}}}}}}while(0);if(F3==90){var Fp=Pz==84?FC:(Fq);Um=Fp;var Fo=(((Fp))|0)!=0;if(!(Fo)){F3=100;break $bb68$$bb79thread_pre_split$118}}var Fn=uA[((tR)>>2)];var Fm=(Fn)&256;var Fl=(((Fm))|0)==0;if(Fl){F3=94}else{F3=92}$bb73$$bb71$133:do{if(F3==92){var Fk=((SV)&4294967295);var Fd=uA[((Fk)>>2)];var Fb=(Fd)&131072;var E9=(((Fb))|0)!=0;if(E9){F3=94;break $bb73$$bb71$133}OR=2048;F3=100;break $bb68$$bb79thread_pre_split$118}}while(0);var E7=LE;var E5=(((E7))|0)==0;if(!(E5)){F3=100;break $bb68$$bb79thread_pre_split$118}var E3=((SV)&4294967295);var E2=uA[((E3)>>2)];var E1=(E2)&128;var E0=(((E1))|0)==0;if(!(E0)){F3=100;break $bb68$$bb79thread_pre_split$118}var EZ=DT;var AH=(((EZ))|0)<=3;if(!(AH)){F3=100;break $bb68$$bb79thread_pre_split$118}var e=Ro;var VE=((e+8308)&4294967295);var VC=uA[((VE)>>2)];var VA=(((VC))|0)>3;if(!(VA)){F3=100;break $bb68$$bb79thread_pre_split$118}var Vy=Ro;var Vw=((Vy+8304)&4294967295);var Vu=uA[((Vw)>>2)];var Vt=Ro;var Vs=((Vt+8308)&4294967295);var Vo=uA[((Vs)>>2)];var Vm=(((Vu))|0)<=(((Vo))|0);if(!(Vm)){F3=100;break $bb68$$bb79thread_pre_split$118}NT=1;F3=102;break $bb16$$bb17$25}}while(0);var KA=NT;Pz=100;F3=101;break $bb16$$bb17$25}}}}}while(0);$bb79$$bb80$143:do{if(F3==101){var Vk=Pz==100?KA:(DI);var Vi=(((Vk))|0)>0;if(Vi){F3=102;break $bb79$$bb80$143}var UU=LE;var US=(((UU))|0)==0;if(!(US)){F3=199;break $bb79$$bb80$143}K9=0;C6=0;J9=999;var UQ=uA[((Ik)>>2)];uA[((HE)>>2)]=UQ;var UO=((D2)&4294967295);var UN=((D2)&4294967295);$bb98$147:while(1){var TW=J9;var TU=(((TW))|0)<=2;var TS=J9;var TQ=(((TS))|0)>0;var Ks=(TU)&(TQ);if(Ks){F3=108}else{F3=118}if(F3==118){var TO=DT;var TM=(((TO))|0)<=1;if(TM){F3=120;break $bb98$147}var TK=uA[((HE)>>2)];var TI=Ro;var TE=K9;var TD=lf(TI,TK,TE);var TC=(((TD))|0)!=0;if(!(TC)){F3=120;break $bb98$147}}R3=1;Rq=1;PA=67108864;OR=0;var UM=uA[((HE)>>2)];var UG=((UM)&4294967295);var UE=la[((UG)>>0)];var UC=iB((UE),8,0)==39;if(UC){F3=121;break $bb98$147}var Uz=K9;var Ux=(((Uz))|0)>0;if(Ux){F3=110}else{F3=111}if(F3==110){C6=1}var Uv=uA[((HE)>>2)];var Ut=uA[((HE)>>2)];var Ur=Ro;var Uq=C6;var Up=sG(Ur,Ut,UO,Uq);var Ul=((Uv+Up)&4294967295);uA[((HE)>>2)]=Ul;var Uk=K9;var Uj=(((Uk)+1)&4294967295);K9=Uj;var Ui=la[((UN)>>0)];var Uh=iB((Ui),8,0)==21;if(Uh){F3=112;break $bb98$147}J9=0;var Ua=uA[((HE)>>2)];var T9=J9;var T8=((Ua+T9)&4294967295);var T7=la[((T8)>>0)];var T6=iB((T7),8,0)!=32;if(!(T6)){F3=117;continue $bb98$147}while(1){var T5=J9;var T4=(((T5)+1)&4294967295);J9=T4;var T3=uA[((HE)>>2)];var T2=J9;var T1=((T3+T2)&4294967295);var TY=la[((T1)>>0)];var TX=iB((TY),8,0)!=32;if(TX){F3=116;continue}else{F3=117;continue $bb98$147}}}if(F3==112){var Ug=((D2)&4294967295);var Uf=oJ(((eh)&4294967295),Ug);var Ue=((D2+1)&4294967295);var Ud=pt(Ue,((v1)&4294967295));var Uc=(((Ud))|0)==0;if(Uc){F3=113}else{F3=114}if(F3==113){Fj=65536;F3=278;break $bb2$$bb3$5}else{if(F3==114){Fj=0;F3=278;break $bb2$$bb3$5}}}else{if(F3==120){R3=0;Rq=0}}var TA=Ro;var Ty=((D2)&4294967295);var Tw=K9;jt(TA,Ty,0,Tw);var Tu=uA[((HE)>>2)];var Ts=la[((Tu)>>0)];var Tq=iB((Ts),8,0)!=32;if(!(Tq)){F3=199;break $bb79$$bb80$143}var To=((D2)&4294967295);var Tj=la[((To)>>0)];var Ti=iB((Tj),8,0)!=0;if(Ti){F3=123}else{F3=125}$bb108$$bb110$168:do{if(F3==123){var Th=uA[((HE)>>2)];var Tf=((Th)&4294967295);var Td=la[((Tf)>>0)];var Tb=iB((Td),8,0)!=39;if(!(Tb)){F3=125;break $bb108$$bb110$168}var S9=uA[((HE)>>2)];var S7=((S9+-1)&4294967295);la[((S7)>>0)]=32}}while(0);var S4=uA[((HE)>>2)];var S2=Ro;var SY=((KD)&4294967295);var SX=((P6)&4294967295);var SU=KE;var SS=((SV)&4294967295);var SQ=uI(S2,S4,SY,160,SX,SU,SS);HB=SQ;var SO=((KD)&4294967295);var SM=la[((SO)>>0)];var SK=iB((SM),8,0)==21;var SI=((KD)&4294967295);if(SK){F3=126}else{F3=127}if(F3==126){var SG=oJ(((eh)&4294967295),SI);Fj=0;F3=278;break $bb2$$bb3$5}else{if(F3==127){var O8=la[((SI)>>0)];var O6=iB((O8),8,0)==0;if(O6){F3=128}else{F3=134}$bb113$$bb123$175:do{if(F3==128){var O4=((P6)&4294967295);var O2=la[((O4)>>0)];var O0=iB((O2),8,0)==0;if(!(O0)){F3=134;break $bb113$$bb123$175}var OY=uA[((HE)>>2)];Df=KH;FM=OY;var OW=Df;var OU=FM;var OT=F(OW,OU,0);M0=OT;var OS=M0;T0=OS;var ON=DT;var OL=(((ON))|0)!=1;if(OL){F3=131}else{F3=130}$bb118$$bb115$178:do{if(F3==130){var OJ=uA[((KH)>>2)];var OH=kr(OJ);var OF=(((OH))|0)==0;if(OF){F3=131;break $bb118$$bb115$178}RR=1;Rm=1;var OD=uA[((HE)>>2)];var OB=Ro;var Oz=((KD)&4294967295);var Oy=NT;var Ox=pV(OB,OD,Oz,Oy);uA[((HE)>>2)]=Ox;var Ot=uA[((HE)>>2)];var Or=(Ot)==0;var Op=oD((Or),1,0);Rl=Op;var On=Rl;var Kz=iB((On),8,0)!=0;if(!(Kz)){F3=134;break $bb113$$bb123$175}Fj=0;F3=278;break $bb2$$bb3$5}}while(0);RR=0;Rm=0}}while(0);var Ol=uA[((HE)>>2)];var Oj=((Ol+-1)&4294967295);var Oh=la[((Oj)>>0)];Bw=Oh;LE=0;KX=1;K6=0;var Of=((U6)&4294967295);var Oe=((U6)&4294967295);var Od=((KC)&4294967295);var N8=((SV)&4294967295);var N6=((Po)&4294967295);var N4=((KD)&4294967295);var N2=((P6)&4294967295);var N0=((SV)&4294967295);var NY=((Po)&4294967295);var NW=((Po)&4294967295);var NU=((KD)&4294967295);var NS=((U6)&4294967295);var NR=((P6)&4294967295);var NP=((KC)&4294967295);var NO=((P6)&4294967295);var NN=((KC)&4294967295);var NM=((KC)&4294967295);var NL=((BY)&4294967295);var NK=((P6)&4294967295);var NJ=((HY+1)&4294967295);var NI=((RL)&4294967295);var NH=((KD)&4294967295);var NG=((KD)&4294967295);var NF=((SV)&4294967295);var ND=((RL)&4294967295);var NC=((KD)&4294967295);var NB=((SV)&4294967295);var NA=((RL)&4294967295);var Ny=((RL)&4294967295);var Nw=((P6)&4294967295);var Nv=((KD)&4294967295);var Nu=((D3)&4294967295);var Nt=((SV)&4294967295);var No=((D3)&4294967295);var Nn=((SV)&4294967295);var Nm=((D3+4)&4294967295);var Nk=((SV+4)&4294967295);var Ni=((KD)&4294967295);var Ng=((P6)&4294967295);var Ne=((SV)&4294967295);var Nc=((KD)&4294967295);var Na=((RL)&4294967295);var M8=((P6)&4294967295);var MR=((HY)&4294967295);Pz=134;$bb162$184:while(1){var B9=Pz==167?Ca:(0);var B8=(((B9))|0)>49;var Ky=HB;if(B8){F3=170;break $bb162$184}var B7=(Ky)&1024;var BU=(((B7))|0)!=0;if(!(BU)){F3=170;break $bb162$184}var MQ=KX;var MP=(((MQ))|0)!=0;if(MP){F3=136}else{F3=142}$bb125$$bb131$188:do{if(F3==136){var MN=HB;var ML=(MN)&131072;var MJ=(((ML))|0)==0;if(!(MJ)){F3=142;break $bb125$$bb131$188}la[((Of)>>0)]=0;var MH=KE;var MF=(MH)|805306368;var MD=uA[((HE)>>2)];var MB=Ro;var Mx=uI(MB,MD,Oe,160,Od,MF,N8);P7=Mx;var Mw=P7;var Mv=(((Mw))|0)!=0;if(!(Mv)){F3=142;break $bb125$$bb131$188}var Mt=uA[((HE)>>2)];var Mr=Ro;var Mp=P7;var Mn=yq(Mr,Mt,Mp,N6);var Ml=KE;var Mj=(Ml)|268435456;var Mh=uA[((HE)>>2)];var L9=Ro;var L8=uI(L9,Mh,N4,160,N2,Mj,N0);HB=L8;var L6=wg(NY);var L4=uA[((HE)>>2)];ns(L4,NW,L6,1,0);var L2=HB;var L0=(L2)&1024;var LY=(((L0))|0)==0;if(LY){F3=139}else{F3=141}$bb128$$bb130$192:do{if(F3==139){var LW=P7;HB=LW;var LU=oJ(NU,NS);var LS=oJ(NR,NP);var Ji=uA[((us)>>2)];var Jg=(((Ji))|0)==2;if(!(Jg)){F3=141;break $bb128$$bb130$192}dM(NO,NN);var Je=uA[((ni)>>2)];var Jc=Am(Je,((cu)&4294967295),NM)}}while(0);KX=0;F3=167;break $bb125$$bb131$188}}while(0);$bb161$$bb131$196:do{if(F3==142){var Ja=HB;SW=Ja;var I8=SW;var I6=(I8)&2048;var I4=(((I6))|0)!=0;if(I4){F3=143}else{F3=144}if(F3==143){var I3=Ro;var I2=((I3+8272)&4294967295);uA[((I2)>>2)]=1}var IY=uA[((HE)>>2)];var IW=((IY+-1)&4294967295);var IU=Bw;la[((IW)>>0)]=IU;var IS=SW;var IQ=(IS)&131072;var IO=(((IQ))|0)==0;if(IO){F3=145}else{F3=149}$bb134$$bb141$201:do{if(F3==145){var IM=SW;var IK=(IM)&15;Nx=IK;var IJ=(((IK))|0)>0;if(!(IJ)){F3=155;break $bb134$$bb141$201}$bb135$203:while(1){var II=uA[((HE)>>2)];var ID=((II+1)&4294967295);uA[((HE)>>2)]=ID;var IB=uA[((HE)>>2)];var Iz=la[((IB)>>0)];var Ix=iB((Iz),8,0);var Iv=(Ix)&192;var It=(((Iv))|0)==128;if(It){F3=147}else{F3=148}$bb136$$bb138$205:do{if(F3==147){while(1){var Ir=uA[((HE)>>2)];var Ip=((Ir+1)&4294967295);uA[((HE)>>2)]=Ip;var Io=uA[((HE)>>2)];var In=la[((Io)>>0)];var Ih=iB((In),8,0);var If=(Ih)&192;var Id=(((If))|0)==128;if(Id){F3=147;continue}else{F3=148;break $bb136$$bb138$205}}}}while(0);var Ib=Nx;var H9=(((Ib)-1)&4294967295);Nx=H9;var H7=(((H9))|0)>0;if(H7){F3=146;continue $bb135$203}else{F3=155;break $bb134$$bb141$201}}}else{if(F3==149){Ku=1;la[((MR)>>0)]=0;var H5=SW;var H3=(H5)&63;UB=H3;Nx=0;var H2=Nx;var H1=UB;var HZ=(((H2))|0)<(((H1))|0);var HX=Ku;if(HZ){Pz=149;F3=150}else{Pz=149;F3=154}$bb142$$bb147$210:do{if(F3==150){$bb142$211:while(1){var HW=Pz==153?Hu:(HX);var HV=uA[((HE)>>2)];var HU=la[((HV)>>0)];var HT=((HY+HW)&4294967295);la[((HT)>>0)]=HU;var HS=Ku;var HR=(((HS)+1)&4294967295);Ku=HR;var HQ=((HV+1)&4294967295);uA[((HE)>>2)]=HQ;var HP=SW;var HO=(HP)&131072;var HN=(((HO))|0)!=0;if(HN){F3=151}else{F3=153}$bb143$$bb145$213:do{if(F3==151){var HM=UB;var HL=(((HM)-1)&4294967295);var HK=Nx;var HJ=(((HL))|0)==(((HK))|0);if(!(HJ)){F3=153;break $bb143$$bb145$213}var HI=Ku;var HH=(((HI)-1)&4294967295);var HG=((HY+HH)&4294967295);la[((HG)>>0)]=0}}while(0);var HF=Nx;var HA=(((HF)+1)&4294967295);Nx=HA;var Hz=Nx;var Hy=UB;var Hw=(((Hz))|0)<(((Hy))|0);var Hu=Ku;if(Hw){Pz=153;F3=150;continue $bb142$211}else{Pz=153;F3=154;break $bb142$$bb147$210}}}}while(0);var Q7=Pz==149?HX:(Hu);var Hs=((HY+Q7)&4294967295);la[((Hs)>>0)]=0}}}while(0);var Hq=uA[((HE)>>2)];var Ho=((Hq+-1)&4294967295);var Hm=la[((Ho)>>0)];Bw=Hm;var Hk=uA[((HE)>>2)];var Hf=((Hk+-1)&4294967295);la[((Hf)>>0)]=32;KX=1;var He=SW;var Hd=(He)&131072;var Hb=(((Hd))|0)!=0;if(Hb){F3=156}else{F3=160}$bb149$$bb154$219:do{if(F3==156){HC=NL;KI=NK;KK=12;var G9=KK;var G7=HC;var G5=KI;var G3=xT(G7,G5,G9);var G1=KK;var GZ=(((G1)-1)&4294967295);var GU=HC;var GT=((GU+GZ)&4294967295);la[((GT)>>0)]=0;uA[((Qw)>>2)]=NJ;var GS=oJ(NI,NH);var GQ=Ro;var GO=Q8;var GM=tN(GQ,Qw,NG,NF,0,GO);LE=GM;var GK=LE;var GI=(((GK))|0)!=0;if(GI){F3=157}else{F3=158}if(F3==157){var GG=oJ(ND,NC)}var GE=uA[((NB)>>2)];var GA=(GE)&131072;var Gz=(((GA))|0)!=0;if(!(Gz)){F3=161;break $bb149$$bb154$219}la[((NA)>>0)]=0;var Gy=uA[((Qw)>>2)];var Gw=Ro;var Gu=pV(Gw,Gy,Ny,1)}else{if(F3==160){var Gs=sU(Na,M8)}}}while(0);la[((Nw)>>0)]=0;HB=0;var Gq=Ro;var Go=Q8;var Gm=tN(Gq,HE,Nv,Nu,1024,Go);LE=Gm;var Gk=uA[((Nt)>>2)];var CA=(((Gk))|0)==0;if(CA){F3=162}else{F3=163}if(F3==162){var Cz=uA[((No)>>2)];uA[((Nn)>>2)]=Cz;var Cy=uA[((Nm)>>2)];uA[((Nk)>>2)]=Cy}else{if(F3==163){Kv=1}}var Cx=LE;var Cw=(((Cx))|0)==0;if(!(Cw)){F3=167;break $bb161$$bb131$196}var Cv=uA[((HE)>>2)];var Cu=Ro;var Ct=uI(Cu,Cv,Ni,160,Ng,0,Ne);HB=Ct;var Cs=la[((Nc)>>0)];var Cr=iB((Cs),8,0)==21;if(Cr){F3=166;break $bb162$184}}}while(0);var Cb=K6;var Ca=(((Cb)+1)&4294967295);K6=Ca;Pz=167;F3=168;continue $bb162$184}if(F3==170){var BT=(((Ky))|0)!=0;if(BT){F3=171}else{F3=198}$bb165$$bb194$235:do{if(F3==171){var BS=HB;var BR=(BS)&1024;var BQ=(((BR))|0)==0;if(!(BQ)){F3=198;break $bb165$$bb194$235}var BP=((GV)&4294967295);var BO=((KD)&4294967295);var BN=oJ(BP,BO);var BM=uA[((HE)>>2)];var BL=Ro;var Bz=HB;var By=((Po)&4294967295);var Bx=yq(BL,BM,Bz,By);Ep=Bx;var Bv=((KD)&4294967295);la[((Bv)>>0)]=0;var Bu=((RL)&4294967295);var Bt=la[((Bu)>>0)];var Bs=iB((Bt),8,0)!=0;if(Bs){F3=173}else{F3=181}$bb168$$bb177$238:do{if(F3==173){var Br=uA[((HE)>>2)];var Bq=((Br+-1)&4294967295);var Bp=Bw;la[((Bq)>>0)]=Bp;var Be=Ro;var Bd=((KD)&4294967295);var Bc=((D3)&4294967295);var Bb=Ep;var Ba=Q8;var A9=tN(Be,Ik,Bd,Bc,Bb,Ba);LE=A9;var A8=uA[((HE)>>2)];var A7=((A8+-1)&4294967295);la[((A7)>>0)]=32;var A6=((KD)&4294967295);var A5=la[((A6)>>0)];var AU=iB((A5),8,0)==21;if(AU){F3=174}else{F3=175}if(F3==174){var AT=((Po)&4294967295);var AS=wg(AT);var AR=uA[((HE)>>2)];var AQ=((Po)&4294967295);ns(AR,AQ,AS,1,0);var AP=((KD)&4294967295);var AO=oJ(((eh)&4294967295),AP);Fj=0;F3=278;break $bb2$$bb3$5}else{if(F3==175){var AN=((SV)&4294967295);var AM=uA[((AN)>>2)];var AL=(((AM))|0)==0;if(AL){F3=176}else{F3=177}if(F3==176){var AK=((D3)&4294967295);var AJ=uA[((AK)>>2)];var AI=((SV)&4294967295);uA[((AI)>>2)]=AJ;var i=((D3+4)&4294967295);var VF=uA[((i)>>2)];var VD=((SV+4)&4294967295);uA[((VD)>>2)]=VF}var VB=LE;var Vz=(((VB))|0)!=0;if(Vz){F3=178}else{F3=179}if(F3==178){var Vx=((RL)&4294967295);la[((Vx)>>0)]=0;var Kx=LE;var Vv=(((Kx))|0)==0;if(!(Vv)){F3=195;break $bb168$$bb177$238}}var Vr=((D3)&4294967295);var Vq=uA[((Vr)>>2)];var Vp=(((Vq))|0)!=0;if(!(Vp)){F3=181;break $bb168$$bb177$238}Kv=1;F3=181;break $bb168$$bb177$238}}}}while(0);$bb177$$bb191$250:do{if(F3==181){var Kw=LE;var Vn=(((Kw))|0)==0;if(!(Vn)){F3=195;break $bb177$$bb191$250}var Vl=Ro;var Vj=((KD)&4294967295);var Vh=((D3)&4294967295);var Vf=Ep;var Vd=Q8;var Vb=tN(Vl,HE,Vj,Vh,Vf,Vd);LE=Vb;var U5=((KD)&4294967295);var U4=la[((U5)>>0)];var U3=iB((U4),8,0)==21;if(U3){F3=183}else{F3=184}if(F3==183){var U1=((Po)&4294967295);var UZ=wg(U1);var UX=uA[((HE)>>2)];var UV=((Po)&4294967295);ns(UX,UV,UZ,1,0);var UT=((KD)&4294967295);var UR=oJ(((eh)&4294967295),UT);Fj=0;F3=278;break $bb2$$bb3$5}else{if(F3==184){var UP=((SV)&4294967295);var UJ=uA[((UP)>>2)];var UI=(((UJ))|0)==0;if(UI){F3=185}else{F3=186}if(F3==185){var UH=((D3)&4294967295);var UF=uA[((UH)>>2)];var UD=((SV)&4294967295);uA[((UD)>>2)]=UF;var UA=((D3+4)&4294967295);var Uy=uA[((UA)>>2)];var Uw=((SV+4)&4294967295);uA[((Uw)>>2)]=Uy}var Kj=LE;var Uu=(((Kj))|0)==0;if(!(Uu)){F3=195;break $bb177$$bb191$250}var Us=HB;var Qq=(Us)&16384;var Qp=(((Qq))|0)!=0;if(Qp){F3=188}else{F3=189}if(F3==188){var Qo=((KD)&4294967295);var Qn=((GV)&4294967295);var Qm=oJ(Qo,Qn);var Ql=((SV)&4294967295);var Qk=uA[((Ql)>>2)];var Qj=Ro;var Qi=((KD)&4294967295);nQ(Qj,Qi,Qk)}else{if(F3==189){var Qh=Ep;var P5=(Qh)&4;var P4=(((P5))|0)!=0;if(P4){F3=190}else{F3=191}if(F3==190){var P3=KE;var P2=(P3)|8192;KE=P2}var P1=HB;var P0=(P1)&262144;var PY=(((P0))|0)!=0;if(PY){F3=192}else{F3=193}if(F3==192){var PX=KE;var PW=(PX)|134217728;KE=PW}var PV=uA[((HE)>>2)];var PU=Ro;var PT=((KD)&4294967295);var PS=KE;var PR=((SV)&4294967295);var PQ=uI(PU,PV,PT,160,0,PS,PR);var PP=((KD)&4294967295);var PO=la[((PP)>>0)];var PN=iB((PO),8,0)==21;if(!(PN)){F3=195;break $bb177$$bb191$250}var PM=((KD)&4294967295);var PL=oJ(((eh)&4294967295),PM);var PK=((Po)&4294967295);var PJ=wg(PK);var PI=uA[((HE)>>2)];var PH=((Po)&4294967295);ns(PI,PH,PJ,1,0);var PG=uA[((HE)>>2)];var PF=((PG+-1)&4294967295);var PE=Bw;la[((PF)>>0)]=PE;Fj=0;F3=278;break $bb2$$bb3$5}}}}}}while(0);var PD=HB;var PC=(PD)&65536;var PB=(((PC))|0)==0;if(PB){F3=196}else{F3=197}if(F3==196){var Py=Ro;var Px=((KD)&4294967295);var Pw=((P6)&4294967295);jH(Py,Px,160,Pw);var Pv=((P6)&4294967295);la[((Pv)>>0)]=0}var Pu=((Po)&4294967295);var Pt=wg(Pu);var Ps=uA[((HE)>>2)];var Pr=((Po)&4294967295);ns(Ps,Pr,Pt,1,0)}}while(0);var Pq=uA[((HE)>>2)];var Pp=((Pq+-1)&4294967295);var Pm=Bw;la[((Pp)>>0)]=Pm;F3=199;break $bb79$$bb80$143}else{if(F3==166){var Cg=uA[((HE)>>2)];var Cf=((Cg+-1)&4294967295);var Ce=Bw;la[((Cf)>>0)]=Ce;var Cd=((KD)&4294967295);var Cc=oJ(((eh)&4294967295),Cd);Fj=0;F3=278;break $bb2$$bb3$5}}}}}}while(0);$bb80$$bb195$276:do{if(F3==102){var Vg=((KD)&4294967295);la[((Vg)>>0)]=0;HB=0;var Ve=uA[((Ik)>>2)];var Vc=Ro;var Va=((KD)&4294967295);var U9=NT;var U8=pV(Vc,Ve,Va,U9);var U2=(U8)==0;var U0=oD((U2),1,0);Rr=U0;var Md=iB((U0),8,0)!=0;if(!(Md)){F3=199;break $bb80$$bb195$276}var UY=DT;var UW=(((UY))|0)>1;if(UW){F3=104}else{F3=105}if(F3==104){Fj=65536;F3=278;break $bb2$$bb3$5}else{if(F3==105){Fj=0;F3=278;break $bb2$$bb3$5}}}}while(0);var Pl=Ft;var Pk=(((Pl))|0)!=0;if(Pk){F3=201}else{F3=200}$bb197$$bb196$283:do{if(F3==200){var Pj=KE;var Pi=(Pj)&4;var Ph=(((Pi))|0)!=0;if(Ph){F3=201;break $bb197$$bb196$283}else{F3=209;break $bb197$$bb196$283}}}while(0);$bb197$$bb207$285:do{if(F3==201){var Pg=uA[((Oc)>>2)];var Pf=(((Pg))|0)==102;if(Pf){F3=202}else{F3=203}if(F3==202){var Pe=Ro;var Pd=((KD)&4294967295);var Pc=uI(Pe,((at+1)&4294967295),Pd,160,0,0,0)}else{if(F3==203){var Pa=uA[((Oc)>>2)];var O9=(((Pa))|0)==0;if(O9){F3=207}else{F3=204}$bb205$$bb200$290:do{if(F3==204){var O7=uA[((Oc)>>2)];Sg=((lF)&4294967295);C5=O7;var O5=C5;var O3=(((O5))|0)>127;if(O3){F3=205}else{F3=206}if(F3==205){M2=0;TZ=0}else{if(F3==206){var O1=Sg;var OZ=C5;var OX=qX(O1,OZ);M2=OX;TZ=OX;var OV=(OX)==0;if(OV){F3=207;break $bb205$$bb200$290}Ru=0;KG=0;var OM=Ro;var OK=((KD)&4294967295);var OI=uI(OM,((c8+1)&4294967295),OK,160,0,0,0);F3=209;break $bb197$$bb207$285}}}}while(0);Ru=1;KG=1;var OQ=Ro;var OP=((KD)&4294967295);var OO=uI(OQ,((Ab+1)&4294967295),OP,160,0,0,0)}}}}while(0);var OG=KE;var OE=OR;var OC=(OE)|(OG);KE=OC;Fv=0;var OA=((RL)&4294967295);Mb=OA;var Ow=Mb;var Ov=la[((Ow)>>0)];var Ou=iB((Ov),8,0)!=0;if(Ou){F3=210}else{F3=214}$bb208$$bb213$298:do{if(F3==210){$bb208$299:while(1){var Os=Mb;var Oq=la[((Os)>>0)];var Oo=iB((Oq),8,0)==6;if(Oo){F3=212}else{F3=211}$bb210$$bb209$301:do{if(F3==211){var Om=Mb;var Ok=la[((Om)>>0)];var Oi=iB((Ok),8,0)==7;if(Oi){F3=212;break $bb210$$bb209$301}else{F3=213;break $bb210$$bb209$301}}}while(0);if(F3==212){var Og=Mb;var Ob=la[((Og)>>0)];var Oa=iB((Ob),8,0);Fv=Oa}var N9=Mb;var N7=((N9+1)&4294967295);Mb=N7;var N5=Mb;var N3=la[((N5)>>0)];var N1=iB((N3),8,0)!=0;if(N1){F3=210;continue $bb208$299}else{F3=214;break $bb208$$bb213$298}}}}while(0);var NZ=Kv;var NX=(((NZ))|0)!=0;if(NX){F3=216}else{F3=215}$bb215$$bb214$307:do{if(F3==215){var NV=Fv;var Kq=(((NV))|0)!=0;if(Kq){F3=216;break $bb215$$bb214$307}var JG=Ro;var JF=((KD)&4294967295);var JE=((SV)&4294967295);m8(JG,JF,JE,-1,0);var JD=((D2)&4294967295);var JC=((RL)&4294967295);var JB=((KD)&4294967295);var JA=qS(((eh)&4294967295),160,((tJ)&4294967295),JD,JC,JB);la[((((eh+159)&4294967295))>>0)]=0;F3=227;break $bb215$$bb214$307}}while(0);$bb215$$bb232$310:do{if(F3==216){var Kp=Ro;var Ko=((Kp)&4294967295);var Kn=((Ko+24)&4294967295);var Km=((Kn+12)&4294967295);var Kl=uA[((Km)>>2)];var Kk=(((Kl))|0)!=0;if(Kk){F3=218}else{F3=217}$bb217$$bb216$312:do{if(F3==217){var Ki=SW;var Kh=(Ki)&65536;var Kg=(((Kh))|0)!=0;if(Kg){F3=218;break $bb217$$bb216$312}var JM=((D2)&4294967295);var JL=((RL)&4294967295);var JK=((KD)&4294967295);var JJ=qS(((eh)&4294967295),160,((tJ)&4294967295),JM,JL,JK);la[((((eh+159)&4294967295))>>0)]=0;var JI=Ro;var JH=((SV)&4294967295);m8(JI,((eh)&4294967295),JH,-1,0);F3=227;break $bb215$$bb232$310}}while(0);var Ke=Ro;var Kd=((KD)&4294967295);var Kc=((SV)&4294967295);m8(Ke,Kd,Kc,3,0);Nx=0;var Kb=((RL)&4294967295);HD=Kb;var Ka=HD;var J8=la[((Ka)>>0)];var J7=iB((J8),8,0)!=0;if(J7){F3=219}else{F3=224}$bb219$$bb225$316:do{if(F3==219){while(1){var J6=HD;var J5=la[((J6)>>0)];var J4=iB((J5),8,0)==6;if(J4){F3=220}else{F3=223}if(F3==220){var J3=Nx;var J2=(((J3))|0)==0;if(J2){F3=221}else{F3=222}if(F3==221){Nx=1}else{if(F3==222){var J1=HD;la[((J1)>>0)]=5}}}var J0=HD;var JY=((J0+1)&4294967295);HD=JY;var JX=HD;var JW=la[((JX)>>0)];var JV=iB((JW),8,0)!=0;if(JV){F3=219;continue}else{F3=224;break $bb219$$bb225$316}}}}while(0);var JU=((D2)&4294967295);var JT=((RL)&4294967295);var JR=((KD)&4294967295);var JQ=qS(((eh)&4294967295),160,((tJ)&4294967295),JU,JT,JR);la[((((eh+159)&4294967295))>>0)]=0;var JO=Ro;var JN=((SV)&4294967295);m8(JO,((eh)&4294967295),JN,-1,0)}}while(0);var Jz=((P6)&4294967295);var Jy=la[((Jz)>>0)];var Jx=iB((Jy),8,0)!=0;if(Jx){F3=228}else{F3=229}if(F3==228){var Jw=wg(((eh)&4294967295));Nx=Jw;var Jv=Nx;var Jt=((159-(Jv))&4294967295);var Js=((P6+Jt)&4294967295);la[((Js)>>0)]=0;var Jr=Nx;var Jq=((eh+Jr)&4294967295);var Jp=((P6)&4294967295);var Jo=oJ(Jq,Jp)}var Jn=KE;var Jm=(Jn)&16;var Jl=(((Jm))|0)!=0;if(Jl){F3=230}else{F3=231}if(F3==230){var Jk=((SV)&4294967295);var Jj=uA[((Jk)>>2)];var Jh=(Jj)&-268435457;var Jf=((SV)&4294967295);uA[((Jf)>>2)]=Jh}var Jd=KE;var Jb=(Jd)&128;var I9=(((Jb))|0)==0;if(I9){F3=234}else{F3=232}$bb239$$bb237$333:do{if(F3==232){var I7=Ro;var I5=((I7)&4294967295);var I1=((I5+12)&4294967295);var I0=uA[((I1)>>2)];var IZ=(I0)&1048576;var IX=(((IZ))|0)==0;if(IX){F3=234;break $bb239$$bb237$333}var IV=Ro;uQ(IV,((eh)&4294967295),3);F3=243;break $bb239$$bb237$333}}while(0);$bb239$$bb249$336:do{if(F3==234){var IT=KE;var IR=(IT)&3072;var IP=(((IR))|0)!=0;if(IP){F3=235}else{F3=237}if(F3==235){var IN=Ro;uQ(IN,((eh)&4294967295),6);var IL=KE;var IG=(IL)&2048;var IF=(((IG))|0)!=0;if(!(IF)){F3=243;break $bb239$$bb249$336}var IE=((SV)&4294967295);var IC=uA[((IE)>>2)];var IA=(IC)|268435456;var Iy=((SV)&4294967295);uA[((Iy)>>2)]=IA}else{if(F3==237){var Iw=uA[((k3)>>2)];var Iu=Q8;var Is=((Iu+12*Iw)&4294967295);var Iq=((Is)&4294967295);var Im=uA[((Iq)>>2)];var Il=(Im)&16;var Ii=(((Il))|0)!=0;if(!(Ii)){F3=243;break $bb239$$bb249$336}var Ig=((SV)&4294967295);var Ie=uA[((Ig)>>2)];var Ic=(Ie)&6144;var Ia=(((Ic))|0)!=0;if(Ia){F3=239}else{F3=240}if(F3==239){var H8=Ro;uQ(H8,((eh)&4294967295),4)}else{if(F3==240){var H6=((SV)&4294967295);var H4=uA[((H6)>>2)];var Dr=(H4)&8192;var Dq=(((Dr))|0)!=0;if(!(Dq)){F3=243;break $bb239$$bb249$336}var Qg=ll[((gO)>>0)];var Dp=oD((Qg),1,0);var Do=(((Dp))|0)!=0;if(!(Do)){F3=243;break $bb239$$bb249$336}var Dn=Ro;uQ(Dn,((eh)&4294967295),3)}}}}}}while(0);var Dm=HB;var Dl=(Dm)&8192;var Dk=(((Dl))|0)!=0;if(Dk){F3=244}else{F3=245}if(F3==244){var Dj=Ro;var Di=((Dj+8272)&4294967295);uA[((Di)>>2)]=2;var Dh=Ro;var Dg=((Dh+8280)&4294967295);uA[((Dg)>>2)]=2}var De=((SV+4)&4294967295);var Dd=uA[((De)>>2)];var Dc=(Dd)&8;var Db=(((Dc))|0)!=0;if(Db){F3=246}else{F3=247}$bb252$$bb253$352:do{if(F3==246){var Da=Ro;var C9=((Da+8276)&4294967295);uA[((C9)>>2)]=3;var C8=Ro;var C7=((C8+8272)&4294967295);uA[((C7)>>2)]=0;var C4=Ro;var C3=((C4+8284)&4294967295);uA[((C3)>>2)]=0}else{if(F3==247){var C2=((SV+4)&4294967295);var C1=uA[((C2)>>2)];var C0=(C1)&1;var CZ=(((C0))&255);var Dv=iB((CZ),8,0)!=0;if(Dv){F3=248}else{F3=249}if(F3==248){var CY=Ro;var CX=((CY+8272)&4294967295);uA[((CX)>>2)]=2;var CW=Ro;var CV=((CW+8280)&4294967295);uA[((CV)>>2)]=0;var CU=Ro;var CT=((CU+8284)&4294967295);uA[((CT)>>2)]=0}else{if(F3==249){var CS=((SV+4)&4294967295);var CR=uA[((CS)>>2)];var CQ=(CR)&2;var CP=(((CQ))|0)!=0;if(CP){F3=250}else{F3=251}if(F3==250){var CO=Ro;var CN=((CO+8272)&4294967295);uA[((CN)>>2)]=0;var CM=Ro;var CL=((CM+8280)&4294967295);uA[((CL)>>2)]=2;var CK=Ro;var CJ=((CK+8276)&4294967295);uA[((CJ)>>2)]=0;var CI=Ro;var CH=((CI+8284)&4294967295);uA[((CH)>>2)]=0}else{if(F3==251){var CG=((SV+4)&4294967295);var CF=uA[((CG)>>2)];var CE=(CF)&4;var CD=(((CE))|0)!=0;if(!(CD)){F3=253;break $bb252$$bb253$352}var CC=Ro;var CB=((CC+8284)&4294967295);uA[((CB)>>2)]=2;var Cq=Ro;var Cp=((Cq+8272)&4294967295);uA[((Cp)>>2)]=0;var Co=Ro;var Cn=((Co+8280)&4294967295);uA[((Cn)>>2)]=0;var Cm=Ro;var Cl=((Cm+8276)&4294967295);uA[((Cl)>>2)]=0}}}}}}}while(0);var Ck=uA[((HE)>>2)];var Cj=((Ck)&4294967295);var Ci=la[((Cj)>>0)];var Ch=iB((Ci),8,0)!=0;if(Ch){F3=254}else{F3=263}$bb261$$bb270$363:do{if(F3==254){var B5=((SV+4)&4294967295);var B4=uA[((B5)>>2)];var B3=(B4)&256;var B2=(((B3))|0)==0;if(!(B2)){F3=263;break $bb261$$bb270$363}var B1=Ro;var B0=((B1+8272)&4294967295);var BZ=uA[((B0)>>2)];var BX=(((BZ))|0)>0;if(BX){F3=256}else{F3=257}if(F3==256){var BW=Ro;var BV=((BW+8272)&4294967295);var BK=uA[((BV)>>2)];var BJ=(((BK)-1)&4294967295);var BI=Ro;var BH=((BI+8272)&4294967295);uA[((BH)>>2)]=BJ}var BG=Ro;var BF=((BG+8280)&4294967295);var BE=uA[((BF)>>2)];var BD=(((BE))|0)>0;if(BD){F3=258}else{F3=259}if(F3==258){var BC=Ro;var BA=((BC+8280)&4294967295);var Bo=uA[((BA)>>2)];var Bn=(((Bo)-1)&4294967295);var Bm=Ro;var Bl=((Bm+8280)&4294967295);uA[((Bl)>>2)]=Bn}var Bk=Ro;var Bj=((Bk+8284)&4294967295);var Bi=uA[((Bj)>>2)];var Bh=(((Bi))|0)>0;if(Bh){F3=260}else{F3=261}if(F3==260){var Bg=Ro;var Bf=((Bg+8284)&4294967295);var A4=uA[((Bf)>>2)];var A3=(((A4)-1)&4294967295);var A2=Ro;var A1=((A2+8284)&4294967295);uA[((A1)>>2)]=A3}var A0=Ro;var AZ=((A0+8276)&4294967295);var AY=uA[((AZ)>>2)];var AX=(((AY))|0)>0;if(!(AX)){F3=263;break $bb261$$bb270$363}var AW=Ro;var AV=((AW+8276)&4294967295);var Rk=uA[((AV)>>2)];var Rj=(((Rk)-1)&4294967295);var Ri=Ro;var Rh=((Ri+8276)&4294967295);uA[((Rh)>>2)]=Rj}}while(0);var Rg=DT;var Re=(((Rg))|0)==1;if(Re){F3=264}else{F3=274}$bb271$$bb275$377:do{if(F3==264){var Rd=Ro;var Rc=((Rd+280)&4294967295);var Rb=uA[((Rc)>>2)];var Ra=(((Rb))|0)==25966;if(!(Ra)){F3=274;break $bb271$$bb275$377}var Q6=uA[((JZ)>>2)];Ub=Q6;var Q5=Ub;var Q4=(((Q5))>>>0)<=255;var Q3=Ub;if(Q4){F3=266}else{F3=267}if(F3==266){var Q2=z6(Q3);MS=Q2}else{if(F3==267){var Q1=(((Q3))>>>0)>12352;var Q0=Ub;var QZ=(((Q0))>>>0)<=42752;var EB=(Q1)&(QZ);if(EB){F3=268}else{F3=269}if(F3==268){MS=1}else{if(F3==269){var QY=Ub;var QX=(((QY))>>>0)>563;if(QX){F3=270}else{F3=271}if(F3==270){MS=0}else{if(F3==271){var QW=Ub;var QV=(((QW)-256)&4294967295);var QU=((xF+QV)&4294967295);var QT=ll[((QU)>>0)];var QS=oD((QT),8,0);MS=QS}}}}}}var QR=MS;EH=QR;var Ma=EH;var QQ=(((Ma))|0)!=0;var QP=uA[((JZ)>>2)];var QO=(((QP))|0)!=105;var Kr=(QQ)&(QO);if(!(Kr)){F3=274;break $bb271$$bb275$377}var QN=((SV)&4294967295);var QM=uA[((QN)>>2)];var QL=(QM)|16777216;var QK=((SV)&4294967295);uA[((QK)>>2)]=QL}}while(0);var QJ=Ro;var QI=((QJ)&4294967295);var QH=((QI+24)&4294967295);var QG=((QH+60)&4294967295);var QF=uA[((QG)>>2)];var QE=(QF)&2;var QD=(((QE))|0)!=0;if(QD){F3=275}else{F3=277}$bb276$$bb278$392:do{if(F3==275){var QB=((SV)&4294967295);var QA=uA[((QB)>>2)];var Qz=(QA)&3145728;var Qy=(((Qz))|0)!=0;if(!(Qy)){F3=277;break $bb276$$bb278$392}var Qx=((SV)&4294967295);var Qv=uA[((Qx)>>2)];var Qu=Ro;ub(Qu,((eh)&4294967295),Qv)}}while(0);var Qt=((SV)&4294967295);var Qs=uA[((Qt)>>2)];var Qr=PA;var Qf=(Qr)|(Qs);var Qe=((SV)&4294967295);uA[((Qe)>>2)]=Qf;var Qd=Dw;var Qc=S5;var Qb=((PZ)&4294967295);ns(Qc,Qb,Qd,1,0);var Qa=((SV)&4294967295);var P9=uA[((Qa)>>2)];Fj=P9}}}while(0);var P8=Fj;EA=P8;var Sj=EA;vp=Gi;return Sj;return null}function am(AW){var AS;var AI;var AV;var AX;AX=AW;var AP=AX;var AO=((AP+1052)&4294967295);var AN=uA[((AO)>>2)];var AM=(AN)!=0;if(AM){AS=1}else{AS=3}$bb$$bb1$2:do{if(AS==1){var AL=AX;var AK=((AL+1052)&4294967295);var AJ=uA[((AK)>>2)];AV=AJ;var AH=AV;var i=(AH)!=0;if(!(i)){AS=3;break $bb$$bb1$2}var e=AV;br(e)}}while(0);var AU=AX;var AT=AU;AI=AT;var AR=(AT)!=0;if(AR){AS=4}else{AS=5}if(AS==4){var AQ=AI;br(AQ)}return;return}function wG(i){var A2;var BA;var AY;var A1;var A7;var AH;var A5;var Br;var A3;var A4;var AR;AH=i;var Bq=AH;var Bp=eo(Bq);AR=Bp;var Bo=AR;var Bn=(((Bo))|0)>=0;var Bm=oD((Bn),1,0);A4=Bm;var Bl=A4;var A6=iB((Bl),8,0)!=0;if(A6){A2=1}else{A2=12}$bb$$bb7$2:do{if(A2==1){var Bj=uA[((vD)>>2)];var Bh=(Bj)!=0;if(Bh){A2=2}else{A2=10}if(A2==2){var Bf=AH;var AX=pt(Bf,((bm)&4294967295));var AV=(((AX))|0)!=0;var AT=xk[((vD)>>2)];if(AV){A2=3}else{A2=9}if(A2==3){A7=AT;var AQ=A7;var AO=((AQ+1052)&4294967295);var AN=uA[((AO)>>2)];var AM=(AN)!=0;if(AM){A2=4}else{A2=6}$bb_i$$bb1_i$8:do{if(A2==4){var AL=A7;var AK=((AL+1052)&4294967295);var AJ=uA[((AK)>>2)];A1=AJ;var e=A1;var BC=(e)!=0;if(!(BC)){A2=6;break $bb_i$$bb1_i$8}var BB=A1;br(BB)}}while(0);var Bz=A7;var By=Bz;AY=By;var Bx=(By)!=0;if(Bx){A2=7}else{A2=8}if(A2==7){var Bw=AY;br(Bw)}uA[((vD)>>2)]=0}else{if(A2==9){var Bv=(AT)==0;if(!(Bv)){A2=12;break $bb$$bb7$2}}}}var Bu=AH;var Bt=jr(Bu);uA[((vD)>>2)]=Bt;var Bk=AH;var Bi=oJ(((bm)&4294967295),Bk);var Bg=uA[((vD)>>2)];var Be=AH;var Bd=io(Bg,Be,0);var Bc=(((Bd))|0)!=0;var Bb=oD((Bc),1,0);A3=Bb;var AI=iB((Bb),8,0)!=0;if(!(AI)){A2=12;break $bb$$bb7$2}var Ba=uA[((k5)>>2)];var A9=((Ba+40)&4294967295);var A8=uA[((A9)>>2)];BA=A8;uA[((rW)>>2)]=0;var A0=BA;m1(A0,0);var AZ=uA[((rW)>>2)];var AW=(((AZ)+1)&4294967295);uA[((rW)>>2)]=AW;var AU=BA;uA[((mp)>>2)]=AU;AR=-1;la[((((bm)&4294967295))>>0)]=0}}while(0);var AS=AR;Br=AS;var AP=Br;A5=AP;var Bs=A5;return Bs;return null}function rP(Bl,Jl,Nn,GQ,Q8){var Cg=vp;vp+=392;n1(Cg,0,392);var Bj;var Ok=null;var R4;var Mi;var Sb;var Mm;var i;var Mt;var AO;var MI;var AV;var MJ;var A2;var MN;var A9;var MW;var Bd;var MX;var EK;var EM;var Bm;var M2;var DH;var Cf;var Pq;var Q2;var Ep;var IK;var OX;var MH;var IX;var Rk;var En;var O8;var PX;var Rp;var Em;var Es;var Dv;var I3;var El;var Q9;var IE;var NE;var IV;var F9;var DW;var MV;var L8;var PS;var MG;var Qb;var Qy;var M9;var QH;var Nx;var QT;var QV;var Q1;var Ek;var Nc;var DD;var MA;var Du;var Dt;var LC;var GE;var Oi;var Na;var Ot;var AL;var CH;var NX;var B1;var NW;var Oj;var Fg;var Nz;var Ia;var Le;var ER;var e;var IM;var DQ=Cg;var EB;var QX;var OJ=Cg+4;var D5=Cg+168;var Im;var CB=Cg+208;var Il;var C8;var CX;var Q4=Cg+220;var QC=Cg+228;var Ey=Cg+232;IE=Bl;NE=Jl;IV=Nn;F9=GQ;DW=Q8;Nc=0;Du=0;B1=0;NW=-1;Oj=0;Fg=-1;Nz=1;var Ej=uA[((bQ)>>2)];var Eh=(Ej)!=0;if(Eh){Bj=1}else{Bj=7}$bb$$bb6$2:do{if(Bj==1){var Ef=uA[((s1)>>2)];var Ed=(Ef)&8;var Eb=(((Ed))|0)!=0;if(!(Eb)){Bj=7;break $bb$$bb6$2}var Iw=IV;var Iv=((Iw+10)&4294967295);var Iu=ll[((Iv)>>0)];var It=oD((Iu),8,0);var Is=IV;var Ir=((Is)&4294967295);var Iq=uA[((Ir)>>2)];var Ip=uA[((bQ)>>2)];var Io=Am(Ip,((M)&4294967295),Iq,It);ER=0;Ok=2;while(1){var HK=Ok==4?HL:(0);var HJ=(((HK))|0)<=39;if(!(HJ)){Bj=6;break}var In=NE;var H9=ER;var H8=((In+H9)&4294967295);var H7=la[((H8)>>0)];var H6=iB((H7),8,0)==0;if(H6){Bj=6;break}var H5=uA[((bQ)>>2)];var H4=NE;var H3=ER;var H2=((H4+H3)&4294967295);var H1=la[((H2)>>0)];var H0=iB((H1),8,0);var HN=jR(H0,H5);var HM=ER;var HL=(((HM)+1)&4294967295);ER=HL;Ok=4;Bj=5;continue}var HI=uA[((bQ)>>2)];var HH=yf(((i5)&4294967295),1,2,HI)}}while(0);var HG=IV;var HF=((HG+10)&4294967295);var HE=ll[((HF)>>0)];var Hj=oD((HE),8,0);Le=Hj;var Hi=(((Hj))|0)>31;if(Hi){Bj=8}else{Bj=9}if(Bj==8){Le=31}var Hh=IV;var Hg=((Hh+6)&4294967295);var Hf=xV[((Hg)>>1)];var He=oD((Hf),16,0);var Hd=(He)&2047;var Hc=Le;var Hb=(Hc)<<11;var Ha=(Hd)|(Hb);Ia=Ha;var GO=IV;var GN=((GO)&4294967295);var GM=((GN)&4294967295);var GL=uA[((GM)>>2)];EB=GL;var GK=EB;var GJ=(GK)&64;var GI=(((GJ))|0)!=0;if(GI){Bj=10}else{Bj=18}$bb9$$bb17$14:do{if(Bj==10){la[((hp)>>0)]=1;while(1){var GH=uA[((bI)>>2)];var GG=((p6+GH*4)&4294967295);var GF=uA[((GG)>>2)];GE=GF;var Gj=(((GH)+1)&4294967295);uA[((bI)>>2)]=Gj;var Gi=GE;var Gh=(((Gi))|0)>>8;Oi=Gh;var Gg=GE;var Gf=(Gg)&31;if(Gf==9){Bj=12}else{if(Gf==12){Bj=14}else{if(Gf==13){Bj=13}else{Bj=17}}}if(Bj==12){var Ge=Oi;uA[((y8)>>2)]=Ge}else{if(Bj==14){var Gc=Oi;var Gb=(((Gc))|0)==0;if(Gb){Bj=15}else{Bj=16}if(Bj==15){F9=0}else{if(Bj==16){var Ga=F9;var FO=Oi;var FN=(((FO)+(Ga))&4294967295);F9=FN}}}else{if(Bj==13){var Gd=Oi;uA[((yx)>>2)]=Gd}}}var FM=GE;var FL=(FM)&128;var FK=(((FL))|0)==0;if(FK){Bj=11;continue}else{Bj=18;break $bb9$$bb17$14}}}}while(0);var FJ=NE;var FI=((FJ)&4294967295);var FH=la[((FI)>>0)];var FG=iB((FH),8,0)==0;if(FG){Bj=19}else{Bj=20}$bb18$$bb19$27:do{if(Bj==19){la[((((eh)&4294967295))>>0)]=0;Ek=0}else{if(Bj==20){var FF=IE;var Ft=((FF+8312)&4294967295);var Fs=uA[((Ft)>>2)];var Fr=(((Fs))|0)>0;if(Fr){Bj=21}else{Bj=22}if(Bj==21){var Fq=IE;var Fp=((Fq+8312)&4294967295);var Fo=uA[((Fp)>>2)];var Fn=(((Fo)-1)&4294967295);var Fm=IE;var Fl=((Fm+8312)&4294967295);uA[((Fl)>>2)]=Fn}var Fk=uA[((y8)>>2)];var E8=(Fk)&240;var E7=(((E8))|0)==16;if(E7){Bj=23}else{Bj=25}$bb22$$bb24$33:do{if(Bj==23){var E6=EB;var E5=(E6)&512;var E4=(((E5))|0)==0;if(!(E4)){Bj=25;break $bb22$$bb24$33}var E3=F9;var E2=(((E3)+4)&4294967295);F9=E2}}while(0);var E1=EB;var E0=(E1)&2;var EZ=(((E0))|0)!=0;var ME=uA[((wH)>>2)];var MC=(((ME))|0)>2;var NV=(EZ)&(MC);var Mz=uA[((l2)>>2)];var Mx=(((Mz))|0)<=243;var HZ=(NV)&(Mx);if(HZ){Bj=26}else{Bj=31}if(Bj==26){var Pp=la[((hp)>>0)];var Mv=(Pp)?2:0;var Ms=(((Mv))|0)!=0;if(Ms){Bj=27}else{Bj=28}if(Bj==27){var Mq=uA[((l2)>>2)];var Mo=(((Mq)-1)&4294967295);var Ml=uA[((l2)>>2)];var Mj=(((Ml)-1)&4294967295);var L5=((p6+Mj*4)&4294967295);var L3=uA[((L5)>>2)];var L1=(L3)&-129;var LZ=((p6+Mo*4)&4294967295);uA[((LZ)>>2)]=L1}var LX=uA[((wH)>>2)];Oj=LX;var LV=Oj;var LT=(((LV))|0)==3;var LR=oD((LT),1,0);Q1=LR;var QD=iB((LR),8,0)!=0;if(QD){Bj=29}else{Bj=30}if(Bj==29){Oj=20}var LP=xk[((l2)>>2)];var LN=Oj;var Lz=(((LN)*256)&4294967295);var Lx=(((Lz)+193)&4294967295);var Lv=((p6+LP*4)&4294967295);uA[((Lv)>>2)]=Lx;var Lt=(((LP)+1)&4294967295);uA[((l2)>>2)]=Lt;la[((hp)>>0)]=1}Dt=((eh)&4294967295);var Lq=EB;var Lo=(Lq)&8;var Lm=(((Lo))|0)!=0;if(Lm){Bj=32}else{Bj=47}$bb33$$bb44$46:do{if(Bj==32){var Lj=NE;var Lh=l4(Lj,((jm)&4294967295),3);var Lf=(((Lh))|0)==0;var K1=NE;if(Lf){Bj=33}else{Bj=45}$bb34$$bb42$48:do{if(Bj==33){var KZ=((K1+3)&4294967295);NE=KZ;ER=0;var KX=NE;var KU=la[((KX)>>0)];var KS=iB((KU),8,0);Im=KS;var KQ=NE;var KN=((KQ+1)&4294967295);NE=KN;var KL=Im;var KI=(((KL))|0)==32;var KG=Im;var Ku=(((KG))|0)==0;var BS=(KI)|(Ku);var Kt=ER;if(BS){Ok=33;Bj=34}else{Ok=33;Bj=43}$bb37$$bb39$50:do{if(Bj==43){while(1){var JW=Ok==43?Ji:(Kt);var JV=Im;var JU=m9(JV);var JT=(((JU))&255);var JS=((CB+JW)&4294967295);la[((JS)>>0)]=JT;var JR=ER;var JD=(((JR)+1)&4294967295);ER=JD;var JC=NE;var JB=la[((JC)>>0)];var JA=iB((JB),8,0);Im=JA;var Jz=NE;var Jy=((Jz+1)&4294967295);NE=Jy;var Jx=Im;var Jw=(((Jx))|0)==32;var Jv=Im;var Ju=(((Jv))|0)==0;var HY=(Jw)|(Ju);var Ji=ER;if(HY){Ok=43;Bj=34;break $bb37$$bb39$50}else{Ok=43;Bj=43;continue}}}}while(0);var JE=Ok==33?Kt:(Ji);var Kr=((CB+JE)&4294967295);la[((Kr)>>0)]=0;var Kq=((CB)&4294967295);Dv=Kq;Q9=0;while(1){var J7=uA[((yA)>>2)];var J6=Q9;var J5=(((J6))|0)<(((J7))|0);if(!(J5)){Bj=39;break}var Kp=Q9;var Kn=((ur+Kp*48)&4294967295);var Km=((Kn)&4294967295);var Kl=((Km)&4294967295);var Kk=Dv;var Kj=pt(Kk,Kl);var Ka=(((Kj))|0)==0;var J9=Q9;if(Ka){Bj=36;break}var J8=(((J9)+1)&4294967295);Q9=J8;Bj=38;continue}if(Bj==36){uA[((rC)>>2)]=J9}var J4=uA[((yA)>>2)];var J3=Q9;var J2=(((J3))|0)==(((J4))|0);if(J2){Bj=40}else{Bj=41}if(Bj==40){El=-1}else{if(Bj==41){var J1=Q9;El=J1}}var J0=El;I3=J0;var KJ=I3;ER=KJ;var JZ=ER;var JY=(((JZ))|0)>0;var JX=oD((JY),1,0);QV=JX;var RB=iB((JX),8,0)!=0;if(!(RB)){Bj=46;break $bb34$$bb42$48}var Jg=ER;Es=Jg;uA[((rW)>>2)]=0;var Jf=Es;m1(Jf,0);var Je=uA[((rW)>>2)];var Jd=(((Je)+1)&4294967295);uA[((rW)>>2)]=Jd;var Jc=Es;uA[((mp)>>2)]=Jc;la[((((eh)&4294967295))>>0)]=21;var Jb=ER;var Ja=(((Jb))&255);la[((((eh+1)&4294967295))>>0)]=Ja;la[((((eh+2)&4294967295))>>0)]=0}else{if(Bj==45){var I9=((DQ)&4294967295);var I8=j6(K1,((eh)&4294967295),I9)}}}while(0);Nc=-2147483648}else{if(Bj==47){ER=0;$bb46$69:while(1){var IR=ER;var IQ=NE;var IP=ER;var IO=((IQ+IP)&4294967295);var IN=la[((IO)>>0)];var IL=((OJ+IR)&4294967295);la[((IL)>>0)]=IN;var IJ=((OJ+IR)&4294967295);var II=la[((IJ)>>0)];var A3=iB((II),8,0);Il=A3;var A0=Il;var AY=(((A0))|0)==32;var AW=Il;var AT=(((AW))|0)==0;var OI=(AY)|(AT);if(OI){Bj=51;break $bb46$69}var AR=ER;var AP=(((AR))|0)>159;if(AP){Bj=51;break $bb46$69}Nx=1;QT=1;var IT=ER;var IS=(((IT)+1)&4294967295);ER=IS;Bj=49;continue $bb46$69}Nx=0;QT=0;var AM=ER;QX=AM;var AJ=uA[((xy)>>2)];var AH=NE;var Sg=DW;var Se=IV;var Sc=kY(AJ,AH,Sg,Se);Nc=Sc;var R9=Nc;var R7=(R9)&65536;var R5=(((R7))|0)!=0;if(R5){Bj=52}else{Bj=53}if(Bj==52){var R2=QX;var R0=NE;var RY=((OJ)&4294967295);ns(R0,RY,R2,1,0);var RW=Nc;Ek=RW;Bj=188;break $bb18$$bb19$27}else{if(Bj==53){var RU=Nc;var RS=(RU)&8388608;var RQ=(((RS))|0)!=0;if(RQ){Bj=54}else{Bj=88}$bb56$$bb84$77:do{if(Bj==54){var RO=IV;var RM=((RO+12)&4294967295);var RK=((RM)&4294967295);var RI=uA[((RK)>>2)];var RG=(RI)&8;var RE=(((RG))|0)==0;if(!(RE)){Bj=88;break $bb56$$bb84$77}CX=1;var RC=((Q4)&4294967295);uA[((RC)>>2)]=0;var Ry=IE;var Rw=((Ry)&4294967295);var Ru=((Rw+24)&4294967295);var Rs=((Ru+44)&4294967295);var Ro=uA[((Rs)>>2)];e=Ro;var Rm=NE;C8=Rm;var Rj=C8;var Rh=la[((Rj)>>0)];var Re=iB((Rh),8,0)!=32;var Rb=C8;if(Re){Ok=55;Bj=56}else{Ok=55;Bj=57}$bb58$$bb60$80:do{if(Bj==56){while(1){var Q7=Ok==56?QZ:(Rb);var Q6=((Q7+1)&4294967295);C8=Q6;var Q5=C8;var Q3=la[((Q5)>>0)];var Q0=iB((Q3),8,0)!=32;var QZ=C8;if(Q0){Ok=56;Bj=56;continue}else{Ok=56;Bj=57;break $bb58$$bb60$80}}}}while(0);var RA=Ok==55?Rb:(QZ);var QY=((RA+1)&4294967295);O8=QC;PX=QY;var QW=O8;var QU=PX;var QS=F(QW,QU,0);Em=QS;var QQ=Em;Rp=QQ;var QP=xk[((QC)>>2)];IX=QP;var QO=(((QP))>>>0)<=255;var QN=IX;if(QO){Bj=58}else{Bj=59}$bb_i18$$bb1_i19$84:do{if(Bj==58){var QM=z6(QN);En=QM;Ok=58;Bj=64;break $bb_i18$$bb1_i19$84}else{if(Bj==59){var QL=(((QN))>>>0)>12352;var QK=IX;var QJ=(((QK))>>>0)<=42752;var OZ=(QL)&(QJ);if(OZ){Bj=60}else{Bj=61}if(Bj==60){En=1;Rk=1;Bj=66;break $bb_i18$$bb1_i19$84}else{if(Bj==61){var QG=IX;var QF=(((QG))>>>0)>563;if(QF){Bj=62}else{Bj=63}if(Bj==62){En=0;Rk=0;Bj=65;break $bb_i18$$bb1_i19$84}else{if(Bj==63){var QB=IX;var QA=(((QB)-256)&4294967295);var Qz=((xF+QA)&4294967295);var Qx=ll[((Qz)>>0)];var Qw=oD((Qx),8,0);En=Qw;Ok=63;Bj=64;break $bb_i18$$bb1_i19$84}}}}}}}while(0);$iswalpha_exit$$bb62$$bb73_thread$93:do{if(Bj==64){var Qv=Ok==58?QM:(Qw);Rk=Qv;var Qu=(((Qv))|0)==0;if(Qu){Bj=65;break $iswalpha_exit$$bb62$$bb73_thread$93}else{Bj=66;break $iswalpha_exit$$bb62$$bb73_thread$93}}}while(0);if(Bj==65){CX=0}else{if(Bj==66){var JJ=CX;var Qt=(((JJ))|0)!=0;if(!(Qt)){Bj=88;break $bb56$$bb84$77}var Qs=((Ey)&4294967295);var Qr=oJ(Qs,((eh)&4294967295));var Qg=IV;var Qf=((Qg+12)&4294967295);var Qe=C8;var Qd=((Qe+1)&4294967295);var Qc=uA[((xy)>>2)];var Qa=kY(Qc,Qd,0,Qf);var P9=((Q4)&4294967295);uA[((P9)>>2)]=Qa;var P8=((Q4)&4294967295);var P7=uA[((P8)>>2)];var P6=(P7)&67108864;var PU=(((P6))|0)!=0;if(PU){Bj=68}else{Bj=69}if(Bj==68){CX=0}var PT=e;var PR=(PT)&256;var PP=(((PR))|0)!=0;if(PP){Bj=70}else{Bj=72}$bb66$$bb68$102:do{if(Bj==70){var PO=((Q4)&4294967295);var PN=uA[((PO)>>2)];var PM=(PN)&1048576;var PL=(((PM))|0)==0;if(!(PL)){Bj=72;break $bb66$$bb68$102}CX=0}}while(0);var PK=e;var PJ=(PK)&512;var Pw=(((PJ))|0)!=0;if(Pw){Bj=73}else{Bj=75}$bb69$$bb71$106:do{if(Bj==73){var Pv=IV;var Pu=((Pv+12)&4294967295);var Ps=((Pu)&4294967295);var Po=uA[((Ps)>>2)];var Pn=(Po)&16;var Pm=(((Pn))|0)!=0;if(!(Pm)){Bj=75;break $bb69$$bb71$106}CX=0;Bj=76;break $bb69$$bb71$106}}while(0);$bb73$$bb71$109:do{if(Bj==75){var Rq=CX;var Pl=(((Rq))|0)==0;if(Pl){Bj=76;break $bb73$$bb71$109}else{Bj=77;break $bb73$$bb71$109}}}while(0);if(Bj==76){var Pk=((Ey)&4294967295);var Pj=oJ(((eh)&4294967295),Pk);var BW=CX;var HC=(((BW))|0)!=0;if(!(HC)){Bj=88;break $bb56$$bb84$77}}var HA=C8;la[((HA)>>0)]=45;var Hy=uA[((xy)>>2)];var Hw=NE;var Hu=DW;var Hs=IV;var Hq=kY(Hy,Hw,Hu,Hs);Nc=Hq;var Ho=e;var Hm=(((Ho))|0)<=0;if(Hm){Ok=77;Bj=85}else{Ok=77;Bj=78}if(Bj==78){var Hk=Dt;Pq=Hk;OX=0;var G8=Pq;var G6=ll[((G8)>>0)];var G4=oD((G6),8,0);MH=G4;var G2=MH;var G0=(((G2))|0)!=0;var GY=oD((G0),1,0);IK=GY;var GW=Pq;var GU=((GW+1)&4294967295);Pq=GU;if(G0){Bj=79}else{Bj=82}$bb_i26$$_ZL14CountSyllablesPh_exit$116:do{if(Bj==79){while(1){var GS=MH;var GP=((nm+GS*4)&4294967295);var GC=uA[((GP)>>2)];var GA=((GC+11)&4294967295);var Gy=la[((GA)>>0)];var Gw=iB((Gy),8,0)==2;if(Gw){Bj=81}else{Bj=80}if(Bj==81){var F3=OX;var F1=(((F3)+1)&4294967295);OX=F1}var Gu=Pq;var Gs=ll[((Gu)>>0)];var Gq=oD((Gs),8,0);MH=Gq;var Go=MH;var Gm=(((Go))|0)!=0;var Gk=oD((Gm),1,0);IK=Gk;var F7=Pq;var F5=((F7+1)&4294967295);Pq=F5;var Bk=iB((Gk),8,0)!=0;if(Bk){Bj=79;continue}else{Bj=82;break $bb_i26$$_ZL14CountSyllablesPh_exit$116}}}}while(0);var FZ=OX;Ep=FZ;var FX=Ep;Q2=FX;var BR=Q2;var FV=e;var FT=(FV)&31;var FR=(((BR))|0)<=(((FT))|0);if(FR){Bj=84}else{Bj=83}if(Bj==84){var Rf=Nc;Ok=84}else{if(Bj==83){M9=1;QH=1;var FP=C8;la[((FP)>>0)]=32;var FD=uA[((xy)>>2)];var FC=NE;var FB=DW;var FA=IV;var Fz=kY(FD,FC,FB,FA);Nc=Fz;Bj=88;break $bb56$$bb84$77}}}var Fy=Ok==84?Rf:(Hq);M9=0;QH=0;var Fx=(((Fy))|0)==0;if(Fx){Bj=86}else{Bj=87}if(Bj==86){var Fw=((Q4)&4294967295);var Fv=uA[((Fw)>>2)];Nc=Fv}var Fu=Nc;var Fj=(Fu)|128;Nc=Fj;uA[((k3)>>2)]=1}}}}while(0);var Fi=Dt;var Fh=((Fi)&4294967295);var Ff=la[((Fh)>>0)];var Fe=iB((Ff),8,0)==21;if(Fe){Bj=89}else{Bj=100}$bb85$$bb97$131:do{if(Bj==89){var Fd=QX;var Fc=NE;var Fb=((OJ)&4294967295);ns(Fc,Fb,Fd,1,0);var Fa=Dt;var E9=((Fa+1)&4294967295);IM=E9;var EY=IM;var EX=((EY)&4294967295);var EW=la[((EX)>>0)];var EV=iB((EW),8,0)==0;if(EV){Bj=90}else{Bj=91}if(Bj==90){IM=((v1)&4294967295)}var EU=((D5)&4294967295);var ET=oJ(EU,((n0)&4294967295));var ES=IM;var EQ=wG(ES);Fg=EQ;var EP=(((EQ))|0)>=0;if(EP){Bj=92}else{Bj=95}$bb88$$bb91$136:do{if(Bj==92){var EO=uA[((vD)>>2)];var EA=NE;var Ez=DW;var Ex=IV;var Ew=kY(EO,EA,Ez,Ex);Nc=Ew;var Ev=Dt;var Eu=((Ev)&4294967295);var Et=la[((Eu)>>0)];var Er=iB((Et),8,0)==21;if(Er){Bj=93}else{Bj=94}if(Bj==93){Fg=-1;Bj=95;break $bb88$$bb91$136}else{if(Bj==94){var Rc=Fg;var Eq=(((Rc))|0)<0;if(Eq){Bj=95;break $bb88$$bb91$136}else{Bj=96;break $bb88$$bb91$136}}}}}while(0);if(Bj==95){var Eo=Dt;var D3=((Eo)&4294967295);la[((D3)>>0)]=13;var D2=Dt;var D1=((D2+1)&4294967295);la[((D1)>>0)]=13;var D0=Dt;var DZ=((D0+2)&4294967295);la[((DZ)>>0)]=0}var DY=Dt;var DX=IE;var DV=Fg;var DU=hb(DX,DV,DY);var DT=(((DU))|0)!=0;var DG=oD((DT),1,0);Qy=DG;var PH=iB((DG),8,0)!=0;if(PH){Bj=97}else{Bj=98}if(Bj==97){Fg=-1}else{if(Bj==98){var Ra=Fg;var DF=(((Ra))|0)==-1;if(!(DF)){Bj=100;break $bb85$$bb97$131}}}var DE=((D5)&4294967295);var DC=oJ(((n0)&4294967295),DE);var DB=uA[((k5)>>2)];var DA=((DB+40)&4294967295);var Dz=uA[((DA)>>2)];EK=Dz;uA[((rW)>>2)]=0;var Dy=EK;m1(Dy,0);var Dx=uA[((rW)>>2)];var Dw=(((Dx)+1)&4294967295);uA[((rW)>>2)]=Dw;var OF=EK;uA[((mp)>>2)]=OF;var OD=uA[((k5)>>2)];var OA=((OD+40)&4294967295);var Oy=uA[((OA)>>2)];Fg=Oy}}while(0);var Ow=EB;var Ou=(Ow)&128;var Or=(((Ou))|0)==0;if(Or){Bj=101}else{Bj=111}$bb98$$bb108$149:do{if(Bj==101){var Op=Nc;var On=(Op)&268435456;var Ol=(((On))|0)!=0;if(Ol){Bj=102}else{Bj=104}$bb99$$bb101$151:do{if(Bj==102){var Og=F9;var Oe=(((Og))|0)<=0;if(!(Oe)){Bj=104;break $bb99$$bb101$151}F9=1}}while(0);var Oc=Nc;var Oa=(Oc)&256;var N8=(((Oa))|0)!=0;if(!(N8)){Bj=111;break $bb98$$bb108$149}var N6=EB;var N4=(((N6))|0)==0;if(!(N4)){Bj=111;break $bb98$$bb108$149}var N2=IV;var N0=((N2+-12)&4294967295);var NY=((N0)&4294967295);var NT=uA[((NY)>>2)];var NR=(NT)&512;var NP=(((NR))|0)==0;if(!(NP)){Bj=111;break $bb98$$bb108$149}var NN=IE;var NL=((NN+8312)&4294967295);var NJ=uA[((NL)>>2)];var NH=(((NJ))|0)==0;if(!(NH)){Bj=111;break $bb98$$bb108$149}var NF=F9;var NC=(((NF))|0)<=3;if(NC){Bj=109}else{Bj=110}if(Bj==109){F9=4}var NA=IE;var Nv=((NA+8312)&4294967295);uA[((Nv)>>2)]=3}}while(0);var Nt=uA[((yx)>>2)];var Nr=(((Nt))|0)>2;if(!(Nr)){Bj=114;break $bb33$$bb44$46}var Np=F9;var Nm=(((Np))|0)<=0;if(!(Nm)){Bj=114;break $bb33$$bb44$46}F9=1}}}}}while(0);var Nk=uA[((mT)>>2)];var Ni=((o6+Nk*8)&4294967295);AL=Ni;DD=0;MA=1;LC=0;NX=-1;Na=0;var Ng=Nc;var Ne=(((Ng))|0)<0;if(Ne){Bj=115}else{Bj=117}$bb112$$bb119_preheader$166:do{if(Bj==115){var Nb=Nc;var M8=(Nb)&536870912;var M7=(((M8))|0)==0;if(!(M7)){Bj=117;break $bb112$$bb119_preheader$166}Na=16}}while(0);var M6=F9;var M5=(((M6))|0)>0;var M4=uA[((mT)>>2)];var M3=(((M4))|0)<=995;var OV=(M5)&(M3);if(OV){Ok=117;Bj=118}else{Ok=117;Bj=122}$bb115$$bb121$170:do{if(Bj==118){while(1){var M1=Ok==117?M6:(Lp);var M0=(((M1))|0)>1;var MZ=uA[((mT)>>2)];var MY=((o6+MZ*8)&4294967295);var MU=(((MZ)+1)&4294967295);uA[((mT)>>2)]=MU;if(M0){Bj=119}else{Bj=120}if(Bj==119){Bd=MY;MX=9;var MT=Bd;var MS=((MT)&4294967295);var MR=MX;la[((MS)>>0)]=MR;var MQ=Bd;var MP=((MQ+1)&4294967295);la[((MP)>>0)]=0;var MO=Bd;var MM=((MO+3)&4294967295);la[((MM)>>0)]=0;var Ls=la[((hp)>>0)];var ML=(Ls)?2:0;var MK=(((ML))&65535);var MF=Bd;var MD=((MF+4)&4294967295);uW[((MD)>>1)]=MK;var MB=Bd;var My=((MB+6)&4294967295);uW[((My)>>1)]=0;la[((hp)>>0)]=0;var Mw=F9;var Mu=(((Mw)-2)&4294967295);F9=Mu}else{if(Bj==120){i=MY;Mt=11;var Mr=i;var Mp=((Mr)&4294967295);var Mn=Mt;la[((Mp)>>0)]=Mn;var Mk=i;var L6=((Mk+1)&4294967295);la[((L6)>>0)]=0;var L4=i;var L2=((L4+3)&4294967295);la[((L2)>>0)]=0;var Kv=la[((hp)>>0)];var L0=(Kv)?2:0;var LY=(((L0))&65535);var LW=i;var LU=((LW+4)&4294967295);uW[((LU)>>1)]=LY;var LS=i;var LQ=((LS+6)&4294967295);uW[((LQ)>>1)]=0;la[((hp)>>0)]=0;var LO=F9;var LA=(((LO)-1)&4294967295);F9=LA}}var Ly=IE;var Lw=((Ly+8316)&4294967295);uA[((Lw)>>2)]=0;var Lu=IE;var Lr=((Lu+8320)&4294967295);uA[((Lr)>>2)]=0;var Lp=F9;var Ln=(((Lp))|0)>0;var Ll=uA[((mT)>>2)];var Li=(((Ll))|0)<=995;var OH=(Ln)&(Li);if(OH){Ok=121;Bj=118;continue}else{Ok=121;Bj=122;break $bb115$$bb121$170}}}}while(0);var Lg=uA[((wH)>>2)];var K3=(((Lg))|0)==1;if(K3){Bj=123}else{Bj=128}$bb122$$bb134$178:do{if(Bj==123){var K0=EB;var KY=(K0)&2;var KW=(((KY))|0)!=0;if(!(KW)){Bj=128;break $bb122$$bb134$178}var KT=uA[((mT)>>2)];var KR=((o6+KT*8)&4294967295);var KP=(((KT)+1)&4294967295);uA[((mT)>>2)]=KP;R4=KR;Mi=10;var KM=R4;var KK=((KM)&4294967295);var KH=Mi;la[((KK)>>0)]=KH;var CV=R4;var CT=((CV+1)&4294967295);la[((CT)>>0)]=0;var CR=R4;var CP=((CR+3)&4294967295);la[((CP)>>0)]=0;var Ko=la[((hp)>>0)];var CN=(Ko)?2:0;var CL=(((CN))&65535);var CJ=R4;var CG=((CJ+4)&4294967295);uW[((CG)>>1)]=CL;var CE=R4;var CC=((CE+6)&4294967295);uW[((CC)>>1)]=0;la[((hp)>>0)]=0;var Cz=uA[((mT)>>2)];var Cx=((o6+Cz*8)&4294967295);var Cv=(((Cz)+1)&4294967295);uA[((mT)>>2)]=Cv;Sb=Cx;Mm=18;var Ct=Sb;var Cr=((Ct)&4294967295);var Cp=Mm;la[((Cr)>>0)]=Cp;var Cn=Sb;var Cl=((Cn+1)&4294967295);la[((Cl)>>0)]=0;var Cj=Sb;var Ch=((Cj+3)&4294967295);la[((Ch)>>0)]=0;var Ks=la[((hp)>>0)];var Cd=(Ks)?2:0;var Cb=(((Cd))&65535);var B9=Sb;var B7=((B9+4)&4294967295);uW[((B7)>>1)]=Cb;var B5=Sb;var B3=((B5+6)&4294967295);uW[((B3)>>1)]=0;la[((hp)>>0)]=0;var B0=EB;var BY=(B0)&1;var BV=(((BY))&255);var A8=iB((BV),8,0)!=0;var Ny=(A8)^1;var PI=oD((Ny),1,0);var A5=iB((PI),8,0)!=0;if(A5){Bj=126}else{Bj=125}$bb131$$bb128$181:do{if(Bj==125){var BT=NE;var BP=((BT+1)&4294967295);var BN=la[((BP)>>0)];var BL=iB((BN),8,0);var BJ=kr(BL);var BH=(((BJ))|0)==0;if(BH){Bj=126;break $bb131$$bb128$181}MG=1;Qb=1;var BF=uA[((mT)>>2)];var BD=((o6+BF*8)&4294967295);var BB=(((BF)+1)&4294967295);uA[((mT)>>2)]=BB;AO=BD;MI=10;var Bz=AO;var Bx=((Bz)&4294967295);var Bw=MI;la[((Bx)>>0)]=Bw;var Bv=AO;var Bu=((Bv+1)&4294967295);la[((Bu)>>0)]=0;var Bt=AO;var Bs=((Bt+3)&4294967295);la[((Bs)>>0)]=0;var KO=la[((hp)>>0)];var Br=(KO)?2:0;var Bq=(((Br))&65535);var Bp=AO;var Bo=((Bp+4)&4294967295);uW[((Bo)>>1)]=Bq;var Bn=AO;var Bi=((Bn+6)&4294967295);uW[((Bi)>>1)]=0;la[((hp)>>0)]=0;var Bh=uA[((mT)>>2)];var Bg=((o6+Bh*8)&4294967295);var Bf=(((Bh)+1)&4294967295);uA[((mT)>>2)]=Bf;AV=Bg;MJ=18;var Be=AV;var Bc=((Be)&4294967295);var Bb=MJ;la[((Bc)>>0)]=Bb;var Ba=AV;var A7=((Ba+1)&4294967295);la[((A7)>>0)]=0;var A6=AV;var A4=((A6+3)&4294967295);la[((A4)>>0)]=0;var KV=la[((hp)>>0)];var A1=(KV)?2:0;var AZ=(((A1))&65535);var AX=AV;var AU=((AX+4)&4294967295);uW[((AU)>>1)]=AZ;var AS=AV;var AQ=((AS+6)&4294967295);uW[((AQ)>>1)]=0;la[((hp)>>0)]=0;Bj=128;break $bb122$$bb134$178}}while(0);MG=0;Qb=0}}while(0);var AN=Fg;var AK=(((AN))|0)>=0;if(AK){Bj=129}else{Bj=130}if(Bj==129){var AI=uA[((mT)>>2)];var Sh=((o6+AI*8)&4294967295);A2=Sh;MN=21;var Sf=A2;var Sd=((Sf)&4294967295);var Sa=MN;la[((Sd)>>0)]=Sa;var R8=A2;var R6=((R8+1)&4294967295);la[((R6)>>0)]=0;var R3=A2;var R1=((R3+3)&4294967295);la[((R1)>>0)]=0;var K2=la[((hp)>>0)];var RZ=(K2)?2:0;var RX=(((RZ))&65535);var RV=A2;var RT=((RV+4)&4294967295);uW[((RT)>>1)]=RX;var RR=A2;var RP=((RR+6)&4294967295);uW[((RP)>>1)]=0;la[((hp)>>0)]=0;var RN=uA[((mT)>>2)];var RL=Fg;var RJ=(((RL))&255);var RH=((o6+RN*8)&4294967295);var RF=((RH+3)&4294967295);la[((RF)>>0)]=RJ;var RD=(((RN)+1)&4294967295);uA[((mT)>>2)]=RD}var Rz=EB;var Rx=(Rz)&128;var Rv=(((Rx))|0)!=0;if(Rv){Bj=131}else{Bj=133}$bb137$$bb139$189:do{if(Bj==131){var Rt=Dt;var Rr=ll[((Rt)>>0)];var Rn=oD((Rr),8,0);var Rl=((nm+Rn*4)&4294967295);var Ri=uA[((Rl)>>2)];var Rg=((Ri+11)&4294967295);var Rd=la[((Rg)>>0)];var JP=iB((Rd),8,0)==0;if(!(JP)){Bj=133;break $bb137$$bb139$189}var JO=Dt;var JN=((JO+1)&4294967295);Dt=JN}}while(0);var JM=Dt;var JL=((JM)&4294967295);var JK=la[((JL)>>0)];var JI=iB((JK),8,0)==0;if(JI){Bj=134}else{Bj=136}$bb140$$bb183_preheader$193:do{if(Bj==134){var Pr=la[((hp)>>0)];var JH=(Pr)?2:0;var JG=(((JH))|0)!=0;if(!(JG)){Bj=136;break $bb140$$bb183_preheader$193}var JF=Dt;var Jt=((JF)&4294967295);la[((Jt)>>0)]=23;var Js=Dt;var Jr=((Js+1)&4294967295);la[((Jr)>>0)]=0}}while(0);var Jq=Dt;var Jp=la[((Jq)>>0)];Ot=Jp;var Jo=Ot;var Jn=iB((Jo),8,0)!=0;var Jm=Dt;var Jk=((Jm+1)&4294967295);Dt=Jk;var IU=(Jn)^1;var Jj=uA[((mT)>>2)];var I7=(((Jj))|0)>995;var Kb=(IU)|(I7);if(Kb){Bj=174}else{Bj=137}$bb193$$bb143$197:do{if(Bj==137){$bb143$198:while(1){L8=1;PS=1;var I6=Ot;var I5=iB((I6),8,0)==-1;if(I5){Bj=138}else{Bj=139}$bb183_backedge$$bb144$200:do{if(Bj==139){var IF=Ot;var ID=oD((IF),8,0);var IC=((nm+ID*4)&4294967295);var IB=uA[((IC)>>2)];CH=IB;var IA=Ot;var Iz=iB((IA),8,0)==21;if(Iz){Bj=140}else{Bj=141}if(Bj==140){var Iy=uA[((mT)>>2)];var Ix=((o6+Iy*8)&4294967295);var Ik=((Ix)&4294967295);var Ij=Ot;la[((Ik)>>0)]=Ij;var Ii=uA[((mT)>>2)];var Ih=((o6+Ii*8)&4294967295);var Ig=((Ih+6)&4294967295);uW[((Ig)>>1)]=0;var If=uA[((mT)>>2)];var Pt=la[((hp)>>0)];var Ie=(Pt)?2:0;var Id=(((Ie))&65535);var Ic=((o6+If*8)&4294967295);var Ib=((Ic+4)&4294967295);uW[((Ib)>>1)]=Id;var HX=uA[((mT)>>2)];var HW=Dt;var HV=la[((HW)>>0)];var HU=((o6+HX*8)&4294967295);var HT=((HU+3)&4294967295);la[((HT)>>0)]=HV;var HS=(((HX)+1)&4294967295);uA[((mT)>>2)]=HS;var HR=Dt;var HQ=((HR+1)&4294967295);Dt=HQ}else{if(Bj==141){var HP=CH;var HO=((HP+11)&4294967295);var HD=la[((HO)>>0)];var HB=iB((HD),8,0)==1;if(HB){Bj=142}else{Bj=147}if(Bj==142){var Hz=CH;var Hx=((Hz+8)&4294967295);var Hv=uW[((Hx)>>1)];var Ht=iB((Hv),16,0)==0;if(Ht){Bj=143}else{Bj=144}if(Bj==143){var Hr=CH;var Hp=((Hr+14)&4294967295);var Hn=ll[((Hp)>>0)];var Hl=oD((Hn),8,0);MA=Hl}else{if(Bj==144){var G9=NW;var G7=(((G9))|0)>=0;if(G7){Bj=145}else{Bj=146}if(Bj==145){var G5=NW;var G3=((o6+G5*8)&4294967295);var G1=((G3+3)&4294967295);var GZ=Ot;la[((G1)>>0)]=GZ}else{if(Bj==146){var GX=Ot;var GV=oD((GX),8,0);Du=GV}}}}}else{if(Bj==147){var GT=Ot;var GR=iB((GT),8,0)==20;if(GR){Bj=148}else{Bj=149}if(Bj==148){var GD=uA[((mT)>>2)];var GB=(((GD)-1)&4294967295);NW=GB;var Gz=NW;var Gx=NW;var Gv=((o6+Gx*8)&4294967295);var Gt=((Gv+4)&4294967295);var Gr=uW[((Gt)>>1)];var Gp=(Gr)|4;var Gn=((o6+Gz*8)&4294967295);var Gl=((Gn+4)&4294967295);uW[((Gl)>>1)]=Gp;var F8=NW;var F6=MA;var F4=(((F6))&255);var F2=((o6+F8*8)&4294967295);var F0=((F2+1)&4294967295);la[((F0)>>0)]=F4}else{if(Bj==149){var FY=Ot;var FW=iB((FY),8,0)==12;if(FW){Bj=150}else{Bj=151}if(Bj==150){var FU=uA[((mT)>>2)];var FS=(((FU)-1)&4294967295);var FQ=uA[((mT)>>2)];var Qq=(((FQ)-1)&4294967295);var Qp=((o6+Qq*8)&4294967295);var Qo=((Qp+4)&4294967295);var Qn=uW[((Qo)>>1)];var Qm=(Qn)|8;var Ql=((o6+FS*8)&4294967295);var Qk=((Ql+4)&4294967295);uW[((Qk)>>1)]=Qm}else{if(Bj==151){var Qj=Ot;var Qi=iB((Qj),8,0)==15;if(Qi){Bj=152}else{Bj=153}if(Bj==152){var Qh=Ia;var P5=(((Qh)+1)&4294967295);LC=P5}else{if(Bj==153){var P4=Ot;var P3=iB((P4),8,0)==22;if(P3){Bj=154}else{Bj=156}if(Bj==154){var P2=IE;var P1=((P2)&4294967295);var P0=((P1+24)&4294967295);var PZ=((P0+56)&4294967295);var PY=uA[((PZ)>>2)];var PW=(((PY))|0)!=0;if(!(PW)){Bj=138;break $bb183_backedge$$bb144$200}var PV=Nc;var PG=(PV)|524288;Nc=PG}else{if(Bj==156){var PF=uA[((mT)>>2)];var PE=((o6+PF*8)&4294967295);var PD=((PE)&4294967295);var PC=Ot;la[((PD)>>0)]=PC;var PB=uA[((mT)>>2)];var PA=((o6+PB*8)&4294967295);var Pz=((PA+3)&4294967295);la[((Pz)>>0)]=0;var Py=uA[((mT)>>2)];var Jh=la[((hp)>>0)];var Px=(Jh)?2:0;var Pi=(((Px))&65535);var Ph=Na;var Pg=(((Ph))&65535);var Pf=(Pi)|(Pg);var Pe=((o6+Py*8)&4294967295);var Pd=((Pe+4)&4294967295);uW[((Pd)>>1)]=Pf;la[((hp)>>0)]=0;var Pc=uA[((mT)>>2)];var Pb=LC;var Pa=(((Pb))&65535);var O9=((o6+Pc*8)&4294967295);var O7=((O9+6)&4294967295);uW[((O7)>>1)]=Pa;LC=0;var O6=CH;var O5=((O6+11)&4294967295);var O4=la[((O5)>>0)];var O3=iB((O4),8,0)==2;if(O3){Bj=157}else{Bj=166}$bb164$$bb174$227:do{if(Bj==157){var O2=MA;DD=O2;MA=1;var O1=DD;var O0=(((O1))|0)>3;if(O0){Bj=158}else{Bj=159}if(Bj==158){la[((gO)>>0)]=1}var OY=NW;var OW=(((OY))|0)>=0;if(OW){Bj=160}else{Bj=162}$bb167$$bb169$232:do{if(Bj==160){var OT=uA[((mT)>>2)];var OS=(((OT)-1)&4294967295);var OR=NW;var OQ=(((OS))|0)!=(((OR))|0);if(!(OQ)){Bj=162;break $bb167$$bb169$232}var OP=uA[((mT)>>2)];var OO=(((OP)-1)&4294967295);var ON=DD;var OM=(((ON))&255);var OL=((o6+OO*8)&4294967295);var OK=((OL+1)&4294967295);la[((OK)>>0)]=OM}}while(0);var OG=uA[((mT)>>2)];var OE=uA[((mT)>>2)];var OC=((o6+OE*8)&4294967295);var Oz=((OC+4)&4294967295);var Ox=uW[((Oz)>>1)];var Ov=(Ox)|4;var Os=((o6+OG*8)&4294967295);var Oq=((Os+4)&4294967295);uW[((Oq)>>1)]=Ov;var Oo=uA[((mT)>>2)];NW=Oo;var Om=DD;var Oh=NX;var Of=(((Om))|0)>(((Oh))|0);if(Of){Bj=163}else{Bj=164}if(Bj==163){var Od=DD;NX=Od;var Ob=uA[((mT)>>2)];B1=Ob}var N9=Du;var N7=(((N9))|0)!=0;if(!(N7)){Bj=173;break $bb164$$bb174$227}var N5=uA[((mT)>>2)];var N3=Du;var N1=(((N3))&255);var NZ=((o6+N5*8)&4294967295);var NU=((NZ+3)&4294967295);la[((NU)>>0)]=N1;Du=0}else{if(Bj==166){var NS=Nz;var NQ=(((NS))|0)!=0;if(!(NQ)){Bj=173;break $bb164$$bb174$227}var NO=IE;var NM=((NO)&4294967295);var NK=((NM+24)&4294967295);var NI=((NK+56)&4294967295);var NG=uA[((NI)>>2)];var ND=(((NG))|0)!=0;if(!(ND)){Bj=173;break $bb164$$bb174$227}var NB=IE;var Nw=((NB+8320)&4294967295);var Nu=uA[((Nw)>>2)];var Ns=(Nu)&524288;var Nq=(((Ns))|0)==0;if(Nq){Bj=170}else{Bj=169}$bb179$$bb177$243:do{if(Bj==169){var No=IE;var Nl=((No)&4294967295);var Nj=((Nl+24)&4294967295);var Nh=((Nj+56)&4294967295);var Nf=uA[((Nh)>>2)];var Nd=(Nf)&1;var EN=(((Nd))&255);var QR=iB((EN),8,0)!=0;if(QR){Bj=172;break $bb179$$bb177$243}else{Bj=170;break $bb179$$bb177$243}}}while(0);if(Bj==170){var EL=IE;var EJ=((EL+8316)&4294967295);var EI=uA[((EJ)>>2)];var EH=(((EI))|0)==0;if(EH){Bj=173;break $bb164$$bb174$227}var EG=IE;var EF=((EG)&4294967295);var EE=((EF+24)&4294967295);var ED=((EE+56)&4294967295);var EC=uA[((ED)>>2)];var Ei=(EC)&2;var Eg=(((Ei))|0)!=0;if(!(Eg)){Bj=173;break $bb164$$bb174$227}}var Ee=uA[((mT)>>2)];var Ec=uA[((mT)>>2)];var Ea=((o6+Ec*8)&4294967295);var D9=((Ea+4)&4294967295);var D8=uW[((D9)>>1)];var D7=(D8)|8;var D6=((o6+Ee*8)&4294967295);var D4=((D6+4)&4294967295);uW[((D4)>>1)]=D7}}}while(0);var DS=uA[((mT)>>2)];var DR=DD;var DP=(((DR))&255);var DO=((o6+DS*8)&4294967295);var DN=((DO+1)&4294967295);la[((DN)>>0)]=DP;var DM=uA[((mT)>>2)];var DL=(((DM)+1)&4294967295);uA[((mT)>>2)]=DL;Nz=0}}}}}}}}}}}}}}while(0);var I4=Dt;var I2=la[((I4)>>0)];Ot=I2;var I1=Ot;var I0=iB((I1),8,0)!=0;var IZ=oD((I0),1,0);var IY=Dt;var IW=((IY+1)&4294967295);Dt=IW;var QI=iB((IZ),8,0)!=0;var PQ=(QI)^1;var JQ=oD((PQ),1,0);var QE=iB((JQ),8,0)!=0;var IH=uA[((mT)>>2)];var IG=(((IH))|0)>995;var OB=(QE)|(IG);if(OB){Bj=174;break $bb193$$bb143$197}else{Bj=137;continue $bb143$198}}}}while(0);L8=0;PS=0;var DK=EB;var DJ=(DK)&131072;var DI=(((DJ))|0)!=0;if(DI){Bj=175}else{Bj=176}if(Bj==175){var Ds=uA[((mT)>>2)];var Dr=((o6+Ds*8)&4294967295);var Dq=(((Ds)+1)&4294967295);uA[((mT)>>2)]=Dq;A9=Dr;MW=27;var Dp=A9;var Do=((Dp)&4294967295);var Dn=MW;la[((Do)>>0)]=Dn;var Dm=A9;var Dl=((Dm+1)&4294967295);la[((Dl)>>0)]=0;var Dk=A9;var Dj=((Dk+3)&4294967295);la[((Dj)>>0)]=0;var Lk=la[((hp)>>0)];var Di=(Lk)?2:0;var Dh=(((Di))&65535);var Dg=A9;var Df=((Dg+4)&4294967295);uW[((Df)>>1)]=Dh;var De=A9;var Dd=((De+6)&4294967295);uW[((Dd)>>1)]=0;la[((hp)>>0)]=0}var Dc=EB;var Db=(Dc)&128;var Da=(((Db))|0)==0;if(Da){Bj=177}else{Bj=178}if(Bj==177){var C9=Ia;var C7=(((C9))&65535);var C6=AL;var C5=((C6+6)&4294967295);uW[((C5)>>1)]=C7}var C4=IE;var C3=((C4+8316)&4294967295);uA[((C3)>>2)]=0;var C2=DD;var C1=(((C2))|0)>3;if(C1){Bj=179}else{Bj=181}$bb198$$bb200$258:do{if(Bj==179){var C0=uA[((mT)>>2)];var CZ=(((C0)-1)&4294967295);var CY=((o6+CZ*8)&4294967295);var CW=((CY)&4294967295);var CU=ll[((CW)>>0)];var CS=oD((CU),8,0);var CQ=((nm+CS*4)&4294967295);var CO=uA[((CQ)>>2)];var CM=((CO+11)&4294967295);var CK=la[((CM)>>0)];var CI=iB((CK),8,0)==2;if(!(CI)){Bj=181;break $bb198$$bb200$258}var CF=IE;var CD=((CF+8316)&4294967295);uA[((CD)>>2)]=1}}while(0);var CA=Fg;var Cy=(((CA))|0)>=0;if(Cy){Bj=182}else{Bj=183}if(Bj==182){var Cw=((D5)&4294967295);var Cu=oJ(((n0)&4294967295),Cw);var Cs=uA[((k5)>>2)];var Cq=((Cs+40)&4294967295);var Co=uA[((Cq)>>2)];EM=Co;uA[((rW)>>2)]=0;var Cm=EM;m1(Cm,0);var Ck=uA[((rW)>>2)];var Ci=(((Ck)+1)&4294967295);uA[((rW)>>2)]=Ci;var Ce=EM;uA[((mp)>>2)]=Ce;var Cc=uA[((mT)>>2)];var Ca=((o6+Cc*8)&4294967295);Bm=Ca;M2=21;var B8=Bm;var B6=((B8)&4294967295);var B4=M2;la[((B6)>>0)]=B4;var B2=Bm;var BZ=((B2+1)&4294967295);la[((BZ)>>0)]=0;var BX=Bm;var BU=((BX+3)&4294967295);la[((BU)>>0)]=0;var LB=la[((hp)>>0)];var BQ=(LB)?2:0;var BO=(((BQ))&65535);var BM=Bm;var BK=((BM+4)&4294967295);uW[((BK)>>1)]=BO;var BI=Bm;var BG=((BI+6)&4294967295);uW[((BG)>>1)]=0;la[((hp)>>0)]=0;var BE=uA[((mT)>>2)];var BC=uA[((k5)>>2)];var BA=((BC+40)&4294967295);var By=uA[((BA)>>2)];var Mh=(((By))&255);var Mg=((o6+BE*8)&4294967295);var Mf=((Mg+3)&4294967295);la[((Mf)>>0)]=Mh;var Me=(((BE)+1)&4294967295);uA[((mT)>>2)]=Me}var Md=Oj;var Mc=(((Md))|0)>0;if(Mc){Bj=184}else{Bj=185}if(Bj==184){var Mb=uA[((l2)>>2)];var Ma=Oj;var L9=(((Ma)*256)&4294967295);var L7=(((L9)+225)&4294967295);var LM=((p6+Mb*4)&4294967295);uA[((LM)>>2)]=L7;var LL=(((Mb)+1)&4294967295);uA[((l2)>>2)]=LL;var LK=uA[((mT)>>2)];var LJ=((o6+LK*8)&4294967295);DH=LJ;Cf=10;var LI=DH;var LH=((LI)&4294967295);var LG=Cf;la[((LH)>>0)]=LG;var LF=DH;var LE=((LF+1)&4294967295);la[((LE)>>0)]=0;var LD=DH;var Ld=((LD+3)&4294967295);la[((Ld)>>0)]=0;var OU=la[((hp)>>0)];var Lc=(OU)?2:0;var Lb=(((Lc))&65535);var La=DH;var K9=((La+4)&4294967295);uW[((K9)>>1)]=Lb;var K8=DH;var K7=((K8+6)&4294967295);uW[((K7)>>1)]=0;la[((hp)>>0)]=0;var K6=uA[((mT)>>2)];var K5=((o6+K6*8)&4294967295);var K4=((K5+4)&4294967295);uW[((K4)>>1)]=2;var KF=(((K6)+1)&4294967295);uA[((mT)>>2)]=KF}var KE=Nc;var KD=(KE)&4096;var KC=(((KD))|0)!=0;if(KC){Bj=186}else{Bj=187}if(Bj==186){var KB=B1;var KA=B1;var Kz=((o6+KA*8)&4294967295);var Ky=((Kz+4)&4294967295);var Kx=uW[((Ky)>>1)];var Kw=(Kx)|64;var Ki=((o6+KB*8)&4294967295);var Kh=((Ki+4)&4294967295);uW[((Kh)>>1)]=Kw}var Kg=IE;var Kf=((Kg+8320)&4294967295);var Ke=Nc;uA[((Kf)>>2)]=Ke;var Kd=Nc;Ek=Kd}}}while(0);var Kc=Ek;MV=Kc;var FE=MV;vp=Cg;return FE;return null}function z9(AM){var A0;var AQ;var AH;var AR;var AT;var A2;var AP;AT=AM;var AO=AT;var AN=(((AO))|0)==0;if(AN){A0=1}else{A0=2}if(A0==1){AP=0}else{if(A0==2){var AL=AT;var AK=(((AL))>>>0)>9471;var AJ=AT;var AI=(((AJ))>>>0)<=9631;var AV=(AK)&(AI);if(AV){A0=3}else{A0=4}if(A0==3){AP=1}else{if(A0==4){var i=AT;AQ=i;var e=AQ;var A1=(((e))>>>0)<=255;if(A1){A0=5}else{A0=6}if(A0==5){var AZ=AQ;var AY=xE(AZ);AR=AY}else{if(A0==6){AR=0}}var AX=AR;AH=AX;var AS=AH;AP=AS}}}}var AW=AP;A2=AW;var AU=A2;return AU;return null}function uw(af7,M6,abO,Bd,FU){var T8=vp;vp+=6504;n1(T8,0,6504);var U0;var agn=null;var Mv;var N2;var agY;var N1;var YI;var agW;var Oo;var YS;var agV;var OK;var Y7;var agU;var O6;var Zi;var agT;var O7;var ZB;var agS;var Ps;var ZT;var agR;var Nk;var PE;var agQ;var PD;var aac;var agP;var PS;var aax;var agO;var Vj;var Qb;var aaR;var Fk;var Tc;var T3;var U5;var Fi;var U1;var acA;var Fh;var Vi;var aba;var acE;var Fg;var abN;var VE;var acS;var Ff;var T7;var V3;var Fe;var V2;var ac9;var Fd;var Un;var WN;var Fc;var WM;var adJ;var Fb;var WO;var abJ;var adT;var Fa;var Xa;var aeh;var E6;var Xw;var aeN;var Dx;var Xz;var E5;var ajk;var XQ;var ae3;var E4;var XV;var ae9;var E3;var abT;var ag4;var Jp;var abX;var E2;var alg;var abW;var ahb;var E1;var abY;var ahk;var E0;var ab2;var ahv;var KB;var afk;var EZ;var GT;var af0;var ab4;var ahP;var EX;var af3;var ab6;var aic;var EW;var ab8;var ait;var ES;var ab9;var aiI;var ER;var acb;var aiX;var EQ;var ace;var aji;var EP;var Cz;var acq;var ajw;var EO;var Mt;var CM;var EM;var EY;var aku;var EL;var abL;var SB;var EK;var Mx;var GD;var EJ;var abU;var OJ;var Bv;var Ms;var EH;var V4;var Bp;var DM;var PZ;var H0;var EF;var akD;var ajD;var Fj;var ZE;var HJ;var afZ;var Mc;var ac0;var amY;var EE;var aiQ;var akp;var abK;var G0;var akr;var Md;var K8;var CZ;var aiY;var ED;var ab3;var adc;var EC;var akx;var S1;var alE;var EB;var Mz;var Da;var Ez;var adY;var agl;var alD;var Fx;var Tn;var NE;var aky;var Tl;var Uk;var al0;var afW;var Ey;var ab0;var R7;var akS;var A1;var abI;var UT;var ajS=T8;var akz;var Ex;var FS;var akA;var Ew;var FT;var akB;var Ev;var F5;var akC;var Et;var add;var akl;var afT;var Es;var Kr;var akE;var Sz;var Er;var M7;var afF;var agX;var Ul;var TD;var acd;var Gg;var ab1;var akF;var Eq;var Gh;var Tb;var akG;var Ep;var GB;var akR;var Eo;var akT;var En;var abS;var PR;var Em;var Ha;var acf;var UA;var Nj;var af5;var Wt;var amv;var OL;var On;var af1;var Ec;var af4;var El;var EA;var af8;var EN;var aga;var EV;var akh;var Lk;var LD;var Ma;var akm;var Mn;var akn;var Mp;var Mq;var Mr;var akq;var Mu;var akt;var Mw;var akv;var My;var Co;var Sy;var CA;var SX;var S6;var Tj;var Tw;var Db;var TC;var TK;var Dw;var T0;var T2;var Dy;var T4;var DV;var T5;var JM;var aaK;var aaL;var aa5;var abl;var Ek;var ahn;var agv;var ajo=T8+4;var U4=T8+8;var VF;var Um;var akg=T8+12;var age=T8+16;var afX;var af6;var ab7;var agc=T8+20;var Be;var ako=T8+24;var acr;var T6;var ajT;var akj;var Xx;var BH;var aaM;var E8;var KS;var SC;var afU;var Jz;var i;var I2;var abQ;var agD;var agp;var agr;var agq;var abq;var V8;var ak4=T8+28;var agg=T8+32;var alC=T8+1440;var Za;var Lu=T8+5040;var afG;var SA;var ab5=T8+5740;var EG;var MB=T8+5744;var agj;var aeD=T8+5748;var agi;var agh;var agk;var akf=T8+5752;var Eu=T8+5904;var agm;Nj=af7;af5=M6;Wt=abO;amv=Bd;OL=FU;uA[((U4)>>2)]=0;VF=0;Um=0;uA[((age)>>2)]=32;af6=0;ab7=0;uA[((ako)>>2)]=0;T6=0;ajT=0;akj=1;aaM=0;E8=0;afU=0;Jz=0;i=0;I2=0;abQ=0;uA[((ak4)>>2)]=0;Za=0;var Ej=Nj;var Eh=(Ej)==0;if(Eh){U0=1}else{U0=2}$bb$$bb1$2:do{if(U0==1){Ek=0}else{if(U0==2){var Eg=Wt;uA[((a2)>>2)]=Eg;var Ef=Wt;var Ee=Ef;uA[((vW)>>2)]=Ee;uA[((l2)>>2)]=0;uA[((bI)>>2)]=0;uA[((hX)>>2)]=0;la[((gO)>>0)]=0;var Ed=uA[((dT)>>2)];uA[((cg)>>2)]=Ed;var Eb=uA[((cg)>>2)];var Ea=(((Eb))|0)<0;var D9=oD((Ea),1,0);abl=D9;var D8=abl;var aao=iB((D8),8,0)!=0;if(aao){U0=3}else{U0=4}if(U0==3){uA[((cg)>>2)]=0}var D7=uA[((vC)>>2)];var D6=(((D7)+1)&4294967295);uA[((ue)>>2)]=D6;ahn=0;$bb4$8:while(1){var D5=ahn;var D4=((agg+D5*2)&4294967295);uW[((D4)>>1)]=0;var D3=ahn;var D2=(((D3)+1)&4294967295);ahn=D2;var D1=(((D2))|0)<=699;if(D1){U0=5;continue $bb4$8}else{U0=6;break $bb4$8}}var D0=Nj;var DZ=af5;var DY=((agg)&4294967295);var DX=qq(D0,DZ,((eD)&4294967295),DY,ak4,700,ab5,((vH)&4294967295));afG=DX;var DT=uA[((bQ)>>2)];var DS=(DT)!=0;if(DS){U0=7}else{U0=11}$bb7$$bb12$11:do{if(U0==7){var DR=uA[((s1)>>2)];var DQ=(DR)&4;var DP=(((DQ))|0)!=0;if(!(DP)){U0=11;break $bb7$$bb12$11}var DO=uA[((bQ)>>2)];var DN=afG;var DL=Am(DO,((q8)&4294967295),DN);agp=((eD)&4294967295);var DK=agp;var DJ=la[((DK)>>0)];var DI=iB((DJ),8,0)!=0;var DH=uA[((bQ)>>2)];if(DI){agn=8;U0=9}else{agn=8;U0=10}$bb9$$bb11$14:do{if(U0==9){while(1){var DG=agn==9?Yn:(DH);var DF=agp;var DE=la[((DF)>>0)];var DD=iB((DE),8,0);var DC=jR(DD,DG);var DB=agp;var DA=((DB+1)&4294967295);agp=DA;var Dz=agp;var Yr=la[((Dz)>>0)];var Yp=iB((Yr),8,0)!=0;var Yn=uA[((bQ)>>2)];if(Yp){agn=9;U0=9;continue}else{agn=9;U0=10;break $bb9$$bb11$14}}}}while(0);var BS=agn==8?DH:(Yn);var Ym=yf(((yz)&4294967295),1,10,BS);var Yl=uA[((bQ)>>2)];var Yk=sh(Yl)}}while(0);agp=((eD)&4294967295);var Yj=uA[((ak4)>>2)];var Yi=(((Yj)+1)&4294967295);var Yh=((agg+Yi*2)&4294967295);uW[((Yh)>>1)]=0;var Yg=uA[((ak4)>>2)];var X7=(((Yg)+2)&4294967295);var X5=((agg+X7*2)&4294967295);uW[((X5)>>1)]=32767;var X3=uA[((ak4)>>2)];var X2=(((X3)+3)&4294967295);var X1=((agg+X2*2)&4294967295);uW[((X1)>>1)]=0;var X0=afG;var XZ=(X0)&4095;var XY=(((XZ)*10)&4294967295);acr=XY;var XX=afG;var XW=(((XX))|0)>>12;var XL=(XW)&7;SA=XL;var XJ=uA[((ab5)>>2)];var XH=(((XJ))|0)!=0;if(XH){U0=12}else{U0=13}if(U0==12){var XG=uA[((ab5)>>2)];SA=XG}agp=((eD)&4294967295);$bb18$22:while(1){var Xn=agp;var Xm=la[((Xn)>>0)];var Xl=iB((Xm),8,0)!=0;if(!(Xl)){U0=21;break $bb18$22}var XF=agp;var XE=la[((XF)>>0)];var XD=iB((XE),8,0);abS=XD;var XC=abS;var XB=(XC)&255;UA=XB;var XA=UA;var Xv=(((XA))|0)==0;if(Xv){U0=16}else{U0=15}$bb4_i$$bb_i$25:do{if(U0==15){var Xu=abS;var Xt=(((Xu))>>>0)>32;if(Xt){U0=16;break $bb4_i$$bb_i$25}Ha=0;acf=0;Em=1;U0=18;break $bb4_i$$bb_i$25}}while(0);if(U0==16){Ha=1;acf=1;Em=0}var Xs=Em;PR=Xs;var TP=PR;var Xr=(((TP))|0)==0;var Xq=oD((Xr),1,0);aa5=Xq;var Xy=iB((Xq),8,0)!=0;if(Xy){U0=21;break $bb18$22}var Xp=agp;var Xo=((Xp+1)&4294967295);agp=Xo;U0=20;continue $bb18$22}var Xk=agp;var Xj=la[((Xk)>>0)];var Xi=iB((Xj),8,0)==0;if(Xi){U0=22}else{U0=25}if(U0==22){var Xh=uA[((aE)>>2)];var Xg=acr;var Xf=(((Xg)-(Xh))&4294967295);acr=Xf;var Xd=acr;var Xc=(((Xd))|0)<0;if(Xc){U0=23}else{U0=24}if(U0==23){acr=0}var Xb=afG;var W5=(Xb)&-524289;afG=W5;var W3=uA[((aE)>>2)];var W1=acr;var WZ=(((W1)+(W3))&4294967295);uA[((aE)>>2)]=WZ}else{if(U0==25){var WX=acr;uA[((aE)>>2)]=WX}}var WV=Nj;var WT=((WV+8324)&4294967295);var WR=afG;uA[((WT)>>2)]=WR;var WQ=uA[((lc)>>2)];var WP=(((WQ))|0)!=0;if(WP){U0=27}else{U0=30}$bb25$$bb28$40:do{if(U0==27){var WI=uA[((g4)>>2)];var WG=(((WI)+1)&4294967295);uA[((g4)>>2)]=WG;var WE=uA[((sW)>>2)];var WC=(((WE))|0)>0;if(!(WC)){U0=30;break $bb25$$bb28$40}var WA=uA[((sW)>>2)];var Wy=(((WA)-1)&4294967295);uA[((sW)>>2)]=Wy;var Ww=uA[((sW)>>2)];var Wu=(((Ww))|0)==0;if(!(Wu)){U0=30;break $bb25$$bb28$40}uA[((mo)>>2)]=0}}while(0);ud(((o6)&4294967295),0,8,1,0);la[((((o6)&4294967295))>>0)]=10;uA[((mT)>>2)]=1;var Ws=Nj;var Wr=((Ws+8288)&4294967295);uA[((Wr)>>2)]=0;var Wn=Nj;var Wl=((Wn+8312)&4294967295);uA[((Wl)>>2)]=0;var Wj=Nj;var Wh=((Wj+8272)&4294967295);uA[((Wh)>>2)]=0;var Wf=Nj;var Wd=((Wf+8284)&4294967295);uA[((Wd)>>2)]=0;var Wb=Nj;var V9=((Wb+8276)&4294967295);uA[((V9)>>2)]=0;var V7=Nj;var V5=((V7+8280)&4294967295);uA[((V5)>>2)]=0;var VY=Nj;var VW=((VY+652)&4294967295);uA[((VW)>>2)]=0;var VU=Nj;var VS=((VU+8316)&4294967295);uA[((VS)>>2)]=0;var VQ=Nj;var VO=((VQ+8320)&4294967295);uA[((VO)>>2)]=0;Za=0;BH=0;KS=0;SC=0;var VL=((Lu)&4294967295);la[((VL)>>0)]=0;var VJ=((Lu+1)&4294967295);la[((VJ)>>0)]=32;var VI=((Lu+2)&4294967295);la[((VI)>>0)]=32;ahn=3;uA[((akg)>>2)]=32;var VG=ahn;var VA=(((VG))&65535);var Vy=((alC)&4294967295);var Vw=((Vy+4)&4294967295);uW[((Vw)>>1)]=VA;var Vu=((alC)&4294967295);var Vs=((Vu)&4294967295);uA[((Vs)>>2)]=0;Xx=0;agr=0;var Vq=agr;var Vo=((agg+Vq*2)&4294967295);var Vm=uW[((Vo)>>1)];var Vl=iB((Vm),16,0)<=0;var Vk=agr;if(Vl){agn=30;U0=31}else{agn=30;U0=32}$bb29$$bb31$45:do{if(U0==31){while(1){var QN=agn==31?QE:(Vk);var QL=(((QN)+1)&4294967295);agr=QL;var QJ=agr;var QH=((agg+QJ*2)&4294967295);var QG=uW[((QH)>>1)];var QF=iB((QG),16,0)<=0;var QE=agr;if(QF){agn=31;U0=31;continue}else{agn=31;U0=32;break $bb29$$bb31$45}}}}while(0);var BV=agn==30?Vk:(QE);var QD=((agg+BV*2)&4294967295);var QC=uW[((QD)>>1)];var QB=((alC)&4294967295);var Qs=((QB+6)&4294967295);uW[((Qs)>>1)]=QC;agq=0;var Qq=agr;var Qo=((agg+Qq*2)&4294967295);var Qm=uW[((Qo)>>1)];var Ql=iB((Qm),16,0)!=0;if(Ql){U0=33}else{U0=36}$bb32$$bb36$49:do{if(U0==33){while(1){var Qk=agr;var Qj=((agg+Qk*2)&4294967295);var Qi=uW[((Qj)>>1)];var Qh=iB((Qi),16,0)!=-1;var Qg=oD((Qh),1,0);aaL=Qg;var P7=agr;var P5=(((P7)+1)&4294967295);agr=P5;var W9=iB((Qg),8,0)!=0;if(W9){U0=35}else{U0=34}if(U0==35){var PX=agq;var PW=(((PX)+1)&4294967295);agq=PW}var P3=agr;var P1=((agg+P3*2)&4294967295);var P0=uW[((P1)>>1)];var PY=iB((P0),16,0)!=0;if(PY){U0=33;continue}else{U0=36;break $bb32$$bb36$49}}}}while(0);var PV=agq;var PU=(((PV))&255);var PQ=((alC)&4294967295);var PP=((PQ+10)&4294967295);la[((PP)>>0)]=PU;$bb324$56:while(1){var ahF=Xx;var ahD=(((ahF))|0)!=0;if(ahD){U0=471;break $bb324$56}var ahB=ahn;var ahy=(((ahB))|0)<=699;var ahx=uA[((mT)>>2)];var ahw=(((ahx))|0)<=995;var MO=(ahy)&(ahw);if(!(MO)){U0=471;break $bb324$56}var PO=uA[((age)>>2)];afX=PO;var PN=ahn;var PM=(((PN)-1)&4294967295);var PL=((Lu+PM)&4294967295);var PK=F(age,PL,1);var PJ=Nj;var PI=((PJ)&4294967295);var PH=((PI+250)&4294967295);var PC=la[((PH)>>0)];var PB=iB((PC),8,0)==0;if(PB){U0=41}else{U0=38}$bb42$$bb38$60:do{if(U0==38){var PA=uA[((age)>>2)];GB=PA;var Pz=GB;var Py=(((Pz))>>>0)>47;var Px=GB;var Pw=(((Px))>>>0)<=57;var Cn=(Py)&(Pw);if(Cn){U0=40}else{U0=39}if(U0==40){Eo=1;akR=1;var Pv=afX;var Pu=kr(Pv);var Pt=(((Pu))|0)==0;if(Pt){U0=41;break $bb42$$bb38$60}JM=1;aaK=1;uA[((age)>>2)]=97;U0=43;break $bb42$$bb38$60}else{if(U0==39){Eo=0;akR=0;U0=41;break $bb42$$bb38$60}}}}while(0);if(U0==41){JM=0;aaK=0}var Pp=ab7;var Pn=(((Pp))|0)!=0;if(Pn){U0=44}else{U0=45}$bb46$$bb47$69:do{if(U0==44){var Pl=ab7;uA[((akg)>>2)]=Pl;ab7=0}else{if(U0==45){var Pj=uA[((U4)>>2)];var Ph=(((Pj))|0)!=0;if(!(Ph)){U0=47;break $bb46$$bb47$69}var Pf=uA[((akg)>>2)];af6=Pf;var Pd=uA[((U4)>>2)];var Pb=(((Pd)-1)&4294967295);var O9=((eD+Pb)&4294967295);var O8=F(akg,O9,1)}}}while(0);var O3=uA[((U4)>>2)];VF=O3;var O1=uA[((ako)>>2)];var OZ=(((O1))|0)!=0;if(OZ){U0=48}else{U0=49}if(U0==48){var OX=uA[((ako)>>2)];agv=OX;uA[((ako)>>2)]=0}else{if(U0==49){var OV=uA[((U4)>>2)];var OT=((eD+OV)&4294967295);Gh=ajo;Tb=OT;var OR=Gh;var OP=Tb;var ON=F(OR,OP,0);Ep=ON;var OM=Ep;akG=OM;var Qv=akG;var OG=uA[((U4)>>2)];var OE=(((OG)+(Qv))&4294967295);uA[((U4)>>2)]=OE;var OC=uA[((ajo)>>2)];agv=OC}}var OA=uA[((U4)>>2)];var Oy=((eD+OA)&4294967295);Gg=agc;ab1=Oy;var Ow=Gg;var Ou=ab1;var Os=F(Ow,Ou,0);Eq=Os;var Oq=Eq;akF=Oq;var DW=akF;Be=DW;var Op=agv;if(Op==0){U0=51}else{if(Op==1){U0=53}else{U0=52}}$bb55$$bb54_thread$$bb56$78:do{if(U0==51){Xx=1;agv=32;U0=52;break $bb55$$bb54_thread$$bb56$78}}while(0);$bb55$$bb56$80:do{if(U0==52){var Ok=la[((ax)>>0)];var Oi=iB((Ok),8,0);var Og=agv;var Oe=(((Oi))|0)==(((Og))|0);if(Oe){U0=53;break $bb55$$bb56$80}else{U0=79;break $bb55$$bb56$80}}}while(0);if(U0==53){var Oc=uA[((U4)>>2)];var Oa=(((Oc)-1)&4294967295);EG=Oa;var N8=uA[((akg)>>2)];var N6=(((N8))|0)!=32;if(N6){U0=54}else{U0=55}if(U0==54){agv=32;var N4=agv;ab7=N4;var N3=uA[((U4)>>2)];var NY=(((N3)-1)&4294967295);uA[((U4)>>2)]=NY}else{if(U0==55){Kr=U4;M7=((gH)&4294967295);afF=-1;agX=0;var NW=Kr;var NU=uA[((NW)>>2)];var NS=((eD+NU)&4294967295);var NQ=la[((NS)>>0)];Ul=NQ;var NO=Ul;var NM=iB((NO),8,0)==43;if(NM){U0=56}else{U0=57}$bb_i39$$bb1_i40$87:do{if(U0==56){agX=64;var NK=Kr;var NI=uA[((NK)>>2)];var NH=(((NI)+1)&4294967295);var Jg=Kr;uA[((Jg)>>2)]=NH}else{if(U0==57){var Je=Ul;var Jc=iB((Je),8,0)==45;if(!(Jc)){U0=59;break $bb_i39$$bb1_i40$87}agX=96;var Ja=Kr;var I9=uA[((Ja)>>2)];var I8=(((I9)+1)&4294967295);var I7=Kr;uA[((I7)>>2)]=I8}}}while(0);var I5=Kr;var I4=uA[((I5)>>2)];var I3=((eD+I4)&4294967295);var IU=la[((I3)>>0)];var IS=iB((IU),8,0);var IQ=(((IS)-48)&4294967295);var IO=(((IQ))>>>0)<=9;if(IO){U0=60}else{U0=62}$bb4_i43$$bb7_i$92:do{if(U0==60){var IN=Kr;var IM=uA[((IN)>>2)];var IL=((eD+IM)&4294967295);var IK=wU(IL);afF=IK;var IJ=Kr;var II=uA[((IJ)>>2)];var Iz=((eD+II)&4294967295);var Ix=la[((Iz)>>0)];var Iv=iB((Ix),8,0);var It=(((Iv)-48)&4294967295);var Is=(((It))>>>0)<=9;if(!(Is)){U0=62;break $bb4_i43$$bb7_i$92}while(1){var Ir=Kr;var Iq=uA[((Ir)>>2)];var Ip=(((Iq)+1)&4294967295);var Io=Kr;uA[((Io)>>2)]=Ip;var In=Kr;var Im=uA[((In)>>2)];var Il=((eD+Im)&4294967295);var Ik=la[((Il)>>0)];var Ij=iB((Ik),8,0);var Ii=(((Ij)-48)&4294967295);var Ih=(((Ii))>>>0)<=9;if(Ih){U0=61;continue}else{U0=62;break $bb4_i43$$bb7_i$92}}}}while(0);var Ig=Kr;var If=xk[((Ig)>>2)];var Ie=((eD+If)&4294967295);var Id=la[((Ie)>>0)];Ul=Id;var Ic=(((If)+1)&4294967295);var Ib=Kr;uA[((Ib)>>2)]=Ic;var Ia=uA[((l2)>>2)];var H9=(((Ia))|0)>247;if(H9){U0=63}else{U0=64}if(U0==63){Er=0}else{if(U0==64){var H8=Ul;var H7=oD((H8),8,0);var H6=M7;add=H6;akl=H7;var H5=akl;var H4=(((H5))|0)>127;if(H4){U0=65}else{U0=66}if(U0==65){Es=0}else{if(U0==66){var H3=add;var HZ=akl;var HX=qX(H3,HZ);Es=HX}}var HV=Es;afT=HV;var IC=afT;TD=IC;var HT=TD;var HR=(HT)==0;var HP=oD((HR),1,0);Sz=HP;var Mb=iB((HP),8,0)!=0;if(Mb){U0=68}else{U0=69}if(U0==68){Er=0}else{if(U0==69){var HN=TD;var HL=(HN);var HI=M7;var HH=(HI);var HE=(((HL)-(HH))&4294967295);var HC=(((HE)+1)&4294967295);acd=HC;var HA=afF;var Hy=(((HA))|0)==-1;if(Hy){agn=69;U0=70}else{agn=69;U0=71}if(U0==70){var Hw=acd;var Hu=((jk+Hw*4)&4294967295);var Hs=uA[((Hu)>>2)];afF=Hs;agX=0;agn=70}var Hq=agn==70?Hw:(HC);var Ho=(((Hq))|0)==9;if(Ho){U0=72}else{U0=73}if(U0==72){var Hn=afF;uA[((eB)>>2)]=Hn;uA[((t)>>2)]=0}var Hj=acd;var Hh=(((Hj))|0)==13;if(Hh){U0=74}else{U0=77}if(U0==74){var Hf=afF;var Hd=(((Hf))|0)>2;if(Hd){U0=75}else{U0=76}if(U0==75){la[((wh)>>0)]=1}else{if(U0==76){la[((wh)>>0)]=0}}}var Hb=uA[((l2)>>2)];var G8=acd;var G6=agX;var G4=afF;var G2=(((G4)*256)&4294967295);var G1=(((G6)+(G8))&4294967295);var GX=(((G1)+(G2))&4294967295);var GV=((p6+Hb*4)&4294967295);uA[((GV)>>2)]=GX;var GS=(((Hb)+1)&4294967295);uA[((l2)>>2)]=GS;Er=1}}}}var GQ=Er;akE=GQ;var afS=akE;var GN=afU;var GL=(((GN)+(afS))&4294967295);afU=GL;var GJ=uA[((akg)>>2)];ab7=GJ;var GH=uA[((U4)>>2)];var GF=EG;var GE=(((GH)-(GF))&4294967295);var Gz=EG;var Gx=((eD+Gz)&4294967295);ud(Gx,32,GE,1,0);var Gv=EG;uA[((U4)>>2)]=Gv;U0=469;continue $bb324$56}}}var Gt=uA[((eB)>>2)];var Gr=(((Gt))|0)==36;if(Gr){U0=80}else{U0=88}$bb60$$bb65$121:do{if(U0==80){var Gp=agv;var Gn=(((Gp))|0)!=32;if(!(Gn)){U0=88;break $bb60$$bb65$121}var Gl=uA[((akg)>>2)];var Gj=(((Gl))|0)==32;if(Gj){U0=82}else{U0=84}$bb62$$bb64$124:do{if(U0==82){var Gi=uA[((agc)>>2)];var B4=(((Gi))|0)==32;if(!(B4)){U0=84;break $bb62$$bb64$124}uA[((eB)>>2)]=20}}while(0);var B2=agv;F5=B2;var B0=(((B2))|0)==73;if(B0){U0=85}else{U0=87}$bb_i47$$_Z9towlower2j_exit$128:do{if(U0==85){var BZ=uA[((xy)>>2)];var BY=((BZ+280)&4294967295);var BX=uA[((BY)>>2)];var BW=(((BX))|0)==29810;if(!(BW)){U0=87;break $bb_i47$$_Z9towlower2j_exit$128}F5=305}}while(0);var BU=F5;var BT=q3(BU);Et=BT;var BQ=Et;akC=BQ;var BM=akC;agv=BM}}while(0);var BL=aaM;var BK=(((BL))|0)!=0;if(BK){U0=89}else{U0=92}$bb66$$bb70$133:do{if(U0==89){akj=8;var BJ=agv;var BI=(((BJ))|0)==93;if(BI){agn=89}else{agn=89;U0=426;break $bb66$$bb70$133}var BG=uA[((agc)>>2)];var BF=(((BG))|0)==93;if(!(BF)){U0=424;break $bb66$$bb70$133}aaM=0;var BE=uA[((U4)>>2)];var BD=(((BE)+1)&4294967295);uA[((U4)>>2)]=BD;agv=32;agn=91;U0=425;break $bb66$$bb70$133}else{if(U0==92){var BC=uA[((eB)>>2)];var BB=(BC)&240;var BA=(((BB))|0)==64;if(BA){U0=93}else{U0=102}if(U0==93){var Bz=agv;FT=Bz;var By=FT;var Bx=(((By))>>>0)<=255;if(Bx){U0=95}else{U0=94}$iswdigit_exit$$iswdigit_exit_thread$140:do{if(U0==95){var Bw=FT;var Bu=(((Bw)-48)&4294967295);var Bt=(((Bu))>>>0)<=9;var Bs=oD((Bt),1,0);Ev=Bs;akB=Bs;var Br=(((Bs))|0)!=0;if(!(Br)){U0=98;break $iswdigit_exit$$iswdigit_exit_thread$140}var Bq=uA[((t)>>2)];var Bo=(((Bq)+1)&4294967295);uA[((t)>>2)]=Bo;var Bn=uA[((eB)>>2)];var Bm=(Bn)&15;var Bl=uA[((t)>>2)];var Bk=(((Bm))|0)<(((Bl))|0);if(!(Bk)){U0=424;break $bb66$$bb70$133}agv=32;i=1;uA[((t)>>2)]=0;agn=97;U0=425;break $bb66$$bb70$133}else{if(U0==94){Ev=0;akB=0}}}while(0);uA[((t)>>2)]=0;var Bj=xk[((age)>>2)];FS=Bj;var Bi=(((Bj))>>>0)<=255;if(Bi){U0=100}else{U0=99}if(U0==100){var Bh=FS;var Bg=(((Bh)-48)&4294967295);var Bf=(((Bg))>>>0)<=9;var Bb=oD((Bf),1,0);Ew=Bb;akA=Bb;var Ba=(((Bb))|0)!=0;if(!(Ba)){U0=424;break $bb66$$bb70$133}agv=32;i=1;agn=101;U0=425;break $bb66$$bb70$133}else{if(U0==99){Ew=0;akA=0;U0=424;break $bb66$$bb70$133}}}else{if(U0==102){var A9=uA[((eB)>>2)];var A8=(A9)&16;var A7=(((A8))|0)==0;if(!(A7)){U0=424;break $bb66$$bb70$133}var A6=agv;var A5=(((A6))|0)==146;var A4=agv;var A3=(((A4))|0)==180;var MD=(A5)|(A3);var A2=agv;var AX=(((A2))|0)==8217;var BR=(MD)|(AX);var AV=agv;var AT=(((AV))|0)==8242;var BP=(BR)|(AT);if(BP){U0=104}else{U0=105}if(U0==104){agv=39}var AR=agv;var AP=(((AR))|0)==8216;var AN=agv;var AL=(((AN))|0)==63;var BO=(AP)|(AL);if(BO){agn=105;U0=106}else{agn=105;U0=110}$bb86$$bb93$155:do{if(U0==106){var AJ=uA[((age)>>2)];var AI=kr(AJ);var AH=(((AI))|0)==0;if(AH){U0=109}else{U0=107}$bb93thread_pre_split$$bb87$157:do{if(U0==107){var amX=uA[((agc)>>2)];var amV=kr(amX);var amT=(((amV))|0)==0;if(amT){U0=109;break $bb93thread_pre_split$$bb87$157}DV=1;T5=1;agv=39;U0=114;break $bb86$$bb93$155}}while(0);var Ta=agv;agn=109;U0=110;break $bb86$$bb93$155}}while(0);$bb93$$bb97$161:do{if(U0==110){var alc=agn==109?Ta:(AN);DV=0;T5=0;var amR=(((alc))|0)==1328;if(amR){U0=111}else{U0=112}if(U0==111){agv=32;var amP=KS;var amN=(amP)|1024;KS=amN}else{if(U0==112){var CY=agv;var amL=(((CY))|0)==1367;if(!(amL)){U0=114;break $bb93$$bb97$161}agv=32;var amJ=KS;var amI=(amJ)|131072;KS=amI}}}}while(0);var amH=uA[((agc)>>2)];var amD=agv;var amB=uA[((akg)>>2)];var amz=uA[((U4)>>2)];var amx=((eD+amz)&4294967295);var amu=Nj;adY=amu;agl=amx;alD=amB;Fx=amD;Tn=amH;NE=ako;var ams=adY;var amq=((ams+280)&4294967295);var amn=uA[((amq)>>2)];if(amn==24934){U0=115}else{if(amn==27503){U0=137}else{if(amn==28268){U0=115}else{U0=147}}}$bb32_i$$bb_i76$$bb13_i87$168:do{if(U0==115){var amm=alD;Mz=amm;var aml=(((amm))>>>0)<=255;var amh=Mz;if(aml){U0=116}else{U0=117}$bb_i_i77$$bb1_i_i78$170:do{if(U0==116){var amf=z6(amh);Ez=amf;agn=116;U0=122;break $bb_i_i77$$bb1_i_i78$170}else{if(U0==117){var amd=(((amh))>>>0)>12352;var amb=Mz;var al9=(((amb))>>>0)<=42752;var PF=(amd)&(al9);if(PF){U0=118}else{U0=119}if(U0==118){Ez=1;Da=1;U0=147;break $bb32_i$$bb_i76$$bb13_i87$168}else{if(U0==119){var al7=Mz;var al5=(((al7))>>>0)>563;if(al5){U0=120}else{U0=121}if(U0==120){Ez=0;Da=0;U0=123;break $bb_i_i77$$bb1_i_i78$170}else{if(U0==121){var al3=Mz;var al2=(((al3)-256)&4294967295);var al1=((xF+al2)&4294967295);var alV=ll[((al1)>>0)];var alT=oD((alV),8,0);Ez=alT;agn=121;U0=122;break $bb_i_i77$$bb1_i_i78$170}}}}}}}while(0);if(U0==122){var alR=agn==116?amf:(alT);Da=alR;var alP=(((alR))|0)==0;if(!(alP)){U0=147;break $bb32_i$$bb_i76$$bb13_i87$168}}var alN=agl;var alL=((alN+1)&4294967295);akx=ajS;S1=alL;var alJ=akx;var alH=S1;var alG=F(alJ,alH,0);EB=alG;var alF=EB;alE=alF;var ake=Fx;var akd=(((ake))|0)!=39;if(akd){U0=131}else{U0=124}$bb5_i81$$bb2_i80$182:do{if(U0==124){var akc=uA[((ajS)>>2)];ab3=akc;var akb=ab3;var aka=(((akb))|0)==0;if(aka){U0=125}else{U0=126}if(U0==125){EC=0;adc=0}else{if(U0==126){var aj9=ab3;var aj7=(((aj9))>>>0)>9471;var aj6=ab3;var aj5=(((aj6))>>>0)<=9631;var UH=(aj7)&(aj5);if(UH){U0=127}else{U0=128}if(U0==127){EC=1;adc=1}else{if(U0==128){var aj4=ab3;CZ=aj4;var aj3=CZ;var aj2=(((aj3))>>>0)<=255;if(aj2){U0=130}else{U0=129}if(U0==130){var aj1=CZ;var aj0=xE(aj1);ED=aj0;aiY=aj0;EC=aj0;adc=aj0;var ajZ=(((aj0))|0)==0;if(ajZ){U0=131;break $bb5_i81$$bb2_i80$182}}else{if(U0==129){ED=0;aiY=0;EC=0;adc=0;U0=131;break $bb5_i81$$bb2_i80$182}}}}ab0=1;R7=1;var ajY=Tn;var ajX=(((ajY))|0)==110;if(ajX){U0=133}else{U0=135}$bb7_i82$$bb9_i85$194:do{if(U0==133){var ajW=adY;var ajV=((ajW+280)&4294967295);var ajU=uA[((ajV)>>2)];var ajR=(((ajU))|0)==24934;if(!(ajR)){U0=135;break $bb7_i82$$bb9_i85$194}var ajQ=agl;var ajP=((ajQ)&4294967295);la[((ajP)>>0)]=32;Ey=601;U0=192;break $bb7_i82$$bb9_i85$194}}while(0);if(U0==135){var ajO=Tn;var ajN=(((ajO))|0)==110;var ajM=Tn;var ajL=(((ajM))|0)==116;var aad=(ajN)|(ajL);if(!(aad)){U0=147;break $bb32_i$$bb_i76$$bb13_i87$168}Ey=601}aky=601;agv=601;U0=194;break $bb32_i$$bb_i76$$bb13_i87$168}}}}while(0);ab0=0;R7=0;U0=147;break $bb32_i$$bb_i76$$bb13_i87$168}else{if(U0==137){var ajK=Fx;var ajJ=(((ajK)-44032)&4294967295);akS=ajJ;var ajI=akS;var ajH=(((ajI))|0)<0;if(ajH){U0=144}else{U0=138}$bb25_i$$bb14_i88$203:do{if(U0==138){var ajG=Fx;var ajF=(((ajG))>>>0)>55215;if(ajF){U0=144;break $bb25_i$$bb14_i88$203}al0=1;afW=1;var ajE=akS;var ajC=(((((ajE))|0)/588)|0);A1=ajC;var ajB=akS;var ajA=(((((ajB))|0)/28)|0);var ajz=(((ajA))|0)%21;abI=ajz;var ajy=akS;var ajx=(((ajy))|0)%28;UT=ajx;var ajv=A1;var aju=(((ajv))|0)==11;if(aju){U0=140}else{U0=142}$bb20_i$$bb23_i$206:do{if(U0==140){var ajt=abI;var ajs=(((ajt)+4449)&4294967295);Fx=ajs;var ajr=UT;var ajq=(((ajr))|0)>0;if(!(ajq)){U0=143;break $bb20_i$$bb23_i$206}var ajp=UT;var ajn=(((ajp)+4519)&4294967295);var ajm=NE;uA[((ajm)>>2)]=ajn}else{if(U0==142){var ajl=A1;var ajg=(((ajl)+4352)&4294967295);Fx=ajg;var aje=abI;var ajc=(((aje)*28)&4294967295);var aja=UT;var ai8=(((ajc)+50500)&4294967295);var ai6=(((ai8)+(aja))&4294967295);var ai4=NE;uA[((ai4)>>2)]=ai6}}}while(0);var ai2=Fx;Ey=ai2;agn=143;U0=193;break $bb32_i$$bb_i76$$bb13_i87$168}}while(0);al0=0;afW=0;var ai0=Fx;var aiZ=(((ai0)-12592)&4294967295);akS=aiZ;var aiU=akS;var aiS=(((aiU))|0)<0;var aiO=akS;var aiM=(((aiO))|0)>51;var EI=(aiS)|(aiM);if(EI){U0=145}else{U0=146}if(U0==145){Tl=0;Uk=0;U0=147;break $bb32_i$$bb_i76$$bb13_i87$168}else{if(U0==146){Tl=1;Uk=1;var aiK=akS;var aiH=((ju+aiK)&4294967295);var aiF=ll[((aiH)>>0)];var aiD=oD((aiF),8,0);var aiB=(((aiD)+4352)&4294967295);Ey=aiB;agn=146;U0=193;break $bb32_i$$bb_i76$$bb13_i87$168}}}}}while(0);$bb32_i$$bb98$$_ZL13TranslateCharP10TranslatorPcijjPi_exit$215:do{if(U0==147){var aiA=adY;var aix=Fx;var aiv=Tn;var ais=NE;ajD=aiA;Fj=aix;ZE=aiv;HJ=ais;Md=0;var agb=ll[((v)>>0)];var aiq=oD((agb),1,0);var aio=(((aiq))|0)!=0;if(aio){U0=148}else{U0=149}if(U0==148){la[((v)>>0)]=0;EE=8}else{if(U0==149){var aim=Fj;var aik=(((aim))|0)==0;if(aik){U0=150}else{U0=151}if(U0==150){EE=0}else{if(U0==151){var aii=ajD;var aig=((aii)&4294967295);var aif=((aig+264)&4294967295);var aib=uA[((aif)>>2)];K8=aib;var ah9=K8;var ah7=(ah9)==0;var ah5=oD((ah7),1,0);amY=ah5;var ah3=amY;var aiP=iB((ah3),8,0)!=0;var ah1=Fj;if(aiP){U0=152}else{U0=153}if(U0==152){EE=ah1}else{if(U0==153){akr=ah1;var ahZ=akr;Bp=ahZ;var ahX=Bp;var ahV=(((ahX))>>>0)<=255;var ahU=Bp;if(ahV){U0=154}else{U0=155}$bb_i_i23_i$$bb1_i_i24_i$226:do{if(U0==154){var ahR=tM(ahU);EF=ahR}else{if(U0==155){var ahO=(((ahU))>>>0)>563;if(ahO){U0=157}else{U0=156}$bb7_i_i_i$$bb2_i_i_i$229:do{if(U0==156){var ahM=Bp;var ahK=(((ahM)-256)&4294967295);var ahI=((xF+ahK)&4294967295);var ahG=ll[((ahI)>>0)];var ahE=oD((ahG),8,0);akD=ahE;var ahC=akD;var ahA=(((ahC))|0)==0;var ahz=akD;var afR=(((ahz))|0)==255;var aca=(ahA)|(afR);if(aca){U0=157;break $bb7_i_i_i$$bb2_i_i_i$229}PZ=0;H0=0;EF=1;U0=159;break $bb_i_i23_i$$bb1_i_i24_i$226}}while(0);PZ=1;H0=1;EF=0}}}while(0);var afQ=EF;DM=afQ;var agZ=DM;var afO=(((agZ))|0)!=0;var afN=oD((afO),1,0);ac0=afN;var Xe=iB((afN),8,0)!=0;if(Xe){U0=160}else{U0=161}if(U0==160){var afM=Fj;var afL=q3(afM);akr=afL;Md=1}abK=0;aiQ=0;$bb15_i_i$237:while(1){var afj=K8;var afi=aiQ;var afh=((afj+4*afi)&4294967295);var afg=uA[((afh)>>2)];akp=afg;var aff=akp;var afe=(((aff))|0)!=0;var afd=oD((afe),1,0);Mc=afd;var acv=iB((afd),8,0)!=0;if(!(acv)){U0=169;break $bb15_i_i$237}var afK=akp;var afJ=(afK)&65535;var afI=akr;var afH=(((afJ))|0)==(((afI))|0);if(afH){U0=163}else{U0=167}if(U0==163){var afE=akp;var afD=(((afE))>>>0)>>>16;var afC=(((afD))|0)==0;if(afC){U0=164;break $bb15_i_i$237}var afw=akp;var afv=(((afw))>>>0)>>>16;var afu=ZE;var aft=q3(afu);var afs=(((afv))|0)==(((aft))|0);if(afs){U0=166;break $bb15_i_i$237}}var afm=aiQ;var afl=(((afm)+2)&4294967295);aiQ=afl;U0=168;continue $bb15_i_i$237}if(U0==169){var Z1=abK;agn=169}else{if(U0==164){var afB=aiQ;var afA=(((afB)+1)&4294967295);var afz=K8;var afy=((afz+4*afA)&4294967295);var afx=xk[((afy)>>2)];abK=afx;agn=164}else{if(U0==166){var afr=aiQ;var afq=(((afr)+1)&4294967295);var afp=K8;var afo=((afp+4*afq)&4294967295);var afn=xk[((afo)>>2)];abK=afn;la[((v)>>0)]=1;agn=166}}}var afc=agn==169?Z1:(agn==166?afn:(afx));var afb=(((afc))|0)==0;if(afb){U0=171}else{U0=172}if(U0==171){var afa=Fj;EE=afa}else{if(U0==172){var ae8=abK;var ae7=(ae8)&-2097152;var ae6=(((ae7))|0)!=0;if(ae6){U0=173}else{U0=185}if(U0==173){var ae5=abK;var ae4=(((ae5))>>>0)>>>16;G0=ae4;var ae2=Md;var ae1=(((ae2))|0)!=0;if(ae1){U0=174}else{U0=184}$bb21_i_i$$bb23_i_i$254:do{if(U0==174){var ae0=ZE;abU=ae0;var aeZ=abU;var aeY=(((aeZ))>>>0)<=255;var aeV=abU;if(aeY){U0=179}else{U0=175}$iswupper_exit13_i_i$$bb1_i7_i_i$256:do{if(U0==179){var aex=tM(aeV);EH=aex;OJ=aex;var aev=(((aex))|0)!=0;if(!(aev)){U0=184;break $bb21_i_i$$bb23_i_i$254}}else{if(U0==175){var aeT=(((aeV))>>>0)>563;if(aeT){U0=177}else{U0=176}$iswupper_exit13_thread26_i_i$$bb2_i9_i_i$259:do{if(U0==176){var aeR=abU;var aeP=(((aeR)-256)&4294967295);var aeM=((xF+aeP)&4294967295);var aeK=ll[((aeM)>>0)];var aeI=oD((aeK),8,0);V4=aeI;var aeG=V4;var aeE=(((aeG))|0)==0;var aeC=V4;var aez=(((aeC))|0)==255;var agd=(aeE)|(aez);if(agd){U0=177;break $iswupper_exit13_thread26_i_i$$bb2_i9_i_i$259}Bv=0;Ms=0;EH=1;OJ=1;U0=180;break $iswupper_exit13_i_i$$bb1_i7_i_i$256}}while(0);Bv=1;Ms=1;EH=0;OJ=0;U0=184;break $bb21_i_i$$bb23_i_i$254}}}while(0);var aet=G0;Mx=aet;var aer=Mx;var aep=(((aer)-1)&4294967295);var aen=m9(aep);var ael=Mx;var aej=(((aen))|0)==(((ael))|0);var aei=Mx;if(aej){U0=181}else{U0=182}if(U0==181){var aee=(((aei)-1)&4294967295);EJ=aee}else{if(U0==182){EJ=aei}}var aec=EJ;GD=aec;var TR=GD;G0=TR}}while(0);var aea=G0;var ad8=HJ;uA[((ad8)>>2)]=aea;var ad6=abK;var ad4=(ad6)&65535;abK=ad4}var ad2=Md;var ad0=(((ad2))|0)!=0;if(ad0){U0=186}else{U0=190}if(U0==186){var adX=abK;abL=adX;var adW=abL;var adR=(((adW)-1)&4294967295);var adP=m9(adR);var adN=abL;var adL=(((adP))|0)==(((adN))|0);var adI=abL;if(adL){U0=187}else{U0=188}if(U0==187){var adG=(((adI)-1)&4294967295);EK=adG}else{if(U0==188){EK=adI}}var adE=EK;SB=adE;var aaX=SB;abK=aaX}var adC=abK;EE=adC}}}}}}}}var adA=EE;afZ=adA;var Us=afZ;Ey=Us;agn=191;U0=193;break $bb32_i$$bb98$$_ZL13TranslateCharP10TranslatorPcijjPi_exit$215}}while(0);if(U0==193){var adz=agn==143?ai2:(agn==146?aiB:(Us));aky=adz;agv=adz;var adv=(((adz))|0)==8;if(adv){U0=469;continue $bb324$56}}var adt=uA[((ako)>>2)];var adr=(((adt))|0)!=0;if(adr){U0=195}else{U0=196}if(U0==195){var adp=uA[((ako)>>2)];uA[((agc)>>2)]=adp}var adn=agv;var adl=kr(adn);var adj=(((adl))|0)!=0;if(adj){U0=210}else{U0=197}$bb105$$bb101$284:do{if(U0==197){var adh=agv;EY=adh;var adf=EY;var ade=(((adf))|0)==0;if(ade){U0=198}else{U0=199}if(U0==198){EL=0;aku=0}else{if(U0==199){var abH=EY;var abG=(((abH))>>>0)>9471;var abF=EY;var abE=(((abF))>>>0)<=9631;var ZO=(abG)&(abE);if(ZO){U0=200}else{U0=201}if(U0==200){EL=1;aku=1;U0=210;break $bb105$$bb101$284}else{if(U0==201){var abD=EY;Mt=abD;var abC=Mt;var abB=(((abC))>>>0)<=255;if(abB){U0=203}else{U0=202}if(U0==203){var abA=Mt;var abz=xE(abA);EM=abz;CM=abz;EL=abz;aku=abz;var aby=(((abz))|0)!=0;if(aby){U0=210;break $bb105$$bb101$284}}else{if(U0==202){EM=0;CM=0;EL=0;aku=0}}}}}}var abw=Nj;var abv=((abw+704)&4294967295);var abu=uA[((abv)>>2)];var abt=agv;Cz=abu;acq=abt;$bb3_i108$296:while(1){var abk=Cz;var abj=uA[((abk)>>2)];var abi=(((abj))|0)!=0;if(!(abi)){U0=208;break $bb3_i108$296}var abs=Cz;var abr=uA[((abs)>>2)];var abp=acq;var abo=(((abr))|0)==(((abp))|0);var abn=Cz;if(abo){U0=209;break $bb3_i108$296}var abm=((abn+4)&4294967295);Cz=abm;U0=207;continue $bb3_i108$296}if(U0==208){EO=0;ajw=0}else{if(U0==209){EO=abn;ajw=abn;var abh=(abn)!=0;if(abh){U0=210;break $bb105$$bb101$284}}}Dy=1;T4=1;var abg=uA[((age)>>2)];var abf=kr(abg);var abe=(((abf))|0)!=0;var abd=oD((abe),1,0);T2=abd;var V6=iB((abd),8,0)!=0;if(!(V6)){U0=221;break $bb105$$bb101$284}var abc=Nj;var abb=((abc)&4294967295);var aa9=((abb+250)&4294967295);var aa8=la[((aa9)>>0)];var aa7=iB((aa8),8,0)==0;if(aa7){U0=218}else{U0=213}$bb113$$bb110$305:do{if(U0==213){var aa6=agv;ace=aa6;var aa4=ace;var aa3=(((aa4))>>>0)>47;var aa2=ace;var aa1=(((aa2))>>>0)<=57;var akw=(aa3)&(aa1);if(akw){U0=215}else{U0=214}if(U0==215){EP=1;aji=1;var aa0=uA[((agc)>>2)];acb=aa0;var aaZ=acb;var aaY=(((aaZ))>>>0)>47;var aaW=acb;var aaV=(((aaW))>>>0)<=57;var aks=(aaY)&(aaV);if(aks){U0=216}else{U0=217}if(U0==216){EQ=1;aiX=1;U0=218;break $bb113$$bb110$305}else{if(U0==217){EQ=0;aiX=0;Dw=1;U0=219;break $bb113$$bb110$305}}}else{if(U0==214){EP=0;aji=0;U0=218;break $bb113$$bb110$305}}}}while(0);if(U0==218){Dw=0}var aaU=Dw;T0=aaU;var aaT=T0;var VM=iB((aaT),8,0)!=0;var Hm=(VM)^1;var TB=oD((Hm),1,0);var VH=iB((TB),8,0)!=0;if(!(VH)){U0=221;break $bb105$$bb101$284}agv=32;i=1;U0=221;break $bb105$$bb101$284}}while(0);if(U0==210){Dy=0;T4=0}var aaS=xk[((age)>>2)];ab9=aaS;var aaQ=(((aaS))>>>0)<=255;if(aaQ){U0=223}else{U0=222}$iswdigit_exit134$$iswdigit_exit134_thread$320:do{if(U0==223){var aaP=ab9;var aaO=(((aaP)-48)&4294967295);var aaN=(((aaO))>>>0)<=9;var aaH=oD((aaN),1,0);ER=aaH;aiI=aaH;var aaF=(((aaH))|0)!=0;if(!(aaF)){U0=229;break $iswdigit_exit134$$iswdigit_exit134_thread$320}var aaD=agv;ab8=aaD;var aaB=ab8;var aaz=(((aaB))>>>0)<=255;if(aaz){U0=225}else{U0=226}if(U0==225){var aaw=ab8;var aau=(((aaw)-48)&4294967295);var aas=(((aau))>>>0)<=9;var aaq=oD((aas),1,0);ES=aaq}else{if(U0==226){ES=0}}var aap=ES;ait=aap;var PT=ait;var aal=(((PT))|0)==0;var aaj=agv;var aah=(((aaj))|0)!=46;var BN=(aal)&(aah);var aaf=agv;var aaa=(((aaf))|0)!=44;var M5=(BN)&(aaa);var Z8=agv;var Z6=(((Z8))|0)!=32;var M4=(M5)&(Z6);if(M4){agn=227}else{agn=227;U0=232;break $iswdigit_exit134$$iswdigit_exit134_thread$320}agv=32;i=1;U0=236;break $iswdigit_exit134$$iswdigit_exit134_thread$320}else{if(U0==222){ER=0;aiI=0;U0=229;break $iswdigit_exit134$$iswdigit_exit134_thread$320}}}while(0);$bb134$$bb129$$bb127$329:do{if(U0==229){var Z4=uA[((akg)>>2)];var Z3=(((Z4))|0)!=44;if(Z3){U0=230}else{U0=231}if(U0==230){abQ=0}var abx=agv;agn=231;U0=232;break $bb134$$bb129$$bb127$329}}while(0);$bb134$$bb129$334:do{if(U0==232){var Z2=agn==231?abx:(Z8);var ZX=(((Z2))|0)==91;if(!(ZX)){U0=236;break $bb134$$bb129$334}var ZV=uA[((agc)>>2)];var ZS=(((ZV))|0)==2;if(ZS){U0=235}else{U0=234}if(U0==234){var ZQ=uA[((agc)>>2)];var ZN=(((ZQ))|0)==91;var ZL=uA[((te)>>2)];var ZJ=(((ZL))|0)!=0;var M3=(ZN)&(ZJ);if(!(M3)){U0=236;break $bb134$$bb129$334}}aaM=8;var ZH=uA[((U4)>>2)];var ZG=(((ZH)+1)&4294967295);uA[((U4)>>2)]=ZG;U0=469;continue $bb324$56}}while(0);var ZF=agv;var Zz=kr(ZF);var Zx=(((Zz))|0)!=0;var Zv=oD((Zx),1,0);TK=Zv;var U8=iB((Zv),8,0)!=0;if(U8){U0=237}else{U0=316}if(U0==237){var Zt=uA[((age)>>2)];var Zr=kr(Zt);var Zp=(((Zr))|0)==0;if(Zp){U0=242}else{U0=238}$bb144$$bb137$343:do{if(U0==238){var Zn=Nj;var Zl=((Zn)&4294967295);var Zk=((Zl+251)&4294967295);var Zj=la[((Zk)>>0)];var Ze=iB((Zj),8,0)==0;if(Ze){U0=241}else{U0=239}if(U0==239){var Zc=agv;var Y9=(((Zc))|0)>12352;if(Y9){U0=242;break $bb144$$bb137$343}var Y6=uA[((age)>>2)];var Y4=(((Y6))|0)>12352;if(Y4){U0=242;break $bb144$$bb137$343}}Db=0;TC=0;U0=273;break $bb144$$bb137$343}}while(0);$bb144$$bb158$349:do{if(U0==242){Db=1;TC=1;var Y2=uA[((age)>>2)];var Y0=Nj;var YY=((Y0+704)&4294967295);var YX=uA[((YY)>>2)];af3=YX;ab6=Y2;$bb3_i148$351:while(1){var TV=af3;var TU=uA[((TV)>>2)];var TT=(((TU))|0)!=0;if(!(TT)){U0=246;break $bb3_i148$351}var YW=af3;var T1=uA[((YW)>>2)];var TZ=ab6;var TY=(((T1))|0)==(((TZ))|0);var TX=af3;if(TY){U0=247;break $bb3_i148$351}var TW=((TX+4)&4294967295);af3=TW;U0=245;continue $bb3_i148$351}$wcschr_exit152_thread$$wcschr_exit152$355:do{if(U0==246){EW=0;aic=0;U0=248;break $wcschr_exit152_thread$$wcschr_exit152$355}else{if(U0==247){EW=TX;aic=TX;var TS=(TX)==0;if(TS){U0=248;break $wcschr_exit152_thread$$wcschr_exit152$355}else{U0=249;break $wcschr_exit152_thread$$wcschr_exit152$355}}}}while(0);if(U0==248){Jz=0}var TQ=uA[((age)>>2)];var TO=(((TQ))|0)==32;if(TO){U0=258}else{U0=250}$bb152$$bb147$361:do{if(U0==250){var TN=uA[((age)>>2)];var TM=Nj;var TL=((TM+704)&4294967295);var TJ=uA[((TL)>>2)];af0=TJ;ab4=TN;while(1){var Tz=af0;var Ty=uA[((Tz)>>2)];var Tx=(((Ty))|0)!=0;if(!(Tx)){U0=254;break}var TI=af0;var TH=uA[((TI)>>2)];var TG=ab4;var TF=(((TH))|0)==(((TG))|0);var TE=af0;if(TF){U0=255;break}var TA=((TE+4)&4294967295);af0=TA;U0=253;continue}if(U0==254){EX=0;ahP=0}else{if(U0==255){EX=TE;ahP=TE;var Tv=(TE)!=0;if(Tv){U0=258;break $bb152$$bb147$361}}}agv=32;i=1;var Tu=uA[((age)>>2)];var Tt=s7(Tu);var Ts=(((Tt))|0)==0;var Tr=oD((Ts),1,0);Tw=Tr;var UO=iB((Tr),8,0)!=0;if(!(UO)){U0=273;break $bb144$$bb158$349}var Tq=SC;var Tp=(Tq)|256;SC=Tp;U0=273;break $bb144$$bb158$349}}while(0);var To=agv;ab2=To;var Tm=(((To))>>>0)<=255;if(Tm){U0=263}else{U0=259}$iswupper_exit$$bb1_i167$373:do{if(U0==263){var S5=tM(To);EZ=S5;ahv=S5;var S4=(((S5))|0)!=0;if(S4){U0=264;break $iswupper_exit$$bb1_i167$373}else{U0=265;break $iswupper_exit$$bb1_i167$373}}else{if(U0==259){var Tk=(((To))>>>0)>563;if(Tk){U0=261}else{U0=260}$iswupper_exit_thread394$$bb2_i169$376:do{if(U0==260){var Ti=ab2;var Th=(((Ti)-256)&4294967295);var Tg=((xF+Th)&4294967295);var Tf=ll[((Tg)>>0)];var Te=oD((Tf),8,0);GT=Te;var Td=GT;var S9=(((Td))|0)==0;var S8=GT;var S7=(((S8))|0)==255;var akk=(S9)|(S7);if(akk){U0=261;break $iswupper_exit_thread394$$bb2_i169$376}KB=0;afk=0;EZ=1;ahv=1;U0=264;break $iswupper_exit$$bb1_i167$373}}while(0);KB=1;afk=1;EZ=0;ahv=0;U0=265;break $iswupper_exit$$bb1_i167$373}}}while(0);if(U0==264){var S3=KS;var S2=(S3)|2;KS=S2}var S0=uA[((age)>>2)];var SZ=(((S0))|0)==32;if(!(SZ)){U0=273;break $bb144$$bb158$349}var SY=ahn;var SU=(((SY)-2)&4294967295);var SS=((Lu+SU)&4294967295);var SQ=la[((SS)>>0)];var SO=iB((SQ),8,0);abY=SO;var SM=abY;var SK=(((SM))>>>0)<=255;if(SK){U0=268}else{U0=267}if(U0==268){var SI=abY;var SG=(((SI)-48)&4294967295);var SE=(((SG))>>>0)<=9;var SD=oD((SE),1,0);E0=SD;ahk=SD;var Sv=(((SD))|0)!=0;if(!(Sv)){U0=273;break $bb144$$bb158$349}var St=uA[((akg)>>2)];abW=St;var Sr=abW;var Sp=(((Sr))>>>0)<=255;if(Sp){U0=271}else{U0=270}if(U0==271){var Sn=abW;var Sl=(((Sn)-48)&4294967295);var Sj=(((Sl))>>>0)<=9;var Sh=oD((Sj),1,0);E1=Sh;ahb=Sh;var Sf=(((Sh))|0)==0;if(!(Sf)){U0=273;break $bb144$$bb158$349}}else{if(U0==270){E1=0;ahb=0}}var Se=ahn;var Sb=((Lu+Se)&4294967295);la[((Sb)>>0)]=32;var R9=ahn;var R6=(((R9)+1)&4294967295);ahn=R6;var R4=Za;var R2=((alC+R4*12)&4294967295);var R0=((R2+4)&4294967295);var RY=uW[((R0)>>1)];var RW=(((RY)+1)&65535);var RU=((alC+R4*12)&4294967295);var RT=((RU+4)&4294967295);uW[((RT)>>1)]=RW}else{if(U0==267){E0=0;ahk=0}}}}while(0);var RQ=Jz;var RO=(((RQ)+1)&4294967295);Jz=RO;var RM=agv;abT=RM;var RK=(((RM))>>>0)<=255;if(RK){U0=278}else{U0=274}$iswupper_exit200$$bb1_i193$393:do{if(U0==278){var Ro=tM(RM);E2=Ro;ag4=Ro;var Rm=(((Ro))|0)!=0;if(Rm){U0=279;break $iswupper_exit200$$bb1_i193$393}else{U0=308;break $iswupper_exit200$$bb1_i193$393}}else{if(U0==274){var RI=(((RM))>>>0)>563;if(RI){U0=276}else{U0=275}$iswupper_exit200_thread395$$bb2_i195$396:do{if(U0==275){var RG=abT;var RE=(((RG)-256)&4294967295);var RC=((xF+RE)&4294967295);var RA=ll[((RC)>>0)];var Rz=oD((RA),8,0);alg=Rz;var Rw=alg;var Ru=(((Rw))|0)==0;var Rs=alg;var Rq=(((Rs))|0)==255;var aki=(Ru)|(Rq);if(aki){U0=276;break $iswupper_exit200_thread395$$bb2_i195$396}Jp=0;abX=0;E2=1;ag4=1;U0=279;break $iswupper_exit200$$bb1_i193$393}}while(0);Jp=1;abX=1;E2=0;ag4=0;U0=308;break $iswupper_exit200$$bb1_i193$393}}}while(0);if(U0==279){var Rk=agv;XV=Rk;var Ri=(((Rk))|0)==73;if(Ri){U0=280}else{U0=282}$bb_i203$$_Z9towlower2j_exit207$402:do{if(U0==280){var Rg=uA[((xy)>>2)];var Rf=((Rg+280)&4294967295);var Mo=uA[((Rf)>>2)];var Mm=(((Mo))|0)==29810;if(!(Mm)){U0=282;break $bb_i203$$_Z9towlower2j_exit207$402}XV=305}}while(0);var Ml=XV;var Mk=q3(Ml);E3=Mk;var Mj=E3;ae9=Mj;var Jo=ae9;agv=Jo;var Mi=Nj;var Mh=((Mi)&4294967295);var Mg=((Mh+24)&4294967295);var Mf=((Mg+52)&4294967295);var Me=uA[((Mf)>>2)];agr=Me;var L9=agr;var L8=(((L9))|0)>0;var L7=oD((L8),1,0);Tj=L7;var Uv=iB((L7),8,0)!=0;if(Uv){U0=283}else{U0=286}if(U0==283){var L6=agr;var L5=(((L6))|0)==2;if(!(L5)){U0=424;break $bb66$$bb70$133}var L4=I2;var L3=(((L4))|0)==0;if(!(L3)){U0=424;break $bb66$$bb70$133}var L2=agv;uA[((ako)>>2)]=L2;agv=712;I2=1;agn=285;U0=425;break $bb66$$bb70$133}else{if(U0==286){var L1=uA[((akg)>>2)];XQ=L1;var L0=XQ;var LZ=(((L0))>>>0)<=255;var LY=XQ;if(LZ){U0=291}else{U0=287}$iswlower_exit$$bb1_i211$411:do{if(U0==291){var LR=t7(LY);E4=LR;ae3=LR;var LQ=(((LR))|0)!=0;if(LQ){U0=292;break $iswlower_exit$$bb1_i211$411}else{U0=293;break $iswlower_exit$$bb1_i211$411}}else{if(U0==287){var LX=(((LY))>>>0)>563;if(LX){U0=289}else{U0=288}$iswlower_exit_thread396$$bb2_i212$414:do{if(U0==288){var LW=XQ;var LV=(((LW)-256)&4294967295);var LU=((xF+LV)&4294967295);var LT=la[((LU)>>0)];var LS=iB((LT),8,0)!=-1;if(LS){U0=289;break $iswlower_exit_thread396$$bb2_i212$414}E4=1;ae3=1;U0=292;break $iswlower_exit$$bb1_i211$411}}while(0);E4=0;ae3=0;U0=293;break $iswlower_exit$$bb1_i211$411}}}while(0);if(U0==292){agv=32;i=1;var LP=agv;ab7=LP;agn=292;U0=426;break $bb66$$bb70$133}else{if(U0==293){var LO=agv;var LN=(((LO))|0)!=32;if(LN){agn=293}else{agn=293;U0=425;break $bb66$$bb70$133}var LM=uA[((akg)>>2)];Xw=LM;var LL=Xw;var LK=(((LL))>>>0)<=255;var LJ=Xw;if(LK){U0=299}else{U0=295}$iswupper_exit230$$bb1_i223$422:do{if(U0==299){var Lx=tM(LJ);E5=Lx;aeN=Lx;var Lw=(((Lx))|0)!=0;if(!(Lw)){U0=424;break $bb66$$bb70$133}}else{if(U0==295){var LI=(((LJ))>>>0)>563;if(LI){U0=297}else{U0=296}$iswupper_exit230_thread397$$bb2_i225$425:do{if(U0==296){var LH=Xw;var LG=(((LH)-256)&4294967295);var LF=((xF+LG)&4294967295);var LE=ll[((LF)>>0)];var LC=oD((LE),8,0);ajk=LC;var LB=ajk;var LA=(((LB))|0)==0;var Lz=ajk;var Ly=(((Lz))|0)==255;var af9=(LA)|(Ly);if(af9){U0=297;break $iswupper_exit230_thread397$$bb2_i225$425}Dx=0;Xz=0;E5=1;aeN=1;U0=300;break $iswupper_exit230$$bb1_i223$422}}while(0);Dx=1;Xz=1;E5=0;aeN=0;U0=424;break $bb66$$bb70$133}}}while(0);var Lv=xk[((agc)>>2)];Xa=Lv;var Lr=(((Lv))>>>0)<=255;if(Lr){U0=305}else{U0=301}$iswlower_exit240$$bb1_i234$430:do{if(U0==305){var Lc=t7(Lv);E6=Lc;aeh=Lc;var La=(((Lc))|0)!=0;if(!(La)){U0=424;break $bb66$$bb70$133}}else{if(U0==301){var Lp=(((Lv))>>>0)>563;if(Lp){U0=303}else{U0=302}$iswlower_exit240_thread398$$bb2_i235$433:do{if(U0==302){var Ln=Xa;var Ll=(((Ln)-256)&4294967295);var Li=((xF+Ll)&4294967295);var Lg=la[((Li)>>0)];var Le=iB((Lg),8,0)!=-1;if(Le){U0=303;break $iswlower_exit240_thread398$$bb2_i235$433}E6=1;aeh=1;U0=306;break $iswlower_exit240$$bb1_i234$430}}while(0);E6=0;aeh=0;U0=424;break $bb66$$bb70$133}}}while(0);var K9=uA[((U4)>>2)];var K5=Be;var K3=(((K5)+(K9))&4294967295);var K1=((eD+K3)&4294967295);WO=MB;abJ=K1;var KZ=WO;var KX=abJ;var KV=F(KZ,KX,0);Fa=KV;var KT=Fa;adT=KT;var KQ=uA[((MB)>>2)];var KO=kr(KQ);var KN=(((KO))|0)!=0;var KK=oD((KN),1,0);S6=KK;var Ue=iB((KK),8,0)!=0;if(!(Ue)){U0=424;break $bb66$$bb70$133}agv=32;i=1;var KI=agv;ab7=KI;var KG=SC;var KE=(KG)|256;SC=KE;agn=307;U0=426;break $bb66$$bb70$133}}}}}else{if(U0==308){var KC=akj;var Kz=(((KC))|0)==0;if(Kz){U0=315}else{U0=309}$bb183$$bb175$440:do{if(U0==309){var Kx=Jz;var Kv=(((Kx))|0)<=2;if(Kv){U0=315;break $bb183$$bb175$440}var Kt=agv;var Ks=(((Kt))|0)!=115;if(Ks){U0=314}else{U0=311}$bb181$$bb177$443:do{if(U0==311){var Ko=uA[((agc)>>2)];var Km=(((Ko))|0)!=32;if(Km){U0=314;break $bb181$$bb177$443}agv=32;var Kk=akj;var Ki=(Kk)|4;akj=Ki;var Kg=ahn;var Ke=(((Kg)-1)&4294967295);var Kc=((Lu+Ke)&4294967295);var Ka=la[((Kc)>>0)];var J8=iB((Ka),8,0)==39;if(!(J8)){U0=424;break $bb66$$bb70$133}var J7=ahn;var J4=(((J7)-1)&4294967295);var J2=((Lu+J4)&4294967295);la[((J2)>>0)]=32;U0=424;break $bb66$$bb70$133}}while(0);akj=0;U0=424;break $bb66$$bb70$133}}while(0);akj=0;U0=424;break $bb66$$bb70$133}}}else{if(U0==316){var J0=agv;var JY=(((J0))|0)==45;if(JY){U0=317}else{U0=339}if(U0==317){var JW=uA[((akg)>>2)];WM=JW;var JU=WM;var JS=(((JU))|0)==0;if(JS){U0=318}else{U0=319}$_Z7IsSpacej_exit260_thread399$$bb1_i251$452:do{if(U0==318){Fb=0;adJ=0;U0=324;break $_Z7IsSpacej_exit260_thread399$$bb1_i251$452}else{if(U0==319){var JQ=WM;var JO=(((JQ))>>>0)>9471;var JN=WM;var W8=(((JN))>>>0)<=9631;var af2=(JO)&(W8);if(af2){U0=320}else{U0=321}if(U0==320){Fb=1;adJ=1;U0=330;break $_Z7IsSpacej_exit260_thread399$$bb1_i251$452}else{if(U0==321){var W7=WM;Un=W7;var W6=Un;var W4=(((W6))>>>0)<=255;if(W4){U0=323}else{U0=322}if(U0==323){var W2=Un;var W0=xE(W2);Fc=W0;WN=W0;Fb=W0;adJ=W0;var WY=(((W0))|0)!=0;if(WY){U0=330;break $_Z7IsSpacej_exit260_thread399$$bb1_i251$452}else{U0=324;break $_Z7IsSpacej_exit260_thread399$$bb1_i251$452}}else{if(U0==322){Fc=0;WN=0;Fb=0;adJ=0;U0=324;break $_Z7IsSpacej_exit260_thread399$$bb1_i251$452}}}}}}}while(0);$bb187$$bb198$461:do{if(U0==324){var WW=uA[((agc)>>2)];var WU=kr(WW);var WS=(((WU))|0)==0;if(WS){U0=330;break $bb187$$bb198$461}CA=1;SX=1;var WL=uA[((age)>>2)];var WK=(((WL))|0)!=32;if(WK){U0=326}else{U0=327}if(U0==326){agv=32;i=1;agn=326;U0=425;break $bb66$$bb70$133}else{if(U0==327){var WJ=KS;var WH=(WJ)|128;KS=WH;var WF=Za;var WD=(((WF))|0)>0;if(WD){U0=328}else{U0=329}if(U0==328){var WB=Za;var Wz=(((WB)-1)&4294967295);var Wx=Za;var Wv=(((Wx)-1)&4294967295);var Wq=((alC+Wv*12)&4294967295);var Wp=((Wq)&4294967295);var Wo=uA[((Wp)>>2)];var Wm=(Wo)|16384;var Wk=((alC+Wz*12)&4294967295);var Wi=((Wk)&4294967295);uA[((Wi)>>2)]=Wm}agv=32;agn=329;U0=425;break $bb66$$bb70$133}}}}while(0);CA=0;SX=0;var Wg=uA[((akg)>>2)];var We=(((Wg))|0)!=32;var U6=uA[((agc)>>2)];var Wc=(((U6))|0)!=32;var I6=(We)|(Wc);if(I6){U0=332}else{U0=331}if(U0==332){var Wa=(((U6))|0)==45;if(Wa){U0=333}else{U0=334}if(U0==333){var V1=uA[((U4)>>2)];var V0=(((V1)+1)&4294967295);uA[((U4)>>2)]=V0;agv=32;T6=4;agn=333;U0=425;break $bb66$$bb70$133}else{if(U0==334){var VZ=uA[((age)>>2)];var VX=(((VZ))|0)!=32;if(VX){U0=337}else{U0=335}$bb208$$bb204$476:do{if(U0==335){var VV=ahn;var VT=(((VV)-2)&4294967295);var VR=((Lu+VT)&4294967295);var VP=la[((VR)>>0)];var VN=iB((VP),8,0);var VK=kr(VN);var VD=(((VK))|0)==0;if(VD){U0=337;break $bb208$$bb204$476}var VC=uA[((akg)>>2)];var VB=kr(VC);var Vz=(((VB))|0)!=0;if(Vz){U0=337;break $bb208$$bb204$476}Co=1;Sy=1;var Vx=ahn;var Vv=((Lu+Vx)&4294967295);la[((Vv)>>0)]=32;var Vt=ahn;var Vr=(((Vt)+1)&4294967295);ahn=Vr;var Vp=Za;var Vn=((alC+Vp*12)&4294967295);var Vh=((Vn+4)&4294967295);var Vg=uW[((Vh)>>1)];var Vf=(((Vg)+1)&65535);var Ve=((alC+Vp*12)&4294967295);var Vd=((Ve+4)&4294967295);uW[((Vd)>>1)]=Vf;U0=424;break $bb66$$bb70$133}}while(0);Co=0;Sy=0;U0=424;break $bb66$$bb70$133}}}else{if(U0==331){agv=32;T6=4;agn=331;U0=425;break $bb66$$bb70$133}}}else{if(U0==339){var Vc=agv;var Vb=(((Vc))|0)==46;if(Vb){U0=340}else{U0=357}if(U0==340){var Va=uA[((age)>>2)];var U9=(((Va))|0)==46;if(U9){U0=341}else{U0=342}if(U0==341){agv=32;i=1;agn=341;U0=425;break $bb66$$bb70$133}else{if(U0==342){var U7=Za;var UZ=(((U7))|0)<=0;if(UZ){U0=345}else{U0=343}$bb220$$bb216$488:do{if(U0==343){var UY=Za;var UX=(((UY)-1)&4294967295);var UW=((alC+UX*12)&4294967295);var UV=((UW)&4294967295);var UU=uA[((UV)>>2)];var US=(UU)&256;var UR=(((US))|0)!=0;if(UR){U0=345;break $bb220$$bb216$488}var UQ=uA[((akg)>>2)];var UP=kr(UQ);var UL=(((UP))|0)==0;if(UL){U0=345;break $bb220$$bb216$488}akv=1;My=1;var UK=Za;var UJ=(((UK)-1)&4294967295);var UI=Za;var UG=(((UI)-1)&4294967295);var UF=((alC+UG*12)&4294967295);var UE=((UF)&4294967295);var UD=uA[((UE)>>2)];var UC=(UD)|65536;var UB=((alC+UJ*12)&4294967295);var Uz=((UB)&4294967295);uA[((Uz)>>2)]=UC;var Uy=uA[((agc)>>2)];V2=Uy;var Ux=V2;var Uw=(((Ux))|0)==0;if(Uw){U0=347}else{U0=348}if(U0==347){Fd=0}else{if(U0==348){var Uu=V2;var Ut=(((Uu))>>>0)>9471;var Ur=V2;var Uq=(((Ur))>>>0)<=9631;var afY=(Ut)&(Uq);if(afY){U0=349}else{U0=350}if(U0==349){Fd=1}else{if(U0==350){var Up=V2;T7=Up;var Uo=T7;var Uj=(((Uo))>>>0)<=255;if(Uj){U0=351}else{U0=352}if(U0==351){var Ui=T7;var Uh=xE(Ui);Fe=Uh}else{if(U0==352){Fe=0}}var Ug=Fe;V3=Ug;var JL=V3;Fd=JL}}}}var Uf=Fd;ac9=Uf;var ago=ac9;var Ud=(((ago))|0)!=0;var Uc=uA[((agc)>>2)];var Ub=(((Uc))|0)==45;var M2=(Ud)|(Ub);if(M2){U0=356}else{U0=355}if(U0==356){akt=1;Mw=1;agv=32;agn=356;U0=425;break $bb66$$bb70$133}else{if(U0==355){akt=0;Mw=0;U0=424;break $bb66$$bb70$133}}}}while(0);akv=0;My=0;U0=424;break $bb66$$bb70$133}}}else{if(U0==357){var Ua=agv;var T9=(((Ua))|0)==39;if(T9){U0=358}else{U0=387}if(U0==358){var Pr=uA[((akg)>>2)];var Pq=(((Pr))|0)==46;if(Pq){U0=360}else{U0=359}$bb233$$bb232$510:do{if(U0==359){var Po=uA[((akg)>>2)];var Pm=bJ(Po);var Pk=(((Pm))|0)!=0;if(Pk){U0=360;break $bb233$$bb232$510}else{U0=362;break $bb233$$bb232$510}}}while(0);$bb233$$bb239$512:do{if(U0==360){var Pi=uA[((agc)>>2)];var Pg=kr(Pi);var Pe=(((Pg))|0)==0;if(Pe){U0=362;break $bb233$$bb239$512}akq=1;Mu=1;BH=0;U0=424;break $bb66$$bb70$133}}while(0);akq=0;Mu=0;var Pc=uA[((akg)>>2)];var Pa=Nj;var O5=((Pa+700)&4294967295);var O4=uA[((O5)>>2)];abN=O4;VE=Pc;$bb3_i283$516:while(1){var OQ=abN;var OO=uA[((OQ)>>2)];var OI=(((OO))|0)!=0;if(!(OI)){U0=366;break $bb3_i283$516}var O2=abN;var O0=uA[((O2)>>2)];var OY=VE;var OW=(((O0))|0)==(((OY))|0);var OU=abN;if(OW){U0=367;break $bb3_i283$516}var OS=((OU+4)&4294967295);abN=OS;U0=365;continue $bb3_i283$516}$wcschr_exit287_thread$$wcschr_exit287$520:do{if(U0==366){Ff=0;acS=0}else{if(U0==367){Ff=OU;acS=OU;var OH=(OU)==0;if(OH){U0=371;break $wcschr_exit287_thread$$wcschr_exit287$520}var OF=afX;var OD=(((OF))|0)!=32;if(OD){U0=371;break $wcschr_exit287_thread$$wcschr_exit287$520}BH=0;var OB=uA[((agc)>>2)];var Oz=(((OB))|0)==32;if(!(Oz)){U0=424;break $bb66$$bb70$133}var Ox=uA[((U4)>>2)];var Ov=(((Ox)+1)&4294967295);uA[((U4)>>2)]=Ov;U0=424;break $bb66$$bb70$133}}}while(0);var Ot=uA[((age)>>2)];var Or=(((Ot))|0)!=115;if(Or){agn=371;U0=375}else{agn=371;U0=372}if(U0==372){var Om=BH;var Ol=(((Om))|0)!=0;if(Ol){U0=374}else{U0=373}if(U0==374){var U3=uA[((age)>>2)];agn=374}else{if(U0==373){agv=32;agn=373;U0=425;break $bb66$$bb70$133}}}var Oj=agn==374?U3:(Ot);U1=Oj;var Oh=(((Oj))|0)==0;if(Oh){U0=376}else{U0=377}if(U0==376){Fh=0}else{if(U0==377){var Of=U1;var Od=(((Of))>>>0)>9471;var Ob=U1;var N9=(((Ob))>>>0)<=9631;var afV=(Od)&(N9);if(afV){U0=378}else{U0=379}if(U0==378){Fh=1}else{if(U0==379){var N7=U1;T3=N7;var N5=T3;var N0=(((N5))>>>0)<=255;if(N0){U0=380}else{U0=381}if(U0==380){var NZ=T3;var NX=xE(NZ);Fi=NX}else{if(U0==381){Fi=0}}var NV=Fi;U5=NV;var DU=U5;Fh=DU}}}}var NT=Fh;acA=NT;var adV=acA;var NR=(((adV))|0)!=0;var NP=oD((NR),1,0);Mr=NP;var Nl=iB((NP),8,0)!=0;if(Nl){U0=384}else{U0=385}if(U0==384){BH=1}else{if(U0==385){BH=0}}T6=4;agv=32;agn=386;U0=425;break $bb66$$bb70$133}else{if(U0==387){var NN=agv;Vj=((qa)&4294967295);Qb=NN;Tc=0;$bb3_i313$549:while(1){var Ny=Vj;var Nx=Tc;var Nw=((Ny+2*Nx)&4294967295);var Nv=uW[((Nw)>>1)];var Nu=iB((Nv),16,0)!=0;if(!(Nu)){U0=392;break $bb3_i313$549}var NL=Vj;var NJ=Tc;var NG=((NL+2*NJ)&4294967295);var NF=xV[((NG)>>1)];var ND=oD((NF),16,0);var NC=Qb;var NB=(((ND))|0)==(((NC))|0);var NA=Tc;var Nz=(((NA)+1)&4294967295);if(NB){U0=389;break $bb3_i313$549}Tc=Nz;U0=391;continue $bb3_i313$549}if(U0==392){Fk=0}else{if(U0==389){Fk=Nz}}var Nt=Fk;aaR=Nt;var ady=aaR;var Ns=(((ady))|0)!=0;var Nr=oD((Ns),1,0);Mq=Nr;var Nb=iB((Nr),8,0)!=0;if(Nb){U0=394}else{U0=395}if(U0==394){agv=32;agn=394;U0=425;break $bb66$$bb70$133}else{if(U0==395){var Nq=agv;PS=Nq;var Np=PS;var No=(((Np))>>>0)<=255;if(No){U0=397}else{U0=396}if(U0==397){var Nn=PS;var Nm=(((Nn)-48)&4294967295);var Ni=(((Nm))>>>0)<=9;var Nh=oD((Ni),1,0);agO=Nh;aax=Nh;var Ng=(((Nh))|0)!=0;if(!(Ng)){U0=424;break $bb66$$bb70$133}var Nf=Nj;var Ne=((Nf)&4294967295);var Nd=((Ne+250)&4294967295);var Nc=la[((Nd)>>0)];var Na=iB((Nc),8,0)==0;if(Na){U0=408}else{U0=399}$bb261$$bb258$563:do{if(U0==399){var M9=uA[((age)>>2)];var M8=kr(M9);var M0=(((M8))|0)==0;if(M0){U0=408;break $bb261$$bb258$563}var MZ=uA[((agc)>>2)];PD=MZ;var MY=PD;Nk=MY;var MX=Nk;var MW=(((MX))>>>0)<=255;if(MW){U0=402}else{U0=401}$iswdigit_exit_i$$iswdigit_exit_thread_i$566:do{if(U0==402){var MV=Nk;var MT=(((MV)-48)&4294967295);var MS=(((MT))>>>0)<=9;var MR=oD((MS),1,0);agQ=MR;PE=MR;var MP=(((MR))|0)!=0;if(!(MP)){U0=404;break $iswdigit_exit_i$$iswdigit_exit_thread_i$566}agP=1;U0=406;break $iswdigit_exit_i$$iswdigit_exit_thread_i$566}else{if(U0==401){agQ=0;PE=0;U0=404;break $iswdigit_exit_i$$iswdigit_exit_thread_i$566}}}while(0);if(U0==404){var MM=PD;var ML=(((MM))>>>0)>2405;var MK=PD;var MJ=(((MK))>>>0)<=2415;var abZ=(ML)&(MJ);if(abZ){U0=405}else{U0=407}if(U0==405){agP=1}else{if(U0==407){agP=0;aac=0;akn=1;U0=409;break $bb261$$bb258$563}}}aac=1;U0=408;break $bb261$$bb258$563}}while(0);if(U0==408){akn=0}var MI=akn;Mp=MI;var MH=Mp;var MU=iB((MH),8,0)!=0;var afP=(MU)^1;var Bc=oD((afP),1,0);var MQ=iB((Bc),8,0)!=0;if(!(MQ)){U0=424;break $bb66$$bb70$133}var MG=uA[((age)>>2)];var MF=(((MG))|0)==32;if(MF){U0=420}else{U0=411}$bb276$$bb268$580:do{if(U0==411){var ME=uA[((age)>>2)];Oo=ME;var MC=Oo;var H2=(((MC))>>>0)<=255;if(H2){U0=413}else{U0=412}$iswdigit_exit369$$iswdigit_exit369_thread$582:do{if(U0==413){var H1=Oo;var HY=(((H1)-48)&4294967295);var HW=(((HY))>>>0)<=9;var HU=oD((HW),1,0);agV=HU;YS=HU;var HS=(((HU))|0)!=0;if(!(HS)){U0=414;break $iswdigit_exit369$$iswdigit_exit369_thread$582}var U2=uA[((age)>>2)];var Hp=(((U2))|0)!=32;if(Hp){U0=422;break $bb276$$bb268$580}else{U0=420;break $bb276$$bb268$580}}else{if(U0==412){agV=0;YS=0}}}while(0);var HQ=Nj;var HO=((HQ)&4294967295);var HM=((HO+208)&4294967295);var HK=uA[((HM)>>2)];var HG=uA[((age)>>2)];var HF=(((HK))|0)!=(((HG))|0);if(HF){U0=417}else{U0=415}$bb272$$bb270$587:do{if(U0==415){var HD=abQ;var HB=(((HD))|0)<=0;if(HB){U0=418}else{U0=416}if(U0==416){var Hz=Nj;var Hx=((Hz)&4294967295);var Hv=((Hx+208)&4294967295);var Ht=uA[((Hv)>>2)];var Hr=(((Ht))|0)==44;if(Hr){U0=417;break $bb272$$bb270$587}}abQ=1;U0=424;break $bb66$$bb70$133}}while(0);agv=32;i=1;agn=417;U0=425;break $bb66$$bb70$133}}while(0);$bb276$$bb280$593:do{if(U0==420){var Hl=ahn;var Hk=(((Hl)-2)&4294967295);var Hi=((Lu+Hk)&4294967295);var Hg=la[((Hi)>>0)];var He=iB((Hg),8,0);var Hc=kr(He);var G9=(((Hc))|0)==0;if(G9){U0=422;break $bb276$$bb280$593}var G7=uA[((akg)>>2)];var G5=kr(G7);var G3=(((G5))|0)!=0;if(G3){U0=422;break $bb276$$bb280$593}akm=1;Mn=1;var GZ=ahn;var GY=((Lu+GZ)&4294967295);la[((GY)>>0)]=32;var GW=ahn;var GU=(((GW)+1)&4294967295);ahn=GU;var GR=Za;var GP=((alC+GR*12)&4294967295);var GM=((GP+4)&4294967295);var GK=uW[((GM)>>1)];var GI=(((GK)+1)&65535);var GG=((alC+GR*12)&4294967295);var GC=((GG+4)&4294967295);uW[((GC)>>1)]=GI;U0=424;break $bb66$$bb70$133}}while(0);akm=0;Mn=0;U0=424;break $bb66$$bb70$133}else{if(U0==396){agO=0;aax=0;U0=424;break $bb66$$bb70$133}}}}}}}}}}}}}}}}}while(0);$bb283_thread$$bb283thread_pre_split$$bb283$599:do{if(U0==425){var alh=agn==417?32:(agn==373?32:(agn==386?32:(agn==341?32:(agn==356?32:(agn==331?32:(agn==333?32:(agn==329?32:(agn==326?32:(agn==285?712:(agn==293?32:(agn==101?32:(agn==97?32:(agn==91?32:(32))))))))))))));N1=alh;U0=428;break $bb283_thread$$bb283thread_pre_split$$bb283$599}else{if(U0==424){var UN=agv;agn=424;U0=426;break $bb283_thread$$bb283thread_pre_split$$bb283$599}}}while(0);$bb1_i376$$bb283$602:do{if(U0==426){var GA=agn==424?UN:(agn==307?KI:(agn==292?LP:(BJ)));N1=GA;var Gy=(((GA))|0)==0;if(!(Gy)){U0=428;break $bb1_i376$$bb283$602}agW=0;U0=434;break $bb1_i376$$bb283$602}}while(0);if(U0==428){var Gw=N1;var Gu=(((Gw))>>>0)>9471;var Gs=N1;var Gq=(((Gs))>>>0)<=9631;var abP=(Gu)&(Gq);if(abP){U0=429}else{U0=430}if(U0==429){agW=1}else{if(U0==430){var Go=N1;Mv=Go;var Gm=Mv;var Gk=(((Gm))>>>0)<=255;if(Gk){U0=431}else{U0=432}if(U0==431){var Gf=Mv;var Ge=xE(Gf);agY=Ge}else{if(U0==432){agY=0}}var Gd=agY;N2=Gd;var Cm=N2;agW=Cm}}}var Gc=agW;YI=Gc;var acc=YI;var Gb=(((acc))|0)!=0;var Ga=oD((Gb),1,0);Ma=Ga;var MA=iB((Ga),8,0)!=0;if(MA){U0=435}else{U0=464}$bb285$$bb319$615:do{if(U0==435){var F9=uA[((age)>>2)];var F8=(((F9))|0)==32;if(F8){U0=436}else{U0=437}if(U0==436){var F7=KS;var F6=(F7)|262144;KS=F6;U0=469;continue $bb324$56}else{if(U0==437){var F4=uA[((ajo)>>2)];var F3=(((F4))|0)==9;var F2=uA[((ajo)>>2)];var F1=(((F2))|0)==10;var M1=(F3)|(F1);if(M1){U0=438}else{U0=439}if(U0==438){var F0=SC;var FZ=(F0)|262144;SC=FZ}var FY=i;var FX=(((FY))|0)!=0;if(FX){U0=440}else{U0=447}if(U0==440){agr=0;var FW=uA[((U4)>>2)];var FV=(((FW)-1)&4294967295);agq=FV;while(1){var FJ=agq;var FI=Um;var FH=(((FJ))|0)<(((FI))|0);if(FH){U0=446;break}var FG=agq;var FF=((agg+FG*2)&4294967295);var FE=uW[((FF)>>1)];var FD=iB((FE),16,0)!=0;if(!(FD)){U0=446;break}var FR=agq;var FQ=((agg+FR*2)&4294967295);var FP=uW[((FQ)>>1)];var FO=iB((FP),16,0)>0;if(FO){U0=442}else{U0=443}if(U0==442){var FN=agr;var FM=(((FN)+1)&4294967295);agr=FM}var FL=agq;var FK=(((FL)-1)&4294967295);agq=FK;U0=444;continue}var FC=Za;var FB=agr;var FA=(((FB))&255);var Fz=((alC+FC*12)&4294967295);var Fy=((Fz+10)&4294967295);la[((Fy)>>0)]=FA}var Fw=uA[((U4)>>2)];Um=Fw;var Fv=ahn;var Fu=((Lu+Fv)&4294967295);la[((Fu)>>0)]=32;var Ft=ahn;var Fs=(((Ft)+1)&4294967295);ahn=Fs;var Fr=Za;var Fp=(((Fr))|0)<=298;if(Fp){U0=448}else{U0=462}$bb299$$bb316$634:do{if(U0==448){var Fo=Za;var Fn=((alC+Fo*12)&4294967295);var Fl=((Fn+4)&4294967295);var A0=xV[((Fl)>>1)];var AZ=oD((A0),16,0);var AY=ahn;var AW=(((AZ))|0)<(((AY))|0);if(!(AW)){U0=462;break $bb299$$bb316$634}var AU=afU;var AS=(((AU))|0)>0;if(AS){U0=450}else{U0=451}if(U0==450){var AQ=uA[((l2)>>2)];var AO=(((AQ)-1)&4294967295);var AM=uA[((l2)>>2)];var AK=(((AM)-1)&4294967295);var e=((p6+AK*4)&4294967295);var am0=uA[((e)>>2)];var amZ=(am0)|128;var amW=((p6+AO*4)&4294967295);uA[((amW)>>2)]=amZ;var amU=Za;var amS=Za;var amQ=((alC+amS*12)&4294967295);var amO=((amQ)&4294967295);var amM=uA[((amO)>>2)];var amK=(amM)|64;var amG=((alC+amU*12)&4294967295);var amF=((amG)&4294967295);uA[((amF)>>2)]=amK;afU=0}var amE=Za;var amC=uA[((hX)>>2)];var amA=(((amC))&255);var amy=((alC+amE*12)&4294967295);var amw=((amy+8)&4294967295);la[((amw)>>0)]=amA;var amt=Za;var amr=Za;var amp=((alC+amr*12)&4294967295);var amk=((amp)&4294967295);var amj=uA[((amk)>>2)];var ami=akj;var amg=KS;var aj8=la[((wh)>>0)];var ame=(aj8)?2048:0;var amc=(ami)|(amj);var ama=(amc)|(amg);var al8=(ama)|(ame);var al6=((alC+amt*12)&4294967295);var al4=((al6)&4294967295);uA[((al4)>>2)]=al8;var alY=Za;var alX=ajT;var alW=(((alX))&255);var alU=((alC+alY*12)&4294967295);var alS=((alU+9)&4294967295);la[((alS)>>0)]=alW;var alQ=uA[((hX)>>2)];var alO=(((alQ))|0)>0;if(alO){U0=452}else{U0=455}if(U0==452){var alM=ahn;agr=alM;var alK=Za;var alI=((alC+alK*12)&4294967295);var alB=((alI+4)&4294967295);var alA=xV[((alB)>>1)];var alz=oD((alA),16,0);var aly=agr;var alx=(((alz))|0)<(((aly))|0);var alw=agr;if(alx){agn=452;U0=453}else{agn=452;U0=454}$bb304$$bb306$642:do{if(U0==453){while(1){var alv=agn==453?ale:(alw);var alu=agr;var alt=(((alu)-1)&4294967295);var als=((Lu+alt)&4294967295);var alr=la[((als)>>0)];var alq=((Lu+alv)&4294967295);la[((alq)>>0)]=alr;var alp=agr;var alo=(((alp)-1)&4294967295);agr=alo;var aln=Za;var alm=((alC+aln*12)&4294967295);var all=((alm+4)&4294967295);var alk=xV[((all)>>1)];var alj=oD((alk),16,0);var ali=agr;var alf=(((alj))|0)<(((ali))|0);var ale=agr;if(alf){agn=453;U0=453;continue}else{agn=453;U0=454;break $bb304$$bb306$642}}}}while(0);var B1=agn==452?alw:(ale);var ald=((Lu+B1)&4294967295);la[((ald)>>0)]=32;var alb=Za;var ala=((alC+alb*12)&4294967295);var ak9=((ala+4)&4294967295);var ak8=uW[((ak9)>>1)];var ak7=(((ak8)+1)&65535);var ak6=((alC+alb*12)&4294967295);var ak5=((ak6+4)&4294967295);uW[((ak5)>>1)]=ak7;var ak3=ahn;var ak2=(((ak3)+1)&4294967295);ahn=ak2}var ak1=Za;var ak0=(((ak1)+1)&4294967295);Za=ak0;var akZ=Za;var akY=ahn;var akX=(((akY))&65535);var akW=((alC+akZ*12)&4294967295);var akV=((akW+4)&4294967295);uW[((akV)>>1)]=akX;var akU=Za;var akQ=((alC+akU*12)&4294967295);var akP=((akQ)&4294967295);uA[((akP)>>2)]=0;var akO=uA[((U4)>>2)];agr=akO;var akN=agr;var akM=((agg+akN*2)&4294967295);var akL=uW[((akM)>>1)];var akK=iB((akL),16,0)<=0;if(akK){U0=456}else{U0=457}$bb308$$bb310$647:do{if(U0==456){while(1){var akJ=agr;var akI=(((akJ)+1)&4294967295);agr=akI;var akH=agr;var ajj=((agg+akH*2)&4294967295);var ajh=uW[((ajj)>>1)];var ajf=iB((ajh),16,0)<=0;if(ajf){U0=456;continue}else{U0=457;break $bb308$$bb310$647}}}}while(0);var ajd=Za;var ajb=agr;var ai9=((agg+ajb*2)&4294967295);var ai7=uW[((ai9)>>1)];var ai5=((alC+ajd*12)&4294967295);var ai3=((ai5+6)&4294967295);uW[((ai3)>>1)]=ai7;agq=0;var ai1=agr;var aiW=((agg+ai1*2)&4294967295);var aiV=uW[((aiW)>>1)];var aiT=iB((aiV),16,0)!=0;if(aiT){U0=458}else{U0=461}$bb311$$bb315$651:do{if(U0==458){while(1){var aiR=agr;var aiN=((agg+aiR*2)&4294967295);var aiL=uW[((aiN)>>1)];var aiJ=iB((aiL),16,0)!=-1;var aiG=oD((aiJ),1,0);LD=aiG;var aiE=agr;var aiC=(((aiE)+1)&4294967295);agr=aiC;var GO=iB((aiG),8,0)!=0;if(GO){U0=460}else{U0=459}if(U0==460){var air=agq;var aip=(((air)+1)&4294967295);agq=aip}var aiz=agr;var aiy=((agg+aiz*2)&4294967295);var aiw=uW[((aiy)>>1)];var aiu=iB((aiw),16,0)!=0;if(aiu){U0=458;continue}else{U0=461;break $bb311$$bb315$651}}}}while(0);var ain=Za;var ail=agq;var aij=(((ail))&255);var aih=((alC+ain*12)&4294967295);var aie=((aih+10)&4294967295);la[((aie)>>0)]=aij;var aid=SC;KS=aid;SC=0;uA[((hX)>>2)]=0;ajT=0;akj=1;I2=0}}while(0);var aia=i;var ah8=(((aia))|0)!=0;if(!(ah8)){U0=466;break $bb285$$bb319$615}var ah6=VF;uA[((U4)>>2)]=ah6;uA[((ako)>>2)]=0;i=0}}}else{if(U0==464){var ah4=ahn;var ah2=(((ah4))|0)<=695;if(!(ah2)){U0=466;break $bb285$$bb319$615}var ah0=ahn;var ahY=((Lu+ah0)&4294967295);var ahW=agv;var ahT=zD(ahW,ahY);var ahS=ahn;var ahQ=(((ahS)+(ahT))&4294967295);ahn=ahQ}}}while(0);var ahN=uA[((hX)>>2)];var ahL=T6;var ahJ=(((ahL))|0)>(((ahN))|0);if(ahJ){U0=467}else{U0=468}if(U0==467){var ahH=T6;uA[((hX)>>2)]=ahH}T6=0;U0=469;continue $bb324$56}var ahu=Za;var aht=(((ahu))|0)==0;if(aht){U0=472}else{U0=474}$bb328$$bb330$667:do{if(U0==472){var ahs=afU;var ahr=(((ahs))|0)>0;if(!(ahr)){U0=474;break $bb328$$bb330$667}var ahq=uA[((l2)>>2)];var ahp=(((ahq)-1)&4294967295);var aho=uA[((l2)>>2)];var ahm=(((aho)-1)&4294967295);var ahl=((p6+ahm*4)&4294967295);var ahj=uA[((ahl)>>2)];var ahi=(ahj)|128;var ahh=((p6+ahp*4)&4294967295);uA[((ahh)>>2)]=ahi;var ahg=Za;var ahf=Za;var ahe=((alC+ahf*12)&4294967295);var ahd=((ahe)&4294967295);var ahc=uA[((ahd)>>2)];var aha=(ahc)|64;var ag9=((alC+ahg*12)&4294967295);var ag8=((ag9)&4294967295);uA[((ag8)>>2)]=aha;Za=1}}while(0);var ag7=ahn;var ag6=(((ag7)-1)&4294967295);var ag5=((Lu+ag6)&4294967295);var ag3=Nj;var ag2=((ag3+8292)&4294967295);uA[((ag2)>>2)]=ag5;var ag1=ahn;var ag0=((Lu+ag1)&4294967295);la[((ag0)>>0)]=0;var agN=((alC)&4294967295);var agM=((agN+8)&4294967295);la[((agM)>>0)]=0;var agL=Za;var agK=((alC+agL*12)&4294967295);var agJ=((agK+8)&4294967295);la[((agJ)>>0)]=8;var agI=Za;var agH=(((agI))|0)>0;if(agH){U0=475}else{U0=482}$bb331$$bb342$671:do{if(U0==475){var agG=Za;var agF=(((agG)-1)&4294967295);ahn=agF;agn=475;while(1){var agB=agn==476?agC:(agF);var agA=(((agB))|0)<=0;if(agA){U0=479;break}var agz=ahn;var agy=((alC+agz*12)&4294967295);var agx=((agy+4)&4294967295);var agw=xV[((agx)>>1)];var agu=oD((agw),16,0);var agt=((Lu+agu)&4294967295);var ags=la[((agt)>>0)];var aeX=iB((ags),8,0);var aeW=s7(aeX);var aeU=(((aeW))|0)==0;if(aeU){U0=479;break}akh=1;Lk=1;var agE=ahn;var agC=(((agE)-1)&4294967295);ahn=agC;agn=476;U0=477;continue}akh=0;Lk=0;var aeS=ahn;var aeQ=ahn;var aeO=((alC+aeQ*12)&4294967295);var aeL=((aeO)&4294967295);var aeJ=uA[((aeL)>>2)];var aeH=(aeJ)|16;var aeF=((alC+aeS*12)&4294967295);var aeB=((aeF)&4294967295);uA[((aeB)>>2)]=aeH;var aeA=afG;var aey=(aeA)&4194304;var aew=(((aey))|0)!=0;if(!(aew)){U0=482;break $bb331$$bb342$671}var aeu=Za;var aes=(((aeu)-1)&4294967295);var aeq=((alC+aes*12)&4294967295);var aeo=((aeq)&4294967295);var aem=uA[((aeo)>>2)];var aek=(aem)&256;var aeg=(((aek))|0)==0;if(!(aeg)){U0=482;break $bb331$$bb342$671}var aef=Za;var aed=(((aef)-1)&4294967295);var aeb=Za;var ad9=(((aeb)-1)&4294967295);var ad7=((alC+ad9*12)&4294967295);var ad5=((ad7)&4294967295);var ad3=uA[((ad5)>>2)];var ad1=(ad3)|65536;var adZ=((alC+aed*12)&4294967295);var adU=((adZ)&4294967295);uA[((adU)>>2)]=ad1}}while(0);var adS=((alC)&4294967295);var adQ=((adS)&4294967295);var adO=uA[((adQ)>>2)];var adM=(adO)|512;var adK=((alC)&4294967295);var adH=((adK)&4294967295);uA[((adH)>>2)]=adM;ahn=0;var adF=ahn;var adD=Za;var adB=(((adF))|0)<(((adD))|0);if(adB){U0=483}else{U0=548}$bb343_lr_ph$$bb424$681:do{if(U0==483){var adx=((akf)&4294967295);var adw=((akf+130)&4294967295);var abV=(akf);var adu=((akf)&4294967295);var ads=((akf)&4294967295);var adq=((akf+1)&4294967295);var ado=((akf+130)&4294967295);var adm=((akf+1)&4294967295);var adk=((akf)&4294967295);var adi=((akf+2)&4294967295);var adg=((akf+2)&4294967295);$bb343$683:while(1){var adb=uA[((vC)>>2)];var ada=(((adb)+1)&4294967295);uA[((vC)>>2)]=ada;var ac8=uA[((wL)>>2)];var ac7=(((ac8))|0)>0;if(ac7){U0=485}else{U0=487}$bb344$$bb346$685:do{if(U0==485){var ac6=uA[((wL)>>2)];var ac5=(((ac6)-1)&4294967295);uA[((wL)>>2)]=ac5;var ac4=uA[((wL)>>2)];var ac3=(((ac4))|0)==0;if(!(ac3)){U0=487;break $bb344$$bb346$685}uA[((mo)>>2)]=0;U0=488;break $bb344$$bb346$685}}while(0);$bb347$$bb346$688:do{if(U0==487){var UM=uA[((mo)>>2)];var ac2=(((UM))|0)!=0;if(ac2){U0=547;break $bb347$$bb346$688}else{U0=488;break $bb347$$bb346$688}}}while(0);$bb347$$bb422$690:do{if(U0==488){var ac1=ahn;var acZ=((alC+ac1*12)&4294967295);var acY=((acZ+4)&4294967295);var acX=xV[((acY)>>1)];var acW=oD((acX),16,0);var acV=((Lu+acW)&4294967295);agh=acV;var acU=agh;agD=acU;var acT=agD;var acR=((acT)&4294967295);var acQ=la[((acR)>>0)];var acP=iB((acQ),8,0);OK=acP;var acO=(((acP))>>>0)<=255;if(acO){U0=490}else{U0=489}$iswdigit_exit362$$iswdigit_exit362_thread$692:do{if(U0==490){var acN=OK;var acM=(((acN)-48)&4294967295);var acL=(((acM))>>>0)<=9;var acK=oD((acL),1,0);agU=acK;Y7=acK;var acJ=(((acK))|0)!=0;if(!(acJ)){U0=508;break $iswdigit_exit362$$iswdigit_exit362_thread$692}var acI=Nj;var acH=((acI)&4294967295);var acG=((acH+192)&4294967295);var acF=uA[((acG)>>2)];var acD=(((acF))|0)!=1227133512;if(!(acD)){U0=508;break $iswdigit_exit362$$iswdigit_exit362_thread$692}agi=adx;$bb361$696:while(1){var Y5=agi;var Y3=(adw)>(Y5);if(!(Y3)){U0=507;break $bb361$696}var acC=agh;var acB=la[((acC)>>0)];var acz=iB((acB),8,0);O6=acz;var acy=O6;var acx=(((acy))>>>0)<=255;if(acx){U0=495}else{U0=494}$iswdigit_exit355$$iswdigit_exit355_thread$699:do{if(U0==495){var act=O6;var acs=(((act)-48)&4294967295);var acp=(((acs))>>>0)<=9;var aco=oD((acp),1,0);agT=aco;Zi=aco;var acn=(((aco))|0)!=0;var acm=agh;var acl=ll[((acm)>>0)];if(acn){agn=495}else{agn=495;U0=497;break $iswdigit_exit355$$iswdigit_exit355_thread$699}var ack=agi;la[((ack)>>0)]=acl;var acj=agi;var aci=((acj+1)&4294967295);agi=aci;var ach=agh;var acg=((ach+1)&4294967295);agh=acg;U0=506;continue $bb361$696}else{if(U0==494){agT=0;Zi=0;var acw=agh;var acu=la[((acw)>>0)];agn=494}}}while(0);var aaJ=agn==494?acu:(acl);var aaI=iB((aaJ),8,0);var aaG=Nj;var aaE=((aaG)&4294967295);var aaC=((aaE+204)&4294967295);var aaA=uA[((aaC)>>2)];var aay=(((aaI))|0)!=(((aaA))|0);if(aay){U0=505;break $bb361$696}var aav=agh;var aat=((aav+1)&4294967295);var aar=la[((aat)>>0)];var aan=iB((aar),8,0)!=32;if(aan){U0=505;break $bb361$696}var aam=agh;var aak=((aam+2)&4294967295);var aai=la[((aak)>>0)];var aag=iB((aai),8,0);O7=aag;var aae=O7;var aab=(((aae))>>>0)<=255;if(!(aab)){U0=500;break $bb361$696}var Z9=O7;var Z7=(((Z9)-48)&4294967295);var Z5=(((Z7))>>>0)<=9;var Z0=oD((Z5),1,0);agS=Z0;ZB=Z0;var ZZ=(((Z0))|0)==0;if(ZZ){U0=505;break $bb361$696}var ZY=agh;var ZW=((ZY+3)&4294967295);var ZU=la[((ZW)>>0)];var ZR=iB((ZU),8,0)==32;if(ZR){U0=505;break $bb361$696}var ZP=agh;var ZM=((ZP+4)&4294967295);var ZK=la[((ZM)>>0)];var ZI=iB((ZK),8,0)==32;if(ZI){U0=505;break $bb361$696}var ZD=agh;var ZC=((ZD+2)&4294967295);agh=ZC;var ZA=ahn;var Zy=(((ZA)+1)&4294967295);ahn=Zy;U0=506;continue $bb361$696}$bb362$$bb358$$iswdigit_exit348_thread$710:do{if(U0==500){agS=0;ZB=0;U0=505;break $bb362$$bb358$$iswdigit_exit348_thread$710}}while(0);if(U0==505){var Zw=agh;var Zu=(Zw);var Zs=agD;var Zq=(Zs);var Zo=(((Zu)-(Zq))&4294967295);agj=Zo;var Zm=agj;var Zh=agD;ud(Zh,32,Zm,1,0);var Zg=agi;var Zf=(Zg);var Zd=(((Zf)-(abV))&4294967295);agj=Zd;var Zb=agj;var Y8=agD;ns(Y8,adu,Zb,1,0)}var Y1=agD;agh=Y1}else{if(U0==489){agU=0;Y7=0}}}while(0);abq=0;$bb365$717:while(1){var YV=agD;var YU=abq;var YT=((YV+YU)&4294967295);var YR=la[((YT)>>0)];var YQ=iB((YR),8,0);Ps=YQ;var YP=(((YQ))>>>0)<=255;if(!(YP)){U0=511;break $bb365$717}var YN=Ps;var YM=(((YN)-48)&4294967295);var YL=(((YM))>>>0)<=9;var YK=oD((YL),1,0);agR=YK;ZT=YK;var YJ=(((YK))|0)!=0;var YH=abq;if(YJ){agn=512}else{agn=512;U0=513;break $bb365$717}var YZ=(((YH)+1)&4294967295);abq=YZ;U0=510;continue $bb365$717}if(U0==511){agR=0;ZT=0;var YO=abq;agn=511}var YG=agn==511?YO:(YH);var YF=(((YG))|0)>4;if(YF){U0=514}else{U0=536}$bb367$$bb410$724:do{if(U0==514){la[((ads)>>0)]=32;agi=adq;var YE=abq;agj=YE;agk=0;V8=0;var YD=Nj;var YC=((YD)&4294967295);var YB=((YC+212)&4294967295);var YA=uA[((YB)>>2)];var Yz=abq;var Yy=(((YA))|0)<(((Yz))|0);if(Yy){U0=516}else{U0=515}$bb369$$bb368$726:do{if(U0==515){var Yx=agD;var Yw=((Yx)&4294967295);var Yv=la[((Yw)>>0)];var Yu=iB((Yv),8,0)==48;if(Yu){U0=516;break $bb369$$bb368$726}else{U0=529;break $bb369$$bb368$726}}}while(0);if(U0==516){var Yt=ahn;var Ys=ahn;var Yq=((alC+Ys*12)&4294967295);var Yo=((Yq)&4294967295);var Yf=uA[((Yo)>>2)];var Ye=(Yf)|524288;var Yd=((alC+Yt*12)&4294967295);var Yc=((Yd)&4294967295);uA[((Yc)>>2)]=Ye}$bb399$730:while(1){var QY=agi;var QX=(ado)>(QY);if(!(QX)){U0=530;break $bb399$730}var Yb=agh;var Ya=la[((Yb)>>0)];var X9=iB((Ya),8,0);agv=X9;var X8=agv;var X6=(((X8)-48)&4294967295);var X4=(((X6))>>>0)>9;var XU=oD((X4),1,0);var XT=agh;var XS=((XT+1)&4294967295);agh=XS;var Fq=iB((XU),8,0)!=0;var agf=(Fq)^1;var CX=oD((agf),1,0);var Fm=iB((CX),8,0)!=0;if(Fm){U0=520}else{U0=518}if(U0==518){var XR=Nj;var XP=((XR)&4294967295);var XO=((XP+208)&4294967295);var XN=uA[((XO)>>2)];var XM=agv;var XK=(((XN))|0)==(((XM))|0);if(!(XK)){U0=519;break $bb399$730}}aga=0;EV=0;var XI=agv;var SW=(((XI))&255);var SV=agi;la[((SV)>>0)]=SW;var ST=agi;var SR=((ST+1)&4294967295);agi=SR;var SP=agj;var SN=(((SP)-1)&4294967295);agj=SN;var SL=(((SN))|0)<=0;if(SL){U0=522}else{U0=521}$bb389$$bb382$736:do{if(U0==521){var SJ=Nj;var SH=((SJ)&4294967295);var SF=((SH+192)&4294967295);var Sx=uA[((SF)>>2)];var Sw=agj;var Su=(((Sx))|0)>>(((Sw))|0);var Ss=(Su)&1;var Sq=(((Ss))&255);var E9=iB((Sq),8,0)!=0;var abR=(E9)^1;var abM=oD((abR),1,0);var E7=iB((abM),8,0)!=0;if(E7){U0=522;break $bb389$$bb382$736}af8=1;EN=1;var So=ahn;var Sm=((alC+So*12)&4294967295);var Sk=agk;var Si=((Eu+Sk*12)&4294967295);var Sg=agk;var Sd=(((Sg)+1)&4294967295);agk=Sd;var Sc=Si;var Sa=Sm;ns(Sc,Sa,12,1,0);var R8=Nj;var R5=((R8)&4294967295);var R3=((R5+204)&4294967295);var R1=uA[((R3)>>2)];var RZ=(((R1))|0)!=32;if(RZ){U0=524}else{U0=525}if(U0==524){var RX=Nj;var RV=((RX)&4294967295);var RS=((RV+204)&4294967295);var RR=uA[((RS)>>2)];var RP=(((RR))&255);var RN=agi;la[((RN)>>0)]=RP;var RL=agi;var RJ=((RL+1)&4294967295);agi=RJ}var RH=agi;la[((RH)>>0)]=32;var RF=agi;var RD=((RF+1)&4294967295);agi=RD;var RB=Nj;var Ry=((RB)&4294967295);var Rx=((Ry+192)&4294967295);var Rv=uA[((Rx)>>2)];var Rt=agj;var Rr=(((Rt)-1)&4294967295);var Rp=(((Rv))|0)>>(((Rr))|0);var Rn=(Rp)&1;var Rl=(((Rn))&255);var EU=iB((Rl),8,0)!=0;if(EU){U0=526}else{U0=527}if(U0==526){var Rj=agi;la[((Rj)>>0)]=48;var Rh=agi;var Re=((Rh+1)&4294967295);agi=Re;var Rd=agi;la[((Rd)>>0)]=48;var Rc=agi;var Rb=((Rc+1)&4294967295);agi=Rb}var Ra=Nj;var Q9=((Ra)&4294967295);var Q8=((Q9+192)&4294967295);var Q7=uA[((Q8)>>2)];var Q6=agj;var Q5=(((Q6)-2)&4294967295);var Q4=(((Q7))|0)>>(((Q5))|0);var Q3=(Q4)&1;var Q2=(((Q3))&255);var ET=iB((Q2),8,0)!=0;if(!(ET)){U0=529;continue $bb399$730}var Q1=agi;la[((Q1)>>0)]=48;var Q0=agi;var QZ=((Q0+1)&4294967295);agi=QZ;U0=529;continue $bb399$730}}while(0);af8=0;EN=0;U0=529;continue $bb399$730}if(U0==519){aga=1;EV=1}var QW=agh;var QV=((QW+-1)&4294967295);agh=QV;var QU=ahn;var QT=((alC+QU*12)&4294967295);var QS=agk;var QR=((Eu+QS*12)&4294967295);var QQ=QR;var QP=QT;ns(QQ,QP,24,1,0);agr=1;var QO=agr;var QM=agk;var QK=(((QO))|0)<=(((QM))|0);if(QK){U0=531}else{U0=532}$bb401$$bb403$750:do{if(U0==531){while(1){var QI=agr;var QA=agr;var Qz=((Eu+QA*12)&4294967295);var Qy=((Qz)&4294967295);var Qx=uA[((Qy)>>2)];var Qw=(Qx)&-262209;var Qu=((Eu+QI*12)&4294967295);var Qt=((Qu)&4294967295);uA[((Qt)>>2)]=Qw;var Qr=agr;var Qp=(((Qr)+1)&4294967295);agr=Qp;var Qn=agr;var Qf=agk;var Qe=(((Qn))|0)<=(((Qf))|0);if(Qe){U0=531;continue}else{U0=532;break $bb401$$bb403$750}}}}while(0);var Qd=agi;var Qc=agh;ns(Qd,Qc,16,1,0);var Qa=agi;var P9=((Qa+16)&4294967295);la[((P9)>>0)]=0;agk=0;agh=adm;var P8=agh;var P6=agi;var P4=(P8)<(P6);if(!(P4)){U0=545;break $bb367$$bb410$724}$bb404$754:while(1){var P2=ahn;var Lt=((alC+P2*12)&4294967295);var Ls=((Lt+8)&4294967295);var Lq=ll[((Ls)>>0)];var Lo=oD((Lq),8,0);var Lm=agk;var Lj=((Eu+Lm*12)&4294967295);var Lh=agk;var Lf=(((Lh)+1)&4294967295);agk=Lf;var Ld=Nj;var Lb=agh;var K7=rP(Ld,Lb,Lj,Lo,0);E8=K7;while(1){var K6=agh;var K4=la[((K6)>>0)];var K2=iB((K4),8,0)!=32;var K0=oD((K2),1,0);EA=K0;var KY=agh;var KW=((KY+1)&4294967295);agh=KW;var amo=iB((K0),8,0)!=0;if(amo){U0=534;continue}else{U0=535;break}}var KU=ahn;var KR=((alC+KU*12)&4294967295);var KP=((KR+8)&4294967295);la[((KP)>>0)]=0;var KM=agh;var KL=agi;var KJ=(KM)<(KL);if(KJ){U0=533;continue $bb404$754}else{U0=545;break $bb367$$bb410$724}}}else{if(U0==536){uA[((hX)>>2)]=0;var KH=ahn;var KF=(((KH)+1)&4294967295);var KD=((alC+KF*12)&4294967295);var KA=((KD+8)&4294967295);var Ky=ll[((KA)>>0)];var Kw=oD((Ky),8,0);var Ku=ahn;var Kq=((alC+Ku*12)&4294967295);var Kp=((Kq+8)&4294967295);var Kn=ll[((Kp)>>0)];var Kl=oD((Kn),8,0);var Kj=ahn;var Kh=((alC+Kj*12)&4294967295);var Kf=Nj;var Kd=agD;var Kb=rP(Kf,Kd,Kh,Kl,Kw);E8=Kb;var J9=ahn;var J6=(((J9)+1)&4294967295);var J5=((alC+J6*12)&4294967295);var J3=((J5+8)&4294967295);var J1=ll[((J3)>>0)];var JZ=oD((J1),8,0);var JX=uA[((hX)>>2)];var JV=(((JZ))|0)<(((JX))|0);if(JV){U0=537}else{U0=538}if(U0==537){var JT=ahn;var JR=(((JT)+1)&4294967295);var JP=uA[((hX)>>2)];var JK=(((JP))&255);var JJ=((alC+JR*12)&4294967295);var JI=((JJ+8)&4294967295);la[((JI)>>0)]=JK;uA[((hX)>>2)]=0}var JH=E8;var JG=(JH)&65536;var JF=(((JG))|0)!=0;if(JF){U0=539}else{U0=541}$bb413$$bb416$763:do{if(U0==539){var JE=agD;agh=JE;var JD=agh;var JC=la[((JD)>>0)];var JB=iB((JC),8,0)!=32;if(!(JB)){U0=541;break $bb413$$bb416$763}while(1){ud(adk,32,9,1,0);var JA=agh;Vi=aeD;aba=JA;var Jy=Vi;var Jx=aba;var Jw=F(Jy,Jx,0);Fg=Jw;var Jv=Fg;acE=Jv;var CF=acE;agj=CF;var Ju=agj;var Jt=agh;ns(adi,Jt,Ju,1,0);var Js=ahn;var Jr=((alC+Js*12)&4294967295);var Jq=Nj;var Jn=rP(Jq,adg,Jr,0,0);var Jm=agh;var Jl=agj;var Jk=((Jm+Jl)&4294967295);agh=Jk;var Jj=agh;var Ji=la[((Jj)>>0)];var Jh=iB((Ji),8,0)!=32;if(Jh){U0=540;continue}else{U0=541;break $bb413$$bb416$763}}}}while(0);var Jf=E8;var Jd=(Jf)&50331648;var Jb=(((Jd))|0)!=0;if(!(Jb)){U0=545;break $bb367$$bb410$724}var I1=Za;var I0=(((I1)-1)&4294967295);var IZ=ahn;var IY=(((I0))|0)==(((IZ))|0);if(!(IY)){U0=545;break $bb367$$bb410$724}var IX=afG;var IW=(IX)&4194304;var IV=(((IW))|0)!=0;if(!(IV)){U0=545;break $bb367$$bb410$724}acr=10;SA=4}}}while(0);var IT=E8;var IR=(IT)&128;var IP=(((IR))|0)!=0;if(!(IP)){U0=547;break $bb347$$bb422$690}var IH=uA[((k3)>>2)];var IG=ahn;var IF=(((IG)+(IH))&4294967295);ahn=IF}}while(0);var IE=ahn;var ID=(((IE)+1)&4294967295);ahn=ID;var IB=ahn;var IA=Za;var Iy=(((IB))|0)<(((IA))|0);if(Iy){U0=484;continue $bb343$683}else{U0=548;break $bb343_lr_ph$$bb424$681}}}}while(0);ahn=0;var Iw=uA[((mT)>>2)];agn=548;$bb425$775:while(1){var Iu=agn==548?Iw:(Df);var Dv=ahn;var Du=(((Dv)+(Iu))&4294967295);var Dt=((o6+Du*8)&4294967295);agm=Dt;var Ds=agm;var Dr=((Ds)&4294967295);la[((Dr)>>0)]=9;var Dq=agm;var Dp=((Dq+1)&4294967295);la[((Dp)>>0)]=0;var Do=uA[((U4)>>2)];var Dn=(((Do))&65535);var Dm=agm;var Dl=((Dm+6)&4294967295);uW[((Dl)>>1)]=Dn;var Dk=agm;var Dj=((Dk+4)&4294967295);uW[((Dj)>>1)]=0;var Di=ahn;var Dh=(((Di)+1)&4294967295);ahn=Dh;var Dg=(((Dh))|0)<=1;var Df=xk[((mT)>>2)];if(Dg){agn=549;U0=549;continue $bb425$775}else{agn=549;U0=550;break $bb425$775}}var De=(((Df)+2)&4294967295);uA[((mT)>>2)]=De;var Dd=uA[((vC)>>2)];var Dc=(((Dd))|0)==0;if(Dc){U0=551}else{U0=552}if(U0==551){acr=0}var C9=uA[((lC)>>2)];var C8=(((C9))|0)!=0;if(C8){U0=553}else{U0=554}$_Z3Eofv_exit71_thread$$bb1_i65$781:do{if(U0==553){Ex=0;akz=0;U0=559;break $_Z3Eofv_exit71_thread$$bb1_i65$781}else{if(U0==554){var C7=uA[((mb)>>2)];var C6=(C7)!=0;if(C6){U0=555}else{U0=556}if(U0==555){var C5=uA[((mb)>>2)];var C4=aJ(C5);Ex=C4;agn=555}else{if(U0==556){var alZ=ll[((lO)>>0)];var C3=oD((alZ),1,0);Ex=C3;agn=556}}var C2=agn==555?C4:(C3);akz=C2;var C1=(((C2))|0)==0;if(C1){U0=559;break $_Z3Eofv_exit71_thread$$bb1_i65$781}var C0=Za;var CW=(((C0))|0)==0;var CV=uA[((co)>>2)];var CU=(((CV))|0)==0;var MN=(CW)|(CU);if(!(MN)){U0=559;break $_Z3Eofv_exit71_thread$$bb1_i65$781}af4=1;El=1;acr=10;U0=561;break $_Z3Eofv_exit71_thread$$bb1_i65$781}}}while(0);if(U0==559){af4=0;El=0}var CT=uA[((lc)>>2)];var CS=Nj;var CR=acr;tr(CS,CR,CT);var CQ=afU;var CP=(((CQ))|0)!=0;if(CP){U0=562}else{U0=563}if(U0==562){var CO=uA[((xn)>>2)];var CN=(((CO)-2)&4294967295);var CL=((eW+CN*24)&4294967295);var CK=((CL+4)&4294967295);uW[((CK)>>1)]=2;var CJ=uA[((l2)>>2)];var CI=(((CJ)-1)&4294967295);var CH=uA[((l2)>>2)];var CG=(((CH)-1)&4294967295);var CE=((p6+CG*4)&4294967295);var CD=uA[((CE)>>2)];var CC=(CD)|128;var CB=((p6+CI*4)&4294967295);uA[((CB)>>2)]=CC}var Cy=amv;var Cx=SA;uA[((Cy)>>2)]=Cx;uA[((lc)>>2)]=0;var Cw=afG;var Cv=(Cw)&524288;var Cu=(((Cv))|0)!=0;if(Cu){U0=564}else{U0=565}if(U0==564){uA[((lc)>>2)]=1}var Ct=OL;var Cs=(Ct)!=0;if(Cs){U0=566}else{U0=569}if(U0==566){var Cr=afG;var Cq=(Cr)&131072;var Cp=(((Cq))|0)!=0;var Cl=OL;if(Cp){U0=567}else{U0=568}if(U0==567){uA[((Cl)>>2)]=((vH)&4294967295)}else{if(U0==568){uA[((Cl)>>2)]=0}}}var Ck=uA[((lC)>>2)];var Cj=(((Ck))|0)!=0;if(Cj){U0=570}else{U0=571}$_Z3Eofv_exit_thread$$bb1_i$805:do{if(U0==570){En=0;akT=0;U0=575;break $_Z3Eofv_exit_thread$$bb1_i$805}else{if(U0==571){var Ci=uA[((mb)>>2)];var Ch=(Ci)!=0;if(Ch){U0=572}else{U0=573}if(U0==572){var Cg=uA[((mb)>>2)];var Cf=aJ(Cg);En=Cf;agn=572}else{if(U0==573){var PG=ll[((lO)>>0)];var Ce=oD((PG),1,0);En=Ce;agn=573}}var Cd=agn==572?Cf:(Ce);akT=Cd;var Cc=(((Cd))|0)!=0;if(Cc){U0=576;break $_Z3Eofv_exit_thread$$bb1_i$805}else{U0=575;break $_Z3Eofv_exit_thread$$bb1_i$805}}}}while(0);$bb446$$bb451$812:do{if(U0==575){var Cb=Wt;var Ca=(Cb)==0;if(Ca){U0=576;break $bb446$$bb451$812}af1=0;Ec=0;var B9=uA[((yT)>>2)];var B8=(((B9))|0)==3;if(B8){U0=578}else{U0=579}if(U0==578){var B7=uA[((vW)>>2)];var B6=B7;Ek=B6;U0=580;break $bb$$bb1$2}else{if(U0==579){var B5=uA[((a2)>>2)];Ek=B5;U0=580;break $bb$$bb1$2}}}}while(0);af1=1;Ec=1;Ek=0}}}while(0);var B3=Ek;On=B3;var Ei=On;vp=T8;return Ei;return null}function r8(Fr){var Bq=vp;vp+=92;n1(Bq,0,92);var ET;var CR;var E6;var CC;var Cc;var DF;var Br;var AK;var CE;var EL;var DL;var Cj;var EF;var Ea;var CP;var Cx;var CD;var CF;var D5;var Eb;var BO;var B0;var BN;var DX;var DI;var CO;var DW;var CQ=Bq;var CB=Bq+8;var A5=Bq+16;var Do=Bq+24;var BP;var Cp;var Dl;var CN;var Db;var B8;var EU=Bq+44;Cp=Fr;var CM=Cp;Eb=CM;var CL=uA[((zu)>>2)];var CK=(((CL))|0)!=0;if(CK){ET=1}else{ET=2}$bb_i$$bb1_i$2:do{if(ET==1){vj(((mP)&4294967295),qj(1,"i32",rh));CO=-1;ET=26;break $bb_i$$bb1_i$2}else{if(ET==2){var CJ=((CQ)&4294967295);var CI=((CB)&4294967295);var CH=((A5)&4294967295);DL=CJ;Cj=CI;EF=CH;var CG=DL;var EH=u4(CG);var EG=(((EH))|0)!=-1;var EE=oD((EG),1,0);CF=EE;var ED=CF;var Cd=iB((ED),8,0)!=0;if(Cd){ET=3}else{ET=8}if(ET==3){var EC=Cj;var EB=u4(EC);var EA=(((EB))|0)!=-1;var Ez=oD((EA),1,0);CD=Ez;var Ey=CD;var E1=iB((Ey),8,0)!=0;if(E1){ET=4}else{ET=6}if(ET==4){var Ex=EF;var Em=u4(Ex);var El=(((Em))|0)!=-1;var Ek=oD((El),1,0);Cx=Ek;var Ej=Cx;var D9=iB((Ej),8,0)!=0;if(D9){ET=10}else{ET=5}if(ET==10){CP=0;Ea=0;DW=0;var DN=xM();uA[((cw)>>2)]=DN;var DM=uA[((cw)>>2)];var DK=(((DM))|0)==-1;if(DK){ET=11}else{ET=12}if(ET==11){var DJ=fx();var DH=uA[((DJ)>>2)];DW=DH;var DG=((CQ)&4294967295);var DE=((CB)&4294967295);var DD=((A5)&4294967295);AK=DG;CE=DE;EL=DD;var DC=AK;var DB=((DC)&4294967295);var DA=uA[((DB)>>2)];var Dz=fU(DA);var Dy=AK;var Dx=((Dy+4)&4294967295);var Dw=uA[((Dx)>>2)];var Dv=fU(Dw);var Du=CE;var Dt=((Du)&4294967295);var Ds=uA[((Dt)>>2)];var Dr=fU(Ds);var Dq=CE;var Dp=((Dq+4)&4294967295);var Dn=uA[((Dp)>>2)];var Dm=fU(Dn);var Dk=EL;var Dj=((Dk)&4294967295);var Di=uA[((Dj)>>2)];var Dh=fU(Di);var Dg=EL;var Df=((Dg+4)&4294967295);var De=uA[((Df)>>2)];var Dd=fU(De);var Dc=DW;var Da=eZ(Dc);vj(((uH)&4294967295),qj([Da,0,0,0],["i8*",0,0,0],rh));CO=-1;ET=26;break $bb_i$$bb1_i$2}else{if(ET==12){var C9=uA[((cw)>>2)];var C8=(((C9))|0)==0;if(C8){ET=13}else{ET=20}if(ET==13){var C7=((CQ)&4294967295);var C6=uA[((C7)>>2)];var C5=mq(C6,0);var C4=(((C5))|0)==-1;if(C4){ET=16}else{ET=14}$bb12_i$$bb7_i$16:do{if(ET==14){var C3=((CB+4)&4294967295);var C2=uA[((C3)>>2)];var C1=mq(C2,1);var C0=(((C1))|0)==-1;if(C0){ET=16;break $bb12_i$$bb7_i$16}var CZ=((A5+4)&4294967295);var CY=uA[((CZ)>>2)];var CX=mq(CY,2);var CW=(((CX))|0)==-1;if(CW){ET=16;break $bb12_i$$bb7_i$16}DX=0;DI=0;var Cv=((A5+4)&4294967295);var Cu=uA[((Cv)>>2)];BP=Cu;var Ct=(((Cu))|0)>2;if(Ct){ET=18}else{ET=19}$bb14_i$$bb16_i$20:do{if(ET==18){while(1){var Cs=BP;var Cr=fU(Cs);var Cq=BP;var Co=(((Cq)-1)&4294967295);BP=Co;var Cn=(((Co))|0)>2;if(Cn){ET=18;continue}else{ET=19;break $bb14_i$$bb16_i$20}}}}while(0);var Cm=yh(1,1);var Cl=yh(2,1);var Ck=yh(3,1);var Ci=yh(15,1);var Ch=pB[((bc)>>2)];var Cg=(Ch);var Cf=((Do)&4294967295);var Ce=qS(Cf,20,((ry)&4294967295),Cg);var Cb=((Do)&4294967295);var Ca=Eb;var B9=sv(((y9)&4294967295),((y9)&4294967295),((gJ)&4294967295),((oI)&4294967295),Cb,Ca,((wi)&4294967295),((cN)&4294967295),0);var B7=fx();var B6=uA[((B7)>>2)];var B5=eZ(B6);var B4=qS(((eg)&4294967295),160,((lQ)&4294967295),B5);var B3=wg(((eg)&4294967295));var B2=le(2,((eg)&4294967295),B3);h1(1);throw"Reached an unreachable! Original .ll line: 67330"}}while(0);DX=1;DI=1;var CV=fx();var CU=uA[((CV)>>2)];var CT=eZ(CU);var CS=qS(((eg)&4294967295),160,((jM)&4294967295),CT);var CA=wg(((eg)&4294967295));var Cz=((A5+4)&4294967295);var Cy=uA[((Cz)>>2)];var Cw=le(Cy,((eg)&4294967295),CA);h1(1);throw"Reached an unreachable! Original .ll line: 67291"}else{if(ET==20){var B1=uA[((cw)>>2)];var BZ=((Do)&4294967295);var BY=qS(BZ,20,((tT)&4294967295),B1);var BX=((Do)&4294967295);var BW=k4(BX,0);uA[((nv)>>2)]=BW;var BV=uA[((nv)>>2)];var BU=(((BV))|0)==-1;if(BU){ET=21}else{ET=22}if(ET==21){var BT=fx();var BS=uA[((BT)>>2)];DW=BS;var BR=((CQ)&4294967295);var BQ=((CB)&4294967295);var BM=((A5)&4294967295);Cc=BR;DF=BQ;Br=BM;var BL=Cc;var BK=((BL)&4294967295);var BJ=uA[((BK)>>2)];var BI=fU(BJ);var BH=Cc;var BG=((BH+4)&4294967295);var BF=uA[((BG)>>2)];var BE=fU(BF);var BD=DF;var BC=((BD)&4294967295);var BB=uA[((BC)>>2)];var BA=fU(BB);var Bz=DF;var By=((Bz+4)&4294967295);var Bx=uA[((By)>>2)];var Bw=fU(Bx);var Bv=Br;var Bt=((Bv)&4294967295);var Bs=uA[((Bt)>>2)];var Bp=fU(Bs);var Bo=Br;var Bn=((Bo+4)&4294967295);var Bm=uA[((Bn)>>2)];var Bl=fU(Bm);var Bk=uA[((cw)>>2)];var Bj=lW(Bk,0,0);uA[((cw)>>2)]=0;var Bi=DW;var Bg=eZ(Bi);vj(((Z)&4294967295),qj([Bg,0,0,0],["i8*",0,0,0],rh));CO=-1;ET=26;break $bb_i$$bb1_i$2}else{if(ET==22){var Be=yh(13,1);var A4=((CQ+4)&4294967295);var A3=uA[((A4)>>2)];var A2=rI(A3,4,2048);var A1=(((A2))|0)==-1;if(A1){ET=25}else{ET=23}$bb26_i$$bb20_i$29:do{if(ET==23){var A0=((CB)&4294967295);var AZ=uA[((A0)>>2)];var AY=rI(AZ,4,2048);var AX=(((AY))|0)==-1;if(AX){ET=25;break $bb26_i$$bb20_i$29}var AV=((A5)&4294967295);var AT=uA[((AV)>>2)];var AJ=rI(AT,4,2048);var AI=(((AJ))|0)==-1;if(AI){ET=25;break $bb26_i$$bb20_i$29}B0=0;BN=0;var AP=((CQ+4)&4294967295);var AO=uA[((AP)>>2)];uA[((aO)>>2)]=AO;var AN=((CB)&4294967295);var AM=uA[((AN)>>2)];uA[((xD)>>2)]=AM;var AL=((A5)&4294967295);var FD=uA[((AL)>>2)];uA[((hq)>>2)]=FD;var FB=((CQ)&4294967295);var Fz=uA[((FB)>>2)];var Fy=fU(Fz);var Fx=((CB+4)&4294967295);var Fw=uA[((Fx)>>2)];var Fv=fU(Fw);var Fu=((A5+4)&4294967295);var Ft=uA[((Fu)>>2)];var Fs=fU(Ft);uA[((zu)>>2)]=1;CO=0;BO=0;Db=0;var Fi=o9(((x5)&4294967295));B8=Fi;var Fg=B8;var Fe=(((Fg))|0)!=2;if(Fe){ET=28}else{ET=29}if(ET==28){af();CN=-1;ET=39;break $bb_i$$bb1_i$2}else{if(ET==29){var Fd=((EU)&4294967295);var Fc=gt(Fd,45);B8=Fc;var Fb=B8;var Fa=(((Fb))|0)!=44;if(Fa){ET=30}else{ET=33}if(ET==30){var E9=B8;var E8=(((E9))|0)>=0;if(E8){ET=31}else{ET=32}if(ET==31){vj(((fH)&4294967295),qj(1,"i32",rh))}af();CN=-1;ET=39;break $bb_i$$bb1_i$2}else{if(ET==33){var E7=((EU)&4294967295);var E5=l4(E7,((nK)&4294967295),4);var E4=(((E5))|0)!=0;if(E4){ET=35}else{ET=34}$bb9$$bb8$42:do{if(ET==34){var E3=((EU)&4294967295);var E2=((E3+8)&4294967295);var E0=l4(E2,((vl)&4294967295),8);var EZ=(((E0))|0)!=0;if(EZ){ET=35;break $bb9$$bb8$42}var EY=((EU+24)&4294967295);var EX=ll[((EY)>>0)];var EW=oD((EX),8,0);var EV=((EU+25)&4294967295);var ES=ll[((EV)>>0)];var ER=oD((ES),8,0);var EQ=(((ER)*256)&4294967295);var EP=((EU+26)&4294967295);var EO=ll[((EP)>>0)];var EN=oD((EO),8,0);var EM=(((EN)*65536)&4294967295);var EK=((EU+27)&4294967295);var EJ=ll[((EK)>>0)];var EI=oD((EJ),8,0);var Ew=(((EI)*16777216)&4294967295);var Ev=(((EQ)+(EW))&4294967295);var Eu=(((Ev)+(EM))&4294967295);var Et=(((Eu)+(Ew))&4294967295);uA[((sc)>>2)]=Et;var Es=uA[((kD)>>2)];var Er=Cp;var Eq=(Es)!=(Er);if(Eq){ET=37}else{ET=38}if(ET==37){var Ep=uA[((kD)>>2)];br(Ep);var Eo=Cp;var En=el(Eo);uA[((kD)>>2)]=En}CN=0;ET=39;break $bb_i$$bb1_i$2}}while(0);vj(((bP)&4294967295),qj(1,"i32",rh));af();CN=-1;ET=39;break $bb_i$$bb1_i$2}}}}}}while(0);B0=1;BN=1;var AH=fx();var i=uA[((AH)>>2)];DW=i;var e=((CQ)&4294967295);var FG=((CB)&4294967295);var FF=((A5)&4294967295);CR=e;E6=FG;CC=FF;var FE=CR;var FC=((FE)&4294967295);var FA=uA[((FC)>>2)];var Fq=fU(FA);var Fp=CR;var Fo=((Fp+4)&4294967295);var Fn=uA[((Fo)>>2)];var Fm=fU(Fn);var Fl=E6;var Fk=((Fl)&4294967295);var Fj=uA[((Fk)>>2)];var Fh=fU(Fj);var Ff=E6;var Bh=((Ff+4)&4294967295);var Bf=uA[((Bh)>>2)];var Bd=fU(Bf);var Bc=CC;var Bb=((Bc)&4294967295);var Ba=uA[((Bb)>>2)];var A9=fU(Ba);var A8=CC;var A7=((A8+4)&4294967295);var A6=uA[((A7)>>2)];var AW=fU(A6);var AU=uA[((cw)>>2)];var AS=lW(AU,0,0);uA[((cw)>>2)]=0;var AR=DW;var AQ=eZ(AR);vj(((qO)&4294967295),qj([AQ,0,0,0],["i8*",0,0,0],rh));CO=-1;ET=26;break $bb_i$$bb1_i$2}}}}}}}else{if(ET==5){var Ei=fx();var Eh=uA[((Ei)>>2)];D5=Eh;var Eg=Cj;var Ef=((Eg)&4294967295);var Ee=uA[((Ef)>>2)];var Ed=fU(Ee);var D8=Cj;var D7=((D8+4)&4294967295);var D6=uA[((D7)>>2)];var D4=fU(D6)}}}else{if(ET==6){var D3=fx();var D2=uA[((D3)>>2)];D5=D2}}var D1=DL;var D0=((D1)&4294967295);var DZ=uA[((D0)>>2)];var DY=fU(DZ);var DV=DL;var DU=((DV+4)&4294967295);var DT=uA[((DU)>>2)];var DS=fU(DT)}else{if(ET==8){var DR=fx();var DQ=uA[((DR)>>2)];D5=DQ}}var DP=D5;var DO=eZ(DP);vj(((dZ)&4294967295),qj([DO,0,0,0],["i8*",0,0,0],rh));CP=-1;Ea=-1;DW=-1;CO=-1;ET=26;break $bb_i$$bb1_i$2}}}while(0);if(ET==26){BO=-1;Db=-1;CN=-1}var Ec=CN;Dl=Ec;var Bu=Dl;vp=Bq;return Bu;return null}function sl(){var AH;var AI;var i;var e=uA[((sc)>>2)];i=e;var AK=i;AI=AK;var AJ=AI;return AJ;return null}function qt(){var e;la[((((eg)&4294967295))>>0)]=0;return;return}function vX(AP){var AN=vp;vp+=4;n1(AN,0,4);var AQ;var AO;var AR=AN;AO=AP;var AK=AR;uA[((AK)>>2)]=arguments[vX.length];var AM=uA[((AR)>>2)];var AL=uA[((ta)>>2)];var AJ=AO;var AI=AE(AL,AJ,AM);var i=uA[((ta)>>2)];var e=jR(10,i);var AH=AR;vp=AN;return;return}function vj(e){var AM=vp;vp+=4;n1(AM,0,4);var AN;var AK;var AO=AM;AK=e;var AI=AO;uA[((AI)>>2)]=arguments[vj.length];var AL=uA[((AO)>>2)];var AJ=AK;var AH=kA(((eg)&4294967295),160,AJ,AL);var i=AO;vX(((yN)&4294967295),qj([((eg)&4294967295),0,0,0],["i8*",0,0,0],rh));vp=AM;return;return}function qU(){var A7=vp;vp+=340;n1(A7,0,340);var BD;var AJ;var Cm;var AV;var BE=A7;var By;var Cn;var BS=A7+4;var BA;var AK;var Bb;var AZ;var Cl;var Bw;var AY=A7+84;var Cd;var B1;var Ck=((AY)&4294967295);Cd=Ck;var AI=(AY);var AW=((0-(AI))&4294967295);var AX=((0-(AW))&4294967295);var Bm=(((AX)+255)&4294967295);var Cj=((AY)&4294967295);var Ci=((AY)&4294967295);$bb$2:while(1){var Ch=Cd;var Cg=(Ch);var A5=((0-(Cg))&4294967295);var Cf=(((Bm)+(A5))&4294967295);var Ce=uA[((hq)>>2)];var Cc=Cd;var BT=u5(Ce,Cc,Cf);Bw=BT;var BR=(((BT))|0)==-1;if(BR){BD=2;break $bb$2}var BG=Bw;var BF=(((BG))|0)==0;if(BF){BD=6;break $bb$2}var Co=Cd;var Cb=Bw;var Ca=((Co+Cb)&4294967295);la[((Ca)>>0)]=0;$bb15$6:while(1){var BC=Cd;var BB=qX(BC,10);B1=BB;var Bz=B1;var Bx=(Bz)!=0;var Bv=oD((Bx),1,0);AZ=Bv;var Bd=iB((Bv),8,0)!=0;if(!(Bd)){BD=26;break $bb15$6}var B9=Cd;var B8=yV(B9,((hM)&4294967295),18);var B7=(((B8))|0)==0;if(B7){BD=24}else{BD=21}$bb14$$bb10$9:do{if(BD==21){var B6=Cd;var B5=yV(B6,((ig)&4294967295),18);var B4=(((B5))|0)==0;if(B4){BD=24;break $bb14$$bb10$9}var B3=B1;la[((B3)>>0)]=0;var B0=Cd;vX(((ki)&4294967295),qj([B0,0,0,0],["i8*",0,0,0],rh));var BZ=Bw;var BY=(((BZ)-1)&4294967295);var BX=Cd;var BW=((BX+BY)&4294967295);var BV=B1;var BU=(BW)==(BV);if(BU){BD=23;break $bb$2}}}while(0);var BN=B1;var BL=((BN+1)&4294967295);Cd=BL;BD=25;continue $bb15$6}var Bt=Bw;var Bs=Cd;tP(Cj,Bs,Bt,1,0);var Bq=Bw;var Bo=((Ci+Bq)&4294967295);Cd=Bo;BD=1;continue $bb$2}if(BD==2){var BP=fx();var BM=uA[((BP)>>2)];var BK=(((BM))|0)==11;if(BK){BD=3}else{BD=4}if(BD==3){Cl=0}else{if(BD==4){var BJ=fx();var BI=uA[((BJ)>>2)];var BH=eZ(BI);vj(((Aq)&4294967295),qj([BH,0,0,0],["i8*",0,0,0],rh));Cl=-1}}}else{if(BD==6){var Bu=uA[((cw)>>2)];var Br=lW(Bu,BE,1);AV=Br;var Bp=AV;var Bn=(((Bp))|0)==0;if(Bn){BD=7}else{BD=8}if(BD==7){Cn=((xC)&4294967295)}else{if(BD==8){var Bl=uA[((cw)>>2)];var Bj=AV;var Bi=(((Bj))|0)!=(((Bl))|0);if(Bi){BD=9}else{BD=10}if(BD==9){Cn=((eP)&4294967295)}else{if(BD==10){uA[((cw)>>2)]=0;var Bh=uA[((BE)>>2)];var Bf=(((Bh))&255);var Be=(Bf)&127;var Bc=(((Be)+1)&255);var Ba=iB((Bc),8,0)>>1;var A9=iB((Ba),8,0)>0;var A8=uA[((BE)>>2)];var A6=(A8)&127;if(A9){BD=11}else{BD=12}if(BD==11){BA=A6;var A4=((BS)&4294967295);var A3=BA;var A2=qS(A4,80,((nl)&4294967295),A3);var A1=((BS)&4294967295);Cn=A1}else{if(BD==12){var A0=(((A6))|0)==0;if(A0){BD=13}else{BD=14}if(BD==13){var AU=uA[((BE)>>2)];var AT=(AU)&65280;var AS=(((AT))|0)>>8;AK=AS;var AR=((BS)&4294967295);var AQ=AK;var AP=qS(AR,80,((u3)&4294967295),AQ);var AO=((BS)&4294967295);Cn=AO}else{if(BD==14){Cn=((bl)&4294967295)}}}}}}}}var AN=Cn;vX(((yN)&4294967295),qj([AN,0,0,0],["i8*",0,0,0],rh));var AM=wg(((eg)&4294967295));By=AM;var AL=(((AM))|0)==0;if(AL){BD=16}else{BD=17}if(BD==16){var AH=Cn;var i=qS(((eg)&4294967295),160,((kt)&4294967295),AH)}else{if(BD==17){var e=By;var Cu=((160-(e))&4294967295);var Ct=By;var Cs=((((eg)&4294967295)+Ct)&4294967295);var Cr=Cn;var Cq=qS(Cs,Cu,((sI)&4294967295),Cr)}}Cm=-1;var Cp=Cm;AJ=Cp;var Bg=AJ;Cl=Bg}else{if(BD==23){var BQ=Cd;var BO=qS(((eg)&4294967295),160,((kt)&4294967295),BQ);Cl=0}}}var Bk=Cl;Bb=Bk;var B2=Bb;vp=A7;return B2;return null}function mc(A2,AW){var AV;var AP;var AY;var A0;var A1;var AO;var AZ;AP=A2;AY=AW;var AN=uA[((cw)>>2)];var AM=(((AN))|0)!=0;if(AM){AV=1}else{AV=2}if(AV==1){var AL=qU()}var AK=AY;var AJ=AP;var AI=qS(AJ,AK,((kt)&4294967295),((eg)&4294967295));AZ=AI;var AH=AZ;var i=AY;var e=(((AH))|0)>=(((i))|0);if(e){AV=3}else{AV=4}if(AV==3){var AX=AY;var AU=(((AX)-1)&4294967295);A1=AU}else{if(AV==4){var AT=AZ;A1=AT}}var AS=A1;AO=AS;var AR=AO;A0=AR;var AQ=A0;return AQ;return null}function af(){var AU;var AN=uA[((zu)>>2)];var AM=(((AN))|0)==0;if(AM){AU=4}else{AU=1}if(AU==1){var AL=uA[((nv)>>2)];var AK=fU(AL);var AJ=uA[((aO)>>2)];var AI=fU(AJ);var AH=uA[((xD)>>2)];var i=fU(AH);var e=uA[((hq)>>2)];var AV=fU(e);var AT=uA[((cw)>>2)];var AS=(((AT))|0)!=0;if(AS){AU=2}else{AU=3}if(AU==2){var AR=uA[((cw)>>2)];var AQ=jd(AR,15);var AP=uA[((cw)>>2)];var AO=lW(AP,0,0);uA[((cw)>>2)]=0}uA[((zu)>>2)]=0}return;return}function o9(Bn){var Bl;var A7=null;var BG;var A4;var Bf;var AK;var BJ;var Bk;var Bm;var A6;var A8;BG=Bn;var BI=uA[((cw)>>2)];var BH=(((BI))|0)==0;if(BH){Bl=1}else{Bl=2}$bb$$bb1$2:do{if(Bl==1){BJ=-1}else{if(Bl==2){var BF=BG;var BE=wg(BF);Bm=BE;var BD=Bm;var BC=uA[((aO)>>2)];var BB=BG;var BA=le(BC,BB,BD);Bk=BA;var Bz=Bk;var Bx=(((Bz))|0)==-1;if(Bx){Bl=3}else{Bl=10}if(Bl==3){var Bw=fx();var Bv=uA[((Bw)>>2)];A6=Bv;var Bu=A6;var Bt=(((Bu))|0)!=32;if(Bt){A7=3;Bl=7}else{A7=3;Bl=4}if(Bl==4){var Bs=qU();var Br=(((Bs))|0)==0;if(Br){Bl=6}else{Bl=5}if(Bl==6){var AT=A6;A7=6}else{if(Bl==5){Bf=1;AK=1;BJ=-1;Bl=17;break $bb$$bb1$2}}}var Bq=A7==6?AT:(Bu);Bf=0;AK=0;var Bp=(((Bq))|0)==11;if(Bp){Bl=8}else{Bl=9}if(Bl==8){Bk=0}else{if(Bl==9){var Bo=A6;var Bj=eZ(Bo);vj(((sr)&4294967295),qj([Bj,0,0,0],["i8*",0,0,0],rh));BJ=-1;Bl=17;break $bb$$bb1$2}}}var Bi=Bk;var Bh=Bm;var Bg=(((Bi))|0)!=(((Bh))|0);if(Bg){Bl=11}else{Bl=16}$bb12$$bb17$17:do{if(Bl==11){var Be=Bm;var Bd=Bk;var AZ=((0-(Bd))&4294967295);var Bc=(((Be)+16)&4294967295);var Bb=(((Bc)+(AZ))&4294967295);var Ba=fu(Bb);var A9=Ba;A8=A9;var A5=A8;var A3=(A5)!=0;if(!(A3)){Bl=16;break $bb12$$bb17$17}var A2=A8;var A1=((A2)&4294967295);uA[((A1)>>2)]=0;var A0=A8;var AY=((A0+4)&4294967295);uA[((AY)>>2)]=0;var AX=Bm;var AW=Bk;var AV=(((AX)-(AW))&4294967295);var AU=A8;var AS=((AU+8)&4294967295);uA[((AS)>>2)]=AV;var AR=Bm;var AQ=Bk;var AP=(((AR)-(AQ))&4294967295);var AO=BG;var AN=Bk;var AM=((AO+AN)&4294967295);var AL=A8;var AJ=((AL+12)&4294967295);var AI=((AJ)&4294967295);ns(AI,AM,AP,1,0);var AH=Bm;Bk=AH;var i=uA[((u2)>>2)];var e=(i)==0;if(e){Bl=13}else{Bl=14}if(Bl==13){var BQ=A8;uA[((u2)>>2)]=BQ}else{if(Bl==14){var BP=uA[((oQ)>>2)];var BO=((BP)&4294967295);var BN=A8;uA[((BO)>>2)]=BN}}var BM=A8;uA[((oQ)>>2)]=BM}}while(0);var BL=Bk;BJ=BL}}}while(0);var BK=BJ;A4=BK;var By=A4;return By;return null}function iP(){var AH;var AI;var i;var e=o9(((Ae)&4294967295));var AM=(((e))|0)==3;var AK=oD((AM),1,0);i=AK;var AJ=i;AI=AJ;var AL=AI;return AL;return null}function iG(AH){var AN;var AL;var AK;var AJ;AL=AH;uA[((zu)>>2)]=2;var AI=AL;var i=o9(AI);AJ=i;var e=AJ;AK=e;var AM=AK;return AM;return null}function eY(){var AW=vp;vp+=4096;n1(AW,0,4096);var AU;var Be;var AM;var AX;var i;var AH;var AV;var Bj;var AZ;var A1;var Bo=AW;A1=1;var Bi=uA[((zu)>>2)];var Bh=(((Bi))|0)==1;if(Bh){AU=1}else{AU=2}if(AU==1){Bj=1}else{if(AU==2){var Bg=uA[((cw)>>2)];var Bf=(((Bg))|0)==0;if(Bf){AU=3}else{AU=4}if(AU==3){Bj=0}else{if(AU==4){var Bd=uA[((cw)>>2)];var Bc=jd(Bd,10);var Ba=(((Bc))|0)==-1;var A8=oD((Ba),1,0);AV=A8;var A6=AV;var AY=iB((A6),8,0)!=0;if(AY){AU=5}else{AU=6}if(AU==5){A1=0}var AT=uA[((u2)>>2)];AM=AT;var AS=(AT)!=0;if(AS){AU=7}else{AU=8}$bb_i$$_ZL17free_pending_datav_exit$11:do{if(AU==7){while(1){var AR=AM;Be=AR;var AQ=AM;var AP=((AQ)&4294967295);var AO=uA[((AP)>>2)];AM=AO;var AN=Be;var AL=AN;br(AL);var AJ=AM;var AK=(AJ)!=0;if(AK){AU=7;continue}else{AU=8;break $bb_i$$_ZL17free_pending_datav_exit$11}}}}while(0);uA[((u2)>>2)]=0;uA[((oQ)>>2)]=0;var AI=uA[((aO)>>2)];var e=le(AI,((Ae)&4294967295),3);AZ=e;var Bt=(((e))|0)!=3;if(Bt){AU=9}else{AU=10}if(AU==9){A1=0}var Bs=((Bo)&4294967295);$bb7$18:while(1){var Br=uA[((xD)>>2)];var Bq=u5(Br,Bs,4096);AZ=Bq;var Bp=(((Bq))|0)>0;if(Bp){AU=11;continue $bb7$18}else{AU=12;break $bb7$18}}var Bn=AZ;var Bm=(((Bn))|0)!=-1;if(Bm){AU=14}else{AU=13}$bb10$$bb9$21:do{if(AU==13){var Bl=fx();var Bk=uA[((Bl)>>2)];var Bb=(((Bk))|0)!=11;if(Bb){AU=14;break $bb10$$bb9$21}else{AU=15;break $bb10$$bb9$21}}}while(0);if(AU==14){A1=0}var A9=qU();var A7=(((A9))|0)!=0;if(A7){AU=17}else{AU=16}$bb15$$bb12$26:do{if(AU==16){var A5=A1;var A4=(((A5))|0)==0;if(A4){AU=17;break $bb15$$bb12$26}i=1;AH=1;uA[((zu)>>2)]=1;AU=19;break $bb15$$bb12$26}}while(0);if(AU==17){i=0;AH=0}var A3=A1;Bj=A3}}}}var A2=Bj;AX=A2;var A0=AX;vp=AW;return A0;return null}function oN(){var AR;var AM;var AP;af();var AO=uA[((u2)>>2)];AP=AO;var AN=(AO)!=0;if(AN){AR=1}else{AR=2}$bb_i$$_ZL17free_pending_datav_exit$2:do{if(AR==1){while(1){var AL=AP;AM=AL;var AK=AP;var AJ=((AK)&4294967295);var AI=uA[((AJ)>>2)];AP=AI;var AH=AM;var i=AH;br(i);var AQ=AP;var e=(AQ)!=0;if(e){AR=1;continue}else{AR=2;break $bb_i$$_ZL17free_pending_datav_exit$2}}}}while(0);uA[((u2)>>2)]=0;uA[((oQ)>>2)]=0;var AS=uA[((kD)>>2)];br(AS);uA[((kD)>>2)]=0;pB[((bc)>>2)]=1;return;return}function gt(A1,Bp){var Bf=vp;vp+=44;n1(Bf,0,44);var BE;var BV;var DF;var Bz;var DD;var AN;var C7;var AL=Bf;var BW;var Bt;var AH;var Ct;var AM;var CB;var AO;var CE;var DC;var BD;var BY;var Dw;var CK=Bf+20;var BC;var CV;var Di;var B8;var Bo;var Bc;var AW;var B5;var C6;BW=A1;Bt=Bp;BY=1;Dw=0;var DB=uA[((cw)>>2)];var DA=(((DB))|0)==0;if(DA){BE=2}else{BE=1}$bb$$bb1_preheader$2:do{if(BE==2){DC=-1}else{if(BE==1){var Dz=((CK)&4294967295);var Dy=((Dz)&4294967295);var Dx=((CK)&4294967295);var Dv=((Dx+4)&4294967295);var Du=((CK+8)&4294967295);var Dt=((Du)&4294967295);var Cy=((CK+8)&4294967295);var Cw=((Cy+4)&4294967295);var Cu=((CK+16)&4294967295);var Cs=((Cu)&4294967295);var Cr=((CK+16)&4294967295);var Cq=((Cr+4)&4294967295);var Cp=((CK)&4294967295);var Co=((CK+8)&4294967295);var Cn=((Co+6)&4294967295);var Cm=((CK+16)&4294967295);var Cd=((Cm+6)&4294967295);var Cb=((CK)&4294967295);var B9=((Cb+6)&4294967295);var B7=((AL)&4294967295);var B6=((AL)&4294967295);var BZ=(AL);$bb1$5:while(1){BC=0;var B4=uA[((xD)>>2)];uA[((Dy)>>2)]=B4;uW[((Dv)>>1)]=1;var B3=BC;var B2=(((B3)+1)&4294967295);BC=B2;var B1=uA[((hq)>>2)];uA[((Dt)>>2)]=B1;uW[((Cw)>>1)]=1;var B0=BC;var BO=(((B0)+1)&4294967295);BC=BO;var BN=uA[((u2)>>2)];var BM=(BN)!=0;if(BM){BE=4}else{BE=5}if(BE==4){var BL=uA[((aO)>>2)];uA[((Cs)>>2)]=BL;uW[((Cq)>>1)]=4;var BK=BC;var BJ=(((BK)+1)&4294967295);BC=BJ}var BI=uA[((nv)>>2)];var BH=aW(BI,0,0);var BG=(((BH))|0)!=0;var BF=oD((BG),1,0);AN=BF;var DE=iB((BF),8,0)!=0;if(DE){BE=6}else{BE=7}$bb_i$$bb1_i$10:do{if(BE==6){DD=0;BE=16;break $bb_i$$bb1_i$10}else{if(BE==7){var BB=uA[((nv)>>2)];var BA=u5(BB,B7,20);var By=(((BA))|0)!=20;var Bx=oD((By),1,0);Bz=Bx;var Bw=Bz;var CH=iB((Bw),8,0)!=0;if(CH){BE=8}else{BE=9}if(BE==8){DD=0;BE=16;break $bb_i$$bb1_i$10}else{if(BE==9){var Bv=np(B6,41,20);C7=Bv;var Bu=C7;var Bs=(Bu)==0;if(Bs){BE=11}else{BE=10}$bb8_i$$bb5_i$16:do{if(BE==10){var Br=C7;var Bq=(Br);var Bn=(((Bq)-(BZ))&4294967295);var Bm=(((Bn))>>>0)>17;if(Bm){BE=11;break $bb8_i$$bb5_i$16}var Bl=C7;var Bk=((Bl+1)&4294967295);var Bj=la[((Bk)>>0)];var Bi=iB((Bj),8,0)!=32;if(Bi){BE=15}else{BE=13}$bb12_i$$bb10_i$19:do{if(BE==13){var Bh=C7;var Bg=((Bh+2)&4294967295);var Be=la[((Bg)>>0)];var Bd=iB((Be),8,0)!=83;if(Bd){BE=15;break $bb12_i$$bb10_i$19}DF=1;BE=17;break $bb12_i$$bb10_i$19}}while(0);if(BE==15){DF=0}var Bb=DF;var Ba=oD((Bb),8,0);DD=Ba;BV=Ba;CV=Ba;var A9=(((Ba))|0)==0;if(A9){BE=18;break $bb_i$$bb1_i$10}CE=0;BE=20;break $bb_i$$bb1_i$10}}while(0);DD=0;BE=16;break $bb_i$$bb1_i$10}}}}}while(0);$_ZL14mbrola_is_idlev_exit_thread$$bb4$$bb6$27:do{if(BE==16){BV=0;CV=0;BE=18;break $_ZL14mbrola_is_idlev_exit_thread$$bb4$$bb6$27}}while(0);if(BE==18){var A8=BY;CE=A8}var A7=BC;var A6=CE;var A5=zt(Cp,A7,A6);BD=A5;var A4=(((A5))|0)==-1;if(A4){BE=21;break $bb1$5}var AZ=BD;var AY=(((AZ))|0)==0;if(AY){BE=23}else{BE=28}$bb9$$bb14$33:do{if(BE==23){var AX=CV;var AV=(((AX))|0)!=0;if(AV){BE=24;break $bb1$5}var AU=BY;var AT=(((AU))|0)>3749;if(AT){BE=26;break $bb1$5}var AS=BY;var AR=(((AS)*4)&4294967295);BY=AR}else{if(BE==28){BY=1;var AQ=uW[((Cn)>>1)];var AK=iB((AQ),16,0)==0;if(AK){BE=31}else{BE=29}if(BE==29){var AJ=qU();var AI=(((AJ))|0)==0;if(!(AI)){BE=30;break $bb1$5}}CB=0;AO=0;var i=uA[((u2)>>2)];var e=(i)!=0;if(e){BE=32}else{BE=42}$bb21$$bb35$41:do{if(BE==32){var DK=uW[((Cd)>>1)];var DJ=iB((DK),16,0)!=0;if(!(DJ)){BE=42;break $bb21$$bb35$41}var DI=uA[((u2)>>2)];Di=DI;var DH=Di;var DG=((DH+12)&4294967295);var Ds=((DG)&4294967295);var Dr=Di;var Dq=((Dr+4)&4294967295);var Dp=uA[((Dq)>>2)];var Do=((Ds+Dp)&4294967295);B8=Do;var Dn=Di;var Dm=((Dn+8)&4294967295);var Dl=uA[((Dm)>>2)];var Dk=Di;var Dj=((Dk+4)&4294967295);var Dh=uA[((Dj)>>2)];var Dg=(((Dl)-(Dh))&4294967295);Bo=Dg;var Df=Bo;var De=uA[((aO)>>2)];var Dd=B8;var Dc=le(De,Dd,Df);BD=Dc;var Db=BD;var Da=(((Db))|0)==-1;if(Da){BE=34;break $bb1$5}var CZ=BD;var CY=Bo;var CX=(((CZ))|0)!=(((CY))|0);var CW=Di;if(CX){BE=39}else{BE=40}if(BE==39){var CU=((CW+4)&4294967295);var CT=uA[((CU)>>2)];var CS=BD;var CR=(((CS)+(CT))&4294967295);var CQ=Di;var CP=((CQ+4)&4294967295);uA[((CP)>>2)]=CR}else{if(BE==40){var CO=((CW)&4294967295);var CN=uA[((CO)>>2)];uA[((u2)>>2)]=CN;var CM=Di;var CL=CM;br(CL);var CJ=uA[((u2)>>2)];var CI=(CJ)==0;if(!(CI)){BE=46;break $bb9$$bb14$33}uA[((oQ)>>2)]=0}}}}while(0);var CG=uW[((B9)>>1)];var CF=iB((CG),16,0)!=0;if(!(CF)){BE=46;break $bb9$$bb14$33}var CD=BW;var CC=Dw;var CA=((CD+CC)&4294967295);AW=CA;var Cz=Bt;var Cx=Dw;var Cv=(((Cz)-(Cx))&4294967295);B5=Cv;var Cl=uA[((xD)>>2)];var Ck=AW;var Cj=B5;var Ci=u5(Cl,Ck,Cj);C6=Ci;var Ch=C6;var Cg=(((Ch))|0)==-1;if(Cg){BE=44;break $bb1$5}var Ca=C6;var BX=Dw;var BU=(((BX)+(Ca))&4294967295);Dw=BU;uA[((zu)>>2)]=3}}}while(0);var BT=Dw;var BS=Bt;var BR=(((BT))>>>0)<(((BS))>>>0);if(BR){BE=3;continue $bb1$5}else{BE=47;break $bb1$5}}if(BE==21){var A3=fx();var A2=uA[((A3)>>2)];var A0=eZ(A2);vj(((hB)&4294967295),qj([A0,0,0,0],["i8*",0,0,0],rh));DC=-1;BE=48;break $bb$$bb1_preheader$2}else{if(BE==24){uA[((zu)>>2)]=1}else{if(BE==26){uA[((zu)>>2)]=4;vj(((po)&4294967295),qj(1,"i32",rh))}else{if(BE==34){var C9=fx();var C8=uA[((C9)>>2)];Bc=C8;var C5=Bc;var C4=(((C5))|0)!=32;if(C4){BE=37}else{BE=35}$bb30$$bb24$58:do{if(BE==35){var C3=qU();var C2=(((C3))|0)==0;if(C2){BE=37;break $bb30$$bb24$58}Ct=1;AM=1;DC=-1;BE=48;break $bb$$bb1_preheader$2}}while(0);Ct=0;AM=0;var C1=Bc;var C0=eZ(C1);vj(((sr)&4294967295),qj([C0,0,0,0],["i8*",0,0,0],rh));DC=-1;BE=48;break $bb$$bb1_preheader$2}else{if(BE==44){var Cf=fx();var Ce=uA[((Cf)>>2)];var Cc=eZ(Ce);vj(((w1)&4294967295),qj([Cc,0,0,0],["i8*",0,0,0],rh));DC=-1;BE=48;break $bb$$bb1_preheader$2}else{if(BE==30){CB=1;AO=1;DC=-1;BE=48;break $bb$$bb1_preheader$2}}}}}}var BQ=Dw;DC=BQ}}}while(0);var BP=DC;AH=BP;var AP=AH;vp=Bf;return AP;return null}function iY(AX,AV){var AS;var AQ;var i;var AW;var AP;var AU;AQ=AX;i=AV;var AO=i;var AN=(((AO)*2)&4294967295);var AM=AQ;var AL=gt(AM,AN);AU=AL;var AK=AU;var AJ=(((AK))|0)>0;if(AJ){AS=1}else{AS=2}if(AS==1){var AI=AU;var AH=(((((AI))|0)/2)|0);AU=AH}var e=AU;AP=e;var AT=AP;AW=AT;var AR=AW;return AR;return null}function xj(AO){var AP;var AN;AN=AO;var AM=pB[((bc)>>2)];var AL=AN;var AK=(AL)==(AM);if(AK){AP=3}else{AP=1}$return$$bb$2:do{if(AP==1){var AJ=AN;pB[((bc)>>2)]=AJ;var AI=uA[((zu)>>2)];var AH=(((AI))|0)!=1;if(AH){AP=3;break $return$$bb$2}af();var i=uA[((kD)>>2)];var e=r8(i)}}while(0);return;return}function p3(A8){var E1;var CV;var CF;var EE;var AK;var DO;var Cz;var C9;var CH;var EU;var A9;var D0;var CC;var Dn;var CL;var E6;var Bv;var Ee;var CE;var Dz;var CX;var Fh;var Bw;var Ef;var CG;var DI;var C1;var Fq;var BH;var Er;var CJ;var DN;var Db;var CB;var BS;var EC;var D1;var DY;var Dp;var AM;var BT;var ED;var CW;var D3;var Ds;var AV;var B5;var EP;var Da;var Ec;var Dl;var B4;var AL;var Fc;var CD;var Eg;var FI;var Fg;var Bf;var CI;var E2;var E3;E3=A8;var CU=E3;var CT=((CU+708)&4294967295);var CS=((CT)&4294967295);ud(CS,0,256,1,0);var CR=E3;Eg=CR;FI=0;Fg=4;Bf=20;var CQ=FI;var CP=1<<(CQ);CI=CP;var CO=Fg;E2=CO;var CN=E2;var CM=Bf;var CK=(((CN))|0)<=(((CM))|0);if(CK){E1=1}else{E1=2}$bb_i$$_ZL18SetLetterBitsRangeP10Translatoriii_exit$2:do{if(E1==1){while(1){var EO=E2;var EN=E2;var EM=Eg;var EL=((EM+708)&4294967295);var EK=((EL+EN)&4294967295);var EJ=la[((EK)>>0)];var EI=CI;var EH=(((EI))&255);var EG=(EH)|(EJ);var EF=Eg;var EB=((EF+708)&4294967295);var EA=((EB+EO)&4294967295);la[((EA)>>0)]=EG;var Ez=E2;var Ey=(((Ez)+1)&4294967295);E2=Ey;var Ex=E2;var Ew=Bf;var Ev=(((Ex))|0)<=(((Ew))|0);if(Ev){E1=1;continue}else{E1=2;break $bb_i$$_ZL18SetLetterBitsRangeP10Translatoriii_exit$2}}}}while(0);var Eu=E3;CV=Eu;CF=0;EE=62;AK=77;var Et=CF;var Es=1<<(Et);DO=Es;var Eq=EE;Cz=Eq;var Ep=Cz;var Eo=AK;var En=(((Ep))|0)<=(((Eo))|0);if(En){E1=3}else{E1=4}$bb_i67$$_ZL18SetLetterBitsRangeP10Translatoriii_exit68$6:do{if(E1==3){while(1){var Em=Cz;var El=Cz;var Ek=CV;var Ej=((Ek+708)&4294967295);var Ei=((Ej+El)&4294967295);var Eh=la[((Ei)>>0)];var Ed=DO;var Eb=(((Ed))&255);var Ea=(Eb)|(Eh);var D9=CV;var D8=((D9+708)&4294967295);var D7=((D8+Em)&4294967295);la[((D7)>>0)]=Ea;var D6=Cz;var D5=(((D6)+1)&4294967295);Cz=D5;var D4=Cz;var D2=AK;var DZ=(((D4))|0)<=(((D2))|0);if(DZ){E1=3;continue}else{E1=4;break $bb_i67$$_ZL18SetLetterBitsRangeP10Translatoriii_exit68$6}}}}while(0);var DX=E3;C9=DX;CH=0;EU=85;A9=87;var DW=CH;var DV=1<<(DW);D0=DV;var DU=EU;CC=DU;var DT=CC;var DS=A9;var DR=(((DT))|0)<=(((DS))|0);if(DR){E1=5}else{E1=6}$bb_i59$$_ZL18SetLetterBitsRangeP10Translatoriii_exit60$10:do{if(E1==5){while(1){var DQ=CC;var DP=CC;var DM=C9;var DL=((DM+708)&4294967295);var DK=((DL+DP)&4294967295);var DJ=la[((DK)>>0)];var DH=D0;var DG=(((DH))&255);var DF=(DG)|(DJ);var DE=C9;var DD=((DE+708)&4294967295);var DC=((DD+DQ)&4294967295);la[((DC)>>0)]=DF;var DB=CC;var DA=(((DB)+1)&4294967295);CC=DA;var Dy=CC;var Dx=A9;var Dw=(((Dy))|0)<=(((Dx))|0);if(Dw){E1=5;continue}else{E1=6;break $bb_i59$$_ZL18SetLetterBitsRangeP10Translatoriii_exit60$10}}}}while(0);var Dv=E3;Dn=Dv;CL=1;E6=62;Bv=77;var Du=CL;var Dt=1<<(Du);Ee=Dt;var Dr=E6;CE=Dr;var Dq=CE;var Dm=Bv;var Dk=(((Dq))|0)<=(((Dm))|0);if(Dk){E1=7}else{E1=8}$bb_i51$$_ZL18SetLetterBitsRangeP10Translatoriii_exit52$14:do{if(E1==7){while(1){var Dj=CE;var Di=CE;var Dh=Dn;var Dg=((Dh+708)&4294967295);var Df=((Dg+Di)&4294967295);var De=la[((Df)>>0)];var Dd=Ee;var Dc=(((Dd))&255);var C8=(Dc)|(De);var C7=Dn;var C6=((C7+708)&4294967295);var C5=((C6+Dj)&4294967295);la[((C5)>>0)]=C8;var C4=CE;var C3=(((C4)+1)&4294967295);CE=C3;var C2=CE;var C0=Bv;var CZ=(((C2))|0)<=(((C0))|0);if(CZ){E1=7;continue}else{E1=8;break $bb_i51$$_ZL18SetLetterBitsRangeP10Translatoriii_exit52$14}}}}while(0);var CY=E3;Dz=CY;CX=1;Fh=85;Bw=87;var CA=CX;var Cy=1<<(CA);Ef=Cy;var Cx=Fh;CG=Cx;var Cw=CG;var Cv=Bw;var Cu=(((Cw))|0)<=(((Cv))|0);if(Cu){E1=9}else{E1=10}$bb_i43$$_ZL18SetLetterBitsRangeP10Translatoriii_exit44$18:do{if(E1==9){while(1){var Ct=CG;var Cs=CG;var Cr=Dz;var Cq=((Cr+708)&4294967295);var Cp=((Cq+Cs)&4294967295);var Co=la[((Cp)>>0)];var Cn=Ef;var Cm=(((Cn))&255);var Cl=(Cm)|(Co);var Ck=Dz;var Cj=((Ck+708)&4294967295);var Ci=((Cj+Ct)&4294967295);la[((Ci)>>0)]=Cl;var Ch=CG;var Cg=(((Ch)+1)&4294967295);CG=Cg;var Cf=CG;var Ce=Bw;var Cd=(((Cf))|0)<=(((Ce))|0);if(Cd){E1=9;continue}else{E1=10;break $bb_i43$$_ZL18SetLetterBitsRangeP10Translatoriii_exit44$18}}}}while(0);var Cc=E3;DI=Cc;C1=2;Fq=21;BH=57;var Cb=C1;var Ca=1<<(Cb);Er=Ca;var B9=Fq;CJ=B9;var B8=CJ;var B7=BH;var B6=(((B8))|0)<=(((B7))|0);if(B6){E1=11}else{E1=12}$bb_i35$$_ZL18SetLetterBitsRangeP10Translatoriii_exit36$22:do{if(E1==11){while(1){var B3=CJ;var B2=CJ;var B1=DI;var B0=((B1+708)&4294967295);var BZ=((B0+B2)&4294967295);var BY=la[((BZ)>>0)];var BX=Er;var BW=(((BX))&255);var BV=(BW)|(BY);var BU=DI;var BR=((BU+708)&4294967295);var BQ=((BR+B3)&4294967295);la[((BQ)>>0)]=BV;var BP=CJ;var BO=(((BP)+1)&4294967295);CJ=BO;var BN=CJ;var BM=BH;var BL=(((BN))|0)<=(((BM))|0);if(BL){E1=11;continue}else{E1=12;break $bb_i35$$_ZL18SetLetterBitsRangeP10Translatoriii_exit36$22}}}}while(0);var BK=E3;DN=BK;Db=2;CB=((xx)&4294967295);var BJ=Db;var BI=1<<(BJ);EC=BI;var BG=CB;var BF=la[((BG)>>0)];D1=BF;var BE=iB((BF),8,0)!=0;var BD=oD((BE),1,0);BS=BD;var BC=CB;var BB=((BC+1)&4294967295);CB=BB;if(BE){E1=13}else{E1=14}$bb_i28$$_ZL13SetLetterBitsP10TranslatoriPKc_exit$26:do{if(E1==13){while(1){var BA=D1;var Bz=oD((BA),8,0);var By=D1;var Bx=oD((By),8,0);var Bu=DN;var Bt=((Bu+708)&4294967295);var Bs=((Bt+Bx)&4294967295);var Br=la[((Bs)>>0)];var Bq=EC;var Bp=(((Bq))&255);var Bo=(Bp)|(Br);var Bn=DN;var Bl=((Bn+708)&4294967295);var Bj=((Bl+Bz)&4294967295);la[((Bj)>>0)]=Bo;var A7=CB;var A6=la[((A7)>>0)];D1=A6;var A5=D1;var A4=iB((A5),8,0)!=0;var A3=oD((A4),1,0);BS=A3;var A2=CB;var A1=((A2+1)&4294967295);CB=A1;var Do=iB((A3),8,0)!=0;if(Do){E1=13;continue}else{E1=14;break $bb_i28$$_ZL13SetLetterBitsP10TranslatoriPKc_exit$26}}}}while(0);var A0=E3;DY=A0;Dp=6;AM=4;BT=20;var AY=Dp;var AW=1<<(AY);ED=AW;var AJ=AM;CW=AJ;var AI=CW;var AH=BT;var i=(((AI))|0)<=(((AH))|0);if(i){E1=15}else{E1=16}$bb_i23$$_ZL18SetLetterBitsRangeP10Translatoriii_exit24$30:do{if(E1==15){while(1){var e=CW;var FS=CW;var FR=DY;var FQ=((FR+708)&4294967295);var FO=((FQ+FS)&4294967295);var FM=la[((FO)>>0)];var FC=ED;var FB=(((FC))&255);var FA=(FB)|(FM);var Fz=DY;var Fy=((Fz+708)&4294967295);var Fx=((Fy+e)&4294967295);la[((Fx)>>0)]=FA;var Fw=CW;var Fv=(((Fw)+1)&4294967295);CW=Fv;var Fu=CW;var Fs=BT;var Bm=(((Fu))|0)<=(((Fs))|0);if(Bm){E1=15;continue}else{E1=16;break $bb_i23$$_ZL18SetLetterBitsRangeP10Translatoriii_exit24$30}}}}while(0);var Bk=E3;D3=Bk;Ds=6;AV=62;B5=76;var Bi=Ds;var Bh=1<<(Bi);EP=Bh;var Bg=AV;Da=Bg;var Be=Da;var Bd=B5;var Bc=(((Be))|0)<=(((Bd))|0);if(Bc){E1=17}else{E1=18}$bb_i15$$_ZL18SetLetterBitsRangeP10Translatoriii_exit16$34:do{if(E1==17){while(1){var Bb=Da;var Ba=Da;var AZ=D3;var AX=((AZ+708)&4294967295);var AU=((AX+Ba)&4294967295);var AT=la[((AU)>>0)];var AS=EP;var AR=(((AS))&255);var AQ=(AR)|(AT);var AP=D3;var AO=((AP+708)&4294967295);var AN=((AO+Bb)&4294967295);la[((AN)>>0)]=AQ;var FP=Da;var FN=(((FP)+1)&4294967295);Da=FN;var FL=Da;var FK=B5;var FJ=(((FL))|0)<=(((FK))|0);if(FJ){E1=17;continue}else{E1=18;break $bb_i15$$_ZL18SetLetterBitsRangeP10Translatoriii_exit16$34}}}}while(0);var FH=E3;Ec=FH;Dl=6;B4=85;AL=87;var FG=Dl;var FF=1<<(FG);Fc=FF;var FE=B4;CD=FE;var FD=CD;var Ft=AL;var Fr=(((FD))|0)<=(((Ft))|0);if(Fr){E1=19}else{E1=20}$bb_i7$$_ZL18SetLetterBitsRangeP10Translatoriii_exit8$38:do{if(E1==19){while(1){var Fp=CD;var Fo=CD;var Fn=Ec;var Fm=((Fn+708)&4294967295);var Fl=((Fm+Fo)&4294967295);var Fk=la[((Fl)>>0)];var Fj=Fc;var Fi=(((Fj))&255);var Ff=(Fi)|(Fk);var Fe=Ec;var Fd=((Fe+708)&4294967295);var Fb=((Fd+Fp)&4294967295);la[((Fb)>>0)]=Ff;var Fa=CD;var E9=(((Fa)+1)&4294967295);CD=E9;var E8=CD;var E7=AL;var E5=(((E8))|0)<=(((E7))|0);if(E5){E1=19;continue}else{E1=20;break $bb_i7$$_ZL18SetLetterBitsRangeP10Translatoriii_exit8$38}}}}while(0);var E4=E3;var E0=((E4)&4294967295);var EZ=((E0+24)&4294967295);var EY=((EZ+20)&4294967295);uA[((EY)>>2)]=1;var EX=E3;var EW=((EX+964)&4294967295);var EV=uA[((EW)>>2)];var ET=(((EV)+77)&4294967295);var ES=E3;var ER=((ES)&4294967295);var EQ=((ER+276)&4294967295);uA[((EQ)>>2)]=ET;return;return}function xf(A5){var ET;var C9;var CH;var Cn;var BZ;var DY;var Cy;var Dn;var CL;var CB;var Ca;var D1;var CC;var DA;var CY;var CE;var Cb;var Ee;var CG;var DK;var Db;var CF;var Cm;var Eq;var CK;var DV;var Dg;var CI;var CA;var EC;var CX;var D0;var Ds;var CW;var CD;var EN;var Da;var Ec;var Do;var Dd;var E7;var E2;var E6;var Ef;var Fw;var Cz;var BN;var CJ;var D2;var EU;EU=A5;var CV=uA[((((Aa+72)&4294967295))>>2)];var CU=EU;var CT=((CU+696)&4294967295);uA[((CT)>>2)]=CV;var CS=EU;var CR=((CS+288)&4294967295);uA[((CR)>>2)]=1072;var CQ=EU;var CP=((CQ+284)&4294967295);uA[((CP)>>2)]=1105;var CO=EU;var CN=((CO+8268)&4294967295);uA[((CN)>>2)]=((uf)&4294967295);var CM=EU;var EM=((CM+964)&4294967295);uA[((EM)>>2)]=1056;var EL=EU;var EK=((EL+708)&4294967295);var EJ=((EK)&4294967295);ud(EJ,0,256,1,0);var EI=EU;Ef=EI;Fw=0;Cz=((cp)&4294967295);var EH=Fw;var EG=1<<(EH);CJ=EG;var EF=Cz;var EE=la[((EF)>>0)];D2=EE;var ED=D2;var EB=iB((ED),8,0)!=0;var EA=oD((EB),1,0);BN=EA;var Ez=Cz;var Ey=((Ez+1)&4294967295);Cz=Ey;if(EB){ET=1}else{ET=2}$bb_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit$2:do{if(ET==1){while(1){var Ex=D2;var Ew=oD((Ex),8,0);var Ev=D2;var Eu=oD((Ev),8,0);var Et=Ef;var Es=((Et+708)&4294967295);var Ep=((Es+Eu)&4294967295);var Eo=la[((Ep)>>0)];var En=CJ;var Em=(((En))&255);var El=(Em)|(Eo);var Ek=Ef;var Ej=((Ek+708)&4294967295);var Ei=((Ej+Ew)&4294967295);la[((Ei)>>0)]=El;var Eh=Cz;var Eg=la[((Eh)>>0)];D2=Eg;var Ed=D2;var Eb=iB((Ed),8,0)!=0;var Ea=oD((Eb),1,0);BN=Ea;var D9=Cz;var D8=((D9+1)&4294967295);Cz=D8;var Dq=iB((Ea),8,0)!=0;if(Dq){ET=1;continue}else{ET=2;break $bb_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit$2}}}}while(0);var D7=EU;C9=D7;CH=1;Cn=((ha)&4294967295);var D6=CH;var D5=1<<(D6);DY=D5;var D4=Cn;var D3=la[((D4)>>0)];Cy=D3;var DZ=iB((D3),8,0)!=0;var DX=oD((DZ),1,0);BZ=DX;var DW=Cn;var DU=((DW+1)&4294967295);Cn=DU;if(DZ){ET=3}else{ET=4}$bb_i62$$_ZL13SetLetterBitsP10TranslatoriPKc_exit63$6:do{if(ET==3){while(1){var DT=Cy;var DS=oD((DT),8,0);var DR=Cy;var DQ=oD((DR),8,0);var DP=C9;var DO=((DP+708)&4294967295);var DN=((DO+DQ)&4294967295);var DM=la[((DN)>>0)];var DL=DY;var DJ=(((DL))&255);var DI=(DJ)|(DM);var DH=C9;var DG=((DH+708)&4294967295);var DF=((DG+DS)&4294967295);la[((DF)>>0)]=DI;var DE=Cn;var DD=la[((DE)>>0)];Cy=DD;var DC=Cy;var DB=iB((DC),8,0)!=0;var Dz=oD((DB),1,0);BZ=Dz;var Dy=Cn;var Dx=((Dy+1)&4294967295);Cn=Dx;var FG=iB((Dz),8,0)!=0;if(FG){ET=3;continue}else{ET=4;break $bb_i62$$_ZL13SetLetterBitsP10TranslatoriPKc_exit63$6}}}}while(0);var Dw=EU;Dn=Dw;CL=2;CB=((d9)&4294967295);var Dv=CL;var Du=1<<(Dv);D1=Du;var Dt=CB;var Dr=la[((Dt)>>0)];CC=Dr;var Dp=iB((Dr),8,0)!=0;var Dm=oD((Dp),1,0);Ca=Dm;var Dl=CB;var Dk=((Dl+1)&4294967295);CB=Dk;if(Dp){ET=5}else{ET=6}$bb_i53$$_ZL13SetLetterBitsP10TranslatoriPKc_exit54$10:do{if(ET==5){while(1){var Dj=CC;var Di=oD((Dj),8,0);var Dh=CC;var Df=oD((Dh),8,0);var De=Dn;var Dc=((De+708)&4294967295);var C8=((Dc+Df)&4294967295);var C7=la[((C8)>>0)];var C6=D1;var C5=(((C6))&255);var C4=(C5)|(C7);var C3=Dn;var C2=((C3+708)&4294967295);var C1=((C2+Di)&4294967295);la[((C1)>>0)]=C4;var C0=CB;var CZ=la[((C0)>>0)];CC=CZ;var Cx=CC;var Cw=iB((Cx),8,0)!=0;var Cv=oD((Cw),1,0);Ca=Cv;var Cu=CB;var Ct=((Cu+1)&4294967295);CB=Ct;var AW=iB((Cv),8,0)!=0;if(AW){ET=5;continue}else{ET=6;break $bb_i53$$_ZL13SetLetterBitsP10TranslatoriPKc_exit54$10}}}}while(0);var Cs=EU;DA=Cs;CY=3;CE=((gu)&4294967295);var Cr=CY;var Cq=1<<(Cr);Ee=Cq;var Cp=CE;var Co=la[((Cp)>>0)];CG=Co;var Cl=iB((Co),8,0)!=0;var Ck=oD((Cl),1,0);Cb=Ck;var Cj=CE;var Ci=((Cj+1)&4294967295);CE=Ci;if(Cl){ET=7}else{ET=8}$bb_i44$$_ZL13SetLetterBitsP10TranslatoriPKc_exit45$14:do{if(ET==7){while(1){var Ch=CG;var Cg=oD((Ch),8,0);var Cf=CG;var Ce=oD((Cf),8,0);var Cd=DA;var Cc=((Cd+708)&4294967295);var B9=((Cc+Ce)&4294967295);var B8=la[((B9)>>0)];var B7=Ee;var B6=(((B7))&255);var B5=(B6)|(B8);var B4=DA;var B3=((B4+708)&4294967295);var B2=((B3+Cg)&4294967295);la[((B2)>>0)]=B5;var B1=CE;var B0=la[((B1)>>0)];CG=B0;var BY=CG;var BX=iB((BY),8,0)!=0;var BW=oD((BX),1,0);Cb=BW;var BV=CE;var BU=((BV+1)&4294967295);CE=BU;var Bg=iB((BW),8,0)!=0;if(Bg){ET=7;continue}else{ET=8;break $bb_i44$$_ZL13SetLetterBitsP10TranslatoriPKc_exit45$14}}}}while(0);var BT=EU;DK=BT;Db=4;CF=((v8)&4294967295);var BS=Db;var BR=1<<(BS);Eq=BR;var BQ=CF;var BP=la[((BQ)>>0)];CK=BP;var BM=iB((BP),8,0)!=0;var BL=oD((BM),1,0);Cm=BL;var BK=CF;var BJ=((BK+1)&4294967295);CF=BJ;if(BM){ET=9}else{ET=10}$bb_i35$$_ZL13SetLetterBitsP10TranslatoriPKc_exit36$18:do{if(ET==9){while(1){var BI=CK;var BH=oD((BI),8,0);var BG=CK;var BF=oD((BG),8,0);var BE=DK;var BD=((BE+708)&4294967295);var BB=((BD+BF)&4294967295);var BA=la[((BB)>>0)];var Bz=Eq;var By=(((Bz))&255);var Bx=(By)|(BA);var Bw=DK;var Bv=((Bw+708)&4294967295);var Bu=((Bv+BH)&4294967295);la[((Bu)>>0)]=Bx;var Bt=CF;var Bs=la[((Bt)>>0)];CK=Bs;var Bq=CK;var Bp=iB((Bq),8,0)!=0;var Bo=oD((Bp),1,0);Cm=Bo;var Bn=CF;var Bm=((Bn+1)&4294967295);CF=Bm;var Br=iB((Bo),8,0)!=0;if(Br){ET=9;continue}else{ET=10;break $bb_i35$$_ZL13SetLetterBitsP10TranslatoriPKc_exit36$18}}}}while(0);var Bl=EU;DV=Bl;Dg=5;CI=((rs)&4294967295);var Bk=Dg;var Bj=1<<(Bk);EC=Bj;var Bh=CI;var Be=la[((Bh)>>0)];CX=Be;var A4=iB((Be),8,0)!=0;var A3=oD((A4),1,0);CA=A3;var A2=CI;var A1=((A2+1)&4294967295);CI=A1;if(A4){ET=11}else{ET=12}$bb_i26$$_ZL13SetLetterBitsP10TranslatoriPKc_exit27$22:do{if(ET==11){while(1){var A0=CX;var AZ=oD((A0),8,0);var AY=CX;var AX=oD((AY),8,0);var AU=DV;var AS=((AU+708)&4294967295);var AJ=((AS+AX)&4294967295);var AI=la[((AJ)>>0)];var AH=EC;var i=(((AH))&255);var e=(i)|(AI);var FI=DV;var FH=((FI+708)&4294967295);var FF=((FH+AZ)&4294967295);la[((FF)>>0)]=e;var FD=CI;var FB=la[((FD)>>0)];CX=FB;var Fr=CX;var Fq=iB((Fr),8,0)!=0;var Fp=oD((Fq),1,0);CA=Fp;var Fo=CI;var Fn=((Fo+1)&4294967295);CI=Fn;var BC=iB((Fp),8,0)!=0;if(BC){ET=11;continue}else{ET=12;break $bb_i26$$_ZL13SetLetterBitsP10TranslatoriPKc_exit27$22}}}}while(0);var Fm=EU;D0=Fm;Ds=6;CW=((hw)&4294967295);var Fl=Ds;var Fk=1<<(Fl);EN=Fk;var Fj=CW;var Fh=la[((Fj)>>0)];Da=Fh;var Bi=iB((Fh),8,0)!=0;var Bf=oD((Bi),1,0);CD=Bf;var Bd=CW;var Bc=((Bd+1)&4294967295);CW=Bc;if(Bi){ET=13}else{ET=14}$bb_i17$$_ZL13SetLetterBitsP10TranslatoriPKc_exit18$26:do{if(ET==13){while(1){var Bb=Da;var Ba=oD((Bb),8,0);var A9=Da;var A8=oD((A9),8,0);var A7=D0;var A6=((A7+708)&4294967295);var AV=((A6+A8)&4294967295);var AT=la[((AV)>>0)];var AR=EN;var AQ=(((AR))&255);var AP=(AQ)|(AT);var AO=D0;var AN=((AO+708)&4294967295);var AM=((AN+Ba)&4294967295);la[((AM)>>0)]=AP;var AL=CW;var AK=la[((AL)>>0)];Da=AK;var FE=Da;var FC=iB((FE),8,0)!=0;var FA=oD((FC),1,0);CD=FA;var Fz=CW;var Fy=((Fz+1)&4294967295);CW=Fy;var BO=iB((FA),8,0)!=0;if(BO){ET=13;continue}else{ET=14;break $bb_i17$$_ZL13SetLetterBitsP10TranslatoriPKc_exit18$26}}}}while(0);var Fx=EU;Ec=Fx;Do=7;Dd=((cp)&4294967295);var Fv=Do;var Fu=1<<(Fv);E2=Fu;var Ft=Dd;var Fs=la[((Ft)>>0)];E6=Fs;var Fi=iB((Fs),8,0)!=0;var Fg=oD((Fi),1,0);E7=Fg;var Ff=Dd;var Fe=((Ff+1)&4294967295);Dd=Fe;if(Fi){ET=15}else{ET=16}$bb_i8$$_ZL13SetLetterBitsP10TranslatoriPKc_exit9$30:do{if(ET==15){while(1){var Fd=E6;var Fc=oD((Fd),8,0);var Fb=E6;var Fa=oD((Fb),8,0);var E9=Ec;var E8=((E9+708)&4294967295);var E5=((E8+Fa)&4294967295);var E4=la[((E5)>>0)];var E3=E2;var E1=(((E3))&255);var E0=(E1)|(E4);var EZ=Ec;var EY=((EZ+708)&4294967295);var EX=((EY+Fc)&4294967295);la[((EX)>>0)]=E0;var EW=Dd;var EV=la[((EW)>>0)];E6=EV;var ES=E6;var ER=iB((ES),8,0)!=0;var EQ=oD((ER),1,0);E7=EQ;var EP=Dd;var EO=((EP+1)&4294967295);Dd=EO;var Er=iB((EQ),8,0)!=0;if(Er){ET=15;continue}else{ET=16;break $bb_i8$$_ZL13SetLetterBitsP10TranslatoriPKc_exit9$30}}}}while(0);return;return}function bN(A0,AY,AX){var AU;var AQ=null;var A1;var AP;var AZ;A1=A0;AP=AY;AZ=AX;var AO=AP;var AN=(AO)!=0;if(AN){AQ=-1;AU=1}else{AQ=-1;AU=2}if(AU==1){var AM=A1;var AL=((AM+676)&4294967295);var AK=((AL)&4294967295);var AJ=AP;var AI=AK;var AH=AJ;ns(AI,AH,16,1,0);var AW=AZ;AQ=1}var i=AQ==1?AW:(AX);var e=(i)!=0;if(e){AU=3}else{AU=4}if(AU==3){var AV=A1;var AT=((AV+660)&4294967295);var AS=((AT)&4294967295);var AR=AZ;ns(AS,AR,8,1,0)}return;return}function jr(auH){var adU;var aAz=null;var O0;var aoz;var AH;var O1;var aFF;var Vw;var axc;var FL;var Vy;var aIh;var V4;var axp;var F7;var WA;var axq;var Gh;var WD;var aJf;var Xa;var PR;var arT;var aw7;var agq;var Qu;var Xd;var P1;var ate;var axk;var agW;var QG;var XA;var Qc;var atB;var axy;var ahj;var Q1;var XX;var Qn;var atZ;var axI;var ahx;var Q2;var Yu;var Qr;var aul;var axQ;var ahy;var Ro;var YZ;var ayf;var Ih;var Y1;var Qt;var aAm;var aGp;var ait;var aFa;var Zy;var aAi;var Ss;var UV;var Zz;var Bq;var Z4;var Br;var Z6;var ayM;var JG;var azs;var aCD;var al3;var ax3;var aoV;var U8;var abI;var UU;var avP;var ahV;var aiw;var aFi;var Q7;var ai2;var aaS;var aGs;var C0;var arm;var aIK;var ajz;var aGm;var abO;var adZ;var ajA;var IA;var ajY;var aFQ;var R6;var ajZ;var I8;var akk;var aF2;var St;var akP;var aF3;var SI;var akS;var J2;var alp;var aF4;var Te;var als;var Ki;var alY;var aF8;var TL;var al2;var aGb;var Ub;var amB;var aGd;var Uy;var arM;var A2;var ab0;var atc;var ana;var DW;var MX;var azV;var G5;var atA;var ann;var D7;var Nk;var az6;var Hr;var atU;var Bs;var adb;var atY;var anF;var aHd;var Bc;var aAj;var aoA;var auk;var anT;var EB;var OI;var aAk;var IH;var auG;var Ct;var aeD;var ave;var an2;var E1;var Pn;var aAy;var Jx;var avL;var aod;var Fd;var Pz;var aAC;var JR;var awi;var CV;var agb;var awk;var Vv;var awO;var C8;var agH;var awQ;var V0;var aAA;var J3;var ag5;var aAB;var adT;var aAY;var axs;var Px;var XT;var aGt;var RX;var aBl;var axE;var Py;var Yn;var aGv;var Sj;var aBm;var Kg;var ayv;var ah4;var aBU;var K8;var apJ;var aCg;var Lc;var apX;var aCi;var ax8;var P9;var ZU;var aGx;var TH;var aCE;var aye;var Qm;var aah;var aGz;var Ua;var aDa;var ayh;var Qq;var aay;var aGM;var UA;var aDG;var MS;var ard;var aDH;var ajB;var arO;var ai3;var aEd;var ahz;var aEf;var Np;var art;var aEK;var ahW;var aEM;var aiq;var aGN;var NV;var arz;var aGO;var UW;var ayS;var aHa;var U7;var ay4;var aHb;var aql;var aHy;var Vx;var azg;var aHz;var aqG;var aHW;var V5;var azu;var aIi;var WC;var azD;var aID;var W8;var azO;var aJc;var Xc;var azT;var aJg;var aF6;var abl;var am3;var FA;var ag0;var aJN;var aF9;var abp;var anf;var F3;var aho;var aKj;var aGc;var abA;var anr;var Gp;var ahB;var i;var aGf;var abV;var anC;var GJ;var ahX;var Do;var adn;var GQ;var aGn;var ary;var aGB;var Dz;var alu;var aF7;var DB;var adV;var aGP;var Bt;var arA;var acp;var DM;var al7;var aGa;var DY;var ae4;var Xe;var arN;var arB;var Dc;var Ea;var amX;var aGe;var Eb;var GO;var En;var am9;var aGg;var Eo;var Hb;var Ez;var anm;var aGk;var EA;var Hx;var EC;var Hz;var EP;var anz;var aGo;var EQ;var aGy;var A4;var aDT;var aty;var Ec;var E2;var anP;var aGq;var E3;var Iz;var Qo;var ED;var Kp;var Qp;var apC;var avX;var ajm;var Nq;var EE;var akU;var alE;var Lb;var akT;var aiZ;var aAh;var NX;var OV;var aFR;var NW;var Mc;var ahk;var aGi;var aGl;var an1;var aGh;var aF5;var Kj;var apB;var aqe;var Qs;var apA;var aoe;var aFv;var R5;var SP;var aGA;var R4;var QF;var anJ;var aIG;var aJL;var arP;var aIF;var avr;var BV;var Fl;var DA;var aCd;var adA;var LH;var anH;var al1;var aGw;var IB;var aFp;var PW;var aGu;var ax1;var aca;var azh;var Z8;var ayi;var aBx;var ayg;var Zw;var Vu;var aBw;var aIE;var aaF;var WE;var Tv;var aBv;var axo;var azL;WE=auH;axo=0;var aBu=WE;var aBt=la[((aBu)>>0)];var aBr=iB((aBt),8,0)!=0;if(aBr){adU=1}else{adU=2}$bb$$bb2$2:do{if(adU==1){while(1){var aBq=axo;var aBp=(((aBq)*256)&4294967295);var aBo=WE;var aBn=la[((aBo)>>0)];var FK=iB((aBn),8,0);var FJ=(((FK)+(aBp))&4294967295);axo=FJ;var FI=WE;var FH=((FI+1)&4294967295);WE=FH;var FG=WE;var FF=la[((FG)>>0)];var FE=iB((FF),8,0)!=0;if(FE){adU=1;continue}else{adU=2;break $bb$$bb2$2}}}}while(0);Z8=8328;var FD=Z8;var FC=fu(FD);Zw=FC;var FB=Zw;var Fp=(FB)==0;var Fo=oD((Fp),1,0);ayg=Fo;var aEE=iB((Fo),8,0)!=0;if(aEE){adU=3}else{adU=4}if(adU==3){var Fn=uA[((ta)>>2)];var Fm=yf(((gb)&4294967295),1,22,Fn)}var Fk=Zw;aBx=Fk;var Fj=aBx;ayi=Fj;var akr=ayi;var Fi=akr;aIE=Fi;var Fh=(Fi)==0;if(Fh){adU=5}else{adU=6}if(adU==5){aBw=0}else{if(adU==6){var Fg=uA[((((Aa+4)&4294967295))>>2)];var Ff=aIE;var Fe=((Ff+696)&4294967295);uA[((Fe)>>2)]=Fg;la[((((n0)&4294967295))>>0)]=0;var Fc=aIE;var Fb=((Fc+692)&4294967295);uA[((Fb)>>2)]=0;var Fa=aIE;var E9=((Fa+1048)&4294967295);uA[((E9)>>2)]=0;var E8=aIE;var E7=((E8+1052)&4294967295);uA[((E7)>>2)]=0;var E6=aIE;var E5=((E6+288)&4294967295);uA[((E5)>>2)]=97;var E4=aIE;var E0=((E4+284)&4294967295);uA[((E0)>>2)]=122;var EZ=aIE;var EY=((EZ+8268)&4294967295);uA[((EY)>>2)]=0;var EX=aIE;var EW=((EX+964)&4294967295);uA[((EW)>>2)]=0;var EV=aIE;var EU=((EV+708)&4294967295);var ET=((EU)&4294967295);ud(ET,0,256,1,0);var ES=aIE;var ER=((ES+968)&4294967295);var EO=((ER)&4294967295);var EN=EO;ud(EN,0,32,1,0);var EM=aIE;aFp=EM;PW=0;aGu=((sm)&4294967295);var EL=PW;var EK=1<<(EL);aca=EK;var EJ=aGu;var EI=la[((EJ)>>0)];azh=EI;var EH=azh;var EG=iB((EH),8,0)!=0;var EF=oD((EG),1,0);ax1=EF;var Ey=aGu;var Ex=((Ey+1)&4294967295);aGu=Ex;if(EG){adU=7}else{adU=8}$bb_i2_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit_i$12:do{if(adU==7){while(1){var Ew=azh;var Ev=oD((Ew),8,0);var Eu=azh;var Et=oD((Eu),8,0);var Es=aFp;var Er=((Es+708)&4294967295);var Eq=((Er+Et)&4294967295);var Ep=la[((Eq)>>0)];var Em=aca;var El=(((Em))&255);var Ek=(El)|(Ep);var Ej=aFp;var Ei=((Ej+708)&4294967295);var Eh=((Ei+Ev)&4294967295);la[((Eh)>>0)]=Ek;var Eg=aGu;var Ef=la[((Eg)>>0)];azh=Ef;var Ee=azh;var Ed=iB((Ee),8,0)!=0;var D9=oD((Ed),1,0);ax1=D9;var D8=aGu;var D6=((D8+1)&4294967295);aGu=D6;var aGr=iB((D9),8,0)!=0;if(aGr){adU=7;continue}else{adU=8;break $bb_i2_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit_i$12}}}}while(0);var D5=aIE;adA=D5;LH=1;anH=((rr)&4294967295);var D4=LH;var D3=1<<(D4);aGw=D3;var D2=anH;var D1=la[((D2)>>0)];IB=D1;var D0=iB((D1),8,0)!=0;var DZ=oD((D0),1,0);al1=DZ;var DX=anH;var DV=((DX+1)&4294967295);anH=DV;if(D0){adU=9}else{adU=10}$bb_i10_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit11_i$16:do{if(adU==9){while(1){var DU=IB;var DT=oD((DU),8,0);var DS=IB;var DR=oD((DS),8,0);var DQ=adA;var DP=((DQ+708)&4294967295);var DO=((DP+DR)&4294967295);var DN=la[((DO)>>0)];var ajp=aGw;var ajl=(((ajp))&255);var aji=(ajl)|(DN);var ajg=adA;var aje=((ajg+708)&4294967295);var ajc=((aje+DT)&4294967295);la[((ajc)>>0)]=aji;var aja=anH;var ai8=la[((aja)>>0)];IB=ai8;var ai6=IB;var ai4=iB((ai6),8,0)!=0;var aiR=oD((ai4),1,0);al1=aiR;var aiO=anH;var aiL=((aiO+1)&4294967295);anH=aiL;var auJ=iB((aiR),8,0)!=0;if(auJ){adU=9;continue}else{adU=10;break $bb_i10_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit11_i$16}}}}while(0);var aiJ=aIE;EE=aiJ;akU=2;alE=((y1)&4294967295);var aiH=akU;var aiF=1<<(aiH);akT=aiF;var aiD=alE;var aiB=la[((aiD)>>0)];aiZ=aiB;var aiz=iB((aiB),8,0)!=0;var aix=oD((aiz),1,0);Lb=aix;var aik=alE;var aih=((aik+1)&4294967295);alE=aih;if(aiz){adU=11}else{adU=12}$bb_i67_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit68_i$20:do{if(adU==11){while(1){var aie=aiZ;var aic=oD((aie),8,0);var aia=aiZ;var ah8=oD((aia),8,0);var ah6=EE;var ah3=((ah6+708)&4294967295);var ah1=((ah3+ah8)&4294967295);var ahZ=la[((ah1)>>0)];var ahT=akT;var ahR=(((ahT))&255);var ahP=(ahR)|(ahZ);var ahN=EE;var ahL=((ahN+708)&4294967295);var ahJ=((ahL+aic)&4294967295);la[((ahJ)>>0)]=ahP;var ahH=alE;var ahF=la[((ahH)>>0)];aiZ=ahF;var ahD=aiZ;var ahA=iB((ahD),8,0)!=0;var ahw=oD((ahA),1,0);Lb=ahw;var ahv=alE;var ahu=((ahv+1)&4294967295);alE=ahu;var ak0=iB((ahw),8,0)!=0;if(ak0){adU=11;continue}else{adU=12;break $bb_i67_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit68_i$20}}}}while(0);var aht=aIE;aAh=aht;NX=3;OV=((gD)&4294967295);var ahs=NX;var ahr=1<<(ahs);NW=ahr;var ahq=OV;var ahp=la[((ahq)>>0)];Mc=ahp;var ahn=iB((ahp),8,0)!=0;var ahm=oD((ahn),1,0);aFR=ahm;var ahf=OV;var ahd=((ahf+1)&4294967295);OV=ahd;if(ahn){adU=13}else{adU=14}$bb_i58_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit59_i$24:do{if(adU==13){while(1){var ahb=Mc;var ag9=oD((ahb),8,0);var ag7=Mc;var ag4=oD((ag7),8,0);var ag2=aAh;var agZ=((ag2+708)&4294967295);var agY=((agZ+ag4)&4294967295);var agX=la[((agY)>>0)];var agS=NW;var agQ=(((agS))&255);var agO=(agQ)|(agX);var agM=aAh;var agK=((agM+708)&4294967295);var agG=((agK+ag9)&4294967295);la[((agG)>>0)]=agO;var agD=OV;var agA=la[((agD)>>0)];Mc=agA;var agy=Mc;var agw=iB((agy),8,0)!=0;var agm=oD((agw),1,0);aFR=agm;var agk=OV;var agi=((agk+1)&4294967295);OV=agi;var Oi=iB((agm),8,0)!=0;if(Oi){adU=13;continue}else{adU=14;break $bb_i58_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit59_i$24}}}}while(0);var agg=aIE;ahk=agg;aGi=4;aGl=((oA)&4294967295);var age=aGi;var aga=1<<(age);aGh=aga;var af7=aGl;var af4=la[((af7)>>0)];aF5=af4;var af2=iB((af4),8,0)!=0;var af0=oD((af2),1,0);an1=af0;var afH=aGl;var afF=((afH+1)&4294967295);aGl=afF;if(af2){adU=15}else{adU=16}$bb_i49_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit50_i$28:do{if(adU==15){while(1){var afD=aF5;var afB=oD((afD),8,0);var afz=aF5;var afw=oD((afz),8,0);var aft=ahk;var afq=((aft+708)&4294967295);var afo=((afq+afw)&4294967295);var afm=la[((afo)>>0)];var ae2=aGh;var ae0=(((ae2))&255);var aeY=(ae0)|(afm);var aeW=ahk;var aeU=((aeW+708)&4294967295);var aeR=((aeU+afB)&4294967295);la[((aeR)>>0)]=aeY;var aeO=aGl;var aeL=la[((aeO)>>0)];aF5=aeL;var aeJ=aF5;var aeH=iB((aeJ),8,0)!=0;var W1=oD((aeH),1,0);an1=W1;var WY=aGl;var WV=((WY+1)&4294967295);aGl=WV;var aGj=iB((W1),8,0)!=0;if(aGj){adU=15;continue}else{adU=16;break $bb_i49_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit50_i$28}}}}while(0);var WS=aIE;Kj=WS;apB=5;aqe=((wb)&4294967295);var WQ=apB;var WO=1<<(WQ);apA=WO;var WM=aqe;var WK=la[((WM)>>0)];aoe=WK;var WH=iB((WK),8,0)!=0;var WF=oD((WH),1,0);Qs=WF;var Ws=aqe;var Wp=((Ws+1)&4294967295);aqe=Wp;if(WH){adU=17}else{adU=18}$bb_i40_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit41_i$32:do{if(adU==17){while(1){var Wm=aoe;var Wj=oD((Wm),8,0);var Wh=aoe;var Wf=oD((Wh),8,0);var Wd=Kj;var Wb=((Wd+708)&4294967295);var V8=((Wb+Wf)&4294967295);var V6=la[((V8)>>0)];var VU=apA;var VR=(((VU))&255);var VO=(VR)|(V6);var VL=Kj;var VJ=((VL+708)&4294967295);var VH=((VJ+Wj)&4294967295);la[((VH)>>0)]=VO;var VF=aqe;var VD=la[((VF)>>0)];aoe=VD;var VB=aoe;var Vz=iB((VB),8,0)!=0;var Vs=oD((Vz),1,0);Qs=Vs;var Vq=aqe;var Vo=((Vq+1)&4294967295);aqe=Vo;var apM=iB((Vs),8,0)!=0;if(apM){adU=17;continue}else{adU=18;break $bb_i40_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit41_i$32}}}}while(0);var Vm=aIE;aFv=Vm;R5=6;SP=((cC)&4294967295);var Vk=R5;var Vi=1<<(Vk);R4=Vi;var Vg=SP;var Ve=la[((Vg)>>0)];QF=Ve;var Vc=iB((Ve),8,0)!=0;var Va=oD((Vc),1,0);aGA=Va;var U6=SP;var U5=((U6+1)&4294967295);SP=U5;if(Vc){adU=19}else{adU=20}$bb_i31_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit32_i$36:do{if(adU==19){while(1){var U4=QF;var U3=oD((U4),8,0);var U2=QF;var U1=oD((U2),8,0);var U0=aFv;var UZ=((U0+708)&4294967295);var UY=((UZ+U1)&4294967295);var UX=la[((UY)>>0)];var UR=R4;var UP=(((UR))&255);var UN=(UP)|(UX);var UL=aFv;var UJ=((UL+708)&4294967295);var UH=((UJ+U3)&4294967295);la[((UH)>>0)]=UN;var UF=SP;var UD=la[((UF)>>0)];QF=UD;var UB=QF;var Uz=iB((UB),8,0)!=0;var Uv=oD((Uz),1,0);aGA=Uv;var Ut=SP;var Ur=((Ut+1)&4294967295);SP=Ur;var A3=iB((Uv),8,0)!=0;if(A3){adU=19;continue}else{adU=20;break $bb_i31_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit32_i$36}}}}while(0);var Up=aIE;anJ=Up;aIG=7;aJL=((lL)&4294967295);var Un=aIG;var Uk=1<<(Un);aIF=Uk;var Uh=aJL;var Ue=la[((Uh)>>0)];avr=Ue;var T9=iB((Ue),8,0)!=0;var T7=oD((T9),1,0);arP=T7;var TZ=aJL;var TX=((TZ+1)&4294967295);aJL=TX;if(T9){adU=21}else{adU=22}$bb_i22_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit23_i$40:do{if(adU==21){while(1){var TV=avr;var TT=oD((TV),8,0);var TR=avr;var TO=oD((TR),8,0);var TK=anJ;var TG=((TK+708)&4294967295);var TD=((TG+TO)&4294967295);var TB=la[((TD)>>0)];var Ts=aIF;var Tq=(((Ts))&255);var To=(Tq)|(TB);var Tm=anJ;var Tk=((Tm+708)&4294967295);var Th=((Tk+TT)&4294967295);la[((Th)>>0)]=To;var Td=aJL;var Ta=la[((Td)>>0)];avr=Ta;var S7=avr;var S5=iB((S7),8,0)!=0;var SX=oD((S5),1,0);arP=SX;var SV=aJL;var ST=((SV+1)&4294967295);aJL=ST;var axr=iB((SX),8,0)!=0;if(axr){adU=21;continue}else{adU=22;break $bb_i22_i$$_ZL13SetLetterBitsP10TranslatoriPKc_exit23_i$40}}}}while(0);var SR=aIE;var SO=((SR+700)&4294967295);uA[((SO)>>2)]=((vG)&4294967295);var SL=aIE;var SH=((SL+704)&4294967295);uA[((SH)>>2)]=((pF)&4294967295);aaF=0;while(1){var SE=aaF;var SB=aaF;var Sz=((v2+SB)&4294967295);var L3=la[((Sz)>>0)];var L0=aIE;var LX=((L0+660)&4294967295);var LU=((LX+SE)&4294967295);la[((LU)>>0)]=L3;var LS=aaF;var LQ=aaF;var LO=((v2+LQ)&4294967295);var LM=la[((LO)>>0)];var LK=(((LM)-1)&255);var LI=aIE;var Ly=((LI+668)&4294967295);var Lv=((Ly+LS)&4294967295);la[((Lv)>>0)]=LK;var Ls=aaF;var Lp=aaF;var Ln=((aK+Lp*2)&4294967295);var Ll=uW[((Ln)>>1)];var Lj=aIE;var Lh=((Lj+676)&4294967295);var Lf=((Lh+Ls*2)&4294967295);uW[((Lf)>>1)]=Ll;var Ld=aaF;var K1=(((Ld)+1)&4294967295);aaF=K1;var KY=(((K1))|0)<=7;if(KY){adU=23;continue}else{adU=24;break}}var KV=aIE;var KS=((KV)&4294967295);var KQ=KS;ud(KQ,0,280,1,0);var KO=aIE;var KM=((KO)&4294967295);var KK=((KM+272)&4294967295);uA[((KK)>>2)]=500;var KI=aIE;var KG=((KI)&4294967295);var KE=((KG+8)&4294967295);uA[((KE)>>2)]=2;var KC=aIE;var KA=((KC)&4294967295);var Ky=((KA+16)&4294967295);uA[((Ky)>>2)]=1;var Kw=aIE;var Ku=((Kw)&4294967295);var Ks=((Ku+20)&4294967295);uA[((Ks)>>2)]=3;var Kq=aIE;var Kn=((Kq)&4294967295);var Kl=((Kn+24)&4294967295);var Kf=((Kl+28)&4294967295);uA[((Kf)>>2)]=95;var Ke=aIE;var Kd=((Ke)&4294967295);var Kc=((Kd+24)&4294967295);var Kb=((Kc+72)&4294967295);uA[((Kb)>>2)]=95;var Ka=aIE;var J9=((Ka)&4294967295);var J7=((J9+24)&4294967295);var J5=((J7+36)&4294967295);uA[((J5)>>2)]=19;var J4=aIE;var JZ=((J4)&4294967295);var JX=((JZ+24)&4294967295);var JV=((JX+20)&4294967295);uA[((JV)>>2)]=115;var JT=aIE;var JQ=((JT)&4294967295);var JO=((JQ+24)&4294967295);var JL=((JO+64)&4294967295);uA[((JL)>>2)]=4;var JJ=aIE;var JH=((JJ)&4294967295);var JF=((JH+100)&4294967295);var JC=((JF+64)&4294967295);uA[((JC)>>2)]=2;var JA=aIE;var Jy=((JA)&4294967295);var Jv=((Jy+248)&4294967295);la[((Jv)>>0)]=3;var Jt=aIE;var Jp=((Jt)&4294967295);var Jm=((Jp+264)&4294967295);uA[((Jm)>>2)]=0;var Jj=aIE;var Jg=((Jj)&4294967295);var Je=((Jg+268)&4294967295);uA[((Je)>>2)]=((tG)&4294967295);var I5=aIE;BV=I5;Fl=201;var I3=Fl;var I1=(((I3))|0)%100;var IZ=((oL+I1*4)&4294967295);var IW=uA[((IZ)>>2)];var IT=BV;var IQ=((IT)&4294967295);var IN=((IQ+176)&4294967295);uA[((IN)>>2)]=IW;var IK=BV;var II=((IK)&4294967295);var Iw=((II+176)&4294967295);var Iu=uA[((Iw)>>2)];var Is=BV;var Iq=((Is)&4294967295);var Io=((Iq+180)&4294967295);uA[((Io)>>2)]=Iu;var Il=Fl;var Ii=(((((Il))|0)/100)|0);aCd=Ii;var Ie=aCd;var Ib=(((Ie))|0)!=0;var H9=oD((Ib),1,0);DA=H9;var H1=DA;var PK=iB((H1),8,0)!=0;if(PK){adU=25}else{adU=26}if(adU==25){var HZ=aCd;var HX=((oL+HZ*4)&4294967295);var HV=uA[((HX)>>2)];var HT=BV;var HQ=((HT)&4294967295);var HN=((HQ+180)&4294967295);uA[((HN)>>2)]=HV}var HK=aIE;var HH=((HK)&4294967295);var HF=((HH+240)&4294967295);uA[((HF)>>2)]=100;var Cl=aIE;var Cj=((Cl)&4294967295);var Ch=((Cj+196)&4294967295);uA[((Ch)>>2)]=49;var Cf=aIE;var Ce=((Cf)&4294967295);var Cd=((Ce+200)&4294967295);uA[((Cd)>>2)]=2;var Cc=aIE;var Cb=((Cc)&4294967295);var Ca=((Cb+204)&4294967295);uA[((Ca)>>2)]=44;var B9=aIE;var B1=((B9)&4294967295);var BZ=((B1+208)&4294967295);uA[((BZ)>>2)]=46;var BX=aIE;var BU=((BX)&4294967295);var BT=((BU+192)&4294967295);uA[((BT)>>2)]=1227133512;var BS=aIE;var BR=((BS)&4294967295);var BQ=((BR+212)&4294967295);uA[((BQ)>>2)]=14;var BP=aIE;var BO=((BP+1000)&4294967295);var BG=((BO)&4294967295);var BE=BG;ns(BE,((me)&4294967295),48,1,0);var BC=aIE;var BA=((BC)&4294967295);var Bz=((BA+232)&4294967295);var By=((Bz)&4294967295);ns(By,((kq)&4294967295),6,1,0);var Bx=aIE;aBw=Bx}}var Bw=aBw;Vu=Bw;var anO=Vu;azL=anO;var Bv=axo;if(Bv==24934){adU=28}else{if(Bv==24941){adU=32}else{if(Bv==24946){adU=36}else{if(Bv==25191){adU=37}else{if(Bv==25198){adU=38}else{if(Bv==25203){adU=110}else{if(Bv==25441){adU=85}else{if(Bv==25459){adU=218}else{if(Bv==25465){adU=44}else{if(Bv==25697){adU=48}else{if(Bv==25701){adU=52}else{if(Bv==25718){adU=56}else{if(Bv==25964){adU=67}else{if(Bv==25966){adU=62}else{if(Bv==25967){adU=81}else{if(Bv==25971){adU=85}else{if(Bv==25972){adU=97}else{if(Bv==25973){adU=92}else{if(Bv==26209){adU=96}else{if(Bv==26217){adU=98}else{if(Bv==26226){adU=101}else{if(Bv==26729){adU=105}else{if(Bv==26738){adU=110}else{if(Bv==26740){adU=118}else{if(Bv==26741){adU=119}else{if(Bv==26745){adU=124}else{if(Bv==26980){adU=134}else{if(Bv==26995){adU=138}else{if(Bv==26996){adU=148}else{if(Bv==27489){adU=156}else{if(Bv==27502){adU=250}else{if(Bv==27503){adU=166}else{if(Bv==27509){adU=173}else{if(Bv==27745){adU=177}else{if(Bv==27766){adU=178}else{if(Bv==28011){adU=182}else{if(Bv==28012){adU=250}else{if(Bv==28018){adU=250}else{if(Bv==28261){adU=105}else{if(Bv==28268){adU=186}else{if(Bv==28271){adU=187}else{if(Bv==28525){adU=191}else{if(Bv==28769){adU=105}else{if(Bv==28780){adU=195}else{if(Bv==28788){adU=199}else{if(Bv==29295){adU=207}else{if(Bv==29301){adU=211}else{if(Bv==29303){adU=217}else{if(Bv==29545){adU=226}else{if(Bv==29547){adU=218}else{if(Bv==29548){adU=238}else{if(Bv==29553){adU=239}else{if(Bv==29554){adU=110}else{if(Bv==29558){adU=243}else{if(Bv==29559){adU=247}else{if(Bv==29793){adU=250}else{if(Bv==29797){adU=250}else{if(Bv==29806){adU=247}else{if(Bv==29810){adU=264}else{if(Bv==30066){adU=268}else{if(Bv==30313){adU=269}else{if(Bv==30575){adU=273}else{if(Bv==31336){adU=274}else{if(Bv==6779491){adU=67}else{if(Bv==6972015){adU=152}else{if(Bv==7364976){adU=85}else{if(Bv==8022137){adU=274}else{adU=278}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}$bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51:do{if(adU==278){var acs=azL;var acr=((acs)&4294967295);var acq=((acr+24)&4294967295);var aco=((acq+20)&4294967295);uA[((aco)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==28){var Bu=azL;avX=Bu;ajm=((rL)&4294967295);Nq=0;var Bp=ajm;var Bo=(Bp)!=0;if(Bo){adU=29}else{adU=31}$bb1_i2$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit$54:do{if(adU==29){var Bn=avX;var Bm=((Bn+676)&4294967295);var Bl=((Bm)&4294967295);var Bk=ajm;var Bj=Bl;var Bi=Bk;ns(Bj,Bi,16,1,0);var Ql=Nq;var Bh=(Ql)!=0;if(!(Bh)){adU=31;break $bb1_i2$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit$54}var Bg=avX;var Bf=((Bg+660)&4294967295);var Be=((Bf)&4294967295);var Bd=Nq;ns(Be,Bd,8,1,0)}}while(0);var Bb=azL;var Ba=((Bb)&4294967295);var A9=((Ba+8)&4294967295);uA[((A9)>>2)]=0;var A8=azL;var A7=((A8)&4294967295);var A6=((A7+4)&4294967295);uA[((A6)>>2)]=48;var A5=azL;var AY=((A5)&4294967295);var AW=((AY+24)&4294967295);var AU=((AW+4)&4294967295);uA[((AU)>>2)]=1;var AS=azL;var AQ=((AS)&4294967295);var AO=((AQ+24)&4294967295);var AM=((AO+12)&4294967295);uA[((AM)>>2)]=1;var AK=azL;Qp=AK;apC=121;var AJ=apC;var AI=apC;var aKK=Qp;var aKI=((aKK+708)&4294967295);var aKG=((aKI+AI)&4294967295);var aKE=la[((aKG)>>0)];var aKC=(aKE)&64;var aKz=(aKC)|-127;var aKw=Qp;var aKt=((aKw+708)&4294967295);var aKr=((aKt+AJ)&4294967295);la[((aKr)>>0)]=aKz;var aKp=azL;var aKf=((aKp)&4294967295);var aKd=((aKf+184)&4294967295);uA[((aKd)>>2)]=16779472;var aKb=azL;var aJ9=((aKb)&4294967295);var aJ7=((aJ9+220)&4294967295);uA[((aJ7)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==32){var aJ3=azL;Qo=aJ3;ED=((qe)&4294967295);Kp=((gi)&4294967295);var aJ0=ED;var aJX=(aJ0)!=0;if(aJX){adU=33}else{adU=34}$bb1_i10$$bb2_i11$59:do{if(adU==33){var aJV=Qo;var aJT=((aJV+676)&4294967295);var aJI=((aJT)&4294967295);var aJG=ED;var aJE=aJI;var aJC=aJG;ns(aJE,aJC,16,1,0);var acn=Kp;var aJz=(acn)!=0;if(aJz){adU=34;break $bb1_i10$$bb2_i11$59}else{adU=35;break $bb1_i10$$bb2_i11$59}}}while(0);if(adU==34){var aJw=Qo;var aJt=((aJw+660)&4294967295);var aJq=((aJt)&4294967295);var aJo=Kp;ns(aJq,aJo,8,1,0)}var aJm=azL;var aJa=((aJm)&4294967295);var aI8=((aJa+8)&4294967295);uA[((aI8)>>2)]=0;var aI6=azL;var aI3=((aI6)&4294967295);var aI0=((aI3+12)&4294967295);uA[((aI0)>>2)]=36;var aIX=azL;var aIU=((aIX)&4294967295);var aIR=((aIU+176)&4294967295);var aIP=uA[((aIR)>>2)];var aIN=azL;var aF1=((aIN)&4294967295);var aF0=((aF1+180)&4294967295);uA[((aF0)>>2)]=aIP;var aFZ=azL;var aFY=((aFZ)&4294967295);var aFX=((aFY+24)&4294967295);var aFW=((aFX+20)&4294967295);uA[((aFW)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==36){var aFV=azL;var aFU=((aFV+964)&4294967295);uA[((aFU)>>2)]=1536;var aFT=azL;var aFS=((aFT)&4294967295);var aFP=((aFS+184)&4294967295);uA[((aFP)>>2)]=2884720;var aFO=azL;var aFN=((aFO)&4294967295);var aFM=((aFN+24)&4294967295);var aFL=((aFM+20)&4294967295);uA[((aFL)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==37){var aFK=azL;xf(aFK);var aFJ=azL;E3=aFJ;Iz=42;var aFI=Iz;var aFH=Iz;var aFG=E3;var aFE=((aFG+708)&4294967295);var aFD=((aFE+aFH)&4294967295);var aFC=la[((aFD)>>0)];var aFB=(aFC)&64;var aFA=(aFB)|-127;var aFz=E3;var aFy=((aFz+708)&4294967295);var aFx=((aFy+aFI)&4294967295);la[((aFx)>>0)]=aFA;var aFw=azL;var aFu=((aFw)&4294967295);var aFt=((aFu+24)&4294967295);var aFs=((aFt+20)&4294967295);uA[((aFs)>>2)]=1074;var aFr=azL;var aFq=((aFr)&4294967295);var aFo=((aFq+24)&4294967295);var aFn=((aFo+16)&4294967295);uA[((aFn)>>2)]=23;var aFm=azL;var aFl=((aFm)&4294967295);var aFk=((aFl+24)&4294967295);var aFj=((aFk+40)&4294967295);uA[((aFj)>>2)]=2;var aFh=azL;var aFg=((aFh)&4294967295);var aFf=((aFg+8)&4294967295);uA[((aFf)>>2)]=2;var aFe=azL;var aFd=((aFe)&4294967295);var aFc=((aFd+184)&4294967295);uA[((aFc)>>2)]=184554728;var aFb=azL;var aE9=((aFb)&4294967295);var aE8=((aE9+204)&4294967295);uA[((aE8)>>2)]=32;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==38){var aE7=azL;E2=aE7;anP=((ru)&4294967295);aGq=((hu)&4294967295);var aE4=anP;var aE2=(aE4)!=0;if(aE2){adU=39}else{adU=40}$bb1_i20$$bb2_i21$67:do{if(adU==39){var aE0=E2;var aEY=((aE0+676)&4294967295);var aEW=((aEY)&4294967295);var aEU=anP;var aES=aEW;var aEQ=aEU;ns(aES,aEQ,16,1,0);var azU=aGq;var aEO=(azU)!=0;if(aEO){adU=40;break $bb1_i20$$bb2_i21$67}else{adU=41;break $bb1_i20$$bb2_i21$67}}}while(0);if(adU==40){var aEN=E2;var aEI=((aEN+660)&4294967295);var aEG=((aEI)&4294967295);var aED=aGq;ns(aEG,aED,8,1,0)}var aEB=azL;var aEz=((aEB)&4294967295);var aEw=((aEz+176)&4294967295);var aEt=uA[((aEw)>>2)];var aEq=azL;var aEn=((aEq)&4294967295);var aEl=((aEn+180)&4294967295);uA[((aEl)>>2)]=aEt;var aEa=azL;var aD8=((aEa)&4294967295);var aD6=((aD8+8)&4294967295);uA[((aD6)>>2)]=0;var aD4=azL;var aD2=((aD4)&4294967295);var aDZ=((aD2+12)&4294967295);uA[((aDZ)>>2)]=65540;var aDW=azL;var aDS=((aDW+964)&4294967295);uA[((aDS)>>2)]=2432;var aDP=azL;p3(aDP);var aDN=azL;EQ=aDN;aGy=4;A4=62;aDT=76;var aDC=aGy;var aDA=1<<(aDC);aty=aDA;var aDy=A4;Ec=aDy;var aDw=Ec;var aDu=aDT;var aDr=(((aDw))|0)<=(((aDu))|0);if(aDr){adU=42}else{adU=43}$bb_i25$$_ZL18SetLetterBitsRangeP10Translatoriii_exit$72:do{if(adU==42){while(1){var aDo=Ec;var aDl=Ec;var aDi=EQ;var aDg=((aDi+708)&4294967295);var aC7=((aDg+aDl)&4294967295);var aC5=la[((aC7)>>0)];var aC3=aty;var aC1=(((aC3))&255);var aCZ=(aC1)|(aC5);var aCW=EQ;var aCS=((aCW+708)&4294967295);var aCP=((aCS+aDo)&4294967295);la[((aCP)>>0)]=aCZ;var aCM=Ec;var aCK=(((aCM)+1)&4294967295);Ec=aCK;var ayd=Ec;var ayc=aDT;var ayb=(((ayd))|0)<=(((ayc))|0);if(ayb){adU=42;continue}else{adU=43;break $bb_i25$$_ZL18SetLetterBitsRangeP10Translatoriii_exit$72}}}}while(0);var aya=azL;var ax9=((aya)&4294967295);var ax7=((ax9+184)&4294967295);uA[((ax7)>>2)]=1;var ax6=azL;var ax5=((ax6)&4294967295);var ax4=((ax5+192)&4294967295);uA[((ax4)>>2)]=613567144;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==110){var aIC=(((Bv))|0)==29554;var aIB=azL;if(aIC){adU=111}else{adU=114}$bb32$$bb33$77:do{if(adU==111){aGO=aIB;UW=((mJ)&4294967295);ayS=((fz)&4294967295);var aIA=UW;var aIz=(aIA)!=0;if(aIz){adU=112}else{adU=113}if(adU==112){var aIy=aGO;var aIx=((aIy+676)&4294967295);var aIw=((aIx)&4294967295);var aIu=UW;var aIs=aIw;var aIq=aIu;ns(aIs,aIq,16,1,0);var aAl=ayS;var aIg=(aAl)!=0;if(!(aIg)){adU=117;break $bb32$$bb33$77}}var aIf=aGO;var aIe=((aIf+660)&4294967295);var aId=((aIe)&4294967295);var aIc=ayS;ns(aId,aIc,8,1,0)}else{if(adU==114){aGN=aIB;NV=((pD)&4294967295);arz=((fz)&4294967295);var aIb=NV;var aIa=(aIb)!=0;if(aIa){adU=115}else{adU=116}if(adU==115){var aH8=aGN;var aH6=((aH8+676)&4294967295);var aH4=((aH6)&4294967295);var aHV=NV;var aHU=aH4;var aHT=aHV;ns(aHU,aHT,16,1,0);var avM=arz;var aHR=(avM)!=0;if(!(aHR)){adU=117;break $bb32$$bb33$77}}var aHP=aGN;var aHO=((aHP+660)&4294967295);var aHN=((aHO)&4294967295);var aHL=arz;ns(aHN,aHL,8,1,0)}}}while(0);var aHJ=uA[((((Aa+8)&4294967295))>>2)];var aHH=azL;var aHx=((aHH+696)&4294967295);uA[((aHx)>>2)]=aHJ;var aHw=azL;var aHv=((aHw)&4294967295);var aHt=((aHv+8)&4294967295);uA[((aHt)>>2)]=0;var aHs=azL;var aHr=((aHs)&4294967295);var aHq=((aHr+12)&4294967295);uA[((aHq)>>2)]=16;var aHo=azL;var aHm=((aHo)&4294967295);var aHk=((aHm+24)&4294967295);var aG9=((aHk+16)&4294967295);uA[((aG9)>>2)]=3;var aG8=azL;var aG7=((aG8)&4294967295);var aG6=((aG7+248)&4294967295);la[((aG6)>>0)]=5;var aG5=azL;var aG4=((aG5)&4294967295);var aG3=((aG4+249)&4294967295);la[((aG3)>>0)]=1;var aG1=azL;var aGZ=((aG1)&4294967295);var aGX=((aGZ+220)&4294967295);uA[((aGX)>>2)]=1;var aE6=azL;var aE5=((aE6)&4294967295);var aE3=((aE5+184)&4294967295);uA[((aE3)>>2)]=33572172;var aE1=azL;var aEZ=((aE1)&4294967295);var aEX=((aEZ+188)&4294967295);uA[((aEX)>>2)]=74;var aEV=azL;var aET=((aEV)&4294967295);var aER=((aET+264)&4294967295);uA[((aER)>>2)]=((ck)&4294967295);var aEP=azL;aEM=aEP;aiq=121;var aEL=aiq;var aEJ=aiq;var aEH=aEM;var aEF=((aEH+708)&4294967295);var aEC=((aEF+aEJ)&4294967295);var aEA=la[((aEC)>>0)];var aEy=(aEA)&64;var aEv=(aEy)|-127;var aEs=aEM;var aEp=((aEs+708)&4294967295);var aEe=((aEp+aEL)&4294967295);la[((aEe)>>0)]=aEv;var aEc=azL;aEK=aEc;ahW=114;var aD9=ahW;var aD7=ahW;var aD5=aEK;var aD3=((aD5+708)&4294967295);var aD1=((aD3+aD7)&4294967295);var aDY=la[((aD1)>>0)];var aDV=(aDY)&64;var aDR=(aDV)|-127;var aDF=aEK;var aDD=((aDF+708)&4294967295);var aDB=((aDD+aD9)&4294967295);la[((aDB)>>0)]=aDR;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==85){var TN=azL;aID=TN;W8=((qu)&4294967295);azO=((gE)&4294967295);var TJ=aID;var TF=((TJ+676)&4294967295);var Tu=((TF)&4294967295);var Tt=W8;var Tr=Tu;var Tp=Tt;ns(Tr,Tp,16,1,0);var aBA=azO;var Tn=(aBA)!=0;if(Tn){adU=86}else{adU=87}if(adU==86){var Tl=aID;var Tj=((Tl+660)&4294967295);var Tg=((Tj)&4294967295);var Tc=azO;ns(Tg,Tc,8,1,0)}var S9=azL;var SZ=((S9)&4294967295);var SY=((SZ+176)&4294967295);var SW=uA[((SY)>>2)];var SU=azL;var SS=((SU)&4294967295);var SQ=((SS+180)&4294967295);uA[((SQ)>>2)]=SW;var SN=azL;var SK=((SN)&4294967295);var SG=((SK+8)&4294967295);uA[((SG)>>2)]=2;var SD=azL;var Sr=((SD)&4294967295);var Sq=((Sr+12)&4294967295);uA[((Sq)>>2)]=534;var Sp=azL;var So=((Sp)&4294967295);var Sn=((So+16)&4294967295);uA[((Sn)>>2)]=0;var Sm=azL;var Sl=((Sm)&4294967295);var Si=((Sl+20)&4294967295);uA[((Si)>>2)]=2;var Sg=azL;var Se=((Sg)&4294967295);var R3=((Se+24)&4294967295);var R2=((R3+28)&4294967295);uA[((R2)>>2)]=120;var R1=azL;var R0=((R1)&4294967295);var RZ=((R0+184)&4294967295);uA[((RZ)>>2)]=85984552;var RY=azL;var RW=((RY)&4294967295);var RU=((RW+188)&4294967295);uA[((RU)>>2)]=4096;var RS=axo;var RQ=(((RS))|0)==25441;if(RQ){adU=88}else{adU=89}if(adU==88){var RI=azL;var RH=((RI+704)&4294967295);uA[((RH)>>2)]=((kK)&4294967295);var RG=azL;var RF=((RG)&4294967295);var RE=((RF+12)&4294967295);uA[((RE)>>2)]=566;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==89){var RD=axo;var RC=(((RD))|0)==7364976;var RA=azL;var Ry=((RA)&4294967295);if(RC){adU=90}else{adU=91}if(adU==90){var Rw=((Ry+12)&4294967295);uA[((Rw)>>2)]=310;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==91){var Rn=((Ry+24)&4294967295);var Rm=((Rn+20)&4294967295);uA[((Rm)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}}}}}else{if(adU==218){var avt=azL;Z6=avt;ayM=((mQ)&4294967295);JG=((bC)&4294967295);var avp=Z6;var avm=((avp+676)&4294967295);var avk=((avm)&4294967295);var avj=ayM;var avi=avk;var avh=avj;ns(avi,avh,16,1,0);var NY=JG;var avg=(NY)!=0;if(avg){adU=219}else{adU=220}if(adU==219){var au2=Z6;var auZ=((au2+660)&4294967295);var auW=((auZ)&4294967295);var auT=JG;ns(auW,auT,8,1,0)}var auQ=uA[((((Aa+8)&4294967295))>>2)];var auO=azL;var auN=((auO+696)&4294967295);uA[((auN)>>2)]=auQ;var auM=azL;var auL=((auM)&4294967295);var auK=((auL+8)&4294967295);uA[((auK)>>2)]=0;var auz=azL;var aux=((auz)&4294967295);var auv=((aux+12)&4294967295);uA[((auv)>>2)]=22;var aut=azL;var aur=((aut)&4294967295);var auq=((aur+24)&4294967295);var aup=((auq+16)&4294967295);uA[((aup)>>2)]=3;var auo=azL;var aun=((auo)&4294967295);var aum=((aun+248)&4294967295);la[((aum)>>0)]=5;var aud=azL;var aub=((aud)&4294967295);var at9=((aub+249)&4294967295);la[((at9)>>0)]=1;var at7=azL;var at5=((at7)&4294967295);var at4=((at5+24)&4294967295);var at3=((at4+44)&4294967295);uA[((at3)>>2)]=4;var at2=azL;var at1=((at2)&4294967295);var at0=((at1+184)&4294967295);uA[((at0)>>2)]=16794624;var atP=azL;var atN=((atP)&4294967295);var atL=((atN+188)&4294967295);uA[((atL)>>2)]=256;var atJ=azL;var atH=((atJ)&4294967295);var atG=((atH+204)&4294967295);uA[((atG)>>2)]=0;var atF=azL;var atE=((atF)&4294967295);var atD=((atE+208)&4294967295);uA[((atD)>>2)]=44;var atC=axo;var ats=(((atC))|0)==25459;if(ats){adU=221}else{adU=222}if(adU==221){var atq=azL;var ato=((atq)&4294967295);var atm=((ato+188)&4294967295);uA[((atm)>>2)]=264}var atk=azL;Z4=atk;Br=121;var atj=Br;var ati=Br;var ath=Z4;var atg=((ath+708)&4294967295);var atf=((atg+ati)&4294967295);var ar5=la[((atf)>>0)];var ar3=(ar5)&64;var ar1=(ar3)|-127;var arZ=Z4;var arX=((arZ+708)&4294967295);var arW=((arX+atj)&4294967295);la[((arW)>>0)]=ar1;var arV=azL;Zz=arV;Bq=114;var arU=Bq;var arS=Bq;var arQ=Zz;var arL=((arQ+708)&4294967295);var arK=((arL+arS)&4294967295);var arJ=la[((arK)>>0)];var arI=(arJ)&64;var arH=(arI)|-127;var arG=Zz;var arF=((arG+708)&4294967295);var arE=((arF+arU)&4294967295);la[((arE)>>0)]=arH;var arD=azL;Zy=arD;aAi=32;var arC=aAi;var Z7=(arC)^-1;UV=Z7;Ss=0;$bb_i518$104:while(1){var amp=Ss;var amm=Ss;var amj=Zy;var amg=((amj+708)&4294967295);var amd=((amg+amm)&4294967295);var amb=la[((amd)>>0)];var al9=UV;var al8=(((al9))&255);var al6=(al8)&(amb);var al5=Zy;var alP=((al5+708)&4294967295);var alM=((alP+amp)&4294967295);la[((alM)>>0)]=al6;var alJ=Ss;var alG=(((alJ)+1)&4294967295);Ss=alG;var alC=(((alG))>>>0)<=255;if(alC){adU=223;continue $bb_i518$104}else{adU=224;break $bb_i518$104}}var alA=azL;Y1=alA;Qt=5;aAm=((yO)&4294967295);var aly=Qt;var alx=1<<(aly);ait=alx;var alw=aAm;var alv=la[((alw)>>0)];aFa=alv;var alg=aFa;var ald=iB((alg),8,0)!=0;var ala=oD((ald),1,0);aGp=ala;var ak7=aAm;var ak4=((ak7+1)&4294967295);aAm=ak4;if(!(ald)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}while(1){var ak2=aFa;var akZ=oD((ak2),8,0);var akY=aFa;var akX=oD((akY),8,0);var akW=Y1;var akG=((akW+708)&4294967295);var akD=((akG+akX)&4294967295);var akA=la[((akD)>>0)];var akx=ait;var aku=(((akx))&255);var aks=(aku)|(akA);var akp=Y1;var ako=((akp+708)&4294967295);var akn=((ako+akZ)&4294967295);la[((akn)>>0)]=aks;var akm=aAm;var akd=la[((akm)>>0)];aFa=akd;var akb=aFa;var aj9=iB((akb),8,0)!=0;var aj7=oD((aj9),1,0);aGp=aj7;var aj5=aAm;var aj4=((aj5+1)&4294967295);aAm=aj4;var amq=iB((aj7),8,0)!=0;if(amq){adU=225;continue}else{adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}}}else{if(adU==44){var ax2=azL;EP=ax2;anz=((q4)&4294967295);aGo=((g5)&4294967295);var ax0=anz;var axZ=(ax0)!=0;if(axZ){adU=45}else{adU=46}$bb1_i31$$bb2_i32$110:do{if(adU==45){var axY=EP;var axX=((axY+676)&4294967295);var axW=((axX)&4294967295);var axV=anz;var axU=axW;var axT=axV;ns(axU,axT,16,1,0);var azG=aGo;var axS=(azG)!=0;if(axS){adU=46;break $bb1_i31$$bb2_i32$110}else{adU=47;break $bb1_i31$$bb2_i32$110}}}while(0);if(adU==46){var axR=EP;var axP=((axR+660)&4294967295);var axO=((axP)&4294967295);var axN=aGo;ns(axO,axN,8,1,0)}var axM=uA[((((Aa+56)&4294967295))>>2)];var axL=azL;var axK=((axL+696)&4294967295);uA[((axK)>>2)]=axM;var axJ=azL;var axH=((axJ)&4294967295);var axG=((axH+8)&4294967295);uA[((axG)>>2)]=2;var axF=azL;var axD=((axF)&4294967295);var axC=((axD+12)&4294967295);uA[((axC)>>2)]=22;var axB=azL;var axA=((axB)&4294967295);var axz=((axA+16)&4294967295);uA[((axz)>>2)]=0;var axx=azL;var axw=((axx)&4294967295);var axv=((axw+20)&4294967295);uA[((axv)>>2)]=2;var axu=azL;var axt=((axu)&4294967295);var axn=((axt+24)&4294967295);var axm=((axn+28)&4294967295);uA[((axm)>>2)]=120;var axl=azL;var axj=((axl)&4294967295);var axi=((axj+184)&4294967295);uA[((axi)>>2)]=1024;var axh=azL;EC=axh;Hz=119;var axg=Hz;var axf=Hz;var axe=EC;var axd=((axe+708)&4294967295);var aw9=((axd+axf)&4294967295);var aw6=la[((aw9)>>0)];var aw4=(aw6)&64;var aw2=(aw4)|-127;var aw0=EC;var awY=((aw0+708)&4294967295);var awW=((awY+axg)&4294967295);la[((awW)>>0)]=aw2;var awU=azL;EA=awU;Hx=121;var awS=Hx;var awR=Hx;var awM=EA;var awK=((awM+708)&4294967295);var awI=((awK+awR)&4294967295);var awG=la[((awI)>>0)];var awE=(awG)&64;var awB=(awE)|-127;var awy=EA;var awv=((awy+708)&4294967295);var aws=((awv+awS)&4294967295);la[((aws)>>0)]=awB;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==48){var awq=azL;Ez=awq;anm=((q1)&4294967295);aGk=0;var awg=anm;var awe=(awg)!=0;if(awe){adU=49}else{adU=51}$bb1_i43$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit45$116:do{if(adU==49){var awc=Ez;var awa=((awc+676)&4294967295);var av8=((awa)&4294967295);var av5=anm;var av2=av8;var avZ=av5;ns(av2,avZ,16,1,0);var azk=aGk;var avV=(azk)!=0;if(!(avV)){adU=51;break $bb1_i43$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit45$116}var avT=Ez;var avI=((avT+660)&4294967295);var avG=((avI)&4294967295);var avE=aGk;ns(avG,avE,8,1,0)}}while(0);var avC=azL;var avA=((avC)&4294967295);var avx=((avA+8)&4294967295);uA[((avx)>>2)]=0;var avu=azL;var avq=((avu)&4294967295);var avn=((avq+24)&4294967295);var avl=((avn+12)&4294967295);uA[((avl)>>2)]=1;var avb=azL;Eo=avb;Hb=121;var au9=Hb;var au7=Hb;var au5=Eo;var au3=((au5+708)&4294967295);var au0=((au3+au7)&4294967295);var auX=la[((au0)>>0)];var auU=(auX)&64;var auR=(auU)|-127;var auP=Eo;var an0=((auP+708)&4294967295);var anZ=((an0+au9)&4294967295);la[((anZ)>>0)]=auR;var anY=azL;var anX=((anY)&4294967295);var anW=((anX+184)&4294967295);uA[((anW)>>2)]=184618072;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==52){var anV=azL;En=anV;am9=((qV)&4294967295);aGg=((gY)&4294967295);var anU=am9;var anS=(anU)!=0;if(anS){adU=53}else{adU=54}$bb1_i53$$bb2_i54$121:do{if(adU==53){var anR=En;var anQ=((anR+676)&4294967295);var anN=((anQ)&4294967295);var anM=am9;var anL=anN;var anK=anM;ns(anL,anK,16,1,0);var ay7=aGg;var anI=(ay7)!=0;if(anI){adU=54;break $bb1_i53$$bb2_i54$121}else{adU=55;break $bb1_i53$$bb2_i54$121}}}while(0);if(adU==54){var anG=En;var anE=((anG+660)&4294967295);var anD=((anE)&4294967295);var anB=aGg;ns(anD,anB,8,1,0)}var anA=azL;var any=((anA)&4294967295);var anx=((any+8)&4294967295);uA[((anx)>>2)]=0;var anw=azL;var anv=((anw)&4294967295);var anu=((anv)&4294967295);uA[((anu)>>2)]=8;var ant=azL;var ans=((ant)&4294967295);var anq=((ans+4)&4294967295);uA[((anq)>>2)]=48;var anp=azL;var ano=((anp)&4294967295);var anl=((ano+24)&4294967295);var ank=((anl+12)&4294967295);uA[((ank)>>2)]=1;var anj=azL;var ani=((anj)&4294967295);var anh=((ani+24)&4294967295);var ang=((anh+16)&4294967295);uA[((ang)>>2)]=16;var ane=azL;var and=((ane)&4294967295);var anc=((and+24)&4294967295);var anb=((anc+72)&4294967295);uA[((anb)>>2)]=87;var am8=azL;var am7=((am8)&4294967295);var am6=((am7+184)&4294967295);uA[((am6)>>2)]=16846872;var am5=azL;Eb=am5;GO=121;var am4=GO;var am2=GO;var am1=Eb;var am0=((am1+708)&4294967295);var amZ=((am0+am2)&4294967295);var amY=la[((amZ)>>0)];var amU=(amY)&64;var amS=(amU)|-127;var amQ=Eb;var amO=((amQ+708)&4294967295);var amM=((amO+am4)&4294967295);la[((amM)>>0)]=amS;var amK=azL;var amI=((amK)&4294967295);var amG=((amI+24)&4294967295);var amE=((amG+20)&4294967295);uA[((amE)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==56){var amD=azL;Ea=amD;amX=((mB)&4294967295);aGe=((bs)&4294967295);var amy=amX;var amw=(amy)!=0;if(amw){adU=57}else{adU=58}$bb1_i63$$bb2_i64$127:do{if(adU==57){var amu=Ea;var ams=((amu+676)&4294967295);var amn=((ams)&4294967295);var amk=amX;var amh=amn;var ame=amk;ns(amh,ame,16,1,0);var ayV=aGe;var amc=(ayV)!=0;if(amc){adU=58;break $bb1_i63$$bb2_i64$127}else{adU=59;break $bb1_i63$$bb2_i64$127}}}while(0);if(adU==58){var ama=Ea;var alW=((ama+660)&4294967295);var alU=((alW)&4294967295);var alS=aGe;ns(alU,alS,8,1,0)}var alQ=azL;var alN=((alQ)&4294967295);var alK=((alN+24)&4294967295);var alH=((alK+20)&4294967295);uA[((alH)>>2)]=1;var alD=azL;var alB=((alD)&4294967295);var alz=((alB+176)&4294967295);var aln=uA[((alz)>>2)];var all=azL;var alj=((all)&4294967295);var alh=((alj+180)&4294967295);uA[((alh)>>2)]=aln;var ale=azL;var alb=((ale+964)&4294967295);uA[((alb)>>2)]=1920;var ak8=azL;var ak5=((ak8)&4294967295);var ak3=((ak5+8)&4294967295);uA[((ak3)>>2)]=0;var ak1=azL;var akN=((ak1)&4294967295);var akL=((akN+12)&4294967295);uA[((akL)>>2)]=65540;var akJ=azL;DY=akJ;ae4=1;Xe=38;arN=48;var akH=ae4;var akE=1<<(akH);arB=akE;var akB=Xe;Dc=akB;var aky=Dc;var akv=arN;var akt=(((aky))|0)<=(((akv))|0);if(akt){adU=60}else{adU=61}$bb_i72$$_ZL18SetLetterBitsRangeP10Translatoriii_exit73$132:do{if(adU==60){while(1){var akq=Dc;var abk=Dc;var abj=DY;var abi=((abj+708)&4294967295);var abh=((abi+abk)&4294967295);var abg=la[((abh)>>0)];var abf=arB;var abe=(((abf))&255);var abd=(abe)|(abg);var abc=DY;var abb=((abc+708)&4294967295);var aba=((abb+akq)&4294967295);la[((aba)>>0)]=abd;var aa9=Dc;var aa8=(((aa9)+1)&4294967295);Dc=aa8;var aa7=Dc;var aa6=arN;var aa5=(((aa7))|0)<=(((aa6))|0);if(aa5){adU=60;continue}else{adU=61;break $bb_i72$$_ZL18SetLetterBitsRangeP10Translatoriii_exit73$132}}}}while(0);var aa4=azL;var aa3=((aa4)&4294967295);var aa2=((aa3+192)&4294967295);uA[((aa2)>>2)]=5288;var aa1=azL;var aa0=((aa1)&4294967295);var aaZ=((aa0+184)&4294967295);uA[((aaZ)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==67){var YJ=azL;Dz=YJ;alu=((qA)&4294967295);aF7=((gG)&4294967295);var YG=Dz;var YD=((YG+676)&4294967295);var YB=((YD)&4294967295);var Yr=alu;var Yp=YB;var Ym=Yr;ns(Yp,Ym,16,1,0);var ayu=aF7;var Yk=(ayu)!=0;if(Yk){adU=68}else{adU=69}if(adU==68){var Yi=Dz;var Yf=((Yi+660)&4294967295);var Yc=((Yf)&4294967295);var X9=aF7;ns(Yc,X9,8,1,0)}var X6=uA[((((Aa+28)&4294967295))>>2)];var X4=azL;var Qk=((X4+696)&4294967295);uA[((Qk)>>2)]=X6;var Qj=azL;var Qi=((Qj+700)&4294967295);uA[((Qi)>>2)]=((kv)&4294967295);var Qh=azL;var Qg=((Qh+964)&4294967295);uA[((Qg)>>2)]=896;var Qf=azL;var Qe=((Qf+708)&4294967295);var Qd=((Qe)&4294967295);ud(Qd,0,256,1,0);var Qb=azL;Do=Qb;adn=0;GQ=((ev)&4294967295);var Qa=adn;var P7=1<<(Qa);ary=P7;var P6=GQ;var P5=la[((P6)>>0)];aGB=P5;var P4=iB((P5),8,0)!=0;var P3=oD((P4),1,0);aGn=P3;var P2=GQ;var P0=((P2+1)&4294967295);GQ=P0;if(P4){adU=70}else{adU=71}$bb_i101$$_ZL13SetLetterBitsP10TranslatoriPKc_exit102$140:do{if(adU==70){while(1){var PZ=aGB;var PY=oD((PZ),8,0);var PX=aGB;var PV=oD((PX),8,0);var PU=Do;var PT=((PU+708)&4294967295);var PS=((PT+PV)&4294967295);var PQ=la[((PS)>>0)];var PP=ary;var PO=(((PP))&255);var PN=(PO)|(PQ);var PM=Do;var PL=((PM+708)&4294967295);var PJ=((PL+PY)&4294967295);la[((PJ)>>0)]=PN;var PI=GQ;var PH=la[((PI)>>0)];aGB=PH;var PG=aGB;var PF=iB((PG),8,0)!=0;var PE=oD((PF),1,0);aGn=PE;var PD=GQ;var PC=((PD+1)&4294967295);GQ=PC;var Kh=iB((PE),8,0)!=0;if(Kh){adU=70;continue}else{adU=71;break $bb_i101$$_ZL13SetLetterBitsP10TranslatoriPKc_exit102$140}}}}while(0);var PB=azL;i=PB;aGf=7;abV=((ev)&4294967295);var PA=aGf;var Pw=1<<(PA);GJ=Pw;var Pv=abV;var Pu=la[((Pv)>>0)];ahX=Pu;var Pt=iB((Pu),8,0)!=0;var Ps=oD((Pt),1,0);anC=Ps;var Pr=abV;var Pq=((Pr+1)&4294967295);abV=Pq;if(Pt){adU=72}else{adU=73}$bb_i110$$_ZL13SetLetterBitsP10TranslatoriPKc_exit111$144:do{if(adU==72){while(1){var Pp=ahX;var Po=oD((Pp),8,0);var Pm=ahX;var Pj=oD((Pm),8,0);var Ph=i;var Pf=((Ph+708)&4294967295);var Pd=((Pf+Pj)&4294967295);var Pb=la[((Pd)>>0)];var O9=GJ;var O7=(((O9))&255);var O5=(O7)|(Pb);var O3=i;var O2=((O3+708)&4294967295);var OX=((O2+Po)&4294967295);la[((OX)>>0)]=O5;var OU=abV;var OS=la[((OU)>>0)];ahX=OS;var OQ=ahX;var OO=iB((OQ),8,0)!=0;var OL=oD((OO),1,0);anC=OL;var OH=abV;var OE=((OH+1)&4294967295);abV=OE;var J8=iB((OL),8,0)!=0;if(J8){adU=72;continue}else{adU=73;break $bb_i110$$_ZL13SetLetterBitsP10TranslatoriPKc_exit111$144}}}}while(0);var OB=azL;aKj=OB;aGc=1;abA=((vd)&4294967295);var Oz=aGc;var Or=1<<(Oz);Gp=Or;var Op=abA;var On=la[((Op)>>0)];ahB=On;var Ol=iB((On),8,0)!=0;var Oj=oD((Ol),1,0);anr=Oj;var Of=abA;var Oc=((Of+1)&4294967295);abA=Oc;if(Ol){adU=74}else{adU=75}$bb_i119$$_ZL13SetLetterBitsP10TranslatoriPKc_exit120$148:do{if(adU==74){while(1){var N9=ahB;var N6=oD((N9),8,0);var N4=ahB;var NS=oD((N4),8,0);var NQ=aKj;var NO=((NQ+708)&4294967295);var NM=((NO+NS)&4294967295);var NK=la[((NM)>>0)];var NH=Gp;var NE=(((NH))&255);var NB=(NE)|(NK);var Ny=aKj;var Nw=((Ny+708)&4294967295);var Nm=((Nw+N6)&4294967295);la[((Nm)>>0)]=NB;var Nj=abA;var Nh=la[((Nj)>>0)];ahB=Nh;var Nf=ahB;var Nd=iB((Nf),8,0)!=0;var Na=oD((Nd),1,0);anr=Na;var M7=abA;var M4=((M7+1)&4294967295);abA=M4;var JM=iB((Na),8,0)!=0;if(JM){adU=74;continue}else{adU=75;break $bb_i119$$_ZL13SetLetterBitsP10TranslatoriPKc_exit120$148}}}}while(0);var M1=azL;aJN=M1;aF9=2;abp=((v3)&4294967295);var MZ=aF9;var ahi=1<<(MZ);F3=ahi;var ahh=abp;var ahg=la[((ahh)>>0)];aho=ahg;var ahe=iB((ahg),8,0)!=0;var ahc=oD((ahe),1,0);anf=ahc;var aha=abp;var ag8=((aha+1)&4294967295);abp=ag8;if(ahe){adU=76}else{adU=77}$bb_i128$$_ZL13SetLetterBitsP10TranslatoriPKc_exit129$152:do{if(adU==76){while(1){var ag6=aho;var ag3=oD((ag6),8,0);var ag1=aho;var agV=oD((ag1),8,0);var agU=aJN;var agT=((agU+708)&4294967295);var agR=((agT+agV)&4294967295);var agP=la[((agR)>>0)];var agN=F3;var agL=(((agN))&255);var agI=(agL)|(agP);var agE=aJN;var agB=((agE+708)&4294967295);var agp=((agB+ag3)&4294967295);la[((agp)>>0)]=agI;var ago=abp;var agn=la[((ago)>>0)];aho=agn;var agl=aho;var agj=iB((agl),8,0)!=0;var agh=oD((agj),1,0);anf=agh;var agf=abp;var agc=((agf+1)&4294967295);abp=agc;var Js=iB((agh),8,0)!=0;if(Js){adU=76;continue}else{adU=77;break $bb_i128$$_ZL13SetLetterBitsP10TranslatoriPKc_exit129$152}}}}while(0);var af8=azL;aJg=af8;aF6=6;abl=((pr)&4294967295);var af5=aF6;var afK=1<<(af5);FA=afK;var afJ=abl;var afI=la[((afJ)>>0)];ag0=afI;var afG=iB((afI),8,0)!=0;var afE=oD((afG),1,0);am3=afE;var afC=abl;var afA=((afC+1)&4294967295);abl=afA;if(afG){adU=78}else{adU=79}$bb_i137$$_ZL13SetLetterBitsP10TranslatoriPKc_exit138$156:do{if(adU==78){while(1){var afx=ag0;var afu=oD((afx),8,0);var afr=ag0;var ae6=oD((afr),8,0);var ae5=aJg;var ae3=((ae5+708)&4294967295);var ae1=((ae3+ae6)&4294967295);var aeZ=la[((ae1)>>0)];var aeX=FA;var aeV=(((aeX))&255);var aeS=(aeV)|(aeZ);var aeP=aJg;var aeM=((aeP+708)&4294967295);var aeq=((aeM+afu)&4294967295);la[((aeq)>>0)]=aeS;var aep=abl;var aeo=la[((aep)>>0)];ag0=aeo;var aen=ag0;var aem=iB((aen),8,0)!=0;var ael=oD((aem),1,0);am3=ael;var aek=abl;var aei=((aek+1)&4294967295);abl=aei;var IY=iB((ael),8,0)!=0;if(IY){adU=78;continue}else{adU=79;break $bb_i137$$_ZL13SetLetterBitsP10TranslatoriPKc_exit138$156}}}}while(0);var aeg=azL;var aee=((aeg)&4294967295);var adS=((aee+176)&4294967295);var adR=uA[((adS)>>2)];var adQ=azL;var adP=((adQ)&4294967295);var adO=((adP+180)&4294967295);uA[((adO)>>2)]=adR;var adN=azL;var adM=((adN)&4294967295);var adK=((adM+8)&4294967295);uA[((adK)>>2)]=2;var adI=azL;var adG=((adI)&4294967295);var adm=((adG+12)&4294967295);uA[((adm)>>2)]=6;var adl=azL;var adk=((adl)&4294967295);var adj=((adk+16)&4294967295);uA[((adj)>>2)]=0;var adi=azL;var adh=((adi)&4294967295);var adg=((adh+20)&4294967295);uA[((adg)>>2)]=2;var ade=azL;var adc=((ade)&4294967295);var ac9=((adc+24)&4294967295);var acR=((ac9+28)&4294967295);uA[((acR)>>2)]=130;var acQ=azL;var acP=((acQ)&4294967295);var acO=((acP+184)&4294967295);uA[((acO)>>2)]=264;var acN=azL;var acM=((acN)&4294967295);var acL=((acM+188)&4294967295);uA[((acL)>>2)]=4098;var acJ=axo;var acH=(((acJ))|0)==6779491;if(!(acH)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}var acF=azL;var acl=((acF)&4294967295);var ack=((acl+24)&4294967295);var acj=((ack+20)&4294967295);uA[((acj)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==62){var aaY=azL;DM=aaY;al7=((qy)&4294967295);aGa=0;var aaX=al7;var aaW=(aaX)!=0;if(aaW){adU=63}else{adU=65}$bb1_i79$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit81$162:do{if(adU==63){var aaV=DM;var aaU=((aaV+676)&4294967295);var aaT=((aaU)&4294967295);var aaR=al7;var aaQ=aaT;var aaP=aaR;ns(aaQ,aaP,16,1,0);var ayG=aGa;var aaO=(ayG)!=0;if(!(aaO)){adU=65;break $bb1_i79$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit81$162}var aaN=DM;var aaM=((aaN+660)&4294967295);var aaL=((aaM)&4294967295);var aaK=aGa;ns(aaL,aaK,8,1,0)}}while(0);var aaJ=azL;var aaI=((aaJ)&4294967295);var aaH=((aaI+8)&4294967295);uA[((aaH)>>2)]=0;var aaG=azL;var aaE=((aaG)&4294967295);var aaD=((aaE+12)&4294967295);uA[((aaD)>>2)]=8;var aaC=azL;var aaB=((aaC)&4294967295);var aaA=((aaB+184)&4294967295);uA[((aaA)>>2)]=16779328;var aaz=azL;var aax=((aaz)&4294967295);var aaw=((aax+24)&4294967295);var aav=((aaw+44)&4294967295);uA[((aav)>>2)]=2;var aau=azL;var aar=((aau)&4294967295);var aap=((aar+276)&4294967295);uA[((aap)>>2)]=101;var aan=azL;var aal=((aan)&4294967295);var aaj=((aal+24)&4294967295);var aag=((aaj+20)&4294967295);uA[((aag)>>2)]=2;var aae=azL;DB=aae;adV=6;aGP=((lL)&4294967295);var aac=adV;var aaa=1<<(aac);arA=aaa;var Z9=aGP;var Z2=la[((Z9)>>0)];acp=Z2;var Z0=iB((Z2),8,0)!=0;var ZY=oD((Z0),1,0);Bt=ZY;var ZW=aGP;var ZT=((ZW+1)&4294967295);aGP=ZT;if(!(Z0)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}while(1){var ZQ=acp;var ZN=oD((ZQ),8,0);var ZK=acp;var ZH=oD((ZK),8,0);var ZF=DB;var Zu=((ZF+708)&4294967295);var Zs=((Zu+ZH)&4294967295);var Zq=la[((Zs)>>0)];var Zo=arA;var Zm=(((Zo))&255);var Zj=(Zm)|(Zq);var Zg=DB;var Zd=((Zg+708)&4294967295);var Za=((Zd+ZN)&4294967295);la[((Za)>>0)]=Zj;var Y8=aGP;var YX=la[((Y8)>>0)];acp=YX;var YV=acp;var YT=iB((YV),8,0)!=0;var YR=oD((YT),1,0);Bt=YR;var YP=aGP;var YM=((YP+1)&4294967295);aGP=YM;var P8=iB((YR),8,0)!=0;if(P8){adU=66;continue}else{adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}}}else{if(adU==81){var aci=azL;aJc=aci;Xc=((qx)&4294967295);azT=((gF)&4294967295);var ach=Xc;var acg=(ach)!=0;if(acg){adU=82}else{adU=83}$bb1_i144$$bb2_i145$169:do{if(adU==82){var acf=aJc;var acd=((acf+676)&4294967295);var acb=((acd)&4294967295);var ab8=Xc;var UT=acb;var US=ab8;ns(UT,US,16,1,0);var aBV=azT;var UQ=(aBV)!=0;if(UQ){adU=83;break $bb1_i144$$bb2_i145$169}else{adU=84;break $bb1_i144$$bb2_i145$169}}}while(0);if(adU==83){var UO=aJc;var UM=((UO+660)&4294967295);var UK=((UM)&4294967295);var UI=azT;ns(UK,UI,8,1,0)}var UG=uA[((((Aa+12)&4294967295))>>2)];var UE=azL;var UC=((UE+696)&4294967295);uA[((UC)>>2)]=UG;var Ux=azL;var Uw=((Ux+700)&4294967295);uA[((Uw)>>2)]=((cB)&4294967295);var Uu=azL;var Us=((Uu)&4294967295);var Uq=((Us+4)&4294967295);uA[((Uq)>>2)]=2;var Uo=azL;var Um=((Uo)&4294967295);var Uj=((Um+8)&4294967295);uA[((Uj)>>2)]=2;var Ug=azL;var Ud=((Ug)&4294967295);var T1=((Ud+12)&4294967295);uA[((T1)>>2)]=22;var T0=azL;var TY=((T0)&4294967295);var TW=((TY+20)&4294967295);uA[((TW)>>2)]=2;var TU=azL;var TS=((TU)&4294967295);var TQ=((TS+184)&4294967295);uA[((TQ)>>2)]=16782344;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==97){var JD=uA[((((Aa+16)&4294967295))>>2)];var JB=azL;var Jz=((JB+696)&4294967295);uA[((Jz)>>2)]=JD;adU=98;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==92){var Rl=azL;aIi=Rl;WC=((qr)&4294967295);azD=((gB)&4294967295);var Rk=WC;var Rj=(Rk)!=0;if(Rj){adU=93}else{adU=94}$bb1_i160$$bb2_i161$176:do{if(adU==93){var Ri=aIi;var Rh=((Ri+676)&4294967295);var Rf=((Rh)&4294967295);var Rd=WC;var Rb=Rf;var Q0=Rd;ns(Rb,Q0,16,1,0);var aBs=azD;var QZ=(aBs)!=0;if(QZ){adU=94;break $bb1_i160$$bb2_i161$176}else{adU=95;break $bb1_i160$$bb2_i161$176}}}while(0);if(adU==94){var QY=aIi;var QX=((QY+660)&4294967295);var QW=((QX)&4294967295);var QV=azD;ns(QW,QV,8,1,0)}var QU=azL;var QS=((QU)&4294967295);var QQ=((QS+8)&4294967295);uA[((QQ)>>2)]=1;var QO=azL;var J1=((QO)&4294967295);var J0=((J1+184)&4294967295);uA[((J0)>>2)]=1049960;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==96){var JY=azL;var JW=((JY+964)&4294967295);uA[((JW)>>2)]=1536;var JU=azL;var JS=((JU)&4294967295);var JP=((JS+184)&4294967295);uA[((JP)>>2)]=96;var JN=azL;var JK=((JN)&4294967295);var JI=((JK+24)&4294967295);var JE=((JI+20)&4294967295);uA[((JE)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==101){var Hc=azL;aHy=Hc;Vx=((qe)&4294967295);azg=((gi)&4294967295);var Ha=Vx;var G9=(Ha)!=0;if(G9){adU=102}else{adU=103}$bb1_i178$$bb2_i179$183:do{if(adU==102){var G8=aHy;var G7=((G8+676)&4294967295);var G6=((G7)&4294967295);var G4=Vx;var G2=G6;var G0=G4;ns(G2,G0,16,1,0);var aAD=azg;var GY=(aAD)!=0;if(GY){adU=103;break $bb1_i178$$bb2_i179$183}else{adU=104;break $bb1_i178$$bb2_i179$183}}}while(0);if(adU==103){var GP=aHy;var GN=((GP+660)&4294967295);var GM=((GN)&4294967295);var GL=azg;ns(GM,GL,8,1,0)}var GK=azL;var GI=((GK)&4294967295);var GH=((GI+8)&4294967295);uA[((GH)>>2)]=3;var GF=azL;var GD=((GF)&4294967295);var GB=((GD+12)&4294967295);uA[((GB)>>2)]=36;var Gt=azL;var Gs=((Gt)&4294967295);var Gr=((Gs+24)&4294967295);var Gq=((Gr+8)&4294967295);uA[((Gq)>>2)]=1;var Go=azL;var Gn=((Go)&4294967295);var Gm=((Gn+176)&4294967295);var Gk=uA[((Gm)>>2)];var Gi=azL;var Gf=((Gi)&4294967295);var F6=((Gf+180)&4294967295);uA[((F6)>>2)]=Gk;var F5=azL;var F4=((F5)&4294967295);var F2=((F4+220)&4294967295);uA[((F2)>>2)]=2;var F1=azL;var F0=((F1)&4294967295);var FZ=((F0+184)&4294967295);uA[((FZ)>>2)]=118658312;var FX=azL;aHb=FX;aql=121;var FV=aql;var FT=aql;var A1=aHb;var A0=((A1+708)&4294967295);var AZ=((A0+FT)&4294967295);var AX=la[((AZ)>>0)];var AV=(AX)&64;var AT=(AV)|-127;var AR=aHb;var AP=((AR+708)&4294967295);var AN=((AP+FV)&4294967295);la[((AN)>>0)]=AT;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==105){var AL=azL;aHa=AL;U7=((pG)&4294967295);ay4=((fJ)&4294967295);var e=aHa;var aKN=((e+676)&4294967295);var aKL=((aKN)&4294967295);var aKJ=U7;var aKH=aKL;var aKF=aKJ;ns(aKH,aKF,16,1,0);var aAn=ay4;var aKD=(aAn)!=0;if(aKD){adU=106}else{adU=107}if(adU==106){var aKA=aHa;var aKx=((aKA+660)&4294967295);var aKu=((aKx)&4294967295);var aKi=ay4;ns(aKu,aKi,8,1,0)}var aKh=uA[((((Aa+76)&4294967295))>>2)];var aKg=azL;var aKe=((aKg+696)&4294967295);uA[((aKe)>>2)]=aKh;var aKc=azL;var aKa=((aKc)&4294967295);var aJ8=((aKa+176)&4294967295);var aJ5=uA[((aJ8)>>2)];var aJ1=azL;var aJY=((aJ1)&4294967295);var aJM=((aJY+180)&4294967295);uA[((aJM)>>2)]=aJ5;var aJK=azL;var aJJ=((aJK)&4294967295);var aJH=((aJJ+8)&4294967295);uA[((aJH)>>2)]=6;var aJF=azL;var aJD=((aJF)&4294967295);var aJB=((aJD+12)&4294967295);uA[((aJB)>>2)]=65540;var aJx=azL;var aJu=((aJx)&4294967295);var aJr=((aJu+184)&4294967295);uA[((aJr)>>2)]=16;var aJe=azL;var aJd=((aJe)&4294967295);var aJb=((aJd+192)&4294967295);uA[((aJb)>>2)]=84648;var aI9=azL;var aI7=((aI9+964)&4294967295);uA[((aI7)>>2)]=2304;var aI5=axo;var aI1=(((aI5))|0)==28769;if(aI1){adU=108}else{adU=109}if(adU==108){var aIY=azL;var aIV=((aIY+964)&4294967295);uA[((aIV)>>2)]=2560}var aIS=azL;p3(aIS);adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==118){var aDz=azL;var aDx=((aDz)&4294967295);var aDv=((aDx+8)&4294967295);uA[((aDv)>>2)]=3;var aDt=azL;var aDq=((aDt)&4294967295);var aDn=((aDq+12)&4294967295);uA[((aDn)>>2)]=36;var aDk=azL;var aC9=((aDk)&4294967295);var aC8=((aC9+184)&4294967295);uA[((aC8)>>2)]=17990912;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==119){var aC6=azL;aEf=aC6;Np=((py)&4294967295);art=((fw)&4294967295);var aC4=Np;var aC2=(aC4)!=0;if(aC2){adU=120}else{adU=121}$bb1_i216$$bb2_i217$197:do{if(adU==120){var aC0=aEf;var aCY=((aC0+676)&4294967295);var aCV=((aCY)&4294967295);var aCR=Np;var aCO=aCV;var aCC=aCR;ns(aCO,aCC,16,1,0);var avf=art;var aCB=(avf)!=0;if(aCB){adU=121;break $bb1_i216$$bb2_i217$197}else{adU=122;break $bb1_i216$$bb2_i217$197}}}while(0);if(adU==121){var aCA=aEf;var aCz=((aCA+660)&4294967295);var aCy=((aCz)&4294967295);var aCx=art;ns(aCy,aCx,8,1,0)}var aCw=uA[((((Aa+8)&4294967295))>>2)];var aCu=azL;var aCs=((aCu+696)&4294967295);uA[((aCs)>>2)]=aCw;var aCq=azL;var aCh=((aCq)&4294967295);var aCf=((aCh+4)&4294967295);uA[((aCf)>>2)]=32;var aCe=azL;var aCc=((aCe)&4294967295);var aCb=((aCc+8)&4294967295);uA[((aCb)>>2)]=0;var aCa=azL;var aB9=((aCa)&4294967295);var aB7=((aB9+12)&4294967295);uA[((aB7)>>2)]=1081398;var aB5=azL;var aB3=((aB5)&4294967295);var aBT=((aB3+16)&4294967295);uA[((aBT)>>2)]=2;var aBS=azL;var aBR=((aBS)&4294967295);var aBP=((aBR+24)&4294967295);var aBO=((aBP+56)&4294967295);uA[((aBO)>>2)]=1;var aBN=azL;var aBM=((aBN)&4294967295);var aBK=((aBM+24)&4294967295);var aBI=((aBK+68)&4294967295);uA[((aBI)>>2)]=2;var aBG=azL;var aBk=((aBG)&4294967295);var aBj=((aBk+184)&4294967295);uA[((aBj)>>2)]=186758144;var aBh=azL;var aBg=((aBh)&4294967295);var aBf=((aBg+204)&4294967295);uA[((aBf)>>2)]=32;var aBe=azL;var aBd=((aBe)&4294967295);var aBb=((aBd+208)&4294967295);uA[((aBb)>>2)]=44;var aA9=azL;var aA7=((aA9)&4294967295);var aAX=((aA7+196)&4294967295);uA[((aAX)>>2)]=899;var aAW=azL;var aAV=((aAW)&4294967295);var aAU=((aAV+200)&4294967295);uA[((aAU)>>2)]=1;var aAT=azL;aEd=aAT;ahz=121;var aAS=ahz;var aAR=ahz;var aAP=aEd;var aAN=((aAP+708)&4294967295);var aAL=((aAN+aAR)&4294967295);var axb=la[((aAL)>>0)];var axa=(axb)&64;var aw8=(axa)|-127;var aw5=aEd;var aw3=((aw5+708)&4294967295);var aw1=((aw3+aAS)&4294967295);la[((aw1)>>0)]=aw8;var awZ=azL;var awX=((awZ)&4294967295);var awV=((awX+249)&4294967295);la[((awV)>>0)]=1;var awT=azL;aDH=awT;ajB=3;var awP=ajB;var awN=(((awP))|0)%100;var awL=((oL+awN*4)&4294967295);var awJ=uA[((awL)>>2)];var awH=aDH;var awF=((awH)&4294967295);var awD=((awF+176)&4294967295);uA[((awD)>>2)]=awJ;var awA=aDH;var awx=((awA)&4294967295);var awu=((awx+176)&4294967295);var awj=uA[((awu)>>2)];var awh=aDH;var awf=((awh)&4294967295);var awd=((awf+180)&4294967295);uA[((awd)>>2)]=awj;var awb=ajB;var av9=(((((awb))|0)/100)|0);ai3=av9;var av7=ai3;var av4=(((av7))|0)!=0;var av1=oD((av4),1,0);arO=av1;var aKM=iB((av1),8,0)!=0;if(!(aKM)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}var avY=ai3;var avK=((oL+avY*4)&4294967295);var avJ=uA[((avK)>>2)];var avH=aDH;var avF=((avH)&4294967295);var avD=((avF+180)&4294967295);uA[((avD)>>2)]=avJ;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==124){var avB=azL;aDG=avB;MS=((pw)&4294967295);ard=0;var avz=MS;var avw=(avz)!=0;if(avw){adU=125}else{adU=127}$bb1_i229$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit231$204:do{if(adU==125){var avs=aDG;var avo=((avs+676)&4294967295);var avd=((avo)&4294967295);var avc=MS;var ava=avd;var au8=avc;ns(ava,au8,16,1,0);var auI=ard;var au6=(auI)!=0;if(!(au6)){adU=127;break $bb1_i229$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit231$204}var au4=aDG;var au1=((au4+660)&4294967295);var auY=((au1)&4294967295);var auV=ard;ns(auY,auV,8,1,0)}}while(0);var auS=azL;var auF=((auS)&4294967295);var auE=((auF+8)&4294967295);uA[((auE)>>2)]=3;var auD=azL;var auC=((auD+964)&4294967295);uA[((auC)>>2)]=1328;var auB=azL;var auA=((auB+708)&4294967295);var auy=((auA)&4294967295);ud(auy,0,256,1,0);var auw=azL;aDa=auw;ayh=0;Qq=((aU)&4294967295);var auu=ayh;var aus=1<<(auu);aGM=aus;var auj=Qq;var aui=la[((auj)>>0)];UA=aui;var auh=iB((aui),8,0)!=0;var aug=oD((auh),1,0);aay=aug;var auf=Qq;var aue=((auf+1)&4294967295);Qq=aue;if(auh){adU=128}else{adU=129}$bb_i239$$_ZL13SetLetterBitsP10TranslatoriPKc_exit240$208:do{if(adU==128){while(1){var auc=UA;var aua=oD((auc),8,0);var at8=UA;var at6=oD((at8),8,0);var atW=aDa;var atV=((atW+708)&4294967295);var atT=((atV+at6)&4294967295);var atS=la[((atT)>>0)];var atR=aGM;var atQ=(((atR))&255);var atO=(atQ)|(atS);var atM=aDa;var atK=((atM+708)&4294967295);var atI=((atK+aua)&4294967295);la[((atI)>>0)]=atO;var atz=Qq;var atx=la[((atz)>>0)];UA=atx;var atw=UA;var atv=iB((atw),8,0)!=0;var atu=oD((atv),1,0);aay=atu;var att=Qq;var atr=((att+1)&4294967295);Qq=atr;var aJ4=iB((atu),8,0)!=0;if(aJ4){adU=128;continue}else{adU=129;break $bb_i239$$_ZL13SetLetterBitsP10TranslatoriPKc_exit240$208}}}}while(0);var atp=azL;aCE=atp;aye=7;Qm=((aU)&4294967295);var atn=aye;var atl=1<<(atn);aGz=atl;var atb=Qm;var ata=la[((atb)>>0)];Ua=ata;var ar9=iB((ata),8,0)!=0;var ar8=oD((ar9),1,0);aah=ar8;var ar7=Qm;var ar6=((ar7+1)&4294967295);Qm=ar6;if(ar9){adU=130}else{adU=131}$bb_i248$$_ZL13SetLetterBitsP10TranslatoriPKc_exit249$212:do{if(adU==130){while(1){var ar4=Ua;var ar2=oD((ar4),8,0);var ar0=Ua;var arY=oD((ar0),8,0);var amW=aCE;var amV=((amW+708)&4294967295);var amT=((amV+arY)&4294967295);var amR=la[((amT)>>0)];var amP=aGz;var amN=(((amP))&255);var amL=(amN)|(amR);var amJ=aCE;var amH=((amJ+708)&4294967295);var amF=((amH+ar2)&4294967295);la[((amF)>>0)]=amL;var amA=Qm;var amz=la[((amA)>>0)];Ua=amz;var amx=Ua;var amv=iB((amx),8,0)!=0;var amt=oD((amv),1,0);aah=amt;var amr=Qm;var amo=((amr+1)&4294967295);Qm=amo;var aJA=iB((amt),8,0)!=0;if(aJA){adU=130;continue}else{adU=131;break $bb_i248$$_ZL13SetLetterBitsP10TranslatoriPKc_exit249$212}}}}while(0);var aml=azL;aCi=aml;ax8=2;P9=((da)&4294967295);var ami=ax8;var amf=1<<(ami);aGx=amf;var al0=P9;var alZ=la[((al0)>>0)];TH=alZ;var alX=iB((alZ),8,0)!=0;var alV=oD((alX),1,0);ZU=alV;var alT=P9;var alR=((alT+1)&4294967295);P9=alR;if(alX){adU=132}else{adU=133}$bb_i257$$_ZL13SetLetterBitsP10TranslatoriPKc_exit258$216:do{if(adU==132){while(1){var alO=TH;var alL=oD((alO),8,0);var alI=TH;var alF=oD((alI),8,0);var alr=aCi;var alq=((alr+708)&4294967295);var alo=((alq+alF)&4294967295);var alm=la[((alo)>>0)];var alk=aGx;var ali=(((alk))&255);var alf=(ali)|(alm);var alc=aCi;var ak9=((alc+708)&4294967295);var ak6=((ak9+alL)&4294967295);la[((ak6)>>0)]=alf;var akR=P9;var akQ=la[((akR)>>0)];TH=akQ;var akO=TH;var akM=iB((akO),8,0)!=0;var akK=oD((akM),1,0);ZU=akK;var akI=P9;var akF=((akI+1)&4294967295);P9=akF;var aI4=iB((akK),8,0)!=0;if(aI4){adU=132;continue}else{adU=133;break $bb_i257$$_ZL13SetLetterBitsP10TranslatoriPKc_exit258$216}}}}while(0);var akC=azL;var akz=((akC)&4294967295);var akw=((akz+248)&4294967295);la[((akw)>>0)]=6;var akj=azL;var aki=((akj)&4294967295);var akh=((aki+184)&4294967295);uA[((akh)>>2)]=1032;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==134){var akg=azL;aCg=akg;Lc=((pp)&4294967295);apX=((fh)&4294967295);var akf=Lc;var ake=(akf)!=0;if(ake){adU=135}else{adU=136}$bb1_i264$$bb2_i265$221:do{if(adU==135){var akc=aCg;var aka=((akc+676)&4294967295);var aj8=((aka)&4294967295);var aj6=Lc;var ajX=aj8;var ajW=aj6;ns(ajX,ajW,16,1,0);var atd=apX;var ajV=(atd)!=0;if(ajV){adU=136;break $bb1_i264$$bb2_i265$221}else{adU=137;break $bb1_i264$$bb2_i265$221}}}while(0);if(adU==136){var ajU=aCg;var ajT=((ajU+660)&4294967295);var ajS=((ajT)&4294967295);var ajR=apX;ns(ajS,ajR,8,1,0)}var ajP=azL;var ajN=((ajP)&4294967295);var ajL=((ajN+8)&4294967295);uA[((ajL)>>2)]=2;var ajy=azL;var ajx=((ajy)&4294967295);var ajw=((ajx+184)&4294967295);uA[((ajw)>>2)]=16781320;var ajv=azL;var aju=((ajv)&4294967295);var ajt=((aju+12)&4294967295);uA[((ajt)>>2)]=22;var ajs=azL;var ajq=((ajs)&4294967295);var ajn=((ajq+220)&4294967295);uA[((ajn)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==138){var ajj=azL;aBU=ajj;K8=((pg)&4294967295);apJ=0;var ai1=K8;var ai0=(ai1)!=0;if(ai0){adU=139}else{adU=141}$bb1_i272$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit274$227:do{if(adU==139){var aiY=aBU;var aiX=((aiY+676)&4294967295);var aiW=((aiX)&4294967295);var aiV=K8;var aiU=aiW;var aiS=aiV;ns(aiU,aiS,16,1,0);var arR=apJ;var aiP=(arR)!=0;if(!(aiP)){adU=141;break $bb1_i272$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit274$227}var aiM=aBU;var aiv=((aiM+660)&4294967295);var aiu=((aiv)&4294967295);var ais=apJ;ns(aiu,ais,8,1,0)}}while(0);var air=azL;var aip=((air)&4294967295);var aio=((aip+8)&4294967295);uA[((aio)>>2)]=0;var ain=azL;var ail=((ain)&4294967295);var aii=((ail+12)&4294967295);uA[((aii)>>2)]=16;var aif=azL;var aat=((aif)&4294967295);var aas=((aat+24)&4294967295);var aaq=((aas+8)&4294967295);uA[((aaq)>>2)]=17;var aao=azL;var aam=((aao)&4294967295);var aak=((aam+24)&4294967295);var aai=((aak+40)&4294967295);uA[((aai)>>2)]=2;var aaf=azL;aBm=aaf;Kg=24;var aad=Kg;var ayp=(aad)^-1;ah4=ayp;ayv=0;$bb_i277$231:while(1){var aab=ayv;var Z5=ayv;var Z3=aBm;var Z1=((Z3+708)&4294967295);var ZZ=((Z1+Z5)&4294967295);var ZX=la[((ZZ)>>0)];var ZV=ah4;var ZS=(((ZV))&255);var ZP=(ZS)&(ZX);var ZM=aBm;var ZJ=((ZM+708)&4294967295);var Zx=((ZJ+aab)&4294967295);la[((Zx)>>0)]=ZP;var Zv=ayv;var Zt=(((Zv)+1)&4294967295);ayv=Zt;var Zr=(((Zt))>>>0)<=255;if(Zr){adU=142;continue $bb_i277$231}else{adU=143;break $bb_i277$231}}var Zp=azL;aBl=Zp;axE=4;Py=((H)&4294967295);var Zn=axE;var Zl=1<<(Zn);aGv=Zl;var Zi=Py;var Zf=la[((Zi)>>0)];Sj=Zf;var Zc=Sj;var Y0=iB((Zc),8,0)!=0;var YY=oD((Y0),1,0);Yn=YY;var YW=Py;var YU=((YW+1)&4294967295);Py=YU;if(Y0){adU=144}else{adU=145}$bb_i285$$_ZL13SetLetterBitsP10TranslatoriPKc_exit286$234:do{if(adU==144){while(1){var YS=Sj;var YQ=oD((YS),8,0);var YO=Sj;var YL=oD((YO),8,0);var YI=aBl;var YF=((YI+708)&4294967295);var Yt=((YF+YL)&4294967295);var Ys=la[((Yt)>>0)];var Yq=aGv;var Yo=(((Yq))&255);var Yl=(Yo)|(Ys);var Yj=aBl;var Yh=((Yj+708)&4294967295);var Ye=((Yh+YQ)&4294967295);la[((Ye)>>0)]=Yl;var Yb=Py;var X8=la[((Yb)>>0)];Sj=X8;var XW=Sj;var XV=iB((XW),8,0)!=0;var XU=oD((XV),1,0);Yn=XU;var XS=Py;var XR=((XS+1)&4294967295);Py=XR;var aHQ=iB((XU),8,0)!=0;if(aHQ){adU=144;continue}else{adU=145;break $bb_i285$$_ZL13SetLetterBitsP10TranslatoriPKc_exit286$234}}}}while(0);var XQ=azL;aAY=XQ;axs=3;Px=((ad)&4294967295);var XP=axs;var XN=1<<(XP);aGt=XN;var XL=Px;var XJ=la[((XL)>>0)];RX=XJ;var Xz=iB((XJ),8,0)!=0;var Xy=oD((Xz),1,0);XT=Xy;var Xx=Px;var Xw=((Xx+1)&4294967295);Px=Xw;if(Xz){adU=146}else{adU=147}$bb_i294$$_ZL13SetLetterBitsP10TranslatoriPKc_exit295$238:do{if(adU==146){while(1){var Xv=RX;var Xu=oD((Xv),8,0);var Xt=RX;var Xr=oD((Xt),8,0);var Xp=aAY;var Xn=((Xp+708)&4294967295);var Xb=((Xn+Xr)&4294967295);var W9=la[((Xb)>>0)];var W7=aGt;var W6=(((W7))&255);var W5=(W6)|(W9);var W4=aAY;var W3=((W4+708)&4294967295);var W0=((W3+Xu)&4294967295);la[((W0)>>0)]=W5;var WX=Px;var WU=la[((WX)>>0)];RX=WU;var WB=RX;var Wz=iB((WB),8,0)!=0;var Wy=oD((Wz),1,0);XT=Wy;var Wx=Px;var Ww=((Wx+1)&4294967295);Px=Ww;var aHu=iB((Wy),8,0)!=0;if(aHu){adU=146;continue}else{adU=147;break $bb_i294$$_ZL13SetLetterBitsP10TranslatoriPKc_exit295$238}}}}while(0);var Wv=azL;var Wu=((Wv+968)&4294967295);var Wr=((Wu+4)&4294967295);uA[((Wr)>>2)]=((sJ)&4294967295);var Wo=azL;aAB=Wo;adT=121;var Wl=adT;var V3=adT;var V2=aAB;var V1=((V2+708)&4294967295);var VZ=((V1+V3)&4294967295);var VY=la[((VZ)>>0)];var VX=(VY)&64;var VW=(VX)|-127;var VT=aAB;var VQ=((VT+708)&4294967295);var VN=((VQ+Wl)&4294967295);la[((VN)>>0)]=VW;var Pl=azL;var Pk=((Pl)&4294967295);var Pi=((Pk+184)&4294967295);uA[((Pi)>>2)]=2280;var Pg=azL;var Pe=((Pg)&4294967295);var Pc=((Pe+188)&4294967295);uA[((Pc)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==148){var Pa=azL;aAA=Pa;J3=((pf)&4294967295);ag5=((e3)&4294967295);var O8=J3;var O6=(O8)!=0;if(O6){adU=149}else{adU=150}$bb1_i303$$bb2_i304$243:do{if(adU==149){var O4=aAA;var OZ=((O4+676)&4294967295);var OY=((OZ)&4294967295);var OW=J3;var OT=OY;var OR=OW;ns(OT,OR,16,1,0);var alt=ag5;var OP=(alt)!=0;if(OP){adU=150;break $bb1_i303$$bb2_i304$243}else{adU=151;break $bb1_i303$$bb2_i304$243}}}while(0);if(adU==150){var ON=aAA;var OK=((ON+660)&4294967295);var OG=((OK)&4294967295);var OD=ag5;ns(OG,OD,8,1,0)}var Ot=azL;var Os=((Ot)&4294967295);var Oq=((Os+176)&4294967295);var Oo=uA[((Oq)>>2)];var Om=azL;var Ok=((Om)&4294967295);var Oh=((Ok+180)&4294967295);uA[((Oh)>>2)]=Oo;var Oe=azL;var Ob=((Oe)&4294967295);var N8=((Ob+8)&4294967295);uA[((N8)>>2)]=2;var NU=azL;var NT=((NU)&4294967295);var NR=((NT+12)&4294967295);uA[((NR)>>2)]=131088;var NP=azL;var NN=((NP)&4294967295);var NL=((NN+4)&4294967295);uA[((NL)>>2)]=1;var NJ=azL;var NG=((NJ)&4294967295);var ND=((NG+16)&4294967295);uA[((ND)>>2)]=2;var NA=azL;var No=((NA)&4294967295);var Nn=((No+20)&4294967295);uA[((Nn)>>2)]=2;var Nl=azL;var Ni=((Nl)&4294967295);var Ng=((Ni+24)&4294967295);var Ne=((Ng+8)&4294967295);uA[((Ne)>>2)]=2;var Nc=azL;var M9=((Nc)&4294967295);var M6=((M9+24)&4294967295);var M3=((M6+56)&4294967295);uA[((M3)>>2)]=2;var MR=azL;var MQ=((MR)&4294967295);var MP=((MQ+24)&4294967295);var MO=((MP+28)&4294967295);uA[((MO)>>2)]=130;var MN=azL;var MM=((MN)&4294967295);var ML=((MM+24)&4294967295);var MJ=((ML+40)&4294967295);uA[((MJ)>>2)]=1;var MH=azL;var MF=((MH)&4294967295);var Mw=((MF+24)&4294967295);var Mv=((Mw+60)&4294967295);uA[((Mv)>>2)]=2;var Mu=azL;var Mt=((Mu)&4294967295);var Ms=((Mt+184)&4294967295);uA[((Ms)>>2)]=16786952;var Mr=azL;var Mq=((Mr)&4294967295);var Mo=((Mq+220)&4294967295);uA[((Mo)>>2)]=2;var Mm=azL;awQ=Mm;V0=121;var Mk=V0;var Mb=V0;var Ma=awQ;var L9=((Ma+708)&4294967295);var L8=((L9+Mb)&4294967295);var L7=la[((L8)>>0)];var L6=(L7)&64;var L5=(L6)|-127;var L2=awQ;var LZ=((L2+708)&4294967295);var LW=((LZ+Mk)&4294967295);la[((LW)>>0)]=L5;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==156){var Dm=azL;awi=Dm;CV=((mB)&4294967295);agb=((bs)&4294967295);var Dl=CV;var Dk=(Dl)!=0;if(Dk){adU=157}else{adU=158}$bb1_i323$$bb2_i324$249:do{if(adU==157){var Dj=awi;var Di=((Dj+676)&4294967295);var Dh=((Di)&4294967295);var Dg=CV;var Df=Dh;var De=Dg;ns(Df,De,16,1,0);var akl=agb;var Db=(akl)!=0;if(Db){adU=158;break $bb1_i323$$bb2_i324$249}else{adU=159;break $bb1_i323$$bb2_i324$249}}}while(0);if(adU==158){var Da=awi;var C9=((Da+660)&4294967295);var C7=((C9)&4294967295);var C6=agb;ns(C7,C6,8,1,0)}var C5=azL;var C4=((C5+708)&4294967295);var C3=((C4)&4294967295);ud(C3,0,256,1,0);var C2=azL;avL=C2;aod=0;Fd=((y0)&4294967295);var C1=aod;var CY=1<<(C1);aAC=CY;var CX=Fd;var CW=la[((CX)>>0)];JR=CW;var CU=iB((CW),8,0)!=0;var CT=oD((CU),1,0);Pz=CT;var CS=Fd;var CR=((CS+1)&4294967295);Fd=CR;if(CU){adU=160}else{adU=161}$bb_i333$$_ZL13SetLetterBitsP10TranslatoriPKc_exit334$254:do{if(adU==160){while(1){var CQ=JR;var CP=oD((CQ),8,0);var CO=JR;var CN=oD((CO),8,0);var CM=avL;var CL=((CM+708)&4294967295);var CK=((CL+CN)&4294967295);var CJ=la[((CK)>>0)];var CI=aAC;var CH=(((CI))&255);var CG=(CH)|(CJ);var CF=avL;var CE=((CF+708)&4294967295);var CD=((CE+CP)&4294967295);la[((CD)>>0)]=CG;var CC=Fd;var CB=la[((CC)>>0)];JR=CB;var CA=JR;var Cz=iB((CA),8,0)!=0;var Cy=oD((Cz),1,0);Pz=Cy;var Cx=Fd;var Cw=((Cx+1)&4294967295);Fd=Cw;var aEb=iB((Cy),8,0)!=0;if(aEb){adU=160;continue}else{adU=161;break $bb_i333$$_ZL13SetLetterBitsP10TranslatoriPKc_exit334$254}}}}while(0);var Cv=azL;ave=Cv;an2=2;E1=((jQ)&4294967295);var Cu=an2;var Cs=1<<(Cu);aAy=Cs;var Cr=E1;var Cq=la[((Cr)>>0)];Jx=Cq;var Cp=iB((Cq),8,0)!=0;var Co=oD((Cp),1,0);Pn=Co;var Cn=E1;var Cm=((Cn+1)&4294967295);E1=Cm;if(Cp){adU=162}else{adU=163}$bb_i342$$_ZL13SetLetterBitsP10TranslatoriPKc_exit343$258:do{if(adU==162){while(1){var Ck=Jx;var Ci=oD((Ck),8,0);var Cg=Jx;var B8=oD((Cg),8,0);var B7=ave;var B6=((B7+708)&4294967295);var B5=((B6+B8)&4294967295);var B4=la[((B5)>>0)];var B3=aAy;var B2=(((B3))&255);var B0=(B2)|(B4);var BY=ave;var BW=((BY+708)&4294967295);var BN=((BW+Ci)&4294967295);la[((BN)>>0)]=B0;var BM=E1;var BL=la[((BM)>>0)];Jx=BL;var BK=Jx;var BJ=iB((BK),8,0)!=0;var BI=oD((BJ),1,0);Pn=BI;var BH=E1;var BF=((BH+1)&4294967295);E1=BF;var aDE=iB((BI),8,0)!=0;if(aDE){adU=162;continue}else{adU=163;break $bb_i342$$_ZL13SetLetterBitsP10TranslatoriPKc_exit343$258}}}}while(0);var BD=azL;auk=BD;anT=7;EB=((y0)&4294967295);var BB=anT;var arx=1<<(BB);aAk=arx;var arw=EB;var arv=la[((arw)>>0)];IH=arv;var aru=iB((arv),8,0)!=0;var ars=oD((aru),1,0);OI=ars;var arr=EB;var arq=((arr+1)&4294967295);EB=arq;if(aru){adU=164}else{adU=165}$bb_i359$$_ZL13SetLetterBitsP10TranslatoriPKc_exit360$262:do{if(adU==164){while(1){var arp=IH;var aro=oD((arp),8,0);var arn=IH;var arl=oD((arn),8,0);var ark=auk;var arj=((ark+708)&4294967295);var ari=((arj+arl)&4294967295);var arh=la[((ari)>>0)];var arg=aAk;var arf=(((arg))&255);var arc=(arf)|(arh);var ara=auk;var aq8=((ara+708)&4294967295);var aq0=((aq8+aro)&4294967295);la[((aq0)>>0)]=arc;var aqZ=EB;var aqY=la[((aqZ)>>0)];IH=aqY;var aqX=IH;var aqW=iB((aqX),8,0)!=0;var aqV=oD((aqW),1,0);OI=aqV;var aqU=EB;var aqS=((aqU+1)&4294967295);EB=aqS;var aCU=iB((aqV),8,0)!=0;if(aCU){adU=164;continue}else{adU=165;break $bb_i359$$_ZL13SetLetterBitsP10TranslatoriPKc_exit360$262}}}}while(0);var aqQ=azL;var aqO=((aqQ)&4294967295);var aqF=((aqO+8)&4294967295);uA[((aqF)>>2)]=0;var aqE=azL;var aqD=((aqE)&4294967295);var aqC=((aqD+12)&4294967295);uA[((aqC)>>2)]=16;var aqB=azL;var aqA=((aqB+964)&4294967295);uA[((aqA)>>2)]=4224;var aqz=azL;var aqx=((aqz)&4294967295);var aqv=((aqx+248)&4294967295);la[((aqv)>>0)]=7;var aqt=azL;var aqk=((aqt)&4294967295);var aqj=((aqk+184)&4294967295);uA[((aqj)>>2)]=3187744;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==250){var azC=azL;WA=azC;axq=((mB)&4294967295);Gh=((bs)&4294967295);var azB=WA;var azA=((azB+676)&4294967295);var azz=((azA)&4294967295);var azy=axq;var azx=azz;var azw=azy;ns(azx,azw,16,1,0);var Kk=Gh;var azv=(Kk)!=0;if(azv){adU=251}else{adU=252}if(adU==251){var azt=WA;var azr=((azt+660)&4294967295);var azq=((azr)&4294967295);var azp=Gh;ns(azq,azp,8,1,0)}var azo=azL;var azn=((azo)&4294967295);var azm=((azn+176)&4294967295);var azl=uA[((azm)>>2)];var azj=azL;var azi=((azj)&4294967295);var azf=((azi+180)&4294967295);uA[((azf)>>2)]=azl;var aze=azL;var azd=((aze)&4294967295);var azc=((azd+8)&4294967295);uA[((azc)>>2)]=0;var azb=azL;var aza=((azb)&4294967295);var ay9=((aza+12)&4294967295);uA[((ay9)>>2)]=65540;var ay8=azL;var ay6=((ay8)&4294967295);var ay5=((ay6+249)&4294967295);la[((ay5)>>0)]=1;var ay3=azL;var ay2=((ay3)&4294967295);var ay1=((ay2+192)&4294967295);uA[((ay1)>>2)]=5288;var ay0=axo;var ayZ=(((ay0))|0)==29793;if(ayZ){aAz=252;adU=253}else{aAz=252;adU=254}if(adU==253){var ayY=azL;var ayX=((ayY+964)&4294967295);uA[((ayX)>>2)]=2944;var ayW=azL;var ayU=((ayW)&4294967295);var ayT=((ayU+184)&4294967295);uA[((ayT)>>2)]=2097152;var aHS=axo;aAz=253}var ayR=aAz==253?aHS:(ay0);var ayQ=(((ayR))|0)==28018;if(ayQ){adU=255}else{adU=256}$bb67$$bb68$273:do{if(adU==255){var ayP=azL;var ayO=((ayP+964)&4294967295);uA[((ayO)>>2)]=2304}else{if(adU==256){var ayN=axo;var ayL=(((ayN))|0)==28012;if(ayL){adU=257}else{adU=258}if(adU==257){var ayK=azL;var ayJ=((ayK+964)&4294967295);uA[((ayJ)>>2)]=3328;var ayI=azL;var ayH=((ayI)&4294967295);var ayF=((ayH+184)&4294967295);uA[((ayF)>>2)]=2097152}else{if(adU==258){var ayE=axo;var ayD=(((ayE))|0)==27502;if(ayD){adU=259}else{adU=260}if(adU==259){var ayC=azL;var ayB=((ayC+964)&4294967295);uA[((ayB)>>2)]=3200;var ayA=azL;var ayz=((ayA)&4294967295);var ayy=((ayz+184)&4294967295);uA[((ayy)>>2)]=1}else{if(adU==260){var ayx=axo;var ayw=(((ayx))|0)==29797;if(!(ayw)){adU=262;break $bb67$$bb68$273}var ayt=azL;var ays=((ayt+964)&4294967295);uA[((ays)>>2)]=3072;var ayr=azL;var ayq=((ayr)&4294967295);var ayo=((ayq+184)&4294967295);uA[((ayo)>>2)]=1}}}}}}}while(0);var ayn=azL;var aym=((ayn)&4294967295);var ayl=((aym+24)&4294967295);var ayk=((ayl+32)&4294967295);uA[((ayk)>>2)]=1;var ayj=azL;p3(ayj);var are=azL;Xa=are;PR=1;arT=78;aw7=78;var arb=PR;var aq9=1<<(arb);agq=aq9;var aq7=arT;Qu=aq7;var aq6=Qu;var aq5=aw7;var aq4=(((aq6))|0)<=(((aq5))|0);if(!(aq4)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}while(1){var aq3=Qu;var aq2=Qu;var aq1=Xa;var aqT=((aq1+708)&4294967295);var aqR=((aqT+aq2)&4294967295);var aqP=la[((aqR)>>0)];var aqN=agq;var aqM=(((aqN))&255);var aqL=(aqM)|(aqP);var aqK=Xa;var aqJ=((aqK+708)&4294967295);var aqI=((aqJ+aq3)&4294967295);la[((aqI)>>0)]=aqL;var aqH=Qu;var aqy=(((aqH)+1)&4294967295);Qu=aqy;var aqw=Qu;var aqu=aw7;var aqs=(((aqw))|0)<=(((aqu))|0);if(aqs){adU=263;continue}else{adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}}}else{if(adU==166){var aqi=azL;var aqh=((aqi+964)&4294967295);uA[((aqh)>>2)]=4352;var aqg=azL;var aqf=((aqg+708)&4294967295);var aqd=((aqf)&4294967295);ud(aqd,0,256,1,0);var aqb=azL;atY=aqb;anF=0;aHd=97;Bc=117;var ap9=anF;var ap7=1<<(ap9);aAj=ap7;var apZ=aHd;aoA=apZ;var apY=aoA;var apW=Bc;var apV=(((apY))|0)<=(((apW))|0);if(apV){adU=167}else{adU=168}$bb_i367$$_ZL18SetLetterBitsRangeP10Translatoriii_exit368$287:do{if(adU==167){while(1){var apU=aoA;var apT=aoA;var apS=atY;var apQ=((apS+708)&4294967295);var apO=((apQ+apT)&4294967295);var apL=la[((apO)>>0)];var apz=aAj;var apy=(((apz))&255);var apx=(apy)|(apL);var apw=atY;var apv=((apw+708)&4294967295);var apu=((apv+apU)&4294967295);la[((apu)>>0)]=apx;var apt=aoA;var apr=(((apt)+1)&4294967295);aoA=apr;var app=aoA;var apn=Bc;var apf=(((app))|0)<=(((apn))|0);if(apf){adU=167;continue}else{adU=168;break $bb_i367$$_ZL18SetLetterBitsRangeP10Translatoriii_exit368$287}}}}while(0);var ape=azL;atA=ape;ann=6;D7=((kg)&4294967295);var apd=ann;var apc=1<<(apd);az6=apc;var apb=D7;var apa=la[((apb)>>0)];Hr=apa;var ao9=iB((apa),8,0)!=0;var ao7=oD((ao9),1,0);Nk=ao7;var ao5=D7;var ao3=((ao5+1)&4294967295);D7=ao3;if(ao9){adU=169}else{adU=170}$bb_i384$$_ZL13SetLetterBitsP10TranslatoriPKc_exit385$291:do{if(adU==169){while(1){var aoU=Hr;var aoT=oD((aoU),8,0);var aoS=Hr;var aoR=oD((aoS),8,0);var aoQ=atA;var aoP=((aoQ+708)&4294967295);var aoO=((aoP+aoR)&4294967295);var aoM=la[((aoO)>>0)];var aoK=az6;var aoI=(((aoK))&255);var aoy=(aoI)|(aoM);var aox=atA;var aow=((aox+708)&4294967295);var aov=((aow+aoT)&4294967295);la[((aov)>>0)]=aoy;var aou=D7;var aot=la[((aou)>>0)];Hr=aot;var aos=Hr;var aoq=iB((aos),8,0)!=0;var aoo=oD((aoq),1,0);Nk=aoo;var aom=D7;var agJ=((aom+1)&4294967295);D7=agJ;var aBQ=iB((aoo),8,0)!=0;if(aBQ){adU=169;continue}else{adU=170;break $bb_i384$$_ZL13SetLetterBitsP10TranslatoriPKc_exit385$291}}}}while(0);var agF=azL;atc=agF;ana=5;DW=((s2)&4294967295);var agC=ana;var agz=1<<(agC);azV=agz;var agx=DW;var agv=la[((agx)>>0)];G5=agv;var agu=iB((agv),8,0)!=0;var agt=oD((agu),1,0);MX=agt;var ags=DW;var agr=((ags+1)&4294967295);DW=agr;if(agu){adU=171}else{adU=172}$bb_i393$$_ZL13SetLetterBitsP10TranslatoriPKc_exit394$295:do{if(adU==171){while(1){var agd=G5;var af9=oD((agd),8,0);var af6=G5;var af3=oD((af6),8,0);var af1=atc;var afZ=((af1+708)&4294967295);var afY=((afZ+af3)&4294967295);var afW=la[((afY)>>0)];var afU=azV;var afS=(((afU))&255);var afy=(afS)|(afW);var afv=atc;var afs=((afv+708)&4294967295);var afp=((afs+af9)&4294967295);la[((afp)>>0)]=afy;var afn=DW;var afl=la[((afn)>>0)];G5=afl;var afk=G5;var afi=iB((afk),8,0)!=0;var afg=oD((afi),1,0);MX=afg;var afe=DW;var aeT=((afe+1)&4294967295);DW=aeT;var aBi=iB((afg),8,0)!=0;if(aBi){adU=171;continue}else{adU=172;break $bb_i393$$_ZL13SetLetterBitsP10TranslatoriPKc_exit394$295}}}}while(0);var aeQ=azL;var aeN=((aeQ)&4294967295);var aeK=((aeN+8)&4294967295);uA[((aeK)>>2)]=8;var aeI=azL;var aeG=((aeI)&4294967295);var aeF=((aeG+24)&4294967295);var aeC=((aeF+20)&4294967295);uA[((aeC)>>2)]=1;var aeA=azL;var aey=((aeA)&4294967295);var aej=((aey+184)&4294967295);uA[((aej)>>2)]=1024;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==173){var aeh=azL;amB=aeh;aGd=((oT)&4294967295);Uy=((ed)&4294967295);var aef=aGd;var aed=(aef)!=0;if(aed){adU=174}else{adU=175}$bb1_i408$$bb2_i409$300:do{if(adU==174){var aec=amB;var aeb=((aec+676)&4294967295);var aea=((aeb)&4294967295);var ad8=aGd;var ad6=aea;var ad4=ad8;ns(ad6,ad4,16,1,0);var Y2=Uy;var adL=(Y2)!=0;if(adL){adU=175;break $bb1_i408$$bb2_i409$300}else{adU=176;break $bb1_i408$$bb2_i409$300}}}while(0);if(adU==175){var adJ=amB;var adH=((adJ+660)&4294967295);var adF=((adH)&4294967295);var adE=Uy;ns(adF,adE,8,1,0)}var adD=uA[((((Aa+36)&4294967295))>>2)];var adC=azL;var adz=((adC+696)&4294967295);uA[((adz)>>2)]=adD;var adx=azL;var adv=((adx)&4294967295);var adf=((adv+8)&4294967295);uA[((adf)>>2)]=7;var add=azL;var ada=((add)&4294967295);var ac8=((ada+184)&4294967295);uA[((ac8)>>2)]=263264;var ac7=azL;var ac6=((ac7)&4294967295);var ac5=((ac6+248)&4294967295);la[((ac5)>>0)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==177){var ac3=uA[((((Aa+16)&4294967295))>>2)];var ac1=azL;var acZ=((ac1+696)&4294967295);uA[((acZ)>>2)]=ac3;var acK=azL;var acI=((acK)&4294967295);var acG=((acI+8)&4294967295);uA[((acG)>>2)]=2;var acE=azL;var acD=((acE)&4294967295);var acC=((acD+12)&4294967295);uA[((acC)>>2)]=32;var acB=azL;var acz=((acB)&4294967295);var acx=((acz+16)&4294967295);uA[((acx)>>2)]=0;var acv=azL;var ace=((acv)&4294967295);var acc=((ace+20)&4294967295);uA[((acc)>>2)]=2;var ab9=azL;var ab7=((ab9)&4294967295);var ab6=((ab7+24)&4294967295);var ab5=((ab6+4)&4294967295);uA[((ab5)>>2)]=1;var ab4=azL;var ab2=((ab4)&4294967295);var abZ=((ab2+184)&4294967295);uA[((abZ)>>2)]=16777216;var abX=azL;var abN=((abX)&4294967295);var abM=((abN+196)&4294967295);uA[((abM)>>2)]=5000;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==178){var abL=azL;al2=abL;aGb=((oC)&4294967295);Ub=((dP)&4294967295);var abK=aGb;var abJ=(abK)!=0;if(abJ){adU=179}else{adU=180}$bb1_i416$$bb2_i417$307:do{if(adU==179){var abH=al2;var abG=((abH+676)&4294967295);var abE=((abG)&4294967295);var abC=aGb;var abz=abE;var Ul=abC;ns(abz,Ul,16,1,0);var Yv=Ub;var Ui=(Yv)!=0;if(Ui){adU=180;break $bb1_i416$$bb2_i417$307}else{adU=181;break $bb1_i416$$bb2_i417$307}}}while(0);if(adU==180){var Uf=al2;var Uc=((Uf+660)&4294967295);var T8=((Uc)&4294967295);var T6=Ub;ns(T8,T6,8,1,0)}var T5=azL;var T4=((T5)&4294967295);var T3=((T4+8)&4294967295);uA[((T3)>>2)]=0;var T2=azL;var TP=((T2)&4294967295);var TM=((TP+249)&4294967295);la[((TM)>>0)]=1;var TI=uA[((((Aa+16)&4294967295))>>2)];var TE=azL;var TC=((TE+696)&4294967295);uA[((TC)>>2)]=TI;var TA=azL;var Tz=((TA)&4294967295);var Ty=((Tz+184)&4294967295);uA[((Ty)>>2)]=99336;var Tx=azL;var Tw=((Tx)&4294967295);var Ti=((Tw+12)&4294967295);uA[((Ti)>>2)]=262166;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==182){var Tf=azL;alY=Tf;aF8=((oq)&4294967295);TL=((dy)&4294967295);var Tb=aF8;var S8=(Tb)!=0;if(S8){adU=183}else{adU=184}$bb1_i424$$bb2_i425$313:do{if(adU==183){var S6=alY;var S4=((S6+676)&4294967295);var S3=((S4)&4294967295);var S2=aF8;var S1=S3;var S0=S2;ns(S1,S0,16,1,0);var XY=TL;var SM=(XY)!=0;if(SM){adU=184;break $bb1_i424$$bb2_i425$313}else{adU=185;break $bb1_i424$$bb2_i425$313}}}while(0);if(adU==184){var SJ=alY;var SF=((SJ+660)&4294967295);var SC=((SF)&4294967295);var SA=TL;ns(SC,SA,8,1,0)}var Sy=uA[((((Aa+20)&4294967295))>>2)];var Sx=azL;var Sw=((Sx+696)&4294967295);uA[((Sw)>>2)]=Sy;var Sv=azL;var Su=((Sv+968)&4294967295);var Sk=((Su+28)&4294967295);uA[((Sk)>>2)]=((hP)&4294967295);var Sh=azL;var Sf=((Sh+968)&4294967295);var Sd=((Sf+28)&4294967295);var Sc=uA[((Sd)>>2)];var Sb=azL;var Sa=((Sb+968)&4294967295);var R9=((Sa)&4294967295);uA[((R9)>>2)]=Sc;var R8=azL;var R7=((R8)&4294967295);var RV=((R7+8)&4294967295);uA[((RV)>>2)]=4;var RT=azL;var RR=((RT)&4294967295);var RP=((RR+184)&4294967295);uA[((RP)>>2)]=2114600;var RO=azL;var RN=((RO)&4294967295);var RM=((RN+188)&4294967295);uA[((RM)>>2)]=138;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==186){var RL=azL;var RK=((RL)&4294967295);var RJ=((RK+8)&4294967295);uA[((RJ)>>2)]=0;var RB=azL;var Rz=((RB)&4294967295);var Rx=((Rz+4)&4294967295);uA[((Rx)>>2)]=48;var Rv=azL;var Ru=((Rv)&4294967295);var Rt=((Ru+24)&4294967295);var Rs=((Rt+4)&4294967295);uA[((Rs)>>2)]=1;var Rr=azL;var Rq=((Rr)&4294967295);var Rp=((Rq+24)&4294967295);var Rg=((Rp+12)&4294967295);uA[((Rg)>>2)]=1;var Re=azL;var Rc=((Re)&4294967295);var Ra=((Rc+24)&4294967295);var Q9=((Ra+16)&4294967295);uA[((Q9)>>2)]=16;var Q8=azL;als=Q8;Ki=121;var Q6=Ki;var Q5=Ki;var Q4=als;var Q3=((Q4+708)&4294967295);var QT=((Q3+Q5)&4294967295);var QR=la[((QT)>>0)];var QP=(QR)&64;var QN=(QP)|-127;var QM=als;var QL=((QM+708)&4294967295);var QK=((QL+Q6)&4294967295);la[((QK)>>0)]=QN;var QJ=azL;var QI=((QJ)&4294967295);var QH=((QI+184)&4294967295);uA[((QH)>>2)]=2169880;var QE=azL;var QD=((QE)&4294967295);var QC=((QD+216)&4294967295);uA[((QC)>>2)]=((jj)&4294967295);var QB=azL;var QA=((QB)&4294967295);var Qz=((QA+12)&4294967295);uA[((Qz)>>2)]=128;var Qy=azL;var Qx=((Qy+676)&4294967295);var Qw=((Qx)&4294967295);var Qv=Qw;ns(Qv,n7,16,1,0);adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==187){var Jr=azL;alp=Jr;aF4=((n4)&4294967295);Te=0;var Jo=aF4;var Jl=(Jo)!=0;if(Jl){adU=188}else{adU=190}$bb1_i434$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit436$320:do{if(adU==188){var Ji=alp;var Jf=((Ji+676)&4294967295);var Jd=((Jf)&4294967295);var Jc=aF4;var Jb=Jd;var Ja=Jc;ns(Jb,Ja,16,1,0);var XB=Te;var I9=(XB)!=0;if(!(I9)){adU=190;break $bb1_i434$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit436$320}var IV=alp;var IS=((IV+660)&4294967295);var IP=((IS)&4294967295);var IM=Te;ns(IP,IM,8,1,0)}}while(0);var IJ=azL;var IG=((IJ)&4294967295);var IF=((IG+8)&4294967295);uA[((IF)>>2)]=0;var IE=azL;akS=IE;J2=121;var ID=J2;var IC=J2;var In=akS;var Ik=((In+708)&4294967295);var Ig=((Ik+IC)&4294967295);var Id=la[((Ig)>>0)];var Ia=(Id)&64;var H8=(Ia)|-127;var H7=akS;var H6=((H7+708)&4294967295);var H5=((H6+ID)&4294967295);la[((H5)>>0)]=H8;var H4=azL;var HS=((H4)&4294967295);var HP=((HS+184)&4294967295);uA[((HP)>>2)]=71752;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==191){var HM=azL;akP=HM;aF3=((nN)&4294967295);SI=((cK)&4294967295);var HJ=aF3;var HG=(HJ)!=0;if(HG){adU=192}else{adU=193}$bb1_i444$$bb2_i445$325:do{if(adU==192){var HE=akP;var HD=((HE+676)&4294967295);var HC=((HD)&4294967295);var HB=aF3;var HA=HC;var Hq=HB;ns(HA,Hq,16,1,0);var Xf=SI;var Ho=(Xf)!=0;if(Ho){adU=193;break $bb1_i444$$bb2_i445$325}else{adU=194;break $bb1_i444$$bb2_i445$325}}}while(0);if(adU==193){var Hm=akP;var Hk=((Hm+660)&4294967295);var Hi=((Hk)&4294967295);var Hh=SI;ns(Hi,Hh,8,1,0)}var Hg=azL;var Hf=((Hg)&4294967295);var He=((Hf+8)&4294967295);uA[((He)>>2)]=2;var Hd=azL;var G3=((Hd)&4294967295);var G1=((G3+12)&4294967295);uA[((G1)>>2)]=524310;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==195){var GZ=azL;akk=GZ;aF2=((nw)&4294967295);St=((cs)&4294967295);var GX=aF2;var GW=(GX)!=0;if(GW){adU=196}else{adU=197}$bb1_i452$$bb2_i453$331:do{if(adU==196){var GV=akk;var GU=((GV+676)&4294967295);var GT=((GU)&4294967295);var GS=aF2;var GR=GT;var GG=GS;ns(GR,GG,16,1,0);var WJ=St;var GE=(WJ)!=0;if(GE){adU=197;break $bb1_i452$$bb2_i453$331}else{adU=198;break $bb1_i452$$bb2_i453$331}}}while(0);if(adU==197){var GC=akk;var GA=((GC+660)&4294967295);var Gz=((GA)&4294967295);var Gy=St;ns(Gz,Gy,8,1,0)}var Gx=uA[((((Aa+8)&4294967295))>>2)];var Gw=azL;var Gv=((Gw+696)&4294967295);uA[((Gv)>>2)]=Gx;var Gu=azL;var Gl=((Gu)&4294967295);var Gj=((Gl+8)&4294967295);uA[((Gj)>>2)]=2;var Gg=azL;var Ge=((Gg)&4294967295);var Gd=((Ge+12)&4294967295);uA[((Gd)>>2)]=6;var Gc=azL;var Gb=((Gc)&4294967295);var Ga=((Gb+24)&4294967295);var F9=((Ga+16)&4294967295);uA[((F9)>>2)]=8;var F8=azL;var FY=((F8)&4294967295);var FW=((FY+248)&4294967295);la[((FW)>>0)]=7;var FU=azL;var FS=((FU)&4294967295);var FR=((FS+184)&4294967295);uA[((FR)>>2)]=20488;var FQ=azL;var FP=((FQ)&4294967295);var FO=((FP+188)&4294967295);uA[((FO)>>2)]=64;var FN=azL;var FM=((FN)&4294967295);var Fz=((FM+24)&4294967295);var Fy=((Fz+44)&4294967295);uA[((Fy)>>2)]=260;var Fx=azL;ajZ=Fx;I8=121;var Fw=I8;var Fv=I8;var Fu=ajZ;var Ft=((Fu+708)&4294967295);var Fs=((Ft+Fv)&4294967295);var Fr=la[((Fs)>>0)];var Fq=(Fr)&64;var aKB=(Fq)|-127;var aKy=ajZ;var aKv=((aKy+708)&4294967295);var aKs=((aKv+Fw)&4294967295);la[((aKs)>>0)]=aKB;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==199){var aKq=azL;ajY=aKq;aFQ=((nt)&4294967295);R6=((cj)&4294967295);var aKo=aFQ;var aKn=(aKo)!=0;if(aKn){adU=200}else{adU=201}$bb1_i462$$bb2_i463$337:do{if(adU==200){var aKm=ajY;var aKl=((aKm+676)&4294967295);var aKk=((aKl)&4294967295);var aJ6=aFQ;var aJ2=aKk;var aJZ=aJ6;ns(aJ2,aJZ,16,1,0);var Wa=R6;var aJW=(Wa)!=0;if(aJW){adU=201;break $bb1_i462$$bb2_i463$337}else{adU=202;break $bb1_i462$$bb2_i463$337}}}while(0);if(adU==201){var aJU=ajY;var aJS=((aJU+660)&4294967295);var aJR=((aJS)&4294967295);var aJQ=R6;ns(aJR,aJQ,8,1,0)}var aJP=azL;var aJO=((aJP)&4294967295);var aJy=((aJO+176)&4294967295);var aJv=uA[((aJy)>>2)];var aJs=azL;var aJp=((aJs)&4294967295);var aJn=((aJp+180)&4294967295);uA[((aJn)>>2)]=aJv;var aJl=azL;var aJk=((aJl)&4294967295);var aJj=((aJk+8)&4294967295);uA[((aJj)>>2)]=3;var aJi=azL;var aJh=((aJi)&4294967295);var aIZ=((aJh+12)&4294967295);uA[((aIZ)>>2)]=139286;var aIW=azL;var aIT=((aIW)&4294967295);var aIQ=((aIT+184)&4294967295);uA[((aIQ)>>2)]=16793704;var aIO=azL;ajA=aIO;IA=121;var aIM=IA;var aIL=IA;var aIJ=ajA;var aII=((aIJ+708)&4294967295);var aIH=((aII+aIL)&4294967295);var aIv=la[((aIH)>>0)];var aIt=(aIv)&64;var aIr=(aIt)|-127;var aIp=ajA;var aIo=((aIp+708)&4294967295);var aIn=((aIo+aIM)&4294967295);la[((aIn)>>0)]=aIr;var aIm=azL;ajz=aIm;aGm=2;var aIl=aGm;var ajD=(aIl)^-1;adZ=ajD;abO=0;$bb_i472$342:while(1){var aIk=abO;var aIj=abO;var aH9=ajz;var aH7=((aH9+708)&4294967295);var aH5=((aH7+aIj)&4294967295);var aH3=la[((aH5)>>0)];var aH2=adZ;var aH1=(((aH2))&255);var aH0=(aH1)&(aH3);var aHZ=ajz;var aHY=((aHZ+708)&4294967295);var aHX=((aHY+aIk)&4294967295);la[((aHX)>>0)]=aH0;var aHM=abO;var aHK=(((aHM)+1)&4294967295);abO=aHK;var aHI=(((aHK))>>>0)<=255;if(aHI){adU=203;continue $bb_i472$342}else{adU=204;break $bb_i472$342}}var aHG=azL;ai2=aHG;aaS=1;aGs=((rm)&4294967295);var aHF=aaS;var aHE=1<<(aHF);arm=aHE;var aHD=aGs;var aHC=la[((aHD)>>0)];aIK=aHC;var aHB=aIK;var aHA=iB((aHB),8,0)!=0;var aHp=oD((aHA),1,0);C0=aHp;var aHn=aGs;var aHl=((aHn+1)&4294967295);aGs=aHl;if(aHA){adU=205}else{adU=206}$bb_i481$$_ZL13SetLetterBitsP10TranslatoriPKc_exit482$345:do{if(adU==205){while(1){var aHj=aIK;var aHi=oD((aHj),8,0);var aHh=aIK;var aHg=oD((aHh),8,0);var aHf=ai2;var aHe=((aHf+708)&4294967295);var aHc=((aHe+aHg)&4294967295);var aG2=la[((aHc)>>0)];var aG0=arm;var aGY=(((aG0))&255);var aGW=(aGY)|(aG2);var aGV=ai2;var aGU=((aGV+708)&4294967295);var aGT=((aGU+aHi)&4294967295);la[((aGT)>>0)]=aGW;var aGS=aGs;var aGR=la[((aGS)>>0)];aIK=aGR;var aGQ=aIK;var aGL=iB((aGQ),8,0)!=0;var aGK=oD((aGL),1,0);C0=aGK;var aGJ=aGs;var aGI=((aGJ+1)&4294967295);aGs=aGI;var atX=iB((aGK),8,0)!=0;if(atX){adU=205;continue}else{adU=206;break $bb_i481$$_ZL13SetLetterBitsP10TranslatoriPKc_exit482$345}}}}while(0);var aGH=azL;var aGG=((aGH)&4294967295);var aGF=((aGG+24)&4294967295);var aGE=((aGF+60)&4294967295);uA[((aGE)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==207){var aGD=azL;aiw=aGD;aFi=((m2)&4294967295);Q7=((bR)&4294967295);var aGC=aFi;var aEx=(aGC)!=0;if(aEx){adU=208}else{adU=209}$bb1_i488$$bb2_i489$350:do{if(adU==208){var aEu=aiw;var aEr=((aEu+676)&4294967295);var aEo=((aEr)&4294967295);var aEm=aFi;var aEk=aEo;var aEj=aEm;ns(aEk,aEj,16,1,0);var U9=Q7;var aEi=(U9)!=0;if(aEi){adU=209;break $bb1_i488$$bb2_i489$350}else{adU=210;break $bb1_i488$$bb2_i489$350}}}while(0);if(adU==209){var aEh=aiw;var aEg=((aEh+660)&4294967295);var aD0=((aEg)&4294967295);var aDX=Q7;ns(aD0,aDX,8,1,0)}var aDU=azL;var aDQ=((aDU)&4294967295);var aDO=((aDQ+8)&4294967295);uA[((aDO)>>2)]=2;var aDM=azL;var aDL=((aDM)&4294967295);var aDK=((aDL+12)&4294967295);uA[((aDK)>>2)]=262;var aDJ=uA[((((Aa+8)&4294967295))>>2)];var aDI=azL;var aDs=((aDI+696)&4294967295);uA[((aDs)>>2)]=aDJ;var aDp=azL;var aDm=((aDp)&4294967295);var aDj=((aDm+184)&4294967295);uA[((aDj)>>2)]=16805928;var aDh=azL;var aDf=((aDh)&4294967295);var aDe=((aDf+188)&4294967295);uA[((aDe)>>2)]=30;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==211){var aDd=azL;ahV=aDd;var aDc=ahV;abI=aDc;UU=((a5)&4294967295);avP=((i0)&4294967295);var aDb=UU;var aCX=(aDb)!=0;if(aCX){adU=212}else{adU=213}$bb1_i_i$$bb2_i_i$356:do{if(adU==212){var aCT=abI;var aCQ=((aCT+676)&4294967295);var aCN=((aCQ)&4294967295);var aCL=UU;var aCJ=aCN;var aCI=aCL;ns(aCJ,aCI,16,1,0);var al4=avP;var aCH=(al4)!=0;if(aCH){adU=213;break $bb1_i_i$$bb2_i_i$356}else{adU=214;break $bb1_i_i$$bb2_i_i$356}}}while(0);if(adU==213){var aCG=abI;var aCF=((aCG+660)&4294967295);var aCv=((aCF)&4294967295);var aCt=avP;ns(aCv,aCt,8,1,0)}var aCr=ahV;xf(aCr);var aCp=ahV;azs=aCp;aCD=6;al3=((zo)&4294967295);var aCo=aCD;var aCn=1<<(aCo);aoV=aCn;var aCm=al3;var aCl=la[((aCm)>>0)];U8=aCl;var aCk=iB((aCl),8,0)!=0;var aCj=oD((aCk),1,0);ax3=aCj;var aB8=al3;var aB6=((aB8+1)&4294967295);al3=aB6;if(aCk){adU=215}else{adU=216}$bb_i2_i499$$_ZL18Translator_RussianP10Translator_exit$361:do{if(adU==215){while(1){var aB4=U8;var aB2=oD((aB4),8,0);var aB1=U8;var aB0=oD((aB1),8,0);var aBZ=azs;var aBY=((aBZ+708)&4294967295);var aBX=((aBY+aB0)&4294967295);var aBW=la[((aBX)>>0)];var aBL=aoV;var aBJ=(((aBL))&255);var aBH=(aBJ)|(aBW);var aBF=azs;var aBE=((aBF+708)&4294967295);var aBD=((aBE+aB2)&4294967295);la[((aBD)>>0)]=aBH;var aBC=al3;var aBB=la[((aBC)>>0)];U8=aBB;var aBz=U8;var aBy=iB((aBz),8,0)!=0;var aBc=oD((aBy),1,0);ax3=aBc;var aBa=al3;var aA8=((aBa+1)&4294967295);al3=aA8;var aI2=iB((aBc),8,0)!=0;if(aI2){adU=215;continue}else{adU=216;break $bb_i2_i499$$_ZL18Translator_RussianP10Translator_exit$361}}}}while(0);var aA6=ahV;var aA5=((aA6)&4294967295);var aA4=((aA5+24)&4294967295);var aA3=((aA4+20)&4294967295);uA[((aA3)>>2)]=1074;var aA2=ahV;var aA1=((aA2)&4294967295);var aA0=((aA1+24)&4294967295);var aAQ=((aA0+16)&4294967295);uA[((aAQ)>>2)]=1;var aAO=ahV;var aAM=((aAO)&4294967295);var aAK=((aAM+24)&4294967295);var aAJ=((aAK+40)&4294967295);uA[((aAJ)>>2)]=2;var aAI=ahV;var aAH=((aAI)&4294967295);var aAG=((aAH+8)&4294967295);uA[((aAG)>>2)]=5;var aAF=ahV;var aAE=((aAF)&4294967295);var aAx=((aAE+12)&4294967295);uA[((aAx)>>2)]=32;var aAw=ahV;var aAv=((aAw)&4294967295);var aAu=((aAv+184)&4294967295);uA[((aAu)>>2)]=1032;var aAt=ahV;var aAs=((aAt)&4294967295);var aAr=((aAs+188)&4294967295);uA[((aAr)>>2)]=194;var aAq=ahV;var aAp=((aAq)&4294967295);var aAo=((aAp+244)&4294967295);uA[((aAo)>>2)]=1;var awC=ahV;var awz=((awC)&4294967295);var aww=((awz+256)&4294967295);uA[((aww)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==217){var awt=azL;var awr=((awt)&4294967295);var awp=((awr+8)&4294967295);uA[((awp)>>2)]=2;var awo=azL;var awn=((awo)&4294967295);var awm=((awn+12)&4294967295);uA[((awm)>>2)]=22;var awl=azL;var av6=((awl)&4294967295);var av3=((av6+176)&4294967295);var av0=uA[((av3)>>2)];var avW=azL;var avU=((avW)&4294967295);var avS=((avU+180)&4294967295);uA[((avS)>>2)]=av0;var avR=azL;var avQ=((avR)&4294967295);var avO=((avQ+184)&4294967295);uA[((avO)>>2)]=278624;var avN=azL;var avy=((avN)&4294967295);var avv=((avy+188)&4294967295);uA[((avv)>>2)]=512;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==226){var aj3=azL;YZ=aj3;ayf=((mB)&4294967295);Ih=((bs)&4294967295);var aj2=ayf;var aj1=(aj2)!=0;if(aj1){adU=227}else{adU=228}$bb1_i534$$bb2_i535$367:do{if(adU==227){var aj0=YZ;var ajQ=((aj0+676)&4294967295);var ajO=((ajQ)&4294967295);var ajM=ayf;var ajK=ajO;var ajJ=ajM;ns(ajK,ajJ,16,1,0);var Mx=Ih;var ajI=(Mx)!=0;if(ajI){adU=228;break $bb1_i534$$bb2_i535$367}else{adU=229;break $bb1_i534$$bb2_i535$367}}}while(0);if(adU==228){var ajH=YZ;var ajG=((ajH+660)&4294967295);var ajF=((ajG)&4294967295);var ajE=Ih;ns(ajF,ajE,8,1,0)}var ajr=azL;var ajo=((ajr)&4294967295);var ajk=((ajo+176)&4294967295);var ajh=uA[((ajk)>>2)];var ajf=azL;var ajd=((ajf)&4294967295);var ajb=((ajd+180)&4294967295);uA[((ajb)>>2)]=ajh;var ai9=azL;var ai7=((ai9)&4294967295);var ai5=((ai7+8)&4294967295);uA[((ai5)>>2)]=0;var aiT=azL;var aiQ=((aiT)&4294967295);var aiN=((aiQ+12)&4294967295);uA[((aiN)>>2)]=65556;var aiK=azL;var aiI=((aiK)&4294967295);var aiG=((aiI+249)&4294967295);la[((aiG)>>0)]=1;var aiE=azL;var aiC=((aiE+964)&4294967295);uA[((aiC)>>2)]=3456;var aiA=azL;var aiy=((aiA+708)&4294967295);var aim=((aiy)&4294967295);ud(aim,0,256,1,0);var aij=azL;Yu=aij;Qr=0;aul=5;axQ=22;var aig=Qr;var aid=1<<(aig);ahy=aid;var aib=aul;Ro=aib;var ah9=Ro;var ah7=axQ;var ah5=(((ah9))|0)<=(((ah7))|0);if(ah5){adU=230}else{adU=231}$bb_i543$$_ZL18SetLetterBitsRangeP10Translatoriii_exit544$372:do{if(adU==230){while(1){var ah2=Ro;var ah0=Ro;var ahU=Yu;var ahS=((ahU+708)&4294967295);var ahQ=((ahS+ah0)&4294967295);var ahO=la[((ahQ)>>0)];var ahM=ahy;var ahK=(((ahM))&255);var ahI=(ahK)|(ahO);var ahG=Yu;var ahE=((ahG+708)&4294967295);var ahC=((ahE+ah2)&4294967295);la[((ahC)>>0)]=ahI;var ZR=Ro;var ZO=(((ZR)+1)&4294967295);Ro=ZO;var ZL=Ro;var ZI=axQ;var ZG=(((ZL))|0)<=(((ZI))|0);if(ZG){adU=230;continue}else{adU=231;break $bb_i543$$_ZL18SetLetterBitsRangeP10Translatoriii_exit544$372}}}}while(0);var ZE=azL;XX=ZE;Qn=0;atZ=74;axI=115;var ZD=Qn;var ZC=1<<(ZD);ahx=ZC;var ZB=atZ;Q2=ZB;var ZA=Q2;var Zk=axI;var Zh=(((ZA))|0)<=(((Zk))|0);if(Zh){adU=232}else{adU=233}$bb_i551$$_ZL18SetLetterBitsRangeP10Translatoriii_exit552$376:do{if(adU==232){while(1){var Ze=Q2;var Zb=Q2;var Y9=XX;var Y7=((Y9+708)&4294967295);var Y6=((Y7+Zb)&4294967295);var Y5=la[((Y6)>>0)];var Y4=ahx;var Y3=(((Y4))&255);var YN=(Y3)|(Y5);var YK=XX;var YH=((YK+708)&4294967295);var YE=((YH+Ze)&4294967295);la[((YE)>>0)]=YN;var YC=Q2;var YA=(((YC)+1)&4294967295);Q2=YA;var Yz=Q2;var Yy=axI;var Yx=(((Yz))|0)<=(((Yy))|0);if(Yx){adU=232;continue}else{adU=233;break $bb_i551$$_ZL18SetLetterBitsRangeP10Translatoriii_exit552$376}}}}while(0);var Yw=azL;XA=Yw;Qc=1;atB=74;axy=115;var Yg=Qc;var Yd=1<<(Yg);ahj=Yd;var Ya=atB;Q1=Ya;var X7=Q1;var X5=axy;var X3=(((X7))|0)<=(((X5))|0);if(X3){adU=234}else{adU=235}$bb_i559$$_ZL18SetLetterBitsRangeP10Translatoriii_exit560$380:do{if(adU==234){while(1){var X2=Q1;var X1=Q1;var X0=XA;var XZ=((X0+708)&4294967295);var XO=((XZ+X1)&4294967295);var XM=la[((XO)>>0)];var XK=ahj;var XI=(((XK))&255);var XH=(XI)|(XM);var XG=XA;var XF=((XG+708)&4294967295);var XE=((XF+X2)&4294967295);la[((XE)>>0)]=XH;var XD=Q1;var XC=(((XD)+1)&4294967295);Q1=XC;var Xs=Q1;var Xq=axy;var Xo=(((Xs))|0)<=(((Xq))|0);if(Xo){adU=234;continue}else{adU=235;break $bb_i559$$_ZL18SetLetterBitsRangeP10Translatoriii_exit560$380}}}}while(0);var Xm=azL;Xd=Xm;P1=2;ate=26;axk=70;var Xl=P1;var Xk=1<<(Xl);agW=Xk;var Xj=ate;QG=Xj;var Xi=QG;var Xh=axk;var Xg=(((Xi))|0)<=(((Xh))|0);if(Xg){adU=236}else{adU=237}$bb_i567$$_ZL18SetLetterBitsRangeP10Translatoriii_exit568$384:do{if(adU==236){while(1){var W2=QG;var WZ=QG;var WW=Xd;var WT=((WW+708)&4294967295);var WR=((WT+WZ)&4294967295);var WP=la[((WR)>>0)];var WN=agW;var WL=(((WN))&255);var WI=(WL)|(WP);var WG=Xd;var Wt=((WG+708)&4294967295);var Wq=((Wt+W2)&4294967295);la[((Wq)>>0)]=WI;var Wn=QG;var Wk=(((Wn)+1)&4294967295);QG=Wk;var Wi=QG;var Wg=axk;var We=(((Wi))|0)<=(((Wg))|0);if(We){adU=236;continue}else{adU=237;break $bb_i567$$_ZL18SetLetterBitsRangeP10Translatoriii_exit568$384}}}}while(0);var Wc=azL;var V9=((Wc)&4294967295);var V7=((V9+24)&4294967295);var VV=((V7+20)&4294967295);uA[((VV)>>2)]=1;var VS=azL;var VP=((VS+964)&4294967295);var VM=uA[((VP)>>2)];var VK=(((VM)+74)&4294967295);var VI=azL;var VG=((VI)&4294967295);var VE=((VG+276)&4294967295);uA[((VE)>>2)]=VK;var VC=azL;var VA=((VC)&4294967295);var Vt=((VA+184)&4294967295);uA[((Vt)>>2)]=2097152;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==238){var Vr=uA[((((Aa+8)&4294967295))>>2)];var Vp=azL;var Vn=((Vp+696)&4294967295);uA[((Vn)>>2)]=Vr;var Vl=azL;var Vj=((Vl)&4294967295);var Vh=((Vj+8)&4294967295);uA[((Vh)>>2)]=2;var Vf=azL;var Vd=((Vf)&4294967295);var Vb=((Vd+12)&4294967295);uA[((Vb)>>2)]=32;var OM=azL;var OJ=((OM)&4294967295);var OF=((OJ+24)&4294967295);var OC=((OF+16)&4294967295);uA[((OC)>>2)]=19;var OA=azL;var Oy=((OA)&4294967295);var Ox=((Oy+184)&4294967295);uA[((Ox)>>2)]=16864280;var Ow=azL;var Ov=((Ow)&4294967295);var Ou=((Ov+188)&4294967295);uA[((Ou)>>2)]=256;var Og=azL;var Od=((Og)&4294967295);var Oa=((Od+204)&4294967295);uA[((Oa)>>2)]=32;var N7=azL;WD=N7;aJf=114;var N5=aJf;var N3=aJf;var N2=WD;var N1=((N2+708)&4294967295);var N0=((N1+N3)&4294967295);var NZ=la[((N0)>>0)];var NI=(NZ)&64;var NF=(NI)|-127;var NC=WD;var Nz=((NC+708)&4294967295);var Nx=((Nz+N5)&4294967295);la[((Nx)>>0)]=NF;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==239){var Nv=azL;V4=Nv;axp=((mK)&4294967295);F7=((bz)&4294967295);var Nu=axp;var Nt=(Nu)!=0;if(Nt){adU=240}else{adU=241}$bb1_i592$$bb2_i593$390:do{if(adU==240){var Ns=V4;var Nr=((Ns+676)&4294967295);var Nb=((Nr)&4294967295);var M8=axp;var M5=Nb;var M2=M8;ns(M5,M2,16,1,0);var J6=F7;var M0=(J6)!=0;if(M0){adU=241;break $bb1_i592$$bb2_i593$390}else{adU=242;break $bb1_i592$$bb2_i593$390}}}while(0);if(adU==241){var MY=V4;var MW=((MY+660)&4294967295);var MV=((MW)&4294967295);var MU=F7;ns(MV,MU,8,1,0)}var MT=azL;var MK=((MT)&4294967295);var MI=((MK+8)&4294967295);uA[((MI)>>2)]=2;var MG=azL;var ME=((MG)&4294967295);var MD=((ME+12)&4294967295);uA[((MD)>>2)]=278;var MC=azL;Vy=MC;aIh=121;var MB=aIh;var MA=aIh;var Mz=Vy;var My=((Mz+708)&4294967295);var Mp=((My+MA)&4294967295);var Mn=la[((Mp)>>0)];var Ml=(Mn)&64;var Mj=(Ml)|-127;var Mi=Vy;var Mh=((Mi+708)&4294967295);var Mg=((Mh+MB)&4294967295);la[((Mg)>>0)]=Mj;var Mf=azL;var Me=((Mf)&4294967295);var Md=((Me+184)&4294967295);uA[((Md)>>2)]=32872;var L4=azL;var L1=((L4)&4294967295);var LY=((L1+220)&4294967295);uA[((LY)>>2)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==243){var LV=azL;Vw=LV;axc=((mF)&4294967295);FL=((bx)&4294967295);var LT=axc;var LR=(LT)!=0;if(LR){adU=244}else{adU=245}$bb1_i602$$bb2_i603$396:do{if(adU==244){var LP=Vw;var LN=((LP+676)&4294967295);var LL=((LN)&4294967295);var LJ=axc;var LA=LL;var Lx=LJ;ns(LA,Lx,16,1,0);var Dd=FL;var Lu=(Dd)!=0;if(Lu){adU=245;break $bb1_i602$$bb2_i603$396}else{adU=246;break $bb1_i602$$bb2_i603$396}}}while(0);if(adU==245){var Lr=Vw;var Lo=((Lr+660)&4294967295);var Lm=((Lo)&4294967295);var Lk=FL;ns(Lm,Lk,8,1,0)}var Li=azL;var Lg=((Li)&4294967295);var Le=((Lg+8)&4294967295);uA[((Le)>>2)]=0;var K3=azL;O1=K3;aFF=121;var K0=aFF;var KX=aFF;var KU=O1;var KR=((KU+708)&4294967295);var KP=((KR+KX)&4294967295);var KN=la[((KP)>>0)];var KL=(KN)&64;var KJ=(KL)|-127;var KH=O1;var KF=((KH+708)&4294967295);var KD=((KF+K0)&4294967295);la[((KD)>>0)]=KJ;var KB=azL;var Kz=((KB)&4294967295);var Kx=((Kz+184)&4294967295);uA[((Kx)>>2)]=6408;var Kv=azL;var Kt=((Kv)&4294967295);var Kr=((Kt+220)&4294967295);uA[((Kr)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==247){var Ko=azL;O0=Ko;aoz=((mE)&4294967295);AH=((bw)&4294967295);var Km=O0;var aAg=((Km+676)&4294967295);var aAf=((aAg)&4294967295);var aAe=aoz;var aAd=aAf;var aAc=aAe;ns(aAd,aAc,16,1,0);var CZ=AH;var aAb=(CZ)!=0;if(aAb){adU=248}else{adU=249}if(adU==248){var aAa=O0;var az9=((aAa+660)&4294967295);var az8=((az9)&4294967295);var az7=AH;ns(az8,az7,8,1,0)}var az5=azL;var az4=((az5)&4294967295);var az3=((az4+176)&4294967295);var az2=uA[((az3)>>2)];var az1=azL;var az0=((az1)&4294967295);var azZ=((az0+180)&4294967295);uA[((azZ)>>2)]=az2;var azY=azL;var azX=((azY)&4294967295);var azW=((azX+4)&4294967295);uA[((azW)>>2)]=1;var azS=azL;var azR=((azS)&4294967295);var azQ=((azR+8)&4294967295);uA[((azQ)>>2)]=2;var azP=azL;var azN=((azP)&4294967295);var azM=((azN+12)&4294967295);uA[((azM)>>2)]=22;var azK=azL;var azJ=((azK)&4294967295);var azI=((azJ+184)&4294967295);uA[((azI)>>2)]=1248;var azH=azL;var azF=((azH)&4294967295);var azE=((azF+192)&4294967295);uA[((azE)>>2)]=1227133544;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==264){var aqr=azL;arM=aqr;A2=((mk)&4294967295);ab0=((bk)&4294967295);var aqq=A2;var aqp=(aqq)!=0;if(aqp){adU=265}else{adU=266}$bb1_i400$$bb2_i401$406:do{if(adU==265){var aqo=arM;var aqn=((aqo+676)&4294967295);var aqm=((aqn)&4294967295);var aqc=A2;var aqa=aqm;var ap8=aqc;ns(aqa,ap8,16,1,0);var ahl=ab0;var ap6=(ahl)!=0;if(ap6){adU=266;break $bb1_i400$$bb2_i401$406}else{adU=267;break $bb1_i400$$bb2_i401$406}}}while(0);if(adU==266){var ap5=arM;var ap4=((ap5+660)&4294967295);var ap3=((ap4)&4294967295);var ap2=ab0;ns(ap3,ap2,8,1,0)}var ap1=uA[((((Aa+36)&4294967295))>>2)];var ap0=azL;var apR=((ap0+696)&4294967295);uA[((apR)>>2)]=ap1;var apP=azL;var apN=((apP)&4294967295);var apK=((apN+8)&4294967295);uA[((apK)>>2)]=7;var apI=azL;var apH=((apI)&4294967295);var apG=((apH+12)&4294967295);uA[((apG)>>2)]=32;var apF=azL;var apE=((apF)&4294967295);var apD=((apE+184)&4294967295);uA[((apD)>>2)]=2114824;var aps=azL;var apq=((aps)&4294967295);var apo=((apq+248)&4294967295);la[((apo)>>0)]=2;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==268){var apm=azL;var apl=((apm+964)&4294967295);uA[((apl)>>2)]=1536;var apk=azL;var apj=((apk)&4294967295);var api=((apj+24)&4294967295);var aph=((api+20)&4294967295);uA[((aph)>>2)]=1;var apg=azL;var ao8=((apg)&4294967295);var ao6=((ao8+184)&4294967295);uA[((ao6)>>2)]=16;var ao4=azL;var ao2=((ao4)&4294967295);var ao1=((ao2+192)&4294967295);uA[((ao1)>>2)]=21160;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==269){var ao0=azL;atU=ao0;Bs=((lX)&4294967295);adb=((a1)&4294967295);var aoZ=Bs;var aoY=(aoZ)!=0;if(aoY){adU=270}else{adU=271}$bb1_i374$$bb2_i375$413:do{if(adU==270){var aoX=atU;var aoW=((aoX+676)&4294967295);var aoN=((aoW)&4294967295);var aoL=Bs;var aoJ=aoN;var aoH=aoL;ns(aoJ,aoH,16,1,0);var ahY=adb;var aoG=(ahY)!=0;if(aoG){adU=271;break $bb1_i374$$bb2_i375$413}else{adU=272;break $bb1_i374$$bb2_i375$413}}}while(0);if(adU==271){var aoF=atU;var aoE=((aoF+660)&4294967295);var aoD=((aoE)&4294967295);var aoC=adb;ns(aoD,aoC,8,1,0)}var aoB=azL;var aor=((aoB)&4294967295);var aop=((aor+176)&4294967295);var aon=uA[((aop)>>2)];var aol=azL;var aok=((aol)&4294967295);var aoj=((aok+180)&4294967295);uA[((aoj)>>2)]=aon;var aoi=azL;var aoh=((aoi)&4294967295);var aog=((aoh+8)&4294967295);uA[((aog)>>2)]=0;var aof=azL;var aoc=((aof)&4294967295);var aob=((aoc)&4294967295);uA[((aob)>>2)]=33;var aoa=azL;var an9=((aoa+968)&4294967295);var an8=((an9+28)&4294967295);uA[((an8)>>2)]=((dQ)&4294967295);var an7=azL;var an6=((an7+968)&4294967295);var an5=((an6+28)&4294967295);var an4=uA[((an5)>>2)];var an3=azL;var afX=((an3+968)&4294967295);var afV=((afX)&4294967295);uA[((afV)>>2)]=an4;var afT=azL;var afR=((afT)&4294967295);var afQ=((afR+224)&4294967295);uA[((afQ)>>2)]=1;var afP=azL;var afO=((afP)&4294967295);var afN=((afO+16)&4294967295);uA[((afN)>>2)]=2;var afM=azL;var afL=((afM)&4294967295);var afj=((afL+184)&4294967295);uA[((afj)>>2)]=12615688;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==273){var afh=azL;var aff=((afh)&4294967295);var afd=((aff+8)&4294967295);uA[((afd)>>2)]=0;var afc=azL;var afb=((afc)&4294967295);var afa=((afb+184)&4294967295);uA[((afa)>>2)]=2098528;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==274){var ae9=azL;auG=ae9;Ct=((kQ)&4294967295);aeD=((O)&4294967295);var ae8=auG;var ae7=((ae8+676)&4294967295);var aeE=((ae7)&4294967295);var aeB=Ct;var aez=aeE;var aex=aeB;ns(aez,aex,16,1,0);var ajC=aeD;var aew=(ajC)!=0;if(aew){adU=275}else{adU=276}if(adU==275){var aev=auG;var aeu=((aev+660)&4294967295);var aet=((aeu)&4294967295);var aes=aeD;ns(aet,aes,8,1,0)}var aer=azL;var ad9=((aer)&4294967295);var ad7=((ad9+8)&4294967295);uA[((ad7)>>2)]=3;var ad5=azL;var ad3=((ad5)&4294967295);var ad2=((ad3+12)&4294967295);uA[((ad2)>>2)]=2;var ad1=azL;var ad0=((ad1)&4294967295);var adY=((ad0+4)&4294967295);uA[((adY)>>2)]=0;var adX=azL;var adW=((adX)&4294967295);var adB=((adW+224)&4294967295);uA[((adB)>>2)]=1;var ady=azL;var adw=((ady)&4294967295);var adu=((adw+176)&4294967295);var adt=uA[((adu)>>2)];var ads=azL;var adr=((ads)&4294967295);var adq=((adr+180)&4294967295);uA[((adq)>>2)]=adt;var adp=azL;var ado=((adp)&4294967295);var ac4=((ado+250)&4294967295);la[((ac4)>>0)]=1;var ac2=azL;var ac0=((ac2)&4294967295);var acY=((ac0+251)&4294967295);la[((acY)>>0)]=1;var acX=azL;var acW=((acX)&4294967295);var acV=((acW)&4294967295);uA[((acV)>>2)]=33;var acU=axo;var acT=(((acU))|0)==31336;if(!(acT)){adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}var acS=azL;var acA=((acS)&4294967295);var acy=((acA+252)&4294967295);la[((acy)>>0)]=1;var acw=azL;var acu=((acw)&4294967295);var act=((acu+260)&4294967295);uA[((act)>>2)]=1;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}else{if(adU==152){var LG=azL;awO=LG;C8=((uc)&4294967295);agH=0;var LF=C8;var LE=(LF)!=0;if(LE){adU=153}else{adU=155}$bb1_i313$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit315$425:do{if(adU==153){var LD=awO;var LC=((LD+676)&4294967295);var LB=((LC)&4294967295);var Lz=C8;var Lw=LB;var Lt=Lz;ns(Lw,Lt,16,1,0);var akV=agH;var Lq=(akV)!=0;if(!(Lq)){adU=155;break $bb1_i313$$_Z15SetupTranslatorP10TranslatorPKsPKh_exit315$425}var La=awO;var K9=((La+660)&4294967295);var K7=((K9)&4294967295);var K6=agH;ns(K7,K6,8,1,0)}}while(0);var K5=azL;var K4=((K5)&4294967295);var K2=((K4+8)&4294967295);uA[((K2)>>2)]=2;var KZ=azL;var KW=((KZ)&4294967295);var KT=((KW+4)&4294967295);uA[((KT)>>2)]=524;var DL=azL;var DK=((DL+704)&4294967295);uA[((DK)>>2)]=((xN)&4294967295);var DJ=azL;var DI=((DJ)&4294967295);var DH=((DI+24)&4294967295);var DG=((DH+52)&4294967295);uA[((DG)>>2)]=2;var DF=azL;awk=DF;Vv=121;var DE=Vv;var DD=Vv;var DC=awk;var Dy=((DC+708)&4294967295);var Dx=((Dy+DD)&4294967295);var Dw=la[((Dx)>>0)];var Dv=(Dw)&64;var Du=(Dv)|-127;var Dt=awk;var Ds=((Dt+708)&4294967295);var Dr=((Ds+DE)&4294967295);la[((Dr)>>0)]=Du;var Dq=azL;var Dp=((Dq)&4294967295);var Dn=((Dp+272)&4294967295);uA[((Dn)>>2)]=368;adU=279;break $bb82$$bb3$$bb4$$bb5$$bb6$$bb7$$bb31$$bb1_i152$$bb1_i506$$bb8$$bb9$$bb10$$bb11$$bb1_i91$$bb12$$bb16$$bb25$$bb23$$bb24$$bb1_i168$$bb27$$bb1_i188$$bb35$$bb36$$bb37$$bb38$$bb39$$bb40$$bb42$$bb1_i584$$bb43$$bb44$$bb45$$bb46$$bb47$$bb48$$bb49$$bb50$$bb51$$bb52$$bb53$$bb54$$bb55$$bb59$$bb60$$bb61$$bb62$$bb1_i612$$bb75$$bb76$$bb77$$bb78$$bb1_i349$$bb41$51}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}while(0);if(adU==98){var Jw=azL;aHW=Jw;V5=((qi)&4294967295);azu=((gn)&4294967295);var Ju=aHW;var Jq=((Ju+676)&4294967295);var Jn=((Jq)&4294967295);var Jk=V5;var Jh=Jn;var I7=Jk;ns(Jh,I7,16,1,0);var aAZ=azu;var I6=(aAZ)!=0;if(I6){adU=99}else{adU=100}if(adU==99){var I4=aHW;var I2=((I4+660)&4294967295);var I0=((I2)&4294967295);var IX=azu;ns(I0,IX,8,1,0)}var IU=azL;var IR=((IU)&4294967295);var IO=((IR+8)&4294967295);uA[((IO)>>2)]=0;var IL=azL;var Iy=((IL)&4294967295);var Ix=((Iy+12)&4294967295);uA[((Ix)>>2)]=86;var Iv=azL;var It=((Iv)&4294967295);var Ir=((It+24)&4294967295);var Ip=((Ir+56)&4294967295);uA[((Ip)>>2)]=1;var Im=azL;var Ij=((Im)&4294967295);var If=((Ij+240)&4294967295);uA[((If)>>2)]=130;var Ic=azL;var H3=((Ic)&4294967295);var H2=((H3+184)&4294967295);uA[((H2)>>2)]=4104;var H0=azL;aHz=H0;aqG=121;var HY=aqG;var HW=aqG;var HU=aHz;var HR=((HU+708)&4294967295);var HO=((HR+HW)&4294967295);var HL=la[((HO)>>0)];var HI=(HL)&64;var Hy=(HI)|-127;var Hw=aHz;var Hv=((Hw+708)&4294967295);var Hu=((Hv+HY)&4294967295);la[((Hu)>>0)]=Hy;var Ht=azL;var Hs=((Ht)&4294967295);var Hp=((Hs+249)&4294967295);la[((Hp)>>0)]=1;var Hn=azL;var Hl=((Hn)&4294967295);var Hj=((Hl+228)&4294967295);uA[((Hj)>>2)]=3}var acm=azL;var ab3=((acm+280)&4294967295);var ab1=axo;uA[((ab3)>>2)]=ab1;var abY=azL;var abW=((abY)&4294967295);var abU=((abW+184)&4294967295);var abT=uA[((abU)>>2)];var abS=(abT)&8;var abR=(((abS))|0)!=0;if(abR){adU=280}else{adU=281}if(adU==280){var abQ=azL;var abP=((abQ)&4294967295);var abF=((abP+204)&4294967295);uA[((abF)>>2)]=46;var abD=azL;var abB=((abD)&4294967295);var aby=((abB+208)&4294967295);uA[((aby)>>2)]=44}var abx=azL;var abw=((abx)&4294967295);var abv=((abw+184)&4294967295);var abu=uA[((abv)>>2)];var abt=(abu)&4;var abs=(((abt))|0)!=0;if(abs){adU=282}else{adU=283}if(adU==282){var abr=azL;var abq=((abr)&4294967295);var abo=((abq+204)&4294967295);uA[((abo)>>2)]=0}var abn=azL;aBv=abn;var abm=aBv;Tv=abm;var amC=Tv;return amC;return null}function w0(A5,BJ){var Bh;var A4;var BB;var AT;var AI;var Bg;var Bq;var Bo;var Bj;var Bi;var BC;A4=A5;BB=BJ;Bq=0;var BX=BB;var BW=((BX+4)&4294967295);var BV=uA[((BW)>>2)];Bj=BV;AI=0;$bb$2:while(1){var BU=BB;var BT=AI;var BS=((BU+4*BT)&4294967295);var BR=uA[((BS)>>2)];var BQ=(((BR))|0)==-1;if(BQ){Bh=2}else{Bh=4}$bb1$$bb3$4:do{if(Bh==2){var BP=BB;var BO=AI;var Bv=((BP+4*BO)&4294967295);uA[((Bv)>>2)]=8000;var Bu=AI;var Bt=(((Bu))|0)>0;if(!(Bt)){Bh=4;break $bb1$$bb3$4}var Bs=AI;var Br=(((Bs)+1)&4294967295);var Bp=AI;var Bn=(((Bp)-1)&4294967295);var Bm=BB;var Bl=((Bm+4*Bn)&4294967295);var Bk=uA[((Bl)>>2)];var Bf=BB;var Be=((Bf+4*Br)&4294967295);uA[((Be)>>2)]=Bk}}while(0);var Bd=BB;var Bc=AI;var Bb=((Bd+4*Bc)&4294967295);var Ba=uA[((Bb)>>2)];var A9=(((((Ba))|0)/8)|0);Bo=A9;var A8=AI;var A7=(((A8)+1)&4294967295);var A6=BB;var A3=((A6+4*A7)&4294967295);var A2=uA[((A3)>>2)];Bi=A2;var A1=Bo;var A0=Bq;var AZ=(((A1)-(A0))&4294967295);var AY=(((AZ))|0)>0;if(AY){Bh=5}else{Bh=9}$bb4$$bb9$8:do{if(Bh==5){var AX=Bi;var AW=Bj;var AV=(((AX)-(AW))&4294967295);var AU=(((AV))|0);var AS=Bo;var AR=Bq;var AQ=(((AS)-(AR))&4294967295);var AP=(((AQ))|0);var AO=(AU)/(AP);BC=AO;var AN=Bq;AT=AN;var AM=AT;var AL=Bo;var AK=(((AM))|0)<(((AL))|0);if(!(AK)){Bh=9;break $bb4$$bb9$8}while(1){var AJ=AT;var AH=Bq;var i=(((AJ)-(AH))&4294967295);var e=(((i))|0);var B4=BC;var B3=(e)*(B4);var B2=(((B3))|0);var B1=Bj;var B0=(((B2)+(B1))&4294967295);Bg=B0;var BZ=(((B0))|0)>255;if(BZ){Bh=7}else{Bh=8}if(Bh==7){Bg=255}var BY=AT;var BN=Bg;var BM=(((BN))&255);var BL=A4;var BK=((BL+344)&4294967295);var BI=((BK+BY)&4294967295);la[((BI)>>0)]=BM;var BH=AT;var BG=(((BH)+1)&4294967295);AT=BG;var BF=AT;var BE=Bo;var BD=(((BF))|0)<(((BE))|0);if(BD){Bh=6;continue}else{Bh=9;break $bb4$$bb9$8}}}}while(0);var BA=Bo;Bq=BA;var Bz=Bi;Bj=Bz;var By=AI;var Bx=(((By)+2)&4294967295);AI=Bx;var Bw=(((Bx))|0)<=11;if(Bw){Bh=1;continue $bb$2}else{Bh=10;break $bb$2}}return;return}function tF(){var AH;var AI;var i;i=mm;var e=i;AI=e;var AJ=AI;return AJ;return null}function nD(A7,A6){var AT;var A8;var AQ;var AU;var A5;var AH;var AO;var Ba;var A9;A8=A7;AQ=A6;var A4=A8;var A3=A4;var A2=uA[((A3)>>2)];Ba=A2;var A1=AQ;var A0=A1;var AZ=uA[((A0)>>2)];A9=AZ;var AY=A9;var AX=((AY+16)&4294967295);var AW=uA[((AX)>>2)];var AS=Ba;var AR=((AS+16)&4294967295);var AP=uA[((AR)>>2)];var AN=(((AW)-(AP))&4294967295);AO=AN;var AM=AO;var AL=(((AM))|0)!=0;var AK=oD((AL),1,0);AH=AK;var AJ=AH;var AV=iB((AJ),8,0)!=0;if(AV){AT=1}else{AT=2}if(AT==1){var AI=AO;A5=AI}else{if(AT==2){var i=A9;var e=((i)&4294967295);var Bh=uA[((e)>>2)];var Bg=Ba;var Bf=((Bg)&4294967295);var Be=uA[((Bf)>>2)];var Bd=pt(Be,Bh);A5=Bd}}var Bc=A5;AU=Bc;var Bb=AU;return Bb;return null}function wT(Bq,Bp){var A2;var Br;var AV;var A3;var AL;var Bo;var AO;var AS;var Bt;var Bs;Br=Bq;AV=Bp;var Bn=Br;var Bm=Bn;var Bl=uA[((Bm)>>2)];Bt=Bl;var Bk=AV;var Bj=Bk;var Bi=uA[((Bj)>>2)];Bs=Bi;var Bg=Bs;var Be=((Bg+4)&4294967295);var Bc=uA[((Be)>>2)];var AZ=((Bc+1)&4294967295);var AX=Bt;var AU=((AX+4)&4294967295);var AR=uA[((AU)>>2)];var AP=((AR+1)&4294967295);var AM=pt(AP,AZ);AS=AM;var AK=AS;var AI=(((AK))|0)!=0;var AH=oD((AI),1,0);AO=AH;var i=AO;var A4=iB((i),8,0)!=0;if(A4){A2=1}else{A2=2}if(A2==1){var e=AS;Bo=e}else{if(A2==2){var BD=Bt;var BC=((BD+4)&4294967295);var BB=uA[((BC)>>2)];var BA=((BB)&4294967295);var Bz=la[((BA)>>0)];var By=iB((Bz),8,0);var Bx=Bs;var Bw=((Bx+4)&4294967295);var Bv=uA[((Bw)>>2)];var Bh=((Bv)&4294967295);var Bf=la[((Bh)>>0)];var Bd=iB((Bf),8,0);var Bb=(((By)-(Bd))&4294967295);AS=Bb;var Ba=AS;var A9=(((Ba))|0)!=0;var A8=oD((A9),1,0);AL=A8;var A7=AL;var AJ=iB((A7),8,0)!=0;if(AJ){A2=3}else{A2=4}if(A2==3){var A6=AS;Bo=A6}else{if(A2==4){var A5=Bs;var A1=((A5)&4294967295);var A0=uA[((A1)>>2)];var AY=Bt;var AW=((AY)&4294967295);var AT=uA[((AW)>>2)];var AQ=pt(AT,A0);Bo=AQ}}}}var AN=Bo;A3=AN;var Bu=A3;return Bu;return null}function my(AS,A6){var AT;var AU=null;var AR;var AX;var AN;AR=AS;AX=A6;AN=0;var A5=AX;AU=-1;while(1){var A4=AU==-1?A5:(AY);var A3=AN;var A2=((A4+4*A3)&4294967295);uA[((A2)>>2)]=-1;var A1=AN;var A0=(((A1)+1)&4294967295);AN=A0;var AZ=(((A0))|0)<=11;var AY=AX;if(AZ){AU=1;AT=1;continue}else{AU=1;AT=2;break}}var AW=((AY+36)&4294967295);var AV=AX;var AQ=((AV+32)&4294967295);var AP=AX;var AO=((AP+28)&4294967295);var AM=AX;var AL=((AM+24)&4294967295);var AK=AX;var AJ=((AK+20)&4294967295);var AI=AX;var AH=((AI+16)&4294967295);var i=AX;var e=((i+12)&4294967295);var Be=AX;var Bd=((Be+8)&4294967295);var Bc=AX;var Bb=((Bc+4)&4294967295);var Ba=AX;var A9=((Ba)&4294967295);var A8=AR;var A7=lE(A8,((nX)&4294967295),A9,Bb,Bd,e,AH,AJ,AL,AO,AQ,AW);return;return}function pN(AI,AT,A0){var AW;var AV;var AZ;var Bc;var AX;var Be;var AK;var Bf;var Bb;var Bg;var AH;var i;AV=AI;AZ=AT;Bc=A0;var Ba=AV;var A9=AZ;var A8=Bc;var A7=r0(Ba,A9,A8);var A6=(A7)==0;var A5=oD((A6),1,0);Bg=A5;var A3=Bg;var AY=iB((A3),8,0)!=0;if(AY){AW=1}else{AW=2}if(AW==1){Bb=0}else{if(AW==2){var A2=AV;var A1=wg(A2);AH=A1;while(1){var AQ=AH;var AP=(((AQ)-1)&4294967295);AH=AP;var AO=(((AP))|0)<=0;if(AO){AW=6;break}var AN=AV;var AM=AH;var AL=((AN+AM)&4294967295);var AJ=la[((AL)>>0)];var e=iB((AJ),8,0);var Bq=xE(e);var Bp=(((Bq))|0)==0;if(Bp){AW=6;break}AK=1;Bf=1;var AU=AV;var AS=AH;var AR=((AU+AS)&4294967295);la[((AR)>>0)]=0;AW=4;continue}AK=0;Bf=0;var Bo=AV;var Bn=nr(Bo,((vI)&4294967295));i=Bn;var Bm=i;var Bl=(Bm)!=0;var Bk=oD((Bl),1,0);Be=Bk;var Bj=iB((Bk),8,0)!=0;if(Bj){AW=7}else{AW=8}if(AW==7){var Bi=i;la[((Bi)>>0)]=0}var Bh=AV;Bb=Bh}}var A4=Bb;AX=A4;var Bd=AX;return Bd;return null}function e8(E9){var By=vp;vp+=1012;n1(By,0,1012);var EI;var Ex=null;var CI;var Df;var El;var CZ;var Bb;var DC;var BR;var B7;var BY;var EY;var Fa;var CY;var CN;var BO=By;var DX=By+120;var Fn=By+200;var Bx=By+280;var CH=By+360;var DV;var CO;var BG;var CL;var Ea;var DN=By+660;var A4=By+664;var Cl=By+668;var AM;var B3;var BW;var CX;var BX;var CM=By+672;var EN;var C0;var Dd;var De;var EK;var Bj;var AL;var Cm=By+760;var A3;var Dq;EN=E9;var CW=EN;var CV=e4(CW);A3=CV;var CU=A3;var CT=(CU)==0;var CS=oD((CT),1,0);De=CS;var CR=De;var EJ=iB((CR),8,0)!=0;if(EJ){EI=41}else{EI=1}if(EI==1){var CQ=A3;var EH=Ah(CQ);Dq=EH;var EG=Dq;var EF=(EG)!=0;var EE=oD((EF),1,0);Dd=EE;var ED=Dd;var Ba=iB((ED),8,0)==0;var EC=uA[((uj)>>2)];var EB=(((EC))|0)>147;var CJ=(Ba)|(EB);if(CJ){EI=40}else{EI=2}$bb12$$bb2_lr_ph$4:do{if(EI==2){var EA=((Cm)&4294967295);var Ez=((Cm)&4294967295);var Ey=((CM+16)&4294967295);var Ew=((Cm)&4294967295);var Ev=((Cm)&4294967295);var Eu=((Cm)&4294967295);var Et=((DX)&4294967295);var Es=((Fn)&4294967295);var Er=((BO)&4294967295);var Eq=((BO)&4294967295);var Ep=((BO+4)&4294967295);var Eo=((DX)&4294967295);var En=((BO)&4294967295);var Ek=((Bx)&4294967295);var Ej=((BO+8)&4294967295);var Ei=((Bx)&4294967295);var Eh=((Bx)&4294967295);var Eg=((Bx)&4294967295);var Ef=((BO)&4294967295);var Ee=((BO+6)&4294967295);var Ed=((Fn)&4294967295);var Ec=((BO)&4294967295);var Eb=((BO+8)&4294967295);var D9=((Fn)&4294967295);var D8=((DX)&4294967295);var D7=((CH)&4294967295);var D6=((DX)&4294967295);var D5=((DX)&4294967295);var D4=((CM+44)&4294967295);$bb2$6:while(1){var D3=Dq;var D2=((D3+11)&4294967295);var D1=((D2)&4294967295);var D0=EN;var DZ=qs(EA,((fX)&4294967295),D0,47,D1);B3=Ez;var DY=B3;var DW=kB(DY,CM);var DU=(((DW))|0)!=0;var DT=oD((DU),1,0);BX=DT;var Dr=iB((DT),8,0)!=0;if(Dr){EI=4}else{EI=5}$bb5_thread$$bb1_i$8:do{if(EI==4){CX=0;BW=0;AL=0}else{if(EI==5){var DS=uA[((Ey)>>2)];var DR=(DS)&61440;var DQ=(((DR))|0)==16384;if(DQ){EI=6}else{EI=7}$_Z13GetFileLengthPKc_exit_thread7$$_Z13GetFileLengthPKc_exit$11:do{if(EI==6){CX=-2;BW=-2;AL=-2;EI=8;break $_Z13GetFileLengthPKc_exit_thread7$$_Z13GetFileLengthPKc_exit$11}else{if(EI==7){var DP=xk[((D4)>>2)];CX=DP;BW=DP;AL=DP;var DO=(((DP))|0)!=-2;if(DO){Ex=7;EI=12;break $_Z13GetFileLengthPKc_exit_thread7$$_Z13GetFileLengthPKc_exit$11}else{Ex=7;EI=8;break $_Z13GetFileLengthPKc_exit_thread7$$_Z13GetFileLengthPKc_exit$11}}}}while(0);if(EI==8){var DM=Dq;var DL=((DM+11)&4294967295);var DK=((DL)&4294967295);var DJ=la[((DK)>>0)];var DI=iB((DJ),8,0)==46;if(DI){EI=11}else{EI=9}if(EI==11){var AK=AL;Ex=11}else{if(EI==9){e8(Ew);EI=10;break $bb5_thread$$bb1_i$8}}}var Dy=Ex==11?AK:(DP);var Dx=(((Dy))|0)>0;if(!(Dx)){EI=10;break $bb5_thread$$bb1_i$8}var Dw=uE(Ev,((nP)&4294967295));EK=Dw;var Dv=EK;var Du=(Dv)==0;var Dt=oD((Du),1,0);C0=Dt;var Ds=C0;var Da=iB((Ds),8,0)!=0;if(Da){EI=10;break $bb5_thread$$bb1_i$8}var Dp=Dq;var Do=((Dp+11)&4294967295);var Dn=((Do)&4294967295);var Dm=uA[((yK)>>2)];var Dl=((Eu+Dm)&4294967295);var Dk=EK;B7=Dk;BY=Dl;EY=Dn;CO=0;BG=0;uA[((Cl)>>2)]=3;la[((Et)>>0)]=0;la[((Es)>>0)]=0;uA[((A4)>>2)]=0;var Dj=B7;var Di=pN(Er,120,Dj);var Dh=(Di)!=0;var Dg=oD((Dh),1,0);CN=Dg;if(Dh){EI=15}else{EI=27}$bb_i3$$bb14_i$22:do{if(EI==15){$bb_i3$23:while(1){var Dc=l4(Eq,((b7)&4294967295),4);var Db=(((Dc))|0)==0;if(Db){EI=16}else{EI=20}$bb1_i4$$bb5_i$25:do{if(EI==16){CL=Ep;var C9=CL;var C8=la[((C9)>>0)];var C7=iB((C8),8,0);var C6=xE(C7);var C5=(((C6))|0)!=0;if(C5){EI=17}else{EI=18}$bb2_i5$$bb4_i$27:do{if(EI==17){while(1){var C4=CL;var C3=((C4+1)&4294967295);CL=C3;var C2=CL;var CG=la[((C2)>>0)];var CF=iB((CG),8,0);var CE=xE(CF);var CD=(((CE))|0)!=0;if(CD){EI=17;continue}else{EI=18;break $bb2_i5$$bb4_i$27}}}}while(0);var CC=CL;Bb=Eo;DC=CC;BR=80;var CB=BR;var CA=Bb;var Cz=DC;var Cy=xT(CA,Cz,CB);var Cx=BR;var Cw=(((Cx)-1)&4294967295);var Cv=Bb;var Cu=((Cv+Cw)&4294967295);la[((Cu)>>0)]=0}else{if(EI==20){var Cp=l4(En,((lg)&4294967295),8);var Co=(((Cp))|0)==0;if(Co){EI=21}else{EI=23}if(EI==21){uA[((DN)>>2)]=5;la[((Ek)>>0)]=0;var Cn=lE(Ej,((tl)&4294967295),Ei,DN);var Ck=wg(Eh);var Cj=(((Ck)+2)&4294967295);DV=Cj;var Ci=CO;var Ch=((299-(Ci))&4294967295);var Cg=DV;var Cf=(((Ch))>>>0)>(((Cg))>>>0);if(!(Cf)){EI=19;break $bb1_i4$$bb5_i$25}var Ce=CO;var Cd=uA[((DN)>>2)];var Cc=(((Cd))&255);var Cb=((CH+Ce)&4294967295);la[((Cb)>>0)]=Cc;var Ca=CO;var B9=(((Ca)+1)&4294967295);var B8=((CH+B9)&4294967295);var B6=oJ(B8,Eg);var B5=CO;var B4=DV;var B2=(((B4)+(B5))&4294967295);CO=B2;var B1=BG;var B0=(((B1)+1)&4294967295);BG=B0}else{if(EI==23){var BZ=l4(Ef,((m)&4294967295),6);var BV=(((BZ))|0)==0;if(BV){EI=24}else{EI=25}if(EI==24){var BU=lE(Ee,((tl)&4294967295),Ed,A4)}else{if(EI==25){var BT=l4(Ec,((yk)&4294967295),8);var BS=(((BT))|0)==0;if(!(BS)){EI=19;break $bb1_i4$$bb5_i$25}var BQ=lE(Eb,((K)&4294967295),Cl)}}}}}}}while(0);var Ct=B7;var Cs=pN(Er,120,Ct);var Cr=(Cs)!=0;var Cq=oD((Cr),1,0);CN=Cq;var Em=iB((Cq),8,0)!=0;if(Em){EI=15;continue $bb_i3$23}else{EI=27;break $bb_i3$$bb14_i$22}}}}while(0);var BP=CO;var BN=((CH+BP)&4294967295);la[((BN)>>0)]=0;var BM=CO;var BL=(((BM)+1)&4294967295);CO=BL;CI=((b6)&4294967295);Df=D9;while(1){var BA=CI;var Bz=((BA)&4294967295);var Bw=uA[((Bz)>>2)];var Bv=(Bw)!=0;var Bu=CI;if(!(Bv)){EI=32;break}var BK=((Bu)&4294967295);var BJ=uA[((BK)>>2)];var BI=Df;var BH=pt(BI,BJ);var BF=(((BH))|0)==0;var BE=CI;if(BF){EI=29;break}var BB=((BE+8)&4294967295);CI=BB;EI=31;continue}if(EI==32){var Bt=((Bu+4)&4294967295);var Bs=uA[((Bt)>>2)];CZ=Bs}else{if(EI==29){var BD=((BE+4)&4294967295);var BC=uA[((BD)>>2)];CZ=BC}}var Br=CZ;El=Br;var CK=El;AM=CK;var Bq=BG;var Bp=(((Bq))|0)==0;if(Bp){EI=34}else{EI=35}if(EI==34){CY=0}else{if(EI==35){var Bn=BY;var Bl=wg(Bn);var A9=CO;var A8=wg(D8);var A7=(((Bl)+27)&4294967295);var A6=(((A7)+(A9))&4294967295);var A5=(((A6)+(A8))&4294967295);var A2=kW(A5,1);CL=A2;var A1=CL;var A0=A1;Ea=A0;var AX=CL;var AV=((AX+24)&4294967295);CL=AV;var AJ=CO;var AI=CL;ns(AI,D7,AJ,1,0);var AH=Ea;var i=((AH+4)&4294967295);var e=CL;uA[((i)>>2)]=e;var Fq=CL;var Fp=CO;var Fo=((Fq+Fp)&4294967295);var Fl=BY;var Fj=oJ(Fo,Fl);var E8=CL;var E7=CO;var E6=((E8+E7)&4294967295);var E5=Ea;var E4=((E5+8)&4294967295);uA[((E4)>>2)]=E6;var E3=CL;var E2=CO;var E1=((E3+E2)&4294967295);var EZ=Ea;var EW=((EZ)&4294967295);uA[((EW)>>2)]=E1;var Bo=la[((D6)>>0)];var Bm=iB((Bo),8,0)!=0;if(Bm){EI=36}else{EI=37}if(EI==36){var Bk=BY;var Bi=wg(Bk);var Bh=CO;var Bg=(((Bi)+1)&4294967295);var Bf=(((Bg)+(Bh))&4294967295);CO=Bf;var Be=CL;var Bd=CO;var Bc=((Be+Bd)&4294967295);var AY=oJ(Bc,D5);var AW=CL;var AU=CO;var AT=((AW+AU)&4294967295);var AS=Ea;var AR=((AS)&4294967295);uA[((AR)>>2)]=AT}var AQ=uA[((A4)>>2)];var AP=(((AQ))&255);var AO=Ea;var AN=((AO+13)&4294967295);la[((AN)>>0)]=AP;var Fm=AM;var Fk=(((Fm))&255);var Fi=Ea;var Fh=((Fi+12)&4294967295);la[((Fh)>>0)]=Fk;var Fg=Ea;var Ff=((Fg+14)&4294967295);la[((Ff)>>0)]=0;var Fe=uA[((Cl)>>2)];var Fd=(((Fe))&255);var Fc=Ea;var Fb=((Fc+15)&4294967295);la[((Fb)>>0)]=Fd;var E0=Ea;CY=E0}}var EX=CY;Fa=EX;var AZ=Fa;Bj=AZ;var EV=EK;var EU=ts(EV);var ET=Bj;var ES=(ET)!=0;if(!(ES)){EI=10;break $bb5_thread$$bb1_i$8}var ER=uA[((uj)>>2)];var EQ=((sF+ER*4)&4294967295);var EP=Bj;uA[((EQ)>>2)]=EP;var EO=(((ER)+1)&4294967295);uA[((uj)>>2)]=EO}}}while(0);var DH=A3;var DG=Ah(DH);Dq=DG;var DF=Dq;var DE=(DF)!=0;var DD=oD((DE),1,0);Dd=DD;var DB=Dd;var C1=iB((DB),8,0)==0;var DA=uA[((uj)>>2)];var Dz=(((DA))|0)>147;var CP=(C1)|(Dz);if(CP){EI=40;break $bb12$$bb2_lr_ph$4}else{EI=3;continue $bb2$6}}}}while(0);var EM=A3;var EL=dt(EM)}vp=By;return;return}function gs(BR,B6,Bu){var Bt=vp;vp+=80;n1(Bt,0,80);var Fz;var EZ=null;var Dl;var Bn;var F0;var Bs;var By;var BS;var FO;var BU;var CJ;var DA;var Ci;var CU;var FB;var CH;var FC;var DB;var Cm;var CV;var DI;var B4;var Gh;var CG;var Bc;var Cf;var B5;var EM;var Br;var AQ;var Dv;var CT;var Dy;var Dz;var CW;var Fu;var Cu;var Et;var DO;var F9;var Ft=Bt;EM=BR;Br=B6;AQ=Bu;Et=0;DO=0;var CS=EM;var CR=((CS+4)&4294967295);var CQ=uA[((CR)>>2)];var CP=(CQ)!=0;if(CP){Fz=1}else{Fz=6}$bb$$bb7$2:do{if(Fz==1){var CO=EM;var CN=((CO+4)&4294967295);var CM=uA[((CN)>>2)];var CL=((CM)&4294967295);var Fm=la[((CL)>>0)];var Fl=iB((Fm),8,0)!=0;if(!(Fl)){Fz=6;break $bb$$bb7$2}Et=1;var Fk=EM;var Fj=((Fk+4)&4294967295);var Fi=uA[((Fj)>>2)];var Fh=wg(Fi);DO=Fh;CW=0;var Fg=CW;var Ff=DO;var Fe=(((Fg))|0)<=(((Ff))|0);var Fd=CW;var EY=(((Fd))>>>0)<=79;var Da=(Fe)&(EY);if(!(Da)){Fz=6;break $bb$$bb7$2}while(1){var EX=CW;var EW=EM;var EV=((EW+4)&4294967295);var EU=uA[((EV)>>2)];var ET=CW;var ES=((EU+ET)&4294967295);var ER=la[((ES)>>0)];var EQ=iB((ER),8,0);var EP=m9(EQ);var ED=(((EP))&255);var EC=((Ft+EX)&4294967295);la[((EC)>>0)]=ED;var EB=((Ft+EX)&4294967295);var EA=la[((EB)>>0)];var Ez=iB((EA),8,0)==45;var Ey=oD((Ez),1,0);Dz=Ey;var FA=iB((Ey),8,0)!=0;if(FA){Fz=4}else{Fz=5}if(Fz==4){var Ex=Et;var Ew=(((Ex)+1)&4294967295);Et=Ew}var Ev=CW;var Eu=(((Ev)+1)&4294967295);CW=Eu;var Ei=CW;var Eh=DO;var Eg=(((Ei))|0)<=(((Eh))|0);var Ef=CW;var Ee=(((Ef))>>>0)<=79;var CK=(Eg)&(Ee);if(CK){Fz=3;continue}else{Fz=6;break $bb$$bb7$2}}}}while(0);Cu=0;CW=0;var Ed=uA[((uj)>>2)];var Ec=CW;var Eb=(((Ec))|0)<(((Ed))|0);if(Eb){Fz=7}else{Fz=77}$bb8_lr_ph$$bb15$11:do{if(Fz==7){var Ea=((Ft)&4294967295);$bb8$13:while(1){var D9=CW;var DY=((sF+D9*4)&4294967295);var DX=uA[((DY)>>2)];F9=DX;var DW=AQ;var DV=(DW)&1;var DU=(((DV))|0)==0;if(DU){Fz=9}else{Fz=10}$bb9$$bb10$15:do{if(Fz==9){var DT=F9;var DS=((DT+8)&4294967295);var DR=uA[((DS)>>2)];var DQ=l4(DR,((q2)&4294967295),3);var DP=(((DQ))|0)==0;if(DP){Fz=76;break $bb9$$bb10$15}else{Fz=10;break $bb9$$bb10$15}}}while(0);$bb13$$bb10$17:do{if(Fz==10){var DN=CW;var DL=((sF+DN*4)&4294967295);var DK=uA[((DL)>>2)];var DJ=EM;var DH=Et;var DG=DO;Dl=DJ;Bn=Ea;F0=DH;Bs=DG;By=DK;Gh=0;var DF=By;var DE=((DF+4)&4294967295);var DD=uA[((DE)>>2)];CH=DD;var DC=Bn;var Dx=pt(DC,((rZ)&4294967295));var Dw=(((Dx))|0)==0;if(Dw){Fz=11}else{Fz=14}$bb_i$$bb3_i$19:do{if(Fz==11){var Du=By;var Dt=((Du+8)&4294967295);var Ds=uA[((Dt)>>2)];var Dr=l4(Ds,((q2)&4294967295),3);var Dq=(((Dr))|0)==0;if(Dq){Fz=12}else{Fz=13}if(Fz==12){CU=100}else{if(Fz==13){CU=0}}}else{if(Fz==14){var Dp=F0;var Do=(((Dp))|0)==0;if(Do){Fz=15}else{Fz=16}$bb36_thread_i$$bb5_i$25:do{if(Fz==15){Gh=100}else{if(Fz==16){var Dm=CH;var Dk=la[((Dm)>>0)];var Dj=iB((Dk),8,0)==0;if(Dj){Fz=17}else{Fz=19}$bb6_i$$bb35_preheader_i$28:do{if(Fz==17){var Di=Bn;var Dh=pt(Di,((yk)&4294967295));var Dg=(((Dh))|0)==0;if(!(Dg)){Fz=19;break $bb6_i$$bb35_preheader_i$28}Gh=100}}while(0);var Df=CH;var De=la[((Df)>>0)];var Dd=iB((De),8,0)!=0;if(Dd){Fz=20}else{Fz=42}$bb9_i$$bb36_i$32:do{if(Fz==20){$bb9_i$33:while(1){var Dc=CH;var Db=la[((Dc)>>0)];var C9=iB((Db),8,0);Cm=C9;var C8=CH;var C7=((C8+1)&4294967295);CH=C7;DI=1;B4=0;CV=1;FB=0;$bb10_i$35:while(1){var C6=FB;var C5=Bs;var C4=(((C6))|0)>=(((C5))|0);if(C4){Fz=24}else{Fz=22}$bb15_i$$bb11_i$37:do{if(Fz==22){var C3=Bn;var C2=FB;var C1=((C3+C2)&4294967295);var C0=la[((C1)>>0)];var CF=iB((C0),8,0);FC=CF;var CE=FC;var CD=(((CE))|0)==45;if(CD){Fz=24;break $bb15_i$$bb11_i$37}DA=0;Ci=0;Fz=25;break $bb15_i$$bb11_i$37}}while(0);if(Fz==24){DA=1;Ci=1;FC=0}var CC=CH;var CB=FB;var Cz=((CC+CB)&4294967295);var Cy=la[((Cz)>>0)];var Cx=iB((Cy),8,0);DB=Cx;var Cw=DB;var Cv=(((Cw))|0)==45;var Ct=oD((Cv),1,0);CJ=Ct;var Dn=iB((Ct),8,0)!=0;if(Dn){Fz=26}else{Fz=27}if(Fz==26){DB=0}var Cs=FC;var Cr=DB;var Cq=(((Cs))|0)!=(((Cr))|0);if(Cq){Fz=28}else{Fz=29}if(Fz==28){DI=0}var Cp=CH;var Co=FB;var Cn=((Cp+Co)&4294967295);var Cl=la[((Cn)>>0)];var Ck=iB((Cl),8,0)==45;if(Ck){Fz=30}else{Fz=32}$bb22_i$$bb24_i$49:do{if(Fz==30){var Cj=CV;var Ch=(((Cj)+1)&4294967295);CV=Ch;var Cg=DI;var Ce=(((Cg))|0)!=0;if(!(Ce)){Fz=32;break $bb22_i$$bb24_i$49}var Cd=B4;var Cc=(((Cd)+1)&4294967295);B4=Cc}}while(0);var Cb=CH;var Ca=FB;var B9=((Cb+Ca)&4294967295);var B8=la[((B9)>>0)];var B7=iB((B8),8,0)==0;var B3=FB;var B2=(((B3)+1)&4294967295);if(B7){Fz=34;break $bb10_i$35}FB=B2;Fz=21;continue $bb10_i$35}var B1=CH;var B0=((B1+B2)&4294967295);CH=B0;var BZ=B4;var BY=DI;var BX=(((BY)+(BZ))&4294967295);B4=BX;var BW=B4;var BV=(((BW))|0)==0;if(BV){Fz=35}else{Fz=36}$bb35_backedge_i$$bb27_i$55:do{if(Fz==36){CG=5;var BO=F0;var BN=B4;var BM=(((BO)-(BN))&4294967295);B5=BM;var BL=B5;var BK=(((BL))|0)>0;var BJ=oD((BK),1,0);BU=BJ;var BI=BU;var CX=iB((BI),8,0)!=0;if(CX){Fz=37}else{Fz=38}if(Fz==37){var BH=CG;var BG=B5;var BF=(((BH)-(BG))&4294967295);CG=BF}var BE=CV;var BD=B4;var BC=(((BE)-(BD))&4294967295);B5=BC;var BB=B5;var BA=(((BB))|0)>0;var Bz=oD((BA),1,0);FO=Bz;var CI=iB((Bz),8,0)!=0;if(CI){Fz=39}else{Fz=40}if(Fz==39){var Bx=CG;var Bw=B5;var Bq=(((Bx)-(Bw))&4294967295);CG=Bq}var Bp=CG;var Bo=(((Bp)*50)&4294967295);var Bm=Cm;var Bl=(((Bo)-(Bm))&4294967295);var Bk=(((Bl)*2)&4294967295);CG=Bk;var Bj=CG;var Bi=Gh;var Bg=(((Bj))|0)>(((Bi))|0);if(!(Bg)){Fz=35;break $bb35_backedge_i$$bb27_i$55}var Be=CG;Gh=Be}}while(0);var BT=CH;var BQ=la[((BT)>>0)];var BP=iB((BQ),8,0)!=0;if(BP){Fz=20;continue $bb9_i$33}else{Fz=42;break $bb9_i$$bb36_i$32}}}}while(0);var CA=Gh;var A4=(((CA))|0)==0;if(!(A4)){Fz=44;break $bb36_thread_i$$bb5_i$25}CU=0;Fz=74;break $bb_i$$bb3_i$19}}}while(0);var A3=Dl;var A2=((A3)&4294967295);var A1=uA[((A2)>>2)];var A0=(A1)!=0;if(A0){Fz=45}else{Fz=49}$bb39_i$$bb43_i$68:do{if(Fz==45){var AZ=By;var AY=((AZ)&4294967295);var AX=uA[((AY)>>2)];var AV=Dl;var AT=((AV)&4294967295);var AJ=uA[((AT)>>2)];var AI=pt(AJ,AX);var AH=(((AI))|0)==0;if(AH){Fz=46}else{Fz=47}if(Fz==46){var i=Gh;var e=(((i)+500)&4294967295);Gh=e}else{if(Fz==47){var Gp=By;var Go=((Gp+8)&4294967295);var Gn=uA[((Go)>>2)];var Gl=Dl;var Gj=((Gl)&4294967295);var F8=uA[((Gj)>>2)];var F7=pt(F8,Gn);var F6=(((F7))|0)==0;if(!(F6)){Fz=49;break $bb39_i$$bb43_i$68}var F5=Gh;var F4=(((F5)+400)&4294967295);Gh=F4}}}}while(0);var F3=Dl;var F2=((F3+12)&4294967295);var F1=la[((F2)>>0)];var FY=iB((F1),8,0)==1;if(FY){Fz=51}else{Fz=50}$bb45_i$$bb44_i$75:do{if(Fz==50){var FW=Dl;var Bh=((FW+12)&4294967295);var Bf=la[((Bh)>>0)];var Bd=iB((Bf),8,0)==2;if(Bd){Fz=51;break $bb45_i$$bb44_i$75}else{Fz=56;break $bb45_i$$bb44_i$75}}}while(0);$bb45_i$$bb50_i$77:do{if(Fz==51){var Bb=By;var Ba=((Bb+12)&4294967295);var A9=la[((Ba)>>0)];var A8=iB((A9),8,0)==1;if(A8){Fz=53}else{Fz=52}if(Fz==52){var A7=By;var A6=((A7+12)&4294967295);var A5=la[((A6)>>0)];var AW=iB((A5),8,0)==2;if(!(AW)){Fz=56;break $bb45_i$$bb50_i$77}}var AU=Dl;var AS=((AU+12)&4294967295);var AR=la[((AS)>>0)];var AP=By;var AO=((AP+12)&4294967295);var AN=la[((AO)>>0)];var AM=iB((AR),8,0)==iB((AN),8,0);var AL=Gh;if(AM){Fz=54}else{Fz=55}if(Fz==54){var AK=(((AL)+50)&4294967295);Gh=AK}else{if(Fz==55){var Gm=(((AL)-50)&4294967295);Gh=Gm}}}}while(0);var Gk=Dl;var Gi=((Gk+13)&4294967295);var Gg=ll[((Gi)>>0)];var Gf=oD((Gg),8,0)<=12;if(Gf){Fz=57}else{Fz=60}$bb51_i$$bb54_i$86:do{if(Fz==57){var Ge=By;var Gd=((Ge+12)&4294967295);var Gc=la[((Gd)>>0)];var Gb=iB((Gc),8,0)==2;if(!(Gb)){Fz=60;break $bb51_i$$bb54_i$86}var Ga=By;var FZ=((Ga+13)&4294967295);var FX=ll[((FZ)>>0)];var FV=oD((FX),8,0)>12;if(!(FV)){Fz=60;break $bb51_i$$bb54_i$86}var FU=Gh;var FT=(((FU)+5)&4294967295);Gh=FT}}while(0);var FS=By;var FR=((FS+13)&4294967295);var FQ=la[((FR)>>0)];var FP=iB((FQ),8,0)!=0;if(FP){Fz=61}else{Fz=70}$bb55_i$$bb64thread_pre_split_i$91:do{if(Fz==61){var FN=Dl;var FM=((FN+13)&4294967295);var FL=la[((FM)>>0)];var FK=iB((FL),8,0)==0;if(FK){Fz=62}else{Fz=63}if(Fz==62){Cf=30}else{if(Fz==63){var FJ=Dl;var FI=((FJ+13)&4294967295);var FH=ll[((FI)>>0)];var FG=oD((FH),8,0);Cf=FG}}var FF=Cf;var FE=(((FF)*100)&4294967295);var FD=By;var Fy=((FD+13)&4294967295);var Fx=ll[((Fy)>>0)];var Fw=oD((Fx),8,0);var Fv=(((((FE))|0)/(((Fw))|0))|0);Bc=Fv;var Fs=(((Fv))|0)<=99;if(Fs){Fz=65}else{Fz=66}if(Fz==65){var Fr=Bc;var Fq=((10000/(((Fr))|0))|0);Bc=Fq}var Fp=Bc;var Fo=(((Fp)-100)&4294967295);var Fn=(((((Fo))|0)/10)|0);Bc=Fn;var Fc=Bc;var Fb=((5-(Fc))&4294967295);CG=Fb;var Fa=(((Fb))|0)>0;if(Fa){Fz=67}else{Fz=68}if(Fz==67){CG=0}var E9=Gh;var E8=CG;var E7=(((E8)+(E9))&4294967295);Gh=E7;var E6=Dl;var E5=((E6+13)&4294967295);var E4=la[((E5)>>0)];var E2=iB((E4),8,0)!=0;if(E2){EZ=68}else{EZ=68;Fz=71;break $bb55_i$$bb64thread_pre_split_i$91}var EO=Gh;var EN=(((EO)+10)&4294967295);Gh=EN;EZ=69}else{if(Fz==70){var CY=Gh;EZ=70}}}while(0);var EL=EZ==70?CY:(EZ==69?EN:(E7));var EK=(((EL))|0)<=0;if(EK){Fz=72}else{Fz=73}if(Fz==72){Gh=1}var EJ=Gh;CU=EJ}}}while(0);var EI=CU;BS=EI;var DM=BS;Fu=DM;var EH=Fu;var EG=(((EH))|0)>0;var EF=oD((EG),1,0);Dy=EF;var CZ=iB((EF),8,0)!=0;if(!(CZ)){Fz=76;break $bb13$$bb10$17}var EE=Br;var Es=Cu;var Er=((EE+4*Es)&4294967295);var Eq=F9;uA[((Er)>>2)]=Eq;var Ep=Cu;var Eo=(((Ep)+1)&4294967295);Cu=Eo;var En=F9;var Em=((En+16)&4294967295);var El=Fu;uA[((Em)>>2)]=El}}while(0);var Ek=CW;var Ej=(((Ek)+1)&4294967295);CW=Ej;var D8=uA[((uj)>>2)];var D7=CW;var D6=(((D7))|0)<(((D8))|0);if(D6){Fz=8;continue $bb8$13}else{Fz=77;break $bb8_lr_ph$$bb15$11}}}}while(0);var D5=Br;var D4=Cu;var D3=((D5+4*D4)&4294967295);uA[((D3)>>2)]=0;var D2=Cu;var D1=(((D2))|0)==0;if(D1){Fz=78}else{Fz=79}if(Fz==78){CT=0}else{if(Fz==79){var D0=Cu;var DZ=Br;var E3=DZ;eI(E3,D0,4,6);var E1=Cu;CT=E1}}var E0=CT;Dv=E0;var Bv=Dv;vp=Bt;return Bv;return null}function mv(A7){var A1=vp;vp+=164;n1(A1,0,164);var Bk;var AL;var A5;var BQ;var Bw;var AU;var Bl;var Bj;var AS=A1;AL=A7;AU=0;var BP=uA[((uj)>>2)];var BO=AU;var BN=(((BO))|0)<(((BP))|0);if(BN){Bk=1}else{Bk=4}$bb$$bb4$2:do{if(Bk==1){while(1){var BM=AU;var BL=((sF+BM*4)&4294967295);var BK=uA[((BL)>>2)];var BJ=(BK)!=0;if(BJ){Bk=2}else{Bk=3}if(Bk==2){var BI=AU;var BH=((sF+BI*4)&4294967295);var Bv=uA[((BH)>>2)];var Bu=Bv;br(Bu)}var Bt=AU;var Bs=(((Bt)+1)&4294967295);AU=Bs;var Br=uA[((uj)>>2)];var Bq=AU;var Bp=(((Bq))|0)<(((Br))|0);if(Bp){Bk=1;continue}else{Bk=4;break $bb$$bb4$2}}}}while(0);uA[((uj)>>2)]=0;var Bo=((AS)&4294967295);var Bn=qs(Bo,((vx)&4294967295),((iU)&4294967295),47);var Bm=((AS)&4294967295);var Bi=wg(Bm);var Bh=(((Bi)+1)&4294967295);uA[((yK)>>2)]=Bh;var Bg=((AS)&4294967295);e8(Bg);var Bf=uA[((uj)>>2)];var Be=((sF+Bf*4)&4294967295);uA[((Be)>>2)]=0;var Bd=uA[((uj)>>2)];eI(sF,Bd,4,8);var Bc=AL;var Bb=(Bc)!=0;if(Bb){Bk=5}else{Bk=6}if(Bk==5){var Ba=AL;var A9=gs(Ba,((l6)&4294967295),1)}else{if(Bk==6){Bl=0;AU=0;var A6=AU;var A4=((sF+A6*4)&4294967295);var A3=uA[((A4)>>2)];Bj=A3;var A2=Bj;var A0=(A2)!=0;var AZ=oD((A0),1,0);Bw=AZ;if(A0){Bk=7}else{Bk=12}$bb7$$bb13$12:do{if(Bk==7){$bb7$13:while(1){var AY=Bj;var AX=((AY+4)&4294967295);var AW=uA[((AX)>>2)];var AV=((AW)&4294967295);var AT=la[((AV)>>0)];var AR=iB((AT),8,0)!=0;if(AR){Bk=8}else{Bk=11}$bb8$$bb11$15:do{if(Bk==8){var AQ=Bj;var AP=((AQ+4)&4294967295);var AO=uA[((AP)>>2)];var AN=((AO+1)&4294967295);var AM=pt(AN,((bZ)&4294967295));var AK=(((AM))|0)!=0;if(!(AK)){Bk=11;break $bb8$$bb11$15}var AJ=Bj;var AI=((AJ+8)&4294967295);var AH=uA[((AI)>>2)];var i=l4(AH,((q2)&4294967295),3);var e=(((i))|0)!=0;if(!(e)){Bk=11;break $bb8$$bb11$15}var BX=Bl;var BW=((l6+BX*4)&4294967295);var BV=Bj;uA[((BW)>>2)]=BV;var BU=Bl;var BT=(((BU)+1)&4294967295);Bl=BT}}while(0);var BS=AU;var BR=(((BS)+1)&4294967295);AU=BR;var BG=AU;var BF=((sF+BG*4)&4294967295);var BE=uA[((BF)>>2)];Bj=BE;var BD=Bj;var BC=(BD)!=0;var BB=oD((BC),1,0);Bw=BB;var A8=iB((BB),8,0)!=0;if(A8){Bk=7;continue $bb7$13}else{Bk=12;break $bb7$$bb13$12}}}}while(0);var Bz=Bl;var By=((l6+Bz*4)&4294967295);uA[((By)>>2)]=0}}BQ=((l6)&4294967295);var Bx=BQ;A5=Bx;var BA=A5;vp=A1;return BA;return null}function cE(Bz,BE){var A4=vp;vp+=44;n1(A4,0,44);var Bo;var Bd=null;var BS;var BD;var A8;var BT;var AW;var AU;var AI;var AV;var BA;var A0;var BB;var Ba=A4;BS=Bz;BD=BE;AI=-1;AV=-1;BA=-1;var BR=BS;var BQ=(BR)==0;if(BQ){Bo=1}else{Bo=4}if(Bo==1){var BP=uA[((uj)>>2)];var BO=(((BP))|0)==0;if(BO){Bo=2}else{Bo=3}if(Bo==2){var BN=mv(0)}BS=((sF)&4294967295)}var BM=((Ba)&4294967295);var BL=BD;var BK=qs(BM,((k7)&4294967295),47,BL);var BJ=((Ba)&4294967295);var By=wg(BJ);BB=By;AU=0;var Bx=((Ba)&4294967295);$bb11$8:while(1){var AM=BS;var AL=AU;var AK=((AM+4*AL)&4294967295);var AJ=uA[((AK)>>2)];var AH=(AJ)!=0;if(!(AH)){Bo=13;break $bb11$8}var Bw=BS;var Bv=AU;var Bu=((Bw+4*Bv)&4294967295);var Bt=uA[((Bu)>>2)];var Bs=((Bt)&4294967295);var Br=uA[((Bs)>>2)];var Bq=BD;var Bp=pt(Bq,Br);var Bn=(((Bp))|0)==0;if(Bn){Bo=6;break $bb11$8}var Bl=BS;var Bk=AU;var Bj=((Bl+4*Bk)&4294967295);var Bi=uA[((Bj)>>2)];var Bh=((Bi+8)&4294967295);var Bg=uA[((Bh)>>2)];A0=Bg;var Bf=BD;var Be=A0;var A9=pt(Bf,Be);var A7=(((A9))|0)==0;var A6=oD((A7),1,0);AW=A6;var A5=AW;var Bb=iB((A5),8,0)!=0;if(Bb){Bo=8}else{Bo=9}$bb7$$bb8$12:do{if(Bo==8){var A3=AU;AI=A3}else{if(Bo==9){var A2=A0;var A1=wg(A2);var AZ=BB;var AY=(((A1)-(AZ))&4294967295);var AX=A0;var AS=((AX+AY)&4294967295);var AR=pt(Bx,AS);var AQ=(((AR))|0)==0;if(!(AQ)){Bo=11;break $bb7$$bb8$12}var AP=AU;AV=AP}}}while(0);var AO=AU;var AN=(((AO)+1)&4294967295);AU=AN;Bo=12;continue $bb11$8}if(Bo==6){var Bm=AU;BA=Bm;Bd=6}else{if(Bo==13){var AT=BA;Bd=13}}var i=Bd==13?AT:(Bm);var e=(((i))|0)<0;if(e){Bo=15}else{Bo=17}$bb13$$bb15thread_pre_split$21:do{if(Bo==15){var B0=AI;BA=B0;var BZ=BA;var BY=(((BZ))|0)<0;if(!(BY)){Bo=20;break $bb13$$bb15thread_pre_split$21}var BX=AV;BA=BX;Bd=16;Bo=18;break $bb13$$bb15thread_pre_split$21}else{if(Bo==17){var Bc=BA;Bd=17;Bo=18;break $bb13$$bb15thread_pre_split$21}}}while(0);$bb15$$bb17$25:do{if(Bo==18){var BW=Bd==17?Bc:(BX);var BV=(((BW))|0)<0;if(!(BV)){Bo=20;break $bb15$$bb17$25}BT=0;Bo=21;break $bb15$$bb17$25}}while(0);if(Bo==20){var BU=BS;var BI=BA;var BH=((BU+4*BI)&4294967295);var BG=uA[((BH)>>2)];BT=BG}var BF=BT;A8=BF;var BC=A8;vp=A4;return BC;return null}function yl(A8,AH){var A3=vp;vp+=8;n1(A3,0,8);var A1;var A7=null;var AL;var AJ;var BC;var A6;var AN;var A4;var Bs;var AX;var AI;var A2=A3;A6=A8;AN=AH;la[((((qd)&4294967295))>>0)]=0;var Br=((A2)&4294967295);var Bq=qs(Br,((h2)&4294967295),47);var Bp=A6;var Bo=(Bp)!=0;if(Bo){A1=1}else{A1=5}$bb$$bb4thread_pre_split$2:do{if(A1==1){var Bn=A6;var Bm=qX(Bn,43);AI=Bm;var Bk=AI;var Bi=(Bk)!=0;var Bg=oD((Bi),1,0);AX=Bg;var AY=AX;var A5=iB((AY),8,0)!=0;if(!(A5)){A1=5;break $bb$$bb4thread_pre_split$2}var AV=AI;la[((AV)>>0)]=0;var AT=AI;var AS=((AT+1)&4294967295);AI=AS;var AR=AI;var AQ=la[((AR)>>0)];var AP=iB((AQ),8,0);var AO=(((AP)-48)&4294967295);var AM=(((AO))>>>0)<=9;if(AM){A1=3}else{A1=4}if(A1==3){var AK=AI;var e=wU(AK);AN=e;A7=3;A1=6;break $bb$$bb4thread_pre_split$2}else{if(A1==4){var BD=((A2)&4294967295);var BB=oJ(((qd)&4294967295),BD);var BA=AI;AL=((qd+3)&4294967295);AJ=BA;BC=17;var Bz=BC;var By=AL;var Bx=AJ;var Bw=xT(By,Bx,Bz);var Bv=BC;var Bu=(((Bv)-1)&4294967295);var Bl=AL;var Bj=((Bl+Bu)&4294967295);la[((Bj)>>0)]=0;A1=5;break $bb$$bb4thread_pre_split$2}}}}while(0);if(A1==5){var i=AN;A7=5}var Bh=A7==5?i:(e);var Bf=(((Bh))|0)>0;if(Bf){A1=7}else{A1=10}if(A1==7){var Be=AN;var Bd=(((Be))|0)<=9;if(Bd){A1=8}else{A1=9}if(A1==8){var Bc=((A2)&4294967295);var Bb=AN;var Ba=qs(((qd)&4294967295),((pJ)&4294967295),Bc,Bb)}else{if(A1==9){var A9=AN;var A0=(((A9)-10)&4294967295);var AZ=((A2)&4294967295);var AW=qs(((qd)&4294967295),((xh)&4294967295),AZ,A0)}}}Bs=((qd)&4294967295);var AU=Bs;A4=AU;var Bt=A4;vp=A3;return Bt;return null}function pZ(AS,Ez){var BK=vp;vp+=1272;n1(BK,0,1272);var CF;var Dx=null;var A7;var D3;var AM;var Eh;var Dp;var AH;var BE;var DV;var DZ;var D6;var EV;var D8;var C0;var Ey;var Dd;var El;var AN;var DJ;var D2;var Dg;var EX;var AL;var Ej;var DO;var Er;var Dq;var Ei=BK;var Bo=BK+24;var Ee=BK+624;Eh=AS;Dp=Ez;EX=1;Er=0;var EU=Dp;uA[((EU)>>2)]=1;var ET=Eh;var Ek=Ei;var ES=ET;ns(Ek,ES,24,1,0);var ER=uA[((uj)>>2)];var EQ=(((ER))|0)==0;if(EQ){CF=1}else{CF=2}if(CF==1){var EP=mv(0)}var EO=((Ei+4)&4294967295);var EN=uA[((EO)>>2)];var EM=(EN)==0;if(EM){CF=4}else{CF=3}$bb4$$bb3$5:do{if(CF==3){var DD=((Ei+4)&4294967295);var DB=uA[((DD)>>2)];var Dz=((DB)&4294967295);var Dy=la[((Dz)>>0)];var Dw=iB((Dy),8,0)==0;if(Dw){CF=4;break $bb4$$bb3$5}else{CF=14;break $bb4$$bb3$5}}}while(0);$bb4$$bb14$7:do{if(CF==4){var Dv=((Ei)&4294967295);var Du=uA[((Dv)>>2)];var Dt=(Du)==0;if(Dt){CF=5}else{CF=7}$bb5$$bb7$9:do{if(CF==5){var Ds=((Ei+8)&4294967295);var Dr=uA[((Ds)>>2)];var De=((Ei)&4294967295);uA[((De)>>2)]=Dr;var Da=((Ei)&4294967295);var C8=uA[((Da)>>2)];var C7=(C8)==0;var C6=oD((C7),1,0);D8=C6;var C5=D8;var Ca=iB((C5),8,0)!=0;if(!(Ca)){CF=7;break $bb5$$bb7$9}var C4=((Ei)&4294967295);uA[((C4)>>2)]=((er)&4294967295)}}while(0);var C3=((Ei)&4294967295);var C2=uA[((C3)>>2)];A7=((h9)&4294967295);D3=C2;AM=60;var C1=AM;var CR=A7;var CP=D3;var CN=xT(CR,CP,C1);var CM=AM;var CL=(((CM)-1)&4294967295);var CK=A7;var CJ=((CK+CL)&4294967295);la[((CJ)>>0)]=0;var CI=yl(((h9)&4294967295),0);AL=CI;var CH=cE(((sF)&4294967295),((h9)&4294967295));Er=CH;var CG=(CH)!=0;if(!(CG)){CF=14;break $bb4$$bb14$7}var Cw=Er;var Cu=((Cw+4)&4294967295);var Cr=uA[((Cu)>>2)];var Cp=((Cr+1)&4294967295);var Cn=((Ei+4)&4294967295);uA[((Cn)>>2)]=Cp;var Cl=((Ei+12)&4294967295);var Cj=la[((Cl)>>0)];var Ch=iB((Cj),8,0)==0;if(!(Ch)){CF=14;break $bb4$$bb14$7}var Cf=((Ei+13)&4294967295);var Cd=la[((Cf)>>0)];var B1=iB((Cd),8,0)==0;if(!(B1)){CF=14;break $bb4$$bb14$7}var BZ=((Ei+14)&4294967295);var BW=la[((BZ)>>0)];var BU=iB((BW),8,0)==0;if(!(BU)){CF=14;break $bb4$$bb14$7}var BS=AL;var BQ=((BS)&4294967295);var BO=la[((BQ)>>0)];var BM=iB((BO),8,0)!=0;if(BM){CF=12}else{CF=13}if(CF==12){var BJ=AL;var BH=((BJ+3)&4294967295);var Bv=Er;var Bt=((Bv+8)&4294967295);var Bq=uA[((Bt)>>2)];var Bn=qs(((qR)&4294967295),((m6)&4294967295),Bq,BH);EV=((qR)&4294967295);CF=54;break $bb4$$bb14$7}else{if(CF==13){var Bl=Er;var Bj=((Bl+8)&4294967295);var Bh=uA[((Bj)>>2)];EV=Bh;CF=54;break $bb4$$bb14$7}}}}while(0);if(CF==14){var Bf=((Bo)&4294967295);var Bd=gs(Ei,Bf,0);C0=Bd;var Bc=(((Bd))|0)==0;if(Bc){CF=15}else{CF=17}$bb15$$bb18$22:do{if(CF==15){var A2=Dp;uA[((A2)>>2)]=0;var A0=cE(((sF)&4294967295),((er)&4294967295));var AY=((Bo)&4294967295);uA[((AY)>>2)]=A0;var AX=((Bo)&4294967295);var AW=uA[((AX)>>2)];var AV=(AW)!=0;var AU=oD((AV),1,0);D6=AU;var AT=D6;var Em=iB((AT),8,0)!=0;if(!(Em)){CF=17;break $bb15$$bb18$22}C0=1}}while(0);D2=0;var AR=((Ei+12)&4294967295);var AP=la[((AR)>>0)];var AK=iB((AP),8,0)==2;if(AK){CF=20}else{CF=18}$bb21$$bb19$26:do{if(CF==18){var AJ=((Ei+13)&4294967295);var AI=la[((AJ)>>0)];var i=iB((AI),8,0)==0;if(i){CF=21}else{CF=19}if(CF==19){var e=((Ei+13)&4294967295);var E1=ll[((e)>>0)];var E0=oD((E1),8,0)<=12;if(E0){CF=20;break $bb21$$bb19$26}}var EZ=((Ei+12)&4294967295);var EY=la[((EZ)>>0)];var EW=iB((EY),8,0)==1;if(!(EW)){CF=23;break $bb21$$bb19$26}D2=1;CF=23;break $bb21$$bb19$26}}while(0);if(CF==20){D2=2}var EL=((Ei+13)&4294967295);var EK=ll[((EL)>>0)];var EJ=oD((EK),8,0)<=59;if(EJ){CF=24}else{CF=25}if(CF==24){EX=0;Dx=24}else{if(CF==25){var AQ=EX;Dx=25}}var EI=Dx==25?AQ:(0);var EH=D2;var EG=((gz+EH*4)&4294967295);var EF=uA[((EG)>>2)];DO=EF;var EE=DO;Ej=EE;var ED=(((EI))|0)==0;if(ED){CF=27}else{CF=28}if(CF==27){var EC=Ej;var Ex=((EC+1)&4294967295);Ej=Ex}AN=0;Ey=0;Dd=0;var Ew=Ey;var Ev=C0;var Eu=(((Ew))|0)<(((Ev))|0);if(Eu){CF=29}else{CF=46}$bb29$$bb49$42:do{if(CF==29){$bb29$43:while(1){var Et=Ey;var Es=((Bo+Et*4)&4294967295);var Eq=uA[((Es)>>2)];Er=Eq;Dg=0;var Ep=D2;var Eo=(((Ep))|0)!=0;if(Eo){CF=30}else{CF=32}$bb30$$bb32$45:do{if(CF==30){var En=Er;var Eg=((En+12)&4294967295);var Ef=ll[((Eg)>>0)];var Ed=oD((Ef),8,0);var Ec=D2;var Eb=(((Ed))|0)!=(((Ec))|0);if(!(Eb)){CF=32;break $bb30$$bb32$45}Dg=1}}while(0);var Ea=Dd;var D9=(((Ea))|0)==0;if(D9){CF=33}else{CF=36}$bb33$$bb36$49:do{if(CF==33){var D7=EX;var D5=(((D7))|0)!=0;if(!(D5)){CF=36;break $bb33$$bb36$49}var D4=Er;var D1=((D4+13)&4294967295);var D0=ll[((D1)>>0)];var DY=oD((D0),8,0)<=59;if(!(DY)){CF=36;break $bb33$$bb36$49}Dg=1;CF=38;break $bb33$$bb36$49}}while(0);$bb38$$bb36$53:do{if(CF==36){var AO=Dg;var DX=(((AO))|0)==0;if(!(DX)){CF=38;break $bb38$$bb36$53}var DW=Dd;var DU=((Ee+DW*4)&4294967295);var DT=Er;uA[((DU)>>2)]=DT;var DS=Dd;var DR=(((DS)+1)&4294967295);Dd=DR}}while(0);El=0;while(1){var CQ=Er;var CO=((CQ+15)&4294967295);var CE=ll[((CO)>>0)];var CD=oD((CE),8,0);var CC=El;var CB=(((CD))|0)<=(((CC))|0);if(CB){CF=44;break}var CA=AN;var Cz=(((CA))|0)<=11;if(!(Cz)){CF=44;break}var DQ=Ej;var DN=la[((DQ)>>0)];var DM=iB((DN),8,0);DJ=DM;var DL=DJ;var DK=(((DL))|0)==0;var DI=oD((DK),1,0);DZ=DI;var DG=DZ;var DH=iB((DG),8,0)!=0;if(DH){CF=40}else{CF=41}if(CF==40){var DF=DO;Ej=DF;CF=42;continue}else{if(CF==41){var DE=AN;var DC=((tL+DE*24)&4294967295);Dq=DC;var DA=AN;var Do=(((DA)+1)&4294967295);AN=Do;var Dn=Dq;var Dm=Er;var Dl=Dn;var Dk=Dm;ns(Dl,Dk,24,1,0);var Dj=DJ;var Dh=(((Dj))&255);var Df=Dq;var Dc=((Df+14)&4294967295);la[((Dc)>>0)]=Dh;var C9=Dd;var CZ=((Ee+C9*4)&4294967295);var CY=Dq;uA[((CZ)>>2)]=CY;var CX=Dd;var CW=(((CX)+1)&4294967295);Dd=CW;var CV=Ej;var CU=((CV+1)&4294967295);Ej=CU;var CT=El;var CS=(((CT)+1)&4294967295);El=CS;CF=42;continue}}}var Cy=Ey;var Cx=(((Cy)+1)&4294967295);Ey=Cx;var Cv=Ey;var Ct=C0;var B9=(((Cv))|0)<(((Ct))|0);if(B9){CF=29;continue $bb29$43}else{CF=46;break $bb29$$bb49$42}}}}while(0);while(1){var Bu=Er;var Bs=(Bu)==0;if(Bs){CF=49;break}var Bb=Ej;var Ba=la[((Bb)>>0)];var A9=iB((Ba),8,0);DJ=A9;var A8=DJ;var A6=(((A8))|0)!=0;var A5=oD((A6),1,0);var A4=Ej;var A3=((A4+1)&4294967295);Ej=A3;var Di=iB((A5),8,0)!=0;var EB=(Di)^1;var DP=oD((EB),1,0);var Db=iB((DP),8,0)!=0;if(Db){CF=49;break}var A1=AN;var AZ=(((A1))|0)>11;if(AZ){CF=49;break}BE=1;DV=1;var B8=AN;var B7=((tL+B8*24)&4294967295);Dq=B7;var B6=AN;var B5=(((B6)+1)&4294967295);AN=B5;var B4=Dq;var B3=Er;var B2=B4;var B0=B3;ns(B2,B0,24,1,0);var BY=DJ;var BD=(((BY))&255);var BC=Dq;var BB=((BC+14)&4294967295);la[((BB)>>0)]=BD;var BA=Dd;var Bz=((Ee+BA*4)&4294967295);var By=Dq;uA[((Bz)>>2)]=By;var Bx=Dd;var Bw=(((Bx)+1)&4294967295);Dd=Bw;CF=46;continue}BE=0;DV=0;var Cs=Dd;var Cq=(((Cs))|0)==0;if(Cq){CF=50}else{CF=51}if(CF==50){EV=0}else{if(CF==51){var Co=((Ei+14)&4294967295);var Cm=ll[((Co)>>0)];var Ck=oD((Cm),8,0);var Ci=Dd;var Cg=(((Ck))|0)%(((Ci))|0);var Ce=((Ee+Cg*4)&4294967295);var Cc=uA[((Ce)>>2)];Er=Cc;var Cb=Er;var BX=((Cb+14)&4294967295);var BV=la[((BX)>>0)];var BT=iB((BV),8,0)!=0;var BR=Er;if(BT){CF=52}else{CF=53}if(CF==52){var BP=((BR+14)&4294967295);var BN=ll[((BP)>>0)];var BL=oD((BN),8,0);var BI=yl(0,BL);AL=BI;var BG=AL;var BF=((BG+3)&4294967295);var Br=Er;var Bp=((Br+8)&4294967295);var Bm=uA[((Bp)>>2)];var Bk=qs(((qR)&4294967295),((m6)&4294967295),Bm,BF);EV=((qR)&4294967295)}else{if(CF==53){var Bi=((BR+8)&4294967295);var Bg=uA[((Bi)>>2)];EV=Bg}}}}}var Be=EV;AH=Be;var EA=AH;vp=BK;return EA;return null}function sb(BV){var BF;var Bk=null;var AT;var B1;var AJ;B1=BV;var Cl=uA[((k5)>>2)];var Ck=((Cl+44)&4294967295);uA[((Ck)>>2)]=290816;var Cj=uA[((k5)>>2)];var Ci=((Cj+48)&4294967295);uA[((Ci)>>2)]=4104;var Ch=uA[((k5)>>2)];var Cg=((Ch+96)&4294967295);uA[((Cg)>>2)]=256;var Cf=uA[((k5)>>2)];var Ce=((Cf+64)&4294967295);uA[((Ce)>>2)]=100;var Cd=uA[((k5)>>2)];var Cc=((Cd+76)&4294967295);uA[((Cc)>>2)]=0;var BU=uA[((k5)>>2)];var BS=((BU+80)&4294967295);uA[((BS)>>2)]=0;var BQ=uA[((k5)>>2)];var BO=((BQ+68)&4294967295);uA[((BO)>>2)]=64;var BM=uA[((k5)>>2)];var BK=((BM+84)&4294967295);uA[((BK)>>2)]=5;var BJ=uA[((k5)>>2)];var BI=((BJ+88)&4294967295);uA[((BI)>>2)]=0;var BH=uA[((k5)>>2)];var BG=((BH+92)&4294967295);uA[((BG)>>2)]=64;var Bz=uA[((k5)>>2)];var Bx=((Bz+100)&4294967295);uA[((Bx)>>2)]=100;var Bv=uA[((k5)>>2)];var Bt=((Bv+104)&4294967295);uA[((Bt)>>2)]=100;var Br=uA[((k5)>>2)];var Bp=((Br+108)&4294967295);uA[((Bp)>>2)]=22050;var Bo=uA[((k5)>>2)];var Bn=((Bo+112)&4294967295);var Bm=((Bn)&4294967295);var Bl=Bm;ud(Bl,0,32,1,0);uA[((((bX+32)&4294967295))>>2)]=450;uA[((((bX+32+4)&4294967295))>>2)]=800;uA[((((bX+32+8)&4294967295))>>2)]=175;var Ba=uA[((k5)>>2)];var A7=((Ba+72)&4294967295);uA[((A7)>>2)]=2;var A4=uA[((bW)>>2)];var A2=(((A4))|0);var A0=-3.1415927/(A2);pB[((rT)>>2)]=A0;var AY=pB[((rT)>>2)];var AX=(AY)*-2;pB[((nC)>>2)]=AX;AT=0;$bb_i$2:while(1){var AW=AT;var AV=((aj+AW*40)&4294967295);mW(AV,2000,200,1);var AU=AT;var AS=(((AU)+1)&4294967295);AT=AS;var AR=(((AS))|0)<=8;if(AR){BF=1;continue $bb_i$2}else{BF=2;break $bb_i$2}}AJ=0;var AQ=uA[((k5)>>2)];Bk=2;while(1){var AP=Bk==2?AQ:(Be);var AO=AJ;var AN=((AP+144)&4294967295);var AM=((AN+AO*2)&4294967295);uW[((AM)>>1)]=256;var AL=uA[((k5)>>2)];var AK=AJ;var AI=AJ;var AH=((hc+AI)&4294967295);var i=ll[((AH)>>0)];var e=oD((i),8,0);var Cs=(((e)*2)&4294967295);var Cr=(((Cs))&65535);var Cq=((AL+162)&4294967295);var Cp=((Cq+AK*2)&4294967295);uW[((Cp)>>1)]=Cr;var Co=uA[((k5)>>2)];var Cn=AJ;var Cm=AJ;var Cb=((j8+Cm)&4294967295);var Ca=ll[((Cb)>>0)];var B9=oD((Ca),8,0);var B8=(((B9)*2)&4294967295);var B7=(((B8))&65535);var B6=((Co+180)&4294967295);var B5=((B6+Cn*2)&4294967295);uW[((B5)>>1)]=B7;var B4=uA[((k5)>>2)];var B3=AJ;var B2=((B4+272)&4294967295);var B0=((B2+B3*4)&4294967295);uA[((B0)>>2)]=0;var BZ=uA[((k5)>>2)];var BY=AJ;var BX=AJ;var BW=((tO+BX*4)&4294967295);var BT=uA[((BW)>>2)];var BR=((BZ+308)&4294967295);var BP=((BR+BY*4)&4294967295);uA[((BP)>>2)]=BT;var BN=uA[((k5)>>2)];var BL=AJ;var BE=((BN+198)&4294967295);var BD=((BE+BL*2)&4294967295);uW[((BD)>>1)]=0;var BC=AJ;var BB=AJ;var BA=((r+BB*4)&4294967295);var By=uA[((BA)>>2)];var Bw=(((By)*22050)&4294967295);var Bu=uA[((bW)>>2)];var Bs=(((((Bw))|0)/(((Bu))|0))|0);var Bq=((h5+BC*4)&4294967295);uA[((Bq)>>2)]=Bs;var Bj=AJ;var Bi=(((Bj)+1)&4294967295);AJ=Bi;var Bg=(((Bi))|0)<=8;var Be=uA[((k5)>>2)];if(Bg){Bk=3;BF=3;continue}else{Bk=3;BF=4;break}}var Bc=((Be+162)&4294967295);var A9=((Bc+4)&4294967295);uW[((A9)>>1)]=240;var A6=uA[((k5)>>2)];w0(A6,((hY)&4294967295));var A3=uA[((k5)>>2)];var A1=((A3+52)&4294967295);uA[((A1)>>2)]=256;var AZ=uA[((k5)>>2)];var Bh=((AZ+56)&4294967295);uA[((Bh)>>2)]=238;var Bf=uA[((k5)>>2)];var Bd=((Bf+60)&4294967295);uA[((Bd)>>2)]=232;var Bb=B1;var A8=(((Bb))|0)==0;if(A8){BF=5}else{BF=6}if(BF==5){uA[((vm)>>2)]=0;uA[((js)>>2)]=0;var A5=sB(0,0,0)}return;return}function tV(Wc,L0){var GB=vp;vp+=1664;n1(GB,0,1664);var Gm;var Qs=null;var Lg;var I8;var KE;var BS;var GV;var Vb;var Kd;var N0;var Ha;var Vj;var Kp;var NZ;var Hh;var Vl;var Kq;var NY;var Hs;var Vx;var Ks;var NW;var Lr;var Kc;var DK;var L6;var Lz;var KT;var NV;var GQ;var OH;var BH;var I7;var Tu;var KR=GB;var Qp=GB+4;var Ka=GB+16;var De;var TG;var NU;var K7;var Mz;var Qo;var TH;var NR;var MA;var Qr;var TI;var NQ;var LC;var UV;var T3;var NP;var Qu;var Sz;var DQ=GB+28;var UK=GB+32;var Vw=GB+36;var QE=GB+40;var H1=GB+44;var BQ;var OG;var C2;var L1;var LB;var Up;var NO;var To;var DI;var Kr;var CB;var Pn;var DD;var Ti;var CO;var U6;var FA;var Rn=GB+48;var MM;var HB;var U7;var Fz;var H2;var Lv;var LA;var La;var TF;var Sb;var Dt;var Vv;var Fy;var Lx;var Dp=GB+52;var DH;var VT;var Fx;var LD;var DF=GB+140;var Ld;var HE;var Fw;var Ke;var M7=GB+228;var EE;var E0;var Fu;var Id;var PK=GB+316;var C6;var Gy;var ES;var KS;var K5;var Lb;var Lf;var Lj;var Lk;var Lo;var Sw;var Lq;var Sx;var Ls;var Sy;var Lt;var Ly;var SU;var So;var Sp;var Sq;var Sr;var Ss;var St;var Fs;var Su;var Et;var M8;var FF;var Op;var M9;var Mo=GB+404;var HF=GB+408;var DL;var KG;var Md;var KW;var NS;var Io;var Ip;var QY;var Lu;var DG;var KD;var BY=GB+412;var DJ=GB+452;var SV=GB+492;var Gf=GB+532;var DM=GB+572;var NT=GB+612;var Jz;var Tt=GB+652;var JZ=GB+852;var MB=GB+1016;var JW=GB+1020;var Ln=GB+1052;var BZ=GB+1084;var ER=GB+1116;var BM=GB+1436;var BK=GB+1440;var Uo;var Iq=GB+1444;var IM=GB+1448;var FW=GB+1452;var LE;var Gj=GB+1532;var Gw=GB+1580;var J7=GB+1584;var EZ=GB+1624;C6=Wc;Gy=L0;Et=0;DL=0;KG=0;var Fq=Gy;var Fo=(Fq)&2;Md=Fo;KW=0;NS=0;Io=0;Ip=0;QY=0;Lu=0;DG=0;KD=0;var Fm=((BY)&4294967295);var Fg=C6;var Ff=oJ(Fm,Fg);var Fe=((BY)&4294967295);var Fd=la[((Fe)>>0)];var Fc=iB((Fd),8,0)==0;if(Fc){Gm=1}else{Gm=2}if(Gm==1){var Fa=((BY)&4294967295);ns(Fa,((er)&4294967295),8,1,0)}var E9=Gy;var E8=(E9)&16;var E7=(((E8))|0)!=0;if(E7){Gm=3}else{Gm=10}$bb2$$bb5$5:do{if(Gm==3){var E6=((Tt)&4294967295);var E5=C6;var E4=oJ(E6,E5);var E3=((Tt)&4294967295);EE=E3;var E2=EE;var E1=kB(E2,PK);var EY=(((E1))|0)!=0;var EX=oD((EY),1,0);Id=EX;var EW=Id;var EG=iB((EW),8,0)!=0;if(EG){Gm=4}else{Gm=5}if(Gm==4){Fu=0}else{if(Gm==5){var EV=((PK+16)&4294967295);var EU=uA[((EV)>>2)];var EQ=(EU)&61440;var EP=(((EQ))|0)==16384;if(EP){Gm=6}else{Gm=7}if(Gm==6){Fu=-2}else{if(Gm==7){var EO=((PK+44)&4294967295);var EN=uA[((EO)>>2)];Fu=EN}}}}var EM=Fu;E0=EM;var LP=E0;var EL=(((LP))|0)<=0;var EK=oD((EL),1,0);Su=EK;var Fb=iB((EK),8,0)!=0;if(!(Fb)){Gm=29;break $bb2$$bb5$5}Fs=0;Gm=209;break $bb2$$bb5$5}else{if(Gm==10){var EJ=((JZ)&4294967295);var EI=qs(EJ,((kh)&4294967295),((iU)&4294967295),47,47);var EH=((Tt)&4294967295);var ED=((JZ)&4294967295);var EC=((BY)&4294967295);var EB=qs(EH,((so)&4294967295),ED,EC);var EA=((Tt)&4294967295);Ld=EA;var Ez=Ld;var Ey=kB(Ez,M7);var Ex=(((Ey))|0)!=0;var Ew=oD((Ex),1,0);Ke=Ew;var Ev=Ke;var WA=iB((Ev),8,0)!=0;if(WA){Gm=11}else{Gm=12}if(Gm==11){Fw=0}else{if(Gm==12){var Eu=((M7+16)&4294967295);var Es=uA[((Eu)>>2)];var Er=(Es)&61440;var Eq=(((Er))|0)==16384;if(Eq){Gm=13}else{Gm=14}if(Gm==13){Fw=-2}else{if(Gm==14){var Ep=((M7+44)&4294967295);var Eo=uA[((Ep)>>2)];Fw=Eo}}}}var En=Fw;HE=En;var Gx=HE;var Em=(((Gx))|0)<=0;var El=oD((Em),1,0);St=El;var QZ=iB((El),8,0)!=0;if(!(QZ)){Gm=29;break $bb2$$bb5$5}var Ek=((BY)&4294967295);var Ej=la[((Ek)>>0)];var Ei=((MB)&4294967295);la[((Ei)>>0)]=Ej;var Eh=((BY+1)&4294967295);var Eg=la[((Eh)>>0)];var Ef=((MB+1)&4294967295);la[((Ef)>>0)]=Eg;var Ee=((MB+2)&4294967295);la[((Ee)>>0)]=0;var Ed=((Tt)&4294967295);var Ec=((JZ)&4294967295);var Eb=((MB)&4294967295);var Ea=((BY)&4294967295);var D9=qs(Ed,((z3)&4294967295),Ec,Eb,47,Ea);var D8=((Tt)&4294967295);DH=D8;var D7=DH;var D6=kB(D7,DF);var D5=(((D6))|0)!=0;var D4=oD((D5),1,0);LD=D4;var D3=LD;var We=iB((D3),8,0)!=0;if(We){Gm=17}else{Gm=18}if(Gm==17){Fx=0}else{if(Gm==18){var D2=((DF+16)&4294967295);var D1=uA[((D2)>>2)];var D0=(D1)&61440;var DZ=(((D0))|0)==16384;if(DZ){Gm=19}else{Gm=20}if(Gm==19){Fx=-2}else{if(Gm==20){var DX=((DF+44)&4294967295);var DW=uA[((DX)>>2)];Fx=DW}}}}var DV=Fx;VT=DV;var Gk=VT;var DU=(((Gk))|0)<=0;var DT=oD((DU),1,0);Ss=DT;var QV=iB((DT),8,0)!=0;if(!(QV)){Gm=29;break $bb2$$bb5$5}var DS=((Tt)&4294967295);var DR=((JZ)&4294967295);var DP=((BY)&4294967295);var DO=qs(DS,((oV)&4294967295),DR,47,DP);var DN=((Tt)&4294967295);Dt=DN;var U2=Dt;var U0=kB(U2,Dp);var UY=(((U0))|0)!=0;var UW=oD((UY),1,0);Lx=UW;var UT=Lx;var VQ=iB((UT),8,0)!=0;if(VQ){Gm=23}else{Gm=24}if(Gm==23){Fy=0}else{if(Gm==24){var UR=((Dp+16)&4294967295);var UP=uA[((UR)>>2)];var UN=(UP)&61440;var UM=(((UN))|0)==16384;if(UM){Gm=25}else{Gm=26}if(Gm==25){Fy=-2}else{if(Gm==26){var UL=((Dp+44)&4294967295);var UG=uA[((UL)>>2)];Fy=UG}}}}var UE=Fy;Vv=UE;var F7=Vv;var UC=(((F7))|0)<=0;var UA=oD((UC),1,0);Sr=UA;var Pp=iB((UA),8,0)!=0;if(!(Pp)){Gm=29;break $bb2$$bb5$5}var Uy=((Tt)&4294967295);var Uw=((JZ)&4294967295);var Uu=((BY)&4294967295);var Us=qs(Uy,((wx)&4294967295),Uw,47,Uu);Gm=29;break $bb2$$bb5$5}}}while(0);$bb190$$bb12$40:do{if(Gm==29){var Ur=((Tt)&4294967295);var Uq=uE(Ur,((nP)&4294967295));Et=Uq;Jz=((dc)&4294967295);var Uk=(Uq)==0;if(Uk){Gm=30}else{Gm=34}$bb13$$bb18$42:do{if(Gm==30){var Ui=Gy;var Ug=(Ui)&3;var Ue=(((Ug))|0)!=0;if(Ue){Gm=31}else{Gm=32}if(Gm==31){Fs=0;Gm=209;break $bb190$$bb12$40}else{if(Gm==32){var Uc=((BY)&4294967295);var Ua=eo(Uc);var T8=(((Ua))|0)>=0;var T6=oD((T8),1,0);Sq=T6;var T5=Sq;var Po=iB((T5),8,0)!=0;if(!(Po)){Gm=34;break $bb13$$bb18$42}var T4=((BY)&4294967295);Jz=T4}}}}while(0);var TZ=Md;var TX=(((TZ))|0)==0;var TV=uA[((xy)>>2)];var TT=(TV)!=0;var Ir=(TX)&(TT);if(Ir){Gm=35}else{Gm=41}if(Gm==35){var TR=uA[((xy)>>2)];Sb=TR;var TP=Sb;var TN=((TP+1052)&4294967295);var TL=uA[((TN)>>2)];var TK=(TL)!=0;if(TK){Gm=36}else{Gm=38}$bb_i39$$bb1_i40$51:do{if(Gm==36){var TJ=Sb;var TE=((TJ+1052)&4294967295);var TD=uA[((TE)>>2)];TF=TD;var TC=TF;var TB=(TC)!=0;if(!(TB)){Gm=38;break $bb_i39$$bb1_i40$51}var TA=TF;br(TA)}}while(0);var Tz=Sb;var Ty=Tz;La=Ty;var Tx=(Ty)!=0;if(Tx){Gm=39}else{Gm=40}if(Gm==39){var Tw=La;br(Tw)}uA[((xy)>>2)]=0}var Tv=((SV)&4294967295);var Ts=Jz;var Tr=oJ(Tv,Ts);var Tq=((Gf)&4294967295);var Tp=Jz;var Tn=oJ(Tq,Tp);var Tm=((DM)&4294967295);var Tl=Jz;var Tk=oJ(Tm,Tl);var Tj=Md;var Th=(((Tj))|0)==0;if(Th){Gm=42}else{Gm=43}if(Gm==42){uA[((k5)>>2)]=zw;var Tg=C6;H2=((xb)&4294967295);Lv=Tg;LA=40;var Tf=LA;var Te=H2;var Td=Lv;var Tc=xT(Te,Td,Tf);var Tb=LA;var S9=(((Tb)-1)&4294967295);var S8=H2;var S7=((S8+S9)&4294967295);la[((S7)>>0)]=0;la[((((vi)&4294967295))>>0)]=0;la[((((wJ)&4294967295))>>0)]=0;uA[((((mm+8)&4294967295))>>2)]=((xb)&4294967295);uA[((((mm)&4294967295))>>2)]=((vi)&4294967295);uA[((((mm+4)&4294967295))>>2)]=((wJ)&4294967295)}else{if(Gm==43){var S6=qX(((xb)&4294967295),43);M8=S6;var S5=M8;var S4=(S5)!=0;var S3=oD((S4),1,0);Sp=S3;var S2=Sp;var O2=iB((S2),8,0)!=0;if(O2){Gm=44}else{Gm=45}if(Gm==44){var S1=M8;la[((S1)>>0)]=0}var S0=C6;var SZ=((S0+3)&4294967295);var SY=((Tt)&4294967295);var SX=qs(SY,((l5)&4294967295),SZ);var SW=((Tt)&4294967295);var ST=sU(((xb)&4294967295),SW);var SS=uA[((xy)>>2)];var SR=((SS)&4294967295);DG=SR}}var SQ=Md;sb(SQ);var SP=Md;var SO=(((SP))|0)==0;if(SO){Gm=47}else{Gm=48}if(Gm==47){var SN=((DM)&4294967295);var SM=eo(SN)}var SL=((Tt)&4294967295);var SK=((Tt)&4294967295);var SJ=((Tt)&4294967295);var SI=((Tt)&4294967295);var SH=((Tt)&4294967295);var SG=((DJ)&4294967295);var SF=((DJ)&4294967295);var SE=((DJ)&4294967295);var SD=((DJ)&4294967295);var SC=((DJ)&4294967295);var SB=((DJ)&4294967295);var SA=((SV)&4294967295);var Oh=((Gf)&4294967295);var Of=((DM)&4294967295);var Od=((DM)&4294967295);var Ob=((SV)&4294967295);var N9=((FW)&4294967295);var N7=((FW)&4294967295);var N5=((SV)&4294967295);var N3=((SV)&4294967295);var N2=((DM)&4294967295);var N1=((Gf)&4294967295);var NK=((Gj)&4294967295);var NI=((Gj)&4294967295);var NG=((ER)&4294967295);var NE=((NG)&4294967295);var NC=((ER+40)&4294967295);var NA=((NC)&4294967295);var Ny=((ER+80)&4294967295);var Nw=((Ny)&4294967295);var Nv=((ER+120)&4294967295);var Nu=((Nv)&4294967295);var Nq=((ER+160)&4294967295);var No=((Nq)&4294967295);var Nm=((ER+200)&4294967295);var Nk=((Nm)&4294967295);var Ni=((Ln)&4294967295);var Ng=((JW)&4294967295);var Ne=((BZ)&4294967295);var Nc=((NT)&4294967295);var Nb=((Tt)&4294967295);var Na=((NT)&4294967295);var M3=((EZ)&4294967295);var M1=((J7)&4294967295);var MZ=((EZ)&4294967295);var MX=((J7)&4294967295);var MV=((EZ)&4294967295);var MT=((DM)&4294967295);var MR=((Ka)&4294967295);var MP=((Qp)&4294967295);var MO=((Ka)&4294967295);var MN=((Qp)&4294967295);var ML=((Ka)&4294967295);$bb153$69:while(1){var I6=Et;var I5=(I6)==0;if(I5){Gm=181;break $bb153$69}var I4=Et;var I2=pN(SL,200,I4);var I0=(I2)==0;if(I0){Gm=183;break $bb153$69}SU=1;So=1;M8=SK;$bb32$73:while(1){var MI=M8;var MH=la[((MI)>>0)];var MG=iB((MH),8,0)==0;if(MG){Gm=53;break $bb32$73}var MF=M8;var ME=la[((MF)>>0)];var MD=iB((ME),8,0);var MC=xE(MD);var My=(((MC))|0)==0;if(!(My)){Gm=53;break $bb32$73}var MK=M8;var MJ=((MK+1)&4294967295);M8=MJ;Gm=51;continue $bb32$73}var Mx=M8;la[((Mx)>>0)]=0;var Mw=M8;var Mv=((Mw+1)&4294967295);M8=Mv;var Mu=la[((SJ)>>0)];var Mt=iB((Mu),8,0)==0;if(Mt){Gm=180;continue $bb153$69}MM=((uU)&4294967295);HB=SI;$bb3_i45$79:while(1){var Mi=MM;var Mh=((Mi)&4294967295);var Mg=uA[((Mh)>>2)];var Mf=(Mg)!=0;var Me=MM;if(!(Mf)){Gm=59;break $bb3_i45$79}var Ms=((Me)&4294967295);var Mr=uA[((Ms)>>2)];var Mq=HB;var Mp=pt(Mq,Mr);var Mn=(((Mp))|0)==0;var Mm=MM;if(Mn){Gm=56;break $bb3_i45$79}var Mj=((Mm+8)&4294967295);MM=Mj;Gm=58;continue $bb3_i45$79}if(Gm==59){var Mc=((Me+4)&4294967295);var Mb=uA[((Mc)>>2)];Fz=Mb;Qs=59}else{if(Gm==56){var Ml=((Mm+4)&4294967295);var Mk=uA[((Ml)>>2)];Fz=Mk;Qs=56}}var Ma=Qs==56?Mk:(Mb);U7=Ma;FF=Ma;if(Ma==1){Gm=74}else{if(Ma==2){Gm=62}else{if(Ma==3){Gm=78}else{if(Ma==4){Gm=85}else{if(Ma==5){Gm=94}else{if(Ma==6){Gm=93}else{if(Ma==7){Gm=95}else{if(Ma==8){Gm=104}else{if(Ma==9){Gm=151}else{if(Ma==10){Gm=152}else{if(Ma==11){Gm=154}else{if(Ma==12){Gm=156}else{if(Ma==13){Gm=160}else{if(Ma==14){Gm=163}else{if(Ma==15){Gm=165}else{if(Ma==16){Gm=169}else{if(Ma==17){Gm=135}else{if(Ma==18){Gm=108}else{if(Ma==19){Gm=110}else{if(Ma==20){Gm=105}else{if(Ma==21){Gm=106}else{if(Ma==22){Gm=107}else{if(Ma==23){Gm=61}else{if(Ma==24){Gm=136}else{if(Ma==25){Gm=137}else{if(Ma==26){Gm=140}else{if(Ma==27){Gm=141}else{if(Ma==28){Gm=172}else{if(Ma==29){Gm=175}else{if(Ma==30){Gm=176}else{if(Ma==31){Gm=171}else{if(Ma==32){Gm=130}else{if(Ma==33){Gm=170}else{Gm=177}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}if(Gm==177){var Jy=FF;var Jw=(Jy)&65280;var Js=(((Jw))|0)==256;if(Js){Gm=178}else{Gm=179}if(Gm==178){var Jr=FF;var Jq=(Jr)&255;var Jo=DG;var Jm=((Jo+24)&4294967295);var Jk=((Jm+Jq*4)&4294967295);var Ji=M8;var Jg=lE(Ji,((K)&4294967295),Jk);Gm=180;continue $bb153$69}else{if(Gm==179){var Je=uA[((ta)>>2)];var Jc=Am(Je,((z7)&4294967295),SH);Gm=180;continue $bb153$69}}}else{if(Gm==74){var GM=Md;var GK=(((GM))|0)==0;if(!(GK)){Gm=180;continue $bb153$69}var GI=M8;var GG=la[((GI)>>0)];var GE=iB((GG),8,0);var GC=xE(GE);var GA=(((GC))|0)!=0;var Gz=M8;if(GA){Qs=75;Gm=76}else{Qs=75;Gm=77}$bb47$$bb49$94:do{if(Gm==76){while(1){var Gv=Qs==76?Go:(Gz);var Gu=((Gv+1)&4294967295);M8=Gu;var Gt=M8;var Gs=la[((Gt)>>0)];var Gr=iB((Gs),8,0);var Gq=xE(Gr);var Gp=(((Gq))|0)!=0;var Go=M8;if(Gp){Qs=76;Gm=76;continue}else{Qs=76;Gm=77;break $bb47$$bb49$94}}}}while(0);var DY=Qs==75?Gz:(Go);To=((vi)&4294967295);DI=DY;Kr=40;var Gn=Kr;var Gl=To;var Gi=DI;var Gh=xT(Gl,Gi,Gn);var Gg=Kr;var Ge=(((Gg)-1)&4294967295);var Gd=To;var Gc=((Gd+Ge)&4294967295);la[((Gc)>>0)]=0;Gm=180;continue $bb153$69}else{if(Gm==62){var L5=Md;var L4=(((L5))|0)!=0;if(L4){Gm=180;continue $bb153$69}uA[((Iq)>>2)]=5;la[((SG)>>0)]=0;var L3=M8;var L2=lE(L3,((tl)&4294967295),SF,Iq);var LZ=pt(SE,((bZ)&4294967295));var LY=(((LZ))|0)==0;if(LY){Gm=180;continue $bb153$69}var LX=wg(SD);var LW=(((LX)+2)&4294967295);Uo=LW;var LV=KG;var LU=((99-(LV))&4294967295);var LT=Uo;var LS=(((LU))>>>0)>(((LT))>>>0);if(LS){Gm=65}else{Gm=66}if(Gm==65){var LR=KG;var LQ=uA[((Iq)>>2)];var LO=(((LQ))&255);var LN=((wJ+LR)&4294967295);la[((LN)>>0)]=LO;var LM=KG;var LL=(((LM)+1)&4294967295);var LK=((wJ+LL)&4294967295);var LJ=oJ(LK,SC);var LI=KG;var LH=Uo;var LG=(((LH)+(LI))&4294967295);KG=LG}var LF=KW;var HX=(((LF))|0)==0;if(!(HX)){Gm=180;continue $bb153$69}Ti=SB;CO=((vR)&4294967295);var HV=Ti;var HT=CO;var HR=g2(HV,HT,Rn,1);FA=HR;var HP=FA;U6=HP;var Sc=U6;Jz=Sc;KW=1;var HN=Jz;var HL=oJ(SA,HN);var HJ=Jz;var HH=oJ(Oh,HJ);var HG=Jz;var Hz=oJ(Of,HG);var Hx=eo(Od);var Hv=KD;var Ht=(Hv)!=0;if(Ht){Gm=68}else{Gm=73}$bb42$$bb43$105:do{if(Gm==68){var Hq=KD;DD=Hq;var Ho=DD;var Hm=((Ho+1052)&4294967295);var Hk=uA[((Hm)>>2)];var Hj=(Hk)!=0;if(Hj){Gm=69}else{Gm=71}$bb_i50$$bb1_i52$107:do{if(Gm==69){var Hi=DD;var Hd=((Hi+1052)&4294967295);var Hb=uA[((Hd)>>2)];Pn=Hb;var G8=Pn;var G6=(G8)!=0;if(!(G6)){Gm=71;break $bb_i50$$bb1_i52$107}var G4=Pn;br(G4)}}while(0);var G2=DD;var G0=G2;CB=G0;var GY=(G0)!=0;if(!(GY)){Gm=73;break $bb42$$bb43$105}var GX=CB;br(GX)}}while(0);var GW=jr(Ob);KD=GW;var GR=KD;var GO=((GR)&4294967295);DG=GO;Gm=180;continue $bb153$69}else{if(Gm==78){var Gb=M8;var Ga=lE(Gb,((tl)&4294967295),N9,IM);L1=((b6)&4294967295);LB=N7;while(1){var FZ=L1;var FY=((FZ)&4294967295);var FX=uA[((FY)>>2)];var FV=(FX)!=0;var FU=L1;if(!(FV)){Gm=83;break}var F9=((FU)&4294967295);var F8=uA[((F9)>>2)];var F6=LB;var F5=pt(F6,F8);var F4=(((F5))|0)==0;var F3=L1;if(F4){Gm=80;break}var F0=((F3+8)&4294967295);L1=F0;Gm=82;continue}if(Gm==83){var FT=((FU+4)&4294967295);var FS=uA[((FT)>>2)];NO=FS}else{if(Gm==80){var F2=((F3+4)&4294967295);var F1=uA[((F2)>>2)];NO=F1}}var FR=NO;Up=FR;var Lw=Up;var FQ=(((Lw))&255);la[((((mm+12)&4294967295))>>0)]=FQ;var FP=uA[((IM)>>2)];var FO=(((FP))&255);la[((((mm+13)&4294967295))>>0)]=FO;Gm=180;continue $bb153$69}else{if(Gm==85){var FN=Md;var FM=(((FN))|0)!=0;if(FM){Gm=180;continue $bb153$69}var FL=M8;var FK=lE(FL,((kZ)&4294967295),N5);var FJ=KD;var FI=(FJ)!=0;if(FI){Gm=87}else{Gm=92}$bb54$$bb55$124:do{if(Gm==87){var FH=KD;C2=FH;var FG=C2;var FE=((FG+1052)&4294967295);var FD=uA[((FE)>>2)];var FC=(FD)!=0;if(FC){Gm=88}else{Gm=90}$bb_i71$$bb1_i73$126:do{if(Gm==88){var FB=C2;var Fv=((FB+1052)&4294967295);var Ft=uA[((Fv)>>2)];OG=Ft;var Fr=OG;var Fp=(Fr)!=0;if(!(Fp)){Gm=90;break $bb_i71$$bb1_i73$126}var Fn=OG;br(Fn)}}while(0);var Fl=C2;var Fk=Fl;BQ=Fk;var Fj=(Fk)!=0;if(!(Fj)){Gm=92;break $bb54$$bb55$124}var Fi=BQ;br(Fi)}}while(0);var Fh=jr(N3);KD=Fh;var AH=KD;var e=((AH)&4294967295);DG=e;Gm=180;continue $bb153$69}else{if(Gm==94){var WJ=M8;var WH=lE(WJ,((kZ)&4294967295),N2);Gm=180;continue $bb153$69}else{if(Gm==93){var WN=M8;var WL=lE(WN,((kZ)&4294967295),N1);Gm=180;continue $bb153$69}else{if(Gm==95){var WF=M8;Qu=WF;uA[((UK)>>2)]=100;uA[((Vw)>>2)]=100;uA[((QE)>>2)]=100;uA[((H1)>>2)]=0;var WD=Qu;var WC=lE(WD,((f0)&4294967295),DQ,UK,Vw,QE,H1);Sz=WC;var WB=Sz;var Ww=(((WB))|0)<=1;if(Ww){Gm=180;continue $bb153$69}var Wu=uA[((DQ)>>2)];var Ws=(((Wu))|0)<0;var Wq=uA[((DQ)>>2)];var Wo=(((Wq))|0)>8;var ET=(Ws)|(Wo);if(ET){Gm=180;continue $bb153$69}var Wm=uA[((UK)>>2)];var Wk=(((Wm))|0)>=0;if(Wk){Gm=98}else{Gm=99}if(Gm==98){var Wi=uA[((k5)>>2)];var Wh=uA[((DQ)>>2)];var Wg=uA[((UK)>>2)];var Wa=(((Wg))|0);var V8=(Wa)*2.56001;var V6=(((V8))|0);var V4=(((V6))&65535);var V2=((Wi+144)&4294967295);var V0=((V2+Wh*2)&4294967295);uW[((V0)>>1)]=V4}var VY=uA[((Vw)>>2)];var VW=(((VY))|0)>=0;if(VW){Gm=100}else{Gm=101}if(Gm==100){var VV=uA[((k5)>>2)];var VU=uA[((DQ)>>2)];var VO=uA[((Vw)>>2)];var VM=(((VO))|0);var VK=(VM)*2.56001;var VI=(((VK))|0);var VG=(((VI))&65535);var VE=((VV+162)&4294967295);var VC=((VE+VU*2)&4294967295);uW[((VC)>>1)]=VG}var VA=uA[((QE)>>2)];var Vz=(((VA))|0)>=0;if(Vz){Gm=102}else{Gm=103}if(Gm==102){var Vy=uA[((k5)>>2)];var Vu=uA[((DQ)>>2)];var Vt=uA[((QE)>>2)];var Vs=(((Vt))|0);var Vr=(Vs)*2.56001;var Vq=(((Vr))|0);var Vp=(((Vq))&65535);var Vo=((Vy+180)&4294967295);var Vn=((Vo+Vu*2)&4294967295);uW[((Vn)>>1)]=Vp}var Vm=uA[((k5)>>2)];var Vk=uA[((DQ)>>2)];var Vi=uA[((H1)>>2)];var Vh=(((Vi))&65535);var Vg=((Vm+198)&4294967295);var Vf=((Vg+Vk*2)&4294967295);uW[((Vf)>>1)]=Vh;Gm=180;continue $bb153$69}else{if(Gm==104){var Ve=M8;var Vd=lE(Ve,((s4)&4294967295),BM,BK);M9=Vd;var Vc=uA[((k5)>>2)];var Va=uA[((BM)>>2)];var U9=(((Va)-9)&4294967295);var U8=(U9)<<12;var U5=((Vc+44)&4294967295);uA[((U5)>>2)]=U8;var U4=uA[((k5)>>2)];var U3=uA[((BK)>>2)];var U1=uA[((BM)>>2)];var UZ=(((U3)-(U1))&4294967295);var UX=(((UZ)*108)&4294967295);var UU=((U4+48)&4294967295);uA[((UU)>>2)]=UX;var US=uA[((BM)>>2)];var UQ=(((US)-82)&4294967295);var UO=(((UQ))|0);var UJ=(UO)/82;LE=UJ;var UI=uA[((k5)>>2)];var UH=LE;var UF=(UH)/4;var UD=(UF)+1;var UB=(UD)*256;var Uz=(((UB))|0);var Ux=((UI+96)&4294967295);uA[((Ux)>>2)]=Uz;Gm=180;continue $bb153$69}else{if(Gm==151){uA[((Mo)>>2)]=0;var Br=uA[((k5)>>2)];var Bq=((Br+80)&4294967295);uA[((Bq)>>2)]=0;var Bp=uA[((k5)>>2)];var Be=((Bp+80)&4294967295);var Bd=uA[((k5)>>2)];var Bc=((Bd+76)&4294967295);var Bb=M8;var Ba=lE(Bb,((s4)&4294967295),Bc,Be);Gm=180;continue $bb153$69}else{if(Gm==152){var A9=M8;var A8=lE(A9,((K)&4294967295),Mo);var A7=(((A8))|0)==1;var A6=oD((A7),1,0);Lo=A6;var A5=Lo;var Lp=iB((A5),8,0)!=0;if(!(Lp)){Gm=180;continue $bb153$69}var AU=uA[((k5)>>2)];var AT=uA[((Mo)>>2)];var AS=(((AT)*32)&4294967295);var AR=((AU+68)&4294967295);uA[((AR)>>2)]=AS;Gm=180;continue $bb153$69}else{if(Gm==154){var AQ=M8;var AP=lE(AQ,((K)&4294967295),Mo);var AO=(((AP))|0)==1;var AN=oD((AO),1,0);Lk=AN;var AM=Lk;var Lm=iB((AM),8,0)!=0;if(!(Lm)){Gm=180;continue $bb153$69}var AL=uA[((k5)>>2)];var AK=uA[((Mo)>>2)];var AJ=((AL+72)&4294967295);uA[((AJ)>>2)]=AK;Gm=180;continue $bb153$69}else{if(Gm==156){var AI=M8;var i=lE(AI,((K)&4294967295),Mo);var WO=(((i))|0)==1;var WM=oD((WO),1,0);Lj=WM;var WK=Lj;var Ll=iB((WK),8,0)!=0;if(!(Ll)){Gm=180;continue $bb153$69}var WI=uA[((Mo)>>2)];var WG=(((WI))|0)>4;if(WG){Gm=158}else{Gm=159}if(Gm==158){var WE=uA[((k5)>>2)];var Wz=((WE+88)&4294967295);uA[((Wz)>>2)]=1;uA[((Mo)>>2)]=4}var Wy=uA[((k5)>>2)];var Wx=uA[((Mo)>>2)];var Wv=(((Wx)+1)&4294967295);var Wt=((Wy+84)&4294967295);uA[((Wt)>>2)]=Wv;Gm=180;continue $bb153$69}else{if(Gm==160){var Wr=M8;Lr=Wr;Kc=NK;DK=0;var Wp=Kc;Qs=160;while(1){var Wn=Qs==160?Wp:(V9);var Wl=DK;var Wj=((Wn+4*Wl)&4294967295);uA[((Wj)>>2)]=-1;var Wf=DK;var Wd=(((Wf)+1)&4294967295);DK=Wd;var Wb=(((Wd))|0)<=11;var V9=Kc;if(Wb){Qs=161;Gm=161;continue}else{Qs=161;Gm=162;break}}var V7=((V9+36)&4294967295);var V5=Kc;var V3=((V5+32)&4294967295);var V1=Kc;var VZ=((V1+28)&4294967295);var VX=Kc;var VS=((VX+24)&4294967295);var VR=Kc;var VP=((VR+20)&4294967295);var VN=Kc;var VL=((VN+16)&4294967295);var VJ=Kc;var VH=((VJ+12)&4294967295);var VF=Kc;var VD=((VF+8)&4294967295);var VB=Kc;var Rw=((VB+4)&4294967295);var Rv=Kc;var Ru=((Rv)&4294967295);var Rt=Lr;var Rs=lE(Rt,((nX)&4294967295),Ru,Rw,VD,VH,VL,VP,VS,VZ,V3,V7);var Rr=uA[((k5)>>2)];w0(Rr,NI);Gm=180;continue $bb153$69}else{if(Gm==163){var Rq=M8;var Rp=lE(Rq,((K)&4294967295),Mo);var Ro=(((Rp))|0)==1;var Rm=oD((Ro),1,0);Lf=Rm;var Rb=Lf;var Lh=iB((Rb),8,0)!=0;if(!(Lh)){Gm=180;continue $bb153$69}var Ra=uA[((k5)>>2)];var Q9=uA[((Mo)>>2)];var Q8=(((Q9)*64)&4294967295);var Q7=(((((Q8))|0)/100)|0);var Q6=((Ra+92)&4294967295);uA[((Q6)>>2)]=Q7;Gm=180;continue $bb153$69}else{if(Gm==165){var Q5=uA[((k5)>>2)];var Q4=uA[((k5)>>2)];var Q3=((Q4+272)&4294967295);var Q2=((Q3+4)&4294967295);var QO=M8;Hs=QO;Vx=Q2;var QN=Vx;var QM=QN;ud(QM,0,12,1,0);var QL=Vx;var QK=((QL+28)&4294967295);var QJ=Vx;var QI=((QJ+24)&4294967295);var QH=Vx;var QG=((QH+20)&4294967295);var QF=Vx;var QD=((QF+16)&4294967295);var QC=Vx;var QB=((QC+12)&4294967295);var QA=Vx;var Qz=((QA+8)&4294967295);var Qy=Vx;var Qx=((Qy+4)&4294967295);var Qw=Vx;var Qv=((Qw)&4294967295);var Qt=Hs;var Qq=lE(Qt,((tb)&4294967295),Qv,Qx,Qz,QB,QD,QG,QI,QK);NW=Qq;var Qn=NW;Ks=Qn;var Ck=Ks;var Qm=((Q5+272)&4294967295);var Ql=((Qm)&4294967295);uA[((Ql)>>2)]=Ck;Op=1;while(1){var Qk=Op;var Qj=(Qk)&1;var Qi=(((Qj))&255);var Le=iB((Qi),8,0)!=0;if(Le){Gm=167}else{Gm=168}if(Gm==167){var Qh=uA[((k5)>>2)];var Qg=Op;var Qf=uA[((k5)>>2)];var Qe=Op;var Qd=((Qf+272)&4294967295);var Qc=((Qd+Qe*4)&4294967295);var Qb=uA[((Qc)>>2)];var Qa=((0-(Qb))&4294967295);var P9=((Qh+272)&4294967295);var P8=((P9+Qg*4)&4294967295);uA[((P8)>>2)]=Qa}var P7=Op;var P6=(((P7)+1)&4294967295);Op=P6;var P5=(((P6))|0)<=7;if(P5){Gm=166;continue}else{Gm=180;continue $bb153$69}}}else{if(Gm==169){var P4=uA[((k5)>>2)];var P3=uA[((k5)>>2)];var P2=((P3+308)&4294967295);var P0=((P2+4)&4294967295);var PY=M8;Hh=PY;Vl=P0;var PW=Vl;var PU=PW;ud(PU,0,12,1,0);var PS=Vl;var PQ=((PS+28)&4294967295);var PO=Vl;var PJ=((PO+24)&4294967295);var PI=Vl;var PH=((PI+20)&4294967295);var PF=Vl;var PD=((PF+16)&4294967295);var PB=Vl;var Pz=((PB+12)&4294967295);var Px=Vl;var Pv=((Px+8)&4294967295);var Pt=Vl;var Pm=((Pt+4)&4294967295);var Pl=Vl;var Pk=((Pl)&4294967295);var Pi=Hh;var Pg=lE(Pi,((tb)&4294967295),Pk,Pm,Pv,Pz,PD,PH,PJ,PQ);NY=Pg;var Pe=NY;Kq=Pe;var Cf=Kq;var Pc=((P4+308)&4294967295);var Pa=((Pc)&4294967295);uA[((Pa)>>2)]=Cf;Gm=180;continue $bb153$69}else{if(Gm==135){var HC=DG;var HA=((HC+4)&4294967295);var Hy=DG;var Hw=((Hy)&4294967295);var Hu=M8;var Hr=lE(Hu,((s4)&4294967295),Hw,HA);Gm=180;continue $bb153$69}else{if(Gm==108){var OB=M8;var OA=lE(OB,((s4)&4294967295),tR,v5);var Oz=uA[((tR)>>2)];var Oy=(Oz)&255;var Ox=(((Oy))|0)!=0;if(!(Ox)){Gm=180;continue $bb153$69}var Ow=uA[((tR)>>2)];var Ov=(Ow)&255;var Ou=DG;var Ot=((Ou+228)&4294967295);uA[((Ot)>>2)]=Ov;Gm=180;continue $bb153$69}else{if(Gm==110){var Os=M8;var Or=lE(Os,((g)&4294967295),NE,NA,Nw,Nu,No,Nk);M9=Or;var Oq=DG;var Oo=((Oq+228)&4294967295);uA[((Oo)>>2)]=0;Op=0;var On=Op;var Om=M9;var Ol=(((On))|0)<(((Om))|0);if(!(Ol)){Gm=180;continue $bb153$69}$bb67$174:while(1){var Ok=Op;var Oj=((ER+Ok*40)&4294967295);var Oi=((Oj)&4294967295);var Og=pt(Oi,((uT)&4294967295));var Oe=(((Og))|0)==0;if(Oe){Gm=121}else{Gm=112}if(Gm==112){var Oc=Op;var Oa=((ER+Oc*40)&4294967295);var N8=((Oa)&4294967295);De=N8;K7=0;while(1){var Nz=uA[((ft)>>2)];var Nx=K7;var Nt=(((Nx))|0)<(((Nz))|0);if(!(Nt)){Gm=117;break}var N6=uA[((aP)>>2)];var N4=K7;var NN=((N6+68*N4)&4294967295);var NM=((NN)&4294967295);var NL=((NM)&4294967295);var NJ=De;var NH=pt(NJ,NL);var NF=(((NH))|0)==0;var ND=K7;if(NF){Gm=114;break}var NB=(((ND)+1)&4294967295);K7=NB;Gm=116;continue}if(Gm==117){NU=-1}else{if(Gm==114){NU=ND}}var Ns=NU;TG=Ns;var Li=TG;uA[((Mo)>>2)]=Li;var Nr=uA[((Mo)>>2)];var Np=(((Nr))|0)<0;var Nn=oD((Np),1,0);Ly=Nn;var NX=iB((Nn),8,0)!=0;var Nl=Op;if(NX){Gm=119}else{Gm=120}if(Gm==119){var Nj=((ER+Nl*40)&4294967295);var Nh=((Nj)&4294967295);var Nf=uA[((ta)>>2)];var Nd=Am(Nf,((ir)&4294967295),Nh)}else{if(Gm==120){var M6=uA[((Mo)>>2)];var M5=(((M6))&255);var M4=DG;var M2=((M4+232)&4294967295);var M0=((M2+Nl)&4294967295);la[((M0)>>0)]=M5}}}var MY=Op;var MW=(((MY)+1)&4294967295);Op=MW;var MU=Op;var MS=M9;var MQ=(((MU))|0)<(((MS))|0);if(MQ){Gm=111;continue $bb67$174}else{Gm=180;continue $bb153$69}}}else{if(Gm==105){var Uv=M8;LC=Uv;UV=Ni;var Ut=UV;var Un=Ut;ud(Un,0,12,1,0);var Um=UV;var Ul=((Um+28)&4294967295);var Uj=UV;var Uh=((Uj+24)&4294967295);var Uf=UV;var Ud=((Uf+20)&4294967295);var Ub=UV;var T9=((Ub+16)&4294967295);var T7=UV;var T2=((T7+12)&4294967295);var T1=UV;var T0=((T1+8)&4294967295);var TY=UV;var TW=((TY+4)&4294967295);var TU=UV;var TS=((TU)&4294967295);var TQ=LC;var TO=lE(TQ,((tb)&4294967295),TS,TW,T0,T2,T9,Ud,Uh,Ul);NP=TO;var TM=NP;T3=TM;var Ds=T3;Ip=Ds;Gm=180;continue $bb153$69}else{if(Gm==106){var P1=M8;MA=P1;Qr=Ng;var PZ=Qr;var PX=PZ;ud(PX,0,12,1,0);var PV=Qr;var PT=((PV+28)&4294967295);var PR=Qr;var PP=((PR+24)&4294967295);var PN=Qr;var PM=((PN+20)&4294967295);var PL=Qr;var PG=((PL+16)&4294967295);var PE=Qr;var PC=((PE+12)&4294967295);var PA=Qr;var Py=((PA+8)&4294967295);var Pw=Qr;var Pu=((Pw+4)&4294967295);var Ps=Qr;var Pr=((Ps)&4294967295);var Pq=MA;var Pj=lE(Pq,((tb)&4294967295),Pr,Pu,Py,PC,PG,PM,PP,PT);NQ=Pj;var Ph=NQ;TI=Ph;var Dr=TI;Io=Dr;Gm=180;continue $bb153$69}else{if(Gm==107){var Pf=M8;Mz=Pf;Qo=Ne;var Pd=Qo;var Pb=Pd;ud(Pb,0,12,1,0);var O9=Qo;var O8=((O9+28)&4294967295);var O6=Qo;var O4=((O6+24)&4294967295);var O3=Qo;var OZ=((O3+20)&4294967295);var OX=Qo;var OU=((OX+16)&4294967295);var OS=Qo;var OQ=((OS+12)&4294967295);var OO=Qo;var OM=((OO+8)&4294967295);var OK=Qo;var OJ=((OK+4)&4294967295);var OI=Qo;var OF=((OI)&4294967295);var OE=Mz;var OD=lE(OE,((tb)&4294967295),OF,OJ,OM,OQ,OU,OZ,O4,O8);NR=OD;var OC=NR;TH=OC;var Dq=TH;QY=Dq;Gm=180;continue $bb153$69}else{if(Gm==61){var L9=M8;var L8=la[((L9)>>0)];var L7=iB((L8),8,0)!=0;if(!(L7)){Gm=180;continue $bb153$69}$bb78_preheader$194:while(1){var IB=M8;var Iz=la[((IB)>>0)];var Ix=iB((Iz),8,0);var Iv=xE(Ix);var It=(((Iv))|0)!=0;if(It){Gm=122}else{Gm=123}$bb77$$bb79$196:do{if(Gm==122){while(1){var JK=M8;var JI=((JK+1)&4294967295);M8=JI;var JG=M8;var JE=la[((JG)>>0)];var JC=iB((JE),8,0);var JA=xE(JC);var Jx=(((JA))|0)!=0;if(Jx){Gm=122;continue}else{Gm=123;break $bb77$$bb79$196}}}}while(0);M9=-1;var Jv=M8;var Ju=wU(Jv);M9=Ju;var Jt=M9;var Jp=(((Jt))|0)<=0;var Jn=M9;var Jl=(((Jn))|0)>31;var K9=(Jp)|(Jl);if(K9){Gm=124}else{Gm=125}if(Gm==124){Sy=0;Lt=0}else{if(Gm==125){Sy=1;Lt=1;var Jj=M8;var Jh=((Jj+1)&4294967295);M8=Jh;var Jf=M9;var Jd=1<<(Jf);var Jb=Lu;var Ja=(Jd)|(Jb);Lu=Ja}}var I9=M8;var I3=la[((I9)>>0)];var I1=iB((I3),8,0);var IZ=mx(I1);var IY=(((IZ))|0)!=0;if(IY){Gm=127}else{Gm=128}$bb87$$bb89_loopexit$204:do{if(Gm==127){while(1){var IW=M8;var IU=((IW+1)&4294967295);M8=IU;var IS=M8;var IQ=la[((IS)>>0)];var IO=iB((IQ),8,0);var IN=mx(IO);var IJ=(((IN))|0)!=0;if(IJ){Gm=127;continue}else{Gm=128;break $bb87$$bb89_loopexit$204}}}}while(0);var IH=M8;var IF=la[((IH)>>0)];var ID=iB((IF),8,0)!=0;if(ID){Gm=129;continue $bb78_preheader$194}else{Gm=180;continue $bb153$69}}}else{if(Gm==136){var Hp=DG;var Hn=((Hp+20)&4294967295);var Hl=DG;var Hg=((Hl+16)&4294967295);var Hf=DG;var He=((Hf+12)&4294967295);var Hc=DG;var G9=((Hc+8)&4294967295);var G7=M8;var G5=lE(G7,((qg)&4294967295),G9,He,Hg,Hn);Gm=180;continue $bb153$69}else{if(Gm==137){var G3=M8;var G1=lE(G3,((K)&4294967295),Mo);var GZ=(((G1))|0)!=1;var GU=uA[((Mo)>>2)];var GT=(((GU))|0)>19;var K8=(GZ)|(GT);if(K8){Gm=138}else{Gm=139}if(Gm==138){Sx=0;Ls=0;Gm=180;continue $bb153$69}else{if(Gm==139){Sx=1;Ls=1;var GS=uA[((Mo)>>2)];var GP=((Aa+GS*4)&4294967295);var GN=uA[((GP)>>2)];var GL=KD;var GJ=((GL+696)&4294967295);uA[((GJ)>>2)]=GN;Gm=180;continue $bb153$69}}}else{if(Gm==140){var GH=DG;var GF=((GH+188)&4294967295);var GD=DG;var CG=((GD+184)&4294967295);var CF=M8;var CE=lE(CF,((s4)&4294967295),CG,GF);Gm=180;continue $bb153$69}else{if(Gm==141){uA[((HF)>>2)]=0;var CD=M8;var CC=lE(CD,((xR)&4294967295),Nc,Mo,HF);var CA=(((CC))|0)<=1;if(CA){Gm=150}else{Gm=142}$bb112$$bb106$215:do{if(Gm==142){L6=((bq)&4294967295);Lz=Na;while(1){var Ce=L6;var Cd=((Ce)&4294967295);var Cc=uA[((Cd)>>2)];var Cb=(Cc)!=0;var Ca=L6;if(!(Cb)){Gm=147;break}var Cz=((Ca)&4294967295);var Cy=uA[((Cz)>>2)];var Cx=Lz;var Cw=pt(Cx,Cy);var Cl=(((Cw))|0)==0;var Cj=L6;if(Cl){Gm=144;break}var Cg=((Cj+8)&4294967295);L6=Cg;Gm=146;continue}if(Gm==147){var BX=((Ca+4)&4294967295);var BW=uA[((BX)>>2)];NV=BW;Qs=147}else{if(Gm==144){var Ci=((Cj+4)&4294967295);var Ch=uA[((Ci)>>2)];NV=Ch;Qs=144}}var BV=Qs==144?Ch:(BW);KT=BV;Op=BV;var BU=(((BV))|0)<0;if(BU){Gm=150;break $bb112$$bb106$215}Sw=1;Lq=1;var BT=Op;var BR=uA[((Mo)>>2)];var BP=DG;var BO=((BP+24)&4294967295);var BN=((BO+BT*4)&4294967295);uA[((BN)>>2)]=BR;var BL=Op;var By=uA[((HF)>>2)];var Bx=DG;var Bw=((Bx+100)&4294967295);var Bv=((Bw+BL*4)&4294967295);uA[((Bv)>>2)]=By;Gm=180;continue $bb153$69}}while(0);Sw=0;Lq=0;var Bu=uA[((ta)>>2)];var Bt=M8;var Bs=Am(Bu,((va)&4294967295),Nb,Bt);Gm=180;continue $bb153$69}else{if(Gm==172){uA[((Gw)>>2)]=16000;la[((M3)>>0)]=0;var ON=M8;var OL=lE(ON,((bn)&4294967295),M1,MZ,Gw);var K6=uA[((Gw)>>2)];var K4=sB(MX,MV,K6);var K3=(((K4))|0)!=0;var K2=oD((K3),1,0);Lb=K2;var K1=Lb;var Lc=iB((K1),8,0)!=0;if(Lc){Gm=173}else{Gm=174}if(Gm==173){var K0=uA[((ta)>>2)];var KZ=yf(((sj)&4294967295),1,23,K0)}var KY=uA[((k5)>>2)];var KX=uA[((Gw)>>2)];var KV=((KY+108)&4294967295);uA[((KV)>>2)]=KX;Gm=180;continue $bb153$69}else{if(Gm==175){var KP=uA[((k5)>>2)];var KO=((KP+112)&4294967295);var KN=((KO)&4294967295);uA[((KN)>>2)]=1;var KM=uA[((k5)>>2)];var KL=((KM+112)&4294967295);var KK=((KL)&4294967295);var KJ=M8;Ha=KJ;Vj=KK;var KI=Vj;var KH=KI;ud(KH,0,12,1,0);var KF=Vj;var KC=((KF+28)&4294967295);var KB=Vj;var KA=((KB+24)&4294967295);var Kz=Vj;var Ky=((Kz+20)&4294967295);var Kx=Vj;var Kw=((Kx+16)&4294967295);var Kv=Vj;var Ku=((Kv+12)&4294967295);var Kt=Vj;var Ko=((Kt+8)&4294967295);var Kn=Vj;var Km=((Kn+4)&4294967295);var Kl=Vj;var Kk=((Kl)&4294967295);var Kj=Ha;var Ki=lE(Kj,((tb)&4294967295),Kk,Km,Ko,Ku,Kw,Ky,KA,KC);NZ=Ki;var Kh=NZ;Kp=Kh;var Kg=uA[((k5)>>2)];var Kf=uA[((k5)>>2)];var Kb=((Kf+112)&4294967295);var J9=((Kb+20)&4294967295);var J8=uA[((J9)>>2)];var J6=(((J8)-40)&4294967295);var J5=((Kg+112)&4294967295);var J4=((J5+20)&4294967295);uA[((J4)>>2)]=J6;Gm=180;continue $bb153$69}else{if(Gm==176){var J3=M8;GV=J3;Vb=((bX+32)&4294967295);var J2=Vb;var J1=J2;ud(J1,0,12,1,0);var J0=Vb;var JY=((J0+28)&4294967295);var JX=Vb;var JV=((JX+24)&4294967295);var JU=Vb;var JT=((JU+20)&4294967295);var JS=Vb;var JR=((JS+16)&4294967295);var JQ=Vb;var JP=((JQ+12)&4294967295);var JO=Vb;var JN=((JO+8)&4294967295);var JM=Vb;var JL=((JM+4)&4294967295);var JJ=Vb;var JH=((JJ)&4294967295);var JF=GV;var JD=lE(JF,((tb)&4294967295),JH,JL,JN,JP,JR,JT,JV,JY);N0=JD;var JB=N0;Kd=JB;jF(3);Gm=180;continue $bb153$69}else{if(Gm==171){var OV=uA[((k5)>>2)];var OT=((OV+64)&4294967295);var OR=M8;var OP=lE(OR,((K)&4294967295),OT);Gm=180;continue $bb153$69}else{if(Gm==130){var Is=NS;var In=(((Is))|0)==0;if(In){Gm=131}else{Gm=132}if(Gm==131){var Im=eo(MT);NS=1}var Il=FF;var Ik=M8;GQ=Il;OH=Ik;uA[((KR)>>2)]=0;ns(MR,((uT)&4294967295),5,1,0);var Ij=OH;var Ii=lE(Ij,((ba)&4294967295),KR,MP,MO);I7=Ii;var Ih=I7;var Ig=(((Ih))|0)<=1;var If=uA[((vm)>>2)];var Ie=(((If))|0)>59;var H0=(Ig)|(Ie);if(H0){Gm=180;continue $bb153$69}var Ic=jN(MN);Tu=Ic;var Ib=Tu;var Ia=(((Ib))|0)==0;var H9=oD((Ia),1,0);BH=H9;var H8=BH;var Sv=iB((H8),8,0)!=0;if(Sv){Gm=180;continue $bb153$69}var H7=uA[((vm)>>2)];var H6=Tu;var H5=(((H6))&255);var H4=((dW+H7*3)&4294967295);var H3=((H4)&4294967295);la[((H3)>>0)]=H5;var HZ=uA[((vm)>>2)];var HY=jN(ML);var HW=(((HY))&255);var HU=((dW+HZ*3)&4294967295);var HS=((HU+1)&4294967295);la[((HS)>>0)]=HW;var HQ=uA[((vm)>>2)];var HO=uA[((KR)>>2)];var HM=(((HO))&255);var HK=((dW+HQ*3)&4294967295);var HI=((HK+2)&4294967295);la[((HI)>>0)]=HM;var HD=(((HQ)+1)&4294967295);uA[((vm)>>2)]=HD;Gm=180;continue $bb153$69}else{if(Gm==170){var O7=uA[((k5)>>2)];var O5=((O7+104)&4294967295);var O1=uA[((k5)>>2)];var O0=((O1+100)&4294967295);var OY=M8;var OW=lE(OY,((s4)&4294967295),O0,O5);uA[((Mo)>>2)]=OW;Gm=180;continue $bb153$69}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}$bb159_thread$$bb159$241:do{if(Gm==181){SU=0;So=0}else{if(Gm==183){var Ta=Et;SU=0;So=0;var IX=(Ta)!=0;if(!(IX)){Gm=185;break $bb159_thread$$bb159$241}var IV=Et;var IT=ts(IV)}}}while(0);var IR=KD;var IP=(IR)==0;if(IP){Gm=186}else{Gm=188}$bb162$$bb164$246:do{if(Gm==186){var IL=Md;var IK=(((IL))|0)==0;if(!(IK)){Gm=188;break $bb162$$bb164$246}var II=((SV)&4294967295);var IG=jr(II);KD=IG}}while(0);jF(3);Op=0;$bb165$250:while(1){var IE=uA[((k5)>>2)];var IC=Op;var IA=uA[((k5)>>2)];var Iy=Op;var Iw=((IA+144)&4294967295);var Iu=((Iw+Iy*2)&4294967295);var DE=uW[((Iu)>>1)];var DC=((IE+216)&4294967295);var DB=((DC+IC*2)&4294967295);uW[((DB)>>1)]=DE;var DA=uA[((k5)>>2)];var Dz=Op;var Dy=uA[((k5)>>2)];var Dx=Op;var Dw=((Dy+162)&4294967295);var Dv=((Dw+Dx*2)&4294967295);var Du=uW[((Dv)>>1)];var Do=((DA+234)&4294967295);var Dn=((Do+Dz*2)&4294967295);uW[((Dn)>>1)]=Du;var Dm=uA[((k5)>>2)];var Dl=Op;var Dk=uA[((k5)>>2)];var Dj=Op;var Di=((Dk+180)&4294967295);var Dh=((Di+Dj*2)&4294967295);var Dg=uW[((Dh)>>1)];var Df=((Dm+252)&4294967295);var Dd=((Df+Dl*2)&4294967295);uW[((Dd)>>1)]=Dg;var Dc=Op;var Db=(((Dc)+1)&4294967295);Op=Db;var Da=(((Db))|0)<=8;if(Da){Gm=189;continue $bb165$250}else{Gm=190;break $bb165$250}}var C9=Md;var C8=(((C9))|0)!=0;if(C8){Gm=191}else{Gm=192}if(Gm==191){var C7=uA[((xy)>>2)];KD=C7}else{if(Gm==192){var C5=((DM)&4294967295);var C4=eo(C5);Op=C4;var C3=Op;var C1=(((C3))|0)<0;var C0=oD((C1),1,0);K5=C0;var CZ=K5;var KU=iB((CZ),8,0)!=0;if(KU){Gm=193}else{Gm=194}if(Gm==193){var CY=uA[((ta)>>2)];var CX=((DM)&4294967295);var CW=Am(CY,((hv)&4294967295),CX)}var CV=uA[((k5)>>2)];var CU=((CV+40)&4294967295);var CT=Op;uA[((CU)>>2)]=CT;var CS=KD;var CR=((CS+656)&4294967295);var CQ=Op;uA[((CR)>>2)]=CQ;var CP=Gy;var CN=(CP)&4;var CM=KD;var CL=((Gf)&4294967295);var CK=io(CM,CL,CN);DL=CK;var CJ=la[((((n0)&4294967295))>>0)];var CI=iB((CJ),8,0)==0;if(CI){Gm=195}else{Gm=196}if(Gm==195){Fs=0;Gm=209;break $bb190$$bb12$40}else{if(Gm==196){var CH=KD;var Cv=((CH+692)&4294967295);var Cu=Lu;uA[((Cv)>>2)]=Cu;var Ct=KG;var Cs=((wJ+Ct)&4294967295);la[((Cs)>>0)]=0}}}}var Cr=KD;var Cq=((Cr)&4294967295);DG=Cq;var Cp=DG;var Co=((Cp+24)&4294967295);var Cn=((Co+24)&4294967295);var Cm=uA[((Cn)>>2)];uA[((Mo)>>2)]=Cm;var B9=uA[((Mo)>>2)];var B8=(((B9))|0)!=0;var B7=oD((B8),1,0);KS=B7;var KQ=iB((B7),8,0)!=0;if(KQ){Gm=198}else{Gm=200}$bb177$$bb178$263:do{if(Gm==198){var B6=uA[((Mo)>>2)];var B5=KD;Lg=B5;I8=B6;var B4=I8;var B3=(((B4))|0)%100;var B2=((oL+B3*4)&4294967295);var B1=uA[((B2)>>2)];var B0=Lg;var BJ=((B0)&4294967295);var BI=((BJ+176)&4294967295);uA[((BI)>>2)]=B1;var BG=Lg;var BF=((BG)&4294967295);var BE=((BF+176)&4294967295);var BD=uA[((BE)>>2)];var BC=Lg;var BB=((BC)&4294967295);var BA=((BB+180)&4294967295);uA[((BA)>>2)]=BD;var Bz=I8;var Bo=(((((Bz))|0)/100)|0);BS=Bo;var Bn=BS;var Bm=(((Bn))|0)!=0;var Bl=oD((Bm),1,0);KE=Bl;var Bk=KE;var Sf=iB((Bk),8,0)!=0;if(!(Sf)){Gm=200;break $bb177$$bb178$263}var Bj=BS;var Bi=((oL+Bj*4)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=Lg;var Bf=((Bg)&4294967295);var A4=((Bf+180)&4294967295);uA[((A4)>>2)]=Bh}}while(0);var A3=uA[((k5)>>2)];var A2=uA[((k5)>>2)];var A1=((A2+180)&4294967295);var A0=((A1)&4294967295);var AZ=uW[((A0)>>1)];var AY=iB((AZ),16,0);var AX=(((AY)*105)&4294967295);var AW=(((((AX))|0)/100)|0);var AV=(((AW))&65535);var Sn=((A3+180)&4294967295);var Sm=((Sn)&4294967295);uW[((Sm)>>1)]=AV;var Sl=Md;var Sk=(((Sl))|0)==0;if(Sk){Gm=201}else{Gm=202}if(Gm==201){var Sj=KD;uA[((xy)>>2)]=Sj}Op=0;var Si=Op;var Sh=Ip;var Sg=(((Si))|0)<(((Sh))|0);if(Sg){Gm=203}else{Gm=204}$bb181$$bb183$270:do{if(Gm==203){while(1){var Se=uA[((xy)>>2)];var Sd=Op;var Sa=Op;var R9=((Ln+Sa*4)&4294967295);var R8=uA[((R9)>>2)];var R7=(((R8))&65535);var R6=((Se+676)&4294967295);var R5=((R6+Sd*2)&4294967295);uW[((R5)>>1)]=R7;var R4=Op;var R3=(((R4)+1)&4294967295);Op=R3;var R2=Op;var R1=Ip;var R0=(((R2))|0)<(((R1))|0);if(R0){Gm=203;continue}else{Gm=204;break $bb181$$bb183$270}}}}while(0);Op=0;var RZ=Op;var RY=QY;var RX=(((RZ))|0)<(((RY))|0);if(RX){Gm=205}else{Gm=206}$bb184$$bb186$274:do{if(Gm==205){while(1){var RW=uA[((xy)>>2)];var RV=Op;var RU=uA[((xy)>>2)];var RT=Op;var RS=((RU+676)&4294967295);var RR=((RS+RT*2)&4294967295);var RQ=uW[((RR)>>1)];var RP=Op;var RO=((BZ+RP*4)&4294967295);var RN=uA[((RO)>>2)];var RM=(((RN))&65535);var RL=(((RM)+(RQ))&65535);var RK=((RW+676)&4294967295);var RJ=((RK+RV*2)&4294967295);uW[((RJ)>>1)]=RL;var RI=Op;var RH=(((RI)+1)&4294967295);Op=RH;var RG=Op;var RF=QY;var RE=(((RG))|0)<(((RF))|0);if(RE){Gm=205;continue}else{Gm=206;break $bb184$$bb186$274}}}}while(0);Op=0;var RD=Op;var RC=Io;var RB=(((RD))|0)<(((RC))|0);if(RB){Gm=207}else{Gm=208}$bb187$$bb189$278:do{if(Gm==207){while(1){var RA=uA[((xy)>>2)];var Rz=Op;var Ry=Op;var Rx=((JW+Ry*4)&4294967295);var Rl=uA[((Rx)>>2)];var Rk=(((Rl))&255);var Rj=((RA+660)&4294967295);var Ri=((Rj+Rz)&4294967295);la[((Ri)>>0)]=Rk;var Rh=uA[((xy)>>2)];var Rg=Op;var Rf=Op;var Re=((JW+Rf*4)&4294967295);var Rd=uA[((Re)>>2)];var Rc=(((Rd))&255);var Q1=(((Rc)-1)&255);var Q0=((Rh+668)&4294967295);var QX=((Q0+Rg)&4294967295);la[((QX)>>0)]=Q1;var QW=Op;var QU=(((QW)+1)&4294967295);Op=QU;var QT=Op;var QS=Io;var QR=(((QT))|0)<(((QS))|0);if(QR){Gm=207;continue}else{Gm=208;break $bb187$$bb189$278}}}}while(0);var QQ=uA[((k5)>>2)];Fs=QQ}}while(0);var QP=Fs;ES=QP;var EF=ES;vp=GB;return EF;return null}function wW(BT){var A1=vp;vp+=24;n1(A1,0,24);var Bn;var B4;var Ba;var AW;var BL;var Bx;var A9;var AS;var BO;var A5;var B9;var Cb;var Ca;var Cc;var Bm;var AV=A1;var A7;BO=BT;var B8=BO;Bx=((vo)&4294967295);A9=B8;AS=60;var B7=AS;var B6=Bx;var B5=A9;var B3=xT(B6,B5,B7);var B2=AS;var B1=(((B2)-1)&4294967295);var B0=Bx;var BZ=((B0+B1)&4294967295);la[((BZ)>>0)]=0;var BF=yl(((vo)&4294967295),0);A7=BF;var Bl=AV;ud(Bl,0,24,1,0);var BD=((AV)&4294967295);var BB=BO;uA[((BD)>>2)]=BB;var Bz=tV(((vo)&4294967295),1);var Bw=(Bz)!=0;var Bu=oD((Bw),1,0);Cc=Bu;var Bt=Cc;var A8=iB((Bt),8,0)!=0;if(A8){Bn=1}else{Bn=6}$bb$$bb4$2:do{if(Bn==1){var Bs=A7;var Br=((Bs)&4294967295);var Bq=la[((Br)>>0)];var Bk=iB((Bq),8,0)!=0;if(Bk){Bn=2}else{Bn=3}if(Bn==2){var Bj=A7;var Bi=tV(Bj,2)}var Bh=uA[((k5)>>2)];AW=Bh;var Bg=fu(1344);var Bf=Bg;BL=Bf;var Be=BL;var Bd=AW;var Bc=Be;var Bb=Bd;ns(Bc,Bb,1344,1,0);var A6=uA[((t3)>>2)];var A4=((v0+A6*16)&4294967295);var A3=((A4)&4294967295);uA[((A3)>>2)]=11;var A2=uA[((t3)>>2)];var A0=BL;var AZ=(A0);var AY=((v0+A2*16)&4294967295);var AX=((AY+4)&4294967295);uA[((AX)>>2)]=AZ;var AU=uA[((t3)>>2)];var AT=(((AU)+1)&4294967295);uA[((t3)>>2)]=AT;var AR=(((AT))|0)>159;if(AR){Bn=4}else{Bn=5}if(Bn==4){uA[((t3)>>2)]=0}nY(AV);Ca=0}else{if(Bn==6){var AQ=uA[((uj)>>2)];var AP=(((AQ))|0)==0;if(AP){Bn=7}else{Bn=8}if(Bn==7){var AO=mv(0)}var AN=cE(((sF)&4294967295),((vo)&4294967295));Bm=AN;var AM=Bm;var AL=(AM)!=0;var AK=oD((AL),1,0);Cb=AK;var Bp=iB((AK),8,0)!=0;if(Bp){Bn=9}else{Bn=15}$bb8$$bb13$14:do{if(Bn==9){var AJ=Bm;var AI=((AJ+8)&4294967295);var AH=uA[((AI)>>2)];var i=tV(AH,0);var e=(i)!=0;var Cj=oD((e),1,0);B9=Cj;var Ci=B9;var Bo=iB((Ci),8,0)!=0;if(!(Bo)){Bn=15;break $bb8$$bb13$14}var Ch=A7;var Cg=((Ch)&4294967295);var Cf=la[((Cg)>>0)];var Ce=iB((Cf),8,0)!=0;if(Ce){Bn=11}else{Bn=12}if(Bn==11){var Cd=A7;var BY=tV(Cd,2)}var BX=uA[((k5)>>2)];B4=BX;var BW=fu(1344);var BV=BW;Ba=BV;var BU=Ba;var BS=B4;var BQ=BU;var BP=BS;ns(BQ,BP,1344,1,0);var BN=uA[((t3)>>2)];var BM=((v0+BN*16)&4294967295);var BK=((BM)&4294967295);uA[((BK)>>2)]=11;var BJ=uA[((t3)>>2)];var BI=Ba;var BH=(BI);var BG=((v0+BJ*16)&4294967295);var BE=((BG+4)&4294967295);uA[((BE)>>2)]=BH;var BC=uA[((t3)>>2)];var BA=(((BC)+1)&4294967295);uA[((t3)>>2)]=BA;var By=(((BA))|0)>159;if(By){Bn=13}else{Bn=14}if(Bn==13){uA[((t3)>>2)]=0}nY(AV);Ca=0;Bn=16;break $bb$$bb4$2}}while(0);Ca=-1}}}while(0);var Bv=Ca;A5=Bv;var BR=A5;vp=A1;return BR;return null}function sZ(A2,AH){var AY=vp;vp+=60;n1(AY,0,60);var AX;var AL;var AI;var Bl;var A1;var AN;var AZ;var Bd;var AU;var i;var A3;var AJ=AY;A1=A2;AN=AH;var Bc=((AJ)&4294967295);var Bb=A1;AL=Bc;AI=Bb;Bl=60;var Ba=Bl;var A9=AL;var A8=AI;var A7=xT(A9,A8,Ba);var A6=Bl;var A5=(((A6)-1)&4294967295);var A4=AL;var AW=((A4+A5)&4294967295);la[((AW)>>0)]=0;var AV=((AJ)&4294967295);var AT=AN;var AS=yl(AV,AT);A3=AS;var AR=((AJ)&4294967295);var AQ=tV(AR,0);i=AQ;var AP=i;var AO=(AP)==0;var AM=oD((AO),1,0);AU=AM;var AK=AU;var A0=iB((AK),8,0)!=0;if(A0){AX=1}else{AX=2}if(AX==1){Bd=0}else{if(AX==2){var e=A3;var Bm=((e)&4294967295);var Bk=la[((Bm)>>0)];var Bj=iB((Bk),8,0)!=0;if(Bj){AX=3}else{AX=4}if(AX==3){var Bi=A3;var Bh=tV(Bi,2);i=Bh}var Bg=i;Bd=Bg}}var Bf=Bd;AZ=Bf;var Be=AZ;vp=AY;return Be;return null}function vM(AN){var AU=vp;vp+=4;n1(AU,0,4);var AT;var AK;var A1;var AW;var AV;var A7;var i;var A9=AU;AW=AN;var A6=AW;var A5=pZ(A6,A9);i=A5;var A4=uA[((A9)>>2)];var A3=(((A4))|0)==0;if(A3){AT=1}else{AT=2}if(AT==1){A7=2}else{if(AT==2){var A2=i;var A0=sZ(A2,0);var AZ=uA[((k5)>>2)];AK=AZ;var AY=fu(1344);var AX=AY;A1=AX;var AS=A1;var AR=AK;var AQ=AS;var AP=AR;ns(AQ,AP,1344,1,0);var AO=uA[((t3)>>2)];var AM=((v0+AO*16)&4294967295);var AL=((AM)&4294967295);uA[((AL)>>2)]=11;var AJ=uA[((t3)>>2)];var AI=A1;var AH=(AI);var e=((v0+AJ*16)&4294967295);var Bf=((e+4)&4294967295);uA[((Bf)>>2)]=AH;var Be=uA[((t3)>>2)];var Bd=(((Be)+1)&4294967295);uA[((t3)>>2)]=Bd;var Bc=(((Bd))|0)>159;if(Bc){AT=3}else{AT=4}if(AT==3){uA[((t3)>>2)]=0}var Bb=AW;nY(Bb);A7=0}}var Ba=A7;AV=Ba;var A8=AV;vp=AU;return A8;return null}function jI(){var AR;var AO;var AN;var AQ;var AM=uA[((Ap)>>2)];var AL=uA[((t3)>>2)];var AK=(((AM)-(AL))&4294967295);AQ=AK;var AJ=AQ;var AI=(((AJ))|0)<=0;if(AI){AR=1}else{AR=2}if(AR==1){var AH=AQ;var i=(((AH)+160)&4294967295);AQ=i}var e=AQ;AN=e;var AS=AN;AO=AS;var AP=AO;return AP;return null}function vq(){var AS;var AH;var AP;var AT;var AX;var AO;var AN=uA[((Ap)>>2)];var AM=uA[((t3)>>2)];var AL=(((AN)-(AM))&4294967295);AT=AL;var AK=AT;var AJ=(((AK))|0)<=0;if(AJ){AS=1}else{AS=2}if(AS==1){var AI=AT;var i=(((AI)+160)&4294967295);AT=i}var e=AT;AP=e;var AV=AP;AH=AV;var AW=AH;var AU=((160-(AW))&4294967295);AO=AU;var AR=AO;AX=AR;var AQ=AX;return AQ;return null}function iA(){var AH;var i=uA[((t3)>>2)];var e=(((i)+1)&4294967295);uA[((t3)>>2)]=e;var AI=(((e))|0)>159;if(AI){AH=1}else{AH=2}if(AH==1){uA[((t3)>>2)]=0}return;return}function pk(){var AH;var AI;var i;i=0;var e=i;AI=e;var AJ=AI;return AJ;return null}function s6(){var AH;var AI;var i;i=0;var e=i;AI=e;var AJ=AI;return AJ;return null}function xd(){var AH;var AI;var i;i=0;var e=i;AI=e;var AJ=AI;return AJ;return null}function ya(){var AU;var AR;var AN;var AT;var AM=uA[((((aI+12)&4294967295))>>2)];var AL=(((AM)*55)&4294967295);var AK=(((((AL))|0)/100)|0);AT=AK;var AJ=uA[((((aI+52)&4294967295))>>2)];var AI=((hN+AJ)&4294967295);var AH=ll[((AI)>>0)];var i=oD((AH),8,0);var e=AT;var AV=(((i)*(e))&4294967295);var AQ=(((((AV))|0)/16)|0);uA[((W)>>2)]=AQ;var AP=uA[((W)>>2)];AN=AP;var AO=AN;AR=AO;var AS=AR;return AS;return null}function tE(BU,Cy,DC,Br){var Fe;var EJ=null;var Fs;var BP;var A6;var AR;var Dm;var Bv;var Ff;var Fg;var Fh;var Cc;var BH;var CQ;var CF;var CC;var Dq;var Dd;var CE;var B1;var CD;var Cn;var CA;var CR;var Dr;var Cz;var Dp;Fs=BU;BP=Cy;A6=DC;AR=Br;var CP=uA[((uR)>>2)];var CO=(CP)==0;if(CO){Fe=1}else{Fe=2}if(Fe==1){CQ=1}else{if(Fe==2){var CN=uA[((uR)>>2)];var CM=((CN+84)&4294967295);var CL=uA[((CM)>>2)];var CK=Fs;var CJ=((CK+80*CL)&4294967295);var CI=((CJ)&4294967295);var CH=uA[((CI)>>2)];var E3=uA[((uR)>>2)];var E2=((E3+84)&4294967295);var E1=uA[((E2)>>2)];var E0=Fs;var EZ=((E0+80*E1)&4294967295);var EY=((EZ+12)&4294967295);var EX=uA[((EY)>>2)];var EW=(((EX)+(CH))&4294967295);var EV=BP;var EU=(((((EW))|0)/(((EV))|0))|0);CD=EU;var EI=CD;var EH=(((EI))|0)>399;if(EH){Fe=3}else{Fe=4}if(Fe==3){CD=399}var EG=uA[((bW)>>2)];var EF=(((EG)*19)&4294967295);var EE=(((((EF))|0)/40)|0);var ED=(EE)<<16;var EC=BP;var EB=(((((ED))|0)/(((EC))|0))|0);Cn=EB;var EA=CD;var Ez=Cn;var Eo=(((EA))|0)>(((Ez))|0);if(Eo){Fe=5}else{Fe=6}if(Fe==5){var En=Cn;CD=En}CE=0;var Em=CE;var El=CD;var Ek=(((Em))|0)<=(((El))|0);if(Ek){Fe=7}else{Fe=8}$bb6$$bb8$11:do{if(Fe==7){while(1){var Ej=A6;var Ei=CE;var Eh=((Ej+4*Ei)&4294967295);uA[((Eh)>>2)]=0;var Eg=CE;var Ef=(((Eg)+1)&4294967295);CE=Ef;var D4=CE;var D3=CD;var D2=(((D4))|0)<=(((D3))|0);if(D2){Fe=7;continue}else{Fe=8;break $bb6$$bb8$11}}}}while(0);CE=0;B1=0;var D1=uA[((uR)>>2)];var D0=((D1+84)&4294967295);var DZ=uA[((D0)>>2)];var DY=B1;var DX=(((DZ))|0)>=(((DY))|0);var DW=Fs;if(DX){EJ=8;Fe=9}else{EJ=8;Fe=19}$bb9$$bb24$15:do{if(Fe==9){$bb9$16:while(1){var DV=EJ==18?Bo:(DW);var DM=B1;var DL=((DV+80*DM)&4294967295);CC=DL;var DK=CC;var DJ=((DK+4)&4294967295);var DI=uA[((DJ)>>2)];var DH=(((DI))|0)==0;if(DH){Fe=11}else{Fe=10}$bb13_thread$$bb10$18:do{if(Fe==10){var DG=CC;var DF=((DG)&4294967295);var DE=uA[((DF)>>2)];Dq=DE;var DD=Dq;var DB=(((DD))|0)==0;if(DB){Fe=11;break $bb13_thread$$bb10$18}Cc=0;BH=0;var DA=CC;var Dz=((DA)&4294967295);var Dy=uA[((Dz)>>2)];var Dx=CC;var Dw=((Dx+12)&4294967295);var Dv=uA[((Dw)>>2)];var Du=(((Dv)+(Dy))&4294967295);Dd=Du;var Dt=CC;var Ds=((Dt)&4294967295);var Do=uA[((Ds)>>2)];var Dn=CC;var Dl=((Dn+8)&4294967295);var Dk=uA[((Dl)>>2)];var Dj=(((Do)-(Dk))&4294967295);var Di=BP;var Dh=(((((Dj))|0)/(((Di))|0))|0);var Dg=(((Dh)+1)&4294967295);CE=Dg;var Df=CE;var De=(((Df))|0)<=0;if(De){Fe=13}else{Fe=14}if(Fe==13){CE=1}var Dc=BP;var Db=CE;var Da=(((Db)*(Dc))&4294967295);CF=Da;var C9=CF;var C8=Dq;var C7=(((C9))|0)<(((C8))|0);if(C7){Fe=15}else{Fe=17}$bb17$$bb21_loopexit$24:do{if(Fe==15){while(1){var C6=CE;Fh=C6;var C5=A6;var C4=Fh;var C3=((C5+4*C4)&4294967295);var C1=uA[((C3)>>2)];var C0=uA[((kV)>>2)];var CZ=Dq;var CY=CF;var CX=(((CZ)-(CY))&4294967295);var CW=CC;var CV=((CW+8)&4294967295);var CU=uA[((CV)>>2)];var CT=(((CU))|0)>>8;var CS=(((((CX))|0)/(((CT))|0))|0);var Cx=((C0+CS)&4294967295);var Cw=ll[((Cx)>>0)];var Cv=oD((Cw),8,0);var Cu=CC;var Ct=((Cu+4)&4294967295);var Cs=uA[((Ct)>>2)];var Cr=(((Cs)*(Cv))&4294967295);var Cq=(((Cr)+(C1))&4294967295);var Cp=A6;var Co=Fh;var Cm=((Cp+4*Co)&4294967295);uA[((Cm)>>2)]=Cq;var Cl=CE;var Ck=(((Cl)+1)&4294967295);CE=Ck;var Cj=CF;var Ci=BP;var Ch=(((Ci)+(Cj))&4294967295);CF=Ch;var Cg=CF;var Cf=Dq;var Ce=(((Cg))|0)<(((Cf))|0);if(Ce){Fe=15;continue}else{Fe=17;break $bb17$$bb21_loopexit$24}}}}while(0);var BA=CF;var Bz=Dd;var By=(((BA))|0)<(((Bz))|0);if(!(By)){Fe=18;break $bb13_thread$$bb10$18}while(1){var Cd=CE;Fg=Cd;var Cb=A6;var Ca=Fg;var B9=((Cb+4*Ca)&4294967295);var B8=uA[((B9)>>2)];var B7=uA[((kV)>>2)];var B6=CF;var B5=Dq;var B4=(((B6)-(B5))&4294967295);var B3=CC;var B2=((B3+12)&4294967295);var B0=uA[((B2)>>2)];var BZ=(((B0))|0)>>8;var BY=(((((B4))|0)/(((BZ))|0))|0);var BX=((B7+BY)&4294967295);var BW=ll[((BX)>>0)];var BV=oD((BW),8,0);var BT=CC;var BS=((BT+4)&4294967295);var BR=uA[((BS)>>2)];var BQ=(((BR)*(BV))&4294967295);var BO=(((BQ)+(B8))&4294967295);var BN=A6;var BM=Fg;var BL=((BN+4*BM)&4294967295);uA[((BL)>>2)]=BO;var BJ=CE;var BI=(((BJ)+1)&4294967295);CE=BI;var BG=CF;var BF=BP;var BE=(((BF)+(BG))&4294967295);CF=BE;var BD=CF;var BC=Dd;var BB=(((BD))|0)<(((BC))|0);if(BB){Fe=16;continue}else{Fe=18;break $bb13_thread$$bb10$18}}}}while(0);if(Fe==11){Cc=1;BH=1}var Bx=B1;var Bw=(((Bx)+1)&4294967295);B1=Bw;var Bu=uA[((uR)>>2)];var Bt=((Bu+84)&4294967295);var Bs=uA[((Bt)>>2)];var Bq=B1;var Bp=(((Bs))|0)>=(((Bq))|0);var Bo=Fs;if(Bp){EJ=18;Fe=9;continue $bb9$16}else{EJ=18;Fe=19;break $bb9$$bb24$15}}}}while(0);var C2=EJ==8?DW:(Bo);var Bn=((C2+80)&4294967295);var Bm=((Bn+4)&4294967295);var Bl=uA[((Bm)>>2)];var Bk=(((Bl)*10)&4294967295);Cz=Bk;var Bj=BP;var Bh=((65536000/(((Bj))|0))|0);Dp=Bh;var Bf=(((Bh))|0)>0;if(Bf){Fe=20}else{Fe=27}$bb25$$bb34thread_pre_split$34:do{if(Fe==20){var A5=Cz;var A4=Dp;var A3=(((((A5))|0)/(((A4))|0))|0);CA=A3;CE=1;var A2=(((A5))|0)>0;if(!(A2)){Fe=27;break $bb25$$bb34thread_pre_split$34}while(1){var A1=CE;Ff=A1;var A0=A6;var AZ=Ff;var AY=((A0+4*AZ)&4294967295);var AW=uA[((AY)>>2)];var AU=Cz;var AJ=(((AU)+(AW))&4294967295);var AI=A6;var AH=Ff;var i=((AI+4*AH)&4294967295);uA[((i)>>2)]=AJ;var e=CE;var F3=(((e)+1)&4294967295);CE=F3;var F2=Cz;var F1=CA;var FZ=(((F2)-(F1))&4294967295);Cz=FZ;var FX=(((FZ))|0)>0;if(FX){Fe=21;continue}else{Fe=27;break $bb25$$bb34thread_pre_split$34}}}}while(0);var AK=B1;var FT=(((AK))|0)<=8;if(FT){Fe=22}else{Fe=28}$bb29$$bb35$39:do{if(Fe==22){while(1){var FN=Fs;var FM=B1;var FL=((FN+80*FM)&4294967295);var FK=((FL+4)&4294967295);var FJ=uA[((FK)>>2)];var FI=(((FJ))|0)>>14;CA=FI;var FH=B1;var FG=CA;var FE=CA;var FC=(((FG)*5)&4294967295);var Bi=(((FC)*(FE))&4294967295);var Bg=(((((Bi))|0)/2)|0);var Be=((qZ+FH*4)&4294967295);uA[((Be)>>2)]=Bg;var Bd=AR;var Bc=(((Bd))|0)==0;if(Bc){Fe=23}else{Fe=24}if(Fe==23){var Bb=B1;var Ba=Fs;var A9=B1;var A8=((Ba+80*A9)&4294967295);var A7=((A8)&4294967295);var AX=uA[((A7)>>2)];var AV=BP;var AT=(((((AX))|0)/(((AV))|0))|0);var AS=((Al+Bb*4)&4294967295);uA[((AS)>>2)]=AT}var AQ=B1;var AP=((Al+AQ*4)&4294967295);var AO=uA[((AP)>>2)];var AN=Cn;var AM=(((AO))|0)>=(((AN))|0);if(AM){Fe=25}else{Fe=26}if(Fe==25){var AL=B1;var F0=((qZ+AL*4)&4294967295);uA[((F0)>>2)]=0}var FY=B1;var FW=(((FY)+1)&4294967295);B1=FW;var FV=(((FW))|0)<=8;if(FV){Fe=22;continue}else{Fe=28;break $bb29$$bb35$39}}}}while(0);CF=0;CE=0;var FS=CE;var FR=CD;var FQ=(((FS))|0)<=(((FR))|0);var FP=A6;if(FQ){EJ=28;Fe=29}else{EJ=28;Fe=32}$bb36$$bb41$49:do{if(Fe==29){while(1){var FO=EJ==31?EK:(FP);var FF=CE;var FD=((FO+4*FF)&4294967295);var FB=uA[((FD)>>2)];var FA=(((FB))|0)>>15;CA=FA;var Fz=CA;var Fy=CA;var Fx=(((Fy)*(Fz))&4294967295);var Fw=(((Fx))|0)>>8;var Fv=A6;var Fu=CE;var Fr=((Fv+4*Fu)&4294967295);uA[((Fr)>>2)]=Fw;var Fq=CF;var Fp=(((Fq))|0)>>19;CR=Fp;var Fo=CR;var Fn=(((Fo))|0)<=999;var Fm=oD((Fn),1,0);Bv=Fm;var CG=iB((Fm),8,0)!=0;if(CG){Fe=30}else{Fe=31}if(Fe==30){var Fl=A6;var Fk=CE;var Fj=((Fl+4*Fk)&4294967295);var Fi=uA[((Fj)>>2)];var Fd=uA[((uR)>>2)];var Fc=CR;var Fb=((Fd+344)&4294967295);var Fa=((Fb+Fc)&4294967295);var E9=ll[((Fa)>>0)];var E8=oD((E9),8,0);var E7=(((E8)*(Fi))&4294967295);var E6=(((E7))|0)>>13;var E5=A6;var E4=CE;var ET=((E5+4*E4)&4294967295);uA[((ET)>>2)]=E6}var ES=CE;var ER=(((ES)+1)&4294967295);CE=ER;var EQ=CF;var EP=BP;var EO=(((EP)+(EQ))&4294967295);CF=EO;var EN=CE;var EM=CD;var EL=(((EN))|0)<=(((EM))|0);var EK=A6;if(EL){EJ=31;Fe=29;continue}else{EJ=31;Fe=32;break $bb36$$bb41$49}}}}while(0);var BK=EJ==28?FP:(EK);var Ey=((BK+4)&4294967295);var Ex=uA[((Ey)>>2)];var Ft=la[((dR)>>0)];var Ew=(Ft)?6:10;var Ev=(((Ew)*(Ex))&4294967295);Dr=Ev;var Eu=Dr;var Et=(((((Eu))|0)/8)|0);var Es=A6;var Er=((Es+4)&4294967295);uA[((Er)>>2)]=Et;var Eq=AR;var Ep=(Eq)&1;var Ee=(((Ep))&255);var CB=iB((Ee),8,0)!=0;if(CB){Fe=33}else{Fe=35}$bb43$$bb46$56:do{if(Fe==33){CE=1;while(1){var Ed=CE;var Ec=A6;var Eb=CE;var Ea=((Ec+4*Eb)&4294967295);var D9=uA[((Ea)>>2)];var D8=uA[((lN)>>2)];var D7=CE;var D6=((D8+4*D7)&4294967295);var D5=uA[((D6)>>2)];var DU=(((D9)-(D5))&4294967295);var DT=(((DU))|0)>>3;var DS=((fv+Ed*4)&4294967295);uA[((DS)>>2)]=DT;var DR=CE;var DQ=(((DR)+1)&4294967295);CE=DQ;var DP=(((DQ))|0)<=29;if(DP){Fe=34;continue}else{Fe=35;break $bb43$$bb46$56}}}}while(0);var DO=CD;CQ=DO}}var DN=CQ;Dm=DN;var FU=Dm;return FU;return null}function o1(AX,AP){var AU;var Bh;var i;var AV;var AQ;var Bg;var AT;Bh=AX;i=AP;AT=0;uA[((a7)>>2)]=0;uA[((bG)>>2)]=0;uA[((b3)>>2)]=2147483647;var Bf=Bh;var Be=(((Bf))|0)==0;if(Be){AU=1}else{AU=2}if(AU==1){Bg=0}else{if(AU==2){var Bd=i;var Bc=(((Bd))|0)==0;if(Bc){AU=3}else{AU=10}if(AU==3){var Bb=Bh;uA[((hT)>>2)]=Bb}while(1){var A2=xk[((hT)>>2)];var A1=(((A2))|0)>0;var A0=oD((A1),1,0);AQ=A0;var AZ=(((A2)-1)&4294967295);uA[((hT)>>2)]=AZ;var AW=iB((A0),8,0)!=0;if(!(AW)){AU=11;break}var Ba=uA[((i3)>>2)];var A8=((p7+Ba*2)&4294967295);var A6=uW[((A8)>>1)];var A4=iB((A6),16,0);var AS=uA[((Ar)>>2)];var AR=(((A4)*(AS))&4294967295);var AO=(((AR))|0)>>8;AT=AO;var AN=(((Ba)+1)&4294967295);uA[((i3)>>2)]=AN;var AM=uA[((i3)>>2)];var AL=(((AM))|0)>5499;if(AL){AU=5}else{AU=6}if(AU==5){uA[((i3)>>2)]=0}var AK=uA[((xH)>>2)];var AJ=AT;var AI=(((AJ))&255);la[((AK)>>0)]=AI;var AH=((AK+1)&4294967295);uA[((xH)>>2)]=AH;var e=uA[((xH)>>2)];var Br=AT;var Bq=(((Br))|0)>>8;var Bp=(((Bq))&255);la[((e)>>0)]=Bp;var Bo=((e+1)&4294967295);uA[((xH)>>2)]=Bo;var Bn=uA[((pa)>>2)];var Bm=AT;var Bl=(((Bm))&65535);var Bk=((p7+Bn*2)&4294967295);uW[((Bk)>>1)]=Bl;var Bj=(((Bn)+1)&4294967295);uA[((pa)>>2)]=Bj;var A9=(((Bj))|0)>5499;if(A9){AU=7}else{AU=8}if(AU==7){uA[((pa)>>2)]=0}var A7=xk[((xH)>>2)];var A5=xk[((kU)>>2)];var A3=(A7)>=(A5);if(A3){AU=9;break}else{AU=10;continue}}if(AU==11){Bg=0}else{if(AU==9){Bg=1}}}}var AY=Bg;AV=AY;var Bi=AV;return Bi;return null}function nV(){var A6;var A5;var AV;var BA;var A1;var Br=uA[((((aI+4)&4294967295))>>2)];A1=Br;var Bq=A1;var Bp=(((Bq))|0)>101;var Bo=oD((Bp),1,0);A5=Bo;var Bn=A5;var A7=iB((Bn),8,0)!=0;if(A7){A6=1}else{A6=2}if(A6==1){A1=101}var Bm=A1;var Bl=(((Bm)*25)&4294967295);var Bj=(((Bl)+-1250)&4294967295);var Bh=(((((Bj))|0)/50)|0);var Bf=(((Bh)+256)&4294967295);BA=Bf;AV=0;while(1){var A2=uA[((uR)>>2)];var AZ=AV;var AX=uA[((uR)>>2)];var AU=AV;var AS=((AX+216)&4294967295);var AQ=((AS+AU*2)&4294967295);var AO=uW[((AQ)>>1)];var AM=iB((AO),16,0);var AK=BA;var AJ=(((AM)*(AK))&4294967295);var i=(((((AJ))|0)/256)|0);var BE=(((i))&65535);var BC=((A2+144)&4294967295);var Bz=((BC+AZ*2)&4294967295);uW[((Bz)>>1)]=BE;var Bx=AV;var Bw=(((Bx)+1)&4294967295);AV=Bw;var Bv=(((Bw))|0)<=5;if(Bv){A6=3;continue}else{A6=4;break}}var Bu=uA[((((aI+24)&4294967295))>>2)];var Bt=(((Bu)*3)&4294967295);BA=Bt;var Bs=uA[((uR)>>2)];var Bk=uA[((uR)>>2)];var Bi=((Bk+234)&4294967295);var Bg=((Bi)&4294967295);var Be=uW[((Bg)>>1)];var Bd=iB((Be),16,0);var Bc=BA;var Bb=(((Bc)*2)&4294967295);var Ba=((256-(Bb))&4294967295);var A9=(((Ba)*(Bd))&4294967295);var A8=(((((A9))|0)/256)|0);var A4=(((A8))&65535);var A3=((Bs+162)&4294967295);var A0=((A3)&4294967295);uW[((A0)>>1)]=A4;var AY=uA[((uR)>>2)];var AW=uA[((uR)>>2)];var AT=((AW+234)&4294967295);var AR=((AT+2)&4294967295);var AP=uW[((AR)>>1)];var AN=iB((AP),16,0);var AL=BA;var AI=((256-(AL))&4294967295);var AH=(((AI)*(AN))&4294967295);var e=(((((AH))|0)/256)|0);var BD=(((e))&65535);var BB=((AY+162)&4294967295);var By=((BB+2)&4294967295);uW[((By)>>1)]=BD;return;return}function pO(A9,AK,AJ,BC,Bn){var Bm;var A7;var Bz;var BD;var BA;var A5;var BB;var Bk;var Bl;var e;var Bp;A7=A9;Bz=AK;BD=AJ;BA=BC;A5=Bn;var BN=Bz;var BM=BD;var BL=(((BN))|0)>(((BM))|0);if(BL){Bm=1}else{Bm=2}if(Bm==1){var BK=Bz;Bk=BK;var BJ=BD;Bz=BJ;var BI=Bk;BD=BI}var BH=uA[((((aI+4)&4294967295))>>2)];Bp=BH;var BG=Bp;var BF=(((BG))|0)>101;var BE=oD((BF),1,0);BB=BE;var A8=iB((BE),8,0)!=0;if(A8){Bm=3}else{Bm=4}if(Bm==3){Bp=101}var By=uA[((((aI+24)&4294967295))>>2)];var Bx=Bp;var Bw=(((Bx)-(By))&4294967295);Bp=Bw;var Bv=(((Bw))|0)<0;if(Bv){Bm=5}else{Bm=6}if(Bm==5){Bp=0}var Bu=A7;var Bt=((Bu+44)&4294967295);var Bs=uA[((Bt)>>2)];var Br=Bp;var Bq=((os+Br)&4294967295);var Bo=ll[((Bq)>>0)];var Bj=oD((Bo),8,0);var Bi=(((Bj)*(Bs))&4294967295);var Bh=(((((Bi))|0)/128)|0);Bl=Bh;var Bg=A7;var Bf=((Bg+48)&4294967295);var Be=uA[((Bf)>>2)];var Bd=uA[((((aI+16)&4294967295))>>2)];var Bc=(((Bd)*(Be))&4294967295);var Bb=(((((Bc))|0)/50)|0);e=Bb;var Ba=A7;var A6=((Ba+48)&4294967295);var A4=uA[((A6)>>2)];var A3=e;var A2=(((A3)-(A4))&4294967295);var A1=(((A2)*18)&4294967295);var AZ=Bl;var AY=(((AZ)-(A1))&4294967295);Bl=AY;var AX=Bz;var AW=e;var AV=(((AW)*(AX))&4294967295);var AU=(((((AV))|0)/2)|0);var AT=Bl;var AS=(((AT)+(AU))&4294967295);var AR=BA;uA[((AR)>>2)]=AS;var AQ=BD;var AP=e;var AO=(((AP)*(AQ))&4294967295);var AN=(((((AO))|0)/2)|0);var AM=Bl;var AL=BA;var AI=uA[((AL)>>2)];var A0=((0-(AI))&4294967295);var AH=(((AM)+(AN))&4294967295);var i=(((AH)+(A0))&4294967295);var BO=A5;uA[((BO)>>2)]=i;return;return}function vK(AV,AP,AK,AI){var A6;var A9;var AN;var AQ;var AU;var AW;A9=AV;AN=AP;AQ=AK;AU=AI;var AT=AN;uA[((((tK)&4294967295))>>2)]=AT;var AS=uA[((((tK)&4294967295))>>2)];var AR=(AS)==0;var AO=oD((AR),1,0);AW=AO;var AM=AW;var A8=iB((AM),8,0)!=0;if(A8){A6=1}else{A6=2}if(A6==1){uA[((((tK)&4294967295))>>2)]=((cV)&4294967295)}uA[((((tK+8)&4294967295))>>2)]=0;var AL=A9;var AJ=(((AL))|0)==0;if(AJ){A6=3}else{A6=4}if(A6==3){uA[((((tK+12)&4294967295))>>2)]=0}else{if(A6==4){var AH=A9;var i=((2097152/(((AH))|0))|0);uA[((((tK+12)&4294967295))>>2)]=i}}var e=uA[((uR)>>2)];var A7=AQ;var A5=AU;pO(e,A7,A5,((tK+16)&4294967295),((tK+20)&4294967295));var A4=uA[((((tK)&4294967295))>>2)];var A3=((A4)&4294967295);var A2=ll[((A3)>>0)];var A1=oD((A2),8,0);var A0=uA[((((tK+20)&4294967295))>>2)];var AZ=(((A1)*(A0))&4294967295);var AY=(((AZ))|0)>>8;var AX=uA[((((tK+16)&4294967295))>>2)];var Bd=(((AY)+(AX))&4294967295);uA[((((tK+4)&4294967295))>>2)]=Bd;var Bc=uA[((uR)>>2)];var Bb=((Bc+68)&4294967295);var Ba=uA[((Bb)>>2)];uA[((Az)>>2)]=Ba;return;return}function j3(CQ,C1,B5,B4,Cr){var Fu;var EP=null;var BT;var Cq;var Da;var Ct;var Fh;var CF;var Cs;var Fs;var Fp;var D0;var By;BT=CQ;Cq=C1;Da=B5;Ct=B4;Fh=Cr;la[((Ai)>>0)]=1;var CE=Cq;var CD=(CE)&255;uA[((ep)>>2)]=CD;uA[((T)>>2)]=0;var CC=Cq;var CB=(CC)&1024;var CA=(((CB))|0)!=0;if(CA){Fu=1}else{Fu=2}if(Fu==1){uA[((T)>>2)]=3;var Cz=Cq;var Cy=(((Cz))|0)>>8;var Cx=(Cy)&3;var Cw=((ih+Cx*4)&4294967295);var Cv=uA[((Cw)>>2)];uA[((g7)>>2)]=Cv}var Fg=Cq;var Ff=(Fg)&2048;var Fe=(((Ff))|0)!=0;if(Fe){Fu=3}else{Fu=4}if(Fu==3){uA[((T)>>2)]=4;var Fd=Cq;var Fc=(((Fd))|0)>>8;var Fb=(Fc)&3;var Fa=((ie+Fb*4)&4294967295);var E9=uA[((Fa)>>2)];uA[((g7)>>2)]=E9}var E8=uA[((Ap)>>2)];var E7=(((E8)+1)&4294967295);D0=E7;EP=4;$bb4$8:while(1){var EL=EP==11?Eb:(E7);var EK=(((EL))|0)>159;if(EK){Fu=6}else{Fu=7}if(Fu==6){D0=0}var EJ=uA[((t3)>>2)];var EI=D0;var EH=(((EI))|0)==(((EJ))|0);if(EH){Fu=12;break $bb4$8}var EG=D0;var EF=((v0+EG*16)&4294967295);var EE=((EF)&4294967295);var ED=uA[((EE)>>2)];By=ED;var EC=By;var Eh=(((EC))|0)==3;if(Eh){Fu=9;break $bb4$8}var Eg=By;var Ef=(((Eg))|0)==6;var Ee=By;var Ed=(((Ee))|0)==5;var Cu=(Ef)|(Ed);if(Cu){Fu=12;break $bb4$8}var Ec=D0;var Eb=(((Ec)+1)&4294967295);D0=Eb;EP=11;Fu=5;continue $bb4$8}if(Fu==9){la[((Ai)>>0)]=0}var Ea=BT;var D9=(((Ea)+32)&4294967295);var D8=(D9)&-64;Fs=D8;var DQ=(((D8))|0)==0;if(DQ){Fu=13}else{Fu=14}if(Fu==13){Fs=64}var DP=uA[((bG)>>2)];uA[((cf)>>2)]=DP;var DO=uA[((a7)>>2)];var DN=Fs;var DM=(((DN)+(DO))&4294967295);uA[((a7)>>2)]=DM;var DL=Fs;var DK=(((((DL))|0)/4)|0);Fp=DK;var DJ=Fh;var DI=((DJ+144)&4294967295);var DH=((DI+14)&4294967295);var Dw=uW[((DH)>>1)];var Dv=iB((Dw),16,0);var Du=(((Dv)*7800)&4294967295);var Dt=Fh;var Ds=((Dt+198)&4294967295);var Dr=((Ds+14)&4294967295);var Dq=uW[((Dr)>>1)];var Dp=iB((Dq),16,0);var Do=(((Dp)*256)&4294967295);var Dn=(((Do)+(Du))&4294967295);var Dm=(Dn)<<8;uA[((((Av+560)&4294967295))>>2)]=Dm;var Dl=Fh;var Dk=((Dl+144)&4294967295);var Dj=((Dk+16)&4294967295);var Di=uW[((Dj)>>1)];var Dh=iB((Di),16,0);var Dg=(((Dh)*9000)&4294967295);var Df=Fh;var De=((Df+198)&4294967295);var Dd=((De+16)&4294967295);var Dc=uW[((Dd)>>1)];var Db=iB((Dc),16,0);var C9=(((Db)*256)&4294967295);var C8=(((C9)+(Dg))&4294967295);var C7=(C8)<<8;uA[((((Av+640)&4294967295))>>2)]=C7;CF=0;EP=14;$bb16$22:while(1){var C6=EP==14?0:(DS);var C5=(((C6))|0)<=6;if(C5){Fu=16}else{Fu=17}if(Fu==16){var C4=CF;var C3=CF;var C2=Da;var C0=((C2+2)&4294967295);var CZ=((C0+C3*2)&4294967295);var CY=uW[((CZ)>>1)];var CX=iB((CY),16,0);var CW=CF;var CV=Fh;var CU=((CV+144)&4294967295);var CT=((CU+CW*2)&4294967295);var CS=uW[((CT)>>1)];var CR=iB((CS),16,0);var CP=(((CR)*(CX))&4294967295);var CO=CF;var CN=Fh;var CM=((CN+198)&4294967295);var CL=((CM+CO*2)&4294967295);var CK=uW[((CL)>>1)];var CJ=iB((CK),16,0);var CI=(((CJ)*256)&4294967295);var CH=(((CI)+(CP))&4294967295);var CG=(CH)<<8;var Cp=(((CG))|0);var Co=((Av+C4*80)&4294967295);var Cn=((Co+16)&4294967295);pB[((Cn)>>2)]=Cp;var Cm=CF;var Cl=CF;var Ck=((Av+Cl*80)&4294967295);var Cj=((Ck+16)&4294967295);var Ci=pB[((Cj)>>2)];var Ch=(((Ci))|0);var Cg=((Av+Cm*80)&4294967295);var Cf=((Cg)&4294967295);uA[((Cf)>>2)]=Ch;var Ce=CF;var Cd=Ct;var Cc=((Cd+2)&4294967295);var Cb=((Cc+Ce*2)&4294967295);var Ca=uW[((Cb)>>1)];var B9=iB((Ca),16,0);var B8=CF;var B7=Fh;var B6=((B7+144)&4294967295);var B3=((B6+B8*2)&4294967295);var B2=uW[((B3)>>1)];var B1=iB((B2),16,0);var B0=(((B1)*(B9))&4294967295);var BZ=CF;var BY=Fh;var BX=((BY+198)&4294967295);var BW=((BX+BZ*2)&4294967295);var BV=uW[((BW)>>1)];var BU=iB((BV),16,0);var BS=(((BU)*256)&4294967295);var BR=(((BS)+(B0))&4294967295);var BQ=(BR)<<8;var BP=(((BQ))|0);Cs=BP;var BO=CF;var BN=CF;var BM=((Av+BN*80)&4294967295);var BL=((BM+16)&4294967295);var BK=pB[((BL)>>2)];var BJ=Cs;var BI=(BJ)-(BK);var BH=(BI)*16;var BG=Fp;var BF=(((BG))|0);var BE=(BH)/(BF);var BD=((Av+BO*80)&4294967295);var BC=((BD+48)&4294967295);pB[((BC)>>2)]=BE}var BB=CF;var BA=CF;var Bz=Da;var Bx=((Bz+18)&4294967295);var Bw=((Bx+BA)&4294967295);var Bv=ll[((Bw)>>0)];var Bu=oD((Bv),8,0);var Bt=CF;var Bs=Fh;var Br=((Bs+162)&4294967295);var Bq=((Br+Bt*2)&4294967295);var Bp=uW[((Bq)>>1)];var Bo=iB((Bp),16,0);var Bn=(((Bu)*64)&4294967295);var Bm=(((Bn)*(Bo))&4294967295);var Bl=(((Bm))|0);var Bk=((Av+BB*80)&4294967295);var Bj=((Bk+24)&4294967295);pB[((Bj)>>2)]=Bl;var Bi=CF;var Bh=CF;var Bg=((Av+Bh*80)&4294967295);var Be=((Bg+24)&4294967295);var Bc=pB[((Be)>>2)];var A3=(((Bc))|0);var A2=((Av+Bi*80)&4294967295);var A1=((A2+4)&4294967295);uA[((A1)>>2)]=A3;var A0=CF;var AZ=Ct;var AY=((AZ+18)&4294967295);var AX=((AY+A0)&4294967295);var AW=ll[((AX)>>0)];var AU=oD((AW),8,0);var AS=CF;var AJ=Fh;var AI=((AJ+162)&4294967295);var AH=((AI+AS*2)&4294967295);var i=uW[((AH)>>1)];var e=iB((i),16,0);var Gd=(((AU)*64)&4294967295);var Gc=(((Gd)*(e))&4294967295);var Gb=(((Gc))|0);Cs=Gb;var F9=CF;var F7=CF;var FY=((Av+F7*80)&4294967295);var FX=((FY+24)&4294967295);var FW=pB[((FX)>>2)];var FV=Cs;var FU=(FV)-(FW);var FT=(FU)*64;var FS=Fs;var FR=(((FS))|0);var FP=(FT)/(FR);var FN=((Av+F9*80)&4294967295);var Bf=((FN+56)&4294967295);pB[((Bf)>>2)]=FP;var Bd=CF;var Bb=(((Bd))|0)<=5;if(Bb){Fu=18}else{Fu=22}$bb19$$bb23$27:do{if(Fu==18){var Ba=uA[((uR)>>2)];var A9=((Ba+84)&4294967295);var A8=uA[((A9)>>2)];var A7=CF;var A6=(((A8))|0)>=(((A7))|0);if(!(A6)){Fu=22;break $bb19$$bb23$27}var A5=CF;var A4=CF;var AV=Da;var AT=((AV+26)&4294967295);var AR=((AT+A4)&4294967295);var AQ=ll[((AR)>>0)];var AP=oD((AQ),8,0);var AO=CF;var AN=Fh;var AM=((AN+180)&4294967295);var AL=((AM+AO*2)&4294967295);var AK=uW[((AL)>>1)];var Ga=iB((AK),16,0);var F8=(((AP)*1024)&4294967295);var F6=(((F8)*(Ga))&4294967295);var F5=(((F6))|0);var F4=((Av+A5*80)&4294967295);var F3=((F4+32)&4294967295);pB[((F3)>>2)]=F5;var F2=CF;var F1=CF;var F0=((Av+F1*80)&4294967295);var FZ=((F0+32)&4294967295);var FQ=pB[((FZ)>>2)];var FO=(((FQ))|0);var FM=((Av+F2*80)&4294967295);var FL=((FM+8)&4294967295);uA[((FL)>>2)]=FO;var FK=CF;var FJ=Ct;var FI=((FJ+26)&4294967295);var FH=((FI+FK)&4294967295);var FG=ll[((FH)>>0)];var FF=oD((FG),8,0);var FE=CF;var FD=Fh;var FC=((FD+180)&4294967295);var FB=((FC+FE*2)&4294967295);var FA=uW[((FB)>>1)];var Fz=iB((FA),16,0);var Fy=(((FF)*1024)&4294967295);var Fx=(((Fy)*(Fz))&4294967295);var Fw=(((Fx))|0);Cs=Fw;var Fv=CF;var Ft=CF;var Fr=((Av+Ft*80)&4294967295);var Fq=((Fr+32)&4294967295);var Fo=pB[((Fq)>>2)];var Fn=Cs;var Fm=(Fn)-(Fo);var Fl=(Fm)*64;var Fk=Fs;var Fj=(((Fk))|0);var Fi=(Fl)/(Fj);var E6=((Av+Fv*80)&4294967295);var E5=((E6+64)&4294967295);pB[((E5)>>2)]=Fi;var E4=CF;var E3=(((E4))|0)<=2;var E2=CF;var E1=CF;if(E3){Fu=20}else{Fu=21}if(Fu==20){var E0=Da;var EZ=((E0+32)&4294967295);var EY=((EZ+E1)&4294967295);var EW=ll[((EY)>>0)];var EB=oD((EW),8,0);var EA=CF;var Ez=Fh;var Ey=((Ez+180)&4294967295);var Ex=((Ey+EA*2)&4294967295);var Ew=uW[((Ex)>>1)];var Ev=iB((Ew),16,0);var Eu=(((EB)*1024)&4294967295);var Et=(((Eu)*(Ev))&4294967295);var Er=(((Et))|0);var D7=((Av+E2*80)&4294967295);var D6=((D7+40)&4294967295);pB[((D6)>>2)]=Er;var D5=CF;var D4=CF;var D3=((Av+D4*80)&4294967295);var D2=((D3+40)&4294967295);var D1=pB[((D2)>>2)];var DZ=(((D1))|0);var DY=((Av+D5*80)&4294967295);var DW=((DY+12)&4294967295);uA[((DW)>>2)]=DZ;var DG=CF;var DF=Ct;var DE=((DF+32)&4294967295);var DD=((DE+DG)&4294967295);var DC=ll[((DD)>>0)];var DB=oD((DC),8,0);var DA=CF;var Dz=Fh;var Dy=((Dz+180)&4294967295);var Dx=((Dy+DA*2)&4294967295);var EX=uW[((Dx)>>1)];var EV=iB((EX),16,0);var EU=(((DB)*1024)&4294967295);var ET=(((EU)*(EV))&4294967295);var ES=(((ET))|0);Cs=ES;var ER=CF;var EQ=CF;var EO=((Av+EQ*80)&4294967295);var EN=((EO+40)&4294967295);var EM=pB[((EN)>>2)];var Es=Cs;var Eq=(Es)-(EM);var Ep=(Eq)*64;var Eo=Fs;var En=(((Eo))|0);var Em=(Ep)/(En);var El=((Av+ER*80)&4294967295);var Ek=((El+72)&4294967295);pB[((Ek)>>2)]=Em}else{if(Fu==21){var Ej=((Av+E1*80)&4294967295);var Ei=((Ej+8)&4294967295);var DX=uA[((Ei)>>2)];var DV=((Av+E2*80)&4294967295);var DU=((DV+12)&4294967295);uA[((DU)>>2)]=DX}}}}while(0);var DT=CF;var DS=(((DT)+1)&4294967295);CF=DS;var DR=(((DS))|0)<=7;if(DR){EP=22;Fu=15;continue $bb16$22}else{EP=22;Fu=23;break $bb16$22}}return;return}function qc(i,AS){var AT;var AO;var AR;var AI;AO=i;AR=AS;AI=0;while(1){var AQ=AR;var AP=(AQ)&255;var AN=AO;var AM=jR(AP,AN);var AL=AR;var AK=(((AL))|0)>>8;AR=AK;var AJ=AI;var AH=(((AJ)+1)&4294967295);AI=AH;var e=(((AH))|0)<=3;if(e){AT=1;continue}else{AT=2;break}}return;return}function fI(){var A1;var A4=null;var AQ;var Bp;var Bj;var AI;var Bq;var Bo=uA[((uR)>>2)];var Bn=((Bo+92)&4294967295);var Bm=uA[((Bn)>>2)];uA[((iq)>>2)]=Bm;var Bl=uA[((uR)>>2)];var Bk=((Bl+76)&4294967295);var Bi=uA[((Bk)>>2)];AI=Bi;var Bg=uA[((uR)>>2)];var Be=((Bg+80)&4294967295);var Bc=uA[((Be)>>2)];Bq=Bc;var AY=AI;var AW=(((AY))|0)>5499;if(AW){A4=-1;A1=1}else{A4=-1;A1=2}if(A1==1){AI=5499;var i=Bq;A4=1}var AU=A4==1?i:(Bc);var AS=(((AU))|0)>100;if(AS){A1=3}else{A1=4}if(A1==3){Bq=100}ud(p7,0,11000,1,0);uA[((i3)>>2)]=0;var AP=uA[((((aI+20)&4294967295))>>2)];var AN=(((AP))|0)>0;if(AN){A1=5}else{A1=6}$bb5_thread$$bb5$8:do{if(A1==5){var AM=uA[((((aI+20)&4294967295))>>2)];Bq=AM;AI=130}else{if(A1==6){var A3=AI;var AL=(((A3))|0)==0;if(!(AL)){A1=8;break $bb5_thread$$bb5$8}Bq=0}}}while(0);var AK=uA[((bW)>>2)];var AJ=AI;var e=(((AJ)*(AK))&4294967295);var Bz=(((((e))|0)/1000)|0);uA[((pa)>>2)]=Bz;var By=uA[((pa)>>2)];uA[((j4)>>2)]=By;var Bx=Bq;var Bw=(((Bx))|0)==0;if(Bw){A4=8;A1=9}else{A4=8;A1=10}if(A1==9){uA[((j4)>>2)]=0;var A2=Bq;A4=9}var Bv=A4==9?A2:(Bx);var Bu=(((Bv))|0)>20;if(Bu){A1=11}else{A1=12}if(A1==11){var Bt=uA[((pa)>>2)];var Bs=(((Bt)*2)&4294967295);uA[((j4)>>2)]=Bs}var Br=Bq;uA[((Ar)>>2)]=Br;var Bh=uA[((((aI+12)&4294967295))>>2)];var Bf=(((Bh)*55)&4294967295);var Bd=(((((Bf))|0)/100)|0);Bj=Bd;var Bb=uA[((((aI+52)&4294967295))>>2)];var Ba=((hN+Bb)&4294967295);var A9=ll[((Ba)>>0)];var A8=oD((A9),8,0);var A7=Bj;var A6=(((A8)*(A7))&4294967295);var A5=(((((A6))|0)/16)|0);uA[((W)>>2)]=A5;var A0=uA[((W)>>2)];Bp=A0;var AZ=Bp;AQ=AZ;var AH=AQ;uA[((W)>>2)]=AH;var AX=Bq;var AV=((500-(AX))&4294967295);var AT=uA[((W)>>2)];var AR=(((AV)*(AT))&4294967295);var AO=(((((AR))|0)/500)|0);uA[((W)>>2)]=AO;return;return}function kb(A1){var AX;var AT;var A2;var AZ;var A0;A0=A1;var AO=A0;var AN=AO;ns(((du)&4294967295),AN,1344,1,0);uA[((uR)>>2)]=du;var AM=A0;var AL=((AM+88)&4294967295);var AK=uA[((AL)>>2)];var AJ=(((AK))|0)==0;if(AJ){AX=1}else{AX=2}if(AX==1){uA[((kV)>>2)]=((uk)&4294967295)}else{if(AX==2){uA[((kV)>>2)]=((ke)&4294967295)}}var AI=A0;var AH=((AI+100)&4294967295);var i=uA[((AH)>>2)];var e=(((i)*26)&4294967295);var AY=(((((e))|0)/100)|0);uA[((xs)>>2)]=AY;var AW=uA[((bW)>>2)];var AV=(((AW))|0)<=11000;if(AV){AX=4}else{AX=5}if(AX==4){var AU=uA[((xs)>>2)];var AS=(((AU)*2)&4294967295);uA[((xs)>>2)]=AS;la[((dR)>>0)]=1}fI();nV();var AR=uA[((uR)>>2)];var AQ=((AR+108)&4294967295);var AP=uA[((AQ)>>2)];AT=8;A2=0;AZ=AP;return;return}function yJ(Bn,AI){var Bl;var A9=null;var Bk;var BU;var BC;var Bm;var BT;var BB;var BN;var Bz;var AK;var BS;var BD;var AJ;var Br;var A8;BD=Bn;AJ=AI;Br=0;var BR=BD;var BQ=(BR)&31;A8=BQ;var BP=BD;var BO=(BP)&96;var BM=(((BO))|0)==96;if(BM){Bl=1}else{Bl=2}$bb$$bb1$2:do{if(Bl==1){Br=-1}else{if(Bl==2){var BL=BD;var BK=(BL)&96;var By=(((BK))|0)==64;if(!(By)){Bl=4;break $bb$$bb1$2}Br=1}}}while(0);var Bx=A8;var Bw=(((Bx))|0)<=14;if(Bw){A9=4;Bl=5}else{A9=4;Bl=14}if(Bl==5){var Bv=Br;var Bu=(((Bv))|0)==0;var Bt=A8;if(Bu){Bl=6}else{Bl=7}if(Bl==6){var Bs=((aI+Bt*4)&4294967295);var Bq=AJ;uA[((Bs)>>2)]=Bq}else{if(Bl==7){var Bp=A8;var Bo=((aI+Bp*4)&4294967295);var Bj=uA[((Bo)>>2)];var Bi=AJ;var Bh=Br;var Bg=(((Bh)*(Bi))&4294967295);var Bf=(((Bg)+(Bj))&4294967295);var Be=((aI+Bt*4)&4294967295);uA[((Be)>>2)]=Bf}}var Bd=A8;var Bc=A8;var Bb=((jf+Bc*4)&4294967295);var Ba=uA[((Bb)>>2)];var A7=A8;var A6=((aI+A7*4)&4294967295);var A5=uA[((A6)>>2)];BN=A5;Bz=Ba;var A4=(((A5))|0)<0;if(A4){Bl=9}else{Bl=10}if(Bl==9){BS=0}else{if(Bl==10){var A3=BN;var A1=Bz;var A0=(((A3))|0)>(((A1))|0);if(A0){Bl=11}else{Bl=12}if(Bl==11){var AZ=Bz;BS=AZ}else{if(Bl==12){var AY=BN;BS=AY}}}}var AX=BS;AK=AX;var AW=AK;var AU=((aI+Bd*4)&4294967295);uA[((AU)>>2)]=AW;var AV=A8;A9=13}var AT=A9==13?AV:(Bx);if(AT==1){Bl=16}else{if(AT==3){Bl=17}else{if(AT==5){Bl=19}else{if(AT==6){Bl=15}else{if(AT==13){Bl=18}else{Bl=20}}}}}$return$$bb10$$bb11$$bb13$$bb9$$bb12$21:do{if(Bl==17){var AS=uA[((((aI+12)&4294967295))>>2)];var AR=(((AS)*55)&4294967295);var AQ=(((((AR))|0)/100)|0);BB=AQ;var AP=uA[((((aI+52)&4294967295))>>2)];var AO=((hN+AP)&4294967295);var AN=ll[((AO)>>0)];var AM=oD((AN),8,0);var AL=BB;var AH=(((AM)*(AL))&4294967295);var i=(((((AH))|0)/16)|0);uA[((W)>>2)]=i;var e=uA[((W)>>2)];BT=e;var B1=BT;Bm=B1;var A2=Bm;uA[((W)>>2)]=A2;Bl=20;break $return$$bb10$$bb11$$bb13$$bb9$$bb12$21}else{if(Bl==19){fI();Bl=20;break $return$$bb10$$bb11$$bb13$$bb9$$bb12$21}else{if(Bl==15){fI();Bl=16;break $return$$bb10$$bb11$$bb13$$bb9$$bb12$21}else{if(Bl==18){var B0=uA[((((aI+12)&4294967295))>>2)];var BZ=(((B0)*55)&4294967295);var BY=(((((BZ))|0)/100)|0);BC=BY;var BX=uA[((((aI+52)&4294967295))>>2)];var BW=((hN+BX)&4294967295);var BV=ll[((BW)>>0)];var BJ=oD((BV),8,0);var BI=BC;var BH=(((BJ)*(BI))&4294967295);var BG=(((((BH))|0)/16)|0);uA[((W)>>2)]=BG;var BF=uA[((W)>>2)];BU=BF;var BE=BU;Bk=BE;var BA=Bk;uA[((W)>>2)]=BA;Bl=20;break $return$$bb10$$bb11$$bb13$$bb9$$bb12$21}}}}}while(0);if(Bl==16){nV()}return;return}function mW(AV,A6,A9,i){var AU;var AP;var Bh;var Bi;var AT;var Br;var AJ;AP=AV;Bh=A6;Bi=A9;AT=i;var Bg=AT;var Bf=(((Bg))|0)!=0;if(Bf){AU=1}else{AU=2}if(AU==1){var Be=AP;var Bd=((Be+24)&4294967295);pB[((Bd)>>2)]=0;var Bc=AP;var Bb=((Bc+32)&4294967295);pB[((Bb)>>2)]=0}var Ba=Bi;var A7=(((Ba))|0);var A4=pB[((rT)>>2)];var A2=(A7)*(A4);AJ=A2;var AS=AJ;var AR=ql(AS);Br=AR;var AQ=Br;var AO=Br;var AN=(AQ)*(AO);var AM=0-(AN);var AL=AP;var AK=((AL+16)&4294967295);pB[((AK)>>2)]=AM;var AI=Bh;var AH=(((AI))|0);var e=pB[((nC)>>2)];var Bs=(AH)*(e);AJ=Bs;var Bq=AJ;var Bp=h0(Bq);var Bo=Br;var Bn=(Bp)*(Bo);var Bm=(Bn)*2;var Bl=AP;var Bk=((Bl+8)&4294967295);pB[((Bk)>>2)]=Bm;var Bj=AP;var A8=((Bj+8)&4294967295);var A5=pB[((A8)>>2)];var A3=1-(A5);var A1=AP;var A0=((A1+16)&4294967295);var AZ=pB[((A0)>>2)];var AY=(A3)-(AZ);var AX=AP;var AW=((AX)&4294967295);pB[((AW)>>2)]=AY;return;return}function rg(){var AP;var AH;var AO=uA[((bW)>>2)];var AN=(((AO))|0);var AM=-3.1415927/(AN);pB[((rT)>>2)]=AM;var AL=pB[((rT)>>2)];var AK=(AL)*-2;pB[((nC)>>2)]=AK;AH=0;while(1){var AJ=AH;var AI=((aj+AJ*40)&4294967295);mW(AI,2000,200,1);var i=AH;var e=(((i)+1)&4294967295);AH=e;var AQ=(((e))|0)<=8;if(AQ){AP=1;continue}else{AP=2;break}}return;return}function s0(){var Ba;var Kt=null;var Cr;var IU;var e;var Ms;var CG;var IB;var GX;var CE;var Lx;var Hv;var Fc;var BT;var C9;var JA;var BS;var DI;var Ce;var LK;var JK;var LA;var CD;var B7;var Iu;var J6;var Cg;var CT;var B6;var L6;var L5;var HS;var B5;var BU;var Ck;var J7;var DO;var DM;var Mr;$bb$2:while(1){var Hb=ll[((Ai)>>0)];var CC=oD((Hb),1,0);var CB=(((CC))|0)==0;var CA=xk[((bG)>>2)];var Cz=uA[((a7)>>2)];var Cy=(((CA))|0)==(((Cz))|0);var KE=(CB)&(Cy);if(KE){Ba=2;break $bb$2}var Cx=(CA)&63;var Cw=(((Cx))|0)==0;if(Cw){Ba=4}else{Ba=32}$bb4$$bb8$5:do{if(Ba==4){var Gv=(((CA))|0)==0;if(Gv){Ba=5}else{Ba=6}$bb5$$bb6$7:do{if(Ba==5){uA[((rx)>>2)]=0;uA[((lN)>>2)]=((m0)&4294967295);var Gu=uA[((((tK+4)&4294967295))>>2)];var Gt=(Gu)<<4;var Gs=tE(((Av)&4294967295),Gt,((m0)&4294967295),0);uA[((rH)>>2)]=Gs;var Gr=uA[((((tK+52)&4294967295))>>2)];var Gq=uA[((((tK+4)&4294967295))>>2)];var Gp=(((Gq))|0)>>8;var Go=uA[((((tK+60)&4294967295))>>2)];var Gn=(((Go)*(Gr))&4294967295);var Gm=(((Gn)*(Gp))&4294967295);var Gb=(((((Gm))|0)/80000)|0);uA[((lM)>>2)]=Gb;var Ga=uA[((((tK+4)&4294967295))>>2)];var F9=(((Ga))|0)>>12;var F8=((890/(((F9))|0))|0);uA[((uN)>>2)]=F8}else{if(Ba==6){var F7=uA[((((tK+8)&4294967295))>>2)];var F6=uA[((((tK+12)&4294967295))>>2)];var F5=(((F6)+(F7))&4294967295);uA[((((tK+8)&4294967295))>>2)]=F5;var F4=uA[((((tK+8)&4294967295))>>2)];var F3=(((F4))|0)>>8;LK=F3;var F2=LK;var FR=(((F2))|0)>127;var FQ=oD((FR),1,0);DI=FQ;var FP=DI;var Bb=iB((FP),8,0)!=0;if(Bb){Ba=7}else{Ba=8}if(Ba==7){LK=127}var FO=uA[((((tK)&4294967295))>>2)];var FN=LK;var FM=((FO+FN)&4294967295);var FL=ll[((FM)>>0)];var FK=oD((FL),8,0);var FJ=uA[((((tK+20)&4294967295))>>2)];var FI=(((FK)*(FJ))&4294967295);Ce=FI;var Fn=Ce;var Fm=(((Fn))|0)>>8;var Fl=uA[((((tK+16)&4294967295))>>2)];var Fk=(((Fm)+(Fl))&4294967295);uA[((((tK+4)&4294967295))>>2)]=Fk;var Fj=uA[((ph)>>2)];var Fi=uA[((uo)>>2)];var Fh=(((Fi)+(Fj))&4294967295);uA[((ph)>>2)]=Fh;var Fg=uA[((bS)>>2)];var Ff=(((Fg))|0)>23551;if(Ff){Ba=9}else{Ba=10}if(Ba==9){uA[((bS)>>2)]=0}var Fe=uA[((bS)>>2)];var ES=(((Fe))|0)>>6;var ER=((sM+ES)&4294967295);var EQ=ll[((ER)>>0)];var EP=oD((EQ),8,0);var EO=(((EP)-128)&4294967295);var EN=uA[((Az)>>2)];var EM=(((EO)*(EN))&4294967295);Ce=EM;var EL=uA[((bS)>>2)];var EK=uA[((b)>>2)];var EJ=(((EK)+(EL))&4294967295);uA[((bS)>>2)]=EJ;var Eo=uA[((((tK+4)&4294967295))>>2)];var En=Ce;var Em=(((En)+(Eo))&4294967295);uA[((((tK+4)&4294967295))>>2)]=Em;var El=(((Em))|0)<=102399;if(El){Ba=11}else{Ba=12}if(Ba==11){uA[((((tK+4)&4294967295))>>2)]=102400}var Ek=uA[((bG)>>2)];var Ej=uA[((cf)>>2)];var Ei=(((Ek))|0)==(((Ej))|0);if(Ei){Ba=27;break $bb5$$bb6$7}LK=0;var Eh=uA[((uR)>>2)];var Eg=((Eh+84)&4294967295);var Ef=uA[((Eg)>>2)];var DU=LK;var DT=(((Ef))|0)>=(((DU))|0);if(DT){Kt=13;Ba=14}else{Kt=13;Ba=20}$bb7_i$$bb22_preheader_i$20:do{if(Ba==14){while(1){var DS=LK;var DR=LK;var DQ=((Av+DR*80)&4294967295);var DP=((DQ+16)&4294967295);var DN=pB[((DP)>>2)];var DL=LK;var DK=((Av+DL*80)&4294967295);var DJ=((DK+48)&4294967295);var Dx=pB[((DJ)>>2)];var Dw=(DN)+(Dx);var Dv=((Av+DS*80)&4294967295);var Du=((Dv+16)&4294967295);pB[((Du)>>2)]=Dw;var Dt=LK;var Ds=LK;var Dr=((Av+Ds*80)&4294967295);var Dq=((Dr+16)&4294967295);var Dp=pB[((Dq)>>2)];var Do=(((Dp))|0);var Dc=((Av+Dt*80)&4294967295);var Db=((Dc)&4294967295);uA[((Db)>>2)]=Do;var Da=LK;var C8=LK;var C7=((Av+C8*80)&4294967295);var C6=((C7+24)&4294967295);var C5=pB[((C6)>>2)];var C4=LK;var C2=((Av+C4*80)&4294967295);var C1=((C2+56)&4294967295);var Jv=pB[((C1)>>2)];var Jt=(C5)+(Jv);var Jr=((Av+Da*80)&4294967295);var Jp=((Jr+24)&4294967295);pB[((Jp)>>2)]=Jt;var Jn=LK;var Jl=LK;var Jj=((Av+Jl*80)&4294967295);var Jh=((Jj+24)&4294967295);var Jf=pB[((Jh)>>2)];var Je=(((Jf))|0);var Jb=((Av+Jn*80)&4294967295);var I9=((Jb+4)&4294967295);uA[((I9)>>2)]=Je;var I7=((Av+Jn*80)&4294967295);var I5=((I7+4)&4294967295);var I3=uA[((I5)>>2)];var I1=(((I3))|0)<0;var IZ=oD((I1),1,0);BS=IZ;var J5=iB((IZ),8,0)!=0;if(J5){Ba=15}else{Ba=16}if(Ba==15){var IX=LK;var IV=((Av+IX*80)&4294967295);var IT=((IV+4)&4294967295);uA[((IT)>>2)]=0}var IQ=LK;var IO=LK;var IM=((Av+IO*80)&4294967295);var IK=((IM+32)&4294967295);var II=pB[((IK)>>2)];var IG=LK;var IE=((Av+IG*80)&4294967295);var IC=((IE+64)&4294967295);var Iz=pB[((IC)>>2)];var Iy=(II)+(Iz);var Iv=((Av+IQ*80)&4294967295);var Is=((Iv+32)&4294967295);pB[((Is)>>2)]=Iy;var Iq=LK;var Io=LK;var Im=((Av+Io*80)&4294967295);var Ik=((Im+32)&4294967295);var Ii=pB[((Ik)>>2)];var Ig=(((Ii))|0);var Ie=((Av+Iq*80)&4294967295);var Id=((Ie+8)&4294967295);uA[((Id)>>2)]=Ig;var Ic=LK;var Ib=(((Ic))|0)<=2;var Ia=LK;var H9=LK;var H8=((Av+H9*80)&4294967295);if(Ib){Ba=17}else{Ba=18}if(Ba==17){var H7=((H8+40)&4294967295);var H6=pB[((H7)>>2)];var H5=LK;var H4=((Av+H5*80)&4294967295);var H3=((H4+72)&4294967295);var H2=pB[((H3)>>2)];var H1=(H6)+(H2);var H0=((Av+Ia*80)&4294967295);var HZ=((H0+40)&4294967295);pB[((HZ)>>2)]=H1;var HY=LK;var HX=LK;var HW=((Av+HX*80)&4294967295);var HV=((HW+40)&4294967295);var HU=pB[((HV)>>2)];var HT=(((HU))|0);var HR=((Av+HY*80)&4294967295);var HQ=((HR+12)&4294967295);uA[((HQ)>>2)]=HT}else{if(Ba==18){var HP=((H8+8)&4294967295);var HO=uA[((HP)>>2)];var HN=((Av+Ia*80)&4294967295);var HM=((HN+12)&4294967295);uA[((HM)>>2)]=HO}}var HL=LK;var HK=(((HL)+1)&4294967295);LK=HK;var HJ=uA[((uR)>>2)];var HI=((HJ+84)&4294967295);var Hx=uA[((HI)>>2)];var Hw=LK;var Hu=(((Hx))|0)>=(((Hw))|0);if(Hu){Kt=19;Ba=14;continue}else{Kt=19;Ba=20;break $bb7_i$$bb22_preheader_i$20}}}}while(0);var JC=Kt==13?DU:(Hw);var Ht=(((JC))|0)<=7;if(!(Ht)){Ba=27;break $bb5$$bb6$7}var Bw=LK;Kt=21;while(1){var Hs=Kt==21?Bw:(Mf);var Hr=(((Hs))|0)<=6;if(Hr){Ba=23}else{Ba=24}if(Ba==23){var Hq=LK;var Hp=LK;var Ho=((Av+Hp*80)&4294967295);var Hn=((Ho+16)&4294967295);var Hc=pB[((Hn)>>2)];var Ha=LK;var G9=((Av+Ha*80)&4294967295);var G8=((G9+48)&4294967295);var G7=pB[((G8)>>2)];var G6=(Hc)+(G7);var G5=((Av+Hq*80)&4294967295);var G4=((G5+16)&4294967295);pB[((G4)>>2)]=G6;var G3=LK;var G2=LK;var GQ=((Av+G2*80)&4294967295);var GP=((GQ+16)&4294967295);var GO=pB[((GP)>>2)];var GN=(((GO))|0);var GM=((Av+G3*80)&4294967295);var GL=((GM)&4294967295);uA[((GL)>>2)]=GN}var GK=LK;var GJ=LK;var GI=((Av+GJ*80)&4294967295);var GH=((GI+24)&4294967295);var AY=pB[((GH)>>2)];var AW=LK;var AU=((Av+AW*80)&4294967295);var AS=((AU+56)&4294967295);var AQ=pB[((AS)>>2)];var AO=(AY)+(AQ);var AM=((Av+GK*80)&4294967295);var AK=((AM+24)&4294967295);pB[((AK)>>2)]=AO;var AI=LK;var i=LK;var ML=((Av+i*80)&4294967295);var MJ=((ML+24)&4294967295);var MH=pB[((MJ)>>2)];var MF=(((MH))|0);var MD=((Av+AI*80)&4294967295);var MB=((MD+4)&4294967295);uA[((MB)>>2)]=MF;var Mz=((Av+AI*80)&4294967295);var Mx=((Mz+4)&4294967295);var Mv=uA[((Mx)>>2)];var Mt=(((Mv))|0)<0;var Mp=oD((Mt),1,0);JA=Mp;var LJ=iB((Mp),8,0)!=0;if(LJ){Ba=25}else{Ba=26}if(Ba==25){var Mn=LK;var Ml=((Av+Mn*80)&4294967295);var Mj=((Ml+4)&4294967295);uA[((Mj)>>2)]=0}var Mh=LK;var Mf=(((Mh)+1)&4294967295);LK=Mf;var Md=(((Mf))|0)<=7;if(Md){Kt=26;Ba=22;continue}else{Kt=26;Ba=27;break $bb5$$bb6$7}}}}}while(0);var Mb=uA[((((tK+4)&4294967295))>>2)];var L9=(((Mb))|0)>>7;var L7=uA[((ra)>>2)];var L3=(((L9)*(L7))&4294967295);uA[((yn)>>2)]=L3;var L1=uA[((bW)>>2)];var LZ=uA[((((tK+4)&4294967295))>>2)];var LX=(((LZ))|0)>>12;var LV=(((((L1))|0)/(((LX))|0))|0);uA[((sf)>>2)]=LV;var LT=uA[((((tK+4)&4294967295))>>2)];var LR=(((LT))|0)>>11;uA[((sH)>>2)]=LR;var LP=uA[((rH)>>2)];uA[((q0)>>2)]=LP;var LN=uA[((rx)>>2)];var LL=((m0+LN*1600)&4294967295);var LI=((LL)&4294967295);uA[((lN)>>2)]=LI;var LH=uA[((rx)>>2)];var LG=(LH)^1;uA[((rx)>>2)]=LG;var LF=uA[((rx)>>2)];var LE=((m0+LF*1600)&4294967295);var LD=((LE)&4294967295);var LC=uA[((((tK+4)&4294967295))>>2)];var LB=(LC)<<4;var Lz=tE(((Av)&4294967295),LB,LD,1);uA[((rH)>>2)]=Lz;var Ly=uA[((uR)>>2)];var Lw=((Ly+272)&4294967295);var Lv=((Lw)&4294967295);var Lu=uA[((Lv)>>2)];var Lt=(((Lu))|0)==0;if(Lt){Ba=40;break $bb4$$bb8$5}Cr=1;while(1){var Ls=uA[((uR)>>2)];var Lr=Cr;var Lq=((Ls+272)&4294967295);var Lp=((Lq+Lr*4)&4294967295);var Lo=uA[((Lp)>>2)];var Ln=(((Lo))|0)!=0;if(Ln){Ba=30}else{Ba=31}if(Ba==30){var Ll=uA[((uR)>>2)];var Lk=Cr;var Lj=((Ll+308)&4294967295);var Li=((Lj+Lk*4)&4294967295);var Lh=uA[((Li)>>2)];var Lg=Cr;var Lf=((Av+Lg*80)&4294967295);var Le=((Lf)&4294967295);var Ld=uA[((Le)>>2)];var Lc=(((Ld))|0)>>16;var K8=Cr;var K7=((aj+K8*40)&4294967295);mW(K7,Lc,Lh,0)}var K6=Cr;var K5=(((K6)+1)&4294967295);Cr=K5;var K4=(((K5))|0)<=8;if(K4){Ba=29;continue}else{Ba=40;break $bb4$$bb8$5}}}else{if(Ba==32){var K3=(CA)&7;var K2=(((K3))|0)==0;if(!(K2)){Ba=40;break $bb4$$bb8$5}Cg=1;Kt=33;while(1){var KO=Kt==34?KP:(1);var KN=(((KO))|0)>29;if(KN){Ba=38;break}var KM=uA[((rH)>>2)];var KL=Cg;var KK=(((KL))|0)>(((KM))|0);if(KK){Ba=38;break}var KJ=uA[((q0)>>2)];var KI=Cg;var KH=(((KI))|0)<=(((KJ))|0);if(!(KH)){Ba=38;break}var K1=uA[((lN)>>2)];var K0=uA[((lN)>>2)];var KZ=Cg;var KY=((K0+4*KZ)&4294967295);var KX=uA[((KY)>>2)];var KW=Cg;var KV=((fv+KW*4)&4294967295);var KU=uA[((KV)>>2)];var KT=(((KU)+(KX))&4294967295);var KS=Cg;var KR=((K1+4*KS)&4294967295);uA[((KR)>>2)]=KT;var KQ=Cg;var KP=(((KQ)+1)&4294967295);Cg=KP;Kt=34;Ba=35;continue}var KG=uA[((vt)>>2)];var KF=(((KG))|0)<=255;if(!(KF)){Ba=40;break $bb4$$bb8$5}var FG=uA[((vt)>>2)];var FE=(((FG)+1)&4294967295);uA[((vt)>>2)]=FE}}}while(0);var FC=uA[((bG)>>2)];var FA=(((FC)+1)&4294967295);uA[((bG)>>2)]=FA;var Fy=uA[((b3)>>2)];var Fw=(((Fy))|0)>0;var Fu=uA[((b3)>>2)];var Fs=uA[((yn)>>2)];var Fq=(((Fs)+(Fu))&4294967295);uA[((b3)>>2)]=Fq;var Fo=uA[((b3)>>2)];var Fb=(((Fo))|0)<0;var Ki=(Fw)&(Fb);if(Ki){Ba=41}else{Ba=62}$bb18$$bb44$57:do{if(Ba==41){var E9=uA[((od)>>2)];var E7=uA[((sf)>>2)];var E5=(((((E7))|0)/2)|0);var E3=(((E9)-(E5))&4294967295);uA[((ww)>>2)]=E3;var E1=uA[((bG)>>2)];var EZ=uA[((a7)>>2)];var EX=(((E1))|0)>(((EZ))|0);if(EX){Ba=42;break $bb$2}var EV=uA[((sp)>>2)];var ET=(((EV)+1)&4294967295);uA[((sp)>>2)]=ET;var EH=uA[((uR)>>2)];var EF=((EH+84)&4294967295);var ED=uA[((EF)>>2)];var EB=(((ED)+1)&4294967295);BU=EB;var Ez=(((EB))|0)<=8;if(Ez){Ba=44}else{Ba=45}$bb21$$bb23$60:do{if(Ba==44){while(1){var Ex=BU;var Ev=BU;var Et=((Av+Ev*80)&4294967295);var Er=((Et)&4294967295);var Ep=uA[((Er)>>2)];var Ed=uA[((((tK+4)&4294967295))>>2)];var Eb=(((Ed)*16)&4294967295);var D9=(((((Ep))|0)/(((Eb))|0))|0);var D7=((Al+Ex*4)&4294967295);uA[((D7)>>2)]=D9;var D5=BU;var D3=(((D5)+1)&4294967295);BU=D3;var D1=(((D3))|0)<=8;if(D1){Ba=44;continue}else{Ba=45;break $bb21$$bb23$60}}}}while(0);var DZ=uA[((((tK+52)&4294967295))>>2)];var DX=uA[((((tK+4)&4294967295))>>2)];var DV=(((DX))|0)>>8;var DH=uA[((((tK+60)&4294967295))>>2)];var DG=(((DH)*(DZ))&4294967295);var DF=(((DG)*(DV))&4294967295);var DE=(((((DF))|0)/80000)|0);uA[((lM)>>2)]=DE;var DD=uA[((T)>>2)];var DC=(((DD))|0)>0;if(DC){Ba=46}else{Ba=52}$bb24$$bb31$64:do{if(Ba==46){var DB=uA[((T)>>2)];var DA=(((DB))|0)==3;if(DA){Ba=47}else{Ba=49}if(Ba==47){var Dz=uA[((a7)>>2)];var Dy=uA[((bG)>>2)];var Dm=(((Dz)-(Dy))&4294967295);var Dl=uA[((sf)>>2)];var Dk=(((Dl)*2)&4294967295);var Dj=(((Dm))|0)<(((Dk))|0);if(!(Dj)){Ba=52;break $bb24$$bb31$64}uA[((T)>>2)]=2;var Di=uA[((lM)>>2)];var Dh=uA[((g7)>>2)];var Dg=(((Dh)*(Di))&4294967295);var Df=(((((Dg))|0)/256)|0);uA[((lM)>>2)]=Df}else{if(Ba==49){var De=uA[((T)>>2)];var Dd=(((De))|0)==4;if(Dd){Ba=50}else{Ba=51}if(Ba==50){uA[((T)>>2)]=2;var C0=uA[((lM)>>2)];var CZ=uA[((g7)>>2)];var CY=(((CZ)*(C0))&4294967295);var CX=(((((CY))|0)/256)|0);uA[((lM)>>2)]=CX}else{if(Ba==51){var CW=uA[((T)>>2)];var CV=(((CW)-1)&4294967295);uA[((T)>>2)]=CV}}}}}}while(0);var CU=uA[((bf)>>2)];var CS=(CU)!=0;if(CS){Ba=53}else{Ba=56}if(Ba==53){var CR=uA[((ph)>>2)];var CQ=(((CR))|0)>>8;CT=CQ;var CP=CT;var CO=(((CP))|0)>127;var CN=oD((CO),1,0);LA=CN;var CM=LA;var Lm=iB((CM),8,0)!=0;if(Lm){Ba=54}else{Ba=55}if(Ba==54){CT=127}var CL=uA[((bf)>>2)];var CK=CT;var CJ=((CL+CK)&4294967295);var CI=ll[((CJ)>>0)];var CH=oD((CI),8,0);DO=CH;var CF=uA[((lM)>>2)];var Cv=DO;var Cu=(((Cv)*(CF))&4294967295);var Ct=(((((Cu))|0)/128)|0);uA[((lM)>>2)]=Ct}Mr=0;var Cs=uA[((k5)>>2)];var Cq=((Cs+72)&4294967295);var Cp=uA[((Cq)>>2)];var Co=(((Cp))|0)<=7;if(!(Co)){Ba=62;break $bb18$$bb44$57}var Cn=uA[((k5)>>2)];var Cm=((Cn+72)&4294967295);var Cl=uA[((Cm)>>2)];var Cj=uA[((ep)>>2)];var Ci=((vF+Cl*8)&4294967295);var Ch=((Ci+Cj)&4294967295);var Cf=ll[((Ch)>>0)];var Cd=oD((Cf),8,0);Mr=Cd;var Cc=Mr;var Cb=(Cc)&15;DM=Cb;var Ca=Mr;var B9=(((Ca))|0)>>4;Mr=B9;var B8=(((B9))|0)!=0;if(!(B8)){Ba=62;break $bb18$$bb44$57}var KD=Mr;var KC=(((KD))|0)==15;if(KC){Ba=59}else{Ba=60}if(Ba==59){var KB=uA[((lM)>>2)];var KA=DM;var Kz=(((KA)*(KB))&4294967295);var Ky=(((((Kz))|0)/16)|0);uA[((lM)>>2)]=Ky;uA[((ep)>>2)]=0}else{if(Ba==60){var Kx=uA[((sp)>>2)];var Kw=Mr;var Kv=(((Kx))|0)%(((Kw))|0);var Ku=(((Kv))|0)==0;if(!(Ku)){Ba=62;break $bb18$$bb44$57}var Ks=uA[((lM)>>2)];var Kr=DM;var Kq=(((Kr)*(Ks))&4294967295);var Kp=(((((Kq))|0)/16)|0);uA[((lM)>>2)]=Kp}}}}while(0);var Ko=uA[((b3)>>2)];var Kn=(((Ko))|0)>>16;var Km=(((Kn))&65535);B7=Km;J6=0;var Kl=uA[((ww)>>2)];var Kk=(((Kl)+1)&4294967295);uA[((ww)>>2)]=Kk;var Kj=(((Kk))|0)>=0;if(Kj){Ba=63}else{Ba=67}$bb45$$bb50$87:do{if(Ba==63){var Kh=uA[((ww)>>2)];var Kg=uA[((id)>>2)];var Kf=(((Kh))|0)<(((Kg))|0);if(!(Kf)){Ba=67;break $bb45$$bb50$87}var Ke=uA[((uR)>>2)];var Kd=((Ke+84)&4294967295);var Kc=uA[((Kd)>>2)];var Kb=(((Kc)+1)&4294967295);BU=Kb;var Ka=(((Kb))|0)<=8;if(Ka){Ba=65}else{Ba=66}$bb47$$bb49$90:do{if(Ba==65){while(1){var J9=BU;var J8=((Al+J9*4)&4294967295);var J4=uA[((J8)>>2)];var J3=B7;var J2=oD((J3),16,0);var J1=(((J2)*(J4))&4294967295);var J0=(((J1))&65535);Iu=J0;var JZ=Iu;var JY=oD((JZ),16,0)>>>5;var JX=oD((JY),16,0);var JW=((uz+JX*2)&4294967295);var JV=uW[((JW)>>1)];var JU=iB((JV),16,0);var JT=BU;var JS=((qZ+JT*4)&4294967295);var JR=uA[((JS)>>2)];var JQ=(((JR)*(JU))&4294967295);var JP=J6;var JO=(((JQ)+(JP))&4294967295);J6=JO;var JN=BU;var JM=(((JN)+1)&4294967295);BU=JM;var JL=(((JM))|0)<=8;if(JL){Ba=65;continue}else{Ba=66;break $bb47$$bb49$90}}}}while(0);var JJ=uA[((sH)>>2)];var JI=J6;var JH=(((((JI))|0)/(((JJ))|0))|0);var JG=uA[((ww)>>2)];var JF=((fr+JG)&4294967295);var JE=ll[((JF)>>0)];var JD=oD((JE),8,0);var JB=(((JD)*(JH))&4294967295);J6=JB}}while(0);var Jz=B7;Iu=Jz;Cg=1;var Jy=uA[((uN)>>2)];var Jx=Cg;var Jw=(((Jx))|0)<=(((Jy))|0);if(Jw){Ba=68}else{Ba=70}$bb51$$bb55_loopexit$95:do{if(Ba==68){while(1){var Ju=Iu;var Js=oD((Ju),16,0)>>>5;var Jq=oD((Js),16,0);var Jo=((uz+Jq*2)&4294967295);var Jm=uW[((Jo)>>1)];var Jk=iB((Jm),16,0);var Ji=uA[((lN)>>2)];var Jg=Cg;var Jd=((Ji+4*Jg)&4294967295);var Jc=uA[((Jd)>>2)];var Ja=(((Jc)*(Jk))&4294967295);var I8=J6;var I6=(((Ja)+(I8))&4294967295);J6=I6;var I4=Iu;var I2=B7;var I0=(((I2)+(I4))&65535);Iu=I0;var IY=Cg;var IW=(((IY)+1)&4294967295);Cg=IW;var IS=uA[((uN)>>2)];var IR=Cg;var IP=(((IR))|0)<=(((IS))|0);if(IP){Ba=68;continue}else{Ba=70;break $bb51$$bb55_loopexit$95}}}}while(0);var B0=uA[((q0)>>2)];var BZ=Cg;var BY=(((BZ))|0)<=(((B0))|0);if(BY){Ba=69}else{Ba=71}$bb54$$bb56$99:do{if(Ba==69){while(1){var IN=Iu;var IL=oD((IN),16,0)>>>5;var IJ=oD((IL),16,0);var IH=((uz+IJ*2)&4294967295);var IF=uW[((IH)>>1)];var ID=iB((IF),16,0);var IA=uA[((lN)>>2)];var Ix=Cg;var Iw=((IA+4*Ix)&4294967295);var It=uA[((Iw)>>2)];var Ir=(((It)*(ID))&4294967295);var Ip=J6;var In=(((Ip)-(Ir))&4294967295);J6=In;var Il=Iu;var Ij=B7;var Ih=(((Ij)+(Il))&65535);Iu=Ih;var If=Cg;var B4=(((If)+1)&4294967295);Cg=B4;var B3=uA[((q0)>>2)];var B2=Cg;var B1=(((B2))|0)<=(((B3))|0);if(B1){Ba=69;continue}else{Ba=71;break $bb54$$bb56$99}}}}while(0);var BX=uA[((iq)>>2)];var BW=(((BX))|0)!=64;if(BW){Ba=72}else{Ba=73}if(Ba==72){var BV=J6;var BQ=(((BV))|0)>>6;var BP=uA[((iq)>>2)];var BO=(((BQ)*(BP))&4294967295);J6=BO}var BN=uA[((uR)>>2)];var BM=((BN+272)&4294967295);var BL=((BM)&4294967295);var BK=uA[((BL)>>2)];var BJ=(((BK))|0)!=0;if(BJ){Ba=74}else{Ba=79}if(Ba==74){Hv=0;var BI=x6();var BH=(BI)&16383;var BG=(((BH)-8192)&4294967295);Fc=BG;BT=1;while(1){var BF=uA[((uR)>>2)];var BE=BT;var BD=((BF+272)&4294967295);var BC=((BD+BE*4)&4294967295);var BB=uA[((BC)>>2)];C9=BB;var BA=C9;var Bz=(((BA))|0)!=0;var By=oD((Bz),1,0);Lx=By;var BR=iB((By),8,0)!=0;if(BR){Ba=76}else{Ba=77}if(Ba==76){var Bx=BT;var Bv=((Av+Bx*80)&4294967295);var Bu=((Bv+4)&4294967295);var Bt=uA[((Bu)>>2)];var Bs=(((Bt))|0)>>14;var Br=C9;var Bq=(((Bs)*(Br))&4294967295);C9=Bq;var Bp=Fc;var Bo=(((Bp))|0);var Bn=BT;var Bm=((aj+Bn*40)&4294967295);IU=Bm;e=Bo;var Bl=IU;var Bk=((Bl)&4294967295);var Bj=pB[((Bk)>>2)];var Bi=e;var Bh=(Bj)*(Bi);var Bg=IU;var Bf=((Bg+8)&4294967295);var Be=pB[((Bf)>>2)];var Bd=IU;var Bc=((Bd+24)&4294967295);var A9=pB[((Bc)>>2)];var A8=(Be)*(A9);var A7=(Bh)+(A8);var A6=IU;var A5=((A6+16)&4294967295);var A4=pB[((A5)>>2)];var A3=IU;var A2=((A3+32)&4294967295);var A1=pB[((A2)>>2)];var A0=(A4)*(A1);var AZ=(A7)+(A0);IB=AZ;var AX=IU;var AV=((AX+24)&4294967295);var AT=pB[((AV)>>2)];var AR=IU;var AP=((AR+32)&4294967295);pB[((AP)>>2)]=AT;var AN=IU;var AL=((AN+24)&4294967295);var AJ=IB;pB[((AL)>>2)]=AJ;var AH=IB;CG=AH;var MM=CG;Ms=MM;var C3=Ms;var MK=C9;var MI=(((MK))|0);var MG=(C3)*(MI);var ME=(((MG))|0);var MC=Hv;var MA=(((ME)+(MC))&4294967295);Hv=MA}var My=BT;var Mw=(((My)+1)&4294967295);BT=Mw;var Mu=(((Mw))|0)<=8;if(Mu){Ba=75;continue}else{Ba=78;break}}var Mq=Hv;CE=Mq;var Mo=CE;GX=Mo;var GG=GX;var Mm=J6;var Mk=(((Mm)+(GG))&4294967295);J6=Mk}L5=0;var Mi=uA[((((tK+40)&4294967295))>>2)];var Mg=uA[((((tK+28)&4294967295))>>2)];var Me=(((Mi))|0)<(((Mg))|0);if(Me){Ba=80}else{Ba=85}$bb61$$bb66$115:do{if(Ba==80){var Mc=uA[((((tK+32)&4294967295))>>2)];var Ma=(((Mc))|0)==0;var L8=uA[((((tK+24)&4294967295))>>2)];if(Ma){Ba=81}else{Ba=82}if(Ba==81){var L4=uA[((((tK+40)&4294967295))>>2)];var L2=uA[((((tK+48)&4294967295))>>2)];var L0=(((L4)+1)&4294967295);var LY=(((L0)+(L2))&4294967295);var LW=((L8+LY)&4294967295);var LU=la[((LW)>>0)];Ck=LU;var LS=uA[((((tK+24)&4294967295))>>2)];var LQ=uA[((((tK+40)&4294967295))>>2)];var LO=uA[((((tK+48)&4294967295))>>2)];var LM=(((LO)+(LQ))&4294967295);var HH=((LS+LM)&4294967295);var HG=ll[((HH)>>0)];var HF=oD((HG),8,0);var HE=Ck;var HD=iB((HE),8,0);var HC=(((HD)*256)&4294967295);var HB=(((HC)+(HF))&4294967295);J7=HB;var HA=uA[((((tK+40)&4294967295))>>2)];var Hz=(((HA)+2)&4294967295);uA[((((tK+40)&4294967295))>>2)]=Hz}else{if(Ba==82){var Hy=uA[((((tK+48)&4294967295))>>2)];var Hm=uA[((((tK+40)&4294967295))>>2)];var Hl=(((Hm)+(Hy))&4294967295);var Hk=((L8+Hl)&4294967295);var Hj=la[((Hk)>>0)];var Hi=iB((Hj),8,0);var Hh=uA[((((tK+32)&4294967295))>>2)];var Hg=(((Hi)*(Hh))&4294967295);J7=Hg;var Hf=(((Hm)+1)&4294967295);uA[((((tK+40)&4294967295))>>2)]=Hf}}var He=uA[((((tK+56)&4294967295))>>2)];var Hd=J7;var G1=(((Hd)*(He))&4294967295);var G0=(((G1))|0)>>10;L5=G0;var GZ=uA[((((tK+36)&4294967295))>>2)];var GY=L5;var GW=(((GY)*(GZ))&4294967295);var GV=(((((GW))|0)/32)|0);L5=GV;var GU=uA[((((tK+40)&4294967295))>>2)];var GT=uA[((((tK+48)&4294967295))>>2)];var GS=(((GT)+(GU))&4294967295);var GR=uA[((((tK+44)&4294967295))>>2)];var GF=(((GS))|0)>=(((GR))|0);if(!(GF)){Ba=85;break $bb61$$bb66$115}var GE=uA[((((tK+48)&4294967295))>>2)];var GD=uA[((((tK+44)&4294967295))>>2)];var GC=(((GD)*3)&4294967295);var GB=(((((GC))|0)/4)|0);var GA=(((GE)-(GB))&4294967295);uA[((((tK+48)&4294967295))>>2)]=GA}}while(0);var Gz=J6;var Gy=(((Gz))|0)>>8;var Gx=uA[((lM)>>2)];var Gw=(((Gy)*(Gx))&4294967295);var Gl=(((Gw))|0)>>13;var Gk=L5;var Gj=(((Gl)+(Gk))&4294967295);L6=Gj;var Gi=uA[((i3)>>2)];var Gh=((p7+Gi*2)&4294967295);var Gg=uW[((Gh)>>1)];var Gf=iB((Gg),16,0);var Ge=uA[((Ar)>>2)];var Gd=(((Gf)*(Ge))&4294967295);HS=Gd;var Gc=(((Gi)+1)&4294967295);uA[((i3)>>2)]=Gc;var F1=HS;var F0=(((F1))|0)>>8;var FZ=L6;var FY=(((F0)+(FZ))&4294967295);L6=FY;var FX=(((Gc))|0)>5499;if(FX){Ba=86}else{Ba=87}if(Ba==86){uA[((i3)>>2)]=0}var FW=uA[((vt)>>2)];var FV=L6;var FU=(((FV)*(FW))&4294967295);var FT=(((FU))|0)>>8;B6=FT;var FS=(((FT))|0)>32767;if(FS){Ba=88}else{Ba=91}$bb69$$bb72$126:do{if(Ba==88){var FH=L6;var FF=((8388608/(((FH))|0))|0);var FD=(((FF)-1)&4294967295);B5=FD;var FB=uA[((vt)>>2)];var Fz=B5;var Fx=(((Fz))|0)<(((FB))|0);if(Fx){Ba=89}else{Ba=90}if(Ba==89){var Fv=B5;uA[((vt)>>2)]=Fv}var Ft=uA[((vt)>>2)];var Fr=L6;var Fp=(((Fr)*(Ft))&4294967295);var Fd=(((Fp))|0)>>8;B6=Fd}else{if(Ba==91){var Fa=B6;var E8=(((Fa))|0)<=-32768;if(!(E8)){Ba=95;break $bb69$$bb72$126}var E6=L6;var E4=((-8388608/(((E6))|0))|0);var E2=(((E4)-1)&4294967295);B5=E2;var E0=uA[((vt)>>2)];var EY=B5;var EW=(((EY))|0)<(((E0))|0);if(EW){Ba=93}else{Ba=94}if(Ba==93){var EU=B5;uA[((vt)>>2)]=EU}var EI=uA[((vt)>>2)];var EG=L6;var EE=(((EG)*(EI))&4294967295);var EC=(((EE))|0)>>8;B6=EC}}}while(0);var EA=uA[((xH)>>2)];var Ey=B6;var Ew=(((Ey))&255);la[((EA)>>0)]=Ew;var Eu=((EA+1)&4294967295);uA[((xH)>>2)]=Eu;var Es=uA[((xH)>>2)];var Eq=B6;var Ee=(((Eq))|0)>>8;var Ec=(((Ee))&255);la[((Es)>>0)]=Ec;var Ea=((Es+1)&4294967295);uA[((xH)>>2)]=Ea;var D8=uA[((pa)>>2)];var D6=B6;var D4=(((D6))&65535);var D2=((p7+D8*2)&4294967295);uW[((D2)>>1)]=D4;var D0=(((D8)+1)&4294967295);uA[((pa)>>2)]=D0;var DY=(((D0))|0)>5499;if(DY){Ba=96}else{Ba=97}if(Ba==96){uA[((pa)>>2)]=0}var DW=xk[((xH)>>2)];var Lb=xk[((kU)>>2)];var La=(DW)>=(Lb);if(La){Ba=98;break $bb$2}else{Ba=1;continue $bb$2}}if(Ba==2){CD=0}else{if(Ba==42){CD=0}else{if(Ba==98){CD=1}}}var K9=CD;JK=K9;var Dn=JK;return Dn;return null}function pY(Fr){var FL;var E5=null;var AV;var Bt;var CJ;var Gl;var FX;var Cg;var FC;var BP;var CU;var D4;var Fh;var CF;var DV;var CT;var BQ;var B4;var Cr;var CE;var Ef;var Gj;var CS;var CV;var DX;var By;var A8;var Du;var Gk;var CR;var BT;var A7;var D0;var EB;var CQ;var BZ;var BR;var CP;var Cs;var Dq;var Cx;var CO;var CH;var CG;var C6;var Cc;Cs=Fr;$bb37$2:while(1){var EE=xk[((xH)>>2)];var ED=xk[((kU)>>2)];var EC=(EE)<(ED);if(!(EC)){FL=67;break $bb37$2}var CN=uA[((Ap)>>2)];var CM=uA[((t3)>>2)];var CL=(((CN)-(CM))&4294967295);BZ=CL;var CK=BZ;var Fy=(((CK))|0)<=0;if(Fy){FL=2}else{FL=3}if(FL==2){var Fx=BZ;var Fw=(((Fx)+160)&4294967295);BZ=Fw}var Fv=BZ;CQ=Fv;var Fu=CQ;EB=Fu;var DQ=EB;var Ft=((160-(DQ))&4294967295);CP=Ft;var Fs=CP;BR=Fs;var F0=BR;var Fq=(((F0))|0)<=0;var Fp=oD((Fq),1,0);CH=Fp;var FM=iB((Fp),8,0)!=0;if(FM){FL=4;break $bb37$2}Cc=0;var Et=uA[((Ap)>>2)];var Es=((v0+Et*16)&4294967295);var Er=((Es)&4294967295);CG=Er;var Eq=CG;var Ee=((Eq+4)&4294967295);var Ed=uA[((Ee)>>2)];C6=Ed;var Ec=CG;var Eb=((Ec)&4294967295);var Ea=uA[((Eb)>>2)];if(Ea==1){FL=43}else{if(Ea==2){FL=42}else{if(Ea==3){FL=39}else{if(Ea==4){FL=38}else{if(Ea==5){FL=13}else{if(Ea==6){FL=16}else{if(Ea==7){FL=35}else{if(Ea==8){FL=50}else{if(Ea==9){FL=12}else{if(Ea==10){FL=46}else{if(Ea==11){FL=54}else{if(Ea==12){FL=55}else{if(Ea==13){FL=56}else{if(Ea==14){FL=57}else{if(Ea==15){FL=59}else{FL=60}}}}}}}}}}}}}}}$bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9:do{if(FL==42){uA[((((tK+28)&4294967295))>>2)]=0;FL=43;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==38){uA[((((tK+28)&4294967295))>>2)]=0;FL=39;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==13){var DG=uA[((pM)>>2)];var DF=(((DG))|0)==0;if(DF){FL=14}else{FL=15}if(FL==14){var DE=uA[((ys)>>2)];var DD=C6;var DC=(((DE)-(DD))&4294967295);uA[((ys)>>2)]=DC}uA[((((tK+28)&4294967295))>>2)]=0;uA[((((tK+60)&4294967295))>>2)]=100;vc(1);var DB=uA[((pM)>>2)];var DA=C6;var Dz=o1(DA,DB);Cc=Dz;E5=15;FL=61;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==16){var Dy=uA[((j4)>>2)];uA[((ys)>>2)]=Dy;uA[((((tK+28)&4294967295))>>2)]=0;vc(1);var Dx=CG;var Dw=((Dx+12)&4294967295);var Dv=uA[((Dw)>>2)];var Ds=(((Dv))|0)>>8;var Dr=CG;var Dp=((Dr+12)&4294967295);var Do=uA[((Dp)>>2)];var Dn=(Do)&255;var Dm=CG;var Dl=((Dm+8)&4294967295);var Dk=uA[((Dl)>>2)];var Dj=(Dk);var Di=uA[((pM)>>2)];var Dg=C6;CV=Dg;DX=Di;By=Dj;A8=Dn;Du=Ds;var Df=DX;var De=(((Df))|0)==0;if(De){FL=17}else{FL=18}if(FL==17){var Dd=CV;uA[((mn)>>2)]=Dd;uA[((mj)>>2)]=0}uA[((a7)>>2)]=0;uA[((bG)>>2)]=0;$bb15_i$20:while(1){var Bw=xk[((mn)>>2)];var Bv=(((Bw))|0)>0;var Bu=oD((Bv),1,0);BT=Bu;var Bs=(((Bw)-1)&4294967295);uA[((mn)>>2)]=Bs;var Dh=iB((Bu),8,0)!=0;if(!(Dh)){FL=33;break $bb15_i$20}var Dc=A8;var Db=(((Dc))|0)==0;var Da=xk[((mj)>>2)];if(Db){FL=20}else{FL=21}if(FL==20){var C9=(((Da)+1)&4294967295);var C8=By;var C7=((C8+C9)&4294967295);var C5=la[((C7)>>0)];D0=C5;var C4=uA[((mj)>>2)];var C3=By;var C2=((C3+C4)&4294967295);var C1=ll[((C2)>>0)];var C0=oD((C1),8,0);var CZ=D0;var CY=iB((CZ),8,0);var CX=(((CY)*256)&4294967295);var CW=(((CX)+(C0))&4294967295);A7=CW;var CD=uA[((mj)>>2)];var CC=(((CD)+2)&4294967295);uA[((mj)>>2)]=CC}else{if(FL==21){var CB=By;var CA=((CB+Da)&4294967295);var Cz=la[((CA)>>0)];var Cy=iB((Cz),8,0);var Cw=A8;var Cv=(((Cy)*(Cw))&4294967295);A7=Cv;var Cu=(((Da)+1)&4294967295);uA[((mj)>>2)]=Cu}}var Ct=uA[((xs)>>2)];var Cq=uA[((W)>>2)];var Cp=A7;var Co=(((Cq)*(Ct))&4294967295);var Cn=(((Co)*(Cp))&4294967295);A7=Cn;var Cm=A7;var Cl=(((Cm))|0)>>10;A7=Cl;var Ck=A7;var Cj=Du;var Ci=(((Cj)*(Ck))&4294967295);var Ch=(((((Ci))|0)/32)|0);A7=Ch;var Cf=uA[((i3)>>2)];var Ce=((p7+Cf*2)&4294967295);var Cd=uW[((Ce)>>1)];var Cb=iB((Cd),16,0);var Ca=uA[((Ar)>>2)];var B9=(((Cb)*(Ca))&4294967295);var B8=(((B9))|0)>>8;var B7=A7;var B6=(((B8)+(B7))&4294967295);A7=B6;var B5=(((Cf)+1)&4294967295);uA[((i3)>>2)]=B5;var B3=(((B6))|0)>32767;if(B3){FL=23}else{FL=24}$bb6_i$$bb7_i$27:do{if(FL==23){A7=32768}else{if(FL==24){var B2=A7;var B1=(((B2))|0)<-32768;if(!(B1)){FL=26;break $bb6_i$$bb7_i$27}A7=-32768}}}while(0);var B0=uA[((i3)>>2)];var BY=(((B0))|0)>5499;if(BY){FL=27}else{FL=28}if(FL==27){uA[((i3)>>2)]=0}var BX=uA[((xH)>>2)];var BW=A7;var BV=(((BW))&255);var BU=((BX)&4294967295);la[((BU)>>0)]=BV;var BS=uA[((xH)>>2)];var BO=A7;var BN=(((BO))|0)>>8;var BM=(((BN))&255);var BL=((BS+1)&4294967295);la[((BL)>>0)]=BM;var BK=uA[((xH)>>2)];var BJ=((BK+2)&4294967295);uA[((xH)>>2)]=BJ;var BI=uA[((pa)>>2)];var BH=A7;var BG=(((BH)*3)&4294967295);var BF=(((((BG))|0)/4)|0);var BE=(((BF))&65535);var BD=((p7+BI*2)&4294967295);uW[((BD)>>1)]=BE;var BC=(((BI)+1)&4294967295);uA[((pa)>>2)]=BC;var BB=(((BC))|0)>5499;if(BB){FL=29}else{FL=30}if(FL==29){uA[((pa)>>2)]=0}var BA=xk[((xH)>>2)];var Bz=xk[((kU)>>2)];var Bx=(BA)>=(Bz);if(Bx){FL=31;break $bb15_i$20}else{FL=32;continue $bb15_i$20}}if(FL==33){CR=0}else{if(FL==31){CR=1}}var Br=CR;Gk=Br;var Fz=Gk;Cc=Fz;E5=34;FL=61;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==35){var Bq=CG;var Bp=((Bq+12)&4294967295);var Bo=uA[((Bp)>>2)];var Bn=(((Bo))|0)>>8;uA[((((tK+36)&4294967295))>>2)]=Bn;var Bm=CG;var Bl=((Bm+12)&4294967295);var Bk=uA[((Bl)>>2)];var Bi=(Bk)&255;uA[((((tK+32)&4294967295))>>2)]=Bi;var A6=C6;var A5=(A6)&65535;uA[((((tK+28)&4294967295))>>2)]=A5;var A4=C6;var A3=(((A4))|0)>>16;var A2=(A3)&65535;uA[((((tK+44)&4294967295))>>2)]=A2;var A1=uA[((((tK+32)&4294967295))>>2)];var A0=(((A1))|0)==0;if(A0){FL=36}else{FL=37}if(FL==36){var AZ=uA[((((tK+28)&4294967295))>>2)];var AY=(((AZ)*2)&4294967295);uA[((((tK+28)&4294967295))>>2)]=AY;var AW=uA[((((tK+44)&4294967295))>>2)];var AK=(((AW)*2)&4294967295);uA[((((tK+44)&4294967295))>>2)]=AK}uA[((((tK+40)&4294967295))>>2)]=0;uA[((((tK+48)&4294967295))>>2)]=0;var AJ=CG;var AI=((AJ+8)&4294967295);var AH=uA[((AI)>>2)];var e=(AH);uA[((((tK+24)&4294967295))>>2)]=e;FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==50){var FG=CG;var FF=((FG+12)&4294967295);var FE=uA[((FF)>>2)];var FD=CG;var FB=((FD+8)&4294967295);var FA=uA[((FB)>>2)];var Fn=(FA);var Fm=C6;AV=Fm;Bt=Fn;CJ=FE;uA[((ph)>>2)]=0;var Fl=AV;var Fk=(((Fl))|0)==0;if(Fk){FL=51}else{FL=52}if(FL==51){uA[((uo)>>2)]=0}else{if(FL==52){var Fj=AV;var Fi=((2097152/(((Fj))|0))|0);uA[((uo)>>2)]=Fi}}var Fg=uA[((W)>>2)];var Ff=CJ;var Fd=(((Ff)*(Fg))&4294967295);var Fb=(((((Fd))|0)/16)|0);uA[((((tK+52)&4294967295))>>2)]=Fb;var ER=uA[((((tK+52)&4294967295))>>2)];var EQ=uA[((uR)>>2)];var EP=((EQ+104)&4294967295);var EO=uA[((EP)>>2)];var EN=(((ER)*15)&4294967295);var EM=(((EN)*(EO))&4294967295);var EL=(((((EM))|0)/100)|0);uA[((((tK+56)&4294967295))>>2)]=EL;var EK=Bt;uA[((bf)>>2)]=EK;FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==12){var D9=CG;var D8=((D9+12)&4294967295);var D7=uA[((D8)>>2)];var D6=(D7)&65535;var D5=CG;var DO=((D5+12)&4294967295);var DN=uA[((DO)>>2)];var DM=(((DN))|0)>>16;var DL=CG;var DK=((DL+8)&4294967295);var DJ=uA[((DK)>>2)];var DI=(DJ);var DH=C6;vK(DH,DI,DM,D6);FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==46){var F4=uA[((xH)>>2)];var F3=CG;var F2=((F3+12)&4294967295);var F1=uA[((F2)>>2)];var FZ=CG;var FY=((FZ+8)&4294967295);var FW=uA[((FY)>>2)];var FV=CG;var FU=((FV+4)&4294967295);var FT=uA[((FU)>>2)];Gl=FT;FX=FW;Cg=F1;FC=F4;var FS=Gl;var FR=(((FS))|0)==2;if(FR){FL=47}else{FL=48}if(FL==47){uA[((s3)>>2)]=1}var FQ=CG;var FP=((FQ+4)&4294967295);var FO=uA[((FP)>>2)];var FN=(((FO))|0)==1;if(!(FN)){FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}var FK=CG;var FJ=((FK+8)&4294967295);var FI=uA[((FJ)>>2)];var FH=(FI)&16777215;uA[((z4)>>2)]=FH;FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==54){var EJ=CG;var EH=((EJ+4)&4294967295);var Ep=uA[((EH)>>2)];var Eo=(Ep);kb(Eo);var En=CG;var Em=((En+4)&4294967295);var El=uA[((Em)>>2)];var Ek=(El);var Ej=Ek;br(Ej);FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==55){var Ei=CG;var Eh=((Ei+8)&4294967295);var Eg=uA[((Eh)>>2)];var D3=CG;var D2=((D3+4)&4294967295);var D1=uA[((D2)>>2)];yJ(D1,Eg);FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==56){var DZ=uA[((pM)>>2)];var DY=C6;var DW=ri(DY,DZ);Cc=DW;E5=56;FL=61;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==57){var DU=CG;var DT=((DU+4)&4294967295);var DS=uA[((DT)>>2)];uA[((((tK+60)&4294967295))>>2)]=DS;var DR=uA[((((tK+60)&4294967295))>>2)];var Fe=(((DR))|0)==0;var Fc=oD((Fe),1,0);Cx=Fc;var Fa=Cx;var CI=iB((Fa),8,0)!=0;if(!(CI)){FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}uA[((((tK+60)&4294967295))>>2)]=100;FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}else{if(FL==59){var E9=CG;var E8=((E9+4)&4294967295);var E7=uA[((E8)>>2)];var E6=(((E7))|0);var E4=(E6)/1024;pB[((tm)>>2)]=E4;FL=60;break $bb34thread_pre_split$$bb21$$bb20$$bb19$$bb18$$bb11$$bb14$$bb15$$bb25$$bb10$$bb22$$bb26$$bb27$$bb28$$bb29$$bb33$9}}}}}}}}}}}}}}while(0);if(FL==60){var AL=Cc;E5=60}else{if(FL==43){var A9=uA[((j4)>>2)];uA[((ys)>>2)]=A9;var AX=CG;var AU=((AX+12)&4294967295);var AT=uA[((AU)>>2)];var AS=(AT);var AR=CG;var AQ=((AR+8)&4294967295);var AP=uA[((AQ)>>2)];var AO=(AP);var AN=uA[((pM)>>2)];var AM=CG;var Gx=((AM+4)&4294967295);var Gv=uA[((Gx)>>2)];var Gt=(((Gv))|0)>>16;var Gs=C6;var Gr=(Gs)&65535;BP=Gr;CU=Gt;D4=AN;Fh=AO;CF=AS;var Gq=(((AN))|0)==0;if(Gq){FL=44}else{FL=45}if(FL==44){var Gp=uA[((uR)>>2)];var Go=BP;var Gn=CU;var Gm=Fh;var Ga=CF;zY(Go,Gn,Gm,Ga,Gp,1)}var F8=D4;var F6=kf(F8);CT=F6;var F5=CT;DV=F5;var Dt=DV;Cc=Dt;E5=45}else{if(FL==39){var GA=uA[((j4)>>2)];uA[((ys)>>2)]=GA;var Gz=CG;var Gy=((Gz+12)&4294967295);var Gw=uA[((Gy)>>2)];var Gu=(Gw);var Gi=CG;var Gh=((Gi+8)&4294967295);var Gg=uA[((Gh)>>2)];var Gf=(Gg);var Ge=uA[((pM)>>2)];var Gd=CG;var Gc=((Gd+4)&4294967295);var Gb=uA[((Gc)>>2)];var F9=(((Gb))|0)>>16;var F7=C6;var Bj=(F7)&65535;BQ=Bj;B4=F9;Cr=Ge;CE=Gf;Ef=Gu;var Bh=(((Ge))|0)==0;if(Bh){FL=40}else{FL=41}if(FL==40){var Bg=uA[((uR)>>2)];var Bf=BQ;var Be=B4;var Bd=CE;var Bc=Ef;j3(Bf,Be,Bd,Bc,Bg)}var Bb=s0();CS=Bb;var Ba=CS;Gj=Ba;var DP=Gj;Cc=DP;E5=41}}}var E3=E5==60?AL:(E5==56?DW:(E5==45?Dt:(E5==41?DP:(E5==34?Fz:(Dz)))));var E2=(((E3))|0)==0;if(E2){FL=62}else{FL=65}if(FL==62){var EI=uA[((Ap)>>2)];var EG=(((EI)+1)&4294967295);uA[((Ap)>>2)]=EG;var EF=(((EG))|0)>159;if(EF){FL=63}else{FL=64}if(FL==63){uA[((Ap)>>2)]=0}uA[((pM)>>2)]=0;FL=66;continue $bb37$2}else{if(FL==65){uA[((pM)>>2)]=1;FL=66;continue $bb37$2}}}$bb1$$bb38$80:do{if(FL==4){var Fo=uA[((ys)>>2)];var E1=(((Fo))|0)>0;if(E1){FL=5}else{FL=7}$bb2$$bb4$82:do{if(FL==5){var E0=uA[((pM)>>2)];var EZ=uA[((ys)>>2)];var EY=o1(EZ,E0);uA[((pM)>>2)]=EY;var EX=uA[((pM)>>2)];var EW=(((EX))|0)==1;if(!(EW)){FL=7;break $bb2$$bb4$82}CO=0;FL=68;break $bb1$$bb38$80}}while(0);var EV=Cs;var EU=(((EV))|0)!=0;if(EU){FL=8}else{FL=10}$bb7_preheader$$bb8$86:do{if(FL==8){var ET=xk[((xH)>>2)];var ES=xk[((kU)>>2)];var Ez=(ET)<(ES);if(!(Ez)){FL=10;break $bb7_preheader$$bb8$86}while(1){var Ey=xk[((xH)>>2)];la[((Ey)>>0)]=0;var Ex=((Ey+1)&4294967295);uA[((xH)>>2)]=Ex;var Ew=xk[((xH)>>2)];var Ev=xk[((kU)>>2)];var Eu=(Ew)<(Ev);if(Eu){FL=9;continue}else{FL=10;break $bb7_preheader$$bb8$86}}}}while(0);CO=1}else{if(FL==67){CO=0}}}while(0);var EA=CO;Dq=EA;var i=Dq;return i;return null}function nU(BB){var Bm;var BW;var Bn;var BA;var BV;var BT;var BX;var AN;var AW;var AI;var AJ;var BS;var Bd;var A8;var A6;var BR;var BU;var BO;var Bu;var A9;A8=BB;var BQ=uA[((xH)>>2)];BO=BQ;var BP=pY(0);BU=BP;var BN=pB[((tm)>>2)];var BM=(BN)>1;if(BM){Bm=1}else{Bm=14}$bb$$bb2$2:do{if(Bm==1){var BL=uA[((kU)>>2)];var BK=(BL);var BJ=BO;var Bz=(BJ);var By=(((BK)-(Bz))&4294967295);A9=By;var Bx=A9;var Bw=(((((Bx))|0)/2)|0);var Bv=uA[((xH)>>2)];var Bt=(Bv);var Bs=BO;var Br=(Bs);var Bq=(((Bt)-(Br))&4294967295);var Bo=(((((Bq))|0)/2)|0);var Bl=BO;var Bk=Bl;var Bi=BU;BX=Bk;AN=Bo;AW=Bw;AI=Bi;var Bh=AN;var Bg=(((Bh))|0)>0;if(Bg){Bm=2}else{Bm=7}if(Bm==2){var Bf=uA[((th)>>2)];var Be=(Bf)==0;if(Be){Bm=3}else{Bm=4}if(Bm==3){var Bc=s8(22050,1);uA[((th)>>2)]=Bc}var Bb=uA[((th)>>2)];BA=Bb;var Ba=BA;var A7=((Ba+16)&4294967295);var A5=pB[((A7)>>2)];BT=A5;var A4=BT;BV=A4;var BY=BV;var A3=(BY);var A2=pB[((tm)>>2)];var A1=(A3)!=(A2);var A0=oD((A1),1,0);Bd=A0;var AQ=iB((A0),8,0)!=0;if(AQ){Bm=5}else{Bm=6}if(Bm==5){var AZ=pB[((tm)>>2)];var AY=(AZ);var AX=uA[((th)>>2)];BW=AX;Bn=AY;var AV=BW;var AU=((AV+16)&4294967295);var AT=Bn;pB[((AU)>>2)]=AT}var AS=uA[((th)>>2)];var AR=BX;var AP=AN;var AO=aL(AS,AR,AP)}var AM=uA[((th)>>2)];var AL=(AM)==0;if(AL){Bm=8}else{Bm=9}if(Bm==8){BS=0}else{if(Bm==9){var AK=AI;var AH=(((AK))|0)!=0;if(AH){Bm=10}else{Bm=11}if(Bm==10){var i=uA[((th)>>2)];var e=uX(i)}var B5=uA[((th)>>2)];var B4=BX;var B3=AW;var B2=ff(B5,B4,B3);BS=B2}}var B1=BS;AJ=B1;var Bj=AJ;var B0=(((Bj)*2)&4294967295);Bu=B0;var BZ=BO;var BI=Bu;var BH=((BZ+BI)&4294967295);uA[((xH)>>2)]=BH;var BG=Bu;var BF=A9;var BE=(((BG))|0)>=(((BF))|0);if(!(BE)){Bm=14;break $bb$$bb2$2}BU=0}}while(0);var BD=BU;BR=BD;var BC=BR;A6=BC;var Bp=A6;return Bp;return null}function iz(Bp,AO){var A3;var A4;var i;var AU;var By;A4=Bp;i=AO;var Bo=i;var Bn=(((Bo))|0)==0;if(Bn){A3=1}else{A3=2}if(A3==1){i=60}uA[((uR)>>2)]=0;var Bm=A4;uA[((gQ)>>2)]=Bm;var Bl=uA[((gQ)>>2)];uA[((bW)>>2)]=Bl;var Bk=uA[((bW)>>2)];var Bj=((134217728/(((Bk))|0))|0);uA[((ra)>>2)]=Bj;var Bi=uA[((bW)>>2)];var Bg=(((Bi)*64)&4294967295);var Be=A4;var Bc=(((((Bg))|0)/(((Be))|0))|0);uA[((b)>>2)]=Bc;uA[((bG)>>2)]=0;uA[((a7)>>2)]=0;uA[((b3)>>2)]=2147483647;uA[((((tK+52)&4294967295))>>2)]=32;uA[((((tK+60)&4294967295))>>2)]=100;AU=0;$bb2$5:while(1){var A0=AU;var AY=AU;var AW=((jk+AY*4)&4294967295);var AT=uA[((AW)>>2)];var AR=((aI+A0*4)&4294967295);uA[((AR)>>2)]=AT;var AP=AU;var AM=(((AP)+1)&4294967295);AU=AM;var AK=(((AM))|0)<=14;if(AK){A3=3;continue $bb2$5}else{A3=4;break $bb2$5}}var AI=uA[((bW)>>2)];var AH=i;var e=(((AH)*(AI))&4294967295);var Bz=(((((e))|0)/12800)|0);uA[((id)>>2)]=Bz;var Bx=uA[((id)>>2)];var Bw=(((Bx))|0)>128;if(Bw){A3=5}else{A3=6}if(A3==5){uA[((id)>>2)]=128}var Bv=uA[((id)>>2)];var Bu=(((((Bv))|0)/2)|0);uA[((od)>>2)]=Bu;var Bt=uA[((bW)>>2)];var Bs=(((Bt))|0)!=22050;if(Bs){A3=7}else{A3=9}$bb7$$bb10$11:do{if(A3==7){AU=0;var Br=uA[((id)>>2)];var Bq=AU;var Bh=(((Bq))|0)<(((Br))|0);if(!(Bh)){A3=9;break $bb7$$bb10$11}while(1){var Bf=AU;var Bd=(((Bf))|0);var Bb=(Bd)*6.283185307;var Ba=uA[((id)>>2)];var A9=(((Ba))|0);var A8=(Bb)/(A9);var A7=h0(A8);var A6=1-(A7);var A5=(A6)*127;By=A5;var A2=AU;var A1=By;var AZ=(((A1))|0);var AX=(((AZ))&255);var AV=((fr+A2)&4294967295);la[((AV)>>0)]=AX;var AS=AU;var AQ=(((AS)+1)&4294967295);AU=AQ;var AN=uA[((id)>>2)];var AL=AU;var AJ=(((AL))|0)<(((AN))|0);if(AJ){A3=8;continue}else{A3=9;break $bb7$$bb10$11}}}}while(0);uA[((kV)>>2)]=((ke)&4294967295);aw();return;return}function iy(){var AH;uA[((Ap)>>2)]=0;uA[((t3)>>2)]=0;var i=uA[((th)>>2)];var e=(i)!=0;if(e){AH=1}else{AH=2}if(AH==1){var AL=uA[((th)>>2)];rQ(AL);uA[((th)>>2)]=0}var AK=la[((((jg)&4294967295))>>0)];var AJ=iB((AK),8,0)!=0;if(AJ){AH=3}else{AH=4}if(AH==3){var AI=eY()}return;return}function tr(Bf,PQ,QF){var Cd=vp;vp+=24152;n1(Cd,0,24152);var Bd;var Ny=null;var Ep;var D0;var Hx;var IU;var Em;var PX;var Gi;var Ek;var Gb;var G4;var Fn;var Nm;var QE;var IA;var Nx;var JP;var B8;var Oe;var B9;var Ca;var Cb;var Cc;var Cy;var Js;var EK;var Dz;var MN;var KN;var CE;var MM;var E7;var N3;var CU;var FO;var Oq;var M9;var Dg;var QG;var GK;var Q1;var Nv;var OU=Cd;var C5;var AI;var DM;var L7=Cd+152;var AM;var Jf;var PY;var Dx;var Nw;var Bt;var Fo;var Ds;var Dm;IA=Bf;Nx=PQ;JP=QF;EK=0;MN=0;CU=0;FO=0;Oq=0;Nv=0;DM=0;AM=((o6)&4294967295);KN=((eW)&4294967295);var Ej=uA[((mT)>>2)];var Ei=(((Ej)-1)&4294967295);var Eh=AM;var Eg=((Eh+8*Ei)&4294967295);var Ef=((Eg+6)&4294967295);var Ed=xV[((Ef)>>1)];var Eb=oD((Ed),16,0);GK=Eb;M9=0;var D9=uA[((mT)>>2)];var D7=(((D9)-3)&4294967295);Dz=D7;Ny=-1;$bb4$2:while(1){var HG=Ny==4?HH:(D7);var HF=(((HG))|0)>=0;if(!(HF)){Bd=6;break $bb4$2}var Is=AM;var Ir=Dz;var Iq=((Is+8*Ir)&4294967295);var Ip=((Iq+1)&4294967295);var Io=ll[((Ip)>>0)];var In=oD((Io),8,0);var Im=(In)&127;var Il=M9;var Ik=(((Im))|0)>(((Il))|0);if(Ik){Bd=2}else{Bd=3}if(Bd==2){var Ij=AM;var H8=Dz;var H7=((Ij+8*H8)&4294967295);var H6=((H7+1)&4294967295);var H5=ll[((H6)>>0)];var H4=oD((H5),8,0);var H3=(H4)&127;M9=H3}var H2=AM;var H1=Dz;var H0=((H2+8*H1)&4294967295);var HY=((H0+6)&4294967295);var HK=uW[((HY)>>1)];var HJ=iB((HK),16,0)!=0;if(HJ){Bd=6;break $bb4$2}var HI=Dz;var HH=(((HI)-1)&4294967295);Dz=HH;Ny=4;Bd=5;continue $bb4$2}var HE=M9;var HD=(((HE))|0)<=3;if(HD){Bd=10}else{Bd=11}$bb10$$bb11$10:do{if(Bd==10){while(1){var GH=Dz;var GG=(((GH)-1)&4294967295);Dz=GG;var GF=Dz;var GE=(((GF))|0)>=0;var GD=oD((GE),1,0);Js=GD;var PB=iB((GD),8,0)!=0;if(!(PB)){Bd=11;break $bb10$$bb11$10}var HC=AM;var HB=Dz;var Hf=((HC+8*HB)&4294967295);var He=((Hf+4)&4294967295);var Hd=xV[((He)>>1)];var Hc=oD((Hd),16,0);var Hb=(Hc)&64;var Ha=(((Hb))|0)!=0;var G9=AM;var G8=Dz;var G7=((G9+8*G8)&4294967295);var G6=((G7+1)&4294967295);if(Ha){Bd=8;break}var GJ=ll[((G6)>>0)];var GI=oD((GJ),8,0)>3;if(GI){Bd=11;break $bb10$$bb11$10}else{Bd=10;continue}}la[((G6)>>0)]=4}}while(0);var GC=IA;var GB=((GC)&4294967295);var GA=((GB+24)&4294967295);var Ge=((GA+16)&4294967295);var Gd=uA[((Ge)>>2)];QG=Gd;var Gc=QG;var Ga=(((Gc))|0)!=0;var F9=oD((Ga),1,0);Cy=F9;var e=iB((F9),8,0)!=0;if(e){Bd=12}else{Bd=51}$bb13$$bb57$17:do{if(Bd==12){PY=0;Dg=0;var F8=uA[((mT)>>2)];var F7=(((F8)-1)&4294967295);Dz=F7;var F6=(((F7))|0)>=0;if(!(F6)){Bd=51;break $bb13$$bb57$17}$bb14$19:while(1){var F5=AM;var F4=Dz;var FI=((F5+8*F4)&4294967295);var FH=((FI)&4294967295);var FG=ll[((FH)>>0)];var FF=oD((FG),8,0);var FE=((nm+FF*4)&4294967295);var FD=xk[((FE)>>2)];CE=FD;var FC=(FD)==0;if(FC){Bd=50}else{Bd=14}$bb55$$bb15$21:do{if(Bd==14){var FB=CE;var FA=((FB+10)&4294967295);var Fz=la[((FA)>>0)];var Fm=iB((Fz),8,0)==21;var Fl=Oq;if(Fm){Ny=14;Bd=15}else{Ny=14;Bd=16}if(Bd==15){var Fk=(Fl)^1;Oq=Fk;Ny=15}var Fj=Ny==15?Fk:(Fl);var Fi=(((Fj))|0)!=0;if(Fi){Bd=50;break $bb55$$bb15$21}var Fh=CE;var Fg=((Fh+11)&4294967295);var Ff=ll[((Fg)>>0)];var Fe=oD((Ff),8,0);Jf=Fe;var Fd=QG;var E1=(Fd)&2;var E0=(((E1))|0)!=0;if(E0){Bd=18}else{Bd=24}$bb19$$bb25$27:do{if(Bd==18){var EZ=CE;var EY=((EZ)&4294967295);var EX=uA[((EY)>>2)];var EW=(((EX))|0)==118;if(EW){Bd=21}else{Bd=19}$bb22$$bb20$29:do{if(Bd==19){var EV=CE;var EU=((EV)&4294967295);var ET=uA[((EU)>>2)];var ES=(((ET))|0)==15222;if(ES){Bd=21;break $bb22$$bb20$29}var L3=CE;var L1=((L3)&4294967295);var LZ=uA[((L1)>>2)];var LX=(LZ)&255;var LV=(((LX))|0)==82;if(!(LV)){Bd=24;break $bb19$$bb25$27}}}while(0);var LT=PY;var LR=(((LT))|0)==1;if(LR){Bd=22}else{Bd=23}if(Bd==22){Dg=0}else{if(Bd==23){Jf=3}}}}while(0);var LP=Jf;var LN=(((LP))|0)==4;var LM=Jf;var Lz=(((LM))|0)==6;var M8=(LN)|(Lz);if(M8){Bd=25}else{Bd=32}$bb27$$bb34$37:do{if(Bd==25){var Lx=Dg;var Lv=(((Lx))|0)!=0;if(Lv){Ny=25;Bd=29}else{Ny=25;Bd=26}if(Bd==26){var Lt=QG;var Lr=(Lt)&15;var Lp=(((Lr))|0)==0;if(Lp){Bd=28}else{Bd=27}if(Bd==28){var Bn=Dg;Ny=28}else{if(Bd==27){Dg=1;Bd=44;break $bb27$$bb34$37}}}var Ln=Ny==28?Bn:(Lx);var Ll=(((Ln))|0)==2;if(!(Ll)){Bd=44;break $bb27$$bb34$37}var Lj=CE;var Li=((Lj+13)&4294967295);var K5=la[((Li)>>0)];var K3=iB((K5),8,0)!=0;if(!(K3)){Bd=44;break $bb27$$bb34$37}var K1=AM;var KZ=Dz;var KX=((K1+8*KZ)&4294967295);var KV=CE;var KT=((KV+13)&4294967295);var KR=la[((KT)>>0)];var KP=((KX)&4294967295);la[((KP)>>0)]=KR}else{if(Bd==32){var KO=Jf;var KA=(((KO))|0)==5;var Ky=Jf;var Kw=(((Ky))|0)==7;var HZ=(KA)|(Kw);if(HZ){Bd=33}else{Bd=40}if(Bd==33){var Ku=Dg;var Ks=(((Ku))|0)!=0;if(Ks){Ny=33;Bd=37}else{Ny=33;Bd=34}if(Bd==34){var Kr=QG;var Kp=(Kr)&15;var Kn=(((Kp))|0)==0;if(Kn){Bd=36}else{Bd=35}if(Bd==36){var Bl=Dg;Ny=36}else{if(Bd==35){Dg=2;Bd=44;break $bb27$$bb34$37}}}var Kl=Ny==36?Bl:(Ku);var Kj=(((Kl))|0)==1;if(!(Kj)){Bd=44;break $bb27$$bb34$37}var J9=CE;var J8=((J9+13)&4294967295);var J7=la[((J8)>>0)];var J6=iB((J7),8,0)!=0;if(!(J6)){Bd=44;break $bb27$$bb34$37}var J5=AM;var J4=Dz;var J3=((J5+8*J4)&4294967295);var J2=CE;var J1=((J2+13)&4294967295);var J0=la[((J1)>>0)];var JZ=((J3)&4294967295);la[((JZ)>>0)]=J0}else{if(Bd==40){var JY=QG;var JX=(JY)&8;var JW=(((JX))|0)!=0;if(JW){Bd=41}else{Bd=43}if(Bd==41){var JV=Jf;var JU=(((JV))|0)==0;var JT=Jf;var JS=(((JT))|0)==2;var HX=(JU)|(JS);if(!(HX)){Bd=44;break $bb27$$bb34$37}Dg=0}else{if(Bd==43){Dg=0}}}}}}}while(0);PY=0;var JR=AM;var JQ=Dz;var JO=((JR+8*JQ)&4294967295);var JN=((JO+6)&4294967295);var JM=uW[((JN)>>1)];var JL=iB((JM),16,0)!=0;if(!(JL)){Bd=50;break $bb55$$bb15$21}var JK=QG;var JJ=(JK)&4;var JI=(((JJ))|0)!=0;if(JI){Bd=46}else{Bd=47}if(Bd==46){Dg=0}var JH=QG;var JG=(JH)&16;var JF=(((JG))|0)!=0;if(!(JF)){Bd=50;break $bb55$$bb15$21}var Ju=Dg;var Jt=(((Ju))|0)==0;if(!(Jt)){Bd=50;break $bb55$$bb15$21}Dg=1;PY=1}}while(0);var Jr=Dz;var Jq=(((Jr)-1)&4294967295);Dz=Jq;var Jp=(((Jq))|0)>=0;if(Jp){Bd=13;continue $bb14$19}else{Bd=51;break $bb13$$bb57$17}}}}while(0);var Jo=IA;var Jn=((L7)&4294967295);D0=Jo;Hx=Jn;Gb=0;Fn=0;QE=0;PX=0;$bb24_i$72:while(1){var Op=uA[((mT)>>2)];var Hz=PX;var Hw=(((Hz))|0)>=(((Op))|0);if(Hw){Bd=77;break $bb24_i$72}var Hu=Gb;var Hs=(((Hu))|0)<=999;if(!(Hs)){Bd=77;break $bb24_i$72}var Jm=PX;var Jl=((o6+Jm*8)&4294967295);Nm=Jl;var Jk=Nm;var I8=((Jk)&4294967295);var I7=la[((I8)>>0)];var I6=iB((I7),8,0)==21;var I5=Fn;if(I6){Ny=52;Bd=53}else{Ny=52;Bd=54}if(Bd==53){var I4=(I5)^1;Fn=I4;Ny=53}var I3=Ny==53?I4:(I5);var I2=(((I3))|0)==0;if(I2){Bd=55}else{Bd=73}$bb3_i$$bb22_i$79:do{if(Bd==55){var I1=uA[((mT)>>2)];var I0=(((I1)-1)&4294967295);var IZ=PX;var IN=(((I0))|0)>(((IZ))|0);if(IN){Bd=56}else{Bd=57}if(Bd==56){var IM=PX;var IL=(((IM)+1)&4294967295);var IK=((o6+IL*8)&4294967295);var IJ=((IK)&4294967295);var II=ll[((IJ)>>0)];var IH=oD((II),8,0);var IG=((nm+IH*4)&4294967295);var IF=uA[((IG)>>2)];QE=IF}G4=0;var IE=Nm;var A1=((IE+8)&4294967295);var AZ=((A1+6)&4294967295);var AX=uW[((AZ)>>1)];var AV=iB((AX),16,0)!=0;if(AV){Bd=60}else{Bd=58}$bb8_i$$bb6_i$84:do{if(Bd==58){var AT=QE;var AR=(AT)==0;if(AR){Bd=61;break $bb8_i$$bb6_i$84}var AP=QE;var AN=((AP+11)&4294967295);var AJ=la[((AN)>>0)];var i=iB((AJ),8,0)==0;if(i){Bd=60;break $bb8_i$$bb6_i$84}else{Bd=61;break $bb8_i$$bb6_i$84}}}while(0);if(Bd==60){G4=1}Gi=0;$bb20_i$90:while(1){var Pz=uA[((vm)>>2)];var Py=Gi;var Px=(((Py))|0)<(((Pz))|0);if(!(Px)){Bd=72;break $bb20_i$90}var QZ=Nm;var QX=((QZ)&4294967295);var QV=la[((QX)>>0)];var QT=Gi;var QR=((dW+QT*3)&4294967295);var QP=((QR)&4294967295);var QN=la[((QP)>>0)];var QL=iB((QV),8,0)==iB((QN),8,0);if(QL){Bd=63}else{Bd=70}$bb11_i$$bb19_i$93:do{if(Bd==63){var QJ=Gi;var QH=((dW+QJ*3)&4294967295);var QC=((QH+2)&4294967295);var QA=la[((QC)>>0)];var Qy=iB((QA),8,0);Ek=Qy;var Qw=Ek;var Qu=(Qw)&1;var Qs=(((Qu))&255);var Be=iB((Qs),8,0)!=0;if(Be){Bd=64}else{Bd=65}if(Bd==64){var Qp=G4;var Qn=(((Qp))|0)==0;if(Qn){Bd=70;break $bb11_i$$bb19_i$93}}var Ql=Ek;var Qj=(Ql)&2;var Qh=(((Qj))|0)!=0;if(!(Qh)){Bd=67;break $bb20_i$90}var Qf=Nm;var Qd=((Qf+1)&4294967295);var Qb=ll[((Qd)>>0)];var P9=oD((Qb),8,0);var P7=(P9)&7;var P5=(((P7))|0)>3;if(!(P5)){Bd=67;break $bb20_i$90}}}while(0);var PC=Gi;var PA=(((PC)+1)&4294967295);Gi=PA;Bd=71;continue $bb20_i$90}$bb21_i$$bb15_i$100:do{if(Bd==67){var P3=Gi;var P1=((dW+P3*3)&4294967295);var PZ=((P1+1)&4294967295);var PW=la[((PZ)>>0)];var PV=Nm;var PU=((PV)&4294967295);la[((PU)>>0)]=PW;var PT=Nm;var PS=((PT+1)&4294967295);var PR=ll[((PS)>>0)];var PP=oD((PR),8,0)>1;if(!(PP)){Bd=72;break $bb21_i$$bb15_i$100}var PO=Nm;var PN=((PO)&4294967295);var PM=ll[((PN)>>0)];var PL=oD((PM),8,0);var PK=((nm+PL*4)&4294967295);var PJ=uA[((PK)>>2)];var PI=((PJ+4)&4294967295);var PH=uA[((PI)>>2)];var PG=(PH)&2;var PF=(((PG))|0)!=0;if(!(PF)){Bd=72;break $bb21_i$$bb15_i$100}var PE=Nm;var PD=((PE+1)&4294967295);la[((PD)>>0)]=0}}while(0);var Pw=Nm;var Pv=((Pw)&4294967295);var Pu=la[((Pv)>>0)];var Pt=iB((Pu),8,0)==0;if(Pt){Bd=74;break $bb3_i$$bb22_i$79}else{Bd=73;break $bb3_i$$bb22_i$79}}}while(0);if(Bd==73){var Ps=Hx;var Pr=Gb;var Pg=((Ps+24*Pr)&4294967295);var Pf=Nm;var Pe=Pg;var Pd=Pf;ns(Pe,Pd,8,1,0);var Pc=Hx;var Pb=Gb;var Pa=((Pc+24*Pb)&4294967295);var O9=Nm;var O8=((O9)&4294967295);var O7=ll[((O8)>>0)];var OT=oD((O7),8,0);var OS=((nm+OT*4)&4294967295);var OR=uA[((OS)>>2)];var OQ=((Pa+8)&4294967295);uA[((OQ)>>2)]=OR;var OP=Hx;var OO=Gb;var ON=((OP+24*OO)&4294967295);var OM=Hx;var OL=Gb;var OK=((OM+24*OL)&4294967295);var Oz=((OK+8)&4294967295);var Oy=uA[((Oz)>>2)];var Ox=((Oy+11)&4294967295);var Ow=la[((Ox)>>0)];var Ov=((ON+15)&4294967295);la[((Ov)>>0)]=Ow;var Ou=Gb;var Ot=(((Ou)+1)&4294967295);Gb=Ot}var Os=PX;var Or=(((Os)+1)&4294967295);PX=Or;Bd=75;continue $bb24_i$72}var Hq=Gb;Em=Hq;var Ho=Em;IU=Ho;var L6=IU;var Hm=(((L6)-2)&4294967295);C5=Hm;Dz=0;$bb69$109:while(1){var Fa=Dz;var E9=C5;var E8=(((Fa))|0)>=(((E9))|0);if(E8){Bd=90;break $bb69$109}var E6=EK;var E5=(((E6))|0)<=996;if(!(E5)){Bd=90;break $bb69$109}var Hk=Dz;var Hi=((L7+Hk*24)&4294967295);var Hg=((Hi+6)&4294967295);var G3=uW[((Hg)>>1)];var G1=iB((G3),16,0)!=0;if(G1){Bd=79}else{Bd=87}if(Bd==79){FO=0;var GZ=Dz;Nw=GZ;$bb63$115:while(1){var FY=Nw;var FW=C5;var FU=(((FY))|0)<(((FW))|0);if(!(FU)){Bd=84;break $bb63$115}var GX=Nw;var GV=((L7+GX*24)&4294967295);var GT=((GV+1)&4294967295);var GR=ll[((GT)>>0)];var GP=oD((GR),8,0);var GN=FO;var GL=(((GP))|0)>(((GN))|0);if(GL){Bd=81}else{Bd=82}if(Bd==81){var Gy=Nw;var Gw=((L7+Gy*24)&4294967295);var Gu=((Gw+1)&4294967295);var Gs=ll[((Gu)>>0)];var Gq=oD((Gs),8,0);FO=Gq}var Go=Nw;var Gm=(((Go)+1)&4294967295);Nw=Gm;var Gk=Nw;var Gh=((L7+Gk*24)&4294967295);var Gf=((Gh+6)&4294967295);var F2=uW[((Gf)>>1)];var F0=iB((F2),16,0)!=0;if(F0){Bd=84;break $bb63$115}else{Bd=83;continue $bb63$115}}var FS=Dz;Dx=FS;var FQ=Dx;var FN=Nw;var FL=(((FQ))|0)<(((FN))|0);if(FL){Bd=85}else{Bd=86}$bb65$$bb67$122:do{if(Bd==85){while(1){var FJ=Dx;var Fy=FO;var Fx=(((Fy))&255);var Fw=((L7+FJ*24)&4294967295);var Fv=((Fw+2)&4294967295);la[((Fv)>>0)]=Fx;var Fu=Dx;var Ft=(((Fu)+1)&4294967295);Dx=Ft;var Fs=Dx;var Fr=Nw;var Fq=(((Fs))|0)<(((Fr))|0);if(Fq){Bd=85;continue}else{Bd=86;break $bb65$$bb67$122}}}}while(0);var Fp=Nw;Dz=Fp;Bd=88;continue $bb69$109}else{if(Bd==87){var Fc=Dz;var Fb=(((Fc)+1)&4294967295);Dz=Fb;Bd=88;continue $bb69$109}}}var E4=uA[((((nm+36)&4294967295))>>2)];CE=E4;var E3=((L7)&4294967295);var E2=((E3+8)&4294967295);var ER=CE;uA[((E2)>>2)]=ER;Oq=0;Dz=0;var EQ=((OU+4)&4294967295);var EP=((EQ+12)&4294967295);var EO=((OU+4)&4294967295);var EN=((EO+4)&4294967295);var EM=((OU+4)&4294967295);var EL=((EM+16)&4294967295);var EJ=((OU+4)&4294967295);var EI=((EJ+16)&4294967295);var EH=((OU+4)&4294967295);var Ew=((EH+40)&4294967295);$bb178$128:while(1){var CB=MN;var Cx=(((CB))|0)!=0;if(Cx){Ny=182;Bd=92}else{Ny=182;Bd=183}if(Bd==183){var Cw=Dz;var Cu=C5;var Cs=(((Cw))|0)>=(((Cu))|0);if(Cs){Bd=185;break $bb178$128}var Cq=EK;var Co=(((Cq))|0)<=996;if(!(Co)){Bd=185;break $bb178$128}var Bj=MN;Ny=91}var Ev=Ny==91?Bj:(CB);var Eu=CE;MM=Eu;var Et=Dz;var Es=((L7+Et*24)&4294967295);AI=Es;var Er=(((Ev))|0)!=0;var Eq=AI;var Eo=((Eq)&4294967295);var En=ll[((Eo)>>0)];var El=oD((En),8,0);var DZ=((nm+El*4)&4294967295);var DY=uA[((DZ)>>2)];if(Er){Bd=93}else{Bd=96}if(Bd==93){E7=DY;var DX=Dz;var DW=(((DX)-1)&4294967295);Dz=DW;var DV=Dz;var DU=((L7+DV*24)&4294967295);DM=DU;var DT=DM;AI=DT;var DS=Dz;var DR=(((DS))|0)>0;if(DR){Bd=94}else{Bd=95}if(Bd==94){var DQ=AI;var DE=((DQ)&4294967295);var DD=AI;var DC=((DD+-24)&4294967295);var DB=DC;var DA=DE;ns(DB,DA,24,1,0)}var Dy=AI;var Dw=((Dy)&4294967295);var Dv=Dw;ud(Dv,0,24,1,0);var Du=MN;var Dt=(((Du))&255);var NR=AI;var NP=((NR)&4294967295);la[((NP)>>0)]=Dt;var NN=MN;var NL=((nm+NN*4)&4294967295);var NJ=uA[((NL)>>2)];CE=NJ;var NH=AI;var NF=((NH+8)&4294967295);var ND=CE;uA[((NF)>>2)]=ND;MN=0}else{if(Bd==96){CE=DY;var NB=AI;var Nz=((NB)&4294967295);var Nt=((Nz+8)&4294967295);var Nr=CE;uA[((Nt)>>2)]=Nr;var Np=AI;var Nn=((Np)&4294967295);var Nk=la[((Nn)>>0)];var Ni=iB((Nk),8,0)==21;if(Ni){Bd=97}else{Bd=98}if(Bd==97){var Ng=AI;var Ne=((Ng+3)&4294967295);var Nc=ll[((Ne)>>0)];var Na=oD((Nc),8,0);Ep=Na;uA[((rW)>>2)]=0;var M6=Ep;m1(M6,0);var M4=uA[((rW)>>2)];var M2=(((M4)+1)&4294967295);uA[((rW)>>2)]=M2;var M0=Ep;uA[((mp)>>2)]=M0;var MY=Oq;var MW=(MY)^32;Oq=MW}var MU=AI;var MS=((MU+24)&4294967295);var MQ=((MS)&4294967295);var MO=ll[((MQ)>>0)];var MK=oD((MO),8,0);var MI=((nm+MK*4)&4294967295);var MG=uA[((MI)>>2)];E7=MG;var ME=AI;var MC=((ME+24)&4294967295);var MA=((MC+8)&4294967295);var My=E7;uA[((MA)>>2)]=My}}var Mw=CE;var Mu=(Mw)==0;if(Mu){Bd=181}else{Bd=100}$bb177$$bb80$145:do{if(Bd==100){var Ms=IA;var Mr=AI;lw(Ms,256,Mr,OU);var Mq=uA[((EP)>>2)];Q1=Mq;var Mp=Q1;var Mo=(((Mp))|0)>0;var Mn=oD((Mo),1,0);Cc=Mn;var Mm=Cc;var O6=iB((Mm),8,0)!=0;if(O6){Bd=101}else{Bd=106}if(Bd==101){var Ml=CE;Bt=Ml;var Mk=AI;var Mj=((Mk)&4294967295);var Mi=ll[((Mj)>>0)];var Mh=oD((Mi),8,0);MN=Mh;var Mg=Q1;var Mf=((nm+Mg*4)&4294967295);var Me=uA[((Mf)>>2)];CE=Me;var Md=AI;var Mc=((Md+8)&4294967295);var Mb=CE;uA[((Mc)>>2)]=Mb;var Ma=Q1;var L9=(((Ma))&255);var L8=AI;var L5=((L8)&4294967295);la[((L5)>>0)]=L9;var L4=CE;var L2=((L4+11)&4294967295);var L0=la[((L2)>>0)];var LY=iB((L0),8,0)==2;var LW=AI;var LU=((LW+4)&4294967295);var LS=uW[((LU)>>1)];if(LY){Bd=102}else{Bd=104}$bb83$$bb86$149:do{if(Bd==102){var LQ=(LS)|4;var LO=AI;var LB=((LO+4)&4294967295);uW[((LB)>>1)]=LQ;var LA=Bt;var Ly=((LA+11)&4294967295);var Lw=la[((Ly)>>0)];var Lu=iB((Lw),8,0)!=2;if(!(Lu)){Bd=105;break $bb83$$bb86$149}var Ls=AI;var Lq=((Ls+1)&4294967295);la[((Lq)>>0)]=0}else{if(Bd==104){var Lo=(LS)&-5;var Lm=AI;var Lk=((Lm+4)&4294967295);uW[((Lk)>>1)]=Lo}}}while(0);var K7=IA;var K6=AI;lw(K7,256,K6,OU)}var K4=uA[((EN)>>2)];Q1=K4;var K2=Q1;var K0=(((K2))|0)>0;var KY=oD((K0),1,0);Cb=KY;var O1=iB((KY),8,0)!=0;if(O1){Bd=107}else{Bd=113}if(Bd==107){var KW=CE;Fo=KW;var KU=Q1;var KS=((nm+KU*4)&4294967295);var KQ=uA[((KS)>>2)];CE=KQ;var KC=AI;var KB=((KC+8)&4294967295);var Kz=CE;uA[((KB)>>2)]=Kz;var Kx=Q1;var Kv=(((Kx))&255);var Kt=AI;var Kq=((Kt)&4294967295);la[((Kq)>>0)]=Kv;var Ko=Q1;var Km=(((Ko))|0)==1;if(Km){Bd=181;break $bb177$$bb80$145}var Kk=CE;var CS=((Kk+11)&4294967295);var CQ=la[((CS)>>0)];var CO=iB((CQ),8,0)==2;var CM=AI;var CK=((CM+4)&4294967295);var CI=uW[((CK)>>1)];if(CO){Bd=109}else{Bd=111}$bb93$$bb96$158:do{if(Bd==109){var CG=(CI)|4;var CD=AI;var CA=((CD+4)&4294967295);uW[((CA)>>1)]=CG;var Cz=Fo;var Cv=((Cz+11)&4294967295);var Ct=la[((Cv)>>0)];var Cr=iB((Ct),8,0)!=2;if(!(Cr)){Bd=112;break $bb93$$bb96$158}var Cp=AI;var Cn=((Cp+1)&4294967295);la[((Cn)>>0)]=0}else{if(Bd==111){var Cm=(CI)&-5;var Ck=AI;var Ci=((Ck+4)&4294967295);uW[((Ci)>>1)]=Cm}}}while(0);var Cg=IA;var Ce=AI;lw(Cg,256,Ce,OU)}var B6=CE;var B4=((B6+11)&4294967295);var B2=la[((B4)>>0)];var B0=iB((B2),8,0)==2;if(B0){Bd=114}else{Bd=133}$bb99$$bb121$164:do{if(Bd==114){var BY=AI;var BW=((BY+1)&4294967295);var BU=ll[((BW)>>0)];var BS=oD((BU),8,0)<=1;if(BS){Bd=115}else{Bd=132}if(Bd==115){var BQ=CU;var BO=(((BQ)+1)&4294967295);CU=BO;var BM=IA;var BK=((BM)&4294967295);var BI=((BK+12)&4294967295);var BG=uA[((BI)>>2)];var BE=(BG)&8;var BC=(((BE))|0)!=0;if(BC){Bd=116}else{Bd=125}if(Bd==116){var BA=AI;var By=((BA+24)&4294967295);Ds=By;while(1){var A3=Ds;var A2=((A3+15)&4294967295);var A0=la[((A2)>>0)];var AY=iB((A0),8,0)!=0;if(!(AY)){Bd=133;break $bb99$$bb121$164}var Bw=Ds;var Bu=((Bw+15)&4294967295);var Bs=la[((Bu)>>0)];var Br=iB((Bs),8,0)==2;var Bq=Ds;if(Br){Bd=118;break}var A4=((Bq+24)&4294967295);Ds=A4;Bd=124;continue}var Bp=((Bq+1)&4294967295);var Bo=ll[((Bp)>>0)];var Bm=oD((Bo),8,0)<=1;if(!(Bm)){Bd=133;break $bb99$$bb121$164}var Bk=AI;var Bi=((Bk+2)&4294967295);var Bh=ll[((Bi)>>0)];var Bg=oD((Bh),8,0)<=3;if(Bg){Bd=120}else{Bd=121}if(Bd==120){var Bc=AI;var Bb=((Bc+1)&4294967295);la[((Bb)>>0)]=0}var Ba=Ds;var A9=((Ba+2)&4294967295);var A8=ll[((A9)>>0)];var A7=oD((A8),8,0)<=3;if(!(A7)){Bd=133;break $bb99$$bb121$164}var A6=Ds;var A5=((A6+1)&4294967295);la[((A5)>>0)]=0}else{if(Bd==125){var AW=CU;var AU=(((AW))|0)>1;if(!(AU)){Bd=133;break $bb99$$bb121$164}var AS=CU;var AQ=(AS)&1;var AO=(((AQ))|0)==0;if(!(AO)){Bd=133;break $bb99$$bb121$164}var AL=IA;var AH=((AL)&4294967295);var Q0=((AH+12)&4294967295);var QY=uA[((Q0)>>2)];var QW=(QY)&2;var QU=(((QW))|0)!=0;if(QU){Bd=130}else{Bd=128}$bb117$$bb115$183:do{if(Bd==128){var QS=FO;var QQ=(((QS))|0)<=3;if(QQ){Bd=131}else{Bd=129}if(Bd==129){var QO=AI;var QM=((QO+24)&4294967295);var QK=((QM+6)&4294967295);var QI=uW[((QK)>>1)];var QD=iB((QI),16,0)!=0;if(QD){Bd=130;break $bb117$$bb115$183}}var QB=AI;var Qz=((QB+1)&4294967295);la[((Qz)>>0)]=0;Bd=133;break $bb99$$bb121$164}}while(0);CU=1}}}else{if(Bd==132){CU=0}}}}while(0);var Qx=CE;var Qv=((Qx+11)&4294967295);var Qt=la[((Qv)>>0)];var Qr=iB((Qt),8,0)==2;if(Qr){Bd=134}else{Bd=135}if(Bd==134){Nv=0}var Qo=AI;var Qm=((Qo+24)&4294967295);var Qk=((Qm+4)&4294967295);var Qi=xV[((Qk)>>1)];var Qg=oD((Qi),16,0);var Qe=(Qg)&8;var Qc=(((Qe))|0)!=0;if(Qc){Bd=136}else{Bd=138}$bb124$$bb126$194:do{if(Bd==136){var Qa=E7;var P8=((Qa+11)&4294967295);var P6=ll[((P8)>>0)];var P4=oD((P6),8,0);var P2=qX(((be)&4294967295),P4);var P0=(P2)!=0;if(!(P0)){Bd=138;break $bb124$$bb126$194}var JE=E7;var JD=((JE+10)&4294967295);var JC=ll[((JD)>>0)];var JB=oD((JC),8,0);MN=JB;var JA=AI;var Jz=((JA+24)&4294967295);var Jy=AI;var Jx=((Jy+24)&4294967295);var Jw=((Jx+4)&4294967295);var Jv=uW[((Jw)>>1)];var Jj=(Jv)^8;var Ji=((Jz+4)&4294967295);uW[((Ji)>>1)]=Jj}}while(0);var Jh=AI;var Jg=((Jh+24)&4294967295);var Je=((Jg+6)&4294967295);var Jd=uW[((Je)>>1)];var Jc=iB((Jd),16,0)!=0;if(Jc){Bd=139}else{Bd=165}$bb127$$bb159$198:do{if(Bd==139){var Jb=IA;var Ja=((Jb)&4294967295);var I9=((Ja+4)&4294967295);var IY=uA[((I9)>>2)];var IX=(((IY))|0)!=0;if(IX){Bd=140}else{Bd=158}$bb128$$bb150$200:do{if(Bd==140){var IW=CE;var IV=((IW+11)&4294967295);var IT=la[((IV)>>0)];var IS=iB((IT),8,0)!=0;if(!(IS)){Bd=158;break $bb128$$bb150$200}var IR=CE;var IQ=((IR+11)&4294967295);var IP=la[((IQ)>>0)];var IO=iB((IP),8,0)!=2;if(IO){Bd=142}else{Bd=144}$bb130$$bb132$203:do{if(Bd==142){var ID=IA;var IC=((ID)&4294967295);var IB=((IC+4)&4294967295);var Iz=uA[((IB)>>2)];var Iy=(Iz)&512;var Ix=(((Iy))|0)!=0;if(!(Ix)){Bd=144;break $bb130$$bb132$203}MN=11}}while(0);var Iw=E7;var Iv=((Iw+11)&4294967295);var Iu=la[((Iv)>>0)];var It=iB((Iu),8,0)==2;if(!(It)){Bd=158;break $bb128$$bb150$200}var Ii=IA;var Ih=((Ii)&4294967295);var Ig=((Ih+4)&4294967295);var If=uA[((Ig)>>2)];var Ie=(If)&12;Dm=Ie;var Id=Dm;var Ic=(((Id))|0)!=0;var Ib=oD((Ic),1,0);Ca=Ib;var Ia=Ca;var AK=iB((Ia),8,0)!=0;if(AK){Bd=146}else{Bd=149}if(Bd==146){var H9=Dm;var HU=(((H9))|0)==12;if(HU){Bd=147}else{Bd=148}if(Bd==147){MN=11}else{if(Bd==148){MN=23}}}var HT=CE;var HS=((HT+11)&4294967295);var HR=la[((HS)>>0)];var HQ=iB((HR),8,0)!=2;if(HQ){Bd=151}else{Bd=150}$bb142$$bb139$214:do{if(Bd==150){var HP=IA;var HO=((HP)&4294967295);var HN=((HO+4)&4294967295);var HM=uA[((HN)>>2)];var HL=(HM)&3;Dm=HL;var HA=Dm;var Hy=(((HA))|0)==0;if(Hy){Bd=151;break $bb142$$bb139$214}Oe=1;B9=1;var Hv=Dm;var Ht=(((Hv))|0)==2;if(Ht){Bd=153}else{Bd=154}if(Bd==153){MN=10;Bd=155;break $bb142$$bb139$214}else{if(Bd==154){MN=23;Bd=155;break $bb142$$bb139$214}}}}while(0);if(Bd==151){Oe=0;B9=0}var Hr=AI;var Hp=((Hr+24)&4294967295);var Hn=((Hp+1)&4294967295);var Hl=ll[((Hn)>>0)];var Hj=oD((Hl),8,0)>3;if(!(Hj)){Bd=158;break $bb128$$bb150$200}var Hh=IA;var G5=((Hh)&4294967295);var G2=((G5+4)&4294967295);var G0=uA[((G2)>>2)];var GY=(G0)&256;var GW=(((GY))|0)!=0;if(!(GW)){Bd=158;break $bb128$$bb150$200}MN=10}}while(0);var GU=AI;var GS=DM;var GQ=(GU)!=(GS);if(!(GQ)){Bd=165;break $bb127$$bb159$198}var GO=IA;var GM=((GO)&4294967295);var Gz=((GM)&4294967295);var Gx=uA[((Gz)>>2)];var Gv=(Gx)&7;Dm=Gv;var Gt=Dm;var Gr=(((Gt))|0)!=0;var Gp=oD((Gr),1,0);B8=Gp;var Gn=B8;var Qq=iB((Gn),8,0)!=0;if(Qq){Bd=160}else{Bd=163}$bb153$$bb157$227:do{if(Bd==160){var Gl=Dm;var Gj=(((Gl))|0)>1;if(Gj){Bd=162}else{Bd=161}if(Bd==161){var Gg=MN;var F3=(((Gg))|0)!=10;var F1=MN;var FZ=(((F1))|0)!=11;var HW=(F3)&(FZ);if(!(HW)){Bd=163;break $bb153$$bb157$227}}var FX=Dm;var FV=((kn+FX)&4294967295);var FT=ll[((FV)>>0)];var FR=oD((FT),8,0);MN=FR}}while(0);var FP=uA[((xY)>>2)];var FM=(((FP))|0)>0;if(!(FM)){Bd=165;break $bb127$$bb159$198}MN=24}}while(0);var FK=AI;var Pq=((FK+48)&4294967295);var Pp=((Pq)&4294967295);var Po=ll[((Pp)>>0)];var Pn=oD((Po),8,0);var Pm=((nm+Pn*4)&4294967295);var Pl=uA[((Pm)>>2)];N3=Pl;var Pk=AI;var Pj=((Pk+48)&4294967295);var Pi=((Pj+8)&4294967295);var Ph=N3;uA[((Pi)>>2)]=Ph;var O5=MN;var O4=(((O5))|0)==0;if(O4){Bd=166}else{Bd=168}$bb160$$bb162$235:do{if(Bd==166){var O3=uA[((EL)>>2)];var O2=(((O3))|0)!=0;if(!(O2)){Bd=168;break $bb160$$bb162$235}var O0=uA[((EI)>>2)];MN=O0}}while(0);var OZ=KN;var OY=EK;var OX=((OZ+24*OY)&4294967295);var OW=((OX+8)&4294967295);var OV=CE;uA[((OW)>>2)]=OV;var OJ=KN;var OI=EK;var OH=((OJ+24*OI)&4294967295);var OG=CE;var OF=((OG+11)&4294967295);var OE=la[((OF)>>0)];var OD=((OH+15)&4294967295);la[((OD)>>0)]=OE;var OC=KN;var OB=EK;var OA=((OC+24*OB)&4294967295);var Oo=((OA+14)&4294967295);la[((Oo)>>0)]=0;var On=KN;var Om=EK;var Ol=((On+24*Om)&4294967295);var Ok=AI;var Oj=((Ok+4)&4294967295);var Oi=uW[((Oj)>>1)];var Oh=Oq;var Og=(((Oh))&65535);var Of=(Og)|(Oi);var Od=((Ol+4)&4294967295);uW[((Od)>>1)]=Of;var Oc=KN;var Ob=EK;var Oa=((Oc+24*Ob)&4294967295);var N9=AI;var N8=((N9+1)&4294967295);var N7=la[((N8)>>0)];var N6=(N7)&15;var N5=((Oa+1)&4294967295);la[((N5)>>0)]=N6;var N4=KN;var N2=EK;var N1=((N4+24*N2)&4294967295);var N0=AI;var NZ=((N0+2)&4294967295);var NY=la[((NZ)>>0)];var NX=((N1+2)&4294967295);la[((NX)>>0)]=NY;var NW=KN;var NV=EK;var NU=((NW+24*NV)&4294967295);var NT=AI;var NS=((NT+3)&4294967295);var NQ=la[((NS)>>0)];var NO=((NU+3)&4294967295);la[((NO)>>0)]=NQ;var NM=KN;var NK=EK;var NI=((NM+24*NK)&4294967295);var NG=((NI+6)&4294967295);uW[((NG)>>1)]=0;var NE=KN;var NC=EK;var NA=((NE+24*NC)&4294967295);var Nu=CE;var Ns=((Nu+10)&4294967295);var Nq=la[((Ns)>>0)];var No=((NA)&4294967295);la[((No)>>0)]=Nq;var Nl=AI;var Nj=((Nl+6)&4294967295);var Nh=uW[((Nj)>>1)];var Nf=iB((Nh),16,0)!=0;var Nd=KN;var Nb=EK;var M7=((Nd+24*Nb)&4294967295);if(Nf){Bd=169}else{Bd=171}$bb163$$bb166$239:do{if(Bd==169){var M5=AI;var M3=((M5+6)&4294967295);var M1=uW[((M3)>>1)];var MZ=((M7+6)&4294967295);uW[((MZ)>>1)]=M1;var MX=KN;var MV=EK;var MT=((MX+24*MV)&4294967295);var MR=((MT+19)&4294967295);la[((MR)>>0)]=1;var MP=JP;var ML=(((MP))|0)!=0;if(!(ML)){Bd=172;break $bb163$$bb166$239}var MJ=KN;var MH=EK;var MF=((MJ+24*MH)&4294967295);var MD=((MF+19)&4294967295);la[((MD)>>0)]=5;JP=0}else{if(Bd==171){var MB=((M7+19)&4294967295);la[((MB)>>0)]=0}}}while(0);var Mz=KN;var Mx=EK;var Mv=((Mz+24*Mx)&4294967295);var Mt=uA[((Ew)>>2)];var EG=(((Mt)*2)&4294967295);var EF=(((EG))&65535);var EE=((Mv+12)&4294967295);uW[((EE)>>1)]=EF;var ED=CE;var EC=((ED+10)&4294967295);var EB=la[((EC)>>0)];var EA=iB((EB),8,0)==24;var Ez=uA[((xY)>>2)];var Ey=(((Ez))|0)>0;var HV=(EA)&(Ey);if(HV){Bd=173}else{Bd=174}if(Bd==173){var Ex=KN;var Ee=EK;var Ec=((Ex+24*Ee)&4294967295);var Ea=uA[((((nm+40)&4294967295))>>2)];var D8=((Ec+8)&4294967295);uA[((D8)>>2)]=Ea;var D6=KN;var D5=EK;var D4=((D6+24*D5)&4294967295);var D3=uA[((xY)>>2)];var D2=(((D3)*14)&4294967295);var D1=(((D2))&65535);var DP=((D4+12)&4294967295);uW[((DP)>>1)]=D1}var DO=CE;var DN=((DO+11)&4294967295);var DL=la[((DN)>>0)];var DK=iB((DL),8,0)==2;if(DK){Bd=179}else{Bd=175}$bb175$$bb171$247:do{if(Bd==175){var DJ=CE;var DI=((DJ+11)&4294967295);var DH=la[((DI)>>0)];var DG=iB((DH),8,0)==3;if(DG){Bd=179;break $bb175$$bb171$247}var DF=CE;var Dr=((DF+11)&4294967295);var Dq=la[((Dr)>>0)];var Dp=iB((Dq),8,0)==8;if(Dp){Bd=179;break $bb175$$bb171$247}var Do=CE;var Dn=((Do+11)&4294967295);var Dl=la[((Dn)>>0)];var Dk=iB((Dl),8,0)==5;if(Dk){Bd=179;break $bb175$$bb171$247}var Dj=CE;var Di=((Dj+11)&4294967295);var Dh=la[((Di)>>0)];var Df=iB((Dh),8,0)==7;if(Df){Bd=179;break $bb175$$bb171$247}else{Bd=180;break $bb175$$bb171$247}}}while(0);if(Bd==179){var De=KN;var Dd=EK;var Dc=((De+24*Dd)&4294967295);var Db=((Dc+12)&4294967295);uW[((Db)>>1)]=128;var Da=KN;var C9=EK;var C8=((Da+24*C9)&4294967295);var C7=((C8+14)&4294967295);la[((C7)>>0)]=0}var C6=KN;var C4=EK;var C3=((C6+24*C4)&4294967295);var C2=((C3+16)&4294967295);la[((C2)>>0)]=0;var C1=KN;var C0=EK;var CZ=((C1+24*C0)&4294967295);var CY=((CZ+18)&4294967295);la[((CY)>>0)]=20;var CX=KN;var CW=EK;var CV=((CX+24*CW)&4294967295);var CT=((CV+20)&4294967295);la[((CT)>>0)]=-1;var CR=KN;var CP=EK;var CN=((CR+24*CP)&4294967295);var CL=((CN+21)&4294967295);la[((CL)>>0)]=-1;var CJ=EK;var CH=(((CJ)+1)&4294967295);EK=CH}}while(0);var CF=Dz;var CC=(((CF)+1)&4294967295);Dz=CC;Bd=182;continue $bb178$128}var Cl=KN;var Cj=EK;var Ch=((Cl+24*Cj)&4294967295);var Cf=((Ch+19)&4294967295);la[((Cf)>>0)]=2;var B7=KN;var B5=EK;var B3=((B7+24*B5)&4294967295);var B1=((B3)&4294967295);la[((B1)>>0)]=9;var BZ=KN;var BX=EK;var BV=((BZ+24*BX)&4294967295);var BT=((BV+15)&4294967295);la[((BT)>>0)]=0;var BR=KN;var BP=EK;var BN=((BR+24*BP)&4294967295);var BL=Nx;var BJ=(((BL))&65535);var BH=((BN+12)&4294967295);uW[((BH)>>1)]=BJ;var BF=KN;var BD=EK;var BB=((BF+24*BD)&4294967295);var Bz=GK;var Bx=(((Bz))&65535);var Bv=((BB+6)&4294967295);uW[((Bv)>>1)]=Bx;var LL=KN;var LK=EK;var LJ=((LL+24*LK)&4294967295);var LI=((LJ+4)&4294967295);uW[((LI)>>1)]=0;var LH=KN;var LG=EK;var LF=((LH+24*LG)&4294967295);var LE=uA[((((nm+36)&4294967295))>>2)];var LD=((LF+8)&4294967295);uA[((LD)>>2)]=LE;var LC=EK;var Lh=(((LC)+1)&4294967295);EK=Lh;var Lg=KN;var Lf=EK;var Le=((Lg+24*Lf)&4294967295);var Ld=((Le)&4294967295);la[((Ld)>>0)]=9;var Lc=KN;var Lb=EK;var La=((Lc+24*Lb)&4294967295);var K9=((La+15)&4294967295);la[((K9)>>0)]=0;var K8=KN;var KM=EK;var KL=((K8+24*KM)&4294967295);var KK=((KL+12)&4294967295);uW[((KK)>>1)]=0;var KJ=KN;var KI=EK;var KH=((KJ+24*KI)&4294967295);var KG=((KH+6)&4294967295);uW[((KG)>>1)]=0;var KF=KN;var KE=EK;var KD=((KF+24*KE)&4294967295);var Ki=((KD+4)&4294967295);uW[((Ki)>>1)]=0;var Kh=KN;var Kg=EK;var Kf=((Kh+24*Kg)&4294967295);var Ke=uA[((((nm+40)&4294967295))>>2)];var Kd=((Kf+8)&4294967295);uA[((Kd)>>2)]=Ke;var Kc=EK;var Kb=(((Kc)+1)&4294967295);EK=Kb;var Ka=EK;uA[((xn)>>2)]=Ka;vp=Cd;return;return}function vc(Bj){var Bi;var A6=null;var Bz;var BN;var AI;var A5;var AN;var Bw;var Bh;Bw=Bj;var BO=Bw;var BM=(((BO))|0)==2;if(BM){A6=-1;Bi=1}else{A6=-1;Bi=2}if(Bi==1){var BL=uA[((((tu+8)&4294967295))>>2)];var BK=(((BL)*950)&4294967295);var BJ=(((((BK))|0)/10000)|0);uA[((((tu+12)&4294967295))>>2)]=BJ;var BI=uA[((((tu+8)&4294967295))>>2)];var BH=(((BI)*630)&4294967295);var BG=(((((BH))|0)/10000)|0);uA[((((tu+16)&4294967295))>>2)]=BG;var BF=uA[((((tu+8)&4294967295))>>2)];var BE=(((BF))|0);var Bt=-3.1415927/(BE);pB[((((tu+72)&4294967295))>>2)]=Bt;var Bs=pB[((((tu+72)&4294967295))>>2)];var Br=(Bs)*-2;pB[((((tu+80)&4294967295))>>2)]=Br;var Bq=uA[((((tu+16)&4294967295))>>2)];var Bp=uA[((((tu+12)&4294967295))>>2)];Bz=Bp;BN=Bq;AI=((tu+188+1152)&4294967295);var Bo=pB[((((tu+72)&4294967295))>>2)];var Bn=BN;var Bm=(((Bn))|0);var Bl=(Bo)*(Bm);AN=Bl;var Bk=AN;var Bg=ql(Bk);A5=Bg;var Bf=A5;var Be=A5;var Bd=(Bf)*(Be);var Bc=0-(Bd);var Bb=AI;var Ba=((Bb+16)&4294967295);pB[((Ba)>>2)]=Bc;var A9=pB[((((tu+80)&4294967295))>>2)];var A8=Bz;var A7=(((A8))|0);var A4=(A9)*(A7);AN=A4;var A3=AN;var A2=h0(A3);var A1=A5;var A0=(A2)*(A1);var AZ=(A0)*2;var AY=AI;var AX=((AY+8)&4294967295);pB[((AX)>>2)]=AZ;var AW=AI;var AV=((AW+8)&4294967295);var AT=pB[((AV)>>2)];var AS=1-(AT);var AR=AI;var AQ=((AR+16)&4294967295);var AP=pB[((AQ)>>2)];var AO=(AS)-(AP);var AM=AI;var AL=((AM)&4294967295);pB[((AL)>>2)]=AO;var AU=Bw;A6=1}var AK=A6==1?AU:(BO);var AJ=(((AK))|0)>0;if(AJ){Bi=3}else{Bi=5}$bb2$$bb5$5:do{if(Bi==3){uA[((((tu+32)&4294967295))>>2)]=0;uA[((((tu+40)&4294967295))>>2)]=0;uA[((((tu+44)&4294967295))>>2)]=0;uA[((((tu+48)&4294967295))>>2)]=0;Bh=17;while(1){var AH=Bh;var i=((((tu+188)&4294967295)+AH*64)&4294967295);var e=((i+24)&4294967295);pB[((e)>>2)]=0;var BV=Bh;var BU=((((tu+188)&4294967295)+BV*64)&4294967295);var BT=((BU+32)&4294967295);pB[((BT)>>2)]=0;var BS=Bh;var BR=(((BS)+1)&4294967295);Bh=BR;var BQ=(((BR))|0)<=19;if(BQ){Bi=4;continue}else{Bi=5;break $bb2$$bb5$5}}}}while(0);Bh=0;while(1){var BP=Bh;var BD=((((tu+188)&4294967295)+BP*64)&4294967295);var BC=((BD+24)&4294967295);pB[((BC)>>2)]=0;var BB=Bh;var BA=((((tu+188)&4294967295)+BB*64)&4294967295);var By=((BA+32)&4294967295);pB[((By)>>2)]=0;var Bx=Bh;var Bv=(((Bx)+1)&4294967295);Bh=Bv;var Bu=(((Bv))|0)<=16;if(Bu){Bi=6;continue}else{Bi=7;break}}return;return}function l1(Bj,A3,Bt){var Bf;var AJ;var Be;var Bl;var Bg;var Bx;AJ=Bj;Be=A3;Bl=Bt;var BH=AJ;var BG=((0-(BH))&4294967295);AJ=BG;var BF=AJ;var BE=(((BF))|0)>=0;if(BE){Bf=1}else{Bf=2}if(Bf==1){AJ=-1}var BD=pB[((((tu+72)&4294967295))>>2)];var BC=Be;var BB=(((BC))|0);var BA=(BD)*(BB);Bx=BA;var Bz=Bx;var By=ql(Bz);Bg=By;var Bs=Bg;var Br=Bg;var Bq=(Bs)*(Br);var Bp=0-(Bq);var Bo=Bl;var Bn=((Bo+16)&4294967295);pB[((Bn)>>2)]=Bp;var Bm=pB[((((tu+80)&4294967295))>>2)];var Bk=AJ;var Bi=(((Bk))|0);var Bh=(Bm)*(Bi);Bx=Bh;var Bd=Bx;var Bc=h0(Bd);var Bb=Bg;var Ba=(Bc)*(Bb);var A9=(Ba)*2;var A8=Bl;var A7=((A8+8)&4294967295);pB[((A7)>>2)]=A9;var A6=Bl;var A5=((A6+8)&4294967295);var A4=pB[((A5)>>2)];var A2=1-(A4);var A1=Bl;var A0=((A1+16)&4294967295);var AZ=pB[((A0)>>2)];var AY=(A2)-(AZ);var AX=Bl;var AW=((AX)&4294967295);pB[((AW)>>2)]=AY;var AV=Bl;var AU=((AV)&4294967295);var AT=pB[((AU)>>2)];var AS=1/(AT);var AR=Bl;var AQ=((AR)&4294967295);pB[((AQ)>>2)]=AS;var AP=Bl;var AO=((AP+16)&4294967295);var AN=pB[((AO)>>2)];var AM=Bl;var AL=((AM)&4294967295);var AK=pB[((AL)>>2)];var AI=0-(AK);var AH=(AN)*(AI);var i=Bl;var e=((i+16)&4294967295);pB[((e)>>2)]=AH;var BO=Bl;var BN=((BO+8)&4294967295);var BM=pB[((BN)>>2)];var BL=Bl;var BK=((BL)&4294967295);var BJ=pB[((BK)>>2)];var BI=0-(BJ);var Bw=(BM)*(BI);var Bv=Bl;var Bu=((Bv+8)&4294967295);pB[((Bu)>>2)]=Bw;return;return}function aw(){var A1;var AJ;uA[((ks)>>2)]=0;uA[((((tu)&4294967295))>>2)]=1;uA[((((tu+8)&4294967295))>>2)]=22050;uA[((((tu+20)&4294967295))>>2)]=1;var AR=uA[((((tu+20)&4294967295))>>2)];var AP=((fC+AR*4)&4294967295);var AN=uA[((AP)>>2)];uA[((((tu+184)&4294967295))>>2)]=AN;uA[((((tu+172)&4294967295))>>2)]=((un)&4294967295);uA[((((tu+160)&4294967295))>>2)]=100;pB[((((tu+164)&4294967295))>>2)]=3;var AM=uA[((((tu+8)&4294967295))>>2)];var AL=(((AM)*10)&4294967295);var AK=(((((AL))|0)/1000)|0);uA[((((tu+28)&4294967295))>>2)]=AK;uA[((((tu+4)&4294967295))>>2)]=0;uA[((((tu+24)&4294967295))>>2)]=20;vc(2);AJ=0;while(1){var AI=AJ;var AH=AJ;var i=((mu+AH*2)&4294967295);var e=uW[((i)>>1)];var A3=iB((e),16,0);var A2=((((uu+8)&4294967295)+AI*4)&4294967295);uA[((A2)>>2)]=A3;var A0=AJ;var AZ=AJ;var AY=((aS+AZ*2)&4294967295);var AX=uW[((AY)>>1)];var AW=iB((AX),16,0);var AV=((((uu+48)&4294967295)+A0*4)&4294967295);uA[((AV)>>2)]=AW;var AU=AJ;var AT=AJ;var Bd=((z8+AT*2)&4294967295);var Bc=uW[((Bd)>>1)];var Bb=iB((Bc),16,0);var Ba=((((uu+88)&4294967295)+AU*4)&4294967295);uA[((Ba)>>2)]=Bb;var A9=AJ;var A8=AJ;var A7=((kl+A8*2)&4294967295);var A6=uW[((A7)>>1)];var A5=iB((A6),16,0);var A4=((((uu+128)&4294967295)+A9*4)&4294967295);uA[((A4)>>2)]=A5;var AS=AJ;var AQ=(((AS)+1)&4294967295);AJ=AQ;var AO=(((AQ))|0)<=9;if(AO){A1=1;continue}else{A1=2;break}}uA[((((uu+248)&4294967295))>>2)]=89;uA[((((uu)&4294967295))>>2)]=1000;uA[((((uu+4)&4294967295))>>2)]=59;uA[((((uu+168)&4294967295))>>2)]=0;uA[((((uu+172)&4294967295))>>2)]=40;uA[((((uu+176)&4294967295))>>2)]=0;uA[((((uu+180)&4294967295))>>2)]=0;uA[((((uu+184)&4294967295))>>2)]=50;uA[((((uu+188)&4294967295))>>2)]=0;uA[((((uu+192)&4294967295))>>2)]=0;uA[((((uu+196)&4294967295))>>2)]=0;uA[((((uu+200)&4294967295))>>2)]=62;return;return}function zY(CV,Da,B8,B7,Cv,Bp){var F9;var Fw=null;var BV;var Ct;var Dj;var Cx;var FY;var AQ;var CK;var Cw;var EH;var BA;var B6;BV=CV;Ct=Da;Dj=B8;Cx=B7;FY=Cv;AQ=Bp;var CJ=uA[((uR)>>2)];var CI=(CJ)!=0;if(CI){F9=1}else{F9=5}if(F9==1){var CH=uA[((uR)>>2)];var CG=((CH+112)&4294967295);var CF=((CG)&4294967295);var CE=uA[((CF)>>2)];var CD=(((CE))|0)>0;if(CD){F9=2}else{F9=4}$bb1$$bb3$4:do{if(F9==2){var CB=uA[((uR)>>2)];var CA=((CB+112)&4294967295);var Cz=((CA)&4294967295);var FX=uA[((Cz)>>2)];var FW=(((FX))|0)<=3;if(!(FW)){F9=4;break $bb1$$bb3$4}var FV=uA[((uR)>>2)];var FU=((FV+112)&4294967295);var FT=((FU)&4294967295);var FS=uA[((FT)>>2)];uA[((((tu+20)&4294967295))>>2)]=FS;var FR=uA[((((tu+20)&4294967295))>>2)];var FQ=((fC+FR*4)&4294967295);var FP=uA[((FQ)>>2)];uA[((((tu+184)&4294967295))>>2)]=FP}}while(0);var FO=uA[((uR)>>2)];var Fs=((FO+68)&4294967295);var Fr=uA[((Fs)>>2)];var Fq=(((((Fr))|0)/32)|0);uA[((((tu+24)&4294967295))>>2)]=Fq}uA[((cd)>>2)]=0;var Fp=AQ;var Fo=(Fp)&2;var Fn=(((Fo))|0)!=0;if(Fn){F9=6}else{F9=7}if(F9==6){uA[((cd)>>2)]=1}var Fm=AQ;var Fl=(Fm)&1;var Fk=(((Fl))&255);var Ga=iB((Fk),8,0)!=0;if(Ga){F9=8}else{F9=20}$bb7$$bb22$12:do{if(F9==8){uA[((cd)>>2)]=1;var Fj=uA[((Ap)>>2)];var EY=(((Fj)+1)&4294967295);EH=EY;Fw=8;$bb8$14:while(1){var EX=Fw==19?Dy:(EY);var EW=(((EX))|0)>159;if(EW){F9=10}else{F9=11}if(F9==10){EH=0}var EV=uA[((t3)>>2)];var EU=EH;var ET=(((EU))|0)==(((EV))|0);if(ET){F9=20;break $bb7$$bb22$12}var ES=EH;var ER=((v0+ES*16)&4294967295);var EQ=((ER)&4294967295);var EP=uA[((EQ)>>2)];BA=EP;var Et=BA;var Es=(((Et))|0)==1;if(Es){F9=13;break $bb8$14}var DD=BA;var DC=(((DD))|0)==6;var DB=BA;var DA=(((DB))|0)==5;var Cy=(DC)|(DA);if(Cy){F9=20;break $bb7$$bb22$12}var Dz=EH;var Dy=(((Dz)+1)&4294967295);EH=Dy;Fw=19;F9=9;continue $bb8$14}uA[((cd)>>2)]=0;var Er=EH;var Eq=((v0+Er*16)&4294967295);var Ep=((Eq+8)&4294967295);var Eo=uA[((Ep)>>2)];var En=(Eo);B6=En;CK=1;Fw=13;while(1){var DF=Fw==16?DQ:(1);var DE=(((DF))|0)<=5;if(!(DE)){F9=20;break $bb7$$bb22$12}var Em=CK;var El=B6;var Ek=((El+2)&4294967295);var DZ=((Ek+Em*2)&4294967295);var DY=uW[((DZ)>>1)];var DX=CK;var DW=Cx;var DV=((DW+2)&4294967295);var DU=((DV+DX*2)&4294967295);var DT=uW[((DU)>>1)];var DS=iB((DY),16,0)!=iB((DT),16,0);if(DS){F9=15;break}var DR=CK;var DQ=(((DR)+1)&4294967295);CK=DQ;Fw=16;F9=17;continue}uA[((cd)>>2)]=2}}while(0);var Dx=AQ;var Dw=(Dx)&1;var Dl=(((Dw))&255);var CC=iB((Dl),8,0)!=0;if(CC){F9=21}else{F9=27}if(F9==21){CK=1;Fw=21;while(1){var C3=Fw==24?C4:(1);var C2=(((C3))|0)<=5;if(!(C2)){F9=26;break}var Dk=CK;var Di=((((aR+2)&4294967295)+Dk*2)&4294967295);var Dh=uW[((Di)>>1)];var Dg=CK;var Df=Dj;var De=((Df+2)&4294967295);var Dd=((De+Dg*2)&4294967295);var Dc=uW[((Dd)>>1)];var Db=iB((Dh),16,0)!=iB((Dc),16,0);if(Db){F9=23;break}var C5=CK;var C4=(((C5)+1)&4294967295);CK=C4;Fw=24;F9=25;continue}if(F9==23){vc(0)}var C1=Cx;var C0=C1;ns(aR,C0,64,1,0)}CK=0;Fw=27;$bb31$39:while(1){var CZ=Fw==27?0:(BT);var CY=(((CZ))|0)<=4;if(CY){F9=31}else{F9=29}$bb34$$bb32$41:do{if(F9==29){var CX=Dj;var CW=((CX)&4294967295);var CU=uW[((CW)>>1)];var CT=iB((CU),16,0);var CS=(CT)&1;var CR=(((CS))|0)!=0;if(CR){F9=31;break $bb34$$bb32$41}var CQ=CK;var CP=((yv+CQ*4)&4294967295);uA[((CP)>>2)]=0;var CO=CK;var CN=((yH+CO*8)&4294967295);pB[((CN)>>2)]=0;var CM=CK;var CL=((zi+CM*8)&4294967295);pB[((CL)>>2)]=0;F9=32;break $bb34$$bb32$41}}while(0);if(F9==31){var Cs=CK;var Cr=CK;var Cq=CK;var Cp=Dj;var Co=((Cp+39)&4294967295);var Cn=((Co+Cq)&4294967295);var Cm=ll[((Cn)>>0)];var Cl=oD((Cm),8,0);var Ck=((yv+Cr*4)&4294967295);uA[((Ck)>>2)]=Cl;var Cj=((yv+Cr*4)&4294967295);var Ci=uA[((Cj)>>2)];var Ch=(((Ci))|0);var Cg=((yH+Cs*8)&4294967295);pB[((Cg)>>2)]=Ch;var Cf=CK;var Ce=CK;var Cd=Cx;var Cc=((Cd+39)&4294967295);var Cb=((Cc+Ce)&4294967295);var Ca=ll[((Cb)>>0)];var B9=oD((Ca),8,0);var B5=CK;var B4=((yv+B5*4)&4294967295);var B3=uA[((B4)>>2)];var B2=(((B9)-(B3))&4294967295);var B1=(((B2)*64)&4294967295);var B0=(((B1))|0);var BZ=BV;var BY=(((BZ))|0);var BX=(B0)/(BY);var BW=((zi+Cf*8)&4294967295);pB[((BW)>>2)]=BX}var BU=CK;var BT=(((BU)+1)&4294967295);CK=BT;var BS=(((BT))|0)<=9;if(BS){Fw=32;F9=28;continue $bb31$39}else{Fw=32;F9=33;break $bb31$39}}var BR=BV;uA[((eV)>>2)]=BR;CK=1;$bb38$48:while(1){var BQ=CK;var BP=CK;var BO=Dj;var BN=((BO+2)&4294967295);var BM=((BN+BP*2)&4294967295);var BL=uW[((BM)>>1)];var BK=iB((BL),16,0);var BJ=CK;var BI=FY;var BH=((BI+144)&4294967295);var BG=((BH+BJ*2)&4294967295);var BF=uW[((BG)>>1)];var BE=iB((BF),16,0);var BD=(((BE)*(BK))&4294967295);var BC=(((BD))|0);var BB=(BC)/256;var Bz=CK;var By=FY;var Bx=((By+198)&4294967295);var Bw=((Bx+Bz*2)&4294967295);var Bv=uW[((Bw)>>1)];var Bu=iB((Bv),16,0);var Bt=(BB)+(Bu);var Bs=((um+BQ*80)&4294967295);var Br=((Bs+16)&4294967295);pB[((Br)>>2)]=Bt;var Bq=CK;var Bo=CK;var Bn=((um+Bo*80)&4294967295);var Bm=((Bn+16)&4294967295);var Bl=pB[((Bm)>>2)];var Bk=(((Bl))|0);var Bj=((um+Bq*80)&4294967295);var Bi=((Bj)&4294967295);uA[((Bi)>>2)]=Bk;var Bh=CK;var Bf=Cx;var Bd=((Bf+2)&4294967295);var A4=((Bd+Bh*2)&4294967295);var A3=uW[((A4)>>1)];var A2=iB((A3),16,0);var A1=CK;var A0=FY;var AZ=((A0+144)&4294967295);var AY=((AZ+A1*2)&4294967295);var AX=uW[((AY)>>1)];var AV=iB((AX),16,0);var AT=(((AV)*(A2))&4294967295);var AJ=(((AT))|0);var AI=(AJ)/256;var AH=CK;var i=FY;var e=((i+198)&4294967295);var GT=((e+AH*2)&4294967295);var GS=uW[((GT)>>1)];var GR=iB((GS),16,0);var GP=(AI)+(GR);Cw=GP;var GN=CK;var GE=CK;var GD=((um+GE*80)&4294967295);var GC=((GD+16)&4294967295);var GB=pB[((GC)>>2)];var GA=Cw;var Gz=(GA)-(GB);var Gy=(Gz)*64;var Gx=BV;var Gv=(((Gx))|0);var Gt=(Gy)/(Gv);var Bg=((um+GN*80)&4294967295);var Be=((Bg+48)&4294967295);pB[((Be)>>2)]=Gt;var Bc=CK;var Bb=(((Bc))|0)<=3;if(Bb){F9=35}else{F9=36}if(F9==35){var Ba=CK;var A9=CK;var A8=Dj;var A7=((A8+35)&4294967295);var A6=((A7+A9)&4294967295);var A5=ll[((A6)>>0)];var AW=oD((A5),8,0);var AU=(((AW)*2)&4294967295);var AS=(((AU))|0);var AR=((um+Ba*80)&4294967295);var AP=((AR+24)&4294967295);pB[((AP)>>2)]=AS;var AO=CK;var AN=CK;var AM=((um+AN*80)&4294967295);var AL=((AM+24)&4294967295);var AK=pB[((AL)>>2)];var GQ=(((AK))|0);var GO=((um+AO*80)&4294967295);var GM=((GO+4)&4294967295);uA[((GM)>>2)]=GQ;var GL=CK;var GK=Cx;var GJ=((GK+35)&4294967295);var GI=((GJ+GL)&4294967295);var GH=ll[((GI)>>0)];var GG=oD((GH),8,0);var GF=(((GG)*2)&4294967295);var Gw=(((GF))|0);Cw=Gw;var Gu=CK;var Gs=CK;var Gr=((um+Gs*80)&4294967295);var Gq=((Gr+24)&4294967295);var Gp=pB[((Gq)>>2)];var Go=Cw;var Gn=(Go)-(Gp);var Gm=(Gn)*64;var Gl=BV;var Gk=(((Gl))|0);var Gj=(Gm)/(Gk);var Gi=((um+Gu*80)&4294967295);var Gh=((Gi+56)&4294967295);pB[((Gh)>>2)]=Gj}var Gg=CK;var Gf=(((Gg)+1)&4294967295);CK=Gf;var Ge=(((Gf))|0)<=5;if(Ge){F9=34;continue $bb38$48}else{F9=37;break $bb38$48}}var Gd=Dj;var Gc=((Gd+39)&4294967295);var Gb=((Gc+1)&4294967295);var F8=ll[((Gb)>>0)];var F7=oD((F8),8,0);var F6=(((F7)*2)&4294967295);var F5=(((F6))|0);pB[((((um+16)&4294967295))>>2)]=F5;var F4=pB[((((um+16)&4294967295))>>2)];var F3=(F4)==0;if(F3){F9=38}else{F9=39}if(F9==38){var F2=uA[((((uu+8+36)&4294967295))>>2)];var F1=(((F2))|0);pB[((((um+16)&4294967295))>>2)]=F1}var F0=pB[((((um+16)&4294967295))>>2)];var FZ=(((F0))|0);uA[((((um)&4294967295))>>2)]=FZ;var FN=Cx;var FM=((FN+39)&4294967295);var FL=((FM+1)&4294967295);var FK=ll[((FL)>>0)];var FJ=oD((FK),8,0);var FI=(((FJ)*2)&4294967295);var FH=(((FI))|0);Cw=FH;var FG=(FH)==0;if(FG){F9=40}else{F9=41}if(F9==40){var FF=uA[((((uu+8+36)&4294967295))>>2)];var FD=(((FF))|0);Cw=FD}var Fi=pB[((((um+16)&4294967295))>>2)];var Fh=Cw;var Fg=(Fh)-(Fi);var Ff=(Fg)*64;var Fe=BV;var Fd=(((Fe))|0);var Fc=(Ff)/(Fd);pB[((((um+48)&4294967295))>>2)]=Fc;pB[((((um+24)&4294967295))>>2)]=89;uA[((((um+4)&4294967295))>>2)]=89;pB[((((um+56)&4294967295))>>2)]=0;var Fb=Dj;var Fa=((Fb)&4294967295);var E8=uW[((Fa)>>1)];var EO=iB((E8),16,0);var EN=(EO)&1;var EM=(((EN))&255);var Cu=iB((EM),8,0)!=0;if(Cu){F9=42}else{F9=44}$bb48$$return$60:do{if(F9==42){CK=1;while(1){var EL=CK;var EK=CK;var EJ=Dj;var EI=((EJ+56)&4294967295);var EG=((EI+EK)&4294967295);var EF=ll[((EG)>>0)];var ED=oD((EF),8,0);var Ej=(((ED)*4)&4294967295);var Ei=(((Ej))|0);var Eh=((um+EL*80)&4294967295);var Eg=((Eh+40)&4294967295);pB[((Eg)>>2)]=Ei;var Ef=CK;var Ee=CK;var Ed=((um+Ee*80)&4294967295);var Ec=((Ed+40)&4294967295);var Eb=pB[((Ec)>>2)];var D9=(((Eb))|0);var FE=((um+Ef*80)&4294967295);var FC=((FE+12)&4294967295);uA[((FC)>>2)]=D9;var FB=CK;var FA=Cx;var Fz=((FA+56)&4294967295);var Fy=((Fz+FB)&4294967295);var Fx=ll[((Fy)>>0)];var Fv=oD((Fx),8,0);var Fu=(((Fv)*2)&4294967295);var Ft=(((Fu))|0);Cw=Ft;var E9=CK;var E7=CK;var E6=((um+E7*80)&4294967295);var E5=((E6+40)&4294967295);var E4=pB[((E5)>>2)];var E3=Cw;var E2=(E3)-(E4);var E1=(E2)*64;var E0=BV;var EZ=(((E0))|0);var EE=(E1)/(EZ);var EC=((um+E9*80)&4294967295);var EB=((EC+72)&4294967295);pB[((EB)>>2)]=EE;var EA=CK;var Ez=CK;var Ey=Dj;var Ex=((Ey+49)&4294967295);var Ew=((Ex+Ez)&4294967295);var Ev=ll[((Ew)>>0)];var Eu=oD((Ev),8,0);var Ea=((um+EA*80)&4294967295);var D8=((Ea+32)&4294967295);pB[((D8)>>2)]=Eu;var D7=CK;var D6=CK;var D5=((um+D6*80)&4294967295);var D4=((D5+32)&4294967295);var D3=pB[((D4)>>2)];var D2=(((D3))|0);var D1=((um+D7*80)&4294967295);var D0=((D1+8)&4294967295);uA[((D0)>>2)]=D2;var DP=CK;var DO=Cx;var DN=((DO+49)&4294967295);var DM=((DN+DP)&4294967295);var DL=ll[((DM)>>0)];var DK=oD((DL),8,0);var DJ=(((DK)*2)&4294967295);var DI=(((DJ))|0);Cw=DI;var DH=CK;var DG=CK;var Dv=((um+DG*80)&4294967295);var Du=((Dv+32)&4294967295);var Dt=pB[((Du)>>2)];var Ds=Cw;var Dr=(Ds)-(Dt);var Dq=(Dr)*64;var Dp=BV;var Do=(((Dp))|0);var Dn=(Dq)/(Do);var Dm=((um+DH*80)&4294967295);var C9=((Dm+64)&4294967295);pB[((C9)>>2)]=Dn;var C8=CK;var C7=(((C8)+1)&4294967295);CK=C7;var C6=(((C7))|0)<=6;if(C6){F9=43;continue}else{F9=44;break $bb48$$return$60}}}}while(0);return;return}function tU(){var GB;var PK=null;var NU;var O4;var Nj;var Re;var Qr;var Oj;var Bf;var QE;var C4;var FW;var Ni;var PG;var Fm;var NY;var KV;var Eb;var SB;var Nh;var C9;var KW;var Ec;var SC;var Ng;var Dj;var KY;var Et;var SZ;var Nf;var Dm;var KZ;var Eu;var S0;var Ne;var Dx;var K4;var EH;var Tl;var Nd;var Dy;var La;var EI;var Tm;var Nc;var DB;var Lg;var ET;var TI;var Nb;var DC;var Lm;var EU;var TJ;var Na;var DF;var Lt;var E5;var TU;var FS;var DH;var Lz;var E6;var TV;var FR;var DR;var LF;var Fk;var T6;var FQ;var DV;var LL;var Fl;var T7;var FP;var D5;var LS;var Fx;var Us;var FO;var Ea;var LY;var Fy;var Ut;var FM;var Ep;var J8;var JZ;var Uu;var FK;var FT;var HJ;var FI;var KQ;var SA;var DG;var Qs;var SY;var Ed;var H6;var HK;var FG;var KR;var C6;var P5;var KT;var FE;var O2;var HL;var Fw;var AS;var Fe;var Fv;var Em;var KD;var Lo;var C5;var QO;var KP;var D9;var Rc;var Cf;var E7;var Fu;var Tn;var LN;var U9;var Rb;var MP;var It;var KU;var OH;var FZ;var Sf;var NI;var KS;var MA;var IL;Cf=uu;var Ft=Cf;KD=Ft;var Fs=uA[((((tu+24)&4294967295))>>2)];var Fr=(((Fs))|0);var Fq=(Fr)/50;C5=Fq;var Fp=uA[((((tu+176)&4294967295))>>2)];var Fo=(((Fp))|0);var Fn=(Fo)/100;QO=Fn;var Fj=uA[((yg)>>2)];var Fi=(((Fj))|0);var Fh=(Fi)*39.898227289999994;var Fg=jD(Fh);KP=Fg;var Ff=uA[((yg)>>2)];var Fd=(((Ff))|0);var Fc=(Fd)*22.305308169999996;var Fb=jD(Fc);D9=Fb;var Fa=uA[((yg)>>2)];var E9=(((Fa))|0);var E4=(E9)*14.76548569;var E3=jD(E4);Rc=E3;var E2=C5;var E1=QO;var E0=(E2)*(E1);var EZ=KP;var EY=D9;var EX=(EZ)+(EY);var EW=Rc;var EV=(EX)+(EW);var ES=(E0)*(EV);var ER=(ES)*10;Lo=ER;var EQ=KD;var EP=((EQ)&4294967295);var EO=uA[((EP)>>2)];var EN=Lo;var EM=(((EN))|0);var EL=(((EM)+(EO))&4294967295);var EK=KD;var EJ=((EK)&4294967295);uA[((EJ)>>2)]=EL;var EG=uA[((yg)>>2)];var EF=(((EG)+1)&4294967295);uA[((yg)>>2)]=EF;uA[((((tu+36)&4294967295))>>2)]=0;$bb36$2:while(1){var Qv=uA[((((tu+36)&4294967295))>>2)];var Qu=uA[((((tu+28)&4294967295))>>2)];var Qt=(((Qv))|0)<(((Qu))|0);if(!(Qt)){GB=70;break $bb36$2}var EE=pB[((wB)>>2)];AS=EE;var ED=x6();var EC=(((ED))|0)%16383;var EB=(((EC)+-8191)&4294967295);Em=EB;var EA=Em;uA[((((tu+52)&4294967295))>>2)]=EA;var Ez=uA[((((tu+52)&4294967295))>>2)];var Ey=(((Ez))|0);var Ex=pB[((w6)>>2)];var Es=(Ex)*0.75;var Er=(Ey)+(Es);AS=Er;var Eq=AS;pB[((w6)>>2)]=Eq;var Eo=AS;Fv=Eo;var En=Fv;Fe=En;var QZ=Fe;pB[((wB)>>2)]=QZ;var El=uA[((((tu+32)&4294967295))>>2)];var Ek=uA[((((tu+48)&4294967295))>>2)];var Ei=(((El))|0)>(((Ek))|0);if(Ei){GB=2}else{GB=3}if(GB==2){var Eh=pB[((wB)>>2)];var Ef=(Eh)*0.5;pB[((wB)>>2)]=Ef}var D8=pB[((((tu+136)&4294967295))>>2)];var D7=pB[((wB)>>2)];var D6=(D8)*(D7);It=D6;MP=0;$bb3$8:while(1){var D4=uA[((((tu+20)&4294967295))>>2)];if(D4==1){GB=5}else{if(D4==2){GB=9}else{if(D4==3){GB=13}else{GB=17}}}if(GB==5){var D3=uA[((((tu+32)&4294967295))>>2)];var D2=(((D3))|0)<=2;if(D2){GB=6}else{GB=7}if(GB==6){var D1=uA[((((tu+32)&4294967295))>>2)];var D0=((cQ+D1*8)&4294967295);var DZ=pB[((D0)>>2)];pB[((k1)>>2)]=DZ}else{if(GB==7){pB[((k1)>>2)]=0}}var DX=pB[((k1)>>2)];C6=((tu+188+1088)&4294967295);P5=DX;var DU=C6;var DT=((DU)&4294967295);var DS=pB[((DT)>>2)];var DQ=P5;var DP=(DS)*(DQ);var DO=C6;var DN=((DO+8)&4294967295);var DM=pB[((DN)>>2)];var DL=C6;var DJ=((DL+24)&4294967295);var TE=pB[((DJ)>>2)];var TC=(DM)*(TE);var TA=(DP)+(TC);var Ty=C6;var Tw=((Ty+16)&4294967295);var Tu=pB[((Tw)>>2)];var Ts=C6;var Tq=((Ts+32)&4294967295);var Tp=pB[((Tq)>>2)];var To=(Tu)*(Tp);var Th=(TA)+(To);O2=Th;var Tf=C6;var Td=((Tf+24)&4294967295);var Tb=pB[((Td)>>2)];var S9=C6;var S7=((S9+32)&4294967295);pB[((S7)>>2)]=Tb;var S5=C6;var S3=((S5+24)&4294967295);var S2=O2;pB[((S3)>>2)]=S2;var S1=O2;FE=S1;var SU=FE;KT=SU;var Pn=KT;Fw=Pn;var SS=Fw;HL=SS;var Ej=HL;pB[((gk)>>2)]=Ej}else{if(GB==9){var SQ=uA[((((tu+32)&4294967295))>>2)];var SO=uA[((((tu+44)&4294967295))>>2)];var SM=(((SQ))|0)<(((SO))|0);if(SM){GB=10}else{GB=11}if(GB==10){var SK=pB[((((tu+56)&4294967295))>>2)];var SI=pB[((((tu+64)&4294967295))>>2)];var SG=(SK)-(SI);pB[((((tu+56)&4294967295))>>2)]=SG;var SF=pB[((((tu+56)&4294967295))>>2)];var SE=pB[((lK)>>2)];var Sw=(SF)+(SE);pB[((lK)>>2)]=Sw;var Su=pB[((lK)>>2)];var Ss=(Su)*0.028;KR=Ss;var Sq=KR;FG=Sq}else{if(GB==11){pB[((lK)>>2)]=0;FG=0}}var So=FG;HK=So;var Js=HK;pB[((gk)>>2)]=Js}else{if(GB==13){var Sm=uA[((((tu+40)&4294967295))>>2)];var Sk=(((Sm))|0)!=0;if(Sk){GB=14}else{GB=15}if(GB==14){var Si=uA[((((tu+32)&4294967295))>>2)];var Sh=(((Si))|0);SA=Sh;var Sg=uA[((((tu+40)&4294967295))>>2)];var Sd=(((Sg))|0);var Sc=SA;var Sb=(Sc)/(Sd);SA=Sb;var Sa=uA[((((tu+160)&4294967295))>>2)];var R9=(((Sa))|0);var R8=SA;var R7=(R9)*(R8);SA=R7;var R6=SA;var R5=(((R6))|0);KQ=R5;var R4=KQ;var R3=(((R4))|0);var R2=SA;var R1=(R2)-(R3);H6=R1;var R0=uA[((((tu+172)&4294967295))>>2)];var RZ=KQ;var RY=((R0+2*RZ)&4294967295);var RX=uW[((RY)>>1)];var RW=iB((RX),16,0);SY=RW;var RV=uA[((((tu+172)&4294967295))>>2)];var RU=KQ;var RT=(((RU)+1)&4294967295);var RS=((RV+2*RT)&4294967295);var RR=uW[((RS)>>1)];var RQ=iB((RR),16,0);Ed=RQ;var RP=Ed;var RO=(((RP))|0);var RM=SY;var RL=(((RM))|0);var RK=(RO)-(RL);Qs=RK;var RJ=Qs;var RH=H6;var RG=(RJ)*(RH);Qs=RG;var RF=uA[((((tu+172)&4294967295))>>2)];var RE=KQ;var RD=((RF+2*RE)&4294967295);var RC=uW[((RD)>>1)];var RB=iB((RC),16,0);var RA=Qs;var Rz=(RB)+(RA);DG=Rz;var Ry=pB[((((tu+164)&4294967295))>>2)];var Rx=DG;var Rw=(Ry)*(Rx);DG=Rw}else{if(GB==15){DG=0}}var Rv=DG;FI=Rv;var Ru=FI;HJ=Ru;var Jr=HJ;pB[((gk)>>2)]=Jr}}}var Rt=uA[((((tu+32)&4294967295))>>2)];var Rs=uA[((((tu+40)&4294967295))>>2)];var Rr=(((Rt))|0)>=(((Rs))|0);if(Rr){GB=18}else{GB=44}$bb8$$bb9$27:do{if(GB==18){uA[((((tu+32)&4294967295))>>2)]=0;var Rq=Cf;PG=Rq;var Rp=PG;var Ro=((Rp)&4294967295);var Rn=uA[((Ro)>>2)];var Rm=(((Rn))|0)>0;if(Rm){GB=19}else{GB=39}if(GB==19){var Rl=uA[((((tu+8)&4294967295))>>2)];var Rk=(((Rl)*40)&4294967295);var Rj=PG;var Ri=((Rj)&4294967295);var Rh=uA[((Ri)>>2)];var Rg=(((((Rk))|0)/(((Rh))|0))|0);uA[((((tu+40)&4294967295))>>2)]=Rg;var Rf=PG;var Rd=((Rf+204)&4294967295);var NA=uA[((Rd)>>2)];C4=NA;var Ny=C4;var Nw=(((Ny))|0)<0;var Nu=C4;var Ns=(((Nu))|0)>87;var SD=(Nw)|(Ns);if(SD){GB=20}else{GB=21}if(GB==20){Ni=0}else{if(GB==21){var Nq=C4;var No=((bL+Nq*2)&4294967295);var Nm=uW[((No)>>1)];var Nl=iB((Nm),16,0);var Nk=(Nl)*0.001;Ni=Nk}}var M6=Ni;FW=M6;var KX=FW;pB[((((tu+112)&4294967295))>>2)]=KX;var M4=uA[((((tu+40)&4294967295))>>2)];uA[((((tu+48)&4294967295))>>2)]=M4;var M2=PG;var M0=((M2+204)&4294967295);var MY=uA[((M0)>>2)];var MW=(((MY))|0)>0;if(MW){GB=23}else{GB=24}if(GB==23){var MU=uA[((((tu+48)&4294967295))>>2)];var MS=(((MU))|0)>>1;uA[((((tu+48)&4294967295))>>2)]=MS}var MR=PG;var MQ=((MR+176)&4294967295);var ML=uA[((MQ)>>2)];NU=ML;var MJ=NU;var MH=(((MJ))|0)<0;var MF=NU;var MD=(((MF))|0)>87;var Se=(MH)|(MD);if(Se){GB=25}else{GB=26}if(GB==25){Nj=0}else{if(GB==26){var MB=NU;var My=((bL+MB*2)&4294967295);var Mw=uW[((My)>>1)];var Mv=iB((Mw),16,0);var Mu=(Mv)*0.001;Nj=Mu}}var Mq=Nj;O4=Mq;var Ra=O4;var Mo=(Ra)*0.1;pB[((((tu+144)&4294967295))>>2)]=Mo;var Mm=PG;var Mk=((Mm+172)&4294967295);var Mi=uA[((Mk)>>2)];var Mg=(((Mi)*4)&4294967295);uA[((((tu+44)&4294967295))>>2)]=Mg;var Me=uA[((((tu+20)&4294967295))>>2)];var Mc=(((Me))|0)==1;var Mb=uA[((((tu+44)&4294967295))>>2)];var Ma=(((Mb))|0)>263;var E8=(Mc)&(Ma);if(E8){GB=28}else{GB=29}if(GB==28){uA[((((tu+44)&4294967295))>>2)]=263}var L9=uA[((((tu+44)&4294967295))>>2)];var L8=uA[((((tu+40)&4294967295))>>2)];var L7=(((L8)-1)&4294967295);var L6=(((L9))|0)>=(((L7))|0);if(L6){PK=29;GB=30}else{PK=29;GB=31}if(GB==30){var L5=uA[((((tu+40)&4294967295))>>2)];var L4=(((L5)-2)&4294967295);uA[((((tu+44)&4294967295))>>2)]=L4;PK=30}var L3=PK==30?L4:(L9);var L2=(((L3))|0)<=39;if(L2){GB=32}else{GB=33}if(GB==32){uA[((((tu+44)&4294967295))>>2)]=40}var L1=uA[((((tu+44)&4294967295))>>2)];var L0=(((L1)-40)&4294967295);var LZ=((ia+L0*2)&4294967295);var LX=uW[((LZ)>>1)];var LW=iB((LX),16,0);pB[((((tu+64)&4294967295))>>2)]=LW;var LV=pB[((((tu+64)&4294967295))>>2)];var LU=uA[((((tu+44)&4294967295))>>2)];var LT=(((LU))|0);var LR=(LV)*(LT);var LQ=(LR)*0.333;pB[((((tu+56)&4294967295))>>2)]=LQ;var LP=uA[((((tu+8)&4294967295))>>2)];var LO=uA[((((tu+44)&4294967295))>>2)];var LM=(((((LP))|0)/(((LO))|0))|0);Fm=LM;var LK=Fm;Re=0;Qr=LK;Oj=((tu+188+1088)&4294967295);var LJ=pB[((((tu+72)&4294967295))>>2)];var LI=Qr;var LH=(((LI))|0);var LG=(LJ)*(LH);QE=LG;var LE=QE;var LD=ql(LE);Bf=LD;var LC=Bf;var LB=Bf;var LA=(LC)*(LB);var Ly=0-(LA);var Lx=Oj;var Lw=((Lx+16)&4294967295);pB[((Lw)>>2)]=Ly;var Lv=pB[((((tu+80)&4294967295))>>2)];var Lu=Re;var Ls=(((Lu))|0);var Lr=(Lv)*(Ls);QE=Lr;var Lq=QE;var Lp=h0(Lq);var Ln=Bf;var Ll=(Lp)*(Ln);var Lk=(Ll)*2;var Lj=Oj;var Li=((Lj+8)&4294967295);pB[((Li)>>2)]=Lk;var Lh=Oj;var Lf=((Lh+8)&4294967295);var Le=pB[((Lf)>>2)];var Ld=1-(Le);var Lc=Oj;var Lb=((Lc+16)&4294967295);var K9=pB[((Lb)>>2)];var K8=(Ld)-(K9);var K7=Oj;var K6=((K7)&4294967295);pB[((K6)>>2)]=K8;var K5=uA[((((tu+44)&4294967295))>>2)];var K3=(((K5))|0);var K2=(K3)*0.00833;NY=K2;var K1=pB[((((tu+188+1088)&4294967295))>>2)];var K0=NY;var H2=NY;var H0=(K0)*(H2);var HY=(K1)*(H0);pB[((((tu+188+1088)&4294967295))>>2)]=HY;var HW=uA[((((tu+40)&4294967295))>>2)];var HU=uA[((((tu+44)&4294967295))>>2)];var HS=(((HW)-(HU))&4294967295);Fm=HS;var HQ=PG;var HO=((HQ+188)&4294967295);var HN=uA[((HO)>>2)];var HM=Fm;var HF=(((HN))|0)>(((HM))|0);if(HF){GB=34}else{GB=35}if(GB==34){var HD=PG;var HB=((HD+188)&4294967295);var Hz=Fm;uA[((HB)>>2)]=Hz}var Hx=uA[((vJ)>>2)];var Hv=(((Hx))|0)>=0;var Ht=PG;var Hr=((Ht+188)&4294967295);var Hq=uA[((Hr)>>2)];if(Hv){GB=36}else{GB=37}if(GB==36){uA[((vJ)>>2)]=Hq}else{if(GB==37){var Hp=((0-(Hq))&4294967295);uA[((vJ)>>2)]=Hp}}var Hl=uA[((((tu+40)&4294967295))>>2)];var Hj=uA[((vJ)>>2)];var Hh=(((Hj)+(Hl))&4294967295);uA[((((tu+40)&4294967295))>>2)]=Hh;var Hf=uA[((vJ)>>2)];var Hd=((0-(Hf))&4294967295);uA[((vJ)>>2)]=Hd}else{if(GB==39){uA[((((tu+40)&4294967295))>>2)]=4;pB[((((tu+112)&4294967295))>>2)]=0;var Hb=uA[((((tu+40)&4294967295))>>2)];uA[((((tu+48)&4294967295))>>2)]=Hb;pB[((((tu+144)&4294967295))>>2)]=0;pB[((((tu+56)&4294967295))>>2)]=0;pB[((((tu+64)&4294967295))>>2)]=0}}var G9=uA[((((tu+40)&4294967295))>>2)];var G7=(((G9))|0)!=4;var G6=uA[((((tu+36)&4294967295))>>2)];var G5=(((G6))|0)==0;var RI=(G7)|(G5);if(!(RI)){GB=44;break $bb8$$bb9$27}var G1=PG;var GZ=((G1+180)&4294967295);var GX=uA[((GZ)>>2)];var GV=(((GX))|0);var GT=(GV)*0.033;pB[((((tu+96)&4294967295))>>2)]=GT;var GR=pB[((((tu+96)&4294967295))>>2)];var GP=(GR)>0;if(GP){GB=42}else{GB=43}if(GB==42){var GN=pB[((((tu+96)&4294967295))>>2)];var GM=1-(GN);pB[((((tu+88)&4294967295))>>2)]=GM}else{if(GB==43){pB[((((tu+88)&4294967295))>>2)]=1}}}}while(0);var GL=pB[((gk)>>2)];KV=((tu+188+1152)&4294967295);Eb=GL;var GK=KV;var GJ=((GK)&4294967295);var GI=pB[((GJ)>>2)];var GH=Eb;var GG=(GI)*(GH);var GF=KV;var GE=((GF+8)&4294967295);var GD=pB[((GE)>>2)];var GC=KV;var GA=((GC+24)&4294967295);var Gz=pB[((GA)>>2)];var Gy=(GD)*(Gz);var Gx=(GG)+(Gy);var Gw=KV;var Gv=((Gw+16)&4294967295);var Gu=pB[((Gv)>>2)];var Gt=KV;var Gs=((Gt+32)&4294967295);var Gr=pB[((Gs)>>2)];var Gq=(Gu)*(Gr);var Gp=(Gx)+(Gq);C9=Gp;var Go=KV;var Gn=((Go+24)&4294967295);var Gm=pB[((Gn)>>2)];var Gl=KV;var Gk=((Gl+32)&4294967295);pB[((Gk)>>2)]=Gm;var Gj=KV;var Gi=((Gj+24)&4294967295);var Gh=C9;pB[((Gi)>>2)]=Gh;var Gg=C9;Nh=Gg;var Gf=Nh;SB=Gf;var Di=SB;pB[((gk)>>2)]=Di;var Ge=uA[((((tu+32)&4294967295))>>2)];var Gd=(((Ge)+1)&4294967295);uA[((((tu+32)&4294967295))>>2)]=Gd;var Gc=MP;var Gb=(((Gc)+1)&4294967295);MP=Gb;var Ga=(((Gb))|0)<=3;if(Ga){GB=4;continue $bb3$8}else{GB=45;break $bb3$8}}var F9=pB[((((tu+88)&4294967295))>>2)];var F8=pB[((gk)>>2)];var F7=(F9)*(F8);var F6=pB[((((tu+96)&4294967295))>>2)];var F5=pB[((se)>>2)];var F4=(F6)*(F5);var F3=(F7)+(F4);pB[((gk)>>2)]=F3;var F2=pB[((gk)>>2)];pB[((se)>>2)]=F2;var F1=uA[((((tu+32)&4294967295))>>2)];var F0=uA[((((tu+44)&4294967295))>>2)];var FY=(((F1))|0)<(((F0))|0);if(FY){GB=46}else{GB=47}if(GB==46){var FX=pB[((((tu+144)&4294967295))>>2)];var FV=uA[((((tu+52)&4294967295))>>2)];var FU=(((FV))|0);var FN=(FX)*(FU);var FL=pB[((gk)>>2)];var FJ=(FN)+(FL);pB[((gk)>>2)]=FJ}var FH=pB[((((tu+112)&4294967295))>>2)];var FF=pB[((gk)>>2)];var FD=(FH)*(FF);KU=FD;var FC=pB[((((tu+120)&4294967295))>>2)];var FB=pB[((gk)>>2)];var FA=(FC)*(FB);Sf=FA;var Fz=pB[((((tu+128)&4294967295))>>2)];var AH=pB[((wB)>>2)];var e=(Fz)*(AH);OH=e;var Vm=KU;var Vk=OH;var Vi=(Vm)+(Vk);KU=Vi;var Vg=Sf;var Ve=OH;var Vc=(Vg)+(Ve);Sf=Vc;Rb=0;var Vb=uA[((((tu)&4294967295))>>2)];var Va=(((Vb))|0)!=2;if(Va){GB=48}else{GB=49}if(GB==48){var U5=KU;KW=((tu+188)&4294967295);Ec=U5;var U3=KW;var U1=((U3)&4294967295);var UZ=pB[((U1)>>2)];var UX=Ec;var UV=(UZ)*(UX);var UT=KW;var UR=((UT+8)&4294967295);var UQ=pB[((UR)>>2)];var UP=KW;var UL=((UP+24)&4294967295);var UJ=pB[((UL)>>2)];var UH=(UQ)*(UJ);var UF=(UV)+(UH);var UD=KW;var UB=((UD+16)&4294967295);var Uz=pB[((UB)>>2)];var Ux=KW;var Uw=((Ux+32)&4294967295);var Uv=pB[((Uw)>>2)];var Uo=(Uz)*(Uv);var Um=(UF)+(Uo);Dj=Um;var Uk=KW;var Ui=((Uk+24)&4294967295);var Ug=pB[((Ui)>>2)];var Ue=KW;var Uc=((Ue+32)&4294967295);pB[((Uc)>>2)]=Ug;var Ua=KW;var T9=((Ua+24)&4294967295);var T8=Ec;pB[((T9)>>2)]=T8;var T5=KW;var T4=((T5)&4294967295);var T3=pB[((T4)>>2)];var T2=KW;var T1=((T2+40)&4294967295);var T0=pB[((T1)>>2)];var TZ=(T3)+(T0);var TY=KW;var TX=((TY)&4294967295);pB[((TX)>>2)]=TZ;var TW=KW;var TT=((TW+8)&4294967295);var TS=pB[((TT)>>2)];var TR=KW;var TQ=((TR+48)&4294967295);var TP=pB[((TQ)>>2)];var TO=(TS)+(TP);var TN=KW;var TM=((TN+8)&4294967295);pB[((TM)>>2)]=TO;var TL=KW;var TK=((TL+16)&4294967295);var TH=pB[((TK)>>2)];var TG=KW;var TF=((TG+56)&4294967295);var TD=pB[((TF)>>2)];var TB=(TH)+(TD);var Tz=KW;var Tx=((Tz+16)&4294967295);pB[((Tx)>>2)]=TB;var Tv=Dj;Ng=Tv;var Tt=Ng;SC=Tt;var Dv=SC;FZ=Dv;var Tr=FZ;KY=((tu+188+576)&4294967295);Et=Tr;var Tk=KY;var Tj=((Tk)&4294967295);var Ti=pB[((Tj)>>2)];var Tg=Et;var Te=(Ti)*(Tg);var Tc=KY;var Ta=((Tc+8)&4294967295);var S8=pB[((Ta)>>2)];var S6=KY;var S4=((S6+24)&4294967295);var SX=pB[((S4)>>2)];var SW=(S8)*(SX);var SV=(Te)+(SW);var ST=KY;var SR=((ST+16)&4294967295);var SP=pB[((SR)>>2)];var SN=KY;var SL=((SN+32)&4294967295);var SJ=pB[((SL)>>2)];var SH=(SP)*(SJ);var Sz=(SV)+(SH);Dm=Sz;var Sy=KY;var Sx=((Sy+24)&4294967295);var Sv=pB[((Sx)>>2)];var St=KY;var Sr=((St+32)&4294967295);pB[((Sr)>>2)]=Sv;var Sp=KY;var Sn=((Sp+24)&4294967295);var Sl=Dm;pB[((Sn)>>2)]=Sl;var Sj=Dm;Nf=Sj;var Pk=Nf;SZ=Pk;var Dw=SZ;FZ=Dw;var Pi=FZ;KZ=((tu+188+512)&4294967295);Eu=Pi;var Pg=KZ;var Pe=((Pg)&4294967295);var Pc=pB[((Pe)>>2)];var Pa=Eu;var O8=(Pc)*(Pa);var O6=KZ;var O5=((O6+8)&4294967295);var O3=pB[((O5)>>2)];var OY=KZ;var OW=((OY+24)&4294967295);var OU=pB[((OW)>>2)];var OS=(O3)*(OU);var OQ=(O8)+(OS);var OO=KZ;var OM=((OO+16)&4294967295);var OK=pB[((OM)>>2)];var OJ=KZ;var OI=((OJ+32)&4294967295);var OD=pB[((OI)>>2)];var OB=(OK)*(OD);var Oz=(OQ)+(OB);Dx=Oz;var Ox=KZ;var Ov=((Ox+24)&4294967295);var Ot=pB[((Ov)>>2)];var Or=KZ;var Op=((Or+32)&4294967295);pB[((Op)>>2)]=Ot;var Oo=KZ;var On=((Oo+24)&4294967295);var Oh=Dx;pB[((On)>>2)]=Oh;var Of=Dx;Ne=Of;var Od=Ne;S0=Od;var Dz=S0;FZ=Dz;var Ob=FZ;K4=((tu+188+448)&4294967295);EH=Ob;var N9=K4;var N7=((N9)&4294967295);var N5=pB[((N7)>>2)];var N3=EH;var N2=(N5)*(N3);var N1=K4;var N0=((N1+8)&4294967295);var NZ=pB[((N0)>>2)];var NX=K4;var NW=((NX+24)&4294967295);var NV=pB[((NW)>>2)];var NT=(NZ)*(NV);var NS=(N2)+(NT);var NR=K4;var NQ=((NR+16)&4294967295);var NP=pB[((NQ)>>2)];var NO=K4;var NN=((NO+32)&4294967295);var NM=pB[((NN)>>2)];var NL=(NP)*(NM);var NK=(NS)+(NL);Dy=NK;var NJ=K4;var NH=((NJ+24)&4294967295);var NG=pB[((NH)>>2)];var NF=K4;var NE=((NF+32)&4294967295);pB[((NE)>>2)]=NG;var ND=K4;var NC=((ND+24)&4294967295);var NB=Dy;pB[((NC)>>2)]=NB;var Nz=Dy;Nd=Nz;var Nx=Nd;Tl=Nx;var DA=Tl;FZ=DA;var Nv=FZ;La=((tu+188+384)&4294967295);EI=Nv;var Nt=La;var Nr=((Nt)&4294967295);var Np=pB[((Nr)>>2)];var Nn=EI;var M9=(Np)*(Nn);var M8=La;var M7=((M8+8)&4294967295);var M5=pB[((M7)>>2)];var M3=La;var M1=((M3+24)&4294967295);var MZ=pB[((M1)>>2)];var MX=(M5)*(MZ);var MV=(M9)+(MX);var MT=La;var MO=((MT+16)&4294967295);var MN=pB[((MO)>>2)];var MM=La;var MK=((MM+32)&4294967295);var MI=pB[((MK)>>2)];var MG=(MN)*(MI);var ME=(MV)+(MG);DB=ME;var MC=La;var Mz=((MC+24)&4294967295);var Mx=pB[((Mz)>>2)];var Mt=La;var Ms=((Mt+32)&4294967295);pB[((Ms)>>2)]=Mx;var Mr=La;var Mp=((Mr+24)&4294967295);var Mn=DB;pB[((Mp)>>2)]=Mn;var Ml=DB;Nc=Ml;var Mj=Nc;Tm=Mj;var DD=Tm;FZ=DD;var Mh=FZ;Lg=((tu+188+320)&4294967295);ET=Mh;var Mf=Lg;var Md=((Mf)&4294967295);var JJ=pB[((Md)>>2)];var JH=ET;var JF=(JJ)*(JH);var JD=Lg;var JB=((JD+8)&4294967295);var Jz=pB[((JB)>>2)];var Jx=Lg;var Jv=((Jx+24)&4294967295);var Ju=pB[((Jv)>>2)];var Jt=(Jz)*(Ju);var Jn=(JF)+(Jt);var Jl=Lg;var Jj=((Jl+16)&4294967295);var Jh=pB[((Jj)>>2)];var Jf=Lg;var Jd=((Jf+32)&4294967295);var Jb=pB[((Jd)>>2)];var I9=(Jh)*(Jb);var I8=(Jn)+(I9);DC=I8;var I7=Lg;var I3=((I7+24)&4294967295);var I1=pB[((I3)>>2)];var IZ=Lg;var IX=((IZ+32)&4294967295);pB[((IX)>>2)]=I1;var IV=Lg;var IT=((IV+24)&4294967295);var IR=DC;pB[((IT)>>2)]=IR;var IP=Lg;var IO=((IP)&4294967295);var IN=pB[((IO)>>2)];var II=Lg;var IG=((II+40)&4294967295);var IE=pB[((IG)>>2)];var IC=(IN)+(IE);var IA=Lg;var Iy=((IA)&4294967295);pB[((Iy)>>2)]=IC;var Iw=Lg;var Iu=((Iw+8)&4294967295);var Is=pB[((Iu)>>2)];var Ir=Lg;var Iq=((Ir+48)&4294967295);var Ip=pB[((Iq)>>2)];var Io=(Is)+(Ip);var In=Lg;var Im=((In+8)&4294967295);pB[((Im)>>2)]=Io;var Il=Lg;var Ik=((Il+16)&4294967295);var Ij=pB[((Ik)>>2)];var Ii=Lg;var Ih=((Ii+56)&4294967295);var Ig=pB[((Ih)>>2)];var If=(Ij)+(Ig);var Ie=Lg;var Id=((Ie+16)&4294967295);pB[((Id)>>2)]=If;var Ic=DC;Nb=Ic;var Ib=Nb;TI=Ib;var DE=TI;FZ=DE;var Ia=FZ;Lm=((tu+188+256)&4294967295);EU=Ia;var H9=Lm;var H8=((H9)&4294967295);var H7=pB[((H8)>>2)];var H5=EU;var H4=(H7)*(H5);var H3=Lm;var H1=((H3+8)&4294967295);var HZ=pB[((H1)>>2)];var HX=Lm;var HV=((HX+24)&4294967295);var HT=pB[((HV)>>2)];var HR=(HZ)*(HT);var HP=(H4)+(HR);var HI=Lm;var HH=((HI+16)&4294967295);var HG=pB[((HH)>>2)];var HE=Lm;var HC=((HE+32)&4294967295);var HA=pB[((HC)>>2)];var Hy=(HG)*(HA);var Hw=(HP)+(Hy);DF=Hw;var Hu=Lm;var Hs=((Hu+24)&4294967295);var Ho=pB[((Hs)>>2)];var Hn=Lm;var Hm=((Hn+32)&4294967295);pB[((Hm)>>2)]=Ho;var Hk=Lm;var Hi=((Hk+24)&4294967295);var Hg=DF;pB[((Hi)>>2)]=Hg;var He=Lm;var Hc=((He)&4294967295);var Ha=pB[((Hc)>>2)];var G8=Lm;var G4=((G8+40)&4294967295);var G3=pB[((G4)>>2)];var G2=(Ha)+(G3);var G0=Lm;var GY=((G0)&4294967295);pB[((GY)>>2)]=G2;var GW=Lm;var GU=((GW+8)&4294967295);var GS=pB[((GU)>>2)];var GQ=Lm;var GO=((GQ+48)&4294967295);var Cz=pB[((GO)>>2)];var Cy=(GS)+(Cz);var Cx=Lm;var Cw=((Cx+8)&4294967295);pB[((Cw)>>2)]=Cy;var Cv=Lm;var Cu=((Cv+16)&4294967295);var Ct=pB[((Cu)>>2)];var Cs=Lm;var Cr=((Cs+56)&4294967295);var Cq=pB[((Cr)>>2)];var Ce=(Ct)+(Cq);var Cd=Lm;var Cc=((Cd+16)&4294967295);pB[((Cc)>>2)]=Ce;var Cb=DF;Na=Cb;var Ca=Na;TJ=Ca;var DI=TJ;FZ=DI;var B9=FZ;Lt=((tu+188+192)&4294967295);E5=B9;var B8=Lt;var B7=((B8)&4294967295);var B6=pB[((B7)>>2)];var B5=E5;var BU=(B6)*(B5);var BT=Lt;var BS=((BT+8)&4294967295);var BR=pB[((BS)>>2)];var BQ=Lt;var BP=((BQ+24)&4294967295);var BO=pB[((BP)>>2)];var BN=(BR)*(BO);var BM=(BU)+(BN);var BL=Lt;var BA=((BL+16)&4294967295);var Bz=pB[((BA)>>2)];var By=Lt;var Bx=((By+32)&4294967295);var Bw=pB[((Bx)>>2)];var Bv=(Bz)*(Bw);var Bu=(BM)+(Bv);DH=Bu;var Bt=Lt;var Bs=((Bt+24)&4294967295);var Br=pB[((Bs)>>2)];var Bg=Lt;var Be=((Bg+32)&4294967295);pB[((Be)>>2)]=Br;var Bd=Lt;var Bc=((Bd+24)&4294967295);var Bb=DH;pB[((Bc)>>2)]=Bb;var Ba=Lt;var A9=((Ba)&4294967295);var A8=pB[((A9)>>2)];var A7=Lt;var A6=((A7+40)&4294967295);var AV=pB[((A6)>>2)];var AU=(A8)+(AV);var AT=Lt;var AR=((AT)&4294967295);pB[((AR)>>2)]=AU;var AQ=Lt;var AP=((AQ+8)&4294967295);var AO=pB[((AP)>>2)];var AN=Lt;var AM=((AN+48)&4294967295);var AL=pB[((AM)>>2)];var AK=(AO)+(AL);var AJ=Lt;var AI=((AJ+8)&4294967295);pB[((AI)>>2)]=AK;var i=Lt;var Vn=((i+16)&4294967295);var Vl=pB[((Vn)>>2)];var Vj=Lt;var Vh=((Vj+56)&4294967295);var Vf=pB[((Vh)>>2)];var Vd=(Vl)+(Vf);var U8=Lt;var U7=((U8+16)&4294967295);pB[((U7)>>2)]=Vd;var U6=DH;FS=U6;var U4=FS;TU=U4;var DK=TU;FZ=DK;var U2=FZ;Lz=((tu+188+128)&4294967295);E6=U2;var U0=Lz;var UY=((U0)&4294967295);var UW=pB[((UY)>>2)];var UU=E6;var US=(UW)*(UU);var UO=Lz;var UN=((UO+8)&4294967295);var UM=pB[((UN)>>2)];var UK=Lz;var UI=((UK+24)&4294967295);var UG=pB[((UI)>>2)];var UE=(UM)*(UG);var UC=(US)+(UE);var UA=Lz;var Uy=((UA+16)&4294967295);var Ur=pB[((Uy)>>2)];var Uq=Lz;var Up=((Uq+32)&4294967295);var Un=pB[((Up)>>2)];var Ul=(Ur)*(Un);var Uj=(UC)+(Ul);DR=Uj;var Uh=Lz;var Uf=((Uh+24)&4294967295);var Ud=pB[((Uf)>>2)];var Ub=Lz;var Qp=((Ub+32)&4294967295);pB[((Qp)>>2)]=Ud;var Qo=Lz;var Qn=((Qo+24)&4294967295);var Qm=DR;pB[((Qn)>>2)]=Qm;var Ql=Lz;var Qk=((Ql)&4294967295);var Qj=pB[((Qk)>>2)];var Qi=Lz;var Qh=((Qi+40)&4294967295);var Qg=pB[((Qh)>>2)];var Qf=(Qj)+(Qg);var Qe=Lz;var Qd=((Qe)&4294967295);pB[((Qd)>>2)]=Qf;var Qc=Lz;var Qb=((Qc+8)&4294967295);var Qa=pB[((Qb)>>2)];var P9=Lz;var P8=((P9+48)&4294967295);var P7=pB[((P8)>>2)];var P6=(Qa)+(P7);var P4=Lz;var P3=((P4+8)&4294967295);pB[((P3)>>2)]=P6;var P2=Lz;var P1=((P2+16)&4294967295);var P0=pB[((P1)>>2)];var PZ=Lz;var PY=((PZ+56)&4294967295);var PX=pB[((PY)>>2)];var PW=(P0)+(PX);var PV=Lz;var PU=((PV+16)&4294967295);pB[((PU)>>2)]=PW;var PT=DR;FR=PT;var PS=FR;TV=PS;var DW=TV;FZ=DW;var PR=FZ;LF=((tu+188+64)&4294967295);Fk=PR;var PQ=LF;var PP=((PQ)&4294967295);var PO=pB[((PP)>>2)];var PN=Fk;var PM=(PO)*(PN);var PL=LF;var PJ=((PL+8)&4294967295);var PI=pB[((PJ)>>2)];var PH=LF;var PF=((PH+24)&4294967295);var PE=pB[((PF)>>2)];var PD=(PI)*(PE);var PC=(PM)+(PD);var PB=LF;var PA=((PB+16)&4294967295);var Pz=pB[((PA)>>2)];var Py=LF;var Px=((Py+32)&4294967295);var Pw=pB[((Px)>>2)];var Pv=(Pz)*(Pw);var Pu=(PC)+(Pv);DV=Pu;var Pt=LF;var Ps=((Pt+24)&4294967295);var Pr=pB[((Ps)>>2)];var Pq=LF;var Pp=((Pq+32)&4294967295);pB[((Pp)>>2)]=Pr;var Po=LF;var Pm=((Po+24)&4294967295);var Pl=DV;pB[((Pm)>>2)]=Pl;var Pj=LF;var Ph=((Pj)&4294967295);var Pf=pB[((Ph)>>2)];var Pd=LF;var Pb=((Pd+40)&4294967295);var O9=pB[((Pb)>>2)];var O7=(Pf)+(O9);var O1=LF;var O0=((O1)&4294967295);pB[((O0)>>2)]=O7;var OZ=LF;var OX=((OZ+8)&4294967295);var OV=pB[((OX)>>2)];var OT=LF;var OR=((OT+48)&4294967295);var OP=pB[((OR)>>2)];var ON=(OV)+(OP);var OL=LF;var OG=((OL+8)&4294967295);pB[((OG)>>2)]=ON;var OF=LF;var OE=((OF+16)&4294967295);var OC=pB[((OE)>>2)];var OA=LF;var Oy=((OA+56)&4294967295);var Ow=pB[((Oy)>>2)];var Ou=(OC)+(Ow);var Os=LF;var Oq=((Os+16)&4294967295);pB[((Oq)>>2)]=Ou;var Ol=DV;FQ=Ol;var Ok=FQ;T6=Ok;var DY=T6;Rb=DY}var Oi=Sf;pB[((nn)>>2)]=Oi;var Og=pB[((nn)>>2)];LL=((tu+188+704)&4294967295);Fl=Og;var Oe=LL;var Oc=((Oe)&4294967295);var Oa=pB[((Oc)>>2)];var N8=Fl;var N6=(Oa)*(N8);var N4=LL;var KN=((N4+8)&4294967295);var KM=pB[((KN)>>2)];var KL=LL;var KK=((KL+24)&4294967295);var KJ=pB[((KK)>>2)];var KI=(KM)*(KJ);var KH=(N6)+(KI);var KG=LL;var KF=((KG+16)&4294967295);var KE=pB[((KF)>>2)];var KC=LL;var KB=((KC+32)&4294967295);var KA=pB[((KB)>>2)];var Kz=(KE)*(KA);var Ky=(KH)+(Kz);D5=Ky;var Kx=LL;var Kw=((Kx+24)&4294967295);var Kv=pB[((Kw)>>2)];var Ku=LL;var Kt=((Ku+32)&4294967295);pB[((Kt)>>2)]=Kv;var Ks=LL;var Kr=((Ks+24)&4294967295);var Kq=D5;pB[((Kr)>>2)]=Kq;var Kp=D5;FP=Kp;var Ko=FP;T7=Ko;var Ee=T7;var Kn=Rb;var Km=(Ee)+(Kn);Rb=Km;var Kl=pB[((nn)>>2)];LS=((tu+188+640)&4294967295);Fx=Kl;var Kk=LS;var Kj=((Kk)&4294967295);var Ki=pB[((Kj)>>2)];var Kh=Fx;var Kg=(Ki)*(Kh);var Kf=LS;var Ke=((Kf+8)&4294967295);var Kd=pB[((Ke)>>2)];var Kc=LS;var Kb=((Kc+24)&4294967295);var Ka=pB[((Kb)>>2)];var J9=(Kd)*(Ka);var J7=(Kg)+(J9);var J6=LS;var J5=((J6+16)&4294967295);var J4=pB[((J5)>>2)];var J3=LS;var J2=((J3+32)&4294967295);var J1=pB[((J2)>>2)];var J0=(J4)*(J1);var JY=(J7)+(J0);Ea=JY;var JX=LS;var JW=((JX+24)&4294967295);var JV=pB[((JW)>>2)];var JU=LS;var JT=((JU+32)&4294967295);pB[((JT)>>2)]=JV;var JS=LS;var JR=((JS+24)&4294967295);var JQ=Ea;pB[((JR)>>2)]=JQ;var JP=Ea;FO=JP;var JO=FO;Us=JO;var Eg=Us;var JN=Rb;var JM=(Eg)+(JN);Rb=JM;var JL=It;var JK=Sf;var JI=(JL)+(JK);var JG=pB[((a4)>>2)];var JE=(JI)-(JG);pB[((nn)>>2)]=JE;var JC=Sf;pB[((a4)>>2)]=JC;NI=12;$bb16$72:while(1){var JA=pB[((nn)>>2)];var Jy=NI;var Jw=((((tu+188)&4294967295)+Jy*64)&4294967295);LY=Jw;Fy=JA;var Jq=LY;var Jp=((Jq)&4294967295);var Jo=pB[((Jp)>>2)];var Jm=Fy;var Jk=(Jo)*(Jm);var Ji=LY;var Jg=((Ji+8)&4294967295);var Je=pB[((Jg)>>2)];var Jc=LY;var Ja=((Jc+24)&4294967295);var I6=pB[((Ja)>>2)];var I5=(Je)*(I6);var I4=(Jk)+(I5);var I2=LY;var I0=((I2+16)&4294967295);var IY=pB[((I0)>>2)];var IW=LY;var IU=((IW+32)&4294967295);var IS=pB[((IU)>>2)];var IQ=(IY)*(IS);var IM=(I4)+(IQ);Ep=IM;var IK=LY;var IJ=((IK+24)&4294967295);var IH=pB[((IJ)>>2)];var IF=LY;var ID=((IF+32)&4294967295);pB[((ID)>>2)]=IH;var IB=LY;var Iz=((IB+24)&4294967295);var Ix=Ep;pB[((Iz)>>2)]=Ix;var Iv=Ep;FM=Iv;var Du=FM;Ut=Du;var Ev=Ut;var Dt=Rb;var Ds=(Ev)-(Dt);Rb=Ds;var Dr=NI;var Dq=(((Dr)+1)&4294967295);NI=Dq;var Dp=(((Dq))|0)<=16;if(Dp){GB=50;continue $bb16$72}else{GB=51;break $bb16$72}}var Do=pB[((((tu+104)&4294967295))>>2)];var Dn=pB[((nn)>>2)];var Dl=(Do)*(Dn);U9=Dl;var Dk=U9;var Dh=Rb;var Dg=(Dk)-(Dh);Rb=Dg;var Df=Rb;J8=((tu+188+1216)&4294967295);JZ=Df;var De=J8;var Dd=((De)&4294967295);var Dc=pB[((Dd)>>2)];var Db=JZ;var Da=(Dc)*(Db);var C8=J8;var C7=((C8+8)&4294967295);var C3=pB[((C7)>>2)];var C2=J8;var C1=((C2+24)&4294967295);var C0=pB[((C1)>>2)];var CZ=(C3)*(C0);var CY=(Da)+(CZ);var CX=J8;var CW=((CX+16)&4294967295);var CV=pB[((CW)>>2)];var CU=J8;var CT=((CU+32)&4294967295);var CS=pB[((CT)>>2)];var CR=(CV)*(CS);var CQ=(CY)+(CR);FT=CQ;var CP=J8;var CO=((CP+24)&4294967295);var CN=pB[((CO)>>2)];var CM=J8;var CL=((CM+32)&4294967295);pB[((CL)>>2)]=CN;var CK=J8;var CJ=((CK+24)&4294967295);var CI=FT;pB[((CJ)>>2)]=CI;var CH=FT;FK=CH;var CG=FK;Uu=CG;var Ew=Uu;Rb=Ew;var CF=uA[((((tK+52)&4294967295))>>2)];var CE=(((CF))|0);var CD=Rb;var CC=(CE)*(CD);var CB=pB[((((tu+152)&4294967295))>>2)];var CA=(CC)*(CB);var Cp=(((CA))|0);var Co=(((Cp))|0);Tn=Co;KS=0;var Cn=uA[((((tK+40)&4294967295))>>2)];var Cm=uA[((((tK+28)&4294967295))>>2)];var Cl=(((Cn))|0)<(((Cm))|0);if(Cl){GB=52}else{GB=56}if(GB==52){var Ck=uA[((((tK+32)&4294967295))>>2)];var Cj=(((Ck))|0)==0;var Ci=uA[((((tK+24)&4294967295))>>2)];var Ch=xk[((((tK+40)&4294967295))>>2)];if(Cj){GB=53}else{GB=54}if(GB==53){var Cg=(((Ch)+1)&4294967295);var B4=((Ci+Cg)&4294967295);var B3=la[((B4)>>0)];MA=B3;var B2=uA[((((tK+24)&4294967295))>>2)];var B1=uA[((((tK+40)&4294967295))>>2)];var B0=((B2+B1)&4294967295);var BZ=ll[((B0)>>0)];var BY=oD((BZ),8,0);var BX=MA;var BW=iB((BX),8,0);var BV=(((BW)*256)&4294967295);var BK=(((BV)+(BY))&4294967295);IL=BK;var BJ=uA[((((tK+40)&4294967295))>>2)];var BI=(((BJ)+2)&4294967295);uA[((((tK+40)&4294967295))>>2)]=BI}else{if(GB==54){var BH=((Ci+Ch)&4294967295);var BG=la[((BH)>>0)];var BF=iB((BG),8,0);var BE=uA[((((tK+32)&4294967295))>>2)];var BD=(((BF)*(BE))&4294967295);IL=BD;var BC=(((Ch)+1)&4294967295);uA[((((tK+40)&4294967295))>>2)]=BC}}var BB=uA[((((tK+56)&4294967295))>>2)];var Bq=IL;var Bp=(((Bq)*(BB))&4294967295);var Bo=(((((Bp))|0)/1024)|0);KS=Bo;var Bn=uA[((((tK+36)&4294967295))>>2)];var Bm=KS;var Bl=(((Bm)*(Bn))&4294967295);var Bk=(((((Bl))|0)/40)|0);KS=Bk;var Bj=KS;var Bi=(((Bj))|0);var Bh=Tn;var A5=(Bi)+(Bh);Tn=A5}var A4=uA[((((tu+180)&4294967295))>>2)];var A3=(((A4))|0)>0;if(A3){GB=57}else{GB=58}if(GB==57){var A2=uA[((((tu+180)&4294967295))>>2)];var A1=(((A2)-1)&4294967295);uA[((((tu+180)&4294967295))>>2)]=A1;var A0=uA[((((tu+180)&4294967295))>>2)];var AZ=(((A0))|0);var AY=Tn;var AX=(AZ)*(AY);var AW=(AX)/64;Tn=AW}var Q9=Tn;var Q8=(((Q9))|0);var Q7=uA[((i3)>>2)];var Q6=((p7+Q7*2)&4294967295);var Q5=uW[((Q6)>>1)];var Q4=iB((Q5),16,0);var Q3=uA[((Ar)>>2)];var Q2=(((Q4)*(Q3))&4294967295);var Q1=(((Q2))|0)>>8;var Q0=(((Q1)+(Q8))&4294967295);LN=Q0;var QY=(((Q7)+1)&4294967295);uA[((i3)>>2)]=QY;var QX=(((QY))|0)>5499;if(QX){PK=58;GB=59}else{PK=58;GB=60}if(GB==59){uA[((i3)>>2)]=0;var RN=LN;PK=59}var QW=PK==59?RN:(Q0);var QV=(((QW))|0)<-32768;if(QV){GB=61}else{GB=62}$bb29_thread$$bb29$88:do{if(GB==61){LN=-32768}else{if(GB==62){var KO=LN;var QU=(((KO))|0)>32767;if(!(QU)){GB=64;break $bb29_thread$$bb29$88}LN=32767}}}while(0);var QT=uA[((xH)>>2)];var QS=LN;var QR=(((QS))&255);la[((QT)>>0)]=QR;var QQ=((QT+1)&4294967295);uA[((xH)>>2)]=QQ;var QP=uA[((xH)>>2)];var QN=LN;var QM=(((QN))|0)>>8;var QL=(((QM))&255);la[((QP)>>0)]=QL;var QK=((QP+1)&4294967295);uA[((xH)>>2)]=QK;var QJ=uA[((pa)>>2)];var QI=LN;var QH=(((QI))&65535);var QG=((p7+QJ*2)&4294967295);uW[((QG)>>1)]=QH;var QF=(((QJ)+1)&4294967295);uA[((pa)>>2)]=QF;var QD=(((QF))|0)>5499;if(QD){GB=65}else{GB=66}if(GB==65){uA[((pa)>>2)]=0}var QC=uA[((ks)>>2)];var QB=(((QC)+1)&4294967295);uA[((ks)>>2)]=QB;var QA=xk[((xH)>>2)];var Qz=xk[((kU)>>2)];var Qy=(QA)>=(Qz);if(Qy){GB=67;break $bb36$2}var Qx=uA[((((tu+36)&4294967295))>>2)];var Qw=(((Qx)+1)&4294967295);uA[((((tu+36)&4294967295))>>2)]=Qw;GB=69;continue $bb36$2}if(GB==67){Fu=1}else{if(GB==70){Fu=0}}var Qq=Fu;E7=Qq;var Om=E7;return Om;return null}function kf(FQ){var BO=vp;vp+=56;n1(BO,0,56);var Bd;var Jg;var Cy;var EY;var Cb;var Dk;var Kt;var ED;var Gh;var DO;var GN;var IR;var Ht;var CK;var CU;var B6;var CI;var H4;var Gm;var CH;var Ip;var BA;var Cx;var A8;var Dh;var BM;var IC;var CG;var F4;var BB;var CF;var KG;var Kh;var Jo;var FF;var F8;var CE;var KI;var CD;var Dd;var Gg=BO;var JJ;var Kg;var BN;var Ik;var A1;var CC;var A5;var Ba;var BZ;var Cc;var CY;var FR;BN=FQ;var CB=BN;var CA=(((CB))|0)==0;if(CA){Bd=1}else{Bd=52}if(Bd==1){uA[((ks)>>2)]=0}$bb28$4:while(1){var AT=uA[((ks)>>2)];var AR=uA[((eV)>>2)];var AP=(((AT))|0)<(((AR))|0);if(!(AP)){Bd=53;break $bb28$4}var Cz=uA[((((tK+4)&4294967295))>>2)];var FE=(((Cz)*10)&4294967295);var FD=(((((FE))|0)/4096)|0);uA[((((uu)&4294967295))>>2)]=FD;CY=0;$bb3$7:while(1){var FC=CY;var FB=CY;var FA=((um+FB*80)&4294967295);var Fz=((FA)&4294967295);var Fy=uA[((Fz)>>2)];var Fx=((((uu+8)&4294967295)+FC*4)&4294967295);uA[((Fx)>>2)]=Fy;var Fw=CY;var Fv=(((Fw))|0)<=3;if(Fv){Bd=4}else{Bd=5}if(Bd==4){var Fu=CY;var Ft=CY;var Fs=((um+Ft*80)&4294967295);var Fr=((Fs+4)&4294967295);var Fq=uA[((Fr)>>2)];var Fp=((((uu+48)&4294967295)+Fu*4)&4294967295);uA[((Fp)>>2)]=Fq}var Fo=CY;var Fn=(((Fo)+1)&4294967295);CY=Fn;var Fm=(((Fn))|0)<=5;if(Fm){Bd=3;continue $bb3$7}else{Bd=6;break $bb3$7}}CY=1;$bb8$13:while(1){var Fl=CY;var Fk=((((uu+88)&4294967295)+Fl*4)&4294967295);uA[((Fk)>>2)]=0;var Fj=CY;var Fi=(((Fj)+1)&4294967295);CY=Fi;var Fh=(((Fi))|0)<=6;if(Fh){Bd=7;continue $bb8$13}else{Bd=8;break $bb8$13}}var Fg=uA[((((yv)&4294967295))>>2)];uA[((((uu+4)&4294967295))>>2)]=Fg;var Ff=uA[((((yv+24)&4294967295))>>2)];uA[((((uu+196)&4294967295))>>2)]=Ff;var Fe=uA[((((yv+28)&4294967295))>>2)];uA[((((uu+184)&4294967295))>>2)]=Fe;var Fd=uA[((((yv+32)&4294967295))>>2)];uA[((((uu+192)&4294967295))>>2)]=Fd;var Fc=uA[((((yv+12)&4294967295))>>2)];uA[((((uu+168)&4294967295))>>2)]=Fc;var Fb=uA[((((yv+36)&4294967295))>>2)];uA[((((uu+176)&4294967295))>>2)]=Fb;var EX=uA[((((yv+16)&4294967295))>>2)];uA[((((uu+188)&4294967295))>>2)]=EX;var EW=uA[((((yv+8)&4294967295))>>2)];uA[((((uu+180)&4294967295))>>2)]=EW;var EV=uA[((((yv+20)&4294967295))>>2)];uA[((((uu+172)&4294967295))>>2)]=EV;BZ=0;$bb11$16:while(1){var EU=BZ;var ET=BZ;var ES=((um+ET*80)&4294967295);var ER=((ES+16)&4294967295);var EQ=pB[((ER)>>2)];var EP=BZ;var EO=((um+EP*80)&4294967295);var EC=((EO+48)&4294967295);var EB=pB[((EC)>>2)];var EA=(EQ)+(EB);var Ez=((um+EU*80)&4294967295);var Ey=((Ez+16)&4294967295);pB[((Ey)>>2)]=EA;var Ex=BZ;var Ew=BZ;var Ev=((um+Ew*80)&4294967295);var Eu=((Ev+16)&4294967295);var Et=pB[((Eu)>>2)];var Eh=(((Et))|0);var Eg=((um+Ex*80)&4294967295);var Ef=((Eg)&4294967295);uA[((Ef)>>2)]=Eh;var Ee=BZ;var Ed=BZ;var Ec=((um+Ed*80)&4294967295);var Eb=((Ec+24)&4294967295);var Ea=pB[((Eb)>>2)];var D9=BZ;var D8=((um+D9*80)&4294967295);var DX=((D8+56)&4294967295);var DW=pB[((DX)>>2)];var DV=(Ea)+(DW);var DU=((um+Ee*80)&4294967295);var DT=((DU+24)&4294967295);pB[((DT)>>2)]=DV;var DS=BZ;var DR=BZ;var DQ=((um+DR*80)&4294967295);var DP=((DQ+24)&4294967295);var DN=pB[((DP)>>2)];var DC=(((DN))|0);var DB=((um+DS*80)&4294967295);var DA=((DB+4)&4294967295);uA[((DA)>>2)]=DC;var Dz=BZ;var Dy=BZ;var Dx=((um+Dy*80)&4294967295);var Dw=((Dx+40)&4294967295);var Dv=pB[((Dw)>>2)];var Du=BZ;var Dt=((um+Du*80)&4294967295);var Dg=((Dt+72)&4294967295);var Df=pB[((Dg)>>2)];var De=(Dv)+(Df);var Dc=((um+Dz*80)&4294967295);var Db=((Dc+40)&4294967295);pB[((Db)>>2)]=De;var Da=BZ;var C9=BZ;var C8=((um+C9*80)&4294967295);var C7=((C8+40)&4294967295);var C6=pB[((C7)>>2)];var H7=(((C6))|0);var H5=((um+Da*80)&4294967295);var H2=((H5+12)&4294967295);uA[((H2)>>2)]=H7;var H0=BZ;var HY=BZ;var HW=((um+HY*80)&4294967295);var HU=((HW+32)&4294967295);var HS=pB[((HU)>>2)];var HQ=BZ;var HP=((um+HQ*80)&4294967295);var HM=((HP+64)&4294967295);var HK=pB[((HM)>>2)];var HI=(HS)+(HK);var HG=((um+H0*80)&4294967295);var HE=((HG+32)&4294967295);pB[((HE)>>2)]=HI;var HC=BZ;var HA=BZ;var Hy=((um+HA*80)&4294967295);var Hw=((Hy+32)&4294967295);var Hv=pB[((Hw)>>2)];var Hq=(((Hv))|0);var Ho=((um+HC*80)&4294967295);var Hm=((Ho+8)&4294967295);uA[((Hm)>>2)]=Hq;var Hk=BZ;var Hi=(((Hk)+1)&4294967295);BZ=Hi;var Hg=(((Hi))|0)<=8;if(Hg){Bd=9;continue $bb11$16}else{Bd=10;break $bb11$16}}CY=0;$bb14$19:while(1){var He=CY;var Hc=CY;var Ha=((yH+Hc*8)&4294967295);var G9=pB[((Ha)>>2)];var G6=CY;var G4=((zi+G6*8)&4294967295);var G2=pB[((G4)>>2)];var G0=(G9)+(G2);var GY=((yH+He*8)&4294967295);pB[((GY)>>2)]=G0;var GW=CY;var GU=CY;var GS=((yH+GU*8)&4294967295);var GQ=pB[((GS)>>2)];var GP=(((GQ))|0);var GM=((yv+GW*4)&4294967295);uA[((GM)>>2)]=GP;var GL=CY;var GK=(((GL)+1)&4294967295);CY=GK;var GJ=(((GK))|0)<=9;if(GJ){Bd=11;continue $bb14$19}else{Bd=12;break $bb14$19}}CY=0;$bb17$22:while(1){var GI=CY;var GH=CY;var GG=((um+GH*80)&4294967295);var GF=((GG)&4294967295);var GE=uA[((GF)>>2)];var GD=((((uu+208)&4294967295)+GI*4)&4294967295);uA[((GD)>>2)]=GE;var GC=CY;var GB=(((GC))|0)<=3;if(GB){Bd=14}else{Bd=15}if(Bd==14){var GA=CY;var Gz=CY;var Gy=((um+Gz*80)&4294967295);var Gx=((Gy+4)&4294967295);var Gw=uA[((Gx)>>2)];var Gv=((((uu+248)&4294967295)+GA*4)&4294967295);uA[((Gv)>>2)]=Gw}var Gu=CY;var Gt=(((Gu)+1)&4294967295);CY=Gt;var Gs=(((Gt))|0)<=6;if(Gs){Bd=13;continue $bb17$22}else{Bd=16;break $bb17$22}}var Gr=uA[((((tK+8)&4294967295))>>2)];var Gq=uA[((((tK+12)&4294967295))>>2)];var Gp=(((Gq)+(Gr))&4294967295);uA[((((tK+8)&4294967295))>>2)]=Gp;var Go=uA[((((tK+8)&4294967295))>>2)];var Gn=(((Go))|0)>>8;CY=Gn;var Gl=CY;var Gk=(((Gl))|0)>127;var Gj=oD((Gk),1,0);Ba=Gj;var Gi=Ba;var JV=iB((Gi),8,0)!=0;if(JV){Bd=17}else{Bd=18}if(Bd==17){CY=127}var Gf=uA[((((tK)&4294967295))>>2)];var Ge=CY;var Gd=((Gf+Ge)&4294967295);var Gc=ll[((Gd)>>0)];var Gb=oD((Gc),8,0);var Ga=uA[((((tK+20)&4294967295))>>2)];var F9=(((Gb)*(Ga))&4294967295);Cc=F9;var F7=Cc;var F6=(((F7))|0)>>8;var F5=uA[((((tK+16)&4294967295))>>2)];var F3=(((F6)+(F5))&4294967295);uA[((((tK+4)&4294967295))>>2)]=F3;var F2=uA[((eV)>>2)];var F1=uA[((ks)>>2)];var F0=(((F2)-(F1))&4294967295);uA[((((tu+28)&4294967295))>>2)]=F0;var FY=(((F0))|0)>64;if(FY){Bd=19}else{Bd=20}if(Bd==19){uA[((((tu+28)&4294967295))>>2)]=64}Dd=uu;var FX=Dd;var FV=((FX)&4294967295);var FU=uA[((FV)>>2)];var FT=(((((FU))|0)/10)|0);uA[((((tu+176)&4294967295))>>2)]=FT;var FS=Dd;var FP=((FS+4)&4294967295);var FO=uA[((FP)>>2)];var FN=(((FO)-7)&4294967295);var FM=Dd;var FL=((FM+204)&4294967295);uA[((FL)>>2)]=FN;var FK=Dd;var FJ=((FK+204)&4294967295);var FI=uA[((FJ)>>2)];var FH=(((FI))|0)<0;if(FH){Bd=21}else{Bd=22}if(Bd==21){var FG=Dd;var AX=((FG+204)&4294967295);uA[((AX)>>2)]=0}var AV=Dd;var AS=((AV+168)&4294967295);var AQ=uA[((AS)>>2)];CE=AQ;var AO=CE;var AN=(((AO))|0)<0;var AL=CE;var AJ=(((AL))|0)>87;var I3=(AN)|(AJ);if(I3){Bd=23}else{Bd=24}if(Bd==23){CD=0}else{if(Bd==24){var AH=CE;var e=((bL+AH*2)&4294967295);var KZ=uW[((e)>>1)];var KX=iB((KZ),16,0);var KV=(KX)*0.001;CD=KV}}var KT=CD;KI=KT;var Er=KI;var KR=(Er)*0.05;pB[((((tu+128)&4294967295))>>2)]=KR;var KP=Dd;var KN=((KP+184)&4294967295);var KL=uA[((KN)>>2)];F4=KL;var KK=F4;var KJ=(((KK))|0)<0;var KF=F4;var KE=(((KF))|0)>87;var Kx=(KJ)|(KE);if(Kx){Bd=26}else{Bd=27}if(Bd==26){CF=0}else{if(Bd==27){var KD=F4;var KC=((bL+KD*2)&4294967295);var KB=uW[((KC)>>1)];var KA=iB((KB),16,0);var Kz=(KA)*0.001;CF=Kz}}var Ky=CF;BB=Ky;var FZ=BB;var Kw=(FZ)*0.25;pB[((((tu+136)&4294967295))>>2)]=Kw;var Kv=Dd;var Ks=((Kv+196)&4294967295);var Kr=uA[((Ks)>>2)];BM=Kr;var Kp=BM;var Ko=(((Kp))|0)<0;var Kn=BM;var Km=(((Kn))|0)>87;var Hu=(Ko)|(Km);if(Hu){Bd=29}else{Bd=30}if(Bd==29){CG=0}else{if(Bd==30){var Kl=BM;var Kk=((bL+Kl*2)&4294967295);var Kj=uW[((Kk)>>1)];var Ki=iB((Kj),16,0);var Kf=(Ki)*0.001;CG=Kf}}var Ke=CG;IC=Ke;var Bf=IC;pB[((((tu+120)&4294967295))>>2)]=Bf;var Kd=Dd;var Kc=((Kd+192)&4294967295);var Kb=uA[((Kc)>>2)];H4=Kb;var Ka=H4;var J9=(((Ka))|0)<0;var J8=H4;var J7=(((J8))|0)>87;var Kq=(J9)|(J7);if(Kq){Bd=32}else{Bd=33}if(Bd==32){CH=0}else{if(Bd==33){var J6=H4;var J5=((bL+J6*2)&4294967295);var J4=uW[((J5)>>1)];var J3=iB((J4),16,0);var J2=(J3)*0.001;CH=J2}}var J1=CH;Gm=J1;var E6=Gm;var J0=(E6)*0.05;pB[((((tu+104)&4294967295))>>2)]=J0;Kg=0;$bb2_i$53:while(1){var JZ=Kg;var JY=Kg;var JX=Dd;var JW=((JX+88)&4294967295);var JU=((JW+JY*4)&4294967295);var JT=uA[((JU)>>2)];CU=JT;var JS=CU;var JR=(((JS))|0)<0;var JQ=CU;var JP=(((JQ))|0)>87;var GO=(JR)|(JP);if(GO){Bd=36}else{Bd=37}if(Bd==36){CI=0}else{if(Bd==37){var JO=CU;var JN=((bL+JO*2)&4294967295);var JM=uW[((JN)>>1)];var JL=iB((JM),16,0);var JK=(JL)*0.001;CI=JK}}var JI=CI;B6=JI;var Jz=B6;var JH=Kg;var JG=((bH+JH*8)&4294967295);var JF=pB[((JG)>>2)];var JE=(Jz)*(JF);var JD=((Gg+JZ*8)&4294967295);pB[((JD)>>2)]=JE;var JC=Kg;var JB=(((JC)+1)&4294967295);Kg=JB;var JA=(((JB))|0)<=6;if(JA){Bd=35;continue $bb2_i$53}else{Bd=39;break $bb2_i$53}}var Jy=Dd;var Jx=((Jy+200)&4294967295);var Jw=uA[((Jx)>>2)];var Jv=(((Jw)-3)&4294967295);JJ=Jv;var Ju=JJ;var Jt=(((Ju))|0)<=0;if(Jt){Bd=40}else{Bd=41}if(Bd==40){JJ=57}var Js=JJ;IR=Js;var Jr=IR;var Jq=(((Jr))|0)<0;var Jp=IR;var Jn=(((Jp))|0)>87;var Be=(Jq)|(Jn);if(Be){Bd=42}else{Bd=43}if(Bd==42){CK=0}else{if(Bd==43){var Jm=IR;var Jl=((bL+Jm*2)&4294967295);var Jk=uW[((Jl)>>1)];var Jj=iB((Jk),16,0);var Ji=(Jj)*0.001;CK=Ji}}var Jh=CK;Ht=Jh;var FW=Ht;var Jf=uA[((((tu+184)&4294967295))>>2)];var Je=(((Jf))|0);var Jd=(FW)/(Je);pB[((((tu+152)&4294967295))>>2)]=Jd;Kg=1;$bb7_i$67:while(1){var E9=Kg;var E8=((((tu+188)&4294967295)+E9*64)&4294967295);var E7=Kg;var E5=Dd;var E4=((E5+48)&4294967295);var E3=((E4+E7*4)&4294967295);var E2=uA[((E3)>>2)];var E1=Kg;var E0=Dd;var EZ=((E0+8)&4294967295);var EN=((EZ+E1*4)&4294967295);var EM=uA[((EN)>>2)];Kt=EM;ED=E2;Gh=E8;var EL=pB[((((tu+72)&4294967295))>>2)];var EK=ED;var EJ=(((EK))|0);var EI=(EL)*(EJ);GN=EI;var EH=GN;var EG=ql(EH);DO=EG;var EF=DO;var EE=DO;var Es=(EF)*(EE);var Eq=0-(Es);var Ep=Gh;var Eo=((Ep+16)&4294967295);pB[((Eo)>>2)]=Eq;var En=pB[((((tu+80)&4294967295))>>2)];var Em=Kt;var El=(((Em))|0);var Ek=(En)*(El);GN=Ek;var Ej=GN;var Ei=h0(Ej);var D7=DO;var D6=(Ei)*(D7);var D5=(D6)*2;var D4=Gh;var D3=((D4+8)&4294967295);pB[((D3)>>2)]=D5;var D2=Gh;var D1=((D2+8)&4294967295);var D0=pB[((D1)>>2)];var DZ=1-(D0);var DY=Gh;var DM=((DY+16)&4294967295);var DL=pB[((DM)>>2)];var DK=(DZ)-(DL);var DJ=Gh;var DI=((DJ)&4294967295);pB[((DI)>>2)]=DK;var DH=Kg;var DG=(((DH))|0)<=5;if(DG){Bd=46}else{Bd=47}if(Bd==46){var DF=Kg;var DE=((((tu+1468)&4294967295)+DF*64)&4294967295);var DD=Kg;var Ds=Dd;var Dr=((Ds+248)&4294967295);var Dq=((Dr+DD*4)&4294967295);var Dp=uA[((Dq)>>2)];var Do=Kg;var Dn=Dd;var Dm=((Dn+208)&4294967295);var Dl=((Dm+Do*4)&4294967295);var Dj=uA[((Dl)>>2)];Jg=Dj;Cy=Dp;EY=DE;var Di=pB[((((tu+72)&4294967295))>>2)];var C5=Cy;var C4=(((C5))|0);var C3=(Di)*(C4);Dk=C3;var C2=Dk;var C1=ql(C2);Cb=C1;var C0=Cb;var CZ=Cb;var CX=(C0)*(CZ);var CW=0-(CX);var CV=EY;var CT=((CV+16)&4294967295);pB[((CT)>>2)]=CW;var CS=pB[((((tu+80)&4294967295))>>2)];var CR=Jg;var CQ=(((CR))|0);var CP=(CS)*(CQ);Dk=CP;var CO=Dk;var CN=h0(CO);var CM=Cb;var CL=(CN)*(CM);var CJ=(CL)*2;var Cw=EY;var Cv=((Cw+8)&4294967295);pB[((Cv)>>2)]=CJ;var Cu=EY;var Ct=((Cu+8)&4294967295);var Cs=pB[((Ct)>>2)];var Cr=1-(Cs);var Cq=EY;var Cp=((Cq+16)&4294967295);var Co=pB[((Cp)>>2)];var Cn=(Cr)-(Co);var Cm=EY;var Cl=((Cm)&4294967295);pB[((Cl)>>2)]=Cn;var Ck=Kg;var Cj=Kg;var Ci=((((tu+1468)&4294967295)+Cj*64)&4294967295);var Ch=((Ci)&4294967295);var Cg=pB[((Ch)>>2)];var Cf=Kg;var Ce=((((tu+188)&4294967295)+Cf*64)&4294967295);var Cd=((Ce)&4294967295);var Jc=pB[((Cd)>>2)];var Jb=(Cg)-(Jc);var Ja=(Jb)/64;var I9=((((tu+188)&4294967295)+Ck*64)&4294967295);var I8=((I9+40)&4294967295);pB[((I8)>>2)]=Ja;var I7=Kg;var I6=Kg;var I5=((((tu+1468)&4294967295)+I6*64)&4294967295);var I4=((I5+8)&4294967295);var I2=pB[((I4)>>2)];var I1=Kg;var I0=((((tu+188)&4294967295)+I1*64)&4294967295);var IZ=((I0+8)&4294967295);var IY=pB[((IZ)>>2)];var IX=(I2)-(IY);var IW=(IX)/64;var IV=((((tu+188)&4294967295)+I7*64)&4294967295);var IU=((IV+48)&4294967295);pB[((IU)>>2)]=IW;var IT=Kg;var IS=Kg;var IQ=((((tu+1468)&4294967295)+IS*64)&4294967295);var IP=((IQ+16)&4294967295);var IO=pB[((IP)>>2)];var IN=Kg;var IM=((((tu+188)&4294967295)+IN*64)&4294967295);var IL=((IM+16)&4294967295);var IK=pB[((IL)>>2)];var IJ=(IO)-(IK);var II=(IJ)/64;var IH=((((tu+188)&4294967295)+IT*64)&4294967295);var IG=((IH+56)&4294967295);pB[((IG)>>2)]=II}var IF=Kg;var IE=(((IF)+1)&4294967295);Kg=IE;var ID=(((IE))|0)<=9;if(ID){Bd=45;continue $bb7_i$67}else{Bd=48;break $bb7_i$67}}var IB=Dd;var IA=((IB+48)&4294967295);var Iz=((IA)&4294967295);var Iy=uA[((Iz)>>2)];var Ix=Dd;var Iw=((Ix+8)&4294967295);var Iv=((Iw)&4294967295);var Iu=uA[((Iv)>>2)];l1(Iu,Iy,((tu+188)&4294967295));var It=Dd;var Is=((It+248)&4294967295);var Ir=((Is)&4294967295);var Iq=uA[((Ir)>>2)];var Io=Dd;var In=((Io+208)&4294967295);var Im=((In)&4294967295);var Il=uA[((Im)>>2)];l1(Il,Iq,((tu+1468)&4294967295));var Ij=pB[((((tu+1468)&4294967295))>>2)];var Ii=pB[((((tu+188)&4294967295))>>2)];var Ih=(Ij)-(Ii);var Ig=(Ih)/64;pB[((((tu+188+40)&4294967295))>>2)]=Ig;var If=pB[((((tu+1468+8)&4294967295))>>2)];var Ie=pB[((((tu+188+8)&4294967295))>>2)];var Id=(If)-(Ie);var Ic=(Id)/64;pB[((((tu+188+48)&4294967295))>>2)]=Ic;var Ib=pB[((((tu+1468+16)&4294967295))>>2)];var Ia=pB[((((tu+188+16)&4294967295))>>2)];var H9=(Ib)-(Ia);var H8=(H9)/64;pB[((((tu+188+56)&4294967295))>>2)]=H8;Kg=0;while(1){var H6=Kg;var H3=(((H6)+10)&4294967295);var H1=((((tu+188)&4294967295)+H3*64)&4294967295);var HZ=Kg;var HX=Dd;var HV=((HX+128)&4294967295);var HT=((HV+HZ*4)&4294967295);var HR=uA[((HT)>>2)];var HO=Kg;var HN=Dd;var HL=((HN+8)&4294967295);var HJ=((HL+HO*4)&4294967295);var HH=uA[((HJ)>>2)];Ip=HH;BA=HR;Cx=H1;var HF=pB[((((tu+72)&4294967295))>>2)];var HD=BA;var HB=(((HD))|0);var Hz=(HF)*(HB);Dh=Hz;var Hx=Dh;var Hs=ql(Hx);A8=Hs;var Hr=A8;var Hp=A8;var Hn=(Hr)*(Hp);var Hl=0-(Hn);var Hj=Cx;var Hh=((Hj+16)&4294967295);pB[((Hh)>>2)]=Hl;var Hf=pB[((((tu+80)&4294967295))>>2)];var Hd=Ip;var Hb=(((Hd))|0);var G8=(Hf)*(Hb);Dh=G8;var G7=Dh;var G5=h0(G7);var G3=A8;var G1=(G5)*(G3);var GZ=(G1)*2;var GX=Cx;var GV=((GX+8)&4294967295);pB[((GV)>>2)]=GZ;var GT=Cx;var GR=((GT+8)&4294967295);var Ca=pB[((GR)>>2)];var B9=1-(Ca);var B8=Cx;var B7=((B8+16)&4294967295);var B5=pB[((B7)>>2)];var B4=(B9)-(B5);var B3=Cx;var B2=((B3)&4294967295);pB[((B2)>>2)]=B4;var B1=Kg;var B0=(((B1)+10)&4294967295);var BY=Kg;var BX=(((BY)+10)&4294967295);var BW=((((tu+188)&4294967295)+BX*64)&4294967295);var BV=((BW)&4294967295);var BU=pB[((BV)>>2)];var BT=Kg;var BS=((Gg+BT*8)&4294967295);var BR=pB[((BS)>>2)];var BQ=(BU)*(BR);var BP=((((tu+188)&4294967295)+B0*64)&4294967295);var BL=((BP)&4294967295);pB[((BL)>>2)]=BQ;var BK=Kg;var BJ=(((BK)+1)&4294967295);Kg=BJ;var BI=(((BJ))|0)<=6;if(BI){Bd=49;continue}else{Bd=50;break}}var BH=uA[((((tu+8)&4294967295))>>2)];var BG=(((((BH))|0)/2)|0);KG=0;Kh=BG;Jo=((tu+188+1216)&4294967295);var BF=pB[((((tu+72)&4294967295))>>2)];var BE=Kh;var BD=(((BE))|0);var BC=(BF)*(BD);F8=BC;var Bz=F8;var By=ql(Bz);FF=By;var Bx=FF;var Bw=FF;var Bv=(Bx)*(Bw);var Bu=0-(Bv);var Bt=Jo;var Bs=((Bt+16)&4294967295);pB[((Bs)>>2)]=Bu;var Br=pB[((((tu+80)&4294967295))>>2)];var Bq=KG;var Bp=(((Bq))|0);var Bo=(Br)*(Bp);F8=Bo;var Bn=F8;var Bm=h0(Bn);var Bl=FF;var Bk=(Bm)*(Bl);var Bj=(Bk)*2;var Bi=Jo;var Bh=((Bi+8)&4294967295);pB[((Bh)>>2)]=Bj;var Bg=Jo;var Bc=((Bg+8)&4294967295);var Bb=pB[((Bc)>>2)];var A9=1-(Bb);var A7=Jo;var A6=((A7+16)&4294967295);var A4=pB[((A6)>>2)];var A3=(A9)-(A4);var A2=Jo;var A0=((A2)&4294967295);pB[((A0)>>2)]=A3;var AZ=tU();var AY=(((AZ))|0)==1;var AW=oD((AY),1,0);A5=AW;var AU=A5;var KH=iB((AU),8,0)!=0;if(KH){Bd=51;break $bb28$4}else{Bd=52;continue $bb28$4}}$bb27$$bb29$76:do{if(Bd==51){CC=1}else{if(Bd==53){var AM=uA[((cd)>>2)];var AK=(((AM))|0)>0;if(AK){Bd=54}else{Bd=56}$bb30$$bb33$79:do{if(Bd==54){FR=64;var AI=FR;uA[((((tu+180)&4294967295))>>2)]=AI;uA[((cd)>>2)]=0;var i=uA[((ks)>>2)];var K0=FR;var KY=(((i)-(K0))&4294967295);uA[((ks)>>2)]=KY;var KW=FR;uA[((((tu+28)&4294967295))>>2)]=KW;var KU=tU();var KS=(((KU))|0)==1;var KQ=oD((KS),1,0);A1=KQ;var KO=A1;var Ku=iB((KO),8,0)!=0;if(!(Ku)){Bd=56;break $bb30$$bb33$79}CC=1;Bd=57;break $bb27$$bb29$76}}while(0);CC=0}}}while(0);var KM=CC;Ik=KM;var Fa=Ik;vp=BO;return Fa;return null}function j1(AU,AT,AS,AX,AW){var AY;var A0;var i;var A1;var AL;var AR;var A2;var AQ;A0=AU;i=AT;A1=AS;AL=AX;AR=AW;var AP=A1;var AO=(((AP))|0)==0;if(AO){AY=1}else{AY=2}if(AY==1){var AN=uA[((uR)>>2)];var AM=A0;var AK=i;var AJ=AL;var AI=AR;zY(AM,AK,AJ,AI,AN,1)}var AH=A1;var e=kf(AH);AQ=e;var AZ=AQ;A2=AZ;var AV=A2;return AV;return null}function eQ(AW){var AX=vp;vp+=4100;n1(AX,0,4100);var AT;var AS;var AV=AX;var AU=AX+4096;var AK;AS=AW;var AJ=AU;uA[((AJ)>>2)]=arguments[eQ.length];var AR=uA[((AU)>>2)];var AQ=((AV)&4294967295);var AP=AS;var AO=i8(AQ,AP,AR);var AH=AU;var AN=uE(((iZ)&4294967295),((hO)&4294967295));AK=AN;var AM=((AV)&4294967295);var AL=AK;var AI=jJ(AM,AL);var i=AK;var e=ts(i);vp=AX;return;return}function rb(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+16)&4294967295);var i=pB[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function xW(AH,AK){var AJ;var AI;var AL;AI=AH;AL=AK;var i=AI;var e=((i+16)&4294967295);var AM=AL;pB[((e)>>2)]=AM;return;return}function R(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+24)&4294967295);var i=pB[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function iw(AH,AK){var AJ;var AI;var AL;AI=AH;AL=AK;var i=AI;var e=((i+24)&4294967295);var AM=AL;pB[((e)>>2)]=AM;return;return}function au(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+20)&4294967295);var i=pB[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function cm(AH,AL){var AJ;var AI;var AK;AI=AH;AK=AL;var i=AI;var e=((i+20)&4294967295);var AM=AK;pB[((e)>>2)]=AM;return;return}function P(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+72)&4294967295);var i=uA[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function xw(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+28)&4294967295);var i=uA[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function zG(AK){var AN;var AO;var AL;var AJ;AO=AK;var AI=AO;var AH=((AI+48)&4294967295);var i=uA[((AH)>>2)];AJ=i;var e=AJ;AL=e;var AM=AL;return AM;return null}function dw(Bz,Bb,A3){var A1;var i;var A0;var AS;var Bi;var A2;var AI;var AH;var AY;var AJ;i=Bz;A0=Bb;AS=A3;var Bp=i;var Bo=((Bp+64)&4294967295);var Bn=uA[((Bo)>>2)];var Bm=AS;var Bl=(((((Bn))|0)/(((Bm))|0))|0);Bi=Bl;var Bk=i;var Bj=((Bk+28)&4294967295);var Bg=uA[((Bj)>>2)];var Be=AS;var Bc=(((Be)*(Bg))&4294967295);A2=Bc;var AW=i;var AU=((AW+12)&4294967295);var AR=uA[((AU)>>2)];AJ=AR;AI=0;var AQ=AI;var AP=Bi;var AO=(((AQ))|0)<(((AP))|0);if(AO){A1=1}else{A1=4}$bb$$return$2:do{if(A1==1){$bb$3:while(1){AY=0;AH=0;var AN=AH;var AM=A2;var AL=(((AN))|0)<(((AM))|0);if(AL){A1=2}else{A1=3}$bb1$$bb3$5:do{if(A1==2){while(1){var AK=A0;var e=uW[((AK)>>1)];var By=iB((e),16,0);var Bx=AY;var Bw=(((By)+(Bx))&4294967295);AY=Bw;var Bv=A0;var Bu=((Bv+2)&4294967295);A0=Bu;var Bt=AH;var Bs=(((Bt)+1)&4294967295);AH=Bs;var Br=AH;var Bq=A2;var Bh=(((Br))|0)<(((Bq))|0);if(Bh){A1=2;continue}else{A1=3;break $bb1$$bb3$5}}}}while(0);var Bf=AY;var Bd=A2;var Ba=(((((Bf))|0)/(((Bd))|0))|0);AY=Ba;var A9=AY;var A8=(((A9))&65535);var A7=AJ;uW[((A7)>>1)]=A8;var A6=AJ;var A5=((A6+2)&4294967295);AJ=A5;var A4=AI;var AZ=(((A4)+1)&4294967295);AI=AZ;var AX=AI;var AV=Bi;var AT=(((AX))|0)<(((AV))|0);if(AT){A1=1;continue $bb$3}else{A1=4;break $bb$$return$2}}}}while(0);return;return}function zy(Ba,AJ,Bp,A4,AV){var Bn;var BG;var BD;var BO;var Br;var BF;var A8;var BZ;var BE;var AN;var B0;var Bo;var Bq;var AW;var AL;var Bc;var Bb;var AX;var Bs;BG=Ba;BD=AJ;BO=Bp;Br=A4;BF=AV;B0=0;Bb=1;AX=0;var BY=BD;AN=BY;var BX=AN;var BW=BO;var BV=(((BX))|0)<=(((BW))|0);if(BV){Bn=1}else{Bn=11}$bb$$bb12$2:do{if(Bn==1){$bb$3:while(1){Bc=0;var BU=BG;Bo=BU;var BT=BG;var BS=AN;var BR=((BT+2*BS)&4294967295);Bq=BR;Bs=0;var BQ=Bs;var BC=AN;var BB=(((BQ))|0)<(((BC))|0);if(BB){Bn=2}else{Bn=6}$bb1$$bb6$5:do{if(Bn==2){while(1){var BA=Bo;var Bz=uW[((BA)>>1)];AW=Bz;var By=Bo;var Bx=((By+2)&4294967295);Bo=Bx;var Bw=Bq;var Bv=uW[((Bw)>>1)];AL=Bv;var Bu=Bq;var Bt=((Bu+2)&4294967295);Bq=Bt;var Bm=AW;var Bl=AL;var Bk=iB((Bm),16,0)>=iB((Bl),16,0);if(Bk){Bn=3}else{Bn=4}if(Bn==3){var Bj=AW;var Bi=AL;var Bh=(((Bj)-(Bi))&65535);var Bg=oD((Bh),16,0);BE=Bg}else{if(Bn==4){var Bf=AL;var Be=AW;var Bd=(((Bf)-(Be))&65535);var A9=oD((Bd),16,0);BE=A9}}var A7=BE;var A6=Bc;var A5=(((A6)+(A7))&4294967295);Bc=A5;var A3=Bs;var A2=(((A3)+1)&4294967295);Bs=A2;var A1=Bs;var A0=AN;var AZ=(((A1))|0)<(((A0))|0);if(AZ){Bn=2;continue}else{Bn=6;break $bb1$$bb6$5}}}}while(0);var AY=B0;var AU=Bc;var AT=(((AU)*(AY))&4294967295);var AS=AN;var AR=Bb;var AQ=(((AR)*(AS))&4294967295);var AP=(((AT))>>>0)<(((AQ))>>>0);if(AP){Bn=7}else{Bn=8}if(Bn==7){var AO=Bc;Bb=AO;var AM=AN;B0=AM}var AK=B0;var AI=Bc;var AH=(((AI)*(AK))&4294967295);var i=AN;var e=AX;var B7=(((e)*(i))&4294967295);var B6=(((AH))>>>0)>(((B7))>>>0);if(B6){Bn=9}else{Bn=10}if(Bn==9){var B5=Bc;AX=B5}var B4=AN;var B3=(((B4)+1)&4294967295);AN=B3;var B2=AN;var B1=BO;var BP=(((B2))|0)<=(((B1))|0);if(BP){Bn=1;continue $bb$3}else{Bn=11;break $bb$$bb12$2}}}}while(0);var BN=Bb;var BM=Br;uA[((BM)>>2)]=BN;var BL=AX;var BJ=BF;uA[((BJ)>>2)]=BL;var BI=B0;BZ=BI;var BH=BZ;A8=BH;var BK=A8;return BK;return null}function aN(Bl,Bo){var Be=vp;vp+=8;n1(Be,0,8);var BD;var AP;var BP;var B4;var AL;var BO;var C2;var AT;var A8;var AH;var C1;var Bb;var BC;var Co;var A9;var Ba=Be;var Br=Be+4;var Ce;var B1;var B6;AT=Bl;A8=Bo;var C0=AT;var CZ=((C0+56)&4294967295);var CY=uA[((CZ)>>2)];BC=CY;var CX=AT;var CW=((CX+60)&4294967295);var CV=uA[((CW)>>2)];Co=CV;var CU=AT;var CT=((CU+72)&4294967295);var Cd=uA[((CT)>>2)];A9=Cd;B1=1;var Cc=A9;var Cb=(((Cc))|0)>4000;if(Cb){BD=1}else{BD=2}if(BD==1){var Ca=A9;var B9=(((((Ca))|0)/4000)|0);B1=B9}var B8=AT;var B7=((B8+28)&4294967295);var B5=uA[((B7)>>2)];var B3=(((B5))|0)!=1;if(B3){BD=5}else{BD=3}$bb4$$bb2$5:do{if(BD==3){var B2=B1;var B0=(((B2))|0)!=1;if(B0){BD=5;break $bb4$$bb2$5}var BZ=A8;var BY=BC;var BX=Co;var BW=zy(BZ,BY,BX,Ba,Br);B6=BW;BD=13;break $bb4$$bb2$5}}while(0);$bb4$$bb12$8:do{if(BD==5){var BV=AT;var BU=A8;var BS=B1;dw(BV,BU,BS);var BR=Co;var BQ=B1;var BN=(((((BR))|0)/(((BQ))|0))|0);var BM=BC;var BL=B1;var BK=(((((BM))|0)/(((BL))|0))|0);var BJ=AT;var BI=((BJ+12)&4294967295);var BH=uA[((BI)>>2)];var BG=zy(BH,BK,BN,Ba,Br);B6=BG;var BF=B1;var BE=(((BF))|0)!=1;if(!(BE)){BD=13;break $bb4$$bb12$8}var BB=B6;var BA=B1;var Bz=(((BA)*(BB))&4294967295);B6=Bz;var By=B1;var Bx=(By)<<2;var Bw=B6;var Bv=(((Bw)-(Bx))&4294967295);BC=Bv;var Bu=B1;var Bt=(((Bu)*4)&4294967295);var Bs=B6;var Bn=(((Bt)+(Bs))&4294967295);Co=Bn;var Bm=AT;var Bk=((Bm+56)&4294967295);var Bj=uA[((Bk)>>2)];var Bi=BC;var Bh=(((Bj))|0)>(((Bi))|0);if(Bh){BD=7}else{BD=8}if(BD==7){var Bg=AT;var Bf=((Bg+56)&4294967295);var Bd=uA[((Bf)>>2)];BC=Bd}var Bc=AT;var A7=((Bc+60)&4294967295);var A6=uA[((A7)>>2)];var A5=Co;var A4=(((A6))|0)<(((A5))|0);if(A4){BD=9}else{BD=10}if(BD==9){var A3=AT;var A2=((A3+60)&4294967295);var A1=uA[((A2)>>2)];Co=A1}var A0=AT;var AZ=((A0+28)&4294967295);var AY=uA[((AZ)>>2)];var AX=(((AY))|0)==1;if(AX){BD=11}else{BD=12}if(BD==11){var AW=A8;var AV=BC;var AU=Co;var AS=zy(AW,AV,AU,Ba,Br);B6=AS}else{if(BD==12){var AR=AT;var AQ=A8;dw(AR,AQ,1);var AO=AT;var AN=((AO+12)&4294967295);var AM=uA[((AN)>>2)];var AK=BC;var AJ=Co;var AI=zy(AM,AK,AJ,Ba,Br);B6=AI}}}}while(0);var i=uA[((Br)>>2)];var e=uA[((Ba)>>2)];var C7=AT;var C6=B6;AP=C7;BP=C6;B4=e;AL=i;var C5=AL;var C4=(((C5)*3)&4294967295);var C3=(((((C4))|0)/2)|0);var CS=AP;var CR=((CS+80)&4294967295);var CQ=uA[((CR)>>2)];var CP=(((C3))|0)<(((CQ))|0);if(CP){BD=14}else{BD=16}$bb_i$$bb2_i$21:do{if(BD==14){var CO=AL;var CN=(((CO))|0);var CM=(CN)*3;var CL=AP;var CK=((CL+84)&4294967295);var CJ=uA[((CK)>>2)];var CI=(((CJ))|0);var CH=(CM)*(CI);var CG=AP;var CF=((CG+80)&4294967295);var CE=uA[((CF)>>2)];var CD=(((CE))|0);var CC=B4;var CB=(((CC))|0);var CA=(CD)*(CB);var Cz=(CA)*2;var Cy=(CH)<(Cz);if(!(Cy)){BD=16;break $bb_i$$bb2_i$21}C2=1;BD=17;break $bb_i$$bb2_i$21}}while(0);if(BD==16){C2=0}var Cx=C2;BO=Cx;var BT=BO;var Cw=(((BT))|0)!=0;var Cv=oD((Cw),1,0);Bb=Cv;var Bq=iB((Cv),8,0)!=0;if(Bq){BD=18}else{BD=19}if(BD==18){var Cu=AT;var Ct=((Cu+76)&4294967295);var Cs=uA[((Ct)>>2)];Ce=Cs}else{if(BD==19){var Cr=B6;Ce=Cr}}var Cq=uA[((Ba)>>2)];var Cp=AT;var Cn=((Cp+84)&4294967295);uA[((Cn)>>2)]=Cq;var Cm=uA[((Br)>>2)];var Cl=AT;var Ck=((Cl+80)&4294967295);uA[((Ck)>>2)]=Cm;var Cj=AT;var Ci=((Cj+76)&4294967295);var Ch=B6;uA[((Ci)>>2)]=Ch;var Cg=Ce;C1=Cg;var Cf=C1;AH=Cf;var Bp=AH;vp=Be;return Bp;return null}function ii(Bs,Bk,Bc,AM,AP){var A9;var Bb;var AK;var Be;var Ba;var BE;var AJ;var i;var AN;var AL;var AI;Bb=Bs;AK=Bk;Be=Bc;Ba=AM;BE=AP;AL=0;var Bz=AL;var By=AK;var Bx=(((Bz))|0)<(((By))|0);if(Bx){A9=1}else{A9=4}$bb$$return$2:do{if(A9==1){$bb$3:while(1){var Bw=Be;var Bv=AL;var Bu=((Bw+2*Bv)&4294967295);AJ=Bu;var Bt=BE;var Bq=AL;var Bo=((Bt+2*Bq)&4294967295);i=Bo;var Bm=Ba;var A6=AL;var A4=((Bm+2*A6)&4294967295);AN=A4;AI=0;var A2=AI;var A0=Bb;var AY=(((A2))|0)<(((A0))|0);if(AY){A9=2}else{A9=3}$bb1$$bb3$5:do{if(A9==2){while(1){var AW=AN;var AU=uW[((AW)>>1)];var AS=iB((AU),16,0);var AQ=Bb;var AO=AI;var e=(((AQ)-(AO))&4294967295);var BJ=(((e)*(AS))&4294967295);var BI=i;var BH=uW[((BI)>>1)];var BG=iB((BH),16,0);var BF=AI;var BD=(((BG)*(BF))&4294967295);var BC=(((BD)+(BJ))&4294967295);var BB=Bb;var BA=(((((BC))|0)/(((BB))|0))|0);var Br=(((BA))&65535);var Bp=AJ;uW[((Bp)>>1)]=Br;var Bn=AJ;var Bl=AK;var Bj=((Bn+2*Bl)&4294967295);AJ=Bj;var Bi=AN;var Bh=AK;var Bg=((Bi+2*Bh)&4294967295);AN=Bg;var Bf=i;var Bd=AK;var A8=((Bf+2*Bd)&4294967295);i=A8;var A7=AI;var A5=(((A7)+1)&4294967295);AI=A5;var A3=AI;var A1=Bb;var AZ=(((A3))|0)<(((A1))|0);if(AZ){A9=2;continue}else{A9=3;break $bb1$$bb3$5}}}}while(0);var AX=AL;var AV=(((AX)+1)&4294967295);AL=AV;var AT=AL;var AR=AK;var AH=(((AT))|0)<(((AR))|0);if(AH){A9=1;continue $bb$3}else{A9=4;break $bb$$return$2}}}}while(0);return;return}function sw(Bs,Ba){var AU;var i;var AW;var AV;var Bh;i=Bs;AW=Ba;var Bg=i;var Bf=((Bg+44)&4294967295);var Be=uA[((Bf)>>2)];var Bd=AW;var Bc=(((Bd)+(Be))&4294967295);var Bb=i;var A8=((Bb+32)&4294967295);var A6=uA[((A8)>>2)];var A4=(((Bc))|0)>(((A6))|0);if(A4){AU=1}else{AU=3}$bb$$bb2$2:do{if(AU==1){var AR=i;var AP=((AR+32)&4294967295);var AO=uA[((AP)>>2)];var AN=i;var AM=((AN+32)&4294967295);var AL=uA[((AM)>>2)];var AK=(((AL))|0)>>1;var AJ=AW;var AI=(((AJ)+(AO))&4294967295);var AH=(((AI)+(AK))&4294967295);var e=i;var Br=((e+32)&4294967295);uA[((Br)>>2)]=AH;var Bq=i;var Bp=((Bq+32)&4294967295);var Bo=uA[((Bp)>>2)];var Bn=i;var Bm=((Bn+28)&4294967295);var Bl=uA[((Bm)>>2)];var Bk=(((Bo)*2)&4294967295);var Bj=(((Bk)*(Bl))&4294967295);var A9=i;var A7=((A9)&4294967295);var A5=uA[((A7)>>2)];var A3=A5;var A2=vv(A3,Bj);var A1=A2;var A0=i;var AZ=((A0)&4294967295);uA[((AZ)>>2)]=A1;var AY=i;var AX=((AY)&4294967295);var AT=uA[((AX)>>2)];var AS=(AT)==0;if(!(AS)){AU=3;break $bb$$bb2$2}Bh=0;AU=4;break $bb$$bb2$2}}while(0);if(AU==3){Bh=1}var AQ=Bh;AV=AQ;var Bi=AV;return Bi;return null}function to(Bs,Ba){var AU;var i;var AW;var AV;var Bh;i=Bs;AW=Ba;var Bg=i;var Bf=((Bg+48)&4294967295);var Be=uA[((Bf)>>2)];var Bd=AW;var Bc=(((Bd)+(Be))&4294967295);var Bb=i;var A8=((Bb+40)&4294967295);var A6=uA[((A8)>>2)];var A4=(((Bc))|0)>(((A6))|0);if(A4){AU=1}else{AU=3}$bb$$bb2$2:do{if(AU==1){var AR=i;var AP=((AR+40)&4294967295);var AO=uA[((AP)>>2)];var AN=i;var AM=((AN+40)&4294967295);var AL=uA[((AM)>>2)];var AK=(((AL))|0)>>1;var AJ=AW;var AI=(((AJ)+(AO))&4294967295);var AH=(((AI)+(AK))&4294967295);var e=i;var Br=((e+40)&4294967295);uA[((Br)>>2)]=AH;var Bq=i;var Bp=((Bq+40)&4294967295);var Bo=uA[((Bp)>>2)];var Bn=i;var Bm=((Bn+28)&4294967295);var Bl=uA[((Bm)>>2)];var Bk=(((Bo)*2)&4294967295);var Bj=(((Bk)*(Bl))&4294967295);var A9=i;var A7=((A9+4)&4294967295);var A5=uA[((A7)>>2)];var A3=A5;var A2=vv(A3,Bj);var A1=A2;var A0=i;var AZ=((A0+4)&4294967295);uA[((AZ)>>2)]=A1;var AY=i;var AX=((AY+4)&4294967295);var AT=uA[((AX)>>2)];var AS=(AT)==0;if(!(AS)){AU=3;break $bb$$bb2$2}Bh=0;AU=4;break $bb$$bb2$2}}while(0);if(AU==3){Bh=1}var AQ=Bh;AV=AQ;var Bi=AV;return Bi;return null}function qJ(Bp,A0,A7){var AT;var i;var AR;var AW;var AU;var Be;var AS;i=Bp;AR=A0;AW=A7;var Bd=i;var Bc=AW;var Bb=to(Bd,Bc);var Ba=(((Bb))|0)==0;var A9=oD((Ba),1,0);AS=A9;var A8=AS;var AV=iB((A8),8,0)!=0;if(AV){AT=1}else{AT=2}if(AT==1){Be=0}else{if(AT==2){var A5=i;var A3=((A5+28)&4294967295);var A1=uA[((A3)>>2)];var AQ=AW;var AP=(((A1)*2)&4294967295);var AO=(((AP)*(AQ))&4294967295);var AN=i;var AM=((AN+4)&4294967295);var AL=uA[((AM)>>2)];var AK=i;var AJ=((AK+48)&4294967295);var AI=uA[((AJ)>>2)];var AH=i;var e=((AH+28)&4294967295);var Bo=uA[((e)>>2)];var Bn=(((Bo)*(AI))&4294967295);var Bm=((AL+2*Bn)&4294967295);var Bl=AR;var Bk=Bm;var Bj=Bl;ns(Bk,Bj,AO,1,0);var Bi=i;var Bh=((Bi+48)&4294967295);var Bg=uA[((Bh)>>2)];var A6=AW;var A4=(((A6)+(Bg))&4294967295);var A2=i;var AZ=((A2+48)&4294967295);uA[((AZ)>>2)]=A4;var AY=AW;Be=AY}}var AX=Be;AU=AX;var Bf=AU;return Bf;return null}function uK(H8){var Ba;var Kt=null;var Jy;var Cl;var Bc;var Bf;var Gu;var Hl;var H7;var DM;var J6;var Jv;var Ek;var Bm;var KH;var Fd;var GZ;var KJ;var E4;var HK;var Gi;var CI;var Cg;var G3;var Cx;var Ks;var CT;var KF;var Le;var Hu;var Mb;var GL;var HV;var DY;var CR;var KV;var It;var Cj;var Cw;var Jx;var GQ;var HF;var K7;var Mx;var Lr;var IZ;var D9;var Bt;var EQ;var KK;var Ce;var DI;var CQ;var Ci;var BR;var Ck;var BT;var Gr;var Bn;var BS;var LF;var BF;var CP;var KI;var AO;var MH;var JC;var KW;var MA;var CO;var My;var J9;var C3;var Iv;var CN;var Mz;var Ch;var Mn;var DE;var IQ;var DK;var H6;var JK;var Bb;var CM;var Bd;var KG;var C4;H6=H8;var CL=H6;var CK=((CL+48)&4294967295);var CJ=uA[((CK)>>2)];KG=CJ;var Gh=H6;var Gg=((Gh+16)&4294967295);var Gf=pB[((Gg)>>2)];var Ge=H6;var Gd=((Ge+24)&4294967295);var Gc=pB[((Gd)>>2)];var Gb=(Gf)/(Gc);C4=Gb;var Ga=C4;var F9=(Ga);var F8=(F9)>1.00001;if(F8){Ba=2}else{Ba=1}$bb1$$bb$2:do{if(Ba==1){var FV=C4;var FU=(FV);var FT=(FU)<0.99999;if(FT){Ba=2;break $bb1$$bb$2}var K8=H6;var K6=((K8+44)&4294967295);var K5=uA[((K6)>>2)];var K4=H6;var K3=((K4)&4294967295);var K2=uA[((K3)>>2)];var K1=H6;var K0=qJ(K1,K2,K5);var KZ=(((K0))|0)==0;var KY=oD((KZ),1,0);Bd=KY;var KX=Bd;var Lu=iB((KX),8,0)!=0;if(Lu){Ba=34}else{Ba=35}if(Ba==34){CM=0;Ba=75;break $bb1$$bb$2}else{if(Ba==35){var KU=H6;var KT=((KU+44)&4294967295);uA[((KT)>>2)]=0;Ba=36;break $bb1$$bb$2}}}}while(0);$bb1$$bb12$$bb5$8:do{if(Ba==2){var FS=H6;var FR=C4;C3=FS;Iv=FR;var FQ=C3;var FP=((FQ+44)&4294967295);var FO=uA[((FP)>>2)];Ch=FO;Mn=0;var FN=C3;var FM=((FN+64)&4294967295);var FB=uA[((FM)>>2)];DK=FB;var FA=C3;var Fz=((FA+44)&4294967295);var Fy=uA[((Fz)>>2)];var Fx=DK;var Fw=(((Fy))|0)<(((Fx))|0);if(Fw){Ba=3}else{Ba=4}if(Ba==3){CN=1;Ba=36;break $bb1$$bb12$$bb5$8}else{if(Ba==4){$bb1_i$12:while(1){var Fv=C3;var Fu=((Fv+68)&4294967295);var Ft=uA[((Fu)>>2)];var Fs=(((Ft))|0)>0;var Fc=C3;if(Fs){Ba=5}else{Ba=11}if(Ba==5){var Fa=Mn;JC=Fc;KW=Fa;var E9=JC;var E8=((E9+68)&4294967295);var E7=uA[((E8)>>2)];J9=E7;var E6=JC;var E5=((E6+64)&4294967295);var E3=uA[((E5)>>2)];var E2=J9;var E1=(((E3))|0)<(((E2))|0);if(E1){Ba=6}else{Ba=7}if(Ba==6){var EP=JC;var EO=((EP+64)&4294967295);var EN=uA[((EO)>>2)];J9=EN}var EM=JC;var EL=((EM)&4294967295);var EK=uA[((EL)>>2)];var EJ=JC;var EI=((EJ+28)&4294967295);var EH=uA[((EI)>>2)];var EG=KW;var Eu=(((EG)*(EH))&4294967295);var Et=((EK+2*Eu)&4294967295);var Es=JC;var Er=J9;var Eq=qJ(Es,Et,Er);var Ep=(((Eq))|0)==0;var Eo=oD((Ep),1,0);My=Eo;var B4=iB((Eo),8,0)!=0;if(B4){Ba=8}else{Ba=9}if(Ba==8){CO=0}else{if(Ba==9){var En=JC;var Em=((En+68)&4294967295);var El=uA[((Em)>>2)];var D8=J9;var D7=(((El)-(D8))&4294967295);var D6=JC;var D5=((D6+68)&4294967295);uA[((D5)>>2)]=D7;var D4=J9;CO=D4}}var D3=CO;MA=D3;var J5=MA;IQ=J5;var D2=Mn;var D1=IQ;var D0=(((D1)+(D2))&4294967295);Mn=D0;Kt=10}else{if(Ba==11){var DZ=((Fc)&4294967295);var DL=uA[((DZ)>>2)];var DJ=C3;var DH=((DJ+28)&4294967295);var DG=uA[((DH)>>2)];var DF=Mn;var DD=(((DF)*(DG))&4294967295);var DC=((DL+2*DD)&4294967295);Mz=DC;var DB=C3;var DA=Mz;var Dz=aN(DB,DA);DE=Dz;var Do=Iv;var Dn=(Do)>1;var Dm=C3;var Dl=Mz;var Dk=Iv;var Dj=DE;if(Dn){Ba=12}else{Ba=20}if(Ba==12){Gr=Dm;Bn=Dl;BS=Dk;LF=Dj;var Di=Gr;var Dh=((Di+28)&4294967295);var Dg=uA[((Dh)>>2)];MH=Dg;var Df=BS;var Jt=(Df)>=2;if(Jt){Ba=13}else{Ba=14}$bb_i3_i$$bb1_i4_i$26:do{if(Ba==13){var Jr=LF;var Jp=(((Jr))|0);var Jn=BS;var Jl=(Jn)-1;var Jj=(Jp)/(Jl);var Jh=(((Jj))|0);AO=Jh}else{if(Ba==14){var Jf=BS;var Jd=(Jf)>1;if(!(Jd)){Ba=16;break $bb_i3_i$$bb1_i4_i$26}var Jc=LF;AO=Jc;var I9=LF;var I8=(((I9))|0);var I6=BS;var I4=2-(I6);var I2=(I8)*(I4);var I0=BS;var IX=(I0)-1;var IV=(I2)/(IX);var IT=(((IV))|0);var IR=Gr;var IO=((IR+68)&4294967295);uA[((IO)>>2)]=IT}}}while(0);var IM=Gr;var IK=AO;var II=to(IM,IK);var IG=(((II))|0)==0;var IE=oD((IG),1,0);KI=IE;var DS=iB((IE),8,0)!=0;if(DS){Ba=17}else{Ba=18}if(Ba==17){CP=0}else{if(Ba==18){var IC=LF;var IA=MH;var Iy=(((IA)*(IC))&4294967295);var Iw=Bn;var Ir=((Iw+2*Iy)&4294967295);var Ip=Gr;var In=((Ip+4)&4294967295);var Il=uA[((In)>>2)];var Ij=Gr;var Ih=((Ij+48)&4294967295);var If=uA[((Ih)>>2)];var Id=MH;var Ib=(((Id)*(If))&4294967295);var H9=((Il+2*Ib)&4294967295);var H5=AO;var H4=MH;var H3=Bn;ii(H5,H4,H9,H3,Ir);var H2=Gr;var H1=((H2+48)&4294967295);var H0=uA[((H1)>>2)];var HZ=AO;var HY=(((HZ)+(H0))&4294967295);var HX=Gr;var HW=((HX+48)&4294967295);uA[((HW)>>2)]=HY;var HU=AO;CP=HU}}var HT=CP;BF=HT;var FW=BF;IQ=FW;var HS=DE;var HR=IQ;var HQ=Mn;var HP=(((HR)+(HS))&4294967295);var HO=(((HP)+(HQ))&4294967295);Mn=HO;Kt=19}else{if(Ba==20){Bt=Dm;EQ=Dl;KK=Dk;Ce=Dj;var HN=Bt;var HM=((HN+28)&4294967295);var HL=uA[((HM)>>2)];BT=HL;var HJ=KK;var HI=(HJ)<0.5;var HH=Ce;if(HI){Ba=21}else{Ba=22}if(Ba==21){var HG=(((HH))|0);var HE=KK;var HD=(HG)*(HE);var HC=KK;var HB=1-(HC);var HA=(HD)/(HB);var Hz=(((HA))|0);BR=Hz}else{if(Ba==22){BR=HH;var Hn=Ce;var Hm=(((Hn))|0);var Hk=KK;var Hj=(Hk)*2;var Hi=(Hj)-1;var Hh=(Hm)*(Hi);var Hg=KK;var Hf=1-(Hg);var He=(Hh)/(Hf);var Hd=(((He))|0);var G1=Bt;var G0=((G1+68)&4294967295);uA[((G0)>>2)]=Hd}}var GY=Ce;var GX=BR;var GW=(((GX)+(GY))&4294967295);var GV=Bt;var GU=to(GV,GW);var GT=(((GU))|0)==0;var GS=oD((GT),1,0);Ci=GS;var Fb=iB((GS),8,0)!=0;if(Fb){Ba=24}else{Ba=25}if(Ba==24){CQ=0}else{if(Ba==25){var GR=Bt;var GE=((GR+4)&4294967295);var GD=uA[((GE)>>2)];var GC=Bt;var GB=((GC+48)&4294967295);var GA=uA[((GB)>>2)];var Gz=BT;var Gy=(((Gz)*(GA))&4294967295);var Gx=((GD+2*Gy)&4294967295);Ck=Gx;var Gw=Ce;var Gv=BT;var AX=(((Gw)*2)&4294967295);var AV=(((AX)*(Gv))&4294967295);var AT=Ck;var AR=EQ;var AP=AT;var AM=AR;ns(AP,AM,AV,1,0);var AK=Bt;var AI=((AK+4)&4294967295);var AH=uA[((AI)>>2)];var e=Bt;var MU=((e+48)&4294967295);var MS=uA[((MU)>>2)];var MQ=Ce;var MO=(((MQ)+(MS))&4294967295);var MM=BT;var MK=(((MO)*(MM))&4294967295);var MI=((AH+2*MK)&4294967295);Ck=MI;var MF=Ce;var MD=BT;var MB=(((MD)*(MF))&4294967295);var Mv=EQ;var Mt=((Mv+2*MB)&4294967295);var Mr=BR;var Mp=BT;var Mm=Ck;var Mk=EQ;ii(Mr,Mp,Mm,Mt,Mk);var Mi=Bt;var Mg=((Mi+48)&4294967295);var Me=uA[((Mg)>>2)];var Mc=Ce;var L9=BR;var L7=(((Mc)+(Me))&4294967295);var L5=(((L7)+(L9))&4294967295);var L3=Bt;var L1=((L3+48)&4294967295);uA[((L1)>>2)]=L5;var LZ=BR;CQ=LZ}}var LX=CQ;DI=LX;var Bs=DI;IQ=Bs;var LV=Mn;var LT=IQ;var LR=(((LT)+(LV))&4294967295);Mn=LR;Kt=26}}}}var LQ=Kt==26?LT:(Kt==19?HR:(D1));var LP=(((LQ))|0)==0;if(LP){Ba=28;break $bb1_i$12}var LO=Mn;var LN=DK;var LM=(((LN)+(LO))&4294967295);var LL=Ch;var LK=(((LM))|0)<=(((LL))|0);if(LK){Ba=4;continue $bb1_i$12}else{Ba=30;break $bb1_i$12}}if(Ba==28){CN=0;Ba=36;break $bb1$$bb12$$bb5$8}else{if(Ba==30){var LJ=C3;var LH=Mn;Lr=LJ;IZ=LH;var LG=Lr;var LE=((LG+44)&4294967295);var LD=uA[((LE)>>2)];var LC=IZ;var LB=(((LD)-(LC))&4294967295);D9=LB;var LA=D9;var Lz=(((LA))|0)>0;if(Lz){Ba=31}else{Ba=32}if(Ba==31){var Ly=Lr;var Lx=((Ly+28)&4294967295);var Lw=uA[((Lx)>>2)];var Lv=D9;var Lt=(((Lw)*2)&4294967295);var Ls=(((Lt)*(Lv))&4294967295);var Lq=Lr;var Lp=((Lq)&4294967295);var Lo=uA[((Lp)>>2)];var Ln=Lr;var Lm=((Ln+28)&4294967295);var Ll=uA[((Lm)>>2)];var Lk=IZ;var Lj=(((Lk)*(Ll))&4294967295);var Li=((Lo+2*Lj)&4294967295);var Lh=Lr;var Lg=((Lh)&4294967295);var Lf=uA[((Lg)>>2)];var Ld=Lf;var Lc=Li;tP(Ld,Lc,Ls,1,0)}var Lb=Lr;var La=((Lb+44)&4294967295);var K9=D9;uA[((La)>>2)]=K9;CN=1;Ba=36;break $bb1$$bb12$$bb5$8}}}}}}while(0);$bb5$$bb12$52:do{if(Ba==36){var KS=H6;var KR=((KS+24)&4294967295);var KQ=pB[((KR)>>2)];var KP=(KQ)!=1;if(KP){Ba=37}else{Ba=67}$bb6$$bb9$54:do{if(Ba==37){var KO=H6;var KN=KG;Hu=KO;Mb=KN;var KM=Hu;var KL=((KM+24)&4294967295);var Fq=pB[((KL)>>2)];KV=Fq;var Fo=Hu;var Fm=((Fo+28)&4294967295);var Fk=uA[((Fm)>>2)];It=Fk;GQ=0;var Fj=Hu;var Fi=((Fj+48)&4294967295);var Fh=uA[((Fi)>>2)];var Fg=Mb;var Ff=(((Fh))|0)==(((Fg))|0);if(Ff){Ba=38}else{Ba=39}if(Ba==38){CR=1}else{if(Ba==39){var Fe=Hu;var E0=Mb;G3=Fe;Cx=E0;var EZ=G3;var EY=((EZ+48)&4294967295);var EX=uA[((EY)>>2)];var EW=Cx;var EV=(((EX)-(EW))&4294967295);KF=EV;var EU=G3;var ET=((EU+28)&4294967295);var ES=uA[((ET)>>2)];Le=ES;var ER=G3;var EF=((ER+52)&4294967295);var ED=uA[((EF)>>2)];var EC=KF;var EB=(((EC)+(ED))&4294967295);var EA=G3;var Ez=((EA+36)&4294967295);var Ey=uA[((Ez)>>2)];var Ex=(((EB))|0)>(((Ey))|0);if(Ex){Ba=40}else{Ba=42}$bb_i_i10$$bb2_i_i12$59:do{if(Ba==40){var Ew=G3;var Ev=((Ew+36)&4294967295);var Ej=uA[((Ev)>>2)];var Ei=G3;var Eh=((Ei+36)&4294967295);var Eg=uA[((Eh)>>2)];var Ef=(((Eg))|0)>>1;var Ee=KF;var Ed=(((Ee)+(Ej))&4294967295);var Ec=(((Ed)+(Ef))&4294967295);var Eb=G3;var Ea=((Eb+36)&4294967295);uA[((Ea)>>2)]=Ec;var DX=G3;var DW=((DX+36)&4294967295);var DV=uA[((DW)>>2)];var DU=Le;var DT=(((DV)*2)&4294967295);var DR=(((DT)*(DU))&4294967295);var DQ=G3;var DP=((DQ+8)&4294967295);var DO=uA[((DP)>>2)];var DN=DO;var Dy=vv(DN,DR);var Dx=Dy;var Dw=G3;var Dv=((Dw+8)&4294967295);uA[((Dv)>>2)]=Dx;var Du=G3;var Dt=((Du+8)&4294967295);var Ds=uA[((Dt)>>2)];var Dr=(Ds)==0;if(!(Dr)){Ba=42;break $bb_i_i10$$bb2_i_i12$59}CT=0;Ba=43;break $bb_i_i10$$bb2_i_i12$59}}while(0);if(Ba==42){var Dq=KF;var Dp=Le;var De=(((Dq)*2)&4294967295);var Dd=(((De)*(Dp))&4294967295);var Dc=G3;var Db=((Dc+4)&4294967295);var Da=uA[((Db)>>2)];var C9=Cx;var C8=Le;var C7=(((C8)*(C9))&4294967295);var C6=((Da+2*C7)&4294967295);var C5=G3;var C2=((C5+8)&4294967295);var C1=uA[((C2)>>2)];var C0=G3;var CZ=((C0+52)&4294967295);var CY=uA[((CZ)>>2)];var CX=Le;var CW=(((CX)*(CY))&4294967295);var CV=((C1+2*CW)&4294967295);var CU=CV;var CS=C6;ns(CU,CS,Dd,1,0);var CH=G3;var CG=((CH+48)&4294967295);var CF=Cx;uA[((CG)>>2)]=CF;var CE=G3;var CD=((CE+52)&4294967295);var CC=uA[((CD)>>2)];var CB=KF;var CA=(((CB)+(CC))&4294967295);var Cz=G3;var Cy=((Cz+52)&4294967295);uA[((Cy)>>2)]=CA;CT=1}var Cv=CT;Ks=Cv;var EE=Ks;var Cu=(((EE))|0)==0;var Ct=oD((Cu),1,0);DY=Ct;var Be=iB((Ct),8,0)!=0;if(Be){Ba=44}else{Ba=59}if(Ba==44){CR=0}else{if(Ba==59){$bb11_i$67:while(1){var A0=Hu;var AZ=((A0+52)&4294967295);var AY=uA[((AZ)>>2)];var AW=GQ;var AU=(((AY)-(AW))&4294967295);var AS=Hu;var AQ=((AS+64)&4294967295);var AN=uA[((AQ)>>2)];var AL=(((AU))|0)>=(((AN))|0);var AJ=Hu;if(!(AL)){Ba=60;break $bb11_i$67}var Cs=((AJ+8)&4294967295);var Cr=uA[((Cs)>>2)];var Cq=GQ;var Cp=It;var Co=(((Cp)*(Cq))&4294967295);var Cn=((Cr+2*Co)&4294967295);var Cm=Hu;var KD=aN(Cm,Cn);Cj=KD;var KC=Cj;var KB=(((KC))|0);var KA=KV;var Kz=(KB)/(KA);var Ky=(((Kz))|0);Cw=Ky;var Kx=Hu;var Kw=Cw;var Kv=to(Kx,Kw);var Ku=(((Kv))|0)==0;var Kr=oD((Ku),1,0);HV=Kr;var Kq=HV;var Iu=iB((Kq),8,0)!=0;if(Iu){Ba=46;break $bb11_i$67}var Kp=Hu;var Ko=((Kp+4)&4294967295);var Kn=uA[((Ko)>>2)];var Km=Hu;var Kl=((Km+48)&4294967295);var Kk=uA[((Kl)>>2)];var Kj=It;var Ki=(((Kj)*(Kk))&4294967295);var Kh=((Kn+2*Ki)&4294967295);HF=Kh;var Kg=KV;var Kf=(Kg)>=1;var Ke=Hu;var Kd=((Ke+8)&4294967295);var Kc=uA[((Kd)>>2)];var Kb=GQ;var Ka=It;var J8=(((Ka)*(Kb))&4294967295);var J7=((Kc+2*J8)&4294967295);K7=J7;var J4=Hu;var J3=((J4+8)&4294967295);var J2=uA[((J3)>>2)];var J1=GQ;if(Kf){Ba=48}else{Ba=49}$bb8_i17$$bb9_i18$71:do{if(Ba==48){var J0=Cj;var JZ=Cw;var KE=((0-(JZ))&4294967295);var JY=(((J0)+(J1))&4294967295);var JX=(((JY)+(KE))&4294967295);var JW=It;var JV=(((JX)*(JW))&4294967295);var JU=((J2+2*JV)&4294967295);Mx=JU;var JT=Cw;var JS=It;var JR=HF;var JQ=K7;var JP=Mx;ii(JT,JS,JR,JQ,JP)}else{if(Ba==49){var JO=It;var JN=(((JO)*(J1))&4294967295);var JM=((J2+2*JN)&4294967295);Mx=JM;var JL=Cw;var JJ=Cj;var JI=(((JL)-(JJ))&4294967295);Jx=JI;var JH=Cj;var JG=It;var JF=Jx;var JE=HF;var JD=K7;var JB=Mx;Ek=JH;Bm=JG;KH=JF;Fd=JE;GZ=JD;KJ=JB;CI=0;var JA=CI;var Jz=Bm;var Jw=(((JA))|0)<(((Jz))|0);if(!(Jw)){Ba=58;break $bb8_i17$$bb9_i18$71}$bb_i1_i$74:while(1){var Ju=Fd;var Js=CI;var Jq=((Ju+2*Js)&4294967295);E4=Jq;var Jo=KJ;var Jm=CI;var Jk=((Jo+2*Jm)&4294967295);HK=Jk;var Ji=GZ;var Jg=CI;var Je=((Ji+2*Jg)&4294967295);Gi=Je;Cg=0;var Jb=Ek;var Ja=KH;var I7=(((Ja)+(Jb))&4294967295);var I5=Cg;var I3=(((I7))|0)>(((I5))|0);if(I3){Ba=51}else{Ba=57}$bb1_i2_i$$bb8_i_i$76:do{if(Ba==51){while(1){var I1=Cg;var IY=KH;var IW=(((I1))|0)<(((IY))|0);if(IW){Ba=52}else{Ba=53}if(Ba==52){var IU=Gi;var IS=uW[((IU)>>1)];var IP=iB((IS),16,0);var IN=Ek;var IL=Cg;var IJ=(((IN)-(IL))&4294967295);var IH=(((IJ)*(IP))&4294967295);var IF=Ek;var ID=(((((IH))|0)/(((IF))|0))|0);var IB=(((ID))&65535);var Iz=E4;uW[((Iz)>>1)]=IB;var Ix=Gi;var Is=Bm;var Iq=((Ix+2*Is)&4294967295);Gi=Iq}else{if(Ba==53){var Io=Cg;var Im=Ek;var Ik=(((Io))|0)<(((Im))|0);if(Ik){Ba=54}else{Ba=55}if(Ba==54){var Ii=Gi;var Ig=uW[((Ii)>>1)];var Ie=iB((Ig),16,0);var Ic=Ek;var Ia=Cg;var Cf=(((Ic)-(Ia))&4294967295);var Cd=(((Cf)*(Ie))&4294967295);var Cc=HK;var Cb=uW[((Cc)>>1)];var Ca=iB((Cb),16,0);var B9=Cg;var B8=KH;var B7=(((B9)-(B8))&4294967295);var B6=(((B7)*(Ca))&4294967295);var B5=(((B6)+(Cd))&4294967295);var B3=Ek;var B2=(((((B5))|0)/(((B3))|0))|0);var B1=(((B2))&65535);var B0=E4;uW[((B0)>>1)]=B1;var BZ=Gi;var BY=Bm;var BX=((BZ+2*BY)&4294967295);Gi=BX;var BW=HK;var BV=Bm;var BU=((BW+2*BV)&4294967295);HK=BU}else{if(Ba==55){var BQ=HK;var BP=uW[((BQ)>>1)];var BO=iB((BP),16,0);var BM=Cg;var BL=KH;var BK=(((BM)-(BL))&4294967295);var BJ=(((BK)*(BO))&4294967295);var BI=Ek;var BH=(((((BJ))|0)/(((BI))|0))|0);var BG=(((BH))&65535);var BE=E4;uW[((BE)>>1)]=BG;var BD=HK;var BC=Bm;var BB=((BD+2*BC)&4294967295);HK=BB}}}}var BA=E4;var Bz=Bm;var By=((BA+2*Bz)&4294967295);E4=By;var Bx=Cg;var Bw=(((Bx)+1)&4294967295);Cg=Bw;var Bv=Ek;var Br=KH;var Bq=(((Br)+(Bv))&4294967295);var Bp=Cg;var Bo=(((Bq))|0)>(((Bp))|0);if(Bo){Ba=51;continue}else{Ba=57;break $bb1_i2_i$$bb8_i_i$76}}}}while(0);var Bl=CI;var Bk=(((Bl)+1)&4294967295);CI=Bk;var Bj=CI;var Bi=Bm;var Bh=(((Bj))|0)<(((Bi))|0);if(Bh){Ba=50;continue $bb_i1_i$74}else{Ba=58;break $bb8_i17$$bb9_i18$71}}}}}while(0);var Bg=Hu;var A9=((Bg+48)&4294967295);var A8=uA[((A9)>>2)];var A7=Cw;var A6=(((A7)+(A8))&4294967295);var A5=Hu;var A4=((A5+48)&4294967295);uA[((A4)>>2)]=A6;var A3=GQ;var A2=Cj;var A1=(((A2)+(A3))&4294967295);GQ=A1;Ba=59;continue $bb11_i$67}if(Ba==60){var i=GQ;H7=AJ;DM=i;var MV=H7;var MT=((MV+28)&4294967295);var MR=uA[((MT)>>2)];J6=MR;var MP=H7;var MN=((MP+8)&4294967295);var ML=uA[((MN)>>2)];var MJ=DM;var MG=J6;var ME=(((MG)*(MJ))&4294967295);var MC=((ML+2*ME)&4294967295);Jv=MC;var Mw=DM;var Mu=(((Mw))|0)==0;if(Mu){Ba=64}else{Ba=61}if(Ba==61){var Ms=H7;var Mq=((Ms+52)&4294967295);var Mo=uA[((Mq)>>2)];var Ml=DM;var Mj=(((Mo))|0)!=(((Ml))|0);if(Mj){Ba=62}else{Ba=63}if(Ba==62){var Mh=H7;var Mf=((Mh+52)&4294967295);var Md=uA[((Mf)>>2)];var Ma=DM;var L8=(((Md)-(Ma))&4294967295);var L6=J6;var L4=(((L6)*2)&4294967295);var L2=(((L4)*(L8))&4294967295);var L0=H7;var LY=((L0+8)&4294967295);var LW=uA[((LY)>>2)];var LU=Jv;var LS=LW;var Hy=LU;tP(LS,Hy,L2,1,0)}var Hx=H7;var Hw=((Hx+52)&4294967295);var Hv=uA[((Hw)>>2)];var Ht=DM;var Hs=(((Hv)-(Ht))&4294967295);var Hr=H7;var Hq=((Hr+52)&4294967295);uA[((Hq)>>2)]=Hs}CR=1}else{if(Ba==46){CR=0}}}}}}var Hp=CR;GL=Hp;var LI=GL;var Ho=(((LI))|0)==0;var Hc=oD((Ho),1,0);Bb=Hc;var BN=iB((Hc),8,0)!=0;if(!(BN)){Ba=67;break $bb6$$bb9$54}CM=0;Ba=75;break $bb5$$bb12$52}}while(0);var Hb=H6;var Ha=((Hb+20)&4294967295);var G9=pB[((Ha)>>2)];var G8=(G9)!=1;if(G8){Ba=68}else{Ba=74}$bb10$$bb11$100:do{if(Ba==68){var G7=H6;var G6=((G7+20)&4294967295);var G5=pB[((G6)>>2)];var G4=H6;var G2=((G4+48)&4294967295);var GP=uA[((G2)>>2)];var GO=KG;var GN=(((GP)-(GO))&4294967295);var GM=H6;var GK=((GM+28)&4294967295);var GJ=uA[((GK)>>2)];var GI=(((GJ)*(GN))&4294967295);var GH=H6;var GG=((GH+4)&4294967295);var GF=uA[((GG)>>2)];var Gt=H6;var Gs=((Gt+28)&4294967295);var Gq=uA[((Gs)>>2)];var Gp=KG;var Go=(((Gp)*(Gq))&4294967295);var Gn=((GF+2*Go)&4294967295);Jy=Gn;Cl=GI;Bc=G5;var Gm=Bc;var Gl=(Gm)*4096;var Gk=(((Gl))|0);Gu=Gk;var Gj=Cl;var F6=(((Gj)-1)&4294967295);Cl=F6;var F5=Cl;var F4=(((F5))|0)!=-1;var F3=oD((F4),1,0);Bf=F3;if(!(F4)){Ba=74;break $bb10$$bb11$100}$bb_i22$102:while(1){var F2=Jy;var F1=uW[((F2)>>1)];var F0=iB((F1),16,0);var FZ=Gu;var FY=(((F0)*(FZ))&4294967295);var FX=(((FY))|0)>>12;Hl=FX;var FL=(((FX))|0)>32767;if(FL){Ba=70}else{Ba=71}$bb1_i23$$bb2_i24$104:do{if(Ba==70){Hl=32767}else{if(Ba==71){var FK=Hl;var FJ=(((FK))|0)<-32767;if(!(FJ)){Ba=73;break $bb1_i23$$bb2_i24$104}Hl=-32767}}}while(0);var FI=Hl;var FH=(((FI))&65535);var FG=Jy;uW[((FG)>>1)]=FH;var FF=Jy;var FE=((FF+2)&4294967295);Jy=FE;var FD=Cl;var FC=(((FD)-1)&4294967295);Cl=FC;var Fr=Cl;var Fp=(((Fr))|0)!=-1;var Fn=oD((Fp),1,0);Bf=Fn;var Bu=iB((Fn),8,0)!=0;if(Bu){Ba=69;continue $bb_i22$102}else{Ba=74;break $bb10$$bb11$100}}}}while(0);CM=1}}while(0);var Fl=CM;JK=Fl;var F7=JK;return F7;return null}function v7(AO,Ba,Bc){var Bn;var AL;var B1;var BB;var AK;var BC;var BD;var BS;var Bo;var BA;var A8;var BE;var BK;var A7;var BR;var BT;A8=AO;BE=Ba;BK=Bc;var BQ=A8;var BP=BE;var BO=BK;AL=BQ;B1=BP;BB=BO;var BN=AL;var BM=((BN+28)&4294967295);var BL=uA[((BM)>>2)];var BJ=BB;var BI=(((BJ)*(BL))&4294967295);BA=BI;var Bz=BB;var By=(((Bz))|0)==0;if(By){Bn=1}else{Bn=2}if(Bn==1){BS=1}else{if(Bn==2){var Bx=AL;var Bw=BB;var Bv=sw(Bx,Bw);var Bu=(((Bv))|0)==0;var Bt=oD((Bu),1,0);BD=Bt;var Bs=BD;var AS=iB((Bs),8,0)!=0;if(AS){Bn=3}else{Bn=4}if(Bn==3){BS=0}else{if(Bn==4){var Br=AL;var Bp=((Br)&4294967295);var Bm=uA[((Bp)>>2)];var Bl=AL;var Bk=((Bl+44)&4294967295);var Bj=uA[((Bk)>>2)];var Bi=AL;var Bh=((Bi+28)&4294967295);var Bg=uA[((Bh)>>2)];var Bf=(((Bg)*(Bj))&4294967295);var Be=((Bm+2*Bf)&4294967295);Bo=Be;var Bd=BA;var A9=(((Bd)-1)&4294967295);BA=A9;var A6=BA;var A5=(((A6))|0)!=-1;var A4=oD((A5),1,0);BC=A4;if(A5){Bn=5}else{Bn=6}$bb4_i$$bb7_i$8:do{if(Bn==5){while(1){var A3=B1;var A2=ll[((A3)>>0)];var A1=oD((A2),8,0);var A0=(((A1)-128)&4294967295);var AZ=(A0)<<8;var AY=(((AZ))&65535);var AX=Bo;uW[((AX)>>1)]=AY;var AW=Bo;var AV=((AW+2)&4294967295);Bo=AV;var AU=B1;var AT=((AU+1)&4294967295);B1=AT;var AR=BA;var AQ=(((AR)-1)&4294967295);BA=AQ;var AP=BA;var AN=(((AP))|0)!=-1;var AM=oD((AN),1,0);BC=AM;var AI=iB((AM),8,0)!=0;if(AI){Bn=5;continue}else{Bn=6;break $bb4_i$$bb7_i$8}}}}while(0);var AH=AL;var i=((AH+44)&4294967295);var e=uA[((i)>>2)];var B0=BB;var BZ=(((B0)+(e))&4294967295);var BY=AL;var BX=((BY+44)&4294967295);uA[((BX)>>2)]=BZ;BS=1}}}}var BW=BS;AK=BW;var AJ=AK;var BV=(((AJ))|0)==0;var BU=oD((BV),1,0);BT=BU;var Bb=iB((BU),8,0)!=0;if(Bb){Bn=8}else{Bn=9}if(Bn==8){BR=0}else{if(Bn==9){var BH=A8;var BG=uK(BH);BR=BG}}var BF=BR;A7=BF;var Bq=A7;return Bq;return null}function aL(BG,Bf,Bm){var A2;var Be;var Bd;var Bv;var AP;var AI;var Bu;var AH;var A1;var A5;var A3;var Bt;var i;AH=BG;A1=Bf;A5=Bm;var Bs=AH;var Br=A1;var Bq=A5;Be=Bs;Bd=Br;Bv=Bq;var Bp=Bv;var Bn=(((Bp))|0)==0;if(Bn){A2=1}else{A2=2}if(A2==1){Bu=1}else{if(A2==2){var Bk=Be;var Bi=Bv;var Bg=sw(Bk,Bi);var AY=(((Bg))|0)==0;var AV=oD((AY),1,0);AI=AV;var AT=AI;var AW=iB((AT),8,0)!=0;if(AW){A2=3}else{A2=4}if(A2==3){Bu=0}else{if(A2==4){var AR=Be;var AO=((AR+28)&4294967295);var AN=uA[((AO)>>2)];var AM=Bv;var AL=(((AN)*2)&4294967295);var AK=(((AL)*(AM))&4294967295);var AJ=Be;var e=((AJ)&4294967295);var BF=uA[((e)>>2)];var BE=Be;var BD=((BE+44)&4294967295);var BC=uA[((BD)>>2)];var BB=Be;var BA=((BB+28)&4294967295);var Bz=uA[((BA)>>2)];var By=(((Bz)*(BC))&4294967295);var Bx=((BF+2*By)&4294967295);var Bl=Bd;var Bj=Bx;var Bh=Bl;ns(Bj,Bh,AK,1,0);var Bc=Be;var Bb=((Bc+44)&4294967295);var Ba=uA[((Bb)>>2)];var A9=Bv;var A8=(((A9)+(Ba))&4294967295);var A7=Be;var A6=((A7+44)&4294967295);uA[((A6)>>2)]=A8;Bu=1}}}}var A0=Bu;AP=A0;var Bo=AP;var AZ=(((Bo))|0)==0;var AX=oD((AZ),1,0);i=AX;var A4=iB((AX),8,0)!=0;if(A4){A2=6}else{A2=7}if(A2==6){Bt=0}else{if(A2==7){var AU=AH;var AS=uK(AU);Bt=AS}}var AQ=Bt;A3=AQ;var Bw=A3;return Bw;return null}function hI(AO,Ba,Bc){var Bo;var AL;var BZ;var BC;var AK;var BL;var Bd;var BQ;var Bp;var BB;var A8;var BD;var BH;var A7;var BP;var BR;A8=AO;BD=Ba;BH=Bc;var BO=A8;var BN=BD;var BM=BH;AL=BO;BZ=BN;BC=BM;var BK=AL;var BJ=((BK+28)&4294967295);var BI=uA[((BJ)>>2)];var BG=BC;var BF=(((BG)*(BI))&4294967295);BB=BF;var BA=BC;var Bz=(((BA))|0)==0;if(Bz){Bo=1}else{Bo=2}if(Bo==1){BQ=1}else{if(Bo==2){var By=AL;var Bx=BC;var Bw=sw(By,Bx);var Bv=(((Bw))|0)==0;var Bu=oD((Bv),1,0);Bd=Bu;var Bt=Bd;var AS=iB((Bt),8,0)!=0;if(AS){Bo=3}else{Bo=4}if(Bo==3){BQ=0}else{if(Bo==4){var Bs=AL;var Bq=((Bs)&4294967295);var Bn=uA[((Bq)>>2)];var Bm=AL;var Bl=((Bm+44)&4294967295);var Bk=uA[((Bl)>>2)];var Bj=AL;var Bi=((Bj+28)&4294967295);var Bh=uA[((Bi)>>2)];var Bg=(((Bh)*(Bk))&4294967295);var Bf=((Bn+2*Bg)&4294967295);Bp=Bf;var Be=BB;var A9=(((Be)-1)&4294967295);BB=A9;var A6=BB;var A5=(((A6))|0)!=-1;var A4=oD((A5),1,0);BL=A4;if(A5){Bo=5}else{Bo=6}$bb4_i$$bb7_i$8:do{if(Bo==5){while(1){var A3=BZ;var A2=pB[((A3)>>2)];var A1=(A2)*32767;var A0=(((A1))|0);var AZ=Bp;uW[((AZ)>>1)]=A0;var AY=Bp;var AX=((AY+2)&4294967295);Bp=AX;var AW=BZ;var AV=((AW+4)&4294967295);BZ=AV;var AU=BB;var AT=(((AU)-1)&4294967295);BB=AT;var AR=BB;var AQ=(((AR))|0)!=-1;var AP=oD((AQ),1,0);BL=AP;var AI=iB((AP),8,0)!=0;if(AI){Bo=5;continue}else{Bo=6;break $bb4_i$$bb7_i$8}}}}while(0);var AN=AL;var AM=((AN+44)&4294967295);var AH=uA[((AM)>>2)];var i=BC;var e=(((i)+(AH))&4294967295);var BY=AL;var BX=((BY+44)&4294967295);uA[((BX)>>2)]=e;BQ=1}}}}var BW=BQ;AK=BW;var AJ=AK;var BV=(((AJ))|0)==0;var BU=oD((BV),1,0);BR=BU;var Bb=iB((BU),8,0)!=0;if(Bb){Bo=8}else{Bo=9}if(Bo==8){BP=0}else{if(Bo==9){var BT=A8;var BS=uK(BT);BP=BS}}var BE=BP;A7=BE;var Br=A7;return Br;return null}function hd(AK,A6,Bo){var Bl;var A4;var By;var A7;var A3;var Bc;var BR;var A9;var BN;var AT;var Bx;A4=AK;By=A6;A7=Bo;var BQ=A4;var BP=((BQ+48)&4294967295);var BO=uA[((BP)>>2)];A9=BO;BN=0;var BM=A9;var BL=(((BM))|0)==0;if(BL){Bl=1}else{Bl=2}if(Bl==1){BR=0}else{if(Bl==2){var BK=A9;var BJ=A7;var BI=(((BK))|0)>(((BJ))|0);if(BI){Bl=3}else{Bl=4}if(Bl==3){var BH=A9;var Bw=A7;var Bv=(((BH)-(Bw))&4294967295);BN=Bv;var Bu=A7;A9=Bu}var Bt=A4;var Bs=((Bt+4)&4294967295);var Br=uA[((Bs)>>2)];AT=Br;var Bq=A4;var Bp=((Bq+28)&4294967295);var Bn=uA[((Bp)>>2)];var Bm=A9;var Bk=(((Bm)*(Bn))&4294967295);Bx=Bk;var Bj=Bx;var Bi=(((Bj)-1)&4294967295);Bx=Bi;var Bh=(((Bi))|0)!=-1;var Bg=oD((Bh),1,0);Bc=Bg;if(Bh){Bl=5}else{Bl=6}$bb4$$bb6$8:do{if(Bl==5){while(1){var Bf=AT;var Be=uW[((Bf)>>1)];var Bd=iB((Be),16,0)>>8;var Bb=(((Bd))&255);var Ba=(((Bb)+-128)&255);var A5=By;la[((A5)>>0)]=Ba;var A2=By;var A1=((A2+1)&4294967295);By=A1;var A0=AT;var AZ=((A0+2)&4294967295);AT=AZ;var AY=Bx;var AX=(((AY)-1)&4294967295);Bx=AX;var AW=Bx;var AV=(((AW))|0)!=-1;var AU=oD((AV),1,0);Bc=AU;var A8=iB((AU),8,0)!=0;if(A8){Bl=5;continue}else{Bl=6;break $bb4$$bb6$8}}}}while(0);var AS=BN;var AR=(((AS))|0)>0;if(AR){Bl=7}else{Bl=8}if(Bl==7){var AQ=A4;var AP=((AQ+28)&4294967295);var AO=uA[((AP)>>2)];var AN=BN;var AM=(((AO)*2)&4294967295);var AL=(((AM)*(AN))&4294967295);var AJ=A4;var AI=((AJ+4)&4294967295);var AH=uA[((AI)>>2)];var i=A4;var e=((i+28)&4294967295);var BY=uA[((e)>>2)];var BX=A9;var BW=(((BX)*(BY))&4294967295);var BV=((AH+2*BW)&4294967295);var BU=A4;var BT=((BU+4)&4294967295);var BS=uA[((BT)>>2)];var BG=BS;var BE=BV;tP(BG,BE,AL,1,0)}var BD=A4;var BC=((BD+48)&4294967295);var BB=BN;uA[((BC)>>2)]=BB;var BA=A9;BR=BA}}var Bz=BR;A3=Bz;var BF=A3;return BF;return null}function ff(BF,Bf,Bu){var A6;var AJ;var A5;var AI;var A7;var Bt;var Bm;var AO;AJ=BF;A5=Bf;AI=Bu;var Bs=AJ;var Br=((Bs+48)&4294967295);var Bq=uA[((Br)>>2)];Bm=Bq;AO=0;var Bp=Bm;var Bo=(((Bp))|0)==0;if(Bo){A6=1}else{A6=2}if(A6==1){Bt=0}else{if(A6==2){var Bn=Bm;var Bk=AI;var Bi=(((Bn))|0)>(((Bk))|0);if(Bi){A6=3}else{A6=4}if(A6==3){var Bg=Bm;var A2=AI;var A0=(((Bg)-(A2))&4294967295);AO=A0;var AY=AI;Bm=AY}var AW=AJ;var AU=((AW+28)&4294967295);var AS=uA[((AU)>>2)];var AQ=Bm;var AN=(((AS)*2)&4294967295);var AL=(((AN)*(AQ))&4294967295);var AK=AJ;var e=((AK+4)&4294967295);var BE=uA[((e)>>2)];var BD=A5;var BC=BD;var BB=BE;ns(BC,BB,AL,1,0);var BA=AO;var Bz=(((BA))|0)>0;if(Bz){A6=5}else{A6=6}if(A6==5){var By=AJ;var Bx=((By+28)&4294967295);var Bw=uA[((Bx)>>2)];var Bl=AO;var Bj=(((Bw)*2)&4294967295);var Bh=(((Bj)*(Bl))&4294967295);var Be=AJ;var Bd=((Be+4)&4294967295);var Bc=uA[((Bd)>>2)];var Bb=AJ;var Ba=((Bb+28)&4294967295);var A9=uA[((Ba)>>2)];var A8=Bm;var A4=(((A8)*(A9))&4294967295);var A3=((Bc+2*A4)&4294967295);var A1=AJ;var AZ=((A1+4)&4294967295);var AX=uA[((AZ)>>2)];var AV=AX;var AT=A3;tP(AV,AT,Bh,1,0)}var AR=AJ;var AP=((AR+48)&4294967295);var AM=AO;uA[((AP)>>2)]=AM;var AH=Bm;Bt=AH}}var i=Bt;A7=i;var Bv=A7;return Bv;return null}function l9(AK,A6,Bo){var Bk;var A4;var By;var A7;var A3;var Bl;var BQ;var A9;var BM;var AT;var Bx;A4=AK;By=A6;A7=Bo;var BP=A4;var BO=((BP+48)&4294967295);var BN=uA[((BO)>>2)];A9=BN;BM=0;var BL=A9;var BK=(((BL))|0)==0;if(BK){Bk=1}else{Bk=2}if(Bk==1){BQ=0}else{if(Bk==2){var BJ=A9;var BI=A7;var BH=(((BJ))|0)>(((BI))|0);if(BH){Bk=3}else{Bk=4}if(Bk==3){var BG=A9;var Bw=A7;var Bv=(((BG)-(Bw))&4294967295);BM=Bv;var Bu=A7;A9=Bu}var Bt=A4;var Bs=((Bt+4)&4294967295);var Br=uA[((Bs)>>2)];AT=Br;var Bq=A4;var Bp=((Bq+28)&4294967295);var Bn=uA[((Bp)>>2)];var Bm=A9;var Bj=(((Bm)*(Bn))&4294967295);Bx=Bj;var Bi=Bx;var Bh=(((Bi)-1)&4294967295);Bx=Bh;var Bg=(((Bh))|0)!=-1;var Bf=oD((Bg),1,0);Bl=Bf;if(Bg){Bk=5}else{Bk=6}$bb4$$bb6$8:do{if(Bk==5){while(1){var Be=AT;var Bd=uW[((Be)>>1)];var Bc=iB((Bd),16,0);var Bb=(Bc)/32767;var Ba=By;pB[((Ba)>>2)]=Bb;var A5=By;var A2=((A5+4)&4294967295);By=A2;var A1=AT;var A0=((A1+2)&4294967295);AT=A0;var AZ=Bx;var AY=(((AZ)-1)&4294967295);Bx=AY;var AX=Bx;var AW=(((AX))|0)!=-1;var AV=oD((AW),1,0);Bl=AV;var A8=iB((AV),8,0)!=0;if(A8){Bk=5;continue}else{Bk=6;break $bb4$$bb6$8}}}}while(0);var AU=BM;var AS=(((AU))|0)>0;if(AS){Bk=7}else{Bk=8}if(Bk==7){var AR=A4;var AQ=((AR+28)&4294967295);var AP=uA[((AQ)>>2)];var AO=BM;var AN=(((AP)*2)&4294967295);var AM=(((AN)*(AO))&4294967295);var AL=A4;var AJ=((AL+4)&4294967295);var AI=uA[((AJ)>>2)];var AH=A4;var i=((AH+28)&4294967295);var e=uA[((i)>>2)];var BX=A9;var BW=(((BX)*(e))&4294967295);var BV=((AI+2*BW)&4294967295);var BU=A4;var BT=((BU+4)&4294967295);var BS=uA[((BT)>>2)];var BR=BS;var BF=BV;tP(BR,BF,AM,1,0)}var BD=A4;var BC=((BD+48)&4294967295);var BB=BM;uA[((BC)>>2)]=BB;var BA=A9;BQ=BA}}var Bz=BQ;A3=Bz;var BE=A3;return BE;return null}function uX(AK){var Bk;var A4;var A3;var A7;var By;var A8;var BT;var AW;var A6;var Bm;var Bh;var Bl;A4=AK;var BS=A4;var BR=((BS+64)&4294967295);var BQ=uA[((BR)>>2)];AW=BQ;var BP=A4;var BO=((BP+44)&4294967295);var BN=uA[((BO)>>2)];A6=BN;var BM=A6;var BL=(((BM))|0)==0;if(BL){Bk=1}else{Bk=2}$bb$$bb1$2:do{if(Bk==1){BT=1}else{if(Bk==2){var BK=A6;var Bw=AW;var Bv=(((BK))|0)<(((Bw))|0);if(Bv){Bk=5}else{Bk=3}$bb7$$bb2$5:do{if(Bk==3){var Bu=A4;var Bt=aL(Bu,0,0);var Bs=(((Bt))|0)!=0;if(Bs){Bk=5;break $bb7$$bb2$5}By=1;A8=1;BT=0;Bk=12;break $bb$$bb1$2}}while(0);By=0;A8=0;var Br=A4;var Bq=((Br+44)&4294967295);var Bp=uA[((Bq)>>2)];A6=Bp;var Bo=(((Bp))|0)==0;if(Bo){Bk=6}else{Bk=7}if(Bk==6){BT=1}else{if(Bk==7){var Bn=AW;var Bj=A6;var Bi=(((Bn)-(Bj))&4294967295);Bm=Bi;var Bg=A4;var Bf=((Bg+28)&4294967295);var Be=uA[((Bf)>>2)];var Bd=Bm;var Bc=(((Be)*2)&4294967295);var Bb=(((Bc)*(Bd))&4294967295);var Ba=A4;var A9=((Ba)&4294967295);var A5=uA[((A9)>>2)];var A2=A4;var A1=((A2+28)&4294967295);var A0=uA[((A1)>>2)];var AZ=A6;var AY=(((AZ)*(A0))&4294967295);var AX=((A5+2*AY)&4294967295);var AV=AX;ud(AV,0,Bb,1,0);var AU=A4;var AT=((AU+44)&4294967295);var AS=AW;uA[((AT)>>2)]=AS;var AR=A4;var AQ=((AR+48)&4294967295);var AP=uA[((AQ)>>2)];Bh=AP;var AO=A4;var AN=aL(AO,0,0);var AM=(((AN))|0)==0;var AL=oD((AM),1,0);A7=AL;var AJ=A7;var BU=iB((AJ),8,0)!=0;if(BU){Bk=8}else{Bk=9}if(Bk==8){BT=0}else{if(Bk==9){var AI=A6;var AH=(((AI))|0);var i=A4;var e=((i+16)&4294967295);var B1=pB[((e)>>2)];var B0=(AH)*(B1);var BZ=(B0);var BY=(BZ)+0.5;var BX=(((BY))|0);Bl=BX;var BW=A4;var BV=((BW+48)&4294967295);var BJ=uA[((BV)>>2)];var BI=Bh;var BH=Bl;var BG=(((BH)+(BI))&4294967295);var BF=(((BJ))|0)>(((BG))|0);if(BF){Bk=10}else{Bk=11}if(Bk==10){var BE=Bh;var BD=Bl;var BB=(((BD)+(BE))&4294967295);var BA=A4;var Bz=((BA+48)&4294967295);uA[((Bz)>>2)]=BB}BT=1}}}}}}}while(0);var Bx=BT;A3=Bx;var BC=A3;return BC;return null}function rQ(Bf){var AR;var i;i=Bf;var A5=i;var A4=((A5)&4294967295);var A3=uA[((A4)>>2)];var A2=(A3)!=0;if(A2){AR=1}else{AR=2}if(AR==1){var A1=i;var A0=((A1)&4294967295);var AZ=uA[((A0)>>2)];var AX=AZ;br(AX)}var AV=i;var AT=((AV+4)&4294967295);var AQ=uA[((AT)>>2)];var AP=(AQ)!=0;if(AP){AR=3}else{AR=4}if(AR==3){var AO=i;var AN=((AO+4)&4294967295);var AM=uA[((AN)>>2)];var AL=AM;br(AL)}var AK=i;var AJ=((AK+8)&4294967295);var AI=uA[((AJ)>>2)];var AH=(AI)!=0;if(AH){AR=5}else{AR=6}if(AR==5){var e=i;var Be=((e+8)&4294967295);var Bd=uA[((Be)>>2)];var Bc=Bd;br(Bc)}var Bb=i;var Ba=((Bb+12)&4294967295);var A9=uA[((Ba)>>2)];var A8=(A9)!=0;if(A8){AR=7}else{AR=8}if(AR==7){var A7=i;var A6=((A7+12)&4294967295);var AY=uA[((A6)>>2)];var AW=AY;br(AW)}var AU=i;var AS=AU;br(AS);return;return}function s8(B6,BD){var Bi;var B1;var Bl;var A4;var B0;var AL;var AI;var Bj;var AX;B1=B6;Bl=BD;var BZ=kW(1,88);var BY=BZ;AL=BY;var BX=B1;var BW=(((((BX))|0)/400)|0);AI=BW;var BV=B1;var BU=(((((BV))|0)/65)|0);Bj=BU;var BT=Bj;var BS=(((BT)*2)&4294967295);AX=BS;var BR=AL;var BA=(BR)==0;if(BA){Bi=1}else{Bi=2}if(Bi==1){B0=0}else{if(Bi==2){var By=AL;var Bw=((By+32)&4294967295);var Bu=AX;uA[((Bw)>>2)]=Bu;var Bs=Bl;var Bq=(((Bs)*2)&4294967295);var Bp=AX;var Bo=kW(Bp,Bq);var Bn=Bo;var Bm=AL;var Bf=((Bm)&4294967295);uA[((Bf)>>2)]=Bn;var Be=AL;var Bd=((Be)&4294967295);var Bc=uA[((Bd)>>2)];var Bb=(Bc)==0;var Ba=AL;if(Bb){Bi=3}else{Bi=4}if(Bi==3){rQ(Ba);B0=0}else{if(Bi==4){var A9=((Ba+40)&4294967295);var A8=AX;uA[((A9)>>2)]=A8;var A7=Bl;var A6=(((A7)*2)&4294967295);var A5=AX;var A3=kW(A5,A6);var A2=A3;var A1=AL;var A0=((A1+4)&4294967295);uA[((A0)>>2)]=A2;var AZ=AL;var AY=((AZ+4)&4294967295);var AW=uA[((AY)>>2)];var AV=(AW)==0;var AU=AL;if(AV){Bi=5}else{Bi=6}if(Bi==5){rQ(AU);B0=0}else{if(Bi==6){var AT=((AU+36)&4294967295);var AS=AX;uA[((AT)>>2)]=AS;var AR=Bl;var AQ=(((AR)*2)&4294967295);var AP=AX;var AO=kW(AP,AQ);var AN=AO;var AM=AL;var AK=((AM+8)&4294967295);uA[((AK)>>2)]=AN;var AJ=AL;var AH=((AJ+8)&4294967295);var i=uA[((AH)>>2)];var e=(i)==0;if(e){Bi=7}else{Bi=8}if(Bi==7){var B9=AL;rQ(B9);B0=0}else{if(Bi==8){var B8=AX;var B7=kW(B8,2);var B5=B7;var B4=AL;var B3=((B4+12)&4294967295);uA[((B3)>>2)]=B5;var B2=AL;var BQ=((B2+16)&4294967295);pB[((BQ)>>2)]=1;var BP=AL;var BO=((BP+24)&4294967295);pB[((BO)>>2)]=1;var BN=AL;var BM=((BN+20)&4294967295);pB[((BM)>>2)]=1;var BL=AL;var BK=((BL+72)&4294967295);var BJ=B1;uA[((BK)>>2)]=BJ;var BI=AL;var BH=((BI+28)&4294967295);var BG=Bl;uA[((BH)>>2)]=BG;var BF=AL;var BE=((BF+56)&4294967295);var BC=AI;uA[((BE)>>2)]=BC;var BB=AL;var Bz=((BB+60)&4294967295);var Bx=Bj;uA[((Bz)>>2)]=Bx;var Bv=AL;var Bt=((Bv+64)&4294967295);var Br=AX;uA[((Bt)>>2)]=Br;var Bh=AL;B0=Bh}}}}}}}}var Bg=B0;A4=Bg;var Bk=A4;return Bk;return null}function wC(Bf,Bm,A1,AJ,Bu,AZ,Bc){var A2;var AK;var AU;var Bt;var AN;var AM;var AP;var A6;var Be;var A7;var A0;var A5;var A4;var i;var BB;var Bw;var AH;var A3;var Bs;var BH;A0=Bf;A5=Bm;A4=A1;i=AJ;BB=Bu;Bw=AZ;AH=Bc;var Br=Bw;var Bq=AH;var Bp=s8(Br,Bq);BH=Bp;var Bo=BH;var Bn=A4;Be=Bo;A7=Bn;var Bk=Be;var Bi=((Bk+16)&4294967295);var Bg=A7;pB[((Bi)>>2)]=Bg;var AY=BH;var AX=i;AP=AY;A6=AX;var AW=AP;var AV=((AW+24)&4294967295);var AT=A6;pB[((AV)>>2)]=AT;var AS=BH;var AR=BB;AN=AS;AM=AR;var AQ=AN;var AO=((AQ+20)&4294967295);var AL=AM;pB[((AO)>>2)]=AL;var e=BH;var BG=A0;var BF=A5;var BE=aL(e,BG,BF);var BD=BH;var BC=uX(BD);var BA=BH;AK=BA;var Bz=AK;var By=((Bz+48)&4294967295);var Bv=uA[((By)>>2)];Bt=Bv;var Bl=Bt;AU=Bl;var AI=AU;A5=AI;var Bj=BH;var Bh=A0;var Bd=A5;var Bb=ff(Bj,Bh,Bd);var Ba=BH;rQ(Ba);var A9=A5;Bs=A9;var A8=Bs;A3=A8;var Bx=A3;return Bx;return null}function dv(Bf,Bm,A1,AJ,Bu,AZ,Bc){var A2;var AK;var AU;var Bt;var AN;var AM;var AP;var A6;var Be;var A7;var A0;var A5;var A4;var i;var BB;var Bw;var AH;var A3;var Bs;var BH;A0=Bf;A5=Bm;A4=A1;i=AJ;BB=Bu;Bw=AZ;AH=Bc;var Br=Bw;var Bq=AH;var Bp=s8(Br,Bq);BH=Bp;var Bo=BH;var Bn=A4;Be=Bo;A7=Bn;var Bk=Be;var Bi=((Bk+16)&4294967295);var Bg=A7;pB[((Bi)>>2)]=Bg;var AY=BH;var AX=i;AP=AY;A6=AX;var AW=AP;var AV=((AW+24)&4294967295);var AT=A6;pB[((AV)>>2)]=AT;var AS=BH;var AR=BB;AN=AS;AM=AR;var AQ=AN;var AO=((AQ+20)&4294967295);var AL=AM;pB[((AO)>>2)]=AL;var e=BH;var BG=A0;var BF=A5;var BE=hI(e,BG,BF);var BD=BH;var BC=uX(BD);var BA=BH;AK=BA;var Bz=AK;var By=((Bz+48)&4294967295);var Bv=uA[((By)>>2)];Bt=Bv;var Bl=Bt;AU=Bl;var AI=AU;A5=AI;var Bj=BH;var Bh=A0;var Bd=A5;var Bb=l9(Bj,Bh,Bd);var Ba=BH;rQ(Ba);var A9=A5;Bs=A9;var A8=Bs;A3=A8;var Bx=A3;return Bx;return null}function vg(Mc,L4,Gq,Me,Ku,HB,Ox){var Ba;var Lw=null;var DH;var IS;var BH;var Lv;var D1;var Ja;var BU;var LR;var Ex;var Jr;var B7;var L3;var Ey;var Fn;var Cj;var JJ;var Ob;var NW;var M9;var CR;var Kc;var Oz;var N9;var Nx;var CP;var F3;var Kn;var Ck;var MR;var Nf;var HW;var GA;var Jn;var Ni;var C1;var I4;var Bs;var Ld;var Dj;var BG;var Oa;var C5;var Hm;var IF;var CO;var G5;var BN;var IE;var NA;var Iy;var OM;var J5;var Kh;var Mi;var Mj;var My;var B0;var B1;var B2;var MG;var Dv;var CN;var CJ;var Mh;var Du;var GM;var MW;var Ig;var Cg;var Ea;var F2;var Bl;G5=Mc;BN=L4;IE=Gq;NA=Me;Iy=Ku;OM=HB;J5=Ox;CJ=0;Mh=0;Du=0;GM=0;MW=0;Ig=0;Cg=-1;Ea=-1;F2=0;Bl=0;var CM=G5;var CL=(((CM))|0)==0;if(CL){Ba=6}else{Ba=1}$bb5$$bb$2:do{if(Ba==1){var CK=BN;var CI=(CK)==0;if(CI){Ba=6;break $bb5$$bb$2}var CH=IE;var CG=(CH)!=0;if(CG){Ba=4}else{Ba=3}if(Ba==3){var GU=NA;var GT=(GU)==0;if(GT){Ba=6;break $bb5$$bb$2}}var GS=J5;var GR=((GS+4)&4294967295);var GQ=uA[((GR)>>2)];var GP=G5;var GO=(((GQ))|0)>=(((GP))|0);if(GO){Ba=6;break $bb5$$bb$2}var GN=J5;var GL=((GN+4)&4294967295);var GK=uA[((GL)>>2)];var Gy=BN;var Gx=((Gy+4*GK)&4294967295);var Gw=uA[((Gx)>>2)];var Gv=(Gw)==0;if(Gv){Ba=6;break $bb5$$bb$2}var Gu=J5;var Gt=((Gu+4)&4294967295);var Gs=uA[((Gt)>>2)];var Gr=BN;var Gp=((Gr+4*Gs)&4294967295);var Go=uA[((Gp)>>2)];var Gd=pt(Go,((iH)&4294967295));var Gc=(((Gd))|0)==0;var Gb=J5;var Ga=((Gb+4)&4294967295);var F9=uA[((Ga)>>2)];if(Gc){Ba=8}else{Ba=9}if(Ba==8){var F8=(((F9)+1)&4294967295);var F7=J5;var F6=((F7+4)&4294967295);uA[((F6)>>2)]=F8;CN=-1;Ba=141;break $bb5$$bb$2}else{if(Ba==9){var F5=(((F9))|0)==0;if(F5){Ba=10}else{Ba=11}if(Ba==10){var F4=J5;var FH=((F4+16)&4294967295);uA[((FH)>>2)]=1;var FG=J5;var FF=((FG+16)&4294967295);var FE=uA[((FF)>>2)];var FD=J5;var FC=((FD+4)&4294967295);uA[((FC)>>2)]=FE}var FB=IE;var FA=(FB)==0;if(FA){Ba=18}else{Ba=12}$bb17$$bb11$16:do{if(Ba==12){var Fz=IE;var Fy=la[((Fz)>>0)];var Fc=iB((Fy),8,0)==45;if(Fc){Ba=14}else{Ba=13}if(Ba==13){var Fb=IE;var Fa=la[((Fb)>>0)];var E9=iB((Fa),8,0)==43;if(!(E9)){Ba=18;break $bb17$$bb11$16}}var E8=IE;var E7=la[((E8)>>0)];var E6=iB((E7),8,0)==45;if(E6){Ba=15}else{Ba=16}if(Ba==15){Dv=1}else{if(Ba==16){Dv=2}}var E5=Dv;CJ=E5;var E4=IE;var E3=((E4+1)&4294967295);IE=E3;Ba=22;break $bb17$$bb11$16}}while(0);if(Ba==18){var EI=lr(((hE)&4294967295));var EH=(EI)!=0;if(EH){Ba=19}else{Ba=20}if(Ba==19){MG=2}else{if(Ba==20){MG=0}}var EG=MG;CJ=EG}var EF=J5;var EE=((EF+16)&4294967295);var ED=uA[((EE)>>2)];var EC=(((ED))|0)==1;if(EC){Ba=23}else{Ba=59}$bb22$$bb38$32:do{if(Ba==23){var EB=CJ;if(EB==1){Ba=43}else{if(EB==2){Ba=51}else{Ba=24}}if(Ba==24){var EA=J5;var Ez=((EA+4)&4294967295);var Ec=uA[((Ez)>>2)];Mh=Ec;Du=0;$bb25$36:while(1){var D5=J5;var D4=((D5+4)&4294967295);var D3=uA[((D4)>>2)];var D2=BN;var DQ=((D2+4*D3)&4294967295);var DP=uA[((DQ)>>2)];var DO=OM;Oa=DP;C5=DO;var DN=(DP)==0;if(DN){Ba=30}else{Ba=27}$bb3_i$$bb_i$38:do{if(Ba==27){var DM=Oa;var DL=((DM)&4294967295);var DK=la[((DL)>>0)];var DJ=iB((DK),8,0)==45;if(DJ){Ba=30;break $bb3_i$$bb_i$38}var DI=C5;var DG=(((DI))|0)==0;if(DG){Ba=31}else{Ba=29}if(Ba==29){var Dt=Oa;var Ds=((Dt)&4294967295);var Dr=la[((Ds)>>0)];var Dq=iB((Dr),8,0)==43;if(Dq){Ba=30;break $bb3_i$$bb_i$38}}IF=0;Ba=32;break $bb3_i$$bb_i$38}}while(0);if(Ba==30){IF=1}var Dp=IF;var Do=oD((Dp),8,0);CO=Do;var Dn=CO;Hm=Dn;var Mv=Hm;var Dm=(((Mv))|0)==0;var Dl=oD((Dm),1,0);B2=Dl;var NM=iB((Dl),8,0)!=0;var Dk=J5;var J2=((Dk+4)&4294967295);var J0=xk[((J2)>>2)];if(!(NM)){Ba=33;break $bb25$36}var Eb=(((J0)+1)&4294967295);var D9=J5;var D8=((D9+4)&4294967295);uA[((D8)>>2)]=Eb;var D7=Du;var D6=(((D7)+1)&4294967295);Du=D6;Ba=26;continue $bb25$36}var JY=BN;var JW=((JY+4*J0)&4294967295);var JU=uA[((JW)>>2)];var JS=(JU)==0;if(JS){Ba=34}else{Ba=35}if(Ba==34){var JQ=Mh;var JO=J5;var JM=((JO+4)&4294967295);uA[((JM)>>2)]=JQ;CN=-1;Ba=141;break $bb5$$bb$2}else{if(Ba==35){var JL=J5;var JG=((JL+4)&4294967295);var JE=uA[((JG)>>2)];var JC=BN;var JA=((JC+4*JE)&4294967295);var Jy=uA[((JA)>>2)];var Jw=pt(Jy,((iH)&4294967295));var Ju=(((Jw))|0)==0;if(!(Ju)){Ba=59;break $bb22$$bb38$32}var Js=BN;var Jp=Mh;var Jo=((Js+4*Jp)&4294967295);var Jk=Du;Ey=Jo;Fn=Jk;Cj=1;var Jj=Ey;var Jh=Fn;DH=Jj;IS=Jh;BH=0;var Jf=IS;var Jd=(((Jf))|0)>>1;var Jb=BH;var I8=(((Jd))|0)>(((Jb))|0);if(I8){Ba=37}else{Ba=38}$bb_i66$$_ZL21reverse_argv_elementsPPci_exit67$53:do{if(Ba==37){while(1){var I6=DH;var I3=BH;var I1=((I6+4*I3)&4294967295);var IZ=uA[((I1)>>2)];Lv=IZ;var IX=IS;var IV=BH;var BR=((0-(IV))&4294967295);var IT=(((IX)+-1)&4294967295);var IQ=(((IT)+(BR))&4294967295);var IO=DH;var IM=((IO+4*IQ)&4294967295);var IK=uA[((IM)>>2)];var II=DH;var IG=BH;var ID=((II+4*IG)&4294967295);uA[((ID)>>2)]=IK;var IC=IS;var IB=BH;var Bm=((0-(IB))&4294967295);var IA=(((IC)+-1)&4294967295);var Iz=(((IA)+(Bm))&4294967295);var Ix=DH;var Iw=((Ix+4*Iz)&4294967295);var Iv=Lv;uA[((Iw)>>2)]=Iv;var Iu=BH;var It=(((Iu)+1)&4294967295);BH=It;var Is=IS;var Ir=(((Is))|0)>>1;var Iq=BH;var Ip=(((Ir))|0)>(((Iq))|0);if(Ip){Ba=37;continue}else{Ba=38;break $bb_i66$$_ZL21reverse_argv_elementsPPci_exit67$53}}}}while(0);var Io=Fn;var In=Cj;var Im=(((In)+(Io))&4294967295);var Il=Ey;D1=Il;Ja=Im;BU=0;var Ik=Ja;var Ij=(((Ik))|0)>>1;var Ii=BU;var Ih=(((Ij))|0)>(((Ii))|0);if(Ih){Ba=39}else{Ba=40}$bb_i58$$_ZL21reverse_argv_elementsPPci_exit59$57:do{if(Ba==39){while(1){var If=D1;var Ie=BU;var Id=((If+4*Ie)&4294967295);var Ic=uA[((Id)>>2)];LR=Ic;var Ib=Ja;var Ia=BU;var B4=((0-(Ia))&4294967295);var H9=(((Ib)+-1)&4294967295);var H8=(((H9)+(B4))&4294967295);var HV=D1;var HU=((HV+4*H8)&4294967295);var HT=uA[((HU)>>2)];var HS=D1;var HR=BU;var HQ=((HS+4*HR)&4294967295);uA[((HQ)>>2)]=HT;var HP=Ja;var HO=BU;var By=((0-(HO))&4294967295);var HN=(((HP)+-1)&4294967295);var HM=(((HN)+(By))&4294967295);var HA=D1;var Hz=((HA+4*HM)&4294967295);var Hy=LR;uA[((Hz)>>2)]=Hy;var Hx=BU;var Hw=(((Hx)+1)&4294967295);BU=Hw;var Hv=Ja;var Hu=(((Hv))|0)>>1;var Ht=BU;var Hs=(((Hu))|0)>(((Ht))|0);if(Hs){Ba=39;continue}else{Ba=40;break $bb_i58$$_ZL21reverse_argv_elementsPPci_exit59$57}}}}while(0);var Hr=Ey;var Hf=Cj;Ex=Hr;Jr=Hf;B7=0;var He=Jr;var Hd=(((He))|0)>>1;var Hc=B7;var Hb=(((Hd))|0)>(((Hc))|0);if(Hb){Ba=41}else{Ba=42}$bb_i50$$_ZL21reverse_argv_elementsPPci_exit51$61:do{if(Ba==41){while(1){var Ha=Ex;var G9=B7;var G8=((Ha+4*G9)&4294967295);var G7=uA[((G8)>>2)];L3=G7;var G6=Jr;var AY=B7;var Cf=((0-(AY))&4294967295);var AW=(((G6)+-1)&4294967295);var AU=(((AW)+(Cf))&4294967295);var AS=Ex;var AQ=((AS+4*AU)&4294967295);var AO=uA[((AQ)>>2)];var AM=Ex;var AK=B7;var AI=((AM+4*AK)&4294967295);uA[((AI)>>2)]=AO;var i=Jr;var Pf=B7;var BM=((0-(Pf))&4294967295);var Pd=(((i)+-1)&4294967295);var Pb=(((Pd)+(BM))&4294967295);var O9=Ex;var O7=((O9+4*Pb)&4294967295);var O5=L3;uA[((O7)>>2)]=O5;var O3=B7;var O1=(((O3)+1)&4294967295);B7=O1;var OZ=Jr;var OX=(((OZ))|0)>>1;var OU=B7;var OS=(((OX))|0)>(((OU))|0);if(OS){Ba=41;continue}else{Ba=42;break $bb_i50$$_ZL21reverse_argv_elementsPPci_exit51$61}}}}while(0);var OQ=Mh;var OO=(((OQ)+1)&4294967295);var OL=J5;var OJ=((OL+4)&4294967295);uA[((OJ)>>2)]=OO;CN=-1;Ba=141;break $bb5$$bb$2}}}else{if(Ba==43){var OH=J5;var OF=((OH+4)&4294967295);var OD=uA[((OF)>>2)];var OB=BN;var Ov=((OB+4*OD)&4294967295);var Ot=uA[((Ov)>>2)];var Or=OM;JJ=Ot;Ob=Or;var Op=JJ;var On=(Op)==0;if(On){Ba=47}else{Ba=44}$bb3_i37$$bb_i34$66:do{if(Ba==44){var Ol=JJ;var Oj=((Ol)&4294967295);var Oh=la[((Oj)>>0)];var Of=iB((Oh),8,0)==45;if(Of){Ba=47;break $bb3_i37$$bb_i34$66}var Od=Ob;var N8=(((Od))|0)==0;if(N8){Ba=48}else{Ba=46}if(Ba==46){var N7=JJ;var N6=((N7)&4294967295);var N5=la[((N6)>>0)];var N4=iB((N5),8,0)==43;if(N4){Ba=47;break $bb3_i37$$bb_i34$66}}M9=0;Ba=49;break $bb3_i37$$bb_i34$66}}while(0);if(Ba==47){M9=1}var N3=M9;var N2=oD((N3),8,0);CR=N2;var N1=CR;NW=N1;var OW=NW;var N0=(((OW))|0)==0;var NZ=oD((N0),1,0);B1=NZ;var OA=iB((NZ),8,0)!=0;if(!(OA)){Ba=59;break $bb22$$bb38$32}var NX=J5;var NV=((NX+4)&4294967295);var NU=xk[((NV)>>2)];var NT=BN;var NS=((NT+4*NU)&4294967295);var NR=uA[((NS)>>2)];var NQ=J5;var NP=((NQ)&4294967295);uA[((NP)>>2)]=NR;var NO=(((NU)+1)&4294967295);var NN=J5;var NL=((NN+4)&4294967295);uA[((NL)>>2)]=NO;var NK=J5;var NJ=((NK+12)&4294967295);uA[((NJ)>>2)]=1;var NI=J5;var NH=((NI+12)&4294967295);var NG=uA[((NH)>>2)];CN=NG;Ba=141;break $bb5$$bb$2}else{if(Ba==51){var NF=J5;var NE=((NF+4)&4294967295);var ND=uA[((NE)>>2)];var NC=BN;var Np=((NC+4*ND)&4294967295);var No=uA[((Np)>>2)];var Nn=OM;Kc=No;Oz=Nn;var Nm=Kc;var Nl=(Nm)==0;if(Nl){Ba=55}else{Ba=52}$bb3_i26$$bb_i23$77:do{if(Ba==52){var Nk=Kc;var Nj=((Nk)&4294967295);var Nh=la[((Nj)>>0)];var Ng=iB((Nh),8,0)==45;if(Ng){Ba=55;break $bb3_i26$$bb_i23$77}var Ne=Oz;var M2=(((Ne))|0)==0;if(M2){Ba=56}else{Ba=54}if(Ba==54){var M1=Kc;var M0=((M1)&4294967295);var MZ=la[((M0)>>0)];var MY=iB((MZ),8,0)==43;if(MY){Ba=55;break $bb3_i26$$bb_i23$77}}Nx=0;Ba=57;break $bb3_i26$$bb_i23$77}}while(0);if(Ba==55){Nx=1}var MX=Nx;var MV=oD((MX),8,0);CP=MV;var MU=CP;N9=MU;var e=N9;var MT=(((e))|0)==0;var MS=oD((MT),1,0);B0=MS;var Oy=iB((MS),8,0)!=0;if(!(Oy)){Ba=59;break $bb22$$bb38$32}CN=-1;Ba=141;break $bb5$$bb$2}}}}}while(0);var MF=NA;var ME=(MF)!=0;if(ME){Ba=60}else{Ba=83}$bb39$$bb61thread_pre_split$88:do{if(Ba==60){var MD=J5;var MC=((MD+4)&4294967295);var MB=uA[((MC)>>2)];var MA=BN;var Mz=((MA+4*MB)&4294967295);var Mx=uA[((Mz)>>2)];var Mw=l4(Mx,((iH)&4294967295),2);var Mu=(((Mw))|0)==0;if(Mu){Ba=63}else{Ba=61}if(Ba==61){var F0=OM;var FY=(((F0))|0)==0;if(FY){Ba=83;break $bb39$$bb61thread_pre_split$88}var FW=J5;var FU=((FW+4)&4294967295);var FS=uA[((FU)>>2)];var FQ=BN;var FO=((FQ+4*FS)&4294967295);var FM=uA[((FO)>>2)];var FK=((FM)&4294967295);var FI=la[((FK)>>0)];var Fw=iB((FI),8,0)==43;if(!(Fw)){Ba=83;break $bb39$$bb61thread_pre_split$88}}var Fu=J5;var Fs=((Fu+16)&4294967295);var Fq=uA[((Fs)>>2)];var Fo=(((Fq))|0)==1;if(!(Fo)){Ba=83;break $bb39$$bb61thread_pre_split$88}var Fl=J5;var Fj=((Fl+4)&4294967295);var Fh=uA[((Fj)>>2)];var Ff=BN;var Fd=((Ff+4*Fh)&4294967295);var E1=uA[((Fd)>>2)];var EZ=l4(E1,((iH)&4294967295),2);var EX=(((EZ))|0)==0;if(EX){Ba=65}else{Ba=66}if(Ba==65){var EV=J5;var ET=((EV+16)&4294967295);uA[((ET)>>2)]=2}Cg=-1;var ER=J5;var EP=((ER+4)&4294967295);var EN=uA[((EP)>>2)];var EL=BN;var EJ=((EL+4*EN)&4294967295);var Ev=uA[((EJ)>>2)];var Et=J5;var Er=((Et+16)&4294967295);var Ep=uA[((Er)>>2)];var En=((Ev+Ep)&4294967295);var El=qX(En,61);Ig=El;var Ej=(El)==0;if(Ej){Ba=67}else{Ba=68}if(Ba==67){var Eh=J5;var Ef=((Eh+4)&4294967295);var Ed=uA[((Ef)>>2)];var D0=BN;var DZ=((D0+4*Ed)&4294967295);var DY=uA[((DZ)>>2)];var DX=wg(DY);MW=DX;var DW=J5;var DV=((DW+4)&4294967295);var DU=uA[((DV)>>2)];var DT=BN;var DS=((DT+4*DU)&4294967295);var DR=uA[((DS)>>2)];var DF=MW;var DE=((DR+DF)&4294967295);Ig=DE;var DD=J5;var DC=((DD+16)&4294967295);var DB=uA[((DC)>>2)];var DA=MW;var Dz=(((DA)-(DB))&4294967295);MW=Dz}else{if(Ba==68){var Dy=Ig;var Dx=(Dy);var Dw=J5;var Di=((Dw+4)&4294967295);var Dh=uA[((Di)>>2)];var Dg=BN;var Df=((Dg+4*Dh)&4294967295);var De=uA[((Df)>>2)];var Dd=(De);var Ch=((0-(Dd))&4294967295);var Dc=J5;var Db=((Dc+16)&4294967295);var Da=uA[((Db)>>2)];var JK=((0-(Da))&4294967295);var C9=(((Ch)+(Dx))&4294967295);var C0=(((C9)+(JK))&4294967295);MW=C0}}GM=0;while(1){var KI=NA;var KG=GM;var KE=((KI+16*KG)&4294967295);var KB=((KE)&4294967295);var Kz=uA[((KB)>>2)];var Kx=(Kz)!=0;if(!(Kx)){Ba=80;break}var CZ=NA;var CY=GM;var CX=((CZ+16*CY)&4294967295);var CW=((CX)&4294967295);var CV=uA[((CW)>>2)];var CU=J5;var CT=((CU+4)&4294967295);var CS=uA[((CT)>>2)];var CQ=BN;var CF=((CQ+4*CS)&4294967295);var CE=uA[((CF)>>2)];var CD=J5;var CC=((CD+16)&4294967295);var CB=uA[((CC)>>2)];var CA=((CE+CB)&4294967295);var Cz=MW;var Cy=l4(CA,CV,Cz);var Cx=(((Cy))|0)==0;if(Cx){Ba=71}else{Ba=78}if(Ba==71){var Cw=NA;var Cu=GM;var Ct=((Cw+16*Cu)&4294967295);var Cs=((Ct)&4294967295);var Cr=uA[((Cs)>>2)];var Cq=wg(Cr);var Cp=MW;var Co=(((Cq))|0)==(((Cp))|0);if(Co){Ba=72;break}var Cm=Cg;var Cl=(((Cm))|0)<0;if(!(Cl)){Ba=75;break}var LP=GM;Cg=LP}var KM=GM;var KK=(((KM)+1)&4294967295);GM=KK;Ba=79;continue}if(Ba==80){var H1=Cg;Lw=80}else{if(Ba==72){var Cn=GM;Cg=Cn;Lw=72}else{if(Ba==75){var LN=J5;var LL=((LN+8)&4294967295);var LJ=uA[((LL)>>2)];var LH=(((LJ))|0)!=0;if(LH){Ba=76}else{Ba=77}if(Ba==76){var LF=NA;var LD=GM;var LB=((LF+16*LD)&4294967295);var Lz=((LB)&4294967295);var Lx=uA[((Lz)>>2)];var Lt=NA;var Lr=Cg;var Lp=((Lt+16*Lr)&4294967295);var Ln=((Lp)&4294967295);var Ll=uA[((Ln)>>2)];var Lj=J5;var Lh=((Lj+4)&4294967295);var Lf=uA[((Lh)>>2)];var Lc=BN;var La=((Lc+4*Lf)&4294967295);var K8=uA[((La)>>2)];var K6=BN;var K4=((K6)&4294967295);var K2=uA[((K4)>>2)];var K0=uA[((ta)>>2)];var KY=Am(K0,((pq)&4294967295),K2,K8,Ll,Lx)}var KW=J5;var KU=((KW+12)&4294967295);uA[((KU)>>2)]=63;var KS=J5;var KQ=((KS+12)&4294967295);var KO=uA[((KQ)>>2)];CN=KO;Ba=141;break $bb5$$bb$2}}}var Kv=Lw==80?H1:(Cn);var Kt=(((Kv))|0)>=0;if(!(Kt)){Ba=83;break $bb39$$bb61thread_pre_split$88}var Ks=NA;var Kr=Cg;var Kq=((Ks+16*Kr)&4294967295);var Kp=((Kq+4)&4294967295);var Ko=uA[((Kp)>>2)];Ea=Ko;Lw=82;Ba=84;break $bb39$$bb61thread_pre_split$88}}while(0);if(Ba==83){var Oc=Cg;Lw=83}var Km=Lw==83?Oc:(Kr);var Kl=(((Km))|0)<0;if(Kl){Ba=85}else{Ba=99}$bb62$$bb76$122:do{if(Ba==85){var Kk=IE;var Kj=(Kk)!=0;if(!(Kj)){Ba=99;break $bb62$$bb76$122}var Kg=J5;var Kf=((Kg+4)&4294967295);var Ke=uA[((Kf)>>2)];var Kd=BN;var Kb=((Kd+4*Ke)&4294967295);var Ka=uA[((Kb)>>2)];var J9=J5;var J8=((J9+16)&4294967295);var J7=uA[((J8)>>2)];var J6=((Ka+J7)&4294967295);var J4=la[((J6)>>0)];var J3=iB((J4),8,0);var J1=IE;var JZ=qX(J1,J3);F2=JZ;var JX=F2;var JV=(JX)==0;if(JV){Ba=87}else{Ba=92}if(Ba==87){var JT=J5;var JR=((JT+8)&4294967295);var JP=uA[((JR)>>2)];var JN=(((JP))|0)!=0;if(JN){Ba=88}else{Ba=89}if(Ba==88){var JI=J5;var JH=((JI+4)&4294967295);var JF=uA[((JH)>>2)];var JD=BN;var JB=((JD+4*JF)&4294967295);var Jz=uA[((JB)>>2)];var Jx=J5;var Jv=((Jx+16)&4294967295);var Jt=uA[((Jv)>>2)];var Jq=((Jz+Jt)&4294967295);var Jm=la[((Jq)>>0)];var Jl=iB((Jm),8,0);var Ji=BN;var Jg=((Ji)&4294967295);var Je=uA[((Jg)>>2)];var Jc=uA[((ta)>>2)];var I9=Am(Jc,((w4)&4294967295),Je,Jl)}var I7=J5;var I5=((I7+16)&4294967295);var I2=uA[((I5)>>2)];var I0=(((I2)+1)&4294967295);var IY=J5;var IW=((IY+16)&4294967295);uA[((IW)>>2)]=I0;var IU=J5;var IR=((IU+4)&4294967295);var IP=uA[((IR)>>2)];var IN=BN;var IL=((IN+4*IP)&4294967295);var IJ=uA[((IL)>>2)];var IH=J5;var Ce=((IH+16)&4294967295);var Cd=uA[((Ce)>>2)];var Cc=((IJ+Cd)&4294967295);var Cb=la[((Cc)>>0)];var Ca=iB((Cb),8,0)==0;if(Ca){Ba=90}else{Ba=91}if(Ba==90){var B9=J5;var B8=((B9+4)&4294967295);var B6=uA[((B8)>>2)];var B5=(((B6)+1)&4294967295);var B3=J5;var BZ=((B3+4)&4294967295);uA[((BZ)>>2)]=B5;var BY=J5;var BX=((BY+16)&4294967295);uA[((BX)>>2)]=1}var BW=J5;var BV=((BW+12)&4294967295);uA[((BV)>>2)]=63;var BT=J5;var BS=((BT+12)&4294967295);var BQ=uA[((BS)>>2)];CN=BQ;Ba=141;break $bb5$$bb$2}else{if(Ba==92){var BP=F2;var BO=((BP+1)&4294967295);var BK=la[((BO)>>0)];var BJ=iB((BK),8,0)==58;if(BJ){Ba=93}else{Ba=97}if(Ba==93){var BI=F2;var BF=((BI+2)&4294967295);var BE=la[((BF)>>0)];var BD=iB((BE),8,0)==58;if(BD){Ba=94}else{Ba=95}if(Ba==94){Mj=2}else{if(Ba==95){Mj=1}}var BC=Mj;My=BC}else{if(Ba==97){My=0}}var BB=My;Ea=BB;var BA=J5;var Bz=((BA+4)&4294967295);var Bx=uA[((Bz)>>2)];var Bw=BN;var Bv=((Bw+4*Bx)&4294967295);var Bu=uA[((Bv)>>2)];var Bt=J5;var Br=((Bt+16)&4294967295);var Bq=uA[((Br)>>2)];var Bp=((Bu+Bq)&4294967295);var Bo=((Bp+1)&4294967295);Ig=Bo;var Bn=F2;var Bk=la[((Bn)>>0)];var Bj=iB((Bk),8,0);var Bi=J5;var Bh=((Bi+12)&4294967295);uA[((Bh)>>2)]=Bj}}}}while(0);Bl=0;var Bg=Ea;if(Bg==1){Ba=106}else{if(Bg==2){Ba=100}else{Ba=117}}if(Ba==117){var Hp=Cg;var Ho=(((Hp))|0)<0;var Hn=J5;var Hl=((Hn+16)&4294967295);if(Ho){Ba=118}else{Ba=120}$bb96$$bb99$145:do{if(Ba==118){var Hk=uA[((Hl)>>2)];var Hj=(((Hk)+1)&4294967295);var Hi=J5;var Hh=((Hi+16)&4294967295);uA[((Hh)>>2)]=Hj;var Hg=J5;var G4=((Hg+4)&4294967295);var G3=uA[((G4)>>2)];var G2=BN;var G1=((G2+4*G3)&4294967295);var G0=uA[((G1)>>2)];var GZ=J5;var GY=((GZ+16)&4294967295);var GX=uA[((GY)>>2)];var GW=((G0+GX)&4294967295);var GV=la[((GW)>>0)];var GJ=iB((GV),8,0)==0;if(!(GJ)){Ba=121;break $bb96$$bb99$145}var GI=J5;var GH=((GI+16)&4294967295);uA[((GH)>>2)]=1}else{if(Ba==120){uA[((Hl)>>2)]=1}}}while(0);var GG=J5;var GF=((GG)&4294967295);uA[((GF)>>2)]=0}else{if(Ba==106){var A0=Ig;var AZ=la[((A0)>>0)];var AX=iB((AZ),8,0)==61;if(AX){Ba=107}else{Ba=108}if(Ba==107){var AV=Ig;var AT=((AV+1)&4294967295);Ig=AT}var AR=Ig;var AP=la[((AR)>>0)];var AN=iB((AP),8,0)!=0;var AL=J5;if(AN){Ba=109}else{Ba=110}if(Ba==109){var AJ=((AL)&4294967295);var AH=Ig;uA[((AJ)>>2)]=AH;var Pg=J5;var Pe=((Pg+16)&4294967295);uA[((Pe)>>2)]=1}else{if(Ba==110){var Pc=((AL+4)&4294967295);var Pa=uA[((Pc)>>2)];var O8=(((Pa)+1)&4294967295);var O6=G5;var O4=(((O8))|0)>=(((O6))|0);var O2=J5;if(O4){Ba=111}else{Ba=116}if(Ba==111){var O0=((O2+8)&4294967295);var OY=uA[((O0)>>2)];var OV=(((OY))|0)!=0;if(OV){Ba=112}else{Ba=115}if(Ba==112){var OT=BN;var OR=((OT)&4294967295);var OP=uA[((OR)>>2)];var ON=uA[((ta)>>2)];var OK=Am(ON,((d1)&4294967295),OP);var OI=Cg;var OG=(((OI))|0)>=0;if(OG){Ba=113}else{Ba=114}if(Ba==113){var OE=NA;var OC=Cg;var Ow=((OE+16*OC)&4294967295);var Ou=((Ow)&4294967295);var Os=uA[((Ou)>>2)];var Oq=uA[((ta)>>2)];var Oo=Am(Oq,((mR)&4294967295),Os)}else{if(Ba==114){var Om=F2;var Ok=la[((Om)>>0)];var Oi=iB((Ok),8,0);var Og=uA[((ta)>>2)];var Oe=Am(Og,((uy)&4294967295),Oi)}}}var H7=J5;var H6=((H7+4)&4294967295);var H5=uA[((H6)>>2)];var H4=(((H5)+1)&4294967295);var H3=J5;var H2=((H3+4)&4294967295);uA[((H2)>>2)]=H4;var H0=J5;var HZ=((H0+12)&4294967295);uA[((HZ)>>2)]=58;var HY=J5;var HX=((HY+12)&4294967295);var HL=uA[((HX)>>2)];CN=HL;Ba=141;break $bb5$$bb$2}else{if(Ba==116){var HK=((O2+4)&4294967295);var HJ=uA[((HK)>>2)];var HI=(((HJ)+1)&4294967295);var HH=BN;var HG=((HH+4*HI)&4294967295);var HF=uA[((HG)>>2)];var HE=J5;var HD=((HE)&4294967295);uA[((HD)>>2)]=HF;Bl=1;var HC=J5;var Hq=((HC+16)&4294967295);uA[((Hq)>>2)]=1}}}}}else{if(Ba==100){var Bf=Ig;var Be=la[((Bf)>>0)];var Bd=iB((Be),8,0)==61;if(Bd){Ba=101}else{Ba=102}if(Ba==101){var Bc=Ig;var Bb=((Bc+1)&4294967295);Ig=Bb}var A9=Ig;var A8=la[((A9)>>0)];var A7=iB((A8),8,0)!=0;if(A7){Ba=103}else{Ba=104}if(Ba==103){var A6=Ig;Mi=A6}else{if(Ba==104){Mi=0}}var A5=J5;var A4=((A5)&4294967295);var A3=Mi;uA[((A4)>>2)]=A3;var A2=J5;var A1=((A2+16)&4294967295);uA[((A1)>>2)]=1}}}var GE=CJ;var GD=(((GE))|0)!=0;if(GD){Ba=132}else{Ba=123}$bb105$$bb102$175:do{if(Ba==123){var GC=J5;var GB=((GC+16)&4294967295);var Gz=uA[((GB)>>2)];var Gn=(((Gz))|0)!=1;if(Gn){Ba=132;break $bb105$$bb102$175}var Gm=Du;var Gl=(((Gm))|0)==0;if(Gl){Ba=132;break $bb105$$bb102$175}var Gk=Bl;var Gj=(((Gk)+1)&4294967295);var Gi=BN;var Gh=Mh;var Gg=((Gi+4*Gh)&4294967295);var Gf=Du;Ld=Gg;Dj=Gf;BG=Gj;var Ge=Ld;var F1=Dj;F3=Ge;Kn=F1;Ck=0;var FZ=Kn;var FX=(((FZ))|0)>>1;var FV=Ck;var FT=(((FX))|0)>(((FV))|0);if(FT){Ba=126}else{Ba=127}$bb_i17$$_ZL21reverse_argv_elementsPPci_exit18$179:do{if(Ba==126){while(1){var FR=F3;var FP=Ck;var FN=((FR+4*FP)&4294967295);var FL=uA[((FN)>>2)];MR=FL;var FJ=Kn;var Fx=Ck;var Cv=((0-(Fx))&4294967295);var Fv=(((FJ)+-1)&4294967295);var Ft=(((Fv)+(Cv))&4294967295);var Fr=F3;var Fp=((Fr+4*Ft)&4294967295);var Fm=uA[((Fp)>>2)];var Fk=F3;var Fi=Ck;var Fg=((Fk+4*Fi)&4294967295);uA[((Fg)>>2)]=Fm;var Fe=Kn;var E2=Ck;var Ci=((0-(E2))&4294967295);var E0=(((Fe)+-1)&4294967295);var EY=(((E0)+(Ci))&4294967295);var EW=F3;var EU=((EW+4*EY)&4294967295);var ES=MR;uA[((EU)>>2)]=ES;var EQ=Ck;var EO=(((EQ)+1)&4294967295);Ck=EO;var EM=Kn;var EK=(((EM))|0)>>1;var Ew=Ck;var Eu=(((EK))|0)>(((Ew))|0);if(Eu){Ba=126;continue}else{Ba=127;break $bb_i17$$_ZL21reverse_argv_elementsPPci_exit18$179}}}}while(0);var Es=Dj;var Eq=BG;var Eo=(((Eq)+(Es))&4294967295);var Em=Ld;Nf=Em;HW=Eo;GA=0;var Ek=HW;var Ei=(((Ek))|0)>>1;var Eg=GA;var Ee=(((Ei))|0)>(((Eg))|0);if(Ee){Ba=128}else{Ba=129}$bb_i9$$_ZL21reverse_argv_elementsPPci_exit10$183:do{if(Ba==128){while(1){var NB=Nf;var Nz=GA;var Ny=((NB+4*Nz)&4294967295);var Nw=uA[((Ny)>>2)];Jn=Nw;var Nv=HW;var Nu=GA;var KD=((0-(Nu))&4294967295);var Nt=(((Nv)+-1)&4294967295);var Ns=(((Nt)+(KD))&4294967295);var Nr=Nf;var Nq=((Nr+4*Ns)&4294967295);var Nd=uA[((Nq)>>2)];var Nc=Nf;var Nb=GA;var Na=((Nc+4*Nb)&4294967295);uA[((Na)>>2)]=Nd;var M8=HW;var M7=GA;var BL=((0-(M7))&4294967295);var M6=(((M8)+-1)&4294967295);var M5=(((M6)+(BL))&4294967295);var M4=Nf;var M3=((M4+4*M5)&4294967295);var MQ=Jn;uA[((M3)>>2)]=MQ;var MP=GA;var MO=(((MP)+1)&4294967295);GA=MO;var MN=HW;var MM=(((MN))|0)>>1;var ML=GA;var MK=(((MM))|0)>(((ML))|0);if(MK){Ba=128;continue}else{Ba=129;break $bb_i9$$_ZL21reverse_argv_elementsPPci_exit10$183}}}}while(0);var MJ=Ld;var MI=BG;Ni=MJ;C1=MI;I4=0;var MH=C1;var Mt=(((MH))|0)>>1;var Ms=I4;var Mr=(((Mt))|0)>(((Ms))|0);if(Mr){Ba=130}else{Ba=131}$bb_i2$$_ZL21reverse_argv_elementsPPci_exit$187:do{if(Ba==130){while(1){var Mq=Ni;var Mp=I4;var Mo=((Mq+4*Mp)&4294967295);var Mn=uA[((Mo)>>2)];Bs=Mn;var Mm=C1;var Ml=I4;var LS=((0-(Ml))&4294967295);var Mk=(((Mm)+-1)&4294967295);var Mg=(((Mk)+(LS))&4294967295);var Mf=Ni;var Md=((Mf+4*Mg)&4294967295);var Mb=uA[((Md)>>2)];var Ma=Ni;var L9=I4;var L8=((Ma+4*L9)&4294967295);uA[((L8)>>2)]=Mb;var L7=C1;var L6=I4;var Ki=((0-(L6))&4294967295);var L5=(((L7)+-1)&4294967295);var L2=(((L5)+(Ki))&4294967295);var L1=Ni;var L0=((L1+4*L2)&4294967295);var LZ=Bs;uA[((L0)>>2)]=LZ;var LY=I4;var LX=(((LY)+1)&4294967295);I4=LX;var LW=C1;var LV=(((LW))|0)>>1;var LU=I4;var LT=(((LV))|0)>(((LU))|0);if(LT){Ba=130;continue}else{Ba=131;break $bb_i2$$_ZL21reverse_argv_elementsPPci_exit$187}}}}while(0);var LQ=Bl;var LO=Mh;var LM=(((LQ)+1)&4294967295);var LK=(((LM)+(LO))&4294967295);var LI=J5;var LG=((LI+4)&4294967295);uA[((LG)>>2)]=LK;Ba=134;break $bb105$$bb102$175}}while(0);$bb105$$bb107$191:do{if(Ba==132){var LE=J5;var LC=((LE+16)&4294967295);var LA=uA[((LC)>>2)];var Ly=(((LA))|0)==1;if(!(Ly)){Ba=134;break $bb105$$bb107$191}var Lu=J5;var Ls=((Lu+4)&4294967295);var Lq=uA[((Ls)>>2)];var Lo=Bl;var Lm=(((Lq)+1)&4294967295);var Lk=(((Lm)+(Lo))&4294967295);var Li=J5;var Lg=((Li+4)&4294967295);uA[((Lg)>>2)]=Lk}}while(0);var Le=Cg;var Lb=(((Le))|0)>=0;if(Lb){Ba=135}else{Ba=140}if(Ba==135){var K9=Iy;var K7=(K9)!=0;if(K7){Ba=136}else{Ba=137}if(Ba==136){var K5=Iy;var K3=Cg;uA[((K5)>>2)]=K3}var K1=NA;var KZ=Cg;var KX=((K1+16*KZ)&4294967295);var KV=((KX+8)&4294967295);var KT=uA[((KV)>>2)];var KR=(KT)!=0;var KP=NA;var KN=Cg;var KL=((KP+16*KN)&4294967295);if(KR){Ba=138}else{Ba=139}if(Ba==138){var KJ=((KL+8)&4294967295);var KH=uA[((KJ)>>2)];var KF=NA;var KC=Cg;var KA=((KF+16*KC)&4294967295);var Ky=((KA+12)&4294967295);var Kw=uA[((Ky)>>2)];uA[((KH)>>2)]=Kw;CN=0;Ba=141;break $bb5$$bb$2}else{if(Ba==139){var C8=((KL+12)&4294967295);var C7=uA[((C8)>>2)];CN=C7;Ba=141;break $bb5$$bb$2}}}else{if(Ba==140){var C6=J5;var C4=((C6+12)&4294967295);var C3=uA[((C4)>>2)];CN=C3;Ba=141;break $bb5$$bb$2}}}}}}while(0);if(Ba==6){CN=-1}var C2=CN;Kh=C2;var NY=Kh;return NY;return null}function iv(A0,AS,AU,AL,AP,AM){var AW;var AR;var AZ;var AX;var A2;var AT;var AY;var A1;var AQ;AR=A0;AZ=AS;AX=AU;A2=AL;AT=AP;AY=AM;var AO=AR;var AN=AZ;var AK=AX;var AJ=A2;var AI=AT;var AH=AY;var i=vg(AO,AN,AK,AJ,AI,1,AH);AQ=i;var e=AQ;A1=e;var AV=A1;return AV;return null}function ag(A0,AS,AU,AL,AP,AM){var AW;var AR;var AZ;var AX;var A2;var AT;var AY;var A1;var AQ;AR=A0;AZ=AS;AX=AU;A2=AL;AT=AP;AY=AM;var AO=AR;var AN=AZ;var AK=AX;var AJ=A2;var AI=AT;var AH=AY;var i=vg(AO,AN,AK,AJ,AI,0,AH);AQ=i;var e=AQ;A1=e;var AV=A1;return AV;return null}function rp(AU,AP,e,AK){var AR;var AO;var AT;var AW;var AS;var AV;var AN;AO=AU;AT=AP;AW=e;AS=AK;var AM=AO;var AL=AT;var AJ=AW;var AI=AS;var AH=vg(AM,AL,AJ,0,0,0,AI);AN=AH;var i=AN;AV=i;var AQ=AV;return AQ;return null}function g3(AI,Bq,A2,AK,A0){var AY=vp;vp+=20;n1(AY,0,20);var AX;var Bn;var Bo;var A1;var AQ;var A3;var AP;var AJ;var AZ;var Bm;var AH=AY;var i;A1=AI;AQ=Bq;A3=A2;AP=AK;AJ=A0;Bo=AH;var Bl=uA[((i4)>>2)];var Bk=Bo;var Bj=((Bk)&4294967295);uA[((Bj)>>2)]=Bl;var Bi=uA[((wK)>>2)];var Bh=Bo;var Bg=((Bh+4)&4294967295);uA[((Bg)>>2)]=Bi;var Be=uA[((aX)>>2)];var Bc=Bo;var Ba=((Bc+8)&4294967295);uA[((Ba)>>2)]=Be;var AW=uA[((zR)>>2)];var AV=Bo;var AU=((AV+12)&4294967295);uA[((AU)>>2)]=AW;var AT=uA[((uD)>>2)];var AS=Bo;var AR=((AS+16)&4294967295);uA[((AR)>>2)]=AT;var AO=A1;var AN=AQ;var AM=A3;var AL=AP;var e=AJ;var Bz=vg(AO,AN,AM,AL,e,1,AH);i=Bz;Bn=AH;var By=Bn;var Bx=((By)&4294967295);var Bw=uA[((Bx)>>2)];uA[((i4)>>2)]=Bw;var Bv=Bn;var Bu=((Bv+4)&4294967295);var Bt=uA[((Bu)>>2)];uA[((wK)>>2)]=Bt;var Bs=Bn;var Bp=((Bs+8)&4294967295);var Bf=uA[((Bp)>>2)];uA[((aX)>>2)]=Bf;var Bd=Bn;var Bb=((Bd+12)&4294967295);var A9=uA[((Bb)>>2)];uA[((zR)>>2)]=A9;var A8=Bn;var A7=((A8+16)&4294967295);var A6=uA[((A7)>>2)];uA[((uD)>>2)]=A6;var A5=i;Bm=A5;var A4=Bm;AZ=A4;var Br=AZ;vp=AY;return Br;return null}function xp(AI,Bq,A2,AK,A0){var AY=vp;vp+=20;n1(AY,0,20);var AX;var Bn;var Bo;var A1;var AQ;var A3;var AP;var AJ;var AZ;var Bm;var AH=AY;var i;A1=AI;AQ=Bq;A3=A2;AP=AK;AJ=A0;Bo=AH;var Bl=uA[((i4)>>2)];var Bk=Bo;var Bj=((Bk)&4294967295);uA[((Bj)>>2)]=Bl;var Bi=uA[((wK)>>2)];var Bh=Bo;var Bg=((Bh+4)&4294967295);uA[((Bg)>>2)]=Bi;var Be=uA[((aX)>>2)];var Bc=Bo;var Ba=((Bc+8)&4294967295);uA[((Ba)>>2)]=Be;var AW=uA[((zR)>>2)];var AV=Bo;var AU=((AV+12)&4294967295);uA[((AU)>>2)]=AW;var AT=uA[((uD)>>2)];var AS=Bo;var AR=((AS+16)&4294967295);uA[((AR)>>2)]=AT;var AO=A1;var AN=AQ;var AM=A3;var AL=AP;var e=AJ;var Bz=vg(AO,AN,AM,AL,e,0,AH);i=Bz;Bn=AH;var By=Bn;var Bx=((By)&4294967295);var Bw=uA[((Bx)>>2)];uA[((i4)>>2)]=Bw;var Bv=Bn;var Bu=((Bv+4)&4294967295);var Bt=uA[((Bu)>>2)];uA[((wK)>>2)]=Bt;var Bs=Bn;var Bp=((Bs+8)&4294967295);var Bf=uA[((Bp)>>2)];uA[((aX)>>2)]=Bf;var Bd=Bn;var Bb=((Bd+12)&4294967295);var A9=uA[((Bb)>>2)];uA[((zR)>>2)]=A9;var A8=Bn;var A7=((A8+16)&4294967295);var A6=uA[((A7)>>2)];uA[((uD)>>2)]=A6;var A5=i;Bm=A5;var A4=Bm;AZ=A4;var Br=AZ;vp=AY;return Br;return null}function hx(AJ,Bj,AH){var AW=vp;vp+=20;n1(AW,0,20);var AV;var Bg;var Bh;var AY;var AO;var Bn;var AX;var Bf;var AI=AW;var i;AY=AJ;AO=Bj;Bn=AH;Bh=AI;var Be=uA[((i4)>>2)];var Bd=Bh;var Bc=((Bd)&4294967295);uA[((Bc)>>2)]=Be;var Bb=uA[((wK)>>2)];var Ba=Bh;var A9=((Ba+4)&4294967295);uA[((A9)>>2)]=Bb;var A7=uA[((aX)>>2)];var A5=Bh;var A3=((A5+8)&4294967295);uA[((A3)>>2)]=A7;var AU=uA[((zR)>>2)];var AT=Bh;var AS=((AT+12)&4294967295);uA[((AS)>>2)]=AU;var AR=uA[((uD)>>2)];var AQ=Bh;var AP=((AQ+16)&4294967295);uA[((AP)>>2)]=AR;var AN=AY;var AM=AO;var AL=Bn;var AK=vg(AN,AM,AL,0,0,0,AI);i=AK;Bg=AI;var e=Bg;var Bt=((e)&4294967295);var Bs=uA[((Bt)>>2)];uA[((i4)>>2)]=Bs;var Br=Bg;var Bq=((Br+4)&4294967295);var Bp=uA[((Bq)>>2)];uA[((wK)>>2)]=Bp;var Bo=Bg;var Bm=((Bo+8)&4294967295);var Bl=uA[((Bm)>>2)];uA[((aX)>>2)]=Bl;var Bi=Bg;var A8=((Bi+12)&4294967295);var A6=uA[((A8)>>2)];uA[((zR)>>2)]=A6;var A4=Bg;var A2=((A4+16)&4294967295);var A1=uA[((A2)>>2)];uA[((uD)>>2)]=A1;var A0=i;Bf=A0;var AZ=Bf;AX=AZ;var Bk=AX;vp=AW;return Bk;return null}function g2(Bm,Ba,BF,A0){var Bl;var AQ;var BE;var A2;var BD;var A4;var A6;var A7;var BR;var BB;var A8;var A9;var Bt;var BA;var BC;AQ=Bm;BE=Ba;A2=BF;BD=A0;var BQ=AQ;var BP=(BQ)!=0;if(BP){Bl=2}else{Bl=1}$bb3$$bb$2:do{if(Bl==1){var BN=A2;var BM=uA[((BN)>>2)];AQ=BM;var BL=AQ;var BK=(BL)!=0;if(BK){Bl=2;break $bb3$$bb$2}BB=1;A8=1;BR=0;Bl=19;break $bb3$$bb$2}}while(0);if(Bl==2){BB=0;A8=0;$cont$7:while(1){var BJ=AQ;var BI=la[((BJ)>>0)];var BH=iB((BI),8,0);Bt=BH;var By=AQ;var Bx=((By+1)&4294967295);AQ=Bx;var Bw=BE;A9=Bw;while(1){var Bh=A9;var Bg=la[((Bh)>>0)];var Bf=iB((Bg),8,0);BA=Bf;var Be=BA;var Bd=(((Be))|0)!=0;var Bc=oD((Bd),1,0);A7=Bc;var Bb=A9;var A5=((Bb+1)&4294967295);A9=A5;var Bn=iB((Bc),8,0)!=0;var A3=Bt;if(!(Bn)){Bl=9;break $cont$7}var Bv=BA;var Bu=(((A3))|0)==(((Bv))|0);if(Bu){Bl=6;break}else{Bl=8;continue}}var Bs=BD;var Br=(((Bs))|0)!=0;if(Br){Bl=4;continue $cont$7}else{Bl=7;break $cont$7}}if(Bl==9){var A1=(((A3))|0)==0;if(A1){Bl=10}else{Bl=11}if(Bl==10){var AZ=A2;uA[((AZ)>>2)]=0;BR=0}else{if(Bl==11){var AY=AQ;var AX=((AY+-1)&4294967295);BC=AX;$bb13$18:while(1){var AW=AQ;var AV=la[((AW)>>0)];var AU=iB((AV),8,0);Bt=AU;var AT=AQ;var AS=((AT+1)&4294967295);AQ=AS;var AR=BE;A9=AR;while(1){var AP=A9;var AO=la[((AP)>>0)];var AN=iB((AO),8,0);BA=AN;var AM=BA;var AL=Bt;var AK=(((AM))|0)==(((AL))|0);var AJ=oD((AK),1,0);A6=AJ;var AI=A9;var AH=((AI+1)&4294967295);A9=AH;var BO=iB((AJ),8,0)!=0;if(BO){Bl=14;break $bb13$18}var BT=BA;var BS=(((BT))|0)!=0;if(BS){Bl=13;continue}else{Bl=12;continue $bb13$18}}}var i=Bt;var e=(((i))|0)==0;if(e){Bl=15}else{Bl=16}if(Bl==15){AQ=0}else{if(Bl==16){var BY=AQ;var BX=((BY+-1)&4294967295);la[((BX)>>0)]=0}}var BW=A2;var BV=AQ;uA[((BW)>>2)]=BV;var BU=BC;BR=BU}}}else{if(Bl==7){var Bq=A2;var Bp=AQ;uA[((Bq)>>2)]=Bp;var Bo=AQ;var Bk=((Bo+-1)&4294967295);la[((Bk)>>0)]=0;var Bj=AQ;var Bi=((Bj+-1)&4294967295);BR=Bi}}}var BG=BR;A4=BG;var Bz=A4;return Bz;return null}function vf(AN,e,AR){var AS;var AJ;var AQ;var AT;var AO;var AM;AJ=AN;AQ=e;AT=AR;var AL=AJ;var AK=AQ;var AI=AT;var AH=g2(AL,AK,AI,1);AM=AH;var i=AM;AO=i;var AP=AO;return AP;return null}function gA(AN,e){var AM=vp;vp+=4;n1(AM,0,4);var AR;var AI;var AQ;var AO;var AL;var AS=AM;AI=AN;AQ=e;var AK=AI;var AJ=AQ;var AH=g2(AK,AJ,AS,1);AL=AH;var i=AL;AO=i;var AP=AO;vp=AM;return AP;return null}var lB=[0,0,rF,0,ut,0,nD,0,wT,0];xv.callMain=function yo(AH){var AK=AH.length+1;function AJ(){for(var AL=0;AL<4-1;AL++){e.push(0)}}var e=[qj(jV("/bin/this.program"),"i8",lh)];AJ();for(var AI=0;AI>2)]=((f4)&4294967295);uA[((zW+16)>>2)]=((fV)&4294967295);uA[((zW+32)>>2)]=((fT)&4294967295);uA[((zW+48)>>2)]=((fS)&4294967295);uA[((zW+64)>>2)]=((fR)&4294967295);uA[((zW+80)>>2)]=((fQ)&4294967295);uA[((zW+96)>>2)]=((r1)&4294967295);uA[((zW+112)>>2)]=((fP)&4294967295);uA[((zW+128)>>2)]=((fO)&4294967295);uA[((zW+144)>>2)]=((fN)&4294967295);uA[((zW+160)>>2)]=((fL)&4294967295);uA[((zW+176)>>2)]=((fK)&4294967295);uA[((f3)>>2)]=((en)&4294967295);uA[((f3+8)>>2)]=((em)&4294967295);uA[((f3+16)>>2)]=((ek)&4294967295);uA[((f3+24)>>2)]=((ej)&4294967295);uA[((f3+32)>>2)]=((d8)&4294967295);uA[((f3+40)>>2)]=((d7)&4294967295);uA[((f3+48)>>2)]=((d5)&4294967295);uA[((q6)>>2)]=((yc)&4294967295);uA[((q6+8)>>2)]=((qh)&4294967295);uA[((q6+16)>>2)]=((hV)&4294967295);uA[((q6+24)>>2)]=((Ac)&4294967295);uA[((q6+32)>>2)]=((r2)&4294967295);uA[((q6+40)>>2)]=((jK)&4294967295);uA[((q6+48)>>2)]=((aa)&4294967295);uA[((q6+56)>>2)]=((tp)&4294967295);uA[((q6+64)>>2)]=((kT)&4294967295);uA[((q6+72)>>2)]=((eA)&4294967295);uA[((q6+80)>>2)]=((wZ)&4294967295);uA[((q6+88)>>2)]=((o3)&4294967295);uA[((q6+96)>>2)]=((gN)&4294967295);uA[((q6+104)>>2)]=((yC)&4294967295);uA[((q6+112)>>2)]=((qI)&4294967295);uA[((q6+120)>>2)]=((ix)&4294967295);uA[((q6+128)>>2)]=((Aw)&4294967295);uA[((q6+136)>>2)]=((si)&4294967295);uA[((q6+144)>>2)]=((jU)&4294967295);uA[((q6+152)>>2)]=((mV)&4294967295);uA[((q6+160)>>2)]=((dz)&4294967295);uA[((q6+168)>>2)]=((wu)&4294967295);uA[((q6+176)>>2)]=((ou)&4294967295);uA[((q6+184)>>2)]=((f1)&4294967295);uA[((q6+192)>>2)]=((x0)&4294967295);uA[((q6+200)>>2)]=((p2)&4294967295);uA[((q6+208)>>2)]=((hL)&4294967295);uA[((q6+216)>>2)]=((zV)&4294967295);uA[((q6+224)>>2)]=((rE)&4294967295);uA[((q6+232)>>2)]=((ux)&4294967295);uA[((q6+240)>>2)]=((l8)&4294967295);uA[((q6+248)>>2)]=((cG)&4294967295);uA[((q6+256)>>2)]=((vS)&4294967295);uA[((q6+264)>>2)]=((nL)&4294967295);uA[((q6+272)>>2)]=((e2)&4294967295);uA[((q6+280)>>2)]=((xg)&4294967295);uA[((q6+288)>>2)]=((pj)&4294967295);uA[((q6+296)>>2)]=((gV)&4294967295);uA[((q6+304)>>2)]=((yX)&4294967295);uA[((q6+312)>>2)]=((ay)&4294967295);uA[((q6+320)>>2)]=((tY)&4294967295);uA[((q6+328)>>2)]=((lA)&4294967295);uA[((q6+336)>>2)]=((eT)&4294967295);uA[((q6+344)>>2)]=((eS)&4294967295);uA[((q6+352)>>2)]=((eR)&4294967295);uA[((q6+360)>>2)]=((eO)&4294967295);uA[((q6+368)>>2)]=((eN)&4294967295);uA[((q6+376)>>2)]=((eM)&4294967295);uA[((q6+384)>>2)]=((eK)&4294967295);uA[((q6+392)>>2)]=((ez)&4294967295);uA[((q6+400)>>2)]=((ey)&4294967295);uA[((cH)>>2)]=((gv)&4294967295);uA[((cH+4)>>2)]=((tg)&4294967295);uA[((cH+8)>>2)]=((of)&4294967295);uA[((cH+12)>>2)]=((a0)&4294967295);uA[((cH+16)>>2)]=((p8)&4294967295);uA[((gp)>>2)]=((zg)&4294967295);uA[((qD)>>2)]=((x2)&4294967295);uA[((qD+4)>>2)]=((fE)&4294967295);uA[((qD+8)>>2)]=((nI)&4294967295);uA[((qD+12)>>2)]=((vk)&4294967295);uA[((qD+16)>>2)]=((bD)&4294967295);uA[((qD+20)>>2)]=((kM)&4294967295);uA[((qD+24)>>2)]=((sY)&4294967295);uA[((y3+4)>>2)]=((uJ)&4294967295);uA[((y3+12)>>2)]=((ol)&4294967295);uA[((y3+20)>>2)]=((uJ)&4294967295);uA[((y3+28)>>2)]=((ol)&4294967295);uA[((y3+36)>>2)]=((uJ)&4294967295);uA[((y3+44)>>2)]=((ol)&4294967295);uA[((y3+52)>>2)]=((uJ)&4294967295);uA[((y3+60)>>2)]=((uv)&4294967295);uA[((y3+68)>>2)]=((uJ)&4294967295);uA[((y3+76)>>2)]=((ol)&4294967295);uA[((y3+84)>>2)]=((uJ)&4294967295);uA[((y3+92)>>2)]=((aH)&4294967295);uA[((y3+100)>>2)]=((uJ)&4294967295);uA[((y3+108)>>2)]=((aH)&4294967295);uA[((y3+116)>>2)]=((uJ)&4294967295);uA[((y3+124)>>2)]=((aH)&4294967295);uA[((y3+132)>>2)]=((uJ)&4294967295);uA[((y3+140)>>2)]=((ol)&4294967295);uA[((y3+148)>>2)]=((uJ)&4294967295);uA[((y3+156)>>2)]=((ol)&4294967295);uA[((y3+164)>>2)]=((uJ)&4294967295);uA[((y3+172)>>2)]=((ol)&4294967295);uA[((y3+180)>>2)]=((uJ)&4294967295);uA[((y3+188)>>2)]=((aH)&4294967295);uA[((y3+196)>>2)]=((uJ)&4294967295);uA[((y3+204)>>2)]=((aH)&4294967295);uA[((lx)>>2)]=((cV)&4294967295);uA[((lx+4)>>2)]=((cV)&4294967295);uA[((lx+8)>>2)]=((dA)&4294967295);uA[((lx+12)>>2)]=((dA)&4294967295);uA[((lx+16)>>2)]=((w8)&4294967295);uA[((lx+20)>>2)]=((e6)&4294967295);uA[((lx+24)>>2)]=((q5)&4294967295);uA[((lx+28)>>2)]=((wE)&4294967295);uA[((lx+32)>>2)]=((vs)&4294967295);uA[((lx+36)>>2)]=((vs)&4294967295);uA[((lx+40)>>2)]=((pU)&4294967295);uA[((lx+44)>>2)]=((pU)&4294967295);uA[((lx+48)>>2)]=((pR)&4294967295);uA[((lx+52)>>2)]=((pR)&4294967295);uA[((lx+56)>>2)]=((o2)&4294967295);uA[((lx+60)>>2)]=((o2)&4294967295);uA[((lx+64)>>2)]=((dp)&4294967295);uA[((lx+68)>>2)]=((dp)&4294967295);uA[((lx+72)>>2)]=((vE)&4294967295);uA[((lx+76)>>2)]=((vE)&4294967295);uA[((kO)>>2)]=((xU)&4294967295);uA[((p1)>>2)]=((dS)&4294967295);uA[((p1+8)>>2)]=((mr)&4294967295);uA[((p1+16)>>2)]=((up)&4294967295);uA[((p1+24)>>2)]=((aG)&4294967295);uA[((pH)>>2)]=((qP)&4294967295);uA[((pH+8)>>2)]=((yj)&4294967295);uA[((pH+16)>>2)]=((fZ)&4294967295);uA[((jA+4)>>2)]=((pi)&4294967295);uA[((jA+8)>>2)]=((ar)&4294967295);uA[((jA+12)>>2)]=((rk)&4294967295);uA[((jA+16)>>2)]=((rd)&4294967295);uA[((pi)>>2)]=((fi)&4294967295);uA[((pi+8)>>2)]=((ve)&4294967295);uA[((pi+16)>>2)]=((bF)&4294967295);uA[((pi+24)>>2)]=((kN)&4294967295);uA[((pi+32)>>2)]=((sO)&4294967295);uA[((pi+40)>>2)]=((At)&4294967295);uA[((ar)>>2)]=((fi)&4294967295);uA[((ar+8)>>2)]=((hU)&4294967295);uA[((ar+16)>>2)]=((pQ)&4294967295);uA[((ar+24)>>2)]=((xm)&4294967295);uA[((ar+32)>>2)]=((kN)&4294967295);uA[((ar+40)>>2)]=((eE)&4294967295);uA[((ar+48)>>2)]=((nb)&4294967295);uA[((rk)>>2)]=((fi)&4294967295);uA[((rk+8)>>2)]=((aV)&4294967295);uA[((rk+16)>>2)]=((j5)&4294967295);uA[((rk+24)>>2)]=((kN)&4294967295);uA[((rk+32)>>2)]=((r9)&4294967295);uA[((rk+40)>>2)]=((t4)&4294967295);uA[((rd)>>2)]=((fi)&4294967295);uA[((rd+8)>>2)]=((aV)&4294967295);uA[((rd+16)>>2)]=((j5)&4294967295);uA[((rd+24)>>2)]=((kN)&4294967295);uA[((rd+32)>>2)]=((r9)&4294967295);uA[((rd+40)>>2)]=((t4)&4294967295);uA[((oi)>>2)]=((al)&4294967295);uA[((oi+8)>>2)]=((jx)&4294967295);uA[((oi+16)>>2)]=((rv)&4294967295);uA[((oi+24)>>2)]=((y6)&4294967295);uA[((oi+32)>>2)]=((gI)&4294967295);uA[((oi+40)>>2)]=((oF)&4294967295);uA[((oi+48)>>2)]=((cc)&4294967295);uA[((oi+56)>>2)]=((lv)&4294967295);uA[((oi+64)>>2)]=((ty)&4294967295);uA[((oi+72)>>2)]=((o)&4294967295);uA[((oi+80)>>2)]=((iI)&4294967295);uA[((oi+88)>>2)]=((qw)&4294967295);uA[((oi+96)>>2)]=((x1)&4294967295);uA[((oi+104)>>2)]=((fB)&4294967295);uA[((oi+112)>>2)]=((nF)&4294967295);uA[((oi+120)>>2)]=((vh)&4294967295);uA[((oi+128)>>2)]=((ky)&4294967295);uA[((oi+136)>>2)]=((sK)&4294967295);uA[((oi+144)>>2)]=((As)&4294967295);uA[((oi+152)>>2)]=((hJ)&4294967295);uA[((oi+160)>>2)]=((px)&4294967295);uA[((oi+168)>>2)]=((w9)&4294967295);uA[((oi+176)>>2)]=((ec)&4294967295);uA[((oi+184)>>2)]=((mX)&4294967295);uA[((oi+192)>>2)]=((uL)&4294967295);uA[((oi+200)>>2)]=((a3)&4294967295);uA[((oi+208)>>2)]=((rN)&4294967295);uA[((oi+216)>>2)]=((zB)&4294967295);uA[((oi+224)>>2)]=((gZ)&4294967295);uA[((oi+232)>>2)]=((oM)&4294967295);uA[((oi+240)>>2)]=((wq)&4294967295);uA[((oi+248)>>2)]=((c5)&4294967295);uA[((vP)>>2)]=((jo)&4294967295);uA[((vP+8)>>2)]=((ym)&4294967295);uA[((vP+16)>>2)]=((f6)&4294967295);uA[((e0)>>2)]=((vy)&4294967295);uA[((e0+8)>>2)]=((b1)&4294967295);uA[((e0+16)>>2)]=((k9)&4294967295);uA[((e0+24)>>2)]=((td)&4294967295);uA[((g6+4)>>2)]=((k)&4294967295);uA[((g6+8)>>2)]=((iC)&4294967295);uA[((g6+12)>>2)]=((td)&4294967295);uA[((g6+16)>>2)]=((qk)&4294967295);uA[((zr)>>2)]=((jo)&4294967295);uA[((zr+8)>>2)]=((ng)&4294967295);uA[((zr+16)>>2)]=((u0)&4294967295);uA[((zr+24)>>2)]=((oM)&4294967295);uA[((o5)>>2)]=((Ad)&4294967295);uA[((o5+8)>>2)]=((hC)&4294967295);uA[((o5+16)>>2)]=((pn)&4294967295);uA[((o5+24)>>2)]=((w2)&4294967295);uA[((o5+32)>>2)]=((lD)&4294967295);uA[((jn)>>2)]=((tI)&4294967295);uA[((xu)>>2)]=((jo)&4294967295);uA[((xu+8)>>2)]=((sS)&4294967295);uA[((xu+16)>>2)]=((Ay)&4294967295);uA[((xu+24)>>2)]=((kN)&4294967295);uA[((xu+32)>>2)]=((oM)&4294967295);uA[((xu+40)>>2)]=((h4)&4294967295);uA[((mH)>>2)]=((zb)&4294967295);uA[((mH+8)>>2)]=((yZ)&4294967295);uA[((mH+16)>>2)]=((yY)&4294967295);uA[((mH+24)>>2)]=((yW)&4294967295);uA[((mH+32)>>2)]=((yU)&4294967295);uA[((mH+40)>>2)]=((yS)&4294967295);uA[((oz)>>2)]=((l)&4294967295);uA[((oz+8)>>2)]=((iD)&4294967295);uA[((oz+16)>>2)]=((qm)&4294967295);uA[((oz+24)>>2)]=((xX)&4294967295);uA[((oz+32)>>2)]=((e5)&4294967295);uA[((oz+40)>>2)]=((uV)&4294967295);uA[((oz+48)>>2)]=((bd)&4294967295);uA[((oz+56)>>2)]=((km)&4294967295);uA[((oz+64)>>2)]=((su)&4294967295);uA[((oz+72)>>2)]=((Aj)&4294967295);uA[((oz+80)>>2)]=((hF)&4294967295);uA[((oz+88)>>2)]=((ps)&4294967295);uA[((oz+96)>>2)]=((w5)&4294967295);uA[((oz+104)>>2)]=((d3)&4294967295);uA[((oz+112)>>2)]=((mC)&4294967295);uA[((oz+120)>>2)]=((ap)&4294967295);uA[((oz+128)>>2)]=((jE)&4294967295);uA[((oz+136)>>2)]=((rA)&4294967295);uA[((oz+144)>>2)]=((ze)&4294967295);uA[((oz+152)>>2)]=((gK)&4294967295);uA[((oz+160)>>2)]=((oK)&4294967295);uA[((oz+168)>>2)]=((wj)&4294967295);uA[((ib)>>2)]=((bg)&4294967295);uA[((oL)>>2)]=((yy)&4294967295);uA[((oL+4)>>2)]=((yy)&4294967295);uA[((oL+8)>>2)]=((l3)&4294967295);uA[((oL+12)>>2)]=((nd)&4294967295);uA[((oL+16)>>2)]=((nd)&4294967295);uA[((oL+20)>>2)]=((nd)&4294967295);uA[((Aa)>>2)]=((xP)&4294967295);uA[((Aa+4)>>2)]=((xP)&4294967295);uA[((Aa+8)>>2)]=((xO)&4294967295);uA[((Aa+12)>>2)]=((xL)&4294967295);uA[((Aa+16)>>2)]=((xK)&4294967295);uA[((Aa+20)>>2)]=((xJ)&4294967295);uA[((Aa+24)>>2)]=((xP)&4294967295);uA[((Aa+28)>>2)]=((xI)&4294967295);uA[((Aa+32)>>2)]=((xP)&4294967295);uA[((Aa+36)>>2)]=((xG)&4294967295);uA[((Aa+40)>>2)]=((xP)&4294967295);uA[((Aa+44)>>2)]=((xP)&4294967295);uA[((Aa+48)>>2)]=((xP)&4294967295);uA[((Aa+52)>>2)]=((xP)&4294967295);uA[((Aa+56)>>2)]=((iL)&4294967295);uA[((Aa+60)>>2)]=((xP)&4294967295);uA[((Aa+64)>>2)]=((xP)&4294967295);uA[((Aa+68)>>2)]=((xP)&4294967295);uA[((Aa+72)>>2)]=((c9)&4294967295);uA[((Aa+76)>>2)]=((oX)&4294967295);uA[((b6)>>2)]=((iQ)&4294967295);uA[((b6+8)>>2)]=((qF)&4294967295);uA[((b6+16)>>2)]=((yb)&4294967295);uA[((k5)>>2)]=zw;uA[((gz)>>2)]=((kx)&4294967295);uA[((gz+4)>>2)]=((lJ)&4294967295);uA[((gz+8)>>2)]=((xB)&4294967295);uA[((uU)>>2)]=((b7)&4294967295);uA[((uU+8)>>2)]=((lg)&4294967295);uA[((uU+16)>>2)]=((m)&4294967295);uA[((uU+24)>>2)]=((t5)&4294967295);uA[((uU+32)>>2)]=((an)&4294967295);uA[((uU+40)>>2)]=((jy)&4294967295);uA[((uU+48)>>2)]=((rw)&4294967295);uA[((uU+56)>>2)]=((y7)&4294967295);uA[((uU+64)>>2)]=((gy)&4294967295);uA[((uU+72)>>2)]=((vL)&4294967295);uA[((uU+80)>>2)]=((b8)&4294967295);uA[((uU+88)>>2)]=((lk)&4294967295);uA[((uU+96)>>2)]=((tn)&4294967295);uA[((uU+104)>>2)]=((p)&4294967295);uA[((uU+112)>>2)]=((iK)&4294967295);uA[((uU+120)>>2)]=((qz)&4294967295);uA[((uU+128)>>2)]=((x3)&4294967295);uA[((uU+136)>>2)]=((fF)&4294967295);uA[((uU+144)>>2)]=((hW)&4294967295);uA[((uU+152)>>2)]=((w3)&4294967295);uA[((uU+160)>>2)]=((dX)&4294967295);uA[((uU+168)>>2)]=((mO)&4294967295);uA[((uU+176)>>2)]=((uG)&4294967295);uA[((uU+184)>>2)]=((aY)&4294967295);uA[((uU+192)>>2)]=((j7)&4294967295);uA[((uU+200)>>2)]=((sa)&4294967295);uA[((uU+208)>>2)]=((zZ)&4294967295);uA[((uU+216)>>2)]=((hh)&4294967295);uA[((uU+224)>>2)]=((rZ)&4294967295);uA[((uU+232)>>2)]=((oZ)&4294967295);uA[((uU+240)>>2)]=((cM)&4294967295);uA[((uU+248)>>2)]=((lR)&4294967295);uA[((uU+256)>>2)]=((tS)&4294967295);uA[((uU+264)>>2)]=((Y)&4294967295);uA[((uU+272)>>2)]=((jh)&4294967295);uA[((uU+280)>>2)]=((rj)&4294967295);uA[((uU+288)>>2)]=((yI)&4294967295);uA[((uU+296)>>2)]=((gr)&4294967295);uA[((uU+304)>>2)]=((on)&4294967295);uA[((bq)>>2)]=((e9)&4294967295);uA[((bq+8)>>2)]=((nu)&4294967295);hm.init();ny(p0);mA();var e=null;if(xv._main){e=xv.callMain(i);gC()}return e}xv.run=bV;if(!xv.noInitialRun){bV()}hm.createPath("/","espeak/espeak-data",true,false);[["phontab",h3],["phonindex",eL],["phondata",o8],["intonations",qC],["en_dict",tk]].forEach(function(i){var AH=i[0];var e=i[1];hm.createDataFile("/espeak/espeak-data",AH,e,true,false)});hm.createPath("/","espeak/espeak-data/voices/en",true,false);hm.createDataFile("/espeak/espeak-data/voices/en","en-us",yt,true,false);hm.root.write=true;function tH(AK,e){e=e||{};xv.arguments=["-w","wav.wav","-a",e.amplitude?String(e.amplitude):"100","-g",e.wordgap?String(e.wordgap):"0","-p",e.pitch?String(e.pitch):"50","-s",e.speed?String(e.speed):"175","-v",e.voice?String(e.voice):"en/en-us","--path=/espeak",AK];bV();xv.arguments.pop();var AJ=hm.root.contents["wav.wav"].contents;function AI(AQ){var AM="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var AP="=";var AN="";var AS=0;var AL=0;for(var AO=0;AO=6){var AR=(AS>>(AL-6))&63;AL-=6;AN+=AM[AR]}}if(AL==2){AN+=AM[(AS&3)<<4];AN+=AP+AP}else{if(AL==4){AN+=AM[(AS&15)<<2];AN+=AP}}return AN}for(var AH=0;AH');document.getElementById("player").play()}return tH})(); diff --git a/modules/core/aloha/static/plugins/extra/speak/package.json b/modules/core/aloha/static/plugins/extra/speak/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/speak/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/toc/lib/toc-plugin.js b/modules/core/aloha/static/plugins/extra/toc/lib/toc-plugin.js new file mode 100644 index 000000000..ae7019266 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/lib/toc-plugin.js @@ -0,0 +1,402 @@ +/* toc-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([ + 'aloha', + 'aloha/plugin', + 'jquery', + 'ui/ui', + 'ui/button', + 'i18n!toc/nls/i18n', + 'i18n!aloha/nls/i18n', + 'aloha/console' +], function (Aloha, Plugin, jQuery, Ui, Button, i18n, i18nCore, console) { + 'use strict'; + + var GENTICS = window.GENTICS, + namespace = 'toc', + $containers = null, + allTocs = []; + + /* helper functions */ + function last(a) { + return a[a.length - 1]; + } + + function head(a) { + return a[0]; + } + + function tail(a) { + return a.slice(1); + } + + function indexOf(a, item) { + return detect(a, function (cmp) { + return cmp === item; + }); + } + + function detect(a, f) { + for (var i = 0; i < a.length; i++) { + if (f(a[i])) { + return a[i]; + } + } + return null; + } + + function map(a, f) { + var result = []; + for (var i = 0; i < a.length; i++) { + result.push(f(a[i])); + } + return result; + } + + function each(a, f) { + map(a, f); + } + + /** + * register the plugin with unique name + */ + return Plugin.create(namespace, { + minEntries:0, + updateInterval:5000, + config:['toc'], + + init:function () { + var that = this; + + if (typeof this.settings.minEntries === 'undefined') { + this.settings.minEntries = this.minEntries; + } + if (typeof this.settings.updateInterval === 'undefined') { + this.settings.updateInterval = this.updateInterval; + } + + Aloha.bind('aloha-editable-activated', function (event, rangeObject) { + if (Aloha.activeEditable) { + that.cfg = that.getEditableConfig(Aloha.activeEditable.obj); + + if (jQuery.inArray('toc', that.cfg) != -1) { + that._insertTocButton.show(true); + } else { + that._insertTocButton.show(false); + return; + } + } + }); + + this.initButtons(); + jQuery(document).ready(function () { + that.spawn(); + }); + + + }, + + initButtons:function () { + var that = this; + + this._insertTocButton = Ui.adopt("insertToc", Button, { + tooltip:i18n.t('button.addtoc.tooltip'), + icon:'aloha-icon aloha-icon-orderedlist', + scope:'Aloha.continuoustext', + click:function () { + that.insertAtSelection($containers); + } + }); + }, + + register:function ($c) { + $containers = $c; + }, + + /** + * inserts a new TOC at the current selection + */ + insertAtSelection:function ($containers) { + $containers = $containers || editableContainers(); + var id = generateId('toc'); + + // we start out with an empty ordered list + var $tocElement = jQuery("
          "). + attr('id', id).attr('contentEditable', 'false'); + var range = Aloha.Selection.getRangeObject(); + var tocEditable = Aloha.activeEditable; + var $tocContainer = jQuery(document.getElementById(tocEditable.getId())); + GENTICS.Utils.Dom.insertIntoDOM($tocElement, range, $tocContainer); + + this.create(id).register($containers).update().tickTock(); + }, + + /** + * Spawn containers for all ols with the toc_root class. + */ + spawn:function ($ctx, $containers) { + + $ctx = $ctx || jQuery('body'); + $containers = $containers || editableContainers(); + $ctx.find('ol.toc_root').each(function () { + var id = jQuery(this).attr('id'); + if (!id) { + id = generateId('toc'); + jQuery(this).attr('id', id); + } + that.create(id).register($containers).tickTock(); + }); + }, + + create:function (id) { + allTocs.push(this); + + return { + 'id':id, + '$containers':jQuery(), + 'settings':this.settings, + /** + * find the TOC root element for this instance + */ + root:function () { + return jQuery(document.getElementById(this.id)); + }, + /** + * registers the given containers with the TOC. a + * container is an element that may begin or contain + * sections. Note: use .live on all [contenteditable=true] + * to catch dynamically added editables. + * the same containers can be passed in multiple times. they will + * be registered only once. + */ + register:function ($containers) { + var self = this; + // the .add() method ensures that the $containers will be in + // document order (required for correct TOC order) + + self.$containers = self.$containers.add($containers); + self.$containers.filter(function () { + return !jQuery(this).data(namespace + '.' + self.id + '.listening'); + }).each(function () { + var $container = jQuery(this); + $container.data(namespace + '.' + self.id + '.listening', true); + $container.bind('blur', function () { + self.cleanupIds($container.get(0)); + self.update($container); + }); + }); + return self; + }, + tickTock:function (interval) { + var self = this; + interval = interval || this.settings.updateInterval; + if (!interval) { + return; + } + window.setInterval(function () { + self.register(editableContainers()); + // TODO: use the active editable instead of rebuilding + // the entire TOC + self.update(); + }, interval); + return self; + }, + /** + * there are various ways which can cause duplicate ids on targets + * (e.g. pressing enter in a heading and writing in a new line, or + * copy&pasting). Passing a ctx updates only those elements + * either inside or equal to it. + * TODO: to be correct this should do + * a $.contains(documentElement... + */ + cleanupIds:function (ctx) { + var ids = [], + that = this; + this.headings(this.$containers).each(function () { + var id = jQuery(this).attr('id'); + if ((id && -1 != jQuery.inArray(id, ids)) + || ( ctx + && (jQuery.contains(ctx, this) || ctx === this))) { + jQuery(this).attr('id', generateId(this)); + } + ids.push(id); + }); + return this; + }, + /** + * Updates the TOC from the sections in the given context, or in + * all containers that have been registered with this TOC, if no + * context is given. + */ + update:function ($ctx) { + var self = this; + $ctx = $ctx || self.$containers; + var outline = this.outline(self.$containers); + var ancestors = [self.root()]; + var prevSiblings = []; + //TODO: handle TOC rebuilding more intelligently. currently, + //the TOC is always rebuilt from scratch. + last(ancestors).empty(); + (function descend(outline) { + var prevSiblings = []; + each(outline, function (node) { + var $section = head(node); + var $entry = self.linkSection($section, ancestors, prevSiblings); + ancestors.push($entry); + descend(tail(node)); + ancestors.pop(); + prevSiblings.push($entry); + }); + })(tail(outline)); + + // count number of li's in the TOC, if less than minEntries, hide the TOC + var minEntries = self.root().attr('data-TOC-minEntries') || this.settings.minEntries; + if (self.root().find('li').length >= minEntries) { + self.root().show(); + } else { + self.root().hide(); + } + + return this; + }, + /** + * updates or creates an entry in the TOC for the given section. + */ + linkSection:function ($section, ancestors, prevSiblings) { + var linkId = $section.eq(0).attr('id'); + if (!linkId) { + linkId = generateId($section.get(0)); + $section.eq(0).attr('id', linkId); + } + var $root = this.root(); + var $entry = anchorFromLinkId($root, linkId); + if (!$entry.length) { + $entry = jQuery('
        1. '); + } + $entry.find('a'). + attr('href', '#' + linkId). + text($section.eq(0).text()); + if (last(prevSiblings)) { + last(prevSiblings).after($entry); + } + else { + if (last(ancestors).get(0) == $root.get(0)) { + $root.append($entry); + } + else { + var $subToc = jQuery('
            ').append($entry); + last(ancestors).append($subToc); + } + } + return $entry; + }, + + /** + * returns a tree of sections in the given context. if the context + * element(s) begin a section, they will be included. First element + * of each branch in the tree is a $(section) or $() for the + * root node. + * TODO: http://www.w3.org/TR/html5/sections.html#outline + */ + outline:function (ctx) { + var rootNode = [jQuery()]; + var potentialParents = [rootNode]; + this.headings(ctx).each(function () { + var $heading = jQuery(this); + var nodeName = this.nodeName.toLowerCase(); + var hLevels = ['h6', 'h5', 'h4', 'h3', 'h2', 'h1']; + var currLevel = jQuery.inArray(nodeName, hLevels); + var higherEq = hLevels.slice(currLevel).join(','); + var $section = $heading.nextUntil(higherEq).andSelf(); + var node = [$section]; + + var parent = detect(potentialParents, function (parent) { + var parentSection = parent[0]; + return !parentSection.length || //top-level contains everything + detect(parentSection, function (sectionElem) { + return $heading.get(0) === sectionElem || + jQuery.contains(sectionElem, $heading.get(0)); + }); + }); + parent.push(node); + potentialParents.splice(0, indexOf(potentialParents, parent), node); + }); + return rootNode; + }, + + headings:function ($ctx) { + return $ctx.find(':header').add($ctx.filter(':header')); + } + + + + } + } + + }); + + //-------------- module methods ----------------- + + function editableContainers() { + return jQuery(map(Aloha.editables, function (editable) { + return document.getElementById(editable.getId()); + })); + } + + function anchorFromLinkId($ctx, linkId) { + return linkId ? $ctx.find('a[href $= "#' + linkId + '"]') : jQuery(); + } + + function linkIdFromAnchor($anchor) { + var href = $anchor.attr('href'); + return href ? href.match(/#(.*?)$/)[1] : null; + } + + function generateId(elemOrText) { + var validId; + if (typeof elemOrText == "object") { + validId = jQuery(elemOrText).text(). + replace(/[^a-zA-Z-]+/g, '-'). + replace(/^[^a-zA-Z]+/, ''); + } else if (elemOrText) { + validId = elemOrText; + } + for (var uniquifier = 0; ; uniquifier++) { + var uniqueId = validId; + if (uniquifier) { + uniqueId += '-' + uniquifier; + } + var conflict = document.getElementById(uniqueId); + if (!conflict + || ( typeof elemOrText == "object" + && conflict === elemOrText)) { + return uniqueId; + } + } + //unreachable + } +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/ca/i18n.js new file mode 100644 index 000000000..b897a060e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/ca/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Taula de continguts" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/de/i18n.js new file mode 100644 index 000000000..f7cf0c9c1 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/de/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Inhaltsverzeichnis" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/i18n.js new file mode 100644 index 000000000..2e5266405 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/i18n.js @@ -0,0 +1,12 @@ +define({ + "root":{ + "button.addtoc.tooltip":"Table of contents" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/mk/i18n.js new file mode 100644 index 000000000..57a41051f --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/mk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Табела на содржина" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/pt-br/i18n.js new file mode 100644 index 000000000..de04cc8e9 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/pt-br/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Tabela de conteúdo" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/ru/i18n.js new file mode 100644 index 000000000..4a345cf96 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/ru/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Оглавление" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/uk/i18n.js new file mode 100644 index 000000000..8d9be0648 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/uk/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"Зміст" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/toc/nls/zh-hans/i18n.js new file mode 100644 index 000000000..eef868599 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/nls/zh-hans/i18n.js @@ -0,0 +1,3 @@ +define({ + "button.addtoc.tooltip":"表格内容" +}); diff --git a/modules/core/aloha/static/plugins/extra/toc/package.json b/modules/core/aloha/static/plugins/extra/toc/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/toc/package.json @@ -0,0 +1 @@ +{} diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/README.md b/modules/core/aloha/static/plugins/extra/wai-lang/README.md new file mode 100644 index 000000000..298767886 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/README.md @@ -0,0 +1,11 @@ +# Aloha WAI Lang Plugin + +This plugin detects wai language markup and enables the user to mark certain elements for a specific language (in case the element language deviates from the 'default' language'). The available languages are configurable in the plugin configuration. +Elements will be marked by adding the "href lang" attribute. + +TODO: +* Suggest languages to the user via DropDown or shortnotation of the plugin. +* Marked elements must be visible to the user +* Howto mark longer sections and make it visible to the user. +* Similiar to abbr() +* check for a valid value if possible -- now also abcd would be valid \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/css/wai-lang.css b/modules/core/aloha/static/plugins/extra/wai-lang/css/wai-lang.css new file mode 100644 index 000000000..7341dbd76 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/css/wai-lang.css @@ -0,0 +1,28 @@ +/*! +* Aloha Editor +* Author & Copyright (c) 2011 Gentics Software GmbH +* aloha-sales@gentics.com +* Licensed unter the terms of http://www.aloha-editor.com/license.html +*/ + +.aloha-icon-wai-lang { + background: url(../img/button.png) no-repeat 0px 0px !important; +} + +.aloha-icon-wai-lang-remove { + background: url(../img/remove-button.png) no-repeat 0px 0px !important; +} + +.aloha .aloha-wai-lang-img-item { + height: 18px; +} + +.aloha .aloha-wai-lang-img { + /* 16x11 */ + margin: 3px 5px 0px 2px; +} + +.aloha .aloha-wai-lang-label-item { + display: inline; + font-weight: bold; +} diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/img/button.png b/modules/core/aloha/static/plugins/extra/wai-lang/img/button.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf956d99be916e0646a51b4617cf686bc2236a2 GIT binary patch literal 849 zcmV-X1FrmuP))v%C;9-YRLK?B zt^H@Lel(T!__a*;W^M#i9|oY)_ke!+8k*@*Je~Or&BPoid8^hhvB+jw?A~D9YPBwR zO8c$@Lo<({nW{v~cqWq6G-Bx~kQrUD&3FtCSvx8R%b=O8!QFu?Nk+k-6ooY_Arst2Pw-lu zkw_l~v%C;w;Q&bK(2t(e2RAt%XYR6*bf1Ib-Y~sU@W46IiH+U@*l|P%RE1)vxCvXO z10YJqK$MPyEYZSJ`W%5Z5r}VaM@WS?VyfL?6tp}^u^Fe*LBv#GPevJB%Zjm6(FH>O z0)#@h)E(|rgWu)|!Ou!=b~X;K^Wd-<0k=TJR^XsG4=JsOz@go-SJ@1r%z(;u*rn(I zrFH?Y&1nhbs~wGly90#*3|}EEt|$;%<^OvMp4u5Z%6maBUb|=*Hexl7$+-q>ao@o> z=n|UgxWO|8o5Q6zuk!l^E*-R$8$j7G$ozf~w>z;vL%g)keaJKp@?=eGw)yg=89`aF zikHJp!Zl3igy7l;SmtX$<{C=$1Vl5&U=(!L!ge@ocyDwerd>Q}}&F}8C` zkW9PcNO2m-8*LzkEg+L0fQVCq5t0Y{@W^jb5)SjP;02*_rE7S0!6t7$HlNKwbd5W9 zQ@J1#RIo5WTP_vDoSltLUc80laS~y?sAl<(VpI>)eP_}s^OLFb9{ga~MJIz1oCQW; zCKeyf+>_EDjmk@n$+}}|@~@HAcCPYFkl3@La;QU*f^K{EtuY&aL4$p8`bCEjk@bUq b-LlwsHmB<8KV_5W00000NkvXXu0mjf;ZKsd literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/img/remove-button.png b/modules/core/aloha/static/plugins/extra/wai-lang/img/remove-button.png new file mode 100644 index 0000000000000000000000000000000000000000..c959babdfb569a7e7b2a820cc95d430da5b4b834 GIT binary patch literal 866 zcmV-o1D*VdP)>-|l`N;5bI#k;obztB zQZp}U=B4S(ykN~_c(0XHGh&ufLZVOGg#HLVqZb~|e?J~L=RJ(Sr+GZtxah6F-HWj# zj{LpEtA3QnmJQt4Th`KG%=q7_9l6V_9*nM6&-QA+%#SUOYbP=LQ}gScrd#XBE34#6 z>&?Jm99U*B3UsIGs#wElBIor)iTd;02&TTPpw{+5{&51z=~490EI_H5Lv~7;dU5Sq zjShn@v9#FJ!Kh6NwPb4SYbS>Qa~Q`{3S>-qEm&xYcV-{%d{D>l5V@4z;v3shzgjtHBev0TA^ING76`)VR>yFk9o zjuVpwZnFmj?JkIuyMg_<091hrRM8L)WOhMiwa0*cBDW&BA_Apvu4-w)V^_o%EWLy{ z7%N6VRVemLTd=E01@gf-9HdI9toItQX<`ewPdErE_d;atS6fJq7`deAXI9{`&?B`Aq5;%<=qX6(CHi1=1lq{@9d8LLfn ze1ZGR?Yo!t*qrGGC$9SDIK6hZJ-hwK}J=A2+0L2?B;TKVJw>#)4%v7Bctbf z?EAX)aJv|dh`O_IHjToNpvk17;Ji|bbZDD=y&%j^xezoW0(DP(cNb9kq23VT_> s>Ergk!WXQdv}?yh#CDAX>VIOt0Y1; -1); + + if (matchesName && matchesType) { + d.push(currentElement); + } + } + + callback.call(this, d); + }, + + /** + * Fetches the languageCodes if they are not already loaded and + * searches the collection with the given query. + */ + query:function (p, callback) { + var that = this; + + deferred.done(function () { + that._searchInLanguageCodes(p, callback); + }); + + }, + + /** + * Get the repositoryItem with given id + * @param itemId {String} id of the repository item to fetch + * @param callback {function} callback function + * @return {Aloha.Repository.Object} item with given id + */ + getObjectById:function (itemId, callback) { + var i, currentElement; + + for (i = 0; i < this.languageCodes.length; ++i) { + currentElement = this.languageCodes[i]; + if (currentElement.id === itemId) { + callback.call(this, [currentElement]); + break; + } + } + + } + }))(); + }); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/lib/wai-lang-plugin.js b/modules/core/aloha/static/plugins/extra/wai-lang/lib/wai-lang-plugin.js new file mode 100644 index 000000000..04fb864d1 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/lib/wai-lang-plugin.js @@ -0,0 +1,384 @@ +/*global define: true, window: true */ +/*! + * Aloha Editor + * Author & Copyright (c) 2011 Gentics Software GmbH + * aloha-sales@gentics.com + * Licensed under the terms of http://www.aloha-editor.com/license.html + */ + +define([ + 'aloha', + 'jquery', + 'aloha/plugin', + 'ui/ui', + 'ui/scopes', + 'ui/button', + 'ui/toggleButton', + 'ui/port-helper-attribute-field', + 'i18n!wai-lang/nls/i18n', + 'i18n!aloha/nls/i18n', + 'wai-lang/languages' +], function (Aloha, jQuery, Plugin, Ui, Scopes, Button, ToggleButton, AttributeField, i18n, i18nCore) { + 'use strict'; + + var WAI_LANG_CLASS = 'aloha-wai-lang', + GENTICS = window.GENTICS, + langField; + + return Plugin.create('wai-lang', { + + /** + * Default configuration allows spans everywhere + */ + config:[ 'span' ], + + /** + * Define the exact standard of language codes to use (possible values are 'iso639-1' and 'iso639-2', default is 'iso639-1') + */ + iso639:'iso639-1', + + /** + * Whether to show flags + */ + flags:false, + + /** + * the defined object types to be used for this instance + */ + objectTypeFilter:[ 'language' ], + + /** + * HotKeys used for special actions + */ + hotKey:{ + insertAnnotation:i18n.t('insertAnnotation', 'ctrl+shift+l') + }, + + /** + * Initialize the plugin: + * Initializes UI components, and binds their event listeners. + */ + init:function () { + if (this.settings.objectTypeFilter) { + this.objectTypeFilter = this.settings.objectTypeFilter; + } + if (this.settings.hotKey) { + jQuery.extend(true, this.hotKey, this.settings.hotKey); + } + if (this.settings.flags === 'true' || this.settings.flags === true || this.settings.flags === '1' || this.settings.flags === 1) { + this.flags = true; + } else { + this.flags = false; + } + if (this.settings.iso639) { + this.iso639 = this.settings.iso639; + } + + this.createButtons(); + this.subscribeEvents(); + this.bindInteractions(); + }, + + /** + * Subscribe for events + */ + subscribeEvents:function () { + var that = this; + + // add the event handler for selection change + Aloha.bind('aloha-editable-activated', function (event, rangeObject) { + var config; + // show/hide the button according to the configuration + config = that.getEditableConfig(Aloha.activeEditable.obj); + if (jQuery.inArray('span', config) !== -1) { + that._wailangButton.show(); + } else { + that._wailangButton.hide(); + return; + } + }); + + // add the event handler for selection change + Aloha.bind('aloha-selection-changed', function (event, rangeObject) { + var foundMarkup = that._foundLangMarkupAtSelection = that.findLangMarkup(rangeObject); + if (foundMarkup) { + that._wailangButton.setState(true); + Scopes.setScope('wai-lang'); + langField.setTargetObject(foundMarkup, 'lang'); + } else { + that._wailangButton.setState(false); + that._foundLangMarkupAtSelection = false; + langField.setTargetObject(null); + } + }); + }, + + /** + * Initialize the buttons: + * Places the Wai-Lang UI buttons into the floating menu. + */ + createButtons:function () { + var that = this; + + this._wailangButton = Ui.adopt("wailang", ToggleButton, { + tooltip:i18n.t('button.add-wai-lang.tooltip'), + icon:'aloha-icon aloha-icon-wai-lang', + scope:'Aloha.continuoustext', + click:function () { + that.addRemoveMarkupToSelection(); + } + }); + + Scopes.createScope('wai-lang', 'Aloha.continuoustext'); + + langField = AttributeField({ + name:'wailangfield', + width:320, + valueField:'id', + minChars:1, + scope:'wai-lang' + }); + + if (this.flags) { + langField.setTemplate( + '
            ' + + '' + + '
            {name} ({id})
            ' + + '
            ' + ); + } else { + langField.setTemplate( + '
            ' + + '
            {name} ({id})
            ' + + '
            ' + ); + } + + langField.setObjectTypeFilter(this.objectTypeFilter); + + this._removewailangButton = Ui.adopt('removewailang', Button, { + tooltip:i18n.t('button.add-wai-lang-remove.tooltip'), + icon:'aloha-icon aloha-icon-wai-lang-remove', + scope:'wai-lang', + click:function () { + that.removeLangMarkup(); + } + }); + }, + + /** + * Given a range object, finds and returns a Wai-Lang wrapper DOM + * element within the range. + * + * @param {GENTICS.Utils.RangeObject} range + * @return {?DOMObject} the dom object found, or false if nothing found + */ + findLangMarkup:function (range) { + range = range || Aloha.Selection.getRangeObject(); + if (Aloha.activeEditable) { + return range.findMarkup(function () { + return jQuery(this).hasClass(WAI_LANG_CLASS) || + jQuery(this).is('[lang]'); + }, Aloha.activeEditable.obj); + } + return null; + }, + + /** + * Check whether the range is within a span that contains a lang + * attribute. + * + * @param {GENTICS.Utils.RangeObject} range range where to insert the + * object (at start or end) + * @return {?DOMObject} the dom object found, or false if nothing found + * @hide + */ + findLanguageMarkup:function (range) { + range = range || Aloha.Selection.getRangeObject(); + if (Aloha.activeEditable) { + return range.findMarkup(function () { + return this.nodeName === 'SPAN'; + }, Aloha.activeEditable.obj); + } + return null; + }, + + /** + * + */ + removeLangMarkup:function () { + var range = Aloha.Selection.getRangeObject(), + foundMarkup = this.findLangMarkup(range); + + if (foundMarkup) { + // remove the abbr + GENTICS.Utils.Dom.removeFromDOM(foundMarkup, range, true); + + // select the (possibly modified) range + range.select(); + Scopes.setScope('Aloha.continuoustext'); + langField.setTargetObject(null); + } + }, + + /** + * Parse a all editables for elements that have a lang attribute and + * bind an onclick event + */ + bindInteractions:function () { + var that = this; + + // on blur check if lang is empty, if so remove the
            tag + langField.addListener('blur', function (obj, event) { + // @todo check for a valid value -- now it's also possible to insert abcd; but that's not valid + if (!this.getValue()) { + that.removeMarkup(); + } + }); + + Aloha.bind('aloha-editable-created', function (event, editable) { + enhanceEditable(editable); + }); + + /** + * Find all existing spans and register hotkey hotkeys and make + * annotations of languages visible. + */ + function enhanceEditable(editable) { + // Hotkey for adding new language annotations: CTRL+I + editable.obj.bind('keydown', that.hotKey.insertAnnotation, function () { + that.insertLanguageAnnotation(); + }); + // Find all spans with lang attributes and add some css and + // event handlers + editable.obj.find('span[lang]').each(function (i) { + that.makeVisible(this); + }); + } + }, + + /** + * @param {Event} e + * @return {?Boolean} + */ + insertLanguageAnnotation:function () { + + // In IE8 the handleKeyDown will trigger outside of the context + // of the wai-lang plugin. In that case we just omitt handling + // the event. Otherwise a javascript error will occure. + if (typeof this.findLangMarkup === 'function') { + if (this.findLangMarkup()) { + langField.foreground(); + langField.focus(); + } else { + this.addMarkupToSelection(); + } + + // Prevent from further handling. + // on a MAC Safari, cursor would jump to location bar. + // We have to use ESC and then META+I instead. + return false; + } + }, + + /** + * Make the given element visible by adding the class to it. + */ + makeVisible:function (element) { + var $element = jQuery(element); + $element.addClass(WAI_LANG_CLASS); + $element.attr('data-gentics-aloha-repository', 'wai-languages'); + $element.attr('data-gentics-aloha-object-id', $element.attr('lang')); + }, + + /** + * Format the current selection or if collapsed the current word as + * element that should be annotated. + */ + formatLanguageSpan:function () { + if (Aloha.activeEditable) { + var range = Aloha.Selection.getRangeObject(); + if (this.findLanguageMarkup(range)) { + this.removeMarkup(); + } else { + this.insertMarkup(); + } + } + }, + + /** + * Toggles markup around selection. + */ + addRemoveMarkupToSelection:function () { + if (this._foundLangMarkupAtSelection) { + this.removeLangMarkup(); + } else { + this.addMarkupToSelection(false); + } + }, + + /** + * Retrieves the current selected range, and wraps it with wai-lang + * content. + */ + addMarkupToSelection:function () { + var range = Aloha.Selection.getRangeObject(); + + // Do not add markup to an area that already contains a markup + if (this.findLangMarkup(range)) { + return; + } + + langField.foreground(); + Scopes.setScope('wai-lang'); + + if (range.isCollapsed()) { + GENTICS.Utils.Dom.extendToWord(range); + } + + if (!range.isCollapsed()) { + GENTICS.Utils.Dom.addMarkup(range, + jQuery(''), + false); + } + + range.select(); + langField.focus(); + }, + + /** + * Remove an a tag. + */ + removeMarkup:function () { + var foundMarkup = this.findLangMarkup(), + range; + + if (foundMarkup) { + range = Aloha.Selection.getRangeObject(); + GENTICS.Utils.Dom.removeFromDOM(foundMarkup, range, true); + + // select the (possibly modified) range + range.select(); + } + }, + + /** + * Make the given jQuery object (representing an editable) clean for saving + * Find all elements with lang attributes and remove the attribute. + * + * It also removes dataattributes attached by the repository. + * It adds a xml:lang attribute with the value of the lang attribute. + * + * @param {jQuery} obj jQuery object to make clean + */ + makeClean:function (obj) { + obj.find('span[lang]').each(function () { + jQuery(this).removeClass(WAI_LANG_CLASS); + jQuery(this).removeAttr("data-gentics-aloha-repository"); + jQuery(this).removeAttr("data-gentics-aloha-object-id"); + jQuery(this).attr("xml:lang", jQuery(this).attr("lang")); + }); + } + + }); +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/ca/i18n.js new file mode 100644 index 000000000..f42fbd2bd --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/ca/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Comentari d\'idioma", + "button.add-wai-lang-remove.tooltip":"Suprimeix el comentari d\'idioma", + "button.add-wai-lang.tooltip":"Afegeix un comentari d\'idioma" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/de/i18n.js new file mode 100644 index 000000000..9efbadad9 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/de/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Sprachauszeichnung", + "button.add-wai-lang-remove.tooltip":"Sprachauszeichnung entfernen", + "button.add-wai-lang.tooltip":"Sprachauszeichnung hinzufügen" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/i18n.js new file mode 100644 index 000000000..5689ec125 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/i18n.js @@ -0,0 +1,14 @@ +define({ + "root":{ + "floatingmenu.tab.wai-lang":"Language annotation", + "button.add-wai-lang-remove.tooltip":"Remove language annotation", + "button.add-wai-lang.tooltip":"Add language annotation" + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/mk/i18n.js new file mode 100644 index 000000000..ab76a7255 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/mk/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Јазична анотација", + "button.add-wai-lang-remove.tooltip":"Одстрани јазична анотација", + "button.add-wai-lang.tooltip":"Додади јазична анотација" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/pt-br/i18n.js new file mode 100644 index 000000000..e1beaabbc --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/pt-br/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Anotação de linguagem", + "button.add-wai-lang-remove.tooltip":"Remover anotação de linguagem", + "button.add-wai-lang.tooltip":"Adicionar anotação de linguagem" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/ru/i18n.js new file mode 100644 index 000000000..f82180f40 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/ru/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Языковая аннотация", + "button.add-wai-lang-remove.tooltip":"Удалить языковую аннотацию", + "button.add-wai-lang.tooltip":"Добавить языковую аннотацию" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/uk/i18n.js new file mode 100644 index 000000000..1feecc623 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/uk/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"Мовна анотація", + "button.add-wai-lang-remove.tooltip":"Видалити мовну анотацію", + "button.add-wai-lang.tooltip":"Додати мовну анотацію" +}); diff --git a/modules/core/aloha/static/plugins/extra/wai-lang/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/wai-lang/nls/zh-hans/i18n.js new file mode 100644 index 000000000..987cb860e --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/wai-lang/nls/zh-hans/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.wai-lang":"语言注释", + "button.add-wai-lang-remove.tooltip":"移除语言注释", + "button.add-wai-lang.tooltip":"添加语言注释" +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/README b/modules/core/aloha/static/plugins/extra/zemanta/README new file mode 100644 index 000000000..bebac3be1 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/README @@ -0,0 +1,5 @@ +// @todo +// http://developer.zemanta.com/docs/sdk/ +// increase API limit for "demo" api key +// tags are not added to a input field atm +// error: Uncaught ReferenceError: _gat is not defined \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/zemanta/css/zemanta-widget-alohaeditor.css b/modules/core/aloha/static/plugins/extra/zemanta/css/zemanta-widget-alohaeditor.css new file mode 100644 index 000000000..8acf74d63 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/css/zemanta-widget-alohaeditor.css @@ -0,0 +1,24 @@ +#zemanta-head, #zemanta-control { + display: none; +} + +#zemanta-suggested-tags { + margin: 10px 0 5px 0; +} + +#zemanta-suggested-links { + margin: 5px 0 5px 0; +} + +.zemanta-pixie, .zemanta-help { + display: none; +} + +.zemanta-related-title { + padding: 25px 0 0 0; + font-weight: bold; +} + +button.aloha-button-zemanta { + background-image: url(../img/zemanta-mini-logo.png) !important; +} diff --git a/modules/core/aloha/static/plugins/extra/zemanta/img/zemanta-mini-logo.png b/modules/core/aloha/static/plugins/extra/zemanta/img/zemanta-mini-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..26cc14475f7934336cbb159a5fc487c20b856a8f GIT binary patch literal 622 zcmV-!0+IcRP)$I)&-te3t2{qObvYl-K1gz$!w6SClB zX_c}lg8~phGDjGRNAMz==)yMu$6DAD(A9-@(#rS*;|^ATG=NN<}6TXB``8en{eH&5U30x*CFsL@HXVSvFeE?}lF zC9VUm@rgdc7+-d1Z(?7vQXiVRn0PQ(z=QUB{q6iY)0!te!HAm9Ni``LU+MBQ<0JvW`pzkl}D zymE>jB1mb4bkK!qOwgdA*tME9wQ=G~Fs|{G>lM_l!P(B3jlFFZsc#PX=6agOKH&K2 zN0d6#Mt8QCC+Q~IDr{8cKPnLkZCijMwM^BNbz%kn|5qV?0bx+Oi?#l|uK)l507*qo IM6N<$f*Sc7MF0Q* literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/plugins/extra/zemanta/lib/zemanta-plugin.js b/modules/core/aloha/static/plugins/extra/zemanta/lib/zemanta-plugin.js new file mode 100644 index 000000000..bb68971bd --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/lib/zemanta-plugin.js @@ -0,0 +1,259 @@ +/* zemanta-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [ + 'aloha', + 'jquery', + 'aloha/plugin', + 'aloha/floatingmenu', + 'i18n!zemanta/nls/i18n', + 'i18n!aloha/nls/i18n', + 'aloha/console', + 'css!zemanta/css/zemanta-widget-alohaeditor.css', + ], + function (Aloha, jQuery, Plugin, FloatingMenu, i18n, i18nCore, console) { + "use strict"; + + var + GENTICS = window.GENTICS, + active = false, + editableId = false, + settings = false; + + // check for API key settings + if (typeof Aloha.settings.plugins.zemanta === 'undefined') { + settings = {}; + } else { + settings = Aloha.settings.plugins.zemanta; + } + + if (typeof settings.apiKey === 'undefined') { + Aloha.Log.warn('Plugin.Zemanta', 'Add your own Zemanta API Key (Aloha.settings.plugins.zemanta.apiKey). Register one here: http://developer.zemanta.com/apps/register/'); + settings.apiKey = '8n7tl9nikmdps2rhkpusihnt'; + } + + + /** + * Zemanta API Key for SDK + */ + window.ZemantaGetAPIKey = function () { + return settings.apiKey || false; + } + + /** + * register the plugin with unique name + */ + return Plugin.create('zemanta', { + + /** + * Initialize the plugin and set initialize flag on true + */ + init:function () { + // load Zemanta SDK + var staticDomain = 'http://static.zemanta.com/'; + Aloha.require([ + 'css!' + staticDomain + 'core/zemanta-widget.css', + staticDomain + 'core/jquery.js', + staticDomain + 'core/jquery.zemanta.js' + ]); + + this._initButtons(); + //this._initEvents(); + }, + + _initButtons:function () { + var self = this; + + // zemanta button + FloatingMenu.createScope('Aloha.Zemanta', 'Aloha.continuoustext'); + this.zemantaButton = new Aloha.ui.Button({ + 'name':'zemanta', + 'iconClass':'aloha-button aloha-button-zemanta', + 'size':'small', + 'onclick':function () { + self.suggestions(); + }, + 'tooltip':i18n.t('button.zemanta.tooltip'), + 'toggle':true + }); + + FloatingMenu.addButton( + 'Aloha.continuoustext', + this.zemantaButton, + i18n.t('floatingmenu.tab.related'), + 1 + ); + }, + + _initEvents:function () { + var self = this; + // update suggestions with smart content change ... + Aloha.bind('aloha-editable-deactivated', function (event, rangeObject) { + // do something ... + }); + }, + + suggestions:function () { + var self = this, + widget = document.createElement('div'), + tags = document.createElement('div'), + links = document.createElement('div'), + insertionSpaceId = false, + insertionSpace = false, + t0 = this.now(); + + this.editableId = Aloha.activeEditable.obj[0].id; + + if (this.active == true) { + // remove zemanta widgets (button click to activate/deactivate) + $('#zemanta-sidebar').remove(); + $('#zemanta-suggested-tags').remove(); + $('#zemanta-suggested-links').remove(); + this.active = false; + return; + } + + if (Aloha.activeEditable.getContents().length < 140) { + self.zemantaButton.setPressed(false); + + Aloha.showMessage(new Aloha.Message({ + title:i18n.t('Information'), + text:i18n.t('zemanta.message.shorttext'), + type:Aloha.Message.Type.ALERT + })); + return; + } + + widget.setAttribute('id', 'zemanta-sidebar'); + widget.innerHTML = '
            Loading Zemanta...
            '; + + tags.setAttribute('id', 'zemanta-suggested-tags'); + tags.innerHTML = '
            • « Tags

             

            '; + + links.setAttribute('id', 'zemanta-suggested-links'); + links.innerHTML = ''; + + // if not set via settings insert the widgets below the current editable + insertionSpaceId = this.editableId; + if (typeof this.settings.insertionSpaceId !== 'undefined') { + insertionSpaceId = this.settings.insertionSpaceId; + } + + // insert zemanta widgets after this dom object + // @nicetohave different IDs all available widgets and switch to insert before/after that tag + insertionSpace = document.getElementById(insertionSpaceId); + if (!insertionSpace) { + // fallback: if the dom object does not exist (from config) insert it after the current editable + insertionSpaceId = this.editableId; + insertionSpace = document.getElementById(insertionSpaceId); + } + + if (insertionSpace) { + insertionSpace.parentNode.insertBefore(widget, insertionSpace.nextSibling); + insertionSpace.parentNode.insertBefore(links, insertionSpace.nextSibling); + insertionSpace.parentNode.insertBefore(tags, insertionSpace.nextSibling); + } else { + Aloha.Log.warn('Plugin.Zemanta', 'There was a problem inserting the Zemanta widgets.'); + } + + try { + $ = window.zQuery; + if (!$) { + throw 'Plugin.Zemanta: No zQuery available.'; + } + if ($('#zemanta-message').html() === 'Loading...') { + $('#zemanta-message').html('Preparing...'); + } + + this.waitForLoad(); + this.active = true; + } catch (er) { + Aloha.Log.error('Plugin.Zemanta', er); + } + }, + + /** + * Get current timestamp + */ + now:function () { + return new Date().getTime(); + }, + + setPlatform:function ($, p) { + var editableId = Aloha.activeEditable.obj[0].id; + + return $.zextend(p, { + widget_version:3, + platform:{ + dnd_supported:true, + get_editor:function () { + var editor = {element:null, property:null, type:null, win:null}; + + try { + editor = { + element:document.getElementById(editableId), + property:'innerHTML', + type:'div', + win:null + } + } catch (er) { + Aloha.Log.error('Plugin.Zemanta.setPlatform', er); + } + return editor; + } + } + }); + }, + + waitForLoad:function () { + var done = false, t0 = null; + + if (typeof $.zemanta === "undefined") { + $('#zemanta-message').html('Waiting...'); + return; + } + + t0 = this.now(); + $('#zemanta-message').html('Initializing...'); + + try { + done = $.zemanta.initialize(this.setPlatform($, { + interface_type:"alohaeditor", + tags_target_id:"zemanta-tags" + })); + } catch (er) { + Aloha.Log.error('Plugin.Zemanta.waitForLoad', er); + } + + if (!done) { + $('#zemanta-message').html('There was a problem initialising the editor.'); + } else { + $('#zemanta-control').remove(); // does not work via css + } + } + }); + }); \ No newline at end of file diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/ca/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/ca/i18n.js new file mode 100644 index 000000000..3e8e32714 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/ca/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Relacionat", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"Per cercar articles, imatges i etiquetes relacionades el servei del Zemanta necessita més de 140 caràcters." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/de/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/de/i18n.js new file mode 100644 index 000000000..de6ab24eb --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/de/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Ähnlich", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"Um ähnliche Artikel, Bilder oder Tags vorzuschlagen benötigt das Zemanta Service mindestens 140 Zeichen." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/i18n.js new file mode 100644 index 000000000..677e2c604 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/i18n.js @@ -0,0 +1,14 @@ +define({ + "root":{ + "floatingmenu.tab.related":"Related", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"To find related articles, images or tags the Zemanta service needs more then 140 characters." + }, + "ca":true, + "de":true, + "mk":true, + "pt-br":true, + "ru":true, + "uk":true, + "zh-hans":true +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/mk/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/mk/i18n.js new file mode 100644 index 000000000..3cf1f367d --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/mk/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Поврзано", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"За да најде поврзани статии, слики или ознаки, на Zemanta сервисот му требаат повеќе од 140 карактери." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/pt-br/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/pt-br/i18n.js new file mode 100644 index 000000000..f9396d1ac --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/pt-br/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Relacionado", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"Para encontrar artigos, imagens ou tags relacionados o serviço Zemanta precisa mais de 140 caracteres." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/ru/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/ru/i18n.js new file mode 100644 index 000000000..e0d967ad4 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/ru/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Связанные", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"Для поиска связанных статей, изображений или тегов сервису Zemanta необходимо больше, чем 140 символов." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/uk/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/uk/i18n.js new file mode 100644 index 000000000..057f9ed0c --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/uk/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"Пов\'язані", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"Щоб знайти пов\'язані статті, зображення чи теги сервісу Zemanta необхідно більше, ніж 140 символів." +}); diff --git a/modules/core/aloha/static/plugins/extra/zemanta/nls/zh-hans/i18n.js b/modules/core/aloha/static/plugins/extra/zemanta/nls/zh-hans/i18n.js new file mode 100644 index 000000000..dc6a35b32 --- /dev/null +++ b/modules/core/aloha/static/plugins/extra/zemanta/nls/zh-hans/i18n.js @@ -0,0 +1,5 @@ +define({ + "floatingmenu.tab.related":"相关", + "button.zemanta.tooltip":"Zemanta", + "zemanta.message.shorttext":"为了找到相关的文章,图片或标签,Zemanta服务需要超过140个字符。" +}); diff --git a/modules/core/aloha/static/sass/aloha.scss b/modules/core/aloha/static/sass/aloha.scss new file mode 100644 index 000000000..c118835df --- /dev/null +++ b/modules/core/aloha/static/sass/aloha.scss @@ -0,0 +1,139 @@ +@import "compass/css3"; +@import "../../../../../themes/core/cleanslate/public/sass/variables.scss"; + +//@import '../../../../themes/core/cleanslate/public/sass/variables.scss'; + +.aloha { + ol, ul { + list-style: none; + } +} + +.aloha-sidebar-bar { + z-index: 999999999; + position: fixed; + top: 0; + left: 0; + border-right: 1px solid $borderColour; + @include box-shadow(0 0 $paddingSmall rgba(0, 0, 0, 0.5)); + + &.aloha-sidebar-right { + left: auto; + right: 0; + border-right-width: 0; + border-left: 1px solid #888888; + } +} + +.aloha-sidebar-inner { + position: relative; + background-color: #cccccc; + @include background-image(radial-gradient(rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.2) 80%, rgba(0, 0, 0, 0.3) 100%)); +} + +.aloha-sidebar-panels { + padding: $padding 0; + li { + overflow: hidden; + padding: 0 $padding; + } +} + +.aloha-sidebar-panel-top, .aloha-sidebar-panel-content.aloha-sidebar-panel-bottom { + @include border-radius($borderRadius); +} + +.aloha-metaview p { + background-image: url(../plugins/extra/metaview/img/p.png) +} + +.aloha-metaview pre { + background-image: url(../plugins/extra/metaview/img/pre.png) +} + +.aloha-metaview h1 { + background-image: url(../plugins/extra/metaview/img/h1.png) +} + +.aloha-metaview h2 { + background-image: url(../plugins/extra/metaview/img/h2.png) +} + +.aloha-metaview h3 { + background-image: url(../plugins/extra/metaview/img/h3.png) +} + +.aloha-metaview h4 { + background-image: url(../plugins/extra/metaview/img/h4.png) +} + +.aloha-metaview h5 { + background-image: url(../plugins/extra/metaview/img/h5.png) +} + +.aloha-metaview h6 { + background-image: url(../plugins/extra/metaview/img/h6.png) +} + +.aloha-metaview blockquote { + background-image: url(../plugins/extra/metaview/img/blockquote.png) +} + +.aloha-metaview div { + background-image: url(../plugins/extra/metaview/img/div.png) +} + +.aloha-metaview dl { + background-image: url(../plugins/extra/metaview/img/dl.png) +} + +.aloha-metaview dt { + background-image: url(../plugins/extra/metaview/img/dt.png) +} + +.aloha-metaview dd { + background-image: url(../plugins/extra/metaview/img/dd.png) +} + +.aloha-metaview td { + background-image: url(../plugins/extra/metaview/img/td.png) +} + +.aloha-metaview th { + background-image: url(../plugins/extra/metaview/img/th.png) +} + +.aloha-metaview table { + background-image: url(../plugins/extra/metaview/img/table.png) +} + +.aloha-metaview caption { + background-image: url(../plugins/extra/metaview/img/caption.png) +} + +.aloha-metaview hr { + background-image: url(../plugins/extra/metaview/img/hr.png) +} + +.aloha-metaview abbr[title], .aloha-metaview dfn[title] { + border-bottom: 1px dotted; + cursor: help +} + +.aloha-metaview [lang] { + background-image: url(../plugins/extra/wai-lang/img/button.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center +} + +.aloha-metaview q { + background-image: url(../plugins/extra/metaview/img/icon_cite.png); + padding-left: 20px; + border: 1px dotted #ddd; + background-color: #ccc; + background-repeat: no-repeat; + background-position: left center +} \ No newline at end of file diff --git a/modules/core/aloha/static/test/AlohaEditorLogo.png b/modules/core/aloha/static/test/AlohaEditorLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..014694b616edfa3899d8ea3500dab0c4654fee25 GIT binary patch literal 14324 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 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/test/helper-generatetests.html b/modules/core/aloha/static/test/helper-generatetests.html new file mode 100644 index 000000000..24400c888 --- /dev/null +++ b/modules/core/aloha/static/test/helper-generatetests.html @@ -0,0 +1,37 @@ + + + + + Aloha Editor: generate testswarm config from tests.js + + + + + + + + + + diff --git a/modules/core/aloha/static/test/index.html b/modules/core/aloha/static/test/index.html new file mode 100644 index 000000000..609522821 --- /dev/null +++ b/modules/core/aloha/static/test/index.html @@ -0,0 +1,63 @@ + + + + + Aloha Editor Tests + + + +
            + +
          + + + diff --git a/modules/core/aloha/static/test/manual/blocks-caret-positioning.html b/modules/core/aloha/static/test/manual/blocks-caret-positioning.html new file mode 100644 index 000000000..4c9669444 --- /dev/null +++ b/modules/core/aloha/static/test/manual/blocks-caret-positioning.html @@ -0,0 +1,50 @@ + + + + + + + Aloha Editor: Blocks caret positioning + + + + + + + + +
          + one + +
          + two +
          + three +
          +
          +
          +
          +
          + four +
          + + + diff --git a/modules/core/aloha/static/test/manual/hotkeys.html b/modules/core/aloha/static/test/manual/hotkeys.html new file mode 100644 index 000000000..5d22a2148 --- /dev/null +++ b/modules/core/aloha/static/test/manual/hotkeys.html @@ -0,0 +1,1392 @@ + + + + + + + + + + + + +

          jQuery.HotKeys.Testing.

          + +

          Testing Platform:

          + +
          +

          Project Home: http://code.google.com/p/js-hotkeys/

          + +
          + +

          Special Keys

          + +
          esc
          +
          tab
          +
          space
          +
          return
          +
          backspace +
          +
          scroll
          +
          capslock
          +
          numlock
          +
          pause +
          +
          insert
          +
          home
          +
          del
          +
          + + end +
          +
          pageup
          +
          pagedown
          +
          left
          +
          up
          +
          right +
          +
          down
          +
          f1
          +
          f2
          +
          f3
          +
          f4 +
          +
          f5
          +
          f6
          +
          f7
          +
          f8
          +
          f9 +
          +
          f10
          +
          f11
          +
          f12
          +
          + +

          0-9 Digits

          + +
          1
          +
          2
          +
          3
          +
          4
          +
          5
          +
          6
          +
          7
          +
          8
          +
          9
          +
          0
          +
          +

          A-Z Letters

          + +
          a
          +
          b
          +
          c
          +
          d
          +
          e
          +
          + + f +
          +
          g
          +
          h
          +
          i
          +
          j
          +
          k
          +
          l +
          +
          m
          +
          n
          +
          o
          +
          p
          +
          q +
          +
          r
          +
          s
          +
          t
          +
          u
          +
          v + +
          +
          w
          +
          x
          +
          y
          +
          z
          +
          +

          Special Modifiers

          + +
          +Ctrl + +
          Ctrl+a
          +
          Ctrl+b
          +
          Ctrl+c
          +
          Ctrl+d +
          +
          Ctrl+e
          +
          Ctrl+f
          +
          Ctrl+g
          +
          Ctrl+h +
          +
          Ctrl+i
          +
          Ctrl+j
          +
          Ctrl+k
          +
          + + Ctrl+l +
          +
          Ctrl+m
          +
          Ctrl+n
          +
          Ctrl+o
          +
          Ctrl+p
          +
          Ctrl+q +
          +
          Ctrl+r
          +
          Ctrl+s
          +
          Ctrl+t
          +
          Ctrl+u +
          +
          Ctrl+v
          +
          Ctrl+w
          +
          Ctrl+x
          +
          + Ctrl+y +
          +
          Ctrl+z
          +
          +Shift + +
          Shift+a
          +
          Shift+b
          +
          Shift+c +
          +
          Shift+d
          +
          Shift+e
          +
          Shift+f
          +
          Shift+g +
          +
          Shift+h
          +
          Shift+i
          +
          Shift+j
          +
          Shift+k +
          +
          Shift+l
          +
          Shift+m
          +
          Shift+n
          +
          Shift+o +
          +
          Shift+p
          +
          Shift+q
          +
          Shift+r
          +
          Shift+s +
          +
          Shift+t
          +
          Shift+u
          +
          Shift+v
          +
          Shift+w +
          +
          Shift+x
          +
          Shift+y
          +
          Shift+z
          +
          + + + Alt + +
          Alt+a
          +
          Alt+b
          +
          Alt+c
          +
          Alt+d
          +
          Alt+e +
          +
          Alt+f
          +
          Alt+g
          +
          Alt+h
          +
          Alt+i +
          +
          Alt+j
          +
          Alt+k
          +
          Alt+l
          +
          Alt+m +
          +
          Alt+n
          +
          Alt+o
          +
          Alt+p
          +
          Alt+q
          +
          Alt+r +
          +
          Alt+s
          +
          Alt+t
          +
          Alt+u
          +
          Alt+v +
          +
          Alt+w
          +
          Alt+x
          +
          Alt+y
          +
          Alt+z
          +
          +

          Special Modifiers + Special Keys

          + +
          +Ctrl + +
          Ctrl+esc
          +
          Ctrl+tab
          +
          Ctrl+space +
          +
          Ctrl+return
          +
          Ctrl+backspace
          +
          Ctrl+scroll + +
          +
          Ctrl+capslock
          +
          Ctrl+numlock
          +
          Ctrl+pause
          +
          Ctrl+insert +
          +
          Ctrl+home
          +
          Ctrl+del
          +
          Ctrl+end
          +
          Ctrl+pageup +
          +
          Ctrl+pagedown
          +
          Ctrl+left
          +
          Ctrl+up
          +
          Ctrl+right +
          +
          Ctrl+down
          +
          Ctrl+f1
          +
          Ctrl+f2
          +
          Ctrl+f3 +
          +
          Ctrl+f4
          +
          Ctrl+f5
          +
          Ctrl+f6
          +
          Ctrl+f7 +
          +
          Ctrl+f8
          +
          Ctrl+f9
          +
          Ctrl+f10
          +
          Ctrl+f11 +
          +
          Ctrl+f12
          +
          +Shift + +
          Shift+esc
          +
          Shift+tab +
          +
          Shift+space
          +
          Shift+return
          +
          Shift+backspace +
          +
          Shift+scroll
          +
          Shift+capslock
          +
          Shift+numlock
          +
          Shift+pause +
          +
          Shift+insert
          +
          Shift+home
          +
          Shift+del
          +
          Shift+end +
          +
          Shift+pageup
          +
          Shift+pagedown
          +
          + + Shift+left +
          +
          Shift+up
          +
          Shift+right
          +
          Shift+down
          +
          Shift+f1 +
          +
          Shift+f2
          +
          Shift+f3
          +
          Shift+f4
          +
          Shift+f5 +
          +
          Shift+f6
          +
          Shift+f7
          +
          Shift+f8
          +
          Shift+f9 +
          +
          Shift+f10
          +
          Shift+f11
          +
          Shift+f12
          +
          +Alt + +
          Alt+esc
          +
          Alt+tab
          +
          Alt+space
          +
          Alt+return +
          +
          Alt+backspace
          +
          Alt+scroll
          +
          Alt+capslock
          +
          Alt+numlock +
          +
          Alt+pause
          +
          Alt+insert
          +
          Alt+home + +
          +
          Alt+del
          +
          Alt+end
          +
          Alt+pageup
          +
          Alt+ + pagedown +
          +
          Alt+left
          +
          Alt+up
          +
          Alt+right
          +
          Alt+ + down +
          +
          Alt+f1
          +
          Alt+f2
          +
          Alt+f3
          +
          Alt+f4
          +
          Alt+f5 +
          +
          Alt+f6
          +
          Alt+f7
          +
          Alt+f8
          +
          Alt+f9 +
          +
          Alt+f10
          +
          Alt+f11
          +
          Alt+f12
          +
          + + + + diff --git a/modules/core/aloha/static/test/manual/sandbox.html b/modules/core/aloha/static/test/manual/sandbox.html new file mode 100644 index 000000000..8fade30ce --- /dev/null +++ b/modules/core/aloha/static/test/manual/sandbox.html @@ -0,0 +1,46 @@ + + + + + + + + Aloha Editor Sandbox + + + + + + + + +

          Sandbox

          + +

          Hello, world!

          + + + + diff --git a/modules/core/aloha/static/test/manual/testbox.html b/modules/core/aloha/static/test/manual/testbox.html new file mode 100644 index 000000000..2a28dfc57 --- /dev/null +++ b/modules/core/aloha/static/test/manual/testbox.html @@ -0,0 +1,192 @@ + + + + + + + + Aloha Editor "Aghamanoukjan"-Style Selection Tests + + + + + + + + + + + + + +

          Aloha Editor developers testbox

          + +
          +
          + Add the markup you want to test and press the Fill Testbox button. Selection markers are not allowed as text. + If you want to test a certain selection use following syntax to mark selection begin and end.
          + [{ data-start only one occurrence allowed. Defines begin of the + selection.
          + ]} data-end only one occurrence allowed. Defines end of the selection.
          +
          +
          +
          +
          + Testmarkup + + + +
          + + +
          + Source view +
          + +
          +
          +
          + Command + Aloha Editor Native +
          +
          +

          + + + +

          +
          +
          Indeterminancy: + +
           
          +
          +
          State: + +
           
          +
          +
          Value: + +
           
          +
          +
          +
          +
          + Testbox +
          +
          +
          +
          + + + diff --git a/modules/core/aloha/static/test/manual/testbox.js b/modules/core/aloha/static/test/manual/testbox.js new file mode 100644 index 000000000..efc311258 --- /dev/null +++ b/modules/core/aloha/static/test/manual/testbox.js @@ -0,0 +1,328 @@ +require([ '../unit/testutils' ], function (TestUtils) { + + 'use strict'; + + Aloha.ready(function () { + + var jQuery = Aloha.jQuery; + + // testmarkup area + var $fillArea = jQuery('#aloha-fill'); + + // contenteditable area + var $testArea = jQuery('#aloha-test'); + + // testmarkup source area + var $sourceArea = jQuery('#aloha-source'); + + var $command = jQuery('#command'); + var $commandValue = jQuery('#command-value'); + + var $fillButton = jQuery('#testbox-fill'); + + var applyMarkupOnNextSelection = true; + var engine = Aloha; + var selectionRange; + var selectionTimeout; + var supportedCommands = Aloha.querySupportedCommands().sort(); + var savedRange; + init(); + + /** + * Initalize the testbox + */ + function init() { + + // Populate the dropdown + for (var i = 0; i < supportedCommands.length; i++) { + $command.append(''); + } + + // we never want to see the floatingmenu here + var floatingMenu = Aloha.require('aloha/floatingmenu'); + floatingMenu.doLayout = function () { + this.hide(); + }; + + // Enable aloha for testbox area + $testArea.aloha(); + + registerHandlers(); + } + + /** + * Registers all event handlers + */ + function registerHandlers() { + + $fillArea.change(function () { + applyMarkupOnNextSelection = true; + }); + + // Set the initial selection when the document is ready + jQuery(onSelectionChanged); + + // Handle selection events within the testarea. + // This also preserves the selection/ranges within aloha + $testArea.contentEditableSelectionChange(function () { + onSelectionChanged(); + + // Load the current active range and store it in the savedRange property. + // We need to store it since we loose the range when a blur event occurs. + var range = Aloha.getSelection().getRangeAt(0); + savedRange = Aloha.createRange(); + savedRange.setStart(range.startContainer, range.startOffset); + savedRange.setEnd(range.endContainer, range.endOffset); + + }); + + // Handle click on Fill Testbox button + $fillButton.click(function () { + $testArea[ 0 ].innerHTML = $fillArea.val(); + Aloha.editables[0].obj.focus(); + applySelection($testArea); + }); + + // Handle changes of engines + jQuery('[name=engine]').change(function () { + if (jQuery(this).val() == 'aloha') { + $testArea.aloha(); + engine = Aloha; + } else { + $testArea.mahalo().contentEditable(true); + engine = document; + } + queryCommand(); + }); + + $command.change(queryCommand); + + // Handle click on execute button + jQuery('#command-execute').click(function () { + var execCommand = $command.val(); + var execCommandValue = $commandValue.val(); + + // Check whether the user has selected a valid command + if (!execCommand) { + alert('Please select a valid command and try again.'); + return; + } + Aloha.editables[0].obj.focus(); + + // Place the brackets according to the user specific selection + TestUtils.addBrackets(selectionRange); + + // Convert the brackets and show the selection + applySelection($testArea); + + // Apply the command + engine.execCommand(execCommand, false, execCommandValue); + + }); + + } + + function queryCommand() { + + var execCommand = $command.val(); + var result; + + if (!selectionRange) { + return; + } + + if (!execCommand) { + jQuery('#aloha-query').hide(); + return; + } + + jQuery('#aloha-query').show(); + jQuery('#aloha-indeterm').show(); + jQuery('#aloha-state').show(); + jQuery('#aloha-value').show(); + + // Select the last range before applying a command + var range = Aloha.createRange(); + range.setStart(selectionRange.startContainer, selectionRange.startOffset); + range.setEnd(selectionRange.endContainer, selectionRange.endOffset); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(range); + + // "If command has no indeterminacy, raise an INVALID_ACCESS_ERR + try { + result = engine.queryCommandIndeterm(execCommand); + } catch (e) { + if (e === "INVALID_ACCESS_ERR") { + jQuery('#aloha-indeterm').hide(); + } + } + jQuery('#aloha-indeterm-result').html((result ? 'true' : 'false')); + + // "If command has no state, raise an INVALID_ACCESS_ERR exception." + try { + result = engine.queryCommandState(execCommand); + } catch (e) { + if (e === "INVALID_ACCESS_ERR") { + jQuery('#aloha-state').hide(); + } + } + jQuery('#aloha-state-result').html((result ? 'true' : 'false')); + + // "If command has no value, raise an INVALID_ACCESS_ERR exception." + try { + result = engine.queryCommandValue(execCommand); + } catch (e) { + if (e === "INVALID_ACCESS_ERR") { + jQuery('#aloha-value').hide(); + } + } + jQuery('#aloha-value-result').html(result); + + }; + + /** + * If applyMarkupOnNextSelection is true: we will copy the value in + * fillArea into the testArea, and applySelection on it. + * + * Otherwise we will check to see if one of either the start of end + * container is within testArea. If so we will add markers on the current + * range object, + */ + function onSelectionChanged(e) { + + clearTimeout(selectionTimeout); + + // Don't read selection if shift is pressed + if (e && e.shiftKey) { + return; + } + + if (applyMarkupOnNextSelection) { + $testArea[0].innerHTML = $fillArea.val(); + applySelection($testArea); + applyMarkupOnNextSelection = false; + } + + var range = getSelectionRange(); + + if (range) { + // Check that at least one of either of the end or start containers + // is within the "selectable" testArea + var containers = jQuery([ range.startContainer, + range.endContainer ]); + + if (containers.length == 0) { + return; + } + + if (!containers.is($testArea)) { + var parent = containers.parent(); + + if (!parent.is($testArea) && + parent.parents('#' + $testArea.attr('id')) + .length == 0) { + return; + } + } + + var timeout = 0; + + // For ie wait for double and triple clicks + if (jQuery.browser.msie) { + timeout = 200; + } + + selectionTimeout = setTimeout(function () { + TestUtils.addBrackets(range); + applySelection($testArea); + }, timeout); + } + }; + + /** + * Catches exceptions caused when invoking getRangeAt, without any ranges + * available. + * + * @return {Object:range} + */ + function getSelectionRange() { + try { + return Aloha.getSelection().getRangeAt(0); + } catch (ex) { + return null; + } + }; + + /** + * Remove all occurances of the following selection marker delimiters from + * the given element: {, }, [, ], data-start, data-end + * + * @param {DOMElement} + */ + function stripMarkers(elem) { + if (elem && elem.length) { + elem.html(elem.html().replace( + /\{|\[|(data\-(start|end)\s*=\s*[\"\'][^\"\']*[\"\'])|\}|\]/g, + '' + )); + } + }; + + /** + * If the given element contains one start selection marker and one end + * selection marker, then we will attempt to apply the selection on the + * element. + * + * @param {DOMElement} elem - DOM Element whose innerHTML contains + * selection markers defining the selection that + * should be applied to it. + */ + function applySelection(elem) { + + // Display the current selection in the viewArea + $sourceArea.val($testArea.html()); + + // convert html for processing + var html = jQuery('
          ').text($testArea.html()).html(); + + html = elem.html(); + + var startMarkers = html.match(/\{|\[|data\-start/g), + endMarkers = html.match(/\}|\]|data\-end/g), + numMarkers = 0; + + if (startMarkers && startMarkers.length) { + numMarkers += startMarkers.length; + } + + if (endMarkers && endMarkers.length) { + numMarkers += endMarkers.length; + } + + if (numMarkers == 1) { + Aloha.Console.warn('Collapsed selection at end of node: '); + Aloha.Console.warn(getRange()); + stripMarkers(elem); + } else if (numMarkers == 2) { + + // Identify the markers and add the new range to the element + var range = TestUtils.addRange(elem); + var selection = Aloha.getSelection(); + selection.removeAllRanges(); + + // Add the identified range + selection.addRange(range); + selectionRange = range; + queryCommand(); + + } else { + // if numMarkers is > 2 then we have a problem, and we will remove + // all markers to create a "clean-sheet" + stripMarkers(elem); + } + }; + + }); // Aloha.ready + +}); // require + diff --git a/modules/core/aloha/static/test/style.css b/modules/core/aloha/static/test/style.css new file mode 100644 index 000000000..f1f2215e3 --- /dev/null +++ b/modules/core/aloha/static/test/style.css @@ -0,0 +1,24 @@ +#page { + width: 756px; + margin: 0 auto; + font-family: Georgia, Serif; +} + +#logo { + background-image: url('./AlohaEditorLogo.png'); + width: 256px; + height: 256px; + clear: both; + float: right; +} + +#tests { + width: 500px; + float: left; +} + +#footer { + clear: both; + padding: 50px 0 0 0; + font-size: 0.8em; +} diff --git a/modules/core/aloha/static/test/unit/apply-markup.js b/modules/core/aloha/static/test/unit/apply-markup.js new file mode 100644 index 000000000..01c2db520 --- /dev/null +++ b/modules/core/aloha/static/test/unit/apply-markup.js @@ -0,0 +1,243 @@ +/* apply-markup.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define(['testutils'], function (TestUtils) { + "use strict"; + + /** + * Do an markup test + * @param editable the editable + * @param startContainer + * @param startOffset + * @param endContainer + * @param endOffset + * @param markup markup to be applied + * @param original reference + * @param reference result selector + * @param nesting true if nesting of markup shall be allowed + */ + function doMarkupTest(editable, startContainer, startOffset, endContainer, endOffset, markup, original, reference, nesting) { + // generate the range + var range = TestUtils.generateRange(startContainer, startOffset, endContainer, endOffset); + + // apply the markup + TestUtils.applyMarkup(editable, range, markup, nesting); + + // get the result + var result = Aloha.editables[0].getContents(true); + + // get the expected results + var expected = Aloha.jQuery(reference).contents(); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Operation Result'); + + /* + // now apply the markup a second time + TestUtils.applyMarkup(editable, range, markup, nesting); + + // get the expected results + expected = Aloha.jQuery(original).contents(); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Double Operation Result'); + */ + }; + + /** + * Do a block markup test + * @param editable the editable + * @param startContainer + * @param startOffset + * @param endContainer + * @param endOffset + * @param markup markup to be applied + * @param original reference + * @param reference result selector + */ + function doBlockTest(editable, startContainer, startOffset, endContainer, endOffset, markup, original, reference) { + // generate the range + var range = TestUtils.generateRange(startContainer, startOffset, endContainer, endOffset); + + // change the block markup + Aloha.Selection.changeMarkupOnSelection(markup); + + // get the result + var result = Aloha.editables[0].getContents(true); + + // get the expected results + var expected = Aloha.jQuery(reference).contents(); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Operation Result'); + }; + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + module('Plaintext Markup Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-plaintext'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test applying bold to the start of the text + test('Bold at beginning', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 0, this.edit.contents().get(0), 4, jQuery(''), '#ref-plaintext', '#ref-plaintext-start-bold'); + }); + + // Test applying bold to the middle of the text + test('Bold in the middle', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 5, this.edit.contents().get(0), 13, jQuery(''), '#ref-plaintext', '#ref-plaintext-middle-bold'); + }); + + // Test applying bold to the end of the text + test('Bold at end', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 14, this.edit.contents().get(0), 18, jQuery(''), '#ref-plaintext', '#ref-plaintext-end-bold'); + }); + + module('Cross Markup Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-crossmarkup'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test applying bold into the start of italic + test('Bold into Italic start', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 0, this.edit.find('i').contents().get(0), 4, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-start-bold'); + }); + + // Test applying bold within italic + test('Bold in Italic', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 1, this.edit.find('i').contents().get(0), 5, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-inner-bold'); + }); + + // Test applying bold around italic + test('Bold around Italic', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 5, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-outer-bold'); + }); + + // Test applying bold out of italic + test('Bold out of Italic end', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 4, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-end-bold'); + }); + + // Test applying italic into the start of italic (no nesting) + test('Italic into Italic start', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 0, this.edit.find('i').contents().get(0), 4, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-start-italic'); + }); + + // Test applying italic into the start of italic (with nesting) + test('Italic into Italic start with nesting', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 0, this.edit.find('i').contents().get(0), 4, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-start-italic-nesting', true); + }); + + // Test applying italic within italic (no nesting) + test('Italic in Italic', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 1, this.edit.find('i').contents().get(0), 5, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-inner-italic'); + }); + + // Test applying italic within italic (with nesting) + test('Italic in Italic with nesting', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 1, this.edit.find('i').contents().get(0), 5, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-inner-italic-nesting', true); + }); + + // Test applying italic around italic (no nesting) + test('Italic around Italic', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 5, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-outer-italic'); + }); + + // Test applying italic around italic (with nesting) + test('Italic around Italic with nesting', function () { + doMarkupTest(this.edit, this.edit.contents().get(0), 5, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-outer-italic-nesting', true); + }); + + // Test applying italic out of italic (no nesting) + test('Italic out of Italic end', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 4, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-end-italic'); + }); + + // Test applying italic out of italic (with nesting) + test('Italic out of Italic end with nesting', function () { + doMarkupTest(this.edit, this.edit.find('i').contents().get(0), 4, this.edit.contents().get(2), 3, jQuery(''), '#ref-crossmarkup', '#ref-crossmarkup-end-italic-nesting', true); + }); + + module('Header Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-header'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test applying p in first header + test('Paragraph in first Header', function () { + doBlockTest(this.edit, this.edit.find('h1').contents().get(0), 1, this.edit.find('h1').contents().get(0), 1, jQuery('

          '), '#ref-header', '#ref-header-first-p'); + }); + + // Test applying h2 in first header + test('Header in first Header', function () { + doBlockTest(this.edit, this.edit.find('h1').contents().get(0), 1, this.edit.find('h1').contents().get(0), 1, jQuery('

          '), '#ref-header', '#ref-header-first-h2'); + }); + + // Test applying h1 in first paragraph + test('Header in first Paragraph', function () { + doBlockTest(this.edit, this.edit.find('p').eq(0).contents().get(0), 1, this.edit.find('p').eq(0).contents().get(0), 1, jQuery('

          '), '#ref-header', '#ref-header-second-h1'); + }); + + // Test applying h1 in second paragraph + test('Header in second Paragraph', function () { + doBlockTest(this.edit, this.edit.find('p').eq(1).contents().get(0), 1, this.edit.find('p').eq(1).contents().get(0), 1, jQuery('

          '), '#ref-header', '#ref-header-last-h1'); + }); + }); +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/applymarkup.html b/modules/core/aloha/static/test/unit/applymarkup.html new file mode 100644 index 000000000..c937306df --- /dev/null +++ b/modules/core/aloha/static/test/unit/applymarkup.html @@ -0,0 +1,93 @@ + + + + + Aloha Editor Apply Markup Test Suite + + + + + + + + + + + + + + + + + + +

          Aloha Editor Apply Markup Test Suite

          + +

          + +
          +

          +
            +
            + +
            This is plain text
            +
            This is plain text
            +
            This is plain text
            +
            This is plain text
            + + +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            +
            This is markup text
            + + +

            Header

            + +

            This is the first paragraph

            + +

            This is the second paragraph

            +

            Header

            + +

            This is the first paragraph

            + +

            This is the second paragraph

            +

            Header

            + +

            This is the first paragraph

            + +

            This is the second paragraph

            +

            Header

            + +

            This is the first paragraph

            + +

            This is the second paragraph

            +

            Header

            + +

            This is the first paragraph

            + +

            This is the second paragraph

            +
            +
            + + diff --git a/modules/core/aloha/static/test/unit/bold.html b/modules/core/aloha/static/test/unit/bold.html new file mode 100644 index 000000000..b8425069b --- /dev/null +++ b/modules/core/aloha/static/test/unit/bold.html @@ -0,0 +1,487 @@ + + + + + Aloha Editor command bold tests + + + + + + + + + + + + + + + + + + + + + + +

            Aloha Editor command bold tests

            + +

            + +
            +

            +
              +
              +
              +
              +
              + + diff --git a/modules/core/aloha/static/test/unit/commands/bold.html b/modules/core/aloha/static/test/unit/commands/bold.html new file mode 100644 index 000000000..01bbd1e72 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/bold.html @@ -0,0 +1,617 @@ + + + + + Aloha Editor command bold tests + + + + + + + + + + + + + + + + + + + + + + + +

              Aloha Editor command bold tests

              + +

              + +
              +

              +
                +
                +
                +
                +
                + + diff --git a/modules/core/aloha/static/test/unit/commands/browser_results.txt b/modules/core/aloha/static/test/unit/commands/browser_results.txt new file mode 100644 index 000000000..976d37305 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/browser_results.txt @@ -0,0 +1,55 @@ +bold: +IE7 - 87 tests of 164 passed, 77 failed. +IE8 - 93 tests of 157 passed, 64 failed. +IE9 - 104 tests of 163 passed, 59 failed. +Firefox (7 & 9) - 114 tests of 164 passed, 50 failed. +Chrome (17) - 142 tests of 164 passed, 22 failed. + +italic: +IE7 - 58 tests of 119 passed, 61 failed. +IE8 - 73 tests of 112 passed, 39 failed. +IE9 - 76 tests of 118 passed, 42 failed. +Firefox (7 & 9) - 88 tests of 124 passed, 36 failed. +Chrome (17) - 106 tests of 124 passed, 18 failed. + +underline: +IE7 - 58 tests of 114 passed, 56 failed. +IE8 - 73 tests of 107 passed, 35 failed. +IE9 - 76 tests of 118 passed, 42 failed. +Firefox(7 & 9) - 80 tests of 119 passed, 39 failed. +Chrome (17) - 102 tests of 119 passed, 17 failed. + +subscript: +IE7 - 57 tests of 112 passed, 55 failed. +IE8 - 83 tests of 105 passed, 22 failed. +IE9 - 82 tests of 116 passed, 34 failed. +Firefox(7 & 9) - 93 tests of 117 passed, 24 failed. +Chrome(17) - 105 tests of 117 passed, 12 failed. + +superscript: +IE7 -59 tests of 114 passed, 55 failed. +IE8 - 85 tests of 107 passed, 22 failed. +IE9 - 84 tests of 118 passed, 34 failed. +Firefox(7 & 9) - 95 tests of 119 passed, 24 failed. +Chrome(17) - 107 tests of 119 passed, 12 failed. + +strikethrough: +IE7 - 58 tests of 114 passed, 56 failed. +IE8 - 72 tests of 107 passed, 35 failed. +IE9 - 82 tests of 116 passed, 34 failed. +Firefox(7 & 9) - 80 tests of 119 passed, 39 failed. +Chrome(17) - 102 tests of 119 passed, 17 failed. + +formatBlock: +IE7 - 105 tests of 199 passed, 94 failed. +IE8 - 93 tests of 157 passed, 64 failed. +IE9 - 176 tests of 199 passed, 23 failed. +Firefox(7 & 9) - 192 tests of 199 passed, 7 failed. +Chrome(17) - 187 tests of 199 passed, 12 failed. + +removeformat: +IE7 - 101 tests of 113 passed, 12 failed. +IE8 - 102 tests of 113 passed, 11 failed. +IE9 - 109 tests of 113 passed, 4 failed. +Firefox(7 & 9) - 111 tests of 113 passed, 2 failed. +Chrome(17) - 107 tests of 113 passed, 6 failed. diff --git a/modules/core/aloha/static/test/unit/commands/create_link.html b/modules/core/aloha/static/test/unit/commands/create_link.html new file mode 100644 index 000000000..e6668225b --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/create_link.html @@ -0,0 +1,383 @@ + + + + + Aloha Editor command createLink tests + + + + + + + + + + + + + + + + + + + + + + +

                Aloha Editor command createlink tests

                + +

                + +
                +

                +
                  +
                  +
                  +
                  +
                  + + diff --git a/modules/core/aloha/static/test/unit/commands/debugging.html b/modules/core/aloha/static/test/unit/commands/debugging.html new file mode 100644 index 000000000..fc0ca6a3a --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/debugging.html @@ -0,0 +1,75 @@ + + + + + Aloha Editor command bold tests + + + + + + + + + + + + + + + + + + + + + + +

                  Aloha Editor command bold tests

                  + +

                  + +
                  +

                  +
                    +
                    +
                    +
                    +
                    + + diff --git a/modules/core/aloha/static/test/unit/commands/format_block.html b/modules/core/aloha/static/test/unit/commands/format_block.html new file mode 100644 index 000000000..c90393b4f --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/format_block.html @@ -0,0 +1,870 @@ + + + + + Aloha Editor command formatBlock tests + + + + + + + + + + + + + + + + + + + + + + +

                    Aloha Editor command format block tests

                    + +

                    + +
                    +

                    +
                      +
                      +
                      +
                      +
                      + + diff --git a/modules/core/aloha/static/test/unit/commands/indent.html b/modules/core/aloha/static/test/unit/commands/indent.html new file mode 100644 index 000000000..9cd9cd0f8 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/indent.html @@ -0,0 +1,162 @@ + + + + + Aloha Editor command indent tests + + + + + + + + + + + + + + + + + + + + + + +

                      Aloha Editor indent tests

                      + +

                      + +
                      +

                      +
                        +
                        +
                        +
                        + + diff --git a/modules/core/aloha/static/test/unit/commands/insertorderedlist.html b/modules/core/aloha/static/test/unit/commands/insertorderedlist.html new file mode 100644 index 000000000..b80e2d511 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/insertorderedlist.html @@ -0,0 +1,279 @@ + + + + + Aloha Editor command insertorderedlist tests + + + + + + + + + + + + + + + + + + + + + + +

                        Aloha Editor insertOrderedList tests

                        + +

                        + +
                        +

                        +
                          +
                          +
                          +
                          + + diff --git a/modules/core/aloha/static/test/unit/commands/insertunorderedlist.html b/modules/core/aloha/static/test/unit/commands/insertunorderedlist.html new file mode 100644 index 000000000..0fd71df3a --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/insertunorderedlist.html @@ -0,0 +1,280 @@ + + + + + Aloha Editor command insertunorderedlist tests + + + + + + + + + + + + + + + + + + + + + + +

                          Aloha Editor insertUnorderedList tests

                          + +

                          + +
                          +

                          +
                            +
                            +
                            +
                            + + diff --git a/modules/core/aloha/static/test/unit/commands/italic.html b/modules/core/aloha/static/test/unit/commands/italic.html new file mode 100644 index 000000000..d6bdc101d --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/italic.html @@ -0,0 +1,426 @@ + + + + + Aloha Editor command italic tests + + + + + + + + + + + + + + + + + + + + + + + +

                            Aloha Editor command italic tests

                            + +

                            + +
                            +

                            +
                              +
                              +
                              +
                              +
                              + + diff --git a/modules/core/aloha/static/test/unit/commands/outdent.html b/modules/core/aloha/static/test/unit/commands/outdent.html new file mode 100644 index 000000000..6d84ce744 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/outdent.html @@ -0,0 +1,142 @@ + + + + + Aloha Editor command outdent tests + + + + + + + + + + + + + + + + + + + + + + +

                              Aloha Editor outdent tests

                              + +

                              + +
                              +

                              +
                                +
                                +
                                +
                                + + diff --git a/modules/core/aloha/static/test/unit/commands/remove_format.html b/modules/core/aloha/static/test/unit/commands/remove_format.html new file mode 100644 index 000000000..fbe67b705 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/remove_format.html @@ -0,0 +1,451 @@ + + + + + Aloha Editor command remove format tests + + + + + + + + + + + + + + + + + + + + + + +

                                Aloha Editor command remove format tests

                                + +

                                + +
                                +

                                +
                                  +
                                  +
                                  +
                                  +
                                  + + diff --git a/modules/core/aloha/static/test/unit/commands/strikethrough.html b/modules/core/aloha/static/test/unit/commands/strikethrough.html new file mode 100644 index 000000000..960c79641 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/strikethrough.html @@ -0,0 +1,337 @@ + + + + + Aloha Editor command strikethrough tests + + + + + + + + + + + + + + + + + + + + + + + +

                                  Aloha Editor command strikethrough tests

                                  + +

                                  + +
                                  +

                                  +
                                    +
                                    +
                                    +
                                    +
                                    + + diff --git a/modules/core/aloha/static/test/unit/commands/subscript.html b/modules/core/aloha/static/test/unit/commands/subscript.html new file mode 100644 index 000000000..b011e8082 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/subscript.html @@ -0,0 +1,390 @@ + + + + + Aloha Editor command subscript tests + + + + + + + + + + + + + + + + + + + + + + + +

                                    Aloha Editor command subscript tests

                                    + +

                                    + +
                                    +

                                    +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/modules/core/aloha/static/test/unit/commands/superscript.html b/modules/core/aloha/static/test/unit/commands/superscript.html new file mode 100644 index 000000000..a3906cd79 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/superscript.html @@ -0,0 +1,394 @@ + + + + + Aloha Editor command superscript tests + + + + + + + + + + + + + + + + + + + + + + + +

                                      Aloha Editor command superscript tests

                                      + +

                                      + +
                                      +

                                      +
                                        +
                                        +
                                        +
                                        +
                                        + + diff --git a/modules/core/aloha/static/test/unit/commands/underline.html b/modules/core/aloha/static/test/unit/commands/underline.html new file mode 100644 index 000000000..e5903f1e1 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/underline.html @@ -0,0 +1,380 @@ + + + + + Aloha Editor command underline tests + + + + + + + + + + + + + + + + + + + + + + + +

                                        Aloha Editor command underline tests

                                        + +

                                        + +
                                        +

                                        +
                                          +
                                          +
                                          +
                                          +
                                          + + diff --git a/modules/core/aloha/static/test/unit/commands/unlink.html b/modules/core/aloha/static/test/unit/commands/unlink.html new file mode 100644 index 000000000..2b203c0eb --- /dev/null +++ b/modules/core/aloha/static/test/unit/commands/unlink.html @@ -0,0 +1,151 @@ + + + + + Aloha Editor command unlink tests + + + + + + + + + + + + + + + + + + + + + + +

                                          Aloha Editor command unlink tests

                                          + +

                                          + +
                                          +

                                          +
                                            +
                                            +
                                            +
                                            +
                                            + + diff --git a/modules/core/aloha/static/test/unit/commandtest.css b/modules/core/aloha/static/test/unit/commandtest.css new file mode 100644 index 000000000..834840db1 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commandtest.css @@ -0,0 +1,19 @@ +.notbold { + font-weight: normal; +} + +.notitalic { + font-style: normal; +} + +.underline { + text-decoration: underline; +} + +.line-through { + text-decoration: line-through; +} + +.underline-and-line-through { + text-decoration: underline line-through; +} diff --git a/modules/core/aloha/static/test/unit/commandtest.js b/modules/core/aloha/static/test/unit/commandtest.js new file mode 100644 index 000000000..64e236404 --- /dev/null +++ b/modules/core/aloha/static/test/unit/commandtest.js @@ -0,0 +1,262 @@ +/* commandtest.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['testutils'], + function (TestUtils) { + "use strict"; + + var jQuery = window.jQuery; + + var browser, browserversion; + if (jQuery.browser.msie) { + browser = "msie"; + } else if (jQuery.browser.webkit) { + browser = "webkit"; + } else if (jQuery.browser.opera) { + browser = "opera"; + } else if (jQuery.browser.mozilla) { + browser = "mozilla"; + } + browserversion = browser + jQuery.browser.version; + + // Test whether Aloha is properly initialized + asyncTest('Aloha Startup Test', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 60000); + Aloha.ready(function () { + clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + + var + editable = jQuery('#edit'), + converterResult = jQuery('
                                            '), + converter = jQuery('
                                            '); + + // aloha'fy the editable + editable.aloha(); + + for (var i = 0; i < tests.tests.length; i++) { + + var check = tests.tests[i], + excluded = false; + + if (typeof check === 'undefined') { + check = {}; + } + + if (typeof check.exclude === 'undefined') { + check.exclude = false; + } + + if (typeof check.include === 'undefined') { + check.include = false; + } + + if (check.exclude && typeof check.exclude === 'string') { + check.exclude = [check.exclude]; + } + if (check.include && typeof check.include === 'string') { + check.include = [check.include]; + } + // if exclude is set, check whether we need to exclude the test + if (check.exclude && (check.exclude.indexOf(browser) !== -1 || check.exclude.indexOf(browserversion) !== -1)) { + excluded = true; + } + // if include is set, check whether we shall include the test + if (check.include && check.include.indexOf(browser) === -1 && check.include.indexOf(browserversion) === -1) { + excluded = true; + } + + check.value = ( typeof check.value !== 'undefined') ? check.value : tests.defaultValue; + check.attributes = ( typeof check.attributes !== 'undefined') ? check.attributes : tests.defaultAttributes; + + converter.text(check.start); + var descStart = converter.html(); + + converter.text(check.value); + var descValue = converter.html(); + + converterResult.text(check.execResult); + var descResult = converterResult.html(); + + var descName = '"' + descStart + '" → "' + descResult + '"'; + if (descValue && descValue !== descStart) { + descName += ' ("' + descValue + '")'; + } + + var name = check.name || descName; + + module(tests.defaultCommand + ' ' + (i + 1) + (excluded ? ' (EX)' : ''), { + setup:function () { + // fill the editable area with the start value + editable.html(this.check.start); + editable.focus(); + }, + teardown:function () { + // goodbye + } + }); + + if (excluded) { + test(name, {check:check}, function () { + }); + } else { + test(name, {check:check}, function () { + var + check = this.check, + command = check.command || tests.defaultCommand, + range = TestUtils.addRange(editable), + execResult, + execToggle, + result, + r; + + r = Aloha.createRange(); + r.setStart(range.startContainer, range.startOffset); + r.setEnd(range.endContainer, range.endOffset); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(r); + + // Start + if (typeof check.indetermStart !== 'undefined') { + // query command indeterminacy and compare + result = Aloha.queryCommandIndeterm(command); + deepEqual(result, check.indetermStart, 'queryCommandIndeterm start'); + } + if (typeof check.stateStart !== 'undefined') { + // query command state and compare + result = Aloha.queryCommandState(command); + deepEqual(result, check.stateStart, 'queryCommanState start'); + } + if (typeof check.valueStart !== 'undefined') { + // query command value and compare + result = Aloha.queryCommandValue(command); + deepEqual(result, check.valueStart, 'queryCommandValue start'); + } + + // ExecCommand + if (typeof check.execResult !== 'undefined') { + // execute the command + Aloha.execCommand(command, false, check.value, range); + // place the marker at the selection and add brackets + range = rangy.getSelection().getRangeAt(0); + TestUtils.addBrackets(range); + + // clone the editable object + result = Aloha.editables[0].obj.clone(false); + // get the content as html + var resultHtml = result.html(); + // set the content back (this will merge adjacent text nodes and remove empty text nodes) + result.html(resultHtml); + // get the contents of the editable + result = result.contents(); + execResult = jQuery('
                                            ' + check.execResult + '
                                            '); + + // remove browser specific elements from expected results + if (browser) { + execResult.find('[data-test-exclude~="' + browser + '"]').remove(); + } + execResult = execResult.contents(); + + deepEqual(result.extractHTML(check.attributes), execResult.extractHTML(check.attributes), 'execCommand result'); + } + + // Result + if (typeof check.indetermResult !== 'undefined') { + // query command indeterminacy and compare + result = Aloha.queryCommandIndeterm(command); + deepEqual(result, check.indetermResult, 'queryCommandIndeterm result'); + } + if (typeof check.stateResult !== 'undefined') { + // query command state and compare + result = Aloha.queryCommandState(command); + deepEqual(result, check.stateResult, 'queryCommanState result'); + } + if (typeof check.valueResult !== 'undefined') { + // query command value and compare + result = Aloha.queryCommandValue(command); + deepEqual(result, check.valueResult, 'queryCommandValue result'); + } + + // log expected result + result + /* // not working now + if ( typeof execResult === 'object' && typeof result === 'object' ) { + window.console.log( execResult.html() + ' -- ' + result.html()); + }*/ + + if (check.execToggle) { + range = TestUtils.addRange(editable); + + r = Aloha.createRange(); + r.setStart(range.startContainer, range.startOffset); + r.setEnd(range.endContainer, range.endOffset); + Aloha.getSelection().removeAllRanges(); + Aloha.getSelection().addRange(r); + + // toggle ExecCommand + if (typeof check.execToggle !== 'undefined') { + // execute the command + result = Aloha.execCommand(command, false, check.value); + // place the marker at the selection and add brackets + range = rangy.getSelection().getRangeAt(0); + TestUtils.addBrackets(range); + result = Aloha.editables[0].getContents(true); + execToggle = jQuery('
                                            ' + check.execToggle + '
                                            ').contents(); + deepEqual(result.extractHTML(check.attributes), execToggle.extractHTML(check.attributes), 'execCommand toggle result'); + } + + // Toggle result + if (typeof check.indetermToggle !== 'undefined') { + // query command indeterminacy and compare + result = Aloha.queryCommandIndeterm(command); + deepEqual(result, check.indetermToggle, 'queryCommandIndeterm toggle result'); + } + if (typeof check.stateToggle !== 'undefined') { + // query command state and compare + result = Aloha.queryCommandState(command); + deepEqual(result, check.stateToggle, 'queryCommanState toggle result'); + } + if (typeof check.valueResult !== 'undefined') { + // query command value and compare + result = Aloha.queryCommandValue(command); + deepEqual(result, check.valueToggle, 'queryCommandValue toggle result'); + } + } + + }); + } + } + }); + }); diff --git a/modules/core/aloha/static/test/unit/contenthandler.html b/modules/core/aloha/static/test/unit/contenthandler.html new file mode 100644 index 000000000..6a2689273 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler.html @@ -0,0 +1,142 @@ + + + + + Aloha Editor contenthandler Test Suite + + + + + + + + + + + + + + + + + + + + + +

                                            Aloha Editor Paste Test Suite

                                            + +

                                            + +
                                            +

                                            +
                                              +
                                              +
                                              +
                                              +
                                              + + diff --git a/modules/core/aloha/static/test/unit/contenthandler/example-docx-expected.html b/modules/core/aloha/static/test/unit/contenthandler/example-docx-expected.html new file mode 100644 index 000000000..73694c4ed --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/example-docx-expected.html @@ -0,0 +1,108 @@ +

                                              Here you'll find some example + content to show Aloha's possibilities + regarding any kind of formatting.

                                              + +

                                              Headline 1

                                              + +

                                              Headline 2

                                              + +

                                              Headline 3

                                              + +

                                              Headline 4

                                              + +
                                              Headline 5
                                              + +
                                              Headline 6
                                              + +

                                               

                                              + +

                                              Here we test, a link + and other formattings such as bold, italic or deleted text. You may also + use formattings for maths 22 = 4 or chemical formulas like CO2. + Or you may edit tables as you do in office products.

                                              + +

                                               

                                              + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              + This + + is + + a + + demo +
                                              + table + + with + + an +
                                              + awesome + + column +
                                              + and + + row + + span + + ! +
                                              + +

                                               

                                              + +
                                                +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List + entry +
                                              • +
                                              • List + entry +
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              • List entry
                                              • +
                                              + + +

                                               

                                              + +

                                              For better sematical understanding and WAI compatibility you + can describe abbreviations like HTML and CSS.

                                              + diff --git a/modules/core/aloha/static/test/unit/contenthandler/example-docx-start.html b/modules/core/aloha/static/test/unit/contenthandler/example-docx-start.html new file mode 100644 index 000000000..b84b3be1e --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/example-docx-start.html @@ -0,0 +1,645 @@ + + + + + + + + + +

                                              Here you'll find some example + content to show Aloha's possibilities + regarding any kind of formatting. + +

                                              + +

                                              Headline 1 + +

                                              + +

                                              Headline 2 + +

                                              + +

                                              Headline 3 + +

                                              + +

                                              Headline 4 + +

                                              + +
                                              Headline 5 + +
                                              + +
                                              Headline 6 + +
                                              + +

                                              +   +

                                              + +

                                              Here we test, a link + and other formattings such as bold, italic or deleted text. You may also + use formattings for maths 22 = 4 or chemical formulas like CO2. + Or you may edit tables as you do in office products. + +

                                              + +

                                              +   +

                                              + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              +

                                              This + +

                                              +
                                              +

                                              is + +

                                              +
                                              +

                                              a + +

                                              +
                                              +

                                              demo + +

                                              +
                                              +

                                              table + +

                                              +
                                              +

                                              with + +

                                              +
                                              +

                                              an + +

                                              +
                                              +

                                              awesome + +

                                              +
                                              +

                                              column + +

                                              +
                                              +

                                              and + +

                                              +
                                              +

                                              row + +

                                              +
                                              +

                                              span + +

                                              +
                                              +

                                              ! + +

                                              +
                                              + +

                                              +   +

                                              + +

                                              ·      +List entry + +

                                              + +

                                              o   +List entry + +

                                              + +

                                              o   +List entry + +

                                              + +

                                              §  +List entry + +

                                              + +

                                              §  +List entry + +

                                              + +

                                              ·      +List entry + +

                                              + +

                                              ·      +List entry + +

                                              + +

                                              ·      +List entry + +

                                              + +

                                              + a.     +List entry + +

                                              + +

                                              a.     +List entry + +

                                              + +

                                              b.     +List entry + +

                                              + +

                                                                                             +i.     + List + entry + +

                                              + +

                                                                                            +ii.     + List + entry + +

                                              + +

                                              + b.     +List entry + +

                                              + +

                                              + c.      +List entry + +

                                              + +

                                              + d.     +List entry + +

                                              + +

                                              +   +

                                              + +

                                              For better sematical understanding and WAI compatibility you + can describe abbreviations like HTML and CSS. + +

                                              + + \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.doc b/modules/core/aloha/static/test/unit/contenthandler/example.doc new file mode 100644 index 0000000000000000000000000000000000000000..4cab1979df059e69b599faaac6dc4c72245648dd GIT binary patch literal 35840 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 literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.docx b/modules/core/aloha/static/test/unit/contenthandler/example.docx new file mode 100644 index 0000000000000000000000000000000000000000..914d46e1a26232ac94e28d2108b98f52aef242c4 GIT binary patch literal 77647 zcmeFYcUV-*wl6x#Nx(#oDmjXRWKfVSIcEV8njEFcDmg1r$w+825}F(&3oOYr(kRf4 z?w6*6S zUhUsY!%)Gj-gdlFj3}32=3&Mwd$i+Q&&sWFocDt3VP~)d%SRqDPjz@4XQ1rf+0op6 zY1vS(M)1pUE{s{W!42J)vjrj{rg3e*4E?#tIaZkL!=lVwfc{_G>r+0RF)xXX11tMu zc|zV^KP1oY;d_i~pN#x*6YXj?Tza4lCG?kiACxWy#@FVwrxeKwi7=`Xq{-06f;D

                                              01S`a6xvFv+mu{@Cl7Q@(*DT;U=F#wLi{$ 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

                                              !oswOTM2-` z?W2p+3Zge8x&x#aJx82gk4~(lT8Yq!mNxvs=x-?}Kq=|g#;B}KEVR=Qskv2@MzYu}+kfQDYOFwzrS`!S=)Zz&~l#&U(F-6&uo1Rm!aGzLI6}a0?1o*y@I&ln6E)nmss?HCP zg34AO*Rh>*_8&ul^blH0&c<$&S#@e)9n58{0rYT-cc?gXY6u3^Yl2=WHpL-<_s%^L z!vnH3b%pw_%+ZvBVwk?gJOZ^d+KCSq28#e2Q4&vyDw)9;s zZ7mcA+q4xEt_PHj)3hP~4F1SQI@^1)KAU^jVCJz;ZxFmyk{fIr6!7ztyM&Py#_FTQ z)~;Y##0u>Vl6cw%>an{Vnvy7Xn!s&nL7lxV7g$x=Kyzpf53KYIfR&#~>DYscx;s2DLF+HM0vUne!z zGF2ccBd{30+p7F|Nv#bTN84|XDF$ii%rsKL1V#Bab%vNgf33xnFb8YF@3ejTp zrAmZP4A2_f(-?@E4%#C(y-Dacedchlc%v64|B-Wh5YiyLvdw(vvj&7aZT+v7hu8T0IYk|UZuXw9)Hi`jw)|#{Nm~B1&ppQPd%wfn( zHQMD7GVKcn;`z@+8PQKLC`#qI8shbfiH`6YNaeXy8Ll0DM0({)U>bFe)+KLMsaIah ziUTUl6G;FwKbK(#HwchQ?n8hvT{|^>9wMX;#H~gtjKJGZS2aKgGuO6a(6KuV82x9vcz&VJo~@mH{Eqhf@V1^(UFAEg7*K;? z?T?x}CZ9xT2aaOl9c9Uew2fk2kU)k{8Q$J&5^iBFBDJ?-6=09;4Wc(-S)lpo7FP7I zPF2^u{+RtyJFGH6x?e&nLDUJ`?O7n0o$E(1cf)sWT^rgdu( zZ-62pgZ`F>$+!>*Wt|$(>n35e?fiI!F~*aLRyH0mL2t^!H2M+oTIvgEVvjp(%Bk=O zeJ#tv4WzXhpXyM%>w8M}LF9riBnGx_i!DuN?pcT6Bq2SyUXP;&xnqnQni>GQl&#Xv zb_ODu#_dl!@^At@7QIFReRQ;xy>Z#)iSwP!MfB zps<9EzA$lus$*jeNO=iM?+%IvQs&4>u1W<36YJc8b%n}1mi*@t4YV;X);xRAEoF@_ zQ%Mva(rb4yy^;ao48%UQvyl@8J6 zM~3&;bs3jwf9~#(i@S2=o}toHFD_|z+i%B8K?s}`I8Z2lwAJ01odgwH7Y4&@gc%~U zc9fh6YP}o%KAiAsv6ZF?U*}Jw+keJO^2kOUnkr^Zf3UrwQ;OdNP%{?jDBP2cxatb> zvDKzJOK`zZK1W3{v{OLD}8|z_<;KzyMf^5 zYa3ysprk)z5P?10D95)W|3KN^JiNN%SzSYwh#ozMTI)LG>Fz${;oh7}xK{7(q-JJz z*WKeiZm;W;)YpLlmR~GX(_J=K-c~C8D`e+S-o`h_a?nUWCR&6{66@to22gz5AnfPnESE&a$RMtbK>!ax`ZWrL$?O!`4tg7tKSv&q#eL&qgkVO zw6}4C0A^F)IjvpkNr`RFF%;dZA7ikaj`p64JPzW>r(FUIDF^fLaV3NRkr0Qf8oFIC zddwynf1z#@xo2K3%GcL%b(YKX0GlVeTEE1s&5gF-!(|e)wMi7UgnT=PRB`q7R1Rc3o>D< z?4y3*bTq8r7krd^S2$SRkjZxM)p*m%2Fjo-K_uB$HGK8haOEgtb!RU1Y|lI%Nx^i} z2`Q@yQjIG6L%{FoXgR!T^zFx{zU}Ee#SOA7sB=nQz)}YWKeAhZ|H44wy9tII;Booz zALbW#h$i--+SJVTI3qE1Z_Mq4*B-h3Dwf9C=TI@Tf3+N#E5@-jx#gN59B3uZ)q}o3i2Zj&Ig|(Hn-Bo4r1KLXADo4XrtxgJY85|W) zYe|7&+G;tn5Dn{oydy~Aoy7ATIt7R8bwSOvnYo^N9+Y;w-m!N|*D|CVwQulQN}sQK zy4XB%8?qNZno9&Kt}q-FW#+gPo)Tk8e>9$rX$7sXW0p#o6eDq4{=4WuQ_fM6LaAF8u?p6VGtBYzI%SqRm&KwVP z=D~p{pWaknDo1=7iARa-P-^fJGU3`CS{K*#S_X81x$C6>tLTSCnoNhZ)DDcOm~`@( zOC6ql#@8`Bol8dIXxihbDxau1#!63}r!Fqo=Al&+!jqZ$uQ9#s2oz3yN|F*hyO|;s zmVFP6QWIM-MT}`pK3?WCR)wknnelVVghaEud@viRr};!XvLaCf&B3npb6u5K`fjp5 zd|Ldoas8W=B7#$WM(li+z9iHxX`d`=R1XAcVn<^+Zg^B#`!mba0b%?Oq$2g8{h1bR zoyK4J2I<;#n3oU#yRcU&JfVTB7qO zHpncg{D%c+|21mt{|zSo*Wl*A1*!kZt@c0A_W5@n`ST)@zv&13NB{Q!5~4Vu&HX)1 zuz&qF{`1(vzcs4=!T1qwp~6THixrBY65br#9FAwAuCV@PV_a(1Kj`fLZ}rZR%{fI+u==D zi`%4^`SJQEqxKzjdsfGAW!kr(SPV#$HI)U582jbJbbg@d-5-dQQ!*g5w?X=nHFs&G z%0{Y&Rb;{Q2-N>P`9E*ze`d)4nbjfpfgx6{l>&jUJXqStC9%O}gLeEyV22sT2d+Zc zcsi0Aj7$)F3sP43W$HLG*ETWh8p>094~MXbiD0q&Ppt5raJ5ceEeCZTK>aaz%1(C0 z2E;1FY6JqY6|vPdFKVkC0`X4kf3`&*sUwz{kCtt*wJlJ29D000c&FK%{@#;=^sO>9j5 z_{+@bZex9lFS71b1c zsT$Y)S_hkn5&NCHxJg&LlwHSL{AD6)*y^jgl?OvzH!VByV-<6d{@1T;99RU+AX-ls z@U7zu)^!^AKfVmWw|aTl6s&I`P@A$XX9*wryEZl4pt5XPFT&|V+*vY&DJaDvn7HoK zgz~9fIx@81*6)D|f#ImLiCf0Uksy*pE~btLWP5@(%iC{96Tof{#eRhAR~(aN4?<#r z$6%hmy_k1HDuY&=0lv9(ZY8$2h4{4UtO4bs$fn&4~ooYR>t4*YxOnXk+R&=dZaO z{CP8~FtPM7OAi}p*=~FH`ve=XH5|OKiSBl6H>bkw%rb;m^97QQQ@Kn}STbn&NNJQ_ zf7^TvcE4+sDe62#M1V-~E*#U1c$4Z$vp*S-Ag7XJ^Fc_5QUHu(1(B22O)-)+YgT)! zOvxaXKN>AcqDqn$)od1TZTrQw)Z!JP4Y`aFSh97x!Y}ld}@g%o%=Q3rLV}};T_uc zm+V(_x?pbim)AH5xGCk(#J=IcDbSapoNU?Ib%ds-s)NZb?@zdb24*S+M+;cHwm1B2Ja5ZCh z`m(!j%K|GD@@t)}Yo1N*a{rR#FnQ@*6Q->?y~cE~x<(P0UUO-F~Kk zAUqgrk5o3CBg2!c1FPg~ow+q&TU$nqU2LY(%!=_QWmTL_>2zn%(?z)z^%^0A zDALP|gv&8NlQq_c%07p7BASv1^>;vy(s+)*_y4cmm9x}q5=8++^p#7Kc z;f2AAuqtB@Af+>Gi#th++L!VwEn_TPyzjLzH=DH&iqmp8=$Eb%CLk|WnUTCN7i=?l zztJ^ryc$Td#C;jn86O1EA*2`Q0VP>Ff{k)6U;|@R9m;_-VMb^Io$;CECDvZ^#MA@3 zxBq7SjI|~7VrMmSz+{48CR8IS`C3s^UX>ntKBU&T@)X_V+Izo(R;#qnShZUxO{)rO z%fGz!B!I3F3W_>Zm2;Wg4h+(bsk_)y`+w~4zCx;eHE%?>XI6LEAC#qj|f?41u)MMkBBs8D4uUnO09Bv(p=*td!nBZ za%-4>?0R;7w^Yt~L)A#o=q@QE=WNc3+9uv!d}K}GPm)h*3VbEL5G^BWl-GRyq2 zGCdB%v}<`Fkf(-&-<1Oap!ZUEOKTZz5|Qh(^sC2 zJRv#^RD*Zql>=t`Zyg3Gvof+?HDS5p3%8~+C@V0Q_y;lBeQbca&3;TEoAiewWrTUf zP7&nA2^JU6M|VAmfx)i_dIE5dMwgop>NEtvQ$=mxQG2yvg_*IlTS8c!CNHD4aNixX zT}ja(`Y&SX+h+Se%M40{EWVLbC6@BjjsKJ>NP9%E-Lk}HGOi7iVN{kaF}3Qtz>QBZ zFlmZ8o8@QiCT8u)IK`x+%X}p62ETZx2$3ayRADDIPzrx&#(cnuKYS_kmbnTg1 zp_!SU7xx_R3l0p|clHo=z6!fXQf@F-YU1Szu^0P#VjnB#Iln~=T+IGzBIu|&C6mZ_ zQZIC|X}I>Tj~#J`D#Q5uc>ioX^SsFS8my5#&Rj+Cmr$(er0;9TJ0<57EZVt%@U>4o z7fPmjW6>V0b0%j|ykM4==dU7j*{MeBMK;cdxKFFovPL8u5uFAOUh@=&cOz1?)=Bov zSuF|oR#a;tV2D3sdg&1+_YsjWNJKLTt+!Sv8wo!hJx>}*eVDFnY!3i#jytIlc}JQS z+JCYZdxk)Tr%B_fn9=p|D`V{vhwW{aVLj1g9%5qYSDepNx@Pk?m6KB6*%#gSo7@LU>+2&DqEp&O zw~DIH<9C;DI$}7rU%_DtV;h%c`quHf7NiD~Qs{jJ&06kxw(ZP?e{@5|4D8~Po^9tC zE@)BAZ|UlHOz#qqQBm|ngZ03B^)4}WrJU3pxJ_Z&^=!J2+J`B4JJpcl}UAQRf#XMt>hPhPYQ)FIU2d$yV!h&*u z^ffj`Otgj24arm$vz#6d8XQP8|MobP^T+iNL9Xn3Pl3#vivTIlm z;xdP8*`u-3u8dq%=x&$Q#nkoAy!-^wm)WT2$oy@igQw8q*-v=$>xBN28VeE^<`N&) zIAo7eG4Ksr(?JhNtWS($^c=n|FY(|GpeXDvg5I&wPPH&6f!p!tYa@11Gwt!;&4zQ! zXtYljUs4V8rNe!jBU#EjjiVUhCbvJI3M^h=gEjYUp4<)b`lqzpL*V0&G0w$Euq7&1 zoR{HOQkD3in+)>_5D?(|F(6yESRqX9;$mP3HAol{RAVt)zj`~R2hOCTtu4C{2|%^w zg+;*&Da_|(kMu$D?oP$_E`-rq$wL*7=BE{&oXbNc14c;3fe{d31kvtD>D z>y8jrgF6D!9AN^upg?8p`Ew2Ul$Df=qmq5Ad-!dl`(jO}M*BtiVV`5GwsCb1Y34`y zI}u6hcT1V#s0?azd*S!8lwvNJYB8yH28Une795Cx*!DDtND z;HrHHPVnZM=_=5>v$MuI;%KmdZi=f|a{}W`A+~>aO^NG>rAFnDhq(lTj?v|4SPD8o z6{SzlxO34EL$iq`Gah~cvxx;a8-BqoaPZw~h^;QxkSBkio%v%Ervo-sv2N;UfP`l% z_NW1buu8i-D&0MKJn-8Z*n@MaHxUb`bO!F@+tEBo>Yfv1YOeXcMr_^!F)x0w=qLi! zjsrY{n$0(0#6}a}6MW$A!00Et0a|a4+3`MK3K@ZD2EO*%6LfW$X%0KF;);oIBx>J` zPvmB+4lvzO8aL((zaDApJ;oFO%XX#922pG(7z4aUBYNPEd4sl3e2gUtMsM^+y%;-` zAT5omXQ;$~C>bDgNNM;|kk;~`Sy-A5j&1~{HY*1jQQ;OHIo7o5o;P}-jt zzD&f9=a#3#Wu&-EIo^UcOpCS9hPA~DshQf zQ&=Fe)=VewB@a*W}-z3%Tk6Z#kzoL&MN%z^habQQ=Zs{uKcdL1uT0i2P zIYd46iXvB_`xR^ib2#fWQ9pngA+5SWxHb!bh z<@8n3zH%LN(!c6SzZJKGGd#u12^mH5*vZ3(m((~db1yV#!LOuKtzNH?$T*oBT73$r zoh8dTYJF!rHmZFi?wtEo5zbBe>Z)d(4CPo%Aq$y5Oq-N#dl3RXF#~N;aQ}=N_^bd9Z%EK_`8)U#YH$0M48OZ-czC6c-qvdI+ik9( zM(z>;0jwL6@KJzyQm$HS_Db17CLD`K|VnvDY;gPVqY~9$eE|)s#kIr zOz{TnHE|Rjk5K&^twAE}C@%-DjS%%1;7Yx?0ZkG~B658(H_DEn2&QLk@l5a?WfZHAOm7>7I9* zWsn5ygams!Fl|t2fId&m@h;e4(#JuxE;MHd3KW;{E8<5Te^AVR^G2{X2>Zs3Ce?I= zh&C|`4}WWE`z{G9^J5iNDJmLaCRE{c#gHDJ)<&Q}!VA@GvJ&(;!^X;3J1N5qcfDPI zJ4=F~2!YwbT8}PGeYf<9)t-FZr-LQ#@-6u^trwyOG-!;X9^8tEYNg%6916*P+1nBV zwW>j@jF6dS$_cK_MTz7kO4dDEoasqfZe>ZZZ$}aFn7#YE1>2yt zu-G^fVx`9t4VhLqPFv_g+vzqIC3@+DQX=hczd!~k5E?49+)!F9uzORX3N-YarM;ev zSO{XC__n@`!-?xx0BHef>SeCseqTNKmKigxD|1SN!ky}RWb#`A57e2`07VnseMU*m z-t*~Xqo`&;R>Y3rZpQtZZtVw1J}mVZWm**wr0kUa_=|GQ+`6e@A!bIgh+RFP)(k6m=6hN|cr&YCG`p|m&vRyMea@wz znn}#xVpz;{E1COv&uJ`mJds9h5al4Ch&xsI6&^36My8XnC5btQi29~QsZqQ}^O$s* z<>vKt{MF5{ykeP$Z(WuPk*z~?t^1|^;Is}^P*BR{9ZYrU9?|pwXIbID_s%mHEG~V3 zSvLX-03ZXPL5%H;e&*RLLwoxl19{?Ha1iQj0Pu|eze9$yoWda!ax>XEQSMTa3i!6D zHkoSh%6dR7?pkvtXLyK_cCGN$Y843^xI^dXOf4@yUJjj>+gkU$)F`(@$A-dzz>JH9 zdRJY6nL5c`lQl2Mfj)*BDIr)0&p^=t&Ww3>lxNz^2g00OzR#39kddvESt>Ndq!VTk z-7z#jz?+w=(AwWkK)YF~pv(N)KlKz8(M;xm{X=sC#yjrdm!66=6=b9K9nxA9(c5i% zk#aS2i%yt6NE=e*Rd8!>qOoIg?PZOU+jv6JW4q9It?!@6&71_%mu$djZyakIQx*6Q z+mf9~hM#XeSHYh)HNsu%6DJ)R_P>8zjV9^*eC{={-JiR0oi_JzGbQag`UzO({`-K^ zS&-Ya19*fQSSSgBMfO*X*LO6rcKTWGe^zzt<-L){A!|T^-oLN}AEmS^GKips{(9s_;!`wgTFAH{*oTSdHu#Ks*Q%Ak`B$5OZ z+&!JfM30Pa$)w2*pkg^{+Ro))w=SSR-$EoCp9w1t#$)*0Xi7d28YbbVB~Y^oDIW zIgnei_IR;DJ)`9ME9v15={clyjVpA~m(lqrS!~eg;y@|14-Z>qiE?6U%EofcX&x$! z`vv6?8^jR1afUfF{93(UhHpK!Nksyr1;rznKrqktHiL3dS(4G=@((|9-{NyDs2 z48?b4>1&YW@b+T6Q+eZvTcYYcro7V}f!toIoH(>noBn{2ncInBV%P6_1t60A%CJfx zoySU5 z@kN2V=8fWg)3`fzV4ha23<+@tIjx-w8Z#SpHjeh4hK!$Ebw~LwR@>#Z071T7wK5E$ z`^32Fagn)zcOQ^)B4qUF%fWU!jb}%vujtukujtF3>j2dad`th)CAf*xkO0WU#A@6)tI)(8|0J+ce^h8F$lgL6252-lR08vLV3D8mO=YA z27jq3f)OQ79G6gVXnB9OFG7vHP|88$T4BiSc$wVv4Zd`FLDGfT&80@po1*Tx(YD|f zssqXQigbB+DeF3;dq*d+Jq6`su&9aq-DneKCe8_>?>oWz&6gP;J`1A++Lgt5R zJ|?fNqCN@0HdEaB4CaFxS7=+nJKMn!ekdE)4%D!@9|yN1?`O|i`^q~xMl~a*wNeD5 zS7&3Dc>Qos$Vo$asmo)zC^yXcQSxS3uPE)|{QGK2V!dn-A+HGg_1hjTbdjFU92vvb zOOxGE?kLh6(r17t9lauCPaUxg{3RR>lBzaLO7gM*ZY{kFE?axk!MbL;e(^i6R+Pkd zD`u#>)k=EDpW+9u0MR2F{V}I6&T7&o_KF9{mPr?!@LpTSM5f(o0qC=hH2FM{imbUO z5GFyx8EgE#v`KFubVqz>oe=D^CSfNbr=49t8-Yc?=}sh&gh;utgCfHXm4H_=3 z;4N^$_;+-#LR5=V(uMd3@DjFMsnZ}pxQ`OmtO8`!ilF-AA2V=S)Z_`sWy(O}%V->3 zCVd})?byFO?4n7gFr$D+7JwhL|JJ?zf9ly*N>##+ykd}+XHbWhAC{71l#+vCEEofI_>Ov*1qt+D^WME+Bo~96NVB=&j6I<OodAkIUz#8!){tQrsV z>Up06Y|8&7ktcOo4Bo&FXe!W6{8w9UYG>=LYWUXL|mmtDmjF5?ZNasuba6*&fXZP?gb}gMr4q{ ze9`lFw@Y4(F23h+y(59N!})t8WdU)b;?z{KvR-@3(|h^R_?f88Bo*k@Vacj_ksi<Y%)8#&-t)pD91U#FPP~0KZMxJ&tL?D-MRMnvedeZ z1W!!`-g~@5Pn;S`AZZz zRF`=GfFQQL?k)I>RMZZ0mpjr58^4r>w8I(V6NR#8jDJ=AA9 z3|*Tz;EzZMsHyPac=@Ki{`kp&wKYshyvbsG`B? zDM=3vwcCyK@L6iE_Y$3G2Q6S(BbO|JCMf*Flw&c;W#cS8Bw|xSUAJ6b=NT-|DMcwS z#AeQ79n4AIQO(xm3g|Jj)A!pY)ETyVlrc)z$!J5@%Fg&%m6(@@H(DPfKbP)bJ!>7)td)~8Gj+{IJbE<4=MB~X@2MUS>!wjb!B`mbRHF}%nvLNL zzqRfs;F|kB0N3ZV*VBrBP~tj75V-O}gljS14;!sosq0-#i2RsfYFqCdL~UHPf+yo8 z==X5@&38e5@`%Bp2n@8txiPv$%Pz^}{OXGBTHX5i6VXg-ikQV!qR(0GwZ+xdme-Lp z9>w6Kq2E~VOSjZk1sg=Q6{ok$;C)Jb&|RUe3Hb@$2&2kam6^u2VO9Bs9Mn^A!tG!t+Jrcg*4{RI`uM?|b1x&TZ(M0ZFh!STWd$w@9wY7v{# zAO+@H1{K(IRy%S_a3yM`*2;i_XFF7||B@mn6AeC9|F+f9XvS$~bj0?MSe5@-+u>G~?&wPSbZZ{A_OVTxaZ1a)hO!wge^yTFrvxjW}YYfE0Jzk$ed+ zKjc|Xxz=uXtB)oq?N4mh5<|4z&aM6E_UzbycM+$LUHU}vcp4G1s$5I|{>3-4i;lu` zoN}lQX%`J%E0$5v?^bh&8{teOC2SLp2yg`Zo^Cx`1n=9J1b$)mM*GY5k5#!P5;2_a z19!8Zy#mG#I$s^1MCwnQ@UOCP4B8sNDXq14f zW$={Jm)2VvmVS=8%@cav?x$yhXuW$meW075BhiD zET?Smz~{H?Jc8ujTGz(Z%g#6Y-*zOS^B@lM+^u|h_;P%P^7KqWGe6D62d6S0a52HWe2cO zE(^{TkJ_Q6GeY)FSeDK6WJ=;9wV{eFh`zLjSKjbnDRz3OCO#tDrsNOhH_S^1`$>9}vm+jeLOw$B=- zyxJD^M*qWn@o30Hqm&RcqN2|-c{aA>=gQGmNHtxD=&oIr=n8`9Dz7FQ&xnQTI2dl<+50O8Y^@!eKbsfbi$R z?Fan%k5>5*#c9eUe-r#{*q>BM?`=FhDqO;17d4Ril>epoXQVN~jrSM)VfhpOB>e$@ zqPLpp#32e%saoRWSXG?*ao zb_|(((eut=Wfu(V?PCI8)Tj*w?Gq8Qg8^J3Dq}Q`frgTn_xMf_G#u841mDdT3HCGO zm26uc!n<`DU%s#gy@qgmyYc2YeKKAySnX_Kx{zCG3gd5nyga;3$r{25n4IS!6?brJ zdGDWkgNQ1B5Gw>5>{f%ZPS_Db{VNF9>V6^an=@SM^(XK<`G^oqE=GO}Yfq<_rOB%v z1!STDJi;eitus4GwO(K$btuyZ?36L(S{0xq# z)0k?_bMX)^$;8nzxzrCrc*(s&7mniIxmKFJ?)$jRfYNyJ9Tk=*D@5`TCPa=z&|4(h z?iHj4XJatxWZ_{Hc`YEX3i%JOs#L-%tSAubm%c3ot1(NN<$?Pe zCYR{YSe~f`n_j{fLvMYmUyKuE9WhJ*>9J2x-wmem$z%6I&{)?H^LST7T_s=D^&nZc?7 zpYVgOG5t<-o!~#Bta4ahz<*>ETrTDX7w`xsyPio;w9q&cSGX%=$TG>5rPD?ldHoV- zX0~MU6o;FLGe;fj8xp3FPLJByM|zT7@uiK|+*$9LfNd@;MwxM5mtx1bxclq{p96ma zc0<+mg?V;}ceHYvZLOxfF-bWc_6}6qq0s`k@G{I93Ov5?RqSZ*BPO4rS<7XPcj#{W z=jAn^HwBZCUPt6qEBl zT>gGK+vJxndn0~w+@`7ZB~eWHHJ@TLy7E`$i^kLkqYW)%>GEdP*my8amj2Q*)KVio z+|+dCAYqspCvp>`Qk6=HDdvLYvK#{rd)V!W!3lJDU2}C+)>cEh>>#G*0tjL>c$}{R ztta7I@6eki55D%}`LCfnQVZo2C?St0V78;*%!Yn){6tSqSiQKf0P890hw{?t zsD?OLVdEgCh$reRD7Q#^{8ji(rl-BM%sz%y_vI7t4yTjuud}+_Hg|W`squpDnO_{* zmlwbyH)&tUS9-?_Gt0?b{bvRTi86eEMe`5p0s_ha9OM4yMVg|uWZXJn(H(^R;fne_ zXo~{0$#k;>XqhRTBbrZRI?07|H=0hW?ni{3~n$ zr!xQ4^miS97y>;1XCMLWCr-QDZvX&4K3KnGfw3c?FW@hB>TC|=5VnRE){K_+CT72< z=Jywpe(8z3{nLiuUr+j7#qaa4f2r7h{?FL@Z~lni#ebiY`AZxH4CIeo_+x1PZ+G#Z z!2OpfFjo*j{zv@&y9xi~&VScZh6wU2C;z0-zf1oU0sdY3Ey~|*_%|T@KmE18EBM{}`AY>G&YuSS!x#Fy{O=yAU-D~s zf6D*npZZpKpAWZRS^xkdAgukXdi>{6rzisfY)XDqL==D_ N5arF$0_!;7zW{996x9F# literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.htm b/modules/core/aloha/static/test/unit/contenthandler/example.htm new file mode 100644 index 000000000..5bc84ed1b --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/example.htm @@ -0,0 +1,382 @@ + + + + + + + + + + + + + +

                                              + +

                                              Here you'll find some example content to show Aloha's + possibilities regarding any kind of formatting.

                                              + +

                                              Headline 1

                                              + +

                                              Headline 2

                                              + +

                                              Headline 3

                                              + +

                                              Headline 4

                                              + +
                                              Headline 5
                                              + +
                                              Headline 6
                                              + +

                                               

                                              + +

                                              Here we test, a link + and other formattings such as bold, italic or deleted text. + You may also use formattings for maths 22 = 4 or chemical formulas + like CO2. Or you may edit tables as you do in office products.

                                              + +

                                               

                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                              +

                                              This

                                              +
                                              +

                                              is

                                              +
                                              +

                                              a

                                              +
                                              +

                                              demo

                                              +
                                              +

                                              table

                                              +
                                              +

                                              with

                                              +
                                              +

                                              an

                                              +
                                              +

                                              awesome

                                              +
                                              +

                                              column

                                              +
                                              +

                                              and

                                              +
                                              +

                                              row

                                              +
                                              +

                                              span

                                              +
                                              +

                                              !

                                              +
                                              + +

                                               

                                              + +

                                                    +List entry

                                              + +

                                              o   +List entry

                                              + +

                                              o   +List entry

                                              + +

                                                +List entry

                                              + +

                                                +List entry

                                              + +

                                                    +List entry

                                              + +

                                                    +List entry

                                              + +

                                                    +List entry

                                              + +

                                              a.     List + entry

                                              + +

                                              a.     List + entry

                                              + +

                                              b.     List + entry

                                              + +

                                                                                             +i.     List + entry

                                              + +

                                                                                            +ii.     List + entry

                                              + +

                                              b.     List + entry

                                              + +

                                              c.      List + entry

                                              + +

                                              d.     List + entry

                                              + +

                                               

                                              + +

                                              For better sematical understanding and WAI compatibility you + can describe abbreviations like HTML and CSS.

                                              + +
                                              + + + + diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.odt b/modules/core/aloha/static/test/unit/contenthandler/example.odt new file mode 100644 index 0000000000000000000000000000000000000000..da6d8a2bb90cd05b25858b51bd9aedf37b4af070 GIT binary patch literal 9669 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 Hf&PC09+OT+ literal 0 HcmV?d00001 diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.rtf b/modules/core/aloha/static/test/unit/contenthandler/example.rtf new file mode 100644 index 000000000..9cf76e486 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/example.rtf @@ -0,0 +1 @@ +{\rtf1\adeflang1025\ansi\ansicpg10000\uc1\adeff0\deff0\stshfdbch15\stshfloch36\stshfhich36\stshfbi0\deflang1033\deflangfe1033\themelang1031\themelangfe1041\themelangcs0{\fonttbl{\f0\fbidi \fnil\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fnil\fcharset0\fprq2{\*\panose 02070309020205020404}Courier New;} {\f3\fbidi \fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Symbol;}{\f14\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fbidi \fnil\fcharset78\fprq2{\*\panose 00000000000000000000}\'82\'6c\'82\'72 \'96\'be\'92\'a9;} {\f19\fbidi \fnil\fcharset78\fprq2{\*\panose 00000000000000000000}\'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e;}{\f19\fbidi \fnil\fcharset78\fprq2{\*\panose 00000000000000000000}\'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e;} {\f35\fbidi \fnil\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f36\fbidi \fnil\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\flomajor\f31500\fbidi \fnil\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\fdbmajor\f31501\fbidi \fnil\fcharset78\fprq2{\*\panose 00000000000000000000}\'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e;}{\fhimajor\f31502\fbidi \fnil\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} {\fbimajor\f31503\fbidi \fnil\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \fnil\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \fnil\fcharset78\fprq2{\*\panose 00000000000000000000}\'82\'6c\'82\'72 \'96\'be\'92\'a9;}{\fhiminor\f31506\fbidi \fnil\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} {\fbiminor\f31507\fbidi \fnil\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f495\fbidi \fnil\fcharset238\fprq2 Times New Roman CE;}{\f496\fbidi \fnil\fcharset204\fprq2 Times New Roman Cyr;} {\f498\fbidi \fnil\fcharset161\fprq2 Times New Roman Greek;}{\f499\fbidi \fnil\fcharset162\fprq2 Times New Roman Tur;}{\f500\fbidi \fnil\fcharset177\fprq2 Times New Roman (Hebrew);}{\f501\fbidi \fnil\fcharset178\fprq2 Times New Roman (Arabid);} {\f502\fbidi \fnil\fcharset186\fprq2 Times New Roman Baltic;}{\f503\fbidi \fnil\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f515\fbidi \fnil\fcharset238\fprq2 Courier New CE;}{\f516\fbidi \fnil\fcharset204\fprq2 Courier New Cyr;} {\f518\fbidi \fnil\fcharset161\fprq2 Courier New Greek;}{\f519\fbidi \fnil\fcharset162\fprq2 Courier New Tur;}{\f520\fbidi \fnil\fcharset177\fprq2 Courier New (Hebrew);}{\f521\fbidi \fnil\fcharset178\fprq2 Courier New (Arabid);} {\f522\fbidi \fnil\fcharset186\fprq2 Courier New Baltic;}{\f523\fbidi \fnil\fcharset163\fprq2 Courier New (Vietnamese);}{\f845\fbidi \fnil\fcharset238\fprq2 Calibri CE;}{\f846\fbidi \fnil\fcharset204\fprq2 Calibri Cyr;} {\f848\fbidi \fnil\fcharset161\fprq2 Calibri Greek;}{\f849\fbidi \fnil\fcharset162\fprq2 Calibri Tur;}{\f852\fbidi \fnil\fcharset186\fprq2 Calibri Baltic;}{\f853\fbidi \fnil\fcharset163\fprq2 Calibri (Vietnamese);} {\f855\fbidi \fnil\fcharset238\fprq2 Cambria CE;}{\f856\fbidi \fnil\fcharset204\fprq2 Cambria Cyr;}{\f858\fbidi \fnil\fcharset161\fprq2 Cambria Greek;}{\f859\fbidi \fnil\fcharset162\fprq2 Cambria Tur;}{\f862\fbidi \fnil\fcharset186\fprq2 Cambria Baltic;} {\f863\fbidi \fnil\fcharset163\fprq2 Cambria (Vietnamese);}{\flomajor\f31508\fbidi \fnil\fcharset238\fprq2 Arial CE;}{\flomajor\f31509\fbidi \fnil\fcharset204\fprq2 Arial Cyr;}{\flomajor\f31511\fbidi \fnil\fcharset161\fprq2 Arial Greek;} {\flomajor\f31512\fbidi \fnil\fcharset162\fprq2 Arial Tur;}{\flomajor\f31513\fbidi \fnil\fcharset177\fprq2 Arial (Hebrew);}{\flomajor\f31514\fbidi \fnil\fcharset178\fprq2 Arial (Arabid);}{\flomajor\f31515\fbidi \fnil\fcharset186\fprq2 Arial Baltic;} {\flomajor\f31516\fbidi \fnil\fcharset163\fprq2 Arial (Vietnamese);}{\fhimajor\f31528\fbidi \fnil\fcharset238\fprq2 Calibri CE;}{\fhimajor\f31529\fbidi \fnil\fcharset204\fprq2 Calibri Cyr;}{\fhimajor\f31531\fbidi \fnil\fcharset161\fprq2 Calibri Greek;} {\fhimajor\f31532\fbidi \fnil\fcharset162\fprq2 Calibri Tur;}{\fhimajor\f31535\fbidi \fnil\fcharset186\fprq2 Calibri Baltic;}{\fhimajor\f31536\fbidi \fnil\fcharset163\fprq2 Calibri (Vietnamese);} {\fbimajor\f31538\fbidi \fnil\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \fnil\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \fnil\fcharset161\fprq2 Times New Roman Greek;} {\fbimajor\f31542\fbidi \fnil\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \fnil\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \fnil\fcharset178\fprq2 Times New Roman (Arabid);} {\fbimajor\f31545\fbidi \fnil\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \fnil\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \fnil\fcharset238\fprq2 Times New Roman CE;} {\flominor\f31549\fbidi \fnil\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \fnil\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \fnil\fcharset162\fprq2 Times New Roman Tur;} {\flominor\f31553\fbidi \fnil\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \fnil\fcharset178\fprq2 Times New Roman (Arabid);}{\flominor\f31555\fbidi \fnil\fcharset186\fprq2 Times New Roman Baltic;} {\flominor\f31556\fbidi \fnil\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fnil\fcharset238\fprq2 Cambria CE;}{\fhiminor\f31569\fbidi \fnil\fcharset204\fprq2 Cambria Cyr;} {\fhiminor\f31571\fbidi \fnil\fcharset161\fprq2 Cambria Greek;}{\fhiminor\f31572\fbidi \fnil\fcharset162\fprq2 Cambria Tur;}{\fhiminor\f31575\fbidi \fnil\fcharset186\fprq2 Cambria Baltic;} {\fhiminor\f31576\fbidi \fnil\fcharset163\fprq2 Cambria (Vietnamese);}{\fbiminor\f31578\fbidi \fnil\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \fnil\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \fnil\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \fnil\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \fnil\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \fnil\fcharset178\fprq2 Times New Roman (Arabid);}{\fbiminor\f31585\fbidi \fnil\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \fnil\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0; \red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red52\green90\blue138;\red79\green129\blue189;\red36\green63\blue96;\cfollowedhyperlink\ctint255\cshade255\red128\green0\blue128;\red238\green236\blue225;} {\*\defchp \loch\af36\hich\af36\dbch\af15 }{\*\defpap \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\f36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{ \s1\ql \li0\ri0\sb480\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs32\alang1031 \ltrch\fcs0 \b\fs32\cf17\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid15947209 heading 1;}{ \s2\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs26\alang1031 \ltrch\fcs0 \b\fs26\cf18\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink16 \sunhideused \sqformat \spriority9 \styrsid15947209 heading 2;}{ \s3\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs24\alang1031 \ltrch\fcs0 \b\fs24\cf18\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink17 \sunhideused \sqformat \spriority9 \styrsid15947209 heading 3;}{ \s4\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\ai\af0\afs24\alang1031 \ltrch\fcs0 \b\i\fs24\cf18\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink18 \sunhideused \sqformat \spriority9 \styrsid15947209 heading 4;}{ \s5\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\cf19\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink19 \sunhideused \sqformat \spriority9 \styrsid15947209 heading 5;}{\s6\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af0\afs24\alang1031 \ltrch\fcs0 \i\fs24\cf19\lang1031\langfe1033\loch\f35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext0 \slink20 \sunhideused \sqformat \spriority9 \styrsid15947209 heading 6;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1031 \ltrch\fcs0 \fs20\lang1031\langfe1033\loch\f36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 \additive \b\fs32\cf17\loch\f35\hich\af35\dbch\af19 \slink1 \slocked \spriority9 \styrsid15947209 Heading 1 Char;}{\*\cs16 \additive \b\fs26\cf18\loch\f35\hich\af35\dbch\af19 \slink2 \slocked \spriority9 \styrsid15947209 Heading 2 Char;}{\*\cs17 \additive \b\cf18\loch\f35\hich\af35\dbch\af19 \slink3 \slocked \spriority9 \styrsid15947209 Heading 3 Char;}{\*\cs18 \additive \b\i\cf18\loch\f35\hich\af35\dbch\af19 \slink4 \slocked \spriority9 \styrsid15947209 Heading 4 Char;} {\*\cs19 \additive \cf19\loch\f35\hich\af35\dbch\af19 \slink5 \slocked \spriority9 \styrsid15947209 Heading 5 Char;}{\*\cs20 \additive \i\cf19\loch\f35\hich\af35\dbch\af19 \slink6 \slocked \spriority9 \styrsid15947209 Heading 6 Char;}{\*\cs21 \additive \ul\cf2 \sunhideused \styrsid15947209 Hyperlink;}{\*\ts22\tsrowd\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1031 \ltrch\fcs0 \fs20\lang1031\langfe1033\loch\f36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 \sbasedon11 \snext22 \spriority59 \styrsid15947209 Table Grid;}{\s23\ql \li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\f36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 \sbasedon0 \snext23 \sqformat \spriority34 \styrsid15947209 List Paragraph;}{\*\cs24 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf20 \sbasedon10 \ssemihidden \sunhideused \styrsid11034772 FollowedHyperlink;}}{\*\listtable{\list\listtemplateid126677836\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext \leveltemplateid67698713\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698713 \'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;} \rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid418448990}{\list\listtemplateid1836728130\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698703 \'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713 \'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715 \'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703 \'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713 \'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715 \'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698703 \'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698713 \'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698715 \'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-180\li6480\lin6480 }{\listname ;}\listid1368917596}{\list\listtemplateid411457118\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360 \levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 _;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691 \'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 _;}{\levelnumbers;}\f14\fbias0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 _;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\lin2880 } {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 _;}{\levelnumbers;}\f14\fbias0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 \levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 _;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative \levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext \leveltemplateid67698693\'01\u-3929 _;}{\levelnumbers;}\f14\fbias0 \fi-360\li6480\lin6480 }{\listname ;}\listid1799493993}}{\*\listoverridetable{\listoverride\listid1799493993\listoverridecount0\ls1}{\listoverride\listid1368917596\listoverridecount0\ls2} {\listoverride\listid418448990\listoverridecount0\ls3}}{\*\rsidtbl \rsid2046117\rsid3557375\rsid9137773\rsid11034772\rsid11881661\rsid12139933\rsid12336141\rsid13502240\rsid15947209\rsid16415300}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0 \mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author a}{\operator a}{\creatim\yr2011\mo10\dy27\hr10\min52}{\revtim\yr2011\mo10\dy27\hr10\min52}{\version2}{\edmins0}{\nofpages1}{\nofwords115}{\nofchars656} {\nofcharsws770}{\vern49281}{\*\saveprevpict}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw11900\paperh16840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen \expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1 \jexpand\viewkind5\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct \asianbrkrule\rsidroot2046117\newtblstyruls\nogrowautofit\utinl\outdisponlyhtml \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid9137773\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 Here you'll find some }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 example content}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 to show Aloha's }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 possibilities}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 regarding any kind of formatting. \par }\pard\plain \ltrpar\s1\ql \li0\ri0\sb480\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid16415300 \rtlch\fcs1 \ab\af0\afs32\alang1031 \ltrch\fcs0 \b\fs32\cf17\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline \hich\af35\dbch\af19\loch\f35 1 \par }\pard\plain \ltrpar\s2\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid16415300 \rtlch\fcs1 \ab\af0\afs26\alang1031 \ltrch\fcs0 \b\fs26\cf18\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline 2 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0\pararsid16415300 \rtlch\fcs1 \ab\af0\afs24\alang1031 \ltrch\fcs0 \b\fs24\cf18\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline 3 \par }\pard\plain \ltrpar\s4\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0\pararsid16415300 \rtlch\fcs1 \ab\ai\af0\afs24\alang1031 \ltrch\fcs0 \b\i\fs24\cf18\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline 4 \par }\pard\plain \ltrpar\s5\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0\pararsid16415300 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\cf19\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline 5 \par }\pard\plain \ltrpar\s6\ql \li0\ri0\sb200\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0\pararsid15947209 \rtlch\fcs1 \ai\af0\afs24\alang1031 \ltrch\fcs0 \i\fs24\cf19\lang1031\langfe1033\loch\af35\hich\af35\dbch\af19\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af35\dbch\af19\loch\f35 Headline 6 \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \par \hich\af36\dbch\af15\loch\f36 Here we test, a }{\field{\*\fldinst {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209 \hich\af36\dbch\af15\loch\f36 HYPERLINK "http://aloha-editor.org" }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b3000000068007400740070003a002f002f0061006c006f00680061002d0065006400690074006f0072002e006f00720067000000}}}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \cs21\ul\cf2\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 link}}}\sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid9137773\sftnbj {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 and other formattin\hich\af36\dbch\af15\loch\f36 gs such as }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 bold}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 , }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 italic}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 or }{\rtlch\fcs1 \af0 \ltrch\fcs0 \strike\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 deleted text}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 . You may a}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209 \hich\af36\dbch\af15\loch\f36 lso use formattings for maths 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \super\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 = 4 or chemical formulas like CO}{ \rtlch\fcs1 \af0 \ltrch\fcs0 \sub\insrsid2046117\charrsid15947209 \hich\af36\dbch\af15\loch\f36 2}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 . Or you may edit tables as you do in office products. \par \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx2021\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx4150\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx8408\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209\charrsid12139933 \hich\af36\dbch\af15\loch\f36 This\cell \hich\af36\dbch\af15\loch\f36 is\cell \hich\af36\dbch\af15\loch\f36 a\cell \hich\af36\dbch\af15\loch\f36 demo\cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12139933\charrsid12139933 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx2021\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx4150\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx8408\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx2021\clvmgf\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth4258\clcbpatraw21 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx8408 \pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209\charrsid12139933 \hich\af36\dbch\af15\loch\f36 table\cell \hich\af36\dbch\af15\loch\f36 with\cell \hich\af36\dbch\af15\loch\f36 an\cell }\pard\plain \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12139933\charrsid12139933 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx2021\clvmgf\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth4258\clcbpatraw21 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx8408\row \ltrrow }\trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx2021\clvmrg\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4258 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx8408\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209\charrsid12139933 \hich\af36\dbch\af15\loch\f36 awesome\cell \cell \hich\af36\dbch\af15\loch\f36 column\cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209\charrsid12139933 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx2021\clvmrg\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4258 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2129 \cellx8408\row \ltrrow}\trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb \brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx2021\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx4150\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx8408\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid15947209\charrsid12139933 \hich\af36\dbch\af15\loch\f36 and\cell \hich\af36\dbch\af15\loch\f36 row \cell \hich\af36\dbch\af15\loch\f36 span\cell \hich\af36\dbch\af15\loch\f36 !\cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12139933\charrsid12139933 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl \brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12139933\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx2021\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx4150\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx6279\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clcbpat21\cltxlrtb\clftsWidth3\clwWidth2129\clcbpatraw21 \cellx8408\row }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2046117 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f3\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af3\dbch\af15\hich\f3 \'b7\tab}}\pard\plain \ltrpar \s23\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid15947209\contextualspace \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f2\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af2\dbch\af15\loch\f2 o\tab}}\pard \ltrpar \s23\ql \fi-360\li1440\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\adjustright\rin0\lin1440\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List ent \hich\af36\dbch\af15\loch\f36 ry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f2\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af2\dbch\af15\loch\f2 o\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f14\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af14\dbch\af15\hich\f14 \'a7\tab}}\pard \ltrpar \s23\ql \fi-360\li2160\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl2\adjustright\rin0\lin2160\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f14\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af14\dbch\af15\hich\f14 \'a7\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f3\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af3\dbch\af15\hich\f3 \'b7\tab}}\pard \ltrpar \s23\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f3\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af3\dbch\af15\hich\f3 \'b7\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f3\lang1031\langfe1033\langnp1031\insrsid2046117 \loch\af3\dbch\af15\hich\f3 \'b7\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 a.\tab}}\pard \ltrpar \s23\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 a.\tab}}\pard \ltrpar \s23\ql \fi-360\li1440\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl1\adjustright\rin0\lin1440\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 b.\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 i.\tab}}\pard \ltrpar \s23\ql \fi-180\li2160\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl2\adjustright\rin0\lin2160\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 ii.\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 b.\tab}}\pard \ltrpar \s23\ql \fi-360\li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid15947209\contextualspace {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 c.\tab}\hich\af36\dbch\af15\loch\f36 List entry \par {\listtext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af0\alang1031 \ltrch\fcs0 \f36\lang1031\langfe1033\langnp1031\insrsid2046117 \hich\af36\dbch\af15\loch\f36 d.\tab}\hich\af36\dbch\af15\loch\f36 List entry \par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2046117 \rtlch\fcs1 \af0\afs24\alang1031 \ltrch\fcs0 \fs24\lang1031\langfe1033\loch\af36\hich\af36\dbch\af15\cgrid\langnp1031\langfenp1033 { \rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \par \hich\af36\dbch\af15\loch\f36 For better sematical understanding and }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117\charrsid12336141 \hich\af36\dbch\af15\loch\f36 WAI\hich\af36\dbch\af15\loch\f36 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid2046117 \hich\af36\dbch\af15\loch\f36 compatibility you can describe abbreviations like HTML \hich\af36\dbch\af15\loch\f36 and CSS.}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9137773\charrsid2046117 \par }{\*\themedata 504b0304140006000800000021009be8704ffc0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8 72ba28a5d8cea28f5d1f8bf40306796c8bd823214d42f2f71d3b2e941202856e04d2ccbdf7cca85c1fc641ed3126e7a9d2abbcd00ac9fac65157e9cfcd4b76af 5562a006064f58e92326bdaeafafcacd316052a2a654e99e393c18936c8f23a4dc0724a9b43e8ec0728d9d0960b7d0a1b92d8a3b633d3112673c79e8ba7cc216 7603abe7833c9f4844aed5e3a96f8aaa348430380b2ca066aa9ab3ba8843ba20dc53f38b2e5bc87251cee6a97721dd2c09efb29ae81a541f10f90d46e1302c43 e2cff31548468bf965e633d1be6d9dc5c6dbdd28ebc867e3c5ec4f00abff89fece34f3dfd65f000000ffff0300504b030414000600080000002100a5d6a7e7c0 000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060a bb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d9 4fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82f e353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f 7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d59 2c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8 d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100215aa28421070000db1d0000160000007468656d652f7468656d652f746865 6d65312e786d6cec594f6f1b4514bf23f11d467b2fb113274da23a55ecd80db469a3d82dea71bc3bf64e33bbb39a1927f10db547242444411ca8c48d03022ab5 1297f269024550a47e05deccecae77e271939400153487d63bfb7b6fdefbbd3ff367af5c3d4a183a2042529e3683fa7bb5009134e4114d47cde076bf7b693540 52e134c28ca7a4194c880cae6ebcfbce15bcae62921004f2a95cc7cd20562a5b5f5890210c63f91ecf480aef865c2458c1a3182d44021f82de842d2cd66a2b0b 09a66980529c80da5bc3210d09ea6b95c146a1bcc3e03155520f844cf4b46ae248186cb45fd70839916d26d00166cd00e689f8619f1ca900312c15bc680635f3 172c6c5c59c0ebb9105373642b725df397cbe502d1fea299538c06e5a4f56e63edf256a9df00989ac5753a9d76a75eea33001c86e0a9b5a5aab3d15dadb70a9d 1590fd39abbb5d5bae355c7c45ffd28ccd6bad566b792db7c52a3520fbb331835fadad3436171dbc0159fcf20cbed1da6cb7571cbc0159fcca0cbe7b796da5e1 e20d286634dd9f41eb8076bbb9f61232e46cdb0b5f05f86a2d874f51900d6576e929863c55f3722dc1f7b8e8024003195634456a9291210e218bdb98d181a07a 02bc4e70e58d1d0ae5cc909e0bc950d04c35830f320c1531d5f7f2d9772f9f3d41c7f79f1edffff1f8c183e3fb3f58458ed4364e4755a917df7cfac7a38fd0ef 4fbe7ef1f0733f5e56f1bf7cfff1cf3f7de60742f94ccd79fec5e35f9f3e7efee527bf7dfbd003df14785085f7694224ba490ed11e4fc031c38a6b391988f349 f4634cab129be948e214eb593cfa3b2a76d0372798610fae455c06ef08681f3ee0b5f13dc7e05e2cc62a8fb7e3d9f53871803b9cb316175e16aeebb92a34f7c7 e9c83fb91857717b181ff8e66ee3d4896f679c41dfa43e95ed983866ee329c2a3c22295148bfe3fb8478f8ba4ba9c3eb0e0d05977ca8d05d8a5a987a29e9d381 934d53a16d9a405c263e0321de0e373b77508b339fd75be4c045425560e631be4f9843e3353c5638f1a9ece3845509bf8155ec33b237116115d7910a223d228c a34e44a4f4c9dc12e06f25e8d7a175f8c3bec326898b148aeefb74dec09c57915b7cbf1de324f3617b348dabd8f7e53ea42846bb5cf9e03bdcad10fd0c71c0e9 dc70dfa1c409f7e9dde0361d39264d1344bf190b4f2caf11eee46f6fc286989856034ddde9d5094d5fd5b813e8dbb9e317d7b8a1553effea91c7ee37b5656f02 09be9ad93ed1a8e7e14eb6e73617117df3bbf3161ea7bb040a6276897adb9cdf36e7e03fdf9ce7d5f3c5b7e469178606adb74c76a36db6ddc9dc5df79032d653 13466e48b3f196b0f6445d18d472e6c449ca535816c34f5dc93081831b096c6490e0ea43aae25e8c33d8b4d703ad642473d52389322ee1b06886bdba351e36fe ca1e3597f521c4760e89d50e8fecf0921e2ece1aa51a63d5c81c688b8996b482b34eb67439570abebdce64756dd49967ab1bd34c5374662b5dd6149b4339505e ba0683259bb0a941b015029657e0ccafa786c30e6624d2bcdb1815613151f87b42947b6d1d8971446c889ce10a9b7513bb228566fcd3eed91c391f9b256b40da e94698b4989f3f6724b950302519044f56134babb5c55274d80cd69617970314e2ac190ce1980b3f930c8226f53610b311dc15854ad8ac3db5164d914e3d5ef3 67551d6e2ee6148c53c699906a0bcbd8c6d0bcca43c5523d93b57f71b9a193ed621cf03493b359b1b40a29f2af5901a176434b864312aa6ab02b239a3bfb9877 423e5644f4e2e8100dd858ec61083f70aafd89a884db0a53d0fa01aed634dbe695db5bf34e53bdd032383b8e5916e3bc5beaab99a2e22cdcf493d206f354310f 7cf3da6e9c3bbf2bbae22fca956a1affcf5cd1cb015c1e2c453a0221dcec0a8c74a534032e54cca10b65310dbb02d67dd33b205be07a165e03f970bf6cfe17e4 40ff6f6bceea30650d6740b547474850584e542c08d985b664b2ef1465f57ce9b12a59aec86454c55c9959b307e480b0beee812bba070728865437dd246f0306 7732ffdce7bc820623bd47a9d69bd3c9caa5d3d6c03fbd71b1c50c4e9dd84be8fc2df82f4d2c57f7e9ea67e58d78b146561dd12fa6bba4465115cee2b7b6964f f59a269c6501aeacb5b663cd78bcb85c1807519cf51806cbfd4c06574048ff03eb1f1521b31f2bf482dae77bd05b117c7bb0fc21c8ea4bbaab4106e906697f0d 60df63076d32695596da7ce7a3592b16eb0bdea896f39e205b5b7696789f93ec7213e54ee7d4e245929d33ec706dc7e6520d913d59a230342cce212630e62b57 f543141fdc83406fc195ff98d94f533283275307d9ae30d935e0d124ffc9a45d706dd6e9338c46b2748f0c118d8e8af347c9842d21fb79a4d8221bb416d38956 0a2ef90e0dae608ed7a276b52c85174f172e25ccccd0b24b617397e653001fc7f2c6ad8f7680b74dd67aad8bab608aa57f85b23318efa7cc7bf2392b65f6a0f8 ca40bd0665eae8d594e54c0179b389079f370586a357cff45f58746ca69b94ddf8130000ffff0300504b0304140006000800000021000dd1909fb60000001b01 0000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126 dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed 1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89 672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d00140006000800000021009be8704ffc0000001c02000013 00000000000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c000000036010000 0b000000000000000000000000002d0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000 00000000000000160200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100215aa28421070000db 1d00001600000000000000000000000000d30200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb6 0000001b0100002700000000000000000000000000280a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000230b00000000} {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} {\*\latentstyles\lsdstimax276\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9; \lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7; \lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis; \lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing; \lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid; \lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading; \lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote; \lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; \lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2; \lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3; \lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; \lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5; \lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference; \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010001000200000008000000556e6b6e6f776e000000000000000000000e0000 d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e50000000000000000000000005076 7ec38594cc010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000000c747ec38594cc01 45767ec38594cc010000000000000000000000004600c700de004200cd00c5005100c300510056004f004700de00c0004a004a00d600d4004a00c400c60051003d003d000000000000000000000000000000000032000101ffffffffffffffff03000000000000000000000000000000000000000000000029747ec38594 cc0132767ec38594cc010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000cd00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d 22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d222f4150412e58534c22205374796c654e616d653d22415041222f3e000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b42363831 374631362d323335342d353334312d383646412d3032343944423432363439397d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c 64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f 72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010000000000}} \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/example.txt b/modules/core/aloha/static/test/unit/contenthandler/example.txt new file mode 100644 index 000000000..1ef67f3f0 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/example.txt @@ -0,0 +1 @@ +Here you'll find some example content to show Aloha's possibilities regarding any kind of formatting. Headline 1 Headline 2 Headline 3 Headline 4 Headline 5 Headline 6 Here we test, a link and other formattings such as bold, italic or deleted text. You may also use formattings for maths 22 = 4 or chemical formulas like CO2. Or you may edit tables as you do in office products. This is a demo table with an awesome column and row span ! • List entry o List entry o List entry • List entry • List entry • List entry • List entry • List entry a. List entry a. List entry b. List entry i. List entry ii. List entry b. List entry c. List entry d. List entry For better sematical understanding and WAI compatibility you can describe abbreviations like HTML and CSS. \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html-basic-expected.html b/modules/core/aloha/static/test/unit/contenthandler/html-basic-expected.html new file mode 100644 index 000000000..b760ee353 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html-basic-expected.html @@ -0,0 +1,6 @@ +foo + + + + +


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html-expected.html b/modules/core/aloha/static/test/unit/contenthandler/html-expected.html new file mode 100644 index 000000000..f78e9ceda --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html-expected.html @@ -0,0 +1,6 @@ +foo + + + + +


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html-restricted-expected.html b/modules/core/aloha/static/test/unit/contenthandler/html-restricted-expected.html new file mode 100644 index 000000000..2af268afc --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html-restricted-expected.html @@ -0,0 +1 @@ +foo


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html-start.html b/modules/core/aloha/static/test/unit/contenthandler/html-start.html new file mode 100644 index 000000000..03d09595e --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html-start.html @@ -0,0 +1 @@ +foo[]bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html-value.html b/modules/core/aloha/static/test/unit/contenthandler/html-value.html new file mode 100644 index 000000000..bee619f0d --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html-value.html @@ -0,0 +1,5 @@ + + + + +


                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html2-expected.html b/modules/core/aloha/static/test/unit/contenthandler/html2-expected.html new file mode 100644 index 000000000..d09f20620 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html2-expected.html @@ -0,0 +1,31 @@ + + + + + + + + + +
                                              +

                                              This is a paragraph

                                              + +

                                              This is another paragraph

                                              +
                                              This cell contains a table: + + + + + + + + + +
                                              AB
                                              CD
                                              +
                                              This cell contains a list +
                                                +
                                              • apples
                                              • +
                                              • bananas
                                              • +
                                              • pineapples
                                              • +
                                              +
                                              HELLO
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html2-start.html b/modules/core/aloha/static/test/unit/contenthandler/html2-start.html new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html2-start.html @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html2-value.html b/modules/core/aloha/static/test/unit/contenthandler/html2-value.html new file mode 100644 index 000000000..430493e90 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html2-value.html @@ -0,0 +1,31 @@ + + + + + + + + + +
                                              +

                                              This is a paragraph

                                              + +

                                              This is another paragraph

                                              +
                                              This cell contains a table: + + + + + + + + + +
                                              AB
                                              CD
                                              +
                                              This cell contains a list +
                                                +
                                              • apples
                                              • +
                                              • bananas
                                              • +
                                              • pineapples
                                              • +
                                              +
                                              HELLO
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html3-value.html b/modules/core/aloha/static/test/unit/contenthandler/html3-value.html new file mode 100644 index 000000000..56d6ebdb3 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html3-value.html @@ -0,0 +1,23 @@ + + + + + + +
                                              A test table with merged cells
                                              + Average + Red
                                              eyes +
                                              height + weight +
                                              Males + 1.9 + 0.003 + 40% +
                                              Females + 1.7 + 0.002 + 43% +
                                              diff --git a/modules/core/aloha/static/test/unit/contenthandler/html4-value.html b/modules/core/aloha/static/test/unit/contenthandler/html4-value.html new file mode 100644 index 000000000..bcdc856bc --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html4-value.html @@ -0,0 +1,17 @@ + + + + + +
                                              1 + 2 + 3 +
                                              4 + 5 + 6 +
                                              7 + 9 +
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html5-value.html b/modules/core/aloha/static/test/unit/contenthandler/html5-value.html new file mode 100644 index 000000000..6728229c6 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html5-value.html @@ -0,0 +1,25 @@ + + + + + + + +
                                              + Characteristics with positive and negative sides. +
                                              + Help +

                                              Characteristics are given in the second column, with the + negative side in the left column and the positive side in the right + column.

                                              +
                                              +
                                              Negative + Characteristic + Positive +
                                              Sad + Mood + Happy +
                                              Failing + Grade + Passing +
                                              diff --git a/modules/core/aloha/static/test/unit/contenthandler/html6-value.html b/modules/core/aloha/static/test/unit/contenthandler/html6-value.html new file mode 100644 index 000000000..f007590b7 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html6-value.html @@ -0,0 +1,22 @@ +
                                              +
                                              Characteristics with positive and negative sides
                                              +

                                              Characteristics are given in the second column, with the + negative side in the left column and the positive side in the right + column.

                                              + + + + + + +
                                              Negative + Characteristic + Positive +
                                              Sad + Mood + Happy +
                                              Failing + Grade + Passing +
                                              +
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/html7-value.html b/modules/core/aloha/static/test/unit/contenthandler/html7-value.html new file mode 100644 index 000000000..ac9b71a4c --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/html7-value.html @@ -0,0 +1,54 @@ +

                                              title

                                              +

                                              bam

                                              + + + + + + + + + + + + + + + + +
                                              cell 1cell 2

                                              cell 3

                                              + +

                                              cell 3 second line

                                               
                                               
                                              +

                                              other table

                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              Production
                                              Raha Mutisya1493
                                              Shalom Buraka3829
                                              Brandy Davis0283
                                              Sales
                                              Claire Horne4827
                                              Bruce Eckel7246
                                              Danny Zeman5689
                                              [] \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/libreoffice-expected.html b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-expected.html new file mode 100644 index 000000000..cc4d12f91 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-expected.html @@ -0,0 +1,8 @@ +
                                                +
                                              1. foo +
                                                  +
                                                1. bam
                                                2. +
                                                + []baz +
                                              2. +
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/libreoffice-start.html b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-start.html new file mode 100644 index 000000000..554e42f1c --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-start.html @@ -0,0 +1,3 @@ +
                                                +
                                              1. foo[bar]baz
                                              2. +
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/libreoffice-value.html b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-value.html new file mode 100644 index 000000000..bc0827001 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/libreoffice-value.html @@ -0,0 +1,3 @@ +
                                                +
                                              1. bam
                                              2. +
                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/rte-expected.html b/modules/core/aloha/static/test/unit/contenthandler/rte-expected.html new file mode 100644 index 000000000..cc09e5369 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/rte-expected.html @@ -0,0 +1,27 @@ +foo

                                              this is a test

                                              +


                                              +

                                              to paste  with multiple lines and formatting

                                              +


                                              +

                                              --> linebreak with extra lines <--

                                              +


                                              +

                                              from an text editor

                                              +

                                              linebreak without

                                              +

                                              extra line between

                                              +

                                              the other lines

                                              +


                                              +


                                              +
                                                +
                                              1. list item one
                                              2. +
                                              3. list item two
                                              4. +
                                              5. list item three
                                              6. +
                                              +


                                              +


                                              +

                                              four emtpy lines are following

                                              +


                                              +

                                              THIS IS A LINK

                                              +


                                              +


                                              +

                                              end of t   h   e      t   e   x   t

                                              +


                                              +


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/rte-expected.source.html b/modules/core/aloha/static/test/unit/contenthandler/rte-expected.source.html new file mode 100644 index 000000000..f6dd9158d --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/rte-expected.source.html @@ -0,0 +1,27 @@ +foo

                                              this is a test

                                              +


                                              +

                                              to paste  with multiple lines and formatting

                                              +


                                              +

                                              --> linebreak with extra lines <--

                                              +


                                              +

                                              from an text editor

                                              +

                                              linebreak without

                                              +

                                              extra line between

                                              +

                                              the other lines

                                              +


                                              +


                                              +
                                                +
                                              1. list item one
                                              2. +
                                              3. list item two
                                              4. +
                                              5. list item three
                                              6. +
                                              +


                                              +


                                              +

                                              four emtpy lines are following

                                              +


                                              +

                                              THIS IS A LINK

                                              +


                                              +


                                              +

                                              end of t   h   e      t   e   x   t

                                              +


                                              +


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/rte-start.html b/modules/core/aloha/static/test/unit/contenthandler/rte-start.html new file mode 100644 index 000000000..03d09595e --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/rte-start.html @@ -0,0 +1 @@ +foo[]bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/rte-value.html b/modules/core/aloha/static/test/unit/contenthandler/rte-value.html new file mode 100644 index 000000000..e30a5b385 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/rte-value.html @@ -0,0 +1,27 @@ +

                                              this is a test

                                              +


                                              +

                                              to paste  with multiple lines and formatting

                                              +


                                              +

                                              --> linebreak with extra lines <--

                                              +


                                              +

                                              from an text editor

                                              +

                                              linebreak without

                                              +

                                              extra line between

                                              +

                                              the other lines

                                              +


                                              +


                                              +
                                                +
                                              1. list item one
                                              2. +
                                              3. list item two
                                              4. +
                                              5. list item three
                                              6. +
                                              +


                                              +


                                              +

                                              four emtpy lines are following

                                              +


                                              +

                                              THIS IS A LINK

                                              +


                                              +


                                              +

                                              end of t   h   e      t   e   x   t

                                              +


                                              +


                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/txt-expected.html b/modules/core/aloha/static/test/unit/contenthandler/txt-expected.html new file mode 100644 index 000000000..e12bc25dc --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/txt-expected.html @@ -0,0 +1,4 @@ +foothis is a test
                                              to paste  with multiple lines 

                                              --> linebreak with extra lines <--
                                              +
                                              from an text editor
                                              linebreak without
                                              extra line between
                                              the other lines


                                              list item one +
                                              list item two
                                              list item three


                                              four emtpy lines are following



                                              +
                                              end of t   h   e      t   e   x   t


                                              []bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/txt-start.html b/modules/core/aloha/static/test/unit/contenthandler/txt-start.html new file mode 100644 index 000000000..03d09595e --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/txt-start.html @@ -0,0 +1 @@ +foo[]bar \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandler/txt-value.html b/modules/core/aloha/static/test/unit/contenthandler/txt-value.html new file mode 100644 index 000000000..2608fead0 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandler/txt-value.html @@ -0,0 +1,25 @@ +this is a test +

                                              +
                                              to paste  with multiple lines 
                                              +

                                              +
                                              --> linebreak with extra lines <--
                                              +

                                              +
                                              from an text editor
                                              +
                                              linebreak without
                                              +
                                              extra line between
                                              +
                                              the other lines
                                              +

                                              +

                                              +
                                              list item one
                                              +
                                              list item two
                                              +
                                              list item three
                                              +

                                              +

                                              +
                                              four emtpy lines are following
                                              +

                                              +

                                              +

                                              +

                                              +
                                              end of t   h   e      t   e   x   t
                                              +

                                              +

                                              \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandlermanager.html b/modules/core/aloha/static/test/unit/contenthandlermanager.html new file mode 100644 index 000000000..3925ebb20 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandlermanager.html @@ -0,0 +1,45 @@ + + + + + Aloha Editor ContentHandler MAnager Test Suite + + + + + + + + + + + + + + + + + + + +

                                              Aloha Editor ContentHandler Manager Test Suite

                                              + +

                                              + +
                                              +

                                              +
                                                +
                                                +
                                                +
                                                + + diff --git a/modules/core/aloha/static/test/unit/contenthandlermanagertest.js b/modules/core/aloha/static/test/unit/contenthandlermanagertest.js new file mode 100644 index 000000000..d775c5dec --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandlermanagertest.js @@ -0,0 +1,127 @@ +/* contenthandlermanagertest.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/*global define: true, Aloha: true, asyncTest: true, window: true, ok: true, start: true, test: true, equal: true, deepEqual: true */ +define( + ['testutils'], + function (TestUtils) { + "use strict"; + + // Test whether Aloha is properly initialized + asyncTest('Aloha Startup Test', function () { + var timeout = window.setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 60000); + Aloha.ready(function () { + window.clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + Aloha.require(['aloha/contenthandlermanager'], + function (ContentHandlerManager) { + // first unregister all contenthandlers, that were registered by aloha editor + var id, ids = ContentHandlerManager.getIds(); + for (id in ids) { + if (ids.hasOwnProperty(id)) { + ContentHandlerManager.unregister(ids[id]); + } + } + ContentHandlerManager.register('one', + ContentHandlerManager.createHandler({ + handleContent:function (content) { + return content + ',one'; + } + })); + ContentHandlerManager.register('two', + ContentHandlerManager.createHandler({ + handleContent:function (content) { + return content + ',two'; + } + })); + ContentHandlerManager.register('three', + ContentHandlerManager.createHandler({ + handleContent:function (content) { + return content + ',three'; + } + })); + ContentHandlerManager.register('four', + ContentHandlerManager.createHandler({ + handleContent:function (content) { + return content + ',four'; + } + })); + test('Test ContentHandlerManager.get', function () { + ok(ContentHandlerManager.get('one'), 'Found contenthandler "one"'); + ok(ContentHandlerManager.get('two'), 'Found contenthandler "two"'); + ok(ContentHandlerManager.get('three'), 'Found contenthandler "three"'); + ok(ContentHandlerManager.get('four'), 'Found contenthandler "four"'); + equal(ContentHandlerManager.get('five'), undefined, 'Not found non-existent contenthandler "five"'); + }); + test('Test ContentHandlerManager.has', function () { + equal(ContentHandlerManager.has('one'), true, 'Found contenthandler "one"'); + equal(ContentHandlerManager.has('two'), true, 'Found contenthandler "two"'); + equal(ContentHandlerManager.has('three'), true, 'Found contenthandler "three"'); + equal(ContentHandlerManager.has('four'), true, 'Found contenthandler "four"'); + equal(ContentHandlerManager.has('five'), false, 'Not found non-existent contenthandler "five"'); + }); + test('Test ContentHandlerManager.getEntries', function () { + var entries = ContentHandlerManager.getEntries(); + ok(entries.one, 'Found contenthandler "one"'); + ok(entries.two, 'Found contenthandler "two"'); + ok(entries.three, 'Found contenthandler "three"'); + ok(entries.four, 'Found contenthandler "four"'); + equal(entries.five, undefined, 'Not found non-existent contenthandler "five"'); + }); + test('Test ContentHandlerManager.getIds', function () { + deepEqual(ContentHandlerManager.getIds(), ['one', 'two', 'three', 'four'], 'Array of registered ids in correct order'); + }); + test('Test handling content with all handlers', function () { + var content = 'content'; + var handledContent = ContentHandlerManager.handleContent(content, {}); + equal(handledContent, 'content,one,two,three,four', 'Test handled content'); + }); + var i, perm, perms = TestUtils.permutations(['one', 'two', 'three', 'four']); + for (i in perms) { + if (perms.hasOwnProperty(i)) { + perm = perms[i]; + (function (perm) { + test('Test handling contenthandlers ' + perm.join(','), function () { + var content = 'content'; + var expectedContent = content + ',' + perm.join(','); + var handledContent = ContentHandlerManager.handleContent(content, {contenthandler:perm}); + equal(handledContent, expectedContent, 'Test handled content'); + }); + })(perm); + } + } + }); + }); + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/contenthandlertest.js b/modules/core/aloha/static/test/unit/contenthandlertest.js new file mode 100644 index 000000000..3312d53d2 --- /dev/null +++ b/modules/core/aloha/static/test/unit/contenthandlertest.js @@ -0,0 +1,117 @@ +/* contenthandlertest.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['testutils'], + function (TestUtils) { + "use strict"; + + var aQuery = Aloha.jQuery; + + // Test whether Aloha is properly initialized + asyncTest('Aloha Startup Test', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 60000); + Aloha.ready(function () { + clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + + var + editable = aQuery('#edit'), + converter = aQuery('
                                                '); + + // aloha'fy the editable + editable.aloha(); + + for (var i = 0; i < tests.tests.length; i++) { + var + check = tests.tests[i]; + + if (!check) { + continue; + } + + var + desc = converter.text(check.start).html() + ' -> ' + converter.text(check.expected).html(), + value = ( typeof check.value !== 'undefined') ? check.value : tests.defaultValue, + name = check.name || '"' + converter.text(value).html() + '": ' + desc; + + + module('Commmand ' + (i + 1) + ' ' + tests.defaultCommand, { + setup:function () { + // fill the editable area with the start value + editable.html(this.check.start); + editable.focus(); + }, + teardown:function () { + // goodbye + } + }); + + test(name, {check:check}, function () { + var + check = this.check, + command = check.command || tests.defaultCommand, + value = typeof check.value !== 'undefined' ? check.value : tests.defaultValue, + expected = aQuery('
                                                ' + check.expected + '
                                                ').contents(), + // place the selection (and remove the selection marker) + range = TestUtils.rangeFromMarker(editable), + result; + + range.select(); +// var r = Aloha.createRange(); +// r.setStart( range.startContainer, range.startOffset) ; +// r.setEnd( range.endContainer, range.endOffset); +// Aloha.getSelection().removeAllRanges(); +// Aloha.getSelection().addRange(r); +// Aloha.Selection.updateSelection(); + + // execute the command + Aloha.execCommand(command, false, value); + + // place the marker at the selection + range = rangy.getSelection().getRangeAt(0); + TestUtils.addBrackets(range); + //TestUtils.markerFromSelection(); + + // TODO deactivate the editable + result = Aloha.editables[0].getContents(true); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Operation Result'); + }); + } + }); + }); diff --git a/modules/core/aloha/static/test/unit/core.html b/modules/core/aloha/static/test/unit/core.html new file mode 100644 index 000000000..3913f90a0 --- /dev/null +++ b/modules/core/aloha/static/test/unit/core.html @@ -0,0 +1,57 @@ + + + + + Aloha Editor Core Test Suite + + + + + + + + + + + + + + + + + + + +

                                                Aloha Editor Core Test Suite

                                                + +

                                                + +
                                                +

                                                +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  + + diff --git a/modules/core/aloha/static/test/unit/core/ephemera-tests.js b/modules/core/aloha/static/test/unit/core/ephemera-tests.js new file mode 100644 index 000000000..a91adcd3a --- /dev/null +++ b/modules/core/aloha/static/test/unit/core/ephemera-tests.js @@ -0,0 +1,86 @@ +Aloha.require(['jquery', 'aloha/ephemera', 'dom-to-xhtml/dom-to-xhtml'], function ($, Ephemera, DomToXhtml) { + 'use strict'; + + module('ephemeral') + test('prune', function () { + var input = $('
                                                  ' + + '

                                                  ' + + '

                                                  ' + + 'some
                                                  text
                                                  textsome' + + '
                                                  ' + + '

                                                  ' + + 'other

                                                  te

                                                  xt
                                                  ' + + '
                                                  ')[0]; + var expected = $('
                                                  ' + + '

                                                  ' + + '

                                                  ' + + 'some
                                                  text
                                                  textsome' + + '
                                                  ' + + '

                                                  ' + + 'otherxt' + + '
                                                  ')[0]; + // IE7, IE8 behave differently if the DOM is inside an editable + $('#test-editable').aloha().append(input); + // TODO using jquery-1.7.2's removeAttr method with a value of + // 'contenteditable' will not remove the attribute but it + // will remove the value, which results in + // ...... + // + // Aloha monkey patches jquery's removeAttr method to work + // around a browser crash. The monkey patched removeAttr + // will not work with a value of 'contenteditable', but it + // will work with a value of 'contentEditable'. Curiously, + // it will work even better, removing the entire attribute, + // which results in + // ...... + Ephemera.markAttr($(input).find('.attr')[0], 'contentEditable'); + Ephemera.markElement($(input).find('.ephemeral')[0]); + Ephemera.markWrapper($(input).find('.wrapper')[0]); + Ephemera.markFiller($(input).find('.filler')[0]); + Ephemera.classes('aloha-xxx', 'aloha-xxx2'); + Ephemera.attributes('data-xx'); + var result = Ephemera.prune(input); + equal(result.outerHTML, expected.outerHTML); + }); + + test('emap.attrMap and emap.attrRxs', function () { + var input = $('
                                                    some text
                                                  ' + + '
                                                  sometext
                                                  ' + + '

                                                  ' + + '' + + 'some text' + + '

                                                  ')[0]; + + // IE7, IE8 behave differently if the DOM is inside an editable + $('#test-editable').aloha().append(input); + + var expected = $('
                                                  • some text
                                                  ' + + '
                                                  sometext
                                                  ' + + '

                                                  some text

                                                  ')[0]; + + var result = Ephemera.prune(input.cloneNode(true)).outerHTML; + // IE7/8 refuse to remove the hideFocus field + if ($.browser.msie && parseInt($.browser.version, 10) < 9) { + result = result.replace(/\shideFocus/gi, ''); + } + equal(result, expected.outerHTML); + + // Try to remove the hideFocus field again during serialization + expected = DomToXhtml.nodeToXhtml(expected); + result = DomToXhtml.nodeToXhtml(input, Ephemera.ephemera()); + equal(result, expected); + }); +}); diff --git a/modules/core/aloha/static/test/unit/core/index.html b/modules/core/aloha/static/test/unit/core/index.html new file mode 100644 index 000000000..ba4491e93 --- /dev/null +++ b/modules/core/aloha/static/test/unit/core/index.html @@ -0,0 +1,54 @@ + + + + + Aloha Editor ephemeral Test Suite + + + + + + + + + + + + + + + + + + + + + +

                                                  Aloha Editor ephemeral Test Suite

                                                  + +

                                                  + +
                                                  +

                                                  +
                                                    +
                                                    +
                                                    +
                                                    + + diff --git a/modules/core/aloha/static/test/unit/coretests.js b/modules/core/aloha/static/test/unit/coretests.js new file mode 100644 index 000000000..aefb4222f --- /dev/null +++ b/modules/core/aloha/static/test/unit/coretests.js @@ -0,0 +1,145 @@ +/* coretests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define([], function () { + "use strict"; + + // Test whether Aloha is properly initialized + asyncTest('Aloha trigger event "aloha-ready".', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha did not trigger event "aloha-ready" within 60 seconds'); + start(); + }, 60000); + Aloha.bind('aloha-ready', function () { + clearTimeout(timeout); + ok(true, 'Event "aloha-ready" was fired'); + start(); + }); + }); + + // Test whether Aloha is properly initialized + asyncTest('Aloha.ready( callback ).', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha did not callback Aloha.ready() within 60 seconds'); + start(); + }, 20000); + Aloha.ready(function () { + clearTimeout(timeout); + ok(true, 'Aloha.ready() was called'); + start(); + }); + }); + + // Test whether Aloha is properly initialized + asyncTest('Aloha.bind(\'aloha-ready\'. callback ).', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha did not callback Aloha.bind( \'aloha-ready\', cb ) within 60 seconds'); + start(); + }, 20000); + Aloha.bind('aloha-ready', function () { + clearTimeout(timeout); + ok(true, 'Aloha.bind( \'aloha-ready\', cb ) was called'); + start(); + }); + }); + + // Test whether Aloha is properly initialized + asyncTest('Aloha.bind(\'test\').trigger(\'test\'. callback ).', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha.trigger(test) did not call Aloha.bind( \'test\', cb ) within 60 seconds'); + start(); + }, 20000); + Aloha.bind('test', function () { + clearTimeout(timeout); + ok(true, 'Aloha.bind( \'aloha-ready\', cb ) was called'); + start(); + }) + Aloha.trigger('test'); + }); + + // Test whether Aloha is properly initialized +// asyncTest( '$(body).bind(\'aloha-ready\'. callback ).', function() { +// var timeout = setTimeout( function() { +// ok( false, 'Aloha did not callback $(body).bind( \'aloha-ready\', cb ) within 60 seconds' ); +// start(); +// }, 20000 ); +// Aloha.jQuery('body').bind( 'aloha-ready', function() { +// clearTimeout( timeout ); +// ok( true, '$(body).bind( \'aloha-ready\', cb ) was called' ); +// start(); +// }); +// }); + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + + var + editable = Aloha.jQuery('#edit'), + logHistory = Aloha.Log.getLogHistory(); + + // check whether error or warn messages were logged during startup + test('Aloha Error Log Test', function () { + equal(logHistory.length, 0, 'Check number of logged messages'); + }); + + test('Aloha.require() test', function () { + equals(typeof Aloha.require, 'function', 'Aloha.require() is available'); + }); + + test('Aloha.bind() test', function () { + equals(typeof Aloha.bind, 'function', 'Aloha.bind() is available'); + }); + + test('Aloha.trigger() test', function () { + equals(typeof Aloha.trigger, 'function', 'Aloha.trigger() is available'); + }); + + asyncTest('Aloha.settings.baseUrl', function () { + var url = Aloha.settings.baseUrl + '/aloha.js'; + jQuery.ajax({ + url:url, + success:function (data) { + ok(true, 'aloha.js can be loaded from ' + Aloha.settings.baseUrl); + start(); + }, + error:function (error) { + ok(false, 'Error: ' + error.statusText + '. URL was ' + url); + start(); + } + }); + }); + + // check whether alohafying of divs works + test('Aloha Editable Test', function () { + // in chrome and safari this test only works with every second reload + editable.aloha(); + equals(editable.contentEditable(), true, 'Check whether div is contenteditable after .aloha()'); + editable.mahalo(); + equals(editable.contentEditable(), false, 'Check whether div is not contenteditable after .mahalo()'); + }); + + }); +}); diff --git a/modules/core/aloha/static/test/unit/delete.html b/modules/core/aloha/static/test/unit/delete.html new file mode 100644 index 000000000..8a59c78e3 --- /dev/null +++ b/modules/core/aloha/static/test/unit/delete.html @@ -0,0 +1,58 @@ + + + + + Aloha Editor command delete tests + + + + + + + + + + + + + + + + + + + + +

                                                    Aloha Editor delete tests

                                                    + +

                                                    + +
                                                    +

                                                    +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/modules/core/aloha/static/test/unit/deletetest.js b/modules/core/aloha/static/test/unit/deletetest.js new file mode 100644 index 000000000..b27f4e69a --- /dev/null +++ b/modules/core/aloha/static/test/unit/deletetest.js @@ -0,0 +1,1401 @@ +/* + var tests = { + defaultCommand: 'delete', + tests: [ + { start: 'foo\n\t\t\t[]bar', + execResult: 'foo[]bar' + }, + { start: 'foo []bar', + execResult: 'foo[]bar' + } + ] + } + */ +var tests = { + defaultCommand:'delete', + tests:[ + { start:'[]foo', + execResult:'[]foo' + }, + { start:'[]foo', + execResult:'[]foo' + }, + { exclude:[ 'msie', 'mozilla' ], + start:'{}', + execResult:'{}' + }, + { include:[ 'msie', 'mozilla' ], + start:'{}', + execResult:'{}' + }, + { start:'{}
                                                      ', + execResult:'{}
                                                      ' + }, + { exclude:'mozilla', + start:'
                                                      {}
                                                      ', + execResult:'{}
                                                      ' + }, + { include:'mozilla', + start:'
                                                      {}
                                                      ', + execResult:'{}' + }, + { start:'
                                                      {}
                                                      ', + execResult:'{}
                                                      ' + }, + { exclude:'msie', + start:'

                                                      f[]

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { include:'msie', + start:'

                                                      f[]

                                                      ', + execResult:'

                                                      []

                                                      ' + }, + { start:'

                                                      []foo

                                                      ', + execResult:'

                                                      []foo

                                                      ' + }, + { + exclude:['mozilla'], + start:'

                                                      {}

                                                      ', + execResult:'{}

                                                      ' + }, + { + include:['mozilla'], + start:'

                                                      {}

                                                      ', + execResult:'

                                                      {}' + }, + { + include:['msie'], + start:'

                                                      {}

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { start:'

                                                      {}

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { exclude:'mozilla', + start:'


                                                      {}

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { include:'mozilla', + start:'


                                                      {}

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { start:'


                                                      {}

                                                      ', + execResult:'

                                                      {}

                                                      ' + }, + { start:'foo[]bar', + execResult:'fo[]bar' + }, + { start:'foo{}bar', + execResult:'fo[]bar' + }, + { + exclude:['msie'], + start:'foo[]bar', + execResult:'fo[]bar' + }, + { + include:['msie'], + start:'foobar[]baz', + execResult:'fo[]barbaz' + }, +// { start: 'foo[]baz', +// execResult: 'foo[]baz' +// }, + + { start:'foö[]bar', + execResult:'fo[]bar' + }, + { start:'foö[]bar', + execResult:'foo[]bar' + }, + { start:'foö̧[]bar', + execResult:'foö[]bar' + }, + { start:'ö[]bar', + execResult:'[]bar' + }, + { start:'ö[]bar', + execResult:'o[]bar' + }, + { start:'ö̧[]bar', + execResult:'ö[]bar' + }, + + { start:'שָׁ[]לוֹם', + execResult:'שׁ[]לוֹם' + }, + { start:'שָׁלוֹ[]ם', + execResult:'שָׁלו[]ם' + }, + { start:'

                                                      foo

                                                      []bar

                                                      ', + execResult:'

                                                      foo[]bar

                                                      ' + }, + { exclude:'msie', // TODO this test will always fail in IE, because the selection will always snap into the p + start:'

                                                      foo

                                                      []bar', + execResult:'

                                                      foo[]bar

                                                      ' + }, + { start:'foo

                                                      []bar

                                                      ', + execResult:'foo[]bar' + }, + { start:'

                                                      foo

                                                      []bar

                                                      ', + execResult:'

                                                      foo[]bar

                                                      ' + }, + { exclude:['msie', 'mozilla'], + start:'

                                                      foo

                                                      {}

                                                      ', + execResult:'

                                                      foo[]

                                                      ' + }, + { include:['mozilla'], + start:'

                                                      foo

                                                      {}

                                                      ', + execResult:'

                                                      foo{}

                                                      ' + }, + { include:'msie', + start:'

                                                      foo

                                                      {}

                                                      ', + execResult:'

                                                      foo[]

                                                      ' + }, + { exclude:'msie', + start:'

                                                      foo


                                                      {}

                                                      ', + execResult:'

                                                      foo

                                                      {}

                                                      ' + }, + { include:'msie', + start:'

                                                      foo

                                                      {}

                                                      ', + execResult:'

                                                      foo

                                                      {}

                                                      ' + }, + { exclude:'msie', // TODO this test will always fail in IE, because the selection will always snap into the p + start:'

                                                      foo

                                                      []bar', + execResult:'

                                                      foo[]bar

                                                      ' + }, + { start:'foo

                                                      []bar

                                                      ', + execResult:'foo[]bar' + }, + { + start:'

                                                      foo

                                                      []bar

                                                      ', + execResult:'

                                                      foo
                                                      []bar

                                                      ' + }, + { start:'

                                                      foo

                                                      []bar

                                                      ', + execResult:'

                                                      foo
                                                      []bar

                                                      ' + }, + { exclude:'msie', // TODO this test will always fail in IE, because the selection will always snap into the p + start:'

                                                      foo

                                                      []bar', + execResult:'

                                                      foo
                                                      []bar

                                                      ' + }, + { exclude:'mozilla', + start:'foo

                                                      []bar

                                                      ', + execResult:'foo

                                                      []bar

                                                      ' + }, + { include:'mozilla', + start:'foo

                                                      []bar

                                                      ', + execResult:'foo

                                                      {}bar

                                                      ' + }, + { start:'

                                                      foo

                                                      []bar

                                                      ', + execResult:'
                                                      + + diff --git a/modules/core/aloha/static/test/unit/selectiontest.js b/modules/core/aloha/static/test/unit/selectiontest.js new file mode 100644 index 000000000..21d63f690 --- /dev/null +++ b/modules/core/aloha/static/test/unit/selectiontest.js @@ -0,0 +1,896 @@ +/* selectiontest.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [ 'testutils' ], + function (TestUtils) { + "use strict"; + + // http://dev.w3.org/html5/markup/spec.html#common-models + var + specialTests = [ + // 'start[and]expected' + // [ '[st]art', '[ex]pected' ] + '{}', + [ '{}foo', '[]foo' ], + 'foo[]', + [ 'foo{}', 'foo[]' ], + '[foo]', + [ '{foo}', '[foo]' ], + '[bam]foo', + [ '{bam]foo', '[bam]foo' ], + 'bam[foo]', + [ 'bam[foo}', 'bam[foo]' ], + 'bam[]foo', + 'foo[bar]baz', + + // special characters + // Attention second "ö" is "ö" +// Ignoring [ 'foo[̈]baz', 'foo¨[]baz' ], + [ 'foo[\0]baz', 'foo[]baz' ], + [ 'foo[\x07]baz', 'foo[\x07]baz'] +// qunit URIError 'foo[\ud800]baz', + ], + voidTests = [ + // br + [ 'foo[]
                                                      baz', 'foo[]
                                                      baz' ], + [ 'foo
                                                      []baz', 'foo
                                                      []baz' ], + [ 'foo[}
                                                      baz', 'foo[]
                                                      baz' ], + [ 'foo
                                                      {]baz', 'foo
                                                      []baz' ], + [ 'foo[
                                                      ]baz', 'foo{
                                                      }baz' ], + [ 'foo{
                                                      ]baz', 'foo{
                                                      }baz' ], + [ 'foo[
                                                      }baz', 'foo{
                                                      }baz' ], + [ 'foo{
                                                      }baz', 'foo{
                                                      }baz' ], + [ '[foo
                                                      ]baz', '[foo
                                                      }baz' ], + [ 'foo[
                                                      baz]', 'foo{
                                                      baz]' ], + [ 'foo[

                                                      }baz', 'foo{

                                                      }baz' ], + [ 'foo[

                                                      ]baz', 'foo{

                                                      }baz' ], + [ 'foo{

                                                      }baz', 'foo{

                                                      }baz' ], + [ 'foo{

                                                      ]baz', 'foo{

                                                      }baz' ], + [ 'foo[

                                                      baz
                                                      ', 'foo{
                                                      }
                                                      baz
                                                      ' ], + [ 'foo{

                                                      baz
                                                      ', 'foo{
                                                      }
                                                      baz
                                                      ' ], + [ 'foo

                                                      ]baz
                                                      ', 'foo
                                                      {
                                                      }baz
                                                      ' ], + [ 'foo

                                                      }baz
                                                      ', 'foo
                                                      {
                                                      }baz
                                                      ' ], + // br wraped in phrasing + [ 'foo{}
                                                      baz', 'foo[]
                                                      baz' ], + [ 'foo
                                                      {}
                                                      baz', 'foo
                                                      []baz' ], + [ 'foo{}
                                                      baz', 'foo[]
                                                      baz' ], + [ 'foo
                                                      {
                                                      }baz', 'foo
                                                      []baz' ], + [ 'foo[}
                                                      baz', 'foo[]
                                                      baz' ], + [ 'foo
                                                      {
                                                      ]baz', 'foo
                                                      []baz' ], + [ 'foo{
                                                      }baz', 'foo{
                                                      }
                                                      baz' ], + [ 'foo[
                                                      ]baz', 'foo{
                                                      }
                                                      baz' ] + // // br wrapped in flow + //

                                                      hello

                                                      {}

                                                      + // [ 'foo
                                                      {}
                                                      baz', 'foo
                                                      {}
                                                      baz' ], + // [ 'foo

                                                      {}
                                                      baz', 'foo
                                                      {}
                                                      baz' ], + // [ 'foo{
                                                      }
                                                      baz', 'foo[
                                                      }
                                                      baz' ], + // [ 'foo

                                                      {
                                                      }baz', 'foo
                                                      {
                                                      ]baz' ], + // [ 'foo[
                                                      }
                                                      baz', 'foo[
                                                      }
                                                      baz' ], + // [ 'foo

                                                      {
                                                      ]baz', 'foo
                                                      {
                                                      ]baz' ], + // [ 'foo{

                                                      }baz', 'foo[

                                                      ]baz' ], + // [ 'foo[

                                                      ]baz', 'foo[

                                                      ]baz' ] + ], + phrasingTests = [ + + [ '{foo]', '[foo]' ], + [ 'foo{bar]', 'foo[bar]' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ 'foo

                                                      {

                                                      bar]', 'foo

                                                      [bar]' ], + [ 'foo

                                                      {

                                                      bar]', 'foo

                                                      [bar]' ], + [ '

                                                      foo

                                                      {bar]', '

                                                      foo

                                                      [bar]' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]', '

                                                      foo{

                                                      bar]' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]', '

                                                      foo{

                                                      bar]' ], + + 'foo[bar]baz', + [ 'foo[bar]baz', 'foo[bar]baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{bar]baz', 'foo[bar]baz' ], + [ 'foo{bar]baz', 'foo[bar]baz' ], + [ 'foo[bar}baz', 'foo[bar]baz' ], + [ 'foo[bar}baz', 'foo[bar]baz' ], + + '[foobar]baz', + [ '[foo]barbaz', '[foo]barbaz' ], + [ 'foo[bar]baz', 'foo[bar]baz' ], + [ 'foo[]barbaz', 'foo[]barbaz' ], + [ '{foobar}baz', '[foobar]baz' ], + [ '{foo}barbaz', '[foo]barbaz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + + [ 'foo[barbaz]', 'foo[barbaz]' ], + [ 'foobar[baz]', 'foobar[baz]' ], + [ 'foo[bar]baz', 'foo[bar]baz' ], + [ 'foobar[]baz', 'foobar[]baz' ], + [ 'foo{barbaz}', 'foo[barbaz]' ], + [ 'foobar{baz}', 'foobar[baz]' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foobar{}baz', 'foobar[]baz' ], + + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ 'foo{]barbaz', 'foo[]barbaz' ], + [ 'foo{]barbaz', 'foo[]barbaz' ], + + [ 'foo{
                                                      bar}
                                                      baz', 'foo{
                                                      bar]
                                                      baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ 'fooa{}barbaz', 'fooa[]barbaz' ], + [ 'fooa{}barbaz', 'fooa[]barbaz' ], + + [ '{}barbaz', '[]barbaz' ], + [ '{}barbaz', '[]barbaz' ], + [ 'test{}barbaz', 'test[]barbaz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ '{}barbaz', '[]barbaz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ '{}barbaz', '[]barbaz' ], + + 'foo[barbaz]bam', + [ 'foobar[]bazbam', 'foobar[]bazbam' ] + ], + nestedPhrasingTests = [ + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ 'foo{}barbaz', 'foo[]barbaz' ], + [ 'foo{]barbaz', 'foo[]barbaz' ], + [ 'foo{]barbaz', 'foo[]barbaz' ], + [ 'foo{
                                                      bar}
                                                      baz', 'foo{
                                                      bar]
                                                      baz' ], + [ 'foo{bar}baz', 'foo[bar]baz' ], + + 'foo[barbaz]bam', + [ 'foobar[]bazbam', 'foobar[]bazbam' ] + ], + + /** + * Special new IE tests + */ + newIETests = [ + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo[]
                                                      bar
                                                      ', 'foo[]
                                                      bar
                                                      ' ], + [ 'foo[]

                                                      bar

                                                      ', 'foo[]

                                                      bar

                                                      ' ], + [ 'foo[]

                                                      bar

                                                      ', 'foo []

                                                      bar

                                                      ' ], + [ 'foo  [] bar', 'foo  [] bar'] + ], + + correctRangeTests = [ + +//* + // + // getStartPositionFromFrontOfBlockNode ( all pass in all browsers ) + // + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ 'foo
                                                      {

                                                      bar]

                                                      ', 'foo

                                                      [bar]

                                                      ' ], + [ 'foo
                                                      {

                                                      bar]

                                                      ', 'foo

                                                      [bar]

                                                      ' ], + [ 'foofoo1foo2{

                                                      bar]

                                                      ', 'foofoo1foo2[

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      bar]

                                                      ', '

                                                      [bar]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foobar]

                                                      ', '

                                                      [foobar]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ 'foo

                                                      {

                                                      bar]

                                                      ', 'foo

                                                      [bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ '

                                                      foo

                                                      {

                                                      bar]

                                                      ', '

                                                      foo

                                                      [bar]

                                                      ' ], + +//*/ + +//* + // + // getStartPositionFromEndOfBlockNode ( a few will never work on ie ) + // + [ '

                                                      foo{

                                                      bar]

                                                      ', '

                                                      foo[

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]', '

                                                      foo[

                                                      bar]' ], + + [ '

                                                      {

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '

                                                      {

                                                      foo]', '

                                                      [foo]' ], + [ '

                                                      {

                                                      foo]', '

                                                      [foo]' ], + + [ '

                                                      {

                                                      bar]

                                                      ', '

                                                      [bar]

                                                      ' ], + [ '

                                                      {

                                                      }

                                                      bar', '

                                                      []bar' ], + [ '

                                                      {

                                                      bar]', '

                                                      [bar]' ], + [ '

                                                      {

                                                      bar]', '

                                                      [bar]' ], + + [ 'foo

                                                      {

                                                      bar]

                                                      ', 'foo

                                                      [bar]

                                                      ' ], + [ '

                                                      {

                                                      }

                                                      bar', '

                                                      []bar' ], + [ '

                                                      {

                                                      }

                                                      ', '{}

                                                      ' ], + [ '

                                                      foo{

                                                      bar}

                                                      baz

                                                      ', '

                                                      foo[

                                                      bar]

                                                      baz

                                                      ' ], + +//*/ + +//* + // + // getEndPositionFromFrontOfInlineNode + // + // target position "...

                                                      ]bar" or "...

                                                      }]bar" will alway be moved in ie + // + [ '[foo}bar', '[foo]bar' ], + [ '[foo}bar', '[foo]bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + //dodgy + + [ '[foo}bar', '[foo]bar' ], + [ '[foo}bar', '[foo]bar' ], + [ '{}bar', '[]bar' ], + // dodgy + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '{}foo', '[]foo' ], + [ '[foo

                                                      }bar', '[foo

                                                      ]bar' ], + [ '

                                                      [foo

                                                      }bar', '

                                                      [foo

                                                      ]bar' ], + +//*/ + +//* + // + // getEndPositionFromFrontOfBlockNode + // + // most of these will fail in ie + // TODO: convert "{}" to "[]" + // + [ '[foo}

                                                      bar

                                                      ', '[foo]

                                                      bar

                                                      ' ], + [ '[foo}

                                                      bar

                                                      ', '[foo]

                                                      bar

                                                      ' ], + [ '[foo}

                                                      bar', '[foo]

                                                      bar' ], + [ '[foo}

                                                      bar

                                                      ', '[foo]

                                                      bar

                                                      ' ], + + [ '[foo}

                                                      ', '[foo]

                                                      ' ], + [ '
                                                      [foo}

                                                      bar', '
                                                      [foo]

                                                      bar' ], + + [ '[foo}

                                                      ', '[foo]

                                                      ' ], + [ '[foo}

                                                      bar

                                                      ', '[foo]

                                                      bar

                                                      ' ], + + [ '{}

                                                      foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ 'foo{}

                                                      bar

                                                      ', 'foo[]

                                                      bar

                                                      ' ], + // !!! IE Will not accept our expected range + [ '

                                                      foo

                                                      {}

                                                      bar

                                                      ', '

                                                      foo

                                                      []bar

                                                      ' ], + + [ '[foo
                                                      }

                                                      bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + + [ '

                                                      [foo

                                                      }
                                                      bar
                                                      ', '

                                                      [foo

                                                      }bar
                                                      ' ], + [ '

                                                      [foo

                                                      }
                                                      bar
                                                      ', '

                                                      [foo

                                                      }bar
                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar
                                                      ', '

                                                      [foo

                                                      }bar
                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar', '

                                                      [foo

                                                      }bar' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + + [ '[foo}

                                                      bar

                                                      ', '[foo]

                                                      bar

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      test

                                                      ', '

                                                      [foo

                                                      }test

                                                      ' ], + [ '

                                                      [foo

                                                      }

                                                      bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + + [ '

                                                      [foo

                                                      }

                                                      bar', '

                                                      [foo

                                                      ]bar' ], + [ '

                                                      [foo

                                                      }

                                                      bar', '

                                                      [foo]

                                                      bar' ], + [ '

                                                      {

                                                      }

                                                      bar', '

                                                      []bar' ], + [ '

                                                      {

                                                      }

                                                      bar', '

                                                      []bar' ], + [ '

                                                      {

                                                      }

                                                      ', '{}

                                                      ' ], + +//*/ + +//* + // + // getEndPositionFromEndOfBlockNode + // + // all ok, but some must fail in ie + // + [ '

                                                      [foo}

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '[foo

                                                      }

                                                      ', '[foo]

                                                      ' ], + + [ '[foo

                                                      }

                                                      ', '[foo]

                                                      ' ], + [ '

                                                      [foobar}

                                                      ', '

                                                      [foobar]

                                                      ' ], + [ '

                                                      [foobartest}

                                                      ', '

                                                      [foobartest]

                                                      ' ], + [ '

                                                      [foobar}

                                                      test', '

                                                      [foobar]

                                                      test' ], + + [ '[foo

                                                      bar

                                                      }
                                                      ', '[foo

                                                      bar]

                                                      ' ], + [ '[foo

                                                      }
                                                      ', '[foo]

                                                      ' ], + [ '[foo

                                                      bar

                                                      }
                                                      ', '[foo

                                                      bar]

                                                      ' ] + + [ '[foo

                                                      }', '[foo]

                                                      ' ], + [ '[foo

                                                      }', '[foo]

                                                      ' ], + [ '[foo

                                                      }', '[foo]

                                                      ' ], + + [ '

                                                      foo

                                                      test{

                                                      bar

                                                      }

                                                      baz

                                                      ', '

                                                      foo

                                                      test[

                                                      bar

                                                      }baz

                                                      ' ], + [ '

                                                      foo{

                                                      bar}

                                                      baz

                                                      ', '

                                                      foo[

                                                      bar]

                                                      baz

                                                      ' ], + [ '

                                                      foo

                                                      {

                                                      bar}

                                                      baz

                                                      ', '

                                                      foo

                                                      [bar]

                                                      baz

                                                      ' ] + +//*/ + +//* + // + // Start position at start of editing host + // ie has some issues + // + [ '{}

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }', '{}

                                                      ' ], + [ '{

                                                      }', '{}

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ] + + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + // IE won't accept + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + +//*/ + +//* + // + // getStartPositionFromFrontOfInlineNode + // + // ie will fail in some + // + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]

                                                      ', '

                                                      foo{

                                                      bar]

                                                      ' ], + [ '
                                                      foo{

                                                      bar]

                                                      ', '
                                                      foo{

                                                      bar]

                                                      ' ], + [ '
                                                      foo{

                                                      bar]

                                                      ', '
                                                      foo{

                                                      bar]

                                                      ' ], + [ '
                                                      foo{

                                                      bar]

                                                      ', '
                                                      foo{

                                                      bar]

                                                      ' ], + [ '
                                                      foo

                                                      test{

                                                      bar]

                                                      ', '
                                                      foo

                                                      test{

                                                      bar]

                                                      ' ], + + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '

                                                      {

                                                      bar]

                                                      ', '

                                                      [bar]

                                                      ' ], + + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ '

                                                      foo{

                                                      }

                                                      ', '

                                                      foo[]

                                                      ' ], + + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + // IE Fails very strangly here + [ '{

                                                      }

                                                      ', '{}

                                                      ' ], + [ '

                                                      {

                                                      }

                                                      ', '{}

                                                      ' ], + [ 'foo{bar]', 'foo[bar]' ], + +//*/ + +//* + // + // getStartPositionFromEndOfInlineNode + // + // many will fail in ie + // + // With text node inside container node and right text node + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + // ... With block node between start container and right text node + [ 'foo{

                                                      bar]', 'foo[

                                                      bar]' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]', '

                                                      foo[

                                                      bar]' ], + // With text node left and right of container node, and none inside + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + [ 'foo{bar]', 'foo[bar]' ], + // ... With block node between start container and right text node + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]', 'foo{

                                                      bar]' ], + [ 'foo{

                                                      }', 'foo[]

                                                      ' ], + + // With text node left of container, none right and none inside + [ 'foo{}', 'foo[]' ], + [ 'foo

                                                      {}

                                                      ', 'foo[]

                                                      ' ], + // With text node inside of container, none to right + [ 'foo{}', 'foo[]' ], + [ 'foo{}', 'foo[]' ], + [ 'foo{

                                                      }', 'foo[]

                                                      ' ], + + [ 'foo{}', 'foo[]' ], + + // With a text node left, and right of start container + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]

                                                      ', '

                                                      foo{

                                                      bar]

                                                      ' ], + // With a text node inside start container + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo{

                                                      bar]

                                                      ' ], + [ 'foo{

                                                      bar]

                                                      ', 'foo[

                                                      bar]

                                                      ' ], + [ '

                                                      foo{

                                                      bar]

                                                      ', '

                                                      foo[

                                                      bar]

                                                      ' ], + // With no text node left of start container, but with one on right + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{

                                                      foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '

                                                      {

                                                      bar]

                                                      ', '

                                                      [bar]

                                                      ' ], + // With text node left of start container, but none on the right + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ 'foo{

                                                      }

                                                      ', 'foo[]

                                                      ' ], + [ '

                                                      foo{

                                                      }

                                                      ', '

                                                      foo[]

                                                      ' ], + +//*/ + +//* + // + // getStartPositionFromFrontOfTextNode + // + // ok an all browser + // + [ '

                                                      {foo]

                                                      ', '

                                                      [foo]

                                                      ' ], + [ '{foo]', '[foo]' ], + [ 'foo

                                                      {bar]

                                                      ', 'foo

                                                      [bar]

                                                      ' ], + [ 'foo{bar]', 'foo[bar]' ], + +//*/ + +//* + // + // getEndPositionFromFrontOfTextNode + // + // ie will fail some of these + // + [ '[foo}bar', '[foobar]' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      test', '[foo

                                                      }bar

                                                      test' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }bar', '

                                                      [foo

                                                      }bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo}bar', '[foo]bar' ], + [ '[foo}bar', '[foo]bar' ], + [ '

                                                      [foo

                                                      }bar', '

                                                      [foo

                                                      }bar' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '

                                                      [foo

                                                      }bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo}bar', '[foo]bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      ]bar' ], + [ '

                                                      [foo

                                                      }bar', '

                                                      [foo

                                                      ]bar' ], + [ '{

                                                      foo

                                                      }bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      }bar

                                                      ', '

                                                      []bar

                                                      ' ], + [ '

                                                      {}foo

                                                      ', '

                                                      []foo

                                                      ' ], + +//*/ + +//* + // + // getEndPositionFromEndOfInlineNode + // + // ie must fai on some of these + // + [ 'foo{}bar', 'foo[]bar'], + [ 'foo[]bar', 'foo[]bar' ], + [ '[foo}', '[foo]' ], + [ '[foo}bar', '[foo]bar' ], + [ '[foo}', '[foo]' ], + [ '{}bar', '[]bar' ], + + [ '[foobar}', '[foobar]' ], + [ '[foobar}', '[foobar]' ], + + [ '[foo}', '[foo]' ], + [ '[foo}', '[foo]' ], + [ '[foo}', '[foo]' ], + [ '[foo

                                                      }', '[foo]

                                                      ' ], + + ['[foo

                                                      }bar', '[foo

                                                      }bar'], + ['[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      '], + ['[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      '], + ['[foo

                                                      }', '[foo]

                                                      '], + ['[foo

                                                      }

                                                      ', '[foo]

                                                      '], + + [ '[foo

                                                      }

                                                      bar', '[foo

                                                      ]bar' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + + [ '[foo

                                                      }

                                                      ', '[foo]

                                                      ' ], + [ '[foo

                                                      }

                                                      ', '[foo]

                                                      ' ], + [ '[foo

                                                      }

                                                      bar', '[foo

                                                      ]bar' ], + [ '[foo

                                                      bar}

                                                      ', '[foo

                                                      bar]

                                                      ' ], + [ '

                                                      [foo

                                                      }', '

                                                      [foo]

                                                      ' ], + [ '

                                                      [foo

                                                      }bar', '

                                                      [foo

                                                      }bar' ], + + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + [ '[foo

                                                      }bar', '[foo

                                                      }bar' ], + +//*/ + +//* + // + // IE does not accept our expected selection for the next 3 tests + // + // TODO: convert collapsed selections "{}" to "[]" + // FIXME: void elements + // + [ '
                                                      {

                                                      }

                                                      ', '{}

                                                      ' ], + [ '
                                                      {

                                                      }

                                                      ', '{}

                                                      ' ], + [ '
                                                      {

                                                      }

                                                      ', '{}

                                                      ' ] + + [ 'foo{}', 'foo{}' ], + [ 'foo{}', 'foo{}' ], + [ '{}', '{}' ], + + [ '

                                                      {}

                                                      ', '{}

                                                      ' ], + [ '

                                                      {}

                                                      ', '{}

                                                      ' ], + [ '{}', '{}' ], + [ '

                                                      {}

                                                      ', '{}

                                                      ' ], + [ '{}', '{}' ], + [ '

                                                      {}', '{}

                                                      ' ], + [ '

                                                      {}', '{}

                                                      ' ], + + [ '{

                                                      }', '{}

                                                      ' ], + [ '

                                                      {

                                                      }', '{}

                                                      ' ], + [ 'foo

                                                      {

                                                      }', 'foo[]

                                                      ' ], + +//*/ + + /* + // FIXME void elements + + [ '

                                                      [foo

                                                      bar]

                                                      baz

                                                      ', '

                                                      [foo

                                                      bar]

                                                      baz

                                                      ' ], + [ '

                                                      [foo

                                                      ]bar

                                                      baz

                                                      ', '

                                                      [foo

                                                      }bar

                                                      baz

                                                      ' ], + [ '

                                                      foo[

                                                      ]bar

                                                      baz

                                                      ', '

                                                      foo[

                                                      }bar

                                                      baz

                                                      ' ], + + [ '

                                                      foo

                                                      {bar

                                                      }baz

                                                      ', '

                                                      foo

                                                      [bar

                                                      }baz

                                                      ' ] + + [ 'foo

                                                      {bar}

                                                      baz', 'foo

                                                      [bar]

                                                      baz' ], + [ 'foo

                                                      {bar}

                                                      baz', 'foo

                                                      [bar]

                                                      baz' ], + [ 'foo

                                                      {
                                                      bar}

                                                      baz', 'foo

                                                      {
                                                      bar]

                                                      baz' ], + + [ '

                                                      foo[


                                                      ]baz

                                                      ', '

                                                      foo[


                                                      }baz

                                                      ' ], + [ '

                                                      foo[


                                                      }baz

                                                      ', '

                                                      foo[


                                                      }baz

                                                      ' ], + [ '

                                                      foo[


                                                      }

                                                      baz

                                                      ', '

                                                      foo[


                                                      }baz

                                                      ' ], + [ '

                                                      foo[

                                                      }

                                                      baz

                                                      ', '

                                                      foo[

                                                      }

                                                      baz

                                                      ' ], + [ '

                                                      foo{


                                                      ]baz

                                                      ', '

                                                      foo[


                                                      }baz

                                                      ' ], + [ '

                                                      foo

                                                      {

                                                      ]baz

                                                      ', '

                                                      foo

                                                      {

                                                      }baz

                                                      ' ], + [ '

                                                      foo


                                                      {

                                                      ]baz

                                                      ', '

                                                      foo


                                                      []baz

                                                      ' ] + + [ '{foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      foo

                                                      }bar

                                                      ', '

                                                      [foo

                                                      }bar

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '

                                                      [}foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '

                                                      {}foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{

                                                      }foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{}

                                                      foo

                                                      ', '

                                                      []foo

                                                      ' ], + [ '{}

                                                      bar

                                                      ', '

                                                      []bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + [ '[foo

                                                      }bar

                                                      ', '[foo

                                                      }bar

                                                      ' ], + + //*/ + [] + ], + + flowTests = [], + + flowHostTests = [ + +//* + + [ '
                                                      foo[

                                                      ]baz
                                                      ', '
                                                      foo[

                                                      }baz
                                                      ' ], + [ '
                                                      foo[

                                                      }baz
                                                      ', '
                                                      foo[

                                                      }baz
                                                      ' ], + [ '
                                                      foo[

                                                      }
                                                      baz
                                                      ', '
                                                      foo[

                                                      }baz
                                                      ' ], + [ '
                                                      foo[
                                                      }
                                                      baz
                                                      ', '
                                                      foo[
                                                      }
                                                      baz
                                                      ' ], + [ '
                                                      foo{

                                                      ]baz
                                                      ', '
                                                      foo[

                                                      }baz
                                                      ' ], + [ '
                                                      foo
                                                      {
                                                      ]baz
                                                      ', '
                                                      foo
                                                      {
                                                      }baz
                                                      ' ], + [ '
                                                      foo

                                                      {
                                                      ]baz
                                                      ', '
                                                      foo

                                                      []baz
                                                      ' ], + +//*/ + +//* + [ 'foo{
                                                      bar]
                                                      ', 'foo[
                                                      bar]
                                                      ' ], + [ 'foo
                                                      {
                                                      bar]
                                                      ', 'foo
                                                      [bar]
                                                      ' ], + [ 'foo
                                                      {
                                                      bar}
                                                      ', 'foo
                                                      [bar]
                                                      ' ], + [ 'foo
                                                      {
                                                      bar
                                                      }
                                                      ', 'foo
                                                      [bar]
                                                      ' ] +//*/ + + // not a different flow test [ 'foo{
                                                      }bar
                                                      baz', 'foo[
                                                      }bar
                                                      baz' ], + // [ 'foo
                                                      {
                                                      }bar
                                                      baz', 'foo
                                                      []bar
                                                      baz' ], + // [ 'foo{
                                                      ]bar
                                                      baz', 'foo[
                                                      }bar
                                                      baz' ], + // [ 'foo
                                                      {
                                                      ]bar
                                                      baz', 'foo
                                                      []bar
                                                      baz' ], + // [ 'foo
                                                      {

                                                      bar}
                                                      baz', 'foo
                                                      {
                                                      bar]
                                                      baz' ] + + ], + // dl, dd, dt not covered by tests + // http://www.w3.org/wiki/HTML_lists#Nesting_lists + listTests = [ + [ 'foo
                                                      1. [bar]
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo
                                                      1. bar]
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo
                                                      1. [bar}
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo
                                                      1. {bar}
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo
                                                      1. bar]
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo
                                                      1. bar
                                                      baz', 'foo
                                                      1. [bar]
                                                      baz' ], + [ 'foo[
                                                      1. bar
                                                      ]baz', 'foo[
                                                      1. bar
                                                      ]baz' ], + [ 'foo{
                                                      1. bar
                                                      }baz', 'foo[
                                                      1. bar
                                                      ]baz' ], + [ 'foo[
                                                      1. bar]
                                                      baz', 'foo[
                                                      1. bar]
                                                      baz' ], + [ 'foo{
                                                      1. bar}
                                                      baz', 'foo[
                                                      1. bar]
                                                      baz' ], + [ 'foo[
                                                      1. ]bar
                                                      baz', 'foo[
                                                      1. }bar
                                                      baz' ], + [ 'foo{
                                                      1. }bar
                                                      baz', 'foo[
                                                      1. }bar
                                                      baz' ], + [ 'foo
                                                      1. bar[
                                                      2. ]bar
                                                      baz', 'foo
                                                      1. bar[
                                                      2. }bar
                                                      baz' ], + [ 'foo
                                                      1. bar{
                                                      2. }bar
                                                      baz', 'foo
                                                      1. bar[
                                                      2. }bar
                                                      baz' ], + [ 'foo
                                                      1. [bar
                                                        1. ]bam
                                                      baz', 'foo
                                                      1. [bar
                                                        1. }bam
                                                      baz' ] + ]; + /* tables are handled differently in Aloha Editor as every td, th's content is wrapped in a div. + tableTests = [ + 'foo[
                                                      bar]baz
                                                      ', + ['foo
                                                      barbaz
                                                      ', 'foo{
                                                      barbaz
                                                      }' ], + ['foo
                                                      barbaz
                                                      ', 'foo
                                                      [barbaz
                                                      }' ], + ['foo
                                                      barbaz
                                                      ', 'foo
                                                      [barbaz
                                                      }' ], + ['foo
                                                      {barbaz}
                                                      ', 'foo
                                                      [barbaz]
                                                      ' ], + ['foo
                                                      {barbaz}bamboo
                                                      ', 'foo
                                                      [barbaz]bamboo
                                                      ' ], + ['foo
                                                      {barbaz}bamboo
                                                      ', 'foo
                                                      [barbaz}bamboo
                                                      ' ] + ] + */ + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + + var + editable = Aloha.jQuery('#edit'), + converter = Aloha.jQuery('
                                                      '), + tests = [], + /* + * Void elements http://dev.w3.org/html5/markup/spec.html#void-elements + * + * area, base, br, col, command, embed, hr, img, input, + * keygen, link, meta, param, source, track, wbr + * + * - area, base,col, command, embed, keygen, link, meta, param, + * source, track, wbr are not covered by tests + * + */ + voidElements = [ 'hr', 'img', 'input' ], + /* + * All phrasing elements http://dev.w3.org/html5/markup/common-models.html#common.elem.phrasing + * + * a, em, strong, small, mark, abbr, dfn, i, b, s, u, code, + * var, samp, kbd, sup, sub, q, cite, span, bdo, bdi, br, + * wbr, ins, del, img, embed, object, iframe, map, area, + * script, noscript, ruby, video, audio, input, textarea, + * select, button, label, output, datalist, keygen, progress, + * command, canvas, time, meter + * + * - br, img, embed is tested in void elements tests + * - object, iframe, map, area, script, noscript, ruby, + * - video, audio, input, textarea, select, button, label, + * output, datalist, keygen, progress, command, canvas, time, + * meter are not covered by tests + * + */ + phrasingElements = [ 'a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', + 'i', 'b', 's', 'u', 'code', 'var', 'samp', 'kbd', 'sup', + 'sub', 'q', 'cite', 'bdo', 'bdi', 'ins', 'del', + 'ruby', 'time' ], + /* + * All flow elements http://dev.w3.org/html5/markup/common-models.html#common.elem.flow + * + * phrasing elements, a, p, hr, pre, ul, ol, dl, + * div, h1, h2, h3, h4, h5, h6, hgroup, address, + * blockquote, ins, del, object, map, noscript, section, + * nav, article, aside, header, footer, video, audio, + * figure, table, form, fieldset, menu, canvas, details + * + * - a, ins, del is tested in pharasing + * - hr is tested in void tests + * - ul, ol, dl are tested in list tests + * - object, map, noscript, section, nav, article, aside, + * header, footer, video, audio, figure, table, form, fieldset, + * menu, canvas, details are not covered by tests + * + */ + flowElements = [ 'pre', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'address', 'blockquote' ], + flowHostElements = [ 'address', 'blockquote' ], + newTests, + newTest; + + function convertTests(replaceTag, newTag, tests) { + newTests = []; + for (var i = 0; i < tests.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + if (jQuery.isArray(tests[i])) { + newTest = []; + newTest[0] = tests[i][0].replace(replaceTag, newTag); + newTest[1] = tests[i][1].replace(replaceTag, newTag); + } else { + newTest = tests[i].replace(replaceTag, newTag); + } + newTests.push(newTest); + } + return newTests; + }; + + tests = tests.concat( + + correctRangeTests, + + // newIETests, + + // specialTests, + + // voidTests, //
                                                      + + // phrasingTests, + + // flowTests, //

                                                      + + // flowHostTests, // flow elements host + + // listTests, + + [] // I am here to prevent trailing commas and make your life easier :D + ); + + for (var i = 0; i < voidElements.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + // tests = tests.concat( convertTests ( /br/g, voidElements[i], voidTests ) ); + } + // full phrasing tests + for (var i = 0; i < phrasingElements.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + // tests = tests.concat( convertTests ( /span/g, phrasingElements[i], phrasingTests ) ); + } + for (var i = 0; i < phrasingElements.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + // even if specified in HTML5 a cannot nest all phrasing (itself) + if (phrasingElements[i] == 'a') { + continue; + } + // tests = tests.concat( convertTests ( /span/g, phrasingElements[i], nestedPhrasingTests ) ); + } + // full flow tests + for (var i = 0; i < flowElements.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + //tests = tests.concat( convertTests ( /p/g, flowElements[i], flowTests ) ); + } + // full flow host tests + for (var i = 0; i < flowHostElements.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + // tests = tests.concat( convertTests ( /div/g, flowHostElements[i], flowHostTests ) ); + } + + // aloha'fy the editable + editable.aloha(); + + for (var i = tests_start; i < tests_stop && i < tests.length; i++) { + // ie hack :/ + if (!tests[i]) { + continue; + } + var + start = typeof tests[i] === 'string' ? tests[i] : tests[i][0], + expected = typeof tests[i] === 'string' ? tests[i] : tests[i][1], + desc = converter.text(start).html(); // + ' -> ' + converter.text(expected).html(); + + module('Selection ' + (i + 1) + ' : ' + desc, { + setup:function () { + // fill the editable area with the start value + editable.html(this.start); + editable.focus(); + }, + teardown:function () { + // goodbye + } + }); + + test(name, {start:start, expected:expected}, function () { + var + // place the selection (and remove the selection marker) + startRange = TestUtils.addRange(editable), + endRange, + result; + + // remove all ranges + Aloha.getSelection().removeAllRanges(); + + // create a range object + var testRange = Aloha.createRange(); + + // set the range + testRange.setStart(startRange.startContainer, startRange.startOffset); + testRange.setEnd(startRange.endContainer, startRange.endOffset); + + // place the marker at the selection + Aloha.getSelection().addRange(testRange); + + // get the selected Range + endRange = Aloha.getSelection().getRangeAt(0); + + // add markers to selection + TestUtils.addBrackets(endRange); + + // get the content of the editable + result = Aloha.editables[ 0 ].getContents(); + + // IE creates benign new lines, which cause false failures. + // We therefore remove them for our unit tests + result = result.replace(/[\s\n\r]/g, ''); + + // compare the result with the expected result + deepEqual(result.toLowerCase(), this.expected, 'Check Operation Result'); + }); + } + }); + }); diff --git a/modules/core/aloha/static/test/unit/table.html b/modules/core/aloha/static/test/unit/table.html new file mode 100644 index 000000000..aaa0c91c4 --- /dev/null +++ b/modules/core/aloha/static/test/unit/table.html @@ -0,0 +1,47 @@ + + + + + Aloha Editor table tests + + + + + + + + + + + + + + + + + + + + +

                                                      Aloha Editor table tests

                                                      + +

                                                      + +
                                                      +

                                                      +
                                                        +
                                                        +
                                                        +
                                                        + + diff --git a/modules/core/aloha/static/test/unit/tabletests.js b/modules/core/aloha/static/test/unit/tabletests.js new file mode 100644 index 000000000..8ba49d3c0 --- /dev/null +++ b/modules/core/aloha/static/test/unit/tabletests.js @@ -0,0 +1,795 @@ +/* tabletests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [ 'testutils', 'htmlbeautifier' ], + function (TestUtils) { + 'use strict'; + + /** + * Helper function to create an array of "selected" td's, which are marked + * with the class "aloha-cell-selected" + * + * @param {Table} table + * @return {Array} set of selected td's + */ + function getSelectedCells(table) { + var cells = [], + $cells = table.obj.find('.aloha-cell-selected'); + $cells.each(function () { + cells.push(this); + }); + return cells; + }; + + // + // NB: + // --------------------------------------------------------------------- + // selectRow and selectColumns has an issue where index 0 selects the + // helper row/column instead of the first editable row/column. + // All following tests will work around this fault by using 1-indexing + // with selectcolumns rather than 0 based indexing. + // Where this is done, we note that we have "corrected" the index. + // --------------------------------------------------------------------- + // + + var tests = [ + + { module:'Activation/deactivation' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Activate and deactivate a table', + start:'
                                                        foo
                                                        ', + expected:'
                                                        foo
                                                        ', + operation:function (table) { + } + }, + + { module:'makeClean' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'makeClean', + start:'\ + \ +
                                                        test
                                                        ', + expected:'\ + \ +
                                                        test
                                                        \ + ', + operation:function (table) { + var clone = jQuery('#editable').clone(false); + + clone.find('table') + .addClass('clone') + .removeClass('original'); + + table.tablePlugin.makeClean(clone); + + jQuery('#editable').append( + '' + ); + } + }, + + { module:'Row/column selection' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Select column by index (corrected to 1-index)', + start:'
                                                        foo
                                                        ', + expected:'
                                                        bar
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 1 ]); + table.obj.find('.aloha-cell-selected') + .html('bar') + .removeAttr('class') + .removeAttr('style'); + } + }, + + { + exclude:false, + desc:'Select row by index (corrected to 1-index)', + start:'
                                                        foo
                                                        ', + expected:'
                                                        bar
                                                        ', + operation:function (table) { + table.selection.selectRows([ 1 ]); + table.obj.find('.aloha-cell-selected') + .html('bar') + .removeAttr('class') + .removeAttr('style'); + } + }, + + { module:'Inserting/removing columns' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Insert column right of column at index 0 (corrected to 1)', + start:'\ + \ +
                                                        foobar
                                                        ', + expected:'\ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 1 ]); + table.addColumnsRight(); + } + }, + + { + exclude:false, + desc:'Insert column right of column at index 1 (corrected to 2)', + start:'\ + \ +
                                                        foobar
                                                        ', + expected:'\ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.addColumnsLeft(); + } + }, + + { + exclude:false, + desc:'Insert column left of 1st column (column 0, corrected to 1)', + start:'\ + \ +
                                                        foo
                                                        ', + expected:'\ + \ +
                                                         foo
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 1 ]); + table.addColumnsLeft(); + } + }, + + { + exclude:false, + desc:'Add column left of 2nd column (corrected to 2)', + start:'\ + \ + \ +
                                                        foobar
                                                        foo1bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                        foo1 bar2
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.addColumnsLeft(); + } + }, + + { + exclude:false, + desc:'Column selection with merged cells ', + start:'\ + \ + \ +
                                                        foo1 bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 bar1
                                                        foo2was selected
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.obj.find('.aloha-cell-selected') + .html('was selected') + .removeAttr('class') + .removeAttr('style'); + } + }, + + { + exclude:false, + desc:'Insert column before column 2, with merged cells (corrected to 2)', + start:'\ + \ + \ +
                                                        foo1 bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 bar1 
                                                        foo2 bar2
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.addColumnsLeft(); + } + }, + + { + exclude:false, + desc:'Remove 2nd column (corrected to 2)', + start:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1
                                                        foo2
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.deleteColumns(); + } + }, + + { + exclude:false, + desc:'Remove 2nd column (corrected to 2) of merged row', + start:'\ + \ + \ +
                                                        foo1 bar1 test1
                                                        foo2bar2test2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 bar1 test1
                                                        foo2test2
                                                        ', + operation:function (table) { + table.selection.selectColumns([ 2 ]); + table.deleteColumns(); + } + }, + + { module:'Inserting/removing rows' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Add row at index 0 (corrected to 1)', + start:'\ + \ +
                                                        foo
                                                        ', + expected:'\ + \ + \ +
                                                         
                                                        foo
                                                        ', + operation:function (table) { + table.addRow(1); + } + }, + + { + exclude:false, + desc:'Add row at index 1 (corrected to 2)', + start:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + expected:'\ + \ + \ + \ +
                                                        foo
                                                         
                                                        bar
                                                        ', + operation:function (table) { + table.addRow(2); + } + }, + + { module:'Merging cells' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Basic columns merging', + start:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merging columns with inner tags', + start:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge a single cell', + start:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge column', + start:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 foo2bar1
                                                        bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge column, with inner tags', + start:'\ + \ + \ +
                                                        foo
                                                        bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge a row', + start:'\ + \ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 bar1
                                                        foo2bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge a 2x2 selection', + start:'\ + \ + \ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        \ + foo1 bar1 foo2 bar2\ +
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Merge a 2x2 selection, with inner tags', + start:'\ + \ + \ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        \ + foo1 bar1 foo2 bar2\ +
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Prevent merging of non-rectangular selection', + start:'\ + \ + \ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { + exclude:false, + desc:'Prevent attempt to merge an alreay merged cell', + start:'\ + \ + \ +
                                                        foo bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.mergeCells(); + } + }, + + { module:'Splitting merged cells' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Split a table with a single merged cell', + start:'\ + \ + \ +
                                                        foo bar
                                                        ', + expected:'\ + \ + \ +
                                                        foo bar
                                                         
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.splitCells(); + } + }, + + { + exclude:false, + desc:'Split a 2x2 merged cell', + start:'\ + \ + \ + \ +
                                                        foo1 foo2bar1
                                                        bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 foo2bar1
                                                         bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.splitCells(); + } + }, + + { + exclude:false, + desc:'Split 2 merged cell, simultaneosly', + start:'\ + \ + \ + \ + \ +
                                                        foo1 foo2bar1 bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1 foo2bar1 bar2
                                                          
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.selection.splitCells(); + } + }, + + { module:'Transforming cells to headers' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Transform row as table header', + start:'\ + \ + \ + \ + \ +
                                                        foobar
                                                        ', + expected:'\ + \ + \ + \ + \ +
                                                        foobar
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.tablePlugin.rowHeader.onclick(); + } + }, + + { + exclude:false, + desc:'Transform column as table header', + start:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.tablePlugin.columnHeader.onclick(); + } + }, + + { + exclude:false, + desc:'Toggle header to td cell', + start:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + expected:'\ + \ + \ +
                                                        foo1bar1
                                                        foo2bar2
                                                        ', + operation:function (table) { + table.selection.selectedCells = getSelectedCells(table); + table.tablePlugin.columnHeader.onclick(); + } + }, + + { module:'Nested tables' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Nested tables', + start:'\ + \ +
                                                        \ + \ + \ +
                                                        foo
                                                        \ +
                                                        ', + expected:'\ + \ +
                                                        \ + \ + \ +
                                                        foo
                                                        \ +
                                                        ', + operation:function () { + } + }, + + { module:'Aligning columns of unbalanced table test' }, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'With rowspan', + start:'\ + \ + \ +
                                                        ', + expected:'\ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { + exclude:false, + desc:'With rowspan', + start:'\ + \ + \ +
                                                        ', + expected:'\ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { + exclude:false, + desc:'With no rowspan and colspan', + start:'\ + \ + \ +
                                                        ', + expected:'\ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { + exclude:false, + desc:'With colspan', + start:'\ + \ + \ +
                                                        ', + expected:'\ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { + exclude:false, + desc:'With colspan', + start:'\ + \ + \ + \ +
                                                        ', + expected:'\ + \ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { + exclude:false, + desc:'Removing redundant colspan="1" attribute', + start:'\ + \ + \ +
                                                        ', + expected:'\ + \ + \ +
                                                        ', + operation:function () { + } + }, + + { exclude:true } // ... just for catching trailing commas + ]; + + Aloha.ready(function () { + var TablePlugin = Aloha.require('table/table-plugin'), + jQuery = Aloha.jQuery, + editable = jQuery('#editable'), + testcase, + start, + expected; + + for (var i = 0; i < tests.length; i++) { + testcase = tests[ i ]; + + if (testcase.exclude === true) { + continue; // comment in to run all tests + } + + if (testcase.module) { + module(testcase.module.toUpperCase() + ' :'); + continue; + } + + start = style_html(testcase.start); + expected = style_html(testcase.expected); + + // Place test contents into our editable, and activate the editable + editable.html(start).aloha(); + + if (typeof testcase.operation == 'function') { + editable + .mousedown()// tigger the aloha-editable-activated event + .mouseup()// this is needed to get the table plugin to deactivate correctly + .find('table') + .mousedown(); + testcase.operation(TablePlugin.activeTable); + } + + editable.mahalo(); + + test( + ( testcase.desc || 'Test' ).toUpperCase(), + { start:start, expected:expected }, + function () { + var result = editable.html().toLowerCase(); + + // Strip away the id added to the table tag + // Internet Explorer does not have quotes around attribute + // values, so we need to add them + // Normalize the order of colspan and rowspan attributes + + result = result.replace( + /([\w-]+)\s*=\s*([\w-]+)([\s>])/g, + function (str, $n, $v, $e, offset, s) { + return $n + '="' + $v + '"' + $e; + } + ).replace( + /()/ig, + '$1$2' + ).replace( + /(rowspan=\"[^\"]+\") (colspan=\"[^\"+]\")/ig, + '$2 $1' + ); + + result = style_html(result); + deepEqual(result, expected, 'Check Operation Result'); + } + ); + } + }); + }); diff --git a/modules/core/aloha/static/test/unit/testutils.js b/modules/core/aloha/static/test/unit/testutils.js new file mode 100644 index 000000000..d6f2bd927 --- /dev/null +++ b/modules/core/aloha/static/test/unit/testutils.js @@ -0,0 +1,502 @@ +/* testutils.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +window.TestUtils = window.TestUtils || {}; + +define(['jquery', '../../lib/aloha/ecma5shims'], function (jQuery, $_) { + 'use strict'; + + /** + * TestUtils class + */ + TestUtils = jQuery.extend(true, TestUtils, { + /** + * Create a collapsed range in the given container at the given offset + * @param container container DOM element + * @param offset offset in the container + * @return the GENTICS.Utils.RangeObject + */ + createCollapsedRange:function (container, offset) { + var range = new GENTICS.Utils.RangeObject({ + startContainer:container, + startOffset:offset, + endContainer:container, + endOffset:offset + }); + range.correctRange(); + return range; + }, + + /** + * Set the cursor at the given position in the editable + * @param editable editable jQuery object + * @param container container DOM element + * @param offset offset in the container + * @return the GENTICS.Utils.RangeObject + */ + setCursor:function (editable, container, offset) { + var range = this.createCollapsedRange(container, offset); + editable.focus(); + range.select(); + Aloha.Selection.updateSelection(); + return range; + }, + + /** + * Helper function for generating ranges. The range will be stored as selection in Aloha. + * @param startContainer node where the selection starts + * @param startOffset within the startContainer + * @param endContainer node where the selection ends + * @param endOffset within endContainer + * @return range + */ + generateRange:function (startContainer, startOffset, endContainer, endOffset) { + var rangeObject = new Aloha.Selection.SelectionRange(); + Aloha.Selection.rangeObject = rangeObject; + + // start and end container have to be text nodes + rangeObject.startContainer = startContainer; + rangeObject.endContainer = endContainer; + rangeObject.startOffset = startOffset; + rangeObject.endOffset = endOffset; + + rangeObject.update(); + return rangeObject; + }, + + /** + * Simulate pressing enter in the given editable + * @param editable jQuery object + * @param shiftKey true when the shift-key shall be pressed, false if not + */ + pressEnter:function (editable, shiftKey) { + if (shiftKey) { + editable.simulate('keydown', {keyCode:13, shiftKey:true}); + editable.simulate('keyup', {keyCode:13, shiftKey:true}); + } else { + editable.simulate('keydown', {keyCode:13}); + editable.simulate('keyup', {keyCode:13}); + } + + // finally we need to update the aloha selection (which is normally done automatically) + Aloha.Selection.updateSelection(); + }, + + /** + * Simulate pressing backspace in the given editable + * @param editable jQuery object + */ + pressBackspace:function (editable) { + editable.simulate('keydown', {keyCode:8}); + editable.simulate('keyup', {keyCode:8}); + }, + + /** + * Apply the given markup to the given range. This will either + * add or remove the markup (depending on whether the markup is + * currently active at the start of the range) + * @param editable editable as jQuery object + * @param rangeObject range object + * @param markup as jQuery object + * @param nesting true when nesting of the markup is allowed, false if not + */ + applyMarkup:function (editable, rangeObject, markup, nesting) { + var markupIsApplied = false; + rangeObject.clearCaches(); + rangeObject.updateMarkupEffectiveAtStart(); + + for (var i = 0; i < rangeObject.markupEffectiveAtStart.length; i++) { + var effectiveMarkup = rangeObject.markupEffectiveAtStart[ i ]; + if (Aloha.Selection.standardTextLevelSemanticsComparator(effectiveMarkup, markup)) { + markupIsApplied = true; + } + } + + if (markupIsApplied) { + GENTICS.Utils.Dom.removeMarkup(rangeObject, markup, editable); + } else { + GENTICS.Utils.Dom.addMarkup(rangeObject, markup, nesting); + } + rangeObject.correctRange(); + rangeObject.select(); + rangeObject.clearCaches(); + rangeObject.updateMarkupEffectiveAtStart(); + }, + + /** + * Remove the given markup from the given range. + * @param editable editable as jQuery object + * @param rangeObject range object + * @param markup as jQuery object + */ + removeMarkup:function (editable, rangeObject, markup) { + GENTICS.Utils.Dom.removeMarkup(rangeObject, markup, editable); + rangeObject.correctRange(); + rangeObject.select(); + rangeObject.clearCaches(); + rangeObject.updateMarkupEffectiveAtStart(); + }, + + /** + * Transform the selection marker into a range and remove the marker. + * @param editable editable, which should contain selection markers [] + * @return range + */ + rangeFromMarker:function (editable) { + var + text, + offset, + rangeObject = new Aloha.Selection.SelectionRange(); + + $_(editable.textNodes()).filter(function () { + return this.nodeType == 3 && this.nodeValue.indexOf('[') >= 0; + }).each(function () { + text = this.nodeValue; + offset = text.indexOf('['); + this.nodeValue = text.substring(0, offset) + text.substring(offset + 1); + rangeObject.startContainer = this; + rangeObject.startOffset = offset; + }); + + $_(editable.textNodes()).filter(function () { + return this.nodeType == 3 && this.nodeValue.indexOf(']') >= 0; + }).each(function () { + text = this.nodeValue; + offset = text.indexOf(']'); + this.nodeValue = text.substring(0, offset) + text.substring(offset + 1); + rangeObject.endContainer = this; + rangeObject.endOffset = offset; + }); + + return rangeObject; + }, + /** + * Transform the selection into a selection marker. + * @void + */ + markerFromSelection:function () { + var + range = new Aloha.RangeObject(), + insertMarker = function (node, offset, marker) { + var + text; + if (node.nodeType == 3) { + text = node.nodeValue; + range.endContainer.nodeValue = text.substring(0, offset) + marker + text.substring(offset); + } else { + // insert text node before endNode + jQuery(node).contents()[offset].append(']'); + } + }; + + range.initializeFromUserSelection(); + + insertMarker(range.endContainer, range.endOffset, ']'); + insertMarker(range.startContainer, range.startOffset, '['); + }, + + /** + * Parses selection markers in the innerHTML of the given element and + * creates a range object whose start and end determined from these + * selection markers. + * + * @param {editable} - DOM Node element containing two selection + * markers. Exactly one of these two markers should + * be a start marker string (ie: "[", "{", or + * "data-start"), and one should be an end marker + * string (ie: "]", "}", "data-end"). + * + * @param {Object: range} Range object + */ + addRange:function (editable) { + function nextNode(node) { + if (node.hasChildNodes()) { + return node.firstChild; + } + return nextNodeDescendants(node); + }; + + function nextNodeDescendants(node) { + while (node && !node.nextSibling) { + node = node.parentNode; + } + if (!node) { + return null; + } + return node.nextSibling; + }; + + function getNodeIndex(node) { + var ret = 0; + while (node.previousSibling) { + ret++; + node = node.previousSibling; + } + return ret; + }; + + var html = editable.html(); + // A variety of checks to avoid simple errors. Not foolproof, of course. + var re = /\{|\[|data-start/g; + var markers = []; + var marker; + while (marker = re.exec(html)) { + markers.push(marker); + } + if (markers.length != 1) { + throw "Need exactly one start marker ([ or { or data-start), found " + markers.length; + } + + var re = /\}|\]|data-end/g; + var markers = []; + var marker; + while (marker = re.exec(html)) { + markers.push(marker); + } + if (markers.length != 1) { + throw "Need exactly one end marker (] or } or data-end), found " + markers.length; + } + + var node = editable[0]; + + var startNode, startOffset, endNode, endOffset; + + // For braces that don't lie inside text nodes, we can't just set + // innerHTML, because that might disturb the DOM. For instance, if the + // brace is right before a , it could get moved outside the table + // entirely, which messes everything up pretty badly. So we instead + // allow using data attributes: data-start and data-end on the start and + // end nodes, with a numeric value indicating the offset. This format + // doesn't allow the parent div to be a start or end node, but in that case + // you can always use the curly braces. + // Lakshan: changed from querySelector to use jQuery selecotrs since former + // doesn't work on IE7 + if (jQuery(node).find("[data-start]")[0]) { + startNode = jQuery(node).find("[data-start]")[0]; + startOffset = startNode.getAttribute("data-start"); + startNode.removeAttribute("data-start"); + } + if (jQuery(node).find("[data-end]")[0]) { + endNode = jQuery(node).find("[data-end]")[0]; + endOffset = endNode.getAttribute("data-end"); + endNode.removeAttribute("data-end"); + } + + var cur = node; + while (true) { + if (!cur || (cur != node && !($_.compareDocumentPosition(cur, node) & $_.Node.DOCUMENT_POSITION_CONTAINS))) { + break; + } + + if (cur.nodeType != $_.Node.TEXT_NODE) { + cur = nextNode(cur); + continue; + } + + var data = cur.data.replace(/[\]\}]/g, ""); + var startIdx = data.indexOf("["); + + data = cur.data.replace(/[\[\{]/g, ""); + var endIdx = data.indexOf("]"); + + cur.data = cur.data.replace(/[\[\]]/g, ""); + + if (startIdx != -1) { + startNode = cur; + startOffset = startIdx; + } + + if (endIdx != -1) { + endNode = cur; + endOffset = endIdx; + } + + // These are only legal as the first or last + data = cur.data.replace(/\}/g, ""); + var elStartIdx = data.indexOf("{"); + + data = cur.data.replace(/\{/g, ""); + var elEndIdx = data.indexOf("}"); + + if (elStartIdx == 0) { + startNode = cur.parentNode; + startOffset = getNodeIndex(cur); + } else if (elStartIdx != -1) { + startNode = cur.parentNode; + startOffset = getNodeIndex(cur) + 1; + } + if (elEndIdx == 0) { + endNode = cur.parentNode; + endOffset = getNodeIndex(cur); + } else if (elEndIdx != -1) { + endNode = cur.parentNode; + endOffset = getNodeIndex(cur) + 1; + } + + cur.data = cur.data.replace(/[{}]/g, ""); + if (!cur.data.length) { + if (cur == startNode || cur == endNode) { + throw "You put a square bracket where there was no text node . . ."; + } + var oldCur = cur; + cur = nextNode(cur); + oldCur.parentNode.removeChild(oldCur); + } else { + cur = nextNode(cur); + } + } + + var range = Aloha.createRange(); + range.setStart(startNode, startOffset); + range.setEnd(endNode, endOffset); + + return range; + }, + + addBrackets:function (range) { + var marker; + // Handle the collapsed case specially, to avoid confusingly getting the + // markers backwards in some cases + if (range.endContainer.nodeType == $_.Node.TEXT_NODE + || range.endContainer.nodeType == $_.Node.COMMENT_NODE) { + if (range.collapsed) { + marker = '[]' + } else { + marker = ']' + } + range.endContainer.insertData(range.endOffset, marker); + } else { + if (range.collapsed) { + marker = '{}' + } else { + marker = '}' + } + if (range.endOffset != range.endContainer.childNodes.length + && range.endContainer.childNodes[range.endOffset].nodeType == $_.Node.TEXT_NODE) { + range.endContainer.childNodes[range.endOffset].insertData(0, marker); + } else if (range.endOffset != 0 + && range.endContainer.childNodes[range.endOffset - 1].nodeType == $_.Node.TEXT_NODE) { + range.endContainer.childNodes[range.endOffset - 1].appendData(marker); + } else { + range.endContainer.insertBefore(document.createTextNode(marker), + range.endContainer.childNodes.length == range.endOffset + ? null + : range.endContainer.childNodes[range.endOffset]); + } + } + if (range.collapsed) { + return; + } + if (range.startContainer.nodeType == $_.Node.TEXT_NODE + || range.startContainer.nodeType == $_.Node.COMMENT_NODE) { + range.startContainer.insertData(range.startOffset, "["); + } else { + marker = '{'; + if (range.startOffset != range.startContainer.childNodes.length + && range.startContainer.childNodes[range.startOffset].nodeType == $_.Node.TEXT_NODE) { + range.startContainer.childNodes[range.startOffset].insertData(0, marker); + } else if (range.startOffset != 0 + && range.startContainer.childNodes[range.startOffset - 1].nodeType == $_.Node.TEXT_NODE) { + range.startContainer.childNodes[range.startOffset - 1].appendData(marker); + } else { + // Seems to serialize as I'd want even for tables . . . IE doesn't + // allow undefined to be passed as the second argument (it throws + // an exception), so we have to explicitly check the number of + // children and pass null. + range.startContainer.insertBefore(document.createTextNode(marker), + range.startContainer.childNodes.length == range.startOffset + ? null + : range.startContainer.childNodes[range.startOffset]); + } + } + }, + + /** + * Return an array containing all possible permutations of the elements in the given array + * + * @param {array} array array of elements + * @param {array} fix array of elements that need to be contained in all returned arrays + * @return {array} array containing arrays of all possible permutations + */ + permutations:function (array, fix) { + // iterate over the entries + var i, entry, newArray, subArrays, subI, permsArray = []; + for (i in array) { + if (array.hasOwnProperty(i)) { + entry = array[i]; + if (Aloha.jQuery.isArray(fix) && Aloha.jQuery.inArray(entry, fix) >= 0) { + continue; + } + newArray = Aloha.jQuery.extend([], fix); + newArray.push(entry); + permsArray.push(newArray); + subArrays = this.permutations(array, newArray); + for (subI in subArrays) { + if (subArrays.hasOwnProperty(subI)) { + permsArray.push(subArrays[subI]); + } + } + } + } + + return permsArray; + } + }); + + + /** + * Create a jQuery plugin to extract the HTML of a given jQuery object + */ + jQuery.fn.extractHTML = function (attributes) { + attributes = typeof attributes === 'undefined' ? ['class', 'id'] : attributes; + var fullResult = []; + if (typeof attr !== 'undefined') { + attributes.push(attr); + } + + jQuery.each(this, function () { + var that = jQuery(this); + var result = {}; + result.nodeName = that[0].nodeName.toLowerCase(); + fullResult.push(result); + if (that[0].nodeType == 3) { + result.text = that.text(); + } else if (that[0].nodeType == 1) { + jQuery.each(attributes, function (index, attr) { + result[attr] = that.attr(attr); + }); + var contents = that.contents(); + if (contents.length) { + result.contents = contents.extractHTML(attributes); + } + } + }); + + return fullResult; + }; + + return TestUtils; +}); diff --git a/modules/core/aloha/static/test/unit/util/arrays-tests.js b/modules/core/aloha/static/test/unit/util/arrays-tests.js new file mode 100644 index 000000000..4d9bd0c65 --- /dev/null +++ b/modules/core/aloha/static/test/unit/util/arrays-tests.js @@ -0,0 +1,37 @@ +Aloha.require(['util/arrays'], function (Arrays) { + 'use strict'; + + module('sortUnique'); + + test('loose compare', function () { + var unique = Arrays.sortUnique([ 6, 3, 6, 3, "6", 3, "9", 9, 3, 2, 1 ]); + // Either numeric or string values for "6" and "9" may be chosen + for (var i = 0; i < unique.length; i++) { + unique[ i ] = parseInt(unique[ i ]); + } + deepEqual(unique, [ 1, 2, 3, 6, 9 ]); + }); + + test('strict comparison', function () { + var unique = Arrays.sortUnique([ 6, 3, "6", 3, 6, 3, "9", 9, 3, 2, 1 ], function (a, b) { + return typeof a < typeof b ? -1 + : ( typeof a > typeof b ? 1 + : ( a < b ? -1 : ( a > b ? 1 : 0 ))); + }); + deepEqual(unique, [ 1, 2, 3, 6, 9, "6", "9" ]); + }); + + test('comparator', function () { + var unique = Arrays.sortUnique([ 7, 6, 9, 6, 9, 8 ], function (a, b) { + // Pretend 6 and 9 is equal + if (a === 9) { + a = 6; + } + if (b === 9) { + b = 6; + } + return a < b ? -1 : ( a === b ? 0 : +1 ); + }); + deepEqual(unique, [ 6, 7, 8 ]); + }); +}); diff --git a/modules/core/aloha/static/test/unit/util/dom2-tests.js b/modules/core/aloha/static/test/unit/util/dom2-tests.js new file mode 100644 index 000000000..02c037662 --- /dev/null +++ b/modules/core/aloha/static/test/unit/util/dom2-tests.js @@ -0,0 +1,29 @@ +Aloha.require(['jquery', 'util/dom2'], function ($, Dom) { + 'use strict'; + + var input = $('

                                                        ' + + 'some text' + + 'some other text' + + '

                                                        ')[0]; + + module('Dom'); + + test('attrNames', function () { + var result = Dom.attrNames($('
                                                        ')[0]); + deepEqual(result, []); + var result = Dom.attrNames($('
                                                      1. ')[0]); + deepEqual(result, ['data-attr']); + }); + + test('indexByClass', function () { + var result = Dom.indexByClass(input, {'some-class':true, 'some-class-4':true}); + deepEqual(result, {'some-class':$(input).find('.some-class').get(), + 'some-class-4':$(input).find('.some-class-4').get()}); + }); + + test('indexByName', function () { + var result = Dom.indexByName(input, ['P', 'B']); + deepEqual(result, {'P':$(input).find('p').get(), + 'B':$(input).find('b').get()}); + }); +}); diff --git a/modules/core/aloha/static/test/unit/util/index.html b/modules/core/aloha/static/test/unit/util/index.html new file mode 100644 index 000000000..12c6e381b --- /dev/null +++ b/modules/core/aloha/static/test/unit/util/index.html @@ -0,0 +1,54 @@ + + + + + Aloha Editor util Test Suite + + + + + + + + + + + + + + + + + + + + + +

                                                        Aloha Editor util Test Suite

                                                        + +

                                                        + +
                                                        +

                                                        +
                                                          +
                                                          +
                                                          +
                                                          + + diff --git a/modules/core/aloha/static/test/unit/util/strings-tests.js b/modules/core/aloha/static/test/unit/util/strings-tests.js new file mode 100644 index 000000000..914f7907f --- /dev/null +++ b/modules/core/aloha/static/test/unit/util/strings-tests.js @@ -0,0 +1,24 @@ +Aloha.require(['util/strings'], function (Strings) { + 'use strict'; + + function fromDashesToCamelCaseAndBack(dashes, expectedCamelCase) { + var camelCase = Strings.dashesToCamelCase(dashes); + var dashesAgain = Strings.camelCaseToDashes(camelCase); + equal(camelCase, expectedCamelCase); + equal(dashesAgain, dashes); + } + + module('Strings'); + test('dashesToCamelCase, camelCaseToDashes', function () { + fromDashesToCamelCaseAndBack('data-a-b', 'dataAB'); + fromDashesToCamelCaseAndBack('data-some-attr', 'dataSomeAttr'); + }); + + test('words', function () { + deepEqual(Strings.words(''), []); + deepEqual(Strings.words(' '), []); + deepEqual(Strings.words('abc'), ['abc']); + deepEqual(Strings.words(' abc def '), ['abc', 'def']); + deepEqual(Strings.words('\nabc\ndef\rghi\r\n'), ['abc', 'def', 'ghi']); + }); +}); diff --git a/modules/core/aloha/static/test/unit/util/trees-tests.js b/modules/core/aloha/static/test/unit/util/trees-tests.js new file mode 100644 index 000000000..dcaff99a2 --- /dev/null +++ b/modules/core/aloha/static/test/unit/util/trees-tests.js @@ -0,0 +1,246 @@ +Aloha.require(['jquery', 'util/trees'], function ($, Trees) { + 'use strict'; + + var tree = { + tree:[ + { array:[ 1, 2, 3 ], map:{ "a":4, "b":5, "c":6 } }, + [ + { array:[ "d", "e", "f" ], "g":7, "h":8, "i":9 } + ] + ] + }; + var leaves = [ + 1, 2, 3, 4, 5, 6, "d", "e", "f", 7, 8, 9 + ]; + var modifiedTree = { + tree:[ + { array:[ 11, 12, 13, "@" ], map:{ "a":14, "b":15, "c":16, "%":"%" }, "%":"%" }, + [ + { array:[ "D", "E", "F", "@" ], "g":17, "h":18, "i":19, "%":"%" }, + "@" + ], + "@" + ], + "%":"%" + }; + var preprunedTree = { + tree:[ + { array:[ 1, 2, 3 ], map:{ "a":4, "b":5, "c":6 } }, + [ + { array:[], "g":7, "h":8, "i":9 } + ] + ] + }; + var postprunedTree = { + tree:[ + { array:[ 1, 2, 3 ], map:{ "a":4, "b":5, "c":6 } }, + [ + { "g":7, "h":8, "i":9 } + ] + ] + }; + + function modifyLeaf(leaf) { + return 'string' === $.type(leaf) ? leaf.toUpperCase() : leaf + 10; + } + + function isModifiedLeaf(leaf) { + return "DEF".indexOf(leaf) != -1 || leaf > 10; + } + + function isLeaf(node) { + return 'string' === $.type(node) || 'number' === $.type(node); + } + + function modifyNode(node, requireModifiedLeaves) { + if (isLeaf(node)) { + if (requireModifiedLeaves !== isModifiedLeaf(node)) { + return 200; + } + return node; + } + if ('array' === $.type(node)) { + if (isLeaf(node[0]) && requireModifiedLeaves !== isModifiedLeaf(node[0])) { + return 100; + } + return node.concat("@"); + } + if ('object' === $.type(node)) { + for (var key in node) { + if (node.hasOwnProperty(key)) { + if (isLeaf(node[key]) && requireModifiedLeaves !== isModifiedLeaf(node[key])) { + return 100; + } + return $.extend({"%":"%"}, node); + } + } + return 300; + } + return null; + } + + function pruneCharsAndEmptyArrays(node, chars) { + if (isLeaf(node)) { + return chars.indexOf(node) != -1; + } else if ('array' === $.type(node)) { + return !node.length; + } else { + return false; + } + } + + module('Trees'); + + test('clone', function () { + var cloneA = Trees.clone(tree); + var cloneB = Trees.clone(tree); + deepEqual(cloneA, tree); + deepEqual(cloneB, tree); + ok(cloneA !== cloneB && cloneA !== tree && cloneB !== tree); + }); + + test('flatten', function () { + var result = Trees.flatten(tree); + result.sort(); + var sortedLeaves = leaves.slice(); + sortedLeaves.sort(); + deepEqual(result, sortedLeaves); + }); + + test('prewalk, postwalk', function () { + var premodifiedTree = Trees.prewalk(tree, function (node) { + node = modifyNode(node, false); + if (isLeaf(node)) { + node = modifyLeaf(node); + } + return node; + }); + var postmodifiedTree = Trees.postwalk(tree, function (node) { + if (isLeaf(node)) { + node = modifyLeaf(node); + } + return modifyNode(node, true); + }); + deepEqual(premodifiedTree, modifiedTree); + deepEqual(postmodifiedTree, modifiedTree); + }); + + test('preprune, postprune', function () { + var prepruned = Trees.preprune(tree, function (node) { + return pruneCharsAndEmptyArrays(node, "def"); + }); + var postpruned = Trees.postprune(tree, function (node) { + return pruneCharsAndEmptyArrays(node, "def"); + }); + deepEqual(prepruned, preprunedTree); + deepEqual(postpruned, postprunedTree); + }); + + test('simple prewalk inplace, postwalk inplace', function () { + var tree = {a:"a", b:"b", c:"c"}; + var expected = {a:"Xa", b:"Xb", c:"Xc"}; + var inputA = Trees.clone(tree); + var inputB = Trees.clone(tree); + var resultA = Trees.prewalk(inputA, function (node) { + if (typeof node === 'string') { + node = 'X' + node; + } + return node; + }, true); + var resultB = Trees.postwalk(inputB, function (node) { + if (typeof node === 'string') { + node = 'X' + node; + } + return node; + }, true); + deepEqual(resultA, inputA); + deepEqual(resultA, expected); + deepEqual(resultB, inputB); + deepEqual(resultB, expected); + }); + + test('more complex prewalk inplace, postwalk inplace', function () { + var tree = {a:[ + {one:"one", two:"two"}, + {three:"three", four:"four"} + ], + b:{alpha:["beta", ["gamma"]], + delta:"delta"}}; + var expected = {a:[ + {one:"Zone", two:"Ztwo", X:"ZXX"}, + {three:"Zthree", four:"Zfour", X:"ZXX"}, + "ZXX" + ], + b:{alpha:["Zbeta", ["Zgamma", "ZXX"], "ZXX"], + delta:"Zdelta", + X:"ZXX"}, + X:"ZXX"}; + + var inputA = Trees.clone(tree); + var resultA = Trees.prewalk(inputA, function (node) { + if ($.type(node) === 'array') { + node.push("XX"); + } else if ($.type(node) === 'object') { + node.X = "XX"; + } else { + node = "Z" + node; + } + return node; + }, true); + deepEqual(resultA, expected); + deepEqual(resultA, inputA); + }); + + test('prepruneNode, postpruneNode', function () { + var tree = $('
                                                          ')[0]; + var expected = $('
                                                          ')[0].outerHTML; + var result; + result = Trees.prepruneDom(tree, function (node) { + return node.nodeName === 'B'; + }); + equal(result.outerHTML, expected); + notEqual(result.outerHTML, tree.outerHTML); + result = Trees.postpruneDom(tree, function (node) { + return node.nodeName === 'B'; + }); + equal(result.outerHTML, expected); + notEqual(result.outerHTML, tree.outerHTML); + }); + + test('prewalkDom inplace, postwalkDom inplace', function () { + var tree = $('

                                                          ')[0]; + var expected = $('
                                                          ' + + 'X' + + 'X' + + '' + + '

                                                          ' + + 'X' + + 'X' + + '

                                                          ' + + '
                                                          XX
                                                          ' + + 'X
                                                          X
                                                          ')[0]; + + var inputA = tree.cloneNode(true); + var descendedIntoModifiedNode = 0; + var resultA = Trees.prewalkDom(inputA, function (node) { + if ($('X')[0].outerHTML !== node.outerHTML) { + $(node).append('X'); + } else { + descendedIntoModifiedNode += 1; + } + return node; + }, true); + + var inputB = tree.cloneNode(true); + var resultB = Trees.postwalkDom(inputB, function (node) { + $(node).append('X'); + return node; + }, true); + + equal(descendedIntoModifiedNode, 8); + equal(resultA.outerHTML, expected.outerHTML); + equal(resultB.outerHTML, expected.outerHTML); + equal(resultA.outerHTML, inputA.outerHTML); + equal(resultB.outerHTML, inputB.outerHTML); + }); +}); diff --git a/modules/core/aloha/static/test/unit/wailangrepo.html b/modules/core/aloha/static/test/unit/wailangrepo.html new file mode 100644 index 000000000..1e1662b66 --- /dev/null +++ b/modules/core/aloha/static/test/unit/wailangrepo.html @@ -0,0 +1,63 @@ + + + + + Aloha Editor Core Test Suite + + + + + + + + + + + + + + + + + + + + +

                                                          Aloha Editor Wai-Lang Plugin Test Suite

                                                          + +

                                                          + +
                                                          +

                                                          +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + diff --git a/modules/core/aloha/static/test/unit/wailangrepotests.js b/modules/core/aloha/static/test/unit/wailangrepotests.js new file mode 100644 index 000000000..131ab759d --- /dev/null +++ b/modules/core/aloha/static/test/unit/wailangrepotests.js @@ -0,0 +1,109 @@ +/*! + * This file is part of Aloha Editor + * Author & Copyright (c) 2010 Gentics Software GmbH, aloha@gentics.com + * Licensed unter the terms of http://www.aloha-editor.com/license.html + */ + +define( + [], + function () { + 'use strict'; + + var repositoryId1 = 'wai-languages', + timeout = 5000, + manager, + repository, + testOrder = [ + runBasicTests, + runQueryTests + ]; + + function str(str) { + return str.replace(/\s+/g, ' '); + }; + + // Test whether Aloha can load modules + asyncTest('Aloha.require repository modules.', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 10000); + // All other tests are done when Aloha is ready + Aloha.require(['aloha/repository', 'aloha/repositorymanager'], + function (Repository, Manager) { + manager = Manager; + repository = Repository; + Aloha.ready(runNextTest); + clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + + function runNextTest() { + if (testOrder.length) { + var test = testOrder.shift(); + if (typeof test === 'function') { + test(); + } + } + }; + + function runBasicTests(callbackNextTests) { + module("Basic Tests"); + + test( + 'Test registering of repository', + function () { + equal( + manager.repositories.length, 1, + 'Check that repository manager contains 1 registered ' + + 'repository.' + ); + + equal( + manager.repositories[0] && manager.repositories[0].repositoryId, repositoryId1, + 'Check that the id of the first registered repository is "' + + repositoryId1 + '."' + ); + + runNextTest(); + } + ); + }; + + + function runQueryTests() { + module("Query tests (WAI-LANG repository)"); + + asyncTest( + 'Test querying the wai-lang repository.', + function () { + var starttime = new Date; + + manager.query({ + queryString:'de', + query:'de', + objectTypeFilter:['language'] + }, function (response) { + ok( + response && (typeof response === 'object'), + 'Check that repository manager returns a response ' + + 'object.' + ); + + ok(response.results > 0, + 'Check that the response contains results.'); + + + start(); + + runNextTest(); + + }); + } + ); + }; + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/vendor/jquery-1.2.1.js b/modules/core/aloha/static/test/vendor/jquery-1.2.1.js new file mode 100644 index 000000000..b4efe24ed --- /dev/null +++ b/modules/core/aloha/static/test/vendor/jquery-1.2.1.js @@ -0,0 +1,3312 @@ +(function () { + /* + * jQuery 1.2.1 - New Wave Javascript + * + * Copyright (c) 2007 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $ + * $Rev: 3353 $ + */ + +// Map over jQuery in case of overwrite + if (typeof jQuery != "undefined") { + var _jQuery = jQuery; + } + + var jQuery = window.jQuery = function (selector, context) { + // If the context is a namespace object, return a new object + return this instanceof jQuery ? + this.init(selector, context) : + new jQuery(selector, context); + }; + +// Map over the $ in case of overwrite + if (typeof $ != "undefined") { + var _$ = $; + } + +// Map the jQuery namespace to the '$' one + window.$ = jQuery; + + var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; + + jQuery.fn = jQuery.prototype = { + init:function (selector, context) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle HTML strings + if (typeof selector == "string") { + var m = quickExpr.exec(selector); + if (m && (m[1] || !context)) { + // HANDLE: $(html) -> $(array) + if (m[1]) { + selector = jQuery.clean([ m[1] ], context); + } + + // HANDLE: $("#id") + else { + var tmp = document.getElementById(m[3]); + if (tmp) + // Handle the case where IE and Opera return items + // by name instead of ID + { + if (tmp.id != m[3]) { + return jQuery().find(selector); + } + else { + this[0] = tmp; + this.length = 1; + return this; + } + } + else { + selector = []; + } + } + + // HANDLE: $(expr) + } else { + return new jQuery(context).find(selector); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if (jQuery.isFunction(selector)) { + return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ](selector); + } + + return this.setArray( + // HANDLE: $(array) + selector.constructor == Array && selector || + + // HANDLE: $(arraylike) + // Watch for when an array-like object is passed as the selector + (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray(selector) || + + // HANDLE: $(*) + [ selector ]); + }, + + jquery:"1.2.1", + + size:function () { + return this.length; + }, + + length:0, + + get:function (num) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray(this) : + + // Return just the object + this[num]; + }, + + pushStack:function (a) { + var ret = jQuery(a); + ret.prevObject = this; + return ret; + }, + + setArray:function (a) { + this.length = 0; + Array.prototype.push.apply(this, a); + return this; + }, + + each:function (fn, args) { + return jQuery.each(this, fn, args); + }, + + index:function (obj) { + var pos = -1; + this.each(function (i) { + if (this == obj) { + pos = i; + } + }); + return pos; + }, + + attr:function (key, value, type) { + var obj = key; + + // Look for the case where we're accessing a style value + if (key.constructor == String) { + if (value == undefined) { + return this.length && jQuery[ type || "attr" ](this[0], key) || undefined; + } + else { + obj = {}; + obj[ key ] = value; + } + } + + // Check to see if we're setting style values + return this.each(function (index) { + // Set all the styles + for (var prop in obj) { + jQuery.attr( + type ? this.style : this, + prop, jQuery.prop(this, obj[prop], type, index, prop) + ); + } + }); + }, + + css:function (key, value) { + return this.attr(key, value, "curCSS"); + }, + + text:function (e) { + if (typeof e != "object" && e != null) { + return this.empty().append(document.createTextNode(e)); + } + + var t = ""; + jQuery.each(e || this, function () { + jQuery.each(this.childNodes, function () { + if (this.nodeType != 8) { + t += this.nodeType != 1 ? + this.nodeValue : jQuery.fn.text([ this ]); + } + }); + }); + return t; + }, + + wrapAll:function (html) { + if (this[0]) + // The elements to wrap the target around + { + jQuery(html, this[0].ownerDocument) + .clone() + .insertBefore(this[0]) + .map(function () { + var elem = this; + while (elem.firstChild) { + elem = elem.firstChild; + } + return elem; + }) + .append(this); + } + + return this; + }, + + wrapInner:function (html) { + return this.each(function () { + jQuery(this).contents().wrapAll(html); + }); + }, + + wrap:function (html) { + return this.each(function () { + jQuery(this).wrapAll(html); + }); + }, + + append:function () { + return this.domManip(arguments, true, 1, function (a) { + this.appendChild(a); + }); + }, + + prepend:function () { + return this.domManip(arguments, true, -1, function (a) { + this.insertBefore(a, this.firstChild); + }); + }, + + before:function () { + return this.domManip(arguments, false, 1, function (a) { + this.parentNode.insertBefore(a, this); + }); + }, + + after:function () { + return this.domManip(arguments, false, -1, function (a) { + this.parentNode.insertBefore(a, this.nextSibling); + }); + }, + + end:function () { + return this.prevObject || jQuery([]); + }, + + find:function (t) { + var data = jQuery.map(this, function (a) { + return jQuery.find(t, a); + }); + return this.pushStack(/[^+>] [^+>]/.test(t) || t.indexOf("..") > -1 ? + jQuery.unique(data) : data); + }, + + clone:function (events) { + // Do the clone + var ret = this.map(function () { + return this.outerHTML ? jQuery(this.outerHTML)[0] : this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function () { + if (this[ expando ] != undefined) { + this[ expando ] = null; + } + }); + + // Copy the events from the original to the clone + if (events === true) { + this.find("*").andSelf().each(function (i) { + var events = jQuery.data(this, "events"); + for (var type in events) { + for (var handler in events[type]) { + jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data); + } + } + }); + } + + // Return the cloned set + return ret; + }, + + filter:function (t) { + return this.pushStack( + jQuery.isFunction(t) && + jQuery.grep(this, function (el, index) { + return t.apply(el, [index]); + }) || + + jQuery.multiFilter(t, this)); + }, + + not:function (t) { + return this.pushStack( + t.constructor == String && + jQuery.multiFilter(t, this, true) || + + jQuery.grep(this, function (a) { + return ( t.constructor == Array || t.jquery ) + ? jQuery.inArray(a, t) < 0 + : a != t; + }) + ); + }, + + add:function (t) { + return this.pushStack(jQuery.merge( + this.get(), + t.constructor == String ? + jQuery(t).get() : + t.length != undefined && (!t.nodeName || jQuery.nodeName(t, "form")) ? + t : [t]) + ); + }, + + is:function (expr) { + return expr ? jQuery.multiFilter(expr, this).length > 0 : false; + }, + + hasClass:function (expr) { + return this.is("." + expr); + }, + + val:function (val) { + if (val == undefined) { + if (this.length) { + var elem = this[0]; + + // We need to handle select boxes special + if (jQuery.nodeName(elem, "select")) { + var index = elem.selectedIndex, + a = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if (index < 0) { + return null; + } + + // Loop through all the selected options + for (var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++) { + var option = options[i]; + if (option.selected) { + // Get the specifc value for the option + var val = jQuery.browser.msie && !option.attributes["value"].specified ? option.text : option.value; + + // We don't need an array for one selects + if (one) { + return val; + } + + // Multi-Selects return an array + a.push(val); + } + } + + return a; + + // Everything else, we just grab the value + } else { + return this[0].value.replace(/\r/g, ""); + } + } + } else { + return this.each(function () { + if (val.constructor == Array && /radio|checkbox/.test(this.type)) { + this.checked = (jQuery.inArray(this.value, val) >= 0 || + jQuery.inArray(this.name, val) >= 0); + } + else if (jQuery.nodeName(this, "select")) { + var tmp = val.constructor == Array ? val : [val]; + + jQuery("option", this).each(function () { + this.selected = (jQuery.inArray(this.value, tmp) >= 0 || + jQuery.inArray(this.text, tmp) >= 0); + }); + + if (!tmp.length) { + this.selectedIndex = -1; + } + } else { + this.value = val; + } + }); + } + }, + + html:function (val) { + return val == undefined ? + ( this.length ? this[0].innerHTML : null ) : + this.empty().append(val); + }, + + replaceWith:function (val) { + return this.after(val).remove(); + }, + + eq:function (i) { + return this.slice(i, i + 1); + }, + + slice:function () { + return this.pushStack(Array.prototype.slice.apply(this, arguments)); + }, + + map:function (fn) { + return this.pushStack(jQuery.map(this, function (elem, i) { + return fn.call(elem, i, elem); + })); + }, + + andSelf:function () { + return this.add(this.prevObject); + }, + + domManip:function (args, table, dir, fn) { + var clone = this.length > 1, a; + + return this.each(function () { + if (!a) { + a = jQuery.clean(args, this.ownerDocument); + if (dir < 0) { + a.reverse(); + } + } + + var obj = this; + + if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr")) { + obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); + } + + jQuery.each(a, function () { + var elem = clone ? this.cloneNode(true) : this; + if (!evalScript(0, elem)) { + fn.call(obj, elem); + } + }); + }); + } + }; + + function evalScript(i, elem) { + var script = jQuery.nodeName(elem, "script"); + + if (script) { + if (elem.src) { + jQuery.ajax({ url:elem.src, async:false, dataType:"script" }); + } + else { + jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML || ""); + } + + if (elem.parentNode) { + elem.parentNode.removeChild(elem); + } + + } else if (elem.nodeType == 1) { + jQuery("script", elem).each(evalScript); + } + + return script; + } + + jQuery.extend = jQuery.fn.extend = function () { + // copy reference to target object + var target = arguments[0] || {}, a = 1, al = arguments.length, deep = false; + + // Handle a deep copy situation + if (target.constructor == Boolean) { + deep = target; + target = arguments[1] || {}; + } + + // extend jQuery itself if only one argument is passed + if (al == 1) { + target = this; + a = 0; + } + + var prop; + + for (; a < al; a++) + // Only deal with non-null/undefined values + { + if ((prop = arguments[a]) != null) + // Extend the base object + { + for (var i in prop) { + // Prevent never-ending loop + if (target == prop[i]) { + continue; + } + + // Recurse if we're merging object values + if (deep && typeof prop[i] == 'object' && target[i]) { + jQuery.extend(target[i], prop[i]); + } + + // Don't bring in undefined values + else if (prop[i] != undefined) { + target[i] = prop[i]; + } + } + } + } + + // Return the modified object + return target; + }; + + var expando = "jQuery" + (new Date()).getTime(), uuid = 0, win = {}; + + jQuery.extend({ + noConflict:function (deep) { + window.$ = _$; + if (deep) { + window.jQuery = _jQuery; + } + return jQuery; + }, + + // This may seem like some crazy code, but trust me when I say that this + // is the only cross-browser way to do this. --John + isFunction:function (fn) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /function/i.test(fn + ""); + }, + + // check if an element is in a XML document + isXMLDoc:function (elem) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + // Evaluates Async. in Safari 2 :-( + globalEval:function (data) { + data = jQuery.trim(data); + if (data) { + if (window.execScript) { + window.execScript(data); + } + else if (jQuery.browser.safari) + // safari doesn't provide a synchronous global eval + { + window.setTimeout(data, 0); + } + else { + eval.call(window, data); + } + } + }, + + nodeName:function (elem, name) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache:{}, + + data:function (elem, name, data) { + elem = elem == window ? win : elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if (!id) { + id = elem[ expando ] = ++uuid; + } + + // Only generate the data cache if we're + // trying to access or manipulate it + if (name && !jQuery.cache[ id ]) { + jQuery.cache[ id ] = {}; + } + + // Prevent overriding the named cache with undefined values + if (data != undefined) { + jQuery.cache[ id ][ name ] = data; + } + + // Return the named cache data, or the ID for the element + return name ? jQuery.cache[ id ][ name ] : id; + }, + + removeData:function (elem, name) { + elem = elem == window ? win : elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if (name) { + if (jQuery.cache[ id ]) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + for (name in jQuery.cache[ id ]) { + break; + } + if (!name) { + jQuery.removeData(elem); + } + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch (e) { + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if (elem.removeAttribute) { + elem.removeAttribute(expando); + } + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each:function (obj, fn, args) { + if (args) { + if (obj.length == undefined) { + for (var i in obj) { + fn.apply(obj[i], args); + } + } + else { + for (var i = 0, ol = obj.length; i < ol; i++) { + if (fn.apply(obj[i], args) === false) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if (obj.length == undefined) { + for (var i in obj) { + fn.call(obj[i], i, obj[i]); + } + } + else { + for (var i = 0, ol = obj.length, val = obj[0]; + i < ol && fn.call(val, i, val) !== false; val = obj[++i]) { + } + } + } + + return obj; + }, + + prop:function (elem, value, type, index, prop) { + // Handle executable functions + if (jQuery.isFunction(value)) { + value = value.call(elem, [index]); + } + + // exclude the following css properties to add px + var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test(prop) ? + value + "px" : + value; + }, + + className:{ + // internal only, use addClass("class") + add:function (elem, c) { + jQuery.each((c || "").split(/\s+/), function (i, cur) { + if (!jQuery.className.has(elem.className, cur)) { + elem.className += ( elem.className ? " " : "" ) + cur; + } + }); + }, + + // internal only, use removeClass("class") + remove:function (elem, c) { + elem.className = c != undefined ? + jQuery.grep(elem.className.split(/\s+/),function (cur) { + return !jQuery.className.has(c, cur); + }).join(" ") : ""; + }, + + // internal only, use is(".class") + has:function (t, c) { + return jQuery.inArray(c, (t.className || t).toString().split(/\s+/)) > -1; + } + }, + + swap:function (e, o, f) { + for (var i in o) { + e.style["old" + i] = e.style[i]; + e.style[i] = o[i]; + } + f.apply(e, []); + for (var i in o) { + e.style[i] = e.style["old" + i]; + } + }, + + css:function (e, p) { + if (p == "height" || p == "width") { + var old = {}, oHeight, oWidth, d = ["Top", "Bottom", "Right", "Left"]; + + jQuery.each(d, function () { + old["padding" + this] = 0; + old["border" + this + "Width"] = 0; + }); + + jQuery.swap(e, old, function () { + if (jQuery(e).is(':visible')) { + oHeight = e.offsetHeight; + oWidth = e.offsetWidth; + } else { + e = jQuery(e.cloneNode(true)) + .find(":radio").removeAttr("checked").end() + .css({ + visibility:"hidden", position:"absolute", display:"block", right:"0", left:"0" + }).appendTo(e.parentNode)[0]; + + var parPos = jQuery.css(e.parentNode, "position") || "static"; + if (parPos == "static") { + e.parentNode.style.position = "relative"; + } + + oHeight = e.clientHeight; + oWidth = e.clientWidth; + + if (parPos == "static") { + e.parentNode.style.position = "static"; + } + + e.parentNode.removeChild(e); + } + }); + + return p == "height" ? oHeight : oWidth; + } + + return jQuery.curCSS(e, p); + }, + + curCSS:function (elem, prop, force) { + var ret, stack = [], swap = []; + + // A helper method for determining if an element's values are broken + function color(a) { + if (!jQuery.browser.safari) { + return false; + } + + var ret = document.defaultView.getComputedStyle(a, null); + return !ret || ret.getPropertyValue("color") == ""; + } + + if (prop == "opacity" && jQuery.browser.msie) { + ret = jQuery.attr(elem.style, "opacity"); + return ret == "" ? "1" : ret; + } + + if (prop.match(/float/i)) { + prop = styleFloat; + } + + if (!force && elem.style[prop]) { + ret = elem.style[prop]; + } + + else if (document.defaultView && document.defaultView.getComputedStyle) { + + if (prop.match(/float/i)) { + prop = "float"; + } + + prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase(); + var cur = document.defaultView.getComputedStyle(elem, null); + + if (cur && !color(elem)) { + ret = cur.getPropertyValue(prop); + } + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + // Locate all of the parent display: none elements + for (var a = elem; a && color(a); a = a.parentNode) { + stack.unshift(a); + } + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for (a = 0; a < stack.length; a++) { + if (color(stack[a])) { + swap[a] = stack[a].style.display; + stack[a].style.display = "block"; + } + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = prop == "display" && swap[stack.length - 1] != null ? + "none" : + document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop) || ""; + + // Finally, revert the display styles back + for (a = 0; a < swap.length; a++) { + if (swap[a] != null) { + stack[a].style.display = swap[a]; + } + } + } + + if (prop == "opacity" && ret == "") { + ret = "1"; + } + + } else if (elem.currentStyle) { + var newProp = prop.replace(/\-(\w)/g, function (m, c) { + return c.toUpperCase(); + }); + ret = elem.currentStyle[prop] || elem.currentStyle[newProp]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) { + var style = elem.style.left; + var runtimeStyle = elem.runtimeStyle.left; + elem.runtimeStyle.left = elem.currentStyle.left; + elem.style.left = ret || 0; + ret = elem.style.pixelLeft + "px"; + elem.style.left = style; + elem.runtimeStyle.left = runtimeStyle; + } + } + + return ret; + }, + + clean:function (a, doc) { + var r = []; + doc = doc || document; + + jQuery.each(a, function (i, arg) { + if (!arg) { + return; + } + + if (arg.constructor == Number) { + arg = arg.toString(); + } + + // Convert html string into DOM nodes + if (typeof arg == "string") { + // Fix "XHTML"-style tags in all browsers + arg = arg.replace(/(<(\w+)[^>]*?)\/>/g, function (m, all, tag) { + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i) ? m : all + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var s = jQuery.trim(arg).toLowerCase(), div = doc.createElement("div"), tb = []; + + var wrap = + // option or optgroup + !s.indexOf("", ""] || + + !s.indexOf("", ""] || + + s.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [1, "", "
                                                            "] || + + !s.indexOf("", ""] || + + // matched above + (!s.indexOf("", ""] || + + !s.indexOf("", ""] || + + // IE can't serialize and + + + \ No newline at end of file diff --git a/modules/core/aloha/templates/aloha.style.html b/modules/core/aloha/templates/aloha.style.html new file mode 100644 index 000000000..51606ff82 --- /dev/null +++ b/modules/core/aloha/templates/aloha.style.html @@ -0,0 +1,2 @@ + + diff --git a/test/config.test.js b/test/config.test.js index 63704fa54..6cfa3fbc8 100644 --- a/test/config.test.js +++ b/test/config.test.js @@ -103,4 +103,4 @@ describe('Calipso config test', function () { fn && fn(); }); } -}); \ No newline at end of file +});
                                                          1. foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar

                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar

                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + + { start:'
                                                            foo
                                                            []bar
                                                            ', + execResult:'
                                                            foo[]bar
                                                            ' + }, + { exclude:'msie', // TODO this test will always fail in IE, because the selection will always snap into the p + start:'
                                                            foo
                                                            []bar', + execResult:'
                                                            foo[]bar
                                                            ' + }, + { start:'foo
                                                            []bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'foo
                                                            []bar', + execResult:'foo[]bar' + }, + { include:'mozilla', + start:'foo
                                                            []bar', + execResult:'foo{}bar' + }, + { start:'foo
                                                            []bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'

                                                            foo


                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            []bar

                                                            ' + }, + { include:'mozilla', + start:'

                                                            foo


                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            {}bar

                                                            ' + }, + { exclude:'mozilla', + start:'

                                                            foo


                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            []bar

                                                            ' + }, + { include:'mozilla', + start:'

                                                            foo


                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            {}bar

                                                            ' + }, + { exclude:'mozilla', + start:'

                                                            foo



                                                            []bar

                                                            ', + execResult:'

                                                            foo


                                                            []bar

                                                            ' + }, + { include:'mozilla', + start:'

                                                            foo



                                                            []bar

                                                            ', + execResult:'

                                                            foo


                                                            {}bar

                                                            ' + }, + { + exclude:['msie', 'mozilla'], + start:'

                                                            foo

                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            {}bar' + }, + { + include:['msie', 'mozilla'], + start:'

                                                            foo

                                                            []bar

                                                            ', + execResult:'

                                                            foo

                                                            []bar' + }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, + + // IE and Chrome will behave differently on this one as IE will move + // the range outside the thus achieving a different behaviour + { + exclude:['msie'], + start:'foo[]bar', + execResult:'fo[]bar' + }, + { + include:['msie'], + start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { include:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { include:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { include:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { exclude:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { include:'mozilla', + start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'fo[]bar' + }, + { start:'foo[]bar', + execResult:'fo[]bar' + }, + { start:'foo[]bar', + execResult:'fo[]bar' + }, + { start:'foo[]bar', + execResult:'fo[]bar' + }, + { start:'foo  []bar', + execResult:'foo []bar' + }, + { start:'foo  []bar', + execResult:'foo []bar' + }, + { start:'foo  []bar', + execResult:'foo []bar' + }, + { start:'foo []bar', + execResult:'foo[]bar' + }, + { + start:'foo  []bar', + execResult:'foo []bar' + }, + { + start:'foo  []bar', + execResult:'foo []bar' + }, + { + start:'foo  []bar', + execResult:'foo []bar' + }, + { + start:'foo []bar', + execResult:'foo[]bar' + }, + +// // Tables with collapsed selection +// { start: 'foo
                                                            []bar
                                                            baz', +// execResult: 'foo
                                                            []bar
                                                            baz' +// }, +// { start: 'foo
                                                            bar
                                                            []baz', +// execResult: 'foo
                                                            bar
                                                            []baz' +// }, +// { start: '

                                                            foo
                                                            []bar

                                                            baz', +// execResult: '

                                                            foo
                                                            []bar

                                                            baz' +// }, +// { start: '

                                                            foo
                                                            bar

                                                            []baz', +// execResult: '

                                                            foo
                                                            bar

                                                            []baz' +// }, +// { start: '
                                                            foo[]bar
                                                            ', +// execResult: '
                                                            foo[]bar
                                                            ' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// +// { start: 'foo
                                                            []bar
                                                            baz', +// execResult: 'foo
                                                            []bar
                                                            baz' +// }, +// { start: 'foo
                                                            bar
                                                            []baz', +// execResult: 'foo
                                                            bar
                                                            []baz' +// }, +// { start: '

                                                            foo
                                                            []bar

                                                            baz', +// execResult: '

                                                            foo
                                                            []bar

                                                            baz' +// }, +// { start: '

                                                            foo
                                                            bar

                                                            []baz', +// execResult: '

                                                            foo
                                                            bar

                                                            []baz' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// +// { start: 'foo

                                                            []bar
                                                            baz', +// execResult: 'foo

                                                            []bar
                                                            baz' +// }, +// { start: 'foo
                                                            bar

                                                            []baz', +// execResult: 'foo
                                                            bar

                                                            []baz' +// }, +// { start: '

                                                            foo

                                                            []bar

                                                            baz', +// execResult: '

                                                            foo

                                                            []bar

                                                            baz' +// }, +// { start: '

                                                            foo
                                                            bar

                                                            []baz', +// execResult: '

                                                            foo
                                                            bar

                                                            []baz' +// }, +// { start: '
                                                            foo

                                                            []bar
                                                            ', +// execResult: '
                                                            foo

                                                            []bar
                                                            ' +// }, +// { start: '
                                                            foo

                                                            []bar
                                                            ', +// execResult: '
                                                            foo

                                                            []bar
                                                            ' +// }, +// +// { start: 'foo


                                                            []bar
                                                            baz', +// execResult: 'foo
                                                            []bar
                                                            baz' +// }, +// { start: 'foo
                                                            bar
                                                            []baz', +// execResult: 'foo
                                                            bar
                                                            []baz' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// + // Lists with collapsed selection + { + exclude:['msie'], + start:'foo
                                                            1. []bar
                                                            2. baz
                                                            ', + execResult:'foo

                                                            []bar

                                                            1. baz
                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            1. []bar
                                                            2. baz
                                                            ', + execResult:'foo

                                                            []bar

                                                            1. baz
                                                            ' + }, + { + exclude:['msie'], + + start:'foo
                                                            1. []bar
                                                            2. baz
                                                            ', + execResult:'foo

                                                            []bar

                                                            1. baz
                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            1. []bar
                                                            2. baz
                                                            ', + execResult:'foo

                                                            []bar

                                                            1. baz
                                                            ' + }, + { start:'foo

                                                            1. []bar
                                                            2. baz
                                                            ', + execResult:'foo

                                                            []bar

                                                            1. baz
                                                            ' + }, + { start:'
                                                            1. foo
                                                            2. []bar
                                                            ', + execResult:'
                                                            1. foo
                                                              []bar
                                                            ' + }, + { start:'
                                                            1. foo
                                                            2. []bar
                                                            ', + execResult:'
                                                            1. foo
                                                              []bar
                                                            ' + }, + { start:'
                                                            1. foo

                                                            2. []bar
                                                            ', + execResult:'
                                                            1. foo

                                                              []bar
                                                            ' + }, + { start:'
                                                            1. foo
                                                            2. []bar
                                                              baz
                                                            ', + execResult:'
                                                            1. foo
                                                              []bar
                                                              baz
                                                            ' + }, + { start:'
                                                            1. foo
                                                              bar
                                                            2. []baz
                                                            ', + execResult:'
                                                            1. foo
                                                              bar
                                                              []baz
                                                            ' + }, + +// those tests have been removed as html5 allows only flow content within lists (http://dev.w3.org/html5/spec/Overview.html#the-li-element) +// +// { start: '
                                                            1. foo

                                                              {}bar
                                                            ', +// execResult: '
                                                            1. foo[]bar

                                                            ' +// }, +// { start: '
                                                            1. foo

                                                            2. []bar
                                                            ', +// execResult: '
                                                            1. foo

                                                              []bar
                                                            ' +// }, +// { +// exclude: ['msie'], +// start: '
                                                            1. foo
                                                            2. []bar

                                                            ', +// execResult: '
                                                            1. foo

                                                              []bar

                                                            ' +// }, +// { +// include: ['msie'], +// start: '
                                                            1. foo
                                                            2. []bar

                                                            ', +// execResult: '
                                                            1. foo

                                                              []bar

                                                            ' +// }, +// { +// exclude: ['msie'], +// start: '
                                                            1. foo

                                                            2. []bar

                                                            ', +// execResult: '
                                                            1. foo

                                                              []bar

                                                            ' +// }, +// { +// include: ['msie'], +// start: '
                                                            1. foo

                                                            2. []bar

                                                            ', +// execResult: '
                                                            1. foo

                                                              []bar

                                                            ' +// }, + { + start:'
                                                            1. foo
                                                              • []bar
                                                            ', + execResult:'
                                                            1. foo
                                                            2. []bar
                                                            ' + }, + { + exclude:['msie'], + start:'foo
                                                              1. []bar
                                                            ', + execResult:'foo
                                                            1. []bar
                                                            ' + }, + { + include:['msie'], + start:'foo
                                                              1. []bar
                                                            ', + execResult:'foo
                                                            1. []bar
                                                            ' + }, + { + exclude:['msie'], + start:'foo
                                                            1. []bar
                                                            ', + execResult:'foo

                                                            []bar

                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            1. []bar
                                                            ', + execResult:'foo

                                                            []bar

                                                            ' + }, + { + start:'
                                                            • foo

                                                            • []bar
                                                            ', + execResult:'
                                                            • foo
                                                            • []bar
                                                            ' + }, + +// { start: 'foo
                                                            []bar
                                                            baz
                                                            ', +// execResult: 'foo
                                                            []bar
                                                            baz
                                                            ' +// }, +// { start: 'foo
                                                            []bar
                                                            ', +// execResult: 'foo
                                                            []bar
                                                            ' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            ' +// }, +// { start: '
                                                            foo
                                                            []bar
                                                            baz
                                                            ', +// execResult: '
                                                            foo
                                                            []bar
                                                            baz
                                                            ' +// }, +// { start: '
                                                            foo
                                                            bar
                                                            []baz
                                                            ', +// execResult: '
                                                            foo
                                                            bar
                                                            []baz
                                                            ' +// }, + + { start:'
                                                            1. foo
                                                            []bar', + execResult:'
                                                            1. foo[]bar
                                                            ' + }, + { start:'
                                                            1. foo
                                                            []bar', + execResult:'
                                                            1. foo[]bar
                                                            ' + }, + { start:'
                                                            1. foo

                                                            []bar', + execResult:'
                                                            1. foo
                                                              []bar
                                                            ' + }, + { start:'

                                                            []bar', + execResult:'
                                                            1. []bar
                                                            ' + }, + { + exclude:['msie'], + start:'
                                                            1. foo

                                                            []bar', + execResult:'
                                                            1. foo
                                                            2. []bar
                                                            ' + }, + { + include:['msie'], + start:'
                                                            1. foo

                                                            []bar', + execResult:'
                                                            1. foo
                                                            2. []bar
                                                            ' + }, + + // Indented stuff with collapsed selection + { + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar' + }, + { + exclude:['msie'], + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' + }, + { + exclude:['msie'], + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' // not entirely sure if this is correct + }, + { + include:['msie'], + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' // not entirely sure if this is correct + }, + { exclude:'msie', + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' + }, + { include:'msie', + start:'foo
                                                            []bar
                                                            ', + execResult:'foo
                                                            []bar
                                                            ' + }, + + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' // TODO this is wrong on ie 8.0.7600 + }, + + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + exclude:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo

                                                            []bar

                                                            baz

                                                            ', + execResult:'foo

                                                            []bar

                                                            baz

                                                            ' + }, + + { + exclude:['msie'], + start:'foo
                                                            1. []bar

                                                            extra', + execResult:'foo

                                                            []bar

                                                            extra

                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            1. []bar

                                                            extra', + execResult:'foo

                                                            []bar

                                                            extra

                                                            ' + }, + { + exclude:['msie'], + start:'foo
                                                            bar
                                                            1. []baz
                                                            quz

                                                            extra', + execResult:'foo

                                                            bar

                                                            []baz

                                                            quz

                                                            extra

                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            bar
                                                            1. []baz
                                                            quz

                                                            extra', + execResult:'foo

                                                            bar

                                                            []baz

                                                            quz

                                                            extra

                                                            ' + }, + { + exclude:['msie'], + start:'foo
                                                            1. bar
                                                              1. []baz
                                                            2. quz

                                                            extra', + execResult:'foo

                                                            1. bar
                                                            2. []baz
                                                            3. quz

                                                            extra

                                                            ' + }, + { + include:['msie'], + start:'foo
                                                            1. bar
                                                              1. []baz
                                                            2. quz

                                                            extra', + execResult:'foo

                                                            1. bar
                                                            2. []baz
                                                            3. quz

                                                            extra

                                                            ' + }, + + // Invisible stuff with collapsed selection + // NOTE on these broken tests setting the cursor after deletion is broken + { start:'foo[]bar', // broken - doCleanup should fix this + execResult:'fo[]bar' + }, + { start:'foo[]bar', // broken - doCleanup should fix this + execResult:'fo[]bar' + }, + { start:'foo[]bar', // broken - doCleanup should fix this + execResult:'fo[]bar' + }, + { start:'foo
                                                            []bar', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'fo[]bar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'fo[]bar' + }, + { + start:'foo[]bar', // broken - doCleanup should fix this + execResult:'fo[]bar' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'foo

                                                            []bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar
                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + + // Styled stuff with collapsed selection + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:'msie', // ie does not recognize style="color:rgba" + start:'

                                                            foo

                                                            []bar

                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:'msie', // ie does not recognize style="color:rgba" + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + exclude:['msie'], // TODO IE8 will hang on this one + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + exclude:['msie'], // TODO IE8 will hang on this one + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + // execResult: '

                                                            foo[]bar

                                                            ' // TODO this is the really expected behaviour + }, + { start:'

                                                            foo

                                                            []bar', // broken + execResult:'

                                                            foo[]bar

                                                            ' // TODO this is the really expected behaviour + }, + { + exclude:['msie'], // TODO IE8 will hang on this one + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:'msie', // TODO this test will always fail in ie, because the selection will always snap into the p + start:'

                                                            foo

                                                            []bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + start:'foo

                                                            []bar', + execResult:'foo[]bar' + }, + +// { start: '

                                                            []bar', // very broken doesnt even run in the testbox +// execResult: '

                                                            []bar' +// }, +// { start: '

                                                            foo

                                                            foo

                                                            []bar' +// }, + +// // Uncollapsed selection + + { start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { + exclude:['msie'], + start:'

                                                            foo[bar]baz', + execResult:'

                                                            foo[]baz

                                                            ' // this one actually works, but the true test result will contain an empty text node within the span + }, + { + include:['msie'], + start:'

                                                            foo[bar]baz', + execResult:'

                                                            foo[]baz

                                                            ' // this one actually works, but the true test result will contain an empty text node within the span + }, + { + exclude:['msie'], + start:'

                                                            foo{bar}baz', + execResult:'

                                                            foo[]baz

                                                            ' // this one actually works, but the true test result will contain an empty text node within the span + }, + { + include:['msie'], + start:'

                                                            foo{bar}baz', + execResult:'

                                                            foo[]baz

                                                            ' // this one actually works, but the true test result will contain an empty text node within the span + }, + { exclude:'msie', + start:'

                                                            foo{bar}baz', // broken - doCleanup should fix this + execResult:'

                                                            foo[]baz

                                                            ' + }, + { include:'msie', + start:'

                                                            foo{bar}baz', + execResult:'

                                                            foo[]baz

                                                            ' + }, + { start:'

                                                            [foobar]baz', + execResult:'

                                                            []baz

                                                            ' + }, + { start:'

                                                            [foobar]baz

                                                            ', + execResult:'

                                                            []baz

                                                            ' + }, + { start:'

                                                            [foobar]baz', + execResult:'

                                                            []baz

                                                            ' + }, + { start:'

                                                            foo[barbaz]', // broken - doCleanup should fix this + execResult:'

                                                            foo[]

                                                            ' + }, + { start:'

                                                            foo{barbaz}', // broken - doCleanup should fix this + execResult:'

                                                            foo[]

                                                            ' + }, + { start:'

                                                            foo[barbaz]quz', // broken - doCleanup should fix this + execResult:'

                                                            foo[]quz

                                                            ' + }, + + { start:'foo[bar]baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + { start:'foo{bar}baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + { start:'foo{bar}baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + { start:'foo[bar]baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + { start:'foo{bar}baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + { start:'foo{bar}baz', // broken - doCleanup should fix this + execResult:'foo[]baz' + }, + + { + start:'foo[barbaz]quz', + execResult:'foo[]quz' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            [bar]

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            {}

                                                            baz

                                                            ' + }, + { include:'msie', + start:'

                                                            foo

                                                            [bar]

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            baz

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            {bar}

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            {}

                                                            baz

                                                            ' + }, + { include:'msie', + start:'

                                                            foo

                                                            {bar}

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            baz

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            {bar

                                                            }

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            []baz

                                                            ' + }, + { include:'msie', // in ie, it is not possible to select a whole paragraph + start:'

                                                            foo

                                                            {bar

                                                            }

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            baz

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            {

                                                            bar}

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            {}

                                                            baz

                                                            ' + }, + { include:'msie', // in ie, it is not possible to select a whole paragraph + start:'

                                                            foo

                                                            {

                                                            bar

                                                            }

                                                            baz

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            baz

                                                            ' + }, + + { start:'

                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { start:'

                                                            foo[bar

                                                            baz]quz
                                                            ', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { start:'

                                                            foo[bar

                                                            baz]quz

                                                            ', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { start:'
                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo[]quz
                                                            ' + }, + { start:'
                                                            foo[bar
                                                            baz]quz
                                                            ', + execResult:'
                                                            foo[]quz
                                                            ' + }, + + { + start:'

                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { + start:'

                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { + exclude:['msie'], + start:'

                                                            foo[bar

                                                            baz]quz

                                                            qoz

                                                            ', + execResult:'

                                                            foo[]quz

                                                            qoz

                                                            ' + }, + { + include:['msie'], + start:'

                                                            foo[bar

                                                            baz]quz

                                                            qoz

                                                            ', + execResult:'

                                                            foo[]quz

                                                            qoz

                                                            ' + }, + { + start:'

                                                            foo[bar

                                                            baz]quz', // broken - doCleanup should fix this + execResult:'

                                                            foo[]quz

                                                            ' + }, + { exclude:'mozilla', + start:'

                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo[]quz

                                                            ' + }, + { include:'mozilla', + start:'

                                                            foo[bar

                                                            baz]quz', + execResult:'

                                                            foo{}quz

                                                            ' + }, + + { start:'

                                                            foo

                                                            [bar

                                                            baz]

                                                            ', // broken - doCleanup should fix this + execResult:'

                                                            foo[]

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            [bar

                                                            baz]

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            ' + }, + { include:'msie', + start:'

                                                            foo

                                                            [bar

                                                            baz]

                                                            ', + execResult:'

                                                            foo

                                                            []

                                                            ' + }, + { start:'foo[
                                                            ]bar', + execResult:'foo[]bar' + }, + { start:'

                                                            foo[

                                                            ]bar

                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo[

                                                            ]bar
                                                            baz

                                                            ', + execResult:'

                                                            foo[]bar
                                                            baz

                                                            ' + }, + { start:'foo[

                                                            ]bar

                                                            ', + execResult:'foo[]bar' + }, + { start:'foo{

                                                            }bar

                                                            ', + execResult:'foo[]bar' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'foo[

                                                            ]bar
                                                            baz

                                                            ', + execResult:'foo[]bar

                                                            baz

                                                            ' + }, + { start:'foo[

                                                            ]bar

                                                            baz', + execResult:'foo[]bar
                                                            baz' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'foo{

                                                            bar

                                                            }baz', + execResult:'foo[]baz' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'foo

                                                            {bar

                                                            }baz', + execResult:'foo

                                                            []baz

                                                            ' + }, + { exclude:'mozilla', + start:'foo{

                                                            bar}

                                                            baz', + execResult:'foo[]
                                                            baz' + }, + { include:'mozilla', + start:'foo{

                                                            bar}

                                                            baz', + execResult:'foo{}
                                                            baz' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'

                                                            foo[

                                                            ]bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'

                                                            foo{

                                                            }bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'

                                                            foo[

                                                            ]bar
                                                            baz', + execResult:'

                                                            foo[]bar

                                                            baz' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'

                                                            foo[

                                                            ]bar

                                                            baz

                                                            ', + execResult:'

                                                            foo[]bar

                                                            baz

                                                            ' + }, + { start:'foo[

                                                            ]bar

                                                            ', + execResult:'foo[]bar' + }, + { exclude:'msie', // it is impossible to get a selection like this in ie + start:'

                                                            foo[

                                                            ]bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { + exclude:['msie'], + start:'foo[

                                                            ]bar

                                                            baz
                                                            ', + execResult:'foo[]bar
                                                            baz
                                                            ' + }, + { + include:['msie'], + start:'foo[

                                                            ]bar

                                                            baz
                                                            ', + execResult:'foo[]bar
                                                            baz
                                                            ' + }, + { + exclude:['msie'], + start:'foo[
                                                            ]bar

                                                            baz

                                                            ', + execResult:'foo[]bar

                                                            baz

                                                            ' + }, + { + include:['msie'], + start:'foo[
                                                            ]bar

                                                            baz

                                                            ', + execResult:'foo[]bar

                                                            baz

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            bar[
                                                            ]baz', + execResult:'

                                                            foo

                                                            bar[]baz
                                                            ' + }, + { exclude:'msie', + start:'
                                                            foo

                                                            bar[

                                                            ]baz', + execResult:'
                                                            foo

                                                            bar[]baz

                                                            ' + }, + { exclude:['mozilla'], + start:'

                                                            foo
                                                            {

                                                            ]bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { exclude:['mozilla'], + start:'

                                                            foo

                                                            {

                                                            ]bar', + execResult:'

                                                            foo
                                                            []bar

                                                            ' + }, + { exclude:['mozilla'], + start:'foo
                                                            {

                                                            ]bar

                                                            ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'

                                                            foo
                                                            {

                                                            ]bar', + execResult:'

                                                            foo[]bar

                                                            ' + }, +// { start: '

                                                            foo

                                                            {

                                                            ]bar', // this test seems a bit pointless to me, therefore disabled it. broken right now. +// execResult: '

                                                            foo
                                                            []bar

                                                            ' +// }, + // @todo NS_ERROR_DOM_INDEX_SIZE_ERR exception in FF: rangy-core.js line 2055 at: + // "rangeProto.setStart = function(node, offset) { this.nativeRange.setStart(node, offset);" + // see also deletetest.js for that problem +// { start: 'foo
                                                            {

                                                            ]bar

                                                            ', +// execResult: 'foo[]bar' +// }, + { exclude:'msie', + start:'foo

                                                            {

                                                            ]bar

                                                            ', + execResult:'foo

                                                            []bar

                                                            ' + }, + { start:'

                                                            foo
                                                            {

                                                            }bar

                                                            ', + execResult:'

                                                            foo[]bar

                                                            ' + }, + { start:'

                                                            foo

                                                            {

                                                            }bar

                                                            ', + execResult:'

                                                            foo
                                                            []bar

                                                            ' // TODO not entirely sure if this is really correct. + }, + +// no table tests for us as our tables are augmented with divs +// { start: '
                                                            foo[bar]baz
                                                            quzqozqiz
                                                            ', +// execResult: '
                                                            foo[bar]baz
                                                            quzqozqiz
                                                            ' +// }, +// { start: '
                                                            fooba[rb]az
                                                            quzqozqiz
                                                            ', +// execResult: '
                                                            fooba[rb]az
                                                            quzqozqiz
                                                            ' +// }, +// { start: '
                                                            fo[obarb]az
                                                            quzqozqiz
                                                            ', +// execResult: '
                                                            fo[obarb]az
                                                            quzqozqiz
                                                            ' +// }, +// { start: '
                                                            foobarba[z
                                                            q]uzqozqiz
                                                            ', +// execResult: '
                                                            foobarba[z
                                                            q]uzqozqiz
                                                            ' +// }, +// { start: '
                                                            [foobarbaz]
                                                            quzqozqiz
                                                            ', +// execResult: '
                                                            [foobarbaz]
                                                            quzqozqiz
                                                            ' +// }, +// { start: '
                                                            [foobarbaz
                                                            quzqozqiz]
                                                            ', +// execResult: '
                                                            [foobarbaz
                                                            quzqozqiz]
                                                            ' +// }, +// { start: '{
                                                            foobarbaz
                                                            quzqozqiz
                                                            }', +// execResult: '{
                                                            foobarbaz
                                                            quzqozqiz
                                                            }' +// }, +// { start: '
                                                            fooba[r
                                                            bazquz
                                                            q]ozqiz
                                                            ', +// execResult: '
                                                            fooba[r
                                                            bazquz
                                                            q]ozqiz
                                                            ' +// }, + + { start:'

                                                            fo[o
                                                            b]ar

                                                            baz', + execResult:'

                                                            fo[]

                                                            ar

                                                            baz

                                                            ' + }, + { start:'

                                                            foo
                                                            ba[r

                                                            b]az', + execResult:'

                                                            foo

                                                            ba[]

                                                            az

                                                            ' + }, + { start:'

                                                            fo[o
                                                            bar

                                                            b]az', + execResult:'

                                                            fo[]az

                                                            ' + }, + + { + exclude:['msie'], + start:'

                                                            foo

                                                            1. ba[r
                                                            2. b]az

                                                            quz', + execResult:'

                                                            foo

                                                            1. ba[]az

                                                            quz

                                                            ' + }, + { + include:['msie'], + start:'

                                                            foo

                                                            1. ba[r
                                                            2. b]az

                                                            quz', + execResult:'

                                                            foo

                                                            1. ba[]az

                                                            quz

                                                            ' + }, + { exclude:['mozilla'], + start:'

                                                            foo

                                                            1. bar
                                                            2. [baz]

                                                            quz', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. {}

                                                            quz

                                                            ' + }, + { include:['mozilla'], + start:'

                                                            foo

                                                            1. bar
                                                            2. [baz]

                                                            quz', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. []

                                                            quz

                                                            ' + }, + { exclude:'msie', + start:'

                                                            foo

                                                            1. bar
                                                            2. [baz]

                                                            quz

                                                            ', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. {}

                                                            quz

                                                            ' + }, + { include:'msie', + start:'

                                                            foo

                                                            1. bar
                                                            2. [baz]

                                                            quz

                                                            ', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. []

                                                            quz

                                                            ' + }, + { + exclude:['msie'], + start:'

                                                            fo[o

                                                            1. b]ar
                                                            2. baz

                                                            quz', + execResult:'

                                                            fo[]ar

                                                            1. baz

                                                            quz

                                                            ' + }, + { + include:['msie'], + start:'

                                                            fo[o

                                                            1. b]ar
                                                            2. baz

                                                            quz', + execResult:'

                                                            fo[]ar

                                                            1. baz

                                                            quz

                                                            ' + }, + { + exclude:['msie'], + start:'

                                                            foo

                                                            1. bar
                                                            2. ba[z

                                                            q]uz', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. ba[]uz
                                                            ' + }, + { + include:['msie'], + start:'

                                                            foo

                                                            1. bar
                                                            2. ba[z

                                                            q]uz', + execResult:'

                                                            foo

                                                            1. bar
                                                            2. ba[]uz
                                                            ' + }, + { + exclude:['msie'], + start:'

                                                            fo[o

                                                            1. bar
                                                            2. b]az

                                                            quz', + execResult:'

                                                            fo[]az

                                                            quz

                                                            ' + }, + { + include:['msie'], + start:'

                                                            fo[o

                                                            1. bar
                                                            2. b]az

                                                            quz', + execResult:'

                                                            fo[]az

                                                            quz

                                                            ' + }, + { start:'

                                                            fo[o

                                                            1. bar
                                                            2. baz

                                                            q]uz', + execResult:'

                                                            fo[]uz

                                                            ' + }, + + { start:'
                                                            1. fo[o
                                                            1. b]ar
                                                            ', + execResult:'
                                                            1. fo[]ar
                                                            ' + }, + { start:'
                                                            1. fo[o
                                                            • b]ar
                                                            ', + execResult:'
                                                            1. fo[]ar
                                                            ' + }, + { exclude:'msie', + start:'
                                                            1. foo
                                                              1. []bar
                                                              2. baz
                                                            ', + execResult:'
                                                            1. foo
                                                            2. []bar
                                                              1. baz
                                                            ' + }, + { include:'msie', + start:'
                                                            1. foo
                                                              1. []bar
                                                              2. baz
                                                            ', + execResult:'
                                                            1. foo
                                                            2. []bar
                                                              1. baz
                                                            ' + }, + { exclude:'msie', + start:'
                                                            1. foo
                                                              1. bar
                                                                1. []baz
                                                                2. quz
                                                            ', + execResult:'
                                                            1. foo
                                                              1. bar
                                                              2. []baz
                                                                1. quz
                                                              ' + }, + { include:'msie', + start:'
                                                              1. foo
                                                                1. bar
                                                                  1. []baz
                                                                  2. quz
                                                              ', + execResult:'
                                                              1. foo
                                                                1. bar
                                                                2. []baz
                                                                  1. quz
                                                                ' + }, + + { start:'foo[
                                                                1. ]bar
                                                                ', + execResult:'foo[]bar' + }, + { start:'
                                                                1. foo[
                                                                2. ]bar
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, +// no definition list tests for us at this point of aloha +// { start: 'foo[
                                                                ]bar
                                                                baz
                                                                ', +// execResult: 'foo[
                                                                ]bar
                                                                baz
                                                                ' +// }, +// { start: 'foo[
                                                                ]bar
                                                                ', +// execResult: 'foo[
                                                                ]bar
                                                                ' +// }, +// { start: '
                                                                foo[
                                                                ]bar
                                                                ', +// execResult: '
                                                                foo[
                                                                ]bar
                                                                ' +// }, +// { start: '
                                                                foo[
                                                                ]bar
                                                                baz
                                                                ', +// execResult: '
                                                                foo[
                                                                ]bar
                                                                baz
                                                                ' +// }, +// { start: '
                                                                foo
                                                                bar[
                                                                ]baz
                                                                ', +// execResult: '
                                                                foo
                                                                bar[
                                                                ]baz
                                                                ' +// }, + + { start:'foo [ bar]', + execResult:'foo []' + }, + + // Do we merge based on element names or the display property? + { + exclude:['msie'], + start:'

                                                                fo[o

                                                                b]ar', + execResult:'

                                                                fo[]

                                                                ar

                                                                ' + }, + { + include:['msie'], + start:'

                                                                fo[o

                                                                b]ar', + execResult:'

                                                                fo[]

                                                                ar

                                                                ' + }, + { start:'fo[ob]ar', + execResult:'fo[]ar' + }, + { exclude:'msie', + start:'fo[ob]ar', + execResult:'fo[]ar' + }, + { exclude:'msie', + start:'fo[ob]ar', // TODO some exception in IE! + execResult:'fo[]ar' + }, + { exclude:'msie', + start:'fo[ob]ar', // broken + execResult:'fo[]ar' + }, + { exclude:'msie', + start:'fo[ob]ar', + execResult:'fo[]ar' + }, + { include:'msie', + start:'fo[ob]ar', + execResult:'fo[]ar' + }, + { start:'foo\n\t\t\t[]bar', + execResult:'foo[]bar' + }, + { exclude:['mozilla'], // broken in FF 7.01; NS_ERROR_DOM_INDEX_SIZE_ERR + start:'foo []bar', + execResult:'foo[]bar' + }, + { + start:' fo[]o barbar fo bar-ba-bar', + execResult:' f[]o barbar fo bar-ba-bar' + }, + { start:'

                                                                \n\t\t\tf[]oo bar

                                                                ', + execResult:'

                                                                []oo bar

                                                                ' + }, + { + start:'

                                                                before table

                                                                []after table

                                                                ', + execResult:'

                                                                before table

                                                                []after table

                                                                ' + }, + { + start:'

                                                                before table

                                                                []after table

                                                                ', + execResult:'

                                                                before table

                                                                []after table

                                                                ' + }, + { + start:'

                                                                before table

                                                                ' + "\n" + '

                                                                []after table

                                                                ', + execResult:'

                                                                before table

                                                                []after table

                                                                ' + }, + { + start:'

                                                                before table

                                                                 []after table

                                                                ', + execResult:'

                                                                before table

                                                                []after table

                                                                ' + }, + { + start:'

                                                                before table

                                                                aft[]er table

                                                                ', + execResult:'

                                                                before table

                                                                af[]er table

                                                                ' + }, + { + start:'

                                                                before table

                                                                []after table

                                                                ', + execResult:'

                                                                before table

                                                                []after table

                                                                ' + } + ] +} diff --git a/modules/core/aloha/static/test/unit/ecma5.js b/modules/core/aloha/static/test/unit/ecma5.js new file mode 100644 index 000000000..c43168364 --- /dev/null +++ b/modules/core/aloha/static/test/unit/ecma5.js @@ -0,0 +1,237 @@ +//Add ECMA262-5 method binding if not supported natively +// +if (!('bind' in Function.prototype)) { + Function.prototype.bind = function (owner) { + var that = this; + if (arguments.length <= 1) { + return function () { + return that.apply(owner, arguments); + }; + } else { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return that.apply(owner, arguments.length === 0 ? args : args.concat(Array.prototype.slice.call(arguments))); + }; + } + }; +} + +// Add ECMA262-5 string trim if not supported natively +// +if (!('trim' in String.prototype)) { + String.prototype.trim = function () { + return this.replace(/^\s+/, '').replace(/\s+$/, ''); + }; +} + +// Add ECMA262-5 Array methods if not supported natively +// +if (!('indexOf' in Array.prototype)) { + Array.prototype.indexOf = function (find, i) { + if (i === undefined) { + i = 0; + } + if (i < 0) { + i += this.length; + } + if (i < 0) { + i = 0; + } + for (var n = this.length; i < n; i++) { + if (i in this && this[i] === find) { + return i; + } + } + return -1; + }; +} +if (!('lastIndexOf' in Array.prototype)) { + Array.prototype.lastIndexOf = function (find, i) { + if (i === undefined) { + i = this.length - 1; + } + if (i < 0) { + i += this.length; + } + if (i > this.length - 1) { + i = this.length - 1; + } + for (i++; i-- > 0;) // i++ because from-argument is sadly inclusive + { + if (i in this && this[i] === find) { + return i; + } + } + return -1; + }; +} +if (!('forEach' in Array.prototype)) { + Array.prototype.forEach = function (action, that) { + for (var i = 0, n = this.length; i < n; i++) { + if (i in this) { + action.call(that, this[i], i, this); + } + } + }; +} +if (!('map' in Array.prototype)) { + Array.prototype.map = function (mapper, that) { + var other = new Array(this.length); + for (var i = 0, n = this.length; i < n; i++) { + if (i in this) { + other[i] = mapper.call(that, this[i], i, this); + } + } + return other; + }; +} +if (!('filter' in Array.prototype)) { + Array.prototype.filter = function (filter, that) { + var other = [], v; + for (var i = 0, n = this.length; i < n; i++) { + if (i in this && filter.call(that, v = this[i], i, this)) { + other.push(v); + } + } + return other; + }; +} +if (!('every' in Array.prototype)) { + Array.prototype.every = function (tester, that) { + for (var i = 0, n = this.length; i < n; i++) { + if (i in this && !tester.call(that, this[i], i, this)) { + return false; + } + } + return true; + }; +} +if (!('some' in Array.prototype)) { + Array.prototype.some = function (tester, that) { + for (var i = 0, n = this.length; i < n; i++) { + if (i in this && tester.call(that, this[i], i, this)) { + return true; + } + } + return false; + }; +} + +if (!Node) { + // http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1841493061 + var Node = { + 'ELEMENT_NODE':1, + 'ATTRIBUTE_NODE':2, + 'TEXT_NODE':3, + 'CDATA_SECTION_NODE':4, + 'ENTITY_REFERENCE_NODE':5, + 'ENTITY_NODE':6, + 'PROCESSING_INSTRUCTION_NODE':7, + 'COMMENT_NODE':8, + 'DOCUMENT_NODE':9, + 'DOCUMENT_TYPE_NODE':10, + 'DOCUMENT_FRAGMENT_NODE':11, + 'NOTATION_NODE':12, + //The two nodes are disconnected. Order between disconnected nodes is always implementation-specific. + 'DOCUMENT_POSITION_DISCONNECTED':0x01, + //The second node precedes the reference node. + 'DOCUMENT_POSITION_PRECEDING':0x02, + //The node follows the reference node. + 'DOCUMENT_POSITION_FOLLOWING':0x04, + //The node contains the reference node. A node which contains is always preceding, too. + 'DOCUMENT_POSITION_CONTAINS':0x08, + //The node is contained by the reference node. A node which is contained is always following, too. + 'DOCUMENT_POSITION_CONTAINED_BY':0x10, + //The determination of preceding versus following is implementation-specific. + 'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC':0x20 + }; +} + +// http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition +// FIXME: Check if the DOMNode prototype can be set. +window.compareDocumentPosition = function (node1, node2) { + + if ('compareDocumentPosition' in document.documentElement) { + return node1.compareDocumentPosition(node2); + } + + if (!("contains" in document.documentElement)) { + throw 'compareDocumentPosition nor contains is not supported by this browser.'; + } + if (node1 == node2) { + return 0; + } + + //if they don't have the same parent, there's a disconnect + if (getRootParent(node1) != getRootParent(node2)) { + return 1; + } + + //use this if both nodes have a sourceIndex (text nodes don't) + if ("sourceIndex" in node1 && "sourceIndex" in node2) { + return comparePosition(node1, node2); + } + + //document will definitely contain the other node + if (node1 == document) { + return 20; + } + else if (node2 == document) { + return 10; + } + + //get sourceIndexes to use for both nodes + var useNode1 = getUseNode(node1), useNode2 = getUseNode(node2); + + //call this function again to get the result + var result = comparePosition(useNode1, useNode2); + + //clean up if needed + if (node1 != useNode1) { + useNode1.parentNode.removeChild(useNode1); + } + if (node2 != useNode2) { + useNode2.parentNode.removeChild(useNode2); + } + return result; + + + //node.ownerDocument gives the document object, which isn't the right info for a disconnect + function getRootParent(node) { + do { + var parent = node; + } + while (node = node.parentNode); + return parent; + } + + //Compare Position - MIT Licensed, John Resig; http://ejohn.org/blog/comparing-document-position/ + //Already checked for equality and disconnect + function comparePosition(node1, node2) { + return (node1.contains(node2) && 16) + + (node2.contains(node1) && 8) + + (node1.sourceIndex >= 0 && node2.sourceIndex >= 0 ? + (node1.sourceIndex < node2.sourceIndex && 4) + + (node1.sourceIndex > node2.sourceIndex && 2) : + 1); + } + + //get a node with a sourceIndex to use + function getUseNode(node) { + //if the node already has a sourceIndex, use that node + if ("sourceIndex" in node) { + return node; + } + //otherwise, insert a comment (which has a sourceIndex but minimal DOM impact) before the node and use that + return node.parentNode.insertBefore(document.createComment(""), node); + } +}; + +if (!('getComputedStyle' in window)) { + window.getComputedStyle = function (node, style) { + if (node.currentStyle) { + return node.currentStyle; + } + return null; + } +} diff --git a/modules/core/aloha/static/test/unit/editable.html b/modules/core/aloha/static/test/unit/editable.html new file mode 100644 index 000000000..27eb4f537 --- /dev/null +++ b/modules/core/aloha/static/test/unit/editable.html @@ -0,0 +1,472 @@ + + + + + Aloha Editor Editable Test Suite + + + + + + + + + + + + + + + + + + + + +

                                                                Aloha Editor Editable Test Suite

                                                                + +

                                                                + +
                                                                +

                                                                +
                                                                  +
                                                                  + + +
                                                                  This is plain text
                                                                  +

                                                                  This is plain text
                                                                  +


                                                                  This is plain text
                                                                  +
                                                                  This is pl
                                                                  ain text
                                                                  +
                                                                  This is pl

                                                                  ain text
                                                                  +
                                                                  This is plain text
                                                                  +
                                                                  This is plain text

                                                                  + +

                                                                  Header with bold content

                                                                  +

                                                                  + +

                                                                  Header with bold content

                                                                  +

                                                                  + +

                                                                  + +

                                                                  Header with bold content

                                                                  +

                                                                  Hea

                                                                  + +

                                                                  der with bold content

                                                                  +

                                                                  Hea

                                                                  + +

                                                                  + +

                                                                  der with bold content

                                                                  +

                                                                  Header with bo

                                                                  + +

                                                                  ld content

                                                                  +

                                                                  Header with bo

                                                                  + +

                                                                  + +

                                                                  ld content

                                                                  +

                                                                  Header with bold content

                                                                  + +

                                                                  +

                                                                  Header with bold content

                                                                  + +

                                                                  + +

                                                                  +


                                                                  Header with bold content

                                                                  +



                                                                  Header with bold content

                                                                  +

                                                                  Hea
                                                                  der with bold content

                                                                  +

                                                                  Hea

                                                                  der with bold content

                                                                  +

                                                                  Header with bo
                                                                  ld
                                                                  content

                                                                  +

                                                                  Header with bo

                                                                  ld
                                                                  content

                                                                  +

                                                                  Header with bold content

                                                                  +

                                                                  Header with bold content

                                                                  + +

                                                                  This is italic-text in a paragraph

                                                                  +

                                                                  + +

                                                                  This is italic-text in a paragraph

                                                                  +

                                                                  + +

                                                                  + +

                                                                  This is italic-text in a paragraph

                                                                  +

                                                                  This is italic-te

                                                                  + +

                                                                  xt in a paragraph

                                                                  +

                                                                  This is italic-te

                                                                  + +

                                                                  + +

                                                                  xt in a paragraph

                                                                  +

                                                                  This is

                                                                  + +

                                                                  italic-text in a paragraph

                                                                  +

                                                                  This is

                                                                  + +

                                                                  + +

                                                                  italic-text in a paragraph

                                                                  +

                                                                  This is ita

                                                                  + +

                                                                  lic-text in a paragraph

                                                                  +

                                                                  This is ita

                                                                  + +

                                                                  + +

                                                                  lic-text in a paragraph

                                                                  +

                                                                  This is italic

                                                                  + +

                                                                  -text in a paragraph

                                                                  +

                                                                  This is italic

                                                                  + +

                                                                  + +

                                                                  -text in a paragraph

                                                                  +

                                                                  This is italic-text in a paragraph

                                                                  + +

                                                                  +

                                                                  This is italic-text in a paragraph

                                                                  + +

                                                                  + +

                                                                  +


                                                                  This is italic-text in a paragraph

                                                                  +



                                                                  This is italic-text in a paragraph

                                                                  +

                                                                  This is italic-te
                                                                  xt in a paragraph

                                                                  +

                                                                  This is italic-te

                                                                  xt in a paragraph

                                                                  +

                                                                  This is
                                                                  italic-text in a paragraph

                                                                  +

                                                                  This is

                                                                  italic
                                                                  -text in a paragraph

                                                                  +

                                                                  This is ita
                                                                  lic
                                                                  -text in a paragraph

                                                                  +

                                                                  This is ita

                                                                  lic
                                                                  -text in a paragraph

                                                                  +

                                                                  This is italic
                                                                  -text in a paragraph

                                                                  +

                                                                  This is italic

                                                                  -text in a paragraph

                                                                  +

                                                                  This is italic-text in a paragraph

                                                                  +

                                                                  This is italic-text in a paragraph

                                                                  + +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • word
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • fi
                                                                  • +
                                                                  • rst
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • fi
                                                                  • +
                                                                  • +
                                                                  • rst
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • sec
                                                                  • +
                                                                  • ond
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • sec
                                                                  • +
                                                                  • +
                                                                  • ond
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • th
                                                                  • +
                                                                  • ird
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • th
                                                                  • +
                                                                  • +
                                                                  • ird
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +

                                                                  + +
                                                                  +
                                                                    +

                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +


                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • fi
                                                                    rst
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • fi

                                                                    rst
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first

                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +

                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +


                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • sec
                                                                    ond
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • sec

                                                                    ond
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second

                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +

                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +


                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • th
                                                                    ird
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • th

                                                                    ird
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third
                                                                  • +
                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  • first
                                                                  • +
                                                                  • second
                                                                  • +
                                                                  • third

                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                    +
                                                                  • +
                                                                  • word
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + diff --git a/modules/core/aloha/static/test/unit/editabletests.js b/modules/core/aloha/static/test/unit/editabletests.js new file mode 100644 index 000000000..cb18bf722 --- /dev/null +++ b/modules/core/aloha/static/test/unit/editabletests.js @@ -0,0 +1,535 @@ +/* editabletests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define(['testutils'], function (TestUtils) { + "use strict"; + + /** + * Do an enter test + * @param editable the editable + * @param container cursor container + * @param offset offset of the cursor position + * @param shift true for shift enter, false for normal enter + * @param twice true for pressing enter twice, false for once + * @param reference result selector + */ + function doEnterTest(editable, container, offset, shift, twice, reference) { + // set cursor + TestUtils.setCursor(editable, container, offset); + // press enter + TestUtils.pressEnter(editable, shift); + // possibly again + if (twice) { + TestUtils.pressEnter(editable, shift); + } + // remove all additional end-breaks + Aloha.editables[0].obj.find('br.aloha-end-br').remove(); + // get the result + var result = Aloha.editables[0].getContents(true); + var expected = Aloha.jQuery(reference).contents(); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Operation Result'); + } + + Aloha.bind('aloha-ready', function () { + + module('Plaintext Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-plaintext'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test pressing Enter at beginning of plain text + test('Enter at beginning', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 0, false, false, '#ref-plaintext-start-enter'); + }); + + // Test pressing Enter twice at beginning of plain text + test('Double Enter at beginning', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 0, false, true, '#ref-plaintext-start-dblenter'); + }); + + // Test pressing Enter in the middle of plain text + test('Enter in the middle', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 10, false, false, '#ref-plaintext-mid-enter'); + }); + + // Test pressing Enter twice in the middle of plain text + test('Double Enter in the middle', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 10, false, true, '#ref-plaintext-mid-dblenter'); + }); + + // Test pressing Enter at the end of plain text + test('Enter at end', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 18, false, false, '#ref-plaintext-end-enter'); + }); + + // Test pressing Enter twice at the end of plain text + test('Double Enter at end', function () { + doEnterTest(this.edit, this.edit.contents().get(0), 18, false, true, '#ref-plaintext-end-dblenter'); + }); + + module('Heading Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-heading'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Enter at start', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 0, false, false, '#ref-heading-start-enter'); + }); + + test('Double Enter at start', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 0, false, true, '#ref-heading-start-dblenter'); + }); + + test('Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 3, false, false, '#ref-heading-mid-enter'); + }); + + test('Double Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 3, false, true, '#ref-heading-mid-dblenter'); + }); + + test('Enter in bold', function () { + doEnterTest(this.edit, this.edit.find('b').contents().get(0), 2, false, false, '#ref-heading-bold-enter'); + }); + + test('Double Enter in bold', function () { + doEnterTest(this.edit, this.edit.find('b').contents().get(0), 2, false, true, '#ref-heading-bold-dblenter'); + }); + + test('Enter at end', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().last().get(0), 8, false, false, '#ref-heading-end-enter'); + }); + + test('Double Enter at end', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().last().get(0), 8, false, true, '#ref-heading-end-dblenter'); + }); + + module('Heading Shift Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-heading'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Shift Enter at start', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 0, true, false, '#ref-heading-start-shift-enter'); + }); + + test('Double Shift Enter at start', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 0, true, true, '#ref-heading-start-shift-dblenter'); + }); + + test('Shift Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 3, true, false, '#ref-heading-mid-shift-enter'); + }); + + test('Double Shift Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().get(0), 3, true, true, '#ref-heading-mid-shift-dblenter'); + }); + + test('Shift Enter in bold', function () { + doEnterTest(this.edit, this.edit.find('b').contents().get(0), 2, true, false, '#ref-heading-bold-shift-enter'); + }); + + test('Double Shift Enter in bold', function () { + doEnterTest(this.edit, this.edit.find('b').contents().get(0), 2, true, true, '#ref-heading-bold-shift-dblenter'); + }); + + test('Shift Enter at end', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().last().get(0), 8, true, false, '#ref-heading-end-shift-enter'); + }); + + test('Double Shift Enter at end', function () { + doEnterTest(this.edit, this.edit.find('h1').contents().last().get(0), 8, true, true, '#ref-heading-end-shift-dblenter'); + }); + + module('Paragraph Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-paragraph'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Enter at start', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(0), 0, false, false, '#ref-paragraph-start-enter'); + }); + + test('Double Enter at start', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(0), 0, false, true, '#ref-paragraph-start-dblenter'); + }); + + test('Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 3, false, false, '#ref-paragraph-mid-enter'); + }); + + test('Double Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 3, false, true, '#ref-paragraph-mid-dblenter'); + }); + + test('Enter at start of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 0, false, false, '#ref-paragraph-startitalic-enter'); + }); + + test('Double Enter at start of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 0, false, true, '#ref-paragraph-startitalic-dblenter'); + }); + + test('Enter in italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 3, false, false, '#ref-paragraph-miditalic-enter'); + }); + + test('Double Enter in italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 3, false, true, '#ref-paragraph-miditalic-dblenter'); + }); + + test('Enter at end of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 6, false, false, '#ref-paragraph-enditalic-enter'); + }); + + test('Double Enter at end of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 6, false, true, '#ref-paragraph-enditalic-dblenter'); + }); + + test('Enter at end', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 20, false, false, '#ref-paragraph-end-enter'); + }); + + test('Double Enter at end', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 20, false, true, '#ref-paragraph-end-dblenter'); + }); + + module('Paragraph Shift Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-paragraph'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Shift Enter at start', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(0), 0, true, false, '#ref-paragraph-start-shift-enter'); + }); + + test('Double Shift Enter at start', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(0), 0, true, true, '#ref-paragraph-start-shift-dblenter'); + }); + + test('Shift Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 3, true, false, '#ref-paragraph-mid-shift-enter'); + }); + + test('Double Shift Enter in middle', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 3, true, true, '#ref-paragraph-mid-shift-dblenter'); + }); + + test('Shift Enter at start of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 0, true, false, '#ref-paragraph-startitalic-shift-enter'); + }); + + test('Double Shift Enter at start of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 0, true, true, '#ref-paragraph-startitalic-shift-dblenter'); + }); + + test('Shift Enter in italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 3, true, false, '#ref-paragraph-miditalic-shift-enter'); + }); + + test('Shift Enter at end of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 6, true, false, '#ref-paragraph-enditalic-shift-enter'); + }); + + test('Double Shift Enter at end of italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 6, true, true, '#ref-paragraph-enditalic-shift-dblenter'); + }); + + test('Double Shift Enter in italic', function () { + doEnterTest(this.edit, this.edit.find('i').contents().get(0), 3, true, true, '#ref-paragraph-miditalic-shift-dblenter'); + }); + + test('Shift Enter at end', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 20, true, false, '#ref-paragraph-end-shift-enter'); + }); + + test('Double Shift Enter at end', function () { + doEnterTest(this.edit, this.edit.find('p').contents().get(2), 20, true, true, '#ref-paragraph-end-shift-dblenter'); + }); + + module('List Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-list'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Enter at first start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 0, false, false, '#ref-list-firststart-enter'); + }); + + test('Double Enter at first start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 0, false, true, '#ref-list-firststart-dblenter'); + }); + + test('Enter at first middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 2, false, false, '#ref-list-firstmid-enter'); + }); + + test('Double Enter at first middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 2, false, true, '#ref-list-firstmid-dblenter'); + }); + + test('Enter at first end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 5, false, false, '#ref-list-firstend-enter'); + }); + + test('Double Enter at first end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 5, false, true, '#ref-list-firstend-dblenter'); + }); + + test('Enter at second start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 0, false, false, '#ref-list-secondstart-enter'); + }); + + test('Double Enter at second start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 0, false, true, '#ref-list-secondstart-dblenter'); + }); + + test('Enter at second middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 3, false, false, '#ref-list-secondmid-enter'); + }); + + test('Double Enter at second middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 3, false, true, '#ref-list-secondmid-dblenter'); + }); + + test('Enter at second end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 6, false, false, '#ref-list-secondend-enter'); + }); + + test('Double Enter at second end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 6, false, true, '#ref-list-secondend-dblenter'); + }); + + test('Enter at last start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 0, false, false, '#ref-list-laststart-enter'); + }); + + test('Double Enter at last start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 0, false, true, '#ref-list-laststart-dblenter'); + }); + + test('Enter at last middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 2, false, false, '#ref-list-lastmid-enter'); + }); + + test('Double Enter at last middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 2, false, true, '#ref-list-lastmid-dblenter'); + }); + + test('Enter at last end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 5, false, false, '#ref-list-lastend-enter'); + }); + + test('Double Enter at last end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 5, false, true, '#ref-list-lastend-dblenter'); + }); + + module('Special List Enter Handling Tests', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-list-special1'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Enter after empty b', function () { + // function doEnterTest(editable, container, offset, shift, twice, reference) { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(1), 0, false, false, '#ref-list-enter-emptyb'); + }); + + + module('List Shift Enter Handling', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-list'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + + // aloha'fy the editable + this.edit.aloha(); + }, + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + test('Shift Enter at first start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 0, true, false, '#ref-list-firststart-shift-enter'); + }); + + test('Double Shift Enter at first start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 0, true, true, '#ref-list-firststart-shift-dblenter'); + }); + + test('Shift Enter at first middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 2, true, false, '#ref-list-firstmid-shift-enter'); + }); + + test('Double Shift Enter at first middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 2, true, true, '#ref-list-firstmid-shift-dblenter'); + }); + + test('Shift Enter at first end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 5, true, false, '#ref-list-firstend-shift-enter'); + }); + + test('Double Shift Enter at first end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(0).contents().get(0), 5, true, true, '#ref-list-firstend-shift-dblenter'); + }); + + test('Shift Enter at second start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 0, true, false, '#ref-list-secondstart-shift-enter'); + }); + + test('Double Shift Enter at second start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 0, true, true, '#ref-list-secondstart-shift-dblenter'); + }); + + test('Shift Enter at second middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 3, true, false, '#ref-list-secondmid-shift-enter'); + }); + + test('Double Shift Enter at second middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 3, true, true, '#ref-list-secondmid-shift-dblenter'); + }); + + test('Shift Enter at second end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 6, true, false, '#ref-list-secondend-shift-enter'); + }); + + test('Double Shift Enter at second end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(1).contents().get(0), 6, true, true, '#ref-list-secondend-shift-dblenter'); + }); + + test('Shift Enter at last start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 0, true, false, '#ref-list-laststart-shift-enter'); + }); + + test('Double Shift Enter at last start', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 0, true, true, '#ref-list-laststart-shift-dblenter'); + }); + + test('Shift Enter at last middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 2, true, false, '#ref-list-lastmid-shift-enter'); + }); + + test('Double Shift Enter at last middle', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 2, true, true, '#ref-list-lastmid-shift-dblenter'); + }); + + test('Shift Enter at last end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 5, true, false, '#ref-list-lastend-shift-enter'); + }); + + test('Double Shift Enter at last end', function () { + doEnterTest(this.edit, this.edit.find('li').eq(2).contents().get(0), 5, true, true, '#ref-list-lastend-shift-dblenter'); + }); + }); +}); diff --git a/modules/core/aloha/static/test/unit/forwarddelete.html b/modules/core/aloha/static/test/unit/forwarddelete.html new file mode 100644 index 000000000..e73fa34da --- /dev/null +++ b/modules/core/aloha/static/test/unit/forwarddelete.html @@ -0,0 +1,58 @@ + + + + + Aloha Editor command forwardDelete tests + + + + + + + + + + + + + + + + + + + + +

                                                                  Aloha Editor forwardDelete tests

                                                                  + +

                                                                  + +
                                                                  +

                                                                  +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                + + diff --git a/modules/core/aloha/static/test/unit/forwarddeletetest.js b/modules/core/aloha/static/test/unit/forwarddeletetest.js new file mode 100644 index 000000000..50351d0aa --- /dev/null +++ b/modules/core/aloha/static/test/unit/forwarddeletetest.js @@ -0,0 +1,1441 @@ +// Just used for single testing +var specifictests = { + defaultValue:'', + defaultCommand:'forwarddelete', + tests:[ + + ] +} + + +/** + * Tests that currently freeze ie + */ +/* + { start: '

                                                                foo[]

                                                                bar', + execResult: '

                                                                foo[]bar

                                                                ' + }, + { start: '

                                                                foo[]

                                                                bar', + execResult: '

                                                                foo[]bar

                                                                ' + }, + */ + + +var alltests = { + defaultValue:'', + defaultCommand:'forwarddelete', + tests:[ + + + { + start:'

                                                                before table[]

                                                                after table

                                                                ', + execResult:'

                                                                before table[]

                                                                after table

                                                                ' + }, + { + start:'

                                                                before table[]

                                                                after table

                                                                ', + execResult:'

                                                                before table[]

                                                                after table

                                                                ' + }, + { + start:'

                                                                before table[]

                                                                ' + "\n" + '

                                                                after table

                                                                ', + execResult:'

                                                                before table[]

                                                                after table

                                                                ' + }, + { + start:'

                                                                before table[]

                                                                after table

                                                                ', + execResult:'

                                                                before table[]

                                                                after table

                                                                ' + }, + { + start:'

                                                                be[]fore table

                                                                after table

                                                                ', + execResult:'

                                                                be[]ore table

                                                                after table

                                                                ' + }, + { + start:'

                                                                before table[]

                                                                after table

                                                                ', + execResult:'

                                                                before table[]

                                                                after table

                                                                ' + }, + +// It is impossible to get a selection like this in ie + + { exclude:'msie', + start:'foo{

                                                                bar

                                                                }baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'foo

                                                                {bar

                                                                }baz', + execResult:'foo

                                                                []baz

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[

                                                                ]bar
                                                                baz', + execResult:'

                                                                foo[]bar

                                                                baz' + }, + { exclude:'msie', + start:'

                                                                foo{

                                                                }bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[

                                                                ]bar

                                                                baz

                                                                ', + execResult:'

                                                                foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[

                                                                ]bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + + +// Tests that had to be adapted to work for ie + + + // These tests will currently not work in ie since ie won't accept this + // cursor position. It won't allow the cursor to be placed directly in + // front of an blocklevel element like div/pre/blockquote. + // This will only work when a space will be put between the blocklevel element + // and the cursor position. This additional space will then create problems + // when executing the forward delete command. A test that includes that + // will just delete the space and than reposition the cursor inside the + // next block level element and than ie magic kicks in which adds a + // space just before the blocklevel element it just entered. + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo[]bar' + }, +// { exclude: 'msie', +// start: 'foo[]

                                                                bar
                                                                baz', +// execResult: 'foo[]baz' +// }, + // This test fails due to selection error. See newIETests + { exclude:'msie', + start:'foo[]
                                                                bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]
                                                                bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]
                                                                bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]
                                                                bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]
                                                                1. bar

                                                                extra', + execResult:'foo[]bar

                                                                extra

                                                                ' + }, + { exclude:'msie', + start:'foo[]
                                                                bar
                                                                1. baz
                                                                quz

                                                                extra', + execResult:'foo[]bar

                                                                1. baz
                                                                quz

                                                                extra

                                                                ' + }, + { exclude:['msie', 'mozilla'], + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:'mozilla', + start:'foo{}


                                                                ', + execResult:'foo{}' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + { exclude:['msie', 'mozilla'], + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:['mozilla'], + start:'foo{}


                                                                ', + execResult:'foo{}' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}' + }, + { exclude:'msie', + start:'foo[]

                                                                bar', + execResult:'foo[]bar' + }, + { include:'msie', + start:'foo[]

                                                                bar', + execResult:'foo

                                                                []ar

                                                                ' + }, + { exclude:'msie', + start:'foo[]
                                                                1. bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo[]bar' + }, + { include:'msie', + start:'foo[]
                                                                1. bar
                                                                ', + execResult:'foo
                                                                1. []ar
                                                                ' + }, + { include:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo

                                                                []ar

                                                                ' + }, + { include:'msie', + start:'foo
                                                                1. bar[]
                                                                  1. baz
                                                                2. quz

                                                                extra', + execResult:'foo

                                                                1. bar[]baz
                                                                2. quz

                                                                extra

                                                                ' + }, + { include:'msie', + start:'foo
                                                                bar[]
                                                                baz', + execResult:'foo
                                                                bar[]
                                                                baz' + }, + { include:'msie', + start:'
                                                                foo[]
                                                                bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { include:'msie', + start:'

                                                                foo

                                                                1. bar
                                                                2. ba[z

                                                                q]uz', + execResult:'

                                                                foo

                                                                1. bar
                                                                2. ba[]uz
                                                                ' + }, + { include:'msie', + start:'foo
                                                                bar[]

                                                                baz', + execResult:'foo
                                                                bar[]

                                                                baz' + }, + + +// IE Special cases + + + // After deletion of the br tag the cursor will automatically be placed + // inside the paragraph and a additional space will be added. See 'Tests + // that currently can't work in ie.' for more information. + { include:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo

                                                                []bar

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo[]bar' + }, + { exclude:['msie', 'mozilla'], + start:'foo{}

                                                                ', + execResult:'foo[]' + }, + { include:'mozilla', + start:'foo{}

                                                                ', + execResult:'foo{}' + }, + { include:'msie', + start:'foo{}

                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + // Special case. The IE Currently transforms non + // breakable spaces in a very odd way. + { include:'msie', + start:'foo  [] bar', + execResult:'foo  []bar' + }, + // This test somehow creates a broken dom entry in ie + { start:'foo[]bar', + execResult:'foo[]ar' + }, + + +// Tests OK in IE + + + { start:'
                                                                1. foo[]
                                                                2. bar
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { start:'
                                                                1. foo[]

                                                                2. bar
                                                                ', + execResult:'
                                                                1. foo[]bar

                                                                ' + }, + { start:'
                                                                1. foo[]
                                                                bar', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { start:'

                                                                foo[bar

                                                                baz]quz', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                foo[bar

                                                                baz]quz', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                foo[bar

                                                                baz]quz', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                foo[bar

                                                                baz]quz

                                                                ', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                {foobar}baz

                                                                ', + execResult:'

                                                                []baz

                                                                ' + }, + { start:'

                                                                [foobar]baz

                                                                ', + execResult:'

                                                                []baz

                                                                ' + }, + { start:'
                                                                1. foo[]

                                                                2. bar

                                                                ', + execResult:'
                                                                1. foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'
                                                                1. foo[
                                                                2. ]bar
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, +// { start: '

                                                                foo[]
                                                                bar

                                                                baz', +// execResult: '

                                                                foo[]
                                                                bar

                                                                baz' +// }, + { start:'

                                                                fo[o

                                                                1. bar
                                                                2. baz

                                                                q]uz', + execResult:'

                                                                fo[]uz

                                                                ' + }, + { start:'
                                                                1. fo[o
                                                                1. b]ar
                                                                ', + execResult:'
                                                                1. fo[]ar
                                                                ' + }, + // After deletion the cursor jumps into the span and the spaces are somehow modified + { include:'msie', + start:'foo  [] bar', + execResult:'foo  []bar' + }, + { start:'foo[]  bar', + execResult:'foo[] bar' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[]


                                                                bar', + execResult:'

                                                                foo[]

                                                                bar

                                                                ' + }, + { start:'
                                                                foo[]
                                                                bar
                                                                ', + execResult:'
                                                                foo[]bar
                                                                ' + }, + { start:'
                                                                foo[]
                                                                bar', + execResult:'
                                                                foo[]bar
                                                                ' + }, + { start:'foo[]
                                                                bar', + execResult:'foo[]bar' + }, + { start:'foo[]
                                                                bar', + execResult:'foo[]bar' + }, + { start:'foo[]
                                                                bar', + execResult:'foo[]bar' + }, + { start:'fo[ob]arbaz', + execResult:'fo[]arbaz' + }, + // Collapsed selection + { start:'foo[]', + execResult:'foo[]' + }, + { start:'foo[]', + execResult:'foo[]' + }, + { start:'

                                                                foo[]

                                                                ', + execResult:'

                                                                foo[]

                                                                ' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo{}bar', + execResult:'foo[]ar' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]barbaz', + execResult:'foo[]az' + }, + { start:'fo[]öbar', + execResult:'fo[]bar' + }, + { start:'fo[]bar', + execResult:'fo[]ar' + }, + { start:'fo[]ö̧bar', + execResult:'fo[]bar' + }, + { start:'[]öbar', + execResult:'[]bar' + }, + { start:'[]öbar', + execResult:'[]bar' + }, + { start:'[]ö̧bar', + execResult:'[]bar' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]

                                                                bar

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]

                                                                bar' + }, + { exclude:'msie', + start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]bar' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]  bar', + execResult:'foo[] bar' + }, + { start:'foo[] bar', + execResult:'foo[]bar' + }, + { start:'
                                                                foo [] 
                                                                ', + execResult:'
                                                                foo []
                                                                ' + }, + { start:'
                                                                []  foo
                                                                ', + execResult:'
                                                                [] foo
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'[]  foo', + execResult:'[] foo' + }, + { start:'foo[]  bar', + execResult:'foo[] bar' + }, + { start:'foo[]  bar', + execResult:'foo[] bar' + }, + { start:'foo[] bar', + execResult:'foo[]bar' + }, + { start:'foo[]   bar', + execResult:'foo[]  bar' + }, + { start:'foo []  bar', + execResult:'foo []bar' + }, + { start:'foo[]   bar', + execResult:'foo[]  bar' + }, + { start:'foo[]  bar', + execResult:'foo[] bar' + }, + { include:'msie', + start:'foo 1 [] bar', + execResult:'foo 1 []bar' + }, + { exclude:'msie', + start:'foo  [] bar', + execResult:'foo []bar' + }, + { start:'foo[

                                                                ]bar

                                                                baz', + execResult:'foo[]bar
                                                                baz' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'foo[
                                                                ]bar', + execResult:'foo[]bar' + }, + { start:'

                                                                foo[

                                                                ]bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[

                                                                ]bar
                                                                baz

                                                                ', + execResult:'

                                                                foo[]bar
                                                                baz

                                                                ' + }, + { start:'foo[

                                                                ]bar

                                                                ', + execResult:'foo[]bar' + }, + { start:'foo{

                                                                }bar

                                                                ', + execResult:'foo[]bar' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[] bar
                                                                ', + execResult:'
                                                                foo[]bar
                                                                ' + }, + { start:'
                                                                foo [] 
                                                                ', + execResult:'
                                                                foo []
                                                                ' + }, + { start:'
                                                                []  foo
                                                                ', + execResult:'
                                                                [] foo
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[] bar
                                                                ', + execResult:'
                                                                foo[]bar
                                                                ' + }, + { start:'
                                                                foo [] 
                                                                ', + execResult:'
                                                                foo []
                                                                ' + }, + { start:'
                                                                []  foo
                                                                ', + execResult:'
                                                                [] foo
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[] bar
                                                                ', + execResult:'
                                                                foo[]bar
                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'
                                                                foo[bar

                                                                baz]quz', + execResult:'

                                                                foo[]quz
                                                                ' + }, + { start:'
                                                                foo[bar
                                                                baz]quz
                                                                ', + execResult:'
                                                                foo[]quz
                                                                ' + }, + { exclude:'msie', + start:'foo[

                                                                ]bar

                                                                baz
                                                                ', + execResult:'foo[]bar
                                                                baz
                                                                ' + }, + { include:'msie', + start:'foo[

                                                                ]bar

                                                                baz
                                                                ', + execResult:'foo[]bar
                                                                baz
                                                                ' + }, + { start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'

                                                                foo[]


                                                                bar

                                                                ', + execResult:'

                                                                foo[]

                                                                bar

                                                                ' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { exclude:'msie', + start:'foo
                                                                1. bar[]
                                                                  1. baz
                                                                2. quz

                                                                extra', + execResult:'foo

                                                                1. bar[]baz
                                                                2. quz

                                                                extra

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]



                                                                bar

                                                                ', + execResult:'

                                                                foo[]


                                                                bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]

                                                                bar

                                                                ' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'
                                                                foo[] bar
                                                                ', + execResult:'
                                                                foo[]bar
                                                                ' + }, +// { exclude: 'msie', +// start: 'foo
                                                                bar[]
                                                                baz', +// execResult: 'foo
                                                                bar[]
                                                                baz' +// }, +// { start: '

                                                                foo
                                                                bar[]

                                                                baz', +// execResult: '

                                                                foo
                                                                bar[]

                                                                baz' +// }, +// { exclude: 'msie', +// start: '
                                                                foo[]
                                                                bar
                                                                ', +// execResult: '
                                                                foo[]bar
                                                                ' +// }, +// { start: '
                                                                foo[]
                                                                bar
                                                                ', +// execResult: '
                                                                foo[]
                                                                bar
                                                                ' +// }, +// { exclude: 'msie', +// start: 'foo
                                                                bar[]

                                                                baz', +// execResult: 'foo
                                                                bar[]

                                                                baz' +// }, + + { exclude:'msie', + start:'foo[]

                                                                1. bar
                                                                2. baz
                                                                ', + execResult:'foo[]bar
                                                                1. baz
                                                                ' + }, + { include:'msie', + start:'foo[]
                                                                1. bar
                                                                2. baz
                                                                ', + execResult:'foo
                                                                1. []ar
                                                                2. baz
                                                                ' + }, + { exclude:'msie', + start:'foo[]
                                                                1. bar
                                                                2. baz
                                                                ', + execResult:'foo[]bar
                                                                1. baz
                                                                ' + }, + { include:'msie', + start:'foo[]
                                                                1. bar
                                                                2. baz
                                                                ', + execResult:'foo
                                                                1. []bar
                                                                2. baz
                                                                ' + }, +// { start: '

                                                                foo[]

                                                                bar
                                                                ', +// execResult: '

                                                                foo[]bar

                                                                ' +// }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar
                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + + +// Cases we don't care about + +// Yeah well I dunno +// { start: '[]שָׁלוֹם', +// execResult: '[]שָׁלוֹם' +// }, +// Don't care about that case +// { start: 'foo[]baz', +// execResult: 'foo[]baz' +// }, +// { start: 'foo[]

                                                                bar

                                                                ', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]

                                                                bar

                                                                ', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]

                                                                bar

                                                                ', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]

                                                                bar

                                                                ', +// execResult: 'foo[]bar' +// }, +// { start: '

                                                                foo[]

                                                                bar', +// execResult: '

                                                                foo[]bar

                                                                ' +// }, + + + + +// Tests with errors in ie + { exclude:'msie', + start:'foo   []bar', + execResult:'foo  [] []ar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + // This tests creates a broken dom node + { start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'

                                                                foo[]


                                                                bar

                                                                ', + execResult:'

                                                                foo[]

                                                                bar

                                                                ' + }, +// { start: '

                                                                foo[bar

                                                                baz]quz

                                                                ', // TODO nesting div's into p's is not allowed +// execResult: '

                                                                foo[]quz

                                                                ' +// }, + { start:'

                                                                foo[bar

                                                                baz]quz

                                                                ', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                foo[bar

                                                                baz]quz

                                                                ', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'foo[

                                                                ]bar

                                                                ', + execResult:'foo[]bar' + }, + { start:'
                                                                1. foo[]
                                                                2. bar

                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'
                                                                1. fo[o
                                                                • b]ar
                                                                ', + execResult:'
                                                                1. fo[]ar
                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'foo[
                                                                1. ]bar
                                                                ', + execResult:'foo[]bar' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[barbaz]quz

                                                                ', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[barbaz]quz

                                                                ', + execResult:'

                                                                foo[]quz

                                                                ' + }, + { start:'

                                                                foo

                                                                1. ba[r
                                                                2. b]az

                                                                quz

                                                                ', + execResult:'

                                                                foo

                                                                1. ba[]az

                                                                quz

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo

                                                                1. bar
                                                                2. [baz]

                                                                quz', + execResult:'

                                                                foo

                                                                1. bar
                                                                2. {}

                                                                quz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo

                                                                1. bar
                                                                2. [baz]

                                                                quz', + execResult:'

                                                                foo

                                                                1. bar
                                                                2. []

                                                                quz

                                                                ' + }, + { exclude:'msie', + start:'

                                                                fo[o

                                                                1. b]ar
                                                                2. baz

                                                                quz', + execResult:'

                                                                fo[]ar

                                                                1. baz

                                                                quz

                                                                ' + }, + { include:'msie', + start:'

                                                                fo[o

                                                                1. b]ar
                                                                2. baz

                                                                quz', + execResult:'

                                                                fo[]ar

                                                                1. baz

                                                                quz

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo

                                                                1. bar
                                                                2. ba[z

                                                                q]uz', + execResult:'

                                                                foo

                                                                1. bar
                                                                2. ba[]uz
                                                                ' + }, + { exclude:'msie', + start:'

                                                                fo[o

                                                                1. bar
                                                                2. b]az

                                                                quz', + execResult:'

                                                                fo[]az

                                                                quz

                                                                ' + }, + { include:'msie', + start:'

                                                                fo[o

                                                                1. bar
                                                                2. b]az

                                                                quz', + execResult:'

                                                                fo[]az

                                                                quz

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[]

                                                                bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { start:'

                                                                foo[barbaz]

                                                                ', + execResult:'

                                                                foo{}

                                                                ' + }, + { start:'

                                                                foo{barbaz}', + execResult:'

                                                                foo{}

                                                                ' + }, + // This test fails since ie places the collapsed range at the beginning of bar. + { exclude:'msie', + start:'foo[]

                                                                bar

                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'

                                                                {}

                                                                foo', + execResult:'

                                                                []foo

                                                                ' + }, + { include:'msie', + start:'

                                                                {}

                                                                foo', + execResult:'

                                                                {}

                                                                foo' + }, + { exclude:'msie', + start:'

                                                                {}

                                                                foo', + execResult:'

                                                                []foo' + }, + { include:'msie', + start:'

                                                                {}

                                                                foo', + execResult:'

                                                                {}

                                                                foo' + }, + { exclude:'msie', + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + { exclude:'msie', + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + { exclude:'msie', + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + { exclude:'msie', + start:'foo{}


                                                                ', + execResult:'foo[]' + }, + { include:'msie', + start:'foo{}


                                                                ', + execResult:'foo

                                                                {}

                                                                ' + }, + { include:'msie', + start:'foo [] ', + execResult:'foo []' + }, + { exclude:'msie', + start:'foo [] ', + execResult:'foo []' + }, + { include:'msie', + start:'foo[]  bar', + execResult:'foo[] bar' + }, + { exclude:'msie', + start:'foo[]  bar', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'
                                                                foo[
                                                                ]bar
                                                                baz
                                                                ', + execResult:'
                                                                foo[]bar
                                                                baz
                                                                ' + }, + { include:'msie', + start:'
                                                                foo[
                                                                ]bar
                                                                baz
                                                                ', + execResult:'
                                                                foo[]bar
                                                                baz
                                                                ' + }, + { exclude:'msie', // this selection cannot be done in IE + start:'
                                                                1. foo[]
                                                                  • bar
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { exclude:'msie', // this selection cannot be done in IE + start:'foo[]
                                                                  1. bar
                                                                ', + execResult:'foo[]bar' + }, + { exclude:'msie', + start:'

                                                                foo[bar]baz', + execResult:'

                                                                foo[]baz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[bar]baz', + execResult:'

                                                                foo[]baz

                                                                ' + }, + { start:'

                                                                foo{bar}baz', + execResult:'

                                                                foo[]baz

                                                                ' + }, + { exclude:'msie', // this selection cannot be done in IE + start:'

                                                                foo{bar}baz', + execResult:'

                                                                foo[]baz

                                                                ' + }, + { exclude:'msie', + start:'foo[
                                                                ]bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { include:'msie', + start:'foo[
                                                                ]bar

                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { start:'

                                                                foo

                                                                bar[
                                                                ]baz', + execResult:'

                                                                foo

                                                                bar[]baz
                                                                ' + }, + { exclude:'msie', + start:'
                                                                foo

                                                                bar[

                                                                ]baz', + execResult:'
                                                                foo

                                                                bar[]baz

                                                                ' + }, + { include:'msie', + start:'
                                                                foo

                                                                bar[

                                                                ]baz', + execResult:'
                                                                foo

                                                                bar[]baz

                                                                ' + }, + + { exclude:'msie', // this is an impossible selection in IE + start:'

                                                                foo
                                                                {

                                                                ]bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:['msie', 'mozilla'], // this is an impossible selection in IE + start:'

                                                                foo

                                                                {

                                                                ]bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + //@todo NS_ERROR_DOM_INDEX_SIZE_ERR exception in FF: rangy-core.js line 2055 at: + //"rangeProto.setStart = function(node, offset) { this.nativeRange.setStart(node, offset);" + //see also deletetest.js for that problem + // This selection is not possible in ie + { exclude:'msie', + start:'foo{

                                                                }bar

                                                                ', + execResult:'foo[]bar' + }, + // This selection is not possible in ie + { exclude:['msie', 'mozilla'], + start:'foo

                                                                {

                                                                ]bar

                                                                ', + execResult:'foo[]bar' + }, + { include:['mozilla'], // correct?! + start:'foo

                                                                {

                                                                ]bar

                                                                ', + execResult:'foo
                                                                bar{}' + }, + { start:'

                                                                foo
                                                                {

                                                                }bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + // This selection is not possible in ie + { exclude:['msie', 'mozilla'], + start:'

                                                                foo

                                                                {

                                                                }bar

                                                                ', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { include:'mozilla', // correct?! + start:'

                                                                foo

                                                                {

                                                                }bar

                                                                ', + execResult:'

                                                                foo
                                                                []bar

                                                                ' + }, + { exclude:'msie', + start:'

                                                                foo[bar

                                                                baz]quz

                                                                qozfoo[]quz

                                                                qoz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo[bar

                                                                baz]quz

                                                                qozfoo[]quz

                                                                qoz

                                                                ' + }, + { include:'msie', + start:'
                                                                foo
                                                                bar[
                                                                ]baz
                                                                ', + execResult:'
                                                                foo
                                                                bar[]baz
                                                                ' + }, + { exclude:'msie', + start:'
                                                                foo
                                                                bar[
                                                                ]baz
                                                                ', + execResult:'
                                                                foo
                                                                bar[]baz
                                                                ' + }, + { include:'msie', + start:'

                                                                foo

                                                                [bar

                                                                baz]

                                                                ', + execResult:'

                                                                foo

                                                                []

                                                                ' + }, + { include:'mozilla', + start:'

                                                                foo

                                                                [bar

                                                                baz]

                                                                ', + execResult:'

                                                                foo

                                                                {}

                                                                ' + }, + { exclude:['msie', 'mozilla'], + start:'

                                                                foo

                                                                [bar

                                                                baz]

                                                                ', + execResult:'

                                                                foo[]

                                                                ' + }, + // Its not possible to create a selection like this in ie and chrome + { exclude:'msie', + start:'foo[

                                                                ]bar
                                                                baz

                                                                ', + execResult:'foo[]bar

                                                                baz

                                                                ' + }, + { exclude:['msie', 'mozilla'], + start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { include:'mozilla', + start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'

                                                                foo

                                                                [bar]

                                                                baz

                                                                ', + execResult:'

                                                                foo[]

                                                                baz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo

                                                                [bar]

                                                                baz

                                                                ', + execResult:'

                                                                foo

                                                                []

                                                                baz

                                                                ' + }, + // This selection is not supported by ie. {} will be transformed to [] + { exclude:'msie', + start:'

                                                                foo

                                                                {bar}

                                                                baz

                                                                ', + execResult:'

                                                                foo[]

                                                                baz

                                                                ' + }, + { exclude:['msie', 'mozilla'], + start:'

                                                                foo

                                                                {bar

                                                                }

                                                                baz

                                                                ', + execResult:'

                                                                foo[]

                                                                baz

                                                                ' + }, + { include:'msie', + start:'

                                                                foo

                                                                {bar

                                                                }

                                                                baz

                                                                ', + execResult:'

                                                                foo

                                                                []

                                                                baz

                                                                ' + }, + { include:'mozilla', + start:'

                                                                foo

                                                                {bar

                                                                }

                                                                baz

                                                                ', + execResult:'

                                                                foo

                                                                {}

                                                                baz

                                                                ' + }, + // Selection not supported by ie + { exclude:['msie', 'mozilla'], + start:'

                                                                foo

                                                                {

                                                                bar}

                                                                baz

                                                                ', + execResult:'

                                                                foo[]

                                                                baz

                                                                ' + }, + { include:'mozilla', + start:'

                                                                foo

                                                                {

                                                                bar}

                                                                baz

                                                                ', + execResult:'

                                                                foo

                                                                {}

                                                                baz

                                                                ' + }, + // Selection not supported by ie + { exclude:['msie', 'mozilla'], + start:'

                                                                foo

                                                                {

                                                                bar

                                                                }

                                                                baz

                                                                ', + execResult:'

                                                                foo[]

                                                                baz

                                                                ' + }, + { include:'mozilla', + start:'

                                                                foo

                                                                {

                                                                bar

                                                                }

                                                                baz

                                                                ', + execResult:'

                                                                foo

                                                                {}

                                                                baz

                                                                ' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { exclude:'msie', + start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { include:'msie', + start:'
                                                                foo[]  bar
                                                                ', + execResult:'
                                                                foo[] bar
                                                                ' + }, + { exclude:'msie', + start:'
                                                                []  foo
                                                                ', + execResult:'
                                                                [] foo
                                                                ' + }, + { include:'msie', + start:'
                                                                []  foo
                                                                ', + execResult:'
                                                                [] foo
                                                                ' + }, + { start:'
                                                                []  feo
                                                                ', + execResult:'
                                                                [] feo
                                                                ' + }, + { start:'
                                                                [] feo
                                                                ', + execResult:'
                                                                []feo
                                                                ' + }, + { exclude:'mozilla', + start:'
                                                                1. foo[]

                                                                bar

                                                                ', + execResult:'
                                                                1. foo[]

                                                                bar

                                                                ' + }, + { include:'mozilla', + start:'
                                                                1. foo[]

                                                                bar

                                                                ', + execResult:'
                                                                1. foo{}

                                                                bar

                                                                ' + }, + { start:'
                                                                1. {}

                                                                bar', + execResult:'

                                                                1. {}

                                                                bar

                                                                ' + }, + { start:'
                                                                1. foo[]
                                                                bar', + execResult:'
                                                                1. foo[]
                                                                bar' + }, + { start:'
                                                                1. {}
                                                                bar', + execResult:'
                                                                1. {}
                                                                bar' + }, + { start:'
                                                                1. foo
                                                                2. {}
                                                                bar', + execResult:'
                                                                1. foo
                                                                2. {}
                                                                bar' + }, + { start:'
                                                                1. foo[]

                                                                bar

                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { start:'
                                                                1. foo
                                                                2. {}

                                                                bar', + execResult:'

                                                                1. foo
                                                                2. {}

                                                                bar' + }, + { exclude:'mozilla', + start:'

                                                                1. foo[]

                                                                ', + execResult:'
                                                                1. foo[]
                                                                ' + }, + { include:'mozilla', + start:'
                                                                1. foo[]

                                                                ', + execResult:'
                                                                1. foo{}
                                                                ' + }, + { start:'
                                                                1. foo[]

                                                                ', + execResult:'
                                                                1. foo[]

                                                                ' + }, + { start:'
                                                                1. {}

                                                                ', + execResult:'
                                                                1. {}

                                                                ' + }, + { start:'
                                                                1. foo
                                                                2. {}

                                                                ', + execResult:'
                                                                1. foo
                                                                2. {}

                                                                ' + }, + { exclude:'msie', + start:'
                                                                1. foo[]


                                                                ', + execResult:'
                                                                1. foo[]
                                                                ' + }, + { include:'msie', + start:'
                                                                1. foo[]

                                                                ', + execResult:'
                                                                1. foo[]
                                                                ' + }, + { start:'
                                                                1. foo[]


                                                                ', + execResult:'
                                                                1. foo[]


                                                                ' + }, + { start:'
                                                                1. {}


                                                                ', + execResult:'
                                                                1. {}


                                                                ' + }, + { start:'
                                                                1. foo
                                                                2. {}


                                                                ', + execResult:'
                                                                1. foo
                                                                2. {}


                                                                ' + }, + { exclude:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo[bar]baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { exclude:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { include:'msie', + start:'foo{bar}baz', + execResult:'foo[]baz' + }, + { start:'foo[barbaz]quz', + execResult:'foo[]quz' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { exclude:'msie', + start:'foo[]
                                                                bar', + execResult:'foo[]bar' + }, + { include:'msie', + start:'foo[]
                                                                bar', + execResult:'foo[]bar' + }, + { include:'msie', + start:'
                                                                1. foo[]
                                                                2. bar
                                                                ', + execResult:'
                                                                1. foo[]
                                                                2. bar
                                                                ' + }, + { exclude:'msie', + start:'
                                                                1. foo[]
                                                                2. bar
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                ' + }, + { start:'
                                                                1. foo[]
                                                                2. bar
                                                                  baz
                                                                ', + execResult:'
                                                                1. foo[]bar
                                                                  baz
                                                                ' + }, + { exclude:'msie', + start:'foo []  bar', + execResult:'foo [] bar' + }, + { include:'msie', + start:'foo []  bar', + execResult:'foo []bar' + }, + { include:'msie', + start:'foo

                                                                {bar

                                                                }baz', + execResult:'foo

                                                                []

                                                                baz' + }, + { exclude:'mozilla', + start:'foo{

                                                                bar}

                                                                baz', + execResult:'foo[]
                                                                baz' + }, + { include:'mozilla', + start:'foo{

                                                                bar}

                                                                baz', + execResult:'foo{}
                                                                baz' + }, + { start:'

                                                                foo[

                                                                ]bar', + execResult:'

                                                                foo[]bar

                                                                ' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + // IE jumps into the empty span after the character of the next textnode has been deleted. Deletion of the emptyspan will be omitted + { include:'msie', + start:'foo[]bar', + execResult:'foo{}ar' + }, + { include:'msie', + start:'foo[] bar', + execResult:'foo{}bar' + }, + { exclude:'msie', + start:'foo{}bar', + execResult:'foo[]{}ar' + }, + // IE will automatically jump between both spans since there is no free space in the textnode + { include:'msie', + start:'foo{}bar', + execResult:'foo{}ar' + }, + { exclude:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { include:'msie', + start:'foo[]bar', + execResult:'foo[]ar' + }, + { start:'foo[]\n\t\t\tbar', + execResult:'foo[]bar' + }, + { start:'foo[] bar', + execResult:'foo[]bar' + }, + { + start:'foo []b baz', + execResult:'foo [] baz' + }, + { + start:' []f bar', + execResult:' [] bar' + }, + { + start:'foo [bar] baz', + execResult:'foo [] baz' + } + + +// Tests with no expected result +// { start: '

                                                                foo[]

                                                                bar', +// execResult: '' +// }, +// { start: '

                                                                foo[]

                                                                bar', +// execResult: '' +// }, +// { start: '

                                                                foo[]

                                                                bar', +// execResult: '' +// }, +// { start: 'שָׁל[]וֹם', +// execResult: '' +// }, +// { start: 'foo[

                                                                ]bar
                                                                baz
                                                                ', +// execResult: '' +// }, +// { start: 'foo[
                                                                ]bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[
                                                                ]bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[bar]baz
                                                                quzqozqiz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                fooba[rb]az
                                                                quzqozqiz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                fo[obarb]az
                                                                quzqozqiz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foobarba[z
                                                                q]uzqozqiz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                [foobarbaz]
                                                                quzqozqiz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                [foobarbaz
                                                                quzqozqiz]
                                                                ', +// execResult: '' +// }, +// { start: '{
                                                                foobarbaz
                                                                quzqozqiz
                                                                }', +// execResult: '' +// }, +// { start: '
                                                                fooba[r
                                                                bazquz
                                                                q]ozqiz
                                                                ', +// execResult: '' +// }, +// { start: '

                                                                fo[o
                                                                b]ar

                                                                baz', +// execResult: '' +// }, +// { start: '

                                                                foo
                                                                ba[r

                                                                b]az', +// execResult: '' +// }, +// { start: '

                                                                fo[o
                                                                bar

                                                                b]az', +// execResult: '' +// }, +// { start: 'foo[]

                                                                bar
                                                                baz
                                                                ', +// execResult: '' +// }, +// { start: 'foo[]
                                                                bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[]
                                                                bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[]
                                                                bar
                                                                baz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo
                                                                bar[]
                                                                baz
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[]
                                                                bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[]

                                                                bar
                                                                ', +// execResult: '' +// }, +// { start: 'foo[]
                                                                bar
                                                                baz', +// execResult: '' +// }, +// { start: 'foo
                                                                bar[]
                                                                baz', +// execResult: '' +// }, +// { start: '

                                                                foo[]
                                                                bar

                                                                baz', +// execResult: '' +// }, +// { start: '
                                                                foo[]bar
                                                                ', +// execResult: '' +// }, +// { start: '
                                                                foo[]
                                                                bar
                                                                ', +// execResult: '' +// }, +// { start: 'foo[]
                                                                bar
                                                                baz', +// execResult: '' +// }, +// { start: '
                                                                {}
                                                                foo', // no td specific tests for us. +// execResult: '' +// }, +// { start: '
                                                                {}
                                                                foo', +// execResult: '' +// }, +// { start: '
                                                                {}
                                                                foo', +// execResult: '' +// } + ] +} + +//var tests = specifictests; +var tests = alltests; \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/htmlbeautifier.js b/modules/core/aloha/static/test/unit/htmlbeautifier.js new file mode 100644 index 000000000..1a542f304 --- /dev/null +++ b/modules/core/aloha/static/test/unit/htmlbeautifier.js @@ -0,0 +1,468 @@ +/* + + Style HTML + --------------- + + Written by Nochum Sossonko, (nsossonko@hotmail.com) + + Based on code initially developed by: Einar Lielmanis, + http://jsbeautifier.org/ + + + You are free to use this in any way you want, in case you find this useful or working for you. + + Usage: + style_html(html_source); + + style_html(html_source, options); + + The options are: + indent_size (default 4) — indentation size, + indent_char (default space) — character to indent with, + max_char (default 70) - maximum amount of characters per line, + brace_style (default "collapse") - "collapse" | "expand" | "end-expand" + put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line. + unformatted (default ['a']) - list of tags, that shouldn't be reformatted + + e.g. + + style_html(html_source, { + 'indent_size': 2, + 'indent_char': ' ', + 'max_char': 78, + 'brace_style': 'expand', + 'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u'] + }); + */ + +function style_html(html_source, options) { +//Wrapper function to invoke all the necessary constructors and deal with the output. + + var multi_parser, + indent_size, + indent_character, + max_char, + brace_style; + + options = options || {}; + indent_size = options.indent_size || 4; + indent_character = options.indent_char || ' '; + brace_style = options.brace_style || 'collapse'; + max_char = options.max_char || '70'; + unformatted = options.unformatted || ['a']; + + function Parser() { + + this.pos = 0; //Parser position + this.token = ''; + this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT + this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values + parent:'parent1', + parentcount:1, + parent1:'' + }; + this.tag_type = ''; + this.token_text = this.last_token = this.last_text = this.token_type = ''; + + this.Utils = { //Uilities made available to the various functions + whitespace:"\n\r\t ".split(''), + single_token:'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed'.split(','), //all the single tags for HTML + extra_liners:'head,body,/html'.split(','), //for tags that need a line of whitespace before them + in_array:function (what, arr) { + for (var i = 0; i < arr.length; i++) { + if (what === arr[i]) { + return true; + } + } + return false; + } + } + + this.get_content = function () { //function to capture regular content between tags + + var input_char = ''; + var content = []; + var space = false; //if a space is needed + while (this.input.charAt(this.pos) !== '<') { + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + this.line_char_count++; + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { + if (content.length) { + space = true; + } + this.line_char_count--; + continue; //don't want to insert unnecessary space + } + else if (space) { + if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached + content.push('\n'); + for (var i = 0; i < this.indent_level; i++) { + content.push(this.indent_string); + } + this.line_char_count = 0; + } + else { + content.push(' '); + this.line_char_count++; + } + space = false; + } + content.push(input_char); //letter at-a-time (or string) inserted to an array + } + return content.length ? content.join('') : ''; + } + + this.get_script = function () { //get the full content of a script to pass to js_beautify + + var input_char = ''; + var content = []; + var reg_match = new RegExp('\<\/script' + '\>', 'igm'); + reg_match.lastIndex = this.pos; + var reg_array = reg_match.exec(this.input); + var end_script = reg_array ? reg_array.index : this.input.length; //absolute end of script + while (this.pos < end_script) { //get everything in between the script tags + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + + content.push(input_char); + } + return content.length ? content.join('') : ''; //we might not have any content at all + } + + this.record_tag = function (tag) { //function to record a tag and its parent in this.tags Object + if (this.tags[tag + 'count']) { //check for the existence of this tag type + this.tags[tag + 'count']++; + this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level + } + else { //otherwise initialize this tag type + this.tags[tag + 'count'] = 1; + this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level + } + this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent) + this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1') + } + + this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer + if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it + var temp_parent = this.tags.parent; //check to see if it's a closable tag. + while (temp_parent) { //till we reach '' (the initial value); + if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it + break; + } + temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree + } + if (temp_parent) { //if we caught something + this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly + this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent + } + delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference... + delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself + if (this.tags[tag + 'count'] == 1) { + delete this.tags[tag + 'count']; + } + else { + this.tags[tag + 'count']--; + } + } + } + + this.get_tag = function () { //function to get a full tag and parse its type + var input_char = ''; + var content = []; + var space = false; + + do { + if (this.pos >= this.input.length) { + return content.length ? content.join('') : ['', 'TK_EOF']; + } + + input_char = this.input.charAt(this.pos); + this.pos++; + this.line_char_count++; + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space + space = true; + this.line_char_count--; + continue; + } + + if (input_char === "'" || input_char === '"') { + if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially + input_char += this.get_unformatted(input_char); + space = true; + } + } + + if (input_char === '=') { //no space before = + space = false; + } + + if (content.length && content[content.length - 1] !== '=' && input_char !== '>' + && space) { //no space after = or before > + if (this.line_char_count >= this.max_char) { + this.print_newline(false, content); + this.line_char_count = 0; + } + else { + content.push(' '); + this.line_char_count++; + } + space = false; + } + content.push(input_char); //inserts character at-a-time (or string) + } while (input_char !== '>'); + + var tag_complete = content.join(''); + var tag_index; + if (tag_complete.indexOf(' ') != -1) { //if there's whitespace, thats where the tag name ends + tag_index = tag_complete.indexOf(' '); + } + else { //otherwise go with the tag ending + tag_index = tag_complete.indexOf('>'); + } + var tag_check = tag_complete.substring(1, tag_index).toLowerCase(); + if (tag_complete.charAt(tag_complete.length - 2) === '/' || + this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /) + this.tag_type = 'SINGLE'; + } + else if (tag_check === 'script') { //for later script handling + this.record_tag(tag_check); + this.tag_type = 'SCRIPT'; + } + else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content) + this.record_tag(tag_check); + this.tag_type = 'STYLE'; + } + else if (this.Utils.in_array(tag_check, unformatted)) { // do not reformat the "unformatted" tags + var comment = this.get_unformatted('', tag_complete); //...delegate to get_unformatted function + content.push(comment); + this.tag_type = 'SINGLE'; + } + else if (tag_check.charAt(0) === '!') { //peek for so... + var comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted + content.push(comment); + } + this.tag_type = 'START'; + } + else if (tag_check.indexOf('[endif') != -1) {//peek for ', tag_complete); + content.push(comment); + this.tag_type = 'SINGLE'; + } + } + else { + if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending + this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors + this.tag_type = 'END'; + } + else { //otherwise it's a start-tag + this.record_tag(tag_check); //push it on the tag stack + this.tag_type = 'START'; + } + if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line + this.print_newline(true, this.output); + } + } + return content.join(''); //returns fully formatted tag + } + + this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety + + if (orig_tag && orig_tag.indexOf(delimiter) != -1) { + return ''; + } + var input_char = ''; + var content = ''; + var space = true; + do { + + if (this.pos >= this.input.length) { + return content; + } + + input_char = this.input.charAt(this.pos); + this.pos++ + + if (this.Utils.in_array(input_char, this.Utils.whitespace)) { + if (!space) { + this.line_char_count--; + continue; + } + if (input_char === '\n' || input_char === '\r') { + content += '\n'; + /* Don't change tab indention for unformatted blocks. If using code for html editing, this will greatly affect

                                                                 tags if they are specified in the 'unformatted array'
                                                                +             for (var i=0; i 0) {
                                                                +          this.indent_level--;
                                                                +        }
                                                                +      }
                                                                +    }
                                                                +    return this;
                                                                +  }
                                                                +
                                                                +  /*_____________________--------------------_____________________*/
                                                                +
                                                                +  multi_parser = new Parser(); //wrapping functions Parser
                                                                +  multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values
                                                                +
                                                                +  while (true) {
                                                                +    var t = multi_parser.get_token();
                                                                +    multi_parser.token_text = t[0];
                                                                +    multi_parser.token_type = t[1];
                                                                +
                                                                +    if (multi_parser.token_type === 'TK_EOF') {
                                                                +      break;
                                                                +    }
                                                                +
                                                                +    switch (multi_parser.token_type) {
                                                                +      case 'TK_TAG_START':
                                                                +      case 'TK_TAG_STYLE':
                                                                +        multi_parser.print_newline(false, multi_parser.output);
                                                                +        multi_parser.print_token(multi_parser.token_text);
                                                                +        multi_parser.indent();
                                                                +        multi_parser.current_mode = 'CONTENT';
                                                                +        break;
                                                                +      case 'TK_TAG_SCRIPT':
                                                                +        multi_parser.print_newline(false, multi_parser.output);
                                                                +        multi_parser.print_token(multi_parser.token_text);
                                                                +        multi_parser.current_mode = 'CONTENT';
                                                                +        break;
                                                                +      case 'TK_TAG_END':
                                                                +        multi_parser.print_newline(true, multi_parser.output);
                                                                +        multi_parser.print_token(multi_parser.token_text);
                                                                +        multi_parser.current_mode = 'CONTENT';
                                                                +        break;
                                                                +      case 'TK_TAG_SINGLE':
                                                                +        multi_parser.print_newline(false, multi_parser.output);
                                                                +        multi_parser.print_token(multi_parser.token_text);
                                                                +        multi_parser.current_mode = 'CONTENT';
                                                                +        break;
                                                                +      case 'TK_CONTENT':
                                                                +        if (multi_parser.token_text !== '') {
                                                                +          multi_parser.print_newline(false, multi_parser.output);
                                                                +          multi_parser.print_token(multi_parser.token_text);
                                                                +        }
                                                                +        multi_parser.current_mode = 'TAG';
                                                                +        break;
                                                                +    }
                                                                +    multi_parser.last_token = multi_parser.token_type;
                                                                +    multi_parser.last_text = multi_parser.token_text;
                                                                +  }
                                                                +  return multi_parser.output.join('');
                                                                +}
                                                                \ No newline at end of file
                                                                diff --git a/modules/core/aloha/static/test/unit/indent.html b/modules/core/aloha/static/test/unit/indent.html
                                                                new file mode 100644
                                                                index 000000000..bda3b55ce
                                                                --- /dev/null
                                                                +++ b/modules/core/aloha/static/test/unit/indent.html
                                                                @@ -0,0 +1,162 @@
                                                                +
                                                                +
                                                                +
                                                                +    
                                                                +    Aloha Editor command indent tests
                                                                +    
                                                                +    
                                                                +
                                                                +    
                                                                +    
                                                                +    
                                                                +    
                                                                +
                                                                +    
                                                                +    
                                                                +    
                                                                +    
                                                                +
                                                                +    
                                                                +    
                                                                +    
                                                                +    
                                                                +
                                                                +
                                                                +
                                                                +
                                                                +

                                                                Aloha Editor indent tests

                                                                + +

                                                                + +
                                                                +

                                                                +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/modules/core/aloha/static/test/unit/inserthtml.html b/modules/core/aloha/static/test/unit/inserthtml.html new file mode 100644 index 000000000..d0ceb7eef --- /dev/null +++ b/modules/core/aloha/static/test/unit/inserthtml.html @@ -0,0 +1,427 @@ + + + + + Aloha Editor command inserthtml tests + + + + + + + + + + + + + + + + + + + + + +

                                                                  Aloha Editor InsertHTML Test Suite

                                                                  + +

                                                                  + +
                                                                  +

                                                                  +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + diff --git a/modules/core/aloha/static/test/unit/insertlinebreak.html b/modules/core/aloha/static/test/unit/insertlinebreak.html new file mode 100644 index 000000000..c36834fcf --- /dev/null +++ b/modules/core/aloha/static/test/unit/insertlinebreak.html @@ -0,0 +1,684 @@ + + + + + Aloha Editor command insertLineBreak tests + + + + + + + + + + + + + + + + + + + + + +

                                                                    Aloha Editor insertLineBreak tests

                                                                    + +

                                                                    + +
                                                                    +

                                                                    +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + diff --git a/modules/core/aloha/static/test/unit/insertorderedlist.html b/modules/core/aloha/static/test/unit/insertorderedlist.html new file mode 100644 index 000000000..ee3364ccf --- /dev/null +++ b/modules/core/aloha/static/test/unit/insertorderedlist.html @@ -0,0 +1,235 @@ + + + + + Aloha Editor command insertorderedlist tests + + + + + + + + + + + + + + + + + + + + + + +

                                                                      Aloha Editor insertOrderedList tests

                                                                      + +

                                                                      + +
                                                                      +

                                                                      +
                                                                        +
                                                                        +
                                                                        +
                                                                        + + diff --git a/modules/core/aloha/static/test/unit/insertparagraph.html b/modules/core/aloha/static/test/unit/insertparagraph.html new file mode 100644 index 000000000..e53acb850 --- /dev/null +++ b/modules/core/aloha/static/test/unit/insertparagraph.html @@ -0,0 +1,625 @@ + + + + + Aloha Editor command insertParagraph tests + + + + + + + + + + + + + + + + + + + + + + + +

                                                                        Aloha Editor insertParagraph tests

                                                                        + +

                                                                        + +
                                                                        +

                                                                        +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + diff --git a/modules/core/aloha/static/test/unit/insertparagraphtest.js b/modules/core/aloha/static/test/unit/insertparagraphtest.js new file mode 100644 index 000000000..a93d723c2 --- /dev/null +++ b/modules/core/aloha/static/test/unit/insertparagraphtest.js @@ -0,0 +1,367 @@ +var tests = { + defaultCommand:'insertparagraph', + tests:[ +// { start: '[]foo', +// execResult: '


                                                                          []foo

                                                                          ' +// }, +// { start: 'foo[bar]baz', +// execResult: '

                                                                          foo

                                                                          []baz

                                                                          ' +// }, +// +//// { start: 'fo[o
                                                                          b]ar
                                                                          ', +//// execResult: 'fo[o
                                                                          b]ar
                                                                          ' +//// }, +//// { start: '
                                                                          [foobar]
                                                                          bazquz
                                                                          ', +//// execResult: '
                                                                          [foobar]
                                                                          bazquz
                                                                          ' +//// }, +//// { start: '
                                                                          foobar
                                                                          bazquz
                                                                          ', +//// execResult: '
                                                                          foobar
                                                                          bazquz
                                                                          ' +//// }, +//// { start: '
                                                                          fo[o
                                                                          b]ar', +//// execResult: '
                                                                          fo[o
                                                                          b]ar' +//// }, +//// { start: '
                                                                          fo[ob]arbaz
                                                                          ', +//// execResult: '
                                                                          fo[ob]arbaz
                                                                          ' +//// }, +//// { start: '{
                                                                          foo
                                                                          }', +//// execResult: '{
                                                                          foo
                                                                          }' +//// }, +//// { start: '
                                                                          [foo]
                                                                          ', +//// execResult: '
                                                                          [foo]
                                                                          ' +//// }, +// +// { start: '
                                                                          1. [foo]
                                                                          2. bar
                                                                          ', +// execResult: '

                                                                          1. {}
                                                                          2. bar
                                                                          ' +// }, +// { start: '
                                                                          1. f[o]o
                                                                          2. bar
                                                                          ', +// execResult: '
                                                                          1. f
                                                                          2. []o
                                                                          3. bar
                                                                          ' +// }, + +// { start: 'foo[]', +// execResult: '

                                                                          foo

                                                                          []

                                                                          ' +// }, +// { start: 'foo[]', +// execResult: '

                                                                          foo

                                                                          {}

                                                                          ' +// }, + { start:'foo[]
                                                                          ', + execResult:'

                                                                          foo

                                                                          []

                                                                          ' + }, + { start:'foo[]bar', + execResult:'

                                                                          foo

                                                                          []bar

                                                                          ' + }, + + { start:'
                                                                          []foo
                                                                          ', + execResult:'
                                                                          []foo
                                                                          ' + }, + { start:'
                                                                          foo[]
                                                                          ', + execResult:'
                                                                          foo[]
                                                                          ' + }, + { start:'
                                                                          foo[]
                                                                          ', + execResult:'
                                                                          foo[]
                                                                          ' + }, + { start:'
                                                                          foo[]bar
                                                                          ', + execResult:'
                                                                          foo[]bar
                                                                          ' + }, + + { start:'
                                                                          []foo
                                                                          ', + execResult:'

                                                                          []foo
                                                                          ' + }, + { start:'
                                                                          foo[]
                                                                          ', + execResult:'
                                                                          foo
                                                                          []
                                                                          ' + }, + { start:'
                                                                          foo[]
                                                                          ', + execResult:'
                                                                          foo
                                                                          []
                                                                          ' + }, + { start:'
                                                                          foo[]bar
                                                                          ', + execResult:'
                                                                          foo[]bar
                                                                          ' + }, + +// { start: '
                                                                          []foo
                                                                          bar
                                                                          ', +// execResult: '
                                                                          []foo
                                                                          bar
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          bar
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          bar
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          bar
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          bar
                                                                          ' +// }, +// { start: '
                                                                          foo[]bar
                                                                          baz
                                                                          ', +// execResult: '
                                                                          foo[]bar
                                                                          baz
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          []bar
                                                                          ', +// execResult: '
                                                                          foo
                                                                          []bar
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          bar[]
                                                                          ', +// execResult: '
                                                                          foo
                                                                          bar[]
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          bar[]
                                                                          ', +// execResult: '
                                                                          foo
                                                                          bar[]
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          bar[]baz
                                                                          ', +// execResult: '
                                                                          foo
                                                                          bar[]baz
                                                                          ' +// }, +// { start: '

                                                                          []foo

                                                                          ', +// execResult: '

                                                                          []foo

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// { start: '
                                                                          1. []foo
                                                                          ', +// execResult: '
                                                                          1. []foo
                                                                          ' +// }, +// { start: '
                                                                          1. foo[]
                                                                          ', +// execResult: '
                                                                          1. foo[]
                                                                          ' +// }, +// { start: '
                                                                          1. foo[]
                                                                          ', +// execResult: '
                                                                          1. foo[]
                                                                          ' +// }, +// { start: '
                                                                          1. foo[]bar
                                                                          ', +// execResult: '
                                                                          1. foo[]bar
                                                                          ' +// }, +// { start: '

                                                                          []foo

                                                                          ', +// execResult: '

                                                                          []foo

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// { start: '
                                                                          []foo
                                                                          ', +// execResult: '
                                                                          []foo
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          ' +// }, +// { start: '
                                                                          foo[]bar
                                                                          ', +// execResult: '
                                                                          foo[]bar
                                                                          ' +// }, +// +// { start: '
                                                                          foo[]

                                                                          ', +// execResult: '
                                                                          foo[]

                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          {}
                                                                          ', +// execResult: '
                                                                          foo
                                                                          {}
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          []
                                                                          ', +// execResult: '
                                                                          foo
                                                                          []
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          []
                                                                          
                                                                          ', +// execResult: '
                                                                          foo
                                                                          []
                                                                          
                                                                          ' +// }, +// +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'baz', +// execResult: 'baz' +// }, +// { start: '
                                                                          foo[]bar
                                                                          baz', +// execResult: '
                                                                          foo[]bar
                                                                          baz' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// +// { start: '
                                                                          1. {}
                                                                          ', +// execResult: '
                                                                          1. {}
                                                                          ' +// }, +// { start: 'foo
                                                                          1. {}
                                                                          ', +// execResult: 'foo
                                                                          1. {}
                                                                          ' +// }, +// { start: '
                                                                          1. {}
                                                                          foo', +// execResult: '
                                                                          1. {}
                                                                          foo' +// }, +// { start: '
                                                                          1. foo
                                                                          2. {}
                                                                          ', +// execResult: '
                                                                          1. foo
                                                                          2. {}
                                                                          ' +// }, +// { start: '
                                                                          1. {}
                                                                          2. bar
                                                                          ', +// execResult: '
                                                                          1. {}
                                                                          2. bar
                                                                          ' +// }, +// { start: '
                                                                          1. foo
                                                                            • {}
                                                                          ', +// execResult: '
                                                                          1. foo
                                                                            • {}
                                                                          ' +// }, +// +// { start: '
                                                                          {}
                                                                          ', +// execResult: '
                                                                          {}
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          {}
                                                                          ', +// execResult: '
                                                                          foo
                                                                          {}
                                                                          ' +// }, +// { start: '
                                                                          {}
                                                                          bar
                                                                          ', +// execResult: '
                                                                          {}
                                                                          bar
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          bar
                                                                          {}
                                                                          baz
                                                                          ', +// execResult: '
                                                                          foo
                                                                          bar
                                                                          {}
                                                                          baz
                                                                          ' +// }, +// { start: '
                                                                          foo
                                                                          bar
                                                                          baz
                                                                          {}
                                                                          ', +// execResult: '
                                                                          foo
                                                                          bar
                                                                          baz
                                                                          {}
                                                                          ' +// }, +// +// { start: '

                                                                          foo[bar

                                                                          baz]quz

                                                                          ', +// execResult: '

                                                                          foo[bar

                                                                          baz]quz

                                                                          ' +// }, +// { start: '

                                                                          foo[bar

                                                                          baz]quz

                                                                          ', +// execResult: '

                                                                          foo[bar

                                                                          baz]quz

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          {}
                                                                          ', +// execResult: '

                                                                          foo

                                                                          {}
                                                                          ' +// }, +// { start: '{}

                                                                          foo

                                                                          ', +// execResult: '{}

                                                                          foo

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ', +// execResult: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ', +// execResult: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ', +// execResult: '

                                                                          foo

                                                                          {}

                                                                          bar

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          [bar]

                                                                          baz

                                                                          ', +// execResult: '

                                                                          foo

                                                                          [bar]

                                                                          baz

                                                                          ' +// }, +// { start: '

                                                                          foo

                                                                          {

                                                                          bar

                                                                          }

                                                                          baz

                                                                          ', +// execResult: '

                                                                          foo

                                                                          {

                                                                          bar

                                                                          }

                                                                          baz

                                                                          ' +// }, +// +// { start: '
                                                                          foo[]bar
                                                                          ', +// execResult: '
                                                                          foo[]bar
                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// +// { start: '
                                                                          []foo
                                                                          ', +// execResult: '
                                                                          []foo
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          ' +// }, +// { start: '
                                                                          foo[]
                                                                          ', +// execResult: '
                                                                          foo[]
                                                                          ' +// }, +// { start: '
                                                                          foo[]bar
                                                                          ', +// execResult: '
                                                                          foo[]bar
                                                                          ' +// }, +// { start: '

                                                                          []foo

                                                                          ', +// execResult: '

                                                                          []foo

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// { start: '

                                                                          foo[]

                                                                          bar

                                                                          ', +// execResult: '

                                                                          foo[]

                                                                          bar

                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          baz

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          baz

                                                                          ' +// }, +// +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]barbaz', +// execResult: 'foo[]barbaz' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]barbaz', +// execResult: 'foo[]barbaz' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]barbaz', +// execResult: 'foo[]barbaz' +// }, +// +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// { start: '

                                                                          []foo

                                                                          ', +// execResult: '

                                                                          []foo

                                                                          ' +// }, +// { start: '

                                                                          foo[]bar

                                                                          ', +// execResult: '

                                                                          foo[]bar

                                                                          ' +// }, +// { start: '
                                                                          foo[]bar
                                                                          ', +// execResult: '
                                                                          foo[]bar
                                                                          ' +// }, +// +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]barbaz', +// execResult: 'foo[]barbaz' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// { start: 'foo[]bar', +// execResult: 'foo[]bar' +// }, +// +// { start: '

                                                                          foo[]', +// execResult: '

                                                                          foo[]' +// }, +// { start: '

                                                                          []bar', +// execResult: '

                                                                          []bar' +// }, +// +// { start: '

                                                                          foo[bar]baz', +// execResult: '

                                                                          foo[bar]baz' +// }, +// { start: '

                                                                          foo{bar}baz', +// execResult: '

                                                                          foo{bar}baz' +// }, +// { start: '

                                                                          foo{bar}baz', +// execResult: '

                                                                          foo{bar}baz' +// }, +// { start: '

                                                                          [foobar]baz', +// execResult: '

                                                                          [foobar]baz' +// }, +// { start: '

                                                                          {foobar}baz', +// execResult: '

                                                                          {foobar}baz' +// }, +// { start: '

                                                                          foo[barbaz]', +// execResult: '

                                                                          foo[barbaz]' +// }, +// { start: '

                                                                          foo{barbaz}', +// execResult: '

                                                                          foo{barbaz}' +// }, +// { start: '

                                                                          foo[barbaz]quz', +// execResult: '

                                                                          foo[barbaz]quz' +// } + + ] +} + diff --git a/modules/core/aloha/static/test/unit/insertunorderedlist.html b/modules/core/aloha/static/test/unit/insertunorderedlist.html new file mode 100644 index 000000000..08d6b62a3 --- /dev/null +++ b/modules/core/aloha/static/test/unit/insertunorderedlist.html @@ -0,0 +1,235 @@ + + + + + Aloha Editor command insertunorderedlist tests + + + + + + + + + + + + + + + + + + + + + + +

                                                                          Aloha Editor insertUnorderedList tests

                                                                          + +

                                                                          + +
                                                                          +

                                                                          +
                                                                            +
                                                                            +
                                                                            +
                                                                            + + diff --git a/modules/core/aloha/static/test/unit/list.html b/modules/core/aloha/static/test/unit/list.html new file mode 100644 index 000000000..d542b618c --- /dev/null +++ b/modules/core/aloha/static/test/unit/list.html @@ -0,0 +1,313 @@ + + + + + Aloha Editor insert list tests + + + + + + + + + + + + + + + + + + + + + + +

                                                                            Aloha Editor command bold tests

                                                                            + +

                                                                            + +
                                                                            +

                                                                            +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + diff --git a/modules/core/aloha/static/test/unit/outdent.html b/modules/core/aloha/static/test/unit/outdent.html new file mode 100644 index 000000000..56e82707c --- /dev/null +++ b/modules/core/aloha/static/test/unit/outdent.html @@ -0,0 +1,139 @@ + + + + + Aloha Editor command outdent tests + + + + + + + + + + + + + + + + + + + + + + +

                                                                              Aloha Editor outdent tests

                                                                              + +

                                                                              + +
                                                                              +

                                                                              +
                                                                                +
                                                                                +
                                                                                +
                                                                                + + diff --git a/modules/core/aloha/static/test/unit/plugin-blocks.html b/modules/core/aloha/static/test/unit/plugin-blocks.html new file mode 100644 index 000000000..2aecf0745 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugin-blocks.html @@ -0,0 +1,47 @@ + + + + + Aloha Editor Block Plugin tests + + + + + + + + + + + + + + + + + + + + +

                                                                                Aloha Editor table tests

                                                                                + +

                                                                                + +
                                                                                +

                                                                                +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + + diff --git a/modules/core/aloha/static/test/unit/plugin-blocktests.js b/modules/core/aloha/static/test/unit/plugin-blocktests.js new file mode 100644 index 000000000..e3779c73d --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugin-blocktests.js @@ -0,0 +1,501 @@ +/* plugin-blocktests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +/** + * TODOs: + * - selectRow/selectColumn should take into account the helper row/column. + * ie: selectRow(0) and selectColumn(0), should be zero indexed + */ + +define( + [ 'testutils', 'htmlbeautifier' ], + function (TestUtils) { + 'use strict'; + + Aloha.ready(function () { + + var jQuery = Aloha.jQuery, + testContainer = jQuery('#block-outer-container'), + testcase, + BlockManager; + + var tests = [ + { + always:true, + async:true, + desc:'Aloha Dependency Loader', + assertions:1, + operation:function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 10 seconds. Aborting!'); + start(); + }, 10000); + // All other tests are done when Aloha is ready + Aloha.require(['block/blockmanager'], + function (AlohaBlockManager) { + BlockManager = AlohaBlockManager; + clearTimeout(timeout); + ok(true, 'Alohoha Dependencies were loaded'); + start(); + }); + } + }, + + {module:'Initialization'}, + /////////////////////////////////////////////////////////////////////// + + { + desc:'A default block is initialized correctly', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:8, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + var $block = jQuery('.aloha-block', testContainer); + + // Block Wrapper assertions + strictEqual($block.attr('contenteditable'), 'false', 'The block div is contenteditable=false.'); + ok($block.hasClass('aloha-block'), 'The block div has the aloha-block CSS class.'); + ok($block.hasClass('aloha-block-DefaultBlock'), 'The block div has the aloha-block-DefaultBlock CSS class.'); + strictEqual($block.attr('data-aloha-block-type'), 'DefaultBlock', 'The block div wrapper has the data-aloha-block-type set correctly.'); + equal($block.attr('data-block-type'), undefined, 'The block div wrapper does not have data-block-type set, as it shall not be used anymore by the framework.'); + + // content wrapper assertions + ok($block.is('#myDefaultBlock'), 'The given ID is re-used.'); + ok($block.find('.aloha-block-handle'), 'The handles are added.'); + ok($block.html().match(/Some default block content/), 'The block content is still there.'); + } + }, + + { + desc:'Data attributes from inside the element are available through the attr() notation', + start:'
                                                                                  Some default block content2
                                                                                  ', + assertions:2, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + strictEqual(block.attr('foo'), 'Bar'); + strictEqual(block.attr('somepropertywithuppercase'), 'test2', 'Uppercase properties need to be converted to lowercase.'); + } + }, + { + desc:'Attributes passed to .alohaBlock() are preserved. The data-attributes take precedence, however', + start:'
                                                                                  Some default block content2
                                                                                  ', + assertions:2, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock', + 'foo':'someBar', + 'baz':'Override' + }); + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + strictEqual(block.attr('foo'), 'someBar'); + strictEqual(block.attr('baz'), 'original'); + } + }, + + { + exclude:true, // TODO: FIX LATER + desc:'Inline JavaScript is only executed once, and not executed while blockifying an element', + setup:function (testContainer) { + window.thisTestExecutionCount = 0; + testContainer[0].innerHTML = '
                                                                                  Some default block contesnt
                                                                                  '; + }, + assertions:1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + strictEqual(window.thisTestExecutionCount, 0); + delete window.thisTestExecutionCount; + } + }, + { + desc:'Attached event handlers are not removed', + start:'
                                                                                  Some default block content2
                                                                                  ', + assertions:1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').click(function () { + ok(true); + }) + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + jQuery('#myDefaultBlock').click(); + } + }, + { + desc:'Trying to create a block from an element which is no div or span throws error', + start:'', + assertions:1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + strictEqual(jQuery('.aloha-block', testContainer).length, 0, 'Image object has been blockified, although this should not happen.'); + } + }, + + {module:'Block API'}, + /////////////////////////////////////////////////////////////////////// + { + exclude:false, + desc:'fetching attr() with uppercase key is the same as with lowercase key', + start:'
                                                                                  Some default block content
                                                                                  ', + //assertions: 1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + + strictEqual(block.attr('foo'), 'Bar'); + strictEqual(block.attr('FoO'), 'Bar'); + } + }, + + { + exclude:false, + desc:'setting attr() with uppercase key is the same as with lowercase key', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + block.attr('test', 'mytest1'); + block.attr('TeSt', 'mytest2'); + + strictEqual(block.attr('test'), 'mytest2'); + } + }, + + { + exclude:false, + desc:'setting a key with attr() which starts with "aloha-block-" throws an error and does not save the key', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:2, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + block.attr('aloha-block-test1', 'foo'); + strictEqual(block.attr('aloha-block-test1'), undefined); + + block.attr('aloha-block-type', 'foo'); + strictEqual(block.attr('aloha-block-type'), 'DefaultBlock'); + } + }, + + { + exclude:false, + desc:'Selection handling works with non-nested blocks', + start:'
                                                                                  Some default block content
                                                                                  Some default block content
                                                                                  ', + assertions:8, + operation:function (testContainer, testcase) { + jQuery('#block1').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + jQuery('#block2').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + var block1 = BlockManager.getBlock(jQuery('#block1', testContainer)); + var block2 = BlockManager.getBlock(jQuery('#block2', testContainer)); + + ok(!block1.isActive(), 'block 1 is not active'); + ok(!block2.isActive(), 'block 2 is not active'); + + block1.activate(); + ok(true, '--> activated block1'); + + ok(block1.isActive(), 'block 1 is active after activating it'); + ok(!block2.isActive(), 'block 2 is not active after activating block1'); + + block2.activate(); + ok(true, '--> activated block2'); + + ok(!block1.isActive(), 'block1 has been deactivated after activating block2'); + ok(block2.isActive(), 'block 2 is active after activating it'); + } + }, + + {module:'BlockManager API'}, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'getBlock returns block when passed the block ID, the inner or outer DOM element', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:3, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + var block1 = BlockManager.getBlock(jQuery('.aloha-block', testContainer).attr('id')); + var block2 = BlockManager.getBlock(jQuery('.aloha-block', testContainer)); + var block3 = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + // Check that the returned objects are always the same + ok(block1 === block2); + ok(block2 === block3); + strictEqual(typeof block1, 'object', 'Blocks were no objects'); + } + }, + { + exclude:false, + desc:'getBlock returns undefined when passed a wrong ID', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:1, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + strictEqual(undefined, BlockManager.getBlock('someUndefinedId')); + } + }, + + {module:'Drag/Drop helpers'}, + /////////////////////////////////////////////////////////////////////// + { + exclude:false, + desc:'DragDrop handlers', + start:'
                                                                                  Some default block content
                                                                                  ', + assertions:7, + operation:function (testContainer, testcase) { + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + var block = BlockManager.getBlock(jQuery('#myDefaultBlock', testContainer)); + deepEqual(block._dd_splitText('Hello world'), ['Hello', ' world']); + deepEqual(block._dd_splitText('Hello world '), ['Hello', ' world ']); + deepEqual(block._dd_splitText(' Hello world'), [' Hello', ' world']); + deepEqual(block._dd_splitText(' Hello, world'), [' Hello', ', ', 'world']); + deepEqual(block._dd_splitText(' Hello, world!'), [' Hello', ', ', 'world', '!']); + deepEqual(block._dd_splitText(' Hello, world...'), [' Hello', ', ', 'world', '...']); + deepEqual(block._dd_splitText(' Hello, world ...'), [' Hello', ', ', 'world', ' ...']); + } + }, + + {module:'Copy/Paste'}, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Copy/Paste Setup', + start:'

                                                                                  Some text beforePlease click me and press ctrl/cmd+cSome text after

                                                                                  Please place the cursor HERE >< and press cmd/crtl v

                                                                                  Some more text

                                                                                  ', + async:true, + operation:function (testContainer, testcase) { + + jQuery('.alohaContent').aloha(); + + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + var testTimeout = window.setTimeout(function () { + test('Copy/Paste tests not run', function () { + ok(false, 'Manual copy/paste tests were not run'); + }); + start(); + }, 10000); + var keyDownListener; + keyDownListener = function (e) { + if (e.which === 86) { // v pressed (ctrl-v) + // We wait a little to make sure the new block has been created correctly + window.setTimeout(function () { + window.clearTimeout(testTimeout); + var testResults = [ + { + actual:(function () { + var numberOfIdsFound = 0; + jQuery('span', testContainer).each(function () { + if (jQuery(this).is('#myDefaultBlock')) { + numberOfIdsFound++; + } + }); + return numberOfIdsFound; + })(), + expected:1, + message:'the old ID should not be inside the DOM multiple after pasting' + }, + { + // We use lower case here because IE uses uppercase tags... argh!! + actual:jQuery('.aloha-block', testContainer)[0].innerHTML.toLowerCase(), + expected:'Please click me and press ctrl/cmd+c'.toLowerCase(), + message:'The block markup is as expected' + }, + { + actual:jQuery('br', testContainer).length, + expected:0, + message:'The content should not have any superfluous
                                                                                  tags inserted' + }, + ]; + + test('Copy/Paste works with inline blocks', function () { + jQuery.each(testResults, function () { + strictEqual(this.actual, this.expected, this.message); + }); + }) + start(); + }, 400); + jQuery(document).unbind('keydown', keyDownListener); + } + }; + jQuery(document).keydown(keyDownListener); + } + }, + + {module:'Cut/Paste'}, + /////////////////////////////////////////////////////////////////////// + + { + exclude:false, + desc:'Cut/Paste Setup', + start:'

                                                                                  Some text beforePlease click me and pressctrl/cmd+x (CUT)Some text after

                                                                                  Please place the cursor HERE >< and press cmd/crtl v

                                                                                  Some more text

                                                                                  ', + async:true, + operation:function (testContainer, testcase) { + + jQuery('.alohaContent').aloha(); + + jQuery('#myDefaultBlock').alohaBlock({ + 'aloha-block-type':'DefaultBlock' + }); + + var testTimeout = window.setTimeout(function () { + test('Cut/Paste tests not run', function () { + ok(false, 'Manual cut/paste tests were not run'); + }); + start(); + }, 10000); + var keyDownListener; + keyDownListener = function (e) { + if (e.which === 86) { // v pressed (ctrl-v) + // We wait a little to make sure the new block has been created correctly + window.setTimeout(function () { + window.clearTimeout(testTimeout); + var testResults = [ + { + actual:(function () { + var numberOfIdsFound = 0; + jQuery('span', testContainer).each(function () { + if (jQuery(this).is('#myDefaultBlock')) { + numberOfIdsFound++; + } + }); + return numberOfIdsFound; + })(), + expected:0, + message:'the old ID should not be inside the DOM anymore after cutting' + }, + { + // We use lower case here because IE8 and lower uses uppercase tags... argh!! + actual:jQuery('.aloha-block', testContainer)[0].innerHTML.toLowerCase(), + expected:'Please click me and pressctrl/cmd+x (CUT)'.toLowerCase(), + message:'The block markup is as expected' + }, + { + actual:jQuery('br', testContainer).length, + expected:0, + message:'The content should not have any superfluous
                                                                                  tags inserted' + }, + // We use lower case here because IE8 and lower uses uppercase tags... argh!! + { + actual:jQuery('p.src', testContainer).html().toLowerCase(), + expected:'Some text beforeSome text after'.toLowerCase(), + message:'The element should be removed from the source' + }, + ]; + + test('Cut/Paste works with inline blocks', function () { + jQuery.each(testResults, function () { + strictEqual(this.actual, this.expected, this.message); + }); + }) + // TODO: make sure the old stuff is removed + start(); + }, 400); + jQuery(document).unbind('keydown', keyDownListener); + } + }; + jQuery(document).keydown(keyDownListener); + } + }, + {exclude:true} // ... just catch trailing commas + ]; + + var runOnlyTestId = null; + for (var i = 0; i < tests.length; i++) { + if (tests[i].only === true) { + runOnlyTestId = i; + } + } + + jQuery.each(tests, function (i, testcase) { + if (runOnlyTestId !== null && runOnlyTestId !== i && !testcase.always) { + return; + } + if (testcase.exclude === true) { + return; + } + + if (testcase.module) { + module(testcase.module.toUpperCase() + ' :'); + return; + } + + test( + (testcase.desc || 'Test').toUpperCase(), + testcase.assertions, + function () { + if (testcase.setup) { + testcase.setup(testContainer); + } else { + testContainer.html(testcase.start); + } + + if (testcase.async === true) { + stop(); + } + + if (typeof testcase.operation === 'function') { + testcase.operation(testContainer, testcase); + } + + } + ); + }); + }); + }); diff --git a/modules/core/aloha/static/test/unit/pluginapi.html b/modules/core/aloha/static/test/unit/pluginapi.html new file mode 100644 index 000000000..4aadfe92e --- /dev/null +++ b/modules/core/aloha/static/test/unit/pluginapi.html @@ -0,0 +1,65 @@ + + + + + Aloha Editor Plugin API Test Suite + + + + + + + + + + + + + + + +

                                                                                  Aloha Editor Plugin API Test Suite

                                                                                  + +

                                                                                  + +
                                                                                  +

                                                                                  +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + + diff --git a/modules/core/aloha/static/test/unit/pluginapitests.js b/modules/core/aloha/static/test/unit/pluginapitests.js new file mode 100644 index 000000000..9ecd4c5da --- /dev/null +++ b/modules/core/aloha/static/test/unit/pluginapitests.js @@ -0,0 +1,232 @@ +/* pluginapitests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [], + function () { + "use strict"; + + Aloha.ready(function () { + + var testOrder = [ + settingsTest, + pathsTest, + relativResourceTest, + absoluteResourceTest, + defaultLocaleTest, + germanLocaleTest, + asyncModuleTest, + crossAsyncModuleTest + ]; + + function runNextTest() { + if (testOrder.length) { + var test = testOrder.shift(); + if (typeof test === 'function') { + test(); + } + } + }; + + module('Plugin API test', {}); + + test('Aloha plugin invocation Test', function () { + equal(window.AlohaPlugin1, 'called', 'Checking window.AlohaPlugin1.'); + }); + + runNextTest(); + + function settingsTest() { + asyncTest('Aloha plugin defaults and settings', function () { + var plugin = Aloha.require('plugintest1/plugintest1-plugin'); + ok(plugin.settings.value2 == 2, 'defaults'); + ok(plugin.settings.value1 == -1, 'settings'); + ok(plugin.settings.value3.valueB == 'B', 'nested defaults'); + ok(plugin.settings.value3.valueA == 'Z', 'nested settings'); + + equal(plugin.settings.value3.valueC.length, 1, 'nested array settings length'); + equal(plugin.settings.value3.valueC[0], 'X', 'nested array settings'); + + equal(plugin.settings.value3.valueD.length, 2, 'nested array defaults length'); + equal(plugin.settings.value3.valueD[0], 'III', 'nested array defaults'); + equal(plugin.settings.value3.valueD[1], 'IV', 'nested array defaults'); + start(); + runNextTest(); + }); + }; + + function pathsTest() { + asyncTest('Aloha plugin paths [lib, vendor, nls, res, css]', function () { + + Aloha.require(['plugintest1/test', 'plugintest1/vendor/test', 'i18n!plugintest1/nls/i18n', + 'plugintest1/test', 'plugintest1/css/test'], function (lib, vendor, i18n, res, css) { + ok(true, 'Plugin loaded with all path'); + ok(lib.status == 'ok', 'lib ok'); + ok(vendor.status == 'ok', 'vendor ok'); + ok(typeof i18n.t == 'function', 'nls ok'); + ok(res.status == 'ok', 'res ok'); + ok(css.status == 'ok', 'css ok'); + start(); + clearTimeout(t); + runNextTest(); + }); + + var t = setTimeout(function () { + ok(false, 'Aloha plugin localization did not return in 5 seconds'); + start(); + runNextTest(); + }, + 5000); + }); + }; + + function relativResourceTest() { + asyncTest('Aloha relative bundle plugin resource loading', function () { + var url = Aloha.getPluginUrl('plugintest1') + '/res/test.json'; + jQuery.ajax({ + url:url, + dataType:'json', + success:function (data) { + ok(true, 'Ressource1 loaded from ' + url); + ok(data.data == 'ok', 'Loaded data is correct'); + start(); + runNextTest(); + }, + error:function (error) { + ok(false, 'Error: ' + error.statusText + '. URL was ' + url); + start(); + runNextTest(); + } + }); + }); + } + + + function absoluteResourceTest() { + asyncTest('Aloha absolute bundle plugin resource loading', function () { + var url = Aloha.getPluginUrl('plugintest2') + '/res/test.json'; + jQuery.ajax({ + url:url, + dataType:'json', + success:function (data) { + ok(true, 'Ressource2 loaded from ' + url); + ok(data.data == 'ok', 'Loaded data is correct'); + start(); + runNextTest(); + }, + error:function (error) { + ok(false, 'Failure loading plugin resource. URL was ' + url); + start(); + runNextTest(); + } + }); + + }); + } + + function defaultLocaleTest() { + asyncTest('Aloha plugin default localization (fallback)', function () { + Aloha.require(['i18n!plugintest2/nls/i18n'], + function (i18n) { + var key = i18n.t('plugin2.test1'); + equal(key, 'fallback', 'Fallback key was loaded for plugintest2, key plugin2.test1.'); + start(); + clearTimeout(t); + runNextTest(); + } + ); + var t = setTimeout(function () { + ok(false, 'Aloha plugin localization did not return in 5 seconds'); + start(); + runNextTest(); + }, + 5000); + }); + } + + function germanLocaleTest() { + asyncTest('Aloha plugin german localization', function () { + Aloha.require(['i18n!plugintest1/nls/i18n'], + function (i18n) { + var key = i18n.t('plugin1.test1'); + equal(key, 'german', 'German key was loaded for plugintest1, key plugin1.test1.'); + start(); + clearTimeout(t); + runNextTest(); + } + ); + var t = setTimeout(function () { + ok(false, 'Aloha plugin localization did not return in 5 seconds'); + start(); + runNextTest(); + }, + 5000); + }); + + } + + function asyncModuleTest() { + asyncTest('Aloha plugin async dynamic module loading', function () { + Aloha.require(['plugintest1/component'], + function (component) { + ok(true, 'module loaded.'); + ok(component.doOther() == 'didOther', 'module function present.'); + ok(component.doSome() == 'didSome', 'function from dependend module present.'); + start(); + clearTimeout(t); + runNextTest(); + } + ); + var t = setTimeout(function () { + ok(false, 'Aloha plugin dynamically async module loading did not return in 5 seconds'); + start(); + runNextTest(); + }, + 5000); + }); + } + + function crossAsyncModuleTest() { + asyncTest('Aloha cross plugin async dynamic module loading', function () { + Aloha.require(['plugintest2/component'], + function (component) { + ok(component.doSome() == 'didSome', 'Sucessfully dynamically async loaded cross plugin module dependency.'); + start(); + clearTimeout(t); + runNextTest(); + } + ); + var t = setTimeout(function () { + ok(false, 'Aloha plugin dynamically async module loading did not return in 5 seconds'); + start(); + runNextTest(); + }, + 5000); + }); + } + + }); + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.html b/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.html new file mode 100644 index 000000000..a41dda11d --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.html @@ -0,0 +1,54 @@ + + + + + Aloha Editor dom-to-xhtml Plugin Test Suite + + + + + + + + + + + + + + + + + + + + + +

                                                                                    Aloha Editor dom-to-xhtml Plugin Test Suite

                                                                                    + +

                                                                                    + +
                                                                                    +

                                                                                    +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + + diff --git a/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.js b/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.js new file mode 100644 index 000000000..22810ffed --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugins/dom-to-xhtml-tests.js @@ -0,0 +1,314 @@ +/* dom-to-xhtml-tests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [], + function () { + "use strict"; + + /** + * Initializes an Aloha editable with the given HTML and passes it to the given callback function. + * + * @param func + * A callback function that is invoked with an instance of Aloha.Editable as the first argument. + * @param editableHtml + * Optionally the HTML to put into the editable before calling $.aloha() on it. + * May be null if the editable should be left as is. + * @param id + * Optionally the id of the editable. By default a div with id 'test-editable' will be used. + */ + function withEditable(func, editableHtml, id) { + id = id || 'test-editable'; + var editable = jQuery("#" + id); + if (null != editableHtml) { + editable.html(editableHtml); + } + editable.aloha(); + var alohaEditable = Aloha.getEditableById(id) + func(alohaEditable); + alohaEditable.destroy(); + } + + /** + * Tests whether a DOM is serialized correctly. + * + * Tests the Aloha.Editable.getContents() instance method which is + * used to serialize the content of an editable. The dom-to-xhtml + * plugin sets a special XHTML content serializer which replaces the + * default $.html() serializer used by getContents(). + * + * @param editableHtml + * The HTML to put into the editable before calling getContents(). + * @param expectedXhtml + * The XHTML expected to be returned by Aloha.Editable.getContents(). + * This may be an array of strings, if the result may be one of multiple + * possible values. If an array is passed, at least one of the values in the + * array has to match the resulting XHTML to pass the test. This is useful + * if the expected result may differ between browsers. + */ + function testGc(editableHtml, expectedXhtml) { + withEditable(function (editable) { + var contents = editable.getContents(); + if (jQuery.isArray(expectedXhtml)) { + var foundEqual = false; + for (var i = 0; i < expectedXhtml.length; i++) { + if (contents == expectedXhtml[i]) { + foundEqual = true; + break; + } + } + if (!foundEqual) { + equal(contents, expectedXhtml[0]); + } else { + ok(true); + } + } else { + equal(contents, expectedXhtml); + } + }, editableHtml); + } + + /** + * Tests whether dynamically set styles are serialized correctly. + * + * @param styleMap + * A map of styles to set dynamically. Values in the map + * may be arrays, in which case the first value in the array will be used + * to set the style dynamically, and the rest of the values represent + * alternative results at least one of which must match the reparsed + * style to pass the test. + * @param elementHtml + * A HTML string representing an element to set the given styles on. + */ + function testStyle(styleMap, elementHtml) { + withEditable(function (editable) { + var element = editable.obj.children().eq(0); + var jqStyleMap = {}; + for (var style in styleMap) { + if (styleMap.hasOwnProperty(style)) { + var styleValue = styleMap[style]; + jqStyleMap[style] = $.isArray(styleValue) ? styleValue[0] : styleValue; + } + } + element.css(jqStyleMap); + var contents = editable.getContents(); + // After parsing the serialized XHTML, the styles that were + // dynamically set should be still be there. If not, they were + // lost during serialization. + var reparsedElement = $(contents).eq(0); + for (var style in styleMap) { + if (styleMap.hasOwnProperty(style)) { + var reparsedStyleValue = reparsedElement.css(style); + var styleValue = styleMap[style]; + if ($.isArray(styleValue)) { + var found = false; + for (var i = 0; i < styleValue.length; i++) { + if (reparsedStyleValue == styleValue[i]) { + found = true; + } + } + if (!found) { + equal(reparsedStyleValue, styleValue[0]); + } else { + ok(true); + } + } else { + equal(reparsedStyleValue, styleValue); + } + } + } + }, elementHtml); + } + + Aloha.ready(function () { + module('Serialization'); + + test('links', function () { + testGc('link', + ['link', + // IE7 adds a trailing slash to the href + 'link' + ]); + testGc('link', 'link'); + // TODO: IE7 fails because it makes a fully qualified URL out of the links. This issue + // is documented for the nodeToXhtml() method. + //testGc('link', 'link'); + //testGc('link', 'link'); + }); + test('empty elements without closing tag', function () { + testGc('some
                                                                                      text', 'some
                                                                                      text'); + testGc('sometext', 'sometext'); + }); + test('tables', function () { + testGc('
                                                                                      onetwo
                                                                                      threefour
                                                                                      ', [ + '
                                                                                      onetwo
                                                                                      threefour
                                                                                      ', + // IE adds spaces after text in each cell except the last one + '
                                                                                      one two
                                                                                      three four
                                                                                      ' + ]); + }); + test('lists', function () { + testGc('
                                                                                        1. one
                                                                                        2. two
                                                                                      ', [ + '
                                                                                        1. one
                                                                                        2. two
                                                                                      ', + // IE adds a space after the text in the first list item + '
                                                                                        1. one
                                                                                        2. two
                                                                                      ' + ]); + }); + test('empty elements with closing tag', function () { + testGc('sometext', 'sometext'); + testGc('some
                                                                                      text', [ + 'some
                                                                                      text', + // IE adds a space before a div (IE8) + 'some
                                                                                      text' + ]); + }); + test('boolean attributes', function () { + testGc('', + [ '', + // different order than the previous + '', + // IE8 adds the value="on" even though it's not specified + '', + // the following two are just differently ordered than the last + '', + '']); + testGc('', + // IE8 adds the type="submit" even though it's not specified + '' ]); + }); + test('"pre" preserves spaces tabs and newlines', function () { + var pre = "
                                                                                      \n"
                                                                                      +          + "		two leading tabs\n"
                                                                                      +          + "        leading whitespace\n"
                                                                                      +          + "
                                                                                      "; + withEditable(function (editable) { + // On IE8, \n characters become \r characters + equal(editable.getContents().replace(/\n/g, '\r'), + // The newline after the opening pre tag is lost. + // This is the same behaviour as with element.innerHTML. + ("
                                                                                      		two leading tabs\n"
                                                                                      +              + "        leading whitespace\n"
                                                                                      +              + "
                                                                                      ").replace(/\n/g, '\r')); + }, pre); + var whiteSpacePre + = '\n' + + " two leading tabs\n" + + " leading whitespace\n" + + ""; + withEditable(function (editable) { + // Serializing a span with "white-space: pre" style on IE8 is unpredictable: + // the whitespace will most of the time not be preserved, but it sometimes will (loading + // the same page multiple times yields different results). + // TODO: This test is disabled. The issue is documented for the nodeToXhtml() method. + //equal(editable.getContents().replace(/\s/g, ' . '), whiteSpacePre.replace(/\s/g, ' . ')); + }, whiteSpacePre); + }); + test('special characters in attributes', function () { + testGc('', + ''); + testGc('left << middle >> right', + 'left << middle >> right'); + testGc("some \"quoted\" text", + 'some "quoted" text'); + }); + test('special characters in intra-element text', function () { + testGc('big < bigger < biggest', 'big < bigger < biggest'); + testGc('You&Me&You', 'You&Me&You'); + }); + test('script tags', function () { + // Script tags are not preserved (Chrome). + // This is the same behaviour as with element.innerHTML (Chrome). + testGc('
                                                                                      pre-scriptpost-script
                                                                                      ', + '
                                                                                      pre-scriptpost-script
                                                                                      '); + }); + test('IE conditional includes', function () { + var conditionalInclude = '
                                                                                      '; + // IE8 doesn't report conditional comments in contentEditable=true + // TODO: This test is disabled. The issue is documented for the nodeToXhtml() method. + //testGc(conditionalInclude, conditionalInclude); + }); + test('normal comments', function () { + // IE8 doesn't always report comments inside + // contentEditable=true correctly. In this example the 'x' + // before the comment is necessary, otherwise the comment + // will not appear in the DOM. + var comment = 'x'; + testGc(comment, comment); + }); + test('serializing dynamically set css attributes', function () { + testStyle({ + // some random css properties + 'color':[ 'green', 'rgb(0, 128, 0)' ], + 'width':'5px' + }, '
                                                                                      '); + }); + test('namespaced XML', function () { + var namespacedXml + = '
                                                                                      ' + + '' + + '1568491379' + + '' + // IE8 inserts a space before the p if it's not already there + + '

                                                                                      ' + + 'This is also available online.' + + '

                                                                                      ' + + '
                                                                                      ' + + '
                                                                                      ' + + '
                                                                                      '; + testGc(namespacedXml, namespacedXml); + }); + test('IE unrecognized XML', function () { + // The x at the beginning is required. If there is some text + // before unrecognized elements, the DOM structure will + // incorrect but still predictable. If there is no text + // before unrecognized elements, the DOM structure will + // become unpredictable in a way we can't compensate for. + var unrecognizedXml + = 'x' + + '' + + '' + + 'some text' + + '' + + '' + + 'more text' + + ' even more text' + + '' + + '' + + '' + + '' + + ' one more text' + + '' + + ''; + testGc(unrecognizedXml, unrecognizedXml); + }); + test('classes and styles', function () { + testGc('

                                                                                      ', '

                                                                                      '); + testGc('
                                                                                      ', '
                                                                                      '); + testGc('

                                                                                      ', ['

                                                                                      ', '

                                                                                      ']); + testGc('
                                                                                      ', ['
                                                                                      ', '
                                                                                      ']); + }); + }); + }); diff --git a/modules/core/aloha/static/test/unit/plugins/ui-tests.js b/modules/core/aloha/static/test/unit/plugins/ui-tests.js new file mode 100644 index 000000000..4d053cff7 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugins/ui-tests.js @@ -0,0 +1,44 @@ +Aloha.ready(function () { + Aloha.require(['ui/settings'], function (Settings) { + 'use strict'; + + module('Settings'); + test('combine user and default settings', function () { + + var userSettings = [ + {label:"not-modified", components:["1", "2", "3"]}, + {label:"groups", components:[ + ["a", "b", "c"], + ["d", "e", "f"] + ], showOn:{scope:'user'}}, + {label:"one-added", components:["4", "5", "6"]} + ]; + + var defaultSettings = [ + {label:"one-added", components:["4", "added", "6", "ignored"], showOn:{scope:'default'}}, + {label:"groups", components:[ + ["d", "e", "g"], + ["f", "a", "b"], + ["h", "i", "j"] + ], showOn:{scope:'default'}}, + {label:"one-remains", components:["2", "3", "remains"]}, + {label:"empty", components:["1", "5"]} + ]; + + var expected = [ + {label:"not-modified", components:["1", "2", "3"]}, + {label:"groups", components:[ + ["a", "b", "c"], + ["d", "e", "f"], + ["g"], + ["h", "i", "j"] + ], showOn:{scope:'user'}}, + {label:"one-added", components:["4", "5", "6", "added"], showOn:{scope:'default'}}, + {label:"one-remains", components:["remains"]} + ]; + + var combined = Settings.combineToolbarSettings(userSettings, defaultSettings, ["ignored"]); + deepEqual(expected, combined); + }); + }); +}); diff --git a/modules/core/aloha/static/test/unit/plugins/ui.html b/modules/core/aloha/static/test/unit/plugins/ui.html new file mode 100644 index 000000000..085c3a067 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugins/ui.html @@ -0,0 +1,54 @@ + + + + + Aloha Editor ui Plugin Test Suite + + + + + + + + + + + + + + + + + + + + + +

                                                                                      Aloha Editor ui Plugin Test Suite

                                                                                      + +

                                                                                      + +
                                                                                      +

                                                                                      +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + + diff --git a/modules/core/aloha/static/test/unit/plugintest1/css/test.js b/modules/core/aloha/static/test/unit/plugintest1/css/test.js new file mode 100644 index 000000000..28daca144 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/css/test.js @@ -0,0 +1,5 @@ +define([], function () { + return { + status:'ok' + } +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/lib/component.js b/modules/core/aloha/static/test/unit/plugintest1/lib/component.js new file mode 100644 index 000000000..b22282371 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/lib/component.js @@ -0,0 +1,13 @@ +define( + ['./componenttype'], // dependency in the same path + function (componenttype) { + "use strict"; + + var component = componenttype.extend({ + doOther:function () { + return 'didOther'; + } + }); + return new component(); + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/lib/componenttype.js b/modules/core/aloha/static/test/unit/plugintest1/lib/componenttype.js new file mode 100644 index 000000000..a9b014c0a --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/lib/componenttype.js @@ -0,0 +1,14 @@ +define( + [], // no dependency + function () { + "use strict"; + + var componenttype = Class.extend({ + doSome:function () { + return 'didSome'; + } + }); + + return componenttype; + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/lib/plugintest1-plugin.js b/modules/core/aloha/static/test/unit/plugintest1/lib/plugintest1-plugin.js new file mode 100644 index 000000000..602acba51 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/lib/plugintest1-plugin.js @@ -0,0 +1,48 @@ +/* plugintest1-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['aloha/core', 'aloha/plugin', 'jquery', 'i18n!plugintest1/nls/i18n' ], + function (Aloha, Plugin, jQuery, i18n) { + "use strict"; + + return Plugin.create('plugintest1', { + defaults:{ + value1:1, + value2:2, + value3:{ + valueA:'A', + valueB:'B', + valueC:['I', 'II'], + valueD:['III', 'IV'] + } + }, + init:function () { + window.AlohaPlugin1 = 'called'; + } + }); + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/lib/test.js b/modules/core/aloha/static/test/unit/plugintest1/lib/test.js new file mode 100644 index 000000000..28daca144 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/lib/test.js @@ -0,0 +1,5 @@ +define([], function () { + return { + status:'ok' + } +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/nls/de.json b/modules/core/aloha/static/test/unit/plugintest1/nls/de.json new file mode 100644 index 000000000..66d582ef0 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/nls/de.json @@ -0,0 +1,3 @@ +{ + "plugin1.test1":"germanJSON" +} \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/nls/de/i18n.js b/modules/core/aloha/static/test/unit/plugintest1/nls/de/i18n.js new file mode 100644 index 000000000..b34e2076e --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/nls/de/i18n.js @@ -0,0 +1,3 @@ +define({ + "plugin1.test1":"german" +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/nls/en.json b/modules/core/aloha/static/test/unit/plugintest1/nls/en.json new file mode 100644 index 000000000..830b6e26a --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/nls/en.json @@ -0,0 +1,3 @@ +{ + "plugin1.test1":"englishJSON" +} \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/nls/en/i18n.js b/modules/core/aloha/static/test/unit/plugintest1/nls/en/i18n.js new file mode 100644 index 000000000..7d7999057 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/nls/en/i18n.js @@ -0,0 +1,3 @@ +define({ + "plugin1.test1":"english" +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/nls/i18n.js b/modules/core/aloha/static/test/unit/plugintest1/nls/i18n.js new file mode 100644 index 000000000..7cc956603 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/nls/i18n.js @@ -0,0 +1,6 @@ +define({ + root:{ + "plugin1.test1":"fallback" + }, + "de":true +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/res/test.js b/modules/core/aloha/static/test/unit/plugintest1/res/test.js new file mode 100644 index 000000000..28daca144 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/res/test.js @@ -0,0 +1,5 @@ +define([], function () { + return { + status:'ok' + } +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/res/test.json b/modules/core/aloha/static/test/unit/plugintest1/res/test.json new file mode 100644 index 000000000..b8be0978e --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/res/test.json @@ -0,0 +1 @@ +{ "data":"ok" } \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest1/vendor/test.js b/modules/core/aloha/static/test/unit/plugintest1/vendor/test.js new file mode 100644 index 000000000..28daca144 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest1/vendor/test.js @@ -0,0 +1,5 @@ +define([], function () { + return { + status:'ok' + } +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/README b/modules/core/aloha/static/test/unit/plugintest2/README new file mode 100644 index 000000000..e69de29bb diff --git a/modules/core/aloha/static/test/unit/plugintest2/lib/component.js b/modules/core/aloha/static/test/unit/plugintest2/lib/component.js new file mode 100644 index 000000000..59c3a519f --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/lib/component.js @@ -0,0 +1,14 @@ +define( + ['plugintest1/componenttype'], + function (componenttype) { + "use strict"; + + var component = componenttype.extend({ + doOther:function () { + return 'didOther'; + } + }); + + return new component(); + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/lib/jquery.alohaTest.js b/modules/core/aloha/static/test/unit/plugintest2/lib/jquery.alohaTest.js new file mode 100644 index 000000000..d228dcb92 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/lib/jquery.alohaTest.js @@ -0,0 +1,5 @@ +define(["jquery"], function (jQuery) { + jQuery.fn.alohaTest = function () { + return 'ok'; + }; +}); diff --git a/modules/core/aloha/static/test/unit/plugintest2/lib/plugintest2-plugin.js b/modules/core/aloha/static/test/unit/plugintest2/lib/plugintest2-plugin.js new file mode 100644 index 000000000..cd7f8779b --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/lib/plugintest2-plugin.js @@ -0,0 +1,34 @@ +/* plugintest2-plugin.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['aloha/core', 'aloha/plugin', 'jquery', 'i18n!plugintest2/nls/i18n', './jquery.alohaTest' ], + function (Aloha, Plugin, jQuery, i18n) { + "use strict"; + + return Plugin.create('plugintest2', {}); + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/nls/en.json b/modules/core/aloha/static/test/unit/plugintest2/nls/en.json new file mode 100644 index 000000000..40dfff3a8 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/nls/en.json @@ -0,0 +1,3 @@ +{ + "plugin2.test1":"englishJSON" +} \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/nls/en/i18n.js b/modules/core/aloha/static/test/unit/plugintest2/nls/en/i18n.js new file mode 100644 index 000000000..c40dd8d8d --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/nls/en/i18n.js @@ -0,0 +1,3 @@ +define({ + "plugin2.test1":"english" +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/nls/i18n.js b/modules/core/aloha/static/test/unit/plugintest2/nls/i18n.js new file mode 100644 index 000000000..1f3cdebc9 --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/nls/i18n.js @@ -0,0 +1,4 @@ +define({ + root:{ "plugin2.test1":"fallback" }, + "en":true +}); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/plugintest2/res/test.json b/modules/core/aloha/static/test/unit/plugintest2/res/test.json new file mode 100644 index 000000000..b530bcbeb --- /dev/null +++ b/modules/core/aloha/static/test/unit/plugintest2/res/test.json @@ -0,0 +1 @@ +{"data":"ok"} \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/remove-markup.js b/modules/core/aloha/static/test/unit/remove-markup.js new file mode 100644 index 000000000..1b6bfd0b1 --- /dev/null +++ b/modules/core/aloha/static/test/unit/remove-markup.js @@ -0,0 +1,293 @@ +/* remove-markup.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + ['testutils'], + function (TestUtils, undefined) { + "use strict"; + + + /** + * Do a "remove markup" test + * @param editable the editable + * @param startContainer + * @param startOffset + * @param endContainer + * @param endOffset + * @param markup markup to be removed + * @param original reference + * @param reference result selector + */ + function doRemoveMarkupTest(editable, startContainer, startOffset, endContainer, endOffset, markup, original, reference) { + // generate the range + var range = TestUtils.generateRange(startContainer, startOffset, endContainer, endOffset); + + // apply the markup + TestUtils.removeMarkup(editable, range, markup); + + // get the result + var result = Aloha.editables[0].getContents(true); + + // get the expected results + var expected = $(reference).contents(); + + // compare the result with the expected result + deepEqual(result.extractHTML(), expected.extractHTML(), 'Check Operation Result'); + } + + // Prepare + var $ = window.jQuery, + $body = $('body'); + + // Test whether Aloha is properly initialized + asyncTest('Aloha Startup Test', function () { + Aloha.ready(function () { + ok(true, 'Aloha Event was fired'); + start(); + }); + setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 60000); + }); + + // All other tests are done when Aloha is ready + Aloha.ready(function () { + module('Remove Simple Markup', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-remove-simple'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + + // find the text node before the bold node + this.beforeBold = this.edit.contents().get(0); + // find the text node in the bold node + this.bold = this.edit.find('b').eq(0).contents().get(0); + // find the text node after the bold node + this.afterBold = this.edit.contents().get(2); + }, + + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test removing markup before occurrance + test('Before Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 0, this.beforeBold, 4, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-before'); + }); + + // Test removing markup into occurrance + test('Into Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 0, this.bold, 2, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-into'); + }); + + // Test removing markup exactly from occurrance + test('Exact Occurrance', function () { + doRemoveMarkupTest(this.edit, this.bold, 0, this.bold, 4, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-exact'); + }); + + // Test removing markup across occurrance + test('Across Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 2, this.afterBold, 3, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-across'); + }); + + // Test removing markup out of occurrance + test('Out of Occurrance', function () { + doRemoveMarkupTest(this.edit, this.bold, 2, this.afterBold, 3, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-out'); + }); + + // Test removing markup after of occurrance + test('After Occurrance', function () { + doRemoveMarkupTest(this.edit, this.afterBold, 3, this.afterBold, 5, jQuery(''), '#ref-remove-simple', '#ref-remove-simple-after'); + }); + + module('Remove Markup in Paragraph', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-remove-para'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + + // find the text node before the bold node + this.beforeBold = this.edit.find('p').eq(0).contents().get(0); + // find the text node in the bold node + this.bold = this.edit.find('b').eq(0).contents().get(0); + // find the text node after the bold node + this.afterBold = this.edit.find('p').eq(0).contents().get(2); + }, + + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test removing markup before occurrance + test('Before Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 0, this.beforeBold, 4, jQuery(''), '#ref-remove-para', '#ref-remove-para-before'); + }); + + // Test removing markup into occurrance + test('Into Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 0, this.bold, 2, jQuery(''), '#ref-remove-para', '#ref-remove-para-into'); + }); + + // Test removing markup exactly from occurrance + test('Exact Occurrance', function () { + doRemoveMarkupTest(this.edit, this.bold, 0, this.bold, 4, jQuery(''), '#ref-remove-para', '#ref-remove-para-exact'); + }); + + // Test removing markup across occurrance + test('Across Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 2, this.afterBold, 3, jQuery(''), '#ref-remove-para', '#ref-remove-para-across'); + }); + + // Test removing markup out of occurrance + test('Out of Occurrance', function () { + doRemoveMarkupTest(this.edit, this.bold, 2, this.afterBold, 3, jQuery(''), '#ref-remove-para', '#ref-remove-para-out'); + }); + + // Test removing markup after of occurrance + test('After Occurrance', function () { + doRemoveMarkupTest(this.edit, this.afterBold, 3, this.afterBold, 5, jQuery(''), '#ref-remove-para', '#ref-remove-para-after'); + }); + + module('Remove Multiple Markup', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-remove-multi'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + + // find the text node before the bold nodes + this.beforeBold = this.edit.contents().get(0); + // find the text node in the first bold node + this.firstBold = this.edit.find('b').eq(0).contents().get(0); + // find the text node between the bold nodes + this.betweenBold = this.edit.contents().get(2); + // find the text node in the second bold node + this.secondBold = this.edit.find('b').eq(1).contents().get(0); + // find the text node after the bold nodes + this.afterBold = this.edit.contents().get(4); + }, + + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test removing markup across occurrances + test('Across Occurrances', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 2, this.afterBold, 3, jQuery(''), '#ref-remove-multi', '#ref-remove-multi-across'); + }); + + // Test removing from occurrance into another + test('From Occurrance into another', function () { + doRemoveMarkupTest(this.edit, this.firstBold, 2, this.secondBold, 2, jQuery(''), '#ref-remove-multi', '#ref-remove-multi-bold2bold'); + }); + + module('Remove Nested Markup', { + setup:function () { + // get the editable area and the reference + this.edit = Aloha.jQuery('#edit'); + this.ref = Aloha.jQuery('#ref-remove-nested'); + // fill the editable area with the reference + this.edit.html(this.ref.html()); + // aloha'fy the editable + this.edit.aloha(); + + // find the text node before the bold node + this.beforeBold = this.edit.contents().get(0); + // find the first text node in the bold node + this.startBold = this.edit.find('b').eq(0).contents().get(0); + // find the last text node in the bold node + this.endBold = this.edit.find('b').eq(0).contents().get(2); + // find the text node in the italic node + this.italic = this.edit.find('i').eq(0).contents().get(0); + // find the text node after the bold node + this.afterBold = this.edit.contents().get(2); + }, + + teardown:function () { + // de-aloha'fy the editable + this.edit.mahalo(); + } + }); + + // Test removing markup into inner occurrance + test('Into inner Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 5, this.italic, 3, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-inner-into'); + }); + + // Test removing exactly inner occurrance + test('Exact inner Occurrance', function () { + doRemoveMarkupTest(this.edit, this.italic, 0, this.italic, 6, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-inner-exact'); + }); + + // Test removing markup across inner occurrance + test('Across inner Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 5, this.afterBold, 4, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-inner-across'); + }); + + // Test removing markup out of inner occurrance + test('Out of inner Occurrance', function () { + doRemoveMarkupTest(this.edit, this.italic, 3, this.afterBold, 4, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-inner-out'); + }); + + // Test removing markup into outer occurrance + test('Into outer Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 5, this.italic, 3, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-outer-into'); + }); + + // Test removing exactly outer occurrance + test('Exactly outer Occurrance', function () { + doRemoveMarkupTest(this.edit, this.startBold, 0, this.endBold, 5, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-outer-exact'); + }); + + // Test removing markup across outer occurrance + test('Across outer Occurrance', function () { + doRemoveMarkupTest(this.edit, this.beforeBold, 5, this.afterBold, 4, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-outer-across'); + }); + + // Test removing markup out of outer occurrance + test('Out of outer Occurrance', function () { + doRemoveMarkupTest(this.edit, this.italic, 3, this.afterBold, 4, jQuery(''), '#ref-remove-nested', '#ref-remove-nested-outer-out'); + }); + }); + }); diff --git a/modules/core/aloha/static/test/unit/removemarkup.html b/modules/core/aloha/static/test/unit/removemarkup.html new file mode 100644 index 000000000..acb56af6a --- /dev/null +++ b/modules/core/aloha/static/test/unit/removemarkup.html @@ -0,0 +1,88 @@ + + + + + Aloha Editor Remove Markup Test Suite + + + + + + + + + + + + + + + + + + + + +

                                                                                        Aloha Editor Remove Markup Test Suite

                                                                                        + +

                                                                                        + +
                                                                                        +

                                                                                        +
                                                                                          +
                                                                                          + +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          +
                                                                                          This is bold text
                                                                                          + + +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          +

                                                                                          This is bold text

                                                                                          + + +
                                                                                          This is bold text with more bold text
                                                                                          +
                                                                                          This is bold text with more bold text
                                                                                          +
                                                                                          This is bold text with more bold text
                                                                                          + + +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          This is bold italic text for testing
                                                                                          +
                                                                                          +
                                                                                          + + diff --git a/modules/core/aloha/static/test/unit/repository.html b/modules/core/aloha/static/test/unit/repository.html new file mode 100644 index 000000000..6f6918bb3 --- /dev/null +++ b/modules/core/aloha/static/test/unit/repository.html @@ -0,0 +1,56 @@ + + + + + Aloha Editor Core Test Suite + + + + + + + + + + + + + + + + + + + + + + +

                                                                                          Aloha Editor Repository Test Suite

                                                                                          + +

                                                                                          + +
                                                                                          +

                                                                                          +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + + diff --git a/modules/core/aloha/static/test/unit/repository2.html b/modules/core/aloha/static/test/unit/repository2.html new file mode 100644 index 000000000..d98945627 --- /dev/null +++ b/modules/core/aloha/static/test/unit/repository2.html @@ -0,0 +1,59 @@ + + + + + Aloha Editor Core Test Suite + + + + + + + + + + + + + + + + + + + + + + +

                                                                                            Aloha Editor Repository Test Suite

                                                                                            + +

                                                                                            + +
                                                                                            +

                                                                                            +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + + diff --git a/modules/core/aloha/static/test/unit/repositorytests.js b/modules/core/aloha/static/test/unit/repositorytests.js new file mode 100644 index 000000000..722a40874 --- /dev/null +++ b/modules/core/aloha/static/test/unit/repositorytests.js @@ -0,0 +1,547 @@ +/* repositorytests.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [], + function () { + 'use strict'; + + var repositoryId1 = 'testRepo1', + repositoryId2 = 'testRepo2', + timeout = 5000, + manager, + repository, + testOrder = [ + runBasicTests, + runGetChildrenTests, + runQueryTests, + runQueryResponseTests, + runOverlappingQueryTests, + runLadeLoadingInitializationTest + ]; + + function str(str) { + return str.replace(/\s+/g, ' '); + }; + + // Test whether Aloha can load modules + asyncTest('Aloha.require repository modules.', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 10000); + // All other tests are done when Aloha is ready + Aloha.require(['aloha/repository', 'aloha/repositorymanager'], + function (Repository, Manager) { + manager = Manager; + repository = Repository; + Aloha.ready(runNextTest); + clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + + function runNextTest() { + if (testOrder.length) { + var test = testOrder.shift(); + if (typeof test === 'function') { + test(); + } + } + }; + + function runBasicTests(callbackNextTests) { + module("Basic Tests"); + + test( + 'Test Aloha.RepositoryManager startup state', + function () { + equal( + manager.repositories.length, 0, + 'Check that repository manager contains 0 registered ' + + 'repository.' + ); + + // Create, and register a test repository only after we have + // Done our first check + new (repository.extend({ + _constructor:function () { + this._super(repositoryId1, 'testRepository1Name'); + }, + query:function (params, callback) { + var delay = params && + ( typeof params.delay === 'number' ) + ? params.delay : 0; + + setTimeout(function () { + var results = []; + + if (params && params.maxItems) { + var l = params.maxItems + 1; + while (--l) { + results.push({}); + } + } + + callback(results); + }, delay); + }, + getChildren:function (params, callback) { + var delay = params && + ( typeof params.delay === 'number' ) + ? params.delay : 0; + + setTimeout(function () { + var results = []; + + if (params && params.maxItems) { + var l = params.maxItems + 1; + while (--l) { + results.push({}); + } + } + + callback(results); + }, delay); + } + }))(); + } + ); + + test( + 'Test registering of repository', + function () { + equal( + manager.repositories.length, 1, + 'Check that repository manager contains 1 registered ' + + 'repository.' + ); + + equal( + manager.repositories[0] && manager.repositories[0].repositoryId, repositoryId1, + 'Check that the id of the first registered repository is "' + + repositoryId1 + '."' + ); + + runNextTest(); + } + ); + }; + + function runGetChildrenTests() { + module("getChildren tests (single repository)"); + + asyncTest( + 'Test timeouts for getChildren method', + function () { + var starttime = new Date; + + manager.getChildren({ + // Make the repository repsond 1 second too late + delay:timeout + 1000 + }, function (response) { + var elapsed = (new Date) - starttime; + // We accept a slight delay to accomodate minor lags in + // exection. We use (elapsed - timeout) and not + // Math.abs(elapsed - timeout) however because we never + // expect the callback to be invoked before the 5 second + // timeout window + var grace = 20; // ... it is *amazing* + + ok( + (elapsed - timeout) < grace, + str(' \ + Check that the repository manager times-out on a \ + repository that was taking more than the allowed \ + ' + timeout + ' +/= ' + grace + ' milliseconds to \ + fullfill a getChildren call.\nThis callback was \ + invoked after ' + elapsed + ' milliseconds. \ + ') + ); + + ok( + elapsed >= timeout, + str(' \ + Check that repository manager waited at least the \ + expected ' + timeout + ' milliseconds for \ + repositories to respond before automatically \ + invoking the callback function.\nThe manager \ + waited ' + elapsed + ' milliseconds. \ + ') + ); + + starttime = new Date; + + manager.getChildren({ + // Make sure the repository finish before the timeout + delay:timeout / 2 + }, function (response) { + var elapsed = ((new Date ) - starttime); + ok( + elapsed < timeout, + str( + 'Check that the repository manager invoked \ + this callback before the timeout was reached. \ + \nThis callback was invoked after ' + elapsed + + ' milliseconds.' + ) + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runQueryTests() { + module("Query timeout tests (single repository)"); + + asyncTest( + 'Test timeouts for Aloha.RepositoryManager.query method', + function () { + var starttime = new Date; + + manager.query({ + delay:timeout + 1000 + }, function (response) { + var elapsed = (new Date) - starttime; + var grace = 20; + + ok( + (elapsed - timeout) < grace, + str(' \ + Check that the repository manager times-out on a \ + repository that was taking more than the allowed \ + ' + timeout + ' +/= ' + grace + ' milliseconds to \ + fulfill the query method.\nThis callback was \ + invoked after ' + elapsed + ' milliseconds. \ + ') + ); + + ok( + elapsed >= timeout, + str(' \ + Check that repository manager waited at least the \ + expected ' + timeout + ' milliseconds for \ + repositories to respond before automatically \ + invoking the callback function.\nThe manager \ + waited ' + elapsed + ' milliseconds. \ + ') + ); + + starttime = new Date; + + manager.query({ + delay:timeout / 2 + }, function (response) { + var elapsed = ((new Date ) - starttime); + ok( + elapsed < timeout, + str( + 'Check that the repository manager invoked \ + this callback before the timeout was reached. \ + \nThis callback was invoked after ' + elapsed + + ' milliseconds.' + ) + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runQueryResponseTests() { + module("Query response tests (single repository)"); + + asyncTest( + 'Test response object for Aloha.RepositoryManager.query method', + function () { + manager.query({ + maxItems:0 + }, function (response) { + ok( + response && (typeof response === 'object'), + 'Check that repository manager returns a response ' + + 'object.' + ); + + equal( + response.results, 0, + 'Check that the response object contains 0 results.' + ); + + equal( + response.items.length, 0, + 'Check that the response object\'s "items" property ' + + 'is an empty array.' + ); + + var numItemsToFetch = Math.round(Math.random() * 100); + + manager.query({ + maxItems:numItemsToFetch + }, function (response) { + equal( + response.results, numItemsToFetch, + 'Check that response object contains "' + + numItemsToFetch + '" results.' + ); + + equal( + response.results, response.items.length, + 'Check that the "results" property matches the ' + + 'length of the "items" array in the response object.' + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runOverlappingQueryTests() { + asyncTest( + 'Tests for overlapping queries (single repository)', + function () { + var starttime = new Date; + var numOpenQueries = 0; + + ++numOpenQueries; + stop(); + manager.query({ + delay:timeout + 2000, + maxItems:3 + }, function (response) { + equal( + response.results, 0, + 'Check that response object contains 0 results ' + + 'because it timed-out @ ' + ((new Date) - starttime) + + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 1, + 'Check that there is still 1 more query open.' + ); + + start(); + }); + + // This next query should callback just before the previous + // query times-out, and should finish after the previous has + // timed-out + ++numOpenQueries; + stop(); + setTimeout(function () { + manager.query({ + delay:timeout - 100, + maxItems:2 + }, function (response) { + equal( + response.results, 2, + 'Check that the response object contains 2 ' + + 'results @' + ((new Date) - starttime) + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 0, + 'Check that this is the last query to be closed ' + + '(ie: there are 0 opened queries).' + ); + + start(); + + runNextTest(); + }); + }, timeout - 500); + + // Before the previous query is complete, start another query + ++numOpenQueries; + stop(); + manager.query({ + maxItems:4 + }, function (response) { + equal( + response.results, 4, + 'Check that response object returns the results for ' + + 'the correct callback @ ' + ((new Date) - starttime) + + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 2, + 'Check that there are 2 more queries still open.' + ); + + start(); + }); + + start(); + } + ); + }; + + //------------------------------------------------------------------------- + // Tests for managing multiple repositories + //------------------------------------------------------------------------- + + function runQueryTestMultipleRepos() { + + // Create, a second repository + new (repository.extend({ + _constructor:function () { + this._super(repositoryId2, 'testRepository2Name'); + }, + // Will always immediately return one object + query:function (params, callback) { + callback([ + {} + ]); + } + }))(); + + module("Query TESTS: MULTIPLE REPOSITORIES"); + + test( + 'Test that we have 2 repositories registered', + function () { + equal( + manager.repositories.length, 2, + 'Check that repository manager contains 2 registered ' + + 'repositories.' + ); + + equal( + manager.repositories[1] && manager.repositories[1].repositoryId, repositoryId2, + 'Check that the id of the second registered repository ' + + 'is "' + repositoryId2 + '."' + ); + + equal( + manager.repositories[0] && manager.repositories[0].repositoryId, repositoryId1, + 'Check that the id of the first registered repository is' + + ' still "' + repositoryId1 + '."' + ); + + start(); + } + ); + + asyncTest( + 'Test queries to multiple repositories through the repository manager', + function () { + stop(); + manager.query({ + maxItems:2 + }, function (response) { + equal( + response.results, 3, + 'Check that a total of 2 + 1 results are returned ' + + 'from the 2 registered repositories' + ); + + start(); + }); + + stop(); + manager.query({ + delay:timeout + 500, + maxItems:5 + }, function (response) { + equal( + response.results, 1, + 'Check that only 1 result is returned because 1 of ' + + 'the 2 repos timed-out.' + ); + + equal( + response.items[0].repositoryId, + 'testRepo2', + 'Check that the results only include those from the ' + + 'second repository returned results.' + ); + + start(); + }); + + start(); + } + ); + }; + + //------------------------------------------------------------------------- + // Tests for managing multiple repositories + //------------------------------------------------------------------------- + + function runLadeLoadingInitializationTest() { + var initialized = false; + + // Create, a second repository + new (repository.extend({ + _constructor:function () { + this._super(repositoryId2, 'testRepository2Name'); + }, + // Will always immediately return one object + query:function (params, callback) { + callback([ + {} + ]); + }, + init:function () { + initialized = true; + } + }))(); + + module("Initialization TEST: CHECK IF INITIALIZED"); + + test( + 'Test that we have 2 repositories registered', + function () { + equal( + initialized, true, + 'Check that repository has initialized' + ); + + start(); + } + ); + }; + }); diff --git a/modules/core/aloha/static/test/unit/repositorytests2.js b/modules/core/aloha/static/test/unit/repositorytests2.js new file mode 100644 index 000000000..edb381faf --- /dev/null +++ b/modules/core/aloha/static/test/unit/repositorytests2.js @@ -0,0 +1,513 @@ +/* repositorytests2.js is part of Aloha Editor project http://aloha-editor.org + * + * Aloha Editor is a WYSIWYG HTML5 inline editing library and editor. + * Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria. + * Contributors http://aloha-editor.org/contribution.php + * + * Aloha Editor is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * Aloha Editor is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * As an additional permission to the GNU GPL version 2, you may distribute + * non-source (e.g., minimized or compacted) forms of the Aloha-Editor + * source code without the copy of the GNU GPL normally required, + * provided you include this license notice and a URL through which + * recipients can access the Corresponding Source. + */ +define( + [], + function () { + 'use strict'; + + var repositoryId1 = 'testRepo1', + repositoryId2 = 'testRepo2', + timeout = 3000, + manager, + repository, + testOrder = [ + runBasicTests, + runGetChildrenTests, + runQueryTests, + runQueryResponseTests, + runOverlappingQueryTests + ]; + + function str(str) { + return str.replace(/\s+/g, ' '); + }; + + // Test whether Aloha can load modules + asyncTest('Aloha.require repository modules.', function () { + var timeout = setTimeout(function () { + ok(false, 'Aloha was not initialized within 60 seconds'); + start(); + }, 10000); + // All other tests are done when Aloha is ready + Aloha.require(['aloha/repository', 'aloha/repositorymanager'], + function (Repository, Manager) { + manager = Manager; + repository = Repository; + Aloha.ready(function () { + + runNextTest(); + } + ); + clearTimeout(timeout); + ok(true, 'Aloha Event was fired'); + start(); + }); + }); + + + function runNextTest() { + if (testOrder.length) { + var test = testOrder.shift(); + if (typeof test === 'function') { + test(); + } + } + }; + + function runBasicTests(callbackNextTests) { + module("Basic Tests"); + + test( + 'Test Aloha.RepositoryManager startup state', + function () { + equal( + manager.repositories.length, 0, + 'Check that repository manager contains 0 registered ' + + 'repository.' + ); + + // Create, and register a test repository only after we have + // Done our first check + new (repository.extend({ + _constructor:function () { + this._super(repositoryId1, 'testRepository1Name'); + }, + query:function (params, callback) { + var delay = params && + ( typeof params.delay === 'number' ) + ? params.delay : 0; + + setTimeout(function () { + var results = []; + + if (params && params.maxItems) { + var l = params.maxItems + 1; + while (--l) { + results.push({}); + } + } + + callback(results); + }, delay); + }, + getChildren:function (params, callback) { + var delay = params && + ( typeof params.delay === 'number' ) + ? params.delay : 0; + + setTimeout(function () { + var results = []; + + if (params && params.maxItems) { + var l = params.maxItems + 1; + while (--l) { + results.push({}); + } + } + + callback(results); + }, delay); + } + }))(); + } + ); + + test( + 'Test registering of repository', + function () { + equal( + manager.repositories.length, 1, + 'Check that repository manager contains 1 registered ' + + 'repository.' + ); + + equal( + manager.repositories[0] && manager.repositories[0].repositoryId, repositoryId1, + 'Check that the id of the first registered repository is "' + + repositoryId1 + '."' + ); + + runNextTest(); + } + ); + }; + + function runGetChildrenTests() { + module("getChildren tests (single repository)"); + + asyncTest( + 'Test timeouts for getChildren method', + function () { + var starttime = new Date; + + manager.getChildren({ + // Make the repository repsond 1 second too late + delay:timeout + 1000 + }, function (response) { + var elapsed = (new Date) - starttime; + // We accept a slight delay to accomodate minor lags in + // exection. We use (elapsed - timeout) and not + // Math.abs(elapsed - timeout) however because we never + // expect the callback to be invoked before the 5 second + // timeout window + var grace = 20; // ... it is *amazing* + + ok( + (elapsed - timeout) < grace, + str(' \ + Check that the repository manager times-out on a \ + repository that was taking more than the allowed \ + ' + timeout + ' +/= ' + grace + ' milliseconds to \ + fullfill a getChildren call.\nThis callback was \ + invoked after ' + elapsed + ' milliseconds. \ + ') + ); + + ok( + elapsed >= timeout, + str(' \ + Check that repository manager waited at least the \ + expected ' + timeout + ' milliseconds for \ + repositories to respond before automatically \ + invoking the callback function.\nThe manager \ + waited ' + elapsed + ' milliseconds. \ + ') + ); + + starttime = new Date; + + manager.getChildren({ + // Make sure the repository finish before the timeout + delay:timeout / 2 + }, function (response) { + var elapsed = ((new Date ) - starttime); + ok( + elapsed < timeout, + str( + 'Check that the repository manager invoked \ + this callback before the timeout was reached. \ + \nThis callback was invoked after ' + elapsed + + ' milliseconds.' + ) + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runQueryTests() { + module("Query timeout tests (single repository)"); + + asyncTest( + 'Test timeouts for Aloha.RepositoryManager.query method', + function () { + var starttime = new Date; + + manager.query({ + delay:timeout + 1000 + }, function (response) { + var elapsed = (new Date) - starttime; + var grace = 20; + + ok( + (elapsed - timeout) < grace, + str(' \ + Check that the repository manager times-out on a \ + repository that was taking more than the allowed \ + ' + timeout + ' +/= ' + grace + ' milliseconds to \ + fulfill the query method.\nThis callback was \ + invoked after ' + elapsed + ' milliseconds. \ + ') + ); + + ok( + elapsed >= timeout, + str(' \ + Check that repository manager waited at least the \ + expected ' + timeout + ' milliseconds for \ + repositories to respond before automatically \ + invoking the callback function.\nThe manager \ + waited ' + elapsed + ' milliseconds. \ + ') + ); + + starttime = new Date; + + manager.query({ + delay:timeout / 2 + }, function (response) { + var elapsed = ((new Date ) - starttime); + ok( + elapsed < timeout, + str( + 'Check that the repository manager invoked \ + this callback before the timeout was reached. \ + \nThis callback was invoked after ' + elapsed + + ' milliseconds.' + ) + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runQueryResponseTests() { + module("Query response tests (single repository)"); + + asyncTest( + 'Test response object for Aloha.RepositoryManager.query method', + function () { + manager.query({ + maxItems:0 + }, function (response) { + ok( + response && (typeof response === 'object'), + 'Check that repository manager returns a response ' + + 'object.' + ); + + equal( + response.results, 0, + 'Check that the response object contains 0 results.' + ); + + equal( + response.items.length, 0, + 'Check that the response object\'s "items" property ' + + 'is an empty array.' + ); + + var numItemsToFetch = Math.round(Math.random() * 100); + + manager.query({ + maxItems:numItemsToFetch + }, function (response) { + equal( + response.results, numItemsToFetch, + 'Check that response object contains "' + + numItemsToFetch + '" results.' + ); + + equal( + response.results, response.items.length, + 'Check that the "results" property matches the ' + + 'length of the "items" array in the response object.' + ); + + start(); + + runNextTest(); + }); + }); + } + ); + }; + + function runOverlappingQueryTests() { + asyncTest( + 'Tests for overlapping queries (single repository)', + function () { + var starttime = new Date; + var numOpenQueries = 0; + + ++numOpenQueries; + stop(); + manager.query({ + delay:timeout + 2000, + maxItems:3 + }, function (response) { + equal( + response.results, 0, + 'Check that response object contains 0 results ' + + 'because it timed-out @ ' + ((new Date) - starttime) + + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 1, + 'Check that there is still 1 more query open.' + ); + + start(); + }); + + // This next query should callback just before the previous + // query times-out, and should finish after the previous has + // timed-out + ++numOpenQueries; + stop(); + setTimeout(function () { + manager.query({ + delay:timeout - 100, + maxItems:2 + }, function (response) { + equal( + response.results, 2, + 'Check that the response object contains 2 ' + + 'results @' + ((new Date) - starttime) + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 0, + 'Check that this is the last query to be closed ' + + '(ie: there are 0 opened queries).' + ); + + start(); + + runNextTest(); + }); + }, timeout - 500); + + // Before the previous query is complete, start another query + ++numOpenQueries; + stop(); + manager.query({ + maxItems:4 + }, function (response) { + equal( + response.results, 4, + 'Check that response object returns the results for ' + + 'the correct callback @ ' + ((new Date) - starttime) + + '.' + ); + + --numOpenQueries; + equal( + numOpenQueries, 2, + 'Check that there are 2 more queries still open.' + ); + + start(); + }); + + start(); + } + ); + }; + + //------------------------------------------------------------------------- + // Tests for managing multiple repositories + //------------------------------------------------------------------------- + + function runQueryTestMultipleRepos() { + + // Create, a second repository + new (repository.extend({ + _constructor:function () { + this._super(repositoryId2, 'testRepository2Name'); + }, + // Will always immediately return one object + query:function (params, callback) { + callback([ + {} + ]); + } + }))(); + + module("Query TESTS: MULTIPLE REPOSITORIES"); + + test( + 'Test that we have 2 repositories registered', + function () { + equal( + manager.repositories.length, 2, + 'Check that repository manager contains 2 registered ' + + 'repositories.' + ); + + equal( + manager.repositories[1] && manager.repositories[1].repositoryId, repositoryId2, + 'Check that the id of the second registered repository ' + + 'is "' + repositoryId2 + '."' + ); + + equal( + manager.repositories[0] && manager.repositories[0].repositoryId, repositoryId1, + 'Check that the id of the first registered repository is' + + ' still "' + repositoryId1 + '."' + ); + + start(); + } + ); + + asyncTest( + 'Test queries to multiple repositories through the repository manager', + function () { + stop(); + manager.query({ + maxItems:2 + }, function (response) { + equal( + response.results, 3, + 'Check that a total of 2 + 1 results are returned ' + + 'from the 2 registered repositories' + ); + + start(); + }); + + stop(); + manager.query({ + delay:timeout + 500, + maxItems:5 + }, function (response) { + equal( + response.results, 1, + 'Check that only 1 result is returned because 1 of ' + + 'the 2 repos timed-out.' + ); + + equal( + response.items[0].repositoryId, + 'testRepo2', + 'Check that the results only include those from the ' + + 'second repository returned results.' + ); + + start(); + }); + + start(); + } + ); + }; + + }); \ No newline at end of file diff --git a/modules/core/aloha/static/test/unit/selection1.html b/modules/core/aloha/static/test/unit/selection1.html new file mode 100644 index 000000000..aa1ea0588 --- /dev/null +++ b/modules/core/aloha/static/test/unit/selection1.html @@ -0,0 +1,51 @@ + + + + + Aloha Editor selection tests + + + + + + + + + + + + + + + + + + + + +

                                                                                              Aloha Editor selection tests

                                                                                              + +

                                                                                              + +
                                                                                              +

                                                                                              +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + + diff --git a/modules/core/aloha/static/test/unit/selection2.html b/modules/core/aloha/static/test/unit/selection2.html new file mode 100644 index 000000000..6da5875cc --- /dev/null +++ b/modules/core/aloha/static/test/unit/selection2.html @@ -0,0 +1,51 @@ + + + + + Aloha Editor selection tests + + + + + + + + + + + + + + + + + + + + +

                                                                                                Aloha Editor selection tests

                                                                                                + +

                                                                                                + +
                                                                                                +

                                                                                                +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + + diff --git a/modules/core/aloha/static/test/unit/selection3.html b/modules/core/aloha/static/test/unit/selection3.html new file mode 100644 index 000000000..39867dd38 --- /dev/null +++ b/modules/core/aloha/static/test/unit/selection3.html @@ -0,0 +1,51 @@ + + + + + Aloha Editor selection tests + + + + + + + + + + + + + + + + + + + + +

                                                                                                  Aloha Editor selection tests

                                                                                                  + +

                                                                                                  + +
                                                                                                  +

                                                                                                  +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    +