{ "_id": "_design/photon", "name": "Photon 1.26 \n(c) 2025 ermouth \n\nRun attachment `index.html` to start Photon. \n\nSee https://github.com/ermouth/couch-photon \nrepo for more details.", "version": "1.26.20", "rewrites": [ { "from": "/", "to": "/_show/home" }, { "from": "/_dbroot/", "to": "../../../" }, { "from": "/_photon/", "to": "/index.html" }, { "from": "/_photon/_design/photon", "to": "/" }, { "from": "/_photon/*", "to": "/*" }, { "from": "/*", "to": "../../../*" } ], "settings": { "roles": [ "_admin", "app-photon" ] }, "shows": { "home": "function (doc,req) {\n \n // Processes _rewrite request to domain root,\n // used when Photon runs through vhost.\n // Imitates CouchDB root when json is requested,\n // otherwise redirects to Photon.\n \n\tvar info = req.info,\n\t\t\tuuid = req.uuid,\n\t\t\trejson = /(application|text)\\/json/;\n\n\t// We have request to DB root, fake CouchDB root response\n\tif (!req.headers.Accept || rejson.test(req.headers.Accept+'')) return {json:{\n\t\tcouchdb: \t\t'Welcome',\n\t\tuuid: \t\t\tuuid,\n\t\tversion: \t\t'3.0.0',\n\t\tfeatures:\t\t['access-ready'],\n\t\tvendor: {\n\t\t\tname: \t\t'The Apache Software Foundation'\n\t\t}\n\t}};\n\n\t// Page requested, redirecting to Photon\n\treturn {\n\t\tcode:\t\t\t302,\n\t\theaders:\t{Location:'/_photon/'},\n\t\tbody:\t\t\t''\n\t}\n}" }, "stamp": 1768628028061, "validate_doc_update": "function (newDoc,oldDoc,userCtx,secObj) {\n\n\tvar members = (secObj||{}).members || {names:[], roles:[]};\n \n // Pass through if bucket is already protected by Couch\n if (members.names.length || members.roles.length) {\n return;\n }\n\t\n // For public bucket only allow admins to write\n\tif (!_admin()) throw({forbidden: 'Insufficient privileges'});\n \n return;\n \n // - - - - - - - - - - - -\n \n function _admin() {\n\t\t// see if the user is a server admin\n\t\tif(userCtx.roles.indexOf('_admin') !== -1) {\n\t\t\treturn true; // a server admin\n\t\t}\n\n\t\t// see if the user a database admin specified by name\n\t\tif(secObj && secObj.admins && secObj.admins.names) {\n\t\t\tif(secObj.admins.names.indexOf(userCtx.name) !== -1) {\n\t\t\t\treturn true; // database admin\n\t\t\t}\n\t\t}\n\n\t\t// see if the user a database admin specified by role\n\t\tif(secObj && secObj.admins && secObj.admins.roles) {\n\t\t\tvar db_roles = secObj.admins.roles;\n\t\t\tfor(var idx = 0; idx < userCtx.roles.length; idx++) {\n\t\t\t\tvar user_role = userCtx.roles[idx];\n\t\t\t\tif(db_roles.indexOf(user_role) !== -1) {\n\t\t\t\t\treturn true; // role matches!\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false; // default to no admin\n\t}\n\n}", "versions": "## 1.26.20\n\nAdded progress indicator for sync tasks. For continuous tasks \nawaiting changes, or tasks not yet started shows “Waits”.\n\n## 1.26.16\n\nAdded missing config help tips for 3.4…3.5.1 CouchDB \nversions. \n\nMango selector in [New sync…] dlg accepts not only pure \nJSON but also JS object syntax.\n\n## 1.26.14\n\nThe [New DB…] dialog now allows to create `_users`, \n`_replicator` and `_global_changes` buckets.\n\n## 1.26.12\n\nNew `Group` field into [New sync…] dialog. Selected sync \ngroup is stored as .photon_task prop of replicator doc.\n\nAdded new filter option `Selector` allows Mango selectors \nfor new replication task.\n\nThe [▸] button is now available for sync tasks finished \nwith error.\n\nUsername field now recognizes `uname:password` combos,\neven in base64-encoded form, and puts parts into \nappropriate fields.\n\n## 1.26.10\n\nPreview for SVG string props. Scroll direction issues \non Chrome for Linux are now fixed. \n\nJS code highlighting now understands optional chaining.\n\n## 1.26.6\n\nAdded replicator doc id-s into task list rows. Fixed links \nto replicator docs with `/` in doc id.\n\n## 1.26.4\n\nSegoe UI font has now higher priority than Helvetica Neue.\n[Restore…] dialog now allows to undump into `_users` and\n`_replicator` buckets.\n\n## 1.26.2\n\nFixed failing dump to ZIP for CouchDBs with prefix in URL.\n\nAdded CouchDB 3.4.1 related config help tips.\n\nAdded `$beginsWith` into Mango queries validator.\n\n## 1.25.10\n\nFixed task list crack on tasks with source/target \ndefined as an object.\n\nReplication tasks with `selector` filter are now shown \nas filtered.\n\nDB grouping by prefix now recognizes more bucket name \npatterns.\n\n## 1.25.8\n\nFixed invalid in-place row JSON alignment when the first \ngrid column has right-aligned modifier (ie `/int`).\n\n## 1.25.6\n\nFixed DB list layout break when scrollbar is visible.\n\n## 1.25.5\n\nFixed Undo not working properly after adding 10+ \ndoc attachments at a time.\n\nPurge all revs option now available not only \nfor a selection of docs but also from doc editor.\n\n## 1.25.4\n\n[Restore…] options are adapted for JSON sources, \n`Skip deleted` option now works ok for JSON \ndumps.\n\nFixed saving docs with `_deleted:true` added \nmanually in doc editor.\n\nFixed intermittent Undo and in-place code issues \nin doc editor.\n\n## 1.25.3\n\nFixed several issues with doc editor when editing \na deleted doc.\n\nCompatibility with Chrome49 for XP again restored.\n\n## 1.25.2\n\n[Restore…] dialog now accepts .json files containing \nan array of raw docs, with or without revisions. Each \ndoc in array still must have an `_id`.\n\n## 1.24\n\nAdded interactive SQL queries feature, which \ntranslates SQL subset to Mango and queries \ncurrent DB. \n\nBetter JSON serializations: less key ladders.\n\nThe [Resotre…] dialog accepts not only ZIPs but \nalso JSON file dumps saved from `_changes` or \n`_all_docs` endpoints.\n\nCloning a doc no more immediately saves the clone,\nnew doc opens in editor first.\n\nPurge now works fine with deleted docs selected \nin `_changes` feed UI.\n\nPurge also received new All revs mode, which tries \nto get all strored revs of each doc and then to \npurge them all.\n\n## 1.23\n\nDeleted docs can be now edited and saved back.\n\nAdded `/curr` and `/int` modifiers to grid view. A\nqry like `.price /curr` makes its column of values \naligned right, fixpoint and monospaced.\n\nClick on doc [Root▼] in JSON editor fold/unfolds all \nfirst-level doc subtrees. Also works in `_config`.\n\nAdded `_node/_local/_versions` support for Couch 3.3+,\nexposed in `About` tab (`Node tools` section).\n\nAdded Photon history popup into `About` tab.\n\n## 1.22\n\nAdded `Download doc as ZIP` button into doc editor.\nDownloader puts the doc json and all doc attachments \ninto zip as separate files.\n\nThe `Clear local settings` item of Logout menu now\nopens dlg which allows to choose local settings to\nwipe out.\n\nAdded stats into text attachments editor. Added \n`../` level up button into doc editor.\n\nMax obj/array size to unfold in JSON ed is now 500.\n\nMinor UI fixes.\n\n## 1.21\n\nNew feature: DB conflicts list for CouchDB 2.3+.\n\nNew `Add view…` button in the DB docs/view panel.\n\n`Alt+W` (or `Ctrl+W` on Mac) now closes current Photon \ninternal tab.\n\nDefault view mode is now Grid\n\nLink to logs for Couch 1.x is moved to About tab. \n\nGrid selectors like `.value.*.somefield /list` now work not \nonly if `.value` is an array, but with objects as well. Very \nhandy for reducers which return objects.\n\nUser info popup now has Forget viewstates command. The cmd\nclears local state caches.\n\nPhoton is no more mirrored to AWS S3 CDN.\n\n## 1.20\n\nNew major feature: dark theme. Settings are in `About` tab.\n\nMinor UI tweaks and ZIP undump fixes.\n\n## 1.19\n\nSome refactoring, moving from ES5 to ES6.\n\nNew feature: expandable DB auto-groups. Grouping makes Photon\ncomfortable for nodes with thousands DBs. Tunable in settings.\n\nAdded response size/duration indicator at the bottom of \nview results. \n\nPhoton default repo URL was changed, updates are now delivered \nstrictly over https.\n\n## 1.18\n\nMostly UI fixes and performance improvements. Starred DBs show\nsecurity and size regardless of Photon config.\n\n## 1.17\n\nAdded Mango syntax validator into query editor. Added\nPing session config option. \n\nCouchDB 3.2 related: incompatible CSP config handling.\n\nAdded `Ctrl+S` and `Ctrl+Z` (`Cmd+S` and `Cmd+Z` for Mac) global \nkeyboard shortcuts for config, doc and attachment editors.\n\nCompatibility with old IEs is no more maintained.\n\n## 1.16\n\nAdded Undo history panel into doc and config editors. The panel \nis a list of all json changes, and in most cases allows to \nundo json tree changes out of order.\n\n## 1.15\n\nAdded left panel / top bar switch to match wide monitors better. \nVertical panel only available for 1420px+ wide screens.\n\nMax 15 tabs message removed, older tabs are auto-closed if needed.\n\nBucket stats numbers in DB list are clickable and show DB info.\n\nAdded typecast ` /cast` modifiers for selectors in grid view.\n\nAdded `Clone…` button in doc editor; basically `Save as…`.\n\nAdded `../` button in views, which opens bucket root doc list.\n\n## 1.14\n\nAdded grid (table) representation mode for docs lists, view and \nMango queries. Tables are copy/pastable to Excel. \n\nAdded Include docs option for `/_all_docs` view, it is turned on \nautomatically for grid view mode.\n\nViews now memoize their particular source code editor state, as \nwell as reduce level and grid settings.\n\n## 1.12\n\nAdded ZIP dump/restore. A [Delete DB] dlg now offers to re-create \nDB(s) after deletion. Several JSON editor fixes and improvements. \nTask list grouping improved. \n\nTT Mono font excluded from the Photon package. \n\n## 1.11\n\nAdded `/_changes` feed view, added compound index stats for \nddocs view.\n\n## 1.10\n\nAdded index stats for each ddoc in ddocs view; also a lot of \nslight UI improvements.\n\n## 1.9\n\nAdded: group DB sync; Couch perf test; CouchDB v3 support. \n\n## 1.8\n\nImproved JSON editor, added `/_stats` graphs.\n\n## 1.7\n\nAdded structured diff for doc revisions.\n\n## 1.6\n\nNew features: editor for text-based attachments and doc purge. \nDB view received `db/_design_docs` and `db/_local_docs` modes.\n\n## 1.4\n\nAdded access restrictions, Photon no more starts without \nauthorization.\n\n## 1.2\n\nAdded in-place editors for Erlang, JS and Mango view syntax.\n\n## 0.9.99\n\nMore or less usable version with all basic features. March, 2018.", "_attachments": { "css/photon.css": { "content_type": "text/css", "data": "LyogUGhvdG9uIDEuMjYgQ1NTICovCkBjaGFyc2V0ICJVVEYtOCI7Cip7Ym94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH0KaHRtbHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59CmJvZHl7cGFkZGluZzowOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDpub25lO2ZvbnQ6MTlweCAnLWFwcGxlLXN5c3RlbScsICdCbGlua01hY1N5c3RlbUZvbnQnLCAnU2Vnb2UgVUknLCBVYnVudHUsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBUYWhvbWEsIEFyaWFsLCBWZXJkYW5hLCBTYW5zLXNlcmlmO2NvbG9yOiMzODQxNGM7bGluZS1oZWlnaHQ6MS4zZW07YmFja2dyb3VuZDojZmZmO2hlaWdodDoxMDAlfQpzZWN0aW9uLCBkaXYsIHNwYW57cG9zaXRpb246cmVsYXRpdmV9CmgxLCBoMiwgaDMsIGg0e2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46MC40ZW0gMCAwLjNlbSAwO2NvbG9yOiMzODQxNGM7bGluZS1oZWlnaHQ6MS4xZW19Cmgxe2ZvbnQtc2l6ZToyLjVlbX0KaDJ7Zm9udC1zaXplOjJlbX0KaDN7Zm9udC1zaXplOjEuNGVtfQpoNHtmb250LXNpemU6MS4xZW19CmRpdiA+IGgxOm50aC1vZi10eXBlKDEpIHttYXJnaW4tdG9wOjAuMWVtfQpkaXYgPiBoMjpudGgtb2YtdHlwZSgxKSB7bWFyZ2luLXRvcDowLjFlbX0KZGl2ID4gaDM6bnRoLW9mLXR5cGUoMSkge21hcmdpbi10b3A6MC4xZW19CnB7Zm9udDoxZW0gO2xpbmUtaGVpZ2h0OjEuNGVtO21hcmdpbjowLjJlbSAwIDAuNWVtIDB9Cmxpe21hcmdpbi1sZWZ0OjFlbX0Kc21hbGx7Zm9udC1zaXplOjkwJX0KdGFibGV7Ym9yZGVyOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2JvcmRlci1zcGFjaW5nOjB9CnRke3ZlcnRpY2FsLWFsaWduOnRvcDtsaW5lLWhlaWdodDoxLjJlbX0KdGh7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMmVtfQpsYWJlbHtjdXJzb3I6cG9pbnRlcn0KLmludmlze3Zpc2liaWxpdHk6aGlkZGVufQouaGlkZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQoucGFiYywgLnBhYnN7cG9zaXRpb246YWJzb2x1dGV9Ci5jcHtjdXJzb3I6cG9pbnRlcn0KLmNte2N1cnNvcjptb3ZlfQouY3p7Y3Vyc29yOnpvb20taW59Ci5jeHtjdXJzb3I6Y29sLXJlc2l6ZX0KLndoaXRle2NvbG9yOndoaXRlIWltcG9ydGFudH0KLmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50fQouZ3JheS0ye2NvbG9yOiMxYzIwMjYhaW1wb3J0YW50fQouYmctZ3JheS0ye2JhY2tncm91bmQtY29sb3I6IzFjMjAyNiFpbXBvcnRhbnR9Ci5ncmF5LTF7Y29sb3I6IzM4NDE0YyFpbXBvcnRhbnR9Ci5iZy1ncmF5LTF7YmFja2dyb3VuZC1jb2xvcjojMzg0MTRjIWltcG9ydGFudH0KLmdyYXkwe2NvbG9yOiM0ZDVhNmEhaW1wb3J0YW50fQouYmctZ3JheTB7YmFja2dyb3VuZC1jb2xvcjojNGQ1YTZhIWltcG9ydGFudH0KLmdyYXkxe2NvbG9yOiM4ODkyOWYhaW1wb3J0YW50fQouYmctZ3JheTF7YmFja2dyb3VuZC1jb2xvcjojODg5MjlmIWltcG9ydGFudH0KLmdyYXkye2NvbG9yOiNiOWMwY2IhaW1wb3J0YW50fQouYmctZ3JheTJ7YmFja2dyb3VuZC1jb2xvcjojYjljMGNiIWltcG9ydGFudH0KLmdyYXkze2NvbG9yOiNkMGQ2ZGQhaW1wb3J0YW50fQouYmctZ3JheTN7YmFja2dyb3VuZC1jb2xvcjojZDBkNmRkIWltcG9ydGFudH0KLmdyYXk0e2NvbG9yOiNlM2U4ZWIhaW1wb3J0YW50fQouYmctZ3JheTR7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViIWltcG9ydGFudH0KLmdyYXk1e2NvbG9yOnJnYmEoMTM2LCAxNDYsIDE1OSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEzNiwgMTQ2LCAxNTksIDAuMzUpIWltcG9ydGFudH0KLmdyYXk2e2NvbG9yOnJnYmEoMTg1LCAxOTIsIDIwMywgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpIWltcG9ydGFudH0KLmdyYXk3e2NvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNywgMjMyLCAyMzUsIDAuMzUpIWltcG9ydGFudH0KLmJsdWUtMntjb2xvcjojMTYzMjVhIWltcG9ydGFudH0KLmJnLWJsdWUtMntiYWNrZ3JvdW5kLWNvbG9yOiMxNjMyNWEhaW1wb3J0YW50fQouYmx1ZS0xe2NvbG9yOiMyMzRmOGYhaW1wb3J0YW50fQouYmctYmx1ZS0xe2JhY2tncm91bmQtY29sb3I6IzIzNGY4ZiFpbXBvcnRhbnR9Ci5ibHVlMHtjb2xvcjojMmQ2NmI4IWltcG9ydGFudH0KLmJnLWJsdWUwe2JhY2tncm91bmQtY29sb3I6IzJkNjZiOCFpbXBvcnRhbnR9Ci5ibHVlMXtjb2xvcjojNmI5ZmRiIWltcG9ydGFudH0KLmJnLWJsdWUxe2JhY2tncm91bmQtY29sb3I6IzZiOWZkYiFpbXBvcnRhbnR9Ci5ibHVlMntjb2xvcjojOWVjZGY4IWltcG9ydGFudH0KLmJnLWJsdWUye2JhY2tncm91bmQtY29sb3I6IzllY2RmOCFpbXBvcnRhbnR9Ci5ibHVlM3tjb2xvcjojYjdkYmZiIWltcG9ydGFudH0KLmJnLWJsdWUze2JhY2tncm91bmQtY29sb3I6I2I3ZGJmYiFpbXBvcnRhbnR9Ci5ibHVlNHtjb2xvcjojY2JlN2ZlIWltcG9ydGFudH0KLmJnLWJsdWU0e2JhY2tncm91bmQtY29sb3I6I2NiZTdmZSFpbXBvcnRhbnR9Ci5ibHVlNXtjb2xvcjpyZ2JhKDEwNywgMTU5LCAyMTksIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU1e2JhY2tncm91bmQtY29sb3I6cmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KSFpbXBvcnRhbnR9Ci5ibHVlNntjb2xvcjpyZ2JhKDE1OCwgMjA1LCAyNDgsIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU2e2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTgsIDIwNSwgMjQ4LCAwLjM1KSFpbXBvcnRhbnR9Ci5ibHVlN3tjb2xvcjpyZ2JhKDIwMywgMjMxLCAyNTQsIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU3e2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDMsIDIzMSwgMjU0LCAwLjM1KSFpbXBvcnRhbnR9Ci5jeWFuLTJ7Y29sb3I6IzA5NTQ3MCFpbXBvcnRhbnR9Ci5iZy1jeWFuLTJ7YmFja2dyb3VuZC1jb2xvcjojMDk1NDcwIWltcG9ydGFudH0KLmN5YW4tMXtjb2xvcjojMGU4MmFkIWltcG9ydGFudH0KLmJnLWN5YW4tMXtiYWNrZ3JvdW5kLWNvbG9yOiMwZTgyYWQhaW1wb3J0YW50fQouY3lhbjB7Y29sb3I6IzEyYTVkYyFpbXBvcnRhbnR9Ci5iZy1jeWFuMHtiYWNrZ3JvdW5kLWNvbG9yOiMxMmE1ZGMhaW1wb3J0YW50fQouY3lhbjF7Y29sb3I6IzVkYzVlOCFpbXBvcnRhbnR9Ci5iZy1jeWFuMXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZGM1ZTghaW1wb3J0YW50fQouY3lhbjJ7Y29sb3I6IzlhZTBmMSFpbXBvcnRhbnR9Ci5iZy1jeWFuMntiYWNrZ3JvdW5kLWNvbG9yOiM5YWUwZjEhaW1wb3J0YW50fQouY3lhbjN7Y29sb3I6I2IyZTlmNiFpbXBvcnRhbnR9Ci5iZy1jeWFuM3tiYWNrZ3JvdW5kLWNvbG9yOiNiMmU5ZjYhaW1wb3J0YW50fQouY3lhbjR7Y29sb3I6I2M2ZjBmYSFpbXBvcnRhbnR9Ci5iZy1jeWFuNHtiYWNrZ3JvdW5kLWNvbG9yOiNjNmYwZmEhaW1wb3J0YW50fQouY3lhbjV7Y29sb3I6cmdiYSg5MywgMTk3LCAyMzIsIDAuMzUpIWltcG9ydGFudH0KLmJnLWN5YW41e2JhY2tncm91bmQtY29sb3I6cmdiYSg5MywgMTk3LCAyMzIsIDAuMzUpIWltcG9ydGFudH0KLmN5YW42e2NvbG9yOnJnYmEoMTU0LCAyMjQsIDI0MSwgMC4zNSkhaW1wb3J0YW50fQouYmctY3lhbjZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NCwgMjI0LCAyNDEsIDAuMzUpIWltcG9ydGFudH0KLmN5YW43e2NvbG9yOnJnYmEoMTk4LCAyNDAsIDI1MCwgMC4zNSkhaW1wb3J0YW50fQouYmctY3lhbjd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE5OCwgMjQwLCAyNTAsIDAuMzUpIWltcG9ydGFudH0KLnRlYWwtMntjb2xvcjojMGM1NDQ4IWltcG9ydGFudH0KLmJnLXRlYWwtMntiYWNrZ3JvdW5kLWNvbG9yOiMwYzU0NDghaW1wb3J0YW50fQoudGVhbC0xe2NvbG9yOiMxNThlN2EhaW1wb3J0YW50fQouYmctdGVhbC0xe2JhY2tncm91bmQtY29sb3I6IzE1OGU3YSFpbXBvcnRhbnR9Ci50ZWFsMHtjb2xvcjojMWJiYmEwIWltcG9ydGFudH0KLmJnLXRlYWwwe2JhY2tncm91bmQtY29sb3I6IzFiYmJhMCFpbXBvcnRhbnR9Ci50ZWFsMXtjb2xvcjojNjJkMmMwIWltcG9ydGFudH0KLmJnLXRlYWwxe2JhY2tncm91bmQtY29sb3I6IzYyZDJjMCFpbXBvcnRhbnR9Ci50ZWFsMntjb2xvcjojOWNlNWRhIWltcG9ydGFudH0KLmJnLXRlYWwye2JhY2tncm91bmQtY29sb3I6IzljZTVkYSFpbXBvcnRhbnR9Ci50ZWFsM3tjb2xvcjojYjdlY2UxIWltcG9ydGFudH0KLmJnLXRlYWwze2JhY2tncm91bmQtY29sb3I6I2I3ZWNlMSFpbXBvcnRhbnR9Ci50ZWFsNHtjb2xvcjojY2RmMmU2IWltcG9ydGFudH0KLmJnLXRlYWw0e2JhY2tncm91bmQtY29sb3I6I2NkZjJlNiFpbXBvcnRhbnR9Ci50ZWFsNXtjb2xvcjpyZ2JhKDk4LCAyMTAsIDE5MiwgMC4zNSkhaW1wb3J0YW50fQouYmctdGVhbDV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk4LCAyMTAsIDE5MiwgMC4zNSkhaW1wb3J0YW50fQoudGVhbDZ7Y29sb3I6cmdiYSgxNTYsIDIyOSwgMjE4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy10ZWFsNntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTU2LCAyMjksIDIxOCwgMC4zNSkhaW1wb3J0YW50fQoudGVhbDd7Y29sb3I6cmdiYSgyMDUsIDI0MiwgMjMwLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy10ZWFsN3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA1LCAyNDIsIDIzMCwgMC4zNSkhaW1wb3J0YW50fQouZ3JlZW4tMntjb2xvcjojMjEzMzA2IWltcG9ydGFudH0KLmJnLWdyZWVuLTJ7YmFja2dyb3VuZC1jb2xvcjojMjEzMzA2IWltcG9ydGFudH0KLmdyZWVuLTF7Y29sb3I6IzQ4NmYwZCFpbXBvcnRhbnR9Ci5iZy1ncmVlbi0xe2JhY2tncm91bmQtY29sb3I6IzQ4NmYwZCFpbXBvcnRhbnR9Ci5ncmVlbjB7Y29sb3I6IzY1OWMxMyFpbXBvcnRhbnR9Ci5iZy1ncmVlbjB7YmFja2dyb3VuZC1jb2xvcjojNjU5YzEzIWltcG9ydGFudH0KLmdyZWVuMXtjb2xvcjojOWFjNTVjIWltcG9ydGFudH0KLmJnLWdyZWVuMXtiYWNrZ3JvdW5kLWNvbG9yOiM5YWM1NWMhaW1wb3J0YW50fQouZ3JlZW4ye2NvbG9yOiNjNmU2OTchaW1wb3J0YW50fQouYmctZ3JlZW4ye2JhY2tncm91bmQtY29sb3I6I2M2ZTY5NyFpbXBvcnRhbnR9Ci5ncmVlbjN7Y29sb3I6I2Q0ZWViMSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjN7YmFja2dyb3VuZC1jb2xvcjojZDRlZWIxIWltcG9ydGFudH0KLmdyZWVuNHtjb2xvcjojZTBmNWM2IWltcG9ydGFudH0KLmJnLWdyZWVuNHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGY1YzYhaW1wb3J0YW50fQouZ3JlZW41e2NvbG9yOnJnYmEoMTU0LCAxOTcsIDkyLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NCwgMTk3LCA5MiwgMC4zNSkhaW1wb3J0YW50fQouZ3JlZW42e2NvbG9yOnJnYmEoMTk4LCAyMzAsIDE1MSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JlZW42e2JhY2tncm91bmQtY29sb3I6cmdiYSgxOTgsIDIzMCwgMTUxLCAwLjM1KSFpbXBvcnRhbnR9Ci5ncmVlbjd7Y29sb3I6cmdiYSgyMjQsIDI0NSwgMTk4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNCwgMjQ1LCAxOTgsIDAuMzUpIWltcG9ydGFudH0KLnllbGxvdy0ye2NvbG9yOiM4ZDVkMDkhaW1wb3J0YW50fQouYmcteWVsbG93LTJ7YmFja2dyb3VuZC1jb2xvcjojOGQ1ZDA5IWltcG9ydGFudH0KLnllbGxvdy0xe2NvbG9yOiNjYzg2MGQhaW1wb3J0YW50fQouYmcteWVsbG93LTF7YmFja2dyb3VuZC1jb2xvcjojY2M4NjBkIWltcG9ydGFudH0KLnllbGxvdzB7Y29sb3I6I2YwYTIxYyFpbXBvcnRhbnR9Ci5iZy15ZWxsb3cwe2JhY2tncm91bmQtY29sb3I6I2YwYTIxYyFpbXBvcnRhbnR9Ci55ZWxsb3cxe2NvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQouYmcteWVsbG93MXtiYWNrZ3JvdW5kLWNvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQoueWVsbG93Mntjb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLmJnLXllbGxvdzJ7YmFja2dyb3VuZC1jb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLnllbGxvdzN7Y29sb3I6I2ZmZWY5MSFpbXBvcnRhbnR9Ci5iZy15ZWxsb3cze2JhY2tncm91bmQtY29sb3I6I2ZmZWY5MSFpbXBvcnRhbnR9Ci55ZWxsb3c0e2NvbG9yOiNmZmY0YTAhaW1wb3J0YW50fQouYmcteWVsbG93NHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY0YTAhaW1wb3J0YW50fQoueWVsbG93NXtjb2xvcjpyZ2JhKDI0OCwgMjAxLCA4MiwgMC4zNSkhaW1wb3J0YW50fQouYmcteWVsbG93NXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ4LCAyMDEsIDgyLCAwLjM1KSFpbXBvcnRhbnR9Ci55ZWxsb3c2e2NvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC4zNSkhaW1wb3J0YW50fQouYmcteWVsbG93NntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC4zNSkhaW1wb3J0YW50fQoueWVsbG93N3tjb2xvcjpyZ2JhKDI1NSwgMjQ0LCAxNjAsIDAuMzUpIWltcG9ydGFudH0KLmJnLXllbGxvdzd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjQ0LCAxNjAsIDAuMzUpIWltcG9ydGFudH0KLm9yYW5nZS0ye2NvbG9yOiNhMTQwMDUhaW1wb3J0YW50fQouYmctb3JhbmdlLTJ7YmFja2dyb3VuZC1jb2xvcjojYTE0MDA1IWltcG9ydGFudH0KLm9yYW5nZS0xe2NvbG9yOiNlMTVhMDchaW1wb3J0YW50fQouYmctb3JhbmdlLTF7YmFja2dyb3VuZC1jb2xvcjojZTE1YTA3IWltcG9ydGFudH0KLm9yYW5nZTB7Y29sb3I6I2Y4NzQyMyFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2Uwe2JhY2tncm91bmQtY29sb3I6I2Y4NzQyMyFpbXBvcnRhbnR9Ci5vcmFuZ2Uxe2NvbG9yOiNmYjlmNjchaW1wb3J0YW50fQouYmctb3JhbmdlMXtiYWNrZ3JvdW5kLWNvbG9yOiNmYjlmNjchaW1wb3J0YW50fQoub3JhbmdlMntjb2xvcjojZmVjMjllIWltcG9ydGFudH0KLmJnLW9yYW5nZTJ7YmFja2dyb3VuZC1jb2xvcjojZmVjMjllIWltcG9ydGFudH0KLm9yYW5nZTN7Y29sb3I6I2ZmY2ZhNSFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2Uze2JhY2tncm91bmQtY29sb3I6I2ZmY2ZhNSFpbXBvcnRhbnR9Ci5vcmFuZ2U0e2NvbG9yOiNmZmRhYWEhaW1wb3J0YW50fQouYmctb3JhbmdlNHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmRhYWEhaW1wb3J0YW50fQoub3JhbmdlNXtjb2xvcjpyZ2JhKDI1MSwgMTU5LCAxMDMsIDAuMzUpIWltcG9ydGFudH0KLmJnLW9yYW5nZTV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwgMTU5LCAxMDMsIDAuMzUpIWltcG9ydGFudH0KLm9yYW5nZTZ7Y29sb3I6cmdiYSgyNTQsIDE5NCwgMTU4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2U2e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTQsIDE5NCwgMTU4LCAwLjM1KSFpbXBvcnRhbnR9Ci5vcmFuZ2U3e2NvbG9yOnJnYmEoMjU1LCAyMTgsIDE3MCwgMC4zNSkhaW1wb3J0YW50fQouYmctb3JhbmdlN3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMTgsIDE3MCwgMC4zNSkhaW1wb3J0YW50fQoucmVkLTJ7Y29sb3I6Izc2MTcyNyFpbXBvcnRhbnR9Ci5iZy1yZWQtMntiYWNrZ3JvdW5kLWNvbG9yOiM3NjE3MjchaW1wb3J0YW50fQoucmVkLTF7Y29sb3I6I2FkMjIzOSFpbXBvcnRhbnR9Ci5iZy1yZWQtMXtiYWNrZ3JvdW5kLWNvbG9yOiNhZDIyMzkhaW1wb3J0YW50fQoucmVkMHtjb2xvcjojZDYyYzQ5IWltcG9ydGFudH0KLmJnLXJlZDB7YmFja2dyb3VuZC1jb2xvcjojZDYyYzQ5IWltcG9ydGFudH0KLnJlZDF7Y29sb3I6I2VhNzI4NiFpbXBvcnRhbnR9Ci5iZy1yZWQxe2JhY2tncm91bmQtY29sb3I6I2VhNzI4NiFpbXBvcnRhbnR9Ci5yZWQye2NvbG9yOiNmYWFiYjghaW1wb3J0YW50fQouYmctcmVkMntiYWNrZ3JvdW5kLWNvbG9yOiNmYWFiYjghaW1wb3J0YW50fQoucmVkM3tjb2xvcjojZmNjMWM3IWltcG9ydGFudH0KLmJnLXJlZDN7YmFja2dyb3VuZC1jb2xvcjojZmNjMWM3IWltcG9ydGFudH0KLnJlZDR7Y29sb3I6I2ZlZDNkMyFpbXBvcnRhbnR9Ci5iZy1yZWQ0e2JhY2tncm91bmQtY29sb3I6I2ZlZDNkMyFpbXBvcnRhbnR9Ci5yZWQ1e2NvbG9yOnJnYmEoMjM0LCAxMTQsIDEzNCwgMC4zNSkhaW1wb3J0YW50fQouYmctcmVkNXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM0LCAxMTQsIDEzNCwgMC4zNSkhaW1wb3J0YW50fQoucmVkNntjb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpIWltcG9ydGFudH0KLmJnLXJlZDZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpIWltcG9ydGFudH0KLnJlZDd7Y29sb3I6cmdiYSgyNTQsIDIxMSwgMjExLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1yZWQ3e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTQsIDIxMSwgMjExLCAwLjM1KSFpbXBvcnRhbnR9Ci52aW9sZXQtMntjb2xvcjojNDEyMzYzIWltcG9ydGFudH0KLmJnLXZpb2xldC0ye2JhY2tncm91bmQtY29sb3I6IzQxMjM2MyFpbXBvcnRhbnR9Ci52aW9sZXQtMXtjb2xvcjojNjEzNDk0IWltcG9ydGFudH0KLmJnLXZpb2xldC0xe2JhY2tncm91bmQtY29sb3I6IzYxMzQ5NCFpbXBvcnRhbnR9Ci52aW9sZXQwe2NvbG9yOiM3YTQxYmEhaW1wb3J0YW50fQouYmctdmlvbGV0MHtiYWNrZ3JvdW5kLWNvbG9yOiM3YTQxYmEhaW1wb3J0YW50fQoudmlvbGV0MXtjb2xvcjojYWI4NmUwIWltcG9ydGFudH0KLmJnLXZpb2xldDF7YmFja2dyb3VuZC1jb2xvcjojYWI4NmUwIWltcG9ydGFudH0KLnZpb2xldDJ7Y29sb3I6I2QzYmZmZiFpbXBvcnRhbnR9Ci5iZy12aW9sZXQye2JhY2tncm91bmQtY29sb3I6I2QzYmZmZiFpbXBvcnRhbnR9Ci52aW9sZXQze2NvbG9yOiNlMWQyZmYhaW1wb3J0YW50fQouYmctdmlvbGV0M3tiYWNrZ3JvdW5kLWNvbG9yOiNlMWQyZmYhaW1wb3J0YW50fQoudmlvbGV0NHtjb2xvcjojZWNlMWZmIWltcG9ydGFudH0KLmJnLXZpb2xldDR7YmFja2dyb3VuZC1jb2xvcjojZWNlMWZmIWltcG9ydGFudH0KLnZpb2xldDV7Y29sb3I6cmdiYSgxNzEsIDEzNCwgMjI0LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy12aW9sZXQ1e2JhY2tncm91bmQtY29sb3I6cmdiYSgxNzEsIDEzNCwgMjI0LCAwLjM1KSFpbXBvcnRhbnR9Ci52aW9sZXQ2e2NvbG9yOnJnYmEoMjExLCAxOTEsIDI1NSwgMC4zNSkhaW1wb3J0YW50fQouYmctdmlvbGV0NntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjExLCAxOTEsIDI1NSwgMC4zNSkhaW1wb3J0YW50fQoudmlvbGV0N3tjb2xvcjpyZ2JhKDIzNiwgMjI1LCAyNTUsIDAuMzUpIWltcG9ydGFudH0KLmJnLXZpb2xldDd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzNiwgMjI1LCAyNTUsIDAuMzUpIWltcG9ydGFudH0KLm8we29wYWNpdHk6MC4wMSFpbXBvcnRhbnR9Ci5vMTB7b3BhY2l0eTowLjEhaW1wb3J0YW50fQoubzIwe29wYWNpdHk6MC4yIWltcG9ydGFudH0KLm8zMHtvcGFjaXR5OjAuMyFpbXBvcnRhbnR9Ci5vNDB7b3BhY2l0eTowLjQhaW1wb3J0YW50fQoubzUwe29wYWNpdHk6MC41IWltcG9ydGFudH0KLm82MHtvcGFjaXR5OjAuNiFpbXBvcnRhbnR9Ci5vNzB7b3BhY2l0eTowLjchaW1wb3J0YW50fQoubzgwe29wYWNpdHk6MC44IWltcG9ydGFudH0KLm85MHtvcGFjaXR5OjAuOSFpbXBvcnRhbnR9Ci5vMTAwe29wYWNpdHk6MSFpbXBvcnRhbnR9Ci5sZ3JheXtjb2xvcjojZDBkNmRkIWltcG9ydGFudH0KLmdyYXl7Y29sb3I6Izg4OTI5ZiFpbXBvcnRhbnR9Ci54Z3JheXtjb2xvcjojNGQ1YTZhIWltcG9ydGFudH0KLmJsdWV7Y29sb3I6IzJkNjZiOCFpbXBvcnRhbnR9Ci5za3libHVle2NvbG9yOiM0M2E0ZWYhaW1wb3J0YW50fQouc2t5e2NvbG9yOiM3NmM2ZjMhaW1wb3J0YW50fQoudGVhbHtjb2xvcjojMWJiYmEwIWltcG9ydGFudH0KLmxncmVlbntjb2xvcjojYzZlNjk3IWltcG9ydGFudH0KLmdyZWVue2NvbG9yOiM2NTljMTMhaW1wb3J0YW50fQoueWVsbG93e2NvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQoub3Jhbmdle2NvbG9yOiNmODc0MjMhaW1wb3J0YW50fQoucGlua3tjb2xvcjojZmFhYmI4IWltcG9ydGFudH0KLnNhbG1vbntjb2xvcjojZmRhMDk2IWltcG9ydGFudH0KLmJyb3due2NvbG9yOiNjYzg2MGQhaW1wb3J0YW50fQoucmVke2NvbG9yOiNkNjJjNDkhaW1wb3J0YW50fQouYmctbGdyYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNywgMjMyLCAyMzUsIDAuMzUpIWltcG9ydGFudH0KLmJnLWdyYXl7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViIWltcG9ydGFudH0KLmJnLWxibHVle2JhY2tncm91bmQtY29sb3I6I2NiZTdmZSFpbXBvcnRhbnR9Ci5iZy1sZ3JlZW57YmFja2dyb3VuZC1jb2xvcjojZTBmNWM2IWltcG9ydGFudH0KLmJnLWdyZWVue2JhY2tncm91bmQtY29sb3I6I2M2ZTY5NyFpbXBvcnRhbnR9Ci5iZy15ZWxsb3d7YmFja2dyb3VuZC1jb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLmJnLW9yYW5nZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZWMyOWUhaW1wb3J0YW50fQouYmctY2hhbGt7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjMzLCAxMjcsIDAuMzUpIWltcG9ydGFudH0KLmJnLWxzYWxtb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgODAsIDYwLCAwLjExKSFpbXBvcnRhbnR9Ci5iZy1zYWxtb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgODAsIDYwLCAwLjUpIWltcG9ydGFudH0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9bnVtYmVyXSwgaW5wdXRbdHlwZT1kYXRlXSwgaW5wdXRbdHlwZT10aW1lXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1yYW5nZV0sIHRleHRhcmVhey13ZWJraXQtYXBwZWFyYW5jZTpub25lO3RyYW5zaXRpb246Y29sb3IgMC4ycywgYmFja2dyb3VuZC1jb2xvciAwLjJzLCBib3JkZXItY29sb3IgMC4yc30KaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCBidXR0b257Zm9udDoxMDAlICctYXBwbGUtc3lzdGVtJywgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdTZWdvZSBVSScsIFVidW50dSwgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFRhaG9tYSwgQXJpYWwsIFZlcmRhbmEsIFNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4zZW07Y29sb3I6IzRkNWE2YTtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fQppbnB1dFt0eXBlPXJhZGlvXSwgaW5wdXRbdHlwZT1jaGVja2JveF0ge2FjY2VudC1jb2xvcjojMmQ2NmI4fQppbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXBhc3N3b3JkXSwgaW5wdXRbdHlwZT1udW1iZXJdLCBpbnB1dFt0eXBlPWVtYWlsXSwgaW5wdXRbdHlwZT10ZWxdLCBpbnB1dFt0eXBlPWRhdGVdLCBpbnB1dFt0eXBlPXRpbWVdIHtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9bnVtYmVyXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1kYXRlXSwgaW5wdXRbdHlwZT10aW1lXSB7cGFkZGluZzowLjM1ZW0gMC40ZW0gMC4zNWVtIDAuNGVtO2JvcmRlci1jb2xvcjojZDBkNmRkO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmV9CmlucHV0W3R5cGU9bnVtYmVyXSB7cGFkZGluZzowLjM1ZW0gMC4yZW0gMC4zNWVtIDAuNGVtfQppbnB1dDpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVkLCBvcHRpb246ZGlzYWJsZWQsIHRleHRhcmVhOmRpc2FibGVkLCBidXR0b246ZGlzYWJsZWR7Y29sb3I6Izg4OTI5Zjtib3JkZXItY29sb3I6I2I5YzBjYiFpbXBvcnRhbnQ7b3BhY2l0eTowLjc1fQppbnB1dDpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9YnV0dG9uXSk6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjojOWVjZGY4fQo6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNiOWMwY2J9CjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KOi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KdGV4dGFyZWF7Zm9udDoxMDAlICctYXBwbGUtc3lzdGVtJywgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdTZWdvZSBVSScsIFVidW50dSwgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFRhaG9tYSwgQXJpYWwsIFZlcmRhbmEsIFNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4zZW07Y29sb3I6IzRkNWE2YTtwYWRkaW5nOjAuMzVlbSAwLjRlbSAwLjM1ZW0gMC40ZW07Ym9yZGVyOjFweCBzb2xpZCAjZDBkNmRkO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7bWFyZ2luOjA7d2lkdGg6OTAlO21pbi1oZWlnaHQ6NjBweDtwb3NpdGlvbjpyZWxhdGl2ZX0KdGV4dGFyZWE6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzllY2RmOH0Kc2VsZWN0e21hcmdpbjo0cHggMCA0cHggMH0Kc2VsZWN0IG9wdGlvbntwYWRkaW5nOjJweCAzcHggM3B4IDNweH0Kc2VsZWN0W211bHRpcGxlXSB7cGFkZGluZzowLjM1ZW0gMC40ZW0gMC4zNWVtIDAuNGVtO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO21hcmdpbjo0cHggMCA0cHggMDtwb3NpdGlvbjpyZWxhdGl2ZX0KbGFiZWwsIC5sYWJlbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMWVtO2NvbG9yOiM4ODkyOWY7bWFyZ2luOjNweCAwIDRweCAwfQppbnB1dFt0eXBlPSdjaGVja2JveCddICsgbGFiZWx7ZGlzcGxheTppbmxpbmV9CmlucHV0W3R5cGU9J3JhZGlvJ10gKyBsYWJlbHtkaXNwbGF5OmlubGluZX0KZmllbGRzZXR7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luOjBweCAwIDIwcHggMDtib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzoxMHB4fQpsZWdlbmR7cGFkZGluZzowIDJweCAwIDJweH0KaW5wdXRbdHlwZT1idXR0b25dOmZvY3VzLCBidXR0b246Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH0KaW5wdXRbdHlwZT0nYnV0dG9uJ10sIGJ1dHRvbiwgLmJ1dHRvbntib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0KaW5wdXRbdHlwZT0nYnV0dG9uJ10sIGJ1dHRvbiwgLmJ1dHRvbntsaW5lLWhlaWdodDoxLjNlbTtjb2xvcjojNGQ1YTZhO2JvcmRlci1jb2xvcjojZTNlOGViO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MC4zZW0gMC43ZW0gMC40ZW0gMC43ZW07bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViO3RyYW5zaXRpb246Ym9yZGVyIDAuM3MsIGNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zcywgYmFja2dyb3VuZC1jb2xvciAwLjNzOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JveC1zaGFkb3c6bm9uZTstbW96LWJveC1zaGFkb3c6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6bm9uZX0KaW5wdXRbdHlwZT0nYnV0dG9uJ106aG92ZXIsIC5idXR0b246aG92ZXIsIGJ1dHRvbjpob3Zlcntib3JkZXItY29sb3I6IzZiOWZkYjtjb2xvcjojMmQ2NmI4O2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnQ7b3BhY2l0eToxfQppbnB1dFt0eXBlPSdidXR0b24nXTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0nYnV0dG9uJ106ZGlzYWJsZWQ6aG92ZXIsIGJ1dHRvbjpkaXNhYmxlZCwgYnV0dG9uOmRpc2FibGVkOmhvdmVyLCAuYnV0dG9uLmRpc2FibGVkLCAuYnV0dG9uLmRpc2FibGVkOmhvdmVye2JvcmRlci1jb2xvcjojZTNlOGViIWltcG9ydGFudDtjb2xvcjojODg5MjlmIWltcG9ydGFudDtvcGFjaXR5OjAuNjUhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6I2UzZThlYiFpbXBvcnRhbnQ7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50fQpidXR0b24ubWFya2ZvY3Vze3Bvc2l0aW9uOnJlbGF0aXZlfQpidXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVye2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDozcHg7cmlnaHQ6M3B4O3dpZHRoOjRweDtoZWlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYhaW1wb3J0YW50O3otaW5kZXg6Mn0KaW5wdXRbdHlwZT1idXR0b25dLmJsdWU6aG92ZXIsIC5idXR0b24uYmx1ZTpob3ZlciwgYnV0dG9uLmJsdWU6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM2YjlmZGJ9CmlucHV0W3R5cGU9YnV0dG9uXS5ibHVlLCAuYnV0dG9uLmJsdWUsIGJ1dHRvbi5ibHVle2JvcmRlci1jb2xvcjojY2JlN2ZlO2JhY2tncm91bmQtY29sb3I6I2NiZTdmZTtjb2xvcjojMmQ2NmI4fQppbnB1dFt0eXBlPWJ1dHRvbl0udGVhbDpob3ZlciwgLmJ1dHRvbi50ZWFsOmhvdmVyLCBidXR0b24udGVhbDpob3Zlcntib3JkZXItY29sb3I6IzFiYmJhMH0KaW5wdXRbdHlwZT1idXR0b25dLnRlYWwsIC5idXR0b24udGVhbCwgYnV0dG9uLnRlYWx7Ym9yZGVyLWNvbG9yOiNjZGYyZTY7YmFja2dyb3VuZC1jb2xvcjojY2RmMmU2fQppbnB1dFt0eXBlPWJ1dHRvbl0uZ3JlZW46aG92ZXIsIC5idXR0b24uZ3JlZW46aG92ZXIsIGJ1dHRvbi5ncmVlbjpob3Zlcntib3JkZXItY29sb3I6IzlhYzU1Yztjb2xvcjojNjU5YzEzfQppbnB1dFt0eXBlPWJ1dHRvbl0uZ3JlZW4sIC5idXR0b24uZ3JlZW4sIGJ1dHRvbi5ncmVlbntib3JkZXItY29sb3I6I2UwZjVjNjtiYWNrZ3JvdW5kLWNvbG9yOiNlMGY1YzZ9CmlucHV0W3R5cGU9YnV0dG9uXS5vcmFuZ2U6aG92ZXIsIC5idXR0b24ub3JhbmdlOmhvdmVyLCBidXR0b24ub3JhbmdlOmhvdmVye2JvcmRlci1jb2xvcjojZmVjMjllO2NvbG9yOiNmODc0MjN9CmlucHV0W3R5cGU9YnV0dG9uXS5vcmFuZ2UsIC5idXR0b24ub3JhbmdlLCBidXR0b24ub3Jhbmdle2JvcmRlci1jb2xvcjojZmZkYWFhO2JhY2tncm91bmQtY29sb3I6I2ZmZGFhYTtjb2xvcjojZjg3NDIzfQppbnB1dFt0eXBlPWJ1dHRvbl0ucmVkOmhvdmVyLCAuYnV0dG9uLnJlZDpob3ZlciwgYnV0dG9uLnJlZDpob3Zlcntib3JkZXItY29sb3I6I2ZhYWJiODtjb2xvcjojZDYyYzQ5fQppbnB1dFt0eXBlPWJ1dHRvbl0ucmVkLCAuYnV0dG9uLnJlZCwgYnV0dG9uLnJlZHtib3JkZXItY29sb3I6I2ZlZDNkMztiYWNrZ3JvdW5kLWNvbG9yOiNmZWQzZDM7Y29sb3I6I2Q2MmM0OX0KaW5wdXRbdHlwZT1idXR0b25dLnZpb2xldDpob3ZlciwgLmJ1dHRvbi52aW9sZXQ6aG92ZXIsIGJ1dHRvbi52aW9sZXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNkM2JmZmY7Y29sb3I6IzdhNDFiYX0KaW5wdXRbdHlwZT1idXR0b25dLnZpb2xldCwgLmJ1dHRvbi52aW9sZXQsIGJ1dHRvbi52aW9sZXR7Ym9yZGVyLWNvbG9yOiNlY2UxZmY7YmFja2dyb3VuZC1jb2xvcjojZWNlMWZmO2NvbG9yOiM3YTQxYmF9CmE6YWN0aXZlLCBhOmZvY3Vze291dGxpbmU6bm9uZX0KYSwgLnBzZXVkb2xpbmt7Y29sb3I6IzJkNjZiODtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmNvbG9yIDAuM3M7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1vcGVyYS10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1tcy10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1tb3otdHJhbnNpdGlvbjpjb2xvciAwLjNzLCBib3JkZXIgMC4zc30KLnBzZXVkb2xpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMmQ2NmI4fQphOmhvdmVyLCAucHNldWRvbGluazpob3ZlciwgLnBzZXVkb2J1dHRvbjpob3Zlcntjb2xvcjojMTJhNWRjfQouaG92ZXJsaW5rIC5wc2V1ZG9saW5re3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKX0KLmhvdmVybGluazpob3ZlciAucHNldWRvbGlua3t0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMmQ2NmI4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5ZWNkZjh9Ci5ob3Zlcmxpbms6aG92ZXIgLnBzZXVkb2xpbms6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzlhZTBmMTtjb2xvcjojMTJhNWRjfQphIGltZ3tib3JkZXI6bm9uZSFpbXBvcnRhbnR9Ci53MXt3aWR0aDoxcHghaW1wb3J0YW50fQoudzJ7d2lkdGg6MnB4IWltcG9ydGFudH0KLncze3dpZHRoOjNweCFpbXBvcnRhbnR9Ci53NHt3aWR0aDo0cHghaW1wb3J0YW50fQoudzV7d2lkdGg6NXB4IWltcG9ydGFudH0KLnc2e3dpZHRoOjZweCFpbXBvcnRhbnR9Ci53N3t3aWR0aDo3cHghaW1wb3J0YW50fQoudzh7d2lkdGg6OHB4IWltcG9ydGFudH0KLnc5e3dpZHRoOjlweCFpbXBvcnRhbnR9Ci53MTB7d2lkdGg6MTBweCFpbXBvcnRhbnR9Ci53MTF7d2lkdGg6MTFweCFpbXBvcnRhbnR9Ci53MTJ7d2lkdGg6MTJweCFpbXBvcnRhbnR9Ci53MTN7d2lkdGg6MTNweCFpbXBvcnRhbnR9Ci53MTR7d2lkdGg6MTRweCFpbXBvcnRhbnR9Ci53MTV7d2lkdGg6MTVweCFpbXBvcnRhbnR9Ci53MTZ7d2lkdGg6MTZweCFpbXBvcnRhbnR9Ci53MTd7d2lkdGg6MTdweCFpbXBvcnRhbnR9Ci53MTh7d2lkdGg6MThweCFpbXBvcnRhbnR9Ci53MTl7d2lkdGg6MTlweCFpbXBvcnRhbnR9Ci53MjB7d2lkdGg6MjBweCFpbXBvcnRhbnR9Ci53MjF7d2lkdGg6MjFweCFpbXBvcnRhbnR9Ci53MjJ7d2lkdGg6MjJweCFpbXBvcnRhbnR9Ci53MjN7d2lkdGg6MjNweCFpbXBvcnRhbnR9Ci53MjR7d2lkdGg6MjRweCFpbXBvcnRhbnR9Ci53MjV7d2lkdGg6MjVweCFpbXBvcnRhbnR9Ci53MzB7d2lkdGg6MzBweCFpbXBvcnRhbnR9Ci53MzJ7d2lkdGg6MzJweCFpbXBvcnRhbnR9Ci53MzV7d2lkdGg6MzVweCFpbXBvcnRhbnR9Ci53NDB7d2lkdGg6NDBweCFpbXBvcnRhbnR9Ci53NDV7d2lkdGg6NDVweCFpbXBvcnRhbnR9Ci53NDh7d2lkdGg6NDhweCFpbXBvcnRhbnR9Ci53NTB7d2lkdGg6NTBweCFpbXBvcnRhbnR9Ci53NTV7d2lkdGg6NTVweCFpbXBvcnRhbnR9Ci53NjB7d2lkdGg6NjBweCFpbXBvcnRhbnR9Ci53NjR7d2lkdGg6NjRweCFpbXBvcnRhbnR9Ci53NjV7d2lkdGg6NjVweCFpbXBvcnRhbnR9Ci53NzB7d2lkdGg6NzBweCFpbXBvcnRhbnR9Ci53NzV7d2lkdGg6NzVweCFpbXBvcnRhbnR9Ci53ODB7d2lkdGg6ODBweCFpbXBvcnRhbnR9Ci53ODV7d2lkdGg6ODVweCFpbXBvcnRhbnR9Ci53OTB7d2lkdGg6OTBweCFpbXBvcnRhbnR9Ci53OTV7d2lkdGg6OTVweCFpbXBvcnRhbnR9Ci53OTZ7d2lkdGg6OTZweCFpbXBvcnRhbnR9Ci53MTAwe3dpZHRoOjEwMHB4IWltcG9ydGFudH0KLncxMDV7d2lkdGg6MTA1cHghaW1wb3J0YW50fQoudzExMHt3aWR0aDoxMTBweCFpbXBvcnRhbnR9Ci53MTE1e3dpZHRoOjExNXB4IWltcG9ydGFudH0KLncxMjB7d2lkdGg6MTIwcHghaW1wb3J0YW50fQoudzEyNXt3aWR0aDoxMjVweCFpbXBvcnRhbnR9Ci53MTMwe3dpZHRoOjEzMHB4IWltcG9ydGFudH0KLncxMzV7d2lkdGg6MTM1cHghaW1wb3J0YW50fQoudzE0MHt3aWR0aDoxNDBweCFpbXBvcnRhbnR9Ci53MTQ1e3dpZHRoOjE0NXB4IWltcG9ydGFudH0KLncxNTB7d2lkdGg6MTUwcHghaW1wb3J0YW50fQoudzE1NXt3aWR0aDoxNTVweCFpbXBvcnRhbnR9Ci53MTYwe3dpZHRoOjE2MHB4IWltcG9ydGFudH0KLncxNjV7d2lkdGg6MTY1cHghaW1wb3J0YW50fQoudzE3MHt3aWR0aDoxNzBweCFpbXBvcnRhbnR9Ci53MTc1e3dpZHRoOjE3NXB4IWltcG9ydGFudH0KLncxODB7d2lkdGg6MTgwcHghaW1wb3J0YW50fQoudzE4NXt3aWR0aDoxODVweCFpbXBvcnRhbnR9Ci53MTkwe3dpZHRoOjE5MHB4IWltcG9ydGFudH0KLncxOTV7d2lkdGg6MTk1cHghaW1wb3J0YW50fQoudzIwMHt3aWR0aDoyMDBweCFpbXBvcnRhbnR9Ci53MjEwe3dpZHRoOjIxMHB4IWltcG9ydGFudH0KLncyMjB7d2lkdGg6MjIwcHghaW1wb3J0YW50fQoudzIzMHt3aWR0aDoyMzBweCFpbXBvcnRhbnR9Ci53MjQwe3dpZHRoOjI0MHB4IWltcG9ydGFudH0KLncyNTB7d2lkdGg6MjUwcHghaW1wb3J0YW50fQoudzI2MHt3aWR0aDoyNjBweCFpbXBvcnRhbnR9Ci53Mjcwe3dpZHRoOjI3MHB4IWltcG9ydGFudH0KLncyODB7d2lkdGg6MjgwcHghaW1wb3J0YW50fQoudzI5MHt3aWR0aDoyOTBweCFpbXBvcnRhbnR9Ci53MzAwe3dpZHRoOjMwMHB4IWltcG9ydGFudH0KLnczMTB7d2lkdGg6MzEwcHghaW1wb3J0YW50fQoudzMyMHt3aWR0aDozMjBweCFpbXBvcnRhbnR9Ci53MzMwe3dpZHRoOjMzMHB4IWltcG9ydGFudH0KLnczNDB7d2lkdGg6MzQwcHghaW1wb3J0YW50fQoudzM1MHt3aWR0aDozNTBweCFpbXBvcnRhbnR9Ci53MzYwe3dpZHRoOjM2MHB4IWltcG9ydGFudH0KLnczNzB7d2lkdGg6MzcwcHghaW1wb3J0YW50fQoudzM4MHt3aWR0aDozODBweCFpbXBvcnRhbnR9Ci53Mzkwe3dpZHRoOjM5MHB4IWltcG9ydGFudH0KLnc0MDB7d2lkdGg6NDAwcHghaW1wb3J0YW50fQoudzQyMHt3aWR0aDo0MjBweCFpbXBvcnRhbnR9Ci53NDUwe3dpZHRoOjQ1MHB4IWltcG9ydGFudH0KLnc1MDB7d2lkdGg6NTAwcHghaW1wb3J0YW50fQoudzUyMHt3aWR0aDo1MjBweCFpbXBvcnRhbnR9Ci53NTUwe3dpZHRoOjU1MHB4IWltcG9ydGFudH0KLnc2MDB7d2lkdGg6NjAwcHghaW1wb3J0YW50fQoudzYyMHt3aWR0aDo2MjBweCFpbXBvcnRhbnR9Ci53NjUwe3dpZHRoOjY1MHB4IWltcG9ydGFudH0KLnc3MDB7d2lkdGg6NzAwcHghaW1wb3J0YW50fQoudzcyMHt3aWR0aDo3MjBweCFpbXBvcnRhbnR9Ci53NzUwe3dpZHRoOjc1MHB4IWltcG9ydGFudH0KLnc4MDB7d2lkdGg6ODAwcHghaW1wb3J0YW50fQoudzgyMHt3aWR0aDo4MjBweCFpbXBvcnRhbnR9Ci53ODUwe3dpZHRoOjg1MHB4IWltcG9ydGFudH0KLnc5MDB7d2lkdGg6OTAwcHghaW1wb3J0YW50fQoudzkyMHt3aWR0aDo5MjBweCFpbXBvcnRhbnR9Ci53OTUwe3dpZHRoOjk1MHB4IWltcG9ydGFudH0KLncxMDAwe3dpZHRoOjEwMDBweCFpbXBvcnRhbnR9Ci53MTA1MHt3aWR0aDoxMDUwcHghaW1wb3J0YW50fQoudzExMDB7d2lkdGg6MTEwMHB4IWltcG9ydGFudH0KLncxMTUwe3dpZHRoOjExNTBweCFpbXBvcnRhbnR9Ci53MTE2MHt3aWR0aDoxMTYwcHghaW1wb3J0YW50fQoudzEyMDB7d2lkdGg6MTIwMHB4IWltcG9ydGFudH0KLncxMjUwe3dpZHRoOjEyNTBweCFpbXBvcnRhbnR9Ci53MTMwMHt3aWR0aDoxMzAwcHghaW1wb3J0YW50fQoudzEzNTB7d2lkdGg6MTM1MHB4IWltcG9ydGFudH0KLncxNDAwe3dpZHRoOjE0MDBweCFpbXBvcnRhbnR9Ci53MTQ1MHt3aWR0aDoxNDUwcHghaW1wb3J0YW50fQoudzE1MDB7d2lkdGg6MTUwMHB4IWltcG9ydGFudH0KLnc1cHt3aWR0aDo1JSFpbXBvcnRhbnR9Ci53MTBwe3dpZHRoOjEwJSFpbXBvcnRhbnR9Ci53MTVwe3dpZHRoOjE1JSFpbXBvcnRhbnR9Ci53MjBwe3dpZHRoOjIwJSFpbXBvcnRhbnR9Ci53MjVwe3dpZHRoOjI1JSFpbXBvcnRhbnR9Ci53MzBwe3dpZHRoOjMwJSFpbXBvcnRhbnR9Ci53MzVwe3dpZHRoOjM1JSFpbXBvcnRhbnR9Ci53NDBwe3dpZHRoOjQwJSFpbXBvcnRhbnR9Ci53NDVwe3dpZHRoOjQ1JSFpbXBvcnRhbnR9Ci53NTBwe3dpZHRoOjUwJSFpbXBvcnRhbnR9Ci53NTVwe3dpZHRoOjU1JSFpbXBvcnRhbnR9Ci53NjBwe3dpZHRoOjYwJSFpbXBvcnRhbnR9Ci53NjVwe3dpZHRoOjY1JSFpbXBvcnRhbnR9Ci53NzBwe3dpZHRoOjcwJSFpbXBvcnRhbnR9Ci53NzVwe3dpZHRoOjc1JSFpbXBvcnRhbnR9Ci53ODBwe3dpZHRoOjgwJSFpbXBvcnRhbnR9Ci53ODVwe3dpZHRoOjg1JSFpbXBvcnRhbnR9Ci53OTBwe3dpZHRoOjkwJSFpbXBvcnRhbnR9Ci53OTVwe3dpZHRoOjk1JSFpbXBvcnRhbnR9Ci53MTAwcHt3aWR0aDoxMDAlIWltcG9ydGFudH0KLmgwe2hlaWdodDowcHghaW1wb3J0YW50fQouaDF7aGVpZ2h0OjFweCFpbXBvcnRhbnR9Ci5oMntoZWlnaHQ6MnB4IWltcG9ydGFudH0KLmgze2hlaWdodDozcHghaW1wb3J0YW50fQouaDR7aGVpZ2h0OjRweCFpbXBvcnRhbnR9Ci5oNXtoZWlnaHQ6NXB4IWltcG9ydGFudH0KLmgxMHtoZWlnaHQ6MTBweCFpbXBvcnRhbnR9Ci5oMTV7aGVpZ2h0OjE1cHghaW1wb3J0YW50fQouaDE2e2hlaWdodDoxNnB4IWltcG9ydGFudH0KLmgyMHtoZWlnaHQ6MjBweCFpbXBvcnRhbnR9Ci5oMjR7aGVpZ2h0OjI0cHghaW1wb3J0YW50fQouaDI1e2hlaWdodDoyNXB4IWltcG9ydGFudH0KLmgzMHtoZWlnaHQ6MzBweCFpbXBvcnRhbnR9Ci5oMzJ7aGVpZ2h0OjMycHghaW1wb3J0YW50fQouaDM1e2hlaWdodDozNXB4IWltcG9ydGFudH0KLmg0MHtoZWlnaHQ6NDBweCFpbXBvcnRhbnR9Ci5oNDV7aGVpZ2h0OjQ1cHghaW1wb3J0YW50fQouaDQ4e2hlaWdodDo0OHB4IWltcG9ydGFudH0KLmg1MHtoZWlnaHQ6NTBweCFpbXBvcnRhbnR9Ci5oNTV7aGVpZ2h0OjU1cHghaW1wb3J0YW50fQouaDYwe2hlaWdodDo2MHB4IWltcG9ydGFudH0KLmg2NHtoZWlnaHQ6NjRweCFpbXBvcnRhbnR9Ci5oNjV7aGVpZ2h0OjY1cHghaW1wb3J0YW50fQouaDcwe2hlaWdodDo3MHB4IWltcG9ydGFudH0KLmg3NXtoZWlnaHQ6NzVweCFpbXBvcnRhbnR9Ci5oODB7aGVpZ2h0OjgwcHghaW1wb3J0YW50fQouaDg1e2hlaWdodDo4NXB4IWltcG9ydGFudH0KLmg5MHtoZWlnaHQ6OTBweCFpbXBvcnRhbnR9Ci5oOTV7aGVpZ2h0Ojk1cHghaW1wb3J0YW50fQouaDk2e2hlaWdodDo5NnB4IWltcG9ydGFudH0KLmgxMDB7aGVpZ2h0OjEwMHB4IWltcG9ydGFudH0KLmgxMTB7aGVpZ2h0OjExMHB4IWltcG9ydGFudH0KLmgxMjB7aGVpZ2h0OjEyMHB4IWltcG9ydGFudH0KLmgxMzB7aGVpZ2h0OjEzMHB4IWltcG9ydGFudH0KLmgxNDB7aGVpZ2h0OjE0MHB4IWltcG9ydGFudH0KLmgxNTB7aGVpZ2h0OjE1MHB4IWltcG9ydGFudH0KLmgxNjB7aGVpZ2h0OjE2MHB4IWltcG9ydGFudH0KLmgxNzB7aGVpZ2h0OjE3MHB4IWltcG9ydGFudH0KLmgxODB7aGVpZ2h0OjE4MHB4IWltcG9ydGFudH0KLmgxOTB7aGVpZ2h0OjE5MHB4IWltcG9ydGFudH0KLmgyMDB7aGVpZ2h0OjIwMHB4IWltcG9ydGFudH0KLmgyNTB7aGVpZ2h0OjI1MHB4IWltcG9ydGFudH0KLmgzMDB7aGVpZ2h0OjMwMHB4IWltcG9ydGFudH0KLmgzNTB7aGVpZ2h0OjM1MHB4IWltcG9ydGFudH0KLmg0MDB7aGVpZ2h0OjQwMHB4IWltcG9ydGFudH0KLmg0NTB7aGVpZ2h0OjQ1MHB4IWltcG9ydGFudH0KLmg1MDB7aGVpZ2h0OjUwMHB4IWltcG9ydGFudH0KLmg1NTB7aGVpZ2h0OjU1MHB4IWltcG9ydGFudH0KLmg2MDB7aGVpZ2h0OjYwMHB4IWltcG9ydGFudH0KLmg2NTB7aGVpZ2h0OjY1MHB4IWltcG9ydGFudH0KLmg3MDB7aGVpZ2h0OjcwMHB4IWltcG9ydGFudH0KLmg3NTB7aGVpZ2h0Ojc1MHB4IWltcG9ydGFudH0KLmg4MDB7aGVpZ2h0OjgwMHB4IWltcG9ydGFudH0KLmg4NTB7aGVpZ2h0Ojg1MHB4IWltcG9ydGFudH0KLmg5MDB7aGVpZ2h0OjkwMHB4IWltcG9ydGFudH0KLmg5NTB7aGVpZ2h0Ojk1MHB4IWltcG9ydGFudH0KLmgxMDAwe2hlaWdodDoxMDAwcHghaW1wb3J0YW50fQouaGF7aGVpZ2h0OmF1dG8haW1wb3J0YW50fQouZGl7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fQouZGlie2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0KLmRie2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fQouZGkuaGlkZSwgLmRiLmhpZGUsIC5kaWIuaGlkZSwgLmRpLmZpbHRlci1ub21hdGNoLCAuZGIuZmlsdGVyLW5vbWF0Y2gsIC5kaWIuZmlsdGVyLW5vbWF0Y2h7ZGlzcGxheTpub25lIWltcG9ydGFudH0KLm9oe292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9Ci5vdntvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0KLmZse2Zsb2F0OmxlZnR9Ci5mcntmbG9hdDpyaWdodH0KLmNie2NsZWFyOmJvdGh9Ci5jcntjbGVhcjpyaWdodH0KLmNse2NsZWFyOmxlZnR9Ci5wMHtwYWRkaW5nOjBweCFpbXBvcnRhbnR9Ci5wMXtwYWRkaW5nOjFweCFpbXBvcnRhbnR9Ci5wMntwYWRkaW5nOjJweCFpbXBvcnRhbnR9Ci5wM3twYWRkaW5nOjNweCFpbXBvcnRhbnR9Ci5wNHtwYWRkaW5nOjRweCFpbXBvcnRhbnR9Ci5wNXtwYWRkaW5nOjVweCFpbXBvcnRhbnR9Ci5wNntwYWRkaW5nOjZweCFpbXBvcnRhbnR9Ci5wN3twYWRkaW5nOjdweCFpbXBvcnRhbnR9Ci5wOHtwYWRkaW5nOjhweCFpbXBvcnRhbnR9Ci5wOXtwYWRkaW5nOjlweCFpbXBvcnRhbnR9Ci5wMTB7cGFkZGluZzoxMHB4IWltcG9ydGFudH0KLnAxNXtwYWRkaW5nOjE1cHghaW1wb3J0YW50fQoucDIwe3BhZGRpbmc6MjBweCFpbXBvcnRhbnR9Ci5wMjV7cGFkZGluZzoyNXB4IWltcG9ydGFudH0KLnAzMHtwYWRkaW5nOjMwcHghaW1wb3J0YW50fQoucDM1e3BhZGRpbmc6MzVweCFpbXBvcnRhbnR9Ci5wNDB7cGFkZGluZzo0MHB4IWltcG9ydGFudH0KLnA0NXtwYWRkaW5nOjQ1cHghaW1wb3J0YW50fQoucDUwe3BhZGRpbmc6NTBweCFpbXBvcnRhbnR9Ci5wNTV7cGFkZGluZzo1NXB4IWltcG9ydGFudH0KLnA2MHtwYWRkaW5nOjYwcHghaW1wb3J0YW50fQoucDY1e3BhZGRpbmc6NjVweCFpbXBvcnRhbnR9Ci5wNzB7cGFkZGluZzo3MHB4IWltcG9ydGFudH0KLnA3NXtwYWRkaW5nOjc1cHghaW1wb3J0YW50fQoucDgwe3BhZGRpbmc6ODBweCFpbXBvcnRhbnR9Ci5wODV7cGFkZGluZzo4NXB4IWltcG9ydGFudH0KLnA5MHtwYWRkaW5nOjkwcHghaW1wb3J0YW50fQoucDk1e3BhZGRpbmc6OTVweCFpbXBvcnRhbnR9Ci5wMTAwe3BhZGRpbmc6MTAwcHghaW1wb3J0YW50fQoucDExMHtwYWRkaW5nOjExMHB4IWltcG9ydGFudH0KLnAxMjB7cGFkZGluZzoxMjBweCFpbXBvcnRhbnR9Ci5wMTMwe3BhZGRpbmc6MTMwcHghaW1wb3J0YW50fQoucDE0MHtwYWRkaW5nOjE0MHB4IWltcG9ydGFudH0KLnAxNTB7cGFkZGluZzoxNTBweCFpbXBvcnRhbnR9Ci5wMTYwe3BhZGRpbmc6MTYwcHghaW1wb3J0YW50fQoucDE3MHtwYWRkaW5nOjE3MHB4IWltcG9ydGFudH0KLnAxODB7cGFkZGluZzoxODBweCFpbXBvcnRhbnR9Ci5wMTkwe3BhZGRpbmc6MTkwcHghaW1wb3J0YW50fQoucDIwMHtwYWRkaW5nOjIwMHB4IWltcG9ydGFudH0KLnAyNTB7cGFkZGluZzoyNTBweCFpbXBvcnRhbnR9Ci5wMzAwe3BhZGRpbmc6MzAwcHghaW1wb3J0YW50fQoucDM1MHtwYWRkaW5nOjM1MHB4IWltcG9ydGFudH0KLnA0MDB7cGFkZGluZzo0MDBweCFpbXBvcnRhbnR9Ci5wNDUwe3BhZGRpbmc6NDUwcHghaW1wb3J0YW50fQoucDUwMHtwYWRkaW5nOjUwMHB4IWltcG9ydGFudH0KLnBsMHtwYWRkaW5nLWxlZnQ6MHB4IWltcG9ydGFudH0KLnBsMXtwYWRkaW5nLWxlZnQ6MXB4IWltcG9ydGFudH0KLnBsMntwYWRkaW5nLWxlZnQ6MnB4IWltcG9ydGFudH0KLnBsM3twYWRkaW5nLWxlZnQ6M3B4IWltcG9ydGFudH0KLnBsNHtwYWRkaW5nLWxlZnQ6NHB4IWltcG9ydGFudH0KLnBsNXtwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudH0KLnBsNntwYWRkaW5nLWxlZnQ6NnB4IWltcG9ydGFudH0KLnBsN3twYWRkaW5nLWxlZnQ6N3B4IWltcG9ydGFudH0KLnBsOHtwYWRkaW5nLWxlZnQ6OHB4IWltcG9ydGFudH0KLnBsOXtwYWRkaW5nLWxlZnQ6OXB4IWltcG9ydGFudH0KLnBsMTB7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fQoucGwxMXtwYWRkaW5nLWxlZnQ6MTFweCFpbXBvcnRhbnR9Ci5wbDEye3BhZGRpbmctbGVmdDoxMnB4IWltcG9ydGFudH0KLnBsMTN7cGFkZGluZy1sZWZ0OjEzcHghaW1wb3J0YW50fQoucGwxNHtwYWRkaW5nLWxlZnQ6MTRweCFpbXBvcnRhbnR9Ci5wbDE1e3BhZGRpbmctbGVmdDoxNXB4IWltcG9ydGFudH0KLnBsMTZ7cGFkZGluZy1sZWZ0OjE2cHghaW1wb3J0YW50fQoucGwxN3twYWRkaW5nLWxlZnQ6MTdweCFpbXBvcnRhbnR9Ci5wbDE4e3BhZGRpbmctbGVmdDoxOHB4IWltcG9ydGFudH0KLnBsMTl7cGFkZGluZy1sZWZ0OjE5cHghaW1wb3J0YW50fQoucGwyMHtwYWRkaW5nLWxlZnQ6MjBweCFpbXBvcnRhbnR9Ci5wbDIxe3BhZGRpbmctbGVmdDoyMXB4IWltcG9ydGFudH0KLnBsMjJ7cGFkZGluZy1sZWZ0OjIycHghaW1wb3J0YW50fQoucGwyM3twYWRkaW5nLWxlZnQ6MjNweCFpbXBvcnRhbnR9Ci5wbDI0e3BhZGRpbmctbGVmdDoyNHB4IWltcG9ydGFudH0KLnBsMjV7cGFkZGluZy1sZWZ0OjI1cHghaW1wb3J0YW50fQoucGwyNntwYWRkaW5nLWxlZnQ6MjZweCFpbXBvcnRhbnR9Ci5wbDI3e3BhZGRpbmctbGVmdDoyN3B4IWltcG9ydGFudH0KLnBsMjh7cGFkZGluZy1sZWZ0OjI4cHghaW1wb3J0YW50fQoucGwyOXtwYWRkaW5nLWxlZnQ6MjlweCFpbXBvcnRhbnR9Ci5wbDMwe3BhZGRpbmctbGVmdDozMHB4IWltcG9ydGFudH0KLnBsMzV7cGFkZGluZy1sZWZ0OjM1cHghaW1wb3J0YW50fQoucGw0MHtwYWRkaW5nLWxlZnQ6NDBweCFpbXBvcnRhbnR9Ci5wbDQ1e3BhZGRpbmctbGVmdDo0NXB4IWltcG9ydGFudH0KLnBsNTB7cGFkZGluZy1sZWZ0OjUwcHghaW1wb3J0YW50fQoucGw1NXtwYWRkaW5nLWxlZnQ6NTVweCFpbXBvcnRhbnR9Ci5wbDYwe3BhZGRpbmctbGVmdDo2MHB4IWltcG9ydGFudH0KLnBsNjV7cGFkZGluZy1sZWZ0OjY1cHghaW1wb3J0YW50fQoucGw3MHtwYWRkaW5nLWxlZnQ6NzBweCFpbXBvcnRhbnR9Ci5wbDc1e3BhZGRpbmctbGVmdDo3NXB4IWltcG9ydGFudH0KLnBsODB7cGFkZGluZy1sZWZ0OjgwcHghaW1wb3J0YW50fQoucGw4NXtwYWRkaW5nLWxlZnQ6ODVweCFpbXBvcnRhbnR9Ci5wbDkwe3BhZGRpbmctbGVmdDo5MHB4IWltcG9ydGFudH0KLnBsOTV7cGFkZGluZy1sZWZ0Ojk1cHghaW1wb3J0YW50fQoucGwxMDB7cGFkZGluZy1sZWZ0OjEwMHB4IWltcG9ydGFudH0KLnBsMTEwe3BhZGRpbmctbGVmdDoxMTBweCFpbXBvcnRhbnR9Ci5wbDEyMHtwYWRkaW5nLWxlZnQ6MTIwcHghaW1wb3J0YW50fQoucGwxMzB7cGFkZGluZy1sZWZ0OjEzMHB4IWltcG9ydGFudH0KLnBsMTQwe3BhZGRpbmctbGVmdDoxNDBweCFpbXBvcnRhbnR9Ci5wbDE1MHtwYWRkaW5nLWxlZnQ6MTUwcHghaW1wb3J0YW50fQoucGwxNjB7cGFkZGluZy1sZWZ0OjE2MHB4IWltcG9ydGFudH0KLnBsMTcwe3BhZGRpbmctbGVmdDoxNzBweCFpbXBvcnRhbnR9Ci5wbDE4MHtwYWRkaW5nLWxlZnQ6MTgwcHghaW1wb3J0YW50fQoucGwxOTB7cGFkZGluZy1sZWZ0OjE5MHB4IWltcG9ydGFudH0KLnBsMjAwe3BhZGRpbmctbGVmdDoyMDBweCFpbXBvcnRhbnR9Ci5wcjB7cGFkZGluZy1yaWdodDowcHghaW1wb3J0YW50fQoucHIxe3BhZGRpbmctcmlnaHQ6MXB4IWltcG9ydGFudH0KLnByMntwYWRkaW5nLXJpZ2h0OjJweCFpbXBvcnRhbnR9Ci5wcjN7cGFkZGluZy1yaWdodDozcHghaW1wb3J0YW50fQoucHI0e3BhZGRpbmctcmlnaHQ6NHB4IWltcG9ydGFudH0KLnByNXtwYWRkaW5nLXJpZ2h0OjVweCFpbXBvcnRhbnR9Ci5wcjZ7cGFkZGluZy1yaWdodDo2cHghaW1wb3J0YW50fQoucHI3e3BhZGRpbmctcmlnaHQ6N3B4IWltcG9ydGFudH0KLnByOHtwYWRkaW5nLXJpZ2h0OjhweCFpbXBvcnRhbnR9Ci5wcjl7cGFkZGluZy1yaWdodDo5cHghaW1wb3J0YW50fQoucHIxMHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50fQoucHIxMXtwYWRkaW5nLXJpZ2h0OjExcHghaW1wb3J0YW50fQoucHIxMntwYWRkaW5nLXJpZ2h0OjEycHghaW1wb3J0YW50fQoucHIxM3twYWRkaW5nLXJpZ2h0OjEzcHghaW1wb3J0YW50fQoucHIxNHtwYWRkaW5nLXJpZ2h0OjE0cHghaW1wb3J0YW50fQoucHIxNXtwYWRkaW5nLXJpZ2h0OjE1cHghaW1wb3J0YW50fQoucHIxNntwYWRkaW5nLXJpZ2h0OjE2cHghaW1wb3J0YW50fQoucHIxN3twYWRkaW5nLXJpZ2h0OjE3cHghaW1wb3J0YW50fQoucHIxOHtwYWRkaW5nLXJpZ2h0OjE4cHghaW1wb3J0YW50fQoucHIxOXtwYWRkaW5nLXJpZ2h0OjE5cHghaW1wb3J0YW50fQoucHIyMHtwYWRkaW5nLXJpZ2h0OjIwcHghaW1wb3J0YW50fQoucHIyMXtwYWRkaW5nLXJpZ2h0OjIxcHghaW1wb3J0YW50fQoucHIyMntwYWRkaW5nLXJpZ2h0OjIycHghaW1wb3J0YW50fQoucHIyM3twYWRkaW5nLXJpZ2h0OjIzcHghaW1wb3J0YW50fQoucHIyNHtwYWRkaW5nLXJpZ2h0OjI0cHghaW1wb3J0YW50fQoucHIyNXtwYWRkaW5nLXJpZ2h0OjI1cHghaW1wb3J0YW50fQoucHIyNntwYWRkaW5nLXJpZ2h0OjI2cHghaW1wb3J0YW50fQoucHIyN3twYWRkaW5nLXJpZ2h0OjI3cHghaW1wb3J0YW50fQoucHIyOHtwYWRkaW5nLXJpZ2h0OjI4cHghaW1wb3J0YW50fQoucHIyOXtwYWRkaW5nLXJpZ2h0OjI5cHghaW1wb3J0YW50fQoucHIzMHtwYWRkaW5nLXJpZ2h0OjMwcHghaW1wb3J0YW50fQoucHIzNXtwYWRkaW5nLXJpZ2h0OjM1cHghaW1wb3J0YW50fQoucHI0MHtwYWRkaW5nLXJpZ2h0OjQwcHghaW1wb3J0YW50fQoucHI0NXtwYWRkaW5nLXJpZ2h0OjQ1cHghaW1wb3J0YW50fQoucHI1MHtwYWRkaW5nLXJpZ2h0OjUwcHghaW1wb3J0YW50fQoucHI1NXtwYWRkaW5nLXJpZ2h0OjU1cHghaW1wb3J0YW50fQoucHI2MHtwYWRkaW5nLXJpZ2h0OjYwcHghaW1wb3J0YW50fQoucHI2NXtwYWRkaW5nLXJpZ2h0OjY1cHghaW1wb3J0YW50fQoucHI3MHtwYWRkaW5nLXJpZ2h0OjcwcHghaW1wb3J0YW50fQoucHI3NXtwYWRkaW5nLXJpZ2h0Ojc1cHghaW1wb3J0YW50fQoucHI4MHtwYWRkaW5nLXJpZ2h0OjgwcHghaW1wb3J0YW50fQoucHI4NXtwYWRkaW5nLXJpZ2h0Ojg1cHghaW1wb3J0YW50fQoucHI5MHtwYWRkaW5nLXJpZ2h0OjkwcHghaW1wb3J0YW50fQoucHI5NXtwYWRkaW5nLXJpZ2h0Ojk1cHghaW1wb3J0YW50fQoucHIxMDB7cGFkZGluZy1yaWdodDoxMDBweCFpbXBvcnRhbnR9Ci5wcjExMHtwYWRkaW5nLXJpZ2h0OjExMHB4IWltcG9ydGFudH0KLnByMTIwe3BhZGRpbmctcmlnaHQ6MTIwcHghaW1wb3J0YW50fQoucHIxMzB7cGFkZGluZy1yaWdodDoxMzBweCFpbXBvcnRhbnR9Ci5wcjE0MHtwYWRkaW5nLXJpZ2h0OjE0MHB4IWltcG9ydGFudH0KLnByMTUwe3BhZGRpbmctcmlnaHQ6MTUwcHghaW1wb3J0YW50fQoucHIxNjB7cGFkZGluZy1yaWdodDoxNjBweCFpbXBvcnRhbnR9Ci5wcjE3MHtwYWRkaW5nLXJpZ2h0OjE3MHB4IWltcG9ydGFudH0KLnByMTgwe3BhZGRpbmctcmlnaHQ6MTgwcHghaW1wb3J0YW50fQoucHIxOTB7cGFkZGluZy1yaWdodDoxOTBweCFpbXBvcnRhbnR9Ci5wcjIwMHtwYWRkaW5nLXJpZ2h0OjIwMHB4IWltcG9ydGFudH0KLnB0MHtwYWRkaW5nLXRvcDowcHghaW1wb3J0YW50fQoucHQxe3BhZGRpbmctdG9wOjFweCFpbXBvcnRhbnR9Ci5wdDJ7cGFkZGluZy10b3A6MnB4IWltcG9ydGFudH0KLnB0M3twYWRkaW5nLXRvcDozcHghaW1wb3J0YW50fQoucHQ0e3BhZGRpbmctdG9wOjRweCFpbXBvcnRhbnR9Ci5wdDV7cGFkZGluZy10b3A6NXB4IWltcG9ydGFudH0KLnB0NntwYWRkaW5nLXRvcDo2cHghaW1wb3J0YW50fQoucHQ3e3BhZGRpbmctdG9wOjdweCFpbXBvcnRhbnR9Ci5wdDh7cGFkZGluZy10b3A6OHB4IWltcG9ydGFudH0KLnB0OXtwYWRkaW5nLXRvcDo5cHghaW1wb3J0YW50fQoucHQxMHtwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudH0KLnB0MTF7cGFkZGluZy10b3A6MTFweCFpbXBvcnRhbnR9Ci5wdDEye3BhZGRpbmctdG9wOjEycHghaW1wb3J0YW50fQoucHQxM3twYWRkaW5nLXRvcDoxM3B4IWltcG9ydGFudH0KLnB0MTR7cGFkZGluZy10b3A6MTRweCFpbXBvcnRhbnR9Ci5wdDE1e3BhZGRpbmctdG9wOjE1cHghaW1wb3J0YW50fQoucHQxNntwYWRkaW5nLXRvcDoxNnB4IWltcG9ydGFudH0KLnB0MTd7cGFkZGluZy10b3A6MTdweCFpbXBvcnRhbnR9Ci5wdDE4e3BhZGRpbmctdG9wOjE4cHghaW1wb3J0YW50fQoucHQxOXtwYWRkaW5nLXRvcDoxOXB4IWltcG9ydGFudH0KLnB0MjB7cGFkZGluZy10b3A6MjBweCFpbXBvcnRhbnR9Ci5wdDIxe3BhZGRpbmctdG9wOjIxcHghaW1wb3J0YW50fQoucHQyMntwYWRkaW5nLXRvcDoyMnB4IWltcG9ydGFudH0KLnB0MjN7cGFkZGluZy10b3A6MjNweCFpbXBvcnRhbnR9Ci5wdDI0e3BhZGRpbmctdG9wOjI0cHghaW1wb3J0YW50fQoucHQyNXtwYWRkaW5nLXRvcDoyNXB4IWltcG9ydGFudH0KLnB0MjZ7cGFkZGluZy10b3A6MjZweCFpbXBvcnRhbnR9Ci5wdDI3e3BhZGRpbmctdG9wOjI3cHghaW1wb3J0YW50fQoucHQyOHtwYWRkaW5nLXRvcDoyOHB4IWltcG9ydGFudH0KLnB0Mjl7cGFkZGluZy10b3A6MjlweCFpbXBvcnRhbnR9Ci5wdDMwe3BhZGRpbmctdG9wOjMwcHghaW1wb3J0YW50fQoucHQzNXtwYWRkaW5nLXRvcDozNXB4IWltcG9ydGFudH0KLnB0NDB7cGFkZGluZy10b3A6NDBweCFpbXBvcnRhbnR9Ci5wdDQ1e3BhZGRpbmctdG9wOjQ1cHghaW1wb3J0YW50fQoucHQ1MHtwYWRkaW5nLXRvcDo1MHB4IWltcG9ydGFudH0KLnB0NTV7cGFkZGluZy10b3A6NTVweCFpbXBvcnRhbnR9Ci5wdDYwe3BhZGRpbmctdG9wOjYwcHghaW1wb3J0YW50fQoucHQ2NXtwYWRkaW5nLXRvcDo2NXB4IWltcG9ydGFudH0KLnB0NzB7cGFkZGluZy10b3A6NzBweCFpbXBvcnRhbnR9Ci5wdDc1e3BhZGRpbmctdG9wOjc1cHghaW1wb3J0YW50fQoucHQ4MHtwYWRkaW5nLXRvcDo4MHB4IWltcG9ydGFudH0KLnB0ODV7cGFkZGluZy10b3A6ODVweCFpbXBvcnRhbnR9Ci5wdDkwe3BhZGRpbmctdG9wOjkwcHghaW1wb3J0YW50fQoucHQ5NXtwYWRkaW5nLXRvcDo5NXB4IWltcG9ydGFudH0KLnB0MTAwe3BhZGRpbmctdG9wOjEwMHB4IWltcG9ydGFudH0KLnB0MTEwe3BhZGRpbmctdG9wOjExMHB4IWltcG9ydGFudH0KLnB0MTIwe3BhZGRpbmctdG9wOjEyMHB4IWltcG9ydGFudH0KLnB0MTMwe3BhZGRpbmctdG9wOjEzMHB4IWltcG9ydGFudH0KLnB0MTQwe3BhZGRpbmctdG9wOjE0MHB4IWltcG9ydGFudH0KLnB0MTUwe3BhZGRpbmctdG9wOjE1MHB4IWltcG9ydGFudH0KLnB0MTYwe3BhZGRpbmctdG9wOjE2MHB4IWltcG9ydGFudH0KLnB0MTcwe3BhZGRpbmctdG9wOjE3MHB4IWltcG9ydGFudH0KLnB0MTgwe3BhZGRpbmctdG9wOjE4MHB4IWltcG9ydGFudH0KLnB0MTkwe3BhZGRpbmctdG9wOjE5MHB4IWltcG9ydGFudH0KLnB0MjAwe3BhZGRpbmctdG9wOjIwMHB4IWltcG9ydGFudH0KLnBiMHtwYWRkaW5nLWJvdHRvbTowcHghaW1wb3J0YW50fQoucGIxe3BhZGRpbmctYm90dG9tOjFweCFpbXBvcnRhbnR9Ci5wYjJ7cGFkZGluZy1ib3R0b206MnB4IWltcG9ydGFudH0KLnBiM3twYWRkaW5nLWJvdHRvbTozcHghaW1wb3J0YW50fQoucGI0e3BhZGRpbmctYm90dG9tOjRweCFpbXBvcnRhbnR9Ci5wYjV7cGFkZGluZy1ib3R0b206NXB4IWltcG9ydGFudH0KLnBiNntwYWRkaW5nLWJvdHRvbTo2cHghaW1wb3J0YW50fQoucGI3e3BhZGRpbmctYm90dG9tOjdweCFpbXBvcnRhbnR9Ci5wYjh7cGFkZGluZy1ib3R0b206OHB4IWltcG9ydGFudH0KLnBiOXtwYWRkaW5nLWJvdHRvbTo5cHghaW1wb3J0YW50fQoucGIxMHtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudH0KLnBiMTF7cGFkZGluZy1ib3R0b206MTFweCFpbXBvcnRhbnR9Ci5wYjEye3BhZGRpbmctYm90dG9tOjEycHghaW1wb3J0YW50fQoucGIxM3twYWRkaW5nLWJvdHRvbToxM3B4IWltcG9ydGFudH0KLnBiMTR7cGFkZGluZy1ib3R0b206MTRweCFpbXBvcnRhbnR9Ci5wYjE1e3BhZGRpbmctYm90dG9tOjE1cHghaW1wb3J0YW50fQoucGIxNntwYWRkaW5nLWJvdHRvbToxNnB4IWltcG9ydGFudH0KLnBiMTd7cGFkZGluZy1ib3R0b206MTdweCFpbXBvcnRhbnR9Ci5wYjE4e3BhZGRpbmctYm90dG9tOjE4cHghaW1wb3J0YW50fQoucGIxOXtwYWRkaW5nLWJvdHRvbToxOXB4IWltcG9ydGFudH0KLnBiMjB7cGFkZGluZy1ib3R0b206MjBweCFpbXBvcnRhbnR9Ci5wYjIxe3BhZGRpbmctYm90dG9tOjIxcHghaW1wb3J0YW50fQoucGIyMntwYWRkaW5nLWJvdHRvbToyMnB4IWltcG9ydGFudH0KLnBiMjN7cGFkZGluZy1ib3R0b206MjNweCFpbXBvcnRhbnR9Ci5wYjI0e3BhZGRpbmctYm90dG9tOjI0cHghaW1wb3J0YW50fQoucGIyNXtwYWRkaW5nLWJvdHRvbToyNXB4IWltcG9ydGFudH0KLnBiMjZ7cGFkZGluZy1ib3R0b206MjZweCFpbXBvcnRhbnR9Ci5wYjI3e3BhZGRpbmctYm90dG9tOjI3cHghaW1wb3J0YW50fQoucGIyOHtwYWRkaW5nLWJvdHRvbToyOHB4IWltcG9ydGFudH0KLnBiMjl7cGFkZGluZy1ib3R0b206MjlweCFpbXBvcnRhbnR9Ci5wYjMwe3BhZGRpbmctYm90dG9tOjMwcHghaW1wb3J0YW50fQoucGIzNXtwYWRkaW5nLWJvdHRvbTozNXB4IWltcG9ydGFudH0KLnBiNDB7cGFkZGluZy1ib3R0b206NDBweCFpbXBvcnRhbnR9Ci5wYjQ1e3BhZGRpbmctYm90dG9tOjQ1cHghaW1wb3J0YW50fQoucGI1MHtwYWRkaW5nLWJvdHRvbTo1MHB4IWltcG9ydGFudH0KLnBiNTV7cGFkZGluZy1ib3R0b206NTVweCFpbXBvcnRhbnR9Ci5wYjYwe3BhZGRpbmctYm90dG9tOjYwcHghaW1wb3J0YW50fQoucGI2NXtwYWRkaW5nLWJvdHRvbTo2NXB4IWltcG9ydGFudH0KLnBiNzB7cGFkZGluZy1ib3R0b206NzBweCFpbXBvcnRhbnR9Ci5wYjc1e3BhZGRpbmctYm90dG9tOjc1cHghaW1wb3J0YW50fQoucGI4MHtwYWRkaW5nLWJvdHRvbTo4MHB4IWltcG9ydGFudH0KLnBiODV7cGFkZGluZy1ib3R0b206ODVweCFpbXBvcnRhbnR9Ci5wYjkwe3BhZGRpbmctYm90dG9tOjkwcHghaW1wb3J0YW50fQoucGI5NXtwYWRkaW5nLWJvdHRvbTo5NXB4IWltcG9ydGFudH0KLnBiMTAwe3BhZGRpbmctYm90dG9tOjEwMHB4IWltcG9ydGFudH0KLnBiMTEwe3BhZGRpbmctYm90dG9tOjExMHB4IWltcG9ydGFudH0KLnBiMTIwe3BhZGRpbmctYm90dG9tOjEyMHB4IWltcG9ydGFudH0KLnBiMTMwe3BhZGRpbmctYm90dG9tOjEzMHB4IWltcG9ydGFudH0KLnBiMTQwe3BhZGRpbmctYm90dG9tOjE0MHB4IWltcG9ydGFudH0KLnBiMTUwe3BhZGRpbmctYm90dG9tOjE1MHB4IWltcG9ydGFudH0KLnBiMTYwe3BhZGRpbmctYm90dG9tOjE2MHB4IWltcG9ydGFudH0KLnBiMTcwe3BhZGRpbmctYm90dG9tOjE3MHB4IWltcG9ydGFudH0KLnBiMTgwe3BhZGRpbmctYm90dG9tOjE4MHB4IWltcG9ydGFudH0KLnBiMTkwe3BhZGRpbmctYm90dG9tOjE5MHB4IWltcG9ydGFudH0KLnBiMjAwe3BhZGRpbmctYm90dG9tOjIwMHB4IWltcG9ydGFudH0KLm1sLTUwe21hcmdpbi1sZWZ0Oi01MHB4IWltcG9ydGFudH0KLm1sLTQwe21hcmdpbi1sZWZ0Oi00MHB4IWltcG9ydGFudH0KLm1sLTMwe21hcmdpbi1sZWZ0Oi0zMHB4IWltcG9ydGFudH0KLm1sLTI1e21hcmdpbi1sZWZ0Oi0yNXB4IWltcG9ydGFudH0KLm1sLTIwe21hcmdpbi1sZWZ0Oi0yMHB4IWltcG9ydGFudH0KLm1sLTE1e21hcmdpbi1sZWZ0Oi0xNXB4IWltcG9ydGFudH0KLm1sLTEwe21hcmdpbi1sZWZ0Oi0xMHB4IWltcG9ydGFudH0KLm1sLTl7bWFyZ2luLWxlZnQ6LTlweCFpbXBvcnRhbnR9Ci5tbC04e21hcmdpbi1sZWZ0Oi04cHghaW1wb3J0YW50fQoubWwtN3ttYXJnaW4tbGVmdDotN3B4IWltcG9ydGFudH0KLm1sLTZ7bWFyZ2luLWxlZnQ6LTZweCFpbXBvcnRhbnR9Ci5tbC01e21hcmdpbi1sZWZ0Oi01cHghaW1wb3J0YW50fQoubWwtNHttYXJnaW4tbGVmdDotNHB4IWltcG9ydGFudH0KLm1sLTN7bWFyZ2luLWxlZnQ6LTNweCFpbXBvcnRhbnR9Ci5tbC0ye21hcmdpbi1sZWZ0Oi0ycHghaW1wb3J0YW50fQoubWwtMXttYXJnaW4tbGVmdDotMXB4IWltcG9ydGFudH0KLm1sMHttYXJnaW4tbGVmdDowcHghaW1wb3J0YW50fQoubWwxe21hcmdpbi1sZWZ0OjFweCFpbXBvcnRhbnR9Ci5tbDJ7bWFyZ2luLWxlZnQ6MnB4IWltcG9ydGFudH0KLm1sM3ttYXJnaW4tbGVmdDozcHghaW1wb3J0YW50fQoubWw0e21hcmdpbi1sZWZ0OjRweCFpbXBvcnRhbnR9Ci5tbDV7bWFyZ2luLWxlZnQ6NXB4IWltcG9ydGFudH0KLm1sNnttYXJnaW4tbGVmdDo2cHghaW1wb3J0YW50fQoubWw3e21hcmdpbi1sZWZ0OjdweCFpbXBvcnRhbnR9Ci5tbDh7bWFyZ2luLWxlZnQ6OHB4IWltcG9ydGFudH0KLm1sOXttYXJnaW4tbGVmdDo5cHghaW1wb3J0YW50fQoubWwxMHttYXJnaW4tbGVmdDoxMHB4IWltcG9ydGFudH0KLm1sMTF7bWFyZ2luLWxlZnQ6MTFweCFpbXBvcnRhbnR9Ci5tbDEye21hcmdpbi1sZWZ0OjEycHghaW1wb3J0YW50fQoubWwxM3ttYXJnaW4tbGVmdDoxM3B4IWltcG9ydGFudH0KLm1sMTR7bWFyZ2luLWxlZnQ6MTRweCFpbXBvcnRhbnR9Ci5tbDE1e21hcmdpbi1sZWZ0OjE1cHghaW1wb3J0YW50fQoubWwxNnttYXJnaW4tbGVmdDoxNnB4IWltcG9ydGFudH0KLm1sMTd7bWFyZ2luLWxlZnQ6MTdweCFpbXBvcnRhbnR9Ci5tbDE4e21hcmdpbi1sZWZ0OjE4cHghaW1wb3J0YW50fQoubWwxOXttYXJnaW4tbGVmdDoxOXB4IWltcG9ydGFudH0KLm1sMjB7bWFyZ2luLWxlZnQ6MjBweCFpbXBvcnRhbnR9Ci5tbDI1e21hcmdpbi1sZWZ0OjI1cHghaW1wb3J0YW50fQoubWwzMHttYXJnaW4tbGVmdDozMHB4IWltcG9ydGFudH0KLm1sMzV7bWFyZ2luLWxlZnQ6MzVweCFpbXBvcnRhbnR9Ci5tbDQwe21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fQoubWw0NXttYXJnaW4tbGVmdDo0NXB4IWltcG9ydGFudH0KLm1sNTB7bWFyZ2luLWxlZnQ6NTBweCFpbXBvcnRhbnR9Ci5tbDU1e21hcmdpbi1sZWZ0OjU1cHghaW1wb3J0YW50fQoubWw2MHttYXJnaW4tbGVmdDo2MHB4IWltcG9ydGFudH0KLm1sNjV7bWFyZ2luLWxlZnQ6NjVweCFpbXBvcnRhbnR9Ci5tbDcwe21hcmdpbi1sZWZ0OjcwcHghaW1wb3J0YW50fQoubWw3NXttYXJnaW4tbGVmdDo3NXB4IWltcG9ydGFudH0KLm1sODB7bWFyZ2luLWxlZnQ6ODBweCFpbXBvcnRhbnR9Ci5tbDg1e21hcmdpbi1sZWZ0Ojg1cHghaW1wb3J0YW50fQoubWw5MHttYXJnaW4tbGVmdDo5MHB4IWltcG9ydGFudH0KLm1sOTV7bWFyZ2luLWxlZnQ6OTVweCFpbXBvcnRhbnR9Ci5tbDEwMHttYXJnaW4tbGVmdDoxMDBweCFpbXBvcnRhbnR9Ci5tbDExMHttYXJnaW4tbGVmdDoxMTBweCFpbXBvcnRhbnR9Ci5tbDEyMHttYXJnaW4tbGVmdDoxMjBweCFpbXBvcnRhbnR9Ci5tbDEzMHttYXJnaW4tbGVmdDoxMzBweCFpbXBvcnRhbnR9Ci5tbDE0MHttYXJnaW4tbGVmdDoxNDBweCFpbXBvcnRhbnR9Ci5tbDE1MHttYXJnaW4tbGVmdDoxNTBweCFpbXBvcnRhbnR9Ci5tbDE2MHttYXJnaW4tbGVmdDoxNjBweCFpbXBvcnRhbnR9Ci5tbDE3MHttYXJnaW4tbGVmdDoxNzBweCFpbXBvcnRhbnR9Ci5tbDE4MHttYXJnaW4tbGVmdDoxODBweCFpbXBvcnRhbnR9Ci5tbDE5MHttYXJnaW4tbGVmdDoxOTBweCFpbXBvcnRhbnR9Ci5tbDIwMHttYXJnaW4tbGVmdDoyMDBweCFpbXBvcnRhbnR9Ci5tci01MHttYXJnaW4tcmlnaHQ6LTUwcHghaW1wb3J0YW50fQoubXItNDB7bWFyZ2luLXJpZ2h0Oi00MHB4IWltcG9ydGFudH0KLm1yLTMwe21hcmdpbi1yaWdodDotMzBweCFpbXBvcnRhbnR9Ci5tci0yNXttYXJnaW4tcmlnaHQ6LTI1cHghaW1wb3J0YW50fQoubXItMjB7bWFyZ2luLXJpZ2h0Oi0yMHB4IWltcG9ydGFudH0KLm1yLTE1e21hcmdpbi1yaWdodDotMTVweCFpbXBvcnRhbnR9Ci5tci0xMHttYXJnaW4tcmlnaHQ6LTEwcHghaW1wb3J0YW50fQoubXItOXttYXJnaW4tcmlnaHQ6LTlweCFpbXBvcnRhbnR9Ci5tci04e21hcmdpbi1yaWdodDotOHB4IWltcG9ydGFudH0KLm1yLTd7bWFyZ2luLXJpZ2h0Oi03cHghaW1wb3J0YW50fQoubXItNnttYXJnaW4tcmlnaHQ6LTZweCFpbXBvcnRhbnR9Ci5tci01e21hcmdpbi1yaWdodDotNXB4IWltcG9ydGFudH0KLm1yLTR7bWFyZ2luLXJpZ2h0Oi00cHghaW1wb3J0YW50fQoubXItM3ttYXJnaW4tcmlnaHQ6LTNweCFpbXBvcnRhbnR9Ci5tci0ye21hcmdpbi1yaWdodDotMnB4IWltcG9ydGFudH0KLm1yLTF7bWFyZ2luLXJpZ2h0Oi0xcHghaW1wb3J0YW50fQoubXIwe21hcmdpbi1yaWdodDowcHghaW1wb3J0YW50fQoubXIxe21hcmdpbi1yaWdodDoxcHghaW1wb3J0YW50fQoubXIye21hcmdpbi1yaWdodDoycHghaW1wb3J0YW50fQoubXIze21hcmdpbi1yaWdodDozcHghaW1wb3J0YW50fQoubXI0e21hcmdpbi1yaWdodDo0cHghaW1wb3J0YW50fQoubXI1e21hcmdpbi1yaWdodDo1cHghaW1wb3J0YW50fQoubXI2e21hcmdpbi1yaWdodDo2cHghaW1wb3J0YW50fQoubXI3e21hcmdpbi1yaWdodDo3cHghaW1wb3J0YW50fQoubXI4e21hcmdpbi1yaWdodDo4cHghaW1wb3J0YW50fQoubXI5e21hcmdpbi1yaWdodDo5cHghaW1wb3J0YW50fQoubXIxMHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnR9Ci5tcjExe21hcmdpbi1yaWdodDoxMXB4IWltcG9ydGFudH0KLm1yMTJ7bWFyZ2luLXJpZ2h0OjEycHghaW1wb3J0YW50fQoubXIxM3ttYXJnaW4tcmlnaHQ6MTNweCFpbXBvcnRhbnR9Ci5tcjE0e21hcmdpbi1yaWdodDoxNHB4IWltcG9ydGFudH0KLm1yMTV7bWFyZ2luLXJpZ2h0OjE1cHghaW1wb3J0YW50fQoubXIxNnttYXJnaW4tcmlnaHQ6MTZweCFpbXBvcnRhbnR9Ci5tcjE3e21hcmdpbi1yaWdodDoxN3B4IWltcG9ydGFudH0KLm1yMTh7bWFyZ2luLXJpZ2h0OjE4cHghaW1wb3J0YW50fQoubXIxOXttYXJnaW4tcmlnaHQ6MTlweCFpbXBvcnRhbnR9Ci5tcjIwe21hcmdpbi1yaWdodDoyMHB4IWltcG9ydGFudH0KLm1yMjV7bWFyZ2luLXJpZ2h0OjI1cHghaW1wb3J0YW50fQoubXIzMHttYXJnaW4tcmlnaHQ6MzBweCFpbXBvcnRhbnR9Ci5tcjM1e21hcmdpbi1yaWdodDozNXB4IWltcG9ydGFudH0KLm1yNDB7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50fQoubXI0NXttYXJnaW4tcmlnaHQ6NDVweCFpbXBvcnRhbnR9Ci5tcjUwe21hcmdpbi1yaWdodDo1MHB4IWltcG9ydGFudH0KLm1yNTV7bWFyZ2luLXJpZ2h0OjU1cHghaW1wb3J0YW50fQoubXI2MHttYXJnaW4tcmlnaHQ6NjBweCFpbXBvcnRhbnR9Ci5tcjY1e21hcmdpbi1yaWdodDo2NXB4IWltcG9ydGFudH0KLm1yNzB7bWFyZ2luLXJpZ2h0OjcwcHghaW1wb3J0YW50fQoubXI3NXttYXJnaW4tcmlnaHQ6NzVweCFpbXBvcnRhbnR9Ci5tcjgwe21hcmdpbi1yaWdodDo4MHB4IWltcG9ydGFudH0KLm1yODV7bWFyZ2luLXJpZ2h0Ojg1cHghaW1wb3J0YW50fQoubXI5MHttYXJnaW4tcmlnaHQ6OTBweCFpbXBvcnRhbnR9Ci5tcjk1e21hcmdpbi1yaWdodDo5NXB4IWltcG9ydGFudH0KLm1yMTAwe21hcmdpbi1yaWdodDoxMDBweCFpbXBvcnRhbnR9Ci5tcjExMHttYXJnaW4tcmlnaHQ6MTEwcHghaW1wb3J0YW50fQoubXIxMjB7bWFyZ2luLXJpZ2h0OjEyMHB4IWltcG9ydGFudH0KLm1yMTMwe21hcmdpbi1yaWdodDoxMzBweCFpbXBvcnRhbnR9Ci5tcjE0MHttYXJnaW4tcmlnaHQ6MTQwcHghaW1wb3J0YW50fQoubXIxNTB7bWFyZ2luLXJpZ2h0OjE1MHB4IWltcG9ydGFudH0KLm1yMTYwe21hcmdpbi1yaWdodDoxNjBweCFpbXBvcnRhbnR9Ci5tcjE3MHttYXJnaW4tcmlnaHQ6MTcwcHghaW1wb3J0YW50fQoubXIxODB7bWFyZ2luLXJpZ2h0OjE4MHB4IWltcG9ydGFudH0KLm1yMTkwe21hcmdpbi1yaWdodDoxOTBweCFpbXBvcnRhbnR9Ci5tcjIwMHttYXJnaW4tcmlnaHQ6MjAwcHghaW1wb3J0YW50fQoubXQtNTB7bWFyZ2luLXRvcDotNTBweCFpbXBvcnRhbnR9Ci5tdC00MHttYXJnaW4tdG9wOi00MHB4IWltcG9ydGFudH0KLm10LTMwe21hcmdpbi10b3A6LTMwcHghaW1wb3J0YW50fQoubXQtMjV7bWFyZ2luLXRvcDotMjVweCFpbXBvcnRhbnR9Ci5tdC0yMHttYXJnaW4tdG9wOi0yMHB4IWltcG9ydGFudH0KLm10LTE1e21hcmdpbi10b3A6LTE1cHghaW1wb3J0YW50fQoubXQtMTB7bWFyZ2luLXRvcDotMTBweCFpbXBvcnRhbnR9Ci5tdC05e21hcmdpbi10b3A6LTlweCFpbXBvcnRhbnR9Ci5tdC04e21hcmdpbi10b3A6LThweCFpbXBvcnRhbnR9Ci5tdC03e21hcmdpbi10b3A6LTdweCFpbXBvcnRhbnR9Ci5tdC02e21hcmdpbi10b3A6LTZweCFpbXBvcnRhbnR9Ci5tdC01e21hcmdpbi10b3A6LTVweCFpbXBvcnRhbnR9Ci5tdC00e21hcmdpbi10b3A6LTRweCFpbXBvcnRhbnR9Ci5tdC0ze21hcmdpbi10b3A6LTNweCFpbXBvcnRhbnR9Ci5tdC0ye21hcmdpbi10b3A6LTJweCFpbXBvcnRhbnR9Ci5tdC0xe21hcmdpbi10b3A6LTFweCFpbXBvcnRhbnR9Ci5tdDB7bWFyZ2luLXRvcDowcHghaW1wb3J0YW50fQoubXQxe21hcmdpbi10b3A6MXB4IWltcG9ydGFudH0KLm10MnttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnR9Ci5tdDN7bWFyZ2luLXRvcDozcHghaW1wb3J0YW50fQoubXQ0e21hcmdpbi10b3A6NHB4IWltcG9ydGFudH0KLm10NXttYXJnaW4tdG9wOjVweCFpbXBvcnRhbnR9Ci5tdDZ7bWFyZ2luLXRvcDo2cHghaW1wb3J0YW50fQoubXQ3e21hcmdpbi10b3A6N3B4IWltcG9ydGFudH0KLm10OHttYXJnaW4tdG9wOjhweCFpbXBvcnRhbnR9Ci5tdDl7bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50fQoubXQxMHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fQoubXQxMXttYXJnaW4tdG9wOjExcHghaW1wb3J0YW50fQoubXQxMnttYXJnaW4tdG9wOjEycHghaW1wb3J0YW50fQoubXQxM3ttYXJnaW4tdG9wOjEzcHghaW1wb3J0YW50fQoubXQxNHttYXJnaW4tdG9wOjE0cHghaW1wb3J0YW50fQoubXQxNXttYXJnaW4tdG9wOjE1cHghaW1wb3J0YW50fQoubXQxNnttYXJnaW4tdG9wOjE2cHghaW1wb3J0YW50fQoubXQxN3ttYXJnaW4tdG9wOjE3cHghaW1wb3J0YW50fQoubXQxOHttYXJnaW4tdG9wOjE4cHghaW1wb3J0YW50fQoubXQxOXttYXJnaW4tdG9wOjE5cHghaW1wb3J0YW50fQoubXQyMHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50fQoubXQyNXttYXJnaW4tdG9wOjI1cHghaW1wb3J0YW50fQoubXQzMHttYXJnaW4tdG9wOjMwcHghaW1wb3J0YW50fQoubXQzNXttYXJnaW4tdG9wOjM1cHghaW1wb3J0YW50fQoubXQ0MHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50fQoubXQ0NXttYXJnaW4tdG9wOjQ1cHghaW1wb3J0YW50fQoubXQ1MHttYXJnaW4tdG9wOjUwcHghaW1wb3J0YW50fQoubXQ1NXttYXJnaW4tdG9wOjU1cHghaW1wb3J0YW50fQoubXQ2MHttYXJnaW4tdG9wOjYwcHghaW1wb3J0YW50fQoubXQ2NXttYXJnaW4tdG9wOjY1cHghaW1wb3J0YW50fQoubXQ3MHttYXJnaW4tdG9wOjcwcHghaW1wb3J0YW50fQoubXQ3NXttYXJnaW4tdG9wOjc1cHghaW1wb3J0YW50fQoubXQ4MHttYXJnaW4tdG9wOjgwcHghaW1wb3J0YW50fQoubXQ4NXttYXJnaW4tdG9wOjg1cHghaW1wb3J0YW50fQoubXQ5MHttYXJnaW4tdG9wOjkwcHghaW1wb3J0YW50fQoubXQ5NXttYXJnaW4tdG9wOjk1cHghaW1wb3J0YW50fQoubXQxMDB7bWFyZ2luLXRvcDoxMDBweCFpbXBvcnRhbnR9Ci5tdDExMHttYXJnaW4tdG9wOjExMHB4IWltcG9ydGFudH0KLm10MTIwe21hcmdpbi10b3A6MTIwcHghaW1wb3J0YW50fQoubXQxMzB7bWFyZ2luLXRvcDoxMzBweCFpbXBvcnRhbnR9Ci5tdDE0MHttYXJnaW4tdG9wOjE0MHB4IWltcG9ydGFudH0KLm10MTUwe21hcmdpbi10b3A6MTUwcHghaW1wb3J0YW50fQoubXQxNjB7bWFyZ2luLXRvcDoxNjBweCFpbXBvcnRhbnR9Ci5tdDE3MHttYXJnaW4tdG9wOjE3MHB4IWltcG9ydGFudH0KLm10MTgwe21hcmdpbi10b3A6MTgwcHghaW1wb3J0YW50fQoubXQxOTB7bWFyZ2luLXRvcDoxOTBweCFpbXBvcnRhbnR9Ci5tdDIwMHttYXJnaW4tdG9wOjIwMHB4IWltcG9ydGFudH0KLm1iLTUwe21hcmdpbi1ib3R0b206LTUwcHghaW1wb3J0YW50fQoubWItNDB7bWFyZ2luLWJvdHRvbTotNDBweCFpbXBvcnRhbnR9Ci5tYi0zMHttYXJnaW4tYm90dG9tOi0zMHB4IWltcG9ydGFudH0KLm1iLTI1e21hcmdpbi1ib3R0b206LTI1cHghaW1wb3J0YW50fQoubWItMjB7bWFyZ2luLWJvdHRvbTotMjBweCFpbXBvcnRhbnR9Ci5tYi0xNXttYXJnaW4tYm90dG9tOi0xNXB4IWltcG9ydGFudH0KLm1iLTEwe21hcmdpbi1ib3R0b206LTEwcHghaW1wb3J0YW50fQoubWItOXttYXJnaW4tYm90dG9tOi05cHghaW1wb3J0YW50fQoubWItOHttYXJnaW4tYm90dG9tOi04cHghaW1wb3J0YW50fQoubWItN3ttYXJnaW4tYm90dG9tOi03cHghaW1wb3J0YW50fQoubWItNnttYXJnaW4tYm90dG9tOi02cHghaW1wb3J0YW50fQoubWItNXttYXJnaW4tYm90dG9tOi01cHghaW1wb3J0YW50fQoubWItNHttYXJnaW4tYm90dG9tOi00cHghaW1wb3J0YW50fQoubWItM3ttYXJnaW4tYm90dG9tOi0zcHghaW1wb3J0YW50fQoubWItMnttYXJnaW4tYm90dG9tOi0ycHghaW1wb3J0YW50fQoubWItMXttYXJnaW4tYm90dG9tOi0xcHghaW1wb3J0YW50fQoubWIwe21hcmdpbi1ib3R0b206MHB4IWltcG9ydGFudH0KLm1iMXttYXJnaW4tYm90dG9tOjFweCFpbXBvcnRhbnR9Ci5tYjJ7bWFyZ2luLWJvdHRvbToycHghaW1wb3J0YW50fQoubWIze21hcmdpbi1ib3R0b206M3B4IWltcG9ydGFudH0KLm1iNHttYXJnaW4tYm90dG9tOjRweCFpbXBvcnRhbnR9Ci5tYjV7bWFyZ2luLWJvdHRvbTo1cHghaW1wb3J0YW50fQoubWI2e21hcmdpbi1ib3R0b206NnB4IWltcG9ydGFudH0KLm1iN3ttYXJnaW4tYm90dG9tOjdweCFpbXBvcnRhbnR9Ci5tYjh7bWFyZ2luLWJvdHRvbTo4cHghaW1wb3J0YW50fQoubWI5e21hcmdpbi1ib3R0b206OXB4IWltcG9ydGFudH0KLm1iMTB7bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudH0KLm1iMTF7bWFyZ2luLWJvdHRvbToxMXB4IWltcG9ydGFudH0KLm1iMTJ7bWFyZ2luLWJvdHRvbToxMnB4IWltcG9ydGFudH0KLm1iMTN7bWFyZ2luLWJvdHRvbToxM3B4IWltcG9ydGFudH0KLm1iMTR7bWFyZ2luLWJvdHRvbToxNHB4IWltcG9ydGFudH0KLm1iMTV7bWFyZ2luLWJvdHRvbToxNXB4IWltcG9ydGFudH0KLm1iMTZ7bWFyZ2luLWJvdHRvbToxNnB4IWltcG9ydGFudH0KLm1iMTd7bWFyZ2luLWJvdHRvbToxN3B4IWltcG9ydGFudH0KLm1iMTh7bWFyZ2luLWJvdHRvbToxOHB4IWltcG9ydGFudH0KLm1iMTl7bWFyZ2luLWJvdHRvbToxOXB4IWltcG9ydGFudH0KLm1iMjB7bWFyZ2luLWJvdHRvbToyMHB4IWltcG9ydGFudH0KLm1iMjV7bWFyZ2luLWJvdHRvbToyNXB4IWltcG9ydGFudH0KLm1iMzB7bWFyZ2luLWJvdHRvbTozMHB4IWltcG9ydGFudH0KLm1iMzV7bWFyZ2luLWJvdHRvbTozNXB4IWltcG9ydGFudH0KLm1iNDB7bWFyZ2luLWJvdHRvbTo0MHB4IWltcG9ydGFudH0KLm1iNDV7bWFyZ2luLWJvdHRvbTo0NXB4IWltcG9ydGFudH0KLm1iNTB7bWFyZ2luLWJvdHRvbTo1MHB4IWltcG9ydGFudH0KLm1iNTV7bWFyZ2luLWJvdHRvbTo1NXB4IWltcG9ydGFudH0KLm1iNjB7bWFyZ2luLWJvdHRvbTo2MHB4IWltcG9ydGFudH0KLm1iNjV7bWFyZ2luLWJvdHRvbTo2NXB4IWltcG9ydGFudH0KLm1iNzB7bWFyZ2luLWJvdHRvbTo3MHB4IWltcG9ydGFudH0KLm1iNzV7bWFyZ2luLWJvdHRvbTo3NXB4IWltcG9ydGFudH0KLm1iODB7bWFyZ2luLWJvdHRvbTo4MHB4IWltcG9ydGFudH0KLm1iODV7bWFyZ2luLWJvdHRvbTo4NXB4IWltcG9ydGFudH0KLm1iOTB7bWFyZ2luLWJvdHRvbTo5MHB4IWltcG9ydGFudH0KLm1iOTV7bWFyZ2luLWJvdHRvbTo5NXB4IWltcG9ydGFudH0KLm1iMTAwe21hcmdpbi1ib3R0b206MTAwcHghaW1wb3J0YW50fQoubWIxMTB7bWFyZ2luLWJvdHRvbToxMTBweCFpbXBvcnRhbnR9Ci5tYjEyMHttYXJnaW4tYm90dG9tOjEyMHB4IWltcG9ydGFudH0KLm1iMTMwe21hcmdpbi1ib3R0b206MTMwcHghaW1wb3J0YW50fQoubWIxNDB7bWFyZ2luLWJvdHRvbToxNDBweCFpbXBvcnRhbnR9Ci5tYjE1MHttYXJnaW4tYm90dG9tOjE1MHB4IWltcG9ydGFudH0KLm1iMTYwe21hcmdpbi1ib3R0b206MTYwcHghaW1wb3J0YW50fQoubWIxNzB7bWFyZ2luLWJvdHRvbToxNzBweCFpbXBvcnRhbnR9Ci5tYjE4MHttYXJnaW4tYm90dG9tOjE4MHB4IWltcG9ydGFudH0KLm1iMTkwe21hcmdpbi1ib3R0b206MTkwcHghaW1wb3J0YW50fQoubWIyMDB7bWFyZ2luLWJvdHRvbToyMDBweCFpbXBvcnRhbnR9Ci56aTF7ei1pbmRleDoxfQouemkye3otaW5kZXg6Mn0KLnppM3t6LWluZGV4OjN9Ci56aTR7ei1pbmRleDo0fQouemk1e3otaW5kZXg6NX0KLnppNnt6LWluZGV4OjZ9Ci56aTd7ei1pbmRleDo3fQouemk4e3otaW5kZXg6OH0KLnppOXt6LWluZGV4Ojl9Ci56aTEwe3otaW5kZXg6MTB9Ci56aTExe3otaW5kZXg6MTF9Ci56aTEye3otaW5kZXg6MTJ9Ci56aTEze3otaW5kZXg6MTN9Ci56aTE0e3otaW5kZXg6MTR9Ci56aTE1e3otaW5kZXg6MTV9Ci56aTE2e3otaW5kZXg6MTZ9Ci56aTE3e3otaW5kZXg6MTd9Ci56aTE4e3otaW5kZXg6MTh9Ci56aTE5e3otaW5kZXg6MTl9Ci56aTIwe3otaW5kZXg6MjB9Ci5mczQwe2ZvbnQtc2l6ZTo0MCUhaW1wb3J0YW50fQouZnM0NXtmb250LXNpemU6NDUlIWltcG9ydGFudH0KLmZzNTB7Zm9udC1zaXplOjUwJSFpbXBvcnRhbnR9Ci5mczU1e2ZvbnQtc2l6ZTo1NSUhaW1wb3J0YW50fQouZnM2MHtmb250LXNpemU6NjAlIWltcG9ydGFudH0KLmZzNjV7Zm9udC1zaXplOjY1JSFpbXBvcnRhbnR9Ci5mczcwe2ZvbnQtc2l6ZTo3MCUhaW1wb3J0YW50fQouZnM3NXtmb250LXNpemU6NzUlIWltcG9ydGFudH0KLmZzODB7Zm9udC1zaXplOjgwJSFpbXBvcnRhbnR9Ci5mczg1e2ZvbnQtc2l6ZTo4NSUhaW1wb3J0YW50fQouZnM5MHtmb250LXNpemU6OTAlIWltcG9ydGFudH0KLmZzOTV7Zm9udC1zaXplOjk1JSFpbXBvcnRhbnR9Ci5mczEwMHtmb250LXNpemU6MTAwJSFpbXBvcnRhbnR9Ci5mczEwNXtmb250LXNpemU6MTA1JSFpbXBvcnRhbnR9Ci5mczExMHtmb250LXNpemU6MTEwJSFpbXBvcnRhbnR9Ci5mczExNXtmb250LXNpemU6MTE1JSFpbXBvcnRhbnR9Ci5mczEyMHtmb250LXNpemU6MTIwJSFpbXBvcnRhbnR9Ci5mczEyNXtmb250LXNpemU6MTI1JSFpbXBvcnRhbnR9Ci5mczEzMHtmb250LXNpemU6MTMwJSFpbXBvcnRhbnR9Ci5mczE0MHtmb250LXNpemU6MTQwJSFpbXBvcnRhbnR9Ci5mczE1MHtmb250LXNpemU6MTUwJSFpbXBvcnRhbnR9Ci5mczE2MHtmb250LXNpemU6MTYwJSFpbXBvcnRhbnR9Ci5mczE3MHtmb250LXNpemU6MTcwJSFpbXBvcnRhbnR9Ci5mczE4MHtmb250LXNpemU6MTgwJSFpbXBvcnRhbnR9Ci5mczE5MHtmb250LXNpemU6MTkwJSFpbXBvcnRhbnR9Ci5mczIwMHtmb250LXNpemU6MjAwJSFpbXBvcnRhbnR9Ci5mczIxMHtmb250LXNpemU6MjEwJSFpbXBvcnRhbnR9Ci5mczIyMHtmb250LXNpemU6MjIwJSFpbXBvcnRhbnR9Ci5mczIzMHtmb250LXNpemU6MjMwJSFpbXBvcnRhbnR9Ci5mczI0MHtmb250LXNpemU6MjQwJSFpbXBvcnRhbnR9Ci5mczI1MHtmb250LXNpemU6MjUwJSFpbXBvcnRhbnR9Ci5mczI2MHtmb250LXNpemU6MjYwJSFpbXBvcnRhbnR9Ci5mczI4MHtmb250LXNpemU6MjgwJSFpbXBvcnRhbnR9Ci5mczMwMHtmb250LXNpemU6MzAwJSFpbXBvcnRhbnR9Ci5mczMyMHtmb250LXNpemU6MzIwJSFpbXBvcnRhbnR9Ci5mczM0MHtmb250LXNpemU6MzQwJSFpbXBvcnRhbnR9Ci5mczM2MHtmb250LXNpemU6MzYwJSFpbXBvcnRhbnR9Ci5mczM4MHtmb250LXNpemU6MzgwJSFpbXBvcnRhbnR9Ci5mczQwMHtmb250LXNpemU6NDAwJSFpbXBvcnRhbnR9Ci5saDcwe2xpbmUtaGVpZ2h0OjAuN2VtfQoubGg3NXtsaW5lLWhlaWdodDowLjc1ZW19Ci5saDgwe2xpbmUtaGVpZ2h0OjAuOGVtfQoubGg4NXtsaW5lLWhlaWdodDowLjg1ZW19Ci5saDkwe2xpbmUtaGVpZ2h0OjAuOWVtfQoubGg5NXtsaW5lLWhlaWdodDowLjk1ZW19Ci5saDEwMHtsaW5lLWhlaWdodDoxZW19Ci5saDEwNXtsaW5lLWhlaWdodDoxLjA1ZW19Ci5saDExMHtsaW5lLWhlaWdodDoxLjFlbX0KLmxoMTE1e2xpbmUtaGVpZ2h0OjEuMTVlbX0KLmxoMTIwe2xpbmUtaGVpZ2h0OjEuMmVtfQoubGgxMjV7bGluZS1oZWlnaHQ6MS4yNWVtfQoubGgxMzB7bGluZS1oZWlnaHQ6MS4zZW19Ci5saDE0MHtsaW5lLWhlaWdodDoxLjRlbX0KLmxoMTUwe2xpbmUtaGVpZ2h0OjEuNWVtfQoubGgxNjB7bGluZS1oZWlnaHQ6MS42ZW19Ci5saDE3MHtsaW5lLWhlaWdodDoxLjdlbX0KLmxoMTgwe2xpbmUtaGVpZ2h0OjEuOGVtfQoubGgxOTB7bGluZS1oZWlnaHQ6MS45ZW19Ci5saDIwMHtsaW5lLWhlaWdodDoyZW19Ci5saDIyMHtsaW5lLWhlaWdodDoyLjJlbX0KLmxoMjQwe2xpbmUtaGVpZ2h0OjIuNGVtfQoubGgyNTB7bGluZS1oZWlnaHQ6Mi41ZW19Ci5saDI2MHtsaW5lLWhlaWdodDoyLjZlbX0KLmxoMjgwe2xpbmUtaGVpZ2h0OjIuOGVtfQoubGgzMDB7bGluZS1oZWlnaHQ6M2VtfQouc21hbGx7Zm9udC1zaXplOjkwJTtsaW5lLWhlaWdodDoxLjM3ZW19Ci5ib2xke2ZvbnQtd2VpZ2h0OmJvbGR9Ci5ib2xkZXJ7Zm9udC13ZWlnaHQ6Ym9sZGVyfQouZncyMDB7Zm9udC13ZWlnaHQ6MjAwfQouZnczMDB7Zm9udC13ZWlnaHQ6MzAwfQouZnc0MDB7Zm9udC13ZWlnaHQ6NDAwfQouZnc1MDB7Zm9udC13ZWlnaHQ6NTAwfQouZnc2MDB7Zm9udC13ZWlnaHQ6NjAwfQoudGRue3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudH0KLnRkbHt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoIWltcG9ydGFudH0KLmZpbHRlci1ub21hdGNoe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ci5ud3t3aGl0ZS1zcGFjZTpub3dyYXB9Ci5lbGx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ci53YmF7d29yZC1icmVhazpicmVhay1hbGx9Ci52YXR7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0KLnZhYnt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fQoudmFse3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudH0KLnZhbXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50fQoudGFje3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH0KLnRhcnt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0KLnRhbHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fQouYmJze2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMTA3LCAxNTksIDIxOSwgMC4zNSl9Ci5idHN7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJiZHtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJ0ZHtib3JkZXItdG9wOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJhc3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTA3LCAxNTksIDIxOSwgMC4zNSl9Ci5iYWR7Ym9yZGVyOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJyMntib3JkZXItcmFkaXVzOjJweCFpbXBvcnRhbnR9Ci5icjR7Ym9yZGVyLXJhZGl1czo0cHghaW1wb3J0YW50fQouYnI2e2JvcmRlci1yYWRpdXM6NnB4IWltcG9ydGFudH0KLmJyOHtib3JkZXItcmFkaXVzOjhweCFpbXBvcnRhbnR9Ci5icjEwe2JvcmRlci1yYWRpdXM6MTBweCFpbXBvcnRhbnR9Ci5icjEwMHtib3JkZXItcmFkaXVzOjEwMHB4IWltcG9ydGFudH0KLmIxe2JvcmRlci13aWR0aDoxcHghaW1wb3J0YW50fQouYjJ7Ym9yZGVyLXdpZHRoOjJweCFpbXBvcnRhbnR9Ci5iM3tib3JkZXItd2lkdGg6M3B4IWltcG9ydGFudH0KLmI0e2JvcmRlci13aWR0aDo0cHghaW1wb3J0YW50fQouYjV7Ym9yZGVyLXdpZHRoOjVweCFpbXBvcnRhbnR9CkBrZXlmcmFtZXMgcm90YXRlMzYwe2Zyb217dHJhbnNmb3JtOnNjYWxlKDEpIHJvdGF0ZSgwZGVnKX0KdG97dHJhbnNmb3JtOnNjYWxlKDEpIHJvdGF0ZSgzNjBkZWcpfX0KLmFyb3QwNXN7YW5pbWF0aW9uLW5hbWU6cm90YXRlMzYwO2FuaW1hdGlvbi1kdXJhdGlvbjowLjVzO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXJ9Ci5hcm90MXN7YW5pbWF0aW9uLW5hbWU6cm90YXRlMzYwO2FuaW1hdGlvbi1kdXJhdGlvbjoxczthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfQouYXJvdDJze2FuaW1hdGlvbi1uYW1lOnJvdGF0ZTM2MDthbmltYXRpb24tZHVyYXRpb246MnM7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0KZGl2Lm15LW1vZGFsLXNjcmVlbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIsIDUwLCA5MCwgMC44OCk7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxOTk3O3RvcDowO2xlZnQ6MH0KZGl2Lm15LW1vZGFse3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTk5ODtib3gtc2hhZG93OjAgMCA2OXB4IDEwcHggcmdiYSgyOCwgMzIsIDM4LCAwLjUpO3BhZGRpbmc6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO3RleHQtYWxpZ246bGVmdDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fQpkaXYubXktbW9kYWwubXktbW9kYWwtbG9hZGluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaS9sb2FkZXItYmFyMi5naWYnKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wfQpkaXYubXktbW9kYWwgPiAubXktbW9kYWwtY2xvc2V7Zm9udC1mYW1pbHk6IlNlZ29lIFVJIiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnM7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05cHQ7cmlnaHQ6LThwdDtmb250LXNpemU6MjBwdDtsaW5lLWhlaWdodDoxM3B0O21hcmdpbjowO2JvcmRlcjpub25lO3BhZGRpbmc6NHB0IDZwdCA4cHQgNnB0O2NvbG9yOiMyZDY2Yjg7Ym9yZGVyLXJhZGl1czoyMHB0O2JhY2tncm91bmQ6I2U1ZjNmZjt0cmFuc2l0aW9uOmNvbG9yIDAuM3M7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxOTk5fQpkaXYubXktbW9kYWwgPiAubXktbW9kYWwtY2xvc2U6aG92ZXJ7Y29sb3I6IzEyYTVkY30KZGl2Lm15LW1vZGFsLm15LW1vZGFsLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxOTk4O2JveC1zaGFkb3c6MCAwIDExcHggNnB4IHJnYmEoMjgsIDMyLCAzOCwgMC4wOCksIDAgMCA2cHggcmdiYSgyOCwgMzIsIDM4LCAwLjE1KTtwYWRkaW5nOjEwcHggMTVweCAxM3B4IDE1cHg7Ym9yZGVyLXJhZGl1czozcHh9CmRpdi5teS1tb2RhbC5teS1tb2RhbC1vdmVybGF5ID4gLm15LW1vZGFsLWNsb3Nle3RvcDotMC4ycHQ7cmlnaHQ6LTAuMnB0O2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjJwdCAzcHQgM3B0IDNwdH0KZGl2Lm15LW1vZGFsID4gLm15LW1vZGFsLW5vc2V7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjgsIDMyLCAzOCwgMC4xNSk7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6d2hpdGU7dG9wOjA7bGVmdDowfQpkaXYubXktbW9kYWwubm9zZS1sZWZ0OmJlZm9yZSwgZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHQ6YmVmb3JlLCBkaXYubXktbW9kYWwubm9zZS10b3A6YmVmb3JlLCBkaXYubXktbW9kYWwubm9zZS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI4LCAzMiwgMzgsIDAuMTUpO2JvcmRlci10b3A6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfQpkaXYubXktbW9kYWwubm9zZS1sZWZ0e21hcmdpbi1sZWZ0OjdweH0KZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHR7bWFyZ2luLXJpZ2h0OjdweH0KZGl2Lm15LW1vZGFsLm5vc2UtdG9we21hcmdpbi10b3A6N3B4fQpkaXYubXktbW9kYWwubm9zZS1ib3R0b217bWFyZ2luLWJvdHRvbTo3cHh9CmRpdi5teS1tb2RhbC5ub3NlLWxlZnQ6YmVmb3Jle2xlZnQ6LTZweDt0b3A6NTAlO21hcmdpbi10b3A6LTVweDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1tb3otdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfQpkaXYubXktbW9kYWwubm9zZS1yaWdodDpiZWZvcmV7cmlnaHQ6LTZweDt0b3A6NTAlO21hcmdpbi10b3A6LTVweDt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7LW8tdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0KZGl2Lm15LW1vZGFsLm5vc2UtdG9wOmJlZm9yZXtsZWZ0OjUwJTt0b3A6LTZweDttYXJnaW4tbGVmdDotNXB4O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstbXMtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX0KZGl2Lm15LW1vZGFsLm5vc2UtYm90dG9tOmJlZm9yZXtsZWZ0OjUwJTtib3R0b206LTZweDttYXJnaW4tbGVmdDotNXB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstbXMtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0KLm15LXRhZ3N7cG9zaXRpb246cmVsYXRpdmV9Ci5teS10YWdzIC50YWd7cGFkZGluZzowLjE1ZW0gMC4zNWVtIDAuMjJlbSAwLjM1ZW07d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lfQoubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTU4LCAyMDUsIDI0OCwgMC4zNSk7Y29sb3I6IzIzNGY4Zjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjJweH0KLm15LWVycm9yIC5teS10YWdzIC50YWcuYWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzQsIDExNCwgMTM0LCAwLjM1KTtjb2xvcjojZDYyYzQ5fQoubXktdGFncyAudGFnLmFjdGl2ZTpob3Zlcntjb2xvcjojMTJhNWRjfQouc2VsZWN0Mi1jb250YWluZXJ7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfQouc2VsZWN0Mi1jb250YWluZXIsIC5zZWxlY3QyLWRyb3AsIC5zZWxlY3QyLXNlYXJjaCwgLnNlbGVjdDItc2VhcmNoIGlucHV0ey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MCAwIDAgMC40ZW07b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MmVtO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZn0KLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItZHJvcC1hYm92ZSAuc2VsZWN0Mi1jaG9pY2V7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZDBkNmRkO2JvcmRlci1yYWRpdXM6MCAwIDJweCAycHh9Ci5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWFsbG93Y2xlYXIgLnNlbGVjdDItY2hvaWNlIC5zZWxlY3QyLWNob3NlbnttYXJnaW4tcmlnaHQ6NDJweH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSA+IC5zZWxlY3QyLWNob3NlbnttYXJnaW4tcmlnaHQ6MjZweDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztmbG9hdDpub25lO3dpZHRoOmF1dG87bGluZS1oZWlnaHQ6MS45ZW07Y29sb3I6IzRkNWE2YX0KaHRtbFtkaXI9InJ0bCJdIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgPiAuc2VsZWN0Mi1jaG9zZW57bWFyZ2luLWxlZnQ6MjZweDttYXJnaW4tcmlnaHQ6MH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSBhYmJye2Rpc3BsYXk6bm9uZTt3aWR0aDoxMnB4O2hlaWdodDoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjI0cHg7dG9wOjhweDtmb250LXNpemU6MXB4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MH0KLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItYWxsb3djbGVhciAuc2VsZWN0Mi1jaG9pY2UgYWJicntkaXNwbGF5OmlubGluZS1ibG9ja30KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSBhYmJyOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTExcHg7Y3Vyc29yOnBvaW50ZXJ9Ci5zZWxlY3QyLWRyb3AtbWFza3tib3JkZXI6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO21pbi1oZWlnaHQ6MTAwJTttaW4td2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDphdXRvO29wYWNpdHk6MDt6LWluZGV4OjI5OTc7YmFja2dyb3VuZC1jb2xvcjojZmZmO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApfQouc2VsZWN0Mi1kcm9we3dpZHRoOjEwMCU7bWFyZ2luLXRvcDotMXB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mjk5ODt0b3A6MTAwJTtmb250LXNpemU6MC44ZW07bGluZS1oZWlnaHQ6MS4zNWVtO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjppbmhlcml0O2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItdG9wOjA7Y29sb3I6IzRkNWE2YTtib3JkZXItcmFkaXVzOjAgMCAycHggMnB4fQouc2VsZWN0Mi1kcm9wIGxpe21hcmdpbi1sZWZ0OjB9Ci5zZWxlY3QyLWRyb3Auc2VsZWN0Mi1kcm9wLWFib3Zle21hcmdpbi10b3A6MXB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci1yYWRpdXM6MnB4IDJweCAwIDB9Ci5zZWxlY3QyLWRyb3AtYWN0aXZle2JvcmRlcjoxcHggc29saWQgIzllY2RmODtib3JkZXItdG9wOm5vbmV9Ci5zZWxlY3QyLWRyb3Auc2VsZWN0Mi1kcm9wLWFib3ZlLnNlbGVjdDItZHJvcC1hY3RpdmV7Ym9yZGVyLXRvcDoxcHggc29saWQgIzllY2RmOH0KLnNlbGVjdDItZHJvcC1hdXRvLXdpZHRoe2JvcmRlci10b3A6MXB4IHNvbGlkICNkMGQ2ZGQ7d2lkdGg6YXV0b30KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvd3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxLjJlbTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3BhZGRpbmctbGVmdDoxcHg7cGFkZGluZy10b3A6MC4wNmVtO2JvcmRlci1yYWRpdXM6MCAycHggMnB4IDB9Ci5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgLnNlbGVjdDItYXJyb3cgYntjb250ZW50OiIiO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2hlaWdodDowLjNlbTt3aWR0aDowLjNlbTt0b3A6LTAuMTZlbTtsZWZ0OjAuMjNlbTtmb250LXNpemU6MS4zZW07bGluZS1oZWlnaHQ6MWVtO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MC4xMmVtIDAuMTJlbSAwIDA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MC42fQouc2VsZWN0Mi1zZWFyY2h7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI2cHg7bWFyZ2luOjA7cGFkZGluZzo0cHggNHB4IDAgNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjk5OTt3aGl0ZS1zcGFjZTpub3dyYXB9Ci5zZWxlY3QyLXNlYXJjaCBpbnB1dHt3aWR0aDoxMDAlO2hlaWdodDphdXRvIWltcG9ydGFudDttaW4taGVpZ2h0OjI2cHg7cGFkZGluZzo0cHggMjBweCA0cHggNXB4O21hcmdpbjowO291dGxpbmU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO2JhY2tncm91bmQtcG9zaXRpb246MTAwJSAtMjFweH0KLnNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSAuc2VsZWN0Mi1jaG9pY2UsIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlc3tib3JkZXI6MXB4IHNvbGlkICM5ZWNkZjg7b3V0bGluZTpub25lfQouc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZXtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTgsIDIwNSwgMjQ4LCAwLjM1KX0KLnNlbGVjdDItZHJvcGRvd24tb3Blbi5zZWxlY3QyLWRyb3AtYWJvdmUgLnNlbGVjdDItY2hvaWNlLCAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuLnNlbGVjdDItZHJvcC1hYm92ZSAuc2VsZWN0Mi1jaG9pY2Vze2JvcmRlcjoxcHggc29saWQgIzllY2RmODtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fQouc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvdyBie2xlZnQ6MC4yNWVtO3RvcDotMC4wMmVtO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0KLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9Ci5zZWxlY3QyLXJlc3VsdHN7bWF4LWhlaWdodDoyNTBweDtwYWRkaW5nOjAgMCAwIDRweDttYXJnaW46NHB4IDRweCA0cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwgMCwgMCwgMCk7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Ci5zZWxlY3QyLWRyb3AudGFsbCAuc2VsZWN0Mi1yZXN1bHRze21heC1oZWlnaHQ6MzUwcHh9Ci5zZWxlY3QyLWRyb3AudGFsbGVyIC5zZWxlY3QyLXJlc3VsdHN7bWF4LWhlaWdodDo0NTBweH0KaHRtbFtkaXI9InJ0bCJdIC5zZWxlY3QyLXJlc3VsdHN7cGFkZGluZzowIDRweCAwIDA7bWFyZ2luOjRweCAwIDRweCA0cHh9Ci5zZWxlY3QyLXJlc3VsdHMgdWwuc2VsZWN0Mi1yZXN1bHQtc3Vie21hcmdpbjowO3BhZGRpbmctbGVmdDowfQouc2VsZWN0Mi1yZXN1bHRzIGxpe2xpc3Qtc3R5bGU6bm9uZTtkaXNwbGF5Omxpc3QtaXRlbTtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Ci5zZWxlY3QyLXJlc3VsdHMgbGkuc2VsZWN0Mi1yZXN1bHQtd2l0aC1jaGlsZHJlbiA+IC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtmb250LXdlaWdodDpib2xkfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtwYWRkaW5nOjFweCAwcHggMnB4O21hcmdpbjowO2N1cnNvcjpwb2ludGVyO21pbi1oZWlnaHQ6MWVtOy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0KLnNlbGVjdDItcmVzdWx0cy1kZXB0LTEgLnNlbGVjdDItcmVzdWx0LWxhYmVse3BhZGRpbmctbGVmdDowcHh9Ci5zZWxlY3QyLXJlc3VsdHMtZGVwdC0yIC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtwYWRkaW5nLWxlZnQ6MTBweH0KLnNlbGVjdDItcmVzdWx0cy1kZXB0LTMgLnNlbGVjdDItcmVzdWx0LWxhYmVse3BhZGRpbmctbGVmdDoyMHB4fQouc2VsZWN0Mi1yZXN1bHRzLWRlcHQtNCAuc2VsZWN0Mi1yZXN1bHQtbGFiZWx7cGFkZGluZy1sZWZ0OjMwcHh9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItaGlnaGxpZ2h0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1OCwgMjA1LCAyNDgsIDAuMzUpO2NvbG9yOiM0ZDVhNmF9Ci5zZWxlY3QyLXJlc3VsdHMgbGkgZW17YmFja2dyb3VuZDpyZ2JhKDIwMywgMjMxLCAyNTQsIDAuMzUpO2ZvbnQtc3R5bGU6bm9ybWFsfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLWhpZ2hsaWdodGVkIGVte2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItaGlnaGxpZ2h0ZWQgdWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM0ZDVhNmF9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItbm8tcmVzdWx0cywgLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1zZWFyY2hpbmcsIC5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItYWpheC1lcnJvciwgLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1zZWxlY3Rpb24tbGltaXR7YmFja2dyb3VuZDpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2Rpc3BsYXk6bGlzdC1pdGVtO3BhZGRpbmctbGVmdDo1cHh9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItZGlzYWJsZWQuc2VsZWN0Mi1oaWdobGlnaHRlZHtjb2xvcjojNGQ1YTZhO2JhY2tncm91bmQ6cmdiYSgyMjcsIDIzMiwgMjM1LCAwLjM1KTtkaXNwbGF5Omxpc3QtaXRlbTtjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1kaXNhYmxlZHtiYWNrZ3JvdW5kOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSk7ZGlzcGxheTpsaXN0LWl0ZW07Y3Vyc29yOmRlZmF1bHR9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItc2VsZWN0ZWR7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLWFqYXgtZXJyb3J7YmFja2dyb3VuZDpyZ2JhKDI1NCwgMjExLCAyMTEsIDAuMzUpfQouc2VsZWN0Mi1tb3JlLXJlc3VsdHN7YmFja2dyb3VuZDpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2Rpc3BsYXk6bGlzdC1pdGVtfQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjcsIDIzMiwgMjM1LCAwLjM1KTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjZTNlOGViO2N1cnNvcjpkZWZhdWx0fQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlIC5zZWxlY3QyLWFycm93e29wYWNpdHk6MC41fQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlIGFiYnJ7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlc3ttaW4taGVpZ2h0OjI2cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDttYXJnaW46MDtwYWRkaW5nOjAgMCAycHggMDtjdXJzb3I6dGV4dDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OmF1dG8haW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfQouc2VsZWN0Mi1sb2NrZWR7cGFkZGluZzozcHggNXB4IDNweCA1cHghaW1wb3J0YW50fQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZXN7Ym9yZGVyOjFweCBzb2xpZCAjOWVjZGY4O291dGxpbmU6bm9uZX0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgbGl7ZmxvYXQ6bGVmdDtsaXN0LXN0eWxlOm5vbmV9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZHttYXJnaW46MDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlcyAuc2VsZWN0Mi1zZWFyY2gtZmllbGQgaW5wdXR7cGFkZGluZzozcHggNnB4O21hcmdpbjozcHggMDtmb250LXNpemU6MC45ZW07bGluZS1oZWlnaHQ6MS4xZW07b3V0bGluZTpub25lO2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZCBpbnB1dCwgLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZCBpbnB1dDpmb2N1c3tib3JkZXI6MCFpbXBvcnRhbnR9Ci5zZWxlY3QyLWRlZmF1bHR7Y29sb3I6I2I5YzBjYiFpbXBvcnRhbnR9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2ZpbHRlcjpub25lO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtjb2xvcjojNGQ1YTZhO2JvcmRlcjpub25lO2xpbmUtaGVpZ2h0OjEuMWVtO2ZvbnQtc2l6ZTowLjllbTtwYWRkaW5nOjNweCA4cHggNHB4IDE2cHg7bWFyZ2luOjNweCAwIDBweCAzcHg7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOmRlZmF1bHQ7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlcyAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIC5zZWxlY3QyLWNob3NlbntjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMTU4LCAyMDUsIDI0OCwgMC4zNSl9Ci5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2V7ZGlzcGxheTpibG9jazt3aWR0aDoxMnB4O2hlaWdodDoxM3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjNweDt0b3A6NHB4O2ZvbnQtc2l6ZToxcHg7b3V0bGluZTpub25lO2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtsZWZ0OjNweH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZSAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWNsb3NlOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTExcHh9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0xMXB4fQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlc3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSk7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2UzZThlYjtjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpLnNlbGVjdDItY29udGFpbmVyLWRpc2FibGVkIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZXtwYWRkaW5nLWxlZnQ6NXB4O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSl9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aS5zZWxlY3QyLWNvbnRhaW5lci1kaXNhYmxlZCAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtkaXNwbGF5Om5vbmU7YmFja2dyb3VuZDpub25lfQouc2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJsZSAuc2VsZWN0Mi1tYXRjaCwgLnNlbGVjdDItcmVzdWx0LXVuc2VsZWN0YWJsZSAuc2VsZWN0Mi1tYXRjaHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQouc2VsZWN0Mi1vZmZzY3JlZW4sIC5zZWxlY3QyLW9mZnNjcmVlbjpmb2N1c3tjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7bGVmdDowcHghaW1wb3J0YW50O3RvcDowcHghaW1wb3J0YW50fQouc2VsZWN0Mi1kaXNwbGF5LW5vbmV7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1tZWFzdXJlLXNjcm9sbGJhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwMDAwcHg7bGVmdDotMTAwMDBweDt3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b3ZlcmZsb3c6c2Nyb2xsfQouc2VsZWN0Mi1zZWFyY2ggaW5wdXQsIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UsIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgYWJicntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQWlJSGs5SWpBaUlIZHBaSFJvUFNJeU5EQWlJR2hsYVdkb2REMGlNVFl3SWlCMmFXVjNRbTk0UFNJd0xDQXdMQ0F5TkRBc0lERTJNQ0krQ2p4d1lYUm9JR1E5SWsweU1Td3pPQ0JNTkRjc016Z2dURE0wTERZd0lFd3lNU3d6T0NCNklFMDVNeXcxTkNCTU1UQTJMRE15SUV3eE1Ua3NOVFFnVERrekxEVTBJSG9pSUdacGJHdzlJaU13TURBd01EQWlJR1pwYkd3dGIzQmhZMmwwZVQwaU1DNHlOU0l2UGdvOGNHRjBhQ0JrUFNKTk1qSTFMRFV6SUV3eU1qa3NOVGNnVERJeE9TdzJOeUJNTWpJNUxEYzNJRXd5TWpVc09ERWdUREl4TlN3M01TQk1NakExTERneElFd3lNREVzTnpjZ1RESXhNU3cyTnlCTU1qQXhMRFUzSUV3eU1EVXNOVE1nVERJeE5TdzJNeUJNTWpJMUxEVXpJSG9pSUdacGJHdzlJaU13TURBd01EQWlJR1pwYkd3dGIzQmhZMmwwZVQwaU1DNHpOU0l2UGdvOGNHRjBhQ0JrUFNKTk1qSTFMRGtnVERJeU9Td3hNeUJNTWpFNUxESXpJRXd5TWprc016TWdUREl5TlN3ek55Qk1NakUxTERJM0lFd3lNRFVzTXpjZ1RESXdNU3d6TXlCTU1qRXhMREl6SUV3eU1ERXNNVE1nVERJd05TdzVJRXd5TVRVc01Ua2dUREl5TlN3NUlIb2lJR1pwYkd3OUlpTXdNREF3TURBaUlHWnBiR3d0YjNCaFkybDBlVDBpTUM0eU1TSXZQZ284Y0dGMGFDQmtQU0pOTVRrd0xERXdPQ0JETWpBd0xERXdPQ0F5TURnc01URTJJREl3T0N3eE1qWWdRekl3T0N3eE16QWdNakEzTERFek15QXlNRFVzTVRNMklFd3lNVGdzTVRRNUlFTXlNVGt1TXpZM0xERTFNQzR6TmpjZ01qRTVMak0yTnl3eE5USXVOak16SURJeE9Dd3hOVFFnUXpJeE5pNDJNek1zTVRVMUxqTTJOeUF5TVRRdU16WTNMREUxTlM0ek5qY2dNakV6TERFMU5DQk1NakF3TERFME1TQkRNVGszTERFME15QXhPVE11TlRRc01UUTBJREU1TUN3eE5EUWdRekU0TUN3eE5EUWdNVGN5TERFek5pQXhOeklzTVRJMklFTXhOeklzTVRFMklERTRNQ3d4TURnZ01Ua3dMREV3T0NCNklFMHhPVEFzTVRFMElFTXhPRE1zTVRFMElERTNPQ3d4TVRrZ01UYzRMREV5TmlCRE1UYzRMREV6TXlBeE9ETXNNVE00SURFNU1Dd3hNemdnUXpFNU55d3hNemdnTWpBeUxERXpNeUF5TURJc01USTJJRU15TURJc01URTVJREU1Tnl3eE1UUWdNVGt3TERFeE5DQjZJaUJtYVd4c1BTSWpNREF3TURBd0lpQm1hV3hzTFc5d1lXTnBkSGs5SWpBdU1qVWlMejRLUEM5emRtYytDZz09KSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0IWltcG9ydGFudDtiYWNrZ3JvdW5kLXNpemU6NjBweCA0MHB4IWltcG9ydGFudH0KLnVpLXNsaWRlcntib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTAwcHghaW1wb3J0YW50O2JhY2tncm91bmQ6d2hpdGU7Zm9udC1zaXplOjkwJTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9Ci51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6MC40ZW19Ci51aS1zbGlkZXItaGFuZGxle2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtiYWNrZ3JvdW5kOiNlM2U4ZWI7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjEuMWVtO3dpZHRoOjEuMWVtO291dGxpbmU6bm9uZSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2N1cnNvcjpkZWZhdWx0fQoudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlcntiYWNrZ3JvdW5kOiNjYmU3ZmU7Ym9yZGVyOjFweCBzb2xpZCAjOWVjZGY4fQoudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2ZvbnQtc2l6ZTouN2VtO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZXt0b3A6LTAuNGVtO21hcmdpbi1sZWZ0Oi0wLjU1ZW19Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW57bGVmdDowfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7cmlnaHQ6MH0KLnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouNGVtO2hlaWdodDoxMDBweH0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZXtsZWZ0Oi0wLjRlbTttYXJnaW4tbGVmdDowO21hcmdpbi1ib3R0b206LTAuNTVlbX0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdle2xlZnQ6MDt3aWR0aDoxMDAlfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3RvcDowfQppbnB1dFt0eXBlPSJyYW5nZSJdIHtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLXJhZGl1czoxMDBweDtiYWNrZ3JvdW5kOndoaXRlO2ZvbnQtc2l6ZTo5MCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjAuNGVtfQppbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MDttYXJnaW4tbGVmdDowO3otaW5kZXg6MTtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7YmFja2dyb3VuZDojZTNlOGViO2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDoxLjFlbTt3aWR0aDoxLjFlbX0KaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6aG92ZXJ7YmFja2dyb3VuZDojYjdkYmZiO2JvcmRlcjoxcHggc29saWQgI2I3ZGJmYn0KLnVpLXdpZGdldHtmb250LXNpemU6OTAlfQpib2R5ID4gLnVpLWF1dG9jb21wbGV0ZXtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjNlbX0KLnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOndoaXRlO2NvbG9yOiM0ZDVhNmF9Ci51aS1zdGF0ZS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2JlN2ZlfQoudWktc3RhdGUtaGlnaGxpZ2h0e2JveC1zaGFkb3c6MCAwIDAgMXB4ICNkMGQ2ZGQgaW5zZXR9Ci51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NzApfQoudWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Ci51aS1zdGF0ZS1mb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNjYmU3ZmV9Ci51aS1hdXRvY29tcGxldGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2N1cnNvcjpkZWZhdWx0O2JvcmRlci1jb2xvcjojOWVjZGY4O2JvcmRlci10b3A6bm9uZTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7ei1pbmRleDo5OTk5fQoudWktbWVudXtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2Rpc3BsYXk6YmxvY2s7b3V0bGluZTpub25lfQoudWktbWVudSAudWktbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0KLnVpLW1lbnUgLnVpLW1lbnUtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nOjNweCAxZW0gM3B4IC40ZW07Y3Vyc29yOnBvaW50ZXI7bWluLWhlaWdodDowO2xpc3Qtc3R5bGUtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciKX0KLnVpLXRvb2x0aXB7cGFkZGluZzo4cHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5O21heC13aWR0aDozMDBweDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjYWFhO2JveC1zaGFkb3c6MCAwIDVweCAjYWFhfQoudWktdG9vbHRpcHtwYWRkaW5nOjhweCAxMnB4IDlweCAxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NTk5OTk7bWF4LXdpZHRoOjI1MHB4O21pbi13aWR0aDoyMDBweDtib3gtc2hhZG93OjJweCAycHggMHB4IHJnYmEoMjgsIDMyLCAzOCwgMC4wOCk7Ym9yZGVyOjFweCBzb2xpZCAjZDBkNmRkO2JhY2tncm91bmQtY29sb3I6d2hpdGU7Zm9udC1zaXplOjkwJTtsaW5lLWhlaWdodDoxLjNlbTtjb2xvcjojNmI5ZmRiO2hlaWdodDphdXRvfQoudWktdG9vbHRpcDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi03cHg7dG9wOjEwcHg7d2lkdGg6MTFweDtoZWlnaHQ6MTFweDtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6d2hpdGU7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1tcy10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstby10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt6LWluZGV4OjU5OTk4fQouQ29kZU1pcnJvcntmb250OjEzcHggQ291c2luZSwgdWktbW9ub3NwYWNlLCBNb25hY28sIE1lcmxvLCBtb25vc3BhY2U7aGVpZ2h0OmF1dG99Ci5Db2RlTWlycm9yLXNjcm9sbHtvdmVyZmxvdzphdXRvfQouQ29kZU1pcnJvci1saW5lc3twYWRkaW5nOjRweCAwfQouQ29kZU1pcnJvciBwcmV7cGFkZGluZzowIDRweH0KLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlciwgLkNvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlcntiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfQouQ29kZU1pcnJvci1ndXR0ZXJze2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7d2hpdGUtc3BhY2U6bm93cmFwfQouQ29kZU1pcnJvci1saW5lbnVtYmVye3BhZGRpbmc6MCAzcHggMCA1cHg7bWluLXdpZHRoOjIwcHg7dGV4dC1hbGlnbjpyaWdodDtjb2xvcjojOTk5O3doaXRlLXNwYWNlOm5vd3JhcH0KLkNvZGVNaXJyb3IgZGl2LkNvZGVNaXJyb3ItY3Vyc29ye2JvcmRlci1sZWZ0OjFweCBzb2xpZCBibGFjazt6LWluZGV4OjN9Ci5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLXNlY29uZGFyeWN1cnNvcntib3JkZXItbGVmdDoxcHggc29saWQgc2lsdmVyfQouQ29kZU1pcnJvci5jbS1rZXltYXAtZmF0LWN1cnNvciBkaXYuQ29kZU1pcnJvci1jdXJzb3J7d2lkdGg6YXV0bztib3JkZXI6MDtiYWNrZ3JvdW5kOiM3ZTc7ei1pbmRleDoxfQouY20tdGFie2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouY20tcy1kZWZhdWx0IC5jbS1rZXl3b3Jke2NvbG9yOiM2MTM0OTR9Ci5jbS1zLWRlZmF1bHQgLmNtLWF0b217Y29sb3I6I2ZmODAwMX0KLmNtLXMtZGVmYXVsdCAuY20tbnVtYmVye2NvbG9yOiM2NTljMTN9Ci5jbS1zLWRlZmF1bHQgLmNtLWRlZntjb2xvcjojYzMwYzNifQouY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZXtjb2xvcjojMzNiZmFkfQouY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0ye2NvbG9yOiMwMDU1YWF9Ci5jbS1zLWRlZmF1bHQgLmNtLXZhcmlhYmxlLTN7Y29sb3I6IzAwODg1NX0KLmNtLXMtZGVmYXVsdCAuY20tcHJvcGVydHl7Y29sb3I6IzQzNGU1ZH0KLmNtLXMtZGVmYXVsdCAuY20tb3BlcmF0b3J7Y29sb3I6IzM2MzYzNn0KLmNtLXMtZGVmYXVsdCAuY20tY29tbWVudHtjb2xvcjojNGFhYTAwfQouY20tcy1kZWZhdWx0IC5jbS1zdHJpbmd7Y29sb3I6IzQwNjNiMH0KLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nLTJ7Y29sb3I6I2ZmNTUwMH0KLmNtLXMtZGVmYXVsdCAuY20tbWV0YXtjb2xvcjojNTU1NTU1fQouY20tcy1kZWZhdWx0IC5jbS1xdWFsaWZpZXJ7Y29sb3I6IzU1NTU1NX0KLmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbntjb2xvcjojMzMwMGFhfQouY20tcy1kZWZhdWx0IC5jbS1icmFja2V0e2NvbG9yOiM5OTk5Nzd9Ci5jbS1zLWRlZmF1bHQgLmNtLXRhZ3tjb2xvcjojNWY5MTFlfQouY20tcy1kZWZhdWx0IC5jbS1hdHRyaWJ1dGV7Y29sb3I6I2Q5Mjc2OH0KLmNtLXMtZGVmYXVsdCAuY20taGVhZGVye2NvbG9yOiNiNjAwMDB9Ci5jbS1zLWRlZmF1bHQgLmNtLXF1b3Rle2NvbG9yOiNmODM0Yzh9Ci5jbS1zLWRlZmF1bHQgLmNtLWhye2NvbG9yOiM5OTk5OTl9Ci5jbS1zLWRlZmF1bHQgLmNtLWxpbmt7Y29sb3I6IzU0ODFhMH0KLmNtLW5lZ2F0aXZle2NvbG9yOiNkZDQ0NDR9Ci5jbS1wb3NpdGl2ZXtjb2xvcjojMjI5OTIyfQouY20taGVhZGVyLCAuY20tc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGR9Ci5jbS1lbXtmb250LXN0eWxlOml0YWxpY30KLmNtLWxpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0KLmNtLXN0cmlrZXRocm91Z2h7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0KLmNtLXMtZGVmYXVsdCAuY20tZXJyb3J7Y29sb3I6I2Q2MmM0OX0KLmNtLWludmFsaWRjaGFye2NvbG9yOiNmZjAwMDB9CmRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXR7Y29sb3I6IzAwZmYwMH0KZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldHtjb2xvcjojZmYyMjIyfQouQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmR7YmFja2dyb3VuZDojZThmMmZmfQouQ29kZU1pcnJvcntsaW5lLWhlaWdodDoxLjMyZW07cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6d2hpdGU7Y29sb3I6IzMzM30KLkNvZGVNaXJyb3Itc2Nyb2xse21hcmdpbi1ib3R0b206LTMwcHg7bWFyZ2luLXJpZ2h0Oi0zMHB4O3BhZGRpbmctYm90dG9tOjMwcHg7cGFkZGluZy1yaWdodDozMHB4O2hlaWdodDoxMDAlO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveH0KLkNvZGVNaXJyb3Itc2l6ZXJ7cG9zaXRpb246cmVsYXRpdmV9Ci5Db2RlTWlycm9yLXZzY3JvbGxiYXIsIC5Db2RlTWlycm9yLWhzY3JvbGxiYXIsIC5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIsIC5Db2RlTWlycm9yLWd1dHRlci1maWxsZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo2O2Rpc3BsYXk6bm9uZX0KLkNvZGVNaXJyb3ItdnNjcm9sbGJhcntyaWdodDowO3RvcDowO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6c2Nyb2xsfQouQ29kZU1pcnJvci1oc2Nyb2xsYmFye2JvdHRvbTowO2xlZnQ6MDtvdmVyZmxvdy15OmhpZGRlbjtvdmVyZmxvdy14OnNjcm9sbH0KLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlcntyaWdodDowO2JvdHRvbTowfQouQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVye2xlZnQ6MDtib3R0b206MH0KLkNvZGVNaXJyb3ItZ3V0dGVyc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cGFkZGluZy1ib3R0b206MzBweDt6LWluZGV4OjN9Ci5Db2RlTWlycm9yLWd1dHRlcnt3aGl0ZS1zcGFjZTpub3JtYWw7aGVpZ2h0OjEwMCU7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7cGFkZGluZy1ib3R0b206MzBweDttYXJnaW4tYm90dG9tOi0zMnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrOyp6b29tOjE7KmRpc3BsYXk6aW5saW5lfQouQ29kZU1pcnJvci1ndXR0ZXItZWx0e3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpkZWZhdWx0O3otaW5kZXg6NH0KLkNvZGVNaXJyb3ItbGluZXN7Y3Vyc29yOnRleHQ7bGluZS1oZWlnaHQ6MS4zZW19Ci5Db2RlTWlycm9yIHByZXstbW96LWJvcmRlci1yYWRpdXM6MDstd2Via2l0LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXdpZHRoOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O21hcmdpbjowO3doaXRlLXNwYWNlOnByZTt3b3JkLXdyYXA6bm9ybWFsO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDt6LWluZGV4OjI7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZX0KLkNvZGVNaXJyb3Itd3JhcCBwcmV7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpub3JtYWx9Ci5Db2RlTWlycm9yLWNvZGUgcHJle2JvcmRlci1yaWdodDozMHB4IHNvbGlkIHRyYW5zcGFyZW50O3dpZHRoOi13ZWJraXQtZml0LWNvbnRlbnQ7d2lkdGg6LW1vei1maXQtY29udGVudDt3aWR0aDpmaXQtY29udGVudH0KLkNvZGVNaXJyb3Itd3JhcCAuQ29kZU1pcnJvci1jb2RlIHByZXtib3JkZXItcmlnaHQ6bm9uZTt3aWR0aDphdXRvfQouQ29kZU1pcnJvci1saW5lYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDt6LWluZGV4OjB9Ci5Db2RlTWlycm9yLWxpbmV3aWRnZXR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO292ZXJmbG93OmF1dG99Ci5Db2RlTWlycm9yLXdyYXAgLkNvZGVNaXJyb3Itc2Nyb2xse292ZXJmbG93LXg6aGlkZGVufQouQ29kZU1pcnJvci1tZWFzdXJle3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3Zpc2liaWxpdHk6aGlkZGVufQouQ29kZU1pcnJvci1tZWFzdXJlIHByZXtwb3NpdGlvbjpzdGF0aWN9Ci5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLWN1cnNvcntwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItcmlnaHQ6bm9uZTt3aWR0aDowfQouQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWlycm9yLWN1cnNvcnt2aXNpYmlsaXR5OnZpc2libGV9Ci5Db2RlTWlycm9yLXNlbGVjdGVke2JhY2tncm91bmQ6I2Q5ZDlkOX0KLkNvZGVNaXJyb3ItZm9jdXNlZCAuQ29kZU1pcnJvci1zZWxlY3RlZHtiYWNrZ3JvdW5kOiNkN2Q0ZjB9Ci5jbS1zZWFyY2hpbmd7YmFja2dyb3VuZDojZmZhO2JhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMCwgMC40KX0KQG1lZGlhIHByaW50ey5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLWN1cnNvcnt2aXNpYmlsaXR5OmhpZGRlbn19Ci5qY3JvcC1ob2xkZXJ7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9Ci5qY3JvcC12bGluZSwgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6I2ZmZmZmZjtmb250LXNpemU6MDtwb3NpdGlvbjphYnNvbHV0ZX0KLmpjcm9wLXZsaW5le2hlaWdodDoxMDAlO3dpZHRoOjFweCFpbXBvcnRhbnR9Ci5qY3JvcC12bGluZS5yaWdodHtyaWdodDowfQouamNyb3AtaGxpbmV7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7d2lkdGg6MTAwJX0KLmpjcm9wLWhsaW5lLmJvdHRvbXtib3R0b206MH0KLmpjcm9wLXRyYWNrZXJ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfQouamNyb3AtaGFuZGxle2JhY2tncm91bmQtY29sb3I6IzM4NDE0Yztib3JkZXI6MXB4ICNlM2U4ZWIgc29saWQ7Zm9udC1zaXplOjFweDtoZWlnaHQ6N3B4O3dpZHRoOjdweH0KLmpjcm9wLWhhbmRsZS5vcmQtbntsZWZ0OjUwJTttYXJnaW4tbGVmdDotNHB4O21hcmdpbi10b3A6LTRweDt0b3A6MH0KLmpjcm9wLWhhbmRsZS5vcmQtc3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tYm90dG9tOi00cHg7bWFyZ2luLWxlZnQ6LTRweH0KLmpjcm9wLWhhbmRsZS5vcmQtZXttYXJnaW4tcmlnaHQ6LTRweDttYXJnaW4tdG9wOi00cHg7cmlnaHQ6MDt0b3A6NTAlfQouamNyb3AtaGFuZGxlLm9yZC13e2xlZnQ6MDttYXJnaW4tbGVmdDotNHB4O21hcmdpbi10b3A6LTRweDt0b3A6NTAlfQouamNyb3AtaGFuZGxlLm9yZC1ud3tsZWZ0OjA7bWFyZ2luLWxlZnQ6LTRweDttYXJnaW4tdG9wOi00cHg7dG9wOjB9Ci5qY3JvcC1oYW5kbGUub3JkLW5le21hcmdpbi1yaWdodDotNHB4O21hcmdpbi10b3A6LTRweDtyaWdodDowO3RvcDowfQouamNyb3AtaGFuZGxlLm9yZC1zZXtib3R0b206MDttYXJnaW4tYm90dG9tOi00cHg7bWFyZ2luLXJpZ2h0Oi00cHg7cmlnaHQ6MH0KLmpjcm9wLWhhbmRsZS5vcmQtc3d7Ym90dG9tOjA7bGVmdDowO21hcmdpbi1ib3R0b206LTRweDttYXJnaW4tbGVmdDotNHB4fQouamNyb3AtZHJhZ2Jhci5vcmQtbiwgLmpjcm9wLWRyYWdiYXIub3JkLXN7aGVpZ2h0OjdweDt3aWR0aDoxMDAlfQouamNyb3AtZHJhZ2Jhci5vcmQtZSwgLmpjcm9wLWRyYWdiYXIub3JkLXd7aGVpZ2h0OjEwMCU7d2lkdGg6N3B4fQouamNyb3AtZHJhZ2Jhci5vcmQtbnttYXJnaW4tdG9wOi00cHh9Ci5qY3JvcC1kcmFnYmFyLm9yZC1ze2JvdHRvbTowO21hcmdpbi1ib3R0b206LTRweH0KLmpjcm9wLWRyYWdiYXIub3JkLWV7bWFyZ2luLXJpZ2h0Oi00cHg7cmlnaHQ6MH0KLmpjcm9wLWRyYWdiYXIub3JkLXd7bWFyZ2luLWxlZnQ6LTRweH0KLmpjcm9wLWxpZ2h0IC5qY3JvcC12bGluZSwgLmpjcm9wLWxpZ2h0IC5qY3JvcC1obGluZXtiYWNrZ3JvdW5kOiNmZmZmZmY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NzApIWltcG9ydGFudDtvcGFjaXR5Oi43MCFpbXBvcnRhbnR9Ci5qY3JvcC1saWdodCAuamNyb3AtaGFuZGxley1tb3otYm9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyLWNvbG9yOiNGRkY7Ym9yZGVyLXJhZGl1czozcHh9Ci5qY3JvcC1kYXJrIC5qY3JvcC12bGluZSwgLmpjcm9wLWRhcmsgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6IzAwMDtmaWx0ZXI6YWxwaGEob3BhY2l0eT03MCkhaW1wb3J0YW50O29wYWNpdHk6LjchaW1wb3J0YW50fQouamNyb3AtZGFyayAuamNyb3AtaGFuZGxley1tb3otYm9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWNvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czozcHh9Ci5zb2xpZC1saW5lIC5qY3JvcC12bGluZSwgLnNvbGlkLWxpbmUgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6I0ZGRn0KLmpjcm9wLWhvbGRlciBpbWcsIGltZy5qY3JvcC1wcmV2aWV3e21heC13aWR0aDpub25lfQouamNyb3AtaG9sZGVyIGRpdntwb3NpdGlvbjpzdGF0aWN9Ci5qc29uZGlmZnBhdGNoLWRlbHRhe2ZvbnQtZmFtaWx5OkNvdXNpbmUsIHVpLW1vbm9zcGFjZSwgTW9uYWNvLCBNZXJsbywgbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07bWFyZ2luOjA7cGFkZGluZzowIDAgMCAxMnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouanNvbmRpZmZwYXRjaC1kZWx0YSBwcmV7Zm9udC1mYW1pbHk6Q291c2luZSwgdWktbW9ub3NwYWNlLCBNb25hY28sIE1lcmxvLCBtb25vc3BhY2U7Zm9udC1zaXplOjEycHg7bWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQp1bC5qc29uZGlmZnBhdGNoLWRlbHRhe2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MCAwIDAgMjBweDttYXJnaW46MH0KLmpzb25kaWZmcGF0Y2gtZGVsdGEgdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7cGFkZGluZzowIDAgMCAyMHB4O21hcmdpbjowfQouanNvbmRpZmZwYXRjaC1hZGRlZCAuanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lLCAuanNvbmRpZmZwYXRjaC1hZGRlZCAuanNvbmRpZmZwYXRjaC12YWx1ZSBwcmUsIC5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLXJpZ2h0LXZhbHVlIHByZSwgLmpzb25kaWZmcGF0Y2gtdGV4dGRpZmYtYWRkZWR7YmFja2dyb3VuZDojZTBmNWM2O292ZXJmbG93LXdyYXA6YW55d2hlcmV9Ci5qc29uZGlmZnBhdGNoLWRlbGV0ZWQgLmpzb25kaWZmcGF0Y2gtcHJvcGVydHktbmFtZSwgLmpzb25kaWZmcGF0Y2gtZGVsZXRlZCBwcmUsIC5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLWxlZnQtdmFsdWUgcHJlLCAuanNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1kZWxldGVke2JhY2tncm91bmQ6I2ZlZDNkMzt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoO292ZXJmbG93LXdyYXA6YW55d2hlcmV9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9ue2NvbG9yOiM2Yjc2ODU7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXt0cmFuc2l0aW9uOmFsbCAwLjNzOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zcztvdmVyZmxvdy15OmhpZGRlbn0KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLXNob3dpbmcgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtc2hvd2luZyAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjEwMHB4fQouanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkZGVuIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLWhpZGRlbiAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjB9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1oaWRpbmcgLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9uID4gLmpzb25kaWZmcGF0Y2gtdmFsdWUsIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1oaWRkZW4gLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9uID4gLmpzb25kaWZmcGF0Y2gtdmFsdWV7ZGlzcGxheTpibG9ja30KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLXZpc2libGUgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtdmlzaWJsZSAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjEwMHB4fQouanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkaW5nIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLWhpZGluZyAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjB9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1zaG93aW5nIC5qc29uZGlmZnBhdGNoLWFycm93LCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkaW5nIC5qc29uZGlmZnBhdGNoLWFycm93e2Rpc3BsYXk6bm9uZX0KLmpzb25kaWZmcGF0Y2gtdmFsdWV7ZGlzcGxheTppbmxpbmUtYmxvY2t9Ci5qc29uZGlmZnBhdGNoLXByb3BlcnR5LW5hbWV7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1yaWdodDo1cHg7dmVydGljYWwtYWxpZ246dG9wfQouanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lOmFmdGVye2NvbnRlbnQ6JzonfQouanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtYXJyYXkgPiAuanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lOmFmdGVye2NvbnRlbnQ6JzpbJ30KLmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmFmdGVye2NvbnRlbnQ6J10sJ30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmJlZm9yZXtjb250ZW50OidbJ30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmFmdGVye2NvbnRlbnQ6J10nfQouanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtb2JqZWN0ID4gLmpzb25kaWZmcGF0Y2gtcHJvcGVydHktbmFtZTphZnRlcntjb250ZW50Oic6eyd9Ci5qc29uZGlmZnBhdGNoLWNoaWxkLW5vZGUtdHlwZS1vYmplY3Q6YWZ0ZXJ7Y29udGVudDonfSwnfQpkaXYuanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtb2JqZWN0OmJlZm9yZXtjb250ZW50Oid7J30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLW9iamVjdDphZnRlcntjb250ZW50Oid9J30KLmpzb25kaWZmcGF0Y2gtdmFsdWUgcHJlOmFmdGVye2NvbnRlbnQ6JywnfQpsaTpsYXN0LWNoaWxkID4gLmpzb25kaWZmcGF0Y2gtdmFsdWUgcHJlOmFmdGVyLCAuanNvbmRpZmZwYXRjaC1tb2RpZmllZCA+IC5qc29uZGlmZnBhdGNoLWxlZnQtdmFsdWUgcHJlOmFmdGVye2NvbnRlbnQ6Jyd9Ci5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLXZhbHVle2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouanNvbmRpZmZwYXRjaC1tb2RpZmllZCAuanNvbmRpZmZwYXRjaC1yaWdodC12YWx1ZXttYXJnaW4tbGVmdDo1cHh9Ci5qc29uZGlmZnBhdGNoLW1vdmVkIC5qc29uZGlmZnBhdGNoLXZhbHVle2Rpc3BsYXk6bm9uZX0KLmpzb25kaWZmcGF0Y2gtbW92ZWQgLmpzb25kaWZmcGF0Y2gtbW92ZWQtZGVzdGluYXRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZlZjkxO2NvbG9yOiM0ZDVhNmF9Ci5qc29uZGlmZnBhdGNoLW1vdmVkIC5qc29uZGlmZnBhdGNoLW1vdmVkLWRlc3RpbmF0aW9uOmJlZm9yZXtjb250ZW50OicgPT4gJ30KdWwuanNvbmRpZmZwYXRjaC10ZXh0ZGlmZntwYWRkaW5nOjB9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxvY2F0aW9ue2NvbG9yOiM4ODkyOWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjYwcHh9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxpbmV7ZGlzcGxheTppbmxpbmUtYmxvY2t9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxpbmUtbnVtYmVyOmFmdGVye2NvbnRlbnQ6JywnfQouanNvbmRpZmZwYXRjaC1lcnJvcntiYWNrZ3JvdW5kOiNkNjJjNDk7Y29sb3I6d2hpdGU7Zm9udC13ZWlnaHQ6Ym9sZH0KQGZvbnQtZmFjZXtmb250LWZhbWlseToiZm91bmRhdGlvbi1pY29ucyI7c3JjOnVybCgiZm91bmRhdGlvbi1pY29ucy53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiZm91bmRhdGlvbi1pY29ucy50dGYiKSBmb3JtYXQoInRydWV0eXBlIik7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsfQouZmktYWRkcmVzcy1ib29rOmJlZm9yZSwgLmZpLWFsZXJ0OmJlZm9yZSwgLmZpLWFsaWduLWNlbnRlcjpiZWZvcmUsIC5maS1hbGlnbi1qdXN0aWZ5OmJlZm9yZSwgLmZpLWFsaWduLWxlZnQ6YmVmb3JlLCAuZmktYWxpZ24tcmlnaHQ6YmVmb3JlLCAuZmktYW5jaG9yOmJlZm9yZSwgLmZpLWFubm90YXRlOmJlZm9yZSwgLmZpLWFyY2hpdmU6YmVmb3JlLCAuZmktYXJyb3ctZG93bjpiZWZvcmUsIC5maS1hcnJvdy1sZWZ0OmJlZm9yZSwgLmZpLWFycm93LXJpZ2h0OmJlZm9yZSwgLmZpLWFycm93LXVwOmJlZm9yZSwgLmZpLWFycm93cy1jb21wcmVzczpiZWZvcmUsIC5maS1hcnJvd3MtZXhwYW5kOmJlZm9yZSwgLmZpLWFycm93cy1pbjpiZWZvcmUsIC5maS1hcnJvd3Mtb3V0OmJlZm9yZSwgLmZpLWFzbDpiZWZvcmUsIC5maS1hc3RlcmlzazpiZWZvcmUsIC5maS1hdC1zaWduOmJlZm9yZSwgLmZpLWJhY2tncm91bmQtY29sb3I6YmVmb3JlLCAuZmktYmF0dGVyeS1lbXB0eTpiZWZvcmUsIC5maS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlLCAuZmktYmF0dGVyeS1oYWxmOmJlZm9yZSwgLmZpLWJpdGNvaW4tY2lyY2xlOmJlZm9yZSwgLmZpLWJpdGNvaW46YmVmb3JlLCAuZmktYmxpbmQ6YmVmb3JlLCAuZmktYmx1ZXRvb3RoOmJlZm9yZSwgLmZpLWJvbGQ6YmVmb3JlLCAuZmktYm9vay1ib29rbWFyazpiZWZvcmUsIC5maS1ib29rOmJlZm9yZSwgLmZpLWJvb2ttYXJrOmJlZm9yZSwgLmZpLWJyYWlsbGU6YmVmb3JlLCAuZmktYnVyc3QtbmV3OmJlZm9yZSwgLmZpLWJ1cnN0LXNhbGU6YmVmb3JlLCAuZmktYnVyc3Q6YmVmb3JlLCAuZmktY2FsZW5kYXI6YmVmb3JlLCAuZmktY2FtZXJhOmJlZm9yZSwgLmZpLWNoZWNrOmJlZm9yZSwgLmZpLWNoZWNrYm94OmJlZm9yZSwgLmZpLWNsaXBib2FyZC1ub3RlczpiZWZvcmUsIC5maS1jbGlwYm9hcmQtcGVuY2lsOmJlZm9yZSwgLmZpLWNsaXBib2FyZDpiZWZvcmUsIC5maS1jbG9jazpiZWZvcmUsIC5maS1jbG9zZWQtY2FwdGlvbjpiZWZvcmUsIC5maS1jbG91ZDpiZWZvcmUsIC5maS1jb21tZW50LW1pbnVzOmJlZm9yZSwgLmZpLWNvbW1lbnQtcXVvdGVzOmJlZm9yZSwgLmZpLWNvbW1lbnQtdmlkZW86YmVmb3JlLCAuZmktY29tbWVudDpiZWZvcmUsIC5maS1jb21tZW50czpiZWZvcmUsIC5maS1jb21wYXNzOmJlZm9yZSwgLmZpLWNvbnRyYXN0OmJlZm9yZSwgLmZpLWNyZWRpdC1jYXJkOmJlZm9yZSwgLmZpLWNyb3A6YmVmb3JlLCAuZmktY3Jvd246YmVmb3JlLCAuZmktY3NzMzpiZWZvcmUsIC5maS1kYXRhYmFzZTpiZWZvcmUsIC5maS1kaWUtZml2ZTpiZWZvcmUsIC5maS1kaWUtZm91cjpiZWZvcmUsIC5maS1kaWUtb25lOmJlZm9yZSwgLmZpLWRpZS1zaXg6YmVmb3JlLCAuZmktZGllLXRocmVlOmJlZm9yZSwgLmZpLWRpZS10d286YmVmb3JlLCAuZmktZGlzbGlrZTpiZWZvcmUsIC5maS1kb2xsYXItYmlsbDpiZWZvcmUsIC5maS1kb2xsYXI6YmVmb3JlLCAuZmktZG93bmxvYWQ6YmVmb3JlLCAuZmktZWplY3Q6YmVmb3JlLCAuZmktZWxldmF0b3I6YmVmb3JlLCAuZmktZXVybzpiZWZvcmUsIC5maS1leWU6YmVmb3JlLCAuZmktZmFzdC1mb3J3YXJkOmJlZm9yZSwgLmZpLWZlbWFsZS1zeW1ib2w6YmVmb3JlLCAuZmktZmVtYWxlOmJlZm9yZSwgLmZpLWZpbHRlcjpiZWZvcmUsIC5maS1maXJzdC1haWQ6YmVmb3JlLCAuZmktZmxhZzpiZWZvcmUsIC5maS1mb2xkZXItYWRkOmJlZm9yZSwgLmZpLWZvbGRlci1sb2NrOmJlZm9yZSwgLmZpLWZvbGRlcjpiZWZvcmUsIC5maS1mb290OmJlZm9yZSwgLmZpLWZvdW5kYXRpb246YmVmb3JlLCAuZmktZ3JhcGgtYmFyOmJlZm9yZSwgLmZpLWdyYXBoLWhvcml6b250YWw6YmVmb3JlLCAuZmktZ3JhcGgtcGllOmJlZm9yZSwgLmZpLWdyYXBoLXRyZW5kOmJlZm9yZSwgLmZpLWd1aWRlLWRvZzpiZWZvcmUsIC5maS1oZWFyaW5nLWFpZDpiZWZvcmUsIC5maS1oZWFydDpiZWZvcmUsIC5maS1ob21lOmJlZm9yZSwgLmZpLWh0bWw1OmJlZm9yZSwgLmZpLWluZGVudC1sZXNzOmJlZm9yZSwgLmZpLWluZGVudC1tb3JlOmJlZm9yZSwgLmZpLWluZm86YmVmb3JlLCAuZmktaXRhbGljOmJlZm9yZSwgLmZpLWtleTpiZWZvcmUsIC5maS1sYXB0b3A6YmVmb3JlLCAuZmktbGF5b3V0OmJlZm9yZSwgLmZpLWxpZ2h0YnVsYjpiZWZvcmUsIC5maS1saWtlOmJlZm9yZSwgLmZpLWxpbms6YmVmb3JlLCAuZmktbGlzdC1idWxsZXQ6YmVmb3JlLCAuZmktbGlzdC1udW1iZXI6YmVmb3JlLCAuZmktbGlzdC10aHVtYm5haWxzOmJlZm9yZSwgLmZpLWxpc3Q6YmVmb3JlLCAuZmktbG9jazpiZWZvcmUsIC5maS1sb29wOmJlZm9yZSwgLmZpLW1hZ25pZnlpbmctZ2xhc3M6YmVmb3JlLCAuZmktbWFpbDpiZWZvcmUsIC5maS1tYWxlLWZlbWFsZTpiZWZvcmUsIC5maS1tYWxlLXN5bWJvbDpiZWZvcmUsIC5maS1tYWxlOmJlZm9yZSwgLmZpLW1hcDpiZWZvcmUsIC5maS1tYXJrZXI6YmVmb3JlLCAuZmktbWVnYXBob25lOmJlZm9yZSwgLmZpLW1pY3JvcGhvbmU6YmVmb3JlLCAuZmktbWludXMtY2lyY2xlOmJlZm9yZSwgLmZpLW1pbnVzOmJlZm9yZSwgLmZpLW1vYmlsZS1zaWduYWw6YmVmb3JlLCAuZmktbW9iaWxlOmJlZm9yZSwgLmZpLW1vbml0b3I6YmVmb3JlLCAuZmktbW91bnRhaW5zOmJlZm9yZSwgLmZpLW11c2ljOmJlZm9yZSwgLmZpLW5leHQ6YmVmb3JlLCAuZmktbm8tZG9nczpiZWZvcmUsIC5maS1uby1zbW9raW5nOmJlZm9yZSwgLmZpLXBhZ2UtYWRkOmJlZm9yZSwgLmZpLXBhZ2UtY29weTpiZWZvcmUsIC5maS1wYWdlLWNzdjpiZWZvcmUsIC5maS1wYWdlLWRlbGV0ZTpiZWZvcmUsIC5maS1wYWdlLWRvYzpiZWZvcmUsIC5maS1wYWdlLWVkaXQ6YmVmb3JlLCAuZmktcGFnZS1leHBvcnQtY3N2OmJlZm9yZSwgLmZpLXBhZ2UtZXhwb3J0LWRvYzpiZWZvcmUsIC5maS1wYWdlLWV4cG9ydC1wZGY6YmVmb3JlLCAuZmktcGFnZS1leHBvcnQ6YmVmb3JlLCAuZmktcGFnZS1maWxsZWQ6YmVmb3JlLCAuZmktcGFnZS1tdWx0aXBsZTpiZWZvcmUsIC5maS1wYWdlLXBkZjpiZWZvcmUsIC5maS1wYWdlLXJlbW92ZTpiZWZvcmUsIC5maS1wYWdlLXNlYXJjaDpiZWZvcmUsIC5maS1wYWdlOmJlZm9yZSwgLmZpLXBhaW50LWJ1Y2tldDpiZWZvcmUsIC5maS1wYXBlcmNsaXA6YmVmb3JlLCAuZmktcGF1c2U6YmVmb3JlLCAuZmktcGF3OmJlZm9yZSwgLmZpLXBheXBhbDpiZWZvcmUsIC5maS1wZW5jaWw6YmVmb3JlLCAuZmktcGhvdG86YmVmb3JlLCAuZmktcGxheS1jaXJjbGU6YmVmb3JlLCAuZmktcGxheS12aWRlbzpiZWZvcmUsIC5maS1wbGF5OmJlZm9yZSwgLmZpLXBsdXM6YmVmb3JlLCAuZmktcG91bmQ6YmVmb3JlLCAuZmktcG93ZXI6YmVmb3JlLCAuZmktcHJldmlvdXM6YmVmb3JlLCAuZmktcHJpY2UtdGFnOmJlZm9yZSwgLmZpLXByaWNldGFnLW11bHRpcGxlOmJlZm9yZSwgLmZpLXByaW50OmJlZm9yZSwgLmZpLXByb2hpYml0ZWQ6YmVmb3JlLCAuZmktcHJvamVjdGlvbi1zY3JlZW46YmVmb3JlLCAuZmktcHV6emxlOmJlZm9yZSwgLmZpLXF1b3RlOmJlZm9yZSwgLmZpLXJlY29yZDpiZWZvcmUsIC5maS1yZWZyZXNoOmJlZm9yZSwgLmZpLXJlc3VsdHMtZGVtb2dyYXBoaWNzOmJlZm9yZSwgLmZpLXJlc3VsdHM6YmVmb3JlLCAuZmktcmV3aW5kLXRlbjpiZWZvcmUsIC5maS1yZXdpbmQ6YmVmb3JlLCAuZmktcnNzOmJlZm9yZSwgLmZpLXNhZmV0eS1jb25lOmJlZm9yZSwgLmZpLXNhdmU6YmVmb3JlLCAuZmktc2hhcmU6YmVmb3JlLCAuZmktc2hlcmlmZi1iYWRnZTpiZWZvcmUsIC5maS1zaGllbGQ6YmVmb3JlLCAuZmktc2hvcHBpbmctYmFnOmJlZm9yZSwgLmZpLXNob3BwaW5nLWNhcnQ6YmVmb3JlLCAuZmktc2h1ZmZsZTpiZWZvcmUsIC5maS1zb2NpYWwtYW5kcm9pZDpiZWZvcmUsIC5maS1zb2NpYWwtYXBwbGU6YmVmb3JlLCAuZmktc29jaWFsLWZhY2Vib29rOmJlZm9yZSwgLmZpLXNvY2lhbC1naXRodWI6YmVmb3JlLCAuZmktc29jaWFsLXNreXBlOmJlZm9yZSwgLmZpLXNvY2lhbC1zdGFjay1vdmVyZmxvdzpiZWZvcmUsIC5maS1zb2NpYWwtdHdpdHRlcjpiZWZvcmUsIC5maS1zb2NpYWwtd2luZG93czpiZWZvcmUsIC5maS1zb2NpYWwteW91dHViZTpiZWZvcmUsIC5maS1zb3VuZDpiZWZvcmUsIC5maS1zdGFyOmJlZm9yZSwgLmZpLXN0b3A6YmVmb3JlLCAuZmktc3RyaWtldGhyb3VnaDpiZWZvcmUsIC5maS1zdWJzY3JpcHQ6YmVmb3JlLCAuZmktc3VwZXJzY3JpcHQ6YmVmb3JlLCAuZmktdGFibGV0LWxhbmRzY2FwZTpiZWZvcmUsIC5maS10YWJsZXQtcG9ydHJhaXQ6YmVmb3JlLCAuZmktdGFyZ2V0LXR3bzpiZWZvcmUsIC5maS10YXJnZXQ6YmVmb3JlLCAuZmktdGVsZXBob25lLWFjY2Vzc2libGU6YmVmb3JlLCAuZmktdGVsZXBob25lOmJlZm9yZSwgLmZpLXRleHQtY29sb3I6YmVmb3JlLCAuZmktdGh1bWJuYWlsczpiZWZvcmUsIC5maS10aWNrZXQ6YmVmb3JlLCAuZmktdG9yc28tYnVzaW5lc3M6YmVmb3JlLCAuZmktdG9yc28tZmVtYWxlOmJlZm9yZSwgLmZpLXRvcnNvOmJlZm9yZSwgLmZpLXRvcnNvcy1hbGwtZmVtYWxlOmJlZm9yZSwgLmZpLXRvcnNvcy1hbGw6YmVmb3JlLCAuZmktdG9yc29zLWZlbWFsZS1tYWxlOmJlZm9yZSwgLmZpLXRvcnNvcy1tYWxlLWZlbWFsZTpiZWZvcmUsIC5maS10b3Jzb3M6YmVmb3JlLCAuZmktdHJhc2g6YmVmb3JlLCAuZmktdHJlZXM6YmVmb3JlLCAuZmktdHJvcGh5OmJlZm9yZSwgLmZpLXVuZGVybGluZTpiZWZvcmUsIC5maS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZSwgLmZpLXVubGluazpiZWZvcmUsIC5maS11bmxvY2s6YmVmb3JlLCAuZmktdXBsb2FkLWNsb3VkOmJlZm9yZSwgLmZpLXVwbG9hZDpiZWZvcmUsIC5maS11c2I6YmVmb3JlLCAuZmktdmlkZW86YmVmb3JlLCAuZmktdm9sdW1lLW5vbmU6YmVmb3JlLCAuZmktdm9sdW1lLXN0cmlrZTpiZWZvcmUsIC5maS12b2x1bWU6YmVmb3JlLCAuZmktd2ViOmJlZm9yZSwgLmZpLXdoZWVsY2hhaXI6YmVmb3JlLCAuZmktd2lkZ2V0OmJlZm9yZSwgLmZpLXdyZW5jaDpiZWZvcmUsIC5maS14LWNpcmNsZTpiZWZvcmUsIC5maS14OmJlZm9yZSwgLmZpLXllbjpiZWZvcmUsIC5maS16b29tLWluOmJlZm9yZSwgLmZpLXpvb20tb3V0OmJlZm9yZXtmb250LWZhbWlseToiZm91bmRhdGlvbi1pY29ucyI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtsaW5lLWhlaWdodDoxOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9Ci5maS1hZGRyZXNzLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTAwIn0KLmZpLWFsZXJ0OmJlZm9yZXtjb250ZW50OiJcZjEwMSJ9Ci5maS1hbGlnbi1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0KLmZpLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMTAzIn0KLmZpLWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA0In0KLmZpLWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9Ci5maS1hbmNob3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0KLmZpLWFubm90YXRlOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9Ci5maS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjEwOCJ9Ci5maS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwOSJ9Ci5maS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9Ci5maS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGIifQouZmktYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTBjIn0KLmZpLWFycm93cy1jb21wcmVzczpiZWZvcmV7Y29udGVudDoiXGYxMGQifQouZmktYXJyb3dzLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGYxMGUifQouZmktYXJyb3dzLWluOmJlZm9yZXtjb250ZW50OiJcZjEwZiJ9Ci5maS1hcnJvd3Mtb3V0OmJlZm9yZXtjb250ZW50OiJcZjExMCJ9Ci5maS1hc2w6YmVmb3Jle2NvbnRlbnQ6IlxmMTExIn0KLmZpLWFzdGVyaXNrOmJlZm9yZXtjb250ZW50OiJcZjExMiJ9Ci5maS1hdC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjExMyJ9Ci5maS1iYWNrZ3JvdW5kLWNvbG9yOmJlZm9yZXtjb250ZW50OiJcZjExNCJ9Ci5maS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjExNSJ9Ci5maS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTE2In0KLmZpLWJhdHRlcnktaGFsZjpiZWZvcmV7Y29udGVudDoiXGYxMTcifQouZmktYml0Y29pbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0KLmZpLWJpdGNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0KLmZpLWJsaW5kOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9Ci5maS1ibHVldG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFiIn0KLmZpLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0KLmZpLWJvb2stYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMTFkIn0KLmZpLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0KLmZpLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjExZiJ9Ci5maS1icmFpbGxlOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9Ci5maS1idXJzdC1uZXc6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0KLmZpLWJ1cnN0LXNhbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0KLmZpLWJ1cnN0OmJlZm9yZXtjb250ZW50OiJcZjEyMyJ9Ci5maS1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDoiXGYxMjQifQouZmktY2FtZXJhOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9Ci5maS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYxMjYifQouZmktY2hlY2tib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0KLmZpLWNsaXBib2FyZC1ub3RlczpiZWZvcmV7Y29udGVudDoiXGYxMjgifQouZmktY2xpcGJvYXJkLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXGYxMjkifQouZmktY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9Ci5maS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYxMmIifQouZmktY2xvc2VkLWNhcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTJjIn0KLmZpLWNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9Ci5maS1jb21tZW50LW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjEyZSJ9Ci5maS1jb21tZW50LXF1b3RlczpiZWZvcmV7Y29udGVudDoiXGYxMmYifQouZmktY29tbWVudC12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxMzAifQouZmktY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYxMzEifQouZmktY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMTMyIn0KLmZpLWNvbXBhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0KLmZpLWNvbnRyYXN0OmJlZm9yZXtjb250ZW50OiJcZjEzNCJ9Ci5maS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYxMzUifQouZmktY3JvcDpiZWZvcmV7Y29udGVudDoiXGYxMzYifQouZmktY3Jvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTM3In0KLmZpLWNzczM6YmVmb3Jle2NvbnRlbnQ6IlxmMTM4In0KLmZpLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9Ci5maS1kaWUtZml2ZTpiZWZvcmV7Y29udGVudDoiXGYxM2EifQouZmktZGllLWZvdXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTNiIn0KLmZpLWRpZS1vbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTNjIn0KLmZpLWRpZS1zaXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTNkIn0KLmZpLWRpZS10aHJlZTpiZWZvcmV7Y29udGVudDoiXGYxM2UifQouZmktZGllLXR3bzpiZWZvcmV7Y29udGVudDoiXGYxM2YifQouZmktZGlzbGlrZTpiZWZvcmV7Y29udGVudDoiXGYxNDAifQouZmktZG9sbGFyLWJpbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0KLmZpLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGYxNDIifQouZmktZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0KLmZpLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9Ci5maS1lbGV2YXRvcjpiZWZvcmV7Y29udGVudDoiXGYxNDUifQouZmktZXVybzpiZWZvcmV7Y29udGVudDoiXGYxNDYifQouZmktZXllOmJlZm9yZXtjb250ZW50OiJcZjE0NyJ9Ci5maS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0KLmZpLWZlbWFsZS1zeW1ib2w6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0KLmZpLWZlbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifQouZmktZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjE0YiJ9Ci5maS1maXJzdC1haWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0KLmZpLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0KLmZpLWZvbGRlci1hZGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTRlIn0KLmZpLWZvbGRlci1sb2NrOmJlZm9yZXtjb250ZW50OiJcZjE0ZiJ9Ci5maS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0KLmZpLWZvb3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0KLmZpLWZvdW5kYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0KLmZpLWdyYXBoLWJhcjpiZWZvcmV7Y29udGVudDoiXGYxNTMifQouZmktZ3JhcGgtaG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGYxNTQifQouZmktZ3JhcGgtcGllOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9Ci5maS1ncmFwaC10cmVuZDpiZWZvcmV7Y29udGVudDoiXGYxNTYifQouZmktZ3VpZGUtZG9nOmJlZm9yZXtjb250ZW50OiJcZjE1NyJ9Ci5maS1oZWFyaW5nLWFpZDpiZWZvcmV7Y29udGVudDoiXGYxNTgifQouZmktaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTU5In0KLmZpLWhvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0KLmZpLWh0bWw1OmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9Ci5maS1pbmRlbnQtbGVzczpiZWZvcmV7Y29udGVudDoiXGYxNWMifQouZmktaW5kZW50LW1vcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0KLmZpLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxmMTVlIn0KLmZpLWl0YWxpYzpiZWZvcmV7Y29udGVudDoiXGYxNWYifQouZmkta2V5OmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9Ci5maS1sYXB0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTYxIn0KLmZpLWxheW91dDpiZWZvcmV7Y29udGVudDoiXGYxNjIifQouZmktbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9Ci5maS1saWtlOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9Ci5maS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9Ci5maS1saXN0LWJ1bGxldDpiZWZvcmV7Y29udGVudDoiXGYxNjYifQouZmktbGlzdC1udW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0KLmZpLWxpc3QtdGh1bWJuYWlsczpiZWZvcmV7Y29udGVudDoiXGYxNjgifQouZmktbGlzdDpiZWZvcmV7Y29udGVudDoiXGYxNjkifQouZmktbG9jazpiZWZvcmV7Y29udGVudDoiXGYxNmEifQouZmktbG9vcDpiZWZvcmV7Y29udGVudDoiXGYxNmIifQouZmktbWFnbmlmeWluZy1nbGFzczpiZWZvcmV7Y29udGVudDoiXGYxNmMifQouZmktbWFpbDpiZWZvcmV7Y29udGVudDoiXGYxNmQifQouZmktbWFsZS1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTZlIn0KLmZpLW1hbGUtc3ltYm9sOmJlZm9yZXtjb250ZW50OiJcZjE2ZiJ9Ci5maS1tYWxlOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9Ci5maS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTcxIn0KLmZpLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYxNzIifQouZmktbWVnYXBob25lOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9Ci5maS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjE3NCJ9Ci5maS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0KLmZpLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjE3NiJ9Ci5maS1tb2JpbGUtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjE3NyJ9Ci5maS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc4In0KLmZpLW1vbml0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0KLmZpLW1vdW50YWluczpiZWZvcmV7Y29udGVudDoiXGYxN2EifQouZmktbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMTdiIn0KLmZpLW5leHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0KLmZpLW5vLWRvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTdkIn0KLmZpLW5vLXNtb2tpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMTdlIn0KLmZpLXBhZ2UtYWRkOmJlZm9yZXtjb250ZW50OiJcZjE3ZiJ9Ci5maS1wYWdlLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTgwIn0KLmZpLXBhZ2UtY3N2OmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9Ci5maS1wYWdlLWRlbGV0ZTpiZWZvcmV7Y29udGVudDoiXGYxODIifQouZmktcGFnZS1kb2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTgzIn0KLmZpLXBhZ2UtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYxODQifQouZmktcGFnZS1leHBvcnQtY3N2OmJlZm9yZXtjb250ZW50OiJcZjE4NSJ9Ci5maS1wYWdlLWV4cG9ydC1kb2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTg2In0KLmZpLXBhZ2UtZXhwb3J0LXBkZjpiZWZvcmV7Y29udGVudDoiXGYxODcifQouZmktcGFnZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0KLmZpLXBhZ2UtZmlsbGVkOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9Ci5maS1wYWdlLW11bHRpcGxlOmJlZm9yZXtjb250ZW50OiJcZjE4YSJ9Ci5maS1wYWdlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxOGIifQouZmktcGFnZS1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMThjIn0KLmZpLXBhZ2Utc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9Ci5maS1wYWdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZSJ9Ci5maS1wYWludC1idWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMThmIn0KLmZpLXBhcGVyY2xpcDpiZWZvcmV7Y29udGVudDoiXGYxOTAifQouZmktcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0KLmZpLXBhdzpiZWZvcmV7Y29udGVudDoiXGYxOTIifQouZmktcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9Ci5maS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0KLmZpLXBob3RvOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9Ci5maS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTYifQouZmktcGxheS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxOTcifQouZmktcGxheTpiZWZvcmV7Y29udGVudDoiXGYxOTgifQouZmktcGx1czpiZWZvcmV7Y29udGVudDoiXGYxOTkifQouZmktcG91bmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0KLmZpLXBvd2VyOmJlZm9yZXtjb250ZW50OiJcZjE5YiJ9Ci5maS1wcmV2aW91czpiZWZvcmV7Y29udGVudDoiXGYxOWMifQouZmktcHJpY2UtdGFnOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9Ci5maS1wcmljZXRhZy1tdWx0aXBsZTpiZWZvcmV7Y29udGVudDoiXGYxOWUifQouZmktcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTlmIn0KLmZpLXByb2hpYml0ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0KLmZpLXByb2plY3Rpb24tc2NyZWVuOmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9Ci5maS1wdXp6bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEyIn0KLmZpLXF1b3RlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9Ci5maS1yZWNvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE0In0KLmZpLXJlZnJlc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0KLmZpLXJlc3VsdHMtZGVtb2dyYXBoaWNzOmJlZm9yZXtjb250ZW50OiJcZjFhNiJ9Ci5maS1yZXN1bHRzOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9Ci5maS1yZXdpbmQtdGVuOmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9Ci5maS1yZXdpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0KLmZpLXJzczpiZWZvcmV7Y29udGVudDoiXGYxYWEifQouZmktc2FmZXR5LWNvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0KLmZpLXNhdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWFjIn0KLmZpLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9Ci5maS1zaGVyaWZmLWJhZGdlOmJlZm9yZXtjb250ZW50OiJcZjFhZSJ9Ci5maS1zaGllbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWFmIn0KLmZpLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYxYjAifQouZmktc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDoiXGYxYjEifQouZmktc2h1ZmZsZTpiZWZvcmV7Y29udGVudDoiXGYxYjIifQouZmktc29jaWFsLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWI3In0KLmZpLXNvY2lhbC1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifQouZmktc29jaWFsLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9Ci5maS1zb2NpYWwtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjFjOSJ9Ci5maS1zb2NpYWwtcmRpbzpiZWZvcmV7Y29udGVudDoiXGYxZDcifQouZmktc29jaWFsLXJlZGRpdDpiZWZvcmV7Y29udGVudDoiXGYxZDgifQouZmktc29jaWFsLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjFkYSJ9Ci5maS1zb2NpYWwtc3RhY2stb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMWRmIn0KLmZpLXNvY2lhbC10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9Ci5maS1zb2NpYWwtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxZTYifQouZmktc29jaWFsLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0KLmZpLXNvdW5kOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9Ci5maS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9Ci5maS1zdG9wOmJlZm9yZXtjb250ZW50OiJcZjFlZiJ9Ci5maS1zdHJpa2V0aHJvdWdoOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9Ci5maS1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0KLmZpLXN1cGVyc2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjFmMiJ9Ci5maS10YWJsZXQtbGFuZHNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjFmMyJ9Ci5maS10YWJsZXQtcG9ydHJhaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWY0In0KLmZpLXRhcmdldC10d286YmVmb3Jle2NvbnRlbnQ6IlxmMWY1In0KLmZpLXRhcmdldDpiZWZvcmV7Y29udGVudDoiXGYxZjYifQouZmktdGVsZXBob25lLWFjY2Vzc2libGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWY3In0KLmZpLXRlbGVwaG9uZTpiZWZvcmV7Y29udGVudDoiXGYxZjgifQouZmktdGV4dC1jb2xvcjpiZWZvcmV7Y29udGVudDoiXGYxZjkifQouZmktdGh1bWJuYWlsczpiZWZvcmV7Y29udGVudDoiXGYxZmEifQouZmktdGlja2V0OmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9Ci5maS10b3Jzby1idXNpbmVzczpiZWZvcmV7Y29udGVudDoiXGYxZmMifQouZmktdG9yc28tZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9Ci5maS10b3JzbzpiZWZvcmV7Y29udGVudDoiXGYxZmUifQouZmktdG9yc29zLWFsbC1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWZmIn0KLmZpLXRvcnNvcy1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0KLmZpLXRvcnNvcy1mZW1hbGUtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifQouZmktdG9yc29zLW1hbGUtZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9Ci5maS10b3Jzb3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0KLmZpLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjIwNCJ9Ci5maS10cmVlczpiZWZvcmV7Y29udGVudDoiXGYyMDUifQouZmktdHJvcGh5OmJlZm9yZXtjb250ZW50OiJcZjIwNiJ9Ci5maS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0KLmZpLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjA4In0KLmZpLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYyMDkifQouZmktdW5sb2NrOmJlZm9yZXtjb250ZW50OiJcZjIwYSJ9Ci5maS11cGxvYWQtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjBiIn0KLmZpLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYyMGMifQouZmktdXNiOmJlZm9yZXtjb250ZW50OiJcZjIwZCJ9Ci5maS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYyMGUifQouZmktdm9sdW1lLW5vbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjBmIn0KLmZpLXZvbHVtZS1zdHJpa2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0KLmZpLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGYyMTEifQouZmktd2ViOmJlZm9yZXtjb250ZW50OiJcZjIxMiJ9Ci5maS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9Ci5maS13aWRnZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0KLmZpLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYyMTUifQouZmkteC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjE2In0KLmZpLXg6YmVmb3Jle2NvbnRlbnQ6IlxmMjE3In0KLmZpLXllbjpiZWZvcmV7Y29udGVudDoiXGYyMTgifQouZmktem9vbS1pbjpiZWZvcmV7Y29udGVudDoiXGYyMTkifQouZmktem9vbS1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFhIn0KI2N3LW5vdGVze3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MjBweDt0b3A6MjBweDt3aWR0aDoyOTBweDtwYWRkaW5nOjBweDt6LWluZGV4OjMwMDJ9CiNjdy1ub3RlcyA+IGRpdnttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXJhZGl1czozcHg7d2lkdGg6MjkwcHg7cGFkZGluZzoxNXB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgzNSwgNzksIDE0MywgMC45KTtib3gtc2hhZG93OjAgMCAwIDFweCB3aGl0ZTtjb2xvcjp3aGl0ZTtmb250LXNpemU6MTJwdDtsaW5lLWhlaWdodDoxNXB0O3dvcmQtd3JhcDpicmVhay13b3JkO292ZXJmbG93OmhpZGRlbn0KI2N3LW5vdGVzID4gZGl2LmVycm9ye2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzQsIDExNCwgMTM0LCAwLjkpfQojY3ctbm90ZXMgPiBkaXYud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC45KTtjb2xvcjpyZ2JhKDIwNCwgMTM0LCAxMywgMC45KX0KI2N3LW5vdGVzID4gZGl2Lm9re2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjQsIDI0NSwgMTk4LCAwLjkpO2NvbG9yOiM2NTljMTN9Ci5teS1lcnJvciBpbnB1dDpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKSwgLm15LWVycm9yIHRleHRhcmVhLCAubXktZXJyb3IgYnV0dG9ue2JvcmRlcjoxcHggc29saWQgI2ZjYzFjNztjb2xvcjojZDYyYzQ5fQoubXktZXJyb3IgaW5wdXQ6bm90KFt0eXBlPXJhZGlvXSk6bm90KFt0eXBlPWNoZWNrYm94XSk6Zm9jdXMsIC5teS1lcnJvciB0ZXh0YXJlYTpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICNlYTcyODZ9Ci5teS1lcnJvciAubGFiZWwsIC5teS1lcnJvciBsYWJlbCwgLm15LWVycm9ye2NvbG9yOiNlYTcyODYhaW1wb3J0YW50fQoubXktZXJyb3IgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7Ym9yZGVyOjFweCBzb2xpZCAjZmNjMWM3O2JhY2tncm91bmQtY29sb3I6I2ZlZDNkM30KLm15LWVycm9yIGlucHV0W3R5cGU9InJhbmdlIl06Zm9jdXMgOjotd2Via2l0LXNsaWRlci10aHVtYntib3JkZXI6MXB4IHNvbGlkICNlYTcyODY7YmFja2dyb3VuZC1jb2xvcjojZmVkM2QzfQoubXktZXJyb3IgLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtib3JkZXI6MXB4IHNvbGlkICNmY2MxYzchaW1wb3J0YW50fQoubXktZXJyb3IgLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSAuc2VsZWN0Mi1jaG9pY2V7Ym9yZGVyOjFweCBzb2xpZCAjZWE3Mjg2IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgPiAuc2VsZWN0Mi1jaG9zZW57Y29sb3I6I2Q2MmM0OX0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2Uuc2VsZWN0Mi1kZWZhdWx0ID4gLnNlbGVjdDItY2hvc2Vue2NvbG9yOiNiOWMwY2J9Ci5teS1lcnJvciAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvdywgLm15LWVycm9yIC5zZWxlY3QyLWRyb3Bkb3duLW9wZW4uc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvd3tib3JkZXItbGVmdDpub25lIWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2Vze2JvcmRlcjoxcHggc29saWQgI2ZjYzFjNyFpbXBvcnRhbnR9Ci5teS1lcnJvciAuc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZXN7Ym9yZGVyOjFweCBzb2xpZCAjZWE3Mjg2IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2V7YmFja2dyb3VuZC1jb2xvcjojZmVkM2QzO2NvbG9yOiNkNjJjNDl9Ci5teS1lcnJvciAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUwLCAxNzEsIDE4NCwgMC4zNSl9Ci5teS1lcnJvciAubXktdGFncyAudGFne2NvbG9yOiNlYTcyODZ9Ci5teS1lcnJvciAubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZWQzZDM7Y29sb3I6I2Q2MmM0OX0KLm15LWVycm9yID4gZGl2Lm15LW1vZGFse2JvcmRlci1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpO2JveC1zaGFkb3c6MCAwIDExcHggNnB4IHJnYmEoMTczLCAzNCwgNTcsIDAuOTIpLCAwIDAgNnB4IHJnYmEoMTczLCAzNCwgNTcsIDAuODUpfQoubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS1sZWZ0OmJlZm9yZSwgLm15LWVycm9yID4gZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHQ6YmVmb3JlLCAubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS10b3A6YmVmb3JlLCAubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS1ib3R0b206YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTAsIDE3MSwgMTg0LCAwLjM1KTtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpfQoubXktZXJyb3IgLnVpLXNsaWRlcntib3JkZXI6MXB4IHNvbGlkICNmY2MxYzchaW1wb3J0YW50fQoubXktZXJyb3IgLnVpLXNsaWRlci1oYW5kbGV7Ym9yZGVyOjFweCBzb2xpZCAjZmNjMWM3O2JhY2tncm91bmQ6I2ZlZDNkM30KLm15LWVycm9yIC51aS1zbGlkZXItaGFuZGxlLnVpLXN0YXRlLWZvY3Vze2JvcmRlcjoxcHggc29saWQgI2VhNzI4Nn0KQGZvbnQtZmFjZXtmb250LWZhbWlseTonQ291c2luZSc7c3JjOnVybCgnY291c2luZS1yZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWx9CiNjdy1ib2R5e21hcmdpbjowIGF1dG8gMCBhdXRvO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNGVtO3RleHQtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjtmb250LXdlaWdodDozMDA7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZX0KI2N3LWJvZHkgLmN3LWJ1c3l7aGVpZ2h0OjRweDtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MzBweDtib3JkZXItcmFkaXVzOjEwcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2kvbG9hZGVyLWJhcjIuZ2lmKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0KI2N3LWJvZHkgaW5wdXQsICNjdy1ib2R5IGJ1dHRvbiwgI2N3LWJvZHkgdGV4dGFyZWF7Zm9udC13ZWlnaHQ6aW5oZXJpdH0KI2N3LWJvZHkgLm15LWVycm9yLXRpcHtmb250LXNpemU6ODUlO2NvbG9yOnJnYmEoMjA0LDAsMzIsMC43KTtwYWRkaW5nOjBweCAwIDZweCAwcHg7bGluZS1oZWlnaHQ6MS4yZW19CiNjdy1ib2R5IC5teS1lcnJvciAudmFyaWFudHMgLnRhZy5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZmRkO2NvbG9yOnJnYmEoMjA0LDAsMzIsMC43KX0KI2N3LWJvZHkgLm15LXJvdyBpbnB1dCwgLm15LXJvdyB0ZXh0YXJlYSwgLm15LXJvdyBzZWxlY3QsIC5teS1yb3cgLmJ1dHRvbnttYXJnaW46MH0KI2N3LWJvZHkgLm15LXJvdyB0ZXh0YXJlYXt2ZXJ0aWNhbC1hbGlnbjp0b3B9CiNjdy1ib2R5IC5teS1yb3cgLm15LWxhYmVse2ZvbnQtc2l6ZTo5MCU7bGluZS1oZWlnaHQ6MS4xZW19CiNjdy1ib2R5IC5teS1yb3cgLm15LXNob3J0Y3V0e21hcmdpbjowIDAgMCAwLjI1ZW07dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojNTQ4MWEwO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MC43O3RyYW5zaXRpb246b3BhY2l0eSAwLjNzOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsIGJvcmRlciAwLjNzOy1vcGVyYS10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcywgYm9yZGVyIDAuM3M7LW1zLXRyYW5zaXRpb246b3BhY2l0eSAwLjNzLCBib3JkZXIgMC4zczstbW96LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzLCBib3JkZXIgMC4zc30KI2N3LWJvZHkgLm15LXJvdyAubXktc2hvcnRjdXQ6aG92ZXJ7b3BhY2l0eToxfQojY3ctYm9keSAubXktcm93IGRpdi5teS1lcnJvci10aXB7cGFkZGluZzowLjNlbSAwIDAgMH0KI2N3LWJvZHkgLm15LXJvdyBzcGFuLm15LWVycm9yLXRpcHtwYWRkaW5nOjB9CiNjdy1ib2R5IGNvZGV7Zm9udC1mYW1pbHk6J0NvdXNpbmUnO2ZvbnQtc2l6ZTo5NSV9CiNjdy1ib2R5IC51aS1zZWFyY2h7Ym9yZGVyLXJhZGl1czo1MHB4IWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MjJweDtwYWRkaW5nLXJpZ2h0OjIycHg7cG9zaXRpb246cmVsYXRpdmV9CiNjdy1ib2R5IC51aS1zZWFyY2gtY2xlYXJ7bWFyZ2luOjFweCAwIC0xcHggLTIxcHg7cG9zaXRpb246cmVsYXRpdmU7b3BhY2l0eTowO2Rpc3BsYXk6bm9uZTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6NX0KI2N3LWJvZHkgLnVpLXNlYXJjaC5zbWFsbCArIC51aS1zZWFyY2gtY2xlYXIgIHttYXJnaW4tYm90dG9tOi0ycHh9CiNjdy1ib2R5IC51aS1zZWFyY2guYmcteWVsbG93ICsgLnVpLXNlYXJjaC1jbGVhcntvcGFjaXR5OjAuNTtkaXNwbGF5OmlubGluZS1ibG9ja30KI2N3LWJvZHkgLnVpLXNlYXJjaC5iZy15ZWxsb3cgKyAudWktc2VhcmNoLWNsZWFyOmhvdmVye29wYWNpdHk6MX0KI2N3LWJvZHkgLm15LXNlYXJjaCBpbnB1dC51aS1zZWFyY2h7YmFja2dyb3VuZC1jb2xvcjojRkZGMDg4IWltcG9ydGFudDtib3JkZXItY29sb3I6I2ZmY2Y2MyFpbXBvcnRhbnR9CiNjdy1ib2R5IC5teS1zZWFyY2ggLnVpLXNlYXJjaC1jbGVhcntvcGFjaXR5OjAuNSFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fQojY3ctYm9keSAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItY2hvaWNle2ZvbnQtc2l6ZTo5MCU7bGluZS1oZWlnaHQ6MS43ZW19CiNjdy1ub3Rlc3t0b3A6NTBweH0KYm9keT5zcGFuLnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQpidXR0b24ubWFya2ZvY3VzLCAgLmJ1dHRvbi5tYXJrZm9jdXN7cG9zaXRpb246cmVsYXRpdmV9CmJ1dHRvbi5tYXJrZm9jdXM6Zm9jdXM6YWZ0ZXIsIC5idXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVye2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDozcHg7cmlnaHQ6M3B4O3dpZHRoOjRweDtoZWlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYhaW1wb3J0YW50O3otaW5kZXg6KzJ9Ci5hZG93bjpiZWZvcmUsIC5hcmlnaHQ6YmVmb3JlLCAuYWxlZnQ6YmVmb3JlLCAuYXVwOmJlZm9yZXtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAuMTRlbSAwLjE0ZW0gMCAwO2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjAuM2VtO2xlZnQ6MC4zNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowLjA1ZW07dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3dpZHRoOjAuM2VtO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MC42O3doaXRlLXNwYWNlOm5vcm1hbH0KLmFkb3duOmhvdmVyOmJlZm9yZSwgLmFyaWdodDpob3ZlcjpiZWZvcmUsIC5hbGVmdDpob3ZlcjpiZWZvcmUsIC5hdXA6aG92ZXI6YmVmb3Jle29wYWNpdHk6MC45fQouYXJpZ2h0OmJlZm9yZXtsZWZ0OjAuMmVtO3RvcDotMC4wN2VtO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfQouYWRvd246YmVmb3Jle3RvcDotMC4xNmVtO3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX0KLmFsZWZ0OmJlZm9yZXt0b3A6LTAuMTJlbTtsZWZ0OjAuNDVlbTt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfQpib2R5LnRoZW1lLWRhcmt7ZmlsdGVyOmJyaWdodG5lc3MoMC45NikgaW52ZXJ0KCkgY29udHJhc3QoMC45KSBicmlnaHRuZXNzKDEuMjUpIGh1ZS1yb3RhdGUoMTgyZGVnKSBicmlnaHRuZXNzKDAuOSkgc2F0dXJhdGUoMS4yKTtjb2xvcjojNWE2MTY5fQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHl7YmFja2dyb3VuZC1jb2xvcjojZjhmOWZifQpib2R5LnRoZW1lLWRhcmsgI2J0bi1jbG9zZS1hY3RpdmUtdGFie2NvbG9yOnJnYmEoODQsOTgsMTIyLDAuMyl9CmJvZHkudGhlbWUtZGFyayAub3Jhbmdle2NvbG9yOiNjMTZmMDAhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgLnJlZCAgICB7Y29sb3I6I2U2Njk3ZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAueGdyYXkgCXtjb2xvcjojNjY3MjgwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIC5ncmF5LTF7Y29sb3I6IzVhNjE2OSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAudGVhbCAgIHtjb2xvcjojMDA5MTc4IWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9cmFkaW9dLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9Y2hlY2tib3hdIHthY2NlbnQtY29sb3I6IzMxNzdmZn0KYm9keS50aGVtZS1kYXJrIGEsICBib2R5LnRoZW1lLWRhcmsgLnBzZXVkb2xpbmssICBib2R5LnRoZW1lLWRhcmsgLnBzZXVkb2J1dHRvbntjb2xvcjojNTk3YWFifQpib2R5LnRoZW1lLWRhcmsgYTpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAucHNldWRvbGluazpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAucHNldWRvYnV0dG9uOmhvdmVye2NvbG9yOiMyZTdkZmZ9CmJvZHkudGhlbWUtZGFyayAuYnV0dG9uIAkJCXtjb2xvcjojNGQ1YTZhfQpib2R5LnRoZW1lLWRhcmsgLmJ1dHRvbjpob3Zlcntjb2xvcjojNGE3OWJmfQpib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1idXR0b25dLmdyZWVuLCAgYm9keS50aGVtZS1kYXJrIC5idXR0b24uZ3JlZW4sICBib2R5LnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVue2JvcmRlci1jb2xvcjojY2RlNmIwO2JhY2tncm91bmQtY29sb3I6I2NkZTZiMDtjb2xvcjojNTc4ZjAxIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9YnV0dG9uXS5ncmVlbjpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLmdyZWVuOmhvdmVyLCAgYm9keS50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbjpob3Zlcntib3JkZXItY29sb3I6Izc0YWYzMDtjb2xvcjojNWE5ZDAwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9YnV0dG9uXS50ZWFsLCAgYm9keS50aGVtZS1kYXJrIC5idXR0b24udGVhbCwgIGJvZHkudGhlbWUtZGFyayBidXR0b24udGVhbHtib3JkZXItY29sb3I6I2E1ZGJjYTtiYWNrZ3JvdW5kLWNvbG9yOiNhNWRiY2F9CmJvZHkudGhlbWUtZGFyayBpbnB1dFt0eXBlPWJ1dHRvbl0udGVhbDpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLnRlYWw6aG92ZXIsICBib2R5LnRoZW1lLWRhcmsgYnV0dG9uLnRlYWw6aG92ZXJ7Ym9yZGVyLWNvbG9yOiMyM2E2OTB9CmJvZHkudGhlbWUtZGFyayAubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTA0LDEyOSwwLjM1KX0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGV4dF0sICBib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1wYXNzd29yZF0sICBib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1udW1iZXJdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9ZW1haWxdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGVsXSwgIGJvZHkudGhlbWUtZGFyayBpbnB1dFt0eXBlPWRhdGVdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGltZV0sIGJvZHkudGhlbWUtZGFyayB0ZXh0YXJlYXtib3JkZXItY29sb3I6I2RmZTNlOH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2J1dHRvbiddOmRpc2FibGVkLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2J1dHRvbiddOmRpc2FibGVkOmhvdmVyLCAgYm9keS50aGVtZS1kYXJrIGJ1dHRvbjpkaXNhYmxlZCwgIGJvZHkudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6aG92ZXIsICBib2R5LnRoZW1lLWRhcmsgLmJ1dHRvbi5kaXNhYmxlZCwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLmRpc2FibGVkOmhvdmVye2NvbG9yOiM4ODkyOWYhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5ZWNkZjh9CmJvZHkudGhlbWUtZGFyayAubXktZXJyb3IgaW5wdXQ6bm90KFt0eXBlPXJhZGlvXSk6bm90KFt0eXBlPWNoZWNrYm94XSksICBib2R5LnRoZW1lLWRhcmsgLm15LWVycm9yIHRleHRhcmVhe2JvcmRlci1jb2xvcjojZmNjMWM3fQpib2R5LnRoZW1lLWRhcmsgLm15LW1hbmlmZXN0LTFjam1tczdpICNsLWFwcHMgLmwtYXBwLmFwcC1idXN5e29wYWNpdHk6MC4zNX0KYm9keS50aGVtZS1kYXJrIC5teS1tYW5pZmVzdC0xY2ptbXM3aSAjbC1hcHBzIC5sLWFwcHt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zc30KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzLCBib2R5LnRoZW1lLWRhcmsgLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtib3JkZXItY29sb3I6I2RmZTNlOH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlLCAgYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlc3tib3JkZXItY29sb3I6IzllY2RmOH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWRyb3B7Y29sb3I6IzYzNjg2ZH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLXJlc3VsdHMgbGkuc2VsZWN0Mi1yZXN1bHQtd2l0aC1jaGlsZHJlbiA+IC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtmb250LXdlaWdodDpib2xkZXI7Y29sb3I6IzM5M2EzY30KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmM2Y1ZjghaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjbC1oZWFkZXIgLmwtdGFiIGF7Y29sb3I6IzRjNWQ2ZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjbC1oZWFkZXIgLmwtdGFiIGEuc3lzdGVte2NvbG9yOiM0MDczMDAhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyIC5sLXRhYi5hY3RpdmU6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6I2Q4ZGZlOCFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjbC1oZWFkZXIgI2wtYXBwdGFicywgYm9keS50aGVtZS1kYXJrICNsLWhlYWRlciAjbC1hc2lkZXtib3JkZXItdG9wLWNvbG9yOiNjZGQ1ZTF9CmJvZHkudGhlbWUtZGFyayAjY3ctYm9keSAjbC1oZWFkZXIgI2wtYXNpZGUgLmFzaWRlLWJ0bntib3JkZXItbGVmdC1jb2xvcjojY2RkNWUxO2NvbG9yOiM1MjU3NWIhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgI2wtaGVhZGVyICNsLWFzaWRlICNidG4tY2xvc2UtYWxsLXRhYnN7Y29sb3I6IzUyNTc1YiFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjY3ctYm9keSAjbC1oZWFkZXIgI2wtYXNpZGUgLmFzaWRlLWJ0biBhe2NvbG9yOiM1MjU3NWIhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyICNzdmctdW5hdXRoe3N0cm9rZTojZmY1NDAwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlciAjc3ZnLWF1dGh7c3Ryb2tlOiMzMDc3MDAhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyIC5sLXRhYjpob3ZlciAjYnRuLXRhYmNsb3Nle2NvbG9yOnJnYmEoNjksMTMzLDE2OSwwLjYpfQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgLnZpZXctcm93e2JhY2tncm91bmQtY29sb3I6I2Y4ZjlmYn0KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5IC52aWV3LXJvdzpudGgtY2hpbGQoMm4rMCkge2JhY2tncm91bmQtY29sb3I6I2YyZjRmNn0KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5IC52aWV3LXJvdyAuYnRuLWRic3Rhci5yb3ctc3Rhcntjb2xvcjojNzc0ZTAwfQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgLnZpZXctcm93IC5idG4tZGJhY2wub3JhbmdlMXtjb2xvcjojYjU4MTYwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGRpdi5teS1tb2RhbHtib3gtc2hhZG93OjBweCAwcHggMHB4IDJweCByZ2JhKDAsMjksNzksMC42KSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjojZmNmY2ZjfQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgPiBkaXYubXktbW9kYWwtc2NyZWVue2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMjQ5LDI1NSwwLjkpIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGJ1dHRvbi5tYXJrZm9jdXM6Zm9jdXM6YWZ0ZXIsICBib2R5LnRoZW1lLWRhcmsgLmJ1dHRvbi5tYXJrZm9jdXM6Zm9jdXM6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojNmQ2ZDZkIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGRpdi5teS1tb2RhbC5ub3NlLWxlZnQ6YmVmb3JlLCAgYm9keS50aGVtZS1kYXJrIGRpdi5teS1tb2RhbC5ub3NlLXJpZ2h0OmJlZm9yZSwgIGJvZHkudGhlbWUtZGFyayBkaXYubXktbW9kYWwubm9zZS10b3A6YmVmb3JlLCAgYm9keS50aGVtZS1kYXJrIGRpdi5teS1tb2RhbC5ub3NlLWJvdHRvbTpiZWZvcmV7d2lkdGg6NnB4O2hlaWdodDo2cHg7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDAsMjksNzksMC42KTtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yaWdodC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOiNmY2ZjZmN9CmJvZHkudGhlbWUtZGFyayAjY3ctYm9keSA+IGRpdi5teS1tb2RhbCA+IC5teS1tb2RhbC1jbG9zZXtiYWNrZ3JvdW5kLWNvbG9yOiM5YmIxYzZ9CmJvZHkudGhlbWUtZGFyayAjdmlldy1wYW5lbHMubW9kZS1ncmlkIC52aWV3LXJlc3VsdHMtaGVhZHtiYWNrZ3JvdW5kLWNvbG9yOiNlYWYwZmQhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI3ZpZXctZ3JpZC1jb2xzIGlucHV0OmZvY3Vze2JhY2tncm91bmQ6cmdiYSg0LDg4LDE5OCwwLjE1KX0KYm9keS50aGVtZS1kYXJrICNsLWFwcHMgLmwtYXBwIC5mZWF0aGVyOmFmdGVye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgyNDcsMjQ4LDI1MCwxKSwgcmdiYSgyNDcsMjQ4LDI1MCwwKSl9CmJvZHkudGhlbWUtZGFyayAjbC1hcHBzIC5sLWFwcCAuZmVhdGhlcjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI0NywyNDgsMjUwLDEpLCByZ2JhKDI0NywyNDgsMjUwLDApKX0KYm9keS50aGVtZS1kYXJrIC5teS1tYW5pZmVzdC0xYW9jMXhmbCAjZG9jOmhvdmVye2JhY2tncm91bmQ6I2Y4ZjlmYn0KYm9keS50aGVtZS1kYXJrIC5qdmFsLXN0cmluZyAgIHtjb2xvcjojNjE3Mjk0fQpib2R5LnRoZW1lLWRhcmsgLmp2YWwtZnVuY3Rpb257Y29sb3I6cmdiYSgxNDYsOTMsMTg2LDAuOSl9CmJvZHkudGhlbWUtZGFyayBpbWcjc2ljb24sIGJvZHkudGhlbWUtZGFyayAuaXZhbHVlIGEuYmFzZTY0aW1hZ2UgaW1nLCBib2R5LnRoZW1lLWRhcmsgLmNtLWVtb2ppLCBib2R5LnRoZW1lLWRhcmsgaml7ZmlsdGVyOmJyaWdodG5lc3MoMC44KSBodWUtcm90YXRlKDE4MGRlZykgaW52ZXJ0KCkgc2F0dXJhdGUoMS4yKSBjb250cmFzdCgxLjEpfQpib2R5LnRoZW1lLWRhcmsgI2UtbG9nbywgYm9keS50aGVtZS1kYXJrICNsLXJvb3Q+c3Zne2ZpbHRlcjpicmlnaHRuZXNzKDAuOCkgaHVlLXJvdGF0ZSgxODVkZWcpIGludmVydCgpIHNhdHVyYXRlKDEuNSkgY29udHJhc3QoMS4zKX0KYm9keS50aGVtZS1kYXJrICNlLWxvZ28gKyAjZS10aXRsZXtjb2xvcjojNWM3ODkzIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIC5Db2RlTWlycm9ye2JhY2tncm91bmQ6I2ZkZmVmZn0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLWRlZiAgICAgICAge2NvbG9yOiNmZjc4OWJ9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1rZXl3b3JkICAgIHtjb2xvcjojNzE1YjljfQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tbnVtYmVyICAgICB7Y29sb3I6IzQ3NzYwMH0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLXZhcmlhYmxlICAge2NvbG9yOiMxZTgwNjR9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0ye2NvbG9yOiMzYTZhOWF9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1zdHJpbmcgICAgIHtjb2xvcjojNjE3Mjk0fQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nLTIgICB7Y29sb3I6I2QwNGUxZX0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLXByb3BlcnR5ICAge2NvbG9yOiM0MzRlNWR9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS10YWcgICAgICAgIHtjb2xvcjojNzNhYzE5fQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tYXR0cmlidXRlICB7Y29sb3I6I2VhOTBiMX0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLW9wZXJhdG9yICAge2NvbG9yOiM4ZTU3MDB9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1hdG9tICAgICAgIHtjb2xvcjojYmQ2NjY2fQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tY29tbWVudCAgICB7Y29sb3I6I2E0YjdiN30KYm9keS50aGVtZS1kYXJrIC5qc29uZGlmZnBhdGNoLWFkZGVkIC5qc29uZGlmZnBhdGNoLXByb3BlcnR5LW5hbWUsICBib2R5LnRoZW1lLWRhcmsgLmpzb25kaWZmcGF0Y2gtYWRkZWQgLmpzb25kaWZmcGF0Y2gtdmFsdWUgcHJlLCAgYm9keS50aGVtZS1kYXJrIC5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLXJpZ2h0LXZhbHVlIHByZSwgIGJvZHkudGhlbWUtZGFyayAuanNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1hZGRlZHtiYWNrZ3JvdW5kOiNhZGNiODd9CmJvZHkudGhlbWUtZGFyayAubG9nLWZvdW5kLCBib2R5LnRoZW1lLWRhcmsgLmp2YWwtZm91bmQta2V5LCBib2R5LnRoZW1lLWRhcmsgLnZpZXctZm91bmR7YmFja2dyb3VuZC1jb2xvcjojOWM4MTAwIWltcG9ydGFudDtjb2xvcjp3aGl0ZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAuQ29kZU1pcnJvciAuY20tZm91bmR7b3V0bGluZS1jb2xvcjojOWM4MTAwIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOiM5YzgxMDAhaW1wb3J0YW50O2NvbG9yOndoaXRlIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNjdy1ub3RlcyA+IGRpdntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTUyLDE3MSwxOTksMC44NSk7Y29sb3I6IzUxNjE3Mjtib3gtc2hhZG93Om5vbmU7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMnB4KX0KYm9keS50aGVtZS1kYXJrICNjdy1ub3RlcyA+IGRpdi5va3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTcwLDIwOSwxMjMsMC44NSk7Y29sb3I6IzM5NWEwOH0KYm9keS50aGVtZS1kYXJrICNjdy1ub3RlcyA+IGRpdi5lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1NSwxNzEsMC44NSk7Y29sb3I6YmxhY2t9CmJvZHkudGhlbWUtZGFyayAjY3ctbm90ZXMgPiBkaXYud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDcsMTM2LDE2LDAuODUpO2NvbG9yOmJsYWNrfQo=" }, "index.html": { "content_type": "text/html", "data": "PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPiBQaG90b24gMS4yNiA8L3RpdGxlPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC45NSwgd2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPXllcywgbWluaW11bS1zY2FsZT0wLjcsIG1heGltdW0tc2NhbGU9Mi4wIj4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSJmYXZpY29uLnBuZyI+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImkvYXBwbGUtaWNvbi5wbmciPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL3Bob3Rvbi5jc3MiIC8+CiAgICA8c2NyaXB0PgogICAgICAvLyBSZWRpcmVjdCB0byB2YWxpZCBfcmV3cml0ZSBlbmRwb2ludCAKICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PSAnL19waG90b24nKSB3aW5kb3cubG9jYXRpb24gPSAnL19waG90b24vJzsKICAgICAgLy8gUHJlaW5pdAogICAgICB3aW5kb3cuRERPQyA9IHsKICAgICAgICBydW46ICBbe2NvbnRhaW5lcjonI2N3LXNwYWNlJywgbWFuaWZlc3Q6J2N3LlBob3RvbicsIGRhdGE6e319XSwKICAgICAgICBhcHBzOiB7fSwKICAgICAgICBfbWU6ICB7bmFtZTonJywgcm9sZXM6W119LAogICAgICB9OwogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ibGliL2dlbmVyYWwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImxpYi9wbHVnaW5zLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJwaG90b24uanMiPjwvc2NyaXB0PgogICAgPG5vc2NyaXB0PgogICAgICA8ZGl2IGNsYXNzPSJwdDMwIHBsMTAwIGZzMTEwIGxoMTcwIHc4MDAgZnc0MDAgeGdyYXkiPgogICAgICAgIDxpbWcgc3JjPSJpL2FwcGxlLWljb24ucG5nIiBjbGFzcz0ibWwtMTAgdzEwMCBtYjIwIGRiIj4KICAgICAgCUphdmFTY3JpcHQgaXMgZGlzYWJsZWQgd2hpY2ggbGlrZWx5IG1lYW5zIENvdWNoREIgQ1NQIHBvbGljeSBwcmV2ZW50cyBQaG90b24gZnJvbSBzdGFydGluZy4gVG8gZml4IHRoZSBwb2xpY3k6IAogICAgICAgIDx1bD4KICAgICAgICAgIDxsaSBjbGFzcz0icHQ3Ij5SaWdodC1jbGljayA8YSBocmVmPSIvX3V0aWxzLyNfY29uZmlnIj5GYXV4dG9uPC9hPiBsaW5rIGFuZCBzZWxlY3QgPGk+T3BlbiBpbiBuZXcgdGFiLi4uPC9pPiA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJwdDciPlN3aXRjaCB0byBGYXV4dG9uIHRhYiwgY2xpY2sgPGNvZGUgY2xhc3M9ImJnLWdyYXk2IHBsNiBwcjYgZnM5MCBicjQgZGliIG53Ij48Yj4rPC9iPiZ0aGluc3A7QWRkIG9wdGlvbjwvY29kZT4gYnV0dG9uIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9InB0NyI+RmlsbCBwb3B1cCB3aXRoIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iYmctZ3JheTQgcGw0IHByNCBmczkwIGJyMiI+Y3NwPC9jb2RlPiwgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJiZy1ncmF5NCBwbDQgcHI0IGZzOTAgYnIyIj5hdHRhY2htZW50c19lbmFibGU8L2NvZGU+LCAKICAgICAgICAgICAgYW5kIDxjb2RlIGNsYXNzPSJiZy1ncmF5NCBwbDQgcHI0IGZzOTAgYnIyIj5mYWxzZTwvY29kZT4gdmFsdWVzIHJlc3BlY3RpdmVseSwgCiAgICAgICAgICAgIGNsaWNrIDxjb2RlIGNsYXNzPSJiZy1ncmF5NiBwbDYgcHI2IGZzOTAgYnI0IGRpYiI+Q3JlYXRlPC9jb2RlPiBidXR0b24uIAogICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxicj5BZnRlciB0dW5pbmcgQ1NQIHlvdSB3aWxsIG5lZWQgdG8gc2hpZnQtcmVsb2FkIHRoaXMgdGFiIChDdHJsLVNoaWZ0LVIpLiAKICAgICAgICBJZiBQaG90b24gc3RpbGwgZmFpbHMgdG8gc3RhcnQgY2xvc2UgdGhlIHRhYiwgYW5kIHRoZW4gcmUtb3BlbiBpdCAoQ3RybC1XLCB0aGVuIEN0cmwtU2hpZnQtVCkuCiAgICAgIDwvZGl2PgogICAgPC9ub3NjcmlwdD4KICA8L2hlYWQ+CgogIDxib2R5IHN0eWxlPSJmb250LXdlaWdodDozMDA7IiBjbGFzcz0iIj4KICAgIDxkaXYgaWQ9ImN3LW5vdGVzIj48L2Rpdj4KICAgIDxkaXYgaWQ9ImN3LWJvZHkiID4KICAgICAgPGRpdiBpZD0iY3ctaGVhZGVyIj48L2Rpdj4KICAgICAgPGRpdiBpZD0iY3ctc3BhY2UiIGNsYXNzPSJwdDAiIHN0eWxlPSJtaW4td2lkdGg6MTE1MHB4O3dpZHRoOjEwMCU7Ij4KICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6MjAwcHggMTAwcHg7Zm9udC1zaXplOjI4cHg7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MWVtO2NvbG9yOiMzMzQzNTM7Ij4KICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7cGFkZGluZzoycHg7Ym9yZGVyLXJhZGl1czoxMDBweDtib3JkZXI6MS41cHggc29saWQgI2FlYjZjMTttYXJnaW46MTBweCA1cHggLTEwcHggMDsiPgogICAgICAgICAgICA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMTYuNSIgdmlld0JveD0iMCwwLDMxLDE2IiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDoxMXB4OyI+CiAgICAgICAgICAgICAgPHBhdGggZmlsbD0iI2Q3MWQyZiIgZD0iTTMwLDEyIEwzMCwxNSBMMSwxNSBMMSwxMiBMMzAsMTIgeiIvPgogICAgICAgICAgICAgIDxwYXRoIGZpbGw9IiNmYTQ4NDgiIGQ9Ik0zLDMgQzMuMSwzLjcgMy4yLDQuMyAzLjIsNC42IEMzLjQsNS43IDMuOSw2LjYgNC43LDcuMiBDNS40LDcuNyA2LjIsOCA3LDggQzgsNy45IDExLjYsOCAxMy4xLDggQzE0LDggMTQuNiw4LjYgMTUsOS41IEwxNSwxMSBMMSwxMSBMMSwzLjggQzIuNiwzLjEgMS45LDMuNCAzLDMgTTI3LjksMyBDMjcuOCwzLjcgMjcuNyw0LjMgMjcuNyw0LjYgQzI3LjUsNS43IDI3LDYuNiAyNi4yLDcuMiBDMjUuNSw3LjcgMjQuNyw4IDIzLjksOCBDMjIuOSw3LjkgMTkuMyw4IDE3LjgsOCBDMTYuOSw4IDE2LjMsOC42IDE2LDkuNSBMMTYsMTEgTDMwLDExIEwzMCwzLjggQzI4LjMsMy4xIDI5LDMuNCAyNy45LDMgeiIvPgogICAgICAgICAgICAgIDxwYXRoIGZpbGw9IiNmZjY3NjciIGQ9Ik0xNSwxIEwxNSw3LjcgQzE0LjYsNy4xIDE0LDYuOSAxMy40LDYuOCBDOS41LDYuOCA4LjYsNi44IDcuNiw2LjggQzcuNCw2LjggNy4zLDYuOCA3LjMsNi44IEM1LjgsNi44IDQuNCw1LjcgNC4xLDQgTDQsMi44IEM3LjUsMS41IDExLjMsMSAxNSwxIE0xNiwxIEwxNiw3LjcgQzE2LjMsNy4xIDE2LjksNi45IDE3LjUsNi44IEMyMS40LDYuOCAyMi4zLDYuOCAyMy4zLDYuOCBDMjMuNSw2LjggMjMuNiw2LjggMjMuNiw2LjggQzI1LjEsNi44IDI2LjUsNS43IDI2LjgsNCBMMjcsMi44IEMyMy40LDEuNSAxOS42LDEgMTYsMSB6Ii8+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICBQaG90b24gMS4yNgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlIGlkPSJzY3JvbGxiYXItdHdlYWsiPjwvc3R5bGU+CiAgPC9ib2R5Pgo8L2h0bWw+" }, "perftest.html": { "content_type": "text/html", "data": "PCFET0NUWVBFIGh0bWw+IDxodG1sPiA8aGVhZD4gPHRpdGxlPkNvdWNoREIgcGVyZiB0ZXN0LCBQaG90b24gMS4yNjwvdGl0bGU+IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJjaGlsZC1zcmMgJ3NlbGYnIGRhdGE6IGJsb2I6OyBkZWZhdWx0LXNyYyAnc2VsZic7IGltZy1zcmMgJ3NlbGYnIGRhdGE6IGJsb2I6OyBmb250LXNyYyAnc2VsZic7IHNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyAndW5zYWZlLWV2YWwnOyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyAndW5zYWZlLWV2YWwnOyIvPiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTAuOCwgbWF4aW11bS1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MC41LCB1c2VyLXNjYWxhYmxlPW5vIi8+IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9waG90b24uY3NzIi8+IDxzY3JpcHQgc3JjPSJsaWIvZ2VuZXJhbC5qcyI+PC9zY3JpcHQ+IDxzdHlsZT4qIHtib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowO308L3N0eWxlPiA8L2hlYWQ+IDxzY3JpcHQ+JChmdW5jdGlvbigpeyQoIiNjdy1ib2R5IikubXkoe2lkOiJjdy5Db3VjaC5QZXJmVGVzdCIsYnVpbGQ6ODIscGFyYW1zOnt9LGRhdGE6e2NvdWNoOnt2ZXJzaW9uOiIifSxkYjoiei1wZXJmdGVzdCIsdGVzdHM6e30sbGF0ZW5jeTowLHRocmVhZHM6MyxxOiIxIixuOiIxIixsb2c6W10sZG9jczpbXSxyZXZzOnt9LGRkb2NzOntWYWxpZGF0b3I6e19pZDoiX2Rlc2lnbi92YWxpZGF0ZSIsdmFsaWRhdGVfZG9jX3VwZGF0ZToiICBmdW5jdGlvbihuZXdEb2MsIG9sZERvYywgdXNlckN0eCwgc2VjT2JqKXtcbiAgICAgIGlmIChuZXdEb2MuX2RlbGV0ZWQgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHVzZXJDdHgubmFtZS5sZW5ndGg+MCAmJiBuZXdEb2MuX2lkLmxlbmd0aD4zKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGVsc2UgdGhyb3coe2ZvcmJpZGRlbjogJ091Y2gnfSk7XG4gICAgfSJ9LFZpZXdzOntfaWQ6Il9kZXNpZ24vbWFwcmVkdWNlIix2aWV3czp7Y291bnRhOnttYXA6IiAgZnVuY3Rpb24oZG9jKXtcbiAgICAgICAgICBlbWl0IChkb2MudHlwZSwgMSk7XG4gICAgICAgIH0iLHJlZHVjZToiX3N1bSJ9fX19fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7cmV0dXJuIGEuRG9jcy5wdXNoKGEuR2VuRG9jcygpLGEuR2VuRG9jcygpLGEuR2VuRG9jcygpKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkpLCQuYWpheCh7dXJsOiIvIixtZXRob2Q6ImdldCIsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fSkudGhlbihmdW5jdGlvbih4KXtiLmNvdWNoPXh9KX0sdWk6eyIjbG9nIjpmdW5jdGlvbih4KXtyZXR1cm4geC5sb2cubWFwKGZ1bmN0aW9uKHgpe3JldHVybiI8dHI+PHRkPnsxfTwvdGQ+PC90cj4iLmFzc2lnbih4LmpvaW4oIjwvdGQ+PHRkPiIpKX0pLmpvaW4oIiIpfHx2b2lkIDB9LCIjZGIiOiJkYiIsIiNzcSI6e2JpbmQ6InEiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4geC5jb3VjaC52ZXJzaW9uWzBdPCIyIn19fSwiI3NuIjp7YmluZDoibiIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNvdWNoLnZlcnNpb25bMF08IjIifX19LCIjdmVyIjp7YmluZDoiY291Y2gudmVyc2lvbiIsd2F0Y2g6IiNsb2cifSwiI2J0bi1zdGFydCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlJ1blRlc3RzKCl9LCIjbXNnLXFuIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNvdWNoLnZlcnNpb25bMF08IjIifX19fSxIVE1MOlsnPGRpdiBjbGFzcz0idzYwMCI+JywnPGgzIGNsYXNzPSJtYjEwIj5Db3VjaERCIDxzcGFuIGlkPSJ2ZXIiPjwvc3Bhbj4gd3JpdGUgYW5kIHZpZXdpbmRleCBwZXJmb3JtYW5jZSB0ZXN0PC9oMz4nLHtyb3c6IjI1JSIsbGFiZWw6IjMwcHgiLHJvd0NzczoibXktcm93IGRpYiB2YXQgcHIyMCIsbGFiZWxDc3M6Im15LWxhYmVsIHRhciBwcjEwIn0sWyJEQiIsImlucCNkYi53MTAwcCJdLFsiUSIsIm51bSNzcS53MTAwcCJdLFsiTiIsIm51bSNzbi53MTAwcCJdLCc8ZGl2IGNsYXNzPSJ3MjVwIGRpYiB2YXQiPjxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9ImdyZWVuIHcxMDBwIj5TdGFydDwvYnV0dG9uPjwvZGl2PicsJzx0YWJsZSBjbGFzcz0idzEwMHAgbXQxMCI+PHRib2R5IGlkPSJsb2ciPicsIjwvdGJvZHk+PC90YWJsZT4iLCI8ZGl2Pjxicj5UaGlzIHRlc3QgY3JlYXRlcy91cGRhdGVzIDI2MCBicmFuY2h5IGRvY3Mgb2YgZGlmZmVyZW50IHNpemVzLCBhbmQgMiBkZXNpZ24gZG9jcyB3aXRoIHZpZXcgYW5kIHZhbGlkYXRvci4gIiwnPHNwYW4gaWQ9Im1zZy1xbiI+UGxheSB3aXRoIFEgYW5kIE4gdG8gZXhwbG9yZSBob3cgc2hhcmRpbmcgaW1wYWN0cyBwZXJmb3JtYW5jZS48L3NwYW4+IDwvZGl2PicsIjwvZGl2PiJdLERvY3M6W10sc3R5bGU6eyIiOiJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMnB4O2ZvbnQtZmFtaWx5OictYXBwbGUtc3lzdGVtJywnQmxpbmtNYWNTeXN0ZW1Gb250JywnSGVsdmV0aWNhIE5ldWUnLCdTZWdvZSBVSScsSGVsdmV0aWNhLFRhaG9tYSxBcmlhbCxWZXJkYW5hLFNhbnMtc2VyaWYiLCIgLnc2MDAiOiJ3aWR0aDo2MDBweDsiLCIgLncxMDBwIjoid2lkdGg6MTAwJTsiLCIgdGFibGUiOiJmb250LXNpemU6aW5oZXJpdDtib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyIsIiB0ZCI6ImJvcmRlcjoxcHggc29saWQgI2RkZDtwYWRkaW5nOjNweCA2cHg7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6MjUlOyIsIiB0ZDpmaXJzdC1jaGlsZCI6IndpZHRoOjUwJTsifSxUZXN0czp7Q3JlYXRlOnt9LFdyaXRlOlt7bmFtZToiQ3JlYXRlIGRvYywgMTAgw5cgMU1iIixuOjEwLGRvY3M6ImQxbSIsc2l6ZToyZTYsZHVyOjAsY3RyOjB9LHtuYW1lOiJDcmVhdGUgZG9jLCA1MCDDlyAxMDBiIixuOjUwLGRvY3M6ImQxMDAiLHNpemU6MTA4LGR1cjowLGN0cjowfSx7bmFtZToiQ3JlYXRlIGRvYywgNTAgw5cgMWtiIixuOjUwLGRvY3M6ImQxayIsc2l6ZToxMDEwLGR1cjowLGN0cjowfSx7bmFtZToiQ3JlYXRlIGRvYywgNTAgw5cgMTBrYiIsbjo1MCxkb2NzOiJkMTBrIixzaXplOjEwMTAwLGR1cjowLGN0cjowfSx7bmFtZToiQ3JlYXRlIGRvYywgNTAgw5cgMTBrYiBmbGF0IixuOjUwLGRvY3M6ImQxMGtmIixzaXplOjEwMTAwLGR1cjowLGN0cjowfSx7bmFtZToiQ3JlYXRlIGRvYywgNTAgw5cgMTAwa2IiLG46NTAsZG9jczoiZDEwMGsiLHNpemU6MTAxZTMsZHVyOjAsY3RyOjB9XSxWaWV3c0Rkb2M6e25hbWU6IkNyZWF0ZSBtYXAvcmVkdWNlIGRkb2MiLGRkb2M6IlZpZXdzIn0sVmlld3M6e25hbWU6IkJ1aWxkIHZpZXdpbmRleCIsdmlldzoiX2Rlc2lnbi9tYXByZWR1Y2UvX3ZpZXcvY291bnRhP2dyb3VwX2xldmVsPTIifSxVcGRhdGU6W3tuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMDBiIixuOjUwLGRvY3M6ImQxMDAiLHNpemU6MTA4LGR1cjowLGN0cjowfSx7bmFtZToiVXBkYXRlIGRvYywgNTAgw5cgMWtiIixuOjUwLGRvY3M6ImQxayIsc2l6ZToxMDEwLGR1cjowLGN0cjowfSx7bmFtZToiVXBkYXRlIGRvYywgNTAgw5cgMTBrYiIsbjo1MCxkb2NzOiJkMTBrIixzaXplOjEwMTAwLGR1cjowLGN0cjowfSx7bmFtZToiVXBkYXRlIGRvYywgNTAgw5cgMTBrYiBmbGF0IixuOjUwLGRvY3M6ImQxMGtmIixzaXplOjEwMTAwLGR1cjowLGN0cjowfSx7bmFtZToiVXBkYXRlIGRvYywgNTAgw5cgMTAwa2IiLG46NTAsZG9jczoiZDEwMGsiLHNpemU6MTAxZTMsZHVyOjAsY3RyOjB9XSxWYWxpZGF0b3I6e25hbWU6IkNyZWF0ZSB2YWxpZGF0b3IgZGRvYyIsZGRvYzoiVmFsaWRhdG9yIn0sVXBkYXRlMjpbe25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDEwMGIiLG46NTAsZG9jczoiZDEwMCIsc2l6ZToxMDgsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxa2IiLG46NTAsZG9jczoiZDFrIixzaXplOjEwMTAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMGtiIixuOjUwLGRvY3M6ImQxMGsiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMGtiIGZsYXQiLG46NTAsZG9jczoiZDEwa2YiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMDBrYiIsbjo1MCxkb2NzOiJkMTAwayIsc2l6ZToxMDFlMyxkdXI6MCxjdHI6MH1dfSxHZW5Eb2NzOmZ1bmN0aW9uKCl7dGhpcy5kYXRhO3ZhciB4PTQ2NjU2LGE9W10sYj1bXSxjPVtdLGQ9W10sZT1bXSxmPVtdLGc9W107cmV0dXJuIDEwLi50aW1lcyhmdW5jdGlvbigpe2Zvcih2YXIgeD0iIixiPTAsYz0xMDAwMjtiPGM7YisrKXgrPVN0cmluZy5mcm9tQ2hhckNvZGUoTnVtYmVyLnJhbmRvbSgwLDI1NSkpO2EucHVzaChidG9hKHgpKX0pLDFlMy50aW1lcyhmdW5jdGlvbigpe2IucHVzaChtKCkpfSksMTAwLi50aW1lcyhmdW5jdGlvbigpe2MucHVzaChsKCkpfSksMTAwLi50aW1lcyhmdW5jdGlvbigpe2QucHVzaChrKCkpfSksMTAwLi50aW1lcyhmdW5jdGlvbigpe2UucHVzaChpKCkpfSksMTAwLi50aW1lcyhmdW5jdGlvbigpe2YucHVzaChqKCkpfSksMTAuLnRpbWVzKGZ1bmN0aW9uKCl7Zy5wdXNoKGgoKSl9KSx7ZDEwMDpiLGQxazpjLGQxMGs6ZCxkMTBrZjplLGQxMDBrOmYsZDFtOmd9O2Z1bmN0aW9uIGgoKXt4LnRvU3RyaW5nKDM2KTt4Kz0xO3ZhciBlPXtfaWQ6bigpLHR5cGU6ImQxbWIiLGc6Yi5zYW1wbGUoMTApLGI6e2M6W3AoKSxwKCldLGQ6TnVtYmVyLnJhbmRvbSgxZTcsMWU4LTEpLGU6TWF0aC5yYW5kb20oKT4uNX0sczp7eDp7eTpkLnNhbXBsZSgpfSx6OmQuc2FtcGxlKDMpLG06e3Q6W2Yuc2FtcGxlKCksZC5zYW1wbGUoKV0scTpjLnNhbXBsZSg3KSxyOmIuc2FtcGxlKDEwKX19LF9hdHRhY2htZW50czp7fX07cmV0dXJuIDkuLnRpbWVzKGZ1bmN0aW9uKHgpe2UuX2F0dGFjaG1lbnRzW3AoKSt4KyIuYmluIl09e2NvbnRlbnRfdHlwZToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIixkYXRhOmEuc2FtcGxlKDcpLmpvaW4oIiIpfX0pLGV9ZnVuY3Rpb24gaSgpe3gudG9TdHJpbmcoMzYpO3JldHVybiB4Kz0xLHtfaWQ6bigpLHR5cGU6ImQxMGtmIixnOmEuc2FtcGxlKCkudG8oOTk1MCl9fWZ1bmN0aW9uIGooKXt4LnRvU3RyaW5nKDM2KTtyZXR1cm4geCs9MSx7X2lkOm4oKSx0eXBlOiJkMTAwayIsZzpbZC5zYW1wbGUoKSxkLnNhbXBsZSgpLGQuc2FtcGxlKCldLGI6e2M6W3AoKSxwKCldLGQ6TnVtYmVyLnJhbmRvbSgxZTcsMWU4LTEpLGU6TWF0aC5yYW5kb20oKT4uNX0sczp7eDp7eTpkLnNhbXBsZSgpfSx6OmQuc2FtcGxlKDMpLG06e3Q6W2Quc2FtcGxlKCksZC5zYW1wbGUoKV0scTpjLnNhbXBsZSg3KSxyOmIuc2FtcGxlKDEwKX19fX1mdW5jdGlvbiBrKCl7eC50b1N0cmluZygzNik7cmV0dXJuIHgrPTEse19pZDpuKCksdHlwZToiZDEwayIsZzpbYy5zYW1wbGUoKSxjLnNhbXBsZSgpLGMuc2FtcGxlKCldLGI6e2M6W3AoKSxwKCldLGQ6TnVtYmVyLnJhbmRvbSgxZTcsMWU4LTEpLGU6TWF0aC5yYW5kb20oKT4uNX0sczp7eDp7eTpjLnNhbXBsZSgpfSx6OmMuc2FtcGxlKDMpLG06e3Q6W2Muc2FtcGxlKCksYy5zYW1wbGUoKV0scTpiLnNhbXBsZSgzKX19fX1mdW5jdGlvbiBsKCl7eC50b1N0cmluZygzNik7cmV0dXJuIHgrPTEse19pZDpuKCksdHlwZToiZDFrYiIsZjpiLnNhbXBsZSgzKSxiOntjOltwKCkscCgpXSxkOk51bWJlci5yYW5kb20oMWU3LDFlOC0xKX0sczp7eDp7eTpiLnNhbXBsZSgpfSx6OmIuc2FtcGxlKDUpfX19ZnVuY3Rpb24gbSgpe3gudG9TdHJpbmcoMzYpO3JldHVybiB4Kz0xLHtfaWQ6bigpLHR5cGU6ImQxMDAiLGE6W3AoKSxwKCkscCgpXSxiOntjOltvKCldLGQ6TnVtYmVyLnJhbmRvbSgxZTcsMWU4LTEpLGU6TWF0aC5yYW5kb20oKT4uNX19fWZ1bmN0aW9uIG4oKXt2YXIgYT14LnRvU3RyaW5nKDM2KS5yZXZlcnNlKCk7cmV0dXJuIHgrPTEsYX1mdW5jdGlvbiBvKCl7cmV0dXJuIE51bWJlci5yYW5kb20oNDY2NTYsMTY3OTYxNSkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHAoKXtyZXR1cm4gbygpK28oKX19LFRNYWtlREI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPWIuZGIsZD1bXSxlPSQuRGVmZXJyZWQoKSxmPXtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifTtyZXR1cm4gaCgpLnRoZW4oZykudGhlbihpKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS5hbHdheXMoZnVuY3Rpb24oKXtiLmxhdGVuY3l8fChiLmxhdGVuY3k9KGQubWluKCl8fDApLmNsYW1wKDEsMWU2KSxiLmxvZy5wdXNoKFsiQ3JlYXRlZCBEQiIsYywiIl0pLGIubG9nLnB1c2goWyJMYXRlbmN5IiwifiIrKDB8Yi5sYXRlbmN5KSsibXMiLCIiXSksYS5teS5jaGVjaygiI2xvZyIpKSxlLnJlc29sdmUoKX0pLGUucHJvbWlzZSgpO2Z1bmN0aW9uIGcoKXt2YXIgeD0kLkRlZmVycmVkKCk7cmV0dXJuICQuYWpheCh7dXJsOiIve2RifT9xPXtxfSZuPXtufSIuYXNzaWduKGIpLG1ldGhvZDoicHV0IixoZWFkZXJzOmYsY2FjaGU6ITF9KS5hbHdheXMoZnVuY3Rpb24oKXt4LnJlc29sdmUoKX0pLHgucHJvbWlzZSgpfWZ1bmN0aW9uIGgoKXt2YXIgeD0kLkRlZmVycmVkKCk7cmV0dXJuICQuYWpheCh7dXJsOiIvIitjLG1ldGhvZDoiZGVsZXRlIixoZWFkZXJzOmYsY2FjaGU6ITF9KS5hbHdheXMoZnVuY3Rpb24oKXt4LnJlc29sdmUoKX0uZGVib3VuY2UoNTAwKSkseC5wcm9taXNlKCl9ZnVuY3Rpb24gaSgpe3ZhciB4PURhdGUubm93KCksYT0kLkRlZmVycmVkKCk7cmV0dXJuICQuYWpheCh7dXJsOiIvIitjLG1ldGhvZDoiZ2V0In0pLnRoZW4oZnVuY3Rpb24oKXtkLnB1c2goRGF0ZS5ub3coKS14LTIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7YS5yZXNvbHZlKCl9LmRlYm91bmNlKDUwKSksYS5wcm9taXNlKCl9fSxUV3JpdGVEb2NzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPWMuZGIsZT1bXSxmPSQuRGVmZXJyZWQoKSxnPVtdO3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7eC5jdHI9MCx4Lm4udGltZXMoZnVuY3Rpb24oYil7dmFyIGU9YVt4LmRvY3NdW2JdO2MucmV2c1tlLl9pZF0/ZS5fcmV2PWMucmV2c1tlLl9pZF06ZGVsZXRlIGUuX3Jldjt2YXIgZj17dXJsOiIvIitkKyIvIitlLl9pZCxtZXRob2Q6InB1dCIsdGltZW91dDoxZTYsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoZSksZGF0YVR5cGU6Impzb24ifTtnLnB1c2goW2YseCxlLl9pZF0pfSl9KSxoKCksZi5wcm9taXNlKCk7ZnVuY3Rpb24gaCgpe2lmKCFnLmxlbmd0aCl7aWYoZS5sZW5ndGgpcmV0dXJuO3JldHVybiBmLnJlc29sdmUoKX1lLmxlbmd0aD49Yy50aHJlYWRzfHwoYy50aHJlYWRzLWUubGVuZ3RoKS50aW1lcyhmdW5jdGlvbigpe3ZhciB4PWcuc2hpZnQoKTtpKHhbMF0seFsxXSx4WzJdKX0pfWZ1bmN0aW9uIGkoeCxhLGIpe3ZhciBkLGY9YSxnPSQuYWpheCh4KTtyZXR1cm4gZS5wdXNoKGcpLGQ9RGF0ZS5ub3coKSxnLmRvbmUoZnVuY3Rpb24oeCl7ZS5yZW1vdmUoZyksZi5kdXIrPURhdGUubm93KCktZC1jLmxhdGVuY3ksZi5jdHIrPTEsZi5jdHI9PWYubiYmaihmLm5hbWUsZi5kdXIvZi5ufDAsZi5zaXplKSwheC5lcnJvciYmeC5yZXYmJmImJihjLnJldnNbYl09eC5yZXYpLGgoKX0pLGd9ZnVuY3Rpb24gaih4LGEsZCl7aWYoYSYmZCl7dmFyIGU9ZC9hKjFlM3wwOy0xPT0oZj1jLmxvZy5maW5kSW5kZXgoYT0+YS5uYW1lPT14KSkmJihmPWMubG9nLmxlbmd0aCksYy5sb2dbZl09W3gsIn4iK2ErIm1zIixlLmJ5dGVzKGU+MWU2PzI6MCkucmVwbGFjZSgiQiIsImIiKSsiL3MiXX1lbHNle3ZhciBmOy0xPT0oZj1jLmxvZy5maW5kSW5kZXgoYT0+YS5uYW1lPT14KSkmJmMubG9nLnB1c2goW3gsIlJ1bm5pbmcuLi4iXSl9Yi5teS5jaGVjaygiI2xvZyIpfX0sVE1ha2VEZG9jOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1iLmRkb2NzW3guZGRvY10sZD1iLmRiLGU9W10sZj0kLkRlZmVycmVkKCksZz17QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn07cmV0dXJuIGgoKS50aGVuKGkpLmRvbmUoZnVuY3Rpb24oKXtiLmxvZy5wdXNoKFt4Lm5hbWUsIl9kLyIrYy5faWQuc3BsaXQoIi8iKS5sYXN0KCksIiJdKSxhLm15LmNoZWNrKCIjbG9nIiksZi5yZXNvbHZlKCl9KSxmLnByb21pc2UoKTtmdW5jdGlvbiBoKCl7dmFyIHg9JC5EZWZlcnJlZCgpO3JldHVybiAkLmFqYXgoe3VybDoiLyIrZCsiLyIrYy5faWQsbWV0aG9kOiJwdXQiLGhlYWRlcnM6ZyxkYXRhOkpTT04uc3RyaW5naWZ5KGMpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7eC5yZXNvbHZlKCl9KSx4LnByb21pc2UoKX1mdW5jdGlvbiBpKCl7dmFyIHg9RGF0ZS5ub3coKSxhPSQuRGVmZXJyZWQoKTtyZXR1cm4gJC5hamF4KHt1cmw6Ii8iK2QsbWV0aG9kOiJnZXQifSkudGhlbihmdW5jdGlvbigpe2UucHVzaChEYXRlLm5vdygpLXgtMil9KS5hbHdheXMoZnVuY3Rpb24oKXthLnJlc29sdmUoKX0pLGEucHJvbWlzZSgpfX0sVEZldGNoVmlldzpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Yi5kYixkPSQuRGVmZXJyZWQoKSxlPXtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifTtyZXR1cm4gZigpLmFsd2F5cyhmdW5jdGlvbigpe2QucmVzb2x2ZSgpfSksZC5wcm9taXNlKCk7ZnVuY3Rpb24gZigpe3ZhciBkPURhdGUubm93KCksZj0kLkRlZmVycmVkKCk7cmV0dXJuICQuYWpheCh7dXJsOiIvIitjKyIvIit4LnZpZXcsbWV0aG9kOiJnZXQiLGhlYWRlcnM6ZSxkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKCl7dmFyIGM9RGF0ZS5ub3coKS1kO2IubG9nLnB1c2goW3gubmFtZSwifiIrYysibXMiLCg3MmU4L2MpLmJ5dGVzKDIpLnJlcGxhY2UoIkIiLCJiIikrIi9zIl0pLGEubXkuY2hlY2soIiNsb2ciKX0pLmFsd2F5cyhmdW5jdGlvbigpe2YucmVzb2x2ZSgpfSksZi5wcm9taXNlKCl9fSxSdW5UZXN0czpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGE7cmV0dXJuIGEubGF0ZW5jeT0wLGEubG9nPVtdLGEucmV2cz17fSxhLmRvY3M9T2JqZWN0LmNsb25lKHguRG9jcywhMCksYS50ZXN0cz1PYmplY3QuY2xvbmUoeC5UZXN0cywhMCkseC5teS5maW5kKCIjbG9nIikuaHRtbCgiPGJyPlN0YXJ0aW5nIHRlc3QuLi48YnI+IikseC5UTWFrZURCKGEudGVzdHMuQ3JlYXRlKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHguVFdyaXRlRG9jcyhhLnRlc3RzLldyaXRlLGEuZG9jc1swXSl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHguVE1ha2VEZG9jKGEudGVzdHMuVmlld3NEZG9jKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5URmV0Y2hWaWV3KGEudGVzdHMuVmlld3MpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiB4LlRXcml0ZURvY3MoYS50ZXN0cy5VcGRhdGUsYS5kb2NzWzFdKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5UTWFrZURkb2MoYS50ZXN0cy5WYWxpZGF0b3IpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiB4LlRXcml0ZURvY3MoYS50ZXN0cy5VcGRhdGUyLGEuZG9jc1syXSl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHguVEZldGNoVmlldyhhLnRlc3RzLlZpZXdzKX0pfX0pfSk7PC9zY3JpcHQ+IDxub3NjcmlwdD4gPGRpdiBjbGFzcz0idGFjIHAxMDAgZnMxMjAgbGgxNzAiPiBMb2NhbCBDb3VjaERCIENTUCBwb2xpY3kgbGlrZWx5IHByZXZlbnRzIFBlcmYgVGVzdCBmcm9tIHN0YXJ0aW5nLjxicj4gWW91IGxpa2VseSBuZWVkIHRvIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvX3V0aWxzLyNfY29uZmlnIj5ydW4gRmF1eHRvbjwvYT4gYW5kIHNldCB0aGUgPGNvZGUgY2xhc3M9ImJnLWdyYXk0IHBsNCBwcjQgZnM5MCBicjMiPmNzcC9hdHRhY2htZW50c19lbmFibGU8L2NvZGU+IGNvbmZpZyBrZXkgdG8gPGNvZGUgY2xhc3M9ImJnLWdyYXk0IHBsNCBwcjQgZnM5MCBicjMiPmZhbHNlPC9jb2RlPi4gPC9kaXY+IDwvbm9zY3JpcHQ+IDxib2R5IHN0eWxlPSJvdmVyZmxvdzphdXRvOyI+IDxkaXYgaWQ9ImN3LWJvZHkiIGNsYXNzPSIiIHN0eWxlPSJwYWRkaW5nOjEwMHB4O3dpZHRoOjgwMHB4O21hcmdpbjowIGF1dG87Ij48L2Rpdj4gPC9ib2R5PiA8L2h0bWw+" }, "photon.js": { "content_type": "text/javascript", "data": "LypQaG90b24gMS4yNSBib290c3RyYXAgYW5kIGFwcHMsIChjKSAyMDI1IGVybW91dGgqLwokLmV4dGVuZCh3aW5kb3cuRERPQy5hcHBzLHsiY3cuUGhvdG9uIjp7aWQ6ImN3LlBob3RvbiIsYnVpbGQ6MjAsVmVyc2lvbjoiMS4yNiIsQ2ZnOntyb290UmVwbzoiaHR0cHM6Ly9jZG4uY2xvdWR3YWxsLm1lL3Bob3Rvbi8iLHVwZGF0ZToicmVtaW5kIixyb2xlczpbXSxtYXhXaWR0aDoiMjAwMCIsbWF4VGFiczoxNSxzY3JvbGxTcGVlZDoiMCIsZm9udDoiYXV0byIsZm9udFdlaWdodDoiNDAwIixmb250Q29kZToiYXV0byIsaWNvbjoiIixsaXN0Q29sczpbImluZm8iLCJzZWN1cml0eSJdLGJhdGNoRGJJbmZvRGVsYXk6NSxiYXRjaENvbXBhY3REZWxheTo1MDAsYmF0Y2hDcmVhdGVEZWxheToxNTAsYmF0Y2hVcGRhdGVDZmc6MTAwLGxvb3BBY3RpdmVUYXNrczo1LHRhc2tzUmVhZFJlcGxpY2F0b3I6ITAsc3RhdHNSZWZyZXNoOjEwLHBpbmdTZXNzaW9uOjAsdGFiQmFyOiJhdXRvIix0aGVtZToiIixncm91cGluZzpbIm5vcm1hbCIsImF1dG8iXX0sbGFuZzp7ZW46e1NxbEVkOntUWFRfVElUTEU6IlNRTCBxcnkgezF9IixUWFRfVElUTEUwOiJVbnRpdGxlZCBTUUwgcXJ5IixUQUdfTU9ERTp7dGFnczpbe01hbmdvOiJqc29uIn1dLGVtcHR5OntTUUw6InNxbCJ9fSxCVE5fUEFORUxfQ0xPU0U6IkNsb3NlIGVkaXRvciIsRVJSX05PX0pTT046IkNhbuKAmXQgY29udmVydCB0byBNYW5nbyIsRVJSX05FQVI6IkVycm9yIG5lYXIgJ3sxfSciLEVSUl9VTlNVUFA6InsxfSBpcyBub3Qgc3VwcG9ydGVkIixFUlJfQVNDREVTQzoiQWxsIEFTQyBvciBhbGwgREVTQyIsRVJSX1NRTDoiU1FMIGVycm9yOiB7MX0iLEJUTl9SVU46IlF1ZXJ5IixUSVBfUlVOOiJFeGVjdXRlcyBxdWVyeSBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsQlROX0VYUEw6IkV4cGxhaW4iLFRJUF9FWFBMOiJFeHBsYWlucyBxdWVyeSwgYWxsIGhpZGRlbiBwYXJhbXMgYW5kIGluZGV4ZXMgaW52b2x2ZWQiLEJUTl9TQVZFOidTYXZlIGFzPHNwYW4gY2xhc3M9Im1yLTMiPuKApjwvc3Bhbj4nLEJUTl9SRU5BTUU6IlJlbmFtZeKApiIsVElQX1NBVkU6IlNhdmVzIFNRTCBxdWVyeSB0byBsb2NhbFN0b3JhZ2UgZm9yIGxhdGVyIHJlLXVzZSIsQlROX0RFTDoiRGVsIixUSVBfREVMOiJEZWxldGVzIHRoaXMgU1FMIHF1ZXJ5IGZyb20gbG9jYWxTdG9yYWdlIGFuZCBzd2l0Y2hlcyB0byBEZWZhdWx0IHF1ZXJ5IixCVE5fUkVTRVQ6JzxzcGFuIGNsYXNzPSJtci0zIj5SZXNldDwvc3Bhbj4nLFRJUF9SRVNFVDoiUmVzZXRzIHRvIGluaXRpYWwgZGVmYXVsdCBxdWVyeSIsVFhUX1NUQVNIOiI8aDM+TWVtb2l6ZSBxdWVyeTwvaDM+PHA+U2F2ZXMgU1FMIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlLjwvcD4iLFBMQ19TVEFTSDoiUXVlcnkgdGl0bGUsIDMuLi4zMCBjaGFycyIsRVJSX1NUQVNIX1JFUToiVGl0bGUgcmVxdWlyZWQiLEVSUl9TVEFTSF9MRU46IjMuLi4zMCBjaGFyYWN0ZXJzIixFUlJfU1RBU0hfRVhJU1Q6IkFscmVhZHkgZXhpc3RzIixCVE5fU1RBU0hfT0s6IlNhdmUgcXVlcnkiLEJUTl9TVEFTSF9PSzE6IlNhdmUgJiBzd2l0Y2ggdG8gbmV3IixCVE5fU1RBU0hfQ0FOQ0VMOiJDYW5jZWwifSxUSVBfTE9HSU46IkxvZyBpbiIsVElQX1BST0ZJTEU6IkVkaXQgdXNlciBcbnByb2ZpbGUgZG9jIixUSVBfQ09ORklHOiJDb3VjaERCIGNvbmZpZyIsVElQX1NIQVJFOiJQaG90b24gc2V0dGluZ3MgYW5kIHVwZGF0ZSwgQ291Y2hEQiBpbmZvIixUSVBfUk9PVDoiU2luZ2xlIGNsaWNrOiBsaXN0IG9mIERCcyBcbkRvdWJsZSBjbGljazogY2xvc2UgYWxsIHRhYnMiLEJUTl9YQUxMOiLinJUgQ2xvc2UgYWxswqAiLEJUTl9YRExHOic8ZGl2IGNsYXNzPSJwYWJjIHBzZXVkb2xpbmsgdGRuIHA3IHRhciBsaDEwMCBmdzMwMCBvOTAiIHN0eWxlPSJ0b3A6MDtyaWdodDowOyI+4pyVPC9kaXY+JyxFUlJfUkVRX0lOVkFMSURDQUxMOiJJbnZhbGlkIHJlcXVlc3QgcGFyYW1zLCBwcm9iYWJseSBpbnZhbGlkIGNvbW1hbmQsIG9yIHRoZXJl4oCZcyBhIGJ1ZyIsRVJSX1JFUV9BVVRIUkVROiJZb3UgbmVlZCB0byBsb2cgaW4gdG8gdXNlIFBob3RvbiIsRVJSX1JFUV9ST0xFUkVROiJJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBydW4gUGhvdG9uIixFUlJfUkVROnswOiJPZmZsaW5lIiw0MDA6IkJhZCByZXF1ZXN0Iiw0MDE6IlVuYXV0aG9yaXplZCIsNDAzOiJGb3JiaWRkZW4iLDQwNDoiTm90IGZvdW5kIiw0MDU6Ik5vdCBhbGxvd2VkIiw0MDg6IlRpbWVvdXQiLDQwOToiQ29uZmxpY3QiLDQxMjoiUHJlY29uZGl0aW9uIGZhaWxlZCIsNDI5OiJUb28gbWFueSByZXF1ZXN0cyIsNTAwOiJJbnRlcm5hbCBlcnJvciIsNTAxOiJOb3QgaW1wbGVtZW50ZWQiLDUwMzoiU2VydmljZSB1bmF2YWlsYWJsZSIsNTA0OiJHYXRld2F5IHRpbWVvdXQiLDUwOToiQmFuZHdpZHRoIHF1b3RhIiw5OTk6IlVua25vd24gZXJyb3IifSxGQUlMX1RPT19NQU5ZX1RBQlM6InsxfSB0YWJzIG1heGltdW0sIHBsZWFzZSwgY2xvc2Ugc29tZXRoaW5nIG9yIGRvdWJsZS1jbGljayB0aGUgbG9nbyB0byBjbG9zZSBhbGwgdGFicy4iLEZBSUxfVEFCX0FQUDoiRmFpbGVkIHN0YXJ0aW5nIHRhYiBhcHAuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLiIsRExHX1VOTE9BRDoiVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcy4gUmVsb2FkPyIsRExHX1VOU0FWRUQ6IlRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMuIFByb2NlZWQ/IixVUERfT0xEOiJZb3VyIHZlcnNpb24gb2YgUGhvdG9uIGlzIG1vcmUgdGhhbiB7MX0gbW9udGh7Mn0gb2xkLiAiLFVQRF9NT05USDoiWW91IHVwZGF0ZWQgUGhvdG9uIG1vcmUgdGhhbiB7MX0gbW9udGh7Mn0gYWdvLiAiLFVQRF9UQUlMOidUbyB1cGRhdGUgY2xpY2sgPHNwYW4gY2xhc3M9ImZpLXdyZW5jaCBvODAiPjwvc3Bhbj4gaWNvbiBhdCBuYXZiYXIsIGFuZCB0aGVuIGNsaWNrIOKAmENoZWNrIGZvciB1cGRhdGVz4oCZIGJ1dHRvbi4nLE1TR19ORVdEQl9PSzoiQ3JlYXRlZCBuZXcgREIg4oCYezF94oCZIixNU0dfTkVXREJfRkFJTDoiRmFpbGVkIGNyZWF0aW5nIERCIOKAmHsxfeKAmS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06IHszfeKAmSIsTVNHX05FV0RCX05PQUNMOiJEQiDigJh7MX3igJkgY3JlYXRlZCBidXQgc2VjdXJpdHkgY29uZmlnIGZhaWxlZCwgd2hpY2ggbWVhbnMgREIgaXMgcHVibGljLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfeKAmSIsTVNHX1NFQ0RCX09LOiJVcGRhdGVkIHNlY3VyaXR5IG9iamVjdCBmb3Ig4oCYezF94oCZIixNU0dfU0VDREJfRkFJTDoiRmFpbGVkIHVwZGF0aW5nIHNlY3VyaXR5IG9iamVjdCBmb3Ig4oCYezF94oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfSIsTmV3SW5kZXg6e1RYVF9ORVc6IjxoMz5DcmVhdGUgbmV3IGluZGV4PC9oMz48cD5TYXZlcyBpbmRleCBpbnRvIGV4aXN0aW5nIG9yIG5ldyBkZXNpZ24gZG9jdW1lbnQuPC9wPiIsTEJMX1RZUEU6IlR5cGUiLFRBR19UWVBFOlt7IkpTIHZpZXciOiJqYXZhc2NyaXB0In0seyJFcmxhbmcgdmlldyI6ImVybGFuZyJ9LHsiTWFuZ28gaW5kZXgiOiJxdWVyeSJ9XSxMQkxfRERPQzoiRGRvYyBuYW1lIixQTENfRERPQzoiU2hvcnQgb2YgZnVsbCBmb3JtIixFUlJfWExBTkc6IkRkb2MgYWxyZWFkeSBleGlzdHMgYW5kIGhhcyBkaWZmZXJlbnQgdHlwZSIsUExDX05FVzoiS2V5IG5hbWUgaW4gLnZpZXdzIHByb3Agb2YgZGRvYyIsTVNHX0VSTEFORzoiRXJsYW5nIHZpZXdzIG1heSBiZSBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgQ291Y2hEQiIsQlROX05FV19DQU5DRUw6IkNhbmNlbCIsRVJSX05PX05BTUU6IkludmFsaWQgZGRvYyBvciBpbmRleCBuYW1lLCBjYW7igJl0IGNyZWF0ZSBpbmRleCIsRVJSX05PX05BTUVfUlVOOiJZb3UgY2Fu4oCZdCBydW4gZGVmYXVsdCBpbmRleCwgcGxlYXNlIHVzZSBTYXZlIGFzIGJ1dHRvbiIsRVJSX0VSUkRPQzoiQ2Fu4oCZdCBzYXZlIGludmFsaWQgaW5kZXguIHsxfS4iLE1TR19TQVZFRDoiVXBkYXRlZCB7MX0sIHJlbG9hZGluZyBlbnRyaWVzIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixqYXZhc2NyaXB0OntMQkxfTkVXOiJWaWV3IG5hbWUiLFRYVF9USVRMRTp7TkVXOiJDcmVhdGUgbmV3IHZpZXciLFVQRDoiVXBkYXRlIHZpZXcifSxUWFRfREVTQzp7TkVXOiJTYXZlcyB2aWV3IGludG8gbmV3IGRkb2MgaW4gPGI+ezF9PC9iPi4iLEFERDoiQWRkcyB2aWV3IGludG8gZXhpc3RpbmcgZGRvYyBpbiA8Yj57MX08L2I+LiIsVVBEOiJPdmVyd3JpdGVzIGV4aXN0aW5nIHZpZXcgaW5kZXggb2YgPGI+ezF9PC9iPi4ifSxCVE5fT0s6e05FVzoiQ3JlYXRlIGRkb2MgYW5kIHZpZXciLEFERDoiQWRkIHZpZXcgdG8gZGRvYyIsVVBEOiJPdmVyd3JpdGUgdmlldyJ9LEVSUl9ORVdfUkVROiJWaWV3IG5hbWUgcmVxdWlyZWQiLEVSUl9ORVdfU0xBU0g6IlNsYXNoZXMgYXJlIG5vdCBhbGxvd2VkIixFWFA6e05FVzoiVGFyZ2V0IGRlc2lnbiBkb2MgZG9lc27igJl0IGV4aXN0IGFuZCB3aWxsIGJlIGNyZWF0ZWQuIixBREQ6Ik5ldyB2aWV3IHdpbGwgYmUgYWRkZWQgaW50byBleGlzdGluZyBkZXNpZ24gZG9jLiIsVVBEOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBWaWV3IGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIHJlcGxhY2VkLid9fSxxdWVyeTp7TEJMX05FVzoiSW5kZXggbmFtZSIsVFhUX1RJVExFOntORVc6IkNyZWF0ZSBuZXcgaW5kZXgiLFVQRDoiVXBkYXRlIGluZGV4In0sVFhUX0RFU0M6e05FVzoiU2F2ZXMgTWFuZ28gaW5kZXggaW50byBuZXcgZGRvYyBpbiA8Yj57MX08L2I+LiIsQUREOiJBZGRzIE1hbmdvIGluZGV4IGludG8gZXhpc3RpbmcgZGRvYyBpbiA8Yj57MX08L2I+LiIsVVBEOiJPdmVyd3JpdGVzIGV4aXN0aW5nIE1hbmdvIGluZGV4IG9mIDxiPnsxfTwvYj4uIn0sQlROX09LOntORVc6IkNyZWF0ZSBkZG9jIGFuZCBpbmRleCIsQUREOiJBZGQgaW5kZXggdG8gZGRvYyIsVVBEOiJPdmVyd3JpdGUgaW5kZXgifSxFUlJfTkVXX1JFUToiSW5kZXggbmFtZSByZXF1aXJlZCIsRVJSX05FV19TTEFTSDoiU2xhc2hlcyBhcmUgbm90IGFsbG93ZWQiLEVYUDp7TkVXOiJUYXJnZXQgZGVzaWduIGRvYyBkb2VzbuKAmXQgZXhpc3QgYW5kIHdpbGwgYmUgY3JlYXRlZC4iLEFERDoiTmV3IGluZGV4IHdpbGwgYmUgYWRkZWQgaW50byBleGlzdGluZyBkZXNpZ24gZG9jLiIsVVBEOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBWaWV3IGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIHJlcGxhY2VkLid9fX0sSW5kZXhFZDp7VFhUX1RJVExFOiJNYW5nbyBpbmRleCB7MX3CoGluwqB7Mn0iLFRYVF9USVRMRTA6IkRlZmF1bHQgTWFuZ28gaW5kZXgiLEJUTl9QQU5FTF9DTE9TRToiQ2xvc2UgZWRpdG9yIixUQUdfTU9ERTp7dGFnczpbe0pTT046Impzb24ifV0sZW1wdHk6e1NvdXJjZToiamF2YXNjcmlwdCJ9fSxFUlJfTk9fSU5ERVg6Ik11c3QgaGF2ZSAuaW5kZXguZmllbGRzIGFycmF5IixFUlJfTk9fVFlQRTonUHJvcGVydHkgLnR5cGUgc2hvdWxkIGJlICJqc29uIicsRVJSX05PX0pTT046IkNhbuKAmXQgY29udmVydCB0byBKU09OIixCVE5fUlVOOiJTYXZlIGFuZCBydW4iLEJUTl9SVU4wOiJDcmVhdGUgbmV3IGFuZCBydW4iLFRJUF9SVU46IlNhdmVzIGluZGV4IGFuZCBzaG93cyBpbmRleCBlbnRyaWVzIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixNU0dfU0FWRUQ6IlVwZGF0ZWQgezF9LCByZWxvYWRpbmcgaW5kZXggZW50cmllcyIsQlROX1NBVkVBUzoiU2F2ZSBhc+KApiIsVElQX1NBVkVBUzoiU2F2ZXMgaW5kZXggdW5kZXIgZGlmZmVyZW50IG5hbWUgYW5kIHNob3dzIGluZGV4IGVudHJpZXMiLEJUTl9ERUw6IkRlbOKApiIsVElQX0RFTDoiRGVsZXRlcyB0aGlzIE1hbmdvIGluZGV4IixCVE5fUkVWRVJUOiJSZXZlcnQiLFRJUF9SRVZFUlQ6IlJldmVydHMgZWRpdG9yIHRvIHNhdmVkIGluZGV4IGNvZGUiLEVSUl9OT19OQU1FOiJJbnZhbGlkIGRkb2Mgb3IgaW5kZXggbmFtZSwgY2Fu4oCZdCBjcmVhdGUgaW5kZXgiLEVSUl9OT19OQU1FX1JVTjoiWW91IGNhbuKAmXQgcnVuIGRlZmF1bHQgaW5kZXgsIHBsZWFzZSB1c2UgU2F2ZSBhcyBidXR0b24iLEVSUl9FUlJET0M6IkNhbuKAmXQgc2F2ZSBpbnZhbGlkIGluZGV4LiB7MX0uIixNU0dfREVMX1RFWFQ6JzxzcGFuIGNsYXNzPSJyZWQxIGZpLWFsZXJ0Ij48L3NwYW4+IERlbGV0ZSBNYW5nbyBpbmRleCB7MX0gZnJvbSB7Mn0/JyxCVE5fREVMX1lFUzoiRGVsZXRlIixCVE5fREVMX05POiJDYW5jZWwiLE1TR19ERUxfT0s6IkluZGV4IHsxfSBkZWxldGVkIixNU0dfREVMX0ZBSUw6IkZhaWxlZCBkZWxldGluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIn0sVmlld0VkOntUWFRfVElUTEU6e2phdmFzY3JpcHQ6IkpTIHZpZXcgezF94oCJL+KAiXsyfSIsZXJsYW5nOiJFcmxhbmcgdmlldyB7MX3igIkv4oCJezJ9In0sVEFHX01PREU6e3RhZ3M6W1t7UmVkdWNlOiJyZWR1Y2UifSx7SlNPTjoianNvbiJ9XV0sZW1wdHk6e01hcDoibWFwIn19LEJUTl9QQU5FTF9DTE9TRToiQ2xvc2UgZWRpdG9yIixFUlJfTk9fTUFQOiJNYXAgaXMgbm90IGEgZnVuY3Rpb24iLEVSUl9OT19SRURVQ0U6IlJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIsRVJSX0ZfQlVJTFRJTjoiVW5rbm93biBidWlsdC1pbiByZWR1Y2VyIixFUlJfRVJSRE9DOiJDYW7igJl0IHNhdmUgaW52YWxpZCBkZXNpZ24gZG9jLiB7MX0uIixCVE5fUlVOOiJSdW4gdmlldyIsVElQX1JVTjoiUnVucyBzYXZlZCB2aWV3IGluZGV4IHF1ZXJ5IixCVE5fU0FWRToiU2F2ZSBhbmQgcnVuIixUSVBfU0FWRToiU2F2ZXMgdmlldyBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsTVNHX0ZBSUw6IkZhaWxlZCBzYXZpbmcgezF9LiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfeKAmSIsTVNHX1NBVkVEOiJVcGRhdGVkIHsxfSwgcmVsb2FkaW5nIHZpZXciLEJUTl9TQVZFQVM6IlNhdmUgYXPigKYiLFRJUF9TQVZFQVM6IlNhdmVzIHZpZXcgdW5kZXIgZGlmZmVyZW50IG5hbWUgYW5kIHNob3dzIHRoZSByZXN1bHQiLEJUTl9SRVZFUlQ6IlJldmVydCIsVElQX1JFVkVSVDoiUmV2ZXJ0cyBlZGl0b3IgdG8gc2F2ZWQgdmlldyBjb2RlIixCVE5fREVMOiJEZWzigKYiLFRJUF9ERUw6IkRlbGV0ZXMgdGhpcyB2aWV3IGluZGV4IixFUlJfTk9fTkFNRToiSW52YWxpZCBkZG9jIG9yIHZpZXcgbmFtZSwgY2Fu4oCZdCBjcmVhdGUgdmlldyIsTVNHX0RFTF9URVhUOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBEZWxldGUgdmlldyBpbmRleCB7MX0gZnJvbSB7Mn0/JyxCVE5fREVMX1lFUzoiRGVsZXRlIixCVE5fREVMX05POiJDYW5jZWwiLE1TR19ERUxfT0s6IlZpZXcgezF9IGRlbGV0ZWQiLE1TR19ERUxfRkFJTDoiRmFpbGVkIGRlbGV0aW5nIHsxfS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkifSxNYW5nb0VkOntUWFRfVElUTEU6Ik1hbmdvIHFyeSB7MX0iLFRYVF9USVRMRTA6IlVudGl0bGVkIE1hbmdvIHFyeSIsVEFHX01PREU6e3RhZ3M6W3tKU09OOiJqc29uIn1dLGVtcHR5OntTb3VyY2U6ImphdmFzY3JpcHQifX0sQlROX1BBTkVMX0NMT1NFOiJDbG9zZSBlZGl0b3IiLEVSUl9OT19TRUxFQ1RPUjoiTm8gLnNlbGVjdG9yIHByb3BlcnR5IixFUlJfTk9fRklFTERTOiJObyAuZmllbGRzIGFycmF5IixFUlJfRU1QVFlfRklFTERTOiJFbXB0eSAuZmllbGRzIGFycmF5IixFUlJfTk9fSlNPTjoiQ2Fu4oCZdCBjb252ZXJ0IHRvIEpTT04iLEVSUl9NQU5HT19LRVlTOiJVbmtub3duIGtleSB7MX0iLEVSUl9JTlZBTElEX09QRVJBVE9SOiJJbnZhbGlkIG9wZXJhdG9yIHsxfSIsRVJSX1ZfTU9EMDoiJG1vZCBkaXZpc29yIGlzIDAiLEVSUl9WX01PRDE6IiRtb2QgbXVzdCBiZSBbZGl2aXNvciwgcmVtYWluZGVyXSIsRVJSX1ZfTU9ERDoiJG1vZCBkaXZpc29yIG11c3QgYmUgYW4gaW50ZWdlciIsRVJSX1ZfTU9EUjoiJG1vZCByZW1haW5kZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIixFUlJfVl9FWElTVDoiJGV4aXN0cyBtdXN0IGJlIGEgYm9vbCIsRVJSX1ZfVFlQRTA6IiR0eXBlIG11c3QgYmUgYSBzdHJpbmciLEVSUl9WX1RZUEUxOiJJbnZhbGlkICR0eXBlIixFUlJfVl9TSVpFOiIkc2l6ZSBtdXN0IGJlIGFuIGludGVnZXIiLEVSUl9WX1JFR0VYOiIkcmVnZXggbXVzdCBiZSBhIHN0cmluZyIsRVJSX1ZfQVJSOiJ7MX0gbXVzdCBiZSBhbiBhcnJheSIsRVJSX1ZfT0JKOiJ7MX0gbXVzdCBiZSBhbiBvYmplY3QiLEJUTl9SVU46IlF1ZXJ5IixUSVBfUlVOOiJFeGVjdXRlcyBxdWVyeSBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsQlROX0VYUEw6IkV4cGxhaW4iLFRJUF9FWFBMOiJFeHBsYWlucyBxdWVyeSwgYWxsIGhpZGRlbiBwYXJhbXMgYW5kIGluZGV4ZXMgaW52b2x2ZWQiLEJUTl9TQVZFOidTYXZlIGFzPHNwYW4gY2xhc3M9Im1yLTMiPuKApjwvc3Bhbj4nLEJUTl9SRU5BTUU6IlJlbmFtZeKApiIsVElQX1NBVkU6IlNhdmVzIE1hbmdvIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlIixCVE5fREVMOiJEZWwiLFRJUF9ERUw6IkRlbGV0ZXMgdGhpcyBNYW5nbyBxdWVyeSBmcm9tIGxvY2FsU3RvcmFnZSBhbmQgc3dpdGNoZXMgdG8gRGVmYXVsdCBxdWVyeSIsQlROX1JFU0VUOic8c3BhbiBjbGFzcz0ibXItMyI+UmVzZXQ8L3NwYW4+JyxUSVBfUkVTRVQ6IlJlc2V0cyB0byBpbml0aWFsIGRlZmF1bHQgcXVlcnkiLFRYVF9TVEFTSDoiPGgzPk1lbW9pemUgcXVlcnk8L2gzPjxwPlNhdmVzIE1hbmdvIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlLjwvcD4iLFBMQ19TVEFTSDoiUXVlcnkgdGl0bGUsIDMuLi4zMCBjaGFycyIsRVJSX1NUQVNIX1JFUToiVGl0bGUgcmVxdWlyZWQiLEVSUl9TVEFTSF9MRU46IjMuLi4zMCBjaGFyYWN0ZXJzIixFUlJfU1RBU0hfRVhJU1Q6IkFscmVhZHkgZXhpc3RzIixCVE5fU1RBU0hfT0s6IlNhdmUgcXVlcnkiLEJUTl9TVEFTSF9PSzE6IlNhdmUgJiBzd2l0Y2ggdG8gbmV3IixCVE5fU1RBU0hfQ0FOQ0VMOiJDYW5jZWwifSxVc2VyRG9jOntUWFRfVElUTEU6IkNyZWF0ZSBuZXcgdXNlciIsVFhUX1RJVExFX0VEOiJDaGFuZ2UgcGFzc3dvcmQgb3Igcm9sZXMiLExCTF9OOiJOYW1lIixQTENfTjoiVXNlciBsb2dpbiIsRVJSX046IkNhbuKAmXQgc3RhcnQgd2l0aCBfIG9yIGNvbnRhaW4gOiIsRVJSX05YOiJVc2VybmFtZSBhbHJlYWR5IGV4aXN0cyIsTEJMX1A6IlBhc3N3b3JkIixQTENfUDoiVXNlciBwYXNzc3dvcmQiLFBMQ19QX0VEOiJDaGFuZ2UgdXNlciBwYXNzc3dvcmQiLEVSUl9QOiJSZXF1aXJlZCIsTEJMX1I6IlJvbGVzIixQTENfUjoiQWRkIHJvbGVzIixFUlJfUjoiUm9sZXMgY2Fu4oCZdCBzdGFydCB3aXRoIF8iLEJUTl9TQVZFOiJTYXZlIHVzZXIiLEJUTl9ET0M6IkNyZWF0ZSBlbXB0eSBKU09O4oCmIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19PSzoiVXNlciB7MX0gc3VjY2Vzc2Z1bGx5IHNhdmVkIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB1c2VyIHsxfS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkifSxEZWxEQjp7VFhUX1RJVExFOiJEZWxldGUgREJzIixUWFRfVElUTEUxOiJEZWxldGUgREIiLFBMQ19EQlM6IlNlbGVjdCBEQnMgdG8gZGVsZXRlIixFUlJfREJTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIERCIixMQkxfTkVXOiJSZS1jcmVhdGUgREJzIGFmdGVyIGRlbGV0aW9uIixMQkxfTkVXX0FDTDoiQXBwbHkgb3JpZ2luYWwgc2VjdXJpdHkgb2JqZWN0cyIsTEJMX05FV19RTlA6IlJlc3RvcmUgc2hhcmRpbmcgc2V0dGluZ3MiLFRYVF9XQVJOOmZ1bmN0aW9uKHgpe3ZhciBhPU9iamVjdC5jbG9uZSh4KTtyZXR1cm4gYS5zY291bnQ9YS5jb3VudDwyPyIiOiJzIixhLnNpemU9KCthLnNpemUpLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYiIpLGEuZGlzaz0oK2EuZGlzaykuYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIiksWyJZb3UgYXJlIGRlbGV0aW5nIHtjb3VudH0gREJ7c2NvdW50fSBjb250YWluaW5nIHtzaXplfSBvZiBkYXRhLiIsIkRlbGV0aW9uIHdpbGwgZnJlZSB+e2Rpc2t9IG9mIGRpc2sgc3BhY2UgYXQgPG5vYnI+e2Jhc2V9PC9ub2JyPi4iXS5qb2luKCIgIikuYXNzaWduKGEpfSxCVE5fU1RBUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHg/IkRlbGV0ZSAiK3grIiBEQiIrKHg+MT8icyI6IiIpOiJOb3RoaW5nIHRvIGRlbGV0ZSJ9LEJUTl9DQU5DRUw6IkNhbmNlbCIsTVNHX09LOiJTdWNjZXNzZnVsbHkgZGVsZXRlZCDigJh7MX3igJkgREIiLE1TR19GQUlMOiJGYWlsZWQgZGVsZXRpbmcgREIg4oCYezF94oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTogezN94oCZIn0sU2VjT2JqOntUWFRfVElUTEU6IkFjY2VzcyBjb250cm9sIixMQkxfREJTOiJEQnMiLFBMQ19EQlM6IlNlbGVjdCBEQiBuYW1lcyB0byBzZXQgQUNMIixFUlJfREJTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIERCIixUWFRfQURNOiJBZG1pbmlzdHJhdG9ycyIsTEJMX1VBRE06IlVzZXJzIixQTENfVUFETToiVXNlciBuYW1lcyIsTEJMX0dBRE06IlJvbGVzIixQTENfR0FETToiUm9sZXMgd2l0aCBhZG1pbiBhY2Nlc3MiLEVSUl9BRE06IkludmFsaWQgbmFtZSIsRVJSX1VOQU1FOiJOYW1lcyBjYW7igJl0IHN0YXJ0IHdpdGggXyBvciBjb250YWluIDoiLFRYVF9NRU06Ik1lbWJlcnMiLFBMQ19VTUVNOiJVc2VyIG5hbWVzIixQTENfR01FTToiUm9sZXMgd2l0aCBtZW1iZXIgYWNjZXNzIixCVE5fU1RBUlQ6IlNldCBzZWN1cml0eSIsQlROX0NBTkNFTDoiQ2FuY2VsIixNU0dfT0s6IlNlY3VyaXR5IG9iamVjdCBmb3IgREIg4oCYezF94oCZIHVwZGF0ZWQiLE1TR19GQUlMOiJGYWlsZWQgdXBkYXRpbmcgc2VjdXJpdHkgb2JqZWN0IGZvciBEQiDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OiB7M33igJkifSxMb2dpbjp7VFhUX0xPR0lOOiJMb2cgaW4iLFBMQ19VTkFNRToiVXNlcm5hbWUiLFBMQ19QV0Q6IlBhc3N3b3JkIixCVE5fTE9HSU46IkNyZWF0ZSBzZXNzaW9uIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19BVVRIX09LOiJBdXRob3JpemVkIGFzIHsxfSIsTVNHX0FVVEhfRkFJTDoiQXV0aG9yaXphdGlvbiBhcyB7MX0gZmFpbGVkLiBTZXJ2ZXIgcmVzcG9uZGVkIHsyfTrCoHszfSJ9LExvZ291dDp7VFhUX0xPR09VVDoiTG9nIG91dCBhbmQgcmVsb2FkIixUWFRfUFJPRklMRToiT3BlbiB1c2VyIHByb2ZpbGUgZG9jIixNU0dfTE9HT1VUX1NUQVJUOiJMb2dnaW5nIG91dC4uLiIsTVNHX0xPR09VVF9PSzoiWW91IHdhcyBsb2dnZWQgb3V0IHN1Y2Nlc3NmdWxseSIsTVNHX0xPR09VVF9GQUlMOiJMb2cgb3V0IGZhaWxlZC4gU2VydmVyIHJlc3BvbmRlZCB7MX06wqB7Mn0iLFRYVF9DTEVBUl9WU1RBVEU6IkNsZWFyIGxvY2FsIHNldHRpbmdzLi4uIixIRFJfQ0xFQVJfRExHOiJDbGVhciBsb2NhbCBzZXR0aW5ncyIsVFhUX0NMRUFSX0RMRzoiUmVtb3ZlIFBob3RvbiBzZXR0aW5ncyBzdG9yZWQgaW4gdGhpcyBicm93c2VyIGxvY2FsIHN0b3JhZ2U6IixPUFRfQ0xFQVJfRExHOltbIkZvcmdldCBhbGwgb3BlbiB0YWJzIiwiY3cuUGhvdG9uLlRhYkNsb3NlSGlzdG9yeSJdLFsiUmVzZXQgREIgZ3JvdXAgZm9sZHMiLCJjdy5QaG90b24uREJzLkdyb3VwcyJdLFsiRm9yZ2V0IERCIGZhdm9yaXRlcyIsImN3LlBob3Rvbi5EQnMuU3RhcnMiXSxbIkZvcmdldCB2aWV3IGdyaWQgZmllbGRzIiwiY3cuUGhvdG9uLlZpZXdTdGF0ZS4iXSxbIkZvcmdldCBkb2Mgdmlld3N0YXRlcyIsImN3LlN5cy5KU09OLnZpZXdzdGF0ZS4iXSxbIlJlc2V0IHRhc2sgZ3JvdXAgZm9sZHMiLCJjdy5QaG90b24uVGFza3MuRm9sZCJdLFsiRm9yZ2V0IHN0b3JlZCBNYW5nbyBxdWVyaWVzIiwiY3cuUGhvdG9uLk1hbmdvLiIsITFdLFsiRm9yZ2V0IHN0b3JlZCBTUUwgcXVlcmllcyIsImN3LlBob3Rvbi5TUUwuIiwhMV1dLEJUTl9DTEVBUl9PSzoiQ2xlYXIgYW5kIHJlbG9hZCIsQlROX0NMRUFSX05POiJDYW5jZWwiLE1TR19WU1RBVEVfQ0xFQU5FRDoiTG9jYWwgdmlld3N0YXRlIGNhY2hlIGNsZWFuZWQifSxUYWI6e0JUTl9DTE9TRVRBQjoiQ2xvc2UgdGFiIn0sTmV3REI6e1RYVF9USVRMRToiQ3JlYXRlIERCcyIsVFhUX1RJVExFMToiQ3JlYXRlIERCIixMQkxfREJTOiJOYW1lcyIsUExDX0RCUzoiREJzIHRvIGNyZWF0ZSIsRVJSX0RCX0VYSVNUOiJEQiB7MX0gYWxyZWFkeSBleGlzdHMiLEVSUl9EQl9OQU1FOiJPbmx5IGxvd2VyY2FzZSBhLXosIDAtOSBhbmQgXyQoKSstLyBhcmUgYWxsb3dlZCIsRVJSX0RCX1VORDoiREIgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGxvd2VyY2FzZSBhLXoiLFRYVF9BRE06IkFkbWluaXN0cmF0b3JzIixMQkxfVUFETToiVXNlcnMiLFBMQ19VQURNOiJVc2VyIG5hbWVzIixMQkxfR0FETToiUm9sZXMiLFBMQ19HQURNOiJSb2xlcyB3aXRoIGFkbWluIGFjY2VzcyIsRVJSX0FETToiSW52YWxpZCBuYW1lIixFUlJfVU5BTUU6Ik5hbWVzIGNhbuKAmXQgc3RhcnQgd2l0aCBfIG9yIGNvbnRhaW4gOiIsVFhUX01FTToiTWVtYmVycyIsUExDX1VNRU06IlVzZXIgbmFtZXMiLFBMQ19HTUVNOiJSb2xlcyB3aXRoIG1lbWJlciBhY2Nlc3MiLExCTF9DTFVTVEVSOiJTdG9yYWdlIixUWFRfU0hBUkRTOmZ1bmN0aW9uKHgpe3JldHVybiJzaGFyZCIrKHg+MT8icyI6IiIpfSxUWFRfQ09QSUVTOmZ1bmN0aW9uKHgpe3JldHVybiJkYXRhIGNvcCIrKHg8Mj8ieSI6ImllcyIpfSxUWFRfUEFSVElUSU9OUzoicGFydGl0aW9uZWQiLEJUTl9TVEFSVDoiQ3JlYXRlIERCcyIsQlROX1NUQVJUX1BVQkxJQzoiQ3JlYXRlIHB1YmxpYyBEQnMiLEJUTl9DQU5DRUw6IkNhbmNlbCJ9LENvbXBhY3Q6e1RYVF9USVRMRToiQ29tcGFjdCBEQnMiLFRYVF9USVRMRTE6IkNvbXBhY3QgREIiLFRYVF9EQkxJU1Q6ZnVuY3Rpb24oeCl7dmFyIGE9eC5sZW5ndGg7cmV0dXJuIllvdSBhcmUgZ29pbmcgdG8gY29tcGFjdCB7MX0gYnVja2V0ezJ9OiAiLmFzc2lnbihhLGE8Mj8iIjoicyIpK3gubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmVzY2FwZUhUTUwoKX0pLmpvaW4oIiwgIil9LFBMQ19EQlM6IlNlbGVjdCBEQnMgdG8gY29tcGFjdCIsUExDX0RET0NTOiJTZWxlY3QgZGRvY3MgZm9yIHZpZXcgY29tcGFjdGlvbiIsRVJSX0RCUzoiU2VsZWN0IGF0IGxlYXN0IG9uZSBEQiIsRVJSX0RET0NTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIGRlc2lnbiBkb2MiLFRBR19PUDpbeyJTdHJpcCBvbGQgcmV2cyI6ImRvY3MifSx7IlN0cmlwIG9sZCB2aWV3cyI6InZpZXdzIn0seyJDb21wYWN0IHZpZXdzIjoiZGRvY3MifV0sRVJSX09QOiJTZWxlY3QgYXQgbGVhc3Qgb25lIGFjdGlvbiIsRVJSX1ZDOiJWaWV3IGNvbXBhY3Rpb24gcmVxdWlyZXMgc2VsZWN0aW5nIGRkb2NzLCBzbyBpdOKAmXMgdW5hdmFpbGFibGUgZm9yIG11bHRpcGxlIERCcyBzZWxlY3RlZCIsQlROX1NUQVJUOiJTdGFydCBjb21wYWN0aW9uIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19DT01QQUNUX1NUQVJUOiJTdGFydGVkIGNvbXBhY3Rpb24gb2Yg4oCYezF94oCZIixNU0dfQ09NUEFDVF9GQUlMOiJGYWlsZWQgc3RhcnRpbmcgY29tcGFjdGlvbiBvZiDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixNU0dfQ09NUEFDVF9GQUlMX1NPTUU6IkVycm9ycyBzdGFydGluZyBhdCBsZWFzdCBvbmUgY29tcGFjdGlvbiB0YXNrLiBDaGVjayBjb25zb2xlIGZvciBkZXRhaWxzLiJ9LCRzdGF0czp7fSwkdmlldzp7TVNHX0xPQURJTkc6IkxvYWRpbmcuLi4iLE9QVF9BTExET0NTOiJBbGwgZG9jdW1lbnRzIixPUFRfRERPQ1M6IkRlc2lnbiBkb2N1bWVudHMiLE9QVF9DSEFOR0VTOiJDaGFuZ2VzIGZlZWQiLE9QVF9MT0NBTDoiTG9jYWwgZG9jdW1lbnRzIixPUFRfQ09ORkxJQ1RTOiJEb2N1bWVudHMgdy9jb25mbGljdHMiLE9QVF9NUVJJRVM6IkxvY2FsIE1hbmdvIHF1ZXJpZXMiLE9QVF9NSU5ESUNFUzoiTWFuZ28gaW5kaWNlcyIsT1BUX1NRTFFSSUVTOiJMb2NhbCBTUUwgcXVlcmllcyIsVFhUX0ZST006ImZyb20iLFBMQ19TVEFSVEtFWToiU3RhcnQga2V5IG9yIF81IHRvIHNraXAgNSIsVElQX1NISUZUX01JTlVTOiJTaGlmdCBmcmFtZSBiYWNrd2FyZCIsVElQX1NISUZUX1BMVVM6IlNoaWZ0IGZyYW1lIGZvcndhcmQiLFRJUF9DTEVBUl9GSUxURVI6IkNsZWFyIHN0YXJ0a2V5IixUSVBfVVA6Ik9wZW4gezF9IGRvYyBsaXN0IixUSVBfUkVMT0FEOiJSZWxvYWQiLEJUTl9ORVdET0M6Ik5ldyBkb2PigIkiLEJUTl9ORVdET0NfUE9QVVA6Ik5ldyBkb2PigKYiLEJUTl9ORVdVU0VSX0RMRzoiTmV3IHVzZXLigKYiLEJUTl9ORVdJRFg6IkFkZCB2aWV34oCmIixCVE5fQ09QWURPQ1M6IkNvcHkvZHVtcOKApiIsQlROX0RFTDA6IkRlbOKApiIsQlROX0RFTERPQ1M6J0RlbDxzcGFuIGNsYXNzPSJ3MTI4MHBsdXMiPiBkb2NzPC9zcGFuPuKApicsQlROX0RFTDFET0M6J0RlbDxzcGFuIGNsYXNzPSJ3MTI4MHBsdXMiPiBkb2M8L3NwYW4+4oCmJyxCVE5fQUNMOiJBQ0zigKYiLEJUTl9DT01QQUNUOiJDb21wYWN04oCmIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLEJUTl9ORVdNSURYOiJDcmVhdGUgaW5kZXjigKYiLFRJUF9DTE9TRUpTT046IkNsb3NlIEpTT04iLFRJUF9BRERDT0w6IkFkZCBjb2x1bW4iLFBMQ19TRUFSQ0g6IlNlYXJjaCIsVFhUX0REU1RBVFM6JzxzcGFuPkluZGV4IGRhdGE6wqB7Mn08L3NwYW4+IDxzcGFuIGNsYXNzPSJtbDE1Ij5JbmRleCBkaXNrIHNpemU6wqB7MX08L3NwYW4+JyxFUlJfR0VUVklFV1M6IkZhaWxlZCByZWFkaW5nIGxpc3Qgb2YgdmlldyBmdW5jdGlvbnMgZm9yIHsxfSBEQi4iLEVSUl9HRVRBQ0w6IkZhaWxlZCByZWFkaW5nIHNlY3VyaXR5IG9iamVjdCIsVFhUX0VNUFRZOiJTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggZW1wdHkgbGlzdCIsVFhUX05PVEZPVU5EOiJOb3RoaW5nIGZvdW5kIixUWFRfTUFQVklFVzpmdW5jdGlvbih4LGEsYixjKXtpZigheCYmIWEpcmV0dXJuIk5vIHJvd3MiO3ZhciBkPSIiO3JldHVybiBudWxsPT1iPyhkPSJ7MX0gb2YgezJ9Ii5hc3NpZ24oeCxhKSxjfHwoZCs9IiByb3ciKygxIT1hPyJzIjoiIikpKTooZD0nRm91bmQgPHNwYW4gY2xhc3M9InZpZXctZm91bmQgcGwzIHByMyI+JytiKyI8L3NwYW4+IixjfHwoZCs9IiByb3ciKygxIT1iPyJzIjoiIikpKSxkfSxCVE5fVklFV0NPREU6IkNvZGUiLEJUTl9WSUVXQ09ERV9HTTonPHNwYW4gY2xhc3M9ImZpLWFsaWduLWxlZnQgcGwxIHByMSBvODAiPjwvc3Bhbj4nLFRJUF9WSUVXQ09ERToiRWRpdCB2aWV3aW5kZXggb3IgcXVlcnkgc291cmNlIGNvZGUiLEJUTl9HUkVEVUNFX0dNOic8c3BhbiBjbGFzcz0iZmktc2FmZXR5LWNvbmUgZGliIHZhdCByb3QxODAgbzkwIGZzOTUiPjwvc3Bhbj4nLFRJUF9HUkVEVUNFOiJDbGljayB0byB0dXJuIHJlZHVjZSBvbiIsTVNHX1NUQVJUX0NIQU5HRToiU3RhcnRpbmcgZnJvbSBrZXkgezF9IixFUlJfTk9UQVVTRVI6Ik5vdCBhIHVzZXIiLFRYVF9TRUxFQ1Q6IlNlbGVjdCB7MX0iLFRYVF9VTlNFTEVDVDoiVW5zZWxlY3QgezF9IixUWFRfVU5TRUxFQ1RfT0Y6J1VuY2hlY2sgezF9PHNwYW4gY2xhc3M9InBsMSBmczgwIGxoMTUwIGRpYiB2YXQgbzYwIG1yLTMiPjp7Mn08L3NwYW4+JyxUWFRfU0VMRUNUX0FMTDoiYWxsIixUWFRfU0VMRUNUX0ZJTFRFUjoiZm91bmQiLFRJUF9BTkNIT1I6Ik9wZW4gSlNPTiBpbiBuZXcgYnJvd3NlciB0YWIiLFRBR19SRURVQ0U6e3RhZ3M6W1t7Ikdyb3VwIG5vbmUiOiIwIn0seyLigIlMMeKAiSI6IjEifSx7IuKAiUwy4oCJIjoiMiJ9LHsi4oCJTDPigIkiOiIzIn0seyLigIlMNOKAiSI6IjQifSx7IuKAiUw14oCJIjoiNSJ9LHtFeGFjdDoiOTkifV1dLGVtcHR5OnsiTm8gcmVkdWNlIjoiIn0sZ3JvdXBzaGltOiIiLHRhZ3NoaW06IiJ9LFNFTF9SRURVQ0U6W3tpZDoiIix0ZXh0OiJObyByZWR1Y2UifSx7aWQ6IjAiLHRleHQ6IlJlZHVjZSBhbGwifSx7aWQ6IjEiLHRleHQ6IlJlZHVjZSBMMSJ9LHtpZDoiMiIsdGV4dDoiUmVkdWNlIEwyIn0se2lkOiIzIix0ZXh0OiJSZWR1Y2UgTDMifSx7aWQ6IjQiLHRleHQ6IlJlZHVjZSBMNCJ9LHtpZDoiNSIsdGV4dDoiUmVkdWNlIEw1In1dLFRBR19XSVRIRE9DUzp7dGFnczpbeyJJbmNsdWRlIGRvY3MiOiJkb2NzIn1dLGVtcHR5OnsiUmV2cyBvbmx5IjoiIn0sZ3JvdXBzaGltOiIiLHRhZ3NoaW06IiJ9LFRYVF9ERUxfVElUTEU6IkJ1bGsgZGVsZXRlIGRvY3MiLFRYVF9ERUxfV0FSTjpmdW5jdGlvbih4LGEpe3JldHVybiJZb3UgYXJlIGdvaW5nIHRvIGRlbGV0ZSAiK3grIiBkb2MiKyh4PjE/InMiOiIiKSsiIGZyb20gdGhlIOKAmCIrYSsi4oCZIERCLiJ9LFRYVF9ERUxfV0FSTl9ISURERU46ZnVuY3Rpb24oeCxhKXtyZXR1cm4iT25seSAiK2ErIiBkb2MiKyhhPjE/InMiOiIiKSsiIG9mICIreCsiIHNlbGVjdGVkICIrKDE9PWE/ImlzIjoiYXJlIikrIiB2aXNpYmxlIGluIGN1cnJlbnQgc2NvcGUsIGJlIGNhcmVmdWwuIn0sQlROX0RFTF9TVEFSVDoiUHJvY2VlZCIsTEJMX0RFTF9BTEw6IkRlbGV0ZSBkb2NzIGFuZCB0aGVpciBjb250ZW50IixMQkxfREVMX1JFVEFJTjoiTWFyayBkb2NzIGFzIGRlbGV0ZWQgYnV0IHJldGFpbiBjb250ZW50IixMQkxfREVMX1BVUkdFOiJQdXJnZSBidXQgb25seSBhY3RpdmUgcmV2aXNpb25zIixMQkxfREVMX1hQVVJHRToiUHVyZ2UgYWxsIGtub3duIHJldnMgY29tcGxldGVseSIsTVNHX0RFTF9GQUlMOiJGYWlsZWQgZGVsZXRpbmcgZG9jc+KAmS4gU2VydmVyIHJlc3BvbmRlZCDigJh7MX06IHsyfeKAmSIsTVNHX0RFTF9PSzpmdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPSIgZnJvbSB0aGUgIitiKyIgYnVja2V0IixmPS9wdXJnZS8udGVzdChjKSxnPWE+MT8icyI6IiI7cmV0dXJuIGE9PShkPWR8fHgpP2U9IlN1Y2Nlc3NmdWxseSAiKyhmPyJwdXJnZWQgIjoiZGVsZXRlZCAiKSthKyIgZG9jIitnK2U6KGU9YT8iRGVsZXRlZCAiK2ErIiBkb2MiK2crZSsiLCBidXQgZmFpbGVkICI6IkZhaWxlZCAiLGUrPSJ0byBkZWxldGUgIisoZC1hKSsiIGRvYyIrKGQtYT4xPyJzIjoiIikrIi4gIixlKz0iRGVsZXRpb24gd2FzIGxpa2VseSBkZW5pZWQgYnkgdmFsaWRhdGUgZnVuY3Rpb24gb3IgZG9jIisoeC1hPjE/InMgd2VyZSI6IiB3YXMiKSsiIGFscmVhZHkgZGVsZXRlZC4gIixlKz0iU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuIiksZX19LCRkYnM6e1RJUF9SRUxPQUQ6IlJlbG9hZCBEQiBsaXN0IixCVE5fTkVXREI6Ik5ldyBEQuKApiIsQlROX0NPTVBBQ1Q6IkNvbXBhY3TigKYiLEJUTl9ERUxEQjoiRGVsZXRl4oCmIixCVE5fRFVNUDoiJm5ic3A7Wmlw4oCmJm5ic3A7IixCVE5fVU5EVU1QOiJSZXN0b3Jl4oCmIixCVE5fU1RBVFM6IlN0YXRz4oCJIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLFBMQ19TRUFSQ0g6IlNlYXJjaCIsUExDX1NFQVJDSF9EQlM6IlNlYXJjaCBEQnMiLFBMQ19TRUFSQ0hfVEFTS1M6IlNlYXJjaCB0YXNrcyIsVFhUX0RCU1ZJRVc6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSIiO3JldHVybiBjPXh8fGE/eD09YT94KyIgREIiKyhhPjE/InMiOiIiKTp4PjFlNHx8YT4xZTQ/InsxfSAvIHsyfSIuYXNzaWduKHgsYSk6eD45OSYmYT45OXx8eD45OTl8fGE+OTk5PyJ7MX0gb2YgezJ9Ii5hc3NpZ24oeCxhKToiezF9IG9mIHsyfSBEQiIuYXNzaWduKHgsYSkrKGE+MT8icyI6IiIpOiJObyBEQnMiLGImJihjKz0iICIrYiksY30sVFhUX1RBU0tWSUVXOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHh8fGE/KHg9PWE/InsxfSB0YXNrIjoiezF9IG9mIHsyfSB0YXNrIikuYXNzaWduKHgsYSkrKGE+MT8icyI6IiIpOiJObyB0YXNrcyJ9LFRJUF9EQlNJWkU6IkRhdGE6IHsxfVxuRGlzazogezJ9IixNU0dfTkVXREJfU1RBUlQ6IkNyZWF0ZWQgbmV3IERCIOKAmHsxfeKAmSIsTVNHX05FV0RCX0ZBSUw6IkZhaWxlZCBjcmVhdGluZyBEQiDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OiB7M33igJkiLE1TR19ORVdEQl9OT0FDTDoiREIg4oCYezF94oCZIGNyZWF0ZWQsIGJ1dCBzZXR0aW5nIHNlY3VyaXR5IGNvbmZpZyBmYWlsZWQsIHNvIERCIGlzIHB1YmxpYy4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkiLFRYVF9TRUxFQ1Q6IlNlbGVjdCB7MX0iLFRYVF9VTlNFTEVDVDoiVW5zZWxlY3QgezF9IixUWFRfU0VMRUNUX0FMTDoiYWxsIixUWFRfU0VMRUNUX0ZJTFRFUjoiZmlsdGVyZWQiLEhfRE9DUzoiRG9jcyIsSF9ERUxET0NTOiJEZWxldGVkIixIX1NFUToiU2VxIixIX1NJWkU6IkRpc2siLFRJUF9ET0NfSU5GTzoiU2hvdyBEQiBpbmZvIixUSVBfQlROX0FDTDoiRWRpdCBEQiBhY2Nlc3MgY29udHJvbCBsaXN0IixUSVBfQlROX1NUQVI6IkFkZC9yZW1vdmUgdG8gZmF2b3JpdGVzLCBzaG93biBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0IixUSVBfQlROX0lORk86IlNob3cgREIgaW5mbyBKU09OIixUSVBfQ0xPU0VKU09OOiJDbG9zZSBKU09OIixUWFRfREJJTkZPX0xPQUQ6IkxvYWRpbmcuLi4iLEVSUl9EQklORk86IkVycm9yIHJlYWRpbmcgREIgaW5mbyIsVFhUX1RBU0tfVElUTEU6IlRhc2tzIixUQUdTX1RBU0tfVFlQRTp7dGFnczpbW3tBY3RpdmU6ImFjdGl2ZSJ9XSxbe1N5bmM6InJlcGxpY2F0aW9uIn0se0NvbXBhY3Rpb246ImNvbXBhY3Rpb24ifV1dLGVtcHR5Onsi4oCJQWxs4oCJIjoiIn19LFRJUF9UQVNLX1JFTE9BRDoiUmVsb2FkIHRhc2tzIixCVE5fVEFTS19ORVdTWU5DOiJOZXcgc3luY+KApiIsQlROX1RBU0tfMURCOiJTeW5jIERC4oCmIixCVE5fVEFTS19EQlM6IlN5bmMgREJz4oCmIixCVE5fVEFTS19SRVNZTkM6IlJlc3RhcnTigKYiLFRYVF9UX1NFTEVDVDoiU2VsZWN0IHsxfSIsVFhUX1RfVU5TRUxFQ1Q6IlVuc2VsZWN0IHsxfSIsVFhUX1RfU0VMRUNUX0FMTDoiYWxsIixUWFRfVF9TRUxFQ1RfRklMVEVSOiJmaWx0ZXJlZCIsVFhUX1RBU0tfUkVTWU5DX1RJVExFOiJSZXN0YXJ0IHJlcGxpY2F0aW9ucyIsVFhUX1RBU0tfUkVTWU5DX1dBUk46ZnVuY3Rpb24oeCxhLGIpe3JldHVybidZb3UgYXJlIGdvaW5nIHRvIHJlc3RhcnQgPHNwYW4gY2xhc3M9ImJvbGRlciI+Jyt4KyI8L3NwYW4+IHN5bmMgdGFzayIrKHg+MT8icyI6IiIpKyIuIFRhc2sgZG9jIisoeD4xPyJzIjoiIikrIiBpbiAiK2IrIiBEQiB3aWxsIGJlIGRlbGV0ZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQuIn0sQlROX1RBU0tfUFJPQ0VFRDoiUHJvY2VlZCIsTVNHX1RBU0tfUkVTWU5DOiJTeW5jIGRvY3MgZGVsZXRlZCwgdGFza3Mgc3RvcHBlZC4gVHJ5aW5nIHRvIHJlc3RhcnQgc3luYyB0YXNrcy4uLiIsTVNHX1RBU0tfUkVTWU5DX09LOiJTeW5jIHRhc2tzIHJlc3RhcnRlZCIsRVJSX1RBU0tfUkVTWU5DOiJFcnJvciByZXN0YXJ0aW5nIHN5bmMgdGFza3MsIHNlcnZlciByZXNwb25kZWQgezF9IixCVE5fVEFTS19TVE9QOiJSZW1vdmXigKYiLFRYVF9UQVNLX1NUT1BfVElUTEU6IlN0b3AvcmVtb3ZlIHJlcGxpY2F0aW9uIHRhc2tzIixUWFRfVEFTS19TVE9QX1dBUk46ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXgrYSxkPSdZb3UgYXJlIGdvaW5nIHRvIHN0b3AgYW5kIHJlbW92ZSA8c3BhbiBjbGFzcz0iYm9sZGVyIj4nK2MrIjwvc3Bhbj4gc3luYyB0YXNrIisoYz4xPyJzIjoiIikrIi4gIjtyZXR1cm4geD4wJiYoZD1kKyJUYXNrIGRvYyIrKHg+MT8icyI6IiIpKyIgaW4gIitiKyIgREIgd2lsbCBiZSBkZWxldGVkLiIpLGR9LE1TR19UQVNLX1NUT1A6IlN5bmMgZG9jcyBkZWxldGVkLCB0YXNrcyBzdG9wcGVkIixFUlJfVEFTS19TVE9QOiJFcnJvciBzdG9wcGluZyB0YXNrcywgc2VydmVyIHJlc3BvbmRlZCB7MX0ifSwkZG9jOntUWFRfTE9BRElORzoiTG9hZGluZyBkb2N1bWVudC4uLiIsVFhUX1JFVjoiTGF0ZXN0IHJldmlzaW9uIixQTENfU0VBUkNIOiJTZWFyY2giLFRJUF9VUDoiT3BlbiB7MX0gREIgZG9jIGxpc3QiLFRJUF9SRUxPQUQ6IlJlbG9hZCIsVElQX0RPQ0pTT046Ik9wZW4gezF9IEpTT04gaW4gbmV3IGJyb3dzZXIgdGFiIixCVE5fU0FWRToi4oCJU2F2ZcKgIixCVE5fU0FWRUFTOiJDbG9uZeKApiIsQlROX0RFTDoiRGVs4oCmIixCVE5fRElGRjoiRGlmZuKAiSIsQlROX0NBTkNFTDoiQ2FuY2VsIixUWFRfSElTVF9USVRMRToiRWRpdCBoaXN0b3J5IixUWFRfSElTVF9FTVBUWToiQ2hhbmdlIGhpc3RvcnkgaXMgZW1wdHkiLEJUTl9ISVNUX0NMRUFSOiJDbGVhciIsQlROX0hJU1RfVU5ETzoi4oCJVW5kb+KAiSIsTVNHX1NBVkU6IkRvYyB7MX0gd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZCB3aXRoIHJldmlzaW9uIHsyfSIsRVJSX1NBVkU6IkVycm9yIHNhdmluZyBkb2MsIHNlcnZlciByZXNwb25kZWQgezF9IixFUlJfU0FWRUxPQUQ6IkRvYyB3YXMgc2F2ZWQsIGhvd2V2ZXIgbG9hZGluZyBpdCBhZnRlciBzYXZlIGZhaWxlZC4gU2VydmVyIHJlc3BvbmRlZCB7MX0iLE1TR19FRFM6IlRoZXJlIGFyZSBhY3RpdmUgZWRpdG9ycyBjb250YWluaW5nIG5vdCB5ZXQgYXBwbGllZCBjaGFuZ2VzLiIsQlROX0VEU19ZRVM6IkFwcGx5IGNoYW5nZXMgYW5kIHNhdmXCoCIsQlROX0VEU19OTzoiRGlzY2FyZCBhbmQgc2F2ZcKgIixNU0dfQ09ORkxJQ1Q6JzxkaXYgY2xhc3M9ImZzMTMwIGxoMTUwIG1iMiBib2xkZXIgb3JhbmdlIj5Db25mbGljdDwvZGl2PkNvbmZsaWN0IHNhdmluZyBkb2Mg4oCYezF94oCZIDxicj48c3BhbiBjbGFzcz0iZGliIHcxNDAiPllvdXIgcmV2OiA8L3NwYW4+PG5vYnI+ezJ9PC9ub2JyPiA8YnI+PHNwYW4gY2xhc3M9ImRpYiB3MTQwIj5EQiByZXY6ICAgPC9zcGFuPjxub2JyPnszfTwvbm9icj4uJyxCVE5fQ09ORkxJQ1RfWUVTOiJPdmVyd3JpdGUgREIgZG9jIixCVE5fQ09ORkxJQ1RfTk86IkNhbmNlbCBzYXZlIixNU0dfQ09ORkxJQ1RfQ0FOQ0VMTEVEOiJDYW5jZWxsZWQsIGRvYyB3YXMgbm90IHNhdmVkIixNU0dfQ09ORkxJQ1RfTE9BREZBSUw6IkZhaWxlZCBsb2FkaW5nIGNvbmZsaWN0aW5nIHJldmlzaW9uLCBkb2MgY2FuIG5vdCBiZSBzYXZlZCIsVFhUX0RFTF9USVRMRToiRGVsZXRlIGRvYyIsVFhUX0RFTF9USVRMRV9DT05GTElDVDoiRGVsZXRlIGRvYyBjb25mbGljdCIsVFhUX0RFTF9XQVJOOiJZb3UgYXJlIGdvaW5nIHRvIGRlbGV0ZSBkb2MgPG5vYnI+4oCYezF94oCZPC9ub2JyPiBmcm9tIHRoZSDigJh7Mn3igJkgREIuIixCVE5fREVMX1NUQVJUOiJQcm9jZWVkIixUWFRfREVMX05PREVMOiJOb3RlIHRoYXQgdGhlIGRvYyBoYXMgY29uZmxpY3QgcmV2aXNpb25zLCBhbmQgb25lIG9mIHRoZW0gcHJvYmFibHkgYmVjb21lIGFjdGl2ZSBhZnRlciBkZWxldGlvbi4iLFRYVF9ERUxfQ09ORkxJQ1Q6Ik5vdGUgdGhhdCB5b3UgYXJlIGRlbGV0aW5nIGNvbmZsaWN0IHJldmlzaW9uLCBpdCB3aWxsIG5vdCBhZmZlY3QgYWN0aXZlIHZlcnNpb24gb2YgdGhlIGRvYy4iLExCTF9ERUxfQUxMOiJEZWxldGUgZG9jIGFuZCBpdHMgY29udGVudCIsTEJMX0RFTF9SRVRBSU46Ik1hcmsgZG9jIGFzIGRlbGV0ZWQgYnV0IHJldGFpbiBjb250ZW50IixMQkxfREVMX1BVUkdFOiJQdXJnZSBkb2MgY3VycmVudCByZXZpc2lvbiIsTEJMX0RFTF9YUFVSR0U6IlB1cmdlIGFsbCByZXZpc2lvbnMgY29tcGxldGVseSIsTVNHX0RFTF9PSzoiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZG9jIHsxfSBmcm9tIHRoZSB7Mn0gYnVja2V0IixNU0dfREVMX0ZBSUw6IkZhaWxlZCBkZWxldGluZyBkb2Mg4oCYezF94oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTogezN94oCZIixNU0dfREVMX1JFTE9BRDoiVXBkYXRlZCBsYXRlc3QgYWN0aXZlIHJldmlzaW9uIG9mIHRoZSBkb2MiLE1TR19ERUxfUkVMT0FEX0ZBSUw6IkZhaWxlZCByZWFkaW5nIGFjdGl2ZSByZXYgb2YgezF9LiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTogezN94oCZIixUSVBfQlROX0RMWklQOiJEb3dubG9hZCBkb2MgYW5kIGF0dGFjaGVkIGZpbGVzIGFzIFpJUCIsTVNHX0RMWklQX05PWklQOiJZb3VyIGJyb3dzZXIgY2Fu4oCZdCBjcmVhdGUgWklQLCBzb3JyeS4iLE1TR19ETFpJUF9SRUFEMToiUmVhZGluZyBhbmQgY29tcHJlc3NpbmcgdGhlIGRvYy4uLiIsTVNHX0RMWklQX1JFQUQyOiJSZWFkaW5nIGFuZCBjb21wcmVzc2luZyB0aGUgZG9jIGFuZCBhdHRhY2hlZCBmaWxlcy4uLiIsTVNHX0RMWklQX0VSUk9SOiJFcnJvciBjcmVhdGluZyBhcmNoaXZlIixNU0dfRExaSVBfT0s6IkRvbmUgY29tcHJlc3NpbmcgZG9jIHRvIFpJUCIsVFhUX0RMR0FERDoiQWRkIGZpbGVzIixCVE5fQVRUQUNIOiJBdHRhY2ggZmlsZXMiLFRYVF9BRERGSUxFUzoiRHJhZyBmaWxlcyBoZXJlIG9yIGNsaWNrIHRvIHNlbGVjdCIsVFhUX0FERE1PUkU6IkRyYWcgbW9yZSBmaWxlcyBoZXJlIG9yIGNsaWNrIHRvIHNlbGVjdCJ9LCRmaWxlOntQTENfU0VBUkNIOiJTZWFyY2giLFRJUF9VUDoiT3BlbiBwYXJlbnQgZG9jIixUSVBfUkVMT0FEOiJSZWxvYWQiLEJUTl9TQVZFOiJTYXZlIGZpbGUgIixCVE5fU0FWRUFTOiJTYXZlIGFz4oCmIixCVE5fREVMOiJEZWxldGXigKYiLEJUTl9DQU5DRUw6IkNhbmNlbCIsTVNHX1NBVkU6IkZpbGUgezF9IHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQgaW50byB7Mn0iLEVSUl9TQVZFOiJFcnJvciBzYXZpbmcgZmlsZSB7MX0gaW50byBpdHMgZG9jLCBzZXJ2ZXIgcmVzcG9uZGVkIHsyfSIsTVNHX1NUQVRTOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz14PT54LmZvcm1hdCgpLnJlcGxhY2VBbGwoIiwiLCLigIrigIoiKTtyZXR1cm5bYyh4KSsiIGxpbmUiKygxIT14PyJzIjoiIiksYTwyZTU/YyhhKSsiIGNoYXIiKygxIT1hPyJzIjoiIik6bnVsbCxjKGIpKyIgYnl0ZSIrKDEhPWI/InMiOiIiKV0uY29tcGFjdCgpLmpvaW4oIsKgIMK3IMKgIil9fSwkZGlmZjp7VElQX1VQOiJPcGVuIHsxfSBEQiBkb2MgbGlzdCIsVFhUX0JBTjoiU2tpcCIsUExDX0JBTjoiTm9kZXMgdG8gZXhjbHVkZSIsTEJMX1NSQzoiU2hvdyBzb3VyY2UiLFRYVF9SRVY6IkxhdGVzdCByZXZpc2lvbiIsUExDX1NSQzoiU291cmNlIHJldmlzaW9uLi4uIixQTENfVEdUOiJUYXJnZXQgcmV2aXNpb24uLi4iLFRYVF9OT0RJRkY6Ik5vIGRpZmZlcmVuY2UiLFRYVF9TRUxFQ1Q6IlNlbGVjdCBkaWZmZXJlbnQgcmV2aXNpb25zIn0sJGNvbmZpZzp7UExDX1NFQVJDSDoiU2VhcmNoIixQTENfUkVMT0FEOiJSZWxvYWQiLEVSUl9SRUxPQUQ6IkVycm9yIHJlbG9hZGluZyBjb25maWcuIFNlcnZlciByZXNwb25kZWQgezF9OiB7Mn0iLEJUTl9TQVZFOiJTYXZlIGNoYW5nZXMgJm5ic3A7IixCVE5fUkVWRVJUOiJSZXZlcnQgdG8gc2F2ZWQgIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLEJUTl9DTE9TRToiQ2xvc2UiLFRYVF9ISVNUX1RJVExFOiJDb25maWcgY2hhbmdlcyIsVFhUX0hJU1RfRU1QVFk6Ik5vIHVuc2F2ZWQgY2hhbmdlcyIsQlROX0hJU1RfVU5ETzoi4oCJVW5kb+KAiSIsRVJSX1ZBTDp7Q0hBUlM6IkZvcmJpZGRlbiBjaGFycyBpbiBhIGtleSwgb25seSBhLXosIDAtOSBhbmQgXy0hIGFsbG93ZWQiLFZBTFNUUklORzoiVmFsdWUgY2Fu4oCZdCBiZSBudWxsLCBhcnJheSBvciBvYmplY3QifSxNU0dfU0FWRV9PSzoiU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgY29uZmlnIixNU0dfU0FWRV9GQUlMOiJGYWlsZWQgdXBkYXRpbmcgc29tZSBrZXlzLCBzZWUgY29uc29sZSBmb3IgZGV0YWlscyIsTVNHX0NMVVNURVI6IllvdSBvcGVyYXRlIGEgY2x1c3Rlci4gUHJvcGFnYXRlIGNvbmZpZyBjaGFuZ2VzIHRvIGFsbCBub2Rlcz8iLEJUTl9TQVZFQ0xVU1RFUjoiU2F2ZSB0byBhbGwgbm9kZXMiLEJUTl9TQVZFTk9ERToiU2F2ZSB0byB7MX0gb25seSIsQkFOX0hUVFA6IktleSBjYW7igJl0IGJlIGNoYW5nZWQgdGhyb3VnaCBIVFRQLCBlZGl0IGxvY2FsLmluaSBzZXJ2ZXJzaWRlLiBSZWFzb24gaXMgQ1ZFLTIwMTctMTI2MzYuIixCQU5fQ0xVU1RFUjoiS2V5IGNhbuKAmXQgYmUgY2hhbmdlZCB1c2luZyBhZG1pbiBwYW5lbC4iLE1TR19VTktOT1dOX0tFWToiVW5rbm93biBjb25maWcga2V5IixIRUxQOntPQkpfUEFUSFM6e1YxOiJodHRwczovL2NvcnB1cy5saW5nc3luYy5vcmcvX3V0aWxzL2RvY3MvY29uZmlnLyIsVjM6Imh0dHBzOi8vZG9jcy5jb3VjaGRiLm9yZy9lbi9zdGFibGUvY29uZmlnLyIsQ0I6Imh0dHBzOi8vZ2l0aHViLmNvbS9lcm1vdXRoL2NvdWNoYm94LyJ9LFRYVF9ET0NTOiJPZmZpY2lhbCBkb2N1bWVudGF0aW9uIixUWFRfRVhUOiJNb3JlIGRldGFpbHPigKYiLFRYVF9OT0RPQ1M6Ik5vIG9mZmljaWFsIGRvY3VtZW50YXRpb24iLGFkbWluczp7X186IntWM31hdXRoLmh0bWwjc2VydmVyLWFkbWluaXN0cmF0b3JzIiwiIjoiQ291Y2hEQiBub2RlIGFkbWluaXN0cmF0b3JzLCB1c2VycyBoYXZpbmcgYF9hZG1pbmAgcm9sZSIsIioiOiJLZXkgaXMgdXNlciBuYW1lLCB2YWx1ZSBpcyBleGlzdGluZyBwYXNzd29yZCBoYXNoOyB0eXBlIG5ldyBwYXNzd29yZCB0byBjaGFuZ2UgaXQgZm9yIHRoZSB1c2VyIn0sYXR0YWNobWVudHM6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiQ29uZmlndXJhdGlvbiBvZiBhdHRhY2htZW50IGZpbGUgc3RvcmFnZSIsY29tcHJlc3NpYmxlX3R5cGVzOiJDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb21wcmVzc2libGUgTUlNRSB0eXBlcyBsaWtlIGB0ZXh0LyosIGFwcGxpY2F0aW9uL2phdmFzY3JpcHRgIixjb21wcmVzc2lvbl9sZXZlbDoiWmxpYiBjb21wcmVzc2lvbiBsZXZlbCwgbnVtYmVyIDDigJM5In0sY2h0dHBkOntfXzoie1YzfWh0dHAuaHRtbCN7a2V5fSIsIiI6IkhUVFAgc2VydmVyIG9wdGlvbnMiLGFkbWluX29ubHlfYWxsX2RiczoiV2hlbiBgdHJ1ZWAgcHJldmVudHMgbm9uLWFkbWlucyBmcm9tIGFjY2Vzc2luZyBgL19hbGxfZGJzYCIsYWxsb3dfanNvbnA6IklmIGB0cnVlYCBlbmFibGVzIEpTT05QIHN1cHBvcnQsIGBmYWxzZWAgcmVjb21tZW5kZWQiLGF1dGhlbnRpY2F0aW9uX2hhbmRsZXJzOiJMaXN0IG9mIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXJzIHVzZWQgYnkgQ291Y2hEQiIsYmluZF9hZGRyZXNzOiJJUCBhZGRyZXNzIGxpc3RlbmVkIGJ5IENvdWNoREIiLGJhY2tsb2c6Ik1vY2hpV2ViIHBhcmFtLCBzb2NrZXQgYmFja2xvZyBzaXplLCBieXRlcyIsYnVsa19nZXRfdXNlX2JhdGNoZXM6IlNldCBgZmFsc2VgIHRvIGRpc2FibGUgYmF0Y2hpbmcgYXMgaW4gcHJlLTMuMyIsYnVmZmVyX3Jlc3BvbnNlOiJXaGFlbiBgZmFsc2VgIHJlc3Bvc2Ugc3RhcnRzIGFmdGVyIGZpcnN0IHJvdyBpcyBjYWxjdWxhdGVkIixjaGFuZ2VzX3RpbWVvdXQ6IkNoYW5nZXMgZmVlZCB0aW1lb3V0LCBtaWxsaXNlY29uZHMiLGNvbmZpZ193aGl0ZWxpc3Q6Ik9ubHkgd2hpdGVsaXN0ZWQgdmFsdWVzIG1heSBiZSBjaGFuZ2VkIHZpYSB0aGUgYC9fY29uZmlnYCBIVFRQIGVuZHBvaW50cyIsZGlzY29ubmVjdF9jaGVja19tc2VjOiJNaWxsaXNlY29uZHMgYmV0d2VlbiBjaGVja3MgZm9yIGNsaWVudCBkaXNjb25uZWN0cyBkdXJpbmcgc3RyZWFtaW5nIixkaXNjb25uZWN0X2NoZWNrX2ppdHRlcl9tc2VjOiJKaXR0ZXIgZm9yIGBkaXNjb25uZWN0X2NoZWNrX21zZWNgIixlbmFibGVfeGZyYW1lX29wdGlvbnM6IkFsbG93cyBhbiBIVFRQIHJlc3BvbnNlIHRvIGJlIGVtYmVkZGVkIGluIOKAuWZyYW1l4oC6LCDigLlpZnJhbWXigLogb3Ig4oC5b2JqZWN04oC6IixlbmFibGVfY29yczoiSWYgYHRydWVgIGFsbG93cyBDT1JTIixtYXhfaHR0cF9yZXF1ZXN0X3NpemU6IkxpbWl0IHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIEhUVFAgcmVxdWVzdCBib2R5LCBieXRlcyIsbWF4X2RiX251bWJlcl9mb3JfZGJzX2luZm9fcmVxOiJNYXggbnVtYmVyIG9mIERCcyBhbGxvd2VkIGZvciBgL19kYnNfaW5mb2AgcmVxdWVzdCIscG9ydDoiQ291Y2hEQiBwb3J0LCBudW1iZXIgMS4uLjY1NTM1IixwcmVmZXJfbWluaW1hbDoiTWluaW1hbCBzZXQgb2YgaGVhZGVycyB0byBzZW5kIGlmIFByZWZlcjpyZXR1cm49bWluaW1hbCBoZWFkZXIgcmVjZWl2ZWQiLHJlcXVpcmVfdmFsaWRfdXNlcjoiV2hlbiBgdHJ1ZWAsIG5vIHJlcXVlc3RzIGFyZSBhbGxvd2VkIGZyb20gYW5vbnltb3VzIHVzZXJzIixzY3J1Yl9qc29uX3JlcXVlc3Q6WyJXaGVuIGBmYWxzZWAgYWxsb3dzIHNlbnNpdGl2ZSByZXF1ZXN0IGhlYWRlcnMgdG8gbGVhayB0aHJvdWdoIHJlc3BvbnNlIiwiaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9jb3VjaGRiL3B1bGwvNDg3OCJdLHNlY3VyZV9yZXdyaXRlczoiSWYgYHRydWVgIGRlbmllcyBgX3Jld3JpdGVgIHJ1bGVzIHRvIHJld3JpdGUgaW50byBhIGRpZmZlcmVudCBEQiIsc2VydmVyX2hlYWRlcl92ZXJzaW9uczoiQWxsb3dzIENvdWNoREIgYW5kIEVybGFuZy9PVFAgdmVyc2lvbnMgcmVzcG9uc2UgaGVhZGVycyIsc29ja2V0X29wdGlvbnM6IlRoZSBzb2NrZXQgb3B0aW9ucyBmb3IgdGhlIGxpc3RlbmluZyBzb2NrZXQgaW4gQ291Y2hEQiIseF9mb3J3YXJkZWRfaG9zdDoiWC1Gb3J3YXJkZXItSG9zdCIseF9mb3J3YXJkZWRfcHJvdG86IlgtRm9yd2FyZGVyLVByb3RvIix4X2ZvcndhcmRlZF9zc2w6IlgtRm9yd2FyZGVyLVNzbCJ9LGNodHRwZF9hdXRoOntfXzoie1YzfWF1dGguaHRtbCN7a2V5fSIsIiI6IkF1dGhlbnRpY2F0aW9uIGNvbmZpZyIscGFzc3dvcmRfcmVnZXhwOiJSZWdFeHAgcmVzdHJpY3RpbmcgcGFzc3dvcmQgdmFsdWUiLHVwZ3JhZGVfaGFzaF9vbl9hdXRoOiJVcGdyYWRlIHVzZXIgYXV0aCBkb2NzIGR1cmluZyB0aGUgbmV4dCBzdWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uIn0sY2h0dHBkX2F1dGhfbG9ja291dDp7X186IntWM31hdXRoLmh0bWwje2tleX0iLCIiOiJDb3VjaERCIGF1dGggbG9ja291dCBjb25maWciLG1vZGU6IlNldCB0byBgZW5mb3JjZWAgdG8gYmxvY2sgcmVwZWF0ZWQgZmFpbGVkIGF1dGggYXR0ZW1wdHMiLHRocmVzaG9sZDoiTWF4IGZhaWxlZCBhdHRlbXB0cyBpbiBgbWF4X2xpZmV0aW1lYCBwZXJpb2QgYmVmb3JlIGxvY2tvdXQsIGRlZmF1bHQgaXMgNSIsbWF4X2xpZmV0aW1lOiJEdXJhdGlvbiBvZiBhIGxvY2tvdXQgcGVyaW9kIixtYXhfb2JqZWN0czoiTWF4aW11bSBudW1iZXIgb2YgdXNlcm5hbWUrSVAgcGFpcnMgdGhhdCBDb3VjaERCIHRyYWNrcyJ9LGNsdXN0ZXI6e19fOiJ7VjN9Y2x1c3Rlci5odG1sI3trZXl9IiwiIjoiQ2x1c3RlciBvcHRpb25zIixuOiJOdW1iZXIgb2YgcmVwbGljYXMgb2YgZWFjaCBkb2N1bWVudCBpbiBhIGNsdXN0ZXIsIG51bWJlciAxKyIscGxhY2VtZW50OiJTZXRzIHRoZSBjbHVzdGVyLXdpZGUgcmVwbGljYSBwbGFjZW1lbnQgcG9saWN5IGZvciBuZXcgZGF0YWJhc2VzIixxOiJEZWZhdWx0IG51bWJlciBvZiBzaGFyZHMgZm9yIG5ld2x5IGNyZWF0ZWQgZGF0YWJhc2VzLCBudW1iZXIgMSsiLHJlY29ubmVjdF9pbnRlcnZhbF9zZWM6IkNsdXN0ZXIgY29ubmVjdGl2aXR5IGNoZWNrIHBlcmlvZCIsc2VlZGxpc3Q6Ikxpc3Qgb2Ygbm9kZXMgdG8gY29udGFjdCBpbiBvcmRlciB0byBqb2luIGEgY2x1c3RlciJ9LGNvbXBhY3Rpb25fZGFlbW9uOntfXzoie1YzfWNvbXBhY3Rpb24uaHRtbCN7a2V5fSIsIiI6IkNvbXBhY3Rpb24gZGFlbW9uIGNvbmZpZyIsY2hlY2tfaW50ZXJ2YWw6IkRlbGF5IGJlZm9yZSBhdXRvLWNvbXBhY3Rpb24gZGFlbW9uIGNoZWNrcyBhIERCLCBzZWNvbmRzIixtaW5fZmlsZV9zaXplOiJNaW5pbWFsIERCIGZpbGUgc2l6ZSBmb3IgY29tcGFjdGlvbiBkYWVtb24gdG8gdHJpZ2dlciBjaGVjayIsc25vb3plX3BlcmlvZF9tczoiTWluaW11bSBnYXAgYmV0d2VlbiBzdWJzZXF1ZW50IGRhZW1vbiBhY3RpdmF0aW9ucywgbWlsbGlzZWNvbmRzIn0sY29tcGFjdGlvbnM6e19fOiJ7VjN9Y29tcGFjdGlvbi5odG1sI3trZXl9IiwiIjoiQSBsaXN0IG9mIHJ1bGVzIHRvIGRldGVybWluZSB3aGVuIHRvIHJ1biBhdXRvbWF0aWMgY29tcGFjdGlvbiIsIioiOidLZXkgaXMgREIgbmFtZSwgdmFsdWUgaXMgbGlrZWBbe2RiX2ZyYWdtZW50YXRpb24sIjcwJSJ9LCB7dmlld19mcmFnbWVudGF0aW9uLCI2MCUifSwge2Zyb20sIjIzOjAwIn0se3RvLCIwNDowMCJ9XWAnfSxjb3JzOntfXzoie1YzfWh0dHAuaHRtbCN7a2V5fSIsIiI6IkNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIGNvbmZpZyIsY3JlZGVudGlhbHM6IklmIHNldCBgdHJ1ZWAsIENvdWNoIHNlbmRzIGF1dGggY29va2llcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIixoZWFkZXJzOiJIZWFkZXJzIGFjY2VwdGVkIGZvciBDT1JTIHJlcXVlc3RzLCBnb29kIGRlZmF1bHQgaXMgYGFjY2VwdCwgYXV0aG9yaXphdGlvbiwgY29udGVudC10eXBlLCBvcmlnaW5gIixtYXhfYWdlOiJTZXRzIG1heCBhZ2UgaGVhZGVyIGZvciBPUFRJT05TIHJlc3BvbnNlLCBzZWNvbmRzIixtZXRob2RzOiJMaXN0IG9mIGFsbG93ZWQgbWV0aG9kcywgbGlrZSBgR0VULCBQT1NULCBQVVQsIERFTEVURSwgT1BUSU9OUywgSEVBRGAiLG9yaWdpbnM6Ikxpc3Qgb2Ygb3JpZ2lucyBzZXBhcmF0ZWQgYnkgYSBjb21tYSwgbGlrZSBgaHR0cDovL2RvbWFpbjAuY29tLCBodHRwczovL2RvbWFpbjEuY29tOjQ0M2AifSxjb3VjaF9odHRwZF9hdXRoOntfXzoie1YzfWF1dGguaHRtbCN7a2V5fSIsIiI6IkF1dGhlbnRpY2F0aW9uIGNvbmZpZyIsYWxsb3dfcGVyc2lzdGVudF9jb29raWVzOiJXaGVuIGB0cnVlYCwgQ291Y2ggYXV0by1yZWZyZXNoZXMgc2Vzc2lvbiBjb29raWVzIHRpbWUgdG8gdGltZSIsYXV0aF9jYWNoZV9zaXplOiJIb3cgbWFueSB1c2VycyBhcmUgY2FjaGVkIGluIG1lbW9yeSwgbnVtYmVyIixhdXRoZW50aWNhdGlvbl9yZWRpcmVjdDoiUmVkaXJlY3Rpb24gb24gc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbiBpZiB0aGUgY2xpZW50IGFjY2VwdHMgYHRleHQvaHRtbGAiLGNvb2tpZV9kb21haW46IkNvbmZpZ3VyZXMgdGhlIGRvbWFpbiBhdHRyaWJ1dGUgb2YgdGhlIGBBdXRoU2Vzc2lvbmAgY29va2llIixpdGVyYXRpb25zOiJQYXNzd29yZCBoYXNoaW5nIGl0ZXJhdGlvbnMgY291bnQiLG1heF9pdGVyYXRpb25zOiJNYXhpbXVtIFBCS0RGMiBpdGVyYXRpb25zIGNvdW50IixtaW5faXRlcmF0aW9uczoiTWluaW11bSBQQktERjIgaXRlcmF0aW9ucyBjb3VudCIscHJveHlfdXNlX3NlY3JldDoiRm9yY2UgcHJveHkgYXV0aCB0byB1c2Ugc2VjcmV0IHRva2VuLCBgZmFsc2VgIG1ha2VzIENvdWNoIHZlcnkgdW5wcm90ZWN0ZWQiLHB1YmxpY19maWVsZHM6Ikxpc3Qgb2YgcHVibGljIGZpZWxkcyBpbiBgX3VzZXJzYCBkb2N1bWVudHMgdGhhdCBhcmUgdXNlciBwcm9maWxlcyIscmVxdWlyZV92YWxpZF91c2VyOiJXaGVuIGB0cnVlYCwgbm8gcmVxdWVzdHMgYXJlIGFsbG93ZWQgZnJvbSBhbm9ueW1vdXMgdXNlcnMiLHNlY3JldDoiU2VjcmV0IHRva2VuIHVzZWQgZm9yIFByb3h5IGFuZCBDb29raWUgYXV0aGVudGljYXRpb24iLHNhbWVfc2l0ZToiU2FtZVNpdGUgYXR0cmlidXRlIGZvciBhdXRoIGNvb2tpZSwgYG5vbmVgLCBgbGF4YCBvciBgc3RyaWN0YCAiLGhhc2hfYWxnb3JpdGhtczoiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaGFzaCBhbGdvcml0aG1zIChzaGEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMikgZm9yIGNvb2tpZSBITUFDLiAiLHRpbWVvdXQ6Ik51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHJlcXVlc3QgYmVmb3JlIHNlc3Npb24gZXhwaXJlcyIsdXNlcnNfZGJfcHVibGljOiJBbGxvdyBhbGwgdXNlcnMgdG8gdmlldyB1c2VyIGRvY3VtZW50cyIseF9hdXRoX3JvbGVzOiJQcm94eSBBdXRoIHJvbGVzIGhlYWRlciBuYW1lLCBkZWZhdWx0IGlzIGBYLUF1dGgtQ291Y2hEQi1Sb2xlc2AiLHhfYXV0aF90b2tlbjoiUHJveHkgQXV0aCB0b2tlbiBoZWFkZXIgbmFtZSwgZGVmYXVsdCBpcyBgWC1BdXRoLUNvdWNoREItVG9rZW5gIix4X2F1dGhfdXNlcm5hbWU6IlByb3h5IEF1dGggdXNlcm5hbWUgaGVhZGVyIG5hbWUsIGRlZmF1bHQgaXMgYFgtQXV0aC1Db3VjaERCLVVzZXJOYW1lYCJ9LGNvdWNoX2h0dHBkX29hdXRoOntfXzoie1YxfWF1dGguaHRtbCN7a2V5fSIsIiI6IkhUVFAgT0F1dGggQ29uZmlndXJhdGlvbiIsdXNlX3VzZXJzX2RiOiJJZiBgdHJ1ZWAgT0F1dGggdG9rZW4gYW5kIGNvbnN1bWVyIHNlY3JldHMgYXJlIGxvb2tlZCB1cCBpbiBgX3VzZXJzYCBkb2NzIn0sY291Y2hfcGVydXNlcjp7X186IntWM31jb3VjaC1wZXJ1c2VyLmh0bWwje2tleX0iLCIiOiJHZW5lcmF0ZXMgYSBEQiBmb3IgZWFjaCBgX3VzZXJzYCBtZW1iZXIiLGRlbGV0ZV9kYnM6IkRlbGV0ZSBhIHVzZXIgREIgb24gYF91c2Vyc2AgZG9jIGRlbGV0aW9uIixlbmFibGU6IklmIGB0cnVlYCBhdXRvLWNyZWF0ZXMgYHVzZXIte2hleG5hbWV9YCBEQiBmb3IgZWFjaCBgX3VzZXJzYCBtZW1lYmVyIn0sY291Y2hfcXVpY2tqc19zY2FubmVyX3BsdWdpbjp7X186IntWM31xdWlja2pzLmh0bWwje2tleX0iLCIiOiJRdWlja0pTIFNjYW5uZXIgcGx1Z2luIG9wdGlvbnMsIGlmIGVuYWJsZWQgaW4gW2NvdWNoX3NjYW5uZXJfcGx1Z2luc10iLG1heF9kZG9jczoiTGltaXQgdGhlIG51bWJlciBvZiBkZXNpZ24gZG9jcyBwcm9jZXNzZWQgcGVyIGRhdGFiYXNlIixtYXhfc2hhcmRzOiJMaW1pdCB0aGUgbnVtYmVyIG9mIHNoYXJkcyBwcm9jZXNzZWQgcGVyIGRhdGFiYXNlIixtYXhfZG9jczoiTWF4IG51bWJlciBvZiBkb2N1bWVudHMgc2VudCB0byB0aGUgZGVzaWduIGRvYyBmdW5jdGlvbnMiLG1heF9zdGVwOiJMaW1pdCB0aGUgbWF4aW11bSBzdGVwIHNpemUgd2hlbiBwcm9jZXNzaW5nIGRvY3MiLG1heF9iYXRjaF9pdGVtczoiTWF4aW11bSBkb2N1bWVudCBiYXRjaCBzaXplIHRvIGdhdGhlciBiZWZvcmUgZmVlZGluZyB0aGVtIHRocm91Z2ggZGRvY3MiLG1heF9iYXRjaF9zaXplOiJNYXhpbXVtIG1lbW9yeSB1c2FnZSBmb3IgYSBkb2N1bWVudCBiYXRjaCBzaXplIixhZnRlcjoiV2hlbiB0byBleGVjdXRlIHRoZSBwbHVnaW4gYWZ0ZXIgaXTigJlzIGVuYWJsZWQsIGxpa2UgYWZ0ZXIgYHJlc3RhcnRgIn0sY291Y2hfc2Nhbm5lcjp7X186IntWM31zY2FubmVyLmh0bWwje2tleX0iLCIiOiJDb3VjaERCIHNjYW5uZXIgb3B0aW9ucyIsaW50ZXJ2YWxfc2VjOiJIb3cgb2Z0ZW4gdG8gY2hlY2sgZm9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBhbmQgc3RhcnQvc3RvcCBwbHVnaW5zIixtaW5fcGVuYWx0eV9zZWM6Ik1pbmltdW0gdGltZSB0byBmb3JjZSBhIHBsdWdpbiB0byB3YWl0IGJlZm9yZSBydW5uaW5nIGFnYWluIGFmdGVyIGEgY3Jhc2giLG1heF9wZW5hbHR5X3NlYzoiTWF4aW11bSB0aW1lIHRvIGZvcmNlIGEgcGx1Z2luIHRvIHdhaXQgYWZ0ZXIgcmVwZWF0ZWQgY3Jhc2hlcyIsaGVhbF90aHJlc2hvbGRfc2VjOiJSZXNldCBlcnJvciBjb3VudCBpZiBhIHBsdWdpbiBydW5zIHRoaXMgbG9uZyIsZGJfcmF0ZV9saW1pdDoiRGF0YWJhc2UgcHJvY2Vzc2luZyByYXRlIGxpbWl0IixzaGFyZF9yYXRlX2xpbWl0OiJMaW1pdHMgdGhlIHJhdGUgYXQgd2hpY2ggcGx1Z2lucyBtYXkgb3BlbiBkYiBzaGFyZCBmaWxlcyBvbiBhIG5vZGUiLGRvY19yYXRlX2xpbWl0OiJMaW1pdCB0aGUgcmF0ZSBhdCB3aGljaCBwbHVnaW5zIG9wZW4gZG9jdW1lbnRzIixkb2Nfd3JpdGVfcmF0ZV9saW1pdDoiTGltaXQgdGhlIHJhdGUgYXQgd2hpY2ggcGx1Z2lucyB1cGRhdGUgZG9jdW1lbnRzIixkZG9jX2JhdGNoX3NpemU6IkJhdGNoIHNpemUgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgZGVzaWduIGRvY3VtZW50cywgZGVjcmVhc2UgdG8gMTDigKYzMCBmb3IgbGFyZ2UgZGRvY3MifSxjb3VjaF9zY2FubmVyX3BsdWdpbnM6e19fOiJ7VjN9c2Nhbm5lci5odG1sI2NvdWNoX3NjYW5uZXJfcGx1Z2lucyIsIiI6IldoaWNoIHBsdWdpbnMgYXJlIGVuYWJsZWQuIEJ5IGRlZmF1bHQgcGx1Z2lucyBhcmUgZGlzYWJsZWQiLCIqIjoiRW5hYmxlcy9kaXNhYmxlcyBzY2FubmVyIHBsdWdpbiwgbGlrZSBgY291Y2hfcXVpY2tqc19zY2FubmVyX3BsdWdpbiA9IHRydWVgIn0sY291Y2hfc2Nhbm5lcl9wbHVnaW5fZGRvY19mZWF0dXJlczp7X186IntWM31zY2FubmVyLmh0bWwje2tleX0iLCIiOiJDb25maWd1cmUgdGhlIOKAmERlc2lnbiBkb2MgZmVhdHVyZXPigJkgcGx1Z2luLCB3aGljaCByZXBvcnRzIGRkb2NzIGZlYXR1cmVzIGludG8gbG9ncyIsdXBkYXRlczoiUmVwb3J0IGlmIGRkb2NzIGhhdmUgYHVwZGF0ZWAgaGFuZGxlcnMiLHNob3dzOiJSZXBvcnQgaWYgZGRvY3MgaGF2ZSBgc2hvd2AgaGFuZGxlcnMiLHJld3JpdGVzOiJSZXBvcnQgaWYgZGRvY3MgaGF2ZSBgcmV3cml0ZWAgaGFuZGxlcnMiLGZpbHRlcnM6IlJlcG9ydCBpZiBkZG9jcyBKUyBmaWx0ZXJzIixyZWR1Y2U6IlJlcG9ydCBpZiBkZG9jcyBoYXZlIHJlZHVjZSBmdW5jdGlvbnMiLHZhbGlkYXRlX2RvY191cGRhdGU6IlJlcG9ydCBpZiBkZG9jcyBoYXZlIHZhbGlkYXRvciBmdW5jdGlvbnMiLHJ1bl9vbl9maXJzdF9ub2RlOiJSdW5zIHNjYW5uZXIgb24gdGhlIGZpcnN0IGNsdXN0ZXIgbm9kZSBvbmx5IixkZG9jX3JlcG9ydDoiRW1pdCByZXBvcnRzIGZvciBlYWNoIGRlc2lnbiBkb2Mgb3IgYWdncmVnYXRlIHRoZW0gcGVyIGRhdGFiYXNlIn0sY291Y2hkYjp7X186IntWM31jb3VjaGRiLmh0bWwje2tleX0iLCIiOiJCYXNlIENvdWNoREIgb3B0aW9ucyIsYXR0YWNobWVudF9zdHJlYW1fYnVmZmVyX3NpemU6IkJ1ZmZlciB1c2VkIHdoaWxlIHN0cmVhbWluZyBhbiBhdHRhY2htZW50LCBieXRlcyIsZGF0YWJhc2VfZGlyOiJEYXRhYmFzZXMgbG9jYXRpb24gZGlyZWN0b3J5IixkZWZhdWx0X3NlY3VyaXR5OiJEZWZhdWx0IHNlY3VyaXR5IG9iamVjdCBmb3IgREJzLCBgZXZlcnlvbmVgIGFuZCBgYWRtaW5fbG9jYWxgIG1ha2UgREIgcHVibGljLCBgYWRtaW5fb25seWAgcHJvdGVjdHMiLGRlbGF5ZWRfY29tbWl0czoiSWYgYHRydWVgIENvdWNoIGd1YXJhbnRlZXMgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byBkaXNrIGJlZm9yZSBgMjB4YCByZXNwb25zZSBpcyBzZW50IixmaWxlX2NvbXByZXNzaW9uOiJDb21wcmVzc2lvbiBtZXRob2QgZm9yIGRvY3VtZW50cywgYG5vbmVgLCBgc25hcHB5YCwgb3IgYGRlZmxhdGVfTmAgd2hlcmUgTiBpcyAx4oCmOSIsZnN5bmNfb3B0aW9uczoiRnN5bmMgb3B0aW9ucyIsanNfZW5naW5lOiJEZWZhdWx0IEpTIGVuZ2luZSwgc3BpZGVybW9ua2V5IG9yIHF1aWNranMiLG1haW50ZW5hbmNlX21vZGU6IklmIHNldCBgdHJ1ZWAsIG5vZGUgaXMgbm90IGluIGNsdXN0ZXIsIGFuZCBgL191cGAgcmV0dXJucyBgNDA0YCIsbWF4X2Ric19vcGVuOiJMaW1pdCBvZiBzaW11bHRhbmVvdXNseSBvcGVuZWQgZGF0YWJhc2VzLCBudW1iZXIiLG1heF9kb2N1bWVudF9zaXplOiJMaW1pdCBtYXhpbXVtIGRvY3VtZW50IGJvZHkgc2l6ZSwgYnl0ZXMiLG9zX3Byb2Nlc3NfdGltZW91dDoiRXh0ZXJuYWwgcHJvY2Vzc2VzIHRpbWUgbGltaXQsIG1pbGxpc2Vjb25kcyIsc2luZ2xlX25vZGU6IlNldCB0byBgdHJ1ZWAgdG8gYXV0b2NyZWF0ZSBzeXN0ZW0gREIgb24gc3RhcnQ7IGBmYWxzZWAgZm9yIGNsdXN0ZXIiLHVyaV9maWxlOiJEaXNjb3ZlcnkgQ291Y2hEQiBoZWxwIGZpbGUiLHVzZXJzX2RiX3N1ZmZpeDoiU3BlY2lmaWVzIHRoZSBzdWZmaXggb2YgdGhlIHN5c3RlbSBkYXRhYmFzZSBvZiB1c2VycyIsdXRpbF9kcml2ZXJfZGlyOiJTcGVjaWZpZXMgbG9jYXRpb24gb2YgYmluYXJ5IGRyaXZlcnMiLHV1aWQ6IlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIENvdWNoREIgc2VydmVyIGluc3RhbmNlIix2aWV3X2luZGV4X2RpcjoiVmlldyBpbmRleGVzIGxvY2F0aW9uIGRpcmVjdG9yeSIsdXNlcnNfZGJfc2VjdXJpdHlfZWRpdGFibGU6IkFsbG93IGVkaXRzIG9uIHRoZSBgX3NlY3VyaXR5YCBvYmplY3QgaW4gdGhlIHVzZXIgZGIiLHdyaXRlX3h4aGFzaF9jaGVja3N1bXM6IldyaXRlIGNoZWNrc3VtcyBpbiAzJjQgZm9ybWF0LCBkZWZhdWx0IGlzIGBmYWxzZWAifSxjc3A6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiQ29udGVudCBzZWN1cml0eSBwb2xpY3kgc2V0dGluZ3MiLGVuYWJsZToiSWYgYHRydWVgIGVuYWJsZXMgQ1NQIGhlYWRlcnMgZm9yIEZhdXh0b24iLGhlYWRlcl92YWx1ZToiRGVmYXVsdCBGYXV4dG9uIENTUCBoZWFkZXIgdmFsdWUiLGF0dGFjaG1lbnRzX2VuYWJsZToiSWYgYHRydWVgIGVuYWJsZXMgQ1NQIGhlYWRlcnMgZm9yIGRvYyBhdHRhY2htZW50cyIsYXR0YWNobWVudHNfaGVhZGVyX3ZhbHVlOiJEZWZhdWx0IENTUCBoZWFkZXIgdmFsdWUgZm9yIGRvYyBhdHRhY2htZW50cyIsc2hvd2xpc3RfZW5hYmxlOiJJZiBgdHJ1ZWAgZW5hYmxlcyBDU1AgaGVhZGVycyBmb3Igbm9uLUpTT04gc2hvdy9saXN0IHJlc3VsdHMiLHNob3dsaXN0X2hlYWRlcl92YWx1ZToiRGVmYXVsdCBDU1AgaGVhZGVyIHZhbHVlIGZvciBub24tSlNPTiBzaG93L2xpc3QgcmVzdWx0cyIsdXRpbHNfZW5hYmxlOiJFbmFibGUgdGhlIHNlbmRpbmcgYENvbnRlbnQtU2VjdXJpdHktUG9saWN5YCBoZWFkZXIgZm9yIC9fdXRpbHMiLHV0aWxzX2hlYWRlcl92YWx1ZToiYENvbnRlbnQtU2VjdXJpdHktUG9saWN5YCBoZWFkZXIgdmFsdWUgZm9yIC9fdXRpbHMifSxkYWVtb25zOntfXzoie1YzfXNlcnZpY2VzLmh0bWwje2tleX0iLCIiOiJDb3VjaERCIERhZW1vbml6ZWQgTWluaSBBcHBzIixhdXRoX2NhY2hlOiJBdXRoZW50aWNhdGlvbiBjYWNoaW5nIGxvY2F0b3IiLGNvbXBhY3Rpb25fZGFlbW9uOiJDb21wYWN0aW9uIGRhZW1vbiBsb2NhdG9yIixleHRlcm5hbF9tYW5hZ2VyOiJFeHRlcm5hbCBwcm9jZXNzZXMgbWFuYWdlciBsb2NhdG9yIixodHRwZDoiTm9kZSBIVFRQIHNlcnZlciBkYWVtb24gbG9jYXRvciIsaW5kZXhfc2VydmVyOiJDb3VjaERCIGluZGV4IHNlcnZlciBsb2NhdG9yIixxdWVyeV9zZXJ2ZXJzOiJRdWVyeSBzZXJ2ZXJzIG1hbmFnZXIgbG9jYXRvciIscmVwbGljYXRvcl9tYW5hZ2VyOiJDb3VjaCByZXBsaWNhdG9yIG1hbmFnZXIgbG9jYXRvciIsc3RhdHNfYWdncmVnYXRvcjoiQ291Y2ggc3RhdHMgYWdncmVnYXRvciBkYWVtb24gbG9jYXRvciIsc3RhdHNfY29sbGVjdG9yOiJDb3VjaCBzdGF0cyBjb2xsZWN0b3IgZGFlbW9uIGxvY2F0b3IiLHV1aWRzOiJVVUlEcyBnZW5lcmF0b3IgZGFlbW9uIGxvY2F0b3IiLHZob3N0czoiTWFuYWdlciBvZiBgdmhvc3RzYCBjb25uZWN0aW9ucyBsb2NhdG9yIn0sZGF0YWJhc2VfY29tcGFjdGlvbjp7X186IntWM31jb21wYWN0aW9uLmh0bWwje2tleX0iLCIiOiJEYXRhYmFzZSBjb21wYWN0aW9uIG9wdGlvbnMiLGNoZWNrcG9pbnRfYWZ0ZXI6IlRyaWdnZXJzIGEgY2hlY2twb2ludCBhZnRlciB0aGUgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyB3ZXJlIGNvcGllZCIsZG9jX2J1ZmZlcl9zaXplOiJUaGUgY29weSBidWZmZXLigJlzIG1heGltdW0gc2l6ZSwgYnl0ZXMifSxkaXNrX21vbml0b3I6e19fOiJ7VjN9ZGlzay1tb25pdG9yLmh0bWwje2tleX0iLCIiOiJEaXNrIG1vbml0b3Igb3B0aW9ucyIsYmFja2dyb3VuZF92aWV3X2luZGV4aW5nX3RocmVzaG9sZDoiVGhyZXNob2xkIG9mIGRpc2sgdGFrZW4gYnkgaW5kaWNlcyB3aGljaCBzdG9wcyBhdXRvIGluZGV4aW5nIixpbnRlcmFjdGl2ZV9kYXRhYmFzZV93cml0ZXNfdGhyZXNob2xkOiJUaHJlc2hvbGQgb2YgZGlzayB0YWtlbiBieSBkb2NzIHdoaWNoIGRpc2FibGVzIGRvY3Mgd3JpdGVzIixlbmFibGU6IkVuYWJsZXMgZGlzayBtaW5pdG9yaW5nLCBmYWxzZSBieSBkZWZhdWx0IixpbnRlcmFjdGl2ZV92aWV3X2luZGV4aW5nX3RocmVzaG9sZDoiVGhyZXNob2xkIG9mIGRpc2sgdGFrZW4gYnkgaW5kaWNlcyB3aGljaCBzdG9wcyByZS1pbmRleGluZyBvbiBxdWVyeSJ9LGRyZXlmdXM6e19fOiJ7VjN9cXVlcnktc2VydmVycy5odG1sI3trZXl9IiwiIjoiRHJleWZ1cyBzZWFyY2ggc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24iLGxpbWl0OiJEZWZhdWx0IHJlc3VsdCBzZXQgbGltaXQgZm9yIGdsb2JhbCBzZWFyY2giLGxpbWl0X3BhcnRpdGlvbnM6IkRlZmF1bHQgcmVzdWx0IHNldCBsaW1pdCBmb3IgcGFydGl0aW9uZWQgREJzIixtYXhfbGltaXQ6Ik1heGltdW0gcmVzdWx0IHNldCBmb3IgZ2xvYmFsIHNlYXJjaCIsbWF4X2xpbWl0X3BhcnRpdGlvbnM6Ik1heGltdW0gcmVzdWx0IHNldCBmb3IgcGFydGl0aW9uZWQgc2VhcmNoIixuYW1lOiJDbG91c2VhdSBKVk0gbm9kZSBuYW1lIGFuZCBsb2NhdGlvbiIscmV0cnlfbGltaXQ6Ik1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb24gcmV0cmllcyJ9LGh0dHBkOntfXzoie1YzfWh0dHAuaHRtbCN7a2V5fSIsIiI6IkhUVFAgc2VydmVyIGNvbmZpZywgZm9yIDIueCBvbmx5IGZvciBsb2NhbCA1OTg2IHBvcnQiLCJXV1ctQXV0aGVudGljYXRlIjoiSWYgYHRydWVgIHRyaWdnZXIgYmFzaWMtYXV0aCBwb3AtdXAgb24gdW5hdXRob3JpemVkIHJlcXVlc3RzIixhbGxvd19qc29ucDoiSWYgYHRydWVgIGVuYWJsZXMgSlNPTlAgc3VwcG9ydCwgYGZhbHNlYCByZWNvbW1lbmRlZCIsYXV0aGVudGljYXRpb25faGFuZGxlcnM6Ikxpc3Qgb2YgYXV0aGVudGljYXRpb24gaGFuZGxlcnMgdXNlZCBieSBDb3VjaERCIixiaW5kX2FkZHJlc3M6IklQIGFkZHJlc3MgbGlzdGVuZWQgYnkgQ291Y2hEQiIsY2hhbmdlc190aW1lb3V0OiJDaGFuZ2VzIGZlZWQgdGltZW91dCwgbWlsbGlzZWNvbmRzIixjb25maWdfd2hpdGVsaXN0OiJPbmx5IHdoaXRlbGlzdGVkIHZhbHVlcyBtYXkgYmUgY2hhbmdlZCB2aWEgdGhlIGAvX2NvbmZpZ2AgSFRUUCBlbmRwb2ludHMiLGRlZmF1bHRfaGFuZGxlcjoiRGVmYXVsdCByZXF1ZXN0IGhhbmRsZXIgbG9jYXRvciIsZW5hYmxlX2NvcnM6IklmIGB0cnVlYCBhbGxvd3MgQ09SUyIsZW5hYmxlX3hmcmFtZV9vcHRpb25zOiJDb250cm9scyBYLUZyYW1lLU9wdGlvbnMgaGVhZGVyIixsb2dfbWF4X2NodW5rX3NpemU6Ik1heCByZXNwb25zZSBzaXplIGZvciBgL19sb2dgIHJlcXVlc3QiLG1heF9odHRwX3JlcXVlc3Rfc2l6ZToiTGltaXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgSFRUUCByZXF1ZXN0IGJvZHksIGJ5dGVzIixwb3J0OiJDb3VjaERCIHBvcnQsIG51bWJlciAx4oCTNjU1MzUiLHJlZGlyZWN0X3Zob3N0X2hhbmRsZXI6IkN1c3RvbWl6ZXMgdGhlIGRlZmF1bHQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlcXVlc3RzIHRvIHZpcnR1YWwgaG9zdHMiLHNlY3VyZV9yZXdyaXRlczoiQWxsb3dzIGBfcmV3cml0ZWAgcnVsZXMgcG9pbnRpbmcgdG8gZGlmZmVyZW50IERCIixzZXJ2ZXJfb3B0aW9uczoiTW9jaGlXZWIgd2ViIHNlcnZlciBvcHRpb25zIixzb2NrZXRfb3B0aW9uczoiVGhlIHNvY2tldCBvcHRpb25zIGZvciB0aGUgbGlzdGVuaW5nIHNvY2tldCBpbiBDb3VjaERCIix2aG9zdF9nbG9iYWxfaGFuZGxlcnM6Ikxpc3Qgb2YgZ2xvYmFsIGhhbmRsZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdmlydHVhbCBob3N0cyIseF9mb3J3YXJkZWRfaG9zdDoiWC1Gb3J3YXJkZXItSG9zdCIseF9mb3J3YXJkZWRfcHJvdG86IlgtRm9yd2FyZGVyLVByb3RvIix4X2ZvcndhcmRlZF9zc2w6IlgtRm9yd2FyZGVyLVNzbCJ9LGh0dHBkX2RiX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6IkhUVFAgZW5kcG9pbnRzIGF2YWlsYWJsZSBmb3IgZXZlcnkgQ291Y2hEQiBkYXRhYmFzZSIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saHR0cGRfZGVzaWduX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6IkhUVFAgZW5kcG9pbnRzIGF2YWlsYWJsZSBmb3IgZGVzaWduIGRvY3VtZW50cyIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saHR0cGRfZ2xvYmFsX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6Ikdsb2JhbCBIVFRQIGVuZHBvaW50cyIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saW9xOntfXzoie1YzfWlvcS5odG1sI3trZXl9IiwiIjoiSU8gcXVldWUgcHJpb3JpdGl6YXRpb24gb3B0aW9ucyIsY29uY3VycmVuY3k6Ik51bWJlciBvZiBjb25jdXJyZW50IGluLWZsaWdodCBJTyByZXF1ZXN0cyB0aGF0IHRoZSBxdWV1ZWluZyBzeXN0ZW0gd2lsbCBzdWJtaXQiLHJhdGlvOiJCYWNrZ3JvdW5kIElPIHJlcXVlc3RzIHF1b3RhIHJhdGlvIn0sImlvcS5ieXBhc3MiOntfXzoie1YzfWlvcS5odG1sI3trZXl9IiwiIjoiTGlzdCBvZiBvcGVyYXRpb25zIHRoYXQgY2FuIGJ5cGFzcyBJTyBxdWV1ZSIsIioiOiJLZXkgaXMgdGhlIG9wZXJhdGlvbiwgdmFsdWUgaXMgYnlwYXNzIHN0YXR1cyBmb3IgaXQifSxqd3RfYXV0aDp7X186IntWM31hdXRoLmh0bWwje2tleX0iLCIiOiJKV1QgYXV0aCBjb25maWd1cmF0aW9uIixyZXF1aXJlZF9jbGFpbXM6IkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgSldUIGNsYWltcyB0aGF0IG11c3QgYmUgcHJlc2VudCBpbiBhbnkgSldUIHRva2VuIixyb2xlc19jbGFpbV9uYW1lOiJVc2VkIGFzIHRoZSBDb3VjaERCIHVzZXLigJlzIHJvbGVzIGxpc3QgYXMgbG9uZyBhcyB0aGUgSldUIHRva2VuIGlzIHZhbGlkIixyb2xlc19jbGFpbV9wYXRoOiJVc2VkIHRvIHJlYWQgbmVzdGVkIHJvbGUgY2xhaW1zIGZyb20gSldUIHRva2VucyBpbnRvIENvdWNoREIifSxrZW46e19fOiJ7VjN9aW5kZXhidWlsZHMuaHRtbCN7a2V5fSIsIiI6IkJhY2tncm91bmQgaW5kZXggYnVpbGRzIixiYXRjaF9jaGFubmVsczoiQ29udHJvbHMgdGhlIG51bWJlciBvZiBiYWNrZ3JvdW5kIHZpZXcgYnVpbGRzIHRoYXQgY2FuIGJlIHJ1bm5pbmcgaW4gcGFyYWxsZWwiLGluY3JlbWVudGFsX2NoYW5uZWxzOiJBZGRpdGlvbmFsIHNsb3RzIGZvciBzaG9ydCBqb2JzIixtYXhfaW5jcmVtZW50YWxfdXBkYXRlczoiVGhyZXNob2xkIGRlZmluaW5nIGEgam9iIGFzIHNob3J0In0sImtlbi5pZ25vcmUiOntfXzoie1YzfWluZGV4YnVpbGRzLmh0bWwje2tleX0iLCIiOiJBdXRvLWluZGV4aW5nIGJsYWNrbGlzdCIsIioiOiJLZXkgaXMgYSBzaGFyZCBuYW1lIHRvIHNraXAgd2hpbGUgYXV0by1pbmRleGluZywgdmFsdWUgc2hvdWxkIGJlIGB0cnVlYCJ9LGxvZzp7X186IntWM31sb2dnaW5nLmh0bWwje2tleX0iLCIiOiJMb2dnaW5nIG9wdGlvbnMiLHdyaXRlcjoiU2V0IHRoZSBsb2cgd3JpdGVyIHRvIHVzZTogYHN0ZGVycmAsIGBmaWxlYCwgYHN5c2xvZ2AiLGZpbGU6IkxvZ2dpbmcgZmlsZSBwYXRoIixpbmNsdWRlX3Nhc2w6IklmIGB0cnVlYCBwdXRzIFNBU0wgaW5mbyBpbnRvIGxvZ3MiLGxldmVsOiJMb2dnaW5nIHZlcmJvc2l0eTogYGRlYnVnYCwgYGluZm9gLCBgbm90aWNlYCwgYHdhcm5gLCBgZXJyYCwgYG5vbmVgIixzeXNsb2dfYXBwaWQ6IlNwZWNpZmllcyBhcHBsaWNhdGlvbiBuYW1lIGZvciB0aGUgYHN5c2xvZ2Agd3JpdGVyIixzeXNsb2dfZmFjaWxpdHk6IlNwZWNpZmllcyB0aGUgc3lzbG9nIGZhY2lsaXR5IHRvIHVzZSB3aXRoIHRoZSBgc3lzbG9nYCB3cml0ZXIiLHN5c2xvZ19ob3N0OiJTcGVjaWZpZXMgdGhlIGhvc3QgdG8gc2VuZCBsb2dzIHRvIGJ5IGBzeXNsb2dgIHdyaXRlciIsc3lzbG9nX3BvcnQ6IlNwZWNpZmllcyB0aGUgcG9ydCB0byBzZW5kIGxvZ3MgdG8gYnkgYHN5c2xvZ2Agd3JpdGVyIix3cml0ZV9idWZmZXI6IkJ1ZmZlciBmb3IgYGZpbGVgIGxvZyB3cml0ZXIsIGJ5dGVzIix3cml0ZV9kZWxheToiRGVsYXkgZm9yIGBmaWxlYCBsb2cgd3JpdGVyLCBtaWxsaXNlY29uZHMifSxtYW5nbzp7X186IntWM31xdWVyeS1zZXJ2ZXJzLmh0bWwje2tleX0iLCIiOiJDb25maWd1cmVzIE1hbmdvIHF1ZXJ5IGVuZ2luZSIsaW5kZXhfYWxsX2Rpc2FibGVkOiJTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdGhlIOKAnGluZGV4IGFsbCBmaWVsZHPigJ0gdGV4dCBpbmRleCIsZGVmYXVsdF9saW1pdDoiRGVmYXVsdCBsaW1pdCBmb3IgYF9maW5kYCBlbmRwb2ludCByZXNwb25zZSIsaW5kZXhfc2Nhbl93YXJuaW5nX3RocmVzaG9sZDoiVGhyZXNob2xkIGZvciBzY2FubmVkL3Jlc3VsdCBkb2NzIHBlcmYgd2FybmluZyJ9LG5hdGl2ZV9xdWVyeV9zZXJ2ZXJzOntfXzoie1YzfXF1ZXJ5LXNlcnZlcnMuaHRtbCN7a2V5fSIsIiI6Ik5hdGl2ZSBFcmxhbmcgcXVlcnkgc2VydmVyIixlbmFibGVfZXJsYW5nX3F1ZXJ5X3NlcnZlcjoiV2hlbiBgdHJ1ZWAsIEVybGFuZyBRUyBpcyBlbmFibGVkIixlcmxhbmc6IkVybGFuZyBRUyBsb2NhdG9yIGZvciBDb3VjaCAxLngifSxub3V2ZWF1OntfXzoie1YzfXF1ZXJ5LXNlcnZlcnMuaHRtbCN7a2V5fSIsIiI6Ik5vdXZlYXUgZnVsbC10ZXh0IHNlYXJjaCBjb25maWciLGVuYWJsZToiU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgTm91dmVhdSIsdXJsOiJUaGUgVVJMIHRvIGEgcnVubmluZyBub3V2ZWF1IHNlcnZlciIsbWF4X3Nlc3Npb25zOiJTZXRzIGlicm93c2UgYG1heF9zZXNzaW9uc2AgZm9yIE5vdXZlYXUgc2VydmljZSIsbWF4X3BpcGVsaW5lX3NpemU6IlNldHMgaWJyb3dzZSBgbWF4X3BpcGVsaW5lX3NpemVgIGZvciBOb3V2ZWF1IHNlcnZpY2UifSxwdXJnZTp7X186IntWM31taXNjLmh0bWwje2tleX0iLCIiOiJDb25maWd1cmF0aW9uIG9mIGRhdGFiYXNlIHB1cmdlIixtYXhfZG9jdW1lbnRfaWRfbnVtYmVyOiJNYXggbnVtYmVyIG9mIGRvY3MgYWxsb3dlZCBpbiBhIHNpbmdsZSBwdXJnZSByZXF1ZXN0IixtYXhfcmV2aXNpb25zX251bWJlcjoiTWF4IG51bWJlciBvZiBhY2N1bXVsYXRlZCByZXZpc2lvbnMgaW4gYSBzaW5nbGUgcHVyZ2UgcmVxdWVzdCIsaW5kZXhfbGFnX3dhcm5fc2Vjb25kczoiTWF4IGR1cmF0aW9uIGZvciB1cGRhdGluZyBpbmRleCB0byBjb21wbHkgbG9jYWwgcHVyZ2UgY2hlY2twb2ludCJ9LHF1ZXJ5X3NlcnZlcnM6e19fOiJ7VjN9cXVlcnktc2VydmVycy5odG1sI3trZXl9IiwiIjoiUXVlcnkgc2VydmVycyBsaXN0IiwiKiI6IktleSBpcyBsYW5ndWFnZSwgdmFsdWUgaXMgcGF0aCB0byBwcm9jZXNzb3IifSxxdWVyeV9zZXJ2ZXJfY29uZmlnOntfXzoie1YzfXF1ZXJ5LXNlcnZlcnMuaHRtbCN7a2V5fSIsIiI6IlF1ZXJ5IHNlcnZlcnMgY29uZmlndXJhdGlvbiIsY29tbWl0X2ZyZXE6IkRlbGF5IGluIHNlY29uZHMgYmVmb3JlIHZpZXcgaW5kZXggY2hhbmdlcyBhcmUgY29tbWl0dGVkIHRvIGRpc2siLGxpbWl0OiJOdW1iZXIgb2YgT1MgcHJvY2Vzc2VzIHVzYWJsZSBieSBRdWVyeSBTZXJ2ZXJzIixvc19wcm9jZXNzX2xpbWl0OiJOdW1iZXIgb2YgT1MgcHJvY2Vzc2VzIHVzYWJsZSBieSBRdWVyeSBTZXJ2ZXJzIixyZWR1Y2VfbGltaXQ6IkNvbnRyb2xzIGlmIHJlZHVjZSB0aHJvd3MgZXJyb3Igb24gYSBzdGVwIHdoaWNoIGlzIG1vcmUgdGhhbiB0d2ljZSBhcyBsYXJnZSBhcyBpbnB1dCIsc29mdF9saW1pdDoiU29mdCBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIE9TIHByb2Nlc3NlcyB1c2FibGUgYnkgUXVlcnkgU2VydmVycyIsb3NfcHJvY2Vzc19zb2Z0X2xpbWl0OiJTb2Z0IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgT1MgcHJvY2Vzc2VzIHVzYWJsZSBieSBRdWVyeSBTZXJ2ZXJzIn0scXVpY2tqczp7X186IntWM31xdWlja2pzLmh0bWwje2tleX0iLCIiOiJRdWlja0pTIGVuZ2luZSBvcHRpb25zIixtZW1vcnlfbGltaXRfYnl0ZXM6IlF1aWNrSlMgbWVtb3J5IGxpbWl0IGluIGJ5dGVzOyBkZWZhdWx0IGlzIDY3MTA4ODY0ICg2NE1iKSJ9LHJlcGxpY2F0b3I6e19fOiJ7VjN9cmVwbGljYXRvci5odG1sI3trZXl9IiwiIjoiUmVwbGljYXRvciBEQiBjb25maWciLGF1dGhfcGx1Z2luczoiTGlzdCBvZiByZXBsaWNhdG9yIGNsaWVudCBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIixjZXJ0X2ZpbGU6IlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIHVzZXLigJlzIGNlcnRpZmljYXRlIixjaGVja3BvaW50X2ludGVydmFsOiJSZXBsaWNhdGlvbiBjaGVja3BvaW50IGludGVydmFsLCBtaWxsaXNlY29uZHMiLGNvbm5lY3Rpb25fdGltZW91dDoiSFRUUCBjb25uZWN0aW9uIHRpbWVvdXQgcGVyIHJlcGxpY2F0aW9uIGluIG1pbGxpc2Vjb25kcywgZGl2aWRlZCBieSAzIGZvciBwdWxsIHN5bmMiLGh0dHBfY29ubmVjdGlvbnM6Ik1heCBudW1iZXIgb2YgSFRUUCBjb25uZWN0aW9ucyBwZXIgcmVwbGljYXRpb24iLGludGVydmFsOiJTY2hlZHVsaW5nIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyIsa2V5X2ZpbGU6IlBhdGggdG8gZmlsZSBjb250YWluaW5nIHVzZXLigJlzIHByaXZhdGUgUEVNIGVuY29kZWQga2V5IixtYXhfY2h1cm46Ik1heCBudW1iZXIgb2YgcmVwbGljYXRpb24gam9icyB0byBzdGFydC9zdG9wIGR1cmluZyByZXNjaGVkdWxpbmciLG1heF9qb2JzOiJNYXggbnVtYmVyIG9mIGFjdGl2ZWx5IHJ1bm5pbmcgcmVwbGljYXRpb25zIixwYXNzd29yZDoiVXNlcuKAmXMgcGFzc3dvcmQsIGlmIHRoZSBwcml2YXRlIGtleSBmaWxlIGlzIHBhc3N3b3JkIHByb3RlY3RlZCIscHJpb3JpdHlfY29lZmY6IkRlY2F5cyBqb2IgcHJpb3JpdGllcyBzdWNoIHRoYXQgdGhleSBzbG93bHkgZHJpZnQgdG93YXJkcyB0aGUgZnJvbnQgb2YgdGhlIHJ1biBxdWV1ZSIscmV0cmllc19wZXJfcmVxdWVzdDoiSWYgYSByZXF1ZXN0IGZhaWxzLCB0aGUgcmVwbGljYXRvciB3aWxsIHJldHJ5IGl0IHVwIHRvIE4gdGltZXMiLHNvY2tldF9vcHRpb25zOiJGaW5lIHR1bmUgcmVwbGljYXRpb24gc29ja2V0IG9wdGlvbnMiLHNzbF9jZXJ0aWZpY2F0ZV9tYXhfZGVwdGg6Ik1heGltdW0gcGVlciBjZXJ0aWZpY2F0ZSBkZXB0aCIsc3NsX3RydXN0ZWRfY2VydGlmaWNhdGVzX2ZpbGU6IkZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2YgcGVlciB0cnVzdGVkIGNlcnRpZmljYXRlcyBpbiB0aGUgUEVNIGZvcm1hdCIsdXBkYXRlX2RvY3M6IklmIGB0cnVlYCBDb3VjaCB1cGRhdGVzIF9yZXBsaWNhdG9yIGRvY3Mgb24gdGFzayBlcnJvciBhbmQgc3RhcnQiLHVzYWdlX2NvZWZmOiIw4oCmMSwgZGVjYXlzIGhpc3RvcmljIGZhaXIgc2hhcmUgdXNhZ2UgZXZlcnkgc2NoZWR1bGluZyBjeWNsZSwgbG93ZXIgbWVhbnMgZGVjYXkgaXMgcXVpY2tlciIsdXNlX2NoZWNrcG9pbnRzOiJJZiBgdHJ1ZWAgQ291Y2hEQiBtYWtlcyBjaGVja3BvaW50cyBkdXJpbmcgYW5kIGF0IHRoZSBjb21wbGV0aW9uIG9mIHJlcGxpY2F0aW9uIix2ZXJpZnlfc3NsX2NlcnRpZmljYXRlczoiSWYgYGZhbHNlYCBpbnZhbGlkIGNlcnRpZmljYXRlcyBkbyBub3QgcHJldmVudCByZXBsaWNhdGlvbiIsd29ya2VyX2JhdGNoX3NpemU6Ik51bWJlciBvZiBkb2NzIHRvIHJlYWQgaW4gYmF0Y2ggZHVyaW5nIHN5bmMiLHdvcmtlcl9wcm9jZXNzZXM6Ik51bWJlciBvZiBhIHJlcGxpY2F0aW9uIHN1Yi1wcm9jZXNzZXMgdG8gcnVuIHNpbXVsdGFuZW91c2x5Iix3aW5uaW5nX3JldnNfb25seToiV2hlbiBgdHJ1ZWAgcmVwbGljYXRlcyB3aW5uaW5nIHJldnMgb25seSBkaXNjYXJkaW5nIGNvbmZsaWN0czsgZGVmYXVsdCBpcyBgZmFsc2VgIn0sInJlcGxpY2F0b3Iuc2hhcmVzIjp7X186IntWM31yZXBsaWNhdG9yLmh0bWwje2tleX0iLCIiOiJSZXBsaWNhdG9yIHNoYXJlIHZhbHVlcyBmb3IgREJzLCBoaWdoZXIgdmFsdWVzIG1lbiBhIERCIGhhdmUgbW9yZSBjaGFuY2UgdG8gc3luYyIsIioiOiJQYXJ0aWN1bGFyIERCIHJlcGxpY2F0aW9uIHByaW9yaXR5LCAx4oCmMTAwIn0scmVzaGFyZGluZzp7X186IntWM31yZXNoYXJkaW5nLmh0bWwje2tleX0iLCIiOiJSZXNoYXJkaW5nIGNvbmZpZ3VyYXRpb24iLGRlbGV0ZV9zb3VyY2U6IklmIGB0cnVlYCBzb3VyY2Ugc2hhcmQgc2hvdWxkIGJlIGRlbGV0ZWQgYWZ0ZXIgcmVzaGFyZGluZyIsbWF4X2pvYnM6Ik1heGltdW0gbnVtYmVyIG9mIHJlc2hhcmRpbmcgam9icyBwZXIgY2x1c3RlciBub2RlIixtYXhfcmV0cmllczoiSG93IG1hbnkgdGltZXMgdG8gcmV0cnkgc2hhcmQgc3BsaXR0aW5nIHN0ZXBzIGlmIHRoZXkgZmFpbCIscmV0cnlfaW50ZXJ2YWxfc2VjOiJIb3cgbG9uZyB0byB3YWl0IGJldHdlZW4gc3Vic2VxdWVudCByZXRyaWVzLCBzZWNvbmRzIixzb3VyY2VfY2xvc2VfdGltZW91dF9zZWM6IkhvdyBtYW55IHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIHNvdXJjZSBzaGFyZCB0byBjbG9zZSIsdXBkYXRlX3NoYXJkX21hcF90aW1lb3V0X3NlYzoiSG93IG1hbnkgc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgc2hhcmQgbWFwIHVwZGF0ZSBvcGVyYXRpb24gdG8gY29tcGxldGUifSxzbW9vc2g6e19fOiJ7VjN9Y29tcGFjdGlvbi5odG1sI3trZXl9IiwiIjoiQXV0b2NvbXBhY3Rpb24gZGFlbW9uIHNldHRpbmdzIixkYl9jaGFubmVsczoiTGlzdCBvZiBjb21tYSBzZXBhcmF0ZWQgZGIgY29tcGFjdGlvbiBjaGFubmVsIG5hbWVzIix2aWV3X2NoYW5uZWxzOiJMaXN0IG9mIGNvbW1hIHNlcGFyYXRlZCB2aWV3IGluZGV4IGNvbXBhY3Rpb24gY2hhbm5lbCBuYW1lcyIsc3RhbGVuZXNzOiJNaW51dGVzIGJlZm9yZSBwcmlvcml0eSBxdWV1ZSBpcyByZWJ1aWx0LCBkZWZhdWx0IGlzIDUiLGNsZWFudXBfaW5kZXhfZmlsZXM6IldoZW4gYHRydWVgLCBjb21wYWN0b3IgZGVsZXRlcyBvcnBoYW5lZCBpbmRleCBmaWxlczsgZGVmYXVsdCBpcyBgZmFsc2VgIix3YWl0X3NlY3M6IlRpbWUgaXMgc2Vjb25kcyB0byB3YXJtIHVwIGNvbXBhY3Rpb24gY2hhbm5lbCwgZGVmYXVsdCBpcyAzMCIscGVyc2lzdDpbIklmIGB0cnVlYCBwZXJzaXN0cyBqb2JzIGJldHdlZW4gbm9kZSByZXN0YXJ0LCBkZWZhdWx0IGlzIGBmYWxzZWAiLCIiXX0sInNtb29zaC5yYXRpb19kYnMiOntfXzoie1YzfWNvbXBhY3Rpb24uaHRtbCNzbW9vc2guPGNoYW5uZWw+IiwiIjoiQ29udHJvbHMgcmVzb3VyY2UgYWxsb2NhdGlvbiBmb3IgZGJzIGNvbXBhY3Rpb24gY2hhbm5lbCIsY2FwYWNpdHk6Ik1heCBpdGVtcyB0aGUgY2hhbm5lbCBjYW4gaG9sZCAobG93IHByaW9yaXR5IGl0ZW1zIGRyb3BwZWQgZmlyc3QpLCBkZWZhdWx0IDk5OTkiLGNvbmN1cnJlbmN5OiJNYXggam9icyB0aGF0IGNhbiBydW4gY29uY3VycmVudGx5IGluIHRoaXMgY2hhbm5lbCwgZGVmYXVsdHMgdG8gMSIsbWluX3ByaW9yaXR5OiJNaW4gcHJpb3JpdHkgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtYXhfcHJpb3JpdHk6Ik1heCBwcmlvcml0eSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1pbl9zaXplOiJNaW4gc2l6ZSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1heF9zaXplOiJNYXggc2l6ZSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1pbl9jaGFuZ2VzOiJNaW4gY2hhbmdlcyBzaW5jZSBsYXN0IGNvbXBhY3Rpb24gYmVmb3JlIHRoZSBpdGVtIHdpbGwgYmUgZW5xdWV1ZWQiLHByaW9yaXR5OiJQcmlvcml0eSBjYWxjIG1ldGhvZDogcmF0aW8gKGRlZmF1bHQsIHNpemVzLmZpbGUvc2l6ZXMuYWN0aXZlKSwgb3Igc2xhY2sgKHNpemVzLmZpbGUtc2l6ZXMuYWN0aXZlKSJ9LCJzbW9vc2gucmF0aW9fdmlld3MiOntfXzoie1YzfWNvbXBhY3Rpb24uaHRtbCNzbW9vc2guPGNoYW5uZWw+IiwiIjoiQ29udHJvbHMgcmVzb3VyY2UgYWxsb2NhdGlvbiBmb3IgdmlldyBpbmRpY2VzIGNvbXBhY3Rpb24gY2hhbm5lbCIsY2FwYWNpdHk6Ik1heCBpdGVtcyB0aGUgY2hhbm5lbCBjYW4gaG9sZCAobG93IHByaW9yaXR5IGl0ZW1zIGRyb3BwZWQgZmlyc3QpLCBkZWZhdWx0IDk5OTkiLGNvbmN1cnJlbmN5OiJNYXggam9icyB0aGF0IGNhbiBydW4gY29uY3VycmVudGx5IGluIHRoaXMgY2hhbm5lbCwgZGVmYXVsdHMgdG8gMSIsbWluX3ByaW9yaXR5OiJNaW4gcHJpb3JpdHkgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtYXhfcHJpb3JpdHk6Ik1heCBwcmlvcml0eSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1pbl9zaXplOiJNaW4gc2l6ZSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1heF9zaXplOiJNYXggc2l6ZSBvZiBhbiBpdGVtIHRvIGVucXVldWUiLG1pbl9jaGFuZ2VzOiJNaW4gY2hhbmdlcyBzaW5jZSBsYXN0IGNvbXBhY3Rpb24gYmVmb3JlIHRoZSBpdGVtIHdpbGwgYmUgZW5xdWV1ZWQiLHByaW9yaXR5OiJQcmlvcml0eSBjYWxjIG1ldGhvZDogcmF0aW8gKGRlZmF1bHQsIHNpemVzLmZpbGUvc2l6ZXMuYWN0aXZlKSwgb3Igc2xhY2sgKHNpemVzLmZpbGUtc2l6ZXMuYWN0aXZlKSJ9LCJzbW9vc2guaWdub3JlIjp7X186IiIsIiI6Ikxpc3Qgb2Ygc2hhcmRzIGlnbm9yZWQgYnkgc21vb3NoIGF1dG8tY29tcGFjdG9yIHNlcnZpY2UiLCIqIjoiU2hhcmQgbmFtZSB0byBiZSBpZ25vcmVkIGJ5IHNtb29zaCBhdXRvLWNvbXBhY3RvciJ9LHNzbDp7X186IntWM31odHRwLmh0bWwje2tleX0iLCIiOiJIVFRQUyBvcHRpb25zIixjYWNlcnRfZmlsZToiQ0EgQ2VydGlmaWNhdGUgZmlsZSBwYXRoIixjZXJ0X2ZpbGU6IkNlcnRpZmljYXRlIGZpbGUgcGF0aCIsY2lwaGVyczoiU3BlY2lmeSBwZXJtaXR0ZWQgc2VydmVyIGNpcGhlciBsaXN0LCBKU09OIGFycmF5IG9mIHN0cmluZ3MiLGZhaWxfaWZfbm9fcGVlcl9jZXJ0OiJSZXF1aXJlIHByZXNlbmNlIG9mIGNsaWVudCBjZXJ0aWZpY2F0ZSBpZiBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCIsa2V5X2ZpbGU6IkNlcnRpZmljYXRlIGtleSBmaWxlIHBhdGgiLHBhc3N3b3JkOiJDZXJ0aWZpY2F0ZSBrZXkgcGFzc3dvcmQiLHNlY3VyZV9yZW5lZ290aWF0ZToiRW5hYmxlIHNlY3VyZSByZW5lZ290aWF0aW9uIixzc2xfY2VydGlmaWNhdGVfbWF4X2RlcHRoOiJNYXhpbXVtIHBlZXIgY2VydGlmaWNhdGUgZGVwdGgiLHRsc192ZXJzaW9uczoiU3BlY2lmeSBwZXJtaXR0ZWQgc2VydmVyIFNTTC9UTFMgcHJvdG9jb2wgdmVyc2lvbnMiLHZlcmlmeV9mdW46IlNTTCB2ZXJpZmljYXRpb24gZnVuY3Rpb24gbG9jYXRvciIsdmVyaWZ5X3NzbF9jZXJ0aWZpY2F0ZXM6IklmIGB0cnVlYCBlbmFibGVzIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiJ9LHN0YXRzOntfXzoie1YzfW1pc2MuaHRtbCN7a2V5fSIsIiI6IlN0YXRpc3RpYyBjYWxjdWxhdGlvbiIscmF0ZToiUmF0ZSBvZiBzdGF0aXN0aWNzIGdhdGhlcmluZyBpbiBtaWxsaXNlY29uZHMiLHNhbXBsZXM6IkludGVydmFscyBmb3IgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLCBzZWNvbmRzIixpbnRlcnZhbDoiSW50ZXJ2YWwgYmV0d2VlbiBnYXRoZXJpbmcgc3RhdGlzdGljcyBpbiBzZWNvbmRzIn0sdXVpZHM6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiVVVJRHMgY29uZmlnIixhbGdvcml0aG06IkdlbmVyYXRpb24gYWxnb3JpdGhtLCBgcmFuZG9tYCwgYHNlcXVlbnRpYWxgLCBgdXRjX3JhbmRvbWAsIGB1dGNfaWRgIixtYXhfY291bnQ6IlBlci1yZXF1ZXN0IFVVSUQgbGltaXQsIG51bWJlciIsdXRjX2lkX3N1ZmZpeDoiU3VmZml4IHRvIGFwcGVuZCB3aGVuIGB1dGNfaWRgIFVVSUQgZ2VuZXJhdG9yIGlzIHVzZWQifSx2ZW5kb3I6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiVmVuZG9yIGluZm9ybWF0aW9uIiwiKiI6IktleSBpcyBhIGtleSBmb3IgYEdFVCAvYCByZXNwb25zZSwgdmFsdWUgaXMgcmV0dXJuZWQgdW5kZXIgdGhlIGtleSJ9LHZob3N0czp7X186IntWM31odHRwLmh0bWwje2tleX0iLCIiOiJWaXJ0dWFsIGhvc3RzIGxpc3QiLCIqIjoiS2V5IGlzIGxpa2UgYGRvbWFpbi5uYW1lOjU5ODRgLCB2YWx1ZSBpcyBgL2RibmFtZS9kb2MvLi4uYCJ9LHZpZXdfY29tcGFjdGlvbjp7X186IntWM31jb21wYWN0aW9uLmh0bWwje2tleX0iLCIiOiJWaWV3cyBjb21wYWN0aW9uIG9wdGlvbnMiLGtleXZhbHVlX2J1ZmZlcl9zaXplOiJLZXktVmFsdWVzIGJ1ZmZlciBzaXplLCBieXRlcyJ9LGNvdWNoYm94OntfXzoie0NCfSNjb3VjaGJveC0xIiwiIjoiQ291Y2hib3ggY29uZmlnIixkZWJ1ZzoiVHVybnMgb24gZGVidWcgbW9kZSAobW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlcykiLG5vZGVuYW1lOiJTaG9ydGN1dCBuYW1lIG9mIGN1cnJlbnQgbm9kZSIsbm9kZXM6Ikxpc3Qgb2Ygbm9kZXMsIEpTT047IG5vZGVuYW1lcyBhcmUga2V5cywgVVJMcyBhcmUgdmFsdWVzIixtYXhfcGFyYWxsZWxfY2hhbmdlczoiTWF4aW11bSBjaGFuZ2VzIHRpY2tzIHByb2Nlc3NlZCBzaW11bHRhbmVvdXNseSIsY29sZF9zdGFydDoiRGVmaW5lcyBpZiBmaXJzdCBydW4gc3RhcnRzIGZyb20gY3VycmVudCBzZXF1ZW5jZXMgb3IgREIgZmlyc3Qgc2VxICgnbm9ybWFsJykiLGFwaToiQ29uZmlndXJlcyBSRVNUIEFQSSwgSlNPTiIscHJveHk6IlByb3h5IHNldHRpbmdzLCBKU09OLiBEZWZhdWx0IGlzIGEgbWFzayBhIHBhdGggcmV3cml0ZXMgaW50byIsc29ja2V0OiJTb2NrZXQuaW8gY29uZmlnIixtYWlsOiJFbWVyZ2VuY3kgbm90aWZpY2F0aW9ucyBlbWFpbHMiLHJlZGlzX2lwOiJSZWRpcyBkb21haW4gb3IgSVAgYWRkcmVzcyIscmVkaXNfcG9ydDoiUmVkaXMgcG9ydCIscmVkaXNfcGFzc3dvcmQ6IlJlZGlzIHBhc3N3b3JkLCBpZiBhbnkiLHJlZGlzX2NvbW1hbmRlcjoiUmVkaXMgY29tbWFuZGVyIGNvbmZpZywgSlNPTiJ9LGNvdWNoYm94X2FwaTp7X186IntDQn0jcmVzdC1hcGkiLCIiOiJMaXN0IG9mIGVuZHBvaW50cyBhbmQgZGRvY3MgYXR0YWNoZWQgdG8gdGhlbSIsIioiOiJLZXkgaXMgZW5kcG9pbnQgd2l0aCBhbGwgYC9gIHJlcGxhY2VkIHdpdGggYCFgLCB2YWx1ZSBpcyBgZGIvZGRvYyBwbHVnaW4xIHBsdWdpbjIgLi4uYCJ9LGNvdWNoYm94X2hvb2tzOntfXzoie0NCfSNob29rcy1jb25maWd1cmF0aW9uIiwiIjoiTGlzdCBvZiBkZXNpZ24gZG9jdW1lbnRzIHdpdGggaG9va3MgYW5kIHBsdWdpbnMgdGhleSBjYW4gdXNlIiwiKiI6IktleSBpcyBwYXRoIG9mIGRkb2MsIHZhbHVlIGlzIGEgbGlzdCBvZiBwbHVnaW5zIGF2YWlsYWJsZSBmb3IgdGhlIGRkb2PigJlzIGhvb2tzIn0sY291Y2hib3hfcGx1Z2luczp7X186IntDQn0jY291Y2hib3gtcGx1Z2lucyIsIiI6IkNvdWNoYm94IHBsdWdpbnMgY29uZmlnIiwiKiI6IktleXMgaXMgYSBwbHVnaW4gbmFtZSwgdmFsdWUgaXMgSlNPTiBwbHVnaW4gY29uZmlnIn19fSwkYWJvdXQ6e0xfUEhPOiJQaG90b24gdmVyc2lvbiIsTF9QSE9BREQ6IlBob3RvbiBhZGRvbnMiLExfUEhPTElCUzoiUGhvdG9uIGxpYnMiLFRJUF9QSE9MSUJTOiJTaG93IGxpYnMuLi4iLExfUEhPSElTVDoiUGhvdG9uIGhpc3RvcnkiLFRJUF9QSE9ISVNUOiJTaG93IHZlcnNpb25zLi4uIixUWFRfUEhPSElTVDonPGgzPlBob3RvbiBoaXN0b3J5PC9oMz48dWwgY2xhc3M9ImZzOTAgbXQ4IG1iMTIiIHN0eWxlPSJtYXgtaGVpZ2h0OjM1MHB4O292ZXJmbG93LXk6c2Nyb2xsOyI+ezF9PC91bD4nLExfUEhPRk9OVFM6IkZvbnRzIHVzZWQiLExfVkVSOiJDb3VjaERCIHZlcnNpb24iLExfVkVORE9SOiJWZW5kb3IiLExfVVJMOiJOb2RlIFVSTCIsTF9DT1VDSDoiV2VsY29tZSBtc2ciLExfRkVBVDoiQXV4IGZlYXR1cmVzIixMX0NMVVNURVI6IkNsdXN0ZXIiLFRYVF9DTFVTVEVSOmZ1bmN0aW9uKHgpe3JldHVybiB4Kyh4JTEwPT0xJiZ4JTEwMCE9MTE/IiBub2RlIjoiIG5vZGVzIil9LExfUEVSRjoiTm9kZSB0b29scyIsTF9QRVJGVEVTVDoiUGVyZiB0ZXN0Li4uIixUSVBfUEVSRlRFU1Q6IlJ1biBzdXBlcmZpY2lhbCBDb3VjaERCIHBlcmZvcm1hbmNlIHRlc3QgaW4gc2VwYXJhdGUgYnJvd3NlciB0YWIiLExfTE9HUzoiTG9ncy4uLiIsVElQX0xPR1M6IlNob3cgQ291Y2hEQiBsb2dzIixMX1NXVkVSUzoiVmVyc2lvbnMuLi4iLFRJUF9TV1ZFUlM6IlNob3cgQ291Y2hEQiBzZXJ2ZXIgc29mdHdhcmUgdmVyc2lvbnMiLExfR0lUSFVCOiJQaG90b24gYXQgR2l0aHViIixMX1NPVVJDRVM6IlNvdXJjZSBjb2RlIixMX0RMOiJEb3dubG9hZCBQaG90b24gYXBwIGpzb24uLi4iLExfRExfTElOSzoiQ2xpY2sgdG8gZG93bmxvYWQiLExfRExQUkVQOiJQcmVwYXJpbmcganNvbi4uLiIsTF9DSEVDS19VUERBVEVTOiJDaGVjayBmb3IgdXBkYXRlcyIsVFhUX1VQRDonTmV3IHZlcnNpb24gZm91bmQuIExvY2FsIHZlcnNpb24gaXMgPG5vYnIgY2xhc3M9ImJvbGRlciI+ezF9PC9ub2JyPiwgbGF0ZXN0IGlzIDxub2JyIGNsYXNzPSJib2xkZXIiPnsyfTwvbm9icj4uIHszfSAnLFRYVF9VUERfRkVBVFVSRVM6Jzx1bCBjbGFzcz0iZnM5MCBtdDggbWIxMiIgc3R5bGU9Im1heC1oZWlnaHQ6MzUwcHg7b3ZlcmZsb3cteTpzY3JvbGw7Ij57MX08L3VsPicsTVNHX1VQRF9OT05FRUQ6Ik5vIHVwZGF0ZSBuZWVkZWQiLEJUTl9VUERBVEU6IlVwZGF0ZSBQaG90b24iLEJUTl9DQU5DRUw6IkNhbmNlbCIsRVJSX1VQREFURV9DSEVDSzoiRmFpbGVkIHJlYWRpbmcgbmV3IHZlcnNpb24sIHNvcnJ5IixFUlJfVVBEQVRFOiJGYWlsZWQgdXBkYXRpbmcgUGhvdG9uLiBTZXJ2ZXIgcmVzcG9uZGVkIHsxfTrCoHsyfSIsTVNHX1VQREFURV9PSzoiUGhvdG9uIHdhcyB1cGRhdGVkLCBwbGVhc2UgcmVsb2FkIHRoZSBwYWdlIixTX1RJVExFOiJDdXN0b21pemUgUGhvdG9uIixTX1JFUE86IlVwZGF0ZSByZXBvIFVSTCIsU19VUEQ6IlVwZGF0ZSByZW1pbmRlciIsVEFHX1VQRDp7dGFnczpbW3tOZXZlcjoibm8ifV1dLGVtcHR5OnsiVGltZSB0byB0aW1lIjoicmVtaW5kIn19LFNfUElORzoiUGluZyAvX3Nlc3Npb24iLFRBR19QSU5HOnt0YWdzOltbeyJFdmVyeSBtaW4iOiIxIn0seyJFdmVyeSA14oCJbWluIjoiNSJ9XV0sZW1wdHk6e05ldmVyOiIwIn19LFNfU0NST0xMOiJTY3JvbGxiYXJzIixUQUdfU0NST0xMOnt0YWdzOltbeyJIb3ZlciBzbGltIjoiMyJ9LHsiU2xpbSAmIGJyaXNrIjoiNCJ9XV0sZW1wdHk6e05hdGl2ZToiMCJ9fSxTX0ZGQU1JTFk6IlVJIGZvbnQgZmFtaWx5IixTX0ZXRUlHSFQ6IkZvbnQgd2VpZ2h0IixUQUdfRldFSUdIVDp7dGFnczpbe1RoaW46IjMwMCJ9XSxlbXB0eTp7Tm9ybWFsOiI0MDAifX0sU19GQ0ZBTUlMWToiPGNvZGU+Q29kZTwvY29kZT4gZm9udCBmYW1pbHkiLFNfUE9MTDoiVGFzayBwb2xsIGludGVydmFsIixTX1NUQVRTX1BPTEw6IlN0YXRzIHBvbGwgaW50ZXJ2YWwiLFNfSUNPTjoiQnJvd3NlciB0YWIgaWNvbiIsU19DT0xTOiJEQiBsaXN0IGNvbHVtbnMiLFRBR19DT0xTOlt7IkRCIHNpemUiOiJpbmZvIn0seyJBQ0wgaW5mbyI6InNlY3VyaXR5In1dLFNfVEhFTUU6IlVJIHRoZW1lIixUQUdfVEhFTUU6e3RhZ3M6W1t7RGFyazoiZGFyayJ9LHsiTWF0Y2ggYnJvd3NlciI6ImF1dG8ifV1dLGVtcHR5OntMaWdodDoiIn19LFNfR1JPVVA6IkRCIGdyb3VwcyIsVEFHX0dST1VQOnt0YWdzOltbezEwOiJ0aW55In0sezMwOiJzbWFsbCJ9LHsxMDA6Im5vcm1hbCJ9LHsyNTA6ImxhcmdlIn1dLFt7UHJlZml4ZWQ6ImF1dG8ifV1dLGVtcHR5OntObzoiIn0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiiJ9LEJUTl9JQ09OOiJVcGxvYWQgbmV3IGljb27igKYiLEJUTl9JQ09OX1JFU0VUOiJSZXNldCBpY29uIixCVE5fQVBQTFk6IkFwcGx5In0sJGxvZzp7VFhUX1RJVExFOiJMb2dzIixUWFRfS0I6ImtiIixUWFRfU0laRToiU2hvdyIsVFhUX09GRlNFVDoib2Zmc2V0IixQTENfU0VBUkNIOiJTZWFyY2ggaW4gbG9ncyIsUExDX1JFTE9BRDoiUmVsb2FkIixUQUdfRElSOnt0YWdzOlt7IuKApmF0IHRoZSBib3R0b20iOiJmb3J3YXJkIn1dLGVtcHR5OnsiTGF0ZXN0IGF0IHRoZSB0b3AiOiJyZXZlcnNlIn19fSwkZXJyb3I6e1RYVF9FUlI6JzxkaXYgY2xhc3M9InJlZCB0YWwgdzUwcCBwbDcwIGxoMTcwIGRpYiB2YXQiPkVycm9yIHN3aXRjaGluZyA8aT57MX08L2k+PGJyPjxzcGFuIGNsYXNzPSJib2xkZXIiPnsyfTwvc3Bhbj48L2Rpdj4nLEJUTl9SRVRSWTonPHNwYW4gY2xhc3M9ImZpLXJlZnJlc2ggbzYwIj48L3NwYW4+wqBUcnkgYWdhaW7CoCcsQlROX0FVVEg6JzxzcGFuIGNsYXNzPSJmaS10b3JzbyBvNjAiPjwvc3Bhbj4gTG9nIGluICcsVFhUX0MzX0FMTF9EQlNfNDAxOic8ZGl2IGNsYXNzPSJ0YWwgdzUwcCBwbDcwIGxoMTcwIGRpYiB2YXQiPlNvcnJ5LCBDb3VjaERCIDMgaGlkZXMgZnVsbCBsaXN0IG9mIERCcyBmcm9tIG5vbi1hZG1pbiB1c2Vycy4gVG8gbmF2aWdhdGUgdGhyb3VnaCBEQnMgc2VsZWN0IGEgREIgeW91IHZpc2l0ZWQgcmVjZW50bHkgKGlmIGFueSksIG9yIGVudGVyIGtub3duIERCIG5hbWUuPC9kaXY+JyxQTENfREJOQU1FOiJFbnRlciBleGlzdGluZyBEQiBuYW1lIixCVE5fR086Ik9wZW4gREIifX19LEJhc2U6IiIsQWxsOnt9LEdyb3Vwczp7fSxUYWJzOltdLFR5cGVzOltdLEhpc3Rvcnk6W10sRG93bmxvYWRVUkw6ITEsUmVwbGljYXRvckRCOiIiLFJlcGxEb2NzOltdLGlzQ2x1c3RlcjohMCxpc0lFOiExLGlPUzohMSxpc1dlYktpdDohMSxpc01hYzohMCxjYW5aaXA6bnVsbCxDb3VjaDp7dmVyc2lvbjoiIixxOjAsbjowLHBvcnQ6NTk4NCxtYXhQdXJnZToxMDB9LFVzZXJzOntfc2VxOjB9LE1lbWJlcnNoaXA6e30sc2Nyb2xsRml4OnthbHdheXNGaXhTY3JvbGxzOiExLHNjcm9sbFdpZHRoOjB9LFBhbmVsSGVpZ2h0OjAsaXNCYXI6ITEsQ01wcmVmaXg6ImppIixkYXRhOntwYXRoOltdLG5hbWU6IiIsZm9udDoiaW5oZXJpdCIsZm9udENvZGU6IkNvdXNpbmUifSxwYXJhbXM6e3Jlc3R5bGU6MTYsc3RyaWN0OiEwfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLGEuQ2ZnKSxjPSQuRGVmZXJyZWQoKSxkPXdpbmRvdy5ERE9DLGU9d2luZG93LmxvY2F0aW9uLGY9d2luZG93Lm5hdmlnYXRvcixnPU9iamVjdC5rZXlzKGEpLmZpbHRlcigvXlwkLyk7dHJ5e25ldyBSZWdFeHAoIl5cXHB7RW1vaml9IiwidSIpfWNhdGNoKHgpe2EuVS50YWdFbW9qaT1hLlUubm9vcH1hLnRhZ0Vtb2ppPWEuVS50YWdFbW9qaSxhLl9jb21waWxlZD1hLl9jb21waWxlZHx8IShjdy5kYnN8fCJib29sZWFuIj09dHlwZW9mIGN3LmRlYnVnKSxPYmplY3Qua2V5cyhhLkYpLmZvckVhY2goeD0+YVt4XT1hW3hdfHxhLkZbeF0uYmluZChhKSksWyIkdmlldyIsIiRmaWxlIiwiVmlld0VkIl0uZm9yRWFjaCh4PT5hW3hdLkNNcHJlZml4PWEuQ01wcmVmaXgpLGEuU2Vzc2lvbj1hLlNlc3Npb24uZGVib3VuY2UoMWUzKSxhLlR5cGVzPWcuc2xpY2UoMCksYS5pc0lFPSEhZi51c2VyQWdlbnQubWF0Y2goL0VkZ2V8VHJpZGVudC8pLGEuaXNNYWM9L01hYy8udGVzdChmLnBsYXRmb3JtKyIiKSxhLmlPUz0vXihpUGFkfGlQaG9uZSkkLy50ZXN0KGYucGxhdGZvcm0rIiIpfHxhLmlzTWFjJiZmLm1heFRvdWNoUG9pbnRzPjEsYS5pc1dlYktpdD0hYS5pc0lFJiYvQXBwbGVXZWJLaXQvLnRlc3QoZi51c2VyQWdlbnQrIiIpLGEuTHM9YS5McygpLGEuTHMoIlRhc2tzLlN0YXJzIikmJihhLkxzKCJEQnMuU3RhcnMiLGEuTHMoIlRhc2tzLlN0YXJzIikpLGEuTHMoIlRhc2tzLlN0YXJzIixudWxsKSksYS5CYXNlfHwoYS5CYXNlPWQ/ZC5fYmFzZTpbZS5wcm90b2NvbCwiIixlLmhvc3QsIiJdLmNvbXBhY3QoKS5qb2luKCIvIikpLGEuX2NvbXBpbGVkJiYvXldpbi8udGVzdChmLnBsYXRmb3JtKyIiKSYmJCgiI3Njcm9sbGJhci10d2VhayIpLnRleHQoWyIge3dpZHRoOjRweDsgaGVpZ2h0OjRweDt9IiwiLXRodW1iIHtiYWNrZ3JvdW5kOnJnYmEoOTAsOTAsOTAsMC4yKTsgYm9yZGVyLXJhZGl1czoycHg7fSIsIi10cmFjayB7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApOyJdLm1hcCh4PT4iOjotd2Via2l0LXNjcm9sbGJhciIreCkuam9pbigiXG4iKSksYS5jaGVja1Njcm9sbGJhck92ZXJsYXkoeCkseC5odG1sKGEuSFRNTC5yZXBsYWNlKC9cblxzKi9nLCIiKSksT2JqZWN0LmtleXMoYS5FZCkuZm9yRWFjaChmdW5jdGlvbih4KXthLkVkW3hdLmlkJiYoYS5FZFt4XT0kLmV4dGVuZCghMCwkLm15LmNhY2hlKGEuRWRbeF0uaWQpfHx7fSxhLkVkW3hdLHtQaG86YS5QaG8sVTphLlV9KSl9KTt2YXIgaD1hLkVkLmpzb250cmVlO2guVT1hLlUsaC4kZmlsZXMuQWRkLlBobz1hLlBobywkLmV4dGVuZCghMCxoLiRmaWxlcy51aSx7Ii5pa2V5IjpoLiRtdWx0aS51aVsiLmlrZXkiXSwiLmJ0bi1qc29uIjpoLiRtdWx0aS51aVsiLmJ0bi1qc29uIl19KSxbIkhpc3RvcnkiLCJIVE1MLkhpc3RvcnlSb3ciLCJFeHRFZC5Ob2RlVXBkYXRlZCIsIkV4dEVkLkVkaXRvckludm9rZWQiLCJzdHlsZS4gIiwiY21kVW5kbyIsInVpLiNkb2MtaGlzdG9yeSIsInVpLiNzdHlsZS1oaXN0b3J5IiwidWkuI2VtcHR5LWhpc3RvcnkiLCJ1aS4jYnRuLWhpc3RvcnktdW5kbyIsInN0eWxlLiAjZG9jLWhpc3RvcnkiXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2N3LmxpYi51bm1hc2soYS4kY29uZmlnLGN3LmxpYi5nZXRyZWYoYS4kZG9jLHgpLHgpfSksYS4kc3RhdHM9JC5leHRlbmQoITAse30sJC5teS5jYWNoZShhLiRzdGF0cy5pZCl8fHt9LGEuJHN0YXRzKTt2YXIgaT1bIlRhYiIsIkxvZ2luIiwiTG9nb3V0IiwiUmVxSlNPTiIsIkNvbXBhY3QiLCJOZXdEQiIsIkRlbERCIiwiU2VjT2JqIiwiVXNlckRvYyIsIk1hbmdvRWQiLCJWaWV3RWQiLCJJbmRleEVkIiwiU3FsRWQiLCJOZXdJbmRleCIsIlN5bmNUYXNrIiwiU3luY1Rhc2suRHVtcFppcCIsIlN5bmNUYXNrLlVuZHVtcCJdLmFkZChnKSxqPVsiaXNJRSIsImlPUyIsImlzV2ViS2l0IiwidGFnRW1vamkiLCJQaG8iLCJSZXEiLCJ0cnVuYyIsInAydSIsIlNlbDJTY3JvbGwiLCJuaWNlU2Nyb2xsIiwic2VsZWN0MiJdO2lmKGkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj1jdy5saWIuZ2V0cmVmKGEseCk7YiYmKGIubGFuZyYmJC5leHRlbmQoYi5sYW5nLGEubGFuZ1t4XXx8e30pLGouZm9yRWFjaChmdW5jdGlvbih4KXtiW3hdPWFbeF19KSxiLkJ1c3k9YS5GLkJ1c3kpfSksYS5qMmg9YS5FZC5qc29udHJlZS5qMmgseC5vbigidGFiY2xvc2UubXkiLCh4LGIpPT5hLkNsb3NlKGIpKSxhLl9jb21waWxlZCl7dmFyIGs9YS5McygiVGFiQ2xvc2VIaXN0b3J5Iik7aWYoayYmay5sZW5ndGgpaWYoRGF0ZS5ub3coKS1rWzBdLnN0YW1wPDNlNClhLlRhYnM9T2JqZWN0LmNsb25lKGtbMF0udGFicywhMCk7ZWxzZXt2YXIgbD1bXTtrLmZvckVhY2goZnVuY3Rpb24oeCl7RGF0ZS5ub3coKS14LnN0YW1wPjE1NTUyZTZ8fGwubGVuZ3RoPHgudGFicy5sZW5ndGgmJihsPXgudGFicyl9KSxsLmxlbmd0aCYmKGEuVGFicz1PYmplY3QuY2xvbmUoa1swXS50YWJzLCEwKSl9dmFyIG09YS5McygiQ2ZnIik7bT1PYmplY3QuaXNPYmplY3QobSk/bTp7fSwkLmV4dGVuZCghMCxhLkNmZyxtKSwkLmV4dGVuZChhLkNmZyxPYmplY3Quc2VsZWN0KG18fHt9LFsibGlzdENvbHMiLCJncm91cGluZyJdKSksIidQVCBNb25vJyI9PWEuQ2ZnLmZvbnRDb2RlJiYoYS5DZmcuZm9udENvZGU9IkNvdXNpbmUiKSwiJ1BUIE1vbm8nIj09YS5DZmcuZm9udCYmKGEuQ2ZnLmZvbnQ9IkNvdXNpbmUiKSxhLkNmZy50YWJCYXI9ImF1dG8iLCQubmljZXNjcm9sbC5vcHRpb25zLm1vdXNlc2Nyb2xsc3RlcD0yMCooK2EuQ2ZnLnNjcm9sbFNwZWVkfHwwKS5jbGFtcCgyLDEwKSwkLmV4dGVuZChhLkNmZyxkJiZkLnNldHRpbmdzP2Quc2V0dGluZ3M6e30pfXJldHVybiBiPWEuQ2ZnLHgudGhlbihmdW5jdGlvbigpe2EuX2NvbXBpbGVkfHwoY3cubG9nKCJQaG90b24gc3RhcnRlZCBpbiBDbG91ZFdhbGwiKSx4Lm9uKCJjbGljay5teSIsImEiLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KS5hdHRyKCJocmVmIik7aWYoIiMiPT1iWzBdKXt2YXIgYz1kZWNvZGVVUklDb21wb25lbnQoYi5yZXBsYWNlKC9eIytcLz8vLCIiKSkuc3BsaXQoIi8iKS5jb21wYWN0KCEwKTtyZXR1cm4gYS5Td2l0Y2goYyksITF9fSksYS5UYWJzLmxlbmd0aHx8eC5maW5kKCIjbC1yb290dGFiICNsLXJvb3QiKS50cmlnZ2VyKCJjbGljayIpKSxhLl9jb21waWxlZCYmKCFmdW5jdGlvbih4KXtmdW5jdGlvbiBiKCl7dmFyIHg9KGUuaGFzaCsiIikucmVwbGFjZSgvXiMrLywiIikuc3BsaXQoIi8iKS5tYXAoZGVjb2RlVVJJQ29tcG9uZW50KTsiX2Rlc2lnbiI9PXhbMV0mJih4WzJdPSJfZGVzaWduLyIreFsyXSx4LnJlbW92ZUF0KDEpKSxhLlN3aXRjaCh4KX0kKHdpbmRvdykub24oImhhc2hjaGFuZ2UucGhvIixiLmRlYm91bmNlKDFlMy82MCszKSksbnVsbCE9eCYmKGUuaGFzaD14KyIiKSwkKHdpbmRvdykudHJpZ2dlcigiaGFzaGNoYW5nZSIpfSgpLCQoJ2xpbmtbcmVsPSJpY29uIl0nKS5hdHRyKCJocmVmIixiLmljb258fGEuZmlsZXNbImZhdmljb24ucG5nIl0udXJsKSx3aW5kb3cub25iZWZvcmV1bmxvYWQ9ZnVuY3Rpb24oeCl7aWYoYS5UYWJzLmZpbmQoeD0+eC5oYXNoMCE9eC5oYXNoMSkpe3ZhciBiPWEubGFuZy5ETEdfVU5MT0FEO3gucmV0dXJuVmFsdWU9Yn1yZXR1cm4gYn0sJCh3aW5kb3cpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7dmFyIHg9T2JqZWN0LmNsb25lKGEuVGFicywhMCksYj1hLkxzKCJUYWJDbG9zZUhpc3RvcnkiKXx8W107Yi51bnNoaWZ0KHtzdGFtcDpEYXRlLm5vdygpLHRhYnM6eC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucnVuPSExLHguZXJyb3I9ITEseC5oYXNoMD14Lmhhc2gxPSIiLHh9KX0pLGEuTHMoIlRhYkNsb3NlSGlzdG9yeSIsYi50bygzKSl9KSxhLlVwZGF0ZXIuZGVib3VuY2UoMWUzKSgpLGEucGluZ1Nlc3Npb24uZXZlcnkoMWU0KSx3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKHgpeyJhdXRvIj09YS5DZmcudGhlbWUmJmEuU2V0VGhlbWUoImF1dG8iKX0pKSxhLm15LnJlc3R5bGUoKX0uZGVib3VuY2UoMTApKSxhLkdldExpc3QoKS5hbHdheXMoZnVuY3Rpb24oKXtjLnJlc29sdmUoKX0pLGMucHJvbWlzZSgpfSx1aTp7IiNsLXJvb3QiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5hdHRyKCJ0aXRsZSIsYS5sYW5nLlRJUF9ST09UKSx4Lm9uKCJkYmxjbGljay5teSIsZnVuY3Rpb24oKXtyZXR1cm4gYS5DbG9zZUFsbC5kZWxheSg1MCksITF9KX0sYmluZDpmdW5jdGlvbih4KXtyZXR1cm5bdGhpcy5TVkcubG9nbywnPHNwYW4gY2xhc3M9Im5vYmFyIHBsOCBmczExNSB3MjIwIG53IG9oIGVsbCBsaDE4MCI+Jyx3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIjwvc3Bhbj4iXS5qb2luKCIiKX19LCIjYnRuLWFzaWRlLWF1dGgiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9Y3cubWUoKSxlPWMuaXNCYXIsZj0iIjtpZihiLmF0dHIoInRpdGxlIixkP2MubGFuZy5USVBfUFJPRklMRTpjLmxhbmcuVElQX0xPR0lOKSxmPSc8c3BhbiBpZD0iYnRuLWF1dGgtcG9wdXAiPnsxfTwvc3Bhbj4nLmFzc2lnbihkP2MuU1ZHLnVzZXI6Yy5TVkcubG9naW4pLG51bGw9PWEpcmV0dXJuIGY7aWYoYi5kYXRhKCJtb2RhbCIpKWIubW9kYWwoITApO2Vsc2UgaWYoZCl7KGN3Lm1lKCJyb2xlcyIpfHxbXSkubGVuZ3RoO3ZhciBnPWMuaXNCYXI/MjUwOmMubXkuZmluZCgiI2wtaGVhZGVyIikud2lkdGgoKS00MjtjLm15Lm1vZGFsKCIjYnRuLWFzaWRlLWF1dGgiLHtib3VuZDo1LG1hbmlmZXN0OmMuTG9nb3V0LHdpZHRoOmcsbm9zZTplPyJ0b3AiOiJib3R0b20iLGFsaWduOiJ7MX07cmlnaHQ6LTQ0cHg7Ii5hc3NpZ24oZT8idG9wOjg3JSI6ImJvdHRvbToxMTclIiksZXNjOiEwLGVudGVyOiExLHNjcmVlbjohMSx6OjE5OTZ9KX1lbHNlIGMubXkubW9kYWwoIiNidG4tYXNpZGUtYXV0aCIse21hbmlmZXN0OmMuTG9naW4sYm91bmQ6Mix3aWR0aDozMjAsY2xvc2U6ITEsZXNjOiEwLGVudGVyOiExLHNjcmVlbjohMCxnbG9iYWw6ITAsejozZTMsY3NzOiJwMjAgcHQxNSB4Z3JheSJ9KTtyZXR1cm4gZn0sZXZlbnRzOiJjbGljay5teSIsbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7T2JqZWN0LmlzT2JqZWN0KGEpJiZ0aGlzLm15LmNoZWNrKCIjYnRuLWFzaWRlLWF1dGgiKX19fSwiI2J0bi1hc2lkZS1jb25maWciOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gYi5hdHRyKCJ0aXRsZSIsdGhpcy5sYW5nLlRJUF9DT05GSUcpLCc8YSBocmVmPSIjX2NvbmZpZyI+Jyt0aGlzLlNWRy5jb25maWcrIjwvYT4ifX0sIiNidG4tYXNpZGUtc2hhcmUiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gYi5hdHRyKCJ0aXRsZSIsdGhpcy5sYW5nLlRJUF9TSEFSRSksJzxhIGhyZWY9IiNfYWJvdXQiPicrdGhpcy5TVkcuc2hhcmUrIjwvYT4ifSxldmVudHM6ImNsaWNrLm15In0sIiNidG4tY2xvc2UtYWN0aXZlLXRhYiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmZpbmQoIiNsLWFwcHRhYnMgLmwtdGFiLmFjdGl2ZSAjYnRuLXRhYmNsb3NlIikudHJpZ2dlcigiY2xpY2subXkiKX0sZXZlbnRzOiJjbGljay5teSJ9LCIjYnRuLWNsb3NlLWFsbC10YWJzIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiZ0aGlzLkNsb3NlQWxsLmRlbGF5KDUwLCEwKSx0aGlzLmxhbmcuQlROX1hBTEx9LGV2ZW50czpbImNsaWNrLm15Il19LCIjbC1hcHB0YWJzIjp7aW5pdDpmdW5jdGlvbih4KXt4LnNvcnRhYmxlKHtkaXN0YW5jZTo1fSl9LGRlbGF5OjEsbWVyZ2U6ITEsaWQ6WyJpZCJdLGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIGN3LmxpYi5zZGJtKFt4Lm5hbWUseC5hY3RpdmUseC5lcnJvcix4Lmhhc2gwLHguaGFzaDFdKX0sbGlzdDonPGRpdiBjbGFzcz0ibC10YWIiPjwvZGl2PicsYmluZDoidGhpcy5UYWJzIixtYW5pZmVzdDoidGhpcy5UYWIifX0sc3R5bGU6eyIgICI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXgud2lkdGgoKSxjPSEoYj49MTQyMCYmInRvcCIhPWEuQ2ZnLnRhYkJhciksZD1hLkNmZyxlPWEuc2Nyb2xsRml4LmFsd2F5c0ZpeFNjcm9sbHMsZj1hLnNjcm9sbEZpeC5zY3JvbGxXaWR0aHx8MCxnPWQuZm9udCsiIixoPWEuaXNNYWMsaT0vTGludXgvLnRlc3Qod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSsiIiksaj1iPChjPzEzODA6MTUxMCk/MTU6MTYsaz1qLTEuOCxsPWQuZm9udFdlaWdodCxtPSInLWFwcGxlLXN5c3RlbScsJ0JsaW5rTWFjU3lzdGVtRm9udCcsJ1NlZ29lIFVJJyxVYnVudHUsJ0hlbHZldGljYSBOZXVlJyxIZWx2ZXRpY2EsVGFob21hLFZlcmRhbmEsc2Fucy1zZXJpZiI7ImF1dG8iIT1nJiYobT1nKyIsc2Fucy1zZXJpZiIpO3ZhciBuPSJDb3VzaW5lLHVpLW1vbm9zcGFjZSxNb25hY28sQ29uc29sYXMsbW9ub3NwYWNlIjsiYXV0byIhPWQuZm9udENvZGUmJiJDb3VzaW5lIiE9ZC5mb250Q29kZSYmKG49IiciK2QuZm9udENvZGUrIicsQ291c2luZSx1aS1tb25vc3BhY2UsbW9ub3NwYWNlIiksYS5kYXRhLmZvbnQ9bSxhLmRhdGEuZm9udENvZGU9bjt2YXIgbz0iZm9udC1mYW1pbHk6ICIrbSsiO2ZvbnQtd2VpZ2h0OnsyfTsiLHA9bysiZm9udC1zaXplOnsxfXB4IWltcG9ydGFudDsiO2EuX2NvbXBpbGVkJiYoJCgiYm9keSIpLmNzcyh7ImZvbnQtZmFtaWx5IjptLCJmb250LXdlaWdodCI6bH0pLCQoIiNjdy1ib2R5IikuY3NzKHsiZm9udC1mYW1pbHkiOm0sImZvbnQtd2VpZ2h0IjpsfSkpO3ZhciBxPSJmb250LXdlaWdodDp7MX0haW1wb3J0YW50OyIuYXNzaWduKCgrbCsoaD8xMDA6MTUwKSkuY2xhbXAoNDAwLDYwMCkpO3JldHVybiBhLl9jb21waWxlZCYmJCgiI2N3LW5vdGVzIikuY3NzKHt0b3A6Yz8iNTBweCI6IjE4cHgifSkseyIiOnAuYXNzaWduKGosbCkrImxpbmUtaGVpZ2h0OjEuNmVtOyIsIiAucGxzaGltIjpiPihjPzEyNzA6MTYwMCk/InBhZGRpbmctbGVmdDoxNnB4OyI6IiIsIiBidXR0b24sIGlucHV0LCB0ZXh0YXJlYSI6by5hc3NpZ24oIi0iLGwpLCIgLkNvZGVNaXJyb3IsIC5wcmUiOiJmb250LXNpemU6ezF9cHghaW1wb3J0YW50OyBmb250LWZhbWlseTp7Mn0haW1wb3J0YW50OyIuYXNzaWduKGssbiksIiBjb2RlIjoiZm9udC1mYW1pbHk6ezF9IWltcG9ydGFudDsiLmFzc2lnbihuKSwiIC5qc29uZGlmZnBhdGNoLWRlbHRhLCAuanNvbmRpZmZwYXRjaC1kZWx0YSBwcmUiOiJmb250LWZhbWlseTp7MX0haW1wb3J0YW50OyIuYXNzaWduKG4pLCIgI2RpZmYuanNvbmRpZmYiOiJmb250LXNpemU6ezF9cHghaW1wb3J0YW50OyIuYXNzaWduKGspLCIgLmJvbGRlciwgLmwtdGFiLmFjdGl2ZSBhIjpxLCIgI3ZpZXctcGFuZWwgLmp2YWwta2V5LCAjdmlldy1wYW5lbCAuanZhbC1icmFja2V0IjpxLCIgI3ZpZXctcmVzdWx0cyBpbnB1dDpjaGVja2VkK2Rpdj4ubGJsNGNoZWNrLCAjZGItbGlzdCBpbnB1dDpjaGVja2VkK2Rpdj4ubGJsNGNoZWNrIjpxKyJmb250LXNpemU6ezF9JTsgbGluZS1oZWlnaHQ6MS4yZW07Ii5hc3NpZ24oImF1dG8iPT1nP2l8fGg/OTc6OTYuODpnLmluZGV4T2YoIkhlbHZldGljYSIpPi0xPzk3OmcuaW5kZXhPZigiVGFob21hIik+LTE/OTU6OTcpLCIgI2J0bi1jbG9zZS1hY3RpdmUtdGFiIjp7IiI6Yz8iZGlzcGxheTpub25lIjoicmlnaHQ6MDt0b3A6MDt6LWluZGV4OjE5OTY7IiwiICI6ImNvbG9yOnJnYmEoMTU4LDE4NCwyMzAsMC4zKTsgdHJhbnNpdGlvbjogY29sb3IgMC42czsgZm9udC1zaXplOjE4cHg7IGxpbmUtaGVpZ2h0OjI0cHg7IHdpZHRoOjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7IiwiOmhvdmVyIjoiY29sb3I6cmdiYSgyNTUsMzAsNjQsMC41KTsifSwiIC5jb2wtdHJpbS5jb2wtNzAiOmU/IiI6InBhZGRpbmctbGVmdDp7MX1weCFpbXBvcnRhbnQ7Ii5hc3NpZ24oNitmKX19LCIgLnhwYW5lbCI6eyIiOiJib3JkZXItcmFkaXVzOjJweCAycHggMCAwOyBoZWlnaHQ6MzFweDsiLCIgLnhidXR0b24iOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNik7IGJvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjJweDsgcGFkZGluZy1sZWZ0OiAwLjVlbTsgcGFkZGluZy1yaWdodDogMC41ZW07IiwiIC5teS10YWdzIjp7IiI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1hcmdpbi10b3A6IDJweDsgbGluZS1oZWlnaHQ6MjBweDsgIiwiIC50YWciOiJkaXNwbGF5OmlubGluZS1ibG9jazsgIiwiIC50YWcuYWN0aXZlIjoiYmFja2dyb3VuZC1jb2xvcjojZDNkYWUwO2NvbG9yOiAjNGQ1YTZhOyJ9fSwiIC5iZy1wZ3JheSI6ImJhY2tncm91bmQtY29sb3I6I2UzZTllYzsiLCIgYnV0dG9uLCAuYnV0dG9uIjoicGFkZGluZzowLjNlbSAwLjZlbSAwLjRlbSAwLjZlbSIsIiAubm9jd21pbiI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQiLCIgLm5vdGFwIjoiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApOyIsIiAubXktbW9kYWwtb3ZlcmxheSI6ImJveC1zaGFkb3c6IDJweCAzcHggMjJweCAtN3B4IHJnYmEoMTAsIDIwLCAyOSwgMC44KSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHghaW1wb3J0YW50OyIsIiAuZGlmIjoiZGlzcGxheTppbmxpbmUtZmxleDsiLCIgLncxMXAiOiJ3aWR0aDoxMSU7IiwiIC53MTJwIjoid2lkdGg6MTIlOyIsIiAudzE4cCI6IndpZHRoOjE4JTsiLCIgLncwIjoid2lkdGg6MHB4OyIsIiAudzM2Ijoid2lkdGg6MzZweDsiLCIgLnczNyI6IndpZHRoOjM3cHg7IiwiIC53MzgiOiJ3aWR0aDozOHB4OyIsIiAudzQyIjoid2lkdGg6NDJweDsiLCIgLncyZW0iOiJ3aWR0aDoyZW07IiwiIC5tdzEwMHAiOiJtYXgtd2lkdGg6MTAwJTsiLCIgLm13OTVwIjoibWF4LXdpZHRoOjk1JTsiLCIgLmJvbGRlciI6ImZvbnQtd2VpZ2h0OmJvbGRlcjsiLCIgLmxpZ2h0ZXIiOiJmb250LXdlaWdodDpsaWdodGVyOyIsIiAubGgxNDBpIjoibGluZS1oZWlnaHQ6MS40ZW0haW1wb3J0YW50OyIsIiAudHJhbnMiOiJwb2ludGVyLWV2ZW50czpub25lOyIsIiAucGFiYyI6InBvc2l0aW9uOmFic29sdXRlOyIsIiAucHJlbCI6InBvc2l0aW9uOnJlbGF0aXZlOyIsIiAucGwwNWVtIjoicGFkZGluZy1sZWZ0OjAuNWVtOyIsIiAucHIwNWVtIjoicGFkZGluZy1yaWdodDowLjVlbTsiLCIgLndiYSI6IndvcmQtYnJlYWs6YnJlYWstYWxsOyIsIiAud24iOiJ3aGl0ZS1zcGFjZTpub3JtYWw7IHRyYW5zaXRpb246IHdpZHRoIDAuMXM7IiwiIC5veGgiOiJvdmVyZmxvdy14OmhpZGRlbjsiLCIgLnR3MTAwIjoidHJhbnNpdGlvbjp3aWR0aCAwLjFzIiwiIC50dzUwMCI6InRyYW5zaXRpb246d2lkdGggMC41cyIsIiAucm90MTgwIjoidHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsiLCIgLmJ4dG9wIjoiYm9yZGVyOjFweCBzb2xpZCAjZDNkYWUwOyBib3JkZXItdG9wOm5vbmU7IGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4OyIsIiAuYnh0b3AtMzEiOnsiOmFmdGVyIjonYm9yZGVyOjFweCBzb2xpZCAjZDNkYWUwOyBib3JkZXItdG9wOm5vbmU7IGJvcmRlci1yYWRpdXM6IDAgMCAycHggMnB4O3RvcDozMXB4OyBsZWZ0OjA7IHdpZHRoOmNhbGMoMTAwJSAtIDJweCk7IGhlaWdodDpjYWxjKDEwMCUgLSAzMnB4KTtwb2ludGVyLWV2ZW50czpub25lOyB6LWluZGV4OjM7IGNvbnRlbnQ6IiAiOyBwb3NpdGlvbjphYnNvbHV0ZTsgJ30sIiBzZWN0aW9uIjoib3V0bGluZTogbm9uZTsiLCIgLm15LXRhZ3MuYnV0dG9ucyI6eyIgLnRhZyI6ImJvcmRlci1yYWRpdXM6MDsgYm9yZGVyOiAxcHggc29saWQgI2QwZDZkZDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnM7bWFyZ2luLWxlZnQ6LTFweDsgY29sb3I6IzhjOTZhMjsgYm9yZGVyLWxlZnQ6bm9uZTsgYm9yZGVyLXJpZ2h0Om5vbmU7IiwiIC50YWc6aG92ZXIiOiJjb2xvcjojMTQ3M2JmOyIsIiAudGFnLmFjdGl2ZSI6ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzU1NmI4MzsiLCIgLnRhZy5hY3RpdmU6YWZ0ZXIiOidjb250ZW50OiIgIjsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoycHg7IGxlZnQ6MnB4OyB3aWR0aDpjYWxjKDEwMCUgLSA0cHgpOyBoZWlnaHQ6Y2FsYygxMDAlIC0gNHB4KTtib3JkZXItcmFkaXVzOjJweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMTM4LDI1NSwwLjIpOycsIiAudGFnOmZpcnN0LWNoaWxkIjoiYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDBkNmRkOyIsIiAudGFnOmxhc3QtY2hpbGQiOiJib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZDBkNmRkOyIsIiAudGFnOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQiOiJib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZDBkNmRkOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZDBkNmRkOyJ9LCIgZGl2Lm15LW1vZGFsIjoiYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMjQsIDIyOCwgMjMyLCAwLjU1KTsiLCIgLm15LW1vZGFsLm1vZGFsLWJ1c3kiOnsiOmFmdGVyIjonY29udGVudDoiICI7cG9zaXRpb246YWJzb2x1dGU7IHRvcDotMXB4OyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjU7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNik7IGJhY2tncm91bmQtaW1hZ2U6IHVybChpL2xvYWRlci1iYXIyLmdpZik7IGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgLTdweDsnLCIubm9zZS10b3A6YmVmb3JlIjoiei1pbmRleDo2OyJ9LCIgLnByZSI6IndoaXRlLXNwYWNlOnByZS13cmFwOyB3b3JkLXdyYXA6YnJlYWstd29yZDsiLCIgI2wtYm9hcmQiOnsiICI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXgud2lkdGgoKSxjPXgucGFyZW50KCkuaGFzQ2xhc3MoIm15LW1vZGFsLWZvcm0iKSxkPSh3aW5kb3cuaW5uZXJIZWlnaHQvKGM/MS4zOjEpfDApKyJweCIsZT0hKGI+PTE0MjAmJiJ0b3AiIT1hLkNmZy50YWJCYXIpLGY9ZT8wOjEyNitiLzEwfDA7cmV0dXJueyIiOmU/WyJ3aWR0aDoxMDAlOyBwYWRkaW5nOjA7IG92ZXJmbG93OmhpZGRlbjsiLGEuX2NvbXBpbGVkPyJoZWlnaHQ6Y2FsYygiK2QrIiAtIDMycHgpOyI6ImhlaWdodDpjYWxjKCIrZCsiIC0gNzBweCk7Il0uam9pbigiIik6WyJkaXNwbGF5OmlubGluZS1ibG9jazsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDpjYWxjKDEwMCUgLSB7MX1weCk7Ii5hc3NpZ24oZiksYS5fY29tcGlsZWQ/ImhlaWdodDoiK2QrIjsiOiJoZWlnaHQ6Y2FsYygiK2QrIiAtIDM4cHgpOyJdLmpvaW4oIiIpLCIgI2wtcGl2b3QtcmIiOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IHJpZ2h0OjA7IHdpZHRoOjFweDsgaGVpZ2h0OjFweDsiLCIgLncxMjgwcGx1cyI6Yi1mPDEyODA/ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IjoiIiwiIC53MTIwMHBsdXMiOmItZjwxMjAwPyJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyI6IiJ9fX0sIiAjbC1hcHBzIjp7IiI6Im1pbi13aWR0aDoxMDIwcHg7IG1hcmdpbjowIGF1dG87IG1heC13aWR0aDoxMDAlOyIsIiAubC1hcHAiOnsiIjoib3BhY2l0eToxOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7IHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsiLCIgIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9ISh4LndpZHRoKCk+PTE0MjAmJiJ0b3AiIT1hLkNmZy50YWJCYXIpLGM9YS5fY29tcGlsZWQsZD14LnBhcmVudCgpLmhhc0NsYXNzKCJteS1tb2RhbC1mb3JtIiksZT0od2luZG93LmlubmVySGVpZ2h0LyhkPzEuMzoxKXwwKS0oYz8wOjMyKSsoYj8wOjMyKSxmPSJoZWlnaHQ6Y2FsYygiKyhlKyJweCIpKyIgLSAiO3JldHVybiBhLlBhbmVsSGVpZ2h0PWUtODQsYS5pc0Jhcj1iLHsiIC5hcHBoZWlnaHQiOmYrIjMycHgpOyIsIiAucGFuZWxoZWlnaHQiOmYrIjg0cHgpOyIsIiAucGFuZWxoZWlnaHQtNCI6ZisiODhweCk7IiwiIC5wYW5lbGhlaWdodC04IjpmKyI5MnB4KTsiLCIgLnBhbmVsaGVpZ2h0LTE2IjpmKyIxMDBweCk7IiwiIC5wYW5lbGhlaWdodC0zMiI6ZisiMTE2cHgpOyIsIiAucGFuZWxoZWlnaHQtNDgiOmYrIjEzMnB4KTsiLCIgLnBhbmVsaGVpZ2h0LTYzIjpmKyIxNDdweCk7IiwiIC5wYW5lbGhlaWdodC02NCI6ZisiMTQ4cHgpOyJ9fSwiIC5hcHAtaGVhZCI6eyIiOiJkaXNwbGF5OmJsb2NrO2hlaWdodDo1MnB4O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlOyIsIiBidXR0b24sIC5idXR0b24sIC50YWcuYnRuIjoiaGVpZ2h0OjJlbTtwYWRkaW5nLXRvcDowLjJlbTtwYWRkaW5nLWJvdHRvbTo0cHg7bGluZS1oZWlnaHQ6MTlweDt0ZXh0LWFsaWduOmNlbnRlcjsifSwiLmFwcC1idXN5Ijoib3BhY2l0eTowLjU7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47IiwiIC5mZWF0aGVyIjp7IjpiZWZvcmUiOnsiIjonY29udGVudDoiICI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOmNhbGMoMTAwJSAtIDEycHgpO2hlaWdodDoxNXB4OyBwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMjU1LDI1NSwyNTUsMSksIHJnYmEoMjU1LDI1NSwyNTUsMCkpO3otaW5kZXg6MTk5MDsnfSwiOmFmdGVyIjp7IiI6J2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2xlZnQ6MDt3aWR0aDpjYWxjKDEwMCUgLSAxMnB4KTtoZWlnaHQ6MTVweDtiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDI1NSwyNTUsMjU1LDEpLCByZ2JhKDI1NSwyNTUsMjU1LDApKTt6LWluZGV4OjE5OTA7J319fSwiIC5hcHAtYnVzeTphZnRlciI6J2NvbnRlbnQ6IiAiOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMCk7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDorMTk5Mzsgd2lkdGg6MTAwJTsgaGVpZ2h0OjExMCU7IHRvcDowOyBsZWZ0OjA7J30sIiAuY29sLWpzb24iOnsiIjoicGFkZGluZzowIDAgMCA2cHghaW1wb3J0YW50O3dvcmQtd3JhcDpub3JtYWw7IiwiIC5Db2RlTWlycm9yIjoiYmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZTo5NSUhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuM2VtIWltcG9ydGFudDsiLCI+ZGl2LmNvbC10cmltIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsiLCI+ZGl2LmNvbC1lZCI6ImRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyIsIj5kaXYuY29sLWVkLWNsb3NlIjp7IiI6ImRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpyaWdodDsgcG9zaXRpb246YWJzb2x1dGU7dG9wOjA7IHJpZ2h0OjVweDsgd2lkdGg6OTUlIWltcG9ydGFudDsgaGVpZ2h0OjIxcHg7IHotaW5kZXg6NTt0cmFuc2l0aW9uOmNvbG9yIDAuNXM7IGNvbG9yOnJnYmEoNDEsMTA5LDE2NiwwLjc1KTsiLCI6aG92ZXIiOiJjb2xvcjojMTJhNWRjOyJ9fSwiIC5qdmFsLXRyaW0iOiJkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjJweDtwYWRkaW5nOjFweCAycHg7bGluZS1oZWlnaHQ6MS4xZW07Y29sb3I6cmdiYSgyMTMsIDQ4LCA4OSwgMC42Myk7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDQzLCAxMDcsIDE5MiwgMC4wNyk7IiwiIC5qdmFsLXNob3J0IjoiY29sb3I6cmdiYSg4OCwxMDEsMTIzLDAuNjMpOyIsIiAuanZhbC1rZXkiOiJtYXJnaW4tbGVmdDoycHg7IGNvbG9yOiM0ZDVhNmE7IiwiIC5qdmFsLWJyYWNrZXQrLmp2YWwta2V5IjoibWFyZ2luLWxlZnQ6MHB4OyIsIiAuanZhbC1icmFja2V0IjoiY29sb3I6ICM4MTk1YzU7IiwiIC5qdmFsLXNpbXBsZSI6ImNvbG9yOnJnYmEoNTIsIDE0MywgMjcsIDAuNzgpOyIsIiAuanZhbC11bmRlZmluZWQiOiJjb2xvcjpyZ2JhKDExNywxMjgsMTM4LDAuNDEpOyIsIiAuanZhbC1zdHJpbmciOiJjb2xvcjojM2I1ZTg1OyIsIiAuanZhbC1udW1iZXIiOiJjb2xvcjojNWI5ODA4IiwiIC5Db2RlTWlycm9yLWxpbmVudW1iZXIiOiJ3aGl0ZS1zcGFjZTpub3dyYXA7IiwiIC5Db2RlTWlycm9yLWd1dHRlcnMiOiJiYWNrZ3JvdW5kOndoaXRlO3hib3JkZXItcmlnaHQ6bm9uZTsiLCIgLkNvZGVNaXJyb3IgLmNtLXByb3BlcnR5IjoiY29sb3I6IzQzNGU1ZDsiLCIgLkNvZGVNaXJyb3IgLmNtLXZhcmlhYmxlIjoiY29sb3I6IzMzYmZhZDsiLCIgLkNvZGVNaXJyb3IgLmNtLWtleXdvcmQiOiJjb2xvcjojOTAyNTllOyIsIiAuQ29kZU1pcnJvciAuY20tbWF0Y2hoaWdobGlnaHQiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDkyLDI1NSwyLDAuMzcpOyBib3gtc2hhZG93Om5vbmU7IGJvcmRlci1yYWRpdXM6IDFweDsiLCIgLkNvZGVNaXJyb3IgLmNtLWZvdW5kIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjMyLDEyMSwwLjc1KSFpbXBvcnRhbnQ7b3V0bGluZTogMXB4IHNvbGlkIHJnYmEoMjU1LDIzMiwxMjEsMC43NSkhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MXB4OyIsIiAgICI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXgud2lkdGgoKSxjPSJib29sZWFuIj09dHlwZW9mIGEuaXNGRj9hLmlzRkY6YS5pc0ZGPS9GaXJlZm94Ly50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fHwiIiksZD1hLkNmZyxlPWQudGFiQmFyLGY9IShiPj0xNDIwJiYidG9wIiE9ZSksZz1kLnRoZW1lLGg9KCJkYXJrIj09Z3x8ImF1dG8iPT1nJiZ3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzKSYmYS5fY29tcGlsZWQsaT14LnBhcmVudCgpLmhhc0NsYXNzKCJteS1tb2RhbC1mb3JtIiksaj0od2luZG93LmlubmVySGVpZ2h0LyhpPzEuMzoxKXwwKS0oYS5fY29tcGlsZWQ/MDozMiksaz17aGVpZ2h0OmEuX2NvbXBpbGVkPyIxMDB2aCI6aisicHgiLGh0YWI6Zj8zMjpqPDY1MD8zNDpqPDcwMD8zNjpqPDgwMD8zODo0MCx3dGFiOmY/MDoxMjYrYi8xMHwwfSxsPSguNTUqKGItay53dGFiKXwwKS00MC0yLTMzODtyZXR1cm57IiAjZGItbGlzdCAudmlldy1yb3ciOmMmJiFhLmlzTWFjPyJ3aWR0aDp7MX1weDsiLmFzc2lnbihsKzMzOCk6bnVsbCwiICNkYi1wYW5lbCI6eyIgI2RiLWxpc3QgLnZpZXctcm93Ijp7fX0sIiAjbC1oZWFkZXIiOnsiIjpmP1sid2lkdGg6MTAwJTtoZWlnaHQ6MzJweDtvdmVyZmxvdzpoaWRkZW47IiwiYmFja2dyb3VuZC1zaXplOiAycHggMzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsiLGg/ImJhY2tncm91bmQtY29sb3I6ICNmM2Y1Zjg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2RkNWUxOyI6ImJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwYzE5MzIsICM0YjYyN2MpOyJdLmpvaW4oIiIpOlsiYmFja2dyb3VuZC1jb2xvcjogIzFlMzU1Mzsgd2lkdGg6e3d0YWJ9cHg7IGhlaWdodDp7aGVpZ2h0fTsiLCJvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7Il0uam9pbigiIikuYXNzaWduKGspLCIgI2wtdGFicyAiOiJtYXgtd2lkdGg6MTAwJTsiLCIgLm5vYmFyIjpmPyJkaXNwbGF5Om5vbmU7IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsiLCIgI2wtdGFicyI6eyIiOmY/Im1pbi13aWR0aDoxMDIwcHg7IG1hcmdpbjowIGF1dG87Ijoid2lkdGg6MTAwJTsgaGVpZ2h0OntoZWlnaHR9OyIuYXNzaWduKGspLCIgLnVpLXNvcnRhYmxlLWhlbHBlciI6Zj8iYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMjAsMTUyLDAuOCk7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWE2YjA7Ijp7IjpiZWZvcmUiOlsnY29udGVudDoiICI7ZGlzcGxheTpibG9jazsgd2lkdGg6ezJ9cHg7IGhlaWdodDp7MX1weDsnLmFzc2lnbihrLmh0YWIsay53dGFiLTEwKSwiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDIsMjQ2LDI1NSwwLjIpOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjBweDsgbGVmdDo1cHg7IiwiYm9yZGVyLXJhZGl1czogM3B4OyJdLmpvaW4oIiIpfSwiIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcisubC10YWIiOmY/ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjOWVhNmIwOyI6IiIsIiAudGFiLWJ1c3k6YWZ0ZXIiOmY/Wydjb250ZW50OiIgIjsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGkvbG9hZGVyLWJhcjIuZ2lmKTsgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IC0ycHg7JywicG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoycHg7IGJvdHRvbTowOyBsZWZ0OjA7IHotaW5kZXg6KzE5ODA7IG92ZXJmbG93OmhpZGRlbjsiXS5qb2luKCIiKTpbJ2NvbnRlbnQ6IiAiOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaS9sb2FkZXItYmFyMi5naWYpOyBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb24teTogLTFweDsnLCJwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ezF9cHg7IGhlaWdodDoycHg7IHRvcDoxcHg7IGxlZnQ6MnB4OyB6LWluZGV4OisxOTgwOyBvdmVyZmxvdzpoaWRkZW47Ii5hc3NpZ24oay5odGFiLTIpLCJ0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHRyYW5zZm9ybS1vcmlnaW46IDAgMDsgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7Il0uam9pbigiIil9LCIgI2wtcm9vdHRhYiI6eyIiOmY/IndpZHRoOiA3MnB4OyI6IndpZHRoOiB7d3RhYn1weDsgaGVpZ2h0OjU4cHg7bGluZS1oZWlnaHQ6MzdweDtvdmVyZmxvdzpoaWRkZW47Ii5hc3NpZ24oayksIiAjbC1yb290IjoiZGlzcGxheTpibG9jazsiKyhmPyJ3aWR0aDogNzJweDsgcGFkZGluZzozcHggMTBweCAwIDIwcHg7ICI6IndpZHRoOiB7d3RhYn1weDsgcGFkZGluZzoxM3B4IDAgMCAxMHB4OyBoZWlnaHQ6NThweDsiLmFzc2lnbihrKSksIi5sLXRhYiI6Zj8iIjoiYm9yZGVyLXRvcDpub25lOyIsIi5sLXRhYjpiZWZvcmUiOmY/IiI6ImRpc3BsYXk6bm9uZTsifSwiICNsLWFwcHRhYnMiOmY/IndpZHRoOmNhbGMoMTAwJSAtIDcycHggLSA5NnB4KTsgd2hpdGUtc3BhY2U6bm93cmFwOyBvdmVyZmxvdzpoaWRkZW47Ijoid2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgIzRmNjQ4MTsgcGFkZGluZy10b3A6NXB4OyBoZWlnaHQ6ezF9cHg7Ii5hc3NpZ24oai05NCksIiAubC10YWIiOnsiIjpmP1sibGluZS1oZWlnaHQ6MjlweDsgaGVpZ2h0OjMycHg7IG1pbi13aWR0aDo3MnB4OyBtYXgtd2lkdGg6MzAwcHg7IHRyYW5zaXRpb246d2lkdGggMC4yczsiLCJib3JkZXItcmlnaHQ6MXB4IHNvbGlkICIrKGg/IiNjZGQ1ZTE7IjoiIzllYTZiMDsiKSwiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkIHRyYW5zcGFyZW50OyIsImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG92ZXJmbG93OmhpZGRlbiA7Il0uam9pbigiIik6WyJsaW5lLWhlaWdodDp7Mn1weDsgaGVpZ2h0OnsxfXB4OyIuYXNzaWduKGsuaHRhYixrLmh0YWItMyksImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7Il0uam9pbigiIiksIiAiOmY/IndpZHRoOmNhbGMoMTAwJSAvICIrKGEuVGFicy5sZW5ndGh8fDEpKyIpOyI6IndpZHRoOjEwMCU7IiwiICNidG4tdGFiY2xvc2UiOiJjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpub25lOyIrKGY/ImNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7IjoiY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwKTsiKSwiICNsLXRhYnN0YXRlIjp7IiI6ImNvbG9yOnJnYmEoMTMxLDE5OCwyNTUsMC42Mik7IiwiLmhpZGUrI2J0bi10YWJjbG9zZSI6ImRpc3BsYXk6YmxvY2s7In0sIiAubC10YWJtYXJrIjp7IiI6WyJ3aWR0aDoxNnB4O3Bvc2l0aW9uOmFic29sdXRlO2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7IiwidHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCBjb2xvciAwLjNzOyIsZj8icmlnaHQ6MDsgdG9wOjA7IjoicmlnaHQ6NnB4OyB0b3A6ezF9cHg7Ii5hc3NpZ24oKGsuaHRhYi0yMykvMildLmpvaW4oIiIpfSwiOmhvdmVyICI6eyIgI2wtdGFic3RhdGUiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIiAjYnRuLXRhYmNsb3NlIjoiZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC42KTsifSwiICNidG4tdGFiY2xvc2U6aG92ZXIiOiJjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuOSk7IiwiIGEiOiJ0ZXh0LWRlY29yYXRpb246bm9uZTt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7IGNvbG9yOndoaXRlOyBvcGFjaXR5OjAuOCFpbXBvcnRhbnQ7IiwiIGEuc3lzdGVtIjoiY29sb3I6I2Q4ZmZhNDsiLCI6aG92ZXIgYSI6Im9wYWNpdHk6MSFpbXBvcnRhbnQ7IiwiICNsLXRhYm5hbWUiOnsiIjoid2lkdGg6Y2FsYygxMDAlIC0gMTZweCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyIrKGY/InBhZGRpbmc6MCAwIDRweCA2cHg7IjoicGFkZGluZzowIDAgNHB4IDExcHg7IiksIi5zbWFsbGVyIC5sLXRhYi1uYW1lIjoiZm9udC1zaXplOjAuOTJlbTsiLCIgLmwtdGFiLWljbyI6Zj8iZGlzcGxheTpub25lIWltcG9ydGFudDsiOiJ3aWR0aDoyMnB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZy1yaWdodDo1cHg7IHRleHQtYWxpZ246IGNlbnRlcjsifSwiOmJlZm9yZSI6Zj8iIjp7IiI6Wydjb250ZW50OiIgIjtkaXNwbGF5OmJsb2NrOyB3aWR0aDp7MX1weDsgaGVpZ2h0OjFweDsnLmFzc2lnbihrLnd0YWItMjApLCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MiwyNDUsMjU1LDAuMSk7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MHB4OyBsZWZ0OjEwcHg7IiwiYm9yZGVyLXJhZGl1czogMHB4OyB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzLCBoZWlnaHQgMC4wNnMsIGJvcmRlci1yYWRpdXMgMC4xcywgYmFja2dyb3VuZC1jb2xvciAwLjJzLCBsZWZ0IDAuMXM7Il0uam9pbigiIil9LCIuYWN0aXZlIjp7IiBhIjoiY29sb3I6IzAyMGUxZSFpbXBvcnRhbnQ7b3BhY2l0eTowLjghaW1wb3J0YW50OyB4Zm9udC13ZWlnaHQ6Ym9sZGVyOyIsIjpob3ZlciBhIjoib3BhY2l0eTowLjk1IWltcG9ydGFudDsiLCIiOmY/aD8iYmFja2dyb3VuZC1jb2xvcjogI2NiZDVlNDsiOlsiYmFja2dyb3VuZC1zaXplOiAycHggMzJweDsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IiwiYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2EzYjVjZCwgI2QyZGVlZSk7Il0uam9pbigiIik6eyI6YmVmb3JlIjpbJ2NvbnRlbnQ6IiAiO2Rpc3BsYXk6YmxvY2s7IHdpZHRoOnsyfXB4OyBoZWlnaHQ6ezF9cHg7Jy5hc3NpZ24oay5odGFiLGsud3RhYi0xMCksImJhY2tncm91bmQtY29sb3I6ICNjOGQxZGUhaW1wb3J0YW50OyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjBweDsgbGVmdDo1cHg7IiwiYm9yZGVyLXJhZGl1czogM3B4OyJdLmpvaW4oIiIpfSwiICNsLXRhYnN0YXRlIjoiY29sb3I6cmdiYSgzNywxMzcsMjE1LDAuOCk7IiwiICNidG4tdGFiY2xvc2UiOmY/ImNvbG9yOnJnYmEoMCwxOCw0MCwwLjMpOyI6ImNvbG9yOnJnYmEoMCwxNyw0MCwwKTsiLCI6aG92ZXIgI2J0bi10YWJjbG9zZSI6ImNvbG9yOnJnYmEoMCwxOCw0MCwwLjYpOyIsIiAjYnRuLXRhYmNsb3NlOmhvdmVyIjoiY29sb3I6cmdiYSgwLDE4LDQwLDAuOCk7In19LCIgI2wtYXNpZGUiOnsiIjoicG9zaXRpb246YWJzb2x1dGU7IHsyfTowOyByaWdodDowOyB3aWR0aDp7MX1weDsiLmFzc2lnbihmPzk2Omsud3RhYixmPyJ0b3AiOiJib3R0b20iKSsoZj8iYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOWVhNmIwOyI6ImJvcmRlci10b3A6MXB4IHNvbGlkICM0ZjY0ODE7IikrIndoaXRlLXNwYWNlOm5vd3JhcDsgei1pbmRleDoyOyIsIiAuYXNpZGUtYnRuIjpbIndpZHRoOnsxfXB4OyBoZWlnaHQ6ezJ9cHg7IGN1cnNvcjpwb2ludGVyOyIuYXNzaWduKGY/MzI6ay53dGFiLzUsZj8zMjozNSksZj8iIjoicGFkZGluZzoxcHggMCAwIDA7IHRleHQtYWxpZ246Y2VudGVyOyIsZj8iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWE2YjA7IjoiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM0ZjY0ODE7IiwiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgb3ZlcmZsb3c6aGlkZGVuOyIsInRyYW5zaXRpb246IGNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zczsgY29sb3I6d2hpdGUhaW1wb3J0YW50OyIsIm9wYWNpdHk6MC43IWltcG9ydGFudDsiXS5qb2luKCIiKSwiIC5hc2lkZS1idG46aG92ZXIiOiJvcGFjaXR5OjEhaW1wb3J0YW50OyIsIiAjYnRuLWNsb3NlLWFsbC10YWJzIjp7IiI6Im9wYWNpdHk6MC42OyBjb2xvcjp3aGl0ZTsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOyB3aWR0aDpjYWxjKDEwMCUgLSAzICogezF9cHgpOyIuYXNzaWduKGsud3RhYi81KSwiOmhvdmVyIjoib3BhY2l0eToxOyJ9LCIgYSI6InRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjp3aGl0ZTsiLCIgYTpob3ZlciI6ImNvbG9yOndoaXRlOyJ9fX19fSxQaG86ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0sU2V0VGl0bGU6ZnVuY3Rpb24oeCl7dGhpcy5fY29tcGlsZWQmJiQoImhlYWQgdGl0bGUiKS50ZXh0KHgrIiIpfSxwMnU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHg/Yih4LDEpOngubWFwKGIpO2Z1bmN0aW9uIGIoeCxiKXt2YXIgYz1lbmNvZGVVUklDb21wb25lbnQ7aWYoYXx8MT09Ynx8Mj09Yil7aWYoL15fZGVzaWduXC8uKyQvLnRlc3QoeCkpcmV0dXJuIl9kZXNpZ24vIitjKHguZnJvbSg4KSk7aWYoL15fbG9jYWxcLy4rJC8udGVzdCh4KSlyZXR1cm4iX2xvY2FsLyIrYyh4LmZyb20oNykpfXJldHVybiBjKHgpfX0sajJoOmZ1bmN0aW9uKCl7fSxuaWNlU2Nyb2xsOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztyZXR1cm4hYi5zY3JvbGxGaXguYWx3YXlzRml4U2Nyb2xscyYmKGIuaU9TfHxiLmlzTWFjfHxiLmlzV2ViS2l0fHwiMCI9PWIuQ2ZnLnNjcm9sbFNwZWVkKT94LmNzcyh7Im92ZXJmbG93LXkiOmIuaXNXZWJLaXQ/Im92ZXJsYXkiOiJhdXRvIiwiLW1zLW92ZXJmbG93LXN0eWxlIjoiLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIiwiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciOiJ0b3VjaCIsIm92ZXJmbG93LXgiOiJoaWRkZW4ifSk6eC5uaWNlU2Nyb2xsKGF8fHtjdXJzb3Jjb2xvcjoiIzIzNCIsY3Vyc29yb3BhY2l0eW1pbjouMDcsY3Vyc29yb3BhY2l0eW1heDouNCx6aW5kZXg6M30pLHh9LHNlbGVjdDI6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD14LnNlbGVjdDIoYSk7cmV0dXJuIGMuaU9TJiYoIShhfHx7fSkubXVsdGlwbGUmJiEoYXx8e30pLnRhZ3N8fGIpJiYoZC5vbigic2VsZWN0Mi1vcGVuIixjLnNlbGVjdDJpT1NibHVyKSxkLm9uKCJzZWxlY3QyLWNsb3NlIixmdW5jdGlvbigpe3NldFRpbWVvdXQoYy5zZWxlY3QyaU9TYmx1ciw1MCl9KSksZH0sc2VsZWN0MmlPU2JsdXI6ZnVuY3Rpb24oKXskKCIuc2VsZWN0Mi1zZWFyY2ggaW5wdXQsIDpmb2N1cywgaW5wdXQiKS5wcm9wKCJmb2N1cyIsITEpLmJsdXIoKX0sdHJ1bmM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5sZW5ndGg+YSsxP3gudHJ1bmNhdGUoYSwibWlkZGxlIiwi4oCmIik6eH0sZGllOmZ1bmN0aW9uKHgpeyQod2luZG93KS5vZmYoIi5waG8iKSx4LmZpbmQoIiNsLWFwcHM+ZGl2IikuZWFjaChmdW5jdGlvbigpeyQodGhpcykubXkoInJlbW92ZSIpfSl9LHBpbmdTZXNzaW9uOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXgubGFzdFBpbmd8fDAsYj1EYXRlLm5vdygpLGM9KCt4LkNmZy5waW5nU2Vzc2lvbnx8MCkuY2xhbXAoMCwxZTMpOyFjfHwoYi1hKS82ZTQ8Y3x8KHgubGFzdFBpbmc9Yix4LlNlc3Npb24oKSl9LGNoZWNrU2Nyb2xsYmFyT3ZlcmxheTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9eC5odG1sKCk7eC5odG1sKFsnPGRpdiBjbGFzcz0idzEwMCBoMjAiIHN0eWxlPSJvcGFjaXR5OjAuMDE7IG92ZXJmbG93OmhpZGRlbjsgb3ZlcmZsb3cteTp7MX07Ij4nLCc8ZGl2IGlkPSJzY3JvbGxiYXItbWVhc3VyZSIgY2xhc3M9IncxMDBwIGg1MCI+PC9kaXY+JywiPC9kaXY+Il0uam9pbigiIikuYXNzaWduKGEuaXNXZWJLaXQ/Im92ZXJsYXkiOiJhdXRvIikpO3ZhciBjPU1hdGguZmxvb3IoMTAwLXguZmluZCgiI3Njcm9sbGJhci1tZWFzdXJlIikud2lkdGgoKSkuY2xhbXAoMCw1MCk7cmV0dXJuIHguaHRtbChiKSxhLnNjcm9sbEZpeC5zY3JvbGxXaWR0aD1jLGEuc2Nyb2xsRml4LmFsd2F5c0ZpeFNjcm9sbHM9ISEoYz40LjUpLGN9LGRiVHlwZTp7c3luY3N0YXRlOiIiLHN0YW1wOjAsY29tbWl0dGVkX3VwZGF0ZV9zZXE6LTEsY29tcGFjdF9ydW5uaW5nOiExLGRhdGFfc2l6ZToiIixkaXNrX3NpemU6MCxzaXplc2FmZToiIixzaXpldGlwOiIiLGRiX25hbWU6IiIsZGlza19mb3JtYXRfdmVyc2lvbjoiIixkb2NfY291bnQ6IiIsZG9jX2RlbF9jb3VudDoiIixpbnN0YW5jZV9zdGFydF90aW1lOiIiLHB1cmdlX3NlcToiIix1cGRhdGVfc2VxOiIiLHVwZGF0ZV9zZXFfc2FmZToiIixzZWN1cml0eTp7c3RhbXA6MCxzZXE6LTEsYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxwcm90ZWN0ZWQ6IiIsc3RhcjoiIixncm91cDoiIix0YXNrczp7c3RhbXA6MCxwaWRzOltdfSxzeW5jczp7c3RhbXA6MCxkb2NzOltdfX0sTGlic1VzZWQ6e2pRdWVyeToiaHR0cHM6Ly9qcXVlcnkuY29tLyIsIiQudWkiOiJodHRwczovL2pxdWVyeXVpLmNvbS8iLCIkLm15IjoiaHR0cDovL2pxdWVyeW15LmNvbS8iLCIkLnRhZ3MiOiIiLCIkLmxpc3QiOiIiLHNlbGVjdDI6Imh0dHBzOi8vc2VsZWN0Mi5naXRodWIuaW8vc2VsZWN0Mi8iLENvZGVNaXJyb3I6Imh0dHBzOi8vY29kZW1pcnJvci5uZXQvIixuaWNlU2Nyb2xsOiJodHRwczovL2dpdGh1Yi5jb20vaW51eWFrc2EvanF1ZXJ5Lm5pY2VzY3JvbGwiLEpDcm9wOiJodHRwczovL2dpdGh1Yi5jb20vdGFwbW9kby9KY3JvcCIsU3VnYXI6Imh0dHBzOi8vc3VnYXJqcy5jb20iLFE6Imh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcSIsaG90a2V5czoiaHR0cHM6Ly9naXRodWIuY29tL2pheXdjamxvdmUvaG90a2V5cyIsVVJMcG9seWZpbGw6Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL1VSTCIsIndlYi1zdHJlYW1zLXBvbHlmaWxsIjoiaHR0cHM6Ly9naXRodWIuY29tL01hdHRpYXNCdWVsZW5zL3dlYi1zdHJlYW1zLXBvbHlmaWxsIixTdHJlYW1TYXZlcjoiaHR0cHM6Ly9naXRodWIuY29tL2ppbW15d2FydGluZy9TdHJlYW1TYXZlci5qcyIsZmZsYXRlOiJodHRwczovL2dpdGh1Yi5jb20vMTAxYXJyb3d6L2ZmbGF0ZSIsanNvbmRpZmY6Imh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmUvanNvbmRpZmZwYXRjaCIsc3FsdG9tYW5nbzoiaHR0cHM6Ly9naXRodWIuY29tL2dseW5uYmlyZC9zcWx0b21hbmdvIiwiY3cubGliIjoiaHR0cHM6Ly9jbG91ZHdhbGwubWUvYXBpL2N3X2xpYiJ9LEZvbnRzVXNlZDp7Q291c2luZToiaHR0cHM6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250cy9jb3VzaW5lIiwiRm91bmRhdGlvbiBJY29ucyI6Imh0dHBzOi8venVyYi5jb20vcGxheWdyb3VuZC9mb3VuZGF0aW9uLWljb24tZm9udHMtMyJ9LEhUTUw6JzxkaXYgaWQ9ImJ0bi1jbG9zZS1hY3RpdmUtdGFiIiBjbGFzcz0iY3Agbm9iYXIgcGFiYyBmdzIwMCIgdGl0bGU9IkNsb3NlIHRhYiI+4pyVPC9kaXY+XG48ZGl2IGlkPSJsLWhlYWRlciI+XG5cdDxkaXYgaWQ9ImwtdGFicyI+XG5cdFx0PGRpdiBpZD0ibC1yb290dGFiIiBjbGFzcz0ibC10YWIiPlxuXHRcdFx0PGEgaWQ9Imwtcm9vdCIgaHJlZj0iIyIgY2xhc3M9IiI+UGhvdG9uPC9hPlxuXHRcdDwvZGl2PlxuXHRcdFxuXHRcdDxkaXYgaWQ9ImwtYXBwdGFicyIgY2xhc3M9ImRpYiB2YXQgb2giPjwvZGl2PlxuXHRcdFxuXHRcdDxkaXYgaWQ9ImwtYXNpZGUiPlxuICAgICAgPGRpdiBpZD0iYnRuLWNsb3NlLWFsbC10YWJzIiBjbGFzcz0ibm9iYXIgZncyMDAgZnM5MCB0YWMgbGgyNDAgY3AiPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD0iYnRuLWFzaWRlLWF1dGgiIGNsYXNzPSJhc2lkZS1idG4iPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD0iYnRuLWFzaWRlLWNvbmZpZyIgY2xhc3M9ImFzaWRlLWJ0biI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPSJidG4tYXNpZGUtc2hhcmUiIGNsYXNzPSJhc2lkZS1idG4iPjwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD0ibC1ib2FyZCI+XG5cdDxkaXYgaWQ9ImwtYXBwcyI+PC9kaXY+XG4gIDxkaXYgaWQ9ImwtcGl2b3QtcmIiPjwvZGl2PlxuPC9kaXY+JyxTVkc6e2xvZ286JzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzEiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAsIDAsIDMxLCAxNiI+XG4gIDxnIGlkPSJQaG90b25Mb2dvIj5cbiAgICA8cGF0aCBkPSJNMTUuNSwwIEMyMC4zLDAuMCAyNC4yLDAuNiAyNy44LDEuOSBMMjguMCwxLjkgQzI5LjYsMi41IDI5LjIsMi40IDI5LjQsMi40IEwzMSwzLjEgTDMxLDE2IEwwLDE2IEwwLDMuMSBDMS43LDIuNCAxLjMsMi41IDIuNCwyLjEgTDIuOSwxLjkgQzYuNywwLjYgMTAuNiwwLjAgMTUuMSwwLjAgeiIgXG4gICAgICAgICAgZmlsbD0iICNGRkZGRkYiIGZpbGwtb3BhY2l0eT0iMSIvPlxuICAgIDxwYXRoIGQ9Ik0zMCwxMiBMMzAsMTUgTDEsMTUgTDEsMTIgTDMwLDEyIHoiIFxuICAgICAgICAgIGZpbGw9IiAjZDcxZDJmIi8+XG4gICAgPHBhdGggZD0iTTMuMCwzLjAgQzMuMSwzLjcgMy4yLDQuMyAzLjIsNC42IEMzLjQsNS43IDMuOSw2LjYgNC43LDcuMiBDNS40LDcuNyA2LjIsOC4wIDcuMCw4LjAgQzguMCw3LjkgMTEuNiw4LjAgMTMuMSw4LjAgQzE0LjAsOC4wIDE0LjYsOC42IDE1LDkuNSBMMTUsMTEgTDEsMTEgTDEsMy44IEMyLjYsMy4xIDEuOSwzLjQgMy4wLDMuMCB6IiBcbiAgICAgICAgICBmaWxsPSIgI0ZBNDg0OCIvPlxuICAgIDxwYXRoIGQ9Ik0xNSwxIEwxNSw3LjcgQzE0LjYsNy4xIDE0LjAsNi45IDEzLjQsNi44IEM5LjUsNi44IDguNiw2LjggNy42LDYuOCBDNy40LDYuOCA3LjMsNi44IDcuMyw2LjggQzUuOCw2LjggNC40LDUuNyA0LjEsNC4wIEw0LDIuOCBDNy41LDEuNSAxMS4zLDEuMCAxNSwxIHoiIFxuICAgICAgICAgIGZpbGw9IiAjRkY2NzY3Ii8+XG4gICAgPHBhdGggZD0iTTI3LjksMy4wIEMyNy44LDMuNyAyNy43LDQuMyAyNy43LDQuNiBDMjcuNSw1LjcgMjcuMCw2LjYgMjYuMiw3LjIgQzI1LjUsNy43IDI0LjcsOC4wIDIzLjksOC4wIEMyMi45LDcuOSAxOS4zLDguMCAxNy44LDguMCBDMTYuOSw4LjAgMTYuMyw4LjYgMTYsOS41IEwxNiwxMSBMMzAsMTEgTDMwLDMuOCBDMjguMywzLjEgMjkuMCwzLjQgMjcuOSwzLjAgeiIgXG4gICAgICAgICAgZmlsbD0iICNGQTQ4NDgiLz5cbiAgICA8cGF0aCBkPSJNMTYsMSBMMTYsNy43IEMxNi4zLDcuMSAxNi45LDYuOSAxNy41LDYuOCBDMjEuNCw2LjggMjIuMyw2LjggMjMuMyw2LjggQzIzLjUsNi44IDIzLjYsNi44IDIzLjYsNi44IEMyNS4xLDYuOCAyNi41LDUuNyAyNi44LDQuMCBMMjcsMi44IEMyMy40LDEuNSAxOS42LDEuMCAxNiwxIHoiIFxuICAgICAgICAgIGZpbGw9IiAjRkY2NzY3Ii8+XG4gIDwvZz5cbjwvc3ZnPicsdXNlcjonPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCwgMCwgMzIsIDMyIj5cblx0PGcgaWQ9ImJ0bi11c2VyLXN2ZyI+PGc+XG4gICAgPHBhdGggaWQ9InN2Zy1hdXRoIiBkPSJNMjYuMjUsMjAuNjUgTDIzLjU1LDIzLjM1IEwyMS43NSwyMS41NSBNMjQsMTcuNSBDMjEuNTEsMTcuNSAxOS41LDE5LjUxIDE5LjUsMjIgQzE5LjUsMjQuNDggMjEuNTEsMjYuNSAyNCwyNi41IEMyNi40OCwyNi41IDI4LjUsMjQuNDggMjguNSwyMiBDMjguNSwxOS41MSAyNi40OCwxNy41IDI0LDE3LjUgeiIgZmlsbC1vcGFjaXR5PSIwIiBcbiAgICAgIHN0cm9rZT0iIzliZDA4OSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgICA8cGF0aCBkPSJNMTguOTksMTguNDQgTDE2LDE3LjM2IEwxNiwxNS4zMiBNMTcsMjIuNSBMNi41LDIyLjUgTDYuNSwyMS4wMSBDNi41LDIwLjAxIDcuMTEsMTkuMTEgOC4wNSwxOC43NyBMMTIsMTcuMzYgTDEyLDE1LjMyIE0xNy45NCwxMS4yMyBDMTcuOTQsOC42MiAxNi4xOCw2LjUgMTQsNi41IEMxMS44MSw2LjUgMTAuMDUsOC42MiAxMC4wNSwxMS4yMyBDMTAuMDUsMTMuODUgMTEuODEsMTUuOTcgMTQsMTUuOTcgQzE2LjE3LDE1Ljk3IDE3Ljk0LDEzLjg1IDE3Ljk0LDExLjIzIHogTTEwLjA5LDEwLjQ3IEMxMC41NywxMC43MiAxMS4wNSwxMC44NCAxMS42MiwxMC44NCBDMTIuNzYsMTAuODQgMTQuMTQsMTAuMTcgMTQuNTksOS4zMSBDMTUuMzMsMTAuNjEgMTYuMTksMTEuMTAgMTcuNTQsMTAuODQgQzE3LjY3LDEwLjgxIDE3Ljc4LDEwLjgyIDE3LjkxLDEwLjgxIiBmaWxsLW9wYWNpdHk9IjAiIFxuICAgICAgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+XG4gIDwvZz48L2c+XG48L3N2Zz4nLGxvZ2luOic8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwLCAwLCAzMiwgMzIiPlxuICA8ZyBpZD0ibG9nb19sb2dpbiI+XG4gICAgPGc+XG4gICAgICA8cGF0aCBkPSJNMTYuNSwxOS41IEw0LjUsMTkuNSBMNC41LDEwLjUgTDI3LjUsMTAuNSBMMjcuNSwxNi41MiBNOC41LDE3IEw4LjUsMTMgTTYuODIsMTYuMDkgTDEwLjE3LDEzLjkwIE02LjgzLDEzLjg5IEwxMC4xNiwxNi4xMSBNMTQuNSwxNyBMMTQuNSwxMyBNMTIuODIsMTYuMDkgTDE2LjE3LDEzLjkwIE0xMi44MywxMy44OSBMMTYuMTYsMTYuMTEiIGZpbGwtb3BhY2l0eT0iMCIgXG4gICAgICBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgICAgIDxwYXRoIGlkPSJzdmctdW5hdXRoIiBkPSJNMTguNSwxOS44MyBMMjcuNSwxOS44MyBMMjcuNSwyNi41MCBMMTguNSwyNi41MCB6IE0yMi45NywyMi41NyBMMjIuOTcsMjQuMjQgTTI1LjY3LDE5LjgzIEwyNS42NywxOS4wMCBDMjUuNjcsMTcuNjIgMjQuNDYsMTYuNTAgMjIuOTcsMTYuNTAgQzIxLjQ4LDE2LjUwIDIwLjI3LDE3LjYyIDIwLjI3LDE5LjAwIEwyMC4yNywxOS44MyBNMjMuNDIsMjIuMTUgQzIzLjQyLDIxLjkyIDIzLjIyLDIxLjc0IDIyLjk3LDIxLjc0IEMyMi43MiwyMS43NCAyMi41MiwyMS45MiAyMi41MiwyMi4xNSBDMjIuNTIsMjIuMzggMjIuNzIsMjIuNTcgMjIuOTcsMjIuNTcgQzIzLjIyLDIyLjU3IDIzLjQyLDIyLjM4IDIzLjQyLDIyLjE1IHoiIGZpbGwtb3BhY2l0eT0iMCIgXG4gICAgICBzdHJva2U9IiNmZjYwNjQiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+XG4gICAgPC9nPlxuICA8L2c+XG48L3N2Zz4nLGNvbmZpZzonPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCwgMCwgMzIsIDMyIj5cbiAgPGcgaWQ9ImxvZ29fY2ZnIj5cbiAgICA8cGF0aCBkPSJNMTYuNDgsMTguNSBMMTYuNDgsMTEuNSBNMjIuNTEsMTYuNSBMMjIuNTEsMTguNSBNMTAuNDgsNy41IEwxMC40OCwxMi41IE0xMC40OCwxNC41IEwxMC40OCwxOC41IE0yMi41MSw3LjUgTDIyLjUxLDE0LjUgTTE2LjQ4LDcuNSBMMTYuNDgsOS41IE0yMC41MSwxNi41IEwyNC41MSwxNi41IEwyNC41MSwxNC41IEwyMC41MSwxNC41IHogTTE0LjQ4LDExLjUgTDE4LjQ4LDExLjUgTDE4LjQ4LDkuNSBMMTQuNDgsOS41IHogTTguNDgsMTQuNSBMMTIuNDgsMTQuNSBMMTIuNDgsMTIuNSBMOC40OCwxMi41IHogTTIyLjUyLDIxLjUgQzIxLjY5LDIxLjUgMjEuMDIsMjIuMTcgMjEuMDIsMjMgQzIxLjAyLDIzLjgyIDIxLjY5LDI0LjUgMjIuNTIsMjQuNSBDMjMuMzUsMjQuNSAyNC4wMiwyMy44MiAyNC4wMiwyMyBDMjQuMDIsMjIuMTcgMjMuMzUsMjEuNSAyMi41MiwyMS41IHogTTE2LjQ4LDIxLjUgQzE1LjY1LDIxLjUgMTQuOTgsMjIuMTcgMTQuOTgsMjMgQzE0Ljk4LDIzLjgyIDE1LjY1LDI0LjUgMTYuNDgsMjQuNSBDMTcuMzEsMjQuNSAxNy45OCwyMy44MiAxNy45OCwyMyBDMTcuOTgsMjIuMTcgMTcuMzEsMjEuNSAxNi40OCwyMS41IHogTTEwLjQ4LDIxLjUgQzkuNjUsMjEuNSA4Ljk4LDIyLjE3IDguOTgsMjMgQzguOTgsMjMuODIgOS42NSwyNC41IDEwLjQ4LDI0LjUgQzExLjMxLDI0LjUgMTEuOTgsMjMuODIgMTEuOTgsMjMgQzExLjk4LDIyLjE3IDExLjMxLDIxLjUgMTAuNDgsMjEuNSB6IiBmaWxsLW9wYWNpdHk9IjAiIFxuICAgIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz4nLHNoYXJlOic8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIxLCAwLCAzMywgMzIiPlxuICA8ZyBpZD0ibG9nb19zZXR0aW5ncyI+XG4gICAgPHBhdGggZD0iTTIzLjU4OSwxNi44NDcgQzI1LjQ2NywxNC45NjggMjUuODMsMTIuMTQyIDI0LjY4MSw5Ljg5OSBMMjEuNjQxLDEyLjc5OSBMMTkuMjAxLDEyLjc5OSBMMTkuMjAxLDEwLjUwMyBMMjIuMTYsNy4zMSBDMTkuOTE4LDYuMTYzIDE3LjA2Miw2LjUyNiAxNS4xODQsOC40MDMgQzEzLjMwNywxMC4yOCAxMi45MjUsMTMuMDk3IDE0LjA3MywxNS4zNDEgTDYuODg0LDIyLjUyMiBDNi4xNjcsMjMuMjM5IDYuMTYxLDI0LjQwMSA2Ljg3OSwyNS4xMTkgQzcuNTk3LDI1LjgzNyA4Ljc1NywyNS44MzcgOS40NzQsMjUuMTE5IEwxNi42NTMsMTcuOTM5IEMxOC44OTYsMTkuMDg3IDIxLjcxMiwxOC43MjMgMjMuNTg5LDE2Ljg0NyB6IE0yMy4zMzQsMTcuMjE5IEwxOS4yMDEsMTIuNzk5IE0xNi45MDUsMTIuNzk5IEwxNS41MjcsMTQuMTc2IE0xOC4wNTMsMTMuOTQ3IEwxNi42NzYsMTUuMzI0IE0xOS4yMDEsMTUuMDk1IEwxNy44MjQsMTYuNDcyIiBcbiAgICAgICAgICBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPlxuPC9zdmc+J30saG90a2V5czp7ImN0cmwrcyxjbWQrcyI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLm15LmZpbmQoIiNsLWFwcHM+LmwtYXBwOm5vdCguaGlkZSkiKTtpZigheC5sZW5ndGgpcmV0dXJuITE7dmFyIGE9eC5teSgibWFuaWZlc3QiKTtyZXR1cm4hIWEuY21kU2F2ZSYmKGEuY21kU2F2ZSgpLCExKX0sImN0cmwreixjbWQreiI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLm15LmZpbmQoIiNsLWFwcHM+LmwtYXBwOm5vdCguaGlkZSkiKTtpZigheC5sZW5ndGgpcmV0dXJuITE7dmFyIGE9eC5teSgibWFuaWZlc3QiKTtyZXR1cm4hIWEuY21kVW5kbyYmKGEuY21kVW5kbygpLCExKX0sImN0cmwrdyxhbHQrdyI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcztyZXR1cm4geC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxhLm15LmZpbmQoIiNsLWFwcHRhYnMgLmwtdGFiLmFjdGl2ZSAjYnRuLXRhYmNsb3NlIikudHJpZ2dlcigiY2xpY2subXkiKSwhMX19LFU6e3RhZ0Vtb2ppOmZ1bmN0aW9uKHgpe3ZhciBhPW5ldyBSZWdFeHAoIlxccHtSSX1cXHB7Ukl9fFxccHtFbW9qaX0oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pPyhcXHV7MjAwRH1cXHB7RW1vaml9KFxccHtFTW9kfSt8XFx1e0ZFMEZ9XFx1ezIwRTN9P3xbXFx1e0UwMDIwfS1cXHV7RTAwN0V9XStcXHV7RTAwN0Z9KT8pK3xcXHB7RVByZXN9KFxccHtFTW9kfSt8XFx1e0ZFMEZ9XFx1ezIwRTN9P3xbXFx1e0UwMDIwfS1cXHV7RTAwN0V9XStcXHV7RTAwN0Z9KT98XFxwe0Vtb2ppfShcXHB7RU1vZH0rfFxcdXtGRTBGfVxcdXsyMEUzfT98W1xcdXtFMDAyMH0tXFx1e0UwMDdFfV0rXFx1e0UwMDdGfSkiLCJndSIpO3JldHVybiB4LnJlcGxhY2UoYSxmdW5jdGlvbih4KXtyZXR1cm4iPGppPiIreCsiPC9qaT4ifSl9LG5vb3A6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9fSxGOntNZXRyaWM6ZnVuY3Rpb24oeCxhKXtpZigiIj09eClyZXR1cm4geDthPWF8fDY7dmFyIGI9K3h8fDA7aWYoIWIpcmV0dXJuIDA7dmFyIGM9K2IudG9FeHBvbmVudGlhbCgpLnNwbGl0KCJlIilbMV07aWYoYjwrKCIxZSIrYSkpcmV0dXJuIGIrIiI7dmFyIGQ9Yz43PzM6MixlPWMmJmMlMyE9Mj9jJTM9PTA/MjoxOjA7cmV0dXJuIGIubWV0cmljKGUsZCl9LEJ5dGVzOmZ1bmN0aW9uKHgpe2lmKCIiPT14KXJldHVybiB4O3ZhciBhPSt4fHwwO2lmKCFhKXJldHVybiIiO3ZhciBiPSthLnRvRXhwb25lbnRpYWwoKS5zcGxpdCgiZSIpWzFdO3JldHVybiBhLmJ5dGVzKGIlMz09MCYmYj8xOjApfSxQb2tlQnVja2V0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlJlcShbeF0pfSxTZXRUaGVtZTpmdW5jdGlvbih4KXtpZih0aGlzLl9jb21waWxlZClyZXR1cm4iYXV0byI9PXgmJndpbmRvdy5tYXRjaE1lZGlhJiZ3aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpLm1hdGNoZXM/KGEoKSwkKCJib2R5IikuYWRkQ2xhc3MoInRoZW1lLWRhcmsiKSk6eD8oYSgpLCQoImJvZHkiKS5hZGRDbGFzcygidGhlbWUtIit4KSk6YSgpLCQoImJvZHkiKS50cmlnZ2VyKCJyZXNpemUiKSx4O2Z1bmN0aW9uIGEoKXskKCJib2R5IikucmVtb3ZlQ2xhc3MoKHgsYSk9PihhLm1hdGNoKC8oXnxccyl0aGVtZS1cUysvZyl8fFtdKS5qb2luKCIgIikpfX0sU2VsMlNjcm9sbDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7YT94LmZpbmQoIi5zZWxlY3QyLWNvbnRhaW5lcj4uc2VsZWN0Mi1jaG9pY2VzIikuZWFjaChmdW5jdGlvbigpe2IubmljZVNjcm9sbCgkKHRoaXMpLHtib3VuY2VzY3JvbGw6ITAsY3Vyc29yY29sb3I6IiMyMzQiLGN1cnNvcm9wYWNpdHltaW46LjEsY3Vyc29yb3BhY2l0eW1heDouNCxyYWlscGFkZGluZzp7cmlnaHQ6MX19KX0pOnguZmluZCgiLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiB4JiZ4KCkucmVtb3ZlKCl9KX0sU2Vzc2lvbjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT10aGlzLmlzSUU7eC5QaG8oIl9jb21waWxlZCIpJiZ3aW5kb3cuRERPQyYmJC5hamF4KHt1cmw6eC5CYXNlLnJlcGxhY2UoL1wvKyQvLCIiKSsiL19zZXNzaW9uIixtZXRob2Q6ImdldCIsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGNhY2hlOiFhfSkudGhlbihmdW5jdGlvbih4KXtpZihPYmplY3QuaXNPYmplY3QoeCkmJngudXNlckN0eCl7dmFyIGE9eC51c2VyQ3R4LGI9e25hbWU6YS5uYW1lfHwiIixyb2xlczphLnJvbGVzfHxbXX07YS5uYW1lfHwoJC5leHRlbmQod2luZG93LkRET0MuX21lLGIpLCQubXkucmFkaW8oInVzZXJDdHgiLGIpKX19KX0sQ2xvc2VBbGw6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuVGFicy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4oeD9iLmFjdGl2ZTohYi5wYXRoLmxlbmd0aCl8fGIuaGFzaDAhPWIuaGFzaDE/YTooYS5wdXNoKHt0YWJpZDpiLmlkLGVuZm9yY2U6ITAsc2lsZW50OiEwfSksYSl9LFtdKTtiLmxhc3QoKS5zaWxlbnQ9ITEsYi5tYXAoZnVuY3Rpb24oeCl7YS5DbG9zZSh4KX0ubGF6eSgzMCkpfSxCdXN5OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7YS5teS5yb290KCkudG9nZ2xlQ2xhc3MoImFwcC1idXN5Iix4KSwkLm15LnJhZGlvKCJhcHBidXN5Iix7aWQ6Yi50YWJpZCxidXN5Onh9KX0sUmVxOmZ1bmN0aW9uKHgsYSl7T2JqZWN0LmlzU3RyaW5nO3ZhciBiPU9iamVjdC5pc09iamVjdCxjPU9iamVjdC5pc0FycmF5LGQ9dGhpcy5pc0lFLGU9ZnVuY3Rpb24oeCl7cmV0dXJuIl9ub2RlL19sb2NhbC9fbm9kZXMiIT14P3dpbmRvdy5lbmNvZGVVUklDb21wb25lbnQoeCk6eH0sZj10aGlzLGc9KGYuZGF0YSxmLkNmZyksaD1mLmxhbmcsaT0kLkRlZmVycmVkKCksaj0kLmV4dGVuZCghMCx7bWV0aG9kOiJHRVQiLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifSxjYWNoZTohZH0sYih4KT94OmMoeCk/e3VybDp4fTp7dXJsOngrIiJ9KSxrPW0oai51cmwsZi5CYXNlKTtyZXR1cm4gYT9rOihrfHxsKDQwMCxoLkVSUl9SRVFfSU5WQUxJRENBTEwpLGYuX2NvbXBpbGVkJiYhL1wvX3Nlc3Npb24kLy50ZXN0KGspJiZrIT1mLkJhc2UmJmcucm9sZXMubGVuZ3RoJiYtMT09Y3cubWUoInJvbGVzIikuaW5kZXhPZigiX2FkbWluIikmJjA9PWN3Lm1lKCJyb2xlcyIpLmludGVyc2VjdChnLnJvbGVzKS5sZW5ndGg/KGN3Lm1lKCk/bCg0MDMsaC5FUlJfUkVRX1JPTEVSRVEse29rOiExLHJlYXNvbjoiY29uZmlnIn0pOmwoNDAxLGguRVJSX1JFUV9BVVRIUkVRLHtvazohMSxyZWFzb246ImNvbmZpZyJ9KSxpLnByb21pc2UoKSk6KGoudXJsPWssJC5hamF4KGopLnRoZW4oZnVuY3Rpb24oeCxhLGIpe2kucmVzb2x2ZSh4LGIpfSkuZmFpbChmdW5jdGlvbih4LGEpe3ZhciBiO3RyeXtiPUpTT04ucGFyc2UoeC5yZXNwb25zZVRleHQpfWNhdGNoKHgpe31PYmplY3QuaXNPYmplY3QoYil8fChiPXtyZXNwb25zZTp4LnJlc3BvbnNlVGV4dH0pLGIub2s9ITE7dmFyIGM9eC5zdGF0dXM7bChjLGIucmVhc29ufHxiLm1lc3NhZ2V8fCIiLGIpLGYuX2NvbXBpbGVkJiZjdy5tZSgibmFtZSIpJiYoNDAxPT1jfHw0MDM9PWMpJiZmLlNlc3Npb24oKX0pLGkucHJvbWlzZSgpKSk7ZnVuY3Rpb24gbCh4LGEsYil7dmFyIGM9aXNOYU4oeCk/NTAwOit4LGQ9aXNOYU4oeCkmJiFhP3g6YTtkfHwoZD1oLkVSUl9SRVFbY118fGguRVJSX1JFUVs5OTldKSxkKz0iIixpLnJlamVjdChjLGQsYil9ZnVuY3Rpb24gbSh4LGEpe3ZhciBiPVtdLGM9e30sZD1bXSxmPSIiLGc9YT8oYSsiIikucmVwbGFjZSgvXC8rJC8sIiIpKyIvIjoiIixoPXtzdGFydGtleToxLGVuZGtleToxLHN0YXJ0X2tleToxLGVuZF9rZXk6MSxrZXk6MX0saT0vXl9kZXNpZ25cLy87cmV0dXJuInN0cmluZyI9PXR5cGVvZiB4P2Y9L15odHRwW3NdPzovLnRlc3QoeCk/eDpnK3gucmVwbGFjZSgvXlwvKy8sIiIpOk9iamVjdC5pc0FycmF5KHgpJiYoeC5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7aWYoIiIhPT14JiZudWxsIT14KWlmKE9iamVjdC5pc09iamVjdCh4KSkkLmV4dGVuZCghMCxjLHgpO2Vsc2UgaWYoaS50ZXN0KHgrIiIpKXt2YXIgZD0oeCsiIikuc3BsaXQoIi8iKTtiLmFkZChbZFswXSxkLmZyb20oMSkuam9pbigiLyIpXSl9ZWxzZSBiLnB1c2goZSh4KyIiKSl9KSxkPU9iamVjdC5rZXlzKGMpLm1hcChmdW5jdGlvbih4KXt2YXIgYT1jW3hdO3JldHVybihoW3hdfHwic3RyaW5nIiE9dHlwZW9mIGEpJiYoYT1KU09OLnN0cmluZ2lmeShhKSksZSh4KSsiPSIrZShhKX0pLGY9ZytiLmpvaW4oIi8iKSsoZC5sZW5ndGg/Ij8iK2Quam9pbigiJiIpOiIiKSksZn19LFN3aXRjaDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPXUsZT1jLmRhdGEsZj1jLlRhYnMuZmluZEluZGV4KGZ1bmN0aW9uKHgpe3JldHVybiB4LmFjdGl2ZX0pfHwwLGc9T2JqZWN0LmlzU3RyaW5nKHgpP3gucmVwbGFjZSgvXiMvLCIiKS5zcGxpdCgiLyIpLmNvbXBhY3QoITApOk9iamVjdC5pc0FycmF5KHgpP3guc2xpY2UoMCkuY29tcGFjdCghMCk6W107Zy5sZW5ndGg+MiYmZy5qb2luKCIvIikuc3RhcnRzV2l0aCgiX25vZGUvX2xvY2FsL19ub2RlcyIpJiYoKGc9Zy5mcm9tKDIpKVswXT0iX25vZGUvX2xvY2FsL19ub2RlcyIpLCJfbm9kZS9fbG9jYWwvX3ZlcnNpb25zIj09Zy5qb2luKCIvIikmJihnPVsiX25vZGUvX2xvY2FsIiwiX3ZlcnNpb25zIl0pLFsxLDIsM10uZm9yRWFjaChmdW5jdGlvbih4KXsvXl8oZGVzaWdufGxvY2FsKSQvLnRlc3QoZ1t4XSkmJihnW3grMV0mJihnW3grMV09Z1t4XSsiLyIrZ1t4KzFdKSxnLnJlbW92ZUF0KHgpKX0pO3ZhciBoLGk9Zy5qb2luKCJcZmZmZCIpLGo9W107aWYoYy5UYWJzLmZvckVhY2goeD0+eC5wYXRoLmpvaW4oIlxmZmZkIik9PWk/ai5wdXNoKHgpOjApLGoubGVuZ3RoPjEmJmEmJihqWzBdPWouZmluZCh4PT54LmlkPT1hKXx8alswXSksKGg9alswXSkmJmguYWN0aXZlJiZoLnJ1bilyZXR1cm4hMTt2YXIgayxsPS9eKF9ub2RlXC9fbG9jYWx8X25vZGVcL19sb2NhbFwvX25vZGVzfF91c2Vyc3xfcmVwbGljYXRvcnxfZGJzfF9ub2Rlc3xfZ2xvYmFsX2NoYW5nZXMpJC8udGVzdChnWzBdKXx8L15bYS16QS1aMC05JFwoXClcK1wtXVthLXpBLVowLTkkXChcKVwrXC1cL19cLl0qJC8udGVzdChnWzBdKSxtPSJlcnJvciIsbj0iRXJyb3IiLG89Yy5UeXBlcy5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtpZih4Lm9rfHwhY1thXS5tYXRjaClyZXR1cm4geDt2YXIgYj1jW2FdLm1hdGNoLmNhbGwoYyxnLnNsaWNlKDApLGwpO3JldHVybiBiJiYkLmV4dGVuZCh4LHtvazohMCx0eXBlOmEuc3Vic3RyKDEpfSxiKSx4fSx7b2s6ITEsdGl0bGU6IkVycm9yIix0eXBlOiJlcnJvciIscGF0aDpnfSk7aWYobT1vLnR5cGUsbj1vLnRpdGxlLGs9by5hcHBEYXRhLGc9by5wYXRoLCJlcnJvciI9PW0mJihrPXtlcnJvcjoiVW5yZWNvZ25pemVkIGNvbW1hbmQifSksIWgpe2lmKGMuVGFicy5sZW5ndGg+PWMuQ2ZnLm1heFRhYnMmJmcubGVuZ3RoKXt2YXIgcD1jLlRhYnMuZmluZCh4PT4iYWJvdXQiPT14LnR5cGUpfHxjLlRhYnMubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHgudHM9eC50c3x8IjAwMDAwMCIrKDk5LWEpLnRvU3RyaW5nKDM2KSx4fSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiF4LmVycm9yJiYheC5hY3RpdmUmJnguaGFzaDA9PXguaGFzaDF9KS5zb3J0QnkoInRzIilbMF07aWYoIXApcmV0dXJuIGN3LmxpYi5ub3RlKGMubGFuZy5GQUlMX1RPT19NQU5ZX1RBQlMuYXNzaWduKGMuQ2ZnLm1heFRhYnMrIiIpLCJlcnJvciIpLCExO2MuQ2xvc2Uoe3RhYmlkOnAuaWQsc2lsZW50OiEwfSl9ITAsaD17aWQ6Y3cubGliLnNkYm0oRGF0ZS5ub3coKStnKSx0eXBlOm0saGFzaDA6IiIsaGFzaDE6IiIsYWN0aXZlOiEwLG5hbWU6bixwYXRoOmcuc2xpY2UoMCksZXJyb3I6ImVycm9yIj09bSxydW46ITEsdHM6RGF0ZS5ub3coKS50b1N0cmluZygzNil9O3ZhciBxPTAscj0vXihkYnN8Y29uZmlnfGFib3V0fHN0YXRzfGxvZykkLztpZihyLnRlc3QobSkpImFib3V0IiE9bT8ocT1jLlRhYnMuZmluZEluZGV4KHg9PiFyLnRlc3QoeC50eXBlKSl8fDApJiZjLlRhYnNbcS0xXSYmIiI9PWMuVGFic1txLTFdLnBhdGgmJihxLT0xKTpxPWMuVGFicy5sZW5ndGg7ZWxzZSBpZigxPT1nLmxlbmd0aCYmYy5UYWJzW2ZdLnBhdGhbMF09PWdbMF0pZm9yKHE9ZjtxPjAmJmMuVGFic1txLTFdLnBhdGhbMF09PWdbMF07KXEtPTE7ZWxzZSBxPTI9PWcubGVuZ3RoJiZjLlRhYnNbZl0ucGF0aC50bygyKSsiIj09ZysiIj9mOmYrMTtjLlRhYnMuaW5zZXJ0KGgscSl9aWYoYy5UYWJzLmZvckVhY2goeD0+eCE9PWg/eC5hY3RpdmU9ITE6MCksaC5hY3RpdmU9ITAsaC50cz1EYXRlLm5vdygpLnRvU3RyaW5nKDM2KSxjLkhpc3RvcnkucmVtb3ZlKGguaWQpLGMuSGlzdG9yeS5wdXNoKGguaWQpLGMuX2NvbXBpbGVkKXt2YXIgcz1oLnBhdGgubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoeCl9KS5qb2luKCIvIik7bG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sIiIpIT1zJiYobG9jYXRpb24uaGFzaD0iIyIrcyl9Yy5TZXRUaXRsZShoLm5hbWUpLGQoKSxjLm15LnJlc3R5bGUoKTt2YXIgdD12KG0sZyxoLmlkLGspO2Z1bmN0aW9uIHUoKXtjLm15LnJlY2FsYygiI2wtYXBwdGFicyIpLGUucGF0aD1PYmplY3QuY2xvbmUoZywhMCl9ZnVuY3Rpb24gdih4LGEsZCxlKXt2YXIgZixnPWNbIiQiK3hdLGg9Yy5teS5maW5kKCIjbC1hcHBzPiNhcHAtIitkKTtyZXR1cm4haC5sZW5ndGh8fCFoLmlzKCIubXktZm9ybSIpJiYiZXJyb3IiPT14PyhoLmxlbmd0aHx8KGg9JCgnPGRpdiBjbGFzcz0ibC1hcHAiIGlkPSJhcHAtJytkKyciPjwvZGl2PicpLGMubXkuZmluZCgiI2wtYXBwcyIpLmFwcGVuZChoKSksYy5teS5maW5kKCIjbC1hcHBzPi5sLWFwcCIpLmFkZENsYXNzKCJoaWRlIiksaC5yZW1vdmVDbGFzcygiaGlkZSIpLGY9aC5teShnLCQuZXh0ZW5kKHtwYXRoOmEsdGFiaWQ6ZH0sZXx8e30sImVycm9yIj09eD97fTpifHx7fSkpKTpjLm15LmZpbmQoIiNsLWFwcHM+LmwtYXBwIikuZWFjaChmdW5jdGlvbigpe3ZhciB4PSQodGhpcyk7eC5pcyhoKT94LnJlbW92ZUNsYXNzKCJoaWRlIik6eC5hZGRDbGFzcygiaGlkZSIpfSksZnx8aH10LnRoZW4mJnQudGhlbihmdW5jdGlvbigpe3ZhciB4PSExO2gucnVuPSEwLGguaGFzaDA9aC5oYXNoMT10Lm15KCJtYW5pZmVzdCIpLmhhc2goKSxoLm5hbWU9dC5teSgibWFuaWZlc3QiKS50aXRsZSgpLGMuU2V0VGl0bGUoaC5uYW1lKSx0Lm9uKCJjaGFuZ2UubXkiLGZ1bmN0aW9uKCl7aC5oYXNoMT10Lm15KCJtYW5pZmVzdCIpLmhhc2goKTt2YXIgYT10Lm15KCJtYW5pZmVzdCIpLnRpdGxlKCk7aC5oYXNoMCE9aC5oYXNoMXx8YSE9aC5uYW1lPyhoLm5hbWU9YSx4PSEwLGQoKSk6eCYmZCgpLGguYWN0aXZlJiZjLlNldFRpdGxlKGgubmFtZSl9LmRlYm91bmNlKDUwMCkpLHQub24oInJlc2V0dGFiaGFzaC5teSIsZnVuY3Rpb24oKXtoLmhhc2gwPWguaGFzaDE9dC5teSgibWFuaWZlc3QiKS5oYXNoKCksaC5uYW1lPXQubXkoIm1hbmlmZXN0IikudGl0bGUoKSxkKCl9LmRlYm91bmNlKDEwMCkpLGQoKX0pLmZhaWwoZnVuY3Rpb24oeCxiKXtjLlBobygiQ291Y2giKS52ZXI+PSIwMDMuIiYmY3cubWUoKSYmIWcubGVuZ3RofHxjdy5saWIubm90ZShjLmxhbmcuRkFJTF9UQUJfQVBQLCJlcnJvciIpLGMubXkuZmluZCgiI2wtYXBwcz4jYXBwLSIrYSkucmVtb3ZlKCksaC5lcnJvcj0hMCxjb25zb2xlLmxvZyh4LGIpLGguaGFzaDE9aC5oYXNoMD0iZXJyb3IiLHYoImVycm9yIixnLGguaWQse2Vycm9yOk9iamVjdC5pc1N0cmluZyh4KSYmT2JqZWN0LmlzU3RyaW5nKGIpP3grIiAiK2I6eH0pfS5kZWJvdW5jZSgxMCkpfSxDbG9zZTpmdW5jdGlvbih4KXt2YXIgYSxiPXRoaXMsYz0hMTtpZihPYmplY3QuaXNPYmplY3QoeCk/KGE9eC50YWJpZHx8IiIseC5lbmZvcmNlfHwhMSxjPXguc2lsZW50fHwhMSk6YT14KyIiLCEoYi5UYWJzLmxlbmd0aDwyKSYmYSl7dmFyIGQ9Yi5UYWJzLmZpbmQoeD0+eC5pZD09YSk7aWYoZCl7dmFyIGU9Yi5teS5maW5kKCIjbC1hcHBzPiNhcHAtIithKTtlLmxlbmd0aCYmZS5pcygiLm15LWZvcm0iKT8oZC5oYXNoMT1lLm15KCJtYW5pZmVzdCIpLmhhc2goKSxkLmhhc2gxPT1kLmhhc2gwP2YoZSxkKTokLm15Lm1vZGFsKHttYW5pZmVzdDpiLkNvbmZpcm0sZGF0YTp7eWVzOiJDbG9zZSB0YWImbmJzcDsiLG5vOiJDYW5jZWwgY2xvc2UiLGNhbmNlbDoiIix0ZXh0OmIubGFuZy5ETEdfVU5TQVZFRCx1c2VCdXR0b25zOiEwfSx3aWR0aDozMDAsY2xvc2U6Yi5sYW5nLkJUTl9YRExHLGVzYzohMCxlbnRlcjohMSxjc3M6ImxoMTcwIHhncmF5IHAyMCBwYjI1Iixmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbih4KXsieWVzIj09eC5jbWQmJmYoZSxkKX0pKTpnKCFkLmFjdGl2ZSl9fWZ1bmN0aW9uIGYoeCxhKXt4Lm15KCJyZW1vdmUiKSx4LnJlbW92ZSgpLGcoIWEuYWN0aXZlKX1mdW5jdGlvbiBnKHgpe2lmKGIuSGlzdG9yeS5yZW1vdmUoYSksYi5UYWJzLnJlbW92ZShkKSx4KWN8fGIubXkucmVjYWxjKCIjbC1hcHB0YWJzIik7ZWxzZSBpZihiLkhpc3RvcnkubGVuZ3RoKXtmb3IodmFyIGUsZjtiLkhpc3RvcnkubGVuZ3RoJiYhZTspZj1iLkhpc3RvcnkucG9wKCksZT1iLlRhYnMuZmluZCh4PT54LmlkPT1mKTtlfHwoZT1iLlRhYnNbMF0pLGIuU3dpdGNoKGUucGF0aCxlLmlkKX1lbHNlIGIubXkucmVjYWxjKCIjbC1hcHB0YWJzIiksYi5fY29tcGlsZWQmJndpbmRvdy5oaXN0b3J5LmJhY2soKTtjfHxiLm15LnJlc3R5bGUoKX19LEdldExpc3Q6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9KHguZGF0YSwkLkRlZmVycmVkKCkpLGI9ZW5jb2RlVVJJQ29tcG9uZW50LGM9IiIsZD1bXSxlPSJfbm9kZS9fbG9jYWwvX25vZGVzIixmPVt4LlJlcShbIl9hbGxfZGJzIl0pLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGM9T2JqZWN0LmtleXMoeC5BbGwpLGQ9YS5zbGljZSgwKTtjLnN1YnRyYWN0KGQpLmZvckVhY2goZnVuY3Rpb24oYSl7YSE9ZSYmZGVsZXRlIHguQWxsW2FdfSksZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCF4LkFsbFthXSl7dmFyIGM9YS5lc2NhcGVIVE1MKCksZD1nKGEpLGU9YyxmPWEubGVuZ3RoLGg9MDtmPjE1JiYoaD1mLSgxNStmJTMpLGU9YS50byhmLWgpK2EuZnJvbShmLWgpLnJlcGxhY2UoLyguezN9KS9nLCIkMTx3YnI+IikpO3ZhciBpPSQuZXh0ZW5kKCEwLHtuYW1lOmEsbmFtZXNhZmU6YyxobmFtZTplLHRvb2x0aXA6ZCxocmVmOmIoYSl9LHguZGJUeXBlKTt4LkFsbFthXT0kLmV4dGVuZCghMCxpLHguQWxsW2FdfHx7fSl9fSkseC5Hcm91cERCcygpfSkudGhlbihmdW5jdGlvbigpe3guUGhvKCJDb3VjaCIpLnZlcjwiMDAzLiJ8fCFjdy5tZSgicm9sZXMiKS5maW5kKCJfYWRtaW4iKXx8KHguQWxsW2VdPXguQWxsW2VdfHwkLmV4dGVuZCghMCx7bmFtZTplLG5hbWVzYWZlOmUsaG5hbWU6ZSx0b29sdGlwOmUsaHJlZjpiKGUpfSx4LmRiVHlwZSkpfSkuZmFpbChmdW5jdGlvbih4LGIsYyl7Y29uc29sZS5sb2coeCxiLGMpLGEucmVqZWN0KHgsYixjKX0pXTtyZXR1cm4gZi5wdXNoKGgoKSksUS5hbGxTZXR0bGVkKGYpLnRoZW4oZnVuY3Rpb24oKXt4LkFsbFtjXT94LlJlcGxpY2F0b3JEQj1jOnguUmVwbGljYXRvckRCPXguUmVwbGljYXRvckRCfHwiX3JlcGxpY2F0b3IiLGEucmVzb2x2ZSh4LkFsbCl9KSxhLnByb21pc2UoKTtmdW5jdGlvbiBnKHgpe2lmKCEvXnVzZXJkYi0oWzAtOWEtaF17Mn0pezEsfSQvLnRlc3QoeCkpcmV0dXJuIHgubGVuZ3RoPjIwP3g6IiI7dmFyIGE9eC5mcm9tKDcpLGI9IiI7dHJ5e2I9ZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvKC4uKS9nLCIlJDEiKSl9Y2F0Y2goeCl7fXJldHVybiBiPyJVc2VyIERCIGZvciAiK2I6eC5sZW5ndGg+MjA/eDoiIn1mdW5jdGlvbiBoKCl7dmFyIGE9W107cmV0dXJuIHguQ291Y2gudmVyc2lvbnx8KGEucHVzaCh4LlJlcSh7dXJsOltdLGRhdGFUeXBlOiJqc29uIn0pLnRoZW4oYT0+eC5Db3VjaC52ZXJzaW9uP2E6JC5leHRlbmQoeC5Db3VjaCxhKSkuZmFpbChhPT57JC5leHRlbmQoeC5Db3VjaCx7Y291Y2hkYjoiV2VsY29tZSIsdmVyc2lvbjoiMi4zLjEiLHV1aWQ6IjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmIixmZWF0dXJlczpbXSx2ZW5kb3I6e25hbWU6IkZha2VkIHJlc3BvbnNlIn19KX0pLmFsd2F5cyhtKSksIXguUGhvKCJfY29tcGlsZWQiKXx8d2luZG93LkRET0MmJndpbmRvdy5ERE9DLl9kYnx8YS5wdXNoKHguUmVxKHt1cmw6WyJfZGJyb290Il0sZGF0YVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbihhKXskLmV4dGVuZCh4LkNvdWNoLGEpLG0oKX0pLmZhaWwoeD0+Y29uc29sZS5sb2coIlRoaXMgNDAwIGlzIG5vcm1hbCIpKSkpLFEuYWxsU2V0dGxlZChhKS50aGVuKGkpfWZ1bmN0aW9uIGkoKXt2YXIgYT1bXTtyZXR1cm4geC5Db3VjaC52ZXI8IjAwMi4iPyhhLnB1c2goeC5SZXEoWyJfY29uZmlnIiwicmVwbGljYXRvciIsImRiIl0pLnRoZW4oZnVuY3Rpb24oeCl7InN0cmluZyI9PXR5cGVvZiB4JiYoYz14KX0pLmZhaWwoZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiVGhpcyA0MHggaXMgbm9ybWFsIil9KSx4LlJlcShbIl9jb25maWciLCJodHRwZCIsInBvcnQiXSkudGhlbihmdW5jdGlvbihhKXsic3RyaW5nIj09dHlwZW9mIGEmJih4LkNvdWNoLnBvcnQ9YSl9KSkseC5Db3VjaC5tYXhCYXRjaD0wKTphLnB1c2goeC5HZXRNZW1iZXJzaGlwKCkudGhlbihmdW5jdGlvbih4KXtkPXh9KS50aGVuKGwpLGsoKSxqKCkseC5SZXEoWyJfbm9kZSIsIl9sb2NhbCIsIl9jb25maWciLCJjaHR0cGQiLCJwb3J0Il0pLnRoZW4oZnVuY3Rpb24oYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoeC5Db3VjaC5wb3J0PWEpfSkpLFEuYWxsU2V0dGxlZChhKX1mdW5jdGlvbiBqKCl7aWYoIXguUGhvKCJDb3VjaCIpLnEpcmV0dXJuIHguUmVxKFsiX25vZGUiLCJfbG9jYWwiLCJfY29uZmlnIiwiY2x1c3RlciJdKS50aGVuKGZ1bmN0aW9uKGEpe2EmJiJvYmplY3QiPT10eXBlb2YgYSYmKHguQ291Y2gucT0rKGEucXx8MCkseC5Db3VjaC5uPSsoYS5ufHwwKSl9KS5mYWlsKGZ1bmN0aW9uKCl7eC5Db3VjaC5xPTAsY29uc29sZS5sb2coIlRoaXMgNDB4IGlzIG5vcm1hbCIpfSl9ZnVuY3Rpb24gaygpe2lmKCEoeC5Db3VjaC52ZXI8IjAwMy4wMDAuIikpcmV0dXJuIHguUmVxKFsiX25vZGUiLCJfbG9jYWwiLCJfY29uZmlnIiwicHVyZ2UiXSkudGhlbihmdW5jdGlvbihhKXt4LkNvdWNoLm1heFB1cmdlPU1hdGgubWluKCsoYS5tYXhfcmV2aXNpb25zX251bWJlcnx8MTAwKSwrKGEubWF4X2RvY3VtZW50X2lkX251bWJlcnx8MTAwKSkuY2xhbXAoMSwxZTYpfSl9ZnVuY3Rpb24gbCgpe3JldHVybiFkLmxlbmd0aHx8eC5Db3VjaC52ZXI8IjAwMi4wMDIuInx8eC5Db3VjaC5tYXhCYXRjaD4wPyh4LkNvdWNoLm1heEJhdGNoPXguQ291Y2gubWF4QmF0Y2h8fDAsdm9pZCAwKTp4LlJlcShbIl9ub2RlIiwiX2xvY2FsIiwiX2NvbmZpZyIsImNodHRwZCIsIm1heF9kYl9udW1iZXJfZm9yX2Ric19pbmZvX3JlcSJdKS50aGVuKGZ1bmN0aW9uKGEpe3guQ291Y2gubWF4QmF0Y2g9InN0cmluZyI9PXR5cGVvZiBhPythOjB9KS5mYWlsKGZ1bmN0aW9uKCl7eC5Db3VjaC5tYXhCYXRjaD14LkNvdWNoLnZlcj4iMDAzLjAwMS4iPzEwMDowLGNvbnNvbGUubG9nKCJUaGlzIDQweCBpcyBub3JtYWwiKX0pfWZ1bmN0aW9uIG0oKXt4LkNvdWNoLnZlcj14LkNvdWNoLnZlcnNpb24uc3BsaXQoIi4iKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuKCIwMCIrKCt4fHxwYXJzZUludCh4KXx8MCkudG9TdHJpbmcoKSkuc3Vic3RyKC0zKX0pLmpvaW4oIi4iKX19LEdldE1lbWJlcnNoaXA6ZnVuY3Rpb24oKXt2YXIgeCxhPXRoaXM7cmV0dXJuIE9iamVjdC5zaXplKHg9YS5QaG8oIk1lbWJlcnNoaXAiKSk/Yih4KTphLlJlcShbIl9tZW1iZXJzaGlwIl0pLnRoZW4oYik7ZnVuY3Rpb24gYih4KXt2YXIgYj1bXTtyZXR1cm4gT2JqZWN0LmlzT2JqZWN0KHgpJiZPYmplY3QuaXNBcnJheSh4LmFsbF9ub2RlcykmJk9iamVjdC5pc0FycmF5KHguY2x1c3Rlcl9ub2RlcykmJigkLmV4dGVuZCghMCxhLlBobygiTWVtYmVyc2hpcCIpLHgpLGI9eC5jbHVzdGVyX25vZGVzLnNsaWNlKDApLmludGVyc2VjdCh4LmFsbF9ub2RlcykpLGJ9fSxHZXRVc2VyczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0kLkRlZmVycmVkKCksYj14LlVzZXJzO3JldHVybihiLl9zZXE/eC5SZXEoe3VybDpbIl91c2VycyIsIl9jaGFuZ2VzIix7c2luY2U6Yi5fc2VxfV0sZGF0YVR5cGU6Impzb24ifSk6eC5SZXEoe3VybDpbIl91c2VycyIsIl9hbGxfZG9jcyIse3VwZGF0ZV9zZXE6ITB9XSxkYXRhVHlwZToianNvbiJ9KSkudGhlbihmdW5jdGlvbih4KXtiLl9zZXE9eC5sYXN0X3NlcXx8eC51cGRhdGVfc2VxLCh4LnJvd3N8fHgucmVzdWx0c3x8W10pLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoIm9yZy5jb3VjaGRiLnVzZXI6Ij09eC5pZC50bygxNykpe3ZhciBhPXguaWQuZnJvbSgxNyk7eC5kZWxldGVkP2RlbGV0ZSBiW2FdOmJbYV09ITB9fSl9KS5hbHdheXMoZnVuY3Rpb24oKXthLnJlc29sdmUoT2JqZWN0LmtleXMoYikuc29ydCgpLnJlbW92ZSgvXl8vKSl9KSxhLnByb21pc2UoKX0sR3JvdXBEQnM6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5BbGwsZD1iLlBobygiQ2ZnIikuZ3JvdXBpbmcsZT0oeD14fHxPYmplY3Qua2V5cyhjKSxhPWF8fE9iamVjdC5rZXlzKGIuTHMoIkRCcy5TdGFycyIpfHx7fSksY3cubGliLmEybyhhKSksZj1kLmZpbmQoInRpbnkiKT8xMDpkLmZpbmQoInNtYWxsIik/MzA6ZC5maW5kKCJsYXJnZSIpPzI1MDoxMDAsZz1mLzN8MCxoPXguZmlsdGVyKHg9PiFlW3hdKS5zb3J0KCk7aWYoeC5sZW5ndGg8MipnfHxkKyIiPT0iIilyZXR1cm4gT2JqZWN0LmtleXMoYykuZm9yRWFjaCh4PT5jW3hdLmdyb3VwPSIiKSxiLkdyb3Vwcz17fTtpZihkLmZpbmQoImF1dG8iKSl7aWYoZC5maW5kKCJhdXRvIikpe2w9eyIiOjB9O3ZhciBpPXt9O2g9KGg9aC5tYXAoZnVuY3Rpb24oeCxhKXt2YXIgYj0oeC5tYXRjaCgvXlthLXowLTlcJF17MSwxNX1bXC9cLV9cK10oXGR7MSw4fVtcL1wtX1wrXSk/Lyl8fFtdKVswXTtyZXR1cm4gYj8obFtiXXx8KGlbYl09YSxsW2JdPTApLGxbYl0rPTEse2RiOngsZ3JvdXA6Yn0pOihsWyIiXSs9MSx7ZGI6eCxncm91cDoiIn0pfSkpLm1hcChmdW5jdGlvbih4KXt2YXIgYT14Lmdyb3VwO3JldHVybiBhPyhsW2FdP2xbYV08ZyYmKGxbIiJdKz1sW2FdLGRlbGV0ZSBsW2FdLHguZ3JvdXA9IiIpOnguZ3JvdXA9IiIseCk6eH0pO3ZhciBqPVtdLGs9bnVsbDttPTA7aC5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7aWYoIl8iIT14LmRiWzBdKXtpZih4Lmdyb3VwKXJldHVybiBrPW51bGw7a3x8ai5wdXNoKHtpMDphLHNpemU6MCxwZjp7fX0pO3ZhciBiPWoubGFzdCgpLGM9eC5kYlswXTtiLnBmW2NdfHwoYi5wZltjXT17aTA6YSxzaXplOjB9KSxiLnBmW2NdLnNpemUrPTEsYi5zaXplKz0xLGs9eH19KSwoaj1qLmZpbHRlcih4PT54LnNpemU+PWYpKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXgucGY7T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj1hW3hdLGM9Yi5zaXplPGYtZz8iIjp4O2MmJihpW2NdPWIuaTAsbFtjXT1iLnNpemUsbFsiIl0tPWIuc2l6ZSk7Zm9yKHZhciBkPTA7ZDxiLnNpemU7ZCsrKWhbYi5pMCtkXS5ncm91cD1jfSl9KSxPYmplY3Qua2V5cyhsKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgmJiEobFt4XTxmK2cpKXt2YXIgYT1sW3hdLGI9YS9mO2IhPT0oMHxiKSYmKGI9TWF0aC5jZWlsKGIpKTtmb3IodmFyIGM9TWF0aC5jZWlsKGEvYikuY2xhbXAoLjkqZnwwLGYpLGQ9aVt4XSxlPTE7ZTxiO2UrKylmb3IodmFyIGo9MCxrPTA7azxjO2srKykoaj1lKmMrayk8YSYmKGhbZCtqXS5ncm91cCs9IjoiK2UpfX0pfX1lbHNle3ZhciBsPXsiIjowfSxtPTA7aD1oLm1hcChmdW5jdGlvbih4LGEpe2lmKCJfIj09eFswXSlyZXR1cm57ZGI6eCxncm91cDoiIn07dmFyIGI9IjoiK207cmV0dXJuIGxbYl18fChsW2JdPTApLGxbYl0rPTEsbFtiXT49ZiYmKG0rPTEpLHtkYjp4LGdyb3VwOmJ9fSl9bD17IiI6e3NpemU6MCxzdGFydDoiIixlbmQ6IiJ9fSxrPW51bGw7cmV0dXJuIGguZm9yRWFjaChmdW5jdGlvbih4LGEpe3ZhciBiPXguZ3JvdXA7Y1t4LmRiXS5ncm91cD1iLGImJiFsW2JdJiYobFtiXT17aWQ6YixoZWFkOmIuc3BsaXQoIjoiKVswXSxzdGFydDp4LmRiLGVuZDoiIixzaXplOjAsaTA6YX0pLCFifHxoW2ErMV0mJmhbYSsxXS5ncm91cD09Ynx8KGxbYl0uZW5kPXguZGIpLGxbYl0uc2l6ZSs9MX0pLGIuR3JvdXBzPWx9LFVwZGF0ZXI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3guTHM7aWYoeC5fY29tcGlsZWQmJmN3Lm1lKCkmJiJyZW1pbmQiPT14LkNmZy51cGRhdGUpe3ZhciBhPXguTHMoIkxhc3RVcGRhdGUiKXx8e30sYj13aW5kb3cuRERPQyxjPURhdGUubm93KCksZD0iIixlPTI2Nzg0ZTUsZj0wO2lmKCEoYS5yZW1pbmRlciYmYy1hLnJlbWluZGVyPGUqKE1hdGgucmFuZG9tKCkvMisuNSkpKXtpZihhLnN0YW1wKXtpZigoZj0oYy1hLnN0YW1wKS9lKTwxLjEpcmV0dXJuO2Q9eC5sYW5nLlVQRF9NT05USC5hc3NpZ24oMHxmLGY+MT8icyI6IiIpfWVsc2V7aWYoKGY9KGMtYi5zdGFtcCkvZSk8MS4xKXJldHVybjtkPXgubGFuZy5VUERfT0xELmFzc2lnbigwfGYsZj4xPyJzIjoiIil9ZCYmKGQrPXgubGFuZy5VUERfVEFJTCxjdy5saWIubm90ZShkLCJ4eHgiLDZlMyksYS5yZW1pbmRlcj1jLHguTHMoIkxhc3RVcGRhdGUiLGEpKX19fSxMczpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9d2luZG93LmxvY2FsU3RvcmFnZSxjPWYsZD14fHxhLmlkfHwiWCIsZT1PYmplY3QuaXNTdHJpbmc7aWYoYS5fY29tcGlsZWQpdHJ5e2guZGVsYXkoM2UzKX1jYXRjaCh4KXt9cmV0dXJuIGM7ZnVuY3Rpb24gZih4LGEpe3ZhciBjLGY9ZCsiLiIreDtyZXR1cm4gbnVsbD09PWE/Yi5yZW1vdmVJdGVtKGYpOnZvaWQgMCE9PWE/Yi5zZXRJdGVtKGYsSlNPTi5zdHJpbmdpZnkoYSkpOihjPWIuZ2V0SXRlbShmKSxlKGMpP2coYyk6bnVsbCl9ZnVuY3Rpb24gZyh4KXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoeCl9Y2F0Y2goeCl7fXJldHVybiBudWxsfWZ1bmN0aW9uIGgoKXt2YXIgeD1EYXRlLm5vdygpO2lmKCEoSlNPTi5zdHJpbmdpZnkoYikubGVuZ3RoPDFlNikpT2JqZWN0LmtleXMoYikuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LnN0YXJ0c1dpdGgoImN3LlN5cy5KU09OLnZpZXdzdGF0ZSIpfSkucmVkdWNlKGZ1bmN0aW9uKGEsYyl7dmFyIGQ9Yi5nZXRJdGVtKGMpO2lmKCFlKGQpKXJldHVybiBhO3ZhciBmPWcoZCk7cmV0dXJuIGYmJmYuc3RhbXAmJmYuc3RhbXA+eC0zMTUzNmU2JiZhLnB1c2goW2MsZl0pLGF9LFtdKS5zb3J0QnkoZnVuY3Rpb24oeCl7cmV0dXJuIHhbMV0uc3RhbXB9KS50bygtMWUzKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2IucmVtb3ZlSXRlbSh4WzBdKX0pfX0sQ3JlYXRlREJzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIubGFuZyxkPWIuUGhvKCJDZmciKS5iYXRjaENyZWF0ZURlbGF5LGU9Yi5QaG8oIkNvdWNoIiksZj1lLnZlcixnPWUucTtyZXR1cm4gUS5hbGxTZXR0bGVkKHgubWFwKGgpKS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpeyQubXkucmFkaW8oImRibGlzdCIseC5tYXAoeD0+eC5uYW1lKSl9LmRlbGF5KDUwKSxhfSk7ZnVuY3Rpb24gaCh4LGUpe3ZhciBoPSQuZXh0ZW5kKCEwLHtuYW1lOiIiLHNlY3VyaXR5Om51bGwscTowLG46MCxwYXJ0aXRpb25lZDohMSxjcmVhdGU6ITB9LHgpO2guc2VjdXJpdHk9JC5leHRlbmQoITAse2FkbWluczp7bmFtZXM6W10scm9sZXM6W119LG1lbWJlcnM6e25hbWVzOltdLHJvbGVzOltdfX0seC5zZWN1cml0eXx8e30pO3ZhciBqPWgubmFtZSxrPXt9LGw9JC5EZWZlcnJlZCgpO3JldHVybiBmPiIwMDIuIiYmK2c+MCYmK2gucT4wJiYkLmV4dGVuZChrLHtxOitoLnF8fDIsbjoraC5ufHwxfSksZj4iMDAzLiImJmgucGFydGl0aW9uZWQmJitoLnE+MSYmKGsucGFydGl0aW9uZWQ9ITApLGZ1bmN0aW9uKCl7KGguY3JlYXRlP2IuUmVxKHt1cmw6W2osa10sbWV0aG9kOiJQVVQiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pLnRoZW4obSk6bSgpKS50aGVuKGZ1bmN0aW9uKCl7bC5yZXNvbHZlKGgpfSkuZmFpbChmdW5jdGlvbih4LGMsZCl7bC5yZWplY3QoeCxjLGQsaCksYXx8Y3cubGliLm5vdGUoYi5sYW5nLk1TR19ORVdEQl9GQUlMLmFzc2lnbihqLHgsaShjKSksImVycm9yIiwxZTQpfSl9LmRlbGF5KGUqZHx8MCksbC5wcm9taXNlKCk7ZnVuY3Rpb24gbSgpe3ZhciBkPSQuRGVmZXJyZWQoKTtyZXR1cm4gbnVsbCE9eC5zZWN1cml0eXx8aC5jcmVhdGUmJmY+IjAwMy4iP2IuUmVxKHt1cmw6W2osIl9zZWN1cml0eSJdLG1ldGhvZDoiUFVUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShPYmplY3Quc2VsZWN0KGguc2VjdXJpdHksWyJhZG1pbnMiLCJtZW1iZXJzIl0pKX0pLnRoZW4oZnVuY3Rpb24oKXthfHxlKCl9KS5mYWlsKGZ1bmN0aW9uKHgsYixkKXthfHxjdy5saWIubm90ZShjW2guY3JlYXRlPyJNU0dfTkVXREJfTk9BQ0wiOiJNU0dfU0VDREJfRkFJTCJdLmFzc2lnbihqLHgsaShiKSksIndhcm5pbmciLDZlMyl9KS5hbHdheXMoZnVuY3Rpb24oKXtkLnJlc29sdmUoaCl9KTooIWEmJmguY3JlYXRlJiZlKCksZC5yZXNvbHZlKGgpKSxkLnByb21pc2UoKTtmdW5jdGlvbiBlKCl7Y3cubGliLm5vdGUoaC5jcmVhdGU/Yy5NU0dfTkVXREJfT0suYXNzaWduKGopOmMuTVNHX1NFQ0RCX09LLmFzc2lnbihqKSl9fX1mdW5jdGlvbiBpKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9fSxDb21waWxlVDpmdW5jdGlvbih4KXtmb3IodmFyIGEsYixjLGQ9L1x7W2EtejAtOV9dW2EtejAtOV9dezAsMTl9XC4/W2EtejAtOV9dezAsMjB9XH0vZ2ksZT1bXSxmPTAsZz0wLGg9MDtudWxsIT09KGE9ZC5leGVjKHgpKTspYz0oYj1hWzBdKS5sZW5ndGgsZz1kLmxhc3RJbmRleCxlLnB1c2goeC5zdWJzdHJpbmcoZixnLWMpKSxmPWcsZS5wdXNoKFtiXS5jb25jYXQoYi5zdWJzdHIoMSxjLTIpLnNwbGl0KCIuIikpKSxoKz0yO3JldHVybiBlLnB1c2goeC5zdWJzdHIoZikpLGQ9bnVsbCx7c3RhbXA6RGF0ZS5ub3coKSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB4fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LGFzc2lnbjpmdW5jdGlvbihhKXt2YXIgYj0iIixjPSJvYmplY3QiO2lmKHR5cGVvZiBhIT09YylyZXR1cm4geDtmb3IodmFyIGQsZixnPTAsaT0xO2c8aDtnKz0yKXtiKz1lW2ddLGQ9ZVtnKzFdLGk9MSxmPWE7ZG97Zj1mW2RbaSsrXV19d2hpbGUodHlwZW9mIGY9PT1jJiZpPGQubGVuZ3RoKTtiKz12b2lkIDAhPT1mP2Y6ZFswXX1yZXR1cm4gYitlW2hdfX19fSxFZDp7anNvbnRyZWU6e2lkOiJjdy5TeXMuSlNPTiIscGFyYW1zOnt9LHVpOnsiI2J0bi1zYXZlIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkudHJpZ2dlcigiI2J0bi1zYXZlIiwic2F2ZWRvYy5teSIpfX19LExpYjp7aXNTeXN0ZW06ZnVuY3Rpb24oeCl7cmV0dXJuIXRoaXMubXkucm9vdCgpLnBhcmVudHMoIi5sLWFwcCIpLmVxKDApLm15KCJkYXRhIikuaXNOZXcmJiEhKDE9PXgubGV2ZWwmJi9eXyhpZHxyZXZ8cmV2c19pbmZvfGxvY2FsX3NlcSkkLy50ZXN0KHgua2V5KSYmeC52YWx1ZXx8eC5sZXZlbD4yJiYiX3JldnNfaW5mbyI9PXgucGF0aFsxXXx8Il9jb25mbGljdHMiPT14LnBhdGhbMV0pfX0sc3R5bGU6eyIgIjoiIiwiIC5pcm9vdC5pc2VkaXRvciI6InBhZGRpbmctbGVmdDowIWltcG9ydGFudDsiLCIgLmlyb290LmlzZWRpdG9yPi5pa2V5IjoiZGlzcGxheTpub25lIiwiIC5pcm9vdD4uaWVkaXRvciI6InBhZGRpbmctdG9wOjRweDsiLCIgLmlyb290Pi5pZWRpdG9yIC5Db2RlTWlycm9yLXNjcm9sbCI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5QaG8oIlBhbmVsSGVpZ2h0IiktMzI7cmV0dXJuIm1pbi1oZWlnaHQ6ezF9cHg7bWF4LWhlaWdodDp7MX1weDtoZWlnaHQ6ezF9cHg7b3ZlcmZsb3c6c2Nyb2xsOyIuYXNzaWduKGEpfX0sJG11bHRpOntidWlsZERlbGF5OjEwMH0sTHM6ZnVuY3Rpb24oKXt2YXIgeD13aW5kb3cubG9jYWxTdG9yYWdlO3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPSJjdy5TeXMuSlNPTi4iK2E7aWYoYilyZXR1cm4geC5zZXRJdGVtKGMsSlNPTi5zdHJpbmdpZnkoYikpO2lmKG51bGw9PT1ifHwhMT09PWIpcmV0dXJuIHgucmVtb3ZlSXRlbShjKTt2YXIgZD14LmdldEl0ZW0oYyk7cmV0dXJuIE9iamVjdC5pc1N0cmluZyhkKT9KU09OLnBhcnNlKGQpOm51bGx9fSxNYWtlTGlzdDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPVtdLGU9eC52YWx1ZSxmPU9iamVjdC5rZXlzKGUpLGc9Y3cubGliLnNkYm0saD13aW5kb3cuYXRvYixpPWMuZGF0YS52aWV3c3RhdGV8fHt9LGo9Yy5kYXRhLmZvdW5kfHx7fSxrPXgubGV2ZWwrMSxsPWMuZGF0YS5zZWFyY2gubGVuZ3RoPjIsbT0vXmRhdGE6aW1hZ2VcLyhqcGVnfHBuZ3xnaWZ8c3ZnXCt4bWwpO2Jhc2U2NCwvO3JldHVybiJfYXR0YWNobWVudHMiPT14LmtleSYmMT09eC5wYXRoLmxlbmd0aCYmIlJvb3QiPT14LnBhdGhbMF0mJihmPWYuc29ydEJ5KGZ1bmN0aW9uKHgpe3ZhciBhPXguaW5kZXhPZigiLyIpPi0xO3JldHVybi9eaW5kZXhcLmh0bS9pLnRlc3QoeCk/IjAiK3g6YT8iMiIreDoiMSIreH0pKSxmLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGYsaCxvPWVbYV0scD0kLnR5cGUobykscT0ib2JqZWN0Ij09cHx8ImFycmF5Ij09cD8ibXVsdGkiOnAscj14LnBhdGguc2xpY2UoMCkuYWRkKHgua2V5KSxzPWMuUGF0aFNpZyhyLGEpO2wmJiFqW3NdfHwoIm11bHRpIj09cSYmKCJSb290IiE9eC5rZXl8fHgucGF0aC5sZW5ndGh8fCJfYXR0YWNobWVudHMiIT1hPyJfYXR0YWNobWVudHMiPT14LmtleSYmMT09eC5wYXRoLmxlbmd0aCYmIlJvb3QiPT14LnBhdGhbMF0mJihxPSJmaWxlIik6cT0iZmlsZXMiKSwic3RyaW5nIj09cCYmKGwmJjh8altzXT9xPSJmb3VuZCI6by5sZW5ndGg+MTEmJigvXltcc1xyXG5cdF0qZnVuY3Rpb24vLnRlc3Qoby5zdWJzdHIoMCwyMCkpJiYvXH1bXHJcblx0XHNdKiQvLnRlc3Qoby5zdWJzdHIoLTEwKSl8fC9eW1xzXHJcblx0XSpcKFtcc1xyXG5cdF0qZnVuY3Rpb24vLnRlc3Qoby50bygyMCkpJiYvXH1bXHJcblx0XHNdKlwpW1xyXG5cdFxzXSokLy50ZXN0KG8uc3Vic3RyKC0xMCkpKT9xPSJmdW5jdGlvbiI6by5sZW5ndGg+MTYwJiZvLmxlbmd0aDwxNWU0JiYvXlthLXpBLVowLTlcK1wvXSskLy50ZXN0KG8uc3Vic3RyKDAsMTU4KSkmJi9eW2EtekEtWjAtOVwrXC9dKz17MCwyfSQvLnRlc3Qobyk/InN0cmluZyI9PXR5cGVvZihoPW4obykpJiYocT0iYmFzZTY0Iik6by5sZW5ndGg+MTYwJiZvLmxlbmd0aDwxNWU0JiZtLnRlc3QobykmJiJzdHJpbmciPT10eXBlb2YoaD1uKG8ucmVwbGFjZShtLCIiKSkpJiYocT0iYmFzZTY0IikpLGZ8fChmPWcoW2Esb10pKSxsJiYhaltzXXx8ZC5wdXNoKHtzdGF0ZTpifHwobD9qW3NdOmlbc118fDEpLGxldmVsOmssbWFuaWZlc3Q6IiQiK3EscGF0aDpyLHR5cGU6cCxrZXk6YSxpZDphLHZhbHVlOiJmdW5jdGlvbiI9PXR5cGVvZiBlW2FdP2VbYV0rIiI6ZVthXSxiaW46aCxoYXNoOmZ9KSl9KSxkO2Z1bmN0aW9uIG4oeCl7dmFyIGE7dHJ5e2E9aCh4KX1jYXRjaCh4KXt9cmV0dXJuIGF9fSwkZmlsZXM6e2lkOiJTeXMuSlNPTi5GaWxlcyIsZGF0YTp7fSxMaXN0OltdLENNOiJqYXZhc2NyaXB0IixUeHQ6e29iamVjdDpbIkZpbGVzIHsiLCJ9Il0sYXJyYXk6WyJBcnJheSBbIiwiXSJdfSxtYXhEZXB0aDo3MDAsYnVpbGREZWxheToxNTAsaXNMaXN0OiEwLGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9YS5kYXRhO3guYWRkQ2xhc3MoImVkLW5vZGUtIitiLlBhdGhTaWcoYy5wYXRoLGMua2V5KSkseC5odG1sKGIuSFRNTCksYy5zdGF0ZT4xJiYoYi5MaXN0PWIuTWFrZUxpc3QoYykpLHgub24oImNsaWNrLm15IiwiLmlsaXN0OmVxKDApIC5idG4tZGVsIixmdW5jdGlvbihjKXtjLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBkPSQodGhpcykucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKSxlPWQucGFyZW50KCkuZGF0YSgibXkiKS5kYXRhLGY9JC50eXBlKGUudmFsdWUpLGc9ZC5teSgiZGF0YSIpLmtleSxoPU9iamVjdC5jbG9uZShlLnZhbHVlW2ddLCEwKTsib2JqZWN0Ij09Zj9kZWxldGUgZS52YWx1ZVtnXToiYXJyYXkiPT1mJiZlLnZhbHVlLnJlbW92ZUF0KGcpLGIuTm9kZVVwZGF0ZWQoZS5wYXRoLmNvbmNhdChlLmtleSxnKSxoLHZvaWQgMCksYi5SVCgiTGliIikucmVsaXN0KHgsYixhKX0pfSx1aTp7Ii5pdmFsdWUiOntkZWxheTouMDEsY3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuTGlzdC5sZW5ndGh9LG5vY29tcDpmdW5jdGlvbih4KXt2YXIgYT0wLGI9MDtyZXR1cm4gT2JqZWN0LmtleXMoeC52YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZCxlPTA7KGQ9eC52YWx1ZVtjXSkmJihlPShkLmRhdGE/ZC5kYXRhLmxlbmd0aC80KjN8MDowKXx8K2QubGVuZ3RofHwrZC5zaXplfHwwLGErPWUsYis9Kyh4LnZhbHVlW2NdLmVuY29kZWRfbGVuZ3RofHxlKSl9KSxhPT1ifX19LCIuYnRuLWpzb24iOnt9LCIuaWtleSI6e30sIi5pZGVzYyI6e2RlbGF5OjEwLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD0odGhpcy5MaXN0LGMuVHh0W3gudHlwZV0pLGU9T2JqZWN0LnNpemUoeC52YWx1ZSksZj0iIjsxPT14LnN0YXRlJiZjLlNob3dJdGVtcz9mPWMuU2hvd0l0ZW1zOihmPWRbMF0rZStkWzFdKyIgIiwyPT14LnN0YXRlJiYoZj0nPHNwYW4gY2xhc3M9Im80MCI+JytmKyI8L3NwYW4+IikpO3ZhciBnPTAsaD0wO3JldHVybiBPYmplY3Qua2V5cyh4LnZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiLGM9MDsoYj14LnZhbHVlW2FdKSYmKGM9KGIuZGF0YT9iLmRhdGEubGVuZ3RoLzQqM3wwOjApfHwrYi5sZW5ndGh8fCtiLnNpemV8fDAsZys9YyxoKz0rKHgudmFsdWVbYV0uZW5jb2RlZF9sZW5ndGh8fGMpKX0pLGcmJihmPVsnPGRpdiBjbGFzcz0iZGliIHZhdCBtcjUiIHN0eWxlPSJ3aWR0aDp7NH07Ij57MX08L2Rpdj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc5MCB0YXIgbzkwIj57Mn08L2Rpdj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc5MCBwbDUgdGFsIG82MCBmczk1Ij57M308L2Rpdj4nXS5qb2luKCIiKS5hc3NpZ24oZixpKGcpLGchPWg/aShoKToiIiwyPT14LnN0YXRlPzI3Mi1jLmxhYmVsV2lkdGgrInB4IjoiYXV0byIpKSxmO2Z1bmN0aW9uIGkoeCl7cmV0dXJuIHguYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIikucmVwbGFjZSgvXihbMC05XC5dKykoW2Etel0rKSQvaSwnJDE8ZGl2IGNsYXNzPSJ3MzUgZGliIHRhbCBwbDIiPiQyPC9kaXY+Jyl9fSxyZWNhbGM6WyIuaXZhbHVlIiwiLmlrZXkiLCIuaWxpc3QiXX0sIi5pbGlzdCI6e2RlbGF5Oi4wMSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5vbigiY2hhbmdlLm15IixmdW5jdGlvbigpe2EuUlQoIlJlam9pbiIpKGEuZGF0YSxhLkxpc3QpfS5kZWJvdW5jZShhLmJ1aWxkRGVsYXl8fDMwMCkpfSxiaW5kOiJ0aGlzLkxpc3QiLGxpc3Q6JzxkaXYgY2xhc3M9Imlyb3ciPjwvZGl2PicsaWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIkYiK3guaWR9LGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIkYiK3guaGFzaH0sbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuUlQoeC5tYW5pZmVzdCl8fHRoaXMuUlQoIiRmaWxlIil9fSwiI2J0bi11cGxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2IuZGF0YSgibW9kYWwiKT8oYi5tb2RhbCghMCksZCgpKTooYi5wYXJlbnQoKS5hZGRDbGFzcygiaG92ZXIiKSxjLm15Lm1vZGFsKCIjYnRuLXVwbG9hZCIse21hbmlmZXN0OmMuQWRkLGRhdGE6e30sd2lkdGg6NTAwLGFsaWduOiJ0b3A6MTAzJSwgcmlnaHQ6LTM4cHg7Iixub3NlOiJ0b3AifSkudGhlbihmdW5jdGlvbihhKXt2YXIgYj1PYmplY3QuY2xvbmUoeC52YWx1ZSwhMCk7YS5maWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3gudmFsdWVbYS5uYW1lXT1PYmplY3Quc2VsZWN0KGEsWyJjb250ZW50X3R5cGUiLCJkYXRhIl0pfSksYy5Ob2RlVXBkYXRlZCh4LnBhdGguY29uY2F0KHgua2V5KSxiLE9iamVjdC5jbG9uZSh4LnZhbHVlLCEwKSkseC5zdGF0ZT0yLGMuTGlzdD1jLk1ha2VMaXN0KHgpLGMubXkucmVkcmF3KCl9KS5hbHdheXMoZnVuY3Rpb24oKXtkKCl9KSl9ZnVuY3Rpb24gZCgpe2IucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhvdmVyIil9fX0sIiNidG4tYjY0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXM7Yi5SVCgiR2V0QXR0cyIpKCkudGhlbihmdW5jdGlvbigpe2IubXkucmVkcmF3KCl9KX19fX0sc3R5bGU6eyI+Lml2YWx1ZT4uaWxpc3Q+Lmlyb3ciOmZ1bmN0aW9uKCl7dmFyIHg9MjUwLGE9eC0yNztyZXR1cm57IiAuaW5hdiI6InBhZGRpbmctbGVmdDoiK2ErInB4OyIsIiAuaW5hdj4uaWtleSI6Im1hcmdpbi1sZWZ0Oi0iK2ErInB4O3dpZHRoOiIrYSsicHg7IiwiPi5pbmF2IjoicGFkZGluZy1sZWZ0OiIreCsicHg7IiwiPi5pbmF2Pi5pa2V5IjoibWFyZ2luLWxlZnQ6LSIreCsicHg7d2lkdGg6Iit4KyJweDsiLCIgLmlrZXkiOiJjdXJzb3I6bm9ybWFsOyIsIiAuaWFjdCAuYnV0dG9uIjoicGFkZGluZzogMC4xNWVtIDAgMC4wNWVtIDA7IiwiIC5pZGVzYz5kaXYiOiJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyJ9fSwiIC5pdmFsdWUgLmluYXYiOiJtYXJnaW46MDsiLCIgLm5vY29tcCAuc2l6ZWNvbXAiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyJ9LEhUTUw6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXRyZWUiPjwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIGNwIiB0aXRsZT0iRWRpdCBhcyByYXcgSlNPTiI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iaWVkaXRvciI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGlkPSJidG4tYjY0IiBjbGFzcz0iYnV0dG9uIiB0aXRsZT0iTG9hZCBhdHRhY2htZW50c+KAmSBiYXNlNjQiIHN0eWxlPSJ3aWR0aDo3NHB4OyI+PHNwYW4gY2xhc3M9ImZpLWFyY2hpdmUgbXI0IG1sMSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmczg1IGxoMTIwIGRpYiB2YXQiPmJhc2U2NDwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tanNvbiBidXR0b24gaGlkZSIgdGl0bGU9IkVkaXQgYXMgSlNPTiI+PHNwYW4gY2xhc3M9ImJvbGQgZGliIHZhdCBtdC0xIG1iMSI+eyYjODIwMjt9PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi11cGxvYWQiIGNsYXNzPSJidXR0b24iIHRpdGxlPSJBZGQgYXR0YWNobWVudCI+PHNwYW4gY2xhc3M9ImZpLXBhcGVyY2xpcCI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgYnV0dG9uIHJlZCIgIHRpdGxlPSJEZWwgYWxsIGF0dGFjaG1lbnRzIj4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS10cmFzaCI+PC9zcGFuPiZ0aGluc3A7PC9idXR0b24+PC9kaXY+JyxOb2RlVXBkYXRlZDpmdW5jdGlvbigpe30sQWRkOntsYW5nOnt9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczskLmV4dGVuZChhLmxhbmcsYS5QaG8oImxhbmciKS4kZG9jKSx4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKX0sZGF0YTp7ZmlsZXM6W119LHVpOnsiI2ZsaXN0Ijp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3RyeXthLlBobygibmljZVNjcm9sbCIpKHgpfWNhdGNoKHgpe319LGJpbmQ6ImZpbGVzIixsaXN0OiI+ZGl2IixtZXJnZTohMSxpZDpbIm5hbWUiXSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC5uYW1lLHguY29udGVudF90eXBlLHguZGF0YS5sZW5ndGgseC5kYXRhLnRvKDIwMCldKX0sbWFuaWZlc3Q6e3VpOnsiI2ZuYW1lIjoibmFtZSIsIiNmc2l6ZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4oeC5kYXRhLmxlbmd0aC80KjN8MCkuYnl0ZXMoMSkucmVwbGFjZSgvXihbMC05XC5dKykoW2Etel0rKSQvaSwnJDE8ZGl2IGNsYXNzPSJ3MjUgZGliIHRhbCBwbDIiPiQyPC9kaXY+Jyl9LCIjZnR5cGUiOiJjb250ZW50X3R5cGUiLCIjYnRuLWZkZWwiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5yZW1vdmUoKX0sZXZlbnRzOiJjbGljay5teSJ9fX19LCIjYnRuLWF0dGFkZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNvbW1pdCgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiF4LmZpbGVzLmxlbmd0aH19LHdhdGNoOiIjZmxpc3QifSwiI2J0bi1hdHRjYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX0sIiNtdXBsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9YSYmYSl7Zm9yKHZhciBjPXRoaXMsZD1iWzBdLmZpbGVzLGU9W10sZj14LmZpbGVzLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2EubmFtZV09YSx4fSx7fSksZz1bXSxoPTA7aDxkLmxlbmd0aDtoKyspZS5wdXNoKGRbaF0pO2UuZm9yRWFjaChmdW5jdGlvbih4LGEpe2lmKHgpe3ZhciBiLGMsZD17bmFtZTp4Lm5hbWUsY29udGVudF90eXBlOngudHlwZXx8ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9LGU9JC5EZWZlcnJlZCgpLGg9bmV3IEZpbGVSZWFkZXIsaT1bXTtoLm9ubG9hZD1mdW5jdGlvbihhKXtjPW5ldyBVaW50OEFycmF5KGEudGFyZ2V0LnJlc3VsdCk7Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspaS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY1tnXSkpO2I9d2luZG93LmJ0b2EoaS5qb2luKCIiKSksZC5kYXRhPWIsZlt4Lm5hbWVdPWQsZS5yZXNvbHZlKCl9LGgucmVhZEFzQXJyYXlCdWZmZXIoeCksZy5wdXNoKGUucHJvbWlzZSgpKX19KSxRLmFsbFNldHRsZWQoZykudGhlbihmdW5jdGlvbigpe3guZmlsZXM9T2JqZWN0LnZhbHVlcyhmKSxiLndyYXAoIjxmb3JtPiIpLmNsb3Nlc3QoImZvcm0iKS5nZXQoMCkucmVzZXQoKSxiLnVud3JhcCgiZm9ybSIpLGMubXkucmVjYWxjKCIjZmxpc3QiKSxjLm15LmNoZWNrKCIjbXVwbG9hZCIpfS5kZWJvdW5jZSgwKSkudGhlbihmdW5jdGlvbigpe2MubXkuZmluZCgiI2J0bi1hdHRhZGQiKS5mb2N1cygpfS5kZWJvdW5jZSgxMDApKX19LGNzczp7InNlbGY6aDEwMCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5maWxlcy5sZW5ndGg8PTN9LCJzZWxmOmg0MCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5maWxlcy5sZW5ndGg+M319LHdhdGNoOlsiI2ZsaXN0Il19LCIjeHVwbG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmxhbmc7cmV0dXJuIHguZmlsZXMubGVuZ3RoPjM/JzxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG8zMCBtcjIgZnMxMTAiPjwvc3Bhbj4gJytiLlRYVF9BRERNT1JFOic8c3BhbiBjbGFzcz0iZmktYXJjaGl2ZSBvMzAgZnMzMDAiPjwvc3Bhbj48YnI+JytiLlRYVF9BRERGSUxFU30sY3NzOnsiaDEwMCBwdDE2IHRhYyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5maWxlcy5sZW5ndGg8PTN9LCJoNDAgcHQxMCBwbDEwIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmZpbGVzLmxlbmd0aD4zfX0sd2F0Y2g6WyIjbXVwbG9hZCIsIiNmbGlzdCJdfX0sSFRNTDonPGRpdiBjbGFzcz0iZnMxMzAgbGgxNjAgYm9sZGVyIj57VFhUX0RMR0FERH08L2Rpdj48ZGl2IGlkPSJmbGlzdCIgY2xhc3M9ImZzOTUiIHN0eWxlPSJtYXgtaGVpZ2h0OjQwdmg7Ij48ZGl2IGNsYXNzPSJmcm93IG10MiBtYjQiPjxkaXYgaWQ9ImJ0bi1mZGVsIiBjbGFzcz0icmVkMiB3MjAgZGliIHZhdCBwdDMgY3AiPuKclTwvZGl2PjxkaXYgY2xhc3M9IncyODAgZGliIHZhdCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJ3MTAwcCIgaWQ9ImZuYW1lIiBwbGFjZWhvbGRlcj0iRmlsZSBwYXRoL25hbWUuZXh0Ij48L2Rpdj48ZGl2IGlkPSJmc2l6ZSIgY2xhc3M9Inc3MCBkaWIgdmF0IHB0MyBncmF5IHRhciBmczkwIj48L2Rpdj48ZGl2IGlkPSJmdHlwZSIgY2xhc3M9IncxMzAgZGliIHZhdCBwdDMgZ3JheSBudyBlbGwgZnM5MCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibXQzIG1iMTAiPjxpbnB1dCBpZD0ibXVwbG9hZCIgdHlwZT0iZmlsZSIgbXVsdGlwbGUgY2xhc3M9ImgxMDAgdzEwMHAgY3AiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7b3BhY2l0eTowOyI+PGRpdiBpZD0ieHVwbG9hZCIgY2xhc3M9ImgxMDAgcHQxNiB3MTAwcCB0YWMgdzEwMHAgYmctZ3JheTQgYnIyIHRyYW5zIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJtdDUgcHQxMCBidGQiPjxidXR0b24gaWQ9ImJ0bi1hdHRhZGQiIGNsYXNzPSJtYXJrZm9jdXMgZ3JlZW4gbXIyIj57QlROX0FUVEFDSH08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tYXR0Y2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj48L2Rpdj4nLHN0eWxlOnsiIC50cmFucyI6InBvaW50ZXItZXZlbnRzOiBub25lOyJ9fX0sJGZpbGU6e2lkOiJTeXMuSlNPTi5GaWxlIixkYXRhOnt9LHBhcmFtczp7ZGVsYXk6MH0sTGlzdDpbXSxDTToiamF2YXNjcmlwdCIscmV2OiIiLGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhO3guYWRkQ2xhc3MoImVkLW5vZGUtIitiLlBhdGhTaWcoYy5wYXRoLGMua2V5KSkseC5odG1sKGIuSFRNTC5hc3NpZ24oe2lkZXNjOmIuaWRlc2MoYyl9KSksYi5yZXY9Yi5SVCgiTVJvb3QiKSgpLm15KCJkYXRhIikucmV2fSxTaG93SXRlbXM6bnVsbCxpZGVzYzpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9eC52YWx1ZSxjPXtzaXplOmQoKGIuZGF0YT9iLmRhdGEubGVuZ3RoLzQqM3wwOjApfHwrYi5sZW5ndGh8fCtiLnNpemV8fDApLHNpemV4OmIuZW5jb2RlZF9sZW5ndGg/ZCgrYi5lbmNvZGVkX2xlbmd0aCk6IiIsbWltZTooYi5jb250ZW50X3R5cGV8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKS5lc2NhcGVIVE1MKCkscmV2cG9zOmIuZGlnZXN0JiZudWxsIT1iLnJldnBvcz8icjogICIrYi5yZXZwb3M6YS5IVE1MbmV3fTtyZXR1cm4gYS5IVE1Mcm93LmFzc2lnbihjKTtmdW5jdGlvbiBkKHgpe3JldHVybiB4LmJ5dGVzKDEpLnJlcGxhY2UoL14oWzAtOVwuXSspKFthLXpdKykkL2ksJyQxPGRpdiBjbGFzcz0idzM1IGRpYiB0YWwgcGwyIj4kMjwvZGl2PicpfX0sdWk6eyIuaWtleSI6e2RlbGF5OjAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXMsYz1lbmNvZGVVUklDb21wb25lbnQsZD1iLlUudGFnRW1vamksZT0oL14ofFxzKykkLy50ZXN0KHgua2V5KT8nIicreC5rZXkrJyInOngua2V5LnRydW5jYXRlKDUwLC9cLy8udGVzdCh4LmtleSk/ImxlZnQiOiJtaWRkbGUiLCLigKYiKSkucmVwbGFjZSgvXC8vZywi4oCJL+KAiSIpLmVzY2FwZUhUTUwoKTtpZihlPWQoZSksbnVsbD09eC52YWx1ZS5yZXZwb3MpcmV0dXJuIGU7dmFyIGY9Yi5SVCgiZGF0YSIpLGc9Zi5kb2MuX2lkfHwiIixoPWYuZG9jLl9yZXY/KFtmLmJhc2V1cmwucmVwbGFjZSgvXC8kLywiIiksYyhmLmRibmFtZSksZy5zdGFydHNXaXRoKCJfZGVzaWduLyIpPyJfZGVzaWduLyIrYyhnLmZyb20oOCkpOmMoZykseC5rZXldLmpvaW4oIi8iKSsodGhpcy5yZXY/Ij9yZXY9Iit0aGlzLnJldjoiIikpLmVzY2FwZUhUTUwoKToiIjtyZXR1cm4gZi5kb2MuX3Jldj8nPGEgaHJlZj0iezF9IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiI+ezJ9PC9hPicuYXNzaWduKGgsZSk6ZX19fSwiI2J0bi1kb3dubG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPXgudmFsdWUucmV2cG9zKXt2YXIgYz10aGlzLlJUKCJkYXRhIiksZD1lbmNvZGVVUklDb21wb25lbnQ7Yi5hdHRyKCJkb3dubG9hZCIseC5rZXkuc3BsaXQoIi8iKS5sYXN0KCkpLGIuYXR0cigiaHJlZiIsW2MuYmFzZXVybC5yZXBsYWNlKC9cLyQvLCIiKSxkKGMuZGJuYW1lKSxkKGMuZG9jLl9pZCkseC5rZXldLmpvaW4oIi8iKSsodGhpcy5yZXY/Ij9yZXY9Iit0aGlzLnJldjoiIikpfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT14LnZhbHVlLnJldnBvc319fSwiI2J0bi1maWxlZGl0Ijp7YmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9eC52YWx1ZS5yZXZwb3Mpe3ZhciBjPXRoaXMuUlQoImRhdGEiKSxkPWVuY29kZVVSSUNvbXBvbmVudDtiLmF0dHIoImhyZWYiLFsiIyIrZChjLmRibmFtZSksZChjLmRvYy5faWQpLGQoeC5rZXkpXS5qb2luKCIvIikpfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3ZhciBiPXgudmFsdWUuY29udGVudF90eXBlO3JldHVybiBudWxsPT14LnZhbHVlLnJldnBvc3x8dGhpcy5yZXZ8fCEoL150ZXh0XC8uKi8udGVzdChiKXx8L1wvKGpzb258amF2YXNjcmlwdHx4bWx8c3ZnKS8udGVzdChiKSl9fX19LEhUTUxyb3c6JzxkaXYgY2xhc3M9Inc5MCB0YXIgbzkwIHNpemVmdWxsIj57c2l6ZX08L2Rpdj48ZGl2IGNsYXNzPSJ3OTAgcGw1IHRhbCBvNjAgZnM5NSBzaXplY29tcCI+e3NpemV4fTwvZGl2PjxkaXYgY2xhc3M9IncyMDAgcHIxMCBudyBlbGwgbzYwIGZzOTUiPnttaW1lfTwvZGl2PjxkaXYgY2xhc3M9Im82MCBwdDIgZnM5NSI+e3JldnBvc308L2Rpdj4nLEhUTUxuZXc6JzxzcGFuIGNsYXNzPSJmaS1idXJzdC1uZXcgb3JhbmdlIG1sLTMiPiBOZXc8L3NwYW4+JyxIVE1MOic8ZGl2IGNsYXNzPSJpbmF2Ij48ZGl2IGNsYXNzPSJpa2V5IHhncmF5IGZzMTAwIj57aWtleX08L2Rpdj48ZGl2IGNsYXNzPSJpZGVzYyB3NDUwIj57aWRlc2N9PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGNsYXNzPSJidG4tdGFrZW91dCBidXR0b24iIHRpdGxlPSJWaWV3IGFzIEpTT04iPjxzcGFuIGNsYXNzPSJmaS1zaG9wcGluZy1iYWcgZnM5NSI+PC9zcGFuPjwvYnV0dG9uPjxhIGlkPSJidG4tZmlsZWRpdCIgY2xhc3M9ImJ1dHRvbiBmczkwIHZhdCBwdDMgcGIwIGhpZGUiIHRpdGxlPSJFZGl0IGF0dGFjaG1lbnQiPjxzcGFuIGNsYXNzPSJmaS1wZW5jaWwiPjwvc3Bhbj48L2E+PGEgaWQ9ImJ0bi1kb3dubG9hZCIgY2xhc3M9ImJ1dHRvbiBmczkwIHZhdCIgdGl0bGU9IkRvd25sb2FkIGZpbGUiIGRvd25sb2FkPSIgIj48c3BhbiBjbGFzcz0iZmktZG93bmxvYWQiPjwvc3Bhbj48L2E+PGJ1dHRvbiBjbGFzcz0iYnRuLWRlbCBidXR0b24gcmVkIHZhdCIgIHRpdGxlPSJEZWwgbm9kZSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2ggZnM5NSI+PC9zcGFuPiZ0aGluc3A7PC9idXR0b24+PC9kaXY+J319LGpzb250ZXh0Ont9fSwkYWJvdXQ6e2lkOiJjdy5QaG90b24uJGFib3V0IixwYXJhbXM6e3Jlc3R5bGU6MjAsc3RyaWN0OiEwfSxpbmhlcml0OlsiU2V0VGhlbWUiXSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuImFib3V0In0sdGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iQWJvdXQgdGhpcyBub2RlIn0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYXx8MSE9eC5sZW5ndGh8fCJfYWJvdXQiIT14WzBdP251bGw6e3RpdGxlOiJBYm91dCJ9fSxsYW5nOnt9LEpTT046ITEsQmxvYjohMSxVcmw6ITEsZGF0YTp7cGhvdG9uOnt9LHNlcnZpY2U6e2NvdWNoZGI6Ik5vIG1lc3NhZ2UiLHZlcnNpb246Ij8/Iix2ZW5kb3I6e25hbWU6InVua25vd24iLHZlcnNpb246IiIsdmFyaWFudDoiIn0sZmVhdHVyZXM6W119LGRkb2M6e30sY2ZnOnttYXhXaWR0aDoiMjAwMCIsc2Nyb2xsU3BlZWQ6IjMiLGxpc3RDb2xzOltdLHJvb3RSZXBvOiIiLHVwZGF0ZToicmVtaW5kIixmb250OiJhdXRvIixmb250V2VpZ2h0OiIzMDAiLGZvbnRDb2RlOiJhdXRvIixpY29uOiIiLG1heFRhYnM6MTUsbG9vcEFjdGl2ZVRhc2tzOjUscGluZ1Nlc3Npb246MCxncm91cGluZzpbXSx0aGVtZToiIn19LExpbms6JzxhIGhyZWY9InsxfSIgdGFyZ2V0PSJfYmxhbmsiIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIgY2xhc3M9InRkbiBudyBtbDQiPnsyfTwvYT4nLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPSQuRGVmZXJyZWQoKTtyZXR1cm4gYS5Vcmw9YS5QaG8oKS5Eb3dubG9hZFVSTCwkLmV4dGVuZCghMCxhLmRhdGEuY2ZnLGEuUGhvKCJDZmciKSksWyIvL3MzLWV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2Nkbi5jbG91ZHdhbGwubWUvcGhvdG9uLyJdLmluZGV4T2YoYS5kYXRhLmNmZy5yb290UmVwbyk+LTEmJihhLmRhdGEuY2ZnLnJvb3RSZXBvPSJodHRwczovL2Nkbi5jbG91ZHdhbGwubWUvcGhvdG9uLyIpLGEucmVsb2FkREJMaXN0PWEucmVsb2FkREJMaXN0LmRlYm91bmNlKDUwMCksYS5SZXEoe3VybDpbXSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbih4KXskLmV4dGVuZCghMCxhLmRhdGEuc2VydmljZSx4KX0pLmFsd2F5cyhmdW5jdGlvbigpe3guaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKS5hc3NpZ24oYS5sYW5nKSksYS5uaWNlU2Nyb2xsKHguZmluZCgiI2FhbGwiKSksYi5yZXNvbHZlKCl9KSxiLnByb21pc2UoKX0sdWk6eyIjYXBobyI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QaG8oIlZlcnNpb24iKS5yZXBsYWNlKC9bXjAtOVwuXS9nLCIiKX0sIiNhcGhvYnVpbGQiOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguUGhvKCJidWlsZCIpLGI9RGF0ZS5jcmVhdGUoeC5QaG8oInN0YW1wIil8fERhdGUubm93KCkpLmZvcm1hdCgie3l5eXl9LXtNTX0te2RkfSIpO3JldHVybiBhPyh3aW5kb3cuRERPQyYmd2luZG93LkRET0MudmVyc2lvbnMmJndpbmRvdy5ERE9DLnZlcnNpb25zLmxpbmVzKClbMF0ucmVwbGFjZSgvW15cLlxkXS9nLCIiKSE9eC5QaG8oIlZlcnNpb24iKS5yZXBsYWNlKC9bXjAtOVwuXS9nLCIiKSsiLiIrYSYmKGErPSImYmV0YTsiKSwnPHNwYW4gY2xhc3M9ImdyYXkiPkJ1aWxkICcrYSsiLCAiK2IrIjwvc3Bhbj4iKToiIn0sIiNhcGhvYWRkIjpmdW5jdGlvbigpe3ZhciB4PSh3aW5kb3cuRERPQ3x8e2FwcHM6e2VkOntpZDoiY3cuU3lzLkpTT04ifX19KS5hcHBzLGE9W107cmV0dXJuIE9iamVjdC5rZXlzKHgpLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGM9eFtiXTtjLmlkJiYhYy5pZC5zdGFydHNXaXRoKCJjdy5QaG90b24iKSYmYS5wdXNoKFsoYy5uYW1lfHxjLmlkKSsiwqAiLGMuVmVyc2lvbnx8Yy52ZXJzaW9ufHxudWxsLGMuYnVpbGQ/Ii4iK2MuYnVpbGQ6bnVsbF0uY29tcGFjdCgpLmpvaW4oIiIpKX0pLGEuam9pbigiPGJyPiIpfSwiI2FwaG9saWJzIjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiTGlic1VzZWQiKTtyZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBhW2JdP3guTGluay5hc3NpZ24oYVtiXSxiKTonPHNwYW4gY2xhc3M9InRkbiBudyBtbDQiPicrYisiPC9zcGFuPiJ9KS5qb2luKCIsICIpfSwiI2J0bi1zaG93bGlicyI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJihiLmFkZENsYXNzKCJoaWRlIiksYi5uZXh0KCkucmVtb3ZlQ2xhc3MoImhpZGUiKSl9LGV2ZW50czoiY2xpY2subXkifSwiI2J0bi1zaG93aGlzdCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hJiZ3aW5kb3cuRERPQyYmd2luZG93LkRET0MudmVyc2lvbnMpe3ZhciBiPXRoaXMsYz1iLmxhbmc7JC5teS5tb2RhbCh7bWFuaWZlc3Q6Yi5QaG8oIkNvbmZpcm0iKSxkYXRhOnt0ZXh0OmMuVFhUX1BIT0hJU1QuYXNzaWduKGIuUmVuZGVyTmV3cyh3aW5kb3cuRERPQy52ZXJzaW9ucywwLCEwKSkseWVzOiIiLG5vOiIiLGNhbmNlbDoiQ2xvc2UiLHVzZUJ1dHRvbnM6ITB9LHdpZHRoOjQ1MCxjc3M6InAyMCB4Z3JheSBsaDE3MCIsZm9jdXM6IiNidG4tY2FuY2VsIixjbG9zZTohMSxlc2M6ITB9KX19fSwiI2FwaG9mb250cyI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5QaG8oIkZvbnRzVXNlZCIpO3JldHVybiBPYmplY3Qua2V5cyhhKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGFbYl0/eC5MaW5rLmFzc2lnbihhW2JdLGIpOic8c3BhbiBjbGFzcz0idGRuIG53IG1sNCI+JytiKyI8L3NwYW4+In0pLmpvaW4oIiwgIil9LCIjYXZlciI6InNlcnZpY2UudmVyc2lvbiIsIiNhdmVuZG9yIjpmdW5jdGlvbih4KXt2YXIgYT14LnNlcnZpY2UudmVuZG9yO3JldHVybihhLm5hbWUrIiAiK2EudmVyc2lvbisoYS52YXJpYW50PyIgKCIrYS52YXJpYW50KyIpIjoiIikpLmVzY2FwZUhUTUwoKX0sIiNhbm9kZSI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5QaG8oIkJhc2UiKTtyZXR1cm4nPGEgaHJlZj0iezF9IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiI+ezJ9IHszfTwvYT4nLmFzc2lnbihhLCc8c3BhbiBjbGFzcz0iZnM5MCAnKygvXmh0dHBzOi8udGVzdChhKT8iZmktbG9jayBibHVlMiI6ImZpLXVubG9jayByZWQyIikrJyI+PC9zcGFuPicsYS5yZXBsYWNlKC9eaHR0cFtzXT86XC9cL3xcLy9nLCIiKS5lc2NhcGVIVE1MKCkpfSwiI2Fsb2dzIjp7Y3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbigpe3JldHVybiB0aGlzLlBobygiQ291Y2giKS52ZXI+PSIwMDIuInx8IWN3Lm1lKCJyb2xlcyIpLmZpbmQoIl9hZG1pbiIpfX19LCIjYXdlbGNvbWUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LnNlcnZpY2UuY291Y2hkYi5lc2NhcGVIVE1MKCl9LCIjYWZlYXR1cmVzIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9eC5zZXJ2aWNlLmZlYXR1cmVzO3JldHVybiBPYmplY3QuaXNBcnJheShjKSYmYy5sZW5ndGg/KGIucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhpZGUiKSx4LnNlcnZpY2UuZmVhdHVyZXMuam9pbigiLCAiKS5lc2NhcGVIVE1MKCkpOihiLnBhcmVudCgpLmFkZENsYXNzKCJoaWRlIiksIuKAlCIpfX0sIiNhc3dlcnMiOntjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGhvKCJDb3VjaCIpLnZlcjwiMDAzLjAwMyJ8fCFjdy5tZSgicm9sZXMiKS5maW5kKCJfYWRtaW4iKX19fSwiI2FjbHVzdGVyIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5QaG8oIk1lbWJlcnNoaXAiKS5jbHVzdGVyX25vZGVzfHxbXTtyZXR1cm4gYi5wYXJlbnQoKS50b2dnbGVDbGFzcygiaGlkZSIsYy5sZW5ndGg8MiksYy5sZW5ndGg/dGhpcy5sYW5nLlRYVF9DTFVTVEVSKGMubGVuZ3RoKToi4oCUIn19LCIjYXBlcmZ0ZXN0Ijp7YmluZDpmdW5jdGlvbih4LGEsYil7bnVsbD09YSYmYi5hdHRyKCJocmVmIix3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLnJlcGxhY2UoL2luZGV4Lmh0bWwkLywiIikucmVwbGFjZSgvXC8kLywiIikrIi9wZXJmdGVzdC5odG1sIil9LGNzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLlBobygiX2NvbXBpbGVkIil8fC0xPT0oY3cubWUoInJvbGVzIil8fFtdKS5pbmRleE9mKCJfYWRtaW4iKX19fSwiI2hpZGVjb3VjaGFwcCI6e2Nzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLlBobygiX2NvbXBpbGVkIil8fC0xPT0oY3cubWUoInJvbGVzIil8fFtdKS5pbmRleE9mKCJfYWRtaW4iKX19fSwiI2J0bi1hZGwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpczskLm15Lm1vZGFsKHttYW5pZmVzdDokLmV4dGVuZCghMCx7bGFuZzpiLmxhbmcsUGhvOmIuUGhvLFJlcTpiLlJlcX0sYi5Eb3dubG9hZCksZGF0YTp7fSxnbG9iYWw6ITAsc2NyZWVuOiEwLGVzYzohMCxlbnRlcjohMCxjc3M6InAyNSB0YWMiLGNsb3NlOmIuUGhvKCJsYW5nIikuQlROX1hETEcsd2lkdGg6MzAwfSl9fSxldmVudHM6ImNsaWNrLm15In0sIiNzZm9udCI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5zZWxlY3QyKHgse2RhdGE6W3tpZDoiYXV0byIsdGV4dDoiQXV0byJ9LHtpZDoiJy1hcHBsZS1zeXN0ZW0nLCdCbGlua01hY1N5c3RlbUZvbnQnIix0ZXh0OiJBcHBsZSBzeXN0ZW0gZm9udCJ9LHtpZDoiJ1NlZ29lIFVJJyIsdGV4dDoiU2Vnb2UgVUkifSx7aWQ6IidIZWx2ZXRpY2EgTmV1ZScsSGVsdmV0aWNhIix0ZXh0OiJIZWx2ZXRpY2EifSx7aWQ6IlVidW50dSIsdGV4dDoiVWJ1bnR1In0se2lkOiJUYWhvbWEiLHRleHQ6IlRhaG9tYSJ9LHtpZDoiQ291c2luZSIsdGV4dDoiQ291c2luZSAobW9ub3NwYWNlZCkifV0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0sYmluZDoiY2ZnLmZvbnQifSwiI3N0aGVtZSI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfVEhFTUUpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGw9PWE/W3guY2ZnLnRoZW1lKyIiXTooeC5jZmcudGhlbWUhPWErIiImJih4LmNmZy50aGVtZT1hKyIiLHRoaXMuU2V0VGhlbWUuZGVsYXkoNSxhKyIiKSksYSl9fSwiI3Nmd2VpZ2h0Ijp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19GV0VJR0hUKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT1hP1t4LmNmZy5mb250V2VpZ2h0KyIiXTooeC5jZmcuZm9udFdlaWdodD1hKyIiLGEpfX0sIiNzY2ZvbnQiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuc2VsZWN0Mih4LHtkYXRhOlt7aWQ6ImF1dG8iLHRleHQ6IkF1dG8ifSx7aWQ6IkNvdXNpbmUiLHRleHQ6IkNvdXNpbmUifSx7aWQ6Ik1vbmFjbyIsdGV4dDoiTW9uYWNvIn0se2lkOiJDb25zb2xhcyIsdGV4dDoiQ29uc29sYXMifSx7aWQ6IkZpcmEgQ29kZSIsdGV4dDoiRmlyYSBDb2RlIn1dLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ImNmZy5mb250Q29kZSJ9LCIjc2NvbHMiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh7dGFnczp0aGlzLmxhbmcuVEFHX0NPTFN9KX0sYmluZDoiY2ZnLmxpc3RDb2xzIixjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIWN3Lm1lKCl9fX0sIiNzZ3JvdXAiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX0dST1VQKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiZhKyIiIT14LmNmZy5ncm91cGluZysiIiYmKHguY2ZnLmdyb3VwaW5nPWEsdGhpcy5yZWxvYWREQkxpc3QoKSkseC5jZmcuZ3JvdXBpbmd9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hY3cubWUoKX19fSwiI3NzY3JvbGwiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncygkLmV4dGVuZCh7dGFnc2hpbToiIixncm91cHNoaW06IiJ9LHRoaXMubGFuZy5UQUdfU0NST0xMKSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguY2ZnLnNjcm9sbFNwZWVkPWErIiJ8fCIyIiksW3guY2ZnLnNjcm9sbFNwZWVkKyIiXX0sY3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuUGhvKCJfY29tcGlsZWQiKXx8dGhpcy5QaG8oImlPUyIpfHx0aGlzLlBobygiaXNNYWMiKXx8dGhpcy5QaG8oImlzV2ViS2l0Iil9fX0sIiNzcGluZyI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKCQuZXh0ZW5kKHt0YWdzaGltOiIiLGdyb3Vwc2hpbToiIn0sdGhpcy5sYW5nLlRBR19QSU5HKSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguY2ZnLnBpbmdTZXNzaW9uPSsoYSsiIil8fDApLFt4LmNmZy5waW5nU2Vzc2lvbisiIl19fSwiI3Nwb2xsIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5jZmcubG9vcEFjdGl2ZVRhc2tzPWlzTmFOKGEpfHwiIj09YT81OigwfCthKS5jbGFtcCgxLDM2MDApKSx4LmNmZy5sb29wQWN0aXZlVGFza3MrIiJ9LGV2ZW50czpbImJsdXIubXkiXSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIWN3Lm1lKCl9fX0sIiNzdGF0c3BvbGwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LmNmZy5zdGF0c1JlZnJlc2g9aXNOYU4oYSl8fCIiPT1hPzEwOigwfCthKS5jbGFtcCg1LDEyMCkpLHguY2ZnLnN0YXRzUmVmcmVzaCsiIn0sZXZlbnRzOlsiYmx1ci5teSJdLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hY3cubWUoKX19fSwiI3NyZXBvIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5jZmcucm9vdFJlcG89YS5yZXBsYWNlKC9ccy9nLCIiKSkseC5jZmcucm9vdFJlcG99LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hdGhpcy5QaG8oIl9jb21waWxlZCIpfHwhKCF3aW5kb3cuRERPQ3x8IXdpbmRvdy5ERE9DLnNldHRpbmdzLnJvb3RSZXBvKXx8IWN3Lm1lKCl9fX0sIiNzdXBkIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3MoJC5leHRlbmQoITAse30sdGhpcy5sYW5nLlRBR19VUEQse3RhZ3NoaW06IiIsZ3JvdXBzaGltOiIifSkpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LmNmZy51cGRhdGU9YSsiInx8InJlbWluZCIpLFt4LmNmZy51cGRhdGUrIiJdfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIWN3Lm1lKCl9fX0sIiNzaWNvbiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5jZmcuaWNvbj94LmNmZy5pY29uOnRoaXMuUGhvKCJmaWxlcyIpWyJmYXZpY29uLnBuZyJdLnVybH0sd2F0Y2g6WyIjYnRuLXJlc2V0aWNvbiJdfSwiI2J0bi1zZXRpY29uIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz0kKCJib2R5IiksZD0idGhlbWUtZGFyayIsZT1jLmhhc0NsYXNzKGQpO2MucmVtb3ZlQ2xhc3MoZCksYi5teS5tb2RhbCgiI2J0bi1zZXRpY29uIix7bWFuaWZlc3Q6Yi5Dcm9wcGVyLHNjcmVlbjoicmdiYSgxMCwyMCwzMCwwLjk3KSIsZ2xvYmFsOiEwLGNzczoicDI1In0pLnRoZW4oZnVuY3Rpb24oYSl7eC5jZmcuaWNvbj1hLmRhdGEsYi5teS5jaGVjaygiI3NpY29uIil9KS5hbHdheXMoZnVuY3Rpb24oKXtjLnRvZ2dsZUNsYXNzKGQsZSl9KX19LGV2ZW50czoiY2xpY2subXkiLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlBobygiX2NvbXBpbGVkIil8fCEoIXdpbmRvdy5ERE9DfHwhd2luZG93LkRET0Muc2V0dGluZ3MuaWNvbil8fCFjdy5tZSgpfX0sd2F0Y2g6WyIjc3RoZW1lIl19LCIjYnRuLXJlc2V0aWNvbiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYoeC5jZmcuaWNvbj0iIil9LGV2ZW50czoiY2xpY2subXkiLHdhdGNoOlsiI3N0aGVtZSJdLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlBobygiX2NvbXBpbGVkIil8fCEoIXdpbmRvdy5ERE9DfHwhd2luZG93LkRET0Muc2V0dGluZ3MuaWNvbil8fCFjdy5tZSgpfX19LCIjc3Byb3h5Ijp7ZGVsYXk6MjAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXt2YXIgYj10aGlzOyQuZXh0ZW5kKGIuUGhvKCJDZmciKSx4LmNmZyksYi5QaG8oIl9jb21waWxlZCIpJiYoYi5QaG8oIkxzIikoIkNmZyIseC5jZmcpLCQubmljZXNjcm9sbC5vcHRpb25zLm1vdXNlc2Nyb2xsc3RlcD0yMCooK2IuQ2ZnLnNjcm9sbFNwZWVkfHwwKS5jbGFtcCgyLDEwKSwkKCdsaW5rW3JlbD0iaWNvbiJdJykuYXR0cigiaHJlZiIseC5jZmcuaWNvbnx8Yi5QaG8oImZpbGVzIilbImZhdmljb24ucG5nIl0udXJsKSksJCh3aW5kb3cpLnRyaWdnZXIoInJlc2l6ZSIpLCQubXkucmFkaW8oInBob3Rvbl9jZmdfY2hhbmdlIixPYmplY3QuY2xvbmUoeC5jZmcsITApKX19LHdhdGNoOlsiI3NyZXBvIiwiI3N1cGQiLCIjc3RoZW1lIiwiI3Nmb250IiwiI3NjZm9udCIsIiNzZndlaWdodCIsIiNzd2lkdGgiLCIjc3BvbGwiLCIjc3RhdHNwb2xsIiwiI3NpY29uIiwiI2J0bi1yZXNldGljb24iLCIjc2NvbHMiLCIjc2dyb3VwIiwiI3NzY3JvbGwiLCIjc2JhciIsIiNzcGluZyJdLGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe09iamVjdC5pc09iamVjdChhKSYmJC5teS5yYWRpbygicmVsb2FkIix7aWQ6eC50YWJpZCxwYXRoOngucGF0aH0pfX19LCIjYXVwZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYixjLGQsZT10aGlzLGY9ZS5QaG8oIkNmZyIpLnJvb3RSZXBvLGc9ZS5sYW5nLGg9e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGk9IiI7ZD0vX2Rlc2lnblwvcGhvdG9uJC8udGVzdChmKT97dmVyc2lvbjpmLHBob3RvbjpmKyI/YXR0YWNobWVudHM9dHJ1ZSJ9Ont2ZXJzaW9uOmYrInZlcnNpb24uanNvbiIscGhvdG9uOmYrInBob3Rvbi5qc29uIn0sJC5hamF4KHt1cmw6ZC52ZXJzaW9uLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOmh9KS50aGVuKGZ1bmN0aW9uKHgpe2Z1bmN0aW9uIGEoeCl7dmFyIGE9eC5zcGxpdCgiLiIpO3JldHVybiAxZTEyKmFbMF0rMWU2KmFbMV0rKGlzTmFOKGFbMl0pPzk5OTk5OTorYVsyXSl9Yj1lLlBobygiVmVyc2lvbiIpKyIuIitlLlBobygiYnVpbGQiKSxjPXgudmVyc2lvbnx8IjAuMC4wIjt2YXIgZj1hKGIpO3JldHVybiBmPj1hKGMpPyhlLlBobygiTHMiKSgiTGFzdFVwZGF0ZSIse3JlbWluZGVyOkRhdGUubm93KCl9KSxjdy5saWIubm90ZShnLk1TR19VUERfTk9ORUVEKSk6KHgudmVyc2lvbnMmJihpPWUuUmVuZGVyTmV3cyh4LnZlcnNpb25zLGYsITEpKS5sZW5ndGgmJihpPWcuVFhUX1VQRF9GRUFUVVJFUy5hc3NpZ24oaSkpLCQuYWpheCh7dXJsOmQucGhvdG9uLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOmh9KS50aGVuKGopKX0pLmZhaWwoZnVuY3Rpb24oKXtjdy5saWIubm90ZShnLkVSUl9VUERBVEVfQ0hFQ0ssImVycm9yIil9KX1mdW5jdGlvbiBqKHgpeyQubXkubW9kYWwoe21hbmlmZXN0OmUuUGhvKCJDb25maXJtIiksZGF0YTp7dGV4dDpnLlRYVF9VUEQuYXNzaWduKGIsYyxpKSx5ZXM6Zy5CVE5fVVBEQVRFLG5vOmcuQlROX0NBTkNFTCxjYW5jZWw6IiIsdXNlQnV0dG9uczohMH0sd2lkdGg6NDUwLGNzczoicDIwIHhncmF5IGxoMTcwIHBiMjUiLGZvY3VzOiIjYnRuLXllcyJ9KS50aGVuKGZ1bmN0aW9uKGEpe2lmKCJ5ZXMiIT1hLmNtZHx8IXdpbmRvdy5ERE9DKXJldHVybiBlLlBobygiTHMiKSgiTGFzdFVwZGF0ZSIse3JlbWluZGVyOkRhdGUubm93KCl9KSx2b2lkIDA7eC5fcmV2PWUuZGF0YS5kZG9jLl9yZXZ8fHdpbmRvdy5ERE9DLl9yZXYsd2luZG93LkRET0MmJndpbmRvdy5ERE9DLnNldHRpbmdzJiYoeC5zZXR0aW5ncz13aW5kb3cuRERPQy5zZXR0aW5ncyk7dmFyIGI9e307T2JqZWN0LmtleXMoeC5fYXR0YWNobWVudHMpLmZvckVhY2goZnVuY3Rpb24oYSl7YlthXT1PYmplY3Quc2VsZWN0KHguX2F0dGFjaG1lbnRzW2FdLFsiY29udGVudF90eXBlIiwiZGF0YSJdKX0pLHguX2F0dGFjaG1lbnRzPWIsZS5SZXEoe3VybDpbRERPQy5fZGJ8fCJfcGhvdG9uIix4Ll9pZF0sbWV0aG9kOiJQVVQiLGRhdGE6SlNPTi5zdHJpbmdpZnkoeCksY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGFUeXBlOiJ0ZXh0In0pLnRoZW4oZnVuY3Rpb24oKXtjdy5saWIubm90ZShnLk1TR19VUERBVEVfT0ssIiIsNmUzKSxlLlBobygiTHMiKSgiTGFzdFVwZGF0ZSIse3N0YW1wOkRhdGUubm93KCl9KX0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe2N3LmxpYi5ub3RlKGcuRVJSX1VQREFURS5hc3NpZ24oeCxhKSwiZXJyb3IiKX0pfSl9fSxldmVudHM6ImNsaWNrLm15In19LHJlbG9hZERCTGlzdDpmdW5jdGlvbigpeyQubXkucmFkaW8oImRibGlzdCIsT2JqZWN0LmtleXModGhpcy5QaG8oIkFsbCIpKSl9LHN0eWxlOnsiIGNvZGUiOiJmb250LXNpemU6MTAzJTsiLCIgI3NpY29uIjpmdW5jdGlvbih4KXt2YXIgYT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8Ljk5OTtyZXR1cm4gYT09TWF0aC5yb3VuZChhKT8iaW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZDsiOiIifX0sQWN0aW9uczp7Y2xlYW5MUzpmdW5jdGlvbigpe2Zvcih2YXIgeCxhLGI9bG9jYWxTdG9yYWdlLGM9W10sZD0wO2Q8Yi5sZW5ndGg7ZCsrKXg9Yi5rZXkoZCksYT1iLmdldEl0ZW0oeCkseC5zdGFydHNXaXRoKCJjdy5QaG90b24uVmlld1N0YXRlLiIpJiYoYS5oYXMoJ1siLnZhbHVlIicpfHxhLmhhcygnWyIuZG9jIl0nKSkmJmMucHVzaChiLmtleShkKSk7Yy5mb3JFYWNoKHg9PmIucmVtb3ZlSXRlbSh4KSl9fSxSZW5kZXJOZXdzOmZ1bmN0aW9uKHgsYSxiKXt0aGlzLmxhbmcsYT1hfHwwO3JldHVybiB4LnNwbGl0KCIjIyIpLmNvbXBhY3QoITApLm1hcCh4PT54LnRyaW0oKSkucmVkdWNlKGZ1bmN0aW9uKHgsZCl7dmFyIGU9ZC5zcGxpdCgvXG5cbi8pO3JldHVybiBjKGVbMF0pPmEmJihiJiZ4LnB1c2goIjxoND57MX08L2g0PiIuYXNzaWduKGVbMF0pKSx4LnB1c2goZS5zbGljZSgxKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIjxsaT57MX08L2xpPiIuYXNzaWduKHguZXNjYXBlSFRNTCgpLnJlcGxhY2UoLyhgW15gXStgKS9nLCI8Y29kZT4kMTwvY29kZT4iKS5yZXBsYWNlKC9gL2csIiIpKX0pLmpvaW4oIlxuIikpKSx4fSxbXSkuam9pbigiXG4iKTtmdW5jdGlvbiBjKHgpe3ZhciBhPXguc3BsaXQoIi4iKTtyZXR1cm4gMWUxMiphWzBdKzFlNiphWzFdKyhpc05hTihhWzJdKT85OTk5OTk6K2FbMl0pfX0sSFRNTDpbJzxkaXYgY2xhc3M9InhncmF5IGFwcGhlaWdodCIgaWQ9ImFhbGwiIHN0eWxlPSJtYXJnaW46MCBhdXRvIDAgYXV0bzsgcGFkZGluZzo1MnB4IGNhbGMoNTAlIC0gNDI1cHgpIDIwcHggY2FsYyg1MCUgLSA0MjVweCk7Ij4nLCc8ZGl2IGNsYXNzPSJ3NDUwIGRpYiB2YXQiPicse3JvdzoiNDUwcHgiLGxhYmVsOiIxMjBweCIscm93Q3NzOiJteS1yb3cgcGIyIixsYWJlbENzczoibXktbGFiZWwgZnM5MCJ9LCc8ZGl2IGlkPSJhdGl0bGUiPicsJzxzcGFuIGNsYXNzPSJkaWIgZnMxNTAgbGgxNjAgcHIyMCIgc3R5bGU9Im1pbi13aWR0aDoxMjBweDsiPicsJ0NvdWNoREIgPHNwYW4gaWQ9ImF2ZXIiPjwvc3Bhbj4nLCI8L3NwYW4+IiwiPC9kaXY+IixbIntMX1VSTH0iLCJzcG4jYW5vZGUiXSxbIntMX0NMVVNURVJ9Iiwic3BuI2FjbHVzdGVyIl0sWyJ7TF9WRU5ET1J9Iiwic3BuI2F2ZW5kb3IiXSxbIntMX0NPVUNIfSIsInNwbiNhd2VsY29tZSJdLFsie0xfRkVBVH0iLCJzcG4jYWZlYXR1cmVzIl0sWyJ7TF9QRVJGfSIsJzxhIGlkPSJhcGVyZnRlc3QiIGNsYXNzPSJ0ZG4gbXIxMCIgaHJlZj0iIiB0YXJnZXQ9Il9ibGFuayIgIHRpdGxlPSJ7VElQX1BFUkZURVNUfSI+JywnPHNwYW4gY2xhc3M9ImZpLWdyYXBoLWhvcml6b250YWwgYmx1ZTIgZnM5MCI+PC9zcGFuPicsIiZuYnNwO3tMX1BFUkZURVNUfSIsIjwvYT4iLCc8YSBpZD0iYWxvZ3MiIGNsYXNzPSJoaWRlIHRkbiBtcjEwIiBocmVmPSIjX2xvZyIgIHRpdGxlPSJ7VElQX0xPR1N9Ij4nLCc8c3BhbiBjbGFzcz0iZmktbGlzdC10aHVtYm5haWxzIGJsdWUyIGZzOTAiPjwvc3Bhbj4nLCImbmJzcDt7TF9MT0dTfSIsIjwvYT4iLCc8YSBpZD0iYXN3ZXJzIiBjbGFzcz0iaGlkZSB0ZG4gbXIxMCIgaHJlZj0iI19ub2RlJTJGX2xvY2FsL192ZXJzaW9ucyIgdGl0bGU9IntUSVBfU1dWRVJTfSI+JywnPHNwYW4gY2xhc3M9ImZpLWxpc3QtdGh1bWJuYWlscyBibHVlMiBmczkwIj48L3NwYW4+JywiJm5ic3A7e0xfU1dWRVJTfSIsIjwvYT4iXSwnPGRpdiBpZD0iYXRpdGxlIiBjbGFzcz0ibXQyMCI+JywnPHNwYW4gY2xhc3M9ImRpYiBmczE1MCBsaDE2MCBwcjYgbWIyIiBzdHlsZT0ibWluLXdpZHRoOjEyMHB4OyI+JywnUGhvdG9uwqA8c3BhbiBpZD0iYXBobyI+PC9zcGFuPicsIjwvc3Bhbj4iLCc8c3BhbiBpZD0iYXBob2J1aWxkIj48L3NwYW4+JywiPC9kaXY+Iix7cm93Q3NzOiJteS1yb3cgcGI2In0sWyJ7TF9QSE9BRER9Iiwic3BuI2FwaG9hZGQiXSxbIntMX1BIT0hJU1R9Iiwic3BuI2J0bi1zaG93aGlzdC5wc2V1ZG9saW5rLnRkbiIse3R4dDoie1RJUF9QSE9ISVNUfSJ9XSxbIntMX1BIT0xJQlN9Iiwic3BuI2J0bi1zaG93bGlicy5wc2V1ZG9saW5rLnRkbiIse3R4dDoie1RJUF9QSE9MSUJTfSJ9LCJzcG4jYXBob2xpYnMuZGliLnZhdC5tbC00LmhpZGUiXSxbIntMX1BIT0ZPTlRTfSIsInNwbiNhcGhvZm9udHMuZGliLnZhdC5tbC00Il0se3Jvd0NzczoibXktcm93IG10MTUgbWIyMCAifSwnPGRpdiBpZD0iaGlkZWNvdWNoYXBwIiBjbGFzcz0iaGlkZSI+JyxbIiAiLCc8YnV0dG9uIGlkPSJhdXBkIiBjbGFzcz0iZnMxMDAiPjxzcGFuIGNsYXNzPSJmaS1jbG91ZCBvNDAiPjwvc3Bhbj4ge0xfQ0hFQ0tfVVBEQVRFU33CoDwvYnV0dG9uPiddLHtyb3dDc3M6Im15LXJvdyBtdDcifSxbIiAiLCc8c3BhbiBjbGFzcz0iYmx1ZSBvNTAgZmktZG93bmxvYWQgZnM5NSBtcjIgZnM5MCI+PC9zcGFuPiA8c3BhbiBpZD0iYnRuLWFkbCIgY2xhc3M9InBzZXVkb2xpbmsgdGRuIj57TF9ETH08L3NwYW4+J10sWyIgIiwnPHNwYW4gY2xhc3M9ImJsdWUgbzYwIGZpLXNvY2lhbC1naXRodWIgbXIyIj48L3NwYW4+ICcsJzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9lcm1vdXRoL2NvdWNoLXBob3RvbiIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIiByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiI+e0xfR0lUSFVCfTwvYT4nXSwiPC9kaXY+Iix7cm93Q3NzOiJteS1yb3cgbXQyMCJ9LFsiICIsJzxzcGFuIGNsYXNzPSJncmF5IGZzOTAiPihjKSAyMDI1IGVybW91dGguIFBob3RvbiBpcyBNSVQgbGljZW5zZWQuPC9zcGFuPiddLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJ3MzcwIGRpYiB2YXQgbWwzMCI+Jyx7cm93OiIzNzBweCIsbGFiZWw6IjEzMHB4Iixyb3dDc3M6Im15LXJvdyBwYjkiLGxhYmVsQ3NzOiJteS1sYWJlbCBmczkwIHZhdCBwdDkifSwnPGRpdiBpZD0iYXRpdGxlIiBjbGFzcz0iZnMxNTAgbGgxNjAgcGI2Ij57U19USVRMRX08L2Rpdj4nLFsie1NfUkVQT30iLCJpbnAjc3JlcG8udzEwMHAiLHtzcGVsbGNoZWNrOiJmYWxzZSIsYXV0b2NvbXBsZXRlOiJvZmYifV0sWyJ7U19VUER9IiwiZGl2I3N1cGQuZGliLnZhdC53MTAwcC5saDE4MC5wYjIubnciXSxbIntTX1RIRU1FfSIsImRpdiNzdGhlbWUuZGliLnZhdC53MTAwcC5saDE4MC5wYjEiXSxbIntTX0ZDRkFNSUxZfSIsImlucCNzY2ZvbnQudzEwMHAuZnMxMTAiXSxbIntTX0ZGQU1JTFl9IiwiaW5wI3Nmb250LncxMDBwLmZzMTEwIl0sWyJ7U19GV0VJR0hUfSIsImRpdiNzZndlaWdodC5kaWIudmF0LncxMDBwLmxoMTgwLnBiMSJdLFsie1NfU0NST0xMfSIsImRpdiNzc2Nyb2xsLmRpYi52YXQudzEwMHAubGgxODAucGIxIl0sWyJ7U19DT0xTfSIsImRpdiNzY29scy5kaWIudmF0LncxMDBwLmxoMTgwLnBiMSJdLFsie1NfR1JPVVB9IiwiZGl2I3Nncm91cC5kaWIudmF0LncxMDBwLmxoMTgwLnBiMS5udyJdLFsie1NfUElOR30iLCJkaXYjc3BpbmcuZGliLnZhdC53MTAwcC5saDE4MC5wYjMiXSxbIntTX1BPTEx9IiwibnVtI3Nwb2xsLnc2NSIse21pbjoiMSIsbWF4OiIzNjAwIixzdGVwOiIxIn0sIjxzcGFuPiBzPC9zcGFuPiJdLFsie1NfU1RBVFNfUE9MTH0iLCJudW0jc3RhdHNwb2xsLnc2NSIse21pbjoiNSIsbWF4OiIxMjAiLHN0ZXA6IjUifSwiPHNwYW4+IHM8L3NwYW4+Il0se2xhYmVsQ3NzOiJteS1sYWJlbCBmczkwIHB0OCJ9LFsie1NfSUNPTn0iLCc8aW1nIHN0eWxlPSJ3aWR0aDo2NHB4O2hlaWdodDo2NHB4OyIgY2xhc3M9ImRpYiB2YXQgYnIyIiBpZD0ic2ljb24iPicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgcHQzIHBsMTAiPicsJzxzcGFuIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiIgaWQ9ImJ0bi1zZXRpY29uIj57QlROX0lDT059PC9zcGFuPiA8YnI+JywnPHNwYW4gY2xhc3M9InBzZXVkb2xpbmsgdGRuIGhpZGUiIGlkPSJidG4tcmVzZXRpY29uIj57QlROX0lDT05fUkVTRVR9PC9zcGFuPiddLCc8ZGl2IGlkPSJzcHJveHkiIGNsYXNzPSJoaWRlIj48L2Rpdj4nLCI8L2Rpdj4iXSxDcm9wcGVyOntwYXJhbXM6e3dpZHRoOjY4Nn0sZGF0YTp7ZmlsZW5hbWU6IiIsZGF0YToiIixjcm9wcGVkOiExLHNpemU6NjR9LGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0kLm15LmZvcm1nZW4oWyc8ZGl2IGNsYXNzPSJmbCBtcjIwIHRhYyB2YXQgYmctbGdyYXkiIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6NDUwcHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjQ1MHB4OyIgaWQ9ImNyb3AtZnJhbWUiPicsJzxpbWcgaWQ9InNvdXJjZSIgY2xhc3M9InZhbSIgc3R5bGU9Im1heC13aWR0aDo2MDBweDsgbWF4LWhlaWdodDo0NTBweDsgYmFja2dyb3VuZDp3aGl0ZSIgc3JjPSIiIC8+JywnPGRpdiBjbGFzcz0idzYwMCAgZGliIiBzdHlsZT0iaGVpZ2h0OjQ1MHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MCI+JywnPHNwYW4gY2xhc3M9ImRpYiB2YW0gZnMxMTAgYnV0dG9uIj4nLCc8c3BhbiBjbGFzcz0iZmktcGhvdG8iPjxzcGFuIGNsYXNzPSJmczExMCI+ICZuYnNwO1NlbGVjdCBJbWFnZTwvc3Bhbj48L3NwYW4+JywiPC9zcGFuPiIsJzxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZSIgY2xhc3M9Inc2MDAgZGliIiBhY2NlcHQ9ImltYWdlL2pwZWcsaW1hZ2UvcG5nIiBzdHlsZT0iaGVpZ2h0OjQ1MHB4O2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MDsgcG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowIj4nLCI8L2Rpdj4iLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJ3NjUgZGliIHZhdCIgaWQ9InhwcmV2aWV3Ij4nLCc8aW1nIGlkPSJpcHJldmlldyIgc3R5bGU9IndpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyOm5vbmU7IiBjbGFzcz0iYmctZ3JheTciPicse3JvdzoiNjVweCIscm93Q3NzOiJtdDUgZnM5MCB0YWMifSxbIiIsImJ0biNidG4tYXBwbHkudzY1LmdyZWVuIix7dmFsOiJTZXQifV0sIjwvZGl2PiIsJzxkaXYgY2xhc3M9Inc2NSBkaWIgdmF0IiBpZD0ieHdhcm4iPicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9ImhpZGUiPicsJzxjYW52YXMgaWQ9IngyIiB3aWR0aD0nKzIqYS5kYXRhLnNpemUrIiBoZWlnaHQ9IisyKmEuZGF0YS5zaXplKyI+PC9jYW52YXM+IiwnPGNhbnZhcyBpZD0icHJldmlldyIgY2xhc3M9ImJnLWxncmF5IiBzdHlsZT0id2lkdGg6NjRweDtoZWlnaHQ6NjRweCIgd2lkdGg9JythLmRhdGEuc2l6ZSsiIGhlaWdodD0iK2EuZGF0YS5zaXplKycgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjsiPjwvY2FudmFzPicsIjwvZGl2PiIsJzxpbWcgaWQ9Im1hc2sxIiBjbGFzcz0iaGlkZSIgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VEMGlNQ0lnZVQwaU1DSWdkMmxrZEdnOUlqWTBJaUJvWldsbmFIUTlJalkwSWlCMmFXVjNRbTk0UFNJd0xEQXNOalFzTmpRaVBnb2dJRHh3WVhSb0lHUTlJazB3TERNeUlFTXdMREFnTUN3d0lETXlMREFnUXpZMExEQWdOalFzTUNBMk5Dd3pNaUJETmpRc05qUWdOalFzTmpRZ016SXNOalFnUXpBc05qUWdNQ3cyTkNBd0xETXlJaUJtYVd4c1BTSWpSakJHTUVZd0lpOCtDand2YzNablBnbz0iPiddKTt4Lmh0bWwoYil9LHN0eWxlOnsiIC5qY3JvcC1ob2xkZXIiOiJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUifSx1aTp7IiNmaWxlIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLGU9Yi5teSgpLnJvb3QsZj1lLmZpbmQoIiNwcmV2aWV3IiksZz1lLmZpbmQoIiNzb3VyY2UiKSxoPWUuZmluZCgiI3gyIiksaT1lLmZpbmQoIiNtYXNrMSIpLGo9e2s6MX0saz0iIjtmdW5jdGlvbiBsKGEpe2lmKHBhcnNlSW50KGEudyk+MCl7dmFyIGIsYyxlLGs9Z1swXSxsPWouayxtPWEudypsfDA7KGI9ZlswXS5nZXRDb250ZXh0KCIyZCIpKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249ImNvcHkiLGIuZmlsbFN0eWxlPSJ0cmFuc3BhcmVudCIsYi5maWxsUmVjdCgwLDAseC5zaXplLHguc2l6ZSksYi5kcmF3SW1hZ2UoaVswXSwwLDAseC5zaXplLHguc2l6ZSwwLDAseC5zaXplLHguc2l6ZSksYi5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiIsbT4yKnguc2l6ZT8oKGU9KGM9aFswXSkuZ2V0Q29udGV4dCgiMmQiKSkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJjb3B5IixlLmZpbGxTdHlsZT0idHJhbnNwYXJlbnQiLGUuZmlsbFJlY3QoMCwwLDIqeC5zaXplLDIqeC5zaXplKSxlLmRyYXdJbWFnZShrLGEueCpsfDAsYS55Kmx8MCxtLG0sMCwwLDIqeC5zaXplLDIqeC5zaXplKSxiLmRyYXdJbWFnZShjLDAsMCwyKnguc2l6ZSwyKnguc2l6ZSwwLDAseC5zaXplLHguc2l6ZSkpOmIuZHJhd0ltYWdlKGssYS54Kmx8MCxhLnkqbHwwLG0sbSwwLDAseC5zaXplLHguc2l6ZSkseC5kYXRhPWN3LmxpYi5pbWFnZShmKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuKCgyNTUqeHwwKT4+Mjw8MikvMjU1fSkuc2hhcnBlbigxLjYpLmJyaWdodG5lc3MoMS4xKS5wbmcoKSxkLm15LmZpbmQoIiNpcHJldmlldyIpLmF0dHIoInNyYyIseC5kYXRhKSx4LmNyb3BwZWQ9ITAsZC5teS5jaGVjaygiI2J0bi1hcHBseSIpfX1udWxsIT1hJiZhJiYoYz1iWzBdLmZpbGVzWzBdKSYmZnVuY3Rpb24oKXt4LmZpbGVuYW1lPWMubmFtZTt2YXIgYSxkPW5ldyBGaWxlUmVhZGVyLGU9W107ZC5vbmxvYWQ9ZnVuY3Rpb24oeCl7YT1uZXcgVWludDhBcnJheSh4LnRhcmdldC5yZXN1bHQpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGFbYl0pKTtrPXdpbmRvdy5idG9hKGUuam9pbigiIikpfSxkLm9ubG9hZGVuZD1mdW5jdGlvbigpe2cubG9hZChmdW5jdGlvbigpe2ouaz1nWzBdLm5hdHVyYWxXaWR0aC9nLndpZHRoKCl9KSxnLnJlbW92ZUNsYXNzKCJoaWRlIikuYXR0cigic3JjIiwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwiK2spLGouaz1nWzBdLm5hdHVyYWxXaWR0aC9nLndpZHRoKCksZy5KY3JvcCh7b25DaGFuZ2U6bCxvblNlbGVjdDpsLmRlYm91bmNlKDIwKSxhc3BlY3RSYXRpbzoxLG1pblNpemU6WzY0LDY0XSxhbGxvd01vdmU6ITB9LGZ1bmN0aW9uKCl7dGhpcy5hbmltYXRlVG8oWzEwMCwxMDAsMzAwLDMwMF0pfSksaz0iIixiLnBhcmVudCgpLmFkZENsYXNzKCJoaWRlIil9LGQucmVhZEFzQXJyYXlCdWZmZXIoYyl9KCl9fSwiI2J0bi1hcHBseSI6e2RlbGF5OjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ4LmNyb3BwZWQmJnRoaXMubXkuY29tbWl0KCl9LGV2ZW50czoiY2xpY2subXkiLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4heC5jcm9wcGVkfX19fX0sRG93bmxvYWQ6e2RhdGE6e2NmZzp7fX0sSlNPTjohMSxCbG9iOiExLFVybDohMSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5Vcmw9YS5QaG8oKS5Eb3dubG9hZFVSTCwkLmV4dGVuZCghMCxhLmRhdGEuY2ZnLGEuUGhvKCJDZmciKSkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSx4LnRoZW4oZnVuY3Rpb24oKXthLnJlYWRQaG90b24oKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtjb25zb2xlLmxvZyh4LGEpfSl9LHVpOnsiI2FkbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD1jLlVybCxlPXdpbmRvdy5ERE9DO3JldHVybiBjLlBobygiX2NvbXBpbGVkIikmJmUmJiIiIT09ZD8hMT09PWQ/JzxzcGFuIGNsYXNzPSJ4Z3JheSI+JytjLmxhbmcuTF9ETFBSRVArIjwvc3Bhbj4iOihiLmF0dHIoImhyZWYiLGQpLGIuYXR0cigiZG93bmxvYWQiLCJwaG90b24tIitjLlBobygiVmVyc2lvbiIpLnJlcGxhY2UoL1teMC05XC5dL2csIiIpKyIuIitjLlBobygiYnVpbGQiKSsiLmpzb24iKSxjLmxhbmcuTF9ETF9MSU5LKToiTm8gYXBwIGNvZGUsIHNvcnJ5In19LCIjYXNpemUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuQmxvYj90aGlzLkJsb2Iuc2l6ZS5mb3JtYXQoKS5yZXBsYWNlKC9cRC9nLCLigIkiKSsiIGJ5dGVzIjoiIn0sd2F0Y2g6IiNhZGwifX0sSFRNTDpbe3Jvd0NzczoibXktcm93IG10NSBtYjUifSxbIiAiLCc8c3BhbiBjbGFzcz0iYmx1ZSBvNTAgZmktZG93bmxvYWQgZnM5NSBtcjIiPjwvc3Bhbj4gPGEgaHJlZj0iIiBpZD0iYWRsIiBjbGFzcz0idGRuIiBkb3dubG9hZD0icGhvdG9uLmpzb24iPjwvYT4nXSxbIiAiLCc8c3BhbiBpZD0iYXNpemUiIGNsYXNzPSJvNTAgZnM4MCI+PC9zcGFuPiddXSxyZWFkUGhvdG9uOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXdpbmRvdy5ERE9DO2lmKCF4LlBobygiX2NvbXBpbGVkIil8fCFhKXJldHVybiIiO3guVXJsfHx4LlJlcSh7dXJsOlthLl9kYnx8Il9waG90b24iLGEuX2lkLHthdHRhY2htZW50czohMH1dfSkudGhlbihmdW5jdGlvbihhKXt4LmRhdGEuZGRvYz1hO3ZhciBiPSQuZXh0ZW5kKCEwLHtfaWQ6IiIsbmFtZToiIix2ZXJzaW9uOnguUGhvKCJWZXJzaW9uIikrIi4iK3guUGhvKCJidWlsZCIpfSxPYmplY3QucmVqZWN0KGEsWyJfcmV2IiwiX2F0dGFjaG1lbnRzIl0pKTtiLl9hdHRhY2htZW50cz17fSxPYmplY3Qua2V5cyhhLl9hdHRhY2htZW50cykuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYz1hLl9hdHRhY2htZW50c1t4XTtiLl9hdHRhY2htZW50c1t4XT17Y29udGVudF90eXBlOmMuY29udGVudF90eXBlLGRhdGE6Yy5kYXRhfX0pLHguSlNPTj1iO2N3LmxpYi5iYXNlNjQyYmxvYihjdy5saWIuYmFzZTY0KEpTT04uc3RyaW5naWZ5KGIsbnVsbCwiICAiKSksZnVuY3Rpb24oYSl7eC5CbG9iPWEseC5Vcmw9VVJMLmNyZWF0ZU9iamVjdFVSTChhKSx4LlBobygpLkRvd25sb2FkVVJMPXguVXJsLHgubXkuY2hlY2soIiNhZGwiKSx4Lm15LmNoZWNrKCIjYXNpemUiKX0sImFwcGxpY2F0aW9uL2pzb24iKX0pLmZhaWwoZnVuY3Rpb24oKXt4LlVybD0iIix4Lm15LmNoZWNrKCIjYWRsIil9KX0sc3R5bGU6eyIiOiJmb250LXNpemU6MThweDsifX19LCRlcnJvcjp7aWQ6ImN3LlBob3Rvbi4kZXJyb3IiLGxhbmc6e30sZGF0YTp7ZXJyb3I6IiIscGF0aDpbXSxtZXNzYWdlOiIifSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuImVycm9yIn0sdGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iRXJyb3Igc3dpdGNoaW5nICMiK3RoaXMuZGF0YS5wYXRoLmpvaW4oIi8iKX0sREIyZ286IiIsREJsaXN0OltdLGlzQ291Y2gzYW5kQWxsREJzOiExLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTthLmlzQ291Y2gzYW5kQWxsREJzPWEuUGhvKCJDb3VjaCIpLnZlcj49IjAwMy4iJiZjdy5tZSgpJiYhYi5wYXRoLmxlbmd0aCx4Lmh0bWwoYS5IVE1MKSxhLmlzQ291Y2gzYW5kQWxsREJzJiZ4LnRoZW4oZnVuY3Rpb24oKXt4LmZpbmQoIiNlLWRibmFtZSIpLm9uKCJrZXl1cC5teSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5rZXlDb2RlOzEzIT1iJiYxMCE9Ynx8ZnVuY3Rpb24oKXt4LmZpbmQoIiNidG4tZ28iKS50cmlnZ2VyKCJjbGljayIpfS5kZWJvdW5jZSg1MCkoKX0pfSl9LHVpOnsiI2UtbG9nbyI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QaG8oIlNWRyIpLmxvZ299LCIjZS1tc2ciOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzLGQ9eC5lcnJvcjt0cnl7Yj1PYmplY3QuaXNTdHJpbmcoZCk/ZCsiIjpKU09OLnN0cmluZ2lmeShkKX1jYXRjaCh4KXt9cmV0dXJuIGJ8fChiPWQrIiJ8fCJVbmRlZmluZWQgZXJyb3IiKSxiPWIuc3BsaXQoInRvIGluaXRpYWxpemU6IikubGFzdCgpLmNvbXBhY3QoKSx4Lm1lc3NhZ2U9YixjLmlzQ291Y2gzYW5kQWxsREJzP2MubGFuZy5UWFRfQzNfQUxMX0RCU180MDE6Yy5sYW5nLlRYVF9FUlIuYXNzaWduKCIjIit4LnBhdGguam9pbigiLyIpLmVzY2FwZUhUTUwoKSxiKX0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7T2JqZWN0LmlzT2JqZWN0KGEpJiYoYS5uYW1lfHx0aGlzLmlzQ291Y2gzYW5kQWxsREJzKSYmL1xzNDBbMzFdXHMvLnRlc3QoeC5lcnJvcikmJiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KX19fSwiI2UtY2RibmFtZSI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hdGhpcy5pc0NvdWNoM2FuZEFsbERCc319fSwiI2UtZGJuYW1lIjp7ZGVsYXk6MjAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTt0aGlzLmlzQ291Y2gzYW5kQWxsREJzJiYoeC5hdHRyKCJwbGFjZWhvbGRlciIsdGhpcy5sYW5nLlBMQ19EQk5BTUUpLGEuREJsaXN0PShhLlBobygiTHMiKSgiVGFiQ2xvc2VIaXN0b3J5Iil8fFtdKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgudGFic30pLmZsYXR0ZW4oKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucGF0aH0pLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5sZW5ndGgmJiJfIiE9eFswXVswXX0pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geFswXX0pLnVuaXF1ZSgpLnNvcnQoKSxhLkRCbGlzdC5sZW5ndGgmJnguYXV0b2NvbXBsZXRlKHtkZWxheTowLHNvdXJjZTphLkRCbGlzdCxjbG9zZTpmdW5jdGlvbih4LGIpe2EubXkuY2hlY2soIiNidG4tZGJuYW1lIil9LmRlYm91bmNlKDEwKSxzZWxlY3Q6ZnVuY3Rpb24oeCxiKXthLm15LmNoZWNrKCIjZS1kYm5hbWUiKSxhLlN3aXRjaC5kZWJvdW5jZSg2MCkoKX0uZGVib3VuY2UoMTApLGFwcGVuZFRvOmEubXkucm9vdCgpLG1pbkxlbmd0aDowfSkpfSxiaW5kOiJ0aGlzLkRCMmdvIn0sIiNidG4tZGJuYW1lIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLm15LmZpbmQoIiNlLWRibmFtZSIpLGQ9ISFiLkRCbGlzdC5sZW5ndGgmJmMuYXV0b2NvbXBsZXRlKCJ3aWRnZXQiKS5pcygiOnZpc2libGUiKTtyZXR1cm4gbnVsbCE9YSYmKGQ/Yy5hdXRvY29tcGxldGUoImNsb3NlIik6Yy5hdXRvY29tcGxldGUoInNlYXJjaCIsIiIpLGQ9IWQpLCc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+Jy5hc3NpZ24oZD8iYXVwIjoiYWRvd24iKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF0aGlzLkRCbGlzdC5sZW5ndGh9fSx3YXRjaDpbIiNlLWRibmFtZSJdfSwiI2J0bi1nbyI6e2RlbGF5OjI1LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7cmV0dXJuIG51bGwhPWEmJmMuU3dpdGNoKCksYy5sYW5nLkJUTl9HT30sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiEvXlthLXowLTlfJFwoXClcK1wtXC9dKyQvLnRlc3QodGhpcy5EQjJnbyl9fSx3YXRjaDpbIiNlLWRibmFtZSJdfSwiI2UtY3JlbG9hZCI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pc0NvdWNoM2FuZEFsbERCc319fSwiI2J0bi1yZWxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9IjQwMSI9PXgubWVzc2FnZS50bygzKSYmIWN3Lm1lKCk7aWYobnVsbD09YSlyZXR1cm4gdGhpcy5sYW5nW2I/IkJUTl9BVVRIIjoiQlROX1JFVFJZIl07Yj8kKCIjYnRuLWF1dGgtcG9wdXAiKS50cmlnZ2VyKCJjbGljayIpOiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KX19fSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5pc0NvdWNoM2FuZEFsbERCcyYmdGhpcy5EQmxpc3QubGVuZ3RoJiZ4LmZpbmQoIiNlLWRibmFtZSIpLmF1dG9jb21wbGV0ZSgiZGVzdHJveSIpfSxTd2l0Y2g6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3dpbmRvdy5sb2NhdGlvbi5oYXNoPXguREIyZ28seC5teS5maW5kKCIjZS1kYm5hbWUiKS5hdXRvY29tcGxldGUoIm9wdGlvbiIsInNvdXJjZSIseC5EQmxpc3Q9eC5EQmxpc3QuYWRkKHguREIyZ28pLnVuaXF1ZSgpKX0sSFRNTDonPGRpdiBjbGFzcz0icDEwMCB0YWMiPjxkaXYgY2xhc3M9Inc1MHAgbXQyNSB0YWwgZGliIHZhdCBtYjE1Ij48ZGl2IGlkPSJlLWxvZ28iPjwvZGl2PjxkaXYgaWQ9ImUtdGl0bGUiIGNsYXNzPSJkaWIgdmF0Ij5QaG90b248L2Rpdj48L2Rpdj48ZGl2IGlkPSJlLW1zZyIgY2xhc3M9IiI+PC9kaXY+PGZvcm0gaWQ9ImUtY2RibmFtZSIgY2xhc3M9Im10MjUgZnM5NSBoaWRlIj48ZGl2IGNsYXNzPSJ3NTBwIHRhbCBkaWIgdmF0IHBsNzAiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZS1kYm5hbWUiIHN0eWxlPSJ3aWR0aDogY2FsYygxMDAlIC0gMTIycHgpOyBtYXgtd2lkdGg6NjAwcHg7IiBjbGFzcz0ibXIyIj48c3BhbiBzdHlsZT0iIiBjbGFzcz0icHNldWRvbGluayB0ZG4gYmZvbGQgZGliIHZhdCIgdHh0PSIiIGlkPSJidG4tZGJuYW1lIj48c3BhbiBjbGFzcz0iYWRvd24iPjwvc3Bhbj48L3NwYW4+PGRpdiBjbGFzcz0idzEyMCBkaWIgdmF0Ij48YnV0dG9uIGlkPSJidG4tZ28iIGNsYXNzPSJ3MTIwIHByMTUiPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZm9ybT48ZGl2IGlkPSJlLWNyZWxvYWQiIGNsYXNzPSJtdDI1IGZzOTUgaGlkZSI+PGRpdiBjbGFzcz0idzUwcCB0YWwgZGliIHZhdCBwbDcwIj48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzEyMCBwcjE1Ij48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj4nLHN0eWxlOnsiICNlLWxvZ28iOnsiIjpbIndpZHRoOjU1cHg7IGhlaWdodDo1NXB4OyBib3JkZXI6MnB4IHNvbGlkICNhMGIwYzA7IGJvcmRlci1yYWRpdXM6NjBweDsiLCJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBtYXJnaW4tcmlnaHQ6MTNweDsgcGFkZGluZzoxNHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyJdLCIgc3ZnIjoid2lkdGg6MzlweDsgaGVpZ2h0OjIwcHg7In0sIiAjZS10aXRsZSI6ImZvbnQtc2l6ZTo2MHB4OyBsaW5lLWhlaWdodDowLjllbTsgY29sb3I6Izk1YTViNTsgZm9udC13ZWlnaHQ6MjAwOyIsIiAudWktd2lkZ2V0IjoiZm9udC1zaXplOjEwMCUiLCIgLnVpLWF1dG9jb21wbGV0ZSI6ImxpbmUtaGVpZ2h0OjEuM2VtOyBtYXgtaGVpZ2h0OjE5dmg7IG92ZXJmbG93LXk6YXV0bzsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7IiwiIC5iZm9sZCI6eyIiOlsid2lkdGg6MjBweCFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7ICIsImJvcmRlci10b3AtbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyIsIm1hcmdpbi1sZWZ0Oi0yMXB4OyB6LWluZGV4OisxOyJdLCIgZGl2IjoiZm9udC1zaXplOjYwJTsgb3BhY2l0eTowLjU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDozLjJlbTsgd2lkdGg6MTAwJTsifSwiIHVsIjp7Ii51aS1hdXRvY29tcGxldGUiOiJtYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTE1cHgpOyJ9fSxwYXJhbXM6e3N0cmljdDohMH19LCRkb2M6e2lkOiJjdy5QaG90b24uJGRvYyIsbGFuZzp7fSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5pc05ldz9jdy5saWIucmFuZDgoKTpjdy5saWIuY3JjMih0aGlzLmRhdGEuZG9jKX0scGFyYW1zOntyZXN0eWxlOjI1LHN0cmljdDohMH0saWNvQ3NzOmZ1bmN0aW9uKHgpe3JldHVybiJfdXNlcnMiPT14LnBhdGhbMF0/ImZpLXRvcnNvIGZzOTAiOngucGF0aFsxXS5zdGFydHNXaXRoKCJfZGVzaWduIik/ImZpLXBhZ2UtZmlsbGVkIGZzOTAiOiJfbmV3Ij09eC5wYXRoWzFdPyJmaS1wYWdlLWFkZCBmczkwIjoiZmktcGFnZSBmczkwIn0sdGl0bGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9YS5wYXRoLGM9YS5kb2MuX2lkLGQ9YlswXTtyZXR1cm4gMj09Yi5sZW5ndGgmJiJfdmVyc2lvbnMiPT1iWzFdPyJfbm9kZS9fbG9jYWwvX3ZlcnNpb25zIjooYz0iX2Rlc2lnbi8iPT1jLnRvKDgpPyJfZCIrYy5mcm9tKDcpOiJfdXNlcnMiPT1kP2MuZnJvbSgxNyk6YyxbeC50cnVuYyhkLCgyOC1jLmxlbmd0aCkuY2xhbXAoMTAsMTYpKSwi4oCJL+KAiSIsYyxhLnJldj8i4oCJQOKAiSIrYS5yZXY6IiJdLmpvaW4oIiIpKX0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtpZihhKXJldHVybiJfbmV3Ij09eFsxXT97dGl0bGU6Ik5ldyBkb2MiLGFwcERhdGE6e2lzTmV3OiEwLGRvYzoiX3VzZXJzIj09eFswXT97X2lkOiJvcmcuY291Y2hkYi51c2VyOl91c2VybmFtZV8iLHR5cGU6InVzZXIiLG5hbWU6Il91c2VybmFtZV8iLHBhc3N3b3JkOiJfcGFzc3dvcmRfIixyb2xlczpbXX06eFswXT09dGhpcy5SZXBsaWNhdG9yREI/e19pZDoiIixzb3VyY2U6IiIsdGFyZ2V0OiIiLGNyZWF0ZV90YXJnZXQ6ITEsY29udGludW91czohMSxkb2NfaWRzOltdLGZpbHRlcjoiIix1c2VyX2N0eDp7bmFtZToiIixyb2xlczpbXX0scXVlcnk6e319Ont9fX06Mj09eC5sZW5ndGgmJiJfdmVyc2lvbnMiPT14WzFdP3t0aXRsZToiX25vZGUvX2xvY2FsL192ZXJzaW9ucyIsdHlwZToiZG9jIn06MiE9eC5sZW5ndGh8fCJfIj09eFsxXVswXSYmIS9eXyhkZXNpZ258bG9jYWwpXC8vLnRlc3QoeFsxXSk/MyE9eC5sZW5ndGh8fCJfIj09eFsxXVswXSYmIS9eX2Rlc2lnblwvLy50ZXN0KHhbMV0pfHwiXyIhPXhbMl1bMF0/dm9pZCAwOnt0aXRsZTp0aGlzLnRydW5jKHhbMF0sMTApKyLigIkv4oCJIit4WzFdLHR5cGU6ImRvYyIsYXBwRGF0YTp7cmV2OnhbMl0ucmVwbGFjZSgvXlxEKy8sIiIpLHJldmxhc3Q6eFsyXS5yZXBsYWNlKC9eXEQrLywiIil9fTp7dGl0bGU6dGhpcy50cnVuYyh4WzBdLDEwKSsi4oCJL+KAiSIreFsxXSx0eXBlOiJkb2MifX0sZGF0YTp7aXNOZXc6ITEsd2FzRGVsOiExLHBhdGg6W10scmV2OiIiLHJldmxhc3Q6IiIscmV2c3RhcnQ6IiIsc2VhcmNoOiIiLHJlYWRvbmx5OiExLGRvYzp7X2lkOiIifSxjb25mbGljdHM6W10scmV2czpbXSxhdHRzOiExfSxEb2M6W10sUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3JldHVybiB4LmFkZENsYXNzKCJudyIpLGIucGF0aC5sZW5ndGg+KCJfZGVzaWduIj09Yi5wYXRoWzFdPzM6MikmJihiLnJldj1iLnBhdGgubGFzdCgpLnJlcGxhY2UoL15cRCsvLCIiKSksYi5yZXZzdGFydD1iLnJldiwyPT1iLnBhdGgubGVuZ3RoJiYiX3ZlcnNpb25zIj09Yi5wYXRoWzFdJiYoYi5yZWFkb25seT0hMCksYS5IVE1MLkhpc3RvcnlSb3c9YS5QaG8oIkNvbXBpbGVUIikoYS5IVE1MLkhpc3RvcnlSb3cpLGEuSGlzdG9yeS5pbml0KGEseCkseC5odG1sKCc8ZGl2IGNsYXNzPSJ0YWMgZnMxMjAgZ3JheSBwdDE1MCB3MTAwcCI+e1RYVF9MT0FESU5HfTwvZGl2PicuYXNzaWduKGEubGFuZykpLGIucmVhZG9ubHkmJnguYWRkQ2xhc3MoInJlYWRvbmx5anNvbiIpLGEuR2V0RG9jKCkudGhlbihmdW5jdGlvbigpe2lmKGIud2FzRGVsJiZiLmRvYy5fYXR0YWNobWVudHMpcmV0dXJuIGEuR2V0QXR0cyghMCkudGhlbihmdW5jdGlvbih4KXtiLmRvYy5fYXR0YWNobWVudHM9eC5fYXR0YWNobWVudHN9KX0pLnRoZW4oZnVuY3Rpb24oKXt4Lmh0bWwoYS5IVE1MLkFwcC5hc3NpZ24oYS5sYW5nKSl9KS50aGVuKGZ1bmN0aW9uKCl7YS5CdXN5KCExKX0uZGVib3VuY2UoMTAwKSl9LHVpOnsiI2FwcC10aXRsZSI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEucDJ1LGM9eC5kb2MuX2lkLGQ9IiIsZT0iX25vZGUvX2xvY2FsL192ZXJzaW9ucyI9PXgucGF0aC5qb2luKCIvIik/Il9ub2RlL19sb2NhbC9fdmVyc2lvbnMiOiIiO2Q9KGM9ZXx8Y3x8eC5wYXRoWzFdKygiX2Rlc2lnbiI9PXgucGF0aFsxXT8iLyIreC5wYXRoWzJdOiIiKSkuZXNjYXBlSFRNTCgpO3ZhciBmPSc8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiIgaHJlZj0iezF9IiB0aXRsZT0iezN9Ij57Mn08L2E+Jy5hc3NpZ24oZT8iLyIrZTpbIiIsYih4LnBhdGhbMF0pLGIoYyldLmpvaW4oIi8iKS5lc2NhcGVIVE1MKCkrKHgucmV2PyI/cmV2PSIreC5yZXY6IiIpLGEudGFnRW1vamkoZCkseC5kb2MuX3Jldj9hLmxhbmcuVElQX0RPQ0pTT04uYXNzaWduKGMubGVuZ3RoPjEwP2Q6ImRvYyIpOiIiKTtyZXR1cm4nPHNwYW4gY2xhc3M9ImZzMTUwIGxoMTMwIHhncmF5IG10LTEgezJ9Ij57MX08L3NwYW4+Jy5hc3NpZ24oeC5kb2MuX3Jldj9mOmEudGFnRW1vamkoZCkseC5kb2MuX2RlbGV0ZWQ/InJlZC1zdHJpa2UiOiIiKX0sd2F0Y2g6WyIjanNlZGl0b3IiLCIjYXBwLXJldiJdfSwiI2FwcC1yZXYiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuUmV2c0xpc3QoIiNhcHAtcmV2Iil9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgucmV2IT1hJiYoeC5hdHRzPSExKSx4LnJldj1hKSx4LnJldn0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4vXl9sb2NhbFwvLy50ZXN0KHguZG9jLl9pZCl8fHgud2FzRGVsfX19LCIjYXBwLXNlYXJjaCI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbD09YT94LnNlYXJjaDooeC5zZWFyY2g9YS5sZW5ndGg8Mz8iIjphLHRoaXMuRG9jWzBdJiZ0aGlzLkRvY1swXS5zZWFyY2ghPXguc2VhcmNoJiZ0aGlzLm15LmZpbmQoIiNqc29uLXNlYXJjaCIpLnZhbCh4LnNlYXJjaCkudHJpZ2dlcigiY2hlY2siKSxhKX0sY3NzOnsibXktc2VhcmNoIjovXi57Myx9JC99fSwiI2pzZWRpdG9yIjp7ZGVsYXk6MTA1LGNoZWNrOiExLGxpc3Q6IjxkaXY+PC9kaXY+IixtZXJnZTohMSxpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0saWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jLl9pZHx8eC5faWR9LGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIGN3LmxpYi5zZGJtKHguZG9jKX0sbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YS5wYXRoLGM9Il9ub2RlL19sb2NhbC9fdmVyc2lvbnMiPT1iLmpvaW4oIi8iKT8iX25vZGUvX2xvY2FsL192ZXJzaW9ucyI6IiI7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGEuUGhvKCJFZCIpLmpzb250cmVlLGEuRXh0RWQse01Sb290OmZ1bmN0aW9uKCl7cmV0dXJuIGEubXkucm9vdCgpfSxHZXRBdHRzOmEuR2V0QXR0cyxjbWRTYXZlOmEuY21kU2F2ZSxkYXRhOntsYWJlbFdpZHRoOmM/MTkwOiJfcmVwbGljYXRvciI9PWJbMF0/MTgwOiJfZCI9PWJbMV0udG8oMik/MTY1OjE1MCxyZWFkb25seTphLmRhdGEucmVhZG9ubHksX2lkOmN8fHguZG9jLl9pZH19KX0sYmluZDoidGhpcy5Eb2MifSwiI3N0YXRlLXByb3h5Ijp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXM7eC5yZXY/eC5wYXRoLmxhc3QoKSE9eC5kb2MuX2lkP3gucGF0aFt4LnBhdGgubGVuZ3RoLTFdPSJfIit4LnJldjp4LnBhdGgucHVzaCgiXyIreC5yZXYpOngucGF0aC5sYXN0KCkhPXguZG9jLl9pZCYmKHgucGF0aC5sZW5ndGg9KHgucGF0aC5sZW5ndGgtMSkuY2xhbXAoMiw2KSkseC5yZXYhPXgucmV2bGFzdCYmKCQubXkucmFkaW8oInBhdGhjaGFuZ2UiLHtpZDp4LnRhYmlkLHBhdGg6eC5wYXRoLHRpdGxlOmIudGl0bGUoKX0pLHgucmV2bGFzdDI9eC5yZXZsYXN0LHgucmV2bGFzdD14LnJldixiLkdldERvYyghMCwhMCkudGhlbihmdW5jdGlvbigpe3gucmV2bGFzdDI9bnVsbH0pLmFsd2F5cyhmdW5jdGlvbigpe2IuQnVzeSghMSl9LmRlYm91bmNlKDUwKSkpfX0sd2F0Y2g6IiNhcHAtcmV2IixsaXN0ZW46e2RiZGVsZXRlZDpmdW5jdGlvbih4LGEpe2lmKGE9PXgucGF0aFswXSl7dmFyIGI9dGhpczsoZnVuY3Rpb24oKXtiLm15LnJvb3QoKS50cmlnZ2VyKCJ0YWJjbG9zZSIse3RhYmlkOngudGFiaWQsZW5mb3JjZTohMH0pfSkuZGVib3VuY2UoTnVtYmVyLnJhbmRvbSgxMCw1MCkpKCl9fX19LCIjYnRuLXJvb3QiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5wMnU7Yi5hdHRyKCJocmVmIiwiIyIrYyh4LnBhdGhbMF0pKSxiLmF0dHIoInRpdGxlIix0aGlzLmxhbmcuVElQX1VQLmFzc2lnbih4LnBhdGhbMF0pKX19LCIjYnRuLXJlbG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzO2IuR2V0RG9jKCEwLCEwKS5hbHdheXMoZnVuY3Rpb24oKXtiLkJ1c3koITEpfS5kZWJvdW5jZSg1MCkpfX0sbGlzdGVuOntmaWxldXBkYXRlOmZ1bmN0aW9uKHgsYSl7aWYoIXgucmV2JiZPYmplY3QuaXNPYmplY3QoYSkmJmEuZGI9PXgucGF0aFswXSYmYS5kb2M9PXguZG9jLl9pZCYmYS5yZXY9PXguZG9jLl9yZXYpe3ZhciBiPXRoaXM7Yi5HZXREb2MoITAsITApLmFsd2F5cyhmdW5jdGlvbigpe2IuQnVzeSghMSl9LmRlYm91bmNlKDUwKSl9fSxkYnVwZGF0ZTpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7bnVsbCE9YSYmKChPYmplY3QuaXNPYmplY3QoYSk/YS5kYjphKyIiKT09eC5wYXRoWzBdJiYheC5yZXYmJihhLmRvY3N8fFtdKS5maW5kKHguZG9jLl9pZCkmJihiPXRoaXMpLkdldERvYyghMCwhMCkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5CdXN5KCExKX0uZGVib3VuY2UoNTApKSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZG9jfHwheC5kb2MuX3Jldn19fSwiI2J0bi1kbHppcCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlJlYWRBbmRaaXAoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LmRvY3x8IXguZG9jLl9yZXZ9fX0sIiNidG4tZG9jLWRlbCI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO251bGwhPWEmJihiLkJ1c3koITApLGIuRGVsRG9jKCkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5CdXN5KCExKX0uZGVib3VuY2UoNTApKSl9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtpZih4LmRvYy5fZGVsZXRlZClyZXR1cm4hMDt2YXIgYj14LmNvbmZsaWN0c3x8W10sYz14LnJldnMmJngucmV2c1swXSYmeC5yZXZzWzBdPT14LmRvYy5fcmV2O3JldHVybiBiLmxlbmd0aD8hYyYmLTE9PWIuaW5kZXhPZih4LmRvYy5fcmV2fHwiIik6ISgvXl9sb2NhbFwvLy50ZXN0KHguZG9jLl9pZCl8fHguZG9jLl9yZXYmJmMpfSwic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4geC53YXNEZWx9fSx3YXRjaDpbIiNqc2VkaXRvciIsIiNhcHAtcmV2Il19LCIjYnRuLWRvYy1kaWZmIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5wMnU7Yi5hdHRyKCJocmVmIiwiI3sxfS9fZGlmZi97Mn0vezN9L3s0fSIuYXNzaWduKGMoeC5wYXRoWzBdKSxjKHgucGF0aFsxXSksIl8iKyh4LnJldnx8IiIpLCJfIikpfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNvbmZsaWN0cy5sZW5ndGgreC5yZXZzLmxlbmd0aDwyfHwvXl9sb2NhbFwvLy50ZXN0KHguZG9jLl9pZCl9fSx3YXRjaDpbIiNhcHAtcmV2Il19LCIjYnRuLWRvYy1zYXZlIjp7ZGVsYXk6MjAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuY21kU2F2ZSgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiEheC5kb2MuX2RlbGV0ZWQmJih4Lndhc0RlbHx8IXguZG9jLl9yZXYpfX0sd2F0Y2g6WyIjanNlZGl0b3IiXX0sIiNidG4tZG9jLXNhdmVhcyI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXM7ZnVuY3Rpb24gZCh4KXtmdW5jdGlvbiBhKCl7T2JqZWN0LmtleXMoeC5kb2MuX2F0dGFjaG1lbnRzfHx7fSkuZm9yRWFjaChmdW5jdGlvbihhKXt4LmRvYy5fYXR0YWNobWVudHNbYV09T2JqZWN0LnNlbGVjdCh4LmRvYy5fYXR0YWNobWVudHNbYV0sWyJjb250ZW50X3R5cGUiLCJkYXRhIl0pfSksYy5CdXN5KCExKSxjLlBobygpLlN3aXRjaChbeC5wYXRoWzBdLHguZG9jLl9pZF0sbnVsbCx7aXNOZXc6ITAscGF0aDpbeC5wYXRoWzBdLHguZG9jLl9pZF0sZG9jOk9iamVjdC5tZXJnZSh7X2lkOnguZG9jLl9pZH0sT2JqZWN0LnJlamVjdChjdy5saWIuZHJ5KHguZG9jKSxbIl9yZXYiLCJfaWQiXSkpfSl9Yy5CdXN5KCEwKSx4LmRvYy5fYXR0YWNobWVudHMmJk9iamVjdC5zaXplKHguZG9jLl9hdHRhY2htZW50cykmJk9iamVjdC52YWx1ZXMoeC5kb2MuX2F0dGFjaG1lbnRzKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIXguZGF0YX0pLmxlbmd0aD9jLkdldEF0dHMoITApLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9Yi5fYXR0YWNobWVudHM7aWYoYyl7eC5kb2MuX2F0dGFjaG1lbnRzfHwoeC5kb2MuX2F0dGFjaG1lbnRzPXt9KTt2YXIgZD14LmRvYy5fYXR0YWNobWVudHM7T2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbih4KXtkW3hdJiYhZFt4XS5kYXRhJiYoZFt4XT1PYmplY3Quc2VsZWN0KGNbeF0sWyJjb250ZW50X3R5cGUiLCJkYXRhIl0pKX0pfWVsc2UgZD14LmRvYy5fYXR0YWNobWVudHN8fHt9O09iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24oeCl7ZFt4XS5kYXRhfHxkZWxldGUgZFt4XX0pLGEoKX0pOmEoKX1udWxsIT1hJiZjLm15Lm1vZGFsKCIjYnRuLWRvYy1zYXZlYXMiLHtyb290OmMubXkucm9vdCgpLHNjcmVlbjohMCxnbG9iYWw6ITAsZXNjOiEwLGVudGVyOiExLGNsb3NlOmMuUGhvKCJsYW5nIikuQlROX1hETEcsd2lkdGg6NDUwLHo6MTk5NSxjc3M6InAyMCBwdDE1IixtYW5pZmVzdDokLmV4dGVuZCghMCx7UmVxOmMuUmVxLFBobzpjLlBobyxSVDpjLlJUfSxjLk5ld0RvY1RndCksZGF0YTpPYmplY3QuY2xvbmUoYy5kYXRhLCEwKX0pLnRoZW4oZnVuY3Rpb24oeCl7Yj14fSkudGhlbihjLkFwcGx5RWRzKS50aGVuKGZ1bmN0aW9uKCl7ZChiKX0pfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlzTmV3fSwiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4geC53YXNEZWx9fSx3YXRjaDpbIiNqc2VkaXRvciJdfSwiI2RvYy1oaXN0b3J5Ijp7ZGVsYXk6MjAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9KGEuZGF0YSxPYmplY3QuaXNBcnJheSxPYmplY3QuaXNPYmplY3QsYS50YWdFbW9qaSk7YS5uaWNlU2Nyb2xsKHgpLHgubGlzdCh7ZGF0YTphLkhpc3Rvcnkuc3RlcHMsZGVsYXk6MCxjaHVuazo1MCxzb3J0Qnk6bnVsbCxpZDpmdW5jdGlvbih4KXtyZXR1cm4geC5pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4geC5pZCt4Lmhhc2h9LHRlbXBsYXRlOmZ1bmN0aW9uKHgsYyl7cmV0dXJuIGEuSFRNTC5IaXN0b3J5Um93LmFzc2lnbih7cGF0aDpiKHguc3BhdGgpLGljbzoiaW5zIj09eC5vcD8icGx1cyI6ImRlbCI9PXgub3A/Im1pbnVzIjoiY2hlY2siLGhhc2g6eC5oYXNoLHN2YWw6Yih4LnN2YWwpLG9wOngub3AsdGlwOlsiQ2xpY2sgdG8gdW5kbyAiKygiaW5zIj09eC5vcD8iaW5zZXJ0aW9uLiI6ImRlbCI9PXgub3A/ImRlbGV0aW9uLiI6ImVkaXRzLiIpLCJpbnMiIT14Lm9wPyJSZXN0b3JlZCB2YWx1ZTogIit4LnZhbC50cnVuY2F0ZSgxNTApLmVzY2FwZUhUTUwoKTpudWxsXS5jb21wYWN0KCkuam9pbigiXG4iKX0pfX0pLHgub24oImNsaWNrLm15IiwiLmgtcm93IixmdW5jdGlvbih4KXt2YXIgYj0kKHguY3VycmVudFRhcmdldCkuaW5kZXgoKTthLkhpc3RvcnkudW5kbyhiKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiYoYi5saXN0KCJkYXRhIix0aGlzLkhpc3Rvcnkuc3RlcHMpLGJbMF0uc2Nyb2xsVG9wPTFlNil9LHdhdGNoOlsiI2J0bi1oaXN0b3J5LWNsZWFyIl19LCIjc3R5bGUtaGlzdG9yeSI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPSIubXktZm9ybS0iK3gubXkucm9vdCgpLm15KCkuY2lkKycgLmgtcm93W2RhdGEtcGF0aD0iezF9Il06aG92ZXJ+Lmgtcm93W2RhdGEtcGF0aHw9InsxfSJde2JhY2tncm91bmQtY29sb3I6ICNlZmY2ZmY7IG9wYWNpdHk6MC41O30nLGI9e307cmV0dXJuIHguSGlzdG9yeS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2JbeC5oYXNoXT0xfSksT2JqZWN0LmtleXMoYikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBhLmFzc2lnbih4KX0pLmpvaW4oIlxuIil9LHdhdGNoOlsiI2RvYy1oaXN0b3J5IiwiI2J0bi1oaXN0b3J5LWNsZWFyIl19LCIjZW1wdHktaGlzdG9yeSI6e2RlbGF5OjIwLGNzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5IaXN0b3J5LnN0ZXBzLmxlbmd0aH19LHdhdGNoOlsiI2RvYy1oaXN0b3J5Il19LCIjYnRuLWhpc3RvcnktY2xlYXIiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5IaXN0b3J5LmNsZWFyKCEwKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiF0aGlzLkhpc3Rvcnkuc3RlcHMubGVuZ3RofX0sd2F0Y2g6WyIjZG9jLWhpc3RvcnkiXX0sIiNidG4taGlzdG9yeS11bmRvIjp7ZGVsYXk6MTAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuY21kVW5kbygpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuSGlzdG9yeS5zdGVwcy5sZW5ndGh9fSx3YXRjaDpbIiNkb2MtaGlzdG9yeSJdfX0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI2pzZWRpdG9yIikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxjbWRVbmRvOmZ1bmN0aW9uKCl7dGhpcy5IaXN0b3J5LnN0ZXBzLmxlbmd0aCYmdGhpcy5IaXN0b3J5LnVuZG8odGhpcy5IaXN0b3J5LnN0ZXBzLmxlbmd0aC0xKX0sY21kU2F2ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGE7YS5yZWFkb25seXx8YS53YXNEZWwmJmEuZG9jLl9kZWxldGVkfHx4LkFwcGx5RWRzKCkudGhlbihmdW5jdGlvbigpe3guU2F2ZUFsbCgpLmFsd2F5cyhmdW5jdGlvbigpe3guQnVzeSghMSl9LmRlYm91bmNlKDUwKSl9KX0sSFRNTDp7QXBwOic8ZGl2IGlkPSJjb2wtZWQiIGNsYXNzPSJkaWIgdmF0IHduIj48ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgdzE1NSBmczk1Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIGJsdWUgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSH0iIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxOXB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB1aS1zZWFyY2gtY2xlYXIiIHN0eWxlPSJtYXJnaW4tbGVmdDotMTlweCFpbXBvcnRhbnQ7Im9uY2xpY2s9IiQodGhpcykuc2libGluZ3MoXCdpbnB1dDplcSgwKVwnKS52YWwoXCdcJykuYmx1cigpIj48L3NwYW4+PC9kaXY+PGEgaWQ9ImJ0bi1yb290IiBjbGFzcz0idzM2IGJ1dHRvbiBtcjIgdGRuIGRpYiB2YXQgcGwwIHByMCBmdzYwMCByb2hpZGUiIHRpdGxlPSJEQiBkb2MgbGlzdCI+Li4vPC9hPjxidXR0b24gaWQ9ImJ0bi1yZWxvYWQiIGNsYXNzPSJ3MzYgbXIyIiB0aXRsZT0ie1RJUF9SRUxPQUR9Ij48c3BhbiBjbGFzcz0iZmktbG9vcCI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1kbHppcCIgY2xhc3M9InczNiBtcjcgcm9oaWRlIiB0aXRsZT0ie1RJUF9CVE5fRExaSVB9Ij48c3BhbiBjbGFzcz0iZmktZG93bmxvYWQiPjwvc3Bhbj48L2J1dHRvbj48ZGl2IGlkPSJhcHAtdGl0bGUiIGNsYXNzPSJkaWIgdmF0IGVsbCBtcjcgbnciPjwvZGl2PjxkaXYgY2xhc3M9ImRpYiB2YXQgdzE4MCBtcjYgcm9oaWRlIj48aW5wdXQgaWQ9ImFwcC1yZXYiIHR5cGU9InRleHQiIGNsYXNzPSJ3MTAwcCBmczExMCB2YXQiPjwvZGl2PjxkaXYgY2xhc3M9Im53IGRpYiB2YXQiPjxidXR0b24gaWQ9ImJ0bi1kb2Mtc2F2ZSIgY2xhc3M9ImdyZWVuIG1yMiByb2hpZGUiPntCVE5fU0FWRX08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tZG9jLXNhdmVhcyIgY2xhc3M9InRlYWwgbXIyIHJvaGlkZSBwcjA1ZW0iPntCVE5fU0FWRUFTfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1kb2MtZGVsIiBjbGFzcz0icmVkIG1yMiByb2hpZGUiPntCVE5fREVMfTwvYnV0dG9uPjxhIGhyZWY9IiIgaWQ9ImJ0bi1kb2MtZGlmZiIgY2xhc3M9ImhpZGUgYnV0dG9uIHRkbiB2YXQgcm9oaWRlIiBzdHlsZT0ibGluZS1oZWlnaHQ6MS40ZW07Ij57QlROX0RJRkZ9PC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InBhbmVsaGVpZ2h0IGZlYXRoZXIiPjxkaXYgaWQ9ImpzZWRpdG9yIiBjbGFzcz0icGFuZWxoZWlnaHQgcGwyMCBwcjIwIHB0MTAgcGIxNiIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImNvbC1oaXN0b3J5IiBjbGFzcz0iZGliIHZhdCB4Z3JheSB3biByb2hpZGUiPjxkaXYgaWQ9ImgtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIG53IHB0MTggcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIiPjxidXR0b24gaWQ9ImJ0bi1oaXN0b3J5LXVuZG8iIGNsYXNzPSJsaDE0MCBtcjIiPntCVE5fSElTVF9VTkRPfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1oaXN0b3J5LWNsZWFyIiBjbGFzcz0ibGgxNDAiPntCVE5fSElTVF9DTEVBUn08L2J1dHRvbj48L2Rpdj48c3BhbiBjbGFzcz0iZnMxNTAgZGliIHZhdCBwbDUgbzkwIHB0MyI+e1RYVF9ISVNUX1RJVExFfTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbGhlaWdodCBmZWF0aGVyIj48ZGl2IGlkPSJlbXB0eS1oaXN0b3J5IiBjbGFzcz0iaGlkZSBwYWJjIHBsNSBwdDggZ3JheSIgc3R5bGU9InRvcDowOyBsZWZ0OjA7Ij57VFhUX0hJU1RfRU1QVFl9PC9kaXY+PGRpdiBpZD0iZG9jLWhpc3RvcnkiIGNsYXNzPSJwYW5lbGhlaWdodCBwcjIwIHB0MTAgcGIxNiIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjwvZGl2PjwvZGl2PjxzdHlsZSBpZD0ic3R5bGUtaGlzdG9yeSIgY2xhc3M9ImhpZGUiPjwvc3R5bGU+PGRpdiBpZD0ic2Nyb2xsLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+PC9kaXY+PGRpdiBpZD0ic3RhdGUtcHJveHkiIGNsYXNzPSJoaWRlIj48L2Rpdj48ZGl2IGlkPSJ6aXAtdGVzdGVyIiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxIaXN0b3J5Um93Oic8ZGl2IGNsYXNzPSJoLXJvdyB3MTAwcCBjcCBvcC17b3B9IiB0aXRsZT0ie3RpcH0iIGRhdGEtcGF0aD0ie2hhc2h9Ij48ZGl2IGNsYXNzPSJoLXVidG4gcGFiYyBwbDQgcHQzIGZzOTUgYmx1ZTIiIHN0eWxlPSJ0b3A6MDsgcmlnaHQ6MDsgdHJhbnNmb3JtOnJvdGF0ZVkoMTgwZGVnKTsiPjxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIj48L3NwYW4+PC9kaXY+PHNwYW4gY2xhc3M9IncxNSBkaWIgdmF0IG1sLTE1IG80MCBmczg1IG10MSBmaS17aWNvfSI+PC9zcGFuPjxkaXYgY2xhc3M9Im13MTAwcCB0ZG4gZGliIG53IG9oIGVsbCBwc2V1ZG9saW5rIj57cGF0aH0gPC9kaXY+PGRpdiBjbGFzcz0idGRpIG13MTAwcCBmczkwIGxoMTMwIG83MCBkaWIgdmFsIG53IG9oIGVsbCI+e3N2YWx9PC9kaXY+PC9kaXY+J30sSGlzdG9yeTp7aW5pdDpmdW5jdGlvbih4KXtPYmplY3Qua2V5cyh4Lkhpc3RvcnkpLmZvckVhY2goZnVuY3Rpb24oYSl7ImZ1bmN0aW9uIj09dHlwZW9mIHguSGlzdG9yeVthXSYmKHguSGlzdG9yeVthXT14Lkhpc3RvcnlbYV0uYmluZCh4KSl9KSx4Lkhpc3RvcnkuY2xlYXIoKX0sZW1pdDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD10aGlzLGU9ZC5IaXN0b3J5LGY9ZC5Eb2NbMF0uZG9jLGc9ITAsaD14LmZsYXR0ZW4oKSxpPVtdLGo9T2JqZWN0LmlzT2JqZWN0LGs9T2JqZWN0LmlzQXJyYXksbD0oZS5oYXNoLGUucmFuZCk7aWYoaihhKSYmaihiKSl7dmFyIG09W2EsYl0ucmVkdWNlKGZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihjKXt4W2NdfHwoeFtjXT1bdm9pZCAwLHZvaWQgMF0pLHhbY11bYl09Y3cubGliLnNkYm0oYVtjXSl9KSx4fSx7fSk7T2JqZWN0LnZhbHVlcyhtKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHhbMF0hPXhbMV19KS5sZW5ndGg8MTAmJihPYmplY3Qua2V5cyhtKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjPW1beF07aWYoY1swXSE9Y1sxXSl7dmFyIGQ9bnVsbD09Y1swXT8iaW5zIjp2b2lkIDA9PT1jWzFdPyJkZWwiOiJ1cGQiO2kucHVzaChbaC5jb25jYXQoeCksZCx2b2lkIDA9PT1jWzBdP2JbeF06YVt4XSwiZGVsIj09ZD9udWxsOmJbeF1dKX19KSxnPSExKX1pZihnKXt2YXIgbj12b2lkIDA9PT1hPyJpbnMiOnZvaWQgMD09PWI/ImRlbCI6InVwZCI7aS5wdXNoKFtoLG4sImlucyI9PW4/YjphLCJkZWwiPT1uP251bGw6Yl0pfWZ1bmN0aW9uIG8oeCxhLGIsZCl7dmFyIGc9Y3cubGliLmdldHJlZihmLHguc2xpY2UoMSkudG8oLTEpKSxoPWsoZyksaT0iZGVsIj09YSYmaD8rK2UuZGVsczowLGo9eC5sZW5ndGgsbT1KU09OLnN0cmluZ2lmeShiLG51bGwsIiAiKSxuPW51bGw7aWYoIWgpe3ZhciBvPU9iamVjdC5rZXlzKGcpLHA9by5pbmRleE9mKHgubGFzdCgpKTsiZGVsIiE9YT9uPVtwPjA/b1twLTFdOm51bGwscD09by5sZW5ndGgtMT9udWxsOnA+LTE/b1twKzFdOm51bGxdOmMmJihuPWMpfXZhciBxPWUucmVoYXNoKHtpZDpsKCksdHM6RGF0ZS5ub3coKSxwYXRoOngsY3R4Om4saGFzaDoiIixvcDphLHZhbDptLGRlbDppLHJvdzpoLHNwYXRoOiIiLHN2YWw6KCJkZWwiPT1hPyLCoHdhcyAiK20udG8oMTAwKS5yZXBsYWNlKC9cblxzKy9nLCIiKToiwqA9wqAgIitKU09OLnN0cmluZ2lmeShkKS50bygxMDApKS5yZXBsYWNlKC9cXG4vZywiwrYiKS5lc2NhcGVIVE1MKCkucmVwbGFjZSgvwrYvZywnPHNwYW4gY2xhc3M9ImdyYXkyIHBsMSBwcjEiPsK2PC9zcGFuPicpfSk7aWYoImRlbCI9PWEmJmgpe3ZhciByPWUuaGFzaCh4LnRvKC0xKSwwKSsiLSIscz0reC5sYXN0KCk7ZS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHguaGFzaC5zdGFydHNXaXRoKHIpKXt2YXIgYT0reC5wYXRoW2otMV07YSE9c3x8eC5kZWw/YT5zJiYoeC5wYXRoW2otMV09KGEtMSkuY2xhbXAoMCwxZTYpKyIiLGUucmVoYXNoKHgpKTooeC5kZWw9aSxlLnJlaGFzaCh4KSl9fSl9aWYoImlucyI9PWEmJmgpe3I9ZS5oYXNoKHgudG8oLTEpLDApKyItIixzPSt4Lmxhc3QoKTtlLnN0ZXBzLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5oYXNoLnN0YXJ0c1dpdGgocikpe3ZhciBhPSt4LnBhdGhbai0xXTthPj1zJiYoeC5wYXRoW2otMV09KGErMSkuY2xhbXAoMCwxZTYpKyIiLGUucmVoYXNoKHgpKX19KX1lLnN0ZXBzLnB1c2gocSl9aS5mb3JFYWNoKGZ1bmN0aW9uKHgpe28oeFswXSx4WzFdLHhbMl0seFszXSl9KSxkLm15LmNoZWNrKCIjZG9jLWhpc3RvcnkiKX0sdW5kbzpmdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcyxiPShhLmRhdGEsYS5IaXN0b3J5KSxjPWIuc3RlcHMsZD1jW3hdLGU9ZC5oYXNoLGY9Yi5oYXNoKGQucGF0aC50bygtMSksMCkrIi0iLGc9ZC5wYXRoLnNsaWNlKDEpLGg9Zy5sZW5ndGgsaT1KU09OLnBhcnNlKGQudmFsKSxqPWQub3Asaz0wLGw9YS5Eb2NbMF0uZG9jLG09KE9iamVjdC5pc09iamVjdCxPYmplY3QuaXNBcnJheSksbj0oYi5oYXNoLDApLG89bDtuPGcubGVuZ3RoLTEmJm8mJiJvYmplY3QiPT10eXBlb2YgbztuKyspbz0ib2JqZWN0Ij09dHlwZW9mIG9bZ1tuXV0mJm51bGwhPW9bZ1tuXV0/b1tnW25dXTpudWxsO2lmKCFvKXJldHVybiByKCJOb2RlIHRvIG1vZGlmeSBkb2VzbuKAmXQgZXhpc3QiKTtmdW5jdGlvbiBwKHgpe2lmKHgpZm9yKHZhciBhPStnLmxhc3QoKSxkPWYsZT0wO2U8Yy5sZW5ndGg7ZSsrKWNbZV0uaGFzaC5zdGFydHNXaXRoKGQpJiYrY1tlXS5wYXRoW2hdPj1hJiYoY1tlXS5wYXRoW2hdPSIiKygrY1tlXS5wYXRoW2hdK3gpLmNsYW1wKDAsMWU2KSxiLnJlaGFzaChjW2VdKSl9ZnVuY3Rpb24gcSgpe3ZhciB4PSJkZWwiPT1qPyJpbnMiOiJpbnMiPT1qPyJkZWwiOiJ1cGQiLGI9YS5teS5maW5kKCIjanNlZGl0b3I+ZGl2IikubXkoIm1hbmlmZXN0IikuTXV0YXRlKHtwYXRoOmcsY3R4OmQuY3R4LHZhbDoiZGVsIiE9eD9pOnZvaWQgMCxvcDp4LGV4cGFuZDohMCxibGluazoiYmctYmx1ZTcifSk7Yi5lcnJvcj9yKGIuZXJyb3IpOmEubXkuY2hlY2soIiNkb2MtaGlzdG9yeSIpfWZ1bmN0aW9uIHIoeCl7Y3cubGliLm5vdGUoeCwiZXJyb3IiLDRlMyksYS5teS5jaGVjaygiI2RvYy1oaXN0b3J5Iil9ImRlbCIhPWomJmQucm93JiZjLmZpbHRlcihmdW5jdGlvbihhLGIpe3JldHVybiEoYjw9K3gpJiYoYS5yb3cmJiJkZWwiPT1hLm9wJiZhLmRlbD09ZC5kZWwmJmEucGF0aC5sZW5ndGg9PWgrMSYmYS5oYXNoLnN0YXJ0c1dpdGgoZikpfSkubGVuZ3RoJiYoaj0iaW5zIj09aj8ibm9vcCI6InVwZCI9PWo/ImRlbCI6aiksImRlbCI9PWo/aD9tKG8pJiYvXlxkKyQvLnRlc3QoZy5sYXN0KCkpJiZwKDErayk6bD1pOiJ1cGQiPT1qfHwiaW5zIj09aiYmaCYmbShvKSYmL15cZCskLy50ZXN0KGcubGFzdCgpKSYmcCgtMStrKSxiLnN0ZXBzPWMubWFwKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PXh8fGI+eCYmYS5oYXNoLnN0YXJ0c1dpdGgoZSk/bnVsbDphfSkuY29tcGFjdCgpLHEoKX0sY2xlYXI6ZnVuY3Rpb24oeCl7dGhpcy5IaXN0b3J5LnN0ZXBzPVtdLHRoaXMuSGlzdG9yeS5kZWxzPTAseCYmdGhpcy5teS5jaGVjaygiI2RvYy1oaXN0b3J5Iil9LGhhc2g6ZnVuY3Rpb24oeCxhKXt2YXIgYj14LmZsYXR0ZW4oKSxjPWIubGVuZ3RoLTE7cmV0dXJuIGIubWFwKGZ1bmN0aW9uKHgsYil7cmV0dXJuIGN3LmxpYi5zZGJtKGIhPWN8fDA9PWE/eDpbeCxhXSl9KS5qb2luKCItIil9LHJlaGFzaDpmdW5jdGlvbih4KXtyZXR1cm4geC5oYXNoPXRoaXMuSGlzdG9yeS5oYXNoKHgucGF0aCx4LmRlbCkseC5zcGF0aD14LnBhdGgubGVuZ3RoPDI/IkRvYyByb290Ijp4LnBhdGguc2xpY2UoMSkuam9pbigi4oCJLuKAiSIpLnRydW5jYXRlKDMyLCJtaWRkbGUiLCIuLi4iKS5lc2NhcGVIVE1MKCkseH0scmFuZDpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIucmFuZG9tKDAsMjE3Njc4MjMzNSkudG9TdHJpbmcoMzYpLnBhZExlZnQoNiwiMCIpfSxzdGVwczpbXSxkZWxzOjB9LHN0eWxlOnsiICI6ZnVuY3Rpb24oeCl7dmFyIGE9MHx4LndpZHRoKCksYj0wfChhLzQuNSkuY2xhbXAoMjcwLDQ1MCksYz1hLWIsZD0id2lkdGg6ezF9cHgiO3JldHVybnsiICNjb2wtZWQiOmQuYXNzaWduKGMpLCIgI2NvbC1oaXN0b3J5IjpkLmFzc2lnbihiKX19LCIgI2pzZWRpdG9yIjp7Ij5kaXYiOiJtaW4taGVpZ2h0Ojk5LjklOyIsIj4ubXktZm9ybT5zZWN0aW9uPiNlZGl0b3IiOiJtaW4taGVpZ2h0OmNhbGMoMTAwdmggLSA4MHB4KSIsIj4ubXktZm9ybT5zZWN0aW9uPiNlZGl0b3I+I2RvYz4uaWFjdC5idXR0b25zIjoicGFkZGluZy1yaWdodDozcHg7IiwiIC5pYWN0IC5idXR0b24iOiIgIGhlaWdodDogMS43ZW07bGluZS1oZWlnaHQ6IDEuMWVtOyJ9LCIgLm15LW1vZGFsLWZvcm0iOnsiIC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIjoibGluZS1oZWlnaHQ6MTdweDsiLCIgLkNvZGVNaXJyb3Itc2Nyb2xsIjoibWluLWhlaWdodDoxNTBweDttYXgtaGVpZ2h0OmNhbGMoMTggKiAxN3B4ICsgNnB4KTsiLCIgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJ0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7IiwiLmVkLWVycm9yIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyIsIiAuQ29kZU1pcnJvciI6Im1pbi1oZWlnaHQ6MTUwcHg7IGhlaWdodDphdXRvOyIsIiAuYnV0dG9ucyBidXR0b24iOiJtYXJnaW4tcmlnaHQ6IDJweDtwYWRkaW5nOiAwLjRlbSAwLjdlbSAwLjRlbSAwLjdlbTtmb250LXNpemU6IDkwJTsifSwiICNhcHAtdGl0bGUiOnsiIjoibWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0MjBweCAtIDQwcHggLSAxNi4zZW0pOyBtaW4td2lkdGg6NmVtOyBvcGFjaXR5OjAuODsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOyIsIjpob3ZlciI6Im9wYWNpdHk6MTsifSwiICNkb2MtaGlzdG9yeSI6eyIgLmgtcm93Ijp7IiI6ImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IGJvcmRlci1yYWRpdXM6MXB4OyBtYXJnaW4tYm90dG9tOjFweDsgcGFkZGluZzoycHggMTVweCAxcHggMjBweDt0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXM7IGxpbmUtaGVpZ2h0OjEuM2VtOyIsIiAudGRpIjoidGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IiwiLm9wLWRlbCI6InRleHQtZGVjb3JhdGlvbjpyZ2JhKDAsMCwwLDAuNCkgc29saWQgbGluZS10aHJvdWdoIWltcG9ydGFudDsiLCIgLmgtdWJ0biI6Im9wYWNpdHk6MDsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOyIsIjpob3ZlciI6eyIiOiJiYWNrZ3JvdW5kLWNvbG9yOiAjZTJmMGZmOyIsIiAuaC11YnRuIjoib3BhY2l0eToxOyJ9fX0sIiAucmVkLXN0cmlrZTphZnRlciI6J3Bvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OisxOyB3aWR0aDoxMDAlOyBoZWlnaHQ6NTAlOyB0b3A6MDsgbGVmdDowO2NvbnRlbnQ6IiAiOyBib3JkZXItYm90dG9tOjEuNXB4IGRhc2hlZCAjZmUyNjI2OyBwb2ludGVyLWV2ZW50czpub25lOycsIi5yZWFkb25seWpzb24gLnJvaGlkZSI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiIC5lZC1ub2RlLTEzdDZkNmM1Ijp7IiAuaWFjdCI6InRvcDoycHgiLCIgLmlkZXNjIjp7IiI6InBhZGRpbmctdG9wOjFweDsiLCIgLmZzOTUiOiJwYWRkaW5nLXRvcDoxcHg7In19fSxFeHRFZDp7ZGF0YTp7bWF4RGVwdGg6NTAwfSxIVE1MOntJdGVtUm9vdDonPGRpdiBjbGFzcz0iaW5hdiBpcm9vdCI+PGRpdiBjbGFzcz0iaWtleSIgdGl0bGU9IkZvbGQvdW5mb2xkIGFsbCBmaXJzdC1sZXZlbCBzdWJ0cmVlcyI+PC9kaXY+PGRpdiBjbGFzcz0iaWRlc2MgY3AiIHRpdGxlPSJFZGl0IGFzIHJhdyBKU09OLCBKUyBzeW50YXggYWxsb3dlZCI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iaWVkaXRvciBwYW5lbGhlaWdodC0zMiI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGNsYXNzPSJidG4tYWRkIGJ1dHRvbiBncmVlbiIgdGl0bGU9IkFkZCBuZXcgcHJvcGVydHkiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXBsdXMiPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi10YWtlb3V0IGJ1dHRvbiIgdGl0bGU9IkNvcHkgLyBwYXN0ZSAvIGVkaXQgYXMgSlNPTiI+PHNwYW4gY2xhc3M9ImZpLXNob3BwaW5nLWJhZyI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgaGlkZSI+PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuLWpzb24gaGlkZSI+PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWF0dGFjaCIgY2xhc3M9ImJ1dHRvbiIgdGl0bGU9IkFkZCBhdHRhY2htZW50IGZpbGVzIHRvIHRoZSBkb2N1bWVudCIgc3R5bGU9IndpZHRoOjc0cHgiPjxzcGFuIGNsYXNzPSJmaS1wYXBlcmNsaXAgbXIzIG1sMSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmczg1IGxoMTIwIGRpYiB2YXQiPkF0dGFjaOKApjwvc3Bhbj48L2J1dHRvbj48L2Rpdj4nfSx1aTp7IiNkb2MiOnttYW5pZmVzdDpmdW5jdGlvbih4KXtpZighdGhpcy5IVE1MLkl0ZW1Sb290KXJldHVybiB0aGlzLiRtdWx0aTt2YXIgYT10aGlzLGI9YS4kZmlsZXMuQWRkO3JldHVybiAkLmV4dGVuZCghMCx7fSxhLiRtdWx0aSx7SFRNTDphLkhUTUwuSXRlbVJvb3QsdWk6eyIjYnRuLWF0dGFjaCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGMpe2lmKG51bGwhPWEpe3ZhciBkPXRoaXM7aWYoYy5kYXRhKCJtb2RhbCIpKXJldHVybiBjLm1vZGFsKCEwKSxlKCksdm9pZCAwO2MucGFyZW50KCkuYWRkQ2xhc3MoImhvdmVyIiksZC5teS5tb2RhbCgiI2J0bi1hdHRhY2giLHttYW5pZmVzdDpiLGRhdGE6e30sd2lkdGg6NTAwLGFsaWduOiJ0b3A6MTAzJSwgcmlnaHQ6MHB4OyIsbm9zZToidG9wIn0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoYS5maWxlcy5sZW5ndGgpe3ZhciBiPXgudmFsdWUuX2F0dGFjaG1lbnRzLGM9Yj8kLmV4dGVuZCghMCx7fSxiKTp2b2lkIDA7Ynx8KGI9eC52YWx1ZS5fYXR0YWNobWVudHM9e30pLGEuZmlsZXMuZm9yRWFjaChmdW5jdGlvbihhKXt4LnZhbHVlLl9hdHRhY2htZW50c1thLm5hbWVdPU9iamVjdC5zZWxlY3QoYSxbImNvbnRlbnRfdHlwZSIsImRhdGEiXSl9KSxkLlJUKCJkYXRhIikudmlld3N0YXRlfHwoZC5SVCgiZGF0YSIpLnZpZXdzdGF0ZT17fSksZC5SVCgiZGF0YSIpLnZpZXdzdGF0ZVtjdy5saWIuc2RibSgiUm9vdOKdgF9hdHRhY2htZW50cyIpXT0yLGQuTGlzdD1kLk1ha2VMaXN0KHgpLGQuTm9kZVVwZGF0ZWQoWyJSb290IiwiX2F0dGFjaG1lbnRzIl0sYyx4LnZhbHVlLl9hdHRhY2htZW50cyksZC5teS5yZWRyYXcoKX19LmRlYm91bmNlKDIwKSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZSgpfSl9ZnVuY3Rpb24gZSgpe2MucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhvdmVyIil9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUlQoImRhdGEiKS5yZWFkb25seX19fX19KX19fSxOb2RlVXBkYXRlZDpmdW5jdGlvbih4LGEsYixjKXt0aGlzLm15LnBhcmVudCgpLkhpc3RvcnkuZW1pdCh4LGEsYixjfHxudWxsKX0sRWRpdG9ySW52b2tlZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1hLm15LnJvb3QoKSxkPWMuaGVpZ2h0KCksZT1jLnBhcmVudHMoIiNqc2VkaXRvciIpLmVxKDApLGY9ZVswXS5zY3JvbGxUb3AsZz1lLm9mZnNldCgpLnRvcCxoPWMub2Zmc2V0KCkudG9wLWcsaT1iLlBobygibXkiKS5yb290KCkuaGVpZ2h0KCktNjI7aD5pLWQtMzAmJmUuYW5pbWF0ZSh7c2Nyb2xsVG9wOihoK2QrZi1pKzQwKS5jbGFtcCgwLDFlNikrInB4In0sMTAwKX19LFNhdmVBbGw6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9T2JqZWN0Lm1lcmdlKGMuZG9jLl9kZWxldGVkP3tfZGVsZXRlZDohMH06e30sY3cubGliLmRyeShjLmRvYyksITApLGU9JC5EZWZlcnJlZCgpLGY9Yi5sYW5nO2Mud2FzRGVsJiYhMT09PWMuZG9jLl9kZWxldGVkJiZkZWxldGUgZC5fcmV2O3ZhciBnPSJQT1NUIixoPVtjLnBhdGhbMF1dLGk9eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9O3JldHVybiJzdHJpbmciPT10eXBlb2YgZC5faWQ/Yy5pc05ld3x8IWQuX3Jldnx8L1wvLy50ZXN0KGQuX2lkKXx8Yy53YXNEZWx8fChnPSJQVVQiLGgucHVzaChkLl9pZCkpOmRlbGV0ZSBkLl9pZCxudWxsPT1kLl9pZCYmKGRlbGV0ZSBkLl9kZWxldGVkLGRlbGV0ZSBkLl9yZXYpLHh8fGF8fGIuQnVzeS5kZWJvdW5jZSgxMCkoITApLGooZCkuZmFpbChmdW5jdGlvbihnLGgsaSl7NDA5IT1nPyhhfHxjdy5saWIubm90ZShmLkVSUl9TQVZFLmFzc2lnbihnKyI6ICIrbChpLnJlYXNvbnx8aCkpLCJlcnJvciIpLGUucmVqZWN0KGcsaCxpKSk6Yi5SZXEoe21ldGhvZDoiR0VUIix1cmw6W2MucGF0aFswXSxkLl9pZF19KS50aGVuKGZ1bmN0aW9uKGcpeyQubXkubW9kYWwoe21hbmlmZXN0OmIuUGhvKCJDb25maXJtIiksd2lkdGg6NTAwLGRhdGE6e3RleHQ6Zi5NU0dfQ09ORkxJQ1QuYXNzaWduKG0oZC5faWQsNDApLG0oZC5fcmV2LDI1KSxtKGcuX3JldiwyNSkpLHllczpmLkJUTl9DT05GTElDVF9ZRVMsbm86Zi5CVE5fQ09ORkxJQ1RfTk8sY2FuY2VsOiIiLHVzZUJ1dHRvbnM6ITB9LGNzczoieGdyYXkgbGgxNzAgcDIwIHBiMjUiLGVzYzohMSxlbnRlcjohMSxmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbihkKXsieWVzIj09ZC5jbWQ/KGMuZG9jLl9yZXY9Zy5fcmV2LGIuU2F2ZUFsbCh4LGEpLnRoZW4oZnVuY3Rpb24oeCl7byghMCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtlLnJlamVjdCh4LGEsYil9KSk6aygpfSkuZmFpbChrKX0pLmZhaWwoZnVuY3Rpb24oeCxiLGMpe2NvbnNvbGUubG9nKHgsYixjKSxhfHxjdy5saWIubm90ZShmLk1TR19DT05GTElDVF9MT0FERkFJTCksZS5yZWplY3QoOTk5LCJDYW5jZWxsZWQgYnkgdXNlciIsZi5NU0dfQ09ORkxJQ1RfTE9BREZBSUwpfSl9KSxlLmFsd2F5cyhmdW5jdGlvbih4KXtyZXR1cm4gYy53YXNEZWw9ISFjLmRvYy5fZGVsZXRlZCxiLkJ1c3kuZGVib3VuY2UoMTUpKCExKSx4fSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gaihhKXtyZXR1cm4gYi5SZXEoe3VybDpoLG1ldGhvZDpnLGhlYWRlcnM6aSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShhKSxkYXRhVHlwZToiUFVUIj09Zz8idGV4dCI6Impzb24ifSkudGhlbihmdW5jdGlvbihhKXt2YXIgYj1hLGQ9Yy5kb2M7Yy53YXNEZWw9ISFjLmRvYy5fZGVsZXRlZDt0cnl7Yj1PYmplY3QuaXNTdHJpbmcoYSk/SlNPTi5wYXJzZShhKTphfWNhdGNoKHgpe31pZih4KXJldHVybiBuKCksZS5yZXNvbHZlKCQuZXh0ZW5kKGQse19pZDpiLmlkLF9yZXY6Yi5yZXZ9KSk7ZC5fZGVsZXRlZHx8ZC5fY29uZmxpY3RzJiZkLl9jb25mbGljdHMuaW5kZXhPZihkLl9yZXYpPi0xJiZjLnJldj9vLmRlYm91bmNlKDIwKShiLnJldik6by5kZWJvdW5jZSgyMCkoITApfSl9ZnVuY3Rpb24gaygpe2F8fGN3LmxpYi5ub3RlKGYuTVNHX0NPTkZMSUNUX0NBTkNFTExFRCksZS5yZWplY3QoOTk5LCJDYW5jZWxsZWQgYnkgdXNlciIsZi5NU0dfQ09ORkxJQ1RfQ0FOQ0VMTEVEKX1mdW5jdGlvbiBsKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9ZnVuY3Rpb24gbSh4LGEpe3JldHVybiBiLnRhZ0Vtb2ppKGwoKHgrIiIpLnRydW5jYXRlKGF8fDE1LCJyaWdodCIsIuKApiIpKSl9ZnVuY3Rpb24gbigpeyQubXkucmFkaW8oImRidXBkYXRlIix7ZGI6Yy5wYXRoWzBdLGNtZDoid3JpdGUiLGRvY3M6W2MuZG9jLl9pZF19KSxjLnBhdGhbMF09PWIuUGhvKCJSZXBsaWNhdG9yREIiKSYmYy5kb2MuY3JlYXRlX3RhcmdldD8oLyhsb2NhbGhvc3R8MTI3XC4wXC4wXC4xKS8udGVzdChjLmRvYy50YXJnZXQrIiIpfHwtMT09KGMuZG9jLnRhcmdldCsiIikuaW5kZXhPZigiLyIpKSYmZnVuY3Rpb24oKXskLm15LnJhZGlvKCJkYmxpc3QiLFsiX3JlcGxpY2F0b3IiLChjLmRvYy50YXJnZXQrIiIpLnNwbGl0KCIvIikubGFzdCgpXS5jb21wYWN0KCJ0cnVlIikpfS5kZWJvdW5jZSgzMDApKCk6JC5teS5yYWRpbygiZGJsaXN0IixbYy5wYXRoWzBdXSksYXx8Y3cubGliLm5vdGUoZi5NU0dfU0FWRS5hc3NpZ24obShjLmRvYy5faWQpLG0oYy5yZXZ8fGMuZG9jLl9yZXZ8fCIiKSksIm9rIil9ZnVuY3Rpb24gbyh4KXshMD09PXg/KGMucGF0aFsxXT1jLmRvYy5faWQsYy5wYXRoLmxlbmd0aD0yLGMucmV2PSIiLGMuaXNOZXcmJihjLmlzTmV3PSExLCQubXkucmFkaW8oInBhdGhjaGFuZ2UiLHtpZDpjLnRhYmlkLHBhdGg6Yy5wYXRoLHRpdGxlOmIudGl0bGUoKX0pKSxiLkdldERvYyghMCwhMCkudGhlbihmdW5jdGlvbigpe24oKSxlLnJlc29sdmUoYy5kb2MpfSkuZmFpbChmdW5jdGlvbih4LGIsYyl7cmV0dXJuIGF8fGN3LmxpYi5ub3RlKGYuRVJSX1NBVkVMT0FELmFzc2lnbih4KyI6ICIrbChiKSksImVycm9yIiksZS5yZWplY3QoeCxmLkVSUl9TQVZFTE9BRC5hc3NpZ24oYiksYyl9KSk6InN0cmluZyI9PXR5cGVvZiB4JiYoYy5yZXY9eCxjLnBhdGhbYy5wYXRoLmxlbmd0aC0oIl8iPT1jLnBhdGgubGFzdCgpWzBdPzE6MCldPSJfIit4LGIubXkucmVjYWxjKCIjc3RhdGUtcHJveHkiKSxuKCksZS5yZXNvbHZlKGMuZG9jKSl9fSxHZXREb2M6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcyxlPWQuZGF0YSxmPXtjb25mbGljdHM6ITAsbG9jYWxfc2VxOiEwLHJldnNfaW5mbzohMCxhdHRfZW5jb2RpbmdfaW5mbzohMH0sZz0hMTtpZihkLkJ1c3kuZGVib3VuY2UoMjApKCEwKSxlLmlzTmV3KXt2YXIgaD0kLkRlZmVycmVkKCk7cmV0dXJuIGQuUmVxKFsiX3V1aWRzIix7Y291bnQ6NX1dKS50aGVuKGZ1bmN0aW9uKHgpe2UuZG9jLl9pZD1lLmRvYy5faWR8fCh4LnV1aWRzfHxbIiJdKS5zYW1wbGUoKX0pLmFsd2F5cyhmdW5jdGlvbigpe2UuZG9jLl9pZHx8KGUuZG9jLl9pZD1OdW1iZXIucmFuZG9tKDc4MzY0MTY0MDk2LDI4MjExMDk5MDc0NTUpLnRvU3RyaW5nKDM2KSksZC5Eb2M9W3tkYm5hbWU6ZS5wYXRoWzBdLHJldmlzaW9uOiIiLGJhc2V1cmw6ZC5QaG8oIkJhc2UiKSxkb2M6ZC5kYXRhLmRvY31dLGQuQnVzeS5kZWJvdW5jZSg1MCkoITEpLGgucmVzb2x2ZSgpfSksaC5wcm9taXNlKCl9cmV0dXJuIGUucGF0aC5sZW5ndGg+KCJfZGVzaWduIj09ZS5wYXRoWzFdPzM6Mik/KGM9ZS5wYXRoLmxhc3QoKS5yZXBsYWNlKC9eXEQrLywiIiksYj1lLnBhdGgudG8oLTEpKToiX25vZGUvX2xvY2FsL192ZXJzaW9ucyI9PWUucGF0aC5qb2luKCIvIik/KGI9ZS5wYXRoLmpvaW4oIi8iKS5zcGxpdCgiLyIpLGc9ITApOmI9ZS5wYXRoLnNsaWNlKDApLGUuYXR0cyYmYi5wdXNoKHthdHRhY2htZW50czohMCxhdHRfZW5jb2RpbmdfaW5mbzohMH0pLGg9JC5EZWZlcnJlZCgpLGM/ZC5SZXEoYi5jb25jYXQoWyQuZXh0ZW5kKCEwLHt9LGYse3JldjpjfSldKSkudGhlbihmdW5jdGlvbih4KXtlLmRvYz1rKHgpLGUuZG9jLl9kZWxldGVkPyhlLnJldnM9W2NdLGUuY29uZmlsY3RzPVtdLGgucmVzb2x2ZSgpKTpkLlJlcShiLmNvbmNhdChbZl0pKS50aGVuKGZ1bmN0aW9uKHgpe2UuZG9jPSQuZXh0ZW5kKGUuZG9jLE9iamVjdC5zZWxlY3QoeCxbIl9jb25mbGljdHMiLCJfcmV2c19pbmZvIiwiX2xvY2FsX3NlcSJdKSksbChlLmRvYyl9KS5mYWlsKGZ1bmN0aW9uKCl7ZS5yZXZzPVtjXSxlLmNvbmZpbGN0cz1bXX0pLmFsd2F5cyhmdW5jdGlvbigpe2gucmVzb2x2ZSgpfSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtoLnJlamVjdCh4LGEsYil9KTpkLlJlcShnP2I6Yi5jb25jYXQoW2ZdKSkudGhlbihmdW5jdGlvbih4KXtqKHgpLGgucmVzb2x2ZSgpfSkuZmFpbChmdW5jdGlvbigpe2I9W2JbMF0sIl9hbGxfZG9jcyIse2tleTplLnBhdGguZnJvbSgxKS5qb2luKCIvIiksaW5jbHVkZV9kb2NzOiEwfV0sZC5SZXEoYi5jb25jYXQoW2ZdKSkudGhlbihmdW5jdGlvbih4KXt4LnJvd3MmJngucm93c1swXSYmeC5yb3dzWzBdLmRvYz8oaih4LnJvd3NbMF0uZG9jKSxoLnJlc29sdmUoKSk6aC5yZWplY3QoNDA0LCJOb3QgZm91bmQiKX0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe2gucmVqZWN0KHgsYSxiKX0pfSksaC5hbHdheXMoZnVuY3Rpb24oKXtlLndhc0RlbD0hIWUuZG9jLl9kZWxldGVkLGkoKSxkLkJ1c3kuZGVib3VuY2UoNTApKCExKX0pLGg7ZnVuY3Rpb24gaSgpe2EmJmQuUmV2c0xpc3QoIiNhcHAtcmV2IiksZC5Eb2M9W3tkYm5hbWU6ZS5wYXRoWzBdLHJldmlzaW9uOmUucmV2LGJhc2V1cmw6ZC5QaG8oIkJhc2UiKSxkb2M6ZC5kYXRhLmRvY31dLGQuSGlzdG9yeS5jbGVhcighMCksZC5teS50cmlnZ2VyKCIjc3RhdGUtcHJveHkiLCJyZXNldHRhYmhhc2gubXkiKSx4JiZkLm15LnJlZHJhdygpfWZ1bmN0aW9uIGooeCl7ZS5kb2M9ayh4KSxsKGUuZG9jKSxlLnJldnMuZmluZChlLmRvYy5fcmV2KXx8ZS5yZXZzLnVuc2hpZnQoZS5kb2MuX3Jldil9ZnVuY3Rpb24gayh4KXtpZigiX3ZlcnNpb25zIj09YlsyXSlyZXR1cm4geDt2YXIgYT17X2lkOiIiLF9yZXY6IiJ9O3JldHVybiB4Ll9kZWxldGVkJiYoYS5fZGVsZXRlZD0hMCkseC5fYXR0YWNobWVudHMmJihhLl9hdHRhY2htZW50cz17fSksJC5leHRlbmQoYSx4KX1mdW5jdGlvbiBsKHgpe09iamVjdC5pc0FycmF5KHguX3JldnNfaW5mbykmJih4Ll9yZXZzX2luZm89eC5fcmV2c19pbmZvLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4iYXZhaWxhYmxlIj09eC5zdGF0dXN9KSksZS5jb25mbGljdHM9eC5fY29uZmxpY3RzfHxbXSxlLnJldnM9KHguX3JldnNfaW5mb3x8W10pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXZ9KX19LEdldEF0dHM6ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Yi5kYXRhLGQ9W10sZT1jLnBhdGguc2xpY2UoMCk7cmV0dXJuIGUubGVuZ3RoPigiX2Rlc2lnbiI9PWVbMV0/MzoyKT8oYT1lLmxhc3QoKS5yZXBsYWNlKC9eXEQrLywiIiksZD1lLnRvKC0xKSk6ZD1lLGEmJmQucHVzaCh7cmV2OmF9KSxkLnB1c2goe2F0dGFjaG1lbnRzOiEwLGF0dF9lbmNvZGluZ19pbmZvOiEwfSkseHx8Yi5CdXN5LmRlYm91bmNlKDEwKSghMCksYi5SZXEoZCkudGhlbihmdW5jdGlvbihhKXtyZXR1cm4geD9hOihhLl9hdHRhY2htZW50cyYmKGMuYXR0cz0hMCxjLmRvYy5fYXR0YWNobWVudHM9YS5fYXR0YWNobWVudHMpLGIuRG9jPVt7ZGJuYW1lOmMucGF0aFswXSxyZXZpc2lvbjpjLnJldixiYXNldXJsOmIuUGhvKCJCYXNlIiksZG9jOmIuZGF0YS5kb2N9XSxiLm15LnRyaWdnZXIoIiNzdGF0ZS1wcm94eSIsInJlc2V0dGFiaGFzaC5teSIpLGIubXkucmVkcmF3KCksYSl9KS5mYWlsKGZ1bmN0aW9uKCl7Yy5hdHRzPSExfSkuYWx3YXlzKGZ1bmN0aW9uKCl7eHx8Yi5CdXN5KCExKX0uZGVib3VuY2UoMjApKX0sRGVsRG9jOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPU9iamVjdC5jbG9uZShjdy5saWIuZHJ5KGEuZG9jKSwhMCksYz1hLnJldnNbMF0mJmEucmV2c1swXT09YS5kb2MuX3JldixkPS0xIT1hLmNvbmZsaWN0cy5pbmRleE9mKGEuZG9jLl9yZXZ8fCIiKSxlPXgubGFuZyxmPWZ1bmN0aW9uKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9LGc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4geC50YWdFbW9qaShmKChhKyIiKS50cnVuY2F0ZShifHwxNSwicmlnaHQiLCLigKYiKSkpfSxoPSQuRGVmZXJyZWQoKSxpPVthLnBhdGhbMF0sYi5faWQse3JldjpiLl9yZXZ9XSxqPSc8ZGl2IGNsYXNzPSJtYjEwIj57MX08L2Rpdj4nO3JldHVybiB4Lm15Lm1vZGFsKHt3aWR0aDozNTAscm9vdDp4Lm15LnJvb3QoKSxzY3JlZW46ITAsZ2xvYmFsOiEwLGVzYzohMCxlbnRlcjohMSxtYW5pZmVzdDokLmV4dGVuZCghMCx7fSx4LlBobygiQ29uZmlybSIpLHt1aTp7J2lucHV0W25hbWU9InJldGFpbiJdJzoicmV0YWluIiwiI2RlbHdhcm4iOntjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuInhwdXJnZSI9PXgucmV0YWlufX0sd2F0Y2g6WydpbnB1dFtuYW1lPSJyZXRhaW4iXSddfX0sc3R5bGU6eyIgbGFiZWwiOiJtYXJnaW46MC4xZW0gMDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7In19KSxkYXRhOntyZXRhaW46Im5vIix0ZXh0OltkPyIiOic8ZGl2IGNsYXNzPSJmczEzMCByZWQgbWI1Ij4nK2UuVFhUX0RFTF9USVRMRSsiPC9kaXY+IixkPyc8ZGl2IGNsYXNzPSJmczEzMCBvcmFuZ2UgbWI1Ij4nK2UuVFhUX0RFTF9USVRMRV9DT05GTElDVCsiPC9kaXY+IjoiIixqLmFzc2lnbihlLlRYVF9ERUxfV0FSTi5hc3NpZ24oZyhiLl9pZCwyNSksZyhhLnBhdGhbMF0sMjUpKSksai5hc3NpZ24oWyc8bGFiZWwgY2xhc3M9InhncmF5Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJldGFpbiIgdmFsdWU9Im5vIiBjbGFzcz0ibXI2Ij4gJytlLkxCTF9ERUxfQUxMKyI8L2xhYmVsPiIsJzxsYWJlbCBjbGFzcz0ieGdyYXkiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0YWluIiB2YWx1ZT0icmV0YWluIiBjbGFzcz0ibXI2Ij4gJytlLkxCTF9ERUxfUkVUQUlOKyI8L2xhYmVsPiJdLmNvbmNhdCh4LlBobygiQ291Y2giKS52ZXI+PSIwMDIuMDAzLiI/Wyc8bGFiZWwgY2xhc3M9InhncmF5Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJldGFpbiIgdmFsdWU9InB1cmdlIiBjbGFzcz0ibXI2Ij4gJytlLkxCTF9ERUxfUFVSR0UrIjwvbGFiZWw+Il06W10pLmNvbmNhdCh4LlBobygiQ291Y2giKS52ZXI+PSIwMDIuMDAzLiImJiFkJiZhLmRvYy5fcmV2c19pbmZvP1snPGxhYmVsIGNsYXNzPSJ4Z3JheSI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZXRhaW4iIHZhbHVlPSJ4cHVyZ2UiIGNsYXNzPSJtcjYiPiAnK2UuTEJMX0RFTF9YUFVSR0UrIjwvbGFiZWw+Il06W10pLmpvaW4oIiIpKSwnPGRpdiBpZD0iZGVsd2FybiIgY2xhc3M9ImZzOTUgbGgxMzAgbXQtMiBoaWRlIj4nLGEuY29uZmxpY3RzLmxlbmd0aCYmYz9qLmFzc2lnbihlLlRYVF9ERUxfTk9ERUwpOiIiLGQ/ai5hc3NpZ24oZS5UWFRfREVMX0NPTkZMSUNUKToiIiwiPC9kaXY+Il0uY29tcGFjdCghMCkuam9pbigiIikseWVzY3NzOmQ/Im9yYW5nZSI6InJlZCIseWVzOmUuQlROX0RFTF9TVEFSVCxubzplLkJUTl9DQU5DRUwsY2FuY2VsOiIifSx6OjE5OTUsY3NzOiJsaDE2MCB4Z3JheSBwMjAgcGIyNSIsY2xvc2U6eC5QaG8oImxhbmciKS5CVE5fWERMR30pLnRoZW4oZnVuY3Rpb24oeCl7aWYoInllcyIhPXguY21kKXJldHVybiBoLnJlamVjdCg5OTksIkNhbmNlbGxlZCIsIkNhbmNlbGxlZCIpO2soeC5yZXRhaW4rIiIpfSkuZmFpbChmdW5jdGlvbigpe2gucmVqZWN0KDk5OSwiQ2FuY2VsbGVkIiwiQ2FuY2VsbGVkIil9KSxoLnByb21pc2UoKTtmdW5jdGlvbiBrKGMpe3ZhciBkLGosayxtPXtubzp7dXJsOmksbWV0aG9kOiJERUxFVEUiLGhlYWRlcnM6eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9fSxyZXRhaW46e3VybDpbYS5wYXRoWzBdLCJfYnVsa19kb2NzIl0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sZGF0YTpKU09OLnN0cmluZ2lmeSh7ZG9jczpbT2JqZWN0Lm1lcmdlKHtfZGVsZXRlZDohMH0sYildfSl9LHB1cmdlOnt1cmw6W2EucGF0aFswXSwiX3B1cmdlIl0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sZGF0YTpKU09OLnN0cmluZ2lmeSgoZD1iLl9pZCxqPWIuX3JldixrPXt9LGtbZF09W2pdLGspKX0seHB1cmdlOnt1cmw6W2EucGF0aFswXSwiX3B1cmdlIl0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sZGF0YTpKU09OLnN0cmluZ2lmeShmdW5jdGlvbih4KXt2YXIgYj17fSxjPVt4Ll9yZXZdO3JldHVybiBjLmFkZChhLmRvYy5fY29uZmxpY3RzfHxbXSksYy5hZGQoKGEuZG9jLl9yZXZzX2luZm98fFtdKS5tYXAoeD0+ImF2YWlsYWJsZSI9PXguc3RhdHVzP3gucmV2Om51bGwpKSxiW3guX2lkXT1jLmNvbXBhY3QoITApLnVuaXF1ZSgpLGJ9KGIpKX19W2NdO3JldHVybiB4LlJlcShtKS50aGVuKGZ1bmN0aW9uKGQpe2N3LmxpYi5ub3RlKGUuTVNHX0RFTF9PSy5hc3NpZ24oZyhiLl9pZCksZyhhLnBhdGhbMF0pKSwib2siKTt0cnl7JC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjphLnBhdGhbMF0sY21kOiJkZWxldGUiLGRvY3M6W2IuX2lkXX0pLCQubXkucmFkaW8oImRibGlzdCIsW2EucGF0aFswXV0pfWNhdGNoKHgpe2NvbnNvbGUubG9nKHgpfSJ4cHVyZ2UiIT1jJiZhLmNvbmZsaWN0cy5sZW5ndGg/bCghMCk6KGZ1bmN0aW9uKCl7eC5teS5yb290KCkudHJpZ2dlcigidGFiY2xvc2UiLHt0YWJpZDphLnRhYmlkLGVuZm9yY2U6ITB9KX0uZGVib3VuY2UoMTAwKSgpLGgucmVzb2x2ZShkKSl9KS5mYWlsKGZ1bmN0aW9uKHgsYyxkKXtyZXR1cm4gY3cubGliLm5vdGUoZS5NU0dfREVMX0ZBSUwuYXNzaWduKGcoYi5faWQpLHgsZihjKSksImVycm9yIiksJC5teS5yYWRpbygiZGJ1cGRhdGUiLGEucGF0aFswXSksaC5yZWplY3QoeCxjLGQpfSl9ZnVuY3Rpb24gbChjKXthLnBhdGhbMV09Yi5faWQsYS5wYXRoLmxlbmd0aD0yO3ZhciBkPWEucmV2O2EucmV2PSIiLGQmJiQubXkucmFkaW8oInBhdGhjaGFuZ2UiLHtpZDphLnRhYmlkLHBhdGg6YS5wYXRoLHRpdGxlOngudGl0bGUoKX0pLHguR2V0RG9jKCEwKS50aGVuKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZS5NU0dfREVMX1JFTE9BRCwiIiw0ZTMpLHguUmV2c0xpc3QoIiNhcHAtcmV2IiksaC5yZXNvbHZlKGEuZG9jKX0pLmZhaWwoZnVuY3Rpb24oYixjLGQpe2N3LmxpYi5ub3RlKGUuTVNHX0RFTF9SRUxPQURfRkFJTC5hc3NpZ24oZyhhLmRvYy5faWQpLGIsZihjKSksImVycm9yIiksaC5yZWplY3QoYixjLGQpLHgubXkudHJpZ2dlcigiI2J0bi1kZWwtZG9jIiwidGFiY2xvc2UiLHt0YWJpZDphLnRhYmlkLGVuZm9yY2U6ITB9KX0pfX0sUmV2c0xpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9W3tpZDoiIix0ZXh0OmF8fGIubGFuZy5UWFRfUkVWfV07ZnVuY3Rpb24gZSh4LGEpe3ZhciBiPXgudGV4dDtyZXR1cm4ieCI9PShiPS9ccy8udGVzdChiKT9iOmIucmVwbGFjZSgiLSIsIuKAkyIpLnRydW5jYXRlKGEsIm1pZGRsZSIsJzxzcGFuIGNsYXNzPSJvcmFuZ2UiPuKApjwvc3Bhbj4nKSlbMF0mJihiPSc8c3BhbiBjbGFzcz0icmVkMSBib2xkZXIiPuKAoDwvc3Bhbj7igIknK2IuZnJvbSgxKSksIjxub2JyPiIrYisiPC9ub2JyPiJ9Yy5jb25mbGljdHMuZm9yRWFjaChmdW5jdGlvbih4KXtkLnB1c2goe2lkOngsdGV4dDoieCIreH0pfSksYy5yZXZzLmZvckVhY2goZnVuY3Rpb24oeCl7ZC5wdXNoKHtpZDp4LHRleHQ6eH0pfSksYi5zZWxlY3QyKGIubXkuZmluZCh4KSx7ZGF0YTpkLGZvcm1hdFJlc3VsdDplLmZpbGwodm9pZCAwLDE3KSxmb3JtYXRTZWxlY3Rpb246ZS5maWxsKHZvaWQgMCwxNCksbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6M30pfSxBcHBseUVkczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0oeC5kYXRhLCQuRGVmZXJyZWQoKSksYj14Lm15LmZpbmQoIiNqc2VkaXRvciBidXR0b24jYnRuLWNoYW5nZTp2aXNpYmxlIiksYz1iLmxlbmd0aDtyZXR1cm4gYz94Lm15Lm1vZGFsKCIjYnRuLWRvYy1zYXZlIix7bWFuaWZlc3Q6eC5QaG8oIkNvbmZpcm0iKSxkYXRhOnt0ZXh0OngubGFuZy5NU0dfRURTLHllczp4LmxhbmcuQlROX0VEU19ZRVMsbm86eC5sYW5nLkJUTl9FRFNfTk8sdXNlQnV0dG9uczohMH0sd2lkdGg6NDUwLHo6MTk5NSxzY3JlZW46ITAsZ2xvYmFsOiEwLGZvY3VzOiIjYnRuLXllcyJ9KS50aGVuKGZ1bmN0aW9uKHgpe2lmKCJ5ZXMiIT14LmNtZClyZXR1cm4gYS5yZXNvbHZlKCksdm9pZCAwO2IuZWFjaChmdW5jdGlvbih4LGIpeyQoYikudHJpZ2dlcigiY2xpY2siKSx4PT1jLTEmJmEucmVzb2x2ZS5kZWxheSg0MDApfS5sYXp5KDIwKSl9KS5mYWlsKGZ1bmN0aW9uKCl7YS5yZWplY3QoKX0pOmEucmVzb2x2ZSgpLGEucHJvbWlzZSgpfSxSZWFkQW5kWmlwOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXgubGFuZzt4LkJ1c3kuZGVib3VuY2UoMTApKCEwKTt2YXIgYz0iIixkPWEucGF0aC5zbGljZSgwKSxlPWVuY29kZVVSSUNvbXBvbmVudChhLmRvYy5faWQudG8oMzIpKS5yZXBsYWNlKC8lLi4vZywiLSIpKyIuemlwIixmPXthdHRhY2htZW50czohMH07YS5wYXRoLmxlbmd0aD4oIl9kZXNpZ24iPT1hLnBhdGhbMV0/MzoyKSYmKGQucG9wKCksYz1hLnBhdGgubGFzdCgpLnJlcGxhY2UoL15cRCsvLCIiKSksYyYmKGYucmV2PWMpLGQucHVzaChmKTt2YXIgZyxoLGk9ITEsaj1lbmNvZGVVUklDb21wb25lbnQoYS5kb2MuX2lkKyIiKS5yZXBsYWNlKC8lLi4vZywiLSIpO2Z1bmN0aW9uIGsoKXt2YXIgYT0kLkRlZmVycmVkKCksYj14Lm15LmZpbmQoIiN6aXAtdGVzdGVyIik7cmV0dXJuIGIubXkoeC5QaG8oIlN5bmNUYXNrIikuWmlwVGVzdGVyLHt9KS50aGVuKGZ1bmN0aW9uKHgpe2EucmVzb2x2ZSghMCksZnVuY3Rpb24oKXtiLm15KCJyZW1vdmUiKX0uZGVsYXkoMjAwKX0pLmZhaWwoZnVuY3Rpb24oeCl7YS5yZXNvbHZlKCExKX0pLGEucHJvbWlzZSgpfWZ1bmN0aW9uIGwoKXt4LkJ1c3kuZGVib3VuY2UoMTApKCExKX0iVGV4dEVuY29kZXIiaW4gd2luZG93PyhnPW5ldyBUZXh0RW5jb2RlcixoPSh4PT5nLmVuY29kZSh4KSkpOmg9KHg9PmZmbGF0ZS5zdHJUb1U4KHgpKSxrKCkudGhlbihmdW5jdGlvbihjKXtpZihjKXJldHVybiBjdy5saWIubm90ZShiWyJNU0dfRExaSVBfUkVBRCIrKGEuZG9jLl9hdHRhY2htZW50cz8yOjEpXSkseC5QaG8oIlJlcSIpKGQpO2N3LmxpYi5ub3RlKGIuTVNHX0RMWklQX05PWklQLCJlcnJvciIpLGwoKX0pLnRoZW4oZnVuY3Rpb24oeCl7aWYobnVsbCE9eCl7dmFyIGM9bmV3IGZmbGF0ZS5aaXAsZD1zdHJlYW1TYXZlci5jcmVhdGVXcml0ZVN0cmVhbShlLHtwYXRobmFtZToiL19zdHJlYW0vIitlLHNpZ25hbDpmdW5jdGlvbigpe319KS5nZXRXcml0ZXIoKTtjLm9uZGF0YT1mdW5jdGlvbih4LGIsYyl7eD9uKCJGYWlsZWQgemlwcGluZzogIisoKHh8fCJ1bmtub3duIGVycm9yIikrIiIpLnRydW5jYXRlKDEwMCkpOihiJiZiLmxlbmd0aCYmKGQud3JpdGUoYiksYS5ieXRlcys9Yi5sZW5ndGgpLGMmJihpP24oIkFib3J0ZWQiKTptKCkpKX07dmFyIGY9eC5fYXR0YWNobWVudHN8fHt9LGc9T2JqZWN0LnJlamVjdCh4LCJfYXR0YWNobWVudHMiKTtPYmplY3Quc2l6ZShmKSYmKGcuX2F0dGFjaG1lbnRzPXt9LE9iamVjdC5rZXlzKGYpLmZvckVhY2goeD0+Zy5fYXR0YWNobWVudHNbeF09T2JqZWN0LnJlamVjdChmW3hdLCJkYXRhIikpKSxrKGorIi9fLmpzb24iLGgoSlNPTi5zdHJpbmdpZnkoZyxudWxsLCIgICIpKSksT2JqZWN0LnNpemUoZikmJk9iamVjdC5rZXlzKGYpLmZvckVhY2goZnVuY3Rpb24oeCl7ayhqKyIvIit4LFVpbnQ4QXJyYXkuZnJvbSh3aW5kb3cuYXRvYihmW3hdLmRhdGEpLHg9PnguY2hhckNvZGVBdCgwKSkpfSksYy5lbmQoKX1mdW5jdGlvbiBrKHgsYSl7YS5ieXRlTGVuZ3RoO3ZhciBiPW5ldyBmZmxhdGUuQXN5bmNaaXBEZWZsYXRlKHgpO2MuYWRkKGIpLGIucHVzaChhLCEwKX1mdW5jdGlvbiBtKCl7ZC5jbG9zZSgpLGwoKSxmdW5jdGlvbigpe2N3LmxpYi5ub3RlKGIuTVNHX0RMWklQX09LLCJvayIpfS5kZWxheSgxZTMpfWZ1bmN0aW9uIG4oeCl7aT0hMCxjdy5saWIubm90ZSh4LCJlcnJvciIsNmUzKSxkLmFib3J0KCksYy50ZXJtaW5hdGUoKSxsKCl9fSkuZmFpbChmdW5jdGlvbigpe2woKSxjdy5saWIubm90ZShiLk1TR19ETFpJUF9FUlJPUiwiZXJyb3IiKX0pfSxOZXdEb2NUZ3Q6e2lkOiJjdy5QaG90b24uJGRvYy5OZXdEb2NUZ3QiLGluaGVyaXQ6WyJQaG8iXSxkYXRhOnt9LG5ld19kYjoiIixuZXdfaWQ6IiIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2EubmV3X2RiPWIucGF0aFswXSxhLm5ld19pZD1iLmRvYy5faWQseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKX0sdWk6eyIjdGd0LWRiIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3guc2VsZWN0Mih7ZGF0YTpPYmplY3Qua2V5cyhhLlBobygiQWxsIikpLnNvcnQoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG11bHRpcGxlOiExfSl9LGJpbmQ6InRoaXMubmV3X2RiIn0sIiN0Z3QtaWQiOntiaW5kOiJ0aGlzLm5ld19pZCIsY2hlY2s6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmxhbmc7cmV0dXJuIGE/YT09eC5kb2MuX2lkJiZ0aGlzLm5ld19kYj09eC5wYXRoWzBdP2IuRVJSX0lEX0VROmEmJiEvXl9kZXNpZ25cLy4rJC8udGVzdChhKSYmIl8iPT1hWzBdP2IuRVJSX0lEX1VTQzp2b2lkIDA6Yi5FUlJfSURfUkVRfSx3YXRjaDpbIiN0Z3QtZGIiLCIjYnRuLWdlbmlkIl19LCIjYnRuLWdlbmlkIjpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz14LmRvYy5faWQuc3BsaXQoIjoiKSxkPWMubGVuZ3RoPjE/Yy5mcm9tKDEpLmpvaW4oIjoiKTp4LmRvYy5faWQsZT1iLm5ld19pZDtpZigvXl9kZXNpZ25cLy8udGVzdChkKSllPS9cZHsxLDN9JC8udGVzdChkKT9kLnJlcGxhY2UoL1xkezEsM30kLywiIikrKCtkLm1hdGNoKC9cZHsxLDN9JC8pWzBdKzEpOmQrIjEiO2Vsc2UgaWYoL15jdy0uKyQvLnRlc3QoZCkpZT1kLnJlcGxhY2UoL1thLXowLTldezR9JC8sIiIpK2N3LmxpYi5yYW5kNCgpO2Vsc2UgaWYoL15fbG9jYWxcLy8udGVzdChkKSllPSJfbG9jYWwvIitjdy5saWIucmFuZDgoKTtlbHNlIGlmKC9eXGR7MTJ9W2EtejAtOV17OH0kLy50ZXN0KGQpKWU9KERhdGUubm93KCkrIiIpLnRvKDEyKStjdy5saWIucmFuZDgoKTtlbHNlIGlmKC9eWzAtOV0rJC8udGVzdChkKSllPSIiLGQubGVuZ3RoLnRpbWVzKHg9PmUrPSIiK051bWJlci5yYW5kb20oMCw5KSk7ZWxzZXtpZighL1thLXowLTldL2kudGVzdChkKXx8L15bMC05YS1mXXszMn0kLy50ZXN0KGQpKXJldHVybiBiLlJlcShbIl91dWlkcyIse2NvdW50OjN9XSkudGhlbihmdW5jdGlvbih4KXtqKCh4LnV1aWRzfHxbY3cubGliLnJhbmQ4KCkrY3cubGliLnJhbmQ4KCldKS5zYW1wbGUoKSksYi5teS5yZWNhbGMoIiN0Z3QtaWQiKSxiLm15LmNoZWNrKCIjdGd0LWlkIil9KSx2b2lkIDA7dmFyIGY9U3RyaW5nLmZyb21DaGFyQ29kZSxnPVtdLGg9W10saT1bXTsyNi4udGltZXMoeD0+Zy5wdXNoKGYoNjUreCkpKSwyNi4udGltZXMoeD0+aC5wdXNoKGYoOTcreCkpKSwxMC4udGltZXMoeD0+aS5wdXNoKCIiK3gpKSxlPWQuY2hhcnMoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuL15bYS16MC05XSQvaS50ZXN0KHgpPy9eW0EtRl0kLy50ZXN0KHgpP2cudG8oNikuc2FtcGxlKCk6L15bRy1aXSQvLnRlc3QoeCk/Zy5zYW1wbGUoKTovXlthLWZdJC8udGVzdCh4KT9oLnRvKDYpLnNhbXBsZSgpOi9eW2ctel0kLy50ZXN0KHgpP2guc2FtcGxlKCk6aS5zYW1wbGUoKTp4fSkuam9pbigiIil9cmV0dXJuIGooZSksdm9pZCAwfWZ1bmN0aW9uIGooeCl7Yi5uZXdfaWQ9Yy5sZW5ndGg+MT9jWzBdKyI6Iit4Onh9fSwiI2J0bi1hcHBseSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYoeC5wYXRoWzBdPXRoaXMubmV3X2RiLHguZG9jLl9pZD10aGlzLm5ld19pZCx0aGlzLm15LmNvbW1pdCgpKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiF0aGlzLm15LnZhbGlkKCl9fSx3YXRjaDpbIiN0Z3QtZGIiLCIjdGd0LWlkIl19LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sSFRNTDpbJzxkaXYgY2xhc3M9ImZzMTMwIGxoMTQwIGZ3NTAwIG1iNyI+e1RYVF9USVRMRX08L2Rpdj4nLHtyb3c6IjQ1MHB4IixsYWJlbDoiMTAwcHgiLHJvd0NzczoibXktcm93IHBiOCIsbGFiZWxDc3M6Im15LWxhYmVsIGZzOTAifSxbIntMQkxfREJ9IiwiaW5wI3RndC1kYi53MTAwcC5mczExNSIse3NwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9XSx7bGFiZWxDc3M6Im15LWxhYmVsIGZzOTAgcHQxMCJ9LFsie0xCTF9JRH0iLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IiBzdHlsZT0id2lkdGg6Y2FsYygxMDAlIC0gNDBweCk7Ij4nLCJpbnAjdGd0LWlkLncxMDBwLmZzMTAwIix7cGxjOiJOb24tZW1wdHkgc3RyaW5nIixzcGVsbGNoZWNrOiJmYWxzZSIsYXV0b2NvbXBsZXRlOiJvZmYifSwibXNnIiwiPC9kaXY+IiwiYnV0I2J0bi1nZW5pZC53MzYubWw0LmZyIix7dHh0Oic8c3BhbiBjbGFzcz0iZmktbG9vcCI+PC9zcGFuPicsdGlwOiJ7QlROX0dFTklEfSJ9XSxbIiAiLCc8ZGl2IGNsYXNzPSJmczg1IGxoMTMwIGRpYiB2YXQgbzYwIHBiMyI+e1RYVF9XQVJOfTwvZGl2PiddLCc8ZGl2IGNsYXNzPSJwdDE1IGJ0ZCI+JywnPGJ1dHRvbiBpZD0iYnRuLWFwcGx5IiBjbGFzcz0ibWFya2ZvY3VzIGdyZWVuIG1yMiI+e0JUTl9BUFBMWX08L2J1dHRvbj4nLCc8YnV0dG9uIGlkPSJidG4tY2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj4nLCI8L2Rpdj4iXSxsYW5nOntlbjp7VFhUX1RJVExFOiJOZXcgZG9jIGxvY2F0aW9uIixMQkxfREI6IlRhcmdldCBEQiIsTEJMX0lEOiJOZXcgZG9jIF9pZCIsQlROX0dFTklEOiJHZW5lcmF0ZSBuZXcgZG9jIF9pZCIsQlROX0FQUExZOiJDbG9uZSBkb2MiLEJUTl9DQU5DRUw6IkNhbmNlbCIsVFhUX1dBUk46IkNsb25pbmcgZG9lc27igJl0IHNhdmUgbmV3IGRvYyBpbW1lZGlhdGVseSwganVzdCBvcGVucyBpdCBpbiBlZGl0b3IgdG8gc2F2ZSBsYXRlci4iLEVSUl9JRF9FUToiTmV3IF9pZCBtdXN0IGJlIGRpZmZlcmVudCwgb3IgY2hhbmdlIERCIixFUlJfSURfUkVROiJOb24tZW1wdHkgc3RyaW5nIHJlcXVpcmVkIixFUlJfSURfVVNDOiJEb2MgX2lkIGNhbuKAmXQgc3RhcnQgd2l0aCBfIHN5bWJvbCJ9fSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDoyMnB4OyJ9fX0sJGRpZmY6e2lkOiJjdy5QaG90b24uJGRpZmYiLGxhbmc6e30scmVxdWlyZTpbeyJ3aW5kb3cuanNvbmRpZmZwYXRjaCI6ImxpYi9kaWZmLmpzIn1dLHBhcmFtczp7cmVzdHlsZToxMDAsc3RyaWN0OiEwfSxkYXRhOntpZDoiIixyZXY6WyIiLCIiXSxza2lwOlsiX3JldiIsImxvZyJdLGRvYzp7fSxjb25mbGljdHM6W10scmV2czpbXSxwYXJhbXM6W10sanNvbjpbe30se31dfSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuImRpZmYifSxpY29Dc3M6ZnVuY3Rpb24oeCl7cmV0dXJuImZpLWNvbnRyYXN0IGZzOTAifSx0aXRsZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGF0YSxhPSJEaWZmICIrdGhpcy5kYXRhLmlkO3JldHVybiB4LnJldlswXSE9eC5yZXZbMV0mJihhKz0iLCB7MX1+ezJ9Ii5hc3NpZ24oeC5yZXZbMF0/eC5yZXZbMF0uc3BsaXQoIi0iKVswXToibGFzdCIseC5yZXZbMV0/eC5yZXZbMV0uc3BsaXQoIi0iKVswXToibGFzdCIpKSxhfSxtYXRjaDpmdW5jdGlvbih4LGEpe2lmKCEoeC5sZW5ndGg8MykmJmEmJiJfZGlmZiI9PXhbMV0pcmV0dXJuIl9kZXNpZ24iPT14WzJdJiZ4WzNdJiYoeFszXT14WzJdKyIvIit4WzNdLHgucmVtb3ZlQXQoMikpLHt0aXRsZToiRGlmZiAiK3RoaXMudHJ1bmMoeFsyXSwyMCksYXBwRGF0YTp7aWQ6eFsyXSxyZXY6Wyh4WzNdfHwiIikucmVwbGFjZSgvXlxEKy8sIiIpLCh4WzRdfHwiIikucmVwbGFjZSgvXlxEKy8sIiIpXSxwYXRoOnh9fX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3RyeXthLkRpZmY9anNvbmRpZmZwYXRjaC5jcmVhdGUoe29iamVjdEhhc2g6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNBcnJheSh4KSYmT2JqZWN0LmlzTnVtYmVyKHhbMF0pKXJldHVybiB4WzBdKyIiO2lmKE9iamVjdC5pc09iamVjdCh4KSl7aWYodm9pZCAwIT09eC5faWQpcmV0dXJuIHguX2lkKyIiO2lmKHZvaWQgMCE9PXguaWQpcmV0dXJuIHguaWQrIiI7aWYodm9pZCAwIT09eC5uYW1lKXJldHVybiB4Lm5hbWUrIiJ9cmV0dXJuIiQkaW5kZXg6IithfX0pfWNhdGNoKHgpe31yZXR1cm4gYi5wYXRoLmxlbmd0aD4zJiYoYi5yZXZbMF09KGIucGF0aFszXXx8IiIpLnJlcGxhY2UoL15cRCsvLCIiKSxiLnJldlsxXT0oYi5wYXRoWzRdfHwiIikucmVwbGFjZSgvXlxEKy8sIiIpKSx4LnRoZW4oZnVuY3Rpb24oYil7YS5uaWNlU2Nyb2xsKHguZmluZCgiI2RpZmYiKSl9KSxhLkdldERvYygpLnRoZW4oZnVuY3Rpb24oKXt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKX0pfSxSZXZzTGlzdDpmdW5jdGlvbigpe3ZhciB4PXRoaXM7eC5kYXRhO3guUGhvKCIkZG9jIikuUmV2c0xpc3QuY2FsbCh4LCIjZG9jLXJldjAiKSx4LlBobygiJGRvYyIpLlJldnNMaXN0LmNhbGwoeCwiI2RvYy1yZXYxIil9LEdldFJldnM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9W107cmV0dXJuIGEucmV2WzBdP2EuanNvblswXS5fcmV2JiZhLnJldlswXT09YS5qc29uWzBdLl9yZXZ8fGIucHVzaCh4LlJlcSh7dXJsOlthLnBhdGhbMF0sYS5pZCx7cmV2OmEucmV2WzBdfV19KS50aGVuKGZ1bmN0aW9uKHgpe2EuanNvblswXT14fSkpOmEuanNvblswXT0kLmV4dGVuZCghMCx7fSxhLmRvYyksYS5yZXZbMV0/YS5qc29uWzFdLl9yZXYmJmEucmV2WzFdPT1hLmpzb25bMV0uX3Jldnx8Yi5wdXNoKHguUmVxKHt1cmw6W2EucGF0aFswXSxhLmlkLHtyZXY6YS5yZXZbMV19XX0pLnRoZW4oZnVuY3Rpb24oeCl7YS5qc29uWzFdPXh9KSk6YS5qc29uWzFdPSQuZXh0ZW5kKCEwLHt9LGEuZG9jKSxRLmFsbFNldHRsZWQoYil9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiNkaWZmIikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSx1aTp7IiNidG4tcm9vdCI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLnAydTtiLmF0dHIoImhyZWYiLCIjIitjKHgucGF0aFswXSkpLGIuYXR0cigidGl0bGUiLHRoaXMubGFuZy5USVBfVVAuYXNzaWduKHgucGF0aFswXSkpfX0sIiNkb2MtaWQiOntiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj10aGlzLnAydSxjPSc8YSBjbGFzcz0idGRuIiBocmVmPSIjezF9IiB0aXRsZT0iezN9Ij57Mn08L2E+Jy5hc3NpZ24oYih4LnBhdGhbMF0pLGEudGFnRW1vamkoYS50cnVuYyh4LnBhdGhbMF0sMTUpLmVzY2FwZUhUTUwoKSkseC5wYXRoWzBdLmVzY2FwZUhUTUwoKSksZD0nPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfSIgdGl0bGU9InszfSI+ezJ9PC9hPicuYXNzaWduKGIoeC5wYXRoWzBdKSsiLyIrYih4LmlkKSsoeC5yZXZbMF0/Ii9fIit4LnJldlswXToiIiksYS50YWdFbW9qaShhLnRydW5jKHguaWQsMTUwKS5lc2NhcGVIVE1MKCkpLHguaWQuZXNjYXBlSFRNTCgpKTtyZXR1cm5bJzxzcGFuIGNsYXNzPSJmczE1MCBsaDEzMCB4Z3JheSBtdC0xIG84MCI+JywnPHNwYW4gY2xhc3M9Im85MCI+RGlmZiA8L3NwYW4+JywnPHNwYW4gY2xhc3M9IiI+ezJ9PC9zcGFuPicsIjwvc3Bhbj4iXS5qb2luKCIiKS5hc3NpZ24oYyxkKX0sd2F0Y2g6WyIjZG9jLXJldjAiXX0sIiNwcm9wLWhpZGUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5zZWxlY3QyKHgse211bHRpcGxlOiEwLHRhZ3M6WyJfcmV2IiwibG9nIl0scGxhY2Vob2xkZXI6YS5sYW5nLlBMQ19CQU59KX0sYmluZDoic2tpcCJ9LCIjZG9jLXJldjAiOntiaW5kOiJyZXYuMCIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuUGhvKCIkZG9jIikuUmV2c0xpc3QuY2FsbChhLCIjZG9jLXJldjAiKX19LCIjZG9jLXJldjEiOntiaW5kOiJyZXYuMSIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuUGhvKCIkZG9jIikuUmV2c0xpc3QuY2FsbChhLCIjZG9jLXJldjEiKX19LCdpbnB1dFtuYW1lPSJzZXR0aW5ncyJdJzoicGFyYW1zIiwiI2RpZmYiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4KXt2YXIgYSxiLGMsZD10aGlzLGU9eC5qc29uLGY9eC5za2lwLnNsaWNlKDApLmNvbmNhdChbIl9jb25mbGljdHMiLCJfcmV2c19pbmZvIl0pO3JldHVybiIiPT14LnJldlswXSYmIiI9PXgucmV2WzFdfHx4LnJldlswXT09eC5yZXZbMV0/JzxkaXYgY2xhc3M9InRhYyBwNTAgZnMxNTAgb3JhbmdlIj57MX08L2Rpdj4nLmFzc2lnbihkLmxhbmcuVFhUX1NFTEVDVCk6KGI9T2JqZWN0LnJlamVjdChlWzBdLGYpLGM9T2JqZWN0LnJlamVjdChlWzFdLGYpLG51bGw9PShhPWQuRGlmZi5kaWZmKGIsYykpPyc8ZGl2IGNsYXNzPSJ0YWMgcDUwIGZzMTIwIGdyZWVuIj57MX08L2Rpdj4nLmFzc2lnbihkLmxhbmcuVFhUX05PRElGRik6KC0xPT14LnBhcmFtcy5pbmRleE9mKCJ1bmNoYW5nZWQiKT9qc29uZGlmZnBhdGNoLmZvcm1hdHRlcnMuaHRtbC5oaWRlVW5jaGFuZ2VkKCk6anNvbmRpZmZwYXRjaC5mb3JtYXR0ZXJzLmh0bWwuc2hvd1VuY2hhbmdlZCgpLGQudGFnRW1vamkoanNvbmRpZmZwYXRjaC5mb3JtYXR0ZXJzLmh0bWwuZm9ybWF0KGEsYikpKSl9LHdhdGNoOlsnaW5wdXRbbmFtZT0ic2V0dGluZ3MiXScsIiNwcm9wLWhpZGUiXX0sIiNkaWZmLXByb3h5Ijp7ZGVsYXk6MzAwLGJpbmQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczsoIiIhPXgucmV2WzBdfHwiIiE9eC5yZXZbMV18fHguanNvblswXS5fcmV2KSYmYS5HZXRSZXZzKCkudGhlbihmdW5jdGlvbigpe2EubXkuY2hlY2soIiNkaWZmIil9KTt4LnBhdGguc2xpY2UoMCk7eC5wYXRoWzNdPT0iXyIreC5yZXZbMF0mJngucGF0aFs0XT09Il8iK3gucmV2WzFdfHwoeC5wYXRoWzNdPSJfIit4LnJldlswXSx4LnBhdGhbNF09Il8iK3gucmV2WzFdLCQubXkucmFkaW8oInBhdGhjaGFuZ2UiLHtpZDp4LnRhYmlkLHBhdGg6eC5wYXRoLHRpdGxlOmEudGl0bGUoKX0pKX0sd2F0Y2g6WyIjZG9jLXJldjAiLCIjZG9jLXJldjEiXX19LEhUTUw6JzxkaXYgaWQ9ImEtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIG53IHB0MTggcGwyMCBwcjEwIGxoMTYwIj48YSBpZD0iYnRuLXJvb3QiIGNsYXNzPSJ3MzcgYnV0dG9uIG1yNiB0ZG4gZGliIHZhdCBwbDAgcHIwIGZ3NjAwIiB0aXRsZT0ie1RJUF9VUH0iPi4uLzwvYT48ZGl2IGlkPSJkb2MtaWQiIGNsYXNzPSJkaWIgdmF0IG53IG9oIGVsbCBtcjYiPjwvZGl2PjxkaXYgY2xhc3M9ImRpYiB2YXQgdzE4MCBtciI+PGlucHV0IGlkPSJkb2MtcmV2MCIgdHlwZT0idGV4dCIgY2xhc3M9IncxMDBwIGZzMTEwIHZhdCI+PC9kaXY+PGRpdiBjbGFzcz0iZGliIHZhdCBvODAgdGFjIHczMCBwdDEiPnZzPC9kaXY+PGRpdiBjbGFzcz0iZGliIHZhdCB3MTgwIj48aW5wdXQgaWQ9ImRvYy1yZXYxIiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgZnMxMTAgdmF0Ij48L2Rpdj48ZGl2IGNsYXNzPSJmciI+PGRpdiBjbGFzcz0iZGliIHZhdCB3MjUwIG1sMTAgbXI4Ij48ZGl2IGNsYXNzPSJkaWIgdmF0IHc1MCBwcjcgdGFyIHB0MSI+e1RYVF9CQU59PC9kaXY+PGRpdiBjbGFzcz0idzIwMCBkaWIgdmF0IGZzOTAiPjxpbnB1dCBpZD0icHJvcC1oaWRlIiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgZnMxMTAgdmF0Ij48L2Rpdj48L2Rpdj48bGFiZWwgY2xhc3M9IncxMjAgZGliIHZhdCBwdDEgbGgxMjAiIHN0eWxlPSJjb2xvcjppbmhlcml0OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZXR0aW5ncyIgdmFsdWU9InVuY2hhbmdlZCIgY2xhc3M9InZhbSBmczEwNSIvPjxzcGFuIGNsYXNzPSJkaWIgdmF0IHB0MSBwbDciPntMQkxfU1JDfTwvc3Bhbj48L2xhYmVsPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ2aWV3LXBhbmVscyIgY2xhc3M9IncxMDBwIHBhbmVsaGVpZ2h0IGZlYXRoZXIgcGwyMCI+PGRpdiBpZD0iZGlmZiIgY2xhc3M9Impzb25kaWZmIHcxMDBwIHBhbmVsaGVpZ2h0IHByMjAgcHQxMCBwYjE2IGxoMTMwIj48L2Rpdj48L3NlY3Rpb24+PGRpdiBpZD0iZGlmZi1wcm94eSI+PC9kaXY+JyxzdHlsZTp7IiAjZG9jLWlkIjoibWF4LXdpZHRoOmNhbGMoMTAwJSAtIDg0NXB4KTsgbWluLXdpZHRoOjE1MHB4OyIsIiBwcmUiOnsiIjoiZm9udC1zaXplOmluaGVyaXQ7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6IGF1dG87IHdvcmQtYnJlYWs6YXV0bzsiLCIgIjpmdW5jdGlvbih4KXtyZXR1cm4ibWF4LXdpZHRoOnsxfXB4OyIuYXNzaWduKHgud2lkdGgoKS0yMjApfX0sIiAuanNvbmRpZmZwYXRjaC1kZWx0YSI6InBhZGRpbmctbGVmdDowOyBmb250LXNpemU6aW5oZXJpdDsifSxHZXREb2M6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcyxlPWQuZGF0YSxmPXtjb25mbGljdHM6ITAscmV2c19pbmZvOiEwfTtyZXR1cm4gZC5CdXN5LmRlYm91bmNlKDIwKSghMCksYj1bZS5wYXRoWzBdLGUuaWQsZl0sKGM9ZC5SZXEoYikudGhlbihmdW5jdGlvbihiKXtlLmRvYz1iLGcoZS5kb2MpLGEmJmQuUmV2c0xpc3QoKSxkLm15LnRyaWdnZXIoIiNzdGF0ZS1wcm94eSIsInJlc2V0dGFiaGFzaC5teSIpLHgmJmQubXkucmVkcmF3KCl9KSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5CdXN5KCExKX0uZGVib3VuY2UoNTApKSxjO2Z1bmN0aW9uIGcoeCl7T2JqZWN0LmlzQXJyYXkoeC5fcmV2c19pbmZvKSYmKHguX3JldnNfaW5mbz14Ll9yZXZzX2luZm8uZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiJhdmFpbGFibGUiPT14LnN0YXR1c30pKSxlLmNvbmZsaWN0cz14Ll9jb25mbGljdHN8fFtdLGUucmV2cz0oeC5fcmV2c19pbmZvfHxbXSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJldn0pfX19LCRmaWxlOntpZDoiY3cuUGhvdG9uLiRmaWxlIixsYW5nOnt9LHBhcmFtczp7cmVzdHlsZToyMCxzdHJpY3Q6ITB9LGRhdGE6e3BhdGg6W10sc2VhcmNoOiIiLGZuYW1lOiIiLGZuYW1lMDoiIix0ZXh0OiIiLHNyYzoiIixtaW1lOiJudWxsIixkb2M6e19pZDoiIn19LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4gY3cubGliLmNyYzIoe3RleHQ6dGhpcy5kYXRhLnRleHQucmVwbGFjZSgvXHJcbi9nLCJcbiIpfSl9LGljb0NzczpmdW5jdGlvbih4KXtyZXR1cm4iZmktcGFwZXJjbGlwIGZzOTAifSx0aXRsZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1hLnBhdGgsYz1hLmRvYy5faWQ7cmV0dXJuW3gudHJ1bmMoIl9kZXNpZ24vIj09Yy50byg4KT8iX2QiK2MuZnJvbSg3KToiX3VzZXJzIj09YlswXT9jLmZyb20oMTcpOmMsOCksIuKAiS/igIkiLGEuZm5hbWVdLmpvaW4oIiIpfSxtYXRjaDpmdW5jdGlvbih4LGEpe2lmKGEpe3ZhciBiPXhbMV0sYz14WzJdO3JldHVybiB4Lmxlbmd0aD4yJiYiXyIhPWNbMF0mJigiXyIhPWJbMF18fC9eX2Rlc2lnblwvLy50ZXN0KGIpKT97dHlwZToiZmlsZSIsdGl0bGU6W3RoaXMudHJ1bmMoYiw4KSx4LnNsaWNlKDIpLmpvaW4oIi8iKV0uam9pbigi4oCJL+KAiSIpLGFwcERhdGE6e2ZuYW1lOnguc2xpY2UoMikuam9pbigiLyIpLGRvYzp7X2lkOmJ9fX06dm9pZCAwfX0sc2VhcmNoUmU6bnVsbCxDTXByZWZpeDoiIixpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7cmV0dXJuIGIuZm5hbWUwPWIuZm5hbWUsYS5HZXRGaWxlKCkudGhlbihmdW5jdGlvbigpe3guaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpfSl9LHVpOnsiI2FwcC1zZWFyY2giOntkZWxheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztyZXR1cm4gbnVsbCE9YSYmKHguc2VhcmNoPWEpLHguc2VhcmNoLmxlbmd0aDwyP2Iuc2VhcmNoUmU9bnVsbDpiLnNlYXJjaFJlPW5ldyBSZWdFeHAoIigiK1JlZ0V4cC5lc2NhcGUoeC5zZWFyY2gpKyIpIiwiaSIpLHguc2VhcmNofSxjc3M6eyJteS1zZWFyY2giOi9eLnsyLH0kL319LCIjZm91bmQiOntkZWxheToxMzAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3gub24oImNsaWNrLm15IiwiLnBzZXVkb2xpbmsiLGZ1bmN0aW9uKCl7dmFyIHg9KyQodGhpcykudGV4dCgpLGI9YS5teS5maW5kKCIjdHh0ZWRpdG9yIikubmV4dCgpWzBdLkNvZGVNaXJyb3I7Yi5zY3JvbGxJbnRvVmlldyh7bGluZTp4LGNoYXI6MX0sNDgpO3ZhciBjPWZ1bmN0aW9uKCl7Yi5hZGRMaW5lQ2xhc3MoeC0xLCJiYWNrZ3JvdW5kIiwiYmcteWVsbG93NCIpLGZ1bmN0aW9uKCl7Yi5yZW1vdmVMaW5lQ2xhc3MoeC0xLCJiYWNrZ3JvdW5kIiwiYmcteWVsbG93NCIpfS5kZWJvdW5jZSgxMDApKCl9O2MuZGVib3VuY2UoMTAwKSgpLGMuZGVib3VuY2UoMzAwKSgpfSl9LGJpbmQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5zZWFyY2hSZSxiPVtdO3JldHVybiBhJiYoeC50ZXh0LmxpbmVzKCkuZm9yRWFjaChmdW5jdGlvbih4LGMpe2IubGVuZ3RoPDEwMCYmYS50ZXN0KHgpJiZiLnB1c2goYysxKX0pLGIubGVuZ3RoKT9bJzxkaXYgY2xhc3M9ImJyMiB5ZWxsb3ctMSBiZy15ZWxsb3c0IHBsNyBwcjcgcHQyIHBiMiBmczkwIGxoMTMwIj4nLCIgRm91bmQgQCAiLGIubWFwKGZ1bmN0aW9uKHgpe3JldHVybic8c3BhbiBjbGFzcz0icHNldWRvbGluayB0ZG4iPicreCsiPC9zcGFuPiJ9KS5qb2luKCIsICIpLCI8L2Rpdj4iXS5qb2luKCIiKToiIn0sY3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc2VhcmNoUmV9fSx3YXRjaDoiI2FwcC1zZWFyY2gifSwiI3R4dGVkaXRvciI6e2RlbGF5OjEwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtDb2RlTWlycm9yLmZyb21UZXh0QXJlYSh4WzBdLHttb2RlOmEubWltZTJtb2RlKGIubWltZSl8fGEuQ01wcmVmaXgrIm51bGwiLGxpbmVOdW1iZXJzOiEwLHZpZXdwb3J0TWFyZ2luOjEwMCxzY3JvbGxiYXJTdHlsZToobnVsbCwibmF0aXZlIiksbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6MixpbmRlbnRXaXRoVGFiczohMSx0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6ITEsZXh0cmFLZXlzOnsiQ3RybC1TIjpmdW5jdGlvbigpe2EuU2F2ZUZpbGUoKX0sIkNtZC1TIjpmdW5jdGlvbigpe2EuU2F2ZUZpbGUoKX0sIkN0cmwtRiI6YywiQ21kLUYiOmN9LHN0eWxlU2VsZWN0ZWRUZXh0OiEwLGhpZ2hsaWdodFNlbGVjdGlvbk1hdGNoZXM6e21pbkNoYXJzOjN9fSk7eFswXS5uZXh0U2libGluZy5Db2RlTWlycm9yO2Z1bmN0aW9uIGMoKXt2YXIgYz14WzBdLm5leHRTaWJsaW5nLkNvZGVNaXJyb3IuZ2V0U2VsZWN0aW9uKCk7Yy5sZW5ndGg+MiYmKGIuc2VhcmNoPWIuc2VhcmNoPT1jPyIiOmMsYS5teS5yZWNhbGMoIiNhcHAtc2VhcmNoIiksYS5teS5jaGVjaygiI2FwcC1zZWFyY2giKSl9fSxiaW5kOiJ0ZXh0In0sIiNhcHAtdGl0bGUiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLnAydSxjPSc8YSBjbGFzcz0idGRuIiBocmVmPSIjezF9IiB0aXRsZT0iezN9Ij57Mn08L2E+Jy5hc3NpZ24oYih4LnBhdGhbMF0pLHRoaXMudHJ1bmMoeC5wYXRoWzBdLDE1KS5lc2NhcGVIVE1MKCkseC5wYXRoWzBdLmVzY2FwZUhUTUwoKSksZD14LmRvYy5faWR8fHgucGF0aFsxXSsoIl9kZXNpZ24iPT14LnBhdGhbMV0/Ii8iK3gucGF0aFsyXToiIiksZT0nPGEgY2xhc3M9InRkbiIgaHJlZj0iezF9IiB0aXRsZT0iezN9Ij57Mn08L2E+Jy5hc3NpZ24oWyIjIixiKHgucGF0aFswXSksYihkKV0uam9pbigiLyIpLmVzY2FwZUhUTUwoKSxhLnRhZ0Vtb2ppKGQuZXNjYXBlSFRNTCgpKSxkLmxlbmd0aD4xNT9kLmVzY2FwZUhUTUwoKToiIik7cmV0dXJuWyc8c3BhbiBjbGFzcz0iZnMxNDAgbGgxMzAgeGdyYXkgbzgwIj4nLCc8c3BhbiBjbGFzcz0ibzgwIj57Mn08L3NwYW4+4oCJL+KAiTxzcGFuIGNsYXNzPSIiPnsxfTwvc3Bhbj7igIkv4oCJPHNwYW4gY2xhc3M9IiI+ezN9PC9zcGFuPicsIjwvc3Bhbj4iXS5qb2luKCIiKS5hc3NpZ24oZSxjLGEudGFnRW1vamkoeC5mbmFtZS5lc2NhcGVIVE1MKCkpKX0sd2F0Y2g6WyIjYXBwLXJldiIsIiN0eHRlZGl0b3IiXX0sIiNlZHN0YXRzIjp7ZGVsYXk6MTAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB0aGlzLmxhbmcuTVNHX1NUQVRTKHgudGV4dC5zcGxpdCgiXG4iKS5sZW5ndGgsWy4uLngudGV4dF0ubGVuZ3RoLHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh4LnRleHQpKS5sZW5ndGgpfSx3YXRjaDpbIiN0eHRlZGl0b3IiXX0sIiNidG4tcm9vdCI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLnAydTtiLmF0dHIoImhyZWYiLCIjIitjKHgucGF0aFswXSkrIi8iK2MoeC5wYXRoWzFdKSl9fSwiI2J0bi1yZWxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5HZXRGaWxlKCl9fSwiI2J0bi1maWxlLXNhdmUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5jbWRTYXZlKCl9fX0sbWltZTJtb2RlOmZ1bmN0aW9uKHgpe3ZhciBhPSJudWxsIixiPXtqYXZhc2NyaXB0Oi9cLyhqYXZhc2NyaXB0fGpzb24pJC9pLGh0bWxtaXhlZDovXC8oaHRtbHxodG18c3ZnXCt4bWwpJC9pLGNzczovXC8oY3NzfGxlc3MpJC9pLHhtbDovXCt4bWwkL2l9O3JldHVybiBPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyJudWxsIj09YSYmYltjXS50ZXN0KHgpJiYoYT1jKX0pLHRoaXMuQ01wcmVmaXgrYX0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI2VkY29udGFpbmVyIikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxjbWRTYXZlOmZ1bmN0aW9uKCl7dGhpcy5TYXZlRmlsZSgpfSxIVE1MOic8ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgdzE1NSBmczk1Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIGJsdWUgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSH0iIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxOXB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB1aS1zZWFyY2gtY2xlYXIiIHN0eWxlPSJtYXJnaW4tbGVmdDotMTlweCFpbXBvcnRhbnQ7Im9uY2xpY2s9IiQodGhpcykuc2libGluZ3MoXCdpbnB1dDplcSgwKVwnKS52YWwoXCdcJykuYmx1cigpIj48L3NwYW4+PC9kaXY+PGEgaWQ9ImJ0bi1yb290IiBjbGFzcz0idzM4IGJ1dHRvbiBtcjIgdGRuIGRpYiB2YXQgcGwwIHByMCBmdzYwMCIgdGl0bGU9IntUSVBfVVB9Ij4uLi88L2E+PGJ1dHRvbiBpZD0iYnRuLXJlbG9hZCIgY2xhc3M9InczOCBtcjgiIHRpdGxlPSJ7VElQX1JFTE9BRH0iPjxzcGFuIGNsYXNzPSJmaS1sb29wIj48L3NwYW4+PC9idXR0b24+PGRpdiBpZD0iYXBwLXRpdGxlIiBjbGFzcz0iZGliIHZhdCBlbGwgbXIyMCBudyI+PC9kaXY+PGRpdiBjbGFzcz0ibncgZGliIHZhdCI+PGJ1dHRvbiBpZD0iYnRuLWZpbGUtc2F2ZSIgY2xhc3M9ImdyZWVuIG1yMiI+e0JUTl9TQVZFfTwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9ImVkc3RhdHMiIGNsYXNzPSJtdDMgbXIxNSBmczkwIGdyYXkyIGZyIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbGhlaWdodCBwbDIwIHByMjAgcHQxNiBwYjE2Ij48ZGl2IGlkID0gImVkY29udGFpbmVyIiBjbGFzcz0icGFuZWxoZWlnaHQtMzIgYmFzIG9oIGJyMiIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjx0ZXh0YXJlYSBpZD0idHh0ZWRpdG9yIiBjbGFzcz0idzEwMHAgcGFuZWxoZWlnaHQtMzIiPjwvdGV4dGFyZWE+PC9kaXY+PGRpdiBpZD0iZm91bmQiIGNsYXNzPSJoaWRlIHcxNDUiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OiszO3RvcDoyMXB4O3JpZ2h0OjI0cHg7Ij48L2Rpdj48L2Rpdj4nLHN0eWxlOnsiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjg3JSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6ZnVuY3Rpb24oeCl7cmV0dXJuIm1pbi1oZWlnaHQ6IisodGhpcy5QaG8oIlBhbmVsSGVpZ2h0IiktMzQpKyJweDsifSwiIC5teS1tb2RhbC1mb3JtIjp7IiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MTUwcHg7bWF4LWhlaWdodDpjYWxjKDE4ICogMTdweCArIDZweCk7IiwiIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoidHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOyIsIi5lZC1lcnJvciAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgLkNvZGVNaXJyb3IiOiJtaW4taGVpZ2h0OjE1MHB4OyBoZWlnaHQ6YXV0bzsiLCIgLmJ1dHRvbnMgYnV0dG9uIjoibWFyZ2luLXJpZ2h0OiAycHg7cGFkZGluZzogMC40ZW0gMC43ZW0gMC40ZW0gMC43ZW07Zm9udC1zaXplOiA5MCU7In0sIiAjYXBwLXRpdGxlIjoibWF4LXdpZHRoOmNhbGMoMTAwJSAtIDMzMHB4IC0gMjcwcHggLSA0MHB4KTsifSxHZXRGaWxlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXt1cmw6YS5wYXRoLnNsaWNlKDApLGRhdGFUeXBlOiJ0ZXh0Iix0aW1lb3V0OjNlNCxjYWhjZTohMSxoZWFkZXJzOntBY2NlcHQ6IiovKiJ9fTtyZXR1cm4geC5CdXN5LmRlYm91bmNlKDEwKSghMCkseC5SZXEoYikudGhlbihmdW5jdGlvbihiLGMpe2Euc3JjPWEudGV4dD1iLGEubWltZT1jLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSsiIix4Lm15LnRyaWdnZXIoIiNlZGNvbnRhaW5lciIsInJlc2V0dGFiaGFzaC5teSIpLHgubXkucmVkcmF3KCl9KS5mYWlsKGZ1bmN0aW9uKCl7fSkuYWx3YXlzKGZ1bmN0aW9uKCl7eC5CdXN5KCExKX0uZGVib3VuY2UoMTUpKX0sU2F2ZUZpbGU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPWIucGF0aC50bygiX2Rlc2lnbiI9PWIucGF0aFsxXT8zOjIpLGQ9e3VybDpjLnNsaWNlKDApLG1ldGhvZDoicHV0IixoZWFkZXJzOnsiWC1Db3VjaC1GdWxsLUNvbW1pdCI6InRydWUiLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sZGF0YToiIn0sZT0kLkRlZmVycmVkKCksZj1hLmxhbmcsZz0iIjtyZXR1cm4gYS5CdXN5LmRlYm91bmNlKDEwKSghMCksYS5SZXEoYykudGhlbihmdW5jdGlvbih4KXt4Ll9hdHRhY2htZW50c3x8KHguX2F0dGFjaG1lbnRzPXt9KSx4Ll9hdHRhY2htZW50c1tiLmZuYW1lXT17Y29udGVudF90eXBlOmIubWltZSxkYXRhOmN3LmxpYi5iYXNlNjQoYi50ZXh0KX0sZz14Ll9yZXYsZC5kYXRhPUpTT04uc3RyaW5naWZ5KHgpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiBhLlJlcShkKX0pLnRoZW4oZnVuY3Rpb24oKXt4fHxjdy5saWIubm90ZShmLk1TR19TQVZFLmFzc2lnbihpKGIuZm5hbWUsNDApLGkoYi5kb2MuX2lkLDIwKSksIm9rIiksJC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjpiLnBhdGhbMF0sY21kOiJ3cml0ZSIsZG9jczpbYi5kb2MuX2lkXX0pLCQubXkucmFkaW8oImRibGlzdCIsW2IucGF0aFswXV0pLCQubXkucmFkaW8oImZpbGV1cGRhdGUiLHtkYjpiLnBhdGhbMF0sZG9jOmIuZG9jLl9pZCxyZXY6ZyxmaWxlOmIuZm5hbWV9KSxhLm15LnRyaWdnZXIoIiNlZGNvbnRhaW5lciIsInJlc2V0dGFiaGFzaC5teSIpLGUucmVzb2x2ZSgpfSkuZmFpbChmdW5jdGlvbihhLGMsZCl7eHx8Y3cubGliLm5vdGUoZi5FUlJfU0FWRS5hc3NpZ24oaShiLmZuYW1lLDQwKSxhKyI6ICIraChkLnJlYXNvbnx8YykpLCJlcnJvciIpLGUucmVqZWN0KGEsYyxkKX0pLmFsd2F5cyhmdW5jdGlvbigpe2EuQnVzeSghMSl9LmRlYm91bmNlKDE1KSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gaCh4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfWZ1bmN0aW9uIGkoeCxiKXtyZXR1cm4gYS50YWdFbW9qaShoKCh4KyIiKS50cnVuY2F0ZShifHwxNSwicmlnaHQiLCLigKYiKSkpfX19LCRjb25maWc6e2lkOiJjdy5QaG90b24uJGNvbmZpZyIsbGFuZzp7fSxwYXJhbXM6e3Jlc3R5bGU6MjUsc3RyaWN0OiEwfSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIGN3LmxpYi5jcmMyKCh0aGlzLkRvY1swXXx8e30pLmRvY3x8e30pfSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJDb3VjaERCIGNvbmZpZyJ9LG1hdGNoOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGF8fDEhPXgubGVuZ3RofHwiX2NvbmZpZyIhPXhbMF0/bnVsbDp7dGl0bGU6IkNvdWNoREIgY29uZmlnIn19LGRhdGE6e3BhdGg6W10sbm9kZToiIixkb2M6e30sc3RhbXA6MH0sRG9jOltdLE9sZDp7fSxOb2RlczpbXSxNZW1iZXJzQ2hlY2tlZDohMSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO2EuSFRNTC5IaXN0b3J5Um93PWEuUGhvKCJDb21waWxlVCIpKGEuSFRNTC5IaXN0b3J5Um93KSxhLkhpc3RvcnkuaW5pdChhLHgpO3ZhciBiPWEubGFuZy5IRUxQO3JldHVybiAkLmV4dGVuZChiLmNodHRwZF9hdXRoLE9iamVjdC5yZWplY3QoYi5jb3VjaF9odHRwZF9hdXRoLFsiX18iLCIiXSkpLCQuZXh0ZW5kKGIuY2h0dHBkLE9iamVjdC5yZWplY3QoYi5odHRwZCxbIl9fIiwiIl0pKSxhLkdldCghMSwhMCkudGhlbihmdW5jdGlvbihiKXt4LmFkZENsYXNzKCJudyIpLmh0bWwoYS5IVE1MLkFwcC5hc3NpZ24oYS5sYW5nKS5hc3NpZ24oe1RJVExFX0hUTUw6YS5IVE1MLlRpdGxlSFRNTFthLlBobygiaXNDbHVzdGVyIik/MTowXX0pKX0pfSx1aTp7IiNhcHAtdGl0bGUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5Ob2Rlcy5sZW5ndGg+MSYmYS5zZWxlY3QyKHgse2RhdGE6YS5Ob2Rlcy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiBiLk5vZGVzLmxlbmd0aDwyP3dpbmRvdy5sb2NhdGlvbi5ob3N0OihudWxsIT1hJiZ4Lm5vZGUhPWEmJih4Lm5vZGU9YSxmdW5jdGlvbigpe2IuR2V0KCEwKS50aGVuKGZ1bmN0aW9uKCl7Yi5IaXN0b3J5LmNsZWFyKCEwKX0pfS5kZWxheSgyMCkpLHgubm9kZSl9fSwiI2FwcC1zZWFyY2giOntkZWxheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGw9PWE/eC5zZWFyY2g6KHguc2VhcmNoPWEubGVuZ3RoPDM/IiI6YSx0aGlzLkRvY1swXSYmdGhpcy5Eb2NbMF0uc2VhcmNoIT14LnNlYXJjaCYmdGhpcy5teS5maW5kKCIjanNvbi1zZWFyY2giKS52YWwoeC5zZWFyY2gpLnRyaWdnZXIoImNoZWNrIiksYSl9LGNzczp7Im15LXNlYXJjaCI6L14uezMsfSQvfX0sIiNqc2VkaXRvciI6e2RlbGF5OjEwMCxjaGVjazohMSxsaXN0OiI8ZGl2PjwvZGl2PiIsbWVyZ2U6ITEsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EubmljZVNjcm9sbCh4LHtib3VuY2VzY3JvbGw6ITAsY3Vyc29yY29sb3I6IiMyMzQiLGN1cnNvcm9wYWNpdHltaW46LjA3LGN1cnNvcm9wYWNpdHltYXg6LjR9KSx4Lm9uKCJjbGljay5teSIsIi5idG4taGVscCIsZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpLGI9eC5wYXJlbnQoKS5wYXJlbnQoKSxjPWIubXkoImRhdGEiKSxkPWMucGF0aC5zbGljZSgxKS5jb25jYXQoW2Mua2V5XSk7aWYoeC5kYXRhKCJtb2RhbCIpKXJldHVybiAkKHRoaXMpLm1vZGFsKCEwKTtkWzFdfHwoZFsxXT0iIik7dmFyIGU9Yi5teSgibWFuaWZlc3QiKS5IZWxwKGQpO3gucGFyZW50KCkuYWRkQ2xhc3MoImhvdmVyIiksYi5hZGRDbGFzcygiaG92ZXIiKSwkKHRoaXMpLm1vZGFsKHttYW5pZmVzdDp7aW5pdDpbJzxkaXYgaWQ9ImluZm8tdGl0bGUiIGNsYXNzPSJmczExMCBib2xkZXIgbXQzIG1iNyI+PC9kaXY+JywnPGRpdiBpZD0iaW5mby1oZWxwIiBzdHlsZT0id29yZC1icmVhazpub3JtYWw7Ij48L2Rpdj4nLCc8ZGl2IGlkPSJpbmZvLXVybCIgY2xhc3M9Im10NyI+PC9kaXY+J10sdWk6eyIjaW5mby1oZWxwIjoidGlwIiwiI2luZm8tdGl0bGUiOiJ0aXRsZSIsIiNpbmZvLXVybCI6e2JpbmQ6InVybCIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4LnVybH19fX19LGRhdGE6e3RpdGxlOmQuam9pbigi4oCJL+KAiSIpLHRpcDooZS50aXB8fGEubGFuZy5NU0dfVU5LTk9XTl9LRVkpLmVzY2FwZUhUTUwoKS5yZXBsYWNlKC9gKFteYF0rKWAvZywnPGNvZGUgY2xhc3M9ImRpYiB2YXQiPiQxPC9jb2RlPicpLHVybDplLnVybH0sd2lkdGg6MzUwLGFsaWduOiJ0b3A6MTAzJTtyaWdodDotMzhweDsiLG5vc2U6InRvcCJ9KS5hbHdheXMoZnVuY3Rpb24oKXt4LnBhcmVudCgpLnJlbW92ZUNsYXNzKCJob3ZlciIpLGIucmVtb3ZlQ2xhc3MoImhvdmVyIil9KX0pfSxpZDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5kYXRhLnN0YW1wfSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuY3JjMih4LmRvYyl9LG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1mdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5QaG8oIkNvdWNoIikudmVyLGM9WyJodHRwZF9nbG9iYWxfaGFuZGxlcnMiLCJuYXRpdmVfcXVlcnlfc2VydmVycyIsImh0dHBkX2Rlc2lnbl9oYW5kbGVycyIsImRhZW1vbnMiLCJxdWVyeV9zZXJ2ZXJzIiwiaHR0cGRfZGJfaGFuZGxlcnMiLCJleHRlcm5hbCIsIm9zX2RhZW1vbnMiXTtyZXR1cm4oYj49IjAwMS4wMDcuMDAwIiYmYjwiMDAyLiJ8fGI+PSIwMDIuMDAxLjAwMSIpJiYoYy5pbmRleE9mKHgucGF0aFsxXSk+LTF8fGMuaW5kZXhPZih4LmtleSk+LTEpJiZhLmxhbmcuQkFOX0hUVFB9LmJpbmQodGhpcyk7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGEuUGhvKCJFZCIpLmpzb250cmVlLGEuRXh0RWQse2RhdGE6e2xhYmVsV2lkdGg6MjUwfX0se2xhbmc6e0hFTFA6YS5sYW5nLkhFTFB9LE1FZGl0OntkYXRhOntjb21taXRUeXBlS2V5czp7YXV0bzpbIkVudGVyIl19fX0sTVJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYS5teS5yb290KCl9fSx7TGliOntpc1N5c3RlbTpifX0pfSxiaW5kOiJ0aGlzLkRvYyJ9LCIjYnRuLWNmZy1zYXZlIjp7ZGVsYXk6MjAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuY21kU2F2ZSgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuSGlzdG9yeS5zdGVwcy5sZW5ndGh9fSx3YXRjaDpbIiNjZmctd2FybiIsIiNkb2MtaGlzdG9yeSJdfSwiI2J0bi1yZWxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLkdldCghMCkudGhlbihmdW5jdGlvbigpe2IuSGlzdG9yeS5jbGVhcighMCl9KX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe09iamVjdC5pc09iamVjdChhKSYmKGEubmFtZXx8JC5teS5yYWRpbygicmVsb2FkIix7aWQ6eC50YWJpZCxwYXRoOngucGF0aH0pKX0scmV2ZXJ0X2NvbmZpZzpmdW5jdGlvbigpe3RoaXMuR2V0LmRlYm91bmNlKDE1MCkoITApfX19fSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9eC5maW5kKCIjanNlZGl0b3IiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LGNtZFNhdmU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9eC5sYW5nO3guTm9kZXMubGVuZ3RoPjE/eC5teS5tb2RhbCgiI2J0bi1jZmctc2F2ZSIse21hbmlmZXN0OnguUGhvKCJDb25maXJtIiksd2lkdGg6NTUwLGRhdGE6e3RleHQ6Yi5NU0dfQ0xVU1RFUix5ZXM6Yi5CVE5fU0FWRUNMVVNURVIseWVzY3NzOiJvcmFuZ2UiLG5vOmIuQlROX1NBVkVOT0RFLmFzc2lnbih4LnRydW5jKGEubm9kZSwyMikuZXNjYXBlSFRNTCgpKSxub2NzczoiZ3JlZW4iLHVzZUJ1dHRvbnM6ITB9LGdsb2JhbDohMCxzY3JlZW46ITAsejoxOTkyLGZvY3VzOiIjYnRuLXllcyJ9KS50aGVuKGZ1bmN0aW9uKGIpeyJubyI9PWIuY21kP3guU2F2ZShbYS5ub2RlXSk6eC5TYXZlKCl9KTp4LlNhdmUoKX0sc3R5bGU6eyIgI2pzZWRpdG9yPmRpdiI6ImZvbnQtc2l6ZToxNC41cHghaW1wb3J0YW50O21pbi1oZWlnaHQ6NTUwcHg7IiwiICNqc2VkaXRvciAuaW5hdiI6Im1hcmdpbjoxcHggMCFpbXBvcnRhbnQ7IiwiIC5pYWN0IC5idXR0b24iOiJwYWRkaW5nOiAwLjA1ZW0gMCAwLjFlbSAwIWltcG9ydGFudDsiLCIgI2pzZWRpdG9yPi5teS1mb3JtPnNlY3Rpb24+I2VkaXRvcj4jZG9jPi5pYWN0LmJ1dHRvbnMiOiJwYWRkaW5nLXJpZ2h0OjNweDsiLCIgLkNvZGVNaXJyb3ItbGluZW51bWJlciI6IndoaXRlLXNwYWNlOm5vd3JhcDsiLCIgLm15LW1vZGFsLWZvcm0iOnsiIC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIjoibGluZS1oZWlnaHQ6MTdweDsiLCIgLkNvZGVNaXJyb3Itc2Nyb2xsIjoibWluLWhlaWdodDoxNTBweDttYXgtaGVpZ2h0OmNhbGMoMTggKiAxN3B4ICsgNnB4KTsiLCIgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJ0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7IiwiLmVkLWVycm9yIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyIsIiAuQ29kZU1pcnJvciAuY20tcHJvcGVydHkiOiJjb2xvcjojNDM0ZTVkOyIsIiAuQ29kZU1pcnJvciAuY20tdmFyaWFibGUiOiJjb2xvcjojMzNiZmFkOyIsIiAuQ29kZU1pcnJvciAuY20ta2V5d29yZCI6ImNvbG9yOiM5MDI1OWU7IiwiIC5Db2RlTWlycm9yIjoibWluLWhlaWdodDoxNTBweDsgaGVpZ2h0OmF1dG87IiwiIC5idXR0b25zIGJ1dHRvbiI6Im1hcmdpbi1yaWdodDogMnB4O3BhZGRpbmc6IDAuNGVtIDAuN2VtIDAuNGVtIDAuN2VtO2ZvbnQtc2l6ZTogOTAlOyIsIiBjb2RlIjoiYmFja2dyb3VuZC1jb2xvcjogI2ViZjBmMyFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czogMnB4O2ZvbnQtc2l6ZTogODUlOyBwYWRkaW5nOiAwLjFlbSAwLjNlbSJ9fSxFeHRFZDp7SFRNTDp7SXRlbVJvb3Q6JzxkaXYgY2xhc3M9ImluYXYgaXJvb3QiPjxkaXYgY2xhc3M9ImlrZXkiPjwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIGNwIj7igJM8L2Rpdj48ZGl2IGNsYXNzPSJpZWRpdG9yIHBhbmVsaGVpZ2h0LTMyIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpdmFsdWUgaW11bHRpIGhpZGUiPjxkaXYgY2xhc3M9ImlsaXN0Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpYWN0IGJ1dHRvbnMiPjxidXR0b24gY2xhc3M9ImJ0bi1hZGQgYnV0dG9uIGdyZWVuIiB0aXRsZT0iQWRkIG5ldyBwcm9wZXJ0eSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktcGx1cyI+PC9zcGFuPiZ0aGluc3A7PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuLXRha2VvdXQgYnV0dG9uIiB0aXRsZT0iQ29weSAvIHBhc3RlIC8gZWRpdCBhcyBKU09OIj48c3BhbiBjbGFzcz0iZmktc2hvcHBpbmctYmFnIj48L3NwYW4+PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuLWpzb24gaGlkZSI+PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXJldmVydCIgY2xhc3M9ImJ1dHRvbiIgIHRpdGxlPSJSZXZlcnQgdG8gc2F2ZWQiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXJlZnJlc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2PicsSXRlbVNpbXBsZTonPGRpdiBjbGFzcz0iaW5hdiI+PGRpdiBjbGFzcz0iaWtleSBpa2V5c2ltcGxlIj48L2Rpdj48ZGl2IGNsYXNzPSJpdmFsdWUiPjwvZGl2PjxkaXYgY2xhc3M9ImllZGl0b3IiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImlhY3QgYnV0dG9ucyI+PGJ1dHRvbiBjbGFzcz0iYnRuLWhlbHAgYnV0dG9uIHRlYWwiIHRpdGxlPSJDb25maWcga2V5IGluZm8iPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLWluZm8iPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgYnV0dG9uIHJlZCIgdGl0bGU9IkRlbCBwcm9wZXJ0eSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2PicsSXRlbUNvbXBsZXg6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXRyZWUiPjwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIGNwIj7igJM8L2Rpdj48ZGl2IGNsYXNzPSJpZWRpdG9yIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpdmFsdWUgaW11bHRpIGhpZGUiPjxkaXYgY2xhc3M9ImlsaXN0Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpYWN0IGJ1dHRvbnMiPjxidXR0b24gY2xhc3M9ImJ0bi1hZGQgYnV0dG9uIGdyZWVuIiB0aXRsZT0iQWRkIG5ldyBwcm9wZXJ0eSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktcGx1cyI+PC9zcGFuPiZ0aGluc3A7PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuLWhlbHAgYnV0dG9uIHRlYWwiIHRpdGxlPSJDb25maWcga2V5IGluZm8iPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLWluZm8iPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1qc29uIGhpZGUiPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgYnV0dG9uIHJlZCIgIHRpdGxlPSJEZWwgbm9kZSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2Pid9LHVpOnsiI2RvYyI6e21hbmlmZXN0OmZ1bmN0aW9uKHgpe2lmKCF0aGlzLkhUTUwuSXRlbVJvb3QpcmV0dXJuIHRoaXMuJG11bHRpO3ZhciBhPXRoaXM7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGEuJG11bHRpLHtIVE1MOmEuSFRNTC5JdGVtUm9vdCx1aTp7IiNidG4tcmV2ZXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEsYil7bnVsbCE9YSYmJC5teS5yYWRpbygicmV2ZXJ0X2NvbmZpZyIsITApfX19fSl9fX0sSGVscDpmdW5jdGlvbih4KXt4LnNsaWNlKDApO3ZhciBhPXRoaXMubGFuZy5IRUxQLGI9bnVsbCxjPSIiLGQ9IiIsZT0iIixmPU9iamVjdC5pc0FycmF5O2lmKGEpe251bGw9PXhbMV0mJih4WzFdPSIiKTt2YXIgZz1hW3hbMF1dfHx7fTtnJiYoYz0oYj1nW3hbMV1dfHxnWyIqIl18fCIiKT9mKGIpP2JbMF0rIi4iOmIrIi4iOiIiLGU9ZihiKT9iWzFdOmcuX18sYyYmZSYmKGQ9ZS5hc3NpZ24oJC5leHRlbmQoe2tleTp4LmNvbXBhY3QoITApLmpvaW4oIi8iKX0sYS5PQkpfUEFUSFMpKSkpLGQ/ZD0nPGEgaHJlZj0iezF9IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiBwbDIgcHI1IiByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiIHJlbD0ibm9mb2xsb3ciPjxzcGFuIGNsYXNzPSJmaS1wYWdlIGZzOTAgbzcwIj48L3NwYW4+Jm5ic3A7ezJ9PC9hPicuYXNzaWduKGQsZihiKT9hLlRYVF9FWFQ6YS5UWFRfRE9DUyk6YyYmKGQ9JzxzcGFuIGNsYXNzPSJmczkwIG83MCI+ezF9PC9zcGFuPicuYXNzaWduKGEuVFhUX05PRE9DUykpfXJldHVybnt0aXA6Yyx1cmw6ZH19fSxHZXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9JC5EZWZlcnJlZCgpLGU9W10sZj1iLlBobygiTWVtYmVyc2hpcCIpfHx7fTtyZXR1cm4hYi5QaG8oImlzQ2x1c3RlciIpJiZiLk1lbWJlcnNDaGVja2VkfHwoYi5NZW1iZXJzQ2hlY2tlZD0hMCxPYmplY3QuaXNBcnJheShmLmFsbF9ub2RlcykmJk9iamVjdC5pc0FycmF5KGYuY2x1c3Rlcl9ub2Rlcyk/KChlPWYuY2x1c3Rlcl9ub2Rlcy5zbGljZSgwKS5pbnRlcnNlY3QoZi5hbGxfbm9kZXMpKS5sZW5ndGg8MiYmKGIuUGhvKCkuaXNDbHVzdGVyPSExKSxiLk5vZGVzPWUsLTE9PWUuaW5kZXhPZihjLm5vZGUpJiYoYy5ub2RlPWVbMF0pKTpiLlBobygpLmlzQ2x1c3Rlcj0hMSksZygpLGQucHJvbWlzZSgpO2Z1bmN0aW9uIGcoKXt2YXIgZT1bIl9jb25maWciXTtiLk5vZGVzLmxlbmd0aCYmKDEhPWIuTm9kZXMubGVuZ3RoJiZjLm5vZGU/ZS51bnNoaWZ0KCJfbm9kZSIsYy5ub2RlKTplLnVuc2hpZnQoIl9ub2RlIixiLk5vZGVzWzBdKSksYi5SZXEoZSkudGhlbihmdW5jdGlvbih4KXt2YXIgYT17fTtyZXR1cm4gT2JqZWN0LmtleXMoeCkuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oYil7T2JqZWN0LmlzT2JqZWN0KHhbYl0pP2FbYl09T2JqZWN0LmtleXMoeFtiXSkuc29ydCgpLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhW2NdPWgoeFtiXVtjXSksYX0se30pOmFbYl09eFtiXX0pLGMuZG9jPWEsYi5Eb2M9W3tsYWJlbFdpZHRoOjI1MCxkb2M6Yi5kYXRhLmRvYyxfaWQ6Il9jb25maWcifV0sYi5PbGQ9T2JqZWN0LmNsb25lKGMuZG9jLCEwKSxhLmNodHRwZCYmdm9pZCAwIT09YS5jaHR0cGQubWF4X2RiX251bWJlcl9mb3JfZGJzX2luZm9fcmVxJiYoYi5QaG8oIkNvdWNoIikubWF4QmF0Y2g9K2EuY2h0dHBkLm1heF9kYl9udW1iZXJfZm9yX2Ric19pbmZvX3JlcXx8MCkseH0pLnRoZW4oZnVuY3Rpb24oYSl7Yy5zdGFtcD1EYXRlLm5vdygpLHgmJmIubXkucmVjYWxjKCIjanNlZGl0b3IiKSxiLm15LnRyaWdnZXIoIiNjZmctcHJveHkiLCJyZXNldHRhYmhhc2gubXkiKSxkLnJlc29sdmUoYSl9KS5mYWlsKGZ1bmN0aW9uKHgsYyxlKXthfHxjdy5saWIubm90ZShiLmxhbmcuRVJSX1JFTE9BRC5hc3NpZ24oeCxjLnRydW5jYXRlKDQ1LCJyaWdodCIsIuKApiIpLmVzY2FwZUhUTUwoKSksImVycm9yIiksZC5yZWplY3QoeCxjLGUpfSl9ZnVuY3Rpb24gaCh4KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHg/eDoidHJ1ZSI9PXh8fCJmYWxzZSIhPXgmJigvXlxkezEsMTV9JC8udGVzdCh4KT8reDp4KX19LFNhdmU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPShhLlBobygiX2NvbXBpbGVkIiksYS5sYW5nKSxjPVtdLGQ9e30sZT0oeHx8YS5Ob2Rlcykuc2xpY2UoMCksZj1hLkRvY1swXS5kb2M7Yz1PYmplY3QudmFsdWVzKGEuSGlzdG9yeS5zdGVwcy5yZWR1Y2UoZnVuY3Rpb24oeCxhKXt2YXIgYj1hLm9wO2lmKGEucGF0aC5sZW5ndGg+Mil7dmFyIGM9YS5wYXRoLnNsaWNlKDEpLmpvaW4oIuKAgyIpO3hbY109e2tleTpjLHZhbHVlOiJkZWwiIT1iP2N3LmxpYi5nZXRyZWYoZixhLnBhdGguc2xpY2UoMSkpKyIiOm51bGx9fWVsc2V7dmFyIGQ9YS5wYXRoWzFdLGU9Y3cubGliLmdldHJlZihmLGQpO09iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9W2QsYV0sZT1jLmpvaW4oIuKAgyIpO3hbZV09e2tleTplLHZhbHVlOiJkZWwiIT1iP2N3LmxpYi5nZXRyZWYoZixjKSsiIjpudWxsfX0pfXJldHVybiB4fSx7fSkpLGUubGVuZ3RoJiYoYz1jLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oYil7eC5wdXNoKHt1cmw6WyJfbm9kZSIsYiwiX2NvbmZpZyJdLGtleTphLmtleSx2YWx1ZTphLnZhbHVlfSl9KSx4fSxbXSkpO3ZhciBnPWMubGVuZ3RoO2Z1bmN0aW9uIGgoKXtPYmplY3Quc2l6ZShkKT8oY3cubGliLm5vdGUoYi5NU0dfU0FWRV9GQUlMLCJlcnJvciIpLGNvbnNvbGUubG9nKCJFcnJvcnMgZHVyaW5nIGNvbmZpZyB1cGRhdGU6IiksY29uc29sZS5sb2coZCkpOihjdy5saWIubm90ZShiLk1TR19TQVZFX09LLCJvayIpLGEuR2V0KCEwKS50aGVuKGZ1bmN0aW9uKCl7YS5IaXN0b3J5LmNsZWFyKCEwKX0pKX1jLmZvckVhY2goZnVuY3Rpb24oeCxiKXthLlJlcSh7dXJsOih4LnVybHx8WyJfY29uZmlnIl0pLmNvbmNhdCh4LmtleS5zcGxpdCgi4oCDIikpLG1ldGhvZDpudWxsIT09eC52YWx1ZT8iUFVUIjoiREVMRVRFIixjb250ZW50VHlwZTpudWxsIT09eC52YWx1ZT8iYXBwbGljYXRpb24vanNvbiI6bnVsbCxkYXRhOm51bGwhPT14LnZhbHVlP0pTT04uc3RyaW5naWZ5KHgudmFsdWUpOnZvaWQgMH0pLnRoZW4oZnVuY3Rpb24oKXsicmVwbGljYXRvcuKAg2RiIj09eC5rZXkmJihhLlBobygpLlJlcGxpY2F0b3JEQj14LnZhbHVlKX0pLmZhaWwoZnVuY3Rpb24oYSxiLGMpe2RbeC5rZXldPXtjb2RlOmEsZXJyb3I6YixyZWFzb246Y319KS5hbHdheXMoZnVuY3Rpb24oKXsoZy09MSl8fGgoKX0pfS5sYXp5KGEuUGhvKCJDZmciKS5iYXRjaFVwZGF0ZUNmZ3x8MTAwKSl9LEhUTUw6e0FwcDonPGRpdiBpZD0iY29sLWVkIiBjbGFzcz0iZGliIHZhdCB3biI+PGRpdiBpZD0iYS1oZWFkIiBjbGFzcz0iYXBwLWhlYWQgbncgcHQxOCBwbDIwIHByMjAgbGgxNjAiPjxkaXYgY2xhc3M9ImZyIHcxNTUgZnM5NSI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyBibHVlIG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFwcC1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0h9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PntUSVRMRV9IVE1MfTxkaXYgY2xhc3M9Im53IG1yMTAgZGliIHZhdCB0YWMgdzQwcCIgPjxidXR0b24gaWQ9ImJ0bi1yZWxvYWQiIGNsYXNzPSJ3NDAgbXIyIiB0aXRsZT0ie0JUTl9SRVZFUlR9Ij48c3BhbiBjbGFzcz0iZmktcmVmcmVzaCI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jZmctc2F2ZSIgY2xhc3M9ImdyZWVuIG1yMiIgZGlzYWJsZWQ+e0JUTl9TQVZFfTwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InBhbmVsaGVpZ2h0IGZlYXRoZXIiPjxkaXYgaWQ9ImpzZWRpdG9yIiBjbGFzcz0icGFuZWxoZWlnaHQgcGwyMCBwcjIwIHB0MTAgcGIxNiIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImNvbC1oaXN0b3J5IiBjbGFzcz0iZGliIHZhdCB4Z3JheSB3biI+PGRpdiBpZD0iaC1oZWFkIiBjbGFzcz0iYXBwLWhlYWQgbncgcHQxOCBwcjIwIGxoMTYwIj48ZGl2IGNsYXNzPSJmciI+PGJ1dHRvbiBpZD0iYnRuLWhpc3RvcnktdW5kbyIgY2xhc3M9ImxoMTQwIj57QlROX0hJU1RfVU5ET308L2J1dHRvbj48L2Rpdj48c3BhbiBjbGFzcz0iZnMxNTAgZGliIHZhdCBwbDUgbzkwIHB0MyI+e1RYVF9ISVNUX1RJVExFfTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbGhlaWdodCBmZWF0aGVyIj48ZGl2IGlkPSJlbXB0eS1oaXN0b3J5IiBjbGFzcz0iaGlkZSBwYWJjIHBsNSBwdDggZ3JheSIgc3R5bGU9InRvcDowOyBsZWZ0OjA7Ij57VFhUX0hJU1RfRU1QVFl9PC9kaXY+PGRpdiBpZD0iZG9jLWhpc3RvcnkiIGNsYXNzPSJwYW5lbGhlaWdodCBwcjIwIHB0MTAgcGIxNiIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjwvZGl2PjwvZGl2PjxzdHlsZSBpZD0ic3R5bGUtaGlzdG9yeSIgY2xhc3M9ImhpZGUiPjwvc3R5bGU+PGRpdiBpZD0ic2Nyb2xsLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+PC9kaXY+PGRpdiBpZD0iY2ZnLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxUaXRsZUhUTUw6Wyc8ZGl2IGlkPSJhcHAtdGl0bGUiIGNsYXNzPSJkaWIgdmF0IGZzMTYwIGxoMTIwIGVsbCBtcjIwIiBzdHlsZT0ibWF4LXdpZHRoOjQwJSI+PC9kaXY+JywnPGRpdiBjbGFzcz0iZGliIHZhdCBmczExNSBtcjIwIHc0MHAiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXRpdGxlIiBjbGFzcz0idzEwMHAgYm9sZGVyIj48L2Rpdj4nXX19LCR2aWV3OntpZDoiY3cuUGhvdG9uLiR2aWV3IixsYW5nOnt9LHBhcmFtczp7cmVzdHlsZToyMCxzdHJpY3Q6ITB9LGluaGVyaXQ6WyJCeXRlcyIsIk1ldHJpYyJdLFN0ZXBzOlsxLDEwLDIwLDUwLDEwMCwyMDAsNTAwLDFlM10sTW9kYWxzOnt9LFJlc3VsdDpbXSxSb3dzOltdLEVycm9yOiIiLGZSb3dzOm51bGwsZ1Jvd3M6bnVsbCxpc0VtcHR5OiExLERkb2NzOnt9LFZpZXdzOltdLFZpOnt9LFZpRWRzOnt9LFBlbmRpbmc6e30sTGlzdDpbXSxGaWVsZHM6W10sQ29sdW1uczpbXSxFZGl0b3I6W10saGFzU2VsZWN0aW9uOiExLGxhc3RSZWFkU3RhbXA6MCxDTXByZWZpeDoiIixtOmZ1bmN0aW9uKCl7fSxSVDpmdW5jdGlvbih4KXtyZXR1cm4gbnVsbD09eD90aGlzOk9iamVjdC5pc0FycmF5KHgpP2N3LmxpYi5nZXRyZWYodGhpcyx4KTp0aGlzW3hdfSxJbmRleDpmdW5jdGlvbih4KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCxudWxsLCIgICIpfSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5zdGFzaFZpZXdTdGF0ZSgpLFsiI3ZpZXctcmVzdWx0cyJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9eC5maW5kKGEpOyJmdW5jdGlvbiI9PXR5cGVvZiBiLmdldE5pY2VTY3JvbGwmJmIuZ2V0TmljZVNjcm9sbCgpLnJlbW92ZSgpLGIubGlzdCgicmVtb3ZlIil9KTt0cnl7eC5maW5kKCIjdmlldy1uYW1lIikuZGF0YSgpLnNlbGVjdDIuZHJvcGRvd24uZmluZCgiLnNlbGVjdDItcmVzdWx0cyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIHgmJngoKS5yZW1vdmUoKX0pfWNhdGNoKHgpe319LHMycDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1bYS5wYXRoWzBdXTtpZighYS5zdGFydCYmIWEudmlldylyZXR1cm5bYS5wYXRoWzBdXTt2YXIgYz14LlZpW2Eudmlld10sZD1hLnZpZXcuc3BsaXQoIu+/vSIpO3JldHVybiJfZmluZCI9PWEudmlldy50byg1KT8oYi5wdXNoKCJfZmluZCIpLGIucHVzaChkWzFdfHwiRGVmYXVsdCBxdWVyeSIpKToiX3NxbCI9PWEudmlldy50byg0KT8oYi5wdXNoKCJfc3FsIiksYi5wdXNoKGRbMV18fCJEZWZhdWx0IFNRTCIpKToiX2lkeCI9PWEudmlldy50byg0KT8oYi5wdXNoKCJfaW5kZXgiKSwiX2lkeC/vv70iIT1hLnZpZXcudG8oNik/Yi5wdXNoKGRbMF0uc3BsaXQoIi8iKVsxXSxkWzFdKTpiLnB1c2goIkRlZmF1bHQgaW5kZXgiKSk6Yz9iLnB1c2goIl92aWV3IixjLnBhdGhbMl0sYy5wYXRoWzRdKTp4LmlzVmlld1NwZWNpYWwoYS52aWV3KT9iLnB1c2goYS52aWV3KTpiLnB1c2goIl9hbGxfZG9jcyIpLGEuc3RhcnQ/KGIucHVzaChhLnN0YXJ0LChhLnJldmVyc2U/Ii0iOiIiKSsgK2EubGltaXQpLGIpOmJ9LGlzVmlld1NwZWNpYWw6ZnVuY3Rpb24oeCl7cmV0dXJuL15fKGRlc2lnbl9kb2NzfGxvY2FsX2RvY3N8Y2hhbmdlc3xjb25mbGljdHMpJC8udGVzdCh4KyIiKX0saGFzaDpmdW5jdGlvbigpe3JldHVybiJ2aWV3In0saWNvQ3NzOmZ1bmN0aW9uKHgpe3ZhciBhPXgucGF0aFswXSxiPXgucGF0aC5sZW5ndGg7aWYoMT09YilyZXR1cm4iX3VzZXJzIj09YT8iZmktdG9yc29zIGZzOTAiOiJfcmVwbGljYXRvciI9PWE/ImZpLXBhZ2UtbXVsdGlwbGUgZnM5MCI6IncxIHByMyI7dmFyIGM9eC5wYXRoWzFdLGQ9e192aWV3OiJmaS1leWUgbGgxMTAgZGliIHZhbSIsX2ZpbmQ6ImZpLW1hZ25pZnlpbmctZ2xhc3MgZnM5MCIsX3NxbDoiZmktbWFnbmlmeWluZy1nbGFzcyBmczkwIixfY2hhbmdlczoiZmktc2h1ZmZsZSBmczk1IixfZGVzaWduX2RvY3M6ImZpLXdpZGdldCBmczk1IixfbG9jYWxfZG9jczoiZmktYW5ub3RhdGUgZnM5MCIsX2NvbmZsaWN0czoiZmktc2hhcmUgZnM5MCJ9W2NdfHwiZmktdGh1bWJuYWlscyBmczkwIjtyZXR1cm4oIl92aWV3Ij09YyYmYj40fHwvXl8oY2h8bG98YWxsfGRlKS8udGVzdChjKSYmYj4yfHwvXl8oc3F8ZmkpLy50ZXN0KGMpJiZiPjMpJiYoZCs9IiAiKyh4LmFjdGl2ZT8kKCJib2R5IikuaXMoIi50aGVtZS1kYXJrIik/InllbGxvdy0yIjoib3JhbmdlLTEiOiJ5ZWxsb3ctMSIpKSxkfSx0aXRsZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1hLnBhdGgsYz1hLnZpZXcsZD0iX2ZpbmQiPT1jLnRvKDUpLGU9Il9zcWwiPT1jLnRvKDQpLGY9eC5pc1ZpZXdTcGVjaWFsKGMpLGc9Yz9mP2M6Yy5zcGxpdCgi77+9IikudG8oMikubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJuKChhP3g6eC5zcGxpdCgiLyIpWzFdKXx8eHx8IiIpLnRydW5jYXRlKGE/MzA6MTAsIm1pZGRsZSIsIi4uLiIpfSkuam9pbigi4oCKL+KAiiIpOiIiLGg9ZT8iOjoiOmQ/IuKKtiI6Zj8iLyI6IsO3IjtyZXR1cm4oZz9iWzBdLnRydW5jYXRlKDE1LCJtaWRkbGUiLCIuLi4iKTpiWzBdKSsoZz8i4oCJIitoKyLigIkiK2c6IiIpfSxtYXRjaDpmdW5jdGlvbih4LGEpe2lmKGEmJigxPT14Lmxlbmd0aHx8L15fKHZpZXd8YWxsX2RvY3N8bG9jYWxfZG9jc3xkZXNpZ25fZG9jc3xmaW5kfHNxbHxpbmRleHxjaGFuZ2VzfGNvbmZsaWN0cykkLy50ZXN0KHhbMV0pKSl7dmFyIGI9eC5sZW5ndGgsYz14WzFdfHwiX2FsbF9kb2NzIixkPXt0aXRsZTp4WzBdLHR5cGU6InZpZXciLGFwcERhdGE6e319LGU9L15fKGRlc2lnbnxsb2NhbClfZG9jcyQvLnRlc3QoYyk7aWYoL15fKGFsbHxkZXNpZ258bG9jYWwpX2RvY3MkLy50ZXN0KGMpKTQ9PWJ8fGU/ZC5hcHBEYXRhPXtzdGFydDp4WzJdLGxpbWl0OiIrIisodGhpcy4kdmlldy5TdGVwcy5maW5kKE1hdGguYWJzKCt4WzNdKSl8fCIxMDAiKSxyZXZlcnNlOiItIj09KHhbM10rIiIpWzBdfTp4Lmxlbmd0aD0xLGUmJihkLnRpdGxlKz0i4oCJL+KAiSIrYy5yZXBsYWNlKC9fZG9jcyQvLCIiKSxkLmFwcERhdGEudmlldz1jKTtlbHNlIGlmKCJfY2hhbmdlcyI9PWMpZC50aXRsZSs9IuKAiS/igIkiK2MsZC5hcHBEYXRhPXt2aWV3OmMsc3RhcnQ6eFsyXSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFszXSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzNdKyIiKVswXX07ZWxzZSBpZigiX2NvbmZsaWN0cyI9PWMpZC50aXRsZSs9IuKAiS/igIkiK2MsZC5hcHBEYXRhPXt2aWV3OmMsc3RhcnQ6eFsyXSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFszXSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzNdKyIiKVswXX07ZWxzZSBpZigiX2ZpbmQiPT1jKWI+NT94Lmxlbmd0aD01OmQuYXBwRGF0YT17c3RhcnQ6eFszXSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFs0XSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzRdKyIiKVswXX07ZWxzZSBpZigiX3NxbCI9PWMpYj41P3gubGVuZ3RoPTU6ZC5hcHBEYXRhPXtzdGFydDp4WzNdLGxpbWl0OiIrIisodGhpcy4kdmlldy5TdGVwcy5maW5kKE1hdGguYWJzKCt4WzRdKSl8fCIxMDAiKSxyZXZlcnNlOiItIj09KHhbNF0rIiIpWzBdfTtlbHNlIGlmKCJfaW5kZXgiPT1jKWlmKGI+Nil4Lmxlbmd0aD02O2Vsc2V7dmFyIGY9IkRlZmF1bHQgaW5kZXgiPT14WzJdJiYoMz09Ynx8NT09Yik7ZC5hcHBEYXRhPXtzdGFydDpmP3hbM106eFs0XSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygrKGY/eFs0XTp4WzVdKSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSgoZj94WzRdOnhbNV0pKyIiKVswXX19ZWxzZXtpZigiX3ZpZXciIT1jKXJldHVybjs2IT1iP3gubGVuZ3RoPTQ6ZC5hcHBEYXRhPXtzdGFydDp4WzRdLGxpbWl0OiIrIisodGhpcy4kdmlldy5TdGVwcy5maW5kKE1hdGguYWJzKCt4WzVdKSl8fCIxMDAiKSxyZXZlcnNlOiItIj09KHhbNV0rIiIpWzBdfX1yZXR1cm4gZC5wYXRoPXgsZH19LGpzZXZhbDpmdW5jdGlvbihzKXt2YXIgcjt0cnl7cj1ldmFsKCIoIitzKyIpIil9Y2F0Y2goeCl7fXJldHVybiByfSxkYXRhOntwYXRoOltdLHNlYXJjaDoiIix2aWV3OiIiLHN0YXJ0OiIiLGxpbWl0OiIrMTAwIixyZXZlcnNlOiExLHJlZHVjZTpbXSxpbmNsOltdLHN0YXRlOiIiLHNlbGVjdGlvbjpbXSxsaW5rOiIiLGR1cjowLHNpemU6MCxncmlkOiEwLGNvbHVtbnM6WyIudmFsdWUiXSxzaGFkb3c6WyIudmFsdWUiXSx0b3RhbF9yb3dzOjAsb2Zmc2V0OjAsc2VxOiIiLHhrZXk6IjAiLGVkaXRvcjohMSxtYW5nbzp7YWN0aXZlOiJEZWZhdWx0IHF1ZXJ5Iixtb2RlOlsiamF2YXNjcmlwdCJdLHF1ZXJ5Olt7bmFtZToiRGVmYXVsdCBxdWVyeSIsdGV4dDoiKHt9KSIsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6MH1dfSxzcWw6e2FjdGl2ZToiRGVmYXVsdCBTUUwiLG1vZGU6WyJzcWwiXSxxdWVyeTpbe25hbWU6IkRlZmF1bHQgU1FMIix0ZXh0OiIiLGpzb246e30sZXJyb3JzOltdLHN0YW1wOjB9XX19LERlZmF1bHRNYW5nb1FyeTp7bmFtZToiRGVmYXVsdCBxdWVyeSIsdHlwZToibWFuZ28iLHRleHQ6Iih7XG4gIC8vIE1hdGNoaW5nIGRvY3Mgc2VsZWN0b3JcbiAgc2VsZWN0b3I6IHtcbiAgICBfaWQ6IHskZ3Q6ICcnfVxuICB9LFxuICBcbiAgLy8gRG9jIGZpZWxkcyB0byByZXR1cm4sIFxuICAvLyBjb21tZW50IG91dCB0byBnZXQgd2hvbGUgZG9jc1xuICBmaWVsZHM6IFsnX2lkJywgJ19yZXYnLCAvKid4LnknKi9dLFxuICBcbiAgLy8gU29ydCBvcmRlciwgbGlrZTpcbiAgLy8gc29ydDogW3tfaWQ6J2FzYyd9LCB7bmFtZTogJ2Rlc2MnfV1cbiAgXG4gIC8vIFVzZSBDbWQtUiBvciBDdHJsLVIgdG8gcnVuIHF1ZXJ5XG59KSIsanNvbjp7c2VsZWN0b3I6e19pZDp7JGd0OiIifX0sZmllbGRzOlsiX2lkIiwiX3JldiJdfSxlcnJvcnM6W10sc3RhbXA6MH0sRGVmYXVsdFNxbFFyeTp7bmFtZToiRGVmYXVsdCBTUUwiLHR5cGU6InNxbCIsdGV4dDoiLS0gRGVtbyBTUUwgcXVlcnlcblNFTEVDVCBfaWQsIF9yZXYsIG5hbWUsIHR5cGUgXG5GUk9NIF8gLS0gPC0gdGhpcyBpcyBpZ25vcmVkXG5XSEVSRSBfaWQgPiAnJyIsanNvbjp7c2VsZWN0b3I6e19pZDp7JGd0OiIifX0sZmllbGRzOlsiX2lkIiwiX3JldiIsIm5hbWUiLCJ0eXBlIl19LGVycm9yczpbXSxzdGFtcDowfSxEZWZhdWx0TWFuZ29JZHg6e25hbWU6IkRlZmF1bHQgaW5kZXgiLGRkb2M6IiIsdHlwZToiaW5kZXgiLHRleHQ6Iih7XG4gIGluZGV4OiB7XG4gICAgZmllbGRzOiBbe19pZDogJ2FzYyd9XSxcbiAgICAvLyBwYXJ0aWFsX2ZpbHRlcl9zZWxlY3Rvcjp7XG4gICAgLy8gICAnZm9vLmJhcic6eyRndDowfVxuICAgIC8vIH1cbiAgfVxufSkiLGpzb246e2luZGV4OntmaWVsZHM6W3tfaWQ6ImFzYyJ9XX19LGVycm9yczpbXSxzdGFtcDowfSx1aTp7IiNidG4tcm9vdCI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtiLmF0dHIoImhyZWYiLCIjIit4LnBhdGhbMF0pLGIuYXR0cigidGl0bGUiLHRoaXMubGFuZy5USVBfVVAuYXNzaWduKHgucGF0aFswXSkpfX0sIiN4LWJ0bi1yb290Ijp7Y3NzOnt3MDpmdW5jdGlvbih4KXtyZXR1cm4heC52aWV3fSx3NDA6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnZpZXd9fSx3YXRjaDpbIiN2aWV3LW5hbWUiXX0sIi54LXZpZXctbmF2Ijp7ZGVsYXk6MTAsY3NzOntuYXJyb3dlcjpmdW5jdGlvbih4KXtyZXR1cm4heC52aWV3fX0sd2F0Y2g6WyIjdmlldy1uYW1lIl19LCIjdmlldy1uYW1lIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLnNlbGVjdDIoeCx7ZGF0YTp0aGlzLlZpZXdzLGZvcm1hdFNlbGVjdGlvbjphLmZvcm1hdFNlbDIsZHJvcGRvd25Dc3NDbGFzczoidGFsbCIsbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbD09YSlyZXR1cm4geC52aWV3O2lmKHgudmlldyE9YSl7dmFyIGM9Yi5yZXN0b3JlVmlld1N0YXRlKGEsITEpO2Iuc3Rhc2hWaWV3U3RhdGUoKSx4LnZpZXc9YSxiLmNsZWFuVmlld1N0YXRlKCksYi5yZXN0b3JlVmlld1N0YXRlKCExLCExKSxiLmJ1aWxkR3JpZENvbHVtbnMoKSx2b2lkIDA9PT1jLmVkaXRvciYmKCJfZmluZCI9PWEudG8oNSl8fCJfaWR4Ij09YS50byg0KXx8Il9zcWwiPT1hLnRvKDQpP3guZWRpdG9yPSEwOmF8fCh4LmVkaXRvcj0hMSkpfXJldHVybiB4LnZpZXd9fSwiI3ZpZXctbGltaXQiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz0oTWF0aC5hYnMoK2IubGltaXQpfHwxMDApLmNsYW1wKDEsMWU0KTthLnNlbGVjdDIoeCx7ZGF0YTp0aGlzLlN0ZXBzLmNvbmNhdChbY10pLnVuaXF1ZSgpLnNvcnRCeSgpLm1hcChmdW5jdGlvbih4KXtyZXR1cm57aWQ6IisiK3gsdGV4dDp4PDFlMz94KyIiOngvMWUzKyJLIn19KSxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxZTR9KX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT1hP3gubGltaXQ6KHgubGltaXQ9YSx4LmxpbWl0KX19LCIjdmlldy1zdGFydGtleSI6e2RlbGF5OjAsYmluZDoic3RhcnQiLGV2ZW50czoiaW5wdXQubXkiLHdhdGNoOlsiI2J0bi1jbGVhci1zdGFydGtleSIsIiNidG4tdmlldy1wbHVzIiwiI2J0bi12aWV3LW1pbnVzIiwiI3ZpZXctbmFtZSJdLGNzczp7Im15LXNlYXJjaCI6L14uezEsfSQvfX0sIiNidG4tdmlldy1taW51cyI6e2RlbGF5OjEsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz14LnN0YXJ0LGQ9K3gudG90YWxfcm93cyxlPSt4LmxpbWl0LGY9Yi5WaVt4LnZpZXddJiZiLlZpW3gudmlld10ucmVkdWNlJiZ4LnJlZHVjZSsiIixnPSJfZmluZCI9PXgudmlldy50byg1KXx8Il9zcWwiPT14LnZpZXcudG8oNCksaD0iX2xvY2FsX2RvY3MiPT14LnZpZXc7eC5zdGFydD8vXl9cZCskLy50ZXN0KHguc3RhcnQpJiYoYz0iXyIrKCgreC5zdGFydC5zdWJzdHIoMSl8fDApLWUpLmNsYW1wKDAsZnx8Z3x8aD8xZTEyOmQpKTooZD5lfHxmfHxnfHxoKSYmKGM9Il8iKyhkLWUpLmNsYW1wKDAsMWUxMikpLCJfMCI9PWMmJihjPSIiKSx4LnN0YXJ0PWN9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztyZXR1cm4geC5zdGFydCYmIS9eX1xkKyQvLnRlc3QoeC5zdGFydCl8fCF4LnN0YXJ0JiZiLlJvd3MubGVuZ3RoPD0reC5saW1pdHx8Il9jaGFuZ2VzIj09eC52aWV3fX0sd2F0Y2g6WyIjdmlldy1zdGFydGtleSIsIiN2aWV3LWxpbWl0IiwiI3N0YXRlLXByb3h5Il19LCIjYnRuLXZpZXctcGx1cyI6e2RlbGF5OjEsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz14LnN0YXJ0LGQ9K3gudG90YWxfcm93cyxlPSt4LmxpbWl0LGY9Yi5WaVt4LnZpZXddJiZiLlZpW3gudmlld10ucmVkdWNlJiZ4LnJlZHVjZSsiIixnPSJfZmluZCI9PXgudmlldy50byg1KXx8Il9zcWwiPT14LnZpZXcudG8oNCksaD0iX2xvY2FsX2RvY3MiPT14LnZpZXc7aWYoIl9jaGFuZ2VzIj09eC52aWV3JiZ4LnJldmVyc2UpYz1iLlJlc3VsdFswXS5yZXN1bHRzW2VdP2IuUmVzdWx0WzBdLnJlc3VsdHNbZS0xXS5zZXErIiI6IiI7ZWxzZSBpZih4LnN0YXJ0KWlmKC9eX1xkKyQvLnRlc3QoeC5zdGFydCkpe3ZhciBpPSgreC5zdGFydC5zdWJzdHIoMSl8fDApK2U7Yz0iXyIrKGk+PWQmJiFmJiYhZyYmIWg/MDppKX1lbHNlIGM9Yi5Sb3dzLmxlbmd0aDw9ZT8iIjpKU09OLnN0cmluZ2lmeShiLlJvd3NbZV0ua2V5KS5yZXBsYWNlKC9eInwiJC9nLCIiKTtlbHNlKGQ+ZXx8Znx8Z3x8aCkmJihjPSJfIitlKTsiXzAiPT1jJiYoYz0iIikseC5zdGFydD1jfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7cmV0dXJuIXguc3RhcnQmJmIuUm93cy5sZW5ndGg8PSt4LmxpbWl0fHwiX2NoYW5nZXMiPT14LnZpZXcmJiF4LnJldmVyc2V9fSx3YXRjaDpbIiN2aWV3LWxpbWl0IiwiI3N0YXRlLXByb3h5Il19LCIjdmlldy1ncmlkIjp7ZGVsYXk6MSxpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh7dGFnczpbeyc8c3BhbiBjbGFzcz0iZmktdGh1bWJuYWlscyBmczExNSBsaDEzMCIgdGl0bGU9IkdyaWQgdmlldyI+PC9zcGFuPic6ImdyaWQifV0sZW1wdHk6eyc8c3BhbiBjbGFzcz0iZmktbGlzdC10aHVtYm5haWxzIGZzMTE1IGxoMTMwIiB0aXRsZT0iTGluZSB2aWV3Ij48L3NwYW4+JzoiIn0sdGFnY3NzOiJ0YWcgYnRuIHczMiBkaWIgY3AiLHRhZ3NoaW06IiIsZ3JvdXBzaGltOiIifSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXM7cmV0dXJuIG51bGwhPWEmJihiPSEhKGErIiIpLHguZ3JpZD1iLHguZ3JpZD8oeC52aWV3JiYiX2xvY2FsX2RvY3MiIT14LnZpZXd8fCh4LmluY2w9WyJkb2NzIl0pLGMuUm93cy5sZW5ndGgmJihjLkZpZWxkcy5sZW5ndGh8fGMuYnVpbGRGaWVsZHNMaXN0KCksL14oX2Rlc2lnbl9kb2NzfF9jb25mbGljdHMpJC8udGVzdCh4LnZpZXcpfHx4LmNvbHVtbnNbMF0mJnguY29sdW1ucysiIiE9Ii52YWx1ZSImJnguY29sdW1ucysiIiE9Ii5kb2MifHwoeC5jb2x1bW5zPWMuZGVyaXZlR3JpZENvbHVtbnMoKSkpLGMuYnVpbGRHcmlkQ29sdW1ucygpLGMubXkucmVzdHlsZSgpKTpjLmNsb3NlQXV0b2NvbXBsZXRlcygpLGMuc3Rhc2hWaWV3U3RhdGUoKSxjLm15LnJlY2FsYygiI3ZpZXctZ3JpZC1jb2xzIiksYy5teS5jaGVjaygiI3ZpZXctZ3JpZC1jb2xzIikpLHguZ3JpZD9bImdyaWQiXTpbXX0sd2F0Y2g6WyIjdmlldy1uYW1lIl19LCIjYXBwLXNlYXJjaCI6e2RlbGF5OjE1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGw9PWE/eC5zZWFyY2g6YS5sZW5ndGg8Mj8odGhpcy5mU2VhcmNoPXRoaXMuY21TZWFyY2g9bnVsbCx4LnNlYXJjaD0iIixhKTooeC5zZWFyY2g9YSx0aGlzLmZTZWFyY2g9bmV3IFJlZ0V4cCgiKCIrUmVnRXhwLmVzY2FwZShhKSsiKSIsImkiKSx0aGlzLmNtU2VhcmNoPW5ldyBSZWdFeHAoIl4iK1JlZ0V4cC5lc2NhcGUoYSksImkiKSxhKX0sY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99LHdhdGNoOlsiI3N0YXRlLXByb3h5Il19LCIjdmlldy1wYW5lbHMiOnt3YXRjaDpbIiN2aWV3LW5hbWUiLCIjYnRuLXZpZXdjb2RlIl0sY3NzOnsidmlldy1lZGl0b3IiOmZ1bmN0aW9uKHgpe3JldHVybiEvXihfY2hhbmdlc3xfZGVzaWduX2RvY3N8X2xvY2FsX2RvY3N8KSQvLnRlc3QoeC52aWV3KSYmISF4LmVkaXRvcn0sInZpZXctbWFuZ28iOmZ1bmN0aW9uKHgpe3JldHVybi9eXyhmaW5kfHNxbCkvLnRlc3QoeC52aWV3KXx8Il9jb25mbGljdHMiPT14LnZpZXd9LCJ2aWV3LWluZGV4IjpmdW5jdGlvbih4KXtyZXR1cm4iX2lkeCI9PXgudmlldy50byg0KX0sInZpZXctY2hhbmdlcyI6ZnVuY3Rpb24oeCl7cmV0dXJuIl9jaGFuZ2VzIj09eC52aWV3LnRvKDgpfSwibW9kZS1ncmlkIjpmdW5jdGlvbih4KXtyZXR1cm4geC5ncmlkfSwibW9kZS1qc29uIjpmdW5jdGlvbih4KXtyZXR1cm4heC5ncmlkfSwiZGItdXNlcnMiOmZ1bmN0aW9uKHgpe3JldHVybiJfdXNlcnMiPT14LnBhdGhbMF19fX0sIiNidG4tcmVsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPVtdO3guc2VsZWN0aW9uLmxlbmd0aCYmL14ofF9kZXNpZ25fZG9jc3xfbG9jYWxfZG9jcykkLy50ZXN0KHgudmlldykmJihiPXguc2VsZWN0aW9uLnNvcnQoKS51bmlxdWUoKSksdGhpcy5HZXRWaWV3KCEwLGIpLGIubGVuZ3RofHwvXl8oZGVzaWdufGxvY2FsKV9kb2NzJC8udGVzdCh4LnZpZXcpfHwiX2lkeC/vv70iPT14LnZpZXcudG8oNil8fHRoaXMuR2V0Vmlld3MoITApfX0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7T2JqZWN0LmlzT2JqZWN0KGEpJiYhYS5uYW1lJiYvXl8odXNlcnN8cmVwbGljYXRvcikkLy50ZXN0KHgucGF0aFswXSkmJiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KX0sZGJ1cGRhdGU6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzOyFPYmplY3QuaXNPYmplY3QoYSl8fCJ3cml0ZSIhPWEuY21kJiYiZGVsZXRlIiE9YS5jbWR8fGEuZGI9PXgucGF0aFswXSYmKGEuZG9jc3x8W10pLmZpbmQoeC52aWV3LnNwbGl0KCLvv70iKVswXSkmJmIuR2V0Vmlld3MoITApfX19LCIjYnRuLXZpZXctY29tcGFjdCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXMsZD14LnBhdGgsZT17fSxmPU9iamVjdC5zaXplKGMuVmkpP3tkZG9jczpPYmplY3Qua2V5cyhjLlZpKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHguc3BsaXQoIu+/vSIpWzBdLnNwbGl0KCIvIilbMV19KS51bmlxdWUoKS5zb3J0KCl9Ont9O2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLXZpZXctY29tcGFjdCIsITApOihjLk1vZGFscy5oZWFkJiZjLk1vZGFscy5oZWFkLm1vZGFsKCEwKSxjLk1vZGFscy5oZWFkPWIsIl9kZXNpZ25fZG9jcyI9PXgudmlldyYmKGU9e2RzZWxlY3Rpb246KGYuZGRvY3N8fFtdKS5pbnRlcnNlY3QoeC5zZWxlY3Rpb24ubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnNwbGl0KCIvIilbMV19KSkuc2xpY2UoMCksb3BzOlsidmlld3MiLCJkZG9jcyJdfSksYy5teS5tb2RhbCgiI2J0bi12aWV3LWNvbXBhY3QiLHttYW5pZmVzdDokLmV4dGVuZCghMCx7fSxjLlBobygiQ29tcGFjdCIpLHtDQjp7ZGRvY3M6ZnVuY3Rpb24oeCl7Yy5HZXRWaWV3KCEwKX19fSksd2lkdGg6MzcwLGRhdGE6JC5leHRlbmQoe3NlbGVjdGlvbjpbeC5wYXRoWzBdXSxvcHM6WyJkb2NzIiwidmlld3MiXX0sZiwiX3ZpZXciPT1kWzFdP3tvcHM6WyJkZG9jcyJdLGRzZWxlY3Rpb246W2RbMl1dfTp7fSxlKSxhbGlnbjoidG9wOjEwMiU7Iixub3NlOiJ0b3AiLGNzczoieGdyYXkiLHNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsZXNjOiEwLGJvdW5kOjIwLGZvY3VzOiIjYnRuLXN0YXJ0In0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19fSwiI2J0bi12aWV3LWFjbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXM7Yi5kYXRhKCJtb2RhbCIpP2MubXkubW9kYWwoIiNidG4tdmlldy1hY2wiLCEwKTpjLlJlcShbeC5wYXRoWzBdLCJfc2VjdXJpdHkiXSkudGhlbihmdW5jdGlvbihhKXtjLk1vZGFscy5oZWFkJiZjLk1vZGFscy5oZWFkLm1vZGFsKCEwKSxjLk1vZGFscy5oZWFkPWIsYy5teS5tb2RhbCgiI2J0bi12aWV3LWFjbCIse21hbmlmZXN0OmMuUGhvKCJTZWNPYmoiKSx3aWR0aDozODAsZGF0YTokLmV4dGVuZCghMCx7fSx7ZGJzOlt4LnBhdGhbMF1dLGFkbWluczphLmFkbWluc3x8e25hbWVzOltdLHJvbGVzOltdfSxtZW1iZXJzOmEubWVtYmVyc3x8e25hbWVzOltdLHJvbGVzOltdfX0pLGFsaWduOiJ0b3A6MTAyJTsiLG5vc2U6InRvcCIsY3NzOiJ4Z3JheSIsc2NyZWVuOiJyZ2JhKDI1NSwyNTUsMjU1LDApIixlc2M6ITAsYm91bmQ6MjAsZm9jdXM6IiNidG4tc3RhcnQifSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5Nb2RhbHMuaGVhZD1udWxsfSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjdy5saWIubm90ZShjLmxhbmcuRVJSX0dFVEFDTCwiZXJyb3IiKX0pfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4hIXgudmlld319LHdhdGNoOlsiI3ZpZXctbmFtZSJdfSwiI2J0bi12aWV3LW5ld2RvYyI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczsiX3VzZXJzIj09YS5kYXRhLnBhdGhbMF0mJih4Lm9uKCJjbGljay5teSIsZnVuY3Rpb24oYil7cmV0dXJuIHguZGF0YSgibW9kYWwiKT8oYS5teS5tb2RhbCgiI2J0bi12aWV3LW5ld2RvYyIsITApLCExKTooYS5Nb2RhbHMuaGVhZCYmYS5Nb2RhbHMuaGVhZC5tb2RhbCghMCksYS5Nb2RhbHMuaGVhZD14LGEubXkubW9kYWwoIiNidG4tdmlldy1uZXdkb2MiLHttYW5pZmVzdDphLlBobygiVXNlckRvYyIpLHdpZHRoOjM4MCxkYXRhOnt9LGFsaWduOiJ0b3A6MTAyJTtsZWZ0Oi0xNDdweDsiLG5vc2U6InRvcCIsY3NzOiJ4Z3JheSIsc2NyZWVuOiExLGVzYzohMCxmb2N1czohMCxib3VuZDoyMH0pLmFsd2F5cyhmdW5jdGlvbigpe2EuTW9kYWxzLmhlYWQ9bnVsbH0pLCExKX0pLHguaHRtbCgnPHNwYW4gY2xhc3M9ImxoMTQwIj4nK2EubGFuZy5CVE5fTkVXVVNFUl9ETEcrIjwvc3Bhbj4iKSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2IuYXR0cigiaHJlZiIsIiMiK2VuY29kZVVSSUNvbXBvbmVudCh4LnBhdGhbMF0pKyIvX25ldyIpfSxjc3M6e30sd2F0Y2g6WyIjdmlldy1hY3Rpb25zIl19LCIjYnRuLXZpZXctbmV3aW5kZXgiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzLGQ9IiIsZT0iamF2YXNjcmlwdCI7L15fKGRlc2lnbnxpZHgpXC8vLnRlc3QoeC52aWV3KT9kPXgudmlldy5zcGxpdCgi77+9IilbMF06L15kZXNpZ25cLy8udGVzdCh4LnNlbGVjdGlvblswXXx8IiIpJiYoZD14LnNlbGVjdGlvblswXSksZD1kPyJfZGVzaWduLyIrZC5yZXBsYWNlKC9eXyhkZXNpZ258aWR4KVwvLywiIik6IiIsYy5EZG9jc1tkXSYmKGU9Yy5EZG9jc1tkXS5sYW5ndWFnZXx8ZSksYy5jcmVhdGVOZXdJZHhEbGcoYix7X2ZpeGxhbmc6ITEsX3ZhbGlkOiEwLF9zYXZlOiEwLGxhbmd1YWdlOmUsZGRvYzpkfSkudGhlbihmdW5jdGlvbih4KXt2YXIgYTtmdW5jdGlvbiBiKCl7Yy5jaGFuZ2VWaWV3KFsicXVlcnkiPT14Lmxhbmd1YWdlPyJfaWR4LyI6Il9kZXNpZ24vIix4LmRkb2MucmVwbGFjZSgvXl9kZXNpZ25cLy8sIiIpLCLvv70iLHgubmFtZV0uam9pbigiIikpfShhPWMuUGVuZGluZy5fdmlld2xpc3QpP2EudGhlbihiLmRlYm91bmNlKDMwKSk6YigpfS5kZWJvdW5jZSgzMCkpfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4hIXgudmlldyYmeC5zZWxlY3Rpb24ubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1hY3Rpb25zIl19LCIjdmlldy1hY3Rpb25zIjp7ZGVsYXk6NTAsY3NzOntoYXNTZWxlY3Rpb246ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaGFzU2VsZWN0aW9uPSEoIiIhPXgucmVkdWNlfHwiX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpfHwheC5zZWxlY3Rpb24uaW50ZXJzZWN0KHRoaXMuUm93cy50bygreC5saW1pdCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmlkfSkpLmxlbmd0aCksdGhpcy5oYXNTZWxlY3Rpb259LGlzRGRvY3M6ZnVuY3Rpb24oeCl7cmV0dXJuIl9kZXNpZ25fZG9jcyI9PXgudmlld319LHdhdGNoOlsiI3ZpZXctbmFtZSIsIiNidG4tc2VsZWN0Il19LCIjYnRuLXZpZXctZGVsZG9jcyI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGwhPWEpe2IuQnVzeSghMCk7dmFyIGM9Yi5teS5maW5kKCIjYnRuLXZpZXctY29weWRvY3MiKTtjLmRhdGEoIm1vZGFsIikmJmMubW9kYWwoITApLGIuRGVsRG9jcygpLmFsd2F5cyhmdW5jdGlvbigpe2IuQnVzeSghMSl9LmRlYm91bmNlKDEwKSl9dmFyIGQ9Yi5sYW5nW3guc2VsZWN0aW9uLmxlbmd0aD4xPyJCVE5fREVMRE9DUyI6IkJUTl9ERUwxRE9DIl07cmV0dXJuIl9kZXNpZ25fZG9jcyI9PXgudmlldz9kOmQuc3RyaXBUYWdzKCl9LHdhdGNoOlsiI3ZpZXctYWN0aW9ucyJdfSwiI2J0bi12aWV3LWNvcHlkb2NzIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz1iLm15LmZpbmQoIiNidG4tdmlldy1jb3B5ZG9jcyIpO2lmKGMuZGF0YSgibW9kYWwiKSlyZXR1cm4gYy5tb2RhbCghMCksdm9pZCAwO2MubW9kYWwoe3Jvb3Q6Yi5teS5yb290KCksbWFuaWZlc3Q6JC5leHRlbmQoITAse30sYi5QaG8oIlN5bmNUYXNrIikse3BhcmFtczp7d2lkdGg6NTAwfX0pLGRhdGE6e3Rhc2s6IkNvcHkiLHNyYzp7dXJsOngucGF0aFswXSxmaWx0ZXI6WyJpZHMiXSxpZHM6eC5zZWxlY3Rpb24uc2xpY2UoMCl9fSxmb2N1czoiI3J0YXJnZXQiLG5vc2U6InRvcCIsYWxpZ246InRvcDoxMDMlIixkcmFnOiIuY20iLGNzczoieGdyYXkiLGVzYzohMCxib3VuZDowfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiFjdy5tZSgpfSwic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4iX2xvY2FsX2RvY3MiPT14LnZpZXd9fSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXt0aGlzLm15LmNoZWNrKCIjYnRuLXZpZXctY29weWRvY3MiKX19LHdhdGNoOlsiI3ZpZXctbmFtZSJdfSwiI2J0bi12aWV3Y29kZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7cmV0dXJuIG51bGwhPWEmJngudmlldyYmKGMuY2xvc2VBdXRvY29tcGxldGVzKCksYy5FZFN3aXRjaCgpLHguZWRpdG9yPSEwLGMuc3Rhc2hWaWV3U3RhdGUoKSksYy5sYW5nW3guZ3JpZCYmKCJfc3FsIj09eC52aWV3LnRvKDQpfHwiX2ZpbmQiPT14LnZpZXcudG8oNSl8fHRoaXMuVmlbeC52aWV3XSYmdGhpcy5WaVt4LnZpZXddLnJlZHVjZSk/IkJUTl9WSUVXQ09ERV9HTSI6IkJUTl9WSUVXQ09ERSJdfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LmVkaXRvcnx8L14ofF9kZXNpZ25fZG9jc3xfbG9jYWxfZG9jc3xfY2hhbmdlc3xfY29uZmxpY3RzKSQvLnRlc3QoeC52aWV3KX19LGV2ZW50czoiY2xpY2subXkiLHdhdGNoOlsiI3ZpZXctbmFtZSIsIiN2aWV3LWdyaWQiXX0sIiNidG4tdmlldy1kaXIiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnJldmVyc2U9IXgucmV2ZXJzZSkseC5yZXZlcnNlPyLilrwiOiLilrIifSxldmVudHM6ImNsaWNrLm15In0sIiN2aWV3LWNvbHMiOntkZWxheTozMCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYoKCJfZmluZCI9PXgudmlldy50byg1KXx8Il9zcWwiPT14LnZpZXcudG8oNCl8fCJfY29uZmxpY3RzIj09eC52aWV3KSYmeC5ncmlkKXJldHVybiIjIjt2YXIgYixjPSt4LnRvdGFsX3Jvd3MsZD14LnNlYXJjaDtyZXR1cm4gdGhpcy5sYW5nLlRYVF9NQVBWSUVXKE1hdGgubWluKHRoaXMuUm93cy5sZW5ndGgsK3gubGltaXQpLC0xPT1jPyI/PyI6Yzw5OTk5P2M6In4iK2MubWV0cmljKDEsNCksZC5sZW5ndGg+MSYmKGI9eC5ncmlkP3RoaXMuZ1Jvd3M6dGhpcy5mUm93cyk/Yi5sZW5ndGg6bnVsbCx4LmdyaWQmJnRoaXMuVmlbeC52aWV3XSYmdGhpcy5WaVt4LnZpZXddLnJlZHVjZSl9LHdhdGNoOlsiI3ZpZXctcmVzdWx0cy1qc29uIiwiI3N0YXRlLXByb3h5IiwiI3ZpZXctZ3JpZCJdfSwiI3ZpZXctbGlua3MiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPSc8YSBjbGFzcz0idGRuIiBocmVmPSIjezF9Ij57Mn08L2E+JyxkPXgucGF0aCxlPXgudmlldy5zcGxpdCgi77+9IiksZj1iLnAydShkWzBdKSxnPWIudHJ1bmMoZFswXSwyNSkuZXNjYXBlSFRNTCgpO3JldHVybiB4LnZpZXc/L14oX2Rlc2lnbl9kb2NzfF9sb2NhbF9kb2NzKSQvLnRlc3QoeC52aWV3KT9bYy5hc3NpZ24oZixnKSwiLyIsJzxzcGFuIGNsYXNzPSJ4Z3JheSI+Jyt4LnZpZXcrIjwvc3Bhbj4gfCAiXS5qb2luKCLigIkiKToiX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpP1tjLmFzc2lnbihmLGcpLCIvIiwnPHNwYW4gY2xhc3M9InhncmF5Ij5fZmluZDwvc3Bhbj4nXS5qb2luKCLigIkiKToiX2NvbmZsaWN0cyI9PXgudmlldz9bYy5hc3NpZ24oZixnKSwiLyIsJzxzcGFuIGNsYXNzPSJ4Z3JheSI+X2NvbmZsaWN0czwvc3Bhbj4nXS5qb2luKCLigIkiKToiX2lkeC/vv70iPT14LnZpZXcudG8oNik/W2MuYXNzaWduKGYsZyksIi8iLCJfYWxsX2RvY3MgfCAiXS5qb2luKCLigIkiKToiX2lkeCI9PXgudmlldy50byg0KT9bYy5hc3NpZ24oZixnKSwiLyIsYy5hc3NpZ24oZisiL19kZXNpZ24iK2VbMF0uZnJvbSg0KSwoIl9kZXNpZ24iK2VbMF0uZnJvbSg0KSkuZXNjYXBlSFRNTCgpKV0uam9pbigi4oCJIikrIiB8ICI6W2MuYXNzaWduKGYsZyksIi8iLGMuYXNzaWduKGYrIi8iK2VbMF0sZVswXS5lc2NhcGVIVE1MKCkpXS5qb2luKCLigIkiKSsiIHwgIjpbZywiLyIsJzxzcGFuIGNsYXNzPSJ4Z3JheSI+X2FsbF9kb2NzPC9zcGFuPiddLmpvaW4oIuKAiSIpKyIgfCAifSx3YXRjaDpbIiN2aWV3LXJlc3VsdHMtanNvbiIsIiNzdGF0ZS1wcm94eSJdfSwiI3ZpZXctZGRzdGF0cyI6e2JpbmQ6ZnVuY3Rpb24oeCl7aWYoIl9kZXNpZ25fZG9jcyIhPXgudmlldylyZXR1cm4iIjt2YXIgYT0wLGI9MDtyZXR1cm4gdGhpcy5Sb3dzLmZvckVhY2goZnVuY3Rpb24oeCl7eC52YWx1ZSYmeC52YWx1ZS5zaXplcyYmKGErPXgudmFsdWUuc2l6ZXMuYWN0aXZlLGIrPXgudmFsdWUuc2l6ZXMuZmlsZSl9KSxhJiZiP3RoaXMubGFuZy5UWFRfRERTVEFUUy5hc3NpZ24odGhpcy5CeXRlcyhiKSx0aGlzLkJ5dGVzKGEpKToiIn0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiJfZGVzaWduX2RvY3MiIT14LnZpZXd9fSx3YXRjaDpbIiN2aWV3LXJlc3VsdHMtanNvbiIsIiNzdGF0ZS1wcm94eSJdfSwiI3ZpZXctd2l0aGRvY3MiOntkZWxheToxMCxpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX1dJVEhET0NTKX0sYmluZDoiaW5jbCIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiEheC52aWV3JiYiX2xvY2FsX2RvY3MiIT14LnZpZXd9fSx3YXRjaDpbIiN2aWV3LW5hbWUiLCIjdmlldy1ncmlkIl19LCIjdmlldy1yZWR1Y2UiOntkZWxheToxMCxpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX1JFRFVDRSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVyblt4LnJlZHVjZV07aWYoISF4LnJlZHVjZSE9ISEoYSsiIikpe3ZhciBiPXguY29sdW1uczt4LmNvbHVtbnM9eC5zaGFkb3cseC5zaGFkb3c9Yn1yZXR1cm4geC5yZWR1Y2U9YSsiIixbeC5yZWR1Y2VdfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuVmlbeC52aWV3XXx8IXRoaXMuVmlbeC52aWV3XS5yZWR1Y2V9fSx3YXRjaDpbIiN2aWV3LW5hbWUiLCIjc2VsLXJlZHVjZSJdfSwiI2J0bi1hbmNob3IiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtiLmF0dHIoImhyZWYiKSE9eC5saW5rJiZiLmF0dHIoImhyZWYiLHgubGluayl9LHdhdGNoOiIjc3RhdGUtcHJveHkiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpfHwiX2NvbmZsaWN0cyI9PXgudmlld319fSwiI3ZpZXctcG5hdi1qc29uIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiEheC5ncmlkfX0sd2F0Y2g6WyIjdmlldy1ncmlkIl19LCIjYnRuLXNlbGVjdCI6e2RlbGF5OjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZigiIiE9eC5yZWR1Y2V8fCJfZmluZCI9PXgudmlldy50byg1KXx8Il9zcWwiPT14LnZpZXcudG8oNCl8fCJfY29uZmxpY3RzIj09eC52aWV3KXJldHVybiIiO3ZhciBiPXRoaXMsYz0oKHguZ3JpZD9iLmdSb3dzOmIuZlJvd3MpfHxiLlJvd3MpLnRvKCt4LmxpbWl0KS5tYXAoeD0+eC5pZCkudW5pcXVlKCksZD14LnNlbGVjdGlvbi5pbnRlcnNlY3QoYyksZT1kLmxlbmd0aCxmPXguc2VsZWN0aW9uLmxlbmd0aCxnPWIubGFuZztyZXR1cm4gbnVsbCE9YSYmKHguc2VsZWN0aW9uPWU/eC5zZWxlY3Rpb24uc3VidHJhY3QoYykudW5pcXVlKCk6Zj9bXTp4LnNlbGVjdGlvbi5jb25jYXQoYykudW5pcXVlKCksZT0oZD14LnNlbGVjdGlvbi5pbnRlcnNlY3QoYykpLmxlbmd0aCksZSYmZT09Zj9nLlRYVF9VTlNFTEVDVC5hc3NpZ24oZT09Yy5sZW5ndGg/Zy5UWFRfU0VMRUNUX0FMTDplKTohZSYmZj9nLlRYVF9VTlNFTEVDVC5hc3NpZ24oZik6ZSYmZSE9Zj9nLlRYVF9VTlNFTEVDVF9PRi5hc3NpZ24oZSxmKTpnLlRYVF9TRUxFQ1QuYXNzaWduKHguc2VhcmNoLmxlbmd0aD4xP2cuVFhUX1NFTEVDVF9GSUxURVI6Zy5UWFRfU0VMRUNUX0FMTCl9LGV2ZW50czoiY2xpY2subXkiLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiEodGhpcy5mUm93c3x8dGhpcy5Sb3dzKS5sZW5ndGh8fCIiIT14LnJlZHVjZXx8Il9maW5kIj09eC52aWV3LnRvKDUpfHwiX3NxbCI9PXgudmlldy50byg0KXx8Il9jb25mbGljdHMiPT14LnZpZXd9fSx3YXRjaDpbIiN2aWV3LWFjdGlvbnMiLCIjc3RhdGUtcHJveHkiLCIjYXBwLXNlYXJjaCIsIiNidG4tcmVkdWNlIl19LCIjYnRuLWdyaWQtYWRkY29sIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEmJnguZ3JpZCl7dmFyIGI9dGhpczt4LmNvbHVtbnMrIiI9PSIudmFsdWUiP3guY29sdW1ucz1iLmRlcml2ZUdyaWRDb2x1bW5zKCk6eC5jb2x1bW5zLnB1c2goIiIpLGIuYnVpbGRHcmlkQ29sdW1ucygpLGIudXBkYXRlR3JpZEZyb21Db2x1bW5zLmRlbGF5KDEpLGIubXkucmVzdHlsZSgpfX0sZXZlbnRzOiJjbGljay5teSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4LmdyaWR8fHRoaXMuQ29sdW1ucy5sZW5ndGg+N319LHdhdGNoOlsiI3ZpZXctZ3JpZCIsIiNncmlkLXByb3h5Il19LCIjc2VsLXJlZHVjZSI6e2RlbGF5OjIwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmRhdGE7YS5zZWxlY3QyKHgse211bHRpcGxlOiExLGRhdGE6YS5sYW5nLlNFTF9SRURVQ0UsbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHgucmVkdWNlKyIiO2lmKCEheC5yZWR1Y2UhPSEhKGErIiIpJiZ4LmdyaWQpe3ZhciBiPXguY29sdW1uczt4LmNvbHVtbnM9eC5zaGFkb3cseC5zaGFkb3c9Yn1yZXR1cm4geC5yZWR1Y2U9YSsiIix4LnJlZHVjZX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISh4LmdyaWQmJnRoaXMuVmlbeC52aWV3XSYmdGhpcy5WaVt4LnZpZXddLnJlZHVjZSYmeC5yZWR1Y2UrIiIpfX0sd2F0Y2g6WyIjdmlldy1ncmlkIiwiI3ZpZXctbmFtZSIsIiN2aWV3LXJlZHVjZSIsIiNidG4tcmVkdWNlIl19LCIjYnRuLXJlZHVjZSI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj14LmNvbHVtbnM7eC5jb2x1bW5zPXguc2hhZG93LHguc2hhZG93PWIseC5yZWR1Y2U9IjEifXJldHVybiB0aGlzLmxhbmcuQlROX0dSRURVQ0VfR019LGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hKHguZ3JpZCYmdGhpcy5WaVt4LnZpZXddJiZ0aGlzLlZpW3gudmlld10ucmVkdWNlJiYhKHgucmVkdWNlKyIiKSl9fSxldmVudHM6ImNsaWNrLm15Iix3YXRjaDpbIiN2aWV3LWdyaWQiLCIjdmlldy1uYW1lIiwiI3NlbC1yZWR1Y2UiLCIjdmlldy1yZWR1Y2UiXX0sIiN2aWV3LXBuYXYtZ3JpZCI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5ncmlkfX0sd2F0Y2g6WyIjdmlldy1ncmlkIl19LCIjdmlldy1ncmlkLWNvbHMiOntjaGVjazohMCxkZWxheToxNSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3guc29ydGFibGUoe2F4aXM6IngiLGRpc3RhbmNlOjUsaGFuZGxlOiIudmlldy1ncmlkLWNvbHMtc29ydCIsdXBkYXRlOmZ1bmN0aW9uKHgpe2EudXBkYXRlR3JpZEZyb21Db2x1bW5zLmRlbGF5KDIxKX19KSxhLmJ1aWxkR3JpZENvbHVtbnMoKX0sbWVyZ2U6ITEsYmluZDoidGhpcy5Db2x1bW5zIixsaXN0Oic8ZGl2IGNsYXNzPSJ2aWV3LWdyaWQtY29sdW1uIGRpYiB2YXQiPjxkaXYgY2xhc3M9InZpZXctZ3JpZC1jb2xzLXNvcnQiIHRpdGxlPSJEcmFnIGhlcmUgdG8gc29ydCBjb2x1bW5zIj48L2Rpdj48ZGl2IGNsYXNzPSJ3MTAwcCBkaWIgdmF0Ij48aW5wdXQgY2xhc3M9ImdyaWQtY29sdW1uLXB0ciBib2xkZXIiIHR5cGU9InRleHQiIHNwZWxsY2hlY2s9ImZhbHNlIj48c3BhbiBpZD0iYnRuLWZvbGQiIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiBiZm9sZCBkaWIgdmF0Ij48c3BhbiBjbGFzcz0iYWRvd24iPjwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kaXY+JyxpZDpbImlkIl0sbWFuaWZlc3Q6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5HcmlkQ29sdW1uKCl9LHdhdGNoOlsiI2J0bi1ncmlkLWFkZGNvbCIsIiN2aWV3LWdyaWQiXX0sIiNncmlkLXByb3h5Ijp7ZGVsYXk6MSxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbD09YX19LCIjdmlldy1ncmlkLWNvbHMtc3R5bGUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPXRoaXMuQ29sdW1ucyxjPWIubGVuZ3RoLGQ9Ii5teS1mb3JtLSIrdGhpcy5teS5yb290KCkuZGF0YSgibXkiKS5jaWQsZT10aGlzLlBobygiZGF0YSIpLmZvbnRDb2RlLGY9W10sZz0wLGg9MCxpPW51bGwsaj0iIixrPSIiLGw9IiI7ZzxjO2crKylqPWJbZ10uY2FzdCwoYltnXSYmImludCI9PWp8fCJjdXJyIj09anx8ImhleCI9PWopJiYoaz1kKyIgLm1vZGUtZ3JpZCB0ZC5ncmlkLWNvbHVtbjpudGgtY2hpbGQoIisoaCsyKSsiKSIsbD0iZm9udC1mYW1pbHk6IitlKyI7IGZvbnQtc2l6ZTowLjk1ZW07IHBhZGRpbmctdG9wOjAuMTJlbSFpbXBvcnRhbnQ7IixmLnB1c2goaysieyIrKCJoZXgiIT1qPyJ0ZXh0LWFsaWduOnJpZ2h0OyI6IiIpK2wrIn0iKSxmLnB1c2goaysiPmRpdnttaW4taGVpZ2h0OjEuOGVtO2xpbmUtaGVpZ2h0OjEuMzVlbTt9IikpLGJbZ10uY29scyE9PWkmJihoKz0xKSxpPWJbZ10uY29scztyZXR1cm4gZi5qb2luKCJcbiIpfSx3YXRjaDpbIiN2aWV3LWdyaWQtY29scyJdfSwiI3JlcS1kdXIiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4KXt2YXIgYT14LmR1cixiPXguc2l6ZTtyZXR1cm4gYSYmYj90aGlzLkJ5dGVzKGIpKyIgwrcgIithKyJtcyI6IiJ9LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5kdXJ8fCF4LnNpemV9fSx3YXRjaDpbIiNzdGF0ZS1wcm94eSJdfSwiI3N0YXRlLXByb3h5Ijp7ZGVsYXk6MjAscmVjYWxjRGVwdGg6MSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSl7dmFyIGI9dGhpczt4LnBhdGguc2xpY2UoMCk7eC5wYXRoPWIuczJwKCk7dmFyIGM9Y3cubGliLnNkYm0oW3gudmlldyx4LnN0YXJ0LHgubGltaXQseC5yZXZlcnNlLHgucmVkdWNlKyIiLHgudmlldyYmIl9sb2NhbF9kb2NzIiE9eC52aWV3PyIiOnguaW5jbCsiIl0pO3guc3RhdGUhPWMmJihiLnN0YXNoVmlld1N0YXRlKCksJC5teS5yYWRpbygicGF0aGNoYW5nZSIse2lkOngudGFiaWQscGF0aDp4LnBhdGgsdGl0bGU6Yi50aXRsZSgpfSkseC5zdGF0ZT1jLHgudmlldyYmIWIuaXNWaWV3U3BlY2lhbCh4LnZpZXcpfHwoeC5lZGl0b3I9ITEpLHguZWRpdG9yP2IuRWRTd2l0Y2goKTpiLkVkaXRvci5sZW5ndGg9MCxiLkdldFZpZXcoITApLGIubXkucmVjYWxjKCIjdmlldy1lZC1jb250YWluZXIiKSl9fSx3YXRjaDpbIiN2aWV3LWdyaWQiLCIjdmlldy1zdGFydGtleSIsIiN2aWV3LW5hbWUiLCIjdmlldy1saW1pdCIsIiNidG4tdmlldy1kaXIiLCIjdmlldy1yZWR1Y2UiLCIjdmlldy13aXRoZG9jcyIsIiNidG4tcmVkdWNlIiwiI2dyaWQtcHJveHkiXSxsaXN0ZW46e2RidXBkYXRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztudWxsIT1hJiYoT2JqZWN0LmlzT2JqZWN0KGEpP2EuZGI6YSsiIik9PXgucGF0aFswXSYmKChhLmRvY3N8fFtdKS5maW5kKC9eX2Rlc2lnbi8pPyhhLmRvY3MuZm9yRWFjaChmdW5jdGlvbih4KXtiLkRkb2NzW3hdJiZkZWxldGUgYi5EZG9jc1t4XX0pLGIuR2V0Vmlld3MoITApLnRoZW4oZnVuY3Rpb24oKXthLnNraXBWaWV3VXBkYXRlfHxiLkdldFZpZXcoITApfS5kZWJvdW5jZSgyMCkpKTphLnNraXBWaWV3VXBkYXRlfHxiLkdldFZpZXcoITApKX0sZGJkZWxldGVkOmZ1bmN0aW9uKHgsYSl7aWYoYT09eC5wYXRoWzBdKXt2YXIgYj10aGlzOyhmdW5jdGlvbigpe2IubXkucm9vdCgpLnRyaWdnZXIoInRhYmNsb3NlIix7dGFiaWQ6eC50YWJpZCxlbmZvcmNlOiEwfSl9KS5kZWJvdW5jZShOdW1iZXIucmFuZG9tKDEwLDUwKSkoKX19fX0sIiN2aWV3LXJlcS1lcnJvciI6e2RlbGF5OjUwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPSJfZGVzaWduL21hbmdvLWlkeCI7eC5vbigiY2xpY2subXkiLCIjYnRuLWFkZC1tYW5nby1pZHgiLGZ1bmN0aW9uKCl7dmFyIGQ9YS5FZGl0b3IubGVuZ3RoP2EuRWRpdG9yWzBdOiJfc3FsIj09Yi52aWV3LnRvKDQpP2Iuc3FsLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1iLnNxbC5hY3RpdmUpOiJfZmluZCI9PWIudmlldy50byg1KT9iLm1hbmdvLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1iLm1hbmdvLmFjdGl2ZSk6W107YS5jcmVhdGVOZXdJZHhEbGcoeCx7X2ZpeGxhbmc6ITAsX3ZhbGlkOiEwLF9zYXZlOiEwLGxhbmd1YWdlOiJxdWVyeSIsZGRvYzpjLGpzb246e2luZGV4OntmaWVsZHM6ZC5qc29uLnNvcnR8fFtdfX19KS50aGVuKGZ1bmN0aW9uKHgpe3ZhciBiO2Z1bmN0aW9uIGMoKXthLlJUKCJteSIpLnRyaWdnZXIoIiNidG4tcmVsb2FkIiwiY2xpY2subXkiKX0oYj1hLlBlbmRpbmcuX3ZpZXdsaXN0KT9iLnRoZW4oYy5kZWJvdW5jZSgzMCkpOmMoKX0uZGVib3VuY2UoMzApKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSl7dmFyIGI9dGhpcyxjPWIuRXJyb3I/Yi5FcnJvci5lc2NhcGVIVE1MKCk6Yi5pc0VtcHR5P2IubGFuZy5UWFRfRU1QVFk6Yi5mU2VhcmNoJiYhKHguZ3JpZD9iLmdSb3dzOmIuZlJvd3N8fFtdKS5sZW5ndGg/Yi5sYW5nLlRYVF9OT1RGT1VORDoiIjtyZXR1cm4gYi5FcnJvciYmYi5FcnJvci5lbmRzV2l0aCgibm9fdXNhYmxlX2luZGV4IikmJihjKz0nPGJyPjxicj48YnV0dG9uIGlkPSJidG4tYWRkLW1hbmdvLWlkeCIgY2xhc3M9ImZzOTUiPnsxfTwvYnV0dG9uPicuYXNzaWduKGIubGFuZy5CVE5fTkVXTUlEWCkpLGN9fSxjc3M6e3JlZDE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuRXJyb3J9LGhpZGU6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiEoYi5FcnJvcnx8Yi5pc0VtcHR5fHxiLmZTZWFyY2gmJiEoeC5ncmlkP2IuZ1Jvd3M6Yi5mUm93c3x8W10pLmxlbmd0aCl9fSx3YXRjaDpbIiNzdGF0ZS1wcm94eSIsIiN2aWV3LXJlc3VsdHMtanNvbiIsIiN2aWV3LXJlc3VsdHMtZ3JpZCJdfSwiI3ZpZXctZWQtY29udGFpbmVyIjp7ZGVsYXk6MTAwLGluaXQ6ZnVuY3Rpb24oeCl7fSxiaW5kOiJ0aGlzLkVkaXRvciIsbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7dmFyIGE9eC50eXBlO3JldHVybiB0aGlzLlBobygidmlldyI9PWE/IlZpZXdFZCI6ImluZGV4Ij09YT8iSW5kZXhFZCI6InNxbCI9PWE/IlNxbEVkIjoiTWFuZ29FZCIpfSxsaXN0Oic8ZGl2PjxkaXYgY2xhc3M9IncxMDBwIHRhYyBwdDUwIGxoMjAwIj48ZGl2IGNsYXNzPSJjdy1idXN5IHcxMDAgaDMiPjwvZGl2PjwvZGl2PjwvZGl2PicsaWQ6WyJuYW1lIiwidHlwZSIsImRkb2MiLCJyZXYiXSx3YXRjaDpbIiNidG4tdmlld2NvZGUiXX0sIiN2aWV3LXJlc3VsdHMiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sY3NzOnt9fSwiI3ZpZXctcmVzdWx0cy1qc29uIjp7ZGVsYXk6MTAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5URG9jcyxjPWEuVE1hcCxkPWEuVE1hbmdvLGU9YS5kYXRhO3gubGlzdCh7ZGF0YTphLlJvd3MudG8oK2UubGltaXQpLGRlbGF5OjAsY2h1bms6NTAsc29ydEJ5Om51bGwsaWQ6eD0+eC5faWR4LGhhc2g6ZnVuY3Rpb24oeCl7dmFyIGI9ZS52aWV3O3JldHVybiBjdy5saWIuc2RibShbYixlLnNlcXx8IiIsYS5Sb3dzLmxlbmd0aCxiJiYiX2xvY2FsX2RvY3MiIT1iPyIiOmUuaW5jbCxudWxsPT14LmRvYyx4Ll9jaGVja2VkLGUuc2VhcmNoLmxlbmd0aD4xP2Uuc2VhcmNoOiIgIiwiX2Rlc2lnbl9kb2NzIj09Ynx8Il9jaGFuZ2VzIj09Yj9beC52YWx1ZSx4LnZpZXdfaW5kZXhdOiIgIl0pfSx0ZW1wbGF0ZTpmdW5jdGlvbih4LGEpe3ZhciBmPWUudmlldztyZXR1cm4gZiYmIl9sb2NhbF9kb2NzIiE9Znx8ZS5pbmNsLmxlbmd0aD8iX2ZpbmQiPT1mLnRvKDUpfHwiX3NxbCI9PWYudG8oNCl8fCJfY29uZmxpY3RzIj09Zj9kKHgsYSk6Yyh4LGEpOmIoeCxhKX19KSx4Lm9uKCJjbGljay5teSIsIi5jb2wtdmFscyIsZnVuY3Rpb24oeCl7dmFyIGIsYyxkLGU9JCh4LmN1cnJlbnRUYXJnZXQpLGY9ZS5wYXJlbnQoKS5kYXRhKCJrZXkiKSxnPU9iamVjdC5pc1N0cmluZyhmKT9mOkpTT04uc3RyaW5naWZ5KGYpO2lmKCFlLmlzKCIuY29sLWpzb24iKSl7aWYoIShiPShhLlJvd3N8fFtdKS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Ll9pZHg9PWd9KSkpcmV0dXJuITE7Yi5faW5kZXgsZS5hZGRDbGFzcygiY29sLWpzb24iKSxlLmZpbmQoIj4uY29sLWVkLWNsb3NlIikubGVuZ3RofHwoZD1iLl9ranNvbitiLl92anNvbixlLmFwcGVuZChjPSQoJzxkaXYgY2xhc3M9ImNvbC1lZCBwcmUgZnM4NSBsaDEyMCBwbDQgdGFsIj48L2Rpdj4nKSksZS5hcHBlbmQoJzxkaXYgY2xhc3M9ImNvbC1lZC1jbG9zZSBmczEzMCBsaDEzMCIgdGl0bGU9InsxfSI+4pyVPC9kaXY+Jy5hc3NpZ24oYS5SVCgibGFuZyIpLlRJUF9DTE9TRUpTT04pKSxDb2RlTWlycm9yKGNbMF0se21vZGU6YS5DTXByZWZpeCsiamF2YXNjcmlwdCIsbGluZU51bWJlcnM6ITEsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seTohMH0pLnNldFZhbHVlKCIoIitkKyIpIiksYS5mU2VhcmNoJiZjWzBdLmNoaWxkcmVuWzBdLkNvZGVNaXJyb3IuYWRkT3ZlcmxheSh7dG9rZW46ZnVuY3Rpb24oeCxiKXtpZih4Lm1hdGNoKGEuY21TZWFyY2gpKXJldHVybiB4LmVhdChhLmNtU2VhcmNoKSwiZm91bmQiO2Zvcig7bnVsbCE9eC5uZXh0KCkmJiF4Lm1hdGNoKGEuY21TZWFyY2gsITEpOyk7cmV0dXJuIG51bGx9fSkpfX0pLHgub24oImNsaWNrLm15IiwiLmNvbC1lZC1jbG9zZSIsZnVuY3Rpb24oeCl7cmV0dXJuICQoeC5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoKS5yZW1vdmVDbGFzcygiY29sLWpzb24iKSwhMX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsPT1hKXt2YXIgYyxkPXRoaXMsZT0iIj09eC5yZWR1Y2UmJiJfZmluZCIhPXgudmlldy50byg1KSYmIl9zcWwiIT14LnZpZXcudG8oNCk7aWYoIXguZ3JpZCl7aWYoL14oX2Rlc2lnbl9kb2NzfF9sb2NhbF9kb2NzfCkkLy50ZXN0KHgudmlldyl8fGUpe3ZhciBmPWN3LmxpYi5hMm8oeC5zZWxlY3Rpb24pO2QuUm93cy5mb3JFYWNoKHg9PnguX2NoZWNrZWQ9ZltlP3guaWQ6eC5rZXldPyJjaGVja2VkIjoiIil9eC5zZWFyY2gubGVuZ3RoPjEmJihjPWQuZlNlYXJjaCk/KGQuZlJvd3M9ZC5Sb3dzLnRvKCt4LmxpbWl0KS5maWx0ZXIoeD0+Yy50ZXN0KHguX2tqc29uKXx8Yy50ZXN0KHguX3Zqc29uKSksYi5saXN0KCJkYXRhIixkLmZSb3dzKSk6KGQuZlJvd3M9bnVsbCxiLmxpc3QoImRhdGEiLGQuUm93cy50bygreC5saW1pdCkpKX19fSx3YXRjaDpbIiNzdGF0ZS1wcm94eSIsIiN2aWV3LWFjdGlvbnMiLCIjYnRuLXNlbGVjdCIsIiNhcHAtc2VhcmNoIl19LCIjdmlldy1yZXN1bHRzLWdyaWQiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLlRHcmlkTWFwLGM9YS5kYXRhO3RoaXMudXBkYXRlR3JpZEhUTUw9dGhpcy51cGRhdGVHcmlkSFRNTC5kZWJvdW5jZSgzMCkseC5saXN0KHtkYXRhOihhLmdSb3dzfHxbXSkudG8oK2MubGltaXQpLGRlbGF5OjAsY2h1bms6NTAsc29ydEJ5Om51bGwsaWQ6eD0+eC5faWR4LGhhc2g6ZnVuY3Rpb24oeCl7dmFyIGI9Il9kZXNpZ25fZG9jcyI9PWMudmlldztyZXR1cm4gY3cubGliLnNkYm0oW2MudmlldyxjLnNlcXx8IiIsYS5Sb3dzLmxlbmd0aCx4Ll9jaGVja2VkLGEuQ29sdW1ucyxudWxsPT14LmRvYyxjLnNlYXJjaC5sZW5ndGg+MT9jLnNlYXJjaDoiICIsYnx8Il9jaGFuZ2VzIj09Yy52aWV3P1t4LnZhbHVlLHgudmlld19pbmRleF06IiAiXSl9LHRlbXBsYXRlOmJ9KSx4Lm9uKCJjbGljay5teSIsInRkLmdyaWQtY29sdW1uIixmdW5jdGlvbih4KXt2YXIgYixjLGQsZT0kKHguY3VycmVudFRhcmdldCksZj1lLnBhcmVudCgpLmRhdGEoImtleSIpLGc9T2JqZWN0LmlzU3RyaW5nKGYpP2Y6SlNPTi5zdHJpbmdpZnkoZik7aWYoIWUuaXMoIi5jb2wtanNvbiIpKXtpZighKGI9KGEuZ1Jvd3N8fFtdKS5maW5kKHg9PnguX2lkeD09ZykpKXJldHVybiExO3ZhciBoPSQoJzx0ZCBjbGFzcz0iZ3JpZC1jb2x1bW4gY29sLWpzb24gcHJlbCIgY29sc3Bhbj0iezF9Ij48L3RkPicuYXNzaWduKGEuQ29sdW1ucy5sZW5ndGgpKTtoPWguaW5zZXJ0QWZ0ZXIoZS5wYXJlbnQoKS5jaGlsZHJlbigpWzBdKSxiLl9pbmRleCxkPWIuX2tqc29uK2IuX3Zqc29uLGguYXBwZW5kKCc8ZGl2IGNsYXNzPSJjb2wtZWQgcHJlIGZzODUgbGgxMjAgdGFsIj48L2Rpdj4nKSxoLmFwcGVuZCgnPGRpdiBjbGFzcz0iY29sLWVkLWNsb3NlIGZzMTMwIGxoMTMwIiB0aXRsZT0iezF9Ij7inJU8L2Rpdj4nLmFzc2lnbihhLlJUKCJsYW5nIikuVElQX0NMT1NFSlNPTikpLGM9aC5maW5kKCIuY29sLWVkIiksQ29kZU1pcnJvcihjWzBdLHttb2RlOmEuQ01wcmVmaXgrImphdmFzY3JpcHQiLGxpbmVOdW1iZXJzOiExLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6ITB9KS5zZXRWYWx1ZSgiKCIrZCsiKSIpLGEuZlNlYXJjaCYmY1swXS5jaGlsZHJlblswXS5Db2RlTWlycm9yLmFkZE92ZXJsYXkoe3Rva2VuOmZ1bmN0aW9uKHgsYil7aWYoeC5tYXRjaChhLmNtU2VhcmNoKSlyZXR1cm4geC5lYXQoYS5jbVNlYXJjaCksImZvdW5kIjtmb3IoO251bGwhPXgubmV4dCgpJiYheC5tYXRjaChhLmNtU2VhcmNoLCExKTspO3JldHVybiBudWxsfX0pfX0pLHgub24oImNsaWNrLm15IiwiLmNvbC1lZC1jbG9zZSIsZnVuY3Rpb24oeCl7cmV0dXJuICQoeC5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoKS5yZW1vdmUoKSwhMX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsPT1hJiZ4LmdyaWQmJnRoaXMudXBkYXRlR3JpZEhUTUwoKX0sd2F0Y2g6WyIjdmlldy1ncmlkIiwiI2dyaWQtcHJveHkiLCIjdmlldy1hY3Rpb25zIiwiI2J0bi1zZWxlY3QiLCIjYXBwLXNlYXJjaCJdfX0sSFRNTDonPGRpdiBpZD0iYS1oZWFkIiBjbGFzcz0iYXBwLWhlYWQgbncgcHQxOCBwbDIwIHByMjAgbGgxNjAiPjxkaXYgY2xhc3M9ImZyIHcxMHAgZnM5NSB6aTIiPjxkaXYgY2xhc3M9ImZpLW1hZ25pZnlpbmctZ2xhc3MgeGdyYXkgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSH0iIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxOXB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB1aS1zZWFyY2gtY2xlYXIiIHN0eWxlPSJtYXJnaW4tbGVmdDotMTlweCFpbXBvcnRhbnQ7Im9uY2xpY2s9IiQodGhpcykuc2libGluZ3MoXCdpbnB1dDplcSgwKVwnKS52YWwoXCdcJykuYmx1cigpIj48L3NwYW4+PC9kaXY+PGRpdiBpZD0ieC1idG4tcm9vdCIgY2xhc3M9ImRpYiB2YXQgb2gge191cHdpZHRofSB0dzEwMCI+PGEgaWQ9ImJ0bi1yb290IiBjbGFzcz0idzM4IGJ1dHRvbiBtcjIgdGRuIGRpYiB2YXQgcGwwIHByMCBmdzYwMCIgdGl0bGU9IkRCIGRvYyBsaXN0Ij4uLi88L2E+PC9kaXY+PHNlY3Rpb24gY2xhc3M9Ingtdmlldy1uYXYgbncgZGliIHZhdCIgc3R5bGU9IiI+PGJ1dHRvbiBpZD0iYnRuLXJlbG9hZCIgY2xhc3M9InczOCAgbXIyIiB0aXRsZT0ie1RJUF9SRUxPQUR9Ij48c3BhbiBjbGFzcz0iZmktbG9vcCI+PC9zcGFuPjwvYnV0dG9uPjxkaXYgY2xhc3M9ImRpYiB2YXQgbXIyIGJvbGRlciIgc3R5bGU9IndpZHRoOmNhbGMoKDEwMCUgLSAyMDRweCkgLyAyICsgMTJweCk7Ij48aW5wdXQgaWQ9InZpZXctbmFtZSIgdHlwZT0idGV4dCIgY2xhc3M9IiB3MTAwcCBmczExMCB2YXQiPjwvZGl2PjxkaXYgY2xhc3M9ImZzOTUgZGliIHZhdCIgc3R5bGU9IndpZHRoOmNhbGMoKDEwMCUgLSAyMDRweCkgLyAyICsgNHB4KTsiPjxkaXYgY2xhc3M9ImZpLWtleSB4Z3JheSBvNTAiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA2cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCBpZD0idmlldy1zdGFydGtleSIgdHlwZT0idGV4dCIgY2xhc3M9InZhdCB1aS1zZWFyY2ggdzEwMHAiIHBsYWNlaG9sZGVyPSJ7UExDX1NUQVJUS0VZfSIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTdweCFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjIxcHghaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB3MTUgcGwyIHVpLXNlYXJjaC1jbGVhciIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi0xNXB4IWltcG9ydGFudDsib25jbGljaz0iJCh0aGlzKS5zaWJsaW5ncyhcJ2lucHV0OmVxKDApXCcpLnZhbChcJ1wnKS50cmlnZ2VyKFwnaW5wdXRcJykiPjwvc3Bhbj48L2Rpdj48c3BhbiBjbGFzcz0iYnV0dG9ucyBtbDIiPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1pbnVzIiBjbGFzcz0idzJlbSBtcjIgcGwwIHByMCIgdGl0bGU9IntUSVBfU0hJRlRfTUlOVVN9Ij48c3BhbiBjbGFzcz0iZmktYXJyb3ctbGVmdCBvODAiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1wbHVzIiBjbGFzcz0idzJlbSBtcjIgcGwwIHByMCIgdGl0bGU9IntUSVBfU0hJRlRfUExVU30iPjxzcGFuIGNsYXNzPSJmaS1hcnJvdy1yaWdodCBvODAiPjwvc3Bhbj48L2J1dHRvbj48L3NwYW4+PGRpdiBjbGFzcz0iZGliIHZhdCB3NzAiPjxpbnB1dCBpZD0idmlldy1saW1pdCIgdHlwZT0idGV4dCIgY2xhc3M9IiB3MTAwcCBmczExMCB2YXQiPjwvZGl2Pjwvc2VjdGlvbj48ZGl2IGNsYXNzPSJkaWIgdmF0IHByNSBidXR0b25zIiBpZD0idmlldy1ncmlkIj48L2Rpdj48ZGl2IGlkPSJ2aWV3LWFjdGlvbnMiIGNsYXNzPSJudyBwbDMgZGliIHZhdCIgc3R5bGU9IndpZHRoOmNhbGMoNTMlIC0gMjcwcHgpOyI+PGEgaHJlZj0iIiBpZD0iYnRuLXZpZXctbmV3ZG9jIiBjbGFzcz0iYnV0dG9uIGZzMTAwIHRkbiBkaWIgZ3JlZW4gdmF0IG1yMiBub3Q0c2VsIj48c3BhbiBjbGFzcz0ibGgxNDAiPntCVE5fTkVXRE9DfTwvc3Bhbj48L2E+PGJ1dHRvbiBpZD0iYnRuLXZpZXctZGVsZG9jcyIgY2xhc3M9Im9rNHNlbCBtcjIgcmVkIj57QlROX0RFTERPQ1N9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctY29weWRvY3MiIGNsYXNzPSJvazRzZWwgbXIyIiB4ZGlzYWJsZWQ+e0JUTl9DT1BZRE9DU308L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1uZXdpbmRleCIgY2xhc3M9Im5vdDRkZG9jc3NlbCBwcjggbXIyIj57QlROX05FV0lEWH08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1jb21wYWN0IiBjbGFzcz0ibm90NHNlbCBvazRkZG9jcyBwcjggbXIyIj57QlROX0NPTVBBQ1R9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctYWNsIiBjbGFzcz0ibm90NHNlbCI+e0JUTl9BQ0x9PC9idXR0b24+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9InZpZXctcGFuZWxzIiBjbGFzcz0idzEwMHAgcHQxNiBudyBwbDIwIHByMjAiPjxzZWN0aW9uIGlkPSJ2aWV3LWVkLWNvbnRhaW5lciIgY2xhc3M9InZhdCB3biBwYW5lbGhlaWdodC0zMiBicjIgbXIyMCBieHRvcC0zMSIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjwvc2VjdGlvbj48ZGl2IGlkPSJ2aWV3LXBhbmVsIiBjbGFzcz0iZGliIHZhdCB3biBwYW5lbGhlaWdodC0zMiBicjIiPjxkaXYgY2xhc3M9ImJnLXBncmF5IGJicyBsaDE2MCBudyBvaCBlbGwgdmlldy1yZXN1bHRzLWhlYWQgeHBhbmVsIGJhcyI+PGRpdiBjbGFzcz0idmlldy1wbmF2LWNvcm5lciBoY29sdzEgZGliIHZhdCBwdDEgbncgb2ggZWxsIHByMiI+PHNwYW4gaWQ9ImJ0bi12aWV3LWRpciIgY2xhc3M9ImRpYiBwbDggcHI2IG1yMiB2YXQgY3AgbzUwIGZzODAgcHQyIHBzZXVkb2xpbmsgdGRuIGgzMCI+PC9zcGFuPjxkaXYgaWQ9InZpZXctY29scyIgY2xhc3M9ImRpYiB2YXQgbncgeGdyYXkgbXI1Ij48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWJ0bnMtYm94IGRpYiB2YXQiPjxkaXYgaWQ9ImJ0bi1zZWxlY3QiIGNsYXNzPSJidXR0b24geGJ1dHRvbiBwdDIgaDI1IG10MSBmczkwIGxoMTMwIHRkbiBkaWIgdmF0IG1sMyBoaWRlIj48L2Rpdj48c3BhbiBjbGFzcz0ic2VsLXBhcmVudCBtbDMgdzExMCBkaWIgdmF0IGZzOTUgbGgxNDAgbXItMSBoaWRlIj48aW5wdXQgaWQ9InNlbC1yZWR1Y2UiIHR5cGU9InRleHQiIGNsYXNzPSJ3MTAwcCI+PC9zcGFuPjxkaXYgaWQ9ImJ0bi1yZWR1Y2UiIGNsYXNzPSJidXR0b24gb3JhbmdlIHhidXR0b24gcHQyIGgyNSBtdDEgZnM5MCBsaDEzMCB0ZG4gZGliIHZhdCBtbDMgaGlkZSIgdGl0bGU9IntUSVBfR1JFRFVDRX0iPjxzcGFuIGNsYXNzPSJmaS1zYWZldHktY29uZSByb3QxODAgZGliIHZhdCI+PC9zcGFuPjwvZGl2PjxkaXYgaWQ9ImJ0bi12aWV3Y29kZSIgY2xhc3M9ImJ1dHRvbiBibHVlIHhidXR0b24gcHQyIGgyNSB3MjcgdGFjIG10MSBmczkwIGxoMTQwIHRkbiBkaWIgdmF0IG1sMyBoaWRlIiB0aXRsZT0ie1RJUF9WSUVXQ09ERX0iPntCVE5fVklFV0NPREV9PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0idmlldy1wbmF2LWpzb24iIGNsYXNzPSJoY29sdzIgZGliIHB0MSBncmF5IGZzOTAiPjxzcGFuIGNsYXNzPSJ2aWV3LWVkaXRvci1oaWRlIGdyYXkgZnIgcHI4IHczNXAgZWxsIHRhciI+PHNwYW4gaWQ9InZpZXctbGlua3MiPjwvc3Bhbj48YSBocmVmPSIiIGlkPSJidG4tYW5jaG9yIiBjbGFzcz0idGRuIG83MCBkaWIgdmF0IG10MSBtYi0xIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IntUSVBfQU5DSE9SfSI+PHNwYW4gY2xhc3M9ImZpLWFuY2hvciI+PC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gaWQ9InZpZXctcmVkdWNlIiBjbGFzcz0ibXQxIHBsNyBoaWRlIj48L3NwYW4+PHNwYW4gaWQ9InZpZXctd2l0aGRvY3MiIGNsYXNzPSJtdDEgaGlkZSI+PC9zcGFuPjxzcGFuIGlkPSJ2aWV3LWRkc3RhdHMiIGNsYXNzPSJtdDEgcGw3IHhncmF5IGhpZGUiPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ2aWV3LXBuYXYtZ3JpZCIgY2xhc3M9Imhjb2x3MiBkaWIgdmF0IGZzOTUgZ3JheSBoaWRlIj48ZGl2IGlkPSJ2aWV3LWdyaWQtY29scyI+PC9kaXY+PGRpdiBpZD0iYnRuLWdyaWQtYWRkY29sIiBjbGFzcz0iYnV0dG9uIHAwIGxoMTYwIGZzMTEwIHRkbiBkaWIgdmF0IGJscyBib2xkZXIgdGFjIiB0aXRsZT0ie1RJUF9BRERDT0x9Ij4rPC9kaXY+PHN0eWxlIGlkPSJ2aWV3LWdyaWQtY29scy1zdHlsZSI+PC9zdHlsZT48L2Rpdj48L2Rpdj48ZGl2IGlkPSJ2aWV3LXJlcS1lcnJvciIgY2xhc3M9IncxMDBwIGhpZGUgcmVkMSB0YWMgemkyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7dG9wOjgwcHg7bGVmdDowOyI+PC9kaXY+PHNlY3Rpb24gaWQ9InZpZXctcmVzdWx0cyIgY2xhc3M9InBhbmVsaGVpZ2h0LTYzIGdyYXktMSBsaDE3MCBieHRvcCIgc3R5bGU9Im91dGxpbmU6bm9uZTsiPjxzZWN0aW9uIGlkPSJ2aWV3LXJlc3VsdHMtanNvbiIgY2xhc3M9IncxMDBwIiBzdHlsZT0ib3V0bGluZTpub25lOyI+PC9zZWN0aW9uPjx0YWJsZSBjbGFzcz0iZ3JpZC10YWJsZSIgY2VsbHNwYWNpbmc9IjAiPjx0Ym9keSBpZD0idmlldy1yZXN1bHRzLWdyaWQiIGNsYXNzPSJteS1jb250YWluZXIiPjwvdGJvZHk+PC90YWJsZT48L3NlY3Rpb24+PC9kaXY+PC9zZWN0aW9uPjxkaXYgaWQ9InN0YXRlLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+PGRpdiBpZD0iZ3JpZC1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjxkaXYgaWQ9InJlcS1kdXIiIGNsYXNzPSJoaWRlIj48L2Rpdj4nLHN0eWxlOnsiICN2aWV3LWFjdGlvbnMiOnsiIC5ub3Q0c2VsIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IiwiIC5vazRzZWwiOiJkaXNwbGF5Om5vbmU7IiwiLmhhc1NlbGVjdGlvbiI6eyIgLm5vdDRzZWwiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIiAub2s0c2VsIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IiwiLmlzRGRvY3MiOnsiIC5vazRkZG9jcyI6ImRpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudDsiLCIgLm5vdDRkZG9jc3NlbCI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7In19fSwiIC54LXZpZXctbmF2Ijp7IiI6IndpZHRoOmNhbGMoMzUlICsgMjI4cHgpOyB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzOyIsIi5uYXJyb3dlciI6IndpZHRoOmNhbGMoMzUlICsgMjA4cHgpOyJ9LCIgI3JlcS1kdXIiOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOi0wLjc1ZW07IHJpZ2h0OjMlO2ZvbnQtc2l6ZTo4MCU7IGxpbmUtaGVpZ2h0OjEuMjVlbTsgY29sb3I6IzhhOTA5YTsgYm9yZGVyOjFweCBzb2xpZCAjY2JkM2RiO2JhY2tncm91bmQ6d2hpdGU7IGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzowcHggNXB4IDFweCA1cHg7IiwiICN2aWV3LXBhbmVscyI6eyIiOnsiICN2aWV3LXBhbmVsIjoid2lkdGg6MTAwJTsiLCIgI3ZpZXctZWQtY29udGFpbmVyIjoiZGlzcGxheTpub25lO3dpZHRoOjM1JTsiLCIgLmhjb2x3MSI6IndpZHRoOjM4JTsgdHJhbnNpdGlvbjp3aWR0aCAwLjFzOyIsIiAuaGNvbHcyIjoid2lkdGg6NjIlOyB0cmFuc2l0aW9uOndpZHRoIDAuMXM7In0sIi52aWV3LWVkaXRvciI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDpjYWxjKDYwJSAtIDIwcHgpOyIsIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDo0MCU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyAiLCIgLmhjb2x3MSI6IndpZHRoOjM4JTsiLCIgLmhjb2x3MiI6IndpZHRoOjYyJTsiLCIgLnZpZXctZWRpdG9yLWhpZGUiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyJ9LCIudmlldy1lZGl0b3Iudmlldy1tYW5nbyI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDpjYWxjKDY1JSAtIDIwcHgpOyIsIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDozNSU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyJ9LCIudmlldy1tYW5nbyI6eyIgI3ZpZXctcmVzdWx0cyI6eyIgLmNvbC1pZHMiOiJ3aWR0aDo3JTtwYWRkaW5nOjNweCAycHggM3B4IDdweDsiLCIgLmNvbC12YWxzIjoid2lkdGg6OTMlOyBwYWRkaW5nLWxlZnQ6NXB4OyJ9LCIgI2J0bi12aWV3LWRpciI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiICN2aWV3LWNvbHMiOiJwYWRkaW5nLWxlZnQ6NnB4OyIsIi5tb2RlLWdyaWQiOnsiIC5oY29sdzEiOiJ3aWR0aDo2NXB4IWltcG9ydGFudDsiLCIgLmhjb2x3MiI6IndpZHRoOmNhbGMoMTAwJSAtIDY1cHgpIWltcG9ydGFudDsiLCIgdGFibGUuZ3JpZC10YWJsZSI6eyIgdGQuZ2NvbHcwIjoid2lkdGg6NjVweCFpbXBvcnRhbnQ7In19fSwiLnZpZXctZWRpdG9yLnZpZXctaW5kZXgiOnsiICN2aWV3LXBhbmVsIjoid2lkdGg6Y2FsYyg2NSUgLSAyMHB4KTsiLCIgI3ZpZXctZWQtY29udGFpbmVyIjoid2lkdGg6MzUlOyBkaXNwbGF5OmlubGluZS1ibG9jazsifSwiLnZpZXctaW5kZXgiOnsiIC52aWV3LXRvZmlsdGVyIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsifSwiLnZpZXctY2hhbmdlcyI6eyIgLnZpZXctdG9maWx0ZXIiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyJ9LCIubW9kZS1qc29uIjp7IiAuZ3JpZC10YWJsZSI6ImRpc3BsYXk6bm9uZTsifSwiLm1vZGUtZ3JpZCI6eyIgI3ZpZXctcmVzdWx0cy1qc29uIjoiZGlzcGxheTpub25lOyIsIiAuaGNvbHcxIjoid2lkdGg6MzMwcHg7IGJhY2tncm91bmQtY29sb3I6I2UzZTllYzsgbWluLWhlaWdodDogMjlweDsiLCIgLmhjb2x3MiI6IndpZHRoOmNhbGMoMTAwJSAtIDMzMHB4KTsiLCIgLnZpZXctYnRucy1ib3giOiJmbG9hdDpyaWdodCIsIi52aWV3LWVkaXRvciI6eyIgLmhjb2x3MSI6IndpZHRoOjI4MHB4OyIsIiAuaGNvbHcyIjoid2lkdGg6Y2FsYygxMDAlIC0gMjgwcHgpOyIsIiB0YWJsZS5ncmlkLXRhYmxlIjp7IiB0ZC5nY29sdzAiOiJ3aWR0aDoyODBweDsifX0sIiAjdmlldy1ncmlkLWNvbHMiOnsiIjoid2lkdGg6Y2FsYygxMDAlIC0gMzBweCk7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IiwiIGlucHV0IjoiYm9yZGVyLWxlZnQtY29sb3I6I2UzZTllYzsifSwiICNidG4tZ3JpZC1hZGRjb2wiOnsiIjoiYm9yZGVyOm5vbmU7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjZTNlOWVjIWltcG9ydGFudDsgd2lkdGg6MzBweDsgaGVpZ2h0OjI5cHg7IGJvcmRlci1yYWRpdXM6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmOCFpbXBvcnRhbnQ7IiwiOmhvdmVyIjoiYmFja2dyb3VuZC1jb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7In0sIiAudmlldy1yZXN1bHRzLWhlYWQiOiJiYWNrZ3JvdW5kLWNvbG9yOiNmMGY4ZmYhaW1wb3J0YW50IiwiIHRhYmxlLmdyaWQtdGFibGUiOnsiIjoiYm9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlOyB0YWJsZS1sYXlvdXQ6Zml4ZWQ7IHdpZHRoOjEwMCU7IiwiIHRyIjoid2lkdGg6MTAwJSIsIiB0cjpsYXN0LWNoaWxkIHRkIjoiYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlY2VmZjM7IiwiIHRkIjp7IiI6InBhZGRpbmc6MDsgdmVydGljYWwtYWxpZ246dG9wOyB0cmFuc2l0aW9uOndpZHRoIDAuMXM7IG1pbi1oZWlnaHQ6IDJlbTsiLCIuZ2NvbHYiOiJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMCwxNCwzNSwwLjA3KTsiLCIuZ2NvbHY+ZGl2IjoicGFkZGluZzogNXB4IDVweCA2cHggN3B4OyBtaW4taGVpZ2h0OjJlbTsiLCIuZ2NvbHcwIjoid2lkdGg6MzMwcHg7ICIsIiA+ZGl2Ijoid2lkdGg6MTAwJTsgd29yZC1icmVhazpicmVhay13b3JkOyIsIiA+ZGl2LncxMDBwLTMwIjoid2lkdGg6Y2FsYygxMDAlIC0gMzBweCk7IHdvcmQtYnJlYWs6YnJlYWstd29yZDsgcGFkZGluZzogNnB4IDdweCA2cHggMDsiLCIuY29sLWpzb24iOnsiIH50ZCI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiIjoicGFkZGluZzowIWltcG9ydGFudDsifX19fSwiIC52aWV3LWhvdmVyYnRuLnZpZXctZWRpdHVzZXIiOiJkaXNwbGF5Om5vbmUiLCIuZGItdXNlcnMgLnZpZXctaG92ZXJidG4udmlldy1lZGl0dXNlciI6ImRpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudDsifSwiICAjdmlldy1wYW5lbHMiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLm15LmZpbmQoIiN2aWV3LXBhbmVscyIpLGM9Yi5sZW5ndGg/Yi53aWR0aCgpOjEwNTAsZD0oLjM2KmN8MCkuY2xhbXAoNDMwLDU4MCksZT0oLjI1KmN8MCkuY2xhbXAoMzcwLDQ3MCksZj17Ii52aWV3LWVkaXRvciI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihjLWQtMjApLCIgI3ZpZXctZWQtY29udGFpbmVyIjoid2lkdGg6ezF9cHg7Ii5hc3NpZ24oZCl9LCIudmlldy1lZGl0b3Iudmlldy1tYW5nbyI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihjLWUtMjApLCIgI3ZpZXctZWQtY29udGFpbmVyIjoid2lkdGg6ezF9cHg7Ii5hc3NpZ24oZSl9LCIudmlldy1lZGl0b3Iudmlldy1pbmRleCI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihjLWUtMjApLCIgI3ZpZXctZWQtY29udGFpbmVyIjoid2lkdGg6ezF9cHg7Ii5hc3NpZ24oZSl9LCIubW9kZS1ncmlkIjp7fX0sZz0oYS5Db2x1bW5zfHxbXSkubGVuZ3RofHwxLGg9YS5kYXRhLnZpZXcsaT0iX2ZpbmQiPT1oLnRvKDUpfHwiX3NxbCI9PWgudG8oNCl8fCJfY29uZmxpY3RzIj09aCxqPSJfaWR4Ij09aC50byg0KSxrPSEhYS5kYXRhLmVkaXRvcixsPWs/Yy0oaXx8aj9lOmQpLTIwOmMsbT0obC0yLShpPzY1Omt8fGo/MjgwOjMzMCkpL2c7YS5jbG9zZUF1dG9jb21wbGV0ZXMmJmEuY2xvc2VBdXRvY29tcGxldGVzKCksZlsiIHRhYmxlLmdyaWQtdGFibGUiXT0id2lkdGg6ezF9cHghaW1wb3J0YW50OyIuYXNzaWduKGwtMik7dmFyIG49WzEsMiwzLDQsNSw2LDcsOF0ucmVkdWNlKGZ1bmN0aW9uKHgsYSxiKXt2YXIgYz0id2lkdGg6IithKm0rInB4OyI7cmV0dXJuIHhbIiAuZ2NvbHciK2FdPWMseH0seyIgLnZpZXctZ3JpZC1jb2x1bW4iOiJ3aWR0aDpjYWxjKCgxMDAlICsgMzBweCkvICIrZysiKTsiLCIgLnZpZXctZ3JpZC1jb2x1bW46bGFzdC1jaGlsZCI6IndpZHRoOmNhbGMoKCgxMDAlICsgMzBweCkvICIrZysiKSAtIDMwcHgpOyJ9KTtyZXR1cm4gZlsiLm1vZGUtZ3JpZCJdPW4sZn0sIiAjdmlldy1ncmlkLWNvbHMiOnsiIC52aWV3LWdyaWQtY29sdW1uIjp7Ii51aS1zb3J0YWJsZS1oZWxwZXIiOnsiIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuNyk7IiwiIC52aWV3LWdyaWQtY29scy1zb3J0IjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEyMCwxNjgsMjIyLDAuNSk7In19LCIgaW5wdXQiOnsiIjoiYm9yZGVyLXJhZGl1czogMDsgYm9yZGVyLXRvcDpub25lOyBib3JkZXItYm90dG9tOm5vbmU7IGJvcmRlci1yaWdodDpub25lOyBwYWRkaW5nLXJpZ2h0OjIwcHg7d2lkdGg6IGNhbGMoMTAwJSArIDFweCk7IGhlaWdodDoyOXB4OyBsaW5lLWhlaWdodDoyOXB4OyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyAiLCI6Zm9jdXMiOiJiYWNrZ3JvdW5kOnJnYmEoMCwxNTUsMjU1LDAuMTIpOyJ9LCIgLnZpZXctZ3JpZC1jb2xzLXNvcnQiOnsiIjoiY3Vyc29yOm1vdmU7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyBoZWlnaHQ6M3B4OyB6LWluZGV4OjE7IHdpZHRoOjEwMCU7IHRyYW5zaXRpb246YmFja2dyb3VuZCAwLjNzOyIsIjpob3ZlciI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgxMjAsMTY4LDIyMiwwLjUpOyJ9fSwiICN2aWV3LXJlc3VsdHMiOnsiIjoibGluZS1oZWlnaHQ6MS40ZW07IiwiIC52aWV3LXJvdyI6Im1pbi1oZWlnaHQ6MmVtOyIsIiAudmlldy1yb3c6bnRoLWNoaWxkKDJuKzApIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIwNiwyMTQsMjI2LDAuMik7IiwiIC52aWV3LWhvdmVyYnRuIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MjBweDtsaW5lLWhlaWdodDoxLjJlbTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDAuNXM7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7IiwiIC52aWV3LXJvdzpob3ZlciAudmlldy1ob3ZlcmJ0biI6Im9wYWNpdHk6MC41OyIsIiAudmlldy1yb3c6aG92ZXIgLnZpZXctaG92ZXJidG46aG92ZXIiOiJvcGFjaXR5OjAuODsiLCIgLnZpZXctaG92ZXJidG4uaG92ZXIiOiJvcGFjaXR5OjAuNzsiLCIgLnZpZXctcm93PmRpdiI6ImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IiwiIC5jb2wtaWRzIjoid2lkdGg6MzglOyBwYWRkaW5nOjRweCAyMHB4IDVweCA4cHg7IiwiIC5jb2wtaWRzLnczNXAtMzAiOiJ3aWR0aDpjYWxjKDM4JSAtIDMwcHgpOyIsIiAuY29sLXZhbHMiOnsiIjoid2lkdGg6NjIlOyBwYWRkaW5nLWxlZnQ6MTBweDsiLCIgLmNvbC10cmltIjoiY3Vyc29yOnBvaW50ZXIiLCIgLmNvbC1lZCI6ImRpc3BsYXk6bm9uZTsiLCIgLmNvbC1lZC1jbG9zZSI6ImRpc3BsYXk6bm9uZTsifSwiIC53NDBwLTMwIjoid2lkdGg6Y2FsYyg0MCUgLSAzMHB4KTsiLCIgLnczOHAtMzAiOiJ3aWR0aDpjYWxjKDM4JSAtIDMwcHgpOyIsIiAudzYycCI6IndpZHRoOjYyJTsifSwiIC5iYnMiOiJib3JkZXItYm90dG9tLWNvbG9yOiNlM2U5ZWM7IiwiIC5iYXMiOiJib3JkZXItY29sb3I6I2UzZTllYzsiLCIgLmJycyI6ImJvcmRlci1yaWdodDoxcHggc29saWQgI2UzZTllYzsiLCIgLnZpZXctZm91bmQiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIzMiwxMjEsMC43NSk7IGJvcmRlci1yYWRpdXM6MnB4OyIsIiAuY2VsbC1mb3VuZCI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjMyLDEyMSwwLjQpOyIsIiAubXktbW9kYWwtZm9ybSAuQ29kZU1pcnJvci1zY3JvbGwiOiJtaW4taGVpZ2h0OjE1MHB4O21heC1oZWlnaHQ6Y2FsYygyMCAqIDE2cHggKyA2cHgpOyIsIiAubXktbW9kYWwtZm9ybSAuQ29kZU1pcnJvciI6eyIiOiJtaW4taGVpZ2h0OjE1MHB4O2hlaWdodDphdXRvO2ZvbnQtc2l6ZToxM3B4IWltcG9ydGFudCIsIiAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHghaW1wb3J0YW50OyIsIiAuY20tcHJvcGVydHkiOiJjb2xvcjojNDM0ZTVkOyIsIiAuY20tdmFyaWFibGUiOiJjb2xvcjojMzNiZmFkOyIsIiAuY20ta2V5d29yZCI6ImNvbG9yOiM5MDI1OWU7In0sIiAudmlldy1wbmF2LWNvcm5lciAuc2VsZWN0Mi1jb250YWluZXIiOnsiLnNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSI6eyIgYS5zZWxlY3QyLWNob2ljZSI6ImJvcmRlci1jb2xvcjojOWVjZGY4OyJ9LCIgYS5zZWxlY3QyLWNob2ljZSI6eyIiOiJoZWlnaHQ6MjdweDsgYmFja2dyb3VuZC1jb2xvcjogI2YzZjZmNzsgYm9yZGVyLWNvbG9yOiNlM2U5ZWM7IiwiIC5zZWxlY3QyLWFycm93IjoiYm9yZGVyLWxlZnQtY29sb3I6I2UzZTllYzsgYmFja2dyb3VuZC1jb2xvcjojZjNmNmY3OyJ9fSwiIC51aS13aWRnZXQiOiJmb250LXNpemU6MTAwJSIsIiAudWktYXV0b2NvbXBsZXRlIjoiZm9udC1zaXplOjAuOWVtOyBsaW5lLWhlaWdodDoxLjI1ZW07IG1heC1oZWlnaHQ6NTB2aDsgei1pbmRleDoxODAwO292ZXJmbG93LXk6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDsiLCIgLmJmb2xkIjp7IiI6WyJ3aWR0aDoyMHB4IWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IiwibWFyZ2luLWxlZnQ6LTIxcHg7IHotaW5kZXg6KzE7Il0sIiBkaXYiOiJmb250LXNpemU6NjAlOyBvcGFjaXR5OjAuNTt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDozLjRlbTt3aWR0aDoxMDAlOyJ9LCIgLmJ0cy1ibHVlIjp7IjpiZWZvcmUiOidwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi0xcHg7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjFweDsgcG9pbnRlci1ldmVudHM6bm9uZTtvdmVyZmxvdzpoaWRkZW47IGNvbnRlbnQ6IiAiOyBib3JkZXItdG9wOjFweCBzb2xpZCAjOWVjZGY4OyB6LWluZGV4OjI7JywiIGlucHV0IjoiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWNkZjg7IGJvcmRlci1yaWdodDoxcHggc29saWQgIzllY2RmODsifX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9YS5sYW5nO3guaHRtbCgnPGRpdiBjbGFzcz0iZ3JheTEgZnMxMDUgcHQxMDAgcGIxMDAgdGFjIj57MX08L2Rpdj4nLmFzc2lnbihjLk1TR19MT0FESU5HKSksYS5Mcz1hLlBobygiTHMiKSxhLnRhZ0Vtb2ppPWEuUGhvKCJVIikudGFnRW1vamksT2JqZWN0LmtleXMoYS5GKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyJmdW5jdGlvbiI9PXR5cGVvZiBhLkZbeF0mJihhW3hdPWEuRlt4XS5iaW5kKGEpKX0pLE9iamVjdC5rZXlzKGEuVCkuZm9yRWFjaChmdW5jdGlvbih4KXthLlRbeF09YS5QaG8oIkNvbXBpbGVUIikoYS5UW3hdKX0pLGEuVmlld3M9YS5EZWZhdWx0Vmlld3MoKSxhLlRNYXA9YS5UTWFwKCksYS5URG9jcz1hLlREb2NzKCksYS5UTWFuZ289YS5UTWFuZ28oKSxhLlRHcmlkTWFwPWEuVEdyaWRNYXAoKTt2YXIgZD1hLlBobygiTHMiKSgiTWFuZ28uIitiLnBhdGhbMF0pO09iamVjdC5pc09iamVjdChkKSYmZC5xdWVyeSYmJC5leHRlbmQoYi5tYW5nbyxkKTt2YXIgZT1hLlBobygiTHMiKSgiU1FMLiIrYi5wYXRoWzBdKTtyZXR1cm4gT2JqZWN0LmlzT2JqZWN0KGUpJiZlLnF1ZXJ5JiYkLmV4dGVuZChiLnNxbCxlKSx4Lm9uKCJjbGljay5teSIsIi52aWV3LXRvZmlsdGVyIixmdW5jdGlvbih4KXt2YXIgZD0kKHguY3VycmVudFRhcmdldCkuZGF0YSgiZmlsdGVyIik7Yi5zdGFydD1PYmplY3QuaXNTdHJpbmcoZCk/L14iXGQrIiQvLnRlc3QoZCk/ZDpkLnJlcGxhY2UoL14ifCIkL2csIiIpOkpTT04uc3RyaW5naWZ5KGQpLGN3LmxpYi5ub3RlKGMuTVNHX1NUQVJUX0NIQU5HRS5hc3NpZ24oYi5zdGFydCkpLGEubXkucmVjYWxjKCIjdmlldy1zdGFydGtleSIpLGEubXkuY2hlY2soIiN2aWV3LXN0YXJ0a2V5Iil9LmRlYm91bmNlKDQwKSkseC5vbigiY2xpY2subXkiLCIuYnRuLW9wZW4tZG9jIixmdW5jdGlvbih4KXt2YXIgYj0kKHguY3VycmVudFRhcmdldCkuZGF0YSgidXJsIik7YS5QaG8oIlN3aXRjaCIpKGIuc3BsaXQoIi8iKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh4KX0pKX0pLHgub24oImNsaWNrLm15IiwiLnZpZXctZWRpdHVzZXIiLGZ1bmN0aW9uKGIpe3ZhciBkPSQoYi5jdXJyZW50VGFyZ2V0KSxlPSQoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJ1c2VyIik7aWYoJyInPT1lWzBdJiYoZT1KU09OLnBhcnNlKGUpKSwhZS5zdGFydHNXaXRoKCJvcmcuY291Y2hkYi51c2VyOiIpKXJldHVybiBjdy5saWIubm90ZShjLkVSUl9OT1RBVVNFUiwiZXJyb3IiKSwhMTtkLmFkZENsYXNzKCJob3ZlciIpLGEuUmVxKFsiX3VzZXJzIixlXSkudGhlbihmdW5jdGlvbihiKXtyZXR1cm4gZC5tb2RhbCh7cm9vdDp4LG1hbmlmZXN0OmEuUGhvKCJVc2VyRG9jIiksZGF0YTpiLHdpZHRoOjM4MCxib3VuZDowLG5vc2U6ImxlZnQiLGNzczoieGdyYXkiLGFsaWduOiJsZWZ0OjEwMCU7dG9wOi01N3B4OyIsc2NyZWVuOiJyZ2JhKDI1NSwyNTUsMjU1LDApIixlc2M6ITB9KX0pLmFsd2F5cyhmdW5jdGlvbigpe2QucmVtb3ZlQ2xhc3MoImhvdmVyIil9KX0uZGVib3VuY2UoNSkpLHgub24oImNsaWNrLm15IiwnaW5wdXRbbmFtZT0iZG9jcy1zZWxlY3Rpb24iXScsZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpLnZhbCgpOyQodGhpcykuaXMoIjpjaGVja2VkIik/Yi5zZWxlY3Rpb249Yi5zZWxlY3Rpb24uYWRkKHgpLnVuaXF1ZSgpOmIuc2VsZWN0aW9uLnJlbW92ZSh4KSxhLm15LmNoZWNrKCIjdmlldy1hY3Rpb25zIil9KSwiX3VzZXJzIj09Yi5wYXRoWzBdJiZhLlBobygiQ2ZnIikubGlzdENvbHMuaW5kZXhPZigic2VjdXJpdHkiKT4tMSYmeC50aGVuKGZ1bmN0aW9uKCl7YS5HZXRTZWMoKX0pLHgudGhlbihmdW5jdGlvbigpe2EubmljZVNjcm9sbCh4LmZpbmQoIiN2aWV3LW5hbWUiKS5kYXRhKCkuc2VsZWN0Mi5kcm9wZG93bi5maW5kKCIuc2VsZWN0Mi1yZXN1bHRzIikse2JvdW5jZXNjcm9sbDohMCxjdXJzb3Jjb2xvcjoiIzIzNCIsY3Vyc29yb3BhY2l0eW1pbjouMSxjdXJzb3JvcGFjaXR5bWF4Oi40LHJhaWxwYWRkaW5nOntyaWdodDoxfX0pfSksYS5CdXN5KCEwKSxhLlBobygiUG9rZUJ1Y2tldCIpKGIucGF0aFswXSkudGhlbihmdW5jdGlvbigpe3JldHVybiBhLkdldFZpZXdzKCExLCEwKS50aGVuKGZ1bmN0aW9uKCl7dmFyIHg9Yi5wYXRoWzJdLGM9Yi5wYXRoWzNdO2lmKCJfZmluZCI9PWIucGF0aFsxXSl7dmFyIGQ9eCsiIjtiLm1hbmdvLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1kKXx8KGQ9IkRlZmF1bHQgcXVlcnkiKSxiLnZpZXc9Il9maW5k77+9IitkLGIuZWRpdG9yPSEwfWVsc2UgaWYoIl9zcWwiPT1iLnBhdGhbMV0pe2Q9eCsiIjtiLnNxbC5xdWVyeS5maW5kKHg9PngubmFtZT09ZCl8fChkPSJEZWZhdWx0IFNRTCIpLGIudmlldz0iX3NxbO+/vSIrZCxiLmVkaXRvcj0hMH1lbHNlIGlmKCJfaW5kZXgiPT1iLnBhdGhbMV0pIkRlZmF1bHQgaW5kZXgiIT1iLnBhdGhbMl18fGIucGF0aFszXT9iLnZpZXc9Il9pZHgvezF977+9ezJ9Ii5hc3NpZ24oYi5wYXRoWzJdLGIucGF0aFszXSk6Yi52aWV3PSJfaWR4L++/vURlZmF1bHQgaW5kZXgiLGIuZWRpdG9yPSEwO2Vsc2UgaWYoYS5pc1ZpZXdTcGVjaWFsKGIucGF0aFsxXSkpYi52aWV3PWIucGF0aFsxXTtlbHNlIGlmKHgmJmMpe3ZhciBlPSJfZGVzaWduLyIreCsi77+9IitjO2Iudmlldz1hLlZpW2VdP2U6IiJ9Yi5ncmlkPSEhYi52aWV3fSl9KS50aGVuKGZ1bmN0aW9uKCl7YS5yZXN0b3JlVmlld1N0YXRlKCExLCExKSx4Lmh0bWwoYS5IVE1MLmFzc2lnbihjKS5hc3NpZ24oe191cHdpZHRoOmIudmlldz8idzQwIjoidzAifSkpfSkuZmFpbChmdW5jdGlvbigpe2EuQnVzeSghMSl9KX0sRjp7Y2hhbmdlVmlldzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5kYXRhLnZpZXc9eCxiLmNsZWFuVmlld1N0YXRlKHtjb2x1bW5zOiEwfSksYi5yZXN0b3JlVmlld1N0YXRlKCExLCExKSxhfHwoYi5SVCgibXkiKS5yZWNhbGMoIiN2aWV3LW5hbWUiKSxiLlJUKCJteSIpLmNoZWNrKCIjdmlldy1uYW1lIikpfSxjbGVhblZpZXdTdGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9JC5leHRlbmQoe3NoYWRvdzohMCxjb2x1bW5zOiExfSx4fHx7fSk7Yi5zdGFydD0iIixiLnJlZHVjZT0iIixiLmdyaWQ9ISFiLnZpZXcmJiJfbG9jYWxfZG9jcyIhPWIudmlldyxjLnNoYWRvdyYmKGIuc2hhZG93PVsiLnZhbHVlIl0pLGMuY29sdW1ucyYmKGIuY29sdW1ucz1bIi52YWx1ZSJdKSxiLnNlbGVjdGlvbj1bXSxhLlJvd3M9W10sYS5nUm93cz1bXSxhLmZSb3dzPW51bGwsYS5Db2x1bW5zPVtdLGEuRmllbGRzPVtdLGEuRXJyb3I9IiIsYS5FZGl0b3I9W119LGdldFJlZlN0YXI6ZnVuY3Rpb24geChhLGIpe3ZhciBjLGQsZT0ic3RyaW5nIj09dHlwZW9mIGI/Yi5zcGxpdCgiLiIpOk9iamVjdC5pc0FycmF5KGIpP2I6W10sZj1hLGc9MDtmb3IoZz0wO2c8ZS5sZW5ndGgmJm51bGw9PWQmJm51bGwhPWY7ZysrKSIqIj09KGM9ZVtnXSkmJk9iamVjdC5pc0FycmF5KGYpPyhkPWUuc2xpY2UoZysxKSxmPWYucmVkdWNlKGZ1bmN0aW9uKGEsYil7aWYobnVsbD09YilyZXR1cm4gYTt2YXIgYz14KGIsZCk7cmV0dXJuIG51bGwhPWMmJmEucHVzaChjKSxhfSxbXSkpOiIqIj09YyYmT2JqZWN0LmlzT2JqZWN0KGYpPyhkPWUuc2xpY2UoZysxKSxmPU9iamVjdC52YWx1ZXMoZikucmVkdWNlKGZ1bmN0aW9uKGEsYil7aWYobnVsbD09YilyZXR1cm4gYTt2YXIgYz14KGIsZCk7cmV0dXJuIG51bGwhPWMmJmEucHVzaChjKSxhfSxbXSkpOmY9ZltjXTtyZXR1cm4gZn0sZm9ybWF0U2VsMjpmdW5jdGlvbih4KXtpZih4LmlkKXt2YXIgYT14LmlkLnNwbGl0KCLvv70iKTtyZXR1cm4gYVsxXT8oYVswXS5zcGxpdCgiLyIpLmxhc3QoKS50cnVuY2F0ZSgoMzAtYVsxXS5sZW5ndGgpLmNsYW1wKDEwLDMwKSwibWlkZGxlIiwiLi4uIikrIuKAiS/igIkiK2FbMV0pLmVzY2FwZUhUTUwoKTp4LnRleHR9cmV0dXJuIHgudGV4dH0sY3JlYXRlTmV3SWR4RGxnOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztiLmRhdGE7cmV0dXJuIHgubW9kYWwoe21hbmlmZXN0OiQuZXh0ZW5kKHtSVDpiLlJUfSxiLlBobygiTmV3SW5kZXgiKSksZGF0YTphLGNzczoicDE1IixnbG9iYWw6ITAsc2NyZWVuOiEwLHdpZHRoOjQwMCxlc2M6ITAsZm9jdXM6YS5kZG9jPyIjbXZpZXciOiIjbWRkb2MiLGNsb3NlOmIuUGhvKCJsYW5nIikuQlROX1hETEcsYm91bmQ6MjAsejoxOTk1fSl9LERlZmF1bHRWaWV3czpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmxhbmcsYj14LlBobyhbIkNvdWNoIiwidmVyIl0pLGM9W3tpZDoiIix0ZXh0OmEuT1BUX0FMTERPQ1Msb3JkZXI6Il9fMSJ9LHtpZDoiX2Rlc2lnbl9kb2NzIix0ZXh0OmEuT1BUX0RET0NTLG9yZGVyOiJfXzMifSx7aWQ6Il9jaGFuZ2VzIix0ZXh0OmEuT1BUX0NIQU5HRVMsb3JkZXI6Il9fNSJ9XTtpZihiPj0iMDAyLjAwMCIpe2lmKGI+PSIwMDIuMDAxLjAwMiImJmMucHVzaCh7aWQ6Il9sb2NhbF9kb2NzIix0ZXh0OmEuT1BUX0xPQ0FMLG9yZGVyOiJfXzQifSksYj49IjAwMi4wMDMuMDAwIiYmYy5wdXNoKHtpZDoiX2NvbmZsaWN0cyIsdGV4dDphLk9QVF9DT05GTElDVFMsb3JkZXI6Il9fMiJ9KSwiX25vZGUvX2xvY2FsL19ub2RlcyI9PXguZGF0YS5wYXRoWzBdKXJldHVybiBjO3ZhciBkPXt0ZXh0OmEuT1BUX01RUklFUyxjaGlsZHJlbjpbXSxvcmRlcjoifjIifTt4LmRhdGEubWFuZ28ucXVlcnkuZm9yRWFjaChmdW5jdGlvbih4KXtkLmNoaWxkcmVuLnB1c2goe2lkOiJfZmluZO+/vSIreC5uYW1lLHRleHQ6IsKgwqAiK3gubmFtZSxvcmRlcjooIkRlZmF1bHQgcXVlcnkiPT14Lm5hbWU/Il8xICI6Il8yICIpK3gubmFtZX0pfSksZC5jaGlsZHJlbj1kLmNoaWxkcmVuLnNvcnRCeSgib3JkZXIiKSxjLnB1c2goZCk7dmFyIGU9e3RleHQ6YS5PUFRfU1FMUVJJRVMsY2hpbGRyZW46W10sb3JkZXI6In4zIn07eC5kYXRhLnNxbC5xdWVyeS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2UuY2hpbGRyZW4ucHVzaCh7aWQ6Il9zcWzvv70iK3gubmFtZSx0ZXh0OiLCoMKgIit4Lm5hbWUsb3JkZXI6KCJEZWZhdWx0IFNRTCI9PXgubmFtZT8iXzEgIjoiXzIgIikreC5uYW1lfSl9KSxlLmNoaWxkcmVuPWUuY2hpbGRyZW4uc29ydEJ5KCJvcmRlciIpLGMucHVzaChlKTt2YXIgZj17dGV4dDphLk9QVF9NSU5ESUNFUyxjaGlsZHJlbjpbe2lkOiJfaWR4L++/vSIreC5EZWZhdWx0TWFuZ29JZHgubmFtZSx0ZXh0OiLCoMKgIit4LkRlZmF1bHRNYW5nb0lkeC5uYW1lLG9yZGVyOiJfMCJ9XSxvcmRlcjoifjQifTtjLnB1c2goZil9cmV0dXJuIGN9LFRNYXA6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9eC5QaG8oImoyaCIpLGM9eC50YWdFbW9qaSxkPXguVC5kZXNpZ25fZG9jcyxlPXguVC52aWV3LGY9eC5ULnZpZXdfbm9pZCxnPXguVC52aWV3X2ZpbHRlcixoPXguVC52aWV3X2ZpbHRlcl9ub2lkO3JldHVybiBmdW5jdGlvbihtLG4pe3ZhciBvLHAscT14LlJvd3MubGVuZ3RoLHI9Il9pZHgiPT1hLnZpZXcudG8oNCkscz0iIj09eC5kYXRhLnJlZHVjZSx0PSJfZGVzaWduX2RvY3MiPT1hLnZpZXcsdT0iX2xvY2FsX2RvY3MiPT1hLnZpZXcsdj0iX2NoYW5nZXMiPT1hLnZpZXcsdz1xPDEyMD9pOnE8MjUwP2o6ayx5PXE8NDA/MmUzOnE8NjA/NTAwOnE8MTIwPzMwMDoyMDAsej1xPDQwPzU6cTw2MD80OnE8MTIwPzM6cTwyNTA/MzoyLEE9YS52aWV3JiYhdXx8IWEuaW5jbC5sZW5ndGg/cj9tLmtleTptLnZhbHVlOm0uZG9jLEI9YihBLHksWyJfaWQiLCJpZCIsIm5hbWUiXSx6KTtyZXR1cm4gMT09Qi5sZW5ndGgmJiJzaG9ydCI9PUJbMF1bMF0mJigieyI9PUJbMF1bMV1bMF0/QlswXVsxXT0iT2JqZWN0ICIrQlswXVsxXToiWyI9PUJbMF1bMV1bMF0mJihCWzBdWzFdPSJBcnJheSAiK0JbMF1bMV0pKSxvPUIubWFwKHcpLmpvaW4oIiIpLHguZlNlYXJjaCYmYS5zZWFyY2gubGVuZ3RoPjE/KHA9KHI/bS5pZDpsKG0ua2V5KSkuZXNjYXBlSFRNTCgpLChzP2c6aCkuYXNzaWduKHtfaWR4Om0uX2lkeCxfaWR4c2FmZTptLl9pZHhzYWZlLGNoZWNrZWQ6bS5fY2hlY2tlZCxpZDptLmtleSxpZHNhZmVmaWx0ZXI6Yygocj9tLmlkOmwobS5rZXkpKS5yZXBsYWNlKHguZlNlYXJjaCwi77+xJDHvv7AiKS5lc2NhcGVIVE1MKCkucmVwbGFjZSgi77+xIiwnPHNwYW4gY2xhc3M9InZpZXctZm91bmQiPicpLnJlcGxhY2UoIu+/sCIsIjwvc3Bhbj4iKSksaWRzYWZlOnAsamlkc2FmZTpjKHApLGRvY2lkc2FmZTpudWxsIT1tLmlkPyhtLmlkKyIiKS5lc2NhcGVIVE1MKCk6IiIsaHJlZjptLmlkP3gucDJ1KFthLnBhdGhbMF0sbS5pZF0pLmpvaW4oIi8iKS5lc2NhcGVIVE1MKCk6IiIsbm9kb2M6bS5pZD8iIjoiaGlkZSIsa2V5Om0ua2V5LGh0bWw6YyhvKSxjc3M6by5sZW5ndGg+MjUwPyJmczk1IGxoMTQwIHB0MyBwYjMiOiJsaDE0MCBwdDIgcGIyIn0pKToocD0odHx8dj9tLmtleTpyP20uaWQ6bChtLmtleSkpLmVzY2FwZUhUTUwoKSwodHx8dj9kOnM/ZTpmKS5hc3NpZ24oe19pZHg6bS5faWR4LF9pZHhzYWZlOm0uX2lkeHNhZmUsX2RlbDptLl9kZWwsY2hlY2tlZDptLl9jaGVja2VkLGlkOm0ua2V5LGlkc2FmZTpwLGppZHNhZmU6YyhwKSxkb2NpZHNhZmU6bnVsbCE9bS5pZD8obS5pZCsiIikuZXNjYXBlSFRNTCgpOiIiLGhyZWY6bS5pZD94LnAydShtLl9kZWw/W2EucGF0aFswXSxtLmlkLCJfIittLl9kZWxdOlthLnBhdGhbMF0sbS5pZF0pLmpvaW4oIi8iKS5lc2NhcGVIVE1MKCk6IiIsbm9kb2M6bS5pZD8iIjoiaGlkZSIsa2V5Om0ua2V5LGh0bWw6YyhvKSxjc3M6by5sZW5ndGg+MjUwPyJmczk1IGxoMTQwIHB0MyBwYjMiOiJsaDE0MCBwdDIgcGIyIn0pKX07ZnVuY3Rpb24gaSh4KXtyZXR1cm4geFswXT8nPHNwYW4gY2xhc3M9Imp2YWwtJyt4WzBdKyciPicreFsxXSsiPC9zcGFuPiI6eFsxXX1mdW5jdGlvbiBqKHgpe3JldHVybiJicmFja2V0IiE9eFswXSYmImtleSIhPXhbMF0/eFsxXTonPHNwYW4gY2xhc3M9Imp2YWwtJyt4WzBdKyciPicreFsxXSsiPC9zcGFuPiJ9ZnVuY3Rpb24gayh4KXtyZXR1cm4geFsxXX1mdW5jdGlvbiBsKHgpe3JldHVybiBKU09OLnN0cmluZ2lmeSh4LG51bGwsMSkucmVwbGFjZSgvXlxzKy9nbSwiICIpLnJlcGxhY2UoL1xuL2csIiIpLnJlcGxhY2UoL3tccy9nLCJ7IikucmVwbGFjZSgvXHN9L2csIn0iKS5yZXBsYWNlKC9cW1xzL2csIlsiKS5yZXBsYWNlKC9cc1xdL2csIl0iKX19LFREb2NzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXgudGFnRW1vamksYz14LlQuZG9jcyxkPXguVC51c2VyX2RvY3M7cmV0dXJuIl91c2VycyIhPWEucGF0aFswXT9mdW5jdGlvbih4LGEpe3JldHVybiBjLmFzc2lnbihlKHgsYSkpfTpmdW5jdGlvbih4LGEpe3ZhciBiPWUoeCxhKTtyZXR1cm4ib3JnLmNvdWNoZGIudXNlcjoiIT14LmtleS5zdWJzdHIoMCwxNyk/Yy5hc3NpZ24oYik6ZC5hc3NpZ24oYil9O2Z1bmN0aW9uIGUoYyxkKXtyZXR1cm57aWQ6Yy5rZXksaWRzYWZlOihjLmtleSsiIikuZXNjYXBlSFRNTCgpLGppZHNhZmU6YigoYy5rZXkrIiIpLmVzY2FwZUhUTUwoKSksY2hlY2tlZDpjLl9jaGVja2VkLGhyZWY6Yy5pZD94LnAydShjLl9kZWw/W2EucGF0aFswXSxjLmlkLCJfIitjLl9kZWxdOlthLnBhdGhbMF0sYy5pZF0pLmpvaW4oIi8iKS5lc2NhcGVIVE1MKCk6IiIscmV2OigoYy52YWx1ZXx8e30pLnJldisiIikuZXNjYXBlSFRNTCgpfX19LFRNYW5nbzpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0oeC5kYXRhLHguUGhvKCJqMmgiKSksYj14LnRhZ0Vtb2ppLGM9eC5ULm1hbmdvO3guVC52aWV3X2ZpbHRlcjtyZXR1cm4gZnVuY3Rpb24oZyxoKXt2YXIgaSxqPXguUm93cy5sZW5ndGgsaz1qPDEyMD9kOmo8MjUwP2U6ZixsPWo8NDA/MmUzOmo8NjA/NTAwOmo8MTIwPzMwMDoyMDAsbT1qPDQwPzU6ajw2MD80Omo8MTIwPzM6ajwyNTA/MzoyLG49Zy52YWx1ZSxvPWEobixsLFsiX2lkIiwiaWQiLCJuYW1lIl0sbSk7cmV0dXJuIDE9PW8ubGVuZ3RoJiYic2hvcnQiPT1vWzBdWzBdJiYoInsiPT1vWzBdWzFdWzBdP29bMF1bMV09Ik9iamVjdCAiK29bMF1bMV06IlsiPT1vWzBdWzFdWzBdJiYob1swXVsxXT0iQXJyYXkgIitvWzBdWzFdKSksaT1vLm1hcChrKS5qb2luKCIiKSxjLmFzc2lnbih7X2lkeDpnLl9pZHgsX2lkeHNhZmU6Zy5faWR4c2FmZSxfaGFzdXJsOmcuX2hhc3VybCxpZDpnLmtleSsiIixpZHNhZmU6Zy5rZXkrIiIsamlkc2FmZTpiKChnLmtleSsiIikuZXNjYXBlSFRNTCgpKSxocmVmOmcuaHJlZnx8IiIsbm9kb2M6IiIsa2V5OmgrIiIsaHRtbDppLGNzczppLmxlbmd0aD4yNTA/ImZzOTUgbGgxNDAgcHQzIHBiMyI6ImxoMTQwIHB0MiBwYjIifSl9O2Z1bmN0aW9uIGQoeCl7cmV0dXJuIHhbMF0/JzxzcGFuIGNsYXNzPSJqdmFsLScreFswXSsnIj4nK3hbMV0rIjwvc3Bhbj4iOnhbMV19ZnVuY3Rpb24gZSh4KXtyZXR1cm4iYnJhY2tldCIhPXhbMF0mJiJrZXkiIT14WzBdP3hbMV06JzxzcGFuIGNsYXNzPSJqdmFsLScreFswXSsnIj4nK3hbMV0rIjwvc3Bhbj4ifWZ1bmN0aW9uIGYoeCl7cmV0dXJuIHhbMV19fSx1cGRhdGVHcmlkSFRNTDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj14LkYuZ2V0UmVmU3RhcixjPSIiPT1hLnJlZHVjZSYmISgiX2ZpbmQiPT1hLnZpZXcudG8oNSl8fCJfc3FsIj09YS52aWV3LnRvKDQpKSxkPShhLnZpZXcseC5Db2x1bW5zLnJlZHVjZShmdW5jdGlvbih4LGEpe2lmKHgubGFzdCgpJiZ4Lmxhc3QoKS5jb2xzPT1hLmNvbHMpcmV0dXJuIHgubGFzdCgpLnNwYW4rPTEseDt2YXIgYj0oYS5jYXN0P2EuY29scy50byhhLmNvbHMubGVuZ3RoLWEuY2FzdC5sZW5ndGgtMik6YS5jb2xzKS5zcGxpdCgiLiIpO3JldHVybiIiIT09YlswXT9iLnVuc2hpZnQoInZhbHVlIik6Yi5zaGlmdCgpLHgucHVzaCh7c2VsOmIsc3BhbjoxLGNvbHM6YS5jb2xzLGNhc3Q6YS5jYXN0fSkseH0sW10pKSxlPWN3LmxpYi5hMm8oYS5zZWxlY3Rpb24pO3guUm93cy5mb3JFYWNoKHg9PnguX2NoZWNrZWQ9ZVtjP3guaWQ6eC5rZXldPyJjaGVja2VkIjoiIikseC5nUm93cz14LlJvd3MudG8oK2EubGltaXQpO3ZhciBmPWEuc2VhcmNoLmxlbmd0aD4xJiZ4LmZTZWFyY2g/eC5mU2VhcmNoOm51bGw7ZiYmKHguZ1Jvd3M9eC5nUm93cy5maWx0ZXIoeD0+Zi50ZXN0KHguX2tqc29uKXx8Zi50ZXN0KHguX3Zqc29uKSkpLHguZ1Jvd3MuZm9yRWFjaChmdW5jdGlvbih4LGEpe3guY29scz1kLm1hcChmdW5jdGlvbihhKXt2YXIgYz1hLnNlbC5sZW5ndGg/Yih4LGEuc2VsKTp2b2lkIDAsZD0ic3RyaW5nIj09dHlwZW9mIGMsZT1udWxsIT1mJiZmLnRlc3QoZD9jOkpTT04uc3RyaW5naWZ5KGMpKTtyZXR1cm57dmFsOmMsc3BhbjphLnNwYW4sY3NzOmU/ImNlbGwtZm91bmQiOiIiLGNhc3Q6YS5jYXN0fX0pfSkseC5teS5maW5kKCIjdmlldy1yZXN1bHRzLWdyaWQiKS5saXN0KCJkYXRhIix4LmdSb3dzKX0sYnVpbGRHcmlkQ29sdW1uczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGE7YS5ncmlkP3guQ29sdW1ucz1hLmNvbHVtbnMubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPSh4Lm1hdGNoKC9cc1wvW2Etel1bYS16MC05XXswLDV9JC8pfHxbIiJdKVswXS5zdWJzdHIoMik7cmV0dXJue2lkOiJ4IitOdW1iZXIucmFuZG9tKDFlNSwxZTYpLGNvbHM6eCxjYXN0OmF9fSk6eC5Db2x1bW5zPVtdfSx1cGRhdGVHcmlkRnJvbUNvbHVtbnM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhO2lmKGEuZ3JpZCYmKHguQ29sdW1uc3x8W10pLmxlbmd0aCl7dmFyIGI9YS5jb2x1bW5zLmxlbmd0aDthLmNvbHVtbnM9eC5Db2x1bW5zLm1hcCh4PT54LmNvbHMpLHguc3Rhc2hWaWV3U3RhdGUoKSxiIT0oeC5Db2x1bW5zfHxbXSkubGVuZ3RoJiZ4Lm15LnJlc3R5bGUoKSx4Lm15LmNoZWNrKCIjZ3JpZC1wcm94eSIpfX0sZGVyaXZlR3JpZENvbHVtbnM6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPSh4PSgreHx8NSkuY2xhbXAoMSw4KSxjdy5saWIuYTJvKCJpZCBrZXkgcmV2IC5pZCAua2V5IC5yZXYgLmRvYyAuX2lkIC5fcmV2IC52YWx1ZSAuZG9jLl9pZCAuZG9jLl9yZXYg4oCMIi5zcGxpdCgiICIpKSksYz1hLkZpZWxkcy5zb3J0QnkoZnVuY3Rpb24oeCl7dmFyIGE9eC52YWx1ZSxiPXguY3RyO3JldHVybiJ0aXRsZSIhPWEmJiJuYW1lIiE9YXx8KGIqPTEuNSksInN0YW1wIiE9YSYmInRzIiE9YSYmInRpbWVTdGFtcCIhPWF8fChiKj0xLjQpLCJ0eXBlIj09YSYmKGIqPTEuMiksYn0sITApLmZpbHRlcih4PT4hYlt4LnZhbHVlXSkudG8oeCkubWFwKHg9PngudmFsdWUpO3JldHVybiBjLmxlbmd0aHx8KGM9WyIudmFsdWUiXSksY30sc3Rhc2hWaWV3U3RhdGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9Y3cubGliLnNkYm0oW2EucGF0aFswXSxhLnZpZXddKSxjPXtyZWR1Y2U6YS5yZWR1Y2UsZ3JpZDphLmdyaWQsY29sdW1uczooYS5jb2x1bW5zfHxbIi52YWx1ZSJdKS5zbGljZSgwKSxzaGFkb3c6KGEuc2hhZG93fHxbIi52YWx1ZSJdKS5zbGljZSgwKSxlZGl0b3I6YS5lZGl0b3IsaW5jbDphLmluY2x9O3JldHVybiB4LkxzKCJWaWV3U3RhdGUuIitiLGMpLHtrZXk6YixzdGF0ZTpjfX0scmVzdG9yZVZpZXdTdGF0ZTpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGEsZD14fHxjLnZpZXcsZT1jdy5saWIuc2RibShbYy5wYXRoWzBdLGRdKSxmPShkLnRvKDUpLGQudG8oNCksIl9pZHgiPT1kLnRvKDQpKSxnPSJfZGVzaWduX2RvY3MiPT1kLGg9Il9jaGFuZ2VzIj09ZCxpPSJfY29uZmxpY3RzIj09ZCxqPWIuTHMoIlZpZXdTdGF0ZS4iK2UpfHx7fTtpZighai5jb2x1bW5zfHwhai5jb2x1bW5zLmxlbmd0aHx8ai5jb2x1bW5zKyIiPT0iLnZhbHVlInx8aSYmai5sZW5ndGg8MylpZihkKWlmKGkpai5jb2x1bW5zPVsiX2lkIiwiX3JldiIsIl9jb25mbGljdHMgL2xpc3QiLCJuYW1lIl07ZWxzZSBpZihnKWouY29sdW1ucz1bInZpZXdzIC9rZXlzIiwiZmlsdGVycyAva2V5cyIsIi5kb2Mub3B0aW9ucyAva3YiLCIuZG9jLmxhbmd1YWdlIiwic2l6ZXMuZmlsZSAvYnl0ZXMiXTtlbHNlIGlmKGgpai5jb2x1bW5zPVsicmV2IiwicmV2IiwiZGVsZXRlZCIsInNlcSJdO2Vsc2UgaWYoZil7dmFyIGssbD0iX2Rlc2lnbi8iK2Quc3BsaXQoIu+/vSIpWzBdLmZyb20oNSksbT1kLnNwbGl0KCLvv70iKVsxXSxuPVtdO20mJihrPWN3LmxpYi5nZXRyZWYoYi5EZG9jcyxbbCwidmlld3MiLG0sIm1hcCIsImZpZWxkcyJdKSkmJk9iamVjdC5zaXplKGspPjE/KE9iamVjdC5zaXplKGspLmNsYW1wKDIsOCkudGltZXMoeD0+bi5wdXNoKCIua2V5LiIreCkpLGouY29sdW1ucz1uKTpqLmNvbHVtbnM9WyIua2V5Il19ZWxzZSBqLmNvbHVtbnM9WyIudmFsdWUiXTtlbHNlIGouY29sdW1ucz0oai5pbmNsfHwiIikrIiI/WyIuZG9jIl06WyJyZXYiXTtyZXR1cm4geHx8JC5leHRlbmQoYyxPYmplY3Quc2VsZWN0KGosWyJyZWR1Y2UiLCJncmlkIiwiY29sdW1ucyIsInNoYWRvdyIsImVkaXRvciIsImluY2wiXSkpLGEmJmIubXkucmVkcmF3KCksan0sY2xvc2VBdXRvY29tcGxldGVzOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5teSYmYS5teS5maW5kKCIudWktYXV0b2NvbXBsZXRlLWlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcyk7YS5pcyh4KXx8KGEuYXV0b2NvbXBsZXRlKCJjbG9zZSIpLGEubmV4dCgpLnRyaWdnZXIoImNoZWNrLm15IikpfSl9LGJ1aWxkRmllbGRzTGlzdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9eHx8YS5SZXN1bHRbMF18fHtyb3dzOltdfSxkPShPYmplY3QuaXNBcnJheSxPYmplY3QuaXNPYmplY3QpLGU9e30sZj0iX2Rlc2lnbl9kb2NzIj09Yi52aWV3LGc9Il9sb2NhbF9kb2NzIj09Yi52aWV3O2lmKGEuRmllbGRzLmxlbmd0aClyZXR1cm4gYS5GaWVsZHM7Yy5kb2NzP2MuZG9jcy5tYXAoeD0+KHt2YWx1ZTp4fSkpLmZvckVhY2goaS5maWxsKDAsIiIpKTpjLnJlc3VsdHM/Yy5yZXN1bHRzLm1hcCh4PT4oe3ZhbHVlOnh9KSkuZm9yRWFjaChpLmZpbGwoMCwiIikpOihjLnJvd3N8fFtdKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIE9iamVjdC5zZWxlY3QoeCwhYi52aWV3fHxmfHxnP1siaWQiLCJ2YWx1ZSIsImRvYyJdOlsiaWQiLCJrZXkiLCJ2YWx1ZSJdKX0pLmZvckVhY2goaS5maWxsKDAsIiIpKTt2YXIgaD1PYmplY3Qua2V5cyhlKTtyZXR1cm4gaC5sZW5ndGg+MTAwJiYoaD1oLmZpbHRlcih4PT54LnNwbGl0KCIuIikubGVuZ3RoPCgiLiI9PXhbMF0/NTo0KSkpLGgubGVuZ3RoPjEwMCYmKGg9aC5maWx0ZXIoeD0+eC5zcGxpdCgiLiIpLmxlbmd0aDwoIi4iPT14WzBdPzQ6MykpKSxoLmxlbmd0aD4xMDAmJihoPWguZmlsdGVyKHg9Pnguc3BsaXQoIi4iKS5sZW5ndGg8KCIuIj09eFswXT8zOjIpKSksaC5sZW5ndGg+MTAwJiYoaD1oLnRvKDEwMCkpLGEuRmllbGRzPVt7bGFiZWw6IsOXIERlbGV0ZSBjb2x1bW4iLHZhbHVlOiLigIwiLGN0cjowfV0uY29uY2F0KGguc29ydChmdW5jdGlvbih4LGEpe3JldHVybiIuIiE9YVswXSYmIi4iIT14WzBdfHxhWzBdPT14WzBdP2E+eD8tMTphPHg/MTowOiIuIj09YVswXT8tMToxfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybntsYWJlbDp4LnRydW5jYXRlKDUwLCJtaWRkbGUiLCLCoOKApsKgIiksdmFsdWU6eCxjdHI6ZVt4XX19KSk7ZnVuY3Rpb24gaSh4LGEsYil7eD4zfHxkKGIpJiZPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMubGVuZ3RoJiYiX2F0dGFjaG1lbnRzIiE9Yyl7dmFyIGQ9YltjXSxmPSQudHlwZShkKSxnPSgiLnZhbHVlIj09YT8iIjphKyIuIikrYztlW2ddPShlW2ddfHwwKSsoeD4xPy4xOjEpLCJvYmplY3QiPT1mP2koeCsxLGcsZCk6ImFycmF5Ij09ZiYmZC5sZW5ndGgmJmkoeCsxLGErIi4iK2MrIi4wIixkWzBdKX19KX19LFRHcmlkTWFwOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXguUGhvKCJqMmgiKSxjPXgudGFnRW1vamksZD14LlQuZ3JpZF92aWV3LGU9eC5ULmdyaWRfZG9jLGY9eC5ULmdyaWRfbWFuZ28sZz14LlQuZ3JpZF9yZWR1Y2UsaD14LlQuZ3JpZF9jb2x1bW47cmV0dXJuIGZ1bmN0aW9uKG0sbil7dmFyIG89eC5Sb3dzLmxlbmd0aCxwPSJfaWR4Ij09YS52aWV3LnRvKDQpLHE9L15fKGZpbmR8c3FsKS8udGVzdChhLnZpZXcpfHwiX2NvbmZsaWN0cyI9PWEudmlldyxyPSEheC5kYXRhLnJlZHVjZSxzPSFxJiYhcix0PSJfZGVzaWduX2RvY3MiPT1hLnZpZXcsdT0iX2NoYW5nZXMiPT1hLnZpZXcsdj1qLHc9bzw0MD8yZTM6bzw2MD8xNTAwOm88MTIwPzFlMzo3MDAseT1vPDEyMD82OjUsej14LkYuR3JpZENhc3QsQT0hYS52aWV3fHx0fHx1fHxxP20ua2V5OnA/bS5pZDprKG0ua2V5KTtyZXR1cm4oIWEudmlld3x8dHx8dT9lOnI/ZzpzP2Q6ZikuYXNzaWduKHtfaWR4Om0uX2lkeCxfaWR4c2FmZTptLl9pZHhzYWZlLF9oYXN1cmw6bS5faGFzdXJsLGNoZWNrZWQ6bS5fY2hlY2tlZCxpZDptLmtleSxpZHNhZmU6QS5lc2NhcGVIVE1MKCksaWRzYWZlZmlsdGVyOmMoeC5mU2VhcmNoP0EucmVwbGFjZSh4LmZTZWFyY2gsIu+/sSQx77+wIikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoIu+/sSIsJzxzcGFuIGNsYXNzPSJ2aWV3LWZvdW5kIj4nKS5yZXBsYWNlKCLvv7AiLCI8L3NwYW4+Iik6QS5lc2NhcGVIVE1MKCkpLGRvY2lkc2FmZTpudWxsIT1tLmlkPyhtLmlkKyIiKS5lc2NhcGVIVE1MKCk6IiIsaHJlZjptLl9oYXN1cmw/bS5ocmVmOm0uaWQ/eC5wMnUobS5fZGVsP1thLnBhdGhbMF0sbS5pZCwiXyIrbS5fZGVsXTpbYS5wYXRoWzBdLG0uaWRdKS5qb2luKCIvIikuZXNjYXBlSFRNTCgpOiIiLG5vZG9jOm0uaWQ/IiI6ImhpZGUiLGtleTptLmtleSxjb2x1bW5zOm0uY29scy5tYXAoZnVuY3Rpb24oeCxhKXt2YXIgZD0iIixlPXgudmFsLGY9dHlwZW9mIHgudmFsO3JldHVybiB6W3guY2FzdF0mJihmPXR5cGVvZihlPXpbeC5jYXN0XShlLGYpKSksZD0ib2JqZWN0Ij09Zj9sKGsoZSkpOiJudW1iZXIiPT1mP2koZSk6InN0cmluZyI9PWY/ZT9sKGUpLnJlcGxhY2UoL15bXHJcbl0rLywiIikucmVwbGFjZSgvW1xyXG5dKy9nLCI8YnI+Iik6JyIiJzpiKGUsdyxbXSx5KS5tYXAodikuam9pbigiIiksaC5hc3NpZ24oe2lkeDpuKyJfIithLHZhbDpjKGQpLGNzczpbZC5sZW5ndGg+MTAwPyJmczk1IGxoMTQwIHB0MSAiOiIiLCJvYmplY3QiPT1mPyJhc2pzb24gIjoiIiwiZ2NvbHYgZ2NvbHciK3guc3BhbisiICIseC5jc3N8fCIiXS5qb2luKCIiKX0pfSkuam9pbigiIil9KX07ZnVuY3Rpb24gaSh4KXtyZXR1cm4nPHNwYW4gY2xhc3M9Imp2YWwtbnVtYmVyJysoL1xkezEwfS8udGVzdCh4KT8iIGZzOTUiOiIiKSsnIj4nK3grIjwvc3Bhbj4ifWZ1bmN0aW9uIGooeCl7cmV0dXJuIHhbMF0/JzxzcGFuIGNsYXNzPSJqdmFsLScreFswXSsnIj4nK3hbMV0rIjwvc3Bhbj4iOnhbMV19ZnVuY3Rpb24gayh4KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCxudWxsLDEpLnJlcGxhY2UoL15ccysvZ20sIiAiKS5yZXBsYWNlKC9cbi9nLCIiKS5yZXBsYWNlKC97XHMvZywieyIpLnJlcGxhY2UoL1xzfS9nLCJ9IikucmVwbGFjZSgvXFtccy9nLCJbIikucmVwbGFjZSgvXHNcXS9nLCJdIil9ZnVuY3Rpb24gbChhKXt2YXIgYj0yNTYrNzY4LygoeC5Db2x1bW5zfHxbXSkubGVuZ3RofHwxKXwwO3JldHVybiBhLmxlbmd0aD4xLjEqYj9hLnRvKGIpLmVzY2FwZUhUTUwoKSsnPHNwYW4gY2xhc3M9InJlZDEgcGwzIGJvbGQiPuKApjwvc3Bhbj4nOmEuZXNjYXBlSFRNTCgpfX0sR3JpZENhc3Q6e2R0OmZ1bmN0aW9uKHgsYSl7aWYoIXh8fCEvXihudW1iZXJ8c3RyaW5nKSQvLnRlc3QoYSkpcmV0dXJuIHg7dmFyIGI9RGF0ZS5jcmVhdGUoL15baS11XVthLXowLTldezd9JC8udGVzdCh4KT9wYXJzZUludCh4LDM2KToreHx8eCk7cmV0dXJuIGIuaXNWYWxpZCgpP2IuZm9ybWF0KCJ7ZH0ge01vbn0ge3l5eXl9LCB7SH06e21tfTp7c3N9Iik6eH0saW50OmZ1bmN0aW9uKHgpe3ZhciBhO2lmKCJudW1iZXIiIT10eXBlb2YgeCl7aWYoInN0cmluZyIhPXR5cGVvZiB4KXJldHVybiB4O2lmKGlzTmFOKHBhcnNlSW50KHgpKSlyZXR1cm4geDthPXBhcnNlSW50KHgpLmZvcm1hdCgwLCLigIkiKX1lbHNlIGE9eC5mb3JtYXQoMCwi4oCJIik7cmV0dXJuIGErIsKgIn0sY3VycjpmdW5jdGlvbih4KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHg/eDp4LmZvcm1hdCgyLCLigIkiKSsiwqAifSxieXRlczpmdW5jdGlvbih4KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHg/eDp4LmJ5dGVzKDIpLnJlcGxhY2UoLyhcRFxEPykkLywi4oCK4oCKJDEiKX0saGV4OmZ1bmN0aW9uKHgsYSl7aWYoIm51bWJlciI9PWEmJk1hdGguZmxvb3IoeCk9PT14KXt2YXIgYj14LnRvU3RyaW5nKDE2KSxjPSItIj09YlswXT8iLSI6IiIsZD1iLnN1YnN0cihjPzE6MCkudG9VcHBlckNhc2UoKSxlPWQubGVuZ3RoO3JldHVybiBjKyhkPWQucGFkTGVmdChlPD00PzQ6ZTw4Pzg6MCwiMCIpKX1yZXR1cm4ic3RyaW5nIj09YT91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoeCkpLmNvZGVzKCkubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJuKHg8MTY/IjAiOiIiKSt4LnRvU3RyaW5nKDE2KSsoYSU0PT0zPyIgIjoi4oCvIil9KS5qb2luKCIiKS50b1VwcGVyQ2FzZSgpOnh9LGxpc3Q6ZnVuY3Rpb24oeCxhKXtyZXR1cm4ib2JqZWN0IiE9YT94Ok9iamVjdC52YWx1ZXMoeCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiJvYmplY3QiIT10eXBlb2YgeD8oeCsiIikucmVwbGFjZSgvW1xyXG5dKy9nLCIgIik6SlNPTi5zdHJpbmdpZnkoeCl9KS5qb2luKCJcbiIpfSxrZXlzOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIm9iamVjdCIhPWE/eDpPYmplY3Qua2V5cyh4KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZSgvW1xyXG5dKy9nLCIgIil9KS5qb2luKCJcbiIpfSxrdjpmdW5jdGlvbih4LGEpe3JldHVybiJvYmplY3QiIT1hP3g6T2JqZWN0LmtleXMoeCkubWFwKGZ1bmN0aW9uKGEpe3ZhciBiPXhbYV07cmV0dXJuIGEucmVwbGFjZSgvW1xyXG5dKy9nLCIgIikrIjrCoCIrKCJvYmplY3QiIT10eXBlb2YgYj8oYisiIikucmVwbGFjZSgvW1xyXG5dKy9nLCIgIik6SlNPTi5zdHJpbmdpZnkoYikpfSkuam9pbigiXG4iKX19LEdldFNlYzpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiQWxsIiksYj1PYmplY3Qua2V5cyhhKSxjPVtdLGQ9RGF0ZS5ub3coKTtyZXR1cm4gYi5mb3JFYWNoKGZ1bmN0aW9uKHgpeyghYVt4XS5zZWN1cml0eXx8YVt4XS5zZWN1cml0eS5zdGFtcCszNmU1PGQpJiZjLnB1c2goeCl9KSxjPWMudG8oMTAwKSx4LlBobygiJGRicyIpLkJhdGNoSW5mby5jYWxsKHtQaG86eC5QaG8sUmVxOnguUmVxLEJhdGNoOnt9LEFsbDphLFJlbGlzdDpmdW5jdGlvbigpe30sUmVsaXN0Tm93OmZ1bmN0aW9uKCl7fX0sYyx4LlBobygiQ2ZnIikuYmF0Y2hEYkluZm9EZWxheSxbInNlY3VyaXR5Il0pfSxEZWxEb2NzOmZ1bmN0aW9uKCl7dmFyIHg9JC5EZWZlcnJlZCgpLGE9dGhpcyxiPWEuZGF0YSxjPWIuc2VsZWN0aW9uLnNsaWNlKDApLnVuaXF1ZSgpLGQ9Yi5wYXRoLnNsaWNlKDApLGU9W10sZj1jLmxlbmd0aCxnPShhLmZSb3dzfHxhLlJvd3MpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5pZH0pLnVuaXF1ZSgpLmludGVyc2VjdChjKS5sZW5ndGgsaD1hLmxhbmcsaT1hLlBobygiQ291Y2giKS52ZXIsaj1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfSxrPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGooKHgrIiIpLnRydW5jYXRlKGF8fDE1LCJyaWdodCIsIuKApiIpKX0sbD0nPGRpdiBjbGFzcz0ibWIxMCI+ezF9PC9kaXY+JyxtPSc8bGFiZWwgY2xhc3M9InhncmF5Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJldGFpbiIgdmFsdWU9InsxfSIgY2xhc3M9Im1yNiI+IHsyfTwvbGFiZWw+JztyZXR1cm4gJC5teS5tb2RhbCh7d2lkdGg6MzgwLG1hbmlmZXN0OiQuZXh0ZW5kKCEwLHt9LGEuUGhvKCJDb25maXJtIikse3VpOnsnaW5wdXRbbmFtZT0icmV0YWluIl0nOiJyZXRhaW4ifSxzdHlsZTp7IiBsYWJlbCI6Im1hcmdpbjowLjFlbSAwO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDsifX0pLGRhdGE6e3JldGFpbjoibm8iLHRleHQ6Wyc8ZGl2IGNsYXNzPSJmczEzMCByZWQgbWI1Ij4nK2guVFhUX0RFTF9USVRMRSsiPC9kaXY+IixsLmFzc2lnbihoLlRYVF9ERUxfV0FSTihmLGsoYi5wYXRoWzBdLDI1KSkpLGchPWY/bC5hc3NpZ24oaC5UWFRfREVMX1dBUk5fSElEREVOKGYsZykpOiIiLGwuYXNzaWduKG0uYXNzaWduKCJubyIsaC5MQkxfREVMX0FMTCkrbS5hc3NpZ24oInJldGFpbiIsaC5MQkxfREVMX1JFVEFJTikrKGk+PSIwMDIuMDAzLiI/bS5hc3NpZ24oInB1cmdlIixoLkxCTF9ERUxfUFVSR0UpOiIiKSsoaT49IjAwMi4wMDMuIj9tLmFzc2lnbigieHB1cmdlIixoLkxCTF9ERUxfWFBVUkdFKToiIikpXS5qb2luKCIiKSx5ZXNjc3M6InJlZCIseWVzOmguQlROX0RFTF9TVEFSVCxubzpoLkJUTl9DQU5DRUwsY2FuY2VsOiIifSxjc3M6ImxoMTYwIHhncmF5IHAyMCBwYjI1IixjbG9zZTphLlBobygibGFuZyIpLkJUTl9YRExHLGZvY3VzOiIjYnRuLW5vIixlc2M6ITAsZW50ZXI6ITF9KS50aGVuKGZ1bmN0aW9uKGEpe2lmKCJ5ZXMiIT1hLmNtZClyZXR1cm4geC5yZWplY3QoOTk5LCJDYW5jZWxsZWQiLCJDYW5jZWxsZWQiKTtuKGEucmV0YWluKyIiKX0pLmZhaWwoZnVuY3Rpb24oKXt4LnJlamVjdCg5OTksIkNhbmNlbGxlZCIsIkNhbmNlbGxlZCIpfSkseC5wcm9taXNlKCk7ZnVuY3Rpb24gbihmKXt2YXIgZz0icHVyZ2UiPT1mfHwieHB1cmdlIj09ZixpPWEuUGhvKCJDb3VjaCIpLm1heFB1cmdlLGw9Yy51bmlxdWUoKS5zb3J0KCksbT17dXJsOltiLnBhdGhbMF0sIl9idWxrX2RvY3MiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOiJbXSJ9LG49ci5kZWJvdW5jZSgxNTApO2lmKCJubyI9PWZ8fCJyZXRhaW4iPT1mKW0uaGVhZGVycz17IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn07ZWxzZXtpZigicHVyZ2UiIT1mJiYieHB1cmdlIiE9ZilyZXR1cm4geC5yZWplY3QoOTk5LCJVbmtub3duIG1vZGUiLCJDYW5jZWxsZWQiKSx2b2lkIDA7bS51cmxbMV09Il9wdXJnZSJ9cmV0dXJuIG8obCxmKyIiKS50aGVuKGZ1bmN0aW9uKGIpe3ZhciBjPWc/Yi5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4geFthLl9pZF09W2EuX3Jldl0sInhwdXJnZSI9PWYmJihhLl9jb25mbGljdHMmJnhbYS5faWRdLmFkZChhLl9jb25mbGljdHMpLGEuX3JldnNfaW5mbyYmeFthLl9pZF0uYWRkKGEuX3JldnNfaW5mby5yZWR1Y2UoZnVuY3Rpb24oeCxhKXsiYXZhaWxhYmxlIj09YS5zdGF0dXMmJngucHVzaChhLnJldil9LFtdKSkpLHh9LHt9KTp7ZG9jczpifTtpZihnKXt2YXIgZD1be31dLGU9MDtyZXR1cm4gT2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbih4KXtjW3hdLmZvckVhY2goZnVuY3Rpb24oYSl7ZT49aSYmKGQudW5zaGlmdCh7fSksZT0wKSxkWzBdW3hdfHwoZFswXVt4XT1bXSksZFswXVt4XS5wdXNoKGEpLGUrPTF9KX0pLFEuYWxsU2V0dGxlZChkLm1hcChmdW5jdGlvbih4KXt2YXIgYj1PYmplY3QuY2xvbmUobSwhMCk7cmV0dXJuIGIuZGF0YT1KU09OLnN0cmluZ2lmeSh4KSxhLlJlcShiKS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBwKGEsT2JqZWN0LmtleXMoeCksITApfSkuZmFpbChmdW5jdGlvbih4LGEsYil7cmV0dXJuIHEoeCxhLGIsITApfSl9KSkudGhlbihmdW5jdGlvbigpe24oKSx4LnJlc29sdmUobCl9KX1yZXR1cm4gbS5kYXRhPUpTT04uc3RyaW5naWZ5KGMpLGEuUmVxKG0pLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIHAoeCxsKX0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe3JldHVybiBxKHgsYSxiLCExKX0pfSk7ZnVuY3Rpb24gbyh4LGMpe3ZhciBkPXtpbmNsdWRlX2RvY3M6Im5vIiE9YyYmInB1cmdlIiE9Yyxjb25mbGljdHM6InhwdXJnZSI9PWMscmV2c19pbmZvOiJ4cHVyZ2UiPT1jfSxlPXt1cmw6W2IucGF0aFswXSwiX2FsbF9kb2NzIixkXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOkpTT04uc3RyaW5naWZ5KHtrZXlzOnh9KX07cmV0dXJuIGEuUmVxKGUpLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIHgucm93cy5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9eC5kb2N8fHtfaWQ6eC5pZCxfcmV2OngudmFsdWUucmV2fTtyZXR1cm4gYS5fZGVsZXRlZD0hMCxhfSl9KX1mdW5jdGlvbiBwKGMsZCxpKXt2YXIgaixtPWQubGVuZ3RoO2o9Zz9PYmplY3Quc2l6ZShjLnB1cmdlZCk6Yy5jb3VudChmdW5jdGlvbih4KXtyZXR1cm4heC5lcnJvcn0pLGN3LmxpYi5ub3RlKGguTVNHX0RFTF9PSyhsLmxlbmd0aCxqLGsoYi5wYXRoWzBdKSxmLG0pLG09PWo/Im9rIjoiZXJyb3IiLDVlMyksbT5qJiZjb25zb2xlLmxvZyhjKSxlLmFkZChkKSxpfHxuKCksYi5zZWxlY3Rpb249W10sZC5mb3JFYWNoKGZ1bmN0aW9uKHgpeyJfIj09eFswXSYmYS5EZG9jc1t4XSYmZGVsZXRlIGEuRGRvY3NbeF19KSxhLm15LmNoZWNrKCIjdmlldy1uYW1lIiksaXx8eC5yZXNvbHZlKGMpfWZ1bmN0aW9uIHEoYSxiLGMsZCl7Y3cubGliLm5vdGUoaC5NU0dfREVMX0ZBSUwuYXNzaWduKGEsaihiKSksImVycm9yIiksZHx8eC5yZWplY3QoYSxiLGMpfWZ1bmN0aW9uIHIoKXskLm15LnJhZGlvKCJkYnVwZGF0ZSIse2RiOmRbMF0sY21kOiJkZWxldGUiLGRvY3M6ZX0pLCQubXkucmFkaW8oImRibGlzdCIsW2RbMF1dKSxlPVtdfX19LEVkU3dpdGNoOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YTtpZigvXihfZGVzaWduX2RvY3N8X2xvY2FsX2RvY3N8KSQvLnRlc3QoYS52aWV3KSlyZXR1cm4geC5FZGl0b3IubGVuZ3RoPTAsdm9pZCAwO2lmKCJfZCI9PWEudmlldy50bygyKSl7dmFyIGI9eC5WaVthLnZpZXddO2lmKCEoZj14LlZpRWRzKVthLnZpZXddfHxmW2Eudmlld10ucmV2IT1iLnJldil7dmFyIGM9YS52aWV3LnNwbGl0KCLvv70iKTtmW2Eudmlld109e2Rkb2M6Y1swXSxuYW1lOmNbMV0scmV2OmIucmV2LHR5cGU6InZpZXciLG1vZGU6WyJtYXAiXSxsYW5ndWFnZToianMiPT1iLnR5cGU/ImphdmFzY3JpcHQiOmIudHlwZSxtYXA6Yi52aWV3Lm1hcHx8IiIscmVkdWNlOmIudmlldy5yZWR1Y2V8fCIiLGpzb246e30sZXJyb3JzOltdLHN0YW1wOkRhdGUubm93KCl9fXguRWRpdG9yWzBdIT1mW2Eudmlld10mJih4LkVkaXRvclswXT1mW2Eudmlld10pfWVsc2UgaWYoIl9maW5kIj09YS52aWV3LnRvKDUpKXt2YXIgZD1hLm1hbmdvLGU9YS52aWV3LnNwbGl0KCLvv70iKVsxXSsiIjsoYj1kLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1lKSl8fChlPSJEZWZhdWx0IHF1ZXJ5IixiPWQucXVlcnkuZmluZCh4PT54Lm5hbWU9PWUpKSxkLmFjdGl2ZT1lLGIuc3RhbXB8fChiLnN0YW1wPURhdGUubm93KCksYi50ZXh0PXguRGVmYXVsdE1hbmdvUXJ5LnRleHQpLHguRWRpdG9yWzBdIT1iJiYoeC5FZGl0b3I9W2JdLGIuanNvbj14LmpzZXZhbChiLnRleHQpLE9iamVjdC5pc09iamVjdChiLmpzb24pfHwoYi5qc29uPXt9KSl9ZWxzZSBpZigiX3NxbCI9PWEudmlldy50byg0KSl7ZD1hLnNxbCxlPWEudmlldy5zcGxpdCgi77+9IilbMV0rIiI7KGI9ZC5xdWVyeS5maW5kKHg9PngubmFtZT09ZSkpfHwoZT0iRGVmYXVsdCBTUUwiLGI9ZC5xdWVyeS5maW5kKHg9PngubmFtZT09ZSkpLGIudHlwZT0ic3FsIixkLmFjdGl2ZT1lLGIuc3RhbXB8fChiLnN0YW1wPURhdGUubm93KCksYi50ZXh0PXguRGVmYXVsdFNxbFFyeS50ZXh0LGIuanNvbj14LkRlZmF1bHRTcWxRcnkuanNvbikseC5FZGl0b3JbMF0hPWImJih4LkVkaXRvcj1bYl0sT2JqZWN0LmlzT2JqZWN0KGIuanNvbil8fChiLmpzb249e30pKX1lbHNlIGlmKCJfaWR4Ij09YS52aWV3LnRvKDQpKXt2YXIgZjtiPXguVmlbYS52aWV3XXx8T2JqZWN0LmNsb25lKHguRGVmYXVsdE1hbmdvSWR4LCEwKTtpZighKGY9eC5WaUVkcylbYS52aWV3XXx8ZlthLnZpZXddLnJldiE9Yi5yZXYpe2M9YS52aWV3LnNwbGl0KCLvv70iKTtmW2Eudmlld109e2Rkb2M6Il9kZXNpZ24vIitjWzBdLnNwbGl0KCIvIilbMV0sbmFtZTpjWzFdLHJldjpiLnJldix0eXBlOiJpbmRleCIsbW9kZTpbImphdmFzY3JpcHQiXSx0ZXh0OmIudmlldz9iLnZpZXcuc291cmNlOmIudGV4dCxqc29uOnt9LGVycm9yczpbXSxzdGFtcDpEYXRlLm5vdygpfX14LkVkaXRvclswXSE9ZlthLnZpZXddJiYoeC5FZGl0b3JbMF09ZlthLnZpZXddKX1yZXR1cm4gYS5ncmlkJiZ4Lm15LnJlc3R5bGUoKSx4LkVkaXRvclswXX0sR2V0RGRvY3NJbmZvOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPShiLmRhdGEsYXx8W10pLGQ9eC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIE9iamVjdC5pc09iamVjdCh4KT8kLmV4dGVuZCghMCx7fSxPYmplY3QucmVqZWN0KHgsWyJpbmNsdWRlX2RvY3MiXSkpOnh9KSxlPXt9LGY9JC5EZWZlcnJlZCgpO3JldHVybiBiLlJlcSh7dXJsOmQsaGVhZGVyczp7IkNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxtZXRob2Q6Yy5sZW5ndGg/InBvc3QiOiJnZXQiLGRhdGE6Yy5sZW5ndGg/SlNPTi5zdHJpbmdpZnkoe2tleXM6Y30pOm51bGx9KS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBjPVtdOyhhLnJvd3N8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2MucHVzaChiLlJlcSh7dXJsOlt4WzBdLGEuaWQsIl9pbmZvIl0saGVhZGVyczp7IkNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifX0pKX0pLFEuYWxsU2V0dGxlZChjKS50aGVuKGZ1bmN0aW9uKHgpeyh4fHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KXtpZigiZnVsZmlsbGVkIj09eC5zdGF0ZSl7dmFyIGE9eC52YWx1ZS52aWV3X2luZGV4LGI9T2JqZWN0LnNlbGVjdChhLnNpemVzfHx7YWN0aXZlOmEuZGF0YV9zaXplfHwwLGZpbGU6YS5kaXNrX3NpemV8fDB9LFsiYWN0aXZlIiwiZmlsZSJdKTtlWyJfZGVzaWduLyIreC52YWx1ZS5uYW1lXT17dmFsdWU6e3NpemVzOmJ9LHZpZXdfaW5kZXg6YXx8e319fX0pLGYucmVzb2x2ZShlKX0pfSksZi5wcm9taXNlKCl9fSxHZXRWaWV3czpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuZGF0YSxlPU9iamVjdC5pc1N0cmluZyxmPU9iamVjdC5pc09iamVjdCxnPU9iamVjdC5pc0FycmF5LGg9KE9iamVjdC5pc0Z1bmN0aW9uLGQucGF0aFswXSksaT1baCwiX2FsbF9kb2NzIix7c3RhcnRrZXk6Il9kZXNpZ24iLGVuZGtleToiX2Rlc2lnbjAiLGluY2x1ZGVfZG9jczohMH1dLGo9Yy5EZWZhdWx0Vmlld3MoKSxrPWMubGFuZy5PUFRfTUlORElDRVMsbD1qLmZpbmQoeD0+eC50ZXh0PT1rKSxtPXt9LG49JC5EZWZlcnJlZCgpO3JldHVybiBiPyhqLnJlbW92ZShsKSxjLlZpZXdzLmZvckVhY2goZnVuY3Rpb24oeCl7IXguY2hpbGRyZW58fCJfIiE9eC50ZXh0WzBdJiYiTWFuZ28iIT14LnRleHQudG8oNSl8fGoucHVzaCh4KX0pLGMuVmlld3M9ai5zb3J0QnkoZnVuY3Rpb24oeCl7cmV0dXJuKHgub3JkZXJ8fCIiKSt4LnRleHR9KSx4JiYoYy5zZWxlY3QyKGMubXkuZmluZCgiI3ZpZXctbmFtZSIpLHtkYXRhOmosZHJvcGRvd25Dc3NDbGFzczoidGFsbCIsZm9ybWF0U2VsZWN0aW9uOmMuZm9ybWF0U2VsMixtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0pLGMubXkucmVjYWxjKCIjdmlldy1uYW1lIikpLG4ucmVzb2x2ZSgpLGopOmMuUGVuZGluZy5fdmlld2xpc3Q/KG4ucmVzb2x2ZSgpLGMuUGVuZGluZy5fdmlld2xpc3QpOihjLlBlbmRpbmcuX3ZpZXdsaXN0PW4ucHJvbWlzZSgpLGMuUmVxKGkpLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9eC5yb3dzfHxbXTtpZighYS5sZW5ndGgmJiJfZmluZCIhPWQudmlldy50byg1KSlyZXR1cm4gYy5jaGFuZ2VWaWV3KCIiLCEwKSx2b2lkIDA7YS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXguZG9jO2lmKGEpe3ZhciBiPWEudmlld3N8fHt9LGQ9YS5fcmV2LGk9T2JqZWN0LmtleXMoYiksaz17dGV4dDp4LmlkLGNoaWxkcmVuOltdfSxuPWUoYS5sYW5ndWFnZSk/YS5sYW5ndWFnZToiamF2YXNjcmlwdCI7Yy5EZG9jc1thLl9pZF0mJmMuRGRvY3NbYS5faWRdLl9yZXY9PWEuX3Jldnx8KGMuRGRvY3NbYS5faWRdPSQuZXh0ZW5kKCEwLHt9LGEpKSxpLmxlbmd0aCYmKGkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1iW2FdO2lmKCJxdWVyeSIhPW4pe2lmKCFmKGMpfHwhZShjLm1hcCl8fCFjLm1hcClyZXR1cm47dmFyIGk9e2lkOnI9eC5pZCsi77+9IithLHRleHQ6IsKgwqAiK2F9LGo9e3BhdGg6W2gsIl9kZXNpZ24iLHguaWQuc3BsaXQoIi8iKVsxXSwiX3ZpZXciLGFdLHJldjpkLHJlZHVjZTohMSx0eXBlOiJqcyJ9OyJqYXZhc2NyaXB0IiE9biYmKGoudHlwZT1uLGkudGV4dCs9IsKgKCIrbi50aXRsZWl6ZSgpKyIpIiksai52aWV3PU9iamVjdC5jbG9uZShjLCEwKTt2YXIgbz1jLnJlZHVjZSxwPSIiLHE9IiI7ZShvKSYmbyYmKCJfIj09b1swXSYmKHA9by5mcm9tKDEpKSwocT0ic3VtIj09cD8izqMiOiJjb3VudCI9PXA/IiMiOiJtaW4iPT1wPyLiirsiOiJtYXgiPT1wPyLiirwiOiJzdGF0cyI9PXA/Ij0iOiJzdW1zcXIiPT1wPyLOo8KyIjoicmVkdWNlIikmJihpLnRleHQrPSLigInih5LigIkiK3Esai5yZWR1Y2U9ITApKSxrLmNoaWxkcmVuLnB1c2goaSksbVtyXT1qfWVsc2UgaWYobCYmInF1ZXJ5Ij09bil7aWYoIShmKGMpJiZmKGMubWFwKSYmZihjLm1hcC5maWVsZHMpJiZmKGMub3B0aW9ucykmJmYoYy5vcHRpb25zLmRlZikmJmcoYy5vcHRpb25zLmRlZi5maWVsZHMpKSlyZXR1cm47dmFyIHIscz14LmlkLnNwbGl0KCIvIilbMV07aT17aWQ6cj0iX2lkeC8iK3MrIu+/vSIrYSx0ZXh0OiLCoMKgIithKyLCoGluwqBfZC8iK3Msb3JkZXI6Il8xIn07KGo9e3BhdGg6W2gsIl9kZXNpZ24iLHguaWQuc3BsaXQoIi8iKVsxXSwiX3ZpZXciLGFdLHJldjpkLHJlZHVjZTohMSx0eXBlOiIifSkudmlldz1PYmplY3QuY2xvbmUoYywhMCk7dmFyIHQ9Yy5vcHRpb25zLmRlZjtqLnZpZXcuc291cmNlPVsiKHsiLCJcblx0aW5kZXg6IHsiLCJcblx0XHRmaWVsZHM6IFt7MX1dIix0LnBhcnRpYWxfZmlsdGVyX3NlbGVjdG9yPyIsXG5cdFx0cGFydGlhbF9maWx0ZXJfc2VsZWN0b3I6ICIrSlNPTi5zdHJpbmdpZnkodC5wYXJ0aWFsX2ZpbHRlcl9zZWxlY3RvcixudWxsLCJcdCIpLmxpbmVzKCkubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJuKGE/Ilx0XHQiOiIiKSt4fSkuam9pbigiXG4iKToiIiwnXG5cdH0sXG5cdG5hbWU6IHsyfSxcblx0ZGRvYzogezN9LFxuXHR0eXBlOiAianNvbiInLCJcbn0pIl0uam9pbigiIikuYXNzaWduKHQuZmllbGRzLm1hcChKU09OLnN0cmluZ2lmeSkuam9pbigiLCAiKSxKU09OLnN0cmluZ2lmeShhKSxKU09OLnN0cmluZ2lmeSh4LmlkLnNwbGl0KCIvIikuZnJvbSgxKS5qb2luKCIvIikpKSxtW3JdPWosbC5jaGlsZHJlbi5wdXNoKGkpfX0pLGsuY2hpbGRyZW4ubGVuZ3RoJiYoay5jaGlsZHJlbj1rLmNoaWxkcmVuLnNvcnRCeSgidGV4dCIpLGoucHVzaChrKSkpfX0pLGo9ai5zb3J0QnkoZnVuY3Rpb24oeCl7cmV0dXJuKHgub3JkZXJ8fCIiKSt4LnRleHR9KSxsJiYobC5jaGlsZHJlbj1sLmNoaWxkcmVuLnNvcnRCeShmdW5jdGlvbih4KXtyZXR1cm4oeC5vcmRlcnx8IiIpK3gudGV4dH0pKX0pLmZhaWwoZnVuY3Rpb24oeCxiLGQpe2F8fGN3LmxpYi5ub3RlKGMubGFuZy5FUlJfR0VUVklFV1MuYXNzaWduKGgpLCJlcnJvciIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5QZW5kaW5nLl92aWV3bGlzdD1udWxsLGMuVmlld3M9aixjLlZpPW0sIWQudmlld3x8bVtkLnZpZXddfHwiX2ZpbmQiPT1kLnZpZXcudG8oNSl8fCJfc3FsIj09ZC52aWV3LnRvKDQpfHwvXl8oZGVzaWduX2RvY3N8bG9jYWxfZG9jc3xjaGFuZ2VzfGNvbmZsaWN0cykkLy50ZXN0KGQudmlldyl8fGMuY2hhbmdlVmlldygiIiwhMCkseCYmKGMuc2VsZWN0MihjLm15LmZpbmQoIiN2aWV3LW5hbWUiKSx7ZGF0YTpqLGRyb3Bkb3duQ3NzQ2xhc3M6InRhbGwiLGZvcm1hdFNlbGVjdGlvbjpjLmZvcm1hdFNlbDIsbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KSxjLm15LnJlY2FsYygiI3ZpZXctbmFtZSIpLGMubXkuY2hlY2soIiN2aWV3LW5hbWUiKSksbi5yZXNvbHZlKGopfSksbi5wcm9taXNlKCkpfSxHZXRWaWV3OmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz1PYmplY3QuaXNBcnJheSxkPU9iamVjdC5pc09iamVjdCxlPUpTT04uc3RyaW5naWZ5LGY9Y3cubGliLmpzb24sZz10aGlzLGg9Zy5kYXRhLGk9aC5wYXRoWzBdLGo9e2xpbWl0OjEwMCx1cGRhdGVfc2VxOiEwfSxrPWgudmlldyxsPWcuVmlbaC52aWV3XT9nLlZpW2gudmlld10ucGF0aC5zbGljZSgwKTpbaSxoLnZpZXcrIiJ8fCJfYWxsX2RvY3MiXSxtPSJnZXQiLG49e30sbz0iX2ZpbmQiPT1rLnRvKDUpLHA9Il9zcWwiPT1rLnRvKDQpLHE9Il9pZHgiPT1rLnRvKDQpLHI9Il9kZXNpZ25fZG9jcyI9PWsscz0iX2xvY2FsX2RvY3MiPT1rLHQ9Il9jaGFuZ2VzIj09ayx1PSJfY29uZmxpY3RzIj09ayx2PWMoYSkmJiFvP2Euc2xpY2UoMCk6W10sdz0hIXYubGVuZ3RoLHk9bnVsbCx6PSgkLkRlZmVycmVkKCksW10pLEE9e30sQj17fSxDPSExLEQ9KGcuSW5kZXgsIiIpLEU9MCxGPTAsRz0zMCxIPTcwO2Z1bmN0aW9uIEkoKXtpZihoLmdyaWQmJiFyJiYhdSYmIXQpe3ZhciB4PWguY29sdW1ucysiIjt4JiYiLnZhbHVlIiE9eCYmIi5kb2MiIT14fHwoaC5jb2x1bW5zPWcuZGVyaXZlR3JpZENvbHVtbnMoKSksZy5idWlsZEdyaWRDb2x1bW5zKCl9aC5ncmlkPyhnLm15LnJlY2FsYygiI3ZpZXctZ3JpZC1jb2xzIiksZy5teS5jaGVjaygiI3ZpZXctZ3JpZC1jb2xzIiksZy5teS5jaGVjay5kZWxheSgyMCwiI2dyaWQtcHJveHkiKSxnLm15LnJlc3R5bGUuZGVsYXkoMTApKTooZy5teS5jaGVjaygiI3N0YXRlLXByb3h5IiksZy5teS5yZXN0eWxlKCkpfXZhciBKPWw7aWYociYmKGcuUGhvKFsiQ291Y2giLCJ2ZXIiXSk8IjAwMi4wMDAiJiYobFsxXT0iX2FsbF9kb2NzIixqW2gucmV2ZXJzZT8iZW5ka2V5Ijoic3RhcnRrZXkiXT0iX2Rlc2lnbi8iLGpbaC5yZXZlcnNlPyJzdGFydGtleSI6ImVuZGtleSJdPSJfZGVzaWduMCIpLGouaW5jbHVkZV9kb2NzPSEwKSx1KXc9ITEsbFsxXT0iX2ZpbmQiLG09InBvc3QiLG49e25hbWU6IkNvbmZsaWN0cyIsanNvbjp7c2VsZWN0b3I6e19jb25mbGljdHM6eyRleGlzdHM6ITB9fSxjb25mbGljdHM6ITAsZmllbGRzOlsiX2lkIiwiX3JldiIsIl9jb25mbGljdHMiLCJ0eXBlIiwibmFtZSJdfX0seT1lKCQuZXh0ZW5kKCEwLHt9LHtsaW1pdDpNYXRoLmFicygraC5saW1pdCkrMSxza2lwOi9eX1xkKyQvLnRlc3QoaC5zdGFydCk/K2guc3RhcnQuZnJvbSgxKTowfSxuLmpzb24pKSxqPXt9O2Vsc2UgaWYob3x8cCl3PSExLGxbMV09Il9maW5kIixtPSJwb3N0IixuPWcuRWRpdG9yWzBdfHxoW3A/InNxbCI6Im1hbmdvIl0ucXVlcnkuZmluZCh4PT54Lm5hbWU9PWsuZnJvbSg2KSl8fGhbcD8ic3FsIjoibWFuZ28iXS5xdWVyeS5maW5kKHg9PngubmFtZT09IkRlZmF1bHQgIisocD8iU1FMIjoicXVlcnkiKSkseT1lKCQuZXh0ZW5kKCEwLHt9LHtsaW1pdDpNYXRoLmFicygraC5saW1pdCkrMSxza2lwOi9eX1xkKyQvLnRlc3QoaC5zdGFydCk/K2guc3RhcnQuZnJvbSgxKTowfSxuLmpzb24pKSxqPXt9O2Vsc2V7aWYoaC5yZXZlcnNlXnQmJiF3JiYoai5kZXNjZW5kaW5nPSEwKSxqLmxpbWl0PU1hdGguYWJzKCtoLmxpbWl0KSsxLGguc3RhcnQpaWYoL15fXGQrJC8udGVzdChoLnN0YXJ0KSlqLnNraXA9K2guc3RhcnQuc3Vic3RyKDEpfHwwO2Vsc2V7dHJ5e2I9SlNPTi5wYXJzZShoLnN0YXJ0KX1jYXRjaCh4KXt9ai5zdGFydGtleT12b2lkIDAhPT1iP2I6aC5zdGFydH0oIWt8fHMpJiYoaC5pbmNsfHxbXSkuaW5kZXhPZigiZG9jcyIpPi0xJiYoai5pbmNsdWRlX2RvY3M9ITApLHQmJihqLnN0eWxlPSJhbGxfZG9jcyIsZGVsZXRlIGoudXBkYXRlX3NlcSxqLnN0YXJ0a2V5JiYoai5zaW5jZT1qLnN0YXJ0a2V5LGRlbGV0ZSBqLnN0YXJ0a2V5KSksIXEmJmcuVmlba10mJmcuVmlba10ucmVkdWNlPyhEPWgucmVkdWNlKyIiKT8iMCI9PUQ/ai5ncm91cD0hMToiOTkiPT1EP2ouZ3JvdXA9ITA6ai5ncm91cF9sZXZlbD0rRDpqLnJlZHVjZT0hMTpxJiYoai5yZWR1Y2U9ITEsIl9pZHgv77+9Ij09ay50byg2KSYmKGxbMV09Il9hbGxfZG9jcyIpKSxqLnJlZHVjZSYmKHc9ITEpLHcmJihtPSJwb3N0Iix5PWUoe2tleXM6di5zb3J0KCkudW5pcXVlKCl9KSxkZWxldGUgai5zdGFydGtleSxkZWxldGUgai5lbmRrZXksZGVsZXRlIGouc2tpcCl9dmFyIEs9Si5jb25jYXQoW2pdKSxMPWUoSyk7aWYoaC5ncmlkJiZnLmNsb3NlQXV0b2NvbXBsZXRlcygpLCFnLlBlbmRpbmdbTF0pe1MuZGVsYXkoODAsITApLGguZHVyPTAsaC5zaXplPTA7dmFyIE09JC5EZWZlcnJlZCgpO3oucHVzaChNLnByb21pc2UoKSksTS5yZXNvbHZlLmRlbGF5KEgpLEU9RGF0ZS5ub3coKSx6LnB1c2goZy5SZXEoe3VybDpLLGhlYWRlcnM6eyJDb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sbWV0aG9kOm0sZGF0YTp5LGRhdGFUeXBlOiJ0ZXh0In0pLnRoZW4oZnVuY3Rpb24oeCl7aC5kdXI9RGF0ZS5ub3coKS1FLEY9dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHgpKS5sZW5ndGgsQj1KU09OLnBhcnNlKHgpfSkuZmFpbChmdW5jdGlvbih4LGEsYil7aC5kdXI9RGF0ZS5ub3coKS1FLEI9e2NvZGU6eCxlcnI6YSxtc2c6Yn19KSksciYmei5wdXNoKGcuR2V0RGRvY3NJbmZvKEssdz92Om51bGwpLnRoZW4oZnVuY3Rpb24oeCl7QT14fSkpLGcuUGVuZGluZ1tMXT1RLmFsbFNldHRsZWQoeikudGhlbihmdW5jdGlvbihhKXtpZihnLlBlbmRpbmdbTF09bnVsbCxoLnNpemU9RiwiZnVsZmlsbGVkIiE9YVsxXS5zdGF0ZSlyZXR1cm4gZy5SZXN1bHRbMF09e3Jvd3M6W10sdXJsOkwsY29kZTpCLmNvZGUsc3RhbXA6RGF0ZS5ub3coKSsiIixvazohMSxlcnJvcjpCLmVycixtc2c6Qi5tc2d9LGcuUm93cz1bXSxnLkVycm9yPSJFcnJvciAiK0IuY29kZSsiOiAiK0IuZXJyKyhCLm1zZy5lcnJvcj8iLCAiK0IubXNnLmVycm9yOiIiKSx4JiZJLmRlbGF5KEcpLGcuUmVzdWx0WzBdO2lmKGcuRXJyb3I9IiIsZy5GaWVsZHM9W10sZy5SZXN1bHRbMF09T2JqZWN0LmNsb25lKEIsITApLG98fHV8fHA/UihCKTpxP1AoQik6dD9PKEIpOk4oQiksciYmQi5yb3dzKXt2YXIgYj17fTtCLnJvd3MuZm9yRWFjaCh4PT5iW3guaWRdPXgudmFsdWUpLGcuUmVzdWx0WzBdLnJvd3MuZm9yRWFjaChmdW5jdGlvbih4KXtiW3guaWRdJiYoeC52YWx1ZT1PYmplY3QucmVqZWN0KGJbeC5pZF0sL15fLykpfSl9Zy5pc0VtcHR5PSFnLlJvd3MubGVuZ3RoLCFoLmdyaWR8fHR8fHJ8fHV8fGcuYnVpbGRGaWVsZHNMaXN0KCkseCYmKGcubXkuZmluZCgiI2J0bi12aWV3Y29kZSIpLmRhdGEoIm1vZGFsIikmJmcubXkubW9kYWwoIiNidG4tdmlld2NvZGUiLCEwKSxJLmRlbGF5KEcpKX0pLnRoZW4oeD0+Uy5kZWxheSgoSC05LURhdGUubm93KCkrRSkuY2xhbXAoMSxIKSwhMSkpfXJldHVybiBnLlBlbmRpbmdbTF07ZnVuY3Rpb24gTih4KXt4LnN0YW1wPURhdGUubm93KCkrIiIseC51cmw9SisiIixoLnRvdGFsX3Jvd3M9eC50b3RhbF9yb3dzfHwtMSxoLm9mZnNldD14Lm9mZnNldHx8LTEsaC5zZXE9KHgudXBkYXRlX3NlcXx8RGF0ZS5ub3coKSkrIiI7dmFyIGE9WyJmaWx0ZXJzIiwidmlld3MiLCJsaXN0cyIsInNob3dzIiwiYXBpIiwiaG9va3MiLCJyZXdyaXRlcyIsInNpemVzIl07cmV0dXJuIHgucm93cy5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7ciYmaih4KSx4Ll92anNvbj1mKE9iamVjdC5yZWplY3QoeCxyP1sia2V5IiwiZG9jIl06WyJrZXkiXSksIiAgIikuZnJvbSgyKSx4Ll9ranNvbj0ne1xuICAia2V5IjogJytlKHgua2V5KSsiLFxuIix4Ll9pZHg9ZShbeC5rZXkseC5pZCxhXSkseC5faWR4c2FmZT14Ll9pZHguZXNjYXBlSFRNTCgpfSksZy5Sb3dzPXc/aSh4LnJvd3N8fFtdLGcuUm93cyk6KHgucm93c3x8W10pLnNsaWNlKDApLGgubGluaz1nLlJlcShLLCEwKSx4O2Z1bmN0aW9uIGIoeCl7cmV0dXJuInsxfSBMT0MsIHsyfSBjaGFycyIuYXNzaWduKHgubGluZXMoKS5sZW5ndGgseC5sZW5ndGgpfWZ1bmN0aW9uIGkoeCxhKXt2YXIgYj14LnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2UoYS5rZXkpKyJcbiIrZShhLmlkKV09YSx4fSx7fSk7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPWJbZSh4LmtleSkrIlxuIitlKHguaWQpXTtyZXR1cm4gdm9pZCAwIT09YT9hOnh9KX1mdW5jdGlvbiBqKHgpe3ZhciBlPXgudmFsdWUucmV2O3guZGVzYz0iTGlzdCBvZiBkZG9jIGZ1bmN0aW9ucyIseC5sYW5ndWFnZT14LmRvYy5sYW5ndWFnZXx8ImphdmFzY3JpcHQiLHgudmFsdWU9JC5leHRlbmQoe3JldjplfSxPYmplY3Quc2VsZWN0KHguZG9jLGEpKSxhLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9eC52YWx1ZVthXTsic3RyaW5nIj09dHlwZW9mIGU/eC52YWx1ZVthXT1iKGUpOmMoZSk/eC52YWx1ZVthXT0iQXJyYXlbezF9XSIuYXNzaWduKGUubGVuZ3RoKTpkKGUpJiYidmlld3MiPT1hP3gudmFsdWVbYV09T2JqZWN0LmtleXMoeC52YWx1ZVthXSkucmVkdWNlKGZ1bmN0aW9uKGMsZSl7dmFyIGY9eC52YWx1ZVthXVtlXSxnPWYubWFwLGg9Zi5yZWR1Y2U7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBnPyhjW2VdPSJNYXA6ICIrYihnKSwic3RyaW5nIj09dHlwZW9mIGgmJihjW2VdKz0iOyBSZWR1Y2U6ICIrKCJfIj09aFswXT9oOmIoaCkpKSk6InF1ZXJ5Ij09eC5sYW5ndWFnZSYmZChnKSYmKGNbZV09Ik1hbmdvIGluZGV4IixkKGcuZmllbGRzKSYmKGNbZV0rPSIsIGZpZWxkczogIitPYmplY3Qua2V5cyhnLmZpZWxkcykuam9pbigiLCAiKSkpLGN9LHt9KTpkKGUpJiYoeC52YWx1ZVthXT1PYmplY3Qua2V5cyh4LnZhbHVlW2FdKS5yZWR1Y2UoZnVuY3Rpb24oYyxkKXt2YXIgZT14LnZhbHVlW2FdW2RdO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGNbZF09YihlKSksY30se30pKX0pLCQuZXh0ZW5kKCEwLHgsQVt4LmlkXXx8e30pfX1mdW5jdGlvbiBPKHgpe3guc3RhbXA9RGF0ZS5ub3coKSsiIix4LnVybD1KKyIiLGgudG90YWxfcm93cz0tMSxoLm9mZnNldD14Lm9mZnNldHx8LTEsaC5zZXE9eC5sYXN0X3NlcSsiIjt2YXIgYT14LnJlc3VsdHMubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJue2lkOnguaWQsa2V5OnguaWQsdmFsdWU6JC5leHRlbmQoeC5kZWxldGVkP3tkZWxldGVkOiEwfTp7fSx7c2VxOih4LnNlcSsiIikuc3BsaXQoIi0iKVswXSxyZXY6eC5jaGFuZ2VzWzBdLnJldn0pLF92anNvbjpmKHgsIiAgIikuZnJvbSgxKSxfa2pzb246InsiLF9pZHg6ZSh4LmlkKSxfaWR4c2FmZTplKHguaWQpLmVzY2FwZUhUTUwoKSxfZGVsOnguZGVsZXRlZD94LmNoYW5nZXNbMF0ucmV2OiIifX0pO3JldHVybiBnLlJvd3M9KGF8fFtdKS5zbGljZSgwKSxoLmxpbms9Zy5SZXEoSywhMCkseH1mdW5jdGlvbiBQKHgpe3JldHVybiB4LnN0YW1wPURhdGUubm93KCkrIiIseC51cmw9SisiIixoLnRvdGFsX3Jvd3M9eC50b3RhbF9yb3dzfHwtMSxoLm9mZnNldD14Lm9mZnNldHx8LTEsaC5zZXE9KHgudXBkYXRlX3NlcXx8RGF0ZS5ub3coKSkrIiIseC5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCxhKXt4Ll92anNvbj1mKHgsIiAgIikuZnJvbSgyKSx4Ll9ranNvbj0ie1xuIix4Ll9pZHg9ZShbeC5rZXkseC5pZCxhXSkseC5faWR4c2FmZT14Ll9pZHguZXNjYXBlSFRNTCgpfSksZy5Sb3dzPSh4LnJvd3N8fFtdKS5zbGljZSgwKSxoLmxpbms9Zy5SZXEoSywhMCkseH1mdW5jdGlvbiBSKHgpe3guc3RhbXA9RGF0ZS5ub3coKSsiIix4LnVybD1KKyIiLGgudG90YWxfcm93cz0tMSxoLm9mZnNldD1uLnNraXB8fC0xLGguc2VxPSh4LnVwZGF0ZV9zZXF8fERhdGUubm93KCkpKyIiO3ZhciBhPS9eX1xkKyQvLnRlc3QoaC5zdGFydCk/K2guc3RhcnQuZnJvbSgxKTowLGI9eC5kb2NzLm1hcChmdW5jdGlvbih4LGIpe3ZhciBjPXguX2lkPyhpKyIvIit4Ll9pZCkuZXNjYXBlSFRNTCgpOiIiO3JldHVybntpZDphK2IrIiIsa2V5OmErYisiIix2YWx1ZTp4LGhyZWY6Yyxfdmpzb246Zih4LCIgICIpLmZyb20oMSksX2tqc29uOiJ7IixfaWR4OmUoW2ErYl0pLF9pZHhzYWZlOmUoW2ErYl0pLmVzY2FwZUhUTUwoKSxfaGFzdXJsOmM/ImJ0bi1vcGVuLWRvYyBwc2V1ZG9saW5rIHRkbiI6IiJ9fSk7cmV0dXJuIGcuUm93cz0oYnx8W10pLnNsaWNlKDApLGgubGluaz1nLlJlcShLLCEwKSx4fWZ1bmN0aW9uIFMoeCl7KHgmJiFDfHwheCkmJihnLm15JiZnLm15LnJvb3QoKS50b2dnbGVDbGFzcygiYXBwLWJ1c3kiLHgpLCQubXkucmFkaW8oImFwcGJ1c3kiLHtpZDpoLnRhYmlkLGJ1c3k6eH0pKSxDPSEwfX0sR3JpZENvbHVtbjpmdW5jdGlvbigpe3ZhciB4PXRoaXM7cmV0dXJue1JUOnguUlQsdXBkYXRlR3JpZEZyb21Db2x1bW5zOngudXBkYXRlR3JpZEZyb21Db2x1bW5zLGlkOiJjdy5QaG90b24uJHZpZXcuR3JpZENvbHVtbiIsZGF0YTp7aWQ6IiIscmF3OiIiLGNvbHM6Ii5pZCIsY2FzdDoiIn0sdWk6eyIuZ3JpZC1jb2x1bW4tcHRyIjp7ZGVsYXk6MTAsaW5pdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzO2Z1bmN0aW9uIGMoYSxiKXt4Lm15LmZpbmQoIi5ncmlkLWNvbHVtbi1wdHIiKS50cmlnZ2VyKCJibHVyIil9ZnVuY3Rpb24gZChhLGMpe2lmKCFhLnRlcm0pcmV0dXJuIGMoYi5GaWVsZHMoKSk7dmFyIGQ9Yi5GaWVsZHMoKTtpZigvXHNcL1thLXowLTldezAsNn0kLy50ZXN0KGEudGVybSkpe3ZhciBlPWEudGVybS5yZXBsYWNlKC9cc1wvW2EtejAtOV17MCw2fSQvLCIiKSxmPXguUlQoKS5GLkdyaWRDYXN0O2MoW2RbMF1dLmNvbmNhdChPYmplY3Qua2V5cyhmKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2xhYmVsOiIvIit4LHZhbHVlOmUrIiAvIit4fX0pKSl9ZWxzZXt2YXIgZz1uZXcgUmVnRXhwKFJlZ0V4cC5lc2NhcGUoYS50ZXJtKSwiaSIpO2MoW2RbMF1dLmNvbmNhdChkLnNsaWNlKDEpLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4gZy50ZXN0KHgudmFsdWUpfSkpKX19YS5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOmQsc2VsZWN0OmMuZGVib3VuY2UoMjApLGFwcGVuZFRvOngubXkucm9vdCgpLG1pbkxlbmd0aDowfSksYS5vbigia2V5dXAubXkiLGZ1bmN0aW9uKHgpe3ZhciBiPXgua2V5Q29kZTsxMyE9YiYmMTAhPWJ8fGEuYmx1cigpfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD0hMTtpZihudWxsIT1hKXt2YXIgZT14LmNvbHM7L1xzXC9bYS16XVthLXowLTldezAsNX0kLy50ZXN0KGEpP3guY2FzdD1hLm1hdGNoKC9cc1wvW2Etel1bYS16MC05XXswLDV9JC8pWzBdLnN1YnN0cigyKTp4LmNhc3Q9IiIseC5jb2xzPWEsYi5hdHRyKCJ0aXRsZSIseC5jb2xzLmxlbmd0aD44P3guY29sczoiIiksZD1lIT1hfXJldHVybiLigIwiPT14LmNvbHMmJmMubXkucmVtb3ZlLmRlbGF5KDEwKSxkJiZjLnVwZGF0ZUdyaWRGcm9tQ29sdW1ucy5kZWxheSg1MSkseC5jb2xzfX0sIiNidG4tZm9sZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5teS5maW5kKCIuZ3JpZC1jb2x1bW4tcHRyIiksZD1jLmF1dG9jb21wbGV0ZSgid2lkZ2V0IikuaXMoIjp2aXNpYmxlIik7cmV0dXJuIG51bGwhPWEmJihkP2MuYXV0b2NvbXBsZXRlKCJjbG9zZSIpOihjLmF1dG9jb21wbGV0ZSgic2VhcmNoIiwiIiksYi5SVCgiY2xvc2VBdXRvY29tcGxldGVzIikoYykpLGQ9IWQpLCc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+Jy5hc3NpZ24oZD8iYXVwIjoiYWRvd24iKX0sZXZlbnRzOiJjbGljay5teSIsd2F0Y2g6WyIuZ3JpZC1jb2x1bW4tcHRyIl19fSxGaWVsZHM6ZnVuY3Rpb24oKXt2YXIgYT14LmJ1aWxkRmllbGRzTGlzdCgpO3JldHVybiB4LkNvbHVtbnMubGVuZ3RoPDImJihhPWEuc2xpY2UoMSkpLGF9LGRpZTpmdW5jdGlvbih4KXt4LmZpbmQoIi5ncmlkLWNvbHVtbi1wdHIiKS5hdXRvY29tcGxldGUoImRlc3Ryb3kiKX19fSxUOnt2aWV3X25vaWQ6JzxkaXYgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PGRpdiBjbGFzcz0iY29sLWlkcyI+e2ppZHNhZmV9PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciBwc2V1ZG9saW5rIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWhvdmVyYnRuIHtub2RvY30gcHNldWRvbGluayI+PHNwYW4gY2xhc3M9ImZpLXBhZ2UtZmlsbGVkIGJ0bi1vcGVuLWRvYyIgZGF0YS11cmw9IntocmVmfSI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNvbC12YWxzIHtjc3N9Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSI+e2h0bWx9PC9kaXY+PC9kaXY+PC9kaXY+Jyx2aWV3Oic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB2YXQgdGFjIG1sNCBtcjEgbXQ4IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2RvY2lkc2FmZX0iPjxkaXYgY2xhc3M9ImNvbC1pZHMgdzM1cC0zMCBwbDAiPjxzcGFuIGNsYXNzPSJsYmw0Y2hlY2siPntqaWRzYWZlfTwvc3Bhbj48ZGl2IGNsYXNzPSJ2aWV3LXRvZmlsdGVyIHBzZXVkb2xpbmsgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctaG92ZXJidG4ge25vZG9jfSBwc2V1ZG9saW5rIj48c3BhbiBjbGFzcz0iZmktcGFnZS1maWxsZWQgYnRuLW9wZW4tZG9jIiBkYXRhLXVybD0ie2hyZWZ9Ij48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1lZGl0dXNlciB2aWV3LWhvdmVyYnRuIHBzZXVkb2xpbmsiIGRhdGEtdXNlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS10b3JzbyBmczExMCI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNvbC12YWxzIHtjc3N9Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSI+e2h0bWx9PC9kaXY+PC9kaXY+PC9kaXY+Jyx2aWV3X2ZpbHRlcl9ub2lkOic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjxkaXYgY2xhc3M9ImNvbC1pZHMiPjxzcGFuIGNsYXNzPSJsYmw0Y2hlY2siPntpZHNhZmVmaWx0ZXJ9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgcHNldWRvbGluayB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1ob3ZlcmJ0biB7bm9kb2N9IHBzZXVkb2xpbmsiPjxzcGFuIGNsYXNzPSJmaS1wYWdlLWZpbGxlZCBidG4tb3Blbi1kb2MiIGRhdGEtdXJsPSJ7aHJlZn0iPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdmFscyB7Y3NzfSI+PGRpdiBjbGFzcz0iY29sLXRyaW0iPntodG1sfTwvZGl2PjwvZGl2PjwvZGl2Picsdmlld19maWx0ZXI6JzxkaXYgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PGlucHV0IGNsYXNzPSJ3MjMgZGliIHZhdCB0YWMgbWw0IG1yMSBtdDgiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkb2NzLXNlbGVjdGlvbiIge2NoZWNrZWR9IHZhbHVlPSJ7ZG9jaWRzYWZlfSI+PGRpdiBjbGFzcz0iY29sLWlkcyB3MzVwLTMwIHBsMCI+PHNwYW4gY2xhc3M9ImxibDRjaGVjayI+e2lkc2FmZWZpbHRlcn08L3NwYW4+PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciBwc2V1ZG9saW5rIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWhvdmVyYnRuIHtub2RvY30gcHNldWRvbGluayI+PHNwYW4gY2xhc3M9ImZpLXBhZ2UtZmlsbGVkIGJ0bi1vcGVuLWRvYyIgZGF0YS11cmw9IntocmVmfSI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNvbC12YWxzIHtjc3N9Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSI+e2h0bWx9PC9kaXY+PC9kaXY+PC9kaXY+JyxtYW5nbzonPGRpdiBjbGFzcz0idmlldy1yb3ciIGRhdGEta2V5PSJ7X2lkeHNhZmV9Ij48ZGl2IGNsYXNzPSJjb2wtaWRzIHtfaGFzdXJsfSIgZGF0YS11cmw9IntocmVmfSI+e2ppZHNhZmV9PC9kaXY+PGRpdiBjbGFzcz0iY29sLXZhbHMge2Nzc30iPjxkaXYgY2xhc3M9ImNvbC10cmltIj57aHRtbH08L2Rpdj48L2Rpdj48L2Rpdj4nLGRvY3M6JzxkaXYgY2xhc3M9IncxMDBwIHZpZXctcm93Ij48aW5wdXQgY2xhc3M9IncyMyBkaWIgdGFjIG1sNCBtcjEgbXQ4IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2lkc2FmZX0iPjxkaXYgY2xhc3M9InczOHAtMzAgcHIxMiBwdDMiPjxzcGFuIGNsYXNzPSJidG4tb3Blbi1kb2MgcHNldWRvbGluayB0ZG4gbGJsNGNoZWNrIiBkYXRhLXVybD0ie2hyZWZ9Ij57amlkc2FmZX08L3NwYW4+PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIG81MCBibHVlIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1lZGl0dXNlciB2aWV3LWhvdmVyYnRuIiBkYXRhLXVzZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktdG9yc28gbzUwIGZzMTEwIGJsdWUiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3NjJwIHByMTAgcGwzIHB0MyI+e3Jldn08L2Rpdj48L2Rpdj4nLGRlc2lnbl9kb2NzOic8ZGl2IGNsYXNzPSJ3MTAwcCB2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB2YXQgdGFjIG1sNCBtcjEgbXQ4IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2lkc2FmZX0iPjxkaXYgY2xhc3M9ImNvbC1pZHMgdzM1cC0zMCBwcjIwIHBsMCI+PHNwYW4gY2xhc3M9ImJ0bi1vcGVuLWRvYyBsYmw0Y2hlY2sgcHNldWRvbGluayB0ZG4iIGRhdGEtdXJsPSJ7aHJlZn0iPntqaWRzYWZlfTwvc3Bhbj48ZGl2IGNsYXNzPSJ2aWV3LXRvZmlsdGVyIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIgbzUwIGJsdWUiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdmFscyB7Y3NzfSI+PGRpdiBjbGFzcz0iY29sLXRyaW0iPntodG1sfTwvZGl2PjwvZGl2PjwvZGl2PicsdXNlcl9kb2NzOic8ZGl2IGNsYXNzPSJ3MTAwcCB2aWV3LXJvdyBwdDMiPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB0YWMgbWw0IG1yMSBwdDIiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkb2NzLXNlbGVjdGlvbiIge2NoZWNrZWR9IHZhbHVlPSJ7aWRzYWZlfSI+PGRpdiBjbGFzcz0idzM4cC0zMCBwcjIwIj48c3BhbiBjbGFzcz0iYnRuLW9wZW4tZG9jIGxibDRjaGVjayBwc2V1ZG9saW5rIHRkbiIgZGF0YS11cmw9IntocmVmfSI+e2ppZHNhZmV9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciBvNTAgYmx1ZSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctZWRpdHVzZXIgdmlldy1ob3ZlcmJ0biIgZGF0YS11c2VyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLXRvcnNvIG81MCBmczExMCBibHVlIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idzYycCBwcjEwIj57cmV2fTwvZGl2PjwvZGl2PicsZ3JpZF92aWV3Oic8dHIgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PHRkIGNsYXNzPSJnY29sdzAiPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB2YXQgdGFjIG1sNCBtcjEgbXQ5IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2RvY2lkc2FmZX0iPjxkaXYgY2xhc3M9IncxMDBwLTMwIGRpYiI+PHNwYW4gY2xhc3M9ImxibDRjaGVjayI+e2lkc2FmZWZpbHRlcn08L3NwYW4+PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciBwc2V1ZG9saW5rIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWhvdmVyYnRuIHtub2RvY30gcHNldWRvbGluayI+PHNwYW4gY2xhc3M9ImZpLXBhZ2UtZmlsbGVkIGJ0bi1vcGVuLWRvYyIgZGF0YS11cmw9IntocmVmfSI+PC9zcGFuPjwvZGl2PjwvZGl2PjwvdGQ+e2NvbHVtbnN9PC90cj4nLGdyaWRfZG9jOic8dHIgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PHRkIGNsYXNzPSJnY29sdzAiPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB2YXQgdGFjIG1sNCBtcjEgbXQ5IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2RvY2lkc2FmZX0iPjxkaXYgY2xhc3M9IncxMDBwLTMwIGRpYiI+PHNwYW4gY2xhc3M9ImJ0bi1vcGVuLWRvYyBsYmw0Y2hlY2sgcHNldWRvbGluayB0ZG4iIGRhdGEtdXJsPSJ7aHJlZn0iPntpZHNhZmVmaWx0ZXJ9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgcHNldWRvbGluayB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1lZGl0dXNlciB2aWV3LWhvdmVyYnRuIiBkYXRhLXVzZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktdG9yc28gbzUwIGZzMTEwIGJsdWUiPjwvc3Bhbj48L2Rpdj48L2Rpdj48L3RkPntjb2x1bW5zfTwvdHI+JyxncmlkX21hbmdvOic8dHIgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PHRkIGNsYXNzPSJnY29sdzAiPjxkaXYgY2xhc3M9IncxMDBwIGRpYiBwbDggcHQ1IHtfaGFzdXJsfSIgZGF0YS11cmw9IntocmVmfSI+e2lkc2FmZWZpbHRlcn08L2Rpdj48L3RkPntjb2x1bW5zfTwvdHI+JyxncmlkX3JlZHVjZTonPHRyIGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjx0ZCBjbGFzcz0iZ2NvbHcwIj48ZGl2IGNsYXNzPSJ3MTAwcCBkaWIgcGw4IHB0NSI+e2lkc2FmZWZpbHRlcn08c3BhbiBjbGFzcz0iZGliIHZhbSB2aWV3LXRvZmlsdGVyIHBzZXVkb2xpbmsgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciIvPjwvc3Bhbj48L2Rpdj48L3RkPntjb2x1bW5zfTwvdHI+JyxncmlkX2NvbHVtbjonPHRkIGNsYXNzPSJncmlkLWNvbHVtbiBjcCB7Y3NzfSIgZGF0YS1pZHg9IntpZHh9Ij48ZGl2Pnt2YWx9PC9kaXY+PC90ZD4nfX0sJGRiczp7aWQ6ImN3LlBob3Rvbi4kZGJzIixsYW5nOnt9LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4ibGlzdCJ9LHRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIkRCIGxpc3QgYW5kIHRhc2tzIn0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5sZW5ndGg/bnVsbDp7dGl0bGU6IkRCIGxpc3QgYW5kIHRhc2tzIn19LGluaGVyaXQ6WyJCeXRlcyIsIk1ldHJpYyJdLGRhdGE6e3JldmVyc2U6ITEsc2VhcmNoOiIiLHNlbGVjdGlvbjpbXSxvc2VsOnt9LHN0YXJzOnt9LGdyb3Vwczp7fSx0YXNrOntzZWFyY2g6IiIsZmlsdGVyOlsiIl0sbGlzdDpbXSxzZWxlY3Rpb246W10sZm9sZDp7fSxzZXE6MH0sc2VydmljZTp7dmVyc2lvbjoiIn19LEFsbDp7fSxHcm91cHM6e30sTGlzdDpbXSxCYXRjaDp7fSxUYXNrczpbXSxSZXBsRG9jczp7fSxBbGxUYXNrczp7fSxNb2RhbHM6e30sVGFza0xvb3A6ITEsVGFza0xvb3BJbnRlcnZhbDohMSxMYXN0U3luYzp7c3JjOnt9LHRndDp7fX0sdWk6eyIjZGItc2VhcmNoIjp7ZGVsYXk6MTUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguc2VhcmNoPWEpLHRoaXMubXkuZmluZCgiI2RiLWxpc3QiKS50b2dnbGVDbGFzcygiaGFzc2VhcmNoIiwhIXguc2VhcmNoKSx4LnNlYXJjaH0sY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99fSwiI2J0bi1yZWxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHguc2VsZWN0aW9uLmxlbmd0aD90aGlzLkJhdGNoSW5mbyh4LnNlbGVjdGlvbix0aGlzLlBobygiQ2ZnIikuYmF0Y2hEYkluZm9EZWxheSk6dGhpcy5HZXRMaXN0KCEwKSl9fSwiI2J0bi12aWV3LWRpciI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgucmV2ZXJzZT0heC5yZXZlcnNlKSx4LnJldmVyc2U/IuKWvCI6IuKWsiJ9LGV2ZW50czoiY2xpY2subXkifSwiI2J0bi1zZWxlY3QiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzLGQ9T2JqZWN0LmtleXMoYy5BbGwpLGU9Yy5MaXN0LmZpbHRlcih4PT4heC50eXBlKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZX0pLGY9eC5zZWxlY3Rpb24sZz1mLmludGVyc2VjdChlKSxoPWcubGVuZ3RoLGk9Yy5sYW5nO3JldHVybiBiPWg/aS5UWFRfVU5TRUxFQ1QuYXNzaWduKGcubGVuZ3RoPT1kLmxlbmd0aD9pLlRYVF9TRUxFQ1RfQUxMOmYubGVuZ3RoKTppLlRYVF9TRUxFQ1QuYXNzaWduKGUubGVuZ3RoPT1kLmxlbmd0aD9pLlRYVF9TRUxFQ1RfQUxMOmUubGVuZ3RoKSxudWxsIT1hJiYoeC5zZWxlY3Rpb249aD9bXTpmLmNvbmNhdChlKS51bmlxdWUoKSx4Lm9zZWw9Y3cubGliLmEybyh4LnNlbGVjdGlvbikpLGJ9LGV2ZW50czoiY2xpY2subXkiLGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hdGhpcy5MaXN0Lmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctaGFzc2VsZWN0aW9uIiwiI2RiLXByb3h5Il19LCIjdmlldy1jb2xzIjp7ZGVsZWF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIsYz10aGlzLkxpc3QsZD0wLGU9KHg9MCwwKTtlPGMubGVuZ3RoO2UrKylkKz0oYj0iZ3JvdXAiPT1jW2VdLnR5cGUpPzA6MSx4Kz1iPzA6Y1tlXS5kaXNrX3NpemV8fDA7cmV0dXJuIHRoaXMubGFuZy5UWFRfREJTVklFVyhkLE9iamVjdC5zaXplKHRoaXMuQWxsKSx4Pyc8c3BhbiBjbGFzcz0iZnM4NSBvNzAgcGw2Ij4nK3RoaXMuQnl0ZXMoeCkrIjwvc3Bhbj4iOjApfSx3YXRjaDpbIiNkYi1wcm94eSJdfSwiI3ZpZXctbGlua3MiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5QaG8oIkJhc2UiKTtyZXR1cm5bJzxhIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGRuIiBocmVmPSJ7MX0iPnsyfTwvYT4nLmFzc2lnbihiLGIucmVwbGFjZSgvXmh0dHBbc10/OlwvXC98XC8vZywiIikuZXNjYXBlSFRNTCgpKV0uam9pbigi4oCJIil9fSwiI2RiLWxpc3QiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLlJvdyxjPWEuUm93R3JvdXAsZD1hLk5vcm1EQixlPWEuZGF0YSxmPWEubGFuZztmdW5jdGlvbiBnKHgpe3JldHVybiB4LnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIj5pbnB1dCIpLmF0dHIoInZhbHVlIil9eC5saXN0KHtkYXRhOltdLGRlbGF5OjAsY2h1bms6MTAwLHNvcnRCeTpudWxsLGlkOmZ1bmN0aW9uKHgpe3JldHVybiJncm91cCI9PXgudHlwZT94LmlkOngubmFtZX0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4iZ3JvdXAiPT14LnR5cGU/Y3cubGliLnNkYm0oW3guaGVhZCx4LnN0YXJ0LHguZW5kLHguZm9sZCx4LmRpc2tdKTpjdy5saWIuc2RibShbeC5uYW1lLHguc3RhbXAseC51cGRhdGVfc2VxKyJ4IixlLm9zZWxbeC5uYW1lXT8ieCI6IiIseC5zdGFyLHguc2l6ZXRpcCx4LnNlY3VyaXR5LnN0YW1wLHgudGFza3Muc3RhbXAseC5zeW5jcy5zdGFtcF0pfSx0ZW1wbGF0ZTpmdW5jdGlvbih4KXtyZXR1cm4iZ3JvdXAiPT14LnR5cGU/Yy5hc3NpZ24oeCk6Yi5hc3NpZ24oZCh4KSl9fSksYS5uaWNlU2Nyb2xsKHgpLHgub24oImNsaWNrLm15IiwiLmJ0bi1kYmFjbCIsZnVuY3Rpb24oeCl7dmFyIGI9JCh4LmN1cnJlbnRUYXJnZXQpLGM9ZyhiKTthLlJlcShbYywiX3NlY3VyaXR5Il0pLnRoZW4oZnVuY3Rpb24oeCl7Yi5tb2RhbCh7cm9vdDphLm15LnJvb3QoKSxtYW5pZmVzdDphLlBobygiU2VjT2JqIiksZGF0YTp7ZGJzOltjXSxhZG1pbnM6eC5hZG1pbnN8fHtuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp4Lm1lbWJlcnN8fHtuYW1lczpbXSxyb2xlczpbXX19LHdpZHRoOjQ4MCxib3VuZDowLG5vc2U6ImxlZnQiLGNzczoieGdyYXkiLGFsaWduOiJsZWZ0OjcwJTt0b3A6LTM2cHg7IixzY3JlZW46InJnYmEoMjU1LDI1NSwyNTUsMCkiLGVzYzohMH0pfSl9KSx4Lm9uKCJjbGljay5teSIsIi5idG4tZGJzdGFyIixmdW5jdGlvbih4KXt2YXIgYj1nKCQoeC5jdXJyZW50VGFyZ2V0KSksYz1lLnN0YXJzW2JdPSFlLnN0YXJzW2JdO2EuQWxsW2JdLnN0YXI9Yz8icm93LXN0YXIiOiIiLGEuTHMoIkRCcy5TdGFycyIsT2JqZWN0LmtleXMoZS5zdGFycykucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIGUuc3RhcnNbYV0mJih4W2FdPSEwKSx4fSx7fSkpLGMmJihhLkFsbFtiXS5ncm91cD0iIiksYS5QaG8oIkdyb3VwREJzIikoKSxhLlJlbGlzdE5vdygpLGEuQmF0Y2hJbmZvKFtiXSl9KSx4Lm9uKCJjbGljay5teSIsIi5idG4tZGJpbmZvIixmdW5jdGlvbih4KXskKHguY3VycmVudFRhcmdldCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLnRhcC1kYmluZm8iKS50cmlnZ2VyKCJjbGljayIpfSkseC5vbigiY2xpY2subXkiLCIudGFwLWRiaW5mbyIsZnVuY3Rpb24oeCl7dmFyIGIsYyxkPSQoeC5jdXJyZW50VGFyZ2V0KSxlPWQucGFyZW50KCksZz1lLmZpbmQoIj5pbnB1dCIpLmF0dHIoInZhbHVlIik7aWYoIWEuQWxsW2ddfHxkLmlzKCIuY29sLWpzb24iKSlyZXR1cm4hMTtkLmFkZENsYXNzKCJjb2wtanNvbiIpLGUuYWRkQ2xhc3MoImhhcy1jb2wtanNvbiIpLGQuZmluZCgiPi5jb2wtZWQtY2xvc2UiKS5sZW5ndGg/KGI9ZC5maW5kKCI+LmNvbC1lZD4uQ29kZU1pcnJvciIpLGM9YlswXS5Db2RlTWlycm9yKTooZC5hcHBlbmQoYj0kKCc8ZGl2IGNsYXNzPSJjb2wtZWQgcHJlIGZzODUgbGgxMjAgcGw0IHRhbCBoaWRlIj48L2Rpdj4nKSksZC5hcHBlbmQoJzxkaXYgY2xhc3M9ImNvbC1lZC1jbG9zZSBmczEzMCBsaDEzMCBoaWRlIiB0aXRsZT0iezF9Ij7inJU8L2Rpdj4nLmFzc2lnbihmLlRJUF9DTE9TRUpTT04pKSxjPUNvZGVNaXJyb3IoYlswXSx7bW9kZToiamF2YXNjcmlwdCIsbGluZU51bWJlcnM6ITEsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seTohMH0pKSxjLnNldFZhbHVlKGYuVFhUX0RCSU5GT19MT0FEKTt2YXIgaD17aW5mbzoiRmFpbCB0byBsb2FkIixzZWN1cml0eToiRmFpbCB0byBsb2FkIn07US5hbGxTZXR0bGVkKFthLlJlcSh7dXJsOltnXX0pLnRoZW4oZnVuY3Rpb24oeCl7aC5pbmZvPXh9KSxhLlJlcSh7dXJsOltnLCJfc2VjdXJpdHkiXX0pLnRoZW4oZnVuY3Rpb24oeCl7aC5zZWN1cml0eT14fSldKS50aGVuKGZ1bmN0aW9uKCl7Yy5zZXRWYWx1ZSgiKCIrY3cubGliLmpzb24oaCwiICIsNDMpKyIpIil9KS5mYWlsKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZi5FUlJfREJJTkZPLCJlcnJvciIpLGQucmVtb3ZlQ2xhc3MoImNvbC1qc29uIil9KX0pLHgub24oImNsaWNrLm15IiwiLmNvbC1lZC1jbG9zZSIsZnVuY3Rpb24oeCl7dmFyIGI9JCh4LmN1cnJlbnRUYXJnZXQpLnBhcmVudCgpLGM9Yi5wYXJlbnQoKS5maW5kKCI+aW5wdXQiKS5hdHRyKCJ2YWx1ZSIpO3JldHVybiBiLnJlbW92ZUNsYXNzKCJjb2wtanNvbiIpLGIucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhhcy1jb2wtanNvbiIpLGEuQmF0Y2hJbmZvKFtjXSwwLFsiaW5mbyIsInNlY3VyaXR5Il0pLCExfSkseC5vbigiY2xpY2subXkiLCIuZGItZ3JvdXAiLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KS5kYXRhKCJncm91cCIpLGM9ZS5ncm91cHNbYl09IWUuZ3JvdXBzW2JdO2EuTHMoIkRCcy5Hcm91cHMiLE9iamVjdC5rZXlzKGUuZ3JvdXBzKS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4gZS5ncm91cHNbYV0mJih4W2FdPTEpLHh9LHt9KSksYyYmYS5CYXRjaEluZm8oT2JqZWN0LmtleXMoYS5BbGwpLmZpbHRlcih4PT5hLkFsbFt4XS5ncm91cD09YiksbnVsbCxbImluZm8iLCJzZWN1cml0eSJdKSxhLm15LmNoZWNrKCIjZGItcHJveHkiKSxhLm15LmNoZWNrKCIjdmlldy1oYXNzZWxlY3Rpb24iKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsPT1hJiZiLmxpc3QoImRhdGEiLHRoaXMuTGlzdCl9LHdhdGNoOlsiI2RiLXByb3h5IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19LCIjZGItcHJveHkiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPShiLlJvdyxiLkFsbCksZD14LnJldmVyc2U/LTE6MSxlPS1kO2lmKGIuTGlzdD1PYmplY3QudmFsdWVzKGMpLnNvcnQoZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5zdGFyPmEuc3Rhcj8tMWUzOnguc3RhcjxhLnN0YXI/MWUzOngubmFtZT5hLm5hbWU/ZDplfSkseC5zZWFyY2gubGVuZ3RoPjEpe3ZhciBmPW5ldyBSZWdFeHAoeC5zZWFyY2gudG9Mb3dlckNhc2UoKS5zcGxpdCgiICIpLmNvbXBhY3QoITApLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5lc2NhcGVSZWdFeHAoKX0pLmpvaW4oInwiKSk7Yi5MaXN0PWIuTGlzdC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGYudGVzdCh4Lm5hbWUudG9Mb3dlckNhc2UoKSl8fCEheC50b29sdGlwJiZmLnRlc3QoeC50b29sdGlwLnRvTG93ZXJDYXNlKCkpfSl9ZWxzZXt2YXIgZz0iIixoPXt9O2IuTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXguZ3JvdXA7aWYoYSl7aFthXXx8KGhbYV09WzAsMF0pO3ZhciBiPSt4LmRpc2tfc2l6ZXx8MDtiJiYoaFthXVswXSs9YixoW2FdWzFdKz0xKX19KSxiLkxpc3Q9Yi5MaXN0LnJlZHVjZShmdW5jdGlvbihhLGMpe3ZhciBkPWMuZ3JvdXAsZT1iLlBobygiR3JvdXBzIilbZF07cmV0dXJuIGQmJmQhPWcmJmEucHVzaCgkLmV4dGVuZCghMCx7dHlwZToiZ3JvdXAiLGZvbGQ6eC5ncm91cHNbZF0/ImFkb3duIjoiYXJpZ2h0IixkaXNrOiFoW2RdfHxoW2RdWzFdPGUuc2l6ZT8iIjpiLkJ5dGVzKGhbZF1bMF0pfSxlKSksZCYmIXguZ3JvdXBzW2RdfHxhLnB1c2goYyksZz1kLGF9LFtdKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7YSYmKGEubmFtZT8oYi5HZXRMaXN0KCEwKSxiLlJlc3RhcnRQb2xsKCkpOiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KSl9LGRibGlzdDpmdW5jdGlvbih4LGEpe09iamVjdC5pc0FycmF5KGEpJiZ0aGlzLkdldExpc3QoITAsYSl9fSx3YXRjaDpbIiNidG4tdmlldy1kaXIiLCIjZGItc2VhcmNoIiwiI2J0bi1zZWxlY3QiXX0sIiN2aWV3LWhhc3NlbGVjdGlvbiI6e2Nzczp7fSx3YXRjaDpbIiNkYi1zZWFyY2giLCIjYnRuLXNlbGVjdCJdfSwiI2J0bi1uZXdkYiI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXMsZD1jLm15LmZpbmQoIiNkYi1saXN0Iikud2lkdGgoKS0zMTArMTUwLTMxO2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLW5ld2RiIiwhMCk6KGMuTW9kYWxzLmhlYWQmJmMuTW9kYWxzLmhlYWQubW9kYWwoITApLGMuTW9kYWxzLmhlYWQ9YixjLm15Lm1vZGFsKCIjYnRuLW5ld2RiIix7bWFuaWZlc3Q6Yy5QaG8oIk5ld0RCIiksd2lkdGg6ZDw1NTA/ZCs4MDpkLGRhdGE6Yy5QaG8oIkNvdWNoIikudmVyPCIwMDMuIj97fTp7YWRtaW5zOntyb2xlczpbIl9hZG1pbiJdfSxtZW1iZXJzOntyb2xlczpbIl9hZG1pbiJdfX0sYWxpZ246InRvcDoxMDIlO2xlZnQ6LTQycHg7Iixub3NlOiJ0b3AiLGNzczoieGdyYXkiLGRyYWc6Ii5jbSIsc2NyZWVuOiExLGVzYzohMCxmb2N1czonaW5wdXRbdHlwZT0idGV4dCJdOmVxKDApJ30pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl9fSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXt0aGlzLm15LmNoZWNrKCIjYnRuLW5ld2RiIil9fX0sIiNidG4tY29tcGFjdCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXM7Yi5kYXRhKCJtb2RhbCIpP2MubXkubW9kYWwoIiNidG4tY29tcGFjdCIsITApOihjLk1vZGFscy5oZWFkJiZjLk1vZGFscy5oZWFkLm1vZGFsKCEwKSxjLk1vZGFscy5oZWFkPWIsYy5teS5tb2RhbCgiI2J0bi1jb21wYWN0Iix7bWFuaWZlc3Q6Yy5QaG8oIkNvbXBhY3QiKSx3aWR0aDozODAsZGF0YTp7c2VsZWN0aW9uOnguc2VsZWN0aW9uLnNsaWNlKDApfSxhbGlnbjoidG9wOjEwMiU7bGVmdDowOyIsbm9zZToidG9wIixjc3M6InhncmF5IixzY3JlZW46ITEsZXNjOiEwLGZvY3VzOiIjYnRuLXN0YXJ0In0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl8fCF4LnNlbGVjdGlvbi5sZW5ndGh8fCF0aGlzLkxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KS5pbnRlcnNlY3QoeC5zZWxlY3Rpb24pLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctaGFzc2VsZWN0aW9uIl0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dGhpcy5teS5jaGVjaygiI2J0bi1jb21wYWN0Iil9fX0sIiNidG4tZGVsZGIiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLWRlbGRiIiwhMCk6KGMuTW9kYWxzLmhlYWQmJmMuTW9kYWxzLmhlYWQubW9kYWwoITApLGMuTW9kYWxzLmhlYWQ9YiwkLm15Lm1vZGFsKHttYW5pZmVzdDpjLlBobygiRGVsREIiKSx3aWR0aDozODAsZGF0YTp7ZGJzOnguc2VsZWN0aW9uLnNsaWNlKDApfSxmb2N1czoiI2J0bi1jYW5jZWwiLGNzczoieGdyYXkgcDIwIHB0MTUiLGNsb3NlOmMuUGhvKCJsYW5nIikuQlROX1hETEcsZXNjOiEwLGVudGVyOiExfSkudGhlbihmdW5jdGlvbigpe3guc2VsZWN0aW9uLmxlbmd0aD0wLHgub3NlbD17fX0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl8fCF4LnNlbGVjdGlvbi5sZW5ndGh8fCF0aGlzLkxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KS5pbnRlcnNlY3QoeC5zZWxlY3Rpb24pLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctaGFzc2VsZWN0aW9uIl0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dGhpcy5teS5jaGVjaygiI2J0bi1kZWxkYiIpfX19LCIjYnRuLWR1bXAiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9dGhpcyxmPXt1cmw6IiIsZGJzOltdfSxnPXt0YXNrOnguc2VsZWN0aW9uLmxlbmd0aD4xPyJNdWx0aSI6IlN5bmMiLG1vZGU6WyJ6aXAiXSxkdW1wT25seTohMCxzcmM6Zn07aWYobnVsbCE9YSl7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7ZS5Nb2RhbHMuaGVhZCYmZS5Nb2RhbHMuaGVhZC5tb2RhbCghMCksZS5Nb2RhbHMuaGVhZD1iLDE9PXguc2VsZWN0aW9uLmxlbmd0aD9mLnVybD14LnNlbGVjdGlvblswXTp4LnNlbGVjdGlvbi5sZW5ndGg+MSYmKGYuZGJzPXguc2VsZWN0aW9uLnNsaWNlKDApKSxjPWUubXkuZmluZCgiI2RiLWxpc3QiKS53aWR0aCgpLTMxMCxjKz1jPDMwMD8zMTA6Yzw0NjA/MjMwOmM8NTMwPzE1MDpjPDYxMD84MDowLGQ9Yi5wb3NpdGlvbigpLmxlZnQrYi5wYXJlbnQoKS5wb3NpdGlvbigpLmxlZnQsYi5tb2RhbCh7bWFuaWZlc3Q6JC5leHRlbmQoITAse30sZS5QaG8oIlN5bmNUYXNrIikse1Jlc3RhcnRQb2xsOmUuUmVzdGFydFBvbGwscGFyYW1zOnt3aWR0aDpjLTMxfX0pLGRhdGE6Zyxub3NlOiJ0b3AiLGFsaWduOiJ0b3A6MTAzJTsgbGVmdDotezF9cHg7Ii5hc3NpZ24oZCksZHJhZzoiLmNtIixjc3M6InhncmF5Iixlc2M6ITAsZm9jdXM6IiNydHppcGZpbGUifSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZS5Nb2RhbHMuaGVhZD1udWxsfSl9cmV0dXJuIHguc2VsZWN0aW9uLmxlbmd0aD90aGlzLmxhbmcuQlROX0RVTVA6dGhpcy5sYW5nLkJUTl9VTkRVTVB9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hY3cubWUoKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3RoaXMubXkuY2hlY2soIiNidG4tbmV3c3luYyIpfX0sd2F0Y2g6WyIjdGFzay1saXN0IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19LCIjdGFzay1maWx0ZXIiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncygkLmV4dGVuZCghMCx7fSx0aGlzLmxhbmcuVEFHU19UQVNLX1RZUEUse3RhZ3NoaW06IuKAiSIsZ3JvdXBzaGltOiLigIkifSkpfSxiaW5kOiJ0YXNrLmZpbHRlciJ9LCIjdGFzay1jb2xzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7cmV0dXJuIGIubGFuZy5UWFRfVEFTS1ZJRVcoYi5UYXNrcy5sZW5ndGg/eC50YXNrLmxpc3QuZmlsdGVyKGIuTm9Hcm91cCkubGVuZ3RoOjAsYi5UYXNrcy5maWx0ZXIoYi5Ob0dyb3VwKS5sZW5ndGgpfSx3YXRjaDpbIiN0YXNrLWZpbHRlciIsIiN0YXNrLWxpc3QiLCIjdGFzay1zZWFyY2giXX0sIiN0YXNrLXNlYXJjaCI6e2RlbGF5OjEwMCxiaW5kOiJ0YXNrLnNlYXJjaCIsY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99fSwiI3Rhc2stbGlzdCI6e2RlbGF5OjUwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuVFRhc2ssYz1hLmRhdGE7ZnVuY3Rpb24gZCgpe2EubXkucmVjYWxjKCIjdGFzay1saXN0IiksYS5teS5jaGVjaygiI3Rhc2stbGlzdCIpfWZ1bmN0aW9uIGUoeCl7cmV0dXJuIE9iamVjdC5rZXlzKHgpLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiB4W2JdJiYoYVtiXT0hMCksYX0se30pfXgubGlzdCh7ZGF0YTphLlRhc2tzLGRlbGF5OjAsY2h1bms6MTAwLHNvcnRCeTpudWxsLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4LnBpZCt4LmRvY19pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oW3gucGlkLHguX2dyb3VwfHwifiIseC5fdHlwZXx8In4iLHguX3NlbGVjdGVkPyJzZWwiOiJ1bnNlbCIseC5fZm9sZD8iZm9sZCI6InVuZm9sZCIseC50eXBlLHguX3Byb2dyZXNzLHguX3N0YXJ0ZWQseC5fZGVzYyx4LmZpbHRlcl0pfSx0ZW1wbGF0ZTpmdW5jdGlvbih4KXtyZXR1cm4gYih4KX19KSxhLm5pY2VTY3JvbGwoeCkseC5vbigiY2xpY2subXkiLCdpbnB1dFtuYW1lPSJ0YXNrLXNlbGVjdGlvbiJdJyxmdW5jdGlvbihiKXt2YXIgZT1bXSxmPXguZmluZCgnaW5wdXRbbmFtZT0idGFzay1zZWxlY3Rpb24iXScpLGc9JChiLnRhcmdldCkudmFsKCk7Zi5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKTt4LmlzKCI6Y2hlY2tlZCIpJiZlLnB1c2goeC52YWwoKSl9KTt2YXIgaCxpPWEuVGFza3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsaWNhdGlvbl9pZD09Zy5lc2NhcGVIVE1MKCl9KSxqPXt9LGs9IiI7aSYmKGg9aS5fc2VsZWN0ZWQ9ZS5pbmRleE9mKGcpPi0xLCJncm91cCI9PWkuX3R5cGU/KGs9Zy5mcm9tKDIpLGkuX2ZvbGQ9IWgmJmkuX2ZvbGQsaCYmKGMudGFzay5mb2xkW2tdPSExKSxhLlRhc2tzLmZvckVhY2goZnVuY3Rpb24oeCl7eC5yZXBsaWNhdGlvbl9pZCE9ZyYmeC5fZ3JvdXA9PWsmJigoeC5fc2VsZWN0ZWQ9aCk/ZS5wdXNoKHgucmVwbGljYXRpb25faWQpOmUucmVtb3ZlKHgucmVwbGljYXRpb25faWQpKX0pKTooaz1pLl9ncm91cCkmJihqPWEuVGFza3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4iZ3JvdXAiPT14Ll90eXBlJiZ4LnBob3Rvbl90YXNrPT1rfSkpJiYoai5fc2VsZWN0ZWQ9aS5fc2VsZWN0ZWQmJmouX3NlbGVjdGVkKSksYy50YXNrLnNlbGVjdGlvbj1lLnVuaXF1ZSgpLGQoKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2tsYWJlbCIsZnVuY3Rpb24oKXskKHRoaXMpLnBhcmVudCgpLmZpbmQoImlucHV0IikudHJpZ2dlcigiY2xpY2siKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2stZ3JvdXAiLGZ1bmN0aW9uKCl7Yy50YXNrLnNlYXJjaD0kKHRoaXMpLmF0dHIoInRpdGxlIil8fCQodGhpcykudGV4dCgpLGEubXkucmVjYWxjKCIjdGFzay1zZWFyY2giKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2stZm9sZGdyb3VwIixmdW5jdGlvbigpe3ZhciB4PSQodGhpcykuZGF0YSgiZ3JvdXAiKS5yZXBsYWNlKC9eX18vLCIiKSxiPWMudGFzay5mb2xkW3hdPSFjLnRhc2suZm9sZFt4XSxmPSJfXyIreCxnPWEuVGFza3MuZmluZChmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsaWNhdGlvbl9pZD09Znx8YS5fZ3JvdXA9PXh9KTtnLl9mb2xkPWIsZy5fc2VsZWN0ZWQ9Zy5fc2VsZWN0ZWQmJiFiLGImJmMudGFzay5zZWxlY3Rpb24ucmVtb3ZlKCJfXyIreCksYS5McygiVGFza3MuRm9sZCIsZShjLnRhc2suZm9sZCkpLGEuVGFza3MuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZD1hLl9zZWxlY3RlZDthLl9ncm91cD09eCYmKGEuX3NlbGVjdGVkPWEuX3NlbGVjdGVkJiYhYixkJiYhYS5fc2VsZWN0ZWQmJmMudGFzay5zZWxlY3Rpb24ucmVtb3ZlKGEucmVwbGljYXRpb25faWQpKX0pLGQoKX0uZGVib3VuY2UoMTApKSx4Lm9uKCJjbGljay5teSIsIi5idG4tZG9uZS1yZXN0YXJ0IixmdW5jdGlvbigpe3ZhciB4PSQodGhpcykuZGF0YSgiaWQiKTthLlJlc3RhcnRUYXNrcyghMSxbeF0pfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGw9PWEpe2lmKHgudGFzay5zZWFyY2guZnJvbSgxKXx8IiIhPXgudGFzay5maWx0ZXIpe3ZhciBjPXRoaXMuVGFza3Muc2xpY2UoMCksZD14LnRhc2suZmlsdGVyLmV4Y2x1ZGUoImFjdGl2ZSIpKyIiO2lmKHgudGFzay5maWx0ZXIuZmluZCgiYWN0aXZlIikmJihjPWMuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiJFcnJvciIhPXgucGlkJiYiRG9uZSIhPXgucGlkfSkpLCJjb21wYWN0aW9uIj09ZCl4LnRhc2subGlzdD1jLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4vY29tcGFjdGlvbiQvLnRlc3QoeC50eXBlKX0pO2Vsc2V7dmFyIGU9ZD9jLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4hKCgicmVwbGljYXRpb24iIT1kfHwiZ3JvdXAiIT14Ll90eXBlKSYmLTE9PSh4LnR5cGUrIiIpLmluZGV4T2YoZCkpfSk6YztpZih4LnRhc2suc2VhcmNoLmxlbmd0aD4xKXt2YXIgZj1uZXcgUmVnRXhwKHgudGFzay5zZWFyY2gudG9Mb3dlckNhc2UoKS5zcGxpdCgifCIpLmNvbXBhY3QoITApLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5lc2NhcGVSZWdFeHAoKX0pLmpvaW4oInwiKSk7ZT1lLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4gZi50ZXN0KHguX2luZGV4KX0pfXgudGFzay5saXN0PWgoZS5maWx0ZXIoZykpfX1lbHNlIHgudGFzay5saXN0PXRoaXMuVGFza3MuZmlsdGVyKGcpO3RoaXMubXkuZmluZCgiI3Rhc2stbGlzdCIpLmxpc3QoImRhdGEiLHgudGFzay5saXN0KX1mdW5jdGlvbiBnKGEpe3JldHVybiJncm91cCI9PWEuX3R5cGV8fCFhLl9ncm91cHx8IXgudGFzay5mb2xkW2EuX2dyb3VwXX1mdW5jdGlvbiBoKHgpe3ZhciBhPXt9O3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7Imdyb3VwIiE9eC5fdHlwZSYmeC5fZ3JvdXAmJihhW3guX2dyb3VwXT0oYVt4Ll9ncm91cF18fDApKzEpfSkseC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISEoImdyb3VwIiE9eC5fdHlwZXx8YVt4Ll9ncm91cF18fHguX2ZvbGQmJnguX3J1bil9KX19LHdhdGNoOlsiI3Rhc2stZmlsdGVyIiwiI3Rhc2stc2VhcmNoIiwiI2J0bi1zZWxlY3QtdGFza3MiXX0sIiNidG4tc2VsZWN0LXRhc2tzIjp7ZGVsYXk6MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuVGFza3Muc2xpY2UoMCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkuY29tcGFjdCgpLGQ9eC50YXNrLmxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkuY29tcGFjdCgpLGU9eC50YXNrLnNlbGVjdGlvbi5pbnRlcnNlY3QoZCkuZmlsdGVyKGIuTm9Hcm91cCksZj1lLmZpbHRlcihiLk5vR3JvdXApLmxlbmd0aCxnPWIubGFuZztyZXR1cm4gbnVsbCE9YSYmKHgudGFzay5zZWxlY3Rpb249Zj94LnRhc2suc2VsZWN0aW9uLnN1YnRyYWN0KGQpLnVuaXF1ZSgpOngudGFzay5zZWxlY3Rpb24uY29uY2F0KGQpLnVuaXF1ZSgpLGU9eC50YXNrLnNlbGVjdGlvbixiLlRhc2tzLmZvckVhY2goZnVuY3Rpb24oeCl7eC5yZXBsaWNhdGlvbl9pZCYmIXguX2ZvbGQmJih4Ll9zZWxlY3RlZD1lLmluZGV4T2YoeC5yZXBsaWNhdGlvbl9pZCk+LTEpfSkpLChmPShlPXgudGFzay5zZWxlY3Rpb24uaW50ZXJzZWN0KGQpKS5maWx0ZXIoYi5Ob0dyb3VwKS5sZW5ndGgpP2cuVFhUX1RfVU5TRUxFQ1QuYXNzaWduKGUubGVuZ3RoPT1jLmxlbmd0aD9nLlRYVF9UX1NFTEVDVF9BTEw6Zik6Zy5UWFRfVF9TRUxFQ1QuYXNzaWduKGQubGVuZ3RoPT1jLmxlbmd0aD9nLlRYVF9UX1NFTEVDVF9BTEw6Zy5UWFRfVF9TRUxFQ1RfRklMVEVSKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LnRhc2subGlzdC5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkJiYiZ3JvdXAiIT14Ll90eXBlfSl9fSx3YXRjaDpbIiN0YXNrLWxpc3QiLCIjdGFzay1maWx0ZXIiLCIjdGFzay1zZWFyY2giXX0sIiNidG4tcmVsb2Fkc3luYyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlJlc3RhcnRQb2xsLmRlYm91bmNlKDUwMCkoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiFjdy5tZSgpfX0sd2F0Y2g6WyIjdGFzay1saXN0Il0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztPYmplY3QuaXNPYmplY3QoYSkmJihhLm5hbWU/Yi5teS5jaGVjaygiI2J0bi1yZWxvYWRzeW5jIik6KGIuVGFza3MubGVuZ3RoPTAseC50YXNrLnNlbGVjdGlvbi5sZW5ndGg9MCxiLm15LnJlY2FsYygiI3Rhc2stbGlzdCIpLGIubXkuY2hlY2soIiN0YXNrLWNvbHMiKSxiLm15LmNoZWNrKCIjdGFzay1saXN0IikpKX19fSwiI2J0bi1yZXN5bmMiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2lmKGIuZGF0YSgibW9kYWwiKSlyZXR1cm4gYi5tb2RhbCghMCksdm9pZCAwO2MuTW9kYWxzLnRhc2tzJiZjLk1vZGFscy50YXNrcy5tb2RhbCghMCksYy5SZXN0YXJ0VGFza3MoKS50aGVuKGZ1bmN0aW9uKCl7eC50YXNrLnNlbGVjdGlvbi5sZW5ndGg9MCxjLm15LmNoZWNrKCIjdGFzay1saXN0IiksYy5SZXN0YXJ0UG9sbC5kZWJvdW5jZSgzMDApKCksYy5SZXN0YXJ0UG9sbC5kZWJvdW5jZSgyNTAwKSgpfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe2lmKCF4LnRhc2suc2VsZWN0aW9uLmxlbmd0aClyZXR1cm4hMDt2YXIgYT14LnRhc2suc2VsZWN0aW9uLmZpbHRlcih0aGlzLk5vR3JvdXApLmludGVyc2VjdCh4LnRhc2subGlzdC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGljYXRpb25faWR9KSk7aWYoIWEubGVuZ3RoKXJldHVybiEwO3ZhciBiPWN3LmxpYi5hMm8oYSksYz0hMDtyZXR1cm4gdGhpcy5UYXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyF4LmRvY19pZCYmYlt4LnJlcGxpY2F0aW9uX2lkXSYmKGM9ITEpfSksIWN9fSx3YXRjaDpbIiN0YXNrLWZpbHRlciIsIiN0YXNrLWxpc3QiXX0sIiNidG4tc3RvcHN5bmMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLlJlc3RhcnRUYXNrcyghMCkudGhlbihmdW5jdGlvbigpe3gudGFzay5zZWxlY3Rpb24ubGVuZ3RoPTAsYi5teS5jaGVjaygiI3Rhc2stbGlzdCIpLGIuUmVzdGFydFBvbGwuZGVib3VuY2UoMzAwKSgpLGIuUmVzdGFydFBvbGwuZGVib3VuY2UoMjUwMCkoKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4heC50YXNrLnNlbGVjdGlvbi5sZW5ndGh8fCgheC50YXNrLnNlbGVjdGlvbi5maWx0ZXIodGhpcy5Ob0dyb3VwKS5pbnRlcnNlY3QoeC50YXNrLmxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkpLmxlbmd0aHx8dm9pZCAwKX19LHdhdGNoOlsiI3Rhc2stZmlsdGVyIiwiI3Rhc2stbGlzdCJdfSwiI2J0bi1uZXdzeW5jIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLGU9eC5zZWxlY3Rpb24ubGVuZ3RoLGY9ZT4xPyJNdWx0aSI6IlN5bmMiLGc9e3VybDoiIixkYnM6W119LGg9e3Rhc2s6ZixzcmM6Z30saT00MjtpZihudWxsIT1hKXtpZihiLmRhdGEoIm1vZGFsIikpcmV0dXJuIGIubW9kYWwoITApLHZvaWQgMDtkLk1vZGFscy50YXNrcyYmZC5Nb2RhbHMudGFza3MubW9kYWwoITApLDE9PWU/Zy51cmw9eC5zZWxlY3Rpb25bMF06ZT4xJiYoZy5kYnM9eC5zZWxlY3Rpb24uc2xpY2UoMCkpLGQuTW9kYWxzLnRhc2tzPWIsZC5MYXN0U3luYy50YXNrPT1mJiZKU09OLnN0cmluZ2lmeShnKT09SlNPTi5zdHJpbmdpZnkoT2JqZWN0LnNlbGVjdChkLkxhc3RTeW5jLnNyYyxbInVybCIsImRicyJdKSk/aD1kLkxhc3RTeW5jOmQuTGFzdFN5bmM9aCwoYz1kLm15LmZpbmQoIiNycGFuZWwiKS53aWR0aCgpLTMyKTw0NjA/KGMrPTE4MyxpKz0xODMpOmM8NTYwJiYoYys9MTAyLGkrPTEwMiksYi5tb2RhbCh7cm9vdDpkLm15LmZpbmQoIiNycGFuZWwiKSxtYW5pZmVzdDokLmV4dGVuZCghMCx7fSxkLlBobygiU3luY1Rhc2siKSx7UmVzdGFydFBvbGw6ZC5SZXN0YXJ0UG9sbCxwYXJhbXM6e3dpZHRoOmN9fSksZGF0YTpoLG5vc2U6InRvcCIsYWxpZ246InRvcDoxMDMlOyBsZWZ0Oi17MX1weDsiLmFzc2lnbihpKSxkcmFnOiIuY20iLGNzczoieGdyYXkiLGVzYzohMCxmb2N1czpkLkxhc3RTeW5jLnNyYy51cmw/IiNydGFyZ2V0IjoiI3Jzb3VyY2UifSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5Nb2RhbHMudGFza3M9bnVsbH0pfXJldHVybiB0aGlzLmxhbmdbZT8xPT1lPyJCVE5fVEFTS18xREIiOiJCVE5fVEFTS19EQlMiOiJCVE5fVEFTS19ORVdTWU5DIl19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hY3cubWUoKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3RoaXMubXkuY2hlY2soIiNidG4tbmV3c3luYyIpfX0sd2F0Y2g6WyIjdGFzay1saXN0IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19fSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5UYXNrTG9vcCYmdGhpcy5UYXNrTG9vcC5jYW5jZWwoKSxbIiNkYi1saXN0IiwiI3Rhc2stbGlzdCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9eC5maW5kKGEpOyJmdW5jdGlvbiI9PXR5cGVvZiBiLmdldE5pY2VTY3JvbGwmJmIuZ2V0TmljZVNjcm9sbCgpLnJlbW92ZSgpLGIubGlzdCgicmVtb3ZlIil9KX0sUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0sUmVsaXN0OmZ1bmN0aW9uKCl7dGhpcy5teS5jaGVjaygiI2RiLXByb3h5Iil9LEdldExpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhO3JldHVybiBiLlBobygiR2V0TGlzdCIpKCkudGhlbihmdW5jdGlvbigpe2IuQWxsPWIuUGhvKCJBbGwiKSxPYmplY3Qua2V5cyhiLkFsbCkuZm9yRWFjaChmdW5jdGlvbih4KXtiLkFsbFt4XS5zdGFyPWMuc3RhcnNbeF0/InJvdy1zdGFyIjoiIn0pLHgmJmIuUmVsaXN0KCksYi5CYXRjaEluZm8oYXx8T2JqZWN0LmtleXMoYi5BbGwpLGIuUGhvKCJDZmciKS5iYXRjaERiSW5mb0RlbGF5KX0pfSxOb3JtREI6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcyxlPWF8fGQuZGF0YS5vc2VsO3JldHVybihjPXguZGlza19zaXplKSYmKGI9eC5kYXRhX3NpemUpJiYoeC5zaXplc2FmZT0nPHNwYW4gY2xhc3M9InsxfSI+ezJ9PC9zcGFuPicuYXNzaWduKGIvYzwuMT8icmVkIG83MCI6Yi9jPC41PyJvcmFuZ2UgbzkwIjoieGdyYXkiLGQuQnl0ZXMoYykpLHguc2l6ZXRpcD1kLmxhbmcuVElQX0RCU0laRS5hc3NpZ24oZC5CeXRlcyhiKSxkLkJ5dGVzKGMpKSkseC5ncm91cF94PXguZ3JvdXA/IngiOiIiLHguZG9jX2NvdW50X3NhZmU9IiIhPT14LmRvY19jb3VudD9kLk1ldHJpYyh4LmRvY19jb3VudCw2KToiIix4LmRvY19kZWxfY291bnRfc2FmZT0iIiE9PXguZG9jX2RlbF9jb3VudD9kLk1ldHJpYyh4LmRvY19kZWxfY291bnQsNik6IiIseC51cGRhdGVfc2VxX3NhZmU9IiIhPT14LnVwZGF0ZV9zZXE/ZC5NZXRyaWMoKHgudXBkYXRlX3NlcSsiIikuc3BsaXQoIi0iKVswXSw3KToiIix4LmNoZWNrZWQ9ZVt4Lm5hbWVdPyJjaGVja2VkIjoiIix4fSxOb0dyb3VwOmZ1bmN0aW9uKHgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeD8iX18iIT14LnRvKDIpOiJncm91cCIhPXguX3R5cGV9LHN0eWxlOnsiIC52aWV3LXJvdyI6eyIiOiJ3aWR0aDoxMDAlOyBtaW4taGVpZ2h0OjJlbTsgcGFkZGluZzowLjM1ZW0gMDsgbGluZS1oZWlnaHQ6MS4yZW07IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IiwiOm50aC1jaGlsZCgybiswKSI6ImJhY2tncm91bmQtY29sb3I6I2Y1ZjdmOTsiLCIgc3ZnIjoibWFyZ2luLWJvdHRvbToxcHg7IiwiLnJvdy1zdGFyKy52aWV3LXJvdyI6ImJvcmRlci10b3A6MXB4IHNvbGlkICNlMWU1ZTg7IiwiLnJvdy1zdGFyKy52aWV3LXJvdy5yb3ctc3RhciI6ImJvcmRlci10b3A6bm9uZTsiLCIgLmJ0bi1kYnN0YXIiOiJjb2xvcjojZDBkNmRkOyIsIiAuYnRuLWRic3Rhci5yb3ctc3RhciAiOiJjb2xvcjojZmZiNDJhOyJ9LCIgLnRhcnJvdyI6ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjMxcHg7cGFkZGluZy1yaWdodDoxcHg7dGV4dC1hbGlnbjpjZW50ZXI7IiwiIC5yb3ctc2VsIjoid2lkdGg6MjNweDsgbWFyZ2luOiAwIDJweCAycHggM3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsiLCIgI2RiLWxpc3QiOnsiIjoib3V0bGluZTpub25lOyIsIiAuY29sLTgwIjoid2lkdGg6ODBweDsgcGFkZGluZzoxcHggNnB4IDAgMDsgdGV4dC1hbGlnbjpyaWdodDsiLCIgLmNvbC03MCI6IndpZHRoOjcwcHg7IGZvbnQtc2l6ZTowLjllbTsgbGluZS1oZWlnaHQ6MS4yZW07IHRleHQtYWxpZ246bGVmdDsgcGFkZGluZzozcHggMCAwIDdweDsiLCIgLnZpZXctcm93Ijoid2hpdGUtc3BhY2U6IG5vd3JhcDsiLCIgLmRiLWJ0bnMiOnsiIjond2lkdGg6NTVweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1mYW1pbHk6ICJmb3VuZGF0aW9uLWljb25zIjsgZm9udC13ZWlnaHQ6NDAwOycsIj5zcGFuIjoib3BhY2l0eTowLjY7Zm9udC1zaXplOjAuOWVtOyBjdXJzb3I6cG9pbnRlcjsgcGFkZGluZzogMCAzcHggMCAycHg7In0sIiAudmlldy1yb3c+ZGl2IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgd29yZC13cmFwOmJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOmJyZWFrLXNwYWNlczsiLCIgLnZpZXctYXV4PmRpdiI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1pbi1oZWlnaHQ6MS4zZW07IiwiIC5kYi1nZW5lcmFsIjoid2lkdGg6Y2FsYygxMDAlIC0gIDMzOHB4IC0gNTVweCk7IiwiIC5kYi1ncm91cC1uYW1lIjoid2lkdGg6Y2FsYygxMDAlIC0gMzM4cHggKyAxNTBweCk7IiwiIC5taDE5ZW0iOiJtaW4taGVpZ2h0OjEuOWVtOyIsIiAubWgxM2VtIjoibWluLWhlaWdodDoxLjNlbTsiLCIgLnh3NDVwIjoibWF4LXdpZHRoOjQ1JTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczsiLCIgLmNvbC1pZHMiOiJ3aWR0aDozMCU7cGFkZGluZzowIDIwcHggMCA4cHg7IiwiIC5jb2wtdmFscyI6IndpZHRoOjcwJTsgcGFkZGluZy1sZWZ0OjEwcHg7IiwiIC5jb2wtanNvbiI6eyIiOiJ3aWR0aDozNzBweCFpbXBvcnRhbnQ7IHotaW5kZXg6NDsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBtaW4taGVpZ2h0OjJlbTttYXJnaW46LTAuMzVlbSAwIC0wLjM1ZW0gLTYwcHg7IHBhZGRpbmc6IDAuMjVlbSAwIWltcG9ydGFudDsifSwiIC52aWV3LXRvZmlsdGVyIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OjVweDt3aWR0aDoyMHB4O2xpbmUtaGVpZ2h0OjEuMmVtO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMC41czsiLCIgLnZpZXctcm93OmhvdmVyIC52aWV3LXRvZmlsdGVyIjoib3BhY2l0eTowLjU7Y3Vyc29yOnBvaW50ZXI7IiwiIC5kYi1ncm91cCI6eyIiOiJ6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UxZTVlODsiLCIrLmRiLWdyb3VwLnp6YXJpZ2h0IjoiYm9yZGVyLXRvcDpub25lOyIsIi56emFyaWdodCsuemdycCI6ImJvcmRlci10b3A6MXB4IHNvbGlkICNlMWU1ZTg7IiwiOmxhc3QtY2hpbGQiOiJib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTFlNWU4OyJ9LCIgLnpncnB4Ky56Z3JwIjoiYm9yZGVyLXRvcDoxcHggc29saWQgI2UxZTVlODsiLCIgLnpncnB4PmlucHV0LnJvdy1zZWwiOiJtYXJnaW4tbGVmdDoyMHB4OyIsIiAuemdycHg+LmRiLWdlbmVyYWwiOiJ3aWR0aDpjYWxjKDEwMCUgLSAgMzM4cHggLSA1NXB4IC0gMThweCk7IiwiIC52aWV3LXJvdzpsYXN0LWNoaWxkLnpncnB4IjoiYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2UxZTVlODsiLCIuaGFzc2VhcmNoIjp7IiAuemdycHgrLnpncnAiOiJib3JkZXItdG9wOm5vbmU7IiwiIC56Z3JweD5pbnB1dC5yb3ctc2VsIjoibWFyZ2luLWxlZnQ6M3B4OyIsIiAuemdycHg+LmRiLWdlbmVyYWwiOiJ3aWR0aDpjYWxjKDEwMCUgLSAgMzM4cHggLSA1NXB4KTsifX0sIiAjdGFzay1wYW5lbCI6eyIiOiJvdXRsaW5lOm5vbmU7In0sIiAudGFwLWRiaW5mbyI6ImN1cnNvcjpwb2ludGVyOyIsIiAuY2ItdGFzay1yb3ciOiJ3aWR0aDoyN3B4OyBtYXJnaW4tbGVmdDotMjdweDsiLCIgI2RiLXBhbmVsIjp7IjpiZWZvcmUiOidjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MHB4O3otaW5kZXg6MTtoZWlnaHQ6MTAwJTtyaWdodDoyMzBweDt3aWR0aDo4MHB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7Ym9yZGVyLXJpZ2h0OjFweCBkb3R0ZWQgcmdiYSgxNzgsMTg0LDE5MCwwLjQpO3BvaW50ZXItZXZlbnRzOm5vbmU7JywiOmFmdGVyIjonY29udGVudDoiICI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDt6LWluZGV4OjM7aGVpZ2h0OjEwMCU7cmlnaHQ6ODBweDt3aWR0aDo4MHB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7cG9pbnRlci1ldmVudHM6bm9uZTsnfSwiIC5iYnMiOiJib3JkZXItYm90dG9tLWNvbG9yOiNlM2U5ZWM7IiwiIC5iYXMiOiJib3JkZXItY29sb3I6I2UzZTllYzsiLCIgLmJycyI6ImJvcmRlci1yaWdodDoxcHggc29saWQgI2UzZTllYzsiLCIgLmJyc2wiOiJib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjExLDIxNywyMjIsMC4zKTsiLCIgLmJjZWxsMCI6ImJvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDExNSwxMjEsMTI4LDAuMSk7IiwiIC5iY2VsbDEiOiJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgxMTUsMTIxLDEyOCwwLjA3KTsiLCIgLncxMDBwLTMzOCI6IndpZHRoOmNhbGMoMTAwJSAtIDMzOHB4KTsiLCIgLncxMDBwLTMxMCI6IndpZHRoOmNhbGMoMTAwJSAtIDMxMXB4KTsiLCIgLnRhc2stcm93LXRpcCI6Im1pbi13aWR0aDozMCU7IHRleHQtYWxpZ246Y2VudGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlci1yYWRpdXM6MnB4OyBwYWRkaW5nOiAwIDJweCAxcHggMnB4OyIsIiAuYnRuLWRvbmUtcmVzdGFydCI6eyIiOiJvcGFjaXR5OjAuNDt0cmFuc2l0aW9uOm9wYWNpdHkgMC41czsiLCI6aG92ZXIiOiJvcGFjaXR5OjE7In19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtyZXR1cm4gYS5Mcz1hLlBobygiTHMiKSxhLlJvdz1hLlJvdy5hc3NpZ24oYS5sYW5nKSxhLlBobygiaXNJRSIpfHxbIlJvdyJdLmZvckVhY2goZnVuY3Rpb24oeCl7YVt4XT1hLlBobygiQ29tcGlsZVQiKShhW3hdKX0pLCQuZXh0ZW5kKGIudGFzay5mb2xkLGEuTHMoIlRhc2tzLkZvbGQiKXx8e30pLCQuZXh0ZW5kKGIuc3RhcnMsYS5McygiREJzLlN0YXJzIil8fHt9KSwkLmV4dGVuZChiLmdyb3VwcyxhLkxzKCJEQnMuR3JvdXBzIil8fHt9KSxhLlJlbGlzdE5vdz1hLlJlbGlzdC5kZWJvdW5jZSgxMCksYS5SZWxpc3Q9YS5SZWxpc3QudGhyb3R0bGUoNTAwKSxhLkFycm93cz1hLkFycm93cy5zcGxpdCgiXG5cbiIpLHguaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLHgub24oImNsaWNrLm15IiwnaW5wdXRbbmFtZT0iZGItc2VsZWN0aW9uIl0nLGZ1bmN0aW9uKCl7dmFyIGM9W107eC5maW5kKCdpbnB1dFtuYW1lPSJkYi1zZWxlY3Rpb24iXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpO3guaXMoIjpjaGVja2VkIikmJmMucHVzaCh4LnZhbCgpKX0pLGIuc2VsZWN0aW9uPWMsYi5vc2VsPWN3LmxpYi5hMm8oYi5zZWxlY3Rpb24pLGEubXkuY2hlY2soIiN2aWV3LWhhc3NlbGVjdGlvbiIpfSkseC50aGVuKGZ1bmN0aW9uKCl7JC5leHRlbmQoITAsYS5kYXRhLnNlcnZpY2UsYS5QaG8oIkNvdWNoIikpfS5kZWJvdW5jZSgxMDApKSxhLkdldExpc3QoITApLnRoZW4oZnVuY3Rpb24oKXthLlRhc2tMb29wSW50ZXJ2YWw9YS5QaG8oIkNmZyIpLmxvb3BBY3RpdmVUYXNrcyxhLkdldFRhc2tzKCEwKSxhLlJlc3RhcnRQb2xsKCl9KX0sSFRNTDonPGRpdiBjbGFzcz0idzU1cCBkaWIgdmF0Ij48ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgZnM5NSB6aTIiIHN0eWxlPSJtYXgtd2lkdGg6MTgwcHg7d2lkdGg6Y2FsYygxMDAlIC0gNDU1cHgpOyI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyBibHVlIG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRiLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSF9EQlN9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im53IGRpYiB2YXQgdzc1cCBwcjEwIj48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzM4IG1yMiIgdGl0bGU9IntUSVBfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tbmV3ZGIiIGNsYXNzPSJncmVlbiBtcjIiPntCVE5fTkVXREJ9PC9idXR0b24+PHNwYW4gaWQ9InZpZXctaGFzc2VsZWN0aW9uIj48YnV0dG9uIGlkPSJidG4tZGVsZGIiIGNsYXNzPSJtcjIgcmVkIiBkaXNhYmxlZD57QlROX0RFTERCfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jb21wYWN0IiBjbGFzcz0ibXIyIiBkaXNhYmxlZD57QlROX0NPTVBBQ1R9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWR1bXAiIGNsYXNzPSJtcjIiIHN0eWxlPSJtaW4td2lkdGg6NzVweCI+e0JUTl9VTkRVTVB9PC9idXR0b24+PC9zcGFuPjxzcGFuIGNsYXNzPSJwbHNoaW0gZGliIHZhdCI+PHNwYW4gaWQ9ImJ0bi1zdGF0cyIgY2xhc3M9Im1yMiI+PGEgaHJlZj0iI19zdGF0cyIgY2xhc3M9InRkbiBsaDE0MGkgYnV0dG9uIj57QlROX1NUQVRTfTwvYT48L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImRiLXBhbmVsIiBjbGFzcz0icGFuZWxoZWlnaHQtMzIgYnIyIG10MTYgbWwyMCBtcjIwIj48ZGl2IGNsYXNzPSJiZy1wZ3JheSBiYnMgbGgxNjAgcHQyIG53IG9oIGVsbCB4cGFuZWwiPjxkaXYgY2xhc3M9IncxMDBwLTMxMCBkaWIgdmF0IG53IG9oIGVsbCI+PHNwYW4gaWQ9ImJ0bi12aWV3LWRpciIgY2xhc3M9ImRpYiBwbDggcHI2IG1yMiB2YXQgY3AgbzUwIGZzODAgcHQxIHBzZXVkb2xpbmsgdGRuIGgzMCI+PC9zcGFuPjxzcGFuIGlkPSJ2aWV3LWxpbmtzIiBjbGFzcz0iZ3JheSBoaWRlIj48L3NwYW4+PGRpdiBpZD0idmlldy1jb2xzIiBjbGFzcz0iZGliIHZhdCBwcjEyIG53IHhncmF5Ij48L2Rpdj48ZGl2IGlkPSJidG4tc2VsZWN0IiBjbGFzcz0iYnV0dG9uIHhidXR0b24gcHQyIGgyNSBtdDEgZnM5MCBsaDEzMCB0ZG4gZnIgbXIzIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3MzEwIGRpYiBncmF5IGZzOTAiPjxkaXYgY2xhc3M9Inc4MCBkaWIgdGFyIHByNiI+e0hfRE9DU308L2Rpdj48ZGl2IGNsYXNzPSJ3NzAgZGliIHBsNyI+e0hfREVMRE9DU308L2Rpdj48ZGl2IGNsYXNzPSJ3ODAgZGliIHRhciBwcjciPntIX1NFUX08L2Rpdj48ZGl2IGNsYXNzPSJ3ODAgZGliIHRhciBwcjciPntIX1NJWkV9PC9kaXY+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9ImRiLWxpc3QiIGNsYXNzPSJwYW5lbGhlaWdodC02MyB4Z3JheSBsaDE3MCBieHRvcCBveGgiPjwvc2VjdGlvbj48L2Rpdj48ZGl2IGlkPSJkYi1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InJwYW5lbCIgY2xhc3M9Inc0NXAgZGliIHZhdCBwcjIwIj48ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IG1iMTYgdGFsIj48ZGl2IGNsYXNzPSJmciBmczk1IHRhbCIgc3R5bGU9Im1heC13aWR0aDoxODBweDt3aWR0aDpjYWxjKDEwMCUgLSAzNTBweCk7Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIGJsdWUgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGFzay1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0hfVEFTS1N9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Inc3MHAgZGliIj48YnV0dG9uIGlkPSJidG4tcmVsb2Fkc3luYyIgY2xhc3M9Inc0MCBtcjIiIHRpdGxlPSJ7VElQX1RBU0tfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tbmV3c3luYyIgY2xhc3M9Im1yMiB3MTA1IHBsNCBwcjIgYmx1ZSI+e0JUTl9UQVNLX05FV1NZTkN9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXJlc3luYyIgY2xhc3M9Im9yYW5nZSBtcjIiIGRpc2FibGVkPntCVE5fVEFTS19SRVNZTkN9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXN0b3BzeW5jIiBjbGFzcz0icmVkIiBkaXNhYmxlZD57QlROX1RBU0tfU1RPUH08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJ0YXNrLXBhbmVsIiBjbGFzcz0icGFuZWxoZWlnaHQtMzIgYnIyIG10MTYiPjxkaXY+PGRpdiBjbGFzcz0iYmctcGdyYXkgbGgxNzAgeHBhbmVsIHB0MSI+PGRpdiBjbGFzcz0iZnIgcHI0IHRhciI+PHNwYW4gaWQ9InRhc2stZmlsdGVyIiBjbGFzcz0iaHBhbmVsIGZzOTAgcGw0Ij48L3NwYW4+PC9kaXY+PGRpdiBpZD0idGFzay1jb2xzIiBjbGFzcz0iZGliIHZhdCBwbDggbncgeGdyYXkgcHQxIHByMTIiPjwvZGl2PjxkaXYgaWQ9ImJ0bi1zZWxlY3QtdGFza3MiIGNsYXNzPSJidXR0b24geGJ1dHRvbiBwdDIgaDI1IG10MiBmczkwIGxoMTMwIHRkbiBkaWIgdmF0IGhpZGUiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ0YXNrLWxpc3QiIGNsYXNzPSJwYW5lbGhlaWdodC02MyB4Z3JheSBsaDE3MCBieHRvcCI+PC9zZWN0aW9uPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InN0YXR1cy1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PicsUm93Oic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyBkYi1idWNrZXQge3N0YXJ9IHpncnB7Z3JvdXBfeH0iPjxpbnB1dCBjbGFzcz0iY3Agcm93LXNlbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRiLXNlbGVjdGlvbiIge2NoZWNrZWR9IHZhbHVlPSJ7bmFtZXNhZmV9Ij48ZGl2IGNsYXNzPSJkYi1nZW5lcmFsIG1oMTNlbSBwcjIiPjxhIGhyZWY9IiN7aHJlZn0iIGNsYXNzPSJ0ZG4gbXIyMCBsYmw0Y2hlY2sgdmlldy1kYi1uYW1lIiB0aXRsZT0ie3Rvb2x0aXB9Ij57aG5hbWV9PC9hPjwvZGl2PjxkaXYgY2xhc3M9ImRiLWJ0bnMiPjxzcGFuIGNsYXNzPSJidG4tZGJhY2wge3Byb3RlY3RlZH0gcHI1IiB0aXRsZT0ie1RJUF9CVE5fQUNMfSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJidG4tZGJpbmZvIGxncmF5IiB0aXRsZT0ie1RJUF9CVE5fSU5GT30iPu+Fnjwvc3Bhbj48c3BhbiBjbGFzcz0iYnRuLWRic3RhciB7c3Rhcn0gcHI1IiB0aXRsZT0ie1RJUF9CVE5fU1RBUn0iPu+Hrjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ3MzEwIHZpZXctYXV4IGZzOTUgdGFwLWRiaW5mbyIgdGl0bGU9IntUSVBfRE9DX0lORk99Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAiIHRpdGxlPSJ7ZG9jX2NvdW50fSI+e2RvY19jb3VudF9zYWZlfTwvZGl2PjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC03MCBncmF5Ij57ZG9jX2RlbF9jb3VudF9zYWZlfTwvZGl2PjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC04MCIgdGl0bGU9Int1cGRhdGVfc2VxfSI+e3VwZGF0ZV9zZXFfc2FmZX08L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAgcHI4IiB0aXRsZT0ie3NpemV0aXB9Ij57c2l6ZXNhZmV9PC9kaXY+PC9kaXY+PC9kaXY+JyxSb3dHcm91cDonPGRpdiBjbGFzcz0idmlldy1yb3cgZGItZ3JvdXAgY3Agenp7Zm9sZH0iIGRhdGEtZ3JvdXA9IntpZH0iPjxkaXYgY2xhc3M9IncyMCBtbDMgbXIyIHBsMSBmczEwNSI+PHNwYW4gY2xhc3M9Intmb2xkfSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImRiLWdyb3VwLW5hbWUgbWgxM2VtIHByMiBtcjIiPjxkaXYgY2xhc3M9Inh3NDVwIGRpYiB2YXQgbncgZnc1MDAgbzkwIj57c3RhcnR9PC9kaXY+PHNwYW4gY2xhc3M9ImJsdWUxIGZ3NjAwIj7igInCt8K3wrfigIk8L3NwYW4+PGRpdiBjbGFzcz0ieHc0NXAgZGliIHZhdCBudyBncmF5MSI+e2VuZH08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3MTYwIHZpZXctYXV4IGZzOTUiPjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC04MCB0YXIgZ3JheTIiPntzaXplfSBEQnM8L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAgdGFyIHByOCBncmF5MiI+e2Rpc2t9PC9kaXY+PC9kaXY+PC9kaXY+JyxBcnJvd3M6JzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYsIDgiPlxuICA8ZyBpZD0iTGF5ZXJfMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAsIC0wKSI+XG4gICAgPHBhdGggZD0iTTEuNSw0LjUgTDE1LjUsNC41IE0xMi41LDcuNSBMMTUuNSw0LjUgTDEyLjUsMS41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNi4zNzUiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYuMzc1LCA4Ij5cbiAgPGcgaWQ9IkxheWVyXzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMzc1LCAtMTApIj5cbiAgICA8cGF0aCBkPSJNNi43NSwxNC41IEwxNS41LDE0LjUgTTEyLjUsMTcuNSBMMTUuNSwxNC41IEwxMi41LDExLjUgTTEuMTI1LDExLjY4NyBMMywxNC44MTMgTDMsMTcuNSBDMywxNy41IDUsMTcuNSA1LDE3LjUgQzUsMTcuNSA1LDE0LjgxMyA1LDE0LjgxMyBMNi44NzUsMTEuNjg3IEwxLjEyNSwxMS42ODcgeiIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPlxuPC9zdmc+XG5cbjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYsIDgiPlxuICA8ZyBpZD0iTGF5ZXJfMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAsIC0yMCkiPlxuICAgIDxwYXRoIGQ9Ik00LjUsMjEuNSBMNS41LDIxLjUgTDUuNSwyNy41IEw0LjUsMjcuNSBNMi41LDIxLjUgTDEuNSwyMS41IEwxLjUsMjcuNSBMMi41LDI3LjUgTTE1LjUsMjQuNSBMNywyNC41IE0xMi41LDI3LjUgTDE1LjUsMjQuNSBMMTIuNSwyMS41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwLCAwLCAxNiwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0wKSI+XG4gICAgPHBhdGggZD0iTTMxLjUsNC41IEwxNy41LDQuNSBNMjAuNSwxLjUgTDE3LjUsNC41IEwyMC41LDcuNSIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPlxuPC9zdmc+XG5cbjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYuMzc1IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAsIDAsIDE2LjM3NSwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0xMCkiPlxuICAgIDxwYXRoIGQ9Ik0yNi4yNSwxNC41IEwxNy41LDE0LjUgTTIwLjUsMTcuNSBMMTcuNSwxNC41IEwyMC41LDExLjUgTTMxLjg3NSwxMS42ODcgTDMwLDE0LjgxMyBMMzAsMTcuNSBDMzAsMTcuNSAyOCwxNy41IDI4LDE3LjUgQzI4LDE3LjUgMjgsMTQuODEzIDI4LDE0LjgxMyBMMjYuMTI1LDExLjY4NyBMMzEuODc1LDExLjY4NyB6IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwLCAwLCAxNiwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0yMCkiPlxuICAgIDxwYXRoIGQ9Ik0yOC41LDI3LjUgTDI3LjUsMjcuNSBMMjcuNSwyMS41IEwyOC41LDIxLjUgTTMwLjUsMjcuNSBMMzEuNSwyNy41IEwzMS41LDIxLjUgTDMwLjUsMjEuNSBNMTcuNSwyNC41IEwyNiwyNC41IE0yMC41LDIxLjUgTDE3LjUsMjQuNSBMMjAuNSwyNy41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz4nLEJhdGNoSW5mbzpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuQWxsLGU9KGE9bnVsbCE9YT9hOmMuUGhvKCJDZmciKS5iYXRjaERiSW5mb0RlbGF5LFtdKSxmPWJ8fGMuUGhvKCJDZmciKS5saXN0Q29sc3x8W10sZz1mLmluZGV4T2YoImluZm8iKT4tMSxoPWYuaW5kZXhPZigic2VjdXJpdHkiKT4tMSxpPWMuUGhvKCJDb3VjaCIpLm1heEJhdGNofHwwLGo9e30saz1jLm15P2MubXkuZmluZCgiI2RiLWxpc3QiKTpudWxsLGw9eC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISFjLkFsbFt4XX0pLnNvcnQoZnVuY3Rpb24oeCxhKXt2YXIgYj1kW3hdLnN0YXIsYz1kW2FdLnN0YXI7cmV0dXJuIGI+Yz8tMTpiPT1jPzA6MX0pLG09bC5sZW5ndGg7cmV0dXJuIGk8Mnx8bC5sZW5ndGg8Mj9sLmZvckVhY2goZnVuY3Rpb24oeCxiKXt2YXIgZj1kW3hdO2lmKGMuQmF0Y2hbeF0pcmV0dXJuIGUucHVzaChjLkJhdGNoW3hdKTshKGd8fGh8fGYuc3Rhcil8fGYuZ3JvdXAmJmMuZGF0YSYmIWMuZGF0YS5ncm91cHNbZi5ncm91cF18fGUucHVzaChRLmRlbGF5KDUrYSpiKS50aGVuKG4uZmlsbCh4KSkpfSk6aT4xJiYobC5mb3JFYWNoKGZ1bmN0aW9uKHgsYil7dmFyIGY9ZFt4XSxrPSFmLmdyb3VwfHwhYy5kYXRhfHxjLmRhdGEuZ3JvdXBzW2YuZ3JvdXBdOyhnfHxmLnN0YXIpJiZrPyFqLl98fGpbai5fXS5sZW5ndGg+PWk/KGouXz14LGpbeF09W3hdKTpqW2ouX10ucHVzaCh4KTpoJiZrJiZlLnB1c2goUS5kZWxheSg1K2EqYikudGhlbihxLmZpbGwoeCkpLnRoZW4oYy5SZWxpc3QpKX0pLGU9KGouXz9vKCk6W10pLmNvbmNhdChlKSksUS5hbGxTZXR0bGVkKGUpLnRoZW4oZnVuY3Rpb24oKXsxPT1sLmxlbmd0aCYmaz9rLmxpc3QoInJvdyIsYy5Ob3JtREIoYy5BbGxbbFswXV0pKTpjLlJlbGlzdE5vdygpfSksZTtmdW5jdGlvbiBuKHgpe3ZhciBhLGI9W10uY29uY2F0KHgpLGU9Yi5qb2luKCIvIiksZj0hIWRbZV0uc3RhcjtyZXR1cm4oZ3x8aHx8ZikmJihhPWd8fGY/Yy5SZXEoe3VybDpifSkudGhlbihmdW5jdGlvbih4KXtpZihkW2VdKXJldHVybiB4LnNpemVzJiYoeC5kaXNrX3NpemU9eC5zaXplcy5maWxlLHguZGF0YV9zaXplPXguc2l6ZXMuYWN0aXZlKSwkLmV4dGVuZChkW2VdLHgse3N0YW1wOkRhdGUubm93KCl9KSwoaHx8ZikmJmRbZV0uc2VjdXJpdHkuc2VxPHBhcnNlSW50KGRbZV0udXBkYXRlX3NlcSk/cShlKTp2b2lkIDB9LGZ1bmN0aW9uKHgpezQwND09eCYmZFtlXSYmIl9ub2RlL19sb2NhbC9fbm9kZXMiIT1lP2RlbGV0ZSBjLkFsbFtlXTokLmV4dGVuZChkW2VdLGMuUGhvKCJkYlR5cGUiKSx7c3RhbXA6RGF0ZS5ub3coKX0pfSk6cShlKSk/KGMuQmF0Y2hbZV09US5hbGxTZXR0bGVkKFthXSkudGhlbihmdW5jdGlvbigpeyhtLT0xKT9jLlJlbGlzdCgpOmMuUmVsaXN0Tm93KCksZGVsZXRlIGMuQmF0Y2hbZV19KSxjLkJhdGNoW2VdKTokLkRlZmVycmVkKCkucmVzb2x2ZSgpfWZ1bmN0aW9uIG8oKXt2YXIgeD1bXTtyZXR1cm4gT2JqZWN0LmtleXMoaikuZm9yRWFjaChmdW5jdGlvbihiLGMpe2lmKCJfIiE9Yil7dmFyIGQ9altiXTt4LnB1c2goUS5kZWxheSgxK2EqYyooMHxNYXRoLmxvZyhpKSkpLnRoZW4ocC5maWxsKGQpKSl9fSksYy5QaG8oIkNvdWNoIikudmVyPiIwMDMuIiYmeC5wdXNoKG4oIl9ub2RlL19sb2NhbC9fbm9kZXMiKSkseH1mdW5jdGlvbiBwKHgpe3ZhciBiPXguc2xpY2UoMCksZT1bXSxmPVtdO3JldHVybiBjLlJlcSh7dXJsOlsiX2Ric19pbmZvIl0sbWV0aG9kOiJwb3N0Iixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeSh7a2V5czpifSl9KS50aGVuKGZ1bmN0aW9uKHgpe09iamVjdC5pc0FycmF5KHgpJiYoeC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXgua2V5LGI9ISFkW2FdLnN0YXI7aWYoZFthXSl7aWYoeC5lcnJvciYmIl9ub2RlL19sb2NhbC9fbm9kZXMiIT1hKXJldHVybiBkZWxldGUgYy5BbGxbYV0sdm9pZCAwO3ZhciBmPXguaW5mbztmJiYoZi5zaXplcyYmKGYuZGlza19zaXplPWYuc2l6ZXMuZmlsZSxmLmRhdGFfc2l6ZT1mLnNpemVzLmFjdGl2ZSksJC5leHRlbmQoZFthXSxmLHtzdGFtcDpEYXRlLm5vdygpfSkpLChofHxiKSYmZFthXS5zZWN1cml0eS5zZXE8cGFyc2VJbnQoZFthXS51cGRhdGVfc2VxKSYmZS5wdXNoKGEpfX0pLGMuUmVsaXN0KCksZS5sZW5ndGgmJihlLmZvckVhY2goZnVuY3Rpb24oeCxiKXtmLnB1c2goUS5kZWxheSgxK2EqYikudGhlbihxLmZpbGwoeCkpKX0pLFEuYWxsU2V0dGxlZChmKS50aGVuKGZ1bmN0aW9uKCl7Yy5SZWxpc3QoKX0pKSl9KX1mdW5jdGlvbiBxKHgpe3JldHVybiBjLlJlcSh7dXJsOlt4LCJfc2VjdXJpdHkiXX0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoZFt4XSl7dmFyIGI9JC5leHRlbmQoITAse3N0YW1wOkRhdGUubm93KCksc2VxOnBhcnNlSW50KGRbeF0udXBkYXRlX3NlcSksYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxhKTsiXyI9PXhbMF0mJmIubWVtYmVycy5yb2xlcy5wdXNoKCJfYWRtaW4iKTt2YXIgYz0iIjtjPWIubWVtYmVycy5yb2xlcy5sZW5ndGgrYi5tZW1iZXJzLm5hbWVzLmxlbmd0aD09MD9iLmFkbWlucy5yb2xlcy5sZW5ndGgrYi5hZG1pbnMubmFtZXMubGVuZ3RoIT0wPyJvcmFuZ2UxIGZpLXVubG9jayI6InJlZCBmaS11bmxvY2siOiJncmF5MyBmaS1sb2NrIiwkLmV4dGVuZChkW3hdLHtzZWN1cml0eTpiLHByb3RlY3RlZDpjfSl9fSl9fSxHZXRUYXNrczpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9KGEuQWxsLGEubGFuZywiPG5vYnI+ezF9PC9ub2JyPiIpLGQ9Jzxub2JyIHRpdGxlPSJ7Mn0iPnsxfTwvbm9icj4nLGU9JzxzcGFuIGNsYXNzPSJ7Mn0iPnsxfTwvc3Bhbj4nLGY9JC5EZWZlcnJlZCgpLGc9YS5BcnJvd3MsaD1hLlBobygiQ291Y2giKS52ZXIsaT1hLlBobygiUmVwbGljYXRvckRCIiksaj1PYmplY3QuaXNTdHJpbmcsaz1PYmplY3QuaXNBcnJheSxsPU9iamVjdC5pc09iamVjdDtyZXR1cm4hYS5teS5pbmRvbSgpfHxhLm15LnJvb3QoKS5oYXNDbGFzcygiaGlkZSIpfHx3aW5kb3cuZG9jdW1lbnQuaGlkZGVuP2YucmVzb2x2ZSgpLnByb21pc2UoKTpjdy5tZSgibmFtZSIpP2EuVGFza0xvb3BJbnRlcnZhbCE9YS5QaG8oIkNmZyIpLmxvb3BBY3RpdmVUYXNrcz8oYS5SZXN0YXJ0UG9sbC5kZWJvdW5jZSgxKSgpLGYucmVzb2x2ZSgpLnByb21pc2UoKSk6KG0oKS50aGVuKG4pLnRoZW4obykuZmFpbChmdW5jdGlvbih4LGIsYyl7eD40MDAmJng8NjAwJiYhY3cubWUoIm5hbWUiKT9hLlRhc2tzPVtdOmNvbnNvbGUubG9nKHgsYixjKX0pLmFsd2F5cyh0LmRlYm91bmNlKDEpKSxmLnByb21pc2UoKSk6KGEuVGFza3M9W10sdC5kZWJvdW5jZSgxKSgpLGYucHJvbWlzZSgpKTtmdW5jdGlvbiBtKCl7dmFyIHg9JC5EZWZlcnJlZCgpO3JldHVybiBhLlJlcSh7dXJsOlsiX2FjdGl2ZV90YXNrcyJdfSkudGhlbihjKS5mYWlsKHg9PmMoW10pKTtmdW5jdGlvbiBjKGIpe3ZhciBjPWIuY29uY2F0KGEuVGFza01vY2t8fFtdKS5zb3J0QnkoInR5cGUiKTtjLmZvckVhY2gocCksYy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guX25ldz0hMCx4LmRvY19pZD9kKCJkb2NfaWQiLHgsITApOngucmVwbGljYXRpb25faWQ/ZCgicmVwbGljYXRpb25faWQiLHgsITApOngucGlkJiZkKCJwaWQiLHgsITEpfSksYS5UYXNrcy5yZW1vdmUoZnVuY3Rpb24oeCl7cmV0dXJuIXguX25ldyYmIkVycm9yIiE9eC5waWQmJiJEb25lIiE9eC5waWR9KSxhLlRhc2tzLmZvckVhY2goZnVuY3Rpb24oeCl7eC5fbmV3PSExfSkseC5yZXNvbHZlKCl9ZnVuY3Rpb24gZCh4LGMsZCl7dmFyIGUsZjtjW3hdJiYoZCYmKGMuX3NlbGVjdGVkPWIudGFzay5zZWxlY3Rpb24uaW5kZXhPZihjLnJlcGxpY2F0aW9uX2lkKT4tMSksKGY9YS5UYXNrcy5maW5kSW5kZXgoZnVuY3Rpb24oYSl7cmV0dXJuIGFbeF09PWNbeF19KSk+LTE/KChlPWEuVGFza3NbZl0pLmZpbHRlciYmKGMuZmlsdGVyPWUuZmlsdGVyKSxlLnBob3Rvbl90YXNrJiYoYy5waG90b25fdGFzaz1lLnBob3Rvbl90YXNrKSxlLl90eXBlJiYoYy5fdHlwZT1lLl90eXBlKSxhLlRhc2tzW2ZdPWMpOmEuVGFza3MucHVzaChjKSl9fWZ1bmN0aW9uIG4oKXtpZighKGg8IjAwMi4iKSl7dmFyIHg9JC5EZWZlcnJlZCgpO3JldHVybiBhLlJlcSh7dXJsOlsiX3NjaGVkdWxlciIsImpvYnMiXX0pLnRoZW4oZnVuY3Rpb24oeCl7KCh4fHx7fSkuam9ic3x8W10pLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGIsYz14Lmhpc3Rvcnl8fFtdLGQ9Y1swXSxlPShkfHx7fSkudHlwZTtpZih4LnBpZCZsKHguaW5mbykpe3ZhciBmPXguaW5mby5yZXZpc2lvbnNfY2hlY2tlZHx8MCxnPXguaW5mby5jaGFuZ2VzX3BlbmRpbmd8fDA7KGZ8fGcpJiZNYXRoLmNlaWwoTWF0aC5taW4oMTAwKmcvKGYrZyksMTAwKSl9IXgucGlkJiZ4LmRvY19pZCYmYy5sZW5ndGgmJiJjcmFzaGVkIj09ZSYmKChiPWEuVGFza3MuZmluZChmdW5jdGlvbihhKXtyZXR1cm4gYS5kb2NfaWQ9PXguZG9jX2lkfSkpJiZhLlRhc2tzLnJlbW92ZShiKSxhLlRhc2tzLnB1c2goJC5leHRlbmQocih7X2lkOnguZG9jX2lkLHNvdXJjZTp4LnNvdXJjZSx0YXJnZXQ6eC50YXJnZXQsY29udGludW91czovY29udGludW91cyQvLnRlc3QoeC5pZCksb3duZXI6eC51c2VyfHwiPyIsX3JlcGxpY2F0aW9uX3N0YXRlOiJlcnJvciIsX3JlcGxpY2F0aW9uX3N0YXRlX3RpbWU6ZC50aW1lc3RhbXAsX3JlcGxpY2F0aW9uX2lkOnguaWQsX3JlcGxpY2F0aW9uX3N0YXRlX3JlYXNvbjpkLnJlYXNvbnx8IlVua25vd24ifSksYiYmYi5waG90b25fdGFzaz97cGhvdG9uX3Rhc2s6Yi5waG90b25fdGFza306e30pKSl9KX0pLmFsd2F5cyhmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkseC5wcm9taXNlKCl9fWZ1bmN0aW9uIG8oKXtpZighYS5QaG8oIkNmZyIpLnRhc2tzUmVhZFJlcGxpY2F0b3J8fGIudGFzay5maWx0ZXIuaW5kZXhPZigiY29tcGFjdGlvbiIpPi0xKXJldHVybiB0KCk7dmFyIHgsYz1pO3JldHVybih4PWIudGFzay5zZXE/YS5SZXEoe3VybDpbYywiX2NoYW5nZXMiLHtpbmNsdWRlX2RvY3M6ITAsc2luY2U6Yi50YXNrLnNlcX1dLGRhdGFUeXBlOiJqc29uIn0pOmEuUmVxKHt1cmw6W2MsIl9hbGxfZG9jcyIse2luY2x1ZGVfZG9jczohMCx1cGRhdGVfc2VxOiEwfV0sZGF0YVR5cGU6Impzb24ifSkpLnRoZW4oZnVuY3Rpb24oeCl7Yi50YXNrLnNlcT14Lmxhc3Rfc2VxfHx4LnVwZGF0ZV9zZXEsKHgucm93c3x8eC5yZXN1bHRzfHxbXSkubGVuZ3RoJiYoYS5QaG8oKS5SZXBsRG9jcz1PYmplY3QuY2xvbmUoKHgucm93c3x8eC5yZXN1bHRzfHxbXSkubWFwKHg9PnguZG9jKSwhMCkpLCh4LnJvd3N8fHgucmVzdWx0cykuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj14LmRvYztpZihiLl9kZWxldGVkKXJldHVybiBkZWxldGUgYS5SZXBsRG9jc1tiLl9pZF0sYS5UYXNrcy5yZW1vdmUoZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jX2lkPT1iLl9pZH0pLHZvaWQgMDthLlJlcGxEb2NzW2IuX2lkXT0kLmV4dGVuZCghMCx7fSxiKTt2YXIgYyxkPWIuX3JlcGxpY2F0aW9uX3N0YXRlOyJlcnJvciI9PWQmJihhLlRhc2tzLnJlbW92ZShmdW5jdGlvbih4KXtyZXR1cm4geC5kb2NfaWQ9PWIuX2lkfSksYS5UYXNrcy5wdXNoKHIoYikpKSwiY29tcGxldGVkIj09ZD8oYS5UYXNrcy5yZW1vdmUoZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jX2lkPT1iLl9pZH0pLGIuX3JlcGxpY2F0aW9uX2lkfHwoYi5fcmVwbGljYXRpb25faWQ9Y3cubGliLnNkYm0oYi5faWQpKSxhLlRhc2tzLnB1c2gocyhiKSkpOiJjb21wbGV0ZWQiIT1kJiYoaihiLmZpbHRlcil8fGsoYi5kb2NfaWRzKXx8bChiLnNlbGVjdG9yKSkmJihjPWEuVGFza3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5kb2NfaWQ9PWIuX2lkfSkpJiYoYy5maWx0ZXI9Yi5maWx0ZXJ8fGIuZG9jX2lkc3x8Yi5zZWxlY3RvciksYi5waG90b25fdGFzayYmKGM9YS5UYXNrcy5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4LmRvY19pZD09Yi5faWR9KSkmJihjLnBob3Rvbl90YXNrPWIucGhvdG9uX3Rhc2spfSl9KSx4fWZ1bmN0aW9uIHAoeCl7aWYoImdyb3VwIj09eC5fdHlwZSlyZXR1cm4geDt2YXIgYj14LnR5cGUsZT1udWxsPT1iPyIiOmIucmVwbGFjZSgvXy9nLCIgIikucmVwbGFjZSgvZGF0YWJhc2UvZ2ksIkRCIikucmVwbGFjZSgvY29tcGFjdGlvbi9naSwiY29tcGFjdCIpLnJlcGxhY2UoL3JlcGxpY2F0aW9uL2dpLCIiKTtlPShlPWUuY29tcGFjdCgpKT9lKyI6IjoiIix4Ll90eXBlPSIiO3ZhciBmPSc8ZGl2IGNsYXNzPSJ0YXJyb3ciPnsxfTwvZGl2PicsZz0nPHNwYW4gY2xhc3M9InJlZDEgZnM5NSI+ezF9PC9zcGFuPicsaD0nPHNwYW4gY2xhc3M9ImdyYXkgZnM5NSI+ezF9PC9zcGFuPic7aWYoeC5faW5kZXg9SlNPTi5zdHJpbmdpZnkoT2JqZWN0LnJlamVjdCh4LC9eXy8pKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1siLFx7XH1cW1xdXS9nLCIgIikuY29tcGFjdCgpLnN0cmlwVGFncygpLHguZG9jX2lkJiZhLlJlcGxEb2NzW3guZG9jX2lkXSl7dmFyIGo9YS5SZXBsRG9jc1t4LmRvY19pZF07eC5maWx0ZXI9ai5maWx0ZXJ8fGouZG9jX2lkc3x8ai5zZWxlY3Rvcnx8bnVsbH1rKHguZmlsdGVyKSYmKHguZG9jcz0hMCksIkVycm9yIj09eC5waWQ/KHguX3BpZD1nLmFzc2lnbignPHNwYW4gY2xhc3M9ImZpLWFsZXJ0IHJlZDEgZnM5NSI+PC9zcGFuPiBFcnJvcicpLHguX3BpZHNhZmU9eC5fcmVhc29ufHwiRXJyb3IiLGY9Zy5hc3NpZ24oZikpOiJEb25lIj09eC5waWQ/KHguX3BpZD1oLmFzc2lnbigiRG9uZSIpLHguX3BpZHNhZmU9IkRvbmUiKTooeC5fcGlkPSfigLk8c3BhbiBjbGFzcz0iZnM5NSI+Jyt4LnBpZC5yZXBsYWNlKC9bPD5dL2csIiIpKyI8L3NwYW4+4oC6Iix4Ll9waWRzYWZlPXkoeC5waWQpKTt2YXIgbD14LnN0YXJ0ZWRfb247aWYobCl7dmFyIG09RGF0ZS5jcmVhdGUoMWUzKitsKTttLmlzVGhpc1llYXIoKT9tLmlzVG9kYXkoKT94Ll9zdGFydD1tLmZvcm1hdCgie0h9OnttbX06e3NzfSIpOnguX3N0YXJ0PW0uZm9ybWF0KCJ7ZH0ge01vbn0sIHtIfTp7bW19Iik6eC5fc3RhcnQ9bS5mb3JtYXQoIntkfSB7TW9ufSB7eXl5eX0iKX1lbHNlIHguX3N0YXJ0PSI/Pz8iO2lmKCJFcnJvciI9PXgucGlkKXguX3Byb2dyZXNzPSIiO2Vsc2UgaWYoIkRvbmUiPT14LnBpZCl4Ll9wcm9ncmVzcz0iMTAwJSI7ZWxzZSBpZih4Ll9wcm9ncmVzcz0iICIsT2JqZWN0LmlzTnVtYmVyKHgucHJvZ3Jlc3MpKXguX3Byb2dyZXNzPSgwfHgucHJvZ3Jlc3MuY2xhbXAoMCwxMDApKSsiJSI7ZWxzZSBpZih4LmNoYW5nZXNfcGVuZGluZyl7dmFyIG49eC5yZXZpc2lvbnNfY2hlY2tlZHx8MCxvPXguY2hhbmdlc19wZW5kaW5nfHwwO24rbyYmKHguX3Byb2dyZXNzPU1hdGguY2VpbChNYXRoLm1pbigxMDAqbi8obitvKSwxMDApKSsiJSIpfWVsc2Uid2FpdGluZyI9PXgucHJvY2Vzc19zdGF0dXMmJih4Ll9wcm9ncmVzcz0iV2FpdHMiKTtpZih4LnNvdXJjZSYmeC50YXJnZXQpe3ZhciBwPXguc291cmNlLHI9eC50YXJnZXQscz1CKHApLHQ9QihyKSx1PSh4LnBob3Rvbl90YXNrLCIiKSxDPXguZG9jX2lkO3guX2dyb3VwPXYoeCk7dmFyIEQ9eC5fZ3JvdXA/IjgtIit4Ll9ncm91cDoiIjtzLmVuZHNXaXRoKHQpP3M9cy50byhzLmxlbmd0aC10Lmxlbmd0aCkrIn4iOnQuZW5kc1dpdGgocykmJih0PXQudG8odC5sZW5ndGgtcy5sZW5ndGgpKyJ+IiksL1wvLy50ZXN0KHMpJiYhL1wvLy50ZXN0KHQpPyh4Ll9sZWZ0PUQrKCJFcnJvciI9PXgucGlkPyIxLSI6Qz8iMi0iOiIzLSIpK3QrIjItIitzLHguX2Rlc2M9ZC5hc3NpZ24oeih0LDMwKSx5KHIpKStmLmFzc2lnbihxKHgsITApKStkLmFzc2lnbih6KHMsMzApLHkocCkpKTooeC5fbGVmdD1EKygiRXJyb3IiPT14LnBpZD8iMS0iOkM/IjItIjoiMy0iKStzKyIxLSIrdCx4Ll9kZXNjPWQuYXNzaWduKHoocywzMCkseShwKSkrZi5hc3NpZ24ocSh4LCExKSkrZC5hc3NpZ24oeih0LDMwKSx5KHIpKSksQyYmKHU9JzxkaXYgY2xhc3M9IncxMDBwIG9oIG53IGVsbCI+ezF9PC9kaXY+PGRpdiBjbGFzcz0idzEwMHAgb2ggbncgZWxsIGZzODUgbzgwIj57Mn08L2Rpdj4nLmFzc2lnbignPGEgY2xhc3M9InRkbiIgaHJlZj0iIycraSsiLyIreSh3KEMpKSsnIj4nK3koQykrIjwvYT4iLHguX2Rlc2MpLHguX2Rlc2M9dSl9ZWxzZS9jb21wYWN0aW9uLy50ZXN0KHgudHlwZSk/KHguX2Rlc2M9Yy5hc3NpZ24oQSh4LDYwKSkseC5fbGVmdD0iOS0iK3guZGF0YWJhc2UseC5fZ3JvdXA9dih4KSk6ImluZGV4ZXIiPT14LnR5cGU/KHguX2Rlc2M9Yy5hc3NpZ24oQSh4LDMwKSkseC5fbGVmdD0iSS0iK3guX2Rlc2MseC5fZ3JvdXA9IuKAjUluZGV4ZXLigI0iKTp4Ll9kZXNjPXguX3BpZDtyZXR1cm4geH1mdW5jdGlvbiBxKHgsYSl7YT1hO3ZhciBiPXguc291cmNlLGM9eC50YXJnZXQ7cmV0dXJuIHguc291cmNlJiZ4LnRhcmdldD8odm9pZCAwPT09YSYmKGE9L1wvLy50ZXN0KEIoYikpJiYhL1wvLy50ZXN0KEIoYykpKSxhP3guZG9jcz9nWzVdOnguZmlsdGVyP2dbNF06Z1szXTp4LmRvY3M/Z1syXTp4LmZpbHRlcj9nWzFdOmdbMF0pOiIifWZ1bmN0aW9uIHIoeCl7cmV0dXJuICQuZXh0ZW5kKHMoeCkse3BpZDoiRXJyb3IiLF9yZWFzb246eSh4Ll9yZXBsaWNhdGlvbl9zdGF0ZV9yZWFzb258fCJFcnJvciIpLGRvY19pZDp4Ll9pZCxwcm9ncmVzczowfSl9ZnVuY3Rpb24gcyh4KXt2YXIgYT1EYXRlLmNyZWF0ZSh4Ll9yZXBsaWNhdGlvbl9zdGF0ZV90aW1lKS52YWx1ZU9mKCkvMWUzfDA7cmV0dXJue3BpZDoiRG9uZSIsY29udGludW91czp4LmNvbnRpbnVvdXMscmVwbGljYXRpb25faWQ6eC5fcmVwbGljYXRpb25faWQsX3NlbGVjdGVkOmIudGFzay5zZWxlY3Rpb24uaW5kZXhPZih4Ll9yZXBsaWNhdGlvbl9pZCk+LTEsZG9jX2lkOnguX2lkLHByb2dyZXNzOjEwMCxwaG90b25fdGFzazp4LnBob3Rvbl90YXNrfHwiIixzb3VyY2U6bCh4LnNvdXJjZSk/eC5zb3VyY2UudXJsfHwi4oCUIjp4LnNvdXJjZSsiIixmaWx0ZXI6eC5maWx0ZXJ8fHguZG9jX2lkc3x8eC5zZWxlY3Rvcnx8bnVsbCx0YXJnZXQ6bCh4LnRhcmdldCk/eC50YXJnZXQudXJsfHwi4oCUIjp4LnRhcmdldCsiIixzdGFydGVkX29uOmEsdXBkYXRlZF9vbjphLHR5cGU6InJlcGxpY2F0aW9uIn19ZnVuY3Rpb24gdCgpe3ZhciBjPWEuVGFza3Muc2xpY2UoMCk7Yz1jLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gcCh4KX0pLnNvcnQoZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5fbGVmdDxhLl9sZWZ0Py0xOnguX2xlZnQ+YS5fbGVmdD8xOjB9KTt2YXIgZD17fTtjPShjPWMucmV2ZXJzZSgpKS5yZWR1Y2UoZnVuY3Rpb24oeCxhLGUpe3gucHVzaChhKTt2YXIgZixnPXYoYSksaD1jW2UrMV07aWYoIWcpcmV0dXJuIHg7ZFtnXXx8KGRbZ109e3J1bjowLGRvbmU6MCxlcnI6MCxzZWw6MH0pLChmPWRbZ10pWyJFcnJvciI9PWEucGlkPyJlcnIiOiJEb25lIj09YS5waWQ/ImRvbmUiOiJydW4iXSs9MSxmLnNlbCs9YS5fc2VsZWN0ZWQ/MTowO3ZhciBpPSJfXyIrY3cubGliLnNkYm0oZyk7cmV0dXJuIGgmJnYoaCk9PWd8fHgucHVzaCh7cGlkOmksX3BpZDoiIixjb250aW51b3VzOiExLHJlcGxpY2F0aW9uX2lkOmksZG9jX2lkOiIiLHBob3Rvbl90YXNrOmcscmVwbGljYXRpb25faWQ6Lyhjb21wYWN0aW9ufGluZGV4ZXIpJC8udGVzdChhLnR5cGUpPyIiOiJfXyIrZy5lc2NhcGVIVE1MKCksZmlsdGVyOiIiLHRhcmdldDoiIixzdGFydGVkX29uOiIiLHVwZGF0ZWRfb246IiIsX3R5cGU6Imdyb3VwIixfc2VsZWN0ZWQ6Zi5ydW4rZi5kb25lK2YuZXJyPT1mLnNlbCxfcnVuOmYucnVuLF9ncm91cDpnLF9mb2xkOiEhYi50YXNrLmZvbGRbZ10sX2Rlc2M6eShnKSxfcHJvZ3Jlc3M6dShmKX0pLHh9LFtdKSxhLlRhc2tzLmxlbmd0aD0wLGMucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oeCl7YS5UYXNrcy5wdXNoKHgpfSksYi50YXNrLnNlbGVjdGlvbi5sZW5ndGg9MCxhLlRhc2tzLmZvckVhY2goeD0+eC5fc2VsZWN0ZWQ/Yi50YXNrLnNlbGVjdGlvbi5wdXNoKHgucmVwbGljYXRpb25faWQpOiIiKSx4JiYoYS5teS5yZWNhbGMoIiN0YXNrLWxpc3QiKSxhLm15LmNoZWNrKCIjdGFzay1jb2xzIiksYS5teS5jaGVjaygiI3Rhc2stbGlzdCIpLGEubXkuY2hlY2soIiNidG4tc2VsZWN0LXRhc2tzIikpLGYucmVzb2x2ZShhLlRhc2tzKX1mdW5jdGlvbiB1KHgpe3ZhciBhPSIgdGFzay1yb3ctdGlwIjtyZXR1cm5beC5lcnI/ZS5hc3NpZ24oeC5lcnIsInJlZDEgYmctcmVkNiIrYSk6IiIseC5ydW4/ZS5hc3NpZ24oeC5ydW4sImdyZWVuIGJnLWdyZWVuNiIrYSk6IiIseC5kb25lP2UuYXNzaWduKHguZG9uZSwiZ3JheTEgYmctZ3JheTYgbzgwIithKToiIl0uY29tcGFjdCghMCkuam9pbigiICIpfWZ1bmN0aW9uIHYoeCl7cmV0dXJuL2NvbXBhY3Rpb24kLy50ZXN0KHgudHlwZSk/IuKAjURCIGNvbXBhY3Rpb27igI0iOiJpbmRleGVyIj09eC50eXBlPyLigI1JbmRleGVy4oCNIjp4LnBob3Rvbl90YXNrfHxhKHgudGFyZ2V0KXx8YSh4LnNvdXJjZSl8fCIiO2Z1bmN0aW9uIGEoeCl7aWYoIS9eaHR0cFtzXT86XC8vLnRlc3QoeCkpcmV0dXJuIiI7dmFyIGE9IiI7dHJ5eyJsb2NhbGhvc3QiIT0oYT1uZXcgVVJMKHgpLmhvc3RuYW1lKyIiKSYmIjEyNy4wLjAuMSIhPWF8fChhPSIiKX1jYXRjaCh4KXt9cmV0dXJuIGF9fWZ1bmN0aW9uIHcoeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX1mdW5jdGlvbiB5KHgpe3JldHVybigoL15odHRwW3NdP1w6XC9cLy8udGVzdCh4KT9DKHgpOngpKyIiKS5lc2NhcGVIVE1MKCl9ZnVuY3Rpb24geih4LGEpe3ZhciBiPWF8fDIwO2lmKCEvXC8vLnRlc3QoeCkpcmV0dXJuIHkoKHgrIiIpLnRydW5jYXRlKGIsIm1pZGRsZSIsIuKApiIpKTt2YXIgYz14LnNwbGl0KCIvIik7cmV0dXJuIGNbMF0ubGVuZ3RoPi42KmI/eShjWzBdLnRydW5jYXRlKC42KmJ8MCwibWlkZGxlIiwi4oCmIikpKyIvIit5KGMuc2xpY2UoMSkuam9pbigiLyIpKTp5KCh4KyIiKS50cnVuY2F0ZShiLCJtaWRkbGUiLCLigKYiKSl9ZnVuY3Rpb24gQSh4LGEpe3ZhciBiPXguZGF0YWJhc2V8fCI/PyIsYz14LmRlc2lnbl9kb2N1bWVudHx8IiI7cmV0dXJuL3NoYXJkc1wvWzAtOWEtZl17OH0tWzAtOWEtZl17OH1cLy4rJC8udGVzdChiKT96KGIuc3Vic3RyKDI1KS5yZXBsYWNlKC9cLlxkKyQvLCIiKSxhKSsoYz8iOiBfZC8iK3koYy5zdWJzdHIoOCkpOiIiKStkKGIuc3Vic3RyKDcsMTcpKTp6KGIsYSkrKGM/IjogX2QvIit5KGMuc3Vic3RyKDgpKToiIik7ZnVuY3Rpb24gZCh4KXt2YXIgYT14LnNwbGl0KCItIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBwYXJzZUludCh4LDE2KX0pLGI9TWF0aC5yb3VuZChhWzFdLWFbMF0rMSksYz1NYXRoLnJvdW5kKGFbMF0vYisxKSxkPU1hdGgucm91bmQoNDI5NDk2NzI5Ni9iKTtyZXR1cm4gZS5hc3NpZ24oIiBbIitjKyIvIitkKyJdIiwiZnM5NSBncmF5MSIpfX1mdW5jdGlvbiBCKHgpe2lmKCEvXmh0dHBbc10/OlwvXC8uKy8udGVzdCh4KSlyZXR1cm4geHx8IiI7dmFyIGE9bmV3IFVSTCh4KSxiPSIxMjcuMC4wLjEiPT1hLmhvc3RuYW1lfHwibG9jYWxob3N0Ij09YS5ob3N0bmFtZT9hLnBhdGhuYW1lLnJlcGxhY2UoL15cL3xcLyQvZywiIik6YS5ob3N0bmFtZSthLnBhdGhuYW1lLnJlcGxhY2UoL1wvJC8sIiIpO3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYil9ZnVuY3Rpb24gQyh4KXtyZXR1cm4geC5yZXBsYWNlKC9eKGh0dHBbc10/XDpcL1wvW15cOkBcL10rOilbXkBdKyhALispJC8sIiQx4oCi4oCi4oCi4oCi4oCiJDIiKX19LFJlc3RhcnRQb2xsOmZ1bmN0aW9uKCl7dmFyIHg9dGhpczt4LlRhc2tMb29wSW50ZXJ2YWw9eC5QaG8oIkNmZyIpLmxvb3BBY3RpdmVUYXNrcyx4LlRhc2tMb29wJiYoeC5UYXNrTG9vcC5jYW5jZWwoKSx4LkdldFRhc2tzKCEwKSkseC5UYXNrTG9vcD14LkdldFRhc2tzLmZpbGwoITApLmV2ZXJ5KDFlMyp4LlRhc2tMb29wSW50ZXJ2YWwpfSxSZXN0YXJ0VGFza3M6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXMsZD1jLmRhdGEsZT1jLmxhbmcsZj0kLkRlZmVycmVkKCksZz0oYXx8Yy5kYXRhLnRhc2suc2VsZWN0aW9uKS5maWx0ZXIoYy5Ob0dyb3VwKS5zbGljZSgwKSxoPWMuUGhvKCJSZXBsaWNhdG9yREIiKSxpPVtdLGo9W10saz1jdy5saWIuYTJvKGQudGFzay5saXN0Lm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsaWNhdGlvbl9pZH0pKTtnPWcuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiEha1t4XX0pO3ZhciBsPWMuVGFza3MuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiBnLmluZGV4T2YoeC5yZXBsaWNhdGlvbl9pZCk+LTEmJnguZG9jX2lkfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmRvY19pZH0pLG09Yy5UYXNrcy5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGcuaW5kZXhPZih4LnJlcGxpY2F0aW9uX2lkKT4tMSYmIXguZG9jX2lkfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybntjYW5jZWw6ITAscmVwbGljYXRpb25faWQ6eC5yZXBsaWNhdGlvbl9pZH19KSxuPXt3aWR0aDozMDAsbWFuaWZlc3Q6Yy5QaG8oIkNvbmZpcm0iKSxkYXRhOnt0ZXh0OlsnPGRpdiBjbGFzcz0iZnMxMzAgJysoeD8icmVkIjoib3JhbmdlIikrJyBtYjUiPicsZVt4PyJUWFRfVEFTS19TVE9QX1RJVExFIjoiVFhUX1RBU0tfUkVTWU5DX1RJVExFIl0sIjwvZGl2PiIsZVt4PyJUWFRfVEFTS19TVE9QX1dBUk4iOiJUWFRfVEFTS19SRVNZTkNfV0FSTiJdKGwubGVuZ3RoLG0ubGVuZ3RoLGgpXS5qb2luKCIiKSx5ZXNjc3M6eD8icmVkIjoib3JhbmdlIix5ZXM6ZS5CVE5fVEFTS19QUk9DRUVELG5vOmUuQlROX0NBTkNFTCxjYW5jZWw6IiIsdXNlQnV0dG9uczohMH0sY3NzOiJsaDE2MCB4Z3JheSBwMjAgcGIyNSIsY2xvc2U6Yy5QaG8oImxhbmciKS5CVE5fWERMRyxlc2M6ITAsZW50ZXI6ITEsc2NyZWVuOiEwLGdsb2JhbDohMH07cmV0dXJuKGEmJmEubGVuZ3RoJiZsLmxlbmd0aD8kLkRlZmVycmVkKCkucmVzb2x2ZSh7Y21kOiJ5ZXMifSk6eD8kLm15Lm1vZGFsKG4pOihiPWMuTW9kYWxzLnRhc2tzPWMubXkuZmluZCgiI2J0bi1yZXN5bmMiKSkubW9kYWwoJC5leHRlbmQobix7cm9vdDpjLm15LmZpbmQoIiNycGFuZWwiKSxzY3JlZW46ITEsZ2xvYmFsOiExLGNzczoibGgxNjAgeGdyYXkgcDE1IHBiMjAiLGFsaWduOiJ0b3A6MTAyJTtsZWZ0OjA7Iixub3NlOiJ0b3AiLGZvY3VzOiIjYnRuLXllcyJ9KSkpLnRoZW4oZnVuY3Rpb24oeCl7aWYoInllcyIhPXguY21kKXJldHVybiBmLnJlamVjdCg5OTksIkNhbmNlbGxlZCIsIkNhbmNlbGxlZCIpO28oKX0pLmZhaWwoZnVuY3Rpb24oKXtmLnJlamVjdCg5OTksIkNhbmNlbGxlZCIsIkNhbmNlbGxlZCIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5Nb2RhbHMudGFza3M9PWImJihjLk1vZGFscy50YXNrcz1udWxsKX0pLGYucHJvbWlzZSgpO2Z1bmN0aW9uIG8oKXt2YXIgYTtmdW5jdGlvbiBiKHgpe3JldHVybiBjLlJlcSh7dXJsOltoLCJfYnVsa19kb2NzIl0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9LGRhdGE6SlNPTi5zdHJpbmdpZnkoe2RvY3M6eH0pfSl9bC5sZW5ndGgmJihhPWMuUmVxKHt1cmw6W2gsIl9hbGxfZG9jcyIse2luY2x1ZGVfZG9jczohMCxhdHRhY2htZW50czohMH1dLG1ldGhvZDoiUE9TVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoe2tleXM6bH0pfSkudGhlbihmdW5jdGlvbih4KXt4LnJvd3MuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT14LmRvYztqLnB1c2goe19pZDphLl9pZCxfcmV2OmEuX3JldixfZGVsZXRlZDohMH0pO3ZhciBiPXtfaWQ6YS5faWR9O2EuX2F0dGFjaG1lbnRzJiYoYi5fYXR0YWNobWVudHM9YS5fYXR0YWNobWVudHMpLCQuZXh0ZW5kKGIsT2JqZWN0LnJlamVjdChhLC9eXy8pKSxpLnB1c2goYil9KX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYihqKX0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoeClyZXR1cm4gYTtjdy5saWIubm90ZShjLmxhbmcuTVNHX1RBU0tfUkVTWU5DKTt2YXIgZD0kLkRlZmVycmVkKCk7cmV0dXJuIGZ1bmN0aW9uKCl7YihpKS50aGVuKGZ1bmN0aW9uKHgpe3ZhciBhPXgucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEub2smJiIxLSIhPShhLnJldnx8IiIpLnN1YnN0cigwLDIpfHx4LnB1c2goYS5pZCkseH0sW10pO2lmKCFhLmxlbmd0aClyZXR1cm4gZC5yZXNvbHZlKHgpO3ZhciBjPWN3LmxpYi5hMm8oYSk7cmV0dXJuIGIoaS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISFjW3guX2lkXX0pKS50aGVuKGZ1bmN0aW9uKHgpe2QucmVzb2x2ZSh4KX0pfSkuZmFpbChmdW5jdGlvbih4LGEsYil7ZC5yZWplY3QoeCxhLGIpfSl9LmRlYm91bmNlKDFlMykoKSxkLnByb21pc2UoKX0pKSxtLmxlbmd0aCYmKGwubGVuZ3RoP2EudGhlbjpmdW5jdGlvbih4KXthPXgoKX0pKGZ1bmN0aW9uKCl7dmFyIHg9JC5EZWZlcnJlZCgpLGE9bS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGMuUmVxKHt1cmw6WyJfcmVwbGljYXRlIl0sbWV0aG9kOiJQT1NUIixkYXRhVHlwZToianNvbiIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoeCl9KX0pO3JldHVybiBRLmFsbFNldHRsZWQoYSkudGhlbihmdW5jdGlvbihhKXt4LnJlc29sdmUoKX0sZnVuY3Rpb24oKXt4LnJlc29sdmUoKX0pLHgucHJvbWlzZSgpfSksYS50aGVuKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZVt4PyJNU0dfVEFTS19TVE9QIjoiTVNHX1RBU0tfUkVTWU5DX09LIl0sIm9rIiksJC5teS5yYWRpbygiZGJsaXN0IixbaF0pLHh8fCQubXkucmFkaW8oImRidXBkYXRlIix7ZGI6aCxjbWQ6IndyaXRlIixkb2NzOmkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Ll9pZH0pfSksZi5yZXNvbHZlKGkpfSkuZmFpbChmdW5jdGlvbihhLGIsYyl7Y3cubGliLm5vdGUoZVt4PyJFUlJfVEFTS19TVE9QIjoiRVJSX1RBU0tfUkVTWU5DIl0uYXNzaWduKGErIjogIitiKSwiZXJyb3IiKSxjb25zb2xlLmxvZyhhLGIsYywiVW5zYXZlZCB0YXNrczoiLGkpLGYucmVqZWN0KGEsYixjKX0pfX0sVFRhc2s6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5kYXRhLGI9JzxkaXYgY2xhc3M9ImNiLXRhc2stcm93IGRpYiB2YXQgZnM5MCI+ezF9PC9kaXY+JztyZXR1cm4gYj0oIkVycm9yIiE9eC5waWR8fHguZG9jX2lkKSYmeC5yZXBsaWNhdGlvbl9pZD9iLmFzc2lnbignPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ0YXNrLXNlbGVjdGlvbiIgY2xhc3M9ImNwIHJvdy1zZWwgbWwyIiB2YWx1ZT0ie3JlcGxpY2F0aW9uX2lkfSIgJysoeC5fc2VsZWN0ZWQ/ImNoZWNrZWQ+IjoiPiIpKTpiLmFzc2lnbigiJm5ic3A7IiksKCJncm91cCIhPXguX3R5cGU/Wyc8ZGl2IGNsYXNzPSJ2aWV3LXJvdyBwbDI3IHByOCI+JyxiLCc8ZGl2IGNsYXNzPSJ0YXNrbGFiZWwgY3AgZGliIHcyMHAgZWxsIGZzOTUgcHQxIGdyZWVuMSB2YXQiIHRpdGxlPSJ7X3BpZHNhZmV9Ij57X3BpZH08L2Rpdj4nLCc8ZGl2IGNsYXNzPSJkaWIgdzcwcCBlbGwgcHIxMCB2YXQiPntfdHlwZX0ge19kZXNjfTwvZGl2PicsIkRvbmUiPT14LnBpZHx8IkVycm9yIj09eC5waWQ/Wyc8ZGl2IGNsYXNzPSJkaWIgdzEwcCB2YXQgdGFyIGdyYXkgZnM5MCI+JywnPGRpdiBjbGFzcz0iYnRuLWRvbmUtcmVzdGFydCBwMCBkaWIgdmF0IHRhYyBiZy1ncmF5NiBncmF5MSBicjIgY3AiICcsJ2RhdGEtaWQ9IntyZXBsaWNhdGlvbl9pZH0iIHN0eWxlPSJtaW4td2lkdGg6NjAlIiB0aXRsZT0iUmVzdGFydCBzeW5jIj4nLCc8c3BhbiBjbGFzcz0iZmktcGxheSI+PC9zcGFuPicsIjwvZGl2PjwvZGl2PiJdLmpvaW4oIiIpOlsnPGRpdiBjbGFzcz0iZGliIHcxMHAgdmF0IHRhciBncmF5IHB0MSBmczkwIj57X3Byb2dyZXNzfTwvZGl2PiddLmpvaW4oIiIpLCI8L2Rpdj4iXS5qb2luKCIiKTpbJzxkaXYgY2xhc3M9InZpZXctcm93IHBsMjcgcHI4Ij4nLGIsJzxkaXYgY2xhc3M9ImRpYiB3ODBwIGVsbCBwcjEwIHZhdCBvODAgdGFzay1mb2xkZ3JvdXAgY3AiICcsJ2RhdGEtZ3JvdXA9InsnKyh4LnJlcGxpY2F0aW9uX2lkPyJyZXBsaWNhdGlvbl9pZCI6Il9ncm91cCIpKyd9Ij4nLCc8c3BhbiBjbGFzcz0iYm9sZGVyIj57X2Rlc2N9PC9zcGFuPicsJzxzcGFuIGNsYXNzPSInKyhhLnRhc2suZm9sZFt4LnBob3Rvbl90YXNrXT8iYXJpZ2h0IjoiYWRvd24iKSsnIj48L3NwYW4+JywiPC9kaXY+IiwnPGRpdiBjbGFzcz0iZGliIHcyMHAgdmF0IHRhciBncmF5IGJvbGRlciBmczkwIj57X3Byb2dyZXNzfTwvZGl2PicsIjwvZGl2PiJdLmpvaW4oIiIpKS5hc3NpZ24oeCl9LHBhcmFtczp7c3RyaWN0OiEwfX0sJGxvZzp7aWQ6ImN3LlBob3Rvbi4kbG9nIixsYW5nOnt9LGRhdGE6e3NyYzoiY291Y2giLHNlYXJjaDoiIixzaXplOiIxMCIsb2Zmc2V0OiIwIixsaW5lczoiIixkaXI6InJldmVyc2UifSxQcmV2OltdLGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4ibG9nIn0saWNvQ3NzOmZ1bmN0aW9uKHgpe3JldHVybiJmaS1hbGlnbi1sZWZ0IGZzOTAifSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJMb2dzIn0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYXx8MSE9eC5sZW5ndGh8fCJfbG9nIiE9eFswXT9udWxsOnt0aXRsZToiTG9ncyJ9fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7cmV0dXJuICQuZXh0ZW5kKGIsYS5QaG8oIkxzIikoIkxvZ3MiKXx8e30pLGEuUHJldj1bYi5zaXplLGIub2Zmc2V0XSxhLkdldCghMSwhMCkudGhlbihmdW5jdGlvbihiKXt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSxhLm5pY2VTY3JvbGwoeC5maW5kKCIjcmVwb3J0IikpfSl9LHVpOnsiI2xzaXplIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5zaXplPWlzTmFOKGEpfHwhYT8iMTAiOigwfCthKS5jbGFtcCgxLDUwMCkrIiIsdGhpcy5teS5maW5kKCIjbG9mZnNldCIpLmF0dHIoInN0ZXAiLHguc2l6ZSkpLHguc2l6ZX19LCIjbG9mZnNldCI6Im9mZnNldCIsIiNsb2ctc2VhcmNoIjp7ZGVsYXk6MTUwLGJpbmQ6InNlYXJjaCIsY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99fSwiI2xvZ2RpciI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfRElSKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5kaXI9YSsiIikseC5kaXJ9fSwiI2xvZy1wcm94eSI6e2RlbGF5OjMwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztbeC5zaXplLHgub2Zmc2V0LHguZGlyXSsiIiE9Yi5QcmV2KyIiJiZiLkdldCgpLnRoZW4oZnVuY3Rpb24oKXtiLm15LnJlY2FsYygiI2xvZ3MiKX0pLmFsd2F5cyhmdW5jdGlvbigpe2IuUHJldj1beC5zaXplLHgub2Zmc2V0LHguZGlyXSxiLlBobygiTHMiKSgiTG9ncyIse3NpemU6eC5zaXplfSl9KX0sd2F0Y2g6WyIjbHNpemUiLCIjbG9mZnNldCIsIiNsb2dkaXIiXX0sIiNsb2dzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiO3JldHVybiB4LnNlYXJjaC5sZW5ndGg+MT8oYj1uZXcgUmVnRXhwKCIoIitSZWdFeHAuZXNjYXBlKHguc2VhcmNoKSsiKSIsImkiKSx4LmxpbmVzLmxpbmVzKCkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIlsiIT1hWzBdJiZ4Lmxlbmd0aD94W3gubGVuZ3RoLTFdKz0iXG4iK2E6eC5wdXNoKGEpLHh9LFtdKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGIudGVzdCh4KX0pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsYWNlKGIsIu+/sSQx77+wIikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoIu+/sSIsJzxzcGFuIGNsYXNzPSJsb2ctZm91bmQiPicpLnJlcGxhY2UoIu+/sCIsIjwvc3Bhbj4iKX0pLmpvaW4oIlxuIikpOngubGluZXMuZXNjYXBlSFRNTCgpfSx3YXRjaDpbIiNsb2ctc2VhcmNoIl19LCIjYnRuLXJlbG9hZCI6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzO2IuR2V0KCkudGhlbihmdW5jdGlvbigpe2IubXkucmVjYWxjKCIjbG9ncyIpfSl9fSwiI2J0bi1sb2ctbWludXMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHgub2Zmc2V0PSgreC5vZmZzZXQtK3guc2l6ZSkuY2xhbXAoMCwxZTEwKSsiIil9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuISt4Lm9mZnNldH19LHdhdGNoOiIjbG9mZnNldCIscmVjYWxjOiIjbG9mZnNldCJ9LCIjYnRuLWxvZy1wbHVzIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJih4Lm9mZnNldD0oK3gub2Zmc2V0KyAreC5zaXplKS5jbGFtcCgwLDFlMTApKyIiKX0sd2F0Y2g6IiNsb2Zmc2V0IixyZWNhbGM6IiNsb2Zmc2V0In19LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiNyZXBvcnQiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LEhUTUw6JzxkaXYgaWQ9ImEtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIG53IHB0MTggcGwyMCBwcjIwIGxoMTYwIj48ZGl2IGNsYXNzPSJmciB3MTUwIGZzOTUiPjxkaXYgY2xhc3M9ImZpLW1hZ25pZnlpbmctZ2xhc3MgeGdyYXkgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibG9nLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSH0iIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxOXB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB1aS1zZWFyY2gtY2xlYXIiIHN0eWxlPSJtYXJnaW4tbGVmdDotMTlweCFpbXBvcnRhbnQ7Im9uY2xpY2s9IiQodGhpcykuc2libGluZ3MoXCdpbnB1dDplcSgwKVwnKS52YWwoXCdcJykuYmx1cigpIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibncgZGliIHZhdCI+PGJ1dHRvbiBpZD0iYnRuLXJlbG9hZCIgY2xhc3M9Inc0MCBtcjggdmF0IiB0aXRsZT0ie1BMQ19SRUxPQUR9Ij48c3BhbiBjbGFzcz0iZmktbG9vcCI+PC9zcGFuPjwvYnV0dG9uPjxzcGFuIGNsYXNzPSJib2xkZXIgZnMxNTAgbGgxMzAgeGdyYXkgbXIzMCBkaWIgdmF0Ij57VFhUX1RJVExFfTwvc3Bhbj4gPGRpdiBjbGFzcz0iZGliIHZhdCI+PHNwYW4+e1RYVF9TSVpFfTwvc3Bhbj4gPGlucHV0IGlkPSJsc2l6ZSIgdHlwZT0ibnVtYmVyIiBjbGFzcz0idzcwIiBtaW49IjEiIG1heD0iNTAwIiBzdGVwPSIxIj4gPHNwYW4+e1RYVF9LQn0sIHtUWFRfT0ZGU0VUfTwvc3Bhbj4gPGlucHV0IGlkPSJsb2Zmc2V0IiB0eXBlPSJudW1iZXIiIGNsYXNzPSJ3MTAwIiBtaW49IjAiIG1heD0iMTAwMDAwMCIgc3RlcD0iMTAiPiA8c3Bhbj57VFhUX0tCfTwvc3Bhbj4gPC9kaXY+PHNwYW4gY2xhc3M9ImJ1dHRvbnMgbWwxMCI+PGJ1dHRvbiBpZD0iYnRuLWxvZy1taW51cyIgY2xhc3M9Inc0MCBtcjIgcGwwIHByMCI+PHNwYW4gY2xhc3M9ImZpLWFycm93LWxlZnQgbzgwIj48L3NwYW4+PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWxvZy1wbHVzIiBjbGFzcz0idzQwIG1yMiBwbDAgcHIwIj48c3BhbiBjbGFzcz0iZmktYXJyb3ctcmlnaHQgbzgwIj48L3NwYW4+PC9idXR0b24+PC9zcGFuPjxzcGFuIGlkPSJsb2dkaXIiIGNsYXNzPSJtbDIwIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0icGFuZWxoZWlnaHQtNCBmZWF0aGVyIG10NCI+PGRpdiBpZD0icmVwb3J0IiBjbGFzcz0icGwyMCBwcjIwIHBhbmVsaGVpZ2h0LTQgcHJlIj48ZGl2IGlkPSJsb2dzIiBjbGFzcz0iZnM5MCBsaDE0MCBwYjEyIHB0OCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibG9nLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxzdHlsZTp7IiBwcmUiOiJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IiwiIC5sb2ctZm91bmQiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIzMiwxMjEsMC45NCk7Ym9yZGVyLXJhZGl1czoycHg7In0sR2V0OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPTEwMjQqeC5kYXRhLnNpemUsYj0xMDI0Kih4LmRhdGEub2Zmc2V0fHwwKSxjPVsiX2xvZyIse2J5dGVzOmF9LGI/e29mZnNldDpifTpudWxsXS5jb21wYWN0KCk7cmV0dXJuIHguUmVxKHt1cmw6YyxkYXRhVHlwZToidGV4dCJ9KS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBiPWEubGluZXMoKS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4iWyIhPWFbMF0mJngubGVuZ3RoP3hbeC5sZW5ndGgtMV0rPSJcbiIrYTp4LnB1c2goYSkseH0sW10pOyJyZXZlcnNlIj09eC5kYXRhLmRpciYmKGI9Yi5yZXZlcnNlKCkpLHguZGF0YS5saW5lcz1iLmpvaW4oIlxuIil9KX0scGFyYW1zOntzdHJpY3Q6ITB9fSwkc3RhdHM6e2lkOiJjdy5Db3VjaC5Nb25pdG9yIixDb25maWc6e3N0YXRzTWF4VGltZWZyYW1lOjE4MDAsc2VyaWVNYXhMZW5ndGg6NGUzfSxkYXRhOntwcmVzZXRNb3VudGVkOiExLGRvYzp7bmFtZToiU3RhdHMifX0saGFzaDpmdW5jdGlvbigpe3JldHVybiJfc3RhdHMifSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJTdGF0cyJ9LG1hdGNoOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGF8fDEhPXgubGVuZ3RofHwiX3N0YXRzIiE9eFswXT9udWxsOnt0aXRsZToiU3RhdHMifX0sdWk6eyIjbm9kZXMiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sbGlzdGVuOntwaG90b25fY2ZnX2NoYW5nZTpmdW5jdGlvbigpe3ZhciB4PXRoaXM7eC5DZmcoKS5zdGF0c1JlZnJlc2ghPXguUGhvKCJDZmciKS5zdGF0c1JlZnJlc2gmJih4LkNmZygpLnN0YXRzUmVmcmVzaD14LlBobygiQ2ZnIikuc3RhdHNSZWZyZXNoLCQubXkucmFkaW8oImNvdWNoX21vbml0b3JfY2ZnX2NoYW5nZSIsT2JqZWN0LmNsb25lKHguQ2ZnKCkpKSl9LHVzZXJDdHg6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNPYmplY3QoYSkmJiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KX19fSwiI2VuY3J5cHQiOntpbml0OmZ1bmN0aW9uKCl7fSxiaW5kOiJkdW1teSJ9LCIjbW5hbWUiOntiaW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ob3N0fSxjc3M6eyJib2xkZXIgZnMxODAiOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGZzMTcwOmZ1bmN0aW9uKCl7cmV0dXJuITB9fX19LGRpZTpmdW5jdGlvbih4KXt0aGlzLlRpbWVyLmNhbmNlbCgpO3ZhciBhPXguZmluZCgiI25vZGVzIikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxzdHlsZTp7IiAubm9jd21pbiI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiICNhcHAtc2VhcmNoIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsiLCIgI25vZGUtdGlsZXMiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14LndpZHRoKCksYz0oYS5QaG8oIk1lbWJlcnNoaXAiKS5jbHVzdGVyX25vZGVzfHxbMV0pLmxlbmd0aCxkPSIiO3JldHVybiEhYS5kYXRhLnByZXNldE1vdW50ZWQmJih4LmZpbmQoImRpdiNwcmltZSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRyaWdnZXIoInJlY2FsYyIsITApfSkseC5maW5kKCJkaXYjeWF4aXMiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS50cmlnZ2VyKCJyZWNhbGMiKX0pKSxhLkNmZygpLnN0YXRzU2NhbGVZPWM+KGI8PTE0MDA/Mjo0KT8xLjE6MS41LChjPjN8fGM+MSYmYj4xNDAwKSYmKGQ9eyIgLm5ub2RlIjoid2lkdGg6Y2FsYyg1MCUgLSAxNnB4KTsgZGlzcGxheTppbmxpbmUtYmxvY2s7In0pLGR9fSxBdXRvU2F2ZU5vZGU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuTHMsYz0kLmV4dGVuZCghMCx7fSx4KSxkPWEuQ2ZnKCkuc2VyaWVNYXhMZW5ndGg7ZnVuY3Rpb24gZSh4KXtyZXR1cm4geC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIDA9PXg/IiI6eC50b1N0cmluZygzNil9KS5qb2luKCIgIil9YS5QaG8oIl9jb21waWxlZCIpJiYoWyJnYXVnZXMiLCJzZXJpZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPWNbeF07YSYmYS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3gucm93cz14LnJvd3MubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnRvKGQpfSkubWFwKGUpLHgudGltZT1lKHgudGltZS50byh4LnJvd3MubGVuZ3RoPjE/ZDoxMCkpfSl9KSxiKCJTdGF0cy5ub2RlLiIrYy5uYW1lLE9iamVjdC5yZWplY3QoYyxbInVybCIsImNvdWNoIiwibmFtZXMiLCJjb2xvcnMiLCJ1bml0cyJdKSkpfSxNb3VudDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9KHh8fGEubXkucm9vdCgpKS53aWR0aCgpLGQ9ISFiLnByZXNldE1vdW50ZWQsZT1hLlBobygiQ291Y2giKS52ZXIsZj1hLmRlZmF1bHROb2Rlc1tlPj0iMDAyLiI/IjIueCI6IjEueCJdO2lmKE1hdGgubG9nMTA9TWF0aC5sb2cxMHx8ZnVuY3Rpb24oeCl7cmV0dXJuIE1hdGgubG9nKHgpKk1hdGguTE9HMTBFfSwhZCl7aWYoYS5DZmcoKS5zdGF0c1JlZnJlc2g9YS5QaG8oIkNmZyIpLnN0YXRzUmVmcmVzaCxlPj0iMDAyLiIpe2IuZG9jLm5vZGVzPShhLlBobygiTWVtYmVyc2hpcCIpLmNsdXN0ZXJfbm9kZXN8fFtdKS5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9T2JqZWN0LmNsb25lKGYsITApO3JldHVybiBhLm5hbWU9eCxhLnVybD0iL19ub2RlL3sxfS8iLmFzc2lnbihlbmNvZGVVUklDb21wb25lbnQoeCkpLGF9KTt2YXIgZz1iLmRvYy5ub2Rlcy5sZW5ndGg7YS5DZmcoKS5zdGF0c1NjYWxlWT1nPihjPD0xNDAwPzI6NCk/MS4xOjEuNX1lbHNlIGIuZG9jLm5vZGVzPVskLmV4dGVuZCghMCx7fSxmKV0sYS5DZmcoKS5zdGF0c1NjYWxlWT0xLjU7YS5Mcz1hLlBobygiTHMiKTt2YXIgaD1hLkNmZygpLnNlcmllTWF4TGVuZ3RoPTRlMy9iLmRvYy5ub2Rlcy5sZW5ndGh8MDthLlBobygiX2NvbXBpbGVkIikmJmIuZG9jLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9YS5McygiU3RhdHMubm9kZS4iK3gubmFtZSk7YiYmKFsiZ2F1Z2VzIiwic2VyaWVzIl0uZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1iW3hdO2EmJmEuZm9yRWFjaChmdW5jdGlvbih4KXt4LnRpbWU9aSh4LnRpbWUpLnRvKGgpLHgucm93cz14LnJvd3MubWFwKGkpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC50byhoKX0pfSl9KSwkLmV4dGVuZCghMCx4LGIpKX0pLGIucHJlc2V0TW91bnRlZD0hMH1yZXR1cm4gYi5kb2Mubm9kZXM7ZnVuY3Rpb24gaSh4KXtyZXR1cm4geC5zcGxpdCgiICIpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gcGFyc2VJbnQoeHx8IjAiLDM2KX0pfX0scGFyYW1zOntzdHJpY3Q6ITB9fSxUYWI6e2lkOiJjdy5QaG90b24uVGFiIixsYW5nOnt9LGRhdGE6e2lkOiIiLG5hbWU6IiIsdHlwZToiIixoYXNoMDoiIixoYXNoMToiIixhY3RpdmU6ITEscGF0aDpbXSxlcnJvcjohMSxydW46ITF9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKX0sdWk6eyIjbC10YWJuYW1lIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztjLm15LmZpbmQoImEjbC10YWJuYW1lIikuYXR0cigiaHJlZiIsIiMiK2MucDJ1KHgucGF0aHx8W10pLmpvaW4oIi8iKSkuYXR0cigidGl0bGUiLHgucGF0aC5qb2luKCIvIikpLnRvZ2dsZUNsYXNzKCJzeXN0ZW0iLCF4LnBhdGhbMF18fC9eKF9hYm91dHxfc3RhdHN8X2NvbmZpZ3xfbG9nKSQvLnRlc3QoeC5wYXRoWzBdKSksYy5teS5yb290KCkudG9nZ2xlQ2xhc3MoImFjdGl2ZSIsISF4LmFjdGl2ZSk7dmFyIGQ9JzxzcGFuIGNsYXNzPSJsLXRhYi1pY28gezF9Ij48L3NwYW4+JyxlPSc8c3BhbiBjbGFzcz0ibC10YWItbmFtZSI+ezF9PC9zcGFuPicsZj1jLlBobyhbIiQiK3gudHlwZSwiaWNvQ3NzIl0pO3JldHVybihmP2QuYXNzaWduKGYoeCkpOiIiKStlLmFzc2lnbihjLnRhZ0Vtb2ppKHgubmFtZS5lc2NhcGVIVE1MKCkpKX0sY3NzOntzbWFsbGVyOmZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWUubGVuZ3RoPjIwfSxib2xkZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXgucGF0aC5sZW5ndGh9fSxldmVudHM6ImNsaWNrLm15In0sIiNsLXRhYnN0YXRlIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4LmVycm9yJiZ4Lmhhc2gwPT14Lmhhc2gxfSxyZWQ6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LmVycm9yfX0sd2F0Y2g6IiNsLXRhYm5hbWUifSwiI2J0bi10YWJjbG9zZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LnRyaWdnZXIoIiNidG4tdGFiY2xvc2UiLCJ0YWJjbG9zZSIseC5pZCl9LGV2ZW50czoiY2xpY2subXkifSwiI3RhYi1wcm94eSI6e2JpbmQ6ZnVuY3Rpb24oKXt9LGxpc3Rlbjp7YXBwYnVzeTpmdW5jdGlvbih4LGEpe09iamVjdC5pc09iamVjdChhKSYmYS5pZD09eC5pZCYmdGhpcy5teS5yb290KCkudG9nZ2xlQ2xhc3MoInRhYi1idXN5IiwhIWEuYnVzeSl9LHBhdGhjaGFuZ2U6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkpe3ZhciBiPXRoaXMsYz1hLnBhdGguc2xpY2UoMCk7aWYoYS5pZCE9eC5pZCl7aWYoYy5qb2luKCLvv70iKSE9eC5wYXRoLmpvaW4oIu+/vSIpKXJldHVybjt4Lmhhc2gwPT14Lmhhc2gxJiZiLlBobygiQ2xvc2UiKSh7dGFiaWQ6eC5pZCxlbmZvcmNlOiEwfSl9ZWxzZSB4LnBhdGg9Yyx4Lm5hbWU9YS50aXRsZXx8eC5uYW1lLGIuUGhvKCJfY29tcGlsZWQiKSYmeC5hY3RpdmUmJndpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCIjIitiLnAydShjKS5qb2luKCIvIikpLGIubXkuY2hlY2soIiNsLXRhYm5hbWUiKX19LHJlbG9hZDpmdW5jdGlvbih4LGEpe2lmKE9iamVjdC5pc09iamVjdChhKSYmYS5pZD09eC5pZCl7dmFyIGI9dGhpcyxjPWEucGF0aC5zbGljZSgwKSxkPSQoIiNsLWFwcHM+I2FwcC0iK2EuaWQpO2QubGVuZ3RoJiZkLmlzKCIubXktZm9ybSIpJiYoZC5teSgicmVtb3ZlIiksZC5yZW1vdmUoKSx4LnJ1bj0hMSx4LmVycm9yPSExLHguaGFzaDA9eC5oYXNoMT0iIix4LmFjdGl2ZSYmYi5QaG8oIlN3aXRjaCIpKGMpKX19fX19LEhUTUw6JzxhIGhyZWY9IiIgaWQ9ImwtdGFibmFtZSIgb25hdXhjbGljaz0iJCh0aGlzKS5wYXJlbnQoKS5maW5kKFwnI2J0bi10YWJjbG9zZVwnKS5jbGljaygpO3JldHVybiBmYWxzZTsiPjwvYT48ZGl2IGlkPSJsLXRhYnN0YXRlIiBjbGFzcz0ibC10YWJtYXJrIj7igKI8L2Rpdj48ZGl2IGlkPSJidG4tdGFiY2xvc2UiIGNsYXNzPSJsLXRhYm1hcmsiIHRpdGxlPSJ7QlROX0NMT1NFVEFCfSI+4pyVPC9kaXY+PGRpdiBpZD0idGFiLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxwYXJhbXM6e3N0cmljdDohMH19LENvbmZpcm06e2lkOiJjdy5QaG90b24uQ29uZmlybSIscGFyYW1zOntkZWxheTo1LHN0cmljdDohMH0sZGF0YTp7Y21kOiIiLHRleHQ6IiIsY3NzOiJ4Z3JheSIseWVzOiJZZXMiLG5vOiJObyIsY2FuY2VsOiJDYW5jZWwiLHllc2NzczoiZ3JlZW4iLG5vY3NzOiIiLHVzZUJ1dHRvbnM6ITF9LGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmRhdGE7eC5mb3JtZ2VuKFsnPGRpdiBjbGFzcz0iJytiLmNzcysnIj4nK2IudGV4dCsiPC9kaXY+Iix7bGFiZWw6IjcwcHgiLHJvdzphLnBhcmFtcy53aWR0aCsicHgiLHJvd0NzczoibXktcm93IG10MTUgcHQxNSBtYi01IHhncmF5IGJ0ZCJ9LFsiIiwic3BuI2J0bi15ZXMuYnV0dG9uLiIrKGIueWVzY3NzP2IueWVzY3NzKyIuIjoiIikrIm1yNSAgIix7dHh0OmIueWVzKyIifSwic3BuI2J0bi1uby5idXR0b24uIisoYi5ub2Nzcz9iLm5vY3NzKyIuIjoiIikrIm1yNS5oaWRlIix7dHh0OmIubm8rIiJ9LCJzcG4jYnRuLWNhbmNlbC5idXR0b24uZnIuaGlkZSIse3R4dDpiLmNhbmNlbCsiIn1dLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gYi51c2VCdXR0b25zJiYic3RyaW5nIj09dHlwZW9mIHgmJng/eC5yZXBsYWNlKC9ec3BuIyguKykkLywiYnV0IyQxLm1hcmtmb2N1cyIpOnh9KV0pfSx1aTp7IiNidG4teWVzIjp7YmluZDpmdW5jdGlvbih4LGEsYil7bnVsbCE9YSYmKHguY21kPSJ5ZXMiLGIudHJpZ2dlcigiY29tbWl0IikpfSxldmVudHM6ImNsaWNrLm15Iixjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiF4Lnllc319fSwiI2J0bi1ubyI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJih4LmNtZD0ibm8iLGIudHJpZ2dlcigiY29tbWl0IikpfSxldmVudHM6ImNsaWNrLm15Iixjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiF4Lm5vfX19LCIjYnRuLWNhbmNlbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJih4LmNtZD0iY2FuY2VsIixiLnRyaWdnZXIoImNhbmNlbCIpKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4heC5jYW5jZWx9fX19LHN0eWxlOnsiIjoiZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjIycHg7IiwiIGNvZGUiOiJiYWNrZ3JvdW5kOiNlM2U4ZWI7IHBhZGRpbmc6MC4xZW0gMC4zZW07IGJvcmRlci1yYWRpdXM6MnB4OyJ9fSxOZXdJbmRleDp7aWQ6ImN3LlBob3Rvbi5OZXdJbmRleCIsaW5oZXJpdDpbIlJUIl0scGFyYW1zOntyZXN0eWxlOjUwLHN0cmljdDohMH0sbGFuZzp7fSxkYXRhOntfZml4bGFuZzohMSxfZGRvY3M6W10sX3ZhbGlkOiEwLF9zYXZlOiExLF9zdGF5YnVzeTohMCxkZG9jOiIiLG5hbWU6IiIsbGFuZ3VhZ2U6ImphdmFzY3JpcHQiLGluZGV4Ont9LHZpZXc6e30sZXJyb3JzOltdfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3guaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKS5hc3NpZ24oYS5sYW5nKSl9LHVpOnsiI210aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMueExhbmcoKS5UWFRfVElUTEVbIlVQRCI9PXRoaXMuZGRvY09wKCk/IlVQRCI6Ik5FVyJdfSx3YXRjaDpbIiNtZGRvYyIsIiNtdmlldyIsIiNtbGFuZyJdfSwiI21kZXNjIjp7YmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnhMYW5nKCkuVFhUX0RFU0NbdGhpcy5kZG9jT3AoKV0uYXNzaWduKHRoaXMuUlQoWyJkYXRhIiwicGF0aCJdKVswXS50cnVuY2F0ZSg1MCwibWlkZGxlIiwiLi4uIikuZXNjYXBlSFRNTCgpKTtyZXR1cm4geC5fZml4bGFuZyYmInF1ZXJ5Ij09eC5sYW5ndWFnZSYmeC5qc29uJiZ4Lmpzb24uaW5kZXgmJihhKz0iPGJyPiBGaWVsZHMgdG8gaW5kZXg6ICIreC5qc29uLmluZGV4LmZpZWxkcy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgeD94Ok9iamVjdC5rZXlzKHgpWzBdKS5lc2NhcGVIVE1MKCl9KS5qb2luKCIsICIpKyIuIiksYX0sd2F0Y2g6WyIjbWRkb2MiLCIjbXZpZXciLCIjbWxhbmciXX0sIiNmd2FybiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm5bdGhpcy54TGFuZygpLkVYUFt0aGlzLmRkb2NPcCgpXXx8IiIsImVybGFuZyI9PXgubGFuZ3VhZ2U/dGhpcy5sYW5nLk1TR19FUkxBTkc6IiJdLmNvbXBhY3QoITApLmpvaW4oIiAiKX0sd2F0Y2g6WyIjbWRkb2MiLCIjbXZpZXciXSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7aWYoeC5fdmFsaWQ9dGhpcy5teS52YWxpZCgpLCF4Ll92YWxpZClyZXR1cm4hMH19fSwiI2J0bi1uZXctb2siOntkZWxheTozMCxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5kb0NvbW1pdCgpO3ZhciBiPSJfZGVzaWduLyIreC5kZG9jLnJlcGxhY2UoL15fZGVzaWduXC8vLCIiKTt0aGlzLlJUKFsiRGRvY3MiLGJdKTtyZXR1cm4gdGhpcy54TGFuZygpLkJUTl9PS1t0aGlzLmRkb2NPcCgpXX0sd2F0Y2g6WyIjbWRkb2MiLCIjbXZpZXciLCIjbWxhbmciXSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiF4Ll92YWxpZH0sInNlbGY6b3JhbmdlIjpmdW5jdGlvbigpe3JldHVybiJVUEQiPT10aGlzLmRkb2NPcCgpfSwic2VsZjpncmVlbiI6ZnVuY3Rpb24oKXtyZXR1cm4iVVBEIiE9dGhpcy5kZG9jT3AoKX19fSwiI2J0bi1uZXctY2FuY2VsIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY2FuY2VsKCl9fSwiI21sYW5nIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmRhdGEubGFuZ3VhZ2UsYj10aGlzLmxhbmcuVEFHX1RZUEUuc2xpY2UoMCk7eC50YWdzKHt0YWdzOltiLmZpbHRlcih4PT5PYmplY3QudmFsdWVzKHgpWzBdIT1hKV0sZW1wdHk6Yi5maW5kKHg9Pk9iamVjdC52YWx1ZXMoeClbMF09PWEpfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgubGFuZ3VhZ2U9YSsiIikseC5fZml4bGFuZ3x8JC5leHRlbmQoeCx0aGlzLkRlZmF1bHRzW3gubGFuZ3VhZ2VdKSxbeC5sYW5ndWFnZV19LGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiB4Ll9maXhsYW5nfX19LCIjbWRkb2MiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1PYmplY3QuZW50cmllcyhhLlJUKFsiRGRvY3MiXSkpLm1hcCh4PT4oe25hbWU6eFswXSxsYW5nOnhbMV0ubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0In0pKS5zb3J0QnkoIm5hbWUiKTtmdW5jdGlvbiBjKHgsYil7YS5teS5maW5kKCIjbWRkb2MiKS50cmlnZ2VyKCJibHVyIil9ZnVuY3Rpb24gZCh4LGMpe3ZhciBkPWEuZGF0YS5sYW5ndWFnZXx8ImphdmFzY3JpcHQiLGU9Yi5maWx0ZXIoeD0+eC5sYW5nPT1kKS5tYXAoeD0+eC5uYW1lKTtpZigheC50ZXJtKXJldHVybiBjKGUubWFwKHg9Pih7bGFiZWw6eCx2YWx1ZTp4fSkpKTt2YXIgZj1uZXcgUmVnRXhwKFJlZ0V4cC5lc2NhcGUoeC50ZXJtKSwiaSIpO3JldHVybiBjKGUuZmlsdGVyKHg9PmYudGVzdCh4KSkubWFwKHg9Pih7bGFiZWw6eCx2YWx1ZTp4fSkpKX14LmF1dG9jb21wbGV0ZSh7ZGVsYXk6MCxzb3VyY2U6ZCxzZWxlY3Q6Yy5kZWJvdW5jZSgxMCksYXBwZW5kVG86YS5teS5yb290KCksbWluTGVuZ3RoOjB9KX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHguZGRvYzt4LmRkb2M9YX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXt2YXIgYj0iX2Rlc2lnbi8iK2EucmVwbGFjZSgvXl9kZXNpZ25cLy8sIiIpLGM9dGhpcy5SVChbIkRkb2NzIixiXSk7aWYoYyYmKGMubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0IikhPXgubGFuZ3VhZ2UpcmV0dXJuIHRoaXMubGFuZy5FUlJfWExBTkd9LHdhdGNoOlsiI21sYW5nIl19LCIjbXZpZXciOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3gub24oImtleXVwLm15IixmdW5jdGlvbih4KXt2YXIgYj14LmtleUNvZGU7MTMhPWImJjEwIT1ifHwhYS5teS52YWxpZCgpfHxhLmRvQ29tbWl0KCl9KX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHgubmFtZTt4Lm5hbWU9YX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT9hLmluZGV4T2YoIi8iKT4tMT90aGlzLmxhbmcuRVJSX05FV19TTEFTSDp2b2lkIDA6dGhpcy54TGFuZygpLkVSUl9ORVdfUkVRfX0sIiN4bXZpZXciOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMueExhbmcoKS5MQkxfTkVXfSx3YXRjaDpbIiNtbGFuZyJdfX0sSFRNTDpbJzxkaXYgY2xhc3M9InhncmF5Ij4nLCc8ZGl2IGlkPSJtdGl0bGUiIGNsYXNzPSJtdDIgZnMxMzAgbGgxMzAgZnc1MDAiPjwvZGl2PicsJzxkaXYgaWQ9Im1kZXNjIiBjbGFzcz0ibXQ1IG1iNCI+PC9kaXY+JywiPC9kaXY+Iix7cm93OiIxMDAlIixsYWJlbDoiOTBweCIsbGFiZWxDc3M6Im15LWxhYmVsIGZzOTAgbzgwIixyb3dDc3M6Im15LXJvdyBwdDYgcGIyIn0sWyJ7TEJMX1RZUEV9Iiwic3BuI21sYW5nIl0se3Jvd0NzczoibXktcm93IHB0OCJ9LFsie0xCTF9ERE9DfSIsImlucCNtZGRvYy53MTAwcCIse3BsYzoie1BMQ19ERE9DfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLFsnPHNwYW4gaWQ9InhtdmlldyI+PC9zcGFuPicsImlucCNtdmlldy53MTAwcCIse3BsYzoie1BMQ19ORVd9IixzcGVsbGNoZWNrOiJmYWxzZSIsYXV0b2NvbXBsZXRlOiJvZmYifSwibXNnIl0sJzxkaXYgaWQ9ImZ3YXJuIiBjbGFzcz0ieGdyYXkgcHQxMiBoaWRlIj48L2Rpdj4nLCc8ZGl2IGNsYXNzPSJtdDE2IHB0NyBidGQgZnM5NSI+JyxbIiIsImJ1dCNidG4tbmV3LW9rLmdyZWVuLm1yMi5tYXJrZm9jdXMiLHt0eHQ6IntCVE5fTkVXX09LfSJ9LCJidXQjYnRuLW5ldy1jYW5jZWwubWFya2ZvY3VzIix7dHh0OiJ7QlROX05FV19DQU5DRUx9In1dLCI8L2Rpdj4iXSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIycHg7IiwiIGIiOiJmb250LXdlaWdodDo1MDA7IG9wYWNpdHk6MC45OyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyBjb2xvcjojMmE0NTY4OyJ9LGRvQ29tbWl0OmZ1bmN0aW9uKCl7dGhpcy5teS52YWxpZCgpJiYodGhpcy5kYXRhLl9zYXZlP3RoaXMuU2F2ZUluZGV4KCkuYWx3YXlzKHRoaXMubXkuY29tbWl0KTp0aGlzLm15LmNvbW1pdCgpKX0sZGRvY09wOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kYXRhLGE9Il9kZXNpZ24vIit4LmRkb2MucmVwbGFjZSgvXl9kZXNpZ25cLy8sIiIpLGI9dGhpcy5SVChbIkRkb2NzIixhXSk7cmV0dXJuIGI/Yi52aWV3cyYmYi52aWV3c1t4Lm5hbWVdPyJVUEQiOiJBREQiOiJORVcifSx4TGFuZzpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGF0YS5sYW5ndWFnZTtyZXR1cm4gdGhpcy5sYW5nW3hdfHx0aGlzLmxhbmcuamF2YXNjcmlwdH0sRGVmYXVsdHM6e2VybGFuZzp7bWFwOidmdW4oe0RvY30pIC0+XG5cdCUlIEJhc2ljIEVybGFuZyBtYXAgZnVuY3Rpb24sXG4gICUlIGVtdWxhdGVzIF9hbGxfZG9jc1xuICBLID0gcHJvcGxpc3RzOmdldF92YWx1ZSg8PCJfaWQiPj4sIERvYyksXG4gIFYgPSBwcm9wbGlzdHM6Z2V0X3ZhbHVlKDw8Il9yZXYiPj4sIERvYyksXG4gIEVtaXQoSywge1t7PDwicmV2Ij4+LFZ9XX0pXG5lbmQuJyxyZWR1Y2U6IiJ9LGphdmFzY3JpcHQ6e21hcDoiIGZ1bmN0aW9uKGRvYyl7XG4gIC8vIFNhbXBsZSBKUyBtYXAgZnVuY3Rpb24sXG4gIC8vIGVtdWxhdGVzIF9hbGxfZG9jc1xuICBlbWl0KGRvYy5faWQsIHtyZXY6ZG9jLl9yZXZ9KTtcbn0iLHJlZHVjZToiIn0scXVlcnk6e2pzb246e2luZGV4OntmaWVsZHM6W3tfaWQ6ImFzYyJ9LHtfcmV2OiJhc2MifV19fX19LFNhdmVJbmRleDpmdW5jdGlvbih4LGEpe3ZhciBiLGMsZD10aGlzLGU9ZC5kYXRhLGY9YXx8ZS5uYW1lLGc9Il9kZXNpZ24vIisoZS5kZG9jLnJlcGxhY2UoL15fZGVzaWduXC8vLCIiKXx8Ii0iK051bWJlci5yYW5kb20oNDY2NTYsMTY3OTYxNSkudG9TdHJpbmcoMzYpKSxoPSJxdWVyeSI9PWUubGFuZ3VhZ2UsaT1kLlJUKFsiZGF0YSIsInBhdGgiXSlbMF07ZC5SVChbImRhdGEiLCJ0YWJpZCJdKTtpZihlLmVycm9ycy5sZW5ndGgpcmV0dXJuIGN3LmxpYi5ub3RlKGQubGFuZy5FUlJfRVJSRE9DLmFzc2lnbihlLmVycm9yc1swXSksImVycm9yIiksJC5EZWZlcnJlZCgpLnJlamVjdChlLmVycm9yc1swXSk7aWYoaCl7aWYoZS5kZG9jfHwoZS5kZG9jPWcuZnJvbSg4KSksKGI9JC5leHRlbmQoITAse30seHx8ZS5qc29uKSkuZGRvYz1nLmZyb20oOCksYi5uYW1lPWUubmFtZXx8ImlfIitOdW1iZXIucmFuZG9tKDQ2NjU2LDE2Nzk2MTUpLnRvU3RyaW5nKDM2KSwhYi5kZG9jKXJldHVybiBjdy5saWIubm90ZShkLmxhbmcuRVJSX05PX05BTUVfUlVOLCJlcnJvciIpLCQuRGVmZXJyZWQoKS5yZWplY3QoZC5sYW5nLkVSUl9OT19OQU1FX1JVTil9ZWxzZSBlLmRkb2N8fChlLmRkb2M9ZyksKGM9JC5leHRlbmQoITAse30seHx8ZC5SVChbIkRkb2NzIixnXSkpKS5faWR8fChjPXtfaWQ6ZyxsYW5ndWFnZTplLmxhbmd1YWdlfHwiamF2YXNjcmlwdCJ9KSxjLnZpZXdzfHwoYy52aWV3cz17fSksZS5tYXAudHJpbSgpP2N3LmxpYi51bm1hc2soYyxbZS5tYXBdLFtbInZpZXdzIixmLCJtYXAiXV0pOmN3LmxpYi5nZXRyZWYoYyxbInZpZXdzIixmLCJtYXAiXSkmJihjLnZpZXdzW2ZdLm1hcD12b2lkIDApLGUucmVkdWNlLnRyaW0oKSYmZS5tYXAudHJpbSgpP2N3LmxpYi51bm1hc2soYyxbZS5yZWR1Y2VdLFtbInZpZXdzIixmLCJyZWR1Y2UiXV0pOmN3LmxpYi5nZXRyZWYoYyxbInZpZXdzIixmLCJyZWR1Y2UiXSkmJihjLnZpZXdzW2ZdLnJlZHVjZT12b2lkIDApO2QuUlQoIkJ1c3kiKSghMCk7dmFyIGo9W2ksaD8iX2luZGV4IjpnXSxrPUpTT04uc3RyaW5naWZ5KGg/YjpjKSxsPWg/InBvc3QiOiJwdXQiO3JldHVybiBkLlJlcSh7dXJsOmosbWV0aG9kOmwsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6ayxkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKHgpe2h8fChlLnJldj14LnJldiksY3cubGliLm5vdGUoZC5sYW5nLk1TR19TQVZFRC5hc3NpZ24oaD9iLmRkb2MrIi4iK2IubmFtZTpnKSwib2siKSwkLm15LnJhZGlvKCJkYnVwZGF0ZSIse2RiOmksY21kOiJ3cml0ZSIsZG9jczpbZ10sc2tpcFZpZXdVcGRhdGU6ITB9KX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtjdy5saWIubm90ZShkLmxhbmcuTVNHX0ZBSUwuYXNzaWduKGg/Yi5kZG9jKyIuIitiLm5hbWU6Zyx4LGEpLCJlcnJvciIpLGQuUlQoIkJ1c3kiKSghMSl9KS5hbHdheXMoZnVuY3Rpb24oKXtlLl9zdGF5YnVzeXx8ZC5SVCgiQnVzeSIpKCExKX0pfX0sSW5kZXhFZDp7aWQ6ImN3LlBob3Rvbi5JbmRleEVkIixpbmhlcml0OlsiUlQiXSxwYXJhbXM6e3Jlc3R5bGU6NTAsc3RyaWN0OiEwfSxsYW5nOnt9LENNcHJlZml4OiIiLEhUTUw6JzxkaXYgY2xhc3M9ImJnLXBncmF5IGxoMTYwIHB0MiB4Z3JheSBudyBvaCBlbGwgeHBhbmVsIj48ZGl2IGNsYXNzPSJmczkwIGZyIHB0MSB0YXIiPjxzcGFuIGlkPSJ2aWV3LW1pLW1vZGUiIGNsYXNzPSJtdDAiPjwvc3Bhbj48c3BhbiBpZD0iYnRuLXZpZXctbWktY2xvc2UiIGNsYXNzPSJwcjkgcGw4IG1sNiBwc2V1ZG9saW5rIHRkbiIgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7IiB0aXRsZT0ie0JUTl9QQU5FTF9DTE9TRX0iPuKclTwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ2aWV3LW1pLW5hbWUiIGNsYXNzPSJib2xkZXIgcGw4IG9oIG53IGVsbCI+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9InZpZXctbWktcHJveHkiIGNsYXNzPSJiYnMgcGwxIHByMSI+PHRleHRhcmVhIGlkPSJ2aWV3LW1pLWVkIiBjbGFzcz0idzEwMHAiPjwvdGV4dGFyZWE+PC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJ2aWV3LWVkLWJ1dHRvbnMiIGNsYXNzPSJudyBwOCIgc3R5bGU9IiI+PGRpdiBjbGFzcz0iZnIiPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1pLXJldmVydCIgY2xhc3M9Im9yYW5nZSBoaWRlIiB0aXRsZT0ie1RJUF9SRVZFUlR9Ij48c3BhbiBjbGFzcz0iZmktcmVmcmVzaCBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SRVZFUlR9wqA8L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1taS1kZWwiIGNsYXNzPSJyZWQgaGlkZSBtbDIiIHRpdGxlPSJ7VElQX0RFTH0iPjxzcGFuIGNsYXNzPSJmaS10cmFzaCBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9ERUx9PC9idXR0b24+PC9kaXY+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWktcnVuIiBjbGFzcz0ibXIyIGdyZWVuIiBkaXNhYmxlZCB0aXRsZT0ie1RJUF9SVU59Ij48c3BhbiBjbGFzcz0iZmktcGxheSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SVU59PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWktc2F2ZWFzIiBjbGFzcz0ibXIyIiB0aXRsZT0ie1RJUF9TQVZFQVN9Ij48c3BhbiBjbGFzcz0iZmktc2F2ZSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9TQVZFQVN9PC9idXR0b24+PC9zZWN0aW9uPicsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3guaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpfSxkYXRhOntkZG9jOiIiLG5hbWU6IiIsdHlwZToiaW5kZXgiLG1vZGU6WyJqYXZhc2NyaXB0Il0sdGV4dDoiIixqc29uOnt9LGVycm9yczpbXSxzdGFtcDowLHJldjoiIn0sdWk6eyIjdmlldy1taS1lZCI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YS5tb2RlKyIiO0NvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHhbMF0se21vZGU6YixsaW5lTnVtYmVyczohMSx2aWV3cG9ydE1hcmdpbjoxMDAsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seToianNvbiI9PWIsZXh0cmFLZXlzOnsiQ3RybC1SIjpmdW5jdGlvbigpe2EuU2F2ZUluZGV4KCl9LCJDbWQtUiI6ZnVuY3Rpb24oKXthLlNhdmVJbmRleCgpfX19KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXgubW9kZSsiIjtyZXR1cm4gbnVsbCE9YSYmImpzb24iIT1iJiYoeC50ZXh0PWEpLCJqc29uIj09Yj9KU09OLnN0cmluZ2lmeSh4Lmpzb24sbnVsbCwiXHQiKTp4LnRleHR9fSwiI3ZpZXctbWktcHJveHkiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sZGVsYXk6MjAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9T2JqZWN0LmlzT2JqZWN0LGQ9T2JqZWN0LmlzQXJyYXksZT14LnRleHQsZj1udWxsO3guZXJyb3JzPVtdLG51bGwhPShmPWIuUlQoImpzZXZhbCIpKCIoIitlKyIpIikpJiZjKGYpP2MoZi5pbmRleCkmJmQoZi5pbmRleC5maWVsZHMpP2YudHlwZSYmImpzb24iIT09Zi50eXBlJiZ4LmVycm9ycy5wdXNoKGIubGFuZy5FUlJfTk9fVFlQRSk6eC5lcnJvcnMucHVzaChiLmxhbmcuRVJSX05PX0lOREVYKTp4LmVycm9ycy5wdXNoKGIubGFuZy5FUlJfTk9fSlNPTikseC5qc29uPXguZXJyb3JzLmxlbmd0aD97fTpmfSx3YXRjaDpbIiN2aWV3LW1pLWVkIl0sY3NzOntyZWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD4wfX19LCIjdmlldy1taS1tb2RlIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19NT0RFKX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbD09YSlyZXR1cm4geC5tb2RlO3gubW9kZT1hO3ZhciBjPWIubXkuZmluZCgiI3ZpZXctbWktZWQiKS5uZXh0KClbMF0uQ29kZU1pcnJvcjtyZXR1cm4gYy5zZXRPcHRpb24oIm1vZGUiLGErIiIpLGMuc2V0T3B0aW9uKCJyZWFkT25seSIsImpzb24iPT1hKyIiKSxiLm15LnJlY2FsYygiI3ZpZXctbWktZWQiKSxhfX0sIiN2aWV3LW1pLW5hbWUiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuUlQoImRhdGEiKTtyZXR1cm4geC5lcnJvcnMubGVuZ3RoP3guZXJyb3JzWzBdLmVzY2FwZUhUTUwoKTp4LmRkb2Muc3BsaXQoIi8iKVsxXT9iLmxhbmcuVFhUX1RJVExFLmFzc2lnbih4Lm5hbWUuZXNjYXBlSFRNTCgpLCc8YSBjbGFzcz0idGRuIiBocmVmPSIjezF9L3syfSI+X2QvezN9PC9hPicuYXNzaWduKGMucGF0aFswXSx4LmRkb2MseC5kZG9jLmZyb20oOCkuZXNjYXBlSFRNTCgpKSk6IkRlZmF1bHQgTWFuZ28gaW5kZXgifSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9LGJvbGRlcjpmdW5jdGlvbih4KXtyZXR1cm4gMD09eC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1taS1wcm94eSJdfSwiI2J0bi12aWV3LW1pLWNsb3NlIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMuUlQ7YigiZGF0YSIpLmVkaXRvcj0hMSxiKCJzdGFzaFZpZXdTdGF0ZSIpKCksYigibXkiKS5jaGVjaygiI2J0bi12aWV3Y29kZSIpLGIoIm15IikucmVzdHlsZS5kZWxheSg1MCl9fX0sIiNidG4tdmlldy1taS1ydW4iOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPSJfaWR4LyIreC5kZG9jLmZyb20oOCkrIu+/vSIreC5uYW1lLGQ9Yi5SVChbIlZpIixjLCJ2aWV3Il0pfHx7c291cmNlOmIuUlQoIkRlZmF1bHRNYW5nb0lkeCIpLnRleHR9LGU9Yi5sYW5nLGY9JzxzcGFuIGNsYXNzPSJmaS1wbGF5IGZzOTUgbzYwIj48L3NwYW4+wqAnLGc9eC50ZXh0IT0oZC5zb3VyY2V8fCIiKTtyZXR1cm4gbnVsbCE9YSYmZyYmIl9kZXNpZ24vIiE9eC5kZG9jJiZiLlNhdmVJbmRleCgpLGYrZS5CVE5fUlVOfSxkZWxheTo1MCxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe2lmKCJfZGVzaWduLyI9PXguZGRvY3x8eC5lcnJvcnMubGVuZ3RofHx4Lmpzb24uZGRvYyYmeC5qc29uLmRkb2MhPXguZGRvYy5mcm9tKDgpfHx4Lmpzb24ubmFtZSYmeC5qc29uLm5hbWUhPXgubmFtZSlyZXR1cm4hMDt2YXIgYT10aGlzLGI9Il9pZHgvIit4LmRkb2MuZnJvbSg4KSsi77+9Iit4Lm5hbWUsYz1hLlJUKFsiVmkiLGIsInZpZXciXSl8fHtzb3VyY2U6YS5SVCgiRGVmYXVsdE1hbmdvSWR4IikudGV4dH07cmV0dXJuIHgudGV4dD09KGMuc291cmNlfHwiIil9fSx3YXRjaDpbIiN2aWV3LW1pLXByb3h5Il19LCIjYnRuLXZpZXctbWktcmV2ZXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz0iX2lkeC8iK3guZGRvYy5mcm9tKDgpKyLvv70iK3gubmFtZSxkPWIuUlQoWyJWaSIsYywidmlldyJdKXx8e3NvdXJjZTpiLlJUKCJEZWZhdWx0TWFuZ29JZHgiKS50ZXh0fTtudWxsIT1hJiYoeC50ZXh0PWQuc291cmNlKX0sZGVsYXk6NTAsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9Il9pZHgvIit4LmRkb2MuZnJvbSg4KSsi77+9Iit4Lm5hbWUsYz1hLlJUKFsiVmkiLGIsInZpZXciXSl8fHtzb3VyY2U6YS5SVCgiRGVmYXVsdE1hbmdvSWR4IikudGV4dH07cmV0dXJuIHgudGV4dD09Yy5zb3VyY2V9fSxyZWNhbGM6WyIjdmlldy1taS1lZCJdLHdhdGNoOlsiI3ZpZXctbWktcHJveHkiXX0sIiNidG4tdmlldy1taS1kZWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcyxjPWIubGFuZyxkPSc8c3BhbiBjbGFzcz0iZnc1MDAiPnsxfTwvc3Bhbj4nOyQubXkubW9kYWwoe2RhdGE6e3llczpjLkJUTl9ERUxfWUVTLHllc2NzczoicmVkIixubzpjLkJUTl9ERUxfTk8sY2FuY2VsOiIiLHRleHQ6Yy5NU0dfREVMX1RFWFQuYXNzaWduKGQuYXNzaWduKHgubmFtZS5lc2NhcGVIVE1MKCkpLGQuYXNzaWduKHguZGRvYy5mcm9tKDgpLmVzY2FwZUhUTUwoKSkpfSxtYW5pZmVzdDpiLlBobygiQ29uZmlybSIpLGNsb3NlOmIuUGhvKCJsYW5nIikuQlROX1hETEcsZXNjOiEwLGdsb2JhbDohMCxzY3JlZW46ITB9KS50aGVuKGZ1bmN0aW9uKHgpeyJ5ZXMiPT14LmNtZCYmYi5EZWxJbmRleCgpfSl9fSxkZWxheToyMCxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe2lmKCF4LmRkb2MuZnJvbSg4KSlyZXR1cm4hMH19LHdhdGNoOlsiI3ZpZXctbWktcHJveHkiXX0sIiNidG4tdmlldy1taS1zYXZlYXMiOntjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISF4LmVycm9ycy5sZW5ndGh9fSx3YXRjaDpbIiN2aWV3LW1pLXByb3h5Il0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuUlQ7aWYobnVsbCE9YSl7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7dmFyIGU9JC5leHRlbmQoITAse19maXhsYW5nOiEwLF92YWxpZDohMCxfc2F2ZTohMCxsYW5ndWFnZToicXVlcnkiLGRkb2M6IiJ9LCJfZGVzaWduLyIhPXguZGRvYz9PYmplY3QucmVqZWN0KHgsWyJuYW1lIl0pOk9iamVjdC5yZWplY3QoeCxbImRkb2MiLCJuYW1lIl0pLE9iamVjdC5zZWxlY3QoeC5qc29uLFsiZGRvYyIsIm5hbWUiXSkpOyQuZXh0ZW5kKCEwLGUsZChbImRhdGEiLCJtYW5nbyJdKSksZCgpLmNyZWF0ZU5ld0lkeERsZyhiLGUpLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGIsZT1jLm15LmNoZWNrO2Z1bmN0aW9uIGYoKXthLmRkb2MuZnJvbSg4KT09eC5kZG9jJiZhLm5hbWU9PXgubmFtZT8oZSgiI2J0bi12aWV3LW1pLXJldmVydCIpLGUoIiNidG4tdmlldy1taS1ydW4iKSxkKCJHZXRWaWV3IikoITApKTpkKCJjaGFuZ2VWaWV3IikoIl9pZHgvIithLmRkb2MrIu+/vSIrYS5uYW1lKX0oYj1kKCJQZW5kaW5nIikuX3ZpZXdsaXN0KT9iLnRoZW4oZi5kZWJvdW5jZSg1MCkpOmYoKX0uZGVib3VuY2UoNTApKX19LGV2ZW50czoiY2xpY2subXkifX0sc3R5bGU6eyIgLkNvZGVNaXJyb3IiOiJmb250LXNpemU6MC44MTI1ZW0haW1wb3J0YW50O3BhZGRpbmc6MHB4O21pbi1oZWlnaHQ6MzAwcHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MzAwcHg7IiwiICN2aWV3LW1pLXByb3h5IjpmdW5jdGlvbih4KXtyZXR1cm4ibWF4LWhlaWdodDoiKyh4LnBhcmVudCgpLmhlaWdodCgpLTQ4LTMyKSsicHg7In0sIiAjdmlldy1taS1wcm94eS5yZWQgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyIsIiAjYnRuLXZpZXctbWktZGVsIjoiZGlzcGxheTpub25lOyIsIiAjYnRuLXZpZXctbWktcmV2ZXJ0LmhpZGUgKyAjYnRuLXZpZXctbWktZGVsIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7In0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI3ZpZXctbWktcHJveHkiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LFNhdmVJbmRleDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiTmV3SW5kZXgiKSxiPXguZGF0YTsoYT14LlBobygiTmV3SW5kZXgiKSkuU2F2ZUluZGV4LmNhbGwoe19zdGF5YnVzeTohMCxsYW5nOmEubGFuZyxSVDp4LlJULFBobzp4LlBobyxSZXE6eC5SZXEsZGF0YTp7bGFuZ3VhZ2U6InF1ZXJ5IixlcnJvcnM6Yi5lcnJvcnMsZGRvYzpiLmRkb2MsbmFtZTpiLm5hbWUsanNvbjpiLmpzb259fSkudGhlbihmdW5jdGlvbihhKXt2YXIgYjtmdW5jdGlvbiBjKCl7eC5teS5jaGVjaygiI2J0bi12aWV3LW1pLXJldmVydCIpLHgubXkuY2hlY2soIiNidG4tdmlldy1taS1ydW4iKX0oYj14LlJUKCJQZW5kaW5nIikuX3ZpZXdsaXN0KT9iLnRoZW4oYy5kZWJvdW5jZSg1MCkpOmMoKSx4LlJUKCJHZXRWaWV3IikoITApfS5kZWJvdW5jZSg1MCkpfSxEZWxJbmRleDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGEsZD14fHxjLmRkb2MsZT1hfHxjLm5hbWUsZj1iLlJULGc9ZihbImRhdGEiLCJwYXRoIl0pO2YoWyJkYXRhIiwidGFiaWQiXSk7cmV0dXJuIGYoIkJ1c3kiKSghMCksYi5SZXEoe3VybDpbZ1swXSwiX2luZGV4IixkLCJqc29uIixlXSxtZXRob2Q6IkRFTEVURSIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGFUeXBlOiJqc29uIn0pLnRoZW4oZnVuY3Rpb24oeCl7Y3cubGliLm5vdGUoYi5sYW5nLk1TR19ERUxfT0suYXNzaWduKGQrIi4iK2UpLCJvayIpLGYoImNoYW5nZVZpZXciKSgiIiksZnVuY3Rpb24oKXskLm15LnJhZGlvKCJkYnVwZGF0ZSIse2RiOmdbMF0sY21kOiJ3cml0ZSIsZG9jczpbZF19KX0uZGVib3VuY2UoMTAwKSgpfSkuZmFpbChmdW5jdGlvbih4LGEpe2N3LmxpYi5ub3RlKGIubGFuZy5NU0dfREVMX0ZBSUwuYXNzaWduKGQrIi4iK2UseCxhKSwiZXJyb3IiKX0pLmFsd2F5cyhmKCJCdXN5IikuZmlsbCghMSkpfX0sVmlld0VkOntpZDoiY3cuUGhvdG9uLlZpZXdFZCIsaW5oZXJpdDpbIlJUIl0scGFyYW1zOntyZXN0eWxlOjUwLHN0cmljdDohMH0sbGFuZzp7fSxDTXByZWZpeDoiIixIVE1MOic8ZGl2IGNsYXNzPSJiZy1wZ3JheSBsaDE2MCBwdDIgeGdyYXkgbncgb2ggZWxsIHhwYW5lbCI+PGRpdiBjbGFzcz0iZnM5MCBmciBwdDEgdGFyIj48c3BhbiBpZD0idmlldy1tci1tb2RlIiBjbGFzcz0ibXQwIj48L3NwYW4+PHNwYW4gaWQ9ImJ0bi12aWV3LW1yLWNsb3NlIiBjbGFzcz0icHI5IHBsOCBtbDYgcHNldWRvbGluayB0ZG4iIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpOyIgdGl0bGU9IntCVE5fUEFORUxfQ0xPU0V9Ij7inJU8L3NwYW4+PC9kaXY+PGRpdiBpZD0idmlldy1tci1uYW1lIiBjbGFzcz0iYm9sZGVyIHBsOCBvaCBudyBlbGwiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ2aWV3LW1yLXByb3h5IiBjbGFzcz0iYmJzIHBsMSBwcjEiPjx0ZXh0YXJlYSBpZD0idmlldy1tci1lZCIgY2xhc3M9IncxMDBwIj48L3RleHRhcmVhPjwvc2VjdGlvbj48c2VjdGlvbiBpZD0idmlldy1lZC1idXR0b25zIiBjbGFzcz0ibncgcDgiIHN0eWxlPSIiPjxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4tdmlldy1tci1yZXZlcnQiIGNsYXNzPSJvcmFuZ2UgaGlkZSIgdGl0bGU9IntUSVBfUkVWRVJUfSI+PHNwYW4gY2xhc3M9ImZpLXJlZnJlc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fUkVWRVJUfcKgPC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbXItZGVsIiBjbGFzcz0icmVkIGhpZGUgbWwyIiB0aXRsZT0ie1RJUF9ERUx9Ij48c3BhbiBjbGFzcz0iZmktdHJhc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fREVMfTwvYnV0dG9uPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi12aWV3LW1yLXJ1biIgY2xhc3M9Im1yMiBncmVlbiIgZGlzYWJsZWQgdGl0bGU9IntUSVBfUlVOfSI+PHNwYW4gY2xhc3M9ImZpLXBsYXkgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fUlVOfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1yLXNhdmVhcyIgY2xhc3M9Im1yMiIgdGl0bGU9IntUSVBfU0FWRUFTfSI+PHNwYW4gY2xhc3M9ImZpLXNhdmUgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fU0FWRUFTfTwvYnV0dG9uPjwvc2VjdGlvbj4nLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmpzZXZhbD1hLlJUKCJqc2V2YWwiKSx4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSx4LnRoZW4oZnVuY3Rpb24oKXt4LmZpbmQoIi5Db2RlTWlycm9yIilbMF0uQ29kZU1pcnJvci5yZWZyZXNoKCl9LmRlYm91bmNlKDEwMCkpfSxkYXRhOntkZG9jOiIiLG5hbWU6IiIsdHlwZToidmlldyIsbW9kZTpbIm1hcCJdLG1hcDoiIixyZWR1Y2U6IiIsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6MCxyZXY6IiJ9LHVpOnsiI3ZpZXctbXItZWQiOntkZWxheTozMDAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Yi5tb2RlKyIiO0NvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHhbMF0se21vZGU6Impzb24iPT1jP2M6YS5DTXByZWZpeCsoYi5sYW5ndWFnZXx8ImphdmFzY3JpcHQiKSxsaW5lTnVtYmVyczohMCx2aWV3cG9ydE1hcmdpbjoxMDAsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITEsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seToianNvbiI9PWMsZXh0cmFLZXlzOnsiQ3RybC1SIjpmdW5jdGlvbigpe2EuU2F2ZVZpZXcoKX0sIkNtZC1SIjpmdW5jdGlvbigpe2EuU2F2ZVZpZXcoKX19fSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj14Lm1vZGUrIiI7cmV0dXJuIG51bGwhPWEmJiJqc29uIiE9YiYmKHhbYl09YSksImpzb24iPT1iP0pTT04uc3RyaW5naWZ5KHguanNvbixudWxsLCJcdCIpOnhbYl19fSwiI3ZpZXctbXItcHJveHkiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sZGVsYXk6MTAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9T2JqZWN0LmlzRnVuY3Rpb24sZD1PYmplY3QuaXNTdHJpbmcoeC5sYW5ndWFnZSk/eC5sYW5ndWFnZToiamF2YXNjcmlwdCIsZT14Lm1hcCxmPXgucmVkdWNlfHwiIixnPW51bGwsaD0vXiglJVteXHJcbl0qW1xyXG5dKykqW1xyXG5cc1x0XSpmdW5bXHJcblxzXHRdKlwoW1xyXG5cc1x0XSpcez8vLGk9L1wuW1xyXG5cc1x0XSokLyxqPVsiX3N1bSIsIl9jb3VudCIsIl9taW4iLCJfbWF4IiwiX3N0YXRzIiwiX3N1bXNxciJdLGs9eC5lcnJvcnM9W107bnVsbD09YSYmKCJqYXZhc2NyaXB0Ij09ZD8obnVsbCE9KGc9Yi5qc2V2YWwoIigiK2UrIikiKSkmJmMoZyl8fGsucHVzaChiLmxhbmcuRVJSX05PX01BUCksZiYmIl8iIT1mWzBdJiYoZz1udWxsLG51bGwhPShnPWIuanNldmFsKCIoIitmKyIpIikpJiZjKGcpfHxrLnB1c2goYi5sYW5nLkVSUl9OT19SRURVQ0UpKSwiXyI9PWZbMF0mJi0xPT1qLmluZGV4T2YoZi50cmltKCkpJiZrLnB1c2goYi5sYW5nLkVSUl9GX0JVSUxUSU4pKToiZXJsYW5nIj09ZCYmKGgudGVzdChlKSYmaS50ZXN0KGUpfHxrLnB1c2goYi5sYW5nLkVSUl9OT19NQVApLCJfIj09ZlswXSYmLTE9PWouaW5kZXhPZihmLnRyaW0oKSk/ay5wdXNoKGIubGFuZy5FUlJfRl9CVUlMVElOKTohZnx8Il8iPT1mWzBdfHxoLnRlc3QoZikmJmkudGVzdChmKXx8ay5wdXNoKGIubGFuZy5FUlJfTk9fUkVEVUNFKSkseC5qc29uPXt9LHguZXJyb3JzLmxlbmd0aHx8KGUudHJpbSgpJiYoeC5qc29uLm1hcD1lKSxmLnRyaW0oKSYmKHguanNvbi5yZWR1Y2U9ZikpKX0sd2F0Y2g6WyIjdmlldy1tci1lZCJdLGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH19fSwiI3ZpZXctbXItbW9kZSI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfTU9ERSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIHgubW9kZTt4Lm1vZGU9YTt2YXIgYz1iLm15LmZpbmQoIiN2aWV3LW1yLWVkIikubmV4dCgpWzBdLkNvZGVNaXJyb3I7cmV0dXJuIGMuc2V0T3B0aW9uKCJtb2RlIiwianNvbiI9PWErIiI/Impzb24iOmIuQ01wcmVmaXgreC5sYW5ndWFnZSksYy5zZXRPcHRpb24oInJlYWRPbmx5IiwianNvbiI9PWErIiIpLGIubXkucmVjYWxjKCIjdmlldy1tci1lZCIpLGF9fSwiI3ZpZXctbXItbmFtZSI6e2RlbGF5OjUwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuUlQoImRhdGEiKSxjPWEuZGF0YTt4Lm9uKCJjbGljay5teSIsImEiLGZ1bmN0aW9uKCl7dmFyIHg9YS5QaG8oIkVkIikuanNvbnRyZWUuTHMoKSxkPSJ2aWV3c3RhdGUuIitjdy5saWIuc2RibShiLnBhdGhbMF0rIi8iK2MuZGRvYyksZT0oeChkKXx8e3N0YXRlOltdfSkuc3RhdGV8fFtdO2U9ZS5jb25jYXQoW2N3LmxpYi5zZGJtKCJSb2904p2Admlld3MiKSxjdy5saWIuc2RibSgiUm9vdOKdgHZpZXdz4p2AIitjLm5hbWUpXSkudW5pcXVlKCkseChkLHtzdGFtcDpEYXRlLm5vdygpLHN0YXRlOmV9KX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuUlQoImRhdGEiKTtyZXR1cm4geC5lcnJvcnMubGVuZ3RoP3guZXJyb3JzWzBdLmVzY2FwZUhUTUwoKTpiLmxhbmcuVFhUX1RJVExFW3gubGFuZ3VhZ2VdLmFzc2lnbignPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfS97Mn0iPl9kL3szfTwvYT4nLmFzc2lnbihjLnBhdGhbMF0seC5kZG9jLHguZGRvYy5mcm9tKDgpLmVzY2FwZUhUTUwoKSkseC5uYW1lLmVzY2FwZUhUTUwoKSl9LGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH0sYm9sZGVyOmZ1bmN0aW9uKHgpe3JldHVybiAwPT14LmVycm9ycy5sZW5ndGh9fSx3YXRjaDpbIiN2aWV3LW1yLXByb3h5Il19LCIjYnRuLXZpZXctbXItY2xvc2UiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcy5SVDtiKCJkYXRhIikuZWRpdG9yPSExLGIoInN0YXNoVmlld1N0YXRlIikoKSxiKCJteSIpLmNoZWNrKCIjYnRuLXZpZXdjb2RlIiksYigibXkiKS5yZXN0eWxlLmRlbGF5KDUwKX19fSwiI2J0bi12aWV3LW1yLXJ1biI6e2RlbGF5OjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9eC5kZG9jKyLvv70iK3gubmFtZSxkPWIuUlQoWyJWaSIsYywidmlldyJdKXx8e30sZT14Lm1hcCE9KGQubWFwfHwiIil8fHgucmVkdWNlIT0oZC5yZWR1Y2V8fCIiKTtyZXR1cm4gbnVsbCE9YSYmZSYmIl9kZXNpZ24vIiE9eC5kZG9jP2IuU2F2ZVZpZXcoKTpudWxsIT1hJiZiLlJUKCJHZXRWaWV3IikoITApLCc8c3BhbiBjbGFzcz0iZmktcGxheSBmczk1IG82MCI+PC9zcGFuPsKgJytiLmxhbmcuQlROX1NBVkV9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7aWYoeC5lcnJvcnMubGVuZ3RoKXJldHVybiEwO3ZhciBhPXRoaXMsYj14LmRkb2MrIu+/vSIreC5uYW1lLGM9YS5SVChbIlZpIixiLCJ2aWV3Il0pfHx7fTthLmxhbmc7cmV0dXJuISh4Lm1hcCE9KGMubWFwfHwiIil8fHgucmVkdWNlIT0oYy5yZWR1Y2V8fCIiKSl9LCJzZWxmOmdyZWVuIjpmdW5jdGlvbih4KXtpZih4LmVycm9ycy5sZW5ndGgpcmV0dXJuITE7dmFyIGE9dGhpcyxiPXguZGRvYysi77+9Iit4Lm5hbWUsYz1hLlJUKFsiVmkiLGIsInZpZXciXSl8fHt9O3JldHVybiB4Lm1hcCE9KGMubWFwfHwiIil8fHgucmVkdWNlIT0oYy5yZWR1Y2V8fCIiKX19LHdhdGNoOlsiI3ZpZXctbXItcHJveHkiXX0sIiNidG4tdmlldy1tci1yZXZlcnQiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPXguZGRvYysi77+9Iit4Lm5hbWUsZD1iLlJUKFsiVmkiLGMsInZpZXciXSl8fHt9O251bGwhPWEmJih4Lm1hcD1kLm1hcHx8IiIseC5yZWR1Y2U9ZC5yZWR1Y2V8fCIiKX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9eC5kZG9jKyLvv70iK3gubmFtZSxjPWEuUlQoWyJWaSIsYiwidmlldyJdKXx8e307cmV0dXJuIHgubWFwPT0oYy5tYXB8fCIiKSYmeC5yZWR1Y2U9PShjLnJlZHVjZXx8IiIpfX0scmVjYWxjOlsiI3ZpZXctbXItZWQiXSx3YXRjaDpbIiN2aWV3LW1yLXByb3h5Il19LCIjYnRuLXZpZXctbXItZGVsIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz1iLmxhbmcsZD0nPHNwYW4gY2xhc3M9ImZ3NTAwIj57MX08L3NwYW4+JzskLm15Lm1vZGFsKHtkYXRhOnt5ZXM6Yy5CVE5fREVMX1lFUyx5ZXNjc3M6InJlZCIsbm86Yy5CVE5fREVMX05PLGNhbmNlbDoiIix0ZXh0OmMuTVNHX0RFTF9URVhULmFzc2lnbih4Lm5hbWUuZXNjYXBlSFRNTCgpLHguZGRvYy5lc2NhcGVIVE1MKCkpfSxtYW5pZmVzdDpiLlBobygiQ29uZmlybSIpLGRhdGE6e3llczpjLkJUTl9ERUxfWUVTLHllc2NzczoicmVkIixubzpjLkJUTl9ERUxfTk8sY2FuY2VsOiIiLHRleHQ6Yy5NU0dfREVMX1RFWFQuYXNzaWduKGQuYXNzaWduKHgubmFtZS5lc2NhcGVIVE1MKCkpLGQuYXNzaWduKHguZGRvYy5lc2NhcGVIVE1MKCkpKX0sbWFuaWZlc3Q6Yi5QaG8oIkNvbmZpcm0iKSxjbG9zZTpiLlBobygibGFuZyIpLkJUTl9YRExHLGVzYzohMCxnbG9iYWw6ITAsc2NyZWVuOiEwfSkudGhlbihmdW5jdGlvbih4KXsieWVzIj09eC5jbWQmJmIuRGVsVmlldygpfSl9fSxkZWxheTo1MCxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe2lmKCF4LmRkb2MuZnJvbSg4KSlyZXR1cm4hMH19LHdhdGNoOlsiI3ZpZXctbXItcHJveHkiXX0sIiNidG4tdmlldy1tci1zYXZlYXMiOntjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISF4LmVycm9ycy5sZW5ndGh9fSx3YXRjaDpbIiN2aWV3LW1yLXByb3h5Il0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuUlQ7aWYobnVsbCE9YSl7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7dmFyIGU9Yy5SVChbIkRkb2NzIix4LmRkb2MsImxhbmd1YWdlIl0pfHwiamF2YXNjcmlwdCIsZj0kLmV4dGVuZCghMCx7X2ZpeGxhbmc6ITAsX3ZhbGlkOiEwLF9zYXZlOiEwLGxhbmd1YWdlOmUsZGRvYzoiIn0sT2JqZWN0LnJlamVjdCh4LFsibGFuZ3VhZ2UiXSkpO2QoKS5jcmVhdGVOZXdJZHhEbGcoYixmKS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBiLGU9Yy5teS5jaGVjaztmdW5jdGlvbiBmKCl7YS5kZG9jPT14LmRkb2MmJmEubmFtZT09eC5uYW1lPyhlKCIjYnRuLXZpZXctbXItcmV2ZXJ0IiksZSgiI2J0bi12aWV3LW1yLXJ1biIpKTpkKCJjaGFuZ2VWaWV3IikoYS5kZG9jKyLvv70iK2EubmFtZSksZCgiR2V0VmlldyIpKCEwKX0oYj1kKCJQZW5kaW5nIikuX3ZpZXdsaXN0KT9iLnRoZW4oZi5kZWJvdW5jZSg1MCkpOmYoKX0uZGVib3VuY2UoNTApKX19LGV2ZW50czoiY2xpY2subXkifX0sc3R5bGU6eyIgLkNvZGVNaXJyb3IiOiJmb250LXNpemU6MC44MTI1ZW0haW1wb3J0YW50O3BhZGRpbmc6MHB4O21pbi1oZWlnaHQ6MzAwcHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MzAwcHg7IiwiICN2aWV3LW1yLXByb3h5IjpmdW5jdGlvbih4KXtyZXR1cm4ibWF4LWhlaWdodDoiKyh4LnBhcmVudCgpLmhlaWdodCgpLTQ4LTMxKSsicHg7In0sIiAjdmlldy1tci1wcm94eS5yZWQgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyIsIiAjYnRuLXZpZXctbXItZGVsIjoiZGlzcGxheTpub25lOyIsIiAjYnRuLXZpZXctbXItcmV2ZXJ0LmhpZGUgKyAjYnRuLXZpZXctbXItZGVsIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7In0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI3ZpZXctbXItcHJveHkiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LFNhdmVWaWV3OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguUGhvKCJOZXdJbmRleCIpLGI9eC5kYXRhO3JldHVybiBhLlNhdmVJbmRleC5jYWxsKHtsYW5nOmEubGFuZyxSVDp4LlJULFBobzp4LlBobyxSZXE6eC5SZXEsZGF0YTp7X3N0YXlidXN5OiEwLGxhbmd1YWdlOnguUlQoWyJEZG9jcyIsYi5kZG9jXSkubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0IixlcnJvcnM6Yi5lcnJvcnMsZGRvYzpiLmRkb2MsbmFtZTpiLm5hbWUsbWFwOmIuanNvbi5tYXAscmVkdWNlOmIuanNvbi5yZWR1Y2V8fCIifX0pLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGI7ZnVuY3Rpb24gYygpe3gubXkuY2hlY2soIiNidG4tdmlldy1tci1yZXZlcnQiKSx4Lm15LmNoZWNrKCIjYnRuLXZpZXctbXItcnVuIil9KGI9eC5SVCgiUGVuZGluZyIpLl92aWV3bGlzdCk/Yi50aGVuKGMuZGVib3VuY2UoNTApKTpjKCkseC5SVCgiR2V0VmlldyIpKCEwKX0uZGVib3VuY2UoNTApKX0sRGVsVmlldzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGEsZD1hfHxjLm5hbWUsZT1iLlJULGY9ZShbImRhdGEiLCJwYXRoIl0pO2UoWyJkYXRhIiwidGFiaWQiXSk7aWYoYy5lcnJvcnMubGVuZ3RoKXJldHVybiBjdy5saWIubm90ZShiLmxhbmcuRVJSX0VSUkRPQy5hc3NpZ24oYy5lcnJvcnNbMF0pLCJlcnJvciIpLCQuRGVmZXJyZWQoKS5yZWplY3QoYy5lcnJvcnNbMF0pO3ZhciBnPSQuZXh0ZW5kKCEwLHt9LHh8fGUoWyJEZG9jcyIsYy5kZG9jXSkpO3JldHVybiBjdy5saWIuZ2V0cmVmKGcsWyJ2aWV3cyIsZF0pJiZkZWxldGUgZy52aWV3c1tkXSxlKCJCdXN5IikoITApLGIuUmVxKHt1cmw6W2ZbMF0sZy5faWRdLG1ldGhvZDoiUFVUIixoZWFkZXJzOnsiWC1Db3VjaC1GdWxsLUNvbW1pdCI6InRydWUifSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShnKSxkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKHgpe2MucmV2PXgucmV2LGN3LmxpYi5ub3RlKGIubGFuZy5NU0dfREVMX09LLmFzc2lnbihnLl9pZCsiLiIrZCksIm9rIiksZSgiY2hhbmdlVmlldyIpKCIiKSxmdW5jdGlvbigpeyQubXkucmFkaW8oImRidXBkYXRlIix7ZGI6ZlswXSxjbWQ6IndyaXRlIixkb2NzOltnLl9pZF19KX0uZGVib3VuY2UoMTAwKSgpfSkuZmFpbChmdW5jdGlvbih4LGEpe2N3LmxpYi5ub3RlKGIubGFuZy5NU0dfREVMX0ZBSUwuYXNzaWduKGcuX2lkKyIuIitkLHgsYSksImVycm9yIil9KS5hbHdheXMoZSgiQnVzeSIpLmZpbGwoITEpKX19LE1hbmdvRWQ6e2lkOiJjdy5QaG90b24uTWFuZ29FZCIsaW5oZXJpdDpbIlJUIl0scGFyYW1zOntyZXN0eWxlOjUwLHN0cmljdDohMH0sbGFuZzp7fSxIVE1MOic8ZGl2IGNsYXNzPSJiZy1wZ3JheSBsaDE2MCBwdDIgeGdyYXkgbncgb2ggZWxsIHhwYW5lbCI+PGRpdiBjbGFzcz0iZnM5MCB0YXIgZnIgcHQxIj48c3BhbiBpZD0idmlldy1tYW5nby1tb2RlIiBjbGFzcz0ibXQwIj48L3NwYW4+PHNwYW4gaWQ9ImJ0bi12aWV3LW1hbmdvLWNsb3NlIiBjbGFzcz0icHI5IHBsOCBtbDYgcHNldWRvbGluayB0ZG4iIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpOyIgdGl0bGU9IntCVE5fUEFORUxfQ0xPU0V9Ij7inJU8L3NwYW4+PC9kaXY+PGRpdiBpZD0idmlldy1tYW5nby1uYW1lIiBjbGFzcz0iYm9sZGVyIHBsOCBvaCBudyBlbGwiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ2aWV3LW1hbmdvLXByb3h5IiBjbGFzcz0iYmJzIHBsMSBwcjEiPjx0ZXh0YXJlYSBpZD0idmlldy1tYW5nby1lZCIgY2xhc3M9IncxMDBwIj48L3RleHRhcmVhPjwvc2VjdGlvbj48c2VjdGlvbiBpZD0idmlldy1tYW5nby1idXR0b25zIiBjbGFzcz0ibncgcDgiIHN0eWxlPSIiPjxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4tdmlldy1tYW5nby1yZXZlcnQiIGNsYXNzPSJoaWRlIiB0aXRsZT0ie1RJUF9SRVNFVH0iPjxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1JFU0VUfcKgPC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWFuZ28tZGVsIiBjbGFzcz0iaGlkZSByZWQiIHRpdGxlPSJ7VElQX0RFTH0iPjxzcGFuIGNsYXNzPSJmaS10cmFzaCBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9ERUx9PC9idXR0b24+PC9kaXY+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWFuZ28tcnVuIiBjbGFzcz0ibXIyIGdyZWVuIiB0aXRsZT0ie1RJUF9SVU59Ij48c3BhbiBjbGFzcz0iZmktcGxheSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SVU59PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWFuZ28tc3Rhc2giIGNsYXNzPSJtcjIiIHRpdGxlPSJ7VElQX1NBVkV9Ij48c3BhbiBjbGFzcz0iZmktc2F2ZSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9TQVZFfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1hbmdvLWV4cGxhaW4iIGNsYXNzPSJtcjIiIHRpdGxlPSJ7VElQX0VYUEx9Ij48c3BhbiBjbGFzcz0iZmktbWVnYXBob25lIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX0VYUEx9PC9idXR0b24+PC9zZWN0aW9uPicsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3guaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLGEuVGV4dD1hLmRhdGEudGV4dCxhLlZhbGlkYXRlPWEuVmFsaWRhdGUoKSxhLk1hbmdvS2V5cz1jdy5saWIuYTJvKGEuTWFuZ29LZXlzLnNwbGl0KCIgIikpfSxkYXRhOntuYW1lOiJVbnRpdGxlZCBxdWVyeSIsdHlwZToibWFuZ28iLHRleHQ6Iih7XG5cdC8vIFdyaXRlIHlvdXIgbWFuZ28gcXVlcnksIEpTIHN5bnRheCBhbGxvd2VkXG59KSIsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6MH0sTW9kZTpbImphdmFzY3JpcHQiXSxUZXh0OiIiLHVpOnsiI3ZpZXctbWFuZ28tZWQiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLk1vZGUrIiI7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx7bW9kZTpiLGxpbmVOdW1iZXJzOiExLHZpZXdwb3J0TWFyZ2luOjEwMCxzY3JvbGxiYXJTdHlsZTpudWxsLGxpbmVXcmFwcGluZzohMCx0YWJTaXplOjIsdGhlbWU6ImRlZmF1bHQiLHJlYWRPbmx5OiJqc29uIj09YixleHRyYUtleXM6eyJDdHJsLVIiOmZ1bmN0aW9uKCl7YS5SVCgiR2V0VmlldyIpKCEwKX0sIkNtZC1SIjpmdW5jdGlvbigpe2EuUlQoIkdldFZpZXciKSghMCl9fX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5Nb2RlKyIiO3JldHVybiBudWxsIT1hJiYianNvbiIhPWImJih4LnRleHQ9YSksImpzb24iPT1iP2N3LmxpYi5qc29uKHguanNvbiwiICAiLDQwKTp4LnRleHR9fSwiI3ZpZXctbWFuZ28tcHJveHkiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sZGVsYXk6MjAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLlZhbGlkYXRlKHgudGV4dCk7T2JqZWN0LmlzT2JqZWN0KGIpP3guZXJyb3JzPVtdOnguZXJyb3JzPWIseC5qc29uPXguZXJyb3JzLmxlbmd0aD97fTpifSx3YXRjaDpbIiN2aWV3LW1hbmdvLWVkIl0sY3NzOntyZWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD4wfX19LCIjYnRuLXZpZXctbWFuZ28tcnVuIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbCE9YSl7dmFyIGM9Yi5SVCxkPWMoImRhdGEiKS5ncmlkLGU9YygiZGF0YSIpLmNvbHVtbnMsZj1lLnNsaWNlKDApLGc9KGMoImpzZXZhbCIpKCIoIit4LnRleHQrIikiKXx8e2ZpZWxkczpbXX0pLmZpZWxkc3x8W10saD0oYygianNldmFsIikoIigiK2IuVGV4dCsiKSIpfHx7ZmllbGRzOltdfSkuZmllbGRzfHxbXSxpPWcuc3VidHJhY3QoaCkuc3VidHJhY3QoaC5zdWJ0cmFjdChmKSksaj1mKyIiPT0iLnZhbHVlIiYmZy5sZW5ndGg/Zy50byg4KTpmLmNvbmNhdChpLnN1YnRyYWN0KGYpKS50byg4KTtlKyIiIT1qKyIiJiYoYygiZGF0YSIpLmNvbHVtbnM9ai5zbGljZSgwKSxkJiZjKCJidWlsZEdyaWRDb2x1bW5zIikoKSksYi5UZXh0PXgudGV4dCxjKCJHZXRWaWV3IikoITApLnRoZW4oZnVuY3Rpb24oKXtkJiYoYygibXkiKS5yZWNhbGMoIiN2aWV3LWdyaWQtY29scyIpLGMoIm15IikuY2hlY2soIiN2aWV3LWdyaWQtY29scyIpKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB8fHRoaXMuVGV4dD09eC50ZXh0fX0sd2F0Y2g6WyIjdmlldy1tYW5nby1wcm94eSJdfSwiI2J0bi12aWV3LW1hbmdvLWV4cGxhaW4iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzO2lmKG51bGwhPWEpe3ZhciBkPWMubXkuZmluZCgiI3ZpZXctbWFuZ28tcHJveHkiKSxlPWQub3V0ZXJIZWlnaHQoKS0zLGY9ZC5vdXRlcldpZHRoKCktMzI7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7Yi5tb2RhbCh7Y3NzOiJwMTUgcHQwIixhbGlnbjoiYm90dG9tOjE0MCUiLG5vc2U6ImJvdHRvbSIsZGF0YTp7aGVpZ2h0OmUrInB4IixkcmFnOiEwLHJlcTp7dXJsOltjLlJUKCJkYXRhIikucGF0aFswXSwiX2V4cGxhaW4iXSxtZXRob2Q6InBvc3QiLGRhdGE6SlNPTi5zdHJpbmdpZnkoeC5qc29uKX19LHdpZHRoOmYsZHJhZzoiI2RyYWdnZXIiLGJvdW5kOiIwIixyb290OiIiLG1hbmlmZXN0OmMuUGhvKCJSZXFKU09OIil9KX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuITEseC5lcnJvcnMubGVuZ3RoPjB9fSx3YXRjaDpbIiN2aWV3LW1hbmdvLXByb3h5Il19LCIjdmlldy1tYW5nby1tb2RlIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19NT0RFKX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbD09YSlyZXR1cm4gYi5Nb2RlO2IuTW9kZT1hO3ZhciBjPWIubXkuZmluZCgiI3ZpZXctbWFuZ28tZWQiKS5uZXh0KClbMF0uQ29kZU1pcnJvcjtyZXR1cm4gYy5zZXRPcHRpb24oIm1vZGUiLGErIiIpLGMuc2V0T3B0aW9uKCJyZWFkT25seSIsImpzb24iPT1hKyIiKSxiLm15LnJlY2FsYygiI3ZpZXctbWFuZ28tZWQiKSxhfX0sIiN2aWV3LW1hbmdvLW5hbWUiOntkZWxheToyNTAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLlJUKCJkYXRhIik7aWYoYi5QaG8oIkxzIikoIk1hbmdvLiIrYy5wYXRoWzBdLGMubWFuZ28pLCF4LmVycm9ycy5sZW5ndGgpe3ZhciBkPXgubmFtZSsiIjtyZXR1cm4iRGVmYXVsdCBxdWVyeSI9PWQ/Yi5sYW5nLlRYVF9USVRMRTA6Yi5sYW5nLlRYVF9USVRMRS5hc3NpZ24oZC5lc2NhcGVIVE1MKCkpfXJldHVybiB4LmVycm9yc1swXS5lc2NhcGVIVE1MKCl9LGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH0sYm9sZGVyOmZ1bmN0aW9uKHgpe3JldHVybiAwPT14LmVycm9ycy5sZW5ndGh9fSx3YXRjaDpbIiN2aWV3LW1hbmdvLXByb3h5Il19LCIjYnRuLXZpZXctbWFuZ28tY2xvc2UiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcy5SVDtiKCJkYXRhIikuZWRpdG9yPSExLGIoInN0YXNoVmlld1N0YXRlIikoKSxiKCJteSIpLmNoZWNrKCIjYnRuLXZpZXdjb2RlIiksYigibXkiKS5yZXN0eWxlLmRlbGF5KDUwKX19fSwiI2J0bi12aWV3LW1hbmdvLWRlbCI6e2Nzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oKXtyZXR1cm4iRGVmYXVsdCBxdWVyeSI9PXRoaXMuUlQoWyJkYXRhIiwibWFuZ28iLCJhY3RpdmUiXSl9fSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcyxjPWIuUlQoWyJkYXRhIiwibWFuZ28iXSk7Yy5hY3RpdmU9IkRlZmF1bHQgcXVlcnkiLGMucXVlcnkucmVtb3ZlKGZ1bmN0aW9uKGEpe3JldHVybiBhLm5hbWU9PXgubmFtZX0pLGIuUlQoImRhdGEiKS52aWV3PSJfZmluZO+/vURlZmF1bHQgcXVlcnkiLGIuUlQoIkdldFZpZXdzIikoITAsITEsITApLGIuUlQoIm15IikucmVkcmF3LmRlYm91bmNlKDUwKSgpfX19LCIjYnRuLXZpZXctbWFuZ28tcmV2ZXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7bnVsbCE9YSYmKHgudGV4dD1iLlJUKCJEZWZhdWx0TWFuZ29RcnkiKS50ZXh0KX0sZGVsYXk6MTAwLGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuIkRlZmF1bHQgcXVlcnkiIT14Lm5hbWV9LCI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuIHgudGV4dD09YS5SVCgiRGVmYXVsdE1hbmdvUXJ5IikudGV4dH19LHJlY2FsYzpbIiN2aWV3LW1hbmdvLWVkIl0sd2F0Y2g6WyIjdmlldy1tYW5nby1wcm94eSJdfSwiI2J0bi12aWV3LW1hbmdvLXN0YXNoIjp7Y3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiJEZWZhdWx0IHF1ZXJ5IiE9eC5uYW1lP3RoaXMuVGV4dD09eC50ZXh0OngudGV4dD09dGhpcy5SVCgiRGVmYXVsdE1hbmdvUXJ5IikudGV4dH19LHdhdGNoOlsiI3ZpZXctbWFuZ28tcHJveHkiXSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9KGMuUlQoWyJkYXRhIiwibWFuZ28iLCJhY3RpdmUiXSksJzxzcGFuIGNsYXNzPSJmaS1zYXZlIGZzOTUgbzYwIj48L3NwYW4+wqAnK2MubGFuZy5CVE5fU0FWRSk7cmV0dXJuIG51bGw9PWE/ZDpiLmRhdGEoIm1vZGFsIik/KGIubW9kYWwoITApLGQpOihjLm15Lm1vZGFsKCIjYnRuLXZpZXctbWFuZ28tc3Rhc2giLHtkYXRhOiQuZXh0ZW5kKCEwLHtfbmV3Ont9fSxjLlJUKFsiZGF0YSIsIm1hbmdvIl0pKSxtYW5pZmVzdDp7ZGF0YTp7fSxOYW1lOiIiLFFyeTpbXSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7YS5Rcnk9T2JqZWN0LmNsb25lKGIucXVlcnksITApLHguaHRtbCgkLm15LmZvcm1nZW4oWyc8ZGl2IGNsYXNzPSJtYjgiPicsJzxkaXYgaWQ9ImZ0aXRsZSIgY2xhc3M9InhncmF5Ij57VFhUX1NUQVNIfTwvZGl2PicsWyIiLCJpbnAjbXRpdGxlLncxMDBwIix7cGxjOiJ7UExDX1NUQVNIfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJtdDE1IHB0MTUgYnRkIGZzOTUiPicsWyIiLCJidG4jYnRuLXN0YXNoLW9rLmdyZWVuLm1yMiIse3ZhbDoie0JUTl9TVEFTSF9PS30ifV0sIjwvZGl2PiJdKS5hc3NpZ24oYy5sYW5nKSl9LHVpOnsiI210aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIGIuTmFtZTtpZihiLk5hbWU9YS5jb21wYWN0KCksYi5OYW1lLmxlbmd0aD4yJiZiLk5hbWUubGVuZ3RoPDMxKXt2YXIgYz1PYmplY3QuY2xvbmUoeC5xdWVyeS5maW5kKGZ1bmN0aW9uKGEpe3JldHVybiBhLm5hbWU9PXguYWN0aXZlfSksITApO2MubmFtZT1iLk5hbWUsYy5zdGFtcD1EYXRlLm5vdygpLHguX25ldz1jfXJldHVybiBhfSxjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiBhLmNvbXBhY3QoKT9hLmNvbXBhY3QoKS5sZW5ndGg8M3x8YS5sZW5ndGg+MzA/Yy5sYW5nLkVSUl9TVEFTSF9MRU46dGhpcy5RcnkuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lPT1hfSk/Yy5sYW5nLkVSUl9TVEFTSF9FWElTVDp2b2lkIDA6Yy5sYW5nLkVSUl9TVEFTSF9SRVF9fSwiI2J0bi1zdGFzaC1vayI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNvbW1pdCgpfSx3YXRjaDpbIiNtdGl0bGUiXSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubXkudmFsaWQoKX19fX0sc3R5bGU6e319LGNzczoicDE1IixnbG9iYWw6ITAsc2NyZWVuOiEwLHdpZHRoOjQwMCxlc2M6ITAsZW50ZXI6ITAsYm91bmQ6MjB9KS50aGVuKGZ1bmN0aW9uKHgpe3gucXVlcnkucHVzaCh4Ll9uZXcpLHguYWN0aXZlPXguX25ldy5uYW1lLCQuZXh0ZW5kKGMuUlQoImRhdGEiKS5tYW5nbyxPYmplY3QucmVqZWN0KHgsIl9uZXciKSksYy5SVCgiZGF0YSIpLnZpZXc9Il9maW5k77+9Iit4LmFjdGl2ZSxjLlJUKCJHZXRWaWV3cyIpKCEwLCExLCEwKSxjLlJUKCJteSIpLnJlZHJhdygpfSksZCl9LGV2ZW50czoiY2xpY2subXkifX0sc3R5bGU6eyIgLkNvZGVNaXJyb3IiOiJmb250LXNpemU6MC44MTI1ZW0haW1wb3J0YW50OyBwYWRkaW5nOjRweDsgbWluLWhlaWdodDozMDBweDsiLCIgI3ZpZXctbWFuZ28tcHJveHkiOmZ1bmN0aW9uKHgpe3JldHVybiJtYXgtaGVpZ2h0OiIrKHgucGFyZW50KCkuaGVpZ2h0KCktNDgtMzIpKyJweDsifSwiICN2aWV3LW1hbmdvLXByb3h5LnJlZCAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMDAsIDIwMCwgMC43NSk7In0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI3ZpZXctbWFuZ28tcHJveHkiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LE1hbmdvS2V5czoic2VsZWN0b3IgbGltaXQgc2tpcCBzb3J0IGZpZWxkcyB1c2VfaW5kZXggY29uZmxpY3RzIHIgYm9va21hcmsgdXBkYXRlIHN0YWJsZSBzdGFsZSBleGVjdXRpb25fc3RhdHMiLFZhbGlkYXRlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPSh4LmRhdGEseC5sYW5nKSxiPU9iamVjdC5pc0FycmF5LGM9T2JqZWN0LmlzT2JqZWN0LGQ9T2JqZWN0LmlzU3RyaW5nLGU9T2JqZWN0LnNpemUsZj1jdy5saWIuYTJvLGc9ZihbIiRhbGwiLCIkYWxsTWF0Y2giLCIkYW5kIiwiJGVsZW1NYXRjaCIsIiRleGlzdHMiLCIkaW4iLCIka2V5TWFwTWF0Y2giLCIkbW9kIiwiJG5pbiIsIiRub3IiLCIkbm90IiwiJG9yIiwiJHJlZ2V4IiwiJHNpemUiLCIkdHlwZSIsIiRiZWdpbnNXaXRoIl0pLGg9ZihbIiRpbiIsIiRuaW4iLCIkbW9kIiwiJGFsbCJdKSxpPWYoWyIkZXEiLCIkbmUiLCIkZ3QiLCIkZ3RlIiwiJGx0IiwiJGx0ZSJdKSxqPWYoWyJudWxsIiwiYm9vbGVhbiIsIm51bWJlciIsInN0cmluZyIsImFycmF5Iiwib2JqZWN0Il0pO3JldHVybiBrO2Z1bmN0aW9uIGsoZCl7dmFyIGY9W10sZz14LlJUKCJqc2V2YWwiKSgiKCIrZCsiKSIpfHxudWxsO2lmKG51bGwhPWcmJmMoZykpaWYoYyhnLnNlbGVjdG9yKSYmZShnLnNlbGVjdG9yKSlpZihiKGcuZmllbGRzKSlpZihnLmZpZWxkcy5sZW5ndGgpdHJ5e2woZy5zZWxlY3RvciwhMCl9Y2F0Y2goeCl7Zi5wdXNoKHgubWVzc2FnZSsiIil9ZWxzZSBmLnB1c2goYS5FUlJfRU1QVFlfRklFTERTKTtlbHNlIGYucHVzaChhLkVSUl9OT19GSUVMRFMpO2Vsc2UgZi5wdXNoKGEuRVJSX05PX1NFTEVDVE9SKTtlbHNlIGYucHVzaChhLkVSUl9OT19KU09OKTtyZXR1cm4hZi5sZW5ndGgmJmUoZyk+MiYmT2JqZWN0LmtleXMoZykuZm9yRWFjaChmdW5jdGlvbihiKXt4Lk1hbmdvS2V5c1tiXXx8Zi5wdXNoKGEuRVJSX01BTkdPX0tFWVMuYXNzaWduKCIuIitiKSl9KSxmLmxlbmd0aD9mOmd9ZnVuY3Rpb24gbCh4LGQpe2lmKGIoeCkpZm9yKHZhciBlPTA7ZTx4Lmxlbmd0aDtlKyspaz14W2VdLChiKGspfHxjKGspKSYmbChrLGQpO2Vsc2V7dmFyIGY9T2JqZWN0LmtleXMoeCk7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrKyl7dmFyIGo9ZltlXSxrPXhbal07aWYoIiQiPT1qWzBdJiYhZ1tqXSYmIWhbal0mJiFpW2pdKXRocm93IG5ldyBFcnJvcihhLkVSUl9JTlZBTElEX09QRVJBVE9SLmFzc2lnbihqKSk7Z1tqXSYmbShqLGssZCksaVtqXXx8KGhbal18fChiKGspfHxjKGspKSYmbChrLGQpKX19fWZ1bmN0aW9uIG0oeCxlLGYpe3ZhciBnPSIiO2lmKFsiJGluIiwiJG5pbiIsIiRvciIsIiRhbmQiLCIkbW9kIiwiJG5vciIsIiRhbGwiXS5maW5kKHgpJiYoYihlKXx8KGc9YS5FUlJfVl9BUlIuYXNzaWduKHgpKSksWyIkbm90IiwiJGVsZW1NYXRjaCIsIiRhbGxNYXRjaCIsIiRrZXlNYXBNYXRjaCJdLmZpbmQoeCkmJihjKGUpfHwoZz1hLkVSUl9WX09CSi5hc3NpZ24oeCkpKSwhZyl7aWYoIiRtb2QiPT14JiZiKGUpKWlmKDIhPWUubGVuZ3RoKWc9YS5FUlJfVl9NT0QxO2Vsc2V7dmFyIGg9ZVswXSxpPWVbMV07MD09PWgmJihnPWEuRVJSX1ZfTU9EMCksIm51bWJlciI9PXR5cGVvZiBoJiZwYXJzZUludChoLDEwKT09PWh8fChnPWEuRVJSX1ZfTU9ERCkscGFyc2VJbnQoaSwxMCkhPWkmJihnPWEuRVJSX1ZfTU9EUil9IiRleGlzdHMiPT14JiYiYm9vbGVhbiIhPXR5cGVvZiBlJiYoZz1hLkVSUl9WX0VYSVNUKSwiJHR5cGUiPT14JiYoZChlKT9qW2VdfHwoZz1hLkVSUl9WX1RZUEUxKTpnPWEuRVJSX1ZfVFlQRTApLCIkc2l6ZSI9PXgmJnBhcnNlSW50KGUsMTApIT09ZSYmKGc9YS5FUlJfVl9TSVpFKSwiJHJlZ2V4Ij09eCYmKGQoZSl8fChnPWEuRVJSX1ZfUkVHRVgpKX1pZihnKXRocm93IG5ldyBFcnJvcihnKX19fSxTcWxFZDp7aWQ6ImN3LlBob3Rvbi5TcWxFZCIsaW5oZXJpdDpbIlJUIl0scGFyYW1zOntyZXN0eWxlOjUwLHN0cmljdDohMH0sbGFuZzp7fSxyZXF1aXJlOlt7IndpbmRvdy5zcWwybWFuZ28iOiJsaWIvc3FsMnBob3Rvbi5qcyJ9XSxIVE1MOic8ZGl2IGNsYXNzPSJiZy1wZ3JheSBsaDE2MCBwdDIgeGdyYXkgbncgb2ggZWxsIHhwYW5lbCI+PGRpdiBjbGFzcz0iZnM5MCB0YXIgZnIgcHQxIj48c3BhbiBpZD0idmlldy1zcWwtbW9kZSIgY2xhc3M9Im10MCI+PC9zcGFuPjxzcGFuIGlkPSJidG4tdmlldy1zcWwtY2xvc2UiIGNsYXNzPSJwcjkgcGw4IG1sNiBwc2V1ZG9saW5rIHRkbiIgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7IiB0aXRsZT0ie0JUTl9QQU5FTF9DTE9TRX0iPuKclTwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ2aWV3LXNxbC1uYW1lIiBjbGFzcz0iYm9sZGVyIHBsOCBvaCBudyBlbGwiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ2aWV3LXNxbC1wcm94eSIgY2xhc3M9ImJicyBwbDEgcHIxIj48dGV4dGFyZWEgaWQ9InZpZXctc3FsLWVkIiBjbGFzcz0idzEwMHAiPjwvdGV4dGFyZWE+PC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJ2aWV3LXNxbC1idXR0b25zIiBjbGFzcz0ibncgcDgiIHN0eWxlPSIiPjxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4tdmlldy1zcWwtcmV2ZXJ0IiBjbGFzcz0iaGlkZSIgdGl0bGU9IntUSVBfUkVTRVR9Ij48c3BhbiBjbGFzcz0iZmktcmVmcmVzaCBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SRVNFVH3CoDwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LXNxbC1kZWwiIGNsYXNzPSJoaWRlIHJlZCIgdGl0bGU9IntUSVBfREVMfSI+PHNwYW4gY2xhc3M9ImZpLXRyYXNoIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX0RFTH08L2J1dHRvbj48L2Rpdj48YnV0dG9uIGlkPSJidG4tdmlldy1zcWwtcnVuIiBjbGFzcz0ibXIyIGdyZWVuIiB0aXRsZT0ie1RJUF9SVU59Ij48c3BhbiBjbGFzcz0iZmktcGxheSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SVU59PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctc3FsLXN0YXNoIiBjbGFzcz0ibXIyIiB0aXRsZT0ie1RJUF9TQVZFfSI+PHNwYW4gY2xhc3M9ImZpLXNhdmUgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fU0FWRX08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1zcWwtZXhwbGFpbiIgY2xhc3M9Im1yMiIgdGl0bGU9IntUSVBfRVhQTH0iPjxzcGFuIGNsYXNzPSJmaS1tZWdhcGhvbmUgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fRVhQTH08L2J1dHRvbj48L3NlY3Rpb24+Jyxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSksYS5UZXh0PWEuZGF0YS50ZXh0fSxkYXRhOntuYW1lOiJVbnRpdGxlZCBTUUwiLHR5cGU6InNxbCIsdGV4dDoiLS0gV3JpdGUgU1FMXG5TRUxFQ1QgX2lkIEZST00gXyIsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6MH0sTW9kZTpbInNxbCJdLFRleHQ6IiIsdWk6eyIjdmlldy1zcWwtZWQiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLk1vZGUrIiI7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx7bW9kZTpiLGxpbmVOdW1iZXJzOiExLHZpZXdwb3J0TWFyZ2luOjEwMCxzY3JvbGxiYXJTdHlsZTpudWxsLGxpbmVXcmFwcGluZzohMCx0YWJTaXplOjIsdGhlbWU6ImRlZmF1bHQiLHJlYWRPbmx5OiJqc29uIj09YixleHRyYUtleXM6eyJDdHJsLVIiOmZ1bmN0aW9uKCl7YS5SVCgiR2V0VmlldyIpKCEwKX0sIkNtZC1SIjpmdW5jdGlvbigpe2EuUlQoIkdldFZpZXciKSghMCl9fX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5Nb2RlKyIiO3JldHVybiBudWxsIT1hJiYianNvbiIhPWImJih4LnRleHQ9YSksImpzb24iPT1iP2N3LmxpYi5qc29uKHguanNvbiwiICAiLDQwKTp4LnRleHR9fSwiI3ZpZXctc3FsLXByb3h5Ijp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGRlbGF5OjIwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5WYWxpZGF0ZSh4LnRleHQucmVwbGFjZSgvLS1bXlxyXG5dKy9nLCIiKSk7T2JqZWN0LmlzT2JqZWN0KGIpP3guZXJyb3JzPVtdOnguZXJyb3JzPVtiKyIiXSx4Lmpzb249eC5lcnJvcnMubGVuZ3RoP3t9Ok9iamVjdC5yZWplY3QoYiwidGFibGUiKX0sd2F0Y2g6WyIjdmlldy1zcWwtZWQiXSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9fX0sIiNidG4tdmlldy1zcWwtcnVuIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbCE9YSl7dmFyIGM9Yi5SVCxkPWMoImRhdGEiKS5ncmlkLGU9YygiZGF0YSIpLmNvbHVtbnMsZj1lLnNsaWNlKDApLGc9KGMoImpzZXZhbCIpKCIoIit4LnRleHQrIikiKXx8e2ZpZWxkczpbXX0pLmZpZWxkc3x8W10saD0oYygianNldmFsIikoIigiK2IuVGV4dCsiKSIpfHx7ZmllbGRzOltdfSkuZmllbGRzfHxbXSxpPWcuc3VidHJhY3QoaCkuc3VidHJhY3QoaC5zdWJ0cmFjdChmKSksaj1mKyIiPT0iLnZhbHVlIiYmZy5sZW5ndGg/Zy50byg4KTpmLmNvbmNhdChpLnN1YnRyYWN0KGYpKS50byg4KTtlKyIiIT1qKyIiJiYoYygiZGF0YSIpLmNvbHVtbnM9ai5zbGljZSgwKSxkJiZjKCJidWlsZEdyaWRDb2x1bW5zIikoKSksYi5UZXh0PXgudGV4dCxjKCJHZXRWaWV3IikoITApLnRoZW4oZnVuY3Rpb24oKXtkJiYoYygibXkiKS5yZWNhbGMoIiN2aWV3LWdyaWQtY29scyIpLGMoIm15IikuY2hlY2soIiN2aWV3LWdyaWQtY29scyIpKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB8fHRoaXMuVGV4dD09eC50ZXh0fX0sd2F0Y2g6WyIjdmlldy1zcWwtcHJveHkiXX0sIiNidG4tdmlldy1zcWwtZXhwbGFpbiI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7aWYobnVsbCE9YSl7dmFyIGQ9Yy5teS5maW5kKCIjdmlldy1zcWwtcHJveHkiKSxlPWQub3V0ZXJIZWlnaHQoKS0zLGY9ZC5vdXRlcldpZHRoKCktMzI7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7Yi5tb2RhbCh7Y3NzOiJwMTUgcHQwIixhbGlnbjoiYm90dG9tOjE0MCUiLG5vc2U6ImJvdHRvbSIsZGF0YTp7aGVpZ2h0OmUrInB4IixkcmFnOiEwLHJlcTp7dXJsOltjLlJUKCJkYXRhIikucGF0aFswXSwiX2V4cGxhaW4iXSxtZXRob2Q6InBvc3QiLGRhdGE6SlNPTi5zdHJpbmdpZnkoeC5qc29uKX19LHdpZHRoOmYsZHJhZzoiI2RyYWdnZXIiLGJvdW5kOiIwIixyb290OiIiLG1hbmlmZXN0OmMuUGhvKCJSZXFKU09OIil9KX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuITEseC5lcnJvcnMubGVuZ3RoPjB9fSx3YXRjaDpbIiN2aWV3LXNxbC1wcm94eSJdfSwiI3ZpZXctc3FsLW1vZGUiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX01PREUpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsPT1hKXJldHVybiBiLk1vZGU7Yi5Nb2RlPWE7dmFyIGM9Yi5teS5maW5kKCIjdmlldy1zcWwtZWQiKS5uZXh0KClbMF0uQ29kZU1pcnJvcjtyZXR1cm4gYy5zZXRPcHRpb24oIm1vZGUiLGErIiIpLGMuc2V0T3B0aW9uKCJyZWFkT25seSIsImpzb24iPT1hKyIiKSxiLm15LnJlY2FsYygiI3ZpZXctc3FsLWVkIiksYX19LCIjdmlldy1zcWwtbmFtZSI6e2RlbGF5OjI1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuUlQoImRhdGEiKTtpZihiLlBobygiTHMiKSgiU1FMLiIrYy5wYXRoWzBdLGMuc3FsKSwheC5lcnJvcnMubGVuZ3RoKXt2YXIgZD14Lm5hbWUrIiI7cmV0dXJuIkRlZmF1bHQgU1FMIj09ZD9iLmxhbmcuVFhUX1RJVExFMDpiLmxhbmcuVFhUX1RJVExFLmFzc2lnbihkLmVzY2FwZUhUTUwoKSl9cmV0dXJuIHguZXJyb3JzWzBdLmVzY2FwZUhUTUwoKX0sY3NzOntyZWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD4wfSxib2xkZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PXguZXJyb3JzLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctc3FsLXByb3h5Il19LCIjYnRuLXZpZXctc3FsLWNsb3NlIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMuUlQ7YigiZGF0YSIpLmVkaXRvcj0hMSxiKCJzdGFzaFZpZXdTdGF0ZSIpKCksYigibXkiKS5jaGVjaygiI2J0bi12aWV3Y29kZSIpLGIoIm15IikucmVzdHlsZS5kZWxheSg1MCl9fX0sIiNidG4tdmlldy1zcWwtZGVsIjp7Y3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbigpe3JldHVybiJEZWZhdWx0IFNRTCI9PXRoaXMuUlQoWyJkYXRhIiwic3FsIiwiYWN0aXZlIl0pfX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz1iLlJUKFsiZGF0YSIsInNxbCJdKTtjLmFjdGl2ZT0iRGVmYXVsdCBTUUwiLGMucXVlcnkucmVtb3ZlKGZ1bmN0aW9uKGEpe3JldHVybiBhLm5hbWU9PXgubmFtZX0pLGIuUlQoImRhdGEiKS52aWV3PSJfc3Fs77+9RGVmYXVsdCBTUUwiLGIuUlQoIkdldFZpZXdzIikoITAsITEsITApLGIuUlQoIm15IikucmVkcmF3LmRlYm91bmNlKDUwKSgpfX19LCIjYnRuLXZpZXctc3FsLXJldmVydCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO251bGwhPWEmJih4LnRleHQ9Yi5SVCgiRGVmYXVsdFNxbFFyeSIpLnRleHQpfSxkZWxheToxMDAsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4iRGVmYXVsdCBTUUwiIT14Lm5hbWV9LCI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuIHgudGV4dD09YS5SVCgiRGVmYXVsdFNxbFFyeSIpLnRleHR9fSxyZWNhbGM6WyIjdmlldy1zcWwtZWQiXSx3YXRjaDpbIiN2aWV3LXNxbC1wcm94eSJdfSwiI2J0bi12aWV3LXNxbC1zdGFzaCI6e2Nzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iRGVmYXVsdCBTUUwiIT14Lm5hbWU/dGhpcy5UZXh0PT14LnRleHQ6eC50ZXh0PT10aGlzLlJUKCJEZWZhdWx0U3FsUXJ5IikudGV4dH19LHdhdGNoOlsiI3ZpZXctc3FsLXByb3h5Il0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPShjLlJUKFsiZGF0YSIsInNxbCIsImFjdGl2ZSJdKSwnPHNwYW4gY2xhc3M9ImZpLXNhdmUgZnM5NSBvNjAiPjwvc3Bhbj7CoCcrYy5sYW5nLkJUTl9TQVZFKTtyZXR1cm4gbnVsbD09YT9kOmIuZGF0YSgibW9kYWwiKT8oYi5tb2RhbCghMCksZCk6KGMubXkubW9kYWwoIiNidG4tdmlldy1zcWwtc3Rhc2giLHtkYXRhOiQuZXh0ZW5kKCEwLHtfbmV3Ont9fSxjLlJUKFsiZGF0YSIsInNxbCJdKSksbWFuaWZlc3Q6e2RhdGE6e30sTmFtZToiIixRcnk6W10saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2EuUXJ5PU9iamVjdC5jbG9uZShiLnF1ZXJ5LCEwKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKFsnPGRpdiBjbGFzcz0ibWI4Ij4nLCc8ZGl2IGlkPSJmdGl0bGUiIGNsYXNzPSJ4Z3JheSI+e1RYVF9TVEFTSH08L2Rpdj4nLFsiIiwiaW5wI210aXRsZS53MTAwcCIse3BsYzoie1BMQ19TVEFTSH0iLHNwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9LCJtc2ciXSwiPC9kaXY+IiwnPGRpdiBjbGFzcz0ibXQxNSBwdDE1IGJ0ZCBmczk1Ij4nLFsiIiwiYnRuI2J0bi1zdGFzaC1vay5ncmVlbi5tcjIiLHt2YWw6IntCVE5fU1RBU0hfT0t9In1dLCI8L2Rpdj4iXSkuYXNzaWduKGMubGFuZykpfSx1aTp7IiNtdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsPT1hKXJldHVybiBiLk5hbWU7aWYoYi5OYW1lPWEuY29tcGFjdCgpLGIuTmFtZS5sZW5ndGg+MiYmYi5OYW1lLmxlbmd0aDwzMSl7dmFyIGM9T2JqZWN0LmNsb25lKHgucXVlcnkuZmluZChhPT5hLm5hbWU9PXguYWN0aXZlKSwhMCk7Yy5uYW1lPWIuTmFtZSxjLnN0YW1wPURhdGUubm93KCkseC5fbmV3PWN9cmV0dXJuIGF9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEuY29tcGFjdCgpP2EuY29tcGFjdCgpLmxlbmd0aDwzfHxhLmxlbmd0aD4zMD9jLmxhbmcuRVJSX1NUQVNIX0xFTjp0aGlzLlFyeS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWU9PWF9KT9jLmxhbmcuRVJSX1NUQVNIX0VYSVNUOnZvaWQgMDpjLmxhbmcuRVJSX1NUQVNIX1JFUX19LCIjYnRuLXN0YXNoLW9rIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY29tbWl0KCl9LHdhdGNoOlsiI210aXRsZSJdLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5teS52YWxpZCgpfX19fX0sY3NzOiJwMTUiLGdsb2JhbDohMCxzY3JlZW46ITAsd2lkdGg6NDAwLGVzYzohMCxlbnRlcjohMCxib3VuZDoyMH0pLnRoZW4oZnVuY3Rpb24oeCl7eC5xdWVyeS5wdXNoKHguX25ldykseC5hY3RpdmU9eC5fbmV3Lm5hbWUsJC5leHRlbmQoYy5SVCgiZGF0YSIpLnNxbCxPYmplY3QucmVqZWN0KHgsIl9uZXciKSksYy5SVCgiZGF0YSIpLnZpZXc9Il9zcWzvv70iK3guYWN0aXZlLGMuUlQoIkdldFZpZXdzIikoITAsITEsITApLGMuUlQoIm15IikucmVkcmF3KCl9KSxkKX0sZXZlbnRzOiJjbGljay5teSJ9fSxzdHlsZTp7IiAuQ29kZU1pcnJvciI6ImZvbnQtc2l6ZTowLjgxMjVlbSFpbXBvcnRhbnQ7IHBhZGRpbmc6NHB4OyBtaW4taGVpZ2h0OjMwMHB4OyIsIiAjdmlldy1zcWwtcHJveHkiOmZ1bmN0aW9uKHgpe3JldHVybiJtYXgtaGVpZ2h0OiIrKHgucGFyZW50KCkuaGVpZ2h0KCktNDgtMzIpKyJweDsifSwiICN2aWV3LXNxbC1wcm94eS5yZWQgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyJ9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiN2aWV3LXNxbC1wcm94eSIpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEoKS5yZW1vdmUoKX0sVmFsaWRhdGU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5sYW5nLGI9IiIsYz0iIjt0cnl7Yj13aW5kb3cuc3FsMm1hbmdvLnBhcnNlKHgpfWNhdGNoKHgpe2M9eCsiIixjb25zb2xlLmxvZyhjKSxiPS9OT1RISU5HIENPTlNVTUVELy50ZXN0KGMpP2EuRVJSX05FQVIuYXNzaWduKGMuc3BsaXQoIlN0b3BwZWQgYXQgLSAiKVsxXS5yZXBsYWNlKC8nL2csIiIpLnRydW5jYXRlKDEwKSk6L29uIGxpbmUgXGQvLnRlc3QoYyk/KGI9Yy5zcGxpdCgiZXJyb3Igb24gbGluZSAiKVsxXSkuc3BsaXQoIjoiKS5tYXAoKHgsYSk9PmE/eDp4LTEpLmpvaW4oIjoiKTovdW5zdXBwb3J0ZWQgU1FMIG9wZXJhdGlvbi8udGVzdChjKT9hLkVSUl9VTlNVUFAuYXNzaWduKGMuc3BsaXQoInVuc3VwcG9ydGVkIFNRTCBvcGVyYXRpb24iKVsxXS50cmltKCkudG9VcHBlckNhc2UoKSk6LyAobm90XHN8dW4pc3VwcG9ydGVkJC8udGVzdChjKT9hLkVSUl9VTlNVUFAuYXNzaWduKGMuc3BsaXQoIkVycm9yOiAiKVsxXS50cmltKCkucmVwbGFjZSgvIChub3Rcc3x1bilzdXBwb3J0ZWQkLywiIikudG9VcHBlckNhc2UoKSk6L2FsbCBBU0Mgb3IgYWxsIERFU0MvaS50ZXN0KGMpP2EuRVJSX0FTQ0RFU0M6YS5FUlJfTk9fSlNPTn1yZXR1cm4gYn19LFVzZXJEb2M6e2lkOiJjdy5QaG90b24uVXNlckRvYyIsbGFuZzp7fSxkYXRhOntfaWQ6Im9yZy5jb3VjaGRiLnVzZXI6Iix0eXBlOiJ1c2VyIixuYW1lOiIiLHBhc3N3b3JkOiIiLHJvbGVzOltdfSxSb2xlczpbXSxTZWM6e30sVXNlcnM6e30sSXM6e2E6e30sbTp7fX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9YS5QaG8oIkFsbCIpLGQ9Yi5faWQuc3BsaXQoIjoiKVsxXTthLlNlYz1PYmplY3Qua2V5cyhjKS5yZWR1Y2UoZnVuY3Rpb24oeCxiKXt2YXIgZT1jW2JdLnNlY3VyaXR5LGY9KGUuYWRtaW5zfHx7fSkucm9sZXN8fFtdLGc9KGUubWVtYmVyc3x8e30pLnJvbGVzfHxbXSxoPShlLmFkbWluc3x8e30pLm5hbWVzfHxbXSxpPShlLm1lbWJlcnN8fHt9KS5uYW1lc3x8W107cmV0dXJuIGguaW5kZXhPZihkKT4tMSYmKGEuSXMuYVtiXT0hMCksaS5pbmRleE9mKGQpPi0xJiYoYS5Jcy5tW2JdPSEwKSxmLmZvckVhY2goZnVuY3Rpb24oYSl7eFthXXx8KHhbYV09e2E6e30sbTp7fX0pLHhbYV0uYVtiXT0hMH0pLGcuZm9yRWFjaChmdW5jdGlvbihhKXt4W2FdfHwoeFthXT17YTp7fSxtOnt9fSkseFthXS5tW2JdPSEwfSkseH0se30pLGEuUm9sZXM9T2JqZWN0LmtleXMoYS5TZWMpLnJlbW92ZSgvXl8vKS5zb3J0KCksYi5fcmV2JiYoYS5sYW5nLlRYVF9USVRMRT1hLmxhbmcuVFhUX1RJVExFX0VELGEubGFuZy5QTENfUD1hLmxhbmcuUExDX1BfRUQpLHguaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKS5hc3NpZ24oYS5sYW5nKSksYS5QaG8oIkdldFVzZXJzIikoKS50aGVuKGZ1bmN0aW9uKHgpe2EuVXNlcnM9Y3cubGliLmEybyh4KX0pLHgudGhlbihmdW5jdGlvbigpe2EuU2VsMlNjcm9sbCh4LCEwKX0pfSxzYXZlVXNlcjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9eHx8YS5kYXRhLGM9ZnVuY3Rpb24oeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX07cmV0dXJuIGEuUmVxKHt1cmw6WyJfdXNlcnMiLGIuX2lkXSxtZXRob2Q6IlBVVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoYil9KS50aGVuKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoYS5sYW5nLk1TR19PSy5hc3NpZ24oYyhiLm5hbWUpKSwib2siKSwkLm15LnJhZGlvKCJkYnVwZGF0ZSIsIl91c2VycyIpfSkuZmFpbChmdW5jdGlvbih4LGQpe2N3LmxpYi5ub3RlKGEubGFuZy5NU0dfRkFJTC5hc3NpZ24oYyhiLm5hbWUpLHgsYyhkKSksImVycm9yIil9KX0sdWk6eyIjdW5hbWUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4Lm5hbWU9YSx4Ll9pZD0ib3JnLmNvdWNoZGIudXNlcjoiK2EpLHgubmFtZX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5oYXMoIjoiKXx8L15fLy50ZXN0KGEpP3RoaXMubGFuZy5FUlJfTjp0aGlzLlVzZXJzW2FdJiYheC5fcmV2P3RoaXMubGFuZy5FUlJfTlg6dm9pZCAwfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiEheC5fcmV2fSwic2VsZjp4Z3JheSI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4Ll9yZXZ9fX0sIiN1cGFzcyI6InBhc3N3b3JkIiwiI3Vyb2xlcyI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI3Vyb2xlcyIsdGhpcy5Sb2xlcywiUExDX1IiKX0sYmluZDoicm9sZXMiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7aWYoYS5maW5kKC9eXy8pKXJldHVybiB0aGlzLmxhbmcuRVJSX1J9fSwiI3VhY2Nlc3MiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLlNlYyxkPXt9LGU9W10sZj17fSxnPVtdLGg9W10saT0nPHNwYW4gY2xhc3M9ImZ3NTAwIj57MX0gPC9zcGFuPiB7Mn0nO3JldHVybiB4LnJvbGVzLmZvckVhY2goZnVuY3Rpb24oeCl7Y1t4XSYmKCQuZXh0ZW5kKGQsY1t4XS5hKSwkLmV4dGVuZChmLGNbeF0ubSkpfSksJC5leHRlbmQoZCxiLklzLmEpLCQuZXh0ZW5kKGYsYi5Jcy5tKSxlPU9iamVjdC5rZXlzKGQpLnNvcnQoKSxnPU9iamVjdC5rZXlzKGYpLnN1YnRyYWN0KGUpLnNvcnQoKSxlLmxlbmd0aCYmKGUubGVuZ3RoPjIwP2gucHVzaChpLmFzc2lnbigiQWRtaW4iLCJvZiAiK2UubGVuZ3RoKyIgREJzIikpOmgucHVzaChpLmFzc2lnbigiQWRtaW46IixlLm1hcCh4PT54LnRydW5jYXRlKDIwLCJtaWRkbGUiLCLigKYiKSkuam9pbigiLCAiKSkpKSxnLmxlbmd0aCYmKGcubGVuZ3RoPjIwP2gucHVzaChpLmFzc2lnbigiTWVtYmVyIiwib2YgIitnLmxlbmd0aCsiIERCcyIpKTpoLnB1c2goaS5hc3NpZ24oIk1lbWJlcjoiLGcubWFwKHg9PngudHJ1bmNhdGUoMjAsIm1pZGRsZSIsIuKApiIpKS5qb2luKCIsICIpKSkpLG51bGw9PWEmJmIubXkudHJpZ2dlcigiI3VhY2Nlc3MiLCJsYXlvdXQiKSxoLmpvaW4oIjxicj4iKX0sd2F0Y2g6IiN1cm9sZXMiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5yb2xlcy5sZW5ndGh9fX0sIiNidG4tc3RhcnQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztpZih4Ll9yZXYpe3ZhciBjPWN3LmxpYi5kcnkoT2JqZWN0LmNsb25lKHgsITApKTtjLnBhc3N3b3JkPyhkZWxldGUgYy5kZXJpdmVkX2tleSxkZWxldGUgYy5pdGVyYXRpb25zLGRlbGV0ZSBjLnBhc3N3b3JkX3NjaGVtZSk6ZGVsZXRlIGMucGFzc3dvcmQsYi5zYXZlVXNlcihjKS50aGVuKGZ1bmN0aW9uKCl7Yi5teS5jYW5jZWwoKX0pfWVsc2UgYi5zYXZlVXNlcigpLnRoZW4oZnVuY3Rpb24oKXtiLm15LmNhbmNlbCgpfSl9fSx3YXRjaDpbIiN1bmFtZSIsIiN1cm9sZXMiLCIjdXBhc3MiXSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMubXkudmFsaWQoKXx8IXgubmFtZXx8IXgucGFzc3dvcmQmJiF4Ll9yZXZ9fX0sIiNidG4tb3RoZXJkb2MiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiEheC5fcmV2fHwhIXgubmFtZXx8ISF4LnBhc3N3b3JkfHx4LnJvbGVzLmxlbmd0aD4wfX0sd2F0Y2g6WyIjdW5hbWUiLCIjdXBhc3MiLCIjdXJvbGVzIl19LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sZGllOmZ1bmN0aW9uKHgpe3RoaXMuU2VsMlNjcm9sbCh4LCExKSxbIiN1YWNjZXNzIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj14LmZpbmQoYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGIuZ2V0TmljZVNjcm9sbCYmYi5nZXROaWNlU2Nyb2xsKCkucmVtb3ZlKCl9KX0sUzI6ZnVuY3Rpb24oeCxhLGIpe3RoaXMuc2VsZWN0Mih0aGlzLm15LmZpbmQoeCkse3RhZ3M6YSxwbGFjZWhvbGRlcjp0aGlzLmxhbmdbYl0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTIsdG9rZW5TZXBhcmF0b3JzOlsiICIsIiwiXX0pfSxIVE1MOlsnPGRpdiBpZD0iY3RpdGxlIiBjbGFzcz0iZnMxMzAgbWIyIGxoMTYwIGJvbGRlciI+e1RYVF9USVRMRX08L2Rpdj4nLHtyb3c6IjEwMCUiLGxhYmVsOiI3NXB4Iixyb3dDc3M6Im15LXJvdyBwdDMgcGIzIixsYWJlbENzczoibXktbGFiZWwifSxbIntMQkxfTn0iLCJpbnAjdW5hbWUuZnMxMTAiLHtwbGM6IntQTENfTn0iLHNwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9LCJtc2ciXSxbIntMQkxfUH0iLCJpbnAjdXBhc3MuZnMxMTAiLHtwbGM6IntQTENfUH0iLHNwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9LCJtc2ciXSx7cm93Q3NzOiJteS1yb3cgcHQ3IHBiMyIsbGFiZWxDc3M6Im15LWxhYmVsIHZhdCBwdDYifSxbIntMQkxfUn0iLCJpbnAjdXJvbGVzLmZzMTA1IiwibXNnIl0sJzxkaXYgaWQ9InVhY2Nlc3MiIGNsYXNzPSJoaWRlIGVsbCB3MTAwcCBmczkwIGdyYXkgbGgxMzAgbXQ0IG1iLTQgcGw3NSI+PC9kaXY+JywnPGRpdiBjbGFzcz0ibXQxMiBwdDE1IGJ0ZCI+JywnPGJ1dHRvbiBpZD0iYnRuLXN0YXJ0IiBjbGFzcz0iZ3JlZW4gbXIyIj57QlROX1NBVkV9PC9idXR0b24+JywnPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCI+e0JUTl9DQU5DRUx9PC9idXR0b24+JywnPGRpdiBjbGFzcz0iZnIiPicsJzxhIGhyZWY9IiNfdXNlcnMvX25ldyIgaWQ9ImJ0bi1vdGhlcmRvYyIgY2xhc3M9ImJ1dHRvbiB0ZG4gZGliIHZhdCI+JywnPHNwYW4gY2xhc3M9IiI+e0JUTl9ET0N9PC9zcGFuPicsIjwvYT4iLCI8L2Rpdj4iLCI8L2Rpdj4iXSxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6MTYwcHg7IiwiICN1YWNjZXNzIjoibWF4LWhlaWdodDozMDBweDsifSxwYXJhbXM6e3N0cmljdDohMH19LExvZ2luOntpZDoiY3cuUGhvdG9uLkxvZ2luIixwYXJhbXM6e3Jlc3R5bGU6MzUwLHN0cmljdDohMH0sbGFuZzp7fSxkYXRhOntuYW1lOiIiLHBhc3N3b3JkOiIifSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC5maW5kKCIjdXB3ZCIpLm9uKCJrZXl1cC5teSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5rZXlDb2RlOzEzIT1iJiYxMCE9Ynx8eC5maW5kKCIjYnRuLXNlbmQiKS50cmlnZ2VyKCJjbGljayIpfSkseC5maW5kKCIjdW5hbWUiKS5vbigia2V5dXAubXkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEua2V5Q29kZTsxMyE9YiYmMTAhPWJ8fHguZmluZCgiI3Vwd2QiKS5mb2N1cygpfSl9LHVpOnsiI3Vsb2dvIjpmdW5jdGlvbigpe3JldHVybiB0aGlzLlBobygiQ2ZnIikuaWNvbnx8dGhpcy5QaG8oImZpbGVzIilbImZhdmljb24ucG5nIl0udXJsfSwiI3VuYW1lIjoibmFtZSIsIiN1cHdkIjoicGFzc3dvcmQiLCIjYnRuLXNlbmQiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLmRvTG9naW4oKS50aGVuKGZ1bmN0aW9uKCl7Yi5teS5jYW5jZWwoKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4Lm5hbWV8fCF4LnBhc3N3b3JkfX0sd2F0Y2g6WyIjdW5hbWUiLCIjdXB3ZCJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LEhUTUw6JzxkaXYgY2xhc3M9ImZzMTUwIGxoMTQwIGZ3NTAwIG1iOCI+PGltZyBzcmM9IiIgaWQ9InVsb2dvIiBjbGFzcz0idzIxIGRpYiBtYi0xIG1yMTAgY20tZW1vamkiPntUWFRfTE9HSU59PC9kaXY+PGlucHV0IGNsYXNzPSJ3MTAwcCBmczEyMCBtYjE1IiBpZD0idW5hbWUiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJ7UExDX1VOQU1FfSIgYXV0b2NvbXBsZXRlPSJvZmYiIGF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48aW5wdXQgY2xhc3M9IncxMDBwIGZzMTIwIG1iMTUiIGlkPSJ1cHdkIiB0eXBlPSJwYXNzd29yZCIgcGxhY2Vob2xkZXI9IntQTENfUFdEfSIgYXV0b2NvbXBsZXRlPSJjdXJyZW50LXBhc3N3b3JkIiBhdXRvY29ycmVjdD0ib2ZmIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+PGRpdiBjbGFzcz0icHQxNSBidGQiPjxidXR0b24gaWQ9ImJ0bi1zZW5kIiBjbGFzcz0ibWFya2ZvY3VzIGdyZWVuIG1yMiI+e0JUTl9MT0dJTn08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tY2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj48L2Rpdj4nLGRvTG9naW46ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5QaG8oIl9jb21waWxlZCIpLGI9JC5leHRlbmQoITAse30seC5kYXRhKSxjPXgubGFuZztyZXR1cm4geC5teS5yb290KCkucGFyZW50KCkuYWRkQ2xhc3MoIm1vZGFsLWJ1c3kiKSx4LlJlcSh7dXJsOlsiX3Nlc3Npb24iXSxtZXRob2Q6IlBPU1QiLGRhdGFUeXBlOiJqc29uIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShiKX0pLnRoZW4oZnVuY3Rpb24oZCl7dmFyIGU9e25hbWU6ZC5uYW1lfHxiLm5hbWUscm9sZXM6ZC5yb2xlc30sZj0kLkRlZmVycmVkKCk7cmV0dXJuIGEmJiQuZXh0ZW5kKCEwLHdpbmRvdy5ERE9DLl9tZSxlKSx4LlBobygiR2V0TGlzdCIpKCkuYWx3YXlzKGZ1bmN0aW9uKCl7JC5teS5yYWRpbygidXNlckN0eCIsZSksY3cubGliLm5vdGUoYy5NU0dfQVVUSF9PSy5hc3NpZ24oKGIubmFtZXx8IiIpLmVzY2FwZUhUTUwoKSksIm9rIiksZi5yZXNvbHZlKCl9KSxmLnByb21pc2UoKX0pLmZhaWwoZnVuY3Rpb24oZCxlKXthJiYkLmV4dGVuZCh3aW5kb3cuRERPQy5fbWUse25hbWU6IiIscm9sZXM6W119KSwkLm15LnJhZGlvKCJ1c2VyQ3R4Iix7bmFtZTpudWxsLHJvbGVzOltdfSkseC5QaG8oIm15IikuY2hlY2soIiNidG4tYXNpZGUtYXV0aCIpLGN3LmxpYi5ub3RlKGMuTVNHX0FVVEhfRkFJTC5hc3NpZ24oKGIubmFtZXx8IiIpLmVzY2FwZUhUTUwoKSxkLGUuZXNjYXBlSFRNTCgpKSwiZXJyb3IiKX0pLmFsd2F5cyhmdW5jdGlvbigpe3gubXkucm9vdCgpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJtb2RhbC1idXN5Iil9KX0sc3R5bGU6eyIiOiJmb250LXNpemU6MTdweDsgbGluZS1oZWlnaHQ6MS43ZW07In19LExvZ291dDp7aWQ6ImN3LlBob3Rvbi5Mb2dvdXQiLHBhcmFtczp7cmVzdHlsZTozNTAsc3RyaWN0OiEwfSxsYW5nOnt9LGRhdGE6e30saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3guaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLHgudGhlbihmdW5jdGlvbigpe3gudHJpZ2dlcigibGF5b3V0Lm15Iil9LmRlYm91bmNlKDEwMCkpfSxIVE1MOic8ZGl2IGlkPSJsdGl0bGUiIGNsYXNzPSJtYjYgbGgxNDAiPjwvZGl2PjxkaXYgY2xhc3M9ImdyYXkgcGwxIj48ZGl2PjxzcGFuIGNsYXNzPSJmaS1wb3dlciBmczkwIG1yMyI+PC9zcGFuPiA8c3BhbiBpZD0iYnRuLWxvZ291dCIgY2xhc3M9InBzZXVkb2xpbmsgdGRuIj57VFhUX0xPR09VVH08L3NwYW4+PC9kaXY+PGRpdiBpZD0ieHByb2ZpbGUiPjxzcGFuIGNsYXNzPSJmaS10b3JzbyBvOTAgbXIzIj48L3NwYW4+IDxhIGlkPSJidG4tcHJvZmlsZSIgaHJlZj0iIiBjbGFzcz0icHNldWRvbGluayB0ZG4iPntUWFRfUFJPRklMRX08L2E+PC9kaXY+PGRpdj48c3BhbiBjbGFzcz0iZmktZXllICBtcjMiPjwvc3Bhbj4gPHNwYW4gaWQ9ImJ0bi14dmlld3N0YXRlIiBjbGFzcz0icHNldWRvbGluayB0ZG4iPntUWFRfQ0xFQVJfVlNUQVRFfTwvc3Bhbj48L2Rpdj48L2Rpdj4nLHVpOnsiI2x0aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0nPGRpdiBjbGFzcz0iZnMxMzAgeGdyYXkgbGgxMjAgdzEwMHAgb2ggZWxsIj57MX08L2Rpdj4nLmFzc2lnbihjdy5tZSgpLmVzY2FwZUhUTUwoKSksYz1jdy5tZSgicm9sZXMiKXx8W107cmV0dXJuIGMubGVuZ3RoJiYoYis9JzxkaXYgaWQ9ImxteXJvbGVzIiBjbGFzcz0iZ3JheSBmczg1IGxoMTQwIG9oIj57MX08L2Rpdj4nLmFzc2lnbihjLm1hcChmdW5jdGlvbih4KXtyZXR1cm4iPG5vYnI+Iit4LmVzY2FwZUhUTUwoKSsiPC9ub2JyPiJ9KS5qb2luKCIsICIpKSksYn19LCIjYnRuLXByb2ZpbGUiOntkZWxheTozMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtiLmF0dHIoImhyZWYiLCIjX3VzZXJzL29yZy5jb3VjaGRiLnVzZXI6Iitjdy5tZSgpKSxudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sIiNidG4tbG9nb3V0Ijp7ZGVsYXk6MzAsYmluZDpmdW5jdGlvbih4LGEsYil7bnVsbCE9YSYmKHRoaXMuZG9Mb2dvdXQoKSx0aGlzLm15LmNhbmNlbCgpKX19LCIjYnRuLXh2aWV3c3RhdGUiOntkZWxheTozMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiYodGhpcy5kb0NsZWFuTFMoKSx0aGlzLm15LmNhbmNlbCgpKX19fSxkb0xvZ291dDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmxhbmcsYj1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfTtjdy5saWIubm90ZShhLk1TR19MT0dPVVRfU1RBUlQsIiIsMWUzKSx4LlJlcSh7dXJsOlsiX3Nlc3Npb24iXSxtZXRob2Q6IlBPU1QiLGRhdGFUeXBlOiJqc29uIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeSh7bmFtZToiMCIscGFzc3dvcmQ6IjAifSl9KS50aGVuKGZ1bmN0aW9uKHgpe2N3LmxpYi5ub3RlKGEuTVNHX0xPR09VVF9GQUlMLmFzc2lnbig5OTksIlNlcnZlciByZXR1cm5lZCBpbnZhbGlkIHJlc3BvbnNlIiksImVycm9yIil9KS5mYWlsKGZ1bmN0aW9uKGMsZCxlKXs0MDEhPWMmJjQwMyE9Yz8oY3cubGliLm5vdGUoYS5NU0dfTE9HT1VUX0ZBSUwuYXNzaWduKGMsYihkKSksImVycm9yIikseC5QaG8oIm15IikuY2hlY2soIiNidG4tYXNpZGUtYXV0aCIpKTooY3cubGliLm5vdGUoYS5NU0dfTE9HT1VUX09LLCJvayIpLHguUGhvKCJfY29tcGlsZWQiKSYmZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9LmRlbGF5KDUwMCkpfSl9LHN0eWxlOnsiICNsbXlyb2xlcyI6Im1heC1oZWlnaHQ6MTVlbTsgb3ZlcmZsb3cteTogYXV0byFpbXBvcnRhbnQ7In0sZG9DbGVhbkxTOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXgubGFuZzt4LmRhdGE7JC5teS5tb2RhbCh7bWFuaWZlc3Q6JC5leHRlbmQoITAse30seC5QaG8oIkNvbmZpcm0iKSx7dWk6eydpbnB1dFtuYW1lPSJvcHRzIl0nOiJvcHRzIn19KSx3aWR0aDozMDAsZGF0YTp7b3B0czphLk9QVF9DTEVBUl9ETEcuZmlsdGVyKHg9PiExIT09eFsyXSkubWFwKHg9PnhbMV0pLHRleHQ6JzxkaXYgY2xhc3M9ImZzMTMwIG9yYW5nZSBtYjUiPicrYS5IRFJfQ0xFQVJfRExHKyI8L2Rpdj4iK2EuVFhUX0NMRUFSX0RMRythLk9QVF9DTEVBUl9ETEcubWFwKGZ1bmN0aW9uKHgpe3JldHVybic8bGFiZWwgY2xhc3M9InhncmF5IGxoMTUwIj48aW5wdXQgbmFtZT0ib3B0cyIgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJtcjUgbWwxIiB2YWx1ZT0iezJ9Ij57MX08L2xhYmVsPicuYXNzaWduKHgpfSkuam9pbigiIikseWVzOmEuQlROX0NMRUFSX09LLHllc2Nzczoib3JhbmdlIixubzphLkJUTl9DTEVBUl9OTyxjYW5jZWw6IiIsdXNlQnV0dG9uczohMH0sY3NzOiJ4Z3JheSBsaDE3MCBwMjAgcGIyNSIsY2xvc2U6eC5QaG8oImxhbmciKS5CVE5fWERMRyxlc2M6ITAsZW50ZXI6ITAsZm9jdXM6IiNidG4teWVzIn0pLnRoZW4oZnVuY3Rpb24oYil7aWYoInllcyI9PWIuY21kKXt2YXIgYz13aW5kb3cubG9jYWxTdG9yYWdlLGQ9Yi5vcHRzO09iamVjdC5rZXlzKGMpLmZpbHRlcihmdW5jdGlvbih4KXtmb3IodmFyIGE9MCxiPSExO2E8ZC5sZW5ndGgmJiFiO2ErKyliPXguc3RhcnRzV2l0aChkW2FdKTtyZXR1cm4gYn0pLmZvckVhY2goeD0+Yy5yZW1vdmVJdGVtKHgpKSxjdy5saWIubm90ZShhLk1TR19WU1RBVEVfQ0xFQU5FRCwib2siKSx4LlBobygiX2NvbXBpbGVkIikmJmZ1bmN0aW9uKCl7ZC5maW5kKCJjdy5QaG90b24uVGFiQ2xvc2VIaXN0b3J5IikmJih4LlBobygiVGFicyIpLmxlbmd0aD0wKSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9LmRlbGF5KDUwMCl9fSl9fSxDb21wYWN0OntpZDoiY3cuUGhvdG9uLkNvbXBhY3QiLGxhbmc6e30sZGF0YTp7c2VsZWN0aW9uOltdLG9wczpbImRvY3MiXSxkZG9jczpbXSxkc2VsZWN0aW9uOltdfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7Yi5BbGw9YS5QaG8oIkFsbCIpLGIuYWxsPU9iamVjdC5rZXlzKGIuQWxsKS5zb3J0KCkseC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC50aGVuKGZ1bmN0aW9uKCl7YS5TZWwyU2Nyb2xsKHgsITApfS5kZWJvdW5jZSgxNSkpfSxDQjp7ZG9jczpmdW5jdGlvbigpe30sZGRvY3M6ZnVuY3Rpb24oKXt9LHZpZXdzOmZ1bmN0aW9uKCl7fX0sdWk6eyIjY3RpdGxlIjp7YmluZDpmdW5jdGlvbih4KXtyZXR1cm4gMT09eC5zZWxlY3Rpb24ubGVuZ3RoP3RoaXMubGFuZy5UWFRfVElUTEUxOnRoaXMubGFuZy5UWFRfVElUTEV9LHdhdGNoOlsiI2RicyJdfSwiI2RicyI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5zZWxlY3QyKHgse2RhdGE6dGhpcy5kYXRhLmFsbC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG11bHRpcGxlOiEwLHBsYWNlaG9sZGVyOnRoaXMubGFuZy5QTENfREJTLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSwhMCl9LGJpbmQ6InNlbGVjdGlvbiIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5sZW5ndGg/IiI6dGhpcy5sYW5nLkVSUl9EQlN9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZGRvY3MubGVuZ3RoPjB9fX0sIiNkYm9wcyI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHt0YWdzOnRoaXMubGFuZy5UQUdfT1AudG8odGhpcy5kYXRhLmRkb2NzLmxlbmd0aD8zOjIpfSl9LGJpbmQ6Im9wcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5sZW5ndGg/IiI6dGhpcy5sYW5nLkVSUl9PUH19LCIjZGRvY3MiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuc2VsZWN0Mih4LHtkYXRhOnRoaXMuZGF0YS5kZG9jcy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDoiX2Rlc2lnbi8iK3h9fSksbXVsdGlwbGU6ITAscGxhY2Vob2xkZXI6dGhpcy5sYW5nLlBMQ19ERE9DUyxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0pfSxiaW5kOiJkc2VsZWN0aW9uIixjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiFhLmxlbmd0aCYmeC5vcHMuaW5kZXhPZigiZGRvY3MiKT4tMT90aGlzLmxhbmcuRVJSX0RET0NTOiIifSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4tMT09eC5vcHMuaW5kZXhPZigiZGRvY3MiKXx8MSE9eC5zZWxlY3Rpb24ubGVuZ3RofX0sd2F0Y2g6WyIjZGJvcHMiLCIjZGJzIl19LCIjYnRuLXN0YXJ0Ijp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3RyeXt0aGlzLmRvQ29tcGFjdCgpfWNhdGNoKHgpe2NvbnNvbGUubG9nKHgpfXRoaXMubXkuY2FuY2VsKCl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguc2VsZWN0aW9uLmxlbmd0aHx8IXgub3BzLmxlbmd0aHx8IXRoaXMubXkudmFsaWQoKX19LHdhdGNoOlsiI2RicyIsIiNkYm9wcyIsIiNkZG9jcyJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LGRvQ29tcGFjdDpmdW5jdGlvbigpe3ZhciB4LGEsYj10aGlzLGM9JC5leHRlbmQoITAse30sYi5kYXRhKSxkPShiLlBobygiX2NvbXBpbGVkIiksYi5sYW5nKSxlPWMuc2VsZWN0aW9uLmxlbmd0aDtmdW5jdGlvbiBmKCl7KGUtPTEpPjB8fFs3MDAsMjUwMCw3NTAwLDE1ZTNdLmZvckVhY2goZnVuY3Rpb24oeCl7Zy5kZWJvdW5jZSh4KSgpfSl9ZnVuY3Rpb24gZygpeyQubXkucmFkaW8oImRibGlzdCIsYy5zZWxlY3Rpb24pfWMub3BzLmxlbmd0aCYmZSYmT2JqZWN0LmtleXMoYy5BbGwpLmludGVyc2VjdChjLnNlbGVjdGlvbikubGVuZ3RoJiZjLnNlbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPVtdO2Mub3BzLmZpbmQoImRvY3MiKSYmZy5wdXNoKGIuUmVxKHt1cmw6W2UsIl9jb21wYWN0Il0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiJ9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjb25zb2xlLmxvZygiRXJyb3Igc3RhcnRpbmcgZGF0YSBjb21wYWN0aW9uIG9mICIrZSx4LGEsYil9KSksYy5vcHMuZmluZCgidmlld3MiKSYmZy5wdXNoKGIuUmVxKHt1cmw6W2UsIl92aWV3X2NsZWFudXAiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe2NvbnNvbGUubG9nKCJFcnJvciBzdGFydGluZyBwdXJnaW5nIG9sZCB2aWV3cyBvZiAiK2UseCxhLGIpfSkpLGMub3BzLmZpbmQoImRkb2NzIikmJih4PWMuZHNlbGVjdGlvbi5jb21wYWN0KCEwKSxhPWZ1bmN0aW9uKCl7Yi5DQi5kZG9jcyh4KX0uZGVib3VuY2UoNSkuYWZ0ZXIoeC5sZW5ndGgpLHguZm9yRWFjaChmdW5jdGlvbih4KXtnLnB1c2goYi5SZXEoe3VybDpbZSwiX2NvbXBhY3QiLHhdLG1ldGhvZDoiUE9TVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSkuZmFpbChmdW5jdGlvbihhLGIsYyl7Y29uc29sZS5sb2coIkVycm9yIHN0YXJ0aW5nIHZpZXcgY29tcGFjdGlvbiBvZiAiK2UrIi9fZGVzaWduLyIreCxhLGIsYyl9KS5hbHdheXMoZnVuY3Rpb24oKXthKCl9KSl9KSksUS5hbGwoZykudGhlbihmdW5jdGlvbih4KXtjdy5saWIubm90ZShkLk1TR19DT01QQUNUX1NUQVJULmFzc2lnbihlKSksZigpfSkuZmFpbChmdW5jdGlvbih4LGEsYil7Y3cubGliLm5vdGUoZC5NU0dfQ09NUEFDVF9GQUlMX1NPTUUsImVycm9yIiksZigpfSl9LmxhenkoYi5QaG8oIkNmZyIpLmJhdGNoQ29tcGFjdERlbGF5KSl9LGRpZTpmdW5jdGlvbih4KXt0aGlzLlNlbDJTY3JvbGwoeCwhMSl9LEhUTUw6JzxkaXYgaWQ9ImN0aXRsZSIgY2xhc3M9ImZzMTMwIG1iMTAgYm9sZGVyIj57VFhUX1RJVExFfTwvZGl2PjxkaXYgY2xhc3M9Im1iMTAgZnMxMDUiPjxpbnB1dCBpZD0iZGJzIiBjbGFzcz0idzEwMHAiPjwvZGl2PjxkaXYgY2xhc3M9Im1iMTAiPjxzcGFuIGlkPSJkYm9wcyI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im1iMTAgZnMxMDUgaGlkZSI+PGlucHV0IGlkPSJkZG9jcyIgY2xhc3M9IncxMDBwIj48L2Rpdj48ZGl2IGNsYXNzPSJtdDEwIHB0MTAgYnRkIj48YnV0dG9uIGlkPSJidG4tc3RhcnQiIGNsYXNzPSJtYXJrZm9jdXMgZ3JlZW4gbXIyIj57QlROX1NUQVJUfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jYW5jZWwiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0FOQ0VMfTwvYnV0dG9uPjwvZGl2Picsc3R5bGU6eyIgaW5wdXQiOiJkaXNwbGF5OmlubGluZS1ibG9jazsiLCIgLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiOiJtYXgtaGVpZ2h0OjIxNHB4OyJ9LHBhcmFtczp7c3RyaWN0OiEwfX0sTmV3REI6e2lkOiJjdy5QaG90b24uTmV3REIiLGxhbmc6e30sZGF0YTp7ZGJzOltdLGFsbDpbXSxhbGxvOnt9LHVzZXJzOltdLHJvbGVzOltdLGFkbWluczp7bmFtZXM6W10scm9sZXM6W119LG1lbWJlcnM6e25hbWVzOltdLHJvbGVzOltdfSxxOjAsbjowLHBhcnRpdGlvbmVkOiExfSxVc2VyczpbXSxTMjpmdW5jdGlvbih4LGEsYil7dGhpcy5zZWxlY3QyKHRoaXMubXkuZmluZCh4KSx7dGFnczphLHBsYWNlaG9sZGVyOnRoaXMubGFuZ1tiXSx0b2tlblNlcGFyYXRvcnM6WyIgIiwiLCJdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPWEuUGhvKCJBbGwiKTtmdW5jdGlvbiBkKCl7eC5wYXJlbnQoKS5jc3MoImhlaWdodCIsImF1dG8iKX1iLmFsbD1PYmplY3Qua2V5cyhjKSxiLmFsbG89Y3cubGliLmEybyhiLmFsbCkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSxiLnJvbGVzPU9iamVjdC5rZXlzKE9iamVjdC5rZXlzKGMpLnJlZHVjZShmdW5jdGlvbih4LGEpe3ZhciBiPWNbYV0uc2VjdXJpdHk7cmV0dXJuW10uYWRkKGIuYWRtaW5zLnJvbGVzKS5hZGQoYi5tZW1iZXJzLnJvbGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3hbYV09ITB9KSx4fSx7fSkpLmFkZCgiX2FkbWluIikudW5pcXVlKCkuc29ydCgpLGIucT1hLlBobygiQ291Y2giKS5xLGIubj1hLlBobygiQ291Y2giKS5uLHgucGFyZW50KCkub24oImRyYWdzdG9wIixkKSx4LnRoZW4oZnVuY3Rpb24oKXtkKCl9KSxRLmFsbChbYS5QaG8oIkdldFVzZXJzIikoKS50aGVuKGZ1bmN0aW9uKHgpe2IudXNlcnM9eH0pLHhdKS50aGVuKGZ1bmN0aW9uKCl7YS5TMigiI3VhZG0iLGEuZGF0YS51c2VycywiUExDX1VBRE0iKSxhLlMyKCIjdW1lbSIsYS5kYXRhLnVzZXJzLCJQTENfVU1FTSIpLGEuU2VsMlNjcm9sbCh4LCEwKX0pfSx1aTp7IiNjdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiAxPT14LmRicy5sZW5ndGg/dGhpcy5sYW5nLlRYVF9USVRMRTE6dGhpcy5sYW5nLlRYVF9USVRMRX0sd2F0Y2g6WyIjZGJzIl19LCIjZGJzIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLnNlbGVjdDIoeCx7dGFnczpbXSxwbGFjZWhvbGRlcjp0aGlzLmxhbmcuUExDX0RCUyx0b2tlblNlcGFyYXRvcnM6WyIgIiwiLCJdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ImRicyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXt2YXIgYj1bXSxjPVtdLGQ9W107cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZT0vXl8oZ2xvYmFsX2NoYW5nZXN8dXNlcnN8cmVwbGljYXRvcikkLy50ZXN0KGEpO3guYWxsb1thXSYmYi5wdXNoKGEpLGV8fC9eW2EtejAtOV8kXChcKVwrXC1cL10rJC8udGVzdChhKXx8Yy5wdXNoKGEpLGV8fC9eW2Etel0vLnRlc3QoYSl8fGQucHVzaChhKX0pLGIubGVuZ3RoP3RoaXMubGFuZy5FUlJfREJfRVhJU1QuYXNzaWduKGIuam9pbigiLCAiKS5lc2NhcGVIVE1MKCkpOmMubGVuZ3RoP3RoaXMubGFuZy5FUlJfREJfTkFNRTpkLmxlbmd0aD90aGlzLmxhbmcuRVJSX0RCX1VORDp2b2lkIDB9fSwiI3VhZG0iOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuUzIoIiN1YWRtIix0aGlzLmRhdGEudXNlcnMsIlBMQ19VQURNIil9LGJpbmQ6ImFkbWlucy5uYW1lcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5pc1VuYW1lcyhhKX19LCIjZ2FkbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI2dhZG0iLHRoaXMuZGF0YS5yb2xlcywiUExDX0dBRE0iKX0sYmluZDoiYWRtaW5zLnJvbGVzIn0sIiN1bWVtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjdW1lbSIsdGhpcy5kYXRhLnVzZXJzLCJQTENfVU1FTSIpfSxiaW5kOiJtZW1iZXJzLm5hbWVzIixjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLmlzVW5hbWVzKGEpfX0sIiNnbWVtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjZ21lbSIsdGhpcy5kYXRhLnJvbGVzLCJQTENfR01FTSIpfSxiaW5kOiJtZW1iZXJzLnJvbGVzIn0sIiNxc2hhcmRzIjpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5xPWlzTmFOKCthKT8xOjB8KCthKS5jbGFtcCgxLDFlMykpLHgucX0sIiNxc2hhcmRzdHh0Ijp7YmluZDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sYW5nLlRYVF9TSEFSRFMoeC5xKX0sd2F0Y2g6WyIjcXNoYXJkcyJdfSwiI25jb3BpZXMiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4Lm49aXNOYU4oK2EpPzE6MHwoK2EpLmNsYW1wKDEsMWU0KSkseC5ufSwiI25jb3BpZXN0eHQiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxhbmcuVFhUX0NPUElFUyh4Lm4pfSx3YXRjaDpbIiNuY29waWVzIl19LCdpbnB1dFtuYW1lPSJwYXJ0aXRpb25lZCJdJzp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5wYXJ0aXRpb25lZD1hLmxlbmd0aD4wKSx4LnBhcnRpdGlvbmVkP1sicGFydGl0aW9uZWQiXTpbXX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlBobygiQ291Y2giKS52ZXI8IjAwMy4ifHx4LnE8Mn19LHdhdGNoOlsiI3FzaGFyZHMiXX0sIiNjbHVzdGVyaW5nIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGhvKCJDb3VjaCIpLnZlcjwiMDAyLiJ9fX0sIiNidG4tc3RhcnQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSlyZXR1cm4gdGhpcy5sYW5nWyJCVE5fU1RBUlQiKyh4Lm1lbWJlcnMubmFtZXMreC5tZW1iZXJzLnJvbGVzPyIiOiJfUFVCTElDIildO3RyeXt0aGlzLmRvQ3JlYXRlKCl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9dGhpcy5teS5jYW5jZWwoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LmRicy5sZW5ndGh8fCF0aGlzLm15LnZhbGlkKCl9LCJzZWxmOm9yYW5nZSI6ZnVuY3Rpb24oeCl7cmV0dXJuISh4Lm1lbWJlcnMubmFtZXMreC5tZW1iZXJzLnJvbGVzKX0sInNlbGY6Z3JlZW4iOmZ1bmN0aW9uKHgpe3JldHVybiEhKHgubWVtYmVycy5uYW1lcyt4Lm1lbWJlcnMucm9sZXMpfX0sd2F0Y2g6WyIjZGJzIiwiI3VtZW0iLCIjZ21lbSJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LGRvQ3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXguUGhvKCJDb3VjaCIpLGM9Yi52ZXIsZD17bmFtZToiIixzZWN1cml0eTpPYmplY3Quc2VsZWN0KGEsWyJhZG1pbnMiLCJtZW1iZXJzIl0pfTtjPiIwMDIuIiYmK2IucT4wJiYkLmV4dGVuZChkLHtxOithLnEsbjorYS5ufSksYz4iMDAzLiImJmEucGFydGl0aW9uZWQmJithLnE+MSYmKGQucGFydGl0aW9uZWQ9ITApO3ZhciBlPWEuZGJzLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gJC5leHRlbmQoITAse30sZCx7bmFtZTp4fSl9KTtyZXR1cm4geC5QaG8oIkNyZWF0ZURCcyIpKGUsITEpfSxpc1VuYW1lczpmdW5jdGlvbih4KXt2YXIgYT0iIixiPXRoaXM7cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbih4KXsiX2FkbWluIiE9eCYmKHguaGFzKCI6Iil8fC9eXy8udGVzdCh4KSkmJihhPWIubGFuZy5FUlJfVU5BTUUpfSksYX0sZGllOmZ1bmN0aW9uKHgpe3RoaXMuU2VsMlNjcm9sbCh4LCExKX0sSFRNTDpbJzxkaXYgY2xhc3M9ImZzMTMwIG1iMiBsaDE2MCBib2xkZXIgY20iPicsJzxzcGFuIGNsYXNzPSJmaS1saXN0IG80MCBmczg1IG1yMyI+PC9zcGFuPiAnLCc8c3BhbiBpZD0iY3RpdGxlIj57VFhUX1RJVExFfTwvc3Bhbj4nLCI8L2Rpdj4iLHtyb3c6IjEwMCUiLGxhYmVsOiI2MHB4Iixyb3dDc3M6Im15LXJvdyBwdDMgcGIzIixsYWJlbENzczoibXktbGFiZWwifSxbIntMQkxfREJTfSIsImlucCNkYnMuZnMxMDUubGgxNjAiLCJtc2ciXSwnPHNlY3Rpb24gaWQ9ImNsdXN0ZXJpbmciPicsWyJ7TEJMX0NMVVNURVJ9IiwnPHNwYW4gY2xhc3M9ImZzOTUiPicsIm51bSNxc2hhcmRzLnc1MC5tcjUiLHttaW46MSxtYXg6MzJ9LCJzcGFuI3FzaGFyZHN0eHQuZGliLnc3MCIsIm51bSNuY29waWVzLnc1MC5tcjUiLHttaW46MSxtYXg6MTZ9LCJzcGFuI25jb3BpZXN0eHQuZGliLnc5MCIsJzxzcGFuIGNsYXNzPSJoaWRlIj48bGFiZWwgY2xhc3M9ImRpYiB4Z3JheSBjcCI+JywnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJwYXJ0aXRpb25lZCIgY2xhc3M9ImZzMTEwIHZhbSBtcjMgY3AiIHZhbHVlPSJwYXJ0aXRpb25lZCI+IHtUWFRfUEFSVElUSU9OU30nLCI8L2xhYmVsPjwvc3Bhbj4iLCI8L3NwYW4+Il0sIjwvc2VjdGlvbj4iLCc8ZGl2IGNsYXNzPSJmczEyMCBtdDEwIG1iMiI+e1RYVF9BRE19PC9kaXY+JyxbIntMQkxfVUFETX0iLCJpbnAjdWFkbS5mczEwNS5saDE2MCIsIm1zZyJdLFsie0xCTF9HQURNfSIsImlucCNnYWRtLmZzMTA1LmxoMTYwIiwibXNnIl0sJzxkaXYgY2xhc3M9ImZzMTIwIG10MTAgbWIyIj57VFhUX01FTX08L2Rpdj4nLFsie0xCTF9VQURNfSIsImlucCN1bWVtLmZzMTA1LmxoMTYwIiwibXNnIl0sWyJ7TEJMX0dBRE19IiwiaW5wI2dtZW0uZnMxMDUubGgxNjAiLCJtc2ciXSwnPGRpdiBjbGFzcz0ibXQxMiBwdDE1IGJ0ZCI+JywnPGJ1dHRvbiBpZD0iYnRuLXN0YXJ0IiBjbGFzcz0ibWFya2ZvY3VzIGdyZWVuIG1yMiI+e0JUTl9TVEFSVH08L2J1dHRvbj4nLCc8YnV0dG9uIGlkPSJidG4tY2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj4nLCI8L2Rpdj4iXSxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6NTZweDsifSxwYXJhbXM6e3N0cmljdDohMH19LERlbERCOntpZDoiY3cuUGhvdG9uLkRlbERCIixsYW5nOnt9LGRhdGE6e2RiczpbXSxhbGw6W10sYWxsbzp7fSxyZW5ldzohMSxyZW5ld2FjbDohMCxyZW5ld3FucDohMCxoYXNhY2w6ITAsaGFzcW5wOiEwLHJlc29yZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9YS5QaG8oIkFsbCIpO2IuZGJzLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9Y1t4XTthLmNsdXN0ZXImJmEuY2x1c3Rlci5xfHwoYi5oYXNxbnA9ITEpLGEuc2VjdXJpdHkmJmEuc2VjdXJpdHkuc3RhbXB8fChiLmhhc2FjbD0hMSl9KSxiLmFsbD1iLmRicy5zbGljZSgwKSxiLmFsbG89Y3cubGliLmEybyhiLmFsbCkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSx4LnRoZW4oZnVuY3Rpb24oKXthLlNlbDJTY3JvbGwoeCwhMCl9LmRlYm91bmNlKDE1KSl9LHVpOnsiI2N0aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXguZGJzLmxlbmd0aD90aGlzLmxhbmcuVFhUX1RJVExFMTp0aGlzLmxhbmcuVFhUX1RJVExFfSx3YXRjaDpbIiNkYnMiXX0sIiNkYnMiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuZGF0YS5hbGw7dGhpcy5zZWxlY3QyKHgse2RhdGE6YS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG11bHRpcGxlOiEwLHBsYWNlaG9sZGVyOnRoaXMubGFuZy5QTENfREJTLHJlYWRPbmx5OjE9PWEubGVuZ3RoLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ImRicyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5sZW5ndGg/IiI6dGhpcy5sYW5nLkVSUl9EQlN9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXguYWxsLmxlbmd0aH19fSwiI2RlbHdhcm4iOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPXtzaXplOjAsY291bnQ6MCxkaXNrOjAsYmFzZToobmV3IFVSTChiLlBobygiQmFzZSIpKS5ob3N0bmFtZSsiIikudHJ1bmNhdGUoNDUsIm1pZGRsZSIpLmVzY2FwZUhUTUwoKX0sZD1iLlBobygiQWxsIik7cmV0dXJuIHguZGJzLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9ZFt4XTthJiYoYy5zaXplKz0rYS5kYXRhX3NpemV8fDAsYy5kaXNrKz0rYS5kaXNrX3NpemV8fDApfSksYy5jb3VudD14LmRicy5sZW5ndGgseC5kYnMubGVuZ3RoP2IubGFuZy5UWFRfV0FSTihjKToiIn0sd2F0Y2g6IiNkYnMifSwiI2RlbG5ldyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgucmVuZXc9ISFhLmxlbmd0aCkseC5yZW5ldz9bIm9rIl06W119fSwiI2RlbG5ldzEiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnJlbmV3YWNsPSEhYS5sZW5ndGgpLHgucmVuZXdhY2w/WyJvayJdOltdfSx3YXRjaDpbIiNkZWxuZXciXSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXguaGFzYWNsfSwiOmRpc2FibGVkIG84MCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgucmVuZXd9fX0sIiNkZWxuZXcyIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5yZW5ld3FucD0hIWEubGVuZ3RoKSx4LnJlbmV3cW5wP1sib2siXTpbXX0sd2F0Y2g6WyIjZGVsbmV3Il0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4Lmhhc3FucHx8dGhpcy5QaG8oIkNvdWNoIikudmVyPCIwMDIuIn0sIjpkaXNhYmxlZCBvODAiOmZ1bmN0aW9uKHgpe3JldHVybiF4LnJlbmV3fX19LCIjYnRuLXN0YXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHRoaXMubGFuZy5CVE5fU1RBUlQoeC5kYnMubGVuZ3RoKTt0cnl7dGhpcy5kb0RlbGV0ZVooKX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KX10aGlzLm15LmNvbW1pdCgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZGJzLmxlbmd0aHx8IXRoaXMubXkudmFsaWQoKX19LHdhdGNoOlsiI2RicyJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LGRvRGVsZXRlWjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0kLmV4dGVuZCghMCx7fSx4LmRhdGEpLGI9KHguUGhvKCJfY29tcGlsZWQiKSx4LlBobygiQ2ZnIikuYmF0Y2hDcmVhdGVEZWxheSksYz1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfSxkPXgubGFuZyxlPWEuZGJzLGY9ZS5sZW5ndGgsZz1bXSxoPVtdO2lmKGYpe3ZhciBpPXguUGhvKCJBbGwiKTthLnJlbmV3JiZlLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9aVt4XTtpZihiKXt2YXIgYz17Y3JlYXRlOiEwLG5hbWU6eCxzZWN1cml0eTpudWxsfTtiLnNlY3VyaXR5JiZiLnNlY3VyaXR5LnN0YW1wJiZhLnJlbmV3YWNsJiYoYy5zZWN1cml0eT0kLmV4dGVuZCghMCx7fSxPYmplY3Quc2VsZWN0KGIuc2VjdXJpdHksWyJhZG1pbnMiLCJtZW1iZXJzIl0pKSksYi5jbHVzdGVyJiZiLmNsdXN0ZXIucSYmYS5yZW5ld3FucCYmKGMucT1iLmNsdXN0ZXIucSxjLm49Yi5jbHVzdGVyLm4sYy5wYXJ0aXRpb25lZD0hIWIucHJvcHMmJiEhYi5wcm9wcy5wYXJ0aXRpb25lZCksZy5wdXNoKGMpfX0pLFEuYWxsU2V0dGxlZChlLm1hcChmdW5jdGlvbihlLGYpe3ZhciBnPSQuRGVmZXJyZWQoKTtyZXR1cm4gZnVuY3Rpb24oKXt4LlJlcSh7dXJsOltlXSxtZXRob2Q6IkRFTEVURSJ9KS50aGVuKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZC5NU0dfT0suYXNzaWduKGUpLCJvayIpLGEucmVuZXd8fCQubXkucmFkaW8oImRiZGVsZXRlZCIsZSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtoLnB1c2goZSksY3cubGliLm5vdGUoZC5NU0dfRkFJTC5hc3NpZ24oZSx4LGMoYSkpLCJlcnJvciIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Zy5yZXNvbHZlKCl9KX0uZGVsYXkoZipiKSxnLnByb21pc2UoKX0pKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuICQubXkucmFkaW8oImRibGlzdCIsW10pLGEucmVuZXc/eC5QaG8oIkNyZWF0ZURCcyIpKGcuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiFoLmZpbmQoeC5uYW1lKX0pLCExKS50aGVuKGZ1bmN0aW9uKCl7JC5teS5yYWRpbygiZGJsaXN0IixnLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lfSkuc3VidHJhY3QoaCkpfSk6YS5kYnN9KX19LGRpZTpmdW5jdGlvbih4KXt0aGlzLlNlbDJTY3JvbGwoeCwhMSl9LEhUTUw6Wyc8ZGl2IGlkPSJjdGl0bGUiIGNsYXNzPSJmczEzMCBtYjUgbGgxNjAgcmVkIj57VFhUX1RJVExFfTwvZGl2PicsJzxkaXYgY2xhc3M9Im1iMTAgZnMxMDUiPjxpbnB1dCBpZD0iZGJzIiBjbGFzcz0idzEwMHAiPjwvZGl2PicsJzxkaXYgY2xhc3M9Im1iMTAiPjxzcGFuIGlkPSJkZWx3YXJuIj48L3NwYW4+PC9kaXY+JywnPGRpdiBjbGFzcz0ibWI4Ij4nLCc8bGFiZWwgY2xhc3M9InhncmF5IGxoMTMwIj4nLCc8c3BhbiBjbGFzcz0idzIwIGRpYiI+PGlucHV0IGlkPSJkZWxuZXciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0ib2siPiA8L3NwYW4+e0xCTF9ORVd9JywiPC9sYWJlbD4iLCc8ZGl2PjxsYWJlbCBjbGFzcz0ieGdyYXkgbGgxMzAgcGwyMCI+PGlucHV0IGlkPSJkZWxuZXcxIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9Im9rIj4mbmJzcDsge0xCTF9ORVdfQUNMfTwvbGFiZWw+PC9kaXY+JywnPGRpdj48bGFiZWwgY2xhc3M9InhncmF5IGxoMTMwIHBsMjAiPjxpbnB1dCBpZD0iZGVsbmV3MiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJvayI+Jm5ic3A7IHtMQkxfTkVXX1FOUH08L2xhYmVsPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9Im10MTIgcHQxNSBidGQiPicsJzxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9InJlZCBtYXJrZm9jdXMgbXIyIj57QlROX1NUQVJUfTwvYnV0dG9uPicsJzxidXR0b24gaWQ9ImJ0bi1jYW5jZWwiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0FOQ0VMfTwvYnV0dG9uPicsIjwvZGl2PiJdLHN0eWxlOnsiIjoiZm9udC1zaXplOjE2cHgiLCIgLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiOiJtYXgtaGVpZ2h0OjIxNHB4OyJ9LHBhcmFtczp7c3RyaWN0OiEwfX0sU2VjT2JqOntpZDoiY3cuUGhvdG9uLlNlY09iaiIsbGFuZzp7fSxkYXRhOntkYnM6W10sYWxsOltdLGFsbG86e30sdXNlcnM6W10scm9sZXM6W10sYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxVc2VyczpbXSxTMjpmdW5jdGlvbih4LGEsYixjKXt0aGlzLnNlbGVjdDIodGhpcy5teS5maW5kKHgpLHt0YWdzOmEscGxhY2Vob2xkZXI6dGhpcy5sYW5nW2JdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSwhIWMpfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1hLlBobygiQWxsIik7Yi5hbGw9T2JqZWN0LmtleXMoYykuc29ydCgpLGIuYWxsbz1jdy5saWIuYTJvKGIuYWxsKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkuYXNzaWduKGEubGFuZykpLGIucm9sZXM9T2JqZWN0LmtleXMoT2JqZWN0LmtleXMoYykucmVkdWNlKGZ1bmN0aW9uKHgsYSl7dmFyIGI9Y1thXS5zZWN1cml0eTtyZXR1cm5bXS5hZGQoYi5hZG1pbnMucm9sZXMpLmFkZChiLm1lbWJlcnMucm9sZXMpLmZvckVhY2goZnVuY3Rpb24oYSl7eFthXT0hMH0pLHh9LHt9KSkuYWRkKCJfYWRtaW4iKS51bmlxdWUoKS5zb3J0KCksUS5hbGwoW2EuUGhvKCJHZXRVc2VycyIpKCkudGhlbihmdW5jdGlvbih4KXtiLnVzZXJzPXh9KSx4XSkudGhlbihmdW5jdGlvbigpe2EuUzIoIiN1YWRtIixhLmRhdGEudXNlcnMsIlBMQ19VQURNIiksYS5TMigiI3VtZW0iLGEuZGF0YS51c2VycywiUExDX1VNRU0iKSx4LnRyaWdnZXIoImxheW91dCIpLGEuU2VsMlNjcm9sbCh4LCEwKX0pfSx1aTp7IiNkYnMiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuc2VsZWN0Mih4LHt0YWdzOnRoaXMuZGF0YS5hbGwubWFwKGZ1bmN0aW9uKHgpe3JldHVybntpZDp4LHRleHQ6eH19KSxtdWx0aXBsZTohMCxwbGFjZWhvbGRlcjp0aGlzLmxhbmcuUExDX0RCUyxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0sITApfSxiaW5kOiJkYnMiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEubGVuZ3RoPyIiOnRoaXMubGFuZy5FUlJfREJTfX0sIiN1YWRtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjdWFkbSIsdGhpcy5kYXRhLnVzZXJzLCJQTENfVUFETSIsITApfSxiaW5kOiJhZG1pbnMubmFtZXMiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuaXNVbmFtZXMoYSl9fSwiI2dhZG0iOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuUzIoIiNnYWRtIix0aGlzLmRhdGEucm9sZXMsIlBMQ19HQURNIil9LGJpbmQ6ImFkbWlucy5yb2xlcyJ9LCIjdW1lbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI3VtZW0iLHRoaXMuZGF0YS51c2VycywiUExDX1VNRU0iLCEwKX0sYmluZDoibWVtYmVycy5uYW1lcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5pc1VuYW1lcyhhKX19LCIjZ21lbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI2dtZW0iLHRoaXMuZGF0YS5yb2xlcywiUExDX0dNRU0iKX0sYmluZDoibWVtYmVycy5yb2xlcyJ9LCIjYnRuLXN0YXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHRoaXMubGFuZy5CVE5fU1RBUlQ7dHJ5e3RoaXMuZG9TZWNVcGRhdGUoKX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KX10aGlzLm15LmNhbmNlbCgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZGJzLmxlbmd0aHx8IXRoaXMubXkudmFsaWQoKX19LHdhdGNoOlsiI2RicyIsIiN1bWVtIiwiI2dtZW0iXX0sIiNidG4tY2FuY2VsIjpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY2FuY2VsKCl9LCIjbGF5cHJveHkiOntkZWxheToxNTAsd2F0Y2g6WyIjZGJzIiwiI3VhZG0iLCIjZ2FkbSIsIiN1bWVtIiwiI2dtZW0iXSxiaW5kOmZ1bmN0aW9uKCl7dGhpcy5teS50cmlnZ2VyKCIjbGF5cHJveHkiLCJsYXlvdXQiKX19fSxpc1VuYW1lczpmdW5jdGlvbih4KXt2YXIgYT0iIixiPXRoaXM7cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbih4KXsiX2FkbWluIiE9eCYmKHguaGFzKCI6Iil8fC9eXy8udGVzdCh4KSkmJihhPWIubGFuZy5FUlJfVU5BTUUpfSksYX0sZG9TZWNVcGRhdGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9JC5leHRlbmQoITAse30seC5kYXRhKSxiPSh4LlBobygiX2NvbXBpbGVkIiksZnVuY3Rpb24oeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX0pLGM9eC5sYW5nLGQ9YS5kYnMubGVuZ3RoLGU9T2JqZWN0LnNlbGVjdChhLFsiYWRtaW5zIiwibWVtYmVycyJdKSxmPShlLm1lbWJlcnMubmFtZXMsZS5tZW1iZXJzLnJvbGVzLGUuYWRtaW5zLm5hbWVzLGUuYWRtaW5zLnJvbGVzLGUubWVtYmVycy5uYW1lcyxlLm1lbWJlcnMucm9sZXMsYS5kYnMpO2QmJmYuZm9yRWFjaChmdW5jdGlvbihhLGcpe3guUmVxKHt1cmw6W2EsIl9zZWN1cml0eSJdLG1ldGhvZDoiUFVUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShlKX0pLnRoZW4oZnVuY3Rpb24oKXtjdy5saWIubm90ZShjLk1TR19PSy5hc3NpZ24oYSksIm9rIil9KS5mYWlsKGZ1bmN0aW9uKHgsZCxlKXtjdy5saWIubm90ZShjLk1TR19GQUlMLmFzc2lnbihhLHgsYihkKSksImVycm9yIil9KS5hbHdheXMoZnVuY3Rpb24oKXtnPT1kLTEmJiQubXkucmFkaW8oImRibGlzdCIsZil9KX0ubGF6eSh4LlBobygiQ2ZnIikuYmF0Y2hDcmVhdGVEZWxheSkpfSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5TZWwyU2Nyb2xsKHgsITEpfSxIVE1MOlsnPGRpdiBjbGFzcz0iZnMxMzAgbWIyIGxoMTYwIGJvbGRlciI+e1RYVF9USVRMRX08L2Rpdj4nLHtyb3c6IjEwMCUiLGxhYmVsOiI2MHB4Iixyb3dDc3M6Im15LXJvdyBwdDMgcGIzIixsYWJlbENzczoibXktbGFiZWwifSxbIntMQkxfREJTfSIsImlucCNkYnMuZnMxMDUiLCJtc2ciXSwnPGRpdiBjbGFzcz0iZnMxMjAgbXQxMCBtYjIiPntUWFRfQURNfTwvZGl2PicsWyJ7TEJMX1VBRE19IiwiaW5wI3VhZG0uZnMxMDUiLCJtc2ciXSxbIntMQkxfR0FETX0iLCJpbnAjZ2FkbS5mczEwNSIsIm1zZyJdLCc8ZGl2IGNsYXNzPSJmczEyMCBtdDEwIG1iMiI+e1RYVF9NRU19PC9kaXY+JyxbIntMQkxfVUFETX0iLCJpbnAjdW1lbS5mczEwNSIsIm1zZyJdLFsie0xCTF9HQURNfSIsImlucCNnbWVtLmZzMTA1IiwibXNnIl0sJzxkaXYgY2xhc3M9Im10MTIgcHQxNSBidGQiPicsJzxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9Im1hcmtmb2N1cyBncmVlbiBtcjIiPntCVE5fU1RBUlR9PC9idXR0b24+JywnPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCIgY2xhc3M9Im1hcmtmb2N1cyI+e0JUTl9DQU5DRUx9PC9idXR0b24+JywiPC9kaXY+IiwnPGRpdiBpZD0ibGF5cHJveHkiIGNsYXNzPSJoaWRlIj48L2Rpdj4nXSxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6NTZweDsifSxwYXJhbXM6e3N0cmljdDohMH19LFJlcUpTT046e2lkOiJjdy5QaG90b24uUmVxSlNPTiIscGFyYW1zOntyZXN0eWxlOjEwMCxzdHJpY3Q6ITB9LGRhdGE6e3RleHQ6IkxvYWRpbmcuLi4iLGRyYWc6ITEsaGVpZ2h0OiJub25lIixyZXE6e3VybDpbXSxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LG1ldGhvZDoiZ2V0In0sY206e21vZGU6ImphdmFzY3JpcHQiLGxpbmVOdW1iZXJzOiExLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6ITB9fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7ZnVuY3Rpb24gYyhjKXtiLnRleHQ9IigiK2N3LmxpYi5qc29uKGMsIiAgIix4LndpZHRoKCkvOC4yfDApKyIpIixhLm15LnJlY2FsYygiI3RyZXN1bHQiKX14Lmh0bWwoW2IuZHJhZz8nPGRpdiBpZD0iZHJhZ2dlciI+PC9kaXY+JzoiIiwnPHRleHRhcmVhIGlkPSJ0cmVzdWx0IiBjbGFzcz0idzEwMHAiPjwvdGV4dGFyZWE+J10uam9pbigiIikpLHgudGhlbihmdW5jdGlvbigpe2EuUmVxKGIucmVxKS50aGVuKGZ1bmN0aW9uKHgpe2MoeCl9LmRlYm91bmNlKDUwKSkuZmFpbChmdW5jdGlvbih4LGEsYil7YyhhKX0pLmFsd2F5cyhmdW5jdGlvbigpe3gudHJpZ2dlcigibGF5b3V0Iil9LmRlYm91bmNlKDUwKSl9KX0sdWk6eyIjdHJlc3VsdCI6e2JpbmQ6InRleHQiLGluaXQ6ZnVuY3Rpb24oeCl7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx0aGlzLmRhdGEuY20pfX19LHN0eWxlOnsiICNkcmFnZ2VyIjoid2lkdGg6MTAwJTtoZWlnaHQ6MTVweDtjdXJzb3I6bW92ZTsiLCIgLkNvZGVNaXJyb3IiOmZ1bmN0aW9uKCl7cmV0dXJuInBhZGRpbmc6MHB4OyBoZWlnaHQ6Iit0aGlzLmRhdGEuaGVpZ2h0KyIhaW1wb3J0YW50OyJ9LCIgLkNvZGVNaXJyb3ItbGluZSI6ImZvbnQtc2l6ZToxM3B4OyAiLCIgLkNvZGVNaXJyb3Itc2Nyb2xsIjoibWF4LWhlaWdodDpub25lIWltcG9ydGFudDsifX0sZmlsZXM6eyJmYXZpY29uLnBuZyI6e2RpZ2VzdDoibWQ1LW9DM3FJSTBZS2ZYTDBnWlFsN1NtL2c9PSIsY29udGVudF90eXBlOiJpbWFnZS9wbmciLGRhdGE6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEOEFBQUJBQ0FZQUFBQ3RLNi9MQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUQ1cEpSRUZVZU5yY1d3MTRWRlY2L3M2OWR5WXprOHhNUW42QWhFQVNDRCtXQnl4ZFZza3VLaUtpZG9rc3JWYTJXQzF0bi9xRHN1dUR1MHRiYmYzWjdkYjFXVnQzVVhaclFaRHFzMXBSMGE0cmlxS3VLTHBhUUFSYWtCOURRZ2lFWkNiSi9ONTdUci8zM3R3d2lVbElNTUhFNytGd1p5YjNudk8rNTN6bis3djNpaFUvdklkNkZDRklUNlhJTkRUU1RJMEkvendhUlZvdHFqdWc2SStxQkxVMEVlbTZvQlFwOHZBSmJhazA1ZmgxSWtuVTBpWW9KMGVSdExnckE3OUovbG1ScnBSUFNpMmJLTzBuOHNRMVRiWlpRaVEwRWp5QVJzcTBTT1BUVzFzRkJiTWx3ekFvSHBlVWxjVlg4UFZlUHMreUZBWHppRDdjcHFoNGdxQndqazR5TGUxeHBTSEpNQ1ZaWGkrUlVqM1NNMmdRaFhrd1FicUJzVjdGdEM3Z1k0RmdMQmFhTk52UE1ra1hHdWJaYml3bmxhRHRmUHdOWDcrT2oyMkRoVy9BeVd0Q0ZQSGhKN3hBTjNxOWxtaHRUVkFpZ1piaXlSRHAzTnhRVTA1MmRpSVVDcExYbDBXcFJKTGlzUmkxdHJYNW1wdWplVktxQXAvUCs4Yytudzl0RlNsTjhhU3Q1WWxaeWYwMkRFbnl2R2dMK2JEQm80dnNVNmVpdkRWYTFLaWlvdHFMTHFvS3pQakQ2WGxsNDBySjR6RThmRTVSYi8yazB5WWRQbEpESC8zUHpxWnQ3MzRRTzNyc1dIRTRHRndhekFrdTVRM0dHMGt0NGRPZUh4TGtlVVVXODM5cnJWUTZxNmJ1QkkwcXptKzQ5ayt1RHMyWjh3MmZiaGdsL2UyUEo0Z3FKNVNqNWYzWk5RdnpMTk9rTjk1NEo3SHA1VmVpTlRYMVJjWEZoYzk1dk42a0VPb3YrZlNuempsNTJCQmV3eklseGRzcEt6WG15T0hqTkdQNnBPWWZyTGd0WjNUeHlLS0JWRTJlUUxwczNzVSt0R04xeDgzSDFxeHYvV2puLythT0t4MzVwSkxlQnd5UG1zMTREcDg3OHBMK3RmSThjZnVlUGJWaTdOZ3hrVlVQLzhoZlBIcGtMZzJ5OE1RYWQvM0RuYmwxeDQ2bkh2cjVMK043OWg0ZFUzbGV5Y0dtcUhxWS8vemRmbXR0UDEyZExneHRSeUlSbjhxcjBMcnM5ci9KbmozckFpSGF6ZlM1Rk1VcjhQYnZ0cXRmclBwVmZIVHg2SURQNTkrdFRIayt1enFycjY1TzY0ZEZ5ek04V21OZGJkMVVuNUVWZVdUVmcxa1hWVjM0cFJCMzFrV2ppMmJQRW8rcytwa0hlSUFMK0lDeno1NnBUd01wbXFaN3RLUDdEaHdLejUxN1NlcSsrLzh1cHlBL3owTkRRSUFEZUlBTCtJQVRlQWVFdkJKaW5LRWI3MzJ5Ny84Q2YvR2RhODNyLy93YXcrdjE2RFNFQkhpQUMvaUFFM2lCKzh3R3J5ZXRWZmJHQ21oWjN0MTc5KzczMy9LM1M4MzVsMS9DTVl6UWFBaUtybXZhMWRYenllZkxNbGYvNm5IL2xDbVZ1NlVsUi9LZllqMXhORlJLOXRDWlRrS1hCdy9zUDV6em5jV0xVdk12djlqN1plM3Z2dHNCb1RGT0xkb1NUVDN6eklzNTQ4ZVhIbFNXTnNxeXJCN1VYampoV1RmdE40Mm5ta2ZPdW5CR2JOSENiM21HNklKM2F3aUJ0MnJXakRiZ0I0K2VPR3JDVGlveW1xTWpTMHd6ZmFVcHJjak5OeS8xR29ZdWFCZ0o4TjU4MDFKdm12R0RCL2lBVjFldVdxVGxPTG10T1ZwUHlyRDN6NXFEaDQ2b2YxeTVJc2Z2OHhrMERJV1RJczgvTVg3d0FCL0ZKanJTMGtEUjFoTWRyY3ZLQ3hpNmpVM05VYytDNnNzVFplVmpkUnJHQXZ6Z0FUNU1iQ1A0ZFZwNUdEWTBUYk4vQ0hIYStlMVlXeXl5WlBHMVB2b0tDSGlBanlhMGJ6djhOSEk1NjNralJ0T3BVeEZxT05GSWxSV1QvN3V4c2JGaThYVUxhZEtrQ1lNWHhMZ2hwNjFwR1o4SHhRVnlqcDN0b3c4Ly9OaklIMUgwOVIyN2RxMXZibzR5NTJZeVhEZmd5OHJ5S3lIbnh1S3B5THg1bDRiUGVyVFdWcUthR3FMang0a2FHb2hIY1g1TEpPd3lsdDFxYTRtcXE0a1dMQ0I2NlNXaVRadUlTa3JzMG8vZGZLeDBPVGxFSTBadzlzOUo0a2gyMTZXbHptOW5JY3pIdDM3RHN4RkYxbHp3VEtWU2Nkc3dYbmI1bFhaRVk1cm12ZlZIYTloTlhPVmgxZTk3ejU5K1NyUnZuM01FMGJZMklrNkdLSms4M1Rnbjc2aFRjWXBLUjQ0UXpaN3RYTi9VNUZ3Zmp6dm5RUlBzbkpuUFE5SE9iVWhTc3JPZENSay9ubWp5Wk9mWXAzS2FvSVZYWCtIWnV2VjNWUFhOaSs0MURPTk8rRHFqdnJhbVBVVE0rdDdKRTAxVXZXQitnSG92dFJEdDJrWDArOThUSFR2R0pqUkNGSTBTdGJRNDVEd2VCemhXRUo4QlhOTTZGZmJzODBIR0daZ29qM09SM0Z4SEsxeHh0UVFUQ2EzQnhHQnNUTXpPblVTaEVGR1lGWFQwYUtLdmZZMW8yalJudkI2a3V2ckt3SDg5czRrQzJkbmZTNldTZDlvcjcxaEFNWmxYWGg4L1lleEpqcE1MdWw1bzdkaEJXbUVoQ2FqbWd3OFNIVGpnckRBRTVEQm9RVUhuL1p6NVdYYUpJcnY3N3JZdUZWQzcvNHdVMnhaTUNMUU1rdyt0ZWY5OW9na1RpRmF1Sk1WYlNwNDRRZnI1NTNmcUtzdnJJZkNMSjlJRmJQUW1LNlgyYVo0c0R4bGU0Nlk0cTkxbGw4M0p6Z3p0NVR2dlVQcWVlMGd0VzBacTJ6Ym5EL3YzTzZzTTlVTUxCQnp5TG5oWGJYdkpvL3R0SE4zbWpvSHhNSzZMQVhpQUM2Y3pUdUFGYnVEUFJBRis0QW0rNEEzRFQ0Ym11U0VhYmFGdnpQcTZ2Mk9TV2MzTUgvK1k2TmxuN2RtMEd0b0xweE1uT25zUGhqS1Q3TG10Wkp5ZURPQUFIdUNDbGpKTzRBVnU0QWNQVjhBUFBNRVh2TFdjWUQ2cUlybCt2eithNWN0UU1WekU2bVB2S1c2Q2paUk5jZWJNN2xYM3l4SVhCK01DUHVCME1kdjRNOGlESDNpQ0wzaHIvS0Vrellha3ZLejAxT2YyRzFRTG5mUE15amZmSklIUGMrY1M5K0M0TDllQzk2WDFzeVRjNXdZY3dNTzRnQTg0YlUwQVZ1RFhPaWRrNEFtKzRLMUZJaWVtSnhKSnFxd2NIK3lsV2tEaTVFbXl0bTkzdm4vLyswN0hVQzlZYmxqaE16VjNtd2p4T1VEMmQvenVxbkZmK3NPNEdCODRnQWNxei9pQXM4T1RkQ1BnQ2I3Z3pmbVBtc2FXbmlyS3gvWmVmZVVnUTkxOU44a1hYeVN0ckl6b3JydUlmdnRib2s4K2NTeHZaclNXYWVrejl5Zk9nVCt2cXp1dHJqamlPd1FyaUhQZHlYQTFKbE56M0hGZzZCQXJYSEVGQi9GbEpOa2RBcDhkRFBVaTRQbjZHMjhUZUxORDlwU2tMVW41K2ZsNnIvdUtWVWtkUGt6eWpqdUlIbmpBbVlDYmJuSWlPUVFxN3NwMU5VcVpFd0ZTQ0hvMmJIQW1BWUxqeFJkekVMN0VjV3R1SDVuRU04bWpEL1NIMkFDUkgrQ3g2a3RlZllWSkJLNWU3QkY0Z2k5NEc0S3NvT0l2UG45blZaRmRMVGc2TEM4bnRYVXJ5ZHR1STFxNGtNUWxsemdBMmtGMGN3dXJlNWsweVFsOW9lS3dJWXNYTytyYlF6V3RSK0VBUzIzWlltdWp3cGFzcUhENjdDM1ZaWjdnQzk0SXhmS1VzbmpzUHNUTjZCZ1R3QkdXdVhzM2FTKzg0TVRrYm4zYzNjL3RyVlBaQzMvSDlXeUZOU1lyc0VKMjNsbEdpbFZXcmwzckJDMmNiWFdzTkYranVnWkI3amdJZEJEUWZQd3hpWFpjWnlJT0FVL3daY25yc1ZDaDlXU2hBUUN1andkWDJPOEljN3VxZThkSDFYbXZBakEzdVhjdkdmZmVTNElUR0JBM3NWZC8vV3RuRWpOdk5IVEYwRlg5MlVZSWhNVzRwcCt1VjJxYVpQS3lTUWlkWXJGV3lnMEgreDVrdUNGdGY5d1l6b1ZoMnJpUjFJd1pKSzY3anRUeno5dmZCWUlVWkhQOUNaak9JcG9FVC9EbGl5S0dJcjFGNkJvbDRzbnVPeC9vS0k2Tm1vQ2ZyYTkzaHVBanZ0dkdEcG94TUZYTTA3aTdTSng1Z3ErUTFNSXJuNjcxOEpmR3hsTldSVVdaM21sL3M4OVVVQzlqQU10NDZBdVpZTEo5c3ZtbzhCMWVJeU1hKzhLQ3Z0eTRJVVBBay9reVQ2dldzSlRZeGZrdEhUejBXZlBNbVRQeU13TWJEM3k1WVRoR2FDQ0Y0d0pSVmVWVVdxcXJTY1AyZ2Q4ZVNBRnBURUNYZ09jUTgyUysrVGJ2Y0xod0o2a0dUb28rYllFYnpLai9rT0k5T1ZnMWE5bSs2alJsQ2dsdWc1TC9kT051d2RQbnk4b0hiODdudFZvUEc2OURoMnM2VGIzaS9YZjB4aHNkZDJVTVF2VzZxeHNjYU9GVmg3Y3BmZnh4RWhtckQ1NkZoZmtvMXRZYXJTMk5xTncyYzU2Ym0rU1kxODNzOERqSVNYWS9TQmFHK20ycTdoMkJzdTFWOFdPUGNmN3VrQWMvNWhsaTRzM2diVWl5MkM1WTYwS2g0UEozM24wL2Z1bWMyWFpPcjdIYVovRStGTERPdlNRS1E1WTg0aERlVmxxR3ZRSS81dWszWlhxZGJYdlR5VFJXZGpYbnVjdGZlKzJOTnBjOFZOSEN4VzVrTnR5RTNhZUU2OHpZVXVESFBQMW15bHdOelRCczlWQnFuOWViWlgxNjRMT0NaQ3B0MTd1VW0xM0JZbXJhOENQZmp0dU5Nc0VML01hV2xWcXBWSEtmdmZLalNrcmQwdlZEQlcxdEt6WnRlamwyelo5V0J6Ulc5VkVyVjNKQW9BOVA4bXlyRkd1czFyNWx3YXVnY0VRZ2xKZjNrR0ViY0VIaTBua0wydDI2MXo5OTJ2UllUYzJ4eUJQclZvWDdWYnNmOHZPZzZQb2JibzJVbG80Tzc5eTFNK0RldE9pNFY1ZElKdU5DYVZ2OGZtLzQxVmRmVDlCWFNNREg3L2VGQmVsYndOUGxMRzVldHJ6RE5VZ3BRK0hjd2toZFRYMWt6WC84VzhqcjlRejc1VStsMG1ycFh5MlBGbzhaRlk1R0cxbWp0YWpydWpYY3EwT1QyQ05LUmxsRm5ndGtCOElibm5yNks3SDY0QUUrVXNubkhINlNYTTZvM3RMcGhrSUJMY3JMRGFWZjNMVFpkL2pRWjlad0pnNzg0QUUrVEd5UjQ5bE84OVhDd1pIa3R0elFLQkltM0xwY1dsRStUdHp6encrMnhoTUpjemdTQjI3Z0J3L3dFYnlNNFdBUmhYSUtPMXFYbGNkN0VMWmYzR0FZbnBjTlRROC8rdWlhbEdsYWFqZ1JCMTdnQm43d0FCL3c2c3BWYzU2MzY3WmRsVDhpOS9pNzczMFUyUGo4UzJtY1BEeGlla25BQzl6QUR4NDljVFNFdC9zQXhxN2VLbEV4b2JMcytKTlBiY3dKaFVMbS9IbEQ5eUhFZG84bFg5bjhwbVM4M2lsVEtsdE5TMVlRWHRUUXU0ZmM4OG83YVdkTUpsTlRwMHlhRUYvOXl6WEdDNXRla2J4L2hxUUtBQmZ3UGNJNGdSZTRnYjhqc2UrbW5YRVZoVkpIVE11OGNNcWtpYkgxVHo1dFBQR2Z6NWpzTzRlVUZ3QWU0QUsrUDVnOE1RYTh3SDNHaWxxZjFFblFMaXN0eDB5ZVVINW95NWF0NGIyNzkwWHUvTUh0Z2FIdzVQWEp4cWIwVC8vbDRWamQ4Zm93NDR1WUtWbXVkR3JxeTdWOTM3K0ttc3kwekM4dUtkNmRNSlBoVzI1ZGtYeHIyM3RLS2ZWbDdXL0MrTGZjZWtjYWVJQUwrSUN6cjMzb1ZkK2MwMnVwU1VQMHgwbU9rTGhuUmtyVHhhT3RNUzJ2ZUZSNDl1WlgzaEx2ZjdBak1uWHFaQzBZekRsbkR5emlOWlA3N3Y5WjYydXZ2dW1ycUJocnRNYjBoLzArN1dvbG5WczhlQnRONDJSR25hSHdlbGFXbSszOWQvZnZVUlhublZkeU5KMU9ocGZkL3ZmZSsrNy9hVE5lQUJwTTB1Z2Y0MkE4akl2eDkrK1JGY0J6TnYyZFZXVVNlWUdacHNNOGFDa0hFa3NtVm81N3JQRlVKSGY1SFhmYnI1WlZYem5mZmJYc2kxdnhqRmZMNnVzYThXcFpMbytYTkZQcHYrYnhONWpwczM5KzhRdWpZMVhiZ0FoS3ovSXNLaDlYc3Q2VVZ0SFR6NzVBLzc1dWd4cFZXRlJYVlRVejg2WENQbFNmTWw0cTNQWkJyUDVFUTNFNEorZ0xCb00rN3IvTkpHbS9WTWpqZnVHSkhiQ2FOSHVFalhobzJiSlUwWWdSb1ovazVZVnY1TXlwNUsyM3R0SG16YTkvN25WU2Z5RFEwK3VrSHAvUGk2ZW04emdIenlzckhhT0VVR3RqQ2ZsRFE2TUdSUU5uWUkxQnNNSjRiR3NwWTF3YUk1a2Q5QWV2RHdRQzM5SjAvUUpXa3dLMlNVVnAwNkpFVTRUYzJ3bzZSMkErdjUrS2NZOWVhQ2M1a3RxdUtmMmxGa28rRVZSNkcrNDh5RUh3S29QNkxMMUZDazhxcm1hU3ExVjdwSVdqTHNnbk5LUDlGWElqcmduWnhsRlRRblhjWWxIdTlZUHFOZjVmZ0FFQXY0TVhNRjYzNXdrQUFBQUFTVVZPUks1Q1lJST0ifX0sc3RhbXA6MTc2ODYyNzczNjczN30sImN3LlBob3Rvbi5TeW5jVGFzayI6e2lkOiJjdy5QaG90b24uU3luY1Rhc2siLGJ1aWxkOjU0LGxhbmc6e2VuOntUWFRfVElUTEU6Ik5ldyByZXBsaWNhdGlvbi9kdW1wIixUWFRfVElUTEVfU1lOQzoiTmV3IHJlcGxpY2F0aW9uIixUWFRfVElUTEVfWkRVOiJSZXN0b3JlIGZyb20gWklQIGR1bXAiLFRYVF9USVRMRV9KRFU6IlJlc3RvcmUgZnJvbSBKU09OIGR1bXAiLFRYVF9USVRMRV9aSVA6IkR1bXAgdG8gWklQIixUWFRfVElUTEVfRFVNUDoiUmVzdG9yZSBmcm9tIGEgZHVtcCIsTEJMX01PREU6Ik1vZGUiLFRBR19NT0RFOnt0YWdzOltbe09uY2U6Im9uY2UifSx7TGl2ZToibGl2ZSJ9LHtaSVA6InppcCJ9XSxbe25hbWU6IlVzZSBfcmVwbGljYXRvciBkb2MiLHZhbHVlOiJkb2MiLGNzczoibm96aXAifV0sW3tuYW1lOiJUd28gd2F5Iix2YWx1ZToiMndheSIsY3NzOiJub3ppcCJ9XV0sZ3JvdXBzaGltOic8c3BhbiBjbGFzcz0ibzYwIG5vemlwIj4mdGhpbnNwO8K3JnRoaW5zcDs8L3NwYW4+Jyx0YWdzaGltOiImdGhpbnNwOyJ9LFRBR19NT0RFX0NPUFk6e3RhZ3M6W1t7IlJlcGxpY2F0ZSBkb2NzIjoib25jZSJ9LHsiRHVtcCBkb2NzIHRvIFpJUCI6InppcCJ9XV0sZ3JvdXBzaGltOic8c3BhbiBjbGFzcz0ibzYwIG5vemlwIj4mdGhpbnNwO8K3JnRoaW5zcDs8L3NwYW4+Jyx0YWdzaGltOiImdGhpbnNwOyJ9LExCTF9QVEFTSzoiVGFzayBncm91cCIsUExDX1BUQVNLOiJQaG90b24gdGFzayBncm91cCIsTEJMX0lEOiJTeW5jIG5hbWUiLFBMQ19JRDoiRG9jIF9pZCBmb3Ige19yZXBsaWNhdG9yfSBEQiIsRVJSX0lEOiJSZXF1aXJlZCIsRVJSX0lEX1VORDoiQ2Fu4oCZdCBzdGFydCB3aXRoIHVuZGVyc2NvcmUiLEVSUl9JRF9FWElTVDoiVGhpcyBkb2MgX2lkIGFscmVhZHkgZXhpc3RzIixMQkxfRlJPTToiU291cmNlIERCIixQTENfRlJPTToiTG9jYWwgbmFtZSBvciByZW1vdGUgVVJMIixFUlJfRlJPTToiRXhpc3RpbmcgREIgbmFtZSBvciB2YWxpZCBVUkwiLEVSUl9GUk9NX1VSTDoiSW52YWxpZCBVUkwiLEVSUl9QV0Q6IlBsZWFzZSBwcm92aWRlIGNyZWRlbnRpYWxzIixMQkxfWklQRFVNUDoiU291cmNlIGZpbGUiLFBMQ19aSVBEVU1QOic8ZGl2IGNsYXNzPSJ0YWMiPjxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG8zMCBmczMwMCI+PC9zcGFuPjxicj5TZWxlY3Qgb3IgZHJhZyAuemlwIERCIGR1bXAgb3IgLmpzb24gY2hhbmdlcyBmZWVkIGhlcmU8L2Rpdj4nLFRJUF9aSVBEVU1QOiJTZWxlY3Qgb3IgZHJhZyAuemlwIG9yIC5qc29uIERCIGR1bXAgaGVyZSIsRVJSX1pJUERVTVA6IkludmFsaWQgemlwIixMQkxfU1JDX0NSRURTOiJTb3VyY2UgY3JlZHMiLFBMQ19VTkFNRToiVXNlcm5hbWUiLEVSUl9VTk9fOiJDYW7igJl0IHN0YXJ0IHdpdGggXyIsUExDX1VQV0Q6IlBhc3N3b3JkIixFUlJfTk9QV0Q6IlBhc3N3b3JkIHJlcXVpcmVkIixUWFRfVUNUWDoiVXNlIC51c2VyQ3R4IHByb3Agd2l0aCBfYWRtaW4gcm9sZSIsTEJMX0ZJTFRFUjoiRmlsdGVyIixUQUdfRklMVEVSOnt0YWdzOltbe25hbWU6IkJ5IF9pZHMiLHZhbHVlOiJpZHMifSx7bmFtZToiRnVuY3Rpb24iLHZhbHVlOiJmbiIsY3NzOiJub3ppcCJ9LHtuYW1lOiJTZWxlY3RvciIsdmFsdWU6InNlbCIsY3NzOiJub3ppcCJ9LHtuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9XSx7bmFtZToiU2tpcCBkZG9jcyIsdmFsdWU6InhkZG9jIn0se25hbWU6IlNraXAgY29uZmxpY3RzIix2YWx1ZToieHJldnMiLGNzczoiemlwb25seSJ9XSxlbXB0eTp7Tm86IiJ9LHRhZ3NoaW06IiIsZ3JvdXBzaGltOiLigIkifSxMQkxfRE9DUzoiRG9jcyB0byBzeW5jIixQTENfRE9DUzoiSlNPTiBbXSBvZiBkb2MgX2lkLXMgdG8gcmVwbGljYXRlIixFUlJfRE9DUzoiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBhcnJheSBvZiBzdHJpbmdzIixMQkxfU0VMOiJTZWxlY3RvciIsUExDX1NFTDoiTWFuZ28gc2VsZWN0b3IsIEpTT04gb2JqZWN0IixFUlJfU0VMOiJNdXN0IGJlIE1hbmdvIHF1ZXJ5IEpTIG9yIEpTT04gb2JqZWN0IixMQkxfRk46IkZpbHRlciBmbiIsUExDX0ZOOiJkZG9jTmFtZS9maWx0ZXJGbk5hbWUsIGZpbHRlciBmdW5jdGlvbiIsRVJSX0ZOX0RFU0lHTjoiTm8gX2Rlc2lnbiBwcmVmaXgsIG9ubHkgZGRvY05hbWUvZmlsdGVyIixFUlJfRk46IlZhbGlkIGZvcm1hdCBpcyBkZG9jTmFtZS9maWx0ZXIiLExCTF9RUlk6IlFyeSBwYXJhbXMiLFBMQ19RUlk6IlF1ZXJ5IHBhcmFtcyBmb3IgZmlsdGVyIGZuLCBKU09OIG9iamVjdCIsRVJSX1FSWToiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBvYmplY3QiLExCTF9UTzoiVGFyZ2V0IERCIixQTENfVE86IkxvY2FsIG5hbWUgb3IgcmVtb3RlIFVSTCIsRVJSX1RPOiJJbnZhbGlkIERCIFVSTCIsRVJSX1RPX1VSTDoiTWFsZm9ybWVkIFVSTCIsRVJSX1RPX01JU1M6Ik1pc3NpbmcgbG9jYWwgdGFyZ2V0IERCIixFUlJfRFVQOiJTb3VyY2UgYW5kIFRhcmdldCBtdXN0IGJlIGRpZmZlcmVudCIsRVJSX0NSRURTOiJDcmVkZW50aWFscyByZXF1aXJlZCwgbGlrZSBodHRwOi8vdXNlcjpwd2RAYWJjLnh5ei/igKYiLExCTF9UR1RfQ1JFRFM6IlRhcmdldCBjcmVkcyIsRVJSX1VSRVFfQ1Q6IlJlcXVpcmVkIHdpdGggQ3JlYXRlIHRhcmdldCIsVFhUX05FV1RHVDoiQ3JlYXRlIHRhcmdldCIsVElQX1RHVF9ROiJOdW1iZXIgb2Ygc2hhcmRzLCBmb3IgbmV3bHkgY3JlYXRlZCBEQnMgb25seSIsVElQX1RHVF9OOiJOdW1iZXIgb2YgZGF0YSBjb3BpZXMgc3RvcmVkIGluIGEgY2x1c3RlciwgZm9yIG5ld2x5IGNyZWF0ZWQgREJzIG9ubHkiLFRYVF9DT1BZQUNMOiJDb3B5IHNvdXJjZSBEQiBzZWN1cml0eSAgZGVzY3JpcHRvcnMiLEJUTl9TVEFSVDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgezF9IHJlcGxpY2F0aW9uezJ9Ii5hc3NpZ24oMT09eD8iIjp4LHg+MT8icyI6IiIpfSxCVE5fU1RBUlRfRE9DOmZ1bmN0aW9uKHgpe3JldHVybiJDcmVhdGUgezF9IGRvY3syfSBhbmQgc3RhcnQiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9aSVA6ZnVuY3Rpb24oeCl7cmV0dXJuIkR1bXAgezF9IERCezJ9IHRvIC56aXAiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9VTlpJUDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgcmVzdG9yZSJ9LEJUTl9DQU5DRUw6IkNhbmNlbCIsQlROX0NMRUFSOiJDbGVhciIsTVNHX1NUQVJUOiJTdGFydGluZyB7MX0gc3luYyB0YXNrLi4uIixNU0dfT0tfT05DRToiUmVwbGljYXRpb24gZnJvbSB7MX0gZmluaXNoZWQiLE1TR19PS19ET0M6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX0xJVkU6IkNyZWF0ZWQgYSB0YXNrIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX09OQ0VfQkFDSzoiUmVwbGljYXRpb24gdG8gezF9IGZpbmlzaGVkIixNU0dfT0tfRE9DX0JBQ0s6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gaW5ib3VuZCBzeW5jIixNU0dfT0tfTElWRV9CQUNLOiJDcmVhdGVkIGEgdGFzayBmb3IgezF9IGluYm91bmQgc3luYyIsTVNHX0ZBSUw6IkZhaWxlZCBzdGFydGluZyB7MX0gc3luYy4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkiLE1TR19aSVBfUlVOTklORzoiQ2Fu4oCZdCBzdGFydCBuZXcgZHVtcCB3aGlsZSBhbm90aGVyIGR1bXAgdGFzayBpcyBydW5uaW5nLiBSZXRyeSB3aGVuIGl0IGZpbmlzaGVzLiIsRVJSX0pPQjp7VDoiRmFpbGVkIHsxfSBmb3IgezJ9IERCLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHszfTrCoHs0feKAmSIsQzoiIENvbnRpbnVpbmcgdGFzay4iLEdFVDoicmVhZGluZyBkZG9jcyIsVVRJTFM6ImNyZWF0aW5nIHV0aWwgZGRvYyIsRkRET0M6InJlcGxpY2F0aW5nIGZpbHRlcmluZyBkZG9jIHRvIHRhcmdldCIsQUNMOiJjbG9uaW5nIHNlY3VyaXR5IG9iamVjdCB0byB0YXJnZXQiLFRPOiJjcmVhdGluZyBvdXRib3VuZCBzeW5jIixGUk9NOiJjcmVhdGluZyBpbmJvdW5kIHN5bmMifSxNdWx0aTp7VFhUX1RJVExFOiJOZXcgYmFja3VwL3Jlc3RvcmUgam9iIixUQUdfTU9ERTp7dGFnczpbW3tPbmNlOiJvbmNlIn0se0xpdmU6ImxpdmUifSx7WklQOiJ6aXAifV0sW3tuYW1lOiJVc2UgX3JlcGxpY2F0b3IgZG9jcyIsdmFsdWU6ImRvYyIsY3NzOiJub3ppcCJ9XSxbe25hbWU6IlR3byB3YXkiLHZhbHVlOiIyd2F5Iixjc3M6Im5vemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sTEJMX0lEOiJEb2NzIHByZWZpeCIsUExDX0lEOiJQcmVmaXggZm9yIHtfcmVwbGljYXRvcn0gZG9jcyIsRVJSX0lEX1VORDoiRG9jIG5hbWVzIGNhbuKAmXQgc3RhcnQgd2l0aCB1bmRlcnNjb3JlIixMQkxfRlJPTToiU291cmNlIERCcyIsUExDX0ZST006IlNlbGVjdCBEQnMgdG8gYmFja3VwL3Jlc3RvcmUiLEVSUl9GUk9NOiJBdCBsZWFzdCBvbmUgREIgcmVxdWlyZWQiLExCTF9VTlBSRUZJWDoiVW5wcmVmaXggREJzIixQTENfVU5QUkVGSVg6IlByZWZpeCB0byByZW1vdmUgZnJvbSBEQiBuYW1lcyIsVElQX1VOUFJFRklYOiJEQiBuYW1lcyBub3Qgc3RhcnRpbmcgd2l0aCBwcmVmaXggYXJlIGtlcHQgaW50YWN0IixMQkxfRklMVEVSOiJGaWx0ZXIiLFRBR19GSUxURVI6e3RhZ3M6W3tuYW1lOiJTZWxlY3RvciIsdmFsdWU6InNlbCIsY3NzOiJub3ppcCJ9LHtuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9LHtuYW1lOiJTa2lwIGRkb2NzIix2YWx1ZToieGRkb2MifSx7bmFtZToiU2tpcCBjb25mbGljdHMiLHZhbHVlOiJ4cmV2cyIsY3NzOiJ6aXBvbmx5In1dLGVtcHR5OntObzoiIn0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiSJ9LExCTF9UTzoiVGFyZ2V0IENvdWNoIixQTENfVE86IlRhcmdldCBDb3VjaERCIHJvb3QgVVJMIixFUlJfVE86IlBsZWFzZSBwcm92aWRlIHZhbGlkIFVSTCIsTEJMX1RHVF9DUkVEUzoiVGFyZ2V0IGNyZWRzIixMQkxfUFJFRklYOiJBZGQgcHJlZml4IixQTENfUFJFRklYOiJTdHJpbmcgdG8gcHJlcGVuZCB0byB0YXJnZXQgREIgbmFtZXMiLFRYVF9ORVdUR1Q6IkNyZWF0ZSB0YXJnZXQgREJzIixUWFRfQ09QWUFDTDoiQ29weSBzZWN1cml0eSAgZGVzY3JpcHRvcnMgZnJvbSBzb3VyY2UgREJzIixNU0dfU1RBUlRJTkc6IkNyZWF0aW5nIHN5bmMgdGFza3MuLi4iLE1TR19TVEFSVDoiU3RhcnRpbmcgezF9IHN5bmMuLi4iLE1TR19GQUlMOiJGYWlsZWQgc3RhcnRpbmcgezF9IHN5bmMuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIn0sQ29weTp7VFhUX1RJVExFOiJSZXBsaWNhdGUvZHVtcCBkb2NzIixCVE5fU1RBUlQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiJ6aXAiPT1iPyJEdW1wIHsxfSBkb2N7Mn0iLmFzc2lnbigxPT1hPyIiOmEsYT4xPyJzIjoiIik6IlJlcGxpY2F0ZSB7MX0gZG9jezJ9Ii5hc3NpZ24oMT09YT8iIjphLGE+MT8icyI6IiIpfX0sRVJSX1pJUF9TVFJFQU06IkZhaWxlZCB0byBzdGFydCBzdHJlYW1pbmcuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLiIsRVJSX1VOWklQX0ZBSUw6IkR1bXAgcmVzdG9yZSBmYWlsZWQuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLiIsRVJSX1VOWklQX0FCUlQ6IkR1bXAgcmVzdG9yZSBhYm9ydGVkLiIsTVNHX1VOWklQX09LOiJEdW1wIHJlc3RvcmUgY29tcGxldGVkLiIsTEJMX1pJUE9QVDoiU3RvcmUgREIgbWV0YSIsVEFHX1pJUE9QVDp7dGFnczpbe25hbWU6IlNlY3VyaXR5IG9iamVjdHMiLHZhbHVlOiJhY2wifSx7bmFtZToiU2hhcmRpbmcgc2V0dGluZ3MiLHZhbHVlOiJxbnAifV0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiSJ9LEVSUl9VTlpJUDoiRmFpbGVkIHVuemlwcGluZzogezF9IixFUlJfV1JPTkdaSVA6IlppcCBmaWxlIHByb3ZpZGVkIGlzIG5vdCBhIFBob3RvbiBDb3VjaERCIGR1bXAiLE1TR19VTlpJUEVORDoiWmlwIGZpbGUgZW5kZWQsIHsxfSBmaWxlcyBwaXBlZCwgezJ9IGZpbGVzIGRyb3BwZWQiLEVSUl9VTlpJUE5URjoiRXJyb3Igbm90aWZ5aW5nIHVuemlwcGVkIGRvYyBwdW1wcyIsTVNHX1JFQURQQVVTRUQ6IlxuUmVhZGVyIHBhdXNlZCwgezF9IGZpbGVzIGluIHRoZSBidWZmZXJcbiIsTVNHX1JFQURSRToiXG5SZWFkZXIgcmVzdGFydGVkXG4iLEVSUl9KX0pTT046Ik5vdCBhIEpTT04gZmlsZSIsRVJSX0pfRkVFRDoiTm90IGEgX2NoYW5nZXMgZmVlZCBvciBkb2NzIGFyZSBtaXNzaW5nIixFUlJfSl9GSUxFUzoiRG9jIGF0dGFjaG1lbnRzIGhhdmUgbm8gZGF0YSIsV0FSTl9OT1RET0M6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXg/Ik9uZSByb3cgaGFzIG5vIF9pZCBvciBpc27igJl0IGFuIG9iamVjdC4gVGhhdCByb3cgd2FzIGRyb3BwZWQuIjoiezF9IHJvd3MgaGF2ZSBubyBfaWQgb3IgYXJlbuKAmXQgb2JqZWN0cy4gVGhvc2Ugcm93cyB3ZXJlIHNraXBwZWQuIi5hc3NpZ24oeCl9LExCTF9aSVBGSUxFOiJUYXJnZXQgZmlsZSIsUExDX1pJUEZJTEU6IlRhcmdldCAuemlwIGFyY2hpdmUgZmlsZSBuYW1lIixFUlJfTk9aSVA6IllvdXIgYnJvd3NlciBkb2VzbuKAmXQgaGF2ZSBhbGwgZmVhdHVyZXMgcmVxdWlyZWQgdG8gY3JlYXRlIFpJUCBmaWxlIG9uIHRoZSBmbHksIHNvcnJ5LiBVc2UgQ0xJIHRvb2xzIHRvIGR1bXAgeW91ciBkYXRhLiIsTVNHX1pJUF9CTE9COic8c3BhbiBjbGFzcz0iZGliIHcyMCB0YWMgbWwtMjAgZmktYWxlcnQgcmVkMSI+PC9zcGFuPllvdXIgYnJvd3NlciBkb2VzbuKAmXQgYWxsb3cgY2xpZW50LXNpZGUgc3RyZWFtaW5nIHRvIGEgZmlsZS4gSXQgbWVhbnMgYWxsIGRhdGEgc2hvdWxkIGZpdCBpbiBtZW1vcnksIHNvIGRvbnTigJl0IGR1bXAgbW9yZSB0aGFuIHNldmVyYWwgaHVuZHJlZHMgb2YgbWVnYWJheXRlcy4gJyxNU0dfWklQX1dBUk46IlpJUCBiYWNrdXAgaXMgZXhwZXJpbWVudGFsLiBVc2UgcHJvdmVuIENMSSB0b29scyBmb3LCoERCcyBsYXJnZXIgdGhhbiBzZXZlcmFswqBHQnMsIG9ywqBpbiBjYXNlIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGlzwqBmbGFreS4iLExCTF9VTlpJUE9QVDoiUmVzdG9yZSBvcHRzIixUQUdfVU5aSVBPUFQ6e3RhZ3M6W3tuYW1lOiJDcmVhdGUgREJzIix2YWx1ZToiY3JlYXRlIn0se25hbWU6IlB1dCBBQ0wiLHZhbHVlOiJhY2wiLGNzczoidGFnIHBzZXVkb2xpbmsgbm9qc29uIn0se25hbWU6IlNraXAgZGVsZXRlZCIsdmFsdWU6InhkZWwifSx7bmFtZToiU2tpcCBjb25mbGljdHMiLHZhbHVlOiJ4cmV2cyIsY3NzOiJ0YWcgcHNldWRvbGluayBub2pzb24ifV0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiSJ9LExCTF9VTlpJUERCUzoiUmVzdG9yZSBEQnMiLFVuemlwREJSb3c6e1RJUF9SRU1PVkU6IkRvIG5vdCByZXN0b3JlIHRoaXMgREIiLFBMQ19UR1Q6IlRhcmdldCBEQiBuYW1lIixNU0dfTkVXREI6Ik5ldyIsTVNHX05PREI6Ik5vIERCIixFUlJfTk9EQjoiREIgZG9lc27igJl0IGV4aXN0IixFUlJfREJDSEFSUzoiT25seSBsb3dlcmNhc2UgYS16LCAwLTkgYW5kICBfJCgpKy0gYWxsb3dlZCIsRVJSX0RCMUNIQVI6Ik11c3Qgc3RhcnQgd2l0aCBhLXoifSxEdW1wWmlwOntUWFRfVElUTEU6IkR1bXAgdG8gemlwIixCVE5fQUJPUlQ6IkFib3J0IHppcCIsRVJSX0RCX1JFQUQ6J0ZhaWxlZCByZWFkaW5nIDxzcGFuIGNsYXNzPSJmdzQwMCI+ezF9PC9zcGFuPiBEQi4gRHVtcCBhYm9ydGVkLicsTVNHX1RFUk1CWVU6IlRlcm1pbmF0ZWQgYnkgdXNlciIsRVJSX0RPQ0xJU1Q6IkZhaWxlZCByZWFkaW5nIGRvYyBsaXN0IixFUlJfRklMRVJFQUQ6IkZhdGFsIGZhaWx1cmUgcmVhZGluZyB7MX0sIGR1bXAgYWJvcnRlZC4iLE1TR19EVU1QRE9ORToiWklQIGR1bXAgd2FzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiIsTVNHX1RPVEFMMTpmdW5jdGlvbih4LGEpe3JldHVybiJ7MX0gZG9jezJ9IG9mIHszfSIuYXNzaWduKHgseD4xPyJzIjoiIixhKX0sTVNHX1RPVEFMMjpmdW5jdGlvbih4LGEpe3JldHVybiJ7MX0gZG9jcywgezJ9IHJhdyIuYXNzaWduKHgsYS5ieXRlcygyKS5yZXBsYWNlKC9CJC8sImIiKSl9fSxVbmR1bXA6e1RYVF9USVRMRToiUmVzdG9yZSBmcm9tIHRoZSBkdW1wIixCVE5fQUJPUlQ6IkFib3J0IHJlc3RvcmUiLE1TR19GQUlMTk9URToiezF9UmVzdG9yZSBhYm9ydGVkLCB7Mn0gb2YgezN9IGRvY3Mgc2F2ZWQuIixFUlJfU0FWRURPQzoiRmFpbGVkIHNhdmluZyBkb2MgezF9LiAiLE1TR19UT1RBTDE6ZnVuY3Rpb24oeCl7cmV0dXJuInsxfSBkb2N7Mn0iLmFzc2lnbih4LHg+MT8icyI6IiIpfSxNU0dfVE9UQUwyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuInsxfSBkb2N7Mn0sIHszfSByYXciLmFzc2lnbih4LHg+MT8icyI6IiIsYS5ieXRlcygyKS5yZXBsYWNlKC9CJC8sImIiKSl9fX19LGRhdGE6e3Rhc2s6Ik11bHRpIixwdGFzazoiIixkb2M6IiIsbW9kZTpbIm9uY2UiXSxkdW1wT25seTohMSxzcmM6e3VybDoiIixkYnM6W10sdXNlcjoiIixwd2Q6IiIsdWN0eDpbXSx1bnByZWZpeDoiIixmaWx0ZXI6W10sZm46IiIsaWRzOltdLHNlbDp7fSxxdWVyeTp7fSx6aXA6ITEsanNvbjohMSxvcHRzOltdfSx0Z3Q6e3VybDoiIix1c2VyOiIiLHB3ZDoiIixwcmVmaXg6IiIsY3JlYXRlOiExLHE6IiIsbjoiIixhY2w6ITEsemlwZmlsZToiIixvcHRzOlsiY3JlYXRlIl19LHRhc2tzOltdfSxEQnM6W10sQmFzZToiIixpc0NvdWNoMjohMSxjYW5aaXA6bnVsbCxjYW5TdHJlYW06ITAsaXNTdHJlYW1pbmc6ITEsVW56aXBUbzpbXSxVbnppcERCbWFwOm51bGwsZG9jc1RvU2F2ZTpbXSxVbnppcFN0cmVhbTp7fSxVbnppcE9wdHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLnRndC5vcHRzfSx1aTp7IiNydGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMubGFuZztyZXR1cm4geC5tb2RlKyIiPT0iemlwIj94LnNyYy5qc29uP2EuVFhUX1RJVExFX0pEVTp4LnNyYy56aXA/YS5UWFRfVElUTEVfWkRVOnguc3JjLmRicy5sZW5ndGh8fHguc3JjLnVybD9hLlRYVF9USVRMRV9aSVA6YS5UWFRfVElUTEVfRFVNUDphLlRYVF9USVRMRV9TWU5DfSx3YXRjaDpbIiNybW9kZSIsIiNyemlwZHVtcCIsIiNyc291cmNlIiwiI3Jzb3VyY2VzIl19LCIjcm1vZGUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLE9iamVjdC5jbG9uZShhLmxhbmdbIkNvcHkiPT10aGlzLmRhdGEudGFzaz8iVEFHX01PREVfQ09QWSI6IlRBR19NT0RFIl0sITApKTsiemlwIiE9dGhpcy5kYXRhLm1vZGUmJiJDb3B5IiE9dGhpcy5kYXRhLnRhc2smJihiLnRhZ3NbMF09Yi50YWdzWzBdLnJlbW92ZSh4PT4iemlwIj09T2JqZWN0LnZhbHVlcyh4KVswXSkpLHgudGFncyhiKSx0aGlzLmRhdGEuZHVtcE9ubHkmJngucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbCE9YSYmKHgubW9kZT1hLmxlbmd0aCYmImRvYyIhPWE/YTpbIm9uY2UiXS5jb25jYXQoYSkpLHgubW9kZS5pbmRleE9mKCJ6aXAiKT4tMSl7eC5tb2RlOyEwPT09Yi5jYW5aaXA/eC5tb2RlLmxlbmd0aD4xJiYoeC5tb2RlPVsiemlwIl0pOiExPT09Yi5jYW5aaXA/YygpOm51bGw9PT1iLmNhblppcCYmZCgpLnRoZW4oZnVuY3Rpb24oeCl7Yi5QaG8oKS5jYW5aaXA9eCxiLmNhblppcD14LHh8fChjKCksYi5teS5yZWNhbGMoIiNybW9kZSIpKX0pfXJldHVybiJ6aXAiPT14Lm1vZGVbMF0/KHgudGd0LnppcGZpbGU9eC50Z3QuemlwZmlsZXx8KCJTeW5jIj09eC50YXNrP3guc3JjLnVybCsiLSI6ImR1bXAtIikrRGF0ZS5ub3coKS50b1N0cmluZygzNikrIi56aXAiLGIubXkucm9vdCgpLmFkZENsYXNzKCJoYXN6aXAiKSk6Yi5teS5yb290KCkucmVtb3ZlQ2xhc3MoImhhc3ppcCIpLHgubW9kZTtmdW5jdGlvbiBjKCl7InppcCI9PXgubW9kJiZ4LmR1bXBPbmx5P2IubXkuY2FuY2VsKCk6eC5tb2RlPVsib25jZSJdLGN3LmxpYi5ub3RlKGIubGFuZy5FUlJfTk9aSVAsImVycm9yIil9ZnVuY3Rpb24gZCgpe3ZhciB4PSQuRGVmZXJyZWQoKSxhPWIubXkuZmluZCgiI3ppcC10ZXN0ZXIiKTtyZXR1cm4gYS5teShiLlppcFRlc3Rlcix7fSkudGhlbihmdW5jdGlvbihiKXt4LnJlc29sdmUoITApLGZ1bmN0aW9uKCl7YS5teSgicmVtb3ZlIil9LmRlbGF5KDIwMCl9KS5mYWlsKGZ1bmN0aW9uKGEpe3gucmVzb2x2ZSghMSl9KSx4LnByb21pc2UoKX19fSwiI3hzc2hpbSI6e2Nzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiExfX19LCIjeGRvY2lkIjp7Y3NzOntzaGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5tb2RlLmZpbmQoImRvYyIpfX0sd2F0Y2g6WyIjcm1vZGUiXX0sIiNyZG9jaWQiOntiaW5kOiJkb2MiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZih4Lm1vZGUuZmluZCgiZG9jIikpcmV0dXJuIGE/Il8iPT1hWzBdP2IubGFuZy5FUlJfSURfVU5EOmIuUGhvKCkuUmVwbERvY3MuZmluZCh4PT54Ll9pZD09YSk/Yi5sYW5nLkVSUl9JRF9FWElTVDp2b2lkIDA6Yi5sYW5nLkVSUl9JRH0sd2F0Y2g6WyIjcm1vZGUiXX0sIiNycHRhc2siOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1hLlBobygpLlJlcGxEb2NzLm1hcCh4PT54LnBob3Rvbl90YXNrKS5jb21wYWN0KCEwKS51bmlxdWUoKS5zb3J0KCk7ZnVuY3Rpb24gZCh4LGIpe2EubXkuY2hlY2soIiNycHRhc2siKX0iU3luYyI9PWIudGFzayYmeC5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOmMsc2VsZWN0OmQuZGVib3VuY2UoMTApLGFwcGVuZFRvOmEubXkucm9vdCgpLG1pbkxlbmd0aDoxfSl9LGJpbmQ6InB0YXNrIix3YXRjaDpbIiNybW9kZSJdfSwiI2J0bi1zdGFydCI6e2RlbGF5OjYwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGwhPWEpaWYoInppcCI9PXgubW9kZSl7dmFyIGM9Yi5teS5yb290KCkucGFyZW50cygiI2wtYm9hcmQiKS5lcSgwKSxkPWMuZmluZCgiI2wtcGl2b3QtcmIiKTtpZihkLmRhdGEoIm1vZGFsIikpY3cubGliLm5vdGUoYi5sYW5nLk1TR19aSVBfUlVOTklORyk7ZWxzZSBpZih4LnNyYy56aXApe3RyeXtiLnJ1blVuZHVtcChkLGMpLmFsd2F5cyhmdW5jdGlvbigpe2IuY2xlYW5EYXRhKHgpfSl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9Yi5Eb250U3RvcFVuemlwPSEwLGIubXkuY2FuY2VsKCl9ZWxzZSBiLnJ1blppcChkLGMpLnRoZW4oZnVuY3Rpb24oKXtiLmNsZWFuRGF0YSh4KX0pLGIubXkuY2FuY2VsKCl9ZWxzZSBiLnJ1blRhc2tzKCkudGhlbihmdW5jdGlvbihhKXt2YXIgYz0hMDthLmZvckVhY2goZnVuY3Rpb24oeCl7InJlamVjdGVkIj09eC5zdGF0ZSYmKGM9ITEpfSksYyYmYi5jbGVhbkRhdGEoeCksT2JqZWN0LmlzRnVuY3Rpb24oYi5SZXN0YXJ0UG9sbCkmJmIuUmVzdGFydFBvbGwuZGVib3VuY2UoYi5pc0NvdWNoMj8xZTM6MTAwKSgpfSksYi5teS5jYW5jZWwoKTtyZXR1cm4gdGhpcy5sYW5nWyJ6aXAiPT14Lm1vZGUmJiJDb3B5IiE9eC50YXNrP3guc3JjLnppcHx8eC5kdW1wT25seSYmIXguc3JjLmRicy5sZW5ndGgmJiF4LnNyYy51cmw/IkJUTl9TVEFSVF9VTlpJUCI6IkJUTl9TVEFSVF9aSVAiOngubW9kZS5maW5kKCJkb2MiKT8iQlROX1NUQVJUX0RPQyI6IkJUTl9TVEFSVCJdKCh4LnNyYy5kYnMubGVuZ3RofHwxKSooeC5tb2RlLmZpbmQoIjJ3YXkiKT8yOjEpLHguc3JjLmlkcy5sZW5ndGgseC5tb2RlKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLm15LnZhbGlkKCl8fCghKHguc3JjLnVybHx8eC5zcmMuZGJzLmxlbmd0aHx8eC5zcmMuemlwKXx8KCJ6aXAiPT14Lm1vZGU/eC5zcmMuZmlsdGVyLmZpbmQoImlkcyIpJiYheC5zcmMuaWRzLmxlbmd0aHx8IXgudGd0LnppcGZpbGUmJiF4LnNyYy56aXA6IXgudGd0LnVybCkpfX0sd2F0Y2g6WyIjcmRvY2lkIiwiI3Jzb3VyY2UiLCIjcnNvdXJjZXMiLCIjcnNsb2dpbiIsIiNyc3Bhc3MiLCIjcmZuIiwiI3Jkb2NzIiwiI3JxdWVyeSIsIiNydGFyZ2V0IiwiI3J0bG9naW4iLCIjcnRwYXNzIiwiI3J0emlwZmlsZSIsIiNydHVuemlwZGJzIl19LCIjYnRuLWNsZWFyIjp7ZGVsYXk6NjAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJih0aGlzLmNsZWFuRGF0YSh4KSx0aGlzLm15LnJlZHJhdygpKX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4iQ29weSI9PXgudGFza3x8eC5kdW1wT25seSYmInppcCI9PXgubW9kZX19fSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHRoaXMuY2xlYW5EYXRhKHgpLHRoaXMubXkuY2FuY2VsKCkpfSwiI3hzb3VyY2UiOntjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIlN5bmMiIT14LnRhc2t8fCJ6aXAiPT14Lm1vZGUmJnguc3JjLnppcHx8InppcCI9PXgubW9kZSYmeC5kdW1wT25seSYmIXguc3JjLnVybH19LHdhdGNoOlsiI3J6aXBkdW1wIl19LCIjcnNvdXJjZSI6e2RlbGF5OjIwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcztmdW5jdGlvbiBiKGIsYyl7YS5teS5jaGVjaygiI3Jzb3VyY2UiKSxhLmZpeEhlaWdodC5kZWJvdW5jZSgxMDApKHgpfSJTeW5jIj09YS5kYXRhLnRhc2smJnguYXV0b2NvbXBsZXRlKHtkZWxheTowLHNvdXJjZTp0aGlzLkRCcyxjbG9zZTpmdW5jdGlvbih4LGIpe2EubXkuY2hlY2soIiNidG4tZm9sZHNyYyIpfS5kZWJvdW5jZSgxMCksc2VsZWN0OmIuZGVib3VuY2UoMTApLGFwcGVuZFRvOmEubXkucm9vdCgpLG1pbkxlbmd0aDoxZTR9KX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHguc3JjLnVybDt2YXIgYj1hLnJlcGxhY2UoL1tcclxuXHRcc10vZywiIiksYz1iLm1hdGNoKC9cL1wvKFteXC86XHNdKyk6KFteXC86QFxzXSspQC4rLyk7cmV0dXJuIGMmJjM9PWMubGVuZ3RoPyh4LnNyYy51c2VyPWNbMV0seC5zcmMucHdkPWNbMl0seC5zcmMudXJsPWIucmVwbGFjZShjWzFdKyI6IitjWzJdKyJAIiwiIikpOnguc3JjLnVybD1iLHguc3JjLnVybH0sY2hlY2s6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKGEpe3ZhciBjPXRoaXMubGFuZztyZXR1cm4gYi5pc1VSTChhKSYmIWIuaXNWYWxpZFVSTChhKT9iLmxhbmcuRVJSX0ZST01fVVJMOiJTeW5jIiE9eC50YXNrfHxiLlBobyhbIkFsbCIsYV0pfHxiLmlzQnVja2V0VVJMKGEpP3ZvaWQgMDpjLkVSUl9GUk9NfX0sbGlzdGVuOntkYmxpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKGEpcmV0dXJuIGZ1bmN0aW9uKCl7Yi5teS5jaGVjaygiI3Jzb3VyY2UiKX0uZGVib3VuY2UoMjAwKSgpLCEwfX19LCIjcnppcGR1bXAiOntkZWxheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hJiZhKXt2YXIgYz10aGlzLGQ9YlswXS5maWxlc1swXTtpZihkJiYhYy5pc1N0cmVhbWluZyl7dmFyIGU9L1wuanNvbiQvaS50ZXN0KGQubmFtZSsiIiksZj0hZSYmISFkLnN0cmVhbSYmZC5zaXplPjVlNjt4LnNyYy56aXA9ZC5uYW1lLnNwbGl0KCIvIikubGFzdCgpLHguc3JjLmpzb249ZTt0cnl7KGU/Yy5zdGFydFVuZmVlZFN5bmMoZCk6Zj9jLnN0YXJ0VW56aXBTdHJlYW0oZCk6Yy5zdGFydFVuemlwU3luYyhkKSkudGhlbihmdW5jdGlvbihhKXt2YXIgYj1hLmluZm87JC5leHRlbmQoYy5VbnppcFN0cmVhbSxPYmplY3QucmVqZWN0KGEsWyJpbmZvIl0pKSxjLlVuemlwVG89Yi5kYnMsYy5teS5yZWNhbGMoIiNydHVuemlwZGJzIiksYi5kYnMubWFwKHg9Pnguc2VjdXJpdHk/MTowKS5zdW0oKSYmZnVuY3Rpb24oKXt4LnRndC5vcHRzPXgudGd0Lm9wdHMuYWRkKCJhY2wiKS5zbGljZSgwKSxjLm15LnJlY2FsYygiI3J0dW56aXBvcHRzIil9LmRlbGF5KDUwKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtjdy5saWIubm90ZShjLmxhbmcuRVJSX1VOWklQLmFzc2lnbih4KSwiZXJyb3IiLDZlMyksYy5teS5jYW5jZWwoKX0pLmFsd2F5cyhmdW5jdGlvbigpe2IudmFsKG51bGwpLGIudHJpZ2dlcigiY2hlY2siKX0pfWNhdGNoKHgpe2NvbnNvbGUubG9nKHgpLGN3LmxpYi5ub3RlKGMubGFuZy5FUlJfVU5aSVAuYXNzaWduKHgrIiIpLCJlcnJvciIsNmUzKSxjLm15LmNhbmNlbCgpfX19fSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguc3JjLmRicy5sZW5ndGh8fHguc3JjLnVybC5sZW5ndGh8fHgubW9kZSsiIiE9InppcCJ8fCJNdWx0aSI9PXgudGFza30sInNlbGY6aDEwMCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguc3JjLnppcH19LHdhdGNoOlsiI3Jtb2RlIiwiI3Jzb3VyY2UiXX0sIiNyemlwZHVtcGluZm8iOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguc3JjLnppcD8nPHNwYW4gY2xhc3M9ImZpLWNoZWNrIGdyZWVuIGZzOTAgcHI1Ij48L3NwYW4+Jyt4LnNyYy56aXAudHJ1bmNhdGUoNjAsIm1pZGRsZSIsIi4uLiIpOnRoaXMubGFuZy5QTENfWklQRFVNUH0sd2F0Y2g6WyIjcnppcGR1bXAiXSxjc3M6eyJzZWxmOnRyYW5zIjpmdW5jdGlvbih4KXtyZXR1cm4heC5zcmMuemlwfSxoYXNGaWxlOmZ1bmN0aW9uKHgpe3JldHVybiEheC5zcmMuemlwfX19LCIjYnRuLWZvbGRzcmMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5teS5maW5kKCIjcnNvdXJjZSIpLGM9IlN5bmMiPT14LnRhc2smJmIuYXV0b2NvbXBsZXRlKCJ3aWRnZXQiKS5pcygiOnZpc2libGUiKTtyZXR1cm4gbnVsbCE9YSYmKGM/Yi5hdXRvY29tcGxldGUoImNsb3NlIik6Yi5hdXRvY29tcGxldGUoInNlYXJjaCIsIiIpLGM9IWMpLCc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+Jy5hc3NpZ24oYz8iYXVwIjoiYWRvd24iKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmlzVVJMKHguc3JjLnVybCl9fSx3YXRjaDpbIiNyc291cmNlIl19LCIjcnNvdXJjZXMiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7Ik11bHRpIj09YS5kYXRhLnRhc2smJmEuc2VsZWN0Mih4LHt0YWdzOmEuREJzLm1hcCh4PT4oe2lkOngsdGV4dDp4fSkpLG11bHRpcGxlOiEwLHBsYWNlaG9sZGVyOmEubGFuZy5QTENfRlJPTSx0b2tlblNlcGFyYXRvcnM6WyIgIiwiLCJdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSwhMCl9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEubGVuZ3RofHwiTXVsdGkiIT14LnRhc2s/IiI6dGhpcy5sYW5nLkVSUl9GUk9NfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJiJzdHJpbmciIT10eXBlb2YgYSYmKHguc3JjLmRicz1hKSx4LnNyYy5kYnN9LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iTXVsdGkiIT14LnRhc2t9fX0sIiN4c2NyZWRzIjp7Y3NzOntzaGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hIXguc3JjLnppcHx8ISh4Lm1vZGUuZmluZCgiZG9jIil8fHRoaXMuaXNVUkwoeC5zcmMudXJsKXx8eC5tb2RlLmZpbmQoImxpdmUiKSYmdGhpcy5pc0NvdWNoMil9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIl19LCIjcnNsb2dpbiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnNyYy51c2VyO3ZhciBiPXRoaXMuZGVjb2RlVG9rZW4oYSk7cmV0dXJuIDIhPWIubGVuZ3RofHx4LnNyYy5wd2Q/eC5zcmMudXNlcj1hOih4LnNyYy5wd2Q9YlsxXSx4LnNyYy51c2VyPWJbMF0pfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnNyYy51Y3R4Lmxlbmd0aH19LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIl8iPT0oYXx8IiIpWzBdP3RoaXMubGFuZy5FUlJfVU5PXzoiIn0sd2F0Y2g6WydpbnB1dFtuYW1lPSJydXNlckN0eCJdJywiI3Jtb2RlIiwiI3Jzb3VyY2UiXX0sIiNyc3Bhc3MiOntiaW5kOiJzcmMucHdkIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnNyYy51Y3R4Lmxlbmd0aH19LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguc3JjLnVzZXImJiFhP3RoaXMubGFuZy5FUlJfTk9QV0Q6IiJ9LHdhdGNoOlsnaW5wdXRbbmFtZT0icnVzZXJDdHgiXScsIiNybW9kZSIsIiNyc291cmNlIiwiI3JzbG9naW4iXX0sJ2lucHV0W25hbWU9InJ1c2VyQ3R4Il0nOntiaW5kOiJzcmMudWN0eCIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmlzQ291Y2gyfHwheC5tb2RlLmZpbmQoImRvYyIpfHx0aGlzLmlzVVJMKHguc3JjLnVybCl8fHguc3JjLnVzZXJ9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIiwiI3JzbG9naW4iXX0sIiNydW5wcmVmaXgiOntiaW5kOiJzcmMudW5wcmVmaXgiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iTXVsdGkiIT14LnRhc2t8fCJ6aXAiPT14Lm1vZGV9fSx3YXRjaDpbIiNybW9kZSJdfSwiI3JmaWx0ZXIiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX0ZJTFRFUil9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguc3JjLmZpbHRlcj1hLmZpbmQoL154Lyk/YS5maWx0ZXIoL154Lyk6YSkseC5zcmMuZmlsdGVyfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIkNvcHkiPT14LnRhc2t8fCJ6aXAiPT14Lm1vZGUmJiF4LnNyYy51cmwmJiJNdWx0aSIhPXgudGFza319LHdhdGNoOlsiI3J6aXBkdW1wIiwiI3Jzb3VyY2UiXX0sIiNyZG9jcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnNyYy5pZHMubGVuZ3RoP2N3LmxpYi5qc29uKHguc3JjLmlkcywiICAiKToiIjtpZigiIj09YSlyZXR1cm4geC5zcmMuaWRzPVtdLGE7dmFyIGI7dHJ5e2I9SlNPTi5wYXJzZShhKX1jYXRjaCh4KXt9cmV0dXJuIE9iamVjdC5pc0FycmF5KGIpJiZiLmxlbmd0aCYmIWIuZmluZCh4PT4ic3RyaW5nIiE9dHlwZW9mIHgpfHwoYj1bXSkseC5zcmMuaWRzPWIsYX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtpZihhKXt2YXIgYjt0cnl7Yj1KU09OLnBhcnNlKGEpfWNhdGNoKHgpe31yZXR1cm4gT2JqZWN0LmlzQXJyYXkoYikmJmIubGVuZ3RoJiYhYi5maW5kKHg9PiJzdHJpbmciIT10eXBlb2YgeCk/dm9pZCAwOnRoaXMubGFuZy5FUlJfRE9DU319LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iaWRzIiE9eC5zcmMuZmlsdGVyfX0sd2F0Y2g6WyIjcmZpbHRlciIsIiNybW9kZSJdfSwiI3JzZWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzLGQ9T2JqZWN0LnNpemU7aWYobnVsbD09YSlyZXR1cm4gZCh4LnNyYy5zZWwpP2N3LmxpYi5qc29uKHguc3JjLnNlbCwiICAiKToiIjtpZigiIj09YSlyZXR1cm4geC5zcmMuc2VsPXt9LGE7dHJ5e2I9Yy5qc2V2YWwoYSl9Y2F0Y2goeCl7Yj12b2lkIDB9cmV0dXJuIE9iamVjdC5pc09iamVjdChiKSYmZChiKXx8KGI9e30pLHguc3JjLnNlbD1iLGF9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzLGQ9T2JqZWN0LnNpemU7aWYoYSl7dHJ5e2I9Yy5qc2V2YWwoYSl9Y2F0Y2goeCl7Yj12b2lkIDB9cmV0dXJuIE9iamVjdC5pc09iamVjdChiKSYmZChiKT92b2lkIDA6dGhpcy5sYW5nLkVSUl9TRUx9fSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuInNlbCIhPXguc3JjLmZpbHRlcn19LHdhdGNoOlsiI3JmaWx0ZXIiLCIjcm1vZGUiXX0sIiNyZm4iOntiaW5kOiJzcmMuZm4iLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iZm4iIT14LnNyYy5maWx0ZXJ8fCJ6aXAiPT14Lm1vZGV9fSx3YXRjaDpbIiNyZmlsdGVyIiwiI3Jtb2RlIl19LCIjcnF1ZXJ5Ijp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiJmbiIhPXguc3JjLmZpbHRlcnx8IXguc3JjLmZufHwiemlwIj09eC5tb2RlfX0sd2F0Y2g6WyIjcmZpbHRlciIsIiNyZm4iLCIjcm1vZGUiXX0sIiNyemlwb3B0cyI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPU9iamVjdC5jbG9uZShhLmxhbmcuVEFHX1pJUE9QVCwhMCk7YS5QaG8oIkNvdWNoIikudmVyPCIwMDIuIiYmYi50YWdzLnJlbW92ZShmdW5jdGlvbih4KXtyZXR1cm4icW5wIj09eC52YWx1ZX0pLHgudGFncyhiKX0sYmluZDoic3JjLm9wdHMiLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiJ6aXAiIT14Lm1vZGV8fCJDb3B5Ij09eC50YXNrfHx4LnNyYy56aXB8fCF4LnNyYy51cmwmJiF4LnNyYy5kYnMubGVuZ3RofX0sd2F0Y2g6WyIjcm1vZGUiLCIjcnNvdXJjZXMiLCIjcnNvdXJjZSIsIiNyemlwZHVtcCJdfSwiI3J0YXJnZXQiOntkZWxheToyMCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7ZnVuY3Rpb24gYyhiLGMpe2EubXkuY2hlY2soIiNydGFyZ2V0IiksYS5maXhIZWlnaHQuZGVib3VuY2UoMTAwKSh4KX0vXihTeW5jfENvcHkpJC8udGVzdChiLnRhc2spJiZ4LmF1dG9jb21wbGV0ZSh7ZGVsYXk6MCxzb3VyY2U6YS5EQnMsY2xvc2U6ZnVuY3Rpb24oeCxiKXthLm15LmNoZWNrKCIjYnRuLWZvbGR0Z3QiKX0uZGVib3VuY2UoMTApLHNlbGVjdDpjLmRlYm91bmNlKDEwKSxhcHBlbmRUbzphLm15LnJvb3QoKSxtaW5MZW5ndGg6MWU0fSl9LGJpbmQ6InRndC51cmwiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7aWYoYSlpZih0aGlzLmlzVVJMKGEpKXtpZighdGhpcy5pc1ZhbGlkVVJMKGEpKXJldHVybiB0aGlzLmxhbmcuRVJSX1RPX1VSTDtpZigiTXVsdGkiIT14LnRhc2smJiF0aGlzLmlzQnVja2V0VVJMKGEpKXJldHVybiB0aGlzLmxhbmcuRVJSX1RPfWVsc2UgaWYoIXgudGd0LmNyZWF0ZSYmIXRoaXMuUGhvKFsiQWxsIixhXSkpcmV0dXJuIHRoaXMubGFuZy5FUlJfVE9fTUlTU30sd2F0Y2g6WydpbnB1dFtuYW1lPSJydGNyZWF0ZWRiIl0nXSxsaXN0ZW46e2RibGlzdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYoYSlyZXR1cm4gZnVuY3Rpb24oKXtiLm15LmNoZWNrKCIjcnRhcmdldCIpfS5kZWJvdW5jZSgyMDApKCksITB9fX0sIiNidG4tZm9sZHRndCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLm15LmZpbmQoIiNydGFyZ2V0IiksYz0iTXVsdGkiIT14LnRhc2smJmIuYXV0b2NvbXBsZXRlKCJ3aWRnZXQiKS5pcygiOnZpc2libGUiKTtyZXR1cm4gbnVsbCE9YSYmKGM/Yi5hdXRvY29tcGxldGUoImNsb3NlIik6Yi5hdXRvY29tcGxldGUoInNlYXJjaCIsIiIpLGM9IWMpLCc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+Jy5hc3NpZ24oYz8iYXVwIjoiYWRvd24iKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiEvXihTeW5jfENvcHkpJC8udGVzdCh4LnRhc2spfX19LCIjeHRjcmVkcyI6e2Nzczp7c2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubmVlZFRndENyZWRzKCl9fSx3YXRjaDpbIiNybW9kZSIsIiNydGFyZ2V0Il19LCIjcnRsb2dpbiI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnRndC51c2VyO3ZhciBiPXRoaXMuZGVjb2RlVG9rZW4oYSk7cmV0dXJuIDIhPWIubGVuZ3RofHx4LnRndC5wd2Q/eC50Z3QudXNlcj1hOih4LnRndC5wd2Q9YlsxXSx4LnRndC51c2VyPWJbMF0pfSxjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiFhJiZ4LnRndC5jcmVhdGUmJih0aGlzLmlzVVJMKHgudGd0LnVybCl8fCF0aGlzLkRCcy5maW5kKHgudGd0LnVybCkmJih0aGlzLmlzQ291Y2gyJiYheC5tb2RlLmZpbmQoIm9uY2UiKXx8eC5tb2RlLmZpbmQoImRvYyIpKSk/dGhpcy5sYW5nLkVSUl9VUkVRX0NUOiJfIj09KGF8fCIiKVswXT90aGlzLmxhbmcuRVJSX1VOT186IiJ9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubmVlZFRndENyZWRzKCl9fSx3YXRjaDpbIiNybW9kZSIsJ2lucHV0W25hbWU9InJ0Y3JlYXRlZGIiXScsIiNydGFyZ2V0Il19LCIjcnRwYXNzIjp7YmluZDoidGd0LnB3ZCIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC50Z3QudXNlciYmIWE/dGhpcy5sYW5nLkVSUl9OT1BXRDoiIn0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5uZWVkVGd0Q3JlZHMoKX19LHdhdGNoOlsiI3J0bG9naW4iXX0sIiNycHJlZml4Ijp7YmluZDoidGd0LnByZWZpeCIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiJNdWx0aSIhPXgudGFza319fSwnaW5wdXRbbmFtZT0icnRjcmVhdGVkYiJdJzp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybih4LnRndC5jcmVhdGU9bnVsbCE9YT8hIWEubGVuZ3RoOngudGd0LmNyZWF0ZSk/WyJjcmVhdGUiXTpbXX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4LnRndC51cmx8fCEhdGhpcy5EQnMuZmluZCh4LnRndC51cmwpfX0sd2F0Y2g6WyIjcnRhcmdldCJdfSwiI3h0bm9uemlwIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuInppcCI9PXgubW9kZX19LHdhdGNoOlsiI3Jtb2RlIl19LCIjcnR6aXBmaWxlIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiB4Lm1vZGUrIiIhPSJ6aXAiJiYoeC50Z3QuemlwZmlsZT0iIiksbnVsbD09YT94LnRndC56aXBmaWxlOih4LnRndC56aXBmaWxlPWEuY29tcGFjdCgpLGEpfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iemlwIiE9eC5tb2RlfHwheC5zcmMudXJsJiYheC5zcmMuZGJzLmxlbmd0aHx8ISF4LnNyYy56aXB9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIiwiI3J6aXBmaWxlIl19LCIjcnR1bnppcG9wdHMiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX1VOWklQT1BUKX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHgudGd0Lm9wdHM7dmFyIGI9eC50Z3Qub3B0cztyZXR1cm4geC50Z3Qub3B0cz1hLGIuZmluZCgiY3JlYXRlIikhPWEuZmluZCgiY3JlYXRlIikmJih0aGlzLlVuemlwVG89dGhpcy5VbnppcFRvLmNsb25lKCEwKSx0aGlzLm15LmZpbmQoIiNydHVuemlwZGJzIikuZmluZCgiaW5wdXQjdW56aXAtdGd0IikuZWFjaChmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigiYmx1ciIpfSkpLHgudGd0Lm9wdHN9LGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiJ6aXAiIT14Lm1vZGV8fCJDb3B5Ij09eC50YXNrfHwheC5zcmMuemlwfSxyZXN0b3JlZnJvbWpzb246ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5zcmMuanNvbn19LHdhdGNoOlsiI3Jtb2RlIiwiI3J6aXBkdW1wIl19LCIjcnR1bnppcGRicyI6e2JpbmQ6InRoaXMuVW56aXBUbyIsaW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGxpc3Q6JzxkaXYgY2xhc3M9IncxMDBwIGZzOTAgbXQzIGNiIj48L2Rpdj4nLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlVuemlwREJSb3d9LGNoZWNrOiEwLG1lcmdlOiExLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWUrIiAiK3RoaXMuZGF0YS50Z3Qub3B0c30saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLmNyYzIoeCx0aGlzLmRhdGEudGd0Lm9wdHMpfX0sIiN4cnR1bnppcGRicyI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iemlwIiE9eC5tb2RlfHwhdGhpcy5VbnppcFRvLmxlbmd0aH19LHdhdGNoOlsiI3J0dW56aXBkYnMiLCIjcm1vZGUiXX0sIiNydHppcHdhcm4iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9Yy5sYW5nLGU9W2QuTVNHX1pJUF9XQVJOXTtyZXR1cm4iemlwIiE9eC5tb2RlfHx4LnNyYy5qc29uP2IucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKTpiLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJoaWRlIiksYy5jYW5TdHJlYW18fGUucHVzaChkLk1TR19aSVBfQkxPQiksZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuJzxkaXYgY2xhc3M9Im10MiBtYjQiPicreCsiPC9kaXY+In0pfSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIiwiI3J6aXBmaWxlIiwiI3J6aXBkdW1wIl19fSxpc0J1Y2tldFVSTDpmdW5jdGlvbih4LGEpe3JldHVybiBhPy9eaHR0cFtzXT86XC9cL1teXC86XHNdKzpbXlwvOkBcc10rQFteXC9cc117Mix9KFwvW15cL1xzXSspK1tcL10/JC8udGVzdCh4KTovXmh0dHBbc10/OlwvXC9bXlwvXHNdezIsfShcL1teXC9cc10rKStbXC9dPyQvLnRlc3QoeCl9LGlzTG9jYWxEQjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLlBobygiQ291Y2giKS5wb3J0LGI9IiI7cmV0dXJuIHRoaXMuaXNVUkwoeCk/KHguaW5kZXhPZigibG9jYWxob3N0OiIrYSsiLyIpPi0xfHx4LmluZGV4T2YoIjEyNy4wLjAuMToiK2ErIi8iKT4tMSkmJihiPXguc3BsaXQoIj8iKVswXS5zcGxpdCgiLyIpLmNvbXBhY3QoITApLmxhc3QoKSk6Yj14LGJ9LGlzVVJMOmZ1bmN0aW9uKHgpe3JldHVybi9eaHR0cFtzXT86XC9cLy8udGVzdCh4KX0saXNWYWxpZFVSTDpmdW5jdGlvbih4KXt2YXIgYT0hMTt0cnl7YT1uZXcgVVJMKHgpfWNhdGNoKHgpe31yZXR1cm4gYX0sZGVjb2RlVG9rZW46ZnVuY3Rpb24oeCl7aWYoIXh8fCJzdHJpbmciIT10eXBlb2YgeClyZXR1cm5beF07aWYoKGE9eC5pbmRleE9mKCI6IikpPjApcmV0dXJuW3gudG8oYSkseC5mcm9tKGErMSldO3ZhciBhLGI9IiI7dHJ5e2I9ZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShhdG9iKHgpKSl9Y2F0Y2goeCl7fXJldHVybiBiJiYoYT1iLmluZGV4T2YoIjoiKSk+MD9bYi50byhhKSxiLmZyb20oYSsxKV06W3hdfSxmaXhIZWlnaHQ6ZnVuY3Rpb24oeCl7eC5oZWlnaHQoMCkuaGVpZ2h0KCh4WzBdLnNjcm9sbEhlaWdodC0xMCkuY2xhbXAoMTgsMTAwKSl9LGNsZWFuRGF0YTpmdW5jdGlvbih4KXt2YXIgYT10aGlzOyQuZXh0ZW5kKHgse2RvYzoiIixwdGFzazoiIixtb2RlOlsib25jZSJdfSksJC5leHRlbmQoeC5zcmMse3VybDoiIixkYnM6W10sdXNlcjoiIixwd2Q6IiIsdWN0eDpbXSxmaWx0ZXI6W10sZm46IiIsaWRzOltdLHNlbDp7fSxxdWVyeTp7fSx1bnByZWZpeDoiIix6aXA6ITEsb3B0czpbXX0pLCQuZXh0ZW5kKHgudGd0LHt1cmw6IiIsdXNlcjoiIixwd2Q6IiIsY3JlYXRlOiExLHByZWZpeDoiIixxOiIiLG46IiIsYWNsOiExLHppcGZpbGU6IiIsb3B0czpbImNyZWF0ZSJdfSksYS5teS5maW5kKCIjcnR6aXBmaWxlIikudmFsKG51bGwpLGEuVW56aXBUbz1bXSwhYS5Eb250U3RvcFVuemlwJiZhLlVuemlwU3RyZWFtLmFib3J0JiYoYS5VbnppcFN0cmVhbS5hYm9ydCgpLGEuVW56aXBTdHJlYW09e30pfSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLlNlbDJTY3JvbGwoeCwhMCksIlN5bmMiPT1hLmRhdGEudGFzayYmKHguZmluZCgiI3Jzb3VyY2UiKS5hdXRvY29tcGxldGUoImRlc3Ryb3kiKSx4LmZpbmQoIiNycHRhc2siKS5hdXRvY29tcGxldGUoImRlc3Ryb3kiKSksIk11bHRpIiE9YS5kYXRhLnRhc2smJnguZmluZCgiI3J0YXJnZXQiKS5hdXRvY29tcGxldGUoImRlc3Ryb3kiKSwhYS5Eb250U3RvcFVuemlwJiZhLlVuemlwU3RyZWFtLmFib3J0JiZhLlVuemlwU3RyZWFtLmFib3J0KCl9LHN0eWxlOnsiIHRleHRhcmVhIjoicmVzaXplOm5vbmU7d29yZC13cmFwOmJyZWFrLXdvcmQ7IiwiIC5teS1lcnJvci10aXAiOiJwYWRkaW5nOjAuMWVtIDAgMC4yZW0gMDsiLCIgLnVpLXdpZGdldCI6ImZvbnQtc2l6ZToxMDAlIiwiIC51aS1hdXRvY29tcGxldGUiOiJsaW5lLWhlaWdodDoxLjNlbTsgbWF4LWhlaWdodDoxOXZoOyBvdmVyZmxvdy15OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7IiwiIC53MTAwcC0yMCI6IndpZHRoOmNhbGMoMTAwJSAtIDIwcHgpOyIsIiAuYmZvbGQiOnsiIjoid2lkdGg6MjBweCFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO21hcmdpbjowLjFlbSAwIDAgLTIxcHg7IHotaW5kZXg6KzE7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgY29sb3IgMC4zczsgb3BhY2l0eTowLjY7IiwiOmhvdmVyIjoib3BhY2l0eTowLjk7In0sIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6MTA5cHg7IiwiLmhhc3ppcCAubm96aXAiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIiAuemlwb25seSI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiLmhhc3ppcCAuemlwb25seSI6ImRpc3BsYXk6aW5saW5lIWltcG9ydGFudDsiLCIgLm15LXJvdywgLm15LWdyb3VwIjoidHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMsIG1pbi1oZWlnaHQgMC4xcywgcGFkZGluZyAwLjA1czsgbWluLWhlaWdodDogMTVweDsgaGVpZ2h0OmF1dG87IiwiIC5zaGlkZSI6Im92ZXJmbG93OmhpZGRlbjsgbWluLWhlaWdodDowOyBoZWlnaHQ6MHB4OyBwYWRkaW5nLXRvcDowIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowIWltcG9ydGFudDsiLCIgdWwiOnsiLnVpLWF1dG9jb21wbGV0ZSI6Im1heC13aWR0aDpjYWxjKDEwMCUgLSAxMTVweCk7IiwiIGxpLnVpLW1lbnUtaXRlbSI6IndvcmQtYnJlYWs6IGJyZWFrLWFsbDsifSwiICNyemlwZHVtcGluZm8iOnsiIjoiaGVpZ2h0OjEwMHB4O21hcmdpbi10b3A6LTEwMHB4OyB0cmFuc2l0aW9uOnBhZGRpbmcgMC4ycywgaGVpZ2h0IDAuMnM7ZGlzcGxheTogZmxleDthbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsiLCIuaGFzRmlsZSI6ImhlaWdodDoyLjFlbTttYXJnaW4tdG9wOi0yLjFlbTsifSwiIC5yZXN0b3JlZnJvbWpzb24gLm5vanNvbiI6ImRpc3BsYXk6bm9uZTsifSxaaXBUZXN0ZXI6e3JlcXVpcmU6W3sid2luZG93LldyaXRhYmxlU3RyZWFtIjoibGliL3dlYnN0cmVhbXMuanMifSx7IndpbmRvdy5zdHJlYW1TYXZlciI6ImxpYi9zdHJlYW1zYXZlci5qcyIsIndpbmRvdy5mZmxhdGUiOiJsaWIvZmZsYXRlLmpzIn1dLGluaXQ6Wyc8ZGl2IGlkPSJ4LWR1bW15Ij48L2Rpdj4nXSx1aTp7IiN4LWR1bW15IjpmdW5jdGlvbigpe319fSxqc2V2YWw6ZnVuY3Rpb24ocyl7dmFyIHI7dHJ5e3I9ZXZhbCgiKCIrcysiKSIpfWNhdGNoKHgpe31yZXR1cm4gcn0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2lmKGEubGFuZ1tiLnRhc2tdJiYkLmV4dGVuZChhLmxhbmcsYS5sYW5nW2IudGFza10pLCJVbnppcERCUm93IER1bXBaaXAgVW5kdW1wIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oeCl7JC5leHRlbmQoYVt4XS5sYW5nLGEubGFuZ1t4XXx8e30pfSksYS5EQnM9T2JqZWN0LmtleXMoYS5QaG8oIkFsbCIpKS5zb3J0KCkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpLmFzc2lnbih7X3JlcGxpY2F0b3I6YS5QaG8oIlJlcGxpY2F0b3JEQiIpfSkpLGEuaXNDb3VjaDI9YS5QaG8oIkNvdWNoIikudmVyPj0iMDAyLiIsYi5kdW1wT25seSYmKGIubW9kZT1bInppcCJdKSxhLmNhblppcD1udWxsIT09YS5QaG8oImNhblppcCIpP2EuUGhvKCJjYW5aaXAiKToiZmV0Y2giaW4gd2luZG93JiYiVWludDhBcnJheSJpbiB3aW5kb3cmJiJCbG9iImluIHdpbmRvdyYmIk1hcCJpbiB3aW5kb3cmJm51bGwsYS5jYW5TdHJlYW09IXdpbmRvdy5zYWZhcmkmJiJzZXJ2aWNlV29ya2VyImluIG5hdmlnYXRvciwiQ29weSIhPWIudGFzayYmYi5zcmMub3B0cy5wdXNoKCJhY2wiKSwiZmFsc2UiPT1hLmNhblppcCYmYi5kdW1wT25seSlyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdChhLmxhbmcuRVJSX05PWklQKTtmdW5jdGlvbiBjKCl7eC5wYXJlbnQoKS5jc3MoImhlaWdodCIsImF1dG8iKX14LmZpbmQoInRleHRhcmVhIikuZWFjaChmdW5jdGlvbigpe3ZhciB4PSQodGhpcyk7eC5vbigiaW5wdXQubXksa2V5dXAubXkiLGZ1bmN0aW9uKCl7YS5maXhIZWlnaHQoeCl9KX0pLHgucGFyZW50KCkub24oImRyYWdzdG9wIixjKSx4LnRoZW4oZnVuY3Rpb24oKXt4LmZpbmQoInRleHRhcmVhIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigiaW5wdXQiKX0pLGEuU2VsMlNjcm9sbCh4LCEwKSwiU3luYyI9PWIudGFzayYmZnVuY3Rpb24oKXt4LmZpbmQoIiNyc291cmNlIikuYXV0b2NvbXBsZXRlKCJvcHRpb24iLCJtaW5MZW5ndGgiLDApfS5kZWJvdW5jZSgxMDApKCksL14oU3luY3xDb3B5KSQvLnRlc3QoYi50YXNrKSYmZnVuY3Rpb24oKXt4LmZpbmQoIiNydGFyZ2V0IikuYXV0b2NvbXBsZXRlKCJvcHRpb24iLCJtaW5MZW5ndGgiLDApfS5kZWJvdW5jZSgxMDApKCl9LmRlYm91bmNlKDIwKSkudGhlbihmdW5jdGlvbigpe3gucGFyZW50KCkudHJpZ2dlcigibGF5b3V0IiksYygpfS5kZWJvdW5jZSgxNTApKX0sSFRNTDpbe3JvdzoiMTAwJSIscm93Q3NzOiJteS1yb3cgcHQzIHBiMyBmczEwMCIsbGFiZWw6IjExNXB4IixsYWJlbENzczoibXktbGFiZWwgZGliIHZhdCBtdDkifSwnPGRpdiBjbGFzcz0iZnMxMzAgbWIyIGxoMTYwIGJvbGRlciBjbSI+JywnPHNwYW4gY2xhc3M9ImZpLWxpc3QgbzQwIGZzODUgbXIzIj48L3NwYW4+IDxzcGFuIGlkPSJydGl0bGUiPntUWFRfVElUTEV9PC9zcGFuPicsIjwvZGl2PiIsJzxmb3JtIGlkPSJ4cmNyZWF0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiPicsWyJ7TEJMX01PREV9IiwiZGl2I3Jtb2RlLmRpYi52YXQuZnMxMDUubGgxODAiXSwnPGRpdiBpZD0ieGRvY2lkIiBjbGFzcz0ibXktZ3JvdXAgc2hpZGUiPicsWyJ7TEJMX0lEfSIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzUwcCI+JywiaW5wI3Jkb2NpZC53MTAwcCIse3BsYzoie1BMQ19JRH0iLHNwZWxsY2hlY2s6ImZhbHNlIn0sIm1zZyIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzUwcCBwbDYiPicsImlucCNycHRhc2sudzEwMHAiLHtwbGM6IntQTENfUFRBU0t9IixzcGVsbGNoZWNrOiJmYWxzZSJ9LCI8L2Rpdj4iXSwiPC9kaXY+IiwnPGRpdiBpZD0ieHNvdXJjZSIgY2xhc3M9Im15LWdyb3VwIj4nLFsnPHNwYW4gY2xhc3M9ImJvbGRlciBmczEwNSI+e0xCTF9GUk9NfTwvc3Bhbj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHcxMDBwIj4nLCJ0eHQjcnNvdXJjZS53MTAwcC5mczEwMC5saDEzMCIse3BsYzoie1BMQ19GUk9NfSIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIiwiPC9kaXY+Iiwic3BuI2J0bi1mb2xkc3JjLnBzZXVkb2xpbmsudGRuLmJmb2xkLmRpYi52YXQiLHt0eHQ6IjxkaXY+4pa8PC9kaXY+In1dLCI8L2Rpdj4iLCc8ZGl2IGlkPSJ4emlwZHVtcCI+JyxbJzxzcGFuIGNsYXNzPSJib2xkZXIgZnMxMDUiPntMQkxfWklQRFVNUH08L3NwYW4+JywnPGlucHV0IGlkPSJyemlwZHVtcCIgdHlwZT0iZmlsZSIgYWNjZXB0PSIuemlwLCAuanNvbiwgYXBwbGljYXRpb24vemlwLCBhcHBsaWNhdGlvbi9qc29uIiBjbGFzcz0idzEwMHAgY3AgbzAiIHN0eWxlPSJoZWlnaHQ6Mi4xZW07IiBwbGFjZWhvbGRlcj0ie1RJUF9aSVBEVU1QfSI+JywnPGRpdiBpZD0icnppcGR1bXBpbmZvIiBjbGFzcz0idzEwMHAgYmctZ3JheTQgYnIyIHRyYW5zIj57UExDX1pJUERVTVB9PC9kaXY+J10sIjwvZGl2PiIsJzxkaXYgaWQ9Inhzc2hpbSIgY2xhc3M9ImhpZGUiPicsWyc8c3BhbiBjbGFzcz0iYm9sZGVyIGZzMTA1Ij57TEJMX0ZST019PC9zcGFuPicsImlucCNyc291cmNlcy53MTAwcC5mczExMC5saDE2MCIsIm1zZyJdLCc8ZGl2IGlkPSJ4c2NyZWRzIiBjbGFzcz0ibXktZ3JvdXAgc2hpZGUiPicsWyJ7TEJMX1NSQ19DUkVEU30iLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc1MHAiPicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgbXItMjAgemkxIHRhYyB3MjAgcHQzIHBsMiBvMzAiPjxzcGFuIGNsYXNzPSJmaS10b3JzbyI+PC9zcGFuPjwvZGl2PicsImlucCNyc2xvZ2luLncxMDBwLmZzOTUubGgxMzAucGwyMCIse3BsYzoie1BMQ19VTkFNRX0iLGF1dG9jb21wbGV0ZToib2ZmIixhdXRvY29ycmVjdDoib2ZmIixhdXRvY2FwaXRhbGl6ZToib2ZmIixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc1MHAgcGw2Ij4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IG1yLTIwIHppMSB0YWMgdzIwIHB0MyBwbDIgbzQwIj48c3BhbiBjbGFzcz0iZmkta2V5Ij48L3NwYW4+PC9kaXY+JywicHdkI3JzcGFzcy53MTAwcC5mczk1LmxoMTMwLnBsMjAiLHtwbGM6IntQTENfVVBXRH0iLGF1dG9jb21wbGV0ZToibmV3LXBhc3N3b3JkIn0sIm1zZyIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzEwMHAiPjxsYWJlbCBjbGFzcz0iZGliIG10MyB2YXQgY3AgZ3JheTEgbGgxNTAgbWIzIHcxMDBwIGZzOTUiPicsJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icnVzZXJDdHgiIHZhbHVlPSJfYWRtaW4iIGNsYXNzPSJtcjYgZnMxMTAgbGgxMDAiPicsIntUWFRfVUNUWH0iLCI8L2xhYmVsPjwvZGl2PiJdLCI8L2Rpdj4iLFsie0xCTF9VTlBSRUZJWH0iLCJpbnAjcnVucHJlZml4Lnc3NXAuZnM5NS5saDEzMCIse3BsYzoie1BMQ19VTlBSRUZJWH0iLHRpdGxlOiJ7VElQX1VOUFJFRklYfSJ9XSxbIntMQkxfRklMVEVSfSIsImRpdiNyZmlsdGVyLmRpYi52YXQubGgxNjAucHQyLnBiMiJdLFsie0xCTF9ET0NTfSIsInR4dCNyZG9jcy53MTAwcC5mczk1LmxoMTMwIix7cGxjOiJ7UExDX0RPQ1N9IixhdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIl0sWyJ7TEJMX1NFTH0iLCJ0eHQjcnNlbC53MTAwcC5mczk1LmxoMTMwIix7cGxjOiJ7UExDX1NFTH0iLGF1dG9jb21wbGV0ZToib2ZmIixhdXRvY29ycmVjdDoib2ZmIixhdXRvY2FwaXRhbGl6ZToib2ZmIixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciXSxbIntMQkxfRk59IiwiaW5wI3Jmbi53MTAwcC5mczk1LmxoMTMwIix7cGxjOiJ7UExDX0ZOfSIsYXV0b2NvbXBsZXRlOiJvZmYiLGF1dG9jb3JyZWN0OiJvZmYiLGF1dG9jYXBpdGFsaXplOiJvZmYiLHNwZWxsY2hlY2s6ImZhbHNlIn0sIm1zZyJdLFsie0xCTF9RUll9IiwidHh0I3JxdWVyeS53MTAwcC5mczk1LmxoMTMwIix7cGxjOiJ7UExDX1FSWX0iLGF1dG9jb21wbGV0ZToib2ZmIixhdXRvY29ycmVjdDoib2ZmIixhdXRvY2FwaXRhbGl6ZToib2ZmIixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciXSwnPGRpdiBjbGFzcz0idzEwMHAgaDEwIG10MTAgb2ggYnRkIj48L2Rpdj4nLCI8L2Rpdj4iLCc8ZGl2IGlkPSJ4dG5vbnppcCIgY2xhc3M9IncxMDBwIj4nLFsnPHNwYW4gY2xhc3M9ImJvbGRlciBmczEwNSI+e0xCTF9UT308L3NwYW4+JywnPGRpdiBjbGFzcz0iZGliIHZhdCB3MTAwcCI+JywidHh0I3J0YXJnZXQudzEwMHAuZnMxMDAubGgxMzAiLHtwbGM6IntQTENfVE99In0sIm1zZyIsIjwvZGl2PiIsInNwbiNidG4tZm9sZHRndC5wc2V1ZG9saW5rLnRkbi5iZm9sZC5kaWIudmF0Iix7dHh0OiI8ZGl2PuKWvDwvZGl2PiJ9XSwnPGRpdiBpZD0ieHRjcmVkcyIgY2xhc3M9Im15LWdyb3VwIHNoaWRlIj4nLFsie0xCTF9UR1RfQ1JFRFN9IiwnPGRpdiBjbGFzcz0iZGliIHZhdCB3NTBwIj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IG1yLTIwIHppMSB0YWMgdzIwIHB0MyBwbDIgbzMwIj48c3BhbiBjbGFzcz0iZmktdG9yc28iPjwvc3Bhbj48L2Rpdj4nLCJpbnAjcnRsb2dpbi53MTAwcC5mczk1LmxoMTMwLnBsMjAiLHtwbGM6IntQTENfVU5BTUV9IixhdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIiwiPC9kaXY+IiwnPGRpdiBjbGFzcz0iZGliIHZhdCB3NTBwIHBsNiI+JywnPGRpdiBjbGFzcz0iZGliIHZhdCBtci0yMCB6aTEgdGFjIHcyMCBwdDMgcGwyIG80MCI+PHNwYW4gY2xhc3M9ImZpLWtleSI+PC9zcGFuPjwvZGl2PicsInB3ZCNydHBhc3MudzEwMHAuZnM5NS5saDEzMC5wbDIwIix7cGxjOiJ7UExDX1VQV0R9IixhdXRvY29tcGxldGU6Im5ldy1wYXNzd29yZCJ9LCJtc2ciLCI8L2Rpdj4iXSwiPC9kaXY+IixbIntMQkxfUFJFRklYfSIsImlucCNycHJlZml4Lnc3NXAuZnM5NS5saDEzMCIse3BsYzoie1BMQ19QUkVGSVh9In1dLFsiICIsJzxsYWJlbCBjbGFzcz0iZGliIGNwIGdyYXkxIGxoMTIwIGZzOTUgdzUwcCI+JywnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJydGNyZWF0ZWRiIiB2YWx1ZT0iY3JlYXRlIiBjbGFzcz0ibXI2IGZzMTEwIj4nLCJ7VFhUX05FV1RHVH0iLCI8L2xhYmVsPiJdLCI8L2Rpdj4iLFsnPHNwYW4gY2xhc3M9ImJvbGRlciBmczEwNSI+e0xCTF9aSVBGSUxFfTwvc3Bhbj4nLCJpbnAjcnR6aXBmaWxlLncxMDBwLmZzMTAwLmxoMTMwIix7cGxjOiJ7UExDX1pJUEZJTEV9IixzcGVsbGNoZWNrOiJmYWxzZSJ9XSxbIntMQkxfWklQT1BUfSIsImRpdiNyemlwb3B0cy5kaWIudmF0LmxoMTYwLnB0Mi5wYjIiXSwnPGRpdiBpZD0ieHJ0dW56aXBkYnMiIGNsYXNzPSJtdC01IGhpZGUiPicsWyc8c3BhbiBjbGFzcz0iYm9sZGVyIGZzMTA1Ij57TEJMX1VOWklQREJTfTwvc3Bhbj4nLCc8ZGl2IGlkPSJydHVuemlwZGJzImNsYXNzPSJkaWIgdmF0IHcxMDBwIHBiNSBtYi01IiBzdHlsZT0ibWF4LWhlaWdodDoyMGVtOyI+PC9kaXY+J10sWyJ7TEJMX1VOWklQT1BUfSIsImRpdiNydHVuemlwb3B0cy5kaWIudmF0LmxoMTYwLnB0NS5wYjIiXSwiPC9kaXY+IixbIiAiLCc8ZGl2IGlkPSJydHppcHdhcm4iIGNsYXNzPSJkaWIgdmF0IHcxMDBwIGZzODUgbGgxMzAgbzgwIj48L2Rpdj4nXSwiPC9mb3JtPiIsJzxkaXYgY2xhc3M9Im10MTAgcHQxMyBidGQiPicsJzxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4tY2xlYXIiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0xFQVJ9PC9idXR0b24+PC9kaXY+JywnPGJ1dHRvbiBpZD0iYnRuLXN0YXJ0IiBjbGFzcz0iZ3JlZW4gbXIyIG1hcmtmb2N1cyI+e0JUTl9TVEFSVH08L2J1dHRvbj4nLCc8YnV0dG9uIGlkPSJidG4tY2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj4nLCI8L2Rpdj4iLCc8ZGl2IGlkPSJ6aXAtdGVzdGVyIiBjbGFzcz0iaGlkZSI+PC9kaXY+J10sVW56aXBEQlJvdzp7aWQ6ImN3LlBob3Rvbi5TeW5jVGFzay5VbnppcERCUm93Iixpbmhlcml0OlsiREJzIiwiUGhvIiwiVW56aXBPcHRzIl0sbGFuZzp7fSxkYXRhOntuYW1lOiIiLHRhcmdldDoiIixkb2NfY291bnQ6MCxyYXdfc2l6ZTowLHNlY3VyaXR5Om51bGx9LGluaXQ6ZnVuY3Rpb24oeCl7eC5odG1sKHRoaXMuSFRNTC5hc3NpZ24odGhpcy5sYW5nKSksdGhpcy5kYXRhLnRhcmdldD10aGlzLmRhdGEubmFtZSx0aGlzLkRCcz1jdy5saWIuYTJvKHRoaXMuREJzKX0sdWk6eyIjYnRuLXJlbW92ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYoMT09dGhpcy5teS5wYXJlbnQoKS5VbnppcFRvLmxlbmd0aD90aGlzLm15LnBhcmVudCgpLm15LmZpbmQoIiNidG4tY2FuY2VsIikudHJpZ2dlcigiY2xpY2subXkiKTp0aGlzLm15LnJlbW92ZSgpKX0sZXZlbnRzOlsiY2xpY2subXkiXX0sIiN1bnppcC1zcmMiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5VbnppcE9wdHMoKS5maW5kKCJjcmVhdGUiKSxjPXRoaXMuUGhvKFsiQWxsIix4LnRhcmdldF0pO3JldHVybic8c3BhbiBjbGFzcz0iZnMxMTUgYm9sZGVyIj57MX08L3NwYW4+IDxzcGFuIGNsYXNzPSJvNDAgZmktYXJyb3ctcmlnaHQgcGwyIj48L3NwYW4+IHsyfScuYXNzaWduKHgubmFtZS50cnVuY2F0ZSg0MCwibWlkZGxlIiwiLi4uIikuZXNjYXBlSFRNTCgpLGM/IiI6Yj8nPHNwYW4gY2xhc3M9InBsNCBwcjUgcHQxIHBiMiBiZy1ncmVlbjIgZnM5MCB3aGl0ZSBmdzYwMCBudyBicjIiPnsxfTwvc3Bhbj4nLmFzc2lnbih0aGlzLmxhbmcuTVNHX05FV0RCKTonPHNwYW4gY2xhc3M9InBsNCBwcjUgcHQxIHBiMiBiZy1yZWQyIGZzOTAgd2hpdGUgZnc2MDAgYnIyIj57MX08L3NwYW4+Jy5hc3NpZ24odGhpcy5sYW5nLk1TR19OT0RCKSl9LHdhdGNoOlsiI3VuemlwLXRndCJdfSwiI3VuemlwLXRndCI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4LmF1dG9jb21wbGV0ZSh7ZGVsYXk6MCxzb3VyY2U6T2JqZWN0LmtleXModGhpcy5EQnMpLnNvcnQoKSxzZWxlY3Q6KHg9PmEubXkuY2hlY2soIiN1bnppcC10Z3QiKSkuZGVib3VuY2UoMTApLGFwcGVuZFRvOmEubXkucm9vdCgpLnBhcmVudCgpLnBhcmVudCgpLG1pbkxlbmd0aDoxfSl9LGRlbGF5OjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgudGFyZ2V0PWEpLHgudGFyZ2V0fSxjaGVjazpmdW5jdGlvbih4LGEpe2lmKCJfdXNlcnMiIT1hJiYiX3JlcGxpY2F0b3IiIT1hKXtpZighL15bYS16MC05XyRcKFwpXCtcLVwvXSskLy50ZXN0KGEpKXJldHVybiB0aGlzLmxhbmcuRVJSX0RCQ0hBUlM7aWYoIS9eW2Etel0vLnRlc3QoYSkpcmV0dXJuIHRoaXMubGFuZy5FUlJfREIxQ0hBUn1pZighdGhpcy5VbnppcE9wdHMoKS5maW5kKCJjcmVhdGUiKSYmIXRoaXMuUGhvKFsiQWxsIixhXSkpcmV0dXJuIHRoaXMubGFuZy5FUlJfTk9EQn0sbGlzdGVuOntkYmxpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKGEpcmV0dXJuIGZ1bmN0aW9uKCl7Yi5teS5jaGVjaygiI3VuemlwLXRndCIpfS5kZWJvdW5jZSgyMDApKCksITB9fX0sIiN1bnppcC1pbmZvIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPU9iamVjdC5pc0FycmF5KHguZmlsdGVyKT94LmZpbHRlcjpbXSxjPWIubGVuZ3RoP2IubGVuZ3RoOnguZG9jX2NvdW50Kyh4LmRvY19kZWxfY291bnR8fDApLGQ9IiIsZT0iIjtpZihkPWIubGVuZ3RoPyJQYXJ0aWFsIGR1bXA6IHsxfSBkb2N7Mn0iLmFzc2lnbihiLmxlbmd0aCxiLmxlbmd0aD4xPyJzIjoiIik6InsxfSBkb2N7Mn0sIHszfSByYXciLmFzc2lnbihjPjFlMz9jLmFiYnIoMSkucmVwbGFjZSgibSIsIk0iKTpjLGM+MT8icyI6IiIseC5yYXdfc2l6ZS5ieXRlcygyKS5yZXBsYWNlKC9CJC8sImIiKSksbnVsbCE9eC5zZWN1cml0eSl7dmFyIGY9JC5leHRlbmQoITAse2FkbWluczp7bmFtZXM6W10scm9sZXM6W119LG1lbWJlcnM6e25hbWVzOltdLHJvbGVzOltdfX0seC5zZWN1cml0eSksZz1bZi5hZG1pbnMubmFtZXMsZi5hZG1pbnMucm9sZXMsZi5tZW1iZXJzLm5hbWVzLGYubWVtYmVycy5yb2xlc10uZmxhdHRlbigpLmxlbmd0aDtlPSc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+IHsyfSBBQ0wuICcuYXNzaWduKGc/ImZpLWxvY2sgZ3JlZW4xIjoiZmktdW5sb2NrIG9yYW5nZTEiLGc/IkhhcyI6IkVtcHR5Iil9cmV0dXJuIGUrZH19fSxIVE1MOic8ZGl2IGlkPSJidG4tcmVtb3ZlIiBjbGFzcz0iZnIgcDUgY3AgcmVkMSBsaDEwMCBtdDQiIHRpdGxlPSJ7VElQX1JFTU9WRX0iPuKclTwvZGl2PjxkaXYgY2xhc3M9Inc0MHAgZnIiPjxpbnB1dCBpZD0idW56aXAtdGd0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgbXQzIiBzcGVsbGNoZWNrPSJmYWxzZSIgcGxhY2Vob2xkZXI9IntQTENfVEdUfSI+PC9kaXY+PGRpdiBpZD0idW56aXAtc3JjIiBjbGFzcz0idzU1cCBsaDEzMCBwdDMgbWIzIHdiYSI+PC9kaXY+PGRpdiBpZD0idW56aXAtaW5mbyIgY2xhc3M9IncxMDBwIG1iMiBmczkwIGxoMTIwIG83MCI+PC9kaXY+J30scnVuWmlwOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPSJNdWx0aSI9PWMudGFzayxlPWIuRHVtcFppcCxmPShjLnRndC56aXBmaWxlLGQ/Yy5zcmMuZGJzLnVuaXF1ZSgpOltjLnNyYy51cmxdKSxnPShiLlBobygiQmFzZSIpLnJlcGxhY2UoL15odHRwW3NdPzpcL1wvLywiIikuc3BsaXQoIi8iKS5yZW1vdmVBdCgwKS5qb2luKCIvIikse2RiczpmLm1hcChmdW5jdGlvbih4KXtyZXR1cm57dXJsOngsZHJvcDpPYmplY3Quc2VsZWN0KGMuc3JjLFsiZmlsdGVyIiwiZm4iLCJpZHMiLCJxdWVyeSJdKX19KSxuYW1lOmMudGd0LnppcGZpbGUucmVwbGFjZSgvXC56aXAkL2ksIiIpfHwiZHVtcCIsb3B0czpjLnNyYy5vcHRzfSk7cmV0dXJuIHgubW9kYWwoe3Jvb3Q6YSxkYXRhOmcsbWFuaWZlc3Q6ZSxnbG9iYWw6ITEsY2xvc2U6ITEsZXNjOiExLGFsaWduOiJib3R0b206MTJweDtyaWdodDoyMHB4OyIsY3NzOiJwMTAgeGdyYXkiLGRyYWc6Ii5jbSIsd2lkdGg6NDUwfSkudGhlbihmdW5jdGlvbigpe30pLmZhaWwoZnVuY3Rpb24oeCl7Y29uc29sZS5sb2coeCksY3cubGliLm5vdGUoYi5sYW5nLkVSUl9aSVBfU1RSRUFNLCJlcnJvciIpfSl9LHJ1blVuZHVtcDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGEsZD0iTXVsdGkiPT1jLnRhc2ssZT0kLmV4dGVuZCghMCx7fSxiLlVuZHVtcCk7Yy50Z3QuemlwZmlsZSxkP2Muc3JjLmRicy51bmlxdWUoKTpjLnNyYy51cmw7Yi5VbnppcERCbWFwPXt9LGIuVW56aXBUby5mb3JFYWNoKGZ1bmN0aW9uKHgpe2IuVW56aXBEQm1hcFt4Lm5hbWVdPXgudGFyZ2V0fSksJC5leHRlbmQoZSxPYmplY3Quc2VsZWN0KGIsWyJVbnppcFN0cmVhbSIsIlVuemlwREJtYXAiXSkpO3ZhciBmPXtkb2NzVG9TYXZlOmIuZG9jc1RvU2F2ZSxkYnM6Yi5VbnppcFRvLm1hcChmdW5jdGlvbih4KXtyZXR1cm57c3JjOngubmFtZSxuYW1lOngudGFyZ2V0LGZpbHRlcjp4LmZpbHRlcix0b3RhbFNpemU6eC5yYXdfc2l6ZSx0b3RhbERvY3M6eC5jaHVua3NfY291bnR8fHguZG9jX2NvdW50Kyh4LmRvY19kZWxfY291bnR8fDApLHNlY3VyaXR5Onguc2VjdXJpdHksY2x1c3Rlcjp4LmNsdXN0ZXJ8fG51bGwscHJvcHM6eC5wcm9wc3x8bnVsbCxkb25lRG9jczowfX0pLG9wdHM6Yy50Z3Qub3B0c307cmV0dXJuIHgubW9kYWwoe3Jvb3Q6YSxkYXRhOmYsbWFuaWZlc3Q6ZSxnbG9iYWw6ITEsY2xvc2U6ITEsZXNjOiExLGFsaWduOiJib3R0b206MTJweDtyaWdodDoyMHB4OyIsY3NzOiJwMTAgeGdyYXkiLGRyYWc6Ii5jbSIsd2lkdGg6NDUwfSkudGhlbihmdW5jdGlvbih4KXt2YXIgYT14LnN0YXR1cztyZXR1cm4iYWJvcnRlZCI9PWE/Y3cubGliLm5vdGUoYi5sYW5nLkVSUl9VTlpJUF9BQlJULCJlcnJvciIsOGUzKToiZG9uZSI9PWE/Y3cubGliLm5vdGUoYi5sYW5nLk1TR19VTlpJUF9PSywib2siLDhlMyk6dm9pZCAwfSkuZmFpbChmdW5jdGlvbih4KXtiLlVuemlwU3RyZWFtLmFib3J0KCksY29uc29sZS5sb2coeCxmKSxjdy5saWIubm90ZShiLmxhbmcuRVJSX1VOWklQX0ZBSUwsImVycm9yIiw1ZTMpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5kb2NzVG9TYXZlPVtdfSl9LHN0YXJ0VW56aXBTdHJlYW06ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Yi5kYXRhLGQ9Yi5sYW5nLGU9JC5EZWZlcnJlZCgpLGY9ITEsZz0hMSxoPSExLGk9ITEsaj1bXSxrPW5ldyBVaW50OEFycmF5KCd7Im5ld19lZGl0cyI6ZmFsc2UsImRvY3MiOlsnLmNvZGVzKCkpLGw9bmV3IFVpbnQ4QXJyYXkoJ3sibmV3X2VkaXRzIjpmYWxzZSwiZG9jcyI6Jy5jb2RlcygpKSxtPW5ldyBVaW50OEFycmF5KCJdfSIuY29kZXMoKSksbj1uZXcgVWludDhBcnJheSgifSIuY29kZXMoKSksbz1uZXcgZmZsYXRlLlVuemlwKEYpO28ucmVnaXN0ZXIoZmZsYXRlLkFzeW5jVW56aXBJbmZsYXRlKTt2YXIgcD14LnN0cmVhbSgpLHE9W10scj1wLmdldFJlYWRlcigpLHM9Yi5kb2NzVG9TYXZlLHQ9MSx1PTAsdj0wLHc9ITE7Yi5pc1N0cmVhbWluZz0hMCxjLnNyYy56aXA9eC5uYW1lO3ZhciB5PSExLHo9c2V0SW50ZXJ2YWwoRCwxNyksQT1zZXRJbnRlcnZhbChCLDMpO3JldHVybiBlLnByb21pc2UoKTtmdW5jdGlvbiBCKCl7IWcmJnEubGVuZ3RoJiZxLnNoaWZ0KCkuc3RhcnQoKX1mdW5jdGlvbiBDKCl7dHJ5e2NsZWFySW50ZXJ2YWwoQSl9Y2F0Y2goeCl7fX1mdW5jdGlvbiBEKCl7Z3x8Znx8eXx8KHk9ITAsci5yZWFkKCkudGhlbihHKSl9ZnVuY3Rpb24gRSgpe3RyeXtjbGVhckludGVydmFsKHopfWNhdGNoKHgpe319ZnVuY3Rpb24gRih4KXtpZihnKXJldHVybiB4LnRlcm1pbmF0ZSgpO3ZhciBjPXgubmFtZSxkPS9cL19jb25mbGljdHNcLy8udGVzdChjKSxvPU0oYy5zcGxpdCgiLyIpWzBdKSxwPShiLlVuemlwREJtYXB8fHt9KVtvXSxyPVtdLHk9Il9pbmZvLmpzb24iPT1jO2lmKHl8fGMhPW8mJihudWxsPT09Yi5VbnppcERCbWFwfHxwKSYmL15bYS16MC05XyRcKFwpXCtcLVwvXStcLy4rXC5qc29uJC8udGVzdChNKGMpKSl7ci5wdXNoKGQ/bDprKTt2YXIgej17bmFtZTpjLHNyY2RiOm8sZGVzdGRiOnAsc2l6ZTowLHJlYWR5OiExLHNhdmVkOiExLGVycm9yczpbXSxyZXE6bnVsbH07dCs9MSx5fHwodSs9MSkseC5vbmRhdGE9ZnVuY3Rpb24oYSxiLGMpe2lmKGcpcmV0dXJuIHgudGVybWluYXRlKCk7YT9KKCgoYXx8InVua25vd24gZXJyb3IiKSsiIikudHJ1bmNhdGUoMTAwKSk6KGImJihyLnB1c2goYiksei5zaXplKz1iLmxlbmd0aCksYyYmQSgpKX0scS5wdXNoKHgpfWVsc2UgeC5vbmRhdGE9ZnVuY3Rpb24oKXtpZihnKXJldHVybiB4LnRlcm1pbmF0ZSgpfSxxLnB1c2goeCksdis9MTtmdW5jdGlvbiBBKCl7cmV0dXJuIGc/eC50ZXJtaW5hdGUoKToodC09MSx6LnJlYWR5PSEwLHIucHVzaChkP246bSkseSYmIXc/KEsoKSx3PSEwLGE9e2luZm86SlNPTi5wYXJzZShIKHIpKS5kb2NzWzBdLHBhdXNlOkssYWJvcnQ6Sixjb250aW51ZTpMLG5vdGlmeTpmdW5jdGlvbih4KXtqLnB1c2goeCl9LGdldFN0YXRzOmZ1bmN0aW9uKCl7cmV0dXJue2lzWmlwUmVhZDppLGZpbGVzOnUsZHJvcDp2fX0saXNQYXVzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0saXNBYm9ydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGd8fGh9LGlzRG9uZTpmdW5jdGlvbigpe3JldHVybiBofSxpc0FsbFJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX19LHI9dm9pZCAwLGUucmVzb2x2ZShhKSk6KHoucmVxPXt1cmw6IiIscHJvY2Vzc0RhdGE6ITEsbWV0aG9kOiJwb3N0IixkYXRhOm5ldyBCbG9iKHIpLGhlYWRlcnM6eyJDb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIixBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifX0scy5wdXNoKHopLEkoImRvYyIsei5zaXplKSwwPT10JiYoYi5pc1N0cmVhbWluZz0hMSxoPSEwLEUoKSxDKCkscy5wdXNoKG51bGwpLEkoImVuZGVkIiksZS5yZWplY3QoKSksdm9pZCAwKSl9fWZ1bmN0aW9uIEcoeCl7dmFyIGE9eC5kb25lLGI9eC52YWx1ZTthPyhvLnB1c2goYnx8bmV3IFVpbnQ4QXJyYXksITApLHQtPTEsaT0hMCxFKCksY29uc29sZS5sb2coZC5NU0dfVU5aSVBFTkQuYXNzaWduKHUsdikpLHd8fGUucmVqZWN0KGQuRVJSX1dST05HWklQKSk6by5wdXNoKGIpLHk9ITF9ZnVuY3Rpb24gSCh4KXt2YXIgYT1uZXcgVWludDhBcnJheSh4Lm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5sZW5ndGh9KS5zdW0oKSksYj0wO3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGM9eC5sZW5ndGg7YS5zZXQoeCxiKSxiKz1jfSksZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYSkpKX1mdW5jdGlvbiBJKHgsYil7YSYmai5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXRyeXthKHgsYil9Y2F0Y2goeCl7Y29uc29sZS5sb2coZC5FUlJfVU5aSVBOVEYseCl9fSl9ZnVuY3Rpb24gSih4KXtnPSEwLGg9ITAsYi5pc1N0cmVhbWluZz0hMSxiLmRvY3NUb1NhdmUubGVuZ3RoPTAsRSgpLEMoKSxyLmNhbmNlbCgpLnRoZW4oZnVuY3Rpb24oKXtyLnJlbGVhc2VMb2NrKCk7dHJ5e3AuY2FuY2VsKCl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9fSksY29uc29sZS5sb2coIlxuUmVhZGVyIGNhbmNlbGxlZFxuIisoeHx8IiIpKSx4JiZjdy5saWIubm90ZSh4LCIiLDZlMyl9ZnVuY3Rpb24gSygpe2Y9ITAsY29uc29sZS5sb2coZC5NU0dfUkVBRFBBVVNFRC5hc3NpZ24ocy5sZW5ndGgpKX1mdW5jdGlvbiBMKCl7Zj0hMSxjb25zb2xlLmxvZyhkLk1TR19SRUFEUkUpfWZ1bmN0aW9uIE0oeCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh4KX19LHN0YXJ0VW56aXBTeW5jOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPShiLmRhdGEsYi5sYW5nKSxkPWIuZG9jc1RvU2F2ZSxlPSQuRGVmZXJyZWQoKSxmPVtdLGc9ITEsaD0hMSxpPSExO3JldHVybiBiLmlzU3RyZWFtaW5nPSEwLHguYXJyYXlCdWZmZXIoKS50aGVuKGZ1bmN0aW9uKHgpe2ZmbGF0ZS51bnppcChuZXcgVWludDhBcnJheSh4KSxmdW5jdGlvbih4LGspe2QubGVuZ3RoPTAseD9jb25zb2xlLmxvZyh4KTpPYmplY3Qua2V5cyhrKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjLGU9aih4LnNwbGl0KCIvIilbMF0pLGw9Il9pbmZvLmpzb24iPT14O2lmKGx8fGooeCkhPWUmJi9eW2EtejAtOV8kXChcKVwrXC1cL10rXC8uK1wuanNvbiQvLnRlc3Qoaih4KSkpcmV0dXJuIGw/KGM9SlNPTi5wYXJzZShqKGVzY2FwZShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsa1t4XSkpKSksYT0kLmV4dGVuZChiLmNyZWF0ZUR1bW15U3RyZWFtKGMsZikse2Fib3J0OmZ1bmN0aW9uKCl7aD1pPSEwLGIuaXNTdHJlYW1pbmc9ITEsYi5kb2NzVG9TYXZlLmxlbmd0aD0wfSxnZXRTdGF0czpmdW5jdGlvbigpe3JldHVybntpc1ppcFJlYWQ6ITAsZmlsZXM6T2JqZWN0LnNpemUoayksZHJvcDowfX0saXNQYXVzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ30saXNBYm9ydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGh8fGl9LGlzRG9uZTpmdW5jdGlvbigpe3JldHVybiBpfX0pLHZvaWQgMCk6KGQucHVzaCh7bmFtZTp4LHNyY2RiOmUsZGVzdGRiOm51bGwsc2l6ZTprW3hdLmxlbmd0aCxyZWFkeTohMSxzYXZlZDohMSxlcnJvcnM6W10scmVxOntwcm9jZXNzRGF0YTohMSx1cmw6IiIsbWV0aG9kOiJwb3N0IixkYXRhOi9cL19jb25mbGljdHNcLy8udGVzdCh4KT9uZXcgQmxvYihbJ3sibmV3X2VkaXRzIjpmYWxzZSwiZG9jcyI6JyxrW3hdLCJ9Il0pOm5ldyBCbG9iKFsneyJuZXdfZWRpdHMiOmZhbHNlLCJkb2NzIjpbJyxrW3hdLCJdfSJdKSxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19fSksdm9pZCAwKX0pLGQucHVzaChudWxsKSxhP2UucmVzb2x2ZShhKTplLnJlamVjdCh4P3grIiI6Yy5FUlJfV1JPTkdaSVApfSl9KSxlLmFsd2F5cyhmdW5jdGlvbigpe2IuaXNTdHJlYW1pbmc9ITF9LmRlYm91bmNlKDIwKSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gaih4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHgpfX0sc3RhcnRVbmZlZWRTeW5jOmZ1bmN0aW9uKHgpe3ZhciBhLGI9T2JqZWN0LmlzT2JqZWN0LGM9T2JqZWN0LmlzQXJyYXksZD10aGlzLGU9ZC5kYXRhLGY9ZC5sYW5nLGc9ZC5kb2NzVG9TYXZlLGg9JC5EZWZlcnJlZCgpLGk9W10saj0wLGs9ITEsbD0hMSxtPSExO2QuaXNTdHJlYW1pbmc9ITA7dmFyIG49KHgubmFtZSsiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cLmpzb24kLywiIikucmVwbGFjZSgvW15hLXowLTlfJCgpK1wtXS9nLCItIik7cmV0dXJuIG49L15bYS16XS8udGVzdChuKT9uOiJkYi0iK24seC50ZXh0KCkudGhlbihmdW5jdGlvbih4KXtnLmxlbmd0aD0wO3ZhciBiPW8oeCk7YyhiKXx8aC5yZWplY3QoYiksYT0kLmV4dGVuZChkLmNyZWF0ZUR1bW15U3RyZWFtKG51bGwsaSkse2luZm86e3VzZXI6Y3cubWUoKSxkYXRlOkRhdGUuY3JlYXRlKCkudG9KU09OKCkscGhvdG9uOiIxLjI0LjAwIixjb3VjaDpkLlBobygiQ291Y2giKS52ZXJzaW9uLGhvc3Q6Il8iLGRiczpbe25hbWU6bixmaWx0ZXI6bnVsbCxzdGFydF9zZXE6MCxtYXhfc2VxOjFlMTAsdHM6RGF0ZS5ub3coKSxzZWN1cml0eTpudWxsLHJhd19zaXplOmosZG9jX2NvdW50OmIubGVuZ3RoLGRvY19kZWxfY291bnQ6MH1dfSxhYm9ydDpmdW5jdGlvbigpe2w9bT0hMCxkLmlzU3RyZWFtaW5nPSExLGQuZG9jc1RvU2F2ZS5sZW5ndGg9MH0sZ2V0U3RhdHM6ZnVuY3Rpb24oKXtyZXR1cm57aXNaaXBSZWFkOiEwLGZpbGVzOmIubGVuZ3RoLGRyb3A6MH19LGlzUGF1c2VkOmZ1bmN0aW9uKCl7cmV0dXJuIGt9LGlzQWJvcnRlZDpmdW5jdGlvbigpe3JldHVybiBsfHxtfSxpc0RvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbX19KSxoLnJlc29sdmUoYSl9KS5jYXRjaChmdW5jdGlvbih4KXtoLnJlamVjdCgiRmFpbCByZWFkaW5nIHNvdXJjZSBmaWxlOiAiK3gpfSksaC5wcm9taXNlKCk7ZnVuY3Rpb24gbyh4KXt2YXIgYSxkPVtdLGg9IiIsaT1udWxsLGs9MDtlLnRndC5vcHRzLmZpbmQoInhkZWwiKTt0cnl7YT1KU09OLnBhcnNlKHgpfWNhdGNoKHgpe3JldHVybiBmLkVSUl9KX0pTT059aWYoYihhKT9pPWEucmVzdWx0c3x8YS5yb3dzOmMoYSkmJihpPWEubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBiKHgpP3guX2lkP3tkb2M6eH06Yih4LmRvYykmJnguZG9jLl9pZD94OihrKz0xLHZvaWQgMCk6KGsrPTEsdm9pZCAwKX0pLmNvbXBhY3QoKSksIWMoaSl8fCFpLmxlbmd0aClyZXR1cm4gZi5FUlJfSl9GRUVEO2lmKGsmJmN3LmxpYi5ub3RlKGYuV0FSTl9OT1RET0MoayksIndhcm5pbmciLDM1MDApLGkuZm9yRWFjaChmdW5jdGlvbih4LGEpe2lmKCFoKXt2YXIgYz14LmRvYztpZighY3x8IWIoYyl8fCF4LmRvYy5faWQpcmV0dXJuIGg9Zi5FUlJfSl9GRUVEO3ZhciBlPWMuX2F0dGFjaG1lbnRzO2lmKGUpe2lmKCFiKGUpKXJldHVybiBoPWYuRVJSX0pfRkVFRDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKCFoKXt2YXIgYT1lW3hdO2EuY29udGVudF90eXBlJiZhLmRhdGF8fChoPWYuRVJSX0pfRklMRVMpfX0pfWh8fGQucHVzaCh7aWQ6Yy5faWQscmV2OmMuX3JldixkZWw6ISFjLl9kZWxldGVkLGJvZHk6SlNPTi5zdHJpbmdpZnkoT2JqZWN0LnNlbGVjdChjLC9eW15fXXxeXyhpZHxyZXZ8ZGVsZXRlZHxhdHRhY2htZW50cykvKSl9KX19KSxoKXJldHVybiBoO3ZhciBsPXtwcm9jZXNzRGF0YTohMSx1cmw6IiIsbWV0aG9kOiJwb3N0IixoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19O3JldHVybiBkLmZvckVhY2goZnVuY3Rpb24oeCxhKXt2YXIgYj14LmJvZHksYz0neyJuZXdfZWRpdHMiOicrIXgucmV2KycsImRvY3MiOlsnO2orPWIubGVuZ3RoLGcucHVzaCh7bmFtZToiX2NodW5rIithKyh4LmRlbD8iL19kZWxldGVkLyI6IiIpLHNyY2RiOm4sZGVzdGRiOm51bGwsc2l6ZTpiLmxlbmd0aCxyZWFkeTohMSxzYXZlZDohMSxlcnJvcnM6W10scmVxOiQuZXh0ZW5kKCEwLHtkYXRhOm5ldyBCbG9iKFtjLGIsIl19Il0pfSxsKX0pfSksZy5wdXNoKG51bGwpLGh8fGR9fSxjcmVhdGVEdW1teVN0cmVhbTpmdW5jdGlvbih4LGEpe3JldHVybiBjb25zb2xlLmxvZygiRHVtbXkgc3RyZWFtIikse2luZm86T2JqZWN0LmNsb25lKHgsITApLHBhdXNlOmZ1bmN0aW9uKCl7fSxjb250aW51ZTpmdW5jdGlvbigpe30sbm90aWZ5OmZ1bmN0aW9uKHgpe2EucHVzaCh4KX0saXNBbGxSZWFkOmZ1bmN0aW9uKCl7cmV0dXJuITB9fX0scnVuVGFza3M6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9Imh0dHA6Ly9sb2NhbGhvc3Q6Iit4LlBobygiQ291Y2giKS5wb3J0KyIvIixjPSJNdWx0aSI9PWEudGFzayxkPSEhYS5tb2RlLmZpbmQoImRvYyIpLGU9KGEubW9kZS5maW5kKCIyd2F5IiksISFhLm1vZGUuZmluZCgibGl2ZSIpKSxmPXguaXNDb3VjaDImJihlfHxkKSxnPSF4LmlzQ291Y2gyJiYhIWEuc3JjLnVjdHgubGVuZ3RoLGg9W10saT17fSxqPXtkb2M6IiIscHRhc2s6IiIsbW9kZTpbXSxzcmM6e2RiOiIiLHVybDoiIix1Y3R4OltdLGZpbHRlcjpbXSxmbjoiIixxdWVyeTp7fSxpZHM6W119LHRndDp7dXJsOiIiLGNyZWF0ZTohMSxhY2w6ITF9fTtjP2Euc3JjLmRicy51bmlxdWUoKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBiPSQuZXh0ZW5kKCEwLHt9LGosT2JqZWN0LnJlamVjdChhLCJ0YXNrcyIpKSxjPWEudGd0LnByZWZpeCsoeC5zdGFydHNXaXRoKGEuc3JjLnVucHJlZml4KT94LnJlcGxhY2UoYS5zcmMudW5wcmVmaXgsIiIpOngpO2Iuc3JjLmRiPXgsYi5zcmMudXJsPWY/bCh4LGIuc3JjLnVzZXIsYi5zcmMucHdkKTp4LGcmJihiLnVzZXJfY3R4PXtuYW1lOmN3Lm1lKCkscm9sZXM6YS5zcmMudWN0eC5zbGljZSgwKX0pLGIudGd0LnVybD1sKGIudGd0LnVybCsoIi8iPT1iLnRndC51cmwuc3Vic3RyKC0xKT8iIjoiLyIpK20oYyksYi50Z3QudXNlcixiLnRndC5wd2QpLGgucHVzaChiKX0pOihpPSQuZXh0ZW5kKCEwLHt9LGosT2JqZWN0LnJlamVjdChhLCJ0YXNrcyIpKSxnJiYheC5pc1VSTChhLnNyYy51cmwpJiYoaS51c2VyX2N0eD17bmFtZTpjdy5tZSgpLHJvbGVzOmEuc3JjLnVjdHguc2xpY2UoMCl9KSwoZnx8eC5pc1VSTChpLnNyYy51cmwpKSYmKGkuc3JjLnVybD1sKGkuc3JjLnVybCxpLnNyYy51c2VyLGkuc3JjLnB3ZCkpLChmfHx4LmlzVVJMKGkudGd0LnVybCl8fGkudGd0LnVzZXImJmkudGd0LnB3ZCkmJihpLnRndC51cmw9bChpLnRndC51cmwsaS50Z3QudXNlcixpLnRndC5wd2QpKSxoPVtpXSksYyYmY3cubGliLm5vdGUoeC5sYW5nLk1TR19TVEFSVElORyk7dmFyIGs9W107cmV0dXJuIGguZm9yRWFjaChmdW5jdGlvbihhLGIpe2sucHVzaChRLmRlbGF5KDErMTAwKmIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5ydW5UYXNrQ2hhaW4oYSxiLGgubGVuZ3RoPjEpfSkpfSksUS5hbGxTZXR0bGVkKGspO2Z1bmN0aW9uIGwoYSxjLGUpe3ZhciBmO2lmKHguaXNVUkwoYSkpZj1uZXcgVVJMKGEpO2Vsc2V7aWYoIShkfHxjfHx4LmlzQ291Y2gyKSlyZXR1cm4gYTtmPW5ldyBVUkwoYittKGEpKX1yZXR1cm4gYyYmKGYudXNlcm5hbWU9YyxmLnBhc3N3b3JkPWUpLGYrIiJ9ZnVuY3Rpb24gbSh4KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHgpfX0scnVuVGFza0NoYWluOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9Yy5sYW5nLGU9ZC5FUlJfSk9CLGY9T2JqZWN0LGc9Yy5QaG8oIlJlcGxpY2F0b3JEQiIpLGg9Y3cubGliLm5vdGUsaT1mLm1lcmdlKHtkb2M6IiIscHRhc2s6IiIsbW9kZTpbXSxzcmM6e2RiOiIiLHVybDoiIix1Y3R4OltdLGZpbHRlcjpbXSxmbjoiIixxdWVyeTp7fSxpZHM6W119LHRndDp7dXJsOiIiLGNyZWF0ZTohMSxhY2w6ITF9fSx4LCEwKSxqPWMuaXNMb2NhbERCKGkuc3JjLnVybCksaz1qLGw9KGMuaXNMb2NhbERCKGkudGd0LnVybCksISFpLm1vZGUuZmluZCgiZG9jIikpLG09ISFpLm1vZGUuZmluZCgibGl2ZSIpLG49ISFpLm1vZGUuZmluZCgiMndheSIpLG89IiIscD1bXSxxPSQuRGVmZXJyZWQoKSxyPSQuRGVmZXJyZWQoKTtyZXR1cm4gcS50aGVuKHMpLnRoZW4odCkudGhlbih1KS50aGVuKHYpLnRoZW4odykuZmFpbChmdW5jdGlvbigpe2goby5lc2NhcGVIVE1MKCksImVycm9yIiw1ZTMpLHIucmVqZWN0KDQ5OSxvKX0pLmFsd2F5cyhmdW5jdGlvbigpe3IucmVzb2x2ZSgpfSkscS5yZXNvbHZlLmRlYm91bmNlKDEpKCksci5wcm9taXNlKCk7ZnVuY3Rpb24gcygpe2lmKGope3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gYy5SZXEoeSh7dXJsOltrLCJfYWxsX2RvY3MiLHtzdGFydGtleToiX2Rlc2lnbi8iLGVuZGtleToiX2Rlc2lnbjAifV0sbWV0aG9kOiJHRVQifSkpLnRoZW4oZnVuY3Rpb24oYSl7YS5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCl7cC5wdXNoKHguaWQpfSkseC5yZXNvbHZlKCl9KS5mYWlsKGZ1bmN0aW9uKGEsYil7bz1lLlQuYXNzaWduKGUuR0VULGssYSxiKSx4LnJlamVjdChhLG8pfSkseC5wcm9taXNlKCl9fWZ1bmN0aW9uIHQoKXtpZihqJiZpLnNyYy5maWx0ZXIuZmluZCgvXngoZGVsfGRkb2N8Y29uZmxpY3QpJC8pKXt2YXIgeD0kLkRlZmVycmVkKCksYT1mLmNsb25lKGMuRGRvYywhMCk7cmV0dXJuIHAuZmluZChhLl9pZCk/Yy5SZXEoeSh7dXJsOltrLGEuX2lkXSxtZXRob2Q6IkdFVCJ9KSkudGhlbihmdW5jdGlvbihjKXtjLnZlcnNpb249PWEudmVyc2lvbj94LnJlc29sdmUoKTooYS5fcmV2PWMuX3JldixiKCkpfSkuZmFpbChkKTpiKCkseC5wcm9taXNlKCl9ZnVuY3Rpb24gYigpe2MuUmVxKHkoe3VybDpbayxhLl9pZF0sbWV0aG9kOiJQVVQiLGRhdGE6Y3cubGliLmpzb24oJC5leHRlbmQoYSx7c3RhbXA6RGF0ZS5ub3coKX0pKSxkYXRhVHlwZToidGV4dCJ9KSkudGhlbihmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkuZmFpbChkKX1mdW5jdGlvbiBkKGEsYil7bz1lLlQuYXNzaWduKGUuVVRJTFMsayxhLGIpLHgucmVqZWN0KGEsbyl9fWZ1bmN0aW9uIHUoKXtpZihpLm1vZGUuZmluZCgiMndheSIpJiZqJiZpLnNyYy5maWx0ZXIuZmluZCgvXihmbnx4ZGVsfHhkZG9jfHhjb25mbGljdCkkLykpe3ZhciB4PWMuRGRvYy5faWQ7aWYoaS5zcmMuZmlsdGVyLmZpbmQoImZuIikpe2lmKCFpLnNyYy5mbilyZXR1cm47eD0iX2Rlc2lnbi8iK2kuc3JjLmZuLnNwbGl0KCIvIilbMF19dmFyIGE9JC5EZWZlcnJlZCgpO3JldHVybiBjLlJlcSh5KHt1cmw6WyJfcmVwbGljYXRlIl0sbWV0aG9kOiJQT1NUIix0aW1lb3V0OjZlNCxkYXRhVHlwZToidGV4dCIsZGF0YTpKU09OLnN0cmluZ2lmeSh7c291cmNlOmkuc3JjLnVybCx0YXJnZXQ6aS50Z3QudXJsLGNvbnRpbnVvdXM6ITEsY3JlYXRlX3RhcmdldDohIWkudGd0LmNyZWF0ZSxkb2NfaWRzOlt4XX0pfSkpLnRoZW4oZnVuY3Rpb24oKXthLnJlc29sdmUoKX0pLmZhaWwoZnVuY3Rpb24oeCxiKXtoKGUuVC5hc3NpZ24oZS5GRERPQyxrLHgsYikrZS5DLCJ3YXJuaW5nIiksYS5yZXNvbHZlKCl9KSxhLnByb21pc2UoKX19ZnVuY3Rpb24gdigpe31mdW5jdGlvbiB3KCl7dmFyIHgsYT1bXSxqPXtzb3VyY2U6aS5zcmMudXJsLHRhcmdldDppLnRndC51cmwsY29udGludW91czohIWkubW9kZS5maW5kKCJsaXZlIiksY3JlYXRlX3RhcmdldDohIWkudGd0LmNyZWF0ZX07aS5zcmMuZmlsdGVyLmZpbmQoImZuIikmJmkuc3JjLmZuPyhqLmZpbHRlcj1pLnNyYy5mbixmLnNpemUoaS5zcmMucXVlcnkpJiYoai5xdWVyeV9wYXJhbXM9Zi5jbG9uZShpLnNyYy5xdWVyeSwhMCkpKTppLnNyYy5maWx0ZXIuZmluZCgiaWRzIik/ai5kb2NfaWRzPWYuY2xvbmUoaS5zcmMuaWRzLCEwKTppLnNyYy5maWx0ZXIuZmluZCgic2VsIikmJk9iamVjdC5zaXplKGkuc3JjLnNlbCk/ai5zZWxlY3Rvcj1mLmNsb25lKGkuc3JjLnNlbCwhMCk6KGE9aS5zcmMuZmlsdGVyLmZpbmRBbGwoL154KGRlbHxkZG9jfGNvbmZsaWN0KSQvKSkubGVuZ3RoJiYoai5maWx0ZXI9Yy5EZG9jLl9pZC5zcGxpdCgiLyIpWzFdKyIvZXhjbHVkZSIsai5xdWVyeV9wYXJhbXM9YS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4geFthXT0iVCIseH0se30pKTt2YXIgcD1pLnNyYy51cmwuc3BsaXQoIi8iKS5jb21wYWN0KCEwKS5sYXN0KCkuc3BsaXQoIj8iKVswXS5lc2NhcGVIVE1MKCkscT0kLkRlZmVycmVkKCk7cmV0dXJuIGwmJihqLl9pZD1pLmRvYysoYj8iOiAiK3A6IiIpKyhuPyIgKDEpIjoiIiksai5vd25lcj1jdy5tZSgpLGkucHRhc2smJihqLnBob3Rvbl90YXNrPWkucHRhc2srIiIpLGkudXNlcl9jdHgmJihqLnVzZXJfY3R4PU9iamVjdC5jbG9uZShpLnVzZXJfY3R4LCEwKSkpLGx8fG18fGgoZC5NU0dfU1RBUlQuYXNzaWduKHApKSxuJiYoeD0kLmV4dGVuZCghMCx7fSxqLHtzb3VyY2U6aS50Z3QudXJsLHRhcmdldDppLnNyYy51cmwsY3JlYXRlX3RhcmdldDohMX0pLGwmJih4Ll9pZD1pLmRvYysoYj8iOiAiK3A6IiIpKyIgKDIpIikpLHIoaikudGhlbihmdW5jdGlvbigpe3ZhciB4PWRbbD8iTVNHX09LX0RPQyI6bT8iTVNHX09LX0xJVkUiOiJNU0dfT0tfT05DRSJdO2goeC5hc3NpZ24ocCksIm9rIiksdChpLnRndC51cmwpLG4/US5kZWxheShqLmNyZWF0ZV90YXJnZXQ/NWUzOmw/MmUzOjEwMCkudGhlbihmdW5jdGlvbigpe3MoKS5hbHdheXMoZnVuY3Rpb24oKXtxLnJlc29sdmUoKX0pfSk6cS5yZXNvbHZlKCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSl7bz1lLlQuYXNzaWduKGUuVE8sayx4LGEpLHEucmVqZWN0KHgsbyl9KSxxLnByb21pc2UoKTtmdW5jdGlvbiByKHgpe3ZhciBhPXguX2lkLGI9e3VybDphP1tnLGFdOlsiX3JlcGxpY2F0ZSJdLG1ldGhvZDphPyJQVVQiOiJQT1NUIixkYXRhVHlwZToidGV4dCIsZGF0YTpKU09OLnN0cmluZ2lmeSh4KSx0aW1lb3V0OmF8fHguY29udGludW91cz8xZTQ6M2U1fTtyZXR1cm4gYy5SZXEoeShiKSl9ZnVuY3Rpb24gcygpe3JldHVybiByKHgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgeD1kWyhsPyJNU0dfT0tfRE9DIjptPyJNU0dfT0tfTElWRSI6Ik1TR19PS19PTkNFIikrIl9CQUNLIl07aCh4LmFzc2lnbihwKSwib2siKSx0KGkuc3JjLnVybCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSl7aChlLlQuYXNzaWduKGUuRlJPTSxrLHgsYSkrZS5DLCJ3YXJuaW5nIil9KX1mdW5jdGlvbiB0KHgpe3ZhciBhPWMuaXNMb2NhbERCKHgpOyFtJiZhJiYkLm15LnJhZGlvKCJkYmxpc3QiLFthXSksbCYmJC5teS5yYWRpbygiZGJsaXN0IixbZ10pfX1mdW5jdGlvbiB5KHgpe3JldHVybiAkLmV4dGVuZCghMCx7dXJsOltdLG1ldGhvZDoiIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sZGF0YVR5cGU6Impzb24iLHRpbWVvdXQ6MWU0fSx4KX19LG5lZWRUZ3RDcmVkczpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGF0YTtyZXR1cm4iTXVsdGkiIT14LnRhc2smJigiQ29weSI9PXgudGFzayYmIXRoaXMuaXNVUkwoeC50Z3QudXJsKXx8ISh4LnRndC5jcmVhdGUmJiF0aGlzLkRCcy5maW5kKHgudGd0LnVybCkmJih0aGlzLmlzQ291Y2gyfHx4Lm1vZGUuZmluZCgiZG9jIikpKSYmISh4Lm1vZGUuZmluZCgiZG9jIil8fHRoaXMuaXNVUkwoeC50Z3QudXJsKXx8eC5tb2RlLmZpbmQoImxpdmUiKSYmdGhpcy5pc0NvdWNoMikpfSxEdW1wWmlwOntpZDoiY3cuUGhvdG9uLkR1bXBaaXAiLHBhcmFtczp7cmVzdHlsZToyMDB9LERhdGFVcmxzOltdLGxhbmc6e30scmVxdWlyZTpbeyJ3aW5kb3cuV3JpdGFibGVTdHJlYW0iOiJsaWIvd2Vic3RyZWFtcy5qcyJ9LHsid2luZG93LnN0cmVhbVNhdmVyIjoibGliL3N0cmVhbXNhdmVyLmpzIiwid2luZG93LmZmbGF0ZSI6ImxpYi9mZmxhdGUuanMifV0sZGF0YTp7ZGJzOltdLG5hbWU6ImR1bXAiLHppcDpudWxsLHVybDoiIixvcHRzOltdLGJ5dGVzOjAsemJ5dGVzOjAsZG9uZTohMSxzdGF0dXM6InJlYWR5IixtYXhSZWFkU3RyZWFtczo0LG1heEZlZWRDaHVuazoyMDk3MTUyLG1pbkZlZWREb2NzOjE1LG1heEZlZWREb2NzOjEwMCxtYXhSZXN0YXJ0czozfSxEQnM6e30sU3RhbXA6MCxEb2NMaXN0OltdLERCc1JlYWRDdHI6MCxTdHJlYW06e2Fib3J0OmZ1bmN0aW9uKCl7fX0sSW5mb0RvYzp7fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7cmV0dXJuIHguaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLHgudGhlbihmdW5jdGlvbigpe2EuU3RyZWFtPWEuU3RyZWFtRG9jcygpLGIuc3RhdHVzPSJzdHJlYW1pbmcifS5kZWJvdW5jZSg1MCkpLGEuUmVhZERCc0luZm8oKS50aGVuKGZ1bmN0aW9uKCl7YS5TdGFtcD1EYXRlLm5vdygpfSl9LHVpOnsiI2RiLXJvd3MiOntiaW5kOiJkYnMiLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmRhdGE7YS5uaWNlU2Nyb2xsKHgpfSxsaXN0Oic8ZGl2IGNsYXNzPSJtdDUgcHQ1IHBiNSBiYmQiPjwvZGl2PicsbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuREJSb3d9LGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4LnVybH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oW3gudG90YWxEb2NzKyIiLHgudG90YWxTaXplKyIiXSl9fSwiI2J5dGVzIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmJ5dGVzP3RoaXMuQnl0ZXNULmFzc2lnbih4LmJ5dGVzLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYiIpLHguZG9uZT8iZmktY2hlY2sgbzcwIGdyZWVuIGZzODAiOiJmaS1hcnJvdy1yaWdodCBvNTAgeGdyYXkgZnM4MCIseC56Ynl0ZXMuYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIikpOiIifSwiI3N0cmVhbS1zcGVlZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0oRGF0ZS5ub3coKS10aGlzLlN0YW1wKzEpLzFlMyxjPSg4KnguYnl0ZXMvYnwwKS5jbGFtcCgwLDFlOSk7cmV0dXJuIGM/Yy5ieXRlcygxKS5yZXBsYWNlKC9CJC8sImJpdC9zIik6IiJ9LHdhdGNoOlsiI2J5dGVzIl19LCIjYnRuLXN0b3AiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5TdHJlYW0uYWJvcnQoKX19fSxzdHlsZTp7IiAiOmZ1bmN0aW9uKHgpe3JldHVybiJzdHJlYW1pbmciPT10aGlzLmRhdGEuc3RhdHVzJiZ4LnRyaWdnZXIoImxheW91dCIpLCJmb250LXNpemU6MTVweDsgbGluZS1oZWlnaHQ6MS40ZW07In19LEhUTUw6JzxkaXYgY2xhc3M9ImZzMTMwIGZ3NDAwIGNtIj48c3BhbiBjbGFzcz0iZmktbGlzdCBvNDAgZnM4NSBtcjMiPjwvc3Bhbj4ge1RYVF9USVRMRX08L2Rpdj48ZGl2IGlkPSJkYi1yb3dzIiBjbGFzcz0ibXQxMCBidGQgbWIxMCIgc3R5bGU9Im1heC1oZWlnaHQ6NTAwcHg7Ij48L2Rpdj48ZGl2PjxkaXYgaWQ9InN0cmVhbS1zcGVlZCIgY2xhc3M9IncyNXAgbzUwIGZyIHRhciBtdDUiPjwvZGl2PjxkaXYgaWQ9ImJ5dGVzIiBjbGFzcz0iZnIgdzQ1cCBtdDUgbzcwIj48L2Rpdj48YnV0dG9uIGlkPSJidG4tc3RvcCIgY2xhc3M9Im1yNSI+e0JUTl9BQk9SVH08L2J1dHRvbj48L2Rpdj4nLEJ5dGVzVDonPHNwYW4gY2xhc3M9ImRpYiB3NDVwIHRhciI+ezF9PC9zcGFuPjxzcGFuIGNsYXNzPSJkaWIgdzEwcCB0YWMgezJ9Ij48L3NwYW4+PHNwYW4gY2xhc3M9ImRpYiB3NDVwIHRhbCI+ezN9PC9zcGFuPicsZGllOmZ1bmN0aW9uKHgpe3RoaXMuRGF0YVVybHMuZm9yRWFjaChmdW5jdGlvbih4KXtVUkwucmV2b2tlT2JqZWN0VVJMKHgpfSl9LFJlYWREQnNJbmZvOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPWEub3B0c3x8W107cmV0dXJuIHguREJzUmVhZEN0cj1hLmRicy5sZW5ndGgsUS5hbGwoYS5kYnMubWFwKGZ1bmN0aW9uKGEpe3ZhciBkPS9eKGh0dHBbc10/OlwvXC98XC8pLy50ZXN0KGEudXJsKT9hLnVybC5zcGxpdCgiLyIpLmNvbXBhY3QoITApLmxhc3QoKTphLnVybCxlPWEuZHJvcC5maWx0ZXJ8fFtdLGY9ZS5maW5kKCJpZHMiKSYmYS5kcm9wLmlkc3x8W10sZz0vXihodHRwW3NdPzpcL1wvfFwvKS8udGVzdChhLnVybCk/YS51cmw6Ii8iK2MoYS51cmwpLGg9ISFlLmZpbmQoInhkZWwiKTtyZXR1cm4geC5SZXEoZykudGhlbihmdW5jdGlvbihjKXt2YXIgZT0oYy5kb2NfY291bnR8fDApKyhoPzA6Yy5kb2NfZGVsX2NvdW50fHwwKSxnPShjLnNpemVzP2Muc2l6ZXMuYWN0aXZlOmMuZGF0YV9zaXplKXx8MDthLnRvdGFsU2l6ZT1nLGEudG90YWxEb2NzPWUsYS5tYXhTZXE9Yy51cGRhdGVfc2VxPysoYy51cGRhdGVfc2VxKyIiKS5zcGxpdCgiLSIpWzBdOi0xO3ZhciBpPVsiZG9jX2NvdW50Il07aHx8aS5wdXNoKCJkb2NfZGVsX2NvdW50IiksYi5maW5kKCJxbnAiKSYmaS5wdXNoKCJwcm9wcyIsImNsdXN0ZXIiKSx4LkluZm9Eb2NbZF09JC5leHRlbmQoITAse25hbWU6ZCxmaWx0ZXI6Zi5sZW5ndGg/ZjpudWxsLHN0YXJ0X3NlcTowLG1heF9zZXE6YS5tYXhTZXEsdHM6RGF0ZS5ub3coKSxzZWN1cml0eTpudWxsLHJhd19zaXplOmcsZG9jX2NvdW50OjAsZG9jX2RlbF9jb3VudDowfSxPYmplY3Quc2VsZWN0KGMsaSkpfSkudGhlbihmdW5jdGlvbigpe2lmKGIuZmluZCgiYWNsIikpe3ZhciBhPSQuRGVmZXJyZWQoKTtyZXR1cm4geC5SZXEoZysiL19zZWN1cml0eSIpLnRoZW4oZnVuY3Rpb24oYil7T2JqZWN0LmlzT2JqZWN0KGIpJiYoeC5JbmZvRG9jW2RdLnNlY3VyaXR5PWIpLGEucmVzb2x2ZSgpfSkuZmFpbChmdW5jdGlvbigpe2EucmVzb2x2ZSgpfSksYS5wcm9taXNlKCl9fSkuZmFpbChmdW5jdGlvbigpe2N3LmxpYi5ub3RlKHgubGFuZy5FUlJfREJfUkVBRC5hc3NpZ24oZCksImVycm9yIil9KX0pKTtmdW5jdGlvbiBjKHgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoeCl9fSxTdHJlYW1Eb2NzOmZ1bmN0aW9uKCl7dmFyIHgsYSxiPXRoaXMsYz1iLmRhdGEsZD17fSxlPXt9LGY9W10sZz1bXSxoPWMubWF4UmVhZFN0cmVhbXMsaT1jLm1heFJlc3RhcnRzfHwzLGo9ITAsaz0hMSxsPSIvIitiLlBobygiQmFzZSIpLnJlcGxhY2UoL15odHRwW3NdPzpcL1wvLywiIikuc3BsaXQoIi8iKS5yZW1vdmVBdCgwKS5qb2luKCIvIiksbT1CLnRocm90dGxlKDI1MCksbj0iezF9L3syfT9yZXY9ezN9JmF0dGFjaG1lbnRzPXRydWUiLG89InsxfS97Mn0/YXR0YWNobWVudHM9dHJ1ZSIscD0iezF9L3syfT9vcGVuX3JldnM9ezN9JmF0dGFjaG1lbnRzPXRydWUiOyJUZXh0RW5jb2RlciJpbiB3aW5kb3c/KHg9bmV3IFRleHRFbmNvZGVyLGE9ZnVuY3Rpb24oYSl7cmV0dXJuIHguZW5jb2RlKGEpfSk6YT1mdW5jdGlvbih4KXtyZXR1cm4gZmZsYXRlLnN0clRvVTgoeCl9O3ZhciBxLHI9bmV3IGZmbGF0ZS5aaXAscz1zdHJlYW1TYXZlci5jcmVhdGVXcml0ZVN0cmVhbShjLm5hbWUrIi56aXAiLHtwYXRobmFtZToiL19zdHJlYW0vIitjLm5hbWUrIi56aXAiLHNpZ25hbDp0fSkuZ2V0V3JpdGVyKCk7cmV0dXJuIHIub25kYXRhPWZ1bmN0aW9uKHgsYSxiKXt4P0QoIkZhaWxlZCB6aXBwaW5nOiAiKygoeHx8InVua25vd24gZXJyb3IiKSsiIikudHJ1bmNhdGUoMTAwKSk6KGEmJmEubGVuZ3RoJiYocy53cml0ZShhKSxjLnpieXRlcys9YS5sZW5ndGgpLGImJihrP0QoIkFib3J0ZWQiKTpDKCkpKX0scT1iLlBobyx1KCJfaW5mby5qc29uIixhKEpTT04uc3RyaW5naWZ5KHt1c2VyOmN3Lm1lKCksZGF0ZToobmV3IERhdGUpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXC5cZCsvLCIiKSxwaG90b246cSgiVmVyc2lvbiIpKyIuIitxKCJidWlsZCIpLGNvdWNoOnEoWyJDb3VjaCIsInZlcnNpb24iXSksaG9zdDpjdy5saWIuY3JjMih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpLGRiczpPYmplY3QudmFsdWVzKGIuSW5mb0RvYyl9LG51bGwsIiAgIikpKSxjLmRicy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2IuREJzW3gudXJsXT14LE9iamVjdC5pc0FycmF5KHguZHJvcC5pZHMpJiZ4LmRyb3AuaWRzLmxlbmd0aD8oeC5kcm9wLmlkcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3YoeC51cmwse2lkOmEsZG9jOm51bGwscmV2czpbXX0pfSksYi5EQnNSZWFkQ3RyLT0xLGcucHVzaChudWxsKSk6Yi5QcmVwYXJlRG9jTGlzdCh4LHYpLnRoZW4oZnVuY3Rpb24oYSl7RSgiREI6IHsxfSwgZG9jczoge2RvY3N9LCBzZXE6IHtzZXF9Ii5hc3NpZ24oYSkuYXNzaWduKHgudXJsLnNwbGl0KCIvIikubGFzdCgpKSksYi5EQnNSZWFkQ3RyfHxnLnB1c2gobnVsbCkseigpfSkuZmFpbChmdW5jdGlvbigpe0QoYi5sYW5nLkVSUl9ET0NMSVNUKX0pfSkse2Fib3J0OmZ1bmN0aW9uKHgpe2s9ITAsRCh4fHxiLmxhbmcuTVNHX1RFUk1CWVUpfX07ZnVuY3Rpb24gdCh4KXsidXNlciBhYm9ydGVkIj09eCYmRCgiVXNlciBhYm9ydGVkIil9ZnVuY3Rpb24gdSh4LGEpe3ZhciBiLGM9YS5ieXRlTGVuZ3RoO2I9YzwxMjg/bmV3IGZmbGF0ZS5aaXBQYXNzVGhyb3VnaCh4KTpjPDE2Mzg0P25ldyBmZmxhdGUuWmlwRGVmbGF0ZSh4KTpuZXcgZmZsYXRlLkFzeW5jWmlwRGVmbGF0ZSh4KSxyLmFkZChiKSxiLnB1c2goYSwhMCl9ZnVuY3Rpb24gdih4LGEpe3ZhciBiPS9eKGh0dHBbc10/OlwvXC98XC8pLy50ZXN0KHgpLGM9YS5pZCxkPWEucmV2O3JldHVybiBhLnJldnMubGVuZ3RoJiZnLnB1c2goe2RiOngsaWQ6YyxuYW1lOlt5KGI/eC5zcGxpdCgiLyIpLmNvbXBhY3QoITApLmxhc3QoKTp4KSsiLyIsIl9jb25mbGljdHMvIix5KGMsITApKyIuanNvbiJdLmpvaW4oIiIpLHVybDpwLmFzc2lnbihiP3g6bCt3KHgpLHcoYyksdyhKU09OLnN0cmluZ2lmeShhLnJldnMpKSksb3B0czp7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19LGlzUmV2czohMH0pLGcucHVzaCh7ZGI6eCxpZDpjLG5hbWU6W3koYj94LnNwbGl0KCIvIikuY29tcGFjdCghMCkubGFzdCgpOngpKyIvIixhLmRlbD8iX2RlbGV0ZWQvIjoiIix5KGMsYS5kZWwpKyIuanNvbiJdLmpvaW4oIiIpLGRvYzphLmRvYyx1cmw6KGQ/bjpvKS5hc3NpZ24oYj94Omwrdyh4KSx3KGMpLGQpLG9wdHM6e2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9fX0pLHooKSxrfWZ1bmN0aW9uIHcoeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX1mdW5jdGlvbiB5KHgsYSl7dmFyIGI9IWEmJi9eX2Rlc2lnblwvLy50ZXN0KHgpO3JldHVybihiPyJfZGVzaWduLyI6IiIpKyhiP3guc3Vic3RyKDgpOngpLnJlcGxhY2UoL1siXC86JTw+XD9cXFx8XS9nLHcpLnJlcGxhY2UoL1wqL2csIiUyQSIpfWZ1bmN0aW9uIHooKXtpZighaylmb3IodmFyIHg9e307T2JqZWN0LnNpemUoZCk8aCYmZy5sZW5ndGgmJm51bGwhPT14OyludWxsPT09KHg9Zy5zaGlmdCgpKT8wPT1PYmplY3Quc2l6ZShkKT9yLmVuZCgpOmcucHVzaChudWxsKTpkW3gubmFtZV09QSh4KX1mdW5jdGlvbiBBKHgpe2lmKGspcmV0dXJuICQuRGVmZXJyZWQoKS5yZWplY3QoKTt2YXIgaD0kLkRlZmVycmVkKCk7cmV0dXJuIG51bGwhPXguZG9jP2wuZGVsYXkoMCx4LmRvYyk6ZmV0Y2goeC51cmwseC5vcHRzKS50aGVuKGZ1bmN0aW9uKGEpe2lmKGEub2spcmV0dXJuIHguaXNSZXZzP2EuanNvbigpOmEuYXJyYXlCdWZmZXIoKTs0MDQ9PWEuc3RhdHVzPyhiLkRCc1t4LmRiXS5kb25lRG9jcys9MSxmLnB1c2goeC51cmwpLGZ1bmN0aW9uKCl7aC5yZXNvbHZlKCl9LmRlYm91bmNlKDUwKSgpKTooZVt4LnVybF09KGVbeC51cmxdfHxbXSkucHVzaChbYS5zdGF0dXMsRGF0ZS5ub3coKV0uam9pbigiICIpKSxlW3gudXJsXS5sZW5ndGg8aT9udWxsPT09Zy5sYXN0KCk/KGcucG9wKCksZy5wdXNoKHgsbnVsbCkpOmcucHVzaCh4LG51bGwpOmo/RChiLmxhbmcuRVJSX0ZJTEVSRUFELmFzc2lnbih4LnVybC5lc2NhcGVIVE1MKCkpKTooYi5EQnNbeC5kYl0uZG9uZURvY3MrPTEsZnVuY3Rpb24oKXtoLnJlc29sdmUoKX0uZGVib3VuY2UoNTApKCkpKX0pLnRoZW4obCkuY2F0Y2goZnVuY3Rpb24oKXtFKCJGYWlsZWQgcmVhZGluZyAiK3guaWQpLGgucmVqZWN0KGIubGFuZy5FUlJfRklMRVJFLmFzc2lnbih4LmlkKSl9KSxoLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBkW3gubmFtZV0seigpfSksaC5wcm9taXNlKCk7ZnVuY3Rpb24gbChkKXt2YXIgZj0hMDtpZihkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpYy5ieXRlcys9ZC5ieXRlTGVuZ3RoLHUoeC5uYW1lLG5ldyBVaW50OEFycmF5KGQpKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZCl7dmFyIGc9YShkKTtjLmJ5dGVzKz1nLmJ5dGVMZW5ndGgsdSh4Lm5hbWUsZyl9ZWxzZSBPYmplY3QuaXNBcnJheShkKSYmKGY9ITEsdSh4Lm5hbWUsYSgiW1xuIitkLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoeC5vayl9KS5qb2luKCIsXG4iKSsiXG5dIikpKTtFKCJEb25lICIreC5kYisiLyIreC5uYW1lKSxoLnJlc29sdmUoKSxmJiYoYi5EQnNbeC5kYl0uZG9uZURvY3MrPTEpLGRlbGV0ZSBlW3gudXJsXSxtKCl9fWZ1bmN0aW9uIEIoKXtiLm15LmNoZWNrKCIjYnl0ZXMiKSwkLm15LnJhZGlvKCJkYlN0cmVhbVVwZGF0ZSIse30pfWZ1bmN0aW9uIEMoKXtFKCJEb25lIiksYy5kb25lPSEwLHMuY2xvc2UoKSxCKCksY3cubGliLm5vdGUoJzxzcGFuIGNsYXNzPSJmdzQwMCI+ezF9PC9zcGFuPicuYXNzaWduKGIubGFuZy5NU0dfRFVNUERPTkUpLCJvayIsNWUzKSxmdW5jdGlvbigpe2IubXkuY29tbWl0KCl9LmRlbGF5KDNlMyl9ZnVuY3Rpb24gRCh4KXtpZihjLmRvbmUpcmV0dXJuIGIubXkuY29tbWl0KCk7az0hMCxjdy5saWIubm90ZSh4LCJlcnJvciIsNmUzKSxzLmFib3J0KCksci50ZXJtaW5hdGUoKSxjLmVycm9yPXgsYi5teS5jb21taXQoKX1mdW5jdGlvbiBFKHgsYSxjKXtiLl9kZWJ1ZyYmY29uc29sZS5sb2coeCxhLGMpfX0sUHJlcGFyZURvY0xpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj0kLkRlZmVycmVkKCksYz10aGlzLGQ9Yy5kYXRhLGU9ZC5tYXhGZWVkQ2h1bmssZj14LnRvdGFsU2l6ZSYmeC50b3RhbERvY3M/eC50b3RhbFNpemUveC50b3RhbERvY3N8MDowLGc9IShmJiYhKGY+ZS9kLm1pbkZlZWREb2NzKSksaD0oZz9kLm1heEZlZWREb2NzOk1hdGguY2VpbChlL2YpKS5jbGFtcChkLm1pbkZlZWREb2NzLGQubWF4RmVlZERvY3MpLGk9ZC5tYXhSZXN0YXJ0c3x8MyxqPXguc2luY2V8fDAsaz0hISh4LmRyb3AuZmlsdGVyfHxbXSkuZmluZCgieGRkb2MiKSxsPSEhKHguZHJvcC5maWx0ZXJ8fFtdKS5maW5kKCJ4ZGVsIiksbT0hISh4LmRyb3AuZmlsdGVyfHxbXSkuZmluZCgieHJldnMiKSxuPVsvXihodHRwW3NdPzpcL1wvfFwvKS8udGVzdCh4LnVybCk/eC51cmw6Ii8iK3EoeC51cmwpLCIvX2NoYW5nZXM/c2luY2U9ezF9IixtPyIiOiImc3R5bGU9YWxsX2RvY3MiLGc/IiI6IiZpbmNsdWRlX2RvY3M9dHJ1ZSZhdHRhY2htZW50cz10cnVlIiwiJmxpbWl0PSIraF0uam9pbigiIiksbz1zLmRlYm91bmNlKDFlMykscD0wO3JldHVybiByKCksYi5wcm9taXNlKCk7ZnVuY3Rpb24gcSh4KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHgpfWZ1bmN0aW9uIHIoKXtjLlJlcShuLmFzc2lnbihqKSkudGhlbihmdW5jdGlvbihkKXtqPWQubGFzdF9zZXE7dmFyIGU9KGQucmVzdWx0c3x8W10pLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4hdChhLnNlcSx4Lm1heFNlcSl9KSxmPSExO2lmKCFlLmxlbmd0aClyZXR1cm4gYy5EQnNSZWFkQ3RyLT0xLGIucmVzb2x2ZSh7ZG9jczpwLHNlcTpqfSk7Zm9yKHZhciBoPWUuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiEobCYmeC5kZWxldGVkfHxrJiYvXl9kZXNpZ25cLy8udGVzdCh4LmlkKSl9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOnguaWQscmV2OnguY2hhbmdlc1swXS5yZXYsZGVsOiEheC5kZWxldGVkLGRvYzpnfHwheC5kb2M/bnVsbDpKU09OLnN0cmluZ2lmeSh4LmRvYykscmV2czptP1tdOnguY2hhbmdlcy5zbGljZSgxKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmV2fSl9fSksaT0wO2k8aC5sZW5ndGgmJiFmO2krKylmPWEoeC51cmwsaFtpXSkscCs9MTtmP2IucmVqZWN0KHtlcnJvcjoiYWJvcnRlZCIsZG9jczpwLHNlcTpqfSk6cigpfSkuZmFpbChmdW5jdGlvbih4LGEsYil7Y29uc29sZS5sb2coeCxhLGIpLG8oKX0pfWZ1bmN0aW9uIHMoKXtpZigoaS09MSk8MSlyZXR1cm4gYi5yZWplY3QoYy5sYW5nLkVSUl9ET0NMSVNUKTtyKCl9ZnVuY3Rpb24gdCh4LGEpe2lmKC0xPT1hKXJldHVybiExO3ZhciBiPXgrIi0iO3JldHVybitiLnN1YnN0cigwLGIuaW5kZXhPZigiLSIpKT5hfX0sREJSb3c6e2lkOiJjdy5QaG90b24uRHVtcFppcC5EQlJvdyIsaW5oZXJpdDpbImxhbmciXSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3guaHRtbChhLkhUTUwpfSxkYXRhOnt1cmw6IiIsc2luY2U6MCxkcm9wOntmaWx0ZXI6W10sZm46IiIsaWRzOltdLHF1ZXJ5Ont9fSxtb2RlOiJqc29uIix0b3RhbFNpemU6MCx0b3RhbERvY3M6MCxkb25lRG9jczowLG1heFNlcTowfSx1aTp7IiNudW0tdG90YWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYoIXgudG90YWxEb2NzKXJldHVybiIiO3ZhciBiPXguZHJvcC5pZHMubGVuZ3RofHx4LnRvdGFsRG9jcztyZXR1cm4gTWF0aC5mbG9vcih4LmRvbmVEb2NzL2IqMTAwKS5jbGFtcCgwLDEwMCkrIiUifSxsaXN0ZW46e2RiU3RyZWFtVXBkYXRlOmZ1bmN0aW9uKHgsYSl7aWYoT2JqZWN0LmlzT2JqZWN0KGEpKXJldHVybiBudWxsfX19LCIjbnVtLWJnIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9eC5kcm9wLmlkcy5sZW5ndGh8fHgudG90YWxEb2NzO2M/Yi5jc3Moe2hlaWdodDooeC5kb25lRG9jcy9jKjIuNSkuY2xhbXAoMCwyLjUpKyJlbSJ9KTpiLmNzcyh7aGVpZ2h0OiIwcHgifSl9LGxpc3Rlbjp7ZGJTdHJlYW1VcGRhdGU6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuIG51bGx9fX0sIiNkYi1uYW1lIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoL15odHRwW3NdPzpcL1wvLy50ZXN0KHgudXJsKXx8Ii8iPT14LnVybFswXT94LnVybC5zcGxpdCgiLyIpLmxhc3QoKTp4LnVybCkudHJ1bmNhdGUoMzUsIm1pZGRsZSIsIi4uLiIpLmVzY2FwZUhUTUwoKX19LCIjZGItdG90YWxzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXguZHJvcC5pZHMubGVuZ3RoO2J8fHgudG90YWxEb2NzO3JldHVybiBiP3RoaXMubGFuZy5NU0dfVE9UQUwxKGIseC50b3RhbERvY3MpOnRoaXMubGFuZy5NU0dfVE9UQUwyKHgudG90YWxEb2NzLHgudG90YWxTaXplKX19fSxIVE1MOic8ZGl2IGNsYXNzPSJudW0tY29udCBkaWIgdmF0Ij48ZGl2IGlkPSJudW0tYmciIGNsYXNzPSJ3MTAwcCI+PC9kaXY+PGRpdiBpZD0ibnVtLXRvdGFsIiBjbGFzcz0idzEwMHAgdGFjIGZzMTEwIGZ3MzAwIG83MCBsaDIwMCBwdDEiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImRiLWluZm8gZGliIHZhdCI+PGRpdiBpZD0iZGItbmFtZSIgY2xhc3M9IncxMDBwIGZzMTIwIGZ3NDAwIG53IG9oIGVsbCI+PC9kaXY+PGRpdiBpZD0iZGItdG90YWxzIiBjbGFzcz0idzEwMHAgZnM5MCBvODAgbncgb2ggZWxsIj48L2Rpdj48L2Rpdj4nLHN0eWxlOnsiIC5udW0tY29udCI6eyIiOiJ3aWR0aDozZW07IGhlaWdodDoyLjVlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm9yZGVyLXJhZGl1czogMnB4OyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOiNmMmY1Zjg7IiwiICNudW0tYmciOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IGxlZnQ6IDA7IGJhY2tncm91bmQtY29sb3I6I2MzZWU5NDsgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMnM7In0sIiAuZGItaW5mbyI6eyIiOiJ3aWR0aDogY2FsYygxMDAlIC0gM2VtKTsgb3ZlcmZsb3c6IGhpZGRlbjsgcGFkZGluZy1sZWZ0OiAxZW07In19fX0sVW5kdW1wOntpZDoiY3cuUGhvdG9uLlVuZHVtcCIscGFyYW1zOntyZXN0eWxlOjIwMH0sRGF0YVVybHM6W10sbGFuZzp7fSxyZXF1aXJlOlt7IndpbmRvdy5Xcml0YWJsZVN0cmVhbSI6ImxpYi93ZWJzdHJlYW1zLmpzIn0seyJ3aW5kb3cuZmZsYXRlIjoibGliL2ZmbGF0ZS5qcyJ9XSxkYXRhOntkYnM6W10sZG9jc1RvU2F2ZTpbXSxvcHRzOltdLGJ5dGVzOjAsemJ5dGVzOjAsZG9uZTohMSxzdGF0dXM6IiIsbWF4QnVmZmVyOjJlOCxtYXhXcml0ZVN0cmVhbXM6NixtYXhSZXN0YXJ0czozfSxVbnppcERCbWFwOm51bGwsVW56aXBTdHJlYW06e30saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3guaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLHgudGhlbihmdW5jdGlvbigpe2Iuc3RhdHVzPSJzdHJlYW1pbmciLGEuUHJlcGFyZURCcygpLnRoZW4oZnVuY3Rpb24oKXthLlNhdmVyPWEuU2F2ZURvY3MoKX0pfS5kZWJvdW5jZSg1MCkpLGEuU3RhbXA9RGF0ZS5ub3coKX0sdWk6eyIjZGItcm93cyI6e2JpbmQ6ImRicyIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLm5pY2VTY3JvbGwoeCl9LGxpc3Q6JzxkaXYgY2xhc3M9Im10NSBwdDUgcGI1IGJiZCI+PC9kaXY+JyxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5EQlJvd30saWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHgudXJsfSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC50b3RhbERvY3MrIiIseC50b3RhbFNpemUrIiJdKX19LCIjYnl0ZXMiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguYnl0ZXM/JzxzcGFuIGNsYXNzPSJmaS11cGxvYWQtY2xvdWQgbzUwIHhncmF5IGZzODAiPjwvc3Bhbj4gJyt4LmJ5dGVzLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYiIpOiIifSwiI3N0cmVhbS1zcGVlZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0oRGF0ZS5ub3coKS10aGlzLlN0YW1wKzEpLzFlMyxjPSg4KnguYnl0ZXMvYnwwKS5jbGFtcCgwLDFlOSk7cmV0dXJuIGM/Yy5ieXRlcygxKS5yZXBsYWNlKC9CJC8sImJpdC9zIik6IiJ9LHdhdGNoOlsiI2J5dGVzIl19LCIjYnRuLXN0b3AiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHRoaXMuQWJvcnQoKSx0aGlzLm15LmNvbW1pdCgpKX19fSxTYXZlcjpudWxsLEFib3J0OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YTt0cnl7eC5TYXZlci5hYm9ydCgpfWNhdGNoKHgpe310cnl7eC5VbnppcFN0cmVhbS5hYm9ydCgpfWNhdGNoKHgpe30kLm15LnJhZGlvKCJkYmxpc3QiLGEuZGJzLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lfSkpLGEuc3RhdHVzPSJhYm9ydGVkIn0sSFRNTDonPGRpdiBjbGFzcz0iZnMxMzAgZnc0MDAgY20iPjxzcGFuIGNsYXNzPSJmaS1saXN0IG80MCBmczg1IG1yMyI+PC9zcGFuPiB7VFhUX1RJVExFfTwvZGl2PjxkaXYgaWQ9ImRiLXJvd3MiIGNsYXNzPSJtdDEwIGJ0ZCBtYjEwIiBzdHlsZT0ibWF4LWhlaWdodDo0NTBweDsiPjwvZGl2PjxkaXY+PGRpdiBpZD0ic3RyZWFtLXNwZWVkIiBjbGFzcz0idzI1cCBvNTAgZnIgdGFyIG10NSI+PC9kaXY+PGRpdiBpZD0iYnl0ZXMiIGNsYXNzPSJmciB3MjVwIG10NSBvNzAiPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi1zdG9wIiBjbGFzcz0ibXI1Ij57QlROX0FCT1JUfTwvYnV0dG9uPjwvZGl2Picsc3R5bGU6eyIgIjpmdW5jdGlvbih4KXtyZXR1cm4ic3RyZWFtaW5nIj09dGhpcy5kYXRhLnN0YXR1cyYmeC50cmlnZ2VyKCJsYXlvdXQiKSwiZm9udC1zaXplOjE1cHg7IGxpbmUtaGVpZ2h0OjEuNGVtOyJ9fSxQcmVwYXJlREJzOmZ1bmN0aW9uKCl7dmFyIHgsYT10aGlzLGI9YS5kYXRhLGM9KGEuVW56aXBEQm1hcCxhLlBobygiQWxsIikpLGQ9YS5QaG8oIkNvdWNoIiksZT1PYmplY3QuaXNPYmplY3QsZj1bXTtpZihiLm9wdHMuZmluZCgiY3JlYXRlIikpe3ZhciBnPWIuZGJzLnJlZHVjZShmdW5jdGlvbih4LGEpe2lmKGNbYS5uYW1lXSlyZXR1cm4geDtmLnB1c2goYS5uYW1lKTt2YXIgZz0kLmV4dGVuZCh7bmFtZTphLm5hbWUsc2VjdXJpdHk6Yi5vcHRzLmZpbmQoImFjbCIpJiZlKGEuc2VjdXJpdHkpP2Euc2VjdXJpdHk6bnVsbCxwYXJ0aXRpb25lZDplKGEucHJvcHMpJiYhIWEucHJvcHMucGFydGl0aW9uZWR9LGQudmVyPiIwMDIuIiYmZShhLmNsdXN0ZXIpP3txOithLmNsdXN0ZXIucT4wPythLmNsdXN0ZXIucTorZC5xfHwyLG46KCthLmNsdXN0ZXIubnx8MSkuY2xhbXAoMSxkLm58fDEpfTp7fSk7cmV0dXJuIHgucHVzaChnKSx4fSxbXSk7eD1nLmxlbmd0aD9hLlBobygiQ3JlYXRlREJzIikoZywhMSk6JC5EZWZlcnJlZCgpLnJlc29sdmUoW10pfWVsc2UgeD0kLkRlZmVycmVkKCkucmVzb2x2ZSgpO3JldHVybiB4LnRoZW4oZnVuY3Rpb24oKXtpZighYi5vcHRzLmZpbmQoImFjbCIpKXJldHVybiEwO3ZhciB4PWN3LmxpYi5hMm8oZiksYz1iLmRicy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4geFtiLm5hbWVdfHxudWxsPT1iLnNlY3VyaXR5P2E6KGEucHVzaCh7Y3JlYXRlOiExLG5hbWU6Yi5uYW1lLHNlY3VyaXR5OmUoYi5zZWN1cml0eSk/Yi5zZWN1cml0eTpudWxsfSksYSl9LFtdKTtyZXR1cm4hYy5sZW5ndGh8fGEuUGhvKCJDcmVhdGVEQnMiKShjLCExKX0pLmZhaWwoZnVuY3Rpb24oKXthLkFib3J0KCksYS5teS5jb21taXQoKX0pfSxTYXZlRG9jczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj17fSxjPTAsZD1hLmRvY3NUb1NhdmUsZT1hLm1heEJ1ZmZlcixmPWEubWF4V3JpdGVTdHJlYW1zLGc9YS5tYXhSZXN0YXJ0c3x8MyxoPSExLGk9ITEsaj14LlVuemlwREJtYXAsaz0xLGw9MCxtPTAsbj0wLG89NTAwLHA9MWUzL28qNSxxPU9iamVjdC5zaXplLHI9QS5kZWJvdW5jZShvKSxzPUUudGhyb3R0bGUoMjUwKSx0PSEhYS5vcHRzLmZpbmQoInhkZWwiKSx1PSEhYS5vcHRzLmZpbmQoInhyZXZzIik7ZC5mb3JFYWNoKGZ1bmN0aW9uKHgpe251bGwhPT14JiYoays9MSxjKz14LnNpemUpfSk7dmFyIHY9eC5VbnppcFN0cmVhbTtyZXR1cm4gdi5ub3RpZnkodyksdi5pc0RvbmUoKXx8di5jb250aW51ZSgpLHkoKSxyKCksRi5kZWxheSgxZTMpLHthYm9ydDpmdW5jdGlvbigpe2QuZm9yRWFjaChmdW5jdGlvbih4KXtudWxsIT14JiZ4LnJlcSYmKHgucmVxLmRhdGE9dm9pZCAwKX0pLGQubGVuZ3RoPTAsaT0hMH19O2Z1bmN0aW9uIHcoeCxhKXsiZG9jIj09eD8oays9MSwhKChjKz1hKT5lfHxkLmxlbmd0aD4xNTApfHx2LmlzUGF1c2VkKCl8fHYuaXNBbGxSZWFkKCl8fHYucGF1c2UoKSx5LmRlbGF5KDIpKToiZW5kZWQiPT14JiZ5LmRlbGF5KDUwKX1mdW5jdGlvbiB5KCl7aWYoIWkmJiFoKWZvcih2YXIgeCxhPXt9O3EoYik8ZiYmZC5sZW5ndGgmJm51bGwhPT1hOyludWxsPT0oYT1kLnNoaWZ0KCkpPzA9PXEoYik/ay09MTpkLnB1c2gobnVsbCk6IWpbYS5zcmNkYl18fHQmJi9cL19kZWxldGVkXC8vLnRlc3QoYS5uYW1lKXx8dSYmL1wvX2NvbmZsaWN0c1wvLy50ZXN0KGEubmFtZSk/KGstPTEsYy09YS5zaXplLGEucmVxLmRhdGE9dm9pZCAwLG0rPTEpOih4PXooYSkpJiYoYlthLm5hbWVdPXgpfWZ1bmN0aW9uIHooZSl7aWYoaSlyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdCgpO3ZhciBmLGg9altlLnNyY2RiXSxtPWEuZGJzLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHguc3JjPT1lLnNyY2RifSk7aWYoIW0pcmV0dXJuIHkuZGVib3VuY2UoMTApKCksdm9pZCAwO3tyZXR1cm4gZS5yZXEudXJsPSIvezF9L19idWxrX2RvY3MiLmFzc2lnbihIKGgpKSxlLmVycm9ycy5sZW5ndGg/KGNvbnNvbGUubG9nKGUuZXJyb3JzKSxmPSQuRGVmZXJyZWQoKSxmdW5jdGlvbigpe2NvbnNvbGUubG9nKCJSZXRyeSAiK2UubmFtZSkseC5SZXEoZS5yZXEpLnRoZW4oZnVuY3Rpb24oeCl7Zi5yZXNvbHZlKHgpfSxmdW5jdGlvbih4LGEsYil7Zi5yZWplY3QoeCxhLGIpfSl9LmRlYm91bmNlKDFlMypbMSwzLDEwLDMwXVtlLmVycm9ycy5sZW5ndGguY2xhbXAoMCwzKV0pKCkpOmY9eC5SZXEoZS5yZXEpLGYudGhlbihmdW5jdGlvbih4KXt4Lmxlbmd0aCYmeFswXS5lcnJvcj9vKHhbMF0uZXJyb3IrIiAiK0pTT04uc3RyaW5naWZ5KHhbMF0ucmVhc29uKSk6KGstPTEsbS5kb25lRG9jcys9MSxjLT1lLnNpemUsZS5zYXZlZD0hMCxlLnJlcS5kYXRhPXZvaWQgMCxsKz0xKX0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe28oeCsiOiAiK2ErIiAiK2IpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7bj0wLGRlbGV0ZSBiW2UubmFtZV0sYS5ieXRlcys9ZS5zaXplLHMoKSxEKCkseS5kZWxheSgxKX0uZGVib3VuY2UoMSkpO2Z1bmN0aW9uIG8oYSl7aWYoY29uc29sZS5sb2coYSksZS5lcnJvcnMucHVzaChhKSxlLmVycm9ycy5sZW5ndGg8ZyludWxsPT09ZC5sYXN0KCk/KGQucG9wKCksZC5wdXNoKGUpLGQucHVzaChudWxsKSk6ZC5wdXNoKGUpO2Vsc2V7dmFyIGI9bS5uYW1lKyIvIitkZWNvZGVVUklDb21wb25lbnQoZS5uYW1lLmZyb20oZS5zcmNkYi5sZW5ndGgrMSkucmVwbGFjZSgvXC5qc29uJC8sIiIpKTtDKHgubGFuZy5FUlJfU0FWRURPQy5hc3NpZ24oYikpLHgubXkuZmluZCgiI2J0bi1zdG9wIikudHJpZ2dlcigiY2xpY2subXkiKX19fX1mdW5jdGlvbiBBKCl7aXx8aHx8KGs+MD8oeSgpLHIoKSxkLmxlbmd0aHx8MSE9a3x8cShiKXx8RygpfHwobis9MSk+PXAmJihkLnB1c2gobnVsbCksY29uc29sZS5sb2coIlB1bXAgc3RhbGxlZCwgZW5mb3JjZSBwdW1wIGFib3J0IikpKTpCKCkpfWZ1bmN0aW9uIEIoKXtoPSEwLHMoKSx2LmlzQWxsUmVhZCgpPyQubXkucmFkaW8oImRibGlzdCIsYS5kYnMubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KSk6KHguU2F2ZXIuYWJvcnQ9ZnVuY3Rpb24oKXt9LHguQWJvcnQoKSksYS5zdGF0dXM9ImRvbmUiLHgubXkuY29tbWl0KCksY29uc29sZS5sb2coIkRvbmUgcmVzdG9yZSwgezF9IGRvY3Mgc2F2ZWQuIi5hc3NpZ24obCkpfWZ1bmN0aW9uIEMoYil7Y3cubGliLm5vdGUoeC5sYW5nLk1TR19GQUlMTk9URS5hc3NpZ24oYnx8IiIsYS5kYnMubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmRvbmVEb2NzfSkuc3VtKCksYS5kYnMubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnRvdGFsRG9jc30pLnN1bSgpKSwiZXJyb3IiLDhlMyl9ZnVuY3Rpb24gRCgpeyF2LmlzRG9uZSgpJiZ2LmlzUGF1c2VkKCkmJmM8ZS8yJiZkLmxlbmd0aDw1MTImJnYuY29udGludWUoKSxyKCl9ZnVuY3Rpb24gRSgpe3gubXkuY2hlY2soIiNieXRlcyIpLCQubXkucmFkaW8oInVuZHVtcFdyaXRlVXBkYXRlIix7fSl9ZnVuY3Rpb24gRigpe2l8fGh8fCgkLm15LnJhZGlvKCJkYmxpc3QiLE9iamVjdC52YWx1ZXMoaikpLEYuZGVsYXkoNWUzKSl9ZnVuY3Rpb24gRygpe3ZhciB4PXYuZ2V0U3RhdHMoKSxhPXguaXNaaXBSZWFkLGI9eC5maWxlczt4LmRyb3A7cmV0dXJuIWF8fGI+bCttfWZ1bmN0aW9uIEgoeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX19LERCUm93OntpZDoiY3cuUGhvdG9uLlVuZHVtcC5EQlJvdyIsaW5oZXJpdDpbImxhbmciXSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3guaHRtbChhLkhUTUwpfSxkYXRhOntuYW1lOiIiLHRhcmdldDoiIix0b3RhbFNpemU6MCx0b3RhbERvY3M6MCxkb25lRG9jczowfSx1aTp7IiNudW0tdG90YWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9T2JqZWN0LmlzQXJyYXkoeC5maWx0ZXIpP3guZmlsdGVyLmxlbmd0aDp4LnRvdGFsRG9jcztyZXR1cm4gYj9NYXRoLmZsb29yKHguZG9uZURvY3MvYioxMDApLmNsYW1wKDAsMTAwKSsiJSI6IiJ9LGxpc3Rlbjp7dW5kdW1wV3JpdGVVcGRhdGU6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuIG51bGx9fX0sIiNudW0tYmciOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1PYmplY3QuaXNBcnJheSh4LmZpbHRlcik/eC5maWx0ZXIubGVuZ3RoOngudG90YWxEb2NzO2M/Yi5jc3Moe2hlaWdodDooeC5kb25lRG9jcy9jKjIuNSkuY2xhbXAoMCwyLjUpKyJlbSJ9KTpiLmNzcyh7aGVpZ2h0OiIwcHgifSl9LGxpc3Rlbjp7dW5kdW1wV3JpdGVVcGRhdGU6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuIG51bGx9fX0sIiNkYi1uYW1lIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiB4Lm5hbWUudHJ1bmNhdGUoNDAsIm1pZGRsZSIsIi4uLiIpLmVzY2FwZUhUTUwoKX19LCIjZGItdG90YWxzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPU9iamVjdC5pc0FycmF5KHguZmlsdGVyKT94LmZpbHRlcjpbXSxjPWIubGVuZ3RoP2IubGVuZ3RoOngudG90YWxEb2NzO3JldHVybiBiLmxlbmd0aD90aGlzLmxhbmcuTVNHX1RPVEFMMShiLmxlbmd0aCk6dGhpcy5sYW5nLk1TR19UT1RBTDIoYyx4LnRvdGFsU2l6ZSl9fX0sSFRNTDonPGRpdiBjbGFzcz0iZGItaW5mbyBkaWIgdmF0Ij48ZGl2IGlkPSJkYi1uYW1lIiBjbGFzcz0idzEwMHAgZnMxMjAgZnc0MDAgbncgb2ggZWxsIj48L2Rpdj48ZGl2IGlkPSJkYi10b3RhbHMiIGNsYXNzPSJ3MTAwcCBmczkwIG84MCBudyBvaCBlbGwiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im51bS1jb250IGRpYiB2YXQiPjxkaXYgaWQ9Im51bS1iZyIgY2xhc3M9IncxMDBwIj48L2Rpdj48ZGl2IGlkPSJudW0tdG90YWwiIGNsYXNzPSJ3MTAwcCB0YWMgZnMxMTAgZnczMDAgbzcwIGxoMjAwIHB0MSI+PC9kaXY+PC9kaXY+JyxzdHlsZTp7IiAubnVtLWNvbnQiOnsiIjoid2lkdGg6M2VtOyBoZWlnaHQ6Mi41ZW07IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci1yYWRpdXM6IDJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZC1jb2xvcjojZjJmNWY4OyIsIiAjbnVtLWJnIjoicG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTowOyBsZWZ0OiAwOyBiYWNrZ3JvdW5kLWNvbG9yOiM5M2VlZGU7IHRyYW5zaXRpb246IGhlaWdodCAwLjJzOyJ9LCIgLmRiLWluZm8iOnsiIjoid2lkdGg6IGNhbGMoMTAwJSAtIDNlbSk7IG92ZXJmbG93OiBoaWRkZW47IHBhZGRpbmctbGVmdDogcmlnaHRlbTsifX19fSxEZG9jOntfaWQ6Il9kZXNpZ24vcGhvdG9uLXN5bmMiLGxhbmd1YWdlOiJqYXZhc2NyaXB0IixuYW1lOiJQaG90b24gc3luYyB1dGlscyIsdmVyc2lvbjoiMDEuMDEiLHN0YW1wOjAsb3B0aW9uczp7Y29uZmxpY3RzOiEwfSxmaWx0ZXJzOntleGNsdWRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YS5xdWVyeXx8e30sYz14Ll9pZDtyZXR1cm4hKGIueGRlbCYmeC5fZGVsZXRlZHx8Yi54ZGRvYyYmIl9kZXNpZ24vIj09Yy5zdWJzdHIoMCw4KSl9fX0sc3RhbXA6MTc2MzYxOTQ5NjY4MSxwYXJhbXM6e3N0cmljdDohMH19LCJjdy5TeXMuSlNPTiI6e2lkOiJjdy5TeXMuSlNPTiIsYnVpbGQ6MTI5LFZlcnNpb246IjIuOSIsZGF0YTp7ZG9jOnt9LG1heERlcHRoOjE1MCxsYWJlbFdpZHRoOjEzMCx0cmVlOnt9LGNtZDoiIix0aXRsZToiVW50aXRsZWQgSlNPTiIscmF3OiIiLHZpZXdzdGF0ZTp7fSxzZWFyY2g6IiIsZm91bmQ6e319LFJUOmZ1bmN0aW9uKHgpe3JldHVybiB4P3RoaXNbeF06dGhpc30sTVJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5teS5yb290KCl9LHBhcmFtczp7cmVzdHlsZToxMDAsZGVsYXk6IjAiLHN0cmljdDohMH0saG90a2V5czp7ImN0cmwrcyxjbWQrcyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubXkuZmluZCgiI2J0bi1zYXZlIikudHJpZ2dlcigiY2xpY2siKSwhMX19LExpYjp7cmVsaXN0OmZ1bmN0aW9uKHgsYSl7YS5MaXN0PWEuTWFrZUxpc3QoYS5kYXRhKSx4LmZpbmQoIj4uaXZhbHVlPi5pbGlzdCIpLnRyaWdnZXIoInJlY2FsYyIpLHguZmluZCgiPi5pbmF2Pi5pZGVzYyIpLnRyaWdnZXIoImNoZWNrIil9LGtpY2s6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIgaW4geClkZWxldGUgeFtiXTtPYmplY3QubWVyZ2UoeCxhKSxPYmplY3QuaXNBcnJheSh4KSYmKHgubGVuZ3RoPWEubGVuZ3RoKX0sa2V5QmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLmxhYmVsV2lkdGgvM3wwO3JldHVybiA0Jnguc3RhdGUmJnRoaXMuUlQoIlNlYXJjaFJlIik/Yz14LmtleS5yZXBsYWNlKHRoaXMuUlQoIlNlYXJjaFJlIiksIu+/sSQx77+wIikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoIu+/sSIsJzxzcGFuIGNsYXNzPSJqdmFsLWZvdW5kLWtleSI+JykucmVwbGFjZSgi77+wIiwiPC9zcGFuPiIpOih4LmtleS5sZW5ndGg+ZCYmYi5hdHRyKCJ0aXRsZSIseC5rZXkuZXNjYXBlSFRNTCgpKSxjPS9eKHxccyspJC8udGVzdCh4LmtleSk/JyInK3gua2V5LmVzY2FwZUhUTUwoKSsnIic6eC5rZXkudHJ1bmNhdGUoZCwicmlnaHQiLCLigKYiKS5lc2NhcGVIVE1MKCkpLHRoaXMuVS50YWdFbW9qaShjKX0sY29tbW9uSW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3guYWRkQ2xhc3MoImVkLW5vZGUtIithLlBhdGhTaWcoYi5wYXRoLGIua2V5KSkseC5odG1sKGEuSFRNTCl9fSxNZW1TdGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmRhdGE7YS52aWV3c3RhdGV8fChhLnZpZXdzdGF0ZT17fSk7dmFyIGI9dGhpcy5QYXRoU2lnKHgucGF0aCx4LmtleSk7YS52aWV3c3RhdGVbYl0hPXguc3RhdGUmJihhLnZpZXdzdGF0ZVtiXT14LnN0YXRlLGEuX2lkJiZ0aGlzLk1lbVN0YXRlU2F2ZSgpKX0sTWVtU3RhdGVTYXZlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kYXRhO2lmKHguX2lkJiZPYmplY3Quc2l6ZSh4LnZpZXdzdGF0ZSkpe3ZhciBhPU9iamVjdC5rZXlzKHgudmlld3N0YXRlKS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gMj09eC52aWV3c3RhdGVbYl0mJmEucHVzaChiKSxhfSxbXSk7dGhpcy5Mcygidmlld3N0YXRlLiIrY3cubGliLnNkYm0oKHguZGJuYW1lfHwiIikrIi8iK3guX2lkKSx7c3RhbXA6RGF0ZS5ub3coKSxzdGF0ZTphfSl9fSxNZW1TdGF0ZVJlc3RvcmU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmRhdGE7aWYoeC5faWQpe3ZhciBhPXRoaXMuTHMoInZpZXdzdGF0ZS4iK2N3LmxpYi5zZGJtKCh4LmRibmFtZXx8IiIpKyIvIit4Ll9pZCkpO2lmKCFPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuO3gudmlld3N0YXRlPWEuc3RhdGUucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHhbYV09Mix4fSx7fSl9fSxQYXRoU2lnOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGN3LmxpYi5zZGJtKFt4LGFdLmNvbXBhY3QoKS5mbGF0dGVuKCkuam9pbigi4p2AIikpfSxSZWpvaW46ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIsYz10aGlzLkluZGV4LGQ9MDtkPGEubGVuZ3RoO2QrKyliPWFbZF0sL14ob2J8YXIpLy50ZXN0KGIudHlwZSl8fCh4LnZhbHVlW2Iua2V5XT1iLnZhbHVlKSxjLmRpcnR5PSEwfSxOb2RlVXBkYXRlZDpmdW5jdGlvbih4LGEsYil7fSxFZGl0b3JJbnZva2VkOmZ1bmN0aW9uKHgsYSl7fSxIZWxwOmZ1bmN0aW9uKHgpe3JldHVybnt0aXA6IiIsdXJsOiIifX0sdG9qc29uOmZ1bmN0aW9uKHgsYSxiLGMpe3JldHVybiBjdy5saWIuanNvbih4LGIsY3x8ODApfSxTZWFyY2hSZTohMSxpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWEuZGF0YSxkPWMubWF4RGVwdGgsZT0oRGF0ZS5ub3coKSxPYmplY3Qua2V5cyksZj1lKGIpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4vXlwkW2Etel0vLnRlc3QoeCk/eC5mcm9tKDEpOiIifSkuY29tcGFjdCghMCksZz1PYmplY3QuaXNBcnJheSxoPU9iamVjdC5pc09iamVjdDtiLkxzPWIuTHMoIiIpLE9iamVjdC5pc0Z1bmN0aW9uKGIuRGIpJiYoYi5EYj1iLkRiKHgpKSx4Lmh0bWwoYi5IVE1MLk1haW4pLGIuTWVtU3RhdGVTYXZlPWIuTWVtU3RhdGVTYXZlLmRlYm91bmNlKDcwMCk7dmFyIGk9IlJUIFJvb3QgSW5saW5lQ00gTWFrZUxpc3QgTm9kZVVwZGF0ZWQgSGVscCBQYXRoU2lnIi5zcGxpdCgiICIpO2lmKGYuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1iWyIkIit4XTthLmlzTGlzdCYmKGIuaXNMaXN0WyIkIit4XT0hMCksYS5sYWJlbFdpZHRoPWMubGFiZWxXaWR0aCxhLlU9Yi5VLGkuZm9yRWFjaChmdW5jdGlvbih4KXthW3hdPWJbeF19KSwibXVsdGkiPT14PyhhLkhUTUw9Yi5IVE1MLkl0ZW1Db21wbGV4LGEubWF4RGVwdGg9ZCk6KGEuSFRNTHx8KGEuSFRNTD1iLkhUTUwuSXRlbVNpbXBsZSksYS5pbml0fHwoYS5pbml0PWIuTGliLmNvbW1vbkluaXQpLGEudWlbIi5pa2V5Il0uYmluZHx8KGEudWlbIi5pa2V5Il0uYmluZD1iLkxpYi5rZXlCaW5kKSksYS5wYXJhbXN8fChhLnBhcmFtcz17fSksYS5wYXJhbXMuc3RyaWN0PSEwfSksJC5leHRlbmQoYi5Eb2Mse3N0YXRlOjIsbGV2ZWw6MCxwYXRoOltdLHR5cGU6Im9iamVjdCIsa2V5OiJSb290Iix2YWx1ZTphLmRhdGEuZG9jfSksYy5faWQ9Yy5faWR8fGMuZG9jLl9pZHx8IiIsbnVsbD09PWMuZG9jLl9yZXYmJmRlbGV0ZSBjLmRvYy5fcmV2LFsiYWRkIiwidGFrZW91dCJdLmZvckVhY2goZnVuY3Rpb24oYSl7eC5vbigiY2xpY2subXkiLCIuYnRuLSIrYSxiLkV2ZW50W2FdLmZpbGwodm9pZCAwLHZvaWQgMCxiLGIuTVJvb3QoKSkpfSkseC5vbigiY2xpY2subXkiLCIuaXJvb3Q+LmlrZXkiLGZ1bmN0aW9uKHgpe3ZhciBhPWMudmlld3N0YXRlLGY9Yi5QYXRoU2lnLGc9eyIxM2ZkZ3h4ayI6ITB9LGg9ZShhKS5tYXAoeD0+Mj09YVt4XT94Om51bGwpLmNvbXBhY3QoKSxpPWUoYy5kb2MpLm1hcChmdW5jdGlvbih4KXt2YXIgYT1jLmRvY1t4XSxiPSJvYmplY3QiPT10eXBlb2YgYSYmT2JqZWN0LnNpemUoYSk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGU9ZihbIlJvb3QiXSx4KTtyZXR1cm4gYiYmYj49ZCYmKGdbZV09ITApLGV9KS5jb21wYWN0KCk7aS5pbnRlcnNlY3QoaCkubGVuZ3RoPjA/KGkuZm9yRWFjaCh4PT4yPT1hW3hdP2FbeF09MTowKSxiLk1lbVN0YXRlU2F2ZSgpKTooaS5mb3JFYWNoKHg9PmdbeF0/MDphW3hdPTIpLGIuTWVtU3RhdGVTYXZlKCkpfSkseC5vbigiY2xpY2subXkiLCIuaWtleSIsZnVuY3Rpb24oeCl7dmFyIGE9JCh4LmN1cnJlbnRUYXJnZXQpLGI9YS5teSgpLnJvb3QsYz1hLm15KCkuZGF0YTtnKGMudmFsdWUpfHxoKGMudmFsdWUpPzE2JmMuc3RhdGUmJmIudHJpZ2dlcigiZWRpdG9yY2FuY2VsLm15Iik6Yi50cmlnZ2VyKCJlZGl0b3JjYW5jZWwubXkiKX0pLHgub24oImNsaWNrLm15IiwiLmlkZXNjIixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPSQodGhpcykubXkoKS5yb290LGI9YS5teSgiZGF0YSIpLm1hbmlmZXN0O3JldHVybi9eXCQobXVsdGl8ZmlsZXMpLy50ZXN0KGJ8fCIkbXVsdGkiKSYmYS5maW5kKCI+LmlhY3Q+LmJ0bi1qc29uIikudHJpZ2dlcigiY2xpY2siKSwhMX0pLHgub24oImNsaWNrLm15IiwiI2RvYz4uaWFjdD4uYnRuLWRlbCIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSx4LnRyaWdnZXIoImNhbmNlbCIpfSksYi5vbkluaXQubGVuZ3RoJiZ4LnRoZW4oZnVuY3Rpb24oKXtiLm9uSW5pdC5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjKXRyeXtjLmNhbGwoYix4LGEpfWNhdGNoKHgpe319KX0pLHgub24oImpzb25kb2NzYXZlLm15IixmdW5jdGlvbih4KXtyZXR1cm4gYi5jbWRTYXZlP2IuY21kU2F2ZSgpOmIubXkuZmluZCgiI2J0bi1zYXZlIikudHJpZ2dlcigiY2xpY2siKSwhMX0pLGIuTWVtU3RhdGVSZXN0b3JlJiZiLk1lbVN0YXRlUmVzdG9yZSgpLCJjcmVhdGUiIT1jLmNtZCYmYi5kYiYmYi5hcHAmJmIuYXBwLmxvY2FsKXJldHVybiBjdy5saWIuc2Nyb2xsWSYmY3cubGliLnNjcm9sbFkoeCksYi5kYi5nZXQoYy5kb2MuX2lkLHthdHRhY2htZW50czohMCxyZXZzX2luZm86ITAsY29uZmxpY3RzOiEwfSkudGhlbihmdW5jdGlvbih4KXskLmV4dGVuZChjLmRvYyxPYmplY3Quc2VsZWN0KHgsWyJfYXR0YWNobWVudHMiXSkpLHguX2NvbmZsaWN0cyYmeC5fY29uZmxpY3RzLmxlbmd0aCYmKGMuZG9jLl9jb25mbGljdHM9eC5fY29uZmxpY3RzLnNsaWNlKDApKSxjLmRvYy5fcmV2c19pbmZvPXguX3JldnNfaW5mby5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIm1pc3NpbmciIT14LnN0YXR1c30pfSl9LG9uSW5pdDpbXSxpc0xpc3Q6e30sZGllOmZ1bmN0aW9uKCl7dmFyIHgsYT10aGlzLkJsb2JzO2Zvcih4IGluIGEpVVJMLnJldm9rZU9iamVjdFVSTChhW3hdKX0sQmxvYnM6e30sRG9jOnt9LEluZGV4OntkaXJ0eTohMCxpZHg6W119LFU6e3RhZ0Vtb2ppOmZ1bmN0aW9uKHgpe3JldHVybiB4fX0sdWk6eyIjYnRuLXNhdmUiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzO251bGwhPWEmJmMuZGIuc2F2ZSh4LmRvYykudGhlbihmdW5jdGlvbihhKXt2YXIgZD17ZG9jOmF9O2MuTGliLmtpY2soeC5kb2MsYSk7dmFyIGU9Yy5Mcygidmlld3N0YXRlLiIrYS5faWQpO2UmJihlLnN0YW1wPmQuc3RhbXB8fCFPYmplY3Quc2l6ZSh4LnZpZXdzdGF0ZSkpJiYoeC52aWV3c3RhdGU9ZS5zdGF0ZSkseC5faWQ9YS5faWR8fCIiLGEuX3JldiYmKHguX3Jldj1hLl9yZXYpLCQuZXh0ZW5kKGMuRG9jLHtzdGF0ZToyLGxldmVsOjAscGF0aDpbXSx0eXBlOiJvYmplY3QiLGtleToiUm9vdCIsdmFsdWU6eC5kb2N9KSxiLm15KCJmaW5kIiwiI2RvYyAuaWtleXRyZWU6ZXEoMCkiKS50cmlnZ2VyKCJjbGljayIpfSxmdW5jdGlvbih4LGEpe2N3LmxpYi5ub3RlKCJTYXZlIGZhaWxlZCwgc2VlIGNvbnNvbGUiLCJlcnJvciIpLGNvbnNvbGUubG9nKGEseCl9KX19LCIjZG9jdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiB4Ll9pZD14LmRvYy5faWR8fHguX2lkLHguX3Jldj14LmRvYy5fcmV2LHgudGl0bGU9KHguZG9jLl9kYnx8KHRoaXMuZGJ8fHtuYW1lOiJOb0RCIn0pLm5hbWUpKyLigIkv4oCJIisoeC5kb2MuX2lkfHwiIikseC50aXRsZX0sd2F0Y2g6WyIjZG9jIl0sZGVsYXk6MzB9LCIjanNvbi1zZWFyY2giOntkZWxheToyMDAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHguc2VhcmNoO3ZhciBiPXRoaXMsYz14LnNlYXJjaDtyZXR1cm4geC5zZWFyY2g9YS5sZW5ndGg8Mz8iIjphLHguc2VhcmNoPyhiLlNlYXJjaFJlPW5ldyBSZWdFeHAoIigiK1JlZ0V4cC5lc2NhcGUoYS5jb21wYWN0KCkpKyIpIiwiaSIpLGIuU2VhcmNoKCksYi5teS50cmlnZ2VyKCIjZG9jIC5pa2V5OmVxKDApIiwiY2xpY2subXkiKSxhKTooYi5TZWFyY2hSZT0hMSx4LmZvdW5kPXt9LGMmJmIubXkudHJpZ2dlcigiI2RvYyAuaWtleTplcSgwKSIsImNsaWNrLm15IiksYSl9LGNzczp7Im15LXNlYXJjaCI6L14uezMsfSQvfSxldmVudHM6ImlucHV0Lm15IGNoZWNrLm15In0sIiNkb2MiOntkZWxheToyMCxiaW5kOiJ0aGlzLkRvYyIsY2hlY2s6ITF9fSxqMmg6ZnVuY3Rpb24oeCxhLGIsYyxkKXt2YXIgZT1ifHxbXSxmPWN3LmxpYi5hMm8oZSksZz0hIWQsaD1bXTtyZXR1cm4gbChqKHgsYSwwKSksaDtmdW5jdGlvbiBpKHgsYSxiKXt2YXIgZCxmLGgsaSxrPXtrZXk6bnVsbCx2YWw6bnVsbCxlbXB0eTohMSxzaXplOjIsbGVmdDoieyIscmlnaHQ6In0iLHRyaW06MCx0eXBlOiJvYmplY3QiLHJvd3M6W119LGw9MCxtPXt9LG49T2JqZWN0LmtleXMoeCk7aWYoIW4ubGVuZ3RoKXJldHVybiBrLmVtcHR5PSEwLGsuc2l6ZT0yLGsudmFsPSIiLGs7aWYoYj49Y3x8bi5sZW5ndGg+NTApcmV0dXJuIGsudHJpbT1uLmxlbmd0aCxrLnNpemU9MixrO3ZhciBvPSgxLjUqYS9uLmxlbmd0aHwwKS5jbGFtcCgxMCwuOSphfDApLHA9MDttPXt9O2ZvcihkPTA7ZDxlLmxlbmd0aCYmbDxhLW8vMztkKyspbnVsbCE9eFtoPWVbZF1dJiYobVtoXT0hMCxpPWgudHJ1bmNhdGUoKG8vKGc/MToyKSkuY2xhbXAoMTIsMTAwKSwicmlnaHQiLCLigKYiKSwhL1xzLy50ZXN0KGkpJiZpfHwoaT0nIicraSsnIicpLChmPWooeFtoXSxvLGIrMSkpLmtleT1pLGwrPWkubGVuZ3RoKyhnPzA6Zi5zaXplKSxwKz0xLGsucm93cy5wdXNoKGYpKTtmb3IoZD0wO2Q8bi5sZW5ndGgmJmw8YS1vLzM7ZCsrKW1baD1uW2RdXXx8KGk9aC50cnVuY2F0ZSgoby8oZz8xOjIpKS5jbGFtcCgxMiwxMDApLCJyaWdodCIsIuKApiIpLCEvXHMvLnRlc3QoaSkmJml8fChpPSciJytpKyciJyksKGY9aih4W2hdLG8sYisxKSkua2V5PWksbCs9aS5sZW5ndGgrKGc/MDpmLnNpemUpLHArPTEsay5yb3dzLnB1c2goZikpO3JldHVybiBrLnRyaW09bi5sZW5ndGgtcCxrLnNpemU9bCxrfWZ1bmN0aW9uIGooeCxhLGIpe3ZhciBkLGUsZj17a2V5Om51bGwsdmFsOm51bGwsZW1wdHk6ITEsc2l6ZTowLGxlZnQ6IiIscmlnaHQ6IiIsdHJpbTowLHR5cGU6IiIscm93czpbXX0sZz0wLGg9MCxrPTAsbD10eXBlb2YgeDtpZihudWxsPT09eHx8Im9iamVjdCIhPWwpcmV0dXJuInVuZGVmaW5lZCI9PWw/KGYudHlwZT0idW5kZWZpbmVkIixlPXgrIiIpOiJzdHJpbmciIT1sPyhmLnR5cGU9Im51bWJlciIhPWw/InNpbXBsZSI6bCxlPXgrIiIpOihmLnR5cGU9InN0cmluZyIsKGg9eC5sZW5ndGgpPD1hLTE/ZT14OihlPXguc3Vic3RyKDAsYSksZi50cmltPWgtYSksZS5sZW5ndGgmJiItIiE9ZVswXSYmIS9ccy8udGVzdChlKXx8KGYubGVmdD1mLnJpZ2h0PSciJyxnKz0yKSksZys9ZS5sZW5ndGgsZi5zaXplPWcsZi5lbXB0eT0hZS5sZW5ndGgsZi52YWw9ZSxmO2lmKCFPYmplY3QuaXNBcnJheSh4KSlyZXR1cm4gaSh4LGEsYik7aWYoZi50eXBlPSJhcnJheSIsZi5sZWZ0PSJbIixmLnJpZ2h0PSJdIixnKz0yLHgubGVuZ3RoKWlmKGI8YyYmeC5sZW5ndGg8NTAmJmEveC5sZW5ndGg+NSl7az0oMS41KmEveC5sZW5ndGh8MCkuY2xhbXAoMTAsLjkqYXwwKSxoPTA7dmFyIG09MDtmb3IoZD0wO2Q8eC5sZW5ndGgmJmg8YS1rLzM7ZCsrKWcrPShlPWooeFtkXSxrLGIrMSkpLnNpemUsaCs9ZS5zaXplLG0rPTEsZi5yb3dzLnB1c2goZSk7Zi50cmltPXgubGVuZ3RoLW19ZWxzZSBmLnRyaW09eC5sZW5ndGg7ZWxzZSBmLmVtcHR5PSEwLGc9MixmLnZhbD0iIjtyZXR1cm4gZi5zaXplPWcsZn1mdW5jdGlvbiBrKHgsYSl7aC5wdXNoKFt4LGFdKX1mdW5jdGlvbiBsKHgpe2lmKG51bGwhPXgua2V5JiYoaygia2V5Iix4LmtleSksZ3x8aygiIiwiOiAiKSkseC5lbXB0eSlyZXR1cm4gaygiZW1wdHkiLHgubGVmdCsoeC52YWx8fCIiKSt4LnJpZ2h0KSx2b2lkIDA7dmFyIGI9eC50eXBlLGM9ITE7aWYobnVsbCE9eC52YWwpe2lmKHgubGVmdCYmaygiYnJhY2tldCIseC5sZWZ0KSx4LnZhbC5sZW5ndGg8YS81JiZmW3gua2V5XSYmKGM9ITApLCghZ3x8YykmJihnJiZjJiZrKCIiLCI6ICIpLGsoYix4LnZhbC5lc2NhcGVIVE1MKCkpLHgudHJpbSkpe3ZhciBkPSIrIjtrKCJ0cmltIiwib2JqZWN0Ij09Ynx8ImFycmF5Ij09Yj9kK3gudHJpbToi4oCmIil9eC5yaWdodCYmaygiYnJhY2tldCIseC5yaWdodCksY3x8IWd8fHgucmlnaHR8fCJzaW1wbGUiPT1ifHwibnVtYmVyIj09Ynx8aygiYnJhY2tldCIsInN0cmluZyI9PWI/JyIiJzoib2JqZWN0Ij09Yj8ie30iOiJbXSIpfWVsc2UgaWYoeC5yb3dzLmxlbmd0aCl7eC5sZWZ0JiZrKCJicmFja2V0Iix4LmxlZnQpO3ZhciBlLGg9eC5yb3dzLmxlbmd0aDtmb3IoZT0wO2U8aDtlKyspbCh4LnJvd3NbZV0pLChlIT1oLTF8fHgudHJpbSkmJmsoIiIsIiwgIik7aWYoeC50cmltKXtkPSIrIjtrKCJ0cmltIiwib2JqZWN0Ij09Ynx8ImFycmF5Ij09Yj9kK3gudHJpbToi4oCmIil9eC5yaWdodCYmaygiYnJhY2tldCIseC5yaWdodCl9ZWxzZSB4LnRyaW0mJigib2JqZWN0Ij09Yj9rKCJzaG9ydCIsInsiK3gudHJpbSsifSIpOiJhcnJheSI9PWImJmsoInNob3J0IiwiWyIreC50cmltKyJdIikpfX0sSW5saW5lQ006ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPWEuZGF0YSxkPSQudHlwZShjLnZhbHVlKSxlPS9eKG9ifGFyKS8udGVzdChkKSxmPWEuUlQoIk1FZGl0IikucGFyc2VTdHJpbmcsZz1hLlJUKCJMaWIiKS5raWNrLGg9YS5SVCgiJG51bWJlciIpLkYuQ2FsYyxpPWEuUlQoInRvanNvbiIpfHxKU09OLnN0cmluZ2lmeTtmdW5jdGlvbiBqKHgpe3JldHVybiBhLm15LnJvb3QoKS5maW5kKHgpfWZ1bmN0aW9uIGsoeCxiKXtpZihjLmhhc2g9Y3cubGliLnNkYm0oW2MuaWQsYy52YWx1ZV0pLGooIj4uaW5hdj4uaWVkaXRvciIpLm15KCJyZW1vdmUiKSxqKCI+LmluYXYiKS5yZW1vdmVDbGFzcygiaXNlZGl0b3IiKSxlKXtjLnN0YXRlPXg/MjM5JmMuc3RhdGU6MjM3JmMuc3RhdGV8MSwxJmMuc3RhdGU/YS5MaXN0PVtdOmEuTGlzdD1hLk1ha2VMaXN0KGMpO3ZhciBkPWooIj4uaW5hdj4uaWRlc2MiKSxmPWooIj4uaXZhbHVlPi5pbGlzdCIpLGc9aigiPi5pbmF2Pi5pa2V5Iik7ZC5yZW1vdmVDbGFzcygiaGlkZSIpLGJ8fChmLnRyaWdnZXIoInJlY2FsYyIpLGYudHJpZ2dlcigiY2hlY2siKSksZC50cmlnZ2VyKCJjaGVjayIpLGcudHJpZ2dlcigiY2hlY2siKX1lbHNlIGMuc3RhdGU9MSxqKCI+LmluYXY+Lml2YWx1ZSIpLnJlbW92ZUNsYXNzKCJoaWRlIil9eC5vbigiY2xpY2subXkiLGZ1bmN0aW9uKGIpe3ZhciBkPSQoYi50YXJnZXQpO2lmKCFkLmlzKCJhIikmJiFkLmlzKCJpbWciKSYmKCFlfHwxNiZjLnN0YXRlKSl7dmFyIGY9aigiPi5pbmF2Iik7aWYoIWYuaGFzQ2xhc3MoImlzZWRpdG9yIikpe3ZhciBnPWEuUlQoIkxpYiIpLmlzU3lzdGVtLmNhbGwoYSxjKTtnJiZjdy5saWIubm90ZShPYmplY3QuaXNTdHJpbmcoZyk/ZzoiVGhpcyBwcm9wIGlzIHJlYWQtb25seS4iLCJ3YXJuaW5nIiksYy5zdGF0ZT1lPzE2fGMuc3RhdGU6MixmLmFkZENsYXNzKCJpc2VkaXRvciIpLGooZT8iPi5pbmF2Pi5pZGVzYyI6Ij4uaW5hdj4uaXZhbHVlIikuYWRkQ2xhc3MoImhpZGUiKTt2YXIgaD1qKCI+LmluYXY+LmllZGl0b3IiKTtoLm15KGEuUlQoIk1FZGl0Iikse3RleHQ6ZT8iKCIraShjLnZhbHVlLG51bGwsIiAgIiwoKGgud2lkdGgoKS04MikuY2xhbXAoOTYsOTYwKS84LjJ8MCktNCkrIikiOmMudmFsdWUrIiIsbW9kZTphLkNNfHwiYXV0byIscmVhZG9ubHk6ZyxleHBlY3Q6JC50eXBlKGMudmFsdWUpfSkudGhlbihmdW5jdGlvbigpe3ZhciBiPWEuUlQoIkVkaXRvckludm9rZWQiKTsiZnVuY3Rpb24iPT10eXBlb2YgYiYmYih4LGEpfSl9fX0uZGVib3VuY2UoMTUpKSxhLm15LnJvb3QoKS5vbigiZWRpdG9yY29tbWl0Lm15IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBjPWooIj4uaW5hdiIpLGk9YS5kYXRhLGw9IiI7aWYoYy5oYXNDbGFzcygiaXNlZGl0b3IiKSl7dmFyIG0sbixvPWkudmFsdWUscD1PYmplY3QuY2xvbmUobywhMCkscT1qKCI+LmluYXY+LmllZGl0b3IiKS5teSgiZGF0YSIpLnRleHQ7ZT8obT1mKHEpLCQudHlwZShvKT09JC50eXBlKG0pPyhnKGkudmFsdWUsbSksYS5teS5yZWRyYXcoKSk6KChuPWEubXkucGFyZW50KCkpLmRhdGEudmFsdWVbaS5rZXldPW0saS52YWx1ZT1uLmRhdGEudmFsdWVbaS5rZXldLGEuUlQoIkxpYiIpLnJlbGlzdChuLm15LnJvb3QoKSxuKSkpOiJudW1iZXIiPT1kP251bGwhPWgocSxudWxsKT9pLnZhbHVlPWgocSxudWxsKTpsPSJFeHByZXNzaW9uIG11c3QgcmV0dXJuIGEgbnVtYmVyIjppLnZhbHVlPXEsbD9jdy5saWIubm90ZShsLCJlcnJvciIsM2UzKTooYS5Ob2RlVXBkYXRlZChbaS5wYXRoLGkua2V5XSxwLGkudmFsdWUpLGZ1bmN0aW9uKCl7ayghMCksImZ1bmN0aW9uIj09dHlwZW9mIGI/YihpLnZhbHVlLG8pOmV8fGooIj4uaW5hdj4uaXZhbHVlIikudHJpZ2dlcigiY2hlY2siKX0uZGVsYXkoMTApKX19KS5vbigiZWRpdG9yY2FuY2VsLm15IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpLGsoZSwhMCl9KX0sTXV0YXRlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1iLmRvYyxkPWIudmlld3N0YXRlLGU9T2JqZWN0LmlzT2JqZWN0LGY9T2JqZWN0LmlzQXJyYXksZz1hLlBhdGhTaWc7SlNPTi5zdHJpbmdpZnk7aWYoIWUoeCkpcmV0dXJue2Vycm9yOiJJbnZhbGlkIHBhcmFtcyJ9O3ZhciBoPSQuZXh0ZW5kKHtwYXRoOm51bGwsY3R4Om51bGwsb3A6InVwZCIsdmFsOnZvaWQgMCxleHBhbmQ6ITEsYmxpbms6ITEsZWRpdDohMX0seCk7aWYoIWYoaC5wYXRoKSlyZXR1cm57ZXJyb3I6IkludmFsaWQgcGF0aCJ9O3ZhciBpPVsiUm9vdCJdLmNvbmNhdChoLnBhdGguZmxhdHRlbigpKSxqPWkucG9wKCksaz1pLnNsaWNlKDEpLGw9L14obm9wfGluc3xkZWx8dXBkKSQvLnRlc3QoaC5vcCk/aC5vcDpudWxsO2lmKG51bGw9PWwpcmV0dXJue2Vycm9yOiJJbnZhbGlkIG9wIn07aWYoL14oaW5zfHVwZCkkLy50ZXN0KGwpJiZ2b2lkIDA9PT1oLnZhbClyZXR1cm57ZXJyb3I6Ik5vIHZhbHVlIn07dmFyIG0sbixvLHAscT17fSxyPTA7aWYoIm5vcCIhPT1sKXtpZihudWxsPT0obT16KGMsaykpKXJldHVybntlcnJvcjoiTm9kZSBpcyB1bnJlYWNoZWFibGUifTtpZihmKG0pKXtpZihqPStqLGlzTmFOKGopfHxqPDB8fGohPSgwfGopKXJldHVybntlcnJvcjoiSW52YWxpZCBub2RlIGluZGV4In07aWYoImlucyI9PWwmJmo+bS5sZW5ndGgmJihqPW0ubGVuZ3RoKSwvXihkZWx8dXBkKSQvLnRlc3QobCkmJmo+bS5sZW5ndGgtMSlyZXR1cm57ZXJyb3I6Ik5vZGUgaW5kZXggaXMgb3V0IG9mIGFycmF5In19fWUobSkmJiFtLmhhc093blByb3BlcnR5KGopJiZoLmN0eCYmKGw9ImlucyIpLCJ1cGQiPT1sP21bal09aC52YWw6ImRlbCI9PWw/ZihtKT9tLnJlbW92ZUF0KGopOmRlbGV0ZSBtW2pdOiJpbnMiPT1sJiYoZihtKT9tLmluc2VydChmKGgudmFsKT9baC52YWxdOmgudmFsLGopOiEobz1oLmN0eCl8fCFmKG8pfHxvLmxlbmd0aDwyP21bal09aC52YWw6KChwPShuPU9iamVjdC5rZXlzKG0pKS5pbmRleE9mKG9bMF0pKT4tMT9yPXArMToocD1uLmluZGV4T2Yob1sxXSkpPi0xJiYocj1wLmNsYW1wKDAsMWU2KSksbi5zbGljZShyKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3FbeF09bVt4XSxkZWxldGUgbVt4XX0pLG1bal09aC52YWwsbi5zbGljZShyKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe21beF09cVt4XSxkZWxldGUgcVt4XX0pKSk7dmFyIHMsdCx1PWcoaSxqKSx2PVtdLHc9IiI7aWYoKHY9aS5tYXAoZnVuY3Rpb24oeCxhKXtyZXR1cm4gZyhpLnRvKGErMSkpfSkuc2xpY2UoMSkpLmZvckVhY2goZnVuY3Rpb24oeCl7dz13fHwyPT1kW3hdP3c6eH0pLHd8fCh3PXYubGFzdCgpfHxjdy5saWIuc2RibSgiUm9vdCIpKSxzPWEubXkuZmluZCgiLmVkLW5vZGUtIit3KS5teSgibWFuaWZlc3QiKSxoLmV4cGFuZCYmKHYuZm9yRWFjaChmdW5jdGlvbih4KXtkW3hdPTJ9KSxkW3VdPWYoaC52YWwpfHxlKGgudmFsKT8yOjEscy5kYXRhLnN0YXRlPTIpLDI9PXMuZGF0YS5zdGF0ZSYmKHMuTGlzdD1zLk1ha2VMaXN0KHMuZGF0YSkpLHQ9YS5teS5maW5kKCIuZWQtbm9kZS0iK3UpLCJ1cGQiPT1sJiZ0Lmxlbmd0aCYmJC50eXBlKHQubXkoImRhdGEiKS52YWx1ZSk9PSQudHlwZShoLnZhbCkpe3ZhciB5PXQubXkoImRhdGEiKTt5LnZhbHVlPWgudmFsLGEuaXNMaXN0W3kubWFuaWZlc3RdJiYyJnkuc3RhdGUmJih0Lm15KCJtYW5pZmVzdCIpLkxpc3Q9dC5teSgibWFuaWZlc3QiKS5NYWtlTGlzdCh5KSksdC5teSgicmVkcmF3Iil9ZWxzZSAyPT1zLmRhdGEuc3RhdGUmJihzLkxpc3Q9cy5NYWtlTGlzdChzLmRhdGEpKSxzLm15LnJlZHJhdygpO3JldHVybiBoLmV4cGFuZCYmYS5NZW1TdGF0ZVNhdmUoKSxoLmV4cGFuZCYmaC5ibGluayYmZnVuY3Rpb24oKXt2YXIgeD1hLm15LmZpbmQoIi5lZC1ub2RlLSIrKCJkZWwiIT1sP3U6di5sYXN0KCkpKSxiPU9iamVjdC5pc1N0cmluZyhoLmJsaW5rKT9oLmJsaW5rOiJvcmFuZ2UiO3guYWRkQ2xhc3MoYiksZnVuY3Rpb24oKXt4LnJlbW92ZUNsYXNzKGIpfS5kZWxheSg1MDApfS5kZWxheSgxMDApLHtvazohMCxleHBhbmRlZDp2fTtmdW5jdGlvbiB6KHgsYSl7Zm9yKHZhciBiPXgsYz1hLmxlbmd0aCxkPTA7ZDxjJiZudWxsIT1iO2QrKyliPWJbYVtkXV0sZShiKXx8ZihiKXx8KGI9bnVsbCk7cmV0dXJuIGJ9fSxTZWFyY2g6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXt9LGM9YS5TZWFyY2hSZXx8eDtpZighYylyZXR1cm4gYS5kYXRhLmZvdW5kPXt9O2EuSW5kZXguZGlydHkmJihhLkluZGV4LmlkeD1rKGEuRG9jLnZhbHVlKSxhLkluZGV4LmRpcnR5PSExKTtmb3IodmFyIGQsZT1jdy5saWIuc2RibSxmPTAsZz1hLkluZGV4LmlkeCxoPTAsaT0wO2g8Zy5sZW5ndGg7aCsrKWlmKGY9MCxpPShkPWdbaF0pLnAubGVuZ3RoLGMudGVzdChkLmspJiYoZnw9NCksZC52JiZjLnRlc3QoZC52KSYmKGZ8PTgpLGYpZm9yKHZhciBqPTE7ajxpO2orKyliW2UoZC5wLnNsaWNlKDAsaikuam9pbigi4p2AIikrIuKdgCIrZC5wW2pdKV09aj09aS0xP2Y6MztyZXR1cm4gYS5kYXRhLmZvdW5kPWI7ZnVuY3Rpb24gayh4KXt2YXIgYT1bIlJvb3QiXSxiPVtdO2Z1bmN0aW9uIGMoeCl7T2JqZWN0LmtleXMoeCkuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZT0kLnR5cGUoeFtkXSk7Im9iamVjdCI9PWV8fCJhcnJheSI9PWU/KGEucHVzaChkKSxjKHhbZF0pLGIucHVzaCh7azpkLnRvTG93ZXJDYXNlKCkscDphLnNsaWNlKDApLHY6ITF9KSxhLnBvcCgpKToic3RyaW5nIj09ZT9iLnB1c2goe2s6ZC50b0xvd2VyQ2FzZSgpLHA6YS5zbGljZSgwKS5hZGQoZCksdjp4W2RdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1xyXG5cdFxzXSsvZywiICIpfSk6Yi5wdXNoKHtrOmQudG9Mb3dlckNhc2UoKSxwOmEuc2xpY2UoMCkuYWRkKGQpLHY6eFtkXSsiIn0pfSl9cmV0dXJuIGMoeCksYn19LEV2ZW50OnthZGQ6ZnVuY3Rpb24oeCxhLGIsYyl7eC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZD0kKHRoaXMpLGU9ZC5wYXJlbnRzKCIubXktZm9ybSIpLmVxKDApLGY9ZS5kYXRhKCJteSIpLmRhdGEsZz1lLmRhdGEoIm15IikubWFuaWZlc3QsaD0kLnR5cGUoZi52YWx1ZSksaT0iYXJyYXkiPT1oLGo9KGUubXkoImRhdGEiKS5rZXksYi5McygiQ2xpcCIpfHx7dHlwZToiIn0pLGs9e29iamVjdDp7fSxhcnJheTpbXSxzdHJpbmc6IiIsYm9vbGVhbjohMCxudW1iZXI6MH07ZC5wYXJlbnQoKS5hZGRDbGFzcygiaG92ZXIiKSxlLmFkZENsYXNzKCJob3ZlciIpLCQodGhpcykubW9kYWwoe21hbmlmZXN0OmIuTUFkZCxkYXRhOntjbWQ6InByZXBlbmQiLHRleHQ6WyJOZXcgIixpPyJtZW1iZXIiOiJwcm9wZXJ0eSIsJyBpbiZuYnNwOzxzcGFuIGNsYXNzPSJib2xkZXIgbnciPicsYi5VLnRhZ0Vtb2ppKGYua2V5LnRydW5jYXRlKDI1LCJtaWRkbGUiLCLigKYiKS5lc2NhcGVIVE1MKCkpLGk/IjpbXSI6Ijp7fSIsIjwvc3Bhbj4iXS5qb2luKCIiKSxwcmVwZW5kOmk/Ikluc2VydCI6IlByZXBlbmQiLGFwcGVuZDppPyIiOiJBcHBlbmQiLGlzYXJyYXk6aSxrZXk6aT8iMCI6IiIsY2xpcDpqLGtleXM6aT97fTpPYmplY3Qua2V5cyhmLnZhbHVlKS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4geFthXT0hMCx4fSx7fSksZmlsZTp7fX0sd2lkdGg6MzEwLGFsaWduOiJ0b3A6MTAzJTtyaWdodDotMTE0cHg7Iixyb290OmMsYm91bmQ6MSxub3NlOiJ0b3AiLHNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsY2xvc2U6ITEsZXNjOiEwLGVudGVyOiEwfSkudGhlbihmdW5jdGlvbih4KXt2YXIgYSxjLGQ9eC5jbWQsaj0hMCxsPVtdLG09W107aWYoeC5jbGlwLnR5cGUmJiJjbGlwIj09eC50eXBlJiYoay5jbGlwPXguY2xpcC52YWx1ZSksYz1PYmplY3QuY2xvbmUoImZpbGUiPT14LnR5cGU/eC5maWxlOmtbeC50eXBlXSwhMCkseC5pc2FycmF5fHwoInN0cmluZyI9PXgudHlwZSYmeC5maWxlLmRhdGE/Yz0iZGF0YToiK3guZmlsZS5jb250ZW50X3R5cGUrIjtiYXNlNjQsIit4LmZpbGUuZGF0YTpkZWxldGUgYy5uYW1lKSwxPT1mLmxldmVsJiYvXihfaWR8X3JldikkLy50ZXN0KHgua2V5KSlyZXR1cm4gY3cubGliLm5vdGUoIkNhbuKAmXQgY2hhbmdlIHN5c3RlbSBwcm9wZXJ0aWVzLiIsImVycm9yIiksdm9pZCAwO2lmKC9eKG9iKS8udGVzdChoKSlpZigiYXBwZW5kIj09ZHx8bnVsbCE9Zi52YWx1ZVt4LmtleV0pZi52YWx1ZVt4LmtleV09YyxuKCk7ZWxzZSBpZigicHJlcGVuZCI9PWQpe2ZvcihhIGluIGw9T2JqZWN0LmtleXMoZi52YWx1ZSkpbS5wdXNoKGYudmFsdWVbbFthXV0pLGRlbGV0ZSBmLnZhbHVlW2xbYV1dO2ZvcihhIGluIGYudmFsdWVbeC5rZXldPWMsbClsW2FdIT09eC5rZXkmJihmLnZhbHVlW2xbYV1dPW1bYV0pO209bD1udWxsLG4oKX1lbHNlIGo9ITE7ZWxzZSBpPyh4LmtleT0oK3gua2V5fHwwKS5jbGFtcCgwLGYudmFsdWUubGVuZ3RoKSsiIixmLnZhbHVlLmluc2VydChPYmplY3QuaXNBcnJheShjKT9bY106Yyx4LmtleSksbigpKTpqPSExO2Z1bmN0aW9uIG4oKXtiLk5vZGVVcGRhdGVkKFtmLnBhdGgsZi5rZXkseC5rZXldLHZvaWQgMCxjKX1qJiYoZy5MaXN0PWIuTWFrZUxpc3QoZiksZi5zdGF0ZT0yLGUuZmluZCgiLmlkZXNjOmVxKDApIikudHJpZ2dlcigiY2hlY2siKSxlLmZpbmQoIi5pbGlzdDplcSgwKSIpLnRyaWdnZXIoInJlY2FsYyIpKX0pLmFsd2F5cyhmdW5jdGlvbigpe2QucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhvdmVyIiksZS5yZW1vdmVDbGFzcygiaG92ZXIiKX0pfSx0YWtlb3V0OmZ1bmN0aW9uKHgsYSxiLGMpe3guc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGQ9JCh0aGlzKSxlPWQucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKSxmPWUuZGF0YSgibXkiKS5kYXRhLGc9ZS5kYXRhKCJteSIpLm1hbmlmZXN0LGg9T2JqZWN0LGk9KGguc2l6ZSxoLmNsb25lKSxqPWgubWVyZ2U7ZC5wYXJlbnQoKS5hZGRDbGFzcygiaG92ZXIiKSxlLmFkZENsYXNzKCJob3ZlciIpLGQubW9kYWwoe21hbmlmZXN0OmIuTVRha2VvdXQsZGF0YTp7anNvbjooYi50b2pzb258fEpTT04uc3RyaW5naWZ5KShmLnZhbHVlLG51bGwsIiAgIikscGF0aDpmLnBhdGgsa2V5OmYua2V5LHJlcGxhY2U6aC5zaXplKGYudmFsdWUpPyJSZXBsYWNlIjoiU2F2ZSIsZXh0ZW5kOmguc2l6ZShmLnZhbHVlKT8iRXh0ZW5kIjoiIn0sd2lkdGg6KGUud2lkdGgoKS0xNjApLmNsYW1wKDUwMCwxZTMpLGFsaWduOiJ0b3A6MTAzJTtyaWdodDotNzZweDsiLHJvb3Q6Yy5maW5kKCJzZWN0aW9uI2VkaXRvciIpLmVxKDApLG5vc2U6InRvcCIsc2NyZWVuOiJyZ2JhKDI1NSwyNTUsMjU1LDApIixjbG9zZTohMCxlc2M6ITAsZW50ZXI6ITAsYm91bmQ6Mn0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGEsYyxkLGs9ITA7ZnVuY3Rpb24gbCgpe2IuTm9kZVVwZGF0ZWQoW2YucGF0aCxmLmtleV0sYyxmLnZhbHVlKX1hPWIubXkucGFyZW50KCkmJmIubXkucGFyZW50KCkuZGF0YS5pc05ldz94Lm5vZGU6MD09Zi5sZXZlbD9oLnJlamVjdCh4Lm5vZGUsL14oX2lkfF9yZXYpJC8pOngubm9kZSwiZXh0ZW5kIj09eC5jbWQ/KGM9aShmLnZhbHVlLCEwKSxqKGYudmFsdWUsYSwhMCkpOiJyZXBsYWNlIj09eC5jbWQ/KGM9aShmLnZhbHVlLCEwKSxkPXt9LDA9PWYubGV2ZWwmJmYudmFsdWUuX3JldiYmKGQ9aC5zZWxlY3QoZi52YWx1ZSwvXihfaWR8X3JldikkLykpLGIuUlQoIkxpYiIpLmtpY2soZi52YWx1ZSxhKSwwPT1mLmxldmVsJiZqKGYudmFsdWUsZCkpOms9ITEsayYmKGYuc3RhdGU9MixsKCksYi5SVCgiTGliIikucmVsaXN0KGUsZykpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5wYXJlbnQoKS5yZW1vdmVDbGFzcygiaG92ZXIiKSxlLnJlbW92ZUNsYXNzKCJob3ZlciIpfSl9fSxIVE1MOntNYWluOic8c2VjdGlvbiBzdHlsZT0iIj48c2VjdGlvbiBpZD0iZWRpdG9yIiBjbGFzcz0iZGliIHcxMDBwIj48ZGl2IGNsYXNzPSJwYjUgZnMxMzAgbm9jd21pbiI+PGRpdiBpZD0iZG9jdGl0bGUiIGNsYXNzPSJmczExMCB3NjBwIHB0NCBib2xkZXIgZGliIHZhdCB4Z3JheSBudyBvaCBlbGwgcHIxMCIgPjwvZGl2PjxkaXYgY2xhc3M9IncyMHAgZnM5MCBkaWIgdmF0Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIHhncmF5IG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Impzb24tc2VhcmNoIiBjbGFzcz0idWktc2VhcmNoIHcxMDBwIG1sMCBtcjAgbXQwIHByMTAiIHBsYWNlaG9sZGVyPSJTZWFyY2giIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxOXB4IWltcG9ydGFudDsiPjxzcGFuIGNsYXNzPSJmaS14IGZzODAgZGliIHZhdCBwdDIgYmx1ZSB1aS1zZWFyY2gtY2xlYXIiIHN0eWxlPSJtYXJnaW4tbGVmdDotMTlweCFpbXBvcnRhbnQ7Im9uY2xpY2s9IiQodGhpcykuc2libGluZ3MoXCdpbnB1dDplcSgwKVwnKS52YWwoXCdcJykudHJpZ2dlcihcJ2NoZWNrLm15XCcpIj48L3NwYW4+PC9kaXY+PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIG1yMCBmciB3MTUwIGZzOTAiIGlkPSJidG4tc2F2ZSI+U2F2ZTwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9ImRvYyIgY2xhc3M9Imlyb3dcdHhncmF5Ij48L2Rpdj48L3NlY3Rpb24+PC9zZWN0aW9uPicsSXRlbVNpbXBsZTonPGRpdiBjbGFzcz0iaW5hdiI+PGRpdiBjbGFzcz0iaWtleSBpa2V5c2ltcGxlIj48L2Rpdj48ZGl2IGNsYXNzPSJpdmFsdWUiPjwvZGl2PjxkaXYgY2xhc3M9ImllZGl0b3IiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImlhY3QgYnV0dG9ucyI+PGJ1dHRvbiBjbGFzcz0iYnRuLWRlbCBidXR0b24gcmVkIiB0aXRsZT0iRGVsIHByb3BlcnR5Ij4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS10cmFzaCI+PC9zcGFuPiZ0aGluc3A7PC9idXR0b24+PC9kaXY+JyxJdGVtQ29tcGxleDonPGRpdiBjbGFzcz0iaW5hdiI+PGRpdiBjbGFzcz0iaWtleSBpa2V5dHJlZSI+PC9kaXY+PHNlY3Rpb24gY2xhc3M9ImlkZXNjIGNwIiB0aXRsZT0iRWRpdCBhcyByYXcgSlNPTiI+4oCTPC9zZWN0aW9uPjxkaXYgY2xhc3M9ImllZGl0b3IiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGNsYXNzPSJpdmFsdWUgaW11bHRpIGhpZGUiPjxkaXYgY2xhc3M9ImlsaXN0Ij48L2Rpdj48L3NlY3Rpb24+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGNsYXNzPSJidG4tYWRkIGJ1dHRvbiBncmVlbiIgdGl0bGU9IkFkZCBuZXcgcHJvcGVydHkiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXBsdXMiPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1qc29uIGhpZGUiPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgYnV0dG9uIHJlZCIgIHRpdGxlPSJEZWwgbm9kZSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2Pid9LHN0eWxlOnsiICI6ImZvbnQtc2l6ZToxNXB4O2ZvbnQtZmFtaWx5OiAnLWFwcGxlLXN5c3RlbScsJ0JsaW5rTWFjU3lzdGVtRm9udCcsJ0hlbHZldGljYSBOZXVlJywnU2Vnb2UgVUknLEhlbHZldGljYSxUYWhvbWEsVmVyZGFuYSxTYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjQwMDttaW4taGVpZ2h0OjUwMHB4OyBtYXgtd2lkdGg6MTkwMHB4OyIsIiAuYm9sZGVyIjoiZm9udC13ZWlnaHQ6Ym9sZGVyOyIsIiAuY3QiOiJjdXJzb3I6dGV4dDsiLCIgI2RvY3RpdGxlIjpmdW5jdGlvbih4LGEsYil7cmV0dXJuIndpZHRoOiIrKHgud2lkdGgoKS5jbGFtcCgwLDE1MDApLTIyMC0yMC0xNDQpKyJweCJ9LCIgIC5pcm93IjpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGF0YS5sYWJlbFdpZHRoO3JldHVybnsiIC5pa2V5Ijoid2lkdGg6Iit4KyJweDsiLCIgLmluYXYiOiJwYWRkaW5nLWxlZnQ6Iit4KyJweDsiLCIgLmluYXY+LmlrZXkiOiJtYXJnaW4tbGVmdDotIit4KyJweDsifX0sIiAuaXJvb3QgLmlrZXkiOiJjdXJzb3I6bnMtcmVzaXplOyIsIiAuanZhbC1icmFja2V0IjoiZm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjogcmdiYSgwLDE4MSwxNjEsMC43Mik7IiwiIC5qdmFsLXRyaW0iOiJkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjJweDtwYWRkaW5nOjBweCAycHggMXB4IDJweDtsaW5lLWhlaWdodDoxLjFlbTtjb2xvcjpyZ2JhKDIxMywgNDgsIDg5LCAwLjYzKTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNDMsMTA3LDE5MiwwLjA3KTsiLCIgLmp2YWwtc2hvcnQiOiJjb2xvcjpyZ2JhKDg4LDEwMSwxMjMsMC42Myk7IiwiIC5qdmFsLWVtcHR5IjoiY29sb3I6cmdiYSg4OCwxMDEsMTIzLDAuNjMpOyIsIiAuanZhbC1rZXkiOiJmb250LXdlaWdodDppbmhlcml0O21hcmdpbi1sZWZ0OjNweDsiLCIgLmp2YWwtYnJhY2tldCsuanZhbC1rZXkiOiJtYXJnaW4tbGVmdDoxcHg7IiwiIC5qdmFsLXNpbXBsZSI6ImNvbG9yOnJnYmEoMjU1LDk3LDAsMC44Nyk7IiwiIC5qdmFsLXVuZGVmaW5lZCI6ImNvbG9yOnJnYmEoMjIwLDIyNywyMzAsMC44Nyk7IiwiIC5qdmFsLW51bWJlciI6ImNvbG9yOnJnYmEoNTIsMTQzLDI3LDAuOCkiLCIgLmp2YWwtbnVsbCI6ImNvbG9yOnJnYmEoMjE0LDAsMjYsMC44KSIsIiAuanZhbC1zdHJpbmciOiJjb2xvcjpyZ2JhKDMwLDY1LDE2NCwwLjgpOyIsIiAuanZhbC1mdW5jdGlvbiI6ImNvbG9yOnJnYmEoMTQzLDM2LDE1OCwwLjgpOyIsIiAuanZhbC1mb3VuZC1rZXkiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIyMSwwLDAuNyk7cGFkZGluZy1sZWZ0OjFweDtwYWRkaW5nLXJpZ2h0OjFweDtib3JkZXItcmFkaXVzOjJweDsiLCIgLmlyb290Pi5pZWRpdG9yIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDEyMHB4KTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93LXk6c2Nyb2xsOyIsIiI6eyIgdGV4dGFyZWEiOiJmb250LWZhbWlseTpDb3VzaW5lLCdQVCBNb25vJyxNb25hY28sJ0x1Y2lkYSBDb25zb2xlJyxtb25vc3BhY2U7IiwiIC5pcm93Ijoid2lkdGg6Y2FsYygxMDAlIC0gMXB4KTtkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBwYWRkaW5nOjBweCAwcHggMHB4IDI1cHg7IGJvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDcwLDEwNSwxMzUsMC4yNSk7IGxpbmUtaGVpZ2h0OjEuM2VtOyBtYXJnaW4tbGVmdDoxcHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXM7IiwiIC5pcm93OmJlZm9yZSI6J2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE1cHg7bGVmdDowO3dpZHRoOjE4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSg3MCwxMDUsMTM1LDAuMjUpOycsIiAuaXJvdzpsYXN0LWNoaWxkIjoiYm9yZGVyOm5vbmU7IiwiIC5pcm93Omxhc3QtY2hpbGQ6YWZ0ZXIiOidjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTVweDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSg3MCwxMDUsMTM1LDAuMjUpOycsIiAuaXJvdzpob3ZlciwuaXJvdy5ob3ZlciI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyMDYsIDIxNCwgMjI2LCAwLjIpOyIsIiAuaWtleSI6InBhZGRpbmctcmlnaHQ6MTBweDtkaXNwbGF5OmlubGluZS1ibG9jazsgd29yZC1icmVhazpicmVhay1hbGw7Zm9udC1zaXplOjk1JTsgbGluZS1oZWlnaHQ6MS4yZW07b3BhY2l0eTowLjg7IG92ZXJmbG93OmhpZGRlbjt2ZXJ0aWNhbC1hbGlnbjp0b3A7bWFyZ2luOjAuMjVlbSAwIDAuM2VtIDBweDsiLCIgLmlrZXl0cmVlIjoiY3Vyc29yOiBucy1yZXNpemU7IiwiIC5pbGFiZWwiOiJmb250LXNpemU6ODAlO3BhZGRpbmc6MCA1cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC4wNSk7IGJvcmRlci1yYWRpdXM6MnB4O29wYWNpdHk6MC45OyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luOi0xcHggNXB4IDAgMHB4OyIsIiAuaXZhbHVlLCAuaWxpc3QiOiJ3b3JkLWJyZWFrOiBicmVhay1hbGw7IiwiIC5pdmFsdWUiOiJsaW5lLWhlaWdodDogMS42ZW07Y3Vyc29yOnBvaW50ZXI7IiwiIC5pZGVzYyI6ImxpbmUtaGVpZ2h0OiAxLjVlbTsiLCIgLml2YWx1ZSwgLmlsaXN0LCAuaWRlc2MiOiJ3aWR0aDoxMDAlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyIsIiAuaWRlc2MgLmltb2RlIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgZm9udC1zaXplOjk1JTsgbGluZS1oZWlnaHQ6MS41ZW07IG1hcmdpbi1sZWZ0OjIwcHg7IiwiIC5pbW9kZSA+IHNwYW4iOiJkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzowZW0gMC41ZW07IG1hcmdpbi1yaWdodDowLjBlbTsgYm9yZGVyLXJhZGl1czoycHg7IGJvcmRlcjogMXB4IHNvbGlkICM0MzRlNWQwMDsgY29sb3I6IzQzNGU1ZDkwOyIsIiAuaW1vZGUubW9kZS10cmVlIC5tb2RlLXRyZWUsIC5pbW9kZS5tb2RlLWpzb24gLm1vZGUtanNvbiwgLmltb2RlLm1vZGUtanMgLm1vZGUtanMsIC5pbW9kZS5tb2RlLWRpZmYgLm1vZGUtZGlmZiI6ImNvbG9yOiM0MzRlNWRjMDsgYmFja2dyb3VuZC1jb2xvcjogIzQzNGU1ZDFhOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyIsIiAuaW11bHRpLml2YWx1ZSI6ImN1cnNvcjppbmhlcml0OyIsIiAuaXNlZGl0b3IgLml2YWx1ZSI6IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6cHJlOyBwYWRkaW5nOjAuMmVtIDAuM2VtIDAuMmVtIDAuNGVtOyBmb250LWZhbWlseTpDb3VzaW5lLCdQVCBNb25vJyxNb25hY28sJ0x1Y2lkYSBDb25zb2xlJyxtb25vc3BhY2U7IG1heC1oZWlnaHQ6NDAwcHg7IG92ZXJmbG93OmF1dG87b3ZlcmZsb3c6b3ZlcmxheTsgb3V0bGluZTpub25lOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4yKTsgZm9udC1zaXplOjkwJTsgYm9yZGVyLXJhZGl1czoycHg7bWFyZ2luOi0xcHggMCAtMXB4IDA7IHRhYi1zaXplOjI7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI0MCwwLjgpOyBjdXJzb3I6dGV4dDsiLCIgLmlzZWRpdG9yfi5pdmFsdWUiOiJkaXNwbGF5Om5vbmU7IiwiIC5pYm9vbGVhbi10YWciOiJwYWRkaW5nOjAgOXB4IDFweCA5cHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IGJvcmRlci1yYWRpdXM6MTAwcHg7IiwiIC5pc2VkaXRvciAuaWVkdHlwZSI6InBvc2l0aW9uOmFic29sdXRlOyB0b3A6NnB4OyByaWdodDo4NnB4OyBmb250LXNpemU6IDAuOGVtOyBsaW5lLWhlaWdodDogMS4yZW07IGJvcmRlci1yYWRpdXM6MjBweDsgcGFkZGluZzogMCA1cHggMXB4IDVweDsiLCIgLmluYXYiOiJtYXJnaW46MnB4IDA7IiwiIC5pbmF2IC5pZWRpdG9yIjoid2lkdGg6MTAwJTtkaXNwbGF5Om5vbmU7d29yZC1icmVhazpub3JtYWw7IiwiIC5pbmF2IC5pdmFsdWUuaGlkZX4uaWVkaXRvciI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuaW5hdiAuaWRlc2MuaGlkZX4uaWVkaXRvciI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuaW5hdiAuaWVkaXRvciAuaWNtZnJhbWUiOiJvdmVyZmxvdzpoaWRkZW47IGJvcmRlcjoxcHggc29saWQgI2QxZGZlOTsgYm9yZGVyLXJhZGl1czoycHg7IiwiIC5pbmF2IC5pZWRpdG9yIC5idXR0b24iOiJwYWRkaW5nOiAwLjI1ZW0gMC43ZW0gMC4xNWVtIDAuN2VtO21hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDA7IiwiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjEzLjJweDsgZm9udC1mYW1pbHk6Q291c2luZSwnUFQgTW9ubycsTW9uYWNvLG1vbm9zcGFjZTsgbGluZS1oZWlnaHQ6MS40ZW07IGNvbG9yOiAjNDM0ZTVkOyIsIiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1heC1oZWlnaHQ6Y2FsYygyMCAqIDE2cHggKyA2cHgpOyIsIiAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6InRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsiLCIgLmVkLWVycm9yIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyIsIiAuQ29kZU1pcnJvciAuY20tcHJvcGVydHkiOiJjb2xvcjojNDM0ZTVkOyIsIiAuQ29kZU1pcnJvciAuY20tdmFyaWFibGUiOiJjb2xvcjojMzNiZmFkOyIsIiAuQ29kZU1pcnJvciAuY20ta2V5d29yZCI6ImNvbG9yOiM5MDI1OWU7IiwiIC5Db2RlTWlycm9yLnJlYWRvbmx5IjoiYmFja2dyb3VuZC1jb2xvcjojZjhmOWZhOyBvcGFjaXR5OiAwLjg7IiwiIC5teS1tb2RhbC1mb3JtIC5Db2RlTWlycm9yIjoibWluLWhlaWdodDoxNTBweDsgaGVpZ2h0OmF1dG87IiwiIC5teS1tb2RhbC1mb3JtIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MTUwcHg7IiwiIC5pbmF2IC5pZWRpdG9yIC5Db2RlTWlycm9yIjoibWluLWhlaWdodDoyNXB4OyBoZWlnaHQ6YXV0bzsiLCIgLmlhY3QiOiJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjNweDsgcmlnaHQ6M3B4O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcztib3JkZXItcmFkaXVzOjNweDsiLCIgLmlhY3Q6aG92ZXIsIC5pYWN0LmhvdmVyIjoiZGlzcGxheTpibG9jaztvcGFjaXR5OjEhaW1wb3J0YW50OyIsIiAuaW5hdjpob3Zlcn4uaWFjdCI6ImRpc3BsYXk6YmxvY2s7b3BhY2l0eTowLjc7IiwiIC5pYWN0IC5idXR0b24iOiJwYWRkaW5nOjAuMjVlbSAwIDAuMTVlbSAwO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MzZweDt3aGl0ZS1zcGFjZTpub3dyYXA7IiwiIC5pbmF2LmlzZWRpdG9yfi5pYWN0IjoiZGlzcGxheTpub25lOyIsIiAjZG9jIjoicGFkZGluZzowOyBib3JkZXI6bm9uZTtvdmVyZmxvdzp2aXNpYmxlOyIsIiAjZG9jOmJlZm9yZSwgI2RvYzphZnRlciI6ImRpc3BsYXk6bm9uZTsiLCIgI2RvYzpob3ZlciI6ImJhY2tncm91bmQ6d2hpdGU7IiwiICNkb2M+LmluYXYiOiJwYWRkaW5nLWxlZnQ6MTIwcHg7IiwiICNkb2M+LmluYXYgLmlrZXkiOiJmb250LXNpemU6MTA1JTtmb250LXdlaWdodDpib2xkO21hcmdpbjowIDAgMCAtMTIwcHg7d2lkdGg6MTIwcHg7IiwiICNkb2M+LmlhY3QiOiJvcGFjaXR5OjAuMzt0b3A6MDtyaWdodDowOyIsIiAudGFnLmFjdGl2ZSI6ImJhY2tncm91bmQtY29sb3I6IHJnYmEoMTM1LCAyMTIsIDAsIDAuMTcpIWltcG9ydGFudDtjb2xvcjogcmdiKDY1LCAxMzIsIDApIWltcG9ydGFudDsiLCIgLmJ1dHRvbnMgYnV0dG9uIjoiYm9yZGVyLXJhZGl1czowO21hcmdpbi1yaWdodDoycHg7IHBhZGRpbmc6MC40ZW0gMC43ZW0gMC40ZW0gMC43ZW07d2lkdGg6MzZweDtmb250LXNpemU6OTAlOyIsIiAuYnV0dG9ucyBidXR0b246bGFzdC1jaGlsZCI6ImJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4OyBtYXJnaW4tcmlnaHQ6MDsiLCIgLmJ1dHRvbnMgYnV0dG9uOmZpcnN0LWNoaWxkIjoiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4OyIsIiAuYnV0dG9ucyAuYnV0dG9uIjoiYm9yZGVyLXJhZGl1czowO21hcmdpbi1yaWdodDoycHg7IiwiIC5idXR0b25zIC5idXR0b246bGFzdC1jaGlsZCI6ImJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4OyBtYXJnaW4tcmlnaHQ6MDsiLCIgLmJ1dHRvbnMgLmJ1dHRvbjpmaXJzdC1jaGlsZCI6ImJvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweDsiLCIgYS5iYXNlNjRpbWFnZSBpbWciOiJiYWNrZ3JvdW5kOiB3aGl0ZTsgYm9yZGVyOiAxcHggc29saWQgI2RkZCFpbXBvcnRhbnQ7IHBhZGRpbmc6IDNweDsgbWF4LXdpZHRoOiAxMCU7IG1pbi13aWR0aDogMiU7IG1heC1oZWlnaHQ6IDYwcHg7IiwiIC5iYXNlNjRpbWFnZX5kaXYiOiJ3aWR0aDo4NyU7IiwiIC5iYXNlNjRpY29+ZGl2Ijoid2lkdGg6ODclOyIsIiAudzU1Ijoid2lkdGg6NTVweDsiLCIgLmg1NSI6ImhlaWdodDo1NXB4OyJ9fSxNVGFrZW91dDp7aW5oZXJpdDpbIlUiXSxpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztiLlV8fChiLlU9e3RhZ0Vtb2ppOmZ1bmN0aW9uKHgpe3JldHVybiB4fX0pLGIuU3RhcnRIYXNoPSQubXkuZi5zZGJtQ29kZShhLmRhdGEuanNvbiksYi5kYXRhLmpzb249IigiK2IuZGF0YS5qc29uKyIpIix4Lmh0bWwoYi5IVE1MKX0sSFRNTDonPGRpdiBpZD0idGl0bGUiIGNsYXNzPSJtYjUgZnMxMDUgYm9sZGVyIj48L2Rpdj48ZGl2IGNsYXNzPSJuZWVkc2NsaWNrIiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjZGRkOyBtYXJnaW46MnB4IDAgOHB4IDA7Ym9yZGVyLXJhZGl1czoycHgiPjx0ZXh0YXJlYSBpZD0ianNvbiIgYXV0b2NvbXBsZXRlPSJvZmYiIGF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RleHRhcmVhPjwvZGl2PjxkaXY+PGRpdiBjbGFzcz0iZnIgZ3JheSBwdDUiIGlkPSJpbmZvIj48L2Rpdj48ZGl2IGNsYXNzPSJidXR0b25zIGRpYiB2YXQgZnMxMTAgbXQ0Ij48YnV0dG9uIGNsYXNzPSJidXR0b24gdzkwIiBpZD0iYnRuLXJlcGxhY2UiPlJlcGxhY2U8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidXR0b24gdzkwIiBpZD0iYnRuLWV4dGVuZCI+RXh0ZW5kPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHc5MCIgaWQ9ImJ0bi1jYW5jZWwiPkNhbmNlbDwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9ImxncmF5IHBsMzAgZGliIHZhdCBwdDUiIGlkPSJpbmZvIj5KU09OIG9yIGpzIGV4cHJlc3Npb24g4oehPC9kaXY+PGRpdiBjbGFzcz0icGwzMCBkaWIgdmF0IHB0NSBvNzAiPjxzcGFuIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiIgaWQ9ImJ0bi1zdHJpcCIgdGl0bGU9IlJlbW92ZXMgYWxsIF8qIHN5c3RlbSBmaWVsZHMgZXhjZXB0IF9pZCBhbmQgX2F0dGFjaG1lbnRzIj5TdHJpcCBfIGtleXM8L3NwYW4+PC9kaXY+PC9kaXY+JyxDTXByZWZpeDoiamkiLHVpOnsiI3RpdGxlIjpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztyZXR1cm4iSlNPTiBmb3IgIit4LnBhdGguc2xpY2UoMCkuYWRkKHgua2V5KS5tYXAoeD0+ZSh4LDI1KSkuam9pbigiLyIpO2Z1bmN0aW9uIGQoeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX1mdW5jdGlvbiBlKHgsYSl7cmV0dXJuIGMuVS50YWdFbW9qaShkKCh4KyIiKS50cnVuY2F0ZShhfHwxNSwibWlkZGxlIiwi4oCmIikpKX19LCIjanNvbiI6e2RlbGF5OjIwLGJpbmQ6Impzb24iLGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLmpzb24ubGVuZ3RoPDVlNTtDb2RlTWlycm9yLmZyb21UZXh0QXJlYSh4WzBdLHttb2RlOmIuQ01wcmVmaXgrKGM/ImphdmFzY3JpcHQiOiJ0ZXh0IiksbGluZU51bWJlcnM6Yyx2aWV3cG9ydE1hcmdpbjoxMDAsaW5kZW50V2l0aFRhYnM6ITAsaW5kZW50VW5pdDoyLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIsYXV0b2ZvY3VzOiEwfSl9fSwiI2J0bi1yZXBsYWNlIjp7YmluZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIG51bGwhPWEmJih4Lm5vZGU9dGhpcy5QYXJzZWQseC5jbWQ9InJlcGxhY2UiLGIudHJpZ2dlcigiY29tbWl0IikpLHgucmVwbGFjZX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLkRpcnR5fHwhdGhpcy5QYXJzZWR9LCJzZWxmOm9yYW5nZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5EaXJ0eSYmISF0aGlzLlBhcnNlZH19LHdhdGNoOiIjaW5mbyJ9LCIjYnRuLWV4dGVuZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsIT1hJiYoeC5ub2RlPXRoaXMuUGFyc2VkLHguY21kPSJleHRlbmQiLGIudHJpZ2dlcigiY29tbWl0IikpLHguZXh0ZW5kfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuRGlydHl8fCF0aGlzLlBhcnNlZH0sInNlbGY6b3JhbmdlIjpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLkRpcnR5JiYhIXRoaXMuUGFyc2VkfSwic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4heC5leHRlbmR9fSx3YXRjaDoiI2luZm8ifSwiI2J0bi1jYW5jZWwiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiZiLnRyaWdnZXIoImNhbmNlbCIpfX0sIiNidG4tc3RyaXAiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzLlBhcnNlZCxkPVsiX2lkIiwiX2F0dGFjaG1lbnRzIl0ucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHZvaWQgMCE9PWNbYV0mJih4W2FdPWNbYV0pLHh9LHt9KTt0aGlzLlBhcnNlZD0kLmV4dGVuZChkLE9iamVjdC5yZWplY3QodGhpcy5QYXJzZWQsL15fLykpLHguanNvbj0iKCIrJC5teS50b2pzb24odGhpcy5QYXJzZWQsIiAgIikrIikiLHRoaXMubXkucmVjYWxjKCIjanNvbiIpfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlBhcnNlZHx8IU9iamVjdC5rZXlzKHRoaXMuUGFyc2VkKS5maW5kQWxsKC9eXy8pLnJlbW92ZSgiX2lkIikucmVtb3ZlKCJfYXR0YWNobWVudHMiKS5sZW5ndGh9fSx3YXRjaDoiI2luZm8ifSwiI2luZm8iOntkZWxheTo0MDAsYmluZDpmdW5jdGlvbihkLHYsJG8pe3ZhciBwYXJzZSxzPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkLmpzb24pKS5sZW5ndGg7dHJ5e3BhcnNlPWV2YWwoIigiK2QuanNvbisiKSIpLHBhcnNlPU9iamVjdC5pc09iamVjdChwYXJzZSl8fE9iamVjdC5pc0FycmF5KHBhcnNlKT9KU09OLnBhcnNlKCQubXkudG9qc29uKHBhcnNlKSk6bnVsbH1jYXRjaCh4KXt9cmV0dXJuIHRoaXMuUGFyc2VkPXBhcnNlfHxudWxsLCRvLm15KCkucm9vdC50b2dnbGVDbGFzcygiZWQtZXJyb3IiLCFwYXJzZSksdGhpcy5IYXNoPSQubXkuZi5zZGJtQ29kZShkLmpzb24pLHRoaXMuRGlydHk9dGhpcy5TdGFydEhhc2ghPXRoaXMuSGFzaCxzLm1ldHJpYygyKSsiYiJ9LHdhdGNoOiIjanNvbiJ9fSxzdHlsZTp7IiAjanNvbiI6ImJvcmRlcjogbm9uZTsgd2lkdGg6IDEwMCU7ZGlzcGxheTogYmxvY2s7aGVpZ2h0OiAzMDBweDtmb250LXNpemU6IDAuN2VtO3dvcmQtd3JhcDogbm9ybWFsOyBvdmVyZmxvdy14OiBoaWRkZW47IiwiIC5Db2RlTWlycm9yIjp7IiI6Im1pbi1oZWlnaHQ6MTUwcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjEzcHghaW1wb3J0YW50OyIsIiAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHghaW1wb3J0YW50OyIsIiAuY20tcHJvcGVydHkiOiJjb2xvcjojNDM0ZTVkOyIsIiAuY20tdmFyaWFibGUiOiJjb2xvcjojMzNiZmFkOyIsIiAuY20ta2V5d29yZCI6ImNvbG9yOiM5MDI1OWU7In19fSxNQWRkOntpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpczt4LmZvcm1nZW4oYi5IVE1MKSxhLmRhdGEuaXNhcnJheSYmeC5maW5kKCIjbmtleSIpLmF0dHIoInR5cGUiLCJudW1iZXIiKX0sZGF0YTp7Y21kOiIiLGtleToiIix0eXBlOiJzdHJpbmciLGlzYXJyYXk6ITEsdGV4dDoiQ3JlYXRlIG5ldyBwcm9wZXJ0eSIscHJlcGVuZDoiUHJlcGVuZCIsYXBwZW5kOiJBcHBlbmQiLHVwbG9hZDonPHNwYW4gY2xhc3M9InBzZXVkb2xpbmsgZGliIHcxMDBwIHZhdCB0YWMiPlNlbGVjdCBmaWxlLi4uPC9zcGFuPicsa2V5czp7fSxmaWxlOnt9fSxDTXByZWZpeDoiIix1aTp7IiNudGV4dCI6InRleHQiLCIjbmtleSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguaXNhcnJheT94LmtleT1hLnJlcGxhY2UoL1xEL2csIiIpOngua2V5PWEpLHgua2V5fSx3YXRjaDoiI250eXBlIn0sIiNudHlwZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsIT1hJiYoeC50eXBlPWEsIkNsaXAiIT1hfHx4LmtleXx8eC5pc2FycmF5fHwoeC5rZXk9eC5jbGlwLmtleSkpLHgudHlwZX0saW5pdDpmdW5jdGlvbih4LGEpe3gudGFncyh7dGFnczpbW3sie09ian0iOiJvYmplY3QifSx7IltBcnJdIjoiYXJyYXkifSx7TnVtOiJudW1iZXIifSx7Qm9vbDoiYm9vbGVhbiJ9LHtGaWxlOiJmaWxlIn1dXSxlbXB0eTp7JyJTdHIiJzoic3RyaW5nIn0sdGFnY3NzOiJ0YWcgYmx1ZSBjcCBwbDUgcHI1Iix0YWdzaGltOiIiLGdyb3Vwc2hpbToiIn0pfSxyZWNhbGM6IiNua2V5dHlwZSJ9LCIjbmtleXR5cGUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlzYXJyYXk/IkluZGV4IjoiS2V5In0sIiN4dXBsb2FkIjp7d2F0Y2g6IiNudHlwZSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiJmaWxlIiE9eC50eXBlfX19LCIjdXBsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZCxlPXt9O251bGwhPWEmJmEmJigoYz1iWzBdLmZpbGVzWzBdKS5zaXplPngubGltaXQ/KGN3Lm5vdGUoIk1heCB1cGxvYWQgZmlsZSBzaXplIGlzICIrKDEqeC5saW1pdCkuYWJicigxKSsiYiIsImVycm9yIiksYi53cmFwKCI8Zm9ybT4iKS5jbG9zZXN0KCJmb3JtIikuZ2V0KDApLnJlc2V0KCkpOmMmJmZ1bmN0aW9uKCl7ZS5uYW1lPWMubmFtZSxlLmNvbnRlbnRfdHlwZT1jLnR5cGV8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iO3ZhciBhLGY9bmV3IEZpbGVSZWFkZXIsZz1bXTtmLm9ubG9hZD1mdW5jdGlvbihmKXthPW5ldyBVaW50OEFycmF5KGYudGFyZ2V0LnJlc3VsdCk7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKyspZy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYVtoXSkpO2Q9d2luZG93LmJ0b2EoZy5qb2luKCIiKSksZS5kYXRhPWQsZS5sZW5ndGg9Zy5sZW5ndGgsJC5leHRlbmQoeC5maWxlLGUpLHgua2V5fHx4LmlzYXJyYXl8fCh4LmtleT1jLm5hbWUpLCF4LmtleSYmeC5pc2FycmF5LGIud3JhcCgiPGZvcm0+IikuY2xvc2VzdCgiZm9ybSIpLmdldCgwKS5yZXNldCgpLGIubXkoImZpbmQiLCIuY3ctYXR0LXVwbG9hZD5zcGFuIikudGV4dChjLm5hbWUudHJ1bmNhdGUoMTUsIm1pZGRsZSIsIuKApiIpKyIgIitlLmxlbmd0aC5tZXRyaWMoMiwhMSkrImIiKSx4LmtleT09Yy5uYW1lJiZiLm15KCJmaW5kIiwiI25rZXkiKS52YWwoeC5rZXkpLnRyaWdnZXIoImJsdXIiKX0sZi5yZWFkQXNBcnJheUJ1ZmZlcihjKX0oKSl9LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC51cGxvYWR9fX0sIi5jdy1hdHQtdXBsb2FkIjoidXBsb2FkIiwiI2J0bi10bzAiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gbnVsbCE9YSYmKHguY21kPSJwcmVwZW5kIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LmtleXNbeC5rZXldJiYheC5pc2FycmF5PyJSZXBsYWNlIjp4LnByZXBlbmR9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgua2V5fSwic2VsZjpyZWQiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmtleXNbeC5rZXldJiYheC5pc2FycmF5fX0sd2F0Y2g6IiNua2V5In0sIiNidG4tdG8xIjp7YmluZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIG51bGwhPWEmJih4LmNtZD0iYXBwZW5kIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LmFwcGVuZH0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4heC5rZXl9LCJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiF4LmFwcGVuZHx8L15cZCskLy50ZXN0KHgua2V5KXx8eC5rZXlzW3gua2V5XX19LHdhdGNoOiIjbmtleSJ9LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJmIudHJpZ2dlcigiY2FuY2VsIil9fSxIVE1MOlsnPGRpdiBpZD0ibnRleHQiPjwvZGl2Picse2xhYmVsOiI1MHB4Iixyb3c6IjEwMCUiLHJvd0NzczoibXktcm93IHB0NSBwYjUiLGxhYmVsQ3NzOiJteS1sYWJlbCBncmF5IGZzOTAifSxbJzxzcGFuIGlkPSJua2V5dHlwZSI+S2V5PC9zcGFuPicsImlucCNua2V5LncxMDBwIiwibXNnLm10Mi5tYi0yIl0sWyJUeXBlIiwic3BuI250eXBlLmRpdi52YXQuZnM5NSJdLCc8ZGl2IGlkPSJ4dXBsb2FkIiBjbGFzcz0icGw2MCBtdDUgbWIxMCBoaWRlIj4nLCc8c3BhbiBjbGFzcz0iY3ctYXR0LXVwbG9hZCBidXR0b24gdzEwMHAiPjwvc3Bhbj4nLCc8aW5wdXQgaWQ9InVwbG9hZCIgY2xhc3M9InBsNjAiIHR5cGU9ImZpbGUiIC8+JywiPC9kaXY+Iix7cm93Q3NzOiJteS1yb3cgcHQ1IHBiMiBidXR0b25zIHBsNTAifSxbIiIsImJ1dCNidG4tdG8wLmJ1dHRvbi5ncmVlbi53OTUiLHt0eHQ6IlByZXBlbmQifSwiYnV0I2J0bi10bzEuYnV0dG9uLmdyZWVuLnc4NSIse3R4dDoiQXBwZW5kIn0sImJ1dCNidG4tY2FuY2VsLmJ1dHRvbi53NzUubXIwIix7dHh0OiJDYW5jZWwifV1dLHN0eWxlOnsiIC5jdy1hdHQtaXRlbSI6IndoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjAuMmVtIDAgMC4yZW0gMDsgbGluZS1oZWlnaHQ6MS40ZW07IiwiIGlucHV0W3R5cGU9ZmlsZV0iOiJ3aWR0aDoyNDBweDtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjA7IHBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6NjBweDtoZWlnaHQ6MzVweDsifX0sTUVkaXQ6e2RhdGE6e3RleHQ6IiIsbW9kZToiYXV0byIscmVhZG9ubHk6ITEsY29tbWl0S2V5czpbXSxjb21taXRUeXBlS2V5czp7fSxjYW5jZWxLZXlzOltdLGNhbmNlbFR5cGVLZXlzOnt9LGV4cGVjdDoic3RyaW5nIix0eXBlOiJzdHJpbmcifSxpbml0Oic8ZGl2IHN0eWxlPSJ3aWR0aDpjYWxjKDEwMCUgLSA4MHB4KTsiIGNsYXNzPSJpY21mcmFtZSBkaWIgdmF0IG10LTEgbWItMSI+PHRleHRhcmVhIGlkPSJpZWQiIHN0eWxlID0id2lkdGg6MTAwJTt4bWF4LWhlaWdodDozMDBweDsiIGNsYXNzPSJ4Z3JheSI+PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGlkPSJpZWR0eXBlIiBjbGFzcz0iaWVkdHlwZSBoaWRlIHdoaXRlIGJvbGQgY3AgemkyIiBzdHlsZT0iIiB0aXRsZT0iQ2xpY2sgdG8gcHJldHRpZnkgSlNPTiI+YXJyYXk8L2Rpdj48ZGl2IGNsYXNzPSJidXR0b25zIHc4MCBkaWIgdmF0IHRhciBvMTAwIHByMyBwdDAiPjxidXR0b24gaWQ9ImJ0bi1jaGFuZ2UiIGNsYXNzPSJidXR0b24gZ3JlZW4gdzM2IiB0aXRsZT0iQXBwbHkgY2hhbmdlcyI+PHNwYW4gY2xhc3M9ImZpLWNoZWNrIj48L3NwYW4+PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWRpc2NhcmQiIGNsYXNzPSJidXR0b24gdzM2IiB0aXRsZT0iRGlzY2FyZCBjaGFuZ2VzIj48c3BhbiBjbGFzcz0iZmkteCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PicsQ01wcmVmaXg6ImppIix1aTp7IiNpZWQiOntiaW5kOiJ0ZXh0Iixpbml0OmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIuZGF0YSxkPWMudGV4dCxlPWMubW9kZSxmPSJudW1iZXIiPT1lLGc9ITA7aWYoImF1dG8iPT1lKWlmKCgoYT1kLnN1YnN0cigwLDEyMDApKS5tYXRjaCgvKHZhclxzfGNvbnN0XHN8ZnVuY3Rpb25bXHNcKF18cmV0dXJuXHN8W1xzXHRdaWZccykvZyl8fFtdKS5sZW5ndGg+Mil7ZT0iamF2YXNjcmlwdCI7dmFyIGg9MDtkLmxpbmVzKCkuZm9yRWFjaChmdW5jdGlvbih4LGEpe2E+MjAwfHx4Lmxlbmd0aD5oJiYoaD14Lmxlbmd0aCl9KSxoPjE1MCYmaDwxZTMmJiEwfWVsc2UvPFwvKGRpdnxzcGFufHB8YXxzY3JpcHR8aGVhZHx0aXRsZXxzdmd8cGF0aCkvLnRlc3QoYSl8fC88KHN2Z3xwYXRofGdyb3VwKVxzLy50ZXN0KGEpPyhlPSJodG1sbWl4ZWQiLCEwKTpDb2RlTWlycm9yLm1vZGVzLmVybGFuZyYmL14oJSVbXlxyXG5dKltcclxuXSspKltcclxuXHNcdF0qZnVuW1xyXG5cc1x0XSpcKFtcclxuXHNcdF0qXHs/Ly50ZXN0KGEpPyhlPSJlcmxhbmciLCEwKTooZT0idGV4dCIsL1tcclxuXS8udGVzdChhKXx8KCEwLGQubGVuZ3RoPDgwMCYmKGc9ITEpKSk7ZnVuY3Rpb24gaSgpe2IubXkudHJpZ2dlcigiI2llZCIsImVkaXRvcmNvbW1pdC5teSIpfWZ1bmN0aW9uIGooKXtiLm15LnRyaWdnZXIoIiNpZWQiLCJlZGl0b3JjYW5jZWwubXkiKX1mdW5jdGlvbiBrKCl7KGZ1bmN0aW9uKCl7Yi5teS5yb290KCkudHJpZ2dlcigianNvbmRvY3NhdmUubXkiKX0pLmRlbGF5KDEwMCksYi5teS50cmlnZ2VyLmRlbGF5KDIwLCIjaWVkIiwiZWRpdG9yY29tbWl0Lm15Iil9Im51bWJlciI9PWU/KGU9ImphdmFzY3JpcHQiLGc9ITEpOiJiNjQiPT1lJiYoZT0idGV4dCIsITAsZz0hMSksInRleHQiPT1lJiYoZT0ibnVsbCIpLENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHhbMF0se21vZGU6KC0xPT1lLmluZGV4T2YoIi8iKT9iLkNNcHJlZml4OiIiKStlLHZpZXdwb3J0TWFyZ2luOjEwMCxsaW5lTnVtYmVyczpnLGluZGVudFdpdGhUYWJzOiEwLGluZGVudFVuaXQ6Mix0YWJTaXplOjIsdGhlbWU6ImRlZmF1bHQiLHJlYWRPbmx5OmMucmVhZG9ubHksYXV0b2ZvY3VzOiEwLGxpbmVXcmFwcGluZzohMCxleHRyYUtleXM6JC5leHRlbmQoe0VzYzpqLCJDdHJsLUVudGVyIjppLmRlYm91bmNlKDIwKSwiQ21kLUVudGVyIjppLmRlYm91bmNlKDIwKSwiQ21kLVMiOmssIkN0cmwtUyI6a30sZj97RW50ZXI6aX06e30sYy5jb21taXRLZXlzLmNvbmNhdChjLmNvbW1pdFR5cGVLZXlzW2MubW9kZV0/Yy5jb21taXRUeXBlS2V5c1tjLm1vZGVdOltdKS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4geFthXT1pLHh9LHt9KSxjLmNhbmNlbEtleXMuY29uY2F0KGMuY2FuY2VsVHlwZUtleXNbYy5tb2RlXT9jLmNhbmNlbFR5cGVLZXlzW2MubW9kZV06W10pLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2FdPWoseH0se30pLGMuY29tbWl0VHlwZUtleXNbYy5tb2RlXT9jLmNvbW1pdFR5cGVLZXlzW2MubW9kZV06W10pfSksYy5yZWFkb25seSYmeC5uZXh0KCkuYWRkQ2xhc3MoInJlYWRvbmx5Iil9fSwiI2J0bi1jaGFuZ2UiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS50cmlnZ2VyKCIjaWVkIiwiZWRpdG9yY29tbWl0Lm15Iil9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnJlYWRvbmx5fX19LCIjYnRuLWRpc2NhcmQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS50cmlnZ2VyKCIjaWVkIiwiZWRpdG9yY2FuY2VsLm15Iil9fSwiI2llZHR5cGUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7eC5vbigiY2xpY2subXkiLGZ1bmN0aW9uKCl7aWYoYi50eXBlPT1iLmV4cGVjdCl7dmFyIHg9YS5teS5maW5kKCIuaWNtZnJhbWUiKS53aWR0aCgpLzguMnwwO2IudGV4dD0iKCIrY3cubGliLmpzb24oY3cubGliLnVuanNvbihhLnBhcnNlU3RyaW5nKGIudGV4dCkpLHthbGxvd0pTOiEwLHRhYkNoYXJzOiIgICIsbWF4V2lkdGg6eH0pKyIpIixhLm15LnJlY2FsYygiI2llZCIpfX0uZGVib3VuY2UoNTApKX0sZGVsYXk6MzAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiJvYmplY3QiIT14LmV4cGVjdCYmImFycmF5IiE9eC5leHBlY3R8fCh4LnR5cGU9JC50eXBlKHRoaXMucGFyc2VTdHJpbmcoeC50ZXh0KSkpLHgudHlwZX0sY3NzOnsiYmctcmVkMSI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZSE9eC5leHBlY3R9LCJiZy1ncmF5MiI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZT09eC5leHBlY3R9LGhpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISgib2JqZWN0Ij09eC5leHBlY3R8fCJhcnJheSI9PXguZXhwZWN0KX19LHdhdGNoOlsiI2llZCJdfX0scGFyc2VTdHJpbmc6ZnVuY3Rpb24gX3BhcnNlU3RyaW5nKHZhbCl7dmFyIG8sZXJyO3RyeXtvPUpTT04ucGFyc2UodmFsKX1jYXRjaCh4KXtlcnI9ITB9aWYoZXJyKXt0cnl7bz1ldmFsKCIoIit2YWwrIikiKSxlcnI9ITF9Y2F0Y2goeCl7ZXJyPSEwfSFlcnImJi9eKG9ifGFyKS8udGVzdCgkLnR5cGUobykpJiYobz1KU09OLnBhcnNlKGN3LmxpYi5qc29uKG8pKSl9cmV0dXJuIGVycnx8dm9pZCAwPT09bz92YWw6b319LCRtdWx0aTp7aWQ6IlN5cy5KU09OLk9iamVjdCIscGFyYW1zOntub3JtYWxpemVkOiEwfSxkYXRhOnt9LExpc3Q6W10sQ006ImphdmFzY3JpcHQiLEY6e30sVHh0OntvYmplY3Q6WyJPYmplY3QgeyIsIn0iXSxhcnJheTpbIkFycmF5IFsiLCJdIl19LG1heERlcHRoOjFlMyxidWlsZERlbGF5OjE1MCxpc0xpc3Q6ITAsaW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGE7eC5hZGRDbGFzcygiZWQtbm9kZS0iK2IuUGF0aFNpZyhjLnBhdGgsYy5rZXkpKSx4Lmh0bWwoYi5IVE1MKSxjLnN0YXRlPjEmJihiLkxpc3Q9Yi5NYWtlTGlzdChiLmRhdGEpKSx4LnRoZW4oZnVuY3Rpb24oKXt4Lm9uKCJjbGljay5teSIsIi5pbGlzdDplcSgwKSAuYnRuLWRlbCIsZnVuY3Rpb24oYyl7Yy5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZD0kKHRoaXMpLnBhcmVudHMoIi5teS1mb3JtIikuZXEoMCksZT1kLnBhcmVudCgpLmRhdGEoIm15IikuZGF0YSxmPWIuUlQoIkxpYiIpLmlzU3lzdGVtLmNhbGwoZC5teSgibWFuaWZlc3QiKSxkLm15KCJkYXRhIikpLGc9JC50eXBlKGUudmFsdWUpLGg9ZC5teSgiZGF0YSIpLmtleSxpPW51bGw7aWYoZiljdy5saWIubm90ZSgiRGVsZXRpb24gaXMgbm90IGFsbG93ZWQiLCJlcnJvciIpO2Vsc2V7aWYoIm9iamVjdCI9PWcpe3ZhciBqPU9iamVjdC5rZXlzKGUudmFsdWUpLGs9ai5pbmRleE9mKGgpO2k9W251bGwsbnVsbF0saz4wJiYoaVswXT1qW2stMV0pLGs8ai5sZW5ndGgtMSYmKGlbMV09altrKzFdKX1iLk5vZGVVcGRhdGVkKFtlLnBhdGgsZS5rZXksaF0sZS52YWx1ZVtoXSx2b2lkIDAsaSksIm9iamVjdCI9PWc/ZGVsZXRlIGUudmFsdWVbaF06ImFycmF5Ij09ZyYmZS52YWx1ZS5yZW1vdmVBdChoKSxiLlJUKCJMaWIiKS5yZWxpc3QoeCxiLGEpfX0pfSl9LHVpOnsiLml2YWx1ZSI6e2RlbGF5Oi4wMSxjc3M6e2hpZGU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5MaXN0Lmxlbmd0aH19fSwiLmJ0bi1qc29uIjp7ZGVsYXk6LjAxLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLklubGluZUNNKHgsYSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3guc3RhdGU9MTZ8eC5zdGF0ZX19LHJlY2FsYzpbIi5pa2V5IiwiLmlkZXNjIl19LCIuaWtleSI6e2RlbGF5OjEwLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjLGQ9dGhpcyxlPWQubGFiZWxXaWR0aC8zfDAsZj0iJG11bHRpIj09eC5tYW5pZmVzdCxnPSEhKDE2Jnguc3RhdGUpLGg9T2JqZWN0LnNpemUoeC52YWx1ZSk7cmV0dXJuIG51bGw9PWF8fGd8fChoPD1kLm1heERlcHRoPyh4LnN0YXRlPTEmeC5zdGF0ZSYmKCFmfHxoKXx8IXgubGV2ZWw/MjU0Jnguc3RhdGV8MjoyNTMmeC5zdGF0ZXwxLDImeC5zdGF0ZT9kLkxpc3Q9ZC5NYWtlTGlzdCh4KTooZC5MaXN0PVtdLGQuU2hvd0l0ZW1zPW51bGwpKTooZC5MaXN0PVtdLGQuU2hvd0l0ZW1zPW51bGwseC5zdGF0ZT0yNTMmeC5zdGF0ZXwxLGQubXkuZmluZCgiLmlkZXNjIikudHJpZ2dlcigiY2xpY2subXkiKSksZC5SVCgiTWVtU3RhdGUiKSh4KSksNCZ4LnN0YXRlJiZkLlJUKCJTZWFyY2hSZSIpP2M9eC5rZXkucmVwbGFjZShkLlJUKCJTZWFyY2hSZSIpLCLvv7EkMe+/sCIpLmVzY2FwZUhUTUwoKS5yZXBsYWNlKCLvv7EiLCc8c3BhbiBjbGFzcz0ianZhbC1mb3VuZC1rZXkiPicpLnJlcGxhY2UoIu+/sCIsIjwvc3Bhbj4iKTooeC5rZXkubGVuZ3RoPmUmJmIuYXR0cigidGl0bGUiLHgua2V5LmVzY2FwZUhUTUwoKSksYz0vXih8XHMrKSQvLnRlc3QoeC5rZXkpPyciJyt4LmtleS5lc2NhcGVIVE1MKCkrJyInOngua2V5LnRydW5jYXRlKGUsInJpZ2h0Iiwi4oCmIikuZXNjYXBlSFRNTCgpLDE4Jnguc3RhdGU/KGM9JzxzcGFuIGNsYXNzPSJmdzUwMCI+JytjKyI8L3NwYW4+IiwxNiZ4LnN0YXRlfHwhaHx8KGMrPSc8c3BhbiBjbGFzcz0iYWRvd24iPjwvc3Bhbj4nKSk6aCYmKGMrPSc8c3BhbiBjbGFzcz0iYXJpZ2h0Ij48L3NwYW4+JykpLGQuVS50YWdFbW9qaShjKX0sZXZlbnRzOiJjbGljay5teSIscmVjYWxjOlsiLml2YWx1ZSIsIi5pZGVzYyIsIi5pbGlzdCJdfSwiLmlkZXNjIjp7ZGVsYXk6MCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9KGMuTGlzdCxjLlR4dFt4LnR5cGVdLE9iamVjdC5zaXplKHgudmFsdWUpKSxlPSh4Lm1hbmlmZXN0LCIiKTtpZihudWxsPT1hKXtpZigxNiZ4LnN0YXRlKWU9IiI7ZWxzZSBpZihjLkxpc3QubGVuZ3RoKWU9Im9iamVjdCI9PXgudHlwZT8iT2JqZWN0IHsiK2QrIn0iOiJBcnJheSBbIitkKyJdIjtlbHNlIGlmKCFjLlJUKCJTZWFyY2hSZSIpfHx4LnBhdGgubGVuZ3RoKXt2YXIgZj1jLlJUKCJqMmgiKSh4LnZhbHVlLDUwLFsiaWQiLCJuYW1lIiwibGVuZ3RoIiwic3RhdHVzIl0sImFycmF5IiE9eC50eXBlPzE6MiwiYXJyYXkiIT14LnR5cGUpOzE9PWYubGVuZ3RoJiYic2hvcnQiPT1mWzBdWzBdJiYoInsiPT1mWzBdWzFdWzBdP2ZbMF1bMV09Ik9iamVjdCAiK2ZbMF1bMV06IlsiPT1mWzBdWzFdWzBdJiYoZlswXVsxXT0iQXJyYXkgIitmWzBdWzFdKSksZSs9Zi5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHhbMF0/JzxzcGFuIGNsYXNzPSJqdmFsLScreFswXSsnIj4nK3hbMV0rIjwvc3Bhbj4iOnhbMV19KS5qb2luKCIiKX1lbHNlIGU9JzxzcGFuIGNsYXNzPSJsaDExNSBkaWIgdmF0Ij5Gb3VuZCBubyBub2RlcyBjb250YWluaW5nIDxzcGFuIGNsYXNzPSJib2xkZXIiPnsxfTwvc3Bhbj48L3NwYW4+Jy5hc3NpZ24oYy5SVCgiZGF0YSIpLnNlYXJjaC5lc2NhcGVIVE1MKCkpO2IuaHRtbChjLlUudGFnRW1vamkoZSkpfX0scmVjYWxjOlsiLml2YWx1ZSIsIi5pa2V5IiwiLmlsaXN0Il19LCIuaWxpc3QiOntkZWxheTouMDEsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3gub24oImNoYW5nZS5teSIsZnVuY3Rpb24oKXthLlJUKCJSZWpvaW4iKShhLmRhdGEsYS5MaXN0KX0uZGVib3VuY2UoYS5idWlsZERlbGF5fHwzMDApKX0sYmluZDoidGhpcy5MaXN0IixsaXN0Oic8ZGl2IGNsYXNzPSJpcm93Ij48L2Rpdj4nLGlkOmZ1bmN0aW9uKHgpe3JldHVybiJYIit4LmlkfSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiJYIit4Lmhhc2h9LG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuIGEuUlQoeC5tYW5pZmVzdCl8fGEuUlQoIiRzdHJpbmciKX19fX0sJHN0cmluZzp7aWQ6IlN5cy5KU09OLlN0cmluZyIsQ006ImF1dG8iLGlzTGlzdDohMSxGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLklubGluZUNNKHgsYSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7aWYoIjxzdmciPT14LnZhbHVlLnN1YnN0cigwLDQpJiZ4LnZhbHVlLmxlbmd0aDw1ZTQpe3ZhciBkPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCIrY3cubGliLmJhc2U2NCh4LnZhbHVlKTtyZXR1cm4gMiE9eC5zdGF0ZT9bJzxhIGhyZWY9IicrZCsnIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJhc2U2NGltYWdlIj4nLCc8aW1nIHNyYz0iJytkKyciIGNsYXNzPSJmbCBtcjEwIi8+JywiPC9hPiIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgYmFzZTY0c3RyaW5nIj4nLGUoeC52YWx1ZSksIjwvZGl2PiJdLmpvaW4oIiIpOihudWxsIT1hJiYoeC52YWx1ZT1hKSxlKHgudmFsdWUpKX1yZXR1cm4gMiE9eC5zdGF0ZT9lKHgudmFsdWUpOihudWxsIT1hJiYoeC52YWx1ZT1hKSxlKHgudmFsdWUpKTtmdW5jdGlvbiBlKHgpe3ZhciBhPSc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JyxiPSc8c3BhbiBjbGFzcz0ibzMwIj7igInCtuKAiTwvc3Bhbj4nO3JldHVybiB4Lmxlbmd0aD4xNDA/YSs9eC50cnVuY2F0ZSgxNDApLmVzY2FwZUhUTUwoKS5yZXBsYWNlKC9cbi9nLGIpKycmcXVvdDsgPHNwYW4gY2xhc3M9ImlsYWJlbCI+Jyt4Lmxlbmd0aCsiIGNoYXJzPC9zcGFuPiI6YSs9eC5lc2NhcGVIVE1MKCkucmVwbGFjZSgvXG4vZyxiKSsnPHNwYW4gY2xhc3M9Imp2YWwtYnJhY2tldCI+JnF1b3Q7PC9zcGFuPicsYy5VLnRhZ0Vtb2ppKGEpfX0sZXZlbnRzOiJpbnB1dC5teSJ9fX0sJGZvdW5kOntpZDoiU3lzLkpTT04uRm91bmQiLENNOiJhdXRvIixGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLklubGluZUNNKHgsYSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcy5VLnRhZ0Vtb2ppLGU9KHRoaXMubGFiZWxXaWR0aCx4LnZhbHVlKTtyZXR1cm4gOCZ4LnN0YXRlJiZ0aGlzLlJUKCJTZWFyY2hSZSIpPyhiPVsnPHNwYW4gY2xhc3M9Imp2YWwtYnJhY2tldCI+JnF1b3Q7PC9zcGFuPicsKGM9KGI9ZS5yZXBsYWNlKHRoaXMuUlQoIlNlYXJjaFJlIiksIu+/sSQx77+xIikpLnNwbGl0KCLvv7EiKSlbMF0udHJ1bmNhdGUoMTQwLCJsZWZ0Iiwi4oCmIikuZXNjYXBlSFRNTCgpLCc8c3BhbiBjbGFzcz0ianZhbC1mb3VuZC1rZXkiPicrY1sxXS5lc2NhcGVIVE1MKCkrIjwvc3Bhbj4iLGNbMl0udHJ1bmNhdGUoMTQwLCJyaWdodCIsIuKApiIpLmVzY2FwZUhUTUwoKSwnPHNwYW4gY2xhc3M9Imp2YWwtYnJhY2tldCI+JnF1b3Q7PC9zcGFuPicsZS5sZW5ndGg+MjgwPyc8c3BhbiBjbGFzcz0iaWxhYmVsIj4nK2UubGVuZ3RoKyIgY2hhcnM8L3NwYW4+IjoiIl0uam9pbigiIiksZChiKSk6MiE9eC5zdGF0ZT9mKHgudmFsdWUpOihudWxsIT1hJiYoeC52YWx1ZT1hKSxmKHgudmFsdWUpKTtmdW5jdGlvbiBmKHgpe3ZhciBhPSc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JztyZXR1cm4geC5sZW5ndGg+MTQwP2ErPXgudHJ1bmNhdGUoMTQwKS5lc2NhcGVIVE1MKCkrJyZxdW90OyA8c3BhbiBjbGFzcz0iaWxhYmVsIj4nK3gubGVuZ3RoKyIgY2hhcnM8L3NwYW4+IjphKz14LmVzY2FwZUhUTUwoKSsnPHNwYW4gY2xhc3M9Imp2YWwtYnJhY2tldCI+JnF1b3Q7PC9zcGFuPicsZChhKX19LGV2ZW50czoiaW5wdXQubXkifX19LCRmdW5jdGlvbjp7aWQ6IlN5cy5KU09OLkZ1bmN0aW9uIixDTToiamF2YXNjcmlwdCIsaXNMaXN0OiExLEY6e30sdWk6eyIuaWtleSI6e30sIi5pdmFsdWUiOntpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztiLmRhdGE7Yi5JbmxpbmVDTSh4LGIpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYoMiE9eC5zdGF0ZSl7dmFyIGI9IiIsYz0vXltcc1xyXG5cdF0qXCg/W1xzXHJcblx0XSpmdW5jdGlvbi8sZD0vW1xzXHJcblx0XSpcKVtcc1xyXG5cdF0qJC87aWYoeC52YWx1ZS5sZW5ndGg+MTAwKXt2YXIgZT14LnZhbHVlLnNwbGl0KCIpIiwxKVswXTtiKz1bJzxzcGFuIGNsYXNzPSJqdmFsLWZ1bmN0aW9uIj5mdW5jdGlvbiA8L3NwYW4+ICcsZS5yZXBsYWNlKGMsIiIpLnNwbGl0KCIoIilbMF0udHJpbSgpLCIoIixlLnNwbGl0KCIoIilbMV0rIikgeyIsJyA8c3BhbiBjbGFzcz0iaWxhYmVsIGxoMTQwIj4nLCh4LnZhbHVlLm1hdGNoKC9bXHJcbl0rL2cpfHwiIikubGVuZ3RoKzErIiBMT0MsICIseC52YWx1ZS5sZW5ndGgrIiBjaGFycyIsIjwvc3Bhbj4gIiwifSJdLmpvaW4oIiIpfWVsc2UgYj0nPHNwYW4gY2xhc3M9Imp2YWwtZnVuY3Rpb24iPmZ1bmN0aW9uPC9zcGFuPicreC52YWx1ZS5yZXBsYWNlKGMsIiIpLnJlcGxhY2UoZCwiIikuZXNjYXBlSFRNTCgpO3JldHVybiB0aGlzLlUudGFnRW1vamkoYil9cmV0dXJuIG51bGwhPWEmJih4LnZhbHVlPWEpLHgudmFsdWV9LGV2ZW50czoiaW5wdXQubXkifX19LCRiYXNlNjQ6e2lkOiJTeXMuSlNPTi5CYXNlNjQiLENNOiJiNjQiLGlzTGlzdDohMSxGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5kYXRhO2IuSW5saW5lQ00oeCxiKX0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9IiIsZD10aGlzLlJUKCJCbG9icyIpLGU9L15pbWFnZVwvLy50ZXN0KHgubWltZSsiIikmJngudmFsdWUubGVuZ3RoPDVlNT9kW3guaGFzaF06bnVsbCxmPSIiO2lmKDIhPXguc3RhdGUpe3ZhciBnPWIud2lkdGgoKTtlPyhjKz1bJzxhIGhyZWY9IicrZSsnIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJhc2U2NGltYWdlIj4nLCc8aW1nIHNyYz0iJytlKyciIGNsYXNzPSJmbCBtcjEwIi8+JywiPC9hPiJdLmpvaW4oIiIpLGctPTgwKTp4Lm1pbWUmJnguZm5hbWUmJihmPXguZm5hbWV8fCJ1bnRpdGxlZC5iaW4iLGMrPSc8YSBocmVmPSInK2RbeC5oYXNoXSsnIiAgY2xhc3M9ImJhc2U2NGljbyB3NTUgaDU1IHRhYyBkaWIgdmF0IG1yMTAgbGdyYXkgZnMyMDAgYmctbGdyYXkgYnIyIiBkb3dubG9hZD0iJytmKyciICB0aXRsZT0iRG93bmxvYWQgJytmKyciICBzdHlsZT0ibGluZS1oZWlnaHQ6NTVweCI+PHNwYW4gY2xhc3M9IicrKHguaWNvfHwiZmktYXJjaGl2ZSIpKyciPjwvc3Bhbj48L2E+JyxnLT04MCk7dmFyIGg9KGcvMTAqMi41fDApLmNsYW1wKDE0MCw2MDApO3JldHVybiBjKz0nPGRpdiBjbGFzcz0iZGliIHZhdCBiYXNlNjRzdHJpbmciPicsYys9JyInLHgudmFsdWUubGVuZ3RoPmg/Yys9eC52YWx1ZS50cnVuY2F0ZShoKSsnIiZuYnNwOzxhIGhyZWY9IicrZFt4Lmhhc2hdKyciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iaWxhYmVsIHRkbiI+JysoZT8iT3BlbiI6IkRvd25sb2FkIikrIiZuYnNwOyIreC5zaXplLm1ldHJpYygyKSsiYjwvYT4iOmMrPXgudmFsdWUrJyInLGUmJihjKz0iPC9kaXY+IiksY31yZXR1cm4gbnVsbCE9YSYmKHgudmFsdWU9YSkseC52YWx1ZX0sZXZlbnRzOlsiaW5wdXQubXkiXX19LE1pbWU6eyJhcHBsaWNhdGlvbi94LWNvbXByZXNzZWQiOi9cLnppcCQvaSwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsIjovXC54bHN4PyQvaSwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjovXC4oY2RyfGRhdHxyYXIpJC9pLCJhcHBsaWNhdGlvbi9qc29uIjovXC4oanNufGpzb24pJC9pLCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IjovXC5qcyQvaSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQiOi9cLmRvY3gkL2ksImFwcGxpY2F0aW9uL21zd29yZCI6L1wuZG9jPyQvaSwiYXBwbGljYXRpb24vcGRmIjovXC5wZGYkL2ksInRleHQvcGxhaW4iOi9cLnR4dCQvaSwidGV4dC9odG1sIjovXC4oW3hdP2h0bVtsXT8pJC9pLCJ0ZXh0L3htbCI6L1wuKHhtbHx4c2R8eHNmfHhzbHx4c2x0KSQvaSwiaW1hZ2UvcG5nIjovXC5wbmckL2ksImltYWdlL2pwZWciOi9cLmpwZT9nJC9pLCJpbWFnZS9naWYiOi9cLmdpZiQvaSwiaW1hZ2Uvc3ZnK3htbCI6L1wuc3ZnJC9pfSxJY286eyJmaS1waG90byI6L1wuKHBuZ3xqcFtlXT9nfGdpZnx0aWZbZl0/fGJtcHxzdmcpJC9pLCJmaS1zb2NpYWwtYWRvYmUiOi9cLihwZGZ8YWl8cHNkKSQvaSwiZmktcGFnZS1kb2MiOi9cLihkb2NbeF0/fHR4dHxydGYpJC9pLCJmaS1ncmFwaC1waWUiOi9cLih4bHNbeF0/fGNzdikkL2ksImZpLWFyY2hpdmUiOi9cLih6aXB8cmFyfDd6fDd6aXApJC9pLCJmaS1odG1sNSBwbDIiOi9cLihodG1bbF18cGhwKSQvaSwiZmktY3NzMyBwbDIiOi9cLmNzcyQvaSwiZmktd2lkZ2V0IjovXC4oanNbb25dP3xwaHB8YXNwfGphcnxjfGVybCkkL2ksImZpLXNvdW5kIjovXC4od2F2fGFpZmZ8bXAzfG9nZ3xtcGVnMykkL2l9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Yi5kYXRhO2lmKHguYWRkQ2xhc3MoImVkLW5vZGUtIitiLlBhdGhTaWcoYy5wYXRoLGMua2V5KSkseC5odG1sKGIuSFRNTCksIWMuc2lnKXt2YXIgZD0vXmRhdGE6aW1hZ2VcLyhqcGVnfHBuZ3xnaWZ8c3ZnXCt4bWwpO2Jhc2U2NCwvLGU9ZC50ZXN0KGMudmFsdWUpLGY9ZT9jLnZhbHVlLnJlcGxhY2UoZCwiIik6Yy52YWx1ZTtpZihjLnNpemU9KGYubGVuZ3RoLzQqMykuZmxvb3IoKSxjLnNpZz1hPXdpbmRvdy5hdG9iKGYudG8oNDAwKSksZSljLm1pbWU9Yy52YWx1ZS50bygzMCkuc3BsaXQoIjtiYXNlNjQiKVswXS5zcGxpdCgiOiIpWzFdO2Vsc2UgaWYoIsO/w5jDv8OgIj09PWEudG8oNCk/Yy5taW1lPSJpbWFnZS9qcGVnIjoiwolQTkciPT09YS50byg0KT9jLm1pbWU9ImltYWdlL3BuZyI6L148XD94bWwvLnRlc3QoYSkmJi88c3ZnXHN2ZXJzaW9uXHMqPVxzKiIxXC5cZCIvLnRlc3QoYSkmJihjLm1pbWU9ImltYWdlL3N2Zyt4bWwiKSwhYy5taW1lJiYzPT1jLnBhdGgubGVuZ3RoJiYiX2F0dGFjaG1lbnRzIj09Yy5wYXRoWzFdKXt2YXIgZyxoPSJmaS1wYXBlcmNsaXAiLGk9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsaj1jLnBhdGhbMl07Zm9yKGcgaW4gYi5NaW1lKWIuTWltZVtnXS50ZXN0KGopJiYoaT1nKTtmb3IoZyBpbiBiLkljbyliLkljb1tnXS50ZXN0KGopJiYoaD1nKTtjLm1pbWU9aSxjLmljbz1oLGMuZm5hbWU9an1jLm1pbWU9Yy5taW1lfHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIixiLlJUKCJCbG9icyIpW2MuaGFzaF09VVJMLmNyZWF0ZU9iamVjdFVSTCgkLm15LmYuYmFzZTY0MmJsb2IoYy52YWx1ZS5yZXBsYWNlKC9eZGF0YTppbWFnZVwvKGpwZWd8cG5nfGdpZnxzdmdcK3htbCk7YmFzZTY0LC8sIiIpLG51bGwsYy5taW1lKSl9fX0sJG51bWJlcjp7aWQ6IlN5cy5KU09OLk51bWJlciIsQ006Im51bWJlciIsaXNMaXN0OiExLEY6e04yUzpmdW5jdGlvbih4KXt2YXIgYT0nPHNwYW4gY2xhc3M9Imp2YWwtbnVtYmVyIj4nK3gudG9TdHJpbmcoKSsiPC9zcGFuPiI7cmV0dXJuIHg8MWUxMyYmeD44ZTExJiZ4PT09KCt4KS5mbG9vcigpJiYoYSs9JyA8c3BhbiBjbGFzcz0iaWxhYmVsIHhncmF5IGxoMTQwIHZhdCBtdDQiPjxzcGFuIGNsYXNzPSJmaS1jbG9jayI+PC9zcGFuPiAnK0RhdGUuY3JlYXRlKHgpLmZvcm1hdCgie2R9IHtNb259IHt5eXl5fSwge0h9OnttbX06e3NzfSwgTG9jYWwiKSsiPC9zcGFuPiIpLGF9LENhbGM6ZnVuY3Rpb24ocyxwcmV2KXtpZighaXNOYU4ocykpcmV0dXJuK3M7dmFyIG49bnVsbDt0cnl7bj1ldmFsKCIoIitzKyIpIil9Y2F0Y2goeCl7fXJldHVybiBudWxsPT09bnx8aXNOYU4obik/cHJldjorbn19LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGE7Yi5JbmxpbmVDTSh4LGIsZnVuY3Rpb24oYSxkKXtjLnZhbHVlPWIuRi5DYWxjKGEsZCkseC50cmlnZ2VyKCJjaGVjayIpfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXgudmFsdWUrIiI7cmV0dXJuIDgmeC5zdGF0ZSYmdGhpcy5SVCgiU2VhcmNoUmUiKT9bKGI9Yy5yZXBsYWNlKHRoaXMuUlQoIlNlYXJjaFJlIiksIu+/sSQx77+xIikuc3BsaXQoIu+/sSIpKVswXS50cnVuY2F0ZSgxNDAsImxlZnQiLCLigKYiKS5lc2NhcGVIVE1MKCksJzxzcGFuIGNsYXNzPSJqdmFsLWZvdW5kLWtleSI+JytiWzFdLmVzY2FwZUhUTUwoKSsiPC9zcGFuPiIsYlsyXS50cnVuY2F0ZSgxNDAsInJpZ2h0Iiwi4oCmIikuZXNjYXBlSFRNTCgpXS5qb2luKCIiKToxPT14LnN0YXRlfHw0PT14LnN0YXRlP3RoaXMuRi5OMlMoeC52YWx1ZSk6KG51bGwhPWEmJih4LnZhbHVlPXRoaXMuRi5DYWxjKGEseC52YWx1ZSkpLHRoaXMuRi5OMlMoeC52YWx1ZSkpfSxldmVudHM6ImlucHV0Lm15In19fSwkYm9vbGVhbjp7aWQ6IlN5cy5KU09OLkJvb2xlYW4iLGlzTGlzdDohMSx1aTp7Ii5pa2V5Ijp7fSwiLml2YWx1ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgudmFsdWU9IXgudmFsdWUsdGhpcy5Ob2RlVXBkYXRlZChbeC5wYXRoLHgua2V5XSwheC52YWx1ZSx4LnZhbHVlKSksdGhpcy5WW3gudmFsdWU/MTowXX0sZXZlbnRzOiJjbGljay5teSJ9fSxWOlsnPHNwYW4gY2xhc3M9Imlib29sZWFuLXRhZyBncmF5IG1sLTkiPnRydWU8L3NwYW4+PHNwYW4gY2xhc3M9Imlib29sZWFuLXRhZyB5ZWxsb3ctMSBiZy15ZWxsb3c1Ij5mYWxzZTwvc3Bhbj4nLCc8c3BhbiBjbGFzcz0iaWJvb2xlYW4tdGFnIGJsdWUtMSBiZy1ibHVlNCBvODAgbWwtOSI+dHJ1ZTwvc3Bhbj48c3BhbiBjbGFzcz0iaWJvb2xlYW4tdGFnIGdyYXkiPmZhbHNlPC9zcGFuPiddfSwkbnVsbDp7aWQ6IlN5cy5KU09OLk51bGwiLGlzTGlzdDohMSx1aTp7Ii5pa2V5Ijp7fSwiLml2YWx1ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4nPHNwYW4gY2xhc3M9InJlZCBvODAiPm51bGw8L3NwYW4+J319fX0sc3RhbXA6MTc1MTg0Njg5NTU0N30sImN3LkNvdWNoLk1vbml0b3IiOntpZDoiY3cuQ291Y2guTW9uaXRvciIsYnVpbGQ6NjQsVmVyc2lvbjoiMi4xIixwYXJhbXM6e3Jlc3R5bGU6NDAsc3RyaWN0OiEwfSxkYXRhOntzZWFyY2g6IiIsY21kOiIiLGRvYzp7bmFtZToiVW5uYW1lZCBtZXNoIix0eXBlOiJjb3VjaHN0YXRzIixjcnlwdG86Ii0iLG5vZGVzOltdLGxvZzpbXX19LENvbmZpZzp7c3RhdHNTY2FsZVk6MS41LHN0YXRzTWF4R3JhcGhzOjQsc3RhdHNNYXhUaW1lZnJhbWU6OTAwLHN0YXRzUmVmcmVzaDoxMCxzZXJpZU1heExlbmd0aDoxZTR9LENmZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLkNvbmZpZ30saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9KGEuZGF0YSxhLmRhdGEuZG9jKTtpZihhLk1vdW50KHgpLGIubm9kZXMubGVuZ3RofHxiLm5vZGVzLnB1c2goJC5leHRlbmQoITAse30sYS5kZWZhdWx0Tm9kZXNbIjEueCJdKSksYi5ub2Rlcy5mb3JFYWNoKGEuQXBwbHlQcmVzZXRzKSxbIk5vZGUiLCJTZXJpZSIsIkdhdWdlIl0uZm9yRWFjaChmdW5jdGlvbih4KXtbInNlbGVjdDIiLCJSZXEiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbeF1bYl09YVtiXX0pfSkseC5odG1sKGEuSFRNTCkseC50aGVuKGZ1bmN0aW9uKCl7YS5UaW1lcj1mdW5jdGlvbigpeyQubXkucmFkaW8oImNvdWNoX21vbml0b3JfdGltZXIiLERhdGUubm93KCkpfS5ldmVyeSgyZTMpfS5kZWJvdW5jZSgxMDApKSxjdy5saWIuc2Nyb2xsWSYmY3cubGliLnNjcm9sbFkoeCksIWN3Lm1lKCkpcmV0dXJuICQuRGVmZXJyZWQoKS5yZWplY3QoNDAxLCJZb3UgbmVlZCB0byBsb2cgaW4gdG8gc2VlIHN0YXRzIix7b2s6ITEscmVhc29uOiJjb25maWcifSkucHJvbWlzZSgpfSx1aTp7IiNtbmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4oeC5kb2MubmFtZXx8IlVudGl0bGVkIG1vbml0b3JpbmcgZ3JvdXAiKS5lc2NhcGVIVE1MKCl9fSwiI25vZGVzIjp7YmluZDoiZG9jLm5vZGVzIixsaXN0Oic8ZGl2IGNsYXNzPSJubm9kZSI+PC9kaXY+JyxpZDpbIm5hbWUiXSxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5Ob2RlfSxjc3M6e25vdGl0bGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jLm5vZGVzLmxlbmd0aDwyfX19LCIjYnRuLXVwZGF0ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYkLm15LnJhZGlvKCJjb3VjaF9tb25pdG9yX3JlZnJlc2giLCEwKX19fSxkaWU6ZnVuY3Rpb24oKXt0aGlzLlRpbWVyLmNhbmNlbCgpfSxzZWxlY3QyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguc2VsZWN0MihhKX0sQXV0b1NhdmVOb2RlOmZ1bmN0aW9uKCl7fSxMczpmdW5jdGlvbigpe30sTW91bnQ6ZnVuY3Rpb24oKXt9LEhUTUw6JzxkaXYgaWQ9ImEtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIHhncmF5IG53IHB0MTggcGwyMCBwcjIwIGxoMTYwIj48ZGl2IGNsYXNzPSJmciB3MTJwIGZzOTUgbWw2IGhpZGUiPjxkaXYgY2xhc3M9ImZpLW1hZ25pZnlpbmctZ2xhc3MgeGdyYXkgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBwbGFjZWhvbGRlcj0iU2VhcmNoIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyIgb25jbGljaz0iJCh0aGlzKS5zaWJsaW5ncyhcJ2lucHV0OmVxKDApXCcpLnZhbChcJ1wnKS5ibHVyKCkiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0Ij48YnV0dG9uIGlkPSJidG4tdXBkYXRlIiBjbGFzcz0idzQwIG1yMiIgdGl0bGU9IlVwZGF0ZSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGlkPSJtbmFtZSIgY2xhc3M9ImRpYiBmczE4MCBsaDEyMCBtdC0yIGJvbGRlciB2YXQgbncgb2ggZWxsIHByNiBwbDYiIHN0eWxlPSJ3aWR0aDpjYWxjKDM1JSAtIDQycHgpOyI+PC9kaXY+PGRpdiBpZD0ibWNvbnRyb2xzIiBjbGFzcz0iZnIgbm9jd21pbiB0YXIiIHN0eWxlPSJ3aWR0aDpjYWxjKDUzJSAtIDZweCk7Ij48ZGl2IGNsYXNzPSJmbCI+PGJ1dHRvbiBpZD0iYnRuLWFkZCIgY2xhc3M9InRlYWwgbXIxMCB0YWMiPjxzcGFuIGNsYXNzPSJmaS1wbHVzIG81MCI+PC9zcGFuPiBBZGQuLi48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0IHc2MHAgdGFsIiBzdHlsZT0ibWF4LXdpZHRoOjI1MHB4OyI+PGlucHV0IGlkPSJlbmNyeXB0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgZnMxMTAgdmF0IHByMiI+PC9kaXY+PGJ1dHRvbiBpZD0iYnRuLXNhdmUiIGNsYXNzPSJncmVlbiBtcjIgdGFjIj7CoFNhdmXCoDwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jbG9zZSIgY2xhc3M9InRhYyI+wqBDbG9zZcKgPC9idXR0b24+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9Im5vZGUtdGlsZXMiIGNsYXNzPSJwYW5lbGhlaWdodCBwbDIwIGZlYXRoZXIgdzEwMHAiPjxkaXYgaWQ9Im5vZGVzIiBjbGFzcz0ibm5vZGVzIHhncmF5IHcxMDBwIHBhbmVsaGVpZ2h0Ij48L2Rpdj48L3NlY3Rpb24+JyxQcmVzZXRzOntSUFM6e25hbWU6IlJlcXVlc3QgcmF0ZSIsbW9kZToic3VtIixuYW1lczpbIlJlcXVlc3QgcmF0ZSIsIjIwWCIsIjQwWCIsIjUwMCJdLHVuaXRzOlsicmVxL3MiLCJyZXEiLCJyZXEiLCJyZXEiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNTAsMjA5LDAsMC42OSkiLCIgcmdiYSgyNTUsMTIzLDAsMC42OSkiLCIgcmdiYSgyMjksMCwyMzUsMC42OSkiXSxmaWVsZHM6W1siMjAwIiwiMjAxIiwiMjAyIiwiNDAwIiwiNDAxIiwiNDAzIiwiNDA0IiwiNDA5IiwiNTAwIl0sWyIyMDAiLCIyMDEiLCIyMDIiXSxbIjQwMCIsIjQwMSIsIjQwMyIsIjQwNCIsIjQwOSJdLFsiNTAwIl1dLHJvd3M6W1swXSxbMF0sWzBdLFswXV0sdGltZTpbMTBdfSxEQlJXOntuYW1lOiJEQnMgcmVhZHMvd3JpdGVzIHJhdGUiLG1vZGU6InN1bSIsbmFtZXM6WyJSVyByYXRlIiwiUmVhZHMiLCJXcml0ZXMiLCJWaWV3IHJlYWRzIl0sdW5pdHM6WyJEQiBvcHMvcyIsIm9wcyIsIm9wcyIsIm9wcyJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSgzNSwxMzcsMjU1LDAuNTgpIiwiIHJnYmEoMjU1LDM4LDExNywwLjU4KSIsIiByZ2JhKDI1NSwxOTUsMCwwLjgpIl0sZmllbGRzOltbImRhdGFiYXNlX3JlYWRzIiwiZGF0YWJhc2Vfd3JpdGVzIl0sWyJkYXRhYmFzZV9yZWFkcyJdLFsiZGF0YWJhc2Vfd3JpdGVzIl0sWyJ2aWV3X3JlYWRzIl1dLHJvd3M6W1swXSxbMF0sWzBdXSx0aW1lOlsxMF19LEFVVEg6e25hbWU6IkF1dGggaGl0cyBhbmQgbWlzc2VzIixtb2RlOiJzdW0iLG5hbWVzOlsiQXV0aCBoaXRzL21pc3NlcyBycHMiLCJIaXRzIiwiTWlzc2VzIl0sdW5pdHM6WyJhdXRoIHJwcyIsInJlcSIsInJlcSJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSgyMCwyMzIsMCwwLjY5KSIsIiByZ2JhKDI1NSwzOCwzOCwwLjY5KSJdLGZpZWxkczpbWyJhdXRoX2NhY2hlX2hpdHMiLCJhdXRoX2NhY2hlX21pc3NlcyJdLFsiYXV0aF9jYWNoZV9oaXRzIl0sWyJhdXRoX2NhY2hlX21pc3NlcyJdXSxyb3dzOltbMF0sWzBdLFswXV0sdGltZTpbMTBdfSxGRUVEUzp7bmFtZToiTnVtYmVyIG9mIGNvbnRpbnVvdXMgX2NoYW5nZXMgZmVlZHMgYWN0aXZlIixuYW1lczpbIkNvbnRpbnVvdXMgX2NoYW5nZXMgZmVlZHMiLCJGZWVkcyJdLHVuaXRzOlsic3luYyBmZWVkcyIsIiJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSg4NiwxMjMsMTcyLDAuNjIpIl0sZmllbGRzOltbImNsaWVudHNfcmVxdWVzdGluZ19jaGFuZ2VzIl0sWyJjbGllbnRzX3JlcXVlc3RpbmdfY2hhbmdlcyJdXSxyb3dzOltbMF0sWzBdXSx0aW1lOlsxMF0sbW9kZToiY3VycmVudCJ9LEZJTEVTOntuYW1lOiJPcGVuIE9TIGZpbGVzIixuYW1lczpbIkZpbGVzIiwiRmlsZXMiXSx1bml0czpbIm9wZW4gZmlsZXMiLCIiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoODYsMTIzLDE3MiwwLjYyKSJdLGZpZWxkczpbWyJvcGVuX29zX2ZpbGVzIl0sWyJvcGVuX29zX2ZpbGVzIl1dLHJvd3M6W1swXSxbMF1dLHRpbWU6WzEwXSxtb2RlOiJjdXJyZW50In0sUkFNOntuYW1lOiJSQU0iLG5hbWVzOlsiUkFNLCBNYiIsIk5vZGUgUkFNLCBNYiJdLHVuaXRzOlsiTWIgUkFNIiwiTWIiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNjMsMTY5LDE1OCwwLjYyKSJdLGRlbm9taW5hdG9yOjEwNDg1NzYsZmllbGRzOltbImF0b20iLCJiaW5hcnkiLCJjb2RlIiwiZXRzIiwib3RoZXIiLCJwcm9jZXNzZXMiXSxbImF0b20iLCJiaW5hcnkiLCJjb2RlIiwiZXRzIiwib3RoZXIiLCJwcm9jZXNzZXMiXV0scm93czpbWzBdLFswXV0sdGltZTpbMTBdLG1vZGU6ImN1cnJlbnQifSxVUFRJTUU6e25hbWU6IlVwdGltZSIsbmFtZXM6WyJVcHRpbWUsIGRheXMiLCJEYXlzIl0sdW5pdHM6WyJkYXlzIHVwdGltZSIsImRheXMiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNjMsMTY5LDE1OCwwLjYyKSJdLGRlbm9taW5hdG9yOjg2NDAwLGZpZWxkczpbWyJ1cHRpbWUiXSxbInVwdGltZSJdXSxyb3dzOltbMF0sWzBdXSx0aW1lOlsxMF0sbW9kZToiY3VycmVudCJ9fSxkZWZhdWx0Tm9kZXM6eyIxLngiOntuYW1lOiJOb2RlIDEiLGNvdWNoOiIxLngiLHVybDoiLyIsaGVhbHRoOiIiLGdhdWdlczpbe25hbWU6Ik9wZW4gZmlsZXMiLHByZXNldDoiRklMRVMifSx7bmFtZToiQWN0aXZlIF9jaGFuZ2VzIGZlZWRzIixwcmVzZXQ6IkZFRURTIn1dLHNlcmllczpbe25hbWU6IlJlcXVlc3QgcmF0ZSIscHJlc2V0OiJSUFMifSx7bmFtZToiREJzIFIvVyByYXRlIixwcmVzZXQ6IkRCUlcifV19LCIyLngiOntuYW1lOiJOb2RlIDEiLGNvdWNoOiIyLngiLHVybDoiLyIsaGVhbHRoOiIiLGdhdWdlczpbe25hbWU6Ik9wZW4gZmlsZXMiLHByZXNldDoiRklMRVMifSx7bmFtZToiQWN0aXZlIF9jaGFuZ2VzIGZlZWRzIixwcmVzZXQ6IkZFRURTIn0se25hbWU6IlVwdGltZSIscHJlc2V0OiJVUFRJTUUifV0sc2VyaWVzOlt7bmFtZToiUmVxdWVzdCByYXRlIixwcmVzZXQ6IlJQUyJ9LHtuYW1lOiJEQnMgUi9XIHJhdGUiLHByZXNldDoiREJSVyJ9LHtuYW1lOiJSQU0iLHByZXNldDoiUkFNIn1dfX0sUmVxOmZ1bmN0aW9uKHgpe3ZhciBhPSQuZXh0ZW5kKCEwLHt9LHgpO3JldHVybiAkLmFqYXgoYSl9LEFwcGx5UHJlc2V0czpmdW5jdGlvbih4KXt2YXIgYT10aGlzLlByZXNldHMsYj1PYmplY3QuaXNBcnJheTtyZXR1cm4oeC5zZXJpZXN8fFtdKS5mb3JFYWNoKGMpLCh4LmdhdWdlc3x8W10pLmZvckVhY2goYykseDtmdW5jdGlvbiBjKGMpe2lmKGMucHJlc2V0JiZhW2MucHJlc2V0XSl7dmFyIGQ9YVtjLnByZXNldF0sZT1PYmplY3Quc2VsZWN0KGMsWyJyb3dzIiwidGltZSJdKTtyZXR1cm4gJC5leHRlbmQoYyxPYmplY3QuY2xvbmUoZCwhMCksZSksYihjLnJvd3MpJiZiKGMudGltZSl8fChjLnJvd3M9T2JqZWN0LmNsb25lKGQucm93cywhMCksYy50aW1lPVsxMF0pLGMucm93cy5sZW5ndGg8Yy5maWVsZHMubGVuZ3RoJiYoYy5yb3dzPWMucm93cy5hZGQoT2JqZWN0LmNsb25lKGQucm93cywhMCkpLnRvKGMuZmllbGRzLmxlbmd0aCkpLHh9fX0sR2VuQXhpczpmdW5jdGlvbih4KXt2YXIgYT14LkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGI9NjAqeC5DZmcoKS5zdGF0c1NjYWxlWSxjPXguVC5QaXZvdFgsZD14LlQuUGl2b3RZLGU9eC5ULlBpdm90VGV4dCxmPVtdLGc9W107cmV0dXJuIHguQXhpcy5oNjA9PWI/eC5BeGlzOig3Li50aW1lcyhmdW5jdGlvbih4KXtmLnVuc2hpZnQoYy5hc3NpZ24oIk0wLHsyfSBMezF9LHsyfSAiLmFzc2lnbihhKzIwMCx4KihiLzYpKy41KSwiIHJnYmEoMTU4LDE3NCwxOTIsIisoeD82PT14PyIwLjQpIjoiMC4xNSkiOiIwLjI1KSIpKSl9KSwoYS82MCkudGltZXMoZnVuY3Rpb24oeCl7dmFyIGE9eCsxO2cudW5zaGlmdChkLmFzc2lnbigiTXsxfSwwIEx7MX0sezJ9ICIuYXNzaWduKDYwKmEsYiksIiByZ2JhKDE1OCwxNzQsMTkyLDAuMzUpIikrZS5hc3NpZ24oNjAqYSsyLCLiiJIiK2ErIm1pbiIpKX0pLHguQXhpcz17aDYwOmIsYXhpc3g6ZlswXSxwaXZvdHN4OmYuc2xpY2UoMSkuam9pbigiIikscGl2b3RzeTpnLmpvaW4oIiIpfSl9LEdlbkdyYXBoczpmdW5jdGlvbih4KXt2YXIgYT14LmRhdGEsYj14LmhCYXIsYz14LkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGQ9eC5DZmcoKS5zdGF0c01heEdyYXBocyxlPXguQ2ZnKCkuc3RhdHNTY2FsZVksZj02MCplLGc9YS5maWVsZHMubGVuZ3RoLGg9YS5yb3dzLnNsaWNlKDApLGk9YS50aW1lLnNsaWNlKDEpLGo9YS5jb2xvcnMsaz1hLm5hbWVzLGw9YS51bml0cyxtPWEuZGVub21pbmF0b3J8fDEsbj1hLnRpbWVbMF0vMTAsbz14LkF4aXMscD1vLmF4aXN4LHE9by5waXZvdHN4LHI9by5waXZvdHN5LHM9eC5ULkJhcix0PXguVC5HcmFwaCx1PXguVC5MaW5lLHY9eC5ULkJhclRpcCx3PVtdO0UoKSxpLmxlbmd0aC50aW1lcyhmdW5jdGlvbih4KXt2YXIgaj1pW3hdLzEwLG89MSxwPVtdO2lmKG4tPWosaj5jKXtpZih3Lmxlbmd0aD49ZClyZXR1cm47dmFyIHE9RShuLGopO289cS9qLGo9cX1nLnRpbWVzKGZ1bmN0aW9uKGQpe2lmKGQpe3ZhciBnPWhbZF1beCsxXXx8MCxpPXdbMF0ubGluZXNbZF0saz13WzBdLmR0LGw9d1swXS5keDtpZihwLnB1c2goZyksIShsK2s+MipjKzIwMCkpe3ZhciBuPSJjdXJyZW50Ij09YS5tb2RlP2YrLjUtYihnKm8vbSwxKSplOmYrMS1iKGcqby9tLGopKmUqLjk5MTg7aSs9aT8iTHsxfSx7M30gTHsyfSx7M30gIi5hc3NpZ24oRChsK2srKGovMykuY2xhbXAoMCwzKSksRChsK2sraiksbik6Ik17MX0sezN9IEx7Mn0sezN9ICIuYXNzaWduKEQobCksRChsK2sraiksbiksd1swXS5saW5lc1tkXT1pfX19KSx3WzBdLmR0Kz1qLHdbMF0uY292ZXJzKz1zLmFzc2lnbigiIixqLHYuYXNzaWduKHt0aW1lOkRhdGUuY3JlYXRlKDFlMyoobitqKSkuZm9ybWF0KCJ7ZH0ge01vbn0ge3l5eXl9LCB7SEh9OnttbX06e3NzfSIpLGR1cjoiRHVyYXRpb246ICIrai5yb3VuZCgxKSsicyIscm93czpwLm1hcChmdW5jdGlvbih4LGEpe3JldHVybiBrW2ErMV0rIjogIisobyp4L20pLnJvdW5kKDEpKyIgIitsW2ErMV19KS5qb2luKCJcbiIpfSkpfSksdy5yZXZlcnNlKCk7dmFyIHk9eC5teS5yb290KCkud2lkdGgoKXx8MCx6PSh5PjA/KHktMTAwLTQxKS5jbGFtcCgzMDAsM2UzKTp4LlByZXZXaWR0aCl8fDMwMCxBPUcod1swXS5kdCksQj13WzFdP3dbMV0uZHQ6MCxDPXdbMl0/d1syXS5kdDowO3JldHVybiB4LlByZXZXaWR0aD16LHdbMF0ud2lkdGg9eix6PDQ1MD93Lmxlbmd0aD0xOno8NzIwP0I/KEI9Qi5jbGFtcCgxNTAsei8zKSx3WzBdLndpZHRoPUE9KHotQikuY2xhbXAoMzAwLDFlNiksd1sxXS53aWR0aD16LUEtMzEsdy5sZW5ndGg9Mik6dy5sZW5ndGg9MTpCJiYhQz8oQj1HKEIuY2xhbXAoMTIwLHovMykpLHdbMF0ud2lkdGg9QT0oei1CKS5jbGFtcCgzMDAsMWU2KSx3WzFdLndpZHRoPXotQS0zMSx3Lmxlbmd0aD0yKTpDPyh3WzFdLndpZHRoPUI9Qi5jbGFtcCgxMjAsei8zLjUtMzEpLHdbMl0ud2lkdGg9Qz1DLmNsYW1wKDEyMCx6LzEuOC1CLTYxKSx3WzBdLndpZHRoPXotQi1DLTYxLHcubGVuZ3RoPTMpOncubGVuZ3RoPTEsdy5mb3JFYWNoKEYpLHc7ZnVuY3Rpb24gRCh4KXtyZXR1cm4geC5jbGFtcCgtYy0yMDAsYysyMDApLnJvdW5kKDIpfWZ1bmN0aW9uIEUoeCxhKXt2YXIgYj17ZW5kOiIiLHdpZHRoOjAsZHg6MCxkdDowLGxpbmVzOlsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl0udG8oZyksY292ZXJzOiIiLHN2ZzoiIn0sYz0wO2lmKHgpe3ZhciBkPURhdGUuY3JlYXRlKE1hdGgucm91bmQoMWUzKngpKS5jbG9uZSghMCkuY2xvbmUoITApO2Quc2V0TWlsbGlzZWNvbmRzKDApLGQuc2V0U2Vjb25kcygwKSxkLmFkZE1pbnV0ZXMoMSksTWF0aC5hYnMoeC1kLnZhbHVlT2YoKS8xZTMpPDUmJmQuYWRkTWludXRlcygxKSxjPU1hdGgucm91bmQoZC52YWx1ZU9mKCkvMTAwKS8xMC14LGIuZW5kPWQuZm9ybWF0KCd7SEh9OnttbX08YnI+PHNwYW4gY2xhc3M9ImZzODAgbzcwIj57eXl5eX3Ct3tNTX3Ct3tkZH08L3NwYW4+Jyl9cmV0dXJuIHcudW5zaGlmdChiKSxjfHxhfWZ1bmN0aW9uIEYoeCxhKXt4LnN2Zz10LmFzc2lnbih4LndpZHRoLTEsZisxLHErKGE/cjoiIikreC5saW5lcy5tYXAoZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT91LmFzc2lnbih4LGpbYV0pOiIifSkuam9pbigiIikrcCl9ZnVuY3Rpb24gRyh4KXtyZXR1cm4gNjAqKE1hdGguZmxvb3IoeC82MCkrMSl9fSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDoxLjRlbTsiLCIgI25vZGUtdGlsZXMiOiIiLCIgLncxMnAiOiJ3aWR0aDoxMiU7IiwiIC53MThwIjoid2lkdGg6MTglOyIsIiAubm5vZGVzIjp7IiI6InBhZGRpbmc6MTZweCA0cHggMHB4IDBweDsiLCIgLm5ub2RlIjp7IiI6WyJib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjAxLDIxOSwyMzQsMCk7IGJvcmRlci1yYWRpdXM6IDNweDsgIiwicGFkZGluZzoycHggMTVweCAxMHB4IDE1cHg7IG1hcmdpbjogMHB4IDE2cHggMTZweCAwO2JhY2tncm91bmQ6I2Y0ZjhmYTsiXSwiIC5uc2VyaWVzIjoid2lkdGg6IGNhbGMoMTAwJSAtIDExMHB4KTsiLCIgLm50aXRsZSI6ImJvcmRlci1ib3R0b206MXB4IGRvdHRlZCByZ2JhKDE2MCwxNzYsMTkyLDAuNTYpOyIsIiAucGFsZWJnIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDApOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zczsiLCIgLmd1bml0cyI6ImZvbnQtc2l6ZToxMDUlOyBsaW5lLWhlaWdodDoxLjJlbTsiLCIgLmd2YWwiOiJmb250LXNpemU6MTgwJTsgbGluZS1oZWlnaHQ6MWVtOyIsIiAuZ25hbWVzIjp7IiI6Im9wYWNpdHk6IDAuMzsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOyBmb250LXNpemU6MC43ZW07IGxpbmUtaGVpZ2h0OjEuMTVlbTsgZm9udC13ZWlnaHQ6NTAwOyIsIj5zcGFuIjoiIHdoaXRlLXNwYWNlOiBub3dyYXA7In0sIi5yZWQxIjp7IiAucmhpc3RvIC5yc2hpbSI6ImJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjZmY3MTgwOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDEyNywxMjksMC4yKTsiLCIgLnJoaXN0byAucnNoaW0+ZGl2IjoiYm9yZGVyLXRvcDoxcHggZG90dGVkIHJnYmEoMjU1LDEyNywxMjksMC43KTsifX0sIi5ub3RpdGxlIjp7IiAubnRpdGxlIjoiZGlzcGxheTpub25lOyIsIiAubm5vZGUiOiJwYWRkaW5nLXRvcDo4cHg7In19LCIgLnJnYXVnZSI6ZnVuY3Rpb24oKXt2YXIgeD02MCp0aGlzLkNmZygpLnN0YXRzU2NhbGVZO3JldHVybnsiIjoiZGlzcGxheTpibG9jazsgcGFkZGluZy10b3A6IDVweDsgaGVpZ2h0OnsxfXB4OyAiLmFzc2lnbih4KzE2KSwiOmFmdGVyIjpbJ2NvbnRlbnQ6IiI7IGhlaWdodDp7MX1weDsgd2lkdGg6MXB4OyB0b3A6OHB4OyByaWdodDowcHg7Jy5hc3NpZ24oeCs0KSwicG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yaWdodDoxcHggZG90dGVkIHJnYmEoMTYwLDE3NiwxOTIsMC41Nik7ICJdfX0sIiAucnNlcmllIjp7IiI6ZnVuY3Rpb24oKXt2YXIgeD02MCp0aGlzLkNmZygpLnN0YXRzU2NhbGVZO3JldHVybiJkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyBwYWRkaW5nLXRvcDogNXB4OyBoZWlnaHQ6ezF9cHg7IG92ZXJmbG93OmhpZGRlbjsiLmFzc2lnbih4KzE2KX0sIjpob3ZlciI6eyIgLmduYW1lcyI6Im9wYWNpdHk6MTsiLCIgLnBhbGViZyI6ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsifSwiIC5yaGlzdG8iOmZ1bmN0aW9uKCl7dmFyIHg9NjAqdGhpcy5DZmcoKS5zdGF0c1NjYWxlWXwwO3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHsiIjoid2lkdGg6Y2FsYygxMDAlIC0gMTAwcHgpOyBwYWRkaW5nLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OjQwMDsiLCIgLnJzY2FsZSI6eyIiOiJ3aWR0aDo0MHB4OyBoZWlnaHQ6e2g2MX1weDsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjogIzgwOTBhMDsiLCI+ZGl2Ijoid2lkdGg6MTAwJTsgaGVpZ2h0OntoMTB9cHg7IGZvbnQtc2l6ZTo5cHg7IGxpbmUtaGVpZ2h0OjcuMnB4OyBwYWRkaW5nLXJpZ2h0OjRweDsgdGV4dC1hbGlnbjpyaWdodDsgb3ZlcmZsb3c6aGlkZGVuOyIsIj5kaXY6Zmlyc3QtY2hpbGQiOiJtYXJnaW4tdG9wOi0ycHg7IiwiPmRpdjphZnRlciI6J2NvbnRlbnQ6IiAiOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgcmlnaHQ6MDsgd2lkdGg6MnB4OyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci10b3A6MXB4IHNvbGlkICNhMGIwYzA7J30sIiAucnNoaW0iOnsiIjoiaGVpZ2h0OntoNjF9cHg7IHdpZHRoOjA7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjYTBiMGMwOyBvdmVyZmxvdzpoaWRkZW47IiwiPmRpdiI6ImhlaWdodDp7aDEwfXB4OyB3aWR0aDoxMDAlOyBib3JkZXItdG9wOjFweCBkb3R0ZWQgcmdiYSgxNjAsMTc2LDE5MiwwLjM3KTsifSwiIC5ydmFsdWVzIjp7IiI6Inh3aWR0aDpjYWxjKDEwMCUgLSA0MXB4KTsgd2lkdGg6YXV0bzsgaGVpZ2h0OntoNjF9cHg7b3ZlcmZsb3c6aGlkZGVuOyBjb2xvcjogIzgwOTBhMDsiLCIgLnJiYXJzIjp7Ij4ucmJhciI6eyIiOiJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3A7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp7aDYwfXB4OyIsIj5kaXYiOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsifSwiIC5yY292ZXIiOnsiIjoicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHotaW5kZXg6KzI7IiwiPi5yYmFyIjp7IiI6WyJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBvdmVyZmxvdzpoaWRkZW47IiwiaGVpZ2h0OntoNjF9cHg7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzOyIsImJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDE5MywzOSwwKTsiXSwiOmhvdmVyIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMTkzLDM5LDAuNDMpOyJ9fX0sIiAueHJzdmciOnsiIjoiYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgxNjAsMTc2LDE5MiwwLjM3KTsifSwiIC5ydGltZSI6InBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTFweDsgbGVmdDoycHg7IGZvbnQtc2l6ZToxMHB4OyBsaW5lLWhlaWdodDoxNXB4OyBjb2xvcjpyZ2JhKDE2MCwxNzYsMTkyLDAuODEpOyJ9LCIgLnJib3VuZHMiOiJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgxNjAsMTc2LDE5MiwwLjQpOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMTYwLDE3NiwxOTIsMC40KTsiLCIgdHNwYW4iOiJmaWxsOnJnYmEoMTYwLDE3NiwxOTIsMC44MSk7IiwiICN0YWlsIC5yZ3JhcGgiOiJtYXgtd2lkdGg6NjAwcHg7IG92ZXJmbG93OmhpZGRlbjsiLCIgI3lheGlzIjoicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHotaW5kZXg6KzE7In0pLmFzc2lnbih7aDEwOngvNixoNjA6eCxoNjE6eCsxLGg2Mjp4KzIsaDYzOngrM30pKX19LCIgLmFwcC1oZWFkIjp7IiI6ImRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDUycHg7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiAxMDAlOyJ9fSxOb2RlOntpZDoiY3cuQ291Y2guTW9uaXRvci5Ob2RlIixwYXJhbXM6e3Jlc3R5bGU6NTB9LGluaGVyaXQ6WyJTZXJpZSIsIkdhdWdlIiwiQ2ZnIiwiR2VuR3JhcGhzIiwiR2VuQXhpcyIsIkF1dG9TYXZlTm9kZSJdLFJUOmZ1bmN0aW9uKHgpe3JldHVybiBudWxsPT14P3RoaXM6T2JqZWN0LmlzQXJyYXkoeCk/Y3cubGliLmdldHJlZih0aGlzLHgpOnRoaXNbeF19LGRhdGE6e25hbWU6Ik5vZGUiLGhlYWx0aDoiIix1cmw6Ii8iLHNlcmllczpbXSxnYXVnZXM6W119LFBlbmRpbmc6bnVsbCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLGEuQ2ZnKCkuc3RhdHNSZWZyZXNoKTtyZXR1cm4geC5odG1sKGEuSFRNTCkseC50aGVuKGZ1bmN0aW9uKCl7YS5HZXRTdGF0cy5kZWJvdW5jZSgxZTMpKCksYS5HZXRTdGF0cy5kZWJvdW5jZSgxZTMqYi8zKSgpLGEuVGltZXI9ZnVuY3Rpb24oKXthLkdldFN0YXRzKCl9LmV2ZXJ5KDFlMypiKX0uZGVib3VuY2UoMSkpLGEuR2V0U3RhdHMoITApfSx1aTp7IiNubmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5uYW1lLnNwbGl0KCJAIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmVzY2FwZUhUTUwoKX0pLmpvaW4oJzxzcGFuIGNsYXNzPSJvNjAgcGwyIHByMiI+QDwvc3Bhbj4nKX0sY3NzOntyZWQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5teS5yb290KCkudG9nZ2xlQ2xhc3MoInJlZDEiLCEheC5oZWFsdGgpLCExfX19LCIjbnNlcmllcyI6e2JpbmQ6InNlcmllcyIsaGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oW3gucm93cyx4LnRpbWVdKX0sbGlzdDonPGRpdiBjbGFzcz0icnNlcmllIj48L2Rpdj4nLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlNlcmllfX0sIiNuZ2F1Z2VzIjp7YmluZDoiZ2F1Z2VzIixoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC5yb3dzLHgudGltZV0pfSxsaXN0Oic8ZGl2IGNsYXNzPSJyZ2F1Z2UiPjwvZGl2PicsbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuR2F1Z2V9fSwiI25wcm94eSI6e2JpbmQ6ZnVuY3Rpb24oKXt9LGxpc3Rlbjp7Y291Y2hfbW9uaXRvcl9yZWZyZXNoOmZ1bmN0aW9uKHgsYSl7dGhpcy5HZXRTdGF0cygpfSxjb3VjaF9tb25pdG9yX2NmZ19jaGFuZ2U6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2IuVGltZXIuY2FuY2VsKCksYi5UaW1lcj1mdW5jdGlvbigpe2IuR2V0U3RhdHMoKX0uZXZlcnkoMWUzKmIuQ2ZnKCkuc3RhdHNSZWZyZXNoKSxiLkdldFN0YXRzKCl9fX19LGRpZTpmdW5jdGlvbigpe3RoaXMuVGltZXIuY2FuY2VsKCl9LEhUTUw6JzxkaXYgY2xhc3M9Im50aXRsZSBwYjUgbWI1Ij48ZGl2IGlkPSJubmFtZSIgY2xhc3M9Im5uYW1lIGZzMTYwIGxoMTQwIHB0MiBib2xkZXIiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5nYXVnZXMiIGNsYXNzPSJuZ2F1Z2VzIHcxMTAgZGliIHZhdCI+PC9kaXY+PGRpdiBpZD0ibnNlcmllcyIgY2xhc3M9Im5zZXJpZXMgZGliIHZhdCI+PC9kaXY+PGRpdiBpZD0ibnByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxHZXRTdGF0czpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Y3cubGliLm1hc2ssZD0kLkRlZmVycmVkKCksZT1PYmplY3QuaXNPYmplY3QsZj1PYmplY3QuaXNOdW1iZXIsZz17fTtpZihhLlBlbmRpbmcpcmV0dXJuIGEuUGVuZGluZzt2YXIgaD1bXSxpPSIiLGo9OTAwKmEuQ2ZnKCkuc3RhdHNSZWZyZXNoLGs9Yi5jb3VjaDwiMi4iP1siX3N0YXRzIl06WyJfc3RhdHMiLCJfc3lzdGVtIl07cmV0dXJuIGIuY291Y2g+PSIyLiImJiEvXC9fbm9kZS8udGVzdChiLnVybCkmJihpPSJfbm9kZS9fbG9jYWwvIiksYi5oZWFsdGg9IiIsay5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjPXtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifTtiLmJhc2ljJiYoYy5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2IuYmFzaWMpLGgucHVzaChhLlJlcSh7dXJsOmIudXJsKygiLyIhPWIudXJsLnN1YnN0cigtMSk/Ii8iOiIiKStpK3gsbWV0aG9kOiJnZXQiLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOmMsdGltZW91dDpqfSkudGhlbihmdW5jdGlvbih4KXskLmV4dGVuZChnLGwoeCkpfSkuZmFpbChmdW5jdGlvbih4LGEsYyl7Yi5oZWFsdGg9YysiIn0pKX0pLGEuUGVuZGluZz1RLmFsbFNldHRsZWQoaCkudGhlbihmdW5jdGlvbigpe2IuaGVhbHRofHxtKGcpLHh8fChhLm15LmZpbmQoIiNuc2VyaWVzIikudHJpZ2dlcigicmVjYWxjIiksYS5teS5maW5kKCIjbmdhdWdlcyIpLnRyaWdnZXIoInJlY2FsYyIpKTt0cnl7YS5BdXRvU2F2ZU5vZGUoYil9Y2F0Y2goeCl7fX0pLmZpbmFsbHkoZnVuY3Rpb24oKXthLlBlbmRpbmc9bnVsbCx4fHxhLm15LmZpbmQoIiNubmFtZSIpLnRyaWdnZXIoImNoZWNrIiksZC5yZXNvbHZlKCl9KSxhLlBlbmRpbmc7ZnVuY3Rpb24gbCh4KXt2YXIgYT17fTtyZXR1cm4geC5tZW1vcnkmJngudXB0aW1lP0pTT04uc3RyaW5naWZ5KHgsZnVuY3Rpb24oeCxiKXtyZXR1cm4gZihiKSYmKGFbeF09YiksYn0pOkpTT04uc3RyaW5naWZ5KHgsZnVuY3Rpb24oeCxiKXtyZXR1cm4gZShiKSYmKGYoYi5zdW0pfHxmKGIudmFsdWUpKSYmKGFbeF09Yi5zdW18fGIudmFsdWV8fDApLGJ9KSxhfWZ1bmN0aW9uIG0oeCl7dmFyIGQ9YS5DZmcoKS5zZXJpZU1heExlbmd0aDtmdW5jdGlvbiBlKGEsYil7dmFyIGU9TWF0aC5yb3VuZChEYXRlLm5vdygpLzEwMCk7YS50aW1lWzBdPWUtYS50aW1lWzBdLGEudGltZS51bnNoaWZ0KGUpLGEuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oYixkKXt2YXIgZT1jKHgsYikuc3VtKCl8fDA7ImN1cnJlbnQiIT1hLm1vZGUmJihhLnJvd3NbZF1bMF09ZS1hLnJvd3NbZF1bMF0pLGEucm93c1tkXS51bnNoaWZ0KGUpLDI9PWEudGltZS5sZW5ndGgmJihhLnJvd3NbZF1bMV09MCl9KSxhLnJvd3NbMF0ubGVuZ3RoPjEwJiYoYS5yb3dzWzBdLmxlbmd0aD0xMCksMj09YS50aW1lLmxlbmd0aD8oYS50aW1lWzFdPTMwLGEuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oeCxiKXthLnJvd3NbYl1bMV09MH0pKTphLnRpbWUubGVuZ3RoPmQmJihhLnRpbWUubGVuZ3RoPWQsYS5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCxhKXt4Lmxlbmd0aD5kJiYoeC5sZW5ndGg9ZCl9KSl9Yi5zZXJpZXMuZm9yRWFjaChlKSxiLmdhdWdlcy5mb3JFYWNoKGUpfX19LFNlcmllOntpZDoiY3cuQ291Y2guTW9uaXRvci5TZXJpZSIscGFyYW1zOntyZXN0eWxlOjYwfSxpbmhlcml0OlsiQ2ZnIiwiR2VuR3JhcGhzIiwiR2VuQXhpcyJdLGRhdGE6e25hbWU6IlJvdyIsZGVub21pbmF0b3I6MSxuYW1lczpbXSxjb2xvcnM6W10sZmllbGRzOltdLHJvd3M6W10sdGltZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLkdlbkF4aXMoYSkseC5odG1sKGEuSFRNTCl9LHVpOnsiLmd2YWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9MDtyZXR1cm4gYj0iY3VycmVudCI9PXgubW9kZT8reC5yb3dzWzBdWzBdfHwwOngudGltZVsxXT8xMCooK3gucm93c1swXVsxXXx8MCkveC50aW1lWzFdOjAsKGIvPXguZGVub21pbmF0b3J8fDEpPDE/Yi5yb3VuZCgyKSsiIjpiPjk5JiZiPDFlND8oMHxiKSsiIjpiLnJvdW5kKDEpLm1ldHJpYygzLDMpLnJlcGxhY2UoLyhcZFxkXGQ/XC5cZClcZHsxLDJ9LywiJDEiKX0sd2F0Y2g6IiNwcmltZSJ9LCIuZ3VuaXRzIjp7YmluZDoidW5pdHMuMCJ9LCIucnNoaW0iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsPT1hKXt2YXIgYz1NYXRoLnJvdW5kKERhdGUubm93KCkvMWUzLXgudGltZVswXS8xMCk7Yi5jc3Moe3dpZHRoOmMrInB4In0pfX0sbGlzdGVuOntjb3VjaF9tb25pdG9yX3RpbWVyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuITB9fX0sIiN5YXhpcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5HZW5BeGlzKGIpO2lmKG51bGw9PWEpcmV0dXJuIGIuVC5HcmFwaC5hc3NpZ24oYi5DZmcoKS5zdGF0c01heFRpbWVmcmFtZSw2MCpiLkNmZygpLnN0YXRzU2NhbGVZLGMucGl2b3RzeSl9LHdhdGNoOiIjcHJpbWUifSwiLmduYW1lcyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZXMuc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGEsYil7cmV0dXJuJzxzcGFuIHN0eWxlPSJjb2xvcjp7Mn0iPnsxfTwvc3Bhbj4nLmFzc2lnbihhLHguY29sb3JzW2IrMV0pfSkuam9pbigiICIpfSwiI3ByaW1lIjp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXMsYz0oYi5HZW5BeGlzKGIpLGIuR2VuR3JhcGhzKGIpKSxkPWIuVC5UYWlsR3JhcGgsZT1iLkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGY9J3sxfTxkaXYgY2xhc3M9InJjb3ZlciI+ezJ9PC9kaXY+JztyZXR1cm4gYi5teS5maW5kKCIjdGFpbCIpLmh0bWwoYy5zbGljZSgxKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGQuYXNzaWduKGYuYXNzaWduKHguc3ZnLHguY292ZXJzKSx4LmVuZCl9KS5qb2luKCIiKSksYi5teS5maW5kKCIjdGlja2luZyIpLmNzcyh7d2lkdGg6Y1swXS53aWR0aC5jbGFtcCgzMDEsZSsxKSsicHgifSksZi5hc3NpZ24oY1swXS5zdmcsY1swXS5jb3ZlcnMpfX19fSxoQmFyOmZ1bmN0aW9uKHgsYSl7dmFyIGI9KCt4fHwwKS5jbGFtcCgwLDFlNTMpLGM9KCthfHwwKS5jbGFtcCgxLDFlNTMpO3JldHVybigxMCpNYXRoLmxvZzEwKDErMTAqYi9jKSkuY2xhbXAoMCw2MSkucm91bmQoMSl9LEhUTUw6JzxkaXYgY2xhc3M9ImdibG9jayBkaWIgdmF0IHcxMDAiPjxkaXYgY2xhc3M9Imd2YWwgdGFyIG84MCBtdC0xIj48L2Rpdj48ZGl2IGNsYXNzPSJndW5pdHMgdGFyIG85MCI+PC9kaXY+PGRpdiBjbGFzcz0iZ25hbWVzIHRhciBtdDIiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJoaXN0byBkaWIgdmF0IG53IG9oIj48ZGl2IGNsYXNzPSJyc2NhbGUgZGliIHZhdCI+PGRpdj4xMDBLPC9kaXY+PGRpdj4xMEs8L2Rpdj48ZGl2PjEwMDA8L2Rpdj48ZGl2PjEwMDwvZGl2PjxkaXY+MTA8L2Rpdj48ZGl2PjE8L2Rpdj48L2Rpdj48ZGl2IGlkPSJ0aWNraW5nIiBjbGFzcz0icnZhbHVlcyBkaWIgdmF0IG53IHJib3VuZHMiPjxkaXYgaWQ9InlheGlzIiBjbGFzcz0ieWF4aXMiPjwvZGl2PjxkaXYgY2xhc3M9InJzaGltIGRpYiB2YXQgcGFsZWJnIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJwcmltZSIgY2xhc3M9InJiYXJzIGRpYiB2YXQgbncgcGFsZWJnIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJydmFsdWVzIGRpYiB2YXQiPjxkaXYgaWQ9InRhaWwiIGNsYXNzPSJyYmFycyBkaWIgdmF0IG53Ij48L2Rpdj48L2Rpdj48L2Rpdj4nLEF4aXM6e3Bpdm90c3g6IiIscGl2b3RzeToiIixheGlzeDoiIn0sVDp7QmFyOic8ZGl2IGNsYXNzPSJyYmFyIiBzdHlsZT0id2lkdGg6ezJ9cHg7IiB0aXRsZT0iezN9Ij57MX08L2Rpdj4nLEJhclRpcDoie3RpbWV9XG57ZHVyfVxue3Jvd3N9IixHcmFwaDonPHN2ZyBjbGFzcz0icnN2ZyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0id2lkdGg6ezF9cHg7aGVpZ2h0OnsyfXB4OyIgeD0iMCIgeT0iMCIgd2lkdGg9InsxfSIgaGVpZ2h0PSJ7Mn0iIHZpZXdCb3g9IjAsIDAsIHsxfSwgezJ9Ij57M308L3N2Zz4nLFRhaWxHcmFwaDonPGRpdiBjbGFzcz0iZGliIHZhdCBtbDMwIHJib3VuZHMgcmdyYXBoIHBhbGViZyI+PGRpdiBjbGFzcz0icnRpbWUiPnsyfTwvZGl2PnsxfTxkaXYgY2xhc3M9InJjb3ZlciI+PC9kaXY+PC9kaXY+JyxMaW5lOic8cGF0aCBkPSJ7MX0iIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJ7Mn0iIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4nLFBpdm90WDonPHBhdGggZD0iezF9IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iezJ9IiBzdHJva2Utd2lkdGg9IjEiLz4nLFBpdm90WTonPHBhdGggZD0iezF9IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iezJ9IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1kYXNoYXJyYXk9IjEsMSIvPicsUGl2b3RUZXh0Oic8dGV4dD48dHNwYW4geD0iezF9IiB5PSIxMCIgZm9udC1zaXplPSIxMCIgeGZpbGw9IiM1RTVENTMiPnsyfTwvdHNwYW4+PC90ZXh0Pid9fSxHYXVnZTp7aWQ6ImN3LkNvdWNoLk1vbml0b3IuR2F1Z2UiLHBhcmFtczp7cmVzdHlsZTo2MH0saW5oZXJpdDpbIkNmZyJdLGRhdGE6e25hbWU6IlJvdyIsbW9kZToiIixuYW1lczpbXSxjb2xvcnM6W10sZmllbGRzOltdLHJvd3M6W10sdGltZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2IuZmllbGRzLmxlbmd0aD0xLGIucm93cy5sZW5ndGg9MSx4Lmh0bWwoYS5IVE1MKX0sdWk6eyIuZ3ZhbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0wO3JldHVybiBiPSJjdXJyZW50Ij09eC5tb2RlPyt4LnJvd3NbMF1bMF18fDA6eC50aW1lWzFdPzEwKigreC5yb3dzWzBdWzFdfHwwKS94LnRpbWVbMV06MCwoYi89eC5kZW5vbWluYXRvcnx8MSk8MT9iLnJvdW5kKDIpKyIiOmI+OTkmJmI8MWU0PygwfGIpKyIiOmIucm91bmQoMSkubWV0cmljKDMsMykucmVwbGFjZSgvKFxkXGRcZD9cLlxkKVxkezEsMn0vLCIkMSIpfX0sIi5ndW5pdHMiOntiaW5kOiJ1bml0cy4wIn19LEhUTUw6JzxkaXYgY2xhc3M9ImdibG9jayBwcjEwIHcxMTAgZGliIHZhdCI+PGRpdiBjbGFzcz0iZ3ZhbCBvODAgbXQtMSI+PC9kaXY+PGRpdiBjbGFzcz0iZ3VuaXRzIG85MCI+PC9kaXY+PC9kaXY+J30sc3RhbXA6MTY0Njg3MzA4NTMyMH19KSwkKGZ1bmN0aW9uKCl7dmFyIHg9bmV3IFVSTChsb2NhdGlvbi5ocmVmKSxhPXgucGF0aG5hbWUucmVwbGFjZSgvXlwvLywiIikuc3BsaXQoIi8iKS5yZXZlcnNlKCkubWFwKG0pLGI9Il9kZXNpZ24iPT1hWzJdLGM9Il9waG90b24iPT1hWzFdLGQ9YS5mcm9tKGI/NDozKS5yZXZlcnNlKCksZT17YmFzZTp4Lm9yaWdpbisiLyIrKGQubGVuZ3RoP2QubWFwKGwpLmpvaW4oIi8iKSsiLyI6IiIpLGRiOmFbYz8xOmI/MzoyXSxkb2M6Yz8iX2Rlc2lnbi9waG90b24iOmI/Il9kZXNpZ24vIithWzFdOmFbMV19OyQubXkubW9kYWwucGFyZW50KCIjY3ctYm9keSIpLCQod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpeyQoIi5teS1tb2RhbCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRyaWdnZXIoImxheW91dCIpfSl9LmRlYm91bmNlKDMwKSksd2luZG93LmN3Lm1lPWZ1bmN0aW9uKHgpe3ZhciBhPSh3aW5kb3cuRERPQ3x8e30pLl9tZXx8e25hbWU6IiIscm9sZXM6W10sbG9jYWxlOiJlbiJ9O3JldHVybiBudWxsPT09eD9hOnZvaWQgMD09PXg/YS5uYW1lOmFbeF19O3ZhciBmPXdpbmRvdy5ERE9DPSQuZXh0ZW5kKHdpbmRvdy5ERE9DLHtfYmFzZTplLmJhc2UsX2RiOmUuZGIsX2RvYzplLmRvY30pO3JldHVybiBPYmplY3Qua2V5cyhmLmFwcHN8fHt9KS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyQubXkuY2FjaGUoZi5hcHBzW3hdKX0pLGcoKS50aGVuKGgpLnRoZW4oaikudGhlbihpKS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjb25zb2xlLmxvZyh4LGEsYiksY3cubGliLm5vdGUoIlBob3RvbiAxLjI2IGZhaWxlZCB0byBzdGFydCwgc2VlIGNvbnNvbGUgZm9yIGRldGFpbHMiLCJlcnJvciIsM2U0KX0pLHdpbmRvdy5teT1mdW5jdGlvbih4KXtyZXR1cm4gJCh4fHx3aW5kb3cuJDApLm15KCJtYW5pZmVzdCIpfSx2b2lkIDA7ZnVuY3Rpb24gZygpe3JldHVybiBRLmFsbChbayhlLmJhc2UrKGUuZGI/bChlLmRiKSsiLyI6IiIpK2UuZG9jKS50aGVuKGZ1bmN0aW9uKHgpeyQuZXh0ZW5kKCEwLGYsT2JqZWN0LnNlbGVjdCh4LCJfaWQgX3JldiBuYW1lIHN0YW1wIHNldHRpbmdzIHZlcnNpb24gdmVyc2lvbnMiLnNwbGl0KCIgIikpKX0pLGsoZS5iYXNlKyJfc2Vzc2lvbiIpLnRoZW4oZnVuY3Rpb24oeCl7JC5leHRlbmQoITAsZi5fbWUseC51c2VyQ3R4fHx7fSl9KV0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9Zi5fbWU7cmV0dXJuIGEubmFtZT1hLm5hbWV8fCIiLGEucm9sZXMuZm9yRWFjaChmdW5jdGlvbih4KXsvXmxhbmdcLVthLXpdezJ9JC8udGVzdCh4KSYmKGEubG9jYWxlPXguc3BsaXQoIi0iKVsxXSwkLm15LmxvY2FsZShhLmxvY2FsZSkpfSksZn0pfWZ1bmN0aW9uIGgoKXt0cnl7dmFyIHg9SlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oImN3LlBob3Rvbi5DZmciKXx8Int9IikudGhlbWV8fCIiOyJhdXRvIj09eCYmd2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8kKCJib2R5IikuYWRkQ2xhc3MoInRoZW1lLWRhcmsiKTp4JiYkKCJib2R5IikuYWRkQ2xhc3MoInRoZW1lLSIreCl9Y2F0Y2goeCl7fX1mdW5jdGlvbiBpKCl7dmFyIHg9JCgiI2N3LXNwYWNlIikubXkoIm1hbmlmZXN0IiksYT14LmhvdGtleXM7T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz1hW2JdOyJmdW5jdGlvbiI9PXR5cGVvZiBjP3dpbmRvdy5ob3RrZXlzKGIsYy5iaW5kKHgpKTp3aW5kb3cuaG90a2V5cyhiLGNbMF0sY1sxXS5iaW5kKHgpKX0pfWZ1bmN0aW9uIGooKXt2YXIgeD1mLnJ1bixhPVtdO3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9JCh4LmNvbnRhaW5lcik7YS5wdXNoKGIubXkoeC5tYW5pZmVzdCx4LmRhdGF8fHt9KSl9KSxRLmFsbChhKX1mdW5jdGlvbiBrKHgpe3JldHVybiAkLmFqYXgoJC5leHRlbmQoe21ldGhvZDoiZ2V0IixkYXRhVHlwZToianNvbiIsaGVhZGVyczp7YWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn0sY2FjaGU6ITF9LHt1cmw6eH0pKX1mdW5jdGlvbiBsKHgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoeCl9ZnVuY3Rpb24gbSh4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHgpfX0pOw==" }, "favicon.png": { "content_type": "image/png", "data": "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" }, "lib/diff.js": { "content_type": "text/javascript", "data": "LypHb29nbGUgRGlmZiBNYXRjaCBhbmQgUGF0Y2gsIGpzb25kaWZmcGF0Y2ggMC4xLjM4Ki8KIWZ1bmN0aW9uKHgpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9eCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10seCk7ZWxzZXt2YXIgYTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9hPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9hPWdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJihhPXNlbGYpLGEuanNvbmRpZmZwYXRjaD14KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB4KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7aWYoIWJbZl0pe2lmKCFhW2ZdKXt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZyYmaClyZXR1cm4gaChmLCEwKTtpZihlKXJldHVybiBlKGYsITApO3ZhciBpPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2YrIiciKTt0aHJvdyBpLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGl9dmFyIGo9YltmXT17ZXhwb3J0czp7fX07YVtmXVswXS5jYWxsKGouZXhwb3J0cyxmdW5jdGlvbih4KXt2YXIgYj1hW2ZdWzFdW3hdO3JldHVybiBkKGJ8fHgpfSxqLGouZXhwb3J0cyx4LGEsYixjKX1yZXR1cm4gYltmXS5leHBvcnRzfWZvcih2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxjLmxlbmd0aDtmKyspZChjW2ZdKTtyZXR1cm4gZH0oezE6W2Z1bmN0aW9uKHgsYSxiKXt4KCIuL2Vudmlyb25tZW50IikuaXNCcm93c2VyJiYod2luZG93LmRpZmZfbWF0Y2hfcGF0Y2g9eCgiLi4vcHVibGljL2V4dGVybmFsL2RpZmZfbWF0Y2hfcGF0Y2hfdW5jb21wcmVzc2VkIikpLGEuZXhwb3J0cz14KCIuL21haW4iKX0seyIuLi9wdWJsaWMvZXh0ZXJuYWwvZGlmZl9tYXRjaF9wYXRjaF91bmNvbXByZXNzZWQiOjIsIi4vZW52aXJvbm1lbnQiOjksIi4vbWFpbiI6MTZ9XSwyOltmdW5jdGlvbih4LGEsYil7ZnVuY3Rpb24gYygpe3RoaXMuRGlmZl9UaW1lb3V0PTEsdGhpcy5EaWZmX0VkaXRDb3N0PTQsdGhpcy5NYXRjaF9UaHJlc2hvbGQ9LjUsdGhpcy5NYXRjaF9EaXN0YW5jZT0xZTMsdGhpcy5QYXRjaF9EZWxldGVUaHJlc2hvbGQ9LjUsdGhpcy5QYXRjaF9NYXJnaW49NCx0aGlzLk1hdGNoX01heEJpdHM9MzJ9dmFyIGQ9LTEsZT0xLGY9MDtjLkRpZmYsYy5wcm90b3R5cGUuZGlmZl9tYWluPWZ1bmN0aW9uKHgsYSxiLGMpe3ZvaWQgMD09PWMmJihjPXRoaXMuRGlmZl9UaW1lb3V0PD0wP051bWJlci5NQVhfVkFMVUU6KG5ldyBEYXRlKS5nZXRUaW1lKCkrMWUzKnRoaXMuRGlmZl9UaW1lb3V0KTt2YXIgZD1jO2lmKG51bGw9PXh8fG51bGw9PWEpdGhyb3cgbmV3IEVycm9yKCJOdWxsIGlucHV0LiAoZGlmZl9tYWluKSIpO2lmKHg9PWEpcmV0dXJuIHg/W1tmLHhdXTpbXTt2b2lkIDA9PT1iJiYoYj0hMCk7dmFyIGU9YixnPXRoaXMuZGlmZl9jb21tb25QcmVmaXgoeCxhKSxoPXguc3Vic3RyaW5nKDAsZyk7eD14LnN1YnN0cmluZyhnKSxhPWEuc3Vic3RyaW5nKGcpLGc9dGhpcy5kaWZmX2NvbW1vblN1ZmZpeCh4LGEpO3ZhciBpPXguc3Vic3RyaW5nKHgubGVuZ3RoLWcpO3g9eC5zdWJzdHJpbmcoMCx4Lmxlbmd0aC1nKSxhPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtZyk7dmFyIGo9dGhpcy5kaWZmX2NvbXB1dGVfKHgsYSxlLGQpO3JldHVybiBoJiZqLnVuc2hpZnQoW2YsaF0pLGkmJmoucHVzaChbZixpXSksdGhpcy5kaWZmX2NsZWFudXBNZXJnZShqKSxqfSxjLnByb3RvdHlwZS5kaWZmX2NvbXB1dGVfPWZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBnO2lmKCF4KXJldHVybltbZSxhXV07aWYoIWEpcmV0dXJuW1tkLHhdXTt2YXIgaD14Lmxlbmd0aD5hLmxlbmd0aD94OmEsaT14Lmxlbmd0aD5hLmxlbmd0aD9hOngsaj1oLmluZGV4T2YoaSk7aWYoLTEhPWopcmV0dXJuIGc9W1tlLGguc3Vic3RyaW5nKDAsaildLFtmLGldLFtlLGguc3Vic3RyaW5nKGoraS5sZW5ndGgpXV0seC5sZW5ndGg+YS5sZW5ndGgmJihnWzBdWzBdPWdbMl1bMF09ZCksZztpZigxPT1pLmxlbmd0aClyZXR1cm5bW2QseF0sW2UsYV1dO2g9aT1udWxsO3ZhciBrPXRoaXMuZGlmZl9oYWxmTWF0Y2hfKHgsYSk7aWYoayl7dmFyIGw9a1swXSxtPWtbMV0sbj1rWzJdLG89a1szXSxwPWtbNF0scT10aGlzLmRpZmZfbWFpbihsLG4sYixjKSxyPXRoaXMuZGlmZl9tYWluKG0sbyxiLGMpO3JldHVybiBxLmNvbmNhdChbW2YscF1dLHIpfXJldHVybiBiJiZ4Lmxlbmd0aD4xMDAmJmEubGVuZ3RoPjEwMD90aGlzLmRpZmZfbGluZU1vZGVfKHgsYSxjKTp0aGlzLmRpZmZfYmlzZWN0Xyh4LGEsYyl9LGMucHJvdG90eXBlLmRpZmZfbGluZU1vZGVfPWZ1bmN0aW9uKHgsYSxiKXt4PShtPXRoaXMuZGlmZl9saW5lc1RvQ2hhcnNfKHgsYSkpWzBdLGE9bVsxXTt2YXIgYz1tWzJdLGc9dGhpcy5kaWZmX2Jpc2VjdF8oeCxhLGIpO3RoaXMuZGlmZl9jaGFyc1RvTGluZXNfKGcsYyksdGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpYyhnKSxnLnB1c2goW2YsIiJdKTtmb3IodmFyIGg9MCxpPTAsaj0wLGs9IiIsbD0iIjtoPGcubGVuZ3RoOyl7c3dpdGNoKGdbaF1bMF0pe2Nhc2UgZTpqKyssbCs9Z1toXVsxXTticmVhaztjYXNlIGQ6aSsrLGsrPWdbaF1bMV07YnJlYWs7Y2FzZSBmOmlmKGk+PTEmJmo+PTEpe3ZhciBtPXRoaXMuZGlmZl9tYWluKGssbCwhMSxiKTtnLnNwbGljZShoLWktaixpK2opLGg9aC1pLWo7Zm9yKHZhciBuPW0ubGVuZ3RoLTE7bj49MDtuLS0pZy5zcGxpY2UoaCwwLG1bbl0pO2grPW0ubGVuZ3RofWo9MCxpPTAsaz0iIixsPSIifWgrK31yZXR1cm4gZy5wb3AoKSxnfSxjLnByb3RvdHlwZS5kaWZmX2Jpc2VjdF89ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz14Lmxlbmd0aCxmPWEubGVuZ3RoLGc9TWF0aC5jZWlsKChjK2YpLzIpLGg9ZyxpPTIqZyxqPW5ldyBBcnJheShpKSxrPW5ldyBBcnJheShpKSxsPTA7aT5sO2wrKylqW2xdPS0xLGtbbF09LTE7altoKzFdPTAsa1toKzFdPTA7Zm9yKHZhciBtPWMtZixuPW0lMiE9MCxvPTAscD0wLHE9MCxyPTAscz0wO2c+cyYmISgobmV3IERhdGUpLmdldFRpbWUoKT5iKTtzKyspe2Zvcih2YXIgdD0tcytvO3MtcD49dDt0Kz0yKXtmb3IodmFyIHU9aCt0LHY9KEI9dD09LXN8fHQhPXMmJmpbdS0xXTxqW3UrMV0/alt1KzFdOmpbdS0xXSsxKS10O2M+QiYmZj52JiZ4LmNoYXJBdChCKT09YS5jaGFyQXQodik7KUIrKyx2Kys7aWYoalt1XT1CLEI+YylwKz0yO2Vsc2UgaWYodj5mKW8rPTI7ZWxzZSBpZihuKXtpZigoej1oK20tdCk+PTAmJmk+eiYmLTEhPWtbel0paWYoQj49KHk9Yy1rW3pdKSlyZXR1cm4gdGhpcy5kaWZmX2Jpc2VjdFNwbGl0Xyh4LGEsQix2LGIpfX1mb3IodmFyIHc9LXMrcTtzLXI+PXc7dys9Mil7Zm9yKHZhciB5LHo9aCt3LEE9KHk9dz09LXN8fHchPXMmJmtbei0xXTxrW3orMV0/a1t6KzFdOmtbei0xXSsxKS13O2M+eSYmZj5BJiZ4LmNoYXJBdChjLXktMSk9PWEuY2hhckF0KGYtQS0xKTspeSsrLEErKztpZihrW3pdPXkseT5jKXIrPTI7ZWxzZSBpZihBPmYpcSs9MjtlbHNlIGlmKCFuKXtpZigodT1oK20tdyk+PTAmJmk+dSYmLTEhPWpbdV0pe3ZhciBCO3Y9aCsoQj1qW3VdKS11O2lmKEI+PSh5PWMteSkpcmV0dXJuIHRoaXMuZGlmZl9iaXNlY3RTcGxpdF8oeCxhLEIsdixiKX19fX1yZXR1cm5bW2QseF0sW2UsYV1dfSxjLnByb3RvdHlwZS5kaWZmX2Jpc2VjdFNwbGl0Xz1mdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPXguc3Vic3RyaW5nKDAsYiksZj1hLnN1YnN0cmluZygwLGMpLGc9eC5zdWJzdHJpbmcoYiksaD1hLnN1YnN0cmluZyhjKSxpPXRoaXMuZGlmZl9tYWluKGUsZiwhMSxkKSxqPXRoaXMuZGlmZl9tYWluKGcsaCwhMSxkKTtyZXR1cm4gaS5jb25jYXQoail9LGMucHJvdG90eXBlLmRpZmZfbGluZXNUb0NoYXJzXz1mdW5jdGlvbih4LGEpe2Z1bmN0aW9uIGIoeCl7Zm9yKHZhciBhPSIiLGI9MCxlPS0xLGY9Yy5sZW5ndGg7ZTx4Lmxlbmd0aC0xOyl7LTE9PShlPXguaW5kZXhPZigiXG4iLGIpKSYmKGU9eC5sZW5ndGgtMSk7dmFyIGc9eC5zdWJzdHJpbmcoYixlKzEpO2I9ZSsxLChkLmhhc093blByb3BlcnR5P2QuaGFzT3duUHJvcGVydHkoZyk6dm9pZCAwIT09ZFtnXSk/YSs9U3RyaW5nLmZyb21DaGFyQ29kZShkW2ddKTooYSs9U3RyaW5nLmZyb21DaGFyQ29kZShmKSxkW2ddPWYsY1tmKytdPWcpfXJldHVybiBhfXZhciBjPVtdLGQ9e307cmV0dXJuIGNbMF09IiIsW2IoeCksYihhKSxjXX0sYy5wcm90b3R5cGUuZGlmZl9jaGFyc1RvTGluZXNfPWZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPTA7Yjx4Lmxlbmd0aDtiKyspe2Zvcih2YXIgYz14W2JdWzFdLGQ9W10sZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09YVtjLmNoYXJDb2RlQXQoZSldO3hbYl1bMV09ZC5qb2luKCIiKX19LGMucHJvdG90eXBlLmRpZmZfY29tbW9uUHJlZml4PWZ1bmN0aW9uKHgsYSl7aWYoIXh8fCFhfHx4LmNoYXJBdCgwKSE9YS5jaGFyQXQoMCkpcmV0dXJuIDA7Zm9yKHZhciBiPTAsYz1NYXRoLm1pbih4Lmxlbmd0aCxhLmxlbmd0aCksZD1jLGU9MDtkPmI7KXguc3Vic3RyaW5nKGUsZCk9PWEuc3Vic3RyaW5nKGUsZCk/ZT1iPWQ6Yz1kLGQ9TWF0aC5mbG9vcigoYy1iKS8yK2IpO3JldHVybiBkfSxjLnByb3RvdHlwZS5kaWZmX2NvbW1vblN1ZmZpeD1mdW5jdGlvbih4LGEpe2lmKCF4fHwhYXx8eC5jaGFyQXQoeC5sZW5ndGgtMSkhPWEuY2hhckF0KGEubGVuZ3RoLTEpKXJldHVybiAwO2Zvcih2YXIgYj0wLGM9TWF0aC5taW4oeC5sZW5ndGgsYS5sZW5ndGgpLGQ9YyxlPTA7ZD5iOyl4LnN1YnN0cmluZyh4Lmxlbmd0aC1kLHgubGVuZ3RoLWUpPT1hLnN1YnN0cmluZyhhLmxlbmd0aC1kLGEubGVuZ3RoLWUpP2U9Yj1kOmM9ZCxkPU1hdGguZmxvb3IoKGMtYikvMitiKTtyZXR1cm4gZH0sYy5wcm90b3R5cGUuZGlmZl9jb21tb25PdmVybGFwXz1mdW5jdGlvbih4LGEpe3ZhciBiPXgubGVuZ3RoLGM9YS5sZW5ndGg7aWYoMD09Ynx8MD09YylyZXR1cm4gMDtiPmM/eD14LnN1YnN0cmluZyhiLWMpOmM+YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7dmFyIGQ9TWF0aC5taW4oYixjKTtpZih4PT1hKXJldHVybiBkO2Zvcih2YXIgZT0wLGY9MTs7KXt2YXIgZz14LnN1YnN0cmluZyhkLWYpLGg9YS5pbmRleE9mKGcpO2lmKC0xPT1oKXJldHVybiBlO2YrPWgsKDA9PWh8fHguc3Vic3RyaW5nKGQtZik9PWEuc3Vic3RyaW5nKDAsZikpJiYoZT1mLGYrKyl9fSxjLnByb3RvdHlwZS5kaWZmX2hhbGZNYXRjaF89ZnVuY3Rpb24oeCxhKXtmdW5jdGlvbiBiKHgsYSxiKXtmb3IodmFyIGMsZCxlLGYsZz14LnN1YnN0cmluZyhiLGIrTWF0aC5mbG9vcih4Lmxlbmd0aC80KSksaD0tMSxpPSIiOy0xIT0oaD1hLmluZGV4T2YoZyxoKzEpKTspe3ZhciBrPWouZGlmZl9jb21tb25QcmVmaXgoeC5zdWJzdHJpbmcoYiksYS5zdWJzdHJpbmcoaCkpLGw9ai5kaWZmX2NvbW1vblN1ZmZpeCh4LnN1YnN0cmluZygwLGIpLGEuc3Vic3RyaW5nKDAsaCkpO2kubGVuZ3RoPGwrayYmKGk9YS5zdWJzdHJpbmcoaC1sLGgpK2Euc3Vic3RyaW5nKGgsaCtrKSxjPXguc3Vic3RyaW5nKDAsYi1sKSxkPXguc3Vic3RyaW5nKGIrayksZT1hLnN1YnN0cmluZygwLGgtbCksZj1hLnN1YnN0cmluZyhoK2spKX1yZXR1cm4gMippLmxlbmd0aD49eC5sZW5ndGg/W2MsZCxlLGYsaV06bnVsbH1pZih0aGlzLkRpZmZfVGltZW91dDw9MClyZXR1cm4gbnVsbDt2YXIgYz14Lmxlbmd0aD5hLmxlbmd0aD94OmEsZD14Lmxlbmd0aD5hLmxlbmd0aD9hOng7aWYoYy5sZW5ndGg8NHx8MipkLmxlbmd0aDxjLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgZSxmLGcsaCxpLGo9dGhpcyxrPWIoYyxkLE1hdGguY2VpbChjLmxlbmd0aC80KSksbD1iKGMsZCxNYXRoLmNlaWwoYy5sZW5ndGgvMikpO3JldHVybiBrfHxsPyhlPWw/ayYma1s0XS5sZW5ndGg+bFs0XS5sZW5ndGg/azpsOmsseC5sZW5ndGg+YS5sZW5ndGg/KGY9ZVswXSxnPWVbMV0saD1lWzJdLGk9ZVszXSk6KGg9ZVswXSxpPWVbMV0sZj1lWzJdLGc9ZVszXSksW2YsZyxoLGksZVs0XV0pOm51bGx9LGMucHJvdG90eXBlLmRpZmZfY2xlYW51cFNlbWFudGljPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0hMSxiPVtdLGM9MCxnPW51bGwsaD0wLGk9MCxqPTAsaz0wLGw9MDtoPHgubGVuZ3RoOyl4W2hdWzBdPT1mPyhiW2MrK109aCxpPWssaj1sLGs9MCxsPTAsZz14W2hdWzFdKTooeFtoXVswXT09ZT9rKz14W2hdWzFdLmxlbmd0aDpsKz14W2hdWzFdLmxlbmd0aCxudWxsIT09ZyYmZy5sZW5ndGg8PU1hdGgubWF4KGksaikmJmcubGVuZ3RoPD1NYXRoLm1heChrLGwpJiYoeC5zcGxpY2UoYltjLTFdLDAsW2QsZ10pLHhbYltjLTFdKzFdWzBdPWUsYy0tLGg9LS1jPjA/YltjLTFdOi0xLGk9MCxqPTAsaz0wLGw9MCxnPW51bGwsYT0hMCkpLGgrKztmb3IoYSYmdGhpcy5kaWZmX2NsZWFudXBNZXJnZSh4KSx0aGlzLmRpZmZfY2xlYW51cFNlbWFudGljTG9zc2xlc3MoeCksaD0xO2g8eC5sZW5ndGg7KXtpZih4W2gtMV1bMF09PWQmJnhbaF1bMF09PWUpe3ZhciBtPXhbaC0xXVsxXSxuPXhbaF1bMV0sbz10aGlzLmRpZmZfY29tbW9uT3ZlcmxhcF8obSxuKTsobz49bS5sZW5ndGgvMnx8bz49bi5sZW5ndGgvMikmJih4LnNwbGljZShoLDAsW2Ysbi5zdWJzdHJpbmcoMCxvKV0pLHhbaC0xXVsxXT1tLnN1YnN0cmluZygwLG0ubGVuZ3RoLW8pLHhbaCsxXVsxXT1uLnN1YnN0cmluZyhvKSxoKyspLGgrK31oKyt9fSxjLnByb3RvdHlwZS5kaWZmX2NsZWFudXBTZW1hbnRpY0xvc3NsZXNzPWZ1bmN0aW9uKHgpe2Z1bmN0aW9uIGEoeCxhKXtpZigheHx8IWEpcmV0dXJuIDU7dmFyIGY9MDtyZXR1cm4oeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goYil8fGEuY2hhckF0KDApLm1hdGNoKGIpKSYmKGYrKywoeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goYyl8fGEuY2hhckF0KDApLm1hdGNoKGMpKSYmKGYrKywoeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goZCl8fGEuY2hhckF0KDApLm1hdGNoKGQpKSYmKGYrKywoeC5tYXRjaChlKXx8YS5tYXRjaChnKSkmJmYrKykpKSxmfWZvcih2YXIgYj0vW15hLXpBLVowLTldLyxjPS9ccy8sZD0vW1xyXG5dLyxlPS9cblxyP1xuJC8sZz0vXlxyP1xuXHI/XG4vLGg9MTtoPHgubGVuZ3RoLTE7KXtpZih4W2gtMV1bMF09PWYmJnhbaCsxXVswXT09Zil7dmFyIGk9eFtoLTFdWzFdLGo9eFtoXVsxXSxrPXhbaCsxXVsxXSxsPXRoaXMuZGlmZl9jb21tb25TdWZmaXgoaSxqKTtpZihsKXt2YXIgbT1qLnN1YnN0cmluZyhqLmxlbmd0aC1sKTtpPWkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtbCksaj1tK2ouc3Vic3RyaW5nKDAsai5sZW5ndGgtbCksaz1tK2t9Zm9yKHZhciBuPWksbz1qLHA9ayxxPWEoaSxqKSthKGosayk7ai5jaGFyQXQoMCk9PT1rLmNoYXJBdCgwKTspe2krPWouY2hhckF0KDApLGo9ai5zdWJzdHJpbmcoMSkray5jaGFyQXQoMCksaz1rLnN1YnN0cmluZygxKTt2YXIgcj1hKGksaikrYShqLGspO3I+PXEmJihxPXIsbj1pLG89aixwPWspfXhbaC0xXVsxXSE9biYmKG4/eFtoLTFdWzFdPW46KHguc3BsaWNlKGgtMSwxKSxoLS0pLHhbaF1bMV09byxwP3hbaCsxXVsxXT1wOih4LnNwbGljZShoKzEsMSksaC0tKSl9aCsrfX0sYy5wcm90b3R5cGUuZGlmZl9jbGVhbnVwRWZmaWNpZW5jeT1mdW5jdGlvbih4KXtmb3IodmFyIGE9ITEsYj1bXSxjPTAsZz0iIixoPTAsaT0hMSxqPSExLGs9ITEsbD0hMTtoPHgubGVuZ3RoOyl4W2hdWzBdPT1mPyh4W2hdWzFdLmxlbmd0aDx0aGlzLkRpZmZfRWRpdENvc3QmJihrfHxsKT8oYltjKytdPWgsaT1rLGo9bCxnPXhbaF1bMV0pOihjPTAsZz0iIiksaz1sPSExKTooeFtoXVswXT09ZD9sPSEwOms9ITAsZyYmKGkmJmomJmsmJmx8fGcubGVuZ3RoPHRoaXMuRGlmZl9FZGl0Q29zdC8yJiZpK2oraytsPT0zKSYmKHguc3BsaWNlKGJbYy0xXSwwLFtkLGddKSx4W2JbYy0xXSsxXVswXT1lLGMtLSxnPSIiLGkmJmo/KGs9bD0hMCxjPTApOihoPS0tYz4wP2JbYy0xXTotMSxrPWw9ITEpLGE9ITApKSxoKys7YSYmdGhpcy5kaWZmX2NsZWFudXBNZXJnZSh4KX0sYy5wcm90b3R5cGUuZGlmZl9jbGVhbnVwTWVyZ2U9ZnVuY3Rpb24oeCl7eC5wdXNoKFtmLCIiXSk7Zm9yKHZhciBhLGI9MCxjPTAsZz0wLGg9IiIsaT0iIjtiPHgubGVuZ3RoOylzd2l0Y2goeFtiXVswXSl7Y2FzZSBlOmcrKyxpKz14W2JdWzFdLGIrKzticmVhaztjYXNlIGQ6YysrLGgrPXhbYl1bMV0sYisrO2JyZWFrO2Nhc2UgZjpjK2c+MT8oMCE9PWMmJjAhPT1nJiYoMCE9PShhPXRoaXMuZGlmZl9jb21tb25QcmVmaXgoaSxoKSkmJihiLWMtZz4wJiZ4W2ItYy1nLTFdWzBdPT1mP3hbYi1jLWctMV1bMV0rPWkuc3Vic3RyaW5nKDAsYSk6KHguc3BsaWNlKDAsMCxbZixpLnN1YnN0cmluZygwLGEpXSksYisrKSxpPWkuc3Vic3RyaW5nKGEpLGg9aC5zdWJzdHJpbmcoYSkpLDAhPT0oYT10aGlzLmRpZmZfY29tbW9uU3VmZml4KGksaCkpJiYoeFtiXVsxXT1pLnN1YnN0cmluZyhpLmxlbmd0aC1hKSt4W2JdWzFdLGk9aS5zdWJzdHJpbmcoMCxpLmxlbmd0aC1hKSxoPWguc3Vic3RyaW5nKDAsaC5sZW5ndGgtYSkpKSwwPT09Yz94LnNwbGljZShiLWMtZyxjK2csW2UsaV0pOjA9PT1nP3guc3BsaWNlKGItYy1nLGMrZyxbZCxoXSk6eC5zcGxpY2UoYi1jLWcsYytnLFtkLGhdLFtlLGldKSxiPWItYy1nKyhjPzE6MCkrKGc/MTowKSsxKTowIT09YiYmeFtiLTFdWzBdPT1mPyh4W2ItMV1bMV0rPXhbYl1bMV0seC5zcGxpY2UoYiwxKSk6YisrLGc9MCxjPTAsaD0iIixpPSIifSIiPT09eFt4Lmxlbmd0aC0xXVsxXSYmeC5wb3AoKTt2YXIgaj0hMTtmb3IoYj0xO2I8eC5sZW5ndGgtMTspeFtiLTFdWzBdPT1mJiZ4W2IrMV1bMF09PWYmJih4W2JdWzFdLnN1YnN0cmluZyh4W2JdWzFdLmxlbmd0aC14W2ItMV1bMV0ubGVuZ3RoKT09eFtiLTFdWzFdPyh4W2JdWzFdPXhbYi0xXVsxXSt4W2JdWzFdLnN1YnN0cmluZygwLHhbYl1bMV0ubGVuZ3RoLXhbYi0xXVsxXS5sZW5ndGgpLHhbYisxXVsxXT14W2ItMV1bMV0reFtiKzFdWzFdLHguc3BsaWNlKGItMSwxKSxqPSEwKTp4W2JdWzFdLnN1YnN0cmluZygwLHhbYisxXVsxXS5sZW5ndGgpPT14W2IrMV1bMV0mJih4W2ItMV1bMV0rPXhbYisxXVsxXSx4W2JdWzFdPXhbYl1bMV0uc3Vic3RyaW5nKHhbYisxXVsxXS5sZW5ndGgpK3hbYisxXVsxXSx4LnNwbGljZShiKzEsMSksaj0hMCkpLGIrKztqJiZ0aGlzLmRpZmZfY2xlYW51cE1lcmdlKHgpfSxjLnByb3RvdHlwZS5kaWZmX3hJbmRleD1mdW5jdGlvbih4LGEpe3ZhciBiLGM9MCxmPTAsZz0wLGg9MDtmb3IoYj0wO2I8eC5sZW5ndGgmJih4W2JdWzBdIT09ZSYmKGMrPXhbYl1bMV0ubGVuZ3RoKSx4W2JdWzBdIT09ZCYmKGYrPXhbYl1bMV0ubGVuZ3RoKSwhKGM+YSkpO2IrKylnPWMsaD1mO3JldHVybiB4Lmxlbmd0aCE9YiYmeFtiXVswXT09PWQ/aDpoKyhhLWcpfSxjLnByb3RvdHlwZS5kaWZmX3ByZXR0eUh0bWw9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MCxjPS8mL2csZz0vPC9nLGg9Lz4vZyxpPS9cbi9nLGo9MDtqPHgubGVuZ3RoO2orKyl7dmFyIGs9eFtqXVswXSxsPXhbal1bMV0sbT1sLnJlcGxhY2UoYywiJmFtcDsiKS5yZXBsYWNlKGcsIiZsdDsiKS5yZXBsYWNlKGgsIiZndDsiKS5yZXBsYWNlKGksIiZwYXJhOzxicj4iKTtzd2l0Y2goayl7Y2FzZSBlOmFbal09JzxpbnMgc3R5bGU9ImJhY2tncm91bmQ6I2U2ZmZlNjsiPicrbSsiPC9pbnM+IjticmVhaztjYXNlIGQ6YVtqXT0nPGRlbCBzdHlsZT0iYmFja2dyb3VuZDojZmZlNmU2OyI+JyttKyI8L2RlbD4iO2JyZWFrO2Nhc2UgZjphW2pdPSI8c3Bhbj4iK20rIjwvc3Bhbj4ifWshPT1kJiYoYis9bC5sZW5ndGgpfXJldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX3RleHQxPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT1bXSxiPTA7Yjx4Lmxlbmd0aDtiKyspeFtiXVswXSE9PWUmJihhW2JdPXhbYl1bMV0pO3JldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX3RleHQyPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT1bXSxiPTA7Yjx4Lmxlbmd0aDtiKyspeFtiXVswXSE9PWQmJihhW2JdPXhbYl1bMV0pO3JldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX2xldmVuc2h0ZWluPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0wLGI9MCxjPTAsZz0wO2c8eC5sZW5ndGg7ZysrKXt2YXIgaD14W2ddWzBdLGk9eFtnXVsxXTtzd2l0Y2goaCl7Y2FzZSBlOmIrPWkubGVuZ3RoO2JyZWFrO2Nhc2UgZDpjKz1pLmxlbmd0aDticmVhaztjYXNlIGY6YSs9TWF0aC5tYXgoYixjKSxiPTAsYz0wfX1yZXR1cm4gYStNYXRoLm1heChiLGMpfSxjLnByb3RvdHlwZS5kaWZmX3RvRGVsdGE9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MDtiPHgubGVuZ3RoO2IrKylzd2l0Y2goeFtiXVswXSl7Y2FzZSBlOmFbYl09IisiK2VuY29kZVVSSSh4W2JdWzFdKTticmVhaztjYXNlIGQ6YVtiXT0iLSIreFtiXVsxXS5sZW5ndGg7YnJlYWs7Y2FzZSBmOmFbYl09Ij0iK3hbYl1bMV0ubGVuZ3RofXJldHVybiBhLmpvaW4oIlx0IikucmVwbGFjZSgvJTIwL2csIiAiKX0sYy5wcm90b3R5cGUuZGlmZl9mcm9tRGVsdGE9ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9W10sYz0wLGc9MCxoPWEuc3BsaXQoL1x0L2cpLGk9MDtpPGgubGVuZ3RoO2krKyl7dmFyIGo9aFtpXS5zdWJzdHJpbmcoMSk7c3dpdGNoKGhbaV0uY2hhckF0KDApKXtjYXNlIisiOnRyeXtiW2MrK109W2UsZGVjb2RlVVJJKGopXX1jYXRjaCh4KXt0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgZXNjYXBlIGluIGRpZmZfZnJvbURlbHRhOiAiK2opfWJyZWFrO2Nhc2UiLSI6Y2FzZSI9Ijp2YXIgaz1wYXJzZUludChqLDEwKTtpZihpc05hTihrKXx8MD5rKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBudW1iZXIgaW4gZGlmZl9mcm9tRGVsdGE6ICIraik7dmFyIGw9eC5zdWJzdHJpbmcoZyxnKz1rKTsiPSI9PWhbaV0uY2hhckF0KDApP2JbYysrXT1bZixsXTpiW2MrK109W2QsbF07YnJlYWs7ZGVmYXVsdDppZihoW2ldKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkaWZmIG9wZXJhdGlvbiBpbiBkaWZmX2Zyb21EZWx0YTogIitoW2ldKX19aWYoZyE9eC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJEZWx0YSBsZW5ndGggKCIrZysiKSBkb2VzIG5vdCBlcXVhbCBzb3VyY2UgdGV4dCBsZW5ndGggKCIreC5sZW5ndGgrIikuIik7cmV0dXJuIGJ9LGMucHJvdG90eXBlLm1hdGNoX21haW49ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGw9PXh8fG51bGw9PWF8fG51bGw9PWIpdGhyb3cgbmV3IEVycm9yKCJOdWxsIGlucHV0LiAobWF0Y2hfbWFpbikiKTtyZXR1cm4gYj1NYXRoLm1heCgwLE1hdGgubWluKGIseC5sZW5ndGgpKSx4PT1hPzA6eC5sZW5ndGg/eC5zdWJzdHJpbmcoYixiK2EubGVuZ3RoKT09YT9iOnRoaXMubWF0Y2hfYml0YXBfKHgsYSxiKTotMX0sYy5wcm90b3R5cGUubWF0Y2hfYml0YXBfPWZ1bmN0aW9uKHgsYSxiKXtmdW5jdGlvbiBjKHgsYyl7dmFyIGQ9eC9hLmxlbmd0aCxmPU1hdGguYWJzKGItYyk7cmV0dXJuIGUuTWF0Y2hfRGlzdGFuY2U/ZCtmL2UuTWF0Y2hfRGlzdGFuY2U6Zj8xOmR9aWYoYS5sZW5ndGg+dGhpcy5NYXRjaF9NYXhCaXRzKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiB0b28gbG9uZyBmb3IgdGhpcyBicm93c2VyLiIpO3ZhciBkPXRoaXMubWF0Y2hfYWxwaGFiZXRfKGEpLGU9dGhpcyxmPXRoaXMuTWF0Y2hfVGhyZXNob2xkLGc9eC5pbmRleE9mKGEsYik7LTEhPWcmJihmPU1hdGgubWluKGMoMCxnKSxmKSwtMSE9KGc9eC5sYXN0SW5kZXhPZihhLGIrYS5sZW5ndGgpKSYmKGY9TWF0aC5taW4oYygwLGcpLGYpKSk7dmFyIGg9MTw8YS5sZW5ndGgtMTtnPS0xO2Zvcih2YXIgaSxqLGssbD1hLmxlbmd0aCt4Lmxlbmd0aCxtPTA7bTxhLmxlbmd0aDttKyspe2ZvcihpPTAsaj1sO2o+aTspYyhtLGIraik8PWY/aT1qOmw9aixqPU1hdGguZmxvb3IoKGwtaSkvMitpKTtsPWo7dmFyIG49TWF0aC5tYXgoMSxiLWorMSksbz1NYXRoLm1pbihiK2oseC5sZW5ndGgpK2EubGVuZ3RoLHA9QXJyYXkobysyKTtwW28rMV09KDE8PG0pLTE7Zm9yKHZhciBxPW87cT49bjtxLS0pe3ZhciByPWRbeC5jaGFyQXQocS0xKV07aWYocFtxXT0wPT09bT8ocFtxKzFdPDwxfDEpJnI6KHBbcSsxXTw8MXwxKSZyfChrW3ErMV18a1txXSk8PDF8MXxrW3ErMV0scFtxXSZoKXt2YXIgcz1jKG0scS0xKTtpZihmPj1zKXtpZihmPXMsISgoZz1xLTEpPmIpKWJyZWFrO249TWF0aC5tYXgoMSwyKmItZyl9fX1pZihjKG0rMSxiKT5mKWJyZWFrO2s9cH1yZXR1cm4gZ30sYy5wcm90b3R5cGUubWF0Y2hfYWxwaGFiZXRfPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT17fSxiPTA7Yjx4Lmxlbmd0aDtiKyspYVt4LmNoYXJBdChiKV09MDtmb3IoYj0wO2I8eC5sZW5ndGg7YisrKWFbeC5jaGFyQXQoYildfD0xPDx4Lmxlbmd0aC1iLTE7cmV0dXJuIGF9LGMucHJvdG90eXBlLnBhdGNoX2FkZENvbnRleHRfPWZ1bmN0aW9uKHgsYSl7aWYoMCE9YS5sZW5ndGgpe2Zvcih2YXIgYj1hLnN1YnN0cmluZyh4LnN0YXJ0Mix4LnN0YXJ0Mit4Lmxlbmd0aDEpLGM9MDthLmluZGV4T2YoYikhPWEubGFzdEluZGV4T2YoYikmJmIubGVuZ3RoPHRoaXMuTWF0Y2hfTWF4Qml0cy10aGlzLlBhdGNoX01hcmdpbi10aGlzLlBhdGNoX01hcmdpbjspYys9dGhpcy5QYXRjaF9NYXJnaW4sYj1hLnN1YnN0cmluZyh4LnN0YXJ0Mi1jLHguc3RhcnQyK3gubGVuZ3RoMStjKTtjKz10aGlzLlBhdGNoX01hcmdpbjt2YXIgZD1hLnN1YnN0cmluZyh4LnN0YXJ0Mi1jLHguc3RhcnQyKTtkJiZ4LmRpZmZzLnVuc2hpZnQoW2YsZF0pO3ZhciBlPWEuc3Vic3RyaW5nKHguc3RhcnQyK3gubGVuZ3RoMSx4LnN0YXJ0Mit4Lmxlbmd0aDErYyk7ZSYmeC5kaWZmcy5wdXNoKFtmLGVdKSx4LnN0YXJ0MS09ZC5sZW5ndGgseC5zdGFydDItPWQubGVuZ3RoLHgubGVuZ3RoMSs9ZC5sZW5ndGgrZS5sZW5ndGgseC5sZW5ndGgyKz1kLmxlbmd0aCtlLmxlbmd0aH19LGMucHJvdG90eXBlLnBhdGNoX21ha2U9ZnVuY3Rpb24oeCxhLGIpe3ZhciBnLGg7aWYoInN0cmluZyI9PXR5cGVvZiB4JiYic3RyaW5nIj09dHlwZW9mIGEmJnZvaWQgMD09PWIpZz14LChoPXRoaXMuZGlmZl9tYWluKGcsYSwhMCkpLmxlbmd0aD4yJiYodGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpYyhoKSx0aGlzLmRpZmZfY2xlYW51cEVmZmljaWVuY3koaCkpO2Vsc2UgaWYoeCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ2b2lkIDA9PT1hJiZ2b2lkIDA9PT1iKWg9eCxnPXRoaXMuZGlmZl90ZXh0MShoKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgeCYmYSYmIm9iamVjdCI9PXR5cGVvZiBhJiZ2b2lkIDA9PT1iKWc9eCxoPWE7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIHh8fCJzdHJpbmciIT10eXBlb2YgYXx8IWJ8fCJvYmplY3QiIT10eXBlb2YgYil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2FsbCBmb3JtYXQgdG8gcGF0Y2hfbWFrZS4iKTtnPXgsaD1ifWlmKDA9PT1oLmxlbmd0aClyZXR1cm5bXTtmb3IodmFyIGk9W10saj1uZXcgYy5wYXRjaF9vYmosaz0wLGw9MCxtPTAsbj1nLG89ZyxwPTA7cDxoLmxlbmd0aDtwKyspe3ZhciBxPWhbcF1bMF0scj1oW3BdWzFdO3N3aXRjaChrfHxxPT09Znx8KGouc3RhcnQxPWwsai5zdGFydDI9bSkscSl7Y2FzZSBlOmouZGlmZnNbaysrXT1oW3BdLGoubGVuZ3RoMis9ci5sZW5ndGgsbz1vLnN1YnN0cmluZygwLG0pK3Irby5zdWJzdHJpbmcobSk7YnJlYWs7Y2FzZSBkOmoubGVuZ3RoMSs9ci5sZW5ndGgsai5kaWZmc1trKytdPWhbcF0sbz1vLnN1YnN0cmluZygwLG0pK28uc3Vic3RyaW5nKG0rci5sZW5ndGgpO2JyZWFrO2Nhc2UgZjpyLmxlbmd0aDw9Mip0aGlzLlBhdGNoX01hcmdpbiYmayYmaC5sZW5ndGghPXArMT8oai5kaWZmc1trKytdPWhbcF0sai5sZW5ndGgxKz1yLmxlbmd0aCxqLmxlbmd0aDIrPXIubGVuZ3RoKTpyLmxlbmd0aD49Mip0aGlzLlBhdGNoX01hcmdpbiYmayYmKHRoaXMucGF0Y2hfYWRkQ29udGV4dF8oaixuKSxpLnB1c2goaiksaj1uZXcgYy5wYXRjaF9vYmosaz0wLG49byxsPW0pfXEhPT1lJiYobCs9ci5sZW5ndGgpLHEhPT1kJiYobSs9ci5sZW5ndGgpfXJldHVybiBrJiYodGhpcy5wYXRjaF9hZGRDb250ZXh0XyhqLG4pLGkucHVzaChqKSksaX0sYy5wcm90b3R5cGUucGF0Y2hfZGVlcENvcHk9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MDtiPHgubGVuZ3RoO2IrKyl7dmFyIGQ9eFtiXSxlPW5ldyBjLnBhdGNoX29iajtlLmRpZmZzPVtdO2Zvcih2YXIgZj0wO2Y8ZC5kaWZmcy5sZW5ndGg7ZisrKWUuZGlmZnNbZl09ZC5kaWZmc1tmXS5zbGljZSgpO2Uuc3RhcnQxPWQuc3RhcnQxLGUuc3RhcnQyPWQuc3RhcnQyLGUubGVuZ3RoMT1kLmxlbmd0aDEsZS5sZW5ndGgyPWQubGVuZ3RoMixhW2JdPWV9cmV0dXJuIGF9LGMucHJvdG90eXBlLnBhdGNoX2FwcGx5PWZ1bmN0aW9uKHgsYSl7aWYoMD09eC5sZW5ndGgpcmV0dXJuW2EsW11dO3g9dGhpcy5wYXRjaF9kZWVwQ29weSh4KTt2YXIgYj10aGlzLnBhdGNoX2FkZFBhZGRpbmcoeCk7YT1iK2ErYix0aGlzLnBhdGNoX3NwbGl0TWF4KHgpO2Zvcih2YXIgYz0wLGc9W10saD0wO2g8eC5sZW5ndGg7aCsrKXt2YXIgaSxqLGs9eFtoXS5zdGFydDIrYyxsPXRoaXMuZGlmZl90ZXh0MSh4W2hdLmRpZmZzKSxtPS0xO2lmKGwubGVuZ3RoPnRoaXMuTWF0Y2hfTWF4Qml0cz8tMSE9KGk9dGhpcy5tYXRjaF9tYWluKGEsbC5zdWJzdHJpbmcoMCx0aGlzLk1hdGNoX01heEJpdHMpLGspKSYmKCgtMT09KG09dGhpcy5tYXRjaF9tYWluKGEsbC5zdWJzdHJpbmcobC5sZW5ndGgtdGhpcy5NYXRjaF9NYXhCaXRzKSxrK2wubGVuZ3RoLXRoaXMuTWF0Y2hfTWF4Qml0cykpfHxpPj1tKSYmKGk9LTEpKTppPXRoaXMubWF0Y2hfbWFpbihhLGwsayksLTE9PWkpZ1toXT0hMSxjLT14W2hdLmxlbmd0aDIteFtoXS5sZW5ndGgxO2Vsc2UgaWYoZ1toXT0hMCxjPWktayxsPT0oaj0tMT09bT9hLnN1YnN0cmluZyhpLGkrbC5sZW5ndGgpOmEuc3Vic3RyaW5nKGksbSt0aGlzLk1hdGNoX01heEJpdHMpKSlhPWEuc3Vic3RyaW5nKDAsaSkrdGhpcy5kaWZmX3RleHQyKHhbaF0uZGlmZnMpK2Euc3Vic3RyaW5nKGkrbC5sZW5ndGgpO2Vsc2V7dmFyIG49dGhpcy5kaWZmX21haW4obCxqLCExKTtpZihsLmxlbmd0aD50aGlzLk1hdGNoX01heEJpdHMmJnRoaXMuZGlmZl9sZXZlbnNodGVpbihuKS9sLmxlbmd0aD50aGlzLlBhdGNoX0RlbGV0ZVRocmVzaG9sZClnW2hdPSExO2Vsc2V7dGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpY0xvc3NsZXNzKG4pO2Zvcih2YXIgbyxwPTAscT0wO3E8eFtoXS5kaWZmcy5sZW5ndGg7cSsrKXt2YXIgcj14W2hdLmRpZmZzW3FdO3JbMF0hPT1mJiYobz10aGlzLmRpZmZfeEluZGV4KG4scCkpLHJbMF09PT1lP2E9YS5zdWJzdHJpbmcoMCxpK28pK3JbMV0rYS5zdWJzdHJpbmcoaStvKTpyWzBdPT09ZCYmKGE9YS5zdWJzdHJpbmcoMCxpK28pK2Euc3Vic3RyaW5nKGkrdGhpcy5kaWZmX3hJbmRleChuLHArclsxXS5sZW5ndGgpKSksclswXSE9PWQmJihwKz1yWzFdLmxlbmd0aCl9fX19cmV0dXJuW2E9YS5zdWJzdHJpbmcoYi5sZW5ndGgsYS5sZW5ndGgtYi5sZW5ndGgpLGddfSxjLnByb3RvdHlwZS5wYXRjaF9hZGRQYWRkaW5nPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT10aGlzLlBhdGNoX01hcmdpbixiPSIiLGM9MTthPj1jO2MrKyliKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO2ZvcihjPTA7Yzx4Lmxlbmd0aDtjKyspeFtjXS5zdGFydDErPWEseFtjXS5zdGFydDIrPWE7dmFyIGQ9eFswXSxlPWQuZGlmZnM7aWYoMD09ZS5sZW5ndGh8fGVbMF1bMF0hPWYpZS51bnNoaWZ0KFtmLGJdKSxkLnN0YXJ0MS09YSxkLnN0YXJ0Mi09YSxkLmxlbmd0aDErPWEsZC5sZW5ndGgyKz1hO2Vsc2UgaWYoYT5lWzBdWzFdLmxlbmd0aCl7dmFyIGc9YS1lWzBdWzFdLmxlbmd0aDtlWzBdWzFdPWIuc3Vic3RyaW5nKGVbMF1bMV0ubGVuZ3RoKStlWzBdWzFdLGQuc3RhcnQxLT1nLGQuc3RhcnQyLT1nLGQubGVuZ3RoMSs9ZyxkLmxlbmd0aDIrPWd9aWYoMD09KGU9KGQ9eFt4Lmxlbmd0aC0xXSkuZGlmZnMpLmxlbmd0aHx8ZVtlLmxlbmd0aC0xXVswXSE9ZillLnB1c2goW2YsYl0pLGQubGVuZ3RoMSs9YSxkLmxlbmd0aDIrPWE7ZWxzZSBpZihhPmVbZS5sZW5ndGgtMV1bMV0ubGVuZ3RoKXtnPWEtZVtlLmxlbmd0aC0xXVsxXS5sZW5ndGg7ZVtlLmxlbmd0aC0xXVsxXSs9Yi5zdWJzdHJpbmcoMCxnKSxkLmxlbmd0aDErPWcsZC5sZW5ndGgyKz1nfXJldHVybiBifSxjLnByb3RvdHlwZS5wYXRjaF9zcGxpdE1heD1mdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcy5NYXRjaF9NYXhCaXRzLGI9MDtiPHgubGVuZ3RoO2IrKylpZih4W2JdLmxlbmd0aDE+YSl7dmFyIGc9eFtiXTt4LnNwbGljZShiLS0sMSk7Zm9yKHZhciBoPWcuc3RhcnQxLGk9Zy5zdGFydDIsaj0iIjswIT09Zy5kaWZmcy5sZW5ndGg7KXt2YXIgaz1uZXcgYy5wYXRjaF9vYmosbD0hMDtmb3Ioay5zdGFydDE9aC1qLmxlbmd0aCxrLnN0YXJ0Mj1pLWoubGVuZ3RoLCIiIT09aiYmKGsubGVuZ3RoMT1rLmxlbmd0aDI9ai5sZW5ndGgsay5kaWZmcy5wdXNoKFtmLGpdKSk7MCE9PWcuZGlmZnMubGVuZ3RoJiZrLmxlbmd0aDE8YS10aGlzLlBhdGNoX01hcmdpbjspe3ZhciBtPWcuZGlmZnNbMF1bMF0sbj1nLmRpZmZzWzBdWzFdO209PT1lPyhrLmxlbmd0aDIrPW4ubGVuZ3RoLGkrPW4ubGVuZ3RoLGsuZGlmZnMucHVzaChnLmRpZmZzLnNoaWZ0KCkpLGw9ITEpOm09PT1kJiYxPT1rLmRpZmZzLmxlbmd0aCYmay5kaWZmc1swXVswXT09ZiYmbi5sZW5ndGg+MiphPyhrLmxlbmd0aDErPW4ubGVuZ3RoLGgrPW4ubGVuZ3RoLGw9ITEsay5kaWZmcy5wdXNoKFttLG5dKSxnLmRpZmZzLnNoaWZ0KCkpOihuPW4uc3Vic3RyaW5nKDAsYS1rLmxlbmd0aDEtdGhpcy5QYXRjaF9NYXJnaW4pLGsubGVuZ3RoMSs9bi5sZW5ndGgsaCs9bi5sZW5ndGgsbT09PWY/KGsubGVuZ3RoMis9bi5sZW5ndGgsaSs9bi5sZW5ndGgpOmw9ITEsay5kaWZmcy5wdXNoKFttLG5dKSxuPT1nLmRpZmZzWzBdWzFdP2cuZGlmZnMuc2hpZnQoKTpnLmRpZmZzWzBdWzFdPWcuZGlmZnNbMF1bMV0uc3Vic3RyaW5nKG4ubGVuZ3RoKSl9aj0oaj10aGlzLmRpZmZfdGV4dDIoay5kaWZmcykpLnN1YnN0cmluZyhqLmxlbmd0aC10aGlzLlBhdGNoX01hcmdpbik7dmFyIG89dGhpcy5kaWZmX3RleHQxKGcuZGlmZnMpLnN1YnN0cmluZygwLHRoaXMuUGF0Y2hfTWFyZ2luKTsiIiE9PW8mJihrLmxlbmd0aDErPW8ubGVuZ3RoLGsubGVuZ3RoMis9by5sZW5ndGgsMCE9PWsuZGlmZnMubGVuZ3RoJiZrLmRpZmZzW2suZGlmZnMubGVuZ3RoLTFdWzBdPT09Zj9rLmRpZmZzW2suZGlmZnMubGVuZ3RoLTFdWzFdKz1vOmsuZGlmZnMucHVzaChbZixvXSkpLGx8fHguc3BsaWNlKCsrYiwwLGspfX19LGMucHJvdG90eXBlLnBhdGNoX3RvVGV4dD1mdW5jdGlvbih4KXtmb3IodmFyIGE9W10sYj0wO2I8eC5sZW5ndGg7YisrKWFbYl09eFtiXTtyZXR1cm4gYS5qb2luKCIiKX0sYy5wcm90b3R5cGUucGF0Y2hfZnJvbVRleHQ9ZnVuY3Rpb24oeCl7dmFyIGE9W107aWYoIXgpcmV0dXJuIGE7Zm9yKHZhciBiPXguc3BsaXQoIlxuIiksZz0wLGg9L15AQCAtKFxkKyksPyhcZCopIFwrKFxkKyksPyhcZCopIEBAJC87ZzxiLmxlbmd0aDspe3ZhciBpPWJbZ10ubWF0Y2goaCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhdGNoIHN0cmluZzogIitiW2ddKTt2YXIgaj1uZXcgYy5wYXRjaF9vYmo7Zm9yKGEucHVzaChqKSxqLnN0YXJ0MT1wYXJzZUludChpWzFdLDEwKSwiIj09PWlbMl0/KGouc3RhcnQxLS0sai5sZW5ndGgxPTEpOiIwIj09aVsyXT9qLmxlbmd0aDE9MDooai5zdGFydDEtLSxqLmxlbmd0aDE9cGFyc2VJbnQoaVsyXSwxMCkpLGouc3RhcnQyPXBhcnNlSW50KGlbM10sMTApLCIiPT09aVs0XT8oai5zdGFydDItLSxqLmxlbmd0aDI9MSk6IjAiPT1pWzRdP2oubGVuZ3RoMj0wOihqLnN0YXJ0Mi0tLGoubGVuZ3RoMj1wYXJzZUludChpWzRdLDEwKSksZysrO2c8Yi5sZW5ndGg7KXt2YXIgaz1iW2ddLmNoYXJBdCgwKTt0cnl7dmFyIGw9ZGVjb2RlVVJJKGJbZ10uc3Vic3RyaW5nKDEpKX1jYXRjaCh4KXt0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgZXNjYXBlIGluIHBhdGNoX2Zyb21UZXh0OiAiK2wpfWlmKCItIj09aylqLmRpZmZzLnB1c2goW2QsbF0pO2Vsc2UgaWYoIisiPT1rKWouZGlmZnMucHVzaChbZSxsXSk7ZWxzZSBpZigiICI9PWspai5kaWZmcy5wdXNoKFtmLGxdKTtlbHNle2lmKCJAIj09aylicmVhaztpZigiIiE9PWspdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhdGNoIG1vZGUgIicraysnIiBpbjogJytsKX1nKyt9fXJldHVybiBhfSxjLnBhdGNoX29iaj1mdW5jdGlvbigpe3RoaXMuZGlmZnM9W10sdGhpcy5zdGFydDE9bnVsbCx0aGlzLnN0YXJ0Mj1udWxsLHRoaXMubGVuZ3RoMT0wLHRoaXMubGVuZ3RoMj0wfSxjLnBhdGNoX29iai5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHgsYT1bIkBAIC0iKygwPT09dGhpcy5sZW5ndGgxP3RoaXMuc3RhcnQxKyIsMCI6MT09dGhpcy5sZW5ndGgxP3RoaXMuc3RhcnQxKzE6dGhpcy5zdGFydDErMSsiLCIrdGhpcy5sZW5ndGgxKSsiICsiKygwPT09dGhpcy5sZW5ndGgyP3RoaXMuc3RhcnQyKyIsMCI6MT09dGhpcy5sZW5ndGgyP3RoaXMuc3RhcnQyKzE6dGhpcy5zdGFydDIrMSsiLCIrdGhpcy5sZW5ndGgyKSsiIEBAXG4iXSxiPTA7Yjx0aGlzLmRpZmZzLmxlbmd0aDtiKyspe3N3aXRjaCh0aGlzLmRpZmZzW2JdWzBdKXtjYXNlIGU6eD0iKyI7YnJlYWs7Y2FzZSBkOng9Ii0iO2JyZWFrO2Nhc2UgZjp4PSIgIn1hW2IrMV09eCtlbmNvZGVVUkkodGhpcy5kaWZmc1tiXVsxXSkrIlxuIn1yZXR1cm4gYS5qb2luKCIiKS5yZXBsYWNlKC8lMjAvZywiICIpfSx0aGlzLmRpZmZfbWF0Y2hfcGF0Y2g9Yyx0aGlzLkRJRkZfREVMRVRFPWQsdGhpcy5ESUZGX0lOU0VSVD1lLHRoaXMuRElGRl9FUVVBTD1mfSx7fV0sMzpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXgoIi4uL3BpcGUiKS5QaXBlLGQ9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlLnNldFJlc3VsdD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZXN1bHQ9eCx0aGlzLmhhc1Jlc3VsdD0hMCx0aGlzfSxkLnByb3RvdHlwZS5leGl0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhpdGluZz0hMCx0aGlzfSxkLnByb3RvdHlwZS5zd2l0Y2hUbz1mdW5jdGlvbih4LGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeHx8eCBpbnN0YW5jZW9mIGM/dGhpcy5uZXh0UGlwZT14Oih0aGlzLm5leHQ9eCxhJiYodGhpcy5uZXh0UGlwZT1hKSksdGhpc30sZC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih4LGEpe3JldHVybiB4LnBhcmVudD10aGlzLHZvaWQgMCE9PWEmJih4LmNoaWxkTmFtZT1hKSx4LnJvb3Q9dGhpcy5yb290fHx0aGlzLHgub3B0aW9ucz14Lm9wdGlvbnN8fHRoaXMub3B0aW9ucyx0aGlzLmNoaWxkcmVuPyh0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdLm5leHQ9eCx0aGlzLmNoaWxkcmVuLnB1c2goeCkpOih0aGlzLmNoaWxkcmVuPVt4XSx0aGlzLm5leHRBZnRlckNoaWxkcmVuPXRoaXMubmV4dHx8bnVsbCx0aGlzLm5leHQ9eCkseC5uZXh0PXRoaXMsdGhpc30sYi5Db250ZXh0PWR9LHsiLi4vcGlwZSI6MTd9XSw0OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9jb250ZXh0IikuQ29udGV4dCxkPWZ1bmN0aW9uKHgsYSl7dGhpcy5sZWZ0PXgsdGhpcy5yaWdodD1hLHRoaXMucGlwZT0iZGlmZiJ9O2QucHJvdG90eXBlPW5ldyBjLGIuRGlmZkNvbnRleHQ9ZH0seyIuL2NvbnRleHQiOjN9XSw1OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9jb250ZXh0IikuQ29udGV4dCxkPWZ1bmN0aW9uKHgsYSl7dGhpcy5sZWZ0PXgsdGhpcy5kZWx0YT1hLHRoaXMucGlwZT0icGF0Y2gifTtkLnByb3RvdHlwZT1uZXcgYyxiLlBhdGNoQ29udGV4dD1kfSx7Ii4vY29udGV4dCI6M31dLDY6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz14KCIuL2NvbnRleHQiKS5Db250ZXh0LGQ9ZnVuY3Rpb24oeCl7dGhpcy5kZWx0YT14LHRoaXMucGlwZT0icmV2ZXJzZSJ9O2QucHJvdG90eXBlPW5ldyBjLGIuUmV2ZXJzZUNvbnRleHQ9ZH0seyIuL2NvbnRleHQiOjN9XSw3OltmdW5jdGlvbih4LGEsYil7YS5leHBvcnRzPWZ1bmN0aW9uKHgsYSl7dmFyIGI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhJiYoYj0vXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0pKD86XC4oXGQqKSk/KFp8KFsrXC1dKShcZHsyfSk6KFxkezJ9KSkkLy5leGVjKGEpKT9uZXcgRGF0ZShEYXRlLlVUQygrYlsxXSwrYlsyXS0xLCtiWzNdLCtiWzRdLCtiWzVdLCtiWzZdLCsoYls3XXx8MCkpKTphfX0se31dLDg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz14KCIuL3Byb2Nlc3NvciIpLlByb2Nlc3NvcixkPXgoIi4vcGlwZSIpLlBpcGUsZT14KCIuL2NvbnRleHRzL2RpZmYiKS5EaWZmQ29udGV4dCxmPXgoIi4vY29udGV4dHMvcGF0Y2giKS5QYXRjaENvbnRleHQsZz14KCIuL2NvbnRleHRzL3JldmVyc2UiKS5SZXZlcnNlQ29udGV4dCxoPXgoIi4vZmlsdGVycy90cml2aWFsIiksaT14KCIuL2ZpbHRlcnMvbmVzdGVkIiksaj14KCIuL2ZpbHRlcnMvYXJyYXlzIiksaz14KCIuL2ZpbHRlcnMvZGF0ZXMiKSxsPXgoIi4vZmlsdGVycy90ZXh0cyIpLG09ZnVuY3Rpb24oeCl7dGhpcy5wcm9jZXNzb3I9bmV3IGMoeCksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgiZGlmZiIpLmFwcGVuZChpLmNvbGxlY3RDaGlsZHJlbkRpZmZGaWx0ZXIsaC5kaWZmRmlsdGVyLGsuZGlmZkZpbHRlcixsLmRpZmZGaWx0ZXIsaS5vYmplY3RzRGlmZkZpbHRlcixqLmRpZmZGaWx0ZXIpLnNob3VsZEhhdmVSZXN1bHQoKSksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgicGF0Y2giKS5hcHBlbmQoaS5jb2xsZWN0Q2hpbGRyZW5QYXRjaEZpbHRlcixqLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyLGgucGF0Y2hGaWx0ZXIsbC5wYXRjaEZpbHRlcixpLnBhdGNoRmlsdGVyLGoucGF0Y2hGaWx0ZXIpLnNob3VsZEhhdmVSZXN1bHQoKSksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgicmV2ZXJzZSIpLmFwcGVuZChpLmNvbGxlY3RDaGlsZHJlblJldmVyc2VGaWx0ZXIsai5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyLGgucmV2ZXJzZUZpbHRlcixsLnJldmVyc2VGaWx0ZXIsaS5yZXZlcnNlRmlsdGVyLGoucmV2ZXJzZUZpbHRlcikuc2hvdWxkSGF2ZVJlc3VsdCgpKX07bS5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb2Nlc3Nvci5vcHRpb25zLmFwcGx5KHRoaXMucHJvY2Vzc29yLGFyZ3VtZW50cyl9LG0ucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZSh4LGEpKX0sbS5wcm90b3R5cGUucGF0Y2g9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZih4LGEpKX0sbS5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZyh4KSl9LG0ucHJvdG90eXBlLnVucGF0Y2g9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wYXRjaCh4LHRoaXMucmV2ZXJzZShhKSl9LGIuRGlmZlBhdGNoZXI9bX0seyIuL2NvbnRleHRzL2RpZmYiOjQsIi4vY29udGV4dHMvcGF0Y2giOjUsIi4vY29udGV4dHMvcmV2ZXJzZSI6NiwiLi9maWx0ZXJzL2FycmF5cyI6MTAsIi4vZmlsdGVycy9kYXRlcyI6MTEsIi4vZmlsdGVycy9uZXN0ZWQiOjEzLCIuL2ZpbHRlcnMvdGV4dHMiOjE0LCIuL2ZpbHRlcnMvdHJpdmlhbCI6MTUsIi4vcGlwZSI6MTcsIi4vcHJvY2Vzc29yIjoxOH1dLDk6W2Z1bmN0aW9uKHgsYSxiKXtiLmlzQnJvd3Nlcj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvd30se31dLDEwOltmdW5jdGlvbih4LGEsYil7ZnVuY3Rpb24gYyh4LGEsYixjKXtmb3IodmFyIGQ9MDtiPmQ7ZCsrKWZvcih2YXIgZT14W2RdLGY9MDtjPmY7ZisrKXtpZihlPT09YVtmXSlyZXR1cm4hMH19ZnVuY3Rpb24gZCh4LGEsYixjLGQpe3ZhciBlPXhbYl0sZj1hW2NdO2lmKGU9PT1mKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8Im9iamVjdCIhPXR5cGVvZiBmKXJldHVybiExO3ZhciBnLGgsaT1kLm9iamVjdEhhc2g7cmV0dXJuIGk/KCJudW1iZXIiPT10eXBlb2YgYj8oZC5oYXNoQ2FjaGUxPWQuaGFzaENhY2hlMXx8W10sdm9pZCAwPT09KGc9ZC5oYXNoQ2FjaGUxW2JdKSYmKGQuaGFzaENhY2hlMVtiXT1nPWkoZSxiKSkpOmc9aShlKSx2b2lkIDAhPT1nJiYoIm51bWJlciI9PXR5cGVvZiBjPyhkLmhhc2hDYWNoZTI9ZC5oYXNoQ2FjaGUyfHxbXSx2b2lkIDA9PT0oaD1kLmhhc2hDYWNoZTJbY10pJiYoZC5oYXNoQ2FjaGUyW2NdPWg9aShmLGMpKSk6aD1pKGYpLHZvaWQgMCE9PWgmJmc9PT1oKSk6ZC5tYXRjaEJ5UG9zaXRpb24mJmI9PT1jfXZhciBlPXgoIi4uL2NvbnRleHRzL2RpZmYiKS5EaWZmQ29udGV4dCxmPXgoIi4uL2NvbnRleHRzL3BhdGNoIikuUGF0Y2hDb250ZXh0LGc9eCgiLi4vY29udGV4dHMvcmV2ZXJzZSIpLlJldmVyc2VDb250ZXh0LGg9eCgiLi9sY3MiKSxpPTMsaj0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgQXJyYXl9LGs9ImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKHgsYSl7cmV0dXJuIHguaW5kZXhPZihhKX06ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9eC5sZW5ndGgsYz0wO2I+YztjKyspaWYoeFtjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LGw9ZnVuY3Rpb24oeCl7aWYoeC5sZWZ0SXNBcnJheSl7dmFyIGEsYixmLGcsaixsPXtvYmplY3RIYXNoOngub3B0aW9ucyYmeC5vcHRpb25zLm9iamVjdEhhc2gsbWF0Y2hCeVBvc2l0aW9uOngub3B0aW9ucyYmeC5vcHRpb25zLm1hdGNoQnlQb3NpdGlvbn0sbT0wLG49MCxvPXgubGVmdCxwPXgucmlnaHQscT1vLmxlbmd0aCxyPXAubGVuZ3RoO2ZvcihxPjAmJnI+MCYmIWwub2JqZWN0SGFzaCYmImJvb2xlYW4iIT10eXBlb2YgbC5tYXRjaEJ5UG9zaXRpb24mJihsLm1hdGNoQnlQb3NpdGlvbj0hYyhvLHAscSxyKSk7cT5tJiZyPm0mJmQobyxwLG0sbSxsKTspYT1tLGc9bmV3IGUoeC5sZWZ0W2FdLHgucmlnaHRbYV0pLHgucHVzaChnLGEpLG0rKztmb3IoO3E+bittJiZyPm4rbSYmZChvLHAscS0xLW4sci0xLW4sbCk7KWI9cS0xLW4sZj1yLTEtbixnPW5ldyBlKHgubGVmdFtiXSx4LnJpZ2h0W2ZdKSx4LnB1c2goZyxmKSxuKys7aWYobStuPT09cSl7aWYocT09PXIpcmV0dXJuIHZvaWQgeC5zZXRSZXN1bHQodm9pZCAwKS5leGl0KCk7Zm9yKGo9anx8e190OiJhIn0sYT1tO3Itbj5hO2ErKylqW2FdPVtwW2FdXTtyZXR1cm4gdm9pZCB4LnNldFJlc3VsdChqKS5leGl0KCl9aWYobStuPT09cil7Zm9yKGo9anx8e190OiJhIn0sYT1tO3Etbj5hO2ErKylqWyJfIithXT1bb1thXSwwLDBdO3JldHVybiB2b2lkIHguc2V0UmVzdWx0KGopLmV4aXQoKX1kZWxldGUgbC5oYXNoQ2FjaGUxLGRlbGV0ZSBsLmhhc2hDYWNoZTI7dmFyIHM9by5zbGljZShtLHEtbiksdD1wLnNsaWNlKG0sci1uKSx1PWguZ2V0KHMsdCxkLGwpLHY9W107Zm9yKGo9anx8e190OiJhIn0sYT1tO3Etbj5hO2ErKylrKHUuaW5kaWNlczEsYS1tKTwwJiYoalsiXyIrYV09W29bYV0sMCwwXSx2LnB1c2goYSkpO3ZhciB3PSEwO3gub3B0aW9ucyYmeC5vcHRpb25zLmFycmF5cyYmITE9PT14Lm9wdGlvbnMuYXJyYXlzLmRldGVjdE1vdmUmJih3PSExKTt2YXIgeT0hMTt4Lm9wdGlvbnMmJngub3B0aW9ucy5hcnJheXMmJngub3B0aW9ucy5hcnJheXMuaW5jbHVkZVZhbHVlT25Nb3ZlJiYoeT0hMCk7dmFyIHo9di5sZW5ndGg7Zm9yKGE9bTtyLW4+YTthKyspe3ZhciBBPWsodS5pbmRpY2VzMixhLW0pO2lmKDA+QSl7dmFyIEI9ITE7aWYodyYmej4wKWZvcih2YXIgQz0wO3o+QztDKyspaWYoZChzLHQsKGI9dltDXSktbSxhLW0sbCkpe2pbIl8iK2JdLnNwbGljZSgxLDIsYSxpKSx5fHwoalsiXyIrYl1bMF09IiIpLGY9YSxnPW5ldyBlKHgubGVmdFtiXSx4LnJpZ2h0W2ZdKSx4LnB1c2goZyxmKSx2LnNwbGljZShDLDEpLEI9ITA7YnJlYWt9Qnx8KGpbYV09W3BbYV1dKX1lbHNlIGI9dS5pbmRpY2VzMVtBXSttLGY9dS5pbmRpY2VzMltBXSttLGc9bmV3IGUoeC5sZWZ0W2JdLHgucmlnaHRbZl0pLHgucHVzaChnLGYpfXguc2V0UmVzdWx0KGopLmV4aXQoKX19O2wuZmlsdGVyTmFtZT0iYXJyYXlzIjt2YXIgbT17bnVtZXJpY2FsbHk6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC1hfSxudW1lcmljYWxseUJ5OmZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBhW3hdLWJbeF19fX0sbj1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmImEiPT09eC5kZWx0YS5fdCl7dmFyIGEsYixjPXguZGVsdGEsZD14LmxlZnQsZT1bXSxnPVtdLGg9W107Zm9yKGEgaW4gYylpZigiX3QiIT09YSlpZigiXyI9PT1hWzBdKXtpZigwIT09Y1thXVsyXSYmY1thXVsyXSE9PWkpdGhyb3cgbmV3IEVycm9yKCJvbmx5IHJlbW92YWwgb3IgbW92ZSBjYW4gYmUgYXBwbGllZCBhdCBvcmlnaW5hbCBhcnJheSBpbmRpY2VzLCBpbnZhbGlkIGRpZmYgdHlwZTogIitjW2FdWzJdKTtlLnB1c2gocGFyc2VJbnQoYS5zbGljZSgxKSwxMCkpfWVsc2UgMT09PWNbYV0ubGVuZ3RoP2cucHVzaCh7aW5kZXg6cGFyc2VJbnQoYSwxMCksdmFsdWU6Y1thXVswXX0pOmgucHVzaCh7aW5kZXg6cGFyc2VJbnQoYSwxMCksZGVsdGE6Y1thXX0pO2ZvcihhPShlPWUuc29ydChtLm51bWVyaWNhbGx5KSkubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBqPWNbIl8iKyhiPWVbYV0pXSxrPWQuc3BsaWNlKGIsMSlbMF07alsyXT09PWkmJmcucHVzaCh7aW5kZXg6alsxXSx2YWx1ZTprfSl9dmFyIGw9KGc9Zy5zb3J0KG0ubnVtZXJpY2FsbHlCeSgiaW5kZXgiKSkpLmxlbmd0aDtmb3IoYT0wO2w+YTthKyspe3ZhciBuPWdbYV07ZC5zcGxpY2Uobi5pbmRleCwwLG4udmFsdWUpfXZhciBvLHA9aC5sZW5ndGg7aWYocD4wKWZvcihhPTA7cD5hO2ErKyl7dmFyIHE9aFthXTtvPW5ldyBmKHgubGVmdFtxLmluZGV4XSxxLmRlbHRhKSx4LnB1c2gobyxxLmluZGV4KX1yZXR1cm4geC5jaGlsZHJlbj92b2lkIHguZXhpdCgpOnZvaWQgeC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCl9fTtuLmZpbHRlck5hbWU9ImFycmF5cyI7dmFyIG89ZnVuY3Rpb24oeCl7aWYoeCYmeC5jaGlsZHJlbiYmImEiPT09eC5kZWx0YS5fdCl7Zm9yKHZhciBhLGI9eC5jaGlsZHJlbi5sZW5ndGgsYz0wO2I+YztjKyspYT14LmNoaWxkcmVuW2NdLHgubGVmdFthLmNoaWxkTmFtZV09YS5yZXN1bHQ7eC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCl9fTtvLmZpbHRlck5hbWU9ImFycmF5c0NvbGxlY3RDaGlsZHJlbiI7dmFyIHA9ZnVuY3Rpb24oeCl7aWYoeC5uZXN0ZWQpe2lmKCJhIj09PXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSkiX3QiIT09YSYmKGI9bmV3IGcoeC5kZWx0YVthXSkseC5wdXNoKGIsYSkpO3guZXhpdCgpfX1lbHNlIHguZGVsdGFbMl09PT1pJiYoeC5uZXdOYW1lPSJfIit4LmRlbHRhWzFdLHguc2V0UmVzdWx0KFt4LmRlbHRhWzBdLHBhcnNlSW50KHguY2hpbGROYW1lLnN1YnN0cigxKSwxMCksaV0pLmV4aXQoKSl9O3AuZmlsdGVyTmFtZT0iYXJyYXlzIjt2YXIgcT1mdW5jdGlvbih4LGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYiXyI9PT1hWzBdKXJldHVybiBwYXJzZUludChhLnN1YnN0cigxKSwxMCk7aWYoaihiKSYmMD09PWJbMl0pcmV0dXJuIl8iK2E7dmFyIGM9K2E7Zm9yKHZhciBkIGluIHgpe3ZhciBlPXhbZF07aWYoaihlKSlpZihlWzJdPT09aSl7dmFyIGY9cGFyc2VJbnQoZC5zdWJzdHIoMSksMTApLGc9ZVsxXTtpZihnPT09K2EpcmV0dXJuIGY7Yz49ZiYmZz5jP2MrKzpmPj1jJiZjPmcmJmMtLX1lbHNlIGlmKDA9PT1lWzJdKXtjPj1wYXJzZUludChkLnN1YnN0cigxKSwxMCkmJmMrK31lbHNlIDE9PT1lLmxlbmd0aCYmYz49ZCYmYy0tfXJldHVybiBjfSxyPWZ1bmN0aW9uKHgpe2lmKHgmJnguY2hpbGRyZW4mJiJhIj09PXguZGVsdGEuX3Qpe2Zvcih2YXIgYSxiPXguY2hpbGRyZW4ubGVuZ3RoLGM9e190OiJhIn0sZD0wO2I+ZDtkKyspe3ZhciBlPShhPXguY2hpbGRyZW5bZF0pLm5ld05hbWU7dm9pZCAwPT09ZSYmKGU9cSh4LmRlbHRhLGEuY2hpbGROYW1lLGEucmVzdWx0KSksY1tlXSE9PWEucmVzdWx0JiYoY1tlXT1hLnJlc3VsdCl9eC5zZXRSZXN1bHQoYykuZXhpdCgpfX07ci5maWx0ZXJOYW1lPSJhcnJheXNDb2xsZWN0Q2hpbGRyZW4iLGIuZGlmZkZpbHRlcj1sLGIucGF0Y2hGaWx0ZXI9bixiLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyPW8sYi5yZXZlcnNlRmlsdGVyPXAsYi5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyPXJ9LHsiLi4vY29udGV4dHMvZGlmZiI6NCwiLi4vY29udGV4dHMvcGF0Y2giOjUsIi4uL2NvbnRleHRzL3JldmVyc2UiOjYsIi4vbGNzIjoxMn1dLDExOltmdW5jdGlvbih4LGEsYil7dmFyIGM9ZnVuY3Rpb24oeCl7eC5sZWZ0IGluc3RhbmNlb2YgRGF0ZT8oeC5yaWdodCBpbnN0YW5jZW9mIERhdGU/eC5sZWZ0LmdldFRpbWUoKSE9PXgucmlnaHQuZ2V0VGltZSgpP3guc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pOnguc2V0UmVzdWx0KHZvaWQgMCk6eC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkseC5leGl0KCkpOngucmlnaHQgaW5zdGFuY2VvZiBEYXRlJiZ4LnNldFJlc3VsdChbeC5sZWZ0LHgucmlnaHRdKS5leGl0KCl9O2MuZmlsdGVyTmFtZT0iZGF0ZXMiLGIuZGlmZkZpbHRlcj1jfSx7fV0sMTI6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz1mdW5jdGlvbih4LGEsYixjKXtyZXR1cm4geFtiXT09PWFbY119LGQ9ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQsZSxmPXgubGVuZ3RoLGc9YS5sZW5ndGgsaD1bZisxXTtmb3IoZD0wO2YrMT5kO2QrKylmb3IoaFtkXT1bZysxXSxlPTA7ZysxPmU7ZSsrKWhbZF1bZV09MDtmb3IoaC5tYXRjaD1iLGQ9MTtmKzE+ZDtkKyspZm9yKGU9MTtnKzE+ZTtlKyspYih4LGEsZC0xLGUtMSxjKT9oW2RdW2VdPWhbZC0xXVtlLTFdKzE6aFtkXVtlXT1NYXRoLm1heChoW2QtMV1bZV0saFtkXVtlLTFdKTtyZXR1cm4gaH0sZT1mdW5jdGlvbih4LGEsYixjLGQsZil7aWYoMD09PWN8fDA9PT1kKXJldHVybntzZXF1ZW5jZTpbXSxpbmRpY2VzMTpbXSxpbmRpY2VzMjpbXX07aWYoeC5tYXRjaChhLGIsYy0xLGQtMSxmKSl7dmFyIGc9ZSh4LGEsYixjLTEsZC0xLGYpO3JldHVybiBnLnNlcXVlbmNlLnB1c2goYVtjLTFdKSxnLmluZGljZXMxLnB1c2goYy0xKSxnLmluZGljZXMyLnB1c2goZC0xKSxnfXJldHVybiB4W2NdW2QtMV0+eFtjLTFdW2RdP2UoeCxhLGIsYyxkLTEsZik6ZSh4LGEsYixjLTEsZCxmKX0sZj1mdW5jdGlvbih4LGEsYixmKXt2YXIgZz1kKHgsYSxifHxjLGY9Znx8e30pLGg9ZShnLHgsYSx4Lmxlbmd0aCxhLmxlbmd0aCxmKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHgmJiJzdHJpbmciPT10eXBlb2YgYSYmKGguc2VxdWVuY2U9aC5zZXF1ZW5jZS5qb2luKCIiKSksaH07Yi5nZXQ9Zn0se31dLDEzOltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi4vY29udGV4dHMvZGlmZiIpLkRpZmZDb250ZXh0LGQ9eCgiLi4vY29udGV4dHMvcGF0Y2giKS5QYXRjaENvbnRleHQsZT14KCIuLi9jb250ZXh0cy9yZXZlcnNlIikuUmV2ZXJzZUNvbnRleHQsZj1mdW5jdGlvbih4KXtpZih4JiZ4LmNoaWxkcmVuKXtmb3IodmFyIGEsYj14LmNoaWxkcmVuLmxlbmd0aCxjPXgucmVzdWx0LGQ9MDtiPmQ7ZCsrKXZvaWQgMCE9PShhPXguY2hpbGRyZW5bZF0pLnJlc3VsdCYmKChjPWN8fHt9KVthLmNoaWxkTmFtZV09YS5yZXN1bHQpO2MmJngubGVmdElzQXJyYXkmJihjLl90PSJhIikseC5zZXRSZXN1bHQoYykuZXhpdCgpfX07Zi5maWx0ZXJOYW1lPSJjb2xsZWN0Q2hpbGRyZW4iO3ZhciBnPWZ1bmN0aW9uKHgpe2lmKCF4LmxlZnRJc0FycmF5JiYib2JqZWN0Ij09PXgubGVmdFR5cGUpe3ZhciBhLGI7Zm9yKGEgaW4geC5sZWZ0KWI9bmV3IGMoeC5sZWZ0W2FdLHgucmlnaHRbYV0pLHgucHVzaChiLGEpO2ZvcihhIGluIHgucmlnaHQpdm9pZCAwPT09eC5sZWZ0W2FdJiYoYj1uZXcgYyh2b2lkIDAseC5yaWdodFthXSkseC5wdXNoKGIsYSkpO3JldHVybiB4LmNoaWxkcmVuJiYwIT09eC5jaGlsZHJlbi5sZW5ndGg/dm9pZCB4LmV4aXQoKTp2b2lkIHguc2V0UmVzdWx0KHZvaWQgMCkuZXhpdCgpfX07Zy5maWx0ZXJOYW1lPSJvYmplY3RzIjt2YXIgaD1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmIXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSliPW5ldyBkKHgubGVmdFthXSx4LmRlbHRhW2FdKSx4LnB1c2goYixhKTt4LmV4aXQoKX19O2guZmlsdGVyTmFtZT0ib2JqZWN0cyI7dmFyIGk9ZnVuY3Rpb24oeCl7aWYoeCYmeC5jaGlsZHJlbiYmIXguZGVsdGEuX3Qpe2Zvcih2YXIgYSxiPXguY2hpbGRyZW4ubGVuZ3RoLGM9MDtiPmM7YysrKWE9eC5jaGlsZHJlbltjXSx4LmxlZnQuaGFzT3duUHJvcGVydHkoYS5jaGlsZE5hbWUpJiZ2b2lkIDA9PT1hLnJlc3VsdD9kZWxldGUgeC5sZWZ0W2EuY2hpbGROYW1lXTp4LmxlZnRbYS5jaGlsZE5hbWVdIT09YS5yZXN1bHQmJih4LmxlZnRbYS5jaGlsZE5hbWVdPWEucmVzdWx0KTt4LnNldFJlc3VsdCh4LmxlZnQpLmV4aXQoKX19O2kuZmlsdGVyTmFtZT0iY29sbGVjdENoaWxkcmVuIjt2YXIgaj1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmIXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSliPW5ldyBlKHguZGVsdGFbYV0pLHgucHVzaChiLGEpO3guZXhpdCgpfX07ai5maWx0ZXJOYW1lPSJvYmplY3RzIjt2YXIgaz1mdW5jdGlvbih4KXtpZih4JiZ4LmNoaWxkcmVuJiYheC5kZWx0YS5fdCl7Zm9yKHZhciBhLGI9eC5jaGlsZHJlbi5sZW5ndGgsYz17fSxkPTA7Yj5kO2QrKyljWyhhPXguY2hpbGRyZW5bZF0pLmNoaWxkTmFtZV0hPT1hLnJlc3VsdCYmKGNbYS5jaGlsZE5hbWVdPWEucmVzdWx0KTt4LnNldFJlc3VsdChjKS5leGl0KCl9fTtrLmZpbHRlck5hbWU9ImNvbGxlY3RDaGlsZHJlbiIsYi5jb2xsZWN0Q2hpbGRyZW5EaWZmRmlsdGVyPWYsYi5vYmplY3RzRGlmZkZpbHRlcj1nLGIucGF0Y2hGaWx0ZXI9aCxiLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyPWksYi5yZXZlcnNlRmlsdGVyPWosYi5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyPWt9LHsiLi4vY29udGV4dHMvZGlmZiI6NCwiLi4vY29udGV4dHMvcGF0Y2giOjUsIi4uL2NvbnRleHRzL3JldmVyc2UiOjZ9XSwxNDpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPTIsZD02MCxlPW51bGwsZj1mdW5jdGlvbihhKXtpZighZSl7dmFyIGI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkaWZmX21hdGNoX3BhdGNoKWI9ImZ1bmN0aW9uIj09dHlwZW9mIGRpZmZfbWF0Y2hfcGF0Y2g/bmV3IGRpZmZfbWF0Y2hfcGF0Y2g6bmV3IGRpZmZfbWF0Y2hfcGF0Y2guZGlmZl9tYXRjaF9wYXRjaDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB4KXRyeXt2YXIgYz14KCIuLi8uLi9wdWJsaWMvZXh0ZXJuYWwvIisiZGlmZl9tYXRjaF9wYXRjaF91bmNvbXByZXNzZWQiKTtiPW5ldyBjLmRpZmZfbWF0Y2hfcGF0Y2h9Y2F0Y2goeCl7Yj1udWxsfWlmKCFiKXtpZighYSlyZXR1cm4gbnVsbDt2YXIgZD1uZXcgRXJyb3IoInRleHQgZGlmZl9tYXRjaF9wYXRjaCBsaWJyYXJ5IG5vdCBmb3VuZCIpO3Rocm93IGQuZGlmZl9tYXRjaF9wYXRjaF9ub3RfZm91bmQ9ITAsZH1lPXtkaWZmOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGIucGF0Y2hfdG9UZXh0KGIucGF0Y2hfbWFrZSh4LGEpKX0scGF0Y2g6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGM9Yi5wYXRjaF9hcHBseShiLnBhdGNoX2Zyb21UZXh0KGEpLHgpLGQ9MDtkPGNbMV0ubGVuZ3RoO2QrKylpZighY1sxXVtkXSl7bmV3IEVycm9yKCJ0ZXh0IHBhdGNoIGZhaWxlZCIpLnRleHRQYXRjaEZhaWxlZD0hMH1yZXR1cm4gY1swXX19fXJldHVybiBlfSxnPWZ1bmN0aW9uKHgpe2lmKCJzdHJpbmciPT09eC5sZWZ0VHlwZSl7dmFyIGE9eC5vcHRpb25zJiZ4Lm9wdGlvbnMudGV4dERpZmYmJngub3B0aW9ucy50ZXh0RGlmZi5taW5MZW5ndGh8fGQ7aWYoeC5sZWZ0Lmxlbmd0aDxhfHx4LnJpZ2h0Lmxlbmd0aDxhKXJldHVybiB2b2lkIHguc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pLmV4aXQoKTt2YXIgYj1mKCk7aWYoIWIpcmV0dXJuIHZvaWQgeC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkuZXhpdCgpO3ZhciBlPWIuZGlmZjt4LnNldFJlc3VsdChbZSh4LmxlZnQseC5yaWdodCksMCxjXSkuZXhpdCgpfX07Zy5maWx0ZXJOYW1lPSJ0ZXh0cyI7dmFyIGg9ZnVuY3Rpb24oeCl7aWYoIXgubmVzdGVkJiZ4LmRlbHRhWzJdPT09Yyl7dmFyIGE9ZighMCkucGF0Y2g7eC5zZXRSZXN1bHQoYSh4LmxlZnQseC5kZWx0YVswXSkpLmV4aXQoKX19O2guZmlsdGVyTmFtZT0idGV4dHMiO3ZhciBpPWZ1bmN0aW9uKHgpe3ZhciBhLGIsYyxkLGUsZj1udWxsLGc9L15AQCArXC0oXGQrKSwoXGQrKSArXCsoXGQrKSwoXGQrKSArQEAkLztmb3IoYT0wLGI9KGM9eC5zcGxpdCgiXG4iKSkubGVuZ3RoO2I+YTthKyspe3ZhciBoPShkPWNbYV0pLnNsaWNlKDAsMSk7IkAiPT09aD8oZj1nLmV4ZWMoZCksbnVsbCxudWxsLGNbYV09IkBAIC0iK2ZbM10rIiwiK2ZbNF0rIiArIitmWzFdKyIsIitmWzJdKyIgQEAiKToiKyI9PT1oPyhhLGNbYV09Ii0iK2NbYV0uc2xpY2UoMSksIisiPT09Y1thLTFdLnNsaWNlKDAsMSkmJihlPWNbYV0sY1thXT1jW2EtMV0sY1thLTFdPWUpKToiLSI9PT1oJiYoYSxjW2FdPSIrIitjW2FdLnNsaWNlKDEpKX1yZXR1cm4gYy5qb2luKCJcbiIpfSxqPWZ1bmN0aW9uKHgpe3gubmVzdGVkfHx4LmRlbHRhWzJdPT09YyYmeC5zZXRSZXN1bHQoW2koeC5kZWx0YVswXSksMCxjXSkuZXhpdCgpfTtqLmZpbHRlck5hbWU9InRleHRzIixiLmRpZmZGaWx0ZXI9ZyxiLnBhdGNoRmlsdGVyPWgsYi5yZXZlcnNlRmlsdGVyPWp9LHt9XSwxNTpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBBcnJheX0sZD1mdW5jdGlvbih4KXtpZih4LmxlZnQhPT14LnJpZ2h0KWlmKHZvaWQgMCE9PXgubGVmdCl7aWYodm9pZCAwIT09eC5yaWdodCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgubGVmdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHgucmlnaHQpdGhyb3cgbmV3IEVycm9yKCJmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4geC5sZWZ0VHlwZT1udWxsPT09eC5sZWZ0PyJudWxsIjp0eXBlb2YgeC5sZWZ0LHgucmlnaHRUeXBlPW51bGw9PT14LnJpZ2h0PyJudWxsIjp0eXBlb2YgeC5yaWdodCx4LmxlZnRUeXBlIT09eC5yaWdodFR5cGU/dm9pZCB4LnNldFJlc3VsdChbeC5sZWZ0LHgucmlnaHRdKS5leGl0KCk6ImJvb2xlYW4iPT09eC5sZWZ0VHlwZXx8Im51bWJlciI9PT14LmxlZnRUeXBlP3ZvaWQgeC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkuZXhpdCgpOigib2JqZWN0Ij09PXgubGVmdFR5cGUmJih4LmxlZnRJc0FycmF5PWMoeC5sZWZ0KSksIm9iamVjdCI9PT14LnJpZ2h0VHlwZSYmKHgucmlnaHRJc0FycmF5PWMoeC5yaWdodCkpLHgubGVmdElzQXJyYXkhPT14LnJpZ2h0SXNBcnJheT92b2lkIHguc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pLmV4aXQoKTp2b2lkIDApfXguc2V0UmVzdWx0KFt4LmxlZnQsMCwwXSkuZXhpdCgpfWVsc2V7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgucmlnaHQpdGhyb3cgbmV3IEVycm9yKCJmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt4LnNldFJlc3VsdChbeC5yaWdodF0pLmV4aXQoKX1lbHNlIHguc2V0UmVzdWx0KHZvaWQgMCkuZXhpdCgpfTtkLmZpbHRlck5hbWU9InRyaXZpYWwiO3ZhciBlPWZ1bmN0aW9uKHgpe3JldHVybiB2b2lkIDA9PT14LmRlbHRhP3ZvaWQgeC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCk6KHgubmVzdGVkPSFjKHguZGVsdGEpLHgubmVzdGVkP3ZvaWQgMDoxPT09eC5kZWx0YS5sZW5ndGg/dm9pZCB4LnNldFJlc3VsdCh4LmRlbHRhWzBdKS5leGl0KCk6Mj09PXguZGVsdGEubGVuZ3RoP3ZvaWQgeC5zZXRSZXN1bHQoeC5kZWx0YVsxXSkuZXhpdCgpOjM9PT14LmRlbHRhLmxlbmd0aCYmMD09PXguZGVsdGFbMl0/dm9pZCB4LnNldFJlc3VsdCh2b2lkIDApLmV4aXQoKTp2b2lkIDApfTtlLmZpbHRlck5hbWU9InRyaXZpYWwiO3ZhciBmPWZ1bmN0aW9uKHgpe3JldHVybiB2b2lkIDA9PT14LmRlbHRhP3ZvaWQgeC5zZXRSZXN1bHQoeC5kZWx0YSkuZXhpdCgpOih4Lm5lc3RlZD0hYyh4LmRlbHRhKSx4Lm5lc3RlZD92b2lkIDA6MT09PXguZGVsdGEubGVuZ3RoP3ZvaWQgeC5zZXRSZXN1bHQoW3guZGVsdGFbMF0sMCwwXSkuZXhpdCgpOjI9PT14LmRlbHRhLmxlbmd0aD92b2lkIHguc2V0UmVzdWx0KFt4LmRlbHRhWzFdLHguZGVsdGFbMF1dKS5leGl0KCk6Mz09PXguZGVsdGEubGVuZ3RoJiYwPT09eC5kZWx0YVsyXT92b2lkIHguc2V0UmVzdWx0KFt4LmRlbHRhWzBdXSkuZXhpdCgpOnZvaWQgMCl9O2YuZmlsdGVyTmFtZT0idHJpdmlhbCIsYi5kaWZmRmlsdGVyPWQsYi5wYXRjaEZpbHRlcj1lLGIucmV2ZXJzZUZpbHRlcj1mfSx7fV0sMTY6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYyxkPXgoIi4vZW52aXJvbm1lbnQiKSxlPXgoIi4vZGlmZnBhdGNoZXIiKS5EaWZmUGF0Y2hlcjtpZihiLkRpZmZQYXRjaGVyPWUsYi5jcmVhdGU9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBlKHgpfSxiLmRhdGVSZXZpdmVyPXgoIi4vZGF0ZS1yZXZpdmVyIiksYi5kaWZmPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLmRpZmYuYXBwbHkoYyxhcmd1bWVudHMpfSxiLnBhdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLnBhdGNoLmFwcGx5KGMsYXJndW1lbnRzKX0sYi51bnBhdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLnVucGF0Y2guYXBwbHkoYyxhcmd1bWVudHMpfSxiLnJldmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gY3x8KGM9bmV3IGUpLGMucmV2ZXJzZS5hcHBseShjLGFyZ3VtZW50cyl9LGQuaXNCcm93c2VyKWIuaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmUvanNvbmRpZmZwYXRjaCIsYi52ZXJzaW9uPSIwLjEuMzgiO2Vsc2V7dmFyIGY9eCgiLi4vcGFja2FnZS5qc29uIik7Yi5ob21lcGFnZT1mLmhvbWVwYWdlLGIudmVyc2lvbj1mLnZlcnNpb247dmFyIGc9eCgiLi9mb3JtYXR0ZXJzIik7Yi5mb3JtYXR0ZXJzPWcsYi5jb25zb2xlPWcuY29uc29sZX19LHsiLi9kYXRlLXJldml2ZXIiOjcsIi4vZGlmZnBhdGNoZXIiOjgsIi4vZW52aXJvbm1lbnQiOjl9XSwxNzpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPWZ1bmN0aW9uKHgpe3RoaXMubmFtZT14LHRoaXMuZmlsdGVycz1bXX07Yy5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih4KXtpZighdGhpcy5wcm9jZXNzb3IpdGhyb3cgbmV3IEVycm9yKCJhZGQgdGhpcyBwaXBlIHRvIGEgcHJvY2Vzc29yIGJlZm9yZSB1c2luZyBpdCIpO2Zvcih2YXIgYT10aGlzLmRlYnVnLGI9dGhpcy5maWx0ZXJzLmxlbmd0aCxjPXgsZD0wO2I+ZDtkKyspe3ZhciBlPXRoaXMuZmlsdGVyc1tkXTtpZihhJiZ0aGlzLmxvZygiZmlsdGVyOiAiK2UuZmlsdGVyTmFtZSksZShjKSwib2JqZWN0Ij09dHlwZW9mIGMmJmMuZXhpdGluZyl7Yy5leGl0aW5nPSExO2JyZWFrfX0hYy5uZXh0JiZ0aGlzLnJlc3VsdENoZWNrJiZ0aGlzLnJlc3VsdENoZWNrKGMpfSxjLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oeCl7Y29uc29sZS5sb2coIltqc29uZGlmZnBhdGNoXSAiK3RoaXMubmFtZSsiIHBpcGUsICIreCl9LGMucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcnMucHVzaC5hcHBseSh0aGlzLmZpbHRlcnMsYXJndW1lbnRzKSx0aGlzfSxjLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVycy51bnNoaWZ0LmFwcGx5KHRoaXMuZmlsdGVycyxhcmd1bWVudHMpLHRoaXN9LGMucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oeCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJhIGZpbHRlciBuYW1lIGlzIHJlcXVpcmVkIik7Zm9yKHZhciBhPTA7YTx0aGlzLmZpbHRlcnMubGVuZ3RoO2ErKyl7aWYodGhpcy5maWx0ZXJzW2FdLmZpbHRlck5hbWU9PT14KXJldHVybiBhfXRocm93IG5ldyBFcnJvcigiZmlsdGVyIG5vdCBmb3VuZDogIit4KX0sYy5wcm90b3R5cGUubGlzdD1mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxhPTA7YTx0aGlzLmZpbHRlcnMubGVuZ3RoO2ErKyl7dmFyIGI9dGhpcy5maWx0ZXJzW2FdO3gucHVzaChiLmZpbHRlck5hbWUpfXJldHVybiB4fSxjLnByb3RvdHlwZS5hZnRlcj1mdW5jdGlvbih4KXt2YXIgYT10aGlzLmluZGV4T2YoeCksYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYoIWIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYSBmaWx0ZXIgaXMgcmVxdWlyZWQiKTtyZXR1cm4gYi51bnNoaWZ0KGErMSwwKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHRoaXMuZmlsdGVycyxiKSx0aGlzfSxjLnByb3RvdHlwZS5iZWZvcmU9ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5pbmRleE9mKHgpLGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKCFiLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImEgZmlsdGVyIGlzIHJlcXVpcmVkIik7cmV0dXJuIGIudW5zaGlmdChhLDApLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkodGhpcy5maWx0ZXJzLGIpLHRoaXN9LGMucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGg9MCx0aGlzfSxjLnByb3RvdHlwZS5zaG91bGRIYXZlUmVzdWx0PWZ1bmN0aW9uKHgpe2lmKCExIT09eCl7aWYoIXRoaXMucmVzdWx0Q2hlY2spe3ZhciBhPXRoaXM7cmV0dXJuIHRoaXMucmVzdWx0Q2hlY2s9ZnVuY3Rpb24oeCl7aWYoIXguaGFzUmVzdWx0KXtjb25zb2xlLmxvZyh4KTt2YXIgYj1uZXcgRXJyb3IoYS5uYW1lKyIgZmFpbGVkIik7dGhyb3cgYi5ub1Jlc3VsdD0hMCxifX0sdGhpc319ZWxzZSB0aGlzLnJlc3VsdENoZWNrPW51bGx9LGIuUGlwZT1jfSx7fV0sMTg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz1mdW5jdGlvbih4KXt0aGlzLnNlbGZPcHRpb25zPXgsdGhpcy5waXBlcz17fX07Yy5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih4KXtyZXR1cm4geCYmKHRoaXMuc2VsZk9wdGlvbnM9eCksdGhpcy5zZWxmT3B0aW9uc30sYy5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih4LGEpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7aWYodm9pZCAwPT09YSlyZXR1cm4gdGhpcy5waXBlc1t4XTt0aGlzLnBpcGVzW3hdPWF9aWYoeCYmeC5uYW1lKXtpZigoYT14KS5wcm9jZXNzb3I9PT10aGlzKXJldHVybiBhO3RoaXMucGlwZXNbYS5uYW1lXT1hfXJldHVybiBhLnByb2Nlc3Nvcj10aGlzLGF9LGMucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24oeCxhKXt2YXIgYj14O2Iub3B0aW9ucz10aGlzLm9wdGlvbnMoKTtmb3IodmFyIGMsZCxlPWF8fHgucGlwZXx8ImRlZmF1bHQiO2U7KXZvaWQgMCE9PWIubmV4dEFmdGVyQ2hpbGRyZW4mJihiLm5leHQ9Yi5uZXh0QWZ0ZXJDaGlsZHJlbixiLm5leHRBZnRlckNoaWxkcmVuPW51bGwpLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5waXBlKGUpKSxlLnByb2Nlc3MoYiksZD1iLGM9ZSxlPW51bGwsYiYmYi5uZXh0JiYoYj1iLm5leHQsZT1kLm5leHRQaXBlfHxiLnBpcGV8fGMpO3JldHVybiBiLmhhc1Jlc3VsdD9iLnJlc3VsdDp2b2lkIDB9LGIuUHJvY2Vzc29yPWN9LHt9XX0se30sWzFdKSgxKX0pLGZ1bmN0aW9uKHgpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9eCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10seCk7ZWxzZXt2YXIgYTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9hPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9hPWdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJihhPXNlbGYpLChhLmpzb25kaWZmcGF0Y2h8fChhLmpzb25kaWZmcGF0Y2g9e30pKS5mb3JtYXR0ZXJzPXgoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHgoYSxiLGMpe2Z1bmN0aW9uIGQoZixnKXtpZighYltmXSl7aWYoIWFbZl0pe3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFnJiZoKXJldHVybiBoKGYsITApO2lmKGUpcmV0dXJuIGUoZiwhMCk7dmFyIGk9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZisiJyIpO3Rocm93IGkuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsaX12YXIgaj1iW2ZdPXtleHBvcnRzOnt9fTthW2ZdWzBdLmNhbGwoai5leHBvcnRzLGZ1bmN0aW9uKHgpe3ZhciBiPWFbZl1bMV1beF07cmV0dXJuIGQoYnx8eCl9LGosai5leHBvcnRzLHgsYSxiLGMpfXJldHVybiBiW2ZdLmV4cG9ydHN9Zm9yKHZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGMubGVuZ3RoO2YrKylkKGNbZl0pO3JldHVybiBkfSh7MTpbZnVuY3Rpb24oeCxhLGIpe2EuZXhwb3J0cz14KCIuL2Zvcm1hdHRlcnMiKX0seyIuL2Zvcm1hdHRlcnMiOjZ9XSwyOltmdW5jdGlvbih4LGEsYil7Yi5pc0Jyb3dzZXI9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3d9LHt9XSwzOltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9iYXNlIikuQmFzZUZvcm1hdHRlcixkPWZ1bmN0aW9uKCl7dGhpcy5pbmNsdWRlTW92ZURlc3RpbmF0aW9ucz0hMX07ZC5wcm90b3R5cGU9bmV3IGMsZC5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQ9ZnVuY3Rpb24oeCl7Yy5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQuY2FsbCh0aGlzLHgpLHguaW5kZW50PWZ1bmN0aW9uKHgpe3RoaXMuaW5kZW50TGV2ZWw9KHRoaXMuaW5kZW50TGV2ZWx8fDApKyh2b2lkIDA9PT14PzE6eCksdGhpcy5pbmRlbnRQYWQ9bmV3IEFycmF5KHRoaXMuaW5kZW50TGV2ZWwrMSkuam9pbigiJm5ic3A7Jm5ic3A7Iil9LHgucm93PWZ1bmN0aW9uKGEsYil7eC5vdXQoJzx0cj48dGQgc3R5bGU9IndoaXRlLXNwYWNlOiBub3dyYXA7Ij48cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWFubm90YXRlZC1pbmRlbnQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2siPicpLHgub3V0KHguaW5kZW50UGFkKSx4Lm91dCgnPC9wcmU+PHByZSBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrIj4nKSx4Lm91dChhKSx4Lm91dCgnPC9wcmU+PC90ZD48dGQgY2xhc3M9Impzb25kaWZmcGF0Y2gtZGVsdGEtbm90ZSI+PGRpdj4nKSx4Lm91dChiKSx4Lm91dCgiPC9kaXY+PC90ZD48L3RyPiIpfX0sZC5wcm90b3R5cGUudHlwZUZvcm1hdHR0ZXJFcnJvckZvcm1hdHRlcj1mdW5jdGlvbih4LGEpe3gucm93KCIiLCc8cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWVycm9yIj4nK2ErIjwvcHJlPiIpfSxkLnByb3RvdHlwZS5mb3JtYXRUZXh0RGlmZlN0cmluZz1mdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMucGFyc2VUZXh0RGlmZihhKTt4Lm91dCgnPHVsIGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmIj4nKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspe3ZhciBlPWJbY107eC5vdXQoJzxsaT48ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmLWxvY2F0aW9uIj48c3BhbiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1saW5lLW51bWJlciI+JytlLmxvY2F0aW9uLmxpbmUrJzwvc3Bhbj48c3BhbiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1jaGFyIj4nK2UubG9jYXRpb24uY2hyKyc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1saW5lIj4nKTtmb3IodmFyIGY9ZS5waWVjZXMsZz0wLGg9Zi5sZW5ndGg7aD5nO2crKyl7dmFyIGk9ZltnXTt4Lm91dCgnPHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtJytpLnR5cGUrJyI+JytpLnRleHQrIjwvc3Bhbj4iKX14Lm91dCgiPC9kaXY+PC9saT4iKX14Lm91dCgiPC91bD4iKX0sZC5wcm90b3R5cGUucm9vdEJlZ2luPWZ1bmN0aW9uKHgsYSxiKXt4Lm91dCgnPHRhYmxlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWFubm90YXRlZC1kZWx0YSI+JyksIm5vZGUiPT09YSYmKHgucm93KCJ7IikseC5pbmRlbnQoKSksImFycmF5Ij09PWImJngucm93KCciX3QiOiAiYSIsJywiQXJyYXkgZGVsdGEgKG1lbWJlciBuYW1lcyBpbmRpY2F0ZSBhcnJheSBpbmRpY2VzKSIpfSxkLnByb3RvdHlwZS5yb290RW5kPWZ1bmN0aW9uKHgsYSl7Im5vZGUiPT09YSYmKHguaW5kZW50KC0xKSx4LnJvdygifSIpKSx4Lm91dCgiPC90YWJsZT4iKX0sZC5wcm90b3R5cGUubm9kZUJlZ2luPWZ1bmN0aW9uKHgsYSxiLGMsZCl7eC5yb3coIiZxdW90OyIrYSsiJnF1b3Q7OiB7IiksIm5vZGUiPT09YyYmeC5pbmRlbnQoKSwiYXJyYXkiPT09ZCYmeC5yb3coJyJfdCI6ICJhIiwnLCJBcnJheSBkZWx0YSAobWVtYmVyIG5hbWVzIGluZGljYXRlIGFycmF5IGluZGljZXMpIil9LGQucHJvdG90eXBlLm5vZGVFbmQ9ZnVuY3Rpb24oeCxhLGIsYyxkLGUpeyJub2RlIj09PWMmJnguaW5kZW50KC0xKSx4LnJvdygifSIrKGU/IiI6IiwiKSl9LGQucHJvdG90eXBlLmZvcm1hdF91bmNoYW5nZWQ9ZnVuY3Rpb24oKXt9LGQucHJvdG90eXBlLmZvcm1hdF9tb3ZlZGVzdGluYXRpb249ZnVuY3Rpb24oKXt9LGQucHJvdG90eXBlLmZvcm1hdF9ub2RlPWZ1bmN0aW9uKHgsYSxiKXt0aGlzLmZvcm1hdERlbHRhQ2hpbGRyZW4oeCxhLGIpfTt2YXIgZSxmPWZ1bmN0aW9uKHgpe3JldHVybic8cHJlIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+JnF1b3Q7Jyt4KyImcXVvdDs8L3ByZT4ifSxnPXthZGRlZDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD0iIDxwcmU+KFtuZXdWYWx1ZV0pPC9wcmU+IjtyZXR1cm4gdm9pZCAwPT09Yz8ibmV3IHZhbHVlIitkOiJudW1iZXIiPT10eXBlb2YgYz8iaW5zZXJ0IGF0IGluZGV4ICIrYytkOiJhZGQgcHJvcGVydHkgIitmKGMpK2R9LG1vZGlmaWVkOmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPSIgPHByZT4oW3ByZXZpb3VzVmFsdWUsIG5ld1ZhbHVlXSk8L3ByZT4iO3JldHVybiB2b2lkIDA9PT1jPyJtb2RpZnkgdmFsdWUiK2Q6Im51bWJlciI9PXR5cGVvZiBjPyJtb2RpZnkgYXQgaW5kZXggIitjK2Q6Im1vZGlmeSBwcm9wZXJ0eSAiK2YoYykrZH0sZGVsZXRlZDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD0iIDxwcmU+KFtwcmV2aW91c1ZhbHVlLCAwLCAwXSk8L3ByZT4iO3JldHVybiB2b2lkIDA9PT1jPyJkZWxldGUgdmFsdWUiK2Q6Im51bWJlciI9PXR5cGVvZiBjPyJyZW1vdmUgaW5kZXggIitjK2Q6ImRlbGV0ZSBwcm9wZXJ0eSAiK2YoYykrZH0sbW92ZWQ6ZnVuY3Rpb24oeCxhLGIsYyl7cmV0dXJuJ21vdmUgZnJvbSA8c3BhbiB0aXRsZT0iKHBvc2l0aW9uIHRvIHJlbW92ZSBhdCBvcmlnaW5hbCBzdGF0ZSkiPmluZGV4ICcrYysnPC9zcGFuPiB0byA8c3BhbiB0aXRsZT0iKHBvc2l0aW9uIHRvIGluc2VydCBhdCBmaW5hbCBzdGF0ZSkiPmluZGV4ICcreFsxXSsiPC9zcGFuPiJ9LHRleHRkaWZmOmZ1bmN0aW9uKHgsYSxiLGMpe3JldHVybiJ0ZXh0IGRpZmYiKyh2b2lkIDA9PT1jPyIiOiJudW1iZXIiPT10eXBlb2YgYz8iIGF0IGluZGV4ICIrYzoiIGF0IHByb3BlcnR5ICIrZihjKSkrJywgZm9ybWF0IGlzIDxhIGhyZWY9Imh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWRpZmYtbWF0Y2gtcGF0Y2gvd2lraS9VbmlkaWZmIj5hIHZhcmlhdGlvbiBvZiBVbmlkaWZmPC9hPid9fSxoPWZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5nZXREZWx0YVR5cGUoYSksYz1nW2JdLGQ9YyYmYy5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksZT1KU09OLnN0cmluZ2lmeShhLG51bGwsMik7InRleHRkaWZmIj09PWImJihlPWUuc3BsaXQoIlxcbiIpLmpvaW4oJ1xcbiIrXG4gICAiJykpLHguaW5kZW50KCkseC5yb3coZSxkKSx4LmluZGVudCgtMSl9O2QucHJvdG90eXBlLmZvcm1hdF9hZGRlZD1oLGQucHJvdG90eXBlLmZvcm1hdF9tb2RpZmllZD1oLGQucHJvdG90eXBlLmZvcm1hdF9kZWxldGVkPWgsZC5wcm90b3R5cGUuZm9ybWF0X21vdmVkPWgsZC5wcm90b3R5cGUuZm9ybWF0X3RleHRkaWZmPWgsYi5Bbm5vdGF0ZWRGb3JtYXR0ZXI9ZCxiLmZvcm1hdD1mdW5jdGlvbih4LGEpe3JldHVybiBlfHwoZT1uZXcgZCksZS5mb3JtYXQoeCxhKX19LHsiLi9iYXNlIjo0fV0sNDpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBBcnJheX0sZD0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXM/ZnVuY3Rpb24oeCl7cmV0dXJuIE9iamVjdC5rZXlzKHgpfTpmdW5jdGlvbih4KXt2YXIgYT1bXTtmb3IodmFyIGIgaW4geCl4Lmhhc093blByb3BlcnR5KGIpJiZhLnB1c2goYik7cmV0dXJuIGF9LGU9ZnVuY3Rpb24oeCl7cmV0dXJuIl8iPT09eC5zdWJzdHIoMCwxKT94LnNsaWNlKDEpOnh9LGY9ZnVuY3Rpb24oeCl7cmV0dXJuIl90Ij09PXg/LTE6Il8iPT09eC5zdWJzdHIoMCwxKT9wYXJzZUludCh4LnNsaWNlKDEpLDEwKTpwYXJzZUludCh4LDEwKSsuMX0sZz1mdW5jdGlvbih4LGEpe3JldHVybiBmKHgpLWYoYSl9LGg9ZnVuY3Rpb24oKXt9O2gucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbih4LGEpe3ZhciBiPXt9O3JldHVybiB0aGlzLnByZXBhcmVDb250ZXh0KGIpLHRoaXMucmVjdXJzZShiLHgsYSksdGhpcy5maW5hbGl6ZShiKX0saC5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQ9ZnVuY3Rpb24oeCl7eC5idWZmZXI9W10seC5vdXQ9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlci5wdXNoLmFwcGx5KHRoaXMuYnVmZmVyLGFyZ3VtZW50cyl9fSxoLnByb3RvdHlwZS50eXBlRm9ybWF0dHRlck5vdEZvdW5kPWZ1bmN0aW9uKHgsYSl7dGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm9ybWF0IGRlbHRhIHR5cGU6ICIrYSl9LGgucHJvdG90eXBlLnR5cGVGb3JtYXR0dGVyRXJyb3JGb3JtYXR0ZXI9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS50b1N0cmluZygpfSxoLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbih4KXtyZXR1cm4gYyh4LmJ1ZmZlcik/eC5idWZmZXIuam9pbigiIik6dm9pZCAwfSxoLnByb3RvdHlwZS5yZWN1cnNlPWZ1bmN0aW9uKHgsYSxiLGMsZCxlLGYpe3ZhciBnPWEmJmU/ZS52YWx1ZTpiO2lmKHZvaWQgMCE9PWF8fHZvaWQgMCE9PWMpe3ZhciBoPXRoaXMuZ2V0RGVsdGFUeXBlKGEsZSksaT0ibm9kZSI9PT1oPyJhIj09PWEuX3Q/ImFycmF5Ijoib2JqZWN0IjoiIjt2b2lkIDAhPT1jP3RoaXMubm9kZUJlZ2luKHgsYyxkLGgsaSxmKTp0aGlzLnJvb3RCZWdpbih4LGgsaSk7dHJ5eyh0aGlzWyJmb3JtYXRfIitoXXx8dGhpcy50eXBlRm9ybWF0dHRlck5vdEZvdW5kKHgsaCkpLmNhbGwodGhpcyx4LGEsZyxjLGQsZSl9Y2F0Y2goYil7dGhpcy50eXBlRm9ybWF0dHRlckVycm9yRm9ybWF0dGVyKHgsYixhLGcsYyxkLGUpLCJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihiLnN0YWNrKX12b2lkIDAhPT1jP3RoaXMubm9kZUVuZCh4LGMsZCxoLGksZik6dGhpcy5yb290RW5kKHgsaCxpKX19LGgucHJvdG90eXBlLmZvcm1hdERlbHRhQ2hpbGRyZW49ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7dGhpcy5mb3JFYWNoRGVsdGFLZXkoYSxiLGZ1bmN0aW9uKGQsZSxmLGcpe2MucmVjdXJzZSh4LGFbZF0sYj9iW2VdOnZvaWQgMCxkLGUsZixnKX0pfSxoLnByb3RvdHlwZS5mb3JFYWNoRGVsdGFLZXk9ZnVuY3Rpb24oeCxhLGIpe3ZhciBmLGg9ZCh4KSxpPSJhIj09PXguX3Qsaj17fTtpZih2b2lkIDAhPT1hKWZvcihmIGluIGEpdm9pZCAwIT09eFtmXXx8aSYmdm9pZCAwIT09eFsiXyIrZl18fGgucHVzaChmKTtmb3IoZiBpbiB4KXt2YXIgaz14W2ZdO2MoaykmJjM9PT1rWzJdJiYoaltrWzFdLnRvU3RyaW5nKCldPXtrZXk6Zix2YWx1ZTphJiZhW3BhcnNlSW50KGYuc3Vic3RyKDEpKV19LCExIT09dGhpcy5pbmNsdWRlTW92ZURlc3RpbmF0aW9ucyYmdm9pZCAwPT09YSYmdm9pZCAwPT09eFtrWzFdXSYmaC5wdXNoKGtbMV0udG9TdHJpbmcoKSkpfWk/aC5zb3J0KGcpOmguc29ydCgpO2Zvcih2YXIgbD0wLG09aC5sZW5ndGg7bT5sO2wrKyl7dmFyIG49aFtsXTtpZighaXx8Il90IiE9PW4pe3ZhciBvPWk/Im51bWJlciI9PXR5cGVvZiBuP246cGFyc2VJbnQoZShuKSwxMCk6bixwPWw9PT1tLTE7YihuLG8saltvXSxwKX19fSxoLnByb3RvdHlwZS5nZXREZWx0YVR5cGU9ZnVuY3Rpb24oeCxhKXtpZih2b2lkIDA9PT14KXJldHVybiB2b2lkIDAhPT1hPyJtb3ZlZGVzdGluYXRpb24iOiJ1bmNoYW5nZWQiO2lmKGMoeCkpe2lmKDE9PT14Lmxlbmd0aClyZXR1cm4iYWRkZWQiO2lmKDI9PT14Lmxlbmd0aClyZXR1cm4ibW9kaWZpZWQiO2lmKDM9PT14Lmxlbmd0aCYmMD09PXhbMl0pcmV0dXJuImRlbGV0ZWQiO2lmKDM9PT14Lmxlbmd0aCYmMj09PXhbMl0pcmV0dXJuInRleHRkaWZmIjtpZigzPT09eC5sZW5ndGgmJjM9PT14WzJdKXJldHVybiJtb3ZlZCJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIm5vZGUiO3JldHVybiJ1bmtub3duIn0saC5wcm90b3R5cGUucGFyc2VUZXh0RGlmZj1mdW5jdGlvbih4KXtmb3IodmFyIGE9W10sYj14LnNwbGl0KCJcbkBAICIpLGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspe3ZhciBlPWJbY10sZj17cGllY2VzOltdfSxnPS9eKD86QEAgKT9bLStdPyhcZCspLChcZCspLy5leGVjKGUpLnNsaWNlKDEpO2YubG9jYXRpb249e2xpbmU6Z1swXSxjaHI6Z1sxXX07Zm9yKHZhciBoPWUuc3BsaXQoIlxuIikuc2xpY2UoMSksaT0wLGo9aC5sZW5ndGg7aj5pO2krKyl7dmFyIGs9aFtpXTtpZihrLmxlbmd0aCl7dmFyIGw9e3R5cGU6ImNvbnRleHQifTsiKyI9PT1rLnN1YnN0cigwLDEpP2wudHlwZT0iYWRkZWQiOiItIj09PWsuc3Vic3RyKDAsMSkmJihsLnR5cGU9ImRlbGV0ZWQiKSxsLnRleHQ9ay5zbGljZSgxKSxmLnBpZWNlcy5wdXNoKGwpfX1hLnB1c2goZil9cmV0dXJuIGF9LGIuQmFzZUZvcm1hdHRlcj1ofSx7fV0sNTpbZnVuY3Rpb24oeCxhLGIpe2Z1bmN0aW9uIGMoeCl7Zm9yKHZhciBhPXgsYj1bWy8mL2csIiZhbXA7Il0sWy88L2csIiZsdDsiXSxbLz4vZywiJmd0OyJdLFsvJy9nLCImYXBvczsiXSxbLyIvZywiJnF1b3Q7Il1dLGM9MDtjPGIubGVuZ3RoO2MrKylhPWEucmVwbGFjZShiW2NdWzBdLGJbY11bMV0pO3JldHVybiBhfXZhciBkPXgoIi4vYmFzZSIpLkJhc2VGb3JtYXR0ZXIsZT1mdW5jdGlvbigpe307ZS5wcm90b3R5cGU9bmV3IGQsZS5wcm90b3R5cGUudHlwZUZvcm1hdHR0ZXJFcnJvckZvcm1hdHRlcj1mdW5jdGlvbih4LGEpe3gub3V0KCc8cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWVycm9yIj4nK2ErIjwvcHJlPiIpfSxlLnByb3RvdHlwZS5mb3JtYXRWYWx1ZT1mdW5jdGlvbih4LGEpe3gub3V0KCI8cHJlPiIrYyhKU09OLnN0cmluZ2lmeShhLG51bGwsMikpKyI8L3ByZT4iKX0sZS5wcm90b3R5cGUuZm9ybWF0VGV4dERpZmZTdHJpbmc9ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLnBhcnNlVGV4dERpZmYoYSk7eC5vdXQoJzx1bCBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZiI+Jyk7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKXt2YXIgZj1iW2RdO3gub3V0KCc8bGk+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1sb2NhdGlvbiI+PHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtbGluZS1udW1iZXIiPicrZi5sb2NhdGlvbi5saW5lKyc8L3NwYW4+PHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtY2hhciI+JytmLmxvY2F0aW9uLmNocisnPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtbGluZSI+Jyk7Zm9yKHZhciBnPWYucGllY2VzLGg9MCxpPWcubGVuZ3RoO2k+aDtoKyspe3ZhciBqPWdbaF07eC5vdXQoJzxzcGFuIGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmLScrai50eXBlKyciPicrYyhkZWNvZGVVUklDb21wb25lbnQoai50ZXh0KSkrIjwvc3Bhbj4iKX14Lm91dCgiPC9kaXY+PC9saT4iKX14Lm91dCgiPC91bD4iKX07dmFyIGY9ZnVuY3Rpb24oeCl7eD14fHxkb2N1bWVudDt2YXIgYT1mdW5jdGlvbih4KXtyZXR1cm4geC50ZXh0Q29udGVudHx8eC5pbm5lclRleHR9LGI9ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz14LnF1ZXJ5U2VsZWN0b3JBbGwoYSksZD0wLGU9Yy5sZW5ndGg7ZT5kO2QrKyliKGNbZF0pfSxjPWZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPTAsYz14LmNoaWxkcmVuLmxlbmd0aDtjPmI7YisrKWEoeC5jaGlsZHJlbltiXSxiKX07Yih4LCIuanNvbmRpZmZwYXRjaC1hcnJvdyIsZnVuY3Rpb24oeCl7dmFyIGI9eC5wYXJlbnROb2RlLGQ9eC5jaGlsZHJlblswXSxlPWQuY2hpbGRyZW5bMV07ZC5zdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgZixnPWEoYi5xdWVyeVNlbGVjdG9yKCIuanNvbmRpZmZwYXRjaC1tb3ZlZC1kZXN0aW5hdGlvbiIpKSxoPWIucGFyZW50Tm9kZTtpZihjKGgsZnVuY3Rpb24oeCl7eC5nZXRBdHRyaWJ1dGUoImRhdGEta2V5Iik9PT1nJiYoZj14KX0pLGYpdHJ5e3ZhciBpPWYub2Zmc2V0VG9wLWIub2Zmc2V0VG9wO2Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLE1hdGguYWJzKGkpKzYpLHguc3R5bGUudG9wPS04KyhpPjA/MDppKSsicHgiO3ZhciBqPWk+MD8iTTMwLDAgUS0xMCwiK01hdGgucm91bmQoaS8yKSsiIDI2LCIrKGktNCk6Ik0zMCwiKy1pKyIgUS0xMCwiK01hdGgucm91bmQoLWkvMikrIiAyNiw0IjtlLnNldEF0dHJpYnV0ZSgiZCIsaiksZC5zdHlsZS5kaXNwbGF5PSIifWNhdGNoKHgpe3JldHVybn19KX07ZS5wcm90b3R5cGUucm9vdEJlZ2luPWZ1bmN0aW9uKHgsYSxiKXt2YXIgYz0ianNvbmRpZmZwYXRjaC0iK2ErKGI/IiBqc29uZGlmZnBhdGNoLWNoaWxkLW5vZGUtdHlwZS0iK2I6IiIpO3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLWRlbHRhICcrYysnIj4nKX0sZS5wcm90b3R5cGUucm9vdEVuZD1mdW5jdGlvbih4KXt4Lm91dCgiPC9kaXY+IisoeC5oYXNBcnJvd3M/JzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zZXRUaW1lb3V0KCcrZi50b1N0cmluZygpKyIsMTApOzxcL3NjcmlwdD4iOiIiKSl9LGUucHJvdG90eXBlLm5vZGVCZWdpbj1mdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPSJqc29uZGlmZnBhdGNoLSIrYysoZD8iIGpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLSIrZDoiIik7eC5vdXQoJzxsaSBjbGFzcz0iJytlKyciIGRhdGEta2V5PSInK2IrJyI+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lIj4nK2IrIjwvZGl2PiIpfSxlLnByb3RvdHlwZS5ub2RlRW5kPWZ1bmN0aW9uKHgpe3gub3V0KCI8L2xpPiIpfSxlLnByb3RvdHlwZS5mb3JtYXRfdW5jaGFuZ2VkPWZ1bmN0aW9uKHgsYSxiKXt2b2lkIDAhPT1iJiYoeC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxiKSx4Lm91dCgiPC9kaXY+IikpfSxlLnByb3RvdHlwZS5mb3JtYXRfbW92ZWRlc3RpbmF0aW9uPWZ1bmN0aW9uKHgsYSxiKXt2b2lkIDAhPT1iJiYoeC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxiKSx4Lm91dCgiPC9kaXY+IikpfSxlLnByb3RvdHlwZS5mb3JtYXRfbm9kZT1mdW5jdGlvbih4LGEsYil7dmFyIGM9ImEiPT09YS5fdD8iYXJyYXkiOiJvYmplY3QiO3gub3V0KCc8dWwgY2xhc3M9Impzb25kaWZmcGF0Y2gtbm9kZSBqc29uZGlmZnBhdGNoLW5vZGUtdHlwZS0nK2MrJyI+JyksdGhpcy5mb3JtYXREZWx0YUNoaWxkcmVuKHgsYSxiKSx4Lm91dCgiPC91bD4iKX0sZS5wcm90b3R5cGUuZm9ybWF0X2FkZGVkPWZ1bmN0aW9uKHgsYSl7eC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzBdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9tb2RpZmllZD1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIGpzb25kaWZmcGF0Y2gtbGVmdC12YWx1ZSI+JyksdGhpcy5mb3JtYXRWYWx1ZSh4LGFbMF0pLHgub3V0KCc8L2Rpdj48ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIGpzb25kaWZmcGF0Y2gtcmlnaHQtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzFdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9kZWxldGVkPWZ1bmN0aW9uKHgsYSl7eC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzBdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9tb3ZlZD1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIj4nKSx0aGlzLmZvcm1hdFZhbHVlKHgsYVswXSkseC5vdXQoJzwvZGl2PjxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtbW92ZWQtZGVzdGluYXRpb24iPicrYVsxXSsiPC9kaXY+IikseC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtYXJyb3ciIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IC0zNHB4OyI+ICAgICAgICA8c3ZnIHdpZHRoPSIzMCIgaGVpZ2h0PSI2MCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogbm9uZTsiPiAgICAgICAgPGRlZnM+ICAgICAgICAgICAgPG1hcmtlciBpZD0ibWFya2VyQXJyb3ciIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIHJlZng9IjIiIHJlZnk9IjQiICAgICAgICAgICAgICAgICAgIG9yaWVudD0iYXV0byIgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4gICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMSBMMSw3IEw3LDQgTDEsMSIgc3R5bGU9ImZpbGw6ICMzMzk7IiAvPiAgICAgICAgICAgIDwvbWFya2VyPiAgICAgICAgPC9kZWZzPiAgICAgICAgPHBhdGggZD0iTTMwLDAgUS0xMCwyNSAyNiw1MCIgc3R5bGU9InN0cm9rZTogIzg4Zjsgc3Ryb2tlLXdpZHRoOiAycHg7IGZpbGw6IG5vbmU7ICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OyBtYXJrZXItZW5kOiB1cmwoI21hcmtlckFycm93KTsiPjwvcGF0aD4gICAgICAgIDwvc3ZnPiAgICAgICAgPC9kaXY+JykseC5oYXNBcnJvd3M9ITB9LGUucHJvdG90eXBlLmZvcm1hdF90ZXh0ZGlmZj1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIj4nKSx0aGlzLmZvcm1hdFRleHREaWZmU3RyaW5nKHgsYVswXSkseC5vdXQoIjwvZGl2PiIpfTt2YXIgZyxoPWZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1hfHxkb2N1bWVudC5ib2R5LGQ9Impzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLSIsZT17c2hvd2luZzpkKyJzaG93aW5nIixoaWRpbmc6ZCsiaGlkaW5nIix2aXNpYmxlOmQrInZpc2libGUiLGhpZGRlbjpkKyJoaWRkZW4ifSxnPWMuY2xhc3NMaXN0O2lmKGcpe2lmKCFiKXJldHVybiBnLnJlbW92ZShlLnNob3dpbmcpLGcucmVtb3ZlKGUuaGlkaW5nKSxnLnJlbW92ZShlLnZpc2libGUpLGcucmVtb3ZlKGUuaGlkZGVuKSx2b2lkKCExPT09eCYmZy5hZGQoZS5oaWRkZW4pKTshMT09PXg/KGcucmVtb3ZlKGUuc2hvd2luZyksZy5hZGQoZS52aXNpYmxlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5hZGQoZS5oaWRpbmcpfSwxMCkpOihnLnJlbW92ZShlLmhpZGluZyksZy5hZGQoZS5zaG93aW5nKSxnLnJlbW92ZShlLmhpZGRlbikpO3ZhciBoPXNldEludGVydmFsKGZ1bmN0aW9uKCl7ZihjKX0sMTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5yZW1vdmUoZS5zaG93aW5nKSxnLnJlbW92ZShlLmhpZGluZyksITE9PT14PyhnLmFkZChlLmhpZGRlbiksZy5yZW1vdmUoZS52aXNpYmxlKSk6KGcuYWRkKGUudmlzaWJsZSksZy5yZW1vdmUoZS5oaWRkZW4pKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5yZW1vdmUoZS52aXNpYmxlKSxjbGVhckludGVydmFsKGgpfSxiKzQwMCl9LGIpfX0saT1mdW5jdGlvbih4LGEpe3JldHVybiBoKCExLHgsYSl9O2IuSHRtbEZvcm1hdHRlcj1lLGIuc2hvd1VuY2hhbmdlZD1oLGIuaGlkZVVuY2hhbmdlZD1pLGIuZm9ybWF0PWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGd8fChnPW5ldyBlKSxnLmZvcm1hdCh4LGEpfX0seyIuL2Jhc2UiOjR9XSw2OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi4vZW52aXJvbm1lbnQiKTtpZihiLmJhc2U9eCgiLi9iYXNlIiksYi5odG1sPXgoIi4vaHRtbCIpLGIuYW5ub3RhdGVkPXgoIi4vYW5ub3RhdGVkIiksIWMuaXNCcm93c2VyKXt2YXIgZD0iLi9jb25zb2xlIjtiLmNvbnNvbGU9eChkKX19LHsiLi4vZW52aXJvbm1lbnQiOjIsIi4vYW5ub3RhdGVkIjozLCIuL2Jhc2UiOjQsIi4vaHRtbCI6NX1dfSx7fSxbMV0pKDEpfSk7" }, "lib/fflate.js": { "content_type": "text/javascript", "data": "LyogaHR0cHM6Ly9naXRodWIuY29tLzEwMWFycm93ei9mZmxhdGUgdjAuNi4xMCAqLwoKIWZ1bmN0aW9uKGYpe3R5cGVvZiBtb2R1bGUhPSd1bmRlZmluZWQnJiZ0eXBlb2YgZXhwb3J0cz09J29iamVjdCc/bW9kdWxlLmV4cG9ydHM9ZigpOnR5cGVvZiBkZWZpbmUhPSd1bmRlZmluZWQnJiZkZWZpbmUuYW1kP2RlZmluZShbJ2ZmbGF0ZScsZl0pOih0eXBlb2Ygc2VsZiE9J3VuZGVmaW5lZCc/c2VsZjp0aGlzKS5mZmxhdGU9ZigpfShmdW5jdGlvbigpe3ZhciBfZT17fTsidXNlIHN0cmljdCI7dmFyIHQ9KHR5cGVvZiBtb2R1bGUhPSd1bmRlZmluZWQnJiZ0eXBlb2YgZXhwb3J0cz09J29iamVjdCc/ZnVuY3Rpb24oX2YpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSx0PSI7dmFyIF9fdz1yZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpO19fdy5wYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJyxmdW5jdGlvbihtKXtvbm1lc3NhZ2Uoe2RhdGE6bX0pfSkscG9zdE1lc3NhZ2U9ZnVuY3Rpb24obSx0KXtfX3cucGFyZW50UG9ydC5wb3N0TWVzc2FnZShtLHQpfSxjbG9zZT1wcm9jZXNzLmV4aXQ7c2VsZj1nbG9iYWwiO3RyeXtlPXJlcXVpcmUoIndvcmtlcl90aHJlYWRzIikuV29ya2VyfWNhdGNoKGUpe31leHBvcnRzLmRlZmF1bHQ9ZT9mdW5jdGlvbihyLG4sbyxhLHMpe3ZhciB1PSExLGk9bmV3IGUocit0LHtldmFsOiEwfSkub24oImVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSxudWxsKX0pKS5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBzKG51bGwsZSl9KSkub24oImV4aXQiLChmdW5jdGlvbihlKXtlJiYhdSYmcyhFcnJvcigiZXhpdGVkIHdpdGggY29kZSAiK2UpLG51bGwpfSkpO3JldHVybiBpLnBvc3RNZXNzYWdlKG8sYSksaS50ZXJtaW5hdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdT0hMCxlLnByb3RvdHlwZS50ZXJtaW5hdGUuY2FsbChpKX0saX06ZnVuY3Rpb24oZSx0LHIsbixvKXtzZXRJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8oRXJyb3IoImFzeW5jIG9wZXJhdGlvbnMgdW5zdXBwb3J0ZWQgLSB1cGRhdGUgdG8gTm9kZSAxMisgKG9yIE5vZGUgMTAtMTEgd2l0aCB0aGUgLS1leHBlcmltZW50YWwtd29ya2VyIENMSSBmbGFnKSIpLG51bGwpfSkpO3ZhciBhPWZ1bmN0aW9uKCl7fTtyZXR1cm57dGVybWluYXRlOmEscG9zdE1lc3NhZ2U6YX19O3JldHVybiBfZn06ZnVuY3Rpb24oX2YpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17fTtfZi5kZWZhdWx0PWZ1bmN0aW9uKHIsdCxuLG8sYSl7dmFyIHU9bmV3IFdvcmtlcihlW3RdfHwoZVt0XT1VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtyXSx7dHlwZToidGV4dC9qYXZhc2NyaXB0In0pKSkpO3JldHVybiB1Lm9uZXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZS5lcnJvcixudWxsKX0sdS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGEobnVsbCxlLmRhdGEpfSx1LnBvc3RNZXNzYWdlKG4sbyksdX07cmV0dXJuIF9mfSkoe30pLG49VWludDhBcnJheSxyPVVpbnQxNkFycmF5LGU9VWludDMyQXJyYXksaT1uZXcgbihbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMCwwXSksbz1uZXcgbihbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdKSxhPW5ldyBuKFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSkscz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgaT1uZXcgcigzMSksbz0wO288MzE7KytvKWlbb109bis9MTw8dFtvLTFdO3ZhciBhPW5ldyBlKGlbMzBdKTtmb3Iobz0xO288MzA7KytvKWZvcih2YXIgcz1pW29dO3M8aVtvKzFdOysrcylhW3NdPXMtaVtvXTw8NXxvO3JldHVybltpLGFdfSxmPXMoaSwyKSx1PWZbMF0saD1mWzFdO3VbMjhdPTI1OCxoWzI1OF09Mjg7Zm9yKHZhciBjPXMobywwKSxsPWNbMF0scD1jWzFdLHY9bmV3IHIoMzI3NjgpLGQ9MDtkPDMyNzY4OysrZCl7dmFyIGc9KDQzNjkwJmQpPj4+MXwoMjE4NDUmZCk8PDE7dltkXT0oKDY1MjgwJihnPSg2MTY4MCYoZz0oNTI0MjgmZyk+Pj4yfCgxMzEwNyZnKTw8MikpPj4+NHwoMzg1NSZnKTw8NCkpPj4+OHwoMjU1JmcpPDw4KT4+PjF9dmFyIHc9ZnVuY3Rpb24odCxuLGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxvPTAsYT1uZXcgcihuKTtvPGk7KytvKSsrYVt0W29dLTFdO3ZhciBzLGY9bmV3IHIobik7Zm9yKG89MDtvPG47KytvKWZbb109ZltvLTFdK2Fbby0xXTw8MTtpZihlKXtzPW5ldyByKDE8PG4pO3ZhciB1PTE1LW47Zm9yKG89MDtvPGk7KytvKWlmKHRbb10pZm9yKHZhciBoPW88PDR8dFtvXSxjPW4tdFtvXSxsPWZbdFtvXS0xXSsrPDxjLHA9bHwoMTw8YyktMTtsPD1wOysrbClzW3ZbbF0+Pj51XT1ofWVsc2UgZm9yKHM9bmV3IHIoaSksbz0wO288aTsrK28pdFtvXSYmKHNbb109dltmW3Rbb10tMV0rK10+Pj4xNS10W29dKTtyZXR1cm4gc30seT1uZXcgbigyODgpO2ZvcihkPTA7ZDwxNDQ7KytkKXlbZF09ODtmb3IoZD0xNDQ7ZDwyNTY7KytkKXlbZF09OTtmb3IoZD0yNTY7ZDwyODA7KytkKXlbZF09Nztmb3IoZD0yODA7ZDwyODg7KytkKXlbZF09ODt2YXIgbT1uZXcgbigzMik7Zm9yKGQ9MDtkPDMyOysrZCltW2RdPTU7dmFyIGI9dyh5LDksMCkseD13KHksOSwxKSx6PXcobSw1LDApLGs9dyhtLDUsMSksTT1mdW5jdGlvbih0KXtmb3IodmFyIG49dFswXSxyPTE7cjx0Lmxlbmd0aDsrK3IpdFtyXT5uJiYobj10W3JdKTtyZXR1cm4gbn0sQT1mdW5jdGlvbih0LG4scil7dmFyIGU9bi84fDA7cmV0dXJuKHRbZV18dFtlKzFdPDw4KT4+KDcmbikmcn0sUz1mdW5jdGlvbih0LG4pe3ZhciByPW4vOHwwO3JldHVybih0W3JdfHRbcisxXTw8OHx0W3IrMl08PDE2KT4+KDcmbil9LEQ9ZnVuY3Rpb24odCl7cmV0dXJuKHQvOHwwKSsoNyZ0JiYxKX0sQz1mdW5jdGlvbih0LGksbyl7KG51bGw9PWl8fGk8MCkmJihpPTApLChudWxsPT1vfHxvPnQubGVuZ3RoKSYmKG89dC5sZW5ndGgpO3ZhciBhPW5ldyh0IGluc3RhbmNlb2Ygcj9yOnQgaW5zdGFuY2VvZiBlP2U6bikoby1pKTtyZXR1cm4gYS5zZXQodC5zdWJhcnJheShpLG8pKSxhfSxVPWZ1bmN0aW9uKHQscixlKXt2YXIgcz10Lmxlbmd0aDtpZighc3x8ZSYmIWUubCYmczw1KXJldHVybiByfHxuZXcgbigwKTt2YXIgZj0hcnx8ZSxoPSFlfHxlLmk7ZXx8KGU9e30pLHJ8fChyPW5ldyBuKDMqcykpO3ZhciBjPWZ1bmN0aW9uKHQpe3ZhciBlPXIubGVuZ3RoO2lmKHQ+ZSl7dmFyIGk9bmV3IG4oTWF0aC5tYXgoMiplLHQpKTtpLnNldChyKSxyPWl9fSxwPWUuZnx8MCx2PWUucHx8MCxkPWUuYnx8MCxnPWUubCx5PWUuZCxtPWUubSxiPWUubix6PTgqcztkb3tpZighZyl7ZS5mPXA9QSh0LHYsMSk7dmFyIFU9QSh0LHYrMSwzKTtpZih2Kz0zLCFVKXt2YXIgST10WyhZPUQodikrNCktNF18dFtZLTNdPDw4LE89WStJO2lmKE8+cyl7aWYoaCl0aHJvdyJ1bmV4cGVjdGVkIEVPRiI7YnJlYWt9ZiYmYyhkK0kpLHIuc2V0KHQuc3ViYXJyYXkoWSxPKSxkKSxlLmI9ZCs9SSxlLnA9dj04Kk87Y29udGludWV9aWYoMT09VSlnPXgseT1rLG09OSxiPTU7ZWxzZXtpZigyIT1VKXRocm93ImludmFsaWQgYmxvY2sgdHlwZSI7dmFyIFQ9QSh0LHYsMzEpKzI1NyxaPUEodCx2KzEwLDE1KSs0LEY9VCtBKHQsdis1LDMxKSsxO3YrPTE0O2Zvcih2YXIgRT1uZXcgbihGKSxHPW5ldyBuKDE5KSxQPTA7UDxaOysrUClHW2FbUF1dPUEodCx2KzMqUCw3KTt2Kz0zKlo7dmFyIGo9TShHKSxxPSgxPDxqKS0xLEg9dyhHLGosMSk7Zm9yKFA9MDtQPEY7KXt2YXIgWSxCPUhbQSh0LHYscSldO2lmKHYrPTE1JkIsKFk9Qj4+PjQpPDE2KUVbUCsrXT1ZO2Vsc2V7dmFyIEo9MCxLPTA7Zm9yKDE2PT1ZPyhLPTMrQSh0LHYsMyksdis9MixKPUVbUC0xXSk6MTc9PVk/KEs9MytBKHQsdiw3KSx2Kz0zKToxOD09WSYmKEs9MTErQSh0LHYsMTI3KSx2Kz03KTtLLS07KUVbUCsrXT1KfX12YXIgTD1FLnN1YmFycmF5KDAsVCksTj1FLnN1YmFycmF5KFQpO209TShMKSxiPU0oTiksZz13KEwsbSwxKSx5PXcoTixiLDEpfWlmKHY+eil7aWYoaCl0aHJvdyJ1bmV4cGVjdGVkIEVPRiI7YnJlYWt9fWYmJmMoZCsxMzEwNzIpO2Zvcih2YXIgUT0oMTw8bSktMSxSPSgxPDxiKS0xLFY9djs7Vj12KXt2YXIgVz0oSj1nW1ModCx2KSZRXSk+Pj40O2lmKCh2Kz0xNSZKKT56KXtpZihoKXRocm93InVuZXhwZWN0ZWQgRU9GIjticmVha31pZighSil0aHJvdyJpbnZhbGlkIGxlbmd0aC9saXRlcmFsIjtpZihXPDI1NilyW2QrK109VztlbHNle2lmKDI1Nj09Vyl7Vj12LGc9bnVsbDticmVha312YXIgWD1XLTI1NDtXPjI2NCYmKFg9QSh0LHYsKDE8PCh0dD1pW1A9Vy0yNTddKSktMSkrdVtQXSx2Kz10dCk7dmFyICQ9eVtTKHQsdikmUl0sXz0kPj4+NDtpZighJCl0aHJvdyJpbnZhbGlkIGRpc3RhbmNlIjtpZih2Kz0xNSYkLE49bFtfXSxfPjMpe3ZhciB0dD1vW19dO04rPVModCx2KSYoMTw8dHQpLTEsdis9dHR9aWYodj56KXtpZihoKXRocm93InVuZXhwZWN0ZWQgRU9GIjticmVha31mJiZjKGQrMTMxMDcyKTtmb3IodmFyIG50PWQrWDtkPG50O2QrPTQpcltkXT1yW2QtTl0scltkKzFdPXJbZCsxLU5dLHJbZCsyXT1yW2QrMi1OXSxyW2QrM109cltkKzMtTl07ZD1udH19ZS5sPWcsZS5wPVYsZS5iPWQsZyYmKHA9MSxlLm09bSxlLmQ9eSxlLm49Yil9d2hpbGUoIXApO3JldHVybiBkPT1yLmxlbmd0aD9yOkMociwwLGQpfSxJPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT1uLzh8MDt0W2VdfD1yPDw9NyZuLHRbZSsxXXw9cj4+Pjh9LE89ZnVuY3Rpb24odCxuLHIpe3ZhciBlPW4vOHwwO3RbZV18PXI8PD03Jm4sdFtlKzFdfD1yPj4+OCx0W2UrMl18PXI+Pj4xNn0sVD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bXSxvPTA7bzx0Lmxlbmd0aDsrK28pdFtvXSYmaS5wdXNoKHtzOm8sZjp0W29dfSk7dmFyIGE9aS5sZW5ndGgscz1pLnNsaWNlKCk7aWYoIWEpcmV0dXJuW3EsMF07aWYoMT09YSl7dmFyIGY9bmV3IG4oaVswXS5zKzEpO3JldHVybiBmW2lbMF0uc109MSxbZiwxXX1pLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZi1uLmZ9KSksaS5wdXNoKHtzOi0xLGY6MjUwMDF9KTt2YXIgdT1pWzBdLGg9aVsxXSxjPTAsbD0xLHA9Mjtmb3IoaVswXT17czotMSxmOnUuZitoLmYsbDp1LHI6aH07bCE9YS0xOyl1PWlbaVtjXS5mPGlbcF0uZj9jKys6cCsrXSxoPWlbYyE9bCYmaVtjXS5mPGlbcF0uZj9jKys6cCsrXSxpW2wrK109e3M6LTEsZjp1LmYraC5mLGw6dSxyOmh9O3ZhciB2PXNbMF0ucztmb3Iobz0xO288YTsrK28pc1tvXS5zPnYmJih2PXNbb10ucyk7dmFyIGQ9bmV3IHIodisxKSxnPVooaVtsLTFdLGQsMCk7aWYoZz5lKXtvPTA7dmFyIHc9MCx5PWctZSxtPTE8PHk7Zm9yKHMuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZFtuLnNdLWRbdC5zXXx8dC5mLW4uZn0pKTtvPGE7KytvKXt2YXIgYj1zW29dLnM7aWYoIShkW2JdPmUpKWJyZWFrO3crPW0tKDE8PGctZFtiXSksZFtiXT1lfWZvcih3Pj4+PXk7dz4wOyl7dmFyIHg9c1tvXS5zO2RbeF08ZT93LT0xPDxlLWRbeF0rKy0xOisrb31mb3IoO28+PTAmJnc7LS1vKXt2YXIgej1zW29dLnM7ZFt6XT09ZSYmKC0tZFt6XSwrK3cpfWc9ZX1yZXR1cm5bbmV3IG4oZCksZ119LFo9ZnVuY3Rpb24odCxuLHIpe3JldHVybi0xPT10LnM/TWF0aC5tYXgoWih0LmwsbixyKzEpLFoodC5yLG4scisxKSk6blt0LnNdPXJ9LEY9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXQubGVuZ3RoO24mJiF0Wy0tbl07KTtmb3IodmFyIGU9bmV3IHIoKytuKSxpPTAsbz10WzBdLGE9MSxzPWZ1bmN0aW9uKHQpe2VbaSsrXT10fSxmPTE7Zjw9bjsrK2YpaWYodFtmXT09byYmZiE9bikrK2E7ZWxzZXtpZighbyYmYT4yKXtmb3IoO2E+MTM4O2EtPTEzOClzKDMyNzU0KTthPjImJihzKGE+MTA/YS0xMTw8NXwyODY5MDphLTM8PDV8MTIzMDUpLGE9MCl9ZWxzZSBpZihhPjMpe2ZvcihzKG8pLC0tYTthPjY7YS09NilzKDgzMDQpO2E+MiYmKHMoYS0zPDw1fDgyMDgpLGE9MCl9Zm9yKDthLS07KXMobyk7YT0xLG89dFtmXX1yZXR1cm5bZS5zdWJhcnJheSgwLGkpLG5dfSxFPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT0wO2U8bi5sZW5ndGg7KytlKXIrPXRbZV0qbltlXTtyZXR1cm4gcn0sRz1mdW5jdGlvbih0LG4scil7dmFyIGU9ci5sZW5ndGgsaT1EKG4rMik7dFtpXT0yNTUmZSx0W2krMV09ZT4+PjgsdFtpKzJdPTI1NV50W2ldLHRbaSszXT0yNTVedFtpKzFdO2Zvcih2YXIgbz0wO288ZTsrK28pdFtpK28rNF09cltvXTtyZXR1cm4gOCooaSs0K2UpfSxQPWZ1bmN0aW9uKHQsbixlLHMsZix1LGgsYyxsLHAsdil7SShuLHYrKyxlKSwrK2ZbMjU2XTtmb3IodmFyIGQ9VChmLDE1KSxnPWRbMF0seD1kWzFdLGs9VCh1LDE1KSxNPWtbMF0sQT1rWzFdLFM9RihnKSxEPVNbMF0sQz1TWzFdLFU9RihNKSxaPVVbMF0sUD1VWzFdLGo9bmV3IHIoMTkpLHE9MDtxPEQubGVuZ3RoOysrcSlqWzMxJkRbcV1dKys7Zm9yKHE9MDtxPFoubGVuZ3RoOysrcSlqWzMxJlpbcV1dKys7Zm9yKHZhciBIPVQoaiw3KSxZPUhbMF0sQj1IWzFdLEo9MTk7Sj40JiYhWVthW0otMV1dOy0tSik7dmFyIEssTCxOLFEsUj1wKzU8PDMsVj1FKGYseSkrRSh1LG0pK2gsVz1FKGYsZykrRSh1LE0pK2grMTQrMypKK0UoaixZKSsoMipqWzE2XSszKmpbMTddKzcqalsxOF0pO2lmKFI8PVYmJlI8PVcpcmV0dXJuIEcobix2LHQuc3ViYXJyYXkobCxsK3ApKTtpZihJKG4sdiwxKyhXPFYpKSx2Kz0yLFc8Vil7Sz13KGcseCwwKSxMPWcsTj13KE0sQSwwKSxRPU07dmFyIFg9dyhZLEIsMCk7Zm9yKEkobix2LEMtMjU3KSxJKG4sdis1LFAtMSksSShuLHYrMTAsSi00KSx2Kz0xNCxxPTA7cTxKOysrcSlJKG4sdiszKnEsWVthW3FdXSk7dis9MypKO2Zvcih2YXIgJD1bRCxaXSxfPTA7XzwyOysrXyl7dmFyIHR0PSRbX107Zm9yKHE9MDtxPHR0Lmxlbmd0aDsrK3EpSShuLHYsWFtudD0zMSZ0dFtxXV0pLHYrPVlbbnRdLG50PjE1JiYoSShuLHYsdHRbcV0+Pj41JjEyNyksdis9dHRbcV0+Pj4xMil9fWVsc2UgSz1iLEw9eSxOPXosUT1tO2ZvcihxPTA7cTxjOysrcSlpZihzW3FdPjI1NSl7dmFyIG50O08obix2LEtbMjU3KyhudD1zW3FdPj4+MTgmMzEpXSksdis9TFtudCsyNTddLG50PjcmJihJKG4sdixzW3FdPj4+MjMmMzEpLHYrPWlbbnRdKTt2YXIgcnQ9MzEmc1txXTtPKG4sdixOW3J0XSksdis9UVtydF0scnQ+MyYmKE8obix2LHNbcV0+Pj41JjgxOTEpLHYrPW9bcnRdKX1lbHNlIE8obix2LEtbc1txXV0pLHYrPUxbc1txXV07cmV0dXJuIE8obix2LEtbMjU2XSksditMWzI1Nl19LGo9bmV3IGUoWzY1NTQwLDEzMTA4MCwxMzEwODgsMTMxMTA0LDI2MjE3NiwxMDQ4NzA0LDEwNDg4MzIsMjExNDU2MCwyMTE3NjMyXSkscT1uZXcgbigwKSxIPWZ1bmN0aW9uKHQsYSxzLGYsdSxjKXt2YXIgbD10Lmxlbmd0aCx2PW5ldyBuKGYrbCs1KigxK01hdGguY2VpbChsLzdlMykpK3UpLGQ9di5zdWJhcnJheShmLHYubGVuZ3RoLXUpLGc9MDtpZighYXx8bDw4KWZvcih2YXIgdz0wO3c8PWw7dys9NjU1MzUpe3ZhciB5PXcrNjU1MzU7eTxsP2c9RyhkLGcsdC5zdWJhcnJheSh3LHkpKTooZFt3XT1jLGc9RyhkLGcsdC5zdWJhcnJheSh3LGwpKSl9ZWxzZXtmb3IodmFyIG09althLTFdLGI9bT4+PjEzLHg9ODE5MSZtLHo9KDE8PHMpLTEsaz1uZXcgcigzMjc2OCksTT1uZXcgcih6KzEpLEE9TWF0aC5jZWlsKHMvMyksUz0yKkEsVT1mdW5jdGlvbihuKXtyZXR1cm4odFtuXV50W24rMV08PEFedFtuKzJdPDxTKSZ6fSxJPW5ldyBlKDI1ZTMpLE89bmV3IHIoMjg4KSxUPW5ldyByKDMyKSxaPTAsRj0wLEU9KHc9MCwwKSxIPTAsWT0wO3c8bDsrK3cpe3ZhciBCPVUodyksSj0zMjc2NyZ3LEs9TVtCXTtpZihrW0pdPUssTVtCXT1KLEg8PXcpe3ZhciBMPWwtdztpZigoWj43ZTN8fEU+MjQ1NzYpJiZMPjQyMyl7Zz1QKHQsZCwwLEksTyxULEYsRSxZLHctWSxnKSxFPVo9Rj0wLFk9dztmb3IodmFyIE49MDtOPDI4NjsrK04pT1tOXT0wO2ZvcihOPTA7TjwzMDsrK04pVFtOXT0wfXZhciBRPTIsUj0wLFY9eCxXPUotSyYzMjc2NztpZihMPjImJkI9PVUody1XKSlmb3IodmFyIFg9TWF0aC5taW4oYixMKS0xLCQ9TWF0aC5taW4oMzI3NjcsdyksXz1NYXRoLm1pbigyNTgsTCk7Vzw9JCYmLS1WJiZKIT1LOyl7aWYodFt3K1FdPT10W3crUS1XXSl7Zm9yKHZhciB0dD0wO3R0PF8mJnRbdyt0dF09PXRbdyt0dC1XXTsrK3R0KTtpZih0dD5RKXtpZihRPXR0LFI9Vyx0dD5YKWJyZWFrO3ZhciBudD1NYXRoLm1pbihXLHR0LTIpLHJ0PTA7Zm9yKE49MDtOPG50OysrTil7dmFyIGV0PXctVytOKzMyNzY4JjMyNzY3LGl0PWV0LWtbZXRdKzMyNzY4JjMyNzY3O2l0PnJ0JiYocnQ9aXQsSz1ldCl9fX1XKz0oSj1LKS0oSz1rW0pdKSszMjc2OCYzMjc2N31pZihSKXtJW0UrK109MjY4NDM1NDU2fGhbUV08PDE4fHBbUl07dmFyIG90PTMxJmhbUV0sYXQ9MzEmcFtSXTtGKz1pW290XStvW2F0XSwrK09bMjU3K290XSwrK1RbYXRdLEg9dytRLCsrWn1lbHNlIElbRSsrXT10W3ddLCsrT1t0W3ddXX19Zz1QKHQsZCxjLEksTyxULEYsRSxZLHctWSxnKSwhYyYmNyZnJiYoZz1HKGQsZysxLHEpKX1yZXR1cm4gQyh2LDAsZitEKGcpK3UpfSxZPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBJbnQzMkFycmF5KDI1Niksbj0wO248MjU2Oysrbil7Zm9yKHZhciByPW4sZT05Oy0tZTspcj0oMSZyJiYtMzA2Njc0OTEyKV5yPj4+MTt0W25dPXJ9cmV0dXJuIHR9KCksQj1mdW5jdGlvbigpe3ZhciB0PS0xO3JldHVybntwOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj10LGU9MDtlPG4ubGVuZ3RoOysrZSlyPVlbMjU1JnJebltlXV1ecj4+Pjg7dD1yfSxkOmZ1bmN0aW9uKCl7cmV0dXJufnR9fX0sSj1mdW5jdGlvbigpe3ZhciB0PTEsbj0wO3JldHVybntwOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZT10LGk9bixvPXIubGVuZ3RoLGE9MDthIT1vOyl7Zm9yKHZhciBzPU1hdGgubWluKGErMjY1NSxvKTthPHM7KythKWkrPWUrPXJbYV07ZT0oNjU1MzUmZSkrMTUqKGU+PjE2KSxpPSg2NTUzNSZpKSsxNSooaT4+MTYpfXQ9ZSxuPWl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4oMjU1Jih0JT02NTUyMSkpPDwyNHx0Pj4+ODw8MTZ8KDI1NSYobiU9NjU1MjEpKTw8OHxuPj4+OH19fSxLPWZ1bmN0aW9uKHQsbixyLGUsaSl7cmV0dXJuIEgodCxudWxsPT1uLmxldmVsPzY6bi5sZXZlbCxudWxsPT1uLm1lbT9NYXRoLmNlaWwoMS41Kk1hdGgubWF4KDgsTWF0aC5taW4oMTMsTWF0aC5sb2codC5sZW5ndGgpKSkpOjEyK24ubWVtLHIsZSwhaSl9LEw9ZnVuY3Rpb24odCxuKXt2YXIgcj17fTtmb3IodmFyIGUgaW4gdClyW2VdPXRbZV07Zm9yKHZhciBlIGluIG4pcltlXT1uW2VdO3JldHVybiByfSxOPWZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIGU9dCgpLGk9IiIrdCxvPWkuc2xpY2UoaS5pbmRleE9mKCJbIikrMSxpLmxhc3RJbmRleE9mKCJdIikpLnJlcGxhY2UoLyAvZywiIikuc3BsaXQoIiwiKSxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBzPWVbYV0sZj1vW2FdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXtuKz0iOyIrZisiPSI7dmFyIHU9IiIrcztpZihzLnByb3RvdHlwZSlpZigtMSE9dS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikpe3ZhciBoPXUuaW5kZXhPZigiICIsOCkrMTtuKz11LnNsaWNlKGgsdS5pbmRleE9mKCIoIixoKSl9ZWxzZSBmb3IodmFyIGMgaW4gbis9dSxzLnByb3RvdHlwZSluKz0iOyIrZisiLnByb3RvdHlwZS4iK2MrIj0iK3MucHJvdG90eXBlW2NdO2Vsc2Ugbis9dX1lbHNlIHJbZl09c31yZXR1cm5bbixyXX0sUT1bXSxSPWZ1bmN0aW9uKHQpe3ZhciBpPVtdO2Zvcih2YXIgbyBpbiB0KSh0W29daW5zdGFuY2VvZiBufHx0W29daW5zdGFuY2VvZiByfHx0W29daW5zdGFuY2VvZiBlKSYmaS5wdXNoKCh0W29dPW5ldyB0W29dLmNvbnN0cnVjdG9yKHRbb10pKS5idWZmZXIpO3JldHVybiBpfSxWPWZ1bmN0aW9uKG4scixlLGkpe3ZhciBvO2lmKCFRW2VdKXtmb3IodmFyIGE9IiIscz17fSxmPW4ubGVuZ3RoLTEsdT0wO3U8ZjsrK3UpYT0obz1OKG5bdV0sYSxzKSlbMF0scz1vWzFdO1FbZV09TihuW2ZdLGEscyl9dmFyIGg9TCh7fSxRW2VdWzFdKTtyZXR1cm4gdC5kZWZhdWx0KFFbZV1bMF0rIjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciBrIGluIGUuZGF0YSlzZWxmW2tdPWUuZGF0YVtrXTtvbm1lc3NhZ2U9IityKyJ9IixlLGgsUihoKSxpKX0sVz1mdW5jdGlvbigpe3JldHVybltuLHIsZSxpLG8sYSx1LGwseCxrLHYsdyxNLEEsUyxELEMsVSxBdCxydCxldF19LFg9ZnVuY3Rpb24oKXtyZXR1cm5bbixyLGUsaSxvLGEsaCxwLGIseSx6LG0sdixqLHEsdyxJLE8sVCxaLEYsRSxHLFAsRCxDLEgsSyx4dCxydF19LCQ9ZnVuY3Rpb24oKXtyZXR1cm5bY3QsdnQsaHQsQixZXX0sXz1mdW5jdGlvbigpe3JldHVybltsdCxwdF19LHR0PWZ1bmN0aW9uKCl7cmV0dXJuW2R0LGh0LEpdfSxudD1mdW5jdGlvbigpe3JldHVybltndF19LHJ0PWZ1bmN0aW9uKHQpe3JldHVybiBwb3N0TWVzc2FnZSh0LFt0LmJ1ZmZlcl0pfSxldD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5zaXplJiZuZXcgbih0LnNpemUpfSxpdD1mdW5jdGlvbih0LG4scixlLGksbyl7dmFyIGE9VihyLGUsaSwoZnVuY3Rpb24odCxuKXthLnRlcm1pbmF0ZSgpLG8odCxuKX0pKTtyZXR1cm4gYS5wb3N0TWVzc2FnZShbdCxuXSxuLmNvbnN1bWU/W3QuYnVmZmVyXTpbXSksZnVuY3Rpb24oKXthLnRlcm1pbmF0ZSgpfX0sb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQub25kYXRhPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHBvc3RNZXNzYWdlKFt0LG5dLFt0LmJ1ZmZlcl0pfSxmdW5jdGlvbihuKXtyZXR1cm4gdC5wdXNoKG4uZGF0YVswXSxuLmRhdGFbMV0pfX0sYXQ9ZnVuY3Rpb24odCxuLHIsZSxpKXt2YXIgbyxhPVYodCxlLGksKGZ1bmN0aW9uKHQscil7dD8oYS50ZXJtaW5hdGUoKSxuLm9uZGF0YS5jYWxsKG4sdCkpOihyWzFdJiZhLnRlcm1pbmF0ZSgpLG4ub25kYXRhLmNhbGwobix0LHJbMF0sclsxXSkpfSkpO2EucG9zdE1lc3NhZ2Uociksbi5wdXNoPWZ1bmN0aW9uKHQscil7aWYobyl0aHJvdyJzdHJlYW0gZmluaXNoZWQiO2lmKCFuLm9uZGF0YSl0aHJvdyJubyBzdHJlYW0gaGFuZGxlciI7YS5wb3N0TWVzc2FnZShbdCxvPXJdLFt0LmJ1ZmZlcl0pfSxuLnRlcm1pbmF0ZT1mdW5jdGlvbigpe2EudGVybWluYXRlKCl9fSxzdD1mdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHRbbisxXTw8OH0sZnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4odFtuXXx0W24rMV08PDh8dFtuKzJdPDwxNnx0W24rM108PDI0KT4+PjB9LHV0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ0KHQsbikrNDI5NDk2NzI5NipmdCh0LG4rNCl9LGh0PWZ1bmN0aW9uKHQsbixyKXtmb3IoO3I7KytuKXRbbl09cixyPj4+PTh9LGN0PWZ1bmN0aW9uKHQsbil7dmFyIHI9bi5maWxlbmFtZTtpZih0WzBdPTMxLHRbMV09MTM5LHRbMl09OCx0WzhdPW4ubGV2ZWw8Mj80Ojk9PW4ubGV2ZWw/MjowLHRbOV09MywwIT1uLm10aW1lJiZodCh0LDQsTWF0aC5mbG9vcihuZXcgRGF0ZShuLm10aW1lfHxEYXRlLm5vdygpKS8xZTMpKSxyKXt0WzNdPTg7Zm9yKHZhciBlPTA7ZTw9ci5sZW5ndGg7KytlKXRbZSsxMF09ci5jaGFyQ29kZUF0KGUpfX0sbHQ9ZnVuY3Rpb24odCl7aWYoMzEhPXRbMF18fDEzOSE9dFsxXXx8OCE9dFsyXSl0aHJvdyJpbnZhbGlkIGd6aXAgZGF0YSI7dmFyIG49dFszXSxyPTEwOzQmbiYmKHIrPXRbMTBdfDIrKHRbMTFdPDw4KSk7Zm9yKHZhciBlPShuPj4zJjEpKyhuPj40JjEpO2U+MDtlLT0hdFtyKytdKTtyZXR1cm4gcisoMiZuKX0scHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5sZW5ndGg7cmV0dXJuKHRbbi00XXx0W24tM108PDh8dFtuLTJdPDwxNnx0W24tMV08PDI0KT4+PjB9LHZ0PWZ1bmN0aW9uKHQpe3JldHVybiAxMCsodC5maWxlbmFtZSYmdC5maWxlbmFtZS5sZW5ndGgrMXx8MCl9LGR0PWZ1bmN0aW9uKHQsbil7dmFyIHI9bi5sZXZlbCxlPTA9PXI/MDpyPDY/MTo5PT1yPzM6Mjt0WzBdPTEyMCx0WzFdPWU8PDZ8KGU/MzItMiplOjEpfSxndD1mdW5jdGlvbih0KXtpZig4IT0oMTUmdFswXSl8fHRbMF0+Pj40Pjd8fCh0WzBdPDw4fHRbMV0pJTMxKXRocm93ImludmFsaWQgemxpYiBkYXRhIjtpZigzMiZ0WzFdKXRocm93ImludmFsaWQgemxpYiBkYXRhOiBwcmVzZXQgZGljdGlvbmFyaWVzIG5vdCBzdXBwb3J0ZWQifTtmdW5jdGlvbiB3dCh0LG4pe3JldHVybiBufHwiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXt9KSx0aGlzLm9uZGF0YT1uLHR9dmFyIHl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe258fCJmdW5jdGlvbiIhPXR5cGVvZiB0fHwobj10LHQ9e30pLHRoaXMub25kYXRhPW4sdGhpcy5vPXR8fHt9fXJldHVybiB0LnByb3RvdHlwZS5wPWZ1bmN0aW9uKHQsbil7dGhpcy5vbmRhdGEoSyh0LHRoaXMubywwLDAsIW4pLG4pfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7aWYodGhpcy5kKXRocm93InN0cmVhbSBmaW5pc2hlZCI7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIHN0cmVhbSBoYW5kbGVyIjt0aGlzLmQ9bix0aGlzLnAodCxufHwhMSl9LHR9KCk7X2UuRGVmbGF0ZT15dDt2YXIgbXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXthdChbWCxmdW5jdGlvbigpe3JldHVybltvdCx5dF19XSx0aGlzLHd0LmNhbGwodGhpcyx0LG4pLChmdW5jdGlvbih0KXt2YXIgbj1uZXcgeXQodC5kYXRhKTtvbm1lc3NhZ2U9b3Qobil9KSw2KX19KCk7ZnVuY3Rpb24gYnQodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1hdLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoeHQodC5kYXRhWzBdLHQuZGF0YVsxXSkpfSksMCxyKX1mdW5jdGlvbiB4dCh0LG4pe3JldHVybiBLKHQsbnx8e30sMCwwKX1fZS5Bc3luY0RlZmxhdGU9bXQsX2UuZGVmbGF0ZT1idCxfZS5kZWZsYXRlU3luYz14dDt2YXIgenQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucz17fSx0aGlzLnA9bmV3IG4oMCksdGhpcy5vbmRhdGE9dH1yZXR1cm4gdC5wcm90b3R5cGUuZT1mdW5jdGlvbih0KXtpZih0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGVkIjtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gc3RyZWFtIGhhbmRsZXIiO3ZhciByPXRoaXMucC5sZW5ndGgsZT1uZXcgbihyK3QubGVuZ3RoKTtlLnNldCh0aGlzLnApLGUuc2V0KHQsciksdGhpcy5wPWV9LHQucHJvdG90eXBlLmM9ZnVuY3Rpb24odCl7dGhpcy5kPXRoaXMucy5pPXR8fCExO3ZhciBuPXRoaXMucy5iLHI9VSh0aGlzLnAsdGhpcy5vLHRoaXMucyk7dGhpcy5vbmRhdGEoQyhyLG4sdGhpcy5zLmIpLHRoaXMuZCksdGhpcy5vPUMocix0aGlzLnMuYi0zMjc2OCksdGhpcy5zLmI9dGhpcy5vLmxlbmd0aCx0aGlzLnA9Qyh0aGlzLnAsdGhpcy5zLnAvOHwwKSx0aGlzLnMucCY9N30sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3RoaXMuZSh0KSx0aGlzLmMobil9LHR9KCk7X2UuSW5mbGF0ZT16dDt2YXIga3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dGhpcy5vbmRhdGE9dCxhdChbVyxmdW5jdGlvbigpe3JldHVybltvdCx6dF19XSx0aGlzLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHp0O29ubWVzc2FnZT1vdCh0KX0pLDcpfX0oKTtmdW5jdGlvbiBNdCh0LG4scil7aWYocnx8KHI9bixuPXt9KSwiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyJubyBjYWxsYmFjayI7cmV0dXJuIGl0KHQsbixbV10sKGZ1bmN0aW9uKHQpe3JldHVybiBydChBdCh0LmRhdGFbMF0sZXQodC5kYXRhWzFdKSkpfSksMSxyKX1mdW5jdGlvbiBBdCh0LG4pe3JldHVybiBVKHQsbil9X2UuQXN5bmNJbmZsYXRlPWt0LF9lLmluZmxhdGU9TXQsX2UuaW5mbGF0ZVN5bmM9QXQ7dmFyIFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe3RoaXMuYz1CKCksdGhpcy5sPTAsdGhpcy52PTEseXQuY2FsbCh0aGlzLHQsbil9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt5dC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdC5wcm90b3R5cGUucD1mdW5jdGlvbih0LG4pe3RoaXMuYy5wKHQpLHRoaXMubCs9dC5sZW5ndGg7dmFyIHI9Syh0LHRoaXMubyx0aGlzLnYmJnZ0KHRoaXMubyksbiYmOCwhbik7dGhpcy52JiYoY3Qocix0aGlzLm8pLHRoaXMudj0wKSxuJiYoaHQocixyLmxlbmd0aC04LHRoaXMuYy5kKCkpLGh0KHIsci5sZW5ndGgtNCx0aGlzLmwpKSx0aGlzLm9uZGF0YShyLG4pfSx0fSgpO19lLkd6aXA9U3QsX2UuQ29tcHJlc3M9U3Q7dmFyIER0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7YXQoW1gsJCxmdW5jdGlvbigpe3JldHVybltvdCx5dCxTdF19XSx0aGlzLHd0LmNhbGwodGhpcyx0LG4pLChmdW5jdGlvbih0KXt2YXIgbj1uZXcgU3QodC5kYXRhKTtvbm1lc3NhZ2U9b3Qobil9KSw4KX19KCk7ZnVuY3Rpb24gQ3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1gsJCxmdW5jdGlvbigpe3JldHVybltVdF19XSwoZnVuY3Rpb24odCl7cmV0dXJuIHJ0KFV0KHQuZGF0YVswXSx0LmRhdGFbMV0pKX0pLDIscil9ZnVuY3Rpb24gVXQodCxuKXtufHwobj17fSk7dmFyIHI9QigpLGU9dC5sZW5ndGg7ci5wKHQpO3ZhciBpPUsodCxuLHZ0KG4pLDgpLG89aS5sZW5ndGg7cmV0dXJuIGN0KGksbiksaHQoaSxvLTgsci5kKCkpLGh0KGksby00LGUpLGl9X2UuQXN5bmNHemlwPUR0LF9lLkFzeW5jQ29tcHJlc3M9RHQsX2UuZ3ppcD1DdCxfZS5jb21wcmVzcz1DdCxfZS5nemlwU3luYz1VdCxfZS5jb21wcmVzc1N5bmM9VXQ7dmFyIEl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnY9MSx6dC5jYWxsKHRoaXMsdCl9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZih6dC5wcm90b3R5cGUuZS5jYWxsKHRoaXMsdCksdGhpcy52KXt2YXIgcj10aGlzLnAubGVuZ3RoPjM/bHQodGhpcy5wKTo0O2lmKHI+PXRoaXMucC5sZW5ndGgmJiFuKXJldHVybjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KHIpLHRoaXMudj0wfWlmKG4pe2lmKHRoaXMucC5sZW5ndGg8OCl0aHJvdyJpbnZhbGlkIGd6aXAgc3RyZWFtIjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDAsLTgpfXp0LnByb3RvdHlwZS5jLmNhbGwodGhpcyxuKX0sdH0oKTtfZS5HdW56aXA9SXQ7dmFyIE90PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMub25kYXRhPXQsYXQoW1csXyxmdW5jdGlvbigpe3JldHVybltvdCx6dCxJdF19XSx0aGlzLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEl0O29ubWVzc2FnZT1vdCh0KX0pLDkpfX0oKTtmdW5jdGlvbiBUdCh0LG4scil7aWYocnx8KHI9bixuPXt9KSwiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyJubyBjYWxsYmFjayI7cmV0dXJuIGl0KHQsbixbVyxfLGZ1bmN0aW9uKCl7cmV0dXJuW1p0XX1dLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoWnQodC5kYXRhWzBdKSl9KSwzLHIpfWZ1bmN0aW9uIFp0KHQscil7cmV0dXJuIFUodC5zdWJhcnJheShsdCh0KSwtOCkscnx8bmV3IG4ocHQodCkpKX1fZS5Bc3luY0d1bnppcD1PdCxfZS5ndW56aXA9VHQsX2UuZ3VuemlwU3luYz1adDt2YXIgRnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dGhpcy5jPUooKSx0aGlzLnY9MSx5dC5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3l0LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx0LG4pfSx0LnByb3RvdHlwZS5wPWZ1bmN0aW9uKHQsbil7dGhpcy5jLnAodCk7dmFyIHI9Syh0LHRoaXMubyx0aGlzLnYmJjIsbiYmNCwhbik7dGhpcy52JiYoZHQocix0aGlzLm8pLHRoaXMudj0wKSxuJiZodChyLHIubGVuZ3RoLTQsdGhpcy5jLmQoKSksdGhpcy5vbmRhdGEocixuKX0sdH0oKTtfZS5abGliPUZ0O3ZhciBFdD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe2F0KFtYLHR0LGZ1bmN0aW9uKCl7cmV0dXJuW290LHl0LEZ0XX1dLHRoaXMsd3QuY2FsbCh0aGlzLHQsbiksKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBGdCh0LmRhdGEpO29ubWVzc2FnZT1vdChuKX0pLDEwKX19KCk7ZnVuY3Rpb24gR3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1gsdHQsZnVuY3Rpb24oKXtyZXR1cm5bUHRdfV0sKGZ1bmN0aW9uKHQpe3JldHVybiBydChQdCh0LmRhdGFbMF0sdC5kYXRhWzFdKSl9KSw0LHIpfWZ1bmN0aW9uIFB0KHQsbil7bnx8KG49e30pO3ZhciByPUooKTtyLnAodCk7dmFyIGU9Syh0LG4sMiw0KTtyZXR1cm4gZHQoZSxuKSxodChlLGUubGVuZ3RoLTQsci5kKCkpLGV9X2UuQXN5bmNabGliPUV0LF9lLnpsaWI9R3QsX2UuemxpYlN5bmM9UHQ7dmFyIGp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnY9MSx6dC5jYWxsKHRoaXMsdCl9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZih6dC5wcm90b3R5cGUuZS5jYWxsKHRoaXMsdCksdGhpcy52KXtpZih0aGlzLnAubGVuZ3RoPDImJiFuKXJldHVybjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDIpLHRoaXMudj0wfWlmKG4pe2lmKHRoaXMucC5sZW5ndGg8NCl0aHJvdyJpbnZhbGlkIHpsaWIgc3RyZWFtIjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDAsLTQpfXp0LnByb3RvdHlwZS5jLmNhbGwodGhpcyxuKX0sdH0oKTtfZS5VbnpsaWI9anQ7dmFyIHF0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMub25kYXRhPXQsYXQoW1csbnQsZnVuY3Rpb24oKXtyZXR1cm5bb3QsenQsanRdfV0sdGhpcywwLChmdW5jdGlvbigpe3ZhciB0PW5ldyBqdDtvbm1lc3NhZ2U9b3QodCl9KSwxMSl9fSgpO2Z1bmN0aW9uIEh0KHQsbixyKXtpZihyfHwocj1uLG49e30pLCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93Im5vIGNhbGxiYWNrIjtyZXR1cm4gaXQodCxuLFtXLG50LGZ1bmN0aW9uKCl7cmV0dXJuW1l0XX1dLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoWXQodC5kYXRhWzBdLGV0KHQuZGF0YVsxXSkpKX0pLDUscil9ZnVuY3Rpb24gWXQodCxuKXtyZXR1cm4gVSgoZ3QodCksdC5zdWJhcnJheSgyLC00KSksbil9X2UuQXN5bmNVbnpsaWI9cXQsX2UudW56bGliPUh0LF9lLnVuemxpYlN5bmM9WXQ7dmFyIEJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLkc9SXQsdGhpcy5JPXp0LHRoaXMuWj1qdCx0aGlzLm9uZGF0YT10fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIHN0cmVhbSBoYW5kbGVyIjtpZih0aGlzLnMpdGhpcy5zLnB1c2godCxyKTtlbHNle2lmKHRoaXMucCYmdGhpcy5wLmxlbmd0aCl7dmFyIGU9bmV3IG4odGhpcy5wLmxlbmd0aCt0Lmxlbmd0aCk7ZS5zZXQodGhpcy5wKSxlLnNldCh0LHRoaXMucC5sZW5ndGgpfWVsc2UgdGhpcy5wPXQ7aWYodGhpcy5wLmxlbmd0aD4yKXt2YXIgaT10aGlzLG89ZnVuY3Rpb24oKXtpLm9uZGF0YS5hcHBseShpLGFyZ3VtZW50cyl9O3RoaXMucz0zMT09dGhpcy5wWzBdJiYxMzk9PXRoaXMucFsxXSYmOD09dGhpcy5wWzJdP25ldyB0aGlzLkcobyk6OCE9KDE1JnRoaXMucFswXSl8fHRoaXMucFswXT4+ND43fHwodGhpcy5wWzBdPDw4fHRoaXMucFsxXSklMzE/bmV3IHRoaXMuSShvKTpuZXcgdGhpcy5aKG8pLHRoaXMucy5wdXNoKHRoaXMucCxyKSx0aGlzLnA9bnVsbH19fSx0fSgpO19lLkRlY29tcHJlc3M9QnQ7dmFyIEp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLkc9T3QsdGhpcy5JPWt0LHRoaXMuWj1xdCx0aGlzLm9uZGF0YT10fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7QnQucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHQsbil9LHR9KCk7ZnVuY3Rpb24gS3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiAzMT09dFswXSYmMTM5PT10WzFdJiY4PT10WzJdP1R0KHQsbixyKTo4IT0oMTUmdFswXSl8fHRbMF0+PjQ+N3x8KHRbMF08PDh8dFsxXSklMzE/TXQodCxuLHIpOkh0KHQsbixyKX1mdW5jdGlvbiBMdCh0LG4pe3JldHVybiAzMT09dFswXSYmMTM5PT10WzFdJiY4PT10WzJdP1p0KHQsbik6OCE9KDE1JnRbMF0pfHx0WzBdPj40Pjd8fCh0WzBdPDw4fHRbMV0pJTMxP0F0KHQsbik6WXQodCxuKX1fZS5Bc3luY0RlY29tcHJlc3M9SnQsX2UuZGVjb21wcmVzcz1LdCxfZS5kZWNvbXByZXNzU3luYz1MdDt2YXIgTnQ9ZnVuY3Rpb24odCxyLGUsaSl7Zm9yKHZhciBvIGluIHQpe3ZhciBhPXRbb10scz1yK287YSBpbnN0YW5jZW9mIG4/ZVtzXT1bYSxpXTpBcnJheS5pc0FycmF5KGEpP2Vbc109W2FbMF0sTChpLGFbMV0pXTpOdChhLHMrIi8iLGUsaSl9fSxRdD0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHRFbmNvZGVyJiZuZXcgVGV4dEVuY29kZXIsUnQ9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyLFZ0PTA7dHJ5e1J0LmRlY29kZShxLHtzdHJlYW06ITB9KSxWdD0xfWNhdGNoKHQpe312YXIgV3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPSIiLHI9MDs7KXt2YXIgZT10W3IrK10saT0oZT4xMjcpKyhlPjIyMykrKGU+MjM5KTtpZihyK2k+dC5sZW5ndGgpcmV0dXJuW24sQyh0LHItMSldO2k/Mz09aT8oZT0oKDE1JmUpPDwxOHwoNjMmdFtyKytdKTw8MTJ8KDYzJnRbcisrXSk8PDZ8NjMmdFtyKytdKS02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGU+PjEwLDU2MzIwfDEwMjMmZSkpOm4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMSZpPygzMSZlKTw8Nnw2MyZ0W3IrK106KDE1JmUpPDwxMnwoNjMmdFtyKytdKTw8Nnw2MyZ0W3IrK10pOm4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9fSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5vbmRhdGE9dCxWdD90aGlzLnQ9bmV3IFRleHREZWNvZGVyOnRoaXMucD1xfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIGNhbGxiYWNrIjtpZihyPSEhcix0aGlzLnQpe2lmKHRoaXMub25kYXRhKHRoaXMudC5kZWNvZGUodCx7c3RyZWFtOiEwfSkscikscil7aWYodGhpcy50LmRlY29kZSgpLmxlbmd0aCl0aHJvdyJpbnZhbGlkIHV0Zi04IGRhdGEiO3RoaXMudD1udWxsfX1lbHNle2lmKCF0aGlzLnApdGhyb3cic3RyZWFtIGZpbmlzaGVkIjt2YXIgZT1uZXcgbih0aGlzLnAubGVuZ3RoK3QubGVuZ3RoKTtlLnNldCh0aGlzLnApLGUuc2V0KHQsdGhpcy5wLmxlbmd0aCk7dmFyIGk9V3QoZSksbz1pWzBdLGE9aVsxXTtpZihyKXtpZihhLmxlbmd0aCl0aHJvdyJpbnZhbGlkIHV0Zi04IGRhdGEiO3RoaXMucD1udWxsfWVsc2UgdGhpcy5wPWE7dGhpcy5vbmRhdGEobyxyKX19LHR9KCk7X2UuRGVjb2RlVVRGOD1YdDt2YXIgJHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMub25kYXRhPXR9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gY2FsbGJhY2siO2lmKHRoaXMuZCl0aHJvdyJzdHJlYW0gZmluaXNoZWQiO3RoaXMub25kYXRhKF90KHQpLHRoaXMuZD1ufHwhMSl9LHR9KCk7ZnVuY3Rpb24gX3QodCxyKXtpZihyKXtmb3IodmFyIGU9bmV3IG4odC5sZW5ndGgpLGk9MDtpPHQubGVuZ3RoOysraSllW2ldPXQuY2hhckNvZGVBdChpKTtyZXR1cm4gZX1pZihRdClyZXR1cm4gUXQuZW5jb2RlKHQpO3ZhciBvPXQubGVuZ3RoLGE9bmV3IG4odC5sZW5ndGgrKHQubGVuZ3RoPj4xKSkscz0wLGY9ZnVuY3Rpb24odCl7YVtzKytdPXR9O2ZvcihpPTA7aTxvOysraSl7aWYocys1PmEubGVuZ3RoKXt2YXIgdT1uZXcgbihzKzgrKG8taTw8MSkpO3Uuc2V0KGEpLGE9dX12YXIgaD10LmNoYXJDb2RlQXQoaSk7aDwxMjh8fHI/ZihoKTpoPDIwNDg/KGYoMTkyfGg+PjYpLGYoMTI4fDYzJmgpKTpoPjU1Mjk1JiZoPDU3MzQ0PyhmKDI0MHwoaD02NTUzNisoMTA0NzU1MiZoKXwxMDIzJnQuY2hhckNvZGVBdCgrK2kpKT4+MTgpLGYoMTI4fGg+PjEyJjYzKSxmKDEyOHxoPj42JjYzKSxmKDEyOHw2MyZoKSk6KGYoMjI0fGg+PjEyKSxmKDEyOHxoPj42JjYzKSxmKDEyOHw2MyZoKSl9cmV0dXJuIEMoYSwwLHMpfWZ1bmN0aW9uIHRuKHQsbil7aWYobil7Zm9yKHZhciByPSIiLGU9MDtlPHQubGVuZ3RoO2UrPTE2Mzg0KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0LnN1YmFycmF5KGUsZSsxNjM4NCkpO3JldHVybiByfWlmKFJ0KXJldHVybiBSdC5kZWNvZGUodCk7dmFyIGk9V3QodCk7aWYoaVsxXS5sZW5ndGgpdGhyb3ciaW52YWxpZCB1dGYtOCBkYXRhIjtyZXR1cm4gaVswXX1fZS5FbmNvZGVVVEY4PSR0LF9lLnN0clRvVTg9X3QsX2Uuc3RyRnJvbVU4PXRuO3ZhciBubj1mdW5jdGlvbih0KXtyZXR1cm4gMT09dD8zOnQ8Nj8yOjk9PXQ/MTowfSxybj1mdW5jdGlvbih0LG4pe3JldHVybiBuKzMwK3N0KHQsbisyNikrc3QodCxuKzI4KX0sZW49ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXN0KHQsbisyOCksaT10bih0LnN1YmFycmF5KG4rNDYsbis0NitlKSwhKDIwNDgmc3QodCxuKzgpKSksbz1uKzQ2K2UsYT1mdCh0LG4rMjApLHM9ciYmNDI5NDk2NzI5NT09YT9vbih0LG8pOlthLGZ0KHQsbisyNCksZnQodCxuKzQyKV0sZj1zWzBdLHU9c1sxXSxoPXNbMl07cmV0dXJuW3N0KHQsbisxMCksZix1LGksbytzdCh0LG4rMzApK3N0KHQsbiszMiksaF19LG9uPWZ1bmN0aW9uKHQsbil7Zm9yKDsxIT1zdCh0LG4pO24rPTQrc3QodCxuKzIpKTtyZXR1cm5bdXQodCxuKzEyKSx1dCh0LG4rNCksdXQodCxuKzIwKV19LGFuPWZ1bmN0aW9uKHQpe3ZhciBuPTA7aWYodClmb3IodmFyIHIgaW4gdCl7dmFyIGU9dFtyXS5sZW5ndGg7aWYoZT42NTUzNSl0aHJvdyJleHRyYSBmaWVsZCB0b28gbG9uZyI7bis9ZSs0fXJldHVybiBufSxzbj1mdW5jdGlvbih0LG4scixlLGksbyxhLHMpe3ZhciBmPWUubGVuZ3RoLHU9ci5leHRyYSxoPXMmJnMubGVuZ3RoLGM9YW4odSk7aHQodCxuLG51bGwhPWE/MzM2MzkyNDg6NjczMjQ3NTIpLG4rPTQsbnVsbCE9YSYmKHRbbisrXT0yMCx0W24rK109ci5vcyksdFtuXT0yMCxuKz0yLHRbbisrXT1yLmZsYWc8PDF8KG51bGw9PW8mJjgpLHRbbisrXT1pJiY4LHRbbisrXT0yNTUmci5jb21wcmVzc2lvbix0W24rK109ci5jb21wcmVzc2lvbj4+ODt2YXIgbD1uZXcgRGF0ZShudWxsPT1yLm10aW1lP0RhdGUubm93KCk6ci5tdGltZSkscD1sLmdldEZ1bGxZZWFyKCktMTk4MDtpZihwPDB8fHA+MTE5KXRocm93ImRhdGUgbm90IGluIHJhbmdlIDE5ODAtMjA5OSI7aWYoaHQodCxuLHA8PDI1fGwuZ2V0TW9udGgoKSsxPDwyMXxsLmdldERhdGUoKTw8MTZ8bC5nZXRIb3VycygpPDwxMXxsLmdldE1pbnV0ZXMoKTw8NXxsLmdldFNlY29uZHMoKT4+PjEpLG4rPTQsbnVsbCE9byYmKGh0KHQsbixyLmNyYyksaHQodCxuKzQsbyksaHQodCxuKzgsci5zaXplKSksaHQodCxuKzEyLGYpLGh0KHQsbisxNCxjKSxuKz0xNixudWxsIT1hJiYoaHQodCxuLGgpLGh0KHQsbis2LHIuYXR0cnMpLGh0KHQsbisxMCxhKSxuKz0xNCksdC5zZXQoZSxuKSxuKz1mLGMpZm9yKHZhciB2IGluIHUpe3ZhciBkPXVbdl0sZz1kLmxlbmd0aDtodCh0LG4sK3YpLGh0KHQsbisyLGcpLHQuc2V0KGQsbis0KSxuKz00K2d9cmV0dXJuIGgmJih0LnNldChzLG4pLG4rPWgpLG59LGZuPWZ1bmN0aW9uKHQsbixyLGUsaSl7aHQodCxuLDEwMTAxMDI1NiksaHQodCxuKzgsciksaHQodCxuKzEwLHIpLGh0KHQsbisxMixlKSxodCh0LG4rMTYsaSl9LHVuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZpbGVuYW1lPXQsdGhpcy5jPUIoKSx0aGlzLnNpemU9MCx0aGlzLmNvbXByZXNzaW9uPTB9cmV0dXJuIHQucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24odCxuKXt0aGlzLm9uZGF0YShudWxsLHQsbil9LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gY2FsbGJhY2sgLSBhZGQgdG8gWklQIGFyY2hpdmUgYmVmb3JlIHB1c2hpbmciO3RoaXMuYy5wKHQpLHRoaXMuc2l6ZSs9dC5sZW5ndGgsbiYmKHRoaXMuY3JjPXRoaXMuYy5kKCkpLHRoaXMucHJvY2Vzcyh0LG58fCExKX0sdH0oKTtfZS5aaXBQYXNzVGhyb3VnaD11bjt2YXIgaG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9dGhpcztufHwobj17fSksdW4uY2FsbCh0aGlzLHQpLHRoaXMuZD1uZXcgeXQobiwoZnVuY3Rpb24odCxuKXtyLm9uZGF0YShudWxsLHQsbil9KSksdGhpcy5jb21wcmVzc2lvbj04LHRoaXMuZmxhZz1ubihuLmxldmVsKX1yZXR1cm4gdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0LG4pe3RyeXt0aGlzLmQucHVzaCh0LG4pfWNhdGNoKHQpe3RoaXMub25kYXRhKHQsbnVsbCxuKX19LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt1bi5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdH0oKTtfZS5aaXBEZWZsYXRlPWhuO3ZhciBjbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj10aGlzO258fChuPXt9KSx1bi5jYWxsKHRoaXMsdCksdGhpcy5kPW5ldyBtdChuLChmdW5jdGlvbih0LG4sZSl7ci5vbmRhdGEodCxuLGUpfSkpLHRoaXMuY29tcHJlc3Npb249OCx0aGlzLmZsYWc9bm4obi5sZXZlbCksdGhpcy50ZXJtaW5hdGU9dGhpcy5kLnRlcm1pbmF0ZX1yZXR1cm4gdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0LG4pe3RoaXMuZC5wdXNoKHQsbil9LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt1bi5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdH0oKTtfZS5Bc3luY1ppcERlZmxhdGU9Y247dmFyIGxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm9uZGF0YT10LHRoaXMudT1bXSx0aGlzLmQ9MX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXM7aWYoMiZ0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGVkIjt2YXIgZT1fdCh0LmZpbGVuYW1lKSxpPWUubGVuZ3RoLG89dC5jb21tZW50LGE9byYmX3Qobykscz1pIT10LmZpbGVuYW1lLmxlbmd0aHx8YSYmby5sZW5ndGghPWEubGVuZ3RoLGY9aSthbih0LmV4dHJhKSszMDtpZihpPjY1NTM1KXRocm93ImZpbGVuYW1lIHRvbyBsb25nIjt2YXIgdT1uZXcgbihmKTtzbih1LDAsdCxlLHMpO3ZhciBoPVt1XSxjPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsbj1oO3Q8bi5sZW5ndGg7dCsrKXIub25kYXRhKG51bGwsblt0XSwhMSk7aD1bXX0sbD10aGlzLmQ7dGhpcy5kPTA7dmFyIHA9dGhpcy51Lmxlbmd0aCx2PUwodCx7ZjplLHU6cyxvOmEsdDpmdW5jdGlvbigpe3QudGVybWluYXRlJiZ0LnRlcm1pbmF0ZSgpfSxyOmZ1bmN0aW9uKCl7aWYoYygpLGwpe3ZhciB0PXIudVtwKzFdO3Q/dC5yKCk6ci5kPTF9bD0xfX0pLGQ9MDt0Lm9uZGF0YT1mdW5jdGlvbihlLGksbyl7aWYoZSlyLm9uZGF0YShlLGksbyksci50ZXJtaW5hdGUoKTtlbHNlIGlmKGQrPWkubGVuZ3RoLGgucHVzaChpKSxvKXt2YXIgYT1uZXcgbigxNik7aHQoYSwwLDEzNDY5NTc2MCksaHQoYSw0LHQuY3JjKSxodChhLDgsZCksaHQoYSwxMix0LnNpemUpLGgucHVzaChhKSx2LmM9ZCx2LmI9ZitkKzE2LHYuY3JjPXQuY3JjLHYuc2l6ZT10LnNpemUsbCYmdi5yKCksbD0xfWVsc2UgbCYmYygpfSx0aGlzLnUucHVzaCh2KX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZigyJnRoaXMuZCl7aWYoMSZ0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGluZyI7dGhyb3cic3RyZWFtIGZpbmlzaGVkIn10aGlzLmQ/dGhpcy5lKCk6dGhpcy51LnB1c2goe3I6ZnVuY3Rpb24oKXsxJnQuZCYmKHQudS5zcGxpY2UoLTEsMSksdC5lKCkpfSx0OmZ1bmN0aW9uKCl7fX0pLHRoaXMuZD0zfSx0LnByb3RvdHlwZS5lPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj0wLGU9MCxpPTAsbz10aGlzLnU7aTxvLmxlbmd0aDtpKyspZSs9NDYrKHU9b1tpXSkuZi5sZW5ndGgrYW4odS5leHRyYSkrKHUubz91Lm8ubGVuZ3RoOjApO2Zvcih2YXIgYT1uZXcgbihlKzIyKSxzPTAsZj10aGlzLnU7czxmLmxlbmd0aDtzKyspe3ZhciB1O3NuKGEsdCx1PWZbc10sdS5mLHUudSx1LmMscix1Lm8pLHQrPTQ2K3UuZi5sZW5ndGgrYW4odS5leHRyYSkrKHUubz91Lm8ubGVuZ3RoOjApLHIrPXUuYn1mbihhLHQsdGhpcy51Lmxlbmd0aCxlLHIpLHRoaXMub25kYXRhKG51bGwsYSwhMCksdGhpcy5kPTJ9LHQucHJvdG90eXBlLnRlcm1pbmF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLG49dGhpcy51O3Q8bi5sZW5ndGg7dCsrKW5bdF0udCgpO3RoaXMuZD0yfSx0fSgpO2Z1bmN0aW9uIHBuKHQscixlKXtpZihlfHwoZT1yLHI9e30pLCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93Im5vIGNhbGxiYWNrIjt2YXIgaT17fTtOdCh0LCIiLGkscik7dmFyIG89T2JqZWN0LmtleXMoaSksYT1vLmxlbmd0aCxzPTAsZj0wLHU9YSxoPUFycmF5KGEpLGM9W10sbD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8Yy5sZW5ndGg7Kyt0KWNbdF0oKX0scD1mdW5jdGlvbigpe3ZhciB0PW5ldyBuKGYrMjIpLHI9cyxpPWYtcztmPTA7Zm9yKHZhciBvPTA7bzx1Oysrbyl7dmFyIGE9aFtvXTt0cnl7dmFyIGM9YS5jLmxlbmd0aDtzbih0LGYsYSxhLmYsYS51LGMpO3ZhciBsPTMwK2EuZi5sZW5ndGgrYW4oYS5leHRyYSkscD1mK2w7dC5zZXQoYS5jLHApLHNuKHQscyxhLGEuZixhLnUsYyxmLGEubSkscys9MTYrbCsoYS5tP2EubS5sZW5ndGg6MCksZj1wK2N9Y2F0Y2godCl7cmV0dXJuIGUodCxudWxsKX19Zm4odCxzLGgubGVuZ3RoLGksciksZShudWxsLHQpfTthfHxwKCk7Zm9yKHZhciB2PWZ1bmN0aW9uKHQpe3ZhciBuPW9bdF0scj1pW25dLHU9clswXSx2PXJbMV0sZD1CKCksZz11Lmxlbmd0aDtkLnAodSk7dmFyIHc9X3QobikseT13Lmxlbmd0aCxtPXYuY29tbWVudCxiPW0mJl90KG0pLHg9YiYmYi5sZW5ndGgsej1hbih2LmV4dHJhKSxrPTA9PXYubGV2ZWw/MDo4LE09ZnVuY3Rpb24ocixpKXtpZihyKWwoKSxlKHIsbnVsbCk7ZWxzZXt2YXIgbz1pLmxlbmd0aDtoW3RdPUwodix7c2l6ZTpnLGNyYzpkLmQoKSxjOmksZjp3LG06Yix1OnkhPW4ubGVuZ3RofHxiJiZtLmxlbmd0aCE9eCxjb21wcmVzc2lvbjprfSkscys9MzAreSt6K28sZis9NzYrMiooeSt6KSsoeHx8MCkrbywtLWF8fHAoKX19O2lmKHk+NjU1MzUmJk0oImZpbGVuYW1lIHRvbyBsb25nIixudWxsKSxrKWlmKGc8MTZlNCl0cnl7TShudWxsLHh0KHUsdikpfWNhdGNoKHQpe00odCxudWxsKX1lbHNlIGMucHVzaChidCh1LHYsTSkpO2Vsc2UgTShudWxsLHUpfSxkPTA7ZDx1OysrZCl2KGQpO3JldHVybiBsfWZ1bmN0aW9uIHZuKHQscil7cnx8KHI9e30pO3ZhciBlPXt9LGk9W107TnQodCwiIixlLHIpO3ZhciBvPTAsYT0wO2Zvcih2YXIgcyBpbiBlKXt2YXIgZj1lW3NdLHU9ZlswXSxoPWZbMV0sYz0wPT1oLmxldmVsPzA6OCxsPShNPV90KHMpKS5sZW5ndGgscD1oLmNvbW1lbnQsdj1wJiZfdChwKSxkPXYmJnYubGVuZ3RoLGc9YW4oaC5leHRyYSk7aWYobD42NTUzNSl0aHJvdyJmaWxlbmFtZSB0b28gbG9uZyI7dmFyIHc9Yz94dCh1LGgpOnUseT13Lmxlbmd0aCxtPUIoKTttLnAodSksaS5wdXNoKEwoaCx7c2l6ZTp1Lmxlbmd0aCxjcmM6bS5kKCksYzp3LGY6TSxtOnYsdTpsIT1zLmxlbmd0aHx8diYmcC5sZW5ndGghPWQsbzpvLGNvbXByZXNzaW9uOmN9KSksbys9MzArbCtnK3ksYSs9NzYrMioobCtnKSsoZHx8MCkreX1mb3IodmFyIGI9bmV3IG4oYSsyMikseD1vLHo9YS1vLGs9MDtrPGkubGVuZ3RoOysrayl7dmFyIE07c24oYiwoTT1pW2tdKS5vLE0sTS5mLE0udSxNLmMubGVuZ3RoKTt2YXIgQT0zMCtNLmYubGVuZ3RoK2FuKE0uZXh0cmEpO2Iuc2V0KE0uYyxNLm8rQSksc24oYixvLE0sTS5mLE0udSxNLmMubGVuZ3RoLE0ubyxNLm0pLG8rPTE2K0ErKE0ubT9NLm0ubGVuZ3RoOjApfXJldHVybiBmbihiLG8saS5sZW5ndGgseix4KSxifV9lLlppcD1sbixfZS56aXA9cG4sX2UuemlwU3luYz12bjt2YXIgZG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7dGhpcy5vbmRhdGEobnVsbCx0LG4pfSx0LmNvbXByZXNzaW9uPTAsdH0oKTtfZS5VbnppcFBhc3NUaHJvdWdoPWRuO3ZhciBnbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuaT1uZXcgenQoKGZ1bmN0aW9uKG4scil7dC5vbmRhdGEobnVsbCxuLHIpfSkpfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7dHJ5e3RoaXMuaS5wdXNoKHQsbil9Y2F0Y2gocil7dGhpcy5vbmRhdGEocix0LG4pfX0sdC5jb21wcmVzc2lvbj04LHR9KCk7X2UuVW56aXBJbmZsYXRlPWduO3ZhciB3bj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj10aGlzO248MzJlND90aGlzLmk9bmV3IHp0KChmdW5jdGlvbih0LG4pe3Iub25kYXRhKG51bGwsdCxuKX0pKToodGhpcy5pPW5ldyBrdCgoZnVuY3Rpb24odCxuLGUpe3Iub25kYXRhKHQsbixlKX0pKSx0aGlzLnRlcm1pbmF0ZT10aGlzLmkudGVybWluYXRlKX1yZXR1cm4gdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3RoaXMuaS50ZXJtaW5hdGUmJih0PUModCwwKSksdGhpcy5pLnB1c2godCxuKX0sdC5jb21wcmVzc2lvbj04LHR9KCk7X2UuQXN5bmNVbnppcEluZmxhdGU9d247dmFyIHluPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm9uZmlsZT10LHRoaXMuaz1bXSx0aGlzLm89ezA6ZG59LHRoaXMucD1xfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcztpZighdGhpcy5vbmZpbGUpdGhyb3cibm8gY2FsbGJhY2siO2lmKCF0aGlzLnApdGhyb3cic3RyZWFtIGZpbmlzaGVkIjtpZih0aGlzLmM+MCl7dmFyIGk9TWF0aC5taW4odGhpcy5jLHQubGVuZ3RoKSxvPXQuc3ViYXJyYXkoMCxpKTtpZih0aGlzLmMtPWksdGhpcy5kP3RoaXMuZC5wdXNoKG8sIXRoaXMuYyk6dGhpcy5rWzBdLnB1c2gobyksKHQ9dC5zdWJhcnJheShpKSkubGVuZ3RoKXJldHVybiB0aGlzLnB1c2godCxyKX1lbHNle3ZhciBhPTAscz0wLGY9dm9pZCAwLHU9dm9pZCAwO3RoaXMucC5sZW5ndGg/dC5sZW5ndGg/KCh1PW5ldyBuKHRoaXMucC5sZW5ndGgrdC5sZW5ndGgpKS5zZXQodGhpcy5wKSx1LnNldCh0LHRoaXMucC5sZW5ndGgpKTp1PXRoaXMucDp1PXQ7Zm9yKHZhciBoPXUubGVuZ3RoLGM9dGhpcy5jLGw9YyYmdGhpcy5kLHA9ZnVuY3Rpb24oKXt2YXIgdCxuPWZ0KHUscyk7aWYoNjczMjQ3NTI9PW4pe2E9MSxmPXMsdi5kPW51bGwsdi5jPTA7dmFyIHI9c3QodSxzKzYpLGk9c3QodSxzKzgpLG89MjA0OCZyLGw9OCZyLHA9c3QodSxzKzI2KSxkPXN0KHUscysyOCk7aWYoaD5zKzMwK3ArZCl7dmFyIGc9W107di5rLnVuc2hpZnQoZyksYT0yO3ZhciB3LHk9ZnQodSxzKzE4KSxtPWZ0KHUscysyMiksYj10bih1LnN1YmFycmF5KHMrMzAscys9MzArcCksIW8pOzQyOTQ5NjcyOTU9PXk/KHQ9bD9bLTJdOm9uKHUscykseT10WzBdLG09dFsxXSk6bCYmKHk9LTEpLHMrPWQsdi5jPXk7dmFyIHg9e25hbWU6Yixjb21wcmVzc2lvbjppLHN0YXJ0OmZ1bmN0aW9uKCl7aWYoIXgub25kYXRhKXRocm93Im5vIGNhbGxiYWNrIjtpZih5KXt2YXIgdD1lLm9baV07aWYoIXQpdGhyb3cidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICIraTsodz15PDA/bmV3IHQoYik6bmV3IHQoYix5LG0pKS5vbmRhdGE9ZnVuY3Rpb24odCxuLHIpe3gub25kYXRhKHQsbixyKX07Zm9yKHZhciBuPTAscj1nO248ci5sZW5ndGg7bisrKXcucHVzaChyW25dLCExKTtlLmtbMF09PWcmJmUuYz9lLmQ9dzp3LnB1c2gocSwhMCl9ZWxzZSB4Lm9uZGF0YShudWxsLHEsITApfSx0ZXJtaW5hdGU6ZnVuY3Rpb24oKXt3JiZ3LnRlcm1pbmF0ZSYmdy50ZXJtaW5hdGUoKX19O3k+PTAmJih4LnNpemU9eSx4Lm9yaWdpbmFsU2l6ZT1tKSx2Lm9uZmlsZSh4KX1yZXR1cm4iYnJlYWsifWlmKGMpe2lmKDEzNDY5NTc2MD09bilyZXR1cm4gZj1zKz0xMisoLTI9PWMmJjgpLGE9Myx2LmM9MCwiYnJlYWsiO2lmKDMzNjM5MjQ4PT1uKXJldHVybiBmPXMtPTQsYT0zLHYuYz0wLCJicmVhayJ9fSx2PXRoaXM7czxoLTQmJiJicmVhayIhPT1wKCk7KytzKTtpZih0aGlzLnA9cSxjPDApe3ZhciBkPXUuc3ViYXJyYXkoMCxhP2YtMTItKC0yPT1jJiY4KS0oMTM0Njk1NzYwPT1mdCh1LGYtMTYpJiY0KTpzKTtsP2wucHVzaChkLCEhYSk6dGhpcy5rWysoMj09YSldLnB1c2goZCl9aWYoMiZhKXJldHVybiB0aGlzLnB1c2godS5zdWJhcnJheShzKSxyKTt0aGlzLnA9dS5zdWJhcnJheShzKX1pZihyKXtpZih0aGlzLmMpdGhyb3ciaW52YWxpZCB6aXAgZmlsZSI7dGhpcy5wPW51bGx9fSx0LnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbih0KXt0aGlzLm9bdC5jb21wcmVzc2lvbl09dH0sdH0oKTtmdW5jdGlvbiBtbih0LHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93Im5vIGNhbGxiYWNrIjtmb3IodmFyIGU9W10saT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KWVbdF0oKX0sbz17fSxhPXQubGVuZ3RoLTIyOzEwMTAxMDI1NiE9ZnQodCxhKTstLWEpaWYoIWF8fHQubGVuZ3RoLWE+NjU1NTgpcmV0dXJuIHZvaWQgcigiaW52YWxpZCB6aXAgZmlsZSIsbnVsbCk7dmFyIHM9c3QodCxhKzgpO3N8fHIobnVsbCx7fSk7dmFyIGY9cyx1PWZ0KHQsYSsxNiksaD00Mjk0OTY3Mjk1PT11O2lmKGgpe2lmKGE9ZnQodCxhLTEyKSwxMDEwNzU3OTIhPWZ0KHQsYSkpcmV0dXJuIHZvaWQgcigiaW52YWxpZCB6aXAgZmlsZSIsbnVsbCk7Zj1zPWZ0KHQsYSszMiksdT1mdCh0LGErNDgpfWZvcih2YXIgYz1mdW5jdGlvbihhKXt2YXIgZj1lbih0LHUsaCksYz1mWzBdLGw9ZlsxXSxwPWZbMl0sdj1mWzNdLGQ9Zls0XSxnPXJuKHQsZls1XSk7dT1kO3ZhciB3PWZ1bmN0aW9uKHQsbil7dD8oaSgpLHIodCxudWxsKSk6KG9bdl09biwtLXN8fHIobnVsbCxvKSl9O2lmKGMpaWYoOD09Yyl7dmFyIHk9dC5zdWJhcnJheShnLGcrbCk7aWYobDwzMmU0KXRyeXt3KG51bGwsQXQoeSxuZXcgbihwKSkpfWNhdGNoKHQpe3codCxudWxsKX1lbHNlIGUucHVzaChNdCh5LHtzaXplOnB9LHcpKX1lbHNlIHcoInVua25vd24gY29tcHJlc3Npb24gdHlwZSAiK2MsbnVsbCk7ZWxzZSB3KG51bGwsQyh0LGcsZytsKSl9LGw9MDtsPGY7KytsKWMoKTtyZXR1cm4gaX1mdW5jdGlvbiBibih0KXtmb3IodmFyIHI9e30sZT10Lmxlbmd0aC0yMjsxMDEwMTAyNTYhPWZ0KHQsZSk7LS1lKWlmKCFlfHx0Lmxlbmd0aC1lPjY1NTU4KXRocm93ImludmFsaWQgemlwIGZpbGUiO3ZhciBpPXN0KHQsZSs4KTtpZighaSlyZXR1cm57fTt2YXIgbz1mdCh0LGUrMTYpLGE9NDI5NDk2NzI5NT09bztpZihhKXtpZihlPWZ0KHQsZS0xMiksMTAxMDc1NzkyIT1mdCh0LGUpKXRocm93ImludmFsaWQgemlwIGZpbGUiO2k9ZnQodCxlKzMyKSxvPWZ0KHQsZSs0OCl9Zm9yKHZhciBzPTA7czxpOysrcyl7dmFyIGY9ZW4odCxvLGEpLHU9ZlswXSxoPWZbMV0sYz1mWzJdLGw9ZlszXSxwPWZbNF0sdj1ybih0LGZbNV0pO2lmKG89cCx1KXtpZig4IT11KXRocm93InVua25vd24gY29tcHJlc3Npb24gdHlwZSAiK3U7cltsXT1BdCh0LnN1YmFycmF5KHYsditoKSxuZXcgbihjKSl9ZWxzZSByW2xdPUModCx2LHYraCl9cmV0dXJuIHJ9X2UuVW56aXA9eW4sX2UudW56aXA9bW4sX2UudW56aXBTeW5jPWJuO3JldHVybiBfZX0pCg==" }, "lib/general.js": { "content_type": "text/javascript", "data": "LyogCiogUGhvdG9uIDEuMjYgZ2VuZXJhbCBzY3JpcHRzCiog4oCUIFN1Z2FyIDEuNC4xCiog4oCUIGdpdGh1Yi91cmwtcG9seWZpbGwKKiDigJQgalF1ZXJ5IDIuMS4zICsgTWlncmF0ZSAxLjIuMQoqIOKAlCBqUXVlcnkubXkgMS4zLjQKKiDigJQgalF1ZXJ5LnRhZ3MgMC41Ciog4oCUIFEuanMgCiog4oCUIGN3LmxpYiAxLjIuMSB0cmltbWVkCiovCgovKlN1Z2FyIDEuNC4xLCB0cmltbWVkIGxvY2FsZXMqLwooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHgsYT1PYmplY3QsYj1BcnJheSxjPVJlZ0V4cCxkPURhdGUsZT1TdHJpbmcsZj1OdW1iZXIsZz1NYXRoLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnRoaXMsaT1hLnByb3RvdHlwZS50b1N0cmluZyxqPWEucHJvdG90eXBlLmhhc093blByb3BlcnR5LGs9YS5kZWZpbmVQcm9wZXJ0eSYmYS5kZWZpbmVQcm9wZXJ0aWVzLGw9ImZ1bmN0aW9uIj09dHlwZW9mIGMoKSxtPSEoIjAiaW4gbmV3IGUoImEiKSksbj17fSxvPS9eXFtvYmplY3QgRGF0ZXxBcnJheXxTdHJpbmd8TnVtYmVyfFJlZ0V4cHxCb29sZWFufEFyZ3VtZW50c1xdJC8scD0iQm9vbGVhbixOdW1iZXIsU3RyaW5nLEFycmF5LERhdGUsUmVnRXhwLEZ1bmN0aW9uIi5zcGxpdCgiLCIpLHE9QSgiYm9vbGVhbiIscFswXSkscj1BKCJudW1iZXIiLHBbMV0pLHM9QSgic3RyaW5nIixwWzJdKSx0PXoocFszXSksdT16KHBbNF0pLHY9eihwWzVdKSx3PXoocFs2XSk7ZnVuY3Rpb24geSh4LGEsYil7cmV0dXJuKGJ8fEIoeCkpPT09IltvYmplY3QgIithKyJdIn1mdW5jdGlvbiB6KHgpe3ZhciBhPSJBcnJheSI9PT14JiZiLmlzQXJyYXl8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIHkoYSx4LGIpfTtyZXR1cm4gblt4XT1hLGF9ZnVuY3Rpb24gQSh4LGEpe3ZhciBiPWZ1bmN0aW9uKGIpe3JldHVybiBRKGIpP3koYixhKTp0eXBlb2YgYj09PXh9O3JldHVybiBuW2FdPWIsYn1mdW5jdGlvbiBCKHgpe3JldHVybiBpLmNhbGwoeCl9ZnVuY3Rpb24gQygpe0QoYSksVChwLGZ1bmN0aW9uKHgsYSl7RChoW2FdKX0pfWZ1bmN0aW9uIEQoeCl7eC5TdWdhck1ldGhvZHN8fChJKHgsIlN1Z2FyTWV0aG9kcyIse30pLEUoeCwhMSwhMCx7ZXh0ZW5kOmZ1bmN0aW9uKGEsYixjKXtFKHgsITEhPT1jLGIsYSl9LHN1Z2FyUmVzdG9yZTpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMseCxhcmd1bWVudHMsZnVuY3Rpb24oeCxhLGIpe0koeCxhLGIubWV0aG9kKX0pfSxzdWdhclJldmVydDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMseCxhcmd1bWVudHMsZnVuY3Rpb24oeCxhLGIpe2IuZXhpc3RlZD9JKHgsYSxiLm9yaWdpbmFsKTpkZWxldGUgeFthXX0pfX0pKX1mdW5jdGlvbiBFKHgsYSxiLGMpe3ZhciBkPWE/eC5wcm90b3R5cGU6eDtEKHgpLFQoYyxmdW5jdGlvbihjLGUpe3ZhciBmPWRbY10sZz1QKGQsYyk7dyhiKSYmZiYmKGU9SChmLGUsYikpLCExPT09YiYmZnx8SShkLGMsZSkseC5TdWdhck1ldGhvZHNbY109e21ldGhvZDplLGV4aXN0ZWQ6ZyxvcmlnaW5hbDpmLGluc3RhbmNlOmF9fSl9ZnVuY3Rpb24gRih4LGEsYixjLGQpe3ZhciBlPXt9OyhjPXMoYyk/Yy5zcGxpdCgiLCIpOmMpLmZvckVhY2goZnVuY3Rpb24oeCxhKXtkKGUseCxhKX0pLEUoeCxhLGIsZSl9ZnVuY3Rpb24gRyh4LGEsYixjKXt2YXIgZD0wPT09Yi5sZW5ndGgsZT1KKGIpLGY9ITE7cmV0dXJuIFQoYS5TdWdhck1ldGhvZHMsZnVuY3Rpb24oYSxiKXsoZHx8LTEhPT1lLmluZGV4T2YoYSkpJiYoZj0hMCxjKGIuaW5zdGFuY2U/eC5wcm90b3R5cGU6eCxhLGIpKX0pLGZ9ZnVuY3Rpb24gSCh4LGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gSSh4LGIsYyl7az9hLmRlZmluZVByb3BlcnR5KHgsYix7dmFsdWU6Yyxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMH0pOnhbYl09Y31mdW5jdGlvbiBKKHgsYSxiKXt2YXIgYyxkPVtdLGU9Ynx8MDtmb3IoYz14Lmxlbmd0aDtlPGM7ZSsrKWQucHVzaCh4W2VdKSxhJiZhLmNhbGwoeCx4W2VdLGUpO3JldHVybiBkfWZ1bmN0aW9uIEsoeCxhLGIpe3ZhciBjPXhbYnx8MF07cmV0dXJuIHQoYykmJih4PWMsYj0wKSxKKHgsYSxiKX1mdW5jdGlvbiBMKHgpe2lmKCF4fHwheC5jYWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbGxiYWNrIGlzIG5vdCBjYWxsYWJsZSIpfWZ1bmN0aW9uIE0oYSl7cmV0dXJuIGEhPT14fWZ1bmN0aW9uIE4oYSl7cmV0dXJuIGE9PT14fWZ1bmN0aW9uIE8oeCxhKXtyZXR1cm4hUih4KSYmYSBpbiB4fWZ1bmN0aW9uIFAoeCxhKXtyZXR1cm4hIXgmJmouY2FsbCh4LGEpfWZ1bmN0aW9uIFEoeCl7cmV0dXJuISF4JiYoIm9iamVjdCI9PXR5cGVvZiB4fHxsJiZ2KHgpKX1mdW5jdGlvbiBSKHgpe3ZhciBhPXR5cGVvZiB4O3JldHVybiBudWxsPT14fHwic3RyaW5nIj09PWF8fCJudW1iZXIiPT09YXx8ImJvb2xlYW4iPT09YX1mdW5jdGlvbiBTKHgsYSl7YT1hfHxCKHgpO3RyeXtpZih4JiZ4LmNvbnN0cnVjdG9yJiYhUCh4LCJjb25zdHJ1Y3RvciIpJiYhUCh4LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKHgpe3JldHVybiExfXJldHVybiEheCYmIltvYmplY3QgT2JqZWN0XSI9PT1hJiYiaGFzT3duUHJvcGVydHkiaW4geH1mdW5jdGlvbiBUKHgsYSl7dmFyIGI7Zm9yKGIgaW4geClpZihQKHgsYikmJiExPT09YS5jYWxsKHgsYix4W2JdLHgpKWJyZWFrfWZ1bmN0aW9uIFUoeCxhKXtmb3IodmFyIGI9MDtiPHg7YisrKWEoYil9ZnVuY3Rpb24gVih4LGEpe3JldHVybiBUKGEsZnVuY3Rpb24oYil7eFtiXT1hW2JdfSkseH1mdW5jdGlvbiBXKHgpe3JldHVybiBSKHgpJiYoeD1hKHgpKSxtJiZzKHgpJiZYKHgpLHh9ZnVuY3Rpb24gWCh4KXtmb3IodmFyIGEsYj0wO2E9eC5jaGFyQXQoYik7KXhbYisrXT1hfWZ1bmN0aW9uIFkoeCl7Vih0aGlzLFcoeCkpfVkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7dmFyIFo9Zy5hYnMsJD1nLnBvdyxfPWcuY2VpbCx4eD1nLmZsb29yLGF4PWcucm91bmQsYng9Zy5taW4sY3g9Zy5tYXg7ZnVuY3Rpb24gZHgoeCxhLGIpe3ZhciBjPSQoMTAsWihhfHwwKSk7cmV0dXJuIGE8MCYmKGM9MS9jKSwoYj1ifHxheCkoeCpjKS9jfXZhciBleCxmeD00OCxneD01NyxoeD02NTI5NixpeD02NTMwNSxqeD0iLiIsa3g9Iu+8jiIsbHg9IiwiLG14PSIiLG54PXt9O2Z1bmN0aW9uIG94KHgpe3JldHVybiB4Pj1meCYmeDw9Z3h8fHg+PWh4JiZ4PD1peH1mdW5jdGlvbiBweCgpe3ZhciB4LGE7Zm9yKGE9MDthPD05O2ErKyl4PXF4KGEraHgpLG14Kz14LG54W3hdPXF4KGErZngpO254W2x4XT0iIixueFtreF09angsbnhbanhdPWp4LGV4PWMoIlsiK214K2t4K2x4K2p4KyJdIiwiZyIpfWZ1bmN0aW9uIHF4KHgpe3JldHVybiBlLmZyb21DaGFyQ29kZSh4KX1mdW5jdGlvbiByeCgpe3JldHVybiJcdFxuXHZcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGfXHUyMDI4XHUyMDI544CAXHVmZWZmIn1mdW5jdGlvbiBzeCh4LGEpe3ZhciBiPSIiO2Zvcih4PXgudG9TdHJpbmcoKTthPjA7KTEmYSYmKGIrPXgpLChhPj49MSkmJih4Kz14KTtyZXR1cm4gYn1mdW5jdGlvbiB0eCh4LGEpe3ZhciBiLGM7cmV0dXJuIGI9eC5yZXBsYWNlKGV4LGZ1bmN0aW9uKHgpe3ZhciBhPW54W3hdO3JldHVybiBhPT09angmJihjPSEwKSxhfSksYz9wYXJzZUZsb2F0KGIpOnBhcnNlSW50KGIsYXx8MTApfWZ1bmN0aW9uIHV4KHgsYSxiLGMpe3ZhciBkPVooeCkudG9TdHJpbmcoY3x8MTApO3JldHVybiBkPXN4KCIwIixhLWQucmVwbGFjZSgvXC5cZCsvLCIiKS5sZW5ndGgpK2QsKGJ8fHg8MCkmJihkPSh4PDA/Ii0iOiIrIikrZCksZH1mdW5jdGlvbiB2eCh4KXtpZih4Pj0xMSYmeDw9MTMpcmV0dXJuInRoIjtzd2l0Y2goeCUxMCl7Y2FzZSAxOnJldHVybiJzdCI7Y2FzZSAyOnJldHVybiJuZCI7Y2FzZSAzOnJldHVybiJyZCI7ZGVmYXVsdDpyZXR1cm4idGgifX1mdW5jdGlvbiB3eCh4LGEpe3ZhciBiPSIiO2Z1bmN0aW9uIGMoeCxjKXsoeHx8YS5pbmRleE9mKGMpPi0xKSYmKGIrPWMpfXJldHVybiBhPWF8fCIiLGMoeC5tdWx0aWxpbmUsIm0iKSxjKHguaWdub3JlQ2FzZSwiaSIpLGMoeC5nbG9iYWwsImciKSxjKHguc3RpY2t5LCJ5IiksYn1mdW5jdGlvbiB5eCh4KXtyZXR1cm4gcyh4KXx8KHg9ZSh4KSkseC5yZXBsYWNlKC8oW1xcL1wnKis/fCgpXFtcXXt9Ll4kXSkvZywiXFwkMSIpfWZ1bmN0aW9uIHp4KHgsYSl7cmV0dXJuIHhbImdldCIrKHguX3V0Yz8iVVRDIjoiIikrYV0oKX1mdW5jdGlvbiBBeCh4LGEsYil7cmV0dXJuIHhbInNldCIrKHguX3V0YyYmIklTT1dlZWsiIT1hPyJVVEMiOiIiKSthXShiKX1mdW5jdGlvbiBCeCh4LGIpe3ZhciBjLGQsZixnLGgsaixrLGwsbT10eXBlb2YgeDtpZigic3RyaW5nIj09PW0pcmV0dXJuIHg7aWYoYz1TKHgsZj1pLmNhbGwoeCkpLGQ9dCh4LGYpLG51bGwhPXgmJmN8fGQpe2lmKGJ8fChiPVtdKSxiLmxlbmd0aD4xKWZvcihrPWIubGVuZ3RoO2stLTspaWYoYltrXT09PXgpcmV0dXJuIkNZQyI7Zm9yKGIucHVzaCh4KSxnPXgudmFsdWVPZigpK2UoeC5jb25zdHJ1Y3Rvciksaz0wLGw9KGg9ZD94OmEua2V5cyh4KS5zb3J0KCkpLmxlbmd0aDtrPGw7aysrKWcrPShqPWQ/azpoW2tdKStCeCh4W2pdLGIpO2IucG9wKCl9ZWxzZSBnPTEveD09LTEvMD8iLTAiOmUoeCYmeC52YWx1ZU9mP3gudmFsdWVPZigpOngpO3JldHVybiBtK2YrZ31mdW5jdGlvbiBDeCh4LGEpe3JldHVybiB4PT09YT8wIT09eHx8MS94PT0xL2E6ISghRHgoeCl8fCFEeChhKSkmJkJ4KHgpPT09QngoYSl9ZnVuY3Rpb24gRHgoeCl7dmFyIGE9Qih4KTtyZXR1cm4gby50ZXN0KGEpfHxTKHgsYSl9ZnVuY3Rpb24gRXgoeCxhLGIpe3ZhciBjLGQ9eC5sZW5ndGgsZT1hLmxlbmd0aCxmPSExIT09YVtlLTFdO3JldHVybiBlPihmPzE6Mik/KGM9W10sSihhLGZ1bmN0aW9uKGEpe2lmKHEoYSkpcmV0dXJuITE7Yy5wdXNoKEZ4KHgsZCxhLGYsYikpfSksYyk6RngoeCxkLGFbMF0sZixiKX1mdW5jdGlvbiBGeCh4LGEsYixjLGQpe3JldHVybiBjJiYoYiU9YSk8MCYmKGI9YStiKSxkP3guY2hhckF0KGIpOnhbYl19ZnVuY3Rpb24gR3goeCxiKXtGKGIsITAsITEseCxmdW5jdGlvbih4LGIpe3hbYisoImVxdWFsIj09PWI/InMiOiIiKV09ZnVuY3Rpb24oKXtyZXR1cm4gYVtiXS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoSihhcmd1bWVudHMpKSl9fSl9ZnVuY3Rpb24gSHgoeCxhLGIsYyl7dmFyIGQ9eC5sZW5ndGgsZT0tMT09YyxmPWU/ZC0xOjAsZz1KeChiLGYpO2ZvcihnPDAmJihnPWQrZyksKCFlJiZnPDB8fGUmJmc+PWQpJiYoZz1mKTtlJiZnPj0wfHwhZSYmZzxkOyl7aWYoeFtnXT09PWEpcmV0dXJuIGc7Zys9Y31yZXR1cm4tMX1mdW5jdGlvbiBJeCh4LGEsYixjKXt2YXIgZCxlLGY9eC5sZW5ndGgsZz0wLGg9TShiKTtpZihMKGEpLDA9PWYmJiFoKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZHVjZSBjYWxsZWQgb24gZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7Zm9yKGg/ZD1iOihkPXhbYz9mLTE6Z10sZysrKTtnPGY7KShlPWM/Zi1nLTE6ZylpbiB4JiYoZD1hKGQseFtlXSxlLHgpKSxnKys7cmV0dXJuIGR9ZnVuY3Rpb24gSngoeCxhKXtyZXR1cm4gaXNOYU4oeCk/YTpwYXJzZUludCh4Pj4wKX1mdW5jdGlvbiBLeCh4KXtpZigwPT09eC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBkZWZpbmVkIil9ZnVuY3Rpb24gTHgoKXt2YXIgeD1yeCgpLm1hdGNoKC9eXHMrJC8pO3RyeXtlLnByb3RvdHlwZS50cmltLmNhbGwoWzFdKX1jYXRjaChhKXt4PSExfUUoZSwhMCwheCx7dHJpbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCkudHJpbUxlZnQoKS50cmltUmlnaHQoKX0sdHJpbUxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKGMoIl5bIityeCgpKyJdKyIpLCIiKX0sdHJpbVJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZShjKCJbIityeCgpKyJdKyQiKSwiIil9fSl9ZnVuY3Rpb24gTXgoKXt2YXIgeD1uZXcgZChkLlVUQygxOTk5LDExLDMxKSksYT0iMTk5OS0xMi0zMVQwMDowMDowMC4wMDBaIixiPXgudG9JU09TdHJpbmcmJngudG9JU09TdHJpbmcoKT09PWE7RihkLCEwLCFiLCJ0b0lTT1N0cmluZyx0b0pTT04iLGZ1bmN0aW9uKHgsYSl7eFthXT1mdW5jdGlvbigpe3JldHVybiB1eCh0aGlzLmdldFVUQ0Z1bGxZZWFyKCksNCkrIi0iK3V4KHRoaXMuZ2V0VVRDTW9udGgoKSsxLDIpKyItIit1eCh0aGlzLmdldFVUQ0RhdGUoKSwyKSsiVCIrdXgodGhpcy5nZXRVVENIb3VycygpLDIpKyI6Iit1eCh0aGlzLmdldFVUQ01pbnV0ZXMoKSwyKSsiOiIrdXgodGhpcy5nZXRVVENTZWNvbmRzKCksMikrIi4iK3V4KHRoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCksMykrIloifX0pfWZ1bmN0aW9uIE54KHgpe3JldHVybiB4PWMoeCksZnVuY3Rpb24oYSl7cmV0dXJuIHgudGVzdChhKX19ZnVuY3Rpb24gT3goeCl7dmFyIGE9eC5nZXRUaW1lKCk7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiEoIXh8fCF4LmdldFRpbWUpJiZ4LmdldFRpbWUoKT09PWF9fWZ1bmN0aW9uIFB4KHgpe3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE9PT14fHx4LmNhbGwodGhpcyxhLGIsYyl9fWZ1bmN0aW9uIFF4KHgpe3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE9PT14fHx4LmNhbGwoYyxiLGEsYyl9fWZ1bmN0aW9uIFJ4KHgsYSl7dmFyIGI9e307cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXt2YXIgZjtpZighUShjKSlyZXR1cm4hMTtmb3IoZiBpbiB4KWlmKGJbZl09YltmXXx8VHgoeFtmXSxhKSwhMT09PWJbZl0uY2FsbChlLGNbZl0sZCxlKSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24gU3goeCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhPT09eHx8Q3goYSx4KX19ZnVuY3Rpb24gVHgoeCxhKXtpZihSKHgpKTtlbHNle2lmKHYoeCkpcmV0dXJuIE54KHgpO2lmKHUoeCkpcmV0dXJuIE94KHgpO2lmKHcoeCkpcmV0dXJuIGE/UXgoeCk6UHgoeCk7aWYoUyh4KSlyZXR1cm4gUngoeCxhKX1yZXR1cm4gU3goeCl9ZnVuY3Rpb24gVXgoeCxhLGIsYyl7cmV0dXJuIGE/YS5hcHBseT9hLmFwcGx5KGIsY3x8W10pOncoeFthXSk/eFthXS5jYWxsKHgpOnhbYV06eH1mdW5jdGlvbiBWeCh4LGEsYixjKXt2YXIgZCxlLGY9K3gubGVuZ3RoO2ZvcihiPDAmJihiPXgubGVuZ3RoK2IpLGU9aXNOYU4oYik/MDpiLCEwPT09YyYmKGYrPWUpO2U8Zjspe2lmKCEoKGQ9ZSV4Lmxlbmd0aClpbiB4KSlyZXR1cm4gV3goeCxhLGUsYyk7aWYoITE9PT1hLmNhbGwoeCx4W2RdLGQseCkpYnJlYWs7ZSsrfX1mdW5jdGlvbiBXeCh4LGEsYixjKXt2YXIgZCxlPVtdO2ZvcihkIGluIHgpWHgoeCxkKSYmZD49YiYmZS5wdXNoKHBhcnNlSW50KGQpKTtyZXR1cm4gZS5zb3J0KCkuZWFjaChmdW5jdGlvbihiKXtyZXR1cm4gYS5jYWxsKHgseFtiXSxiLHgpfSkseH1mdW5jdGlvbiBYeCh4LGEpe3JldHVybiBhIGluIHgmJll4KGEpPT1hJiY0Mjk0OTY3Mjk1IT1hfWZ1bmN0aW9uIFl4KHgpe3JldHVybiB4Pj4+MH1mdW5jdGlvbiBaeCh4LGEsYixjLGQsZSl7dmFyIGYsZyxoO3JldHVybiB4Lmxlbmd0aD4wJiYoaD1UeChhKSxWeCh4LGZ1bmN0aW9uKGEsYil7aWYoaC5jYWxsKGUsYSxiLHgpKXJldHVybiBmPWEsZz1iLCExfSxiLGMpKSxkP2c6Zn1mdW5jdGlvbiAkeCh4LGEpe3ZhciBiLGM9W10sZD17fTtyZXR1cm4gVngoeCxmdW5jdGlvbihlLGYpe2I9YT9VeChlLGEseCxbZSxmLHhdKTplLGVhKGQsYil8fGMucHVzaChlKX0pLGN9ZnVuY3Rpb24gX3goeCxhLGIpe3ZhciBjPVtdLGQ9e307cmV0dXJuIGEuZWFjaChmdW5jdGlvbih4KXtlYShkLHgpfSkseC5lYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPUJ4KHgpLGU9IUR4KHgpO2RhKGQsYSx4LGUpIT09YiYmKGZhKGQsYSx4LGUpLGMucHVzaCh4KSl9KSxjfWZ1bmN0aW9uIHhhKHgsYSxiKXthPWF8fDEvMCxiPWJ8fDA7dmFyIGM9W107cmV0dXJuIFZ4KHgsZnVuY3Rpb24oeCl7dCh4KSYmYjxhP2M9Yy5jb25jYXQoeGEoeCxhLGIrMSkpOmMucHVzaCh4KX0pLGN9ZnVuY3Rpb24gYWEoeCl7cmV0dXJuIE8oeCwibGVuZ3RoIikmJiFzKHgpJiYhUyh4KX1mdW5jdGlvbiBiYSh4KXtyZXR1cm4gTyh4LCJsZW5ndGgiKSYmKCJbb2JqZWN0IEFyZ3VtZW50c10iPT09Qih4KXx8ISF4LmNhbGxlZSl9ZnVuY3Rpb24gY2EoeCl7dmFyIGE9W107cmV0dXJuIEooeCxmdW5jdGlvbih4KXthPWEuY29uY2F0KHgpfSksYX1mdW5jdGlvbiBkYSh4LGEsYixjKXt2YXIgZD1hIGluIHg7cmV0dXJuIGMmJih4W2FdfHwoeFthXT1bXSksZD0tMSE9PXhbYV0uaW5kZXhPZihiKSksZH1mdW5jdGlvbiBlYSh4LGEpe3ZhciBiPUJ4KGEpLGM9IUR4KGEpLGQ9ZGEoeCxiLGEsYyk7cmV0dXJuIGM/eFtiXS5wdXNoKGEpOnhbYl09YSxkfWZ1bmN0aW9uIGZhKHgsYSxiLGMpe3ZhciBkLGU9MDtpZihjKWZvcihkPXhbYV07ZTxkLmxlbmd0aDspZFtlXT09PWI/ZC5zcGxpY2UoZSwxKTplKz0xO2Vsc2UgZGVsZXRlIHhbYV19ZnVuY3Rpb24gZ2EoeCxhLGMsZCl7dmFyIGUsZixnLGgsaT1bXSxqPSJtYXgiPT09YyxrPSJtaW4iPT09YyxsPWIuaXNBcnJheSh4KTtmb3IoZiBpbiB4KWlmKHguaGFzT3duUHJvcGVydHkoZikpe2lmKE4oaD1VeChlPXhbZl0sYSx4LGw/W2UscGFyc2VJbnQoZikseF06W10pKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29tcGFyZSB3aXRoIHVuZGVmaW5lZCIpO2g9PT1nP2kucHVzaChlKTooTihnKXx8aiYmaD5nfHxrJiZoPGcpJiYoaT1bZV0sZz1oKX1yZXR1cm4gbHx8KGk9eGEoaSwxKSksZD9pOmlbMF19ZnVuY3Rpb24gaGEoeCxhKXt2YXIgYyxkLGUsZixnLGgsaT0wLGo9MCxrPWJbbmFdLGw9YltvYV0sbT1iW3BhXSxuPWJbbWFdLG89YltxYV07eD1pYSh4LGssbCksYT1pYShhLGssbCk7ZG97ZT1qYSh4LGksbSksZj1qYShhLGksbSksYz1rYShlLG4pLGQ9a2EoZixuKSwtMT09PWN8fC0xPT09ZD8oYz14LmNoYXJDb2RlQXQoaSl8fG51bGwsZD1hLmNoYXJDb2RlQXQoaSl8fG51bGwsbyYmb3goYykmJm94KGQpJiYoYz10eCh4LnNsaWNlKGkpKSxkPXR4KGEuc2xpY2UoaSkpKSk6KGc9ZSE9PXguY2hhckF0KGkpKSE9PShoPWYhPT1hLmNoYXJBdChpKSkmJjA9PT1qJiYoaj1nLWgpLGkrPTF9d2hpbGUobnVsbCE9YyYmbnVsbCE9ZCYmYz09PWQpO3JldHVybiBjPT09ZD9qOmMtZH1mdW5jdGlvbiBpYSh4LGEsYil7cmV0dXJuIHMoeCl8fCh4PWUoeCkpLGImJih4PXgudG9Mb3dlckNhc2UoKSksYSYmKHg9eC5yZXBsYWNlKGEsIiIpKSx4fWZ1bmN0aW9uIGphKHgsYSxiKXt2YXIgYz14LmNoYXJBdChhKTtyZXR1cm4gYltjXXx8Y31mdW5jdGlvbiBrYSh4LGEpe3JldHVybiB4P2EuaW5kZXhPZih4KTpudWxsfUMoKSxweCgpLEUoYSwhMSwhMSx7a2V5czpmdW5jdGlvbih4KXt2YXIgYT1bXTtpZighUSh4KSYmIXYoeCkmJiF3KHgpKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCByZXF1aXJlZCIpO3JldHVybiBUKHgsZnVuY3Rpb24oeCxiKXthLnB1c2goeCl9KSxhfX0pLEUoYiwhMSwhMSx7aXNBcnJheTpmdW5jdGlvbih4KXtyZXR1cm4gdCh4KX19KSxFKGIsITAsITEse2V2ZXJ5OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0wO2ZvcihLeChhcmd1bWVudHMpO2M8Yjspe2lmKGMgaW4gdGhpcyYmIXguY2FsbChhLHRoaXNbY10sYyx0aGlzKSlyZXR1cm4hMTtjKyt9cmV0dXJuITB9LHNvbWU6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmxlbmd0aCxjPTA7Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyl7aWYoYyBpbiB0aGlzJiZ4LmNhbGwoYSx0aGlzW2NdLGMsdGhpcykpcmV0dXJuITA7YysrfXJldHVybiExfSxtYXA6ZnVuY3Rpb24oeCxhKXthPWFyZ3VtZW50c1sxXTt2YXIgYj10aGlzLmxlbmd0aCxjPTAsZD1uZXcgQXJyYXkoYik7Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyljIGluIHRoaXMmJihkW2NdPXguY2FsbChhLHRoaXNbY10sYyx0aGlzKSksYysrO3JldHVybiBkfSxmaWx0ZXI6ZnVuY3Rpb24oeCl7dmFyIGE9YXJndW1lbnRzWzFdLGI9dGhpcy5sZW5ndGgsYz0wLGQ9W107Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyljIGluIHRoaXMmJnguY2FsbChhLHRoaXNbY10sYyx0aGlzKSYmZC5wdXNoKHRoaXNbY10pLGMrKztyZXR1cm4gZH0saW5kZXhPZjpmdW5jdGlvbih4KXt2YXIgYT1hcmd1bWVudHNbMV07cmV0dXJuIHModGhpcyk/dGhpcy5pbmRleE9mKHgsYSk6SHgodGhpcyx4LGEsMSl9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKHgpe3ZhciBhPWFyZ3VtZW50c1sxXTtyZXR1cm4gcyh0aGlzKT90aGlzLmxhc3RJbmRleE9mKHgsYSk6SHgodGhpcyx4LGEsLTEpfSxmb3JFYWNoOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMubGVuZ3RoLGI9MCxjPWFyZ3VtZW50c1sxXTtmb3IoTCh4KTtiPGE7KWIgaW4gdGhpcyYmeC5jYWxsKGMsdGhpc1tiXSxiLHRoaXMpLGIrK30scmVkdWNlOmZ1bmN0aW9uKHgpe3JldHVybiBJeCh0aGlzLHgsYXJndW1lbnRzWzFdKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oeCl7cmV0dXJuIEl4KHRoaXMseCxhcmd1bWVudHNbMV0sITApfX0pLEUoRnVuY3Rpb24sITAsITEse2JpbmQ6ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Sihhcmd1bWVudHMsbnVsbCwxKTtpZighdyh0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gYSBub24tZnVuY3Rpb24iKTtyZXR1cm4oYT1mdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KGIucHJvdG90eXBlJiZ0aGlzIGluc3RhbmNlb2YgYj90aGlzOngsYy5jb25jYXQoSihhcmd1bWVudHMpKSl9KS5wcm90b3R5cGU9dGhpcy5wcm90b3R5cGUsYX19KSxFKGQsITEsITEse25vdzpmdW5jdGlvbigpe3JldHVybihuZXcgZCkuZ2V0VGltZSgpfX0pLEx4KCksTXgoKTt2YXIgbGE9IkFscGhhbnVtZXJpY1NvcnQiLG1hPSJBbHBoYW51bWVyaWNTb3J0T3JkZXIiLG5hPSJBbHBoYW51bWVyaWNTb3J0SWdub3JlIixvYT0iQWxwaGFudW1lcmljU29ydElnbm9yZUNhc2UiLHBhPSJBbHBoYW51bWVyaWNTb3J0RXF1aXZhbGVudHMiLHFhPSJBbHBoYW51bWVyaWNTb3J0TmF0dXJhbCI7ZnVuY3Rpb24gcmEoKXt2YXIgeD1iLnByb3RvdHlwZS5tYXAsYT1mdW5jdGlvbigpe3ZhciB4PWFyZ3VtZW50cztyZXR1cm4geC5sZW5ndGg+MCYmIXcoeFswXSl9O0YoYiwhMCxhLCJldmVyeSxhbGwsc29tZSxmaWx0ZXIsYW55LG5vbmUsZmluZCxmaW5kSW5kZXgiLGZ1bmN0aW9uKHgsYSl7dmFyIGM9Yi5wcm90b3R5cGVbYV07eFthXT1mdW5jdGlvbih4KXt2YXIgYT1UeCh4KTtyZXR1cm4gYy5jYWxsKHRoaXMsZnVuY3Rpb24oeCxiKXtyZXR1cm4gYSh4LGIsdGhpcyl9KX19KSxFKGIsITAsYSx7bWFwOmZ1bmN0aW9uKGEpe3JldHVybiB4LmNhbGwodGhpcyxmdW5jdGlvbih4LGIpe3JldHVybiBVeCh4LGEsdGhpcyxbeCxiLHRoaXNdKX0pfX0pfWZ1bmN0aW9uIHNhKCl7dmFyIHg9IkHDgcOAw4LDg8SEQkPEhsSMw4dExI7DkEXDicOIxJrDisOLxJhGR8SeSMSxScONw4zEsMOOw49KS0zFgU1OxYPFh8ORT8OTw5LDlFBRUsWYU8WaxaDFnlTFpFXDmsOZxa7Dm8OcVldYWcOdWsW5xbvFvcOew4bFksOYw5XDhcOEw5YiLGE9IkHDgcOAw4LDg8OELEPDhyxFw4nDiMOKw4ssScONw4zEsMOOw48sT8OTw5LDlMOVw5YsU8OfLFXDmsOZw5vDnCI7YlttYV09eC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4K3gudG9Mb3dlckNhc2UoKX0pLmpvaW4oIiIpO3ZhciBjPXt9O1Z4KGEuc3BsaXQoIiwiKSxmdW5jdGlvbih4KXt2YXIgYT14LmNoYXJBdCgwKTtWeCh4LnNsaWNlKDEpLnNwbGl0KCIiKSxmdW5jdGlvbih4KXtjW3hdPWEsY1t4LnRvTG93ZXJDYXNlKCldPWEudG9Mb3dlckNhc2UoKX0pfSksYltxYV09ITAsYltvYV09ITAsYltwYV09Y31mdW5jdGlvbiB0YSh4KXtyZXR1cm4gYS5rZXlzKFcoeCkpfWZ1bmN0aW9uIHVhKHgsYyl7RihhLCExLCEwLHgsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgsZCxlKXt2YXIgZixnLGg9dGEoeCk7cmV0dXJuIGN8fChnPVR4KGQsITApKSxmPWIucHJvdG90eXBlW2FdLmNhbGwoaCxmdW5jdGlvbihhKXt2YXIgYj14W2FdO3JldHVybiBjP1V4KGIsZCx4LFthLGIseF0pOmcoYixhLHgpfSxlKSx0KGYpJiYoZj1mLnJlZHVjZShmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFbYl09eFtiXSxhfSx7fSkpLGZ9fSksR3goeCxZKX1mdW5jdGlvbiB2YSgpe2JbbGFdPWhhfUUoYiwhMSwhMCx7Y3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHg9W107cmV0dXJuIEooYXJndW1lbnRzLGZ1bmN0aW9uKGEpeyhiYShhKXx8YWEoYSkpJiYoYT1iLnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCkpLHg9eC5jb25jYXQoYSl9KSx4fX0pLEUoYiwhMCwhMSx7ZmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBMKHgpLFp4KHRoaXMseCwwLCExLCExLGEpfSxmaW5kSW5kZXg6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gTCh4KSxOKGI9WngodGhpcyx4LDAsITEsITAsYSkpPy0xOmJ9fSksRShiLCEwLCEwLHtmaW5kRnJvbTpmdW5jdGlvbih4LGEsYil7cmV0dXJuIFp4KHRoaXMseCxhLGIpfSxmaW5kSW5kZXhGcm9tOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gTihhPVp4KHRoaXMseCxhLGIsITApKT8tMTphfSxmaW5kQWxsOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkPVtdO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoYz1UeCh4KSxWeCh0aGlzLGZ1bmN0aW9uKHgsYSxiKXtjKHgsYSxiKSYmZC5wdXNoKHgpfSxhLGIpKSxkfSxjb3VudDpmdW5jdGlvbih4KXtyZXR1cm4gTih4KT90aGlzLmxlbmd0aDp0aGlzLmZpbmRBbGwoeCkubGVuZ3RofSxyZW1vdmVBdDpmdW5jdGlvbih4LGEpe3JldHVybiBOKHgpP3RoaXM6KE4oYSkmJihhPXgpLHRoaXMuc3BsaWNlKHgsYS14KzEpLHRoaXMpfSxpbmNsdWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5hZGQoeCxhKX0sZXhjbHVkZTpmdW5jdGlvbigpe3JldHVybiBiLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcy5jbG9uZSgpLGFyZ3VtZW50cyl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIFYoW10sdGhpcyl9LHVuaXF1ZTpmdW5jdGlvbih4KXtyZXR1cm4gJHgodGhpcyx4KX0sZmxhdHRlbjpmdW5jdGlvbih4KXtyZXR1cm4geGEodGhpcyx4KX0sdW5pb246ZnVuY3Rpb24oKXtyZXR1cm4gJHgodGhpcy5jb25jYXQoY2EoYXJndW1lbnRzKSkpfSxpbnRlcnNlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gX3godGhpcyxjYShhcmd1bWVudHMpLCExKX0sc3VidHJhY3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIF94KHRoaXMsY2EoYXJndW1lbnRzKSwhMCl9LGF0OmZ1bmN0aW9uKCl7cmV0dXJuIEV4KHRoaXMsYXJndW1lbnRzKX0sZmlyc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIE4oeCk/dGhpc1swXTooeDwwJiYoeD0wKSx0aGlzLnNsaWNlKDAseCkpfSxsYXN0OmZ1bmN0aW9uKHgpe2lmKE4oeCkpcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGgtMV07dmFyIGE9dGhpcy5sZW5ndGgteDwwPzA6dGhpcy5sZW5ndGgteDtyZXR1cm4gdGhpcy5zbGljZShhKX0sZnJvbTpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zbGljZSh4KX0sdG86ZnVuY3Rpb24oeCl7cmV0dXJuIE4oeCkmJih4PXRoaXMubGVuZ3RoKSx0aGlzLnNsaWNlKDAseCl9LG1pbjpmdW5jdGlvbih4LGEpe3JldHVybiBnYSh0aGlzLHgsIm1pbiIsYSl9LG1heDpmdW5jdGlvbih4LGEpe3JldHVybiBnYSh0aGlzLHgsIm1heCIsYSl9LGxlYXN0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGdhKHRoaXMuZ3JvdXBCeS5hcHBseSh0aGlzLFt4XSksImxlbmd0aCIsIm1pbiIsYSl9LG1vc3Q6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gZ2EodGhpcy5ncm91cEJ5LmFwcGx5KHRoaXMsW3hdKSwibGVuZ3RoIiwibWF4IixhKX0sc3VtOmZ1bmN0aW9uKHgpe3ZhciBhPXg/dGhpcy5tYXAoeCk6dGhpcztyZXR1cm4gYS5sZW5ndGg+MD9hLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4K2F9KTowfSxhdmVyYWdlOmZ1bmN0aW9uKHgpe3ZhciBhPXg/dGhpcy5tYXAoeCk6dGhpcztyZXR1cm4gYS5sZW5ndGg+MD9hLnN1bSgpL2EubGVuZ3RoOjB9LGluR3JvdXBzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aD4xLGM9dGhpcyxkPVtdLGU9Xyh0aGlzLmxlbmd0aC94KTtyZXR1cm4gVSh4LGZ1bmN0aW9uKHgpe3ZhciBmPXgqZSxnPWMuc2xpY2UoZixmK2UpO2ImJmcubGVuZ3RoPGUmJlUoZS1nLmxlbmd0aCxmdW5jdGlvbigpe2c9Zy5hZGQoYSl9KSxkLnB1c2goZyl9KSxkfSxpbkdyb3Vwc09mOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz1bXSxkPXRoaXMubGVuZ3RoLGU9dGhpcztyZXR1cm4gMD09PWR8fDA9PT14P2U6KE4oeCkmJih4PTEpLE4oYSkmJihhPW51bGwpLFUoXyhkL3gpLGZ1bmN0aW9uKGQpe2ZvcihiPWUuc2xpY2UoeCpkLHgqZCt4KTtiLmxlbmd0aDx4OyliLnB1c2goYSk7Yy5wdXNoKGIpfSksYyl9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09dGhpcy5jb21wYWN0KCkubGVuZ3RofSxzb3J0Qnk6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmNsb25lKCk7cmV0dXJuIGIuc29ydChmdW5jdGlvbihjLGQpe3ZhciBlLGY7cmV0dXJuIGU9VXgoYyx4LGIsW2NdKSxmPVV4KGQseCxiLFtkXSksKHMoZSkmJnMoZik/aGEoZSxmKTplPGY/LTE6ZT5mPzE6MCkqKGE/LTE6MSl9KSxifSxyYW5kb21pemU6ZnVuY3Rpb24oKXtmb3IodmFyIHgsYSxiPXRoaXMuY29uY2F0KCksYz1iLmxlbmd0aDtjOyl4PWcucmFuZG9tKCkqY3wwLGE9YlstLWNdLGJbY109Ylt4XSxiW3hdPWE7cmV0dXJuIGJ9LHppcDpmdW5jdGlvbigpe3ZhciB4PUooYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYV0uY29uY2F0KHgubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBiIGluIHg/eFtiXTpudWxsfSkpfSl9LHNhbXBsZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnJhbmRvbWl6ZSgpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/YS5zbGljZSgwLHgpOmFbMF19LGVhY2g6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBWeCh0aGlzLHgsYSxiKSx0aGlzfSxhZGQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gcihmKGEpKSYmIWlzTmFOKGEpfHwoYT10aGlzLmxlbmd0aCksYi5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHRoaXMsW2EsMF0uY29uY2F0KHgpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3JldHVybiBKKGFyZ3VtZW50cyxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPVR4KGEpO2I8eC5sZW5ndGg7KWMoeFtiXSxiLHgpP3guc3BsaWNlKGIsMSk6YisrfSkseH0sY29tcGFjdDpmdW5jdGlvbih4KXt2YXIgYT1bXTtyZXR1cm4gVngodGhpcyxmdW5jdGlvbihiLGMpe3QoYik/YS5wdXNoKGIuY29tcGFjdCgpKTp4JiZiP2EucHVzaChiKTp4fHxudWxsPT1ifHxiLnZhbHVlT2YoKSE9Yi52YWx1ZU9mKCl8fGEucHVzaChiKX0pLGF9LGdyb3VwQnk6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXMsZD17fTtyZXR1cm4gVngoYyxmdW5jdGlvbihhLGUpe2I9VXgoYSx4LGMsW2EsZSxjXSksZFtiXXx8KGRbYl09W10pLGRbYl0ucHVzaChhKX0pLGEmJlQoZCxhKSxkfSxub25lOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYW55LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KSxFKGIsITAsITAse2FsbDpiLnByb3RvdHlwZS5ldmVyeSxhbnk6Yi5wcm90b3R5cGUuc29tZSxpbnNlcnQ6Yi5wcm90b3R5cGUuYWRkfSksRShhLCExLCEwLHttYXA6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9e307Zm9yKGIgaW4geClQKHgsYikmJihjPXhbYl0sZFtiXT1VeChjLGEseCxbYixjLHhdKSk7cmV0dXJuIGR9LHJlZHVjZTpmdW5jdGlvbih4KXt2YXIgYT10YSh4KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIHhbYV19KTtyZXR1cm4gYS5yZWR1Y2UuYXBwbHkoYSxKKGFyZ3VtZW50cyxudWxsLDEpKX0sZWFjaDpmdW5jdGlvbih4LGEpe3JldHVybiBMKGEpLFQoeCxhKSx4fSxzaXplOmZ1bmN0aW9uKHgpe3JldHVybiB0YSh4KS5sZW5ndGh9fSk7dmFyIHdhLHlhLHphPSJhbnksYWxsLG5vbmUsY291bnQsZmluZCxmaW5kQWxsLGlzRW1wdHkiLnNwbGl0KCIsIiksQWE9InN1bSxhdmVyYWdlLG1pbixtYXgsbGVhc3QsbW9zdCIuc3BsaXQoIiwiKSxCYT0ibWFwLHJlZHVjZSxzaXplIi5zcGxpdCgiLCIpLENhPXphLmNvbmNhdChBYSkuY29uY2F0KEJhKTtyYSgpLHNhKCksdWEoemEpLHVhKEFhLCEwKSxHeChCYSxZKSx2YSgpO3ZhciBEYSxFYSxGYSxHYT1bImFtcG0iLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiYW1wbSIsInV0YyIsIm9mZnNldF9zaWduIiwib2Zmc2V0X2hvdXJzIiwib2Zmc2V0X21pbnV0ZXMiLCJhbXBtIl0sSGE9Iig/OlssLl1cXGQrKT8iLElhPSJbMC01XVxcZCIrSGEsSmE9Iih7dH0pP1xccyooIisoIlxcZHsxLDJ9IitIYSkrIikoPzp7aH0oIitJYSsiKT97bX0oPzo6PygiK0lhKyIpe3N9KT9cXHMqKD86KHt0fSl8KFopfCg/OihbKy1dKShcXGR7MiwyfSkoPzo6PyhcXGR7MiwyfSkpPyk/KT98XFxzKih7dH0pKSIsS2E9IuOAh+S4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4hyIsTGE9e30sTWE9W10sTmE9e30sT2E9e3l5eXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHp4KHgsIkZ1bGxZZWFyIil9LHl5OmZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJGdWxsWWVhciIpJTEwMH0sb3JkOmZ1bmN0aW9uKHgpe3ZhciBhPXp4KHgsIkRhdGUiKTtyZXR1cm4gYSt2eChhKX0sdHo6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZ2V0VVRDT2Zmc2V0KCl9LGlzb3R6OmZ1bmN0aW9uKHgpe3JldHVybiB4LmdldFVUQ09mZnNldCghMCl9LFo6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZ2V0VVRDT2Zmc2V0KCl9LFpaOmZ1bmN0aW9uKHgpe3JldHVybiB4LmdldFVUQ09mZnNldCgpLnJlcGxhY2UoLyhcZHsyfSkkLywiOiQxIil9fSxQYT1be25hbWU6InllYXIiLG1ldGhvZDoiRnVsbFllYXIiLGFtYmlndW91czohMCxtdWx0aXBsaWVyOmZ1bmN0aW9uKHgpe3JldHVybiAyNCooMzY1Kyh4P3guaXNMZWFwWWVhcigpPzE6MDouMjUpKSo2MCo2MCoxZTN9fSx7bmFtZToibW9udGgiLGVycm9yOi45MTksbWV0aG9kOiJNb250aCIsYW1iaWd1b3VzOiEwLG11bHRpcGxpZXI6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPTMwLjQzNzU7cmV0dXJuIHgmJmE8PShiPXguZGF5c0luTW9udGgoKSkuZGF5cygpJiYoYz1iKSwyNCpjKjYwKjYwKjFlM319LHtuYW1lOiJ3ZWVrIixtZXRob2Q6IklTT1dlZWsiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gNjA0OGU1fX0se25hbWU6ImRheSIsZXJyb3I6Ljk1OCxtZXRob2Q6IkRhdGUiLGFtYmlndW91czohMCxtdWx0aXBsaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIDg2NGU1fX0se25hbWU6ImhvdXIiLG1ldGhvZDoiSG91cnMiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gMzZlNX19LHtuYW1lOiJtaW51dGUiLG1ldGhvZDoiTWludXRlcyIsbXVsdGlwbGllcjpmdW5jdGlvbigpe3JldHVybiA2ZTR9fSx7bmFtZToic2Vjb25kIixtZXRob2Q6IlNlY29uZHMiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gMWUzfX0se25hbWU6Im1pbGxpc2Vjb25kIixtZXRob2Q6Ik1pbGxpc2Vjb25kcyIsbXVsdGlwbGllcjpmdW5jdGlvbigpe3JldHVybiAxfX1dLFFhPXt9O2Z1bmN0aW9uIFJhKHgpe1YodGhpcyx4KSx0aGlzLmNvbXBpbGVkRm9ybWF0cz1NYS5jb25jYXQoKX1mdW5jdGlvbiBTYSh4LGEpe3ZhciBiO2lmKHMoeCl8fCh4PSIiKSxiPVFhW3hdfHxRYVt4LnNsaWNlKDAsMildLCExPT09YSYmIWIpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBsb2NhbGUuIik7cmV0dXJuIGJ8fHlhfWZ1bmN0aW9uIFRhKHgsYSl7dmFyIGIsYztmdW5jdGlvbiBkKHgpe3ZhciBhPWJbeF07cyhhKT9iW3hdPWEuc3BsaXQoIiwiKTphfHwoYlt4XT1bXSl9ZnVuY3Rpb24gZSh4LGEpe3JldHVybih4PXguc3BsaXQoIisiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZSgvKC4rKTooLispJC8sZnVuY3Rpb24oeCxhLGIpe3JldHVybiBiLnNwbGl0KCJ8IikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBhK3h9KS5qb2luKCJ8Iil9KX0pLmpvaW4oInwiKSkuc3BsaXQoInwiKS5mb3JFYWNoKGEpfWZ1bmN0aW9uIGYoeCxhLGMpe3ZhciBkPVtdO2JbeF0uZm9yRWFjaChmdW5jdGlvbih4LGIpe2EmJih4Kz0iKyIreC5zbGljZSgwLDMpKSxlKHgsZnVuY3Rpb24oeCxhKXtkW2EqYytiXT14LnRvTG93ZXJDYXNlKCl9KX0pLGJbeF09ZH1mdW5jdGlvbiBnKHgsYSxjKXt2YXIgZD0iXFxkeyIreCsiLCIrYSsifSI7cmV0dXJuIGMmJihkKz0ifCg/OiIrV2EoYi5udW1iZXJzKSsiKSsiKSxkfWZ1bmN0aW9uIGgoKXt2YXIgeD1bIi0/XFxkKyJdLmNvbmNhdChiLmFydGljbGVzKTtyZXR1cm4gYi5udW1iZXJzJiYoeD14LmNvbmNhdChiLm51bWJlcnMpKSxXYSh4KX1mdW5jdGlvbiBpKHgsYSl7Ylt4XT1iW3hdfHxhfWZ1bmN0aW9uIGooKXt2YXIgeD1bXTtiLm1vZGlmaWVyc0J5TmFtZT17fSxiLm1vZGlmaWVycy5wdXNoKHtuYW1lOiJkYXkiLHNyYzoieWVzdGVyZGF5Iix2YWx1ZTotMX0pLGIubW9kaWZpZXJzLnB1c2goe25hbWU6ImRheSIsc3JjOiJ0b2RheSIsdmFsdWU6MH0pLGIubW9kaWZpZXJzLnB1c2goe25hbWU6ImRheSIsc3JjOiJ0b21vcnJvdyIsdmFsdWU6MX0pLGIubW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9YS5uYW1lO2UoYS5zcmMsZnVuY3Rpb24oZCl7dmFyIGU9YltjXTtiLm1vZGlmaWVyc0J5TmFtZVtkXT1hLHgucHVzaCh7bmFtZTpjLHNyYzpkLHZhbHVlOmEudmFsdWV9KSxiW2NdPWU/ZSsifCIrZDpkfSl9KSxiLmRheSs9InwiK1dhKGIud2Vla2RheXMpLGIubW9kaWZpZXJzPXh9cmV0dXJuIGI9bmV3IFJhKGEpLGQoIm1vZGlmaWVycyIpLCJtb250aHMsd2Vla2RheXMsdW5pdHMsbnVtYmVycyxhcnRpY2xlcyx0b2tlbnMsdGltZU1hcmtlcixhbXBtLHRpbWVTdWZmaXhlcyxkYXRlUGFyc2UsdGltZVBhcnNlIi5zcGxpdCgiLCIpLmZvckVhY2goZCksZigibW9udGhzIixjPSFiLm1vbnRoU3VmZml4LDEyKSxmKCJ3ZWVrZGF5cyIsYyw3KSxmKCJ1bml0cyIsITEsOCksZigibnVtYmVycyIsITEsMTApLGkoImNvZGUiLHgpLGkoImRhdGUiLGcoMSwyLGIuZGlnaXREYXRlKSksaSgieWVhciIsIidcXGR7Mn18IitnKDQsNCkpLGkoIm51bSIsaCgpKSxqKCksYi5tb250aFN1ZmZpeCYmKGIubW9udGg9ZygxLDIpLGIubW9udGhzPSIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiIuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgrYi5tb250aFN1ZmZpeH0pKSxiLmZ1bGxfbW9udGg9ZygxLDIpKyJ8IitXYShiLm1vbnRocyksYi50aW1lU3VmZml4ZXMubGVuZ3RoPjAmJmIuYWRkRm9ybWF0KHRiKEphLGIpLCExLEdhKSxiLmFkZEZvcm1hdCgie2RheX0iLCEwKSxiLmFkZEZvcm1hdCgie21vbnRofSIrKGIubW9udGhTdWZmaXh8fCIiKSksYi5hZGRGb3JtYXQoInt5ZWFyfSIrKGIueWVhclN1ZmZpeHx8IiIpKSxiLnRpbWVQYXJzZS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2IuYWRkRm9ybWF0KHgsITApfSksYi5kYXRlUGFyc2UuZm9yRWFjaChmdW5jdGlvbih4KXtiLmFkZEZvcm1hdCh4KX0pLFFhW3hdPWJ9ZnVuY3Rpb24gVWEoeCxhLGIsZCl7eC5jb21waWxlZEZvcm1hdHMudW5zaGlmdCh7dmFyaWFudDpkLGxvY2FsZTp4LHJlZzpjKCJeIithKyIkIiwiaSIpLHRvOmJ9KX1mdW5jdGlvbiBWYSh4KXtyZXR1cm4geC5zbGljZSgwLDEpLnRvVXBwZXJDYXNlKCkreC5zbGljZSgxKX1mdW5jdGlvbiBXYSh4KXtyZXR1cm4geC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISF4fSkuam9pbigifCIpfWZ1bmN0aW9uIFhhKCl7dmFyIHg9ZC5TdWdhck5ld0RhdGU7cmV0dXJuIHg/eCgpOm5ldyBkfWZ1bmN0aW9uIFlhKHgsYSl7dmFyIGI7cmV0dXJuIFEoeFswXSk/eDpyKHhbMF0pJiYhcih4WzFdKT9beFswXV06cyh4WzBdKSYmYT9bWmEoeFswXSkseFsxXV06KGI9e30sRWEuZm9yRWFjaChmdW5jdGlvbihhLGMpe2JbYS5uYW1lXT14W2NdfSksW2JdKX1mdW5jdGlvbiBaYSh4LGEpe3ZhciBiLGM9e307cmV0dXJuKGI9eC5tYXRjaCgvXihcZCspP1xzPyhcdys/KXM/JC9pKSkmJihOKGEpJiYoYT1wYXJzZUludChiWzFdKXx8MSksY1tiWzJdLnRvTG93ZXJDYXNlKCldPWEpLGN9ZnVuY3Rpb24gJGEoeCxhLGIpe3ZhciBjLGQ7Zm9yKE4oYikmJihiPUZhLmxlbmd0aCksYz1hfHwwO2M8YiYmITEhPT14KChkPUZhW2NdKS5uYW1lLGQsYyk7YysrKTt9ZnVuY3Rpb24gX2EoeCxhKXt2YXIgYixjLGQ9e307cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhLGUpe04oYj14W2UrMV0pfHwiIj09PWJ8fCgieWVhciI9PT1hJiYoZC55ZWFyQXNTdHJpbmc9Yi5yZXBsYWNlKC8nLywiIikpLGM9cGFyc2VGbG9hdChiLnJlcGxhY2UoLycvLCIiKS5yZXBsYWNlKC8sLywiLiIpKSxkW2FdPWlzTmFOKGMpP2IudG9Mb3dlckNhc2UoKTpjKX0pLGR9ZnVuY3Rpb24geGIoeCl7cmV0dXJuIGFiKHg9eC50cmltKCkucmVwbGFjZSgvXmp1c3QgKD89bm93KXxcLiskL2ksIiIpKX1mdW5jdGlvbiBhYih4KXtyZXR1cm4geC5yZXBsYWNlKERhLGZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9MCxmPTE7cmV0dXJuIGE/eDooYi5zcGxpdCgiIikucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9TGFbeF0sYj1hPjk7Yj8oYyYmKGUrPWYpLGYqPWEvKGR8fDEpLGQ9YSk6KCExPT09YyYmKGYqPTEwKSxlKz1mKmEpLGM9Yn0pLGMmJihlKz1mKSxlKX0pfWZ1bmN0aW9uIGJiKHgsYSxiLGMpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG87ZnVuY3Rpb24gcCh4KXtoLnB1c2goeCl9ZnVuY3Rpb24gcSgpe2guZm9yRWFjaChmdW5jdGlvbih4KXt4LmNhbGwoKX0pfWZ1bmN0aW9uIHQoKXt2YXIgeD1lLmdldFdlZWtkYXkoKTtlLnNldFdlZWtkYXkoNyooai5udW0tMSkrKHg+bT9tKzc6bSkpfWZ1bmN0aW9uIHYoKXt2YXIgeD1pLm1vZGlmaWVyc0J5TmFtZVtqLmVkZ2VdOyRhKGZ1bmN0aW9uKHgpe2lmKE0oalt4XSkpcmV0dXJuIGs9eCwhMX0sNCksInllYXIiPT09az9qLnNwZWNpZmljaXR5PSJtb250aCI6Im1vbnRoIiE9PWsmJiJ3ZWVrIiE9PWt8fChqLnNwZWNpZmljaXR5PSJkYXkiKSxlWyh4LnZhbHVlPDA/ImVuZE9mIjoiYmVnaW5uaW5nT2YiKStWYShrKV0oKSwtMj09PXgudmFsdWUmJmUucmVzZXQoKX1mdW5jdGlvbiB3KCl7dmFyIHg7JGEoZnVuY3Rpb24oYSxiLGMpe2lmKCJkYXkiPT09YSYmKGE9ImRhdGUiKSxNKGpbYV0pKXtpZihjPj1sKXJldHVybiB3YihlKSwhMTsoeD14fHx7fSlbYV09althXSxkZWxldGUgalthXX19KSx4JiZwKGZ1bmN0aW9uKCl7ZS5zZXQoeCwhMCl9KX1yZXR1cm4gZT1YYSgpLGg9W10sZS51dGMoYyksdSh4KT9lLnV0Yyh4LmlzVVRDKCkpLnNldFRpbWUoeC5nZXRUaW1lKCkpOnIoeCk/ZS5zZXRUaW1lKHgpOlEoeCk/KGUuc2V0KHgsITApLGo9eCk6cyh4KSYmKGc9U2EoYSkseD14Yih4KSxnJiZUKGcuZ2V0Rm9ybWF0cygpLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9eC5tYXRjaChjLnJlZyk7aWYoZClyZXR1cm4gaT1jLmxvY2FsZSxqPV9hKGQsYy50byxpKSxpLmNhY2hlZEZvcm1hdD1jLGoudXRjJiZlLnV0YygpLGoudGltZXN0YW1wPyhqPWoudGltZXN0YW1wLCExKTooYy52YXJpYW50JiYhcyhqLm1vbnRoKSYmKHMoai5kYXRlKXx8Zy5oYXNWYXJpYW50KGEpKSYmKG89ai5tb250aCxqLm1vbnRoPWouZGF0ZSxqLmRhdGU9byksai55ZWFyJiYyPT09ai55ZWFyQXNTdHJpbmcubGVuZ3RoJiYoai55ZWFyPWNiKGoueWVhcikpLGoubW9udGgmJihqLm1vbnRoPWkuZ2V0TW9udGgoai5tb250aCksai5zaGlmdCYmIWoudW5pdCYmKGoudW5pdD1pLnVuaXRzWzddKSksai53ZWVrZGF5JiZqLmRhdGU/ZGVsZXRlIGoud2Vla2RheTpqLndlZWtkYXkmJihqLndlZWtkYXk9aS5nZXRXZWVrZGF5KGoud2Vla2RheSksai5zaGlmdCYmIWoudW5pdCYmKGoudW5pdD1pLnVuaXRzWzVdKSksai5kYXkmJihvPWkubW9kaWZpZXJzQnlOYW1lW2ouZGF5XSk/KGouZGF5PW8udmFsdWUsZS5yZXNldCgpLGY9ITApOmouZGF5JiYobT1pLmdldFdlZWtkYXkoai5kYXkpKT4tMSYmKGRlbGV0ZSBqLmRheSxqLm51bSYmai5tb250aD8ocCh0KSxqLmRheT0xKTpqLndlZWtkYXk9bSksai5kYXRlJiYhcihqLmRhdGUpJiYoai5kYXRlPWkuZ2V0TnVtZXJpY0RhdGUoai5kYXRlKSksaS5tYXRjaFBNKGouYW1wbSkmJmouaG91cjwxMj9qLmhvdXIrPTEyOmkubWF0Y2hBTShqLmFtcG0pJiYxMj09PWouaG91ciYmKGouaG91cj0wKSwoIm9mZnNldF9ob3VycyJpbiBqfHwib2Zmc2V0X21pbnV0ZXMiaW4gaikmJihlLnV0YygpLGoub2Zmc2V0X21pbnV0ZXM9ai5vZmZzZXRfbWludXRlc3x8MCxqLm9mZnNldF9taW51dGVzKz02MCpqLm9mZnNldF9ob3VycywiLSI9PT1qLm9mZnNldF9zaWduJiYoai5vZmZzZXRfbWludXRlcyo9LTEpLGoubWludXRlLT1qLm9mZnNldF9taW51dGVzKSxqLnVuaXQmJihmPSEwLG49aS5nZXROdW1iZXIoai5udW0pLGw9aS5nZXRVbml0SW5kZXgoai51bml0KSxrPXdhLnVuaXRzW2xdLHcoKSxqLnNoaWZ0JiYobio9KG89aS5tb2RpZmllcnNCeU5hbWVbai5zaGlmdF0pP28udmFsdWU6MCksai5zaWduJiYobz1pLm1vZGlmaWVyc0J5TmFtZVtqLnNpZ25dKSYmKG4qPW8udmFsdWUpLE0oai53ZWVrZGF5KSYmKGUuc2V0KHt3ZWVrZGF5Omoud2Vla2RheX0sITApLGRlbGV0ZSBqLndlZWtkYXkpLGpba109KGpba118fDApK24pLGouZWRnZSYmcCh2KSwiLSI9PT1qLnllYXJfc2lnbiYmKGoueWVhcio9LTEpLCRhKGZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1qW3hdLGQ9YyUxO2QmJihqW0ZhW2ItMV0ubmFtZV09YXgoZCooInNlY29uZCI9PT14PzFlMzo2MCkpLGpbeF09eHgoYykpfSwxLDQpLCExKX0pLGo/Zj9lLmFkdmFuY2Uoaik6KGUuX3V0YyYmZS5yZXNldCgpLHNiKGUsaiwhMCwhMSxiKSk6KCJub3ciIT09eCYmKGU9bmV3IGQoeCkpLGMmJmUuYWRkTWludXRlcygtZS5nZXRUaW1lem9uZU9mZnNldCgpKSkscSgpLGUudXRjKCExKSkse2RhdGU6ZSxzZXQ6an19ZnVuY3Rpb24gY2IoeCl7cmV0dXJuIDEwMCpheCh6eChYYSgpLCJGdWxsWWVhciIpLzEwMCktMTAwKmF4KHgvMTAwKSt4fWZ1bmN0aW9uIGRiKHgpe3ZhciBhPXp4KHg9eC5jbG9uZSgpLCJEYXkiKXx8NztyZXR1cm4geC5hZGREYXlzKDQtYSkucmVzZXQoKSwxK3h4KHguZGF5c1NpbmNlKHguY2xvbmUoKS5iZWdpbm5pbmdPZlllYXIoKSkvNyl9ZnVuY3Rpb24gZWIoeCl7dmFyIGEsYj1aKHgpLGM9YixkPTA7cmV0dXJuICRhKGZ1bmN0aW9uKHgsZSxmKXsoYT14eChkeChiL2UubXVsdGlwbGllcigpLDEpKSk+PTEmJihjPWEsZD1mKX0sMSksW2MsZCx4XX1mdW5jdGlvbiBmYih4KXt2YXIgYT1lYih4Lm1pbGxpc2Vjb25kc0Zyb21Ob3coKSk7cmV0dXJuIGdiKHgsYSkmJihhWzBdPVooeC5tb250aHNGcm9tTm93KCkpLGFbMV09NiksYX1mdW5jdGlvbiBnYih4LGEpe3JldHVybiA2PT09YVsxXXx8NT09PWFbMV0mJjQ9PT1hWzBdJiZ4LmRheXNGcm9tTm93KCk+PVhhKCkuZGF5c0luTW9udGgoKX1mdW5jdGlvbiBoYih4LGEpe3ZhciBiPWZ1bmN0aW9uKHgsYSl7dmFyIGI9engoeCwiSG91cnMiKTtyZXR1cm4gU2EoYSkuYW1wbVt4eChiLzEyKV18fCIifTtsYigidCIsYiwxKSxsYigidHQiLGIpLGxiKCJUIixiLDEsMSksbGIoIlRUIixiLG51bGwsMil9ZnVuY3Rpb24gaWIoeCxhKXt2YXIgYj1mdW5jdGlvbih4LGEpe3ZhciBiPXp4KHgsIkRheSIpO3JldHVybiBTYShhKS53ZWVrZGF5c1tiXX07bGIoImRvdyIsYiwzKSxsYigiRG93IixiLDMsMSksbGIoIndlZWtkYXkiLGIpLGxiKCJXZWVrZGF5IixiLG51bGwsMSl9ZnVuY3Rpb24gamIoeCxhKXtrYigibW9uIiwwLDMpLGtiKCJtb250aCIsMCksa2IoIm1vbnRoMiIsMSksa2IoIm1vbnRoMyIsMil9ZnVuY3Rpb24ga2IoeCxhLGIpe3ZhciBjPWZ1bmN0aW9uKHgsYil7dmFyIGM9engoeCwiTW9udGgiKTtyZXR1cm4gU2EoYikubW9udGhzW2MrMTIqYV19O2xiKHgsYyxiKSxsYihWYSh4KSxjLGIsMSl9ZnVuY3Rpb24gbGIoeCxhLGIsYyl7T2FbeF09ZnVuY3Rpb24oeCxkKXt2YXIgZT1hKHgsZCk7cmV0dXJuIGImJihlPWUuc2xpY2UoMCxiKSksYyYmKGU9ZS5zbGljZSgwLGMpLnRvVXBwZXJDYXNlKCkrZS5zbGljZShjKSksZX19ZnVuY3Rpb24gbWIoeCxhLGIpe09hW3hdPWEsT2FbeCt4XT1mdW5jdGlvbih4LGIpe3JldHVybiB1eChhKHgsYiksMil9LGImJihPYVt4K3greF09ZnVuY3Rpb24oeCxiKXtyZXR1cm4gdXgoYSh4LGIpLDMpfSxPYVt4K3greCt4XT1mdW5jdGlvbih4LGIpe3JldHVybiB1eChhKHgsYiksNCl9KX1mdW5jdGlvbiBuYih4KXt2YXIgYT14Lm1hdGNoKC8oXHtcdytcfSl8W157fV0rL2cpO05hW3hdPWEubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxhY2UoL1x7KFx3KylcfS8sZnVuY3Rpb24oYSxiKXtyZXR1cm4geD1PYVtiXXx8YixifSkseH0pfWZ1bmN0aW9uIG9iKHgsYSxiKXt2YXIgYyxkLGUsZixnPSIiO2ZvcihlPTAsZD0oYz1OYVthXSkubGVuZ3RoO2U8ZDtlKyspZj1jW2VdLGcrPXcoZik/Zih4LGIpOmY7cmV0dXJuIGd9ZnVuY3Rpb24gcGIoeCxhLGIsYyl7dmFyIGQ7cmV0dXJuIHguaXNWYWxpZCgpPyhEYXRlW2FdP2E9RGF0ZVthXTp3KGEpJiYoZD1mYih4KSxhPWEuYXBwbHkoeCxkLmNvbmNhdChTYShjKSkpKSwhYSYmYj8oMD09PShkPWR8fGZiKHgpKVsxXSYmKGRbMV09MSxkWzBdPTEpLFNhKGMpLmdldFJlbGF0aXZlRm9ybWF0KGQpKTooInNob3J0IiE9PShhPWF8fCJsb25nIikmJiJsb25nIiE9PWEmJiJmdWxsIiE9PWF8fChhPVNhKGMpW2FdKSxOYVthXXx8bmIoYSksb2IoeCxhLGMpKSk6IkludmFsaWQgRGF0ZSJ9ZnVuY3Rpb24gcWIoeCxhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosaz0wLGw9MCxtPTA7cmV0dXJuIGM+MCYmKGw9bT1jLGk9ITApLCEhKGU9YmIoYSxiLG51bGwsZCkpLmRhdGUuaXNWYWxpZCgpJiYoZS5zZXQmJmUuc2V0LnNwZWNpZmljaXR5JiYoUGEuZm9yRWFjaChmdW5jdGlvbihhLGIpe2EubmFtZT09PWUuc2V0LnNwZWNpZmljaXR5JiYoaz1hLm11bHRpcGxpZXIoZS5kYXRlLHgtZS5kYXRlKS0xKX0pLGo9VmEoZS5zZXQuc3BlY2lmaWNpdHkpLChlLnNldC5lZGdlfHxlLnNldC5zaGlmdCkmJmUuZGF0ZVsiYmVnaW5uaW5nT2YiK2pdKCksIm1vbnRoIj09PWUuc2V0LnNwZWNpZmljaXR5JiYoaD1lLmRhdGUuY2xvbmUoKVsiZW5kT2YiK2pdKCkuZ2V0VGltZSgpKSwhaSYmZS5zZXQuc2lnbiYmIm1pbGxpc2Vjb25kIiE9ZS5zZXQuc3BlY2lmaWNpdHkmJihsPTUwLG09LTUwKSksZj14LmdldFRpbWUoKSxnPWUuZGF0ZS5nZXRUaW1lKCksaD1yYih4LGcsaD1ofHxnK2spLGY+PWctbCYmZjw9aCttKX1mdW5jdGlvbiByYih4LGEsYil7dmFyIGMsZSxmLGc7cmV0dXJuIGM9bmV3IGQoYSksMjMhPT16eChlPW5ldyBkKGIpLnV0Yyh4LmlzVVRDKCkpLCJIb3VycyIpJiYoZj1jLmdldFRpbWV6b25lT2Zmc2V0KCkpIT09KGc9ZS5nZXRUaW1lem9uZU9mZnNldCgpKSYmKGIrPShnLWYpLm1pbnV0ZXMoKSksYn1mdW5jdGlvbiBzYih4LGEsYixjLGQpe3ZhciBlO2Z1bmN0aW9uIGYoeCl7cmV0dXJuIE0oYVt4XSk/YVt4XTphW3grInMiXX1mdW5jdGlvbiBnKHgpe3JldHVybiBNKGYoeCkpfWZ1bmN0aW9uIGgoeCxhKXtyZXR1cm4gZyh4KXx8YSYmZygid2Vla2RheSIpfWZ1bmN0aW9uIGkoKXtzd2l0Y2goZCl7Y2FzZS0xOnJldHVybiB4PlhhKCk7Y2FzZSAxOnJldHVybiB4PFhhKCl9fWlmKHIoYSkmJmMpYT17bWlsbGlzZWNvbmRzOmF9O2Vsc2UgaWYocihhKSlyZXR1cm4geC5zZXRUaW1lKGEpLHg7aWYoTShhLmRhdGUpJiYoYS5kYXk9YS5kYXRlKSwkYShmdW5jdGlvbihjLGQsZil7dmFyIGk9ImRheSI9PT1jO2lmKGgoYyxpKSlyZXR1cm4gYS5zcGVjaWZpY2l0eT1jLGU9K2YsITE7IWJ8fCJ3ZWVrIj09PWN8fGkmJmcoIndlZWsiKXx8QXgoeCxkLm1ldGhvZCxpPzE6MCl9KSxQYS5mb3JFYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGUsaD1iLm5hbWUsaT1iLm1ldGhvZDtQYVtkLTFdO04oZT1mKGgpKXx8KGM/KCJ3ZWVrIj09PWgmJihlPShhLmRheXx8MCkrNyplLGk9IkRhdGUiKSxlPWUqYyt6eCh4LGkpKToibW9udGgiPT09aCYmZygiZGF5IikmJkF4KHgsIkRhdGUiLDE1KSxBeCh4LGksZSksYyYmIm1vbnRoIj09PWgmJnViKHgsZSkpfSksIWMmJiFnKCJkYXkiKSYmZygid2Vla2RheSIpKXt2YXIgaj1mKCJ3ZWVrZGF5Iik7eC5zZXRXZWVrZGF5KGopfXJldHVybiBpKCkmJiRhKGZ1bmN0aW9uKGEsYil7aWYoKGIuYW1iaWd1b3VzfHwid2VlayI9PT1hJiZnKCJ3ZWVrZGF5IikpJiYhaChhLCJkYXkiPT09YSkpcmV0dXJuIHhbYi5hZGRNZXRob2RdKGQpLCExfSxlKzEpLHh9ZnVuY3Rpb24gdGIoeCxhLGIpe3ZhciBjLGQ9e2g6MCxtOjEsczoyfTtyZXR1cm4gYT1hfHx3YSx4LnJlcGxhY2UoL3soW2Etel0pfS9nLGZ1bmN0aW9uKHgsZSl7dmFyIGY9W10sZz0iaCI9PT1lLGg9ZyYmIWI7cmV0dXJuInQiPT09ZT9hLmFtcG0uam9pbigifCIpOihnJiZmLnB1c2goIjoiKSwoYz1hLnRpbWVTdWZmaXhlc1tkW2VdXSkmJmYucHVzaChjKyJcXHMqIiksMD09PWYubGVuZ3RoPyIiOiIoPzoiK2Yuam9pbigifCIpKyIpIisoaD8iIjoiPyIpKX0pfWZ1bmN0aW9uIHViKHgsYSl7YTwwJiYoYT1hJTEyKzEyKSxhJTEyIT16eCh4LCJNb250aCIpJiZBeCh4LCJEYXRlIiwwKX1mdW5jdGlvbiB2Yih4LGEsYil7dmFyIGMsZDtyZXR1cm4gcih4WzFdKT9jPVlhKHgpWzBdOihjPXhbMF0sZD14WzFdKSxiYihjLGQsYSxiKS5kYXRlfWZ1bmN0aW9uIHdiKHgpe3guc2V0VGltZShOYU4pfWZ1bmN0aW9uIHliKCl7RmE9UGEuY29uY2F0KCkucmV2ZXJzZSgpLChFYT1QYS5jb25jYXQoKSkuc3BsaWNlKDIsMSl9ZnVuY3Rpb24gemIoKXtGKGQsITAsITAsUGEsZnVuY3Rpb24oeCxhLGIpe3ZhciBjLGUsZj1hLm5hbWUsZz1WYShmKSxoPWEubXVsdGlwbGllcigpO2Z1bmN0aW9uIGkoeCl7dmFyIGI9eC9oLGM9YiUxLGQ9YS5lcnJvcnx8Ljk5OTtyZXR1cm4gYyYmWihjJTEpPmQmJihiPWF4KGIpKSxiPDA/XyhiKTp4eChiKX1hLmFkZE1ldGhvZD0iYWRkIitnKyJzIixjPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGkodGhpcy5nZXRUaW1lKCktZC5jcmVhdGUoeCxhKS5nZXRUaW1lKCkpfSxlPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGkoZC5jcmVhdGUoeCxhKS5nZXRUaW1lKCktdGhpcy5nZXRUaW1lKCkpfSx4W2YrInNBZ28iXT1lLHhbZisic1VudGlsIl09ZSx4W2YrInNTaW5jZSJdPWMseFtmKyJzRnJvbU5vdyJdPWMseFthLmFkZE1ldGhvZF09ZnVuY3Rpb24oeCxhKXt2YXIgYj17fTtyZXR1cm4gYltmXT14LHRoaXMuYWR2YW5jZShiLGEpfSxIYihhLGgpLGI8MyYmWyJMYXN0IiwiVGhpcyIsIk5leHQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3hbImlzIithK2ddPWZ1bmN0aW9uKCl7cmV0dXJuIHFiKHRoaXMsYSsiICIrZiwiZW4iKX19KSxiPDQmJih4WyJiZWdpbm5pbmdPZiIrZ109ZnVuY3Rpb24oKXt2YXIgeD17fTtzd2l0Y2goZil7Y2FzZSJ5ZWFyIjp4LnllYXI9engodGhpcywiRnVsbFllYXIiKTticmVhaztjYXNlIm1vbnRoIjp4Lm1vbnRoPXp4KHRoaXMsIk1vbnRoIik7YnJlYWs7Y2FzZSJkYXkiOnguZGF5PXp4KHRoaXMsIkRhdGUiKTticmVhaztjYXNlIndlZWsiOngud2Vla2RheT0wfXJldHVybiB0aGlzLnNldCh4LCEwKX0seFsiZW5kT2YiK2ddPWZ1bmN0aW9uKCl7dmFyIHg9e2hvdXJzOjIzLG1pbnV0ZXM6NTksc2Vjb25kczo1OSxtaWxsaXNlY29uZHM6OTk5fTtzd2l0Y2goZil7Y2FzZSJ5ZWFyIjp4Lm1vbnRoPTExLHguZGF5PTMxO2JyZWFrO2Nhc2UibW9udGgiOnguZGF5PXRoaXMuZGF5c0luTW9udGgoKTticmVhaztjYXNlIndlZWsiOngud2Vla2RheT02fXJldHVybiB0aGlzLnNldCh4LCEwKX0pfSl9ZnVuY3Rpb24gQWIoKXt3YS5hZGRGb3JtYXQoIihbKy1dKT8oXFxkezQsNH0pWy0uXT97ZnVsbF9tb250aH1bLS5dPyhcXGR7MSwyfSk/IiwhMCxbInllYXJfc2lnbiIsInllYXIiLCJtb250aCIsImRhdGUiXSwhMSwhMCksd2EuYWRkRm9ybWF0KCIoXFxkezEsMn0pWy0uXFwvXXtmdWxsX21vbnRofSg/OlstLlxcL10oXFxkezIsNH0pKT8iLCEwLFsiZGF0ZSIsIm1vbnRoIiwieWVhciJdLCEwKSx3YS5hZGRGb3JtYXQoIntmdWxsX21vbnRofVstLl0oXFxkezQsNH0pIiwhMSxbIm1vbnRoIiwieWVhciJdKSx3YS5hZGRGb3JtYXQoIlxcL0RhdGVcXCgoXFxkKyg/OlsrLV1cXGR7NCw0fSk/KVxcKVxcLyIsITEsWyJ0aW1lc3RhbXAiXSksd2EuYWRkRm9ybWF0KHRiKEphLHdhKSwhMSxHYSksTWE9d2EuY29tcGlsZWRGb3JtYXRzLnNsaWNlKDAsNykucmV2ZXJzZSgpLHdhLmNvbXBpbGVkRm9ybWF0cz13YS5jb21waWxlZEZvcm1hdHMuc2xpY2UoNykuY29uY2F0KE1hKX1mdW5jdGlvbiBCYigpe21iKCJmIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiTWlsbGlzZWNvbmRzIil9LCEwKSxtYigicyIsZnVuY3Rpb24oeCl7cmV0dXJuIHp4KHgsIlNlY29uZHMiKX0pLG1iKCJtIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiTWludXRlcyIpfSksbWIoImgiLGZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJIb3VycyIpJTEyfHwxMn0pLG1iKCJIIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiSG91cnMiKX0pLG1iKCJkIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiRGF0ZSIpfSksbWIoIk0iLGZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJNb250aCIpKzF9KSxoYigpLGliKCksamIoKSxPYS5tcz1PYS5mLE9hLm1pbGxpc2Vjb25kcz1PYS5mLE9hLnNlY29uZHM9T2EucyxPYS5taW51dGVzPU9hLm0sT2EuaG91cnM9T2EuaCxPYVsiMjRociJdPU9hLkgsT2FbIjEyaHIiXT1PYS5oLE9hLmRhdGU9T2EuZCxPYS5kYXk9T2EuZCxPYS55ZWFyPU9hLnl5eXl9ZnVuY3Rpb24gQ2IoKXtGKGQsITAsITAsInNob3J0LGxvbmcsZnVsbCIsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgpe3JldHVybiBwYih0aGlzLGEsITEseCl9fSl9ZnVuY3Rpb24gRGIoKXtLYS5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbih4LGEpe2E+OSYmKGE9JCgxMCxhLTkpKSxMYVt4XT1hfSksVihMYSxueCksRGE9YygiKFvmnJ/pgLHlkahdKT8oWyIrS2ErbXgrIl0rKSg/IeaYqCkiLCJnIil9ZnVuY3Rpb24gRWIoKXt2YXIgeD0idG9kYXkseWVzdGVyZGF5LHRvbW9ycm93LHdlZWtkYXksd2Vla2VuZCxmdXR1cmUscGFzdCIuc3BsaXQoIiwiKSxhPXdhLndlZWtkYXlzLnNsaWNlKDAsNyksYj13YS5tb250aHMuc2xpY2UoMCwxMik7RihkLCEwLCEwLHguY29uY2F0KGEpLmNvbmNhdChiKSxmdW5jdGlvbih4LGEpe3hbImlzIitWYShhKV09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaXMoYSwwLHgpfX0pfWZ1bmN0aW9uIEZiKCl7ZC51dGN8fChkLnV0Yz17Y3JlYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cywwLCEwKX0scGFzdDpmdW5jdGlvbigpe3JldHVybiB2Yihhcmd1bWVudHMsLTEsITApfSxmdXR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4gdmIoYXJndW1lbnRzLDEsITApfX0pfWZ1bmN0aW9uIEdiKCl7RShkLCExLCEwLHtSRkMxMTIzOiJ7RG93fSwge2RkfSB7TW9ufSB7eXl5eX0ge0hIfTp7bW19Ontzc30ge3R6fSIsUkZDMTAzNjoie1dlZWtkYXl9LCB7ZGR9LXtNb259LXt5eX0ge0hIfTp7bW19Ontzc30ge3R6fSIsSVNPODYwMV9EQVRFOiJ7eXl5eX0te01NfS17ZGR9IixJU084NjAxX0RBVEVUSU1FOiJ7eXl5eX0te01NfS17ZGR9VHtISH06e21tfTp7c3N9LntmZmZ9e2lzb3R6fSJ9KX1mdW5jdGlvbiBIYih4LGEpe3ZhciBiPXgubmFtZSxjPXt9O2Z1bmN0aW9uIGQoKXtyZXR1cm4gYXgodGhpcyphKX1mdW5jdGlvbiBlKCl7cmV0dXJuIHZiKGFyZ3VtZW50cylbeC5hZGRNZXRob2RdKHRoaXMpfWZ1bmN0aW9uIGcoKXtyZXR1cm4gdmIoYXJndW1lbnRzKVt4LmFkZE1ldGhvZF0oLXRoaXMpfWNbYl09ZCxjW2IrInMiXT1kLGNbYisiQmVmb3JlIl09ZyxjW2IrInNCZWZvcmUiXT1nLGNbYisiQWdvIl09ZyxjW2IrInNBZ28iXT1nLGNbYisiQWZ0ZXIiXT1lLGNbYisic0FmdGVyIl09ZSxjW2IrIkZyb21Ob3ciXT1lLGNbYisic0Zyb21Ob3ciXT1lLGYuZXh0ZW5kKGMpfWZ1bmN0aW9uIEliKHgsYSl7dGhpcy5zdGFydD1MYih4KSx0aGlzLmVuZD1MYihhKX1mdW5jdGlvbiBKYih4KXtyZXR1cm4gcyh4KT94LmNoYXJDb2RlQXQoMCk6eH1mdW5jdGlvbiBLYih4KXtyZXR1cm4gbnVsbD09eD94OnUoeCk/eC5nZXRUaW1lKCk6eC52YWx1ZU9mKCl9ZnVuY3Rpb24gTGIoeCl7cmV0dXJuIHUoeCk/bmV3IGQoeC5nZXRUaW1lKCkpOktiKHgpfWZ1bmN0aW9uIE1iKHgpe3ZhciBhPUtiKHgpO3JldHVybiEhYXx8MD09PWF9ZnVuY3Rpb24gTmIoeCl7dmFyIGEsYixjO3JldHVybiByKHgpP3g6KGE9eC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eKFxkKyk/XHM/KFx3Kz8pcz8kL2kpLGI9cGFyc2VJbnQoYVsxXSl8fDEsKGM9YVsyXS5zbGljZSgwLDEpLnRvVXBwZXJDYXNlKCkrYVsyXS5zbGljZSgxKSkubWF0Y2goL2hvdXJ8bWludXRlfHNlY29uZC9pKT9jKz0icyI6IlllYXIiPT09Yz9jPSJGdWxsWWVhciI6IkRheSI9PT1jJiYoYz0iRGF0ZSIpLFtiLGNdKX1mdW5jdGlvbiBPYih4LGEpe3ZhciBiLGMsZSxmO3JldHVybiByKGEpP25ldyBkKHguZ2V0VGltZSgpK2EpOihiPWFbMF0sZT16eCh4LGM9YVsxXSksQXgoZj1uZXcgZCh4LmdldFRpbWUoKSksYyxlK2IpLGYpfWZ1bmN0aW9uIFBiKHgsYSl7cmV0dXJuIGUuZnJvbUNoYXJDb2RlKHguY2hhckNvZGVBdCgwKSthKX1mdW5jdGlvbiBRYih4LGEpe3JldHVybiB4K2F9ZnVuY3Rpb24gUmIoeCxhLGIsYyxkKXthIT09MS8wJiYoeC50aW1lcnN8fCh4LnRpbWVycz1bXSkscihhKXx8KGE9MSkseC5fY2FuY2VsZWQ9ITEseC50aW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5fY2FuY2VsZWR8fGIuYXBwbHkoYyxkfHxbXSl9LGEpKSl9ZnVuY3Rpb24gU2IoeCxhLGIsYyxkLGUpe3ZhciBmLGcsaD14LnRvRml4ZWQoMjApLGk9aC5zZWFyY2goL1wuLyktaC5zZWFyY2goL1sxLTldLyk7cmV0dXJuIGk+MCYmKGktPTEpLGc9Y3goYngoeHgoaS8zKSwhMT09PWQ/Yi5sZW5ndGg6ZCksLWMpLGY9Yi5jaGFyQXQoZytjLTEpLGk8LTkmJihnPS0zLGE9WihpKS05LGY9Yi5zbGljZSgwLDEpKSxkeCh4LyhlPyQoMiwxMCpnKTokKDEwLDMqZykpLGF8fDApLmZvcm1hdCgpK2YudHJpbSgpfWZ1bmN0aW9uIFRiKCl7ZnVuY3Rpb24geCh4KXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZHgodGhpcyxhLHgpOngodGhpcyl9fUUoZiwhMCwhMCx7Y2VpbDp4KF8pLHJvdW5kOngoYXgpLGZsb29yOngoeHgpfSksRihmLCEwLCEwLCJhYnMscG93LHNpbixhc2luLGNvcyxhY29zLHRhbixhdGFuLGV4cCxwb3csc3FydCIsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgsYil7cmV0dXJuIGdbYV0odGhpcyx4LGIpfX0pfVJhLnByb3RvdHlwZT17Z2V0TW9udGg6ZnVuY3Rpb24oeCl7cmV0dXJuIHIoeCk/eC0xOnRoaXMubW9udGhzLmluZGV4T2YoeCklMTJ9LGdldFdlZWtkYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud2Vla2RheXMuaW5kZXhPZih4KSU3fSxnZXROdW1iZXI6ZnVuY3Rpb24oeCl7dmFyIGE7cmV0dXJuIHIoeCk/eDp4JiYtMSE9PShhPXRoaXMubnVtYmVycy5pbmRleE9mKHgpKT8oYSsxKSUxMDoxfSxnZXROdW1lcmljRGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB4LnJlcGxhY2UoYyh0aGlzLm51bSwiZyIpLGZ1bmN0aW9uKHgpe3JldHVybiBhLmdldE51bWJlcih4KXx8IiJ9KX0sZ2V0VW5pdEluZGV4OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnVuaXRzLmluZGV4T2YoeCklOH0sZ2V0UmVsYXRpdmVGb3JtYXQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY29udmVydEFkanVzdGVkVG9Gb3JtYXQoeCx4WzJdPjA/ImZ1dHVyZSI6InBhc3QiKX0sZ2V0RHVyYXRpb246ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY29udmVydEFkanVzdGVkVG9Gb3JtYXQoZWIoeCksImR1cmF0aW9uIil9LGhhc1ZhcmlhbnQ6ZnVuY3Rpb24oeCl7cmV0dXJuImVuIj09PSh4PXh8fHRoaXMuY29kZSl8fCJlbi1VUyI9PT14fHx0aGlzLnZhcmlhbnR9LG1hdGNoQU06ZnVuY3Rpb24oeCl7cmV0dXJuIHg9PT10aGlzLmFtcG1bMF19LG1hdGNoUE06ZnVuY3Rpb24oeCl7cmV0dXJuIHgmJng9PT10aGlzLmFtcG1bMV19LGNvbnZlcnRBZGp1c3RlZFRvRm9ybWF0OmZ1bmN0aW9uKHgsYSl7dmFyIGIsYyxkLGU9eFswXSxmPXhbMV0sZz14WzJdLGg9dGhpc1thXXx8dGhpcy5yZWxhdGl2ZTtyZXR1cm4gdyhoKT9oLmNhbGwodGhpcyxlLGYsZyxhKTooZD10aGlzLnBsdXJhbCYmZT4xPzE6MCxjPXRoaXMudW5pdHNbOCpkK2ZdfHx0aGlzLnVuaXRzW2ZdLHRoaXMuY2FwaXRhbGl6ZVVuaXQmJihjPVZhKGMpKSxiPXRoaXMubW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4ic2lnbiI9PXgubmFtZSYmeC52YWx1ZT09KGc+MD8xOi0xKX0pWzBdLGgucmVwbGFjZSgvXHsoLio/KVx9L2csZnVuY3Rpb24oeCxhKXtzd2l0Y2goYSl7Y2FzZSJudW0iOnJldHVybiBlO2Nhc2UidW5pdCI6cmV0dXJuIGM7Y2FzZSJzaWduIjpyZXR1cm4gYi5zcmN9fSkpfSxnZXRGb3JtYXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGVkRm9ybWF0P1t0aGlzLmNhY2hlZEZvcm1hdF0uY29uY2F0KHRoaXMuY29tcGlsZWRGb3JtYXRzKTp0aGlzLmNvbXBpbGVkRm9ybWF0c30sYWRkRm9ybWF0OmZ1bmN0aW9uKHgsYSxiLGMsZCl7dmFyIGUsZixnLGg9Ynx8W10saT10aGlzO3g9KHg9eC5yZXBsYWNlKC9ccysvZywiWywuIF0qIikpLnJlcGxhY2UoL1x7KFteLF0rPylcfS9nLGZ1bmN0aW9uKHgsYSl7dmFyIGMsZCxlLGY9YS5tYXRjaCgvXD8kLyksZz1hLm1hdGNoKC9eKFxkKylcPz8kLyksaj1hLm1hdGNoKC8oXGQpKD86LShcZCkpPy8pLGs9YS5yZXBsYWNlKC9bXmEtel0rJC8sIiIpO3JldHVybiBnP2M9aS50b2tlbnNbZ1sxXV06aVtrXT9jPWlba106aVtrKyJzIl0mJihjPWlbaysicyJdLGomJihkPVtdLGMuZm9yRWFjaChmdW5jdGlvbih4LGEpe3ZhciBiPWElKGkudW5pdHM/ODpjLmxlbmd0aCk7Yj49alsxXSYmYjw9KGpbMl18fGpbMV0pJiZkLnB1c2goeCl9KSxjPWQpLGM9V2EoYykpLGc/ZT0iKD86IitjKyIpIjooYnx8aC5wdXNoKGspLGU9IigiK2MrIikiKSxmJiYoZSs9Ij8iKSxlfSksYT8oZT10YihKYSxpLGQpLGY9WyJ0IiwiW1xcc1xcdTMwMDBdIl0uY29uY2F0KGkudGltZU1hcmtlciksZz14Lm1hdGNoKC9cXGRce1xkLFxkXH1cKStcPz8kLyksVWEoaSwiKD86IitlKyIpWyxcXHNcXHUzMDAwXSs/Iit4LEdhLmNvbmNhdChoKSxjKSxVYShpLHgrIig/OlssXFxzXSooPzoiK2Yuam9pbigifCIpKyhnPyIrIjoiKiIpKyIpIitlKyIpPyIsaC5jb25jYXQoR2EpLGMpKTpVYShpLHgsaCxjKX19LEUoZCwhMSwhMCx7Y3JlYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cyl9LHBhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdmIoYXJndW1lbnRzLC0xKX0sZnV0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cywxKX0sYWRkTG9jYWxlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIFRhKHgsYSl9LHNldExvY2FsZTpmdW5jdGlvbih4LGEpe3ZhciBiPVNhKHgsITEpO3JldHVybiB5YT1iLHgmJnghPWIuY29kZSYmKGIuY29kZT14KSxifSxnZXRMb2NhbGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHg/U2EoeCwhMSk6eWF9LGFkZEZvcm1hdDpmdW5jdGlvbih4LGEsYil7VWEoU2EoYikseCxhKX19KSxFKGQsITAsITAse3NldDpmdW5jdGlvbigpe3ZhciB4PVlhKGFyZ3VtZW50cyk7cmV0dXJuIHNiKHRoaXMseFswXSx4WzFdKX0sc2V0V2Vla2RheTpmdW5jdGlvbih4KXtpZighTih4KSlyZXR1cm4gQXgodGhpcywiRGF0ZSIsengodGhpcywiRGF0ZSIpK3gtengodGhpcywiRGF5IikpfSxzZXRJU09XZWVrOmZ1bmN0aW9uKHgpe3ZhciBhPXp4KHRoaXMsIkRheSIpfHw3O2lmKCFOKHgpKXJldHVybiB0aGlzLnNldCh7bW9udGg6MCxkYXRlOjR9KSx0aGlzLnNldCh7d2Vla2RheToxfSkseD4xJiZ0aGlzLmFkZFdlZWtzKHgtMSksMSE9PWEmJnRoaXMuYWR2YW5jZSh7ZGF5czphLTF9KSx0aGlzLmdldFRpbWUoKX0sZ2V0SVNPV2VlazpmdW5jdGlvbigpe3JldHVybiBkYih0aGlzKX0sYmVnaW5uaW5nT2ZJU09XZWVrOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5nZXREYXkoKTtyZXR1cm4gMD09PXg/eD0tNjoxIT09eCYmKHg9MSksdGhpcy5zZXRXZWVrZGF5KHgpLHRoaXMucmVzZXQoKX0sZW5kT2ZJU09XZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLmdldERheSgpJiZ0aGlzLnNldFdlZWtkYXkoNyksdGhpcy5lbmRPZkRheSgpfSxnZXRVVENPZmZzZXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5fdXRjPzA6dGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLGI9ITA9PT14PyI6IjoiIjtyZXR1cm4hYSYmeD8iWiI6dXgoeHgoLWEvNjApLDIsITApK2IrdXgoWihhJTYwKSwyKX0sdXRjOmZ1bmN0aW9uKHgpe3JldHVybiBJKHRoaXMsIl91dGMiLCEwPT09eHx8MD09PWFyZ3VtZW50cy5sZW5ndGgpLHRoaXN9LGlzVVRDOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl91dGN8fDA9PT10aGlzLmdldFRpbWV6b25lT2Zmc2V0KCl9LGFkdmFuY2U6ZnVuY3Rpb24oKXt2YXIgeD1ZYShhcmd1bWVudHMsITApO3JldHVybiBzYih0aGlzLHhbMF0seFsxXSwxKX0scmV3aW5kOmZ1bmN0aW9uKCl7dmFyIHg9WWEoYXJndW1lbnRzLCEwKTtyZXR1cm4gc2IodGhpcyx4WzBdLHhbMV0sLTEpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIWlzTmFOKHRoaXMuZ2V0VGltZSgpKX0saXNBZnRlcjpmdW5jdGlvbih4LGEsYil7cmV0dXJuIHRoaXMuZ2V0VGltZSgpPmQuY3JlYXRlKHgpLmdldFRpbWUoKS0oYXx8MCl9LGlzQmVmb3JlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuZ2V0VGltZSgpPGQuY3JlYXRlKHgpLmdldFRpbWUoKSsoYXx8MCl9LGlzQmV0d2VlbjpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5nZXRUaW1lKCksZT1kLmNyZWF0ZSh4KS5nZXRUaW1lKCksZj1kLmNyZWF0ZShhKS5nZXRUaW1lKCksZz1ieChlLGYpLGg9Y3goZSxmKTtyZXR1cm4gZy0oYj1ifHwwKTxjJiZoK2I+Y30saXNMZWFwWWVhcjpmdW5jdGlvbigpe3ZhciB4PXp4KHRoaXMsIkZ1bGxZZWFyIik7cmV0dXJuIHglND09MCYmeCUxMDAhPTB8fHglNDAwPT0wfSxkYXlzSW5Nb250aDpmdW5jdGlvbigpe3JldHVybiAzMi16eChuZXcgZCh6eCh0aGlzLCJGdWxsWWVhciIpLHp4KHRoaXMsIk1vbnRoIiksMzIpLCJEYXRlIil9LGZvcm1hdDpmdW5jdGlvbih4LGEpe3JldHVybiBwYih0aGlzLHgsITEsYSl9LHJlbGF0aXZlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHMoeCkmJihhPXgseD1udWxsKSxwYih0aGlzLHgsITAsYSl9LGlzOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkO2lmKHRoaXMuaXNWYWxpZCgpKXtpZihzKHgpKXN3aXRjaCh4PXgudHJpbSgpLnRvTG93ZXJDYXNlKCksZD10aGlzLmNsb25lKCkudXRjKGIpLCEwKXtjYXNlImZ1dHVyZSI9PT14OnJldHVybiB0aGlzLmdldFRpbWUoKT5YYSgpLmdldFRpbWUoKTtjYXNlInBhc3QiPT09eDpyZXR1cm4gdGhpcy5nZXRUaW1lKCk8WGEoKS5nZXRUaW1lKCk7Y2FzZSJ3ZWVrZGF5Ij09PXg6cmV0dXJuIHp4KGQsIkRheSIpPjAmJnp4KGQsIkRheSIpPDY7Y2FzZSJ3ZWVrZW5kIj09PXg6cmV0dXJuIDA9PT16eChkLCJEYXkiKXx8Nj09PXp4KGQsIkRheSIpO2Nhc2UoYz13YS53ZWVrZGF5cy5pbmRleE9mKHgpJTcpPi0xOnJldHVybiB6eChkLCJEYXkiKT09PWM7Y2FzZShjPXdhLm1vbnRocy5pbmRleE9mKHgpJTEyKT4tMTpyZXR1cm4gengoZCwiTW9udGgiKT09PWN9cmV0dXJuIHFiKHRoaXMseCxudWxsLGEsYil9fSxyZXNldDpmdW5jdGlvbih4KXt2YXIgYSxiPXt9O3JldHVybiJkYXRlIj09PSh4PXh8fCJob3VycyIpJiYoeD0iZGF5cyIpLGE9UGEuc29tZShmdW5jdGlvbihhKXtyZXR1cm4geD09PWEubmFtZXx8eD09PWEubmFtZSsicyJ9KSxiW3hdPXgubWF0Y2goL15kYXlzPy8pPzE6MCxhP3RoaXMuc2V0KGIsITApOnRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHg9bmV3IGQodGhpcy5nZXRUaW1lKCkpO3JldHVybiB4LnV0YyghIXRoaXMuX3V0YykseH19KSxFKGQsITAsITAse2lzbzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSVNPU3RyaW5nKCl9LGdldFdlZWtkYXk6ZC5wcm90b3R5cGUuZ2V0RGF5LGdldFVUQ1dlZWtkYXk6ZC5wcm90b3R5cGUuZ2V0VVRDRGF5fSksRShmLCEwLCEwLHtkdXJhdGlvbjpmdW5jdGlvbih4KXtyZXR1cm4gU2EoeCkuZ2V0RHVyYXRpb24odGhpcyl9fSksd2E9eWE9ZC5hZGRMb2NhbGUoImVuIix7cGx1cmFsOiEwLHRpbWVNYXJrZXI6ImF0IixhbXBtOiJhbSxwbSIsbW9udGhzOiJKYW51YXJ5LEZlYnJ1YXJ5LE1hcmNoLEFwcmlsLE1heSxKdW5lLEp1bHksQXVndXN0LFNlcHRlbWJlcixPY3RvYmVyLE5vdmVtYmVyLERlY2VtYmVyIix3ZWVrZGF5czoiU3VuZGF5LE1vbmRheSxUdWVzZGF5LFdlZG5lc2RheSxUaHVyc2RheSxGcmlkYXksU2F0dXJkYXkiLHVuaXRzOiJtaWxsaXNlY29uZDp8cyxzZWNvbmQ6fHMsbWludXRlOnxzLGhvdXI6fHMsZGF5OnxzLHdlZWs6fHMsbW9udGg6fHMseWVhcjp8cyIsbnVtYmVyczoib25lLHR3byx0aHJlZSxmb3VyLGZpdmUsc2l4LHNldmVuLGVpZ2h0LG5pbmUsdGVuIixhcnRpY2xlczoiYSxhbix0aGUiLHRva2VuczoidGhlLHN0fG5kfHJkfHRoLG9mIixzaG9ydDoie01vbnRofSB7ZH0sIHt5eXl5fSIsbG9uZzoie01vbnRofSB7ZH0sIHt5eXl5fSB7aH06e21tfXt0dH0iLGZ1bGw6IntXZWVrZGF5fSB7TW9udGh9IHtkfSwge3l5eXl9IHtofTp7bW19Ontzc317dHR9IixwYXN0OiJ7bnVtfSB7dW5pdH0ge3NpZ259IixmdXR1cmU6IntudW19IHt1bml0fSB7c2lnbn0iLGR1cmF0aW9uOiJ7bnVtfSB7dW5pdH0iLG1vZGlmaWVyczpbe25hbWU6InNpZ24iLHNyYzoiYWdvfGJlZm9yZSIsdmFsdWU6LTF9LHtuYW1lOiJzaWduIixzcmM6ImZyb20gbm93fGFmdGVyfGZyb218aW58bGF0ZXIiLHZhbHVlOjF9LHtuYW1lOiJlZGdlIixzcmM6Imxhc3QgZGF5Iix2YWx1ZTotMn0se25hbWU6ImVkZ2UiLHNyYzoiZW5kIix2YWx1ZTotMX0se25hbWU6ImVkZ2UiLHNyYzoiZmlyc3QgZGF5fGJlZ2lubmluZyIsdmFsdWU6MX0se25hbWU6InNoaWZ0IixzcmM6Imxhc3QiLHZhbHVlOi0xfSx7bmFtZToic2hpZnQiLHNyYzoidGhlfHRoaXMiLHZhbHVlOjB9LHtuYW1lOiJzaGlmdCIsc3JjOiJuZXh0Iix2YWx1ZToxfV0sZGF0ZVBhcnNlOlsie21vbnRofSB7eWVhcn0iLCJ7c2hpZnR9IHt1bml0PTUtN30iLCJ7MD99IHtkYXRlfXsxfSIsInswP30ge2VkZ2V9IG9mIHtzaGlmdD99IHt1bml0PTQtNz99e21vbnRoP317eWVhcj99Il0sdGltZVBhcnNlOlsie251bX0ge3VuaXR9IHtzaWdufSIsIntzaWdufSB7bnVtfSB7dW5pdH0iLCJ7MH0ge251bX17MX0ge2RheX0gb2Yge21vbnRofSB7eWVhcj99Iiwie3dlZWtkYXk/fSB7bW9udGh9IHtkYXRlfXsxP30ge3llYXI/fSIsIntkYXRlfSB7bW9udGh9IHt5ZWFyfSIsIntkYXRlfSB7bW9udGh9Iiwie3NoaWZ0fSB7d2Vla2RheX0iLCJ7c2hpZnR9IHdlZWsge3dlZWtkYXl9Iiwie3dlZWtkYXl9IHsyP30ge3NoaWZ0fSB3ZWVrIiwie251bX0ge3VuaXQ9NC01fSB7c2lnbn0ge2RheX0iLCJ7MD99IHtkYXRlfXsxfSBvZiB7bW9udGh9IiwiezA/fXttb250aD99IHtkYXRlP317MT99IG9mIHtzaGlmdH0ge3VuaXQ9Ni03fSJdfSkseWIoKSx6YigpLEFiKCksQmIoKSxDYigpLERiKCksRWIoKSxGYigpLEdiKCksSWIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuc3RhcnQrIi4uIit0aGlzLmVuZDoiSW52YWxpZCBSYW5nZSJ9LEUoSWIsITAsITAse2lzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWIodGhpcy5zdGFydCkmJk1iKHRoaXMuZW5kKSYmdHlwZW9mIHRoaXMuc3RhcnQ9PXR5cGVvZiB0aGlzLmVuZH0sc3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT9aKEpiKHRoaXMuZW5kKS1KYih0aGlzLnN0YXJ0KSkrMTpOYU59LGNvbnRhaW5zOmZ1bmN0aW9uKHgpe3JldHVybiBudWxsIT14JiYoeC5zdGFydCYmeC5lbmQ/eC5zdGFydD49dGhpcy5zdGFydCYmeC5zdGFydDw9dGhpcy5lbmQmJnguZW5kPj10aGlzLnN0YXJ0JiZ4LmVuZDw9dGhpcy5lbmQ6eD49dGhpcy5zdGFydCYmeDw9dGhpcy5lbmQpfSxldmVyeTpmdW5jdGlvbih4LGEpe3ZhciBiLGM9dGhpcy5zdGFydCxkPXRoaXMuZW5kLGU9ZDxjLGY9YyxnPTAsaD1bXTtmb3Iodyh4KSYmKGE9eCx4PW51bGwpLHg9eHx8MSxyKGMpP2I9UWI6cyhjKT9iPVBiOnUoYykmJih4PU5iKHgpLGI9T2IpLGUmJng+MCYmKHgqPS0xKTtlP2Y+PWQ6Zjw9ZDspaC5wdXNoKGYpLGEmJmEoZixnKSxmPWIoZix4KSxnKys7cmV0dXJuIGh9LHVuaW9uOmZ1bmN0aW9uKHgpe3JldHVybiBuZXcgSWIodGhpcy5zdGFydDx4LnN0YXJ0P3RoaXMuc3RhcnQ6eC5zdGFydCx0aGlzLmVuZD54LmVuZD90aGlzLmVuZDp4LmVuZCl9LGludGVyc2VjdDpmdW5jdGlvbih4KXtyZXR1cm4geC5zdGFydD50aGlzLmVuZHx8eC5lbmQ8dGhpcy5zdGFydD9uZXcgSWIoTmFOLE5hTik6bmV3IEliKHRoaXMuc3RhcnQ+eC5zdGFydD90aGlzLnN0YXJ0Onguc3RhcnQsdGhpcy5lbmQ8eC5lbmQ/dGhpcy5lbmQ6eC5lbmQpfSxjbG9uZTpmdW5jdGlvbih4KXtyZXR1cm4gbmV3IEliKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSxjbGFtcDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnN0YXJ0LGI9dGhpcy5lbmQsYz1iPGE/YjphLGQ9YT5iP2E6YjtyZXR1cm4gTGIoeDxjP2M6eD5kP2Q6eCl9fSksW2YsZSxkXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe0UoeCwhMSwhMCx7cmFuZ2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4geC5jcmVhdGUmJihhPXguY3JlYXRlKGEpLGI9eC5jcmVhdGUoYikpLG5ldyBJYihhLGIpfX0pfSksRShmLCEwLCEwLHt1cHRvOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gZi5yYW5nZSh0aGlzLHgpLmV2ZXJ5KGIsYSl9LGNsYW1wOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG5ldyBJYih4LGEpLmNsYW1wKHRoaXMpfSxjYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY2xhbXAoeCxhKX19KSxFKGYsITAsITAse2Rvd250bzpmLnByb3RvdHlwZS51cHRvfSksRShiLCExLGZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgSWJ9LHtjcmVhdGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXZlcnkoKX19KSxFKEZ1bmN0aW9uLCEwLCEwLHtsYXp5OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGUsZixnPXRoaXMsaD1bXSxpPSExO2Z1bmN0aW9uIGooKXtyZXR1cm4gaC5sZW5ndGg8Yi0oaSYmYT8xOjApJiZoLnB1c2goW3RoaXMsYXJndW1lbnRzXSksaXx8KGk9ITAsYT9jKCk6UmIoaixkLGMpKSxmfXJldHVybiBiPWJ8fDEvMCxkPV8oeD14fHwxKSxlPWF4KGQveCl8fDEsYz1mdW5jdGlvbigpe3ZhciB4LGE9aC5sZW5ndGg7aWYoMCE9YSl7Zm9yKHg9Y3goYS1lLDApO2E+eDspZj1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkoZyxoLnNoaWZ0KCkpLGEtLTtSYihqLGQsZnVuY3Rpb24oKXtpPSExLGMoKX0pfX0san0sdGhyb3R0bGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGF6eSh4LCEwLDEpfSxkZWJvdW5jZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2Z1bmN0aW9uIGIoKXtiLmNhbmNlbCgpLFJiKGIseCxhLHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYn0sZGVsYXk6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcztyZXR1cm4gUmIoYSx4LGEsYSxKKGFyZ3VtZW50cyxudWxsLDEpKSxhfSxldmVyeTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YXJndW1lbnRzO2Z1bmN0aW9uIGMoKXthLmFwcGx5KGEsYiksUmIoYSx4LGMpfXJldHVybiBiPWIubGVuZ3RoPjE/SihiLG51bGwsMSk6W10sUmIoYSx4LGMpLGF9LGNhbmNlbDpmdW5jdGlvbigpe3ZhciB4LGE9dGhpcy50aW1lcnM7aWYodChhKSlmb3IoO3g9YS5zaGlmdCgpOyljbGVhclRpbWVvdXQoeCk7cmV0dXJuIHRoaXMuX2NhbmNlbGVkPSEwLHRoaXN9LGFmdGVyOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0wLGM9W107aWYocih4KSl7aWYoMD09PXgpcmV0dXJuIGEuY2FsbCgpLGF9ZWxzZSB4PTE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ7aWYoYy5wdXNoKEooYXJndW1lbnRzKSksKytiPT14KXJldHVybiBkPWEuY2FsbCh0aGlzLGMpLGI9MCxjPVtdLGR9fSxvbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGhyb3R0bGUoMS8wLCEwKX0sZmlsbDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT1KKGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9Sihhcmd1bWVudHMpO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24oeCxhKXsobnVsbCE9eHx8YT49Yi5sZW5ndGgpJiZiLnNwbGljZShhLDAseCl9KSx4LmFwcGx5KHRoaXMsYil9fX0pLEUoZiwhMSwhMCx7cmFuZG9tOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYztyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aCYmKGE9eCx4PTApLGI9YngoeHx8MCxOKGEpPzE6YSksYz1jeCh4fHwwLE4oYSk/MTphKSsxLHh4KGcucmFuZG9tKCkqKGMtYikrYil9fSksRShmLCEwLCEwLHtsb2c6ZnVuY3Rpb24oeCl7cmV0dXJuIGcubG9nKHRoaXMpLyh4P2cubG9nKHgpOjEpfSxhYmJyOmZ1bmN0aW9uKHgpe3JldHVybiBTYih0aGlzLHgsImttYnQiLDAsNCl9LG1ldHJpYzpmdW5jdGlvbih4LGEpe3JldHVybiBTYih0aGlzLHgsIm7OvG0ga01HVFBFIiw0LE4oYSk/MTphKX0sYnl0ZXM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gU2IodGhpcyx4LCJrTUdUUEUiLDAsTihhKT80OmEsITApKyJCIn0saXNJbnRlZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMlMT09MH0saXNPZGQ6ZnVuY3Rpb24oKXtyZXR1cm4haXNOYU4odGhpcykmJiF0aGlzLmlzTXVsdGlwbGVPZigyKX0saXNFdmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNNdWx0aXBsZU9mKDIpfSxpc011bHRpcGxlT2Y6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMleD09MH0sZm9ybWF0OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGUsZixnPSIiO2ZvcihOKGEpJiYoYT0iLCIpLE4oYikmJihiPSIuIiksZT0oZD0ocih4KT9keCh0aGlzLHh8fDApLnRvRml4ZWQoY3goeCwwKSk6dGhpcy50b1N0cmluZygpKS5yZXBsYWNlKC9eLS8sIiIpLnNwbGl0KCIuIikpWzBdLGY9ZFsxXSxjPWUubGVuZ3RoO2M+MDtjLT0zKWM8ZS5sZW5ndGgmJihnPWErZyksZz1lLnNsaWNlKGN4KDAsYy0zKSxjKStnO3JldHVybiBmJiYoZys9YitzeCgiMCIsKHh8fDApLWYubGVuZ3RoKStmKSwodGhpczwwPyItIjoiIikrZ30saGV4OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnBhZCh4fHwxLCExLDE2KX0sdGltZXM6ZnVuY3Rpb24oeCl7aWYoeClmb3IodmFyIGE9MDthPHRoaXM7YSsrKXguY2FsbCh0aGlzLGEpO3JldHVybiB0aGlzLnRvTnVtYmVyKCl9LGNocjpmdW5jdGlvbigpe3JldHVybiBlLmZyb21DaGFyQ29kZSh0aGlzKX0scGFkOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gdXgodGhpcyx4LGEsYil9LG9yZGluYWxpemU6ZnVuY3Rpb24oKXt2YXIgeD1aKHRoaXMpO3JldHVybiB0aGlzK3Z4KHBhcnNlSW50KHgudG9TdHJpbmcoKS5zbGljZSgtMikpKX0sdG9OdW1iZXI6ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VGbG9hdCh0aGlzLDEwKX19KSxUYigpO3ZhciBVYixWYixXYj0iaXNPYmplY3QsaXNOYU4iLnNwbGl0KCIsIiksWGI9ImtleXMsdmFsdWVzLHNlbGVjdCxyZWplY3QsZWFjaCxtZXJnZSxjbG9uZSxlcXVhbCx3YXRjaCx0YXAsaGFzLHRvUXVlcnlTdHJpbmciLnNwbGl0KCIsIik7ZnVuY3Rpb24gWWIoeCxhLGIsYyl7dmFyIGQsZSxmLGc9L14oLis/KShcWy4qXF0pJC87KGU9YS5tYXRjaChnKSk/KGY9ZVsxXSxlWzJdLnJlcGxhY2UoL15cW3xcXSQvZywiIikuc3BsaXQoIl1bIikuZm9yRWFjaChmdW5jdGlvbihhKXtkPSFhfHxhLm1hdGNoKC9eXGQrJC8pLCFmJiZ0KHgpJiYoZj14Lmxlbmd0aCksUCh4LGYpfHwoeFtmXT1kP1tdOnt9KSx4PXhbZl0sZj1hfSksIWYmJmQmJihmPXgubGVuZ3RoLnRvU3RyaW5nKCkpLFliKHgsZixiLGMpKTp4W2FdPSEoIWN8fCJ0cnVlIiE9PWIpfHwoIWN8fCJmYWxzZSIhPT1iKSYmYn1mdW5jdGlvbiBaYih4LGEpe3ZhciBiO3JldHVybiB0KGEpfHxRKGEpJiZhLnRvU3RyaW5nPT09aT8oYj1bXSxUKGEsZnVuY3Rpb24oYSxjKXt4JiYoYT14KyJbIithKyJdIiksYi5wdXNoKFpiKGEsYykpfSksYi5qb2luKCImIikpOng/JGIoeCkrIj0iKyh1KGEpP2EuZ2V0VGltZSgpOiRiKGEpKToiIn1mdW5jdGlvbiAkYih4KXtyZXR1cm4geHx8ITE9PT14fHwwPT09eD9lbmNvZGVVUklDb21wb25lbnQoeCkucmVwbGFjZSgvJTIwL2csIisiKToiIn1mdW5jdGlvbiBfYih4LGEsYil7cmV0dXJuIHYoeCk/eC50ZXN0KGEpOlEoeCk/eFthXT09PWI6YT09PWUoeCl9ZnVuY3Rpb24geGMoeCxhLGIpe3ZhciBjLGQ9eCBpbnN0YW5jZW9mIFk/bmV3IFk6e307cmV0dXJuIFQoeCxmdW5jdGlvbih4LGUpe2M9ITEsSyhhLGZ1bmN0aW9uKGEpe19iKGEseCxlKSYmKGM9ITApfSwxKSxjPT09YiYmKGRbeF09ZSl9KSxkfWZ1bmN0aW9uIGFjKCl7RihhLCExLCEwLHAsZnVuY3Rpb24oeCxhKXt2YXIgYj0iaXMiK2E7V2IucHVzaChiKSx4W2JdPW5bYV19KX1mdW5jdGlvbiBiYygpe0UoYSwhMSxmdW5jdGlvbigpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aH0se2V4dGVuZDpmdW5jdGlvbigpe3ZhciB4PVdiLmNvbmNhdChYYik7dm9pZCAwIT09Q2EmJih4PXguY29uY2F0KENhKSksR3goeCxhKX19KX1mdW5jdGlvbiBjYyh4KXt2YXIgYT1lLkluZmxlY3Rvcjt4PWEmJmEuYWNyb255bXNbeF07aWYocyh4KSlyZXR1cm4geH1mdW5jdGlvbiBkYyh4KXtpZigoeD0reCk8MHx8eD09PTEvMCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBudW1iZXIiKTtyZXR1cm4geH1mdW5jdGlvbiBlYyh4LGEpe3JldHVybiBzeChNKGEpP2E6IiAiLHgpfWZ1bmN0aW9uIGZjKHgsYSxiLGMsZCl7dmFyIGUsZjtpZih4Lmxlbmd0aDw9YSlyZXR1cm4geC50b1N0cmluZygpO3N3aXRjaChjPU4oYyk/Ii4uLiI6YyxiKXtjYXNlImxlZnQiOnJldHVybiBjKyhkP2djKHgsYSwhMCk6eC5zbGljZSh4Lmxlbmd0aC1hKSk7Y2FzZSJtaWRkbGUiOnJldHVybiBlPV8oYS8yKSxmPXh4KGEvMiksKGQ/Z2MoeCxlKTp4LnNsaWNlKDAsZSkpK2MrKGQ/Z2MoeCxmLCEwKTp4LnNsaWNlKHgubGVuZ3RoLWYpKTtkZWZhdWx0OnJldHVybihkP2djKHgsYSk6eC5zbGljZSgwLGEpKStjfX1mdW5jdGlvbiBnYyh4LGEsYil7aWYoYilyZXR1cm4gZ2MoeC5yZXZlcnNlKCksYSkucmV2ZXJzZSgpO3ZhciBkPWMoIig/PVsiK3J4KCkrIl0pIiksZT14LnNwbGl0KGQpLGY9MDtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuKGYrPXgubGVuZ3RoKTw9YX0pLmpvaW4oIiIpfWZ1bmN0aW9uIGhjKHgsYSxiKXtyZXR1cm4gcyhhKSYmLTE9PT0oYT14LmluZGV4T2YoYSkpJiYoYT1iP3gubGVuZ3RoOjApLGF9ZnVuY3Rpb24gaWMoeCl7aWYoaC5idG9hKXJldHVybiBVYj1oLmJ0b2EsVmI9aC5hdG9iLHZvaWQgMDt2YXIgYT0vW15BLVphLXowLTlcK1wvXD1dL2c7VWI9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0iIixqPTA7ZG97ZT0oYj1hLmNoYXJDb2RlQXQoaisrKSk+PjIsZj0oMyZiKTw8NHwoYz1hLmNoYXJDb2RlQXQoaisrKSk+PjQsZz0oMTUmYyk8PDJ8KGQ9YS5jaGFyQ29kZUF0KGorKykpPj42LGg9NjMmZCxpc05hTihjKT9nPWg9NjQ6aXNOYU4oZCkmJihoPTY0KSxpPWkreC5jaGFyQXQoZSkreC5jaGFyQXQoZikreC5jaGFyQXQoZykreC5jaGFyQXQoaCksYj1jPWQ9IiIsZT1mPWc9aD0iIn13aGlsZShqPGEubGVuZ3RoKTtyZXR1cm4gaX0sVmI9ZnVuY3Rpb24oYil7dmFyIGMsZCxlLGYsZyxoLGk9IiIsaj0wO2lmKGIubWF0Y2goYSkpdGhyb3cgbmV3IEVycm9yKCJTdHJpbmcgY29udGFpbnMgaW52YWxpZCBiYXNlNjQgY2hhcmFjdGVycyIpO2I9Yi5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7ZG97ZT14LmluZGV4T2YoYi5jaGFyQXQoaisrKSksYz0oMTUmKGY9eC5pbmRleE9mKGIuY2hhckF0KGorKykpKSk8PDR8KGc9eC5pbmRleE9mKGIuY2hhckF0KGorKykpKT4+MixkPSgzJmcpPDw2fChoPXguaW5kZXhPZihiLmNoYXJBdChqKyspKSksaSs9cXgoZTw8MnxmPj40KSw2NCE9ZyYmKGkrPXF4KGMpKSw2NCE9aCYmKGkrPXF4KGQpKSxjPWQ9IiIsZT1mPWc9aD0iIn13aGlsZShqPGIubGVuZ3RoKTtyZXR1cm4gaX19RShhLCExLCEwLHt3YXRjaDpmdW5jdGlvbih4LGIsYyl7aWYoayl7dmFyIGQ9eFtiXTthLmRlZmluZVByb3BlcnR5KHgsYix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldDpmdW5jdGlvbihhKXtkPWMuY2FsbCh4LGIsZCxhKX19KX19fSksRShhLCExLGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MX0se2tleXM6ZnVuY3Rpb24oeCxiKXt2YXIgYz1hLmtleXMoeCk7cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNhbGwoeCxhLHhbYV0pfSksY319KSxFKGEsITEsITAse2lzT2JqZWN0OmZ1bmN0aW9uKHgpe3JldHVybiBTKHgpfSxpc05hTjpmdW5jdGlvbih4KXtyZXR1cm4gcih4KSYmeC52YWx1ZU9mKCkhPXgudmFsdWVPZigpfSxlcXVhbDpmdW5jdGlvbih4LGEpe3JldHVybiBDeCh4LGEpfSxleHRlbmRlZDpmdW5jdGlvbih4KXtyZXR1cm4gbmV3IFkoeCl9LG1lcmdlOmZ1bmN0aW9uKHgsZSxmLGcpe3ZhciBoLGksaixrLGwsbSxuO2lmKHgmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IoaCBpbiBlKWlmKFAoZSxoKSYmeCl7aWYoaz1lW2hdLG09TShsPXhbaF0pLGk9UShrKSxqPVEobCksbj1tJiYhMT09PWc/bDprLG0mJncoZykmJihuPWcuY2FsbChlLGgsbCxrKSksZiYmKGl8fGopKWlmKHUoaykpbj1uZXcgZChrLmdldFRpbWUoKSk7ZWxzZXtpZighdihrKSl7anx8KHhbaF09Yi5pc0FycmF5KGspP1tdOnt9KSxhLm1lcmdlKHhbaF0sayxmLGcpO2NvbnRpbnVlfW49bmV3IGMoay5zb3VyY2Usd3goaykpfXhbaF09bn1yZXR1cm4geH0sdmFsdWVzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9W107cmV0dXJuIFQoeCxmdW5jdGlvbihjLGQpe2IucHVzaChkKSxhJiZhLmNhbGwoeCxkKX0pLGJ9LGNsb25lOmZ1bmN0aW9uKHgsYil7dmFyIGMsZDtpZighUSh4KSlyZXR1cm4geDtpZihkPUIoeCksdSh4LGQpJiZ4LmNsb25lKXJldHVybiB4LmNsb25lKCk7aWYodSh4LGQpfHx2KHgsZCkpcmV0dXJuIG5ldyB4LmNvbnN0cnVjdG9yKHgpO2lmKHggaW5zdGFuY2VvZiBZKWM9bmV3IFk7ZWxzZSBpZih0KHgsZCkpYz1bXTtlbHNle2lmKCFTKHgsZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xvbmUgbXVzdCBiZSBhIGJhc2ljIGRhdGEgdHlwZS4iKTtjPXt9fXJldHVybiBhLm1lcmdlKGMseCxiKX0sZnJvbVF1ZXJ5U3RyaW5nOmZ1bmN0aW9uKHgsYil7dmFyIGM9YS5leHRlbmRlZCgpO3JldHVybih4PXgmJngudG9TdHJpbmc/eC50b1N0cmluZygpOiIiKS5yZXBsYWNlKC9eLio/XD8vLCIiKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9eC5zcGxpdCgiPSIpOzI9PT1hLmxlbmd0aCYmWWIoYyxhWzBdLGRlY29kZVVSSUNvbXBvbmVudChhWzFdKSxiKX0pLGN9LHRvUXVlcnlTdHJpbmc6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gWmIoYSx4KX0sdGFwOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YTtyZXR1cm4gdyhhKXx8KGI9ZnVuY3Rpb24oKXthJiZ4W2FdKCl9KSxiLmNhbGwoeCx4KSx4fSxoYXM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gUCh4LGEpfSxzZWxlY3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHhjKHgsYXJndW1lbnRzLCEwKX0scmVqZWN0OmZ1bmN0aW9uKHgpe3JldHVybiB4Yyh4LGFyZ3VtZW50cywhMSl9fSksYWMoKSxiYygpLEd4KFhiLFkpLEUoYywhMSwhMCx7ZXNjYXBlOmZ1bmN0aW9uKHgpe3JldHVybiB5eCh4KX19KSxFKGMsITAsITAse2dldEZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHd4KHRoaXMpfSxzZXRGbGFnczpmdW5jdGlvbih4KXtyZXR1cm4gYyh0aGlzLnNvdXJjZSx4KX0sYWRkRmxhZzpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zZXRGbGFncyh3eCh0aGlzLHgpKX0scmVtb3ZlRmxhZzpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zZXRGbGFncyh3eCh0aGlzKS5yZXBsYWNlKHgsIiIpKX19KSxFKGUsITAsITEse3JlcGVhdDpmdW5jdGlvbih4KXtyZXR1cm4gc3godGhpcyx4PWRjKHgpKX19KSxFKGUsITAsZnVuY3Rpb24oeCl7cmV0dXJuIHYoeCl8fGFyZ3VtZW50cy5sZW5ndGg+Mn0se3N0YXJ0c1dpdGg6ZnVuY3Rpb24oeCl7dmFyIGEsYj1hcmd1bWVudHMsZD1iWzFdLGU9YlsyXSxmPXRoaXM7cmV0dXJuIGQmJihmPWYuc2xpY2UoZCkpLE4oZSkmJihlPSEwKSxhPXYoeCk/eC5zb3VyY2UucmVwbGFjZSgiXiIsIiIpOnl4KHgpLGMoIl4iK2EsZT8iIjoiaSIpLnRlc3QoZil9LGVuZHNXaXRoOmZ1bmN0aW9uKHgpe3ZhciBhLGI9YXJndW1lbnRzLGQ9YlsxXSxlPWJbMl0sZj10aGlzO3JldHVybiBNKGQpJiYoZj1mLnNsaWNlKDAsZCkpLE4oZSkmJihlPSEwKSxhPXYoeCk/eC5zb3VyY2UucmVwbGFjZSgiJCIsIiIpOnl4KHgpLGMoYSsiJCIsZT8iIjoiaSIpLnRlc3QoZil9fSksRShlLCEwLCEwLHtlc2NhcGVSZWdFeHA6ZnVuY3Rpb24oKXtyZXR1cm4geXgodGhpcyl9LGVzY2FwZVVSTDpmdW5jdGlvbih4KXtyZXR1cm4geD9lbmNvZGVVUklDb21wb25lbnQodGhpcyk6ZW5jb2RlVVJJKHRoaXMpfSx1bmVzY2FwZVVSTDpmdW5jdGlvbih4KXtyZXR1cm4geD9kZWNvZGVVUkkodGhpcyk6ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMpfSxlc2NhcGVIVE1MOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImYXBvczsiKS5yZXBsYWNlKC9cLy9nLCImI3gyZjsiKX0sdW5lc2NhcGVIVE1MOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikucmVwbGFjZSgvJnF1b3Q7L2csJyInKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyYjeDJmOy9nLCIvIikucmVwbGFjZSgvJmFtcDsvZywiJiIpfSxlbmNvZGVCYXNlNjQ6ZnVuY3Rpb24oKXtyZXR1cm4gVWIodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMpKSl9LGRlY29kZUJhc2U2NDpmdW5jdGlvbigpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKFZiKHRoaXMpKSl9LGVhY2g6ZnVuY3Rpb24oeCxhKXt2YXIgYixkLGU7aWYodyh4KT8oYT14LHg9L1tcc1xTXS9nKTp4P3MoeCk/eD1jKHl4KHgpLCJnaSIpOnYoeCkmJih4PWMoeC5zb3VyY2Usd3goeCwiZyIpKSk6eD0vW1xzXFNdL2csYj10aGlzLm1hdGNoKHgpfHxbXSxhKWZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWJbZF09YS5jYWxsKHRoaXMsYltkXSxkLGIpfHxiW2RdO3JldHVybiBifSxzaGlmdDpmdW5jdGlvbih4KXt2YXIgYT0iIjtyZXR1cm4geD14fHwwLHRoaXMuY29kZXMoZnVuY3Rpb24oYil7YSs9cXgoYit4KX0pLGF9LGNvZGVzOmZ1bmN0aW9uKHgpe3ZhciBhLGIsYz1bXTtmb3IoYT0wLGI9dGhpcy5sZW5ndGg7YTxiO2ErKyl7dmFyIGQ9dGhpcy5jaGFyQ29kZUF0KGEpO2MucHVzaChkKSx4JiZ4LmNhbGwodGhpcyxkLGEpfXJldHVybiBjfSxjaGFyczpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5lYWNoKHgpfSx3b3JkczpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50cmltKCkuZWFjaCgvXFMrL2cseCl9LGxpbmVzOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnRyaW0oKS5lYWNoKC9eLiokL2dtLHgpfSxwYXJhZ3JhcGhzOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMudHJpbSgpLnNwbGl0KC9bXHJcbl17Mix9Lyk7cmV0dXJuIGE9YS5tYXAoZnVuY3Rpb24oYSl7aWYoeCl2YXIgYj14LmNhbGwoYSk7cmV0dXJuIGJ8fGF9KX0saXNCbGFuazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy50cmltKCkubGVuZ3RofSxoYXM6ZnVuY3Rpb24oeCl7cmV0dXJuLTEhPT10aGlzLnNlYXJjaCh2KHgpP3g6eXgoeCkpfSxhZGQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT1OKGEpP3RoaXMubGVuZ3RoOmEsdGhpcy5zbGljZSgwLGEpK3grdGhpcy5zbGljZShhKX0scmVtb3ZlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnJlcGxhY2UoeCwiIil9LHJldmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSxjb21wYWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJpbSgpLnJlcGxhY2UoLyhbXHJcblxz44CAXSkrL2csZnVuY3Rpb24oeCxhKXtyZXR1cm4i44CAIj09PWE/YToiICJ9KX0sYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRXgodGhpcyxhcmd1bWVudHMsITApfSxmcm9tOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnNsaWNlKGhjKHRoaXMseCwhMCkpfSx0bzpmdW5jdGlvbih4KXtyZXR1cm4gTih4KSYmKHg9dGhpcy5sZW5ndGgpLHRoaXMuc2xpY2UoMCxoYyh0aGlzLHgpKX0sZGFzaGVyaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5kZXJzY29yZSgpLnJlcGxhY2UoL18vZywiLSIpfSx1bmRlcnNjb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvWy1cc10rL2csIl8iKS5yZXBsYWNlKGUuSW5mbGVjdG9yJiZlLkluZmxlY3Rvci5hY3JvbnltUmVnRXhwLGZ1bmN0aW9uKHgsYSl7cmV0dXJuKGE+MD8iXyI6IiIpK3gudG9Mb3dlckNhc2UoKX0pLnJlcGxhY2UoLyhbQS1aXGRdKykoW0EtWl1bYS16XSkvZywiJDFfJDIiKS5yZXBsYWNlKC8oW2EtelxkXSkoW0EtWl0pL2csIiQxXyQyIikudG9Mb3dlckNhc2UoKX0sY2FtZWxpemU6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudW5kZXJzY29yZSgpLnJlcGxhY2UoLyhefF8pKFteX10rKS9nLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWNjKGMpLGY9ITEhPT14fHxkPjA7cmV0dXJuIGU/Zj9lOmUudG9Mb3dlckNhc2UoKTpmP2MuY2FwaXRhbGl6ZSgpOmN9KX0sc3BhY2lmeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuZGVyc2NvcmUoKS5yZXBsYWNlKC9fL2csIiAiKX0sc3RyaXBUYWdzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcztyZXR1cm4gSyhhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzOlsiIl0sZnVuY3Rpb24oYSl7eD14LnJlcGxhY2UoYygiPC8/Iit5eChhKSsiW148Pl0qPiIsImdpIiksIiIpfSkseH0scmVtb3ZlVGFnczpmdW5jdGlvbigpe3ZhciB4PXRoaXM7cmV0dXJuIEsoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50czpbIlxcUysiXSxmdW5jdGlvbihhKXt2YXIgYj1jKCI8KCIrYSsiKVtePD5dKig/OlxcLz58Pi4qPzxcXC9cXDE+KSIsImdpIik7eD14LnJlcGxhY2UoYiwiIil9KSx4fSx0cnVuY2F0ZTpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGZjKHRoaXMseCxhLGIpfSx0cnVuY2F0ZU9uV29yZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGZjKHRoaXMseCxhLGIsITApfSxwYWQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ7cmV0dXJuIHg9ZGMoeCksYj1jeCgwLHgtdGhpcy5sZW5ndGgpLzIsYz14eChiKSxkPV8oYiksZWMoYyxhKSt0aGlzK2VjKGQsYSl9LHBhZExlZnQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geD1kYyh4KSxlYyhjeCgwLHgtdGhpcy5sZW5ndGgpLGEpK3RoaXN9LHBhZFJpZ2h0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHg9ZGMoeCksdGhpcytlYyhjeCgwLHgtdGhpcy5sZW5ndGgpLGEpfSxmaXJzdDpmdW5jdGlvbih4KXtyZXR1cm4gTih4KSYmKHg9MSksdGhpcy5zdWJzdHIoMCx4KX0sbGFzdDpmdW5jdGlvbih4KXtOKHgpJiYoeD0xKTt2YXIgYT10aGlzLmxlbmd0aC14PDA/MDp0aGlzLmxlbmd0aC14O3JldHVybiB0aGlzLnN1YnN0cihhKX0sdG9OdW1iZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIHR4KHRoaXMseCl9LGNhcGl0YWxpemU6ZnVuY3Rpb24oeCl7dmFyIGE7cmV0dXJuIHRoaXMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHg/L1teJ10vZzovXlxTLyxmdW5jdGlvbih4KXt2YXIgYixjPXgudG9VcHBlckNhc2UoKTtyZXR1cm4gYj1hP3g6YyxhPWMhPT14LGJ9KX0sYXNzaWduOmZ1bmN0aW9uKCl7dmFyIHg9e307cmV0dXJuIEsoYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7UShhKT9WKHgsYSk6eFtiKzFdPWF9KSx0aGlzLnJlcGxhY2UoL1x7KFtee10rPylcfS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIFAoeCxiKT94W2JdOmF9KX19KSxFKGUsITAsITAse2luc2VydDplLnByb3RvdHlwZS5hZGR9KSxpYygiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iKTt2YXIgamMsa2MsbGM9W10sbWM9W10sbmM9W10sb2M9W10scGM9e307ZnVuY3Rpb24gcWMoeCxhKXt2YXIgYj14LmluZGV4T2YoYSk7Yj4tMSYmeC5zcGxpY2UoYiwxKX1mdW5jdGlvbiByYyh4LGEsYil7cyhhKSYmcWMobmMsYSkscWMobmMsYikseC51bnNoaWZ0KHtydWxlOmEscmVwbGFjZW1lbnQ6Yn0pfWZ1bmN0aW9uIHNjKHgsYSl7cmV0dXJuIHg9PWF8fCJhbGwiPT14fHwheH1mdW5jdGlvbiB0Yyh4KXtyZXR1cm4gbmMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gbmV3IGMoIlxcYiIrYSsiJCIsImkiKS50ZXN0KHgpfSl9ZnVuY3Rpb24gdWMoeCxhKXtyZXR1cm4oeD1zKHgpP3gudG9TdHJpbmcoKToiIikuaXNCbGFuaygpfHx0Yyh4KT94OnZjKHgsYT9sYzptYyl9ZnVuY3Rpb24gdmMoeCxhKXtyZXR1cm4gVChhLGZ1bmN0aW9uKGEsYil7aWYoeC5tYXRjaChiLnJ1bGUpKXJldHVybiB4PXgucmVwbGFjZShiLnJ1bGUsYi5yZXBsYWNlbWVudCksITF9KSx4fWZ1bmN0aW9uIHdjKHgpe3JldHVybiB4LnJlcGxhY2UoL15cVypbYS16XS8sZnVuY3Rpb24oeCl7cmV0dXJuIHgudG9VcHBlckNhc2UoKX0pfWpjPVsiYW5kIiwib3IiLCJub3IiLCJhIiwiYW4iLCJ0aGUiLCJzbyIsImJ1dCIsInRvIiwib2YiLCJhdCIsImJ5IiwiZnJvbSIsImludG8iLCJvbiIsIm9udG8iLCJvZmYiLCJvdXQiLCJpbiIsIm92ZXIiLCJ3aXRoIiwiZm9yIl0sKGtjPXthY3JvbnltOmZ1bmN0aW9uKHgpe3BjW3gudG9Mb3dlckNhc2UoKV09eDt2YXIgYj1hLmtleXMocGMpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gcGNbeF19KTtrYy5hY3JvbnltUmVnRXhwPWMoYi5qb2luKCJ8IiksImciKX0scGx1cmFsOmZ1bmN0aW9uKHgsYSl7cmMobGMseCxhKX0sc2luZ3VsYXI6ZnVuY3Rpb24oeCxhKXtyYyhtYyx4LGEpfSxpcnJlZ3VsYXI6ZnVuY3Rpb24oeCxhKXt2YXIgYj14LmZpcnN0KCksZD14LmZyb20oMSksZT1hLmZpcnN0KCksZj1hLmZyb20oMSksZz1lLnRvVXBwZXJDYXNlKCksaD1lLnRvTG93ZXJDYXNlKCksaT1iLnRvVXBwZXJDYXNlKCksaj1iLnRvTG93ZXJDYXNlKCk7cWMobmMseCkscWMobmMsYSksaT09Zz8oa2MucGx1cmFsKG5ldyBjKCIoezF9KXsyfSQiLmFzc2lnbihiLGQpLCJpIiksIiQxIitmKSxrYy5wbHVyYWwobmV3IGMoIih7MX0pezJ9JCIuYXNzaWduKGUsZiksImkiKSwiJDEiK2YpLGtjLnNpbmd1bGFyKG5ldyBjKCIoezF9KXsyfSQiLmFzc2lnbihlLGYpLCJpIiksIiQxIitkKSk6KGtjLnBsdXJhbChuZXcgYygiezF9ezJ9JCIuYXNzaWduKGksZCkpLGcrZiksa2MucGx1cmFsKG5ldyBjKCJ7MX17Mn0kIi5hc3NpZ24oaixkKSksaCtmKSxrYy5wbHVyYWwobmV3IGMoInsxfXsyfSQiLmFzc2lnbihnLGYpKSxnK2YpLGtjLnBsdXJhbChuZXcgYygiezF9ezJ9JCIuYXNzaWduKGgsZikpLGgrZiksa2Muc2luZ3VsYXIobmV3IGMoInsxfXsyfSQiLmFzc2lnbihnLGYpKSxpK2QpLGtjLnNpbmd1bGFyKG5ldyBjKCJ7MX17Mn0kIi5hc3NpZ24oaCxmKSksaitkKSl9LHVuY291bnRhYmxlOmZ1bmN0aW9uKHgpe3ZhciBhPWIuaXNBcnJheSh4KT94OkooYXJndW1lbnRzKTtuYz1uYy5jb25jYXQoYSl9LGh1bWFuOmZ1bmN0aW9uKHgsYSl7b2MudW5zaGlmdCh7cnVsZTp4LHJlcGxhY2VtZW50OmF9KX0sY2xlYXI6ZnVuY3Rpb24oeCl7c2MoeCwic2luZ3VsYXJzIikmJihtYz1bXSksc2MoeCwicGx1cmFscyIpJiYobGM9W10pLHNjKHgsInVuY291bnRhYmxlcyIpJiYobmM9W10pLHNjKHgsImh1bWFucyIpJiYob2M9W10pLHNjKHgsImFjcm9ueW1zIikmJihwYz17fSl9fSkucGx1cmFsKC8kLywicyIpLGtjLnBsdXJhbCgvcyQvZ2ksInMiKSxrYy5wbHVyYWwoLyhheHx0ZXN0KWlzJC9naSwiJDFlcyIpLGtjLnBsdXJhbCgvKG9jdG9wfHZpcnxmdW5nfGZvY3xyYWRpfGFsdW1uKShpfHVzKSQvZ2ksIiQxaSIpLGtjLnBsdXJhbCgvKGNlbnN1c3xhbGlhc3xzdGF0dXMpJC9naSwiJDFlcyIpLGtjLnBsdXJhbCgvKGJ1KXMkL2dpLCIkMXNlcyIpLGtjLnBsdXJhbCgvKGJ1ZmZhbHx0b21hdClvJC9naSwiJDFvZXMiKSxrYy5wbHVyYWwoLyhbdGldKXVtJC9naSwiJDFhIiksa2MucGx1cmFsKC8oW3RpXSlhJC9naSwiJDFhIiksa2MucGx1cmFsKC9zaXMkL2dpLCJzZXMiKSxrYy5wbHVyYWwoL2YrZT8kL2dpLCJ2ZXMiKSxrYy5wbHVyYWwoLyhjdWZmfHJvb2YpJC9naSwiJDFzIiksa2MucGx1cmFsKC8oW2h0XWl2ZSkkL2dpLCIkMXMiKSxrYy5wbHVyYWwoLyhbXmFlaW91eV1vKSQvZ2ksIiQxZXMiKSxrYy5wbHVyYWwoLyhbXmFlaW91eV18cXUpeSQvZ2ksIiQxaWVzIiksa2MucGx1cmFsKC8oeHxjaHxzc3xzaCkkL2dpLCIkMWVzIiksa2MucGx1cmFsKC8obWF0cnx2ZXJ0fGluZCkoPzppeHxleCkkL2dpLCIkMWljZXMiKSxrYy5wbHVyYWwoLyhbbWxdKW91c2UkL2dpLCIkMWljZSIpLGtjLnBsdXJhbCgvKFttbF0paWNlJC9naSwiJDFpY2UiKSxrYy5wbHVyYWwoL14ob3gpJC9naSwiJDFlbiIpLGtjLnBsdXJhbCgvXihveGVuKSQvZ2ksIiQxIiksa2MucGx1cmFsKC8ocXVpeikkL2dpLCIkMXplcyIpLGtjLnBsdXJhbCgvKHBob3R8Y2FudHxob218emVyfHBpYW58cG9ydGljfHByfHF1YXJ0fGtpbW9uKW8kL2dpLCIkMW9zIiksa2MucGx1cmFsKC8oY3JhZnQpJC9naSwiJDEiKSxrYy5wbHVyYWwoLyhbZnRdKVtlb117Mn0odGg/KSQvZ2ksIiQxZWUkMiIpLGtjLnNpbmd1bGFyKC9zJC9naSwiIiksa2Muc2luZ3VsYXIoLyhbcHN0XVthaXVdcykkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW2FlaW91eV0pc3MkL2dpLCIkMXNzIiksa2Muc2luZ3VsYXIoLyhuKWV3cyQvZ2ksIiQxZXdzIiksa2Muc2luZ3VsYXIoLyhbdGldKWEkL2dpLCIkMXVtIiksa2Muc2luZ3VsYXIoLygoYSluYWx5fChiKWF8KGQpaWFnbm98KHApYXJlbnRoZXwocClyb2dub3wocyl5bm9wfCh0KWhlKXNlcyQvZ2ksIiQxJDJzaXMiKSxrYy5zaW5ndWxhcigvKF5hbmFseSlzZXMkL2dpLCIkMXNpcyIpLGtjLnNpbmd1bGFyKC8oaSkoZnx2ZXMpJC9pLCIkMWZlIiksa2Muc2luZ3VsYXIoLyhbYWVvbHJdZj8pKGZ8dmVzKSQvaSwiJDFmIiksa2Muc2luZ3VsYXIoLyhbaHRdaXZlKXMkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW15hZWlvdXldfHF1KWllcyQvZ2ksIiQxeSIpLGtjLnNpbmd1bGFyKC8ocyllcmllcyQvZ2ksIiQxZXJpZXMiKSxrYy5zaW5ndWxhcigvKG0pb3ZpZXMkL2dpLCIkMW92aWUiKSxrYy5zaW5ndWxhcigvKHh8Y2h8c3N8c2gpZXMkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW21sXSkob3VzfGljKWUkL2dpLCIkMW91c2UiKSxrYy5zaW5ndWxhcigvKGJ1cykoZXMpPyQvZ2ksIiQxIiksa2Muc2luZ3VsYXIoLyhvKWVzJC9naSwiJDEiKSxrYy5zaW5ndWxhcigvKHNob2Upcz8kL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oY3Jpc3xheHx0ZXN0KVtpZV1zJC9naSwiJDFpcyIpLGtjLnNpbmd1bGFyKC8ob2N0b3B8dmlyfGZ1bmd8Zm9jfHJhZGl8YWx1bW4pKGl8dXMpJC9naSwiJDF1cyIpLGtjLnNpbmd1bGFyKC8oY2Vuc3VzfGFsaWFzfHN0YXR1cykoZXMpPyQvZ2ksIiQxIiksa2Muc2luZ3VsYXIoL14ob3gpKGVuKT8vZ2ksIiQxIiksa2Muc2luZ3VsYXIoLyh2ZXJ0fGluZCkoZXh8aWNlcykkL2dpLCIkMWV4Iiksa2Muc2luZ3VsYXIoLyhtYXRyKShpeHxpY2VzKSQvZ2ksIiQxaXgiKSxrYy5zaW5ndWxhcigvKHF1aXopKHplcyk/JC9naSwiJDEiKSxrYy5zaW5ndWxhcigvKGRhdGFiYXNlKXM/JC9naSwiJDEiKSxrYy5zaW5ndWxhcigvZWUodGg/KSQvZ2ksIm9vJDEiKSxrYy5pcnJlZ3VsYXIoInBlcnNvbiIsInBlb3BsZSIpLGtjLmlycmVndWxhcigibWFuIiwibWVuIiksa2MuaXJyZWd1bGFyKCJjaGlsZCIsImNoaWxkcmVuIiksa2MuaXJyZWd1bGFyKCJzZXgiLCJzZXhlcyIpLGtjLmlycmVndWxhcigibW92ZSIsIm1vdmVzIiksa2MuaXJyZWd1bGFyKCJzYXZlIiwic2F2ZXMiKSxrYy5pcnJlZ3VsYXIoImNvdyIsImtpbmUiKSxrYy5pcnJlZ3VsYXIoImdvb3NlIiwiZ2Vlc2UiKSxrYy5pcnJlZ3VsYXIoInpvbWJpZSIsInpvbWJpZXMiKSxrYy51bmNvdW50YWJsZSgiZXF1aXBtZW50LGluZm9ybWF0aW9uLHJpY2UsbW9uZXksc3BlY2llcyxzZXJpZXMsZmlzaCxzaGVlcCxqZWFucyIuc3BsaXQoIiwiKSksRShlLCEwLCEwLHtwbHVyYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdWModGhpcywhMCl9LHNpbmd1bGFyaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHVjKHRoaXMsITEpfSxodW1hbml6ZTpmdW5jdGlvbigpe3ZhciB4PXZjKHRoaXMsb2MpO3JldHVybiB3Yyh4PSh4PXgucmVwbGFjZSgvX2lkJC9nLCIiKSkucmVwbGFjZSgvKF8pPyhbYS16XGRdKikvZ2ksZnVuY3Rpb24oeCxhLGIpe3JldHVybihhPyIgIjoiIikrKChQKHBjLGIpP3BjW2JdOm51bGwpfHxiLnRvTG93ZXJDYXNlKCkpfSkpfSx0aXRsZWl6ZTpmdW5jdGlvbigpe3ZhciB4LGEsYixjPS9bLjo7IV0kLztyZXR1cm4gdGhpcy5zcGFjaWZ5KCkuaHVtYW5pemUoKS53b3JkcyhmdW5jdGlvbihkLGUsZil7cmV0dXJuIHg9Yy50ZXN0KGQpLGI9MD09ZXx8ZT09Zi5sZW5ndGgtMXx8eHx8YSxhPXgsYnx8LTE9PT1qYy5pbmRleE9mKGQpP3djKGQpOmR9KS5qb2luKCIgIil9LHBhcmFtZXRlcml6ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB2b2lkIDA9PT14JiYoeD0iLSIpLGEubm9ybWFsaXplJiYoYT1hLm5vcm1hbGl6ZSgpKSxhPWEucmVwbGFjZSgvW15hLXowLTlcLV9dKy9naSx4KSx4JiYoYT1hLnJlcGxhY2UobmV3IGMoIl57c2VwfSt8e3NlcH0rJHwoe3NlcH0pe3NlcH0rIi5hc3NpZ24oe3NlcDp5eCh4KX0pLCJnIiksIiQxIikpLGVuY29kZVVSSShhLnRvTG93ZXJDYXNlKCkpfX0pLGUuSW5mbGVjdG9yPWtjLGUuSW5mbGVjdG9yLmFjcm9ueW1zPXBjO3ZhciB5Yz1be25hbWVzOlsiQXJhYmljIl0sc291cmNlOiLYgC3bvyJ9LHtuYW1lczpbIkN5cmlsbGljIl0sc291cmNlOiLQgC3TvyJ9LHtuYW1lczpbIkRldmFuYWdhcmkiXSxzb3VyY2U6IuCkgC3gpb8ifSx7bmFtZXM6WyJHcmVlayJdLHNvdXJjZToizbAtz78ifSx7bmFtZXM6WyJIYW5ndWwiXSxzb3VyY2U6IuqwgC3tnq/hhIAt4Ye/In0se25hbWVzOlsiSGFuIiwiS2FuamkiXSxzb3VyY2U6IuS4gC3pv7/vpIAt76u/In0se25hbWVzOlsiSGVicmV3Il0sc291cmNlOiLWkC3XvyJ9LHtuYW1lczpbIkhpcmFnYW5hIl0sc291cmNlOiLjgYAt44Kf44O7LeODvCJ9LHtuYW1lczpbIkthbmEiXSxzb3VyY2U6IuOBgC3jg7/vvaEt776fIn0se25hbWVzOlsiS2F0YWthbmEiXSxzb3VyY2U6IuOCoC3jg7/vvaEt776fIn0se25hbWVzOlsiTGF0aW4iXSxzb3VyY2U6IgEtf8KALcO/xIAtxb/GgC3JjyJ9LHtuYW1lczpbIlRoYWkiXSxzb3VyY2U6IuC4gC3gub8ifV07ZnVuY3Rpb24gemMoKXt5Yy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPWMoIl5bIit4LnNvdXJjZSsiXFxzXSskIiksYj1jKCJbIit4LnNvdXJjZSsiXSIpO3gubmFtZXMuZm9yRWFjaChmdW5jdGlvbih4KXtJKGUucHJvdG90eXBlLCJpcyIreCxmdW5jdGlvbigpe3JldHVybiBhLnRlc3QodGhpcy50cmltKCkpfSksSShlLnByb3RvdHlwZSwiaGFzIit4LGZ1bmN0aW9uKCl7cmV0dXJuIGIudGVzdCh0aGlzKX0pfSl9KX12YXIgQWMsQmM9NjUyNDgsQ2M9W3t0eXBlOiJhIixzdGFydDo2NSxlbmQ6OTB9LHt0eXBlOiJhIixzdGFydDo5NyxlbmQ6MTIyfSx7dHlwZToibiIsc3RhcnQ6NDgsZW5kOjU3fSx7dHlwZToicCIsc3RhcnQ6MzMsZW5kOjQ3fSx7dHlwZToicCIsc3RhcnQ6NTgsZW5kOjY0fSx7dHlwZToicCIsc3RhcnQ6OTEsZW5kOjk2fSx7dHlwZToicCIsc3RhcnQ6MTIzLGVuZDoxMjZ9XSxEYz0vW1x1MDAyMC1cdTAwQTVdfFtcdUZGNjEtXHVGRjlGXVvvvp7vvp9dPy9nLEVjPS9bXHUzMDAwLVx1MzAxQ118W1x1MzAxQS1cdTMwRkNdfFtcdUZGMDEtXHVGRjYwXXxbXHVGRkUwLVx1RkZFNl0vZyxGYz0i772h772k772i772jwqXCosKjIixHYz0i44CC44CB44CM44CN77+l77+g77+hIixIYz0vW+OCq+OCreOCr+OCseOCs+OCteOCt+OCueOCu+OCveOCv+ODgeODhOODhuODiOODj+ODkuODleODmOODm10vLEljPS9b44OP44OS44OV44OY44Ob44OyXS8sSmM9Iu+9se+9su+9s++9tO+9te+9p++9qO+9qe+9qu+9q++9tu+9t++9uO+9ue+9uu+9u++9vO+9ve+9vu+9v+++gO++ge++gu+9r+++g+++hO++he++hu++h+++iO++ie++iu++i+++jO++je++ju++j+++kO++ke++ku++k+++lO+9rO++le+9re++lu+9ru++l+++mO++me++mu++m+++nO+9pu++ne+9sO+9pSIsS2M9IuOCouOCpOOCpuOCqOOCquOCoeOCo+OCpeOCp+OCqeOCq+OCreOCr+OCseOCs+OCteOCt+OCueOCu+OCveOCv+ODgeODhOODg+ODhuODiOODiuODi+ODjOODjeODjuODj+ODkuODleODmOODm+ODnuODn+ODoOODoeODouODpOODo+ODpuODpeODqOODp+ODqeODquODq+ODrOODreODr+ODsuODs+ODvOODuyI7ZnVuY3Rpb24gTGMoeCxhLGIsYyl7QWN8fE1jKCk7dmFyIGQ9SihhKS5qb2luKCIiKSxlPUFjW2NdO3JldHVybiBkPWQucmVwbGFjZSgvYWxsLywiIikucmVwbGFjZSgvKFx3KWxwaGFiZXR8dW1iZXJzP3xhdGFrYW5hfHBhY2VzP3x1bmN0dWF0aW9uL2csIiQxIikseC5yZXBsYWNlKGIsZnVuY3Rpb24oeCl7cmV0dXJuIWVbeF18fGQmJiFkLmhhcyhlW3hdLnR5cGUpP3g6ZVt4XS50b30pfWZ1bmN0aW9uIE1jKCl7dmFyIHg7QWM9e3plbmtha3U6e30saGFua2FrdTp7fX0sQ2MuZm9yRWFjaChmdW5jdGlvbih4KXtVKHguZW5kLXguc3RhcnQrMSxmdW5jdGlvbihhKXthKz14LnN0YXJ0LE5jKHgudHlwZSxxeChhKSxxeChhK0JjKSl9KX0pLEtjLmVhY2goZnVuY3Rpb24oYSxiKXtOYygiayIseD1KYy5jaGFyQXQoYiksYSksYS5tYXRjaChIYykmJk5jKCJrIix4KyLvvp4iLGEuc2hpZnQoMSkpLGEubWF0Y2goSWMpJiZOYygiayIseCsi776fIixhLnNoaWZ0KDIpKX0pLEdjLmVhY2goZnVuY3Rpb24oeCxhKXtOYygicCIsRmMuY2hhckF0KGEpLHgpfSksTmMoImsiLCLvvbPvvp4iLCLjg7QiKSxOYygiayIsIu+9pu++niIsIuODuiIpLE5jKCJzIiwiICIsIuOAgCIpfWZ1bmN0aW9uIE5jKHgsYSxiKXtBYy56ZW5rYWt1W2FdPXt0eXBlOngsdG86Yn0sQWMuaGFua2FrdVtiXT17dHlwZTp4LHRvOmF9fUUoZSwhMCwhMCx7aGFua2FrdTpmdW5jdGlvbigpe3JldHVybiBMYyh0aGlzLGFyZ3VtZW50cyxFYywiaGFua2FrdSIpfSx6ZW5rYWt1OmZ1bmN0aW9uKCl7cmV0dXJuIExjKHRoaXMsYXJndW1lbnRzLERjLCJ6ZW5rYWt1Iil9LGhpcmFnYW5hOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuITEhPT14JiYoYT1hLnplbmtha3UoImsiKSksYS5yZXBsYWNlKC9bXHUzMEExLVx1MzBGNl0vZyxmdW5jdGlvbih4KXtyZXR1cm4geC5zaGlmdCgtOTYpfSl9LGthdGFrYW5hOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvW1x1MzA0MS1cdTMwOTZdL2csZnVuY3Rpb24oeCl7cmV0dXJuIHguc2hpZnQoOTYpfSl9fSksemMoKX0pLmNhbGwodGhpcyk7CgovKlVSTCBwb2x5ZmlsbCwgKGMpIEFubmUgdmFuIEtlc3RlcmVuLCBkZWVwIHJlZmFjdG9yZWQgYnkgZXJtb3V0aCovCiFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihhKXtyZXR1cm4gdm9pZCAwIT09bFthXX1mdW5jdGlvbiBjKCl7aC5jYWxsKHRoaXMpLHRoaXMuX2lzSW52YWxpZD0hMH1mdW5jdGlvbiBkKGEpe3JldHVybiIiPT1hJiZjLmNhbGwodGhpcyksYS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9YS5jaGFyQ29kZUF0KDApO3JldHVybiBiPjMyJiZiPDEyNyYmWzM0LDM1LDYwLDYyLDYzLDk2XS5pbmRleE9mKGIpPT0tMT9hOmVuY29kZVVSSUNvbXBvbmVudChhKX1mdW5jdGlvbiBmKGEpe3ZhciBiPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4gYj4zMiYmYjwxMjcmJlszNCwzNSw2MCw2Miw5Nl0uaW5kZXhPZihiKT09LTE/YTplbmNvZGVVUklDb21wb25lbnQoYSl9ZnVuY3Rpb24gZyhhLGcsaCl7ZnVuY3Rpb24gaShhKXt0LnB1c2goYSl9dmFyIGo9Z3x8InNjaGVtZSBzdGFydCIsaz0wLHE9IiIscj0hMSxzPSExLHQ9W107YTpmb3IoOyhhW2stMV0hPW58fDA9PWspJiYhdGhpcy5faXNJbnZhbGlkOyl7dmFyIHU9YVtrXTtzd2l0Y2goail7Y2FzZSJzY2hlbWUgc3RhcnQiOmlmKCF1fHwhby50ZXN0KHUpKXtpZihnKXtpKCJJbnZhbGlkIHNjaGVtZS4iKTticmVhayBhfXE9IiIsaj0ibm8gc2NoZW1lIjtjb250aW51ZX1xKz11LnRvTG93ZXJDYXNlKCksaj0ic2NoZW1lIjticmVhaztjYXNlInNjaGVtZSI6aWYodSYmcC50ZXN0KHUpKXErPXUudG9Mb3dlckNhc2UoKTtlbHNle2lmKCI6IiE9dSl7aWYoZyl7aWYobj09dSlicmVhayBhO2koIkNvZGUgcG9pbnQgbm90IGFsbG93ZWQgaW4gc2NoZW1lOiAiK3UpO2JyZWFrIGF9cT0iIixrPTAsaj0ibm8gc2NoZW1lIjtjb250aW51ZX1pZih0aGlzLl9zY2hlbWU9cSxxPSIiLGcpYnJlYWsgYTtiKHRoaXMuX3NjaGVtZSkmJih0aGlzLl9pc1JlbGF0aXZlPSEwKSxqPSJmaWxlIj09dGhpcy5fc2NoZW1lPyJyZWxhdGl2ZSI6dGhpcy5faXNSZWxhdGl2ZSYmaCYmaC5fc2NoZW1lPT10aGlzLl9zY2hlbWU/InJlbGF0aXZlIG9yIGF1dGhvcml0eSI6dGhpcy5faXNSZWxhdGl2ZT8iYXV0aG9yaXR5IGZpcnN0IHNsYXNoIjoic2NoZW1lIGRhdGEifWJyZWFrO2Nhc2Uic2NoZW1lIGRhdGEiOiI/Ij09dT8ocXVlcnk9Ij8iLGo9InF1ZXJ5Iik6IiMiPT11Pyh0aGlzLl9mcmFnbWVudD0iIyIsaj0iZnJhZ21lbnQiKTpuIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fc2NoZW1lRGF0YSs9ZSh1KSk7YnJlYWs7Y2FzZSJubyBzY2hlbWUiOmlmKGgmJmIoaC5fc2NoZW1lKSl7aj0icmVsYXRpdmUiO2NvbnRpbnVlfWkoIk1pc3Npbmcgc2NoZW1lLiIpLGMuY2FsbCh0aGlzKTticmVhaztjYXNlInJlbGF0aXZlIG9yIGF1dGhvcml0eSI6aWYoIi8iIT11fHwiLyIhPWFbaysxXSl7aSgiRXhwZWN0ZWQgLywgZ290OiAiK3UpLGo9InJlbGF0aXZlIjtjb250aW51ZX1qPSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiO2JyZWFrO2Nhc2UicmVsYXRpdmUiOmlmKHRoaXMuX2lzUmVsYXRpdmU9ITAsImZpbGUiIT10aGlzLl9zY2hlbWUmJih0aGlzLl9zY2hlbWU9aC5fc2NoZW1lKSxuPT11KXt0aGlzLl9ob3N0PWguX2hvc3QsdGhpcy5fcG9ydD1oLl9wb3J0LHRoaXMuX3BhdGg9aC5fcGF0aC5zbGljZSgpLHRoaXMuX3F1ZXJ5PWguX3F1ZXJ5LHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkO2JyZWFrIGF9aWYoIi8iPT11fHwiXFwiPT11KSJcXCI9PXUmJmkoIlxcIGlzIGFuIGludmFsaWQgY29kZSBwb2ludC4iKSxqPSJyZWxhdGl2ZSBzbGFzaCI7ZWxzZSBpZigiPyI9PXUpdGhpcy5faG9zdD1oLl9ob3N0LHRoaXMuX3BvcnQ9aC5fcG9ydCx0aGlzLl9wYXRoPWguX3BhdGguc2xpY2UoKSx0aGlzLl9xdWVyeT0iPyIsdGhpcy5fdXNlcm5hbWU9aC5fdXNlcm5hbWUsdGhpcy5fcGFzc3dvcmQ9aC5fcGFzc3dvcmQsaj0icXVlcnkiO2Vsc2V7aWYoIiMiIT11KXt2YXIgdj1hW2srMV0sdz1hW2srMl07KCJmaWxlIiE9dGhpcy5fc2NoZW1lfHwhby50ZXN0KHUpfHwiOiIhPXYmJiJ8IiE9dnx8biE9dyYmIi8iIT13JiYiXFwiIT13JiYiPyIhPXcmJiIjIiE9dykmJih0aGlzLl9ob3N0PWguX2hvc3QsdGhpcy5fcG9ydD1oLl9wb3J0LHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkLHRoaXMuX3BhdGg9aC5fcGF0aC5zbGljZSgpLHRoaXMuX3BhdGgucG9wKCkpLGo9InJlbGF0aXZlIHBhdGgiO2NvbnRpbnVlfXRoaXMuX2hvc3Q9aC5faG9zdCx0aGlzLl9wb3J0PWguX3BvcnQsdGhpcy5fcGF0aD1oLl9wYXRoLnNsaWNlKCksdGhpcy5fcXVlcnk9aC5fcXVlcnksdGhpcy5fZnJhZ21lbnQ9IiMiLHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkLGo9ImZyYWdtZW50In1icmVhaztjYXNlInJlbGF0aXZlIHNsYXNoIjppZigiLyIhPXUmJiJcXCIhPXUpeyJmaWxlIiE9dGhpcy5fc2NoZW1lJiYodGhpcy5faG9zdD1oLl9ob3N0LHRoaXMuX3BvcnQ9aC5fcG9ydCx0aGlzLl91c2VybmFtZT1oLl91c2VybmFtZSx0aGlzLl9wYXNzd29yZD1oLl9wYXNzd29yZCksaj0icmVsYXRpdmUgcGF0aCI7Y29udGludWV9IlxcIj09dSYmaSgiXFwgaXMgYW4gaW52YWxpZCBjb2RlIHBvaW50LiIpLGo9ImZpbGUiPT10aGlzLl9zY2hlbWU/ImZpbGUgaG9zdCI6ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI7YnJlYWs7Y2FzZSJhdXRob3JpdHkgZmlyc3Qgc2xhc2giOmlmKCIvIiE9dSl7aSgiRXhwZWN0ZWQgJy8nLCBnb3Q6ICIrdSksaj0iYXV0aG9yaXR5IGlnbm9yZSBzbGFzaGVzIjtjb250aW51ZX1qPSJhdXRob3JpdHkgc2Vjb25kIHNsYXNoIjticmVhaztjYXNlImF1dGhvcml0eSBzZWNvbmQgc2xhc2giOmlmKGo9ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyIsIi8iIT11KXtpKCJFeHBlY3RlZCAnLycsIGdvdDogIit1KTtjb250aW51ZX1icmVhaztjYXNlImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI6aWYoIi8iIT11JiYiXFwiIT11KXtqPSJhdXRob3JpdHkiO2NvbnRpbnVlfWkoIkV4cGVjdGVkIGF1dGhvcml0eSwgZ290OiAiK3UpO2JyZWFrO2Nhc2UiYXV0aG9yaXR5IjppZigiQCI9PXUpe3ImJihpKCJAIGFscmVhZHkgc2Vlbi4iKSxxKz0iJTQwIikscj0hMDtmb3IodmFyIHg9MDt4PHEubGVuZ3RoO3grKyl7dmFyIHk9cVt4XTtpZigiXHQiIT15JiYiXG4iIT15JiYiXHIiIT15KWlmKCI6IiE9eXx8bnVsbCE9PXRoaXMuX3Bhc3N3b3JkKXt2YXIgej1lKHkpO251bGwhPT10aGlzLl9wYXNzd29yZD90aGlzLl9wYXNzd29yZCs9ejp0aGlzLl91c2VybmFtZSs9en1lbHNlIHRoaXMuX3Bhc3N3b3JkPSIiO2Vsc2UgaSgiSW52YWxpZCB3aGl0ZXNwYWNlIGluIGF1dGhvcml0eS4iKX1xPSIifWVsc2V7aWYobj09dXx8Ii8iPT11fHwiXFwiPT11fHwiPyI9PXV8fCIjIj09dSl7ay09cS5sZW5ndGgscT0iIixqPSJob3N0Ijtjb250aW51ZX1xKz11fWJyZWFrO2Nhc2UiZmlsZSBob3N0IjppZihuPT11fHwiLyI9PXV8fCJcXCI9PXV8fCI/Ij09dXx8IiMiPT11KXsyIT1xLmxlbmd0aHx8IW8udGVzdChxWzBdKXx8IjoiIT1xWzFdJiYifCIhPXFbMV0/MD09cS5sZW5ndGg/aj0icmVsYXRpdmUgcGF0aCBzdGFydCI6KHRoaXMuX2hvc3Q9ZC5jYWxsKHRoaXMscSkscT0iIixqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Iik6aj0icmVsYXRpdmUgcGF0aCI7Y29udGludWV9Ilx0Ij09dXx8IlxuIj09dXx8IlxyIj09dT9pKCJJbnZhbGlkIHdoaXRlc3BhY2UgaW4gZmlsZSBob3N0LiIpOnErPXU7YnJlYWs7Y2FzZSJob3N0IjpjYXNlImhvc3RuYW1lIjppZigiOiIhPXV8fHMpe2lmKG49PXV8fCIvIj09dXx8IlxcIj09dXx8Ij8iPT11fHwiIyI9PXUpe2lmKHRoaXMuX2hvc3Q9ZC5jYWxsKHRoaXMscSkscT0iIixqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0IixnKWJyZWFrIGE7Y29udGludWV9Ilx0IiE9dSYmIlxuIiE9dSYmIlxyIiE9dT8oIlsiPT11P3M9ITA6Il0iPT11JiYocz0hMSkscSs9dSk6aSgiSW52YWxpZCBjb2RlIHBvaW50IGluIGhvc3QvaG9zdG5hbWU6ICIrdSl9ZWxzZSBpZih0aGlzLl9ob3N0PWQuY2FsbCh0aGlzLHEpLHE9IiIsaj0icG9ydCIsImhvc3RuYW1lIj09ZylicmVhayBhO2JyZWFrO2Nhc2UicG9ydCI6aWYoL1swLTldLy50ZXN0KHUpKXErPXU7ZWxzZXtpZihuPT11fHwiLyI9PXV8fCJcXCI9PXV8fCI/Ij09dXx8IiMiPT11fHxnKXtpZigiIiE9cSl7dmFyIEE9cGFyc2VJbnQocSwxMCk7QSE9bFt0aGlzLl9zY2hlbWVdJiYodGhpcy5fcG9ydD1BKyIiKSxxPSIifWlmKGcpYnJlYWsgYTtqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Ijtjb250aW51ZX0iXHQiPT11fHwiXG4iPT11fHwiXHIiPT11P2koIkludmFsaWQgY29kZSBwb2ludCBpbiBwb3J0OiAiK3UpOmMuY2FsbCh0aGlzKX1icmVhaztjYXNlInJlbGF0aXZlIHBhdGggc3RhcnQiOmlmKCJcXCI9PXUmJmkoIidcXCcgbm90IGFsbG93ZWQgaW4gcGF0aC4iKSxqPSJyZWxhdGl2ZSBwYXRoIiwiLyIhPXUmJiJcXCIhPXUpY29udGludWU7YnJlYWs7Y2FzZSJyZWxhdGl2ZSBwYXRoIjppZihuIT11JiYiLyIhPXUmJiJcXCIhPXUmJihnfHwiPyIhPXUmJiIjIiE9dSkpIlx0IiE9dSYmIlxuIiE9dSYmIlxyIiE9dSYmKHErPWUodSkpO2Vsc2V7IlxcIj09dSYmaSgiXFwgbm90IGFsbG93ZWQgaW4gcmVsYXRpdmUgcGF0aC4iKTt2YXIgQjsoQj1tW3EudG9Mb3dlckNhc2UoKV0pJiYocT1CKSwiLi4iPT1xPyh0aGlzLl9wYXRoLnBvcCgpLCIvIiE9dSYmIlxcIiE9dSYmdGhpcy5fcGF0aC5wdXNoKCIiKSk6Ii4iPT1xJiYiLyIhPXUmJiJcXCIhPXU/dGhpcy5fcGF0aC5wdXNoKCIiKToiLiIhPXEmJigiZmlsZSI9PXRoaXMuX3NjaGVtZSYmMD09dGhpcy5fcGF0aC5sZW5ndGgmJjI9PXEubGVuZ3RoJiZvLnRlc3QocVswXSkmJiJ8Ij09cVsxXSYmKHE9cVswXSsiOiIpLHRoaXMuX3BhdGgucHVzaChxKSkscT0iIiwiPyI9PXU/KHRoaXMuX3F1ZXJ5PSI/IixqPSJxdWVyeSIpOiIjIj09dSYmKHRoaXMuX2ZyYWdtZW50PSIjIixqPSJmcmFnbWVudCIpfWJyZWFrO2Nhc2UicXVlcnkiOmd8fCIjIiE9dT9uIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fcXVlcnkrPWYodSkpOih0aGlzLl9mcmFnbWVudD0iIyIsaj0iZnJhZ21lbnQiKTticmVhaztjYXNlImZyYWdtZW50IjpuIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fZnJhZ21lbnQrPXUpfWsrK319ZnVuY3Rpb24gaCgpe3RoaXMuX3NjaGVtZT0iIix0aGlzLl9zY2hlbWVEYXRhPSIiLHRoaXMuX3VzZXJuYW1lPSIiLHRoaXMuX3Bhc3N3b3JkPW51bGwsdGhpcy5faG9zdD0iIix0aGlzLl9wb3J0PSIiLHRoaXMuX3BhdGg9W10sdGhpcy5fcXVlcnk9IiIsdGhpcy5fZnJhZ21lbnQ9IiIsdGhpcy5faXNJbnZhbGlkPSExLHRoaXMuX2lzUmVsYXRpdmU9ITF9ZnVuY3Rpb24gaShhLGIpe3ZvaWQgMD09PWJ8fGIgaW5zdGFuY2VvZiBpfHwoYj1uZXcgaShTdHJpbmcoYikpKSxhPVN0cmluZyhhKSx0aGlzLl91cmw9YSxoLmNhbGwodGhpcyk7dmFyIGM9YS5yZXBsYWNlKC9eWyBcdFxyXG5cZl0rfFsgXHRcclxuXGZdKyQvZywiIik7Zy5jYWxsKHRoaXMsYyxudWxsLGIpfXZhciBqPSExO2lmKCFhLmZvcmNlSlVSTCl0cnl7dmFyIGs9bmV3IFVSTCgiYiIsImh0dHA6Ly94OnlAYSIpO2sucGF0aG5hbWU9ImMlMjBkIixqPSJodHRwOi8veDp5QGEvYyUyMGQiPT09ay5ocmVmfWNhdGNoKGEpe31pZighail7dmFyIGw9T2JqZWN0LmNyZWF0ZShudWxsKTtsLmZ0cD0yMSxsLmZpbGU9MCxsLmdvcGhlcj03MCxsLmh0dHA9ODAsbC5odHRwcz00NDMsbC53cz04MCxsLndzcz00NDM7dmFyIG09T2JqZWN0LmNyZWF0ZShudWxsKTttWyIlMmUiXT0iLiIsbVsiLiUyZSJdPSIuLiIsbVsiJTJlLiJdPSIuLiIsbVsiJTJlJTJlIl09Ii4uIjt2YXIgbj12b2lkIDAsbz0vW2EtekEtWl0vLHA9L1thLXpBLVowLTlcK1wtXC5dLztpLnByb3RvdHlwZT17dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ocmVmfSxnZXQgaHJlZigpe2lmKHRoaXMuX2lzSW52YWxpZClyZXR1cm4gdGhpcy5fdXJsO3ZhciBhPSIiO3JldHVybiIiPT10aGlzLl91c2VybmFtZSYmbnVsbD09dGhpcy5fcGFzc3dvcmR8fChhPXRoaXMuX3VzZXJuYW1lKyhudWxsIT10aGlzLl9wYXNzd29yZD8iOiIrdGhpcy5fcGFzc3dvcmQ6IiIpKyJAIiksdGhpcy5wcm90b2NvbCsodGhpcy5faXNSZWxhdGl2ZT8iLy8iK2ErdGhpcy5ob3N0OiIiKSt0aGlzLnBhdGhuYW1lK3RoaXMuX3F1ZXJ5K3RoaXMuX2ZyYWdtZW50fSxzZXQgaHJlZihhKXtoLmNhbGwodGhpcyksZy5jYWxsKHRoaXMsYSl9LGdldCBwcm90b2NvbCgpe3JldHVybiB0aGlzLl9zY2hlbWUrIjoifSxzZXQgcHJvdG9jb2woYSl7dGhpcy5faXNJbnZhbGlkfHxnLmNhbGwodGhpcyxhKyI6Iiwic2NoZW1lIHN0YXJ0Iil9LGdldCBob3N0KCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZD8iIjp0aGlzLl9wb3J0P3RoaXMuX2hvc3QrIjoiK3RoaXMuX3BvcnQ6dGhpcy5faG9zdH0sc2V0IGhvc3QoYSl7IXRoaXMuX2lzSW52YWxpZCYmdGhpcy5faXNSZWxhdGl2ZSYmZy5jYWxsKHRoaXMsYSwiaG9zdCIpfSxnZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5faG9zdH0sc2V0IGhvc3RuYW1lKGEpeyF0aGlzLl9pc0ludmFsaWQmJnRoaXMuX2lzUmVsYXRpdmUmJmcuY2FsbCh0aGlzLGEsImhvc3RuYW1lIil9LGdldCBwb3J0KCl7cmV0dXJuIHRoaXMuX3BvcnR9LHNldCBwb3J0KGEpeyF0aGlzLl9pc0ludmFsaWQmJnRoaXMuX2lzUmVsYXRpdmUmJmcuY2FsbCh0aGlzLGEsInBvcnQiKX0sZ2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZD8iIjp0aGlzLl9pc1JlbGF0aXZlPyIvIit0aGlzLl9wYXRoLmpvaW4oIi8iKTp0aGlzLl9zY2hlbWVEYXRhfSxzZXQgcGF0aG5hbWUoYSl7IXRoaXMuX2lzSW52YWxpZCYmdGhpcy5faXNSZWxhdGl2ZSYmKHRoaXMuX3BhdGg9W10sZy5jYWxsKHRoaXMsYSwicmVsYXRpdmUgcGF0aCBzdGFydCIpKX0sZ2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLl9pc0ludmFsaWR8fCF0aGlzLl9xdWVyeXx8Ij8iPT10aGlzLl9xdWVyeT8iIjp0aGlzLl9xdWVyeX0sc2V0IHNlYXJjaChhKXshdGhpcy5faXNJbnZhbGlkJiZ0aGlzLl9pc1JlbGF0aXZlJiYodGhpcy5fcXVlcnk9Ij8iLCI/Ij09YVswXSYmKGE9YS5zbGljZSgxKSksZy5jYWxsKHRoaXMsYSwicXVlcnkiKSl9LGdldCBoYXNoKCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZHx8IXRoaXMuX2ZyYWdtZW50fHwiIyI9PXRoaXMuX2ZyYWdtZW50PyIiOnRoaXMuX2ZyYWdtZW50fSxzZXQgaGFzaChhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl9mcmFnbWVudD0iIyIsIiMiPT1hWzBdJiYoYT1hLnNsaWNlKDEpKSxnLmNhbGwodGhpcyxhLCJmcmFnbWVudCIpKX0sZ2V0IG9yaWdpbigpe3ZhciBhO2lmKHRoaXMuX2lzSW52YWxpZHx8IXRoaXMuX3NjaGVtZSlyZXR1cm4iIjtzd2l0Y2godGhpcy5fc2NoZW1lKXtjYXNlImRhdGEiOmNhc2UiZmlsZSI6Y2FzZSJqYXZhc2NyaXB0IjpjYXNlIm1haWx0byI6cmV0dXJuIm51bGwifXJldHVybiBhPXRoaXMuaG9zdCxhP3RoaXMuX3NjaGVtZSsiOi8vIithOiIifSxnZXQgdXNlcm5hbWUoKXtyZXR1cm4gdGhpcy5fdXNlcm5hbWV9LHNldCB1c2VybmFtZShhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl91c2VybmFtZT1lbmNvZGVVUklDb21wb25lbnQoYSsiIikpfSxnZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9LHNldCBwYXNzd29yZChhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl9wYXNzd29yZD1lbmNvZGVVUklDb21wb25lbnQoYSsiIikpfX07dmFyIHE9YS5VUkw7cSYmKGkuY3JlYXRlT2JqZWN0VVJMPWZ1bmN0aW9uKGEpe3JldHVybiBxLmNyZWF0ZU9iamVjdFVSTC5hcHBseShxLGFyZ3VtZW50cyl9LGkucmV2b2tlT2JqZWN0VVJMPWZ1bmN0aW9uKGEpe3EucmV2b2tlT2JqZWN0VVJMKGEpfSksYS5VUkw9aX19KHdpbmRvdyk7CgovKmpRdWVyeSAyLjEuMyovCiFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3ZhciBiPWEubGVuZ3RoLGM9Xy50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxfLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfWZ1bmN0aW9uIGQoYSxiLGMpe2lmKF8uaXNGdW5jdGlvbihiKSlyZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYoaGIudGVzdChiKSlyZXR1cm4gXy5maWx0ZXIoYixhLGMpO2I9Xy5maWx0ZXIoYixhKX1yZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIFUuY2FsbChiLGEpPj0wIT09Y30pfWZ1bmN0aW9uIGUoYSxiKXtmb3IoOyhhPWFbYl0pJiYxIT09YS5ub2RlVHlwZTspO3JldHVybiBhfWZ1bmN0aW9uIGYoYSl7dmFyIGI9b2JbYV09e307cmV0dXJuIF8uZWFjaChhLm1hdGNoKG5iKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1mdW5jdGlvbiBnKCl7Wi5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnLCExKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGcsITEpLF8ucmVhZHkoKX1mdW5jdGlvbiBoKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuY2FjaGU9e30sMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue319fSksdGhpcy5leHBhbmRvPV8uZXhwYW5kbytoLnVpZCsrfWZ1bmN0aW9uIGkoYSxiLGMpe3ZhciBkO2lmKHZvaWQgMD09PWMmJjE9PT1hLm5vZGVUeXBlKWlmKGQ9ImRhdGEtIitiLnJlcGxhY2UodWIsIi0kMSIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzp0Yi50ZXN0KGMpP18ucGFyc2VKU09OKGMpOmN9Y2F0Y2goZSl7fXNiLnNldChhLGIsYyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31mdW5jdGlvbiBqKCl7cmV0dXJuITB9ZnVuY3Rpb24gaygpe3JldHVybiExfWZ1bmN0aW9uIGwoKXt0cnl7cmV0dXJuIFouYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIG0oYSxiKXtyZXR1cm4gXy5ub2RlTmFtZShhLCJ0YWJsZSIpJiZfLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiBvKGEpe3ZhciBiPUtiLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gcChhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylyYi5zZXQoYVtjXSwiZ2xvYmFsRXZhbCIsIWJ8fHJiLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIHEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihyYi5oYXNEYXRhKGEpJiYoZj1yYi5hY2Nlc3MoYSksZz1yYi5zZXQoYixmKSxqPWYuZXZlbnRzLGopKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGUgaW4gailmb3IoYz0wLGQ9altlXS5sZW5ndGg7ZD5jO2MrKylfLmV2ZW50LmFkZChiLGUsaltlXVtjXSl9c2IuaGFzRGF0YShhKSYmKGg9c2IuYWNjZXNzKGEpLGk9Xy5leHRlbmQoe30saCksc2Iuc2V0KGIsaSkpfX1mdW5jdGlvbiByKGEsYil7dmFyIGM9YS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6YS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdO3JldHVybiB2b2lkIDA9PT1ifHxiJiZfLm5vZGVOYW1lKGEsYik/Xy5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBzKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1dCI9PT1jJiZ5Yi50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiB0KGIsYyl7dmFyIGQsZT1fKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTpfLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiB1KGEpe3ZhciBiPVosYz1PYlthXTtyZXR1cm4gY3x8KGM9dChhLGIpLCJub25lIiE9PWMmJmN8fChOYj0oTmJ8fF8oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9TmJbMF0uY29udGVudERvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz10KGEsYiksTmIuZGV0YWNoKCkpLE9iW2FdPWMpLGN9ZnVuY3Rpb24gdihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fFJiKGEpLGMmJihnPWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSksYyYmKCIiIT09Z3x8Xy5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPV8uc3R5bGUoYSxiKSksUWIudGVzdChnKSYmUGIudGVzdChiKSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5tYXhXaWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhXaWR0aD1mKSksdm9pZCAwIT09Zz9nKyIiOmd9ZnVuY3Rpb24gdyhhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpPyhkZWxldGUgdGhpcy5nZXQsdm9pZCAwKToodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24geChhLGIpe2lmKGIgaW4gYSlyZXR1cm4gYjtmb3IodmFyIGM9YlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSksZD1iLGU9WGIubGVuZ3RoO2UtLTspaWYoYj1YYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiB5KGEsYixjKXt2YXIgZD1UYi5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIHooYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPV8uY3NzKGEsYyt3YltmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPV8uY3NzKGEsInBhZGRpbmciK3diW2ZdLCEwLGUpKSwibWFyZ2luIiE9PWMmJihnLT1fLmNzcyhhLCJib3JkZXIiK3diW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9Xy5jc3MoYSwicGFkZGluZyIrd2JbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPV8uY3NzKGEsImJvcmRlciIrd2JbZl0rIldpZHRoIiwhMCxlKSkpO3JldHVybiBnfWZ1bmN0aW9uIEEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPVJiKGEpLGc9ImJvcmRlci1ib3giPT09Xy5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPXYoYSxiLGYpLCgwPmV8fG51bGw9PWUpJiYoZT1hLnN0eWxlW2JdKSxRYi50ZXN0KGUpKXJldHVybiBlO2Q9ZyYmKFkuYm94U2l6aW5nUmVsaWFibGUoKXx8ZT09PWEuc3R5bGVbYl0pLGU9cGFyc2VGbG9hdChlKXx8MH1yZXR1cm4gZSt6KGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1mdW5jdGlvbiBCKGEsYil7Zm9yKHZhciBjLGQsZSxmPVtdLGc9MCxoPWEubGVuZ3RoO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihmW2ddPXJiLmdldChkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJnhiKGQpJiYoZltnXT1yYi5hY2Nlc3MoZCwib2xkZGlzcGxheSIsdShkLm5vZGVOYW1lKSkpKTooZT14YihkKSwibm9uZSI9PT1jJiZlfHxyYi5zZXQoZCwib2xkZGlzcGxheSIsZT9jOl8uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQyhhLGIsYyxkLGUpe3JldHVybiBuZXcgQy5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfWZ1bmN0aW9uIEQoKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1liPXZvaWQgMH0pLFliPV8ubm93KCl9ZnVuY3Rpb24gRShhLGIpe3ZhciBjLGQ9MCxlPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ND5kO2QrPTItYiljPXdiW2RdLGVbIm1hcmdpbiIrY109ZVsicGFkZGluZyIrY109YTtyZXR1cm4gYiYmKGUub3BhY2l0eT1lLndpZHRoPWEpLGV9ZnVuY3Rpb24gRihhLGIsYyl7Zm9yKHZhciBkLGU9KGNjW2JdfHxbXSkuY29uY2F0KGNjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIEcoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD10aGlzLG09e30sbj1hLnN0eWxlLG89YS5ub2RlVHlwZSYmeGIoYSkscD1yYi5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9Xy5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLGwuYWx3YXlzKGZ1bmN0aW9uKCl7bC5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sXy5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bbi5vdmVyZmxvdyxuLm92ZXJmbG93WCxuLm92ZXJmbG93WV0saj1fLmNzcyhhLCJkaXNwbGF5Iiksaz0ibm9uZSI9PT1qP3JiLmdldChhLCJvbGRkaXNwbGF5Iil8fHUoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWsmJiJub25lIj09PV8uY3NzKGEsImZsb2F0IikmJihuLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYobi5vdmVyZmxvdz0iaGlkZGVuIixsLmFsd2F5cyhmdW5jdGlvbigpe24ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxuLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG4ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSk7Zm9yKGQgaW4gYilpZihlPWJbZF0sJGIuZXhlYyhlKSl7aWYoZGVsZXRlIGJbZF0sZj1mfHwidG9nZ2xlIj09PWUsZT09PShvPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1lfHwhcHx8dm9pZCAwPT09cFtkXSljb250aW51ZTtvPSEwfW1bZF09cCYmcFtkXXx8Xy5zdHlsZShhLGQpfWVsc2Ugaj12b2lkIDA7aWYoXy5pc0VtcHR5T2JqZWN0KG0pKSJpbmxpbmUiPT09KCJub25lIj09PWo/dShhLm5vZGVOYW1lKTpqKSYmKG4uZGlzcGxheT1qKTtlbHNle3A/ImhpZGRlbiJpbiBwJiYobz1wLmhpZGRlbik6cD1yYi5hY2Nlc3MoYSwiZnhzaG93Iix7fSksZiYmKHAuaGlkZGVuPSFvKSxvP18oYSkuc2hvdygpOmwuZG9uZShmdW5jdGlvbigpe18oYSkuaGlkZSgpfSksbC5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7cmIucmVtb3ZlKGEsImZ4c2hvdyIpO2ZvcihiIGluIG0pXy5zdHlsZShhLGIsbVtiXSl9KTtmb3IoZCBpbiBtKWc9RihvP3BbZF06MCxkLGwpLGQgaW4gcHx8KHBbZF09Zy5zdGFydCxvJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIEgoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1fLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLF8uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9Xy5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBJKGEsYixjKXt2YXIgZCxlLGY9MCxnPWJjLmxlbmd0aCxoPV8uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPVlifHxEKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOl8uZXh0ZW5kKHt9LGIpLG9wdHM6Xy5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpZYnx8RCgpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9Xy5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEsW2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoSChrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9YmNbZl0uY2FsbChqLGEsayxqLm9wdHMpLGQpcmV0dXJuIGQ7cmV0dXJuIF8ubWFwKGssRixqKSxfLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxfLmZ4LnRpbWVyKF8uZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpfWZ1bmN0aW9uIEooYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNlKCkubWF0Y2gobmIpfHxbXTtpZihfLmlzRnVuY3Rpb24oYykpZm9yKDtkPWZbZSsrXTspIisiPT09ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBLKGEsYixjLGQpe2Z1bmN0aW9uIGUoaCl7dmFyIGk7cmV0dXJuIGZbaF09ITAsXy5lYWNoKGFbaF18fFtdLGZ1bmN0aW9uKGEsaCl7dmFyIGo9aChiLGMsZCk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBqfHxnfHxmW2pdP2c/IShpPWopOnZvaWQgMDooYi5kYXRhVHlwZXMudW5zaGlmdChqKSxlKGopLCExKX0pLGl9dmFyIGY9e30sZz1hPT09dGM7cmV0dXJuIGUoYi5kYXRhVHlwZXNbMF0pfHwhZlsiKiJdJiZlKCIqIil9ZnVuY3Rpb24gTChhLGIpe3ZhciBjLGQsZT1fLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17fSkpW2NdPWJbY10pO3JldHVybiBkJiZfLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gTShhLGIsYyl7Zm9yKHZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzOyIqIj09PWlbMF07KWkuc2hpZnQoKSx2b2lkIDA9PT1kJiYoZD1hLm1pbWVUeXBlfHxiLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoZClmb3IoZSBpbiBoKWlmKGhbZV0mJmhbZV0udGVzdChkKSl7aS51bnNoaWZ0KGUpO2JyZWFrfWlmKGlbMF1pbiBjKWY9aVswXTtlbHNle2ZvcihlIGluIGMpe2lmKCFpWzBdfHxhLmNvbnZlcnRlcnNbZSsiICIraVswXV0pe2Y9ZTticmVha31nfHwoZz1lKX1mPWZ8fGd9cmV0dXJuIGY/KGYhPT1pWzBdJiZpLnVuc2hpZnQoZiksY1tmXSk6dm9pZCAwfWZ1bmN0aW9uIE4oYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2ZvcihmPWsuc2hpZnQoKTtmOylpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpLGYpaWYoIioiPT09ZilmPWk7ZWxzZSBpZigiKiIhPT1pJiZpIT09Zil7aWYoZz1qW2krIiAiK2ZdfHxqWyIqICIrZl0sIWcpZm9yKGUgaW4gailpZihoPWUuc3BsaXQoIiAiKSxoWzFdPT09ZiYmKGc9altpKyIgIitoWzBdXXx8alsiKiAiK2hbMF1dLGcpKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1mdW5jdGlvbiBPKGEsYixjLGQpe3ZhciBlO2lmKF8uaXNBcnJheShiKSlfLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fHljLnRlc3QoYSk/ZChhLGUpOk8oYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PV8udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKU8oYSsiWyIrZSsiXSIsYltlXSxjLGQpfWZ1bmN0aW9uIFAoYSl7cmV0dXJuIF8uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5kZWZhdWx0Vmlld312YXIgUT1bXSxSPVEuc2xpY2UsUz1RLmNvbmNhdCxUPVEucHVzaCxVPVEuaW5kZXhPZixWPXt9LFc9Vi50b1N0cmluZyxYPVYuaGFzT3duUHJvcGVydHksWT17fSxaPWEuZG9jdW1lbnQsJD0iMi4xLjMiLF89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uZm4uaW5pdChhLGIpfSxhYj0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csYmI9L14tbXMtLyxjYj0vLShbXGRhLXpdKS9naSxkYj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O18uZm49Xy5wcm90b3R5cGU9e2pxdWVyeTokLGNvbnN0cnVjdG9yOl8sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBSLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOlIuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPV8ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5lYWNoKHRoaXMsYSxiKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhfLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFIuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmI+Yz9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOlQsc29ydDpRLnNvcnQsc3BsaWNlOlEuc3BsaWNlfSxfLmV4dGVuZD1fLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRzLmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hdfHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8Xy5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09PWkmJihnPXRoaXMsaC0tKTtpPmg7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKF8uaXNQbGFpbk9iamVjdChkKXx8KGU9Xy5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZfLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZfLmlzUGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPV8uZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdbYl09ZCkpO3JldHVybiBnfSxfLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoJCtNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09Xy50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3JldHVybiFfLmlzQXJyYXkoYSkmJmEtcGFyc2VGbG9hdChhKSsxPj0wfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3JldHVybiJvYmplY3QiIT09Xy50eXBlKGEpfHxhLm5vZGVUeXBlfHxfLmlzV2luZG93KGEpPyExOmEuY29uc3RydWN0b3ImJiFYLmNhbGwoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKT8hMTohMH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9WW1cuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGM9ZXZhbDthPV8udHJpbShhKSxhJiYoMT09PWEuaW5kZXhPZigidXNlIHN0cmljdCIpPyhiPVouY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYi50ZXh0PWEsWi5oZWFkLmFwcGVuZENoaWxkKGIpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpOmMoYSkpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShiYiwibXMtIikucmVwbGFjZShjYixkYil9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGIsZCl7dmFyIGUsZj0wLGc9YS5sZW5ndGgsaD1jKGEpO2lmKGQpe2lmKGgpZm9yKDtnPmYmJihlPWIuYXBwbHkoYVtmXSxkKSxlIT09ITEpO2YrKyk7ZWxzZSBmb3IoZiBpbiBhKWlmKGU9Yi5hcHBseShhW2ZdLGQpLGU9PT0hMSlicmVha31lbHNlIGlmKGgpZm9yKDtnPmYmJihlPWIuY2FsbChhW2ZdLGYsYVtmXSksZSE9PSExKTtmKyspO2Vsc2UgZm9yKGYgaW4gYSlpZihlPWIuY2FsbChhW2ZdLGYsYVtmXSksZT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKGFiLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGQ9Ynx8W107cmV0dXJuIG51bGwhPWEmJihjKE9iamVjdChhKSk/Xy5tZXJnZShkLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6VC5jYWxsKGQsYSkpLGR9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOlUuY2FsbChiLGEsYyl9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDtjPmQ7ZCsrKWFbZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmPTAsZz1hLmxlbmd0aCxoPWMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKyllPWIoYVtmXSxmLGQpLG51bGwhPWUmJmkucHVzaChlKTtlbHNlIGZvcihmIGluIGEpZT1iKGFbZl0sZixkKSxudWxsIT1lJiZpLnB1c2goZSk7cmV0dXJuIFMuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9YyksXy5pc0Z1bmN0aW9uKGEpPyhkPVIuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZC5jb25jYXQoUi5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fF8uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OkRhdGUubm93LHN1cHBvcnQ6WX0pLF8uZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe1ZbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7dmFyIGViPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGwsbixvLHA7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOk8pIT09RyYmRihiKSxiPWJ8fEcsYz1jfHxbXSxoPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWgmJjkhPT1oJiYxMSE9PWgpcmV0dXJuIGM7aWYoIWQmJkkpe2lmKDExIT09aCYmKGU9c2IuZXhlYyhhKSkpaWYoZz1lWzFdKXtpZig5PT09aCl7aWYoZj1iLmdldEVsZW1lbnRCeUlkKGcpLCFmfHwhZi5wYXJlbnROb2RlKXJldHVybiBjO2lmKGYuaWQ9PT1nKXJldHVybiBjLnB1c2goZiksY31lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGY9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcpKSYmTShiLGYpJiZmLmlkPT09ZylyZXR1cm4gYy5wdXNoKGYpLGN9ZWxzZXtpZihlWzJdKXJldHVybiAkLmFwcGx5KGMsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksYztpZigoZz1lWzNdKSYmdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiAkLmFwcGx5KGMsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGcpKSxjfWlmKHYucXNhJiYoIUp8fCFKLnRlc3QoYSkpKXtpZihuPWw9TixvPWIscD0xIT09aCYmYSwxPT09aCYmIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2ZvcihqPXooYSksKGw9Yi5nZXRBdHRyaWJ1dGUoImlkIikpP249bC5yZXBsYWNlKHViLCJcXCQmIik6Yi5zZXRBdHRyaWJ1dGUoImlkIixuKSxuPSJbaWQ9JyIrbisiJ10gIixpPWoubGVuZ3RoO2ktLTspaltpXT1uK20oaltpXSk7bz10Yi50ZXN0KGEpJiZrKGIucGFyZW50Tm9kZSl8fGIscD1qLmpvaW4oIiwiKX1pZihwKXRyeXtyZXR1cm4gJC5hcHBseShjLG8ucXVlcnlTZWxlY3RvckFsbChwKSksY31jYXRjaChxKXt9ZmluYWxseXtsfHxiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBCKGEucmVwbGFjZShpYiwiJDEiKSxiLGMsZCl9ZnVuY3Rpb24gYygpe2Z1bmN0aW9uIGEoYyxkKXtyZXR1cm4gYi5wdXNoKGMrIiAiKT53LmNhY2hlTGVuZ3RoJiZkZWxldGUgYVtiLnNoaWZ0KCldLGFbYysiICJdPWR9dmFyIGI9W107cmV0dXJuIGF9ZnVuY3Rpb24gZChhKXtyZXR1cm4gYVtOXT0hMCxhfWZ1bmN0aW9uIGUoYSl7dmFyIGI9Ry5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEuc3BsaXQoInwiKSxkPWEubGVuZ3RoO2QtLTspdy5hdHRySGFuZGxlW2NbZF1dPWJ9ZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8ViktKH5hLnNvdXJjZUluZGV4fHxWKTtpZihkKXJldHVybiBkO2lmKGMpZm9yKDtjPWMubmV4dFNpYmxpbmc7KWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gaChhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBpKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBqKGEpe3JldHVybiBkKGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLGQoZnVuY3Rpb24oYyxkKXtmb3IodmFyIGUsZj1hKFtdLGMubGVuZ3RoLGIpLGc9Zi5sZW5ndGg7Zy0tOyljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIGsoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1mdW5jdGlvbiBsKCl7fWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj1RKys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe2Zvcig7Yj1iW2RdOylpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W1AsZl07aWYoZyl7Zm9yKDtiPWJbZF07KWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2UgZm9yKDtiPWJbZF07KWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbTl18fChiW05dPXt9KSwoaD1pW2RdKSYmaFswXT09PVAmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiBvKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXtmb3IodmFyIGU9YS5sZW5ndGg7ZS0tOylpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gcChhLGMsZCl7Zm9yKHZhciBlPTAsZj1jLmxlbmd0aDtmPmU7ZSsrKWIoYSxjW2VdLGQpO3JldHVybiBkfWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiByKGEsYixjLGUsZixnKXtyZXR1cm4gZSYmIWVbTl0mJihlPXIoZSkpLGYmJiFmW05dJiYoZj1yKGYsZykpLGQoZnVuY3Rpb24oZCxnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHI9ZHx8cChifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscz0hYXx8IWQmJmI/cjpxKHIsbSxhLGgsaSksdD1jP2Z8fChkP2E6b3x8ZSk/W106ZzpzO2lmKGMmJmMocyx0LGgsaSksZSlmb3Ioaj1xKHQsbiksZShqLFtdLGgsaSksaz1qLmxlbmd0aDtrLS07KShsPWpba10pJiYodFtuW2tdXT0hKHNbbltrXV09bCkpO2lmKGQpe2lmKGZ8fGEpe2lmKGYpe2ZvcihqPVtdLGs9dC5sZW5ndGg7ay0tOykobD10W2tdKSYmai5wdXNoKHNba109bCk7ZihudWxsLHQ9W10saixpKX1mb3Ioaz10Lmxlbmd0aDtrLS07KShsPXRba10pJiYoaj1mP2FiKGQsbCk6bVtrXSk+LTEmJihkW2pdPSEoZ1tqXT1sKSl9fWVsc2UgdD1xKHQ9PT1nP3Quc3BsaWNlKG8sdC5sZW5ndGgpOnQpLGY/ZihudWxsLGcsdCxpKTokLmFwcGx5KGcsdCl9KX1mdW5jdGlvbiBzKGEpe2Zvcih2YXIgYixjLGQsZT1hLmxlbmd0aCxmPXcucmVsYXRpdmVbYVswXS50eXBlXSxnPWZ8fHcucmVsYXRpdmVbIiAiXSxoPWY/MTowLGk9bihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGcsITApLGo9bihmdW5jdGlvbihhKXtyZXR1cm4gYWIoYixhKT4tMX0sZywhMCksaz1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFmJiYoZHx8YyE9PUMpfHwoKGI9Yykubm9kZVR5cGU/aShhLGMsZCk6aihhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2U+aDtoKyspaWYoYz13LnJlbGF0aXZlW2FbaF0udHlwZV0paz1bbihvKGspLGMpXTtlbHNle2lmKGM9dy5maWx0ZXJbYVtoXS50eXBlXS5hcHBseShudWxsLGFbaF0ubWF0Y2hlcyksY1tOXSl7Zm9yKGQ9KytoO2U+ZCYmIXcucmVsYXRpdmVbYVtkXS50eXBlXTtkKyspO3JldHVybiByKGg+MSYmbyhrKSxoPjEmJm0oYS5zbGljZSgwLGgtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2gtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShpYiwiJDEiKSxjLGQ+aCYmcyhhLnNsaWNlKGgsZCkpLGU+ZCYmcyhhPWEuc2xpY2UoZCkpLGU+ZCYmbShhKSl9ay5wdXNoKGMpfXJldHVybiBvKGspfWZ1bmN0aW9uIHQoYSxjKXt2YXIgZT1jLmxlbmd0aD4wLGY9YS5sZW5ndGg+MCxnPWZ1bmN0aW9uKGQsZyxoLGksail7dmFyIGssbCxtLG49MCxvPSIwIixwPWQmJltdLHI9W10scz1DLHQ9ZHx8ZiYmdy5maW5kLlRBRygiKiIsaiksdT1QKz1udWxsPT1zPzE6TWF0aC5yYW5kb20oKXx8LjEsdj10Lmxlbmd0aDtmb3IoaiYmKEM9ZyE9PUcmJmcpO28hPT12JiZudWxsIT0oaz10W29dKTtvKyspe2lmKGYmJmspe2ZvcihsPTA7bT1hW2wrK107KWlmKG0oayxnLGgpKXtpLnB1c2goayk7YnJlYWt9aiYmKFA9dSl9ZSYmKChrPSFtJiZrKSYmbi0tLGQmJnAucHVzaChrKSl9aWYobis9byxlJiZvIT09bil7Zm9yKGw9MDttPWNbbCsrXTspbShwLHIsZyxoKTtpZihkKXtpZihuPjApZm9yKDtvLS07KXBbb118fHJbb118fChyW29dPVkuY2FsbChpKSk7cj1xKHIpfSQuYXBwbHkoaSxyKSxqJiYhZCYmci5sZW5ndGg+MCYmbitjLmxlbmd0aD4xJiZiLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGomJihQPXUsQz1zKSxwfTtyZXR1cm4gZT9kKGcpOmd9dmFyIHUsdix3LHgseSx6LEEsQixDLEQsRSxGLEcsSCxJLEosSyxMLE0sTj0ic2l6emxlIisxKm5ldyBEYXRlLE89YS5kb2N1bWVudCxQPTAsUT0wLFI9YygpLFM9YygpLFQ9YygpLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihFPSEwKSwwfSxWPTE8PDMxLFc9e30uaGFzT3duUHJvcGVydHksWD1bXSxZPVgucG9wLFo9WC5wdXNoLCQ9WC5wdXNoLF89WC5zbGljZSxhYj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sYmI9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixjYj0iW1xceDIwXFx0XFxyXFxuXFxmXSIsZGI9Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixlYj1kYi5yZXBsYWNlKCJ3IiwidyMiKSxmYj0iXFxbIitjYisiKigiK2RiKyIpKD86IitjYisiKihbKl4kfCF+XT89KSIrY2IrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitlYisiKSl8KSIrY2IrIipcXF0iLGdiPSI6KCIrZGIrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK2ZiKyIpKil8LiopXFwpfCkiLGhiPW5ldyBSZWdFeHAoY2IrIisiLCJnIiksaWI9bmV3IFJlZ0V4cCgiXiIrY2IrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrY2IrIiskIiwiZyIpLGpiPW5ldyBSZWdFeHAoIl4iK2NiKyIqLCIrY2IrIioiKSxrYj1uZXcgUmVnRXhwKCJeIitjYisiKihbPit+XXwiK2NiKyIpIitjYisiKiIpLGxiPW5ldyBSZWdFeHAoIj0iK2NiKyIqKFteXFxdJ1wiXSo/KSIrY2IrIipcXF0iLCJnIiksbWI9bmV3IFJlZ0V4cChnYiksbmI9bmV3IFJlZ0V4cCgiXiIrZWIrIiQiKSxvYj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitkYisiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitkYisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrZGIucmVwbGFjZSgidyIsIncqIikrIikiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK2ZiKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrZ2IpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrY2IrIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK2NiKyIqKD86KFsrLV18KSIrY2IrIiooXFxkKyl8KSkiK2NiKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitiYisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK2NiKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK2NiKyIqKCg/Oi1cXGQpP1xcZCopIitjYisiKlxcKXwpKD89W14tXXwkKSIsImkiKX0scGI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxxYj0vXmhcZCQvaSxyYj0vXltee10rXHtccypcW25hdGl2ZSBcdy8sc2I9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyx0Yj0vWyt+XS8sdWI9Lyd8XFwvZyx2Yj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK2NiKyI/fCgiK2NiKyIpfC4pIiwiaWciKSx3Yj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IjB4IitiLTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOjA+ZD9TdHJpbmcuZnJvbUNoYXJDb2RlKGQrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZkfDU2MzIwKX0seGI9ZnVuY3Rpb24oKXtGKCl9O3RyeXskLmFwcGx5KFg9Xy5jYWxsKE8uY2hpbGROb2RlcyksTy5jaGlsZE5vZGVzKSxYW08uY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKHliKXskPXthcHBseTpYLmxlbmd0aD9mdW5jdGlvbihhLGIpe1ouYXBwbHkoYSxfLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPTA7YVtjKytdPWJbZCsrXTspO2EubGVuZ3RoPWMtMX19fXY9Yi5zdXBwb3J0PXt9LHk9Yi5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/IkhUTUwiIT09Yi5ub2RlTmFtZTohMX0sRj1iLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hP2Eub3duZXJEb2N1bWVudHx8YTpPO3JldHVybiBkIT09RyYmOT09PWQubm9kZVR5cGUmJmQuZG9jdW1lbnRFbGVtZW50PyhHPWQsSD1kLmRvY3VtZW50RWxlbWVudCxjPWQuZGVmYXVsdFZpZXcsYyYmYyE9PWMudG9wJiYoYy5hZGRFdmVudExpc3RlbmVyP2MuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIix4YiwhMSk6Yy5hdHRhY2hFdmVudCYmYy5hdHRhY2hFdmVudCgib251bmxvYWQiLHhiKSksST0heShkKSx2LmF0dHJpYnV0ZXM9ZShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSx2LmdldEVsZW1lbnRzQnlUYWdOYW1lPWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZC5jcmVhdGVDb21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSx2LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9cmIudGVzdChkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLHYuZ2V0QnlJZD1lKGZ1bmN0aW9uKGEpe3JldHVybiBILmFwcGVuZENoaWxkKGEpLmlkPU4sIWQuZ2V0RWxlbWVudHNCeU5hbWV8fCFkLmdldEVsZW1lbnRzQnlOYW1lKE4pLmxlbmd0aH0pLHYuZ2V0QnlJZD8ody5maW5kLklEPWZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZJKXt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBjJiZjLnBhcmVudE5vZGU/W2NdOltdfX0sdy5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHZiLHdiKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19KTooZGVsZXRlIHcuZmluZC5JRCx3LmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodmIsd2IpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBjJiZjLnZhbHVlPT09Yn19KSx3LmZpbmQuVEFHPXYuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWU/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTp2LnFzYT9iLnF1ZXJ5U2VsZWN0b3JBbGwoYSk6dm9pZCAwfTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT0wLGY9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXtmb3IoO2M9ZltlKytdOykxPT09Yy5ub2RlVHlwZSYmZC5wdXNoKGMpO3JldHVybiBkfXJldHVybiBmfSx3LmZpbmQuQ0xBU1M9di5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGIpe3JldHVybiBJP2IuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKTp2b2lkIDB9LEs9W10sSj1bXSwodi5xc2E9cmIudGVzdChkLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGUoZnVuY3Rpb24oYSl7SC5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUw9IjxhIGlkPSciK04rIic+PC9hPjxzZWxlY3QgaWQ9JyIrTisiLVxmXScgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJkoucHVzaCgiWypeJF09IitjYisiKig/OicnfFwiXCIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxKLnB1c2goIlxcWyIrY2IrIiooPzp2YWx1ZXwiK2JiKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrTisiLV0iKS5sZW5ndGh8fEoucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxKLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrTisiKyoiKS5sZW5ndGh8fEoucHVzaCgiLiMuK1srfl0iKX0pLGUoZnVuY3Rpb24oYSl7dmFyIGI9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmSi5wdXNoKCJuYW1lIitjYisiKlsqXiR8IX5dPz0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxKLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksSi5wdXNoKCIsLio6Iil9KSksKHYubWF0Y2hlc1NlbGVjdG9yPXJiLnRlc3QoTD1ILm1hdGNoZXN8fEgud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxILm1vek1hdGNoZXNTZWxlY3Rvcnx8SC5vTWF0Y2hlc1NlbGVjdG9yfHxILm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmUoZnVuY3Rpb24oYSl7di5kaXNjb25uZWN0ZWRNYXRjaD1MLmNhbGwoYSwiZGl2IiksTC5jYWxsKGEsIltzIT0nJ106eCIpLEsucHVzaCgiIT0iLGdiKX0pLEo9Si5sZW5ndGgmJm5ldyBSZWdFeHAoSi5qb2luKCJ8IikpLEs9Sy5sZW5ndGgmJm5ldyBSZWdFeHAoSy5qb2luKCJ8IikpLGI9cmIudGVzdChILmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSxNPWJ8fHJiLnRlc3QoSC5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKWZvcig7Yj1iLnBhcmVudE5vZGU7KWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxVPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gRT0hMCwwO3ZhciBjPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBjP2M6KGM9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZjfHwhdi5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1jP2E9PT1kfHxhLm93bmVyRG9jdW1lbnQ9PT1PJiZNKE8sYSk/LTE6Yj09PWR8fGIub3duZXJEb2N1bWVudD09PU8mJk0oTyxiKT8xOkQ/YWIoRCxhKS1hYihELGIpOjA6NCZjPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBFPSEwLDA7dmFyIGMsZT0wLGY9YS5wYXJlbnROb2RlLGg9Yi5wYXJlbnROb2RlLGk9W2FdLGo9W2JdO2lmKCFmfHwhaClyZXR1cm4gYT09PWQ/LTE6Yj09PWQ/MTpmPy0xOmg/MTpEP2FiKEQsYSktYWIoRCxiKTowO2lmKGY9PT1oKXJldHVybiBnKGEsYik7Zm9yKGM9YTtjPWMucGFyZW50Tm9kZTspaS51bnNoaWZ0KGMpO2ZvcihjPWI7Yz1jLnBhcmVudE5vZGU7KWoudW5zaGlmdChjKTtmb3IoO2lbZV09PT1qW2VdOyllKys7cmV0dXJuIGU/ZyhpW2VdLGpbZV0pOmlbZV09PT1PPy0xOmpbZV09PT1PPzE6MH0sZCk6R30sYi5tYXRjaGVzPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIoYSxudWxsLG51bGwsYyl9LGIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpLGM9Yy5yZXBsYWNlKGxiLCI9JyQxJ10iKSwhKCF2Lm1hdGNoZXNTZWxlY3Rvcnx8IUl8fEsmJksudGVzdChjKXx8SiYmSi50ZXN0KGMpKSl0cnl7dmFyIGQ9TC5jYWxsKGEsYyk7aWYoZHx8di5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gYihjLEcsbnVsbCxbYV0pLmxlbmd0aD4wfSxiLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpLE0oYSxiKX0sYi5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpO3ZhciBjPXcuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGQ9YyYmVy5jYWxsKHcuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2MoYSxiLCFJKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWQ/ZDp2LmF0dHJpYnV0ZXN8fCFJP2EuZ2V0QXR0cmlidXRlKGIpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0sYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGIudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9MCxlPTA7aWYoRT0hdi5kZXRlY3REdXBsaWNhdGVzLEQ9IXYuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoVSksRSl7Zm9yKDtiPWFbZSsrXTspYj09PWFbZV0mJihkPWMucHVzaChlKSk7Zm9yKDtkLS07KWEuc3BsaWNlKGNbZF0sMSl9cmV0dXJuIEQ9bnVsbCxhfSx4PWIuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjPSIiLGQ9MCxlPWEubm9kZVR5cGU7aWYoZSl7aWYoMT09PWV8fDk9PT1lfHwxMT09PWUpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9eChhKX1lbHNlIGlmKDM9PT1lfHw0PT09ZSlyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2I9YVtkKytdOyljKz14KGIpO3JldHVybiBjfSx3PWIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86ZCxtYXRjaDpvYixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKHZiLHdiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZSh2Yix3YiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGIuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmYi5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gb2IuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmbWIudGVzdChjKSYmKGI9eihjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodmIsd2IpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPVJbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK2NiKyIpIithKyIoIitjYisifCQpIikpJiZSKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGY9Yi5hdHRyKGUsYSk7cmV0dXJuIG51bGw9PWY/IiE9Ij09PWM6Yz8oZis9IiIsIj0iPT09Yz9mPT09ZDoiIT0iPT09Yz9mIT09ZDoiXj0iPT09Yz9kJiYwPT09Zi5pbmRleE9mKGQpOiIqPSI9PT1jP2QmJmYuaW5kZXhPZihkKT4tMToiJD0iPT09Yz9kJiZmLnNsaWNlKC1kLmxlbmd0aCk9PT1kOiJ+PSI9PT1jPygiICIrZi5yZXBsYWNlKGhiLCIgIikrIiAiKS5pbmRleE9mKGQpPi0xOiJ8PSI9PT1jP2Y9PT1kfHxmLnNsaWNlKDAsZC5sZW5ndGgrMSk9PT1kKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe2Zvcig7cDspe2ZvcihsPWI7bD1sW3BdOylpZihoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXtmb3Ioaz1xW05dfHwocVtOXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT1QJiZqWzFdLG09alswXT09PVAmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07bD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCk7KWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVtQLG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbTl18fChiW05dPXt9KSlbYV0pJiZqWzBdPT09UCltPWpbMV07ZWxzZSBmb3IoOyhsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSkmJigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1yOjEhPT1sLm5vZGVUeXBlKXx8ISsrbXx8KHMmJigobFtOXXx8KGxbTl09e30pKVthXT1bUCxtXSksbCE9PWIpKTspO3JldHVybiBtLT1lLG09PT1kfHxtJWQ9PT0wJiZtL2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYyl7dmFyIGUsZj13LnBzZXVkb3NbYV18fHcuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGZbTl0/ZihjKTpmLmxlbmd0aD4xPyhlPVthLGEsIiIsY10sdy5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/ZChmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlPWYoYSxjKSxnPWUubGVuZ3RoO2ctLTspZD1hYihhLGVbZ10pLGFbZF09IShiW2RdPWVbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGYoYSwwLGUpfSk6Zn19LHBzZXVkb3M6e25vdDpkKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZT1BKGEucmVwbGFjZShpYiwiJDEiKSk7cmV0dXJuIGVbTl0/ZChmdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGYsZz1lKGEsbnVsbCxkLFtdKSxoPWEubGVuZ3RoO2gtLTspKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGQsZil7cmV0dXJuIGJbMF09YSxlKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19KSxoYXM6ZChmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGIoYSxjKS5sZW5ndGg+MH19KSxjb250YWluczpkKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZSh2Yix3YiksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHx4KGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6ZChmdW5jdGlvbihhKXtyZXR1cm4gbmIudGVzdChhfHwiIil8fGIuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UodmIsd2IpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1JP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PUh9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09Ry5hY3RpdmVFbGVtZW50JiYoIUcuaGFzRm9jdXN8fEcuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIXcucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBxYi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gcGIudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6aihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6aihmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6aihmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOmooZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6aihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0OmooZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpqKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LHcucHNldWRvcy5udGg9dy5wc2V1ZG9zLmVxO2Zvcih1IGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KXcucHNldWRvc1t1XT1oKHUpO2Zvcih1IGlue3N1Ym1pdDohMCxyZXNldDohMH0pdy5wc2V1ZG9zW3VdPWkodSk7cmV0dXJuIGwucHJvdG90eXBlPXcuZmlsdGVycz13LnBzZXVkb3Msdy5zZXRGaWx0ZXJzPW5ldyBsLHo9Yi50b2tlbml6ZT1mdW5jdGlvbihhLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9U1thKyIgIl07aWYoaylyZXR1cm4gYz8wOmsuc2xpY2UoMCk7Zm9yKGg9YSxpPVtdLGo9dy5wcmVGaWx0ZXI7aDspeyghZHx8KGU9amIuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksZD0hMSwoZT1rYi5leGVjKGgpKSYmKGQ9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6ZCx0eXBlOmVbMF0ucmVwbGFjZShpYiwiICIpfSksaD1oLnNsaWNlKGQubGVuZ3RoKSk7Zm9yKGcgaW4gdy5maWx0ZXIpIShlPW9iW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChkPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmQsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShkLmxlbmd0aCkpO2lmKCFkKWJyZWFrfXJldHVybiBjP2gubGVuZ3RoOmg/Yi5lcnJvcihhKTpTKGEsaSkuc2xpY2UoMCl9LEE9Yi5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9VFthKyIgIl07aWYoIWYpe2ZvcihifHwoYj16KGEpKSxjPWIubGVuZ3RoO2MtLTspZj1zKGJbY10pLGZbTl0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPVQoYSx0KGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0sQj1iLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbD0hZCYmeihhPWouc2VsZWN0b3J8fGEpO2lmKGM9Y3x8W10sMT09PWwubGVuZ3RoKXtpZihmPWxbMF09bFswXS5zbGljZSgwKSxmLmxlbmd0aD4yJiYiSUQiPT09KGc9ZlswXSkudHlwZSYmdi5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmSSYmdy5yZWxhdGl2ZVtmWzFdLnR5cGVdKXtpZihiPSh3LmZpbmQuSUQoZy5tYXRjaGVzWzBdLnJlcGxhY2UodmIsd2IpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGM7aiYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoZi5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKGU9b2IubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpmLmxlbmd0aDtlLS0mJihnPWZbZV0sIXcucmVsYXRpdmVbaD1nLnR5cGVdKTspaWYoKGk9dy5maW5kW2hdKSYmKGQ9aShnLm1hdGNoZXNbMF0ucmVwbGFjZSh2Yix3YiksdGIudGVzdChmWzBdLnR5cGUpJiZrKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoZi5zcGxpY2UoZSwxKSxhPWQubGVuZ3RoJiZtKGYpLCFhKXJldHVybiAkLmFwcGx5KGMsZCksYzticmVha319cmV0dXJuKGp8fEEoYSxsKSkoZCxiLCFJLGMsdGIudGVzdChhKSYmayhiLnBhcmVudE5vZGUpfHxiKSxjfSx2LnNvcnRTdGFibGU9Ti5zcGxpdCgiIikuc29ydChVKS5qb2luKCIiKT09PU4sdi5kZXRlY3REdXBsaWNhdGVzPSEhRSxGKCksdi5zb3J0RGV0YWNoZWQ9ZShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEcuY3JlYXRlRWxlbWVudCgiZGl2IikpfSksZShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSx2LmF0dHJpYnV0ZXMmJmUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8ZigidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8ImlucHV0IiE9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxlKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmKGJiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxifShhKTtfLmZpbmQ9ZWIsXy5leHByPWViLnNlbGVjdG9ycyxfLmV4cHJbIjoiXT1fLmV4cHIucHNldWRvcyxfLnVuaXF1ZT1lYi51bmlxdWVTb3J0LF8udGV4dD1lYi5nZXRUZXh0LF8uaXNYTUxEb2M9ZWIuaXNYTUwsXy5jb250YWlucz1lYi5jb250YWluczt2YXIgZmI9Xy5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxnYj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLGhiPS9eLlteOiNcW1wuLF0qJC87Xy5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/Xy5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTpfLmZpbmQubWF0Y2hlcyhhLF8uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sXy5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmxlbmd0aCxkPVtdLGU9dGhpczsKaWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhfKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7Yz5iO2IrKylpZihfLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGI9MDtjPmI7YisrKV8uZmluZChhLGVbYl0sZCk7cmV0dXJuIGQ9dGhpcy5wdXNoU3RhY2soYz4xP18udW5pcXVlKGQpOmQpLGQuc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsZH0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkKHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkKHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFkKHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZmYi50ZXN0KGEpP18oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgaWIsamI9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxrYj1fLmZuLmluaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO2lmKCFhKXJldHVybiB0aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoYz0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOmpiLmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8aWIpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGNbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIF8/YlswXTpiLF8ubWVyZ2UodGhpcyxfLnBhcnNlSFRNTChjWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOlosITApKSxnYi50ZXN0KGNbMV0pJiZfLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYilfLmlzRnVuY3Rpb24odGhpc1tjXSk/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31yZXR1cm4gZD1aLmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSYmKHRoaXMubGVuZ3RoPTEsdGhpc1swXT1kKSx0aGlzLmNvbnRleHQ9Wix0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOl8uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIGliLnJlYWR5P2liLnJlYWR5KGEpOmEoXyk6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksXy5tYWtlQXJyYXkoYSx0aGlzKSl9O2tiLnByb3RvdHlwZT1fLmZuLGliPV8oWik7dmFyIGxiPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLG1iPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O18uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1bXSxlPXZvaWQgMCE9PWM7KGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlOylpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmXyhhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksXy5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1fKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDtjPmE7YSsrKWlmKF8uY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz1mYi50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/XyhhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmXy5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP18udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/VS5jYWxsKF8oYSksdGhpc1swXSk6VS5jYWxsKHRoaXMsYS5qcXVlcnk/YVswXTphKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhfLnVuaXF1ZShfLm1lcmdlKHRoaXMuZ2V0KCksXyhhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KSxfLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gZShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gXy5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gXy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIF8uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIF8uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fF8ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Xy5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPV8ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9Xy5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKG1iW2FdfHxfLnVuaXF1ZShlKSxsYi50ZXN0KGEpJiZlLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIG5iPS9cUysvZyxvYj17fTtfLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9vYlthXXx8ZihhKTpfLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxnLGgsaT1bXSxqPSFhLm9uY2UmJltdLGs9ZnVuY3Rpb24oZil7Zm9yKGI9YS5tZW1vcnkmJmYsYz0hMCxoPWV8fDAsZT0wLGc9aS5sZW5ndGgsZD0hMDtpJiZnPmg7aCsrKWlmKGlbaF0uYXBwbHkoZlswXSxmWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtiPSExO2JyZWFrfWQ9ITEsaSYmKGo/ai5sZW5ndGgmJmsoai5zaGlmdCgpKTpiP2k9W106bC5kaXNhYmxlKCkpfSxsPXthZGQ6ZnVuY3Rpb24oKXtpZihpKXt2YXIgYz1pLmxlbmd0aDshZnVuY3Rpb24gZihiKXtfLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPV8udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmbC5oYXMoYyl8fGkucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksZD9nPWkubGVuZ3RoOmImJihlPWMsayhiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBpJiZfLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjOyhjPV8uaW5BcnJheShiLGksYykpPi0xOylpLnNwbGljZShjLDEpLGQmJihnPj1jJiZnLS0saD49YyYmaC0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9fLmluQXJyYXkoYSxpKT4tMTohKCFpfHwhaS5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBpPVtdLGc9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9aj1iPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFpfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGo9dm9pZCAwLGJ8fGwuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFqfSxmaXJlV2l0aDpmdW5jdGlvbihhLGIpe3JldHVybiFpfHxjJiYhanx8KGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxkP2oucHVzaChiKTprKGIpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFjfX07cmV0dXJuIGx9LF8uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsXy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixfLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixfLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIF8uRGVmZXJyZWQoZnVuY3Rpb24oYyl7Xy5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1fLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJl8uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/Xy5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixfLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9MCxmPVIuY2FsbChhcmd1bWVudHMpLGc9Zi5sZW5ndGgsaD0xIT09Z3x8YSYmXy5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZzowLGk9MT09PWg/YTpfLkRlZmVycmVkKCksaj1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2NbYV09dGhpcyxkW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9SLmNhbGwoYXJndW1lbnRzKTplLGQ9PT1iP2kubm90aWZ5V2l0aChjLGQpOi0taHx8aS5yZXNvbHZlV2l0aChjLGQpfX07aWYoZz4xKWZvcihiPW5ldyBBcnJheShnKSxjPW5ldyBBcnJheShnKSxkPW5ldyBBcnJheShnKTtnPmU7ZSsrKWZbZV0mJl8uaXNGdW5jdGlvbihmW2VdLnByb21pc2UpP2ZbZV0ucHJvbWlzZSgpLmRvbmUoaihlLGQsZikpLmZhaWwoaS5yZWplY3QpLnByb2dyZXNzKGooZSxjLGIpKTotLWg7cmV0dXJuIGh8fGkucmVzb2x2ZVdpdGgoZCxmKSxpLnByb21pc2UoKX19KTt2YXIgcGI7Xy5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gXy5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxfLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9fLnJlYWR5V2FpdCsrOl8ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tXy5yZWFkeVdhaXQ6Xy5pc1JlYWR5KXx8KF8uaXNSZWFkeT0hMCxhIT09ITAmJi0tXy5yZWFkeVdhaXQ+MHx8KHBiLnJlc29sdmVXaXRoKFosW19dKSxfLmZuLnRyaWdnZXJIYW5kbGVyJiYoXyhaKS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxfKFopLm9mZigicmVhZHkiKSkpKX19KSxfLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7cmV0dXJuIHBifHwocGI9Xy5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT1aLnJlYWR5U3RhdGU/c2V0VGltZW91dChfLnJlYWR5KTooWi5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGcsITEpKSkscGIucHJvbWlzZShiKX0sXy5yZWFkeS5wcm9taXNlKCk7dmFyIHFiPV8uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1fLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylfLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxfLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwoXyhhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfTtfLmFjY2VwdERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2RlVHlwZXx8ISthLm5vZGVUeXBlfSxoLnVpZD0xLGguYWNjZXB0cz1fLmFjY2VwdERhdGEsaC5wcm90b3R5cGU9e2tleTpmdW5jdGlvbihhKXtpZighaC5hY2NlcHRzKGEpKXJldHVybiAwO3ZhciBiPXt9LGM9YVt0aGlzLmV4cGFuZG9dO2lmKCFjKXtjPWgudWlkKys7dHJ5e2JbdGhpcy5leHBhbmRvXT17dmFsdWU6Y30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYSxiKX1jYXRjaChkKXtiW3RoaXMuZXhwYW5kb109YyxfLmV4dGVuZChhLGIpfX1yZXR1cm4gdGhpcy5jYWNoZVtjXXx8KHRoaXMuY2FjaGVbY109e30pLGN9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmtleShhKSxmPXRoaXMuY2FjaGVbZV07aWYoInN0cmluZyI9PXR5cGVvZiBiKWZbYl09YztlbHNlIGlmKF8uaXNFbXB0eU9iamVjdChmKSlfLmV4dGVuZCh0aGlzLmNhY2hlW2VdLGIpO2Vsc2UgZm9yKGQgaW4gYilmW2RdPWJbZF07cmV0dXJuIGZ9LGdldDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY2FjaGVbdGhpcy5rZXkoYSldO3JldHVybiB2b2lkIDA9PT1iP2M6Y1tiXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jPyhkPXRoaXMuZ2V0KGEsYiksdm9pZCAwIT09ZD9kOnRoaXMuZ2V0KGEsXy5jYW1lbENhc2UoYikpKToodGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PWM/YzpiKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpcy5rZXkoYSksZz10aGlzLmNhY2hlW2ZdO2lmKHZvaWQgMD09PWIpdGhpcy5jYWNoZVtmXT17fTtlbHNle18uaXNBcnJheShiKT9kPWIuY29uY2F0KGIubWFwKF8uY2FtZWxDYXNlKSk6KGU9Xy5jYW1lbENhc2UoYiksYiBpbiBnP2Q9W2IsZV06KGQ9ZSxkPWQgaW4gZz9bZF06ZC5tYXRjaChuYil8fFtdKSksYz1kLmxlbmd0aDtmb3IoO2MtLTspZGVsZXRlIGdbZFtjXV19fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiFfLmlzRW1wdHlPYmplY3QodGhpcy5jYWNoZVthW3RoaXMuZXhwYW5kb11dfHx7fSl9LGRpc2NhcmQ6ZnVuY3Rpb24oYSl7YVt0aGlzLmV4cGFuZG9dJiZkZWxldGUgdGhpcy5jYWNoZVthW3RoaXMuZXhwYW5kb11dfX07dmFyIHJiPW5ldyBoLHNiPW5ldyBoLHRiPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sdWI9LyhbQS1aXSkvZztfLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gc2IuaGFzRGF0YShhKXx8cmIuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHNiLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtzYi5yZW1vdmUoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByYi5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3JiLnJlbW92ZShhLGIpfX0pLF8uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9c2IuZ2V0KGYpLDE9PT1mLm5vZGVUeXBlJiYhcmIuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Zm9yKGM9Zy5sZW5ndGg7Yy0tOylnW2NdJiYoZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhPZigiZGF0YS0iKSYmKGQ9Xy5jYW1lbENhc2UoZC5zbGljZSg1KSksaShmLGQsZVtkXSkpKTtyYi5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3NiLnNldCh0aGlzLGEpfSk6cWIodGhpcyxmdW5jdGlvbihiKXt2YXIgYyxkPV8uY2FtZWxDYXNlKGEpO2lmKGYmJnZvaWQgMD09PWIpe2lmKGM9c2IuZ2V0KGYsYSksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPXNiLmdldChmLGQpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1pKGYsZCx2b2lkIDApLHZvaWQgMCE9PWMpcmV0dXJuIGN9ZWxzZSB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1zYi5nZXQodGhpcyxkKTtzYi5zZXQodGhpcyxkLGIpLC0xIT09YS5pbmRleE9mKCItIikmJnZvaWQgMCE9PWMmJnNiLnNldCh0aGlzLGEsYil9KX0sbnVsbCxiLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7c2IucmVtb3ZlKHRoaXMsYSl9KX19KSxfLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9cmIuZ2V0KGEsYiksYyYmKCFkfHxfLmlzQXJyYXkoYyk/ZD1yYi5hY2Nlc3MoYSxiLF8ubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Xy5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1fLl9xdWV1ZUhvb2tzKGEsYiksZz1mdW5jdGlvbigpe18uZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiByYi5nZXQoYSxjKXx8cmIuYWNjZXNzKGEsYyx7ZW1wdHk6Xy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7cmIucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLF8uZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9fLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPV8ucXVldWUodGhpcyxhLGIpO18uX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmXy5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Xy5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPV8uRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07Zm9yKCJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO2ctLTspYz1yYi5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIHZiPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLHdiPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0seGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PV8uY3NzKGEsImRpc3BsYXkiKXx8IV8uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSx5Yj0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2YXIgYT1aLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxiPWEuYXBwZW5kQ2hpbGQoWi5jcmVhdGVFbGVtZW50KCJkaXYiKSksYz1aLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGMuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGMuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGIuYXBwZW5kQ2hpbGQoYyksWS5jaGVja0Nsb25lPWIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixZLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWV9KCk7dmFyIHpiPSJ1bmRlZmluZWQiO1kuZm9jdXNpbkJ1YmJsZXM9Im9uZm9jdXNpbiJpbiBhO3ZhciBBYj0vXmtleS8sQmI9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51KXxjbGljay8sQ2I9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLERiPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87Xy5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1yYi5nZXQoYSk7aWYocSlmb3IoYy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPV8uZ3VpZCsrKSwoaT1xLmV2ZW50cyl8fChpPXEuZXZlbnRzPXt9KSwoZz1xLmhhbmRsZSl8fChnPXEuaGFuZGxlPWZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgXyE9PXpiJiZfLmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9fLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0Y2gobmIpfHxbIiJdLGo9Yi5sZW5ndGg7ai0tOyloPURiLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1fLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1fLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9Xy5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmXy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZywhMSkpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxfLmV2ZW50Lmdsb2JhbFtuXT0hMCl9LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1yYi5oYXNEYXRhKGEpJiZyYi5nZXQoYSk7aWYocSYmKGk9cS5ldmVudHMpKXtmb3IoYj0oYnx8IiIpLm1hdGNoKG5iKXx8WyIiXSxqPWIubGVuZ3RoO2otLTspaWYoaD1EYi5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbil7Zm9yKGw9Xy5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxuLG09aVtuXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitvLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGc9Zj1tLmxlbmd0aDtmLS07KWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8Xy5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpXy5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtfLmlzRW1wdHlPYmplY3QoaSkmJihkZWxldGUgcS5oYW5kbGUscmIucmVtb3ZlKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbT1bZHx8Wl0sbj1YLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLG89WC5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoZz1oPWQ9ZHx8WiwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiFDYi50ZXN0KG4rXy5ldmVudC50cmlnZ2VyZWQpJiYobi5pbmRleE9mKCIuIik+PTAmJihvPW4uc3BsaXQoIi4iKSxuPW8uc2hpZnQoKSxvLnNvcnQoKSksaj1uLmluZGV4T2YoIjoiKTwwJiYib24iK24sYj1iW18uZXhwYW5kb10/YjpuZXcgXy5FdmVudChuLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMsYi5uYW1lc3BhY2U9by5qb2luKCIuIiksYi5uYW1lc3BhY2VfcmU9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9bYl06Xy5tYWtlQXJyYXkoYyxbYl0pLGw9Xy5ldmVudC5zcGVjaWFsW25dfHx7fSxlfHwhbC50cmlnZ2VyfHxsLnRyaWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFsLm5vQnViYmxlJiYhXy5pc1dpbmRvdyhkKSl7Zm9yKGk9bC5kZWxlZ2F0ZVR5cGV8fG4sQ2IudGVzdChpK24pfHwoZz1nLnBhcmVudE5vZGUpO2c7Zz1nLnBhcmVudE5vZGUpbS5wdXNoKGcpLGg9ZztoPT09KGQub3duZXJEb2N1bWVudHx8WikmJm0ucHVzaChoLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvd3x8YSl9Zm9yKGY9MDsoZz1tW2YrK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyliLnR5cGU9Zj4xP2k6bC5iaW5kVHlwZXx8bixrPShyYi5nZXQoZywiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZyYi5nZXQoZywiaGFuZGxlIiksayYmay5hcHBseShnLGMpLGs9aiYmZ1tqXSxrJiZrLmFwcGx5JiZfLmFjY2VwdERhdGEoZykmJihiLnJlc3VsdD1rLmFwcGx5KGcsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPW4sZXx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bC5fZGVmYXVsdCYmbC5fZGVmYXVsdC5hcHBseShtLnBvcCgpLGMpIT09ITF8fCFfLmFjY2VwdERhdGEoZCl8fGomJl8uaXNGdW5jdGlvbihkW25dKSYmIV8uaXNXaW5kb3coZCkmJihoPWRbal0saCYmKGRbal09bnVsbCksXy5ldmVudC50cmlnZ2VyZWQ9bixkW25dKCksXy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGgmJihkW2pdPWgpKSxiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9Xy5ldmVudC5maXgoYSk7dmFyIGIsYyxkLGUsZixnPVtdLGg9Ui5jYWxsKGFyZ3VtZW50cyksaT0ocmIuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saj1fLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaFswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhai5wcmVEaXNwYXRjaHx8ai5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7Zm9yKGc9Xy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYSxpKSxiPTA7KGU9Z1tiKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZm9yKGEuY3VycmVudFRhcmdldD1lLmVsZW0sYz0wOyhmPWUuaGFuZGxlcnNbYysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZi5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWYsYS5kYXRhPWYuZGF0YSxkPSgoXy5ldmVudC5zcGVjaWFsW2Yub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxmLmhhbmRsZXIpLmFwcGx5KGUuZWxlbSxoKSx2b2lkIDAhPT1kJiYoYS5yZXN1bHQ9ZCk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIGoucG9zdERpc3BhdGNoJiZqLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPT10aGlzO2k9aS5wYXJlbnROb2RlfHx0aGlzKWlmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWEudHlwZSl7Zm9yKGQ9W10sYz0wO2g+YztjKyspZj1iW2NdLGU9Zi5zZWxlY3RvcisiICIsdm9pZCAwPT09ZFtlXSYmKGRbZV09Zi5uZWVkc0NvbnRleHQ/XyhlLHRoaXMpLmluZGV4KGkpPj0wOl8uZmluZChlLHRoaXMsbnVsbCxbaV0pLmxlbmd0aCksZFtlXSYmZC5wdXNoKGYpO2QubGVuZ3RoJiZnLnB1c2goe2VsZW06aSxoYW5kbGVyczpkfSl9cmV0dXJuIGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b247cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGM9YS50YXJnZXQub3duZXJEb2N1bWVudHx8WixkPWMuZG9jdW1lbnRFbGVtZW50LGU9Yy5ib2R5LGEucGFnZVg9Yi5jbGllbnRYKyhkJiZkLnNjcm9sbExlZnR8fGUmJmUuc2Nyb2xsTGVmdHx8MCktKGQmJmQuY2xpZW50TGVmdHx8ZSYmZS5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZCYmZC5zY3JvbGxUb3B8fGUmJmUuc2Nyb2xsVG9wfHwwKS0oZCYmZC5jbGllbnRUb3B8fGUmJmUuY2xpZW50VG9wfHwwKSksYS53aGljaHx8dm9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6MiZmPzM6NCZmPzI6MCksYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW18uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Zm9yKGd8fCh0aGlzLmZpeEhvb2tzW2VdPWc9QmIudGVzdChlKT90aGlzLm1vdXNlSG9va3M6QWIudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBfLkV2ZW50KGYpLGI9ZC5sZW5ndGg7Yi0tOyljPWRbYl0sYVtjXT1mW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PVopLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGcuZmlsdGVyP2cuZmlsdGVyKGEsZik6YX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMhPT1sKCkmJnRoaXMuZm9jdXM/KHRoaXMuZm9jdXMoKSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1sKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljayYmXy5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPV8uZXh0ZW5kKG5ldyBfLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9fLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOl8uZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LF8ucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9LF8uRXZlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF8uRXZlbnQ/KGEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmYS5yZXR1cm5WYWx1ZT09PSExP2o6ayk6dGhpcy50eXBlPWEsYiYmXy5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Xy5ub3coKSx0aGlzW18uZXhwYW5kb109ITAsdm9pZCAwKTpuZXcgXy5FdmVudChhLGIpfSxfLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWosYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1qLGEmJmEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1qLGEmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxfLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7Xy5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhXy5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksWS5mb2N1c2luQnViYmxlc3x8Xy5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe18uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxfLmV2ZW50LmZpeChhKSwhMCl9O18uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1yYi5hY2Nlc3MoZCxiKTtlfHxkLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKSxyYi5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1yYi5hY2Nlc3MoZCxiKS0xO2U/cmIuYWNjZXNzKGQsYixlKTooZC5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCkscmIucmVtb3ZlKGQsYikpfX19KSxfLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZyBpbiBhKXRoaXMub24oZyxiLGMsYVtnXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIsYz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKTooZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWs7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihmPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gXygpLm9mZihhKSxmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWYuZ3VpZHx8KGYuZ3VpZD1fLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe18uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixfKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWspLHRoaXMuZWFjaChmdW5jdGlvbigpe18uZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Xy5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/Xy5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSk7dmFyIEViPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksRmI9LzwoW1x3Ol0rKS8sR2I9Lzx8JiM/XHcrOy8sSGI9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxJYj0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxKYj0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksS2I9L150cnVlXC8oLiopLyxMYj0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csTWI9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtNYi5vcHRncm91cD1NYi5vcHRpb24sTWIudGJvZHk9TWIudGZvb3Q9TWIuY29sZ3JvdXA9TWIuY2FwdGlvbj1NYi50aGVhZCxNYi50aD1NYi50ZCxfLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jbG9uZU5vZGUoITApLGk9Xy5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYoIShZLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxfLmlzWE1MRG9jKGEpKSlmb3IoZz1yKGgpLGY9cihhKSxkPTAsZT1mLmxlbmd0aDtlPmQ7ZCsrKXMoZltkXSxnW2RdKTtpZihiKWlmKGMpZm9yKGY9Znx8cihhKSxnPWd8fHIoaCksZD0wLGU9Zi5sZW5ndGg7ZT5kO2QrKylxKGZbZF0sZ1tkXSk7ZWxzZSBxKGEsaCk7cmV0dXJuIGc9cihoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZwKGcsIWkmJnIoYSwic2NyaXB0IikpLGh9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixrPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGw9W10sbT0wLG49YS5sZW5ndGg7bj5tO20rKylpZihlPWFbbV0sZXx8MD09PWUpaWYoIm9iamVjdCI9PT1fLnR5cGUoZSkpXy5tZXJnZShsLGUubm9kZVR5cGU/W2VdOmUpO2Vsc2UgaWYoR2IudGVzdChlKSl7Zm9yKGY9Znx8ay5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxnPShGYi5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGg9TWJbZ118fE1iLl9kZWZhdWx0LGYuaW5uZXJIVE1MPWhbMV0rZS5yZXBsYWNlKEViLCI8JDE+PC8kMj4iKStoWzJdLGo9aFswXTtqLS07KWY9Zi5sYXN0Q2hpbGQ7Xy5tZXJnZShsLGYuY2hpbGROb2RlcyksZj1rLmZpcnN0Q2hpbGQsZi50ZXh0Q29udGVudD0iIn1lbHNlIGwucHVzaChiLmNyZWF0ZVRleHROb2RlKGUpKTtmb3Ioay50ZXh0Q29udGVudD0iIixtPTA7ZT1sW20rK107KWlmKCghZHx8LTE9PT1fLmluQXJyYXkoZSxkKSkmJihpPV8uY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpLGY9cihrLmFwcGVuZENoaWxkKGUpLCJzY3JpcHQiKSxpJiZwKGYpLGMpKWZvcihqPTA7ZT1mW2orK107KUpiLnRlc3QoZS50eXBlfHwiIikmJmMucHVzaChlKTtyZXR1cm4ga30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZSxmPV8uZXZlbnQuc3BlY2lhbCxnPTA7dm9pZCAwIT09KGM9YVtnXSk7ZysrKXtpZihfLmFjY2VwdERhdGEoYykmJihlPWNbcmIuZXhwYW5kb10sZSYmKGI9cmIuY2FjaGVbZV0pKSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZltkXT9fLmV2ZW50LnJlbW92ZShjLGQpOl8ucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtyYi5jYWNoZVtlXSYmZGVsZXRlIHJiLmNhY2hlW2VdfWRlbGV0ZSBzYi5jYWNoZVtjW3NiLmV4cGFuZG9dXX19fSksXy5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/Xy50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7KDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKSYmKHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPW0odGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1tKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9fLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8Xy5jbGVhbkRhdGEocihjKSksYy5wYXJlbnROb2RlJiYoYiYmXy5jb250YWlucyhjLm93bmVyRG9jdW1lbnQsYykmJnAocihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKF8uY2xlYW5EYXRhKHIoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIF8uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIUhiLnRlc3QoYSkmJiFNYlsoRmIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKEViLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihfLmNsZWFuRGF0YShyKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihiKXthPXRoaXMucGFyZW50Tm9kZSxfLmNsZWFuRGF0YShyKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEubGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1TLmFwcGx5KFtdLGEpO3ZhciBjLGQsZSxmLGcsaCxpPTAsaj10aGlzLmxlbmd0aCxrPXRoaXMsbD1qLTEsbT1hWzBdLHA9Xy5pc0Z1bmN0aW9uKG0pO2lmKHB8fGo+MSYmInN0cmluZyI9PXR5cGVvZiBtJiYhWS5jaGVja0Nsb25lJiZJYi50ZXN0KG0pKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9ay5lcShjKTtwJiYoYVswXT1tLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIpfSk7aWYoaiYmKGM9Xy5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGQ9Yy5maXJzdENoaWxkLDE9PT1jLmNoaWxkTm9kZXMubGVuZ3RoJiYoYz1kKSxkKSl7Zm9yKGU9Xy5tYXAocihjLCJzY3JpcHQiKSxuKSxmPWUubGVuZ3RoO2o+aTtpKyspZz1jLGkhPT1sJiYoZz1fLmNsb25lKGcsITAsITApLGYmJl8ubWVyZ2UoZSxyKGcsInNjcmlwdCIpKSksYi5jYWxsKHRoaXNbaV0sZyxpKTtpZihmKWZvcihoPWVbZS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxfLm1hcChlLG8pLGk9MDtmPmk7aSsrKWc9ZVtpXSxKYi50ZXN0KGcudHlwZXx8IiIpJiYhcmIuYWNjZXNzKGcsImdsb2JhbEV2YWwiKSYmXy5jb250YWlucyhoLGcpJiYoZy5zcmM/Xy5fZXZhbFVybCYmXy5fZXZhbFVybChnLnNyYyk6Xy5nbG9iYWxFdmFsKGcudGV4dENvbnRlbnQucmVwbGFjZShMYiwiIikpKX1yZXR1cm4gdGhpc319KSxfLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe18uZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1fKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zj49ZztnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLF8oZVtnXSlbYl0oYyksVC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgTmIsT2I9e30sUGI9L15tYXJnaW4vLFFiPW5ldyBSZWdFeHAoIl4oIit2YisiKSg/IXB4KVthLXolXSskIiwiaSIpLFJiPWZ1bmN0aW9uKGIpe3JldHVybiBiLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyP2Iub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6YS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl9OyFmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtnLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixnLmlubmVySFRNTD0iIixlLmFwcGVuZENoaWxkKGYpO3ZhciBiPWEuZ2V0Q29tcHV0ZWRTdHlsZShnLG51bGwpO2M9IjElIiE9PWIudG9wLGQ9IjRweCI9PT1iLndpZHRoLGUucmVtb3ZlQ2hpbGQoZil9dmFyIGMsZCxlPVouZG9jdW1lbnRFbGVtZW50LGY9Wi5jcmVhdGVFbGVtZW50KCJkaXYiKSxnPVouY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5zdHlsZSYmKGcuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixnLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsWS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWcuc3R5bGUuYmFja2dyb3VuZENsaXAsZi5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSIsZi5hcHBlbmRDaGlsZChnKSxhLmdldENvbXB1dGVkU3R5bGUmJl8uZXh0ZW5kKFkse3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWQmJmIoKSxkfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIGIsYz1nLmFwcGVuZENoaWxkKFouY3JlYXRlRWxlbWVudCgiZGl2IikpO3JldHVybiBjLnN0eWxlLmNzc1RleHQ9Zy5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLGMuc3R5bGUubWFyZ2luUmlnaHQ9Yy5zdHlsZS53aWR0aD0iMCIsZy5zdHlsZS53aWR0aD0iMXB4IixlLmFwcGVuZENoaWxkKGYpLGI9IXBhcnNlRmxvYXQoYS5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCkubWFyZ2luUmlnaHQpLGUucmVtb3ZlQ2hpbGQoZiksZy5yZW1vdmVDaGlsZChjKSxifX0pKX0oKSxfLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBTYj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sVGI9bmV3IFJlZ0V4cCgiXigiK3ZiKyIpKC4qKSQiLCJpIiksVWI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIit2YisiKSIsImkiKSxWYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sV2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFhiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07Xy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz12KGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ImNzc0Zsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1fLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7cmV0dXJuIGI9Xy5jc3NQcm9wc1toXXx8KF8uY3NzUHJvcHNbaF09eChpLGgpKSxnPV8uY3NzSG9va3NbYl18fF8uY3NzSG9va3NbaF0sdm9pZCAwPT09Yz9nJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTooZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVViLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQoXy5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fF8uY3NzTnVtYmVyW2hdfHwoYys9InB4IiksWS5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGlbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9Xy5jYW1lbENhc2UoYik7cmV0dXJuIGI9Xy5jc3NQcm9wc1toXXx8KF8uY3NzUHJvcHNbaF09eChhLnN0eWxlLGgpKSxnPV8uY3NzSG9va3NbYl18fF8uY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1lJiYoZT12KGEsYixkKSksIm5vcm1hbCI9PT1lJiZiIGluIFdiJiYoZT1XYltiXSksIiI9PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSksYz09PSEwfHxfLmlzTnVtZXJpYyhmKT9mfHwwOmUpOmV9fSksXy5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe18uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM/U2IudGVzdChfLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9fLnN3YXAoYSxWYixmdW5jdGlvbigpe3JldHVybiBBKGEsYixkKX0pOkEoYSxiLGQpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1kJiZSYihhKTtyZXR1cm4geShhLGMsZD96KGEsYixkLCJib3JkZXItYm94Ij09PV8uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLF8uY3NzSG9va3MubWFyZ2luUmlnaHQ9dyhZLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9fLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sdixbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSksXy5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtfLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2Erd2JbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sUGIudGVzdChhKXx8KF8uY3NzSG9va3NbYStiXS5zZXQ9eSl9KSxfLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoXy5pc0FycmF5KGIpKXtmb3IoZD1SYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1fLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/Xy5zdHlsZShhLGIsYyk6Xy5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe3hiKHRoaXMpP18odGhpcykuc2hvdygpOl8odGhpcykuaGlkZSgpfSl9fSksXy5Ud2Vlbj1DLEMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChfLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9Qy5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6Qy5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1DLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLnBvcz1iPXRoaXMub3B0aW9ucy5kdXJhdGlvbj9fLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTphLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOkMucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sQy5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9Qy5wcm90b3R5cGUsQy5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPV8uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe18uZnguc3RlcFthLnByb3BdP18uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVtfLmNzc1Byb3BzW2EucHJvcF1dfHxfLmNzc0hvb2tzW2EucHJvcF0pP18uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LEMucHJvcEhvb2tzLnNjcm9sbFRvcD1DLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LF8uZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn19LF8uZng9Qy5wcm90b3R5cGUuaW5pdCxfLmZ4LnN0ZXA9e307dmFyIFliLFpiLCRiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxfYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrdmIrIikoW2EteiVdKikkIiwiaSIpLGFjPS9xdWV1ZUhvb2tzJC8sYmM9W0ddLGNjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPV9iLmV4ZWMoYiksZj1lJiZlWzNdfHwoXy5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0oXy5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJl9iLmV4ZWMoXy5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxfLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtfLkFuaW1hdGlvbj1fLmV4dGVuZChJLHt0d2VlbmVyOmZ1bmN0aW9uKGEsYil7Xy5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLGNjW2NdPWNjW2NdfHxbXSxjY1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP2JjLnVuc2hpZnQoYSk6YmMucHVzaChhKX19KSxfLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/Xy5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxfLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIV8uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQuZHVyYXRpb249Xy5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIGQuZHVyYXRpb24/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIF8uZnguc3BlZWRzP18uZnguc3BlZWRzW2QuZHVyYXRpb25dOl8uZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1kLnF1ZXVlfHxkLnF1ZXVlPT09ITApJiYoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtfLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJl8uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxfLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcih4YikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5pc0VtcHR5T2JqZWN0KGEpLGY9Xy5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPUkodGhpcyxfLmV4dGVuZCh7fSxhKSxmKTsoZXx8cmIuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9Xy50aW1lcnMsZz1yYi5nZXQodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmYWMudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZfLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1yYi5nZXQodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVlSG9va3MiXSxmPV8udGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxfLnF1ZXVlKHRoaXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2ItLTspZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoYiwxKSk7CmZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxfLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5mbltiXTtfLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoRShiLCEwKSxhLGQsZSl9fSksXy5lYWNoKHtzbGlkZURvd246RSgic2hvdyIpLHNsaWRlVXA6RSgiaGlkZSIpLHNsaWRlVG9nZ2xlOkUoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtfLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLF8udGltZXJzPVtdLF8uZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9MCxjPV8udGltZXJzO2ZvcihZYj1fLm5vdygpO2I8Yy5sZW5ndGg7YisrKWE9Y1tiXSxhKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5sZW5ndGh8fF8uZnguc3RvcCgpLFliPXZvaWQgMH0sXy5meC50aW1lcj1mdW5jdGlvbihhKXtfLnRpbWVycy5wdXNoKGEpLGEoKT9fLmZ4LnN0YXJ0KCk6Xy50aW1lcnMucG9wKCl9LF8uZnguaW50ZXJ2YWw9MTMsXy5meC5zdGFydD1mdW5jdGlvbigpe1pifHwoWmI9c2V0SW50ZXJ2YWwoXy5meC50aWNrLF8uZnguaW50ZXJ2YWwpKX0sXy5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChaYiksWmI9bnVsbH0sXy5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sXy5mbi5kZWxheT1mdW5jdGlvbihhLGIpe3JldHVybiBhPV8uZng/Xy5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCIsdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1aLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChaLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixZLmNoZWNrT249IiIhPT1hLnZhbHVlLFkub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxiLmRpc2FibGVkPSEwLFkub3B0RGlzYWJsZWQ9IWMuZGlzYWJsZWQsYT1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsWS5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGRjLGVjLGZjPV8uZXhwci5hdHRySGFuZGxlO18uZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsXy5hdHRyLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtfLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLF8uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZihhJiYzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiB0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PT16Yj9fLnByb3AoYSxiLGMpOigxPT09ZiYmXy5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9Xy5hdHRySG9va3NbYl18fChfLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP2VjOmRjKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPV8uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6KF8ucmVtb3ZlQXR0cihhLGIpLHZvaWQgMCkpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKG5iKTtpZihmJiYxPT09YS5ub2RlVHlwZSlmb3IoO2M9ZltlKytdOylkPV8ucHJvcEZpeFtjXXx8YyxfLmV4cHIubWF0Y2guYm9vbC50ZXN0KGMpJiYoYVtkXT0hMSksYS5yZW1vdmVBdHRyaWJ1dGUoYyl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIVkucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJl8ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksZWM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9fLnJlbW92ZUF0dHIoYSxjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fSxfLmVhY2goXy5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1mY1tiXXx8Xy5maW5kLmF0dHI7ZmNbYl09ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPWZjW2JdLGZjW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxmY1tiXT1mKSxlfX0pO3ZhciBnYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pO18uZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsXy5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tfLnByb3BGaXhbYV18fGFdfSl9fSksXy5leHRlbmQoe3Byb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifSxwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZz1hLm5vZGVUeXBlO2lmKGEmJjMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuIGY9MSE9PWd8fCFfLmlzWE1MRG9jKGEpLGYmJihiPV8ucHJvcEZpeFtiXXx8YixlPV8ucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fGdjLnRlc3QoYS5ub2RlTmFtZSl8fGEuaHJlZj9hLnRhYkluZGV4Oi0xfX19fSksWS5vcHRTZWxlY3RlZHx8KF8ucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9fSksXy5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtfLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7dmFyIGhjPS9bXHRcclxuXGZdL2c7Xy5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoPSJzdHJpbmciPT10eXBlb2YgYSYmYSxpPTAsaj10aGlzLmxlbmd0aDtpZihfLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtfKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGgpZm9yKGI9KGF8fCIiKS5tYXRjaChuYil8fFtdO2o+aTtpKyspaWYoYz10aGlzW2ldLGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFjZShoYywiICIpOiIgIiksZCl7Zm9yKGY9MDtlPWJbZisrXTspZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPV8udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYSxpPTAsaj10aGlzLmxlbmd0aDtpZihfLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtfKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGgpZm9yKGI9KGF8fCIiKS5tYXRjaChuYil8fFtdO2o+aTtpKyspaWYoYz10aGlzW2ldLGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFjZShoYywiICIpOiIiKSxkKXtmb3IoZj0wO2U9YltmKytdOylmb3IoO2QuaW5kZXhPZigiICIrZSsiICIpPj0wOylkPWQucmVwbGFjZSgiICIrZSsiICIsIiAiKTtnPWE/Xy50cmltKGQpOiIiLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2goXy5pc0Z1bmN0aW9uKGEpP2Z1bmN0aW9uKGMpe18odGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWMpZm9yKHZhciBiLGQ9MCxlPV8odGhpcyksZj1hLm1hdGNoKG5iKXx8W107Yj1mW2QrK107KWUuaGFzQ2xhc3MoYik/ZS5yZW1vdmVDbGFzcyhiKTplLmFkZENsYXNzKGIpO2Vsc2UoYz09PXpifHwiYm9vbGVhbiI9PT1jKSYmKHRoaXMuY2xhc3NOYW1lJiZyYi5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6cmIuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoaGMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBpYz0vXHIvZztfLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Xy5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLF8odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjpfLmlzQXJyYXkoZSkmJihlPV8ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPV8udmFsSG9va3NbdGhpcy50eXBlXXx8Xy52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPV8udmFsSG9va3NbZS50eXBlXXx8Xy52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UoaWMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLF8uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9Xy5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOl8udHJpbShfLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChZLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZfLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9XyhjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQsZT1hLm9wdGlvbnMsZj1fLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO2ctLTspZD1lW2ddLChkLnNlbGVjdGVkPV8uaW5BcnJheShkLnZhbHVlLGYpPj0wKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksXy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Xy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uaXNBcnJheShiKT9hLmNoZWNrZWQ9Xy5pbkFycmF5KF8oYSkudmFsKCksYik+PTA6dm9pZCAwfX0sWS5jaGVja09ufHwoXy52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pLF8uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe18uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLF8uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIGpjPV8ubm93KCksa2M9L1w/LztfLnBhcnNlSlNPTj1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5wYXJzZShhKyIiKX0sXy5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e2M9bmV3IERPTVBhcnNlcixiPWMucGFyc2VGcm9tU3RyaW5nKGEsInRleHQveG1sIil9Y2F0Y2goZCl7Yj12b2lkIDB9cmV0dXJuKCFifHxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJl8uZXJyb3IoIkludmFsaWQgWE1MOiAiK2EpLGJ9O3ZhciBsYz0vIy4qJC8sbWM9LyhbPyZdKV89W14mXSovLG5jPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sb2M9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8scGM9L14oPzpHRVR8SEVBRCkkLyxxYz0vXlwvXC8vLHJjPS9eKFtcdy4rLV0rOikoPzpcL1wvKD86W15cLz8jXSpAfCkoW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLHNjPXt9LHRjPXt9LHVjPSIqLyIuY29uY2F0KCIqIiksdmM9YS5sb2NhdGlvbi5ocmVmLHdjPXJjLmV4ZWModmMudG9Mb3dlckNhc2UoKSl8fFtdO18uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp2Yyx0eXBlOiJHRVQiLGlzTG9jYWw6b2MudGVzdCh3Y1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjp1Yyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOl8ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6Xy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/TChMKGEsXy5hamF4U2V0dGluZ3MpLGIpOkwoXy5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6SihzYyksYWpheFRyYW5zcG9ydDpKKHRjKSxhamF4OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIsYyxnKXt2YXIgaSxrLHIscyx1LHc9YjsyIT09dCYmKHQ9MixoJiZjbGVhclRpbWVvdXQoaCksZD12b2lkIDAsZj1nfHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MCxpPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsYyYmKHM9TShsLHYsYykpLHM9TihsLHMsdixpKSxpPyhsLmlmTW9kaWZpZWQmJih1PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx1JiYoXy5sYXN0TW9kaWZpZWRbZV09dSksdT12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdSYmKF8uZXRhZ1tlXT11KSksMjA0PT09YXx8IkhFQUQiPT09bC50eXBlP3c9Im5vY29udGVudCI6MzA0PT09YT93PSJub3Rtb2RpZmllZCI6KHc9cy5zdGF0ZSxrPXMuZGF0YSxyPXMuZXJyb3IsaT0hcikpOihyPXcsKGF8fCF3KSYmKHc9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHcpKyIiLGk/by5yZXNvbHZlV2l0aChtLFtrLHcsdl0pOm8ucmVqZWN0V2l0aChtLFt2LHcscl0pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxqJiZuLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGwsaT9rOnJdKSxwLmZpcmVXaXRoKG0sW3Ysd10pLGomJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3YsbF0pLC0tXy5hY3RpdmV8fF8uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfSJvYmplY3QiPT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYj1ifHx7fTt2YXIgZCxlLGYsZyxoLGksaixrLGw9Xy5hamF4U2V0dXAoe30sYiksbT1sLmNvbnRleHR8fGwsbj1sLmNvbnRleHQmJihtLm5vZGVUeXBlfHxtLmpxdWVyeSk/XyhtKTpfLmV2ZW50LG89Xy5EZWZlcnJlZCgpLHA9Xy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikscT1sLnN0YXR1c0NvZGV8fHt9LHI9e30scz17fSx0PTAsdT0iY2FuY2VsZWQiLHY9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZigyPT09dCl7aWYoIWcpZm9yKGc9e307Yj1uYy5leGVjKGYpOylnW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXTtiPWdbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9mOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNbY109c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHR8fChsLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2LnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVybiBkJiZkLmFib3J0KGIpLGMoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAuYWRkLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsbC51cmw9KChhfHxsLnVybHx8dmMpKyIiKS5yZXBsYWNlKGxjLCIiKS5yZXBsYWNlKHFjLHdjWzFdKyIvLyIpLGwudHlwZT1iLm1ldGhvZHx8Yi50eXBlfHxsLm1ldGhvZHx8bC50eXBlLGwuZGF0YVR5cGVzPV8udHJpbShsLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2gobmIpfHxbIiJdLG51bGw9PWwuY3Jvc3NEb21haW4mJihpPXJjLmV4ZWMobC51cmwudG9Mb3dlckNhc2UoKSksbC5jcm9zc0RvbWFpbj0hKCFpfHxpWzFdPT09d2NbMV0mJmlbMl09PT13Y1syXSYmKGlbM118fCgiaHR0cDoiPT09aVsxXT8iODAiOiI0NDMiKSk9PT0od2NbM118fCgiaHR0cDoiPT09d2NbMV0/IjgwIjoiNDQzIikpKSksbC5kYXRhJiZsLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGwuZGF0YSYmKGwuZGF0YT1fLnBhcmFtKGwuZGF0YSxsLnRyYWRpdGlvbmFsKSksSyhzYyxsLGIsdiksMj09PXQpcmV0dXJuIHY7aj1fLmV2ZW50JiZsLmdsb2JhbCxqJiYwPT09Xy5hY3RpdmUrKyYmXy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxsLnR5cGU9bC50eXBlLnRvVXBwZXJDYXNlKCksbC5oYXNDb250ZW50PSFwYy50ZXN0KGwudHlwZSksZT1sLnVybCxsLmhhc0NvbnRlbnR8fChsLmRhdGEmJihlPWwudXJsKz0oa2MudGVzdChlKT8iJiI6Ij8iKStsLmRhdGEsZGVsZXRlIGwuZGF0YSksbC5jYWNoZT09PSExJiYobC51cmw9bWMudGVzdChlKT9lLnJlcGxhY2UobWMsIiQxXz0iK2pjKyspOmUrKGtjLnRlc3QoZSk/IiYiOiI/IikrIl89IitqYysrKSksbC5pZk1vZGlmaWVkJiYoXy5sYXN0TW9kaWZpZWRbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLF8ubGFzdE1vZGlmaWVkW2VdKSxfLmV0YWdbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsXy5ldGFnW2VdKSksKGwuZGF0YSYmbC5oYXNDb250ZW50JiZsLmNvbnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsbC5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGwuZGF0YVR5cGVzWzBdJiZsLmFjY2VwdHNbbC5kYXRhVHlwZXNbMF1dP2wuYWNjZXB0c1tsLmRhdGFUeXBlc1swXV0rKCIqIiE9PWwuZGF0YVR5cGVzWzBdPyIsICIrdWMrIjsgcT0wLjAxIjoiIik6bC5hY2NlcHRzWyIqIl0pO2ZvcihrIGluIGwuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoayxsLmhlYWRlcnNba10pO2lmKGwuYmVmb3JlU2VuZCYmKGwuYmVmb3JlU2VuZC5jYWxsKG0sdixsKT09PSExfHwyPT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGsgaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdltrXShsW2tdKTtpZihkPUsodGMsbCxiLHYpLGQpe3YucmVhZHlTdGF0ZT0xLGomJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGxdKSxsLmFzeW5jJiZsLnRpbWVvdXQ+MCYmKGg9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0sbC50aW1lb3V0KSk7dHJ5e3Q9MSxkLnNlbmQocixjKX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdztjKC0xLHcpfX1lbHNlIGMoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLF8uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe19bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIF8uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLF8uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLF8uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sXy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIF8uaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7Xyh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pOih0aGlzWzBdJiYoYj1fKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzO2EuZmlyc3RFbGVtZW50Q2hpbGQ7KWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpcyl9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKF8uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtfKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9Xyh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1fLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtfKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Xy5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fF8odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLF8uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB9LF8uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIV8uZXhwci5maWx0ZXJzLmhpZGRlbihhKX07dmFyIHhjPS8lMjAvZyx5Yz0vXFtcXSQvLHpjPS9ccj9cbi9nLEFjPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxCYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Xy5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Xy5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPV8uYWpheFNldHRpbmdzJiZfLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksXy5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIV8uaXNQbGFpbk9iamVjdChhKSlfLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKU8oYyxhW2NdLGIsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoeGMsIisiKX0sXy5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBfLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9Xy5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/Xy5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhXyh0aGlzKS5pcygiOmRpc2FibGVkIikmJkJjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFBYy50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwheWIudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1fKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6Xy5pc0FycmF5KGMpP18ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZSh6YywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoemMsIlxyXG4iKX19KS5nZXQoKX19KSxfLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH1jYXRjaChhKXt9fTt2YXIgQ2M9MCxEYz17fSxFYz17MDoyMDAsMTIyMzoyMDR9LEZjPV8uYWpheFNldHRpbmdzLnhocigpO2EuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBEYylEY1thXSgpfSksWS5jb3JzPSEhRmMmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gRmMsWS5hamF4PUZjPSEhRmMsXy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBZLmNvcnN8fEZjJiYhYS5jcm9zc0RvbWFpbj97c2VuZDpmdW5jdGlvbihjLGQpe3ZhciBlLGY9YS54aHIoKSxnPSsrQ2M7aWYoZi5vcGVuKGEudHlwZSxhLnVybCxhLmFzeW5jLGEudXNlcm5hbWUsYS5wYXNzd29yZCksYS54aHJGaWVsZHMpZm9yKGUgaW4gYS54aHJGaWVsZHMpZltlXT1hLnhockZpZWxkc1tlXTthLm1pbWVUeXBlJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZShhLm1pbWVUeXBlKSxhLmNyb3NzRG9tYWlufHxjWyJYLVJlcXVlc3RlZC1XaXRoIl18fChjWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGUgaW4gYylmLnNldFJlcXVlc3RIZWFkZXIoZSxjW2VdKTtiPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2ImJihkZWxldGUgRGNbZ10sYj1mLm9ubG9hZD1mLm9uZXJyb3I9bnVsbCwiYWJvcnQiPT09YT9mLmFib3J0KCk6ImVycm9yIj09PWE/ZChmLnN0YXR1cyxmLnN0YXR1c1RleHQpOmQoRWNbZi5zdGF0dXNdfHxmLnN0YXR1cyxmLnN0YXR1c1RleHQsInN0cmluZyI9PXR5cGVvZiBmLnJlc3BvbnNlVGV4dD97dGV4dDpmLnJlc3BvbnNlVGV4dH06dm9pZCAwLGYuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LGYub25sb2FkPWIoKSxmLm9uZXJyb3I9YigiZXJyb3IiKSxiPURjW2ddPWIoImFib3J0Iik7dHJ5e2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCl9Y2F0Y2goaCl7aWYoYil0aHJvdyBofX0sYWJvcnQ6ZnVuY3Rpb24oKXtiJiZiKCl9fTp2b2lkIDB9KSxfLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBfLmdsb2JhbEV2YWwoYSksYX19fSksXy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiKX0pLF8uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjO3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7Yj1fKCI8c2NyaXB0PiIpLnByb3Aoe2FzeW5jOiEwLGNoYXJzZXQ6YS5zY3JpcHRDaGFyc2V0LHNyYzphLnVybH0pLm9uKCJsb2FkIGVycm9yIixjPWZ1bmN0aW9uKGEpe2IucmVtb3ZlKCksYz1udWxsLGEmJmUoImVycm9yIj09PWEudHlwZT80MDQ6MjAwLGEudHlwZSl9KSxaLmhlYWQuYXBwZW5kQ2hpbGQoYlswXSl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19fSk7dmFyIEdjPVtdLEhjPS8oPSlcPyg/PSZ8JCl8XD9cPy87Xy5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPUdjLnBvcCgpfHxfLmV4cGFuZG8rIl8iK2pjKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KSxfLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaD1iLmpzb25wIT09ITEmJihIYy50ZXN0KGIudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGIuZGF0YSYmIShiLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJkhjLnRlc3QoYi5kYXRhKSYmImRhdGEiKTtyZXR1cm4gaHx8Impzb25wIj09PWIuZGF0YVR5cGVzWzBdPyhlPWIuanNvbnBDYWxsYmFjaz1fLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD9iW2hdPWJbaF0ucmVwbGFjZShIYywiJDEiK2UpOmIuanNvbnAhPT0hMSYmKGIudXJsKz0oa2MudGVzdChiLnVybCk/IiYiOiI/IikrYi5qc29ucCsiPSIrZSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8fF8uZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iLGY9YVtlXSxhW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGQuYWx3YXlzKGZ1bmN0aW9uKCl7YVtlXT1mLGJbZV0mJihiLmpzb25wQ2FsbGJhY2s9Yy5qc29ucENhbGxiYWNrLEdjLnB1c2goZSkpLGcmJl8uaXNGdW5jdGlvbihmKSYmZihnWzBdKSxnPWY9dm9pZCAwfSksInNjcmlwdCIpOnZvaWQgMH0pLF8ucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSksYj1ifHxaO3ZhciBkPWdiLmV4ZWMoYSksZT0hYyYmW107cmV0dXJuIGQ/W2IuY3JlYXRlRWxlbWVudChkWzFdKV06KGQ9Xy5idWlsZEZyYWdtZW50KFthXSxiLGUpLGUmJmUubGVuZ3RoJiZfKGUpLnJlbW92ZSgpLF8ubWVyZ2UoW10sZC5jaGlsZE5vZGVzKSl9O3ZhciBJYz1fLmZuLmxvYWQ7Xy5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJkljKXJldHVybiBJYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPj0wJiYoZD1fLnRyaW0oYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLF8uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmXy5hamF4KHt1cmw6YSx0eXBlOmUsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/XygiPGRpdj4iKS5hcHBlbmQoXy5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5jb21wbGV0ZShjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChjLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pLHRoaXN9LF8uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7Xy5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLF8uZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBfLmdyZXAoXy50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O3ZhciBKYz1hLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtfLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPV8uY3NzKGEsInBvc2l0aW9uIiksbD1fKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1fLmNzcyhhLCJ0b3AiKSxpPV8uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLF8uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LF8uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtfLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXRoaXNbMF0sZT17dG9wOjAsbGVmdDowfSxmPWQmJmQub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LF8uY29udGFpbnMoYixkKT8odHlwZW9mIGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09emImJihlPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGM9UChmKSx7dG9wOmUudG9wK2MucGFnZVlPZmZzZXQtYi5jbGllbnRUb3AsbGVmdDplLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTplfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PV8uY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLF8ubm9kZU5hbWUoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkLnRvcCs9Xy5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxkLmxlZnQrPV8uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWQudG9wLV8uY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1fLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxKYzthJiYhXy5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09Xy5jc3MoYSwicG9zaXRpb24iKTspYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8SmN9KX19KSxfLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYixjKXt2YXIgZD0icGFnZVlPZmZzZXQiPT09YztfLmZuW2JdPWZ1bmN0aW9uKGUpe3JldHVybiBxYih0aGlzLGZ1bmN0aW9uKGIsZSxmKXt2YXIgZz1QKGIpO3JldHVybiB2b2lkIDA9PT1mP2c/Z1tjXTpiW2VdOihnP2cuc2Nyb2xsVG8oZD9hLnBhZ2VYT2Zmc2V0OmYsZD9mOmEucGFnZVlPZmZzZXQpOmJbZV09Zix2b2lkIDApfSxiLGUsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxfLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXtfLmNzc0hvb2tzW2JdPXcoWS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9dihhLGIpLFFiLnRlc3QoYyk/XyhhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxfLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe18uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtfLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gcWIodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIF8uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/Xy5jc3MoYixjLGcpOl8uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksXy5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxfLmZuLmFuZFNlbGY9Xy5mbi5hZGRCYWNrLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBffSk7dmFyIEtjPWEualF1ZXJ5LExjPWEuJDtyZXR1cm4gXy5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1fJiYoYS4kPUxjKSxiJiZhLmpRdWVyeT09PV8mJihhLmpRdWVyeT1LYyksX30sdHlwZW9mIGI9PT16YiYmKGEualF1ZXJ5PWEuJD1fKSxffSk7CgovKiEgalF1ZXJ5IE1pZ3JhdGUgdjEuMi4xIHwgKGMpIDIwMDUsIDIwMTMgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwpqUXVlcnkubWlncmF0ZU11dGU9PT12b2lkIDAmJihqUXVlcnkubWlncmF0ZU11dGU9ITApLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKG4pe3ZhciByPXQuY29uc29sZTtpW25dfHwoaVtuXT0hMCxlLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKG4pLHImJnIud2FybiYmIWUubWlncmF0ZU11dGUmJihyLndhcm4oIkpRTUlHUkFURTogIituKSxlLm1pZ3JhdGVUcmFjZSYmci50cmFjZSYmci50cmFjZSgpKSl9ZnVuY3Rpb24gYSh0LGEsaSxvKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxhLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcihvKSxpfSxzZXQ6ZnVuY3Rpb24oZSl7cihvKSxpPWV9fSksbn1jYXRjaChzKXt9ZS5fZGVmaW5lUHJvcGVydHlCcm9rZW49ITAsdFthXT1pfXZhciBpPXt9O2UubWlncmF0ZVdhcm5pbmdzPVtdLCFlLm1pZ3JhdGVNdXRlJiZ0LmNvbnNvbGUmJnQuY29uc29sZS5sb2cmJnQuY29uc29sZS5sb2coIkpRTUlHUkFURTogTG9nZ2luZyBpcyBhY3RpdmUiKSxlLm1pZ3JhdGVUcmFjZT09PW4mJihlLm1pZ3JhdGVUcmFjZT0hMCksZS5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXtpPXt9LGUubWlncmF0ZVdhcm5pbmdzLmxlbmd0aD0wfSwiQmFja0NvbXBhdCI9PT1kb2N1bWVudC5jb21wYXRNb2RlJiZyKCJqUXVlcnkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBRdWlya3MgTW9kZSIpO3ZhciBvPWUoIjxpbnB1dC8+Iix7c2l6ZToxfSkuYXR0cigic2l6ZSIpJiZlLmF0dHJGbixzPWUuYXR0cix1PWUuYXR0ckhvb2tzLnZhbHVlJiZlLmF0dHJIb29rcy52YWx1ZS5nZXR8fGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGM9ZS5hdHRySG9va3MudmFsdWUmJmUuYXR0ckhvb2tzLnZhbHVlLnNldHx8ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbD0vXig/OmlucHV0fGJ1dHRvbikkL2ksZD0vXlsyMzhdJC8scD0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSxmPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2k7YShlLCJhdHRyRm4iLG98fHt9LCJqUXVlcnkuYXR0ckZuIGlzIGRlcHJlY2F0ZWQiKSxlLmF0dHI9ZnVuY3Rpb24odCxhLGksdSl7dmFyIGM9YS50b0xvd2VyQ2FzZSgpLGc9dCYmdC5ub2RlVHlwZTtyZXR1cm4gdSYmKDQ+cy5sZW5ndGgmJnIoImpRdWVyeS5mbi5hdHRyKCBwcm9wcywgcGFzcyApIGlzIGRlcHJlY2F0ZWQiKSx0JiYhZC50ZXN0KGcpJiYobz9hIGluIG86ZS5pc0Z1bmN0aW9uKGUuZm5bYV0pKSk/ZSh0KVthXShpKTooInR5cGUiPT09YSYmaSE9PW4mJmwudGVzdCh0Lm5vZGVOYW1lKSYmdC5wYXJlbnROb2RlJiZyKCJDYW4ndCBjaGFuZ2UgdGhlICd0eXBlJyBvZiBhbiBpbnB1dCBvciBidXR0b24gaW4gSUUgNi83LzgiKSwhZS5hdHRySG9va3NbY10mJnAudGVzdChjKSYmKGUuYXR0ckhvb2tzW2NdPXtnZXQ6ZnVuY3Rpb24odCxyKXt2YXIgYSxpPWUucHJvcCh0LHIpO3JldHVybiBpPT09ITB8fCJib29sZWFuIiE9dHlwZW9mIGkmJihhPXQuZ2V0QXR0cmlidXRlTm9kZShyKSkmJmEubm9kZVZhbHVlIT09ITE/ci50b0xvd2VyQ2FzZSgpOm59LHNldDpmdW5jdGlvbih0LG4scil7dmFyIGE7cmV0dXJuIG49PT0hMT9lLnJlbW92ZUF0dHIodCxyKTooYT1lLnByb3BGaXhbcl18fHIsYSBpbiB0JiYodFthXT0hMCksdC5zZXRBdHRyaWJ1dGUocixyLnRvTG93ZXJDYXNlKCkpKSxyfX0sZi50ZXN0KGMpJiZyKCJqUXVlcnkuZm4uYXR0cignIitjKyInKSBtYXkgdXNlIHByb3BlcnR5IGluc3RlYWQgb2YgYXR0cmlidXRlIikpLHMuY2FsbChlLHQsYSxpKSl9LGUuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuImJ1dHRvbiI9PT1uP3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOigiaW5wdXQiIT09biYmIm9wdGlvbiIhPT1uJiZyKCJqUXVlcnkuZm4uYXR0cigndmFsdWUnKSBubyBsb25nZXIgZ2V0cyBwcm9wZXJ0aWVzIiksdCBpbiBlP2UudmFsdWU6bnVsbCl9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBhPShlLm5vZGVOYW1lfHwiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4iYnV0dG9uIj09PWE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KCJpbnB1dCIhPT1hJiYib3B0aW9uIiE9PWEmJnIoImpRdWVyeS5mbi5hdHRyKCd2YWx1ZScsIHZhbCkgbm8gbG9uZ2VyIHNldHMgcHJvcGVydGllcyIpLGUudmFsdWU9dCxuKX19O3ZhciBnLGgsdj1lLmZuLmluaXQsbT1lLnBhcnNlSlNPTix5PS9eKFtePF0qKSg8W1x3XFddKz4pKFtePl0qKSQvO2UuZm4uaW5pdD1mdW5jdGlvbih0LG4sYSl7dmFyIGk7cmV0dXJuIHQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWUuaXNQbGFpbk9iamVjdChuKSYmKGk9eS5leGVjKGUudHJpbSh0KSkpJiZpWzBdJiYoIjwiIT09dC5jaGFyQXQoMCkmJnIoIiQoaHRtbCkgSFRNTCBzdHJpbmdzIG11c3Qgc3RhcnQgd2l0aCAnPCcgY2hhcmFjdGVyIiksaVszXSYmcigiJChodG1sKSBIVE1MIHRleHQgYWZ0ZXIgbGFzdCB0YWcgaXMgaWdub3JlZCIpLCIjIj09PWlbMF0uY2hhckF0KDApJiYocigiSFRNTCBzdHJpbmcgY2Fubm90IHN0YXJ0IHdpdGggYSAnIycgY2hhcmFjdGVyIiksZS5lcnJvcigiSlFNSUdSQVRFOiBJbnZhbGlkIHNlbGVjdG9yIHN0cmluZyAoWFNTKSIpKSxuJiZuLmNvbnRleHQmJihuPW4uY29udGV4dCksZS5wYXJzZUhUTUwpP3YuY2FsbCh0aGlzLGUucGFyc2VIVE1MKGlbMl0sbiwhMCksbixhKTp2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5mbi5pbml0LnByb3RvdHlwZT1lLmZuLGUucGFyc2VKU09OPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxudWxsPT09ZT9tLmFwcGx5KHRoaXMsYXJndW1lbnRzKToocigialF1ZXJ5LnBhcnNlSlNPTiByZXF1aXJlcyBhIHZhbGlkIEpTT04gc3RyaW5nIiksbnVsbCl9LGUudWFNYXRjaD1mdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKTt2YXIgdD0vKGNocm9tZSlbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKG9wZXJhKSg/Oi4qdmVyc2lvbnwpWyBcL10oW1x3Ll0rKS8uZXhlYyhlKXx8Lyhtc2llKSAoW1x3Ll0rKS8uZXhlYyhlKXx8MD5lLmluZGV4T2YoImNvbXBhdGlibGUiKSYmLyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKXwpLy5leGVjKGUpfHxbXTtyZXR1cm57YnJvd3Nlcjp0WzFdfHwiIix2ZXJzaW9uOnRbMl18fCIwIn19LGUuYnJvd3Nlcnx8KGc9ZS51YU1hdGNoKG5hdmlnYXRvci51c2VyQWdlbnQpLGg9e30sZy5icm93c2VyJiYoaFtnLmJyb3dzZXJdPSEwLGgudmVyc2lvbj1nLnZlcnNpb24pLGguY2hyb21lP2gud2Via2l0PSEwOmgud2Via2l0JiYoaC5zYWZhcmk9ITApLGUuYnJvd3Nlcj1oKSxhKGUsImJyb3dzZXIiLGUuYnJvd3NlciwialF1ZXJ5LmJyb3dzZXIgaXMgZGVwcmVjYXRlZCIpLGUuc3ViPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3JldHVybiBuZXcgdC5mbi5pbml0KGUsbil9ZS5leHRlbmQoITAsdCx0aGlzKSx0LnN1cGVyY2xhc3M9dGhpcyx0LmZuPXQucHJvdG90eXBlPXRoaXMoKSx0LmZuLmNvbnN0cnVjdG9yPXQsdC5zdWI9dGhpcy5zdWIsdC5mbi5pbml0PWZ1bmN0aW9uKHIsYSl7cmV0dXJuIGEmJmEgaW5zdGFuY2VvZiBlJiYhKGEgaW5zdGFuY2VvZiB0KSYmKGE9dChhKSksZS5mbi5pbml0LmNhbGwodGhpcyxyLGEsbil9LHQuZm4uaW5pdC5wcm90b3R5cGU9dC5mbjt2YXIgbj10KGRvY3VtZW50KTtyZXR1cm4gcigialF1ZXJ5LnN1YigpIGlzIGRlcHJlY2F0ZWQiKSx0fSxlLmFqYXhTZXR1cCh7Y29udmVydGVyczp7InRleHQganNvbiI6ZS5wYXJzZUpTT059fSk7dmFyIGI9ZS5mbi5kYXRhO2UuZm4uZGF0YT1mdW5jdGlvbih0KXt2YXIgYSxpLG89dGhpc1swXTtyZXR1cm4hb3x8ImV2ZW50cyIhPT10fHwxIT09YXJndW1lbnRzLmxlbmd0aHx8KGE9ZS5kYXRhKG8sdCksaT1lLl9kYXRhKG8sdCksYSE9PW4mJmEhPT1pfHxpPT09bik/Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KHIoIlVzZSBvZiBqUXVlcnkuZm4uZGF0YSgnZXZlbnRzJykgaXMgZGVwcmVjYXRlZCIpLGkpfTt2YXIgaj0vXC8oamF2YXxlY21hKXNjcmlwdC9pLHc9ZS5mbi5hbmRTZWxmfHxlLmZuLmFkZEJhY2s7ZS5mbi5hbmRTZWxmPWZ1bmN0aW9uKCl7cmV0dXJuIHIoImpRdWVyeS5mbi5hbmRTZWxmKCkgcmVwbGFjZWQgYnkgalF1ZXJ5LmZuLmFkZEJhY2soKSIpLHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmNsZWFufHwoZS5jbGVhbj1mdW5jdGlvbih0LGEsaSxvKXthPWF8fGRvY3VtZW50LGE9IWEubm9kZVR5cGUmJmFbMF18fGEsYT1hLm93bmVyRG9jdW1lbnR8fGEscigialF1ZXJ5LmNsZWFuKCkgaXMgZGVwcmVjYXRlZCIpO3ZhciBzLHUsYyxsLGQ9W107aWYoZS5tZXJnZShkLGUuYnVpbGRGcmFnbWVudCh0LGEpLmNoaWxkTm9kZXMpLGkpZm9yKGM9ZnVuY3Rpb24oZSl7cmV0dXJuIWUudHlwZXx8ai50ZXN0KGUudHlwZSk/bz9vLnB1c2goZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTplKTppLmFwcGVuZENoaWxkKGUpOm59LHM9MDtudWxsIT0odT1kW3NdKTtzKyspZS5ub2RlTmFtZSh1LCJzY3JpcHQiKSYmYyh1KXx8KGkuYXBwZW5kQ2hpbGQodSksdS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PW4mJihsPWUuZ3JlcChlLm1lcmdlKFtdLHUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSxjKSxkLnNwbGljZS5hcHBseShkLFtzKzEsMF0uY29uY2F0KGwpKSxzKz1sLmxlbmd0aCkpO3JldHVybiBkfSk7dmFyIFE9ZS5ldmVudC5hZGQseD1lLmV2ZW50LnJlbW92ZSxrPWUuZXZlbnQudHJpZ2dlcixOPWUuZm4udG9nZ2xlLFQ9ZS5mbi5saXZlLE09ZS5mbi5kaWUsUz0iYWpheFN0YXJ0fGFqYXhTdG9wfGFqYXhTZW5kfGFqYXhDb21wbGV0ZXxhamF4RXJyb3J8YWpheFN1Y2Nlc3MiLEM9UmVnRXhwKCJcXGIoPzoiK1MrIilcXGIiKSxIPS8oPzpefFxzKWhvdmVyKFwuXFMrfClcYi8sQT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fGUuZXZlbnQuc3BlY2lhbC5ob3Zlcj90OihILnRlc3QodCkmJnIoIidob3ZlcicgcHNldWRvLWV2ZW50IGlzIGRlcHJlY2F0ZWQsIHVzZSAnbW91c2VlbnRlciBtb3VzZWxlYXZlJyIpLHQmJnQucmVwbGFjZShILCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIikpfTtlLmV2ZW50LnByb3BzJiYiYXR0ckNoYW5nZSIhPT1lLmV2ZW50LnByb3BzWzBdJiZlLmV2ZW50LnByb3BzLnVuc2hpZnQoImF0dHJDaGFuZ2UiLCJhdHRyTmFtZSIsInJlbGF0ZWROb2RlIiwic3JjRWxlbWVudCIpLGUuZXZlbnQuZGlzcGF0Y2gmJmEoZS5ldmVudCwiaGFuZGxlIixlLmV2ZW50LmRpc3BhdGNoLCJqUXVlcnkuZXZlbnQuaGFuZGxlIGlzIHVuZG9jdW1lbnRlZCBhbmQgZGVwcmVjYXRlZCIpLGUuZXZlbnQuYWRkPWZ1bmN0aW9uKGUsdCxuLGEsaSl7ZSE9PWRvY3VtZW50JiZDLnRlc3QodCkmJnIoIkFKQVggZXZlbnRzIHNob3VsZCBiZSBhdHRhY2hlZCB0byBkb2N1bWVudDogIit0KSxRLmNhbGwodGhpcyxlLEEodHx8IiIpLG4sYSxpKX0sZS5ldmVudC5yZW1vdmU9ZnVuY3Rpb24oZSx0LG4scixhKXt4LmNhbGwodGhpcyxlLEEodCl8fCIiLG4scixhKX0sZS5mbi5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcigialF1ZXJ5LmZuLmVycm9yKCkgaXMgZGVwcmVjYXRlZCIpLGUuc3BsaWNlKDAsMCwiZXJyb3IiKSxhcmd1bWVudHMubGVuZ3RoP3RoaXMuYmluZC5hcHBseSh0aGlzLGUpOih0aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsZSksdGhpcyl9LGUuZm4udG9nZ2xlPWZ1bmN0aW9uKHQsbil7aWYoIWUuaXNGdW5jdGlvbih0KXx8IWUuaXNGdW5jdGlvbihuKSlyZXR1cm4gTi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cigialF1ZXJ5LmZuLnRvZ2dsZShoYW5kbGVyLCBoYW5kbGVyLi4uKSBpcyBkZXByZWNhdGVkIik7dmFyIGE9YXJndW1lbnRzLGk9dC5ndWlkfHxlLmd1aWQrKyxvPTAscz1mdW5jdGlvbihuKXt2YXIgcj0oZS5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIit0Lmd1aWQpfHwwKSVvO3JldHVybiBlLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK3QuZ3VpZCxyKzEpLG4ucHJldmVudERlZmF1bHQoKSxhW3JdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9O2ZvcihzLmd1aWQ9aTthLmxlbmd0aD5vOylhW28rK10uZ3VpZD1pO3JldHVybiB0aGlzLmNsaWNrKHMpfSxlLmZuLmxpdmU9ZnVuY3Rpb24odCxuLGEpe3JldHVybiByKCJqUXVlcnkuZm4ubGl2ZSgpIGlzIGRlcHJlY2F0ZWQiKSxUP1QuYXBwbHkodGhpcyxhcmd1bWVudHMpOihlKHRoaXMuY29udGV4dCkub24odCx0aGlzLnNlbGVjdG9yLG4sYSksdGhpcyl9LGUuZm4uZGllPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIoImpRdWVyeS5mbi5kaWUoKSBpcyBkZXByZWNhdGVkIiksTT9NLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooZSh0aGlzLmNvbnRleHQpLm9mZih0LHRoaXMuc2VsZWN0b3J8fCIqKiIsbiksdGhpcyl9LGUuZXZlbnQudHJpZ2dlcj1mdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gbnx8Qy50ZXN0KGUpfHxyKCJHbG9iYWwgZXZlbnRzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKSxrLmNhbGwodGhpcyxlLHQsbnx8ZG9jdW1lbnQsYSl9LGUuZWFjaChTLnNwbGl0KCJ8IiksZnVuY3Rpb24odCxuKXtlLmV2ZW50LnNwZWNpYWxbbl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdCE9PWRvY3VtZW50JiYoZS5ldmVudC5hZGQoZG9jdW1lbnQsbisiLiIrZS5ndWlkLGZ1bmN0aW9uKCl7ZS5ldmVudC50cmlnZ2VyKG4sbnVsbCx0LCEwKX0pLGUuX2RhdGEodGhpcyxuLGUuZ3VpZCsrKSksITF9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMhPT1kb2N1bWVudCYmZS5ldmVudC5yZW1vdmUoZG9jdW1lbnQsbisiLiIrZS5fZGF0YSh0aGlzLG4pKSwhMX19fSl9KGpRdWVyeSx3aW5kb3cpOwoKLypqUXVlcnkubXkgMS4zLjQsIChjKSAyMDI0IGVybW91dGgqLwohZnVuY3Rpb24oeCl7dmFyIGE9IjEuMy41IixiPXdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkwsYz0hZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcixkPSgod2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZXx8d2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fCJlbiIpKyIiKS5zcGxpdCgiLSIpWzBdLnRvTG93ZXJDYXNlKCksZT0ie3l5eXl9LXtNTX0te2RkfSIsZj0ie0hIfTp7bW19IixnPSJvYmplY3QiLGg9ImRhdGEiLGk9ImFycmF5IixqPSJzdHJpbmciLGs9ImZ1bmN0aW9uIixsPSJjaGFuZ2UiLG09L150aGlzXC4vLG49T2JqZWN0LmlzQXJyYXksbz1PYmplY3QuaXNCb29sZWFuLHA9T2JqZWN0LmlzU3RyaW5nLHE9T2JqZWN0LmlzT2JqZWN0LHI9T2JqZWN0LmlzTnVtYmVyLHM9T2JqZWN0LmlzUmVnRXhwLHQ9T2JqZWN0LmlzRnVuY3Rpb24sdT1mdW5jdGlvbih4KXtyZXR1cm4gbnVsbCE9eCYmdHlwZW9mIHg9PWcmJnQoeC50aGVuKX0sdj1VKHgsIm15LmYucmVwbyIpP3gubXkuZi5yZXBvKCk6e19zcmM6e30sX25hbWU6IkRlZmF1bHQgbWFuaWZlc3QgY2FjaGUifSx3PVUoeCwibXkuZi5yZXN0eWxlcyIpP3gubXkuZi5yZXN0eWxlcygpOnt9LHk9T2JqZWN0Lm1lcmdlLHo9T2JqZWN0LmNsb25lLEE9T2JqZWN0LmtleXMsQj14LmV4dGVuZCxDPXguRGVmZXJyZWQsRD14LnR5cGUsRT1udWxsLEY9ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGwhPXh9LEc9eC5hamF4LEg9YXgsST1EYXRlLm5vdyxKPXR4LEs9e3ZhbHM6eyIubXktZm9ybSI6ZnVuY3Rpb24oeCxhKXtpZih4JiZ4Lm15KXt2YXIgYj14Lm15KGgpO3JldHVybiBPYmplY3QuZXF1YWwoYixhKT9iOngubXkoaCxhLCEwKX1yZXR1cm4gYXx8RX0sIi5oYXNEYXRlcGlja2VyIjpmdW5jdGlvbih4LGEpe0YoYSkmJnguZGF0ZXBpY2tlcigic2V0RGF0ZSIsIiI9PWE/YTpEYXRlLmNyZWF0ZShhKSk7dmFyIGI9eC5kYXRlcGlja2VyKCJnZXREYXRlIik7cmV0dXJuIGI/Yi5mb3JtYXQoZSk6IiJ9LCIubXktdGFncyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmKHAoYSl8fHIoYSk/eC50YWdzKGgsW2ErIiJdKTpuKGEpJiZ4LnRhZ3MoaCxhKSkseC50YWdzKGgpfSwiLnVpLWRyYWdnYWJsZSI6ZnVuY3Rpb24oeCxhKXtpZihGKGEpJiZxKGEpKXt2YXIgYj17fTtpc05hTihhLmxlZnQpfHwoYi5sZWZ0PSgrYS5sZWZ0KS5jZWlsKDIpKyJweCIpLGlzTmFOKGEudG9wKXx8KGIudG9wPSgrYS50b3ApLmNlaWwoMikrInB4IiksKGIubGVmdHx8Yi50b3ApJiZ4LmNzcyhiKX12YXIgYz14LnBvc2l0aW9uKCk7cmV0dXJue2xlZnQ6YSYmIWlzTmFOKGEubGVmdCk/KCthLmxlZnQpLmNlaWwoMik6Yy5sZWZ0LmNlaWwoMiksdG9wOmEmJiFpc05hTihhLnRvcCk/KCthLnRvcCkuY2VpbCgyKTpjLnRvcC5jZWlsKDIpfX0sIi5teS1mb3JtLWxpc3QiOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZyxoPShhLmRhdGEoImZvcm1saXN0Iil8fHt9KS5nZW5lcmF0b3J8fHt9LGk9aC5zZWxlY3Rvcnx8Ij4ubXktZm9ybSIsaj0hIWgubWVyZ2Usaz1oLnRlbXBsYXRlfHwiPGRpdj48L2Rpdj4iLGw9L1x7Ly50ZXN0KGspLG09aC5oYXNofHxZLG89aC5pZHx8WSxwPWguZXh0LHE9aC5kZWxheXx8NTAscj0idWktc29ydGFibGUiLHM9Ii4iK3IrIi1wbGFjZWhvbGRlciIsdD0oYS5pcygiLiIrciksISFhLmNoaWxkcmVuKHMpLmxlbmd0aCksdT1bXSx2PVtdLHc9SSgpLHk9YS5maW5kKGkpO2lmKEYoYikmJm4oYikpe2lmKHQpcmV0dXJuIGI7aWYoZD1bXSxlPXt9LHkuZWFjaChmdW5jdGlvbihhKXt2YXIgYixjPXgodGhpcyksZj1jLmRhdGEoIm15Iik7ZiYmKGQucHVzaChmLmRhdGEpLCFqJiYoYj1jLmRhdGEoImZvcm1saXN0IikpJiYoZVtiLm9pZF09Zi5kYXRhKSl9KSwhVChkLGIsIj09Iikpe3ZhciB6PVtdLEE9W10sQj17fSxDPXt9O2Zvcih2PVtdLGM9MDtjPGIubGVuZ3RoO2MrKylBW2NdPW8oYltjXSxjKSsiIixCW0FbY11dPWMseltjXT0obyE9PW0/bShiW2NdLGMpOkFbY10pKyIiO2Zvcih5LmVhY2goZnVuY3Rpb24oKXt2YXIgYT14KHRoaXMpLGM9KGEuZGF0YSgiZm9ybWxpc3QiKXx8e30pLm9pZDtjJiZRKEIsYykmJihqfHxiW0JbY11dPT09ZVtjXSk/Q1tjXT14KHRoaXMpOmEuaGFzQ2xhc3MoIm15LWZvcm0iKT9hLm15KCJyZW1vdmUiLCEwKTphLnJlbW92ZSgpfSksYz0wO2M8Yi5sZW5ndGg7YysrKVEoQyxBW2NdKT8oZj1DW0FbY11dLmRldGFjaCgpLmFwcGVuZFRvKGEpLHUucHVzaChmLm15KCJkYXRhIikpLHpbY10hPT0oZi5kYXRhKCJmb3JtbGlzdCIpfHx7fSkuaGFzaCYmKGomJnUubGFzdCgpIT09YltjXSYmaC5tZXJnZSh1Lmxhc3QoKSxiW2NdKSx2LnB1c2goZikpKTooKGY9eChsP2suYXNzaWduKGJbY10pOmspLmFwcGVuZFRvKGEpKS5kYXRhKCJmb3JtbGlzdCIse2xpc3Q6YltjXSxpbmRleDpjLGhhc2g6eltjXSxvaWQ6QVtjXX0pLHV4LmNhbGwoZixieChoLnBhcmVudCxoLm1hbmlmZXN0LGJbY10sYyxiLGEpLGJbY10pLnRoZW4oZnVuY3Rpb24oeCl7eC5vbigiY2hhbmdlLm15IixFLmRlYm91bmNlKHEvMS4zKSl9LmZpbGwoZikpLHUucHVzaChmLm15KCJkYXRhIikpKTtpZih2Lmxlbmd0aCYmcCl7Zm9yKGM9MDtjPHYubGVuZ3RoO2MrKylHKHZbY10pO3Y9W119cmV0dXJuIGQ9ZT1udWxsLHV9cmV0dXJuIGU9bnVsbCxkfWlmKHkubGVuZ3RoKXtpZih3LWguc3RhbXA+MS40KnF8fHctaC5zdGFtcD4xMDB8fCFoLnN0YXNoZWR8fGguc3Rhc2hlZC5sZW5ndGghPT15Lmxlbmd0aC0odD8xOjApKXt0JiYoZz1hLmZpbmQoIj4uIityKyItaGVscGVyIikpO3ZhciBEPTA7Zm9yKHkuZWFjaChmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPXgoYiksaD0hMTt0JiZmLmhhc0NsYXNzKHIrIi1oZWxwZXIiKXx8KHQmJmYuaGFzQ2xhc3MocisiLXBsYWNlaG9sZGVyIikmJihmPWcpLGM9Zi5kYXRhKCJteSIpLGQ9Zi5kYXRhKCJmb3JtbGlzdCIpLGMmJmQmJih1LnB1c2goYy5kYXRhKSxEIT1kLmluZGV4JiYoZC5pbmRleD1ELGg9ITApLHAmJihlPW0oYy5kYXRhLEQpKyIiKSE9PWQuaGFzaCYmKGQuaGFzaD1lLGg9ITApLEQrPTEsaCYmdi5wdXNoKGYpKSl9KSxjPTA7Yzx2Lmxlbmd0aDtjKyspRyh2W2NdKTt2PVtdLGguc3RhbXA9dyxoLnN0YXNoZWQ9dX1lbHNlIHU9aC5zdGFzaGVkLnNsaWNlKDApO3JldHVybiB1fXJldHVybiBifHxbXTtmdW5jdGlvbiBFKCl7dmFyIGIsYyxkPXgodGhpcyksZT1kLmRhdGEoIm15Iik7ZSYmKGM9KGI9ZC5kYXRhKCJmb3JtbGlzdCIpKS5pbmRleCxiLmhhc2g9bShlLmRhdGEsYykrIiIsYi5vaWQ9byE9PW0/byhlLmRhdGEsYykrIiI6Yi5oYXNoKSxhLnRyaWdnZXIoImNoZWNrLm15Iil9ZnVuY3Rpb24gRyh4KXt4LmRhdGEoIm15IikubG9ja3RpbGwrcS8xLjM8dyYmeC5teSgicmVkcmF3Iil9fSwiaW5wdXRbdHlwZT1kYXRlXSI6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gRihhKT8oYj0iIiE9YT9EYXRlLmNyZWF0ZShhKS5mb3JtYXQoZSk6IiIscChiKSYmIS9JbnZhbGlkLy50ZXN0KGIpJiZ4LnZhbChiKSxiKToiIiE9KGI9eC52YWwoKSk/RGF0ZS5jcmVhdGUoYikuZm9ybWF0KGUpOiIifSwiaW5wdXRbdHlwZT10aW1lXSI6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gRihhKT8oYj0iIiE9YT9EYXRlLmNyZWF0ZShhKS5mb3JtYXQoZik6IiIscChiKSYmIS9JbnZhbGlkLy50ZXN0KGIpJiZ4LnZhbChiKSxiKToiIiE9KGI9eC52YWwoKSk/RGF0ZS5jcmVhdGUoYikuZm9ybWF0KGYpOiIifSxpbnB1dDp7Ilt0eXBlPSd0ZXh0J10sW3R5cGU9J251bWJlciddLFt0eXBlPSdidXR0b24nXSxbdHlwZT0ncmFuZ2UnXSxbdHlwZT0naGlkZGVuJ10sOm5vdChbdHlwZV0pIjp7Ii51aS1zbGlkZXItaW5wdXQiOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSkuc2xpZGVyKCJyZWZyZXNoIil9LCJkaXYuc2VsZWN0Mi1jb250YWluZXIraW5wdXQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJkpTT04uc3RyaW5naWZ5KGEpIT09SlNPTi5zdHJpbmdpZnkoeC5zZWxlY3QyKCJ2YWwiKSkmJnguc2VsZWN0MigidmFsIixuKGEpP2E6W2FdKSx4LnNlbGVjdDIoInZhbCIpfSwiIjpmdW5jdGlvbih4LGEpe0YoYSkmJngudmFsKGErIiIpfX0sIlt0eXBlPSdwYXNzd29yZCddLFt0eXBlPSd0ZWwnXSxbdHlwZT0nZW1haWwnXSxbdHlwZT0nc2VhcmNoJ10iOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSsiIil9LCI6cmFkaW8iOmZ1bmN0aW9uKGEsYil7dmFyIGM9LTE7aWYoRihiKSl7YS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBkPXgodGhpcykudmFsKCk7YisiIj09ZCsiIiYmKGM9YSl9KTt2YXIgZD1hLmVxKDApLmNoZWNrYm94cmFkaW87aWYoZCYmYS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXgodGhpcyk7YyE9YSYmYi5pcygiOmNoZWNrZWQiKSYmYi5wcm9wKCJjaGVja2VkIiwhMSkuY2hlY2tib3hyYWRpbygicmVmcmVzaCIpfSksYz4tMSl7dmFyIGU9YS5lcShjKTtlLmlzKCI6Y2hlY2tlZCIpfHwoZS5wcm9wKCJjaGVja2VkIiwhMCksZCYmZS5jaGVja2JveHJhZGlvKCJyZWZyZXNoIikpfWVsc2UgZHx8YS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMSl9KX1pZigtMT09Yylmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKylhLmVxKGYpLmlzKCI6Y2hlY2tlZCIpJiYoYz1mKTtyZXR1cm4tMSE9Yz9hLmVxKGMpLnZhbCgpOiIifSwiOmNoZWNrYm94IjpmdW5jdGlvbihhLGIpe3ZhciBjPWIsZD1bXTtpZihGKGMpKXtuKGMpfHwoYz1bYl0pO3ZhciBlPSEhYS5lcSgwKS5jaGVja2JveHJhZGlvO2EuZWFjaChmdW5jdGlvbihhKXt2YXIgYj14KHRoaXMpLGY9Yi52YWwoKSxnPWIuaXMoIjpjaGVja2VkIik7LTEhPWMuaW5kZXhPZihmKT8oZC5wdXNoKGYpLGd8fGIucHJvcCgiY2hlY2tlZCIsITApKTpnJiZiLnByb3AoImNoZWNrZWQiLCExKSxlJiZiLmNoZWNrYm94cmFkaW8oInJlZnJlc2giKX0pfWVsc2UgYS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9eCh0aGlzKTthLmlzKCI6Y2hlY2tlZCIpJiZkLnB1c2goYS52YWwoKSl9KTtyZXR1cm4gZH19LHNlbGVjdDp7Ii51aS1zbGlkZXItc3dpdGNoIjpmdW5jdGlvbih4LGEpe0YoYSkmJih4LnZhbChhKyIiKSx4LnNsaWRlcigicmVmcmVzaCIpKX0sImRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QiOnsiW211bHRpcGxlXSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5zZWxlY3QyKCJ2YWwiLG4oYSk/YTpbYV0pLHguc2VsZWN0MigidmFsIil9LCIiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJnguc2VsZWN0MigidmFsIixhKyIiKSx4LnNlbGVjdDIoInZhbCIpfX0sIi5zZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIjp7IlttdWx0aXBsZV0iOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJkpTT04uc3RyaW5naWZ5KGEpIT09SlNPTi5zdHJpbmdpZnkoeC5zZWxlY3QyKCJ2YWwiKSkmJngudmFsKG4oYSk/YTpbYV0pLnRyaWdnZXIoImNoYW5nZS5zZWxlY3QyIikseC5zZWxlY3QyKCJ2YWwiKX0sIiI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC52YWwoYSsiIikudHJpZ2dlcigiY2hhbmdlLnNlbGVjdDIiKSx4LnZhbCgpfX0sIlttdWx0aXBsZV0iOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJih4LnZhbChhLFtdKSx4LnNlbGVjdG1lbnUmJih4LmRhdGEoInVpU2VsZWN0bWVudSIpfHx4LmRhdGEoInNlbGVjdG1lbnUiKSkmJnguc2VsZWN0bWVudSgicmVmcmVzaCIsITApKSx4LnZhbCgpfHxbXX0sIiI6ZnVuY3Rpb24oeCxhKXtGKGEpJiYoeC52YWwoYSsiIikseC5zZWxlY3RtZW51JiYoeC5kYXRhKCJ1aVNlbGVjdG1lbnUiKXx8eC5kYXRhKCJzZWxlY3RtZW51IikpJiZ4LnNlbGVjdG1lbnUoInJlZnJlc2giLCEwKSl9fSx0ZXh0YXJlYTp7Ii5teS1jbGVkaXRvciI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC52YWwoYSkuY2xlZGl0b3IoKVswXS51cGRhdGVGcmFtZSgpLHgudmFsKCl9LCJkaXYucmVkYWN0b3JfYm94IHRleHRhcmVhLC5yZWRhY3RvciI6ZnVuY3Rpb24oeCxhKXt2YXIgYj14Lmhhc0NsYXNzKCJteS1yZWRhY3Rvci05Iik7cmV0dXJuIEYoYSk/KGI/eC5yZWRhY3Rvcigic2V0IixhKTp4LnNldENvZGUoYSwhMSksYSk6Yj94LnJlZGFjdG9yKCJnZXQiKTp4LmdldENvZGUoKX0sIi5teS1jb2RlbWlycm9yIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpPyh4WzBdLm5leHRTaWJsaW5nLkNvZGVNaXJyb3Iuc2V0VmFsdWUoYSksYSk6eFswXS5uZXh0U2libGluZy5Db2RlTWlycm9yLmdldFZhbHVlKCl9LCIiOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSsiIil9fSwiZmllbGRzZXQsZm9ybSxzZWN0aW9uLGZvb3Rlcixhc2lkZSwubXktY29udGFpbmVyIjpmdW5jdGlvbih4LGEpe3ZhciBiPVMoeFswXSwwKS5zb3J0KCksYz1hO3JldHVybiBGKGEpJiYocChhKSYmKGM9YS5zcGxpdCgvWyxcc10rLykuY29tcGFjdCghMCkpLG4oYykmJihjLnNvcnQoKSxjLmpvaW4oIiAiKSE9PWIuam9pbigiICIpJiYoeC5hdHRyKCJjc3MiLGMuam9pbigiICIpKSxiPWMpKSksYn0sImRpdixzcGFuIjp7Ii51aS1zbGlkZXIiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJnguc2xpZGVyKCJvcHRpb24iLHguc2xpZGVyKCJvcHRpb24iLCJ2YWx1ZXMiKT8idmFsdWVzIjoidmFsdWUiLEwuY2xvbmUoYSkpLEwuY2xvbmUoeC5zbGlkZXIoIm9wdGlvbiIsInZhbHVlcyIpfHx4LnNsaWRlcigib3B0aW9uIiwidmFsdWUiKXx8MCl9LCIudWktYnV0dG9uc2V0IjpmdW5jdGlvbihhLGIpe2lmKEYoYikpe2lmKCIiPT1iKXt2YXIgYz1FO2lmKGEuZmluZCgiOnJhZGlvIikuZWFjaChmdW5jdGlvbigpe2M9KHgodGhpcykudmFsKCl8fHgodGhpcykuYnV0dG9uKCJvcHRpb24iLCJsYWJlbCIpKT09Yj94KHRoaXMpOmN9KSxjKXJldHVybiBjLmF0dHIoImNoZWNrZWQiLCEwKSxhLmJ1dHRvbnNldCgicmVmcmVzaCIpLGJ9fWVsc2V7dmFyIGQ9YS5maW5kKCI6cmFkaW86Y2hlY2tlZCIpO2lmKGQubGVuZ3RoJiZkLmJ1dHRvbilyZXR1cm4gZC52YWwoKXx8ZC5idXR0b24oIm9wdGlvbiIsImxhYmVsIil9cmV0dXJuIGEuZmluZCgiOnJhZGlvOmNoZWNrZWQiKS5hdHRyKCJjaGVja2VkIiwhMSksYS5idXR0b25zZXQoInJlZnJlc2giKSwiIn0sIi5hY2VfZWRpdG9yIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpJiZhY2UuZWRpdCh4WzBdKS5zZXRWYWx1ZShhKSxhY2UuZWRpdCh4WzBdKS5nZXRWYWx1ZShhKX0sIiI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5odG1sKGEpLHguaHRtbCgpfX0sImEscCxsaSx0ZCx0aCxoMSxoMixoMyxoNCxoNSxoNixwcmUsY29kZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5odG1sKGEpLHguaHRtbCgpfSxpbWc6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5hdHRyKCJzcmMiLGEpLHguYXR0cigic3JjIil8fCIifSwiIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpJiZ4Lmh0bWwoYSkseC5odG1sKCl8fHgudGV4dCgpfHx4LnZhbCgpKyIifHwiIn19LG1zZzp7IiI6e2VuOiJJbnZhbGlkIGlucHV0IixydToi0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1In0sZm9ybUVycm9yOntlbjoiRm9ybSBlcnJvciIscnU6ItCe0YjQuNCx0LrQsCDRhNC+0YDQvNGLIn0saW5pdEZhaWxlZDp7ZW46JzxwIGNsYXNzPSJteS1lcnJvciI+Rm9ybSBpbml0IGZhaWxlZDwvcD4nLHJ1Oic8cCBjbGFzcz0ibXktZXJyb3IiPtCe0YjQuNCx0LrQsCDQuNC90LjRhtC40LDQu9C40LfQsNGG0LjQuCDRhNC+0YDQvNGLPC9wPid9LGJhZElucHV0OntlbjoiSW52YWxpZCBpbnB1dCIscnU6ItCd0LXQstC10YDQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSJ9LHBhdHRlcm5NaXNtYXRjaDp7ZW46IlBhdHRlcm4gbWlzbWF0Y2giLHJ1OiLQndC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCINGI0LDQsdC70L7QvdGDIn0scmFuZ2VPdmVyZmxvdzp7ZW46Ik92ZXIgbWF4aW11bSIscnU6ItCR0L7Qu9GM0YjQtSDQvNCw0LrRgdC40LzRg9C80LAifSxyYW5nZVVuZGVyZmxvdzp7ZW46IlVuZGVyIG1pbmltdW0iLHJ1OiLQnNC10L3RjNGI0LUg0LzQuNC90LjQvNGD0LzQsCJ9LHN0ZXBNaXNtYXRjaDp7ZW46IlN0ZXAgbWlzbWF0Y2giLHJ1OiLQndC1INC60YDQsNGC0L3QviDRiNCw0LPRgyJ9LHRvb0xvbmc6e2VuOiJUb28gbG9uZyIscnU6ItCh0LvQuNGI0LrQvtC8INC00LvQuNC90L3QviJ9LHR5cGVNaXNtYXRjaDp7ZW46IkludmFsaWQgdHlwZSIscnU6ItCd0LXQstC10YDQvdGL0Lkg0YLQuNC/In0sdmFsdWVNaXNzaW5nOntlbjoiUmVxdWlyZWQiLHJ1OiLQntCx0Y/Qt9Cw0YLQtdC70YzQvdC+0LUg0L/QvtC70LUifX0sZXZlbnRzOnsiLmhhc0RhdGVwaWNrZXIiOiJjaGFuZ2UubXkgY2hlY2subXkiLCIubXktZm9ybSwubXktdGFncyI6ImNoYW5nZS5teSBjaGVjay5teSIsIi51aS1zbGlkZXIiOiJzbGlkZS5teSBjaGVjay5teSIsImRpdi5yZWRhY3Rvcl9ib3ggdGV4dGFyZWEiOiJyZWRhY3Rvci5teSBjaGVjay5teSIsIi5teS1jb2RlbWlycm9yIjoiY29kZW1pcnJvci5teSBjaGVjay5teSIsIi5hY2VfZWRpdG9yIjoiYWNlLm15IGNoZWNrLm15IiwiLm15LWZvcm0tbGlzdCI6InNvcnR1cGRhdGUubXkgY2hlY2subXkiLCIudWktc29ydGFibGUiOiJzb3J0Y2hhbmdlLm15IHNvcnR1cGRhdGUubXkgY2hlY2subXkiLCIudWktZHJhZ2dhYmxlIjoiZHJhZy5teSBkcmFnc3RvcC5teSBjaGVjay5teSIsImEsIC5wc2V1ZG9saW5rLCBpbnB1dFt0eXBlPWJ1dHRvbl0sIGJ1dHRvbiI6ImNsaWNrLm15IiwiaW1nLCA6cmFkaW8sIDpjaGVja2JveCI6ImNsaWNrLm15IGNoZWNrLm15IiwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QsLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUiOiJjaGFuZ2UubXkgY2hlY2subXkgaW5wdXQubXkiLCIudWktYnV0dG9uc2V0LGlucHV0LCBzZWxlY3QsIHRleHRhcmVhIjoiYmx1ci5teSBjaGFuZ2UubXkgY2hlY2subXkiKygiTWljcm8iPT09bmF2aWdhdG9yLmFwcE5hbWUudG8oNSk/IiBrZXl1cC5teSI6IiBpbnB1dC5teSIpLCIiOiJjaGVjay5teSJ9LGNvbnRhaW5lcnM6eyIqW2RhdGEtcm9sZT0nZmllbGRjb250YWluJ10gKiI6eyJpbnB1dCx0ZXh0YXJlYSxzZWxlY3QsYnV0dG9uLDpyYWRpbyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgucGFyZW50cygnW2RhdGEtcm9sZT0iZmllbGRjb250YWluIl0nKS5lcSgwKX19LCJkaXYucmVkYWN0b3JfYm94IHRleHRhcmVhIjpmdW5jdGlvbih4KXtyZXR1cm4geC5wYXJlbnRzKCJkaXYucmVkYWN0b3JfYm94IikuZXEoMCkucGFyZW50KCl9LCIubXktdGFncywuaGFzRGF0ZXBpY2tlciwudWktd2lkZ2V0LGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b24iOnsiLm15LWNsZWRpdG9yIjpmdW5jdGlvbih4KXtyZXR1cm4geC5wYXJlbnRzKCJkaXYuY2xlZGl0b3JNYWluIikuZXEoMCkucGFyZW50KCl9LCIiOmZ1bmN0aW9uKGEpe3ZhciBiPWFbMF0ucGFyZW50Tm9kZSxjPWIubm9kZU5hbWU7cmV0dXJuL14oZGl2fHNwYW58YXxwfGZvcm18ZmllbGRzZXR8bGl8dWx8dGR8dGh8aFxkKSQvaS50ZXN0KGMpP3goYik6YS5wYXJlbnRzKCJkaXYsc3BhbixhLHAsZm9ybSxmaWVsZHNldCxsaSx1bCx0ZCx0aCxoMSxoMixoMyxoNCxoNSxoNiIpLmVxKDApfX0sIiI6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9fSxvZmZvbjp7Ii5hY2VfZWRpdG9yIjpmdW5jdGlvbih4LGEpe2FjZS5lZGl0KGFbMF0pLnNldFJlYWRPbmx5KHgpfSwiLnVpLXNlbGVjdGFibGUiOmZ1bmN0aW9uKHgsYSl7angoYSwic2VsZWN0YWJsZSIseCl9LCIudWktc2xpZGVyIjpmdW5jdGlvbih4LGEpe2p4KGEsInNsaWRlciIseCl9LCIudWktZHJhZ2dhYmxlIjpmdW5jdGlvbih4LGEpe2p4KGEsImRyYWdnYWJsZSIseCl9LCIudWktYnV0dG9uc2V0IjpmdW5jdGlvbih4LGEpe2p4KGEsImJ1dHRvbnNldCIseCl9LCIuaGFzRGF0ZXBpY2tlciI6ZnVuY3Rpb24oeCxhKXtqeChhLCJkYXRlcGlja2VyIix4KX0sIi5teS1mb3JtIjpmdW5jdGlvbih4LGEpe2EubXkoImRpc2FibGVkIiwhIXgpfSwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QiOmZ1bmN0aW9uKHgsYSl7angoYSwic2VsZWN0MiIseCl9LCIuc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSI6ZnVuY3Rpb24oeCxhKXthLnByb3AoImRpc2FibGVkIiwhIXgpfSwiLm15LWNsZWRpdG9yIjpmdW5jdGlvbih4LGEpe2EuY2xlZGl0b3IoKVswXS5kaXNhYmxlKCEheCl9LCIiOmZ1bmN0aW9uKHgsYSl7YS5hdHRyKCJkaXNhYmxlZCIsISF4KX19LGRlc3Ryb3k6eyIuaGFzRGF0ZXBpY2tlciI6ZnVuY3Rpb24oeCl7eC5kYXRlcGlja2VyKCJkZXN0cm95Iil9LCIudWktc2xpZGVyIjpmdW5jdGlvbih4KXt4LnNsaWRlcigiZGVzdHJveSIpfSwiLnVpLXNvcnRhYmxlIjp7Ii5teS1mb3JtLWxpc3QiOmZ1bmN0aW9uKGEpe2EuZmluZCgiPi5teS1mb3JtIikuZWFjaChmdW5jdGlvbigpe3godGhpcykubXkoInJlbW92ZSIpfSksYS5yZW1vdmVDbGFzcygibXktZm9ybS1saXN0IiksYS5zb3J0YWJsZSgiZGVzdHJveSIpfSwiIjpmdW5jdGlvbih4KXt4LnNvcnRhYmxlKCJkZXN0cm95Iil9fSwiLm15LWZvcm0tbGlzdCI6ZnVuY3Rpb24oYSl7YS5maW5kKCI+Lm15LWZvcm0iKS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5teSgicmVtb3ZlIil9KX0sIi51aS1kcmFnZ2FibGUiOmZ1bmN0aW9uKHgpe3guZHJhZ2dhYmxlKCJkZXN0cm95Iil9LCIubXktcmVkYWN0b3ItOCI6ZnVuY3Rpb24oeCl7eC5kZXN0cm95RWRpdG9yKCkseC5yZW1vdmVDbGFzcygibXktcmVkYWN0b3ItOCIpfSwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QsLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUiOmZ1bmN0aW9uKHgpe3guc2VsZWN0MigiZGVzdHJveSIpfSwiLm15LWZvcm0iOmZ1bmN0aW9uKHgpe3gubXkoInJlbW92ZSIpfSx0ZXh0YXJlYTp7Ii5teS1jb2RlbWlycm9yIjpmdW5jdGlvbih4KXt4WzBdLm5leHRTaWJsaW5nLkNvZGVNaXJyb3IudG9UZXh0QXJlYSgpLHgucmVtb3ZlQ2xhc3MoIm15LWNvZGVtaXJyb3IiKX19fX07Sy5wYXJhbXM9e2NvbnRhaW5lcjpmdW5jdGlvbih4KXtyZXR1cm4geXgoeCxLLmNvbnRhaW5lcnMpKHgpfSxjaGFuZ2U6RSxyZWNhbGNEZXB0aDoyLGRlbGF5OjAsc3RyaWN0OiExLHJlc3R5bGU6LTEsbG9jYWxlOmQsbWVzc2FnZXM6T2JqZWN0Lm1hcChLLm1zZyxmdW5jdGlvbih4LGEpe3JldHVybiBhW2RdfHxhLmVufSksZXJyb3JUaXA6Ii5teS1lcnJvci10aXAiLGVycm9yQ3NzOiJteS1lcnJvciIsYW5pbWF0ZTowLGVmZmVjdDpmdW5jdGlvbih4LGEsYil7aWYoYSlyZXR1cm4geC5mYWRlSW4oYik7eC5mYWRlT3V0KGIpfSxyZW1lbWJlcjowLHNpbGVudDohMSxoaXN0b3J5Ont9LGhpc3RvcnlEZWxheToxMDAsbG9hZGVyOmZ1bmN0aW9uKHgsYSl7dmFyIGI9QygpLGM9SCh4KyIiKTtyZXR1cm4gYz9iLnJlc29sdmUoYyk6Yi5yZWplY3QobnVsbCksYi5wcm9taXNlKCl9LGFqYXhUaW1lb3V0OjFlNH0sRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0sUmVnRXhwLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4ibmV3IFJlZ0V4cCgiK3RoaXMudG9TdHJpbmcoKSsiKSJ9O3ZhciBMPXtjb246UCxjbG9uZTpmdW5jdGlvbih4KXtyZXR1cm4geC5jbG9uZT94LmNsb25lKCk6eH0saW5kb206UixqcXVpeDpqeCxvdmVybGFwOiQscGF0Y2g6WixraWNrb2ZmOl8sc2RibUNvZGU6WSx0b2pzb246QXgsZnJvbWpzb246ZnVuY3Rpb24oeCl7dmFyIGE9SlNPTi5wYXJzZSh4KTtyZXR1cm4gQngoYSksYX0sdW5qc29uOmZ1bmN0aW9uKHgpe3JldHVybiBCeCh4KSx4fSxtYXNrOm54LHVubWFzazpveCxnZXRyZWY6VSxyZXBvOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHJlc3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGJsb2IyYmFzZTY0OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1uZXcgRmlsZVJlYWRlcjtjLm9ubG9hZD1mdW5jdGlvbigpe2EoYj9jLnJlc3VsdDpjLnJlc3VsdC5zcGxpdCgiLCIpWzFdKX0sYy5yZWFkQXNEYXRhVVJMKHgpfSxiYXNlNjQyYmxvYjpmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPWF0b2IoeCksZD1jLmxlbmd0aCxlPW5ldyBBcnJheUJ1ZmZlcihkKSxmPW5ldyBVaW50OEFycmF5KGUpLGc9MDtnPGQ7ZysrKWZbZ109Yy5jaGFyQ29kZUF0KGcpO3ZhciBoPW5ldyBCbG9iKFtmXSx7dHlwZTpifHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn0pO2lmKCF0KGEpKXJldHVybiBoO2EoaCl9LGJhc2U2NDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnVsbCxlPXAoYSk/YTp4Lm15LnRvanNvbihhKSxmPXAoYyk/ImRhdGE6IitjKyI7YmFzZTY0LCI6IiI7aWYoYil7dHJ5e2Q9ZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYihlKSkpfWNhdGNoKHgpe2Q9bnVsbH1pZihudWxsIT09ZCYmLyheIi4qIiQpfCheXFsuKlxdJCl8KF5cey4qXH0kKS8udGVzdChkKSl0cnl7ZD1MLmZyb21qc29uKGQpfWNhdGNoKHgpe2Q9bnVsbH1yZXR1cm4gZH1yZXR1cm4gZit3aW5kb3cuYnRvYSgoITA9PT1jPyLDr8K7wr8iOiIiKSt1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpKX0sY3NzMmpzb246ZnVuY3Rpb24oeCl7dmFyIGE9IiI7cmV0dXJuKHgrIiIpLnJlcGxhY2UoL1wvXCpbXHNcU10rXCpcLy9nbSwiIikucmVwbGFjZSgvQGNoYXJzZXRbXjtdKzsvZ2ltLCIiKS5yZXBsYWNlKC9bXG5cdFxzXSsvZywiICIpLnJlcGxhY2UoL1xzKkBtZWRpYVtee10qXHsvZyxmdW5jdGlvbih4KXtyZXR1cm4geC50bygtMSkudHJpbSgpKyLhtKUifSkucmVwbGFjZSgvXH0vZywifeG0pSIpLnJlcGxhY2UoL15cbisvZywiIikucmVwbGFjZSgvW1xuXHNdKyQvZywiIikuc3BsaXQoIuG0pSIpLmNvbXBhY3QoITApLnJlZHVjZShmdW5jdGlvbih4LGIpe3ZhciBjLGQsZSxmPWIudHJpbSgpO3JldHVybiJ9Ij09Zj9hPSIiOi9eW157XStce1teXH1dK1x9JC8udGVzdChmKT8oZD0iICIrKGM9Zi50bygtMSkuc3BsaXQoInsiKSlbMF0udHJpbSgpLCI7IiE9KGU9Y1sxXS50cmltKCkpLmxhc3QoKSYmKGUrPSI7IiksYT94W2FdW2RdPSh4W2FdW2RdfHwiIikrZTp4W2RdPSh4W2RdfHwiIikrZSk6L15AbWVkaWEvLnRlc3QoZikmJih4W2ZdPXt9LGE9ZikseH0se30pfSx0bXBsOmZ1bmN0aW9uKCl7fSxfczJjc3M6dngsX25vcm1VSTpxeH0sTT17Y29udGFpbmVyOmZ1bmN0aW9uKHgpe3JldHVybiB5eCh4LEsuY29udGFpbmVycykoeCl9LGRhdGE6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiBxKHgpJiYoYi5teSgpLmRhdGE9JChiLm15KCkuZGF0YSx4KSx0aGlzLm15KCJyZWRyYXciLGEpKSxiLm15KCkuZGF0YX0sZGlzYWJsZWQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEubXkoKTtpZihiKXJldHVybiB4PT1FP2IuZGlzYWJsZWQ6KHg/KEEoYi51aSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj14eChhLHgpLGM9Yi5teSgpO2MmJihjLnByZWRpc2FibGVkPWMuZGlzYWJsZWQpLGl4KCEwLGIsIjpkaXNhYmxlZCIpfSksYS5hZGRDbGFzcygibXktZGlzYWJsZWQiKSk6KEEoYi51aSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj14eChhLHgpLGM9Yi5teSgpO2MmJml4KGMucHJlZGlzYWJsZWQsYiwiOmRpc2FibGVkIil9KSxhLnJlbW92ZUNsYXNzKCJteS1kaXNhYmxlZCIpLGEubXkoInJlZHJhdyIpKSx2b2lkIDApfSxlcnJvcnM6ZnVuY3Rpb24oKXt2YXIgYT14KHRoaXMpLm15KCkuZXJyb3JzfHx7fSxiPXt9O3JldHVybiBBKGEpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGM9YVt4XTsodHlwZW9mIGM9PWomJiIiIT1jfHxxKGMpJiZPYmplY3Quc2l6ZShjKSkmJihiW3hdPWMpfSksYn0sZmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5teSgpO3JldHVybiBiJiZiLnJvb3QmJihhPWIucm9vdCksYS5maW5kKHgpfSxoaXN0b3J5OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGx4KHgsdGhpcy5teSgpLnBhcmFtcyxhKX0saWQ6ZnVuY3Rpb24oeCxhKXtpZihwKHgpKXJldHVybiBIKHgsYSk7dmFyIGI9dGhpcy5teSgpO3JldHVybiBiJiZiLmlkP2IuaWQ6RX0saW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4oKHRoaXMubXkoKS5yb290JiYhdGhpcy5teSgpLmRkYXRhP3RoaXMubXkoKS5yb290OnRoaXMpLmRhdGEoImZvcm1saXN0Iil8fHt9KS5pbmRleH0saW5kb206ZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzKX0saW5pdDp1eCxpbnNlcnQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcy5oYXNDbGFzcygibXktZm9ybS1saXN0Iik/dGhpczp0aGlzLm15KCkucm9vdHx8dGhpcyxlPWQuaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpP2Q6ZC5wYXJlbnQoIi5teS1mb3JtLWxpc3QiKSxmPShkLmRhdGEoImZvcm1saXN0Iil8fHt9KS5pbmRleCxnPWEsaD1lLmRhdGEoImZvcm1saXN0IikuZ2VuZXJhdG9yO2lmKG51bGw9PWYmJihmPTApLGI9bS50ZXN0KGguYmluZCk/VShlLm15KCkubWFuaWZlc3QsaC5iaW5kLnJlcGxhY2UobSwiIikpOlUoZS5teSgpLmRhdGEsaC5iaW5kKSwhcShnKSlpZihxKGgubWFuaWZlc3QpKWc9eihoLm1hbmlmZXN0LmRhdGEsITApfHx7fTtlbHNle2lmKGU9PT1kKXRocm93Ik5vIGRhdGEgdG8gaW5zZXJ0LCBjYW5ub3QgZ3Vlc3Mgd2hlbiBtYW5pZmVzdCBpcyBhIGZ1bmN0aW9uLiI7Zz16KGQubXkoKS5tYW5pZmVzdC5kYXRhLCEwKX1pZigiYmVmb3JlIj09PXgpYz1mO2Vsc2UgaWYoImFmdGVyIj09PXgpYz1mKzE7ZWxzZXtpZihpc05hTih4KSl0aHJvdyJJbnZhbGlkIHBvc2l0aW9uIGZvciBpbnNlcnRpb24iO2M9KDEqeCkuY2xhbXAoMCxiLmxlbmd0aCl9Yi5hZGQoZyxjKSxlLnRyaWdnZXIoInJlZHJhdyIpfSxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4ianNvbiI9PXg/TC50b2pzb24odGhpcy5teSgpLm1hbmlmZXN0KTp0aGlzLm15KCkubWFuaWZlc3R9LHByb21pc2U6ZnVuY3Rpb24oeCl7cmV0dXJuIHQoeCkmJnRoaXMubXkoKS5wcm9taXNlLnRoZW4oeCksdGhpcy5teSgpLnByb21pc2V9LHJhZGlvOmZ1bmN0aW9uKHgsYSl7dGhpcy50cmlnZ2VyKCJyYWRpbyIscCh4KT97Y2hhbm5lbDp4LG1lc3NhZ2U6YX06eCl9LHJlZHJhdzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLm15KCksZD0yO3JldHVybiBjJiZxKGMudWkpJiYoZD1jLnBhcmFtcy5yZWNhbGNEZXB0aCxPYmplY3Qua2V5cyhjLnVpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPXh4KGIsYSk7engoYyx4P0U6dm9pZCAwLGQpLHh8fChjLmhhc0NsYXNzKCJteS1mb3JtIikmJmMubXkoInJlZHJhdyIpLGMuaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpP2MudHJpZ2dlcigicmVkcmF3Iik6Yy50cmlnZ2VyKCJjaGVjay5teSIpKX0pLCFhJiZ4JiZiLnRyaWdnZXIobCkpLGJ9LHJlbW92ZTpmdW5jdGlvbih4KXt2YXIgYSxiLGMsZCxlLGYsZyxoLGk9dGhpcztpZighdGhpcy5teSgpKXJldHVybiBFO2lmKHRoaXMubXkoKS5yb290JiYhdGhpcy5teSgpLmRkYXRhJiYoaT10aGlzLm15KCkucm9vdCksZT0oYz1pLm15KCkpLmRhdGEsZz1jLmNpZCxoPWMubWlkLGkudW5iaW5kKCIubXkiKSxxKGMpJiZjLm1hbmlmZXN0JiZ0KGMubWFuaWZlc3QuZGllKSl0cnl7Yy5tYW5pZmVzdC5kaWUuY2FsbChjLm1hbmlmZXN0LGksYy5tYW5pZmVzdCl9Y2F0Y2goeCl7fWlmKGE9Yy5zdHlsZSlpZigiMSI9PWEuZGF0YSgiY291bnQiKSl0cnl7YS5yZW1vdmUoKX1jYXRjaCh4KXt9ZWxzZSBhLmRhdGEoImNvdW50IixhLmRhdGEoImNvdW50IiktMSk7aWYoYj1jLmxvY2FsU3R5bGUpdHJ5e2RlbGV0ZSB3W2ddLGIucmVtb3ZlKCl9Y2F0Y2goeCl7fWlmKHdpbmRvdy5VUkwmJihkPWMubG9jRmlsZXMpJiZkLmxlbmd0aClmb3IodmFyIGo9MDtqPGQubGVuZ3RoO2orKyl0cnl7VVJMLnJldm9rZU9iamVjdFVSTChkW2pdKX1jYXRjaCh4KXt9aWYoKGY9KGN8fHt9KS51aSkmJkEoZikuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYSxiLGMsZD14eChpLHgpO2lmKChiPWQuZGF0YSgibW9kYWwiKSkmJihiLmNhbmNlbCgpLGQucmVtb3ZlRGF0YSgibW9kYWwiKSksYj1kLmRhdGEoIm1vZGFscyIpKWZvcihjIGluIGIpYltjXSYmYltjXS5jYW5jZWwoKTtkLnVuYmluZCgiLm15Iik7dHJ5e2E9eXgoZCxLLmRlc3Ryb3kpLHQoYSkmJmEoZCl9Y2F0Y2goeCl7fWQucmVtb3ZlRGF0YSgiZm9ybWxpc3QiKS5yZW1vdmVEYXRhKCJteXZhbCIpLnJlbW92ZURhdGEoIm15Iil9KSx4JiZpLmhhc0NsYXNzKCJteS1mb3JtIikpaS5yZW1vdmUoKTtlbHNlIGlmKGkuZGF0YSgiZm9ybWxpc3QiKSYmaS5oYXNDbGFzcygibXktZm9ybSIpKXt2YXIgaz1pLnBhcmVudHMoIi5teS1mb3JtLWxpc3QiKS5lcSgwKTtpLnJlbW92ZSgpLGsudHJpZ2dlcigiY2hlY2siKX1lbHNlIGkucmVtb3ZlRGF0YSgiZm9ybWxpc3QiKS5yZW1vdmVEYXRhKCJteXZhbCIpLnJlbW92ZURhdGEoIm15IikucmVtb3ZlQ2xhc3MoIm15LWZvcm0iKTtyZXR1cm4gaS5yZW1vdmVDbGFzcygibXktZm9ybS0iK2crIiBteS1tYW5pZmVzdC0iK2gpLGV9LHJlc2V0OmZ1bmN0aW9uKCl7dHJ5e18odGhpcy5teSgpLmRhdGEsdGhpcy5teSgpLmluaXRpYWwpLHRoaXMubXkoInJlZHJhdyIpfWNhdGNoKHgpe3JldHVybiExfXJldHVybiEwfSxyZXN0eWxlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1bXSxlPXRoaXMuaGFzQ2xhc3MoIm15LWZvcm0iKT90aGlzOnRoaXMucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKTtpZihlLmxlbmd0aCYmZS5pcygiOnZpc2libGUiKSl7Zm9yKChjPShlLmRhdGEoIm15Iil8fHt9KS5jaWQpJiZkLnB1c2goYyksYXx8eHgoZSwiLm15LXJlc3R5bGUiLCEwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9KHgodGhpcykuZGF0YSgibXkiKXx8e30pLmNpZDthJiZkLnB1c2goYSl9KSxiPTA7YjxkLmxlbmd0aDtiKyspaWYod1tkW2JdXSl0cnl7d1tkW2JdXSgpfWNhdGNoKHgpe31yZXR1cm4hIWQubGVuZ3RofXJldHVybiExfSx1aTpmdW5jdGlvbih4KXt2YXIgYSxiPXRoaXMsYz1iLm15KCksZD1bXTtpZighYylyZXR1cm4gRTtpZighcSh4KSlyZXR1cm4gYy51aTtmb3IoQSh4KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2QucHVzaCh4KX0pLGMudWk9cXgoJChjLnVpLHgpKSxhPTA7YTxkLmxlbmd0aDthKyspZngoeHgoYixkW2FdLCEwKSxiLGMudWlbZFthXV0sZFthXSk7cmV0dXJuIEEoeCkuZm9yRWFjaChmdW5jdGlvbih4KXt4eChiLHgpLnRyaWdnZXIoImNoZWNrIil9KSxjLnVpfSx1bmRvOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIubXkoKSxkPWMucGFyYW1zLmhpc3RvcnksZT1BKGQpLnNvcnQoKSxmPTEqKHBhcnNlSW50KHgpfHwwKTtyZXR1cm4hZS5sZW5ndGh8fGY8MD9FOihjLnBhcmFtcy5lcnJvcnMmJmMucGFyYW1zLmVycm9ycy52YWx1ZXMoKS5jb21wYWN0KCEwKS5sZW5ndGg/T2JqZWN0LmVxdWFsKGMuZGF0YSxjLmxhc3RDb3JyZWN0KXx8KGYrPTEpOk9iamVjdC5lcXVhbChkW2UubGFzdCgpXSxjLmRhdGEpJiYoZis9MSksKGE9bHgoZixjLnBhcmFtcywhMCkpJiYoXyhiLm15KCkuZGF0YSxhKSxiLm15KCJyZWRyYXciKSksYi5teSgpLmRhdGEpfSx2YWw6ZnVuY3Rpb24oeCl7cmV0dXJuIGt4KHRoaXMseCl9LHZhbGlkOmZ1bmN0aW9uKCl7dmFyIGE9eCh0aGlzKS5teSgpLmVycm9ycyxiPTA7cmV0dXJuIEEoYSkuZm9yRWFjaChmdW5jdGlvbih4KXtifHwoYVt4XSYmcChhW3hdKXx8cShhW3hdKSYmQShhW3hdKS5sZW5ndGgpJiZiKyt9KSwhYn0sdmVyc2lvbjpmdW5jdGlvbigpe3JldHVybiBhfX0sTj1PYmplY3Qua2V5cyhNKTtyZXR1cm4geC5teXx8KHgubXk9e30pLEIoeC5teSx7Zjp4LmV4dGVuZCh7fSxMKSx0b2pzb246TC50b2pzb24sZnJvbWpzb246TC5mcm9tanNvbixyYWRpbzpmdW5jdGlvbihhLGIpe2d4KHgoZG9jdW1lbnQpLHAoYSk/e2NoYW5uZWw6YSxtZXNzYWdlOmJ9OmEpfSxydWxlczpLLGxvY2FsZTpmdW5jdGlvbih4KXtpZighcCh4KSlyZXR1cm4gZDtkPXgudG9Mb3dlckNhc2UoKSxLLnBhcmFtcy5sb2NhbGU9ZH0sYWpheDpmdW5jdGlvbih4KXtyZXR1cm4gdCh4KT9HPXg6Ry5hcHBseSh0aGlzLFMoYXJndW1lbnRzLDApKX0sY2FjaGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdCh4KT9IPXg6SCh4LGEpfSxub3c6ZnVuY3Rpb24oeCl7aWYoIXQoeCkpcmV0dXJuIEkoKTtJPXh9LHJlcXVpcmU6ZnVuY3Rpb24oeCl7cmV0dXJuIHQoeCk/Sj14OkouYXBwbHkodGhpcyxTKGFyZ3VtZW50cywwKSl9LGNoYWluOmZ1bmN0aW9uKCl7dmFyIHg9MSxhPTFlMyxiPVtdLGM9ITEsZD1mdW5jdGlvbihjLGQsZil7Yi5wdXNoKFtjLGR8fHgsZnx8YV0pLGUoKX07cmV0dXJuIGQuZGVsYXk9ZnVuY3Rpb24oYSl7cmV0dXJuIGlzTmFOKGEpfHwoeD0oYS0wKS5jbGFtcCgwLDFlNikpLHh9LGQudGltZW91dD1mdW5jdGlvbih4KXtyZXR1cm4gaXNOYU4oeCl8fChhPSh4LTApLmNsYW1wKDEsMWU2KSksYX0sZC5zdGFydD1mdW5jdGlvbigpe2M9ITAsZSgpfSxkLnN0b3A9ZnVuY3Rpb24oKXtjPSExfSxkO2Z1bmN0aW9uIGUoKXtpZihiLmxlbmd0aCYmYyl7dmFyIHgsYT1iLnNoaWZ0KCksZD1mdW5jdGlvbigpe2UuZGVsYXkoYVsxXSl9Lm9uY2UoKTt0cnl7eD1hWzBdKCl9Y2F0Y2goeCl7ZCgpfXUoeCk/KHgudGhlbihkLGQpLGQuZGVsYXkoYVsxXSkpOmQoKX19fSgpLHZlcnNpb246ZnVuY3Rpb24oKXtyZXR1cm4gYX19KSx4Lm15LmluY2FjaGU9T2JqZWN0LmNyZWF0ZSh2KSx4Lm15LnZlcnNpb24udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYX0seC5mbi5teT1mdW5jdGlvbihhKXt2YXIgYjtpZih2b2lkIDA9PT1hKXJldHVybiB0aGlzLmRhdGEoIm15Iik7aWYocChhKSYmInsiPT1hLnN1YnN0cigwLDEpKXt0cnl7Yj1KU09OLnBhcnNlKGEpfWNhdGNoKHgpe31pZihiKXJldHVybiBNLmluaXQuYXBwbHkodGhpcyxbYl0uYWRkKFMoYXJndW1lbnRzLDEpKSl9cmV0dXJuIHAoYSkmJk1bYV0/TVthXS5hcHBseSh0aGlzLFMoYXJndW1lbnRzLDEpKTpwKGEpJiZIKGEsImV4aXN0Iik/TS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0eXBlb2YgYSE9PWcmJmE/KHguZXJyb3IoIk1ldGhvZCAiK2ErIiBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkubXkiKSx2b2lkIDApOk0uaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHgod2luZG93KS5vZmYoIi5teSIpLm9uKCJyYWRpby5teSIsZnVuY3Rpb24oYSxiKXthLnN0b3BQcm9wYWdhdGlvbigpLGd4KHgoZG9jdW1lbnQpLGIpfSkub24oInJlc2l6ZS5teSIsZnVuY3Rpb24oKXtBKHcpLmZvckVhY2goZnVuY3Rpb24oeCl7dHJ5e3dbeF0oKX1jYXRjaCh4KXt9fSl9LmRlYm91bmNlKDY3KSksdm9pZCAwO2Z1bmN0aW9uIE8oKXt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUCgpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUSh4LGEpe3JldHVybiJoYXNPd25Qcm9wZXJ0eSIhPWE/eC5oYXNPd25Qcm9wZXJ0eShhKTohISgiaGFzT3duUHJvcGVydHkiaW4geCl9ZnVuY3Rpb24gUihhKXtyZXR1cm4geC5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYVswXSl9ZnVuY3Rpb24gUyh4LGEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh4LGF8fDApfWZ1bmN0aW9uIFQoeCxhLGIpe3ZhciBjPTAsZD14Lmxlbmd0aCxlPSEwO2lmKHg9PT1hKXJldHVybiI9PT0iO2lmKCI9PT0iPT1iKXJldHVybiIiO2lmKGQhPWEubGVuZ3RoKXJldHVybiIiO2Zvcig7YzxkJiZlO2MrKyllPXhbY109PT1hW2NdO2lmKGUpcmV0dXJuIj09IjtpZigiPT0iPT1iKXJldHVybiIiO2ZvcihlPSEwO2M8ZCYmZTtjKyspZT1PYmplY3QuZXF1YWwoeFtjXSxhW2NdKTtyZXR1cm4gZT8iPSI6IiJ9ZnVuY3Rpb24gVSh4LGEpe3JldHVybihwKGEpP2Euc3BsaXQoIi4iKTpuKGEpP2E6WyIiXSkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9eCl7aWYoLz0vLnRlc3QoYSkpe3ZhciBiPWEuc3BsaXQoIj0iLDIpO3JldHVybiBxKHgpP09iamVjdC52YWx1ZXMoeCkuZmluZChmdW5jdGlvbih4KXtyZXR1cm4hKCFxKHgpJiYhbih4KSkmJnhbYlswXV09PWJbMV19KTpuKHgpP3guZmluZChmdW5jdGlvbih4KXtyZXR1cm4hKCFxKHgpJiYhbih4KSkmJnhbYlswXV09PWJbMV19KTp2b2lkIDB9aWYobnVsbCE9eFthXSlyZXR1cm4geFthXX19LHgpfWZ1bmN0aW9uIFYoeCl7dmFyIGE9eC5teSgpO3JldHVybiBhP2Eucm9vdD9hLnJvb3QubXkoKTphOm51bGx9ZnVuY3Rpb24gVyh4KXt2YXIgYT17fSxiPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBwKHgpP3guc3BsaXQoL1ssXHNdKy8pLmNvbXBhY3QoITApLnVuaXF1ZSgpLm1hcChmdW5jdGlvbih4KXthW3hdPWJ9KTpuKHgpP3guY29tcGFjdCghMCkudW5pcXVlKCkubWFwKGZ1bmN0aW9uKHgpe2FbeF09Yn0pOnEoeCkmJkEoeCkuZm9yRWFjaChmdW5jdGlvbihiKXt0KHhbYl0pP2FbYl09eFtiXTphW2JdPWZ1bmN0aW9uKCl7cmV0dXJuIHhbYl19fSksYX1mdW5jdGlvbiBYKHgpe3ZhciBhLGI9eCxjPXt9O2lmKHAoYikmJihiPWIuc3BsaXQoL1ssXHNdKy8pKSxuKGIpKXtmb3IoYj1iLmNvbXBhY3QoITApLGE9MDthPGIubGVuZ3RoO2ErKyljW2JbYV1dPSEwO3JldHVybiBjfXJldHVybiBxKGIpP3g6bnVsbH1mdW5jdGlvbiBZKHgpe2Zvcih2YXIgYT1KU09OLnN0cmluZ2lmeSh4KSxiPTAsYz0wO2M8YS5sZW5ndGg7YysrKWI9YS5jaGFyQ29kZUF0KGMpKyhiPDw2KSsoYjw8MTYpLWI7cmV0dXJuKDFlMTErYikudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIFooeCxhKXtyZXR1cm4gQShhKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3EoYVtiXSk/USh4LGIpP1ooeFtiXSxhW2JdKTp4W2JdPXooYVtiXSwhMCk6USh4LGIpfHwobihhW2JdKT94W2JdPWFbYl0uY2xvbmUoITApOnhbYl09YVtiXSl9KSx4fWZ1bmN0aW9uICQoeCxhKXtyZXR1cm4geD9hP3koeCxhLCExLGIpOng6e307ZnVuY3Rpb24gYih4LGEsYyl7cmV0dXJuIG51bGw9PWM/YTpxKGMpP3koYSxjLCExLGIpOmN9fWZ1bmN0aW9uIF8oeCxhKXtyZXR1cm4gQSh4KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2RlbGV0ZSB4W2FdfSksIm9iamVjdCI9PXR5cGVvZiBhJiZ5KHgsYSwhMCkseH1mdW5jdGlvbiB4eChhLGIsYyl7cmV0dXJuL15bI1wuXVthLXowLTlfXC1dezEsMzF9JC9pLnRlc3QoYik/eChjP2FbMF0ucXVlcnlTZWxlY3RvckFsbChiKTphWzBdLnF1ZXJ5U2VsZWN0b3IoYikpOmN8fC86Ly50ZXN0KGIpfHwvXlthLXpdezEsMzF9W1xbXC5cI11bYS16XS9pLnRlc3QoYik/YS5maW5kKGIpOmEuZmluZChiKS5lcSgwKX1mdW5jdGlvbiBheCh4LGEpe3ZhciBiLGM7cmV0dXJuIHAoeCk/KGI9eCxjPVUocShhKT9hOnYsYiksImV4aXN0Ij09PWE/cShjKTpjP3ooYywhMCk6bnVsbCk6cSh4KT8oYz1jeCh4LGEpLHEoYyk/YzpudWxsKTp2b2lkIDA9PT14P3YuX3NyYzpudWxsPT09eD9PYmplY3QucmVqZWN0KHYsL15fLyk6bnVsbH1mdW5jdGlvbiBieCh4LGEpe3ZhciBiLGM7aWYocShhKSlyZXR1cm4gYTtpZihwKGEpKXtpZihudWxsPT0oYj1VKHgsYSkpJiYoYj16KHYuX3NyY1thXSwhMCkpLG51bGw9PWImJihiPVUodixhKSxxKGIpJiZxKGIuX3NlbGYpP2I9eihiLl9zZWxmLCEwKTpxKGIpJiYoYj16KGIsITApKSksbnVsbD09YiYmVSh4LCJwYXJhbXMuY2FjaGUiKSYmKGM9VSh4LCJwYXJhbXMuY2FjaGUiKSx0KGMpP2I9YyhhKTpxKGMpJiYoYj1IKGEsYykpLHEoYikmJihxKGIuX3NlbGYpJiYoYj16KGIuX3NlbGYsITApKSx5KGIse3BhcmFtczp7Y2FjaGU6Y319LCEwKSkpLG51bGwhPWImJnEoYikpcmV0dXJuKGM9Y3x8VSh4LCJwYXJhbXMuY2FjaGUiKSkmJnkoYix7cGFyYW1zOntjYWNoZTpjfX0sITApLGI7dGhyb3ciQ29tcG9uZW50ICIrYSsiIG5vdCBmb3VuZC4ifXJldHVybiB0KGEpP2EuYXBwbHkoeCxTKGFyZ3VtZW50cywyKSk6bnVsbH1mdW5jdGlvbiBjeChhLGIpe3ZhciBkLGUsZixnLGgsaT1ifHx2LGo9YTtpZighKHEoaSkmJnEoaikmJnEoai51aSkmJnAoai5pZCkpKXJldHVybiJDYW7igJl0IHNhdmUgbWFuaWZlc3QgaW50byBjYWNoZSwgaW52YWxpZCBhcmd1bWVudHMuIjtRKGksIl9zcmMiKXx8KGkuX3NyYz17fSksZj1qLmlkO3RyeXtqPXooYSwhMCl9Y2F0Y2goeCl7cmV0dXJuIkNhbuKAmXQgc2F2ZSBjaXJjdWxhci1yZWZlcmVuY2luZyBvYmplY3QgaW50byBjYWNoZS4ifXRyeXsoIWoucGFyYW1zfHxqLnBhcmFtcyYmIWoucGFyYW1zLnN0cmljdCkmJkJ4KGosITApfWNhdGNoKHgpe3JldHVybiJJbnZhbGlkIG1hbmlmZXN0LCBwYXJzZSBlcnJvci4ifWlmKGQ9ZHgoaikscChkKSlyZXR1cm4gTyhkKSxkO2lmKHkoaix7cGFyYW1zOntzdHJpY3Q6ITB9fSwhMCksaS5fc3JjW2ZdPWosZz1ueChpLGYpKXtpZihnLnBhcmFtcyYmZy5wYXJhbXMucHJvdGVjdClyZXR1cm4iQ2Fu4oCZdCBzYXZlIG1hbmlmZXN0IGludG8gY2FjaGUgb3ZlciBwcm90ZWN0ZWQgb25lLiI7Zy5fc2VsZiYmZGVsZXRlIGcuX3NlbGYseC5leHRlbmQoITAsaSxveCgiIixmKSl9cmV0dXJuIHguZXh0ZW5kKCEwLGksb3goaixmKSksKGU9T2JqZWN0LmtleXMoaS5fc3JjKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHguc3RhcnRzV2l0aChmKyIuIil9KSkuc29ydCgpLGUuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYjsoYj1ueChpLGEpKSYmKGIuX3NlbGYmJmRlbGV0ZSBiLl9zZWxmLHguZXh0ZW5kKCEwLGksb3goIiIsYSkpKSx4LmV4dGVuZCghMCxpLG94KGkuX3NyY1thXSxhKSl9KSxoPVUoaSxmKSxjP2guX3NlbGY9aS5fc3JjW2ZdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJfc2VsZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBpLl9zcmNbZl19LHNldDpmdW5jdGlvbigpe3Rocm93IkNhbuKAmXQgY2hhbmdlIG1hbmlmZXN0IGNhY2hlIGVudHJ5IGRpcmVjdGx5LiJ9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksaH1mdW5jdGlvbiBkeCh4KXt2YXIgYT1bXTtyZXR1cm4gcSh4LmZpbGVzKT8oQSh4LmZpbGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPXguZmlsZXNbY107aWYoIXEoZCkpcmV0dXJuIk5vbi1vYmplY3QgbWVtYmVyICIrYysiIGluIGZpbGVzIHNlY3Rpb24uIjtpZihwKGQuZGF0YSkmJiFkLnVybClpZihiKXRyeXtMLmJhc2U2NDJibG9iKGQuZGF0YSxmdW5jdGlvbih4KXtkLmJsb2I9eCxkLnVybD1iLmNyZWF0ZU9iamVjdFVSTChkLmJsb2IpfSxkLmNvbnRlbnRfdHlwZXx8ZC5taW1lKSxhLnB1c2goYyl9Y2F0Y2goeCl7cmV0dXJuIkludmFsaWQgYmFzZTY0IGRhdGEgaW4gZmlsZXMvIitjKyIuIn1lbHNlIGQudXJsPSJkYXRhOiIrKGQuY29udGVudF90eXBlfHxkLm1pbWUpKyI7YmFzZTY0LCIrZC5kYXRhLGEucHVzaChjKX0pLGEpOltdfWZ1bmN0aW9uIGV4KHgsYSxiLGMpe3ZhciBkLGU9W10sZj1iLmJpbmQsZz1EKGYpO3JldHVybiBnPT1rP2YuY2FsbChWKGMpLm1hbmlmZXN0LHgsYSxjKTpnPT09anx8Zz09PWk/ZyE9PWp8fC9cLi8udGVzdChmKT8oInRoaXMiPT0oZT1nPT09aj9mLnNwbGl0KCIuIik6ZilbMF0/KGQ9VihjKS5tYW5pZmVzdCxlLnNoaWZ0KCkpOmQ9eCxweChkLGEsZSwhMCkpOihhIT1FP3hbZl09YTp2b2lkIDA9PT14W2ZdJiYoeFtmXT1FKSx4W2ZdKTpFfWZ1bmN0aW9uIGZ4KGEsYixjLGQpe3ZhciBlLGYsZyxoLGk9Yi5teSgpLGo9KGl8fHt9KS5wYXJhbXMsaz1jLG89bnVsbCxzPTAsdj1pLm1hbmlmZXN0LHc9MHxhLmxlbmd0aDtyZXR1cm4gaT8oaD1jLmRlbGF5LHc/KGsuaW5pdCE9RSYmKGU9cngodixrLmluaXQsYSxpKSksdShlKT8ocys9MSxvPUMoKSxlLnRoZW4oeixmdW5jdGlvbih4LGEpe0EoIkluaXQgb2YgIitkKyIgZmFpbGVkOiAiK3gsYSl9KSk6eigpKTpQKCJOb3QgZm91bmQgIitkKyIgc2VsZWN0b3IuIixiKSxvKTooTygiRmFpbGVkIHRvIGZpbmQgJHJvb3QgYnVpbGRpbmcgIitkKyIgc2VsZWN0b3IuIiksbnVsbCk7ZnVuY3Rpb24geigpe3ZhciBiPW51bGwsYz1rLm1hbmlmZXN0O2lmKHQoYyl8fHEoYykmJnEoYy51aSk/Zz1jOnAoYykmJihnPWJ4KHYsYy5yZXBsYWNlKG0sIiIpKSksZyYmcChrLmJpbmQpKXt2YXIgZT1VKG0udGVzdChrLmJpbmQpP3Y6aS5kYXRhLGsuYmluZC5yZXBsYWNlKG0sIiIpKTtpZihudWxsPT09byYmKG89QygpKSxuKGUpfHxrLmxpc3Qpe2EuYWRkQ2xhc3MoIm15LWZvcm0tbGlzdCIpO3ZhciBmPSIiLGg9Ij4qIjtpZigvXjwuKz4kLy50ZXN0KGsubGlzdCk/Zj1rLmxpc3Q6aD1rLmxpc3R8fGgsIWYpe3ZhciBsPSI+KiI9PWg/eChhWzBdLmNoaWxkcmVuKTp4eChhLGgsITApO2Y9IjxkaXY+PC9kaXY+IixsLmxlbmd0aCYmKGY9eChmKS5hcHBlbmQobC5lcSgwKS5jbG9uZSghMCkpLmh0bWwoKSxsLmVxKDApLnJlbW92ZSgpKX1hLmRhdGEoImZvcm1saXN0Iil8fGEuZGF0YSgiZm9ybWxpc3QiLHt9KSxhLmRhdGEoImZvcm1saXN0IikuZ2VuZXJhdG9yPXttYW5pZmVzdDpnLGRlbGF5OihrLmRlbGF5fHxqLmRlbGF5fHwxMCkvMS4zLHRlbXBsYXRlOmYsc2VsZWN0b3I6aCxwYXJlbnQ6dixiaW5kOmsuYmluZCxtZXJnZTp0KGsubWVyZ2UpP2subWVyZ2UuYmluZCh2KTohIWsubWVyZ2UmJiQsaGFzaDp0KGsuaGFzaCk/ay5oYXNoLmJpbmQodik6cChrLmhhc2gpP0QuZmlsbCh2b2lkIDAsay5oYXNoKTpuKGsuaGFzaCk/Ri5maWxsKHZvaWQgMCxrLmhhc2guc2xpY2UoMCkpOm51bGwsaWQ6dChrLmlkKT9rLmlkLmJpbmQodik6cChrLmlkKT9ELmZpbGwodm9pZCAwLGsuaWQpOm4oay5pZCk/Ri5maWxsKHZvaWQgMCxrLmlkLnNsaWNlKDApKTpudWxsLGV4dDohKCFrLmlkJiYhay5oYXNoKSxzdGFtcDowfSxhLm9uKCJpbnNlcnQubXkiLGZ1bmN0aW9uKGEsYil7YS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYz17d2hhdDp2b2lkIDAsd2hlcmU6MH07bnVsbD09Yj9jLndoZXJlPTFlNjpxKGIpP3koYyxiKToocChiKXx8cihiKSkmJihjLndoZXJlPWIpLHgoYS50YXJnZXQpLm15KCJpbnNlcnQiLGMud2hlcmUsYy53aGF0KX0pLGEub24oInJlbW92ZS5teSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSx4KGEudGFyZ2V0KS5teSgicmVtb3ZlIil9KX1lbHNlIHRyeXtiPXV4LmNhbGwoYSxieCh2LGcpLHEoZSk/ZTp2b2lkIDApfWNhdGNoKHgpe0EoIiQubXkgc3ViZm9ybSBpbml0IG9mICIrZCsiIGZhaWxlZDogIit4Lm1lc3NhZ2UseC5zdGFjayl9fXUoYik/Yi50aGVuKEcsZnVuY3Rpb24oeCxhKXtBKCJJbml0IG9mIHN1YmZvcm0gIitkKyIgZmFpbGVkIHdpdGggZXJyb3I6ICIreCxhKX0pOkcoKX1mdW5jdGlvbiBBKHgsYSl7Tyh4LGEpLG8mJm8ucmVqZWN0KHgsYSl9ZnVuY3Rpb24gRCh4LGEpe3ZhciBiPVUoeCxhKXx8IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiP2I6WShiKX1mdW5jdGlvbiBGKHgsYSl7cmV0dXJuIFkobngoeCxhKSl9ZnVuY3Rpb24gRygpe2EuZWFjaChmdW5jdGlvbigpe3ZhciBlLGcsbSxuPXgodGhpcyksbz1uWzBdLm5vZGVOYW1lLHA9ITE7aWYoIlRFWFRBUkVBIj09byYmKGc9KG09blswXS5uZXh0U2libGluZykmJm0uQ29kZU1pcnJvcj9tLkNvZGVNaXJyb3I6bnVsbCkmJm4uYWRkQ2xhc3MoIm15LWNvZGVtaXJyb3IiKSxlPWsuZXZlbnRzfHx5eChuLEsuZXZlbnRzKSxuLmhhc0NsYXNzKCJteS1mb3JtIik/QihuLmRhdGEoIm15Iikse2R1aTprLHJvb3Q6YixzZWxlY3RvcjpkLGRwYXJhbXM6aixkZXZlbnRzOmUsZGRhdGE6aS5kYXRhLGNvbnRhaW5lcjpqLmNvbnRhaW5lcihuKSxkZXJyb3JzOmkuZXJyb3JzLHNpbmdsZTohMH0pOihuLmRhdGEoIm15Iix7ZXZlbnRzOmUsc2VsZWN0b3I6ZCxpbml0aWFsOmYscHJldmlvdXM6Zixyb290OmIsY29udGFpbmVyOmouY29udGFpbmVyKG4pLGlkOmkuaWQsdWk6ayxkYXRhOmkuZGF0YSxwYXJhbXM6aixlcnJvcnM6aS5lcnJvcnMsc2luZ2xlOjE9PXd9KSxjLl91cGRhdGU9ay5kZWxheT96eC5kZWJvdW5jZShrLmRlbGF5KTpFLHA9ITApLHApaWYobi5jbGVkaXRvciYmbi5wYXJlbnQoKS5oYXNDbGFzcygiY2xlZGl0b3JNYWluIikpe3ZhciBxPW4uY2xlZGl0b3IoKVswXTtpZihxJiZxLiRmcmFtZSYmcS4kZnJhbWVbMF0pe24uYWRkQ2xhc3MoIm15LWNsZWRpdG9yIiksQihuLmRhdGEoIm15Iikse2NvbnRhaW5lcjpqLmNvbnRhaW5lcihuKX0pO3ZhciByLHM9ZnVuY3Rpb24oeCl7bi52YWwoeCkudHJpZ2dlcihsKX0sdD1OdW1iZXIucmFuZG9tKDFlNSwxZTYtMSk7eChxLiRmcmFtZVswXSkuYXR0cigiaWQiLCJjbGVkaXRDb29sIit0KSxyPWRvY3VtZW50LmZyYW1lcz9kb2N1bWVudC5mcmFtZXNbImNsZWRpdENvb2wiK3RdLmRvY3VtZW50OngoIiNjbGVkaXRDb29sIit0KVswXS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciB1PXgocikuZmluZCgiYm9keSIpO3gocikub24oImtleXVwLm15IixmdW5jdGlvbigpe3MoeCh0aGlzKS5maW5kKCJib2R5IikuaHRtbCgpKX0pLG4ucGFyZW50KCkuZmluZCgiZGl2LmNsZWRpdG9yVG9vbGJhciIpLm9uKCJjbGljay5teSBtb3VzZXVwLm15IixmdW5jdGlvbigpe3ModS5odG1sKCkpfSkseCgiYm9keSIpLm9uKCJjbGljayIsImRpdi5jbGVkaXRvclBvcHVwIixmdW5jdGlvbigpe3ModS5odG1sKCkpfSl9fWVsc2UgaWYoIlRFWFRBUkVBIj09byYmbi5wYXJlbnQoKS5oYXNDbGFzcygicmVkYWN0b3JfYm94Iikpe3ZhciB2LHk9Im15LXJlZGFjdG9yLTkiO3RyeXt2PW4uZ2V0RWRpdG9yKCkseT0ibXktcmVkYWN0b3ItOCJ9Y2F0Y2goeCl7dj1uLnJlZGFjdG9yKCJnZXRFZGl0b3IiKX12JiYobi5hZGRDbGFzcyh5KSx2Lm9uKCJpbnB1dC5teSBrZXl1cC5teSBibHVyLm15IixmdW5jdGlvbih4KXt4LnRyaWdnZXIoInJlZGFjdG9yIil9LmZpbGwobikpKX1lbHNlIG4uaGFzQ2xhc3MoImFjZV9lZGl0b3IiKT9hY2UuZWRpdChhWzBdKS5vbihsLGZ1bmN0aW9uKHgpe3gudHJpZ2dlcigiYWNlIil9LmZpbGwobikpOmcmJmcub24obCxmdW5jdGlvbih4KXt4LnRyaWdnZXIoImNvZGVtaXJyb3IiKX0uZmlsbChuKSk7bi5teSgpLl9jaGFuZ2VkPWh4LmRlYm91bmNlKGgpLG4ubXkoKS5fcmVjYWxjPXN4LmRlYm91bmNlKGgpLG4ub24oZSxmdW5jdGlvbih4KXt4LnR5cGU9PWwmJnguc3RvcFByb3BhZ2F0aW9uKCkscCYmKGkubG9ja3RpbGw9SSgpK2MuZGVsYXkpLG4ubXkoKS5fY2hhbmdlZChuLGIsYyxqKX0pLC9jaGVjayhcLm15KT8vLnRlc3QoZSsiIil8fG4ub24oImNoZWNrLm15IixmdW5jdGlvbih4KXtyZXR1cm4gbi5teSgpLl9jaGFuZ2VkKG4sYixjLGosITApLCExfSkscHx8bi5vZmYoInJlZHJhdy5teSIpLG4ub24oInJlY2FsYy5teSwgcmVkcmF3Lm15IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpLG4ubXkoKS5fcmVjYWxjKG4sYixjLGopfSl9KSxvJiZvLnJlc29sdmUoKX19ZnVuY3Rpb24gZ3goYSxiKXtxKGIpJiZiLmNoYW5uZWwmJmIubWVzc2FnZSYmeHgoYSwiLm15LWxpc3Rlbi0iK1koYi5jaGFubmVsKSwhMCkuZWFjaChmdW5jdGlvbigpe3ZhciBhLGMsZD14KHRoaXMpLGU9ZC5kYXRhKCJteSIpO2lmKGUmJmUudWkubGlzdGVuJiZ0KGUudWkubGlzdGVuW2IuY2hhbm5lbF0pKXthPWUudWkubGlzdGVuW2IuY2hhbm5lbF07dHJ5e2M9YS5jYWxsKGUubWFuaWZlc3R8fGUucm9vdC5teSgpLm1hbmlmZXN0LGUuZGF0YSxiLm1lc3NhZ2UsZCl9Y2F0Y2goeCl7TygiTGlzdGVuZXIgZmFpbGVkIix4Lm1lc3NhZ2UseC5zdGFjayl9dm9pZCAwIT09YyYmKG51bGw9PT1jP2QudHJpZ2dlcigiY2hlY2siKTpjJiZkLnRyaWdnZXIoInJlY2FsYyIpKX19KX1mdW5jdGlvbiBoeCh4LGEsYixjLGQpe3ZhciBlLGY9eC5kYXRhKCJteSIpO2YmJihmLmRpc2FibGVkP2YuZGRhdGF8fHp4KHgsRSxiLnJlY2FsY0RlcHRofHxjLnJlY2FsY0RlcHRoKToobHgoZi5kZGF0YXx8Zi5kYXRhLGYuZHBhcmFtc3x8Zi5wYXJhbXMpLGR8fChlPWYuc2luZ2xlP3g6eHgoYSxmLnNlbGVjdG9yKSksengoeCxkP0U6a3goZSxFKSxiLnJlY2FsY0RlcHRofHxjLnJlY2FsY0RlcHRoKSxjLmNoYW5nZSYmYy5jaGFuZ2UuY2FsbCh4KSkpfWZ1bmN0aW9uIGl4KGEsYixjKXt2YXIgZD1jLmNvbXBhY3QoKSxlPWQucmVwbGFjZSgvOmRpc2FibGVkL2csIiIpLGY9ZSE9PWQsZz0ic2VsZjoiPT1lLnN1YnN0cigwLDUpO3JldHVybiBnJiYoZT1lLnJlcGxhY2UoL15zZWxmOi9nLCIiKSksYi5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9eCh0aGlzKSxkPWMubXkoKTsoIWcmJmQ/ZC5jb250YWluZXI6YykudG9nZ2xlQ2xhc3MoZSwhIWEpLGYmJnZvaWQgMCE9PWQmJiEhYSE9ISFkLmRpc2FibGVkJiYoYy5teSgpLmRpc2FibGVkPSEhYSxkLl9kaXNhYmxlfHwoYy5teSgpLl9kaXNhYmxlPXl4KGIsSy5vZmZvbikuZmlsbCh2b2lkIDAsYikpLGQuX2Rpc2FibGUoISFhKSl9KSxifWZ1bmN0aW9uIGp4KHgsYSxiKXtyZXR1cm4geFthXShiPyJkaXNhYmxlIjoiZW5hYmxlIil9ZnVuY3Rpb24ga3goeCxhKXt2YXIgYixjLGQ9eC5kYXRhKCJteXZhbCIpO3JldHVybiBkfHwoYz15eCh4LEsudmFscyksdChjKSYmKHZvaWQgMD09PShiPWMoeCxFKSk/eC5kYXRhKCJteXZhbCIsZnVuY3Rpb24oeCxhKXtyZXR1cm4gRSE9YSYmYyh4LGEpLHgudmFsKCl9LmZpbGwoeCx2b2lkIDApKTp4LmRhdGEoIm15dmFsIixjLmZpbGwoeCx2b2lkIDApKSksZD14LmRhdGEoIm15dmFsIikpLHQoZCk/KCgoYj1kKCkpIT09YSYmKDA9PWF8fDA9PWIpfHxiIT1hfHxxKGEpKSYmKGI9ZChhKSksYik6RX1mdW5jdGlvbiBseCh4LGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLG0sbj1hO2lmKCFxKG4pfHxpc05hTihnPW4ucmVtZW1iZXIpfHwhcShkPW4uaGlzdG9yeSkpcmV0dXJuIEU7aWYocSh4KSYmZyl7aWYoaT16KHgsITApLGo9SSgpLChmPUEoZCkuc29ydCgpKS5sZW5ndGgmJihqLWYubGFzdCgpPG4uaGlzdG9yeURlbGF5fHxPYmplY3QuZXF1YWwoZFtmLmxhc3QoKV0saSkpKXJldHVybiBFO2lmKG4uaGlzdG9yeVtqXT1pLGYucHVzaChqKSxmLmxlbmd0aD49MipnKXtmb3IobT17fSxlPWc7ZTwyKmc7ZSsrKW1bZltlXV09ZFtmW2VdXTthLmhpc3Rvcnk9bX1yZXR1cm4gY3x8bi5mb3JtLnRyaWdnZXIobCksbi5oaXN0b3J5W2YubGFzdCgpXX1pZighaXNOYU4oeCl8fHg9PT1FKXtpZigoaD1wYXJzZUludCh4KXx8MCk8MClyZXR1cm4gRTtpZihoPj0oZj1BKGQpLnNvcnQoKSkubGVuZ3RoJiYoaD1mLmxlbmd0aC0xKSxrPXoobi5oaXN0b3J5W2ZbZi5sZW5ndGgtaC0xXV0sITApLGIpe2ZvcihtPXt9LGU9MDtlPGYubGVuZ3RoLWgtMTtlKyspbVtmW2VdXT1kW2ZbZV1dO2EuaGlzdG9yeT1tfXJldHVybiBjfHxuLmZvcm0udHJpZ2dlcihsKSxrfXJldHVybiBjfHxuLmZvcm0udHJpZ2dlcihsKSxFfWZ1bmN0aW9uIG14KHgsYSl7aWYoIXEoeCkpcmV0dXJuITE7dmFyIGI9eCxjPXAoYSk/YTpkLGU9Yi5sYW5nLGY9e307cmV0dXJuISghZXx8IXEoZS5lbikpJiYoZS5fTEFORz09Y3x8KGM9cShlW2NdKT9jOiJlbiIsZS5fTEFORz1jLE9iamVjdC5rZXlzKGVbY10pLmZvckVhY2goZy5maWxsKHZvaWQgMCx2b2lkIDAsYyxmKSksImVuIiE9YyYmT2JqZWN0LmtleXMoZS5lbikuZm9yRWFjaChnLmZpbGwodm9pZCAwLHZvaWQgMCwiZW4iLGYpKSwhMCkpO2Z1bmN0aW9uIGcoeCxhLGMsZCl7dmFyIGc7Zlt4XXx8eC5sZW5ndGg8MyYmeC50bygxKS50b0xvd2VyQ2FzZSgpPT14LnRvKDEpfHwodChlW2NdW3hdKT8oZz1lW2NdW3hdLmJpbmQoYiksZVt4XT1nLGVbeF0udG9TdHJpbmc9ZyxlW3hdLmFzc2lnbj1mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxhPTAsYj0iIjthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKXgucHVzaChhcmd1bWVudHNbYV0pO3JldHVybiBiPWcuYXBwbHkobnVsbCx4KSxwKGIpP2IuYXNzaWduLmFwcGx5KGIseCk6Yn0pOmVbeF09ZVtjXVt4XSxmW3hdPSEwKX19ZnVuY3Rpb24gbngoeCxhKXtpZighcSh4KSlyZXR1cm4gbnVsbDt2YXIgYixjPWE7aWYocChjKSlyZXR1cm4gVSh4LGMpO2lmKG4oYykpe2I9W107Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYltkXT1wKGNbZF0pP1UoeCxjW2RdKTpudWxsLHZvaWQgMD09PWJbZF0mJihiW2RdPW51bGwpO3JldHVybiBifWlmKHEoYykpcmV0dXJuIGUoeCxjKTtmdW5jdGlvbiBlKHgsYSl7aWYoIXEoYSkpcmV0dXJue307dmFyIGI9e307cmV0dXJuIEEoYSkuZm9yRWFjaChmdW5jdGlvbihjKXshcShhW2NdKSYmUSh4LGMpP2JbY109eih4W2NdLCEwKTpRKHgsYykmJihxKHhbY10pP2JbY109ZSh4W2NdLGFbY10pOmJbY109eih4W2NdLCEwKSl9KSxifX1mdW5jdGlvbiBveCh4LGEsYil7dmFyIGMsZCxlO2lmKG51bGw9PWI/KGM9e30sZD14LGU9YSk6KGM9eCxkPWEsZT1iKSxxKGQpJiZxKGUpKXJldHVybiBueChkLGUpO2lmKHAoZSkmJihlPVtlXSxkPVtkXSksIW4oZSl8fCFuKGMpJiYhcShjKSlyZXR1cm4gbnVsbDtpZihxKGQpJiYoZD1lLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4LnB1c2goVShkLGEpKSx4fSxbXSkpLG4oZCkmJm4oZSkpe2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKW51bGwhPWRbZl0mJnB4KGMsZFtmXSxlW2ZdKTtyZXR1cm4gY31yZXR1cm4gbnVsbH1mdW5jdGlvbiBweCh4LGEsYixjKXt2YXIgZCxlLGYsZyxoPTA7aWYocChiKSYmIS9cLi8udGVzdChiKSludWxsIT1hJiYoeFtiXT1hKTtlbHNlIGZvcihkPXgsZz0oZT1uKGIpP2I6KGIrIiIpLnNwbGl0KCIuIikpLmxlbmd0aC0xO2g8PWc7aCsrKWlmKGg9PT1nKXtpZihjKXJldHVybiBFIT1hP2RbZVtoXV09YTp2b2lkIDA9PT1kW2VbaF1dJiYoZFtlW2hdXT1FKSxkW2VbaF1dO2RbZVtoXV09YX1lbHNlIDA9PT1oPyhkPXhbZVswXV0sZj14KTooZj1mW2VbaC0xXV0sZD1kW2VbaF1dKSwobnVsbD09ZHx8IXEoZCkmJihuKGQpJiYhaXNOYU4oZVtoKzFdKSYmK2VbaF0+LTEpKSYmKGQ9ZltlW2hdXT17fSk7cmV0dXJuIHh9ZnVuY3Rpb24gcXgoeCxhLGIpe3ZhciBjPXEoYSk/YTpudWxsLGQ9Ynx8KGM/Yy5wYXJhbXM6bnVsbCl8fHtkZWxheTowfSxlPXtjc3M6ITAsY2hlY2s6ITAsbWFuaWZlc3Q6ITAsbGlzdDohMCxoYXNoOiEwLGlkOiEwfSxmPS9ccz9bLDtdXHM/LyxnPS8sXHMqfFxzKy9nO2lmKGQubm9ybWFsaXplZClyZXR1cm4geDtmb3IodmFyIGgsbCxvPUEoeHx8e30pLHA9W10scj0wO3I8by5sZW5ndGg7cisrKShoPXR5cGVvZihCPXhbej1vW3JdXSkpPT1qfHxoPT1rP0I9eFt6XT17YmluZDpCfTooQi5yZWNhbGMmJiFuKEIucmVjYWxjKSYmKHR5cGVvZiBCLnJlY2FsYz09aj9CLnJlY2FsYz1CLnJlY2FsYy5zcGxpdChmKS5jb21wYWN0KCEwKS51bmlxdWUoKTpCLnJlY2FsYz1bXSksbnVsbD09Qi5iaW5kJiYoQi5iaW5kPWZ1bmN0aW9uKCl7fSksQi5saXN0ZW4mJihsPVcoQi5saXN0ZW4pLEIubGlzdGVuPU9iamVjdC5zaXplKGwpP2w6dm9pZCAwKSxCLmV2ZW50cyYmKG4oQi5ldmVudHMpP0IuZXZlbnRzPUIuZXZlbnRzLmpvaW4oIiAiKTpCLmV2ZW50cz0oQi5ldmVudHMrIiIpLnJlcGxhY2UoZywiICIpKSxRKEIsIndhdGNoIikmJnAucHVzaCh6KSksQi5kZWxheT1pc05hTigrQi5kZWxheSk/ZC5kZWxheTorQi5kZWxheTt2YXIgcztmb3Iocj0wO3I8cC5sZW5ndGg7cisrKXtCPXhbej1wW3JdXSxzPXhbel0ud2F0Y2gsKGg9RChzKSk9PWo/cz1zLnNwbGl0KGYpLmNvbXBhY3QoITApLnVuaXF1ZSgpOmghPWkmJihzPVtdKTtmb3IodmFyIHQsdSx2LHc9e30seT0wO3k8cy5sZW5ndGg7eSsrKSF3W3U9c1t5XV0mJih0PXhbdV0pJiYod1t1XT0hMCwodj10LnJlY2FsYyk/LTE9PXYuaW5kZXhPZih6KSYmdC5yZWNhbGMucHVzaCh6KTp0LnJlY2FsYz1bel0pfWlmKG51bGwhPT1jKXt2YXIgeixCLEM7Zm9yKHI9MDtyPG8ubGVuZ3RoO3IrKyl7Qj14W29bcl1dO3ZhciBFPUEoQik7Zm9yKHk9MDt5PEUubGVuZ3RoO3krKyllW3o9RVt5XV0mJnR5cGVvZiBCW3pdPT1qJiZudWxsIT0oQz1VKGMsQlt6XS5yZXBsYWNlKG0sIiIpKSkmJnR5cGVvZiBDIT1qJiYoQlt6XT1DKX19cmV0dXJuIHh9ZnVuY3Rpb24gcngoeCxhLGIsYyl7dmFyIGQ7aWYocChhKSl7aWYodm9pZCAwPT09KGQ9VSh4LGEpKSlyZXR1cm4gYi5odG1sKGEuYXNzaWduKGMuZGF0YSkpLG51bGx9ZWxzZSBkPWE7aWYodChkKSlyZXR1cm4gZC5hcHBseSh4LFMoYXJndW1lbnRzLDIpKTtpZihuKGQpKXRyeXtiLmZvcm1nZW4oZCl9Y2F0Y2goeCl7fXJldHVybiBudWxsfWZ1bmN0aW9uIHN4KHgsYSxiLGMpe3ZhciBkPXgubXkoKTtpZihkJiYhZC5kaXNhYmxlZCl7dmFyIGU9eHgoYSxkLnNlbGVjdG9yKTtlLmhhc0NsYXNzKCJteS1mb3JtIik/ZS5teSgicmVkcmF3Iik6engoeCxlLmhhc0NsYXNzKCJteS1mb3JtLWxpc3QiKT9VKGUubXkoKS5kYXRhLGUuZGF0YSgiZm9ybWxpc3QiKS5nZW5lcmF0b3IuYmluZCk6RSxiLnJlY2FsY0RlcHRofHxjLnJlY2FsY0RlcHRoKX19ZnVuY3Rpb24gdHgoYSxiKXt2YXIgYz1DKCksZD1bXSxlPXt9LGY9W10sZz1CKCEwLHthamF4VGltZW91dDoxZTQsbG9hZGVyOksucGFyYW1zLmxvYWRlcn0sYnx8e30pLGg9e3JlZjpudWxsLGFqYXg6e3R5cGU6IkdFVCIsYXN5bmM6ITAsdGltZW91dDpnLmFqYXhUaW1lb3V0fX07aWYocShhKSlpZihuKGEucmVxdWlyZSkpe2EucmVxdWlyZSxhLnJlcXVpcmUuZm9yRWFjaChmdW5jdGlvbih4KXtpZihwKHgpKWVbeF09cih4KTtlbHNlIGlmKHEoeCkpe3ZhciBhPVtdO0EoeCkuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz1udWxsOyEwPT09eFtiXT9lW2JdPXIoYik6cCh4W2JdKXx8cSh4W2JdKT9jPWooeFtiXSxiKTpuKHhbYl0pJiYoYz1bXSx4W2JdLmZvckVhY2goZnVuY3Rpb24oeCl7aWYocCh4KXx8cSh4KSl7dmFyIGE9aih4LGIpO2EmJmMucHVzaChhKX19KSxjLmxlbmd0aHx8KGM9bnVsbCkpLGMmJiEoZVtiXT1yKGIpKSYmYS5hZGQoYyl9KSxhLmxlbmd0aCYmZC5wdXNoKGEpfX0pO3ZhciBpPS0xO2woKX1lbHNlIGMucmVzb2x2ZShhKTtlbHNlIGMucmVqZWN0KFsiSW52YWxpZCBtYW5pZmVzdC4iXSk7cmV0dXJuIGMucHJvbWlzZSgpO2Z1bmN0aW9uIGooYSxiKXt2YXIgYztyZXR1cm4gcChhKT8vW1wvXS8udGVzdChhKT8oYz1CKCEwLHt9LGgse3JlZjpiLGFqYXg6e3VybDphfX0pLG0udGVzdChiKSYmKGMuYWpheC5kYXRhVHlwZT0ianNvbiIpKTphLmxlbmd0aCYmKGM9QighMCx7fSxoLHtyZWY6YixhamF4OmF9KSk6cShhKSYmKChjPUIoITAse30saCx7cmVmOmIsYWpheDp4LmV4dGVuZCghMCx7fSxPYmplY3Quc2VsZWN0KGEsWyJhY2NlcHRzIiwiYXN5bmMiLCJjYWNoZSIsImRhdGEiLCJkYXRhVHlwZSIsImhlYWRlcnMiLCJ4aHJGaWVsZHMiLCJwYXNzd29yZCIsInRpbWVvdXQiLCJ0eXBlIiwidXJsIiwidXNlcm5hbWUiXSkpfSkpLmFqYXgudXJsfHwoYz1udWxsKSksY31mdW5jdGlvbiBrKCl7Yy5yZWplY3QoZil9ZnVuY3Rpb24gbCgpe3ZhciB4PWRbaSs9MV07aWYoeClvKHgpLnRoZW4obCkuZmFpbChrKTtlbHNle3ZhciBiPXMoZSksZz1BKE9iamVjdC5maW5kQWxsKGIsZnVuY3Rpb24oeCxhKXtyZXR1cm4hYX0pKTtnLmxlbmd0aCYmZi5wdXNoKCgxPT1nLmxlbmd0aD8iS2V5ICIrZ1swXSsiIGlzIjoiS2V5cyAiK2cuam9pbigiLCAiKSsiIGFyZSIpKyIgbm90IHByZXNlbnQgYWZ0ZXIgYWxsLiIpLGYubGVuZ3RoP2soKTpjLnJlc29sdmUoYSl9fWZ1bmN0aW9uIG8oeCl7dmFyIGIsYyxkPSExLGU9QygpLGg9eC5sZW5ndGg7Zm9yKGM9MDtjPGg7YysrKWI9eFtjXSwocChiLmFqYXgpP2cubG9hZGVyOkcpKGIuYWpheCkudGhlbihmdW5jdGlvbih4LGIpe20udGVzdChiLnJlZikmJihudWxsIT14P0IoITAsYSxveCh4LGIucmVmLmZyb20oNSkpKTooZD0hMCxmLnB1c2goIkludmFsaWQgZGF0YSBmb3Ig4oCYIitiLnJlZisi4oCZIHJlc291cmNlLiIpKSksaSgpfS5maWxsKHZvaWQgMCxiKSkuZmFpbChmdW5jdGlvbih4LGEpe2YucHVzaCgiRmFpbGVkIHRvIGxvYWQg4oCYIithLnJlZisi4oCZIHJlc291cmNlLiIpLGQ9ITAsaSgpfS5maWxsKHZvaWQgMCxiKSk7cmV0dXJuIGUucHJvbWlzZSgpO2Z1bmN0aW9uIGkoKXtoLT0xLGQ/ZS5yZWplY3QoKTpoPC41JiZlLnJlc29sdmUoKX19ZnVuY3Rpb24gcih4KXt2YXIgYj0hMTtyZXR1cm4gbS50ZXN0KHgpP251bGwhPVUoYSx4LmZyb20oNSkpJiYoYj0hMCk6bnVsbCE9VSh3aW5kb3cseCkmJihiPSEwKSxifWZ1bmN0aW9uIHMoeCl7cmV0dXJuIEEoeCkuZm9yRWFjaChmdW5jdGlvbihhKXshMT09PXhbYV0mJih4W2FdPXIoYSkpfSkseH19ZnVuY3Rpb24gdXgoYSxlLGYpe3ZhciBnLGksaixrLGwsbSxvLHIscyx2LHkseixELEYsRz17fSxJPXt9LEw9bnVsbCxNPVtdLE49e30sUT1DKCksUj0hMSxTPWZ1bmN0aW9uKCl7fSxUPSJteS1mb3JtLWluaXQiLFY9InN0ZCIsJD0iIixfPXt9O2lmKHAoYSkpe2lmKCEoZz1IKGEpKSlyZXR1cm4gUS5yZWplY3QoIk5vIG1hbmlmZXN0IHdpdGggaWQgIithKyIgZm91bmQgaW4gcmVwby4iKSxRLnByb21pc2UoKTtxKGYpJiZxKGUpPyhnPUIoZyxlKSxpPWYpOmk9ZSxWPSJyZXBvIn1lbHNlIGc9YSxpPWU7aWYoIWcpcmV0dXJuIHRoaXM7cz1xKGkpJiYicmVwbyIhPVY/QighMCx7fSxnKTpnO3ZhciBheD10aGlzLmVxKDApLGJ4PWF4Lm15KCk7cmV0dXJuIHEoYngpJiZieC5pZCYmYngudWk/KFAoImpRdWVyeS5teSBpcyBhbHJlYWR5IGJvdW5kLiIsYXgpLGF4Lm15KCJ1aSIscy51aSksYXgubXkoaCxzLmRhdGEpLFEucmVzb2x2ZShheC5teShoKSkucHJvbWlzZSgpKTooKHI9cy5wYXJhbXN8fHt9KS5zdHJpY3R8fHQocy5pbml0KXx8Qngocj1CKCEwLHt9LHIpKSxyPUIoITAse30sSy5wYXJhbXMsciksUS5mYWlsKGZ1bmN0aW9uKCl7YXgucmVtb3ZlQ2xhc3MoeSsiICIrdil9KSxCKGF4LFEucHJvbWlzZSgpKSxxKGkpPyhJPVooaSxzLmRhdGF8fHt9KSxzLmRhdGE9SSk6ST1zLmRhdGF8fHt9LEcuZGF0YT1JLGF4LmRhdGEoIm15Iix7ZGF0YTpJLHBhcmFtczpyLHByb21pc2U6US5wcm9taXNlKCksbG9ja3RpbGw6MH0pLGF4LmFkZENsYXNzKFQpLHMuaW5oZXJpdCYmaHgocyksbihzLnJlcXVpcmUpP0oocyxyKS50aGVuKGN4KS5mYWlsKGZ1bmN0aW9uKHgpe2p4KCkseXgoIkxpbmtlciBvZiB0aGUg4oCYcmVxdWlyZeKAmSBwcm9wZXJ0eSBmYWlsZWQuIix4KX0pOmN4KCksUS50aGVuKGl4KSxheCk7ZnVuY3Rpb24gY3goKXt2YXIgeD0hMDtqeCgpLEcuZmlsZXMmJih4PW54KCkpLHgmJihseCgpLHB4KCkpfWZ1bmN0aW9uIGh4KHgpe3ZhciBhPVgoeC5pbmhlcml0KTtpZighT2JqZWN0LnNpemUoYSkpcmV0dXJuIG51bGw7dmFyIGI9YXgucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKTtpZighYi5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGM9Yi5kYXRhKCJteSIpO2lmKCFjfHwhYy5tYW5pZmVzdClyZXR1cm4gbnVsbDt2YXIgZD1jLm1hbmlmZXN0LGU9ZC5leHBvc2UsZj0hZTtBKGEpLmZvckVhY2goZnVuY3Rpb24oYil7aWYoZnx8ZVtiXSl7dmFyIGM9VShkLGIpO251bGwhPWMmJigvXC4vLnRlc3QoYil8fHAoYVtiXSk/QighMCxzLG94KGMscChhW2JdKT9hW2JdOmIpKTp4W2JdPWMpfX0pfWZ1bmN0aW9uIGl4KCl7QShOKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe0Eob1t4XS5saXN0ZW4pLmZvckVhY2goZnVuY3Rpb24oYSl7Tlt4XS5hZGRDbGFzcygibXktbGlzdGVuLSIrWShhKSl9KX0pLEcucmFkaW8mJmF4Lm9uKCJyYWRpby5teSIsZnVuY3Rpb24oeCxhKXt2YXIgYixjO2lmKHEoYSkmJmEuY2hhbm5lbCYmYS5tZXNzYWdlJiZ0KEcucmFkaW9bYS5jaGFubmVsXSkpe2I9Ry5yYWRpb1thLmNoYW5uZWxdO3RyeXtjPWIuY2FsbChHLHgsYSl9Y2F0Y2goeCl7TygiUmFkaW8gaGFuZGxlciBmb3IgZm9ybSAiK2wrIiBmYWlsZWQiLHgubWVzc2FnZSx4LnN0YWNrKX12b2lkIDAhPT1jJiYoeC5zdG9wUHJvcGFnYXRpb24oKSxjJiZneChheCxhKSl9fSl9ZnVuY3Rpb24gangoKXtyLnN0cmljdHx8dChzLmluaXQpfHxCeChzLCEwKSxHPUIoITAsRyxPYmplY3QucmVqZWN0KHMsWyJkYXRhIl0pKSxvPXF4KEIoITAse30scy51aXx8e30pLEcsciksRy5yYWRpbyYmKEcucmFkaW89VyhHLnJhZGlvKSksRy5leHBvc2UmJihHLmV4cG9zZT1YKEcuZXhwb3NlKSksaz1OdW1iZXIucmFuZG9tKDI2ODQzNTQ1Niw0Mjk0OTY3Mjk1KS50b1N0cmluZygxNiksaj1zLmlkfHwibXkiK2ssbD1ZKGopLEcuaWQ9aixyLmZvcm09YXgscy5wYXJhbXMmJnMucGFyYW1zLmRlcHRoJiYoci5yZWNhbGNEZXB0aD1zLnBhcmFtcy5kZXB0aCksT2JqZWN0LmtleXMoRykuZm9yRWFjaChmdW5jdGlvbih4KXsiZnVuY3Rpb24iPT10eXBlb2YgR1t4XSYmKEdbeF09R1t4XS5iaW5kKEcpKX0pLGM/Ry5teT13eChheCk6T2JqZWN0LmRlZmluZVByb3BlcnR5KEcsIm15Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PUwmJihMPXd4KGF4KSksTH0sZW51bWVyYWJsZTohMX0pLHMuZXJyb3ImJihwKEcuZXJyb3IpP1M9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRy5lcnJvci5hc3NpZ24oQih7bWVzc2FnZTp4KyIiLGVycjphKyIifSxHKSl9OnQocy5lcnJvcikmJihTPWZ1bmN0aW9uKHgsYSl7bT1udWxsO3RyeXttPXMuZXJyb3IuY2FsbChHLHgsYSl9Y2F0Y2goeCl7bT1yLm1lc3NhZ2VzLmluaXRGYWlsZWR9cmV0dXJuIG19KSksRy5sYW5nJiZteChHLHIubG9jYWxlfHxkKSxCKGF4LmRhdGEoIm15Iikse2lkOmosY2lkOmssbWlkOmwsZXJyb3JzOnt9LHVpOm8sZGlzYWJsZWQ6ITEsbWFuaWZlc3Q6Ryxsb2NGaWxlczpbXSxtb2RhbHM6e30scmFkaW86e319KSxheC5hZGRDbGFzcygibXktZm9ybSIpLHY9Im15LW1hbmlmZXN0LSIrbCx5PSJteS1mb3JtLSIrayxheC5hZGRDbGFzcyh5KyIgIit2KX1mdW5jdGlvbiBseChhKXtpZihHLnN0eWxlJiYoIWF8fGF4LmlzKCI6dmlzaWJsZSIpKSl7dmFyIGI9dngoYXgsRyk7YiYmYlswXS5sZW5ndGgmJiFhJiYoKHo9eCgic3R5bGUjIit2KSkubGVuZ3RofHwoej14KGMoYlswXSx2KSkuYXBwZW5kVG8oeCgiYm9keSIpKSksei5kYXRhKCJjb3VudCIsK3ouZGF0YSgiY291bnQiKSsxKSxheC5kYXRhKCJteSIpLnN0eWxlPXopLGImJmJbMV0ubGVuZ3RoJiYoKEQ9eCgic3R5bGUjIit5KSkubGVuZ3RoP2EmJih4KGMoYlsxXSx5KSkucmVwbGFjZUFsbChEKSxEPXgoInN0eWxlIyIreSkpOihEPXgoYyhiWzFdLHkpKS5hcHBlbmRUbyh4KCJib2R5IikpLHIucmVzdHlsZT4tMSYmIXdba10mJih3W2tdPWZ1bmN0aW9uKCl7bHgoITApfS5kZWJvdW5jZShyLnJlc3R5bGUpKSxheC5kYXRhKCJteSIpLnJlc3R5bGU9bHguZmlsbCghMCkuZGVib3VuY2UoMCkpLGF4LmRhdGEoIm15IikubG9jYWxTdHlsZT1ELGF8fGF4LmFkZENsYXNzKCJteS1yZXN0eWxlIikpfWZ1bmN0aW9uIGMoeCxhKXt2YXIgYj0iXG4iLGM9L0BrZXlmcmFtZXMvLGQ9ITEsZT1iK3gubWFwKGZ1bmN0aW9uKHgpe3JldHVybi9eXHMqQC8udGVzdCh4KXx8In0iPT14PyhjLnRlc3QoeCk/ZD0hMDoifSI9PXgmJihkPSExKSx4KTooKGQ/IiI6Ii4iK2EpK3gpLnJlcGxhY2UoL1xzKy9nLCIgIil9KS5qb2luKGIpK2I7cmV0dXJuJzxzdHlsZSBpZD0iJythKyciIGRhdGEtY291bnQ9IjAiPicrZSsiPC9zdHlsZT4ifX1mdW5jdGlvbiBueCgpe3ZhciB4LGEsYz0hMDtpZihhPWR4KEcpLHAoYSkpeXgoIkVycm9yIGRlY29kaW5nIGJhc2U2NCB0byBsb2NhbCBCbG9iL1VSTCIsYSksYz0hMTtlbHNle2lmKGIpZm9yKHg9MDt4PGEubGVuZ3RoO3grKylNLnB1c2goRy5maWxlc1thW3hdXS51cmwpO00ubGVuZ3RoJiYoYXguZGF0YSgibXkiKS5sb2NGaWxlcz1NKX1yZXR1cm4gY31mdW5jdGlvbiBweCgpe2lmKHMuaW5pdCE9RSl7JD1heC5maW5kKCI+KiIpLmNsb25lKCk7dHJ5e0Y9cngoRyxzLmluaXQsYXgscyl9Y2F0Y2goeCl7cmV0dXJuIHl4KHAoeCk/eDp4Lm1lc3NhZ2UseC5zdGFjayksYXh9fWlmKHUoRik/Ri50aGVuKGZ1bmN0aW9uKCl7c3goKX0sZnVuY3Rpb24oeCxhKXt5eCh4LGEpfSk6c3goKSwhUil7aWYoIWF4Lm15KCkpcmV0dXJuIHl4KCJJbnRlcm5hbCBlcnJvciBpbml0aWFsaXppbmcgY29udHJvbHMuIiwiIiksYXg7YXguZGF0YSgibXkiKS5pbml0aWFsPUIoITAse30sSSkseC5tb2JpbGUmJngubW9iaWxlLmNoYW5nZVBhZ2UoeC5tb2JpbGUuYWN0aXZlUGFnZSl9fWZ1bmN0aW9uIHN4KCl7dmFyIHg9e30sYT1PYmplY3Qua2V5cyhvKSxiPWEubGVuZ3RoO2Z1bmN0aW9uIGMoYSl7Unx8KHhbYV09a3goeHgoYXgsYSksRSksKGItPTEpPDEmJnR4KHgpKX1iPDE/dXgoKTooYXguYWRkQ2xhc3MoVCksYS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKCFSKXt2YXIgYT14eChheCx4KSxiPWZ4KGEsYXgsb1t4XSx4KTtfW3hdPWEsdShiKT9iLnRoZW4oYy5maWxsKHgpKS5mYWlsKGZ1bmN0aW9uKGEsYil7eXgoIkVycm9yIGJ1aWxkaW5nICIreCsiLCAiK2EsYil9KTpSfHxjKHgpfX0pKX1mdW5jdGlvbiB0eCh4KXtBKG8pLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoIVIpe3ZhciBiLGM9b1thXSxkPV9bYV07aWYoZC5sZW5ndGgpe2MubGlzdGVuJiYoTlthXT1kLmVxKDApKTt0cnl7bnVsbD09PShiPWV4KEksbnVsbCxjLGQpKSYmbnVsbCE9eFthXSYmZXgoSSx4W2FdLGMsZCl9Y2F0Y2goeCl7TygiVHJhbnNpZW50IGZhaWwgbGlua2luZyAiK2ErJyBvZiBmb3JtICQoIi5teS1mb3JtLScraysnIiknLHgubWVzc2FnZSx4LnN0YWNrKX10cnl7bnVsbCE9YiYma3goZCxiKSxkLmVxKDApLnRyaWdnZXIoImNoZWNrLm15Iil9Y2F0Y2goeCl7eXgoIkVycm9yIGxpbmtpbmcgIithLHgubWVzc2FnZSl9fX19KSxSfHx1eCgpfWZ1bmN0aW9uIHV4KCl7YXgucmVtb3ZlQ2xhc3MoVCksYXgub24oInJlY2FsYy5teSwgcmVkcmF3Lm15IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpLGF4Lm15KCJyZWRyYXciKX0pLCQ9bnVsbCxRLnJlc29sdmUoSSl9ZnVuY3Rpb24geXgoeCxhKXt2YXIgYjtpZihSPSEwLE8oIkZvcm0gIitqKyIgZmFpbGVkIHRvIGluaXRpYWxpemUuIix4LGEpLE9iamVjdC5rZXlzKF8pLmZvckVhY2goZnVuY3Rpb24oeCl7ZGVsZXRlIF9beF19KSxheC5yZW1vdmVDbGFzcyhUKSxiPVMoeCxhKSxwKGIpfHxxKGIpJiZiLmpxdWVyeT9heC5odG1sKGIpOiEwPT09YiYmYXguaHRtbCgkKSxyLnNpbGVudClRLnJlc29sdmUoSSk7ZWxzZXtpZighYXgubXkoKS5kZGF0YSl7aWYoYXgucmVtb3ZlRGF0YSgibXkiKSxheC5yZW1vdmVDbGFzcygibXktZm9ybSIpLHopaWYoIjEiPT16LmRhdGEoImNvdW50IikpdHJ5e3oucmVtb3ZlKCl9Y2F0Y2goeCl7fWVsc2Ugei5kYXRhKCJjb3VudCIsei5kYXRhKCJjb3VudCIpLTEpO2lmKEQpdHJ5e2RlbGV0ZSB3W2tdLEQucmVtb3ZlKCl9Y2F0Y2goeCl7fX1RLnJlamVjdCgiRm9ybSAiK2orIiBmYWlsZWQgdG8gaW5pdGlhbGl6ZTogIit4LGEpfX19ZnVuY3Rpb24gdngoeCxhKXt2YXIgYj1bXSxjPVtdLGQ9YTtyZXR1cm4gcShkKSYmcShkLnN0eWxlKT8oZShhLnN0eWxlLCIiLGIsYyksW2IsY10pOiIiO2Z1bmN0aW9uIGUoYixjLGQsZyl7dmFyIGgsaSxqLGssbD1iLG09L0AvLnRlc3QoYyksbz1jLnNwbGl0KCJAIilbMF0scj10KGwpO2lmKG0mJihyP2c6ZCkucHVzaCgiQCIrYy5zcGxpdCgiQCIpWzFdLnRyaW0oKSsiIHsiKSxwKGwpJiYoL1tcclxuXS8udGVzdChsKXx8bC5zcGxpdCgifSIsMykubGVuZ3RoPjI/bD1MLmNzczJqc29uKGwpOmQucHVzaChvKygvXHsvLnRlc3QobCk/bDoieyIrbCsifSIpKSksbihsKSYmbC5sZW5ndGgpZm9yKGg9MDtoPGwubGVuZ3RoO2grKyllKGxbaF0sbyxkLGcpO2Vsc2UgaWYocShsKSlmb3Ioaj1BKGwpLGg9MDtoPGoubGVuZ3RoO2grKylmb3Ioaz1mKG8saltoXSksaT0wO2k8ay5sZW5ndGg7aSsrKWUobFtqW2hdXSxrW2ldLGQsZyk7ZWxzZSBpZih0KGwpKXRyeXtlKGwuY2FsbChhLHgsYSksbyxnLGcpfWNhdGNoKHgpe31tJiYocj9nOmQpLnB1c2goIn0iKX1mdW5jdGlvbiBmKHgsYSl7dmFyIGIsYz0iIixkPWErIiI7cmV0dXJuKCIgIj09PWQudG8oMSl8fC9eW2Etel0vaS50ZXN0KGQpKSYmKGM9IiAiKSwoYj1kLnNwbGl0KC9ccyosXHN7MCx9LykuY29tcGFjdCghMCkpLmxlbmd0aHx8Yi5wdXNoKCIiKSxiLm1hcChmdW5jdGlvbihhKXtyZXR1cm4geCtjK2F9KX19ZnVuY3Rpb24gd3goYSl7ZnVuY3Rpb24gYihiLGMsZCl7dmFyIGU9Yj9wKGIpP3h4KGEsYik6eChiKTphO2lmKFIoZSkpcmV0dXJuIGUudHJpZ2dlcihjLGQpfXZhciBjPXthamF4OmZ1bmN0aW9uKCl7cmV0dXJuIEcuYXBwbHkodGhpcyxTKGFyZ3VtZW50cykpfSxjYW5jZWw6Yi5maWxsKHZvaWQgMCwiY2FuY2VsIiksY2hlY2s6Yi5maWxsKHZvaWQgMCwiY2hlY2siKSxjb21taXQ6Yi5maWxsKHZvaWQgMCwiY29tbWl0IiksaW5zZXJ0OmZ1bmN0aW9uKHgsYSxjKXt2YXIgZD0iaW5zZXJ0IixlPSEwO2lmKHEoYyk/Yih4LGQse3doZXJlOmEsd2hhdDpjfSk6cCh4KT9udWxsPT1hJiZudWxsPT1jP2IoYSxkKTpxKGEpP2IoeCxkLHt3aGVyZToxZTYsd2hhdDphfSk6ZT0hMTpxKHgpJiYoeC53aGVyZSYmeC53aGF0P2IobnVsbCxkLHgpOmIobnVsbCxkLHt3aGVyZToxZTYsd2hhdDp4fSkpLCFlKXRocm93IkludmFsaWQgaW5zZXJ0In0sbW9kYWw6ZnVuY3Rpb24oeCxiKXt2YXIgYyxkO3JldHVybiBwKHgpPyhjPXh4KGEseCksKGQ9Yikucm9vdHx8KGQucm9vdD1hKSk6KGM9YSxkPXgpLGMubW9kYWwoZCl9LG5vdzpJLHBhcmVudDpmdW5jdGlvbih4KXt2YXIgYj1hLnBhcmVudHMoIi5teS1mb3JtIik7cmV0dXJuIGIubGVuZ3RoP2IuZXEoMCkubXkoIm1hbmlmZXN0Iik6bnVsbH0scmVjYWxjOmIuZmlsbCh2b2lkIDAsInJlY2FsYyIpLHJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sdHJpZ2dlcjpiLHZhbDpmdW5jdGlvbih4KXtyZXR1cm4gTS52YWwuYXBwbHkoeHgoYSx4KSxTKGFyZ3VtZW50cywxKSl9fTtyZXR1cm4gTi5mb3JFYWNoKGZ1bmN0aW9uKHgpeyJpbml0Ij09eHx8Y1t4XXx8KGNbeF09TVt4XS5iaW5kKGEpKX0pLGN9ZnVuY3Rpb24geXgoeCxhKXt2YXIgYj1FLGM9MCxkPSIiO3JldHVybiBlKHgsYSwxKSxiO2Z1bmN0aW9uIGUoeCxhLGYpe0EoYSkuZm9yRWFjaChmdW5jdGlvbihnKXtpZihudWxsPT1iJiYiIiE9ZyYmeC5pcyhnKSl7ZD1kKyhkPyIgIyMjICI6IiIpK2c7dmFyIGg9YVtnXSxpPXEoaCk7aWYoZj5jJiZudWxsIT1oJiYhaSlyZXR1cm4gYj1oLGM9Zix2b2lkIDA7aSYmZSh4LGgsZisxKX19KSxudWxsPT1iJiZudWxsIT1hWyIiXSYmIXEoYVsiIl0pJiZmPmMmJihiPWFbIiJdLGM9Zil9fWZ1bmN0aW9uIHp4KHgsYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbD0hMSxtPSExLG49eCxvPW4ubXkoKSxxPSIiO2lmKG8pe2lmKGg9by5zZWxlY3RvciwoaT1vLnJvb3QpLmhhc0NsYXNzKCJteS1mb3JtLWluaXQiKSlyZXR1cm57fTtpZihqPXh4KGksaCksKGw9eC5oYXNDbGFzcygibXktZm9ybSIpKT8oYz14LGQ9by5kZGF0YSxlPW8uZHVpLGY9by5kcGFyYW1zKTooYz1vLmNvbnRhaW5lcixkPW8uZGF0YSxlPW8udWksZj1vLnBhcmFtcyksZS5iaW5kIT1FKXtpZihnPUYoYSk/YTpreChqLGV4KGQsRSxlLGopKSxFIT1lLmNoZWNrKXtxPSJVbmtub3duIGVycm9yIjt0cnl7cT1HeChkLGcsZSxqKX1jYXRjaCh4KXtPKCJFcnJvciAiK3gubWVzc2FnZSsiIGluIC5jaGVjayB2YWxpZGF0b3IgZm9yICIraCxpLHguc3RhY2spfX12YXIgcj1mLmVycm9yQ3NzLHU9InVpLXN0YXRlLWVycm9yIjt0cnl7RSE9YSYmKGc9a3goaixleChkLGEsZSxqKSkpfWNhdGNoKHgpe3E9Zi5tZXNzYWdlcy5mb3JtRXJyb3J8fCJFcnJvciJ9aWYoRSE9ZS5jaGVjaylpZihtPXguaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpLCIiPT1xJiYobHx8bXx8Yy5oYXNDbGFzcyhyKSkpbD9vLmRlcnJvcnNbaF09IiI6by5lcnJvcnNbaF09IiIsYy5yZW1vdmVDbGFzcyhyKSxjLmF0dHIoInRpdGxlIikmJmMuYXR0cigidGl0bGUiLCIiKSxsfHxtfHxmLmVmZmVjdCh4eChjLGYuZXJyb3JUaXApLCExLGYuYW5pbWF0ZS8yKSxuLnJlbW92ZUNsYXNzKHUpLHh4KG4sIi51aS13aWRnZXQiKS5yZW1vdmVDbGFzcyh1KTtlbHNlIGlmKHEpe2lmKGwpby5kZXJyb3JzW2hdPXE7ZWxzZSBpZihtKW8uZXJyb3JzW2hdPXE7ZWxzZXtjLmFkZENsYXNzKHIpLG8uZXJyb3JzW2hdPXE7dmFyIHY9eHgoYyxmLmVycm9yVGlwKTt2Lmxlbmd0aD9mLmVmZmVjdCh2LmFkZENsYXNzKHIpLmh0bWwocChxKT9xOiJFcnJvciIpLCEwLGYuYW5pbWF0ZSk6Yy5hdHRyKCJ0aXRsZSIsKHAocSk/cToiRXJyb3IiKS5zdHJpcFRhZ3MoKSl9bi5oYXNDbGFzcygiaGFzRGF0ZXBpY2tlciIpJiYobi5pcygiaW5wdXQiKT9uLmFkZENsYXNzKHUpOnh4KG4sIi51aS13aWRnZXQiKS5hZGRDbGFzcyh1KSksbi5oYXNDbGFzcygidWktc2xpZGVyIikmJm4uYWRkQ2xhc3ModSl9fXZhciB3PWE9PUU/ZzphO2UuY3NzJiZBKGUuY3NzKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPWUuY3NzW3hdO3MoYSk/aXgoYS50ZXN0KHcpLGoseCk6dChhKSYmaXgoYS5jYWxsKGkubXkoKS5tYW5pZmVzdCxkLHcsaiksaix4KX0pO3ZhciB5LHosQz1lLnJlY2FsYyxEPVtdLEc9e307aWYoYiYmZS5yZWNhbGMmJmkubXkoKSl7Zm9yKGs9aS5teSgpLnVpLHk9MDt5PEMubGVuZ3RoO3krKylDW3ldJiZwKENbeV0pJiYoej1DW3ldLmNvbXBhY3QoKSkmJmtbel0mJihrW3pdLnJlY2FsYz8tMT09PUQuaW5kZXhPZih6KSYmRC5wdXNoKHopOkdbel09ITApO2Zvcih5PTA7eTxELmxlbmd0aDt5KyspRz1CKCEwLEcsengoeHgoaSxEW3ldKSxFLGItMSkpO2lmKGEhPT1FKXJldHVybiBBKEcpLmZvckVhY2goZnVuY3Rpb24oeCl7ITA9PT1HW3hdJiZ4IT1oJiYoa1t4XS5kZWxheSYmIWtbeF0ucmVjYWxjJiZrW3hdLl91cGRhdGU/a1t4XS5fdXBkYXRlKHh4KGkseCksRSxiLTEpOnp4KHh4KGkseCksRSxiLTEpKX0pLHt9fXJldHVybiBHfHx7fX19ZnVuY3Rpb24gQXgoeCxhLGIpe3ZhciBjPSQoe21heFdpZHRoOjgwLHRhYkNoYXJzOiIiLGtleUdhcDoiICIsdmFsdWVHYXA6IiAiLGNoYWluOiEwLHRpbnlPYmpMZW46MTIsdGFiU3Vic3Q6IiAgIixhbGxvd0ZuczohMCxhbGxvd0pTOiExLGFsaWduSlM6ITB9LCJvIj09TihhKT9hOnt9KTtieChhKSYmKGMudGFiQ2hhcnM9YSksY3goYikmJmI+MCYmKGMubWF4V2lkdGg9Yik7dmFyIGQ9Y3goYy5tYXhXaWR0aCk/XyhjLm1heFdpZHRoLDgsMWU0KTo4MCxlPWJ4KGMua2V5R2FwKT9jLmtleUdhcDoiICIsZj14eChlKSxnPWJ4KGMudmFsdWVHYXApP2MudmFsdWVHYXA6IiAiLGg9eHgoZyksaT1jLnRhYlN1YnN0LGo9YngoYy50YWJDaGFycyk/Yy50YWJDaGFyczoiIixrPS9cdC8udGVzdChqK2crZSksbD1qLmxlbmd0aCxtPXh4KGopLG49ISFjLmFsbG93Rm5zLG89KGMudW50YWJGbnMsISFjLmFsbG93SlMpLHA9ISFjLmFsaWduSlMscT0iIixyPVtdLHM9IiIsdD14LHU9Tih4KSx2PTAsdz0wLHk9bnVsbCx6PW51bGwsQT1udWxsLEI9IiIsQz0wLEQ9MDtpZighUyh1KSlyZXR1cm4gbnVsbD09dT92b2lkIDA6UChPKHgsbnVsbCwiICIpLnJlcGxhY2UoLyxcblxzKi9nLCIsIikucmVwbGFjZSgvXG4oXHMpKi9nLCIiKSk7TCh1KTtmb3IodmFyIEU9ci5sZW5ndGgtMTtFPjA7RS0tKXJbcltFXS51cF0uY3RyKz0xO3ZhciBGO2ZvcihFPTE7RTxyLmxlbmd0aC0xO0UrKylHPXJbRV0sRj1yW0UrMV0sKEcudXA9PUYudXAmJkYudHx8IUcudCYmRiYmRi50JiZGLnVwPT1yW0cudXBdLnVwKSYmKEcubGVuKz0xK2gsRy52YWwrPSIsIitnKSxudWxsPT09Ry5rZXl8fFMoRy50KXx8KEcubGVuKz1mKSx3PEcubHZsJiYodz1HLmx2bCksbyYmImYiPT1HLnQmJihHLmJyPSEwLEcudmFsLmluZGV4T2YoIlxuIik+LTEmJkcubHZsPjEmJnJbRy51cF0uY3RyPjEmJihHLmxlbis9ZCkpO2ZvcihFPXIubGVuZ3RoLTE7RT4wO0UtLSlyW3JbRV0udXBdLmxlbis9cltFXS5sZW47dmFyIEcsSCxJLEo9QXJyYXkoci5sZW5ndGgpO2ZvcihFPTA7RTxyLmxlbmd0aDtFKyspaWYoRz1yW0VdLEk9RSxKW0VdPUUsRSYmUyhHLnQpJiZHLmxlbjw9Yy50aW55T2JqTGVuKXtHLnQ9ImUiLEcuY3RyPS0xO2Rve0g9clsrK0VdLEcudmFsKz0obnVsbCE9PUgua2V5P0gua2V5KyI6IitlOiIiKStILnZhbCxyW0VdPW51bGx9d2hpbGUocltFKzFdJiZyW0UrMV0udXA+PUkpfXJldHVybihyPXIucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPT1hJiZ4LnB1c2goYSkseH0sW10pKS5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7Slt4LmldPWEsYSYmKHgudXA9Slt4LnVwXSx4Lmk9YSl9KSxxPVooaix3KzEpLEsoMCkscztmdW5jdGlvbiBLKHgsYSl7YT0hIWE7dmFyIGIsZz1yW3hdLGg9eCsxLGk9IiI7aWYocys9KGF8fCF4PyIiOlIoZy5sdmwpKSsobnVsbCE9PWcua2V5P2cua2V5KyI6IitlOiIiKStnLnZhbCwhYSYmZy5sdmwmJmcubGVuPD1kLShnLmx2bC1EKSptKWZvcih2YXIgaj0xO3JbaF0mJnJbaF0udXA+PXg7aCsrKVMoKGI9cltoXSkudCkmJihqKz0xKSxzKz0obnVsbCE9PWIua2V5P2Iua2V5KyI6IitlOiIiKStUKGIsLWopO2Vsc2UgaWYoIm8iPT1nLnQpZm9yKDtyW2hdJiZyW2hdLnVwPT14O2grKylpZihiPXJbaF0sYSYmIWIudCljLmNoYWluPyhzKz1yW2IudXBdLmN0cj4xfHxoLWIudXA9PTI/UihiLmx2bCk6IiIscys9Yi52YWwsRCYmMT09cltiLnVwXS5jdHImJmgtYi51cD4yJiYoRC09MSkpOnMrPVIoYi5sdmwpK2IudmFsO2Vsc2UgaWYoUyhiLnQpKWlmKGMuY2hhaW4mJjE9PWcuY3RyJiZiLmx2bD4xKXt2YXIgaz0xO2ZvcihqPTA7MT09cltoLWtdLmN0ciYmazw9RCsxJiYhcltoLWtdLmJyO2srKylqKz1udWxsPT1yW2gta10ua2V5PzE6cltoLWtdLmtleS5sZW5ndGgrZisyOyhqKz1iLmtleS5sZW5ndGgrZisyKyhiLmx2bC1rKzEpKm0pPD1kLWw/KEQrPTEsaD1LKGgsYT0hMCkpOihEJiYocltoLTFdLmJyPSEwKSxoPUsoaCxhPSExKSl9ZWxzZSBoPUsoaCk7ZWxzZSBzKz1SKGIubHZsKSsobnVsbCE9PWIua2V5P2Iua2V5KyI6IitlOiIiKStUKGIpO2Vsc2UgaWYoImEiPT1nLnQpZm9yKDtyW2hdJiZyW2hdLnVwPT14O2grKykoYj1yW2hdKS50JiYhUyhiLnQpP2IuYnI/KHMrPWkrUihiLmx2bCkrVChiKSxpPSIiKTppLmxlbmd0aD8nIjwnPT1iLnZhbC5zdWJzdHIoMCwyKXx8eHgoaSkrYi5sZW4+ZCsxPyhzKz1pLGk9UihiLmx2bCkrYi52YWwpOmkrPWIudmFsOmk9UihiLmx2bCkrYi52YWw6Yi50PyhzKz1pLGk9IiIsaD1LKGgpKToocys9aStSKGIubHZsKStiLnZhbCxpPSIiKTtyZXR1cm4gaC0xfWZ1bmN0aW9uIEwoeCl7dT14LEM9bnVsbD09QT8xOkEubGVuZ3RoKzQrZixCPSJvIj09eD8ieyI6IlsiO00oKTt5PXIubGVuZ3RoLTEsdis9MTtmb3IodmFyIGE9eSxiPXo9dSxjPXQsZD0ibyI9PXg/T2JqZWN0LmtleXMoYyk6YyxlPWQubGVuZ3RoLGc9MDtnPGU7ZysrKUE9Im8iPT14P2RbZ106bnVsbCxCPWNbIm8iPT14P0E6Z10sUyh1PU4oQikpfHwiYSIhPXgmJnZvaWQgMD09PUI/ImEiIT14JiZ2b2lkIDA9PT1CfHwodD1CLCJvIiE9dSYmImEiIT11fHxMKHUpKTooInUiPT11JiYoQj1udWxsKSxCPVAoTyhCKSksIm8iPT14JiZ2b2lkIDAhPT1CPyhDPUEubGVuZ3RoKzMrKEIrIiIpLmxlbmd0aCxNKCkpOiJhIj09eCYmKHZvaWQgMD09PUImJihCPSJudWxsIiksQz0oQisiIikubGVuZ3RoLE0oKSkpO3k9YSx6PWIsdT0iIix2LT0xLEE9bnVsbCxDPTEsQj0ibyI9PXg/In0iOiJdIixNKCksbnVsbCE9YSYmKHk9clthXS51cCx6PXJbYV0udXB0KX1mdW5jdGlvbiBNKCl7dmFyIHg9bnVsbD09PUF8fG8mJi9eW2EtetCwLdGPzrEtz4kkX11bYS160LAt0Y/OsS3PiSRfMC05XSokL2kudGVzdChBKSYmIS9eKGFzeW5jfGJyZWFrfGMoYXNlfGF0Y2h8bGFzc3xvbnN0fG9udGludWUpfGRlKGJ1Z2dlcnxmYXVsdHxsZXRlKXxkb3xlKHZhbHxsc2V8bnVtfHhwb3J0fHh0ZW5kcyl8SW5maW5pdHkpJC8udGVzdChBKSYmIS9eKGFyZ3VtZW50c3xmKGFsc2V8aW5hbGx5fG9yfHVuY3Rpb24pfGkoZnxtcGxlbWVudHN8bXBvcnR8bih8c3RhbmNlb2Z8dGVyZmFjZSkpfGxldHxOYU58bmV3fG51bGx8d2hpbGV8d2l0aCkkLy50ZXN0KEEpJiYhL14ocChhY2thZ2V8cml2YXRlfHJvdGVjdGVkfHVibGljKXxyZXR1cm58c3RhdGljfHN1cGVyfHN3aXRjaHx0KGhpc3xocm93fHJ1ZXxyeXx5cGVvZil8dW5kZWZpbmVkfHZhcnx2b2lkfHlpZWxkKSQvLnRlc3QoQSk/QTp4PVAoTyhBKSk7cmV0dXJuIHIucHVzaCh7aTpyLmxlbmd0aCxsdmw6dix1cDp5LHVwdDp6LHQ6dSxrZXk6eCx2YWw6QixsZW46QyxjdHI6LTEsYnI6ITF9KSxyW3IubGVuZ3RoLTFdfWZ1bmN0aW9uIE4oeCl7dmFyIGE9KHR5cGVvZiB4KVswXTtyZXR1cm4gbnVsbD09eD8idSI6InMiPT1hfHwiZiI9PWE/YToibiI9PWE/aXNOYU4oeCl8fCFpc0Zpbml0ZSh4KT8idSI6YTpheCh4KT8iYSI6IltvYmplY3QgT2JqZWN0XSI9PVkoeCkmJiJoYXNPd25Qcm9wZXJ0eSJpbiB4PyJvIjoiZSJ9ZnVuY3Rpb24gTyh4LGEsYil7cmV0dXJuIG8mJiJmIj09Tih4KT9wP1YoUSh4KSk6USh4KTpvJiZkeCh4KT94LnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkoeCxmdW5jdGlvbih4LGEpe3JldHVybiJmIj09TihhKT9wP1YoUShhKSk6UShhKTphfSxiKX1mdW5jdGlvbiBQKHgpe3JldHVybiBudWxsPT14P3g6eC5yZXBsYWNlKC88XC9zY3JpL2dpLCI8XFx1MDAyZnNjcmkiKX1mdW5jdGlvbiBRKHgpe3ZhciBhPXgudG9TdHJpbmcoKTtpZihuJiYvXltcclxuXHNcdF0qKGFzeW5jW1xyXG5cc1x0XSspP2Z1bmN0aW9uLy50ZXN0KGEpKXJldHVybiBhPVcoYSksbz9hOlAoYSl9ZnVuY3Rpb24gUih4KXtyZXR1cm4gbD8iXG4iK3Euc3Vic3RyKDAsXyh4LUQsMCwxZTQpKmwpOiIifWZ1bmN0aW9uIFMoeCl7cmV0dXJuIGJ4KHgpPyJvIj09eHx8ImEiPT14Om51bGwhPXgmJigibyI9PXgudHx8ImEiPT14LnQpfWZ1bmN0aW9uIFQoeCxhKXtyZXR1cm4gcCYmImYiPT14LnQ/VSh4LnZhbCx4Lmx2bCsoYXx8MCkpOngudmFsfWZ1bmN0aW9uIFUoeCxhKXtpZihYKHgpKXJldHVybiB4O3ZhciBiPW0/UihhKToiXG4iO3JldHVybiB4Lm1hdGNoKC9eLiokL2dtKS5tYXAoZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT9iK3g6eH0pLmpvaW4oIiIpfWZ1bmN0aW9uIFYoeCl7aWYoWCh4KSlyZXR1cm4geDt2YXIgYT14Lm1hdGNoKC9eLiokL2dtKSxiPWkubGVuZ3RofHwyO2lmKGEubGVuZ3RoPDIpcmV0dXJuIHg7dmFyIGM9YVthLmxlbmd0aC0xXS5yZXBsYWNlKC9cdC9nLGkpLm1hdGNoKC9eXHMqLylbMF0ubGVuZ3RoO3JldHVybiBjP2EubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPTAsZD0hMTtyZXR1cm4geC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiJcdCIhPXgmJiIgIiE9eCYmKGQ9ITApLGQ/eDooYSs9Ilx0Ij09eD9iOjEpPD1jPyIiOihkPSEwLHgpfSkuam9pbigiIil9KS5qb2luKCJcbiIpOnh9ZnVuY3Rpb24gVyh4KXt2YXIgYT0vXCkoW1xzXG5cclx0XSs/fFwvezEsMTB9Lio/XCpcL3xcL1wvW15cblxyXXswLDIwMH1bXG5ccl0pezAsMjB9P1x7LyxiPXguc3BsaXQoYSwxKVswXSxjPSJhc3luYyI9PWIuc3Vic3RyKDAsNSksZD1iLnN1YnN0cihjPzE0OjgpLnJlcGxhY2UoL1tcc1xuXHJcdF0rP3xcL3sxLDEwfS4qP1wqXC98XC9cL1teXG5ccl17MCwyMDB9W1xuXHJdL2csIiIpKyIpIixlPSJ7Iit4LnN1YnN0cihiLmxlbmd0aCkucmVwbGFjZShhLCIiKS5yZXBsYWNlKC99W159XSskLywifSIpO3JldHVybigoYz8iYXN5bmMgIjoiIikrImZ1bmN0aW9uICIrZCkucmVwbGFjZSgvZnVuY3Rpb25cc2Fub255bW91cy8sImZ1bmN0aW9uICIpKyIgIitlfWZ1bmN0aW9uIFgoeCl7cmV0dXJuIWJ4KHgpfHx4LmluZGV4T2YoImAiKT4tMX1mdW5jdGlvbiBZKHgpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeCl9ZnVuY3Rpb24gWih4LGEpe2Zvcih2YXIgYj0iIixjPTA7YzxhO2MrKyliKz14O3JldHVybiBifWZ1bmN0aW9uICQoeCxhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihiKXt4W2JdPWFbYl19KSx4fWZ1bmN0aW9uIF8oeCxhLGIpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heCh4LGEpLGIpfWZ1bmN0aW9uIHh4KHgpe3JldHVybiBrP3gucmVwbGFjZSgvXHQvZyxpKS5sZW5ndGg6eC5sZW5ndGh9ZnVuY3Rpb24gYXgoeCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoeCl9ZnVuY3Rpb24gYngoeCl7cmV0dXJuInMiPT1OKHgpfWZ1bmN0aW9uIGN4KHgpe3JldHVybiJuIj09Tih4KX1mdW5jdGlvbiBkeCh4KXtyZXR1cm4hYXgoeCkmJiJbb2JqZWN0IFJlZ0V4cF0iPT1ZKHgpfX1mdW5jdGlvbiBCeCh4LGEpe3ZhciBiPSFhO0EoeCkuZm9yRWFjaChmdW5jdGlvbihhKXtDeChhLHgsYil9KX1mdW5jdGlvbiBDeCh4LGEsYil7dmFyIGMsZCxlLGY9IiI7aWYoYnx8IS9eKGRhdGF8ZmlsZXN8cmVxdWlyZSkkLy50ZXN0KHgpKWlmKGM9YVt4XSxmPUQoYyksL14ob2J8YXIpLy50ZXN0KGYpKUJ4KGMpO2Vsc2V7aWYoInN0cmluZyIhPWYpcmV0dXJuO2lmKC9eZnVuY3Rpb24oXCh8W1xzXG5cdF0rKS8udGVzdChjKSl7aWYobnVsbD09KGQ9Yy5tYXRjaCgvXmZ1bmN0aW9uKFtcc1xuXHRdK1tcd9CwLdGP0JAt0K/OsS3Pic6RLc6pXyRdW1x30LAt0Y/QkC3Qr86xLc+JzpEtzqlcZF8kXSopP1tcc1xuXHRdKlwoKFteXCldKilcKVxzKlx7KFtcc1xTXSopXH1bXHNcblxyXHRdKiQvKSl8fDQhPWQubGVuZ3RoKXJldHVybjsiZnVuY3Rpb24iPT10eXBlb2YoZT1EeChkWzFdP2RbMV0ucmVwbGFjZSgvW1xzXG5cdF0vZywiIik6IiIsZFsyXSxkWzNdKSk/YVt4XT1lOk8oIkludmFsaWQgZnVuY3Rpb24gaW4gWEpTT04sIHNraXBwZWQiLGUubWVzc2FnZSxlLnN0YWNrLGMpfWVsc2UgaWYoL15hc3luY1xzZnVuY3Rpb24oXCh8W1xzXG5cdF0rKS8udGVzdChjKSl7aWYobnVsbD09KGQ9Yy5tYXRjaCgvXmFzeW5jXHNmdW5jdGlvbihbXHNcblx0XStbXHfQsC3Rj9CQLdCvzrEtz4nOkS3OqV8kXVtcd9CwLdGP0JAt0K/OsS3Pic6RLc6pXGRfJF0qKT9bXHNcblx0XSpcKChbXlwpXSopXClccypceyhbXHNcU10qKVx9W1xzXG5cclx0XSokLykpfHw0IT1kLmxlbmd0aClyZXR1cm47RXgoZFsxXT9kWzFdLnJlcGxhY2UoL1tcc1xuXHRdL2csIiIpOiIiLGRbMl0sZFszXSksImZ1bmN0aW9uIj09dHlwZW9mIGU/YVt4XT1lOk8oIkludmFsaWQgZnVuY3Rpb24gaW4gWEpTT04sIHNraXBwZWQiLGUubWVzc2FnZSxlLnN0YWNrLGMpfWVsc2UgaWYoL15uZXdcc1JlZ0V4cFwoLy50ZXN0KGMpJiYiKSI9PWMuc3Vic3RyKC0xKSl7aWYobnVsbD09KGQ9Yy5tYXRjaCgvXm5ld1xzUmVnRXhwXHMqXChcLyhbXHNcU10rKVwvKFthLXpdKilcKSQvKSl8fDMhPWQubGVuZ3RoKXJldHVybjsiZnVuY3Rpb24iPT10eXBlb2YoZT1GeChkWzFdLGRbMl0pKS50ZXN0P2FbeF09ZTpPKCJJbnZhbGlkIFJlZ0V4cCBpbiBYSlNPTiwgc2tpcHBlZCIsZS5tZXNzYWdlLGUuc3RhY2ssYyl9fX1mdW5jdGlvbiBEeCh4LGEsYil7dmFyIGM7dHJ5e2M9bmV3IEZ1bmN0aW9uKCIiLCJyZXR1cm4gKGZ1bmN0aW9uICIreCsiKCIrYSsiKXsiK2IrIn0pOyIpKCl9Y2F0Y2goeCl7Yz17bWVzc2FnZTp4Lm1lc3NhZ2Usc3RhY2s6eC5zdGFja319cmV0dXJuIGN9ZnVuY3Rpb24gRXgoeCxhLGIpe3ZhciBjO3RyeXtjPW5ldyBGdW5jdGlvbigiIiwicmV0dXJuIChhc3luYyBmdW5jdGlvbiAiK3grIigiK2ErIil7IitiKyJ9KTsiKSgpfWNhdGNoKHgpe2M9e21lc3NhZ2U6eC5tZXNzYWdlLHN0YWNrOnguc3RhY2t9fXJldHVybiBjfWZ1bmN0aW9uIEZ4KHgsYSl7dmFyIGI7dHJ5e2I9bmV3IFJlZ0V4cCh4LGEpfWNhdGNoKHgpe2I9e21lc3NhZ2U6eC5tZXNzYWdlLHN0YWNrOnguc3RhY2t9fXJldHVybiBifWZ1bmN0aW9uIEd4KGEsYixjLGQpe3ZhciBlLGYsZyxoPWMuY2hlY2ssaT0wO2lmKGghPUUpe3ZhciBqPVYoZCkucGFyYW1zLm1lc3NhZ2VzLGs9Yy5lcnJvcixsPWt8fGoucGF0dGVybk1pc21hdGNofHxqWyIiXXx8IkVycm9yIjtpZihkLmxlbmd0aCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRbMF0sInZhbGlkaXR5IikmJiFkWzBdLnZhbGlkaXR5LnZhbGlkKXt2YXIgbT1kWzBdLnZhbGlkYXRpb25NZXNzYWdlKyIiO3JldHVybiIiIT09bT9tLnN1YnN0cigwLDEpLnRvVXBwZXJDYXNlKCkrbS5zdWJzdHIoMSk6KGU9ZFswXS52YWxpZGl0eSxBKGUpLmZvckVhY2goZnVuY3Rpb24oeCl7IiI9PT1tJiYidmFsaWQiIT14JiZvKGVbeF0pJiZlW3hdJiZqW3hdJiYobT1qW3hdKX0pLG18fGspfXN3aXRjaChEKGgpLnN1YnN0cigwLDEpKXtjYXNlImYiOnJldHVybiBudWxsPT0oZz1oLmNhbGwoVihkKS5tYW5pZmVzdCxhLGIsZCkpPyIiOmc7Y2FzZSJyIjpyZXR1cm4gaC50ZXN0KGIrIiIpPyIiOmw7Y2FzZSJhIjpyZXR1cm4gaC5pbmRleE9mKGIpPi0xPyIiOmw7Y2FzZSJzIjpyZXR1cm4gYj09aD8iIjpsO2Nhc2UibyI6cmV0dXJuIGhbYl0/IiI6bDtjYXNlImIiOnJldHVybiBkLmhhc0NsYXNzKCJteS1mb3JtLWxpc3QiKT8oZj1kLmRhdGEoImxpc3RTcmMiKXx8ZC5kYXRhKCJteSIpLmxpc3RTcmN8fCI+KiIsZz17fSxpPTAsKCI+KiI9PWY/eChkWzBdLmNoaWxkcmVuKTp4eChkLGYsITApKS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXgodGhpcyk7Yi5oYXNDbGFzcygidWktc29ydGFibGUtcGxhY2Vob2xkZXIiKXx8KGIuZGF0YSgibXkiKSYmIWIubXkoInZhbGlkIikmJihnW2ldPWIubXkoImVycm9ycyIpKSxpKz0xKX0pLGcpOmQuaGFzQ2xhc3MoIm15LWZvcm0iKSYmaD9kLm15KCJ2YWxpZCIpPyIiOmQubXkoImVycm9ycyIpOiIifXJldHVybiBqLmZvcm1FcnJvcnx8IkVycm9yIn1yZXR1cm4iIn19KGpRdWVyeSksZnVuY3Rpb24oeCl7dmFyIGE9eC5leHRlbmQsYj0ic3RyaW5nIixjPSJmdW5jdGlvbiIsZD1PYmplY3QuaXNBcnJheSxlPShPYmplY3QuaXNCb29sZWFuLE9iamVjdC5pc1N0cmluZyksZj1PYmplY3QuaXNPYmplY3QsZz0oT2JqZWN0LmlzTnVtYmVyLE9iamVjdC5pc1JlZ0V4cCxPYmplY3QuaXNGdW5jdGlvbixPYmplY3Qua2V5cyksaD0nPGlucHV0IHR5cGU9IicsaT17dG1wbDp7bnVtOmgrJ251bWJlciIge2V4dH0vPicsaW5wOmgrJ3RleHQiIHtleHR9Lz4nLHNsaTpoKydyYW5nZSIge2V4dH0vPicsZGF0OmgrJ2RhdGUiIHtleHR9Lz4nLGJ0bjpoKydidXR0b24iIHtleHR9Lz4nLHB3ZDpoKydwYXNzd29yZCIge2V4dH0vPicsYnV0OiI8YnV0dG9uIHtleHR9Pnt0eHR9PC9idXR0b24+IixkaXY6IjxkaXYge2V4dH0+e3R4dH08L2Rpdj4iLHNwbjoiPHNwYW4ge2V4dH0+e3R4dH08L3NwYW4+IixzZWw6IjxzZWxlY3Qge2V4dH0+e3R4dH08L3NlbGVjdD4iLG11bDonPHNlbGVjdCB7ZXh0fSBtdWx0aXBsZT0ibXVsdGlwbGUiPnt0eHR9PC9zZWxlY3Q+Jyx0eHQ6Ijx0ZXh0YXJlYSB7ZXh0fT57dHh0fTwvdGV4dGFyZWE+IixlcnI6JyA8c3BhbiBjbGFzcz0ibXktZXJyb3ItdGlwIHtjbGFzc30iIHN0eWxlPSJ7c3R5bGV9Ij57dHh0fTwvc3Bhbj4nLG1zZzonPGRpdiBjbGFzcz0ibXktZXJyb3ItdGlwIHtjbGFzc30iIHN0eWxlPSJ7c3R5bGV9Ij57dHh0fTwvZGl2PicsdmFsOmZ1bmN0aW9uKHgpe2lmKCFkKHgudmFscykpcmV0dXJuIiI7dmFyIGI9YSh7c3R5bGU6IiIsY3NzOiIifSx4KTtyZXR1cm4gYi50eHQ9eC52YWxzLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4KyI8c3BhbiBjbGFzcz1cIm15LXNob3J0Y3V0XCIgb25jbGljaz1cIiQodGhpcykucGFyZW50cygnLm15LXJvdycpLmZpbmQoJ2lucHV0LHRleHRhcmVhJykudmFsKCQodGhpcykudGV4dCgpKS50cmlnZ2VyKCdibHVyJylcIj4iK2ErIjwvc3Bhbj4gIn0sIiAiKSwnPHNwYW4gY2xhc3M9Im15LXNob3J0Y3V0cyB7Y3NzfSIgc3R5bGU9IntzdHlsZX0iPnt0eHR9PC9zcGFuPicuYXNzaWduKGIpfSwiIjoiPHtfdGFnfSB7ZXh0fT57dHh0fTwve190YWd9PiJ9LHR4dDp7c2VsOmZ1bmN0aW9uKHgpe2lmKCF4LnZhbHMpcmV0dXJuIiI7dmFyIGE9ayh4LnZhbHMpO3JldHVybiBnKGEpLnJlZHVjZShmdW5jdGlvbih4LGIpe3JldHVybiB4Kyc8b3B0aW9uIHZhbHVlPSInK2IrJyI+JythW2JdKyI8L29wdGlvbj4ifSwiIil9fSxwYXJhbXM6e3N0eWxlczp7bnVtOiJ3aWR0aDozMCU7IixkYXQ6IndpZHRoOjMwJTsiLGlucDoid2lkdGg6MTAwJSIscHdkOiJ3aWR0aDoxMDAlIix0eHQ6IndpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7bWluLWhlaWdodDoxcHg7d29yZC1icmVhazpicmVhay13b3JkOyIsZXJyOiJkaXNwbGF5Om5vbmUiLG1zZzoiZGlzcGxheTpub25lIn0sYWxpYXM6e251bWJlcjoibnVtIixkYXRlOiJkYXQiLHNsaWRlcjoic2xpIix0ZXh0YXJlYToidHh0IixpbnB1dDoiaW5wIixzcGFuOiJzcG4iLHNlbGVjdDoic2VsZWN0Iix2YWxzOiJ2YWwifSxyb3c6IiIscm93VGFnOiJkaXYiLHJvd0NzczoibXktcm93IixsYWJlbDoiIixsYWJlbFRhZzoic3BhbiIsbGFiZWxDc3M6Im15LWxhYmVsIn0sZGVmYXVsdHM6e2lkOiIiLGNsYXNzOiIiLHN0eWxlOiIiLHBsYWNlaG9sZGVyOiIiLHZhbHVlOiIiLHJvd3M6MX0sYXR0bmFtZXM6e2NzczoiY2xhc3MiLHBsYzoicGxhY2Vob2xkZXIiLHZhbDoidmFsdWUiLHR4dDoiIix2YWxzOiIiLHRpcDoidGl0bGUifX07ZnVuY3Rpb24gaih4LGgsail7aWYoZShoKSlyZXR1cm4geCtoO2lmKGYoaCkpcmV0dXJuIGEoITAsaixoKSx4O2lmKGQoaCkmJmgubGVuZ3RoPjEmJmUoaFsxXSkpe2Zvcih2YXIgayxsLG0sbixvLHAscSxyPWhbMF0scz0iIix0PTE7dDxoLmxlbmd0aDspe2lmKGUoaFt0XSkpaWYobT0obj1oW3RdLnJlcGxhY2UoL1xzL2csIiIpKS5zcGxpdCgvW1wuI10vaSksbD1qLmFsaWFzW21bMF1dfHxtWzBdLGs9bi5zdWJzdHIobVswXS5sZW5ndGgpLC9eW2EtejAtOV0rKCNbYS16MC05XC1fXSspPyhcLlthLXowLTlcLV9dKykqJC9pLnRlc3Qobikpe3A9aS50bXBsW2xdfHxpLnRtcGxbIiJdLG89e3N0eWxlOiIiLGNsYXNzOiIiLHR4dDoiIn0scT0iIjt2YXIgdT1mKGhbdCsxXSk7dSYmZyhoW3QrPTFdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyIiIT1pLmF0dG5hbWVzW3hdJiYob1tpLmF0dG5hbWVzW3hdfHx4XT1oW3RdW3hdKX0pLG8uc3R5bGV8fG8uY2xhc3N8fCFqLnN0eWxlc1tsXXx8KG8uc3R5bGU9ai5zdHlsZXNbbF0pLG8uaWR8fCIjIiE9ay50bygxKXx8KG8uaWQ9ay5mcm9tKDEpLnNwbGl0KCIuIilbMF0pLCFvLmNsYXNzJiYvXC4vLnRlc3QoaykmJihvLmNsYXNzPSgiIyI9PWsudG8oMSk/ay5zdWJzdHIoby5pZC5sZW5ndGgrMSk6aykuc3BsaXQoIi4iKS5jb21wYWN0KCEwKS5qb2luKCIgIikpLGcobykuZm9yRWFjaChmdW5jdGlvbih4KXtxKz14Kyc9Iicrb1t4XSsnIiAnfSksdSYmZyhoW3RdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyIiPT09aS5hdHRuYW1lc1t4XSYmKG9beF09aFt0XVt4XSl9KSxvLmV4dD1xLCFvLnR4dCYmaS50eHRbbF0mJihvLnR4dD1pLnR4dFtsXShvKSksby5fdGFnPWwscys9dHlwZW9mIHA9PWM/cChvKXx8IiI6dHlwZW9mIHA9PWI/cC5hc3NpZ24obyk6IiJ9ZWxzZSBzKz1oW3RdO3QrPTF9cmV0dXJuIHMmJihzPSI8IitqLnJvd1RhZysnIGNsYXNzPSInK2oucm93Q3NzKyciICcrKGoucm93PydzdHlsZT0id2lkdGg6JytqLnJvdysiOyAiOiIiKSsoai5sYWJlbCYmcj8icGFkZGluZy1sZWZ0OiIrai5sYWJlbCsiOyAiOiIiKSsnIj4nKyhyPyI8IitqLmxhYmVsVGFnKycgY2xhc3M9Iicrai5sYWJlbENzcysnIiAnKyhqLmxhYmVsPydzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6JytqLmxhYmVsKyI7bWFyZ2luLWxlZnQ6LSIrai5sYWJlbCsnIiAnOiIiKSsiPiIrcisiPC8iK2oubGFiZWxUYWcrIj4iOiIiKStzKyI8LyIrai5yb3dUYWcrIj4iKSx4K3N9cmV0dXJuIHh9ZnVuY3Rpb24gayh4KXt2YXIgYT14O2lmKGUoYSkmJihhPWEuc3BsaXQoL1tccyxdLykuY29tcGFjdCghMCkpLGQoYSkpe2Zvcih2YXIgYj17fSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBoPWFbY107aWYoZihoKSl7dmFyIGk9ZyhoKTsxPT1pLmxlbmd0aD9iW2lbMF1dPWhbaVswXV0rIiI6YltoLmlkfHxoLmtleXx8aC5uYW1lfHwiIl09aC50ZXh0fHxoLnZhbHVlfHxoLnRpdGxlfHwiIn1lbHNlIGJbaF09aCsiIn1hPWJ9cmV0dXJuIGYoYSk/YTp7fX1mdW5jdGlvbiBsKGIsYyl7dmFyIGc9e30saD1lKGIpP2IubGluZXMoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZSgvXltcdFxzXSovLCIiKX0pOmI7cmV0dXJuIGQoaCk/KGEoITAsZyxpLnBhcmFtcyxjfHx7fSksaC5sZW5ndGg/aC5yZWR1Y2Uoai5maWxsKHZvaWQgMCx2b2lkIDAsZyksIiIpOiIiKTpmKGgpPyh4LmV4dGVuZChpLGgpLHZvaWQgMCk6IiJ9dmFyIG09e2luaXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4geCh0aGlzKS5odG1sKGwoYSxiKSl9fTt4Lm15fHwoeC5teT17fSkseC5teS5mb3JtZ2VuPWwseC5mbi5mb3JtZ2VuPWZ1bmN0aW9uKGEpe3JldHVybiBlKGEpJiZtW2FdP21bYV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpOiJvYmplY3QiIT10eXBlb2YgYSYmYT8oeC5lcnJvcigiTWV0aG9kICIrYSsiIGRvZXMgbm90IGV4aXN0IG9uIGpRdWVyeS5mb3JtZ2VuIiksdm9pZCAwKTptLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oalF1ZXJ5KSxmdW5jdGlvbih4KXt2YXIgYSxiLGM9e30sZD0iYm9keSIsZT0hMSxmPXguZXh0ZW5kLGc9e30saD14Lm15LmYuaW5kb20saT0oT2JqZWN0LmlzQXJyYXksT2JqZWN0LmlzQm9vbGVhbiksaj1PYmplY3QuaXNTdHJpbmcsaz1PYmplY3QuaXNPYmplY3QsbD1PYmplY3QuaXNOdW1iZXIsbT0oT2JqZWN0LmlzUmVnRXhwLE9iamVjdC5pc0Z1bmN0aW9uKTtpZih4LmZuLm1vZGFsJiZtKHgoKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCkmJihiPXguZm4ubW9kYWwpLHgoZG9jdW1lbnQpLm9mZigiLm1vZGFsIikseChkb2N1bWVudCkub24oImtleWRvd24ubW9kYWwiLGZ1bmN0aW9uKHgpe3ZhciBhLGIsYz14LmtleUNvZGU7aWYoITEhPT1lJiYoMTM9PT1jfHwyNz09PWMpKXtpZihhPShiPWUuZGF0YSgibW9kYWwiKSkuZm9ybSwyNz09YyYmKGIuZXNjfHxPYmplY3QuZXF1YWwoYS5kYXRhKCJteSIpLmluaXRpYWwsYS5teSgiZGF0YSIpKSkpcmV0dXJuIGUubW9kYWwoITApLCExO2lmKDEzPT1jJiZiLmVudGVyKXJldHVybiBmdW5jdGlvbih4KXt4Lm1vZGFsKCl9LmZpbGwoZSkuZGVsYXkoNTApLCExfX0pLG0oeC5teS5mLmdldHJlZih4LCJteS5tb2RhbC5wYXJlbnQiKSkpe3ZhciBuPXgubXkuZi5nZXRyZWYoeCwibXkubW9kYWwucGFyZW50IikoKS5hdHRyKCJpZCIpO24mJihkPSIjIituKX1mdW5jdGlvbiBvKGEsYixjLGQpe3ZhciBlLGcsaCxpLGwsbSxuO2lmKCJvYmplY3QiPT10eXBlb2YgYiYmYi5qcXVlcnkpYi5pcygiaW1nIikmJihtPWIsbD1iLmF0dHIoImFsdCIpfHxiLmF0dHIoInRpdGxlIil8fGIuZGF0YSgidGV4dCIpfHwiIixnPW1bMF0ubmF0dXJhbFdpZHRofHxtWzBdLndpZHRoLChlPW1bMF0ubmF0dXJhbEhlaWdodHx8bVswXS5oZWlnaHQpPDEmJihlPTEpLGc8MSYmKGc9MSksaT14KHdpbmRvdykud2lkdGgoKS05MCwoaD14KHdpbmRvdykuaGVpZ2h0KCktOTApPGUmJihnPWcqKGgvZSl8MCxlPWgpLGk8ZyYmKGU9ZSooaS8oZz1pKSl8MCksbj1nPDMwMD8zMDA6ZyxmKGEse3NvdXJjZToiaW1hZ2UiLG1hbmlmZXN0Ontpbml0OmZ1bmN0aW9uKHgpe3guaHRtbCh0aGlzLkhUTUwpLHgub24oImNsaWNrLm15IiwiaW1nOmVxKDApIixmdW5jdGlvbigpe3gudHJpZ2dlcigiY2FuY2VsIil9KX0sSFRNTDonPGltZyBzcmM9IiIgY2xhc3M9ImRiIiBzdHlsZT0ibWF4LXdpZHRoOicrZysicHg7bWF4LWhlaWdodDoiK2UrJ3B4Ij48aDQgY2xhc3M9Im10MTAiPjwvaDQ+Jyx1aTp7ImltZzplcSgwKSI6ImltZyIsaDQ6e2JpbmQ6InRleHQiLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiFhfX19fX0sZGF0YTp7aW1nOm0uYXR0cigic3JjIiksdGV4dDpsfSxlc2M6ITAsc2NyZWVuOiEwLHdpZHRoOmR8fG4sZm9jdXM6ITEsZ2xvYmFsOiEwLHo6IjE5OTUifSxjKSk7ZWxzZSBpZihrKGIpJiZiLm1hbmlmZXN0KWYoYSxiLGMpO2Vsc2V7aWYoIWooYikpcmV0dXJuIG51bGw7ZihhLHtzb3VyY2U6Imh0bWwiLG1hbmlmZXN0Ontpbml0OmZ1bmN0aW9uKHgpe3guaHRtbCh0aGlzLkhUTUwpfSxIVE1MOmIsdWk6eyJkaXY6ZXEoMCkiOmZ1bmN0aW9uKCl7fX19LGRhdGE6e30sZXNjOiEwLGZvY3VzOiExLHdpZHRoOmR9LGMpfXJldHVybiBhfWMubW9kYWw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBmLGc9e30saD14KGQpLGo9aC5maW5kKCI+Lm15LW1vZGFsLXByb3h5Iiksaz17Z2xvYmFsOiEwLHNjcmVlbjohMCxkb25lOm0oYik/Yjp2b2lkIDAsejoiMTk5NSJ9O3JldHVybiBpKGEpfHxudWxsPT1hP2oubW9kYWwoYSk6KGY9eC5EZWZlcnJlZCgpLG8oZyxhLGssYyk/ZT9mLnJlamVjdCgiTG9ja2VkIikucHJvbWlzZSgpOihqLmxlbmd0aHx8KGo9eCgnPGRpdiBjbGFzcz0ibXktbW9kYWwtcHJveHkiPjwvZGl2PicpLnByZXBlbmRUbyhoKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMCIsbGVmdDoiMCIsbWFyZ2luOiIwIixwYWRkaW5nOiIwIix3aWR0aDoiMXB4IixoZWlnaHQ6IjAifSksai5tb2RhbChnKSk6Zi5yZWplY3QoIkludmFsaWQgZGF0YSIpLnByb21pc2UoKSl9LGMubW9kYWwubG9hZGluZz1mdW5jdGlvbihhKXt4KGQpLmZpbmQoIj4ubXktbW9kYWwiKS50b2dnbGVDbGFzcygibXktbW9kYWwtbG9hZGluZyIsISFhKX0sYy5tb2RhbC5wYXJlbnQ9ZnVuY3Rpb24oYSl7aWYoIWF8fCF4KGEpLmxlbmd0aClyZXR1cm4geChkKTtkPWF9LGMubW9kYWwucGFyZW50QmFjaz1mdW5jdGlvbihiKXtpZighYnx8IXgoYikubGVuZ3RoKXJldHVybiB4KGF8fGQpO2E9Yn0sYy5tb2RhbC52aXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSx4Lm15fHwoeC5teT17fSkseC5teS5tb2RhbD1jLm1vZGFsLHguZm4ubW9kYWw9ZnVuY3Rpb24oYyxuLHApe2lmKGIpe2lmKHZvaWQgMD09PWMmJnZvaWQgMD09PW4mJnZvaWQgMD09PXApcmV0dXJuIGIuY2FsbCh0aGlzKTtpZihrKGMpJiYoYy5oYXNPd25Qcm9wZXJ0eSgiYmFja2Ryb3AiKXx8Yy5oYXNPd25Qcm9wZXJ0eSgia2V5Ym9yYWQiKXx8Yy5oYXNPd25Qcm9wZXJ0eSgic2hvdyIpKSlyZXR1cm4gYi5jYWxsKHRoaXMsYyxuKTtpZihqKGMpJiYvXih0b2dnbGV8c2hvd3xoaWRlfGhhbmRsZVVwZGF0ZSkkLy50ZXN0KGMpKXJldHVybiBiLmNhbGwodGhpcyxjLG4pfXZhciBxLHIscyx0LHUsdix3PXguRGVmZXJyZWQoKSx5PXt9LHo9dGhpcyxBPTAsQj1tKG4pP246ZnVuY3Rpb24oKXtyZXR1cm4hMX0sQz1rKGMpP2M6e30sRD16LmRhdGEoIm1vZGFsIik7aWYoZih6LHcucHJvbWlzZSgpKSxEKXtpZihudWxsPT1jfHxpKGMpKXJldHVybiBFKGMpLHo7aWYoQylyZXR1cm4gSSgiTG9ja2VkIiksen1yZXR1cm4gei5pcygiOnZpc2libGUiKT8oQz1vKHksYyx7fSkpP0MuZ2xvYmFsJiZlPyhJKCJMb2NrZWQiKSx6KTooKEQ9Zih7dHlwZToiRE9NIixzb3VyY2U6Im1hbmlmZXN0Iixmb3JtOm51bGwsbW9kYWw6bnVsbCxyb290Om51bGwsYmdyb290Om51bGwsY2FsbGVyOnosbWFuaWZlc3Q6e30sZGF0YTp7fSxnbG9iYWw6ITEsc2NyZWVuOiExLGRyYWc6ITEsZm9jdXM6ITAsY2xvc2U6ITAsc2lsZW50OiEwLGVzYzohMSxlbnRlcjohMSxib3VuZDohMSxoYXJkQ2xvc2U6ITAsbm9zZToiIix3aWR0aDpwfHwzMDAsaGVpZ2h0Om51bGwseDoiMCIseToiMCIsejoiMTkwMSIsYmFja2dyb3VuZDoid2hpdGUiLGNzczoiIixhbmltYXRlOjIwMH0sQyx7cHJvbWlzZTp3LnByb21pc2UoKSxjaWQ6TnVtYmVyLnJhbmRvbSgyNjg0MzU0NTYsNDI5NDk2NzI5NSkudG9TdHJpbmcoMTYpfSkpLmRvbmU9bShELmRvbmUpP0QuZG9uZTpCLGooRC5hbGlnbikmJkQuYWxpZ24mJihELng9KEQuYWxpZ24ubWF0Y2goLyhsZWZ0fHJpZ2h0KTpcLT9cZCsoXC5cZCspPyglfHB4KT8vZyl8fFsiMCJdKVswXSxELnk9KEQuYWxpZ24ubWF0Y2goLyh0b3B8Ym90dG9tKTpcLT9cZCsoXC5cZCspPyglfHB4KT8vZyl8fFsiMCJdKVswXSksRC53aWR0aD0xKih4Lm15LmYuZ2V0cmVmKGooRC5tYW5pZmVzdCk/eC5teS5jYWNoZShELm1hbmlmZXN0KTpELm1hbmlmZXN0LCJwYXJhbXMud2lkdGgiKXx8RC53aWR0aCksRC50eXBlPSJET00iLHouaGFzQ2xhc3MoIm15LWZvcm0iKT8oRC50eXBlPSJmb3JtIixELnJvb3Q9RC5yb290fHx6KTp6LmRhdGEoIm15Iik/KEQudHlwZT0iY29udHJvbCIsRC5yb290PUQucm9vdHx8ei5teSgpLnJvb3QpOihELnJvb3Q9RC5yb290fHx6LnBhcmVudHMoIi5teS1mb3JtIikuZXEoMCksRC5yb290Lmxlbmd0aHx8KEQucm9vdD14KGQpKSksRC5nbG9iYWw/KEQucm9vdD14KGQpLEQuYmdyb290PXgoYXx8ZCkpOkQuYmdyb290PUQuYmdyb290P3goRC5iZ3Jvb3QpOkQucm9vdCwocz1ELnJvb3QpLmRhdGEoIm1vZGFscyIpfHxzLmRhdGEoIm1vZGFscyIse30pLEYoKSxxPXgoJzxkaXYgY2xhc3M9Im15LW1vZGFsIG15LW1vZGFsLWluaXQgbXktbW9kYWwtJysoRC5nbG9iYWw/ImZ1bGxzY3JlZW4gIjoib3ZlcmxheSAiKStELmNzcysoRC5ub3NlPyIgbm9zZS0iK0Qubm9zZToiIikrJyI+PC9kaXY+JyksRC5yb290LmZpbmQoIj4ubXktbW9kYWwiKS5sZW5ndGg/cS5pbnNlcnRBZnRlcihELnJvb3QuZmluZCgiPi5teS1tb2RhbCIpLmxhc3QoKSk6cS5wcmVwZW5kVG8oRC5yb290KSxxLmFkZENsYXNzKCJteS1tb2RhbC0iK0QuY2lkKSxBPXEub3V0ZXJXaWR0aCgpLHEuaGlkZSgpLHEuaHRtbCgnPGRpdiBjbGFzcz0ibXktbW9kYWwtZm9ybSI+PC9kaXY+Jykscj1xLmZpbmQoIi5teS1tb2RhbC1mb3JtIiksRC5jbG9zZSYmeChqKEQuY2xvc2UpP0QuY2xvc2U6JzxkaXYgY2xhc3M9Im15LW1vZGFsLWNsb3NlIiB0aXRsZT0iQ2xvc2UiPsOXPC9kaXY+JykucHJlcGVuZFRvKHEpLm9uKCJjbGljay5teSIsZnVuY3Rpb24oKXtFKEQuaGFyZENsb3NlKX0pLmNzcyh7InotaW5kZXgiOigiKyI9PT0oRC56KyIiKS50bygxKT8iKyI6IiIpKygxKkQueisxKX0pLHQ9RC5iZ3Jvb3QuZmluZCgiPi5teS1tb2RhbC1zY3JlZW4iKSxELnNjcmVlbiYmKHQubGVuZ3RofHwodD14KCc8ZGl2IGNsYXNzPSJteS1tb2RhbC1zY3JlZW4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4nKS5wcmVwZW5kVG8oRC5iZ3Jvb3QpKSxELmVzYyYmdC5vbigiY2xpY2subXkiK0QuY2lkLGZ1bmN0aW9uKCl7ei5tb2RhbCghMCl9KSx0LnRvZ2dsZUNsYXNzKCJteS1tb2RhbC1zY3JlZW4tZ2xvYmFsIiwhIUQuZ2xvYmFsKSksei5kYXRhKCJtb2RhbCIsRCksRC5zaWxlbnQmJnEub24oImNoYW5nZS5teSIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLHEuY3NzKHtkaXNwbGF5OiJibG9jayIsaGVpZ2h0OiJub25lIixvcGFjaXR5OiIwLjAwNSIsInotaW5kZXgiOkQueix3aWR0aDoiYXV0byJ9KSxELmdsb2JhbD9xLmNzcyh7cG9zaXRpb246ImZpeGVkIixsZWZ0OiI1MCUiLHRvcDpELnBvcy52eSsicHgiLGRpc3BsYXk6ImJsb2NrIixoZWlnaHQ6Im5vbmUiLG9wYWNpdHk6IjAuMDA1Iiwiei1pbmRleCI6RC56LHdpZHRoOiJhdXRvIiwibWFyZ2luLWxlZnQiOiItIisoKEQud2lkdGgrQSkvMikucm91bmQoMCkrInB4In0pOnEuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6RC5wb3MudngrInB4Iix0b3A6RC5wb3MudnkrInB4IixkaXNwbGF5OiJibG9jayIsaGVpZ2h0OiJub25lIixvcGFjaXR5OiIwLjAwNSIsInotaW5kZXgiOkQueix3aWR0aDoiYXV0byJ9KSxyLm15KEQubWFuaWZlc3QsRC5kYXRhKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGEsYixjO2lmKGYoRCx7Zm9ybTpyLGJnOnQsY2FuY2VsOmZ1bmN0aW9uKCl7RSghMCl9LGNvbW1pdDpmdW5jdGlvbigpe0UoKX19KSxxLmRhdGEoIm1vZGFsIixEKSxELmhlaWdodD1xLm91dGVySGVpZ2h0KCksIm1hbmlmZXN0IiE9PUQuc291cmNlJiYoRC53aWR0aD1xLndpZHRoKCkpLEYoKSxxLmNzcyh7dG9wOkQucG9zLnZ5KyJweCJ9KSxHKCEwKSxxLnJlbW92ZUNsYXNzKCJteS1tb2RhbC1pbml0Iikscy5kYXRhKCJtb2RhbHMiKVtELmNpZF09RCxnW0QuY2lkXT13LHIub24oImNvbW1pdC5teSIsZnVuY3Rpb24oKXtyZXR1cm4gRC5jb21taXQuZGVsYXkoMzApLCExfSkub24oImNhbmNlbC5teSIsZnVuY3Rpb24oKXtyZXR1cm4gRC5jYW5jZWwuZGVsYXkoMzApLCExfSkscS5vbigibGF5b3V0Lm15IixmdW5jdGlvbigpe0coKX0uZGVib3VuY2UoMzApKSxELmdsb2JhbCYmKGU9eix4KGRvY3VtZW50LmJvZHkpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSksRC5nbG9iYWx8fCFELmVzYyYmIUQuZW50ZXJ8fHIub24oImtleWRvd24ubXkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEua2V5Q29kZTtyZXR1cm4gMjc9PWImJkQuZXNjPyhELmNhbmNlbCgpLCExKToxMz09YiYmRC5lbnRlciYmIXgoYS50YXJnZXQpLmlzKCJ0ZXh0YXJlYSIpPyhELmNvbW1pdC5kZWxheSg1MCksITEpOnZvaWQgMH0pLCEwPT09RC5mb2N1cz8oYj0hMSxjPUQubWFuaWZlc3QudWksT2JqZWN0LmtleXMoY3x8e30pLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoIWIpe3ZhciBhPXIuZmluZCh4KTthLmxlbmd0aCYmYS5pcygiaW5wdXQsIHRleHRhcmVhLCBidXR0b24iKSYmKGI9ITAsYS5mb2N1cygpKX19KSk6aihELmZvY3VzKSYmci5maW5kKEQuZm9jdXMpLmZvY3VzKCksKGE9ci5maW5kKCJpbWciKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iIiE9eCh0aGlzKS5hdHRyKCJzcmMiKX0pKS5sZW5ndGgpe3ZhciBkPWZ1bmN0aW9uKCl7Im1hbmlmZXN0IiE9PUQuc291cmNlJiZxLmNzcyh7d2lkdGg6ImF1dG8ifSksRygpfS5hZnRlcihhLmxlbmd0aCk7YS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5iaW5kKCJsb2FkIixkKX0pfUQuZHJhZyYmeC5mbi5kcmFnZ2FibGUmJihqKEQuZHJhZyk/cS5kcmFnZ2FibGUoe2hhbmRsZTpELmRyYWd9KTpxLmRyYWdnYWJsZSgpLEQubm9zZSYmcS5vbigiZHJhZ3N0YXJ0Lm15IixmdW5jdGlvbigpe3EucmVtb3ZlQ2xhc3MoIm5vc2UtIitELm5vc2UpfSkpLHEub24oIm1vdXNlZG93bi5teSIsZnVuY3Rpb24oYSl7dmFyIGI9W10sYz14KGEuY3VycmVudFRhcmdldCksZD1jLnBhcmVudCgpLGU9K2MuY3NzKCJ6LWluZGV4IiksZj1lO2QubGVuZ3RoJiYoZC5maW5kKCI+Lm15LW1vZGFsIikuZWFjaChmdW5jdGlvbihjLGQpe3ZhciBnPSt4KGQpLmNzcygiei1pbmRleCIpfHwwO2QhPWEuY3VycmVudFRhcmdldCYmZz49ZSYmYi5wdXNoKFtnLHgoZCldKSxnPmYmJihmPWcpfSksYi5mb3JFYWNoKGZ1bmN0aW9uKHgpe3hbMV0uY3NzKCJ6LWluZGV4Iix4WzBdLTErIiIpfSksYy5jc3MoInotaW5kZXgiLGYrIiIpKX0pLHcubm90aWZ5KCJSZWFkeSIpfSkuZmFpbChmdW5jdGlvbih4KXt0cnl7SCgpfWNhdGNoKHgpe316LmRhdGEoIm1vZGFsIixudWxsKSx3LnJlamVjdCh4KX0pLHopOihJKCJJbnZhbGlkIGRhdGEiKSx6KTooSSgiT2JqZWN0IG11c3QgYmUgdmlzaWJsZSIpLHopO2Z1bmN0aW9uIEUoeCl7aWYocj1ELmZvcm0sdD1ELmJnLHM9RC5yb290LEI9RC5kb25lLHU9ci5teSgiZGF0YSIpLHY9ITEseCl7dHJ5e0IuY2FsbChyLm15KCJtYW5pZmVzdCIpLG51bGwsbnVsbCl9Y2F0Y2goeCl7fXRyeXtoKHIpJiZIKCl9Y2F0Y2goeCl7fWlmKGgoeikmJnoucmVtb3ZlRGF0YSgibW9kYWwiKSxnW0QuY2lkXSl0cnl7Z1tELmNpZF0ucmVqZWN0KCJDYW5jZWxsZWQiKX1jYXRjaCh4KXt9ZGVsZXRlIGdbRC5jaWRdLEQ9bnVsbH1lbHNle3RyeXt2PUIuY2FsbChyLm15KCJtYW5pZmVzdCIpLHIubXkoInZhbGlkIik/bnVsbDpyLm15KCJlcnJvcnMiKSx1KX1jYXRjaCh4KXt9aWYoIXYpe3RyeXtoKHIpJiZIKCl9Y2F0Y2goeCl7fWgoeikmJnoucmVtb3ZlRGF0YSgibW9kYWwiKSxmdW5jdGlvbigpe2lmKGdbRC5jaWRdKXRyeXtnW0QuY2lkXS5yZXNvbHZlKHUpfWNhdGNoKHgpe31kZWxldGUgZ1tELmNpZF0sRD1udWxsfS5kZWxheSgwKX19fWZ1bmN0aW9uIEYoKXt2YXIgYSxiLGM9d2luZG93LGQ9ISFELmdsb2JhbCxlPXMub2Zmc2V0KCksZj16Lm9mZnNldCgpLGc9cy5zY3JvbGxUb3AoKTtELnBvcz17cHg6ZS5sZWZ0LHB5OmUudG9wLHB3OnMub3V0ZXJXaWR0aCgpLHBoOnMub3V0ZXJIZWlnaHQoKSxveDpmLmxlZnQsb3k6Zi50b3Asb3c6ei5vdXRlcldpZHRoKCksb2g6ei5vdXRlckhlaWdodCgpLHd3OmIsd2g6YX07dmFyIGg9MSooRC54Lm1hdGNoKC9cLT9cZCsoXC5cZCspPy8pfHxbMF0pWzBdLGk9MSooRC55Lm1hdGNoKC9cLT9cZCsoXC5cZCspPy8pfHxbMF0pWzBdLGo9RC54LmhhcygibGVmdCIpPy0xOkQueC5oYXMoInJpZ2h0Iik/MTowLGs9RC55LmhhcygidG9wIik/LTE6RC55LmhhcygiYm90dG9tIik/MTowLG09RC5wb3Mub3grRC5wb3Mub3cvMi1ELnBvcy5weCxuPUQucG9zLm95K0QucG9zLm9oLzItRC5wb3MucHk7aWYoZCYmKEQucG9zLndoPWE9Yy5pbm5lckhlaWdodHx8eChjKS5oZWlnaHQoKSxELnBvcy53dz1iPWMuaW5uZXJXaWR0aHx8eChjKS53aWR0aCgpLG09Yi8yLG49YS8yLjUpLGg9RC54LmhhcygiJSIpP0QucG9zLm93LzEwMCpoOmgsaT1ELnkuaGFzKCIlIik/RC5wb3Mub2gvMTAwKmk6aSxELnBvcy5waXg9bSxELnBvcy5waXk9bixtPW0raiooRC5wb3Mub3cvMikraCooaj4wPy0xOjEpLShELndpZHRoK0EpKihqKzEpLzIsZD8obj0oYS1ELmhlaWdodC0yMCkvMyk8MTAmJihuPTEwKTpuPW4rayooRC5wb3Mub2gvMikraSooaz4wPy0xOjEpLShELmhlaWdodHx8MCkqKGsrMSkvMixtPW0ucm91bmQoMSksbj0obitnKS5yb3VuZCgxKSxELnBvcy52eD1tLEQucG9zLnZ5PW4sITEhPT1ELmJvdW5kJiYhRC5nbG9iYWwpe3ZhciBvPShsKEQuYm91bmQpP0QuYm91bmQ6MCkuY2xhbXAoLTEwMCwxMDApO0QucG9zLnB3LTIqbzxELndpZHRoK0E/RC5wb3Mudng9LShELndpZHRoK0EtRC5wb3MucHcpLzI6RC5wb3MudngrRC53aWR0aCtBPkQucG9zLnB3LW8/RC5wb3Mudng9RC5wb3MucHctby1ELndpZHRoLUE6RC5wb3Mudng8byYmKEQucG9zLnZ4PW8pLEQucG9zLnBoLTIqbzxELmhlaWdodD8oRC5wb3Mudnk9byxELmhlaWdodD1ELnBvcy5waC0yKm8pOkQucG9zLnZ5K0QuaGVpZ2h0PkQucG9zLnBoLW8/RC5wb3Mudnk9RC5wb3MucGgtby1ELmhlaWdodDpELnBvcy52eTxvJiYoRC5wb3Mudnk9byl9fWZ1bmN0aW9uIEcoYSl7aWYoYXx8KEQuaGVpZ2h0PXEub3V0ZXJIZWlnaHQoKSwibWFuaWZlc3QiIT09RC5zb3VyY2UmJihELndpZHRoPXEud2lkdGgoKSksRigpKSxxLmNzcyh7d2lkdGg6RC53aWR0aCtBKyJweCIsZGlzcGxheToiYmxvY2sifSksRC5nbG9iYWwpcS5jc3Moe2xlZnQ6IjUwJSIsIm1hcmdpbi1sZWZ0IjoiLSIrKChELndpZHRoK0EpLzIpLnJvdW5kKDApKyJweCJ9KTtlbHNlIGlmKHEuY3NzKHtsZWZ0OkQucG9zLnZ4KyJweCJ9KSxELm5vc2Upe3goInN0eWxlI215LW1vZGFsLXN0eWxlLSIrRC5jaWQpLmxlbmd0aHx8cS5hcHBlbmQoJzxzdHlsZSBpZD0ibXktbW9kYWwtc3R5bGUtJytELmNpZCsnIj48L3N0eWxlPicpO3ZhciBiPSIiLGM9eCgic3R5bGUjbXktbW9kYWwtc3R5bGUtIitELmNpZCk7InRvcCI9PUQubm9zZXx8ImJvdHRvbSI9PUQubm9zZT8oYis9ImRpdi5teS1tb2RhbC0iK0QuY2lkKyIubm9zZS0iK0Qubm9zZSsiOmJlZm9yZSB7bGVmdDoiKyhELnBvcy5veC1ELnBvcy5weCtELnBvcy5vdy8yLUQucG9zLnZ4KSsicHghaW1wb3J0YW50O30iLGMudGV4dChiKSk6ImxlZnQiIT1ELm5vc2UmJiJyaWdodCIhPUQubm9zZXx8KGIrPSJkaXYubXktbW9kYWwtIitELmNpZCsiLm5vc2UtIitELm5vc2UrIjpiZWZvcmUge3RvcDoiKyhELnBvcy5veS1ELnBvcy5weStELnBvcy5vaC8yLUQucG9zLnZ5KSsicHghaW1wb3J0YW50O30iLGMudGV4dChiKSl9RC5zY3JlZW4/RC5nbG9iYWw/KHQuY3NzKHt0b3A6MCxsZWZ0OjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJmaXhlZCIsInotaW5kZXgiOkQuei0xfSksaihELnNjcmVlbik/dC5jc3Moe2JhY2tncm91bmQ6RC5zY3JlZW4/RC5zY3JlZW46InJnYmEoMTgsNDEsNzIsMC44OCkifSk6dC5jc3Moe2JhY2tncm91bmQ6RC5zY3JlZW4/InJnYmEoMTgsNDEsNzIsMC44OCkiOiIifSkpOnQuY3NzKHt0b3A6MCxsZWZ0OjAscG9zaXRpb246ImFic29sdXRlIix3aWR0aDp0LnBhcmVudCgpLm91dGVyV2lkdGgoKSsicHgiLGhlaWdodDp0LnBhcmVudCgpLm91dGVySGVpZ2h0KCkrInB4IixkaXNwbGF5OiJibG9jayIsYmFja2dyb3VuZDpqKEQuc2NyZWVuKT9ELnNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIiwiei1pbmRleCI6RC56LTF9KTp0Lmxlbmd0aCYmdC5oaWRlKCksRC5oZWlnaHQ+RC5wb3Mud2g/KHEuaGVpZ2h0KEQucG9zLndoLTMwKSxyLmNzcyh7Im92ZXJmbG93LXkiOiJzY3JvbGwifSkpOnIuY3NzKHsib3ZlcmZsb3cteSI6IiJ9KSxxLmFuaW1hdGUoe3RvcDpELnBvcy52eSsicHgiLG9wYWNpdHk6IjEifSxELmFuaW1hdGUpfWZ1bmN0aW9uIEgoKXt0cnl7ci5teSgicmVtb3ZlIil9Y2F0Y2goeCl7fXRyeXtzLmRhdGEoIm1vZGFscyIpW0QuY2lkXT1udWxsfWNhdGNoKHgpe31yLnBhcmVudCgpLm9mZigiLm15IikucmVtb3ZlKCksaCh0KSYmdC5vZmYoIi5teSIrRC5jaWQpLEQuc2NyZWVuJiZoKHQpJiZmdW5jdGlvbih4KXt4JiZlfHx0LmhpZGUoKSx4JiYhZSYmdC5jc3Moe2JhY2tncm91bmQ6InJnYmEoMTgsNDEsNzIsMC44OCkifSl9LmRlbGF5KDUwLEQuZ2xvYmFsKSxELmdsb2JhbCYmKGU9ITEseChkb2N1bWVudC5ib2R5KS5jc3Moe292ZXJmbG93OiIifSkpfWZ1bmN0aW9uIEkoeCl7dHJ5e0IobnVsbCxudWxsKX1jYXRjaCh4KXt9KGZ1bmN0aW9uKCl7dy5yZWplY3QoeCl9KS5kZWxheSgwKX19fShqUXVlcnkpOwoKLypqUXVlcnkgVGFncyAwLjUsIChjKSBlcm1vdXRoKi8KIWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYyxkPTAsZT1hLmRhdGEoInRhZ3MiKTtpZihlLmRhdGE9W10sYi5sZW5ndGgpe3ZhciBmPWIudW5pcXVlKCk7Zm9yKGUudHY9e30sYS5maW5kKCIudGFnLmFjdGl2ZSIpLnRyaWdnZXIoImNsaWNrIiksYz0wO2M8Zi5sZW5ndGg7YysrKWUudGlbZltjXV0mJihlLiR0W2ZbY11dLnRyaWdnZXIoImNsaWNrIiksZCs9MSl9ZHx8KG51bGwhPWUuZW1wdHk/YS5maW5kKCIudGFncy1lbXB0eSIpLnRyaWdnZXIoImNsaWNrIik6YS5maW5kKCIudGFnLmFjdGl2ZSIpLnRyaWdnZXIoImNsaWNrIikpfXZhciBjPShPYmplY3QuaXNBcnJheSxPYmplY3QuaXNCb29sZWFuLE9iamVjdC5pc1N0cmluZyksZD0oT2JqZWN0LmlzT2JqZWN0LE9iamVjdC5pc051bWJlciksZT0oT2JqZWN0LmlzUmVnRXhwLE9iamVjdC5pc0Z1bmN0aW9uLGEudHlwZSx7aW5pdDpmdW5jdGlvbihlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9YSh0aGlzKSxyPVtdLHM9W10sdD17fSx1PXt9LHY9e30sdz17ZGF0YTpbXSx0YWdzOltdLGRpc2FibGVkOiExLGV2ZW50OiJjaGFuZ2UiLHRhZ2NzczoidGFnIHBzZXVkb2xpbmsgIix0ZW1wbGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4oJzxzcGFuIGNsYXNzPSInK3cudGFnY3NzKycge2Nzc30iIGRhdGEtdmFsdWU9Int2YWx1ZX0iPntuYW1lfTwvc3Bhbj4nKS5hc3NpZ24oYSl9LGVtcHR5Om51bGwsdGFnc2hpbToiICIsZ3JvdXBzaGltOiIgIixzaWxlbnQ6ITF9LHg9YS50eXBlKGUpLHk9bnVsbDtmb3IoIm9iamVjdCI9PXg/YS5leHRlbmQoITAsdyxlKToiYXJyYXkiPT14JiYody50YWdzPWUuc2xpY2UoMCkpLHEuZGF0YSgidGFncyIpJiYody5kYXRhPXEuZGF0YSgidGFncyIpLmRhdGEuc2xpY2UoMCkpLG51bGwhPXcuZW1wdHkmJihsPXcuZW1wdHkseD1hLnR5cGUobCkscD0iIiwvXm51fF5zdHIvLnRlc3QoeCk/KGs9IiIsaj1sKyIiKToib2JqZWN0Ij09eCYmKGMobC5uYW1lKSYmKGMobC52YWx1ZSl8fGQobC52YWx1ZSkpPyhqPWwubmFtZSsiIixrPWwudmFsdWUrIiIscD1sLmNzc3x8cCk6KGo9T2JqZWN0LmtleXMobClbMF0saz1sW2pdKyIiKSksYyhrKSYmKHk9ayx0W2tdPXtuYW1lOmosaTpudWxsLGo6bnVsbCx2YWx1ZTprKyIiLGNzczpwKyIgdGFncy1lbXB0eSJ9KSksZz13LnRhZ3Msaj0wO2o8Zy5sZW5ndGg7aisrKXtmb3IobD1nW2pdLGk9W10saD1bXSx4PWEudHlwZShsKSwvXm51bXxec3RyfF5vYi8udGVzdCh4KT9oPVtsXToiYXJyYXkiPT14JiYoaD1sLnNsaWNlKDApLnVuaXF1ZSgpKSxrPTA7azxoLmxlbmd0aDtrKyspaWYobT1oW2tdLG49YS50eXBlKG0pLC9ebnVtfF5zdHIvLnRlc3QobikpaS5wdXNoKHtuYW1lOm0rIiIsdmFsdWU6bSsiIixjc3M6IiJ9KTtlbHNlIGlmKCJvYmplY3QiPT1uKWlmKGMobS5uYW1lKSYmKGMobS52YWx1ZSl8fGQobS52YWx1ZSkpKWkucHVzaCh7bmFtZTptLm5hbWUrIiIsdmFsdWU6bS52YWx1ZSsiIixjc3M6YyhtLmNzcyk/bS5jc3M6IiJ9KTtlbHNlIGZvcihvIGluIG0paS5wdXNoKHtuYW1lOm8rIiIsdmFsdWU6bVtvXSsiIixjc3M6IiJ9KTtpLmxlbmd0aCYmcy5wdXNoKGkuc2xpY2UoMCkpfWZvcihqPTA7ajxzLmxlbmd0aDtqKyspe2ZvcihpPVtdLGs9MDtrPHNbal0ubGVuZ3RoO2srKylsPXNbal1ba10udmFsdWUsdFtsXXx8KHRbbF09ITAsaS5wdXNoKHNbal1ba10pKTtpLmxlbmd0aCYmci5wdXNoKGkuc2xpY2UoMCkpfWZvcihqPTA7ajxyLmxlbmd0aDtqKyspZm9yKGs9MDtrPHJbal0ubGVuZ3RoO2srKylsPXJbal1ba10udmFsdWUsdFtsXT17bmFtZTpyW2pdW2tdLm5hbWUsaTpqLGo6ayx2YWx1ZTpsLGNzczoocltqXVtrXS5jc3N8fCIiKSsiIHRhZ3Mtcm93IitqfTtmb3IoZj0iIixudWxsIT15JiYoZis9dy50ZW1wbGF0ZSh0W3ldKSt3Lmdyb3Vwc2hpbSksaj0wO2o8ci5sZW5ndGg7aisrKWZvcihqJiYoZis9dy5ncm91cHNoaW0pLGs9MDtrPHJbal0ubGVuZ3RoO2srKylrJiYoZis9dy50YWdzaGltKSxmKz13LnRlbXBsYXRlKHRbcltqXVtrXS52YWx1ZV0pO3JldHVybiBxLmh0bWwoZikscS5vZmYoIi50YWciKSxxLm9uKCJjbGljay50YWciLCIudGFnIixmdW5jdGlvbigpe3ZhciBiLGMsZD1hKHRoaXMpLGU9ZC5kYXRhKCJ2YWx1ZSIpO2lmKCF3LmRpc2FibGVkKXtpZihkLmlzKCIudGFncy1lbXB0eSIpKXEuZmluZCgiLnRhZyIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx1PXt9LHkmJih1W3ldPSEwKSxkLmFkZENsYXNzKCJhY3RpdmUiKTtlbHNle2lmKGQuaXMoIi5hY3RpdmUiKSlkLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx1W2VdPSExO2Vsc2V7Zm9yKGI9dFtlXS5pLHEuZmluZCgiLnRhZy50YWdzLXJvdyIrYikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGM9MDtjPHJbYl0ubGVuZ3RoO2MrKyl1W3JbYl1bY10udmFsdWVdPSExO2QuYWRkQ2xhc3MoImFjdGl2ZSIpLHVbZV09ITAseSYmKHVbeV09ITEpfU9iamVjdC52YWx1ZXModSkuY29tcGFjdCghMCkubGVuZ3RoP3EuZmluZCgiLnRhZ3MtZW1wdHkiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik6KHU9e30seSYmKHVbeV09ITApLHEuZmluZCgiLnRhZ3MtZW1wdHkiKS5hZGRDbGFzcygiYWN0aXZlIikpfXcuZGF0YT1bXTtmb3IoYiBpbiB1KXVbYl0mJncuZGF0YS5wdXNoKGIpO3EuZGF0YSgidmFsdWUiLHcuZGF0YSksdy5zaWxlbnR8fHEudHJpZ2dlcigiY2hhbmdlIil9fSkscS5maW5kKCIudGFnIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyksYz1iLmRhdGEoInZhbHVlIik7dltjXT1ifSksYS5leHRlbmQodyx7dGk6dCx0djp1LCR0OnZ9KSxxLmFkZENsYXNzKCJteS10YWdzIikuZGF0YSgidGFncyIsdyksdy5zaWxlbnQ9ITAsYihxLHcuZGF0YSksdy5zaWxlbnQ9ITEscX0sZGlzYWJsZTpmdW5jdGlvbihiKXt2b2lkIDAhPT1iJiYoYSh0aGlzKS5kYXRhKCJ0YWdzIikuZGlzYWJsZWQ9ISFiKX0sZGF0YTpmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLmRhdGEoInRhZ3MiKSxlPWM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT1bY10pLGQmJmUmJiJhcnJheSI9PWEudHlwZShlKSYmIWQuZGlzYWJsZWQ/KGQuc2lsZW50PSEwLGIoYSh0aGlzKSxlKSxkLnNpbGVudD0hMSxhKHRoaXMpLmRhdGEoInRhZ3MiKS5kYXRhKTpkP2QuZGF0YTpbXX19KTthLmZuLnRhZ3M9ZnVuY3Rpb24oYil7cmV0dXJuIGVbYl0/ZVtiXS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk6Im9iamVjdCIhPXR5cGVvZiBiJiZiPyhhLmVycm9yKCJNZXRob2QgIitiKyIgZG9lcyBub3QgZXhpc3QgaW4galF1ZXJ5LnRhZ3MiKSx2b2lkIDApOmUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShqUXVlcnkpOwoKLypRLmpzLCAoYykgMjAwOS0yMDEyIEtyaXMgS293YWwqLwohZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBib290c3RyYXApYm9vdHN0cmFwKCJwcm9taXNlIixhKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9YSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoYSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlcyl7aWYoIXNlcy5vaygpKXJldHVybjtzZXMubWFrZVE9YX1lbHNle2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZW52aXJvbm1lbnQgd2FzIG5vdCBhbnRpY2lhcHRlZCBieSBRLiBQbGVhc2UgZmlsZSBhIGJ1Zy4iKTtzZWxmLlE9YSgpfX0oZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVS5hcHBseShhLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGIoYSl7cmV0dXJuIGE9PT1PYmplY3QoYSl9ZnVuY3Rpb24gYyhhKXtyZXR1cm4iW29iamVjdCBTdG9wSXRlcmF0aW9uXSI9PT1hYShhKXx8YSBpbnN0YW5jZW9mIFF9ZnVuY3Rpb24gZChhLGIpe2lmKE8mJmIuc3RhY2smJiJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuc3RhY2smJmEuc3RhY2suaW5kZXhPZihiYSk9PT0tMSl7Zm9yKHZhciBjPVtdLGQ9YjtkO2Q9ZC5zb3VyY2UpZC5zdGFjayYmYy51bnNoaWZ0KGQuc3RhY2spO2MudW5zaGlmdChhLnN0YWNrKTt2YXIgZj1jLmpvaW4oIlxuIitiYSsiXG4iKTthLnN0YWNrPWUoZil9fWZ1bmN0aW9uIGUoYSl7Zm9yKHZhciBiPWEuc3BsaXQoIlxuIiksYz1bXSxkPTA7ZDxiLmxlbmd0aDsrK2Qpe3ZhciBlPWJbZF07aChlKXx8ZihlKXx8IWV8fGMucHVzaChlKX1yZXR1cm4gYy5qb2luKCJcbiIpfWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEuaW5kZXhPZigiKG1vZHVsZS5qczoiKSE9PS0xfHxhLmluZGV4T2YoIihub2RlLmpzOiIpIT09LTF9ZnVuY3Rpb24gZyhhKXt2YXIgYj0vYXQgLisgXCgoLispOihcZCspOig/OlxkKylcKSQvLmV4ZWMoYSk7aWYoYilyZXR1cm5bYlsxXSxOdW1iZXIoYlsyXSldO3ZhciBjPS9hdCAoW14gXSspOihcZCspOig/OlxkKykkLy5leGVjKGEpO2lmKGMpcmV0dXJuW2NbMV0sTnVtYmVyKGNbMl0pXTt2YXIgZD0vLipAKC4rKTooXGQrKSQvLmV4ZWMoYSk7cmV0dXJuIGQ/W2RbMV0sTnVtYmVyKGRbMl0pXTp2b2lkIDB9ZnVuY3Rpb24gaChhKXt2YXIgYj1nKGEpO2lmKCFiKXJldHVybiExO3ZhciBjPWJbMF0sZD1iWzFdO3JldHVybiBjPT09UCYmZD49UiYmZDw9ZmF9ZnVuY3Rpb24gaSgpe2lmKE8pdHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChkKXt2YXIgYT1kLnN0YWNrLnNwbGl0KCJcbiIpLGI9YVswXS5pbmRleE9mKCJAIik+MD9hWzFdOmFbMl0sYz1nKGIpO2lmKCFjKXJldHVybjtyZXR1cm4gUD1jWzBdLGNbMV19fWZ1bmN0aW9uIGooYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGIrIiBpcyBkZXByZWNhdGVkLCB1c2UgIitjKyIgaW5zdGVhZC4iLG5ldyBFcnJvcigiIikuc3RhY2spLGEuYXBwbHkoYSxhcmd1bWVudHMpfX1mdW5jdGlvbiBrKGEpe3JldHVybiBhIGluc3RhbmNlb2Ygbz9hOnMoYSk/QihhKTpBKGEpfWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiBhKGEpe2I9YSxmLnNvdXJjZT1hLFcoYyxmdW5jdGlvbihiLGMpe2submV4dFRpY2soZnVuY3Rpb24oKXthLnByb21pc2VEaXNwYXRjaC5hcHBseShhLGMpfSl9LHZvaWQgMCksYz12b2lkIDAsZD12b2lkIDB9dmFyIGIsYz1bXSxkPVtdLGU9WihsLnByb3RvdHlwZSksZj1aKG8ucHJvdG90eXBlKTtpZihmLnByb21pc2VEaXNwYXRjaD1mdW5jdGlvbihhLGUsZil7dmFyIGc9Vihhcmd1bWVudHMpO2M/KGMucHVzaChnKSwid2hlbiI9PT1lJiZmWzFdJiZkLnB1c2goZlsxXSkpOmsubmV4dFRpY2soZnVuY3Rpb24oKXtiLnByb21pc2VEaXNwYXRjaC5hcHBseShiLGcpfSl9LGYudmFsdWVPZj1mdW5jdGlvbigpe2lmKGMpcmV0dXJuIGY7dmFyIGE9cShiKTtyZXR1cm4gcihhKSYmKGI9YSksYX0sZi5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGI/Yi5pbnNwZWN0KCk6e3N0YXRlOiJwZW5kaW5nIn19LGsubG9uZ1N0YWNrU3VwcG9ydCYmTyl0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGEpe2Yuc3RhY2s9YS5zdGFjay5zdWJzdHJpbmcoYS5zdGFjay5pbmRleE9mKCJcbiIpKzEpfXJldHVybiBlLnByb21pc2U9ZixlLnJlc29sdmU9ZnVuY3Rpb24oYyl7Ynx8YShrKGMpKX0sZS5mdWxmaWxsPWZ1bmN0aW9uKGMpe2J8fGEoQShjKSl9LGUucmVqZWN0PWZ1bmN0aW9uKGMpe2J8fGEoeihjKSl9LGUubm90aWZ5PWZ1bmN0aW9uKGEpe2J8fFcoZCxmdW5jdGlvbihiLGMpe2submV4dFRpY2soZnVuY3Rpb24oKXtjKGEpfSl9LHZvaWQgMCl9LGV9ZnVuY3Rpb24gbShhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZXNvbHZlciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIGI9bCgpO3RyeXthKGIucmVzb2x2ZSxiLnJlamVjdCxiLm5vdGlmeSl9Y2F0Y2goYSl7Yi5yZWplY3QoYSl9cmV0dXJuIGIucHJvbWlzZX1mdW5jdGlvbiBuKGEpe3JldHVybiBtKGZ1bmN0aW9uKGIsYyl7Zm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWsoYVtkXSkudGhlbihiLGMpfSl9ZnVuY3Rpb24gbyhhLGIsYyl7dm9pZCAwPT09YiYmKGI9ZnVuY3Rpb24oYSl7cmV0dXJuIHoobmV3IEVycm9yKCJQcm9taXNlIGRvZXMgbm90IHN1cHBvcnQgb3BlcmF0aW9uOiAiK2EpKX0pLHZvaWQgMD09PWMmJihjPWZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOiJ1bmtub3duIn19KTt2YXIgZD1aKG8ucHJvdG90eXBlKTtpZihkLnByb21pc2VEaXNwYXRjaD1mdW5jdGlvbihjLGUsZil7dmFyIGc7dHJ5e2c9YVtlXT9hW2VdLmFwcGx5KGQsZik6Yi5jYWxsKGQsZSxmKX1jYXRjaChhKXtnPXooYSl9YyYmYyhnKX0sZC5pbnNwZWN0PWMsYyl7dmFyIGU9YygpOyJyZWplY3RlZCI9PT1lLnN0YXRlJiYoZC5leGNlcHRpb249ZS5yZWFzb24pLGQudmFsdWVPZj1mdW5jdGlvbigpe3ZhciBhPWMoKTtyZXR1cm4icGVuZGluZyI9PT1hLnN0YXRlfHwicmVqZWN0ZWQiPT09YS5zdGF0ZT9kOmEudmFsdWV9fXJldHVybiBkfWZ1bmN0aW9uIHAoYSxiLGMsZCl7cmV0dXJuIGsoYSkudGhlbihiLGMsZCl9ZnVuY3Rpb24gcShhKXtpZihyKGEpKXt2YXIgYj1hLmluc3BlY3QoKTtpZigiZnVsZmlsbGVkIj09PWIuc3RhdGUpcmV0dXJuIGIudmFsdWV9cmV0dXJuIGF9ZnVuY3Rpb24gcihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIG99ZnVuY3Rpb24gcyhhKXtyZXR1cm4gYihhKSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudGhlbn1mdW5jdGlvbiB0KGEpe3JldHVybiByKGEpJiYicGVuZGluZyI9PT1hLmluc3BlY3QoKS5zdGF0ZX1mdW5jdGlvbiB1KGEpe3JldHVybiFyKGEpfHwiZnVsZmlsbGVkIj09PWEuaW5zcGVjdCgpLnN0YXRlfWZ1bmN0aW9uIHYoYSl7cmV0dXJuIHIoYSkmJiJyZWplY3RlZCI9PT1hLmluc3BlY3QoKS5zdGF0ZX1mdW5jdGlvbiB3KCl7Y2EubGVuZ3RoPTAsZGEubGVuZ3RoPTAsZWF8fChlYT0hMCl9ZnVuY3Rpb24geChhLGIpe2VhJiYoZGEucHVzaChhKSxiJiYidW5kZWZpbmVkIiE9dHlwZW9mIGIuc3RhY2s/Y2EucHVzaChiLnN0YWNrKTpjYS5wdXNoKCIobm8gc3RhY2spICIrYikpfWZ1bmN0aW9uIHkoYSl7aWYoZWEpe3ZhciBiPVgoZGEsYSk7YiE9PS0xJiYoZGEuc3BsaWNlKGIsMSksY2Euc3BsaWNlKGIsMSkpfX1mdW5jdGlvbiB6KGEpe3ZhciBiPW8oe3doZW46ZnVuY3Rpb24oYil7cmV0dXJuIGImJnkodGhpcyksYj9iKGEpOnRoaXN9fSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSxmdW5jdGlvbigpe3JldHVybntzdGF0ZToicmVqZWN0ZWQiLHJlYXNvbjphfX0pO3JldHVybiB4KGIsYSksYn1mdW5jdGlvbiBBKGEpe3JldHVybiBvKHt3aGVuOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGdldDpmdW5jdGlvbihiKXtyZXR1cm4gYVtiXX0sc2V0OmZ1bmN0aW9uKGIsYyl7YVtiXT1jfSxkZWxldGU6ZnVuY3Rpb24oYil7ZGVsZXRlIGFbYl19LHBvc3Q6ZnVuY3Rpb24oYixjKXtyZXR1cm4gbnVsbD09PWJ8fHZvaWQgMD09PWI/YS5hcHBseSh2b2lkIDAsYyk6YVtiXS5hcHBseShhLGMpfSxhcHBseTpmdW5jdGlvbihiLGMpe3JldHVybiBhLmFwcGx5KGIsYyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gXyhhKX19LHZvaWQgMCxmdW5jdGlvbigpe3JldHVybntzdGF0ZToiZnVsZmlsbGVkIix2YWx1ZTphfX0pfWZ1bmN0aW9uIEIoYSl7dmFyIGI9bCgpO3JldHVybiBrLm5leHRUaWNrKGZ1bmN0aW9uKCl7dHJ5e2EudGhlbihiLnJlc29sdmUsYi5yZWplY3QsYi5ub3RpZnkpfWNhdGNoKGEpe2IucmVqZWN0KGEpfX0pLGIucHJvbWlzZX1mdW5jdGlvbiBDKGEpe3JldHVybiBvKHtpc0RlZjpmdW5jdGlvbigpe319LGZ1bmN0aW9uKGIsYyl7cmV0dXJuIEkoYSxiLGMpfSxmdW5jdGlvbigpe3JldHVybiBrKGEpLmluc3BlY3QoKX0pfWZ1bmN0aW9uIEQoYSxiLGMpe3JldHVybiBrKGEpLnNwcmVhZChiLGMpfWZ1bmN0aW9uIEUoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGIpe3ZhciBnO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3RvcEl0ZXJhdGlvbil7dHJ5e2c9ZFthXShiKX1jYXRjaChhKXtyZXR1cm4geihhKX1yZXR1cm4gZy5kb25lP2soZy52YWx1ZSk6cChnLnZhbHVlLGUsZil9dHJ5e2c9ZFthXShiKX1jYXRjaChhKXtyZXR1cm4gYyhhKT9rKGEudmFsdWUpOnooYSl9cmV0dXJuIHAoZyxlLGYpfXZhciBkPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9Yi5iaW5kKGIsIm5leHQiKSxmPWIuYmluZChiLCJ0aHJvdyIpO3JldHVybiBlKCl9fWZ1bmN0aW9uIEYoYSl7ay5kb25lKGsuYXN5bmMoYSkoKSl9ZnVuY3Rpb24gRyhhKXt0aHJvdyBuZXcgUShhKX1mdW5jdGlvbiBIKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBEKFt0aGlzLEooYXJndW1lbnRzKV0sZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5hcHBseShiLGMpfSl9fWZ1bmN0aW9uIEkoYSxiLGMpe3JldHVybiBrKGEpLmRpc3BhdGNoKGIsYyl9ZnVuY3Rpb24gSihhKXtyZXR1cm4gcChhLGZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1sKCk7cmV0dXJuIFcoYSxmdW5jdGlvbihkLGUsZil7dmFyIGc7cihlKSYmImZ1bGZpbGxlZCI9PT0oZz1lLmluc3BlY3QoKSkuc3RhdGU/YVtmXT1nLnZhbHVlOigrK2IscChlLGZ1bmN0aW9uKGQpe2FbZl09ZCwwPT09LS1iJiZjLnJlc29sdmUoYSl9LGMucmVqZWN0LGZ1bmN0aW9uKGEpe2Mubm90aWZ5KHtpbmRleDpmLHZhbHVlOmF9KX0pKX0sdm9pZCAwKSwwPT09YiYmYy5yZXNvbHZlKGEpLGMucHJvbWlzZX0pfWZ1bmN0aW9uIEsoYSl7cmV0dXJuIHAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT1ZKGEsaykscChKKFkoYSxmdW5jdGlvbihhKXtyZXR1cm4gcChhLFMsUyl9KSksZnVuY3Rpb24oKXtyZXR1cm4gYX0pfSl9ZnVuY3Rpb24gTChhKXtyZXR1cm4gayhhKS5hbGxTZXR0bGVkKCl9ZnVuY3Rpb24gTShhLGIpe3JldHVybiBrKGEpLnRoZW4odm9pZCAwLHZvaWQgMCxiKX1mdW5jdGlvbiBOKGEsYil7cmV0dXJuIGsoYSkubm9kZWlmeShiKX12YXIgTz0hMTt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGEpe089ISFhLnN0YWNrfXZhciBQLFEsUj1pKCksUz1mdW5jdGlvbigpe30sVD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmb3IoO2IubmV4dDspe2I9Yi5uZXh0O3ZhciBjPWIudGFzaztiLnRhc2s9dm9pZCAwO3ZhciBlPWIuZG9tYWluO2UmJihiLmRvbWFpbj12b2lkIDAsZS5lbnRlcigpKTt0cnl7YygpfWNhdGNoKGIpe2lmKGYpdGhyb3cgZSYmZS5leGl0KCksc2V0VGltZW91dChhLDApLGUmJmUuZW50ZXIoKSxiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBifSwwKX1lJiZlLmV4aXQoKX1kPSExfXZhciBiPXt0YXNrOnZvaWQgMCxuZXh0Om51bGx9LGM9YixkPSExLGU9dm9pZCAwLGY9ITE7aWYoVD1mdW5jdGlvbihhKXtjPWMubmV4dD17dGFzazphLGRvbWFpbjpmJiZwcm9jZXNzLmRvbWFpbixuZXh0Om51bGx9LGR8fChkPSEwLGUoKSl9LCJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmcHJvY2Vzcy5uZXh0VGljaylmPSEwLGU9ZnVuY3Rpb24oKXtwcm9jZXNzLm5leHRUaWNrKGEpfTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUpZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9zZXRJbW1lZGlhdGUuYmluZCh3aW5kb3csYSk6ZnVuY3Rpb24oKXtzZXRJbW1lZGlhdGUoYSl9O2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIGc9bmV3IE1lc3NhZ2VDaGFubmVsO2cucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7ZT1oLGcucG9ydDEub25tZXNzYWdlPWEsYSgpfTt2YXIgaD1mdW5jdGlvbigpe2cucG9ydDIucG9zdE1lc3NhZ2UoMCl9O2U9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEsMCksaCgpfX1lbHNlIGU9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEsMCl9O3JldHVybiBUfSgpLFU9RnVuY3Rpb24uY2FsbCxWPWEoQXJyYXkucHJvdG90eXBlLnNsaWNlKSxXPWEoQXJyYXkucHJvdG90eXBlLnJlZHVjZXx8ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDs7KXtpZihjIGluIHRoaXMpe2I9dGhpc1tjKytdO2JyZWFrfWlmKCsrYz49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfWZvcig7YzxkO2MrKyljIGluIHRoaXMmJihiPWEoYix0aGlzW2NdLGMpKTtyZXR1cm4gYn0pLFg9YShBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aDtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9KSxZPWEoQXJyYXkucHJvdG90eXBlLm1hcHx8ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9W107cmV0dXJuIFcoYyxmdW5jdGlvbihlLGYsZyl7ZC5wdXNoKGEuY2FsbChiLGYsZyxjKSl9LHZvaWQgMCksZH0pLFo9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31yZXR1cm4gYi5wcm90b3R5cGU9YSxuZXcgYn0sJD1hKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLF89T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGEpe3ZhciBiPVtdO2Zvcih2YXIgYyBpbiBhKSQoYSxjKSYmYi5wdXNoKGMpO3JldHVybiBifSxhYT1hKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO1E9InVuZGVmaW5lZCIhPXR5cGVvZiBSZXR1cm5WYWx1ZT9SZXR1cm5WYWx1ZTpmdW5jdGlvbihhKXt0aGlzLnZhbHVlPWF9O3ZhciBiYT0iRnJvbSBwcmV2aW91cyBldmVudDoiO2sucmVzb2x2ZT1rLGsubmV4dFRpY2s9VCxrLmxvbmdTdGFja1N1cHBvcnQ9ITEsIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiZwcm9jZXNzJiZwcm9jZXNzLmVudiYmcHJvY2Vzcy5lbnYuUV9ERUJVRyYmKGsubG9uZ1N0YWNrU3VwcG9ydD0hMCksay5kZWZlcj1sLGwucHJvdG90eXBlLm1ha2VOb2RlUmVzb2x2ZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbihiLGMpe2I/YS5yZWplY3QoYik6YXJndW1lbnRzLmxlbmd0aD4yP2EucmVzb2x2ZShWKGFyZ3VtZW50cywxKSk6YS5yZXNvbHZlKGMpfX0say5Qcm9taXNlPW0say5wcm9taXNlPW0sbS5yYWNlPW4sbS5hbGw9SixtLnJlamVjdD16LG0ucmVzb2x2ZT1rLGsucGFzc0J5Q29weT1mdW5jdGlvbihhKXtyZXR1cm4gYX0sby5wcm90b3R5cGUucGFzc0J5Q29weT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxrLmpvaW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS5qb2luKGIpfSxvLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGEpe3JldHVybiBrKFt0aGlzLGFdKS5zcHJlYWQoZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGpvaW46IG5vdCB0aGUgc2FtZTogIithKyIgIitiKX0pfSxrLnJhY2U9bixvLnByb3RvdHlwZS5yYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGhlbihrLnJhY2UpfSxrLm1ha2VQcm9taXNlPW8sby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBQcm9taXNlXSJ9LG8ucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGUoYil7dHJ5e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoYik6Yn1jYXRjaChhKXtyZXR1cm4geihhKX19ZnVuY3Rpb24gZihhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYil7ZChhLGgpO3RyeXtyZXR1cm4gYihhKX1jYXRjaChhKXtyZXR1cm4geihhKX19cmV0dXJuIHooYSl9ZnVuY3Rpb24gZyhhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYz9jKGEpOmF9dmFyIGg9dGhpcyxpPWwoKSxqPSExO3JldHVybiBrLm5leHRUaWNrKGZ1bmN0aW9uKCl7aC5wcm9taXNlRGlzcGF0Y2goZnVuY3Rpb24oYSl7anx8KGo9ITAsaS5yZXNvbHZlKGUoYSkpKX0sIndoZW4iLFtmdW5jdGlvbihhKXtqfHwoaj0hMCxpLnJlc29sdmUoZihhKSkpfV0pfSksaC5wcm9taXNlRGlzcGF0Y2godm9pZCAwLCJ3aGVuIixbdm9pZCAwLGZ1bmN0aW9uKGEpe3ZhciBiLGM9ITE7dHJ5e2I9ZyhhKX1jYXRjaChhKXtpZihjPSEwLCFrLm9uZXJyb3IpdGhyb3cgYTtrLm9uZXJyb3IoYSl9Y3x8aS5ub3RpZnkoYil9XSksaS5wcm9taXNlfSxrLnRhcD1mdW5jdGlvbihhLGIpe3JldHVybiBrKGEpLnRhcChiKX0sby5wcm90b3R5cGUudGFwPWZ1bmN0aW9uKGEpe3JldHVybiBhPWsoYSksdGhpcy50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBhLmZjYWxsKGIpLnRoZW5SZXNvbHZlKGIpfSl9LGsud2hlbj1wLG8ucHJvdG90eXBlLnRoZW5SZXNvbHZlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYX0pfSxrLnRoZW5SZXNvbHZlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkudGhlblJlc29sdmUoYil9LG8ucHJvdG90eXBlLnRoZW5SZWplY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbigpe3Rocm93IGF9KX0say50aGVuUmVqZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkudGhlblJlamVjdChiKX0say5uZWFyZXI9cSxrLmlzUHJvbWlzZT1yLGsuaXNQcm9taXNlQWxpa2U9cyxrLmlzUGVuZGluZz10LG8ucHJvdG90eXBlLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiJwZW5kaW5nIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfSxrLmlzRnVsZmlsbGVkPXUsby5wcm90b3R5cGUuaXNGdWxmaWxsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZnVsZmlsbGVkIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfSxrLmlzUmVqZWN0ZWQ9dixvLnByb3RvdHlwZS5pc1JlamVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuInJlamVjdGVkIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfTt2YXIgY2E9W10sZGE9W10sZWE9ITA7ay5yZXNldFVuaGFuZGxlZFJlamVjdGlvbnM9dyxrLmdldFVuaGFuZGxlZFJlYXNvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gY2Euc2xpY2UoKX0say5zdG9wVW5oYW5kbGVkUmVqZWN0aW9uVHJhY2tpbmc9ZnVuY3Rpb24oKXt3KCksZWE9ITF9LHcoKSxrLnJlamVjdD16LGsuZnVsZmlsbD1BLGsubWFzdGVyPUMsay5zcHJlYWQ9RCxvLnByb3RvdHlwZS5zcHJlYWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hbGwoKS50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBhLmFwcGx5KHZvaWQgMCxiKX0sYil9LGsuYXN5bmM9RSxrLnNwYXduPUYsay5yZXR1cm49RyxrLnByb21pc2VkPUgsay5kaXNwYXRjaD1JLG8ucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWwoKTtyZXR1cm4gay5uZXh0VGljayhmdW5jdGlvbigpe2MucHJvbWlzZURpc3BhdGNoKGQucmVzb2x2ZSxhLGIpfSksZC5wcm9taXNlfSxrLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiBrKGEpLmRpc3BhdGNoKCJnZXQiLFtiXSl9LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgiZ2V0IixbYV0pfSxrLnNldD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGsoYSkuZGlzcGF0Y2goInNldCIsW2IsY10pfSxvLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgic2V0IixbYSxiXSl9LGsuZGVsPWsuZGVsZXRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImRlbGV0ZSIsW2JdKX0sby5wcm90b3R5cGUuZGVsPW8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgiZGVsZXRlIixbYV0pfSxrLm1hcHBseT1rLnBvc3Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrKGEpLmRpc3BhdGNoKCJwb3N0IixbYixjXSl9LG8ucHJvdG90eXBlLm1hcHBseT1vLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLGJdKX0say5zZW5kPWsubWNhbGw9ay5pbnZva2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS5kaXNwYXRjaCgicG9zdCIsW2IsVihhcmd1bWVudHMsMildKX0sby5wcm90b3R5cGUuc2VuZD1vLnByb3RvdHlwZS5tY2FsbD1vLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLFYoYXJndW1lbnRzLDEpXSl9LGsuZmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLGJdKX0sby5wcm90b3R5cGUuZmFwcGx5PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRpc3BhdGNoKCJhcHBseSIsW3ZvaWQgMCxhXSl9LGsudHJ5PWsuZmNhbGw9ZnVuY3Rpb24oYSl7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLFYoYXJndW1lbnRzLDEpXSl9LG8ucHJvdG90eXBlLmZjYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLFYoYXJndW1lbnRzKV0pfSxrLmZiaW5kPWZ1bmN0aW9uKGEpe3ZhciBiPWsoYSksYz1WKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYi5kaXNwYXRjaCgiYXBwbHkiLFt0aGlzLGMuY29uY2F0KFYoYXJndW1lbnRzKSldKX19LG8ucHJvdG90eXBlLmZiaW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPVYoYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5kaXNwYXRjaCgiYXBwbHkiLFt0aGlzLGIuY29uY2F0KFYoYXJndW1lbnRzKSldKX19LGsua2V5cz1mdW5jdGlvbihhKXtyZXR1cm4gayhhKS5kaXNwYXRjaCgia2V5cyIsW10pfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goImtleXMiLFtdKX0say5hbGw9SixvLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzKX0say5hbGxSZXNvbHZlZD1qKEssImFsbFJlc29sdmVkIiwiYWxsU2V0dGxlZCIpLG8ucHJvdG90eXBlLmFsbFJlc29sdmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcyl9LGsuYWxsU2V0dGxlZD1MLG8ucHJvdG90eXBlLmFsbFNldHRsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBKKFkoYSxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIGEuaW5zcGVjdCgpfXJldHVybiBhPWsoYSksYS50aGVuKGIsYil9KSl9KX0say5mYWlsPWsuY2F0Y2g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS50aGVuKHZvaWQgMCxiKX0sby5wcm90b3R5cGUuZmFpbD1vLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxhKX0say5wcm9ncmVzcz1NLG8ucHJvdG90eXBlLnByb2dyZXNzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHZvaWQgMCxhKX0say5maW49ay5maW5hbGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZmluYWxseShiKX0sby5wcm90b3R5cGUuZmluPW8ucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9ayhhKSx0aGlzLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGEuZmNhbGwoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KX0sZnVuY3Rpb24oYil7cmV0dXJuIGEuZmNhbGwoKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgYn0pfSl9LGsuZG9uZT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gayhhKS5kb25lKGIsYyxkKX0sby5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbihhLGIsYyl7dmFyIGU9ZnVuY3Rpb24oYSl7ay5uZXh0VGljayhmdW5jdGlvbigpe2lmKGQoYSxmKSwhay5vbmVycm9yKXRocm93IGE7ay5vbmVycm9yKGEpfSl9LGY9YXx8Ynx8Yz90aGlzLnRoZW4oYSxiLGMpOnRoaXM7Im9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiZwcm9jZXNzJiZwcm9jZXNzLmRvbWFpbiYmKGU9cHJvY2Vzcy5kb21haW4uYmluZChlKSksZi50aGVuKHZvaWQgMCxlKX0say50aW1lb3V0PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gayhhKS50aW1lb3V0KGIsYyl9LG8ucHJvdG90eXBlLnRpbWVvdXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1sKCksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmInN0cmluZyIhPXR5cGVvZiBifHwoYj1uZXcgRXJyb3IoYnx8IlRpbWVkIG91dCBhZnRlciAiK2ErIiBtcyIpLGIuY29kZT0iRVRJTUVET1VUIiksYy5yZWplY3QoYil9LGEpO3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KGQpLGMucmVzb2x2ZShhKX0sZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KGQpLGMucmVqZWN0KGEpfSxjLm5vdGlmeSksYy5wcm9taXNlfSxrLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWImJihiPWEsYT12b2lkIDApLGsoYSkuZGVsYXkoYil9LG8ucHJvdG90eXBlLmRlbGF5PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9bCgpO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZXNvbHZlKGIpfSxhKSxjLnByb21pc2V9KX0say5uZmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkubmZhcHBseShiKX0sby5wcm90b3R5cGUubmZhcHBseT1mdW5jdGlvbihhKXt2YXIgYj1sKCksYz1WKGEpO3JldHVybiBjLnB1c2goYi5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZmFwcGx5KGMpLmZhaWwoYi5yZWplY3QpLGIucHJvbWlzZX0say5uZmNhbGw9ZnVuY3Rpb24oYSl7dmFyIGI9Vihhcmd1bWVudHMsMSk7cmV0dXJuIGsoYSkubmZhcHBseShiKX0sby5wcm90b3R5cGUubmZjYWxsPWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMpLGI9bCgpO3JldHVybiBhLnB1c2goYi5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZmFwcGx5KGEpLmZhaWwoYi5yZWplY3QpLGIucHJvbWlzZX0say5uZmJpbmQ9ay5kZW5vZGVpZnk9ZnVuY3Rpb24oYSl7dmFyIGI9Vihhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9Yi5jb25jYXQoVihhcmd1bWVudHMpKSxkPWwoKTtyZXR1cm4gYy5wdXNoKGQubWFrZU5vZGVSZXNvbHZlcigpKSxrKGEpLmZhcHBseShjKS5mYWlsKGQucmVqZWN0KSxkLnByb21pc2V9fSxvLnByb3RvdHlwZS5uZmJpbmQ9by5wcm90b3R5cGUuZGVub2RlaWZ5PWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMpO3JldHVybiBhLnVuc2hpZnQodGhpcyksay5kZW5vZGVpZnkuYXBwbHkodm9pZCAwLGEpfSxrLm5iaW5kPWZ1bmN0aW9uKGEsYil7dmFyIGM9Vihhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX12YXIgZT1jLmNvbmNhdChWKGFyZ3VtZW50cykpLGY9bCgpO3JldHVybiBlLnB1c2goZi5tYWtlTm9kZVJlc29sdmVyKCkpLGsoZCkuZmFwcGx5KGUpLmZhaWwoZi5yZWplY3QpLGYucHJvbWlzZX19LG8ucHJvdG90eXBlLm5iaW5kPWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMsMCk7cmV0dXJuIGEudW5zaGlmdCh0aGlzKSxrLm5iaW5kLmFwcGx5KHZvaWQgMCxhKX0say5ubWFwcGx5PWsubnBvc3Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrKGEpLm5wb3N0KGIsYyl9LG8ucHJvdG90eXBlLm5tYXBwbHk9by5wcm90b3R5cGUubnBvc3Q9ZnVuY3Rpb24oYSxiKXt2YXIgYz1WKGJ8fFtdKSxkPWwoKTtyZXR1cm4gYy5wdXNoKGQubWFrZU5vZGVSZXNvbHZlcigpKSx0aGlzLmRpc3BhdGNoKCJwb3N0IixbYSxjXSkuZmFpbChkLnJlamVjdCksZC5wcm9taXNlfSxrLm5zZW5kPWsubm1jYWxsPWsubmludm9rZT1mdW5jdGlvbihhLGIpe3ZhciBjPVYoYXJndW1lbnRzLDIpLGQ9bCgpO3JldHVybiBjLnB1c2goZC5tYWtlTm9kZVJlc29sdmVyKCkpLGsoYSkuZGlzcGF0Y2goInBvc3QiLFtiLGNdKS5mYWlsKGQucmVqZWN0KSxkLnByb21pc2V9LG8ucHJvdG90eXBlLm5zZW5kPW8ucHJvdG90eXBlLm5tY2FsbD1vLnByb3RvdHlwZS5uaW52b2tlPWZ1bmN0aW9uKGEpe3ZhciBiPVYoYXJndW1lbnRzLDEpLGM9bCgpO3JldHVybiBiLnB1c2goYy5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLGJdKS5mYWlsKGMucmVqZWN0KSxjLnByb21pc2V9LGsubm9kZWlmeT1OLG8ucHJvdG90eXBlLm5vZGVpZnk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/KHRoaXMudGhlbihmdW5jdGlvbihiKXtrLm5leHRUaWNrKGZ1bmN0aW9uKCl7YShudWxsLGIpfSl9LGZ1bmN0aW9uKGIpe2submV4dFRpY2soZnVuY3Rpb24oKXthKGIpfSl9KSx2b2lkIDApOnRoaXN9O3ZhciBmYT1pKCk7cmV0dXJuIGt9KTsKCi8qQ2xvdWRXYWxsIDEuMi4xIGxpYnJhcnkgZnVuY3Rpb25zLCB0cmltbWVkKi8KImN3ImluIHdpbmRvd3x8KHdpbmRvdy5jdz17fSksY3cubGlifHwod2luZG93LmN3LmxpYj17fSksZnVuY3Rpb24oeCl7dmFyIGEsYj0iY3cubGliIDEuMi4xIixjPXtub3RlczoiI2N3LW5vdGVzIixub3Rlc0RlbGF5OjNlMyxkZWZhdWx0SnBlZ1F1YWxpdHk6Ljk1LHNjcm9sbEFuaW1hdGU6MjAwfSxkPU9iamVjdC5pc0FycmF5LGU9KE9iamVjdC5pc0Jvb2xlYW4sT2JqZWN0LmlzU3RyaW5nKSxmPU9iamVjdC5pc09iamVjdCxnPU9iamVjdC5pc051bWJlcixoPShPYmplY3QuaXNSZWdFeHAsT2JqZWN0LmlzRnVuY3Rpb24pOyQuZXh0ZW5kKHgsYT17Y29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHZlcnNpb246ZnVuY3Rpb24oKXtyZXR1cm4gYn0sc2Nyb2xsOmZ1bmN0aW9uKHgpe3ZhciBhPSQoImh0bWwsIGJvZHkiKTtpZihudWxsPT14KXJldHVybiBhLnNjcm9sbFRvcCgpO2EuYW5pbWF0ZSh7c2Nyb2xsVG9wOnh9LGMuc2Nyb2xsQW5pbWF0ZSl9LG5vdGU6ZnVuY3Rpb24oeCxhLGIpe3ZhciBkPWF8fCIiO3JldHVybiAkKCc8ZGl2IGNsYXNzPSInK2QrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Jyt4KyI8L2Rpdj4iKS5wcmVwZW5kVG8oJChjLm5vdGVzKSkuc2xpZGVEb3duKDEwMCkuZGVsYXkoYnx8Yy5ub3Rlc0RlbGF5KS5mYWRlT3V0KDcwMCxmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCl9KSxkfSxnZXRyZWY6JC5teS5mLmdldHJlZixqc29uOiQubXkuZi50b2pzb24sdW5qc29uOiQubXkuZi51bmpzb24sc2RibTokLm15LmYuc2RibUNvZGUsanMydHh0OmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gJC5teS5mLnRvanNvbih4LHt0YWJDaGFyczphLG1heFdpZHRoOmcoYik/Yjo4MCxhbGxvd0pTOiEwfSl9LG1hc2s6JC5teS5mLm1hc2ssdW5tYXNrOiQubXkuZi51bm1hc2ssYmFzZTY0OiQubXkuZi5iYXNlNjQsYTJvOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz17fTtpZighT2JqZWN0LmlzQXJyYXkoeCkpcmV0dXJuIGM7Zm9yKHZhciBkPTA7ZDx4Lmxlbmd0aDtkKyspYj14W2RdLChhfHxudWxsIT1iJiYhMSE9PWImJiIiIT09YikmJihjW2JdfHwoY1tiXT0wKSxjW2JdKz0xKTtyZXR1cm4gY30sZHJ5OmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz17fTtmb3IoYiBpbiB4KSF4Lmhhc093blByb3BlcnR5KGIpfHwiXyI9PT1iLnN1YnN0cigwLDEpJiYoYXx8Il9pZCIhPT1iJiYiX3JldiIhPT1iKSYmIl9hdHRhY2htZW50cyIhPT1ifHwoY1tiXT14W2JdKTtyZXR1cm4gY30sZnVzZTpmdW5jdGlvbih4LGEpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJue307aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYXJndW1lbnRzWzBdO2Zvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspT2JqZWN0Lm1lcmdlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbYl0sITEsZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsPT1iP2E6ZChiKT9PYmplY3QuY2xvbmUoYiwhMCk6ZihiKT9PYmplY3QubWVyZ2UoYSxiLCExKTpifSk7cmV0dXJuIGFyZ3VtZW50c1swXX0sYmxvYjJiYXNlNjQ6JC5teS5mLmJsb2IyYmFzZTY0LGJhc2U2NDJibG9iOiQubXkuZi5iYXNlNjQyYmxvYixkYXRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YXx8InNob3J0IixjPSIiLGQ9RGF0ZS5jcmVhdGUoeCwiZW4iKSxlPWZ1bmN0aW9uKHgpe3JldHVybiBkLmZvcm1hdCh4LCJlbiIpfSxmPXtzaG9ydDoie01vbn0iLGxvbmc6IntNb250aH0ifTtyZXR1cm4gZC5pc1ZhbGlkKCk/KCJ0aW55Ij09Yj9jPWQuaXNUaGlzWWVhcigpP2QuaXNUb2RheSgpPy8oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XS8udGVzdChTdHJpbmcoeCkpfHwibnVtYmVyIj09JC50eXBlKHgpP2UoIntIfTp7bW19Iik6IlRvZGF5IjpkLmlzWWVzdGVyZGF5KCk/IkRheSBhZ28iOmQuaXNUb21vcnJvdygpPyJUb21vcnJvdyI6ZSgie01vbn0ge2R9IiwiZW4iKTplKCJ7bW9ufSd7eXl9IikuY2FwaXRhbGl6ZSgpOigic2hvcnQiPT1ifHwibG9uZyI9PWI/KGM9ZC5pc1llc3RlcmRheSgpPyJEYXkgYWdvIjpkLmlzVG9kYXkoKT8iVG9kYXkiOmQuaXNUb21vcnJvdygpPyJUb21vcnJvdyI6ZShmW2JdKyIge2R9IiwiZW4iKSxjKz1kLmlzVGhpc1llYXIoKT8iIjplKCIgJ3t5eX0iKSk6Yz1lKCJ7TW9udGh9IHtkfSwge3l5eXl9IiksKC8oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XS8udGVzdChTdHJpbmcoeCkpfHwibnVtYmVyIj09JC50eXBlKHgpKSYmKGMrPWUoIiwge0h9OnttbX0iKSkpLGMpOiLigJQifSxjcmMyOmZ1bmN0aW9uKCl7dmFyIHg9T2JqZWN0LmtleXMsYT0kLnR5cGU7ZnVuY3Rpb24gYih4KXtmb3IodmFyIGE9MCxiPTA7Yjx4Lmxlbmd0aDtiKyspYT14LmNoYXJDb2RlQXQoYikrKGE8PDYpKyhhPDwxNiktYTtyZXR1cm4oMWUxMSthKS50b1N0cmluZygzNil9ZnVuY3Rpb24gYyhkKXt2YXIgZSxmLGcsaD1hKGQpO2lmKCJhcnJheSI9PWh8fCJvYmplY3QiPT1oKXtmb3IoZSBpbiBmPXgoZCksImFycmF5IiE9aCYmZi5zb3J0KCksZz0iIixmKWcrPSIvLy8iK2ZbZV0rIi8iK2MoZFtmW2VdXSkrIi8vLyI7cmV0dXJuIGIoIi8vLyIraCsiLyIrZyl9cmV0dXJuIGIoImZ1bmN0aW9uIj09aHx8InJlZ2V4cCI9PWg/SlNPTi5zdHJpbmdpZnkoZC50b1N0cmluZygpKTpKU09OLnN0cmluZ2lmeShkKSl9cmV0dXJuIGN9KCkscmFuZDpmdW5jdGlvbih4KXtmb3IodmFyIGI9MHwoK3h8fDgpLGM9YjwxPzE6Yj4yNTY/MjU2OmIsZD1jPj4zLGU9IiIsZj0wO2Y8ZDtmKyspZSs9YS5yYW5kNCgpO3JldHVybiBlLnN1YnN0cigwLGMpfSxyYW5kNDpmdW5jdGlvbigpe3JldHVybigiMDAwIitOdW1iZXIucmFuZG9tKDAsMTY3OTYxNSkudG9TdHJpbmcoMzYpKS5zdWJzdHIoLTQpfSxyYW5kODpmdW5jdGlvbigpe3JldHVybiBhLnJhbmQ0KCkrYS5yYW5kNCgpfX0pO3ZhciBpPXtnZXRQaXhlbHM6ZnVuY3Rpb24oeCl7dmFyIGE9aS5nZXRDYW52YXMoeC53aWR0aCx4LmhlaWdodCksYj1hLmdldENvbnRleHQoIjJkIik7cmV0dXJuIGIuZHJhd0ltYWdlKHgsMCwwLHgud2lkdGgseC5oZWlnaHQpLGIuZ2V0SW1hZ2VEYXRhKDAsMCxhLndpZHRoLGEuaGVpZ2h0KX0sZ2V0Q2FudmFzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIGIud2lkdGg9eCxiLmhlaWdodD1hLGJ9LGZpbHRlckltYWdlOmZ1bmN0aW9uKHgsYSxiKXtmb3IodmFyIGM9W2kuZ2V0UGl4ZWxzKGEpXSxkPTI7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyljLnB1c2goYXJndW1lbnRzW2RdKTt2YXIgZT1pLmdldENhbnZhcyhhLndpZHRoLGEuaGVpZ2h0KTtyZXR1cm4gZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YSh4LmFwcGx5KG51bGwsYyksMCwwKSxlfSxncmF5c2NhbGU6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9eC5kYXRhLGM9MDtjPGIubGVuZ3RoO2MrPTQpe3ZhciBkPS4yMTI2KmJbY10rLjcxNTIqYltjKzFdKy4wNzIyKmJbYysyXTtiW2NdPWJbYysxXT1iW2MrMl09MHxkfXJldHVybiB4fX07aS50bXBDYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksaS50bXBDdHg9aS50bXBDYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxpLmNyZWF0ZUltYWdlRGF0YT1mdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLnRtcEN0eC5jcmVhdGVJbWFnZURhdGEoeCxhKX0saS5jb252b2x1dGU9ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz1NYXRoLnJvdW5kKE1hdGguc3FydChhLmxlbmd0aCkpLGQ9TWF0aC5mbG9vcihjLzIpLGU9eC5kYXRhLGY9eC53aWR0aCxnPXguaGVpZ2h0LGg9ZixqPWcsaz1pLmNyZWF0ZUltYWdlRGF0YShoLGopLGw9ay5kYXRhLG09Yj8xOjAsbj0wO248ajtuKyspZm9yKHZhciBvPTA7bzxoO28rKyl7Zm9yKHZhciBwPW4scT1vLHI9NCoobipoK28pLHM9MCx0PTAsdT0wLHY9MCx3PTA7dzxjO3crKylmb3IodmFyIHk9MDt5PGM7eSsrKXt2YXIgej1wK3ctZCxBPXEreS1kO2lmKHo+PTAmJno8ZyYmQT49MCYmQTxmKXt2YXIgQj00Kih6KmYrQSksQz1hW3cqYyt5XTtzKz1lW0JdKkMsdCs9ZVtCKzFdKkMsdSs9ZVtCKzJdKkMsdis9ZVtCKzNdKkN9fWxbcl09cyxsW3IrMV09dCxsW3IrMl09dSxsW3IrM109dittKigyNTUtdil9cmV0dXJuIGt9O2Zvcih2YXIgaj1bXSxrPTA7azwyNTY7aysrKWoucHVzaChrKTt4LmltYWdlPWZ1bmN0aW9uKHgsYSl7dmFyIGIsZCxmPXgsZz17Zm9ybWF0OiIiLGNhbnZhczpmdW5jdGlvbigpe3JldHVybiBkfSx3aWR0aDpmdW5jdGlvbigpe3JldHVybiBkLndpZHRofSxoZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5oZWlnaHR9LGN0eDpmdW5jdGlvbigpe3JldHVybiBkLmdldENvbnRleHQoIjJkIil9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gZC5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLDAsZC53aWR0aCxkLmhlaWdodCl9LGpwZWc6ZnVuY3Rpb24oeCxhKXt2YXIgYj1kLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsKHBhcnNlRmxvYXQoeCl8fGMuZGVmYXVsdEpwZWdRdWFsaXR5KS5jbGFtcCguMSwuOTk5OSkpO3JldHVybiBhfHxnLmRlc3Ryb3koKSxifSxwbmc6ZnVuY3Rpb24oeCl7dmFyIGE9ZC50b0RhdGFVUkwoImltYWdlL3BuZyIpO3JldHVybiB4fHxnLmRlc3Ryb3koKSxhfSxkZXN0cm95OmZ1bmN0aW9uKCl7ZD1udWxsfSxyZXNhbXBsZTpmdW5jdGlvbih4LGEpe2lmKGlzTmFOKHgpKXRocm93IkludmFsaWQgd2lkdGggdG8gcmVzYW1wbGUgaW1hZ2UiO3ZhciBiLGMsZT1kLndpZHRoLGY9ZC5oZWlnaHQsaD1wYXJzZUludCh4fHwxKS5jbGFtcCgxLDUqZSksaj1wYXJzZUludChhfHxNYXRoLnJvdW5kKGgqZi9lKSkuY2xhbXAoMSw1KmYpO3JldHVybiBhJiYheCYmKGg9cGFyc2VJbnQoTWF0aC5yb3VuZChqKmUvZikpLmNsYW1wKDEsNSplKSksYz1pLmdldENhbnZhcygwfGgsMHxqKSxoPGUvMj8oKGI9aS5nZXRDYW52YXMoMipofDAsMipqfDApKS5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShkLDAsMCwwfGUsMHxmLDAsMCwyKmh8MCwyKmp8MCksYy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShiLDAsMCwyKmh8MCwyKmp8MCwwLDAsMHxoLDB8aikpOmMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoZCwwLDAsMHxlLDB8ZiwwLDAsMHxoLDB8aiksZD1jLGd9LHNoYXJwZW46ZnVuY3Rpb24oeCl7dmFyIGE9KHBhcnNlRmxvYXQoeCl8fDEpLmNsYW1wKC4wMDEsMTAwKSxiPS0uMDMqYXx8LS4wMyxjPS0uMSphfHwtLjEsZT0xLTQqKGIrYyk7cmV0dXJuIGQ9aS5maWx0ZXJJbWFnZShpLmNvbnZvbHV0ZSxkLFtiLGMsYixjLGUsYyxiLGMsYl0pLGd9LGdyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZD1pLmZpbHRlckltYWdlKGkuZ3JheXNjYWxlLGQpLGd9LGNvbnZvbHV0ZTpmdW5jdGlvbih4KXtyZXR1cm4gZD1pLmZpbHRlckltYWdlKGkuY29udm9sdXRlLGQseCksZ30sbWFwOmZ1bmN0aW9uKCl7Zm9yKHZhciB4LGE9W2ouc2xpY2UoMCldLGI9MCxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoJiZjPDM7YysrKWlmKGgoYXJndW1lbnRzW2NdKSl7YVtiXT1bXSx4PWFyZ3VtZW50c1tjXTt0cnl7Zm9yKHZhciBlPTA7ZTwyNTY7ZSsrKWFbY11bZV09MHwoMjU1Kih4KGUvMjU1KXx8MCkpLmNsYW1wKDAsMjU1KTtiKz0xfWNhdGNoKHgpe2FbYl09ai5zbGljZSgwKX19MT09PWEubGVuZ3RoJiYoYVsyXT1hWzFdPWFbMF0pLDI9PT1hLmxlbmd0aCYmKGFbMl09YVsxXSk7dmFyIGY9ZC5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLDAsZC53aWR0aCxkLmhlaWdodCksaT1mLmRhdGE7Zm9yKGM9MDtjPGkubGVuZ3RoO2MrPTQpaVtjXT1hWzBdW2lbY11dLGlbYysxXT1hWzFdW2lbYysxXV0saVtjKzJdPWFbMl1baVtjKzJdXTtyZXR1cm4gZC5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShmLDAsMCksZ30sYnJpZ2h0bmVzczpmdW5jdGlvbih4KXsocGFyc2VGbG9hdCh4KXx8MSkuY2xhbXAoLjEsMTApO3ZhciBhPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLDEveCl9O3JldHVybiBnLm1hcChhKSxnfSxjb250cmFzdDpmdW5jdGlvbih4KXsocGFyc2VGbG9hdCh4KXx8MSkuY2xhbXAoLjEsMTApO3ZhciBhPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGguYWJzKDIqKGEtLjUpKSxjPU1hdGgucG93KGIsMS94KS8yO3JldHVybiBhPj0uNT9jKy41OmEtYytiLzJ9O3JldHVybiBnLm1hcChhKSxnfX07aWYoZShmKT8vXmRhdGE6aW1hZ2VcLyhqcGV8cG5nKSQvLnRlc3QoZi5zdWJzdHIoMCwxNCkpJiYoKGI9bmV3IEltYWdlKS5zcmM9Zik6Im9iamVjdCI9PXR5cGVvZiBmJiYoZi5qcXVlcnkmJihmPWZbMF0pLCJub2RlTmFtZSJpbiBmJiYvXihJTUd8Q0FOVkFTKSQvLnRlc3QoZi5ub2RlTmFtZSkmJihiPWYpKSxiKXt2YXIgaz0oZD1pLmdldENhbnZhcyhiLndpZHRoLGIuaGVpZ2h0KSkuZ2V0Q29udGV4dCgiMmQiKTtlKGEpJiYoay5yZWN0KDAsMCxiLndpZHRoLGIuaGVpZ2h0KSxrLmZpbGxTdHlsZT1hLGsuZmlsbCgpKSxrLmRyYXdJbWFnZShiLDAsMCxiLndpZHRoLGIuaGVpZ2h0KX1yZXR1cm4gZD9nOm51bGx9fShjdy5saWIpOw==" }, "lib/plugins.js": { "content_type": "text/javascript", "data": "LyoKKiBQaG90b24gMS4yNiBwbHVnaW5zIHNldAoqIC0gJC51aSAxLjExLjQsIG9ubHkgU29ydGFibGUsIEF1dG9jb21wbGV0ZSBhbmQgVG9vbHRpcAoqIOKAlCAkLnVpIHRvdWNoIHB1bmNoIDAuMi4yCiog4oCTIHNlbGVjdDIgMy41LjQKKiDigJQgQ29kZU1pcnJvciA1LjkuMSArIGpzLCBlcmxhbmcsIGh0bWxtaXhlZCBhbmQgY3NzIGJ1bmRsZXMKKiDigJQgSkNyb3AgMC45Ciog4oCTIG5pY2VzY3JvbGwgMy42LjgKKiDigJMgalF1ZXJ5IGxpc3QgYnVpbGRlciAwLjUKKiDigJMgaG90a2V5cyAzLjcuMwoqLwoKLyohIGpRdWVyeSBVSSAtIHYxLjExLjQgLSAyMDE3LTA5LTA4CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmpzLCB3aWRnZXQuanMsIG1vdXNlLmpzLCBwb3NpdGlvbi5qcywgZHJhZ2dhYmxlLmpzLCBzb3J0YWJsZS5qcywgYXV0b2NvbXBsZXRlLmpzLCBtZW51LmpzLCB0b29sdGlwLmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sdCk6dChqUXVlcnkpfSkoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHMpe3ZhciBuLG8sYSxyPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPWUucGFyZW50Tm9kZSxvPW4ubmFtZSxlLmhyZWYmJm8mJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhhPXQoImltZ1t1c2VtYXA9JyMiK28rIiddIilbMF0sISFhJiZpKGEpKTohMSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/IWUuZGlzYWJsZWQ6ImEiPT09cj9lLmhyZWZ8fHM6cykmJmkoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdC5leHByLmZpbHRlcnMudmlzaWJsZShlKSYmIXQoZSkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iaGlkZGVuIj09PXQuY3NzKHRoaXMsInZpc2liaWxpdHkiKX0pLmxlbmd0aH10LnVpPXQudWl8fHt9LHQuZXh0ZW5kKHQudWkse3ZlcnNpb246IjEuMTEuNCIsa2V5Q29kZTp7QkFDS1NQQUNFOjgsQ09NTUE6MTg4LERFTEVURTo0NixET1dOOjQwLEVORDozNSxFTlRFUjoxMyxFU0NBUEU6MjcsSE9NRTozNixMRUZUOjM3LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fSksdC5mbi5leHRlbmQoe3Njcm9sbFBhcmVudDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLmNzcygicG9zaXRpb24iKSxzPSJhYnNvbHV0ZSI9PT1pLG49ZT8vKGF1dG98c2Nyb2xsfGhpZGRlbikvOi8oYXV0b3xzY3JvbGwpLyxvPXRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHMmJiJzdGF0aWMiPT09ZS5jc3MoInBvc2l0aW9uIik/ITE6bi50ZXN0KGUuY3NzKCJvdmVyZmxvdyIpK2UuY3NzKCJvdmVyZmxvdy15IikrZS5jc3MoIm92ZXJmbG93LXgiKSl9KS5lcSgwKTtyZXR1cm4iZml4ZWQiIT09aSYmby5sZW5ndGg/bzp0KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpfSx1bmlxdWVJZDpmdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuaWR8fCh0aGlzLmlkPSJ1aS1pZC0iKyArK3QpfSl9fSgpLHJlbW92ZVVuaXF1ZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpey9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSYmdCh0aGlzKS5yZW1vdmVBdHRyKCJpZCIpfSl9fSksdC5leHRlbmQodC5leHByWyI6Il0se2RhdGE6dC5leHByLmNyZWF0ZVBzZXVkbz90LmV4cHIuY3JlYXRlUHNldWRvKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4hIXQuZGF0YShpLGUpfX0pOmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4hIXQuZGF0YShlLHNbM10pfSxmb2N1c2FibGU6ZnVuY3Rpb24oaSl7cmV0dXJuIGUoaSwhaXNOYU4odC5hdHRyKGksInRhYmluZGV4IikpKX0sdGFiYmFibGU6ZnVuY3Rpb24oaSl7dmFyIHM9dC5hdHRyKGksInRhYmluZGV4Iiksbj1pc05hTihzKTtyZXR1cm4obnx8cz49MCkmJmUoaSwhbil9fSksdCgiPGE+Iikub3V0ZXJXaWR0aCgxKS5qcXVlcnl8fHQuZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKGUsaSxzLG8pe3JldHVybiB0LmVhY2gobixmdW5jdGlvbigpe2ktPXBhcnNlRmxvYXQodC5jc3MoZSwicGFkZGluZyIrdGhpcykpfHwwLHMmJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDApLG8mJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsIm1hcmdpbiIrdGhpcykpfHwwKX0pLGl9dmFyIG49IldpZHRoIj09PWk/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLG89aS50b0xvd2VyQ2FzZSgpLGE9e2lubmVyV2lkdGg6dC5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OnQuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDp0LmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6dC5mbi5vdXRlckhlaWdodH07dC5mblsiaW5uZXIiK2ldPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2FbImlubmVyIitpXS5jYWxsKHRoaXMpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUpKyJweCIpfSl9LHQuZm5bIm91dGVyIitpXT1mdW5jdGlvbihlLG4pe3JldHVybiJudW1iZXIiIT10eXBlb2YgZT9hWyJvdXRlciIraV0uY2FsbCh0aGlzLGUpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUsITAsbikrInB4Iil9KX19KSx0LmZuLmFkZEJhY2t8fCh0LmZuLmFkZEJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXQ/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIodCkpfSksdCgiPGE+IikuZGF0YSgiYS1iIiwiYSIpLnJlbW92ZURhdGEoImEtYiIpLmRhdGEoImEtYiIpJiYodC5mbi5yZW1vdmVEYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lLmNhbGwodGhpcyx0LmNhbWVsQ2FzZShpKSk6ZS5jYWxsKHRoaXMpfX0odC5mbi5yZW1vdmVEYXRhKSksdC51aS5pZT0hIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLHQuZm4uZXh0ZW5kKHtmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSxzKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGk/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dChlKS5mb2N1cygpLHMmJnMuY2FsbChlKX0saSl9KTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KHQuZm4uZm9jdXMpLGRpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD0ib25zZWxlY3RzdGFydCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKT8ic2VsZWN0c3RhcnQiOiJtb3VzZWRvd24iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpbmQodCsiLnVpLWRpc2FibGVTZWxlY3Rpb24iLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0pfX0oKSxlbmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmJpbmQoIi51aS1kaXNhYmxlU2VsZWN0aW9uIil9LHpJbmRleDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT1lKXJldHVybiB0aGlzLmNzcygiekluZGV4IixlKTtpZih0aGlzLmxlbmd0aClmb3IodmFyIGkscyxuPXQodGhpc1swXSk7bi5sZW5ndGgmJm5bMF0hPT1kb2N1bWVudDspe2lmKGk9bi5jc3MoInBvc2l0aW9uIiksKCJhYnNvbHV0ZSI9PT1pfHwicmVsYXRpdmUiPT09aXx8ImZpeGVkIj09PWkpJiYocz1wYXJzZUludChuLmNzcygiekluZGV4IiksMTApLCFpc05hTihzKSYmMCE9PXMpKXJldHVybiBzO249bi5wYXJlbnQoKX1yZXR1cm4gMH19KSx0LnVpLnBsdWdpbj17YWRkOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvPXQudWlbZV0ucHJvdG90eXBlO2ZvcihuIGluIHMpby5wbHVnaW5zW25dPW8ucGx1Z2luc1tuXXx8W10sby5wbHVnaW5zW25dLnB1c2goW2ksc1tuXV0pfSxjYWxsOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBuLG89dC5wbHVnaW5zW2VdO2lmKG8mJihzfHx0LmVsZW1lbnRbMF0ucGFyZW50Tm9kZSYmMTEhPT10LmVsZW1lbnRbMF0ucGFyZW50Tm9kZS5ub2RlVHlwZSkpZm9yKG49MDtvLmxlbmd0aD5uO24rKyl0Lm9wdGlvbnNbb1tuXVswXV0mJm9bbl1bMV0uYXBwbHkodC5lbGVtZW50LGkpfX07dmFyIHM9MCxuPUFycmF5LnByb3RvdHlwZS5zbGljZTt0LmNsZWFuRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIHMsbixvO2ZvcihvPTA7bnVsbCE9KG49aVtvXSk7bysrKXRyeXtzPXQuX2RhdGEobiwiZXZlbnRzIikscyYmcy5yZW1vdmUmJnQobikudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfWNhdGNoKGEpe31lKGkpfX0odC5jbGVhbkRhdGEpLHQud2lkZ2V0PWZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvLGEscixsPXt9LGg9ZS5zcGxpdCgiLiIpWzBdO3JldHVybiBlPWUuc3BsaXQoIi4iKVsxXSxuPWgrIi0iK2Usc3x8KHM9aSxpPXQuV2lkZ2V0KSx0LmV4cHJbIjoiXVtuLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKGUpe3JldHVybiEhdC5kYXRhKGUsbil9LHRbaF09dFtoXXx8e30sbz10W2hdW2VdLGE9dFtoXVtlXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jcmVhdGVXaWRnZXQ/KGFyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldCh0LGUpLHZvaWQgMCk6bmV3IGEodCxlKX0sdC5leHRlbmQoYSxvLHt2ZXJzaW9uOnMudmVyc2lvbixfcHJvdG86dC5leHRlbmQoe30scyksX2NoaWxkQ29uc3RydWN0b3JzOltdfSkscj1uZXcgaSxyLm9wdGlvbnM9dC53aWRnZXQuZXh0ZW5kKHt9LHIub3B0aW9ucyksdC5lYWNoKHMsZnVuY3Rpb24oZSxzKXtyZXR1cm4gdC5pc0Z1bmN0aW9uKHMpPyhsW2VdPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPWZ1bmN0aW9uKHQpe3JldHVybiBpLnByb3RvdHlwZVtlXS5hcHBseSh0aGlzLHQpfTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuX3N1cGVyLG89dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PW4sZT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1pLHRoaXMuX3N1cGVyQXBwbHk9byxlfX0oKSx2b2lkIDApOihsW2VdPXMsdm9pZCAwKX0pLGEucHJvdG90eXBlPXQud2lkZ2V0LmV4dGVuZChyLHt3aWRnZXRFdmVudFByZWZpeDpvP3Iud2lkZ2V0RXZlbnRQcmVmaXh8fGU6ZX0sbCx7Y29uc3RydWN0b3I6YSxuYW1lc3BhY2U6aCx3aWRnZXROYW1lOmUsd2lkZ2V0RnVsbE5hbWU6bn0pLG8/KHQuZWFjaChvLl9jaGlsZENvbnN0cnVjdG9ycyxmdW5jdGlvbihlLGkpe3ZhciBzPWkucHJvdG90eXBlO3Qud2lkZ2V0KHMubmFtZXNwYWNlKyIuIitzLndpZGdldE5hbWUsYSxpLl9wcm90byl9KSxkZWxldGUgby5fY2hpbGRDb25zdHJ1Y3RvcnMpOmkuX2NoaWxkQ29uc3RydWN0b3JzLnB1c2goYSksdC53aWRnZXQuYnJpZGdlKGUsYSksYX0sdC53aWRnZXQuZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaSxzLG89bi5jYWxsKGFyZ3VtZW50cywxKSxhPTAscj1vLmxlbmd0aDtyPmE7YSsrKWZvcihpIGluIG9bYV0pcz1vW2FdW2ldLG9bYV0uaGFzT3duUHJvcGVydHkoaSkmJnZvaWQgMCE9PXMmJihlW2ldPXQuaXNQbGFpbk9iamVjdChzKT90LmlzUGxhaW5PYmplY3QoZVtpXSk/dC53aWRnZXQuZXh0ZW5kKHt9LGVbaV0scyk6dC53aWRnZXQuZXh0ZW5kKHt9LHMpOnMpO3JldHVybiBlfSx0LndpZGdldC5icmlkZ2U9ZnVuY3Rpb24oZSxpKXt2YXIgcz1pLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZXx8ZTt0LmZuW2VdPWZ1bmN0aW9uKG8pe3ZhciBhPSJzdHJpbmciPT10eXBlb2YgbyxyPW4uY2FsbChhcmd1bWVudHMsMSksbD10aGlzO3JldHVybiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLG49dC5kYXRhKHRoaXMscyk7cmV0dXJuImluc3RhbmNlIj09PW8/KGw9biwhMSk6bj90LmlzRnVuY3Rpb24obltvXSkmJiJfIiE9PW8uY2hhckF0KDApPyhpPW5bb10uYXBwbHkobixyKSxpIT09biYmdm9pZCAwIT09aT8obD1pJiZpLmpxdWVyeT9sLnB1c2hTdGFjayhpLmdldCgpKTppLCExKTp2b2lkIDApOnQuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK28rIicgZm9yICIrZSsiIHdpZGdldCBpbnN0YW5jZSIpOnQuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIitlKyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIitvKyInIil9KTooci5sZW5ndGgmJihvPXQud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLFtvXS5jb25jYXQocikpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10LmRhdGEodGhpcyxzKTtlPyhlLm9wdGlvbihvfHx7fSksZS5faW5pdCYmZS5faW5pdCgpKTp0LmRhdGEodGhpcyxzLG5ldyBpKG8sdGhpcykpfSkpLGx9fSx0LldpZGdldD1mdW5jdGlvbigpe30sdC5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzPVtdLHQuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2Rpc2FibGVkOiExLGNyZWF0ZTpudWxsfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGUsaSl7aT10KGl8fHRoaXMuZGVmYXVsdEVsZW1lbnR8fHRoaXMpWzBdLHRoaXMuZWxlbWVudD10KGkpLHRoaXMudXVpZD1zKyssdGhpcy5ldmVudE5hbWVzcGFjZT0iLiIrdGhpcy53aWRnZXROYW1lK3RoaXMudXVpZCx0aGlzLmJpbmRpbmdzPXQoKSx0aGlzLmhvdmVyYWJsZT10KCksdGhpcy5mb2N1c2FibGU9dCgpLGkhPT10aGlzJiYodC5kYXRhKGksdGhpcy53aWRnZXRGdWxsTmFtZSx0aGlzKSx0aGlzLl9vbighMCx0aGlzLmVsZW1lbnQse3JlbW92ZTpmdW5jdGlvbih0KXt0LnRhcmdldD09PWkmJnRoaXMuZGVzdHJveSgpfX0pLHRoaXMuZG9jdW1lbnQ9dChpLnN0eWxlP2kub3duZXJEb2N1bWVudDppLmRvY3VtZW50fHxpKSx0aGlzLndpbmRvdz10KHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXd8fHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksdGhpcy5vcHRpb25zPXQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLGUpLHRoaXMuX2NyZWF0ZSgpLHRoaXMuX3RyaWdnZXIoImNyZWF0ZSIsbnVsbCx0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSksdGhpcy5faW5pdCgpfSxfZ2V0Q3JlYXRlT3B0aW9uczp0Lm5vb3AsX2dldENyZWF0ZUV2ZW50RGF0YTp0Lm5vb3AsX2NyZWF0ZTp0Lm5vb3AsX2luaXQ6dC5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95KCksdGhpcy5lbGVtZW50LnVuYmluZCh0aGlzLmV2ZW50TmFtZXNwYWNlKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0RnVsbE5hbWUpLnJlbW92ZURhdGEodC5jYW1lbENhc2UodGhpcy53aWRnZXRGdWxsTmFtZSkpLHRoaXMud2lkZ2V0KCkudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQgIisidWktc3RhdGUtZGlzYWJsZWQiKSx0aGlzLmJpbmRpbmdzLnVuYmluZCh0aGlzLmV2ZW50TmFtZXNwYWNlKSx0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0sX2Rlc3Ryb3k6dC5ub29wLHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbyxhPWU7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZihhPXt9LHM9ZS5zcGxpdCgiLiIpLGU9cy5zaGlmdCgpLHMubGVuZ3RoKXtmb3Iobj1hW2VdPXQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbZV0pLG89MDtzLmxlbmd0aC0xPm87bysrKW5bc1tvXV09bltzW29dXXx8e30sbj1uW3Nbb11dO2lmKGU9cy5wb3AoKSwxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09bltlXT9udWxsOm5bZV07bltlXT1pfWVsc2V7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9uc1tlXT9udWxsOnRoaXMub3B0aW9uc1tlXTthW2VdPWl9cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoYSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGUgaW4gdCl0aGlzLl9zZXRPcHRpb24oZSx0W2VdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnNbdF09ZSwiZGlzYWJsZWQiPT09dCYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3ModGhpcy53aWRnZXRGdWxsTmFtZSsiLWRpc2FibGVkIiwhIWUpLGUmJih0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKSkpLHRoaXN9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDohMX0pfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiEwfSl9LF9vbjpmdW5jdGlvbihlLGkscyl7dmFyIG4sbz10aGlzOyJib29sZWFuIiE9dHlwZW9mIGUmJihzPWksaT1lLGU9ITEpLHM/KGk9bj10KGkpLHRoaXMuYmluZGluZ3M9dGhpcy5iaW5kaW5ncy5hZGQoaSkpOihzPWksaT10aGlzLmVsZW1lbnQsbj10aGlzLndpZGdldCgpKSx0LmVhY2gocyxmdW5jdGlvbihzLGEpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gZXx8by5vcHRpb25zLmRpc2FibGVkIT09ITAmJiF0KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpPygic3RyaW5nIj09dHlwZW9mIGE/b1thXTphKS5hcHBseShvLGFyZ3VtZW50cyk6dm9pZCAwfSJzdHJpbmciIT10eXBlb2YgYSYmKHIuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1aWR8fHQuZ3VpZCsrKTt2YXIgbD1zLm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSxoPWxbMV0rby5ldmVudE5hbWVzcGFjZSxjPWxbMl07Yz9uLmRlbGVnYXRlKGMsaCxyKTppLmJpbmQoaCxyKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsaSl7aT0oaXx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLnVuYmluZChpKS51bmRlbGVnYXRlKGkpLHRoaXMuYmluZGluZ3M9dCh0aGlzLmJpbmRpbmdzLm5vdChlKS5nZXQoKSksdGhpcy5mb2N1c2FibGU9dCh0aGlzLmZvY3VzYWJsZS5ub3QoZSkuZ2V0KCkpLHRoaXMuaG92ZXJhYmxlPXQodGhpcy5ob3ZlcmFibGUubm90KGUpLmdldCgpKX0sX2RlbGF5OmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSgpe3JldHVybigic3RyaW5nIj09dHlwZW9mIHQ/c1t0XTp0KS5hcHBseShzLGFyZ3VtZW50cyl9dmFyIHM9dGhpcztyZXR1cm4gc2V0VGltZW91dChpLGV8fDApfSxfaG92ZXJhYmxlOmZ1bmN0aW9uKGUpe3RoaXMuaG92ZXJhYmxlPXRoaXMuaG92ZXJhYmxlLmFkZChlKSx0aGlzLl9vbihlLHttb3VzZWVudGVyOmZ1bmN0aW9uKGUpe3QoZS5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXt0KGUuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9fSl9LF9mb2N1c2FibGU6ZnVuY3Rpb24oZSl7dGhpcy5mb2N1c2FibGU9dGhpcy5mb2N1c2FibGUuYWRkKGUpLHRoaXMuX29uKGUse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dChlLmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxmb2N1c291dDpmdW5jdGlvbihlKXt0KGUuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvLGE9dGhpcy5vcHRpb25zW2VdO2lmKHM9c3x8e30saT10LkV2ZW50KGkpLGkudHlwZT0oZT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/ZTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2UpLnRvTG93ZXJDYXNlKCksaS50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLG89aS5vcmlnaW5hbEV2ZW50KWZvcihuIGluIG8pbiBpbiBpfHwoaVtuXT1vW25dKTtyZXR1cm4gdGhpcy5lbGVtZW50LnRyaWdnZXIoaSxzKSwhKHQuaXNGdW5jdGlvbihhKSYmYS5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2ldLmNvbmNhdChzKSk9PT0hMXx8aS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl9fSx0LmVhY2goe3Nob3c6ImZhZGVJbiIsaGlkZToiZmFkZU91dCJ9LGZ1bmN0aW9uKGUsaSl7dC5XaWRnZXQucHJvdG90eXBlWyJfIitlXT1mdW5jdGlvbihzLG4sbyl7InN0cmluZyI9PXR5cGVvZiBuJiYobj17ZWZmZWN0Om59KTt2YXIgYSxyPW4/bj09PSEwfHwibnVtYmVyIj09dHlwZW9mIG4/aTpuLmVmZmVjdHx8aTplO249bnx8e30sIm51bWJlciI9PXR5cGVvZiBuJiYobj17ZHVyYXRpb246bn0pLGE9IXQuaXNFbXB0eU9iamVjdChuKSxuLmNvbXBsZXRlPW8sbi5kZWxheSYmcy5kZWxheShuLmRlbGF5KSxhJiZ0LmVmZmVjdHMmJnQuZWZmZWN0cy5lZmZlY3Rbcl0/c1tlXShuKTpyIT09ZSYmc1tyXT9zW3JdKG4uZHVyYXRpb24sbi5lYXNpbmcsbyk6cy5xdWV1ZShmdW5jdGlvbihpKXt0KHRoaXMpW2VdKCksbyYmby5jYWxsKHNbMF0pLGkoKX0pfX0pLHQud2lkZ2V0O3ZhciBvPSExO3QoZG9jdW1lbnQpLm1vdXNldXAoZnVuY3Rpb24oKXtvPSExfSksdC53aWRnZXQoInVpLm1vdXNlIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOntjYW5jZWw6ImlucHV0LHRleHRhcmVhLGJ1dHRvbixzZWxlY3Qsb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24odCl7cmV0dXJuIGUuX21vdXNlRG93bih0KX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGkpe3JldHVybiEwPT09dC5kYXRhKGkudGFyZ2V0LGUud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iik/KHQucmVtb3ZlRGF0YShpLnRhcmdldCxlLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLGkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITEpOnZvaWQgMH0pLHRoaXMuc3RhcnRlZD0hMX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUmJnRoaXMuZG9jdW1lbnQudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpfSxfbW91c2VEb3duOmZ1bmN0aW9uKGUpe2lmKCFvKXt0aGlzLl9tb3VzZU1vdmVkPSExLHRoaXMuX21vdXNlU3RhcnRlZCYmdGhpcy5fbW91c2VVcChlKSx0aGlzLl9tb3VzZURvd25FdmVudD1lO3ZhciBpPXRoaXMscz0xPT09ZS53aGljaCxuPSJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmNhbmNlbCYmZS50YXJnZXQubm9kZU5hbWU/dChlLnRhcmdldCkuY2xvc2VzdCh0aGlzLm9wdGlvbnMuY2FuY2VsKS5sZW5ndGg6ITE7cmV0dXJuIHMmJiFuJiZ0aGlzLl9tb3VzZUNhcHR1cmUoZSk/KHRoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5LHRoaXMubW91c2VEZWxheU1ldHx8KHRoaXMuX21vdXNlRGVsYXlUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5tb3VzZURlbGF5TWV0PSEwfSx0aGlzLm9wdGlvbnMuZGVsYXkpKSx0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGUpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGUpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQoZSkhPT0hMSwhdGhpcy5fbW91c2VTdGFydGVkKT8oZS5wcmV2ZW50RGVmYXVsdCgpLCEwKTooITA9PT10LmRhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSYmdC5yZW1vdmVEYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21vdXNlTW92ZSh0KX0sdGhpcy5fbW91c2VVcERlbGVnYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tb3VzZVVwKHQpfSx0aGlzLmRvY3VtZW50LmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLGUucHJldmVudERlZmF1bHQoKSxvPSEwLCEwKSk6ITB9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX21vdXNlTW92ZWQpe2lmKHQudWkuaWUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PmRvY3VtZW50LmRvY3VtZW50TW9kZSkmJiFlLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChlKTtpZighZS53aGljaClyZXR1cm4gdGhpcy5fbW91c2VVcChlKX1yZXR1cm4oZS53aGljaHx8ZS5idXR0b24pJiYodGhpcy5fbW91c2VNb3ZlZD0hMCksdGhpcy5fbW91c2VTdGFydGVkPyh0aGlzLl9tb3VzZURyYWcoZSksZS5wcmV2ZW50RGVmYXVsdCgpKToodGhpcy5fbW91c2VEaXN0YW5jZU1ldChlKSYmdGhpcy5fbW91c2VEZWxheU1ldChlKSYmKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGUpIT09ITEsdGhpcy5fbW91c2VTdGFydGVkP3RoaXMuX21vdXNlRHJhZyhlKTp0aGlzLl9tb3VzZVVwKGUpKSwhdGhpcy5fbW91c2VTdGFydGVkKX0sX21vdXNlVXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9jdW1lbnQudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmdC5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSxvPSExLCExfSxfbW91c2VEaXN0YW5jZU1ldDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVgtdC5wYWdlWCksTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVktdC5wYWdlWSkpPj10aGlzLm9wdGlvbnMuZGlzdGFuY2V9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXt9LF9tb3VzZURyYWc6ZnVuY3Rpb24oKXt9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oKXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlLGkpe3JldHVybltwYXJzZUZsb2F0KHRbMF0pKihwLnRlc3QodFswXSk/ZS8xMDA6MSkscGFyc2VGbG9hdCh0WzFdKSoocC50ZXN0KHRbMV0pP2kvMTAwOjEpXX1mdW5jdGlvbiBpKGUsaSl7cmV0dXJuIHBhcnNlSW50KHQuY3NzKGUsaSksMTApfHwwfWZ1bmN0aW9uIHMoZSl7dmFyIGk9ZVswXTtyZXR1cm4gOT09PWkubm9kZVR5cGU/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDowLGxlZnQ6MH19OnQuaXNXaW5kb3coaSk/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDplLnNjcm9sbFRvcCgpLGxlZnQ6ZS5zY3JvbGxMZWZ0KCl9fTppLnByZXZlbnREZWZhdWx0P3t3aWR0aDowLGhlaWdodDowLG9mZnNldDp7dG9wOmkucGFnZVksbGVmdDppLnBhZ2VYfX06e3dpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCksb2Zmc2V0OmUub2Zmc2V0KCl9fXQudWk9dC51aXx8e307dmFyIG4sbyxhPU1hdGgubWF4LHI9TWF0aC5hYnMsbD1NYXRoLnJvdW5kLGg9L2xlZnR8Y2VudGVyfHJpZ2h0LyxjPS90b3B8Y2VudGVyfGJvdHRvbS8sdT0vW1wrXC1dXGQrKFwuW1xkXSspPyU/LyxkPS9eXHcrLyxwPS8lJC8sZj10LmZuLnBvc2l0aW9uO3QucG9zaXRpb249e3Njcm9sbGJhcldpZHRoOmZ1bmN0aW9uKCl7aWYodm9pZCAwIT09bilyZXR1cm4gbjt2YXIgZSxpLHM9dCgiPGRpdiBzdHlsZT0nZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjsnPjxkaXYgc3R5bGU9J2hlaWdodDoxMDBweDt3aWR0aDphdXRvOyc+PC9kaXY+PC9kaXY+Iiksbz1zLmNoaWxkcmVuKClbMF07cmV0dXJuIHQoImJvZHkiKS5hcHBlbmQocyksZT1vLm9mZnNldFdpZHRoLHMuY3NzKCJvdmVyZmxvdyIsInNjcm9sbCIpLGk9by5vZmZzZXRXaWR0aCxlPT09aSYmKGk9c1swXS5jbGllbnRXaWR0aCkscy5yZW1vdmUoKSxuPWUtaX0sZ2V0U2Nyb2xsSW5mbzpmdW5jdGlvbihlKXt2YXIgaT1lLmlzV2luZG93fHxlLmlzRG9jdW1lbnQ/IiI6ZS5lbGVtZW50LmNzcygib3ZlcmZsb3cteCIpLHM9ZS5pc1dpbmRvd3x8ZS5pc0RvY3VtZW50PyIiOmUuZWxlbWVudC5jc3MoIm92ZXJmbG93LXkiKSxuPSJzY3JvbGwiPT09aXx8ImF1dG8iPT09aSYmZS53aWR0aDxlLmVsZW1lbnRbMF0uc2Nyb2xsV2lkdGgsbz0ic2Nyb2xsIj09PXN8fCJhdXRvIj09PXMmJmUuaGVpZ2h0PGUuZWxlbWVudFswXS5zY3JvbGxIZWlnaHQ7cmV0dXJue3dpZHRoOm8/dC5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjAsaGVpZ2h0Om4/dC5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjB9fSxnZXRXaXRoaW5JbmZvOmZ1bmN0aW9uKGUpe3ZhciBpPXQoZXx8d2luZG93KSxzPXQuaXNXaW5kb3coaVswXSksbj0hIWlbMF0mJjk9PT1pWzBdLm5vZGVUeXBlO3JldHVybntlbGVtZW50OmksaXNXaW5kb3c6cyxpc0RvY3VtZW50Om4sb2Zmc2V0Omkub2Zmc2V0KCl8fHtsZWZ0OjAsdG9wOjB9LHNjcm9sbExlZnQ6aS5zY3JvbGxMZWZ0KCksc2Nyb2xsVG9wOmkuc2Nyb2xsVG9wKCksd2lkdGg6c3x8bj9pLndpZHRoKCk6aS5vdXRlcldpZHRoKCksaGVpZ2h0OnN8fG4/aS5oZWlnaHQoKTppLm91dGVySGVpZ2h0KCl9fX0sdC5mbi5wb3NpdGlvbj1mdW5jdGlvbihuKXtpZighbnx8IW4ub2YpcmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpO249dC5leHRlbmQoe30sbik7dmFyIHAsZyxtLF8sdixiLHk9dChuLm9mKSx3PXQucG9zaXRpb24uZ2V0V2l0aGluSW5mbyhuLndpdGhpbiksaz10LnBvc2l0aW9uLmdldFNjcm9sbEluZm8odykseD0obi5jb2xsaXNpb258fCJmbGlwIikuc3BsaXQoIiAiKSxDPXt9O3JldHVybiBiPXMoeSkseVswXS5wcmV2ZW50RGVmYXVsdCYmKG4uYXQ9ImxlZnQgdG9wIiksZz1iLndpZHRoLG09Yi5oZWlnaHQsXz1iLm9mZnNldCx2PXQuZXh0ZW5kKHt9LF8pLHQuZWFjaChbIm15IiwiYXQiXSxmdW5jdGlvbigpe3ZhciB0LGUsaT0oblt0aGlzXXx8IiIpLnNwbGl0KCIgIik7MT09PWkubGVuZ3RoJiYoaT1oLnRlc3QoaVswXSk/aS5jb25jYXQoWyJjZW50ZXIiXSk6Yy50ZXN0KGlbMF0pP1siY2VudGVyIl0uY29uY2F0KGkpOlsiY2VudGVyIiwiY2VudGVyIl0pLGlbMF09aC50ZXN0KGlbMF0pP2lbMF06ImNlbnRlciIsaVsxXT1jLnRlc3QoaVsxXSk/aVsxXToiY2VudGVyIix0PXUuZXhlYyhpWzBdKSxlPXUuZXhlYyhpWzFdKSxDW3RoaXNdPVt0P3RbMF06MCxlP2VbMF06MF0sblt0aGlzXT1bZC5leGVjKGlbMF0pWzBdLGQuZXhlYyhpWzFdKVswXV19KSwxPT09eC5sZW5ndGgmJih4WzFdPXhbMF0pLCJyaWdodCI9PT1uLmF0WzBdP3YubGVmdCs9ZzoiY2VudGVyIj09PW4uYXRbMF0mJih2LmxlZnQrPWcvMiksImJvdHRvbSI9PT1uLmF0WzFdP3YudG9wKz1tOiJjZW50ZXIiPT09bi5hdFsxXSYmKHYudG9wKz1tLzIpLHA9ZShDLmF0LGcsbSksdi5sZWZ0Kz1wWzBdLHYudG9wKz1wWzFdLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBzLGgsYz10KHRoaXMpLHU9Yy5vdXRlcldpZHRoKCksZD1jLm91dGVySGVpZ2h0KCksZj1pKHRoaXMsIm1hcmdpbkxlZnQiKSxiPWkodGhpcywibWFyZ2luVG9wIiksRD11K2YraSh0aGlzLCJtYXJnaW5SaWdodCIpK2sud2lkdGgsVD1kK2IraSh0aGlzLCJtYXJnaW5Cb3R0b20iKStrLmhlaWdodCxJPXQuZXh0ZW5kKHt9LHYpLE09ZShDLm15LGMub3V0ZXJXaWR0aCgpLGMub3V0ZXJIZWlnaHQoKSk7InJpZ2h0Ij09PW4ubXlbMF0/SS5sZWZ0LT11OiJjZW50ZXIiPT09bi5teVswXSYmKEkubGVmdC09dS8yKSwiYm90dG9tIj09PW4ubXlbMV0/SS50b3AtPWQ6ImNlbnRlciI9PT1uLm15WzFdJiYoSS50b3AtPWQvMiksSS5sZWZ0Kz1NWzBdLEkudG9wKz1NWzFdLG98fChJLmxlZnQ9bChJLmxlZnQpLEkudG9wPWwoSS50b3ApKSxzPXttYXJnaW5MZWZ0OmYsbWFyZ2luVG9wOmJ9LHQuZWFjaChbImxlZnQiLCJ0b3AiXSxmdW5jdGlvbihlLGkpe3QudWkucG9zaXRpb25beFtlXV0mJnQudWkucG9zaXRpb25beFtlXV1baV0oSSx7dGFyZ2V0V2lkdGg6Zyx0YXJnZXRIZWlnaHQ6bSxlbGVtV2lkdGg6dSxlbGVtSGVpZ2h0OmQsY29sbGlzaW9uUG9zaXRpb246cyxjb2xsaXNpb25XaWR0aDpELGNvbGxpc2lvbkhlaWdodDpULG9mZnNldDpbcFswXStNWzBdLHBbMV0rTVsxXV0sbXk6bi5teSxhdDpuLmF0LHdpdGhpbjp3LGVsZW06Y30pfSksbi51c2luZyYmKGg9ZnVuY3Rpb24odCl7dmFyIGU9Xy5sZWZ0LUkubGVmdCxpPWUrZy11LHM9Xy50b3AtSS50b3Asbz1zK20tZCxsPXt0YXJnZXQ6e2VsZW1lbnQ6eSxsZWZ0Ol8ubGVmdCx0b3A6Xy50b3Asd2lkdGg6ZyxoZWlnaHQ6bX0sZWxlbWVudDp7ZWxlbWVudDpjLGxlZnQ6SS5sZWZ0LHRvcDpJLnRvcCx3aWR0aDp1LGhlaWdodDpkfSxob3Jpem9udGFsOjA+aT8ibGVmdCI6ZT4wPyJyaWdodCI6ImNlbnRlciIsdmVydGljYWw6MD5vPyJ0b3AiOnM+MD8iYm90dG9tIjoibWlkZGxlIn07dT5nJiZnPnIoZStpKSYmKGwuaG9yaXpvbnRhbD0iY2VudGVyIiksZD5tJiZtPnIocytvKSYmKGwudmVydGljYWw9Im1pZGRsZSIpLGwuaW1wb3J0YW50PWEocihlKSxyKGkpKT5hKHIocykscihvKSk/Imhvcml6b250YWwiOiJ2ZXJ0aWNhbCIsbi51c2luZy5jYWxsKHRoaXMsdCxsKX0pLGMub2Zmc2V0KHQuZXh0ZW5kKEkse3VzaW5nOmh9KSl9KX0sdC51aS5wb3NpdGlvbj17Zml0OntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz1lLndpdGhpbixuPXMuaXNXaW5kb3c/cy5zY3JvbGxMZWZ0OnMub2Zmc2V0LmxlZnQsbz1zLndpZHRoLHI9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCxsPW4tcixoPXIrZS5jb2xsaXNpb25XaWR0aC1vLW47ZS5jb2xsaXNpb25XaWR0aD5vP2w+MCYmMD49aD8oaT10LmxlZnQrbCtlLmNvbGxpc2lvbldpZHRoLW8tbix0LmxlZnQrPWwtaSk6dC5sZWZ0PWg+MCYmMD49bD9uOmw+aD9uK28tZS5jb2xsaXNpb25XaWR0aDpuOmw+MD90LmxlZnQrPWw6aD4wP3QubGVmdC09aDp0LmxlZnQ9YSh0LmxlZnQtcix0LmxlZnQpfSx0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaSxzPWUud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbFRvcDpzLm9mZnNldC50b3Asbz1lLndpdGhpbi5oZWlnaHQscj10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxsPW4tcixoPXIrZS5jb2xsaXNpb25IZWlnaHQtby1uO2UuY29sbGlzaW9uSGVpZ2h0Pm8/bD4wJiYwPj1oPyhpPXQudG9wK2wrZS5jb2xsaXNpb25IZWlnaHQtby1uLHQudG9wKz1sLWkpOnQudG9wPWg+MCYmMD49bD9uOmw+aD9uK28tZS5jb2xsaXNpb25IZWlnaHQ6bjpsPjA/dC50b3ArPWw6aD4wP3QudG9wLT1oOnQudG9wPWEodC50b3Atcix0LnRvcCl9fSxmbGlwOntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscyxuPWUud2l0aGluLG89bi5vZmZzZXQubGVmdCtuLnNjcm9sbExlZnQsYT1uLndpZHRoLGw9bi5pc1dpbmRvdz9uLnNjcm9sbExlZnQ6bi5vZmZzZXQubGVmdCxoPXQubGVmdC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsYz1oLWwsdT1oK2UuY29sbGlzaW9uV2lkdGgtYS1sLGQ9ImxlZnQiPT09ZS5teVswXT8tZS5lbGVtV2lkdGg6InJpZ2h0Ij09PWUubXlbMF0/ZS5lbGVtV2lkdGg6MCxwPSJsZWZ0Ij09PWUuYXRbMF0/ZS50YXJnZXRXaWR0aDoicmlnaHQiPT09ZS5hdFswXT8tZS50YXJnZXRXaWR0aDowLGY9LTIqZS5vZmZzZXRbMF07MD5jPyhpPXQubGVmdCtkK3ArZitlLmNvbGxpc2lvbldpZHRoLWEtbywoMD5pfHxyKGMpPmkpJiYodC5sZWZ0Kz1kK3ArZikpOnU+MCYmKHM9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCtkK3ArZi1sLChzPjB8fHU+cihzKSkmJih0LmxlZnQrPWQrcCtmKSl9LHRvcDpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj1lLndpdGhpbixvPW4ub2Zmc2V0LnRvcCtuLnNjcm9sbFRvcCxhPW4uaGVpZ2h0LGw9bi5pc1dpbmRvdz9uLnNjcm9sbFRvcDpuLm9mZnNldC50b3AsaD10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxjPWgtbCx1PWgrZS5jb2xsaXNpb25IZWlnaHQtYS1sLGQ9InRvcCI9PT1lLm15WzFdLHA9ZD8tZS5lbGVtSGVpZ2h0OiJib3R0b20iPT09ZS5teVsxXT9lLmVsZW1IZWlnaHQ6MCxmPSJ0b3AiPT09ZS5hdFsxXT9lLnRhcmdldEhlaWdodDoiYm90dG9tIj09PWUuYXRbMV0/LWUudGFyZ2V0SGVpZ2h0OjAsZz0tMiplLm9mZnNldFsxXTswPmM/KHM9dC50b3ArcCtmK2crZS5jb2xsaXNpb25IZWlnaHQtYS1vLCgwPnN8fHIoYyk+cykmJih0LnRvcCs9cCtmK2cpKTp1PjAmJihpPXQudG9wLWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wK3ArZitnLWwsKGk+MHx8dT5yKGkpKSYmKHQudG9wKz1wK2YrZykpfX0sZmxpcGZpdDp7bGVmdDpmdW5jdGlvbigpe3QudWkucG9zaXRpb24uZmxpcC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdG9wOmZ1bmN0aW9uKCl7dC51aS5wb3NpdGlvbi5mbGlwLnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSxmdW5jdGlvbigpe3ZhciBlLGkscyxuLGEscj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHI/ImRpdiI6ImJvZHkiKSxzPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LHImJnQuZXh0ZW5kKHMse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTEwMDBweCIsdG9wOiItMTAwMHB4In0pO2ZvcihhIGluIHMpZS5zdHlsZVthXT1zW2FdO2UuYXBwZW5kQ2hpbGQobCksaT1yfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaS5pbnNlcnRCZWZvcmUoZSxpLmZpcnN0Q2hpbGQpLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxMC43NDMyMjIycHg7IixuPXQobCkub2Zmc2V0KCkubGVmdCxvPW4+MTAmJjExPm4sZS5pbm5lckhUTUw9IiIsaS5yZW1vdmVDaGlsZChlKX0oKX0oKSx0LnVpLnBvc2l0aW9uLHQud2lkZ2V0KCJ1aS5kcmFnZ2FibGUiLHQudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6ImRyYWciLG9wdGlvbnM6e2FkZENsYXNzZXM6ITAsYXBwZW5kVG86InBhcmVudCIsYXhpczohMSxjb25uZWN0VG9Tb3J0YWJsZTohMSxjb250YWlubWVudDohMSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OiExLGdyaWQ6ITEsaGFuZGxlOiExLGhlbHBlcjoib3JpZ2luYWwiLGlmcmFtZUZpeDohMSxvcGFjaXR5OiExLHJlZnJlc2hQb3NpdGlvbnM6ITEscmV2ZXJ0OiExLHJldmVydER1cmF0aW9uOjUwMCxzY29wZToiZGVmYXVsdCIsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNuYXA6ITEsc25hcE1vZGU6ImJvdGgiLHNuYXBUb2xlcmFuY2U6MjAsc3RhY2s6ITEsekluZGV4OiExLGRyYWc6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpeyJvcmlnaW5hbCI9PT10aGlzLm9wdGlvbnMuaGVscGVyJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksdGhpcy5vcHRpb25zLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlIiksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX21vdXNlSW5pdCgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fc3VwZXIodCxlKSwiaGFuZGxlIj09PXQmJih0aGlzLl9yZW1vdmVIYW5kbGVDbGFzc05hbWUoKSx0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGVscGVyfHx0aGlzLmVsZW1lbnQpLmlzKCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIik/KHRoaXMuZGVzdHJveU9uQ2xlYXI9ITAsdm9pZCAwKToodGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRyYWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX21vdXNlRGVzdHJveSgpLHZvaWQgMCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl9ibHVyQWN0aXZlRWxlbWVudChlKSx0aGlzLmhlbHBlcnx8aS5kaXNhYmxlZHx8dChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5sZW5ndGg+MD8hMToodGhpcy5oYW5kbGU9dGhpcy5fZ2V0SGFuZGxlKGUpLHRoaXMuaGFuZGxlPyh0aGlzLl9ibG9ja0ZyYW1lcyhpLmlmcmFtZUZpeD09PSEwPyJpZnJhbWUiOmkuaWZyYW1lRml4KSwhMCk6ITEpfSxfYmxvY2tGcmFtZXM6ZnVuY3Rpb24oZSl7dGhpcy5pZnJhbWVCbG9ja3M9dGhpcy5kb2N1bWVudC5maW5kKGUpLm1hcChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHQoIjxkaXY+IikuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIikuYXBwZW5kVG8oZS5wYXJlbnQoKSkub3V0ZXJXaWR0aChlLm91dGVyV2lkdGgoKSkub3V0ZXJIZWlnaHQoZS5vdXRlckhlaWdodCgpKS5vZmZzZXQoZS5vZmZzZXQoKSlbMF19KX0sX3VuYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2NrcyYmKHRoaXMuaWZyYW1lQmxvY2tzLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmlmcmFtZUJsb2Nrcyl9LF9ibHVyQWN0aXZlRWxlbWVudDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLmRvY3VtZW50WzBdO2lmKHRoaXMuaGFuZGxlRWxlbWVudC5pcyhlLnRhcmdldCkpdHJ5e2kuYWN0aXZlRWxlbWVudCYmImJvZHkiIT09aS5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJnQoaS5hY3RpdmVFbGVtZW50KS5ibHVyKCl9Y2F0Y2gocyl7fX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIoZSksdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0LnVpLmRkbWFuYWdlciYmKHQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksdGhpcy5fY2FjaGVNYXJnaW5zKCksdGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCEwKSx0aGlzLm9mZnNldFBhcmVudD10aGlzLmhlbHBlci5vZmZzZXRQYXJlbnQoKSx0aGlzLmhhc0ZpeGVkQW5jZXN0b3I9dGhpcy5oZWxwZXIucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJmaXhlZCI9PT10KHRoaXMpLmNzcygicG9zaXRpb24iKX0pLmxlbmd0aD4wLHRoaXMucG9zaXRpb25BYnM9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX3JlZnJlc2hPZmZzZXRzKGUpLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oZSwhMSksdGhpcy5vcmlnaW5hbFBhZ2VYPWUucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZPWUucGFnZVksaS5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihpLmN1cnNvckF0KSx0aGlzLl9zZXRDb250YWlubWVudCgpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlKT09PSExPyh0aGlzLl9jbGVhcigpLCExKToodGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLHQudWkuZGRtYW5hZ2VyJiYhaS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpLHRoaXMuX25vcm1hbGl6ZVJpZ2h0Qm90dG9tKCksdGhpcy5fbW91c2VEcmFnKGUsITApLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnU3RhcnQodGhpcyxlKSwhMCl9LF9yZWZyZXNoT2Zmc2V0czpmdW5jdGlvbih0KXt0aGlzLm9mZnNldD17dG9wOnRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQsc2Nyb2xsOiExLHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSx0aGlzLm9mZnNldC5jbGljaz17bGVmdDp0LnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOnQucGFnZVktdGhpcy5vZmZzZXQudG9wfX0sX21vdXNlRHJhZzpmdW5jdGlvbihlLGkpe2lmKHRoaXMuaGFzRml4ZWRBbmNlc3RvciYmKHRoaXMub2Zmc2V0LnBhcmVudD10aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSksdGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGUsITApLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksIWkpe3ZhciBzPXRoaXMuX3VpSGFzaCgpO2lmKHRoaXMuX3RyaWdnZXIoImRyYWciLGUscyk9PT0hMSlyZXR1cm4gdGhpcy5fbW91c2VVcCh7fSksITE7dGhpcy5wb3NpdGlvbj1zLnBvc2l0aW9ufXJldHVybiB0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiLHRoaXMuaGVscGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgiLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsZSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPSExO3JldHVybiB0LnVpLmRkbWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyJiYocz10LnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsZSkpLHRoaXMuZHJvcHBlZCYmKHM9dGhpcy5kcm9wcGVkLHRoaXMuZHJvcHBlZD0hMSksImludmFsaWQiPT09dGhpcy5vcHRpb25zLnJldmVydCYmIXN8fCJ2YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiZzfHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT09ITB8fHQuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMucmV2ZXJ0KSYmdGhpcy5vcHRpb25zLnJldmVydC5jYWxsKHRoaXMuZWxlbWVudCxzKT90KHRoaXMuaGVscGVyKS5hbmltYXRlKHRoaXMub3JpZ2luYWxQb3NpdGlvbixwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb24sMTApLGZ1bmN0aW9uKCl7aS5fdHJpZ2dlcigic3RvcCIsZSkhPT0hMSYmaS5fY2xlYXIoKX0pOnRoaXMuX3RyaWdnZXIoInN0b3AiLGUpIT09ITEmJnRoaXMuX2NsZWFyKCksITF9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl91bmJsb2NrRnJhbWVzKCksdC51aS5kZG1hbmFnZXImJnQudWkuZGRtYW5hZ2VyLmRyYWdTdG9wKHRoaXMsZSksdGhpcy5oYW5kbGVFbGVtZW50LmlzKGUudGFyZ2V0KSYmdGhpcy5lbGVtZW50LmZvY3VzKCksdC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlVXAuY2FsbCh0aGlzLGUpfSxjYW5jZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWxwZXIuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT90aGlzLl9tb3VzZVVwKHt9KTp0aGlzLl9jbGVhcigpLHRoaXN9LF9nZXRIYW5kbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5oYW5kbGU/ISF0KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpKS5sZW5ndGg6ITB9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZUVsZW1lbnQ9dGhpcy5vcHRpb25zLmhhbmRsZT90aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGFuZGxlKTp0aGlzLmVsZW1lbnQsdGhpcy5oYW5kbGVFbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtaGFuZGxlIil9LF9yZW1vdmVIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZUVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMscz10LmlzRnVuY3Rpb24oaS5oZWxwZXIpLG49cz90KGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbZV0pKToiY2xvbmUiPT09aS5oZWxwZXI/dGhpcy5lbGVtZW50LmNsb25lKCkucmVtb3ZlQXR0cigiaWQiKTp0aGlzLmVsZW1lbnQ7cmV0dXJuIG4ucGFyZW50cygiYm9keSIpLmxlbmd0aHx8bi5hcHBlbmRUbygicGFyZW50Ij09PWkuYXBwZW5kVG8/dGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGU6aS5hcHBlbmRUbykscyYmblswXT09PXRoaXMuZWxlbWVudFswXSYmdGhpcy5fc2V0UG9zaXRpb25SZWxhdGl2ZSgpLG5bMF09PT10aGlzLmVsZW1lbnRbMF18fC8oZml4ZWR8YWJzb2x1dGUpLy50ZXN0KG4uY3NzKCJwb3NpdGlvbiIpKXx8bi5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSxufSxfc2V0UG9zaXRpb25SZWxhdGl2ZTpmdW5jdGlvbigpey9eKD86cnxhfGYpLy50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIikpfHwodGhpcy5lbGVtZW50WzBdLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiAiKSksdC5pc0FycmF5KGUpJiYoZT17bGVmdDorZVswXSx0b3A6K2VbMV18fDB9KSwibGVmdCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD1lLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnQpLCJyaWdodCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWUucmlnaHQrdGhpcy5tYXJnaW5zLmxlZnQpLCJ0b3AiaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD1lLnRvcCt0aGlzLm1hcmdpbnMudG9wKSwiYm90dG9tImluIGUmJih0aGlzLm9mZnNldC5jbGljay50b3A9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtZS5ib3R0b20rdGhpcy5tYXJnaW5zLnRvcCl9LF9pc1Jvb3ROb2RlOmZ1bmN0aW9uKHQpe3JldHVybi8oaHRtbHxib2R5KS9pLnRlc3QodC50YWdOYW1lKXx8dD09PXRoaXMuZG9jdW1lbnRbMF19LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudC5vZmZzZXQoKSxpPXRoaXMuZG9jdW1lbnRbMF07cmV0dXJuImFic29sdXRlIj09PXRoaXMuY3NzUG9zaXRpb24mJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT09aSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkmJihlLmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSxlLnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpLHRoaXMuX2lzUm9vdE5vZGUodGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYoZT17dG9wOjAsbGVmdDowfSkse3RvcDplLnRvcCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCksbGVmdDplLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKCJyZWxhdGl2ZSIhPT10aGlzLmNzc1Bvc2l0aW9uKXJldHVybnt0b3A6MCxsZWZ0OjB9O3ZhciB0PXRoaXMuZWxlbWVudC5wb3NpdGlvbigpLGU9dGhpcy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSk7cmV0dXJue3RvcDp0LnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApKyhlPzA6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpLGxlZnQ6dC5sZWZ0LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApKyhlPzA6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpKX19LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luVG9wIiksMTApfHwwLHJpZ2h0OnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksMTApfHwwLGJvdHRvbTpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Cb3R0b20iKSwxMCl8fDB9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMub3B0aW9ucyxvPXRoaXMuZG9jdW1lbnRbMF07cmV0dXJuIHRoaXMucmVsYXRpdmVDb250YWluZXI9bnVsbCxuLmNvbnRhaW5tZW50PyJ3aW5kb3ciPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVudD1bdCh3aW5kb3cpLnNjcm9sbExlZnQoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LHQod2luZG93KS5zY3JvbGxUb3AoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCx0KHdpbmRvdykuc2Nyb2xsTGVmdCgpK3Qod2luZG93KS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsdCh3aW5kb3cpLnNjcm9sbFRvcCgpKyh0KHdpbmRvdykuaGVpZ2h0KCl8fG8uYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKToiZG9jdW1lbnQiPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVudD1bMCwwLHQobykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LCh0KG8pLmhlaWdodCgpfHxvLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdLHZvaWQgMCk6bi5jb250YWlubWVudC5jb25zdHJ1Y3Rvcj09PUFycmF5Pyh0aGlzLmNvbnRhaW5tZW50PW4uY29udGFpbm1lbnQsdm9pZCAwKTooInBhcmVudCI9PT1uLmNvbnRhaW5tZW50JiYobi5jb250YWlubWVudD10aGlzLmhlbHBlclswXS5wYXJlbnROb2RlKSxpPXQobi5jb250YWlubWVudCkscz1pWzBdLHMmJihlPS8oc2Nyb2xsfGF1dG8pLy50ZXN0KGkuY3NzKCJvdmVyZmxvdyIpKSx0aGlzLmNvbnRhaW5tZW50PVsocGFyc2VJbnQoaS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCksKHBhcnNlSW50KGkuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKSwoZT9NYXRoLm1heChzLnNjcm9sbFdpZHRoLHMub2Zmc2V0V2lkdGgpOnMub2Zmc2V0V2lkdGgpLShwYXJzZUludChpLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQtdGhpcy5tYXJnaW5zLnJpZ2h0LChlP01hdGgubWF4KHMuc2Nyb2xsSGVpZ2h0LHMub2Zmc2V0SGVpZ2h0KTpzLm9mZnNldEhlaWdodCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nQm90dG9tIiksMTApfHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wLXRoaXMubWFyZ2lucy5ib3R0b21dLHRoaXMucmVsYXRpdmVDb250YWluZXI9aSksdm9pZCAwKToodGhpcy5jb250YWlubWVudD1udWxsLHZvaWQgMCl9LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbih0LGUpe2V8fChlPXRoaXMucG9zaXRpb24pO3ZhciBpPSJhYnNvbHV0ZSI9PT10PzE6LTEscz10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCppK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC50b3A6cz8wOnRoaXMub2Zmc2V0LnNjcm9sbC50b3ApKmksbGVmdDplLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCppK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KmktKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwubGVmdDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQpKml9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbixvLGE9dGhpcy5vcHRpb25zLHI9dGhpcy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSksbD10LnBhZ2VYLGg9dC5wYWdlWTtyZXR1cm4gciYmdGhpcy5vZmZzZXQuc2Nyb2xsfHwodGhpcy5vZmZzZXQuc2Nyb2xsPXt0b3A6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9KSxlJiYodGhpcy5jb250YWlubWVudCYmKHRoaXMucmVsYXRpdmVDb250YWluZXI/KHM9dGhpcy5yZWxhdGl2ZUNvbnRhaW5lci5vZmZzZXQoKSxpPVt0aGlzLmNvbnRhaW5tZW50WzBdK3MubGVmdCx0aGlzLmNvbnRhaW5tZW50WzFdK3MudG9wLHRoaXMuY29udGFpbm1lbnRbMl0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbM10rcy50b3BdKTppPXRoaXMuY29udGFpbm1lbnQsdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PGlbMF0mJihsPWlbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8aVsxXSYmKGg9aVsxXSt0aGlzLm9mZnNldC5jbGljay50b3ApLHQucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdJiYobD1pWzJdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLHQucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10mJihoPWlbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSksYS5ncmlkJiYobj1hLmdyaWRbMV0/dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGgtdGhpcy5vcmlnaW5hbFBhZ2VZKS9hLmdyaWRbMV0pKmEuZ3JpZFsxXTp0aGlzLm9yaWdpbmFsUGFnZVksaD1pP24tdGhpcy5vZmZzZXQuY2xpY2sudG9wPj1pWzFdfHxuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD5pWzNdP246bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV0/bi1hLmdyaWRbMV06bithLmdyaWRbMV06bixvPWEuZ3JpZFswXT90aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVgpL2EuZ3JpZFswXSkqYS5ncmlkWzBdOnRoaXMub3JpZ2luYWxQYWdlWCxsPWk/by10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdfHxvLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+aVsyXT9vOm8tdGhpcy5vZmZzZXQuY2xpY2subGVmdD49aVswXT9vLWEuZ3JpZFswXTpvK2EuZ3JpZFswXTpvKSwieSI9PT1hLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWCksIngiPT09YS5heGlzJiYoaD10aGlzLm9yaWdpbmFsUGFnZVkpKSx7dG9wOmgtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpyPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCksbGVmdDpsLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnI/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCl9fSxfY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlci5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5oZWxwZXJbMF09PT10aGlzLmVsZW1lbnRbMF18fHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8dGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCx0aGlzLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdGhpcy5kZXN0cm95T25DbGVhciYmdGhpcy5kZXN0cm95KCl9LF9ub3JtYWxpemVSaWdodEJvdHRvbTpmdW5jdGlvbigpeyJ5IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoInJpZ2h0IikmJih0aGlzLmhlbHBlci53aWR0aCh0aGlzLmhlbHBlci53aWR0aCgpKSx0aGlzLmhlbHBlci5jc3MoInJpZ2h0IiwiYXV0byIpKSwieCIhPT10aGlzLm9wdGlvbnMuYXhpcyYmImF1dG8iIT09dGhpcy5oZWxwZXIuY3NzKCJib3R0b20iKSYmKHRoaXMuaGVscGVyLmhlaWdodCh0aGlzLmhlbHBlci5oZWlnaHQoKSksdGhpcy5oZWxwZXIuY3NzKCJib3R0b20iLCJhdXRvIikpfSxfdHJpZ2dlcjpmdW5jdGlvbihlLGkscyl7cmV0dXJuIHM9c3x8dGhpcy5fdWlIYXNoKCksdC51aS5wbHVnaW4uY2FsbCh0aGlzLGUsW2kscyx0aGlzXSwhMCksL14oZHJhZ3xzdGFydHxzdG9wKS8udGVzdChlKSYmKHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIikscy5vZmZzZXQ9dGhpcy5wb3NpdGlvbkFicyksdC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmNhbGwodGhpcyxlLGkscyl9LHBsdWdpbnM6e30sX3VpSGFzaDpmdW5jdGlvbigpe3JldHVybntoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOnRoaXMub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjb25uZWN0VG9Tb3J0YWJsZSIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3Muc29ydGFibGVzPVtdLHQocy5vcHRpb25zLmNvbm5lY3RUb1NvcnRhYmxlKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5zb3J0YWJsZSgiaW5zdGFuY2UiKTtpJiYhaS5vcHRpb25zLmRpc2FibGVkJiYocy5zb3J0YWJsZXMucHVzaChpKSxpLnJlZnJlc2hQb3NpdGlvbnMoKSxpLl90cmlnZ2VyKCJhY3RpdmF0ZSIsZSxuKSl9KX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49dC5leHRlbmQoe30saSx7aXRlbTpzLmVsZW1lbnR9KTtzLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmlzT3Zlcj8odC5pc092ZXI9MCxzLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsdC5jYW5jZWxIZWxwZXJSZW1vdmFsPSExLHQuX3N0b3JlZENTUz17cG9zaXRpb246dC5wbGFjZWhvbGRlci5jc3MoInBvc2l0aW9uIiksdG9wOnQucGxhY2Vob2xkZXIuY3NzKCJ0b3AiKSxsZWZ0OnQucGxhY2Vob2xkZXIuY3NzKCJsZWZ0Iil9LHQuX21vdXNlU3RvcChlKSx0Lm9wdGlvbnMuaGVscGVyPXQub3B0aW9ucy5faGVscGVyKToodC5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLHQuX3RyaWdnZXIoImRlYWN0aXZhdGUiLGUsbikpfSl9LGRyYWc6ZnVuY3Rpb24oZSxpLHMpe3QuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3ZhciBuPSExLG89dGhpcztvLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsby5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLG8ub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLG8uX2ludGVyc2VjdHNXaXRoKG8uY29udGFpbmVyQ2FjaGUpJiYobj0hMCx0LmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbkFicz1zLnBvc2l0aW9uQWJzLHRoaXMuaGVscGVyUHJvcG9ydGlvbnM9cy5oZWxwZXJQcm9wb3J0aW9ucyx0aGlzLm9mZnNldC5jbGljaz1zLm9mZnNldC5jbGljayx0aGlzIT09byYmdGhpcy5faW50ZXJzZWN0c1dpdGgodGhpcy5jb250YWluZXJDYWNoZSkmJnQuY29udGFpbnMoby5lbGVtZW50WzBdLHRoaXMuZWxlbWVudFswXSkmJihuPSExKSxuCn0pKSxuPyhvLmlzT3Zlcnx8KG8uaXNPdmVyPTEscy5fcGFyZW50PWkuaGVscGVyLnBhcmVudCgpLG8uY3VycmVudEl0ZW09aS5oZWxwZXIuYXBwZW5kVG8oby5lbGVtZW50KS5kYXRhKCJ1aS1zb3J0YWJsZS1pdGVtIiwhMCksby5vcHRpb25zLl9oZWxwZXI9by5vcHRpb25zLmhlbHBlcixvLm9wdGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGkuaGVscGVyWzBdfSxlLnRhcmdldD1vLmN1cnJlbnRJdGVtWzBdLG8uX21vdXNlQ2FwdHVyZShlLCEwKSxvLl9tb3VzZVN0YXJ0KGUsITAsITApLG8ub2Zmc2V0LmNsaWNrLnRvcD1zLm9mZnNldC5jbGljay50b3Asby5vZmZzZXQuY2xpY2subGVmdD1zLm9mZnNldC5jbGljay5sZWZ0LG8ub2Zmc2V0LnBhcmVudC5sZWZ0LT1zLm9mZnNldC5wYXJlbnQubGVmdC1vLm9mZnNldC5wYXJlbnQubGVmdCxvLm9mZnNldC5wYXJlbnQudG9wLT1zLm9mZnNldC5wYXJlbnQudG9wLW8ub2Zmc2V0LnBhcmVudC50b3Ascy5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsZSkscy5kcm9wcGVkPW8uZWxlbWVudCx0LmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pLHMuY3VycmVudEl0ZW09cy5lbGVtZW50LG8uZnJvbU91dHNpZGU9cyksby5jdXJyZW50SXRlbSYmKG8uX21vdXNlRHJhZyhlKSxpLnBvc2l0aW9uPW8ucG9zaXRpb24pKTpvLmlzT3ZlciYmKG8uaXNPdmVyPTAsby5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLG8ub3B0aW9ucy5fcmV2ZXJ0PW8ub3B0aW9ucy5yZXZlcnQsby5vcHRpb25zLnJldmVydD0hMSxvLl90cmlnZ2VyKCJvdXQiLGUsby5fdWlIYXNoKG8pKSxvLl9tb3VzZVN0b3AoZSwhMCksby5vcHRpb25zLnJldmVydD1vLm9wdGlvbnMuX3JldmVydCxvLm9wdGlvbnMuaGVscGVyPW8ub3B0aW9ucy5faGVscGVyLG8ucGxhY2Vob2xkZXImJm8ucGxhY2Vob2xkZXIucmVtb3ZlKCksaS5oZWxwZXIuYXBwZW5kVG8ocy5fcGFyZW50KSxzLl9yZWZyZXNoT2Zmc2V0cyhlKSxpLnBvc2l0aW9uPXMuX2dlbmVyYXRlUG9zaXRpb24oZSwhMCkscy5fdHJpZ2dlcigiZnJvbVNvcnRhYmxlIixlKSxzLmRyb3BwZWQ9ITEsdC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9KSl9KX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImN1cnNvciIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10KCJib2R5Iiksbz1zLm9wdGlvbnM7bi5jc3MoImN1cnNvciIpJiYoby5fY3Vyc29yPW4uY3NzKCJjdXJzb3IiKSksbi5jc3MoImN1cnNvciIsby5jdXJzb3IpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fY3Vyc29yJiZ0KCJib2R5IikuY3NzKCJjdXJzb3IiLG4uX2N1cnNvcil9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJvcGFjaXR5Iix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXQoaS5oZWxwZXIpLG89cy5vcHRpb25zO24uY3NzKCJvcGFjaXR5IikmJihvLl9vcGFjaXR5PW4uY3NzKCJvcGFjaXR5IikpLG4uY3NzKCJvcGFjaXR5IixvLm9wYWNpdHkpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fb3BhY2l0eSYmdChpLmhlbHBlcikuY3NzKCJvcGFjaXR5IixuLl9vcGFjaXR5KX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNjcm9sbCIse3N0YXJ0OmZ1bmN0aW9uKHQsZSxpKXtpLnNjcm9sbFBhcmVudE5vdEhpZGRlbnx8KGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuPWkuaGVscGVyLnNjcm9sbFBhcmVudCghMSkpLGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdIT09aS5kb2N1bWVudFswXSYmIkhUTUwiIT09aS5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0udGFnTmFtZSYmKGkub3ZlcmZsb3dPZmZzZXQ9aS5zY3JvbGxQYXJlbnROb3RIaWRkZW4ub2Zmc2V0KCkpfSxkcmFnOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnMsbz0hMSxhPXMuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdLHI9cy5kb2N1bWVudFswXTthIT09ciYmIkhUTUwiIT09YS50YWdOYW1lPyhuLmF4aXMmJiJ4Ij09PW4uYXhpc3x8KHMub3ZlcmZsb3dPZmZzZXQudG9wK2Eub2Zmc2V0SGVpZ2h0LWUucGFnZVk8bi5zY3JvbGxTZW5zaXRpdml0eT9hLnNjcm9sbFRvcD1vPWEuc2Nyb2xsVG9wK24uc2Nyb2xsU3BlZWQ6ZS5wYWdlWS1zLm92ZXJmbG93T2Zmc2V0LnRvcDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoYS5zY3JvbGxUb3A9bz1hLnNjcm9sbFRvcC1uLnNjcm9sbFNwZWVkKSksbi5heGlzJiYieSI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LmxlZnQrYS5vZmZzZXRXaWR0aC1lLnBhZ2VYPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YS5zY3JvbGxMZWZ0PW89YS5zY3JvbGxMZWZ0K24uc2Nyb2xsU3BlZWQ6ZS5wYWdlWC1zLm92ZXJmbG93T2Zmc2V0LmxlZnQ8bi5zY3JvbGxTZW5zaXRpdml0eSYmKGEuc2Nyb2xsTGVmdD1vPWEuc2Nyb2xsTGVmdC1uLnNjcm9sbFNwZWVkKSkpOihuLmF4aXMmJiJ4Ij09PW4uYXhpc3x8KGUucGFnZVktdChyKS5zY3JvbGxUb3AoKTxuLnNjcm9sbFNlbnNpdGl2aXR5P289dChyKS5zY3JvbGxUb3AodChyKS5zY3JvbGxUb3AoKS1uLnNjcm9sbFNwZWVkKTp0KHdpbmRvdykuaGVpZ2h0KCktKGUucGFnZVktdChyKS5zY3JvbGxUb3AoKSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG89dChyKS5zY3JvbGxUb3AodChyKS5zY3JvbGxUb3AoKStuLnNjcm9sbFNwZWVkKSkpLG4uYXhpcyYmInkiPT09bi5heGlzfHwoZS5wYWdlWC10KHIpLnNjcm9sbExlZnQoKTxuLnNjcm9sbFNlbnNpdGl2aXR5P289dChyKS5zY3JvbGxMZWZ0KHQocikuc2Nyb2xsTGVmdCgpLW4uc2Nyb2xsU3BlZWQpOnQod2luZG93KS53aWR0aCgpLShlLnBhZ2VYLXQocikuc2Nyb2xsTGVmdCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYobz10KHIpLnNjcm9sbExlZnQodChyKS5zY3JvbGxMZWZ0KCkrbi5zY3JvbGxTcGVlZCkpKSksbyE9PSExJiZ0LnVpLmRkbWFuYWdlciYmIW4uZHJvcEJlaGF2aW91ciYmdC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMocyxlKX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNuYXAiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO3Muc25hcEVsZW1lbnRzPVtdLHQobi5zbmFwLmNvbnN0cnVjdG9yIT09U3RyaW5nP24uc25hcC5pdGVtc3x8IjpkYXRhKHVpLWRyYWdnYWJsZSkiOm4uc25hcCkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksaT1lLm9mZnNldCgpO3RoaXMhPT1zLmVsZW1lbnRbMF0mJnMuc25hcEVsZW1lbnRzLnB1c2goe2l0ZW06dGhpcyx3aWR0aDplLm91dGVyV2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLHRvcDppLnRvcCxsZWZ0OmkubGVmdH0pfSl9LGRyYWc6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuLG8sYSxyLGwsaCxjLHUsZCxwLGY9cy5vcHRpb25zLGc9Zi5zbmFwVG9sZXJhbmNlLG09aS5vZmZzZXQubGVmdCxfPW0rcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCx2PWkub2Zmc2V0LnRvcCxiPXYrcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQ7Zm9yKGQ9cy5zbmFwRWxlbWVudHMubGVuZ3RoLTE7ZD49MDtkLS0pbD1zLnNuYXBFbGVtZW50c1tkXS5sZWZ0LXMubWFyZ2lucy5sZWZ0LGg9bCtzLnNuYXBFbGVtZW50c1tkXS53aWR0aCxjPXMuc25hcEVsZW1lbnRzW2RdLnRvcC1zLm1hcmdpbnMudG9wLHU9YytzLnNuYXBFbGVtZW50c1tkXS5oZWlnaHQsbC1nPl98fG0+aCtnfHxjLWc+Ynx8dj51K2d8fCF0LmNvbnRhaW5zKHMuc25hcEVsZW1lbnRzW2RdLml0ZW0ub3duZXJEb2N1bWVudCxzLnNuYXBFbGVtZW50c1tkXS5pdGVtKT8ocy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmcmJnMub3B0aW9ucy5zbmFwLnJlbGVhc2UmJnMub3B0aW9ucy5zbmFwLnJlbGVhc2UuY2FsbChzLmVsZW1lbnQsZSx0LmV4dGVuZChzLl91aUhhc2goKSx7c25hcEl0ZW06cy5zbmFwRWxlbWVudHNbZF0uaXRlbX0pKSxzLnNuYXBFbGVtZW50c1tkXS5zbmFwcGluZz0hMSk6KCJpbm5lciIhPT1mLnNuYXBNb2RlJiYobj1nPj1NYXRoLmFicyhjLWIpLG89Zz49TWF0aC5hYnModS12KSxhPWc+PU1hdGguYWJzKGwtXykscj1nPj1NYXRoLmFicyhoLW0pLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6Yy1zLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dSxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsLXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGh9KS5sZWZ0KSxyJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aH0pLmxlZnQpKSxwPW58fG98fGF8fHIsIm91dGVyIiE9PWYuc25hcE1vZGUmJihuPWc+PU1hdGguYWJzKGMtdiksbz1nPj1NYXRoLmFicyh1LWIpLGE9Zz49TWF0aC5hYnMobC1tKSxyPWc+PU1hdGguYWJzKGgtXyksbiYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpjLGxlZnQ6MH0pLnRvcCksbyYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDp1LXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcCksYSYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omx9KS5sZWZ0KSxyJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdCkpLCFzLnNuYXBFbGVtZW50c1tkXS5zbmFwcGluZyYmKG58fG98fGF8fHJ8fHApJiZzLm9wdGlvbnMuc25hcC5zbmFwJiZzLm9wdGlvbnMuc25hcC5zbmFwLmNhbGwocy5lbGVtZW50LGUsdC5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2RdLml0ZW19KSkscy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmc9bnx8b3x8YXx8cnx8cCl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzdGFjayIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvPXMub3B0aW9ucyxhPXQubWFrZUFycmF5KHQoby5zdGFjaykpLnNvcnQoZnVuY3Rpb24oZSxpKXtyZXR1cm4ocGFyc2VJbnQodChlKS5jc3MoInpJbmRleCIpLDEwKXx8MCktKHBhcnNlSW50KHQoaSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApfSk7YS5sZW5ndGgmJihuPXBhcnNlSW50KHQoYVswXSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDAsdChhKS5lYWNoKGZ1bmN0aW9uKGUpe3QodGhpcykuY3NzKCJ6SW5kZXgiLG4rZSl9KSx0aGlzLmNzcygiekluZGV4IixuK2EubGVuZ3RoKSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJ6SW5kZXgiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49dChpLmhlbHBlciksbz1zLm9wdGlvbnM7bi5jc3MoInpJbmRleCIpJiYoby5fekluZGV4PW4uY3NzKCJ6SW5kZXgiKSksbi5jc3MoInpJbmRleCIsby56SW5kZXgpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fekluZGV4JiZ0KGkuaGVscGVyKS5jc3MoInpJbmRleCIsbi5fekluZGV4KX19KSx0LnVpLmRyYWdnYWJsZSx0LndpZGdldCgidWkuc29ydGFibGUiLHQudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD49ZSYmZStpPnR9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKHQpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KHQuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KHQuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMucmVhZHk9ITB9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXt0aGlzLl9zdXBlcih0LGUpLCJoYW5kbGUiPT09dCYmdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCl9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNvcnRhYmxlLWhhbmRsZSIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSx0LmVhY2godGhpcy5pdGVtcyxmdW5jdGlvbigpeyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSkuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhhbmRsZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGFuZGxlIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciB0PXRoaXMuaXRlbXMubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5pdGVtc1t0XS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGUsaSl7dmFyIHM9bnVsbCxuPSExLG89dGhpcztyZXR1cm4gdGhpcy5yZXZlcnRpbmc/ITE6dGhpcy5vcHRpb25zLmRpc2FibGVkfHwic3RhdGljIj09PXRoaXMub3B0aW9ucy50eXBlPyExOih0aGlzLl9yZWZyZXNoSXRlbXMoZSksdChlLnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRhKHRoaXMsby53aWRnZXROYW1lKyItaXRlbSIpPT09bz8ocz10KHRoaXMpLCExKTp2b2lkIDB9KSx0LmRhdGEoZS50YXJnZXQsby53aWRnZXROYW1lKyItaXRlbSIpPT09byYmKHM9dChlLnRhcmdldCkpLHM/IXRoaXMub3B0aW9ucy5oYW5kbGV8fGl8fCh0KHRoaXMub3B0aW9ucy5oYW5kbGUscykuZmluZCgiKiIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09PWUudGFyZ2V0JiYobj0hMCl9KSxuKT8odGhpcy5jdXJyZW50SXRlbT1zLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITApOiExOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuLG8sYT10aGlzLm9wdGlvbnM7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKGUpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSx0LmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6ZS5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDplLnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihlKSx0aGlzLm9yaWdpbmFsUGFnZVg9ZS5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9ZS5wYWdlWSxhLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGEuY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5jdXJyZW50SXRlbS5oaWRlKCksdGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKSxhLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLGEuY3Vyc29yJiYiYXV0byIhPT1hLmN1cnNvciYmKG89dGhpcy5kb2N1bWVudC5maW5kKCJib2R5IiksdGhpcy5zdG9yZWRDdXJzb3I9by5jc3MoImN1cnNvciIpLG8uY3NzKCJjdXJzb3IiLGEuY3Vyc29yKSx0aGlzLnN0b3JlZFN0eWxlc2hlZXQ9dCgiPHN0eWxlPip7IGN1cnNvcjogIithLmN1cnNvcisiICFpbXBvcnRhbnQ7IH08L3N0eWxlPiIpLmFwcGVuZFRvKG8pKSxhLm9wYWNpdHkmJih0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSYmKHRoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpLHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsYS5vcGFjaXR5KSksYS56SW5kZXgmJih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpJiYodGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4IikpLHRoaXMuaGVscGVyLmNzcygiekluZGV4IixhLnpJbmRleCkpLHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSYmKHRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksIXMpZm9yKG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuY29udGFpbmVyc1tuXS5fdHJpZ2dlcigiYWN0aXZhdGUiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKTtyZXR1cm4gdC51aS5kZG1hbmFnZXImJih0LnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXMpLHQudWkuZGRtYW5hZ2VyJiYhYS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpLHRoaXMuZHJhZ2dpbmc9ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRoaXMuX21vdXNlRHJhZyhlKSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPXRoaXMub3B0aW9ucyxyPSExO2Zvcih0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oZSksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxhc3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMpLHRoaXMub3B0aW9ucy5zY3JvbGwmJih0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWU/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC1lLnBhZ2VZPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK2Euc2Nyb2xsU3BlZWQ6ZS5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxhLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWEuc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC1lLnBhZ2VYPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrYS5zY3JvbGxTcGVlZDplLnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxhLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtYS5zY3JvbGxTcGVlZCkpOihlLnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCk8YS5zY3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCktYS5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cuaGVpZ2h0KCktKGUucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSk8YS5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSthLnNjcm9sbFNwZWVkKSksZS5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKTxhLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLWEuc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93LndpZHRoKCktKGUucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkpPGEuc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKSthLnNjcm9sbFNwZWVkKSkpLHIhPT0hMSYmdC51aS5kZG1hbmFnZXImJiFhLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsZSkpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksdGhpcy5vcHRpb25zLmF4aXMmJiJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5vcHRpb25zLmF4aXMmJiJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSlpZihzPXRoaXMuaXRlbXNbaV0sbj1zLml0ZW1bMF0sbz10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIocyksbyYmcy5pbnN0YW5jZT09PXRoaXMuY3VycmVudENvbnRhaW5lciYmbiE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbMT09PW8/Im5leHQiOiJwcmV2Il0oKVswXSE9PW4mJiF0LmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sbikmJigic2VtaS1keW5hbWljIj09PXRoaXMub3B0aW9ucy50eXBlPyF0LmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxuKTohMCkpe2lmKHRoaXMuZGlyZWN0aW9uPTE9PT1vPyJkb3duIjoidXAiLCJwb2ludGVyIiE9PXRoaXMub3B0aW9ucy50b2xlcmFuY2UmJiF0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKHMpKWJyZWFrO3RoaXMuX3JlYXJyYW5nZShlLHMpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2goKSk7YnJlYWt9cmV0dXJuIHRoaXMuX2NvbnRhY3RDb250YWluZXJzKGUpLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsZSksdGhpcy5fdHJpZ2dlcigic29ydCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicywhMX0sX21vdXNlU3RvcDpmdW5jdGlvbihlLGkpe2lmKGUpe2lmKHQudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxlKSx0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcz10aGlzLG49dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxvPXRoaXMub3B0aW9ucy5heGlzLGE9e307byYmIngiIT09b3x8KGEubGVmdD1uLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQrKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCkpLG8mJiJ5IiE9PW98fChhLnRvcD1uLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLXRoaXMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKSksdGhpcy5yZXZlcnRpbmc9ITAsdCh0aGlzLmhlbHBlcikuYW5pbWF0ZShhLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtzLl9jbGVhcihlKX0pfWVsc2UgdGhpcy5fY2xlYXIoZSxpKTtyZXR1cm4hMX19LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoe3RhcmdldDpudWxsfSksIm9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciBlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tlXS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLHQuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj90KHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6dCh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkoZSYmZS5jb25uZWN0ZWQpLHM9W107cmV0dXJuIGU9ZXx8e30sdChpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KHQoZS5pdGVtfHx0aGlzKS5hdHRyKGUuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGUuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKChlLmtleXx8aVsxXSsiW10iKSsiPSIrKGUua2V5JiZlLmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJmUua2V5JiZzLnB1c2goZS5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGUmJmUuY29ubmVjdGVkKSxzPVtdO3JldHVybiBlPWV8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaCh0KGUuaXRlbXx8dGhpcykuYXR0cihlLmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT1lK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbz10LmxlZnQsYT1vK3Qud2lkdGgscj10LnRvcCxsPXIrdC5oZWlnaHQsaD10aGlzLm9mZnNldC5jbGljay50b3AsYz10aGlzLm9mZnNldC5jbGljay5sZWZ0LHU9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMraD5yJiZsPnMraCxkPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHxlK2M+byYmYT5lK2MscD11JiZkO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+dFt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6ZSt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+byYmYT5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmw+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKHQpe3ZhciBlPSJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCx0LnRvcCx0LmhlaWdodCksaT0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCx0LmxlZnQsdC53aWR0aCkscz1lJiZpLG49dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiBzP3RoaXMuZmxvYXRpbmc/byYmInJpZ2h0Ij09PW98fCJkb3duIj09PW4/MjoxOm4mJigiZG93biI9PT1uPzI6MSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wK3QuaGVpZ2h0LzIsdC5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCx0LmxlZnQrdC53aWR0aC8yLHQud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmZXx8InVwIj09PXMmJiFlKX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PXQmJih0PjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PXQmJih0PjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXModCksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybiB0LmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1t0LmNvbm5lY3RXaXRoXTp0LmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbihlKXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sbyxhLHI9W10sbD1bXSxoPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYoaCYmZSlmb3Iocz1oLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihvPXQoaFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPW8ubGVuZ3RoLTE7bj49MDtuLS0pYT10LmRhdGEob1tuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxhJiZhIT09dGhpcyYmIWEub3B0aW9ucy5kaXNhYmxlZCYmbC5wdXNoKFt0LmlzRnVuY3Rpb24oYS5vcHRpb25zLml0ZW1zKT9hLm9wdGlvbnMuaXRlbXMuY2FsbChhLmVsZW1lbnQpOnQoYS5vcHRpb25zLml0ZW1zLGEuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxhXSk7Zm9yKGwucHVzaChbdC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOnQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1sLmxlbmd0aC0xO3M+PTA7cy0tKWxbc11bMF0uZWFjaChpKTtyZXR1cm4gdChyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz10LmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbih0KXtmb3IodmFyIGk9MDtlLmxlbmd0aD5pO2krKylpZihlW2ldPT09dC5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24oZSl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixvLGEscixsLGgsYz10aGlzLml0ZW1zLHU9W1t0LmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sZSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6dCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sZD10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGQmJnRoaXMucmVhZHkpZm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj10KGRbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKW89dC5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksbyYmbyE9PXRoaXMmJiFvLm9wdGlvbnMuZGlzYWJsZWQmJih1LnB1c2goW3QuaXNGdW5jdGlvbihvLm9wdGlvbnMuaXRlbXMpP28ub3B0aW9ucy5pdGVtcy5jYWxsKG8uZWxlbWVudFswXSxlLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTp0KG8ub3B0aW9ucy5pdGVtcyxvLmVsZW1lbnQpLG9dKSx0aGlzLmNvbnRhaW5lcnMucHVzaChvKSk7Zm9yKGk9dS5sZW5ndGgtMTtpPj0wO2ktLSlmb3IoYT11W2ldWzFdLHI9dVtpXVswXSxzPTAsaD1yLmxlbmd0aDtoPnM7cysrKWw9dChyW3NdKSxsLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsYSksYy5wdXNoKHtpdGVtOmwsaW5zdGFuY2U6YSx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGUpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixvO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/dCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSxlfHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLG89bi5vZmZzZXQoKSxzLmxlZnQ9by5sZWZ0LHMudG9wPW8udG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlvPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PW8ubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPW8udG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSl7ZT1lfHx0aGlzO3ZhciBpLHM9ZS5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPWUuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPXQoIjwiK3MrIj4iLGUuZG9jdW1lbnRbMF0pLmFkZENsYXNzKGl8fGUuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7cmV0dXJuInRib2R5Ij09PXM/ZS5fY3JlYXRlVHJQbGFjZWhvbGRlcihlLmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksdCgiPHRyPiIsZS5kb2N1bWVudFswXSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP2UuX2NyZWF0ZVRyUGxhY2Vob2xkZXIoZS5jdXJyZW50SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIixlLmN1cnJlbnRJdGVtLmF0dHIoInNyYyIpKSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbih0LG4peyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodChlLmN1cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aChlLmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLGUucGxhY2Vob2xkZXI9dChzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbChlLmVsZW1lbnQsZS5jdXJyZW50SXRlbSkpLGUuY3VycmVudEl0ZW0uYWZ0ZXIoZS5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUoZSxlLnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO2UuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dCgiPHRkPiYjMTYwOzwvdGQ+IixzLmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIix0KHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSkuYXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGEscixsLGgsYyx1LGQ9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2k+PTA7aS0tKWlmKCF0LmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGQmJnQuY29udGFpbnModGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0sZC5lbGVtZW50WzBdKSljb250aW51ZTtkPXRoaXMuY29udGFpbmVyc1tpXSxwPWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0IixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoZClpZigxPT09dGhpcy5jb250YWluZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LG89bnVsbCxjPWQuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksYT1jPyJsZWZ0IjoidG9wIixyPWM/IndpZHRoIjoiaGVpZ2h0Iix1PWM/ImNsaWVudFgiOiJjbGllbnRZIixzPXRoaXMuaXRlbXMubGVuZ3RoLTE7cz49MDtzLS0pdC5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudFswXSx0aGlzLml0ZW1zW3NdLml0ZW1bMF0pJiZ0aGlzLml0ZW1zW3NdLml0ZW1bMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiYobD10aGlzLml0ZW1zW3NdLml0ZW0ub2Zmc2V0KClbYV0saD0hMSxlW3VdLWw+dGhpcy5pdGVtc1tzXVtyXS8yJiYoaD0hMCksbj5NYXRoLmFicyhlW3VdLWwpJiYobj1NYXRoLmFicyhlW3VdLWwpLG89dGhpcy5pdGVtc1tzXSx0aGlzLmRpcmVjdGlvbj1oPyJ1cCI6ImRvd24iKSk7aWYoIW8mJiF0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpcmV0dXJuO2lmKHRoaXMuY3VycmVudENvbnRhaW5lcj09PXRoaXMuY29udGFpbmVyc1twXSlyZXR1cm4gdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRhaW5lckNhY2hlLm92ZXJ8fCh0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoIm92ZXIiLGUsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyPTEpLHZvaWQgMDtvP3RoaXMuX3JlYXJyYW5nZShlLG8sbnVsbCwhMCk6dGhpcy5fcmVhcnJhbmdlKGUsbnVsbCx0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudCwhMCksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRhaW5lcnNbcF0sdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dC5pc0Z1bmN0aW9uKGkuaGVscGVyKT90KGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbZSx0aGlzLmN1cnJlbnRJdGVtXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6dGhpcy5jdXJyZW50SXRlbTtyZXR1cm4gcy5wYXJlbnRzKCJib2R5IikubGVuZ3RofHx0KCJwYXJlbnQiIT09aS5hcHBlbmRUbz9pLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoc1swXSksc1swXT09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKCFzWzBdLnN0eWxlLndpZHRofHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoIXNbMF0uc3R5bGUuaGVpZ2h0fHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHN9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5zcGxpdCgiICIpKSx0LmlzQXJyYXkoZSkmJihlPXtsZWZ0OitlWzBdLHRvcDorZVsxXXx8MH0pLCJsZWZ0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PWUubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtZS5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPWUudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1lLmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9uJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYoZS5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCksZS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSwodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJiJodG1sIj09PXRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmdC51aS5pZSkmJihlPXt0b3A6MCxsZWZ0OjB9KSx7dG9wOmUudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmUubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIj09PXRoaXMuY3NzUG9zaXRpb24pe3ZhciB0PXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOnQudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0LmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG49dGhpcy5vcHRpb25zOyJwYXJlbnQiPT09bi5jb250YWlubWVudCYmKG4uY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSksKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50fHwid2luZG93Ij09PW4uY29udGFpbm1lbnQpJiYodGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LmhlaWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fChlPXQobi5jb250YWlubWVudClbMF0saT10KG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT10KGUpLmNzcygib3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KHQoZSkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludCh0KGUpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgoZS5zY3JvbGxXaWR0aCxlLm9mZnNldFdpZHRoKTplLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KHQoZSkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHM/TWF0aC5tYXgoZS5zY3JvbGxIZWlnaHQsZS5vZmZzZXRIZWlnaHQpOmUub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQodChlKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsaSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PWU/MTotMSxuPSJhYnNvbHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LG89LyhodG1sfGJvZHkpL2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6bz8wOm4uc2Nyb2xsVG9wKCkpKnMsbGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6bz8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxvPWUucGFnZVgsYT1lLnBhZ2VZLHI9ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsbD0vKGh0bWx8Ym9keSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29udGFpbm1lbnQmJihlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKG89dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYoYT10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihvPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKGE9dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChhLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sYT10aGlzLmNvbnRhaW5tZW50P2ktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoby10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlkWzBdLG89dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMuY29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVudFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4uZ3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDphLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmw/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0Om8tdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmw/MDpyLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKHQsZSxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTplLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj9lLml0ZW1bMF06ZS5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7bj09PXRoaXMuY291bnRlciYmdGhpcy5yZWZyZXNoUG9zaXRpb25zKCFzKX0pfSxfY2xlYXI6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24ocyl7aS5fdHJpZ2dlcih0LHMsZS5fdWlIYXNoKGUpKX19dGhpcy5yZXZlcnRpbmc9ITE7dmFyIHMsbj1bXTtpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKSx0aGlzLl9ub0ZpbmFsU29ydD1udWxsLHRoaXMuaGVscGVyWzBdPT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHMgaW4gdGhpcy5fc3RvcmVkQ1NTKSgiYXV0byI9PT10aGlzLl9zdG9yZWRDU1Nbc118fCJzdGF0aWMiPT09dGhpcy5fc3RvcmVkQ1NTW3NdKSYmKHRoaXMuX3N0b3JlZENTU1tzXT0iIik7dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodGhpcy5mcm9tT3V0c2lkZSYmIWUmJm4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwhdGhpcy5mcm9tT3V0c2lkZSYmdGhpcy5kb21Qb3NpdGlvbi5wcmV2PT09dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF0mJnRoaXMuZG9tUG9zaXRpb24ucGFyZW50PT09dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXXx8ZXx8bi5wdXNoKGZ1bmN0aW9uKHQpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsdCx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYoZXx8KG4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLHQsdGhpcy5fdWlIYXNoKCkpfSksbi5wdXNoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0Ll90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksbi5wdXNoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0Ll90cmlnZ2VyKCJ1cGRhdGUiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpLHM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO3M+PTA7cy0tKWV8fG4ucHVzaChpKCJkZWFjdGl2YXRlIix0aGlzLHRoaXMuY29udGFpbmVyc1tzXSkpLHRoaXMuY29udGFpbmVyc1tzXS5jb250YWluZXJDYWNoZS5vdmVyJiYobi5wdXNoKGkoIm91dCIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZih0aGlzLnN0b3JlZEN1cnNvciYmKHRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLnN0b3JlZEN1cnNvciksdGhpcy5zdG9yZWRTdHlsZXNoZWV0LnJlbW92ZSgpKSx0aGlzLl9zdG9yZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpLHRoaXMuX3N0b3JlZFpJbmRleCYmdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLCJhdXRvIj09PXRoaXMuX3N0b3JlZFpJbmRleD8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpLHRoaXMuZHJhZ2dpbmc9ITEsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8KHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCksIWUpe2ZvcihzPTA7bi5sZW5ndGg+cztzKyspbltzXS5jYWxsKHRoaXMsdCk7dGhpcy5fdHJpZ2dlcigic3RvcCIsdCx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsIXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbH0sX3RyaWdnZXI6ZnVuY3Rpb24oKXt0LldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpPT09ITEmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6ZnVuY3Rpb24oZSl7dmFyIGk9ZXx8dGhpcztyZXR1cm57aGVscGVyOmkuaGVscGVyLHBsYWNlaG9sZGVyOmkucGxhY2Vob2xkZXJ8fHQoW10pLHBvc2l0aW9uOmkucG9zaXRpb24sb3JpZ2luYWxQb3NpdGlvbjppLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmkucG9zaXRpb25BYnMsaXRlbTppLmN1cnJlbnRJdGVtLHNlbmRlcjplP2UuZWxlbWVudDpudWxsfX19KSx0LndpZGdldCgidWkubWVudSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6Ijx1bD4iLGRlbGF5OjMwMCxvcHRpb25zOntpY29uczp7c3VibWVudToidWktaWNvbi1jYXJhdC0xLWUifSxpdGVtczoiPiAqIixtZW51czoidWwiLHBvc2l0aW9uOntteToibGVmdC0xIHRvcCIsYXQ6InJpZ2h0IHRvcCJ9LHJvbGU6Im1lbnUiLGJsdXI6bnVsbCxmb2N1czpudWxsLHNlbGVjdDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmVNZW51PXRoaXMuZWxlbWVudCx0aGlzLm1vdXNlSGFuZGxlZD0hMSx0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKS50b2dnbGVDbGFzcygidWktbWVudS1pY29ucyIsISF0aGlzLmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLmF0dHIoe3JvbGU6dGhpcy5vcHRpb25zLnJvbGUsdGFiSW5kZXg6MH0pLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIiksdGhpcy5fb24oeyJtb3VzZWRvd24gLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpfSwiY2xpY2sgLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24oZSl7dmFyIGk9dChlLnRhcmdldCk7IXRoaXMubW91c2VIYW5kbGVkJiZpLm5vdCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoJiYodGhpcy5zZWxlY3QoZSksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpfHwodGhpcy5tb3VzZUhhbmRsZWQ9ITApLGkuaGFzKCIudWktbWVudSIpLmxlbmd0aD90aGlzLmV4cGFuZChlKTohdGhpcy5lbGVtZW50LmlzKCI6Zm9jdXMiKSYmdCh0aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoIi51aS1tZW51IikubGVuZ3RoJiYodGhpcy5lbGVtZW50LnRyaWdnZXIoImZvY3VzIixbITBdKSx0aGlzLmFjdGl2ZSYmMT09PXRoaXMuYWN0aXZlLnBhcmVudHMoIi51aS1tZW51IikubGVuZ3RoJiZjbGVhclRpbWVvdXQodGhpcy50aW1lcikpKX0sIm1vdXNlZW50ZXIgLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24oZSl7aWYoIXRoaXMucHJldmlvdXNGaWx0ZXIpe3ZhciBpPXQoZS5jdXJyZW50VGFyZ2V0KTtpLnNpYmxpbmdzKCIudWktc3RhdGUtYWN0aXZlIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuZm9jdXMoZSxpKX19LG1vdXNlbGVhdmU6ImNvbGxhcHNlQWxsIiwibW91c2VsZWF2ZSAudWktbWVudSI6ImNvbGxhcHNlQWxsIixmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYWN0aXZlfHx0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmVxKDApO2V8fHRoaXMuZm9jdXModCxpKX0sYmx1cjpmdW5jdGlvbihlKXt0aGlzLl9kZWxheShmdW5jdGlvbigpe3QuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCl8fHRoaXMuY29sbGFwc2VBbGwoZSl9KX0sa2V5ZG93bjoiX2tleWRvd24ifSksdGhpcy5yZWZyZXNoKCksdGhpcy5fb24odGhpcy5kb2N1bWVudCx7Y2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5fY2xvc2VPbkRvY3VtZW50Q2xpY2sodCkmJnRoaXMuY29sbGFwc2VBbGwodCksdGhpcy5tb3VzZUhhbmRsZWQ9ITF9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLmZpbmQoIi51aS1tZW51IikuYWRkQmFjaygpLnJlbW92ZUNsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1tZW51LWljb25zIHVpLWZyb250IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlQXR0cigiYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlQXR0cigiYXJpYS1leHBhbmRlZCIpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZVVuaXF1ZUlkKCkuc2hvdygpLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1pdGVtIikucmVtb3ZlQ2xhc3MoInVpLW1lbnUtaXRlbSIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhhc3BvcHVwIikuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTsKZS5kYXRhKCJ1aS1tZW51LXN1Ym1lbnUtY2FyYXQiKSYmZS5yZW1vdmUoKX0pLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1kaXZpZGVyIikucmVtb3ZlQ2xhc3MoInVpLW1lbnUtZGl2aWRlciB1aS13aWRnZXQtY29udGVudCIpfSxfa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPSEwO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgdC51aS5rZXlDb2RlLlBBR0VfVVA6dGhpcy5wcmV2aW91c1BhZ2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9ET1dOOnRoaXMubmV4dFBhZ2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTp0aGlzLl9tb3ZlKCJmaXJzdCIsImZpcnN0IixlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTkQ6dGhpcy5fbW92ZSgibGFzdCIsImxhc3QiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlVQOnRoaXMucHJldmlvdXMoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjp0aGlzLm5leHQoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDp0aGlzLmNvbGxhcHNlKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlJJR0hUOnRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiZ0aGlzLmV4cGFuZChlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTlRFUjpjYXNlIHQudWkua2V5Q29kZS5TUEFDRTp0aGlzLl9hY3RpdmF0ZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FU0NBUEU6dGhpcy5jb2xsYXBzZShlKTticmVhaztkZWZhdWx0OmE9ITEscz10aGlzLnByZXZpb3VzRmlsdGVyfHwiIixuPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKSxvPSExLGNsZWFyVGltZW91dCh0aGlzLmZpbHRlclRpbWVyKSxuPT09cz9vPSEwOm49cytuLGk9dGhpcy5fZmlsdGVyTWVudUl0ZW1zKG4pLGk9byYmLTEhPT1pLmluZGV4KHRoaXMuYWN0aXZlLm5leHQoKSk/dGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpOmksaS5sZW5ndGh8fChuPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKSxpPXRoaXMuX2ZpbHRlck1lbnVJdGVtcyhuKSksaS5sZW5ndGg/KHRoaXMuZm9jdXMoZSxpKSx0aGlzLnByZXZpb3VzRmlsdGVyPW4sdGhpcy5maWx0ZXJUaW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLnByZXZpb3VzRmlsdGVyfSwxZTMpKTpkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn1hJiZlLnByZXZlbnREZWZhdWx0KCl9LF9hY3RpdmF0ZTpmdW5jdGlvbih0KXt0aGlzLmFjdGl2ZS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIil8fCh0aGlzLmFjdGl2ZS5pcygiW2FyaWEtaGFzcG9wdXA9J3RydWUnXSIpP3RoaXMuZXhwYW5kKHQpOnRoaXMuc2VsZWN0KHQpKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzLG49dGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUsbz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMubWVudXMpO3RoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktbWVudS1pY29ucyIsISF0aGlzLmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLG8uZmlsdGVyKCI6bm90KC51aS1tZW51KSIpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1mcm9udCIpLmhpZGUoKS5hdHRyKHtyb2xlOnRoaXMub3B0aW9ucy5yb2xlLCJhcmlhLWhpZGRlbiI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksaT1lLnBhcmVudCgpLHM9dCgiPHNwYW4+IikuYWRkQ2xhc3MoInVpLW1lbnUtaWNvbiB1aS1pY29uICIrbikuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmF0IiwhMCk7aS5hdHRyKCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIpLnByZXBlbmQocyksZS5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkuYXR0cigiaWQiKSl9KSxlPW8uYWRkKHRoaXMuZWxlbWVudCksaT1lLmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKSxpLm5vdCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3MuX2lzRGl2aWRlcihlKSYmZS5hZGRDbGFzcygidWktd2lkZ2V0LWNvbnRlbnQgdWktbWVudS1kaXZpZGVyIil9KSxpLm5vdCgiLnVpLW1lbnUtaXRlbSwgLnVpLW1lbnUtZGl2aWRlciIpLmFkZENsYXNzKCJ1aS1tZW51LWl0ZW0iKS51bmlxdWVJZCgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6dGhpcy5faXRlbVJvbGUoKX0pLGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZlJiYhdC5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pJiZ0aGlzLmJsdXIoKX0sX2l0ZW1Sb2xlOmZ1bmN0aW9uKCl7cmV0dXJue21lbnU6Im1lbnVpdGVtIixsaXN0Ym94OiJvcHRpb24ifVt0aGlzLm9wdGlvbnMucm9sZV19LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXsiaWNvbnMiPT09dCYmdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMuc3VibWVudSkuYWRkQ2xhc3MoZS5zdWJtZW51KSwiZGlzYWJsZWQiPT09dCYmdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFlKS5hdHRyKCJhcmlhLWRpc2FibGVkIixlKSx0aGlzLl9zdXBlcih0LGUpfSxmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpLHM7dGhpcy5ibHVyKHQsdCYmImZvY3VzIj09PXQudHlwZSksdGhpcy5fc2Nyb2xsSW50b1ZpZXcoZSksdGhpcy5hY3RpdmU9ZS5maXJzdCgpLHM9dGhpcy5hY3RpdmUuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMub3B0aW9ucy5yb2xlJiZ0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixzLmF0dHIoImlkIikpLHRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdCYmImtleWRvd24iPT09dC50eXBlP3RoaXMuX2Nsb3NlKCk6dGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX2Nsb3NlKCl9LHRoaXMuZGVsYXkpLGk9ZS5jaGlsZHJlbigiLnVpLW1lbnUiKSxpLmxlbmd0aCYmdCYmL15tb3VzZS8udGVzdCh0LnR5cGUpJiZ0aGlzLl9zdGFydE9wZW5pbmcoaSksdGhpcy5hY3RpdmVNZW51PWUucGFyZW50KCksdGhpcy5fdHJpZ2dlcigiZm9jdXMiLHQse2l0ZW06ZX0pfSxfc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYSxyO3RoaXMuX2hhc1Njcm9sbCgpJiYoaT1wYXJzZUZsb2F0KHQuY3NzKHRoaXMuYWN0aXZlTWVudVswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAscz1wYXJzZUZsb2F0KHQuY3NzKHRoaXMuYWN0aXZlTWVudVswXSwicGFkZGluZ1RvcCIpKXx8MCxuPWUub2Zmc2V0KCkudG9wLXRoaXMuYWN0aXZlTWVudS5vZmZzZXQoKS50b3AtaS1zLG89dGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcCgpLGE9dGhpcy5hY3RpdmVNZW51LmhlaWdodCgpLHI9ZS5vdXRlckhlaWdodCgpLDA+bj90aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKG8rbik6bityPmEmJnRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AobytuLWErcikpfSxibHVyOmZ1bmN0aW9uKHQsZSl7ZXx8Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMuYWN0aXZlJiYodGhpcy5hY3RpdmUucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIiksdGhpcy5hY3RpdmU9bnVsbCx0aGlzLl90cmlnZ2VyKCJibHVyIix0LHtpdGVtOnRoaXMuYWN0aXZlfSkpfSxfc3RhcnRPcGVuaW5nOmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSwidHJ1ZSI9PT10LmF0dHIoImFyaWEtaGlkZGVuIikmJih0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKSx0aGlzLl9vcGVuKHQpfSx0aGlzLmRlbGF5KSl9LF9vcGVuOmZ1bmN0aW9uKGUpe3ZhciBpPXQuZXh0ZW5kKHtvZjp0aGlzLmFjdGl2ZX0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKTtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51Iikubm90KGUucGFyZW50cygiLnVpLW1lbnUiKSkuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGUuc2hvdygpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKS5wb3NpdGlvbihpKX0sY29sbGFwc2VBbGw6ZnVuY3Rpb24oZSxpKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciBzPWk/dGhpcy5lbGVtZW50OnQoZSYmZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51IikpO3MubGVuZ3RofHwocz10aGlzLmVsZW1lbnQpLHRoaXMuX2Nsb3NlKHMpLHRoaXMuYmx1cihlKSx0aGlzLmFjdGl2ZU1lbnU9c30sdGhpcy5kZWxheSl9LF9jbG9zZTpmdW5jdGlvbih0KXt0fHwodD10aGlzLmFjdGl2ZT90aGlzLmFjdGl2ZS5wYXJlbnQoKTp0aGlzLmVsZW1lbnQpLHQuZmluZCgiLnVpLW1lbnUiKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIikuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIikuZW5kKCkuZmluZCgiLnVpLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLnVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSxfY2xvc2VPbkRvY3VtZW50Q2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIXQoZS50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51IikubGVuZ3RofSxfaXNEaXZpZGVyOmZ1bmN0aW9uKHQpe3JldHVybiEvW15cLVx1MjAxNFx1MjAxM1xzXS8udGVzdCh0LnRleHQoKSl9LGNvbGxhcHNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCIudWktbWVudS1pdGVtIix0aGlzLmVsZW1lbnQpO2UmJmUubGVuZ3RoJiYodGhpcy5fY2xvc2UoKSx0aGlzLmZvY3VzKHQsZSkpfSxleHBhbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktbWVudSAiKS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlyc3QoKTtlJiZlLmxlbmd0aCYmKHRoaXMuX29wZW4oZS5wYXJlbnQoKSksdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLmZvY3VzKHQsZSl9KSl9LG5leHQ6ZnVuY3Rpb24odCl7dGhpcy5fbW92ZSgibmV4dCIsImZpcnN0Iix0KX0scHJldmlvdXM6ZnVuY3Rpb24odCl7dGhpcy5fbW92ZSgicHJldiIsImxhc3QiLHQpfSxpc0ZpcnN0SXRlbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLnByZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh9LGlzTGFzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxfbW92ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM7dGhpcy5hY3RpdmUmJihzPSJmaXJzdCI9PT10fHwibGFzdCI9PT10P3RoaXMuYWN0aXZlWyJmaXJzdCI9PT10PyJwcmV2QWxsIjoibmV4dEFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoLTEpOnRoaXMuYWN0aXZlW3QrIkFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoMCkpLHMmJnMubGVuZ3RoJiZ0aGlzLmFjdGl2ZXx8KHM9dGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKVtlXSgpKSx0aGlzLmZvY3VzKGkscyl9LG5leHRQYWdlOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbjtyZXR1cm4gdGhpcy5hY3RpdmU/KHRoaXMuaXNMYXN0SXRlbSgpfHwodGhpcy5faGFzU2Nyb2xsKCk/KHM9dGhpcy5hY3RpdmUub2Zmc2V0KCkudG9wLG49dGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIGk9dCh0aGlzKSwwPmkub2Zmc2V0KCkudG9wLXMtbn0pLHRoaXMuZm9jdXMoZSxpKSk6dGhpcy5mb2N1cyhlLHRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcylbdGhpcy5hY3RpdmU/Imxhc3QiOiJmaXJzdCJdKCkpKSx2b2lkIDApOih0aGlzLm5leHQoZSksdm9pZCAwKX0scHJldmlvdXNQYWdlOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbjtyZXR1cm4gdGhpcy5hY3RpdmU/KHRoaXMuaXNGaXJzdEl0ZW0oKXx8KHRoaXMuX2hhc1Njcm9sbCgpPyhzPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxuPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBpPXQodGhpcyksaS5vZmZzZXQoKS50b3AtcytuPjB9KSx0aGlzLmZvY3VzKGUsaSkpOnRoaXMuZm9jdXMoZSx0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpcnN0KCkpKSx2b2lkIDApOih0aGlzLm5leHQoZSksdm9pZCAwKX0sX2hhc1Njcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKTx0aGlzLmVsZW1lbnQucHJvcCgic2Nyb2xsSGVpZ2h0Iil9LHNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLmFjdGl2ZT10aGlzLmFjdGl2ZXx8dChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIpO3ZhciBpPXtpdGVtOnRoaXMuYWN0aXZlfTt0aGlzLmFjdGl2ZS5oYXMoIi51aS1tZW51IikubGVuZ3RofHx0aGlzLmNvbGxhcHNlQWxsKGUsITApLHRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSxpKX0sX2ZpbHRlck1lbnVJdGVtczpmdW5jdGlvbihlKXt2YXIgaT1lLnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csIlxcJCYiKSxzPVJlZ0V4cCgiXiIraSwiaSIpO3JldHVybiB0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpbHRlcigiLnVpLW1lbnUtaXRlbSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBzLnRlc3QodC50cmltKHQodGhpcykudGV4dCgpKSl9KX19KSx0LndpZGdldCgidWkuYXV0b2NvbXBsZXRlIix7dmVyc2lvbjoiMS4xMS40IixkZWZhdWx0RWxlbWVudDoiPGlucHV0PiIsb3B0aW9uczp7YXBwZW5kVG86bnVsbCxhdXRvRm9jdXM6ITEsZGVsYXk6MzAwLG1pbkxlbmd0aDoxLHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJub25lIn0sc291cmNlOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxyZXNwb25zZTpudWxsLHNlYXJjaDpudWxsLHNlbGVjdDpudWxsfSxyZXF1ZXN0SW5kZXg6MCxwZW5kaW5nOjAsX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG89InRleHRhcmVhIj09PW4sYT0iaW5wdXQiPT09bjt0aGlzLmlzTXVsdGlMaW5lPW8/ITA6YT8hMTp0aGlzLmVsZW1lbnQucHJvcCgiaXNDb250ZW50RWRpdGFibGUiKSx0aGlzLnZhbHVlTWV0aG9kPXRoaXMuZWxlbWVudFtvfHxhPyJ2YWwiOiJ0ZXh0Il0sdGhpcy5pc05ld01lbnU9ITAsdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKSx0aGlzLl9vbih0aGlzLmVsZW1lbnQse2tleWRvd246ZnVuY3Rpb24obil7aWYodGhpcy5lbGVtZW50LnByb3AoInJlYWRPbmx5IikpcmV0dXJuIGU9ITAscz0hMCxpPSEwLHZvaWQgMDtlPSExLHM9ITEsaT0hMTt2YXIgbz10LnVpLmtleUNvZGU7c3dpdGNoKG4ua2V5Q29kZSl7Y2FzZSBvLlBBR0VfVVA6ZT0hMCx0aGlzLl9tb3ZlKCJwcmV2aW91c1BhZ2UiLG4pO2JyZWFrO2Nhc2Ugby5QQUdFX0RPV046ZT0hMCx0aGlzLl9tb3ZlKCJuZXh0UGFnZSIsbik7YnJlYWs7Y2FzZSBvLlVQOmU9ITAsdGhpcy5fa2V5RXZlbnQoInByZXZpb3VzIixuKTticmVhaztjYXNlIG8uRE9XTjplPSEwLHRoaXMuX2tleUV2ZW50KCJuZXh0IixuKTticmVhaztjYXNlIG8uRU5URVI6dGhpcy5tZW51LmFjdGl2ZSYmKGU9ITAsbi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubWVudS5zZWxlY3QobikpO2JyZWFrO2Nhc2Ugby5UQUI6dGhpcy5tZW51LmFjdGl2ZSYmdGhpcy5tZW51LnNlbGVjdChuKTticmVhaztjYXNlIG8uRVNDQVBFOnRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5pc011bHRpTGluZXx8dGhpcy5fdmFsdWUodGhpcy50ZXJtKSx0aGlzLmNsb3NlKG4pLG4ucHJldmVudERlZmF1bHQoKSk7YnJlYWs7ZGVmYXVsdDppPSEwLHRoaXMuX3NlYXJjaFRpbWVvdXQobil9fSxrZXlwcmVzczpmdW5jdGlvbihzKXtpZihlKXJldHVybiBlPSExLCghdGhpcy5pc011bHRpTGluZXx8dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikpJiZzLnByZXZlbnREZWZhdWx0KCksdm9pZCAwO2lmKCFpKXt2YXIgbj10LnVpLmtleUNvZGU7c3dpdGNoKHMua2V5Q29kZSl7Y2FzZSBuLlBBR0VfVVA6dGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixzKTticmVhaztjYXNlIG4uUEFHRV9ET1dOOnRoaXMuX21vdmUoIm5leHRQYWdlIixzKTticmVhaztjYXNlIG4uVVA6dGhpcy5fa2V5RXZlbnQoInByZXZpb3VzIixzKTticmVhaztjYXNlIG4uRE9XTjp0aGlzLl9rZXlFdmVudCgibmV4dCIscyl9fX0saW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHM/KHM9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMCk6KHRoaXMuX3NlYXJjaFRpbWVvdXQodCksdm9pZCAwKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbT1udWxsLHRoaXMucHJldmlvdXM9dGhpcy5fdmFsdWUoKX0sYmx1cjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jYW5jZWxCbHVyPyhkZWxldGUgdGhpcy5jYW5jZWxCbHVyLHZvaWQgMCk6KGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5jbG9zZSh0KSx0aGlzLl9jaGFuZ2UodCksdm9pZCAwKX19KSx0aGlzLl9pbml0U291cmNlKCksdGhpcy5tZW51PXQoIjx1bD4iKS5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlIHVpLWZyb250IikuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSkubWVudSh7cm9sZTpudWxsfSkuaGlkZSgpLm1lbnUoImluc3RhbmNlIiksdGhpcy5fb24odGhpcy5tZW51LmVsZW1lbnQse21vdXNlZG93bjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5jYW5jZWxCbHVyPSEwLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuY2FuY2VsQmx1cn0pO3ZhciBpPXRoaXMubWVudS5lbGVtZW50WzBdO3QoZS50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh8fHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vkb3duIixmdW5jdGlvbihzKXtzLnRhcmdldD09PWUuZWxlbWVudFswXXx8cy50YXJnZXQ9PT1pfHx0LmNvbnRhaW5zKGkscy50YXJnZXQpfHxlLmNsb3NlKCl9KX0pfSxtZW51Zm9jdXM6ZnVuY3Rpb24oZSxpKXt2YXIgcyxuO3JldHVybiB0aGlzLmlzTmV3TWVudSYmKHRoaXMuaXNOZXdNZW51PSExLGUub3JpZ2luYWxFdmVudCYmL15tb3VzZS8udGVzdChlLm9yaWdpbmFsRXZlbnQudHlwZSkpPyh0aGlzLm1lbnUuYmx1cigpLHRoaXMuZG9jdW1lbnQub25lKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7dChlLnRhcmdldCkudHJpZ2dlcihlLm9yaWdpbmFsRXZlbnQpfSksdm9pZCAwKToobj1pLml0ZW0uZGF0YSgidWktYXV0b2NvbXBsZXRlLWl0ZW0iKSwhMSE9PXRoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOm59KSYmZS5vcmlnaW5hbEV2ZW50JiYvXmtleS8udGVzdChlLm9yaWdpbmFsRXZlbnQudHlwZSkmJnRoaXMuX3ZhbHVlKG4udmFsdWUpLHM9aS5pdGVtLmF0dHIoImFyaWEtbGFiZWwiKXx8bi52YWx1ZSxzJiZ0LnRyaW0ocykubGVuZ3RoJiYodGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHQoIjxkaXY+IikudGV4dChzKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pKSx2b2lkIDApfSxtZW51c2VsZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIikscz10aGlzLnByZXZpb3VzO3RoaXMuZWxlbWVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCYmKHRoaXMuZWxlbWVudC5mb2N1cygpLHRoaXMucHJldmlvdXM9cyx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9cyx0aGlzLnNlbGVjdGVkSXRlbT1pfSkpLCExIT09dGhpcy5fdHJpZ2dlcigic2VsZWN0Iix0LHtpdGVtOml9KSYmdGhpcy5fdmFsdWUoaS52YWx1ZSksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCksdGhpcy5jbG9zZSh0KSx0aGlzLnNlbGVjdGVkSXRlbT1pfX0pLHRoaXMubGl2ZVJlZ2lvbj10KCI8c3Bhbj4iLHtyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMuX29uKHRoaXMud2luZG93LHtiZWZvcmV1bmxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIil9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoaW5nKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1pbnB1dCIpLnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpLHRoaXMubWVudS5lbGVtZW50LnJlbW92ZSgpLHRoaXMubGl2ZVJlZ2lvbi5yZW1vdmUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuX3N1cGVyKHQsZSksInNvdXJjZSI9PT10JiZ0aGlzLl9pbml0U291cmNlKCksImFwcGVuZFRvIj09PXQmJnRoaXMubWVudS5lbGVtZW50LmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLCJkaXNhYmxlZCI9PT10JiZlJiZ0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKX0sX2FwcGVuZFRvOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmFwcGVuZFRvO3JldHVybiBlJiYoZT1lLmpxdWVyeXx8ZS5ub2RlVHlwZT90KGUpOnRoaXMuZG9jdW1lbnQuZmluZChlKS5lcSgwKSksZSYmZVswXXx8KGU9dGhpcy5lbGVtZW50LmNsb3Nlc3QoIi51aS1mcm9udCIpKSxlLmxlbmd0aHx8KGU9dGhpcy5kb2N1bWVudFswXS5ib2R5KSxlfSxfaW5pdFNvdXJjZTpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzO3QuaXNBcnJheSh0aGlzLm9wdGlvbnMuc291cmNlKT8oZT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGkscyl7cyh0LnVpLmF1dG9jb21wbGV0ZS5maWx0ZXIoZSxpLnRlcm0pKX0pOiJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLnNvdXJjZT8oaT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGUsbil7cy54aHImJnMueGhyLmFib3J0KCkscy54aHI9dC5hamF4KHt1cmw6aSxkYXRhOmUsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7bih0KX0sZXJyb3I6ZnVuY3Rpb24oKXtuKFtdKX19KX0pOnRoaXMuc291cmNlPXRoaXMub3B0aW9ucy5zb3VyY2V9LF9zZWFyY2hUaW1lb3V0OmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5zZWFyY2hpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRlcm09PT10aGlzLl92YWx1ZSgpLGk9dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikscz10LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fHQuc2hpZnRLZXk7KCFlfHxlJiYhaSYmIXMpJiYodGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnNlYXJjaChudWxsLHQpKX0sdGhpcy5vcHRpb25zLmRlbGF5KX0sc2VhcmNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bnVsbCE9dD90OnRoaXMuX3ZhbHVlKCksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCksdC5sZW5ndGg8dGhpcy5vcHRpb25zLm1pbkxlbmd0aD90aGlzLmNsb3NlKGUpOnRoaXMuX3RyaWdnZXIoInNlYXJjaCIsZSkhPT0hMT90aGlzLl9zZWFyY2godCk6dm9pZCAwfSxfc2VhcmNoOmZ1bmN0aW9uKHQpe3RoaXMucGVuZGluZysrLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRpbmciKSx0aGlzLmNhbmNlbFNlYXJjaD0hMSx0aGlzLnNvdXJjZSh7dGVybTp0fSx0aGlzLl9yZXNwb25zZSgpKX0sX3Jlc3BvbnNlOmZ1bmN0aW9uKCl7dmFyIGU9Kyt0aGlzLnJlcXVlc3RJbmRleDtyZXR1cm4gdC5wcm94eShmdW5jdGlvbih0KXtlPT09dGhpcy5yZXF1ZXN0SW5kZXgmJnRoaXMuX19yZXNwb25zZSh0KSx0aGlzLnBlbmRpbmctLSx0aGlzLnBlbmRpbmd8fHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRpbmciKX0sdGhpcyl9LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dCYmKHQ9dGhpcy5fbm9ybWFsaXplKHQpKSx0aGlzLl90cmlnZ2VyKCJyZXNwb25zZSIsbnVsbCx7Y29udGVudDp0fSksIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdCYmdC5sZW5ndGgmJiF0aGlzLmNhbmNlbFNlYXJjaD8odGhpcy5fc3VnZ2VzdCh0KSx0aGlzLl90cmlnZ2VyKCJvcGVuIikpOnRoaXMuX2Nsb3NlKCl9LGNsb3NlOmZ1bmN0aW9uKHQpe3RoaXMuY2FuY2VsU2VhcmNoPSEwLHRoaXMuX2Nsb3NlKHQpfSxfY2xvc2U6ZnVuY3Rpb24odCl7dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikmJih0aGlzLm1lbnUuZWxlbWVudC5oaWRlKCksdGhpcy5tZW51LmJsdXIoKSx0aGlzLmlzTmV3TWVudT0hMCx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCkpfSxfY2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMucHJldmlvdXMhPT10aGlzLl92YWx1ZSgpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQse2l0ZW06dGhpcy5zZWxlY3RlZEl0ZW19KX0sX25vcm1hbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGgmJmVbMF0ubGFiZWwmJmVbMF0udmFsdWU/ZTp0Lm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT97bGFiZWw6ZSx2YWx1ZTplfTp0LmV4dGVuZCh7fSxlLHtsYWJlbDplLmxhYmVsfHxlLnZhbHVlLHZhbHVlOmUudmFsdWV8fGUubGFiZWx9KX0pfSxfc3VnZ2VzdDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm1lbnUuZWxlbWVudC5lbXB0eSgpO3RoaXMuX3JlbmRlck1lbnUoaSxlKSx0aGlzLmlzTmV3TWVudT0hMCx0aGlzLm1lbnUucmVmcmVzaCgpLGkuc2hvdygpLHRoaXMuX3Jlc2l6ZU1lbnUoKSxpLnBvc2l0aW9uKHQuZXh0ZW5kKHtvZjp0aGlzLmVsZW1lbnR9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLHRoaXMub3B0aW9ucy5hdXRvRm9jdXMmJnRoaXMubWVudS5uZXh0KCl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tZW51LmVsZW1lbnQ7dC5vdXRlcldpZHRoKE1hdGgubWF4KHQud2lkdGgoIiIpLm91dGVyV2lkdGgoKSsxLHRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCkpKX0sX3JlbmRlck1lbnU6ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO3QuZWFjaChpLGZ1bmN0aW9uKHQsaSl7cy5fcmVuZGVySXRlbURhdGEoZSxpKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVySXRlbSh0LGUpLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIixlKX0sX3JlbmRlckl0ZW06ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdCgiPGxpPiIpLnRleHQoaS5sYWJlbCkuYXBwZW5kVG8oZSl9LF9tb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpP3RoaXMubWVudS5pc0ZpcnN0SXRlbSgpJiYvXnByZXZpb3VzLy50ZXN0KHQpfHx0aGlzLm1lbnUuaXNMYXN0SXRlbSgpJiYvXm5leHQvLnRlc3QodCk/KHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMuX3ZhbHVlKHRoaXMudGVybSksdGhpcy5tZW51LmJsdXIoKSx2b2lkIDApOih0aGlzLm1lbnVbdF0oZSksdm9pZCAwKToodGhpcy5zZWFyY2gobnVsbCxlKSx2b2lkIDApfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51LmVsZW1lbnR9LF92YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlTWV0aG9kLmFwcGx5KHRoaXMuZWxlbWVudCxhcmd1bWVudHMpfSxfa2V5RXZlbnQ6ZnVuY3Rpb24odCxlKXsoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpKSYmKHRoaXMuX21vdmUodCxlKSxlLnByZXZlbnREZWZhdWx0KCkpfX0pLHQuZXh0ZW5kKHQudWkuYXV0b2NvbXBsZXRlLHtlc2NhcGVSZWdleDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXC1cW1xde30oKSorPy4sXFxcXiR8I1xzXS9nLCJcXCQmIil9LGZpbHRlcjpmdW5jdGlvbihlLGkpe3ZhciBzPVJlZ0V4cCh0LnVpLmF1dG9jb21wbGV0ZS5lc2NhcGVSZWdleChpKSwiaSIpO3JldHVybiB0LmdyZXAoZSxmdW5jdGlvbih0KXtyZXR1cm4gcy50ZXN0KHQubGFiZWx8fHQudmFsdWV8fHQpfSl9fSksdC53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIsdC51aS5hdXRvY29tcGxldGUse29wdGlvbnM6e21lc3NhZ2VzOntub1Jlc3VsdHM6Ik5vIHNlYXJjaCByZXN1bHRzLiIscmVzdWx0czpmdW5jdGlvbih0KXtyZXR1cm4gdCsodD4xPyIgcmVzdWx0cyBhcmUiOiIgcmVzdWx0IGlzIikrIiBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiJ9fX0sX19yZXNwb25zZTpmdW5jdGlvbihlKXt2YXIgaTt0aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyksdGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLmNhbmNlbFNlYXJjaHx8KGk9ZSYmZS5sZW5ndGg/dGhpcy5vcHRpb25zLm1lc3NhZ2VzLnJlc3VsdHMoZS5sZW5ndGgpOnRoaXMub3B0aW9ucy5tZXNzYWdlcy5ub1Jlc3VsdHMsdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHQoIjxkaXY+IikudGV4dChpKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pKX19KSx0LnVpLmF1dG9jb21wbGV0ZSx0LndpZGdldCgidWkudG9vbHRpcCIse3ZlcnNpb246IjEuMTEuNCIsb3B0aW9uczp7Y29udGVudDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykuYXR0cigidGl0bGUiKXx8IiI7cmV0dXJuIHQoIjxhPiIpLnRleHQoZSkuaHRtbCgpfSxoaWRlOiEwLGl0ZW1zOiJbdGl0bGVdOm5vdChbZGlzYWJsZWRdKSIscG9zaXRpb246e215OiJsZWZ0IHRvcCsxNSIsYXQ6ImxlZnQgYm90dG9tIixjb2xsaXNpb246ImZsaXBmaXQgZmxpcCJ9LHNob3c6ITAsdG9vbHRpcENsYXNzOm51bGwsdHJhY2s6ITEsY2xvc2U6bnVsbCxvcGVuOm51bGx9LF9hZGREZXNjcmliZWRCeTpmdW5jdGlvbihlLGkpe3ZhciBzPShlLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKXx8IiIpLnNwbGl0KC9ccysvKTtzLnB1c2goaSksZS5kYXRhKCJ1aS10b29sdGlwLWlkIixpKS5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iix0LnRyaW0ocy5qb2luKCIgIikpKX0sX3JlbW92ZURlc2NyaWJlZEJ5OmZ1bmN0aW9uKGUpe3ZhciBpPWUuZGF0YSgidWktdG9vbHRpcC1pZCIpLHM9KGUuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpfHwiIikuc3BsaXQoL1xzKy8pLG49dC5pbkFycmF5KGkscyk7LTEhPT1uJiZzLnNwbGljZShuLDEpLGUucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1pZCIpLHM9dC50cmltKHMuam9pbigiICIpKSxzP2UuYXR0cigiYXJpYS1kZXNjcmliZWRieSIscyk6ZS5yZW1vdmVBdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vbih7bW91c2VvdmVyOiJvcGVuIixmb2N1c2luOiJvcGVuIn0pLHRoaXMudG9vbHRpcHM9e30sdGhpcy5wYXJlbnRzPXt9LHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fZGlzYWJsZSgpLHRoaXMubGl2ZVJlZ2lvbj10KCI8ZGl2PiIpLmF0dHIoe3JvbGU6ImxvZyIsImFyaWEtbGl2ZSI6ImFzc2VydGl2ZSIsImFyaWEtcmVsZXZhbnQiOiJhZGRpdGlvbnMifSkuYWRkQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLmFwcGVuZFRvKHRoaXMuZG9jdW1lbnRbMF0uYm9keSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO3JldHVybiJkaXNhYmxlZCI9PT1lPyh0aGlzW2k/Il9kaXNhYmxlIjoiX2VuYWJsZSJdKCksdGhpcy5vcHRpb25zW2VdPWksdm9pZCAwKToodGhpcy5fc3VwZXIoZSxpKSwiY29udGVudCI9PT1lJiZ0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbih0LGUpe3MuX3VwZGF0ZUNvbnRlbnQoZS5lbGVtZW50KX0pLHZvaWQgMCl9LF9kaXNhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPXQuRXZlbnQoImJsdXIiKTtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9cy5lbGVtZW50WzBdLGUuY2xvc2UobiwhMCl9KSx0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmlzKCJbdGl0bGVdIikmJmUuZGF0YSgidWktdG9vbHRpcC10aXRsZSIsZS5hdHRyKCJ0aXRsZSIpKS5yZW1vdmVBdHRyKCJ0aXRsZSIpfSl9LF9lbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmZS5hdHRyKCJ0aXRsZSIsZS5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSl9LG9wZW46ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPXQoZT9lLnRhcmdldDp0aGlzLmVsZW1lbnQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLml0ZW1zKTtzLmxlbmd0aCYmIXMuZGF0YSgidWktdG9vbHRpcC1pZCIpJiYocy5hdHRyKCJ0aXRsZSIpJiZzLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHMuYXR0cigidGl0bGUiKSkscy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iLCEwKSxlJiYibW91c2VvdmVyIj09PWUudHlwZSYmcy5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3ZhciBlLHM9dCh0aGlzKTtzLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYoZT10LkV2ZW50KCJibHVyIiksZS50YXJnZXQ9ZS5jdXJyZW50VGFyZ2V0PXRoaXMsaS5jbG9zZShlLCEwKSkscy5hdHRyKCJ0aXRsZSIpJiYocy51bmlxdWVJZCgpLGkucGFyZW50c1t0aGlzLmlkXT17ZWxlbWVudDp0aGlzLHRpdGxlOnMuYXR0cigidGl0bGUiKX0scy5hdHRyKCJ0aXRsZSIsIiIpKX0pLHRoaXMuX3JlZ2lzdGVyQ2xvc2VIYW5kbGVycyhlLHMpLHRoaXMuX3VwZGF0ZUNvbnRlbnQocyxlKSl9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz10aGlzLm9wdGlvbnMuY29udGVudCxuPXRoaXMsbz1lP2UudHlwZTpudWxsO3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz90aGlzLl9vcGVuKGUsdCxzKTooaT1zLmNhbGwodFswXSxmdW5jdGlvbihpKXtuLl9kZWxheShmdW5jdGlvbigpe3QuZGF0YSgidWktdG9vbHRpcC1vcGVuIikmJihlJiYoZS50eXBlPW8pLHRoaXMuX29wZW4oZSx0LGkpKX0pfSksaSYmdGhpcy5fb3BlbihlLHQsaSksdm9pZCAwKX0sX29wZW46ZnVuY3Rpb24oZSxpLHMpe2Z1bmN0aW9uIG4odCl7aC5vZj10LGEuaXMoIjpoaWRkZW4iKXx8YS5wb3NpdGlvbihoKX12YXIgbyxhLHIsbCxoPXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucy5wb3NpdGlvbik7aWYocyl7aWYobz10aGlzLl9maW5kKGkpKXJldHVybiBvLnRvb2x0aXAuZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwocyksdm9pZCAwO2kuaXMoIlt0aXRsZV0iKSYmKGUmJiJtb3VzZW92ZXIiPT09ZS50eXBlP2kuYXR0cigidGl0bGUiLCIiKTppLnJlbW92ZUF0dHIoInRpdGxlIikpLG89dGhpcy5fdG9vbHRpcChpKSxhPW8udG9vbHRpcCx0aGlzLl9hZGREZXNjcmliZWRCeShpLGEuYXR0cigiaWQiKSksYS5maW5kKCIudWktdG9vbHRpcC1jb250ZW50IikuaHRtbChzKSx0aGlzLmxpdmVSZWdpb24uY2hpbGRyZW4oKS5oaWRlKCkscy5jbG9uZT8obD1zLmNsb25lKCksbC5yZW1vdmVBdHRyKCJpZCIpLmZpbmQoIltpZF0iKS5yZW1vdmVBdHRyKCJpZCIpKTpsPXMsdCgiPGRpdj4iKS5odG1sKGwpLmFwcGVuZFRvKHRoaXMubGl2ZVJlZ2lvbiksdGhpcy5vcHRpb25zLnRyYWNrJiZlJiYvXm1vdXNlLy50ZXN0KGUudHlwZSk/KHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse21vdXNlbW92ZTpufSksbihlKSk6YS5wb3NpdGlvbih0LmV4dGVuZCh7b2Y6aX0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKSksYS5oaWRlKCksdGhpcy5fc2hvdyhhLHRoaXMub3B0aW9ucy5zaG93KSx0aGlzLm9wdGlvbnMuc2hvdyYmdGhpcy5vcHRpb25zLnNob3cuZGVsYXkmJihyPXRoaXMuZGVsYXllZFNob3c9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLmlzKCI6dmlzaWJsZSIpJiYobihoLm9mKSxjbGVhckludGVydmFsKHIpKX0sdC5meC5pbnRlcnZhbCkpLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUse3Rvb2x0aXA6YX0pfX0sX3JlZ2lzdGVyQ2xvc2VIYW5kbGVyczpmdW5jdGlvbihlLGkpe3ZhciBzPXtrZXl1cDpmdW5jdGlvbihlKXtpZihlLmtleUNvZGU9PT10LnVpLmtleUNvZGUuRVNDQVBFKXt2YXIgcz10LkV2ZW50KGUpO3MuY3VycmVudFRhcmdldD1pWzBdLHRoaXMuY2xvc2UocywhMCl9fX07aVswXSE9PXRoaXMuZWxlbWVudFswXSYmKHMucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlVG9vbHRpcCh0aGlzLl9maW5kKGkpLnRvb2x0aXApfSksZSYmIm1vdXNlb3ZlciIhPT1lLnR5cGV8fChzLm1vdXNlbGVhdmU9ImNsb3NlIiksZSYmImZvY3VzaW4iIT09ZS50eXBlfHwocy5mb2N1c291dD0iY2xvc2UiKSx0aGlzLl9vbighMCxpLHMpfSxjbG9zZTpmdW5jdGlvbihlKXt2YXIgaSxzPXRoaXMsbj10KGU/ZS5jdXJyZW50VGFyZ2V0OnRoaXMuZWxlbWVudCksbz10aGlzLl9maW5kKG4pO3JldHVybiBvPyhpPW8udG9vbHRpcCxvLmNsb3Npbmd8fChjbGVhckludGVydmFsKHRoaXMuZGVsYXllZFNob3cpLG4uZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYhbi5hdHRyKCJ0aXRsZSIpJiZuLmF0dHIoInRpdGxlIixuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksdGhpcy5fcmVtb3ZlRGVzY3JpYmVkQnkobiksby5oaWRpbmc9ITAsaS5zdG9wKCEwKSx0aGlzLl9oaWRlKGksdGhpcy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtzLl9yZW1vdmVUb29sdGlwKHQodGhpcykpfSksbi5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLW9wZW4iKSx0aGlzLl9vZmYobiwibW91c2VsZWF2ZSBmb2N1c291dCBrZXl1cCIpLG5bMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuX29mZihuLCJyZW1vdmUiKSx0aGlzLl9vZmYodGhpcy5kb2N1bWVudCwibW91c2Vtb3ZlIiksZSYmIm1vdXNlbGVhdmUiPT09ZS50eXBlJiZ0LmVhY2godGhpcy5wYXJlbnRzLGZ1bmN0aW9uKGUsaSl7dChpLmVsZW1lbnQpLmF0dHIoInRpdGxlIixpLnRpdGxlKSxkZWxldGUgcy5wYXJlbnRzW2VdfSksby5jbG9zaW5nPSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlLHt0b29sdGlwOml9KSxvLmhpZGluZ3x8KG8uY2xvc2luZz0hMSkpLHZvaWQgMCk6KG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdm9pZCAwKX0sX3Rvb2x0aXA6ZnVuY3Rpb24oZSl7dmFyIGk9dCgiPGRpdj4iKS5hdHRyKCJyb2xlIiwidG9vbHRpcCIpLmFkZENsYXNzKCJ1aS10b29sdGlwIHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXdpZGdldC1jb250ZW50ICIrKHRoaXMub3B0aW9ucy50b29sdGlwQ2xhc3N8fCIiKSkscz1pLnVuaXF1ZUlkKCkuYXR0cigiaWQiKTtyZXR1cm4gdCgiPGRpdj4iKS5hZGRDbGFzcygidWktdG9vbHRpcC1jb250ZW50IikuYXBwZW5kVG8oaSksaS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMudG9vbHRpcHNbc109e2VsZW1lbnQ6ZSx0b29sdGlwOml9fSxfZmluZDpmdW5jdGlvbih0KXt2YXIgZT10LmRhdGEoInVpLXRvb2x0aXAtaWQiKTtyZXR1cm4gZT90aGlzLnRvb2x0aXBzW2VdOm51bGx9LF9yZW1vdmVUb29sdGlwOmZ1bmN0aW9uKHQpe3QucmVtb3ZlKCksZGVsZXRlIHRoaXMudG9vbHRpcHNbdC5hdHRyKCJpZCIpXX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QuZWFjaCh0aGlzLnRvb2x0aXBzLGZ1bmN0aW9uKGkscyl7dmFyIG49dC5FdmVudCgiYmx1ciIpLG89cy5lbGVtZW50O24udGFyZ2V0PW4uY3VycmVudFRhcmdldD1vWzBdLGUuY2xvc2UobiwhMCksdCgiIyIraSkucmVtb3ZlKCksby5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJihvLmF0dHIoInRpdGxlIil8fG8uYXR0cigidGl0bGUiLG8uZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKSxvLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSl9KSx0aGlzLmxpdmVSZWdpb24ucmVtb3ZlKCl9fSl9KTsJCQoKLyoKICogalF1ZXJ5IFVJIFRvdWNoIFB1bmNoIDAuMi4yCiAqCiAqIENvcHlyaWdodCAyMDExLCBEYXZlIEZ1cmZlcm8KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqCiAqIERlcGVuZHM6CiAqICBqcXVlcnkudWkud2lkZ2V0LmpzCiAqICBqcXVlcnkudWkubW91c2UuanMKICovCjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlLHQpe2lmKGUub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aD4xKXtyZXR1cm59ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWUub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSxyPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO3IuaW5pdE1vdXNlRXZlbnQodCx0cnVlLHRydWUsd2luZG93LDEsbi5zY3JlZW5YLG4uc2NyZWVuWSxuLmNsaWVudFgsbi5jbGllbnRZLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLDAsbnVsbCk7ZS50YXJnZXQuZGlzcGF0Y2hFdmVudChyKX1lLnN1cHBvcnQudG91Y2g9Im9udG91Y2hlbmQiaW4gZG9jdW1lbnQ7aWYoIWUuc3VwcG9ydC50b3VjaCl7cmV0dXJufXZhciB0PWUudWkubW91c2UucHJvdG90eXBlLG49dC5fbW91c2VJbml0LHI7dC5fdG91Y2hTdGFydD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHJ8fCF0Ll9tb3VzZUNhcHR1cmUoZS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKSl7cmV0dXJufXI9dHJ1ZTt0Ll90b3VjaE1vdmVkPWZhbHNlO2koZSwibW91c2VvdmVyIik7aShlLCJtb3VzZW1vdmUiKTtpKGUsIm1vdXNlZG93biIpfTt0Ll90b3VjaE1vdmU9ZnVuY3Rpb24oZSl7aWYoIXIpe3JldHVybn10aGlzLl90b3VjaE1vdmVkPXRydWU7aShlLCJtb3VzZW1vdmUiKX07dC5fdG91Y2hFbmQ9ZnVuY3Rpb24oZSl7aWYoIXIpe3JldHVybn1pKGUsIm1vdXNldXAiKTtpKGUsIm1vdXNlb3V0Iik7aWYoIXRoaXMuX3RvdWNoTW92ZWQpe2koZSwiY2xpY2siKX1yPWZhbHNlfTt0Ll9tb3VzZUluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuZWxlbWVudC5iaW5kKCJ0b3VjaHN0YXJ0IixlLnByb3h5KHQsIl90b3VjaFN0YXJ0IikpLmJpbmQoInRvdWNobW92ZSIsZS5wcm94eSh0LCJfdG91Y2hNb3ZlIikpLmJpbmQoInRvdWNoZW5kIixlLnByb3h5KHQsIl90b3VjaEVuZCIpKTtuLmNhbGwodCl9fSkoalF1ZXJ5KTsKCgovKlNlbGVjdDIgMy41LjQgwqkgMjAxMiBJZ29yIFZheW5iZXJnKi8KIWZ1bmN0aW9uKHgpe3ZvaWQgMD09PXguZm4uZWFjaDImJnguZXh0ZW5kKHguZm4se2VhY2gyOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj14KFswXSksYz0tMSxkPXRoaXMubGVuZ3RoOysrYzxkJiYoYi5jb250ZXh0PWJbMF09dGhpc1tjXSkmJiExIT09YS5jYWxsKGJbMF0sYyxiKTspO3JldHVybiB0aGlzfX0pfShqUXVlcnkpLGZ1bmN0aW9uKHgsYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7dmFyIGI9eChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpO2EuYmVmb3JlKGIpLGIuYmVmb3JlKGEpLGIucmVtb3ZlKCl9ZnVuY3Rpb24gYyh4KXtmdW5jdGlvbiBhKHgpe3JldHVybiBPW3hdfHx4fXJldHVybiB4LnJlcGxhY2UoL1teXHUwMDAwLVx1MDA3RV0vZyxhKX1mdW5jdGlvbiBkKHgsYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtjPmI7Yis9MSlpZihmKHgsYVtiXSkpcmV0dXJuIGI7cmV0dXJuLTF9ZnVuY3Rpb24gZSgpe3ZhciBhPXgoTik7YS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTt2YXIgYj17d2lkdGg6YS53aWR0aCgpLWFbMF0uY2xpZW50V2lkdGgsaGVpZ2h0OmEuaGVpZ2h0KCktYVswXS5jbGllbnRIZWlnaHR9O3JldHVybiBhLnJlbW92ZSgpLGJ9ZnVuY3Rpb24gZih4LGIpe3JldHVybiB4PT09Ynx8eCE9PWEmJmIhPT1hJiYobnVsbCE9PXgmJm51bGwhPT1iJiYoeC5jb25zdHJ1Y3Rvcj09PVN0cmluZz94KyIiPT1iKyIiOmIuY29uc3RydWN0b3I9PT1TdHJpbmcmJmIrIiI9PXgrIiIpKX1mdW5jdGlvbiBnKHgsYSxiKXt2YXIgYyxkLGU7aWYobnVsbD09PXh8fHgubGVuZ3RoPDEpcmV0dXJuW107Zm9yKGQ9MCxlPShjPXguc3BsaXQoYSkpLmxlbmd0aDtlPmQ7ZCs9MSljW2RdPWIoY1tkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gaCh4KXtyZXR1cm4geC5vdXRlcldpZHRoKCExKS14LndpZHRoKCl9ZnVuY3Rpb24gaShiKXt2YXIgYz0ia2V5dXAtY2hhbmdlLXZhbHVlIjtiLm9uKCJrZXlkb3duIixmdW5jdGlvbigpe3guZGF0YShiLGMpPT09YSYmeC5kYXRhKGIsYyxiLnZhbCgpKX0pLGIub24oImtleXVwIixmdW5jdGlvbigpe3ZhciBkPXguZGF0YShiLGMpO2QhPT1hJiZiLnZhbCgpIT09ZCYmKHgucmVtb3ZlRGF0YShiLGMpLGIudHJpZ2dlcigia2V5dXAtY2hhbmdlIikpfSl9ZnVuY3Rpb24gaihiKXtiLm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGIpe3ZhciBjPUw7KGM9PT1hfHxjLnghPT1iLnBhZ2VYfHxjLnkhPT1iLnBhZ2VZKSYmeChiLnRhcmdldCkudHJpZ2dlcigibW91c2Vtb3ZlLWZpbHRlcmVkIixiKX0pfWZ1bmN0aW9uIGsoeCxiLGMpe3ZhciBkO3JldHVybiBjPWN8fGEsZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7d2luZG93LmNsZWFyVGltZW91dChkKSxkPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5hcHBseShjLGEpfSx4KX19ZnVuY3Rpb24gbCh4LGEpe3ZhciBiPWsoeCxmdW5jdGlvbih4KXthLnRyaWdnZXIoInNjcm9sbC1kZWJvdW5jZWQiLHgpfSk7YS5vbigic2Nyb2xsIixmdW5jdGlvbih4KXtkKHgudGFyZ2V0LGEuZ2V0KCkpPj0wJiZiKHgpfSl9ZnVuY3Rpb24gbSh4KXt4WzBdIT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYSxiPXhbMF0sYz14LnZhbCgpLmxlbmd0aDt4LmZvY3VzKCksKGIub2Zmc2V0V2lkdGg+MHx8Yi5vZmZzZXRIZWlnaHQ+MCkmJmI9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYoYi5zZXRTZWxlY3Rpb25SYW5nZT9iLnNldFNlbGVjdGlvblJhbmdlKGMsYyk6Yi5jcmVhdGVUZXh0UmFuZ2UmJigoYT1iLmNyZWF0ZVRleHRSYW5nZSgpKS5jb2xsYXBzZSghMSksYS5zZWxlY3QoKSkpfSwwKX1mdW5jdGlvbiBuKGEpe3ZhciBiPTAsYz0wO2lmKCJzZWxlY3Rpb25TdGFydCJpbihhPXgoYSlbMF0pKWI9YS5zZWxlY3Rpb25TdGFydCxjPWEuc2VsZWN0aW9uRW5kLWI7ZWxzZSBpZigic2VsZWN0aW9uImluIGRvY3VtZW50KXthLmZvY3VzKCk7dmFyIGQ9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7Yz1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS50ZXh0Lmxlbmd0aCxkLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtYS52YWx1ZS5sZW5ndGgpLGI9ZC50ZXh0Lmxlbmd0aC1jfXJldHVybntvZmZzZXQ6YixsZW5ndGg6Y319ZnVuY3Rpb24gbyh4KXt4LnByZXZlbnREZWZhdWx0KCkseC5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBwKHgpe3gucHJldmVudERlZmF1bHQoKSx4LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHEoYSl7aWYoIUkpe3ZhciBiPWFbMF0uY3VycmVudFN0eWxlfHx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhWzBdLG51bGwpOyhJPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMDBweCIsdG9wOiItMTAwMDBweCIsZGlzcGxheToibm9uZSIsZm9udFNpemU6Yi5mb250U2l6ZSxmb250RmFtaWx5OmIuZm9udEZhbWlseSxmb250U3R5bGU6Yi5mb250U3R5bGUsZm9udFdlaWdodDpiLmZvbnRXZWlnaHQsbGV0dGVyU3BhY2luZzpiLmxldHRlclNwYWNpbmcsdGV4dFRyYW5zZm9ybTpiLnRleHRUcmFuc2Zvcm0sd2hpdGVTcGFjZToibm93cmFwIn0pKS5hdHRyKCJjbGFzcyIsInNlbGVjdDItc2l6ZXIiKSx4KGRvY3VtZW50LmJvZHkpLmFwcGVuZChJKX1yZXR1cm4gSS50ZXh0KGEudmFsKCkpLEkud2lkdGgoKX1mdW5jdGlvbiByKGEsYixjKXt2YXIgZCxlLGY9W107KGQ9eC50cmltKGEuYXR0cigiY2xhc3MiKSkpJiZ4KChkPSIiK2QpLnNwbGl0KC9ccysvKSkuZWFjaDIoZnVuY3Rpb24oKXswPT09dGhpcy5pbmRleE9mKCJzZWxlY3QyLSIpJiZmLnB1c2godGhpcyl9KSwoZD14LnRyaW0oYi5hdHRyKCJjbGFzcyIpKSkmJngoKGQ9IiIrZCkuc3BsaXQoL1xzKy8pKS5lYWNoMihmdW5jdGlvbigpezAhPT10aGlzLmluZGV4T2YoInNlbGVjdDItIikmJigoZT1jKHRoaXMpKSYmZi5wdXNoKGUpKX0pLGEuYXR0cigiY2xhc3MiLGYuam9pbigiICIpKX1mdW5jdGlvbiBzKHgsYSxiLGQpe3ZhciBlPWMoeC50b1VwcGVyQ2FzZSgpKS5pbmRleE9mKGMoYS50b1VwcGVyQ2FzZSgpKSksZj1hLmxlbmd0aDtyZXR1cm4gMD5lPyhiLnB1c2goZCh4KSksdm9pZCAwKTooYi5wdXNoKGQoeC5zdWJzdHJpbmcoMCxlKSkpLGIucHVzaCgiPHNwYW4gY2xhc3M9J3NlbGVjdDItbWF0Y2gnPiIpLGIucHVzaChkKHguc3Vic3RyaW5nKGUsZStmKSkpLGIucHVzaCgiPC9zcGFuPiIpLGIucHVzaChkKHguc3Vic3RyaW5nKGUrZix4Lmxlbmd0aCkpKSx2b2lkIDApfWZ1bmN0aW9uIHQoeCl7dmFyIGE9eyJcXCI6IiYjOTI7IiwiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsiLCIvIjoiJiM0NzsifTtyZXR1cm4gU3RyaW5nKHgpLnJlcGxhY2UoL1smPD4iJ1wvXFxdL2csZnVuY3Rpb24oeCl7cmV0dXJuIGFbeF19KX1mdW5jdGlvbiB1KGIpe3ZhciBjLGQ9bnVsbCxlPWIucXVpZXRNaWxsaXN8fDEwMCxmPWIudXJsLGc9dGhpcztyZXR1cm4gZnVuY3Rpb24oaCl7d2luZG93LmNsZWFyVGltZW91dChjKSxjPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGM9Yi5kYXRhLGU9ZixpPWIudHJhbnNwb3J0fHx4LmZuLnNlbGVjdDIuYWpheERlZmF1bHRzLnRyYW5zcG9ydCxqPXt0eXBlOmIudHlwZXx8IkdFVCIsY2FjaGU6Yi5jYWNoZXx8ITEsanNvbnBDYWxsYmFjazpiLmpzb25wQ2FsbGJhY2t8fGEsZGF0YVR5cGU6Yi5kYXRhVHlwZXx8Impzb24ifSxrPXguZXh0ZW5kKHt9LHguZm4uc2VsZWN0Mi5hamF4RGVmYXVsdHMucGFyYW1zLGopO2M9Yz9jLmNhbGwoZyxoLnRlcm0saC5wYWdlLGguY29udGV4dCk6bnVsbCxlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbChnLGgudGVybSxoLnBhZ2UsaC5jb250ZXh0KTplLGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkLmFib3J0JiZkLmFib3J0KCksYi5wYXJhbXMmJih4LmlzRnVuY3Rpb24oYi5wYXJhbXMpP3guZXh0ZW5kKGssYi5wYXJhbXMuY2FsbChnKSk6eC5leHRlbmQoayxiLnBhcmFtcykpLHguZXh0ZW5kKGsse3VybDplLGRhdGFUeXBlOmIuZGF0YVR5cGUsZGF0YTpjLHN1Y2Nlc3M6ZnVuY3Rpb24oeCl7dmFyIGE9Yi5yZXN1bHRzKHgsaC5wYWdlLGgpO2guY2FsbGJhY2soYSl9LGVycm9yOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz17aGFzRXJyb3I6ITAsanFYSFI6eCx0ZXh0U3RhdHVzOmEsZXJyb3JUaHJvd246Yn07aC5jYWxsYmFjayhjKX19KSxkPWkuY2FsbChnLGspfSxlKX19ZnVuY3Rpb24gdihhKXt2YXIgYixjLGQ9YSxlPWZ1bmN0aW9uKHgpe3JldHVybiIiK3gudGV4dH07eC5pc0FycmF5KGQpJiYoZD17cmVzdWx0czpjPWR9KSwhMT09PXguaXNGdW5jdGlvbihkKSYmKGM9ZCxkPWZ1bmN0aW9uKCl7cmV0dXJuIGN9KTt2YXIgZj1kKCk7cmV0dXJuIGYudGV4dCYmKGU9Zi50ZXh0LHguaXNGdW5jdGlvbihlKXx8KGI9Zi50ZXh0LGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHhbYl19KSksZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnRlcm0sZj17cmVzdWx0czpbXX07cmV0dXJuIiI9PT1jPyhhLmNhbGxiYWNrKGQoKSksdm9pZCAwKTooYj1mdW5jdGlvbihkLGYpe3ZhciBnLGg7aWYoKGQ9ZFswXSkuY2hpbGRyZW4pe2ZvcihoIGluIGc9e30sZClkLmhhc093blByb3BlcnR5KGgpJiYoZ1toXT1kW2hdKTtnLmNoaWxkcmVuPVtdLHgoZC5jaGlsZHJlbikuZWFjaDIoZnVuY3Rpb24oeCxhKXtiKGEsZy5jaGlsZHJlbil9KSwoZy5jaGlsZHJlbi5sZW5ndGh8fGEubWF0Y2hlcihjLGUoZyksZCkpJiZmLnB1c2goZyl9ZWxzZSBhLm1hdGNoZXIoYyxlKGQpLGQpJiZmLnB1c2goZCl9LHgoZCgpLnJlc3VsdHMpLmVhY2gyKGZ1bmN0aW9uKHgsYSl7YihhLGYucmVzdWx0cyl9KSxhLmNhbGxiYWNrKGYpLHZvaWQgMCl9fWZ1bmN0aW9uIHcoYil7dmFyIGM9eC5pc0Z1bmN0aW9uKGIpO3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1kLnRlcm0sZj17cmVzdWx0czpbXX0sZz1jP2IoZCk6Yjt4LmlzQXJyYXkoZykmJih4KGcpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD10aGlzLnRleHQhPT1hLGI9eD90aGlzLnRleHQ6dGhpczsoIiI9PT1lfHxkLm1hdGNoZXIoZSxiKSkmJmYucmVzdWx0cy5wdXNoKHg/dGhpczp7aWQ6dGhpcyx0ZXh0OnRoaXN9KX0pLGQuY2FsbGJhY2soZikpfX1mdW5jdGlvbiB5KGEsYil7aWYoeC5pc0Z1bmN0aW9uKGEpKXJldHVybiEwO2lmKCFhKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoYisiIG11c3QgYmUgYSBzdHJpbmcsIGZ1bmN0aW9uLCBvciBmYWxzeSB2YWx1ZSIpfWZ1bmN0aW9uIHooYSxiKXtpZih4LmlzRnVuY3Rpb24oYSkpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gYS5hcHBseShiLGMpfXJldHVybiBhfWZ1bmN0aW9uIEEoYSl7dmFyIGI9MDtyZXR1cm4geC5lYWNoKGEsZnVuY3Rpb24oeCxhKXthLmNoaWxkcmVuP2IrPUEoYS5jaGlsZHJlbik6YisrfSksYn1mdW5jdGlvbiBCKHgsYixjLGQpe3ZhciBlLGcsaCxpLGosaz14LGw9ITE7aWYoIWQuY3JlYXRlU2VhcmNoQ2hvaWNlfHwhZC50b2tlblNlcGFyYXRvcnN8fGQudG9rZW5TZXBhcmF0b3JzLmxlbmd0aDwxKXJldHVybiBhO2Zvcig7Oyl7Zm9yKGc9LTEsaD0wLGk9ZC50b2tlblNlcGFyYXRvcnMubGVuZ3RoO2k+aCYmKGo9ZC50b2tlblNlcGFyYXRvcnNbaF0sISgoZz14LmluZGV4T2YoaikpPj0wKSk7aCsrKTtpZigwPmcpYnJlYWs7aWYoZT14LnN1YnN0cmluZygwLGcpLHg9eC5zdWJzdHJpbmcoZytqLmxlbmd0aCksZS5sZW5ndGg+MCYmKChlPWQuY3JlYXRlU2VhcmNoQ2hvaWNlLmNhbGwodGhpcyxlLGIpKSE9PWEmJm51bGwhPT1lJiZkLmlkKGUpIT09YSYmbnVsbCE9PWQuaWQoZSkpKXtmb3IobD0hMSxoPTAsaT1iLmxlbmd0aDtpPmg7aCsrKWlmKGYoZC5pZChlKSxkLmlkKGJbaF0pKSl7bD0hMDticmVha31sfHxjKGUpfX1yZXR1cm4gayE9PXg/eDp2b2lkIDB9ZnVuY3Rpb24gQygpe3ZhciBhPXRoaXM7eC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbih4LGIpe2FbYl0ucmVtb3ZlKCksYVtiXT1udWxsfSl9ZnVuY3Rpb24gRChhLGIpe3ZhciBjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gYy5wcm90b3R5cGU9bmV3IGEsYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5wYXJlbnQ9YS5wcm90b3R5cGUsYy5wcm90b3R5cGU9eC5leHRlbmQoYy5wcm90b3R5cGUsYiksY31pZih3aW5kb3cuU2VsZWN0Mj09PWEpe3ZhciBFLEYsRyxILEksSixLLEw9e3g6MCx5OjB9LE09e1RBQjo5LEVOVEVSOjEzLEVTQzoyNyxTUEFDRTozMixMRUZUOjM3LFVQOjM4LFJJR0hUOjM5LERPV046NDAsU0hJRlQ6MTYsQ1RSTDoxNyxBTFQ6MTgsUEFHRV9VUDozMyxQQUdFX0RPV046MzQsSE9NRTozNixFTkQ6MzUsQkFDS1NQQUNFOjgsREVMRVRFOjQ2LGlzQXJyb3c6ZnVuY3Rpb24oeCl7c3dpdGNoKHg9eC53aGljaD94LndoaWNoOngpe2Nhc2UgTS5MRUZUOmNhc2UgTS5SSUdIVDpjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuITB9cmV0dXJuITF9LGlzQ29udHJvbDpmdW5jdGlvbih4KXtzd2l0Y2goeC53aGljaCl7Y2FzZSBNLlNISUZUOmNhc2UgTS5DVFJMOmNhc2UgTS5BTFQ6cmV0dXJuITB9cmV0dXJuISF4Lm1ldGFLZXl9LGlzRnVuY3Rpb25LZXk6ZnVuY3Rpb24oeCl7cmV0dXJuKHg9eC53aGljaD94LndoaWNoOngpPj0xMTImJjEyMz49eH19LE49IjxkaXYgY2xhc3M9J3NlbGVjdDItbWVhc3VyZS1zY3JvbGxiYXInPjwvZGl2PiIsTz17IuKStiI6IkEiLCLvvKEiOiJBIiwiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwi4bqmIjoiQSIsIuG6pCI6IkEiLCLhuqoiOiJBIiwi4bqoIjoiQSIsIsODIjoiQSIsIsSAIjoiQSIsIsSCIjoiQSIsIuG6sCI6IkEiLCLhuq4iOiJBIiwi4bq0IjoiQSIsIuG6siI6IkEiLCLIpiI6IkEiLCLHoCI6IkEiLCLDhCI6IkEiLCLHniI6IkEiLCLhuqIiOiJBIiwiw4UiOiJBIiwix7oiOiJBIiwix40iOiJBIiwiyIAiOiJBIiwiyIIiOiJBIiwi4bqgIjoiQSIsIuG6rCI6IkEiLCLhurYiOiJBIiwi4biAIjoiQSIsIsSEIjoiQSIsIsi6IjoiQSIsIuKxryI6IkEiLCLqnLIiOiJBQSIsIsOGIjoiQUUiLCLHvCI6IkFFIiwix6IiOiJBRSIsIuqctCI6IkFPIiwi6py2IjoiQVUiLCLqnLgiOiJBViIsIuqcuiI6IkFWIiwi6py8IjoiQVkiLCLikrciOiJCIiwi77yiIjoiQiIsIuG4giI6IkIiLCLhuIQiOiJCIiwi4biGIjoiQiIsIsmDIjoiQiIsIsaCIjoiQiIsIsaBIjoiQiIsIuKSuCI6IkMiLCLvvKMiOiJDIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwiw4ciOiJDIiwi4biIIjoiQyIsIsaHIjoiQyIsIsi7IjoiQyIsIuqcviI6IkMiLCLikrkiOiJEIiwi77ykIjoiRCIsIuG4iiI6IkQiLCLEjiI6IkQiLCLhuIwiOiJEIiwi4biQIjoiRCIsIuG4kiI6IkQiLCLhuI4iOiJEIiwixJAiOiJEIiwixosiOiJEIiwixooiOiJEIiwixokiOiJEIiwi6p25IjoiRCIsIsexIjoiRFoiLCLHhCI6IkRaIiwix7IiOiJEeiIsIseFIjoiRHoiLCLikroiOiJFIiwi77ylIjoiRSIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIuG7gCI6IkUiLCLhur4iOiJFIiwi4buEIjoiRSIsIuG7giI6IkUiLCLhurwiOiJFIiwixJIiOiJFIiwi4biUIjoiRSIsIuG4liI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLDiyI6IkUiLCLhuroiOiJFIiwixJoiOiJFIiwiyIQiOiJFIiwiyIYiOiJFIiwi4bq4IjoiRSIsIuG7hiI6IkUiLCLIqCI6IkUiLCLhuJwiOiJFIiwixJgiOiJFIiwi4biYIjoiRSIsIuG4miI6IkUiLCLGkCI6IkUiLCLGjiI6IkUiLCLikrsiOiJGIiwi77ymIjoiRiIsIuG4niI6IkYiLCLGkSI6IkYiLCLqnbsiOiJGIiwi4pK8IjoiRyIsIu+8pyI6IkciLCLHtCI6IkciLCLEnCI6IkciLCLhuKAiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwix6YiOiJHIiwixKIiOiJHIiwix6QiOiJHIiwixpMiOiJHIiwi6p6gIjoiRyIsIuqdvSI6IkciLCLqnb4iOiJHIiwi4pK9IjoiSCIsIu+8qCI6IkgiLCLEpCI6IkgiLCLhuKIiOiJIIiwi4bimIjoiSCIsIsieIjoiSCIsIuG4pCI6IkgiLCLhuKgiOiJIIiwi4biqIjoiSCIsIsSmIjoiSCIsIuKxpyI6IkgiLCLisbUiOiJIIiwi6p6NIjoiSCIsIuKSviI6IkkiLCLvvKkiOiJJIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixLAiOiJJIiwiw48iOiJJIiwi4biuIjoiSSIsIuG7iCI6IkkiLCLHjyI6IkkiLCLIiCI6IkkiLCLIiiI6IkkiLCLhu4oiOiJJIiwixK4iOiJJIiwi4bisIjoiSSIsIsaXIjoiSSIsIuKSvyI6IkoiLCLvvKoiOiJKIiwixLQiOiJKIiwiyYgiOiJKIiwi4pOAIjoiSyIsIu+8qyI6IksiLCLhuLAiOiJLIiwix6giOiJLIiwi4biyIjoiSyIsIsS2IjoiSyIsIuG4tCI6IksiLCLGmCI6IksiLCLisakiOiJLIiwi6p2AIjoiSyIsIuqdgiI6IksiLCLqnYQiOiJLIiwi6p6iIjoiSyIsIuKTgSI6IkwiLCLvvKwiOiJMIiwixL8iOiJMIiwixLkiOiJMIiwixL0iOiJMIiwi4bi2IjoiTCIsIuG4uCI6IkwiLCLEuyI6IkwiLCLhuLwiOiJMIiwi4bi6IjoiTCIsIsWBIjoiTCIsIsi9IjoiTCIsIuKxoiI6IkwiLCLisaAiOiJMIiwi6p2IIjoiTCIsIuqdhiI6IkwiLCLqnoAiOiJMIiwix4ciOiJMSiIsIseIIjoiTGoiLCLik4IiOiJNIiwi77ytIjoiTSIsIuG4viI6Ik0iLCLhuYAiOiJNIiwi4bmCIjoiTSIsIuKxriI6Ik0iLCLGnCI6Ik0iLCLik4MiOiJOIiwi77yuIjoiTiIsIse4IjoiTiIsIsWDIjoiTiIsIsORIjoiTiIsIuG5hCI6Ik4iLCLFhyI6Ik4iLCLhuYYiOiJOIiwixYUiOiJOIiwi4bmKIjoiTiIsIuG5iCI6Ik4iLCLIoCI6Ik4iLCLGnSI6Ik4iLCLqnpAiOiJOIiwi6p6kIjoiTiIsIseKIjoiTkoiLCLHiyI6Ik5qIiwi4pOEIjoiTyIsIu+8ryI6Ik8iLCLDkiI6Ik8iLCLDkyI6Ik8iLCLDlCI6Ik8iLCLhu5IiOiJPIiwi4buQIjoiTyIsIuG7liI6Ik8iLCLhu5QiOiJPIiwiw5UiOiJPIiwi4bmMIjoiTyIsIsisIjoiTyIsIuG5jiI6Ik8iLCLFjCI6Ik8iLCLhuZAiOiJPIiwi4bmSIjoiTyIsIsWOIjoiTyIsIsiuIjoiTyIsIsiwIjoiTyIsIsOWIjoiTyIsIsiqIjoiTyIsIuG7jiI6Ik8iLCLFkCI6Ik8iLCLHkSI6Ik8iLCLIjCI6Ik8iLCLIjiI6Ik8iLCLGoCI6Ik8iLCLhu5wiOiJPIiwi4buaIjoiTyIsIuG7oCI6Ik8iLCLhu54iOiJPIiwi4buiIjoiTyIsIuG7jCI6Ik8iLCLhu5giOiJPIiwix6oiOiJPIiwix6wiOiJPIiwiw5giOiJPIiwix74iOiJPIiwixoYiOiJPIiwixp8iOiJPIiwi6p2KIjoiTyIsIuqdjCI6Ik8iLCLGoiI6Ik9JIiwi6p2OIjoiT08iLCLIoiI6Ik9VIiwi4pOFIjoiUCIsIu+8sCI6IlAiLCLhuZQiOiJQIiwi4bmWIjoiUCIsIsakIjoiUCIsIuKxoyI6IlAiLCLqnZAiOiJQIiwi6p2SIjoiUCIsIuqdlCI6IlAiLCLik4YiOiJRIiwi77yxIjoiUSIsIuqdliI6IlEiLCLqnZgiOiJRIiwiyYoiOiJRIiwi4pOHIjoiUiIsIu+8siI6IlIiLCLFlCI6IlIiLCLhuZgiOiJSIiwixZgiOiJSIiwiyJAiOiJSIiwiyJIiOiJSIiwi4bmaIjoiUiIsIuG5nCI6IlIiLCLFliI6IlIiLCLhuZ4iOiJSIiwiyYwiOiJSIiwi4rGkIjoiUiIsIuqdmiI6IlIiLCLqnqYiOiJSIiwi6p6CIjoiUiIsIuKTiCI6IlMiLCLvvLMiOiJTIiwi4bqeIjoiUyIsIsWaIjoiUyIsIuG5pCI6IlMiLCLFnCI6IlMiLCLhuaAiOiJTIiwixaAiOiJTIiwi4bmmIjoiUyIsIuG5oiI6IlMiLCLhuagiOiJTIiwiyJgiOiJTIiwixZ4iOiJTIiwi4rG+IjoiUyIsIuqeqCI6IlMiLCLqnoQiOiJTIiwi4pOJIjoiVCIsIu+8tCI6IlQiLCLhuaoiOiJUIiwixaQiOiJUIiwi4bmsIjoiVCIsIsiaIjoiVCIsIsWiIjoiVCIsIuG5sCI6IlQiLCLhua4iOiJUIiwixaYiOiJUIiwixqwiOiJUIiwixq4iOiJUIiwiyL4iOiJUIiwi6p6GIjoiVCIsIuqcqCI6IlRaIiwi4pOKIjoiVSIsIu+8tSI6IlUiLCLDmSI6IlUiLCLDmiI6IlUiLCLDmyI6IlUiLCLFqCI6IlUiLCLhubgiOiJVIiwixaoiOiJVIiwi4bm6IjoiVSIsIsWsIjoiVSIsIsOcIjoiVSIsIsebIjoiVSIsIseXIjoiVSIsIseVIjoiVSIsIseZIjoiVSIsIuG7piI6IlUiLCLFriI6IlUiLCLFsCI6IlUiLCLHkyI6IlUiLCLIlCI6IlUiLCLIliI6IlUiLCLGryI6IlUiLCLhu6oiOiJVIiwi4buoIjoiVSIsIuG7riI6IlUiLCLhu6wiOiJVIiwi4buwIjoiVSIsIuG7pCI6IlUiLCLhubIiOiJVIiwixbIiOiJVIiwi4bm2IjoiVSIsIuG5tCI6IlUiLCLJhCI6IlUiLCLik4siOiJWIiwi77y2IjoiViIsIuG5vCI6IlYiLCLhub4iOiJWIiwixrIiOiJWIiwi6p2eIjoiViIsIsmFIjoiViIsIuqdoCI6IlZZIiwi4pOMIjoiVyIsIu+8tyI6IlciLCLhuoAiOiJXIiwi4bqCIjoiVyIsIsW0IjoiVyIsIuG6hiI6IlciLCLhuoQiOiJXIiwi4bqIIjoiVyIsIuKxsiI6IlciLCLik40iOiJYIiwi77y4IjoiWCIsIuG6iiI6IlgiLCLhuowiOiJYIiwi4pOOIjoiWSIsIu+8uSI6IlkiLCLhu7IiOiJZIiwiw50iOiJZIiwixbYiOiJZIiwi4bu4IjoiWSIsIsiyIjoiWSIsIuG6jiI6IlkiLCLFuCI6IlkiLCLhu7YiOiJZIiwi4bu0IjoiWSIsIsazIjoiWSIsIsmOIjoiWSIsIuG7viI6IlkiLCLik48iOiJaIiwi77y6IjoiWiIsIsW5IjoiWiIsIuG6kCI6IloiLCLFuyI6IloiLCLFvSI6IloiLCLhupIiOiJaIiwi4bqUIjoiWiIsIsa1IjoiWiIsIsikIjoiWiIsIuKxvyI6IloiLCLisasiOiJaIiwi6p2iIjoiWiIsIuKTkCI6ImEiLCLvvYEiOiJhIiwi4bqaIjoiYSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIuG6pyI6ImEiLCLhuqUiOiJhIiwi4bqrIjoiYSIsIuG6qSI6ImEiLCLDoyI6ImEiLCLEgSI6ImEiLCLEgyI6ImEiLCLhurEiOiJhIiwi4bqvIjoiYSIsIuG6tSI6ImEiLCLhurMiOiJhIiwiyKciOiJhIiwix6EiOiJhIiwiw6QiOiJhIiwix58iOiJhIiwi4bqjIjoiYSIsIsOlIjoiYSIsIse7IjoiYSIsIseOIjoiYSIsIsiBIjoiYSIsIsiDIjoiYSIsIuG6oSI6ImEiLCLhuq0iOiJhIiwi4bq3IjoiYSIsIuG4gSI6ImEiLCLEhSI6ImEiLCLisaUiOiJhIiwiyZAiOiJhIiwi6pyzIjoiYWEiLCLDpiI6ImFlIiwix70iOiJhZSIsIsejIjoiYWUiLCLqnLUiOiJhbyIsIuqctyI6ImF1Iiwi6py5IjoiYXYiLCLqnLsiOiJhdiIsIuqcvSI6ImF5Iiwi4pORIjoiYiIsIu+9giI6ImIiLCLhuIMiOiJiIiwi4biFIjoiYiIsIuG4hyI6ImIiLCLGgCI6ImIiLCLGgyI6ImIiLCLJkyI6ImIiLCLik5IiOiJjIiwi772DIjoiYyIsIsSHIjoiYyIsIsSJIjoiYyIsIsSLIjoiYyIsIsSNIjoiYyIsIsOnIjoiYyIsIuG4iSI6ImMiLCLGiCI6ImMiLCLIvCI6ImMiLCLqnL8iOiJjIiwi4oaEIjoiYyIsIuKTkyI6ImQiLCLvvYQiOiJkIiwi4biLIjoiZCIsIsSPIjoiZCIsIuG4jSI6ImQiLCLhuJEiOiJkIiwi4biTIjoiZCIsIuG4jyI6ImQiLCLEkSI6ImQiLCLGjCI6ImQiLCLJliI6ImQiLCLJlyI6ImQiLCLqnboiOiJkIiwix7MiOiJkeiIsIseGIjoiZHoiLCLik5QiOiJlIiwi772FIjoiZSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIuG7gSI6ImUiLCLhur8iOiJlIiwi4buFIjoiZSIsIuG7gyI6ImUiLCLhur0iOiJlIiwixJMiOiJlIiwi4biVIjoiZSIsIuG4lyI6ImUiLCLElSI6ImUiLCLElyI6ImUiLCLDqyI6ImUiLCLhursiOiJlIiwixJsiOiJlIiwiyIUiOiJlIiwiyIciOiJlIiwi4bq5IjoiZSIsIuG7hyI6ImUiLCLIqSI6ImUiLCLhuJ0iOiJlIiwixJkiOiJlIiwi4biZIjoiZSIsIuG4myI6ImUiLCLJhyI6ImUiLCLJmyI6ImUiLCLHnSI6ImUiLCLik5UiOiJmIiwi772GIjoiZiIsIuG4nyI6ImYiLCLGkiI6ImYiLCLqnbwiOiJmIiwi4pOWIjoiZyIsIu+9hyI6ImciLCLHtSI6ImciLCLEnSI6ImciLCLhuKEiOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwix6ciOiJnIiwixKMiOiJnIiwix6UiOiJnIiwiyaAiOiJnIiwi6p6hIjoiZyIsIuG1uSI6ImciLCLqnb8iOiJnIiwi4pOXIjoiaCIsIu+9iCI6ImgiLCLEpSI6ImgiLCLhuKMiOiJoIiwi4binIjoiaCIsIsifIjoiaCIsIuG4pSI6ImgiLCLhuKkiOiJoIiwi4birIjoiaCIsIuG6liI6ImgiLCLEpyI6ImgiLCLisagiOiJoIiwi4rG2IjoiaCIsIsmlIjoiaCIsIsaVIjoiaHYiLCLik5giOiJpIiwi772JIjoiaSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsSpIjoiaSIsIsSrIjoiaSIsIsStIjoiaSIsIsOvIjoiaSIsIuG4ryI6ImkiLCLhu4kiOiJpIiwix5AiOiJpIiwiyIkiOiJpIiwiyIsiOiJpIiwi4buLIjoiaSIsIsSvIjoiaSIsIuG4rSI6ImkiLCLJqCI6ImkiLCLEsSI6ImkiLCLik5kiOiJqIiwi772KIjoiaiIsIsS1IjoiaiIsIsewIjoiaiIsIsmJIjoiaiIsIuKTmiI6ImsiLCLvvYsiOiJrIiwi4bixIjoiayIsIsepIjoiayIsIuG4syI6ImsiLCLEtyI6ImsiLCLhuLUiOiJrIiwixpkiOiJrIiwi4rGqIjoiayIsIuqdgSI6ImsiLCLqnYMiOiJrIiwi6p2FIjoiayIsIuqeoyI6ImsiLCLik5siOiJsIiwi772MIjoibCIsIsWAIjoibCIsIsS6IjoibCIsIsS+IjoibCIsIuG4tyI6ImwiLCLhuLkiOiJsIiwixLwiOiJsIiwi4bi9IjoibCIsIuG4uyI6ImwiLCLFvyI6ImwiLCLFgiI6ImwiLCLGmiI6ImwiLCLJqyI6ImwiLCLisaEiOiJsIiwi6p2JIjoibCIsIuqegSI6ImwiLCLqnYciOiJsIiwix4kiOiJsaiIsIuKTnCI6Im0iLCLvvY0iOiJtIiwi4bi/IjoibSIsIuG5gSI6Im0iLCLhuYMiOiJtIiwiybEiOiJtIiwiya8iOiJtIiwi4pOdIjoibiIsIu+9jiI6Im4iLCLHuSI6Im4iLCLFhCI6Im4iLCLDsSI6Im4iLCLhuYUiOiJuIiwixYgiOiJuIiwi4bmHIjoibiIsIsWGIjoibiIsIuG5iyI6Im4iLCLhuYkiOiJuIiwixp4iOiJuIiwiybIiOiJuIiwixYkiOiJuIiwi6p6RIjoibiIsIuqepSI6Im4iLCLHjCI6Im5qIiwi4pOeIjoibyIsIu+9jyI6Im8iLCLDsiI6Im8iLCLDsyI6Im8iLCLDtCI6Im8iLCLhu5MiOiJvIiwi4buRIjoibyIsIuG7lyI6Im8iLCLhu5UiOiJvIiwiw7UiOiJvIiwi4bmNIjoibyIsIsitIjoibyIsIuG5jyI6Im8iLCLFjSI6Im8iLCLhuZEiOiJvIiwi4bmTIjoibyIsIsWPIjoibyIsIsivIjoibyIsIsixIjoibyIsIsO2IjoibyIsIsirIjoibyIsIuG7jyI6Im8iLCLFkSI6Im8iLCLHkiI6Im8iLCLIjSI6Im8iLCLIjyI6Im8iLCLGoSI6Im8iLCLhu50iOiJvIiwi4bubIjoibyIsIuG7oSI6Im8iLCLhu58iOiJvIiwi4bujIjoibyIsIuG7jSI6Im8iLCLhu5kiOiJvIiwix6siOiJvIiwix60iOiJvIiwiw7giOiJvIiwix78iOiJvIiwiyZQiOiJvIiwi6p2LIjoibyIsIuqdjSI6Im8iLCLJtSI6Im8iLCLGoyI6Im9pIiwiyKMiOiJvdSIsIuqdjyI6Im9vIiwi4pOfIjoicCIsIu+9kCI6InAiLCLhuZUiOiJwIiwi4bmXIjoicCIsIsalIjoicCIsIuG1vSI6InAiLCLqnZEiOiJwIiwi6p2TIjoicCIsIuqdlSI6InAiLCLik6AiOiJxIiwi772RIjoicSIsIsmLIjoicSIsIuqdlyI6InEiLCLqnZkiOiJxIiwi4pOhIjoiciIsIu+9kiI6InIiLCLFlSI6InIiLCLhuZkiOiJyIiwixZkiOiJyIiwiyJEiOiJyIiwiyJMiOiJyIiwi4bmbIjoiciIsIuG5nSI6InIiLCLFlyI6InIiLCLhuZ8iOiJyIiwiyY0iOiJyIiwiyb0iOiJyIiwi6p2bIjoiciIsIuqepyI6InIiLCLqnoMiOiJyIiwi4pOiIjoicyIsIu+9kyI6InMiLCLDnyI6InMiLCLFmyI6InMiLCLhuaUiOiJzIiwixZ0iOiJzIiwi4bmhIjoicyIsIsWhIjoicyIsIuG5pyI6InMiLCLhuaMiOiJzIiwi4bmpIjoicyIsIsiZIjoicyIsIsWfIjoicyIsIsi/IjoicyIsIuqeqSI6InMiLCLqnoUiOiJzIiwi4bqbIjoicyIsIuKToyI6InQiLCLvvZQiOiJ0Iiwi4bmrIjoidCIsIuG6lyI6InQiLCLFpSI6InQiLCLhua0iOiJ0IiwiyJsiOiJ0IiwixaMiOiJ0Iiwi4bmxIjoidCIsIuG5ryI6InQiLCLFpyI6InQiLCLGrSI6InQiLCLKiCI6InQiLCLisaYiOiJ0Iiwi6p6HIjoidCIsIuqcqSI6InR6Iiwi4pOkIjoidSIsIu+9lSI6InUiLCLDuSI6InUiLCLDuiI6InUiLCLDuyI6InUiLCLFqSI6InUiLCLhubkiOiJ1IiwixasiOiJ1Iiwi4bm7IjoidSIsIsWtIjoidSIsIsO8IjoidSIsIsecIjoidSIsIseYIjoidSIsIseWIjoidSIsIseaIjoidSIsIuG7pyI6InUiLCLFryI6InUiLCLFsSI6InUiLCLHlCI6InUiLCLIlSI6InUiLCLIlyI6InUiLCLGsCI6InUiLCLhu6siOiJ1Iiwi4bupIjoidSIsIuG7ryI6InUiLCLhu60iOiJ1Iiwi4buxIjoidSIsIuG7pSI6InUiLCLhubMiOiJ1IiwixbMiOiJ1Iiwi4bm3IjoidSIsIuG5tSI6InUiLCLKiSI6InUiLCLik6UiOiJ2Iiwi772WIjoidiIsIuG5vSI6InYiLCLhub8iOiJ2IiwiyosiOiJ2Iiwi6p2fIjoidiIsIsqMIjoidiIsIuqdoSI6InZ5Iiwi4pOmIjoidyIsIu+9lyI6InciLCLhuoEiOiJ3Iiwi4bqDIjoidyIsIsW1IjoidyIsIuG6hyI6InciLCLhuoUiOiJ3Iiwi4bqYIjoidyIsIuG6iSI6InciLCLisbMiOiJ3Iiwi4pOnIjoieCIsIu+9mCI6IngiLCLhuosiOiJ4Iiwi4bqNIjoieCIsIuKTqCI6InkiLCLvvZkiOiJ5Iiwi4buzIjoieSIsIsO9IjoieSIsIsW3IjoieSIsIuG7uSI6InkiLCLIsyI6InkiLCLhuo8iOiJ5Iiwiw78iOiJ5Iiwi4bu3IjoieSIsIuG6mSI6InkiLCLhu7UiOiJ5IiwixrQiOiJ5IiwiyY8iOiJ5Iiwi4bu/IjoieSIsIuKTqSI6InoiLCLvvZoiOiJ6IiwixboiOiJ6Iiwi4bqRIjoieiIsIsW8IjoieiIsIsW+IjoieiIsIuG6kyI6InoiLCLhupUiOiJ6IiwixrYiOiJ6IiwiyKUiOiJ6IiwiyYAiOiJ6Iiwi4rGsIjoieiIsIuqdoyI6InoiLCLOhiI6Is6RIiwizogiOiLOlSIsIs6JIjoizpciLCLOiiI6Is6ZIiwizqoiOiLOmSIsIs6MIjoizp8iLCLOjiI6Is6lIiwizqsiOiLOpSIsIs6PIjoizqkiLCLOrCI6Is6xIiwizq0iOiLOtSIsIs6uIjoizrciLCLOryI6Is65Iiwiz4oiOiLOuSIsIs6QIjoizrkiLCLPjCI6Is6/Iiwiz40iOiLPhSIsIs+LIjoiz4UiLCLOsCI6Is+FIiwiz4kiOiLPiSIsIs+CIjoiz4MifTtKPXgoZG9jdW1lbnQpLEg9ZnVuY3Rpb24oKXt2YXIgeD0xO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4Kyt9fSgpLEY9RChFPUQoT2JqZWN0LHtiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7eC5hcHBseShhLGFyZ3VtZW50cyl9fSxpbml0OmZ1bmN0aW9uKGIpe3ZhciBjLGQsZj0iLnNlbGVjdDItcmVzdWx0cyI7dGhpcy5vcHRzPWI9dGhpcy5wcmVwYXJlT3B0cyhiKSx0aGlzLmlkPWIuaWQsYi5lbGVtZW50LmRhdGEoInNlbGVjdDIiKSE9PWEmJm51bGwhPT1iLmVsZW1lbnQuZGF0YSgic2VsZWN0MiIpJiZiLmVsZW1lbnQuZGF0YSgic2VsZWN0MiIpLmRlc3Ryb3koKSx0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5lcigpLHRoaXMubGl2ZVJlZ2lvbj14KCIuc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLDA9PXRoaXMubGl2ZVJlZ2lvbi5sZW5ndGgmJih0aGlzLmxpdmVSZWdpb249eCgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoicG9saXRlIn0pLmFkZENsYXNzKCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIikuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkpLHRoaXMuY29udGFpbmVySWQ9InMyaWRfIisoYi5lbGVtZW50LmF0dHIoImlkIil8fCJhdXRvZ2VuIitIKCkpLHRoaXMuY29udGFpbmVyRXZlbnROYW1lPXRoaXMuY29udGFpbmVySWQucmVwbGFjZSgvKFsuXSkvZywiXyIpLnJlcGxhY2UoLyhbOyYsXC1cLlwrXCpcfic6IlwhXF4jJCVAXFtcXVwoXCk9Plx8XSkvZywiXFwkMSIpLHRoaXMuY29udGFpbmVyLmF0dHIoImlkIix0aGlzLmNvbnRhaW5lcklkKSx0aGlzLmNvbnRhaW5lci5hdHRyKCJ0aXRsZSIsYi5lbGVtZW50LmF0dHIoInRpdGxlIikpLHRoaXMuYm9keT14KGRvY3VtZW50LmJvZHkpLHIodGhpcy5jb250YWluZXIsdGhpcy5vcHRzLmVsZW1lbnQsdGhpcy5vcHRzLmFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MpLHRoaXMuY29udGFpbmVyLmF0dHIoInN0eWxlIixiLmVsZW1lbnQuYXR0cigic3R5bGUiKSksdGhpcy5jb250YWluZXIuY3NzKHooYi5jb250YWluZXJDc3MsdGhpcy5vcHRzLmVsZW1lbnQpKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyh6KGIuY29udGFpbmVyQ3NzQ2xhc3MsdGhpcy5vcHRzLmVsZW1lbnQpKSx0aGlzLmVsZW1lbnRUYWJJbmRleD10aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIpLHRoaXMub3B0cy5lbGVtZW50LmRhdGEoInNlbGVjdDIiLHRoaXMpLmF0dHIoInRhYmluZGV4IiwiLTEiKS5iZWZvcmUodGhpcy5jb250YWluZXIpLm9uKCJjbGljay5zZWxlY3QyIixvKSx0aGlzLmNvbnRhaW5lci5kYXRhKCJzZWxlY3QyIix0aGlzKSx0aGlzLmRyb3Bkb3duPXRoaXMuY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLWRyb3AiKSxyKHRoaXMuZHJvcGRvd24sdGhpcy5vcHRzLmVsZW1lbnQsdGhpcy5vcHRzLmFkYXB0RHJvcGRvd25Dc3NDbGFzcyksdGhpcy5kcm9wZG93bi5hZGRDbGFzcyh6KGIuZHJvcGRvd25Dc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpLHRoaXMuZHJvcGRvd24uZGF0YSgic2VsZWN0MiIsdGhpcyksdGhpcy5kcm9wZG93bi5vbigiY2xpY2siLG8pLHRoaXMucmVzdWx0cz1jPXRoaXMuY29udGFpbmVyLmZpbmQoZiksdGhpcy5zZWFyY2g9ZD10aGlzLmNvbnRhaW5lci5maW5kKCJpbnB1dC5zZWxlY3QyLWlucHV0IiksdGhpcy5xdWVyeUNvdW50PTAsdGhpcy5yZXN1bHRzUGFnZT0wLHRoaXMuY29udGV4dD1udWxsLHRoaXMuaW5pdENvbnRhaW5lcigpLHRoaXMuY29udGFpbmVyLm9uKCJjbGljayIsbyksaih0aGlzLnJlc3VsdHMpLHRoaXMuZHJvcGRvd24ub24oIm1vdXNlbW92ZS1maWx0ZXJlZCIsZix0aGlzLmJpbmQodGhpcy5oaWdobGlnaHRVbmRlckV2ZW50KSksdGhpcy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQiLGYsdGhpcy5iaW5kKGZ1bmN0aW9uKHgpe3RoaXMuX3RvdWNoRXZlbnQ9ITAsdGhpcy5oaWdobGlnaHRVbmRlckV2ZW50KHgpfSkpLHRoaXMuZHJvcGRvd24ub24oInRvdWNobW92ZSIsZix0aGlzLmJpbmQodGhpcy50b3VjaE1vdmVkKSksdGhpcy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0b3VjaGVuZCIsZix0aGlzLmJpbmQodGhpcy5jbGVhclRvdWNoTW92ZWQpKSx0aGlzLmRyb3Bkb3duLm9uKCJjbGljayIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5fdG91Y2hFdmVudCYmKHRoaXMuX3RvdWNoRXZlbnQ9ITEsdGhpcy5zZWxlY3RIaWdobGlnaHRlZCgpKX0pKSxsKDgwLHRoaXMucmVzdWx0cyksdGhpcy5kcm9wZG93bi5vbigic2Nyb2xsLWRlYm91bmNlZCIsZix0aGlzLmJpbmQodGhpcy5sb2FkTW9yZUlmTmVlZGVkKSkseCh0aGlzLmNvbnRhaW5lcikub24oImNoYW5nZSIsIi5zZWxlY3QyLWlucHV0IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpfSkseCh0aGlzLmRyb3Bkb3duKS5vbigiY2hhbmdlIiwiLnNlbGVjdDItaW5wdXQiLGZ1bmN0aW9uKHgpe3guc3RvcFByb3BhZ2F0aW9uKCl9KSx4LmZuLm1vdXNld2hlZWwmJmMubW91c2V3aGVlbChmdW5jdGlvbih4LGEsYixkKXt2YXIgZT1jLnNjcm9sbFRvcCgpO2Q+MCYmMD49ZS1kPyhjLnNjcm9sbFRvcCgwKSxvKHgpKTowPmQmJmMuZ2V0KDApLnNjcm9sbEhlaWdodC1jLnNjcm9sbFRvcCgpK2Q8PWMuaGVpZ2h0KCkmJihjLnNjcm9sbFRvcChjLmdldCgwKS5zY3JvbGxIZWlnaHQtYy5oZWlnaHQoKSksbyh4KSl9KSxpKGQpLGQub24oImtleXVwLWNoYW5nZSBpbnB1dCBwYXN0ZSIsdGhpcy5iaW5kKHRoaXMudXBkYXRlUmVzdWx0cykpLGQub24oImZvY3VzIixmdW5jdGlvbigpe2QuYWRkQ2xhc3MoInNlbGVjdDItZm9jdXNlZCIpfSksZC5vbigiYmx1ciIsZnVuY3Rpb24oKXtkLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWZvY3VzZWQiKX0pLHRoaXMuZHJvcGRvd24ub24oIm1vdXNldXAiLGYsdGhpcy5iaW5kKGZ1bmN0aW9uKGEpe3goYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikubGVuZ3RoPjAmJih0aGlzLmhpZ2hsaWdodFVuZGVyRXZlbnQoYSksdGhpcy5zZWxlY3RIaWdobGlnaHRlZChhKSl9KSksdGhpcy5kcm9wZG93bi5vbigiY2xpY2sgbW91c2V1cCBtb3VzZWRvd24gdG91Y2hzdGFydCB0b3VjaGVuZCBmb2N1c2luIixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5sYXN0U2VhcmNoVGVybT1hLHguaXNGdW5jdGlvbih0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbikmJih0aGlzLmluaXRTZWxlY3Rpb24oKSx0aGlzLm1vbml0b3JTb3VyY2UoKSksbnVsbCE9PWIubWF4aW11bUlucHV0TGVuZ3RoJiZ0aGlzLnNlYXJjaC5hdHRyKCJtYXhsZW5ndGgiLGIubWF4aW11bUlucHV0TGVuZ3RoKTt2YXIgZz1iLmVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKTtnPT09YSYmKGc9ITEpLHRoaXMuZW5hYmxlKCFnKTt2YXIgaD1iLmVsZW1lbnQucHJvcCgicmVhZG9ubHkiKTtoPT09YSYmKGg9ITEpLHRoaXMucmVhZG9ubHkoaCksSz1LfHxlKCksdGhpcy5hdXRvZm9jdXM9Yi5lbGVtZW50LnByb3AoImF1dG9mb2N1cyIpLGIuZWxlbWVudC5wcm9wKCJhdXRvZm9jdXMiLCExKSx0aGlzLmF1dG9mb2N1cyYmdGhpcy5mb2N1cygpLHRoaXMuc2VhcmNoLmF0dHIoInBsYWNlaG9sZGVyIixiLnNlYXJjaElucHV0UGxhY2Vob2xkZXIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5vcHRzLmVsZW1lbnQsYj14LmRhdGEoInNlbGVjdDIiKSxjPXRoaXM7dGhpcy5jbG9zZSgpLHgubGVuZ3RoJiZ4WzBdLmRldGFjaEV2ZW50JiZjLl9zeW5jJiZ4LmVhY2goZnVuY3Rpb24oKXtjLl9zeW5jJiZ0aGlzLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixjLl9zeW5jKX0pLHRoaXMucHJvcGVydHlPYnNlcnZlciYmKHRoaXMucHJvcGVydHlPYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5wcm9wZXJ0eU9ic2VydmVyPW51bGwpLHRoaXMuX3N5bmM9bnVsbCxiIT09YSYmKGIuY29udGFpbmVyLnJlbW92ZSgpLGIubGl2ZVJlZ2lvbi5yZW1vdmUoKSxiLmRyb3Bkb3duLnJlbW92ZSgpLHgucmVtb3ZlRGF0YSgic2VsZWN0MiIpLm9mZigiLnNlbGVjdDIiKSx4LmlzKCJpbnB1dFt0eXBlPSdoaWRkZW4nXSIpP3guY3NzKCJkaXNwbGF5IiwiIik6KHguc2hvdygpLnByb3AoImF1dG9mb2N1cyIsdGhpcy5hdXRvZm9jdXN8fCExKSx0aGlzLmVsZW1lbnRUYWJJbmRleD94LmF0dHIoe3RhYmluZGV4OnRoaXMuZWxlbWVudFRhYkluZGV4fSk6eC5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpLHguc2hvdygpKSksQy5jYWxsKHRoaXMsImNvbnRhaW5lciIsImxpdmVSZWdpb24iLCJkcm9wZG93biIsInJlc3VsdHMiLCJzZWFyY2giKX0sb3B0aW9uVG9EYXRhOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlzKCJvcHRpb24iKT97aWQ6eC5wcm9wKCJ2YWx1ZSIpLHRleHQ6eC50ZXh0KCksZWxlbWVudDp4LmdldCgpLGNzczp4LmF0dHIoImNsYXNzIiksZGlzYWJsZWQ6eC5wcm9wKCJkaXNhYmxlZCIpLGxvY2tlZDpmKHguYXR0cigibG9ja2VkIiksImxvY2tlZCIpfHxmKHguZGF0YSgibG9ja2VkIiksITApfTp4LmlzKCJvcHRncm91cCIpP3t0ZXh0OnguYXR0cigibGFiZWwiKSxjaGlsZHJlbjpbXSxlbGVtZW50OnguZ2V0KCksY3NzOnguYXR0cigiY2xhc3MiKX06dm9pZCAwfSxwcmVwYXJlT3B0czpmdW5jdGlvbihiKXt2YXIgYyxkLGUsaCxpPXRoaXM7aWYoInNlbGVjdCI9PT0oYz1iLmVsZW1lbnQpLmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJih0aGlzLnNlbGVjdD1kPWIuZWxlbWVudCksZCYmeC5lYWNoKFsiaWQiLCJtdWx0aXBsZSIsImFqYXgiLCJxdWVyeSIsImNyZWF0ZVNlYXJjaENob2ljZSIsImluaXRTZWxlY3Rpb24iLCJkYXRhIiwidGFncyJdLGZ1bmN0aW9uKCl7aWYodGhpcyBpbiBiKXRocm93IG5ldyBFcnJvcigiT3B0aW9uICciK3RoaXMrIicgaXMgbm90IGFsbG93ZWQgZm9yIFNlbGVjdDIgd2hlbiBhdHRhY2hlZCB0byBhIDxzZWxlY3Q+IGVsZW1lbnQuIil9KSxiLmRlYnVnPWIuZGVidWd8fHguZm4uc2VsZWN0Mi5kZWZhdWx0cy5kZWJ1ZyxiLmRlYnVnJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJihudWxsIT1iLmlkJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgaWRgIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkIGluIFNlbGVjdDIgNC4wLjAsIGNvbnNpZGVyIHJlbmFtaW5nIHlvdXIgYGlkYCBwcm9wZXJ0eSBvciBtYXBwaW5nIHRoZSBwcm9wZXJ0eSBiZWZvcmUgeW91ciBkYXRhIG1ha2VzIGl0IHRvIFNlbGVjdDIuIFlvdSBjYW4gcmVhZCBtb3JlIGF0IGh0dHBzOi8vc2VsZWN0Mi5naXRodWIuaW8vYW5ub3VuY2VtZW50cy00LjAuaHRtbCNjaGFuZ2VkLWlkIiksbnVsbCE9Yi50ZXh0JiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgdGV4dGAgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWQgaW4gU2VsZWN0MiA0LjAuMCwgY29uc2lkZXIgcmVuYW1pbmcgeW91ciBgdGV4dGAgcHJvcGVydHkgb3IgbWFwcGluZyB0aGUgcHJvcGVydHkgYmVmb3JlIHlvdXIgZGF0YSBtYWtlcyBpdCB0byBTZWxlY3QyLiBZb3UgY2FuIHJlYWQgbW9yZSBhdCBodHRwczovL3NlbGVjdDIuZ2l0aHViLmlvL2Fubm91bmNlbWVudHMtNC4wLmh0bWwjY2hhbmdlZC1pZCIpLG51bGwhPWIuc29ydFJlc3VsdHMmJmNvbnNvbGUud2FybigiU2VsZWN0MjogdGhlIGBzb3J0UmVzdWx0c2Agb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHNvcnRlcmAgaW4gU2VsZWN0MiA0LjAuMC4gIiksbnVsbCE9Yi5zZWxlY3RPbkJsdXImJmNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBzZWxlY3RPbkJsdXJgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBzZWxlY3RPbkNsb3NlYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuYWpheCYmbnVsbCE9Yi5hamF4LnJlc3VsdHMmJmNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBhamF4LnJlc3VsdHNgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBhamF4LnByb2Nlc3NSZXN1bHRzYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0Tm9SZXN1bHRzJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0Tm9SZXN1bHRzYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2Uubm9SZXN1bHRzYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0U2VhcmNoaW5nJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0U2VhcmNoaW5nYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2Uuc2VhcmNoaW5nYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0SW5wdXRUb29TaG9ydCYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdElucHV0VG9vU2hvcnRgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBsYW5ndWFnZS5pbnB1dFRvb1Nob3J0YCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0SW5wdXRUb29Mb25nJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0SW5wdXRUb29Mb25nYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2UuaW5wdXRUb29Mb25nYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0TG9hZGluZyYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdExvYWRpbmdgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBsYW5ndWFnZS5sb2FkaW5nTW9yZWAgaW4gU2VsZWN0MiA0LjAuMC4iKSxudWxsIT1iLmZvcm1hdFNlbGVjdGlvblRvb0JpZyYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdFNlbGVjdGlvblRvb0JpZ2Agb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGxhbmd1YWdlLm1heGltdW1TZWxlY3RlZGAgaW4gU2VsZWN0MiA0LjAuMC4iKSxiLmVsZW1lbnQuZGF0YSgic2VsZWN0MlRhZ3MiKSYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGF0YS10YWdzYCBpbiBTZWxlY3QyIDQuMC4wLiIpKSxudWxsIT1iLmVsZW1lbnQuZGF0YSgidGFncyIpKXt2YXIgaj1iLmVsZW1lbnQuZGF0YSgidGFncyIpO3guaXNBcnJheShqKXx8KGo9W10pLGIuZWxlbWVudC5kYXRhKCJzZWxlY3QyVGFncyIsail9aWYobnVsbCE9Yi5zb3J0ZXImJihiLnNvcnRSZXN1bHRzPWIuc29ydGVyKSxudWxsIT1iLnNlbGVjdE9uQ2xvc2UmJihiLnNlbGVjdE9uQmx1cj1iLnNlbGVjdE9uQ2xvc2UpLG51bGwhPWIuYWpheCYmeC5pc0Z1bmN0aW9uKGIuYWpheC5wcm9jZXNzUmVzdWx0cykmJihiLmFqYXgucmVzdWx0cz1iLmFqYXgucHJvY2Vzc1Jlc3VsdHMpLG51bGwhPWIubGFuZ3VhZ2Upe3ZhciBrPWIubGFuZ3VhZ2U7eC5pc0Z1bmN0aW9uKGsubm9NYXRjaGVzKSYmKGIuZm9ybWF0Tm9NYXRjaGVzPWsubm9NYXRjaGVzKSx4LmlzRnVuY3Rpb24oay5zZWFyY2hpbmcpJiYoYi5mb3JtYXRTZWFyY2hpbmc9ay5zZWFyY2hpbmcpLHguaXNGdW5jdGlvbihrLmlucHV0VG9vU2hvcnQpJiYoYi5mb3JtYXRJbnB1dFRvb1Nob3J0PWsuaW5wdXRUb29TaG9ydCkseC5pc0Z1bmN0aW9uKGsuaW5wdXRUb29Mb25nKSYmKGIuZm9ybWF0SW5wdXRUb29Mb25nPWsuaW5wdXRUb29Mb25nKSx4LmlzRnVuY3Rpb24oay5sb2FkaW5nTW9yZSkmJihiLmZvcm1hdExvYWRpbmc9ay5sb2FkaW5nTW9yZSkseC5pc0Z1bmN0aW9uKGsubWF4aW11bVNlbGVjdGVkKSYmKGIuZm9ybWF0U2VsZWN0aW9uVG9vQmlnPWsubWF4aW11bVNlbGVjdGVkKX1pZigiZnVuY3Rpb24iIT10eXBlb2YoYj14LmV4dGVuZCh7fSx7cG9wdWxhdGVSZXN1bHRzOmZ1bmN0aW9uKGMsZCxlKXt2YXIgZixnPXRoaXMub3B0cy5pZCxoPXRoaXMubGl2ZVJlZ2lvbjsoZj1mdW5jdGlvbihjLGQsail7dmFyIGssbCxtLG4sbyxwLHEscixzLHQsdT1bXTtmb3Ioaz0wLGw9KGM9Yi5zb3J0UmVzdWx0cyhjLGQsZSkpLmxlbmd0aDtsPms7ays9MSluPSEobz0hMD09PShtPWNba10pLmRpc2FibGVkKSYmZyhtKSE9PWEscD1tLmNoaWxkcmVuJiZtLmNoaWxkcmVuLmxlbmd0aD4wLChxPXgoIjxsaT48L2xpPiIpKS5hZGRDbGFzcygic2VsZWN0Mi1yZXN1bHRzLWRlcHQtIitqKSxxLmFkZENsYXNzKCJzZWxlY3QyLXJlc3VsdCIpLHEuYWRkQ2xhc3Mobj8ic2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJsZSI6InNlbGVjdDItcmVzdWx0LXVuc2VsZWN0YWJsZSIpLG8mJnEuYWRkQ2xhc3MoInNlbGVjdDItZGlzYWJsZWQiKSxwJiZxLmFkZENsYXNzKCJzZWxlY3QyLXJlc3VsdC13aXRoLWNoaWxkcmVuIikscS5hZGRDbGFzcyhpLm9wdHMuZm9ybWF0UmVzdWx0Q3NzQ2xhc3MobSkpLHEuYXR0cigicm9sZSIsInByZXNlbnRhdGlvbiIpLChyPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpKS5hZGRDbGFzcygic2VsZWN0Mi1yZXN1bHQtbGFiZWwiKSxyLmF0dHIoImlkIiwic2VsZWN0Mi1yZXN1bHQtbGFiZWwtIitIKCkpLHIuYXR0cigicm9sZSIsIm9wdGlvbiIpLCh0PWIuZm9ybWF0UmVzdWx0KG0scixlLGkub3B0cy5lc2NhcGVNYXJrdXApKSE9PWEmJihyLmh0bWwodCkscS5hcHBlbmQocikpLHAmJigocz14KCI8dWw+PC91bD4iKSkuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0LXN1YiIpLGYobS5jaGlsZHJlbixzLGorMSkscS5hcHBlbmQocykpLHEuZGF0YSgic2VsZWN0Mi1kYXRhIixtKSx1LnB1c2gocVswXSk7ZC5hcHBlbmQodSksaC50ZXh0KGIuZm9ybWF0TWF0Y2hlcyhjLmxlbmd0aCkpfSkoZCxjLDApfX0seC5mbi5zZWxlY3QyLmRlZmF1bHRzLGIpKS5pZCYmKGU9Yi5pZCxiLmlkPWZ1bmN0aW9uKHgpe3JldHVybiB4W2VdfSkseC5pc0FycmF5KGIuZWxlbWVudC5kYXRhKCJzZWxlY3QyVGFncyIpKSl7aWYoInRhZ3MiaW4gYil0aHJvdyJ0YWdzIHNwZWNpZmllZCBhcyBib3RoIGFuIGF0dHJpYnV0ZSAnZGF0YS1zZWxlY3QyLXRhZ3MnIGFuZCBpbiBvcHRpb25zIG9mIFNlbGVjdDIgIitiLmVsZW1lbnQuYXR0cigiaWQiKTtiLnRhZ3M9Yi5lbGVtZW50LmRhdGEoInNlbGVjdDJUYWdzIil9aWYoZD8oYi5xdWVyeT10aGlzLmJpbmQoZnVuY3Rpb24oeCl7dmFyIGIsZCxlLGY9e3Jlc3VsdHM6W10sbW9yZTohMX0sZz14LnRlcm07ZT1mdW5jdGlvbihhLGIpe3ZhciBjO2EuaXMoIm9wdGlvbiIpP3gubWF0Y2hlcihnLGEudGV4dCgpLGEpJiZiLnB1c2goaS5vcHRpb25Ub0RhdGEoYSkpOmEuaXMoIm9wdGdyb3VwIikmJihjPWkub3B0aW9uVG9EYXRhKGEpLGEuY2hpbGRyZW4oKS5lYWNoMihmdW5jdGlvbih4LGEpe2UoYSxjLmNoaWxkcmVuKX0pLGMuY2hpbGRyZW4ubGVuZ3RoPjAmJmIucHVzaChjKSl9LGI9Yy5jaGlsZHJlbigpLHRoaXMuZ2V0UGxhY2Vob2xkZXIoKSE9PWEmJmIubGVuZ3RoPjAmJigoZD10aGlzLmdldFBsYWNlaG9sZGVyT3B0aW9uKCkpJiYoYj1iLm5vdChkKSkpLGIuZWFjaDIoZnVuY3Rpb24oeCxhKXtlKGEsZi5yZXN1bHRzKX0pLHguY2FsbGJhY2soZil9KSxiLmlkPWZ1bmN0aW9uKHgpe3JldHVybiB4LmlkfSk6InF1ZXJ5ImluIGJ8fCgiYWpheCJpbiBiPygoaD1iLmVsZW1lbnQuZGF0YSgiYWpheC11cmwiKSkmJmgubGVuZ3RoPjAmJihiLmFqYXgudXJsPWgpLGIucXVlcnk9dS5jYWxsKGIuZWxlbWVudCxiLmFqYXgpKToiZGF0YSJpbiBiP2IucXVlcnk9dihiLmRhdGEpOiJ0YWdzImluIGImJihiLnF1ZXJ5PXcoYi50YWdzKSxiLmNyZWF0ZVNlYXJjaENob2ljZT09PWEmJihiLmNyZWF0ZVNlYXJjaENob2ljZT1mdW5jdGlvbihhKXtyZXR1cm57aWQ6eC50cmltKGEpLHRleHQ6eC50cmltKGEpfX0pLGIuaW5pdFNlbGVjdGlvbj09PWEmJihiLmluaXRTZWxlY3Rpb249ZnVuY3Rpb24oYSxjKXt2YXIgZD1bXTt4KGcoYS52YWwoKSxiLnNlcGFyYXRvcixiLnRyYW5zZm9ybVZhbCkpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT17aWQ6dGhpcyx0ZXh0OnRoaXN9LGM9Yi50YWdzO3guaXNGdW5jdGlvbihjKSYmKGM9YygpKSx4KGMpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLmlkLGEuaWQpPyhhPXRoaXMsITEpOnZvaWQgMH0pLGQucHVzaChhKX0pLGMoZCl9KSkpLCJmdW5jdGlvbiIhPXR5cGVvZiBiLnF1ZXJ5KXRocm93InF1ZXJ5IGZ1bmN0aW9uIG5vdCBkZWZpbmVkIGZvciBTZWxlY3QyICIrYi5lbGVtZW50LmF0dHIoImlkIik7aWYoInRvcCI9PT1iLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKWIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb249ZnVuY3Rpb24oeCxhKXt4LnVuc2hpZnQoYSl9O2Vsc2UgaWYoImJvdHRvbSI9PT1iLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKWIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb249ZnVuY3Rpb24oeCxhKXt4LnB1c2goYSl9O2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIGIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb24pdGhyb3ciaW52YWxpZCBjcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiBvcHRpb24gbXVzdCBiZSAndG9wJywgJ2JvdHRvbScgb3IgYSBjdXN0b20gZnVuY3Rpb24iO3JldHVybiBifSxtb25pdG9yU291cmNlOmZ1bmN0aW9uKCl7dmFyIGIsYz10aGlzLm9wdHMuZWxlbWVudCxkPXRoaXM7Yy5vbigiY2hhbmdlLnNlbGVjdDIiLHRoaXMuYmluZChmdW5jdGlvbigpeyEwIT09dGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dlcmVkIikmJnRoaXMuaW5pdFNlbGVjdGlvbigpfSkpLHRoaXMuX3N5bmM9dGhpcy5iaW5kKGZ1bmN0aW9uKCl7dmFyIHg9Yy5wcm9wKCJkaXNhYmxlZCIpO3g9PT1hJiYoeD0hMSksdGhpcy5lbmFibGUoIXgpO3ZhciBiPWMucHJvcCgicmVhZG9ubHkiKTtiPT09YSYmKGI9ITEpLHRoaXMucmVhZG9ubHkoYiksdGhpcy5jb250YWluZXImJihyKHRoaXMuY29udGFpbmVyLHRoaXMub3B0cy5lbGVtZW50LHRoaXMub3B0cy5hZGFwdENvbnRhaW5lckNzc0NsYXNzKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyh6KHRoaXMub3B0cy5jb250YWluZXJDc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpKSx0aGlzLmRyb3Bkb3duJiYocih0aGlzLmRyb3Bkb3duLHRoaXMub3B0cy5lbGVtZW50LHRoaXMub3B0cy5hZGFwdERyb3Bkb3duQ3NzQ2xhc3MpLHRoaXMuZHJvcGRvd24uYWRkQ2xhc3Moeih0aGlzLm9wdHMuZHJvcGRvd25Dc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpKX0pLGMubGVuZ3RoJiZjWzBdLmF0dGFjaEV2ZW50JiZjLmVhY2goZnVuY3Rpb24oKXt0aGlzLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkLl9zeW5jKX0pLChiPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcnx8d2luZG93Lk1vek11dGF0aW9uT2JzZXJ2ZXIpIT09YSYmKHRoaXMucHJvcGVydHlPYnNlcnZlciYmKGRlbGV0ZSB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIsdGhpcy5wcm9wZXJ0eU9ic2VydmVyPW51bGwpLHRoaXMucHJvcGVydHlPYnNlcnZlcj1uZXcgYihmdW5jdGlvbihhKXt4LmVhY2goYSxkLl9zeW5jKX0pLHRoaXMucHJvcGVydHlPYnNlcnZlci5vYnNlcnZlKGMuZ2V0KDApLHthdHRyaWJ1dGVzOiEwLHN1YnRyZWU6ITF9KSl9LHRyaWdnZXJTZWxlY3Q6ZnVuY3Rpb24oYSl7dmFyIGI9eC5FdmVudCgic2VsZWN0Mi1zZWxlY3RpbmciLHt2YWw6dGhpcy5pZChhKSxvYmplY3Q6YSxjaG9pY2U6YX0pO3JldHVybiB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKGIpLCFiLmlzRGVmYXVsdFByZXZlbnRlZCgpfSx0cmlnZ2VyQ2hhbmdlOmZ1bmN0aW9uKGEpe2E9YXx8e30sYT14LmV4dGVuZCh7fSxhLHt0eXBlOiJjaGFuZ2UiLHZhbDp0aGlzLnZhbCgpfSksdGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dlcmVkIiwhMCksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcihhKSx0aGlzLm9wdHMuZWxlbWVudC5kYXRhKCJzZWxlY3QyLWNoYW5nZS10cmlnZ2VyZWQiLCExKSx0aGlzLm9wdHMuZWxlbWVudC5jbGljaygpLHRoaXMub3B0cy5ibHVyT25DaGFuZ2UmJnRoaXMub3B0cy5lbGVtZW50LmJsdXIoKX0saXNJbnRlcmZhY2VFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuITA9PT10aGlzLmVuYWJsZWRJbnRlcmZhY2V9LGVuYWJsZUludGVyZmFjZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMuX2VuYWJsZWQmJiF0aGlzLl9yZWFkb25seSxhPSF4O3JldHVybiB4IT09dGhpcy5lbmFibGVkSW50ZXJmYWNlJiYodGhpcy5jb250YWluZXIudG9nZ2xlQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWRpc2FibGVkIixhKSx0aGlzLmNsb3NlKCksdGhpcy5lbmFibGVkSW50ZXJmYWNlPXgsITApfSxlbmFibGU6ZnVuY3Rpb24oeCl7eD09PWEmJih4PSEwKSx0aGlzLl9lbmFibGVkIT09eCYmKHRoaXMuX2VuYWJsZWQ9eCx0aGlzLm9wdHMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsIXgpLHRoaXMuZW5hYmxlSW50ZXJmYWNlKCkpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGUoITEpfSxyZWFkb25seTpmdW5jdGlvbih4KXt4PT09YSYmKHg9ITEpLHRoaXMuX3JlYWRvbmx5IT09eCYmKHRoaXMuX3JlYWRvbmx5PXgsdGhpcy5vcHRzLmVsZW1lbnQucHJvcCgicmVhZG9ubHkiLHgpLHRoaXMuZW5hYmxlSW50ZXJmYWNlKCkpfSxvcGVuZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY29udGFpbmVyJiZ0aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1kcm9wZG93bi1vcGVuIil9LHBvc2l0aW9uRHJvcGRvd246ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGY9dGhpcy5kcm9wZG93bixnPXRoaXMuY29udGFpbmVyLGg9Zy5vZmZzZXQoKSxpPWcub3V0ZXJIZWlnaHQoITEpLGo9Zy5vdXRlcldpZHRoKCExKSxrPWYub3V0ZXJIZWlnaHQoITEpLGw9eCh3aW5kb3cpLG09bC53aWR0aCgpLG49bC5oZWlnaHQoKSxvPWwuc2Nyb2xsTGVmdCgpK20scD1sLnNjcm9sbFRvcCgpK24scT1oLnRvcCtpLHI9aC5sZWZ0LHM9cD49cStrLHQ9aC50b3Ataz49bC5zY3JvbGxUb3AoKSx1PWYub3V0ZXJXaWR0aCghMSksdj1mdW5jdGlvbigpe3JldHVybiBvPj1yK3V9LHc9ZnVuY3Rpb24oKXtyZXR1cm4gaC5sZWZ0K28rZy5vdXRlcldpZHRoKCExKT51fTtmLmhhc0NsYXNzKCJzZWxlY3QyLWRyb3AtYWJvdmUiKT8oYj0hMCwhdCYmcyYmKGM9ITAsYj0hMSkpOihiPSExLCFzJiZ0JiYoYz0hMCxiPSEwKSksYyYmKGYuaGlkZSgpLGg9dGhpcy5jb250YWluZXIub2Zmc2V0KCksaT10aGlzLmNvbnRhaW5lci5vdXRlckhlaWdodCghMSksaj10aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCExKSxrPWYub3V0ZXJIZWlnaHQoITEpLG89bC5zY3JvbGxMZWZ0KCkrbSxwPWwuc2Nyb2xsVG9wKCkrbixxPWgudG9wK2kscj1oLmxlZnQsdT1mLm91dGVyV2lkdGgoITEpLGYuc2hvdygpLHRoaXMuZm9jdXNTZWFyY2goKSksdGhpcy5vcHRzLmRyb3Bkb3duQXV0b1dpZHRoPyhlPXgoIi5zZWxlY3QyLXJlc3VsdHMiLGYpWzBdLGYuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hdXRvLXdpZHRoIiksZi5jc3MoIndpZHRoIiwiIiksKHU9Zi5vdXRlcldpZHRoKCExKSsoZS5zY3JvbGxIZWlnaHQ9PT1lLmNsaWVudEhlaWdodD8wOksud2lkdGgpKT5qP2o9dTp1PWosaz1mLm91dGVySGVpZ2h0KCExKSk6dGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcC1hdXRvLXdpZHRoIiksInN0YXRpYyIhPT10aGlzLmJvZHkuY3NzKCJwb3NpdGlvbiIpJiYocS09KGE9dGhpcy5ib2R5Lm9mZnNldCgpKS50b3Asci09YS5sZWZ0KSwhdigpJiZ3KCkmJihyPWgubGVmdCt0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCExKS11KSxkPXtsZWZ0OnIsd2lkdGg6an0sYj8odGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpLGYuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpLGs9Zi5vdXRlckhlaWdodCghMSksZC50b3A9aC50b3AtayxkLmJvdHRvbT0iYXV0byIpOihkLnRvcD1xLGQuYm90dG9tPSJhdXRvIix0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIiksZi5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIikpLGQ9eC5leHRlbmQoZCx6KHRoaXMub3B0cy5kcm9wZG93bkNzcyx0aGlzLm9wdHMuZWxlbWVudCkpLGYuY3NzKGQpfSxzaG91bGRPcGVuOmZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIXRoaXMub3BlbmVkKCkmJighMSE9PXRoaXMuX2VuYWJsZWQmJiEwIT09dGhpcy5fcmVhZG9ubHkmJihhPXguRXZlbnQoInNlbGVjdDItb3BlbmluZyIpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoYSksIWEuaXNEZWZhdWx0UHJldmVudGVkKCkpKX0sY2xlYXJEcm9wZG93bkFsaWdubWVudFByZWZlcmVuY2U6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIiksdGhpcy5kcm9wZG93bi5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIil9LG9wZW46ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2hvdWxkT3BlbigpJiYodGhpcy5vcGVuaW5nKCksSi5vbigibW91c2Vtb3ZlLnNlbGVjdDJFdmVudCIsZnVuY3Rpb24oeCl7TC54PXgucGFnZVgsTC55PXgucGFnZVl9KSwhMCl9LG9wZW5pbmc6ZnVuY3Rpb24oKXt2YXIgYSxjPXRoaXMuY29udGFpbmVyRXZlbnROYW1lLGQ9InNjcm9sbC4iK2MsZT0icmVzaXplLiIrYyxmPSJvcmllbnRhdGlvbmNoYW5nZS4iK2M7dGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmNsZWFyRHJvcGRvd25BbGlnbm1lbnRQcmVmZXJlbmNlKCksdGhpcy5kcm9wZG93blswXSE9PXRoaXMuYm9keS5jaGlsZHJlbigpLmxhc3QoKVswXSYmdGhpcy5kcm9wZG93bi5kZXRhY2goKS5hcHBlbmRUbyh0aGlzLmJvZHkpLDA9PT0oYT14KCIjc2VsZWN0Mi1kcm9wLW1hc2siKSkubGVuZ3RoJiYoKGE9eChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkpLmF0dHIoImlkIiwic2VsZWN0Mi1kcm9wLW1hc2siKS5hdHRyKCJjbGFzcyIsInNlbGVjdDItZHJvcC1tYXNrIiksYS5oaWRlKCksYS5hcHBlbmRUbyh0aGlzLmJvZHkpLGEub24oIm1vdXNlZG93biB0b3VjaHN0YXJ0IGNsaWNrIixmdW5jdGlvbihjKXtiKGEpO3ZhciBkLGU9eCgiI3NlbGVjdDItZHJvcCIpO2UubGVuZ3RoPjAmJigoZD1lLmRhdGEoInNlbGVjdDIiKSkub3B0cy5zZWxlY3RPbkJsdXImJmQuc2VsZWN0SGlnaGxpZ2h0ZWQoe25vRm9jdXM6ITB9KSxkLmNsb3NlKCksYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpfSkpLHRoaXMuZHJvcGRvd24ucHJldigpWzBdIT09YVswXSYmdGhpcy5kcm9wZG93bi5iZWZvcmUoYSkseCgiI3NlbGVjdDItZHJvcCIpLnJlbW92ZUF0dHIoImlkIiksdGhpcy5kcm9wZG93bi5hdHRyKCJpZCIsInNlbGVjdDItZHJvcCIpLGEuc2hvdygpLHRoaXMucG9zaXRpb25Ecm9wZG93bigpLHRoaXMuZHJvcGRvd24uc2hvdygpLHRoaXMucG9zaXRpb25Ecm9wZG93bigpLHRoaXMuZHJvcGRvd24uYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hY3RpdmUiKTt2YXIgZz10aGlzO3RoaXMuY29udGFpbmVyLnBhcmVudHMoKS5hZGQod2luZG93KS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5vbihlKyIgIitkKyIgIitmLGZ1bmN0aW9uKCl7Zy5vcGVuZWQoKSYmZy5wb3NpdGlvbkRyb3Bkb3duKCl9KX0pfSxjbG9zZTpmdW5jdGlvbigpe2lmKHRoaXMub3BlbmVkKCkpe3ZhciBhPXRoaXMuY29udGFpbmVyRXZlbnROYW1lLGI9InNjcm9sbC4iK2EsYz0icmVzaXplLiIrYSxkPSJvcmllbnRhdGlvbmNoYW5nZS4iK2E7dGhpcy5jb250YWluZXIucGFyZW50cygpLmFkZCh3aW5kb3cpLmVhY2goZnVuY3Rpb24oKXt4KHRoaXMpLm9mZihiKS5vZmYoYykub2ZmKGQpfSksdGhpcy5jbGVhckRyb3Bkb3duQWxpZ25tZW50UHJlZmVyZW5jZSgpLHgoIiNzZWxlY3QyLWRyb3AtbWFzayIpLmhpZGUoKSx0aGlzLmRyb3Bkb3duLnJlbW92ZUF0dHIoImlkIiksdGhpcy5kcm9wZG93bi5oaWRlKCksdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLnJlc3VsdHMuZW1wdHkoKSxKLm9mZigibW91c2Vtb3ZlLnNlbGVjdDJFdmVudCIpLHRoaXMuY2xlYXJTZWFyY2goKSx0aGlzLnNlYXJjaC5yZW1vdmVDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLnNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItY2xvc2UiKSl9fSxleHRlcm5hbFNlYXJjaDpmdW5jdGlvbih4KXt0aGlzLm9wZW4oKSx0aGlzLnNlYXJjaC52YWwoeCksdGhpcy51cGRhdGVSZXN1bHRzKCExKX0sY2xlYXJTZWFyY2g6ZnVuY3Rpb24oKXt9LHByZWZpbGxOZXh0U2VhcmNoVGVybTpmdW5jdGlvbigpe2lmKCIiIT09dGhpcy5zZWFyY2gudmFsKCkpcmV0dXJuITE7dmFyIHg9dGhpcy5vcHRzLm5leHRTZWFyY2hUZXJtKHRoaXMuZGF0YSgpLHRoaXMubGFzdFNlYXJjaFRlcm0pO3JldHVybiB4IT09YSYmKHRoaXMuc2VhcmNoLnZhbCh4KSx0aGlzLnNlYXJjaC5zZWxlY3QoKSwhMCl9LGdldE1heGltdW1TZWxlY3Rpb25TaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcy5vcHRzLm1heGltdW1TZWxlY3Rpb25TaXplLHRoaXMub3B0cy5lbGVtZW50KX0sZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZTpmdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnLGgsaT10aGlzLnJlc3VsdHM7aWYoISgwPihiPXRoaXMuaGlnaGxpZ2h0KCkpKSl7aWYoMD09YilyZXR1cm4gaS5zY3JvbGxUb3AoMCksdm9pZCAwO2E9dGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKS5maW5kKCIuc2VsZWN0Mi1yZXN1bHQtbGFiZWwiKSxkPShoPSgoYz14KGFbYl0pKS5vZmZzZXQoKXx8e30pLnRvcHx8MCkrYy5vdXRlckhlaWdodCghMCksYj09PWEubGVuZ3RoLTEmJigoZz1pLmZpbmQoImxpLnNlbGVjdDItbW9yZS1yZXN1bHRzIikpLmxlbmd0aD4wJiYoZD1nLm9mZnNldCgpLnRvcCtnLm91dGVySGVpZ2h0KCEwKSkpLGQ+KGU9aS5vZmZzZXQoKS50b3AraS5vdXRlckhlaWdodCghMSkpJiZpLnNjcm9sbFRvcChpLnNjcm9sbFRvcCgpKyhkLWUpKSwwPihmPWgtaS5vZmZzZXQoKS50b3ApJiYibm9uZSIhPWMuY3NzKCJkaXNwbGF5IikmJmkuc2Nyb2xsVG9wKGkuc2Nyb2xsVG9wKCkrZil9fSxmaW5kSGlnaGxpZ2h0YWJsZUNob2ljZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCguc2VsZWN0Mi1kaXNhYmxlZCk6bm90KC5zZWxlY3QyLXNlbGVjdGVkKSIpfSxtb3ZlSGlnaGxpZ2h0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlcygpLGM9dGhpcy5oaWdobGlnaHQoKTtjPi0xJiZjPGIubGVuZ3RoOyl7dmFyIGQ9eChiW2MrPWFdKTtpZihkLmhhc0NsYXNzKCJzZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikmJiFkLmhhc0NsYXNzKCJzZWxlY3QyLWRpc2FibGVkIikmJiFkLmhhc0NsYXNzKCJzZWxlY3QyLXNlbGVjdGVkIikpe3RoaXMuaGlnaGxpZ2h0KGMpO2JyZWFrfX19LGhpZ2hsaWdodDpmdW5jdGlvbihhKXt2YXIgYixjLGU9dGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKTtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/ZChlLmZpbHRlcigiLnNlbGVjdDItaGlnaGxpZ2h0ZWQiKVswXSxlLmdldCgpKTooYT49ZS5sZW5ndGgmJihhPWUubGVuZ3RoLTEpLDA+YSYmKGE9MCksdGhpcy5yZW1vdmVIaWdobGlnaHQoKSwoYj14KGVbYV0pKS5hZGRDbGFzcygic2VsZWN0Mi1oaWdobGlnaHRlZCIpLHRoaXMuc2VhcmNoLmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsYi5maW5kKCIuc2VsZWN0Mi1yZXN1bHQtbGFiZWwiKS5hdHRyKCJpZCIpKSx0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKSx0aGlzLmxpdmVSZWdpb24udGV4dChiLnRleHQoKSksKGM9Yi5kYXRhKCJzZWxlY3QyLWRhdGEiKSkmJnRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItaGlnaGxpZ2h0Iix2YWw6dGhpcy5pZChjKSxjaG9pY2U6Y30pLHZvaWQgMCl9LHJlbW92ZUhpZ2hsaWdodDpmdW5jdGlvbigpe3RoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWhpZ2hsaWdodGVkIil9LHRvdWNoTW92ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90b3VjaE1vdmVkPSEwfSxjbGVhclRvdWNoTW92ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90b3VjaE1vdmVkPSExfSxjb3VudFNlbGVjdGFibGVSZXN1bHRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCkubGVuZ3RofSxoaWdobGlnaHRVbmRlckV2ZW50OmZ1bmN0aW9uKGEpe3ZhciBiPXgoYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIik7aWYoYi5sZW5ndGg+MCYmIWIuaXMoIi5zZWxlY3QyLWhpZ2hsaWdodGVkIikpe3ZhciBjPXRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCk7dGhpcy5oaWdobGlnaHQoYy5pbmRleChiKSl9ZWxzZSAwPT1iLmxlbmd0aCYmdGhpcy5yZW1vdmVIaWdobGlnaHQoKX0sbG9hZE1vcmVJZk5lZWRlZDpmdW5jdGlvbigpe3ZhciB4PXRoaXMucmVzdWx0cyxhPXguZmluZCgibGkuc2VsZWN0Mi1tb3JlLXJlc3VsdHMiKSxiPXRoaXMucmVzdWx0c1BhZ2UrMSxjPXRoaXMsZD10aGlzLnNlYXJjaC52YWwoKSxlPXRoaXMuY29udGV4dDswIT09YS5sZW5ndGgmJihhLm9mZnNldCgpLnRvcC14Lm9mZnNldCgpLnRvcC14LmhlaWdodCgpPD10aGlzLm9wdHMubG9hZE1vcmVQYWRkaW5nJiYoYS5hZGRDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLm9wdHMucXVlcnkoe2VsZW1lbnQ6dGhpcy5vcHRzLmVsZW1lbnQsdGVybTpkLHBhZ2U6Yixjb250ZXh0OmUsbWF0Y2hlcjp0aGlzLm9wdHMubWF0Y2hlcixjYWxsYmFjazp0aGlzLmJpbmQoZnVuY3Rpb24oZil7Yy5vcGVuZWQoKSYmKGMub3B0cy5wb3B1bGF0ZVJlc3VsdHMuY2FsbCh0aGlzLHgsZi5yZXN1bHRzLHt0ZXJtOmQscGFnZTpiLGNvbnRleHQ6ZX0pLGMucG9zdHByb2Nlc3NSZXN1bHRzKGYsITEsITEpLCEwPT09Zi5tb3JlPyhhLmRldGFjaCgpLmFwcGVuZFRvKHgpLmh0bWwoYy5vcHRzLmVzY2FwZU1hcmt1cCh6KGMub3B0cy5mb3JtYXRMb2FkTW9yZSxjLm9wdHMuZWxlbWVudCxiKzEpKSksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmxvYWRNb3JlSWZOZWVkZWQoKX0sMTApKTphLnJlbW92ZSgpLGMucG9zaXRpb25Ecm9wZG93bigpLGMucmVzdWx0c1BhZ2U9YixjLmNvbnRleHQ9Zi5jb250ZXh0LHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItbG9hZGVkIixpdGVtczpmfSkpfSl9KSkpfSx0b2tlbml6ZTpmdW5jdGlvbigpe30sdXBkYXRlUmVzdWx0czpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKCl7aS5yZW1vdmVDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSxsLnBvc2l0aW9uRHJvcGRvd24oKSxsLmxpdmVSZWdpb24udGV4dChqLmZpbmQoIi5zZWxlY3QyLW5vLXJlc3VsdHMsLnNlbGVjdDItc2VsZWN0aW9uLWxpbWl0LC5zZWxlY3QyLXNlYXJjaGluZyIpLmxlbmd0aD9qLnRleHQoKTpsLm9wdHMuZm9ybWF0TWF0Y2hlcyhqLmZpbmQoJy5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCgiLnNlbGVjdDItc2VsZWN0ZWQiKScpLmxlbmd0aCkpfWZ1bmN0aW9uIGQoeCl7ai5odG1sKHgpLGMoKX12YXIgZSxnLGgsaT10aGlzLnNlYXJjaCxqPXRoaXMucmVzdWx0cyxrPXRoaXMub3B0cyxsPXRoaXMsbT1pLnZhbCgpLG49eC5kYXRhKHRoaXMuY29udGFpbmVyLCJzZWxlY3QyLWxhc3QtdGVybSIpO2lmKCghMD09PWJ8fCFufHwhZihtLG4pKSYmKHguZGF0YSh0aGlzLmNvbnRhaW5lciwic2VsZWN0Mi1sYXN0LXRlcm0iLG0pLCEwPT09Ynx8ITEhPT10aGlzLnNob3dTZWFyY2hJbnB1dCYmdGhpcy5vcGVuZWQoKSkpe2g9Kyt0aGlzLnF1ZXJ5Q291bnQ7dmFyIG89dGhpcy5nZXRNYXhpbXVtU2VsZWN0aW9uU2l6ZSgpO2lmKG8+PTEmJihlPXRoaXMuZGF0YSgpLHguaXNBcnJheShlKSYmZS5sZW5ndGg+PW8mJnkoay5mb3JtYXRTZWxlY3Rpb25Ub29CaWcsImZvcm1hdFNlbGVjdGlvblRvb0JpZyIpKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLXNlbGVjdGlvbi1saW1pdCc+Iit6KGsuZm9ybWF0U2VsZWN0aW9uVG9vQmlnLGsuZWxlbWVudCxvKSsiPC9saT4iKSx2b2lkIDA7aWYoaS52YWwoKS5sZW5ndGg8ay5taW5pbXVtSW5wdXRMZW5ndGgpcmV0dXJuIGQoeShrLmZvcm1hdElucHV0VG9vU2hvcnQsImZvcm1hdElucHV0VG9vU2hvcnQiKT8iPGxpIGNsYXNzPSdzZWxlY3QyLW5vLXJlc3VsdHMnPiIreihrLmZvcm1hdElucHV0VG9vU2hvcnQsay5lbGVtZW50LGkudmFsKCksay5taW5pbXVtSW5wdXRMZW5ndGgpKyI8L2xpPiI6IiIpLGImJnRoaXMuc2hvd1NlYXJjaCYmdGhpcy5zaG93U2VhcmNoKCEwKSx2b2lkIDA7aWYoay5tYXhpbXVtSW5wdXRMZW5ndGgmJmkudmFsKCkubGVuZ3RoPmsubWF4aW11bUlucHV0TGVuZ3RoKXJldHVybiBkKHkoay5mb3JtYXRJbnB1dFRvb0xvbmcsImZvcm1hdElucHV0VG9vTG9uZyIpPyI8bGkgY2xhc3M9J3NlbGVjdDItbm8tcmVzdWx0cyc+Iit6KGsuZm9ybWF0SW5wdXRUb29Mb25nLGsuZWxlbWVudCxpLnZhbCgpLGsubWF4aW11bUlucHV0TGVuZ3RoKSsiPC9saT4iOiIiKSx2b2lkIDA7ay5mb3JtYXRTZWFyY2hpbmcmJjA9PT10aGlzLmZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlcygpLmxlbmd0aCYmZCgiPGxpIGNsYXNzPSdzZWxlY3QyLXNlYXJjaGluZyc+Iit6KGsuZm9ybWF0U2VhcmNoaW5nLGsuZWxlbWVudCkrIjwvbGk+IiksaS5hZGRDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLnJlbW92ZUhpZ2hsaWdodCgpLChnPXRoaXMudG9rZW5pemUoKSkhPWEmJm51bGwhPWcmJmkudmFsKGcpLHRoaXMucmVzdWx0c1BhZ2U9MSxrLnF1ZXJ5KHtlbGVtZW50OmsuZWxlbWVudCx0ZXJtOmkudmFsKCkscGFnZTp0aGlzLnJlc3VsdHNQYWdlLGNvbnRleHQ6bnVsbCxtYXRjaGVyOmsubWF0Y2hlcixjYWxsYmFjazp0aGlzLmJpbmQoZnVuY3Rpb24oZSl7dmFyIGc7aWYoaD09dGhpcy5xdWVyeUNvdW50KXtpZighdGhpcy5vcGVuZWQoKSlyZXR1cm4gdGhpcy5zZWFyY2gucmVtb3ZlQ2xhc3MoInNlbGVjdDItYWN0aXZlIiksdm9pZCAwO2lmKGUuaGFzRXJyb3IhPT1hJiZ5KGsuZm9ybWF0QWpheEVycm9yLCJmb3JtYXRBamF4RXJyb3IiKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLWFqYXgtZXJyb3InPiIreihrLmZvcm1hdEFqYXhFcnJvcixrLmVsZW1lbnQsZS5qcVhIUixlLnRleHRTdGF0dXMsZS5lcnJvclRocm93bikrIjwvbGk+Iiksdm9pZCAwO2lmKHRoaXMuY29udGV4dD1lLmNvbnRleHQ9PT1hP251bGw6ZS5jb250ZXh0LHRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UmJiIiIT09aS52YWwoKSYmKChnPXRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UuY2FsbChsLGkudmFsKCksZS5yZXN1bHRzKSkhPT1hJiZudWxsIT09ZyYmbC5pZChnKSE9PWEmJm51bGwhPT1sLmlkKGcpJiYwPT09eChlLnJlc3VsdHMpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBmKGwuaWQodGhpcyksbC5pZChnKSl9KS5sZW5ndGgmJnRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbihlLnJlc3VsdHMsZykpLDA9PT1lLnJlc3VsdHMubGVuZ3RoJiZ5KGsuZm9ybWF0Tm9NYXRjaGVzLCJmb3JtYXROb01hdGNoZXMiKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLW5vLXJlc3VsdHMnPiIreihrLmZvcm1hdE5vTWF0Y2hlcyxrLmVsZW1lbnQsaS52YWwoKSkrIjwvbGk+IiksdGhpcy5zaG93U2VhcmNoJiZ0aGlzLnNob3dTZWFyY2goaS52YWwoKSksdm9pZCAwO2ouZW1wdHkoKSxsLm9wdHMucG9wdWxhdGVSZXN1bHRzLmNhbGwodGhpcyxqLGUucmVzdWx0cyx7dGVybTppLnZhbCgpLHBhZ2U6dGhpcy5yZXN1bHRzUGFnZSxjb250ZXh0Om51bGx9KSwhMD09PWUubW9yZSYmeShrLmZvcm1hdExvYWRNb3JlLCJmb3JtYXRMb2FkTW9yZSIpJiYoai5hcHBlbmQoIjxsaSBjbGFzcz0nc2VsZWN0Mi1tb3JlLXJlc3VsdHMnPiIray5lc2NhcGVNYXJrdXAoeihrLmZvcm1hdExvYWRNb3JlLGsuZWxlbWVudCx0aGlzLnJlc3VsdHNQYWdlKSkrIjwvbGk+Iiksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLmxvYWRNb3JlSWZOZWVkZWQoKX0sMTApKSx0aGlzLnBvc3Rwcm9jZXNzUmVzdWx0cyhlLGIpLGMoKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3QyLWxvYWRlZCIsaXRlbXM6ZX0pfX0pfSl9fSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCl9LGJsdXI6ZnVuY3Rpb24oKXt0aGlzLm9wdHMuc2VsZWN0T25CbHVyJiZ0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdGhpcy5jbG9zZSgpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLnNlYXJjaFswXT09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJnRoaXMuc2VhcmNoLmJsdXIoKSx0aGlzLmNsZWFyU2VhcmNoKCksdGhpcy5zZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKX0sZm9jdXNTZWFyY2g6ZnVuY3Rpb24oKXttKHRoaXMuc2VhcmNoKX0sc2VsZWN0SGlnaGxpZ2h0ZWQ6ZnVuY3Rpb24oeCl7aWYodGhpcy5fdG91Y2hNb3ZlZClyZXR1cm4gdGhpcy5jbGVhclRvdWNoTW92ZWQoKSx2b2lkIDA7dmFyIGE9dGhpcy5oaWdobGlnaHQoKSxiPXRoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdCIpLmRhdGEoInNlbGVjdDItZGF0YSIpO2I/KHRoaXMuaGlnaGxpZ2h0KGEpLHRoaXMub25TZWxlY3QoYix4KSk6eCYmeC5ub0ZvY3VzJiZ0aGlzLmNsb3NlKCl9LGdldFBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHg7cmV0dXJuIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoInBsYWNlaG9sZGVyIil8fHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImRhdGEtcGxhY2Vob2xkZXIiKXx8dGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgicGxhY2Vob2xkZXIiKXx8dGhpcy5vcHRzLnBsYWNlaG9sZGVyfHwoKHg9dGhpcy5nZXRQbGFjZWhvbGRlck9wdGlvbigpKSE9PWE/eC50ZXh0KCk6YSl9LGdldFBsYWNlaG9sZGVyT3B0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5zZWxlY3Qpe3ZhciBiPXRoaXMuc2VsZWN0LmNoaWxkcmVuKCJvcHRpb24iKS5maXJzdCgpO2lmKHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiE9PWEpcmV0dXJuImZpcnN0Ij09PXRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiYmYnx8ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiYmdGhpcy5vcHRzLnBsYWNlaG9sZGVyT3B0aW9uKHRoaXMuc2VsZWN0KTtpZigiIj09PXgudHJpbShiLnRleHQoKSkmJiIiPT09Yi52YWwoKSlyZXR1cm4gYn19LGluaXRDb250YWluZXJXaWR0aDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt2YXIgYSxiLGMsZCxlO2lmKCJvZmYiPT09dGhpcy5vcHRzLndpZHRoKXJldHVybiBudWxsO2lmKCJlbGVtZW50Ij09PXRoaXMub3B0cy53aWR0aClyZXR1cm4gMD09PXRoaXMub3B0cy5lbGVtZW50Lm91dGVyV2lkdGgoITEpPyJhdXRvIjp0aGlzLm9wdHMuZWxlbWVudC5vdXRlcldpZHRoKCExKSsicHgiO2lmKCJjb3B5Ij09PXRoaXMub3B0cy53aWR0aHx8InJlc29sdmUiPT09dGhpcy5vcHRzLndpZHRoKXtpZigic3RyaW5nIj09dHlwZW9mKGE9dGhpcy5vcHRzLmVsZW1lbnQuYXR0cigic3R5bGUiKSkpZm9yKGQ9MCxlPShiPWEuc3BsaXQoIjsiKSkubGVuZ3RoO2U+ZDtkKz0xKWlmKG51bGwhPT0oYz1iW2RdLnJlcGxhY2UoL1xzL2csIiIpLm1hdGNoKC9ed2lkdGg6KChbLStdPyhbMC05XSpcLik/WzAtOV0rKShweHxlbXxleHwlfGlufGNtfG1tfHB0fHBjKSkvaSkpJiZjLmxlbmd0aD49MSlyZXR1cm4gY1sxXTtyZXR1cm4icmVzb2x2ZSI9PT10aGlzLm9wdHMud2lkdGg/KGE9dGhpcy5vcHRzLmVsZW1lbnQuY3NzKCJ3aWR0aCIpKS5pbmRleE9mKCIlIik+MD9hOjA9PT10aGlzLm9wdHMuZWxlbWVudC5vdXRlcldpZHRoKCExKT8iYXV0byI6dGhpcy5vcHRzLmVsZW1lbnQub3V0ZXJXaWR0aCghMSkrInB4IjpudWxsfXJldHVybiB4LmlzRnVuY3Rpb24odGhpcy5vcHRzLndpZHRoKT90aGlzLm9wdHMud2lkdGgoKTp0aGlzLm9wdHMud2lkdGh9dmFyIGI9YS5jYWxsKHRoaXMpO251bGwhPT1iJiZ0aGlzLmNvbnRhaW5lci5jc3MoIndpZHRoIixiKX19KSx7Y3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmF0dHIoe2NsYXNzOiJzZWxlY3QyLWNvbnRhaW5lciJ9KS5odG1sKFsiPGEgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApJyBjbGFzcz0nc2VsZWN0Mi1jaG9pY2UnIHRhYmluZGV4PSctMSc+IiwiICAgPHNwYW4gY2xhc3M9J3NlbGVjdDItY2hvc2VuJz4mIzE2MDs8L3NwYW4+PGFiYnIgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZSc+PC9hYmJyPiIsIiAgIDxzcGFuIGNsYXNzPSdzZWxlY3QyLWFycm93JyByb2xlPSdwcmVzZW50YXRpb24nPjxiIHJvbGU9J3ByZXNlbnRhdGlvbic+PC9iPjwvc3Bhbj4iLCI8L2E+IiwiPGxhYmVsIGZvcj0nJyBjbGFzcz0nc2VsZWN0Mi1vZmZzY3JlZW4nPjwvbGFiZWw+IiwiPGlucHV0IGNsYXNzPSdzZWxlY3QyLWZvY3Vzc2VyIHNlbGVjdDItb2Zmc2NyZWVuJyB0eXBlPSd0ZXh0JyBhcmlhLWhhc3BvcHVwPSd0cnVlJyByb2xlPSdidXR0b24nIC8+IiwiPGRpdiBjbGFzcz0nc2VsZWN0Mi1kcm9wIHNlbGVjdDItZGlzcGxheS1ub25lJz4iLCIgICA8ZGl2IGNsYXNzPSdzZWxlY3QyLXNlYXJjaCc+IiwiICAgICAgIDxsYWJlbCBmb3I9JycgY2xhc3M9J3NlbGVjdDItb2Zmc2NyZWVuJz48L2xhYmVsPiIsIiAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGF1dG9jb3JyZWN0PSdvZmYnIGF1dG9jYXBpdGFsaXplPSdvZmYnIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz0nc2VsZWN0Mi1pbnB1dCcgcm9sZT0nY29tYm9ib3gnIGFyaWEtZXhwYW5kZWQ9J3RydWUnIiwiICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSdsaXN0JyAvPiIsIiAgIDwvZGl2PiIsIiAgIDx1bCBjbGFzcz0nc2VsZWN0Mi1yZXN1bHRzJyByb2xlPSdsaXN0Ym94Jz4iLCIgICA8L3VsPiIsIjwvZGl2PiJdLmpvaW4oIiIpKX0sZW5hYmxlSW50ZXJmYWNlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZW5hYmxlSW50ZXJmYWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSYmdGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsIXRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkpfSxvcGVuaW5nOmZ1bmN0aW9uKCl7dmFyIGEsYixjO3RoaXMub3B0cy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD49MCYmdGhpcy5zaG93U2VhcmNoKCEwKSx0aGlzLnBhcmVudC5vcGVuaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwhMSE9PXRoaXMuc2hvd1NlYXJjaElucHV0JiZ0aGlzLnNlYXJjaC52YWwodGhpcy5mb2N1c3Nlci52YWwoKSksdGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykmJih0aGlzLnNlYXJjaC5mb2N1cygpLChhPXRoaXMuc2VhcmNoLmdldCgwKSkuY3JlYXRlVGV4dFJhbmdlPygoYj1hLmNyZWF0ZVRleHRSYW5nZSgpKS5jb2xsYXBzZSghMSksYi5zZWxlY3QoKSk6YS5zZXRTZWxlY3Rpb25SYW5nZSYmKGM9dGhpcy5zZWFyY2gudmFsKCkubGVuZ3RoLGEuc2V0U2VsZWN0aW9uUmFuZ2UoYyxjKSkpLHRoaXMucHJlZmlsbE5leHRTZWFyY2hUZXJtKCksdGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsITApLnZhbCgiIiksdGhpcy51cGRhdGVSZXN1bHRzKCEwKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItb3BlbiIpKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpJiYodGhpcy5wYXJlbnQuY2xvc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZm9jdXNzZXIucHJvcCgiZGlzYWJsZWQiLCExKSx0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnB1dCh0aGlzKSYmdGhpcy5mb2N1c3Nlci5mb2N1cygpKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpP3RoaXMuY2xvc2UoKToodGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsITEpLHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpJiZ0aGlzLmZvY3Vzc2VyLmZvY3VzKCkpfSxpc0ZvY3VzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5jYW5jZWwuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZm9jdXNzZXIucHJvcCgiZGlzYWJsZWQiLCExKSx0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnB1dCh0aGlzKSYmdGhpcy5mb2N1c3Nlci5mb2N1cygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7eCgibGFiZWxbZm9yPSciK3RoaXMuZm9jdXNzZXIuYXR0cigiaWQiKSsiJ10iKS5hdHRyKCJmb3IiLHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikpLHRoaXMucGFyZW50LmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpLEMuY2FsbCh0aGlzLCJzZWxlY3Rpb24iLCJmb2N1c3NlciIpfSxpbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIGEsYyxkPXRoaXMuY29udGFpbmVyLGU9dGhpcy5kcm9wZG93bixmPUgoKTt0aGlzLnNob3dTZWFyY2goISh0aGlzLm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCkpLHRoaXMuc2VsZWN0aW9uPWE9ZC5maW5kKCIuc2VsZWN0Mi1jaG9pY2UiKSx0aGlzLmZvY3Vzc2VyPWQuZmluZCgiLnNlbGVjdDItZm9jdXNzZXIiKSxhLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmF0dHIoImlkIiwic2VsZWN0Mi1jaG9zZW4tIitmKSx0aGlzLmZvY3Vzc2VyLmF0dHIoImFyaWEtbGFiZWxsZWRieSIsInNlbGVjdDItY2hvc2VuLSIrZiksdGhpcy5yZXN1bHRzLmF0dHIoImlkIiwic2VsZWN0Mi1yZXN1bHRzLSIrZiksdGhpcy5zZWFyY2guYXR0cigiYXJpYS1vd25zIiwic2VsZWN0Mi1yZXN1bHRzLSIrZiksdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIsInMyaWRfYXV0b2dlbiIrZiksYz14KCJsYWJlbFtmb3I9JyIrdGhpcy5vcHRzLmVsZW1lbnQuYXR0cigiaWQiKSsiJ10iKSx0aGlzLm9wdHMuZWxlbWVudC5vbigiZm9jdXMuc2VsZWN0MiIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5mb2N1cygpfSkpLHRoaXMuZm9jdXNzZXIucHJldigpLnRleHQoYy50ZXh0KCkpLmF0dHIoImZvciIsdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIpKTt2YXIgZz10aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJ0aXRsZSIpO3RoaXMub3B0cy5lbGVtZW50LmF0dHIoInRpdGxlIixnfHxjLnRleHQoKSksdGhpcy5mb2N1c3Nlci5hdHRyKCJ0YWJpbmRleCIsdGhpcy5lbGVtZW50VGFiSW5kZXgpLHRoaXMuc2VhcmNoLmF0dHIoImlkIix0aGlzLmZvY3Vzc2VyLmF0dHIoImlkIikrIl9zZWFyY2giKSx0aGlzLnNlYXJjaC5wcmV2KCkudGV4dCh4KCJsYWJlbFtmb3I9JyIrdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIpKyInXSIpLnRleHQoKSkuYXR0cigiZm9yIix0aGlzLnNlYXJjaC5hdHRyKCJpZCIpKSx0aGlzLnNlYXJjaC5vbigia2V5ZG93biIsdGhpcy5iaW5kKGZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkmJjIyOSE9eC5rZXlDb2RlKXtpZih4LndoaWNoPT09TS5QQUdFX1VQfHx4LndoaWNoPT09TS5QQUdFX0RPV04pcmV0dXJuIG8oeCksdm9pZCAwO3N3aXRjaCh4LndoaWNoKXtjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuIHRoaXMubW92ZUhpZ2hsaWdodCh4LndoaWNoPT09TS5VUD8tMToxKSxvKHgpLHZvaWQgMDtjYXNlIE0uRU5URVI6cmV0dXJuIHRoaXMuc2VsZWN0SGlnaGxpZ2h0ZWQoKSxvKHgpLHZvaWQgMDtjYXNlIE0uVEFCOnJldHVybiB0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdm9pZCAwO2Nhc2UgTS5FU0M6cmV0dXJuIHRoaXMuY2FuY2VsKHgpLG8oeCksdm9pZCAwfX19KSksdGhpcy5zZWFyY2gub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbigpe2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLmJvZHkuZ2V0KDApJiZ3aW5kb3cuc2V0VGltZW91dCh0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpJiZ0aGlzLnJlc3VsdHMmJnRoaXMucmVzdWx0cy5sZW5ndGg+MSYmdGhpcy5zZWFyY2guZm9jdXMoKX0pLDApfSkpLHRoaXMuZm9jdXNzZXIub24oImtleWRvd24iLHRoaXMuYmluZChmdW5jdGlvbih4KXtpZih0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiZ4LndoaWNoIT09TS5UQUImJiFNLmlzQ29udHJvbCh4KSYmIU0uaXNGdW5jdGlvbktleSh4KSYmeC53aGljaCE9PU0uRVNDKXtpZighMT09PXRoaXMub3B0cy5vcGVuT25FbnRlciYmeC53aGljaD09PU0uRU5URVIpcmV0dXJuIG8oeCksdm9pZCAwO2lmKHgud2hpY2g9PU0uRE9XTnx8eC53aGljaD09TS5VUHx8eC53aGljaD09TS5FTlRFUiYmdGhpcy5vcHRzLm9wZW5PbkVudGVyKXtpZih4LmFsdEtleXx8eC5jdHJsS2V5fHx4LnNoaWZ0S2V5fHx4Lm1ldGFLZXkpcmV0dXJuO3JldHVybiB0aGlzLm9wZW4oKSxvKHgpLHZvaWQgMH1yZXR1cm4geC53aGljaD09TS5ERUxFVEV8fHgud2hpY2g9PU0uQkFDS1NQQUNFPyh0aGlzLm9wdHMuYWxsb3dDbGVhciYmdGhpcy5jbGVhcigpLG8oeCksdm9pZCAwKTp2b2lkIDB9fSkpLGkodGhpcy5mb2N1c3NlciksdGhpcy5mb2N1c3Nlci5vbigia2V5dXAtY2hhbmdlIGlucHV0Iix0aGlzLmJpbmQoZnVuY3Rpb24oeCl7aWYodGhpcy5vcHRzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoPj0wKXtpZih4LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3BlbmVkKCkpcmV0dXJuO3RoaXMub3BlbigpfX0pKSxhLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsImFiYnIiLHRoaXMuYmluZChmdW5jdGlvbih4KXt0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiYodGhpcy5jbGVhcigpLHAoeCksdGhpcy5jbG9zZSgpLHRoaXMuc2VsZWN0aW9uJiZ0aGlzLnNlbGVjdGlvbi5mb2N1cygpKX0pKSxhLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsdGhpcy5iaW5kKGZ1bmN0aW9uKGMpe2IoYSksdGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfHx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItZm9jdXMiKSksdGhpcy5vcGVuZWQoKT90aGlzLmNsb3NlKCk6dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmdGhpcy5vcGVuKCksbyhjKX0pKSxlLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykmJnRoaXMuc2VhcmNoLmZvY3VzKCl9KSksYS5vbigiZm9jdXMiLHRoaXMuYmluZChmdW5jdGlvbih4KXtvKHgpfSkpLHRoaXMuZm9jdXNzZXIub24oImZvY3VzIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIil8fHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1mb2N1cyIpKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIil9KSkub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbigpe3RoaXMub3BlbmVkKCl8fCh0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIiksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWJsdXIiKSkpfSkpLHRoaXMuc2VhcmNoLm9uKCJmb2N1cyIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfHx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItZm9jdXMiKSksdGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfSkpLHRoaXMuaW5pdENvbnRhaW5lcldpZHRoKCksdGhpcy5vcHRzLmVsZW1lbnQuaGlkZSgpLHRoaXMuc2V0UGxhY2Vob2xkZXIoKX0sY2xlYXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zZWxlY3Rpb24uZGF0YSgic2VsZWN0Mi1kYXRhIik7aWYoYil7dmFyIGM9eC5FdmVudCgic2VsZWN0Mi1jbGVhcmluZyIpO2lmKHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoYyksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dmFyIGQ9dGhpcy5nZXRQbGFjZWhvbGRlck9wdGlvbigpO3RoaXMub3B0cy5lbGVtZW50LnZhbChkP2QudmFsKCk6IiIpLHRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmVtcHR5KCksdGhpcy5zZWxlY3Rpb24ucmVtb3ZlRGF0YSgic2VsZWN0Mi1kYXRhIiksdGhpcy5zZXRQbGFjZWhvbGRlcigpLCExIT09YSYmKHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItcmVtb3ZlZCIsdmFsOnRoaXMuaWQoYiksY2hvaWNlOmJ9KSx0aGlzLnRyaWdnZXJDaGFuZ2Uoe3JlbW92ZWQ6Yn0pKX19LGluaXRTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLmlzUGxhY2Vob2xkZXJPcHRpb25TZWxlY3RlZCgpKXRoaXMudXBkYXRlU2VsZWN0aW9uKG51bGwpLHRoaXMuY2xvc2UoKSx0aGlzLnNldFBsYWNlaG9sZGVyKCk7ZWxzZXt2YXIgeD10aGlzO3RoaXMub3B0cy5pbml0U2VsZWN0aW9uLmNhbGwobnVsbCx0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihiKXtiIT09YSYmbnVsbCE9PWImJih4LnVwZGF0ZVNlbGVjdGlvbihiKSx4LmNsb3NlKCkseC5zZXRQbGFjZWhvbGRlcigpLHgubGFzdFNlYXJjaFRlcm09eC5zZWFyY2gudmFsKCkpfSl9fSxpc1BsYWNlaG9sZGVyT3B0aW9uU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgeDtyZXR1cm4gdGhpcy5nZXRQbGFjZWhvbGRlcigpIT09YSYmKCh4PXRoaXMuZ2V0UGxhY2Vob2xkZXJPcHRpb24oKSkhPT1hJiZ4LnByb3AoInNlbGVjdGVkIil8fCIiPT09dGhpcy5vcHRzLmVsZW1lbnQudmFsKCl8fHRoaXMub3B0cy5lbGVtZW50LnZhbCgpPT09YXx8bnVsbD09PXRoaXMub3B0cy5lbGVtZW50LnZhbCgpKX0scHJlcGFyZU9wdHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBhcmVudC5wcmVwYXJlT3B0cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzO3JldHVybiJzZWxlY3QiPT09YS5lbGVtZW50LmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS5pbml0U2VsZWN0aW9uPWZ1bmN0aW9uKHgsYSl7dmFyIGM9eC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZCYmIXRoaXMuZGlzYWJsZWR9KTthKGIub3B0aW9uVG9EYXRhKGMpKX06ImRhdGEiaW4gYSYmKGEuaW5pdFNlbGVjdGlvbj1hLmluaXRTZWxlY3Rpb258fGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yi52YWwoKSxlPW51bGw7YS5xdWVyeSh7bWF0Y2hlcjpmdW5jdGlvbih4LGIsYyl7dmFyIGc9ZihkLGEuaWQoYykpO3JldHVybiBnJiYoZT1jKSxnfSxjYWxsYmFjazp4LmlzRnVuY3Rpb24oYyk/ZnVuY3Rpb24oKXtjKGUpfTp4Lm5vb3B9KX0pLGF9LGdldFBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0JiZ0aGlzLmdldFBsYWNlaG9sZGVyT3B0aW9uKCk9PT1hP2E6dGhpcy5wYXJlbnQuZ2V0UGxhY2Vob2xkZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZXRQbGFjZWhvbGRlcjpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtpZih0aGlzLmlzUGxhY2Vob2xkZXJPcHRpb25TZWxlY3RlZCgpJiZ4IT09YSl7aWYodGhpcy5zZWxlY3QmJnRoaXMuZ2V0UGxhY2Vob2xkZXJPcHRpb24oKT09PWEpcmV0dXJuO3RoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmh0bWwodGhpcy5vcHRzLmVzY2FwZU1hcmt1cCh4KSksdGhpcy5zZWxlY3Rpb24uYWRkQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWFsbG93Y2xlYXIiKX19LHBvc3Rwcm9jZXNzUmVzdWx0czpmdW5jdGlvbih4LGEsYil7dmFyIGM9MCxkPXRoaXM7aWYodGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKS5lYWNoMihmdW5jdGlvbih4LGEpe3JldHVybiBmKGQuaWQoYS5kYXRhKCJzZWxlY3QyLWRhdGEiKSksZC5vcHRzLmVsZW1lbnQudmFsKCkpPyhjPXgsITEpOnZvaWQgMH0pLCExIT09YiYmdGhpcy5oaWdobGlnaHQoITA9PT1hJiZjPj0wP2M6MCksITA9PT1hKXt2YXIgZT10aGlzLm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g7ZT49MCYmdGhpcy5zaG93U2VhcmNoKEEoeC5yZXN1bHRzKT49ZSl9fSxzaG93U2VhcmNoOmZ1bmN0aW9uKGEpe3RoaXMuc2hvd1NlYXJjaElucHV0IT09YSYmKHRoaXMuc2hvd1NlYXJjaElucHV0PWEsdGhpcy5kcm9wZG93bi5maW5kKCIuc2VsZWN0Mi1zZWFyY2giKS50b2dnbGVDbGFzcygic2VsZWN0Mi1zZWFyY2gtaGlkZGVuIiwhYSksdGhpcy5kcm9wZG93bi5maW5kKCIuc2VsZWN0Mi1zZWFyY2giKS50b2dnbGVDbGFzcygic2VsZWN0Mi1vZmZzY3JlZW4iLCFhKSx4KHRoaXMuZHJvcGRvd24sdGhpcy5jb250YWluZXIpLnRvZ2dsZUNsYXNzKCJzZWxlY3QyLXdpdGgtc2VhcmNoYm94IixhKSl9LG9uU2VsZWN0OmZ1bmN0aW9uKHgsYSl7aWYodGhpcy50cmlnZ2VyU2VsZWN0KHgpKXt2YXIgYj10aGlzLm9wdHMuZWxlbWVudC52YWwoKSxjPXRoaXMuZGF0YSgpO3RoaXMub3B0cy5lbGVtZW50LnZhbCh0aGlzLmlkKHgpKSx0aGlzLnVwZGF0ZVNlbGVjdGlvbih4KSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3QyLXNlbGVjdGVkIix2YWw6dGhpcy5pZCh4KSxjaG9pY2U6eH0pLHRoaXMubGFzdFNlYXJjaFRlcm09dGhpcy5zZWFyY2gudmFsKCksdGhpcy5jbG9zZSgpLGEmJmEubm9Gb2N1c3x8IXRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpfHx0aGlzLmZvY3Vzc2VyLmZvY3VzKCksZihiLHRoaXMuaWQoeCkpfHx0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOngscmVtb3ZlZDpjfSl9fSx1cGRhdGVTZWxlY3Rpb246ZnVuY3Rpb24oeCl7dmFyIGIsYyxkPXRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpO3RoaXMuc2VsZWN0aW9uLmRhdGEoInNlbGVjdDItZGF0YSIseCksZC5lbXB0eSgpLG51bGwhPT14JiYoYj10aGlzLm9wdHMuZm9ybWF0U2VsZWN0aW9uKHgsZCx0aGlzLm9wdHMuZXNjYXBlTWFya3VwKSksYiE9PWEmJmQuYXBwZW5kKGIpLChjPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb25Dc3NDbGFzcyh4LGQpKSE9PWEmJmQuYWRkQ2xhc3MoYyksdGhpcy5zZWxlY3Rpb24ucmVtb3ZlQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpLHRoaXMub3B0cy5hbGxvd0NsZWFyJiZ0aGlzLmdldFBsYWNlaG9sZGVyKCkhPT1hJiZ0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1hbGxvd2NsZWFyIil9LHZhbDpmdW5jdGlvbigpe3ZhciB4LGI9ITEsYz1udWxsLGQ9dGhpcyxlPXRoaXMuZGF0YSgpO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9wdHMuZWxlbWVudC52YWwoKTtpZih4PWFyZ3VtZW50c1swXSxhcmd1bWVudHMubGVuZ3RoPjEmJihiPWFyZ3VtZW50c1sxXSx0aGlzLm9wdHMuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCdTZWxlY3QyOiBUaGUgc2Vjb25kIG9wdGlvbiB0byBgc2VsZWN0MigidmFsIilgIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU2VsZWN0MiA0LjAuMC4gVGhlIGBjaGFuZ2VgIGV2ZW50IHdpbGwgYWx3YXlzIGJlIHRyaWdnZXJlZCBpbiA0LjAuMC4nKSksdGhpcy5zZWxlY3QpdGhpcy5vcHRzLmRlYnVnJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogU2V0dGluZyB0aGUgdmFsdWUgb24gYSA8c2VsZWN0PiB1c2luZyBgc2VsZWN0MigidmFsIilgIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgaW4gNC4wLjAuIFlvdSBjYW4gdXNlIHRoZSBgLnZhbChuZXdWYWx1ZSkudHJpZ2dlcigiY2hhbmdlIilgIG1ldGhvZCBwcm92aWRlZCBieSBqUXVlcnkgaW5zdGVhZC4nKSx0aGlzLnNlbGVjdC52YWwoeCkuZmluZCgib3B0aW9uIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWR9KS5lYWNoMihmdW5jdGlvbih4LGEpe3JldHVybiBjPWQub3B0aW9uVG9EYXRhKGEpLCExfSksdGhpcy51cGRhdGVTZWxlY3Rpb24oYyksdGhpcy5zZXRQbGFjZWhvbGRlcigpLGImJnRoaXMudHJpZ2dlckNoYW5nZSh7YWRkZWQ6YyxyZW1vdmVkOmV9KTtlbHNle2lmKCF4JiYwIT09eClyZXR1cm4gdGhpcy5jbGVhcihiKSx2b2lkIDA7aWYodGhpcy5vcHRzLmluaXRTZWxlY3Rpb249PT1hKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGNhbGwgdmFsKCkgaWYgaW5pdFNlbGVjdGlvbigpIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5vcHRzLmVsZW1lbnQudmFsKHgpLHRoaXMub3B0cy5pbml0U2VsZWN0aW9uKHRoaXMub3B0cy5lbGVtZW50LGZ1bmN0aW9uKHgpe2Qub3B0cy5lbGVtZW50LnZhbCh4P2QuaWQoeCk6IiIpLGQudXBkYXRlU2VsZWN0aW9uKHgpLGQuc2V0UGxhY2Vob2xkZXIoKSxiJiZkLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOngscmVtb3ZlZDplfSl9KX19LGNsZWFyU2VhcmNoOmZ1bmN0aW9uKCl7dGhpcy5zZWFyY2gudmFsKCIiKSx0aGlzLmZvY3Vzc2VyLnZhbCgiIil9LGRhdGE6ZnVuY3Rpb24oeCl7dmFyIGIsYz0hMTtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KChiPXRoaXMuc2VsZWN0aW9uLmRhdGEoInNlbGVjdDItZGF0YSIpKT09YSYmKGI9bnVsbCksYik6KHRoaXMub3B0cy5kZWJ1ZyYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MigiZGF0YSIpYCBtZXRob2QgY2FuIG5vIGxvbmdlciBzZXQgc2VsZWN0ZWQgdmFsdWVzIGluIDQuMC4wLCBjb25zaWRlciB1c2luZyB0aGUgYC52YWwoKWAgbWV0aG9kIGluc3RlYWQuJyksYXJndW1lbnRzLmxlbmd0aD4xJiYoYz1hcmd1bWVudHNbMV0pLHg/KGI9dGhpcy5kYXRhKCksdGhpcy5vcHRzLmVsZW1lbnQudmFsKHg/dGhpcy5pZCh4KToiIiksdGhpcy51cGRhdGVTZWxlY3Rpb24oeCksYyYmdGhpcy50cmlnZ2VyQ2hhbmdlKHthZGRlZDp4LHJlbW92ZWQ6Yn0pKTp0aGlzLmNsZWFyKGMpLHZvaWQgMCl9fSksRz1EKEUse2NyZWF0ZUNvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB4KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hdHRyKHtjbGFzczoic2VsZWN0Mi1jb250YWluZXIgc2VsZWN0Mi1jb250YWluZXItbXVsdGkifSkuaHRtbChbIjx1bCBjbGFzcz0nc2VsZWN0Mi1jaG9pY2VzJz4iLCIgIDxsaSBjbGFzcz0nc2VsZWN0Mi1zZWFyY2gtZmllbGQnPiIsIiAgICA8bGFiZWwgZm9yPScnIGNsYXNzPSdzZWxlY3QyLW9mZnNjcmVlbic+PC9sYWJlbD4iLCIgICAgPGlucHV0IHR5cGU9J3RleHQnIGF1dG9jb21wbGV0ZT0nb2ZmJyBhdXRvY29ycmVjdD0nb2ZmJyBhdXRvY2FwaXRhbGl6ZT0nb2ZmJyBzcGVsbGNoZWNrPSdmYWxzZScgY2xhc3M9J3NlbGVjdDItaW5wdXQnPiIsIiAgPC9saT4iLCI8L3VsPiIsIjxkaXYgY2xhc3M9J3NlbGVjdDItZHJvcCBzZWxlY3QyLWRyb3AtbXVsdGkgc2VsZWN0Mi1kaXNwbGF5LW5vbmUnPiIsIiAgIDx1bCBjbGFzcz0nc2VsZWN0Mi1yZXN1bHRzJz4iLCIgICA8L3VsPiIsIjwvZGl2PiJdLmpvaW4oIiIpKX0scHJlcGFyZU9wdHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBhcmVudC5wcmVwYXJlT3B0cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzO3JldHVybiJzZWxlY3QiPT09YS5lbGVtZW50LmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS5pbml0U2VsZWN0aW9uPWZ1bmN0aW9uKHgsYSl7dmFyIGM9W107eC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZCYmIXRoaXMuZGlzYWJsZWR9KS5lYWNoMihmdW5jdGlvbih4LGEpe2MucHVzaChiLm9wdGlvblRvRGF0YShhKSl9KSxhKGMpfToiZGF0YSJpbiBhJiYoYS5pbml0U2VsZWN0aW9uPWEuaW5pdFNlbGVjdGlvbnx8ZnVuY3Rpb24oYixjKXt2YXIgZD1nKGIudmFsKCksYS5zZXBhcmF0b3IsYS50cmFuc2Zvcm1WYWwpLGU9W107YS5xdWVyeSh7bWF0Y2hlcjpmdW5jdGlvbihiLGMsZyl7dmFyIGg9eC5ncmVwKGQsZnVuY3Rpb24oeCl7cmV0dXJuIGYoeCxhLmlkKGcpKX0pLmxlbmd0aDtyZXR1cm4gaCYmZS5wdXNoKGcpLGh9LGNhbGxiYWNrOnguaXNGdW5jdGlvbihjKT9mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxiPTA7YjxkLmxlbmd0aDtiKyspZm9yKHZhciBnPWRbYl0saD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgaT1lW2hdO2lmKGYoZyxhLmlkKGkpKSl7eC5wdXNoKGkpLGUuc3BsaWNlKGgsMSk7YnJlYWt9fWMoeCl9Ongubm9vcH0pfSksYX0sc2VsZWN0Q2hvaWNlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKTthLmxlbmd0aCYmeCYmeFswXT09YVswXXx8KGEubGVuZ3RoJiZ0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKCJjaG9pY2UtZGVzZWxlY3RlZCIsYSksYS5yZW1vdmVDbGFzcygic2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIikseCYmeC5sZW5ndGgmJih0aGlzLmNsb3NlKCkseC5hZGRDbGFzcygic2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIiksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcigiY2hvaWNlLXNlbGVjdGVkIix4KSkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7eCgibGFiZWxbZm9yPSciK3RoaXMuc2VhcmNoLmF0dHIoImlkIikrIiddIikuYXR0cigiZm9yIix0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpZCIpKSx0aGlzLnBhcmVudC5kZXN0cm95LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxDLmNhbGwodGhpcywic2VhcmNoQ29udGFpbmVyIiwic2VsZWN0aW9uIil9LGluaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgYSxiPSIuc2VsZWN0Mi1jaG9pY2VzIjt0aGlzLnNlYXJjaENvbnRhaW5lcj10aGlzLmNvbnRhaW5lci5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtZmllbGQiKSx0aGlzLnNlbGVjdGlvbj1hPXRoaXMuY29udGFpbmVyLmZpbmQoYik7dmFyIGM9dGhpczt0aGlzLnNlbGVjdGlvbi5vbigiY2xpY2siLCIuc2VsZWN0Mi1jb250YWluZXI6bm90KC5zZWxlY3QyLWNvbnRhaW5lci1kaXNhYmxlZCkgLnNlbGVjdDItc2VhcmNoLWNob2ljZTpub3QoLnNlbGVjdDItbG9ja2VkKSIsZnVuY3Rpb24oKXtjLnNlYXJjaFswXS5mb2N1cygpLGMuc2VsZWN0Q2hvaWNlKHgodGhpcykpfSksdGhpcy5zZWFyY2guYXR0cigiaWQiLCJzMmlkX2F1dG9nZW4iK0goKSksdGhpcy5zZWFyY2gucHJldigpLnRleHQoeCgibGFiZWxbZm9yPSciK3RoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikrIiddIikudGV4dCgpKS5hdHRyKCJmb3IiLHRoaXMuc2VhcmNoLmF0dHIoImlkIikpLHRoaXMub3B0cy5lbGVtZW50Lm9uKCJmb2N1cy5zZWxlY3QyIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLmZvY3VzKCl9KSksdGhpcy5zZWFyY2gub24oImlucHV0IHBhc3RlIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLnNlYXJjaC5hdHRyKCJwbGFjZWhvbGRlciIpJiYwPT10aGlzLnNlYXJjaC52YWwoKS5sZW5ndGh8fHRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkmJih0aGlzLm9wZW5lZCgpfHx0aGlzLm9wZW4oKSl9KSksdGhpcy5zZWFyY2guYXR0cigidGFiaW5kZXgiLHRoaXMuZWxlbWVudFRhYkluZGV4KSx0aGlzLmtleWRvd25zPTAsdGhpcy5zZWFyY2gub24oImtleWRvd24iLHRoaXMuYmluZChmdW5jdGlvbih4KXtpZih0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKXsrK3RoaXMua2V5ZG93bnM7dmFyIGI9YS5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIiksYz1iLnByZXYoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2U6bm90KC5zZWxlY3QyLWxvY2tlZCkiKSxkPWIubmV4dCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZTpub3QoLnNlbGVjdDItbG9ja2VkKSIpLGU9bih0aGlzLnNlYXJjaCk7aWYoYi5sZW5ndGgmJih4LndoaWNoPT1NLkxFRlR8fHgud2hpY2g9PU0uUklHSFR8fHgud2hpY2g9PU0uQkFDS1NQQUNFfHx4LndoaWNoPT1NLkRFTEVURXx8eC53aGljaD09TS5FTlRFUikpe3ZhciBmPWI7cmV0dXJuIHgud2hpY2g9PU0uTEVGVCYmYy5sZW5ndGg/Zj1jOngud2hpY2g9PU0uUklHSFQ/Zj1kLmxlbmd0aD9kOm51bGw6eC53aGljaD09PU0uQkFDS1NQQUNFP3RoaXMudW5zZWxlY3QoYi5maXJzdCgpKSYmKHRoaXMuc2VhcmNoLndpZHRoKDEwKSxmPWMubGVuZ3RoP2M6ZCk6eC53aGljaD09TS5ERUxFVEU/dGhpcy51bnNlbGVjdChiLmZpcnN0KCkpJiYodGhpcy5zZWFyY2gud2lkdGgoMTApLGY9ZC5sZW5ndGg/ZDpudWxsKTp4LndoaWNoPT1NLkVOVEVSJiYoZj1udWxsKSx0aGlzLnNlbGVjdENob2ljZShmKSxvKHgpLGYmJmYubGVuZ3RofHx0aGlzLm9wZW4oKSx2b2lkIDB9aWYoKHgud2hpY2g9PT1NLkJBQ0tTUEFDRSYmMT09dGhpcy5rZXlkb3duc3x8eC53aGljaD09TS5MRUZUKSYmMD09ZS5vZmZzZXQmJiFlLmxlbmd0aClyZXR1cm4gdGhpcy5zZWxlY3RDaG9pY2UoYS5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlOm5vdCguc2VsZWN0Mi1sb2NrZWQpIikubGFzdCgpKSxvKHgpLHZvaWQgMDtpZih0aGlzLnNlbGVjdENob2ljZShudWxsKSx0aGlzLm9wZW5lZCgpKXN3aXRjaCh4LndoaWNoKXtjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuIHRoaXMubW92ZUhpZ2hsaWdodCh4LndoaWNoPT09TS5VUD8tMToxKSxvKHgpLHZvaWQgMDtjYXNlIE0uRU5URVI6cmV0dXJuIHRoaXMuc2VsZWN0SGlnaGxpZ2h0ZWQoKSxvKHgpLHZvaWQgMDtjYXNlIE0uVEFCOnJldHVybiB0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdGhpcy5jbG9zZSgpLHZvaWQgMDtjYXNlIE0uRVNDOnJldHVybiB0aGlzLmNhbmNlbCh4KSxvKHgpLHZvaWQgMH1pZih4LndoaWNoIT09TS5UQUImJiFNLmlzQ29udHJvbCh4KSYmIU0uaXNGdW5jdGlvbktleSh4KSYmeC53aGljaCE9PU0uQkFDS1NQQUNFJiZ4LndoaWNoIT09TS5FU0Mpe2lmKHgud2hpY2g9PT1NLkVOVEVSKXtpZighMT09PXRoaXMub3B0cy5vcGVuT25FbnRlcilyZXR1cm47aWYoeC5hbHRLZXl8fHguY3RybEtleXx8eC5zaGlmdEtleXx8eC5tZXRhS2V5KXJldHVybn10aGlzLm9wZW4oKSwoeC53aGljaD09PU0uUEFHRV9VUHx8eC53aGljaD09PU0uUEFHRV9ET1dOKSYmbyh4KSx4LndoaWNoPT09TS5FTlRFUiYmbyh4KX19fSkpLHRoaXMuc2VhcmNoLm9uKCJrZXl1cCIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5rZXlkb3ducz0wLHRoaXMucmVzaXplU2VhcmNoKCl9KSksdGhpcy5zZWFyY2gub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbihhKXt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIiksdGhpcy5zZWFyY2gucmVtb3ZlQ2xhc3MoInNlbGVjdDItZm9jdXNlZCIpLHRoaXMuc2VsZWN0Q2hvaWNlKG51bGwpLHRoaXMub3BlbmVkKCl8fHRoaXMuY2xlYXJTZWFyY2goKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1ibHVyIikpfSkpLHRoaXMuY29udGFpbmVyLm9uKCJjbGljayIsYix0aGlzLmJpbmQoZnVuY3Rpb24oYSl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHgoYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UiKS5sZW5ndGg+MHx8KHRoaXMuc2VsZWN0Q2hvaWNlKG51bGwpLHRoaXMuY2xlYXJQbGFjZWhvbGRlcigpLHRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKXx8dGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWZvY3VzIikpLHRoaXMub3BlbigpLHRoaXMuZm9jdXNTZWFyY2goKSxhLnByZXZlbnREZWZhdWx0KCkpKX0pKSx0aGlzLmNvbnRhaW5lci5vbigiZm9jdXMiLGIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKXx8dGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWZvY3VzIikpLHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmRyb3Bkb3duLmFkZENsYXNzKCJzZWxlY3QyLWRyb3AtYWN0aXZlIiksdGhpcy5jbGVhclBsYWNlaG9sZGVyKCkpfSkpLHRoaXMuaW5pdENvbnRhaW5lcldpZHRoKCksdGhpcy5vcHRzLmVsZW1lbnQuaGlkZSgpLHRoaXMuY2xlYXJTZWFyY2goKX0sZW5hYmxlSW50ZXJmYWNlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZW5hYmxlSW50ZXJmYWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSYmdGhpcy5zZWFyY2gucHJvcCgiZGlzYWJsZWQiLCF0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKX0saW5pdFNlbGVjdGlvbjpmdW5jdGlvbigpe2lmKCIiPT09dGhpcy5vcHRzLmVsZW1lbnQudmFsKCkmJiIiPT09dGhpcy5vcHRzLmVsZW1lbnQudGV4dCgpJiYodGhpcy51cGRhdGVTZWxlY3Rpb24oW10pLHRoaXMuY2xvc2UoKSx0aGlzLmNsZWFyU2VhcmNoKCkpLHRoaXMuc2VsZWN0fHwiIiE9PXRoaXMub3B0cy5lbGVtZW50LnZhbCgpKXt2YXIgeD10aGlzO3RoaXMub3B0cy5pbml0U2VsZWN0aW9uLmNhbGwobnVsbCx0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihiKXtiIT09YSYmbnVsbCE9PWImJih4LnVwZGF0ZVNlbGVjdGlvbihiKSx4LmNsb3NlKCkseC5jbGVhclNlYXJjaCgpKX0pfX0sY2xlYXJTZWFyY2g6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmdldFBsYWNlaG9sZGVyKCksYj10aGlzLmdldE1heFNlYXJjaFdpZHRoKCk7eCE9PWEmJjA9PT10aGlzLmdldFZhbCgpLmxlbmd0aCYmITE9PT10aGlzLnNlYXJjaC5oYXNDbGFzcygic2VsZWN0Mi1mb2N1c2VkIik/KHRoaXMuc2VhcmNoLnZhbCh4KS5hZGRDbGFzcygic2VsZWN0Mi1kZWZhdWx0IiksdGhpcy5zZWFyY2gud2lkdGgoYj4wP2I6dGhpcy5jb250YWluZXIuY3NzKCJ3aWR0aCIpKSk6dGhpcy5zZWFyY2gudmFsKCIiKS53aWR0aCgxMCl9LGNsZWFyUGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXt0aGlzLnNlYXJjaC5oYXNDbGFzcygic2VsZWN0Mi1kZWZhdWx0IikmJnRoaXMuc2VhcmNoLnZhbCgiIikucmVtb3ZlQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpfSxvcGVuaW5nOmZ1bmN0aW9uKCl7dGhpcy5jbGVhclBsYWNlaG9sZGVyKCksdGhpcy5yZXNpemVTZWFyY2goKSx0aGlzLnBhcmVudC5vcGVuaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmZvY3VzU2VhcmNoKCksdGhpcy5wcmVmaWxsTmV4dFNlYXJjaFRlcm0oKSx0aGlzLnVwZGF0ZVJlc3VsdHMoITApLHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpJiZ0aGlzLnNlYXJjaC5mb2N1cygpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1vcGVuIikpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkKCkmJnRoaXMucGFyZW50LmNsb3NlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCksdGhpcy5zZWFyY2guZm9jdXMoKX0saXNGb2N1c2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhcmNoLmhhc0NsYXNzKCJzZWxlY3QyLWZvY3VzZWQiKX0sdXBkYXRlU2VsZWN0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9W10sZD10aGlzO3goYSkuZWFjaChmdW5jdGlvbigpe2QuaWQodGhpcylpbiBifHwoYltkLmlkKHRoaXMpXT0wLGMucHVzaCh0aGlzKSl9KSx0aGlzLnNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIikucmVtb3ZlKCksdGhpcy5hZGRTZWxlY3RlZENob2ljZShjKSxkLnBvc3Rwcm9jZXNzUmVzdWx0cygpfSx0b2tlbml6ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMuc2VhcmNoLnZhbCgpO251bGwhPSh4PXRoaXMub3B0cy50b2tlbml6ZXIuY2FsbCh0aGlzLHgsdGhpcy5kYXRhKCksdGhpcy5iaW5kKHRoaXMub25TZWxlY3QpLHRoaXMub3B0cykpJiZ4IT1hJiYodGhpcy5zZWFyY2gudmFsKHgpLHgubGVuZ3RoPjAmJnRoaXMub3BlbigpKX0sb25TZWxlY3Q6ZnVuY3Rpb24oeCxhKXt0aGlzLnRyaWdnZXJTZWxlY3QoeCkmJiIiIT09eC50ZXh0JiYodGhpcy5hZGRTZWxlY3RlZENob2ljZSh4KSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3RlZCIsdmFsOnRoaXMuaWQoeCksY2hvaWNlOnh9KSx0aGlzLmxhc3RTZWFyY2hUZXJtPXRoaXMuc2VhcmNoLnZhbCgpLHRoaXMuY2xlYXJTZWFyY2goKSx0aGlzLnVwZGF0ZVJlc3VsdHMoKSwodGhpcy5zZWxlY3R8fCF0aGlzLm9wdHMuY2xvc2VPblNlbGVjdCkmJnRoaXMucG9zdHByb2Nlc3NSZXN1bHRzKHgsITEsITA9PT10aGlzLm9wdHMuY2xvc2VPblNlbGVjdCksdGhpcy5vcHRzLmNsb3NlT25TZWxlY3Q/KHRoaXMuY2xvc2UoKSx0aGlzLnNlYXJjaC53aWR0aCgxMCkpOnRoaXMuY291bnRTZWxlY3RhYmxlUmVzdWx0cygpPjA/KHRoaXMuc2VhcmNoLndpZHRoKDEwKSx0aGlzLnJlc2l6ZVNlYXJjaCgpLHRoaXMuZ2V0TWF4aW11bVNlbGVjdGlvblNpemUoKT4wJiZ0aGlzLnZhbCgpLmxlbmd0aD49dGhpcy5nZXRNYXhpbXVtU2VsZWN0aW9uU2l6ZSgpP3RoaXMudXBkYXRlUmVzdWx0cyghMCk6dGhpcy5wcmVmaWxsTmV4dFNlYXJjaFRlcm0oKSYmdGhpcy51cGRhdGVSZXN1bHRzKCksdGhpcy5wb3NpdGlvbkRyb3Bkb3duKCkpOih0aGlzLmNsb3NlKCksdGhpcy5zZWFyY2gud2lkdGgoMTApKSx0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOnh9KSxhJiZhLm5vRm9jdXN8fHRoaXMuZm9jdXNTZWFyY2goKSl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuY2xvc2UoKSx0aGlzLmZvY3VzU2VhcmNoKCl9LGFkZFNlbGVjdGVkQ2hvaWNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0VmFsKCksYz10aGlzO3goYSkuZWFjaChmdW5jdGlvbigpe2IucHVzaChjLmNyZWF0ZUNob2ljZSh0aGlzKSl9KSx0aGlzLnNldFZhbChiKX0sY3JlYXRlQ2hvaWNlOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZT0hYi5sb2NrZWQsZj14KCI8bGkgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZSc+ICAgIDxkaXY+PC9kaXY+ICAgIDxhIGhyZWY9JyMnIGNsYXNzPSdzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UnIHRhYmluZGV4PSctMSc+PC9hPjwvbGk+IiksZz14KCI8bGkgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZSBzZWxlY3QyLWxvY2tlZCc+PGRpdj48L2Rpdj48L2xpPiIpLGg9ZT9mOmcsaT10aGlzLmlkKGIpO3JldHVybihjPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb24oYixoLmZpbmQoImRpdiIpLHRoaXMub3B0cy5lc2NhcGVNYXJrdXApKSE9YSYmaC5maW5kKCJkaXYiKS5yZXBsYWNlV2l0aCh4KCI8ZGl2PjwvZGl2PiIpLmh0bWwoYykpLChkPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb25Dc3NDbGFzcyhiLGguZmluZCgiZGl2IikpKSE9YSYmaC5hZGRDbGFzcyhkKSxlJiZoLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UiKS5vbigibW91c2Vkb3duIixvKS5vbigiY2xpY2sgZGJsY2xpY2siLHRoaXMuYmluZChmdW5jdGlvbihhKXt0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiYodGhpcy51bnNlbGVjdCh4KGEudGFyZ2V0KSksdGhpcy5zZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKSxvKGEpLHRoaXMuY2xvc2UoKSx0aGlzLmZvY3VzU2VhcmNoKCkpfSkpLm9uKCJmb2N1cyIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmRyb3Bkb3duLmFkZENsYXNzKCJzZWxlY3QyLWRyb3AtYWN0aXZlIikpfSkpLGguZGF0YSgic2VsZWN0Mi1kYXRhIixiKSxoLmluc2VydEJlZm9yZSh0aGlzLnNlYXJjaENvbnRhaW5lciksaX0sdW5zZWxlY3Q6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlPXRoaXMuZ2V0VmFsKCk7aWYoMD09PShhPWEuY2xvc2VzdCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpKS5sZW5ndGgpdGhyb3ciSW52YWxpZCBhcmd1bWVudDogIithKyIuIE11c3QgYmUgLnNlbGVjdDItc2VhcmNoLWNob2ljZSI7aWYoYj1hLmRhdGEoInNlbGVjdDItZGF0YSIpKXt2YXIgZj14LkV2ZW50KCJzZWxlY3QyLXJlbW92aW5nIik7aWYoZi52YWw9dGhpcy5pZChiKSxmLmNob2ljZT1iLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoZiksZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4hMTtmb3IoOyhjPWQodGhpcy5pZChiKSxlKSk+PTA7KWUuc3BsaWNlKGMsMSksdGhpcy5zZXRWYWwoZSksdGhpcy5zZWxlY3QmJnRoaXMucG9zdHByb2Nlc3NSZXN1bHRzKCk7cmV0dXJuIGEucmVtb3ZlKCksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih7dHlwZToic2VsZWN0Mi1yZW1vdmVkIix2YWw6dGhpcy5pZChiKSxjaG9pY2U6Yn0pLHRoaXMudHJpZ2dlckNoYW5nZSh7cmVtb3ZlZDpifSksITB9fSxwb3N0cHJvY2Vzc1Jlc3VsdHM6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMuZ2V0VmFsKCksZT10aGlzLnJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0IiksZj10aGlzLnJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0LXdpdGgtY2hpbGRyZW4iKSxnPXRoaXM7ZS5lYWNoMihmdW5jdGlvbih4LGEpe2QoZy5pZChhLmRhdGEoInNlbGVjdDItZGF0YSIpKSxjKT49MCYmKGEuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKSxhLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKSl9KSxmLmVhY2gyKGZ1bmN0aW9uKHgsYSl7YS5pcygiLnNlbGVjdDItcmVzdWx0LXNlbGVjdGFibGUiKXx8MCE9PWEuZmluZCgiLnNlbGVjdDItcmVzdWx0LXNlbGVjdGFibGU6bm90KC5zZWxlY3QyLXNlbGVjdGVkKSIpLmxlbmd0aHx8YS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3RlZCIpfSksLTE9PXRoaXMuaGlnaGxpZ2h0KCkmJiExIT09YiYmITA9PT10aGlzLm9wdHMuY2xvc2VPblNlbGVjdCYmZy5oaWdobGlnaHQoMCksIXRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UmJiFlLmZpbHRlcigiLnNlbGVjdDItcmVzdWx0Om5vdCguc2VsZWN0Mi1zZWxlY3RlZCkiKS5sZW5ndGg+MCYmKCF4fHx4JiYheC5tb3JlJiYwPT09dGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxlY3QyLW5vLXJlc3VsdHMiKS5sZW5ndGgpJiZ5KGcub3B0cy5mb3JtYXROb01hdGNoZXMsImZvcm1hdE5vTWF0Y2hlcyIpJiZ0aGlzLnJlc3VsdHMuYXBwZW5kKCI8bGkgY2xhc3M9J3NlbGVjdDItbm8tcmVzdWx0cyc+Iit6KGcub3B0cy5mb3JtYXROb01hdGNoZXMsZy5vcHRzLmVsZW1lbnQsZy5zZWFyY2gudmFsKCkpKyI8L2xpPiIpfSxnZXRNYXhTZWFyY2hXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi53aWR0aCgpLWgodGhpcy5zZWFyY2gpfSxyZXNpemVTZWFyY2g6ZnVuY3Rpb24oKXt2YXIgeCxhLGIsYyxkPWgodGhpcy5zZWFyY2gpO3g9cSh0aGlzLnNlYXJjaCkrMTAsYT10aGlzLnNlYXJjaC5vZmZzZXQoKS5sZWZ0LHg+KGM9KGI9dGhpcy5zZWxlY3Rpb24ud2lkdGgoKSktKGEtdGhpcy5zZWxlY3Rpb24ub2Zmc2V0KCkubGVmdCktZCkmJihjPWItZCksNDA+YyYmKGM9Yi1kKSwwPj1jJiYoYz14KSx0aGlzLnNlYXJjaC53aWR0aChNYXRoLmZsb29yKGMpKX0sZ2V0VmFsOmZ1bmN0aW9uKCl7dmFyIHg7cmV0dXJuIHRoaXMuc2VsZWN0P251bGw9PT0oeD10aGlzLnNlbGVjdC52YWwoKSk/W106eDpnKHg9dGhpcy5vcHRzLmVsZW1lbnQudmFsKCksdGhpcy5vcHRzLnNlcGFyYXRvcix0aGlzLm9wdHMudHJhbnNmb3JtVmFsKX0sc2V0VmFsOmZ1bmN0aW9uKGEpe2lmKHRoaXMuc2VsZWN0KXRoaXMuc2VsZWN0LnZhbChhKTtlbHNle3ZhciBiPVtdLGM9e307eChhKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcyBpbiBjfHwoYi5wdXNoKHRoaXMpLGNbdGhpc109MCl9KSx0aGlzLm9wdHMuZWxlbWVudC52YWwoMD09PWIubGVuZ3RoPyIiOmIuam9pbih0aGlzLm9wdHMuc2VwYXJhdG9yKSl9fSxidWlsZENoYW5nZURldGFpbHM6ZnVuY3Rpb24oeCxhKXthPWEuc2xpY2UoMCkseD14LnNsaWNlKDApO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWZvcih2YXIgYz0wO2M8eC5sZW5ndGg7YysrKWlmKGYodGhpcy5vcHRzLmlkKGFbYl0pLHRoaXMub3B0cy5pZCh4W2NdKSkpe2Euc3BsaWNlKGIsMSksYi0tLHguc3BsaWNlKGMsMSk7YnJlYWt9cmV0dXJue2FkZGVkOmEscmVtb3ZlZDp4fX0sdmFsOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT10aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmdldFZhbCgpO2lmKChkPXRoaXMuZGF0YSgpKS5sZW5ndGh8fChkPVtdKSwhYiYmMCE9PWIpcmV0dXJuIHRoaXMub3B0cy5lbGVtZW50LnZhbCgiIiksdGhpcy51cGRhdGVTZWxlY3Rpb24oW10pLHRoaXMuY2xlYXJTZWFyY2goKSxjJiZ0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOnRoaXMuZGF0YSgpLHJlbW92ZWQ6ZH0pLHZvaWQgMDtpZih0aGlzLnNldFZhbChiKSx0aGlzLnNlbGVjdCl0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbih0aGlzLnNlbGVjdCx0aGlzLmJpbmQodGhpcy51cGRhdGVTZWxlY3Rpb24pKSxjJiZ0aGlzLnRyaWdnZXJDaGFuZ2UodGhpcy5idWlsZENoYW5nZURldGFpbHMoZCx0aGlzLmRhdGEoKSkpO2Vsc2V7aWYodGhpcy5vcHRzLmluaXRTZWxlY3Rpb249PT1hKXRocm93IG5ldyBFcnJvcigidmFsKCkgY2Fubm90IGJlIGNhbGxlZCBpZiBpbml0U2VsZWN0aW9uKCkgaXMgbm90IGRlZmluZWQiKTt0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbih0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihhKXt2YXIgYj14Lm1hcChhLGUuaWQpO2Uuc2V0VmFsKGIpLGUudXBkYXRlU2VsZWN0aW9uKGEpLGUuY2xlYXJTZWFyY2goKSxjJiZlLnRyaWdnZXJDaGFuZ2UoZS5idWlsZENoYW5nZURldGFpbHMoZCxlLmRhdGEoKSkpfSl9dGhpcy5jbGVhclNlYXJjaCgpfSxvblNvcnRTdGFydDpmdW5jdGlvbigpe2lmKHRoaXMuc2VsZWN0KXRocm93IG5ldyBFcnJvcigiU29ydGluZyBvZiBlbGVtZW50cyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXR0YWNoZWQgdG8gPHNlbGVjdD4uIEF0dGFjaCB0byA8aW5wdXQgdHlwZT0naGlkZGVuJy8+IGluc3RlYWQuIik7dGhpcy5zZWFyY2gud2lkdGgoMCksdGhpcy5zZWFyY2hDb250YWluZXIuaGlkZSgpfSxvblNvcnRFbmQ6ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXM7dGhpcy5zZWFyY2hDb250YWluZXIuc2hvdygpLHRoaXMuc2VhcmNoQ29udGFpbmVyLmFwcGVuZFRvKHRoaXMuc2VhcmNoQ29udGFpbmVyLnBhcmVudCgpKSx0aGlzLnJlc2l6ZVNlYXJjaCgpLHRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UiKS5lYWNoKGZ1bmN0aW9uKCl7YS5wdXNoKGIub3B0cy5pZCh4KHRoaXMpLmRhdGEoInNlbGVjdDItZGF0YSIpKSl9KSx0aGlzLnNldFZhbChhKSx0aGlzLnRyaWdnZXJDaGFuZ2UoKX0sZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzO3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLnNlbGVjdGlvbi5jaGlsZHJlbigiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpLm1hcChmdW5jdGlvbigpe3JldHVybiB4KHRoaXMpLmRhdGEoInNlbGVjdDItZGF0YSIpfSkuZ2V0KCk6KGQ9dGhpcy5kYXRhKCksYXx8KGE9W10pLGM9eC5tYXAoYSxmdW5jdGlvbih4KXtyZXR1cm4gZS5vcHRzLmlkKHgpfSksdGhpcy5zZXRWYWwoYyksdGhpcy51cGRhdGVTZWxlY3Rpb24oYSksdGhpcy5jbGVhclNlYXJjaCgpLGImJnRoaXMudHJpZ2dlckNoYW5nZSh0aGlzLmJ1aWxkQ2hhbmdlRGV0YWlscyhkLHRoaXMuZGF0YSgpKSksdm9pZCAwKX19KSx4LmZuLnNlbGVjdDI9ZnVuY3Rpb24oKXt2YXIgYixjLGUsZixnLGg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGk9WyJ2YWwiLCJkZXN0cm95Iiwib3BlbmVkIiwib3BlbiIsImNsb3NlIiwiZm9jdXMiLCJpc0ZvY3VzZWQiLCJjb250YWluZXIiLCJkcm9wZG93biIsIm9uU29ydFN0YXJ0Iiwib25Tb3J0RW5kIiwiZW5hYmxlIiwiZGlzYWJsZSIsInJlYWRvbmx5IiwicG9zaXRpb25Ecm9wZG93biIsImRhdGEiLCJzZWFyY2giXSxqPVsib3BlbmVkIiwiaXNGb2N1c2VkIiwiY29udGFpbmVyIiwiZHJvcGRvd24iXSxrPVsidmFsIiwiZGF0YSJdLGw9e3NlYXJjaDoiZXh0ZXJuYWxTZWFyY2gifTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoMD09PWgubGVuZ3RofHwib2JqZWN0Ij09dHlwZW9mIGhbMF0pKGI9MD09PWgubGVuZ3RoP3t9OnguZXh0ZW5kKHt9LGhbMF0pKS5lbGVtZW50PXgodGhpcyksInNlbGVjdCI9PT1iLmVsZW1lbnQuZ2V0KDApLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9nPWIuZWxlbWVudC5wcm9wKCJtdWx0aXBsZSIpOihnPWIubXVsdGlwbGV8fCExLCJ0YWdzImluIGImJihiLm11bHRpcGxlPWc9ITApKSwoYz1nP25ldyB3aW5kb3cuU2VsZWN0Mi5jbGFzcy5tdWx0aTpuZXcgd2luZG93LlNlbGVjdDIuY2xhc3Muc2luZ2xlKS5pbml0KGIpO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBoWzBdKXRocm93IkludmFsaWQgYXJndW1lbnRzIHRvIHNlbGVjdDIgcGx1Z2luOiAiK2g7aWYoZChoWzBdLGkpPDApdGhyb3ciVW5rbm93biBtZXRob2Q6ICIraFswXTtpZihmPWEsKGM9eCh0aGlzKS5kYXRhKCJzZWxlY3QyIikpPT09YSlyZXR1cm47aWYoImNvbnRhaW5lciI9PT0oZT1oWzBdKT9mPWMuY29udGFpbmVyOiJkcm9wZG93biI9PT1lP2Y9Yy5kcm9wZG93bjoobFtlXSYmKGU9bFtlXSksZj1jW2VdLmFwcGx5KGMsaC5zbGljZSgxKSkpLGQoaFswXSxqKT49MHx8ZChoWzBdLGspPj0wJiYxPT1oLmxlbmd0aClyZXR1cm4hMX19KSxmPT09YT90aGlzOmZ9LHguZm4uc2VsZWN0Mi5kZWZhdWx0cz17ZGVidWc6ITEsd2lkdGg6ImNvcHkiLGxvYWRNb3JlUGFkZGluZzowLGNsb3NlT25TZWxlY3Q6ITAsb3Blbk9uRW50ZXI6ITAsY29udGFpbmVyQ3NzOnt9LGRyb3Bkb3duQ3NzOnt9LGNvbnRhaW5lckNzc0NsYXNzOiIiLGRyb3Bkb3duQ3NzQ2xhc3M6IiIsZm9ybWF0UmVzdWx0OmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPVtdO3JldHVybiBzKHRoaXMudGV4dCh4KSxiLnRlcm0sZCxjKSxkLmpvaW4oIiIpfSx0cmFuc2Zvcm1WYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHgudHJpbShhKX0sZm9ybWF0U2VsZWN0aW9uOmZ1bmN0aW9uKHgsYixjKXtyZXR1cm4geD9jKHRoaXMudGV4dCh4KSk6YX0sc29ydFJlc3VsdHM6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9LGZvcm1hdFJlc3VsdENzc0NsYXNzOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNzc30sZm9ybWF0U2VsZWN0aW9uQ3NzQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MCxtaW5pbXVtSW5wdXRMZW5ndGg6MCxtYXhpbXVtSW5wdXRMZW5ndGg6bnVsbCxtYXhpbXVtU2VsZWN0aW9uU2l6ZTowLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4PT1hP251bGw6eC5pZH0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYSYmdGhpcy5kYXRhJiZ0aGlzLmRhdGEudGV4dD94LmlzRnVuY3Rpb24odGhpcy5kYXRhLnRleHQpP3RoaXMuZGF0YS50ZXh0KGEpOmFbdGhpcy5kYXRhLnRleHRdOmEudGV4dH0sbWF0Y2hlcjpmdW5jdGlvbih4LGEpe3JldHVybiBjKCIiK2EpLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihjKCIiK3gpLnRvVXBwZXJDYXNlKCkpPj0wfSxzZXBhcmF0b3I6IiwiLHRva2VuU2VwYXJhdG9yczpbXSx0b2tlbml6ZXI6Qixlc2NhcGVNYXJrdXA6dCxibHVyT25DaGFuZ2U6ITEsc2VsZWN0T25CbHVyOiExLGFkYXB0Q29udGFpbmVyQ3NzQ2xhc3M6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9LGFkYXB0RHJvcGRvd25Dc3NDbGFzczpmdW5jdGlvbigpe3JldHVybiBudWxsfSxuZXh0U2VhcmNoVGVybTpmdW5jdGlvbigpe3JldHVybiBhfSxzZWFyY2hJbnB1dFBsYWNlaG9sZGVyOiIiLGNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uOiJ0b3AiLHNob3VsZEZvY3VzSW5wdXQ6ZnVuY3Rpb24oeCl7cmV0dXJuISgoIm9udG91Y2hzdGFydCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzPjApJiZ4Lm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCl9fSx4LmZuLnNlbGVjdDIubG9jYWxlcz1bXSx4LmZuLnNlbGVjdDIubG9jYWxlcy5lbj17Zm9ybWF0TWF0Y2hlczpmdW5jdGlvbih4KXtyZXR1cm4gMT09PXg/Ik9uZSByZXN1bHQgaXMgYXZhaWxhYmxlLCBwcmVzcyBlbnRlciB0byBzZWxlY3QgaXQuIjp4KyIgcmVzdWx0cyBhcmUgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifSxmb3JtYXROb01hdGNoZXM6ZnVuY3Rpb24oKXtyZXR1cm4iTm8gbWF0Y2hlcyBmb3VuZCJ9LGZvcm1hdEFqYXhFcnJvcjpmdW5jdGlvbigpe3JldHVybiJMb2FkaW5nIGZhaWxlZCJ9LGZvcm1hdElucHV0VG9vU2hvcnQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj1hLXgubGVuZ3RoO3JldHVybiJQbGVhc2UgZW50ZXIgIitiKyIgb3IgbW9yZSBjaGFyYWN0ZXIiKygxPT1iPyIiOiJzIil9LGZvcm1hdElucHV0VG9vTG9uZzpmdW5jdGlvbih4LGEpe3ZhciBiPXgubGVuZ3RoLWE7cmV0dXJuIlBsZWFzZSBkZWxldGUgIitiKyIgY2hhcmFjdGVyIisoMT09Yj8iIjoicyIpfSxmb3JtYXRTZWxlY3Rpb25Ub29CaWc6ZnVuY3Rpb24oeCl7cmV0dXJuIllvdSBjYW4gb25seSBzZWxlY3QgIit4KyIgaXRlbSIrKDE9PXg/IiI6InMiKX0sZm9ybWF0TG9hZE1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4iTG9hZGluZyBtb3JlIHJlc3VsdHPigKYifSxmb3JtYXRTZWFyY2hpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iU2VhcmNoaW5n4oCmIn19LHguZXh0ZW5kKHguZm4uc2VsZWN0Mi5kZWZhdWx0cyx4LmZuLnNlbGVjdDIubG9jYWxlcy5lbikseC5mbi5zZWxlY3QyLmFqYXhEZWZhdWx0cz17dHJhbnNwb3J0OnguYWpheCxwYXJhbXM6e3R5cGU6IkdFVCIsY2FjaGU6ITEsZGF0YVR5cGU6Impzb24ifX0sd2luZG93LlNlbGVjdDI9e3F1ZXJ5OnthamF4OnUsbG9jYWw6dix0YWdzOnd9LHV0aWw6e2RlYm91bmNlOmssbWFya01hdGNoOnMsZXNjYXBlTWFya3VwOnQsc3RyaXBEaWFjcml0aWNzOmN9LGNsYXNzOnthYnN0cmFjdDpFLHNpbmdsZTpGLG11bHRpOkd9fX19KGpRdWVyeSk7CgovKiBDb2RlTWlycm9yIDUuOS4xICovCgohZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKCk7ZWxzZXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKXJldHVybiBkZWZpbmUoW10sZSk7dGhpcy5Db2RlTWlycm9yPWUoKX19KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGUocixuKXtpZighKHRoaXMgaW5zdGFuY2VvZiBlKSlyZXR1cm4gbmV3IGUocixuKTt0aGlzLm9wdGlvbnM9bj1uP3ppKG4pOnt9LHppKEpvLG4sITEpLGQobik7dmFyIGk9bi52YWx1ZTsic3RyaW5nIj09dHlwZW9mIGkmJihpPW5ldyBTbChpLG4ubW9kZSxudWxsLG4ubGluZVNlcGFyYXRvcikpLHRoaXMuZG9jPWk7dmFyIG89bmV3IGUuaW5wdXRTdHlsZXNbbi5pbnB1dFN0eWxlXSh0aGlzKSxsPXRoaXMuZGlzcGxheT1uZXcgdChyLGksbyk7bC53cmFwcGVyLkNvZGVNaXJyb3I9dGhpcyx1KHRoaXMpLHModGhpcyksbi5saW5lV3JhcHBpbmcmJih0aGlzLmRpc3BsYXkud3JhcHBlci5jbGFzc05hbWUrPSIgQ29kZU1pcnJvci13cmFwIiksbi5hdXRvZm9jdXMmJiFXbyYmbC5pbnB1dC5mb2N1cygpLG0odGhpcyksdGhpcy5zdGF0ZT17a2V5TWFwczpbXSxvdmVybGF5czpbXSxtb2RlR2VuOjAsb3ZlcndyaXRlOiExLGRlbGF5aW5nQmx1ckV2ZW50OiExLGZvY3VzZWQ6ITEsc3VwcHJlc3NFZGl0czohMSxwYXN0ZUluY29taW5nOiExLGN1dEluY29taW5nOiExLHNlbGVjdGluZ1RleHQ6ITEsZHJhZ2dpbmdUZXh0OiExLGhpZ2hsaWdodDpuZXcgQWksa2V5U2VxOm51bGwsc3BlY2lhbENoYXJzOm51bGx9O3ZhciBhPXRoaXM7Ym8mJjExPndvJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5kaXNwbGF5LmlucHV0LnJlc2V0KCEwKX0sMjApLFV0KHRoaXMpLCRpKCksd3QodGhpcyksdGhpcy5jdXJPcC5mb3JjZVVwZGF0ZT0hMCxxbih0aGlzLGkpLG4uYXV0b2ZvY3VzJiYhV298fGEuaGFzRm9jdXMoKT9zZXRUaW1lb3V0KEZpKHZyLHRoaXMpLDIwKTptcih0aGlzKTtmb3IodmFyIGMgaW4gZWwpZWwuaGFzT3duUHJvcGVydHkoYykmJmVsW2NdKHRoaXMsbltjXSx0bCk7Qyh0aGlzKSxuLmZpbmlzaEluaXQmJm4uZmluaXNoSW5pdCh0aGlzKTtmb3IodmFyIGg9MDtoPG9sLmxlbmd0aDsrK2gpb2xbaF0odGhpcyk7Q3QodGhpcykseG8mJm4ubGluZVdyYXBwaW5nJiYib3B0aW1pemVsZWdpYmlsaXR5Ij09Z2V0Q29tcHV0ZWRTdHlsZShsLmxpbmVEaXYpLnRleHRSZW5kZXJpbmcmJihsLmxpbmVEaXYuc3R5bGUudGV4dFJlbmRlcmluZz0iYXV0byIpfWZ1bmN0aW9uIHQoZSx0LHIpe3ZhciBuPXRoaXM7dGhpcy5pbnB1dD1yLG4uc2Nyb2xsYmFyRmlsbGVyPVVpKCJkaXYiLG51bGwsIkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlciIpLG4uc2Nyb2xsYmFyRmlsbGVyLnNldEF0dHJpYnV0ZSgiY20tbm90LWNvbnRlbnQiLCJ0cnVlIiksbi5ndXR0ZXJGaWxsZXI9VWkoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyIiksbi5ndXR0ZXJGaWxsZXIuc2V0QXR0cmlidXRlKCJjbS1ub3QtY29udGVudCIsInRydWUiKSxuLmxpbmVEaXY9VWkoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1jb2RlIiksbi5zZWxlY3Rpb25EaXY9VWkoImRpdiIsbnVsbCxudWxsLCJwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDEiKSxuLmN1cnNvckRpdj1VaSgiZGl2IixudWxsLCJDb2RlTWlycm9yLWN1cnNvcnMiKSxuLm1lYXN1cmU9VWkoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1tZWFzdXJlIiksbi5saW5lTWVhc3VyZT1VaSgiZGl2IixudWxsLCJDb2RlTWlycm9yLW1lYXN1cmUiKSxuLmxpbmVTcGFjZT1VaSgiZGl2Iixbbi5tZWFzdXJlLG4ubGluZU1lYXN1cmUsbi5zZWxlY3Rpb25EaXYsbi5jdXJzb3JEaXYsbi5saW5lRGl2XSxudWxsLCJwb3NpdGlvbjogcmVsYXRpdmU7IG91dGxpbmU6IG5vbmUiKSxuLm1vdmVyPVVpKCJkaXYiLFtVaSgiZGl2Iixbbi5saW5lU3BhY2VdLCJDb2RlTWlycm9yLWxpbmVzIildLG51bGwsInBvc2l0aW9uOiByZWxhdGl2ZSIpLG4uc2l6ZXI9VWkoImRpdiIsW24ubW92ZXJdLCJDb2RlTWlycm9yLXNpemVyIiksbi5zaXplcldpZHRoPW51bGwsbi5oZWlnaHRGb3JjZXI9VWkoImRpdiIsbnVsbCxudWxsLCJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogIitQbCsicHg7IHdpZHRoOiAxcHg7Iiksbi5ndXR0ZXJzPVVpKCJkaXYiLG51bGwsIkNvZGVNaXJyb3ItZ3V0dGVycyIpLG4ubGluZUd1dHRlcj1udWxsLG4uc2Nyb2xsZXI9VWkoImRpdiIsW24uc2l6ZXIsbi5oZWlnaHRGb3JjZXIsbi5ndXR0ZXJzXSwiQ29kZU1pcnJvci1zY3JvbGwiKSxuLnNjcm9sbGVyLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCItMSIpLG4ud3JhcHBlcj1VaSgiZGl2Iixbbi5zY3JvbGxiYXJGaWxsZXIsbi5ndXR0ZXJGaWxsZXIsbi5zY3JvbGxlcl0sIkNvZGVNaXJyb3IiKSxibyYmOD53byYmKG4uZ3V0dGVycy5zdHlsZS56SW5kZXg9LTEsbi5zY3JvbGxlci5zdHlsZS5wYWRkaW5nUmlnaHQ9MCkseG98fHZvJiZXb3x8KG4uc2Nyb2xsZXIuZHJhZ2dhYmxlPSEwKSxlJiYoZS5hcHBlbmRDaGlsZD9lLmFwcGVuZENoaWxkKG4ud3JhcHBlcik6ZShuLndyYXBwZXIpKSxuLnZpZXdGcm9tPW4udmlld1RvPXQuZmlyc3Qsbi5yZXBvcnRlZFZpZXdGcm9tPW4ucmVwb3J0ZWRWaWV3VG89dC5maXJzdCxuLnZpZXc9W10sbi5yZW5kZXJlZFZpZXc9bnVsbCxuLmV4dGVybmFsTWVhc3VyZWQ9bnVsbCxuLnZpZXdPZmZzZXQ9MCxuLmxhc3RXcmFwSGVpZ2h0PW4ubGFzdFdyYXBXaWR0aD0wLG4udXBkYXRlTGluZU51bWJlcnM9bnVsbCxuLm5hdGl2ZUJhcldpZHRoPW4uYmFySGVpZ2h0PW4uYmFyV2lkdGg9MCxuLnNjcm9sbGJhcnNDbGlwcGVkPSExLG4ubGluZU51bVdpZHRoPW4ubGluZU51bUlubmVyV2lkdGg9bi5saW5lTnVtQ2hhcnM9bnVsbCxuLmFsaWduV2lkZ2V0cz0hMSxuLmNhY2hlZENoYXJXaWR0aD1uLmNhY2hlZFRleHRIZWlnaHQ9bi5jYWNoZWRQYWRkaW5nSD1udWxsLG4ubWF4TGluZT1udWxsLG4ubWF4TGluZUxlbmd0aD0wLG4ubWF4TGluZUNoYW5nZWQ9ITEsbi53aGVlbERYPW4ud2hlZWxEWT1uLndoZWVsU3RhcnRYPW4ud2hlZWxTdGFydFk9bnVsbCxuLnNoaWZ0PSExLG4uc2VsRm9yQ29udGV4dE1lbnU9bnVsbCxuLmFjdGl2ZVRvdWNoPW51bGwsci5pbml0KG4pfWZ1bmN0aW9uIHIodCl7dC5kb2MubW9kZT1lLmdldE1vZGUodC5vcHRpb25zLHQuZG9jLm1vZGVPcHRpb24pLG4odCl9ZnVuY3Rpb24gbihlKXtlLmRvYy5pdGVyKGZ1bmN0aW9uKGUpe2Uuc3RhdGVBZnRlciYmKGUuc3RhdGVBZnRlcj1udWxsKSxlLnN0eWxlcyYmKGUuc3R5bGVzPW51bGwpfSksZS5kb2MuZnJvbnRpZXI9ZS5kb2MuZmlyc3QsUmUoZSwxMDApLGUuc3RhdGUubW9kZUdlbisrLGUuY3VyT3AmJkV0KGUpfWZ1bmN0aW9uIGkoZSl7ZS5vcHRpb25zLmxpbmVXcmFwcGluZz8oWmwoZS5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3Itd3JhcCIpLGUuZGlzcGxheS5zaXplci5zdHlsZS5taW5XaWR0aD0iIixlLmRpc3BsYXkuc2l6ZXJXaWR0aD1udWxsKToocWwoZS5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3Itd3JhcCIpLGYoZSkpLGwoZSksRXQoZSksc3QoZSksc2V0VGltZW91dChmdW5jdGlvbigpe3koZSl9LDEwMCl9ZnVuY3Rpb24gbyhlKXt2YXIgdD15dChlLmRpc3BsYXkpLHI9ZS5vcHRpb25zLmxpbmVXcmFwcGluZyxuPXImJk1hdGgubWF4KDUsZS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoL2J0KGUuZGlzcGxheSktMyk7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKENuKGUuZG9jLGkpKXJldHVybiAwO3ZhciBvPTA7aWYoaS53aWRnZXRzKWZvcih2YXIgbD0wO2w8aS53aWRnZXRzLmxlbmd0aDtsKyspaS53aWRnZXRzW2xdLmhlaWdodCYmKG8rPWkud2lkZ2V0c1tsXS5oZWlnaHQpO3JldHVybiByP28rKE1hdGguY2VpbChpLnRleHQubGVuZ3RoL24pfHwxKSp0Om8rdH19ZnVuY3Rpb24gbChlKXt2YXIgdD1lLmRvYyxyPW8oZSk7dC5pdGVyKGZ1bmN0aW9uKGUpe3ZhciB0PXIoZSk7dCE9ZS5oZWlnaHQmJmVpKGUsdCl9KX1mdW5jdGlvbiBzKGUpe2UuZGlzcGxheS53cmFwcGVyLmNsYXNzTmFtZT1lLmRpc3BsYXkud3JhcHBlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20tcy1cUysvZywiIikrZS5vcHRpb25zLnRoZW1lLnJlcGxhY2UoLyhefFxzKVxzKi9nLCIgY20tcy0iKSxzdChlKX1mdW5jdGlvbiBhKGUpe3UoZSksRXQoZSksc2V0VGltZW91dChmdW5jdGlvbigpe3goZSl9LDIwKX1mdW5jdGlvbiB1KGUpe3ZhciB0PWUuZGlzcGxheS5ndXR0ZXJzLHI9ZS5vcHRpb25zLmd1dHRlcnM7VmkodCk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDsrK24pe3ZhciBpPXJbbl0sbz10LmFwcGVuZENoaWxkKFVpKCJkaXYiLG51bGwsIkNvZGVNaXJyb3ItZ3V0dGVyICIraSkpOyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIj09aSYmKGUuZGlzcGxheS5saW5lR3V0dGVyPW8sby5zdHlsZS53aWR0aD0oZS5kaXNwbGF5LmxpbmVOdW1XaWR0aHx8MSkrInB4Iil9dC5zdHlsZS5kaXNwbGF5PW4/IiI6Im5vbmUiLGMoZSl9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLmRpc3BsYXkuZ3V0dGVycy5vZmZzZXRXaWR0aDtlLmRpc3BsYXkuc2l6ZXIuc3R5bGUubWFyZ2luTGVmdD10KyJweCJ9ZnVuY3Rpb24gaChlKXtpZigwPT1lLmhlaWdodClyZXR1cm4gMDtmb3IodmFyIHQscj1lLnRleHQubGVuZ3RoLG49ZTt0PWduKG4pOyl7dmFyIGk9dC5maW5kKDAsITApO249aS5mcm9tLmxpbmUscis9aS5mcm9tLmNoLWkudG8uY2h9Zm9yKG49ZTt0PXZuKG4pOyl7dmFyIGk9dC5maW5kKDAsITApO3ItPW4udGV4dC5sZW5ndGgtaS5mcm9tLmNoLG49aS50by5saW5lLHIrPW4udGV4dC5sZW5ndGgtaS50by5jaH1yZXR1cm4gcn1mdW5jdGlvbiBmKGUpe3ZhciB0PWUuZGlzcGxheSxyPWUuZG9jO3QubWF4TGluZT1abihyLHIuZmlyc3QpLHQubWF4TGluZUxlbmd0aD1oKHQubWF4TGluZSksdC5tYXhMaW5lQ2hhbmdlZD0hMCxyLml0ZXIoZnVuY3Rpb24oZSl7dmFyIHI9aChlKTtyPnQubWF4TGluZUxlbmd0aCYmKHQubWF4TGluZUxlbmd0aD1yLHQubWF4TGluZT1lKX0pfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9SGkoZS5ndXR0ZXJzLCJDb2RlTWlycm9yLWxpbmVudW1iZXJzIik7LTE9PXQmJmUubGluZU51bWJlcnM/ZS5ndXR0ZXJzPWUuZ3V0dGVycy5jb25jYXQoWyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIl0pOnQ+LTEmJiFlLmxpbmVOdW1iZXJzJiYoZS5ndXR0ZXJzPWUuZ3V0dGVycy5zbGljZSgwKSxlLmd1dHRlcnMuc3BsaWNlKHQsMSkpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9ZS5kaXNwbGF5LHI9dC5ndXR0ZXJzLm9mZnNldFdpZHRoLG49TWF0aC5yb3VuZChlLmRvYy5oZWlnaHQrS2UoZS5kaXNwbGF5KSk7cmV0dXJue2NsaWVudEhlaWdodDp0LnNjcm9sbGVyLmNsaWVudEhlaWdodCx2aWV3SGVpZ2h0OnQud3JhcHBlci5jbGllbnRIZWlnaHQsc2Nyb2xsV2lkdGg6dC5zY3JvbGxlci5zY3JvbGxXaWR0aCxjbGllbnRXaWR0aDp0LnNjcm9sbGVyLmNsaWVudFdpZHRoLHZpZXdXaWR0aDp0LndyYXBwZXIuY2xpZW50V2lkdGgsYmFyTGVmdDplLm9wdGlvbnMuZml4ZWRHdXR0ZXI/cjowLGRvY0hlaWdodDpuLHNjcm9sbEhlaWdodDpuK1hlKGUpK3QuYmFySGVpZ2h0LG5hdGl2ZUJhcldpZHRoOnQubmF0aXZlQmFyV2lkdGgsZ3V0dGVyV2lkdGg6cn19ZnVuY3Rpb24gZyhlLHQscil7dGhpcy5jbT1yO3ZhciBuPXRoaXMudmVydD1VaSgiZGl2IixbVWkoImRpdiIsbnVsbCxudWxsLCJtaW4td2lkdGg6IDFweCIpXSwiQ29kZU1pcnJvci12c2Nyb2xsYmFyIiksaT10aGlzLmhvcml6PVVpKCJkaXYiLFtVaSgiZGl2IixudWxsLG51bGwsImhlaWdodDogMTAwJTsgbWluLWhlaWdodDogMXB4IildLCJDb2RlTWlycm9yLWhzY3JvbGxiYXIiKTtlKG4pLGUoaSksV2wobiwic2Nyb2xsIixmdW5jdGlvbigpe24uY2xpZW50SGVpZ2h0JiZ0KG4uc2Nyb2xsVG9wLCJ2ZXJ0aWNhbCIpfSksV2woaSwic2Nyb2xsIixmdW5jdGlvbigpe2kuY2xpZW50V2lkdGgmJnQoaS5zY3JvbGxMZWZ0LCJob3Jpem9udGFsIil9KSx0aGlzLmNoZWNrZWRaZXJvV2lkdGg9ITEsYm8mJjg+d28mJih0aGlzLmhvcml6LnN0eWxlLm1pbkhlaWdodD10aGlzLnZlcnQuc3R5bGUubWluV2lkdGg9IjE4cHgiKX1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIG0odCl7dC5kaXNwbGF5LnNjcm9sbGJhcnMmJih0LmRpc3BsYXkuc2Nyb2xsYmFycy5jbGVhcigpLHQuZGlzcGxheS5zY3JvbGxiYXJzLmFkZENsYXNzJiZxbCh0LmRpc3BsYXkud3JhcHBlcix0LmRpc3BsYXkuc2Nyb2xsYmFycy5hZGRDbGFzcykpLHQuZGlzcGxheS5zY3JvbGxiYXJzPW5ldyBlLnNjcm9sbGJhck1vZGVsW3Qub3B0aW9ucy5zY3JvbGxiYXJTdHlsZV0oZnVuY3Rpb24oZSl7dC5kaXNwbGF5LndyYXBwZXIuaW5zZXJ0QmVmb3JlKGUsdC5kaXNwbGF5LnNjcm9sbGJhckZpbGxlciksV2woZSwibW91c2Vkb3duIixmdW5jdGlvbigpe3Quc3RhdGUuZm9jdXNlZCYmc2V0VGltZW91dChmdW5jdGlvbigpe3QuZGlzcGxheS5pbnB1dC5mb2N1cygpfSwwKX0pLGUuc2V0QXR0cmlidXRlKCJjbS1ub3QtY29udGVudCIsInRydWUiKX0sZnVuY3Rpb24oZSxyKXsiaG9yaXpvbnRhbCI9PXI/aXIodCxlKTpucih0LGUpfSx0KSx0LmRpc3BsYXkuc2Nyb2xsYmFycy5hZGRDbGFzcyYmWmwodC5kaXNwbGF5LndyYXBwZXIsdC5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MpfWZ1bmN0aW9uIHkoZSx0KXt0fHwodD1wKGUpKTt2YXIgcj1lLmRpc3BsYXkuYmFyV2lkdGgsbj1lLmRpc3BsYXkuYmFySGVpZ2h0O2IoZSx0KTtmb3IodmFyIGk9MDs0PmkmJnIhPWUuZGlzcGxheS5iYXJXaWR0aHx8biE9ZS5kaXNwbGF5LmJhckhlaWdodDtpKyspciE9ZS5kaXNwbGF5LmJhcldpZHRoJiZlLm9wdGlvbnMubGluZVdyYXBwaW5nJiZPKGUpLGIoZSxwKGUpKSxyPWUuZGlzcGxheS5iYXJXaWR0aCxuPWUuZGlzcGxheS5iYXJIZWlnaHR9ZnVuY3Rpb24gYihlLHQpe3ZhciByPWUuZGlzcGxheSxuPXIuc2Nyb2xsYmFycy51cGRhdGUodCk7ci5zaXplci5zdHlsZS5wYWRkaW5nUmlnaHQ9KHIuYmFyV2lkdGg9bi5yaWdodCkrInB4IixyLnNpemVyLnN0eWxlLnBhZGRpbmdCb3R0b209KHIuYmFySGVpZ2h0PW4uYm90dG9tKSsicHgiLG4ucmlnaHQmJm4uYm90dG9tPyhyLnNjcm9sbGJhckZpbGxlci5zdHlsZS5kaXNwbGF5PSJibG9jayIsci5zY3JvbGxiYXJGaWxsZXIuc3R5bGUuaGVpZ2h0PW4uYm90dG9tKyJweCIsci5zY3JvbGxiYXJGaWxsZXIuc3R5bGUud2lkdGg9bi5yaWdodCsicHgiKTpyLnNjcm9sbGJhckZpbGxlci5zdHlsZS5kaXNwbGF5PSIiLG4uYm90dG9tJiZlLm9wdGlvbnMuY292ZXJHdXR0ZXJOZXh0VG9TY3JvbGxiYXImJmUub3B0aW9ucy5maXhlZEd1dHRlcj8oci5ndXR0ZXJGaWxsZXIuc3R5bGUuZGlzcGxheT0iYmxvY2siLHIuZ3V0dGVyRmlsbGVyLnN0eWxlLmhlaWdodD1uLmJvdHRvbSsicHgiLHIuZ3V0dGVyRmlsbGVyLnN0eWxlLndpZHRoPXQuZ3V0dGVyV2lkdGgrInB4Iik6ci5ndXR0ZXJGaWxsZXIuc3R5bGUuZGlzcGxheT0iIn1mdW5jdGlvbiB3KGUsdCxyKXt2YXIgbj1yJiZudWxsIT1yLnRvcD9NYXRoLm1heCgwLHIudG9wKTplLnNjcm9sbGVyLnNjcm9sbFRvcDtuPU1hdGguZmxvb3Iobi1WZShlKSk7dmFyIGk9ciYmbnVsbCE9ci5ib3R0b20/ci5ib3R0b206bitlLndyYXBwZXIuY2xpZW50SGVpZ2h0LG89cmkodCxuKSxsPXJpKHQsaSk7aWYociYmci5lbnN1cmUpe3ZhciBzPXIuZW5zdXJlLmZyb20ubGluZSxhPXIuZW5zdXJlLnRvLmxpbmU7bz5zPyhvPXMsbD1yaSh0LG5pKFpuKHQscykpK2Uud3JhcHBlci5jbGllbnRIZWlnaHQpKTpNYXRoLm1pbihhLHQubGFzdExpbmUoKSk+PWwmJihvPXJpKHQsbmkoWm4odCxhKSktZS53cmFwcGVyLmNsaWVudEhlaWdodCksbD1hKX1yZXR1cm57ZnJvbTpvLHRvOk1hdGgubWF4KGwsbysxKX19ZnVuY3Rpb24geChlKXt2YXIgdD1lLmRpc3BsYXkscj10LnZpZXc7aWYodC5hbGlnbldpZGdldHN8fHQuZ3V0dGVycy5maXJzdENoaWxkJiZlLm9wdGlvbnMuZml4ZWRHdXR0ZXIpe2Zvcih2YXIgbj1MKHQpLXQuc2Nyb2xsZXIuc2Nyb2xsTGVmdCtlLmRvYy5zY3JvbGxMZWZ0LGk9dC5ndXR0ZXJzLm9mZnNldFdpZHRoLG89bisicHgiLGw9MDtsPHIubGVuZ3RoO2wrKylpZighcltsXS5oaWRkZW4pe2Uub3B0aW9ucy5maXhlZEd1dHRlciYmcltsXS5ndXR0ZXImJihyW2xdLmd1dHRlci5zdHlsZS5sZWZ0PW8pO3ZhciBzPXJbbF0uYWxpZ25hYmxlO2lmKHMpZm9yKHZhciBhPTA7YTxzLmxlbmd0aDthKyspc1thXS5zdHlsZS5sZWZ0PW99ZS5vcHRpb25zLmZpeGVkR3V0dGVyJiYodC5ndXR0ZXJzLnN0eWxlLmxlZnQ9bitpKyJweCIpfX1mdW5jdGlvbiBDKGUpe2lmKCFlLm9wdGlvbnMubGluZU51bWJlcnMpcmV0dXJuITE7dmFyIHQ9ZS5kb2Mscj1TKGUub3B0aW9ucyx0LmZpcnN0K3Quc2l6ZS0xKSxuPWUuZGlzcGxheTtpZihyLmxlbmd0aCE9bi5saW5lTnVtQ2hhcnMpe3ZhciBpPW4ubWVhc3VyZS5hcHBlbmRDaGlsZChVaSgiZGl2IixbVWkoImRpdiIscildLCJDb2RlTWlycm9yLWxpbmVudW1iZXIgQ29kZU1pcnJvci1ndXR0ZXItZWx0IikpLG89aS5maXJzdENoaWxkLm9mZnNldFdpZHRoLGw9aS5vZmZzZXRXaWR0aC1vO3JldHVybiBuLmxpbmVHdXR0ZXIuc3R5bGUud2lkdGg9IiIsbi5saW5lTnVtSW5uZXJXaWR0aD1NYXRoLm1heChvLG4ubGluZUd1dHRlci5vZmZzZXRXaWR0aC1sKSsxLG4ubGluZU51bVdpZHRoPW4ubGluZU51bUlubmVyV2lkdGgrbCxuLmxpbmVOdW1DaGFycz1uLmxpbmVOdW1Jbm5lcldpZHRoP3IubGVuZ3RoOi0xLG4ubGluZUd1dHRlci5zdHlsZS53aWR0aD1uLmxpbmVOdW1XaWR0aCsicHgiLGMoZSksITB9cmV0dXJuITF9ZnVuY3Rpb24gUyhlLHQpe3JldHVybiBTdHJpbmcoZS5saW5lTnVtYmVyRm9ybWF0dGVyKHQrZS5maXJzdExpbmVOdW1iZXIpKX1mdW5jdGlvbiBMKGUpe3JldHVybiBlLnNjcm9sbGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtZS5zaXplci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fWZ1bmN0aW9uIFQoZSx0LHIpe3ZhciBuPWUuZGlzcGxheTt0aGlzLnZpZXdwb3J0PXQsdGhpcy52aXNpYmxlPXcobixlLmRvYyx0KSx0aGlzLmVkaXRvcklzSGlkZGVuPSFuLndyYXBwZXIub2Zmc2V0V2lkdGgsdGhpcy53cmFwcGVySGVpZ2h0PW4ud3JhcHBlci5jbGllbnRIZWlnaHQsdGhpcy53cmFwcGVyV2lkdGg9bi53cmFwcGVyLmNsaWVudFdpZHRoLHRoaXMub2xkRGlzcGxheVdpZHRoPVllKGUpLHRoaXMuZm9yY2U9cix0aGlzLmRpbXM9SChlKSx0aGlzLmV2ZW50cz1bXX1mdW5jdGlvbiBrKGUpe3ZhciB0PWUuZGlzcGxheTshdC5zY3JvbGxiYXJzQ2xpcHBlZCYmdC5zY3JvbGxlci5vZmZzZXRXaWR0aCYmKHQubmF0aXZlQmFyV2lkdGg9dC5zY3JvbGxlci5vZmZzZXRXaWR0aC10LnNjcm9sbGVyLmNsaWVudFdpZHRoLHQuaGVpZ2h0Rm9yY2VyLnN0eWxlLmhlaWdodD1YZShlKSsicHgiLHQuc2l6ZXIuc3R5bGUubWFyZ2luQm90dG9tPS10Lm5hdGl2ZUJhcldpZHRoKyJweCIsdC5zaXplci5zdHlsZS5ib3JkZXJSaWdodFdpZHRoPVhlKGUpKyJweCIsdC5zY3JvbGxiYXJzQ2xpcHBlZD0hMCl9ZnVuY3Rpb24gTShlLHQpe3ZhciByPWUuZGlzcGxheSxuPWUuZG9jO2lmKHQuZWRpdG9ySXNIaWRkZW4pcmV0dXJuIHp0KGUpLCExO2lmKCF0LmZvcmNlJiZ0LnZpc2libGUuZnJvbT49ci52aWV3RnJvbSYmdC52aXNpYmxlLnRvPD1yLnZpZXdUbyYmKG51bGw9PXIudXBkYXRlTGluZU51bWJlcnN8fHIudXBkYXRlTGluZU51bWJlcnM+PXIudmlld1RvKSYmci5yZW5kZXJlZFZpZXc9PXIudmlldyYmMD09R3QoZSkpcmV0dXJuITE7QyhlKSYmKHp0KGUpLHQuZGltcz1IKGUpKTt2YXIgaT1uLmZpcnN0K24uc2l6ZSxvPU1hdGgubWF4KHQudmlzaWJsZS5mcm9tLWUub3B0aW9ucy52aWV3cG9ydE1hcmdpbixuLmZpcnN0KSxsPU1hdGgubWluKGksdC52aXNpYmxlLnRvK2Uub3B0aW9ucy52aWV3cG9ydE1hcmdpbik7ci52aWV3RnJvbTxvJiZvLXIudmlld0Zyb208MjAmJihvPU1hdGgubWF4KG4uZmlyc3Qsci52aWV3RnJvbSkpLHIudmlld1RvPmwmJnIudmlld1RvLWw8MjAmJihsPU1hdGgubWluKGksci52aWV3VG8pKSxJbyYmKG89d24oZS5kb2MsbyksbD14bihlLmRvYyxsKSk7dmFyIHM9byE9ci52aWV3RnJvbXx8bCE9ci52aWV3VG98fHIubGFzdFdyYXBIZWlnaHQhPXQud3JhcHBlckhlaWdodHx8ci5sYXN0V3JhcFdpZHRoIT10LndyYXBwZXJXaWR0aDtCdChlLG8sbCksci52aWV3T2Zmc2V0PW5pKFpuKGUuZG9jLHIudmlld0Zyb20pKSxlLmRpc3BsYXkubW92ZXIuc3R5bGUudG9wPXIudmlld09mZnNldCsicHgiO3ZhciBhPUd0KGUpO2lmKCFzJiYwPT1hJiYhdC5mb3JjZSYmci5yZW5kZXJlZFZpZXc9PXIudmlldyYmKG51bGw9PXIudXBkYXRlTGluZU51bWJlcnN8fHIudXBkYXRlTGluZU51bWJlcnM+PXIudmlld1RvKSlyZXR1cm4hMTt2YXIgdT1qaSgpO3JldHVybiBhPjQmJihyLmxpbmVEaXYuc3R5bGUuZGlzcGxheT0ibm9uZSIpLFAoZSxyLnVwZGF0ZUxpbmVOdW1iZXJzLHQuZGltcyksYT40JiYoci5saW5lRGl2LnN0eWxlLmRpc3BsYXk9IiIpLHIucmVuZGVyZWRWaWV3PXIudmlldyx1JiZqaSgpIT11JiZ1Lm9mZnNldEhlaWdodCYmdS5mb2N1cygpLFZpKHIuY3Vyc29yRGl2KSxWaShyLnNlbGVjdGlvbkRpdiksci5ndXR0ZXJzLnN0eWxlLmhlaWdodD1yLnNpemVyLnN0eWxlLm1pbkhlaWdodD0wLHMmJihyLmxhc3RXcmFwSGVpZ2h0PXQud3JhcHBlckhlaWdodCxyLmxhc3RXcmFwV2lkdGg9dC53cmFwcGVyV2lkdGgsUmUoZSw0MDApKSxyLnVwZGF0ZUxpbmVOdW1iZXJzPW51bGwsITB9ZnVuY3Rpb24gTihlLHQpe2Zvcih2YXIgcj10LnZpZXdwb3J0LG49ITA7KG4mJmUub3B0aW9ucy5saW5lV3JhcHBpbmcmJnQub2xkRGlzcGxheVdpZHRoIT1ZZShlKXx8KHImJm51bGwhPXIudG9wJiYocj17dG9wOk1hdGgubWluKGUuZG9jLmhlaWdodCtLZShlLmRpc3BsYXkpLV9lKGUpLHIudG9wKX0pLHQudmlzaWJsZT13KGUuZGlzcGxheSxlLmRvYyxyKSwhKHQudmlzaWJsZS5mcm9tPj1lLmRpc3BsYXkudmlld0Zyb20mJnQudmlzaWJsZS50bzw9ZS5kaXNwbGF5LnZpZXdUbykpKSYmTShlLHQpO249ITEpe08oZSk7dmFyIGk9cChlKTtQZShlKSxBKGUsaSkseShlLGkpfXQuc2lnbmFsKGUsInVwZGF0ZSIsZSksKGUuZGlzcGxheS52aWV3RnJvbSE9ZS5kaXNwbGF5LnJlcG9ydGVkVmlld0Zyb218fGUuZGlzcGxheS52aWV3VG8hPWUuZGlzcGxheS5yZXBvcnRlZFZpZXdUbykmJih0LnNpZ25hbChlLCJ2aWV3cG9ydENoYW5nZSIsZSxlLmRpc3BsYXkudmlld0Zyb20sZS5kaXNwbGF5LnZpZXdUbyksZS5kaXNwbGF5LnJlcG9ydGVkVmlld0Zyb209ZS5kaXNwbGF5LnZpZXdGcm9tLGUuZGlzcGxheS5yZXBvcnRlZFZpZXdUbz1lLmRpc3BsYXkudmlld1RvKX1mdW5jdGlvbiBXKGUsdCl7dmFyIHI9bmV3IFQoZSx0KTtpZihNKGUscikpe08oZSksTihlLHIpO3ZhciBuPXAoZSk7UGUoZSksQShlLG4pLHkoZSxuKSxyLmZpbmlzaCgpfX1mdW5jdGlvbiBBKGUsdCl7ZS5kaXNwbGF5LnNpemVyLnN0eWxlLm1pbkhlaWdodD10LmRvY0hlaWdodCsicHgiO3ZhciByPXQuZG9jSGVpZ2h0K2UuZGlzcGxheS5iYXJIZWlnaHQ7ZS5kaXNwbGF5LmhlaWdodEZvcmNlci5zdHlsZS50b3A9cisicHgiLGUuZGlzcGxheS5ndXR0ZXJzLnN0eWxlLmhlaWdodD1NYXRoLm1heChyK1hlKGUpLHQuY2xpZW50SGVpZ2h0KSsicHgifWZ1bmN0aW9uIE8oZSl7Zm9yKHZhciB0PWUuZGlzcGxheSxyPXQubGluZURpdi5vZmZzZXRUb3Asbj0wO248dC52aWV3Lmxlbmd0aDtuKyspe3ZhciBpLG89dC52aWV3W25dO2lmKCFvLmhpZGRlbil7aWYoYm8mJjg+d28pe3ZhciBsPW8ubm9kZS5vZmZzZXRUb3Arby5ub2RlLm9mZnNldEhlaWdodDtpPWwtcixyPWx9ZWxzZXt2YXIgcz1vLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aT1zLmJvdHRvbS1zLnRvcH12YXIgYT1vLmxpbmUuaGVpZ2h0LWk7aWYoMj5pJiYoaT15dCh0KSksKGE+LjAwMXx8LS4wMDE+YSkmJihlaShvLmxpbmUsaSksRChvLmxpbmUpLG8ucmVzdCkpZm9yKHZhciB1PTA7dTxvLnJlc3QubGVuZ3RoO3UrKylEKG8ucmVzdFt1XSl9fX1mdW5jdGlvbiBEKGUpe2lmKGUud2lkZ2V0cylmb3IodmFyIHQ9MDt0PGUud2lkZ2V0cy5sZW5ndGg7Kyt0KWUud2lkZ2V0c1t0XS5oZWlnaHQ9ZS53aWRnZXRzW3RdLm5vZGUucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHR9ZnVuY3Rpb24gSChlKXtmb3IodmFyIHQ9ZS5kaXNwbGF5LHI9e30sbj17fSxpPXQuZ3V0dGVycy5jbGllbnRMZWZ0LG89dC5ndXR0ZXJzLmZpcnN0Q2hpbGQsbD0wO287bz1vLm5leHRTaWJsaW5nLCsrbClyW2Uub3B0aW9ucy5ndXR0ZXJzW2xdXT1vLm9mZnNldExlZnQrby5jbGllbnRMZWZ0K2ksbltlLm9wdGlvbnMuZ3V0dGVyc1tsXV09by5jbGllbnRXaWR0aDtyZXR1cm57Zml4ZWRQb3M6TCh0KSxndXR0ZXJUb3RhbFdpZHRoOnQuZ3V0dGVycy5vZmZzZXRXaWR0aCxndXR0ZXJMZWZ0OnIsZ3V0dGVyV2lkdGg6bix3cmFwcGVyV2lkdGg6dC53cmFwcGVyLmNsaWVudFdpZHRofX1mdW5jdGlvbiBQKGUsdCxyKXtmdW5jdGlvbiBuKHQpe3ZhciByPXQubmV4dFNpYmxpbmc7cmV0dXJuIHhvJiZBbyYmZS5kaXNwbGF5LmN1cnJlbnRXaGVlbFRhcmdldD09dD90LnN0eWxlLmRpc3BsYXk9Im5vbmUiOnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSxyfWZvcih2YXIgaT1lLmRpc3BsYXksbz1lLm9wdGlvbnMubGluZU51bWJlcnMsbD1pLmxpbmVEaXYscz1sLmZpcnN0Q2hpbGQsYT1pLnZpZXcsdT1pLnZpZXdGcm9tLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGg9YVtjXTtpZihoLmhpZGRlbik7ZWxzZSBpZihoLm5vZGUmJmgubm9kZS5wYXJlbnROb2RlPT1sKXtmb3IoO3MhPWgubm9kZTspcz1uKHMpO3ZhciBmPW8mJm51bGwhPXQmJnU+PXQmJmgubGluZU51bWJlcjtoLmNoYW5nZXMmJihIaShoLmNoYW5nZXMsImd1dHRlciIpPi0xJiYoZj0hMSksRShlLGgsdSxyKSksZiYmKFZpKGgubGluZU51bWJlciksaC5saW5lTnVtYmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFMoZS5vcHRpb25zLHUpKSkpLHM9aC5ub2RlLm5leHRTaWJsaW5nfWVsc2V7dmFyIGQ9VihlLGgsdSxyKTtsLmluc2VydEJlZm9yZShkLHMpfXUrPWguc2l6ZX1mb3IoO3M7KXM9bihzKX1mdW5jdGlvbiBFKGUsdCxyLG4pe2Zvcih2YXIgaT0wO2k8dC5jaGFuZ2VzLmxlbmd0aDtpKyspe3ZhciBvPXQuY2hhbmdlc1tpXTsidGV4dCI9PW8/UihlLHQpOiJndXR0ZXIiPT1vP0coZSx0LHIsbik6ImNsYXNzIj09bz9CKHQpOiJ3aWRnZXQiPT1vJiZVKGUsdCxuKX10LmNoYW5nZXM9bnVsbH1mdW5jdGlvbiBJKGUpe3JldHVybiBlLm5vZGU9PWUudGV4dCYmKGUubm9kZT1VaSgiZGl2IixudWxsLG51bGwsInBvc2l0aW9uOiByZWxhdGl2ZSIpLGUudGV4dC5wYXJlbnROb2RlJiZlLnRleHQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZS5ub2RlLGUudGV4dCksZS5ub2RlLmFwcGVuZENoaWxkKGUudGV4dCksYm8mJjg+d28mJihlLm5vZGUuc3R5bGUuekluZGV4PTIpKSxlLm5vZGV9ZnVuY3Rpb24geihlKXt2YXIgdD1lLmJnQ2xhc3M/ZS5iZ0NsYXNzKyIgIisoZS5saW5lLmJnQ2xhc3N8fCIiKTplLmxpbmUuYmdDbGFzcztpZih0JiYodCs9IiBDb2RlTWlycm9yLWxpbmViYWNrZ3JvdW5kIiksZS5iYWNrZ3JvdW5kKXQ/ZS5iYWNrZ3JvdW5kLmNsYXNzTmFtZT10OihlLmJhY2tncm91bmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlLmJhY2tncm91bmQpLGUuYmFja2dyb3VuZD1udWxsKTtlbHNlIGlmKHQpe3ZhciByPUkoZSk7ZS5iYWNrZ3JvdW5kPXIuaW5zZXJ0QmVmb3JlKFVpKCJkaXYiLG51bGwsdCksci5maXJzdENoaWxkKX19ZnVuY3Rpb24gRihlLHQpe3ZhciByPWUuZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO3JldHVybiByJiZyLmxpbmU9PXQubGluZT8oZS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ9bnVsbCx0Lm1lYXN1cmU9ci5tZWFzdXJlLHIuYnVpbHQpOkZuKGUsdCl9ZnVuY3Rpb24gUihlLHQpe3ZhciByPXQudGV4dC5jbGFzc05hbWUsbj1GKGUsdCk7dC50ZXh0PT10Lm5vZGUmJih0Lm5vZGU9bi5wcmUpLHQudGV4dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLnByZSx0LnRleHQpLHQudGV4dD1uLnByZSxuLmJnQ2xhc3MhPXQuYmdDbGFzc3x8bi50ZXh0Q2xhc3MhPXQudGV4dENsYXNzPyh0LmJnQ2xhc3M9bi5iZ0NsYXNzLHQudGV4dENsYXNzPW4udGV4dENsYXNzLEIodCkpOnImJih0LnRleHQuY2xhc3NOYW1lPXIpfWZ1bmN0aW9uIEIoZSl7eihlKSxlLmxpbmUud3JhcENsYXNzP0koZSkuY2xhc3NOYW1lPWUubGluZS53cmFwQ2xhc3M6ZS5ub2RlIT1lLnRleHQmJihlLm5vZGUuY2xhc3NOYW1lPSIiKTt2YXIgdD1lLnRleHRDbGFzcz9lLnRleHRDbGFzcysiICIrKGUubGluZS50ZXh0Q2xhc3N8fCIiKTplLmxpbmUudGV4dENsYXNzO2UudGV4dC5jbGFzc05hbWU9dHx8IiJ9ZnVuY3Rpb24gRyhlLHQscixuKXtpZih0Lmd1dHRlciYmKHQubm9kZS5yZW1vdmVDaGlsZCh0Lmd1dHRlciksdC5ndXR0ZXI9bnVsbCksdC5ndXR0ZXJCYWNrZ3JvdW5kJiYodC5ub2RlLnJlbW92ZUNoaWxkKHQuZ3V0dGVyQmFja2dyb3VuZCksdC5ndXR0ZXJCYWNrZ3JvdW5kPW51bGwpLHQubGluZS5ndXR0ZXJDbGFzcyl7dmFyIGk9SSh0KTt0Lmd1dHRlckJhY2tncm91bmQ9VWkoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1ndXR0ZXItYmFja2dyb3VuZCAiK3QubGluZS5ndXR0ZXJDbGFzcywibGVmdDogIisoZS5vcHRpb25zLmZpeGVkR3V0dGVyP24uZml4ZWRQb3M6LW4uZ3V0dGVyVG90YWxXaWR0aCkrInB4OyB3aWR0aDogIituLmd1dHRlclRvdGFsV2lkdGgrInB4IiksaS5pbnNlcnRCZWZvcmUodC5ndXR0ZXJCYWNrZ3JvdW5kLHQudGV4dCl9dmFyIG89dC5saW5lLmd1dHRlck1hcmtlcnM7aWYoZS5vcHRpb25zLmxpbmVOdW1iZXJzfHxvKXt2YXIgaT1JKHQpLGw9dC5ndXR0ZXI9VWkoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1ndXR0ZXItd3JhcHBlciIsImxlZnQ6ICIrKGUub3B0aW9ucy5maXhlZEd1dHRlcj9uLmZpeGVkUG9zOi1uLmd1dHRlclRvdGFsV2lkdGgpKyJweCIpO2lmKGUuZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKGwpLGkuaW5zZXJ0QmVmb3JlKGwsdC50ZXh0KSx0LmxpbmUuZ3V0dGVyQ2xhc3MmJihsLmNsYXNzTmFtZSs9IiAiK3QubGluZS5ndXR0ZXJDbGFzcyksIWUub3B0aW9ucy5saW5lTnVtYmVyc3x8byYmb1siQ29kZU1pcnJvci1saW5lbnVtYmVycyJdfHwodC5saW5lTnVtYmVyPWwuYXBwZW5kQ2hpbGQoVWkoImRpdiIsUyhlLm9wdGlvbnMsciksIkNvZGVNaXJyb3ItbGluZW51bWJlciBDb2RlTWlycm9yLWd1dHRlci1lbHQiLCJsZWZ0OiAiK24uZ3V0dGVyTGVmdFsiQ29kZU1pcnJvci1saW5lbnVtYmVycyJdKyJweDsgd2lkdGg6ICIrZS5kaXNwbGF5LmxpbmVOdW1Jbm5lcldpZHRoKyJweCIpKSksbylmb3IodmFyIHM9MDtzPGUub3B0aW9ucy5ndXR0ZXJzLmxlbmd0aDsrK3Mpe3ZhciBhPWUub3B0aW9ucy5ndXR0ZXJzW3NdLHU9by5oYXNPd25Qcm9wZXJ0eShhKSYmb1thXTt1JiZsLmFwcGVuZENoaWxkKFVpKCJkaXYiLFt1XSwiQ29kZU1pcnJvci1ndXR0ZXItZWx0IiwibGVmdDogIituLmd1dHRlckxlZnRbYV0rInB4OyB3aWR0aDogIituLmd1dHRlcldpZHRoW2FdKyJweCIpKX19fWZ1bmN0aW9uIFUoZSx0LHIpe3QuYWxpZ25hYmxlJiYodC5hbGlnbmFibGU9bnVsbCk7Zm9yKHZhciBuLGk9dC5ub2RlLmZpcnN0Q2hpbGQ7aTtpPW4pe3ZhciBuPWkubmV4dFNpYmxpbmc7IkNvZGVNaXJyb3ItbGluZXdpZGdldCI9PWkuY2xhc3NOYW1lJiZ0Lm5vZGUucmVtb3ZlQ2hpbGQoaSl9SyhlLHQscil9ZnVuY3Rpb24gVihlLHQscixuKXt2YXIgaT1GKGUsdCk7cmV0dXJuIHQudGV4dD10Lm5vZGU9aS5wcmUsaS5iZ0NsYXNzJiYodC5iZ0NsYXNzPWkuYmdDbGFzcyksaS50ZXh0Q2xhc3MmJih0LnRleHRDbGFzcz1pLnRleHRDbGFzcyksQih0KSxHKGUsdCxyLG4pLEsoZSx0LG4pLHQubm9kZX1mdW5jdGlvbiBLKGUsdCxyKXtpZihqKGUsdC5saW5lLHQsciwhMCksdC5yZXN0KWZvcih2YXIgbj0wO248dC5yZXN0Lmxlbmd0aDtuKyspaihlLHQucmVzdFtuXSx0LHIsITEpfWZ1bmN0aW9uIGooZSx0LHIsbixpKXtpZih0LndpZGdldHMpZm9yKHZhciBvPUkociksbD0wLHM9dC53aWRnZXRzO2w8cy5sZW5ndGg7KytsKXt2YXIgYT1zW2xdLHU9VWkoImRpdiIsW2Eubm9kZV0sIkNvZGVNaXJyb3ItbGluZXdpZGdldCIpO2EuaGFuZGxlTW91c2VFdmVudHN8fHUuc2V0QXR0cmlidXRlKCJjbS1pZ25vcmUtZXZlbnRzIiwidHJ1ZSIpLFgoYSx1LHIsbiksZS5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUodSksaSYmYS5hYm92ZT9vLmluc2VydEJlZm9yZSh1LHIuZ3V0dGVyfHxyLnRleHQpOm8uYXBwZW5kQ2hpbGQodSksTGkoYSwicmVkcmF3Iil9fWZ1bmN0aW9uIFgoZSx0LHIsbil7aWYoZS5ub0hTY3JvbGwpeyhyLmFsaWduYWJsZXx8KHIuYWxpZ25hYmxlPVtdKSkucHVzaCh0KTt2YXIgaT1uLndyYXBwZXJXaWR0aDt0LnN0eWxlLmxlZnQ9bi5maXhlZFBvcysicHgiLGUuY292ZXJHdXR0ZXJ8fChpLT1uLmd1dHRlclRvdGFsV2lkdGgsdC5zdHlsZS5wYWRkaW5nTGVmdD1uLmd1dHRlclRvdGFsV2lkdGgrInB4IiksdC5zdHlsZS53aWR0aD1pKyJweCJ9ZS5jb3Zlckd1dHRlciYmKHQuc3R5bGUuekluZGV4PTUsdC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGUubm9IU2Nyb2xsfHwodC5zdHlsZS5tYXJnaW5MZWZ0PS1uLmd1dHRlclRvdGFsV2lkdGgrInB4IikpfWZ1bmN0aW9uIFkoZSl7cmV0dXJuIHpvKGUubGluZSxlLmNoKX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIEZvKGUsdCk8MD90OmV9ZnVuY3Rpb24gJChlLHQpe3JldHVybiBGbyhlLHQpPDA/ZTp0fWZ1bmN0aW9uIHEoZSl7ZS5zdGF0ZS5mb2N1c2VkfHwoZS5kaXNwbGF5LmlucHV0LmZvY3VzKCksdnIoZSkpfWZ1bmN0aW9uIFooZSx0LHIsbixpKXt2YXIgbz1lLmRvYztlLmRpc3BsYXkuc2hpZnQ9ITEsbnx8KG49by5zZWwpO3ZhciBsPWUuc3RhdGUucGFzdGVJbmNvbWluZ3x8InBhc3RlIj09aSxzPW8uc3BsaXRMaW5lcyh0KSxhPW51bGw7aWYobCYmbi5yYW5nZXMubGVuZ3RoPjEpaWYoUm8mJlJvLmpvaW4oIlxuIik9PXQpe2lmKG4ucmFuZ2VzLmxlbmd0aCVSby5sZW5ndGg9PTApe2E9W107Zm9yKHZhciB1PTA7dTxSby5sZW5ndGg7dSsrKWEucHVzaChvLnNwbGl0TGluZXMoUm9bdV0pKX19ZWxzZSBzLmxlbmd0aD09bi5yYW5nZXMubGVuZ3RoJiYoYT1QaShzLGZ1bmN0aW9uKGUpe3JldHVybltlXX0pKTtmb3IodmFyIHU9bi5yYW5nZXMubGVuZ3RoLTE7dT49MDt1LS0pe3ZhciBjPW4ucmFuZ2VzW3VdLGg9Yy5mcm9tKCksZj1jLnRvKCk7Yy5lbXB0eSgpJiYociYmcj4wP2g9em8oaC5saW5lLGguY2gtcik6ZS5zdGF0ZS5vdmVyd3JpdGUmJiFsJiYoZj16byhmLmxpbmUsTWF0aC5taW4oWm4obyxmLmxpbmUpLnRleHQubGVuZ3RoLGYuY2grRGkocykubGVuZ3RoKSkpKTt2YXIgZD1lLmN1ck9wLnVwZGF0ZUlucHV0LHA9e2Zyb206aCx0bzpmLHRleHQ6YT9hW3UlYS5sZW5ndGhdOnMsb3JpZ2luOml8fChsPyJwYXN0ZSI6ZS5zdGF0ZS5jdXRJbmNvbWluZz8iY3V0IjoiK2lucHV0Iil9O1RyKGUuZG9jLHApLExpKGUsImlucHV0UmVhZCIsZSxwKX10JiYhbCYmSihlLHQpLHpyKGUpLGUuY3VyT3AudXBkYXRlSW5wdXQ9ZCxlLmN1ck9wLnR5cGluZz0hMCxlLnN0YXRlLnBhc3RlSW5jb21pbmc9ZS5zdGF0ZS5jdXRJbmNvbWluZz0hMX1mdW5jdGlvbiBRKGUsdCl7dmFyIHI9ZS5jbGlwYm9hcmREYXRhJiZlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpO3JldHVybiByPyhlLnByZXZlbnREZWZhdWx0KCksdC5pc1JlYWRPbmx5KCl8fHQub3B0aW9ucy5kaXNhYmxlSW5wdXR8fFd0KHQsZnVuY3Rpb24oKXtaKHQsciwwLG51bGwsInBhc3RlIil9KSwhMCk6dm9pZCAwfWZ1bmN0aW9uIEooZSx0KXtpZihlLm9wdGlvbnMuZWxlY3RyaWNDaGFycyYmZS5vcHRpb25zLnNtYXJ0SW5kZW50KWZvcih2YXIgcj1lLmRvYy5zZWwsbj1yLnJhbmdlcy5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIGk9ci5yYW5nZXNbbl07aWYoIShpLmhlYWQuY2g+MTAwfHxuJiZyLnJhbmdlc1tuLTFdLmhlYWQubGluZT09aS5oZWFkLmxpbmUpKXt2YXIgbz1lLmdldE1vZGVBdChpLmhlYWQpLGw9ITE7aWYoby5lbGVjdHJpY0NoYXJzKXtmb3IodmFyIHM9MDtzPG8uZWxlY3RyaWNDaGFycy5sZW5ndGg7cysrKWlmKHQuaW5kZXhPZihvLmVsZWN0cmljQ2hhcnMuY2hhckF0KHMpKT4tMSl7bD1ScihlLGkuaGVhZC5saW5lLCJzbWFydCIpO2JyZWFrfX1lbHNlIG8uZWxlY3RyaWNJbnB1dCYmby5lbGVjdHJpY0lucHV0LnRlc3QoWm4oZS5kb2MsaS5oZWFkLmxpbmUpLnRleHQuc2xpY2UoMCxpLmhlYWQuY2gpKSYmKGw9UnIoZSxpLmhlYWQubGluZSwic21hcnQiKSk7bCYmTGkoZSwiZWxlY3RyaWNJbnB1dCIsZSxpLmhlYWQubGluZSl9fX1mdW5jdGlvbiBlZShlKXtmb3IodmFyIHQ9W10scj1bXSxuPTA7bjxlLmRvYy5zZWwucmFuZ2VzLmxlbmd0aDtuKyspe3ZhciBpPWUuZG9jLnNlbC5yYW5nZXNbbl0uaGVhZC5saW5lLG89e2FuY2hvcjp6byhpLDApLGhlYWQ6em8oaSsxLDApfTtyLnB1c2gobyksdC5wdXNoKGUuZ2V0UmFuZ2Uoby5hbmNob3Isby5oZWFkKSl9cmV0dXJue3RleHQ6dCxyYW5nZXM6cn19ZnVuY3Rpb24gdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoImF1dG9jb3JyZWN0Iiwib2ZmIiksZS5zZXRBdHRyaWJ1dGUoImF1dG9jYXBpdGFsaXplIiwib2ZmIiksZS5zZXRBdHRyaWJ1dGUoInNwZWxsY2hlY2siLCJmYWxzZSIpfWZ1bmN0aW9uIHJlKGUpe3RoaXMuY209ZSx0aGlzLnByZXZJbnB1dD0iIix0aGlzLnBvbGxpbmdGYXN0PSExLHRoaXMucG9sbGluZz1uZXcgQWksdGhpcy5pbmFjY3VyYXRlU2VsZWN0aW9uPSExLHRoaXMuaGFzU2VsZWN0aW9uPSExLHRoaXMuY29tcG9zaW5nPW51bGx9ZnVuY3Rpb24gbmUoKXt2YXIgZT1VaSgidGV4dGFyZWEiLG51bGwsbnVsbCwicG9zaXRpb246IGFic29sdXRlOyBwYWRkaW5nOiAwOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFlbTsgb3V0bGluZTogbm9uZSIpLHQ9VWkoImRpdiIsW2VdLG51bGwsIm92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDNweDsgaGVpZ2h0OiAwcHg7Iik7cmV0dXJuIHhvP2Uuc3R5bGUud2lkdGg9IjEwMDBweCI6ZS5zZXRBdHRyaWJ1dGUoIndyYXAiLCJvZmYiKSxObyYmKGUuc3R5bGUuYm9yZGVyPSIxcHggc29saWQgYmxhY2siKSx0ZShlKSx0fWZ1bmN0aW9uIGllKGUpe3RoaXMuY209ZSx0aGlzLmxhc3RBbmNob3JOb2RlPXRoaXMubGFzdEFuY2hvck9mZnNldD10aGlzLmxhc3RGb2N1c05vZGU9dGhpcy5sYXN0Rm9jdXNPZmZzZXQ9bnVsbCx0aGlzLnBvbGxpbmc9bmV3IEFpLHRoaXMuZ3JhY2VQZXJpb2Q9ITF9ZnVuY3Rpb24gb2UoZSx0KXt2YXIgcj1KZShlLHQubGluZSk7aWYoIXJ8fHIuaGlkZGVuKXJldHVybiBudWxsO3ZhciBuPVpuKGUuZG9jLHQubGluZSksaT1xZShyLG4sdC5saW5lKSxvPWlpKG4pLGw9ImxlZnQiO2lmKG8pe3ZhciBzPXVvKG8sdC5jaCk7bD1zJTI/InJpZ2h0IjoibGVmdCJ9dmFyIGE9cnQoaS5tYXAsdC5jaCxsKTtyZXR1cm4gYS5vZmZzZXQ9InJpZ2h0Ij09YS5jb2xsYXBzZT9hLmVuZDphLnN0YXJ0LGF9ZnVuY3Rpb24gbGUoZSx0KXtyZXR1cm4gdCYmKGUuYmFkPSEwKSxlfWZ1bmN0aW9uIHNlKGUsdCxyKXt2YXIgbjtpZih0PT1lLmRpc3BsYXkubGluZURpdil7aWYobj1lLmRpc3BsYXkubGluZURpdi5jaGlsZE5vZGVzW3JdLCFuKXJldHVybiBsZShlLmNsaXBQb3Moem8oZS5kaXNwbGF5LnZpZXdUby0xKSksITApO3Q9bnVsbCxyPTB9ZWxzZSBmb3Iobj10OztuPW4ucGFyZW50Tm9kZSl7aWYoIW58fG49PWUuZGlzcGxheS5saW5lRGl2KXJldHVybiBudWxsO2lmKG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlPT1lLmRpc3BsYXkubGluZURpdilicmVha31mb3IodmFyIGk9MDtpPGUuZGlzcGxheS52aWV3Lmxlbmd0aDtpKyspe3ZhciBvPWUuZGlzcGxheS52aWV3W2ldO2lmKG8ubm9kZT09bilyZXR1cm4gYWUobyx0LHIpfX1mdW5jdGlvbiBhZShlLHQscil7ZnVuY3Rpb24gbih0LHIsbil7Zm9yKHZhciBpPS0xO2k8KGM/Yy5sZW5ndGg6MCk7aSsrKWZvcih2YXIgbz0wPmk/dS5tYXA6Y1tpXSxsPTA7bDxvLmxlbmd0aDtsKz0zKXt2YXIgcz1vW2wrMl07aWYocz09dHx8cz09cil7dmFyIGE9dGkoMD5pP2UubGluZTplLnJlc3RbaV0pLGg9b1tsXStuO3JldHVybigwPm58fHMhPXQpJiYoaD1vW2wrKG4/MTowKV0pLHpvKGEsaCl9fX12YXIgaT1lLnRleHQuZmlyc3RDaGlsZCxvPSExO2lmKCF0fHwhWWwoaSx0KSlyZXR1cm4gbGUoem8odGkoZS5saW5lKSwwKSwhMCk7aWYodD09aSYmKG89ITAsdD1pLmNoaWxkTm9kZXNbcl0scj0wLCF0KSl7dmFyIGw9ZS5yZXN0P0RpKGUucmVzdCk6ZS5saW5lO3JldHVybiBsZSh6byh0aShsKSxsLnRleHQubGVuZ3RoKSxvKX12YXIgcz0zPT10Lm5vZGVUeXBlP3Q6bnVsbCxhPXQ7Zm9yKHN8fDEhPXQuY2hpbGROb2Rlcy5sZW5ndGh8fDMhPXQuZmlyc3RDaGlsZC5ub2RlVHlwZXx8KHM9dC5maXJzdENoaWxkLHImJihyPXMubm9kZVZhbHVlLmxlbmd0aCkpO2EucGFyZW50Tm9kZSE9aTspYT1hLnBhcmVudE5vZGU7dmFyIHU9ZS5tZWFzdXJlLGM9dS5tYXBzLGg9bihzLGEscik7aWYoaClyZXR1cm4gbGUoaCxvKTtmb3IodmFyIGY9YS5uZXh0U2libGluZyxkPXM/cy5ub2RlVmFsdWUubGVuZ3RoLXI6MDtmO2Y9Zi5uZXh0U2libGluZyl7aWYoaD1uKGYsZi5maXJzdENoaWxkLDApKXJldHVybiBsZSh6byhoLmxpbmUsaC5jaC1kKSxvKTtkKz1mLnRleHRDb250ZW50Lmxlbmd0aH1mb3IodmFyIHA9YS5wcmV2aW91c1NpYmxpbmcsZD1yO3A7cD1wLnByZXZpb3VzU2libGluZyl7aWYoaD1uKHAscC5maXJzdENoaWxkLC0xKSlyZXR1cm4gbGUoem8oaC5saW5lLGguY2grZCksbyk7ZCs9Zi50ZXh0Q29udGVudC5sZW5ndGh9fWZ1bmN0aW9uIHVlKGUsdCxyLG4saSl7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PWV9fWZ1bmN0aW9uIGwodCl7aWYoMT09dC5ub2RlVHlwZSl7dmFyIHI9dC5nZXRBdHRyaWJ1dGUoImNtLXRleHQiKTtpZihudWxsIT1yKXJldHVybiIiPT1yJiYocj10LnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCIiKSksdm9pZChzKz1yKTt2YXIgYyxoPXQuZ2V0QXR0cmlidXRlKCJjbS1tYXJrZXIiKTtpZihoKXt2YXIgZj1lLmZpbmRNYXJrcyh6byhuLDApLHpvKGkrMSwwKSxvKCtoKSk7cmV0dXJuIHZvaWQoZi5sZW5ndGgmJihjPWZbMF0uZmluZCgpKSYmKHMrPVFuKGUuZG9jLGMuZnJvbSxjLnRvKS5qb2luKHUpKSl9aWYoImZhbHNlIj09dC5nZXRBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpKXJldHVybjtmb3IodmFyIGQ9MDtkPHQuY2hpbGROb2Rlcy5sZW5ndGg7ZCsrKWwodC5jaGlsZE5vZGVzW2RdKTsvXihwcmV8ZGl2fHApJC9pLnRlc3QodC5ub2RlTmFtZSkmJihhPSEwKX1lbHNlIGlmKDM9PXQubm9kZVR5cGUpe3ZhciBwPXQubm9kZVZhbHVlO2lmKCFwKXJldHVybjthJiYocys9dSxhPSExKSxzKz1wfX1mb3IodmFyIHM9IiIsYT0hMSx1PWUuZG9jLmxpbmVTZXBhcmF0b3IoKTtsKHQpLHQhPXI7KXQ9dC5uZXh0U2libGluZztyZXR1cm4gc31mdW5jdGlvbiBjZShlLHQpe3RoaXMucmFuZ2VzPWUsdGhpcy5wcmltSW5kZXg9dH1mdW5jdGlvbiBoZShlLHQpe3RoaXMuYW5jaG9yPWUsdGhpcy5oZWFkPXR9ZnVuY3Rpb24gZmUoZSx0KXt2YXIgcj1lW3RdO2Uuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBGbyhlLmZyb20oKSx0LmZyb20oKSl9KSx0PUhpKGUscik7Zm9yKHZhciBuPTE7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl0sbz1lW24tMV07aWYoRm8oby50bygpLGkuZnJvbSgpKT49MCl7dmFyIGw9JChvLmZyb20oKSxpLmZyb20oKSkscz1fKG8udG8oKSxpLnRvKCkpLGE9by5lbXB0eSgpP2kuZnJvbSgpPT1pLmhlYWQ6by5mcm9tKCk9PW8uaGVhZDt0Pj1uJiYtLXQsZS5zcGxpY2UoLS1uLDIsbmV3IGhlKGE/czpsLGE/bDpzKSl9fXJldHVybiBuZXcgY2UoZSx0KX1mdW5jdGlvbiBkZShlLHQpe3JldHVybiBuZXcgY2UoW25ldyBoZShlLHR8fGUpXSwwKX1mdW5jdGlvbiBwZShlLHQpe3JldHVybiBNYXRoLm1heChlLmZpcnN0LE1hdGgubWluKHQsZS5maXJzdCtlLnNpemUtMSkpfWZ1bmN0aW9uIGdlKGUsdCl7aWYodC5saW5lPGUuZmlyc3QpcmV0dXJuIHpvKGUuZmlyc3QsMCk7dmFyIHI9ZS5maXJzdCtlLnNpemUtMTtyZXR1cm4gdC5saW5lPnI/em8ocixabihlLHIpLnRleHQubGVuZ3RoKTp2ZSh0LFpuKGUsdC5saW5lKS50ZXh0Lmxlbmd0aCl9ZnVuY3Rpb24gdmUoZSx0KXt2YXIgcj1lLmNoO3JldHVybiBudWxsPT1yfHxyPnQ/em8oZS5saW5lLHQpOjA+cj96byhlLmxpbmUsMCk6ZX1mdW5jdGlvbiBtZShlLHQpe3JldHVybiB0Pj1lLmZpcnN0JiZ0PGUuZmlyc3QrZS5zaXplfWZ1bmN0aW9uIHllKGUsdCl7Zm9yKHZhciByPVtdLG49MDtuPHQubGVuZ3RoO24rKylyW25dPWdlKGUsdFtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUoZSx0LHIsbil7aWYoZS5jbSYmZS5jbS5kaXNwbGF5LnNoaWZ0fHxlLmV4dGVuZCl7dmFyIGk9dC5hbmNob3I7aWYobil7dmFyIG89Rm8ocixpKTwwO28hPUZvKG4saSk8MD8oaT1yLHI9bik6byE9Rm8ocixuKTwwJiYocj1uKX1yZXR1cm4gbmV3IGhlKGkscil9cmV0dXJuIG5ldyBoZShufHxyLHIpfWZ1bmN0aW9uIHdlKGUsdCxyLG4pe2tlKGUsbmV3IGNlKFtiZShlLGUuc2VsLnByaW1hcnkoKSx0LHIpXSwwKSxuKX1mdW5jdGlvbiB4ZShlLHQscil7Zm9yKHZhciBuPVtdLGk9MDtpPGUuc2VsLnJhbmdlcy5sZW5ndGg7aSsrKW5baV09YmUoZSxlLnNlbC5yYW5nZXNbaV0sdFtpXSxudWxsKTt2YXIgbz1mZShuLGUuc2VsLnByaW1JbmRleCk7a2UoZSxvLHIpfWZ1bmN0aW9uIENlKGUsdCxyLG4pe3ZhciBpPWUuc2VsLnJhbmdlcy5zbGljZSgwKTtpW3RdPXIsa2UoZSxmZShpLGUuc2VsLnByaW1JbmRleCksbil9ZnVuY3Rpb24gU2UoZSx0LHIsbil7a2UoZSxkZSh0LHIpLG4pfWZ1bmN0aW9uIExlKGUsdCl7dmFyIHI9e3Jhbmdlczp0LnJhbmdlcyx1cGRhdGU6ZnVuY3Rpb24odCl7dGhpcy5yYW5nZXM9W107Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy5yYW5nZXNbcl09bmV3IGhlKGdlKGUsdFtyXS5hbmNob3IpLGdlKGUsdFtyXS5oZWFkKSl9fTtyZXR1cm4gRGwoZSwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlIixlLHIpLGUuY20mJkRsKGUuY20sImJlZm9yZVNlbGVjdGlvbkNoYW5nZSIsZS5jbSxyKSxyLnJhbmdlcyE9dC5yYW5nZXM/ZmUoci5yYW5nZXMsci5yYW5nZXMubGVuZ3RoLTEpOnR9ZnVuY3Rpb24gVGUoZSx0LHIpe3ZhciBuPWUuaGlzdG9yeS5kb25lLGk9RGkobik7aSYmaS5yYW5nZXM/KG5bbi5sZW5ndGgtMV09dCxNZShlLHQscikpOmtlKGUsdCxyKX1mdW5jdGlvbiBrZShlLHQscil7TWUoZSx0LHIpLGhpKGUsZS5zZWwsZS5jbT9lLmNtLmN1ck9wLmlkOk5hTixyKX1mdW5jdGlvbiBNZShlLHQscil7KE5pKGUsImJlZm9yZVNlbGVjdGlvbkNoYW5nZSIpfHxlLmNtJiZOaShlLmNtLCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2UiKSkmJih0PUxlKGUsdCkpO3ZhciBuPXImJnIuYmlhc3x8KEZvKHQucHJpbWFyeSgpLmhlYWQsZS5zZWwucHJpbWFyeSgpLmhlYWQpPDA/LTE6MSk7TmUoZSxBZShlLHQsbiwhMCkpLHImJnIuc2Nyb2xsPT09ITF8fCFlLmNtfHx6cihlLmNtKX1mdW5jdGlvbiBOZShlLHQpe3QuZXF1YWxzKGUuc2VsKXx8KGUuc2VsPXQsZS5jbSYmKGUuY20uY3VyT3AudXBkYXRlSW5wdXQ9ZS5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkPSEwLE1pKGUuY20pKSxMaShlLCJjdXJzb3JBY3Rpdml0eSIsZSkpfWZ1bmN0aW9uIFdlKGUpe05lKGUsQWUoZSxlLnNlbCxudWxsLCExKSxJbCl9ZnVuY3Rpb24gQWUoZSx0LHIsbil7Zm9yKHZhciBpLG89MDtvPHQucmFuZ2VzLmxlbmd0aDtvKyspe3ZhciBsPXQucmFuZ2VzW29dLHM9dC5yYW5nZXMubGVuZ3RoPT1lLnNlbC5yYW5nZXMubGVuZ3RoJiZlLnNlbC5yYW5nZXNbb10sYT1EZShlLGwuYW5jaG9yLHMmJnMuYW5jaG9yLHIsbiksdT1EZShlLGwuaGVhZCxzJiZzLmhlYWQscixuKTsoaXx8YSE9bC5hbmNob3J8fHUhPWwuaGVhZCkmJihpfHwoaT10LnJhbmdlcy5zbGljZSgwLG8pKSxpW29dPW5ldyBoZShhLHUpKX1yZXR1cm4gaT9mZShpLHQucHJpbUluZGV4KTp0fWZ1bmN0aW9uIE9lKGUsdCxyLG4saSl7dmFyIG89Wm4oZSx0LmxpbmUpO2lmKG8ubWFya2VkU3BhbnMpZm9yKHZhciBsPTA7bDxvLm1hcmtlZFNwYW5zLmxlbmd0aDsrK2wpe3ZhciBzPW8ubWFya2VkU3BhbnNbbF0sYT1zLm1hcmtlcjtpZigobnVsbD09cy5mcm9tfHwoYS5pbmNsdXNpdmVMZWZ0P3MuZnJvbTw9dC5jaDpzLmZyb208dC5jaCkpJiYobnVsbD09cy50b3x8KGEuaW5jbHVzaXZlUmlnaHQ/cy50bz49dC5jaDpzLnRvPnQuY2gpKSl7aWYoaSYmKERsKGEsImJlZm9yZUN1cnNvckVudGVyIiksYS5leHBsaWNpdGx5Q2xlYXJlZCkpe2lmKG8ubWFya2VkU3BhbnMpey0tbDtjb250aW51ZX1icmVha31pZighYS5hdG9taWMpY29udGludWU7aWYocil7dmFyIHUsYz1hLmZpbmQoMD5uPzE6LTEpO2lmKCgwPm4/YS5pbmNsdXNpdmVSaWdodDphLmluY2x1c2l2ZUxlZnQpJiYoYz1IZShlLGMsLW4sbykpLGMmJmMubGluZT09dC5saW5lJiYodT1GbyhjLHIpKSYmKDA+bj8wPnU6dT4wKSlyZXR1cm4gT2UoZSxjLHQsbixpKX12YXIgaD1hLmZpbmQoMD5uPy0xOjEpO3JldHVybigwPm4/YS5pbmNsdXNpdmVMZWZ0OmEuaW5jbHVzaXZlUmlnaHQpJiYoaD1IZShlLGgsbixvKSksaD9PZShlLGgsdCxuLGkpOm51bGx9fXJldHVybiB0fWZ1bmN0aW9uIERlKGUsdCxyLG4saSl7dmFyIG89bnx8MSxsPU9lKGUsdCxyLG8saSl8fCFpJiZPZShlLHQscixvLCEwKXx8T2UoZSx0LHIsLW8saSl8fCFpJiZPZShlLHQsciwtbywhMCk7cmV0dXJuIGw/bDooZS5jYW50RWRpdD0hMCx6byhlLmZpcnN0LDApKX1mdW5jdGlvbiBIZShlLHQscixuKXtyZXR1cm4gMD5yJiYwPT10LmNoP3QubGluZT5lLmZpcnN0P2dlKGUsem8odC5saW5lLTEpKTpudWxsOnI+MCYmdC5jaD09KG58fFpuKGUsdC5saW5lKSkudGV4dC5sZW5ndGg/dC5saW5lPGUuZmlyc3QrZS5zaXplLTE/em8odC5saW5lKzEsMCk6bnVsbDpuZXcgem8odC5saW5lLHQuY2grcil9ZnVuY3Rpb24gUGUoZSl7ZS5kaXNwbGF5LmlucHV0LnNob3dTZWxlY3Rpb24oZS5kaXNwbGF5LmlucHV0LnByZXBhcmVTZWxlY3Rpb24oKSl9ZnVuY3Rpb24gRWUoZSx0KXtmb3IodmFyIHI9ZS5kb2Msbj17fSxpPW4uY3Vyc29ycz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbz1uLnNlbGVjdGlvbj1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbD0wO2w8ci5zZWwucmFuZ2VzLmxlbmd0aDtsKyspaWYodCE9PSExfHxsIT1yLnNlbC5wcmltSW5kZXgpe3ZhciBzPXIuc2VsLnJhbmdlc1tsXSxhPXMuZW1wdHkoKTsoYXx8ZS5vcHRpb25zLnNob3dDdXJzb3JXaGVuU2VsZWN0aW5nKSYmSWUoZSxzLmhlYWQsaSksYXx8emUoZSxzLG8pfXJldHVybiBufWZ1bmN0aW9uIEllKGUsdCxyKXt2YXIgbj1kdChlLHQsImRpdiIsbnVsbCxudWxsLCFlLm9wdGlvbnMuc2luZ2xlQ3Vyc29ySGVpZ2h0UGVyTGluZSksaT1yLmFwcGVuZENoaWxkKFVpKCJkaXYiLCLCoCIsIkNvZGVNaXJyb3ItY3Vyc29yIikpO2lmKGkuc3R5bGUubGVmdD1uLmxlZnQrInB4IixpLnN0eWxlLnRvcD1uLnRvcCsicHgiLGkuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KDAsbi5ib3R0b20tbi50b3ApKmUub3B0aW9ucy5jdXJzb3JIZWlnaHQrInB4IixuLm90aGVyKXt2YXIgbz1yLmFwcGVuZENoaWxkKFVpKCJkaXYiLCLCoCIsIkNvZGVNaXJyb3ItY3Vyc29yIENvZGVNaXJyb3Itc2Vjb25kYXJ5Y3Vyc29yIikpO28uc3R5bGUuZGlzcGxheT0iIixvLnN0eWxlLmxlZnQ9bi5vdGhlci5sZWZ0KyJweCIsby5zdHlsZS50b3A9bi5vdGhlci50b3ArInB4IixvLnN0eWxlLmhlaWdodD0uODUqKG4ub3RoZXIuYm90dG9tLW4ub3RoZXIudG9wKSsicHgifX1mdW5jdGlvbiB6ZShlLHQscil7ZnVuY3Rpb24gbihlLHQscixuKXswPnQmJih0PTApLHQ9TWF0aC5yb3VuZCh0KSxuPU1hdGgucm91bmQobikscy5hcHBlbmRDaGlsZChVaSgiZGl2IixudWxsLCJDb2RlTWlycm9yLXNlbGVjdGVkIiwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAiK2UrInB4OyB0b3A6ICIrdCsicHg7IHdpZHRoOiAiKyhudWxsPT1yP2MtZTpyKSsicHg7IGhlaWdodDogIisobi10KSsicHgiKSl9ZnVuY3Rpb24gaSh0LHIsaSl7ZnVuY3Rpb24gbyhyLG4pe3JldHVybiBmdChlLHpvKHQsciksImRpdiIsaCxuKX12YXIgcyxhLGg9Wm4obCx0KSxmPWgudGV4dC5sZW5ndGg7cmV0dXJuIGVvKGlpKGgpLHJ8fDAsbnVsbD09aT9mOmksZnVuY3Rpb24oZSx0LGwpe3ZhciBoLGQscCxnPW8oZSwibGVmdCIpO2lmKGU9PXQpaD1nLGQ9cD1nLmxlZnQ7ZWxzZXtpZihoPW8odC0xLCJyaWdodCIpLCJydGwiPT1sKXt2YXIgdj1nO2c9aCxoPXZ9ZD1nLmxlZnQscD1oLnJpZ2h0fW51bGw9PXImJjA9PWUmJihkPXUpLGgudG9wLWcudG9wPjMmJihuKGQsZy50b3AsbnVsbCxnLmJvdHRvbSksZD11LGcuYm90dG9tPGgudG9wJiZuKGQsZy5ib3R0b20sbnVsbCxoLnRvcCkpLG51bGw9PWkmJnQ9PWYmJihwPWMpLCghc3x8Zy50b3A8cy50b3B8fGcudG9wPT1zLnRvcCYmZy5sZWZ0PHMubGVmdCkmJihzPWcpLCghYXx8aC5ib3R0b20+YS5ib3R0b218fGguYm90dG9tPT1hLmJvdHRvbSYmaC5yaWdodD5hLnJpZ2h0KSYmKGE9aCksdSsxPmQmJihkPXUpLG4oZCxoLnRvcCxwLWQsaC5ib3R0b20pfSkse3N0YXJ0OnMsZW5kOmF9fXZhciBvPWUuZGlzcGxheSxsPWUuZG9jLHM9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGE9amUoZS5kaXNwbGF5KSx1PWEubGVmdCxjPU1hdGgubWF4KG8uc2l6ZXJXaWR0aCxZZShlKS1vLnNpemVyLm9mZnNldExlZnQpLWEucmlnaHQsaD10LmZyb20oKSxmPXQudG8oKTtpZihoLmxpbmU9PWYubGluZSlpKGgubGluZSxoLmNoLGYuY2gpO2Vsc2V7dmFyIGQ9Wm4obCxoLmxpbmUpLHA9Wm4obCxmLmxpbmUpLGc9eW4oZCk9PXluKHApLHY9aShoLmxpbmUsaC5jaCxnP2QudGV4dC5sZW5ndGgrMTpudWxsKS5lbmQsbT1pKGYubGluZSxnPzA6bnVsbCxmLmNoKS5zdGFydDtnJiYodi50b3A8bS50b3AtMj8obih2LnJpZ2h0LHYudG9wLG51bGwsdi5ib3R0b20pLG4odSxtLnRvcCxtLmxlZnQsbS5ib3R0b20pKTpuKHYucmlnaHQsdi50b3AsbS5sZWZ0LXYucmlnaHQsdi5ib3R0b20pKSx2LmJvdHRvbTxtLnRvcCYmbih1LHYuYm90dG9tLG51bGwsbS50b3ApfXIuYXBwZW5kQ2hpbGQocyl9ZnVuY3Rpb24gRmUoZSl7aWYoZS5zdGF0ZS5mb2N1c2VkKXt2YXIgdD1lLmRpc3BsYXk7Y2xlYXJJbnRlcnZhbCh0LmJsaW5rZXIpO3ZhciByPSEwO3QuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHk9IiIsZS5vcHRpb25zLmN1cnNvckJsaW5rUmF0ZT4wP3QuYmxpbmtlcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3QuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHk9KHI9IXIpPyIiOiJoaWRkZW4ifSxlLm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlKTplLm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlPDAmJih0LmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKX19ZnVuY3Rpb24gUmUoZSx0KXtlLmRvYy5tb2RlLnN0YXJ0U3RhdGUmJmUuZG9jLmZyb250aWVyPGUuZGlzcGxheS52aWV3VG8mJmUuc3RhdGUuaGlnaGxpZ2h0LnNldCh0LEZpKEJlLGUpKX1mdW5jdGlvbiBCZShlKXt2YXIgdD1lLmRvYztpZih0LmZyb250aWVyPHQuZmlyc3QmJih0LmZyb250aWVyPXQuZmlyc3QpLCEodC5mcm9udGllcj49ZS5kaXNwbGF5LnZpZXdUbykpe3ZhciByPStuZXcgRGF0ZStlLm9wdGlvbnMud29ya1RpbWUsbj1zbCh0Lm1vZGUsVWUoZSx0LmZyb250aWVyKSksaT1bXTt0Lml0ZXIodC5mcm9udGllcixNYXRoLm1pbih0LmZpcnN0K3Quc2l6ZSxlLmRpc3BsYXkudmlld1RvKzUwMCksZnVuY3Rpb24obyl7aWYodC5mcm9udGllcj49ZS5kaXNwbGF5LnZpZXdGcm9tKXt2YXIgbD1vLnN0eWxlcyxzPW8udGV4dC5sZW5ndGg+ZS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aCxhPVBuKGUsbyxzP3NsKHQubW9kZSxuKTpuLCEwKTtvLnN0eWxlcz1hLnN0eWxlczt2YXIgdT1vLnN0eWxlQ2xhc3NlcyxjPWEuY2xhc3NlcztjP28uc3R5bGVDbGFzc2VzPWM6dSYmKG8uc3R5bGVDbGFzc2VzPW51bGwpO2Zvcih2YXIgaD0hbHx8bC5sZW5ndGghPW8uc3R5bGVzLmxlbmd0aHx8dSE9YyYmKCF1fHwhY3x8dS5iZ0NsYXNzIT1jLmJnQ2xhc3N8fHUudGV4dENsYXNzIT1jLnRleHRDbGFzcyksZj0wOyFoJiZmPGwubGVuZ3RoOysrZiloPWxbZl0hPW8uc3R5bGVzW2ZdO2gmJmkucHVzaCh0LmZyb250aWVyKSxvLnN0YXRlQWZ0ZXI9cz9uOnNsKHQubW9kZSxuKX1lbHNlIG8udGV4dC5sZW5ndGg8PWUub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgmJkluKGUsby50ZXh0LG4pLG8uc3RhdGVBZnRlcj10LmZyb250aWVyJTU9PTA/c2wodC5tb2RlLG4pOm51bGw7cmV0dXJuKyt0LmZyb250aWVyLCtuZXcgRGF0ZT5yPyhSZShlLGUub3B0aW9ucy53b3JrRGVsYXkpLCEwKTp2b2lkIDB9KSxpLmxlbmd0aCYmV3QoZSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8aS5sZW5ndGg7dCsrKUl0KGUsaVt0XSwidGV4dCIpfSl9fWZ1bmN0aW9uIEdlKGUsdCxyKXtmb3IodmFyIG4saSxvPWUuZG9jLGw9cj8tMTp0LShlLmRvYy5tb2RlLmlubmVyTW9kZT8xZTM6MTAwKSxzPXQ7cz5sOy0tcyl7aWYoczw9by5maXJzdClyZXR1cm4gby5maXJzdDt2YXIgYT1abihvLHMtMSk7aWYoYS5zdGF0ZUFmdGVyJiYoIXJ8fHM8PW8uZnJvbnRpZXIpKXJldHVybiBzO3ZhciB1PVJsKGEudGV4dCxudWxsLGUub3B0aW9ucy50YWJTaXplKTsobnVsbD09aXx8bj51KSYmKGk9cy0xLG49dSl9cmV0dXJuIGl9ZnVuY3Rpb24gVWUoZSx0LHIpe3ZhciBuPWUuZG9jLGk9ZS5kaXNwbGF5O2lmKCFuLm1vZGUuc3RhcnRTdGF0ZSlyZXR1cm4hMDt2YXIgbz1HZShlLHQsciksbD1vPm4uZmlyc3QmJlpuKG4sby0xKS5zdGF0ZUFmdGVyO3JldHVybiBsPWw/c2wobi5tb2RlLGwpOmFsKG4ubW9kZSksbi5pdGVyKG8sdCxmdW5jdGlvbihyKXtJbihlLHIudGV4dCxsKTt2YXIgcz1vPT10LTF8fG8lNT09MHx8bz49aS52aWV3RnJvbSYmbzxpLnZpZXdUbztyLnN0YXRlQWZ0ZXI9cz9zbChuLm1vZGUsbCk6bnVsbCwrK299KSxyJiYobi5mcm9udGllcj1vKSxsfWZ1bmN0aW9uIFZlKGUpe3JldHVybiBlLmxpbmVTcGFjZS5vZmZzZXRUb3B9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUubW92ZXIub2Zmc2V0SGVpZ2h0LWUubGluZVNwYWNlLm9mZnNldEhlaWdodH1mdW5jdGlvbiBqZShlKXtpZihlLmNhY2hlZFBhZGRpbmdIKXJldHVybiBlLmNhY2hlZFBhZGRpbmdIO3ZhciB0PUtpKGUubWVhc3VyZSxVaSgicHJlIiwieCIpKSxyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpOnQuY3VycmVudFN0eWxlLG49e2xlZnQ6cGFyc2VJbnQoci5wYWRkaW5nTGVmdCkscmlnaHQ6cGFyc2VJbnQoci5wYWRkaW5nUmlnaHQpfTtyZXR1cm4gaXNOYU4obi5sZWZ0KXx8aXNOYU4obi5yaWdodCl8fChlLmNhY2hlZFBhZGRpbmdIPW4pLG59ZnVuY3Rpb24gWGUoZSl7cmV0dXJuIFBsLWUuZGlzcGxheS5uYXRpdmVCYXJXaWR0aH1mdW5jdGlvbiBZZShlKXtyZXR1cm4gZS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLVhlKGUpLWUuZGlzcGxheS5iYXJXaWR0aH1mdW5jdGlvbiBfZShlKXtyZXR1cm4gZS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodC1YZShlKS1lLmRpc3BsYXkuYmFySGVpZ2h0fWZ1bmN0aW9uICRlKGUsdCxyKXt2YXIgbj1lLm9wdGlvbnMubGluZVdyYXBwaW5nLGk9biYmWWUoZSk7aWYoIXQubWVhc3VyZS5oZWlnaHRzfHxuJiZ0Lm1lYXN1cmUud2lkdGghPWkpe3ZhciBvPXQubWVhc3VyZS5oZWlnaHRzPVtdO2lmKG4pe3QubWVhc3VyZS53aWR0aD1pO2Zvcih2YXIgbD10LnRleHQuZmlyc3RDaGlsZC5nZXRDbGllbnRSZWN0cygpLHM9MDtzPGwubGVuZ3RoLTE7cysrKXt2YXIgYT1sW3NdLHU9bFtzKzFdO01hdGguYWJzKGEuYm90dG9tLXUuYm90dG9tKT4yJiZvLnB1c2goKGEuYm90dG9tK3UudG9wKS8yLXIudG9wKX19by5wdXNoKHIuYm90dG9tLXIudG9wKX19ZnVuY3Rpb24gcWUoZSx0LHIpe2lmKGUubGluZT09dClyZXR1cm57bWFwOmUubWVhc3VyZS5tYXAsY2FjaGU6ZS5tZWFzdXJlLmNhY2hlfTtmb3IodmFyIG49MDtuPGUucmVzdC5sZW5ndGg7bisrKWlmKGUucmVzdFtuXT09dClyZXR1cm57bWFwOmUubWVhc3VyZS5tYXBzW25dLGNhY2hlOmUubWVhc3VyZS5jYWNoZXNbbl19O2Zvcih2YXIgbj0wO248ZS5yZXN0Lmxlbmd0aDtuKyspaWYodGkoZS5yZXN0W25dKT5yKXJldHVybnttYXA6ZS5tZWFzdXJlLm1hcHNbbl0sY2FjaGU6ZS5tZWFzdXJlLmNhY2hlc1tuXSxiZWZvcmU6ITB9fWZ1bmN0aW9uIFplKGUsdCl7dD15bih0KTt2YXIgcj10aSh0KSxuPWUuZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkPW5ldyBIdChlLmRvYyx0LHIpO24ubGluZU49cjt2YXIgaT1uLmJ1aWx0PUZuKGUsbik7cmV0dXJuIG4udGV4dD1pLnByZSxLaShlLmRpc3BsYXkubGluZU1lYXN1cmUsaS5wcmUpLG59ZnVuY3Rpb24gUWUoZSx0LHIsbil7cmV0dXJuIHR0KGUsZXQoZSx0KSxyLG4pfWZ1bmN0aW9uIEplKGUsdCl7aWYodD49ZS5kaXNwbGF5LnZpZXdGcm9tJiZ0PGUuZGlzcGxheS52aWV3VG8pcmV0dXJuIGUuZGlzcGxheS52aWV3W0Z0KGUsdCldO3ZhciByPWUuZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO3JldHVybiByJiZ0Pj1yLmxpbmVOJiZ0PHIubGluZU4rci5zaXplP3I6dm9pZCAwfWZ1bmN0aW9uIGV0KGUsdCl7dmFyIHI9dGkodCksbj1KZShlLHIpO24mJiFuLnRleHQ/bj1udWxsOm4mJm4uY2hhbmdlcyYmKEUoZSxuLHIsSChlKSksZS5jdXJPcC5mb3JjZVVwZGF0ZT0hMCksbnx8KG49WmUoZSx0KSk7dmFyIGk9cWUobix0LHIpO3JldHVybntsaW5lOnQsdmlldzpuLHJlY3Q6bnVsbCxtYXA6aS5tYXAsY2FjaGU6aS5jYWNoZSxiZWZvcmU6aS5iZWZvcmUsaGFzSGVpZ2h0czohMX19ZnVuY3Rpb24gdHQoZSx0LHIsbixpKXt0LmJlZm9yZSYmKHI9LTEpO3ZhciBvLGw9cisobnx8IiIpO3JldHVybiB0LmNhY2hlLmhhc093blByb3BlcnR5KGwpP289dC5jYWNoZVtsXToodC5yZWN0fHwodC5yZWN0PXQudmlldy50ZXh0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSx0Lmhhc0hlaWdodHN8fCgkZShlLHQudmlldyx0LnJlY3QpLHQuaGFzSGVpZ2h0cz0hMCksbz1udChlLHQscixuKSxvLmJvZ3VzfHwodC5jYWNoZVtsXT1vKSkse2xlZnQ6by5sZWZ0LHJpZ2h0Om8ucmlnaHQsdG9wOmk/by5ydG9wOm8udG9wLGJvdHRvbTppP28ucmJvdHRvbTpvLmJvdHRvbX19ZnVuY3Rpb24gcnQoZSx0LHIpe2Zvcih2YXIgbixpLG8sbCxzPTA7czxlLmxlbmd0aDtzKz0zKXt2YXIgYT1lW3NdLHU9ZVtzKzFdO2lmKGE+dD8oaT0wLG89MSxsPSJsZWZ0Iik6dT50PyhpPXQtYSxvPWkrMSk6KHM9PWUubGVuZ3RoLTN8fHQ9PXUmJmVbcyszXT50KSYmKG89dS1hLGk9by0xLHQ+PXUmJihsPSJyaWdodCIpKSxudWxsIT1pKXtpZihuPWVbcysyXSxhPT11JiZyPT0obi5pbnNlcnRMZWZ0PyJsZWZ0IjoicmlnaHQiKSYmKGw9ciksImxlZnQiPT1yJiYwPT1pKWZvcig7cyYmZVtzLTJdPT1lW3MtM10mJmVbcy0xXS5pbnNlcnRMZWZ0OyluPWVbKHMtPTMpKzJdLGw9ImxlZnQiO2lmKCJyaWdodCI9PXImJmk9PXUtYSlmb3IoO3M8ZS5sZW5ndGgtMyYmZVtzKzNdPT1lW3MrNF0mJiFlW3MrNV0uaW5zZXJ0TGVmdDspbj1lWyhzKz0zKSsyXSwKbD0icmlnaHQiO2JyZWFrfX1yZXR1cm57bm9kZTpuLHN0YXJ0OmksZW5kOm8sY29sbGFwc2U6bCxjb3ZlclN0YXJ0OmEsY292ZXJFbmQ6dX19ZnVuY3Rpb24gbnQoZSx0LHIsbil7dmFyIGksbz1ydCh0Lm1hcCxyLG4pLGw9by5ub2RlLHM9by5zdGFydCxhPW8uZW5kLHU9by5jb2xsYXBzZTtpZigzPT1sLm5vZGVUeXBlKXtmb3IodmFyIGM9MDs0PmM7YysrKXtmb3IoO3MmJkdpKHQubGluZS50ZXh0LmNoYXJBdChvLmNvdmVyU3RhcnQrcykpOyktLXM7Zm9yKDtvLmNvdmVyU3RhcnQrYTxvLmNvdmVyRW5kJiZHaSh0LmxpbmUudGV4dC5jaGFyQXQoby5jb3ZlclN0YXJ0K2EpKTspKythO2lmKGJvJiY5PndvJiYwPT1zJiZhPT1vLmNvdmVyRW5kLW8uY292ZXJTdGFydClpPWwucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNlIGlmKGJvJiZlLm9wdGlvbnMubGluZVdyYXBwaW5nKXt2YXIgaD1WbChsLHMsYSkuZ2V0Q2xpZW50UmVjdHMoKTtpPWgubGVuZ3RoP2hbInJpZ2h0Ij09bj9oLmxlbmd0aC0xOjBdOlZvfWVsc2UgaT1WbChsLHMsYSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl8fFZvO2lmKGkubGVmdHx8aS5yaWdodHx8MD09cylicmVhazthPXMscy09MSx1PSJyaWdodCJ9Ym8mJjExPndvJiYoaT1pdChlLmRpc3BsYXkubWVhc3VyZSxpKSl9ZWxzZXtzPjAmJih1PW49InJpZ2h0Iik7dmFyIGg7aT1lLm9wdGlvbnMubGluZVdyYXBwaW5nJiYoaD1sLmdldENsaWVudFJlY3RzKCkpLmxlbmd0aD4xP2hbInJpZ2h0Ij09bj9oLmxlbmd0aC0xOjBdOmwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9aWYoYm8mJjk+d28mJiFzJiYoIWl8fCFpLmxlZnQmJiFpLnJpZ2h0KSl7dmFyIGY9bC5wYXJlbnROb2RlLmdldENsaWVudFJlY3RzKClbMF07aT1mP3tsZWZ0OmYubGVmdCxyaWdodDpmLmxlZnQrYnQoZS5kaXNwbGF5KSx0b3A6Zi50b3AsYm90dG9tOmYuYm90dG9tfTpWb31mb3IodmFyIGQ9aS50b3AtdC5yZWN0LnRvcCxwPWkuYm90dG9tLXQucmVjdC50b3AsZz0oZCtwKS8yLHY9dC52aWV3Lm1lYXN1cmUuaGVpZ2h0cyxjPTA7Yzx2Lmxlbmd0aC0xJiYhKGc8dltjXSk7YysrKTt2YXIgbT1jP3ZbYy0xXTowLHk9dltjXSxiPXtsZWZ0OigicmlnaHQiPT11P2kucmlnaHQ6aS5sZWZ0KS10LnJlY3QubGVmdCxyaWdodDooImxlZnQiPT11P2kubGVmdDppLnJpZ2h0KS10LnJlY3QubGVmdCx0b3A6bSxib3R0b206eX07cmV0dXJuIGkubGVmdHx8aS5yaWdodHx8KGIuYm9ndXM9ITApLGUub3B0aW9ucy5zaW5nbGVDdXJzb3JIZWlnaHRQZXJMaW5lfHwoYi5ydG9wPWQsYi5yYm90dG9tPXApLGJ9ZnVuY3Rpb24gaXQoZSx0KXtpZighd2luZG93LnNjcmVlbnx8bnVsbD09c2NyZWVuLmxvZ2ljYWxYRFBJfHxzY3JlZW4ubG9naWNhbFhEUEk9PXNjcmVlbi5kZXZpY2VYRFBJfHwhSmkoZSkpcmV0dXJuIHQ7dmFyIHI9c2NyZWVuLmxvZ2ljYWxYRFBJL3NjcmVlbi5kZXZpY2VYRFBJLG49c2NyZWVuLmxvZ2ljYWxZRFBJL3NjcmVlbi5kZXZpY2VZRFBJO3JldHVybntsZWZ0OnQubGVmdCpyLHJpZ2h0OnQucmlnaHQqcix0b3A6dC50b3Aqbixib3R0b206dC5ib3R0b20qbn19ZnVuY3Rpb24gb3QoZSl7aWYoZS5tZWFzdXJlJiYoZS5tZWFzdXJlLmNhY2hlPXt9LGUubWVhc3VyZS5oZWlnaHRzPW51bGwsZS5yZXN0KSlmb3IodmFyIHQ9MDt0PGUucmVzdC5sZW5ndGg7dCsrKWUubWVhc3VyZS5jYWNoZXNbdF09e319ZnVuY3Rpb24gbHQoZSl7ZS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZT1udWxsLFZpKGUuZGlzcGxheS5saW5lTWVhc3VyZSk7Zm9yKHZhciB0PTA7dDxlLmRpc3BsYXkudmlldy5sZW5ndGg7dCsrKW90KGUuZGlzcGxheS52aWV3W3RdKX1mdW5jdGlvbiBzdChlKXtsdChlKSxlLmRpc3BsYXkuY2FjaGVkQ2hhcldpZHRoPWUuZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0PWUuZGlzcGxheS5jYWNoZWRQYWRkaW5nSD1udWxsLGUub3B0aW9ucy5saW5lV3JhcHBpbmd8fChlLmRpc3BsYXkubWF4TGluZUNoYW5nZWQ9ITApLGUuZGlzcGxheS5saW5lTnVtQ2hhcnM9bnVsbH1mdW5jdGlvbiBhdCgpe3JldHVybiB3aW5kb3cucGFnZVhPZmZzZXR8fChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGRvY3VtZW50LmJvZHkpLnNjcm9sbExlZnR9ZnVuY3Rpb24gdXQoKXtyZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0fHwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHxkb2N1bWVudC5ib2R5KS5zY3JvbGxUb3B9ZnVuY3Rpb24gY3QoZSx0LHIsbil7aWYodC53aWRnZXRzKWZvcih2YXIgaT0wO2k8dC53aWRnZXRzLmxlbmd0aDsrK2kpaWYodC53aWRnZXRzW2ldLmFib3ZlKXt2YXIgbz1Ubih0LndpZGdldHNbaV0pO3IudG9wKz1vLHIuYm90dG9tKz1vfWlmKCJsaW5lIj09bilyZXR1cm4gcjtufHwobj0ibG9jYWwiKTt2YXIgbD1uaSh0KTtpZigibG9jYWwiPT1uP2wrPVZlKGUuZGlzcGxheSk6bC09ZS5kaXNwbGF5LnZpZXdPZmZzZXQsInBhZ2UiPT1ufHwid2luZG93Ij09bil7dmFyIHM9ZS5kaXNwbGF5LmxpbmVTcGFjZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsKz1zLnRvcCsoIndpbmRvdyI9PW4/MDp1dCgpKTt2YXIgYT1zLmxlZnQrKCJ3aW5kb3ciPT1uPzA6YXQoKSk7ci5sZWZ0Kz1hLHIucmlnaHQrPWF9cmV0dXJuIHIudG9wKz1sLHIuYm90dG9tKz1sLHJ9ZnVuY3Rpb24gaHQoZSx0LHIpe2lmKCJkaXYiPT1yKXJldHVybiB0O3ZhciBuPXQubGVmdCxpPXQudG9wO2lmKCJwYWdlIj09ciluLT1hdCgpLGktPXV0KCk7ZWxzZSBpZigibG9jYWwiPT1yfHwhcil7dmFyIG89ZS5kaXNwbGF5LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO24rPW8ubGVmdCxpKz1vLnRvcH12YXIgbD1lLmRpc3BsYXkubGluZVNwYWNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybntsZWZ0Om4tbC5sZWZ0LHRvcDppLWwudG9wfX1mdW5jdGlvbiBmdChlLHQscixuLGkpe3JldHVybiBufHwobj1abihlLmRvYyx0LmxpbmUpKSxjdChlLG4sUWUoZSxuLHQuY2gsaSkscil9ZnVuY3Rpb24gZHQoZSx0LHIsbixpLG8pe2Z1bmN0aW9uIGwodCxsKXt2YXIgcz10dChlLGksdCxsPyJyaWdodCI6ImxlZnQiLG8pO3JldHVybiBsP3MubGVmdD1zLnJpZ2h0OnMucmlnaHQ9cy5sZWZ0LGN0KGUsbixzLHIpfWZ1bmN0aW9uIHMoZSx0KXt2YXIgcj1hW3RdLG49ci5sZXZlbCUyO3JldHVybiBlPT10byhyKSYmdCYmci5sZXZlbDxhW3QtMV0ubGV2ZWw/KHI9YVstLXRdLGU9cm8ociktKHIubGV2ZWwlMj8wOjEpLG49ITApOmU9PXJvKHIpJiZ0PGEubGVuZ3RoLTEmJnIubGV2ZWw8YVt0KzFdLmxldmVsJiYocj1hWysrdF0sZT10byhyKS1yLmxldmVsJTIsbj0hMSksbiYmZT09ci50byYmZT5yLmZyb20/bChlLTEpOmwoZSxuKX1uPW58fFpuKGUuZG9jLHQubGluZSksaXx8KGk9ZXQoZSxuKSk7dmFyIGE9aWkobiksdT10LmNoO2lmKCFhKXJldHVybiBsKHUpO3ZhciBjPXVvKGEsdSksaD1zKHUsYyk7cmV0dXJuIG51bGwhPW9zJiYoaC5vdGhlcj1zKHUsb3MpKSxofWZ1bmN0aW9uIHB0KGUsdCl7dmFyIHI9MCx0PWdlKGUuZG9jLHQpO2Uub3B0aW9ucy5saW5lV3JhcHBpbmd8fChyPWJ0KGUuZGlzcGxheSkqdC5jaCk7dmFyIG49Wm4oZS5kb2MsdC5saW5lKSxpPW5pKG4pK1ZlKGUuZGlzcGxheSk7cmV0dXJue2xlZnQ6cixyaWdodDpyLHRvcDppLGJvdHRvbTppK24uaGVpZ2h0fX1mdW5jdGlvbiBndChlLHQscixuKXt2YXIgaT16byhlLHQpO3JldHVybiBpLnhSZWw9bixyJiYoaS5vdXRzaWRlPSEwKSxpfWZ1bmN0aW9uIHZ0KGUsdCxyKXt2YXIgbj1lLmRvYztpZihyKz1lLmRpc3BsYXkudmlld09mZnNldCwwPnIpcmV0dXJuIGd0KG4uZmlyc3QsMCwhMCwtMSk7dmFyIGk9cmkobixyKSxvPW4uZmlyc3Qrbi5zaXplLTE7aWYoaT5vKXJldHVybiBndChuLmZpcnN0K24uc2l6ZS0xLFpuKG4sbykudGV4dC5sZW5ndGgsITAsMSk7MD50JiYodD0wKTtmb3IodmFyIGw9Wm4obixpKTs7KXt2YXIgcz1tdChlLGwsaSx0LHIpLGE9dm4obCksdT1hJiZhLmZpbmQoMCwhMCk7aWYoIWF8fCEocy5jaD51LmZyb20uY2h8fHMuY2g9PXUuZnJvbS5jaCYmcy54UmVsPjApKXJldHVybiBzO2k9dGkobD11LnRvLmxpbmUpfX1mdW5jdGlvbiBtdChlLHQscixuLGkpe2Z1bmN0aW9uIG8obil7dmFyIGk9ZHQoZSx6byhyLG4pLCJsaW5lIix0LHUpO3JldHVybiBzPSEwLGw+aS5ib3R0b20/aS5sZWZ0LWE6bDxpLnRvcD9pLmxlZnQrYToocz0hMSxpLmxlZnQpfXZhciBsPWktbmkodCkscz0hMSxhPTIqZS5kaXNwbGF5LndyYXBwZXIuY2xpZW50V2lkdGgsdT1ldChlLHQpLGM9aWkodCksaD10LnRleHQubGVuZ3RoLGY9bm8odCksZD1pbyh0KSxwPW8oZiksZz1zLHY9byhkKSxtPXM7aWYobj52KXJldHVybiBndChyLGQsbSwxKTtmb3IoOzspe2lmKGM/ZD09Znx8ZD09aG8odCxmLDEpOjE+PWQtZil7Zm9yKHZhciB5PXA+bnx8di1uPj1uLXA/ZjpkLGI9bi0oeT09Zj9wOnYpO0dpKHQudGV4dC5jaGFyQXQoeSkpOykrK3k7dmFyIHc9Z3Qocix5LHk9PWY/ZzptLC0xPmI/LTE6Yj4xPzE6MCk7cmV0dXJuIHd9dmFyIHg9TWF0aC5jZWlsKGgvMiksQz1mK3g7aWYoYyl7Qz1mO2Zvcih2YXIgUz0wO3g+UzsrK1MpQz1obyh0LEMsMSl9dmFyIEw9byhDKTtMPm4/KGQ9Qyx2PUwsKG09cykmJih2Kz0xZTMpLGg9eCk6KGY9QyxwPUwsZz1zLGgtPXgpfX1mdW5jdGlvbiB5dChlKXtpZihudWxsIT1lLmNhY2hlZFRleHRIZWlnaHQpcmV0dXJuIGUuY2FjaGVkVGV4dEhlaWdodDtpZihudWxsPT1Cbyl7Qm89VWkoInByZSIpO2Zvcih2YXIgdD0wOzQ5PnQ7Kyt0KUJvLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ4IikpLEJvLmFwcGVuZENoaWxkKFVpKCJiciIpKTtCby5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKX1LaShlLm1lYXN1cmUsQm8pO3ZhciByPUJvLm9mZnNldEhlaWdodC81MDtyZXR1cm4gcj4zJiYoZS5jYWNoZWRUZXh0SGVpZ2h0PXIpLFZpKGUubWVhc3VyZSkscnx8MX1mdW5jdGlvbiBidChlKXtpZihudWxsIT1lLmNhY2hlZENoYXJXaWR0aClyZXR1cm4gZS5jYWNoZWRDaGFyV2lkdGg7dmFyIHQ9VWkoInNwYW4iLCJ4eHh4eHh4eHh4Iikscj1VaSgicHJlIixbdF0pO0tpKGUubWVhc3VyZSxyKTt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9KG4ucmlnaHQtbi5sZWZ0KS8xMDtyZXR1cm4gaT4yJiYoZS5jYWNoZWRDaGFyV2lkdGg9aSksaXx8MTB9ZnVuY3Rpb24gd3QoZSl7ZS5jdXJPcD17Y206ZSx2aWV3Q2hhbmdlZDohMSxzdGFydEhlaWdodDplLmRvYy5oZWlnaHQsZm9yY2VVcGRhdGU6ITEsdXBkYXRlSW5wdXQ6bnVsbCx0eXBpbmc6ITEsY2hhbmdlT2JqczpudWxsLGN1cnNvckFjdGl2aXR5SGFuZGxlcnM6bnVsbCxjdXJzb3JBY3Rpdml0eUNhbGxlZDowLHNlbGVjdGlvbkNoYW5nZWQ6ITEsdXBkYXRlTWF4TGluZTohMSxzY3JvbGxMZWZ0Om51bGwsc2Nyb2xsVG9wOm51bGwsc2Nyb2xsVG9Qb3M6bnVsbCxmb2N1czohMSxpZDorK2pvfSxLbz9Lby5vcHMucHVzaChlLmN1ck9wKTplLmN1ck9wLm93bnNHcm91cD1Lbz17b3BzOltlLmN1ck9wXSxkZWxheWVkQ2FsbGJhY2tzOltdfX1mdW5jdGlvbiB4dChlKXt2YXIgdD1lLmRlbGF5ZWRDYWxsYmFja3Mscj0wO2Rve2Zvcig7cjx0Lmxlbmd0aDtyKyspdFtyXS5jYWxsKG51bGwpO2Zvcih2YXIgbj0wO248ZS5vcHMubGVuZ3RoO24rKyl7dmFyIGk9ZS5vcHNbbl07aWYoaS5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzKWZvcig7aS5jdXJzb3JBY3Rpdml0eUNhbGxlZDxpLmN1cnNvckFjdGl2aXR5SGFuZGxlcnMubGVuZ3RoOylpLmN1cnNvckFjdGl2aXR5SGFuZGxlcnNbaS5jdXJzb3JBY3Rpdml0eUNhbGxlZCsrXS5jYWxsKG51bGwsaS5jbSl9fXdoaWxlKHI8dC5sZW5ndGgpfWZ1bmN0aW9uIEN0KGUpe3ZhciB0PWUuY3VyT3Ascj10Lm93bnNHcm91cDtpZihyKXRyeXt4dChyKX1maW5hbGx5e0tvPW51bGw7Zm9yKHZhciBuPTA7bjxyLm9wcy5sZW5ndGg7bisrKXIub3BzW25dLmNtLmN1ck9wPW51bGw7U3Qocil9fWZ1bmN0aW9uIFN0KGUpe2Zvcih2YXIgdD1lLm9wcyxyPTA7cjx0Lmxlbmd0aDtyKyspTHQodFtyXSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspVHQodFtyXSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspa3QodFtyXSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspTXQodFtyXSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspTnQodFtyXSl9ZnVuY3Rpb24gTHQoZSl7dmFyIHQ9ZS5jbSxyPXQuZGlzcGxheTtrKHQpLGUudXBkYXRlTWF4TGluZSYmZih0KSxlLm11c3RVcGRhdGU9ZS52aWV3Q2hhbmdlZHx8ZS5mb3JjZVVwZGF0ZXx8bnVsbCE9ZS5zY3JvbGxUb3B8fGUuc2Nyb2xsVG9Qb3MmJihlLnNjcm9sbFRvUG9zLmZyb20ubGluZTxyLnZpZXdGcm9tfHxlLnNjcm9sbFRvUG9zLnRvLmxpbmU+PXIudmlld1RvKXx8ci5tYXhMaW5lQ2hhbmdlZCYmdC5vcHRpb25zLmxpbmVXcmFwcGluZyxlLnVwZGF0ZT1lLm11c3RVcGRhdGUmJm5ldyBUKHQsZS5tdXN0VXBkYXRlJiZ7dG9wOmUuc2Nyb2xsVG9wLGVuc3VyZTplLnNjcm9sbFRvUG9zfSxlLmZvcmNlVXBkYXRlKX1mdW5jdGlvbiBUdChlKXtlLnVwZGF0ZWREaXNwbGF5PWUubXVzdFVwZGF0ZSYmTShlLmNtLGUudXBkYXRlKX1mdW5jdGlvbiBrdChlKXt2YXIgdD1lLmNtLHI9dC5kaXNwbGF5O2UudXBkYXRlZERpc3BsYXkmJk8odCksZS5iYXJNZWFzdXJlPXAodCksci5tYXhMaW5lQ2hhbmdlZCYmIXQub3B0aW9ucy5saW5lV3JhcHBpbmcmJihlLmFkanVzdFdpZHRoVG89UWUodCxyLm1heExpbmUsci5tYXhMaW5lLnRleHQubGVuZ3RoKS5sZWZ0KzMsdC5kaXNwbGF5LnNpemVyV2lkdGg9ZS5hZGp1c3RXaWR0aFRvLGUuYmFyTWVhc3VyZS5zY3JvbGxXaWR0aD1NYXRoLm1heChyLnNjcm9sbGVyLmNsaWVudFdpZHRoLHIuc2l6ZXIub2Zmc2V0TGVmdCtlLmFkanVzdFdpZHRoVG8rWGUodCkrdC5kaXNwbGF5LmJhcldpZHRoKSxlLm1heFNjcm9sbExlZnQ9TWF0aC5tYXgoMCxyLnNpemVyLm9mZnNldExlZnQrZS5hZGp1c3RXaWR0aFRvLVllKHQpKSksKGUudXBkYXRlZERpc3BsYXl8fGUuc2VsZWN0aW9uQ2hhbmdlZCkmJihlLnByZXBhcmVkU2VsZWN0aW9uPXIuaW5wdXQucHJlcGFyZVNlbGVjdGlvbigpKX1mdW5jdGlvbiBNdChlKXt2YXIgdD1lLmNtO251bGwhPWUuYWRqdXN0V2lkdGhUbyYmKHQuZGlzcGxheS5zaXplci5zdHlsZS5taW5XaWR0aD1lLmFkanVzdFdpZHRoVG8rInB4IixlLm1heFNjcm9sbExlZnQ8dC5kb2Muc2Nyb2xsTGVmdCYmaXIodCxNYXRoLm1pbih0LmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdCxlLm1heFNjcm9sbExlZnQpLCEwKSx0LmRpc3BsYXkubWF4TGluZUNoYW5nZWQ9ITEpLGUucHJlcGFyZWRTZWxlY3Rpb24mJnQuZGlzcGxheS5pbnB1dC5zaG93U2VsZWN0aW9uKGUucHJlcGFyZWRTZWxlY3Rpb24pLGUudXBkYXRlZERpc3BsYXkmJkEodCxlLmJhck1lYXN1cmUpLChlLnVwZGF0ZWREaXNwbGF5fHxlLnN0YXJ0SGVpZ2h0IT10LmRvYy5oZWlnaHQpJiZ5KHQsZS5iYXJNZWFzdXJlKSxlLnNlbGVjdGlvbkNoYW5nZWQmJkZlKHQpLHQuc3RhdGUuZm9jdXNlZCYmZS51cGRhdGVJbnB1dCYmdC5kaXNwbGF5LmlucHV0LnJlc2V0KGUudHlwaW5nKSwhZS5mb2N1c3x8ZS5mb2N1cyE9amkoKXx8ZG9jdW1lbnQuaGFzRm9jdXMmJiFkb2N1bWVudC5oYXNGb2N1cygpfHxxKGUuY20pfWZ1bmN0aW9uIE50KGUpe3ZhciB0PWUuY20scj10LmRpc3BsYXksbj10LmRvYztpZihlLnVwZGF0ZWREaXNwbGF5JiZOKHQsZS51cGRhdGUpLG51bGw9PXIud2hlZWxTdGFydFh8fG51bGw9PWUuc2Nyb2xsVG9wJiZudWxsPT1lLnNjcm9sbExlZnQmJiFlLnNjcm9sbFRvUG9zfHwoci53aGVlbFN0YXJ0WD1yLndoZWVsU3RhcnRZPW51bGwpLG51bGw9PWUuc2Nyb2xsVG9wfHxyLnNjcm9sbGVyLnNjcm9sbFRvcD09ZS5zY3JvbGxUb3AmJiFlLmZvcmNlU2Nyb2xsfHwobi5zY3JvbGxUb3A9TWF0aC5tYXgoMCxNYXRoLm1pbihyLnNjcm9sbGVyLnNjcm9sbEhlaWdodC1yLnNjcm9sbGVyLmNsaWVudEhlaWdodCxlLnNjcm9sbFRvcCkpLHIuc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3Aobi5zY3JvbGxUb3ApLHIuc2Nyb2xsZXIuc2Nyb2xsVG9wPW4uc2Nyb2xsVG9wKSxudWxsPT1lLnNjcm9sbExlZnR8fHIuc2Nyb2xsZXIuc2Nyb2xsTGVmdD09ZS5zY3JvbGxMZWZ0JiYhZS5mb3JjZVNjcm9sbHx8KG4uc2Nyb2xsTGVmdD1NYXRoLm1heCgwLE1hdGgubWluKHIuc2Nyb2xsZXIuc2Nyb2xsV2lkdGgtWWUodCksZS5zY3JvbGxMZWZ0KSksci5zY3JvbGxiYXJzLnNldFNjcm9sbExlZnQobi5zY3JvbGxMZWZ0KSxyLnNjcm9sbGVyLnNjcm9sbExlZnQ9bi5zY3JvbGxMZWZ0LHgodCkpLGUuc2Nyb2xsVG9Qb3Mpe3ZhciBpPUhyKHQsZ2UobixlLnNjcm9sbFRvUG9zLmZyb20pLGdlKG4sZS5zY3JvbGxUb1Bvcy50byksZS5zY3JvbGxUb1Bvcy5tYXJnaW4pO2Uuc2Nyb2xsVG9Qb3MuaXNDdXJzb3ImJnQuc3RhdGUuZm9jdXNlZCYmRHIodCxpKX12YXIgbz1lLm1heWJlSGlkZGVuTWFya2VycyxsPWUubWF5YmVVbmhpZGRlbk1hcmtlcnM7aWYobylmb3IodmFyIHM9MDtzPG8ubGVuZ3RoOysrcylvW3NdLmxpbmVzLmxlbmd0aHx8RGwob1tzXSwiaGlkZSIpO2lmKGwpZm9yKHZhciBzPTA7czxsLmxlbmd0aDsrK3MpbFtzXS5saW5lcy5sZW5ndGgmJkRsKGxbc10sInVuaGlkZSIpO3Iud3JhcHBlci5vZmZzZXRIZWlnaHQmJihuLnNjcm9sbFRvcD10LmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wKSxlLmNoYW5nZU9ianMmJkRsKHQsImNoYW5nZXMiLHQsZS5jaGFuZ2VPYmpzKSxlLnVwZGF0ZSYmZS51cGRhdGUuZmluaXNoKCl9ZnVuY3Rpb24gV3QoZSx0KXtpZihlLmN1ck9wKXJldHVybiB0KCk7d3QoZSk7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtDdChlKX19ZnVuY3Rpb24gQXQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZihlLmN1ck9wKXJldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKTt3dChlKTt0cnl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfWZpbmFsbHl7Q3QoZSl9fX1mdW5jdGlvbiBPdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZih0aGlzLmN1ck9wKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3dCh0aGlzKTt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Q3QodGhpcyl9fX1mdW5jdGlvbiBEdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNtO2lmKCF0fHx0LmN1ck9wKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3dCh0KTt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Q3QodCl9fX1mdW5jdGlvbiBIdChlLHQscil7dGhpcy5saW5lPXQsdGhpcy5yZXN0PWJuKHQpLHRoaXMuc2l6ZT10aGlzLnJlc3Q/dGkoRGkodGhpcy5yZXN0KSktcisxOjEsdGhpcy5ub2RlPXRoaXMudGV4dD1udWxsLHRoaXMuaGlkZGVuPUNuKGUsdCl9ZnVuY3Rpb24gUHQoZSx0LHIpe2Zvcih2YXIgbixpPVtdLG89dDtyPm87bz1uKXt2YXIgbD1uZXcgSHQoZS5kb2MsWm4oZS5kb2Msbyksbyk7bj1vK2wuc2l6ZSxpLnB1c2gobCl9cmV0dXJuIGl9ZnVuY3Rpb24gRXQoZSx0LHIsbil7bnVsbD09dCYmKHQ9ZS5kb2MuZmlyc3QpLG51bGw9PXImJihyPWUuZG9jLmZpcnN0K2UuZG9jLnNpemUpLG58fChuPTApO3ZhciBpPWUuZGlzcGxheTtpZihuJiZyPGkudmlld1RvJiYobnVsbD09aS51cGRhdGVMaW5lTnVtYmVyc3x8aS51cGRhdGVMaW5lTnVtYmVycz50KSYmKGkudXBkYXRlTGluZU51bWJlcnM9dCksZS5jdXJPcC52aWV3Q2hhbmdlZD0hMCx0Pj1pLnZpZXdUbylJbyYmd24oZS5kb2MsdCk8aS52aWV3VG8mJnp0KGUpO2Vsc2UgaWYocjw9aS52aWV3RnJvbSlJbyYmeG4oZS5kb2MscituKT5pLnZpZXdGcm9tP3p0KGUpOihpLnZpZXdGcm9tKz1uLGkudmlld1RvKz1uKTtlbHNlIGlmKHQ8PWkudmlld0Zyb20mJnI+PWkudmlld1RvKXp0KGUpO2Vsc2UgaWYodDw9aS52aWV3RnJvbSl7dmFyIG89UnQoZSxyLHIrbiwxKTtvPyhpLnZpZXc9aS52aWV3LnNsaWNlKG8uaW5kZXgpLGkudmlld0Zyb209by5saW5lTixpLnZpZXdUbys9bik6enQoZSl9ZWxzZSBpZihyPj1pLnZpZXdUbyl7dmFyIG89UnQoZSx0LHQsLTEpO28/KGkudmlldz1pLnZpZXcuc2xpY2UoMCxvLmluZGV4KSxpLnZpZXdUbz1vLmxpbmVOKTp6dChlKX1lbHNle3ZhciBsPVJ0KGUsdCx0LC0xKSxzPVJ0KGUscixyK24sMSk7bCYmcz8oaS52aWV3PWkudmlldy5zbGljZSgwLGwuaW5kZXgpLmNvbmNhdChQdChlLGwubGluZU4scy5saW5lTikpLmNvbmNhdChpLnZpZXcuc2xpY2Uocy5pbmRleCkpLGkudmlld1RvKz1uKTp6dChlKX12YXIgYT1pLmV4dGVybmFsTWVhc3VyZWQ7YSYmKHI8YS5saW5lTj9hLmxpbmVOKz1uOnQ8YS5saW5lTithLnNpemUmJihpLmV4dGVybmFsTWVhc3VyZWQ9bnVsbCkpfWZ1bmN0aW9uIEl0KGUsdCxyKXtlLmN1ck9wLnZpZXdDaGFuZ2VkPSEwO3ZhciBuPWUuZGlzcGxheSxpPWUuZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO2lmKGkmJnQ+PWkubGluZU4mJnQ8aS5saW5lTitpLnNpemUmJihuLmV4dGVybmFsTWVhc3VyZWQ9bnVsbCksISh0PG4udmlld0Zyb218fHQ+PW4udmlld1RvKSl7dmFyIG89bi52aWV3W0Z0KGUsdCldO2lmKG51bGwhPW8ubm9kZSl7dmFyIGw9by5jaGFuZ2VzfHwoby5jaGFuZ2VzPVtdKTstMT09SGkobCxyKSYmbC5wdXNoKHIpfX19ZnVuY3Rpb24genQoZSl7ZS5kaXNwbGF5LnZpZXdGcm9tPWUuZGlzcGxheS52aWV3VG89ZS5kb2MuZmlyc3QsZS5kaXNwbGF5LnZpZXc9W10sZS5kaXNwbGF5LnZpZXdPZmZzZXQ9MH1mdW5jdGlvbiBGdChlLHQpe2lmKHQ+PWUuZGlzcGxheS52aWV3VG8pcmV0dXJuIG51bGw7aWYodC09ZS5kaXNwbGF5LnZpZXdGcm9tLDA+dClyZXR1cm4gbnVsbDtmb3IodmFyIHI9ZS5kaXNwbGF5LnZpZXcsbj0wO248ci5sZW5ndGg7bisrKWlmKHQtPXJbbl0uc2l6ZSwwPnQpcmV0dXJuIG59ZnVuY3Rpb24gUnQoZSx0LHIsbil7dmFyIGksbz1GdChlLHQpLGw9ZS5kaXNwbGF5LnZpZXc7aWYoIUlvfHxyPT1lLmRvYy5maXJzdCtlLmRvYy5zaXplKXJldHVybntpbmRleDpvLGxpbmVOOnJ9O2Zvcih2YXIgcz0wLGE9ZS5kaXNwbGF5LnZpZXdGcm9tO28+cztzKyspYSs9bFtzXS5zaXplO2lmKGEhPXQpe2lmKG4+MCl7aWYobz09bC5sZW5ndGgtMSlyZXR1cm4gbnVsbDtpPWErbFtvXS5zaXplLXQsbysrfWVsc2UgaT1hLXQ7dCs9aSxyKz1pfWZvcig7d24oZS5kb2MscikhPXI7KXtpZihvPT0oMD5uPzA6bC5sZW5ndGgtMSkpcmV0dXJuIG51bGw7cis9bipsW28tKDA+bj8xOjApXS5zaXplLG8rPW59cmV0dXJue2luZGV4Om8sbGluZU46cn19ZnVuY3Rpb24gQnQoZSx0LHIpe3ZhciBuPWUuZGlzcGxheSxpPW4udmlldzswPT1pLmxlbmd0aHx8dD49bi52aWV3VG98fHI8PW4udmlld0Zyb20/KG4udmlldz1QdChlLHQsciksbi52aWV3RnJvbT10KToobi52aWV3RnJvbT50P24udmlldz1QdChlLHQsbi52aWV3RnJvbSkuY29uY2F0KG4udmlldyk6bi52aWV3RnJvbTx0JiYobi52aWV3PW4udmlldy5zbGljZShGdChlLHQpKSksbi52aWV3RnJvbT10LG4udmlld1RvPHI/bi52aWV3PW4udmlldy5jb25jYXQoUHQoZSxuLnZpZXdUbyxyKSk6bi52aWV3VG8+ciYmKG4udmlldz1uLnZpZXcuc2xpY2UoMCxGdChlLHIpKSkpLG4udmlld1RvPXJ9ZnVuY3Rpb24gR3QoZSl7Zm9yKHZhciB0PWUuZGlzcGxheS52aWV3LHI9MCxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aS5oaWRkZW58fGkubm9kZSYmIWkuY2hhbmdlc3x8KytyfXJldHVybiByfWZ1bmN0aW9uIFV0KGUpe2Z1bmN0aW9uIHQoKXtpLmFjdGl2ZVRvdWNoJiYobz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5hY3RpdmVUb3VjaD1udWxsfSwxZTMpLGw9aS5hY3RpdmVUb3VjaCxsLmVuZD0rbmV3IERhdGUpfWZ1bmN0aW9uIHIoZSl7aWYoMSE9ZS50b3VjaGVzLmxlbmd0aClyZXR1cm4hMTt2YXIgdD1lLnRvdWNoZXNbMF07cmV0dXJuIHQucmFkaXVzWDw9MSYmdC5yYWRpdXNZPD0xfWZ1bmN0aW9uIG4oZSx0KXtpZihudWxsPT10LmxlZnQpcmV0dXJuITA7dmFyIHI9dC5sZWZ0LWUubGVmdCxuPXQudG9wLWUudG9wO3JldHVybiByKnIrbipuPjQwMH12YXIgaT1lLmRpc3BsYXk7V2woaS5zY3JvbGxlciwibW91c2Vkb3duIixBdChlLFl0KSksYm8mJjExPndvP1dsKGkuc2Nyb2xsZXIsImRibGNsaWNrIixBdChlLGZ1bmN0aW9uKHQpe2lmKCFraShlLHQpKXt2YXIgcj1YdChlLHQpO2lmKHImJiFRdChlLHQpJiYhanQoZS5kaXNwbGF5LHQpKXtrbCh0KTt2YXIgbj1lLmZpbmRXb3JkQXQocik7d2UoZS5kb2Msbi5hbmNob3Isbi5oZWFkKX19fSkpOldsKGkuc2Nyb2xsZXIsImRibGNsaWNrIixmdW5jdGlvbih0KXtraShlLHQpfHxrbCh0KX0pLFBvfHxXbChpLnNjcm9sbGVyLCJjb250ZXh0bWVudSIsZnVuY3Rpb24odCl7eXIoZSx0KX0pO3ZhciBvLGw9e2VuZDowfTtXbChpLnNjcm9sbGVyLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihlKXtpZighcihlKSl7Y2xlYXJUaW1lb3V0KG8pO3ZhciB0PStuZXcgRGF0ZTtpLmFjdGl2ZVRvdWNoPXtzdGFydDp0LG1vdmVkOiExLHByZXY6dC1sLmVuZDw9MzAwP2w6bnVsbH0sMT09ZS50b3VjaGVzLmxlbmd0aCYmKGkuYWN0aXZlVG91Y2gubGVmdD1lLnRvdWNoZXNbMF0ucGFnZVgsaS5hY3RpdmVUb3VjaC50b3A9ZS50b3VjaGVzWzBdLnBhZ2VZKX19KSxXbChpLnNjcm9sbGVyLCJ0b3VjaG1vdmUiLGZ1bmN0aW9uKCl7aS5hY3RpdmVUb3VjaCYmKGkuYWN0aXZlVG91Y2gubW92ZWQ9ITApfSksV2woaS5zY3JvbGxlciwidG91Y2hlbmQiLGZ1bmN0aW9uKHIpe3ZhciBvPWkuYWN0aXZlVG91Y2g7aWYobyYmIWp0KGkscikmJm51bGwhPW8ubGVmdCYmIW8ubW92ZWQmJm5ldyBEYXRlLW8uc3RhcnQ8MzAwKXt2YXIgbCxzPWUuY29vcmRzQ2hhcihpLmFjdGl2ZVRvdWNoLCJwYWdlIik7bD0hby5wcmV2fHxuKG8sby5wcmV2KT9uZXcgaGUocyxzKTohby5wcmV2LnByZXZ8fG4obyxvLnByZXYucHJldik/ZS5maW5kV29yZEF0KHMpOm5ldyBoZSh6byhzLmxpbmUsMCksZ2UoZS5kb2Msem8ocy5saW5lKzEsMCkpKSxlLnNldFNlbGVjdGlvbihsLmFuY2hvcixsLmhlYWQpLGUuZm9jdXMoKSxrbChyKX10KCl9KSxXbChpLnNjcm9sbGVyLCJ0b3VjaGNhbmNlbCIsdCksV2woaS5zY3JvbGxlciwic2Nyb2xsIixmdW5jdGlvbigpe2kuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0JiYobnIoZSxpLnNjcm9sbGVyLnNjcm9sbFRvcCksaXIoZSxpLnNjcm9sbGVyLnNjcm9sbExlZnQsITApLERsKGUsInNjcm9sbCIsZSkpfSksV2woaS5zY3JvbGxlciwibW91c2V3aGVlbCIsZnVuY3Rpb24odCl7b3IoZSx0KX0pLFdsKGkuc2Nyb2xsZXIsIkRPTU1vdXNlU2Nyb2xsIixmdW5jdGlvbih0KXtvcihlLHQpfSksV2woaS53cmFwcGVyLCJzY3JvbGwiLGZ1bmN0aW9uKCl7aS53cmFwcGVyLnNjcm9sbFRvcD1pLndyYXBwZXIuc2Nyb2xsTGVmdD0wfSksaS5kcmFnRnVuY3Rpb25zPXtlbnRlcjpmdW5jdGlvbih0KXtraShlLHQpfHxObCh0KX0sb3ZlcjpmdW5jdGlvbih0KXtraShlLHQpfHwodHIoZSx0KSxObCh0KSl9LHN0YXJ0OmZ1bmN0aW9uKHQpe2VyKGUsdCl9LGRyb3A6QXQoZSxKdCksbGVhdmU6ZnVuY3Rpb24oKXtycihlKX19O3ZhciBzPWkuaW5wdXQuZ2V0RmllbGQoKTtXbChzLCJrZXl1cCIsZnVuY3Rpb24odCl7ZHIuY2FsbChlLHQpfSksV2wocywia2V5ZG93biIsQXQoZSxocikpLFdsKHMsImtleXByZXNzIixBdChlLHByKSksV2wocywiZm9jdXMiLEZpKHZyLGUpKSxXbChzLCJibHVyIixGaShtcixlKSl9ZnVuY3Rpb24gVnQodCxyLG4pe3ZhciBpPW4mJm4hPWUuSW5pdDtpZighciE9IWkpe3ZhciBvPXQuZGlzcGxheS5kcmFnRnVuY3Rpb25zLGw9cj9XbDpPbDtsKHQuZGlzcGxheS5zY3JvbGxlciwiZHJhZ3N0YXJ0IixvLnN0YXJ0KSxsKHQuZGlzcGxheS5zY3JvbGxlciwiZHJhZ2VudGVyIixvLmVudGVyKSxsKHQuZGlzcGxheS5zY3JvbGxlciwiZHJhZ292ZXIiLG8ub3ZlciksbCh0LmRpc3BsYXkuc2Nyb2xsZXIsImRyYWdsZWF2ZSIsby5sZWF2ZSksbCh0LmRpc3BsYXkuc2Nyb2xsZXIsImRyb3AiLG8uZHJvcCl9fWZ1bmN0aW9uIEt0KGUpe3ZhciB0PWUuZGlzcGxheTsodC5sYXN0V3JhcEhlaWdodCE9dC53cmFwcGVyLmNsaWVudEhlaWdodHx8dC5sYXN0V3JhcFdpZHRoIT10LndyYXBwZXIuY2xpZW50V2lkdGgpJiYodC5jYWNoZWRDaGFyV2lkdGg9dC5jYWNoZWRUZXh0SGVpZ2h0PXQuY2FjaGVkUGFkZGluZ0g9bnVsbCx0LnNjcm9sbGJhcnNDbGlwcGVkPSExLGUuc2V0U2l6ZSgpKX1mdW5jdGlvbiBqdChlLHQpe2Zvcih2YXIgcj14aSh0KTtyIT1lLndyYXBwZXI7cj1yLnBhcmVudE5vZGUpaWYoIXJ8fDE9PXIubm9kZVR5cGUmJiJ0cnVlIj09ci5nZXRBdHRyaWJ1dGUoImNtLWlnbm9yZS1ldmVudHMiKXx8ci5wYXJlbnROb2RlPT1lLnNpemVyJiZyIT1lLm1vdmVyKXJldHVybiEwfWZ1bmN0aW9uIFh0KGUsdCxyLG4pe3ZhciBpPWUuZGlzcGxheTtpZighciYmInRydWUiPT14aSh0KS5nZXRBdHRyaWJ1dGUoImNtLW5vdC1jb250ZW50IikpcmV0dXJuIG51bGw7dmFyIG8sbCxzPWkubGluZVNwYWNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RyeXtvPXQuY2xpZW50WC1zLmxlZnQsbD10LmNsaWVudFktcy50b3B9Y2F0Y2godCl7cmV0dXJuIG51bGx9dmFyIGEsdT12dChlLG8sbCk7aWYobiYmMT09dS54UmVsJiYoYT1abihlLmRvYyx1LmxpbmUpLnRleHQpLmxlbmd0aD09dS5jaCl7dmFyIGM9UmwoYSxhLmxlbmd0aCxlLm9wdGlvbnMudGFiU2l6ZSktYS5sZW5ndGg7dT16byh1LmxpbmUsTWF0aC5tYXgoMCxNYXRoLnJvdW5kKChvLWplKGUuZGlzcGxheSkubGVmdCkvYnQoZS5kaXNwbGF5KSktYykpfXJldHVybiB1fWZ1bmN0aW9uIFl0KGUpe3ZhciB0PXRoaXMscj10LmRpc3BsYXk7aWYoIShyLmFjdGl2ZVRvdWNoJiZyLmlucHV0LnN1cHBvcnRzVG91Y2goKXx8a2kodCxlKSkpe2lmKHIuc2hpZnQ9ZS5zaGlmdEtleSxqdChyLGUpKXJldHVybiB2b2lkKHhvfHwoci5zY3JvbGxlci5kcmFnZ2FibGU9ITEsc2V0VGltZW91dChmdW5jdGlvbigpe3Iuc2Nyb2xsZXIuZHJhZ2dhYmxlPSEwfSwxMDApKSk7aWYoIVF0KHQsZSkpe3ZhciBuPVh0KHQsZSk7c3dpdGNoKHdpbmRvdy5mb2N1cygpLENpKGUpKXtjYXNlIDE6dC5zdGF0ZS5zZWxlY3RpbmdUZXh0P3Quc3RhdGUuc2VsZWN0aW5nVGV4dChlKTpuP190KHQsZSxuKTp4aShlKT09ci5zY3JvbGxlciYma2woZSk7YnJlYWs7Y2FzZSAyOnhvJiYodC5zdGF0ZS5sYXN0TWlkZGxlRG93bj0rbmV3IERhdGUpLG4mJndlKHQuZG9jLG4pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyLmlucHV0LmZvY3VzKCl9LDIwKSxrbChlKTticmVhaztjYXNlIDM6UG8/eXIodCxlKTpncih0KX19fX1mdW5jdGlvbiBfdChlLHQscil7Ym8/c2V0VGltZW91dChGaShxLGUpLDApOmUuY3VyT3AuZm9jdXM9amkoKTt2YXIgbixpPStuZXcgRGF0ZTtVbyYmVW8udGltZT5pLTQwMCYmMD09Rm8oVW8ucG9zLHIpP249InRyaXBsZSI6R28mJkdvLnRpbWU+aS00MDAmJjA9PUZvKEdvLnBvcyxyKT8obj0iZG91YmxlIixVbz17dGltZTppLHBvczpyfSk6KG49InNpbmdsZSIsR289e3RpbWU6aSxwb3M6cn0pO3ZhciBvLGw9ZS5kb2Muc2VsLHM9QW8/dC5tZXRhS2V5OnQuY3RybEtleTtlLm9wdGlvbnMuZHJhZ0Ryb3AmJkpsJiYhZS5pc1JlYWRPbmx5KCkmJiJzaW5nbGUiPT1uJiYobz1sLmNvbnRhaW5zKHIpKT4tMSYmKEZvKChvPWwucmFuZ2VzW29dKS5mcm9tKCkscik8MHx8ci54UmVsPjApJiYoRm8oby50bygpLHIpPjB8fHIueFJlbDwwKT8kdChlLHQscixzKTpxdChlLHQscixuLHMpfWZ1bmN0aW9uICR0KGUsdCxyLG4pe3ZhciBpPWUuZGlzcGxheSxvPStuZXcgRGF0ZSxsPUF0KGUsZnVuY3Rpb24ocyl7eG8mJihpLnNjcm9sbGVyLmRyYWdnYWJsZT0hMSksZS5zdGF0ZS5kcmFnZ2luZ1RleHQ9ITEsT2woZG9jdW1lbnQsIm1vdXNldXAiLGwpLE9sKGkuc2Nyb2xsZXIsImRyb3AiLGwpLE1hdGguYWJzKHQuY2xpZW50WC1zLmNsaWVudFgpK01hdGguYWJzKHQuY2xpZW50WS1zLmNsaWVudFkpPDEwJiYoa2wocyksIW4mJituZXcgRGF0ZS0yMDA8byYmd2UoZS5kb2MscikseG98fGJvJiY5PT13bz9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5mb2N1cygpLGkuaW5wdXQuZm9jdXMoKX0sMjApOmkuaW5wdXQuZm9jdXMoKSl9KTt4byYmKGkuc2Nyb2xsZXIuZHJhZ2dhYmxlPSEwKSxlLnN0YXRlLmRyYWdnaW5nVGV4dD1sLGkuc2Nyb2xsZXIuZHJhZ0Ryb3AmJmkuc2Nyb2xsZXIuZHJhZ0Ryb3AoKSxXbChkb2N1bWVudCwibW91c2V1cCIsbCksV2woaS5zY3JvbGxlciwiZHJvcCIsbCl9ZnVuY3Rpb24gcXQoZSx0LHIsbixpKXtmdW5jdGlvbiBvKHQpe2lmKDAhPUZvKHYsdCkpaWYodj10LCJyZWN0Ij09bil7Zm9yKHZhciBpPVtdLG89ZS5vcHRpb25zLnRhYlNpemUsbD1SbChabih1LHIubGluZSkudGV4dCxyLmNoLG8pLHM9UmwoWm4odSx0LmxpbmUpLnRleHQsdC5jaCxvKSxhPU1hdGgubWluKGwscyksZD1NYXRoLm1heChsLHMpLHA9TWF0aC5taW4oci5saW5lLHQubGluZSksZz1NYXRoLm1pbihlLmxhc3RMaW5lKCksTWF0aC5tYXgoci5saW5lLHQubGluZSkpO2c+PXA7cCsrKXt2YXIgbT1abih1LHApLnRleHQseT1CbChtLGEsbyk7YT09ZD9pLnB1c2gobmV3IGhlKHpvKHAseSksem8ocCx5KSkpOm0ubGVuZ3RoPnkmJmkucHVzaChuZXcgaGUoem8ocCx5KSx6byhwLEJsKG0sZCxvKSkpKX1pLmxlbmd0aHx8aS5wdXNoKG5ldyBoZShyLHIpKSxrZSh1LGZlKGYucmFuZ2VzLnNsaWNlKDAsaCkuY29uY2F0KGkpLGgpLHtvcmlnaW46Iiptb3VzZSIsc2Nyb2xsOiExfSksZS5zY3JvbGxJbnRvVmlldyh0KX1lbHNle3ZhciBiPWMsdz1iLmFuY2hvcix4PXQ7aWYoInNpbmdsZSIhPW4pe2lmKCJkb3VibGUiPT1uKXZhciBDPWUuZmluZFdvcmRBdCh0KTtlbHNlIHZhciBDPW5ldyBoZSh6byh0LmxpbmUsMCksZ2UodSx6byh0LmxpbmUrMSwwKSkpO0ZvKEMuYW5jaG9yLHcpPjA/KHg9Qy5oZWFkLHc9JChiLmZyb20oKSxDLmFuY2hvcikpOih4PUMuYW5jaG9yLHc9XyhiLnRvKCksQy5oZWFkKSl9dmFyIGk9Zi5yYW5nZXMuc2xpY2UoMCk7aVtoXT1uZXcgaGUoZ2UodSx3KSx4KSxrZSh1LGZlKGksaCksemwpfX1mdW5jdGlvbiBsKHQpe3ZhciByPSsreSxpPVh0KGUsdCwhMCwicmVjdCI9PW4pO2lmKGkpaWYoMCE9Rm8oaSx2KSl7ZS5jdXJPcC5mb2N1cz1qaSgpLG8oaSk7dmFyIHM9dyhhLHUpOyhpLmxpbmU+PXMudG98fGkubGluZTxzLmZyb20pJiZzZXRUaW1lb3V0KEF0KGUsZnVuY3Rpb24oKXt5PT1yJiZsKHQpfSksMTUwKX1lbHNle3ZhciBjPXQuY2xpZW50WTxtLnRvcD8tMjA6dC5jbGllbnRZPm0uYm90dG9tPzIwOjA7YyYmc2V0VGltZW91dChBdChlLGZ1bmN0aW9uKCl7eT09ciYmKGEuc2Nyb2xsZXIuc2Nyb2xsVG9wKz1jLGwodCkpfSksNTApfX1mdW5jdGlvbiBzKHQpe2Uuc3RhdGUuc2VsZWN0aW5nVGV4dD0hMSx5PTEvMCxrbCh0KSxhLmlucHV0LmZvY3VzKCksT2woZG9jdW1lbnQsIm1vdXNlbW92ZSIsYiksT2woZG9jdW1lbnQsIm1vdXNldXAiLHgpLHUuaGlzdG9yeS5sYXN0U2VsT3JpZ2luPW51bGx9dmFyIGE9ZS5kaXNwbGF5LHU9ZS5kb2M7a2wodCk7dmFyIGMsaCxmPXUuc2VsLGQ9Zi5yYW5nZXM7aWYoaSYmIXQuc2hpZnRLZXk/KGg9dS5zZWwuY29udGFpbnMociksYz1oPi0xP2RbaF06bmV3IGhlKHIscikpOihjPXUuc2VsLnByaW1hcnkoKSxoPXUuc2VsLnByaW1JbmRleCksdC5hbHRLZXkpbj0icmVjdCIsaXx8KGM9bmV3IGhlKHIscikpLHI9WHQoZSx0LCEwLCEwKSxoPS0xO2Vsc2UgaWYoImRvdWJsZSI9PW4pe3ZhciBwPWUuZmluZFdvcmRBdChyKTtjPWUuZGlzcGxheS5zaGlmdHx8dS5leHRlbmQ/YmUodSxjLHAuYW5jaG9yLHAuaGVhZCk6cH1lbHNlIGlmKCJ0cmlwbGUiPT1uKXt2YXIgZz1uZXcgaGUoem8oci5saW5lLDApLGdlKHUsem8oci5saW5lKzEsMCkpKTtjPWUuZGlzcGxheS5zaGlmdHx8dS5leHRlbmQ/YmUodSxjLGcuYW5jaG9yLGcuaGVhZCk6Z31lbHNlIGM9YmUodSxjLHIpO2k/LTE9PWg/KGg9ZC5sZW5ndGgsa2UodSxmZShkLmNvbmNhdChbY10pLGgpLHtzY3JvbGw6ITEsb3JpZ2luOiIqbW91c2UifSkpOmQubGVuZ3RoPjEmJmRbaF0uZW1wdHkoKSYmInNpbmdsZSI9PW4mJiF0LnNoaWZ0S2V5PyhrZSh1LGZlKGQuc2xpY2UoMCxoKS5jb25jYXQoZC5zbGljZShoKzEpKSwwKSx7c2Nyb2xsOiExLG9yaWdpbjoiKm1vdXNlIn0pLGY9dS5zZWwpOkNlKHUsaCxjLHpsKTooaD0wLGtlKHUsbmV3IGNlKFtjXSwwKSx6bCksZj11LnNlbCk7dmFyIHY9cixtPWEud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx5PTAsYj1BdChlLGZ1bmN0aW9uKGUpe0NpKGUpP2woZSk6cyhlKX0pLHg9QXQoZSxzKTtlLnN0YXRlLnNlbGVjdGluZ1RleHQ9eCxXbChkb2N1bWVudCwibW91c2Vtb3ZlIixiKSxXbChkb2N1bWVudCwibW91c2V1cCIseCl9ZnVuY3Rpb24gWnQoZSx0LHIsbil7dHJ5e3ZhciBpPXQuY2xpZW50WCxvPXQuY2xpZW50WX1jYXRjaCh0KXtyZXR1cm4hMX1pZihpPj1NYXRoLmZsb29yKGUuZGlzcGxheS5ndXR0ZXJzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSlyZXR1cm4hMTtuJiZrbCh0KTt2YXIgbD1lLmRpc3BsYXkscz1sLmxpbmVEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYobz5zLmJvdHRvbXx8IU5pKGUscikpcmV0dXJuIHdpKHQpO28tPXMudG9wLWwudmlld09mZnNldDtmb3IodmFyIGE9MDthPGUub3B0aW9ucy5ndXR0ZXJzLmxlbmd0aDsrK2Epe3ZhciB1PWwuZ3V0dGVycy5jaGlsZE5vZGVzW2FdO2lmKHUmJnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQ+PWkpe3ZhciBjPXJpKGUuZG9jLG8pLGg9ZS5vcHRpb25zLmd1dHRlcnNbYV07cmV0dXJuIERsKGUscixlLGMsaCx0KSx3aSh0KX19fWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIFp0KGUsdCwiZ3V0dGVyQ2xpY2siLCEwKX1mdW5jdGlvbiBKdChlKXt2YXIgdD10aGlzO2lmKHJyKHQpLCFraSh0LGUpJiYhanQodC5kaXNwbGF5LGUpKXtrbChlKSxibyYmKFhvPStuZXcgRGF0ZSk7dmFyIHI9WHQodCxlLCEwKSxuPWUuZGF0YVRyYW5zZmVyLmZpbGVzO2lmKHImJiF0LmlzUmVhZE9ubHkoKSlpZihuJiZuLmxlbmd0aCYmd2luZG93LkZpbGVSZWFkZXImJndpbmRvdy5GaWxlKWZvcih2YXIgaT1uLmxlbmd0aCxvPUFycmF5KGkpLGw9MCxzPWZ1bmN0aW9uKGUsbil7aWYoIXQub3B0aW9ucy5hbGxvd0Ryb3BGaWxlVHlwZXN8fC0xIT1IaSh0Lm9wdGlvbnMuYWxsb3dEcm9wRmlsZVR5cGVzLGUudHlwZSkpe3ZhciBzPW5ldyBGaWxlUmVhZGVyO3Mub25sb2FkPUF0KHQsZnVuY3Rpb24oKXt2YXIgZT1zLnJlc3VsdDtpZigvW1x4MDAtXHgwOFx4MGUtXHgxZl17Mn0vLnRlc3QoZSkmJihlPSIiKSxvW25dPWUsKytsPT1pKXtyPWdlKHQuZG9jLHIpO3ZhciBhPXtmcm9tOnIsdG86cix0ZXh0OnQuZG9jLnNwbGl0TGluZXMoby5qb2luKHQuZG9jLmxpbmVTZXBhcmF0b3IoKSkpLG9yaWdpbjoicGFzdGUifTtUcih0LmRvYyxhKSxUZSh0LmRvYyxkZShyLFFvKGEpKSl9fSkscy5yZWFkQXNUZXh0KGUpfX0sYT0wO2k+YTsrK2EpcyhuW2FdLGEpO2Vsc2V7aWYodC5zdGF0ZS5kcmFnZ2luZ1RleHQmJnQuZG9jLnNlbC5jb250YWlucyhyKT4tMSlyZXR1cm4gdC5zdGF0ZS5kcmFnZ2luZ1RleHQoZSksdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5kaXNwbGF5LmlucHV0LmZvY3VzKCl9LDIwKTt0cnl7dmFyIG89ZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgiVGV4dCIpO2lmKG8pe2lmKHQuc3RhdGUuZHJhZ2dpbmdUZXh0JiYhKEFvP2UuYWx0S2V5OmUuY3RybEtleSkpdmFyIHU9dC5saXN0U2VsZWN0aW9ucygpO2lmKE1lKHQuZG9jLGRlKHIscikpLHUpZm9yKHZhciBhPTA7YTx1Lmxlbmd0aDsrK2EpT3IodC5kb2MsIiIsdVthXS5hbmNob3IsdVthXS5oZWFkLCJkcmFnIik7dC5yZXBsYWNlU2VsZWN0aW9uKG8sImFyb3VuZCIsInBhc3RlIiksdC5kaXNwbGF5LmlucHV0LmZvY3VzKCl9fWNhdGNoKGUpe319fX1mdW5jdGlvbiBlcihlLHQpe2lmKGJvJiYoIWUuc3RhdGUuZHJhZ2dpbmdUZXh0fHwrbmV3IERhdGUtWG88MTAwKSlyZXR1cm4gdm9pZCBObCh0KTtpZigha2koZSx0KSYmIWp0KGUuZGlzcGxheSx0KSYmKHQuZGF0YVRyYW5zZmVyLnNldERhdGEoIlRleHQiLGUuZ2V0U2VsZWN0aW9uKCkpLHQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZSYmIVRvKSl7dmFyIHI9VWkoImltZyIsbnVsbCxudWxsLCJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHRvcDogMDsiKTtyLnNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBQUFBQ0g1QkFFS0FBRUFMQUFBQUFBQkFBRUFBQUlDVEFFQU93PT0iLExvJiYoci53aWR0aD1yLmhlaWdodD0xLGUuZGlzcGxheS53cmFwcGVyLmFwcGVuZENoaWxkKHIpLHIuX3RvcD1yLm9mZnNldFRvcCksdC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKHIsMCwwKSxMbyYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiB0cihlLHQpe3ZhciByPVh0KGUsdCk7aWYocil7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO0llKGUscixuKSxlLmRpc3BsYXkuZHJhZ0N1cnNvcnx8KGUuZGlzcGxheS5kcmFnQ3Vyc29yPVVpKCJkaXYiLG51bGwsIkNvZGVNaXJyb3ItY3Vyc29ycyBDb2RlTWlycm9yLWRyYWdjdXJzb3JzIiksZS5kaXNwbGF5LmxpbmVTcGFjZS5pbnNlcnRCZWZvcmUoZS5kaXNwbGF5LmRyYWdDdXJzb3IsZS5kaXNwbGF5LmN1cnNvckRpdikpLEtpKGUuZGlzcGxheS5kcmFnQ3Vyc29yLG4pfX1mdW5jdGlvbiBycihlKXtlLmRpc3BsYXkuZHJhZ0N1cnNvciYmKGUuZGlzcGxheS5saW5lU3BhY2UucmVtb3ZlQ2hpbGQoZS5kaXNwbGF5LmRyYWdDdXJzb3IpLGUuZGlzcGxheS5kcmFnQ3Vyc29yPW51bGwpfWZ1bmN0aW9uIG5yKGUsdCl7TWF0aC5hYnMoZS5kb2Muc2Nyb2xsVG9wLXQpPDJ8fChlLmRvYy5zY3JvbGxUb3A9dCx2b3x8VyhlLHt0b3A6dH0pLGUuZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AhPXQmJihlLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wPXQpLGUuZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbFRvcCh0KSx2byYmVyhlKSxSZShlLDEwMCkpfWZ1bmN0aW9uIGlyKGUsdCxyKXsocj90PT1lLmRvYy5zY3JvbGxMZWZ0Ok1hdGguYWJzKGUuZG9jLnNjcm9sbExlZnQtdCk8Mil8fCh0PU1hdGgubWluKHQsZS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFdpZHRoLWUuZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCksZS5kb2Muc2Nyb2xsTGVmdD10LHgoZSksZS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQhPXQmJihlLmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdD10KSxlLmRpc3BsYXkuc2Nyb2xsYmFycy5zZXRTY3JvbGxMZWZ0KHQpKX1mdW5jdGlvbiBvcihlLHQpe3ZhciByPSRvKHQpLG49ci54LGk9ci55LG89ZS5kaXNwbGF5LGw9by5zY3JvbGxlcixzPWwuc2Nyb2xsV2lkdGg+bC5jbGllbnRXaWR0aCxhPWwuc2Nyb2xsSGVpZ2h0PmwuY2xpZW50SGVpZ2h0O2lmKG4mJnN8fGkmJmEpe2lmKGkmJkFvJiZ4byllOmZvcih2YXIgdT10LnRhcmdldCxjPW8udmlldzt1IT1sO3U9dS5wYXJlbnROb2RlKWZvcih2YXIgaD0wO2g8Yy5sZW5ndGg7aCsrKWlmKGNbaF0ubm9kZT09dSl7ZS5kaXNwbGF5LmN1cnJlbnRXaGVlbFRhcmdldD11O2JyZWFrIGV9aWYobiYmIXZvJiYhTG8mJm51bGwhPV9vKXJldHVybiBpJiZhJiZucihlLE1hdGgubWF4KDAsTWF0aC5taW4obC5zY3JvbGxUb3AraSpfbyxsLnNjcm9sbEhlaWdodC1sLmNsaWVudEhlaWdodCkpKSxpcihlLE1hdGgubWF4KDAsTWF0aC5taW4obC5zY3JvbGxMZWZ0K24qX28sbC5zY3JvbGxXaWR0aC1sLmNsaWVudFdpZHRoKSkpLCghaXx8aSYmYSkmJmtsKHQpLHZvaWQoby53aGVlbFN0YXJ0WD1udWxsKTtpZihpJiZudWxsIT1fbyl7dmFyIGY9aSpfbyxkPWUuZG9jLnNjcm9sbFRvcCxwPWQrby53cmFwcGVyLmNsaWVudEhlaWdodDswPmY/ZD1NYXRoLm1heCgwLGQrZi01MCk6cD1NYXRoLm1pbihlLmRvYy5oZWlnaHQscCtmKzUwKSxXKGUse3RvcDpkLGJvdHRvbTpwfSl9MjA+WW8mJihudWxsPT1vLndoZWVsU3RhcnRYPyhvLndoZWVsU3RhcnRYPWwuc2Nyb2xsTGVmdCxvLndoZWVsU3RhcnRZPWwuc2Nyb2xsVG9wLG8ud2hlZWxEWD1uLG8ud2hlZWxEWT1pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihudWxsIT1vLndoZWVsU3RhcnRYKXt2YXIgZT1sLnNjcm9sbExlZnQtby53aGVlbFN0YXJ0WCx0PWwuc2Nyb2xsVG9wLW8ud2hlZWxTdGFydFkscj10JiZvLndoZWVsRFkmJnQvby53aGVlbERZfHxlJiZvLndoZWVsRFgmJmUvby53aGVlbERYO28ud2hlZWxTdGFydFg9by53aGVlbFN0YXJ0WT1udWxsLHImJihfbz0oX28qWW8rcikvKFlvKzEpLCsrWW8pfX0sMjAwKSk6KG8ud2hlZWxEWCs9bixvLndoZWVsRFkrPWkpKX19ZnVuY3Rpb24gbHIoZSx0LHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dWxbdF0sIXQpKXJldHVybiExO2UuZGlzcGxheS5pbnB1dC5lbnN1cmVQb2xsZWQoKTt2YXIgbj1lLmRpc3BsYXkuc2hpZnQsaT0hMTt0cnl7ZS5pc1JlYWRPbmx5KCkmJihlLnN0YXRlLnN1cHByZXNzRWRpdHM9ITApLHImJihlLmRpc3BsYXkuc2hpZnQ9ITEpLGk9dChlKSE9RWx9ZmluYWxseXtlLmRpc3BsYXkuc2hpZnQ9bixlLnN0YXRlLnN1cHByZXNzRWRpdHM9ITF9cmV0dXJuIGl9ZnVuY3Rpb24gc3IoZSx0LHIpe2Zvcih2YXIgbj0wO248ZS5zdGF0ZS5rZXlNYXBzLmxlbmd0aDtuKyspe3ZhciBpPWhsKHQsZS5zdGF0ZS5rZXlNYXBzW25dLHIsZSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gZS5vcHRpb25zLmV4dHJhS2V5cyYmaGwodCxlLm9wdGlvbnMuZXh0cmFLZXlzLHIsZSl8fGhsKHQsZS5vcHRpb25zLmtleU1hcCxyLGUpfWZ1bmN0aW9uIGFyKGUsdCxyLG4pe3ZhciBpPWUuc3RhdGUua2V5U2VxO2lmKGkpe2lmKGZsKHQpKXJldHVybiJoYW5kbGVkIjtxby5zZXQoNTAsZnVuY3Rpb24oKXtlLnN0YXRlLmtleVNlcT09aSYmKGUuc3RhdGUua2V5U2VxPW51bGwsZS5kaXNwbGF5LmlucHV0LnJlc2V0KCkpfSksdD1pKyIgIit0fXZhciBvPXNyKGUsdCxuKTtyZXR1cm4ibXVsdGkiPT1vJiYoZS5zdGF0ZS5rZXlTZXE9dCksImhhbmRsZWQiPT1vJiZMaShlLCJrZXlIYW5kbGVkIixlLHQsciksKCJoYW5kbGVkIj09b3x8Im11bHRpIj09bykmJihrbChyKSxGZShlKSksaSYmIW8mJi9cJyQvLnRlc3QodCk/KGtsKHIpLCEwKTohIW99ZnVuY3Rpb24gdXIoZSx0KXt2YXIgcj1kbCh0LCEwKTtyZXR1cm4gcj90LnNoaWZ0S2V5JiYhZS5zdGF0ZS5rZXlTZXE/YXIoZSwiU2hpZnQtIityLHQsZnVuY3Rpb24odCl7cmV0dXJuIGxyKGUsdCwhMCl9KXx8YXIoZSxyLHQsZnVuY3Rpb24odCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgdD8vXmdvW0EtWl0vLnRlc3QodCk6dC5tb3Rpb24pP2xyKGUsdCk6dm9pZCAwfSk6YXIoZSxyLHQsZnVuY3Rpb24odCl7cmV0dXJuIGxyKGUsdCl9KTohMX1mdW5jdGlvbiBjcihlLHQscil7cmV0dXJuIGFyKGUsIiciK3IrIiciLHQsZnVuY3Rpb24odCl7cmV0dXJuIGxyKGUsdCwhMCl9KX1mdW5jdGlvbiBocihlKXt2YXIgdD10aGlzO2lmKHQuY3VyT3AuZm9jdXM9amkoKSwha2kodCxlKSl7Ym8mJjExPndvJiYyNz09ZS5rZXlDb2RlJiYoZS5yZXR1cm5WYWx1ZT0hMSk7dmFyIHI9ZS5rZXlDb2RlO3QuZGlzcGxheS5zaGlmdD0xNj09cnx8ZS5zaGlmdEtleTt2YXIgbj11cih0LGUpO0xvJiYoWm89bj9yOm51bGwsIW4mJjg4PT1yJiYhcnMmJihBbz9lLm1ldGFLZXk6ZS5jdHJsS2V5KSYmdC5yZXBsYWNlU2VsZWN0aW9uKCIiLG51bGwsImN1dCIpKSwxOCE9cnx8L1xiQ29kZU1pcnJvci1jcm9zc2hhaXJcYi8udGVzdCh0LmRpc3BsYXkubGluZURpdi5jbGFzc05hbWUpfHxmcih0KX19ZnVuY3Rpb24gZnIoZSl7ZnVuY3Rpb24gdChlKXsxOCE9ZS5rZXlDb2RlJiZlLmFsdEtleXx8KHFsKHIsIkNvZGVNaXJyb3ItY3Jvc3NoYWlyIiksT2woZG9jdW1lbnQsImtleXVwIix0KSxPbChkb2N1bWVudCwibW91c2VvdmVyIix0KSl9dmFyIHI9ZS5kaXNwbGF5LmxpbmVEaXY7WmwociwiQ29kZU1pcnJvci1jcm9zc2hhaXIiKSxXbChkb2N1bWVudCwia2V5dXAiLHQpLFdsKGRvY3VtZW50LCJtb3VzZW92ZXIiLHQpfWZ1bmN0aW9uIGRyKGUpezE2PT1lLmtleUNvZGUmJih0aGlzLmRvYy5zZWwuc2hpZnQ9ITEpLGtpKHRoaXMsZSl9ZnVuY3Rpb24gcHIoZSl7dmFyIHQ9dGhpcztpZighKGp0KHQuZGlzcGxheSxlKXx8a2kodCxlKXx8ZS5jdHJsS2V5JiYhZS5hbHRLZXl8fEFvJiZlLm1ldGFLZXkpKXt2YXIgcj1lLmtleUNvZGUsbj1lLmNoYXJDb2RlO2lmKExvJiZyPT1abylyZXR1cm4gWm89bnVsbCx2b2lkIGtsKGUpO2lmKCFMb3x8ZS53aGljaCYmIShlLndoaWNoPDEwKXx8IXVyKHQsZSkpe3ZhciBpPVN0cmluZy5mcm9tQ2hhckNvZGUobnVsbD09bj9yOm4pO2NyKHQsZSxpKXx8dC5kaXNwbGF5LmlucHV0Lm9uS2V5UHJlc3MoZSl9fX1mdW5jdGlvbiBncihlKXtlLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50PSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50JiYoZS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudD0hMSxtcihlKSl9LDEwMCl9ZnVuY3Rpb24gdnIoZSl7ZS5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCYmKGUuc3RhdGUuZGVsYXlpbmdCbHVyRXZlbnQ9ITEpLCJub2N1cnNvciIhPWUub3B0aW9ucy5yZWFkT25seSYmKGUuc3RhdGUuZm9jdXNlZHx8KERsKGUsImZvY3VzIixlKSxlLnN0YXRlLmZvY3VzZWQ9ITAsWmwoZS5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3ItZm9jdXNlZCIpLGUuY3VyT3B8fGUuZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudT09ZS5kb2Muc2VsfHwoZS5kaXNwbGF5LmlucHV0LnJlc2V0KCkseG8mJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmRpc3BsYXkuaW5wdXQucmVzZXQoITApfSwyMCkpLGUuZGlzcGxheS5pbnB1dC5yZWNlaXZlZEZvY3VzKCkpLEZlKGUpKX1mdW5jdGlvbiBtcihlKXtlLnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50fHwoZS5zdGF0ZS5mb2N1c2VkJiYoRGwoZSwiYmx1ciIsZSksZS5zdGF0ZS5mb2N1c2VkPSExLHFsKGUuZGlzcGxheS53cmFwcGVyLCJDb2RlTWlycm9yLWZvY3VzZWQiKSksY2xlYXJJbnRlcnZhbChlLmRpc3BsYXkuYmxpbmtlciksc2V0VGltZW91dChmdW5jdGlvbigpe2Uuc3RhdGUuZm9jdXNlZHx8KGUuZGlzcGxheS5zaGlmdD0hMSl9LDE1MCkpfWZ1bmN0aW9uIHlyKGUsdCl7anQoZS5kaXNwbGF5LHQpfHxicihlLHQpfHxraShlLHQsImNvbnRleHRtZW51Iil8fGUuZGlzcGxheS5pbnB1dC5vbkNvbnRleHRNZW51KHQpfWZ1bmN0aW9uIGJyKGUsdCl7cmV0dXJuIE5pKGUsImd1dHRlckNvbnRleHRNZW51Iik/WnQoZSx0LCJndXR0ZXJDb250ZXh0TWVudSIsITEpOiExfWZ1bmN0aW9uIHdyKGUsdCl7aWYoRm8oZSx0LmZyb20pPDApcmV0dXJuIGU7aWYoRm8oZSx0LnRvKTw9MClyZXR1cm4gUW8odCk7dmFyIHI9ZS5saW5lK3QudGV4dC5sZW5ndGgtKHQudG8ubGluZS10LmZyb20ubGluZSktMSxuPWUuY2g7cmV0dXJuIGUubGluZT09dC50by5saW5lJiYobis9UW8odCkuY2gtdC50by5jaCksem8ocixuKX1mdW5jdGlvbiB4cihlLHQpe2Zvcih2YXIgcj1bXSxuPTA7bjxlLnNlbC5yYW5nZXMubGVuZ3RoO24rKyl7dmFyIGk9ZS5zZWwucmFuZ2VzW25dO3IucHVzaChuZXcgaGUod3IoaS5hbmNob3IsdCksd3IoaS5oZWFkLHQpKSl9cmV0dXJuIGZlKHIsZS5zZWwucHJpbUluZGV4KX1mdW5jdGlvbiBDcihlLHQscil7cmV0dXJuIGUubGluZT09dC5saW5lP3pvKHIubGluZSxlLmNoLXQuY2grci5jaCk6em8oci5saW5lKyhlLmxpbmUtdC5saW5lKSxlLmNoKX1mdW5jdGlvbiBTcihlLHQscil7Zm9yKHZhciBuPVtdLGk9em8oZS5maXJzdCwwKSxvPWksbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgcz10W2xdLGE9Q3Iocy5mcm9tLGksbyksdT1DcihRbyhzKSxpLG8pO2lmKGk9cy50byxvPXUsImFyb3VuZCI9PXIpe3ZhciBjPWUuc2VsLnJhbmdlc1tsXSxoPUZvKGMuaGVhZCxjLmFuY2hvcik8MDtuW2xdPW5ldyBoZShoP3U6YSxoP2E6dSl9ZWxzZSBuW2xdPW5ldyBoZShhLGEpfXJldHVybiBuZXcgY2UobixlLnNlbC5wcmltSW5kZXgpfWZ1bmN0aW9uIExyKGUsdCxyKXt2YXIgbj17Y2FuY2VsZWQ6ITEsZnJvbTp0LmZyb20sdG86dC50byx0ZXh0OnQudGV4dCxvcmlnaW46dC5vcmlnaW4sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxlZD0hMH19O3JldHVybiByJiYobi51cGRhdGU9ZnVuY3Rpb24odCxyLG4saSl7dCYmKHRoaXMuZnJvbT1nZShlLHQpKSxyJiYodGhpcy50bz1nZShlLHIpKSxuJiYodGhpcy50ZXh0PW4pLHZvaWQgMCE9PWkmJih0aGlzLm9yaWdpbj1pKX0pLERsKGUsImJlZm9yZUNoYW5nZSIsZSxuKSxlLmNtJiZEbChlLmNtLCJiZWZvcmVDaGFuZ2UiLGUuY20sbiksbi5jYW5jZWxlZD9udWxsOntmcm9tOm4uZnJvbSx0bzpuLnRvLHRleHQ6bi50ZXh0LG9yaWdpbjpuLm9yaWdpbn19ZnVuY3Rpb24gVHIoZSx0LHIpe2lmKGUuY20pe2lmKCFlLmNtLmN1ck9wKXJldHVybiBBdChlLmNtLFRyKShlLHQscik7aWYoZS5jbS5zdGF0ZS5zdXBwcmVzc0VkaXRzKXJldHVybn1pZighKE5pKGUsImJlZm9yZUNoYW5nZSIpfHxlLmNtJiZOaShlLmNtLCJiZWZvcmVDaGFuZ2UiKSl8fCh0PUxyKGUsdCwhMCkpKXt2YXIgbj1FbyYmIXImJmFuKGUsdC5mcm9tLHQudG8pO2lmKG4pZm9yKHZhciBpPW4ubGVuZ3RoLTE7aT49MDstLWkpa3IoZSx7ZnJvbTpuW2ldLmZyb20sdG86bltpXS50byx0ZXh0Omk/WyIiXTp0LnRleHR9KTtlbHNlIGtyKGUsdCl9fWZ1bmN0aW9uIGtyKGUsdCl7aWYoMSE9dC50ZXh0Lmxlbmd0aHx8IiIhPXQudGV4dFswXXx8MCE9Rm8odC5mcm9tLHQudG8pKXt2YXIgcj14cihlLHQpO3VpKGUsdCxyLGUuY20/ZS5jbS5jdXJPcC5pZDpOYU4pLFdyKGUsdCxyLG9uKGUsdCkpO3ZhciBuPVtdOyRuKGUsZnVuY3Rpb24oZSxyKXtyfHwtMSE9SGkobixlLmhpc3RvcnkpfHwoYmkoZS5oaXN0b3J5LHQpLG4ucHVzaChlLmhpc3RvcnkpKSxXcihlLHQsbnVsbCxvbihlLHQpKX0pfX1mdW5jdGlvbiBNcihlLHQscil7aWYoIWUuY218fCFlLmNtLnN0YXRlLnN1cHByZXNzRWRpdHMpe2Zvcih2YXIgbixpPWUuaGlzdG9yeSxvPWUuc2VsLGw9InVuZG8iPT10P2kuZG9uZTppLnVuZG9uZSxzPSJ1bmRvIj09dD9pLnVuZG9uZTppLmRvbmUsYT0wO2E8bC5sZW5ndGgmJihuPWxbYV0scj8hbi5yYW5nZXN8fG4uZXF1YWxzKGUuc2VsKTpuLnJhbmdlcyk7YSsrKTtpZihhIT1sLmxlbmd0aCl7Zm9yKGkubGFzdE9yaWdpbj1pLmxhc3RTZWxPcmlnaW49bnVsbDtuPWwucG9wKCksbi5yYW5nZXM7KXtpZihmaShuLHMpLHImJiFuLmVxdWFscyhlLnNlbCkpcmV0dXJuIHZvaWQga2UoZSxuLHtjbGVhclJlZG86ITF9KTtvPW59dmFyIHU9W107ZmkobyxzKSxzLnB1c2goe2NoYW5nZXM6dSxnZW5lcmF0aW9uOmkuZ2VuZXJhdGlvbn0pLGkuZ2VuZXJhdGlvbj1uLmdlbmVyYXRpb258fCsraS5tYXhHZW5lcmF0aW9uO2Zvcih2YXIgYz1OaShlLCJiZWZvcmVDaGFuZ2UiKXx8ZS5jbSYmTmkoZS5jbSwiYmVmb3JlQ2hhbmdlIiksYT1uLmNoYW5nZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBoPW4uY2hhbmdlc1thXTtpZihoLm9yaWdpbj10LGMmJiFMcihlLGgsITEpKXJldHVybiB2b2lkKGwubGVuZ3RoPTApO3UucHVzaChsaShlLGgpKTt2YXIgZj1hP3hyKGUsaCk6RGkobCk7V3IoZSxoLGYsc24oZSxoKSksIWEmJmUuY20mJmUuY20uc2Nyb2xsSW50b1ZpZXcoe2Zyb206aC5mcm9tLHRvOlFvKGgpfSk7dmFyIGQ9W107JG4oZSxmdW5jdGlvbihlLHQpe3R8fC0xIT1IaShkLGUuaGlzdG9yeSl8fChiaShlLmhpc3RvcnksaCksZC5wdXNoKGUuaGlzdG9yeSkpLFdyKGUsaCxudWxsLHNuKGUsaCkpfSl9fX19ZnVuY3Rpb24gTnIoZSx0KXtpZigwIT10JiYoZS5maXJzdCs9dCxlLnNlbD1uZXcgY2UoUGkoZS5zZWwucmFuZ2VzLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaGUoem8oZS5hbmNob3IubGluZSt0LGUuYW5jaG9yLmNoKSx6byhlLmhlYWQubGluZSt0LGUuaGVhZC5jaCkpfSksZS5zZWwucHJpbUluZGV4KSxlLmNtKSl7RXQoZS5jbSxlLmZpcnN0LGUuZmlyc3QtdCx0KTtmb3IodmFyIHI9ZS5jbS5kaXNwbGF5LG49ci52aWV3RnJvbTtuPHIudmlld1RvO24rKylJdChlLmNtLG4sImd1dHRlciIpfX1mdW5jdGlvbiBXcihlLHQscixuKXtpZihlLmNtJiYhZS5jbS5jdXJPcClyZXR1cm4gQXQoZS5jbSxXcikoZSx0LHIsbik7aWYodC50by5saW5lPGUuZmlyc3QpcmV0dXJuIHZvaWQgTnIoZSx0LnRleHQubGVuZ3RoLTEtKHQudG8ubGluZS10LmZyb20ubGluZSkpO2lmKCEodC5mcm9tLmxpbmU+ZS5sYXN0TGluZSgpKSl7aWYodC5mcm9tLmxpbmU8ZS5maXJzdCl7dmFyIGk9dC50ZXh0Lmxlbmd0aC0xLShlLmZpcnN0LXQuZnJvbS5saW5lKTtOcihlLGkpLHQ9e2Zyb206em8oZS5maXJzdCwwKSx0bzp6byh0LnRvLmxpbmUraSx0LnRvLmNoKSx0ZXh0OltEaSh0LnRleHQpXSxvcmlnaW46dC5vcmlnaW59fXZhciBvPWUubGFzdExpbmUoKTt0LnRvLmxpbmU+byYmKHQ9e2Zyb206dC5mcm9tLHRvOnpvKG8sWm4oZSxvKS50ZXh0Lmxlbmd0aCksdGV4dDpbdC50ZXh0WzBdXSxvcmlnaW46dC5vcmlnaW59KSx0LnJlbW92ZWQ9UW4oZSx0LmZyb20sdC50bykscnx8KHI9eHIoZSx0KSksZS5jbT9BcihlLmNtLHQsbik6WG4oZSx0LG4pLE1lKGUscixJbCl9fWZ1bmN0aW9uIEFyKGUsdCxyKXt2YXIgbj1lLmRvYyxpPWUuZGlzcGxheSxsPXQuZnJvbSxzPXQudG8sYT0hMSx1PWwubGluZTtlLm9wdGlvbnMubGluZVdyYXBwaW5nfHwodT10aSh5bihabihuLGwubGluZSkpKSxuLml0ZXIodSxzLmxpbmUrMSxmdW5jdGlvbihlKXtyZXR1cm4gZT09aS5tYXhMaW5lPyhhPSEwLCEwKTp2b2lkIDB9KSksbi5zZWwuY29udGFpbnModC5mcm9tLHQudG8pPi0xJiZNaShlKSxYbihuLHQscixvKGUpKSxlLm9wdGlvbnMubGluZVdyYXBwaW5nfHwobi5pdGVyKHUsbC5saW5lK3QudGV4dC5sZW5ndGgsZnVuY3Rpb24oZSl7dmFyIHQ9aChlKTt0PmkubWF4TGluZUxlbmd0aCYmKGkubWF4TGluZT1lLGkubWF4TGluZUxlbmd0aD10LGkubWF4TGluZUNoYW5nZWQ9ITAsYT0hMSl9KSxhJiYoZS5jdXJPcC51cGRhdGVNYXhMaW5lPSEwKSksbi5mcm9udGllcj1NYXRoLm1pbihuLmZyb250aWVyLGwubGluZSksUmUoZSw0MDApO3ZhciBjPXQudGV4dC5sZW5ndGgtKHMubGluZS1sLmxpbmUpLTE7dC5mdWxsP0V0KGUpOmwubGluZSE9cy5saW5lfHwxIT10LnRleHQubGVuZ3RofHxqbihlLmRvYyx0KT9FdChlLGwubGluZSxzLmxpbmUrMSxjKTpJdChlLGwubGluZSwidGV4dCIpO3ZhciBmPU5pKGUsImNoYW5nZXMiKSxkPU5pKGUsImNoYW5nZSIpO2lmKGR8fGYpe3ZhciBwPXtmcm9tOmwsdG86cyx0ZXh0OnQudGV4dCxyZW1vdmVkOnQucmVtb3ZlZCxvcmlnaW46dC5vcmlnaW59O2QmJkxpKGUsImNoYW5nZSIsZSxwKSxmJiYoZS5jdXJPcC5jaGFuZ2VPYmpzfHwoZS5jdXJPcC5jaGFuZ2VPYmpzPVtdKSkucHVzaChwKX1lLmRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnU9bnVsbH1mdW5jdGlvbiBPcihlLHQscixuLGkpe2lmKG58fChuPXIpLEZvKG4scik8MCl7dmFyIG89bjtuPXIscj1vfSJzdHJpbmciPT10eXBlb2YgdCYmKHQ9ZS5zcGxpdExpbmVzKHQpKSxUcihlLHtmcm9tOnIsdG86bix0ZXh0OnQsb3JpZ2luOml9KX1mdW5jdGlvbiBEcihlLHQpe2lmKCFraShlLCJzY3JvbGxDdXJzb3JJbnRvVmlldyIpKXt2YXIgcj1lLmRpc3BsYXksbj1yLnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9bnVsbDtpZih0LnRvcCtuLnRvcDwwP2k9ITA6dC5ib3R0b20rbi50b3A+KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJihpPSExKSxudWxsIT1pJiYhTW8pe3ZhciBvPVVpKCJkaXYiLCLigIsiLG51bGwsInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAiKyh0LnRvcC1yLnZpZXdPZmZzZXQtVmUoZS5kaXNwbGF5KSkrInB4OyBoZWlnaHQ6ICIrKHQuYm90dG9tLXQudG9wK1hlKGUpK3IuYmFySGVpZ2h0KSsicHg7IGxlZnQ6ICIrdC5sZWZ0KyJweDsgd2lkdGg6IDJweDsiKTtlLmRpc3BsYXkubGluZVNwYWNlLmFwcGVuZENoaWxkKG8pLG8uc2Nyb2xsSW50b1ZpZXcoaSksZS5kaXNwbGF5LmxpbmVTcGFjZS5yZW1vdmVDaGlsZChvKX19fWZ1bmN0aW9uIEhyKGUsdCxyLG4pe251bGw9PW4mJihuPTApO2Zvcih2YXIgaT0wOzU+aTtpKyspe3ZhciBvPSExLGw9ZHQoZSx0KSxzPXImJnIhPXQ/ZHQoZSxyKTpsLGE9RXIoZSxNYXRoLm1pbihsLmxlZnQscy5sZWZ0KSxNYXRoLm1pbihsLnRvcCxzLnRvcCktbixNYXRoLm1heChsLmxlZnQscy5sZWZ0KSxNYXRoLm1heChsLmJvdHRvbSxzLmJvdHRvbSkrbiksdT1lLmRvYy5zY3JvbGxUb3AsYz1lLmRvYy5zY3JvbGxMZWZ0O2lmKG51bGwhPWEuc2Nyb2xsVG9wJiYobnIoZSxhLnNjcm9sbFRvcCksTWF0aC5hYnMoZS5kb2Muc2Nyb2xsVG9wLXUpPjEmJihvPSEwKSksbnVsbCE9YS5zY3JvbGxMZWZ0JiYoaXIoZSxhLnNjcm9sbExlZnQpLE1hdGguYWJzKGUuZG9jLnNjcm9sbExlZnQtYyk+MSYmKG89ITApKSwhbylicmVha31yZXR1cm4gbH1mdW5jdGlvbiBQcihlLHQscixuLGkpe3ZhciBvPUVyKGUsdCxyLG4saSk7bnVsbCE9by5zY3JvbGxUb3AmJm5yKGUsby5zY3JvbGxUb3ApLG51bGwhPW8uc2Nyb2xsTGVmdCYmaXIoZSxvLnNjcm9sbExlZnQpfWZ1bmN0aW9uIEVyKGUsdCxyLG4saSl7dmFyIG89ZS5kaXNwbGF5LGw9eXQoZS5kaXNwbGF5KTswPnImJihyPTApO3ZhciBzPWUuY3VyT3AmJm51bGwhPWUuY3VyT3Auc2Nyb2xsVG9wP2UuY3VyT3Auc2Nyb2xsVG9wOm8uc2Nyb2xsZXIuc2Nyb2xsVG9wLGE9X2UoZSksdT17fTtpLXI+YSYmKGk9cithKTt2YXIgYz1lLmRvYy5oZWlnaHQrS2UobyksaD1sPnIsZj1pPmMtbDtpZihzPnIpdS5zY3JvbGxUb3A9aD8wOnI7ZWxzZSBpZihpPnMrYSl7dmFyIGQ9TWF0aC5taW4ociwoZj9jOmkpLWEpO2QhPXMmJih1LnNjcm9sbFRvcD1kKX12YXIgcD1lLmN1ck9wJiZudWxsIT1lLmN1ck9wLnNjcm9sbExlZnQ/ZS5jdXJPcC5zY3JvbGxMZWZ0Om8uc2Nyb2xsZXIuc2Nyb2xsTGVmdCxnPVllKGUpLShlLm9wdGlvbnMuZml4ZWRHdXR0ZXI/by5ndXR0ZXJzLm9mZnNldFdpZHRoOjApLHY9bi10Pmc7cmV0dXJuIHYmJihuPXQrZyksMTA+dD91LnNjcm9sbExlZnQ9MDpwPnQ/dS5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsdC0odj8wOjEwKSk6bj5nK3AtMyYmKHUuc2Nyb2xsTGVmdD1uKyh2PzA6MTApLWcpLHV9ZnVuY3Rpb24gSXIoZSx0LHIpeyhudWxsIT10fHxudWxsIT1yKSYmRnIoZSksbnVsbCE9dCYmKGUuY3VyT3Auc2Nyb2xsTGVmdD0obnVsbD09ZS5jdXJPcC5zY3JvbGxMZWZ0P2UuZG9jLnNjcm9sbExlZnQ6ZS5jdXJPcC5zY3JvbGxMZWZ0KSt0KSxudWxsIT1yJiYoZS5jdXJPcC5zY3JvbGxUb3A9KG51bGw9PWUuY3VyT3Auc2Nyb2xsVG9wP2UuZG9jLnNjcm9sbFRvcDplLmN1ck9wLnNjcm9sbFRvcCkrcil9ZnVuY3Rpb24genIoZSl7RnIoZSk7dmFyIHQ9ZS5nZXRDdXJzb3IoKSxyPXQsbj10O2Uub3B0aW9ucy5saW5lV3JhcHBpbmd8fChyPXQuY2g/em8odC5saW5lLHQuY2gtMSk6dCxuPXpvKHQubGluZSx0LmNoKzEpKSxlLmN1ck9wLnNjcm9sbFRvUG9zPXtmcm9tOnIsdG86bixtYXJnaW46ZS5vcHRpb25zLmN1cnNvclNjcm9sbE1hcmdpbixpc0N1cnNvcjohMH19ZnVuY3Rpb24gRnIoZSl7dmFyIHQ9ZS5jdXJPcC5zY3JvbGxUb1BvcztpZih0KXtlLmN1ck9wLnNjcm9sbFRvUG9zPW51bGw7dmFyIHI9cHQoZSx0LmZyb20pLG49cHQoZSx0LnRvKSxpPUVyKGUsTWF0aC5taW4oci5sZWZ0LG4ubGVmdCksTWF0aC5taW4oci50b3Asbi50b3ApLXQubWFyZ2luLE1hdGgubWF4KHIucmlnaHQsbi5yaWdodCksTWF0aC5tYXgoci5ib3R0b20sbi5ib3R0b20pK3QubWFyZ2luKTsKZS5zY3JvbGxUbyhpLnNjcm9sbExlZnQsaS5zY3JvbGxUb3ApfX1mdW5jdGlvbiBScihlLHQscixuKXt2YXIgaSxvPWUuZG9jO251bGw9PXImJihyPSJhZGQiKSwic21hcnQiPT1yJiYoby5tb2RlLmluZGVudD9pPVVlKGUsdCk6cj0icHJldiIpO3ZhciBsPWUub3B0aW9ucy50YWJTaXplLHM9Wm4obyx0KSxhPVJsKHMudGV4dCxudWxsLGwpO3Muc3RhdGVBZnRlciYmKHMuc3RhdGVBZnRlcj1udWxsKTt2YXIgdSxjPXMudGV4dC5tYXRjaCgvXlxzKi8pWzBdO2lmKG58fC9cUy8udGVzdChzLnRleHQpKXtpZigic21hcnQiPT1yJiYodT1vLm1vZGUuaW5kZW50KGkscy50ZXh0LnNsaWNlKGMubGVuZ3RoKSxzLnRleHQpLHU9PUVsfHx1PjE1MCkpe2lmKCFuKXJldHVybjtyPSJwcmV2In19ZWxzZSB1PTAscj0ibm90IjsicHJldiI9PXI/dT10Pm8uZmlyc3Q/UmwoWm4obyx0LTEpLnRleHQsbnVsbCxsKTowOiJhZGQiPT1yP3U9YStlLm9wdGlvbnMuaW5kZW50VW5pdDoic3VidHJhY3QiPT1yP3U9YS1lLm9wdGlvbnMuaW5kZW50VW5pdDoibnVtYmVyIj09dHlwZW9mIHImJih1PWErciksdT1NYXRoLm1heCgwLHUpO3ZhciBoPSIiLGY9MDtpZihlLm9wdGlvbnMuaW5kZW50V2l0aFRhYnMpZm9yKHZhciBkPU1hdGguZmxvb3IodS9sKTtkOy0tZClmKz1sLGgrPSIJIjtpZih1PmYmJihoKz1PaSh1LWYpKSxoIT1jKXJldHVybiBPcihvLGgsem8odCwwKSx6byh0LGMubGVuZ3RoKSwiK2lucHV0Iikscy5zdGF0ZUFmdGVyPW51bGwsITA7Zm9yKHZhciBkPTA7ZDxvLnNlbC5yYW5nZXMubGVuZ3RoO2QrKyl7dmFyIHA9by5zZWwucmFuZ2VzW2RdO2lmKHAuaGVhZC5saW5lPT10JiZwLmhlYWQuY2g8Yy5sZW5ndGgpe3ZhciBmPXpvKHQsYy5sZW5ndGgpO0NlKG8sZCxuZXcgaGUoZixmKSk7YnJlYWt9fX1mdW5jdGlvbiBCcihlLHQscixuKXt2YXIgaT10LG89dDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/bz1abihlLHBlKGUsdCkpOmk9dGkodCksbnVsbD09aT9udWxsOihuKG8saSkmJmUuY20mJkl0KGUuY20saSxyKSxvKX1mdW5jdGlvbiBHcihlLHQpe2Zvcih2YXIgcj1lLmRvYy5zZWwucmFuZ2VzLG49W10saT0wO2k8ci5sZW5ndGg7aSsrKXtmb3IodmFyIG89dChyW2ldKTtuLmxlbmd0aCYmRm8oby5mcm9tLERpKG4pLnRvKTw9MDspe3ZhciBsPW4ucG9wKCk7aWYoRm8obC5mcm9tLG8uZnJvbSk8MCl7by5mcm9tPWwuZnJvbTticmVha319bi5wdXNoKG8pfVd0KGUsZnVuY3Rpb24oKXtmb3IodmFyIHQ9bi5sZW5ndGgtMTt0Pj0wO3QtLSlPcihlLmRvYywiIixuW3RdLmZyb20sblt0XS50bywiK2RlbGV0ZSIpO3pyKGUpfSl9ZnVuY3Rpb24gVXIoZSx0LHIsbixpKXtmdW5jdGlvbiBvKCl7dmFyIHQ9cytyO3JldHVybiB0PGUuZmlyc3R8fHQ+PWUuZmlyc3QrZS5zaXplP2g9ITE6KHM9dCxjPVpuKGUsdCkpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9KGk/aG86Zm8pKGMsYSxyLCEwKTtpZihudWxsPT10KXtpZihlfHwhbygpKXJldHVybiBoPSExO2E9aT8oMD5yP2lvOm5vKShjKTowPnI/Yy50ZXh0Lmxlbmd0aDowfWVsc2UgYT10O3JldHVybiEwfXZhciBzPXQubGluZSxhPXQuY2gsdT1yLGM9Wm4oZSxzKSxoPSEwO2lmKCJjaGFyIj09bilsKCk7ZWxzZSBpZigiY29sdW1uIj09bilsKCEwKTtlbHNlIGlmKCJ3b3JkIj09bnx8Imdyb3VwIj09bilmb3IodmFyIGY9bnVsbCxkPSJncm91cCI9PW4scD1lLmNtJiZlLmNtLmdldEhlbHBlcih0LCJ3b3JkQ2hhcnMiKSxnPSEwOyEoMD5yKXx8bCghZyk7Zz0hMSl7dmFyIHY9Yy50ZXh0LmNoYXJBdChhKXx8IlxuIixtPVJpKHYscCk/InciOmQmJiJcbiI9PXY/Im4iOiFkfHwvXHMvLnRlc3Qodik/bnVsbDoicCI7aWYoIWR8fGd8fG18fChtPSJzIiksZiYmZiE9bSl7MD5yJiYocj0xLGwoKSk7YnJlYWt9aWYobSYmKGY9bSkscj4wJiYhbCghZykpYnJlYWt9dmFyIHk9RGUoZSx6byhzLGEpLHQsdSwhMCk7cmV0dXJuIGh8fCh5LmhpdFNpZGU9ITApLHl9ZnVuY3Rpb24gVnIoZSx0LHIsbil7dmFyIGksbz1lLmRvYyxsPXQubGVmdDtpZigicGFnZSI9PW4pe3ZhciBzPU1hdGgubWluKGUuZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO2k9dC50b3Arcioocy0oMD5yPzEuNTouNSkqeXQoZS5kaXNwbGF5KSl9ZWxzZSJsaW5lIj09biYmKGk9cj4wP3QuYm90dG9tKzM6dC50b3AtMyk7Zm9yKDs7KXt2YXIgYT12dChlLGwsaSk7aWYoIWEub3V0c2lkZSlicmVhaztpZigwPnI/MD49aTppPj1vLmhlaWdodCl7YS5oaXRTaWRlPSEwO2JyZWFrfWkrPTUqcn1yZXR1cm4gYX1mdW5jdGlvbiBLcih0LHIsbixpKXtlLmRlZmF1bHRzW3RdPXIsbiYmKGVsW3RdPWk/ZnVuY3Rpb24oZSx0LHIpe3IhPXRsJiZuKGUsdCxyKX06bil9ZnVuY3Rpb24ganIoZSl7Zm9yKHZhciB0LHIsbixpLG89ZS5zcGxpdCgvLSg/ISQpLyksZT1vW28ubGVuZ3RoLTFdLGw9MDtsPG8ubGVuZ3RoLTE7bCsrKXt2YXIgcz1vW2xdO2lmKC9eKGNtZHxtZXRhfG0pJC9pLnRlc3QocykpaT0hMDtlbHNlIGlmKC9eYShsdCk/JC9pLnRlc3QocykpdD0hMDtlbHNlIGlmKC9eKGN8Y3RybHxjb250cm9sKSQvaS50ZXN0KHMpKXI9ITA7ZWxzZXtpZighL15zKGhpZnQpJC9pLnRlc3QocykpdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgbW9kaWZpZXIgbmFtZTogIitzKTtuPSEwfX1yZXR1cm4gdCYmKGU9IkFsdC0iK2UpLHImJihlPSJDdHJsLSIrZSksaSYmKGU9IkNtZC0iK2UpLG4mJihlPSJTaGlmdC0iK2UpLGV9ZnVuY3Rpb24gWHIoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2NsW2VdOmV9ZnVuY3Rpb24gWXIoZSx0LHIsbixpKXtpZihuJiZuLnNoYXJlZClyZXR1cm4gX3IoZSx0LHIsbixpKTtpZihlLmNtJiYhZS5jbS5jdXJPcClyZXR1cm4gQXQoZS5jbSxZcikoZSx0LHIsbixpKTt2YXIgbz1uZXcgdmwoZSxpKSxsPUZvKHQscik7aWYobiYmemkobixvLCExKSxsPjB8fDA9PWwmJm8uY2xlYXJXaGVuRW1wdHkhPT0hMSlyZXR1cm4gbztpZihvLnJlcGxhY2VkV2l0aCYmKG8uY29sbGFwc2VkPSEwLG8ud2lkZ2V0Tm9kZT1VaSgic3BhbiIsW28ucmVwbGFjZWRXaXRoXSwiQ29kZU1pcnJvci13aWRnZXQiKSxuLmhhbmRsZU1vdXNlRXZlbnRzfHxvLndpZGdldE5vZGUuc2V0QXR0cmlidXRlKCJjbS1pZ25vcmUtZXZlbnRzIiwidHJ1ZSIpLG4uaW5zZXJ0TGVmdCYmKG8ud2lkZ2V0Tm9kZS5pbnNlcnRMZWZ0PSEwKSksby5jb2xsYXBzZWQpe2lmKG1uKGUsdC5saW5lLHQscixvKXx8dC5saW5lIT1yLmxpbmUmJm1uKGUsci5saW5lLHQscixvKSl0aHJvdyBuZXcgRXJyb3IoIkluc2VydGluZyBjb2xsYXBzZWQgbWFya2VyIHBhcnRpYWxseSBvdmVybGFwcGluZyBhbiBleGlzdGluZyBvbmUiKTtJbz0hMH1vLmFkZFRvSGlzdG9yeSYmdWkoZSx7ZnJvbTp0LHRvOnIsb3JpZ2luOiJtYXJrVGV4dCJ9LGUuc2VsLE5hTik7dmFyIHMsYT10LmxpbmUsdT1lLmNtO2lmKGUuaXRlcihhLHIubGluZSsxLGZ1bmN0aW9uKGUpe3UmJm8uY29sbGFwc2VkJiYhdS5vcHRpb25zLmxpbmVXcmFwcGluZyYmeW4oZSk9PXUuZGlzcGxheS5tYXhMaW5lJiYocz0hMCksby5jb2xsYXBzZWQmJmEhPXQubGluZSYmZWkoZSwwKSx0bihlLG5ldyBRcihvLGE9PXQubGluZT90LmNoOm51bGwsYT09ci5saW5lP3IuY2g6bnVsbCkpLCsrYX0pLG8uY29sbGFwc2VkJiZlLml0ZXIodC5saW5lLHIubGluZSsxLGZ1bmN0aW9uKHQpe0NuKGUsdCkmJmVpKHQsMCl9KSxvLmNsZWFyT25FbnRlciYmV2wobywiYmVmb3JlQ3Vyc29yRW50ZXIiLGZ1bmN0aW9uKCl7by5jbGVhcigpfSksby5yZWFkT25seSYmKEVvPSEwLChlLmhpc3RvcnkuZG9uZS5sZW5ndGh8fGUuaGlzdG9yeS51bmRvbmUubGVuZ3RoKSYmZS5jbGVhckhpc3RvcnkoKSksby5jb2xsYXBzZWQmJihvLmlkPSsrZ2wsby5hdG9taWM9ITApLHUpe2lmKHMmJih1LmN1ck9wLnVwZGF0ZU1heExpbmU9ITApLG8uY29sbGFwc2VkKUV0KHUsdC5saW5lLHIubGluZSsxKTtlbHNlIGlmKG8uY2xhc3NOYW1lfHxvLnRpdGxlfHxvLnN0YXJ0U3R5bGV8fG8uZW5kU3R5bGV8fG8uY3NzKWZvcih2YXIgYz10LmxpbmU7Yzw9ci5saW5lO2MrKylJdCh1LGMsInRleHQiKTtvLmF0b21pYyYmV2UodS5kb2MpLExpKHUsIm1hcmtlckFkZGVkIix1LG8pfXJldHVybiBvfWZ1bmN0aW9uIF9yKGUsdCxyLG4saSl7bj16aShuKSxuLnNoYXJlZD0hMTt2YXIgbz1bWXIoZSx0LHIsbixpKV0sbD1vWzBdLHM9bi53aWRnZXROb2RlO3JldHVybiAkbihlLGZ1bmN0aW9uKGUpe3MmJihuLndpZGdldE5vZGU9cy5jbG9uZU5vZGUoITApKSxvLnB1c2goWXIoZSxnZShlLHQpLGdlKGUsciksbixpKSk7Zm9yKHZhciBhPTA7YTxlLmxpbmtlZC5sZW5ndGg7KythKWlmKGUubGlua2VkW2FdLmlzUGFyZW50KXJldHVybjtsPURpKG8pfSksbmV3IG1sKG8sbCl9ZnVuY3Rpb24gJHIoZSl7cmV0dXJuIGUuZmluZE1hcmtzKHpvKGUuZmlyc3QsMCksZS5jbGlwUG9zKHpvKGUubGFzdExpbmUoKSkpLGZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudH0pfWZ1bmN0aW9uIHFyKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl0saT1uLmZpbmQoKSxvPWUuY2xpcFBvcyhpLmZyb20pLGw9ZS5jbGlwUG9zKGkudG8pO2lmKEZvKG8sbCkpe3ZhciBzPVlyKGUsbyxsLG4ucHJpbWFyeSxuLnByaW1hcnkudHlwZSk7bi5tYXJrZXJzLnB1c2gocykscy5wYXJlbnQ9bn19fWZ1bmN0aW9uIFpyKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLG49W3IucHJpbWFyeS5kb2NdOyRuKHIucHJpbWFyeS5kb2MsZnVuY3Rpb24oZSl7bi5wdXNoKGUpfSk7Zm9yKHZhciBpPTA7aTxyLm1hcmtlcnMubGVuZ3RoO2krKyl7dmFyIG89ci5tYXJrZXJzW2ldOy0xPT1IaShuLG8uZG9jKSYmKG8ucGFyZW50PW51bGwsci5tYXJrZXJzLnNwbGljZShpLS0sMSkpfX19ZnVuY3Rpb24gUXIoZSx0LHIpe3RoaXMubWFya2VyPWUsdGhpcy5mcm9tPXQsdGhpcy50bz1yfWZ1bmN0aW9uIEpyKGUsdCl7aWYoZSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIG49ZVtyXTtpZihuLm1hcmtlcj09dClyZXR1cm4gbn19ZnVuY3Rpb24gZW4oZSx0KXtmb3IodmFyIHIsbj0wO248ZS5sZW5ndGg7KytuKWVbbl0hPXQmJihyfHwocj1bXSkpLnB1c2goZVtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gdG4oZSx0KXtlLm1hcmtlZFNwYW5zPWUubWFya2VkU3BhbnM/ZS5tYXJrZWRTcGFucy5jb25jYXQoW3RdKTpbdF0sdC5tYXJrZXIuYXR0YWNoTGluZShlKX1mdW5jdGlvbiBybihlLHQscil7aWYoZSlmb3IodmFyIG4saT0wO2k8ZS5sZW5ndGg7KytpKXt2YXIgbz1lW2ldLGw9by5tYXJrZXIscz1udWxsPT1vLmZyb218fChsLmluY2x1c2l2ZUxlZnQ/by5mcm9tPD10Om8uZnJvbTx0KTtpZihzfHxvLmZyb209PXQmJiJib29rbWFyayI9PWwudHlwZSYmKCFyfHwhby5tYXJrZXIuaW5zZXJ0TGVmdCkpe3ZhciBhPW51bGw9PW8udG98fChsLmluY2x1c2l2ZVJpZ2h0P28udG8+PXQ6by50bz50KTsobnx8KG49W10pKS5wdXNoKG5ldyBRcihsLG8uZnJvbSxhP251bGw6by50bykpfX1yZXR1cm4gbn1mdW5jdGlvbiBubihlLHQscil7aWYoZSlmb3IodmFyIG4saT0wO2k8ZS5sZW5ndGg7KytpKXt2YXIgbz1lW2ldLGw9by5tYXJrZXIscz1udWxsPT1vLnRvfHwobC5pbmNsdXNpdmVSaWdodD9vLnRvPj10Om8udG8+dCk7aWYoc3x8by5mcm9tPT10JiYiYm9va21hcmsiPT1sLnR5cGUmJighcnx8by5tYXJrZXIuaW5zZXJ0TGVmdCkpe3ZhciBhPW51bGw9PW8uZnJvbXx8KGwuaW5jbHVzaXZlTGVmdD9vLmZyb208PXQ6by5mcm9tPHQpOyhufHwobj1bXSkpLnB1c2gobmV3IFFyKGwsYT9udWxsOm8uZnJvbS10LG51bGw9PW8udG8/bnVsbDpvLnRvLXQpKX19cmV0dXJuIG59ZnVuY3Rpb24gb24oZSx0KXtpZih0LmZ1bGwpcmV0dXJuIG51bGw7dmFyIHI9bWUoZSx0LmZyb20ubGluZSkmJlpuKGUsdC5mcm9tLmxpbmUpLm1hcmtlZFNwYW5zLG49bWUoZSx0LnRvLmxpbmUpJiZabihlLHQudG8ubGluZSkubWFya2VkU3BhbnM7aWYoIXImJiFuKXJldHVybiBudWxsO3ZhciBpPXQuZnJvbS5jaCxvPXQudG8uY2gsbD0wPT1Gbyh0LmZyb20sdC50bykscz1ybihyLGksbCksYT1ubihuLG8sbCksdT0xPT10LnRleHQubGVuZ3RoLGM9RGkodC50ZXh0KS5sZW5ndGgrKHU/aTowKTtpZihzKWZvcih2YXIgaD0wO2g8cy5sZW5ndGg7KytoKXt2YXIgZj1zW2hdO2lmKG51bGw9PWYudG8pe3ZhciBkPUpyKGEsZi5tYXJrZXIpO2Q/dSYmKGYudG89bnVsbD09ZC50bz9udWxsOmQudG8rYyk6Zi50bz1pfX1pZihhKWZvcih2YXIgaD0wO2g8YS5sZW5ndGg7KytoKXt2YXIgZj1hW2hdO2lmKG51bGwhPWYudG8mJihmLnRvKz1jKSxudWxsPT1mLmZyb20pe3ZhciBkPUpyKHMsZi5tYXJrZXIpO2R8fChmLmZyb209Yyx1JiYoc3x8KHM9W10pKS5wdXNoKGYpKX1lbHNlIGYuZnJvbSs9Yyx1JiYoc3x8KHM9W10pKS5wdXNoKGYpfXMmJihzPWxuKHMpKSxhJiZhIT1zJiYoYT1sbihhKSk7dmFyIHA9W3NdO2lmKCF1KXt2YXIgZyx2PXQudGV4dC5sZW5ndGgtMjtpZih2PjAmJnMpZm9yKHZhciBoPTA7aDxzLmxlbmd0aDsrK2gpbnVsbD09c1toXS50byYmKGd8fChnPVtdKSkucHVzaChuZXcgUXIoc1toXS5tYXJrZXIsbnVsbCxudWxsKSk7Zm9yKHZhciBoPTA7dj5oOysraClwLnB1c2goZyk7cC5wdXNoKGEpfXJldHVybiBwfWZ1bmN0aW9uIGxuKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KXt2YXIgcj1lW3RdO251bGwhPXIuZnJvbSYmci5mcm9tPT1yLnRvJiZyLm1hcmtlci5jbGVhcldoZW5FbXB0eSE9PSExJiZlLnNwbGljZSh0LS0sMSl9cmV0dXJuIGUubGVuZ3RoP2U6bnVsbH1mdW5jdGlvbiBzbihlLHQpe3ZhciByPWdpKGUsdCksbj1vbihlLHQpO2lmKCFyKXJldHVybiBuO2lmKCFuKXJldHVybiByO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgbz1yW2ldLGw9bltpXTtpZihvJiZsKWU6Zm9yKHZhciBzPTA7czxsLmxlbmd0aDsrK3Mpe2Zvcih2YXIgYT1sW3NdLHU9MDt1PG8ubGVuZ3RoOysrdSlpZihvW3VdLm1hcmtlcj09YS5tYXJrZXIpY29udGludWUgZTtvLnB1c2goYSl9ZWxzZSBsJiYocltpXT1sKX1yZXR1cm4gcn1mdW5jdGlvbiBhbihlLHQscil7dmFyIG49bnVsbDtpZihlLml0ZXIodC5saW5lLHIubGluZSsxLGZ1bmN0aW9uKGUpe2lmKGUubWFya2VkU3BhbnMpZm9yKHZhciB0PTA7dDxlLm1hcmtlZFNwYW5zLmxlbmd0aDsrK3Qpe3ZhciByPWUubWFya2VkU3BhbnNbdF0ubWFya2VyOyFyLnJlYWRPbmx5fHxuJiYtMSE9SGkobixyKXx8KG58fChuPVtdKSkucHVzaChyKX19KSwhbilyZXR1cm4gbnVsbDtmb3IodmFyIGk9W3tmcm9tOnQsdG86cn1dLG89MDtvPG4ubGVuZ3RoOysrbylmb3IodmFyIGw9bltvXSxzPWwuZmluZCgwKSxhPTA7YTxpLmxlbmd0aDsrK2Epe3ZhciB1PWlbYV07aWYoIShGbyh1LnRvLHMuZnJvbSk8MHx8Rm8odS5mcm9tLHMudG8pPjApKXt2YXIgYz1bYSwxXSxoPUZvKHUuZnJvbSxzLmZyb20pLGY9Rm8odS50byxzLnRvKTsoMD5ofHwhbC5pbmNsdXNpdmVMZWZ0JiYhaCkmJmMucHVzaCh7ZnJvbTp1LmZyb20sdG86cy5mcm9tfSksKGY+MHx8IWwuaW5jbHVzaXZlUmlnaHQmJiFmKSYmYy5wdXNoKHtmcm9tOnMudG8sdG86dS50b30pLGkuc3BsaWNlLmFwcGx5KGksYyksYSs9Yy5sZW5ndGgtMX19cmV0dXJuIGl9ZnVuY3Rpb24gdW4oZSl7dmFyIHQ9ZS5tYXJrZWRTcGFucztpZih0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLm1hcmtlci5kZXRhY2hMaW5lKGUpO2UubWFya2VkU3BhbnM9bnVsbH19ZnVuY3Rpb24gY24oZSx0KXtpZih0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLm1hcmtlci5hdHRhY2hMaW5lKGUpO2UubWFya2VkU3BhbnM9dH19ZnVuY3Rpb24gaG4oZSl7cmV0dXJuIGUuaW5jbHVzaXZlTGVmdD8tMTowfWZ1bmN0aW9uIGZuKGUpe3JldHVybiBlLmluY2x1c2l2ZVJpZ2h0PzE6MH1mdW5jdGlvbiBkbihlLHQpe3ZhciByPWUubGluZXMubGVuZ3RoLXQubGluZXMubGVuZ3RoO2lmKDAhPXIpcmV0dXJuIHI7dmFyIG49ZS5maW5kKCksaT10LmZpbmQoKSxvPUZvKG4uZnJvbSxpLmZyb20pfHxobihlKS1obih0KTtpZihvKXJldHVybi1vO3ZhciBsPUZvKG4udG8saS50byl8fGZuKGUpLWZuKHQpO3JldHVybiBsP2w6dC5pZC1lLmlkfWZ1bmN0aW9uIHBuKGUsdCl7dmFyIHIsbj1JbyYmZS5tYXJrZWRTcGFucztpZihuKWZvcih2YXIgaSxvPTA7bzxuLmxlbmd0aDsrK28paT1uW29dLGkubWFya2VyLmNvbGxhcHNlZCYmbnVsbD09KHQ/aS5mcm9tOmkudG8pJiYoIXJ8fGRuKHIsaS5tYXJrZXIpPDApJiYocj1pLm1hcmtlcik7cmV0dXJuIHJ9ZnVuY3Rpb24gZ24oZSl7cmV0dXJuIHBuKGUsITApfWZ1bmN0aW9uIHZuKGUpe3JldHVybiBwbihlLCExKX1mdW5jdGlvbiBtbihlLHQscixuLGkpe3ZhciBvPVpuKGUsdCksbD1JbyYmby5tYXJrZWRTcGFucztpZihsKWZvcih2YXIgcz0wO3M8bC5sZW5ndGg7KytzKXt2YXIgYT1sW3NdO2lmKGEubWFya2VyLmNvbGxhcHNlZCl7dmFyIHU9YS5tYXJrZXIuZmluZCgwKSxjPUZvKHUuZnJvbSxyKXx8aG4oYS5tYXJrZXIpLWhuKGkpLGg9Rm8odS50byxuKXx8Zm4oYS5tYXJrZXIpLWZuKGkpO2lmKCEoYz49MCYmMD49aHx8MD49YyYmaD49MCkmJigwPj1jJiYoRm8odS50byxyKT4wfHxhLm1hcmtlci5pbmNsdXNpdmVSaWdodCYmaS5pbmNsdXNpdmVMZWZ0KXx8Yz49MCYmKEZvKHUuZnJvbSxuKTwwfHxhLm1hcmtlci5pbmNsdXNpdmVMZWZ0JiZpLmluY2x1c2l2ZVJpZ2h0KSkpcmV0dXJuITB9fX1mdW5jdGlvbiB5bihlKXtmb3IodmFyIHQ7dD1nbihlKTspZT10LmZpbmQoLTEsITApLmxpbmU7cmV0dXJuIGV9ZnVuY3Rpb24gYm4oZSl7Zm9yKHZhciB0LHI7dD12bihlKTspZT10LmZpbmQoMSwhMCkubGluZSwocnx8KHI9W10pKS5wdXNoKGUpO3JldHVybiByfWZ1bmN0aW9uIHduKGUsdCl7dmFyIHI9Wm4oZSx0KSxuPXluKHIpO3JldHVybiByPT1uP3Q6dGkobil9ZnVuY3Rpb24geG4oZSx0KXtpZih0PmUubGFzdExpbmUoKSlyZXR1cm4gdDt2YXIgcixuPVpuKGUsdCk7aWYoIUNuKGUsbikpcmV0dXJuIHQ7Zm9yKDtyPXZuKG4pOyluPXIuZmluZCgxLCEwKS5saW5lO3JldHVybiB0aShuKSsxfWZ1bmN0aW9uIENuKGUsdCl7dmFyIHI9SW8mJnQubWFya2VkU3BhbnM7aWYocilmb3IodmFyIG4saT0wO2k8ci5sZW5ndGg7KytpKWlmKG49cltpXSxuLm1hcmtlci5jb2xsYXBzZWQpe2lmKG51bGw9PW4uZnJvbSlyZXR1cm4hMDtpZighbi5tYXJrZXIud2lkZ2V0Tm9kZSYmMD09bi5mcm9tJiZuLm1hcmtlci5pbmNsdXNpdmVMZWZ0JiZTbihlLHQsbikpcmV0dXJuITB9fWZ1bmN0aW9uIFNuKGUsdCxyKXtpZihudWxsPT1yLnRvKXt2YXIgbj1yLm1hcmtlci5maW5kKDEsITApO3JldHVybiBTbihlLG4ubGluZSxKcihuLmxpbmUubWFya2VkU3BhbnMsci5tYXJrZXIpKX1pZihyLm1hcmtlci5pbmNsdXNpdmVSaWdodCYmci50bz09dC50ZXh0Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGksbz0wO288dC5tYXJrZWRTcGFucy5sZW5ndGg7KytvKWlmKGk9dC5tYXJrZWRTcGFuc1tvXSxpLm1hcmtlci5jb2xsYXBzZWQmJiFpLm1hcmtlci53aWRnZXROb2RlJiZpLmZyb209PXIudG8mJihudWxsPT1pLnRvfHxpLnRvIT1yLmZyb20pJiYoaS5tYXJrZXIuaW5jbHVzaXZlTGVmdHx8ci5tYXJrZXIuaW5jbHVzaXZlUmlnaHQpJiZTbihlLHQsaSkpcmV0dXJuITB9ZnVuY3Rpb24gTG4oZSx0LHIpe25pKHQpPChlLmN1ck9wJiZlLmN1ck9wLnNjcm9sbFRvcHx8ZS5kb2Muc2Nyb2xsVG9wKSYmSXIoZSxudWxsLHIpfWZ1bmN0aW9uIFRuKGUpe2lmKG51bGwhPWUuaGVpZ2h0KXJldHVybiBlLmhlaWdodDt2YXIgdD1lLmRvYy5jbTtpZighdClyZXR1cm4gMDtpZighWWwoZG9jdW1lbnQuYm9keSxlLm5vZGUpKXt2YXIgcj0icG9zaXRpb246IHJlbGF0aXZlOyI7ZS5jb3Zlckd1dHRlciYmKHIrPSJtYXJnaW4tbGVmdDogLSIrdC5kaXNwbGF5Lmd1dHRlcnMub2Zmc2V0V2lkdGgrInB4OyIpLGUubm9IU2Nyb2xsJiYocis9IndpZHRoOiAiK3QuZGlzcGxheS53cmFwcGVyLmNsaWVudFdpZHRoKyJweDsiKSxLaSh0LmRpc3BsYXkubWVhc3VyZSxVaSgiZGl2IixbZS5ub2RlXSxudWxsLHIpKX1yZXR1cm4gZS5oZWlnaHQ9ZS5ub2RlLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0fWZ1bmN0aW9uIGtuKGUsdCxyLG4pe3ZhciBpPW5ldyB5bChlLHIsbiksbz1lLmNtO3JldHVybiBvJiZpLm5vSFNjcm9sbCYmKG8uZGlzcGxheS5hbGlnbldpZGdldHM9ITApLEJyKGUsdCwid2lkZ2V0IixmdW5jdGlvbih0KXt2YXIgcj10LndpZGdldHN8fCh0LndpZGdldHM9W10pO2lmKG51bGw9PWkuaW5zZXJ0QXQ/ci5wdXNoKGkpOnIuc3BsaWNlKE1hdGgubWluKHIubGVuZ3RoLTEsTWF0aC5tYXgoMCxpLmluc2VydEF0KSksMCxpKSxpLmxpbmU9dCxvJiYhQ24oZSx0KSl7dmFyIG49bmkodCk8ZS5zY3JvbGxUb3A7ZWkodCx0LmhlaWdodCtUbihpKSksbiYmSXIobyxudWxsLGkuaGVpZ2h0KSxvLmN1ck9wLmZvcmNlVXBkYXRlPSEwfXJldHVybiEwfSksaX1mdW5jdGlvbiBNbihlLHQscixuKXtlLnRleHQ9dCxlLnN0YXRlQWZ0ZXImJihlLnN0YXRlQWZ0ZXI9bnVsbCksZS5zdHlsZXMmJihlLnN0eWxlcz1udWxsKSxudWxsIT1lLm9yZGVyJiYoZS5vcmRlcj1udWxsKSx1bihlKSxjbihlLHIpO3ZhciBpPW4/bihlKToxO2khPWUuaGVpZ2h0JiZlaShlLGkpfWZ1bmN0aW9uIE5uKGUpe2UucGFyZW50PW51bGwsdW4oZSl9ZnVuY3Rpb24gV24oZSx0KXtpZihlKWZvcig7Oyl7dmFyIHI9ZS5tYXRjaCgvKD86XnxccyspbGluZS0oYmFja2dyb3VuZC0pPyhcUyspLyk7aWYoIXIpYnJlYWs7ZT1lLnNsaWNlKDAsci5pbmRleCkrZS5zbGljZShyLmluZGV4K3JbMF0ubGVuZ3RoKTt2YXIgbj1yWzFdPyJiZ0NsYXNzIjoidGV4dENsYXNzIjtudWxsPT10W25dP3Rbbl09clsyXTpuZXcgUmVnRXhwKCIoPzpefHMpIityWzJdKyIoPzokfHMpIikudGVzdCh0W25dKXx8KHRbbl0rPSIgIityWzJdKX1yZXR1cm4gZX1mdW5jdGlvbiBBbih0LHIpe2lmKHQuYmxhbmtMaW5lKXJldHVybiB0LmJsYW5rTGluZShyKTtpZih0LmlubmVyTW9kZSl7dmFyIG49ZS5pbm5lck1vZGUodCxyKTtyZXR1cm4gbi5tb2RlLmJsYW5rTGluZT9uLm1vZGUuYmxhbmtMaW5lKG4uc3RhdGUpOnZvaWQgMH19ZnVuY3Rpb24gT24odCxyLG4saSl7Zm9yKHZhciBvPTA7MTA+bztvKyspe2kmJihpWzBdPWUuaW5uZXJNb2RlKHQsbikubW9kZSk7dmFyIGw9dC50b2tlbihyLG4pO2lmKHIucG9zPnIuc3RhcnQpcmV0dXJuIGx9dGhyb3cgbmV3IEVycm9yKCJNb2RlICIrdC5uYW1lKyIgZmFpbGVkIHRvIGFkdmFuY2Ugc3RyZWFtLiIpfWZ1bmN0aW9uIERuKGUsdCxyLG4pe2Z1bmN0aW9uIGkoZSl7cmV0dXJue3N0YXJ0Omguc3RhcnQsZW5kOmgucG9zLHN0cmluZzpoLmN1cnJlbnQoKSx0eXBlOm98fG51bGwsc3RhdGU6ZT9zbChsLm1vZGUsYyk6Y319dmFyIG8sbD1lLmRvYyxzPWwubW9kZTt0PWdlKGwsdCk7dmFyIGEsdT1abihsLHQubGluZSksYz1VZShlLHQubGluZSxyKSxoPW5ldyBwbCh1LnRleHQsZS5vcHRpb25zLnRhYlNpemUpO2ZvcihuJiYoYT1bXSk7KG58fGgucG9zPHQuY2gpJiYhaC5lb2woKTspaC5zdGFydD1oLnBvcyxvPU9uKHMsaCxjKSxuJiZhLnB1c2goaSghMCkpO3JldHVybiBuP2E6aSgpfWZ1bmN0aW9uIEhuKGUsdCxyLG4saSxvLGwpe3ZhciBzPXIuZmxhdHRlblNwYW5zO251bGw9PXMmJihzPWUub3B0aW9ucy5mbGF0dGVuU3BhbnMpO3ZhciBhLHU9MCxjPW51bGwsaD1uZXcgcGwodCxlLm9wdGlvbnMudGFiU2l6ZSksZj1lLm9wdGlvbnMuYWRkTW9kZUNsYXNzJiZbbnVsbF07Zm9yKCIiPT10JiZXbihBbihyLG4pLG8pOyFoLmVvbCgpOyl7aWYoaC5wb3M+ZS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aD8ocz0hMSxsJiZJbihlLHQsbixoLnBvcyksaC5wb3M9dC5sZW5ndGgsYT1udWxsKTphPVduKE9uKHIsaCxuLGYpLG8pLGYpe3ZhciBkPWZbMF0ubmFtZTtkJiYoYT0ibS0iKyhhP2QrIiAiK2E6ZCkpfWlmKCFzfHxjIT1hKXtmb3IoO3U8aC5zdGFydDspdT1NYXRoLm1pbihoLnN0YXJ0LHUrNWU0KSxpKHUsYyk7Yz1hfWguc3RhcnQ9aC5wb3N9Zm9yKDt1PGgucG9zOyl7dmFyIHA9TWF0aC5taW4oaC5wb3MsdSs1ZTQpO2kocCxjKSx1PXB9fWZ1bmN0aW9uIFBuKGUsdCxyLG4pe3ZhciBpPVtlLnN0YXRlLm1vZGVHZW5dLG89e307SG4oZSx0LnRleHQsZS5kb2MubW9kZSxyLGZ1bmN0aW9uKGUsdCl7aS5wdXNoKGUsdCl9LG8sbik7Zm9yKHZhciBsPTA7bDxlLnN0YXRlLm92ZXJsYXlzLmxlbmd0aDsrK2wpe3ZhciBzPWUuc3RhdGUub3ZlcmxheXNbbF0sYT0xLHU9MDtIbihlLHQudGV4dCxzLm1vZGUsITAsZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9YTtlPnU7KXt2YXIgbj1pW2FdO24+ZSYmaS5zcGxpY2UoYSwxLGUsaVthKzFdLG4pLGErPTIsdT1NYXRoLm1pbihlLG4pfWlmKHQpaWYocy5vcGFxdWUpaS5zcGxpY2UocixhLXIsZSwiY20tb3ZlcmxheSAiK3QpLGE9cisyO2Vsc2UgZm9yKDthPnI7cis9Mil7dmFyIG89aVtyKzFdO2lbcisxXT0obz9vKyIgIjoiIikrImNtLW92ZXJsYXkgIit0fX0sbyl9cmV0dXJue3N0eWxlczppLGNsYXNzZXM6by5iZ0NsYXNzfHxvLnRleHRDbGFzcz9vOm51bGx9fWZ1bmN0aW9uIEVuKGUsdCxyKXtpZighdC5zdHlsZXN8fHQuc3R5bGVzWzBdIT1lLnN0YXRlLm1vZGVHZW4pe3ZhciBuPVVlKGUsdGkodCkpLGk9UG4oZSx0LHQudGV4dC5sZW5ndGg+ZS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aD9zbChlLmRvYy5tb2RlLG4pOm4pO3Quc3RhdGVBZnRlcj1uLHQuc3R5bGVzPWkuc3R5bGVzLGkuY2xhc3Nlcz90LnN0eWxlQ2xhc3Nlcz1pLmNsYXNzZXM6dC5zdHlsZUNsYXNzZXMmJih0LnN0eWxlQ2xhc3Nlcz1udWxsKSxyPT09ZS5kb2MuZnJvbnRpZXImJmUuZG9jLmZyb250aWVyKyt9cmV0dXJuIHQuc3R5bGVzfWZ1bmN0aW9uIEluKGUsdCxyLG4pe3ZhciBpPWUuZG9jLm1vZGUsbz1uZXcgcGwodCxlLm9wdGlvbnMudGFiU2l6ZSk7Zm9yKG8uc3RhcnQ9by5wb3M9bnx8MCwiIj09dCYmQW4oaSxyKTshby5lb2woKTspT24oaSxvLHIpLG8uc3RhcnQ9by5wb3N9ZnVuY3Rpb24gem4oZSx0KXtpZighZXx8L15ccyokLy50ZXN0KGUpKXJldHVybiBudWxsO3ZhciByPXQuYWRkTW9kZUNsYXNzP3hsOndsO3JldHVybiByW2VdfHwocltlXT1lLnJlcGxhY2UoL1xTKy9nLCJjbS0kJiIpKX1mdW5jdGlvbiBGbihlLHQpe3ZhciByPVVpKCJzcGFuIixudWxsLG51bGwseG8/InBhZGRpbmctcmlnaHQ6IC4xcHgiOm51bGwpLG49e3ByZTpVaSgicHJlIixbcl0sIkNvZGVNaXJyb3ItbGluZSIpLGNvbnRlbnQ6cixjb2w6MCxwb3M6MCxjbTplLHNwbGl0U3BhY2VzOihib3x8eG8pJiZlLmdldE9wdGlvbigibGluZVdyYXBwaW5nIil9O3QubWVhc3VyZT17fTtmb3IodmFyIGk9MDtpPD0odC5yZXN0P3QucmVzdC5sZW5ndGg6MCk7aSsrKXt2YXIgbyxsPWk/dC5yZXN0W2ktMV06dC5saW5lO24ucG9zPTAsbi5hZGRUb2tlbj1CbixRaShlLmRpc3BsYXkubWVhc3VyZSkmJihvPWlpKGwpKSYmKG4uYWRkVG9rZW49VW4obi5hZGRUb2tlbixvKSksbi5tYXA9W107dmFyIHM9dCE9ZS5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQmJnRpKGwpO0tuKGwsbixFbihlLGwscykpLGwuc3R5bGVDbGFzc2VzJiYobC5zdHlsZUNsYXNzZXMuYmdDbGFzcyYmKG4uYmdDbGFzcz1ZaShsLnN0eWxlQ2xhc3Nlcy5iZ0NsYXNzLG4uYmdDbGFzc3x8IiIpKSxsLnN0eWxlQ2xhc3Nlcy50ZXh0Q2xhc3MmJihuLnRleHRDbGFzcz1ZaShsLnN0eWxlQ2xhc3Nlcy50ZXh0Q2xhc3Msbi50ZXh0Q2xhc3N8fCIiKSkpLDA9PW4ubWFwLmxlbmd0aCYmbi5tYXAucHVzaCgwLDAsbi5jb250ZW50LmFwcGVuZENoaWxkKFppKGUuZGlzcGxheS5tZWFzdXJlKSkpLDA9PWk/KHQubWVhc3VyZS5tYXA9bi5tYXAsdC5tZWFzdXJlLmNhY2hlPXt9KTooKHQubWVhc3VyZS5tYXBzfHwodC5tZWFzdXJlLm1hcHM9W10pKS5wdXNoKG4ubWFwKSwodC5tZWFzdXJlLmNhY2hlc3x8KHQubWVhc3VyZS5jYWNoZXM9W10pKS5wdXNoKHt9KSl9cmV0dXJuIHhvJiYvXGJjbS10YWJcYi8udGVzdChuLmNvbnRlbnQubGFzdENoaWxkLmNsYXNzTmFtZSkmJihuLmNvbnRlbnQuY2xhc3NOYW1lPSJjbS10YWItd3JhcC1oYWNrIiksRGwoZSwicmVuZGVyTGluZSIsZSx0LmxpbmUsbi5wcmUpLG4ucHJlLmNsYXNzTmFtZSYmKG4udGV4dENsYXNzPVlpKG4ucHJlLmNsYXNzTmFtZSxuLnRleHRDbGFzc3x8IiIpKSxufWZ1bmN0aW9uIFJuKGUpe3ZhciB0PVVpKCJzcGFuIiwi4oCiIiwiY20taW52YWxpZGNoYXIiKTtyZXR1cm4gdC50aXRsZT0iXFx1IitlLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLHQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0LnRpdGxlKSx0fWZ1bmN0aW9uIEJuKGUsdCxyLG4saSxvLGwpe2lmKHQpe3ZhciBzPWUuc3BsaXRTcGFjZXM/dC5yZXBsYWNlKC8gezMsfS9nLEduKTp0LGE9ZS5jbS5zdGF0ZS5zcGVjaWFsQ2hhcnMsdT0hMTtpZihhLnRlc3QodCkpZm9yKHZhciBjPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxoPTA7Oyl7YS5sYXN0SW5kZXg9aDt2YXIgZj1hLmV4ZWModCksZD1mP2YuaW5kZXgtaDp0Lmxlbmd0aC1oO2lmKGQpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMuc2xpY2UoaCxoK2QpKTtibyYmOT53bz9jLmFwcGVuZENoaWxkKFVpKCJzcGFuIixbcF0pKTpjLmFwcGVuZENoaWxkKHApLGUubWFwLnB1c2goZS5wb3MsZS5wb3MrZCxwKSxlLmNvbCs9ZCxlLnBvcys9ZH1pZighZilicmVhaztpZihoKz1kKzEsIgkiPT1mWzBdKXt2YXIgZz1lLmNtLm9wdGlvbnMudGFiU2l6ZSx2PWctZS5jb2wlZyxwPWMuYXBwZW5kQ2hpbGQoVWkoInNwYW4iLE9pKHYpLCJjbS10YWIiKSk7cC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKSxwLnNldEF0dHJpYnV0ZSgiY20tdGV4dCIsIgkiKSxlLmNvbCs9dn1lbHNlIGlmKCJcciI9PWZbMF18fCJcbiI9PWZbMF0pe3ZhciBwPWMuYXBwZW5kQ2hpbGQoVWkoInNwYW4iLCJcciI9PWZbMF0/IuKQjSI6IuKQpCIsImNtLWludmFsaWRjaGFyIikpO3Auc2V0QXR0cmlidXRlKCJjbS10ZXh0IixmWzBdKSxlLmNvbCs9MX1lbHNle3ZhciBwPWUuY20ub3B0aW9ucy5zcGVjaWFsQ2hhclBsYWNlaG9sZGVyKGZbMF0pO3Auc2V0QXR0cmlidXRlKCJjbS10ZXh0IixmWzBdKSxibyYmOT53bz9jLmFwcGVuZENoaWxkKFVpKCJzcGFuIixbcF0pKTpjLmFwcGVuZENoaWxkKHApLGUuY29sKz0xfWUubWFwLnB1c2goZS5wb3MsZS5wb3MrMSxwKSxlLnBvcysrfWVsc2V7ZS5jb2wrPXQubGVuZ3RoO3ZhciBjPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMpO2UubWFwLnB1c2goZS5wb3MsZS5wb3MrdC5sZW5ndGgsYyksYm8mJjk+d28mJih1PSEwKSxlLnBvcys9dC5sZW5ndGh9aWYocnx8bnx8aXx8dXx8bCl7dmFyIG09cnx8IiI7biYmKG0rPW4pLGkmJihtKz1pKTt2YXIgeT1VaSgic3BhbiIsW2NdLG0sbCk7cmV0dXJuIG8mJih5LnRpdGxlPW8pLGUuY29udGVudC5hcHBlbmRDaGlsZCh5KX1lLmNvbnRlbnQuYXBwZW5kQ2hpbGQoYyl9fWZ1bmN0aW9uIEduKGUpe2Zvcih2YXIgdD0iICIscj0wO3I8ZS5sZW5ndGgtMjsrK3IpdCs9ciUyPyIgIjoiwqAiO3JldHVybiB0Kz0iICJ9ZnVuY3Rpb24gVW4oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixuLGksbyxsLHMsYSl7aT1pP2krIiBjbS1mb3JjZS1ib3JkZXIiOiJjbS1mb3JjZS1ib3JkZXIiO2Zvcih2YXIgdT1yLnBvcyxjPXUrbi5sZW5ndGg7Oyl7Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspe3ZhciBmPXRbaF07aWYoZi50bz51JiZmLmZyb208PXUpYnJlYWt9aWYoZi50bz49YylyZXR1cm4gZShyLG4saSxvLGwscyxhKTtlKHIsbi5zbGljZSgwLGYudG8tdSksaSxvLG51bGwscyxhKSxvPW51bGwsbj1uLnNsaWNlKGYudG8tdSksdT1mLnRvfX19ZnVuY3Rpb24gVm4oZSx0LHIsbil7dmFyIGk9IW4mJnIud2lkZ2V0Tm9kZTtpJiZlLm1hcC5wdXNoKGUucG9zLGUucG9zK3QsaSksIW4mJmUuY20uZGlzcGxheS5pbnB1dC5uZWVkc0NvbnRlbnRBdHRyaWJ1dGUmJihpfHwoaT1lLmNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKSksaS5zZXRBdHRyaWJ1dGUoImNtLW1hcmtlciIsci5pZCkpLGkmJihlLmNtLmRpc3BsYXkuaW5wdXQuc2V0VW5lZGl0YWJsZShpKSxlLmNvbnRlbnQuYXBwZW5kQ2hpbGQoaSkpLGUucG9zKz10fWZ1bmN0aW9uIEtuKGUsdCxyKXt2YXIgbj1lLm1hcmtlZFNwYW5zLGk9ZS50ZXh0LG89MDtpZihuKWZvcih2YXIgbCxzLGEsdSxjLGgsZixkPWkubGVuZ3RoLHA9MCxnPTEsdj0iIixtPTA7Oyl7aWYobT09cCl7YT11PWM9aD1zPSIiLGY9bnVsbCxtPTEvMDtmb3IodmFyIHk9W10sYj0wO2I8bi5sZW5ndGg7KytiKXt2YXIgdz1uW2JdLHg9dy5tYXJrZXI7ImJvb2ttYXJrIj09eC50eXBlJiZ3LmZyb209PXAmJngud2lkZ2V0Tm9kZT95LnB1c2goeCk6dy5mcm9tPD1wJiYobnVsbD09dy50b3x8dy50bz5wfHx4LmNvbGxhcHNlZCYmdy50bz09cCYmdy5mcm9tPT1wKT8obnVsbCE9dy50byYmdy50byE9cCYmbT53LnRvJiYobT13LnRvLHU9IiIpLHguY2xhc3NOYW1lJiYoYSs9IiAiK3guY2xhc3NOYW1lKSx4LmNzcyYmKHM9KHM/cysiOyI6IiIpK3guY3NzKSx4LnN0YXJ0U3R5bGUmJncuZnJvbT09cCYmKGMrPSIgIit4LnN0YXJ0U3R5bGUpLHguZW5kU3R5bGUmJncudG89PW0mJih1Kz0iICIreC5lbmRTdHlsZSkseC50aXRsZSYmIWgmJihoPXgudGl0bGUpLHguY29sbGFwc2VkJiYoIWZ8fGRuKGYubWFya2VyLHgpPDApJiYoZj13KSk6dy5mcm9tPnAmJm0+dy5mcm9tJiYobT13LmZyb20pfWlmKGYmJihmLmZyb218fDApPT1wKXtpZihWbih0LChudWxsPT1mLnRvP2QrMTpmLnRvKS1wLGYubWFya2VyLG51bGw9PWYuZnJvbSksbnVsbD09Zi50bylyZXR1cm47Zi50bz09cCYmKGY9ITEpfWlmKCFmJiZ5Lmxlbmd0aClmb3IodmFyIGI9MDtiPHkubGVuZ3RoOysrYilWbih0LDAseVtiXSl9aWYocD49ZClicmVhaztmb3IodmFyIEM9TWF0aC5taW4oZCxtKTs7KXtpZih2KXt2YXIgUz1wK3YubGVuZ3RoO2lmKCFmKXt2YXIgTD1TPkM/di5zbGljZSgwLEMtcCk6djt0LmFkZFRva2VuKHQsTCxsP2wrYTphLGMscCtMLmxlbmd0aD09bT91OiIiLGgscyl9aWYoUz49Qyl7dj12LnNsaWNlKEMtcCkscD1DO2JyZWFrfXA9UyxjPSIifXY9aS5zbGljZShvLG89cltnKytdKSxsPXpuKHJbZysrXSx0LmNtLm9wdGlvbnMpfX1lbHNlIGZvcih2YXIgZz0xO2c8ci5sZW5ndGg7Zys9Mil0LmFkZFRva2VuKHQsaS5zbGljZShvLG89cltnXSksem4ocltnKzFdLHQuY20ub3B0aW9ucykpfWZ1bmN0aW9uIGpuKGUsdCl7cmV0dXJuIDA9PXQuZnJvbS5jaCYmMD09dC50by5jaCYmIiI9PURpKHQudGV4dCkmJighZS5jbXx8ZS5jbS5vcHRpb25zLndob2xlTGluZVVwZGF0ZUJlZm9yZSl9ZnVuY3Rpb24gWG4oZSx0LHIsbil7ZnVuY3Rpb24gaShlKXtyZXR1cm4gcj9yW2VdOm51bGx9ZnVuY3Rpb24gbyhlLHIsaSl7TW4oZSxyLGksbiksTGkoZSwiY2hhbmdlIixlLHQpfWZ1bmN0aW9uIGwoZSx0KXtmb3IodmFyIHI9ZSxvPVtdO3Q+cjsrK3Ipby5wdXNoKG5ldyBibCh1W3JdLGkociksbikpO3JldHVybiBvfXZhciBzPXQuZnJvbSxhPXQudG8sdT10LnRleHQsYz1abihlLHMubGluZSksaD1abihlLGEubGluZSksZj1EaSh1KSxkPWkodS5sZW5ndGgtMSkscD1hLmxpbmUtcy5saW5lO2lmKHQuZnVsbCllLmluc2VydCgwLGwoMCx1Lmxlbmd0aCkpLGUucmVtb3ZlKHUubGVuZ3RoLGUuc2l6ZS11Lmxlbmd0aCk7ZWxzZSBpZihqbihlLHQpKXt2YXIgZz1sKDAsdS5sZW5ndGgtMSk7byhoLGgudGV4dCxkKSxwJiZlLnJlbW92ZShzLmxpbmUscCksZy5sZW5ndGgmJmUuaW5zZXJ0KHMubGluZSxnKX1lbHNlIGlmKGM9PWgpaWYoMT09dS5sZW5ndGgpbyhjLGMudGV4dC5zbGljZSgwLHMuY2gpK2YrYy50ZXh0LnNsaWNlKGEuY2gpLGQpO2Vsc2V7dmFyIGc9bCgxLHUubGVuZ3RoLTEpO2cucHVzaChuZXcgYmwoZitjLnRleHQuc2xpY2UoYS5jaCksZCxuKSksbyhjLGMudGV4dC5zbGljZSgwLHMuY2gpK3VbMF0saSgwKSksZS5pbnNlcnQocy5saW5lKzEsZyl9ZWxzZSBpZigxPT11Lmxlbmd0aClvKGMsYy50ZXh0LnNsaWNlKDAscy5jaCkrdVswXStoLnRleHQuc2xpY2UoYS5jaCksaSgwKSksZS5yZW1vdmUocy5saW5lKzEscCk7ZWxzZXtvKGMsYy50ZXh0LnNsaWNlKDAscy5jaCkrdVswXSxpKDApKSxvKGgsZitoLnRleHQuc2xpY2UoYS5jaCksZCk7dmFyIGc9bCgxLHUubGVuZ3RoLTEpO3A+MSYmZS5yZW1vdmUocy5saW5lKzEscC0xKSxlLmluc2VydChzLmxpbmUrMSxnKX1MaShlLCJjaGFuZ2UiLGUsdCl9ZnVuY3Rpb24gWW4oZSl7dGhpcy5saW5lcz1lLHRoaXMucGFyZW50PW51bGw7Zm9yKHZhciB0PTAscj0wO3Q8ZS5sZW5ndGg7Kyt0KWVbdF0ucGFyZW50PXRoaXMscis9ZVt0XS5oZWlnaHQ7dGhpcy5oZWlnaHQ9cn1mdW5jdGlvbiBfbihlKXt0aGlzLmNoaWxkcmVuPWU7Zm9yKHZhciB0PTAscj0wLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIGk9ZVtuXTt0Kz1pLmNodW5rU2l6ZSgpLHIrPWkuaGVpZ2h0LGkucGFyZW50PXRoaXN9dGhpcy5zaXplPXQsdGhpcy5oZWlnaHQ9cix0aGlzLnBhcmVudD1udWxsfWZ1bmN0aW9uICRuKGUsdCxyKXtmdW5jdGlvbiBuKGUsaSxvKXtpZihlLmxpbmtlZClmb3IodmFyIGw9MDtsPGUubGlua2VkLmxlbmd0aDsrK2wpe3ZhciBzPWUubGlua2VkW2xdO2lmKHMuZG9jIT1pKXt2YXIgYT1vJiZzLnNoYXJlZEhpc3Q7KCFyfHxhKSYmKHQocy5kb2MsYSksbihzLmRvYyxlLGEpKX19fW4oZSxudWxsLCEwKX1mdW5jdGlvbiBxbihlLHQpe2lmKHQuY20pdGhyb3cgbmV3IEVycm9yKCJUaGlzIGRvY3VtZW50IGlzIGFscmVhZHkgaW4gdXNlLiIpO2UuZG9jPXQsdC5jbT1lLGwoZSkscihlKSxlLm9wdGlvbnMubGluZVdyYXBwaW5nfHxmKGUpLGUub3B0aW9ucy5tb2RlPXQubW9kZU9wdGlvbixFdChlKX1mdW5jdGlvbiBabihlLHQpe2lmKHQtPWUuZmlyc3QsMD50fHx0Pj1lLnNpemUpdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBpcyBubyBsaW5lICIrKHQrZS5maXJzdCkrIiBpbiB0aGUgZG9jdW1lbnQuIik7Zm9yKHZhciByPWU7IXIubGluZXM7KWZvcih2YXIgbj0wOzsrK24pe3ZhciBpPXIuY2hpbGRyZW5bbl0sbz1pLmNodW5rU2l6ZSgpO2lmKG8+dCl7cj1pO2JyZWFrfXQtPW99cmV0dXJuIHIubGluZXNbdF19ZnVuY3Rpb24gUW4oZSx0LHIpe3ZhciBuPVtdLGk9dC5saW5lO3JldHVybiBlLml0ZXIodC5saW5lLHIubGluZSsxLGZ1bmN0aW9uKGUpe3ZhciBvPWUudGV4dDtpPT1yLmxpbmUmJihvPW8uc2xpY2UoMCxyLmNoKSksaT09dC5saW5lJiYobz1vLnNsaWNlKHQuY2gpKSxuLnB1c2gobyksKytpfSksbn1mdW5jdGlvbiBKbihlLHQscil7dmFyIG49W107cmV0dXJuIGUuaXRlcih0LHIsZnVuY3Rpb24oZSl7bi5wdXNoKGUudGV4dCl9KSxufWZ1bmN0aW9uIGVpKGUsdCl7dmFyIHI9dC1lLmhlaWdodDtpZihyKWZvcih2YXIgbj1lO247bj1uLnBhcmVudCluLmhlaWdodCs9cn1mdW5jdGlvbiB0aShlKXtpZihudWxsPT1lLnBhcmVudClyZXR1cm4gbnVsbDtmb3IodmFyIHQ9ZS5wYXJlbnQscj1IaSh0LmxpbmVzLGUpLG49dC5wYXJlbnQ7bjt0PW4sbj1uLnBhcmVudClmb3IodmFyIGk9MDtuLmNoaWxkcmVuW2ldIT10OysraSlyKz1uLmNoaWxkcmVuW2ldLmNodW5rU2l6ZSgpO3JldHVybiByK3QuZmlyc3R9ZnVuY3Rpb24gcmkoZSx0KXt2YXIgcj1lLmZpcnN0O2U6ZG97Zm9yKHZhciBuPTA7bjxlLmNoaWxkcmVuLmxlbmd0aDsrK24pe3ZhciBpPWUuY2hpbGRyZW5bbl0sbz1pLmhlaWdodDtpZihvPnQpe2U9aTtjb250aW51ZSBlfXQtPW8scis9aS5jaHVua1NpemUoKX1yZXR1cm4gcn13aGlsZSghZS5saW5lcyk7Zm9yKHZhciBuPTA7bjxlLmxpbmVzLmxlbmd0aDsrK24pe3ZhciBsPWUubGluZXNbbl0scz1sLmhlaWdodDtpZihzPnQpYnJlYWs7dC09c31yZXR1cm4gcitufWZ1bmN0aW9uIG5pKGUpe2U9eW4oZSk7Zm9yKHZhciB0PTAscj1lLnBhcmVudCxuPTA7bjxyLmxpbmVzLmxlbmd0aDsrK24pe3ZhciBpPXIubGluZXNbbl07aWYoaT09ZSlicmVhazt0Kz1pLmhlaWdodH1mb3IodmFyIG89ci5wYXJlbnQ7bztyPW8sbz1yLnBhcmVudClmb3IodmFyIG49MDtuPG8uY2hpbGRyZW4ubGVuZ3RoOysrbil7dmFyIGw9by5jaGlsZHJlbltuXTtpZihsPT1yKWJyZWFrO3QrPWwuaGVpZ2h0fXJldHVybiB0fWZ1bmN0aW9uIGlpKGUpe3ZhciB0PWUub3JkZXI7cmV0dXJuIG51bGw9PXQmJih0PWUub3JkZXI9bHMoZS50ZXh0KSksdH1mdW5jdGlvbiBvaShlKXt0aGlzLmRvbmU9W10sdGhpcy51bmRvbmU9W10sdGhpcy51bmRvRGVwdGg9MS8wLHRoaXMubGFzdE1vZFRpbWU9dGhpcy5sYXN0U2VsVGltZT0wLHRoaXMubGFzdE9wPXRoaXMubGFzdFNlbE9wPW51bGwsdGhpcy5sYXN0T3JpZ2luPXRoaXMubGFzdFNlbE9yaWdpbj1udWxsLHRoaXMuZ2VuZXJhdGlvbj10aGlzLm1heEdlbmVyYXRpb249ZXx8MX1mdW5jdGlvbiBsaShlLHQpe3ZhciByPXtmcm9tOlkodC5mcm9tKSx0bzpRbyh0KSx0ZXh0OlFuKGUsdC5mcm9tLHQudG8pfTtyZXR1cm4gZGkoZSxyLHQuZnJvbS5saW5lLHQudG8ubGluZSsxKSwkbihlLGZ1bmN0aW9uKGUpe2RpKGUscix0LmZyb20ubGluZSx0LnRvLmxpbmUrMSl9LCEwKSxyfWZ1bmN0aW9uIHNpKGUpe2Zvcig7ZS5sZW5ndGg7KXt2YXIgdD1EaShlKTtpZighdC5yYW5nZXMpYnJlYWs7ZS5wb3AoKX19ZnVuY3Rpb24gYWkoZSx0KXtyZXR1cm4gdD8oc2koZS5kb25lKSxEaShlLmRvbmUpKTplLmRvbmUubGVuZ3RoJiYhRGkoZS5kb25lKS5yYW5nZXM/RGkoZS5kb25lKTplLmRvbmUubGVuZ3RoPjEmJiFlLmRvbmVbZS5kb25lLmxlbmd0aC0yXS5yYW5nZXM/KGUuZG9uZS5wb3AoKSxEaShlLmRvbmUpKTp2b2lkIDB9ZnVuY3Rpb24gdWkoZSx0LHIsbil7dmFyIGk9ZS5oaXN0b3J5O2kudW5kb25lLmxlbmd0aD0wO3ZhciBvLGw9K25ldyBEYXRlO2lmKChpLmxhc3RPcD09bnx8aS5sYXN0T3JpZ2luPT10Lm9yaWdpbiYmdC5vcmlnaW4mJigiKyI9PXQub3JpZ2luLmNoYXJBdCgwKSYmZS5jbSYmaS5sYXN0TW9kVGltZT5sLWUuY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheXx8IioiPT10Lm9yaWdpbi5jaGFyQXQoMCkpKSYmKG89YWkoaSxpLmxhc3RPcD09bikpKXt2YXIgcz1EaShvLmNoYW5nZXMpOzA9PUZvKHQuZnJvbSx0LnRvKSYmMD09Rm8odC5mcm9tLHMudG8pP3MudG89UW8odCk6by5jaGFuZ2VzLnB1c2gobGkoZSx0KSl9ZWxzZXt2YXIgYT1EaShpLmRvbmUpO2ZvcihhJiZhLnJhbmdlc3x8ZmkoZS5zZWwsaS5kb25lKSxvPXtjaGFuZ2VzOltsaShlLHQpXSxnZW5lcmF0aW9uOmkuZ2VuZXJhdGlvbn0saS5kb25lLnB1c2gobyk7aS5kb25lLmxlbmd0aD5pLnVuZG9EZXB0aDspaS5kb25lLnNoaWZ0KCksaS5kb25lWzBdLnJhbmdlc3x8aS5kb25lLnNoaWZ0KCl9aS5kb25lLnB1c2gociksaS5nZW5lcmF0aW9uPSsraS5tYXhHZW5lcmF0aW9uLGkubGFzdE1vZFRpbWU9aS5sYXN0U2VsVGltZT1sLGkubGFzdE9wPWkubGFzdFNlbE9wPW4saS5sYXN0T3JpZ2luPWkubGFzdFNlbE9yaWdpbj10Lm9yaWdpbixzfHxEbChlLCJoaXN0b3J5QWRkZWQiKX1mdW5jdGlvbiBjaShlLHQscixuKXt2YXIgaT10LmNoYXJBdCgwKTtyZXR1cm4iKiI9PWl8fCIrIj09aSYmci5yYW5nZXMubGVuZ3RoPT1uLnJhbmdlcy5sZW5ndGgmJnIuc29tZXRoaW5nU2VsZWN0ZWQoKT09bi5zb21ldGhpbmdTZWxlY3RlZCgpJiZuZXcgRGF0ZS1lLmhpc3RvcnkubGFzdFNlbFRpbWU8PShlLmNtP2UuY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheTo1MDApfWZ1bmN0aW9uIGhpKGUsdCxyLG4pe3ZhciBpPWUuaGlzdG9yeSxvPW4mJm4ub3JpZ2luO3I9PWkubGFzdFNlbE9wfHxvJiZpLmxhc3RTZWxPcmlnaW49PW8mJihpLmxhc3RNb2RUaW1lPT1pLmxhc3RTZWxUaW1lJiZpLmxhc3RPcmlnaW49PW98fGNpKGUsbyxEaShpLmRvbmUpLHQpKT9pLmRvbmVbaS5kb25lLmxlbmd0aC0xXT10OmZpKHQsaS5kb25lKSxpLmxhc3RTZWxUaW1lPStuZXcgRGF0ZSxpLmxhc3RTZWxPcmlnaW49byxpLmxhc3RTZWxPcD1yLG4mJm4uY2xlYXJSZWRvIT09ITEmJnNpKGkudW5kb25lKX1mdW5jdGlvbiBmaShlLHQpe3ZhciByPURpKHQpO3ImJnIucmFuZ2VzJiZyLmVxdWFscyhlKXx8dC5wdXNoKGUpfWZ1bmN0aW9uIGRpKGUsdCxyLG4pe3ZhciBpPXRbInNwYW5zXyIrZS5pZF0sbz0wO2UuaXRlcihNYXRoLm1heChlLmZpcnN0LHIpLE1hdGgubWluKGUuZmlyc3QrZS5zaXplLG4pLGZ1bmN0aW9uKHIpe3IubWFya2VkU3BhbnMmJigoaXx8KGk9dFsic3BhbnNfIitlLmlkXT17fSkpW29dPXIubWFya2VkU3BhbnMpLCsrb30pfWZ1bmN0aW9uIHBpKGUpe2lmKCFlKXJldHVybiBudWxsO2Zvcih2YXIgdCxyPTA7cjxlLmxlbmd0aDsrK3IpZVtyXS5tYXJrZXIuZXhwbGljaXRseUNsZWFyZWQ/dHx8KHQ9ZS5zbGljZSgwLHIpKTp0JiZ0LnB1c2goZVtyXSk7cmV0dXJuIHQ/dC5sZW5ndGg/dDpudWxsOmV9ZnVuY3Rpb24gZ2koZSx0KXt2YXIgcj10WyJzcGFuc18iK2UuaWRdO2lmKCFyKXJldHVybiBudWxsO2Zvcih2YXIgbj0wLGk9W107bjx0LnRleHQubGVuZ3RoOysrbilpLnB1c2gocGkocltuXSkpO3JldHVybiBpfWZ1bmN0aW9uIHZpKGUsdCxyKXtmb3IodmFyIG49MCxpPVtdO248ZS5sZW5ndGg7KytuKXt2YXIgbz1lW25dO2lmKG8ucmFuZ2VzKWkucHVzaChyP2NlLnByb3RvdHlwZS5kZWVwQ29weS5jYWxsKG8pOm8pO2Vsc2V7dmFyIGw9by5jaGFuZ2VzLHM9W107aS5wdXNoKHtjaGFuZ2VzOnN9KTtmb3IodmFyIGE9MDthPGwubGVuZ3RoOysrYSl7dmFyIHUsYz1sW2FdO2lmKHMucHVzaCh7ZnJvbTpjLmZyb20sdG86Yy50byx0ZXh0OmMudGV4dH0pLHQpZm9yKHZhciBoIGluIGMpKHU9aC5tYXRjaCgvXnNwYW5zXyhcZCspJC8pKSYmSGkodCxOdW1iZXIodVsxXSkpPi0xJiYoRGkocylbaF09Y1toXSxkZWxldGUgY1toXSl9fX1yZXR1cm4gaX1mdW5jdGlvbiBtaShlLHQscixuKXtyPGUubGluZT9lLmxpbmUrPW46dDxlLmxpbmUmJihlLmxpbmU9dCxlLmNoPTApfWZ1bmN0aW9uIHlpKGUsdCxyLG4pe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7KytpKXt2YXIgbz1lW2ldLGw9ITA7aWYoby5yYW5nZXMpe28uY29waWVkfHwobz1lW2ldPW8uZGVlcENvcHkoKSxvLmNvcGllZD0hMCk7Zm9yKHZhciBzPTA7czxvLnJhbmdlcy5sZW5ndGg7cysrKW1pKG8ucmFuZ2VzW3NdLmFuY2hvcix0LHIsbiksbWkoby5yYW5nZXNbc10uaGVhZCx0LHIsbil9ZWxzZXtmb3IodmFyIHM9MDtzPG8uY2hhbmdlcy5sZW5ndGg7KytzKXt2YXIgYT1vLmNoYW5nZXNbc107aWYocjxhLmZyb20ubGluZSlhLmZyb209em8oYS5mcm9tLmxpbmUrbixhLmZyb20uY2gpLGEudG89em8oYS50by5saW5lK24sYS50by5jaCk7ZWxzZSBpZih0PD1hLnRvLmxpbmUpe2w9ITE7YnJlYWt9fWx8fChlLnNwbGljZSgwLGkrMSksaT0wKX19fWZ1bmN0aW9uIGJpKGUsdCl7dmFyIHI9dC5mcm9tLmxpbmUsbj10LnRvLmxpbmUsaT10LnRleHQubGVuZ3RoLShuLXIpLTE7eWkoZS5kb25lLHIsbixpKSx5aShlLnVuZG9uZSxyLG4saSl9ZnVuY3Rpb24gd2koZSl7cmV0dXJuIG51bGwhPWUuZGVmYXVsdFByZXZlbnRlZD9lLmRlZmF1bHRQcmV2ZW50ZWQ6MD09ZS5yZXR1cm5WYWx1ZX1mdW5jdGlvbiB4aShlKXtyZXR1cm4gZS50YXJnZXR8fGUuc3JjRWxlbWVudH1mdW5jdGlvbiBDaShlKXt2YXIgdD1lLndoaWNoO3JldHVybiBudWxsPT10JiYoMSZlLmJ1dHRvbj90PTE6MiZlLmJ1dHRvbj90PTM6NCZlLmJ1dHRvbiYmKHQ9MikpLEFvJiZlLmN0cmxLZXkmJjE9PXQmJih0PTMpLHR9ZnVuY3Rpb24gU2koZSx0LHIpe3ZhciBuPWUuX2hhbmRsZXJzJiZlLl9oYW5kbGVyc1t0XTtyZXR1cm4gcj9uJiZuLmxlbmd0aD4wP24uc2xpY2UoKTpBbDpufHxBbH1mdW5jdGlvbiBMaShlLHQpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseShudWxsLG8pfX12YXIgbj1TaShlLHQsITEpO2lmKG4ubGVuZ3RoKXt2YXIgaSxvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtLbz9pPUtvLmRlbGF5ZWRDYWxsYmFja3M6SGw/aT1IbDooaT1IbD1bXSxzZXRUaW1lb3V0KFRpLDApKTtmb3IodmFyIGw9MDtsPG4ubGVuZ3RoOysrbClpLnB1c2gocihuW2xdKSl9fWZ1bmN0aW9uIFRpKCl7dmFyIGU9SGw7SGw9bnVsbDtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCllW3RdKCl9ZnVuY3Rpb24ga2koZSx0LHIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3R5cGU6dCxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH19KSxEbChlLHJ8fHQudHlwZSxlLHQpLHdpKHQpfHx0LmNvZGVtaXJyb3JJZ25vcmV9ZnVuY3Rpb24gTWkoZSl7dmFyIHQ9ZS5faGFuZGxlcnMmJmUuX2hhbmRsZXJzLmN1cnNvckFjdGl2aXR5O2lmKHQpZm9yKHZhciByPWUuY3VyT3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVyc3x8KGUuY3VyT3AuY3Vyc29yQWN0aXZpdHlIYW5kbGVycz1bXSksbj0wO248dC5sZW5ndGg7KytuKS0xPT1IaShyLHRbbl0pJiZyLnB1c2godFtuXSl9ZnVuY3Rpb24gTmkoZSx0KXtyZXR1cm4gU2koZSx0KS5sZW5ndGg+MH1mdW5jdGlvbiBXaShlKXtlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe1dsKHRoaXMsZSx0KX0sZS5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCl7T2wodGhpcyxlLHQpfX1mdW5jdGlvbiBBaSgpe3RoaXMuaWQ9bnVsbH1mdW5jdGlvbiBPaShlKXtmb3IoO0dsLmxlbmd0aDw9ZTspR2wucHVzaChEaShHbCkrIiAiKTtyZXR1cm4gR2xbZV19ZnVuY3Rpb24gRGkoZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19ZnVuY3Rpb24gSGkoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoOysrcilpZihlW3JdPT10KXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIFBpKGUsdCl7Zm9yKHZhciByPVtdLG49MDtuPGUubGVuZ3RoO24rKylyW25dPXQoZVtuXSxuKTtyZXR1cm4gcn1mdW5jdGlvbiBFaSgpe31mdW5jdGlvbiBJaShlLHQpe3ZhciByO3JldHVybiBPYmplY3QuY3JlYXRlP3I9T2JqZWN0LmNyZWF0ZShlKTooRWkucHJvdG90eXBlPWUscj1uZXcgRWkpLHQmJnppKHQscikscn1mdW5jdGlvbiB6aShlLHQscil7dHx8KHQ9e30pO2Zvcih2YXIgbiBpbiBlKSFlLmhhc093blByb3BlcnR5KG4pfHxyPT09ITEmJnQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIEZpKGUpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiBSaShlLHQpe3JldHVybiB0P3Quc291cmNlLmluZGV4T2YoIlxcdyIpPi0xJiZqbChlKT8hMDp0LnRlc3QoZSk6amwoZSl9ZnVuY3Rpb24gQmkoZSl7Zm9yKHZhciB0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSYmZVt0XSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBHaShlKXtyZXR1cm4gZS5jaGFyQ29kZUF0KDApPj03NjgmJlhsLnRlc3QoZSl9ZnVuY3Rpb24gVWkoZSx0LHIsbil7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtpZihyJiYoaS5jbGFzc05hbWU9ciksbiYmKGkuc3R5bGUuY3NzVGV4dD1uKSwic3RyaW5nIj09dHlwZW9mIHQpaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSk7ZWxzZSBpZih0KWZvcih2YXIgbz0wO288dC5sZW5ndGg7KytvKWkuYXBwZW5kQ2hpbGQodFtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gVmkoZSl7Zm9yKHZhciB0PWUuY2hpbGROb2Rlcy5sZW5ndGg7dD4wOy0tdCllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7cmV0dXJuIGV9ZnVuY3Rpb24gS2koZSx0KXtyZXR1cm4gVmkoZSkuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24gamkoKXtmb3IodmFyIGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtlJiZlLnJvb3QmJmUucm9vdC5hY3RpdmVFbGVtZW50OyllPWUucm9vdC5hY3RpdmVFbGVtZW50O3JldHVybiBlfWZ1bmN0aW9uIFhpKGUpe3JldHVybiBuZXcgUmVnRXhwKCIoXnxcXHMpIitlKyIoPzokfFxccylcXHMqIil9ZnVuY3Rpb24gWWkoZSx0KXtmb3IodmFyIHI9ZS5zcGxpdCgiICIpLG49MDtuPHIubGVuZ3RoO24rKylyW25dJiYhWGkocltuXSkudGVzdCh0KSYmKHQrPSIgIityW25dKTtyZXR1cm4gdH1mdW5jdGlvbiBfaShlKXtpZihkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpZm9yKHZhciB0PWRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiQ29kZU1pcnJvciIpLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXS5Db2RlTWlycm9yO24mJmUobil9fWZ1bmN0aW9uICRpKCl7UWx8fChxaSgpLFFsPSEwKX1mdW5jdGlvbiBxaSgpe3ZhciBlO1dsKHdpbmRvdywicmVzaXplIixmdW5jdGlvbigpe251bGw9PWUmJihlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlPW51bGwsX2koS3QpfSwxMDApKX0pLFdsKHdpbmRvdywiYmx1ciIsZnVuY3Rpb24oKXtfaShtcil9KX1mdW5jdGlvbiBaaShlKXtpZihudWxsPT1fbCl7dmFyIHQ9VWkoInNwYW4iLCLigIsiKTtLaShlLFVpKCJzcGFuIixbdCxkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpXSkpLDAhPWUuZmlyc3RDaGlsZC5vZmZzZXRIZWlnaHQmJihfbD10Lm9mZnNldFdpZHRoPD0xJiZ0Lm9mZnNldEhlaWdodD4yJiYhKGJvJiY4PndvKSl9dmFyIHI9X2w/VWkoInNwYW4iLCLigIsiKTpVaSgic3BhbiIsIsKgIixudWxsLCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxcHg7IG1hcmdpbi1yaWdodDogLTFweCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSgiY20tdGV4dCIsIiIpLHJ9ZnVuY3Rpb24gUWkoZSl7aWYobnVsbCE9JGwpcmV0dXJuICRsO3ZhciB0PUtpKGUsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkHYrkEiKSkscj1WbCh0LDAsMSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoIXJ8fHIubGVmdD09ci5yaWdodClyZXR1cm4hMTt2YXIgbj1WbCh0LDEsMikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuICRsPW4ucmlnaHQtci5yaWdodDwzfWZ1bmN0aW9uIEppKGUpe2lmKG51bGwhPW5zKXJldHVybiBuczt2YXIgdD1LaShlLFVpKCJzcGFuIiwieCIpKSxyPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1WbCh0LDAsMSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIG5zPU1hdGguYWJzKHIubGVmdC1uLmxlZnQpPjF9ZnVuY3Rpb24gZW8oZSx0LHIsbil7aWYoIWUpcmV0dXJuIG4odCxyLCJsdHIiKTtmb3IodmFyIGk9ITEsbz0wO288ZS5sZW5ndGg7KytvKXt2YXIgbD1lW29dOyhsLmZyb208ciYmbC50bz50fHx0PT1yJiZsLnRvPT10KSYmKG4oTWF0aC5tYXgobC5mcm9tLHQpLE1hdGgubWluKGwudG8sciksMT09bC5sZXZlbD8icnRsIjoibHRyIiksaT0hMCl9aXx8bih0LHIsImx0ciIpfWZ1bmN0aW9uIHRvKGUpe3JldHVybiBlLmxldmVsJTI/ZS50bzplLmZyb219ZnVuY3Rpb24gcm8oZSl7cmV0dXJuIGUubGV2ZWwlMj9lLmZyb206ZS50b31mdW5jdGlvbiBubyhlKXt2YXIgdD1paShlKTtyZXR1cm4gdD90byh0WzBdKTowfWZ1bmN0aW9uIGlvKGUpe3ZhciB0PWlpKGUpO3JldHVybiB0P3JvKERpKHQpKTplLnRleHQubGVuZ3RofWZ1bmN0aW9uIG9vKGUsdCl7dmFyIHI9Wm4oZS5kb2MsdCksbj15bihyKTtuIT1yJiYodD10aShuKSk7dmFyIGk9aWkobiksbz1pP2lbMF0ubGV2ZWwlMj9pbyhuKTpubyhuKTowO3JldHVybiB6byh0LG8pfWZ1bmN0aW9uIGxvKGUsdCl7Zm9yKHZhciByLG49Wm4oZS5kb2MsdCk7cj12bihuKTspbj1yLmZpbmQoMSwhMCkubGluZSx0PW51bGw7dmFyIGk9aWkobiksbz1pP2lbMF0ubGV2ZWwlMj9ubyhuKTppbyhuKTpuLnRleHQubGVuZ3RoO3JldHVybiB6byhudWxsPT10P3RpKG4pOnQsbyl9ZnVuY3Rpb24gc28oZSx0KXt2YXIgcj1vbyhlLHQubGluZSksbj1abihlLmRvYyxyLmxpbmUpLGk9aWkobik7aWYoIWl8fDA9PWlbMF0ubGV2ZWwpe3ZhciBvPU1hdGgubWF4KDAsbi50ZXh0LnNlYXJjaCgvXFMvKSksbD10LmxpbmU9PXIubGluZSYmdC5jaDw9byYmdC5jaDtyZXR1cm4gem8oci5saW5lLGw/MDpvKX1yZXR1cm4gcn1mdW5jdGlvbiBhbyhlLHQscil7dmFyIG49ZVswXS5sZXZlbDtyZXR1cm4gdD09bj8hMDpyPT1uPyExOnI+dH1mdW5jdGlvbiB1byhlLHQpe29zPW51bGw7Zm9yKHZhciByLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIGk9ZVtuXTtpZihpLmZyb208dCYmaS50bz50KXJldHVybiBuO2lmKGkuZnJvbT09dHx8aS50bz09dCl7aWYobnVsbCE9cilyZXR1cm4gYW8oZSxpLmxldmVsLGVbcl0ubGV2ZWwpPyhpLmZyb20hPWkudG8mJihvcz1yKSxuKTooaS5mcm9tIT1pLnRvJiYob3M9bikscik7cj1ufX1yZXR1cm4gcn1mdW5jdGlvbiBjbyhlLHQscixuKXtpZighbilyZXR1cm4gdCtyO2RvIHQrPXI7d2hpbGUodD4wJiZHaShlLnRleHQuY2hhckF0KHQpKSk7cmV0dXJuIHR9ZnVuY3Rpb24gaG8oZSx0LHIsbil7dmFyIGk9aWkoZSk7aWYoIWkpcmV0dXJuIGZvKGUsdCxyLG4pO2Zvcih2YXIgbz11byhpLHQpLGw9aVtvXSxzPWNvKGUsdCxsLmxldmVsJTI/LXI6cixuKTs7KXtpZihzPmwuZnJvbSYmczxsLnRvKXJldHVybiBzO2lmKHM9PWwuZnJvbXx8cz09bC50bylyZXR1cm4gdW8oaSxzKT09bz9zOihsPWlbbys9cl0scj4wPT1sLmxldmVsJTI/bC50bzpsLmZyb20pO2lmKGw9aVtvKz1yXSwhbClyZXR1cm4gbnVsbDtzPXI+MD09bC5sZXZlbCUyP2NvKGUsbC50bywtMSxuKTpjbyhlLGwuZnJvbSwxLG4pfX1mdW5jdGlvbiBmbyhlLHQscixuKXt2YXIgaT10K3I7aWYobilmb3IoO2k+MCYmR2koZS50ZXh0LmNoYXJBdChpKSk7KWkrPXI7cmV0dXJuIDA+aXx8aT5lLnRleHQubGVuZ3RoP251bGw6aX12YXIgcG89bmF2aWdhdG9yLnVzZXJBZ2VudCxnbz1uYXZpZ2F0b3IucGxhdGZvcm0sdm89L2dlY2tvXC9cZC9pLnRlc3QocG8pLG1vPS9NU0lFIFxkLy50ZXN0KHBvKSx5bz0vVHJpZGVudFwvKD86WzctOV18XGR7Mix9KVwuLipydjooXGQrKS8uZXhlYyhwbyksYm89bW98fHlvLHdvPWJvJiYobW8/ZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw2OnlvWzFdKSx4bz0vV2ViS2l0XC8vLnRlc3QocG8pLENvPXhvJiYvUXRcL1xkK1wuXGQrLy50ZXN0KHBvKSxTbz0vQ2hyb21lXC8vLnRlc3QocG8pLExvPS9PcGVyYVwvLy50ZXN0KHBvKSxUbz0vQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvciksa289L01hYyBPUyBYIDFcZFxEKFs4LTldfFxkXGQpXEQvLnRlc3QocG8pLE1vPS9QaGFudG9tSlMvLnRlc3QocG8pLE5vPS9BcHBsZVdlYktpdC8udGVzdChwbykmJi9Nb2JpbGVcL1x3Ky8udGVzdChwbyksV289Tm98fC9BbmRyb2lkfHdlYk9TfEJsYWNrQmVycnl8T3BlcmEgTWluaXxPcGVyYSBNb2JpfElFTW9iaWxlL2kudGVzdChwbyksQW89Tm98fC9NYWMvLnRlc3QoZ28pLE9vPS93aW4vaS50ZXN0KGdvKSxEbz1MbyYmcG8ubWF0Y2goL1ZlcnNpb25cLyhcZCpcLlxkKikvKTtEbyYmKERvPU51bWJlcihEb1sxXSkpLERvJiZEbz49MTUmJihMbz0hMSx4bz0hMCk7dmFyIEhvPUFvJiYoQ298fExvJiYobnVsbD09RG98fDEyLjExPkRvKSksUG89dm98fGJvJiZ3bz49OSxFbz0hMSxJbz0hMTtnLnByb3RvdHlwZT16aSh7dXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc2Nyb2xsV2lkdGg+ZS5jbGllbnRXaWR0aCsxLHI9ZS5zY3JvbGxIZWlnaHQ+ZS5jbGllbnRIZWlnaHQrMSxuPWUubmF0aXZlQmFyV2lkdGg7aWYocil7dGhpcy52ZXJ0LnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLnZlcnQuc3R5bGUuYm90dG9tPXQ/bisicHgiOiIwIjt2YXIgaT1lLnZpZXdIZWlnaHQtKHQ/bjowKTt0aGlzLnZlcnQuZmlyc3RDaGlsZC5zdHlsZS5oZWlnaHQ9TWF0aC5tYXgoMCxlLnNjcm9sbEhlaWdodC1lLmNsaWVudEhlaWdodCtpKSsicHgifWVsc2UgdGhpcy52ZXJ0LnN0eWxlLmRpc3BsYXk9IiIsdGhpcy52ZXJ0LmZpcnN0Q2hpbGQuc3R5bGUuaGVpZ2h0PSIwIjtpZih0KXt0aGlzLmhvcml6LnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmhvcml6LnN0eWxlLnJpZ2h0PXI/bisicHgiOiIwIix0aGlzLmhvcml6LnN0eWxlLmxlZnQ9ZS5iYXJMZWZ0KyJweCI7dmFyIG89ZS52aWV3V2lkdGgtZS5iYXJMZWZ0LShyP246MCk7dGhpcy5ob3Jpei5maXJzdENoaWxkLnN0eWxlLndpZHRoPWUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aCtvKyJweCJ9ZWxzZSB0aGlzLmhvcml6LnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5ob3Jpei5maXJzdENoaWxkLnN0eWxlLndpZHRoPSIwIjtyZXR1cm4hdGhpcy5jaGVja2VkWmVyb1dpZHRoJiZlLmNsaWVudEhlaWdodD4wJiYoMD09biYmdGhpcy56ZXJvV2lkdGhIYWNrKCksdGhpcy5jaGVja2VkWmVyb1dpZHRoPSEwKSx7cmlnaHQ6cj9uOjAsYm90dG9tOnQ/bjowfX0sc2V0U2Nyb2xsTGVmdDpmdW5jdGlvbihlKXt0aGlzLmhvcml6LnNjcm9sbExlZnQhPWUmJih0aGlzLmhvcml6LnNjcm9sbExlZnQ9ZSksdGhpcy5kaXNhYmxlSG9yaXomJnRoaXMuZW5hYmxlWmVyb1dpZHRoQmFyKHRoaXMuaG9yaXosdGhpcy5kaXNhYmxlSG9yaXopfSxzZXRTY3JvbGxUb3A6ZnVuY3Rpb24oZSl7dGhpcy52ZXJ0LnNjcm9sbFRvcCE9ZSYmKHRoaXMudmVydC5zY3JvbGxUb3A9ZSksdGhpcy5kaXNhYmxlVmVydCYmdGhpcy5lbmFibGVaZXJvV2lkdGhCYXIodGhpcy52ZXJ0LHRoaXMuZGlzYWJsZVZlcnQpfSx6ZXJvV2lkdGhIYWNrOmZ1bmN0aW9uKCl7dmFyIGU9QW8mJiFrbz8iMTJweCI6IjE4cHgiO3RoaXMuaG9yaXouc3R5bGUuaGVpZ2h0PXRoaXMudmVydC5zdHlsZS53aWR0aD1lLHRoaXMuaG9yaXouc3R5bGUucG9pbnRlckV2ZW50cz10aGlzLnZlcnQuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsdGhpcy5kaXNhYmxlSG9yaXo9bmV3IEFpLHRoaXMuZGlzYWJsZVZlcnQ9bmV3IEFpfSxlbmFibGVaZXJvV2lkdGhCYXI6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKCl7dmFyIG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQobi5sZWZ0KzEsbi5ib3R0b20tMSk7aSE9ZT9lLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiOnQuc2V0KDFlMyxyKX1lLnN0eWxlLnBvaW50ZXJFdmVudHM9ImF1dG8iLHQuc2V0KDFlMyxyKX0sY2xlYXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhvcml6LnBhcmVudE5vZGU7ZS5yZW1vdmVDaGlsZCh0aGlzLmhvcml6KSxlLnJlbW92ZUNoaWxkKHRoaXMudmVydCl9fSxnLnByb3RvdHlwZSksdi5wcm90b3R5cGU9emkoe3VwZGF0ZTpmdW5jdGlvbigpe3JldHVybntib3R0b206MCxyaWdodDowfX0sc2V0U2Nyb2xsTGVmdDpmdW5jdGlvbigpe30sc2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7fSxjbGVhcjpmdW5jdGlvbigpe319LHYucHJvdG90eXBlKSxlLnNjcm9sbGJhck1vZGVsPXsibmF0aXZlIjpnLCJudWxsIjp2fSxULnByb3RvdHlwZS5zaWduYWw9ZnVuY3Rpb24oZSx0KXtOaShlLHQpJiZ0aGlzLmV2ZW50cy5wdXNoKGFyZ3VtZW50cyl9LFQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5ldmVudHMubGVuZ3RoO2UrKylEbC5hcHBseShudWxsLHRoaXMuZXZlbnRzW2VdKX07dmFyIHpvPWUuUG9zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB6bz8odGhpcy5saW5lPWUsdm9pZCh0aGlzLmNoPXQpKTpuZXcgem8oZSx0KX0sRm89ZS5jbXBQb3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5saW5lLXQubGluZXx8ZS5jaC10LmNofSxSbz1udWxsO3JlLnByb3RvdHlwZT16aSh7aW5pdDpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2lmKG4uc29tZXRoaW5nU2VsZWN0ZWQoKSlSbz1uLmdldFNlbGVjdGlvbnMoKSxyLmluYWNjdXJhdGVTZWxlY3Rpb24mJihyLnByZXZJbnB1dD0iIiwKci5pbmFjY3VyYXRlU2VsZWN0aW9uPSExLG8udmFsdWU9Um8uam9pbigiXG4iKSxVbChvKSk7ZWxzZXtpZighbi5vcHRpb25zLmxpbmVXaXNlQ29weUN1dClyZXR1cm47dmFyIHQ9ZWUobik7Um89dC50ZXh0LCJjdXQiPT1lLnR5cGU/bi5zZXRTZWxlY3Rpb25zKHQucmFuZ2VzLG51bGwsSWwpOihyLnByZXZJbnB1dD0iIixvLnZhbHVlPXQudGV4dC5qb2luKCJcbiIpLFVsKG8pKX0iY3V0Ij09ZS50eXBlJiYobi5zdGF0ZS5jdXRJbmNvbWluZz0hMCl9dmFyIHI9dGhpcyxuPXRoaXMuY20saT10aGlzLndyYXBwZXI9bmUoKSxvPXRoaXMudGV4dGFyZWE9aS5maXJzdENoaWxkO2Uud3JhcHBlci5pbnNlcnRCZWZvcmUoaSxlLndyYXBwZXIuZmlyc3RDaGlsZCksTm8mJihvLnN0eWxlLndpZHRoPSIwcHgiKSxXbChvLCJpbnB1dCIsZnVuY3Rpb24oKXtibyYmd28+PTkmJnIuaGFzU2VsZWN0aW9uJiYoci5oYXNTZWxlY3Rpb249bnVsbCksci5wb2xsKCl9KSxXbChvLCJwYXN0ZSIsZnVuY3Rpb24oZSl7cmV0dXJuIFEoZSxuKT8hMDoobi5zdGF0ZS5wYXN0ZUluY29taW5nPSEwLHZvaWQgci5mYXN0UG9sbCgpKX0pLFdsKG8sImN1dCIsdCksV2wobywiY29weSIsdCksV2woZS5zY3JvbGxlciwicGFzdGUiLGZ1bmN0aW9uKHQpe2p0KGUsdCl8fChuLnN0YXRlLnBhc3RlSW5jb21pbmc9ITAsci5mb2N1cygpKX0pLFdsKGUubGluZVNwYWNlLCJzZWxlY3RzdGFydCIsZnVuY3Rpb24odCl7anQoZSx0KXx8a2wodCl9KSxXbChvLCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbigpe3ZhciBlPW4uZ2V0Q3Vyc29yKCJmcm9tIik7ci5jb21wb3NpbmcmJnIuY29tcG9zaW5nLnJhbmdlLmNsZWFyKCksci5jb21wb3Npbmc9e3N0YXJ0OmUscmFuZ2U6bi5tYXJrVGV4dChlLG4uZ2V0Q3Vyc29yKCJ0byIpLHtjbGFzc05hbWU6IkNvZGVNaXJyb3ItY29tcG9zaW5nIn0pfX0pLFdsKG8sImNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbigpe3IuY29tcG9zaW5nJiYoci5wb2xsKCksci5jb21wb3NpbmcucmFuZ2UuY2xlYXIoKSxyLmNvbXBvc2luZz1udWxsKX0pfSxwcmVwYXJlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jbSx0PWUuZGlzcGxheSxyPWUuZG9jLG49RWUoZSk7aWYoZS5vcHRpb25zLm1vdmVJbnB1dFdpdGhDdXJzb3Ipe3ZhciBpPWR0KGUsci5zZWwucHJpbWFyeSgpLmhlYWQsImRpdiIpLG89dC53cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9dC5saW5lRGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO24udGVUb3A9TWF0aC5tYXgoMCxNYXRoLm1pbih0LndyYXBwZXIuY2xpZW50SGVpZ2h0LTEwLGkudG9wK2wudG9wLW8udG9wKSksbi50ZUxlZnQ9TWF0aC5tYXgoMCxNYXRoLm1pbih0LndyYXBwZXIuY2xpZW50V2lkdGgtMTAsaS5sZWZ0K2wubGVmdC1vLmxlZnQpKX1yZXR1cm4gbn0sc2hvd1NlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmNtLHI9dC5kaXNwbGF5O0tpKHIuY3Vyc29yRGl2LGUuY3Vyc29ycyksS2koci5zZWxlY3Rpb25EaXYsZS5zZWxlY3Rpb24pLG51bGwhPWUudGVUb3AmJih0aGlzLndyYXBwZXIuc3R5bGUudG9wPWUudGVUb3ArInB4Iix0aGlzLndyYXBwZXIuc3R5bGUubGVmdD1lLnRlTGVmdCsicHgiKX0scmVzZXQ6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuY29udGV4dE1lbnVQZW5kaW5nKXt2YXIgdCxyLG49dGhpcy5jbSxpPW4uZG9jO2lmKG4uc29tZXRoaW5nU2VsZWN0ZWQoKSl7dGhpcy5wcmV2SW5wdXQ9IiI7dmFyIG89aS5zZWwucHJpbWFyeSgpO3Q9cnMmJihvLnRvKCkubGluZS1vLmZyb20oKS5saW5lPjEwMHx8KHI9bi5nZXRTZWxlY3Rpb24oKSkubGVuZ3RoPjFlMyk7dmFyIGw9dD8iLSI6cnx8bi5nZXRTZWxlY3Rpb24oKTt0aGlzLnRleHRhcmVhLnZhbHVlPWwsbi5zdGF0ZS5mb2N1c2VkJiZVbCh0aGlzLnRleHRhcmVhKSxibyYmd28+PTkmJih0aGlzLmhhc1NlbGVjdGlvbj1sKX1lbHNlIGV8fCh0aGlzLnByZXZJbnB1dD10aGlzLnRleHRhcmVhLnZhbHVlPSIiLGJvJiZ3bz49OSYmKHRoaXMuaGFzU2VsZWN0aW9uPW51bGwpKTt0aGlzLmluYWNjdXJhdGVTZWxlY3Rpb249dH19LGdldEZpZWxkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dGFyZWF9LHN1cHBvcnRzVG91Y2g6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZm9jdXM6ZnVuY3Rpb24oKXtpZigibm9jdXJzb3IiIT10aGlzLmNtLm9wdGlvbnMucmVhZE9ubHkmJighV298fGppKCkhPXRoaXMudGV4dGFyZWEpKXRyeXt0aGlzLnRleHRhcmVhLmZvY3VzKCl9Y2F0Y2goZSl7fX0sYmx1cjpmdW5jdGlvbigpe3RoaXMudGV4dGFyZWEuYmx1cigpfSxyZXNldFBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy53cmFwcGVyLnN0eWxlLnRvcD10aGlzLndyYXBwZXIuc3R5bGUubGVmdD0wfSxyZWNlaXZlZEZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zbG93UG9sbCgpfSxzbG93UG9sbDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5wb2xsaW5nRmFzdHx8ZS5wb2xsaW5nLnNldCh0aGlzLmNtLm9wdGlvbnMucG9sbEludGVydmFsLGZ1bmN0aW9uKCl7ZS5wb2xsKCksZS5jbS5zdGF0ZS5mb2N1c2VkJiZlLnNsb3dQb2xsKCl9KX0sZmFzdFBvbGw6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIG49ci5wb2xsKCk7bnx8dD8oci5wb2xsaW5nRmFzdD0hMSxyLnNsb3dQb2xsKCkpOih0PSEwLHIucG9sbGluZy5zZXQoNjAsZSkpfXZhciB0PSExLHI9dGhpcztyLnBvbGxpbmdGYXN0PSEwLHIucG9sbGluZy5zZXQoMjAsZSl9LHBvbGw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNtLHQ9dGhpcy50ZXh0YXJlYSxyPXRoaXMucHJldklucHV0O2lmKHRoaXMuY29udGV4dE1lbnVQZW5kaW5nfHwhZS5zdGF0ZS5mb2N1c2VkfHx0cyh0KSYmIXImJiF0aGlzLmNvbXBvc2luZ3x8ZS5pc1JlYWRPbmx5KCl8fGUub3B0aW9ucy5kaXNhYmxlSW5wdXR8fGUuc3RhdGUua2V5U2VxKXJldHVybiExO3ZhciBuPXQudmFsdWU7aWYobj09ciYmIWUuc29tZXRoaW5nU2VsZWN0ZWQoKSlyZXR1cm4hMTtpZihibyYmd28+PTkmJnRoaXMuaGFzU2VsZWN0aW9uPT09bnx8QW8mJi9bXHVmNzAwLVx1ZjdmZl0vLnRlc3QobikpcmV0dXJuIGUuZGlzcGxheS5pbnB1dC5yZXNldCgpLCExO2lmKGUuZG9jLnNlbD09ZS5kaXNwbGF5LnNlbEZvckNvbnRleHRNZW51KXt2YXIgaT1uLmNoYXJDb2RlQXQoMCk7aWYoODIwMyE9aXx8cnx8KHI9IuKAiyIpLDg2NjY9PWkpcmV0dXJuIHRoaXMucmVzZXQoKSx0aGlzLmNtLmV4ZWNDb21tYW5kKCJ1bmRvIil9Zm9yKHZhciBvPTAsbD1NYXRoLm1pbihyLmxlbmd0aCxuLmxlbmd0aCk7bD5vJiZyLmNoYXJDb2RlQXQobyk9PW4uY2hhckNvZGVBdChvKTspKytvO3ZhciBzPXRoaXM7cmV0dXJuIFd0KGUsZnVuY3Rpb24oKXtaKGUsbi5zbGljZShvKSxyLmxlbmd0aC1vLG51bGwscy5jb21wb3Npbmc/Iipjb21wb3NlIjpudWxsKSxuLmxlbmd0aD4xZTN8fG4uaW5kZXhPZigiXG4iKT4tMT90LnZhbHVlPXMucHJldklucHV0PSIiOnMucHJldklucHV0PW4scy5jb21wb3NpbmcmJihzLmNvbXBvc2luZy5yYW5nZS5jbGVhcigpLHMuY29tcG9zaW5nLnJhbmdlPWUubWFya1RleHQocy5jb21wb3Npbmcuc3RhcnQsZS5nZXRDdXJzb3IoInRvIikse2NsYXNzTmFtZToiQ29kZU1pcnJvci1jb21wb3NpbmcifSkpfSksITB9LGVuc3VyZVBvbGxlZDpmdW5jdGlvbigpe3RoaXMucG9sbGluZ0Zhc3QmJnRoaXMucG9sbCgpJiYodGhpcy5wb2xsaW5nRmFzdD0hMSl9LG9uS2V5UHJlc3M6ZnVuY3Rpb24oKXtibyYmd28+PTkmJih0aGlzLmhhc1NlbGVjdGlvbj1udWxsKSx0aGlzLmZhc3RQb2xsKCl9LG9uQ29udGV4dE1lbnU6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe2lmKG51bGwhPWwuc2VsZWN0aW9uU3RhcnQpe3ZhciBlPWkuc29tZXRoaW5nU2VsZWN0ZWQoKSx0PSLigIsiKyhlP2wudmFsdWU6IiIpO2wudmFsdWU9IuKHmiIsbC52YWx1ZT10LG4ucHJldklucHV0PWU/IiI6IuKAiyIsbC5zZWxlY3Rpb25TdGFydD0xLGwuc2VsZWN0aW9uRW5kPXQubGVuZ3RoLG8uc2VsRm9yQ29udGV4dE1lbnU9aS5kb2Muc2VsfX1mdW5jdGlvbiByKCl7aWYobi5jb250ZXh0TWVudVBlbmRpbmc9ITEsbi53cmFwcGVyLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsbC5zdHlsZS5jc3NUZXh0PWMsYm8mJjk+d28mJm8uc2Nyb2xsYmFycy5zZXRTY3JvbGxUb3Aoby5zY3JvbGxlci5zY3JvbGxUb3A9YSksbnVsbCE9bC5zZWxlY3Rpb25TdGFydCl7KCFib3x8Ym8mJjk+d28pJiZ0KCk7dmFyIGU9MCxyPWZ1bmN0aW9uKCl7by5zZWxGb3JDb250ZXh0TWVudT09aS5kb2Muc2VsJiYwPT1sLnNlbGVjdGlvblN0YXJ0JiZsLnNlbGVjdGlvbkVuZD4wJiYi4oCLIj09bi5wcmV2SW5wdXQ/QXQoaSx1bC5zZWxlY3RBbGwpKGkpOmUrKzwxMD9vLmRldGVjdGluZ1NlbGVjdEFsbD1zZXRUaW1lb3V0KHIsNTAwKTpvLmlucHV0LnJlc2V0KCl9O28uZGV0ZWN0aW5nU2VsZWN0QWxsPXNldFRpbWVvdXQociwyMDApfX12YXIgbj10aGlzLGk9bi5jbSxvPWkuZGlzcGxheSxsPW4udGV4dGFyZWEscz1YdChpLGUpLGE9by5zY3JvbGxlci5zY3JvbGxUb3A7aWYocyYmIUxvKXt2YXIgdT1pLm9wdGlvbnMucmVzZXRTZWxlY3Rpb25PbkNvbnRleHRNZW51O3UmJi0xPT1pLmRvYy5zZWwuY29udGFpbnMocykmJkF0KGksa2UpKGkuZG9jLGRlKHMpLElsKTt2YXIgYz1sLnN0eWxlLmNzc1RleHQ7aWYobi53cmFwcGVyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsbC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHg7IHRvcDogIisoZS5jbGllbnRZLTUpKyJweDsgbGVmdDogIisoZS5jbGllbnRYLTUpKyJweDsgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogIisoYm8/InJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KSI6InRyYW5zcGFyZW50IikrIjsgb3V0bGluZTogbm9uZTsgYm9yZGVyLXdpZHRoOiAwOyBvdXRsaW5lOiBub25lOyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAuMDU7IGZpbHRlcjogYWxwaGEob3BhY2l0eT01KTsiLHhvKXZhciBoPXdpbmRvdy5zY3JvbGxZO2lmKG8uaW5wdXQuZm9jdXMoKSx4byYmd2luZG93LnNjcm9sbFRvKG51bGwsaCksby5pbnB1dC5yZXNldCgpLGkuc29tZXRoaW5nU2VsZWN0ZWQoKXx8KGwudmFsdWU9bi5wcmV2SW5wdXQ9IiAiKSxuLmNvbnRleHRNZW51UGVuZGluZz0hMCxvLnNlbEZvckNvbnRleHRNZW51PWkuZG9jLnNlbCxjbGVhclRpbWVvdXQoby5kZXRlY3RpbmdTZWxlY3RBbGwpLGJvJiZ3bz49OSYmdCgpLFBvKXtObChlKTt2YXIgZj1mdW5jdGlvbigpe09sKHdpbmRvdywibW91c2V1cCIsZiksc2V0VGltZW91dChyLDIwKX07V2wod2luZG93LCJtb3VzZXVwIixmKX1lbHNlIHNldFRpbWVvdXQociw1MCl9fSxyZWFkT25seUNoYW5nZWQ6ZnVuY3Rpb24oZSl7ZXx8dGhpcy5yZXNldCgpfSxzZXRVbmVkaXRhYmxlOkVpLG5lZWRzQ29udGVudEF0dHJpYnV0ZTohMX0scmUucHJvdG90eXBlKSxpZS5wcm90b3R5cGU9emkoe2luaXQ6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtpZihuLnNvbWV0aGluZ1NlbGVjdGVkKCkpUm89bi5nZXRTZWxlY3Rpb25zKCksImN1dCI9PWUudHlwZSYmbi5yZXBsYWNlU2VsZWN0aW9uKCIiLG51bGwsImN1dCIpO2Vsc2V7aWYoIW4ub3B0aW9ucy5saW5lV2lzZUNvcHlDdXQpcmV0dXJuO3ZhciB0PWVlKG4pO1JvPXQudGV4dCwiY3V0Ij09ZS50eXBlJiZuLm9wZXJhdGlvbihmdW5jdGlvbigpe24uc2V0U2VsZWN0aW9ucyh0LnJhbmdlcywwLElsKSxuLnJlcGxhY2VTZWxlY3Rpb24oIiIsbnVsbCwiY3V0Iil9KX1pZihlLmNsaXBib2FyZERhdGEmJiFObyllLnByZXZlbnREZWZhdWx0KCksZS5jbGlwYm9hcmREYXRhLmNsZWFyRGF0YSgpLGUuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIixSby5qb2luKCJcbiIpKTtlbHNle3ZhciByPW5lKCksaT1yLmZpcnN0Q2hpbGQ7bi5kaXNwbGF5LmxpbmVTcGFjZS5pbnNlcnRCZWZvcmUocixuLmRpc3BsYXkubGluZVNwYWNlLmZpcnN0Q2hpbGQpLGkudmFsdWU9Um8uam9pbigiXG4iKTt2YXIgbz1kb2N1bWVudC5hY3RpdmVFbGVtZW50O1VsKGkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLmRpc3BsYXkubGluZVNwYWNlLnJlbW92ZUNoaWxkKHIpLG8uZm9jdXMoKX0sNTApfX12YXIgcj10aGlzLG49ci5jbSxpPXIuZGl2PWUubGluZURpdjt0ZShpKSxXbChpLCJwYXN0ZSIsZnVuY3Rpb24oZSl7UShlLG4pfSksV2woaSwiY29tcG9zaXRpb25zdGFydCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhO2lmKHIuY29tcG9zaW5nPXtzZWw6bi5kb2Muc2VsLGRhdGE6dCxzdGFydERhdGE6dH0sdCl7dmFyIGk9bi5kb2Muc2VsLnByaW1hcnkoKSxvPW4uZ2V0TGluZShpLmhlYWQubGluZSksbD1vLmluZGV4T2YodCxNYXRoLm1heCgwLGkuaGVhZC5jaC10Lmxlbmd0aCkpO2w+LTEmJmw8PWkuaGVhZC5jaCYmKHIuY29tcG9zaW5nLnNlbD1kZSh6byhpLmhlYWQubGluZSxsKSx6byhpLmhlYWQubGluZSxsK3QubGVuZ3RoKSkpfX0pLFdsKGksImNvbXBvc2l0aW9udXBkYXRlIixmdW5jdGlvbihlKXtyLmNvbXBvc2luZy5kYXRhPWUuZGF0YX0pLFdsKGksImNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbihlKXt2YXIgdD1yLmNvbXBvc2luZzt0JiYoZS5kYXRhPT10LnN0YXJ0RGF0YXx8L1x1MjAwYi8udGVzdChlLmRhdGEpfHwodC5kYXRhPWUuZGF0YSksc2V0VGltZW91dChmdW5jdGlvbigpe3QuaGFuZGxlZHx8ci5hcHBseUNvbXBvc2l0aW9uKHQpLHIuY29tcG9zaW5nPT10JiYoci5jb21wb3Npbmc9bnVsbCl9LDUwKSl9KSxXbChpLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbigpe3IuZm9yY2VDb21wb3NpdGlvbkVuZCgpfSksV2woaSwiaW5wdXQiLGZ1bmN0aW9uKCl7ci5jb21wb3Npbmd8fChuLmlzUmVhZE9ubHkoKXx8IXIucG9sbENvbnRlbnQoKSkmJld0KHIuY20sZnVuY3Rpb24oKXtFdChuKX0pfSksV2woaSwiY29weSIsdCksV2woaSwiY3V0Iix0KX0scHJlcGFyZVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPUVlKHRoaXMuY20sITEpO3JldHVybiBlLmZvY3VzPXRoaXMuY20uc3RhdGUuZm9jdXNlZCxlfSxzaG93U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe2UmJnRoaXMuY20uZGlzcGxheS52aWV3Lmxlbmd0aCYmKGUuZm9jdXMmJnRoaXMuc2hvd1ByaW1hcnlTZWxlY3Rpb24oKSx0aGlzLnNob3dNdWx0aXBsZVNlbGVjdGlvbnMoZSkpfSxzaG93UHJpbWFyeVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSx0PXRoaXMuY20uZG9jLnNlbC5wcmltYXJ5KCkscj1zZSh0aGlzLmNtLGUuYW5jaG9yTm9kZSxlLmFuY2hvck9mZnNldCksbj1zZSh0aGlzLmNtLGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQpO2lmKCFyfHxyLmJhZHx8IW58fG4uYmFkfHwwIT1GbygkKHIsbiksdC5mcm9tKCkpfHwwIT1GbyhfKHIsbiksdC50bygpKSl7dmFyIGk9b2UodGhpcy5jbSx0LmZyb20oKSksbz1vZSh0aGlzLmNtLHQudG8oKSk7aWYoaXx8byl7dmFyIGw9dGhpcy5jbS5kaXNwbGF5LnZpZXcscz1lLnJhbmdlQ291bnQmJmUuZ2V0UmFuZ2VBdCgwKTtpZihpKXtpZighbyl7dmFyIGE9bFtsLmxlbmd0aC0xXS5tZWFzdXJlLHU9YS5tYXBzP2EubWFwc1thLm1hcHMubGVuZ3RoLTFdOmEubWFwO289e25vZGU6dVt1Lmxlbmd0aC0xXSxvZmZzZXQ6dVt1Lmxlbmd0aC0yXS11W3UubGVuZ3RoLTNdfX19ZWxzZSBpPXtub2RlOmxbMF0ubWVhc3VyZS5tYXBbMl0sb2Zmc2V0OjB9O3RyeXt2YXIgYz1WbChpLm5vZGUsaS5vZmZzZXQsby5vZmZzZXQsby5ub2RlKX1jYXRjaChoKXt9YyYmKCF2byYmdGhpcy5jbS5zdGF0ZS5mb2N1c2VkPyhlLmNvbGxhcHNlKGkubm9kZSxpLm9mZnNldCksYy5jb2xsYXBzZWR8fGUuYWRkUmFuZ2UoYykpOihlLnJlbW92ZUFsbFJhbmdlcygpLGUuYWRkUmFuZ2UoYykpLHMmJm51bGw9PWUuYW5jaG9yTm9kZT9lLmFkZFJhbmdlKHMpOnZvJiZ0aGlzLnN0YXJ0R3JhY2VQZXJpb2QoKSksdGhpcy5yZW1lbWJlclNlbGVjdGlvbigpfX19LHN0YXJ0R3JhY2VQZXJpb2Q6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2NsZWFyVGltZW91dCh0aGlzLmdyYWNlUGVyaW9kKSx0aGlzLmdyYWNlUGVyaW9kPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmdyYWNlUGVyaW9kPSExLGUuc2VsZWN0aW9uQ2hhbmdlZCgpJiZlLmNtLm9wZXJhdGlvbihmdW5jdGlvbigpe2UuY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZD0hMH0pfSwyMCl9LHNob3dNdWx0aXBsZVNlbGVjdGlvbnM6ZnVuY3Rpb24oZSl7S2kodGhpcy5jbS5kaXNwbGF5LmN1cnNvckRpdixlLmN1cnNvcnMpLEtpKHRoaXMuY20uZGlzcGxheS5zZWxlY3Rpb25EaXYsZS5zZWxlY3Rpb24pfSxyZW1lbWJlclNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTt0aGlzLmxhc3RBbmNob3JOb2RlPWUuYW5jaG9yTm9kZSx0aGlzLmxhc3RBbmNob3JPZmZzZXQ9ZS5hbmNob3JPZmZzZXQsdGhpcy5sYXN0Rm9jdXNOb2RlPWUuZm9jdXNOb2RlLHRoaXMubGFzdEZvY3VzT2Zmc2V0PWUuZm9jdXNPZmZzZXR9LHNlbGVjdGlvbkluRWRpdG9yOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmdldFNlbGVjdGlvbigpO2lmKCFlLnJhbmdlQ291bnQpcmV0dXJuITE7dmFyIHQ9ZS5nZXRSYW5nZUF0KDApLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO3JldHVybiBZbCh0aGlzLmRpdix0KX0sZm9jdXM6ZnVuY3Rpb24oKXsibm9jdXJzb3IiIT10aGlzLmNtLm9wdGlvbnMucmVhZE9ubHkmJnRoaXMuZGl2LmZvY3VzKCl9LGJsdXI6ZnVuY3Rpb24oKXt0aGlzLmRpdi5ibHVyKCl9LGdldEZpZWxkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGl2fSxzdXBwb3J0c1RvdWNoOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHJlY2VpdmVkRm9jdXM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dC5jbS5zdGF0ZS5mb2N1c2VkJiYodC5wb2xsU2VsZWN0aW9uKCksdC5wb2xsaW5nLnNldCh0LmNtLm9wdGlvbnMucG9sbEludGVydmFsLGUpKX12YXIgdD10aGlzO3RoaXMuc2VsZWN0aW9uSW5FZGl0b3IoKT90aGlzLnBvbGxTZWxlY3Rpb24oKTpXdCh0aGlzLmNtLGZ1bmN0aW9uKCl7dC5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkPSEwfSksdGhpcy5wb2xsaW5nLnNldCh0aGlzLmNtLm9wdGlvbnMucG9sbEludGVydmFsLGUpfSxzZWxlY3Rpb25DaGFuZ2VkOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybiBlLmFuY2hvck5vZGUhPXRoaXMubGFzdEFuY2hvck5vZGV8fGUuYW5jaG9yT2Zmc2V0IT10aGlzLmxhc3RBbmNob3JPZmZzZXR8fGUuZm9jdXNOb2RlIT10aGlzLmxhc3RGb2N1c05vZGV8fGUuZm9jdXNPZmZzZXQhPXRoaXMubGFzdEZvY3VzT2Zmc2V0fSxwb2xsU2VsZWN0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY29tcG9zaW5nJiYhdGhpcy5ncmFjZVBlcmlvZCYmdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKCkpe3ZhciBlPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSx0PXRoaXMuY207dGhpcy5yZW1lbWJlclNlbGVjdGlvbigpO3ZhciByPXNlKHQsZS5hbmNob3JOb2RlLGUuYW5jaG9yT2Zmc2V0KSxuPXNlKHQsZS5mb2N1c05vZGUsZS5mb2N1c09mZnNldCk7ciYmbiYmV3QodCxmdW5jdGlvbigpe2tlKHQuZG9jLGRlKHIsbiksSWwpLChyLmJhZHx8bi5iYWQpJiYodC5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkPSEwKX0pfX0scG9sbENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNtLHQ9ZS5kaXNwbGF5LHI9ZS5kb2Muc2VsLnByaW1hcnkoKSxuPXIuZnJvbSgpLGk9ci50bygpO2lmKG4ubGluZTx0LnZpZXdGcm9tfHxpLmxpbmU+dC52aWV3VG8tMSlyZXR1cm4hMTt2YXIgbztpZihuLmxpbmU9PXQudmlld0Zyb218fDA9PShvPUZ0KGUsbi5saW5lKSkpdmFyIGw9dGkodC52aWV3WzBdLmxpbmUpLHM9dC52aWV3WzBdLm5vZGU7ZWxzZSB2YXIgbD10aSh0LnZpZXdbb10ubGluZSkscz10LnZpZXdbby0xXS5ub2RlLm5leHRTaWJsaW5nO3ZhciBhPUZ0KGUsaS5saW5lKTtpZihhPT10LnZpZXcubGVuZ3RoLTEpdmFyIHU9dC52aWV3VG8tMSxjPXQubGluZURpdi5sYXN0Q2hpbGQ7ZWxzZSB2YXIgdT10aSh0LnZpZXdbYSsxXS5saW5lKS0xLGM9dC52aWV3W2ErMV0ubm9kZS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBoPWUuZG9jLnNwbGl0TGluZXModWUoZSxzLGMsbCx1KSksZj1RbihlLmRvYyx6byhsLDApLHpvKHUsWm4oZS5kb2MsdSkudGV4dC5sZW5ndGgpKTtoLmxlbmd0aD4xJiZmLmxlbmd0aD4xOylpZihEaShoKT09RGkoZikpaC5wb3AoKSxmLnBvcCgpLHUtLTtlbHNle2lmKGhbMF0hPWZbMF0pYnJlYWs7aC5zaGlmdCgpLGYuc2hpZnQoKSxsKyt9Zm9yKHZhciBkPTAscD0wLGc9aFswXSx2PWZbMF0sbT1NYXRoLm1pbihnLmxlbmd0aCx2Lmxlbmd0aCk7bT5kJiZnLmNoYXJDb2RlQXQoZCk9PXYuY2hhckNvZGVBdChkKTspKytkO2Zvcih2YXIgeT1EaShoKSxiPURpKGYpLHc9TWF0aC5taW4oeS5sZW5ndGgtKDE9PWgubGVuZ3RoP2Q6MCksYi5sZW5ndGgtKDE9PWYubGVuZ3RoP2Q6MCkpO3c+cCYmeS5jaGFyQ29kZUF0KHkubGVuZ3RoLXAtMSk9PWIuY2hhckNvZGVBdChiLmxlbmd0aC1wLTEpOykrK3A7aFtoLmxlbmd0aC0xXT15LnNsaWNlKDAseS5sZW5ndGgtcCksaFswXT1oWzBdLnNsaWNlKGQpO3ZhciB4PXpvKGwsZCksQz16byh1LGYubGVuZ3RoP0RpKGYpLmxlbmd0aC1wOjApO3JldHVybiBoLmxlbmd0aD4xfHxoWzBdfHxGbyh4LEMpPyhPcihlLmRvYyxoLHgsQywiK2lucHV0IiksITApOnZvaWQgMH0sZW5zdXJlUG9sbGVkOmZ1bmN0aW9uKCl7dGhpcy5mb3JjZUNvbXBvc2l0aW9uRW5kKCl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5mb3JjZUNvbXBvc2l0aW9uRW5kKCl9LGZvcmNlQ29tcG9zaXRpb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLmNvbXBvc2luZyYmIXRoaXMuY29tcG9zaW5nLmhhbmRsZWQmJih0aGlzLmFwcGx5Q29tcG9zaXRpb24odGhpcy5jb21wb3NpbmcpLHRoaXMuY29tcG9zaW5nLmhhbmRsZWQ9ITAsdGhpcy5kaXYuYmx1cigpLHRoaXMuZGl2LmZvY3VzKCkpfSxhcHBseUNvbXBvc2l0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuY20uaXNSZWFkT25seSgpP0F0KHRoaXMuY20sRXQpKHRoaXMuY20pOmUuZGF0YSYmZS5kYXRhIT1lLnN0YXJ0RGF0YSYmQXQodGhpcy5jbSxaKSh0aGlzLmNtLGUuZGF0YSwwLGUuc2VsKX0sc2V0VW5lZGl0YWJsZTpmdW5jdGlvbihlKXtlLmNvbnRlbnRFZGl0YWJsZT0iZmFsc2UifSxvbktleVByZXNzOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmNtLmlzUmVhZE9ubHkoKXx8QXQodGhpcy5jbSxaKSh0aGlzLmNtLFN0cmluZy5mcm9tQ2hhckNvZGUobnVsbD09ZS5jaGFyQ29kZT9lLmtleUNvZGU6ZS5jaGFyQ29kZSksMCl9LHJlYWRPbmx5Q2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLmRpdi5jb250ZW50RWRpdGFibGU9U3RyaW5nKCJub2N1cnNvciIhPWUpfSxvbkNvbnRleHRNZW51OkVpLHJlc2V0UG9zaXRpb246RWksbmVlZHNDb250ZW50QXR0cmlidXRlOiEwfSxpZS5wcm90b3R5cGUpLGUuaW5wdXRTdHlsZXM9e3RleHRhcmVhOnJlLGNvbnRlbnRlZGl0YWJsZTppZX0sY2UucHJvdG90eXBlPXtwcmltYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VzW3RoaXMucHJpbUluZGV4XX0sZXF1YWxzOmZ1bmN0aW9uKGUpe2lmKGU9PXRoaXMpcmV0dXJuITA7aWYoZS5wcmltSW5kZXghPXRoaXMucHJpbUluZGV4fHxlLnJhbmdlcy5sZW5ndGghPXRoaXMucmFuZ2VzLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIHQ9MDt0PHRoaXMucmFuZ2VzLmxlbmd0aDt0Kyspe3ZhciByPXRoaXMucmFuZ2VzW3RdLG49ZS5yYW5nZXNbdF07aWYoMCE9Rm8oci5hbmNob3Isbi5hbmNob3IpfHwwIT1GbyhyLmhlYWQsbi5oZWFkKSlyZXR1cm4hMX1yZXR1cm4hMH0sZGVlcENvcHk6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5yYW5nZXMubGVuZ3RoO3QrKyllW3RdPW5ldyBoZShZKHRoaXMucmFuZ2VzW3RdLmFuY2hvciksWSh0aGlzLnJhbmdlc1t0XS5oZWFkKSk7cmV0dXJuIG5ldyBjZShlLHRoaXMucHJpbUluZGV4KX0sc29tZXRoaW5nU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMucmFuZ2VzLmxlbmd0aDtlKyspaWYoIXRoaXMucmFuZ2VzW2VdLmVtcHR5KCkpcmV0dXJuITA7cmV0dXJuITF9LGNvbnRhaW5zOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9ZSk7Zm9yKHZhciByPTA7cjx0aGlzLnJhbmdlcy5sZW5ndGg7cisrKXt2YXIgbj10aGlzLnJhbmdlc1tyXTtpZihGbyh0LG4uZnJvbSgpKT49MCYmRm8oZSxuLnRvKCkpPD0wKXJldHVybiByfXJldHVybi0xfX0saGUucHJvdG90eXBlPXtmcm9tOmZ1bmN0aW9uKCl7cmV0dXJuICQodGhpcy5hbmNob3IsdGhpcy5oZWFkKX0sdG86ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLmFuY2hvcix0aGlzLmhlYWQpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQubGluZT09dGhpcy5hbmNob3IubGluZSYmdGhpcy5oZWFkLmNoPT10aGlzLmFuY2hvci5jaH19O3ZhciBCbyxHbyxVbyxWbz17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9LEtvPW51bGwsam89MCxYbz0wLFlvPTAsX289bnVsbDtibz9fbz0tLjUzOnZvP19vPTE1OlNvP19vPS0uNzpUbyYmKF9vPS0xLzMpO3ZhciAkbz1mdW5jdGlvbihlKXt2YXIgdD1lLndoZWVsRGVsdGFYLHI9ZS53aGVlbERlbHRhWTtyZXR1cm4gbnVsbD09dCYmZS5kZXRhaWwmJmUuYXhpcz09ZS5IT1JJWk9OVEFMX0FYSVMmJih0PWUuZGV0YWlsKSxudWxsPT1yJiZlLmRldGFpbCYmZS5heGlzPT1lLlZFUlRJQ0FMX0FYSVM/cj1lLmRldGFpbDpudWxsPT1yJiYocj1lLndoZWVsRGVsdGEpLHt4OnQseTpyfX07ZS53aGVlbEV2ZW50UGl4ZWxzPWZ1bmN0aW9uKGUpe3ZhciB0PSRvKGUpO3JldHVybiB0LngqPV9vLHQueSo9X28sdH07dmFyIHFvPW5ldyBBaSxabz1udWxsLFFvPWUuY2hhbmdlRW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHQ/em8oZS5mcm9tLmxpbmUrZS50ZXh0Lmxlbmd0aC0xLERpKGUudGV4dCkubGVuZ3RoKygxPT1lLnRleHQubGVuZ3RoP2UuZnJvbS5jaDowKSk6ZS50b307ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsZm9jdXM6ZnVuY3Rpb24oKXt3aW5kb3cuZm9jdXMoKSx0aGlzLmRpc3BsYXkuaW5wdXQuZm9jdXMoKX0sc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5vcHRpb25zLG49cltlXTsocltlXSE9dHx8Im1vZGUiPT1lKSYmKHJbZV09dCxlbC5oYXNPd25Qcm9wZXJ0eShlKSYmQXQodGhpcyxlbFtlXSkodGhpcyx0LG4pKX0sZ2V0T3B0aW9uOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnNbZV19LGdldERvYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvY30sYWRkS2V5TWFwOmZ1bmN0aW9uKGUsdCl7dGhpcy5zdGF0ZS5rZXlNYXBzW3Q/InB1c2giOiJ1bnNoaWZ0Il0oWHIoZSkpfSxyZW1vdmVLZXlNYXA6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuc3RhdGUua2V5TWFwcyxyPTA7cjx0Lmxlbmd0aDsrK3IpaWYodFtyXT09ZXx8dFtyXS5uYW1lPT1lKXJldHVybiB0LnNwbGljZShyLDEpLCEwfSxhZGRPdmVybGF5Ok90KGZ1bmN0aW9uKHQscil7dmFyIG49dC50b2tlbj90OmUuZ2V0TW9kZSh0aGlzLm9wdGlvbnMsdCk7aWYobi5zdGFydFN0YXRlKXRocm93IG5ldyBFcnJvcigiT3ZlcmxheXMgbWF5IG5vdCBiZSBzdGF0ZWZ1bC4iKTt0aGlzLnN0YXRlLm92ZXJsYXlzLnB1c2goe21vZGU6bixtb2RlU3BlYzp0LG9wYXF1ZTpyJiZyLm9wYXF1ZX0pLHRoaXMuc3RhdGUubW9kZUdlbisrLEV0KHRoaXMpfSkscmVtb3ZlT3ZlcmxheTpPdChmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5zdGF0ZS5vdmVybGF5cyxyPTA7cjx0Lmxlbmd0aDsrK3Ipe3ZhciBuPXRbcl0ubW9kZVNwZWM7aWYobj09ZXx8InN0cmluZyI9PXR5cGVvZiBlJiZuLm5hbWU9PWUpcmV0dXJuIHQuc3BsaWNlKHIsMSksdGhpcy5zdGF0ZS5tb2RlR2VuKyssdm9pZCBFdCh0aGlzKX19KSxpbmRlbnRMaW5lOk90KGZ1bmN0aW9uKGUsdCxyKXsic3RyaW5nIiE9dHlwZW9mIHQmJiJudW1iZXIiIT10eXBlb2YgdCYmKHQ9bnVsbD09dD90aGlzLm9wdGlvbnMuc21hcnRJbmRlbnQ/InNtYXJ0IjoicHJldiI6dD8iYWRkIjoic3VidHJhY3QiKSxtZSh0aGlzLmRvYyxlKSYmUnIodGhpcyxlLHQscil9KSxpbmRlbnRTZWxlY3Rpb246T3QoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuZG9jLnNlbC5yYW5nZXMscj0tMSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07aWYoaS5lbXB0eSgpKWkuaGVhZC5saW5lPnImJihScih0aGlzLGkuaGVhZC5saW5lLGUsITApLHI9aS5oZWFkLmxpbmUsbj09dGhpcy5kb2Muc2VsLnByaW1JbmRleCYmenIodGhpcykpO2Vsc2V7dmFyIG89aS5mcm9tKCksbD1pLnRvKCkscz1NYXRoLm1heChyLG8ubGluZSk7cj1NYXRoLm1pbih0aGlzLmxhc3RMaW5lKCksbC5saW5lLShsLmNoPzA6MSkpKzE7Zm9yKHZhciBhPXM7cj5hOysrYSlScih0aGlzLGEsZSk7dmFyIHU9dGhpcy5kb2Muc2VsLnJhbmdlczswPT1vLmNoJiZ0Lmxlbmd0aD09dS5sZW5ndGgmJnVbbl0uZnJvbSgpLmNoPjAmJkNlKHRoaXMuZG9jLG4sbmV3IGhlKG8sdVtuXS50bygpKSxJbCl9fX0pLGdldFRva2VuQXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRG4odGhpcyxlLHQpfSxnZXRMaW5lVG9rZW5zOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIERuKHRoaXMsem8oZSksdCwhMCl9LGdldFRva2VuVHlwZUF0OmZ1bmN0aW9uKGUpe2U9Z2UodGhpcy5kb2MsZSk7dmFyIHQscj1Fbih0aGlzLFpuKHRoaXMuZG9jLGUubGluZSkpLG49MCxpPShyLmxlbmd0aC0xKS8yLG89ZS5jaDtpZigwPT1vKXQ9clsyXTtlbHNlIGZvcig7Oyl7dmFyIGw9bitpPj4xO2lmKChsP3JbMipsLTFdOjApPj1vKWk9bDtlbHNle2lmKCEoclsyKmwrMV08bykpe3Q9clsyKmwrMl07YnJlYWt9bj1sKzF9fXZhciBzPXQ/dC5pbmRleE9mKCJjbS1vdmVybGF5ICIpOi0xO3JldHVybiAwPnM/dDowPT1zP251bGw6dC5zbGljZSgwLHMtMSl9LGdldE1vZGVBdDpmdW5jdGlvbih0KXt2YXIgcj10aGlzLmRvYy5tb2RlO3JldHVybiByLmlubmVyTW9kZT9lLmlubmVyTW9kZShyLHRoaXMuZ2V0VG9rZW5BdCh0KS5zdGF0ZSkubW9kZTpyfSxnZXRIZWxwZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5nZXRIZWxwZXJzKGUsdClbMF19LGdldEhlbHBlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXTtpZighbGwuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHI7dmFyIG49bGxbdF0saT10aGlzLmdldE1vZGVBdChlKTtpZigic3RyaW5nIj09dHlwZW9mIGlbdF0pbltpW3RdXSYmci5wdXNoKG5baVt0XV0pO2Vsc2UgaWYoaVt0XSlmb3IodmFyIG89MDtvPGlbdF0ubGVuZ3RoO28rKyl7dmFyIGw9bltpW3RdW29dXTtsJiZyLnB1c2gobCl9ZWxzZSBpLmhlbHBlclR5cGUmJm5baS5oZWxwZXJUeXBlXT9yLnB1c2gobltpLmhlbHBlclR5cGVdKTpuW2kubmFtZV0mJnIucHVzaChuW2kubmFtZV0pO2Zvcih2YXIgbz0wO288bi5fZ2xvYmFsLmxlbmd0aDtvKyspe3ZhciBzPW4uX2dsb2JhbFtvXTtzLnByZWQoaSx0aGlzKSYmLTE9PUhpKHIscy52YWwpJiZyLnB1c2gocy52YWwpfXJldHVybiByfSxnZXRTdGF0ZUFmdGVyOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5kb2M7cmV0dXJuIGU9cGUocixudWxsPT1lP3IuZmlyc3Qrci5zaXplLTE6ZSksVWUodGhpcyxlKzEsdCl9LGN1cnNvckNvb3JkczpmdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5kb2Muc2VsLnByaW1hcnkoKTtyZXR1cm4gcj1udWxsPT1lP24uaGVhZDoib2JqZWN0Ij09dHlwZW9mIGU/Z2UodGhpcy5kb2MsZSk6ZT9uLmZyb20oKTpuLnRvKCksZHQodGhpcyxyLHR8fCJwYWdlIil9LGNoYXJDb29yZHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnQodGhpcyxnZSh0aGlzLmRvYyxlKSx0fHwicGFnZSIpfSxjb29yZHNDaGFyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9aHQodGhpcyxlLHR8fCJwYWdlIiksdnQodGhpcyxlLmxlZnQsZS50b3ApfSxsaW5lQXRIZWlnaHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1odCh0aGlzLHt0b3A6ZSxsZWZ0OjB9LHR8fCJwYWdlIikudG9wLHJpKHRoaXMuZG9jLGUrdGhpcy5kaXNwbGF5LnZpZXdPZmZzZXQpfSxoZWlnaHRBdExpbmU6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPSExO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIGk9dGhpcy5kb2MuZmlyc3QrdGhpcy5kb2Muc2l6ZS0xO2U8dGhpcy5kb2MuZmlyc3Q/ZT10aGlzLmRvYy5maXJzdDplPmkmJihlPWksbj0hMCkscj1abih0aGlzLmRvYyxlKX1lbHNlIHI9ZTtyZXR1cm4gY3QodGhpcyxyLHt0b3A6MCxsZWZ0OjB9LHR8fCJwYWdlIikudG9wKyhuP3RoaXMuZG9jLmhlaWdodC1uaShyKTowKX0sZGVmYXVsdFRleHRIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4geXQodGhpcy5kaXNwbGF5KX0sZGVmYXVsdENoYXJXaWR0aDpmdW5jdGlvbigpe3JldHVybiBidCh0aGlzLmRpc3BsYXkpfSxzZXRHdXR0ZXJNYXJrZXI6T3QoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBCcih0aGlzLmRvYyxlLCJndXR0ZXIiLGZ1bmN0aW9uKGUpe3ZhciBuPWUuZ3V0dGVyTWFya2Vyc3x8KGUuZ3V0dGVyTWFya2Vycz17fSk7cmV0dXJuIG5bdF09ciwhciYmQmkobikmJihlLmd1dHRlck1hcmtlcnM9bnVsbCksITB9KX0pLGNsZWFyR3V0dGVyOk90KGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj10LmRvYyxuPXIuZmlyc3Q7ci5pdGVyKGZ1bmN0aW9uKHIpe3IuZ3V0dGVyTWFya2VycyYmci5ndXR0ZXJNYXJrZXJzW2VdJiYoci5ndXR0ZXJNYXJrZXJzW2VdPW51bGwsSXQodCxuLCJndXR0ZXIiKSxCaShyLmd1dHRlck1hcmtlcnMpJiYoci5ndXR0ZXJNYXJrZXJzPW51bGwpKSwrK259KX0pLGxpbmVJbmZvOmZ1bmN0aW9uKGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoIW1lKHRoaXMuZG9jLGUpKXJldHVybiBudWxsO3ZhciB0PWU7aWYoZT1abih0aGlzLmRvYyxlKSwhZSlyZXR1cm4gbnVsbH1lbHNle3ZhciB0PXRpKGUpO2lmKG51bGw9PXQpcmV0dXJuIG51bGx9cmV0dXJue2xpbmU6dCxoYW5kbGU6ZSx0ZXh0OmUudGV4dCxndXR0ZXJNYXJrZXJzOmUuZ3V0dGVyTWFya2Vycyx0ZXh0Q2xhc3M6ZS50ZXh0Q2xhc3MsYmdDbGFzczplLmJnQ2xhc3Msd3JhcENsYXNzOmUud3JhcENsYXNzLHdpZGdldHM6ZS53aWRnZXRzfX0sZ2V0Vmlld3BvcnQ6ZnVuY3Rpb24oKXtyZXR1cm57ZnJvbTp0aGlzLmRpc3BsYXkudmlld0Zyb20sdG86dGhpcy5kaXNwbGF5LnZpZXdUb319LGFkZFdpZGdldDpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvPXRoaXMuZGlzcGxheTtlPWR0KHRoaXMsZ2UodGhpcy5kb2MsZSkpO3ZhciBsPWUuYm90dG9tLHM9ZS5sZWZ0O2lmKHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnNldEF0dHJpYnV0ZSgiY20taWdub3JlLWV2ZW50cyIsInRydWUiKSx0aGlzLmRpc3BsYXkuaW5wdXQuc2V0VW5lZGl0YWJsZSh0KSxvLnNpemVyLmFwcGVuZENoaWxkKHQpLCJvdmVyIj09bilsPWUudG9wO2Vsc2UgaWYoImFib3ZlIj09bnx8Im5lYXIiPT1uKXt2YXIgYT1NYXRoLm1heChvLndyYXBwZXIuY2xpZW50SGVpZ2h0LHRoaXMuZG9jLmhlaWdodCksdT1NYXRoLm1heChvLnNpemVyLmNsaWVudFdpZHRoLG8ubGluZVNwYWNlLmNsaWVudFdpZHRoKTsoImFib3ZlIj09bnx8ZS5ib3R0b20rdC5vZmZzZXRIZWlnaHQ+YSkmJmUudG9wPnQub2Zmc2V0SGVpZ2h0P2w9ZS50b3AtdC5vZmZzZXRIZWlnaHQ6ZS5ib3R0b20rdC5vZmZzZXRIZWlnaHQ8PWEmJihsPWUuYm90dG9tKSxzK3Qub2Zmc2V0V2lkdGg+dSYmKHM9dS10Lm9mZnNldFdpZHRoKX10LnN0eWxlLnRvcD1sKyJweCIsdC5zdHlsZS5sZWZ0PXQuc3R5bGUucmlnaHQ9IiIsInJpZ2h0Ij09aT8ocz1vLnNpemVyLmNsaWVudFdpZHRoLXQub2Zmc2V0V2lkdGgsdC5zdHlsZS5yaWdodD0iMHB4Iik6KCJsZWZ0Ij09aT9zPTA6Im1pZGRsZSI9PWkmJihzPShvLnNpemVyLmNsaWVudFdpZHRoLXQub2Zmc2V0V2lkdGgpLzIpLHQuc3R5bGUubGVmdD1zKyJweCIpLHImJlByKHRoaXMscyxsLHMrdC5vZmZzZXRXaWR0aCxsK3Qub2Zmc2V0SGVpZ2h0KX0sdHJpZ2dlck9uS2V5RG93bjpPdChociksdHJpZ2dlck9uS2V5UHJlc3M6T3QocHIpLHRyaWdnZXJPbktleVVwOmRyLGV4ZWNDb21tYW5kOmZ1bmN0aW9uKGUpe3JldHVybiB1bC5oYXNPd25Qcm9wZXJ0eShlKT91bFtlXS5jYWxsKG51bGwsdGhpcyk6dm9pZCAwfSx0cmlnZ2VyRWxlY3RyaWM6T3QoZnVuY3Rpb24oZSl7Sih0aGlzLGUpfSksZmluZFBvc0g6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9MTswPnQmJihpPS0xLHQ9LXQpO2Zvcih2YXIgbz0wLGw9Z2UodGhpcy5kb2MsZSk7dD5vJiYobD1Vcih0aGlzLmRvYyxsLGkscixuKSwhbC5oaXRTaWRlKTsrK28pO3JldHVybiBsfSxtb3ZlSDpPdChmdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7ci5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24obil7cmV0dXJuIHIuZGlzcGxheS5zaGlmdHx8ci5kb2MuZXh0ZW5kfHxuLmVtcHR5KCk/VXIoci5kb2Msbi5oZWFkLGUsdCxyLm9wdGlvbnMucnRsTW92ZVZpc3VhbGx5KTowPmU/bi5mcm9tKCk6bi50bygpfSxGbCl9KSxkZWxldGVIOk90KGZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5kb2Muc2VsLG49dGhpcy5kb2M7ci5zb21ldGhpbmdTZWxlY3RlZCgpP24ucmVwbGFjZVNlbGVjdGlvbigiIixudWxsLCIrZGVsZXRlIik6R3IodGhpcyxmdW5jdGlvbihyKXt2YXIgaT1VcihuLHIuaGVhZCxlLHQsITEpO3JldHVybiAwPmU/e2Zyb206aSx0bzpyLmhlYWR9Ontmcm9tOnIuaGVhZCx0bzppfX0pfSksZmluZFBvc1Y6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9MSxvPW47MD50JiYoaT0tMSx0PS10KTtmb3IodmFyIGw9MCxzPWdlKHRoaXMuZG9jLGUpO3Q+bDsrK2wpe3ZhciBhPWR0KHRoaXMscywiZGl2Iik7aWYobnVsbD09bz9vPWEubGVmdDphLmxlZnQ9byxzPVZyKHRoaXMsYSxpLHIpLHMuaGl0U2lkZSlicmVha31yZXR1cm4gc30sbW92ZVY6T3QoZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5kb2MsaT1bXSxvPSFyLmRpc3BsYXkuc2hpZnQmJiFuLmV4dGVuZCYmbi5zZWwuc29tZXRoaW5nU2VsZWN0ZWQoKTtpZihuLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihsKXtpZihvKXJldHVybiAwPmU/bC5mcm9tKCk6bC50bygpO3ZhciBzPWR0KHIsbC5oZWFkLCJkaXYiKTtudWxsIT1sLmdvYWxDb2x1bW4mJihzLmxlZnQ9bC5nb2FsQ29sdW1uKSxpLnB1c2gocy5sZWZ0KTt2YXIgYT1WcihyLHMsZSx0KTtyZXR1cm4icGFnZSI9PXQmJmw9PW4uc2VsLnByaW1hcnkoKSYmSXIocixudWxsLGZ0KHIsYSwiZGl2IikudG9wLXMudG9wKSxhfSxGbCksaS5sZW5ndGgpZm9yKHZhciBsPTA7bDxuLnNlbC5yYW5nZXMubGVuZ3RoO2wrKyluLnNlbC5yYW5nZXNbbF0uZ29hbENvbHVtbj1pW2xdfSksZmluZFdvcmRBdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmRvYyxyPVpuKHQsZS5saW5lKS50ZXh0LG49ZS5jaCxpPWUuY2g7aWYocil7dmFyIG89dGhpcy5nZXRIZWxwZXIoZSwid29yZENoYXJzIik7KGUueFJlbDwwfHxpPT1yLmxlbmd0aCkmJm4/LS1uOisraTtmb3IodmFyIGw9ci5jaGFyQXQobikscz1SaShsLG8pP2Z1bmN0aW9uKGUpe3JldHVybiBSaShlLG8pfTovXHMvLnRlc3QobCk/ZnVuY3Rpb24oZSl7cmV0dXJuL1xzLy50ZXN0KGUpfTpmdW5jdGlvbihlKXtyZXR1cm4hL1xzLy50ZXN0KGUpJiYhUmkoZSl9O24+MCYmcyhyLmNoYXJBdChuLTEpKTspLS1uO2Zvcig7aTxyLmxlbmd0aCYmcyhyLmNoYXJBdChpKSk7KSsraX1yZXR1cm4gbmV3IGhlKHpvKGUubGluZSxuKSx6byhlLmxpbmUsaSkpfSx0b2dnbGVPdmVyd3JpdGU6ZnVuY3Rpb24oZSl7KG51bGw9PWV8fGUhPXRoaXMuc3RhdGUub3ZlcndyaXRlKSYmKCh0aGlzLnN0YXRlLm92ZXJ3cml0ZT0hdGhpcy5zdGF0ZS5vdmVyd3JpdGUpP1psKHRoaXMuZGlzcGxheS5jdXJzb3JEaXYsIkNvZGVNaXJyb3Itb3ZlcndyaXRlIik6cWwodGhpcy5kaXNwbGF5LmN1cnNvckRpdiwiQ29kZU1pcnJvci1vdmVyd3JpdGUiKSxEbCh0aGlzLCJvdmVyd3JpdGVUb2dnbGUiLHRoaXMsdGhpcy5zdGF0ZS5vdmVyd3JpdGUpKX0saGFzRm9jdXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwbGF5LmlucHV0LmdldEZpZWxkKCk9PWppKCl9LGlzUmVhZE9ubHk6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLm9wdGlvbnMucmVhZE9ubHkmJiF0aGlzLmRvYy5jYW50RWRpdCl9LHNjcm9sbFRvOk90KGZ1bmN0aW9uKGUsdCl7KG51bGwhPWV8fG51bGwhPXQpJiZGcih0aGlzKSxudWxsIT1lJiYodGhpcy5jdXJPcC5zY3JvbGxMZWZ0PWUpLG51bGwhPXQmJih0aGlzLmN1ck9wLnNjcm9sbFRvcD10KX0pLGdldFNjcm9sbEluZm86ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRpc3BsYXkuc2Nyb2xsZXI7cmV0dXJue2xlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcCxoZWlnaHQ6ZS5zY3JvbGxIZWlnaHQtWGUodGhpcyktdGhpcy5kaXNwbGF5LmJhckhlaWdodCx3aWR0aDplLnNjcm9sbFdpZHRoLVhlKHRoaXMpLXRoaXMuZGlzcGxheS5iYXJXaWR0aCxjbGllbnRIZWlnaHQ6X2UodGhpcyksY2xpZW50V2lkdGg6WWUodGhpcyl9fSxzY3JvbGxJbnRvVmlldzpPdChmdW5jdGlvbihlLHQpe2lmKG51bGw9PWU/KGU9e2Zyb206dGhpcy5kb2Muc2VsLnByaW1hcnkoKS5oZWFkLHRvOm51bGx9LG51bGw9PXQmJih0PXRoaXMub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW4pKToibnVtYmVyIj09dHlwZW9mIGU/ZT17ZnJvbTp6byhlLDApLHRvOm51bGx9Om51bGw9PWUuZnJvbSYmKGU9e2Zyb206ZSx0bzpudWxsfSksZS50b3x8KGUudG89ZS5mcm9tKSxlLm1hcmdpbj10fHwwLG51bGwhPWUuZnJvbS5saW5lKUZyKHRoaXMpLHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3M9ZTtlbHNle3ZhciByPUVyKHRoaXMsTWF0aC5taW4oZS5mcm9tLmxlZnQsZS50by5sZWZ0KSxNYXRoLm1pbihlLmZyb20udG9wLGUudG8udG9wKS1lLm1hcmdpbixNYXRoLm1heChlLmZyb20ucmlnaHQsZS50by5yaWdodCksTWF0aC5tYXgoZS5mcm9tLmJvdHRvbSxlLnRvLmJvdHRvbSkrZS5tYXJnaW4pO3RoaXMuc2Nyb2xsVG8oci5zY3JvbGxMZWZ0LHIuc2Nyb2xsVG9wKX19KSxzZXRTaXplOk90KGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV8fC9eXGQrJC8udGVzdChTdHJpbmcoZSkpP2UrInB4IjplfXZhciBuPXRoaXM7bnVsbCE9ZSYmKG4uZGlzcGxheS53cmFwcGVyLnN0eWxlLndpZHRoPXIoZSkpLG51bGwhPXQmJihuLmRpc3BsYXkud3JhcHBlci5zdHlsZS5oZWlnaHQ9cih0KSksbi5vcHRpb25zLmxpbmVXcmFwcGluZyYmbHQodGhpcyk7dmFyIGk9bi5kaXNwbGF5LnZpZXdGcm9tO24uZG9jLml0ZXIoaSxuLmRpc3BsYXkudmlld1RvLGZ1bmN0aW9uKGUpe2lmKGUud2lkZ2V0cylmb3IodmFyIHQ9MDt0PGUud2lkZ2V0cy5sZW5ndGg7dCsrKWlmKGUud2lkZ2V0c1t0XS5ub0hTY3JvbGwpe0l0KG4saSwid2lkZ2V0Iik7YnJlYWt9KytpfSksbi5jdXJPcC5mb3JjZVVwZGF0ZT0hMCxEbChuLCJyZWZyZXNoIix0aGlzKX0pLG9wZXJhdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gV3QodGhpcyxlKX0scmVmcmVzaDpPdChmdW5jdGlvbigpe3ZhciBlPXRoaXMuZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0O0V0KHRoaXMpLHRoaXMuY3VyT3AuZm9yY2VVcGRhdGU9ITAsc3QodGhpcyksdGhpcy5zY3JvbGxUbyh0aGlzLmRvYy5zY3JvbGxMZWZ0LHRoaXMuZG9jLnNjcm9sbFRvcCksYyh0aGlzKSwobnVsbD09ZXx8TWF0aC5hYnMoZS15dCh0aGlzLmRpc3BsYXkpKT4uNSkmJmwodGhpcyksRGwodGhpcywicmVmcmVzaCIsdGhpcyl9KSxzd2FwRG9jOk90KGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZG9jO3JldHVybiB0LmNtPW51bGwscW4odGhpcyxlKSxzdCh0aGlzKSx0aGlzLmRpc3BsYXkuaW5wdXQucmVzZXQoKSx0aGlzLnNjcm9sbFRvKGUuc2Nyb2xsTGVmdCxlLnNjcm9sbFRvcCksdGhpcy5jdXJPcC5mb3JjZVNjcm9sbD0hMCxMaSh0aGlzLCJzd2FwRG9jIix0aGlzLHQpLHR9KSxnZXRJbnB1dEZpZWxkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpfSxnZXRXcmFwcGVyRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXkud3JhcHBlcn0sZ2V0U2Nyb2xsZXJFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS5zY3JvbGxlcn0sZ2V0R3V0dGVyRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXkuZ3V0dGVyc319LFdpKGUpO3ZhciBKbz1lLmRlZmF1bHRzPXt9LGVsPWUub3B0aW9uSGFuZGxlcnM9e30sdGw9ZS5Jbml0PXt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJDb2RlTWlycm9yLkluaXQifX07S3IoInZhbHVlIiwiIixmdW5jdGlvbihlLHQpe2Uuc2V0VmFsdWUodCl9LCEwKSxLcigibW9kZSIsbnVsbCxmdW5jdGlvbihlLHQpe2UuZG9jLm1vZGVPcHRpb249dCxyKGUpfSwhMCksS3IoImluZGVudFVuaXQiLDIsciwhMCksS3IoImluZGVudFdpdGhUYWJzIiwhMSksS3IoInNtYXJ0SW5kZW50IiwhMCksS3IoInRhYlNpemUiLDQsZnVuY3Rpb24oZSl7bihlKSxzdChlKSxFdChlKX0sITApLEtyKCJsaW5lU2VwYXJhdG9yIixudWxsLGZ1bmN0aW9uKGUsdCl7aWYoZS5kb2MubGluZVNlcD10LHQpe3ZhciByPVtdLG49ZS5kb2MuZmlyc3Q7ZS5kb2MuaXRlcihmdW5jdGlvbihlKXtmb3IodmFyIGk9MDs7KXt2YXIgbz1lLnRleHQuaW5kZXhPZih0LGkpO2lmKC0xPT1vKWJyZWFrO2k9byt0Lmxlbmd0aCxyLnB1c2goem8obixvKSl9bisrfSk7Zm9yKHZhciBpPXIubGVuZ3RoLTE7aT49MDtpLS0pT3IoZS5kb2MsdCxyW2ldLHpvKHJbaV0ubGluZSxyW2ldLmNoK3QubGVuZ3RoKSl9fSksS3IoInNwZWNpYWxDaGFycyIsL1tcdFx1MDAwMC1cdTAwMTlcdTAwYWRcdTIwMGItXHUyMDBmXHUyMDI4XHUyMDI5XHVmZWZmXS9nLGZ1bmN0aW9uKHQscixuKXt0LnN0YXRlLnNwZWNpYWxDaGFycz1uZXcgUmVnRXhwKHIuc291cmNlKyhyLnRlc3QoIgkiKT8iIjoifAkiKSwiZyIpLG4hPWUuSW5pdCYmdC5yZWZyZXNoKCl9KSxLcigic3BlY2lhbENoYXJQbGFjZWhvbGRlciIsUm4sZnVuY3Rpb24oZSl7ZS5yZWZyZXNoKCl9LCEwKSxLcigiZWxlY3RyaWNDaGFycyIsITApLEtyKCJpbnB1dFN0eWxlIixXbz8iY29udGVudGVkaXRhYmxlIjoidGV4dGFyZWEiLGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbnB1dFN0eWxlIGNhbiBub3QgKHlldCkgYmUgY2hhbmdlZCBpbiBhIHJ1bm5pbmcgZWRpdG9yIil9LCEwKSxLcigicnRsTW92ZVZpc3VhbGx5IiwhT28pLEtyKCJ3aG9sZUxpbmVVcGRhdGVCZWZvcmUiLCEwKSxLcigidGhlbWUiLCJkZWZhdWx0IixmdW5jdGlvbihlKXtzKGUpLGEoZSl9LCEwKSxLcigia2V5TWFwIiwiZGVmYXVsdCIsZnVuY3Rpb24odCxyLG4pe3ZhciBpPVhyKHIpLG89biE9ZS5Jbml0JiZYcihuKTtvJiZvLmRldGFjaCYmby5kZXRhY2godCxpKSxpLmF0dGFjaCYmaS5hdHRhY2godCxvfHxudWxsKX0pLEtyKCJleHRyYUtleXMiLG51bGwpLEtyKCJsaW5lV3JhcHBpbmciLCExLGksITApLEtyKCJndXR0ZXJzIixbXSxmdW5jdGlvbihlKXtkKGUub3B0aW9ucyksYShlKX0sITApLEtyKCJmaXhlZEd1dHRlciIsITAsZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXkuZ3V0dGVycy5zdHlsZS5sZWZ0PXQ/TChlLmRpc3BsYXkpKyJweCI6IjAiLGUucmVmcmVzaCgpfSwhMCksS3IoImNvdmVyR3V0dGVyTmV4dFRvU2Nyb2xsYmFyIiwhMSxmdW5jdGlvbihlKXt5KGUpfSwhMCksS3IoInNjcm9sbGJhclN0eWxlIiwibmF0aXZlIixmdW5jdGlvbihlKXttKGUpLHkoZSksZS5kaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsVG9wKGUuZG9jLnNjcm9sbFRvcCksZS5kaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsTGVmdChlLmRvYy5zY3JvbGxMZWZ0KX0sITApLEtyKCJsaW5lTnVtYmVycyIsITEsZnVuY3Rpb24oZSl7ZChlLm9wdGlvbnMpLGEoZSl9LCEwKSxLcigiZmlyc3RMaW5lTnVtYmVyIiwxLGEsITApLEtyKCJsaW5lTnVtYmVyRm9ybWF0dGVyIixmdW5jdGlvbihlKXtyZXR1cm4gZX0sYSwhMCksS3IoInNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIiwhMSxQZSwhMCksS3IoInJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSIsITApLEtyKCJsaW5lV2lzZUNvcHlDdXQiLCEwKSxLcigicmVhZE9ubHkiLCExLGZ1bmN0aW9uKGUsdCl7Im5vY3Vyc29yIj09dD8obXIoZSksZS5kaXNwbGF5LmlucHV0LmJsdXIoKSxlLmRpc3BsYXkuZGlzYWJsZWQ9ITApOmUuZGlzcGxheS5kaXNhYmxlZD0hMSxlLmRpc3BsYXkuaW5wdXQucmVhZE9ubHlDaGFuZ2VkKHQpfSksS3IoImRpc2FibGVJbnB1dCIsITEsZnVuY3Rpb24oZSx0KXt0fHxlLmRpc3BsYXkuaW5wdXQucmVzZXQoKX0sITApLEtyKCJkcmFnRHJvcCIsITAsVnQpLEtyKCJhbGxvd0Ryb3BGaWxlVHlwZXMiLG51bGwpLEtyKCJjdXJzb3JCbGlua1JhdGUiLDUzMCksS3IoImN1cnNvclNjcm9sbE1hcmdpbiIsMCksS3IoImN1cnNvckhlaWdodCIsMSxQZSwhMCksS3IoInNpbmdsZUN1cnNvckhlaWdodFBlckxpbmUiLCEwLFBlLCEwKSxLcigid29ya1RpbWUiLDEwMCksS3IoIndvcmtEZWxheSIsMTAwKSxLcigiZmxhdHRlblNwYW5zIiwhMCxuLCEwKSxLcigiYWRkTW9kZUNsYXNzIiwhMSxuLCEwKSxLcigicG9sbEludGVydmFsIiwxMDApLEtyKCJ1bmRvRGVwdGgiLDIwMCxmdW5jdGlvbihlLHQpe2UuZG9jLmhpc3RvcnkudW5kb0RlcHRoPXR9KSxLcigiaGlzdG9yeUV2ZW50RGVsYXkiLDEyNTApLEtyKCJ2aWV3cG9ydE1hcmdpbiIsMTAsZnVuY3Rpb24oZSl7ZS5yZWZyZXNoKCl9LCEwKSxLcigibWF4SGlnaGxpZ2h0TGVuZ3RoIiwxZTQsbiwhMCksS3IoIm1vdmVJbnB1dFdpdGhDdXJzb3IiLCEwLGZ1bmN0aW9uKGUsdCl7dHx8ZS5kaXNwbGF5LmlucHV0LnJlc2V0UG9zaXRpb24oKX0pLEtyKCJ0YWJpbmRleCIsbnVsbCxmdW5jdGlvbihlLHQpe2UuZGlzcGxheS5pbnB1dC5nZXRGaWVsZCgpLnRhYkluZGV4PXR8fCIifSksS3IoImF1dG9mb2N1cyIsbnVsbCk7dmFyIHJsPWUubW9kZXM9e30sbmw9ZS5taW1lTW9kZXM9e307ZS5kZWZpbmVNb2RlPWZ1bmN0aW9uKHQscil7ZS5kZWZhdWx0cy5tb2RlfHwibnVsbCI9PXR8fChlLmRlZmF1bHRzLm1vZGU9dCksYXJndW1lbnRzLmxlbmd0aD4yJiYoci5kZXBlbmRlbmNpZXM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxybFt0XT1yfSxlLmRlZmluZU1JTUU9ZnVuY3Rpb24oZSx0KXtubFtlXT10fSxlLnJlc29sdmVNb2RlPWZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmbmwuaGFzT3duUHJvcGVydHkodCkpdD1ubFt0XTtlbHNlIGlmKHQmJiJzdHJpbmciPT10eXBlb2YgdC5uYW1lJiZubC5oYXNPd25Qcm9wZXJ0eSh0Lm5hbWUpKXt2YXIgcj1ubFt0Lm5hbWVdOyJzdHJpbmciPT10eXBlb2YgciYmKHI9e25hbWU6cn0pLHQ9SWkocix0KSx0Lm5hbWU9ci5uYW1lfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0JiYvXltcd1wtXStcL1tcd1wtXStcK3htbCQvLnRlc3QodCkpcmV0dXJuIGUucmVzb2x2ZU1vZGUoImFwcGxpY2F0aW9uL3htbCIpO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD97bmFtZTp0fTp0fHx7bmFtZToibnVsbCJ9fSxlLmdldE1vZGU9ZnVuY3Rpb24odCxyKXt2YXIgcj1lLnJlc29sdmVNb2RlKHIpLG49cmxbci5uYW1lXTtpZighbilyZXR1cm4gZS5nZXRNb2RlKHQsInRleHQvcGxhaW4iKTt2YXIgaT1uKHQscik7aWYoaWwuaGFzT3duUHJvcGVydHkoci5uYW1lKSl7dmFyIG89aWxbci5uYW1lXTtmb3IodmFyIGwgaW4gbylvLmhhc093blByb3BlcnR5KGwpJiYoaS5oYXNPd25Qcm9wZXJ0eShsKSYmKGlbIl8iK2xdPWlbbF0pLGlbbF09b1tsXSl9aWYoaS5uYW1lPXIubmFtZSxyLmhlbHBlclR5cGUmJihpLmhlbHBlclR5cGU9ci5oZWxwZXJUeXBlKSxyLm1vZGVQcm9wcylmb3IodmFyIGwgaW4gci5tb2RlUHJvcHMpaVtsXT1yLm1vZGVQcm9wc1tsXTtyZXR1cm4gaX0sZS5kZWZpbmVNb2RlKCJudWxsIixmdW5jdGlvbigpe3JldHVybnt0b2tlbjpmdW5jdGlvbihlKXtlLnNraXBUb0VuZCgpfX19KSxlLmRlZmluZU1JTUUoInRleHQvcGxhaW4iLCJudWxsIik7dmFyIGlsPWUubW9kZUV4dGVuc2lvbnM9e307ZS5leHRlbmRNb2RlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aWwuaGFzT3duUHJvcGVydHkoZSk/aWxbZV06aWxbZV09e307emkodCxyKX0sZS5kZWZpbmVFeHRlbnNpb249ZnVuY3Rpb24odCxyKXtlLnByb3RvdHlwZVt0XT1yfSxlLmRlZmluZURvY0V4dGVuc2lvbj1mdW5jdGlvbihlLHQpe1NsLnByb3RvdHlwZVtlXT10fSxlLmRlZmluZU9wdGlvbj1Lcjt2YXIgb2w9W107ZS5kZWZpbmVJbml0SG9vaz1mdW5jdGlvbihlKXtvbC5wdXNoKGUpfTt2YXIgbGw9ZS5oZWxwZXJzPXt9O2UucmVnaXN0ZXJIZWxwZXI9ZnVuY3Rpb24odCxyLG4pe2xsLmhhc093blByb3BlcnR5KHQpfHwobGxbdF09ZVt0XT17X2dsb2JhbDpbXX0pLGxsW3RdW3JdPW59LGUucmVnaXN0ZXJHbG9iYWxIZWxwZXI9ZnVuY3Rpb24odCxyLG4saSl7ZS5yZWdpc3RlckhlbHBlcih0LHIsaSksbGxbdF0uX2dsb2JhbC5wdXNoKHtwcmVkOm4sdmFsOml9KX07dmFyIHNsPWUuY29weVN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYodD09PSEwKXJldHVybiB0O2lmKGUuY29weVN0YXRlKXJldHVybiBlLmNvcHlTdGF0ZSh0KTt2YXIgcj17fTtmb3IodmFyIG4gaW4gdCl7dmFyIGk9dFtuXTtpIGluc3RhbmNlb2YgQXJyYXkmJihpPWkuY29uY2F0KFtdKSkscltuXT1pfXJldHVybiByfSxhbD1lLnN0YXJ0U3RhdGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLnN0YXJ0U3RhdGU/ZS5zdGFydFN0YXRlKHQscik6ITB9O2UuaW5uZXJNb2RlPWZ1bmN0aW9uKGUsdCl7Zm9yKDtlLmlubmVyTW9kZTspe3ZhciByPWUuaW5uZXJNb2RlKHQpO2lmKCFyfHxyLm1vZGU9PWUpYnJlYWs7dD1yLnN0YXRlLGU9ci5tb2RlfXJldHVybiByfHx7bW9kZTplLHN0YXRlOnR9fTt2YXIgdWw9ZS5jb21tYW5kcz17c2VsZWN0QWxsOmZ1bmN0aW9uKGUpe2Uuc2V0U2VsZWN0aW9uKHpvKGUuZmlyc3RMaW5lKCksMCksem8oZS5sYXN0TGluZSgpKSxJbCl9LHNpbmdsZVNlbGVjdGlvbjpmdW5jdGlvbihlKXtlLnNldFNlbGVjdGlvbihlLmdldEN1cnNvcigiYW5jaG9yIiksZS5nZXRDdXJzb3IoImhlYWQiKSxJbCl9LGtpbGxMaW5lOmZ1bmN0aW9uKGUpe0dyKGUsZnVuY3Rpb24odCl7aWYodC5lbXB0eSgpKXt2YXIgcj1abihlLmRvYyx0LmhlYWQubGluZSkudGV4dC5sZW5ndGg7cmV0dXJuIHQuaGVhZC5jaD09ciYmdC5oZWFkLmxpbmU8ZS5sYXN0TGluZSgpP3tmcm9tOnQuaGVhZCx0bzp6byh0LmhlYWQubGluZSsxLDApfTp7ZnJvbTp0LmhlYWQsdG86em8odC5oZWFkLmxpbmUscil9fXJldHVybntmcm9tOnQuZnJvbSgpLHRvOnQudG8oKX19KX0sZGVsZXRlTGluZTpmdW5jdGlvbihlKXtHcihlLGZ1bmN0aW9uKHQpe3JldHVybntmcm9tOnpvKHQuZnJvbSgpLmxpbmUsMCksdG86Z2UoZS5kb2Msem8odC50bygpLmxpbmUrMSwwKSl9fSl9LGRlbExpbmVMZWZ0OmZ1bmN0aW9uKGUpe0dyKGUsZnVuY3Rpb24oZSl7cmV0dXJue2Zyb206em8oZS5mcm9tKCkubGluZSwwKSx0bzplLmZyb20oKX19KX0sZGVsV3JhcHBlZExpbmVMZWZ0OmZ1bmN0aW9uKGUpe0dyKGUsZnVuY3Rpb24odCl7dmFyIHI9ZS5jaGFyQ29vcmRzKHQuaGVhZCwiZGl2IikudG9wKzUsbj1lLmNvb3Jkc0NoYXIoe2xlZnQ6MCx0b3A6cn0sImRpdiIpO3JldHVybntmcm9tOm4sdG86dC5mcm9tKCl9fSl9LGRlbFdyYXBwZWRMaW5lUmlnaHQ6ZnVuY3Rpb24oZSl7R3IoZSxmdW5jdGlvbih0KXt2YXIgcj1lLmNoYXJDb29yZHModC5oZWFkLCJkaXYiKS50b3ArNSxuPWUuY29vcmRzQ2hhcih7bGVmdDplLmRpc3BsYXkubGluZURpdi5vZmZzZXRXaWR0aCsxMDAsdG9wOnJ9LCJkaXYiKTtyZXR1cm57ZnJvbTp0LmZyb20oKSx0bzpufX0pfSx1bmRvOmZ1bmN0aW9uKGUpe2UudW5kbygpfSxyZWRvOmZ1bmN0aW9uKGUpe2UucmVkbygpfSx1bmRvU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe2UudW5kb1NlbGVjdGlvbigpfSxyZWRvU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe2UucmVkb1NlbGVjdGlvbigpfSxnb0RvY1N0YXJ0OmZ1bmN0aW9uKGUpe2UuZXh0ZW5kU2VsZWN0aW9uKHpvKGUuZmlyc3RMaW5lKCksMCkpfSxnb0RvY0VuZDpmdW5jdGlvbihlKXtlLmV4dGVuZFNlbGVjdGlvbih6byhlLmxhc3RMaW5lKCkpKX0sZ29MaW5lU3RhcnQ6ZnVuY3Rpb24oZSl7ZS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24odCl7cmV0dXJuIG9vKGUsdC5oZWFkLmxpbmUpfSx7b3JpZ2luOiIrbW92ZSIsYmlhczoxfSl9LGdvTGluZVN0YXJ0U21hcnQ6ZnVuY3Rpb24oZSl7ZS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24odCl7cmV0dXJuIHNvKGUsdC5oZWFkKX0se29yaWdpbjoiK21vdmUiLGJpYXM6MX0pfSxnb0xpbmVFbmQ6ZnVuY3Rpb24oZSl7ZS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24odCl7cmV0dXJuIGxvKGUsdC5oZWFkLmxpbmUpfSx7b3JpZ2luOiIrbW92ZSIsYmlhczotMX0pfSxnb0xpbmVSaWdodDpmdW5jdGlvbihlKXtlLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbih0KXt2YXIgcj1lLmNoYXJDb29yZHModC5oZWFkLCJkaXYiKS50b3ArNTtyZXR1cm4gZS5jb29yZHNDaGFyKHtsZWZ0OmUuZGlzcGxheS5saW5lRGl2Lm9mZnNldFdpZHRoKzEwMCx0b3A6cn0sImRpdiIpfSxGbCl9LGdvTGluZUxlZnQ6ZnVuY3Rpb24oZSl7ZS5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24odCl7dmFyIHI9ZS5jaGFyQ29vcmRzKHQuaGVhZCwiZGl2IikudG9wKzU7cmV0dXJuIGUuY29vcmRzQ2hhcih7bGVmdDowLHRvcDpyfSwiZGl2Iil9LEZsKX0sZ29MaW5lTGVmdFNtYXJ0OmZ1bmN0aW9uKGUpe2UuZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKHQpe3ZhciByPWUuY2hhckNvb3Jkcyh0LmhlYWQsImRpdiIpLnRvcCs1LG49ZS5jb29yZHNDaGFyKHtsZWZ0OjAsdG9wOnJ9LCJkaXYiKTtyZXR1cm4gbi5jaDxlLmdldExpbmUobi5saW5lKS5zZWFyY2goL1xTLyk/c28oZSx0LmhlYWQpOm59LEZsKX0sZ29MaW5lVXA6ZnVuY3Rpb24oZSl7ZS5tb3ZlVigtMSwibGluZSIpfSxnb0xpbmVEb3duOmZ1bmN0aW9uKGUpe2UubW92ZVYoMSwibGluZSIpfSxnb1BhZ2VVcDpmdW5jdGlvbihlKXtlLm1vdmVWKC0xLCJwYWdlIil9LGdvUGFnZURvd246ZnVuY3Rpb24oZSl7ZS5tb3ZlVigxLCJwYWdlIil9LGdvQ2hhckxlZnQ6ZnVuY3Rpb24oZSl7ZS5tb3ZlSCgtMSwiY2hhciIpfSxnb0NoYXJSaWdodDpmdW5jdGlvbihlKXtlLm1vdmVIKDEsImNoYXIiKX0sZ29Db2x1bW5MZWZ0OmZ1bmN0aW9uKGUpe2UubW92ZUgoLTEsImNvbHVtbiIpfSxnb0NvbHVtblJpZ2h0OmZ1bmN0aW9uKGUpe2UubW92ZUgoMSwiY29sdW1uIil9LGdvV29yZExlZnQ6ZnVuY3Rpb24oZSl7ZS5tb3ZlSCgtMSwid29yZCIpfSxnb0dyb3VwUmlnaHQ6ZnVuY3Rpb24oZSl7ZS5tb3ZlSCgxLCJncm91cCIpfSxnb0dyb3VwTGVmdDpmdW5jdGlvbihlKXtlLm1vdmVIKC0xLCJncm91cCIpfSxnb1dvcmRSaWdodDpmdW5jdGlvbihlKXtlLm1vdmVIKDEsIndvcmQiKX0sZGVsQ2hhckJlZm9yZTpmdW5jdGlvbihlKXtlLmRlbGV0ZUgoLTEsImNoYXIiKX0sZGVsQ2hhckFmdGVyOmZ1bmN0aW9uKGUpe2UuZGVsZXRlSCgxLCJjaGFyIil9LGRlbFdvcmRCZWZvcmU6ZnVuY3Rpb24oZSl7ZS5kZWxldGVIKC0xLCJ3b3JkIil9LGRlbFdvcmRBZnRlcjpmdW5jdGlvbihlKXtlLmRlbGV0ZUgoMSwid29yZCIpfSxkZWxHcm91cEJlZm9yZTpmdW5jdGlvbihlKXtlLmRlbGV0ZUgoLTEsImdyb3VwIil9LGRlbEdyb3VwQWZ0ZXI6ZnVuY3Rpb24oZSl7ZS5kZWxldGVIKDEsImdyb3VwIil9LGluZGVudEF1dG86ZnVuY3Rpb24oZSl7ZS5pbmRlbnRTZWxlY3Rpb24oInNtYXJ0Iil9LGluZGVudE1vcmU6ZnVuY3Rpb24oZSl7ZS5pbmRlbnRTZWxlY3Rpb24oImFkZCIpfSxpbmRlbnRMZXNzOmZ1bmN0aW9uKGUpe2UuaW5kZW50U2VsZWN0aW9uKCJzdWJ0cmFjdCIpfSxpbnNlcnRUYWI6ZnVuY3Rpb24oZSl7ZS5yZXBsYWNlU2VsZWN0aW9uKCIJIil9LGluc2VydFNvZnRUYWI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9ZS5saXN0U2VsZWN0aW9ucygpLG49ZS5vcHRpb25zLnRhYlNpemUsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldLmZyb20oKSxsPVJsKGUuZ2V0TGluZShvLmxpbmUpLG8uY2gsbik7dC5wdXNoKG5ldyBBcnJheShuLWwlbisxKS5qb2luKCIgIikpfWUucmVwbGFjZVNlbGVjdGlvbnModCl9LGRlZmF1bHRUYWI6ZnVuY3Rpb24oZSl7ZS5zb21ldGhpbmdTZWxlY3RlZCgpP2UuaW5kZW50U2VsZWN0aW9uKCJhZGQiKTplLmV4ZWNDb21tYW5kKCJpbnNlcnRUYWIiKX0sdHJhbnNwb3NlQ2hhcnM6ZnVuY3Rpb24oZSl7V3QoZSxmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmxpc3RTZWxlY3Rpb25zKCkscj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl0uaGVhZCxvPVpuKGUuZG9jLGkubGluZSkudGV4dDtpZihvKWlmKGkuY2g9PW8ubGVuZ3RoJiYoaT1uZXcgem8oaS5saW5lLGkuY2gtMSkpLGkuY2g+MClpPW5ldyB6byhpLmxpbmUsaS5jaCsxKSxlLnJlcGxhY2VSYW5nZShvLmNoYXJBdChpLmNoLTEpK28uY2hhckF0KGkuY2gtMiksem8oaS5saW5lLGkuY2gtMiksaSwiK3RyYW5zcG9zZSIpO2Vsc2UgaWYoaS5saW5lPmUuZG9jLmZpcnN0KXt2YXIgbD1abihlLmRvYyxpLmxpbmUtMSkudGV4dDtsJiZlLnJlcGxhY2VSYW5nZShvLmNoYXJBdCgwKStlLmRvYy5saW5lU2VwYXJhdG9yKCkrbC5jaGFyQXQobC5sZW5ndGgtMSksem8oaS5saW5lLTEsbC5sZW5ndGgtMSksem8oaS5saW5lLDEpLCIrdHJhbnNwb3NlIil9ci5wdXNoKG5ldyBoZShpLGkpKX1lLnNldFNlbGVjdGlvbnMocil9KX0sbmV3bGluZUFuZEluZGVudDpmdW5jdGlvbihlKXtXdChlLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWUubGlzdFNlbGVjdGlvbnMoKS5sZW5ndGgscj0wO3Q+cjtyKyspe3ZhciBuPWUubGlzdFNlbGVjdGlvbnMoKVtyXTtlLnJlcGxhY2VSYW5nZShlLmRvYy5saW5lU2VwYXJhdG9yKCksbi5hbmNob3Isbi5oZWFkLCIraW5wdXQiKSxlLmluZGVudExpbmUobi5mcm9tKCkubGluZSsxLG51bGwsITApfXpyKGUpfSl9LHRvZ2dsZU92ZXJ3cml0ZTpmdW5jdGlvbihlKXtlLnRvZ2dsZU92ZXJ3cml0ZSgpfX0sY2w9ZS5rZXlNYXA9e307Y2wuYmFzaWM9e0xlZnQ6ImdvQ2hhckxlZnQiLFJpZ2h0OiJnb0NoYXJSaWdodCIsVXA6ImdvTGluZVVwIixEb3duOiJnb0xpbmVEb3duIixFbmQ6ImdvTGluZUVuZCIsSG9tZToiZ29MaW5lU3RhcnRTbWFydCIsUGFnZVVwOiJnb1BhZ2VVcCIsUGFnZURvd246ImdvUGFnZURvd24iLERlbGV0ZToiZGVsQ2hhckFmdGVyIixCYWNrc3BhY2U6ImRlbENoYXJCZWZvcmUiLCJTaGlmdC1CYWNrc3BhY2UiOiJkZWxDaGFyQmVmb3JlIixUYWI6ImRlZmF1bHRUYWIiLCJTaGlmdC1UYWIiOiJpbmRlbnRBdXRvIixFbnRlcjoibmV3bGluZUFuZEluZGVudCIsSW5zZXJ0OiJ0b2dnbGVPdmVyd3JpdGUiLEVzYzoic2luZ2xlU2VsZWN0aW9uIn0sY2wucGNEZWZhdWx0PXsiQ3RybC1BIjoic2VsZWN0QWxsIiwiQ3RybC1EIjoiZGVsZXRlTGluZSIsIkN0cmwtWiI6InVuZG8iLCJTaGlmdC1DdHJsLVoiOiJyZWRvIiwiQ3RybC1ZIjoicmVkbyIsIkN0cmwtSG9tZSI6ImdvRG9jU3RhcnQiLCJDdHJsLUVuZCI6ImdvRG9jRW5kIiwiQ3RybC1VcCI6ImdvTGluZVVwIiwiQ3RybC1Eb3duIjoiZ29MaW5lRG93biIsIkN0cmwtTGVmdCI6ImdvR3JvdXBMZWZ0IiwiQ3RybC1SaWdodCI6ImdvR3JvdXBSaWdodCIsIkFsdC1MZWZ0IjoiZ29MaW5lU3RhcnQiLCJBbHQtUmlnaHQiOiJnb0xpbmVFbmQiLCJDdHJsLUJhY2tzcGFjZSI6ImRlbEdyb3VwQmVmb3JlIiwiQ3RybC1EZWxldGUiOiJkZWxHcm91cEFmdGVyIiwiQ3RybC1TIjoic2F2ZSIsIkN0cmwtRiI6ImZpbmQiLCJDdHJsLUciOiJmaW5kTmV4dCIsIlNoaWZ0LUN0cmwtRyI6ImZpbmRQcmV2IiwiU2hpZnQtQ3RybC1GIjoicmVwbGFjZSIsCiJTaGlmdC1DdHJsLVIiOiJyZXBsYWNlQWxsIiwiQ3RybC1bIjoiaW5kZW50TGVzcyIsIkN0cmwtXSI6ImluZGVudE1vcmUiLCJDdHJsLVUiOiJ1bmRvU2VsZWN0aW9uIiwiU2hpZnQtQ3RybC1VIjoicmVkb1NlbGVjdGlvbiIsIkFsdC1VIjoicmVkb1NlbGVjdGlvbiIsZmFsbHRocm91Z2g6ImJhc2ljIn0sY2wuZW1hY3N5PXsiQ3RybC1GIjoiZ29DaGFyUmlnaHQiLCJDdHJsLUIiOiJnb0NoYXJMZWZ0IiwiQ3RybC1QIjoiZ29MaW5lVXAiLCJDdHJsLU4iOiJnb0xpbmVEb3duIiwiQWx0LUYiOiJnb1dvcmRSaWdodCIsIkFsdC1CIjoiZ29Xb3JkTGVmdCIsIkN0cmwtQSI6ImdvTGluZVN0YXJ0IiwiQ3RybC1FIjoiZ29MaW5lRW5kIiwiQ3RybC1WIjoiZ29QYWdlRG93biIsIlNoaWZ0LUN0cmwtViI6ImdvUGFnZVVwIiwiQ3RybC1EIjoiZGVsQ2hhckFmdGVyIiwiQ3RybC1IIjoiZGVsQ2hhckJlZm9yZSIsIkFsdC1EIjoiZGVsV29yZEFmdGVyIiwiQWx0LUJhY2tzcGFjZSI6ImRlbFdvcmRCZWZvcmUiLCJDdHJsLUsiOiJraWxsTGluZSIsIkN0cmwtVCI6InRyYW5zcG9zZUNoYXJzIn0sY2wubWFjRGVmYXVsdD17IkNtZC1BIjoic2VsZWN0QWxsIiwiQ21kLUQiOiJkZWxldGVMaW5lIiwiQ21kLVoiOiJ1bmRvIiwiU2hpZnQtQ21kLVoiOiJyZWRvIiwiQ21kLVkiOiJyZWRvIiwiQ21kLUhvbWUiOiJnb0RvY1N0YXJ0IiwiQ21kLVVwIjoiZ29Eb2NTdGFydCIsIkNtZC1FbmQiOiJnb0RvY0VuZCIsIkNtZC1Eb3duIjoiZ29Eb2NFbmQiLCJBbHQtTGVmdCI6ImdvR3JvdXBMZWZ0IiwiQWx0LVJpZ2h0IjoiZ29Hcm91cFJpZ2h0IiwiQ21kLUxlZnQiOiJnb0xpbmVMZWZ0IiwiQ21kLVJpZ2h0IjoiZ29MaW5lUmlnaHQiLCJBbHQtQmFja3NwYWNlIjoiZGVsR3JvdXBCZWZvcmUiLCJDdHJsLUFsdC1CYWNrc3BhY2UiOiJkZWxHcm91cEFmdGVyIiwiQWx0LURlbGV0ZSI6ImRlbEdyb3VwQWZ0ZXIiLCJDbWQtUyI6InNhdmUiLCJDbWQtRiI6ImZpbmQiLCJDbWQtRyI6ImZpbmROZXh0IiwiU2hpZnQtQ21kLUciOiJmaW5kUHJldiIsIkNtZC1BbHQtRiI6InJlcGxhY2UiLCJTaGlmdC1DbWQtQWx0LUYiOiJyZXBsYWNlQWxsIiwiQ21kLVsiOiJpbmRlbnRMZXNzIiwiQ21kLV0iOiJpbmRlbnRNb3JlIiwiQ21kLUJhY2tzcGFjZSI6ImRlbFdyYXBwZWRMaW5lTGVmdCIsIkNtZC1EZWxldGUiOiJkZWxXcmFwcGVkTGluZVJpZ2h0IiwiQ21kLVUiOiJ1bmRvU2VsZWN0aW9uIiwiU2hpZnQtQ21kLVUiOiJyZWRvU2VsZWN0aW9uIiwiQ3RybC1VcCI6ImdvRG9jU3RhcnQiLCJDdHJsLURvd24iOiJnb0RvY0VuZCIsZmFsbHRocm91Z2g6WyJiYXNpYyIsImVtYWNzeSJdfSxjbFsiZGVmYXVsdCJdPUFvP2NsLm1hY0RlZmF1bHQ6Y2wucGNEZWZhdWx0LGUubm9ybWFsaXplS2V5TWFwPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBuPWVbcl07aWYoL14obmFtZXxmYWxsdGhyb3VnaHwoZGV8YXQpdGFjaCkkLy50ZXN0KHIpKWNvbnRpbnVlO2lmKCIuLi4iPT1uKXtkZWxldGUgZVtyXTtjb250aW51ZX1mb3IodmFyIGk9UGkoci5zcGxpdCgiICIpLGpyKSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBsLHM7bz09aS5sZW5ndGgtMT8ocz1pLmpvaW4oIiAiKSxsPW4pOihzPWkuc2xpY2UoMCxvKzEpLmpvaW4oIiAiKSxsPSIuLi4iKTt2YXIgYT10W3NdO2lmKGEpe2lmKGEhPWwpdGhyb3cgbmV3IEVycm9yKCJJbmNvbnNpc3RlbnQgYmluZGluZ3MgZm9yICIrcyl9ZWxzZSB0W3NdPWx9ZGVsZXRlIGVbcl19Zm9yKHZhciB1IGluIHQpZVt1XT10W3VdO3JldHVybiBlfTt2YXIgaGw9ZS5sb29rdXBLZXk9ZnVuY3Rpb24oZSx0LHIsbil7dD1Ycih0KTt2YXIgaT10LmNhbGw/dC5jYWxsKGUsbik6dFtlXTtpZihpPT09ITEpcmV0dXJuIm5vdGhpbmciO2lmKCIuLi4iPT09aSlyZXR1cm4ibXVsdGkiO2lmKG51bGwhPWkmJnIoaSkpcmV0dXJuImhhbmRsZWQiO2lmKHQuZmFsbHRocm91Z2gpe2lmKCJbb2JqZWN0IEFycmF5XSIhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0LmZhbGx0aHJvdWdoKSlyZXR1cm4gaGwoZSx0LmZhbGx0aHJvdWdoLHIsbik7Zm9yKHZhciBvPTA7bzx0LmZhbGx0aHJvdWdoLmxlbmd0aDtvKyspe3ZhciBsPWhsKGUsdC5mYWxsdGhyb3VnaFtvXSxyLG4pO2lmKGwpcmV0dXJuIGx9fX0sZmw9ZS5pc01vZGlmaWVyS2V5PWZ1bmN0aW9uKGUpe3ZhciB0PSJzdHJpbmciPT10eXBlb2YgZT9lOmlzW2Uua2V5Q29kZV07cmV0dXJuIkN0cmwiPT10fHwiQWx0Ij09dHx8IlNoaWZ0Ij09dHx8Ik1vZCI9PXR9LGRsPWUua2V5TmFtZT1mdW5jdGlvbihlLHQpe2lmKExvJiYzND09ZS5rZXlDb2RlJiZlWyJjaGFyIl0pcmV0dXJuITE7dmFyIHI9aXNbZS5rZXlDb2RlXSxuPXI7cmV0dXJuIG51bGw9PW58fGUuYWx0R3JhcGhLZXk/ITE6KGUuYWx0S2V5JiYiQWx0IiE9ciYmKG49IkFsdC0iK24pLChIbz9lLm1ldGFLZXk6ZS5jdHJsS2V5KSYmIkN0cmwiIT1yJiYobj0iQ3RybC0iK24pLChIbz9lLmN0cmxLZXk6ZS5tZXRhS2V5KSYmIkNtZCIhPXImJihuPSJDbWQtIituKSwhdCYmZS5zaGlmdEtleSYmIlNoaWZ0IiE9ciYmKG49IlNoaWZ0LSIrbiksbil9O2UuZnJvbVRleHRBcmVhPWZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbigpe3QudmFsdWU9dS5nZXRWYWx1ZSgpfWlmKHI9cj96aShyKTp7fSxyLnZhbHVlPXQudmFsdWUsIXIudGFiaW5kZXgmJnQudGFiSW5kZXgmJihyLnRhYmluZGV4PXQudGFiSW5kZXgpLCFyLnBsYWNlaG9sZGVyJiZ0LnBsYWNlaG9sZGVyJiYoci5wbGFjZWhvbGRlcj10LnBsYWNlaG9sZGVyKSxudWxsPT1yLmF1dG9mb2N1cyl7dmFyIGk9amkoKTtyLmF1dG9mb2N1cz1pPT10fHxudWxsIT10LmdldEF0dHJpYnV0ZSgiYXV0b2ZvY3VzIikmJmk9PWRvY3VtZW50LmJvZHl9aWYodC5mb3JtJiYoV2wodC5mb3JtLCJzdWJtaXQiLG4pLCFyLmxlYXZlU3VibWl0TWV0aG9kQWxvbmUpKXt2YXIgbz10LmZvcm0sbD1vLnN1Ym1pdDt0cnl7dmFyIHM9by5zdWJtaXQ9ZnVuY3Rpb24oKXtuKCksby5zdWJtaXQ9bCxvLnN1Ym1pdCgpLG8uc3VibWl0PXN9fWNhdGNoKGEpe319ci5maW5pc2hJbml0PWZ1bmN0aW9uKGUpe2Uuc2F2ZT1uLGUuZ2V0VGV4dEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZS50b1RleHRBcmVhPWZ1bmN0aW9uKCl7ZS50b1RleHRBcmVhPWlzTmFOLG4oKSx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5nZXRXcmFwcGVyRWxlbWVudCgpKSx0LnN0eWxlLmRpc3BsYXk9IiIsdC5mb3JtJiYoT2wodC5mb3JtLCJzdWJtaXQiLG4pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvcm0uc3VibWl0JiYodC5mb3JtLnN1Ym1pdD1sKSl9fSx0LnN0eWxlLmRpc3BsYXk9Im5vbmUiO3ZhciB1PWUoZnVuY3Rpb24oZSl7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHQubmV4dFNpYmxpbmcpfSxyKTtyZXR1cm4gdX07dmFyIHBsPWUuU3RyaW5nU3RyZWFtPWZ1bmN0aW9uKGUsdCl7dGhpcy5wb3M9dGhpcy5zdGFydD0wLHRoaXMuc3RyaW5nPWUsdGhpcy50YWJTaXplPXR8fDgsdGhpcy5sYXN0Q29sdW1uUG9zPXRoaXMubGFzdENvbHVtblZhbHVlPTAsdGhpcy5saW5lU3RhcnQ9MH07cGwucHJvdG90eXBlPXtlb2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuc3RyaW5nLmxlbmd0aH0sc29sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zPT10aGlzLmxpbmVTdGFydH0scGVlazpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MpfHx2b2lkIDB9LG5leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3M8dGhpcy5zdHJpbmcubGVuZ3RoP3RoaXMuc3RyaW5nLmNoYXJBdCh0aGlzLnBvcysrKTp2b2lkIDB9LGVhdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl2YXIgcj10PT1lO2Vsc2UgdmFyIHI9dCYmKGUudGVzdD9lLnRlc3QodCk6ZSh0KSk7cmV0dXJuIHI/KCsrdGhpcy5wb3MsdCk6dm9pZCAwfSxlYXRXaGlsZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3M7dGhpcy5lYXQoZSk7KTtyZXR1cm4gdGhpcy5wb3M+dH0sZWF0U3BhY2U6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5wb3M7L1tcc1x1MDBhMF0vLnRlc3QodGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKSk7KSsrdGhpcy5wb3M7cmV0dXJuIHRoaXMucG9zPmV9LHNraXBUb0VuZDpmdW5jdGlvbigpe3RoaXMucG9zPXRoaXMuc3RyaW5nLmxlbmd0aH0sc2tpcFRvOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RyaW5nLmluZGV4T2YoZSx0aGlzLnBvcyk7cmV0dXJuIHQ+LTE/KHRoaXMucG9zPXQsITApOnZvaWQgMH0sYmFja1VwOmZ1bmN0aW9uKGUpe3RoaXMucG9zLT1lfSxjb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0Q29sdW1uUG9zPHRoaXMuc3RhcnQmJih0aGlzLmxhc3RDb2x1bW5WYWx1ZT1SbCh0aGlzLnN0cmluZyx0aGlzLnN0YXJ0LHRoaXMudGFiU2l6ZSx0aGlzLmxhc3RDb2x1bW5Qb3MsdGhpcy5sYXN0Q29sdW1uVmFsdWUpLHRoaXMubGFzdENvbHVtblBvcz10aGlzLnN0YXJ0KSx0aGlzLmxhc3RDb2x1bW5WYWx1ZS0odGhpcy5saW5lU3RhcnQ/UmwodGhpcy5zdHJpbmcsdGhpcy5saW5lU3RhcnQsdGhpcy50YWJTaXplKTowKX0saW5kZW50YXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gUmwodGhpcy5zdHJpbmcsbnVsbCx0aGlzLnRhYlNpemUpLSh0aGlzLmxpbmVTdGFydD9SbCh0aGlzLnN0cmluZyx0aGlzLmxpbmVTdGFydCx0aGlzLnRhYlNpemUpOjApfSxtYXRjaDpmdW5jdGlvbihlLHQscil7aWYoInN0cmluZyIhPXR5cGVvZiBlKXt2YXIgbj10aGlzLnN0cmluZy5zbGljZSh0aGlzLnBvcykubWF0Y2goZSk7cmV0dXJuIG4mJm4uaW5kZXg+MD9udWxsOihuJiZ0IT09ITEmJih0aGlzLnBvcys9blswXS5sZW5ndGgpLG4pfXZhciBpPWZ1bmN0aW9uKGUpe3JldHVybiByP2UudG9Mb3dlckNhc2UoKTplfSxvPXRoaXMuc3RyaW5nLnN1YnN0cih0aGlzLnBvcyxlLmxlbmd0aCk7cmV0dXJuIGkobyk9PWkoZSk/KHQhPT0hMSYmKHRoaXMucG9zKz1lLmxlbmd0aCksITApOnZvaWQgMH0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0cmluZy5zbGljZSh0aGlzLnN0YXJ0LHRoaXMucG9zKX0saGlkZUZpcnN0Q2hhcnM6ZnVuY3Rpb24oZSx0KXt0aGlzLmxpbmVTdGFydCs9ZTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e3RoaXMubGluZVN0YXJ0LT1lfX19O3ZhciBnbD0wLHZsPWUuVGV4dE1hcmtlcj1mdW5jdGlvbihlLHQpe3RoaXMubGluZXM9W10sdGhpcy50eXBlPXQsdGhpcy5kb2M9ZSx0aGlzLmlkPSsrZ2x9O1dpKHZsKSx2bC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtpZighdGhpcy5leHBsaWNpdGx5Q2xlYXJlZCl7dmFyIGU9dGhpcy5kb2MuY20sdD1lJiYhZS5jdXJPcDtpZih0JiZ3dChlKSxOaSh0aGlzLCJjbGVhciIpKXt2YXIgcj10aGlzLmZpbmQoKTtyJiZMaSh0aGlzLCJjbGVhciIsci5mcm9tLHIudG8pfWZvcih2YXIgbj1udWxsLGk9bnVsbCxvPTA7bzx0aGlzLmxpbmVzLmxlbmd0aDsrK28pe3ZhciBsPXRoaXMubGluZXNbb10scz1KcihsLm1hcmtlZFNwYW5zLHRoaXMpO2UmJiF0aGlzLmNvbGxhcHNlZD9JdChlLHRpKGwpLCJ0ZXh0Iik6ZSYmKG51bGwhPXMudG8mJihpPXRpKGwpKSxudWxsIT1zLmZyb20mJihuPXRpKGwpKSksbC5tYXJrZWRTcGFucz1lbihsLm1hcmtlZFNwYW5zLHMpLG51bGw9PXMuZnJvbSYmdGhpcy5jb2xsYXBzZWQmJiFDbih0aGlzLmRvYyxsKSYmZSYmZWkobCx5dChlLmRpc3BsYXkpKX1pZihlJiZ0aGlzLmNvbGxhcHNlZCYmIWUub3B0aW9ucy5saW5lV3JhcHBpbmcpZm9yKHZhciBvPTA7bzx0aGlzLmxpbmVzLmxlbmd0aDsrK28pe3ZhciBhPXluKHRoaXMubGluZXNbb10pLHU9aChhKTt1PmUuZGlzcGxheS5tYXhMaW5lTGVuZ3RoJiYoZS5kaXNwbGF5Lm1heExpbmU9YSxlLmRpc3BsYXkubWF4TGluZUxlbmd0aD11LGUuZGlzcGxheS5tYXhMaW5lQ2hhbmdlZD0hMCl9bnVsbCE9biYmZSYmdGhpcy5jb2xsYXBzZWQmJkV0KGUsbixpKzEpLHRoaXMubGluZXMubGVuZ3RoPTAsdGhpcy5leHBsaWNpdGx5Q2xlYXJlZD0hMCx0aGlzLmF0b21pYyYmdGhpcy5kb2MuY2FudEVkaXQmJih0aGlzLmRvYy5jYW50RWRpdD0hMSxlJiZXZShlLmRvYykpLGUmJkxpKGUsIm1hcmtlckNsZWFyZWQiLGUsdGhpcyksdCYmQ3QoZSksdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmNsZWFyKCl9fSx2bC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihlLHQpe251bGw9PWUmJiJib29rbWFyayI9PXRoaXMudHlwZSYmKGU9MSk7Zm9yKHZhciByLG4saT0wO2k8dGhpcy5saW5lcy5sZW5ndGg7KytpKXt2YXIgbz10aGlzLmxpbmVzW2ldLGw9SnIoby5tYXJrZWRTcGFucyx0aGlzKTtpZihudWxsIT1sLmZyb20mJihyPXpvKHQ/bzp0aShvKSxsLmZyb20pLC0xPT1lKSlyZXR1cm4gcjtpZihudWxsIT1sLnRvJiYobj16byh0P286dGkobyksbC50byksMT09ZSkpcmV0dXJuIG59cmV0dXJuIHImJntmcm9tOnIsdG86bn19LHZsLnByb3RvdHlwZS5jaGFuZ2VkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5maW5kKC0xLCEwKSx0PXRoaXMscj10aGlzLmRvYy5jbTtlJiZyJiZXdChyLGZ1bmN0aW9uKCl7dmFyIG49ZS5saW5lLGk9dGkoZS5saW5lKSxvPUplKHIsaSk7aWYobyYmKG90KG8pLHIuY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZD1yLmN1ck9wLmZvcmNlVXBkYXRlPSEwKSxyLmN1ck9wLnVwZGF0ZU1heExpbmU9ITAsIUNuKHQuZG9jLG4pJiZudWxsIT10LmhlaWdodCl7dmFyIGw9dC5oZWlnaHQ7dC5oZWlnaHQ9bnVsbDt2YXIgcz1Ubih0KS1sO3MmJmVpKG4sbi5oZWlnaHQrcyl9fSl9LHZsLnByb3RvdHlwZS5hdHRhY2hMaW5lPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmxpbmVzLmxlbmd0aCYmdGhpcy5kb2MuY20pe3ZhciB0PXRoaXMuZG9jLmNtLmN1ck9wO3QubWF5YmVIaWRkZW5NYXJrZXJzJiYtMSE9SGkodC5tYXliZUhpZGRlbk1hcmtlcnMsdGhpcyl8fCh0Lm1heWJlVW5oaWRkZW5NYXJrZXJzfHwodC5tYXliZVVuaGlkZGVuTWFya2Vycz1bXSkpLnB1c2godGhpcyl9dGhpcy5saW5lcy5wdXNoKGUpfSx2bC5wcm90b3R5cGUuZGV0YWNoTGluZT1mdW5jdGlvbihlKXtpZih0aGlzLmxpbmVzLnNwbGljZShIaSh0aGlzLmxpbmVzLGUpLDEpLCF0aGlzLmxpbmVzLmxlbmd0aCYmdGhpcy5kb2MuY20pe3ZhciB0PXRoaXMuZG9jLmNtLmN1ck9wOyh0Lm1heWJlSGlkZGVuTWFya2Vyc3x8KHQubWF5YmVIaWRkZW5NYXJrZXJzPVtdKSkucHVzaCh0aGlzKX19O3ZhciBnbD0wLG1sPWUuU2hhcmVkVGV4dE1hcmtlcj1mdW5jdGlvbihlLHQpe3RoaXMubWFya2Vycz1lLHRoaXMucHJpbWFyeT10O2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KytyKWVbcl0ucGFyZW50PXRoaXN9O1dpKG1sKSxtbC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtpZighdGhpcy5leHBsaWNpdGx5Q2xlYXJlZCl7dGhpcy5leHBsaWNpdGx5Q2xlYXJlZD0hMDtmb3IodmFyIGU9MDtlPHRoaXMubWFya2Vycy5sZW5ndGg7KytlKXRoaXMubWFya2Vyc1tlXS5jbGVhcigpO0xpKHRoaXMsImNsZWFyIil9fSxtbC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnByaW1hcnkuZmluZChlLHQpfTt2YXIgeWw9ZS5MaW5lV2lkZ2V0PWZ1bmN0aW9uKGUsdCxyKXtpZihyKWZvcih2YXIgbiBpbiByKXIuaGFzT3duUHJvcGVydHkobikmJih0aGlzW25dPXJbbl0pO3RoaXMuZG9jPWUsdGhpcy5ub2RlPXR9O1dpKHlsKSx5bC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRvYy5jbSx0PXRoaXMubGluZS53aWRnZXRzLHI9dGhpcy5saW5lLG49dGkocik7aWYobnVsbCE9biYmdCl7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDsrK2kpdFtpXT09dGhpcyYmdC5zcGxpY2UoaS0tLDEpO3QubGVuZ3RofHwoci53aWRnZXRzPW51bGwpO3ZhciBvPVRuKHRoaXMpO2VpKHIsTWF0aC5tYXgoMCxyLmhlaWdodC1vKSksZSYmV3QoZSxmdW5jdGlvbigpe0xuKGUsciwtbyksSXQoZSxuLCJ3aWRnZXQiKX0pfX0seWwucHJvdG90eXBlLmNoYW5nZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhlaWdodCx0PXRoaXMuZG9jLmNtLHI9dGhpcy5saW5lO3RoaXMuaGVpZ2h0PW51bGw7dmFyIG49VG4odGhpcyktZTtuJiYoZWkocixyLmhlaWdodCtuKSx0JiZXdCh0LGZ1bmN0aW9uKCl7dC5jdXJPcC5mb3JjZVVwZGF0ZT0hMCxMbih0LHIsbil9KSl9O3ZhciBibD1lLkxpbmU9ZnVuY3Rpb24oZSx0LHIpe3RoaXMudGV4dD1lLGNuKHRoaXMsdCksdGhpcy5oZWlnaHQ9cj9yKHRoaXMpOjF9O1dpKGJsKSxibC5wcm90b3R5cGUubGluZU5vPWZ1bmN0aW9uKCl7cmV0dXJuIHRpKHRoaXMpfTt2YXIgd2w9e30seGw9e307WW4ucHJvdG90eXBlPXtjaHVua1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lcy5sZW5ndGh9LHJlbW92ZUlubmVyOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUsbj1lK3Q7bj5yOysrcil7dmFyIGk9dGhpcy5saW5lc1tyXTt0aGlzLmhlaWdodC09aS5oZWlnaHQsTm4oaSksTGkoaSwiZGVsZXRlIil9dGhpcy5saW5lcy5zcGxpY2UoZSx0KX0sY29sbGFwc2U6ZnVuY3Rpb24oZSl7ZS5wdXNoLmFwcGx5KGUsdGhpcy5saW5lcyl9LGluc2VydElubmVyOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLmhlaWdodCs9cix0aGlzLmxpbmVzPXRoaXMubGluZXMuc2xpY2UoMCxlKS5jb25jYXQodCkuY29uY2F0KHRoaXMubGluZXMuc2xpY2UoZSkpO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7KytuKXRbbl0ucGFyZW50PXRoaXN9LGl0ZXJOOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49ZSt0O24+ZTsrK2UpaWYocih0aGlzLmxpbmVzW2VdKSlyZXR1cm4hMH19LF9uLnByb3RvdHlwZT17Y2h1bmtTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX0scmVtb3ZlSW5uZXI6ZnVuY3Rpb24oZSx0KXt0aGlzLnNpemUtPXQ7Zm9yKHZhciByPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDsrK3Ipe3ZhciBuPXRoaXMuY2hpbGRyZW5bcl0saT1uLmNodW5rU2l6ZSgpO2lmKGk+ZSl7dmFyIG89TWF0aC5taW4odCxpLWUpLGw9bi5oZWlnaHQ7aWYobi5yZW1vdmVJbm5lcihlLG8pLHRoaXMuaGVpZ2h0LT1sLW4uaGVpZ2h0LGk9PW8mJih0aGlzLmNoaWxkcmVuLnNwbGljZShyLS0sMSksbi5wYXJlbnQ9bnVsbCksMD09KHQtPW8pKWJyZWFrO2U9MH1lbHNlIGUtPWl9aWYodGhpcy5zaXplLXQ8MjUmJih0aGlzLmNoaWxkcmVuLmxlbmd0aD4xfHwhKHRoaXMuY2hpbGRyZW5bMF1pbnN0YW5jZW9mIFluKSkpe3ZhciBzPVtdO3RoaXMuY29sbGFwc2UocyksdGhpcy5jaGlsZHJlbj1bbmV3IFluKHMpXSx0aGlzLmNoaWxkcmVuWzBdLnBhcmVudD10aGlzfX0sY29sbGFwc2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDsrK3QpdGhpcy5jaGlsZHJlblt0XS5jb2xsYXBzZShlKX0saW5zZXJ0SW5uZXI6ZnVuY3Rpb24oZSx0LHIpe3RoaXMuc2l6ZSs9dC5sZW5ndGgsdGhpcy5oZWlnaHQrPXI7Zm9yKHZhciBuPTA7bjx0aGlzLmNoaWxkcmVuLmxlbmd0aDsrK24pe3ZhciBpPXRoaXMuY2hpbGRyZW5bbl0sbz1pLmNodW5rU2l6ZSgpO2lmKG8+PWUpe2lmKGkuaW5zZXJ0SW5uZXIoZSx0LHIpLGkubGluZXMmJmkubGluZXMubGVuZ3RoPjUwKXtmb3IoO2kubGluZXMubGVuZ3RoPjUwOyl7dmFyIGw9aS5saW5lcy5zcGxpY2UoaS5saW5lcy5sZW5ndGgtMjUsMjUpLHM9bmV3IFluKGwpO2kuaGVpZ2h0LT1zLmhlaWdodCx0aGlzLmNoaWxkcmVuLnNwbGljZShuKzEsMCxzKSxzLnBhcmVudD10aGlzfXRoaXMubWF5YmVTcGlsbCgpfWJyZWFrfWUtPW99fSxtYXliZVNwaWxsOmZ1bmN0aW9uKCl7aWYoISh0aGlzLmNoaWxkcmVuLmxlbmd0aDw9MTApKXt2YXIgZT10aGlzO2Rve3ZhciB0PWUuY2hpbGRyZW4uc3BsaWNlKGUuY2hpbGRyZW4ubGVuZ3RoLTUsNSkscj1uZXcgX24odCk7aWYoZS5wYXJlbnQpe2Uuc2l6ZS09ci5zaXplLGUuaGVpZ2h0LT1yLmhlaWdodDt2YXIgbj1IaShlLnBhcmVudC5jaGlsZHJlbixlKTtlLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UobisxLDAscil9ZWxzZXt2YXIgaT1uZXcgX24oZS5jaGlsZHJlbik7aS5wYXJlbnQ9ZSxlLmNoaWxkcmVuPVtpLHJdLGU9aX1yLnBhcmVudD1lLnBhcmVudH13aGlsZShlLmNoaWxkcmVuLmxlbmd0aD4xMCk7ZS5wYXJlbnQubWF5YmVTcGlsbCgpfX0saXRlck46ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj0wO248dGhpcy5jaGlsZHJlbi5sZW5ndGg7KytuKXt2YXIgaT10aGlzLmNoaWxkcmVuW25dLG89aS5jaHVua1NpemUoKTtpZihvPmUpe3ZhciBsPU1hdGgubWluKHQsby1lKTtpZihpLml0ZXJOKGUsbCxyKSlyZXR1cm4hMDtpZigwPT0odC09bCkpYnJlYWs7ZT0wfWVsc2UgZS09b319fTt2YXIgQ2w9MCxTbD1lLkRvYz1mdW5jdGlvbihlLHQscixuKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTbCkpcmV0dXJuIG5ldyBTbChlLHQscixuKTtudWxsPT1yJiYocj0wKSxfbi5jYWxsKHRoaXMsW25ldyBZbihbbmV3IGJsKCIiLG51bGwpXSldKSx0aGlzLmZpcnN0PXIsdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxMZWZ0PTAsdGhpcy5jYW50RWRpdD0hMSx0aGlzLmNsZWFuR2VuZXJhdGlvbj0xLHRoaXMuZnJvbnRpZXI9cjt2YXIgaT16byhyLDApO3RoaXMuc2VsPWRlKGkpLHRoaXMuaGlzdG9yeT1uZXcgb2kobnVsbCksdGhpcy5pZD0rK0NsLHRoaXMubW9kZU9wdGlvbj10LHRoaXMubGluZVNlcD1uLHRoaXMuZXh0ZW5kPSExLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5zcGxpdExpbmVzKGUpKSxYbih0aGlzLHtmcm9tOmksdG86aSx0ZXh0OmV9KSxrZSh0aGlzLGRlKGkpLElsKX07U2wucHJvdG90eXBlPUlpKF9uLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6U2wsaXRlcjpmdW5jdGlvbihlLHQscil7cj90aGlzLml0ZXJOKGUtdGhpcy5maXJzdCx0LWUscik6dGhpcy5pdGVyTih0aGlzLmZpcnN0LHRoaXMuZmlyc3QrdGhpcy5zaXplLGUpfSxpbnNlcnQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxuPTA7bjx0Lmxlbmd0aDsrK24pcis9dFtuXS5oZWlnaHQ7dGhpcy5pbnNlcnRJbm5lcihlLXRoaXMuZmlyc3QsdCxyKX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dGhpcy5yZW1vdmVJbm5lcihlLXRoaXMuZmlyc3QsdCl9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PUpuKHRoaXMsdGhpcy5maXJzdCx0aGlzLmZpcnN0K3RoaXMuc2l6ZSk7cmV0dXJuIGU9PT0hMT90OnQuam9pbihlfHx0aGlzLmxpbmVTZXBhcmF0b3IoKSl9LHNldFZhbHVlOkR0KGZ1bmN0aW9uKGUpe3ZhciB0PXpvKHRoaXMuZmlyc3QsMCkscj10aGlzLmZpcnN0K3RoaXMuc2l6ZS0xO1RyKHRoaXMse2Zyb206dCx0bzp6byhyLFpuKHRoaXMscikudGV4dC5sZW5ndGgpLHRleHQ6dGhpcy5zcGxpdExpbmVzKGUpLG9yaWdpbjoic2V0VmFsdWUiLGZ1bGw6ITB9LCEwKSxrZSh0aGlzLGRlKHQpKX0pLHJlcGxhY2VSYW5nZTpmdW5jdGlvbihlLHQscixuKXt0PWdlKHRoaXMsdCkscj1yP2dlKHRoaXMscik6dCxPcih0aGlzLGUsdCxyLG4pfSxnZXRSYW5nZTpmdW5jdGlvbihlLHQscil7dmFyIG49UW4odGhpcyxnZSh0aGlzLGUpLGdlKHRoaXMsdCkpO3JldHVybiByPT09ITE/bjpuLmpvaW4ocnx8dGhpcy5saW5lU2VwYXJhdG9yKCkpfSxnZXRMaW5lOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0TGluZUhhbmRsZShlKTtyZXR1cm4gdCYmdC50ZXh0fSxnZXRMaW5lSGFuZGxlOmZ1bmN0aW9uKGUpe3JldHVybiBtZSh0aGlzLGUpP1puKHRoaXMsZSk6dm9pZCAwfSxnZXRMaW5lTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aShlKX0sZ2V0TGluZUhhbmRsZVZpc3VhbFN0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmKGU9Wm4odGhpcyxlKSkseW4oZSl9LGxpbmVDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemV9LGZpcnN0TGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpcnN0fSxsYXN0TGluZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpcnN0K3RoaXMuc2l6ZS0xfSxjbGlwUG9zOmZ1bmN0aW9uKGUpe3JldHVybiBnZSh0aGlzLGUpfSxnZXRDdXJzb3I6ZnVuY3Rpb24oZSl7dmFyIHQscj10aGlzLnNlbC5wcmltYXJ5KCk7cmV0dXJuIHQ9bnVsbD09ZXx8ImhlYWQiPT1lP3IuaGVhZDoiYW5jaG9yIj09ZT9yLmFuY2hvcjoiZW5kIj09ZXx8InRvIj09ZXx8ZT09PSExP3IudG8oKTpyLmZyb20oKX0sbGlzdFNlbGVjdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWwucmFuZ2VzfSxzb21ldGhpbmdTZWxlY3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbC5zb21ldGhpbmdTZWxlY3RlZCgpfSxzZXRDdXJzb3I6RHQoZnVuY3Rpb24oZSx0LHIpe1NlKHRoaXMsZ2UodGhpcywibnVtYmVyIj09dHlwZW9mIGU/em8oZSx0fHwwKTplKSxudWxsLHIpfSksc2V0U2VsZWN0aW9uOkR0KGZ1bmN0aW9uKGUsdCxyKXtTZSh0aGlzLGdlKHRoaXMsZSksZ2UodGhpcyx0fHxlKSxyKX0pLGV4dGVuZFNlbGVjdGlvbjpEdChmdW5jdGlvbihlLHQscil7d2UodGhpcyxnZSh0aGlzLGUpLHQmJmdlKHRoaXMsdCkscil9KSxleHRlbmRTZWxlY3Rpb25zOkR0KGZ1bmN0aW9uKGUsdCl7eGUodGhpcyx5ZSh0aGlzLGUsdCkpfSksZXh0ZW5kU2VsZWN0aW9uc0J5OkR0KGZ1bmN0aW9uKGUsdCl7eGUodGhpcyxQaSh0aGlzLnNlbC5yYW5nZXMsZSksdCl9KSxzZXRTZWxlY3Rpb25zOkR0KGZ1bmN0aW9uKGUsdCxyKXtpZihlLmxlbmd0aCl7Zm9yKHZhciBuPTAsaT1bXTtuPGUubGVuZ3RoO24rKylpW25dPW5ldyBoZShnZSh0aGlzLGVbbl0uYW5jaG9yKSxnZSh0aGlzLGVbbl0uaGVhZCkpO251bGw9PXQmJih0PU1hdGgubWluKGUubGVuZ3RoLTEsdGhpcy5zZWwucHJpbUluZGV4KSksa2UodGhpcyxmZShpLHQpLHIpfX0pLGFkZFNlbGVjdGlvbjpEdChmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5zZWwucmFuZ2VzLnNsaWNlKDApO24ucHVzaChuZXcgaGUoZ2UodGhpcyxlKSxnZSh0aGlzLHR8fGUpKSksa2UodGhpcyxmZShuLG4ubGVuZ3RoLTEpLHIpfSksZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPXRoaXMuc2VsLnJhbmdlcyxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPVFuKHRoaXMscltuXS5mcm9tKCkscltuXS50bygpKTt0PXQ/dC5jb25jYXQoaSk6aX1yZXR1cm4gZT09PSExP3Q6dC5qb2luKGV8fHRoaXMubGluZVNlcGFyYXRvcigpKX0sZ2V0U2VsZWN0aW9uczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj10aGlzLnNlbC5yYW5nZXMsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1Rbih0aGlzLHJbbl0uZnJvbSgpLHJbbl0udG8oKSk7ZSE9PSExJiYoaT1pLmpvaW4oZXx8dGhpcy5saW5lU2VwYXJhdG9yKCkpKSx0W25dPWl9cmV0dXJuIHR9LHJlcGxhY2VTZWxlY3Rpb246ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1bXSxpPTA7aTx0aGlzLnNlbC5yYW5nZXMubGVuZ3RoO2krKyluW2ldPWU7dGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhuLHQscnx8IitpbnB1dCIpfSxyZXBsYWNlU2VsZWN0aW9uczpEdChmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9dGhpcy5zZWwsbz0wO288aS5yYW5nZXMubGVuZ3RoO28rKyl7dmFyIGw9aS5yYW5nZXNbb107bltvXT17ZnJvbTpsLmZyb20oKSx0bzpsLnRvKCksdGV4dDp0aGlzLnNwbGl0TGluZXMoZVtvXSksb3JpZ2luOnJ9fWZvcih2YXIgcz10JiYiZW5kIiE9dCYmU3IodGhpcyxuLHQpLG89bi5sZW5ndGgtMTtvPj0wO28tLSlUcih0aGlzLG5bb10pO3M/VGUodGhpcyxzKTp0aGlzLmNtJiZ6cih0aGlzLmNtKX0pLHVuZG86RHQoZnVuY3Rpb24oKXtNcih0aGlzLCJ1bmRvIil9KSxyZWRvOkR0KGZ1bmN0aW9uKCl7TXIodGhpcywicmVkbyIpfSksdW5kb1NlbGVjdGlvbjpEdChmdW5jdGlvbigpe01yKHRoaXMsInVuZG8iLCEwKX0pLHJlZG9TZWxlY3Rpb246RHQoZnVuY3Rpb24oKXtNcih0aGlzLCJyZWRvIiwhMCl9KSxzZXRFeHRlbmRpbmc6ZnVuY3Rpb24oZSl7dGhpcy5leHRlbmQ9ZX0sZ2V0RXh0ZW5kaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXh0ZW5kfSxoaXN0b3J5U2l6ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmhpc3RvcnksdD0wLHI9MCxuPTA7bjxlLmRvbmUubGVuZ3RoO24rKyllLmRvbmVbbl0ucmFuZ2VzfHwrK3Q7Zm9yKHZhciBuPTA7bjxlLnVuZG9uZS5sZW5ndGg7bisrKWUudW5kb25lW25dLnJhbmdlc3x8KytyO3JldHVybnt1bmRvOnQscmVkbzpyfX0sY2xlYXJIaXN0b3J5OmZ1bmN0aW9uKCl7dGhpcy5oaXN0b3J5PW5ldyBvaSh0aGlzLmhpc3RvcnkubWF4R2VuZXJhdGlvbil9LG1hcmtDbGVhbjpmdW5jdGlvbigpe3RoaXMuY2xlYW5HZW5lcmF0aW9uPXRoaXMuY2hhbmdlR2VuZXJhdGlvbighMCl9LGNoYW5nZUdlbmVyYXRpb246ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJih0aGlzLmhpc3RvcnkubGFzdE9wPXRoaXMuaGlzdG9yeS5sYXN0U2VsT3A9dGhpcy5oaXN0b3J5Lmxhc3RPcmlnaW49bnVsbCksdGhpcy5oaXN0b3J5LmdlbmVyYXRpb259LGlzQ2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGlzdG9yeS5nZW5lcmF0aW9uPT0oZXx8dGhpcy5jbGVhbkdlbmVyYXRpb24pfSxnZXRIaXN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6dmkodGhpcy5oaXN0b3J5LmRvbmUpLHVuZG9uZTp2aSh0aGlzLmhpc3RvcnkudW5kb25lKX19LHNldEhpc3Rvcnk6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5oaXN0b3J5PW5ldyBvaSh0aGlzLmhpc3RvcnkubWF4R2VuZXJhdGlvbik7dC5kb25lPXZpKGUuZG9uZS5zbGljZSgwKSxudWxsLCEwKSx0LnVuZG9uZT12aShlLnVuZG9uZS5zbGljZSgwKSxudWxsLCEwKX0sYWRkTGluZUNsYXNzOkR0KGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gQnIodGhpcyxlLCJndXR0ZXIiPT10PyJndXR0ZXIiOiJjbGFzcyIsZnVuY3Rpb24oZSl7dmFyIG49InRleHQiPT10PyJ0ZXh0Q2xhc3MiOiJiYWNrZ3JvdW5kIj09dD8iYmdDbGFzcyI6Imd1dHRlciI9PXQ/Imd1dHRlckNsYXNzIjoid3JhcENsYXNzIjtpZihlW25dKXtpZihYaShyKS50ZXN0KGVbbl0pKXJldHVybiExO2Vbbl0rPSIgIityfWVsc2UgZVtuXT1yO3JldHVybiEwfSl9KSxyZW1vdmVMaW5lQ2xhc3M6RHQoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBCcih0aGlzLGUsImd1dHRlciI9PXQ/Imd1dHRlciI6ImNsYXNzIixmdW5jdGlvbihlKXt2YXIgbj0idGV4dCI9PXQ/InRleHRDbGFzcyI6ImJhY2tncm91bmQiPT10PyJiZ0NsYXNzIjoiZ3V0dGVyIj09dD8iZ3V0dGVyQ2xhc3MiOiJ3cmFwQ2xhc3MiLGk9ZVtuXTtpZighaSlyZXR1cm4hMTtpZihudWxsPT1yKWVbbl09bnVsbDtlbHNle3ZhciBvPWkubWF0Y2goWGkocikpO2lmKCFvKXJldHVybiExO3ZhciBsPW8uaW5kZXgrb1swXS5sZW5ndGg7ZVtuXT1pLnNsaWNlKDAsby5pbmRleCkrKG8uaW5kZXgmJmwhPWkubGVuZ3RoPyIgIjoiIikraS5zbGljZShsKXx8bnVsbH1yZXR1cm4hMH0pfSksYWRkTGluZVdpZGdldDpEdChmdW5jdGlvbihlLHQscil7cmV0dXJuIGtuKHRoaXMsZSx0LHIpfSkscmVtb3ZlTGluZVdpZGdldDpmdW5jdGlvbihlKXtlLmNsZWFyKCl9LG1hcmtUZXh0OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWXIodGhpcyxnZSh0aGlzLGUpLGdlKHRoaXMsdCkscixyJiZyLnR5cGV8fCJyYW5nZSIpfSxzZXRCb29rbWFyazpmdW5jdGlvbihlLHQpe3ZhciByPXtyZXBsYWNlZFdpdGg6dCYmKG51bGw9PXQubm9kZVR5cGU/dC53aWRnZXQ6dCksaW5zZXJ0TGVmdDp0JiZ0Lmluc2VydExlZnQsY2xlYXJXaGVuRW1wdHk6ITEsc2hhcmVkOnQmJnQuc2hhcmVkLGhhbmRsZU1vdXNlRXZlbnRzOnQmJnQuaGFuZGxlTW91c2VFdmVudHN9O3JldHVybiBlPWdlKHRoaXMsZSksWXIodGhpcyxlLGUsciwiYm9va21hcmsiKX0sZmluZE1hcmtzQXQ6ZnVuY3Rpb24oZSl7ZT1nZSh0aGlzLGUpO3ZhciB0PVtdLHI9Wm4odGhpcyxlLmxpbmUpLm1hcmtlZFNwYW5zO2lmKHIpZm9yKHZhciBuPTA7bjxyLmxlbmd0aDsrK24pe3ZhciBpPXJbbl07KG51bGw9PWkuZnJvbXx8aS5mcm9tPD1lLmNoKSYmKG51bGw9PWkudG98fGkudG8+PWUuY2gpJiZ0LnB1c2goaS5tYXJrZXIucGFyZW50fHxpLm1hcmtlcil9cmV0dXJuIHR9LGZpbmRNYXJrczpmdW5jdGlvbihlLHQscil7ZT1nZSh0aGlzLGUpLHQ9Z2UodGhpcyx0KTt2YXIgbj1bXSxpPWUubGluZTtyZXR1cm4gdGhpcy5pdGVyKGUubGluZSx0LmxpbmUrMSxmdW5jdGlvbihvKXt2YXIgbD1vLm1hcmtlZFNwYW5zO2lmKGwpZm9yKHZhciBzPTA7czxsLmxlbmd0aDtzKyspe3ZhciBhPWxbc107aT09ZS5saW5lJiZlLmNoPmEudG98fG51bGw9PWEuZnJvbSYmaSE9ZS5saW5lfHxpPT10LmxpbmUmJmEuZnJvbT50LmNofHxyJiYhcihhLm1hcmtlcil8fG4ucHVzaChhLm1hcmtlci5wYXJlbnR8fGEubWFya2VyKX0rK2l9KSxufSxnZXRBbGxNYXJrczpmdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLml0ZXIoZnVuY3Rpb24odCl7dmFyIHI9dC5tYXJrZWRTcGFucztpZihyKWZvcih2YXIgbj0wO248ci5sZW5ndGg7KytuKW51bGwhPXJbbl0uZnJvbSYmZS5wdXNoKHJbbl0ubWFya2VyKX0pLGV9LHBvc0Zyb21JbmRleDpmdW5jdGlvbihlKXt2YXIgdCxyPXRoaXMuZmlyc3Q7cmV0dXJuIHRoaXMuaXRlcihmdW5jdGlvbihuKXt2YXIgaT1uLnRleHQubGVuZ3RoKzE7cmV0dXJuIGk+ZT8odD1lLCEwKTooZS09aSx2b2lkKytyKX0pLGdlKHRoaXMsem8ocix0KSl9LGluZGV4RnJvbVBvczpmdW5jdGlvbihlKXtlPWdlKHRoaXMsZSk7dmFyIHQ9ZS5jaDtyZXR1cm4gZS5saW5lPHRoaXMuZmlyc3R8fGUuY2g8MD8wOih0aGlzLml0ZXIodGhpcy5maXJzdCxlLmxpbmUsZnVuY3Rpb24oZSl7dCs9ZS50ZXh0Lmxlbmd0aCsxfSksdCl9LGNvcHk6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFNsKEpuKHRoaXMsdGhpcy5maXJzdCx0aGlzLmZpcnN0K3RoaXMuc2l6ZSksdGhpcy5tb2RlT3B0aW9uLHRoaXMuZmlyc3QsdGhpcy5saW5lU2VwKTtyZXR1cm4gdC5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdC5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsTGVmdCx0LnNlbD10aGlzLnNlbCx0LmV4dGVuZD0hMSxlJiYodC5oaXN0b3J5LnVuZG9EZXB0aD10aGlzLmhpc3RvcnkudW5kb0RlcHRoLHQuc2V0SGlzdG9yeSh0aGlzLmdldEhpc3RvcnkoKSkpLHR9LGxpbmtlZERvYzpmdW5jdGlvbihlKXtlfHwoZT17fSk7dmFyIHQ9dGhpcy5maXJzdCxyPXRoaXMuZmlyc3QrdGhpcy5zaXplO251bGwhPWUuZnJvbSYmZS5mcm9tPnQmJih0PWUuZnJvbSksbnVsbCE9ZS50byYmZS50bzxyJiYocj1lLnRvKTt2YXIgbj1uZXcgU2woSm4odGhpcyx0LHIpLGUubW9kZXx8dGhpcy5tb2RlT3B0aW9uLHQsdGhpcy5saW5lU2VwKTtyZXR1cm4gZS5zaGFyZWRIaXN0JiYobi5oaXN0b3J5PXRoaXMuaGlzdG9yeSksKHRoaXMubGlua2VkfHwodGhpcy5saW5rZWQ9W10pKS5wdXNoKHtkb2M6bixzaGFyZWRIaXN0OmUuc2hhcmVkSGlzdH0pLG4ubGlua2VkPVt7ZG9jOnRoaXMsaXNQYXJlbnQ6ITAsc2hhcmVkSGlzdDplLnNoYXJlZEhpc3R9XSxxcihuLCRyKHRoaXMpKSxufSx1bmxpbmtEb2M6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIGUmJih0PXQuZG9jKSx0aGlzLmxpbmtlZClmb3IodmFyIHI9MDtyPHRoaXMubGlua2VkLmxlbmd0aDsrK3Ipe3ZhciBuPXRoaXMubGlua2VkW3JdO2lmKG4uZG9jPT10KXt0aGlzLmxpbmtlZC5zcGxpY2UociwxKSx0LnVubGlua0RvYyh0aGlzKSxacigkcih0aGlzKSk7YnJlYWt9fWlmKHQuaGlzdG9yeT09dGhpcy5oaXN0b3J5KXt2YXIgaT1bdC5pZF07JG4odCxmdW5jdGlvbihlKXtpLnB1c2goZS5pZCl9LCEwKSx0Lmhpc3Rvcnk9bmV3IG9pKG51bGwpLHQuaGlzdG9yeS5kb25lPXZpKHRoaXMuaGlzdG9yeS5kb25lLGkpLHQuaGlzdG9yeS51bmRvbmU9dmkodGhpcy5oaXN0b3J5LnVuZG9uZSxpKX19LGl0ZXJMaW5rZWREb2NzOmZ1bmN0aW9uKGUpeyRuKHRoaXMsZSl9LGdldE1vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2RlfSxnZXRFZGl0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbX0sc3BsaXRMaW5lczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5saW5lU2VwP2Uuc3BsaXQodGhpcy5saW5lU2VwKTplcyhlKX0sbGluZVNlcGFyYXRvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxpbmVTZXB8fCJcbiJ9fSksU2wucHJvdG90eXBlLmVhY2hMaW5lPVNsLnByb3RvdHlwZS5pdGVyO3ZhciBMbD0iaXRlciBpbnNlcnQgcmVtb3ZlIGNvcHkgZ2V0RWRpdG9yIGNvbnN0cnVjdG9yIi5zcGxpdCgiICIpO2Zvcih2YXIgVGwgaW4gU2wucHJvdG90eXBlKVNsLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShUbCkmJkhpKExsLFRsKTwwJiYoZS5wcm90b3R5cGVbVGxdPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMuZG9jLGFyZ3VtZW50cyl9fShTbC5wcm90b3R5cGVbVGxdKSk7V2koU2wpO3ZhciBrbD1lLmVfcHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMX0sTWw9ZS5lX3N0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOmUuY2FuY2VsQnViYmxlPSEwfSxObD1lLmVfc3RvcD1mdW5jdGlvbihlKXtrbChlKSxNbChlKX0sV2w9ZS5vbj1mdW5jdGlvbihlLHQscil7aWYoZS5hZGRFdmVudExpc3RlbmVyKWUuYWRkRXZlbnRMaXN0ZW5lcih0LHIsITEpO2Vsc2UgaWYoZS5hdHRhY2hFdmVudCllLmF0dGFjaEV2ZW50KCJvbiIrdCxyKTtlbHNle3ZhciBuPWUuX2hhbmRsZXJzfHwoZS5faGFuZGxlcnM9e30pLGk9blt0XXx8KG5bdF09W10pO2kucHVzaChyKX19LEFsPVtdLE9sPWUub2ZmPWZ1bmN0aW9uKGUsdCxyKXtpZihlLnJlbW92ZUV2ZW50TGlzdGVuZXIpZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsciwhMSk7ZWxzZSBpZihlLmRldGFjaEV2ZW50KWUuZGV0YWNoRXZlbnQoIm9uIit0LHIpO2Vsc2UgZm9yKHZhciBuPVNpKGUsdCwhMSksaT0wO2k8bi5sZW5ndGg7KytpKWlmKG5baV09PXIpe24uc3BsaWNlKGksMSk7YnJlYWt9fSxEbD1lLnNpZ25hbD1mdW5jdGlvbihlLHQpe3ZhciByPVNpKGUsdCwhMCk7aWYoci5sZW5ndGgpZm9yKHZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSxpPTA7aTxyLmxlbmd0aDsrK2kpcltpXS5hcHBseShudWxsLG4pfSxIbD1udWxsLFBsPTMwLEVsPWUuUGFzcz17dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iQ29kZU1pcnJvci5QYXNzIn19LElsPXtzY3JvbGw6ITF9LHpsPXtvcmlnaW46Iiptb3VzZSJ9LEZsPXtvcmlnaW46Iittb3ZlIn07QWkucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe2NsZWFyVGltZW91dCh0aGlzLmlkKSx0aGlzLmlkPXNldFRpbWVvdXQodCxlKX07dmFyIFJsPWUuY291bnRDb2x1bW49ZnVuY3Rpb24oZSx0LHIsbixpKXtudWxsPT10JiYodD1lLnNlYXJjaCgvW15cc1x1MDBhMF0vKSwtMT09dCYmKHQ9ZS5sZW5ndGgpKTtmb3IodmFyIG89bnx8MCxsPWl8fDA7Oyl7dmFyIHM9ZS5pbmRleE9mKCIJIixvKTtpZigwPnN8fHM+PXQpcmV0dXJuIGwrKHQtbyk7bCs9cy1vLGwrPXItbCVyLG89cysxfX0sQmw9ZS5maW5kQ29sdW1uPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPTA7Oyl7dmFyIG89ZS5pbmRleE9mKCIJIixuKTstMT09byYmKG89ZS5sZW5ndGgpO3ZhciBsPW8tbjtpZihvPT1lLmxlbmd0aHx8aStsPj10KXJldHVybiBuK01hdGgubWluKGwsdC1pKTtpZihpKz1vLW4saSs9ci1pJXIsbj1vKzEsaT49dClyZXR1cm4gbn19LEdsPVsiIl0sVWw9ZnVuY3Rpb24oZSl7ZS5zZWxlY3QoKX07Tm8/VWw9ZnVuY3Rpb24oZSl7ZS5zZWxlY3Rpb25TdGFydD0wLGUuc2VsZWN0aW9uRW5kPWUudmFsdWUubGVuZ3RofTpibyYmKFVsPWZ1bmN0aW9uKGUpe3RyeXtlLnNlbGVjdCgpfWNhdGNoKHQpe319KTt2YXIgVmwsS2w9L1tcdTAwZGZcdTA1ODdcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MzA0MC1cdTMwOWZcdTMwYTAtXHUzMGZmXHUzNDAwLVx1NGRiNVx1NGUwMC1cdTlmY2NcdWFjMDAtXHVkN2FmXS8samw9ZS5pc1dvcmRDaGFyPWZ1bmN0aW9uKGUpe3JldHVybi9cdy8udGVzdChlKXx8ZT4iwoAiJiYoZS50b1VwcGVyQ2FzZSgpIT1lLnRvTG93ZXJDYXNlKCl8fEtsLnRlc3QoZSkpfSxYbD0vW1x1MDMwMC1cdTAzNmZcdTA0ODMtXHUwNDg5XHUwNTkxLVx1MDViZFx1MDViZlx1MDVjMVx1MDVjMlx1MDVjNFx1MDVjNVx1MDVjN1x1MDYxMC1cdTA2MWFcdTA2NGItXHUwNjVlXHUwNjcwXHUwNmQ2LVx1MDZkY1x1MDZkZS1cdTA2ZTRcdTA2ZTdcdTA2ZThcdTA2ZWEtXHUwNmVkXHUwNzExXHUwNzMwLVx1MDc0YVx1MDdhNi1cdTA3YjBcdTA3ZWItXHUwN2YzXHUwODE2LVx1MDgxOVx1MDgxYi1cdTA4MjNcdTA4MjUtXHUwODI3XHUwODI5LVx1MDgyZFx1MDkwMC1cdTA5MDJcdTA5M2NcdTA5NDEtXHUwOTQ4XHUwOTRkXHUwOTUxLVx1MDk1NVx1MDk2Mlx1MDk2M1x1MDk4MVx1MDliY1x1MDliZVx1MDljMS1cdTA5YzRcdTA5Y2RcdTA5ZDdcdTA5ZTJcdTA5ZTNcdTBhMDFcdTBhMDJcdTBhM2NcdTBhNDFcdTBhNDJcdTBhNDdcdTBhNDhcdTBhNGItXHUwYTRkXHUwYTUxXHUwYTcwXHUwYTcxXHUwYTc1XHUwYTgxXHUwYTgyXHUwYWJjXHUwYWMxLVx1MGFjNVx1MGFjN1x1MGFjOFx1MGFjZFx1MGFlMlx1MGFlM1x1MGIwMVx1MGIzY1x1MGIzZVx1MGIzZlx1MGI0MS1cdTBiNDRcdTBiNGRcdTBiNTZcdTBiNTdcdTBiNjJcdTBiNjNcdTBiODJcdTBiYmVcdTBiYzBcdTBiY2RcdTBiZDdcdTBjM2UtXHUwYzQwXHUwYzQ2LVx1MGM0OFx1MGM0YS1cdTBjNGRcdTBjNTVcdTBjNTZcdTBjNjJcdTBjNjNcdTBjYmNcdTBjYmZcdTBjYzJcdTBjYzZcdTBjY2NcdTBjY2RcdTBjZDVcdTBjZDZcdTBjZTJcdTBjZTNcdTBkM2VcdTBkNDEtXHUwZDQ0XHUwZDRkXHUwZDU3XHUwZDYyXHUwZDYzXHUwZGNhXHUwZGNmXHUwZGQyLVx1MGRkNFx1MGRkNlx1MGRkZlx1MGUzMVx1MGUzNC1cdTBlM2FcdTBlNDctXHUwZTRlXHUwZWIxXHUwZWI0LVx1MGViOVx1MGViYlx1MGViY1x1MGVjOC1cdTBlY2RcdTBmMThcdTBmMTlcdTBmMzVcdTBmMzdcdTBmMzlcdTBmNzEtXHUwZjdlXHUwZjgwLVx1MGY4NFx1MGY4Nlx1MGY4N1x1MGY5MC1cdTBmOTdcdTBmOTktXHUwZmJjXHUwZmM2XHUxMDJkLVx1MTAzMFx1MTAzMi1cdTEwMzdcdTEwMzlcdTEwM2FcdTEwM2RcdTEwM2VcdTEwNThcdTEwNTlcdTEwNWUtXHUxMDYwXHUxMDcxLVx1MTA3NFx1MTA4Mlx1MTA4NVx1MTA4Nlx1MTA4ZFx1MTA5ZFx1MTM1Zlx1MTcxMi1cdTE3MTRcdTE3MzItXHUxNzM0XHUxNzUyXHUxNzUzXHUxNzcyXHUxNzczXHUxN2I3LVx1MTdiZFx1MTdjNlx1MTdjOS1cdTE3ZDNcdTE3ZGRcdTE4MGItXHUxODBkXHUxOGE5XHUxOTIwLVx1MTkyMlx1MTkyN1x1MTkyOFx1MTkzMlx1MTkzOS1cdTE5M2JcdTFhMTdcdTFhMThcdTFhNTZcdTFhNTgtXHUxYTVlXHUxYTYwXHUxYTYyXHUxYTY1LVx1MWE2Y1x1MWE3My1cdTFhN2NcdTFhN2ZcdTFiMDAtXHUxYjAzXHUxYjM0XHUxYjM2LVx1MWIzYVx1MWIzY1x1MWI0Mlx1MWI2Yi1cdTFiNzNcdTFiODBcdTFiODFcdTFiYTItXHUxYmE1XHUxYmE4XHUxYmE5XHUxYzJjLVx1MWMzM1x1MWMzNlx1MWMzN1x1MWNkMC1cdTFjZDJcdTFjZDQtXHUxY2UwXHUxY2UyLVx1MWNlOFx1MWNlZFx1MWRjMC1cdTFkZTZcdTFkZmQtXHUxZGZmXHUyMDBjXHUyMDBkXHUyMGQwLVx1MjBmMFx1MmNlZi1cdTJjZjFcdTJkZTAtXHUyZGZmXHUzMDJhLVx1MzAyZlx1MzA5OVx1MzA5YVx1YTY2Zi1cdWE2NzJcdWE2N2NcdWE2N2RcdWE2ZjBcdWE2ZjFcdWE4MDJcdWE4MDZcdWE4MGJcdWE4MjVcdWE4MjZcdWE4YzRcdWE4ZTAtXHVhOGYxXHVhOTI2LVx1YTkyZFx1YTk0Ny1cdWE5NTFcdWE5ODAtXHVhOTgyXHVhOWIzXHVhOWI2LVx1YTliOVx1YTliY1x1YWEyOS1cdWFhMmVcdWFhMzFcdWFhMzJcdWFhMzVcdWFhMzZcdWFhNDNcdWFhNGNcdWFhYjBcdWFhYjItXHVhYWI0XHVhYWI3XHVhYWI4XHVhYWJlXHVhYWJmXHVhYWMxXHVhYmU1XHVhYmU4XHVhYmVkXHVkYzAwLVx1ZGZmZlx1ZmIxZVx1ZmUwMC1cdWZlMGZcdWZlMjAtXHVmZTI2XHVmZjllXHVmZjlmXS87Vmw9ZG9jdW1lbnQuY3JlYXRlUmFuZ2U/ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gaS5zZXRFbmQobnx8ZSxyKSxpLnNldFN0YXJ0KGUsdCksaX06ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7dHJ5e24ubW92ZVRvRWxlbWVudFRleHQoZS5wYXJlbnROb2RlKX1jYXRjaChpKXtyZXR1cm4gbn1yZXR1cm4gbi5jb2xsYXBzZSghMCksbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHIpLG4ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLHQpLG59O3ZhciBZbD1lLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7aWYoMz09dC5ub2RlVHlwZSYmKHQ9dC5wYXJlbnROb2RlKSxlLmNvbnRhaW5zKXJldHVybiBlLmNvbnRhaW5zKHQpO2RvIGlmKDExPT10Lm5vZGVUeXBlJiYodD10Lmhvc3QpLHQ9PWUpcmV0dXJuITA7d2hpbGUodD10LnBhcmVudE5vZGUpfTtibyYmMTE+d28mJihqaT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudH1jYXRjaChlKXtyZXR1cm4gZG9jdW1lbnQuYm9keX19KTt2YXIgX2wsJGwscWw9ZS5ybUNsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5jbGFzc05hbWUsbj1YaSh0KS5leGVjKHIpO2lmKG4pe3ZhciBpPXIuc2xpY2Uobi5pbmRleCtuWzBdLmxlbmd0aCk7ZS5jbGFzc05hbWU9ci5zbGljZSgwLG4uaW5kZXgpKyhpP25bMV0raToiIil9fSxabD1lLmFkZENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5jbGFzc05hbWU7WGkodCkudGVzdChyKXx8KGUuY2xhc3NOYW1lKz0ocj8iICI6IiIpK3QpfSxRbD0hMSxKbD1mdW5jdGlvbigpe2lmKGJvJiY5PndvKXJldHVybiExO3ZhciBlPVVpKCJkaXYiKTtyZXR1cm4iZHJhZ2dhYmxlImluIGV8fCJkcmFnRHJvcCJpbiBlfSgpLGVzPWUuc3BsaXRMaW5lcz0zIT0iXG5cbmIiLnNwbGl0KC9cbi8pLmxlbmd0aD9mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPVtdLG49ZS5sZW5ndGg7bj49dDspe3ZhciBpPWUuaW5kZXhPZigiXG4iLHQpOy0xPT1pJiYoaT1lLmxlbmd0aCk7dmFyIG89ZS5zbGljZSh0LCJcciI9PWUuY2hhckF0KGktMSk/aS0xOmkpLGw9by5pbmRleE9mKCJcciIpOy0xIT1sPyhyLnB1c2goby5zbGljZSgwLGwpKSx0Kz1sKzEpOihyLnB1c2gobyksdD1pKzEpfXJldHVybiByfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdCgvXHJcbj98XG4vKX0sdHM9d2luZG93LmdldFNlbGVjdGlvbj9mdW5jdGlvbihlKXt0cnl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnQhPWUuc2VsZWN0aW9uRW5kfWNhdGNoKHQpe3JldHVybiExfX06ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PWUub3duZXJEb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKX1jYXRjaChyKXt9cmV0dXJuIHQmJnQucGFyZW50RWxlbWVudCgpPT1lPzAhPXQuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb0VuZCIsdCk6ITF9LHJzPWZ1bmN0aW9uKCl7dmFyIGU9VWkoImRpdiIpO3JldHVybiJvbmNvcHkiaW4gZT8hMDooZS5zZXRBdHRyaWJ1dGUoIm9uY29weSIsInJldHVybjsiKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbmNvcHkpfSgpLG5zPW51bGwsaXM9ZS5rZXlOYW1lcz17MzoiRW50ZXIiLDg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkN0cmwiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjIiwzMjoiU3BhY2UiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJMZWZ0IiwzODoiVXAiLDM5OiJSaWdodCIsNDA6IkRvd24iLDQ0OiJQcmludFNjcm4iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDU5OiI7Iiw2MToiPSIsOTE6Ik1vZCIsOTI6Ik1vZCIsOTM6Ik1vZCIsMTA2OiIqIiwxMDc6Ij0iLDEwOToiLSIsMTEwOiIuIiwxMTE6Ii8iLDEyNzoiRGVsZXRlIiwxNzM6Ii0iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyIsNjMyMzI6IlVwIiw2MzIzMzoiRG93biIsNjMyMzQ6IkxlZnQiLDYzMjM1OiJSaWdodCIsNjMyNzI6IkRlbGV0ZSIsNjMyNzM6IkhvbWUiLDYzMjc1OiJFbmQiLDYzMjc2OiJQYWdlVXAiLDYzMjc3OiJQYWdlRG93biIsNjMzMDI6Ikluc2VydCJ9OyFmdW5jdGlvbigpe2Zvcih2YXIgZT0wOzEwPmU7ZSsrKWlzW2UrNDhdPWlzW2UrOTZdPVN0cmluZyhlKTtmb3IodmFyIGU9NjU7OTA+PWU7ZSsrKWlzW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKHZhciBlPTE7MTI+PWU7ZSsrKWlzW2UrMTExXT1pc1tlKzYzMjM1XT0iRiIrZX0oKTt2YXIgb3MsbHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiAyNDc+PWU/ci5jaGFyQXQoZSk6ZT49MTQyNCYmMTUyND49ZT8iUiI6ZT49MTUzNiYmMTc3Mz49ZT9uLmNoYXJBdChlLTE1MzYpOmU+PTE3NzQmJjIyMjA+PWU/InIiOmU+PTgxOTImJjgyMDM+PWU/InciOjgyMDQ9PWU/ImIiOiJMIn1mdW5jdGlvbiB0KGUsdCxyKXt0aGlzLmxldmVsPWUsdGhpcy5mcm9tPXQsdGhpcy50bz1yfXZhciByPSJiYmJiYmJiYmJ0c3R3c2JiYmJiYmJiYmJiYmJic3NzdHdOTiUlJU5OTk5OTixOLE4xMTExMTExMTExTk5OTk5OTkxMTExMTExMTExMTExMTExMTExMTExMTExMTk5OTk5OTExMTExMTExMTExMTExMTExMTExMTExMTExOTk5OYmJiYmJic2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLE4lJSUlTk5OTkxOTk5OTiUlMTFOTE5OTjFMTk5OTk5MTExMTExMTExMTExMTExMTExMTExMTE5MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTiIsbj0icnJycnJycnJycnJyLHJOTm1tbW1tbXJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJybW1tbW1tbW1tbW1tbW1ycnJycnJybm5ubm5ubm5ubiVubnJycm1ycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycm1tbW1tbW1tbW1tbW1tbW1tbW1ObW1tbSIsaT0vW1x1MDU5MC1cdTA1ZjRcdTA2MDAtXHUwNmZmXHUwNzAwLVx1MDhhY10vLG89L1tzdHdOXS8sbD0vW0xScl0vLHM9L1tMYjFuXS8sYT0vWzFuXS8sdT0iTCI7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKCFpLnRlc3QocikpcmV0dXJuITE7Zm9yKHZhciBuLGM9ci5sZW5ndGgsaD1bXSxmPTA7Yz5mOysrZiloLnB1c2gobj1lKHIuY2hhckNvZGVBdChmKSkpO2Zvcih2YXIgZj0wLGQ9dTtjPmY7KytmKXt2YXIgbj1oW2ZdOyJtIj09bj9oW2ZdPWQ6ZD1ufWZvcih2YXIgZj0wLHA9dTtjPmY7KytmKXt2YXIgbj1oW2ZdOyIxIj09biYmInIiPT1wP2hbZl09Im4iOmwudGVzdChuKSYmKHA9biwiciI9PW4mJihoW2ZdPSJSIikpfWZvcih2YXIgZj0xLGQ9aFswXTtjLTE+ZjsrK2Ype3ZhciBuPWhbZl07IisiPT1uJiYiMSI9PWQmJiIxIj09aFtmKzFdP2hbZl09IjEiOiIsIiE9bnx8ZCE9aFtmKzFdfHwiMSIhPWQmJiJuIiE9ZHx8KGhbZl09ZCksZD1ufWZvcih2YXIgZj0wO2M+ZjsrK2Ype3ZhciBuPWhbZl07aWYoIiwiPT1uKWhbZl09Ik4iO2Vsc2UgaWYoIiUiPT1uKXtmb3IodmFyIGc9ZisxO2M+ZyYmIiUiPT1oW2ddOysrZyk7Zm9yKHZhciB2PWYmJiIhIj09aFtmLTFdfHxjPmcmJiIxIj09aFtnXT8iMSI6Ik4iLG09ZjtnPm07KyttKWhbbV09djtmPWctMX19Zm9yKHZhciBmPTAscD11O2M+ZjsrK2Ype3ZhciBuPWhbZl07IkwiPT1wJiYiMSI9PW4/aFtmXT0iTCI6bC50ZXN0KG4pJiYocD1uKX1mb3IodmFyIGY9MDtjPmY7KytmKWlmKG8udGVzdChoW2ZdKSl7Zm9yKHZhciBnPWYrMTtjPmcmJm8udGVzdChoW2ddKTsrK2cpO2Zvcih2YXIgeT0iTCI9PShmP2hbZi0xXTp1KSxiPSJMIj09KGM+Zz9oW2ddOnUpLHY9eXx8Yj8iTCI6IlIiLG09ZjtnPm07KyttKWhbbV09djtmPWctMX1mb3IodmFyIHcseD1bXSxmPTA7Yz5mOylpZihzLnRlc3QoaFtmXSkpe3ZhciBDPWY7Zm9yKCsrZjtjPmYmJnMudGVzdChoW2ZdKTsrK2YpO3gucHVzaChuZXcgdCgwLEMsZikpfWVsc2V7dmFyIFM9ZixMPXgubGVuZ3RoO2ZvcigrK2Y7Yz5mJiYiTCIhPWhbZl07KytmKTtmb3IodmFyIG09UztmPm07KWlmKGEudGVzdChoW21dKSl7bT5TJiZ4LnNwbGljZShMLDAsbmV3IHQoMSxTLG0pKTt2YXIgVD1tO2ZvcigrK207Zj5tJiZhLnRlc3QoaFttXSk7KyttKTt4LnNwbGljZShMLDAsbmV3IHQoMixULG0pKSxTPW19ZWxzZSsrbTtmPlMmJnguc3BsaWNlKEwsMCxuZXcgdCgxLFMsZikpfXJldHVybiAxPT14WzBdLmxldmVsJiYodz1yLm1hdGNoKC9eXHMrLykpJiYoeFswXS5mcm9tPXdbMF0ubGVuZ3RoLHgudW5zaGlmdChuZXcgdCgwLDAsd1swXS5sZW5ndGgpKSksMT09RGkoeCkubGV2ZWwmJih3PXIubWF0Y2goL1xzKyQvKSkmJihEaSh4KS50by09d1swXS5sZW5ndGgseC5wdXNoKG5ldyB0KDAsYy13WzBdLmxlbmd0aCxjKSkpLDI9PXhbMF0ubGV2ZWwmJngudW5zaGlmdChuZXcgdCgxLHhbMF0udG8seFswXS50bykpLHhbMF0ubGV2ZWwhPURpKHgpLmxldmVsJiZ4LnB1c2gobmV3IHQoeFswXS5sZXZlbCxjLGMpKSx4fX0oKTtyZXR1cm4gZS52ZXJzaW9uPSI1LjkuMSIsZX0pOwoKLy9jb2RlbWlycm9yIGphdmFzY3JpcHQKIWZ1bmN0aW9uKHgpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/eChyZXF1aXJlKCIuLi8uLi9saWIvY29kZW1pcnJvciIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbIi4uLy4uL2xpYi9jb2RlbWlycm9yIl0seCk6eChDb2RlTWlycm9yKX0oZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO3guZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5pbmRlbnRVbml0LGY9Yi5zdGF0ZW1lbnRJbmRlbnQsZz1iLmpzb25sZCxoPWIuanNvbnx8ZyxpPWIudHlwZXNjcmlwdCxqPWIud29yZENoYXJhY3RlcnN8fC9bXHckXHhhMS1cdWZmZmZdLyxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4KXtyZXR1cm57dHlwZTp4LHN0eWxlOiJrZXl3b3JkIn19dmFyIGE9eCgia2V5d29yZCBhIiksYj14KCJrZXl3b3JkIGIiKSxjPXgoImtleXdvcmQgYyIpLGQ9eCgia2V5d29yZCBkIiksZT14KCJvcGVyYXRvciIpLGY9e3R5cGU6ImF0b20iLHN0eWxlOiJhdG9tIn07cmV0dXJue2lmOngoImlmIiksd2hpbGU6YSx3aXRoOmEsZWxzZTpiLGRvOmIsdHJ5OmIsZmluYWxseTpiLHJldHVybjpkLGJyZWFrOmQsY29udGludWU6ZCxuZXc6eCgibmV3IiksZGVsZXRlOmMsdm9pZDpjLHRocm93OmMsZGVidWdnZXI6eCgiZGVidWdnZXIiKSx2YXI6eCgidmFyIiksY29uc3Q6eCgidmFyIiksbGV0OngoInZhciIpLGZ1bmN0aW9uOngoImZ1bmN0aW9uIiksY2F0Y2g6eCgiY2F0Y2giKSxmb3I6eCgiZm9yIiksc3dpdGNoOngoInN3aXRjaCIpLGNhc2U6eCgiY2FzZSIpLGRlZmF1bHQ6eCgiZGVmYXVsdCIpLGluOmUsdHlwZW9mOmUsaW5zdGFuY2VvZjplLHRydWU6ZixmYWxzZTpmLG51bGw6Zix1bmRlZmluZWQ6ZixOYU46ZixJbmZpbml0eTpmLHRoaXM6eCgidGhpcyIpLGNsYXNzOngoImNsYXNzIiksc3VwZXI6eCgiYXRvbSIpLHlpZWxkOmMsZXhwb3J0OngoImV4cG9ydCIpLGltcG9ydDp4KCJpbXBvcnQiKSxleHRlbmRzOmMsYXdhaXQ6Y319KCksbD0vWytcLSomJT08PiE/fH5eQF0vLG09L15AKGNvbnRleHR8aWR8dmFsdWV8bGFuZ3VhZ2V8dHlwZXxjb250YWluZXJ8bGlzdHxzZXR8cmV2ZXJzZXxpbmRleHxiYXNlfHZvY2FifGdyYXBoKSIvO2Z1bmN0aW9uIG4oeCl7Zm9yKHZhciBhLGI9ITEsYz0hMTtudWxsIT0oYT14Lm5leHQoKSk7KXtpZighYil7aWYoIi8iPT1hJiYhYylyZXR1cm47IlsiPT1hP2M9ITA6YyYmIl0iPT1hJiYoYz0hMSl9Yj0hYiYmIlxcIj09YX19ZnVuY3Rpb24gbyh4LGEsYil7cmV0dXJuIGM9eCxkPWIsYX1mdW5jdGlvbiBwKHgsYSl7dmFyIGI9eC5uZXh0KCk7aWYoJyInPT1ifHwiJyI9PWIpcmV0dXJuIGEudG9rZW5pemU9cShiKSxhLnRva2VuaXplKHgsYSk7aWYoIi4iPT1iJiZ4Lm1hdGNoKC9eXGRbXGRfXSooPzpbZUVdWytcLV0/W1xkX10rKT8vKSlyZXR1cm4gbygibnVtYmVyIiwibnVtYmVyIik7aWYoIi4iPT1iJiZ4Lm1hdGNoKCIuLiIpKXJldHVybiBvKCJzcHJlYWQiLCJtZXRhIik7aWYoL1tcW1xde31cKFwpLDtcOlwuXS8udGVzdChiKSlyZXR1cm4gbyhiKTtpZigiPSI9PWImJnguZWF0KCI+IikpcmV0dXJuIG8oIj0+Iiwib3BlcmF0b3IiKTtpZigiMCI9PWImJngubWF0Y2goL14oPzp4W1xkQS1GYS1mX10rfG9bMC03X10rfGJbMDFfXSspbj8vKSlyZXR1cm4gbygibnVtYmVyIiwibnVtYmVyIik7aWYoL1xkLy50ZXN0KGIpKXJldHVybiB4Lm1hdGNoKC9eW1xkX10qKD86bnwoPzpcLltcZF9dKik/KD86W2VFXVsrXC1dP1tcZF9dKyk/KT8vKSxvKCJudW1iZXIiLCJudW1iZXIiKTtpZigiLyI9PWIpcmV0dXJuIHguZWF0KCIqIik/KGEudG9rZW5pemU9cixyKHgsYSkpOnguZWF0KCIvIik/KHguc2tpcFRvRW5kKCksbygiY29tbWVudCIsImNvbW1lbnQiKSk6eGEoeCxhLDEpPyhuKHgpLHgubWF0Y2goL15cYigoW2dpbXl1c10pKD8hW2dpbXl1c10qXDIpKStcYi8pLG8oInJlZ2V4cCIsInN0cmluZy0yIikpOih4LmVhdCgiPSIpLG8oIm9wZXJhdG9yIiwib3BlcmF0b3IiLHguY3VycmVudCgpKSk7aWYoImAiPT1iKXJldHVybiBhLnRva2VuaXplPXMscyh4LGEpO2lmKCIjIj09YiYmIiEiPT14LnBlZWsoKSlyZXR1cm4geC5za2lwVG9FbmQoKSxvKCJtZXRhIiwibWV0YSIpO2lmKCIjIj09YiYmeC5lYXRXaGlsZShqKSlyZXR1cm4gbygidmFyaWFibGUiLCJwcm9wZXJ0eSIpO2lmKCI8Ij09YiYmeC5tYXRjaCgiIS0tIil8fCItIj09YiYmeC5tYXRjaCgiLT4iKSlyZXR1cm4geC5za2lwVG9FbmQoKSxvKCJjb21tZW50IiwiY29tbWVudCIpO2lmKGwudGVzdChiKSlyZXR1cm4iPiI9PWImJmEubGV4aWNhbCYmIj4iPT1hLmxleGljYWwudHlwZXx8KHguZWF0KCI9Iik/IiEiIT1iJiYiPSIhPWJ8fHguZWF0KCI9Iik6L1s8PiorXC1dLy50ZXN0KGIpJiYoeC5lYXQoYiksIj4iPT1iJiZ4LmVhdChiKSkpLCI/Ij09YiYmeC5lYXQoIi4iKT9vKCIuIik6bygib3BlcmF0b3IiLCJvcGVyYXRvciIseC5jdXJyZW50KCkpO2lmKGoudGVzdChiKSl7eC5lYXRXaGlsZShqKTt2YXIgYz14LmN1cnJlbnQoKTtpZigiLiIhPWEubGFzdFR5cGUpe2lmKGsucHJvcGVydHlJc0VudW1lcmFibGUoYykpe3ZhciBkPWtbY107cmV0dXJuIG8oZC50eXBlLGQuc3R5bGUsYyl9aWYoImFzeW5jIj09YyYmeC5tYXRjaCgvXihcc3xcL1wqLio/XCpcLykqW1xbXChcd10vLCExKSlyZXR1cm4gbygiYXN5bmMiLCJrZXl3b3JkIixjKX1yZXR1cm4gbygidmFyaWFibGUiLCJ2YXJpYWJsZSIsYyl9fWZ1bmN0aW9uIHEoeCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7dmFyIGMsZD0hMTtpZihnJiYiQCI9PWEucGVlaygpJiZhLm1hdGNoKG0pKXJldHVybiBiLnRva2VuaXplPXAsbygianNvbmxkLWtleXdvcmQiLCJtZXRhIik7Zm9yKDtudWxsIT0oYz1hLm5leHQoKSkmJihjIT14fHxkKTspZD0hZCYmIlxcIj09YztyZXR1cm4gZHx8KGIudG9rZW5pemU9cCksbygic3RyaW5nIiwic3RyaW5nIil9fWZ1bmN0aW9uIHIoeCxhKXtmb3IodmFyIGIsYz0hMTtiPXgubmV4dCgpOyl7aWYoIi8iPT1iJiZjKXthLnRva2VuaXplPXA7YnJlYWt9Yz0iKiI9PWJ9cmV0dXJuIG8oImNvbW1lbnQiLCJjb21tZW50Iil9ZnVuY3Rpb24gcyh4LGEpe2Zvcih2YXIgYixjPSExO251bGwhPShiPXgubmV4dCgpKTspe2lmKCFjJiYoImAiPT1ifHwiJCI9PWImJnguZWF0KCJ7IikpKXthLnRva2VuaXplPXA7YnJlYWt9Yz0hYyYmIlxcIj09Yn1yZXR1cm4gbygicXVhc2kiLCJzdHJpbmctMiIseC5jdXJyZW50KCkpfXZhciB0PSIoW3t9XSkiO2Z1bmN0aW9uIHUoeCxhKXthLmZhdEFycm93QXQmJihhLmZhdEFycm93QXQ9bnVsbCk7dmFyIGI9eC5zdHJpbmcuaW5kZXhPZigiPT4iLHguc3RhcnQpO2lmKCEoYjwwKSl7aWYoaSl7dmFyIGM9LzpccyooPzpcdysoPzo8W14+XSo+fFxbXF0pP3xce1tefV0qXH0pXHMqJC8uZXhlYyh4LnN0cmluZy5zbGljZSh4LnN0YXJ0LGIpKTtjJiYoYj1jLmluZGV4KX1mb3IodmFyIGQ9MCxlPSExLGY9Yi0xO2Y+PTA7LS1mKXt2YXIgZz14LnN0cmluZy5jaGFyQXQoZiksaD10LmluZGV4T2YoZyk7aWYoaD49MCYmaDwzKXtpZighZCl7KytmO2JyZWFrfWlmKDA9PS0tZCl7IigiPT1nJiYoZT0hMCk7YnJlYWt9fWVsc2UgaWYoaD49MyYmaDw2KSsrZDtlbHNlIGlmKGoudGVzdChnKSllPSEwO2Vsc2UgaWYoL1siJ1wvYF0vLnRlc3QoZykpZm9yKDs7LS1mKXtpZigwPT1mKXJldHVybjtpZih4LnN0cmluZy5jaGFyQXQoZi0xKT09ZyYmIlxcIiE9eC5zdHJpbmcuY2hhckF0KGYtMikpe2YtLTticmVha319ZWxzZSBpZihlJiYhZCl7KytmO2JyZWFrfX1lJiYhZCYmKGEuZmF0QXJyb3dBdD1mKX19dmFyIHY9e2F0b206ITAsbnVtYmVyOiEwLHZhcmlhYmxlOiEwLHN0cmluZzohMCxyZWdleHA6ITAsdGhpczohMCwianNvbmxkLWtleXdvcmQiOiEwfTtmdW5jdGlvbiB3KHgsYSxiLGMsZCxlKXt0aGlzLmluZGVudGVkPXgsdGhpcy5jb2x1bW49YSx0aGlzLnR5cGU9Yix0aGlzLnByZXY9ZCx0aGlzLmluZm89ZSxudWxsIT1jJiYodGhpcy5hbGlnbj1jKX1mdW5jdGlvbiB5KHgsYSl7Zm9yKHZhciBiPXgubG9jYWxWYXJzO2I7Yj1iLm5leHQpaWYoYi5uYW1lPT1hKXJldHVybiEwO2Zvcih2YXIgYz14LmNvbnRleHQ7YztjPWMucHJldilmb3IoYj1jLnZhcnM7YjtiPWIubmV4dClpZihiLm5hbWU9PWEpcmV0dXJuITB9ZnVuY3Rpb24geih4LGEsYixjLGQpe3ZhciBlPXguY2M7Zm9yKEEuc3RhdGU9eCxBLnN0cmVhbT1kLEEubWFya2VkPW51bGwsQS5jYz1lLEEuc3R5bGU9YSx4LmxleGljYWwuaGFzT3duUHJvcGVydHkoImFsaWduIil8fCh4LmxleGljYWwuYWxpZ249ITApOzspe2lmKChlLmxlbmd0aD9lLnBvcCgpOmg/UzpRKShiLGMpKXtmb3IoO2UubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLmxleDspZS5wb3AoKSgpO3JldHVybiBBLm1hcmtlZD9BLm1hcmtlZDoidmFyaWFibGUiPT1iJiZ5KHgsYyk/InZhcmlhYmxlLTIiOmF9fX12YXIgQT17c3RhdGU6bnVsbCxjb2x1bW46bnVsbCxtYXJrZWQ6bnVsbCxjYzpudWxsfTtmdW5jdGlvbiBCKCl7Zm9yKHZhciB4PWFyZ3VtZW50cy5sZW5ndGgtMTt4Pj0wO3gtLSlBLmNjLnB1c2goYXJndW1lbnRzW3hdKX1mdW5jdGlvbiBDKCl7cmV0dXJuIEIuYXBwbHkobnVsbCxhcmd1bWVudHMpLCEwfWZ1bmN0aW9uIEQoeCxhKXtmb3IodmFyIGI9YTtiO2I9Yi5uZXh0KWlmKGIubmFtZT09eClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFKHgpe3ZhciBhPUEuc3RhdGU7aWYoQS5tYXJrZWQ9ImRlZiIsYS5jb250ZXh0KWlmKCJ2YXIiPT1hLmxleGljYWwuaW5mbyYmYS5jb250ZXh0JiZhLmNvbnRleHQuYmxvY2spe3ZhciBjPUYoeCxhLmNvbnRleHQpO2lmKG51bGwhPWMpcmV0dXJuIGEuY29udGV4dD1jLHZvaWQgMH1lbHNlIGlmKCFEKHgsYS5sb2NhbFZhcnMpKXJldHVybiBhLmxvY2FsVmFycz1uZXcgSSh4LGEubG9jYWxWYXJzKSx2b2lkIDA7Yi5nbG9iYWxWYXJzJiYhRCh4LGEuZ2xvYmFsVmFycykmJihhLmdsb2JhbFZhcnM9bmV3IEkoeCxhLmdsb2JhbFZhcnMpKX1mdW5jdGlvbiBGKHgsYSl7aWYoYSl7aWYoYS5ibG9jayl7dmFyIGI9Rih4LGEucHJldik7cmV0dXJuIGI/Yj09YS5wcmV2P2E6bmV3IEgoYixhLnZhcnMsITApOm51bGx9cmV0dXJuIEQoeCxhLnZhcnMpP2E6bmV3IEgoYS5wcmV2LG5ldyBJKHgsYS52YXJzKSwhMSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRyh4KXtyZXR1cm4icHVibGljIj09eHx8InByaXZhdGUiPT14fHwicHJvdGVjdGVkIj09eHx8ImFic3RyYWN0Ij09eHx8InJlYWRvbmx5Ij09eH1mdW5jdGlvbiBIKHgsYSxiKXt0aGlzLnByZXY9eCx0aGlzLnZhcnM9YSx0aGlzLmJsb2NrPWJ9ZnVuY3Rpb24gSSh4LGEpe3RoaXMubmFtZT14LHRoaXMubmV4dD1hfXZhciBKPW5ldyBJKCJ0aGlzIixuZXcgSSgiYXJndW1lbnRzIixudWxsKSk7ZnVuY3Rpb24gSygpe0Euc3RhdGUuY29udGV4dD1uZXcgSChBLnN0YXRlLmNvbnRleHQsQS5zdGF0ZS5sb2NhbFZhcnMsITEpLEEuc3RhdGUubG9jYWxWYXJzPUp9ZnVuY3Rpb24gTCgpe0Euc3RhdGUuY29udGV4dD1uZXcgSChBLnN0YXRlLmNvbnRleHQsQS5zdGF0ZS5sb2NhbFZhcnMsITApLEEuc3RhdGUubG9jYWxWYXJzPW51bGx9ZnVuY3Rpb24gTSgpe0Euc3RhdGUubG9jYWxWYXJzPUEuc3RhdGUuY29udGV4dC52YXJzLEEuc3RhdGUuY29udGV4dD1BLnN0YXRlLmNvbnRleHQucHJldn1mdW5jdGlvbiBOKHgsYSl7dmFyIGI9ZnVuY3Rpb24oKXt2YXIgYj1BLnN0YXRlLGM9Yi5pbmRlbnRlZDtpZigic3RhdCI9PWIubGV4aWNhbC50eXBlKWM9Yi5sZXhpY2FsLmluZGVudGVkO2Vsc2UgZm9yKHZhciBkPWIubGV4aWNhbDtkJiYiKSI9PWQudHlwZSYmZC5hbGlnbjtkPWQucHJldiljPWQuaW5kZW50ZWQ7Yi5sZXhpY2FsPW5ldyB3KGMsQS5zdHJlYW0uY29sdW1uKCkseCxudWxsLGIubGV4aWNhbCxhKX07cmV0dXJuIGIubGV4PSEwLGJ9ZnVuY3Rpb24gTygpe3ZhciB4PUEuc3RhdGU7eC5sZXhpY2FsLnByZXYmJigiKSI9PXgubGV4aWNhbC50eXBlJiYoeC5pbmRlbnRlZD14LmxleGljYWwuaW5kZW50ZWQpLHgubGV4aWNhbD14LmxleGljYWwucHJldil9ZnVuY3Rpb24gUCh4KXtmdW5jdGlvbiBhKGIpe3JldHVybiBiPT14P0MoKToiOyI9PXh8fCJ9Ij09Ynx8IikiPT1ifHwiXSI9PWI/QigpOkMoYSl9cmV0dXJuIGF9ZnVuY3Rpb24gUSh4LGEpe3JldHVybiJ2YXIiPT14P0MoTigidmFyZGVmIixhKSx5eCxQKCI7IiksTyk6ImtleXdvcmQgYSI9PXg/QyhOKCJmb3JtIiksVSxRLE8pOiJrZXl3b3JkIGIiPT14P0MoTigiZm9ybSIpLFEsTyk6ImtleXdvcmQgZCI9PXg/QS5zdHJlYW0ubWF0Y2goL15ccyokLywhMSk/QygpOkMoTigic3RhdCIpLFcsUCgiOyIpLE8pOiJkZWJ1Z2dlciI9PXg/QyhQKCI7IikpOiJ7Ij09eD9DKE4oIn0iKSxMLGt4LE8sTSk6IjsiPT14P0MoKToiaWYiPT14PygiZWxzZSI9PUEuc3RhdGUubGV4aWNhbC5pbmZvJiZBLnN0YXRlLmNjW0Euc3RhdGUuY2MubGVuZ3RoLTFdPT1PJiZBLnN0YXRlLmNjLnBvcCgpKCksQyhOKCJmb3JtIiksVSxRLE8sRXgpKToiZnVuY3Rpb24iPT14P0MoSXgpOiJmb3IiPT14P0MoTigiZm9ybSIpLEZ4LFEsTyk6ImNsYXNzIj09eHx8aSYmImludGVyZmFjZSI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKE4oImZvcm0iLCJjbGFzcyI9PXg/eDphKSxOeCxPKSk6InZhcmlhYmxlIj09eD9pJiYiZGVjbGFyZSI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKFEpKTppJiYoIm1vZHVsZSI9PWF8fCJlbnVtIj09YXx8InR5cGUiPT1hKSYmQS5zdHJlYW0ubWF0Y2goL15ccypcdy8sITEpPyhBLm1hcmtlZD0ia2V5d29yZCIsImVudW0iPT1hP0MoWngpOiJ0eXBlIj09YT9DKEt4LFAoIm9wZXJhdG9yIikscHgsUCgiOyIpKTpDKE4oImZvcm0iKSx6eCxQKCJ7IiksTigifSIpLGt4LE8sTykpOmkmJiJuYW1lc3BhY2UiPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhOKCJmb3JtIiksUyxRLE8pKTppJiYiYWJzdHJhY3QiPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhRKSk6QyhOKCJzdGF0IiksZHgpOiJzd2l0Y2giPT14P0MoTigiZm9ybSIpLFUsUCgieyIpLE4oIn0iLCJzd2l0Y2giKSxMLGt4LE8sTyxNKToiY2FzZSI9PXg/QyhTLFAoIjoiKSk6ImRlZmF1bHQiPT14P0MoUCgiOiIpKToiY2F0Y2giPT14P0MoTigiZm9ybSIpLEssUixRLE8sTSk6ImV4cG9ydCI9PXg/QyhOKCJzdGF0IiksUngsTyk6ImltcG9ydCI9PXg/QyhOKCJzdGF0IiksVHgsTyk6ImFzeW5jIj09eD9DKFEpOiJAIj09YT9DKFMsUSk6QihOKCJzdGF0IiksUyxQKCI7IiksTyl9ZnVuY3Rpb24gUih4KXtpZigiKCI9PXgpcmV0dXJuIEMoTHgsUCgiKSIpKX1mdW5jdGlvbiBTKHgsYSl7cmV0dXJuIFYoeCxhLCExKX1mdW5jdGlvbiBUKHgsYSl7cmV0dXJuIFYoeCxhLCEwKX1mdW5jdGlvbiBVKHgpe3JldHVybiIoIiE9eD9CKCk6QyhOKCIpIiksVyxQKCIpIiksTyl9ZnVuY3Rpb24gVih4LGEsYil7aWYoQS5zdGF0ZS5mYXRBcnJvd0F0PT1BLnN0cmVhbS5zdGFydCl7dmFyIGM9Yj94eDpfO2lmKCIoIj09eClyZXR1cm4gQyhLLE4oIikiKSxpeChMeCwiKSIpLE8sUCgiPT4iKSxjLE0pO2lmKCJ2YXJpYWJsZSI9PXgpcmV0dXJuIEIoSyx6eCxQKCI9PiIpLGMsTSl9dmFyIGQ9Yj9ZOlg7cmV0dXJuIHYuaGFzT3duUHJvcGVydHkoeCk/QyhkKToiZnVuY3Rpb24iPT14P0MoSXgsZCk6ImNsYXNzIj09eHx8aSYmImludGVyZmFjZSI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKE4oImZvcm0iKSxNeCxPKSk6ImtleXdvcmQgYyI9PXh8fCJhc3luYyI9PXg/QyhiP1Q6Uyk6IigiPT14P0MoTigiKSIpLFcsUCgiKSIpLE8sZCk6Im9wZXJhdG9yIj09eHx8InNwcmVhZCI9PXg/QyhiP1Q6Uyk6IlsiPT14P0MoTigiXSIpLFl4LE8sZCk6InsiPT14P2p4KGZ4LCJ9IixudWxsLGQpOiJxdWFzaSI9PXg/QihaLGQpOiJuZXciPT14P0MoYXgoYikpOiJpbXBvcnQiPT14P0MoUyk6QygpfWZ1bmN0aW9uIFcoeCl7cmV0dXJuIHgubWF0Y2goL1s7XH1cKVxdLF0vKT9CKCk6QihTKX1mdW5jdGlvbiBYKHgsYSl7cmV0dXJuIiwiPT14P0MoVyk6WSh4LGEsITEpfWZ1bmN0aW9uIFkoeCxhLGIpe3ZhciBjPTA9PWI/WDpZLGQ9MD09Yj9TOlQ7cmV0dXJuIj0+Ij09eD9DKEssYj94eDpfLE0pOiJvcGVyYXRvciI9PXg/L1wrXCt8LS0vLnRlc3QoYSl8fGkmJiIhIj09YT9DKGMpOmkmJiI8Ij09YSYmQS5zdHJlYW0ubWF0Y2goL14oW14+XXw8Lio/PikqPlxzKlwoLywhMSk/QyhOKCI+IiksaXgocHgsIj4iKSxPLGMpOiI/Ij09YT9DKFMsUCgiOiIpLGQpOkMoZCk6InF1YXNpIj09eD9CKFosYyk6IjsiIT14PyIoIj09eD9qeChULCIpIiwiY2FsbCIsYyk6Ii4iPT14P0MoZXgsYyk6IlsiPT14P0MoTigiXSIpLFcsUCgiXSIpLE8sYyk6aSYmImFzIj09YT8oQS5tYXJrZWQ9ImtleXdvcmQiLEMocHgsYykpOiJyZWdleHAiPT14PyhBLnN0YXRlLmxhc3RUeXBlPUEubWFya2VkPSJvcGVyYXRvciIsQS5zdHJlYW0uYmFja1VwKEEuc3RyZWFtLnBvcy1BLnN0cmVhbS5zdGFydC0xKSxDKGQpKTp2b2lkIDA6dm9pZCAwfWZ1bmN0aW9uIFooeCxhKXtyZXR1cm4icXVhc2kiIT14P0IoKToiJHsiIT1hLnNsaWNlKGEubGVuZ3RoLTIpP0MoWik6QyhTLCQpfWZ1bmN0aW9uICQoeCl7aWYoIn0iPT14KXJldHVybiBBLm1hcmtlZD0ic3RyaW5nLTIiLEEuc3RhdGUudG9rZW5pemU9cyxDKFopfWZ1bmN0aW9uIF8oeCl7cmV0dXJuIHUoQS5zdHJlYW0sQS5zdGF0ZSksQigieyI9PXg/UTpTKX1mdW5jdGlvbiB4eCh4KXtyZXR1cm4gdShBLnN0cmVhbSxBLnN0YXRlKSxCKCJ7Ij09eD9ROlQpfWZ1bmN0aW9uIGF4KHgpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4iLiI9PWE/Qyh4P2N4OmJ4KToidmFyaWFibGUiPT1hJiZpP0ModXgseD9ZOlgpOkIoeD9UOlMpfX1mdW5jdGlvbiBieCh4LGEpe2lmKCJ0YXJnZXQiPT1hKXJldHVybiBBLm1hcmtlZD0ia2V5d29yZCIsQyhYKX1mdW5jdGlvbiBjeCh4LGEpe2lmKCJ0YXJnZXQiPT1hKXJldHVybiBBLm1hcmtlZD0ia2V5d29yZCIsQyhZKX1mdW5jdGlvbiBkeCh4KXtyZXR1cm4iOiI9PXg/QyhPLFEpOkIoWCxQKCI7IiksTyl9ZnVuY3Rpb24gZXgoeCl7aWYoInZhcmlhYmxlIj09eClyZXR1cm4gQS5tYXJrZWQ9InByb3BlcnR5IixDKCl9ZnVuY3Rpb24gZngoeCxhKXtpZigiYXN5bmMiPT14KXJldHVybiBBLm1hcmtlZD0icHJvcGVydHkiLEMoZngpO2lmKCJ2YXJpYWJsZSI9PXh8fCJrZXl3b3JkIj09QS5zdHlsZSl7cmV0dXJuIEEubWFya2VkPSJwcm9wZXJ0eSIsImdldCI9PWF8fCJzZXQiPT1hP0MoZ3gpOihpJiZBLnN0YXRlLmZhdEFycm93QXQ9PUEuc3RyZWFtLnN0YXJ0JiYoYj1BLnN0cmVhbS5tYXRjaCgvXlxzKjpccyovLCExKSkmJihBLnN0YXRlLmZhdEFycm93QXQ9QS5zdHJlYW0ucG9zK2JbMF0ubGVuZ3RoKSxDKGh4KSk7dmFyIGJ9ZWxzZXtpZigibnVtYmVyIj09eHx8InN0cmluZyI9PXgpcmV0dXJuIEEubWFya2VkPWc/InByb3BlcnR5IjpBLnN0eWxlKyIgcHJvcGVydHkiLEMoaHgpO2lmKCJqc29ubGQta2V5d29yZCI9PXgpcmV0dXJuIEMoaHgpO2lmKGkmJkcoYSkpcmV0dXJuIEEubWFya2VkPSJrZXl3b3JkIixDKGZ4KTtpZigiWyI9PXgpcmV0dXJuIEMoUyxseCxQKCJdIiksaHgpO2lmKCJzcHJlYWQiPT14KXJldHVybiBDKFQsaHgpO2lmKCIqIj09YSlyZXR1cm4gQS5tYXJrZWQ9ImtleXdvcmQiLEMoZngpO2lmKCI6Ij09eClyZXR1cm4gQihoeCl9fWZ1bmN0aW9uIGd4KHgpe3JldHVybiJ2YXJpYWJsZSIhPXg/QihoeCk6KEEubWFya2VkPSJwcm9wZXJ0eSIsQyhJeCkpfWZ1bmN0aW9uIGh4KHgpe3JldHVybiI6Ij09eD9DKFQpOiIoIj09eD9CKEl4KTp2b2lkIDB9ZnVuY3Rpb24gaXgoeCxhLGIpe2Z1bmN0aW9uIGMoZCxlKXtpZihiP2IuaW5kZXhPZihkKT4tMToiLCI9PWQpe3ZhciBmPUEuc3RhdGUubGV4aWNhbDtyZXR1cm4iY2FsbCI9PWYuaW5mbyYmKGYucG9zPShmLnBvc3x8MCkrMSksQyhmdW5jdGlvbihiLGMpe3JldHVybiBiPT1hfHxjPT1hP0IoKTpCKHgpfSxjKX1yZXR1cm4gZD09YXx8ZT09YT9DKCk6YiYmYi5pbmRleE9mKCI7Iik+LTE/Qih4KTpDKFAoYSkpfXJldHVybiBmdW5jdGlvbihiLGQpe3JldHVybiBiPT1hfHxkPT1hP0MoKTpCKHgsYyl9fWZ1bmN0aW9uIGp4KHgsYSxiKXtmb3IodmFyIGM9MztjPGFyZ3VtZW50cy5sZW5ndGg7YysrKUEuY2MucHVzaChhcmd1bWVudHNbY10pO3JldHVybiBDKE4oYSxiKSxpeCh4LGEpLE8pfWZ1bmN0aW9uIGt4KHgpe3JldHVybiJ9Ij09eD9DKCk6QihRLGt4KX1mdW5jdGlvbiBseCh4LGEpe2lmKGkpe2lmKCI6Ij09eClyZXR1cm4gQyhweCk7aWYoIj8iPT1hKXJldHVybiBDKGx4KX19ZnVuY3Rpb24gbXgoeCxhKXtpZihpJiYoIjoiPT14fHwiaW4iPT1hKSlyZXR1cm4gQyhweCl9ZnVuY3Rpb24gbngoeCl7aWYoaSYmIjoiPT14KXJldHVybiBBLnN0cmVhbS5tYXRjaCgvXlxzKlx3K1xzK2lzXGIvLCExKT9DKFMsb3gscHgpOkMocHgpfWZ1bmN0aW9uIG94KHgsYSl7aWYoImlzIj09YSlyZXR1cm4gQS5tYXJrZWQ9ImtleXdvcmQiLEMoKX1mdW5jdGlvbiBweCh4LGEpe3JldHVybiJrZXlvZiI9PWF8fCJ0eXBlb2YiPT1hfHwiaW5mZXIiPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQygidHlwZW9mIj09YT9UOnB4KSk6InZhcmlhYmxlIj09eHx8InZvaWQiPT1hPyhBLm1hcmtlZD0idHlwZSIsQyh0eCkpOiJ8Ij09YXx8IiYiPT1hP0MocHgpOiJzdHJpbmciPT14fHwibnVtYmVyIj09eHx8ImF0b20iPT14P0ModHgpOiJbIj09eD9DKE4oIl0iKSxpeChweCwiXSIsIiwiKSxPLHR4KToieyI9PXg/QyhOKCJ9IiksaXgocngsIn0iLCIsOyIpLE8sdHgpOiIoIj09eD9DKGl4KHN4LCIpIikscXgsdHgpOiI8Ij09eD9DKGl4KHB4LCI+IikscHgpOnZvaWQgMH1mdW5jdGlvbiBxeCh4KXtpZigiPT4iPT14KXJldHVybiBDKHB4KX1mdW5jdGlvbiByeCh4LGEpe3JldHVybiJ2YXJpYWJsZSI9PXh8fCJrZXl3b3JkIj09QS5zdHlsZT8oQS5tYXJrZWQ9InByb3BlcnR5IixDKHJ4KSk6Ij8iPT1hfHwibnVtYmVyIj09eHx8InN0cmluZyI9PXg/QyhyeCk6IjoiPT14P0MocHgpOiJbIj09eD9DKFAoInZhcmlhYmxlIiksbXgsUCgiXSIpLHJ4KToiKCI9PXg/QihKeCxyeCk6dm9pZCAwfWZ1bmN0aW9uIHN4KHgsYSl7cmV0dXJuInZhcmlhYmxlIj09eCYmQS5zdHJlYW0ubWF0Y2goL15ccypbPzpdLywhMSl8fCI/Ij09YT9DKHN4KToiOiI9PXg/QyhweCk6InNwcmVhZCI9PXg/QyhzeCk6QihweCl9ZnVuY3Rpb24gdHgoeCxhKXtyZXR1cm4iPCI9PWE/QyhOKCI+IiksaXgocHgsIj4iKSxPLHR4KToifCI9PWF8fCIuIj09eHx8IiYiPT1hP0MocHgpOiJbIj09eD9DKHB4LFAoIl0iKSx0eCk6ImV4dGVuZHMiPT1hfHwiaW1wbGVtZW50cyI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKHB4KSk6Ij8iPT1hP0MocHgsUCgiOiIpLHB4KTp2b2lkIDB9ZnVuY3Rpb24gdXgoeCxhKXtpZigiPCI9PWEpcmV0dXJuIEMoTigiPiIpLGl4KHB4LCI+IiksTyx0eCl9ZnVuY3Rpb24gdngoKXtyZXR1cm4gQihweCx3eCl9ZnVuY3Rpb24gd3goeCxhKXtpZigiPSI9PWEpcmV0dXJuIEMocHgpfWZ1bmN0aW9uIHl4KHgsYSl7cmV0dXJuImVudW0iPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhaeCkpOkIoengsbHgsQ3gsRHgpfWZ1bmN0aW9uIHp4KHgsYSl7cmV0dXJuIGkmJkcoYSk/KEEubWFya2VkPSJrZXl3b3JkIixDKHp4KSk6InZhcmlhYmxlIj09eD8oRShhKSxDKCkpOiJzcHJlYWQiPT14P0MoengpOiJbIj09eD9qeChCeCwiXSIpOiJ7Ij09eD9qeChBeCwifSIpOnZvaWQgMH1mdW5jdGlvbiBBeCh4LGEpe3JldHVybiJ2YXJpYWJsZSIhPXh8fEEuc3RyZWFtLm1hdGNoKC9eXHMqOi8sITEpPygidmFyaWFibGUiPT14JiYoQS5tYXJrZWQ9InByb3BlcnR5IiksInNwcmVhZCI9PXg/Qyh6eCk6In0iPT14P0IoKToiWyI9PXg/QyhTLFAoIl0iKSxQKCI6IiksQXgpOkMoUCgiOiIpLHp4LEN4KSk6KEUoYSksQyhDeCkpfWZ1bmN0aW9uIEJ4KCl7cmV0dXJuIEIoengsQ3gpfWZ1bmN0aW9uIEN4KHgsYSl7aWYoIj0iPT1hKXJldHVybiBDKFQpfWZ1bmN0aW9uIER4KHgpe2lmKCIsIj09eClyZXR1cm4gQyh5eCl9ZnVuY3Rpb24gRXgoeCxhKXtpZigia2V5d29yZCBiIj09eCYmImVsc2UiPT1hKXJldHVybiBDKE4oImZvcm0iLCJlbHNlIiksUSxPKX1mdW5jdGlvbiBGeCh4LGEpe3JldHVybiJhd2FpdCI9PWE/QyhGeCk6IigiPT14P0MoTigiKSIpLEd4LE8pOnZvaWQgMH1mdW5jdGlvbiBHeCh4KXtyZXR1cm4idmFyIj09eD9DKHl4LEh4KToidmFyaWFibGUiPT14P0MoSHgpOkIoSHgpfWZ1bmN0aW9uIEh4KHgsYSl7cmV0dXJuIikiPT14P0MoKToiOyI9PXg/QyhIeCk6ImluIj09YXx8Im9mIj09YT8oQS5tYXJrZWQ9ImtleXdvcmQiLEMoUyxIeCkpOkIoUyxIeCl9ZnVuY3Rpb24gSXgoeCxhKXtyZXR1cm4iKiI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKEl4KSk6InZhcmlhYmxlIj09eD8oRShhKSxDKEl4KSk6IigiPT14P0MoSyxOKCIpIiksaXgoTHgsIikiKSxPLG54LFEsTSk6aSYmIjwiPT1hP0MoTigiPiIpLGl4KHZ4LCI+IiksTyxJeCk6dm9pZCAwfWZ1bmN0aW9uIEp4KHgsYSl7cmV0dXJuIioiPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhKeCkpOiJ2YXJpYWJsZSI9PXg/KEUoYSksQyhKeCkpOiIoIj09eD9DKEssTigiKSIpLGl4KEx4LCIpIiksTyxueCxNKTppJiYiPCI9PWE/QyhOKCI+IiksaXgodngsIj4iKSxPLEp4KTp2b2lkIDB9ZnVuY3Rpb24gS3goeCxhKXtyZXR1cm4ia2V5d29yZCI9PXh8fCJ2YXJpYWJsZSI9PXg/KEEubWFya2VkPSJ0eXBlIixDKEt4KSk6IjwiPT1hP0MoTigiPiIpLGl4KHZ4LCI+IiksTyk6dm9pZCAwfWZ1bmN0aW9uIEx4KHgsYSl7cmV0dXJuIkAiPT1hJiZDKFMsTHgpLCJzcHJlYWQiPT14P0MoTHgpOmkmJkcoYSk/KEEubWFya2VkPSJrZXl3b3JkIixDKEx4KSk6aSYmInRoaXMiPT14P0MobHgsQ3gpOkIoengsbHgsQ3gpfWZ1bmN0aW9uIE14KHgsYSl7cmV0dXJuInZhcmlhYmxlIj09eD9OeCh4LGEpOk94KHgsYSl9ZnVuY3Rpb24gTngoeCxhKXtpZigidmFyaWFibGUiPT14KXJldHVybiBFKGEpLEMoT3gpfWZ1bmN0aW9uIE94KHgsYSl7cmV0dXJuIjwiPT1hP0MoTigiPiIpLGl4KHZ4LCI+IiksTyxPeCk6ImV4dGVuZHMiPT1hfHwiaW1wbGVtZW50cyI9PWF8fGkmJiIsIj09eD8oImltcGxlbWVudHMiPT1hJiYoQS5tYXJrZWQ9ImtleXdvcmQiKSxDKGk/cHg6UyxPeCkpOiJ7Ij09eD9DKE4oIn0iKSxQeCxPKTp2b2lkIDB9ZnVuY3Rpb24gUHgoeCxhKXtyZXR1cm4iYXN5bmMiPT14fHwidmFyaWFibGUiPT14JiYoInN0YXRpYyI9PWF8fCJnZXQiPT1hfHwic2V0Ij09YXx8aSYmRyhhKSkmJkEuc3RyZWFtLm1hdGNoKC9eXHMrW1x3JFx4YTEtXHVmZmZmXS8sITEpPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhQeCkpOiJ2YXJpYWJsZSI9PXh8fCJrZXl3b3JkIj09QS5zdHlsZT8oQS5tYXJrZWQ9InByb3BlcnR5IixDKFF4LFB4KSk6Im51bWJlciI9PXh8fCJzdHJpbmciPT14P0MoUXgsUHgpOiJbIj09eD9DKFMsbHgsUCgiXSIpLFF4LFB4KToiKiI9PWE/KEEubWFya2VkPSJrZXl3b3JkIixDKFB4KSk6aSYmIigiPT14P0IoSngsUHgpOiI7Ij09eHx8IiwiPT14P0MoUHgpOiJ9Ij09eD9DKCk6IkAiPT1hP0MoUyxQeCk6dm9pZCAwfWZ1bmN0aW9uIFF4KHgsYSl7aWYoIj8iPT1hKXJldHVybiBDKFF4KTtpZigiOiI9PXgpcmV0dXJuIEMocHgsQ3gpO2lmKCI9Ij09YSlyZXR1cm4gQyhUKTt2YXIgYj1BLnN0YXRlLmxleGljYWwucHJldjtyZXR1cm4gQihiJiYiaW50ZXJmYWNlIj09Yi5pbmZvP0p4Okl4KX1mdW5jdGlvbiBSeCh4LGEpe3JldHVybiIqIj09YT8oQS5tYXJrZWQ9ImtleXdvcmQiLEMoWHgsUCgiOyIpKSk6ImRlZmF1bHQiPT1hPyhBLm1hcmtlZD0ia2V5d29yZCIsQyhTLFAoIjsiKSkpOiJ7Ij09eD9DKGl4KFN4LCJ9IiksWHgsUCgiOyIpKTpCKFEpfWZ1bmN0aW9uIFN4KHgsYSl7cmV0dXJuImFzIj09YT8oQS5tYXJrZWQ9ImtleXdvcmQiLEMoUCgidmFyaWFibGUiKSkpOiJ2YXJpYWJsZSI9PXg/QihULFN4KTp2b2lkIDB9ZnVuY3Rpb24gVHgoeCl7cmV0dXJuInN0cmluZyI9PXg/QygpOiIoIj09eD9CKFMpOkIoVXgsVngsWHgpfWZ1bmN0aW9uIFV4KHgsYSl7cmV0dXJuInsiPT14P2p4KFV4LCJ9Iik6KCJ2YXJpYWJsZSI9PXgmJkUoYSksIioiPT1hJiYoQS5tYXJrZWQ9ImtleXdvcmQiKSxDKFd4KSl9ZnVuY3Rpb24gVngoeCl7aWYoIiwiPT14KXJldHVybiBDKFV4LFZ4KX1mdW5jdGlvbiBXeCh4LGEpe2lmKCJhcyI9PWEpcmV0dXJuIEEubWFya2VkPSJrZXl3b3JkIixDKFV4KX1mdW5jdGlvbiBYeCh4LGEpe2lmKCJmcm9tIj09YSlyZXR1cm4gQS5tYXJrZWQ9ImtleXdvcmQiLEMoUyl9ZnVuY3Rpb24gWXgoeCl7cmV0dXJuIl0iPT14P0MoKTpCKGl4KFQsIl0iKSl9ZnVuY3Rpb24gWngoKXtyZXR1cm4gQihOKCJmb3JtIiksengsUCgieyIpLE4oIn0iKSxpeCgkeCwifSIpLE8sTyl9ZnVuY3Rpb24gJHgoKXtyZXR1cm4gQih6eCxDeCl9ZnVuY3Rpb24gX3goeCxhKXtyZXR1cm4ib3BlcmF0b3IiPT14Lmxhc3RUeXBlfHwiLCI9PXgubGFzdFR5cGV8fGwudGVzdChhLmNoYXJBdCgwKSl8fC9bLC5dLy50ZXN0KGEuY2hhckF0KDApKX1mdW5jdGlvbiB4YSh4LGEsYil7cmV0dXJuIGEudG9rZW5pemU9PXAmJi9eKD86b3BlcmF0b3J8c29mfGtleXdvcmQgW2JjZF18Y2FzZXxuZXd8ZXhwb3J0fGRlZmF1bHR8c3ByZWFkfFtcW3t9XCgsOzpdfD0+KSQvLnRlc3QoYS5sYXN0VHlwZSl8fCJxdWFzaSI9PWEubGFzdFR5cGUmJi9ce1xzKiQvLnRlc3QoeC5zdHJpbmcuc2xpY2UoMCx4LnBvcy0oYnx8MCkpKX1yZXR1cm4gTS5sZXg9ITAsTy5sZXg9ITAse3N0YXJ0U3RhdGU6ZnVuY3Rpb24oeCl7dmFyIGE9e3Rva2VuaXplOnAsbGFzdFR5cGU6InNvZiIsY2M6W10sbGV4aWNhbDpuZXcgdygoeHx8MCktZSwwLCJibG9jayIsITEpLGxvY2FsVmFyczpiLmxvY2FsVmFycyxjb250ZXh0OmIubG9jYWxWYXJzJiZuZXcgSChudWxsLG51bGwsITEpLGluZGVudGVkOnh8fDB9O3JldHVybiBiLmdsb2JhbFZhcnMmJiJvYmplY3QiPT10eXBlb2YgYi5nbG9iYWxWYXJzJiYoYS5nbG9iYWxWYXJzPWIuZ2xvYmFsVmFycyksYX0sdG9rZW46ZnVuY3Rpb24oeCxhKXtpZih4LnNvbCgpJiYoYS5sZXhpY2FsLmhhc093blByb3BlcnR5KCJhbGlnbiIpfHwoYS5sZXhpY2FsLmFsaWduPSExKSxhLmluZGVudGVkPXguaW5kZW50YXRpb24oKSx1KHgsYSkpLGEudG9rZW5pemUhPXImJnguZWF0U3BhY2UoKSlyZXR1cm4gbnVsbDt2YXIgYj1hLnRva2VuaXplKHgsYSk7cmV0dXJuImNvbW1lbnQiPT1jP2I6KGEubGFzdFR5cGU9Im9wZXJhdG9yIiE9Y3x8IisrIiE9ZCYmIi0tIiE9ZD9jOiJpbmNkZWMiLHooYSxiLGMsZCx4KSl9LGluZGVudDpmdW5jdGlvbihhLGMpe2lmKGEudG9rZW5pemU9PXIpcmV0dXJuIHguUGFzcztpZihhLnRva2VuaXplIT1wKXJldHVybiAwO3ZhciBkLGc9YyYmYy5jaGFyQXQoMCksaD1hLmxleGljYWw7aWYoIS9eXHMqZWxzZVxiLy50ZXN0KGMpKWZvcih2YXIgaT1hLmNjLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgaj1hLmNjW2ldO2lmKGo9PU8paD1oLnByZXY7ZWxzZSBpZihqIT1FeClicmVha31mb3IoOygic3RhdCI9PWgudHlwZXx8ImZvcm0iPT1oLnR5cGUpJiYoIn0iPT1nfHwoZD1hLmNjW2EuY2MubGVuZ3RoLTFdKSYmKGQ9PVh8fGQ9PVkpJiYhL15bLFwuPStcLSo6P1tcKF0vLnRlc3QoYykpOyloPWgucHJldjtmJiYiKSI9PWgudHlwZSYmInN0YXQiPT1oLnByZXYudHlwZSYmKGg9aC5wcmV2KTt2YXIgaz1oLnR5cGUsbD1nPT1rO3JldHVybiJ2YXJkZWYiPT1rP2guaW5kZW50ZWQrKCJvcGVyYXRvciI9PWEubGFzdFR5cGV8fCIsIj09YS5sYXN0VHlwZT9oLmluZm8ubGVuZ3RoKzE6MCk6ImZvcm0iPT1rJiYieyI9PWc/aC5pbmRlbnRlZDoiZm9ybSI9PWs/aC5pbmRlbnRlZCtlOiJzdGF0Ij09az9oLmluZGVudGVkKyhfeChhLGMpP2Z8fGU6MCk6InN3aXRjaCIhPWguaW5mb3x8bHx8MD09Yi5kb3VibGVJbmRlbnRTd2l0Y2g/aC5hbGlnbj9oLmNvbHVtbisobD8wOjEpOmguaW5kZW50ZWQrKGw/MDplKTpoLmluZGVudGVkKygvXig/OmNhc2V8ZGVmYXVsdClcYi8udGVzdChjKT9lOjIqZSl9LGVsZWN0cmljSW5wdXQ6L15ccyooPzpjYXNlIC4qPzp8ZGVmYXVsdDp8XHt8XH0pJC8sYmxvY2tDb21tZW50U3RhcnQ6aD9udWxsOiIvKiIsYmxvY2tDb21tZW50RW5kOmg/bnVsbDoiKi8iLGJsb2NrQ29tbWVudENvbnRpbnVlOmg/bnVsbDoiICogIixsaW5lQ29tbWVudDpoP251bGw6Ii8vIixmb2xkOiJicmFjZSIsY2xvc2VCcmFja2V0czoiKClbXXt9JydcIlwiYGAiLGhlbHBlclR5cGU6aD8ianNvbiI6ImphdmFzY3JpcHQiLGpzb25sZE1vZGU6Zyxqc29uTW9kZTpoLGV4cHJlc3Npb25BbGxvd2VkOnhhLHNraXBFeHByZXNzaW9uOmZ1bmN0aW9uKHgpe3ZhciBhPXguY2NbeC5jYy5sZW5ndGgtMV07YSE9UyYmYSE9VHx8eC5jYy5wb3AoKX19fSkseC5yZWdpc3RlckhlbHBlcigid29yZENoYXJzIiwiamF2YXNjcmlwdCIsL1tcdyRdLykseC5kZWZpbmVNSU1FKCJ0ZXh0L2phdmFzY3JpcHQiLCJqYXZhc2NyaXB0IikseC5kZWZpbmVNSU1FKCJ0ZXh0L2VjbWFzY3JpcHQiLCJqYXZhc2NyaXB0IikseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwiamF2YXNjcmlwdCIpLHguZGVmaW5lTUlNRSgiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwiamF2YXNjcmlwdCIpLHguZGVmaW5lTUlNRSgiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsImphdmFzY3JpcHQiKSx4LmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL2pzb24iLHtuYW1lOiJqYXZhc2NyaXB0Iixqc29uOiEwfSkseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi94LWpzb24iLHtuYW1lOiJqYXZhc2NyaXB0Iixqc29uOiEwfSkseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi9sZCtqc29uIix7bmFtZToiamF2YXNjcmlwdCIsanNvbmxkOiEwfSkseC5kZWZpbmVNSU1FKCJ0ZXh0L3R5cGVzY3JpcHQiLHtuYW1lOiJqYXZhc2NyaXB0Iix0eXBlc2NyaXB0OiEwfSkseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi90eXBlc2NyaXB0Iix7bmFtZToiamF2YXNjcmlwdCIsdHlwZXNjcmlwdDohMH0pfSk7CgovLyBDU1MgZm9yIENvZGVtaXJyb3IKKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0IiYmdHlwZW9mIG1vZHVsZT09Im9iamVjdCIpZShyZXF1aXJlKCIuLi8uLi9saWIvY29kZW1pcnJvciIpKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpZGVmaW5lKFsiLi4vLi4vbGliL2NvZGVtaXJyb3IiXSxlKTtlbHNlIGUoQ29kZU1pcnJvcil9KShmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXt2YXIgdD17fTtmb3IodmFyIG49MDtuPGUubGVuZ3RoOysrbil7dFtlW25dXT10cnVlfXJldHVybiB0fWZ1bmN0aW9uIG0oZSx0KXt2YXIgbj1mYWxzZSxyO3doaWxlKChyPWUubmV4dCgpKSE9bnVsbCl7aWYobiYmcj09Ii8iKXt0LnRva2VuaXplPW51bGw7YnJlYWt9bj1yPT0iKiJ9cmV0dXJuWyJjb21tZW50IiwiY29tbWVudCJdfWZ1bmN0aW9uIGcoZSx0KXtpZihlLnNraXBUbygiLS0+Iikpe2UubWF0Y2goIi0tPiIpO3QudG9rZW5pemU9bnVsbH1lbHNle2Uuc2tpcFRvRW5kKCl9cmV0dXJuWyJjb21tZW50IiwiY29tbWVudCJdfWUuZGVmaW5lTW9kZSgiY3NzIixmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIHYoZSx0KXtwPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gbShlLHQpe3ZhciBuPWUubmV4dCgpO2lmKGlbbl0pe3ZhciByPWlbbl0oZSx0KTtpZihyIT09ZmFsc2UpcmV0dXJuIHJ9aWYobj09IkAiKXtlLmVhdFdoaWxlKC9bXHdcXFwtXS8pO3JldHVybiB2KCJkZWYiLGUuY3VycmVudCgpKX1lbHNlIGlmKG49PSI9Inx8KG49PSJ+Inx8bj09InwiKSYmZS5lYXQoIj0iKSl7cmV0dXJuIHYobnVsbCwiY29tcGFyZSIpfWVsc2UgaWYobj09JyInfHxuPT0iJyIpe3QudG9rZW5pemU9ZyhuKTtyZXR1cm4gdC50b2tlbml6ZShlLHQpfWVsc2UgaWYobj09IiMiKXtlLmVhdFdoaWxlKC9bXHdcXFwtXS8pO3JldHVybiB2KCJhdG9tIiwiaGFzaCIpfWVsc2UgaWYobj09IiEiKXtlLm1hdGNoKC9eXHMqXHcqLyk7cmV0dXJuIHYoImtleXdvcmQiLCJpbXBvcnRhbnQiKX1lbHNlIGlmKC9cZC8udGVzdChuKXx8bj09Ii4iJiZlLmVhdCgvXGQvKSl7ZS5lYXRXaGlsZSgvW1x3LiVdLyk7cmV0dXJuIHYoIm51bWJlciIsInVuaXQiKX1lbHNlIGlmKG49PT0iLSIpe2lmKC9bXGQuXS8udGVzdChlLnBlZWsoKSkpe2UuZWF0V2hpbGUoL1tcdy4lXS8pO3JldHVybiB2KCJudW1iZXIiLCJ1bml0Iil9ZWxzZSBpZihlLm1hdGNoKC9eXHcrLS8pKXtyZXR1cm4gdigibWV0YSIsIm1ldGEiKX19ZWxzZSBpZigvWywrPipcL10vLnRlc3Qobikpe3JldHVybiB2KG51bGwsInNlbGVjdC1vcCIpfWVsc2UgaWYobj09Ii4iJiZlLm1hdGNoKC9eLT9bX2Etel1bX2EtejAtOS1dKi9pKSl7cmV0dXJuIHYoInF1YWxpZmllciIsInF1YWxpZmllciIpfWVsc2UgaWYoL1s6O3t9XFtcXVwoXCldLy50ZXN0KG4pKXtyZXR1cm4gdihudWxsLG4pfWVsc2UgaWYobj09InUiJiZlLm1hdGNoKCJybCgiKSl7ZS5iYWNrVXAoMSk7dC50b2tlbml6ZT15O3JldHVybiB2KCJwcm9wZXJ0eSIsIndvcmQiKX1lbHNlIGlmKC9bXHdcXFwtXS8udGVzdChuKSl7ZS5lYXRXaGlsZSgvW1x3XFxcLV0vKTtyZXR1cm4gdigicHJvcGVydHkiLCJ3b3JkIil9ZWxzZXtyZXR1cm4gdihudWxsLG51bGwpfX1mdW5jdGlvbiBnKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPWZhbHNlLGk7d2hpbGUoKGk9dC5uZXh0KCkpIT1udWxsKXtpZihpPT1lJiYhcil7aWYoZT09IikiKXQuYmFja1VwKDEpO2JyZWFrfXI9IXImJmk9PSJcXCJ9aWYoaT09ZXx8IXImJmUhPSIpIiluLnRva2VuaXplPW51bGw7cmV0dXJuIHYoInN0cmluZyIsInN0cmluZyIpfX1mdW5jdGlvbiB5KGUsdCl7ZS5uZXh0KCk7aWYoIWUubWF0Y2goL1xzKltcIlwnKV0vLGZhbHNlKSl0LnRva2VuaXplPWcoIikiKTtlbHNlIHQudG9rZW5pemU9bnVsbDtyZXR1cm4gdihudWxsLCIoIil9ZnVuY3Rpb24gYihlLHQsbil7dGhpcy50eXBlPWU7dGhpcy5pbmRlbnQ9dDt0aGlzLnByZXY9bn1mdW5jdGlvbiB3KGUsdCxuKXtlLmNvbnRleHQ9bmV3IGIobix0LmluZGVudGF0aW9uKCkrcixlLmNvbnRleHQpO3JldHVybiBufWZ1bmN0aW9uIEUoZSl7ZS5jb250ZXh0PWUuY29udGV4dC5wcmV2O3JldHVybiBlLmNvbnRleHQudHlwZX1mdW5jdGlvbiBTKGUsdCxuKXtyZXR1cm4gTltuLmNvbnRleHQudHlwZV0oZSx0LG4pfWZ1bmN0aW9uIHgoZSx0LG4scil7Zm9yKHZhciBpPXJ8fDE7aT4wO2ktLSluLmNvbnRleHQ9bi5jb250ZXh0LnByZXY7cmV0dXJuIFMoZSx0LG4pfWZ1bmN0aW9uIFQoZSl7dmFyIHQ9ZS5jdXJyZW50KCkudG9Mb3dlckNhc2UoKTtpZihsLmhhc093blByb3BlcnR5KHQpKWQ9ImF0b20iO2Vsc2UgaWYoZi5oYXNPd25Qcm9wZXJ0eSh0KSlkPSJrZXl3b3JkIjtlbHNlIGQ9InZhcmlhYmxlIn1pZighbi5wcm9wZXJ0eUtleXdvcmRzKW49ZS5yZXNvbHZlTW9kZSgidGV4dC9jc3MiKTt2YXIgcj10LmluZGVudFVuaXQsaT1uLnRva2VuSG9va3Mscz1uLm1lZGlhVHlwZXN8fHt9LG89bi5tZWRpYUZlYXR1cmVzfHx7fSx1PW4ucHJvcGVydHlLZXl3b3Jkc3x8e30sYT1uLm5vblN0YW5kYXJkUHJvcGVydHlLZXl3b3Jkc3x8e30sZj1uLmNvbG9yS2V5d29yZHN8fHt9LGw9bi52YWx1ZUtleXdvcmRzfHx7fSxjPW4uZm9udFByb3BlcnRpZXN8fHt9LGg9bi5hbGxvd05lc3RlZDt2YXIgcCxkO3ZhciBOPXt9O04udG9wPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0ieyIpe3JldHVybiB3KG4sdCwiYmxvY2siKX1lbHNlIGlmKGU9PSJ9IiYmbi5jb250ZXh0LnByZXYpe3JldHVybiBFKG4pfWVsc2UgaWYoZT09IkBtZWRpYSIpe3JldHVybiB3KG4sdCwibWVkaWEiKX1lbHNlIGlmKGU9PSJAZm9udC1mYWNlIil7cmV0dXJuImZvbnRfZmFjZV9iZWZvcmUifWVsc2UgaWYoL15AKC0obW96fG1zfG98d2Via2l0KS0pP2tleWZyYW1lcyQvLnRlc3QoZSkpe3JldHVybiJrZXlmcmFtZXMifWVsc2UgaWYoZSYmZS5jaGFyQXQoMCk9PSJAIil7cmV0dXJuIHcobix0LCJhdCIpfWVsc2UgaWYoZT09Imhhc2giKXtkPSJidWlsdGluIn1lbHNlIGlmKGU9PSJ3b3JkIil7ZD0idGFnIn1lbHNlIGlmKGU9PSJ2YXJpYWJsZS1kZWZpbml0aW9uIil7cmV0dXJuIm1heWJlcHJvcCJ9ZWxzZSBpZihlPT0iaW50ZXJwb2xhdGlvbiIpe3JldHVybiB3KG4sdCwiaW50ZXJwb2xhdGlvbiIpfWVsc2UgaWYoZT09IjoiKXtyZXR1cm4icHNldWRvIn1lbHNlIGlmKGgmJmU9PSIoIil7cmV0dXJuIHcobix0LCJwYXJlbnMiKX1yZXR1cm4gbi5jb250ZXh0LnR5cGV9O04uYmxvY2s9ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PSJ3b3JkIil7dmFyIHI9dC5jdXJyZW50KCkudG9Mb3dlckNhc2UoKTtpZih1Lmhhc093blByb3BlcnR5KHIpKXtkPSJwcm9wZXJ0eSI7cmV0dXJuIm1heWJlcHJvcCJ9ZWxzZSBpZihhLmhhc093blByb3BlcnR5KHIpKXtkPSJzdHJpbmctMiI7cmV0dXJuIm1heWJlcHJvcCJ9ZWxzZSBpZihoKXtkPXQubWF0Y2goL15ccyo6LyxmYWxzZSk/InByb3BlcnR5IjoidGFnIjtyZXR1cm4iYmxvY2sifWVsc2V7ZCs9IiBlcnJvciI7cmV0dXJuIm1heWJlcHJvcCJ9fWVsc2UgaWYoZT09Im1ldGEiKXtyZXR1cm4iYmxvY2sifWVsc2UgaWYoIWgmJihlPT0iaGFzaCJ8fGU9PSJxdWFsaWZpZXIiKSl7ZD0iZXJyb3IiO3JldHVybiJibG9jayJ9ZWxzZXtyZXR1cm4gTi50b3AoZSx0LG4pfX07Ti5tYXliZXByb3A9ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PSI6IilyZXR1cm4gdyhuLHQsInByb3AiKTtyZXR1cm4gUyhlLHQsbil9O04ucHJvcD1mdW5jdGlvbihlLHQsbil7aWYoZT09IjsiKXJldHVybiBFKG4pO2lmKGU9PSJ7IiYmaClyZXR1cm4gdyhuLHQsInByb3BCbG9jayIpO2lmKGU9PSJ9Inx8ZT09InsiKXJldHVybiB4KGUsdCxuKTtpZihlPT0iKCIpcmV0dXJuIHcobix0LCJwYXJlbnMiKTtpZihlPT0iaGFzaCImJiEvXiMoWzAtOWEtZkEtZl17M318WzAtOWEtZkEtZl17Nn0pJC8udGVzdCh0LmN1cnJlbnQoKSkpe2QrPSIgZXJyb3IifWVsc2UgaWYoZT09IndvcmQiKXtUKHQpfWVsc2UgaWYoZT09ImludGVycG9sYXRpb24iKXtyZXR1cm4gdyhuLHQsImludGVycG9sYXRpb24iKX1yZXR1cm4icHJvcCJ9O04ucHJvcEJsb2NrPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0ifSIpcmV0dXJuIEUobik7aWYoZT09IndvcmQiKXtkPSJwcm9wZXJ0eSI7cmV0dXJuIm1heWJlcHJvcCJ9cmV0dXJuIG4uY29udGV4dC50eXBlfTtOLnBhcmVucz1mdW5jdGlvbihlLHQsbil7aWYoZT09InsifHxlPT0ifSIpcmV0dXJuIHgoZSx0LG4pO2lmKGU9PSIpIilyZXR1cm4gRShuKTtpZihlPT0iKCIpcmV0dXJuIHcobix0LCJwYXJlbnMiKTtpZihlPT0id29yZCIpVCh0KTtyZXR1cm4icGFyZW5zIn07Ti5wc2V1ZG89ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PSJ3b3JkIil7ZD0idmFyaWFibGUtMyI7cmV0dXJuIG4uY29udGV4dC50eXBlfXJldHVybiBTKGUsdCxuKX07Ti5tZWRpYT1mdW5jdGlvbihlLHQsbil7aWYoZT09IigiKXJldHVybiB3KG4sdCwibWVkaWFfcGFyZW5zIik7aWYoZT09In0iKXJldHVybiB4KGUsdCxuKTtpZihlPT0ieyIpcmV0dXJuIEUobikmJncobix0LGg/ImJsb2NrIjoidG9wIik7aWYoZT09IndvcmQiKXt2YXIgcj10LmN1cnJlbnQoKS50b0xvd2VyQ2FzZSgpO2lmKHI9PSJvbmx5Inx8cj09Im5vdCJ8fHI9PSJhbmQiKWQ9ImtleXdvcmQiO2Vsc2UgaWYocy5oYXNPd25Qcm9wZXJ0eShyKSlkPSJhdHRyaWJ1dGUiO2Vsc2UgaWYoby5oYXNPd25Qcm9wZXJ0eShyKSlkPSJwcm9wZXJ0eSI7ZWxzZSBkPSJlcnJvciJ9cmV0dXJuIG4uY29udGV4dC50eXBlfTtOLm1lZGlhX3BhcmVucz1mdW5jdGlvbihlLHQsbil7aWYoZT09IikiKXJldHVybiBFKG4pO2lmKGU9PSJ7Inx8ZT09In0iKXJldHVybiB4KGUsdCxuLDIpO3JldHVybiBOLm1lZGlhKGUsdCxuKX07Ti5mb250X2ZhY2VfYmVmb3JlPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0ieyIpcmV0dXJuIHcobix0LCJmb250X2ZhY2UiKTtyZXR1cm4gUyhlLHQsbil9O04uZm9udF9mYWNlPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0ifSIpcmV0dXJuIEUobik7aWYoZT09IndvcmQiKXtpZighYy5oYXNPd25Qcm9wZXJ0eSh0LmN1cnJlbnQoKS50b0xvd2VyQ2FzZSgpKSlkPSJlcnJvciI7ZWxzZSBkPSJwcm9wZXJ0eSI7cmV0dXJuIm1heWJlcHJvcCJ9cmV0dXJuImZvbnRfZmFjZSJ9O04ua2V5ZnJhbWVzPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0id29yZCIpe2Q9InZhcmlhYmxlIjtyZXR1cm4ia2V5ZnJhbWVzIn1pZihlPT0ieyIpcmV0dXJuIHcobix0LCJ0b3AiKTtyZXR1cm4gUyhlLHQsbil9O04uYXQ9ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PSI7IilyZXR1cm4gRShuKTtpZihlPT0ieyJ8fGU9PSJ9IilyZXR1cm4geChlLHQsbik7aWYoZT09IndvcmQiKWQ9InRhZyI7ZWxzZSBpZihlPT0iaGFzaCIpZD0iYnVpbHRpbiI7cmV0dXJuImF0In07Ti5pbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGUsdCxuKXtpZihlPT0ifSIpcmV0dXJuIEUobik7aWYoZT09InsifHxlPT0iOyIpcmV0dXJuIHgoZSx0LG4pO2lmKGUhPSJ2YXJpYWJsZSIpZD0iZXJyb3IiO3JldHVybiJpbnRlcnBvbGF0aW9uIn07cmV0dXJue3N0YXJ0U3RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJue3Rva2VuaXplOm51bGwsc3RhdGU6InRvcCIsY29udGV4dDpuZXcgYigidG9wIixlfHwwLG51bGwpfX0sdG9rZW46ZnVuY3Rpb24oZSx0KXtpZighdC50b2tlbml6ZSYmZS5lYXRTcGFjZSgpKXJldHVybiBudWxsO3ZhciBuPSh0LnRva2VuaXplfHxtKShlLHQpO2lmKG4mJnR5cGVvZiBuPT0ib2JqZWN0Iil7cD1uWzFdO249blswXX1kPW47dC5zdGF0ZT1OW3Quc3RhdGVdKHAsZSx0KTtyZXR1cm4gZH0saW5kZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jb250ZXh0LGk9dCYmdC5jaGFyQXQoMCk7dmFyIHM9bi5pbmRlbnQ7aWYobi50eXBlPT0icHJvcCImJihpPT0ifSJ8fGk9PSIpIikpbj1uLnByZXY7aWYobi5wcmV2JiYoaT09In0iJiYobi50eXBlPT0iYmxvY2sifHxuLnR5cGU9PSJ0b3AifHxuLnR5cGU9PSJpbnRlcnBvbGF0aW9uInx8bi50eXBlPT0iZm9udF9mYWNlIil8fGk9PSIpIiYmKG4udHlwZT09InBhcmVucyJ8fG4udHlwZT09Im1lZGlhX3BhcmVucyIpfHxpPT0ieyImJihuLnR5cGU9PSJhdCJ8fG4udHlwZT09Im1lZGlhIikpKXtzPW4uaW5kZW50LXI7bj1uLnByZXZ9cmV0dXJuIHN9LGVsZWN0cmljQ2hhcnM6In0iLGJsb2NrQ29tbWVudFN0YXJ0OiIvKiIsYmxvY2tDb21tZW50RW5kOiIqLyIsZm9sZDoiYnJhY2UifX0pO3ZhciBuPVsiYWxsIiwiYXVyYWwiLCJicmFpbGxlIiwiaGFuZGhlbGQiLCJwcmludCIsInByb2plY3Rpb24iLCJzY3JlZW4iLCJ0dHkiLCJ0diIsImVtYm9zc2VkIl0scj10KG4pO3ZhciBpPVsid2lkdGgiLCJtaW4td2lkdGgiLCJtYXgtd2lkdGgiLCJoZWlnaHQiLCJtaW4taGVpZ2h0IiwibWF4LWhlaWdodCIsImRldmljZS13aWR0aCIsIm1pbi1kZXZpY2Utd2lkdGgiLCJtYXgtZGV2aWNlLXdpZHRoIiwiZGV2aWNlLWhlaWdodCIsIm1pbi1kZXZpY2UtaGVpZ2h0IiwibWF4LWRldmljZS1oZWlnaHQiLCJhc3BlY3QtcmF0aW8iLCJtaW4tYXNwZWN0LXJhdGlvIiwibWF4LWFzcGVjdC1yYXRpbyIsImRldmljZS1hc3BlY3QtcmF0aW8iLCJtaW4tZGV2aWNlLWFzcGVjdC1yYXRpbyIsIm1heC1kZXZpY2UtYXNwZWN0LXJhdGlvIiwiY29sb3IiLCJtaW4tY29sb3IiLCJtYXgtY29sb3IiLCJjb2xvci1pbmRleCIsIm1pbi1jb2xvci1pbmRleCIsIm1heC1jb2xvci1pbmRleCIsIm1vbm9jaHJvbWUiLCJtaW4tbW9ub2Nocm9tZSIsIm1heC1tb25vY2hyb21lIiwicmVzb2x1dGlvbiIsIm1pbi1yZXNvbHV0aW9uIiwibWF4LXJlc29sdXRpb24iLCJzY2FuIiwiZ3JpZCJdLHM9dChpKTt2YXIgbz1bImFsaWduLWNvbnRlbnQiLCJhbGlnbi1pdGVtcyIsImFsaWduLXNlbGYiLCJhbGlnbm1lbnQtYWRqdXN0IiwiYWxpZ25tZW50LWJhc2VsaW5lIiwiYW5jaG9yLXBvaW50IiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uLWRlbGF5IiwiYW5pbWF0aW9uLWRpcmVjdGlvbiIsImFuaW1hdGlvbi1kdXJhdGlvbiIsImFuaW1hdGlvbi1maWxsLW1vZGUiLCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50IiwiYW5pbWF0aW9uLW5hbWUiLCJhbmltYXRpb24tcGxheS1zdGF0ZSIsImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLCJhcHBlYXJhbmNlIiwiYXppbXV0aCIsImJhY2tmYWNlLXZpc2liaWxpdHkiLCJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZC1hdHRhY2htZW50IiwiYmFja2dyb3VuZC1jbGlwIiwiYmFja2dyb3VuZC1jb2xvciIsImJhY2tncm91bmQtaW1hZ2UiLCJiYWNrZ3JvdW5kLW9yaWdpbiIsImJhY2tncm91bmQtcG9zaXRpb24iLCJiYWNrZ3JvdW5kLXJlcGVhdCIsImJhY2tncm91bmQtc2l6ZSIsImJhc2VsaW5lLXNoaWZ0IiwiYmluZGluZyIsImJsZWVkIiwiYm9va21hcmstbGFiZWwiLCJib29rbWFyay1sZXZlbCIsImJvb2ttYXJrLXN0YXRlIiwiYm9va21hcmstdGFyZ2V0IiwiYm9yZGVyIiwiYm9yZGVyLWJvdHRvbSIsImJvcmRlci1ib3R0b20tY29sb3IiLCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiLCJib3JkZXItYm90dG9tLXN0eWxlIiwiYm9yZGVyLWJvdHRvbS13aWR0aCIsImJvcmRlci1jb2xsYXBzZSIsImJvcmRlci1jb2xvciIsImJvcmRlci1pbWFnZSIsImJvcmRlci1pbWFnZS1vdXRzZXQiLCJib3JkZXItaW1hZ2UtcmVwZWF0IiwiYm9yZGVyLWltYWdlLXNsaWNlIiwiYm9yZGVyLWltYWdlLXNvdXJjZSIsImJvcmRlci1pbWFnZS13aWR0aCIsImJvcmRlci1sZWZ0IiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItbGVmdC1zdHlsZSIsImJvcmRlci1sZWZ0LXdpZHRoIiwiYm9yZGVyLXJhZGl1cyIsImJvcmRlci1yaWdodCIsImJvcmRlci1yaWdodC1jb2xvciIsImJvcmRlci1yaWdodC1zdHlsZSIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci1zcGFjaW5nIiwiYm9yZGVyLXN0eWxlIiwiYm9yZGVyLXRvcCIsImJvcmRlci10b3AtY29sb3IiLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCJib3JkZXItdG9wLXN0eWxlIiwiYm9yZGVyLXRvcC13aWR0aCIsImJvcmRlci13aWR0aCIsImJvdHRvbSIsImJveC1kZWNvcmF0aW9uLWJyZWFrIiwiYm94LXNoYWRvdyIsImJveC1zaXppbmciLCJicmVhay1hZnRlciIsImJyZWFrLWJlZm9yZSIsImJyZWFrLWluc2lkZSIsImNhcHRpb24tc2lkZSIsImNsZWFyIiwiY2xpcCIsImNvbG9yIiwiY29sb3ItcHJvZmlsZSIsImNvbHVtbi1jb3VudCIsImNvbHVtbi1maWxsIiwiY29sdW1uLWdhcCIsImNvbHVtbi1ydWxlIiwiY29sdW1uLXJ1bGUtY29sb3IiLCJjb2x1bW4tcnVsZS1zdHlsZSIsImNvbHVtbi1ydWxlLXdpZHRoIiwiY29sdW1uLXNwYW4iLCJjb2x1bW4td2lkdGgiLCJjb2x1bW5zIiwiY29udGVudCIsImNvdW50ZXItaW5jcmVtZW50IiwiY291bnRlci1yZXNldCIsImNyb3AiLCJjdWUiLCJjdWUtYWZ0ZXIiLCJjdWUtYmVmb3JlIiwiY3Vyc29yIiwiZGlyZWN0aW9uIiwiZGlzcGxheSIsImRvbWluYW50LWJhc2VsaW5lIiwiZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdCIsImRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbiIsImRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0IiwiZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbiIsImRyb3AtaW5pdGlhbC1zaXplIiwiZHJvcC1pbml0aWFsLXZhbHVlIiwiZWxldmF0aW9uIiwiZW1wdHktY2VsbHMiLCJmaXQiLCJmaXQtcG9zaXRpb24iLCJmbGV4IiwiZmxleC1iYXNpcyIsImZsZXgtZGlyZWN0aW9uIiwiZmxleC1mbG93IiwiZmxleC1ncm93IiwiZmxleC1zaHJpbmsiLCJmbGV4LXdyYXAiLCJmbG9hdCIsImZsb2F0LW9mZnNldCIsImZsb3ctZnJvbSIsImZsb3ctaW50byIsImZvbnQiLCJmb250LWZlYXR1cmUtc2V0dGluZ3MiLCJmb250LWZhbWlseSIsImZvbnQta2VybmluZyIsImZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUiLCJmb250LXNpemUiLCJmb250LXNpemUtYWRqdXN0IiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtc3ludGhlc2lzIiwiZm9udC12YXJpYW50IiwiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiLCJmb250LXZhcmlhbnQtY2FwcyIsImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIiwiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIsImZvbnQtdmFyaWFudC1udW1lcmljIiwiZm9udC12YXJpYW50LXBvc2l0aW9uIiwiZm9udC13ZWlnaHQiLCJncmlkIiwiZ3JpZC1hcmVhIiwiZ3JpZC1hdXRvLWNvbHVtbnMiLCJncmlkLWF1dG8tZmxvdyIsImdyaWQtYXV0by1wb3NpdGlvbiIsImdyaWQtYXV0by1yb3dzIiwiZ3JpZC1jb2x1bW4iLCJncmlkLWNvbHVtbi1lbmQiLCJncmlkLWNvbHVtbi1zdGFydCIsImdyaWQtcm93IiwiZ3JpZC1yb3ctZW5kIiwiZ3JpZC1yb3ctc3RhcnQiLCJncmlkLXRlbXBsYXRlIiwiZ3JpZC10ZW1wbGF0ZS1hcmVhcyIsImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsImdyaWQtdGVtcGxhdGUtcm93cyIsImhhbmdpbmctcHVuY3R1YXRpb24iLCJoZWlnaHQiLCJoeXBoZW5zIiwiaWNvbiIsImltYWdlLW9yaWVudGF0aW9uIiwiaW1hZ2UtcmVuZGVyaW5nIiwiaW1hZ2UtcmVzb2x1dGlvbiIsImlubGluZS1ib3gtYWxpZ24iLCJqdXN0aWZ5LWNvbnRlbnQiLCJsZWZ0IiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWJyZWFrIiwibGluZS1oZWlnaHQiLCJsaW5lLXN0YWNraW5nIiwibGluZS1zdGFja2luZy1ydWJ5IiwibGluZS1zdGFja2luZy1zaGlmdCIsImxpbmUtc3RhY2tpbmctc3RyYXRlZ3kiLCJsaXN0LXN0eWxlIiwibGlzdC1zdHlsZS1pbWFnZSIsImxpc3Qtc3R5bGUtcG9zaXRpb24iLCJsaXN0LXN0eWxlLXR5cGUiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibWFya2VyLW9mZnNldCIsIm1hcmtzIiwibWFycXVlZS1kaXJlY3Rpb24iLCJtYXJxdWVlLWxvb3AiLCJtYXJxdWVlLXBsYXktY291bnQiLCJtYXJxdWVlLXNwZWVkIiwibWFycXVlZS1zdHlsZSIsIm1heC1oZWlnaHQiLCJtYXgtd2lkdGgiLCJtaW4taGVpZ2h0IiwibWluLXdpZHRoIiwibW92ZS10byIsIm5hdi1kb3duIiwibmF2LWluZGV4IiwibmF2LWxlZnQiLCJuYXYtcmlnaHQiLCJuYXYtdXAiLCJvYmplY3QtZml0Iiwib2JqZWN0LXBvc2l0aW9uIiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsIm91dGxpbmUiLCJvdXRsaW5lLWNvbG9yIiwib3V0bGluZS1vZmZzZXQiLCJvdXRsaW5lLXN0eWxlIiwib3V0bGluZS13aWR0aCIsIm92ZXJmbG93Iiwib3ZlcmZsb3ctc3R5bGUiLCJvdmVyZmxvdy13cmFwIiwib3ZlcmZsb3cteCIsIm92ZXJmbG93LXkiLCJwYWRkaW5nIiwicGFkZGluZy1ib3R0b20iLCJwYWRkaW5nLWxlZnQiLCJwYWRkaW5nLXJpZ2h0IiwicGFkZGluZy10b3AiLCJwYWdlIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJwYWdlLXBvbGljeSIsInBhdXNlIiwicGF1c2UtYWZ0ZXIiLCJwYXVzZS1iZWZvcmUiLCJwZXJzcGVjdGl2ZSIsInBlcnNwZWN0aXZlLW9yaWdpbiIsInBpdGNoIiwicGl0Y2gtcmFuZ2UiLCJwbGF5LWR1cmluZyIsInBvc2l0aW9uIiwicHJlc2VudGF0aW9uLWxldmVsIiwicHVuY3R1YXRpb24tdHJpbSIsInF1b3RlcyIsInJlZ2lvbi1icmVhay1hZnRlciIsInJlZ2lvbi1icmVhay1iZWZvcmUiLCJyZWdpb24tYnJlYWstaW5zaWRlIiwicmVnaW9uLWZyYWdtZW50IiwicmVuZGVyaW5nLWludGVudCIsInJlc2l6ZSIsInJlc3QiLCJyZXN0LWFmdGVyIiwicmVzdC1iZWZvcmUiLCJyaWNobmVzcyIsInJpZ2h0Iiwicm90YXRpb24iLCJyb3RhdGlvbi1wb2ludCIsInJ1YnktYWxpZ24iLCJydWJ5LW92ZXJoYW5nIiwicnVieS1wb3NpdGlvbiIsInJ1Ynktc3BhbiIsInNoYXBlLWltYWdlLXRocmVzaG9sZCIsInNoYXBlLWluc2lkZSIsInNoYXBlLW1hcmdpbiIsInNoYXBlLW91dHNpZGUiLCJzaXplIiwic3BlYWsiLCJzcGVhay1hcyIsInNwZWFrLWhlYWRlciIsInNwZWFrLW51bWVyYWwiLCJzcGVhay1wdW5jdHVhdGlvbiIsInNwZWVjaC1yYXRlIiwic3RyZXNzIiwic3RyaW5nLXNldCIsInRhYi1zaXplIiwidGFibGUtbGF5b3V0IiwidGFyZ2V0IiwidGFyZ2V0LW5hbWUiLCJ0YXJnZXQtbmV3IiwidGFyZ2V0LXBvc2l0aW9uIiwidGV4dC1hbGlnbiIsInRleHQtYWxpZ24tbGFzdCIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtZGVjb3JhdGlvbi1jb2xvciIsInRleHQtZGVjb3JhdGlvbi1saW5lIiwidGV4dC1kZWNvcmF0aW9uLXNraXAiLCJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiLCJ0ZXh0LWVtcGhhc2lzIiwidGV4dC1lbXBoYXNpcy1jb2xvciIsInRleHQtZW1waGFzaXMtcG9zaXRpb24iLCJ0ZXh0LWVtcGhhc2lzLXN0eWxlIiwidGV4dC1oZWlnaHQiLCJ0ZXh0LWluZGVudCIsInRleHQtanVzdGlmeSIsInRleHQtb3V0bGluZSIsInRleHQtb3ZlcmZsb3ciLCJ0ZXh0LXNoYWRvdyIsInRleHQtc2l6ZS1hZGp1c3QiLCJ0ZXh0LXNwYWNlLWNvbGxhcHNlIiwidGV4dC10cmFuc2Zvcm0iLCJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIsInRleHQtd3JhcCIsInRvcCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0cmFuc2Zvcm0tc3R5bGUiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbi1kZWxheSIsInRyYW5zaXRpb24tZHVyYXRpb24iLCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLCJ1bmljb2RlLWJpZGkiLCJ2ZXJ0aWNhbC1hbGlnbiIsInZpc2liaWxpdHkiLCJ2b2ljZS1iYWxhbmNlIiwidm9pY2UtZHVyYXRpb24iLCJ2b2ljZS1mYW1pbHkiLCJ2b2ljZS1waXRjaCIsInZvaWNlLXJhbmdlIiwidm9pY2UtcmF0ZSIsInZvaWNlLXN0cmVzcyIsInZvaWNlLXZvbHVtZSIsInZvbHVtZSIsIndoaXRlLXNwYWNlIiwid2lkb3dzIiwid2lkdGgiLCJ3b3JkLWJyZWFrIiwid29yZC1zcGFjaW5nIiwid29yZC13cmFwIiwiei1pbmRleCIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsIm1hc2siLCJlbmFibGUtYmFja2dyb3VuZCIsImZpbHRlciIsImZsb29kLWNvbG9yIiwiZmxvb2Qtb3BhY2l0eSIsImxpZ2h0aW5nLWNvbG9yIiwic3RvcC1jb2xvciIsInN0b3Atb3BhY2l0eSIsInBvaW50ZXItZXZlbnRzIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsImNvbG9yLXJlbmRlcmluZyIsImZpbGwiLCJmaWxsLW9wYWNpdHkiLCJmaWxsLXJ1bGUiLCJpbWFnZS1yZW5kZXJpbmciLCJtYXJrZXIiLCJtYXJrZXItZW5kIiwibWFya2VyLW1pZCIsIm1hcmtlci1zdGFydCIsInNoYXBlLXJlbmRlcmluZyIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1saW5lY2FwIiwic3Ryb2tlLWxpbmVqb2luIiwic3Ryb2tlLW1pdGVybGltaXQiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInRleHQtcmVuZGVyaW5nIiwiYmFzZWxpbmUtc2hpZnQiLCJkb21pbmFudC1iYXNlbGluZSIsImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsInRleHQtYW5jaG9yIiwid3JpdGluZy1tb2RlIl0sdT10KG8pO3ZhciBhPVsic2Nyb2xsYmFyLWFycm93LWNvbG9yIiwic2Nyb2xsYmFyLWJhc2UtY29sb3IiLCJzY3JvbGxiYXItZGFyay1zaGFkb3ctY29sb3IiLCJzY3JvbGxiYXItZmFjZS1jb2xvciIsInNjcm9sbGJhci1oaWdobGlnaHQtY29sb3IiLCJzY3JvbGxiYXItc2hhZG93LWNvbG9yIiwic2Nyb2xsYmFyLTNkLWxpZ2h0LWNvbG9yIiwic2Nyb2xsYmFyLXRyYWNrLWNvbG9yIiwic2hhcGUtaW5zaWRlIiwic2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiIsInNlYXJjaGZpZWxkLWRlY29yYXRpb24iLCJzZWFyY2hmaWVsZC1yZXN1bHRzLWJ1dHRvbiIsInNlYXJjaGZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiIsInpvb20iXSxhPXQoYSk7dmFyIGY9WyJhbGljZWJsdWUiLCJhbnRpcXVld2hpdGUiLCJhcXVhIiwiYXF1YW1hcmluZSIsImF6dXJlIiwiYmVpZ2UiLCJiaXNxdWUiLCJibGFjayIsImJsYW5jaGVkYWxtb25kIiwiYmx1ZSIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImNhZGV0Ymx1ZSIsImNoYXJ0cmV1c2UiLCJjaG9jb2xhdGUiLCJjb3JhbCIsImNvcm5mbG93ZXJibHVlIiwiY29ybnNpbGsiLCJjcmltc29uIiwiY3lhbiIsImRhcmtibHVlIiwiZGFya2N5YW4iLCJkYXJrZ29sZGVucm9kIiwiZGFya2dyYXkiLCJkYXJrZ3JlZW4iLCJkYXJra2hha2kiLCJkYXJrbWFnZW50YSIsImRhcmtvbGl2ZWdyZWVuIiwiZGFya29yYW5nZSIsImRhcmtvcmNoaWQiLCJkYXJrcmVkIiwiZGFya3NhbG1vbiIsImRhcmtzZWFncmVlbiIsImRhcmtzbGF0ZWJsdWUiLCJkYXJrc2xhdGVncmF5IiwiZGFya3R1cnF1b2lzZSIsImRhcmt2aW9sZXQiLCJkZWVwcGluayIsImRlZXBza3libHVlIiwiZGltZ3JheSIsImRvZGdlcmJsdWUiLCJmaXJlYnJpY2siLCJmbG9yYWx3aGl0ZSIsImZvcmVzdGdyZWVuIiwiZnVjaHNpYSIsImdhaW5zYm9ybyIsImdob3N0d2hpdGUiLCJnb2xkIiwiZ29sZGVucm9kIiwiZ3JheSIsImdyZXkiLCJncmVlbiIsImdyZWVueWVsbG93IiwiaG9uZXlkZXciLCJob3RwaW5rIiwiaW5kaWFucmVkIiwiaW5kaWdvIiwiaXZvcnkiLCJraGFraSIsImxhdmVuZGVyIiwibGF2ZW5kZXJibHVzaCIsImxhd25ncmVlbiIsImxlbW9uY2hpZmZvbiIsImxpZ2h0Ymx1ZSIsImxpZ2h0Y29yYWwiLCJsaWdodGN5YW4iLCJsaWdodGdvbGRlbnJvZHllbGxvdyIsImxpZ2h0Z3JheSIsImxpZ2h0Z3JlZW4iLCJsaWdodHBpbmsiLCJsaWdodHNhbG1vbiIsImxpZ2h0c2VhZ3JlZW4iLCJsaWdodHNreWJsdWUiLCJsaWdodHNsYXRlZ3JheSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lIiwibGltZWdyZWVuIiwibGluZW4iLCJtYWdlbnRhIiwibWFyb29uIiwibWVkaXVtYXF1YW1hcmluZSIsIm1lZGl1bWJsdWUiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJtZWRpdW1zZWFncmVlbiIsIm1lZGl1bXNsYXRlYmx1ZSIsIm1lZGl1bXNwcmluZ2dyZWVuIiwibWVkaXVtdHVycXVvaXNlIiwibWVkaXVtdmlvbGV0cmVkIiwibWlkbmlnaHRibHVlIiwibWludGNyZWFtIiwibWlzdHlyb3NlIiwibW9jY2FzaW4iLCJuYXZham93aGl0ZSIsIm5hdnkiLCJvbGRsYWNlIiwib2xpdmUiLCJvbGl2ZWRyYWIiLCJvcmFuZ2UiLCJvcmFuZ2VyZWQiLCJvcmNoaWQiLCJwYWxlZ29sZGVucm9kIiwicGFsZWdyZWVuIiwicGFsZXR1cnF1b2lzZSIsInBhbGV2aW9sZXRyZWQiLCJwYXBheWF3aGlwIiwicGVhY2hwdWZmIiwicGVydSIsInBpbmsiLCJwbHVtIiwicG93ZGVyYmx1ZSIsInB1cnBsZSIsInJlZCIsInJvc3licm93biIsInJveWFsYmx1ZSIsInNhZGRsZWJyb3duIiwic2FsbW9uIiwic2FuZHlicm93biIsInNlYWdyZWVuIiwic2Vhc2hlbGwiLCJzaWVubmEiLCJzaWx2ZXIiLCJza3libHVlIiwic2xhdGVibHVlIiwic2xhdGVncmF5Iiwic25vdyIsInNwcmluZ2dyZWVuIiwic3RlZWxibHVlIiwidGFuIiwidGVhbCIsInRoaXN0bGUiLCJ0b21hdG8iLCJ0dXJxdW9pc2UiLCJ2aW9sZXQiLCJ3aGVhdCIsIndoaXRlIiwid2hpdGVzbW9rZSIsInllbGxvdyIsInllbGxvd2dyZWVuIl0sbD10KGYpO3ZhciBjPVsiYWJvdmUiLCJhYnNvbHV0ZSIsImFjdGl2ZWJvcmRlciIsImFjdGl2ZWNhcHRpb24iLCJhZmFyIiwiYWZ0ZXItd2hpdGUtc3BhY2UiLCJhaGVhZCIsImFsaWFzIiwiYWxsIiwiYWxsLXNjcm9sbCIsImFsdGVybmF0ZSIsImFsd2F5cyIsImFtaGFyaWMiLCJhbWhhcmljLWFiZWdlZGUiLCJhbnRpYWxpYXNlZCIsImFwcHdvcmtzcGFjZSIsImFyYWJpYy1pbmRpYyIsImFybWVuaWFuIiwiYXN0ZXJpc2tzIiwiYXV0byIsImF2b2lkIiwiYXZvaWQtY29sdW1uIiwiYXZvaWQtcGFnZSIsImF2b2lkLXJlZ2lvbiIsImJhY2tncm91bmQiLCJiYWNrd2FyZHMiLCJiYXNlbGluZSIsImJlbG93IiwiYmlkaS1vdmVycmlkZSIsImJpbmFyeSIsImJlbmdhbGkiLCJibGluayIsImJsb2NrIiwiYmxvY2stYXhpcyIsImJvbGQiLCJib2xkZXIiLCJib3JkZXIiLCJib3JkZXItYm94IiwiYm90aCIsImJvdHRvbSIsImJyZWFrIiwiYnJlYWstYWxsIiwiYnJlYWstd29yZCIsImJ1dHRvbiIsImJ1dHRvbi1iZXZlbCIsImJ1dHRvbmZhY2UiLCJidXR0b25oaWdobGlnaHQiLCJidXR0b25zaGFkb3ciLCJidXR0b250ZXh0IiwiY2FtYm9kaWFuIiwiY2FwaXRhbGl6ZSIsImNhcHMtbG9jay1pbmRpY2F0b3IiLCJjYXB0aW9uIiwiY2FwdGlvbnRleHQiLCJjYXJldCIsImNlbGwiLCJjZW50ZXIiLCJjaGVja2JveCIsImNpcmNsZSIsImNqay1lYXJ0aGx5LWJyYW5jaCIsImNqay1oZWF2ZW5seS1zdGVtIiwiY2prLWlkZW9ncmFwaGljIiwiY2xlYXIiLCJjbGlwIiwiY2xvc2UtcXVvdGUiLCJjb2wtcmVzaXplIiwiY29sbGFwc2UiLCJjb2x1bW4iLCJjb21wYWN0IiwiY29uZGVuc2VkIiwiY29udGFpbiIsImNvbnRlbnQiLCJjb250ZW50LWJveCIsImNvbnRleHQtbWVudSIsImNvbnRpbnVvdXMiLCJjb3B5IiwiY292ZXIiLCJjcm9wIiwiY3Jvc3MiLCJjcm9zc2hhaXIiLCJjdXJyZW50Y29sb3IiLCJjdXJzaXZlIiwiZGFzaGVkIiwiZGVjaW1hbCIsImRlY2ltYWwtbGVhZGluZy16ZXJvIiwiZGVmYXVsdCIsImRlZmF1bHQtYnV0dG9uIiwiZGVzdGluYXRpb24tYXRvcCIsImRlc3RpbmF0aW9uLWluIiwiZGVzdGluYXRpb24tb3V0IiwiZGVzdGluYXRpb24tb3ZlciIsImRldmFuYWdhcmkiLCJkaXNjIiwiZGlzY2FyZCIsImRvY3VtZW50IiwiZG90LWRhc2giLCJkb3QtZG90LWRhc2giLCJkb3R0ZWQiLCJkb3VibGUiLCJkb3duIiwiZS1yZXNpemUiLCJlYXNlIiwiZWFzZS1pbiIsImVhc2UtaW4tb3V0IiwiZWFzZS1vdXQiLCJlbGVtZW50IiwiZWxsaXBzZSIsImVsbGlwc2lzIiwiZW1iZWQiLCJlbmQiLCJldGhpb3BpYyIsImV0aGlvcGljLWFiZWdlZGUiLCJldGhpb3BpYy1hYmVnZWRlLWFtLWV0IiwiZXRoaW9waWMtYWJlZ2VkZS1nZXoiLCJldGhpb3BpYy1hYmVnZWRlLXRpLWVyIiwiZXRoaW9waWMtYWJlZ2VkZS10aS1ldCIsImV0aGlvcGljLWhhbGVoYW1lLWFhLWVyIiwiZXRoaW9waWMtaGFsZWhhbWUtYWEtZXQiLCJldGhpb3BpYy1oYWxlaGFtZS1hbS1ldCIsImV0aGlvcGljLWhhbGVoYW1lLWdleiIsImV0aGlvcGljLWhhbGVoYW1lLW9tLWV0IiwiZXRoaW9waWMtaGFsZWhhbWUtc2lkLWV0IiwiZXRoaW9waWMtaGFsZWhhbWUtc28tZXQiLCJldGhpb3BpYy1oYWxlaGFtZS10aS1lciIsImV0aGlvcGljLWhhbGVoYW1lLXRpLWV0IiwiZXRoaW9waWMtaGFsZWhhbWUtdGlnIiwiZXctcmVzaXplIiwiZXhwYW5kZWQiLCJleHRyYS1jb25kZW5zZWQiLCJleHRyYS1leHBhbmRlZCIsImZhbnRhc3kiLCJmYXN0IiwiZmlsbCIsImZpeGVkIiwiZmxhdCIsImZvb3Rub3RlcyIsImZvcndhcmRzIiwiZnJvbSIsImdlb21ldHJpY1ByZWNpc2lvbiIsImdlb3JnaWFuIiwiZ3JheXRleHQiLCJncm9vdmUiLCJndWphcmF0aSIsImd1cm11a2hpIiwiaGFuZCIsImhhbmd1bCIsImhhbmd1bC1jb25zb25hbnQiLCJoZWJyZXciLCJoZWxwIiwiaGlkZGVuIiwiaGlkZSIsImhpZ2hlciIsImhpZ2hsaWdodCIsImhpZ2hsaWdodHRleHQiLCJoaXJhZ2FuYSIsImhpcmFnYW5hLWlyb2hhIiwiaG9yaXpvbnRhbCIsImhzbCIsImhzbGEiLCJpY29uIiwiaWdub3JlIiwiaW5hY3RpdmVib3JkZXIiLCJpbmFjdGl2ZWNhcHRpb24iLCJpbmFjdGl2ZWNhcHRpb250ZXh0IiwiaW5maW5pdGUiLCJpbmZvYmFja2dyb3VuZCIsImluZm90ZXh0IiwiaW5oZXJpdCIsImluaXRpYWwiLCJpbmxpbmUiLCJpbmxpbmUtYXhpcyIsImlubGluZS1ibG9jayIsImlubGluZS10YWJsZSIsImluc2V0IiwiaW5zaWRlIiwiaW50cmluc2ljIiwiaW52ZXJ0IiwiaXRhbGljIiwianVzdGlmeSIsImthbm5hZGEiLCJrYXRha2FuYSIsImthdGFrYW5hLWlyb2hhIiwia2VlcC1hbGwiLCJraG1lciIsImxhbmRzY2FwZSIsImxhbyIsImxhcmdlIiwibGFyZ2VyIiwibGVmdCIsImxldmVsIiwibGlnaHRlciIsImxpbmUtdGhyb3VnaCIsImxpbmVhciIsImxpbmVzIiwibGlzdC1pdGVtIiwibGlzdGJveCIsImxpc3RpdGVtIiwibG9jYWwiLCJsb2dpY2FsIiwibG91ZCIsImxvd2VyIiwibG93ZXItYWxwaGEiLCJsb3dlci1hcm1lbmlhbiIsImxvd2VyLWdyZWVrIiwibG93ZXItaGV4YWRlY2ltYWwiLCJsb3dlci1sYXRpbiIsImxvd2VyLW5vcndlZ2lhbiIsImxvd2VyLXJvbWFuIiwibG93ZXJjYXNlIiwibHRyIiwibWFsYXlhbGFtIiwibWF0Y2giLCJtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kIiwibWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXkiLCJtZWRpYS1mdWxsc2NyZWVuLWJ1dHRvbiIsIm1lZGlhLW11dGUtYnV0dG9uIiwibWVkaWEtcGxheS1idXR0b24iLCJtZWRpYS1yZXR1cm4tdG8tcmVhbHRpbWUtYnV0dG9uIiwibWVkaWEtcmV3aW5kLWJ1dHRvbiIsIm1lZGlhLXNlZWstYmFjay1idXR0b24iLCJtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIiwibWVkaWEtc2xpZGVyIiwibWVkaWEtc2xpZGVydGh1bWIiLCJtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwibWVkaWEtdm9sdW1lLXNsaWRlciIsIm1lZGlhLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIiwibWVkaWEtdm9sdW1lLXNsaWRlcnRodW1iIiwibWVkaXVtIiwibWVudSIsIm1lbnVsaXN0IiwibWVudWxpc3QtYnV0dG9uIiwibWVudWxpc3QtdGV4dCIsIm1lbnVsaXN0LXRleHRmaWVsZCIsIm1lbnV0ZXh0IiwibWVzc2FnZS1ib3giLCJtaWRkbGUiLCJtaW4taW50cmluc2ljIiwibWl4IiwibW9uZ29saWFuIiwibW9ub3NwYWNlIiwibW92ZSIsIm11bHRpcGxlIiwibXlhbm1hciIsIm4tcmVzaXplIiwibmFycm93ZXIiLCJuZS1yZXNpemUiLCJuZXN3LXJlc2l6ZSIsIm5vLWNsb3NlLXF1b3RlIiwibm8tZHJvcCIsIm5vLW9wZW4tcXVvdGUiLCJuby1yZXBlYXQiLCJub25lIiwibm9ybWFsIiwibm90LWFsbG93ZWQiLCJub3dyYXAiLCJucy1yZXNpemUiLCJudy1yZXNpemUiLCJud3NlLXJlc2l6ZSIsIm9ibGlxdWUiLCJvY3RhbCIsIm9wZW4tcXVvdGUiLCJvcHRpbWl6ZUxlZ2liaWxpdHkiLCJvcHRpbWl6ZVNwZWVkIiwib3JpeWEiLCJvcm9tbyIsIm91dHNldCIsIm91dHNpZGUiLCJvdXRzaWRlLXNoYXBlIiwib3ZlcmxheSIsIm92ZXJsaW5lIiwicGFkZGluZyIsInBhZGRpbmctYm94IiwicGFpbnRlZCIsInBhZ2UiLCJwYXVzZWQiLCJwZXJzaWFuIiwicGx1cy1kYXJrZXIiLCJwbHVzLWxpZ2h0ZXIiLCJwb2ludGVyIiwicG9seWdvbiIsInBvcnRyYWl0IiwicHJlIiwicHJlLWxpbmUiLCJwcmUtd3JhcCIsInByZXNlcnZlLTNkIiwicHJvZ3Jlc3MiLCJwdXNoLWJ1dHRvbiIsInJhZGlvIiwicmVhZC1vbmx5IiwicmVhZC13cml0ZSIsInJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHkiLCJyZWN0YW5nbGUiLCJyZWdpb24iLCJyZWxhdGl2ZSIsInJlcGVhdCIsInJlcGVhdC14IiwicmVwZWF0LXkiLCJyZXNldCIsInJldmVyc2UiLCJyZ2IiLCJyZ2JhIiwicmlkZ2UiLCJyaWdodCIsInJvdW5kIiwicm93LXJlc2l6ZSIsInJ0bCIsInJ1bi1pbiIsInJ1bm5pbmciLCJzLXJlc2l6ZSIsInNhbnMtc2VyaWYiLCJzY3JvbGwiLCJzY3JvbGxiYXIiLCJzZS1yZXNpemUiLCJzZWFyY2hmaWVsZCIsInNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24iLCJzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIiwic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24iLCJzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24iLCJzZW1pLWNvbmRlbnNlZCIsInNlbWktZXhwYW5kZWQiLCJzZXBhcmF0ZSIsInNlcmlmIiwic2hvdyIsInNpZGFtYSIsInNpbmdsZSIsInNraXAtd2hpdGUtc3BhY2UiLCJzbGlkZSIsInNsaWRlci1ob3Jpem9udGFsIiwic2xpZGVyLXZlcnRpY2FsIiwic2xpZGVydGh1bWItaG9yaXpvbnRhbCIsInNsaWRlcnRodW1iLXZlcnRpY2FsIiwic2xvdyIsInNtYWxsIiwic21hbGwtY2FwcyIsInNtYWxsLWNhcHRpb24iLCJzbWFsbGVyIiwic29saWQiLCJzb21hbGkiLCJzb3VyY2UtYXRvcCIsInNvdXJjZS1pbiIsInNvdXJjZS1vdXQiLCJzb3VyY2Utb3ZlciIsInNwYWNlIiwic3F1YXJlIiwic3F1YXJlLWJ1dHRvbiIsInN0YXJ0Iiwic3RhdGljIiwic3RhdHVzLWJhciIsInN0cmV0Y2giLCJzdHJva2UiLCJzdWIiLCJzdWJwaXhlbC1hbnRpYWxpYXNlZCIsInN1cGVyIiwic3ctcmVzaXplIiwidGFibGUiLCJ0YWJsZS1jYXB0aW9uIiwidGFibGUtY2VsbCIsInRhYmxlLWNvbHVtbiIsInRhYmxlLWNvbHVtbi1ncm91cCIsInRhYmxlLWZvb3Rlci1ncm91cCIsInRhYmxlLWhlYWRlci1ncm91cCIsInRhYmxlLXJvdyIsInRhYmxlLXJvdy1ncm91cCIsInRlbHVndSIsInRleHQiLCJ0ZXh0LWJvdHRvbSIsInRleHQtdG9wIiwidGV4dGFyZWEiLCJ0ZXh0ZmllbGQiLCJ0aGFpIiwidGhpY2siLCJ0aGluIiwidGhyZWVkZGFya3NoYWRvdyIsInRocmVlZGZhY2UiLCJ0aHJlZWRoaWdobGlnaHQiLCJ0aHJlZWRsaWdodHNoYWRvdyIsInRocmVlZHNoYWRvdyIsInRpYmV0YW4iLCJ0aWdyZSIsInRpZ3JpbnlhLWVyIiwidGlncmlueWEtZXItYWJlZ2VkZSIsInRpZ3JpbnlhLWV0IiwidGlncmlueWEtZXQtYWJlZ2VkZSIsInRvIiwidG9wIiwidHJhbnNwYXJlbnQiLCJ1bHRyYS1jb25kZW5zZWQiLCJ1bHRyYS1leHBhbmRlZCIsInVuZGVybGluZSIsInVwIiwidXBwZXItYWxwaGEiLCJ1cHBlci1hcm1lbmlhbiIsInVwcGVyLWdyZWVrIiwidXBwZXItaGV4YWRlY2ltYWwiLCJ1cHBlci1sYXRpbiIsInVwcGVyLW5vcndlZ2lhbiIsInVwcGVyLXJvbWFuIiwidXBwZXJjYXNlIiwidXJkdSIsInVybCIsInZlcnRpY2FsIiwidmVydGljYWwtdGV4dCIsInZpc2libGUiLCJ2aXNpYmxlRmlsbCIsInZpc2libGVQYWludGVkIiwidmlzaWJsZVN0cm9rZSIsInZpc3VhbCIsInctcmVzaXplIiwid2FpdCIsIndhdmUiLCJ3aWRlciIsIndpbmRvdyIsIndpbmRvd2ZyYW1lIiwid2luZG93dGV4dCIsIngtbGFyZ2UiLCJ4LXNtYWxsIiwieG9yIiwieHgtbGFyZ2UiLCJ4eC1zbWFsbCJdLGg9dChjKTt2YXIgcD1bImZvbnQtZmFtaWx5Iiwic3JjIiwidW5pY29kZS1yYW5nZSIsImZvbnQtdmFyaWFudCIsImZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsImZvbnQtc3RyZXRjaCIsImZvbnQtd2VpZ2h0IiwiZm9udC1zdHlsZSJdLGQ9dChwKTt2YXIgdj1uLmNvbmNhdChpKS5jb25jYXQobykuY29uY2F0KGEpLmNvbmNhdChmKS5jb25jYXQoYyk7ZS5yZWdpc3RlckhlbHBlcigiaGludFdvcmRzIiwiY3NzIix2KTtlLmRlZmluZU1JTUUoInRleHQvY3NzIix7bWVkaWFUeXBlczpyLG1lZGlhRmVhdHVyZXM6cyxwcm9wZXJ0eUtleXdvcmRzOnUsbm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzOmEsY29sb3JLZXl3b3JkczpsLHZhbHVlS2V5d29yZHM6aCxmb250UHJvcGVydGllczpkLHRva2VuSG9va3M6eyI8IjpmdW5jdGlvbihlLHQpe2lmKCFlLm1hdGNoKCIhLS0iKSlyZXR1cm4gZmFsc2U7dC50b2tlbml6ZT1nO3JldHVybiBnKGUsdCl9LCIvIjpmdW5jdGlvbihlLHQpe2lmKCFlLmVhdCgiKiIpKXJldHVybiBmYWxzZTt0LnRva2VuaXplPW07cmV0dXJuIG0oZSx0KX19LG5hbWU6ImNzcyJ9KTtlLmRlZmluZU1JTUUoInRleHQveC1zY3NzIix7bWVkaWFUeXBlczpyLG1lZGlhRmVhdHVyZXM6cyxwcm9wZXJ0eUtleXdvcmRzOnUsbm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzOmEsY29sb3JLZXl3b3JkczpsLHZhbHVlS2V5d29yZHM6aCxmb250UHJvcGVydGllczpkLGFsbG93TmVzdGVkOnRydWUsdG9rZW5Ib29rczp7Ii8iOmZ1bmN0aW9uKGUsdCl7aWYoZS5lYXQoIi8iKSl7ZS5za2lwVG9FbmQoKTtyZXR1cm5bImNvbW1lbnQiLCJjb21tZW50Il19ZWxzZSBpZihlLmVhdCgiKiIpKXt0LnRva2VuaXplPW07cmV0dXJuIG0oZSx0KX1lbHNle3JldHVyblsib3BlcmF0b3IiLCJvcGVyYXRvciJdfX0sIjoiOmZ1bmN0aW9uKGUpe2lmKGUubWF0Y2goL1xzKnsvKSlyZXR1cm5bbnVsbCwieyJdO3JldHVybiBmYWxzZX0sJDpmdW5jdGlvbihlKXtlLm1hdGNoKC9eW1x3LV0rLyk7aWYoZS5tYXRjaCgvXlxzKjovLGZhbHNlKSlyZXR1cm5bInZhcmlhYmxlLTIiLCJ2YXJpYWJsZS1kZWZpbml0aW9uIl07cmV0dXJuWyJ2YXJpYWJsZS0yIiwidmFyaWFibGUiXX0sIiMiOmZ1bmN0aW9uKGUpe2lmKCFlLmVhdCgieyIpKXJldHVybiBmYWxzZTtyZXR1cm5bbnVsbCwiaW50ZXJwb2xhdGlvbiJdfX0sbmFtZToiY3NzIixoZWxwZXJUeXBlOiJzY3NzIn0pO2UuZGVmaW5lTUlNRSgidGV4dC94LWxlc3MiLHttZWRpYVR5cGVzOnIsbWVkaWFGZWF0dXJlczpzLHByb3BlcnR5S2V5d29yZHM6dSxub25TdGFuZGFyZFByb3BlcnR5S2V5d29yZHM6YSxjb2xvcktleXdvcmRzOmwsdmFsdWVLZXl3b3JkczpoLGZvbnRQcm9wZXJ0aWVzOmQsYWxsb3dOZXN0ZWQ6dHJ1ZSx0b2tlbkhvb2tzOnsiLyI6ZnVuY3Rpb24oZSx0KXtpZihlLmVhdCgiLyIpKXtlLnNraXBUb0VuZCgpO3JldHVyblsiY29tbWVudCIsImNvbW1lbnQiXX1lbHNlIGlmKGUuZWF0KCIqIikpe3QudG9rZW5pemU9bTtyZXR1cm4gbShlLHQpfWVsc2V7cmV0dXJuWyJvcGVyYXRvciIsIm9wZXJhdG9yIl19fSwiQCI6ZnVuY3Rpb24oZSl7aWYoZS5tYXRjaCgvXihjaGFyc2V0fGRvY3VtZW50fGZvbnQtZmFjZXxpbXBvcnR8KC0obW96fG1zfG98d2Via2l0KS0pP2tleWZyYW1lc3xtZWRpYXxuYW1lc3BhY2V8cGFnZXxzdXBwb3J0cylcYi8sZmFsc2UpKXJldHVybiBmYWxzZTtlLmVhdFdoaWxlKC9bXHdcXFwtXS8pO2lmKGUubWF0Y2goL15ccyo6LyxmYWxzZSkpcmV0dXJuWyJ2YXJpYWJsZS0yIiwidmFyaWFibGUtZGVmaW5pdGlvbiJdO3JldHVyblsidmFyaWFibGUtMiIsInZhcmlhYmxlIl19LCImIjpmdW5jdGlvbigpe3JldHVyblsiYXRvbSIsImF0b20iXX19LG5hbWU6ImNzcyIsaGVscGVyVHlwZToibGVzcyJ9KX0pOwoKLy8gWE1MIGZvciBDb2RlbWlycm9yCihmdW5jdGlvbihlKXtpZih0eXBlb2YgZXhwb3J0cz09Im9iamVjdCImJnR5cGVvZiBtb2R1bGU9PSJvYmplY3QiKWUocmVxdWlyZSgiLi4vLi4vbGliL2NvZGVtaXJyb3IiKSk7ZWxzZSBpZih0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKWRlZmluZShbIi4uLy4uL2xpYi9jb2RlbWlycm9yIl0sZSk7ZWxzZSBlKENvZGVNaXJyb3IpfSkoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2UuZGVmaW5lTW9kZSgieG1sIixmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGwoZSx0KXtmdW5jdGlvbiBuKG4pe3QudG9rZW5pemU9bjtyZXR1cm4gbihlLHQpfXZhciByPWUubmV4dCgpO2lmKHI9PSI8Iil7aWYoZS5lYXQoIiEiKSl7aWYoZS5lYXQoIlsiKSl7aWYoZS5tYXRjaCgiQ0RBVEFbIikpcmV0dXJuIG4ocCgiYXRvbSIsIl1dPiIpKTtlbHNlIHJldHVybiBudWxsfWVsc2UgaWYoZS5tYXRjaCgiLS0iKSl7cmV0dXJuIG4ocCgiY29tbWVudCIsIi0tPiIpKX1lbHNlIGlmKGUubWF0Y2goIkRPQ1RZUEUiLHRydWUsdHJ1ZSkpe2UuZWF0V2hpbGUoL1tcd1wuX1wtXS8pO3JldHVybiBuKGQoMSkpfWVsc2V7cmV0dXJuIG51bGx9fWVsc2UgaWYoZS5lYXQoIj8iKSl7ZS5lYXRXaGlsZSgvW1x3XC5fXC1dLyk7dC50b2tlbml6ZT1wKCJtZXRhIiwiPz4iKTtyZXR1cm4ibWV0YSJ9ZWxzZXthPWUuZWF0KCIvIik/ImNsb3NlVGFnIjoib3BlblRhZyI7dC50b2tlbml6ZT1jO3JldHVybiJ0YWcgYnJhY2tldCJ9fWVsc2UgaWYocj09IiYiKXt2YXIgaTtpZihlLmVhdCgiIyIpKXtpZihlLmVhdCgieCIpKXtpPWUuZWF0V2hpbGUoL1thLWZBLUZcZF0vKSYmZS5lYXQoIjsiKX1lbHNle2k9ZS5lYXRXaGlsZSgvW1xkXS8pJiZlLmVhdCgiOyIpfX1lbHNle2k9ZS5lYXRXaGlsZSgvW1x3XC5cLTpdLykmJmUuZWF0KCI7Iil9cmV0dXJuIGk/ImF0b20iOiJlcnJvciJ9ZWxzZXtlLmVhdFdoaWxlKC9bXiY8XS8pO3JldHVybiBudWxsfX1mdW5jdGlvbiBjKGUsdCl7dmFyIG49ZS5uZXh0KCk7aWYobj09Ij4ifHxuPT0iLyImJmUuZWF0KCI+Iikpe3QudG9rZW5pemU9bDthPW49PSI+Ij8iZW5kVGFnIjoic2VsZmNsb3NlVGFnIjtyZXR1cm4idGFnIGJyYWNrZXQifWVsc2UgaWYobj09Ij0iKXthPSJlcXVhbHMiO3JldHVybiBudWxsfWVsc2UgaWYobj09IjwiKXt0LnRva2VuaXplPWw7dC5zdGF0ZT15O3QudGFnTmFtZT10LnRhZ1N0YXJ0PW51bGw7dmFyIHI9dC50b2tlbml6ZShlLHQpO3JldHVybiByP3IrIiB0YWcgZXJyb3IiOiJ0YWcgZXJyb3IifWVsc2UgaWYoL1tcJ1wiXS8udGVzdChuKSl7dC50b2tlbml6ZT1oKG4pO3Quc3RyaW5nU3RhcnRDb2w9ZS5jb2x1bW4oKTtyZXR1cm4gdC50b2tlbml6ZShlLHQpfWVsc2V7ZS5tYXRjaCgvXlteXHNcdTAwYTA9PD5cIlwnXSpbXlxzXHUwMGEwPTw+XCJcJ1wvXS8pO3JldHVybiJ3b3JkIn19ZnVuY3Rpb24gaChlKXt2YXIgdD1mdW5jdGlvbih0LG4pe3doaWxlKCF0LmVvbCgpKXtpZih0Lm5leHQoKT09ZSl7bi50b2tlbml6ZT1jO2JyZWFrfX1yZXR1cm4ic3RyaW5nIn07dC5pc0luQXR0cmlidXRlPXRydWU7cmV0dXJuIHR9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3doaWxlKCFuLmVvbCgpKXtpZihuLm1hdGNoKHQpKXtyLnRva2VuaXplPWw7YnJlYWt9bi5uZXh0KCl9cmV0dXJuIGV9fWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI7d2hpbGUoKHI9dC5uZXh0KCkpIT1udWxsKXtpZihyPT0iPCIpe24udG9rZW5pemU9ZChlKzEpO3JldHVybiBuLnRva2VuaXplKHQsbil9ZWxzZSBpZihyPT0iPiIpe2lmKGU9PTEpe24udG9rZW5pemU9bDticmVha31lbHNle24udG9rZW5pemU9ZChlLTEpO3JldHVybiBuLnRva2VuaXplKHQsbil9fX1yZXR1cm4ibWV0YSJ9fWZ1bmN0aW9uIHYoZSx0LG4pe3RoaXMucHJldj1lLmNvbnRleHQ7dGhpcy50YWdOYW1lPXQ7dGhpcy5pbmRlbnQ9ZS5pbmRlbnRlZDt0aGlzLnN0YXJ0T2ZMaW5lPW47aWYoby5kb05vdEluZGVudC5oYXNPd25Qcm9wZXJ0eSh0KXx8ZS5jb250ZXh0JiZlLmNvbnRleHQubm9JbmRlbnQpdGhpcy5ub0luZGVudD10cnVlfWZ1bmN0aW9uIG0oZSl7aWYoZS5jb250ZXh0KWUuY29udGV4dD1lLmNvbnRleHQucHJldn1mdW5jdGlvbiBnKGUsdCl7dmFyIG47d2hpbGUodHJ1ZSl7aWYoIWUuY29udGV4dCl7cmV0dXJufW49ZS5jb250ZXh0LnRhZ05hbWU7aWYoIW8uY29udGV4dEdyYWJiZXJzLmhhc093blByb3BlcnR5KG4pfHwhby5jb250ZXh0R3JhYmJlcnNbbl0uaGFzT3duUHJvcGVydHkodCkpe3JldHVybn1tKGUpfX1mdW5jdGlvbiB5KGUsdCxuKXtpZihlPT0ib3BlblRhZyIpe24udGFnU3RhcnQ9dC5jb2x1bW4oKTtyZXR1cm4gYn1lbHNlIGlmKGU9PSJjbG9zZVRhZyIpe3JldHVybiB3fWVsc2V7cmV0dXJuIHl9fWZ1bmN0aW9uIGIoZSx0LG4pe2lmKGU9PSJ3b3JkIil7bi50YWdOYW1lPXQuY3VycmVudCgpO2Y9InRhZyI7cmV0dXJuIHh9ZWxzZXtmPSJlcnJvciI7cmV0dXJuIGJ9fWZ1bmN0aW9uIHcoZSx0LG4pe2lmKGU9PSJ3b3JkIil7dmFyIHI9dC5jdXJyZW50KCk7aWYobi5jb250ZXh0JiZuLmNvbnRleHQudGFnTmFtZSE9ciYmby5pbXBsaWNpdGx5Q2xvc2VkLmhhc093blByb3BlcnR5KG4uY29udGV4dC50YWdOYW1lKSltKG4pO2lmKG4uY29udGV4dCYmbi5jb250ZXh0LnRhZ05hbWU9PXIpe2Y9InRhZyI7cmV0dXJuIEV9ZWxzZXtmPSJ0YWcgZXJyb3IiO3JldHVybiBTfX1lbHNle2Y9ImVycm9yIjtyZXR1cm4gU319ZnVuY3Rpb24gRShlLHQsbil7aWYoZSE9ImVuZFRhZyIpe2Y9ImVycm9yIjtyZXR1cm4gRX1tKG4pO3JldHVybiB5fWZ1bmN0aW9uIFMoZSx0LG4pe2Y9ImVycm9yIjtyZXR1cm4gRShlLHQsbil9ZnVuY3Rpb24geChlLHQsbil7aWYoZT09IndvcmQiKXtmPSJhdHRyaWJ1dGUiO3JldHVybiBUfWVsc2UgaWYoZT09ImVuZFRhZyJ8fGU9PSJzZWxmY2xvc2VUYWciKXt2YXIgcj1uLnRhZ05hbWUsaT1uLnRhZ1N0YXJ0O24udGFnTmFtZT1uLnRhZ1N0YXJ0PW51bGw7aWYoZT09InNlbGZjbG9zZVRhZyJ8fG8uYXV0b1NlbGZDbG9zZXJzLmhhc093blByb3BlcnR5KHIpKXtnKG4scil9ZWxzZXtnKG4scik7bi5jb250ZXh0PW5ldyB2KG4scixpPT1uLmluZGVudGVkKX1yZXR1cm4geX1mPSJlcnJvciI7cmV0dXJuIHh9ZnVuY3Rpb24gVChlLHQsbil7aWYoZT09ImVxdWFscyIpcmV0dXJuIE47aWYoIW8uYWxsb3dNaXNzaW5nKWY9ImVycm9yIjtyZXR1cm4geChlLHQsbil9ZnVuY3Rpb24gTihlLHQsbil7aWYoZT09InN0cmluZyIpcmV0dXJuIEM7aWYoZT09IndvcmQiJiZvLmFsbG93VW5xdW90ZWQpe2Y9InN0cmluZyI7cmV0dXJuIHh9Zj0iZXJyb3IiO3JldHVybiB4KGUsdCxuKX1mdW5jdGlvbiBDKGUsdCxuKXtpZihlPT0ic3RyaW5nIilyZXR1cm4gQztyZXR1cm4geChlLHQsbil9dmFyIHI9dC5pbmRlbnRVbml0O3ZhciBpPW4ubXVsdGlsaW5lVGFnSW5kZW50RmFjdG9yfHwxO3ZhciBzPW4ubXVsdGlsaW5lVGFnSW5kZW50UGFzdFRhZztpZihzPT1udWxsKXM9dHJ1ZTt2YXIgbz1uLmh0bWxNb2RlP3thdXRvU2VsZkNsb3NlcnM6e2FyZWE6dHJ1ZSxiYXNlOnRydWUsYnI6dHJ1ZSxjb2w6dHJ1ZSxjb21tYW5kOnRydWUsZW1iZWQ6dHJ1ZSxmcmFtZTp0cnVlLGhyOnRydWUsaW1nOnRydWUsaW5wdXQ6dHJ1ZSxrZXlnZW46dHJ1ZSxsaW5rOnRydWUsbWV0YTp0cnVlLHBhcmFtOnRydWUsc291cmNlOnRydWUsdHJhY2s6dHJ1ZSx3YnI6dHJ1ZX0saW1wbGljaXRseUNsb3NlZDp7ZGQ6dHJ1ZSxsaTp0cnVlLG9wdGdyb3VwOnRydWUsb3B0aW9uOnRydWUscDp0cnVlLHJwOnRydWUscnQ6dHJ1ZSx0Ym9keTp0cnVlLHRkOnRydWUsdGZvb3Q6dHJ1ZSx0aDp0cnVlLHRyOnRydWV9LGNvbnRleHRHcmFiYmVyczp7ZGQ6e2RkOnRydWUsZHQ6dHJ1ZX0sZHQ6e2RkOnRydWUsZHQ6dHJ1ZX0sbGk6e2xpOnRydWV9LG9wdGlvbjp7b3B0aW9uOnRydWUsb3B0Z3JvdXA6dHJ1ZX0sb3B0Z3JvdXA6e29wdGdyb3VwOnRydWV9LHA6e2FkZHJlc3M6dHJ1ZSxhcnRpY2xlOnRydWUsYXNpZGU6dHJ1ZSxibG9ja3F1b3RlOnRydWUsZGlyOnRydWUsZGl2OnRydWUsZGw6dHJ1ZSxmaWVsZHNldDp0cnVlLGZvb3Rlcjp0cnVlLGZvcm06dHJ1ZSxoMTp0cnVlLGgyOnRydWUsaDM6dHJ1ZSxoNDp0cnVlLGg1OnRydWUsaDY6dHJ1ZSxoZWFkZXI6dHJ1ZSxoZ3JvdXA6dHJ1ZSxocjp0cnVlLG1lbnU6dHJ1ZSxuYXY6dHJ1ZSxvbDp0cnVlLHA6dHJ1ZSxwcmU6dHJ1ZSxzZWN0aW9uOnRydWUsdGFibGU6dHJ1ZSx1bDp0cnVlfSxycDp7cnA6dHJ1ZSxydDp0cnVlfSxydDp7cnA6dHJ1ZSxydDp0cnVlfSx0Ym9keTp7dGJvZHk6dHJ1ZSx0Zm9vdDp0cnVlfSx0ZDp7dGQ6dHJ1ZSx0aDp0cnVlfSx0Zm9vdDp7dGJvZHk6dHJ1ZX0sdGg6e3RkOnRydWUsdGg6dHJ1ZX0sdGhlYWQ6e3Rib2R5OnRydWUsdGZvb3Q6dHJ1ZX0sdHI6e3RyOnRydWV9fSxkb05vdEluZGVudDp7cHJlOnRydWV9LGFsbG93VW5xdW90ZWQ6dHJ1ZSxhbGxvd01pc3Npbmc6dHJ1ZSxjYXNlRm9sZDp0cnVlfTp7YXV0b1NlbGZDbG9zZXJzOnt9LGltcGxpY2l0bHlDbG9zZWQ6e30sY29udGV4dEdyYWJiZXJzOnt9LGRvTm90SW5kZW50Ont9LGFsbG93VW5xdW90ZWQ6ZmFsc2UsYWxsb3dNaXNzaW5nOmZhbHNlLGNhc2VGb2xkOmZhbHNlfTt2YXIgdT1uLmFsaWduQ0RBVEE7dmFyIGEsZjtyZXR1cm57c3RhcnRTdGF0ZTpmdW5jdGlvbigpe3JldHVybnt0b2tlbml6ZTpsLHN0YXRlOnksaW5kZW50ZWQ6MCx0YWdOYW1lOm51bGwsdGFnU3RhcnQ6bnVsbCxjb250ZXh0Om51bGx9fSx0b2tlbjpmdW5jdGlvbihlLHQpe2lmKCF0LnRhZ05hbWUmJmUuc29sKCkpdC5pbmRlbnRlZD1lLmluZGVudGF0aW9uKCk7aWYoZS5lYXRTcGFjZSgpKXJldHVybiBudWxsO2E9bnVsbDt2YXIgbj10LnRva2VuaXplKGUsdCk7aWYoKG58fGEpJiZuIT0iY29tbWVudCIpe2Y9bnVsbDt0LnN0YXRlPXQuc3RhdGUoYXx8bixlLHQpO2lmKGYpbj1mPT0iZXJyb3IiP24rIiBlcnJvciI6Zn1yZXR1cm4gbn0saW5kZW50OmZ1bmN0aW9uKHQsbixhKXt2YXIgZj10LmNvbnRleHQ7aWYodC50b2tlbml6ZS5pc0luQXR0cmlidXRlKXtpZih0LnRhZ1N0YXJ0PT10LmluZGVudGVkKXJldHVybiB0LnN0cmluZ1N0YXJ0Q29sKzE7ZWxzZSByZXR1cm4gdC5pbmRlbnRlZCtyfWlmKGYmJmYubm9JbmRlbnQpcmV0dXJuIGUuUGFzcztpZih0LnRva2VuaXplIT1jJiZ0LnRva2VuaXplIT1sKXJldHVybiBhP2EubWF0Y2goL14oXHMqKS8pWzBdLmxlbmd0aDowO2lmKHQudGFnTmFtZSl7aWYocylyZXR1cm4gdC50YWdTdGFydCt0LnRhZ05hbWUubGVuZ3RoKzI7ZWxzZSByZXR1cm4gdC50YWdTdGFydCtyKml9aWYodSYmLzwhXFtDREFUQVxbLy50ZXN0KG4pKXJldHVybiAwO3ZhciBoPW4mJi9ePChcLyk/KFtcd186XC4tXSopLy5leGVjKG4pO2lmKGgmJmhbMV0pe3doaWxlKGYpe2lmKGYudGFnTmFtZT09aFsyXSl7Zj1mLnByZXY7YnJlYWt9ZWxzZSBpZihvLmltcGxpY2l0bHlDbG9zZWQuaGFzT3duUHJvcGVydHkoZi50YWdOYW1lKSl7Zj1mLnByZXZ9ZWxzZXticmVha319fWVsc2UgaWYoaCl7d2hpbGUoZil7dmFyIHA9by5jb250ZXh0R3JhYmJlcnNbZi50YWdOYW1lXTtpZihwJiZwLmhhc093blByb3BlcnR5KGhbMl0pKWY9Zi5wcmV2O2Vsc2UgYnJlYWt9fXdoaWxlKGYmJiFmLnN0YXJ0T2ZMaW5lKWY9Zi5wcmV2O2lmKGYpcmV0dXJuIGYuaW5kZW50K3I7ZWxzZSByZXR1cm4gMH0sZWxlY3RyaWNJbnB1dDovPFwvW1xzXHc6XSs+JC8sYmxvY2tDb21tZW50U3RhcnQ6IjwhLS0iLGJsb2NrQ29tbWVudEVuZDoiLS0+Iixjb25maWd1cmF0aW9uOm4uaHRtbE1vZGU/Imh0bWwiOiJ4bWwiLGhlbHBlclR5cGU6bi5odG1sTW9kZT8iaHRtbCI6InhtbCJ9fSk7ZS5kZWZpbmVNSU1FKCJ0ZXh0L3htbCIsInhtbCIpO2UuZGVmaW5lTUlNRSgiYXBwbGljYXRpb24veG1sIiwieG1sIik7aWYoIWUubWltZU1vZGVzLmhhc093blByb3BlcnR5KCJ0ZXh0L2h0bWwiKSllLmRlZmluZU1JTUUoInRleHQvaHRtbCIse25hbWU6InhtbCIsaHRtbE1vZGU6dHJ1ZX0pfSk7CgovLyBIVE1MIG1peGVkIGZvciBDb2RlbWlycm9yCihmdW5jdGlvbihlKXtpZih0eXBlb2YgZXhwb3J0cz09Im9iamVjdCImJnR5cGVvZiBtb2R1bGU9PSJvYmplY3QiKWUocmVxdWlyZSgiLi4vLi4vbGliL2NvZGVtaXJyb3IiKSxyZXF1aXJlKCIuLi94bWwveG1sIikscmVxdWlyZSgiLi4vamF2YXNjcmlwdC9qYXZhc2NyaXB0IikscmVxdWlyZSgiLi4vY3NzL2NzcyIpKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpZGVmaW5lKFsiLi4vLi4vbGliL2NvZGVtaXJyb3IiLCIuLi94bWwveG1sIiwiLi4vamF2YXNjcmlwdC9qYXZhc2NyaXB0IiwiLi4vY3NzL2NzcyJdLGUpO2Vsc2UgZShDb2RlTWlycm9yKX0pKGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlLmRlZmluZU1vZGUoImh0bWxtaXhlZCIsZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBmKGUsdCl7dmFyIG49dC5odG1sU3RhdGUudGFnTmFtZTt2YXIgbz1yLnRva2VuKGUsdC5odG1sU3RhdGUpO2lmKG49PSJzY3JpcHQiJiYvXGJ0YWdcYi8udGVzdChvKSYmZS5jdXJyZW50KCk9PSI+Iil7dmFyIHU9ZS5zdHJpbmcuc2xpY2UoTWF0aC5tYXgoMCxlLnBvcy0xMDApLGUucG9zKS5tYXRjaCgvXGJ0eXBlXHMqPVxzKigiW14iXSsifCdbXiddKyd8XFMrKVtePF0qJC9pKTt1PXU/dVsxXToiIjtpZih1JiYvW1wiXCddLy50ZXN0KHUuY2hhckF0KDApKSl1PXUuc2xpY2UoMSx1Lmxlbmd0aC0xKTtmb3IodmFyIGE9MDthPHMubGVuZ3RoOysrYSl7dmFyIGY9c1thXTtpZih0eXBlb2YgZi5tYXRjaGVzPT0ic3RyaW5nIj91PT1mLm1hdGNoZXM6Zi5tYXRjaGVzLnRlc3QodSkpe2lmKGYubW9kZSl7dC50b2tlbj1jO3QubG9jYWxNb2RlPWYubW9kZTt0LmxvY2FsU3RhdGU9Zi5tb2RlLnN0YXJ0U3RhdGUmJmYubW9kZS5zdGFydFN0YXRlKHIuaW5kZW50KHQuaHRtbFN0YXRlLCIiKSl9YnJlYWt9fX1lbHNlIGlmKG49PSJzdHlsZSImJi9cYnRhZ1xiLy50ZXN0KG8pJiZlLmN1cnJlbnQoKT09Ij4iKXt0LnRva2VuPWg7dC5sb2NhbE1vZGU9aTt0LmxvY2FsU3RhdGU9aS5zdGFydFN0YXRlKHIuaW5kZW50KHQuaHRtbFN0YXRlLCIiKSl9cmV0dXJuIG99ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9ZS5jdXJyZW50KCk7dmFyIGk9ci5zZWFyY2godCkscztpZihpPi0xKWUuYmFja1VwKHIubGVuZ3RoLWkpO2Vsc2UgaWYocz1yLm1hdGNoKC88XC8/JC8pKXtlLmJhY2tVcChyLmxlbmd0aCk7aWYoIWUubWF0Y2godCxmYWxzZSkpZS5tYXRjaChyKX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUsdCl7aWYoZS5tYXRjaCgvXjxcL1xzKnNjcmlwdFxzKj4vaSxmYWxzZSkpe3QudG9rZW49Zjt0LmxvY2FsU3RhdGU9dC5sb2NhbE1vZGU9bnVsbDtyZXR1cm4gZihlLHQpfXJldHVybiBsKGUsLzxcL1xzKnNjcmlwdFxzKj4vLHQubG9jYWxNb2RlLnRva2VuKGUsdC5sb2NhbFN0YXRlKSl9ZnVuY3Rpb24gaChlLHQpe2lmKGUubWF0Y2goL148XC9ccypzdHlsZVxzKj4vaSxmYWxzZSkpe3QudG9rZW49Zjt0LmxvY2FsU3RhdGU9dC5sb2NhbE1vZGU9bnVsbDtyZXR1cm4gZihlLHQpfXJldHVybiBsKGUsLzxcL1xzKnN0eWxlXHMqPi8saS50b2tlbihlLHQubG9jYWxTdGF0ZSkpfXZhciByPWUuZ2V0TW9kZSh0LHtuYW1lOiJ4bWwiLGh0bWxNb2RlOnRydWUsbXVsdGlsaW5lVGFnSW5kZW50RmFjdG9yOm4ubXVsdGlsaW5lVGFnSW5kZW50RmFjdG9yLG11bHRpbGluZVRhZ0luZGVudFBhc3RUYWc6bi5tdWx0aWxpbmVUYWdJbmRlbnRQYXN0VGFnfSk7dmFyIGk9ZS5nZXRNb2RlKHQsImNzcyIpO3ZhciBzPVtdLG89biYmbi5zY3JpcHRUeXBlcztzLnB1c2goe21hdGNoZXM6L14oPzp0ZXh0fGFwcGxpY2F0aW9uKVwvKD86eC0pPyg/OmphdmF8ZWNtYSlzY3JpcHQkfF4kL2ksbW9kZTplLmdldE1vZGUodCwiamF2YXNjcmlwdCIpfSk7aWYobylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoOysrdSl7dmFyIGE9b1t1XTtzLnB1c2goe21hdGNoZXM6YS5tYXRjaGVzLG1vZGU6YS5tb2RlJiZlLmdldE1vZGUodCxhLm1vZGUpfSl9cy5wdXNoKHttYXRjaGVzOi8uLyxtb2RlOmUuZ2V0TW9kZSh0LCJ0ZXh0L3BsYWluIil9KTtyZXR1cm57c3RhcnRTdGF0ZTpmdW5jdGlvbigpe3ZhciBlPXIuc3RhcnRTdGF0ZSgpO3JldHVybnt0b2tlbjpmLGxvY2FsTW9kZTpudWxsLGxvY2FsU3RhdGU6bnVsbCxodG1sU3RhdGU6ZX19LGNvcHlTdGF0ZTpmdW5jdGlvbih0KXtpZih0LmxvY2FsU3RhdGUpdmFyIG49ZS5jb3B5U3RhdGUodC5sb2NhbE1vZGUsdC5sb2NhbFN0YXRlKTtyZXR1cm57dG9rZW46dC50b2tlbixsb2NhbE1vZGU6dC5sb2NhbE1vZGUsbG9jYWxTdGF0ZTpuLGh0bWxTdGF0ZTplLmNvcHlTdGF0ZShyLHQuaHRtbFN0YXRlKX19LHRva2VuOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9rZW4oZSx0KX0saW5kZW50OmZ1bmN0aW9uKHQsbil7aWYoIXQubG9jYWxNb2RlfHwvXlxzKjxcLy8udGVzdChuKSlyZXR1cm4gci5pbmRlbnQodC5odG1sU3RhdGUsbik7ZWxzZSBpZih0LmxvY2FsTW9kZS5pbmRlbnQpcmV0dXJuIHQubG9jYWxNb2RlLmluZGVudCh0LmxvY2FsU3RhdGUsbik7ZWxzZSByZXR1cm4gZS5QYXNzfSxpbm5lck1vZGU6ZnVuY3Rpb24oZSl7cmV0dXJue3N0YXRlOmUubG9jYWxTdGF0ZXx8ZS5odG1sU3RhdGUsbW9kZTplLmxvY2FsTW9kZXx8cn19fX0sInhtbCIsImphdmFzY3JpcHQiLCJjc3MiKTtlLmRlZmluZU1JTUUoInRleHQvaHRtbCIsImh0bWxtaXhlZCIpfSk7CgovLyBFcmxhbmcgZm9yIENvZGVtaXJyb3IKIWZ1bmN0aW9uKGEpe3ZhciBiPWEuQ29kZU1pcnJvcjtiLmRlZmluZU1JTUUoInRleHQveC1lcmxhbmciLCJlcmxhbmciKSxiLmRlZmluZU1vZGUoImVybGFuZyIsZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSxiKXtpZihiLmluX3N0cmluZylyZXR1cm4gYi5pbl9zdHJpbmc9IWYoYSksayhiLGEsInN0cmluZyIpO2lmKGIuaW5fYXRvbSlyZXR1cm4gYi5pbl9hdG9tPSFnKGEpLGsoYixhLCJhdG9tIik7aWYoYS5lYXRTcGFjZSgpKXJldHVybiBrKGIsYSwid2hpdGVzcGFjZSIpO2lmKCFvKGIpJiZhLm1hdGNoKC8tXHMqW2EtesOfLcO2w7gtw79dW1x3w5gtw57DgC3DlsOfLcO2w7gtw79dKi8pKXJldHVybiBqKGEuY3VycmVudCgpLEEpP2soYixhLCJ0eXBlIik6ayhiLGEsImF0dHJpYnV0ZSIpO3ZhciBjPWEubmV4dCgpO2lmKCIlIj09YylyZXR1cm4gYS5za2lwVG9FbmQoKSxrKGIsYSwiY29tbWVudCIpO2lmKCI6Ij09YylyZXR1cm4gayhiLGEsImNvbG9uIik7aWYoIj8iPT1jKXJldHVybiBhLmVhdFNwYWNlKCksYS5lYXRXaGlsZShOKSxrKGIsYSwibWFjcm8iKTtpZigiIyI9PWMpcmV0dXJuIGEuZWF0U3BhY2UoKSxhLmVhdFdoaWxlKE4pLGsoYixhLCJyZWNvcmQiKTtpZigiJCI9PWMpcmV0dXJuIlxcIiE9YS5uZXh0KCl8fGEubWF0Y2goTyk/ayhiLGEsIm51bWJlciIpOmsoYixhLCJlcnJvciIpO2lmKCIuIj09YylyZXR1cm4gayhiLGEsImRvdCIpO2lmKCInIj09Yyl7aWYoIShiLmluX2F0b209IWcoYSkpKXtpZihhLm1hdGNoKC9ccypcL1xzKlswLTldLywhMSkpcmV0dXJuIGEubWF0Y2goL1xzKlwvXHMqWzAtOV0vLCEwKSxrKGIsYSwiZnVuIik7aWYoYS5tYXRjaCgvXHMqXCgvLCExKXx8YS5tYXRjaCgvXHMqOi8sITEpKXJldHVybiBrKGIsYSwiZnVuY3Rpb24iKX1yZXR1cm4gayhiLGEsImF0b20iKX1pZignIic9PWMpcmV0dXJuIGIuaW5fc3RyaW5nPSFmKGEpLGsoYixhLCJzdHJpbmciKTtpZigvW0EtWl/DmC3DnsOALcOWXS8udGVzdChjKSlyZXR1cm4gYS5lYXRXaGlsZShOKSxrKGIsYSwidmFyaWFibGUiKTtpZigvW2Etel/Dny3DtsO4LcO/XS8udGVzdChjKSl7aWYoYS5lYXRXaGlsZShOKSxhLm1hdGNoKC9ccypcL1xzKlswLTldLywhMSkpcmV0dXJuIGEubWF0Y2goL1xzKlwvXHMqWzAtOV0vLCEwKSxrKGIsYSwiZnVuIik7dmFyIGg9YS5jdXJyZW50KCk7cmV0dXJuIGooaCxCKT9rKGIsYSwia2V5d29yZCIpOmooaCxFKT9rKGIsYSwib3BlcmF0b3IiKTphLm1hdGNoKC9ccypcKC8sITEpPyFqKGgsTSl8fCI6Ij09byhiKS50b2tlbiYmImVybGFuZyIhPW8oYiwyKS50b2tlbj9qKGgsTCk/ayhiLGEsImd1YXJkIik6ayhiLGEsImZ1bmN0aW9uIik6ayhiLGEsImJ1aWx0aW4iKToiOiI9PWkoYSk/ImVybGFuZyI9PWg/ayhiLGEsImJ1aWx0aW4iKTprKGIsYSwiZnVuY3Rpb24iKTpqKGgsWyJ0cnVlIiwiZmFsc2UiXSk/ayhiLGEsImJvb2xlYW4iKTprKGIsYSwiYXRvbSIpfXZhciBsPS9bMC05XS8sbT0vWzAtOWEtekEtWl0vO3JldHVybiBsLnRlc3QoYyk/KGEuZWF0V2hpbGUobCksYS5lYXQoIiMiKT9hLmVhdFdoaWxlKG0pfHxhLmJhY2tVcCgxKTphLmVhdCgiLiIpJiYoYS5lYXRXaGlsZShsKT9hLmVhdCgvW2VFXS8pJiYoYS5lYXQoL1stK10vKT9hLmVhdFdoaWxlKGwpfHxhLmJhY2tVcCgyKTphLmVhdFdoaWxlKGwpfHxhLmJhY2tVcCgxKSk6YS5iYWNrVXAoMSkpLGsoYixhLCJudW1iZXIiKSk6ZChhLEgsSSk/ayhiLGEsIm9wZW5fcGFyZW4iKTpkKGEsSixLKT9rKGIsYSwiY2xvc2VfcGFyZW4iKTplKGEsQyxEKT9rKGIsYSwic2VwYXJhdG9yIik6ZShhLEYsRyk/ayhiLGEsIm9wZXJhdG9yIik6ayhiLGEsbnVsbCl9ZnVuY3Rpb24gZChhLGIsYyl7aWYoMT09YS5jdXJyZW50KCkubGVuZ3RoJiZiLnRlc3QoYS5jdXJyZW50KCkpKXtmb3IoYS5iYWNrVXAoMSk7Yi50ZXN0KGEucGVlaygpKTspaWYoYS5uZXh0KCksaihhLmN1cnJlbnQoKSxjKSlyZXR1cm4hMDthLmJhY2tVcChhLmN1cnJlbnQoKS5sZW5ndGgtMSl9cmV0dXJuITF9ZnVuY3Rpb24gZShhLGIsYyl7aWYoMT09YS5jdXJyZW50KCkubGVuZ3RoJiZiLnRlc3QoYS5jdXJyZW50KCkpKXtmb3IoO2IudGVzdChhLnBlZWsoKSk7KWEubmV4dCgpO2Zvcig7MDxhLmN1cnJlbnQoKS5sZW5ndGg7KXtpZihqKGEuY3VycmVudCgpLGMpKXJldHVybiEwO2EuYmFja1VwKDEpfWEubmV4dCgpfXJldHVybiExfWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGgoYSwnIicsIlxcIil9ZnVuY3Rpb24gZyhhKXtyZXR1cm4gaChhLCInIiwiXFwiKX1mdW5jdGlvbiBoKGEsYixjKXtmb3IoOyFhLmVvbCgpOyl7dmFyIGQ9YS5uZXh0KCk7aWYoZD09YilyZXR1cm4hMDtkPT1jJiZhLm5leHQoKX1yZXR1cm4hMX1mdW5jdGlvbiBpKGEpe3ZhciBiPWEubWF0Y2goLyhbXG5cc10rfCVbXlxuXSpcbikqKC4pLywhMSk7cmV0dXJuIGI/Yi5wb3AoKToiIn1mdW5jdGlvbiBqKGEsYil7cmV0dXJuLTE8Yi5pbmRleE9mKGEpfWZ1bmN0aW9uIGsoYSxiLGMpe3N3aXRjaChwKGEsbShjLGIpKSxjKXtjYXNlImF0b20iOnJldHVybiJhdG9tIjtjYXNlImF0dHJpYnV0ZSI6cmV0dXJuImF0dHJpYnV0ZSI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYXRvbSI7Y2FzZSJidWlsdGluIjpyZXR1cm4iYnVpbHRpbiI7Y2FzZSJjbG9zZV9wYXJlbiI6cmV0dXJuIG51bGw7Y2FzZSJjb2xvbiI6cmV0dXJuIG51bGw7Y2FzZSJjb21tZW50IjpyZXR1cm4iY29tbWVudCI7Y2FzZSJkb3QiOnJldHVybiBudWxsO2Nhc2UiZXJyb3IiOnJldHVybiJlcnJvciI7Y2FzZSJmdW4iOnJldHVybiJtZXRhIjtjYXNlImZ1bmN0aW9uIjpyZXR1cm4idGFnIjtjYXNlImd1YXJkIjpyZXR1cm4icHJvcGVydHkiO2Nhc2Uia2V5d29yZCI6cmV0dXJuImtleXdvcmQiO2Nhc2UibWFjcm8iOnJldHVybiJ2YXJpYWJsZS0yIjtjYXNlIm51bWJlciI6cmV0dXJuIm51bWJlciI7Y2FzZSJvcGVuX3BhcmVuIjpyZXR1cm4gbnVsbDtjYXNlIm9wZXJhdG9yIjpyZXR1cm4ib3BlcmF0b3IiO2Nhc2UicmVjb3JkIjpyZXR1cm4iYnJhY2tldCI7Y2FzZSJzZXBhcmF0b3IiOnJldHVybiBudWxsO2Nhc2Uic3RyaW5nIjpyZXR1cm4ic3RyaW5nIjtjYXNlInR5cGUiOnJldHVybiJkZWYiO2Nhc2UidmFyaWFibGUiOnJldHVybiJ2YXJpYWJsZSI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbChhLGIsYyxkKXtyZXR1cm57dG9rZW46YSxjb2x1bW46YixpbmRlbnQ6Yyx0eXBlOmR9fWZ1bmN0aW9uIG0oYSxiKXtyZXR1cm4gbChiLmN1cnJlbnQoKSxiLmNvbHVtbigpLGIuaW5kZW50YXRpb24oKSxhKX1mdW5jdGlvbiBuKGEpe3JldHVybiBsKGEsMCwwLGEpfWZ1bmN0aW9uIG8oYSxiKXt2YXIgYz1hLnRva2VuU3RhY2subGVuZ3RoLGQ9Yj9iOjE7cmV0dXJuIShjPGQpJiZhLnRva2VuU3RhY2tbYy1kXX1mdW5jdGlvbiBwKGEsYil7ImNvbW1lbnQiIT1iLnR5cGUmJiJ3aGl0ZXNwYWNlIiE9Yi50eXBlJiYoYS50b2tlblN0YWNrPXEoYS50b2tlblN0YWNrLGIpLGEudG9rZW5TdGFjaz1yKGEudG9rZW5TdGFjaykpfWZ1bmN0aW9uIHEoYSxiKXt2YXIgYz1hLmxlbmd0aC0xO3JldHVybiAwPGMmJiJyZWNvcmQiPT09YVtjXS50eXBlJiYiZG90Ij09PWIudHlwZT9hLnBvcCgpOjA8YyYmImdyb3VwIj09PWFbY10udHlwZT8oYS5wb3AoKSxhLnB1c2goYikpOmEucHVzaChiKSxhfWZ1bmN0aW9uIHIoYSl7dmFyIGI9YS5sZW5ndGgtMTtpZigiZG90Ij09PWFbYl0udHlwZSlyZXR1cm5bXTtpZigiZnVuIj09PWFbYl0udHlwZSYmImZ1biI9PT1hW2ItMV0udG9rZW4pcmV0dXJuIGEuc2xpY2UoMCxiLTEpO3N3aXRjaChhW2EubGVuZ3RoLTFdLnRva2VuKXtjYXNlIn0iOnJldHVybiBzKGEse2c6WyJ7Il19KTtjYXNlIl0iOnJldHVybiBzKGEse2k6WyJbIl19KTtjYXNlIikiOnJldHVybiBzKGEse2k6WyIoIl19KTtjYXNlIj4+IjpyZXR1cm4gcyhhLHtpOlsiPDwiXX0pO2Nhc2UiZW5kIjpyZXR1cm4gcyhhLHtpOlsiYmVnaW4iLCJjYXNlIiwiZnVuIiwiaWYiLCJyZWNlaXZlIiwidHJ5Il19KTtjYXNlIiwiOnJldHVybiBzKGEse2U6WyJiZWdpbiIsInRyeSIsIndoZW4iLCItPiIsIiwiLCIoIiwiWyIsInsiLCI8PCJdfSk7Y2FzZSItPiI6cmV0dXJuIHMoYSx7cjpbIndoZW4iXSxtOlsidHJ5IiwiaWYiLCJjYXNlIiwicmVjZWl2ZSJdfSk7Y2FzZSI7IjpyZXR1cm4gcyhhLHtFOlsiY2FzZSIsImZ1biIsImlmIiwicmVjZWl2ZSIsInRyeSIsIndoZW4iXX0pO2Nhc2UiY2F0Y2giOnJldHVybiBzKGEse2U6WyJ0cnkiXX0pO2Nhc2Uib2YiOnJldHVybiBzKGEse2U6WyJjYXNlIl19KTtjYXNlImFmdGVyIjpyZXR1cm4gcyhhLHtlOlsicmVjZWl2ZSIsInRyeSJdfSk7ZGVmYXVsdDpyZXR1cm4gYX19ZnVuY3Rpb24gcyhhLGIpe2Zvcih2YXIgYyBpbiBiKWZvcih2YXIgZD1hLmxlbmd0aC0xLGU9YltjXSxmPWQtMTstMTxmO2YtLSlpZihqKGFbZl0udG9rZW4sZSkpe3ZhciBnPWEuc2xpY2UoMCxmKTtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gZy5jb25jYXQoYVtmXSkuY29uY2F0KGFbZF0pO2Nhc2UiciI6cmV0dXJuIGcuY29uY2F0KGFbZF0pO2Nhc2UiaSI6cmV0dXJuIGc7Y2FzZSJnIjpyZXR1cm4gZy5jb25jYXQobigiZ3JvdXAiKSk7Y2FzZSJFIjpyZXR1cm4gZy5jb25jYXQoYVtmXSk7Y2FzZSJlIjpyZXR1cm4gZy5jb25jYXQoYVtmXSl9fXJldHVybiJFIj09Yz9bXTphfWZ1bmN0aW9uIHQoYyxkKXt2YXIgZSxmPWEuaW5kZW50VW5pdCxnPXUoZCksaD1vKGMsMSksaT1vKGMsMik7cmV0dXJuIGMuaW5fc3RyaW5nfHxjLmluX2F0b20/Yi5QYXNzOmk/IndoZW4iPT1oLnRva2VuP2guY29sdW1uK2Y6IndoZW4iPT09ZyYmImZ1bmN0aW9uIj09PWkudHlwZT9pLmluZGVudCtmOiIoIj09PWcmJiJmdW4iPT09aC50b2tlbj9oLmNvbHVtbiszOiJjYXRjaCI9PT1nJiYoZT14KGMsWyJ0cnkiXSkpP2UuY29sdW1uOmooZyxbImVuZCIsImFmdGVyIiwib2YiXSk/KGU9eChjLFsiYmVnaW4iLCJjYXNlIiwiZnVuIiwiaWYiLCJyZWNlaXZlIiwidHJ5Il0pLGU/ZS5jb2x1bW46Yi5QYXNzKTpqKGcsSyk/KGU9eChjLEkpLGU/ZS5jb2x1bW46Yi5QYXNzKTpqKGgudG9rZW4sWyIsIiwifCIsInx8Il0pfHxqKGcsWyIsIiwifCIsInx8Il0pPyhlPXYoYyksZT9lLmNvbHVtbitlLnRva2VuLmxlbmd0aDpmKToiLT4iPT1oLnRva2VuP2ooaS50b2tlbixbInJlY2VpdmUiLCJjYXNlIiwiaWYiLCJ0cnkiXSk/aS5jb2x1bW4rZitmOmkuY29sdW1uK2Y6aihoLnRva2VuLEkpP2guY29sdW1uK2gudG9rZW4ubGVuZ3RoOihlPXcoYykseihlKT9lLmNvbHVtbitmOjApOjB9ZnVuY3Rpb24gdShhKXt2YXIgYj1hLm1hdGNoKC8sfFthLXpdK3xcfXxcXXxcKXw+PnxcfCt8XCgvKTtyZXR1cm4geihiKSYmMD09PWIuaW5kZXg/YlswXToiIn1mdW5jdGlvbiB2KGEpe3ZhciBiPWEudG9rZW5TdGFjay5zbGljZSgwLC0xKSxjPXkoYiwidHlwZSIsWyJvcGVuX3BhcmVuIl0pO3JldHVybiEheihiW2NdKSYmYltjXX1mdW5jdGlvbiB3KGEpe3ZhciBiPWEudG9rZW5TdGFjayxjPXkoYiwidHlwZSIsWyJvcGVuX3BhcmVuIiwic2VwYXJhdG9yIiwia2V5d29yZCJdKSxkPXkoYiwidHlwZSIsWyJvcGVyYXRvciJdKTtyZXR1cm4geihjKSYmeihkKSYmYzxkP2JbYysxXTohIXooYykmJmJbY119ZnVuY3Rpb24geChhLGIpe3ZhciBjPWEudG9rZW5TdGFjayxkPXkoYywidG9rZW4iLGIpO3JldHVybiEheihjW2RdKSYmY1tkXX1mdW5jdGlvbiB5KGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgtMTstMTxkO2QtLSlpZihqKGFbZF1bYl0sYykpcmV0dXJuIGQ7cmV0dXJuITF9ZnVuY3Rpb24geihhKXtyZXR1cm4gYSE9PSExJiZudWxsIT1hfXZhciBBPVsiLXR5cGUiLCItc3BlYyIsIi1leHBvcnRfdHlwZSIsIi1vcGFxdWUiXSxCPVsiYWZ0ZXIiLCJiZWdpbiIsImNhdGNoIiwiY2FzZSIsImNvbmQiLCJlbmQiLCJmdW4iLCJpZiIsImxldCIsIm9mIiwicXVlcnkiLCJyZWNlaXZlIiwidHJ5Iiwid2hlbiJdLEM9L1tcLT4sO10vLEQ9WyItPiIsIjsiLCIsIl0sRT1bImFuZCIsImFuZGFsc28iLCJiYW5kIiwiYm5vdCIsImJvciIsImJzbCIsImJzciIsImJ4b3IiLCJkaXYiLCJub3QiLCJvciIsIm9yZWxzZSIsInJlbSIsInhvciJdLEY9L1tcK1wtXCpcLzw+PVx8OiFdLyxHPVsiPSIsIisiLCItIiwiKiIsIi8iLCI+IiwiPj0iLCI8IiwiPTwiLCI9Oj0iLCI9PSIsIj0vPSIsIi89IiwifHwiLCI8LSIsIiEiXSxIPS9bPFwoXFtce10vLEk9WyI8PCIsIigiLCJbIiwieyJdLEo9L1s+XClcXVx9XS8sSz1bIn0iLCJdIiwiKSIsIj4+Il0sTD1bImlzX2F0b20iLCJpc19iaW5hcnkiLCJpc19iaXRzdHJpbmciLCJpc19ib29sZWFuIiwiaXNfZmxvYXQiLCJpc19mdW5jdGlvbiIsImlzX2ludGVnZXIiLCJpc19saXN0IiwiaXNfbnVtYmVyIiwiaXNfcGlkIiwiaXNfcG9ydCIsImlzX3JlY29yZCIsImlzX3JlZmVyZW5jZSIsImlzX3R1cGxlIiwiYXRvbSIsImJpbmFyeSIsImJpdHN0cmluZyIsImJvb2xlYW4iLCJmdW5jdGlvbiIsImludGVnZXIiLCJsaXN0IiwibnVtYmVyIiwicGlkIiwicG9ydCIsInJlY29yZCIsInJlZmVyZW5jZSIsInR1cGxlIl0sTT1bImFicyIsImFkbGVyMzIiLCJhZGxlcjMyX2NvbWJpbmUiLCJhbGl2ZSIsImFwcGx5IiwiYXRvbV90b19iaW5hcnkiLCJhdG9tX3RvX2xpc3QiLCJiaW5hcnlfdG9fYXRvbSIsImJpbmFyeV90b19leGlzdGluZ19hdG9tIiwiYmluYXJ5X3RvX2xpc3QiLCJiaW5hcnlfdG9fdGVybSIsImJpdF9zaXplIiwiYml0c3RyaW5nX3RvX2xpc3QiLCJieXRlX3NpemUiLCJjaGVja19wcm9jZXNzX2NvZGUiLCJjb250YWN0X2JpbmFyeSIsImNyYzMyIiwiY3JjMzJfY29tYmluZSIsImRhdGUiLCJkZWNvZGVfcGFja2V0IiwiZGVsZXRlX21vZHVsZSIsImRpc2Nvbm5lY3Rfbm9kZSIsImVsZW1lbnQiLCJlcmFzZSIsImV4aXQiLCJmbG9hdCIsImZsb2F0X3RvX2xpc3QiLCJnYXJiYWdlX2NvbGxlY3QiLCJnZXQiLCJnZXRfa2V5cyIsImdyb3VwX2xlYWRlciIsImhhbHQiLCJoZCIsImludGVnZXJfdG9fbGlzdCIsImludGVybmFsX2JpZiIsImlvbGlzdF9zaXplIiwiaW9saXN0X3RvX2JpbmFyeSIsImlzX2FsaXZlIiwiaXNfYXRvbSIsImlzX2JpbmFyeSIsImlzX2JpdHN0cmluZyIsImlzX2Jvb2xlYW4iLCJpc19mbG9hdCIsImlzX2Z1bmN0aW9uIiwiaXNfaW50ZWdlciIsImlzX2xpc3QiLCJpc19udW1iZXIiLCJpc19waWQiLCJpc19wb3J0IiwiaXNfcHJvY2Vzc19hbGl2ZSIsImlzX3JlY29yZCIsImlzX3JlZmVyZW5jZSIsImlzX3R1cGxlIiwibGVuZ3RoIiwibGluayIsImxpc3RfdG9fYXRvbSIsImxpc3RfdG9fYmluYXJ5IiwibGlzdF90b19iaXRzdHJpbmciLCJsaXN0X3RvX2V4aXN0aW5nX2F0b20iLCJsaXN0X3RvX2Zsb2F0IiwibGlzdF90b19pbnRlZ2VyIiwibGlzdF90b19waWQiLCJsaXN0X3RvX3R1cGxlIiwibG9hZF9tb2R1bGUiLCJtYWtlX3JlZiIsIm1vZHVsZV9sb2FkZWQiLCJtb25pdG9yX25vZGUiLCJub2RlIiwibm9kZV9saW5rIiwibm9kZV91bmxpbmsiLCJub2RlcyIsIm5vdGFsaXZlIiwibm93Iiwib3Blbl9wb3J0IiwicGlkX3RvX2xpc3QiLCJwb3J0X2Nsb3NlIiwicG9ydF9jb21tYW5kIiwicG9ydF9jb25uZWN0IiwicG9ydF9jb250cm9sIiwicHJlX2xvYWRlZCIsInByb2Nlc3NfZmxhZyIsInByb2Nlc3NfaW5mbyIsInByb2Nlc3NlcyIsInB1cmdlX21vZHVsZSIsInB1dCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJlZCIsInJvdW5kIiwic2VsZiIsInNldGVsZW1lbnQiLCJzaXplIiwic3Bhd24iLCJzcGF3bl9saW5rIiwic3Bhd25fbW9uaXRvciIsInNwYXduX29wdCIsInNwbGl0X2JpbmFyeSIsInN0YXRpc3RpY3MiLCJ0ZXJtX3RvX2JpbmFyeSIsInRpbWUiLCJ0aHJvdyIsInRsIiwidHJ1bmMiLCJ0dXBsZV9zaXplIiwidHVwbGVfdG9fbGlzdCIsInVubGluayIsInVucmVnaXN0ZXIiLCJ3aGVyZWlzIl0sTj0vW1x3QMOYLcOew4Atw5bDny3DtsO4LcO/XS8sTz0vWzAtN117MSwzfXxbYmRlZm5yc3R2XFwiJ118XF5bYS16QS1aXXx4WzAtOWEtekEtWl17Mn18eHtbMC05YS16QS1aXSt9LztyZXR1cm57c3RhcnRTdGF0ZTpmdW5jdGlvbigpe3JldHVybnt0b2tlblN0YWNrOltdLGluX3N0cmluZzohMSxpbl9hdG9tOiExfX0sdG9rZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYyhhLGIpfSxpbmRlbnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdChhLGIpfSxsaW5lQ29tbWVudDoiJSJ9fSl9KHdpbmRvdyk7CgoKLypDb2RlTWlycm9yIG92ZXJsYXlzOiBlbW9qaS10YWdnZXIqLwohZnVuY3Rpb24oKXt2YXIgeD0iXihcXHB7Ukl9XFxwe1JJfXxcXHB7RW1vaml9KFxccHtFTW9kfSt8XFx1e0ZFMEZ9XFx1ezIwRTN9P3xbXFx1e0UwMDIwfS1cXHV7RTAwN0V9XStcXHV7RTAwN0Z9KT8oXFx1ezIwMER9XFxwe0Vtb2ppfShcXHB7RU1vZH0rfFxcdXtGRTBGfVxcdXsyMEUzfT98W1xcdXtFMDAyMH0tXFx1e0UwMDdFfV0rXFx1e0UwMDdGfSk/KSt8XFxwe0VQcmVzfShcXHB7RU1vZH0rfFxcdXtGRTBGfVxcdXsyMEUzfT98W1xcdXtFMDAyMH0tXFx1e0UwMDdFfV0rXFx1e0UwMDdGfSk/fFxccHtFbW9qaX0oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pKSIsYT0idSI7dHJ5e25ldyBSZWdFeHAoIl5cXHB7RW1vaml9IiwidSIpfWNhdGNoKGIpe3g9Il5cXHVmZmZmIixhPSIifXJldHVybiBDb2RlTWlycm9yLm92ZXJsYXlNb2RlfHxjKENvZGVNaXJyb3IpLGIoKSx2b2lkIDA7ZnVuY3Rpb24gYigpe3ZhciBiPW5ldyBSZWdFeHAoeCxhKTtmdW5jdGlvbiBjKHgsYSl7aWYoeC5tYXRjaChiKSlyZXR1cm4geC5lYXQoYiksImVtb2ppIjtmb3IoO251bGwhPXgubmV4dCgpJiYheC5tYXRjaChiLCExKTspO3JldHVybiBudWxsfU9iamVjdC5rZXlzKENvZGVNaXJyb3IubW9kZXMpLmZvckVhY2goZnVuY3Rpb24oeCl7Q29kZU1pcnJvci5kZWZpbmVNb2RlKCJqaSIreCxmdW5jdGlvbihhLGIpe3JldHVybiBDb2RlTWlycm9yLm92ZXJsYXlNb2RlKENvZGVNaXJyb3IuZ2V0TW9kZShhLHgpLHt0b2tlbjpjfSl9KX0pfWZ1bmN0aW9uIGMoeCl7InVzZSBzdHJpY3QiO3gub3ZlcmxheU1vZGU9ZnVuY3Rpb24oYSxiLGMpe3JldHVybntzdGFydFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJue2Jhc2U6eC5zdGFydFN0YXRlKGEpLG92ZXJsYXk6eC5zdGFydFN0YXRlKGIpLGJhc2VQb3M6MCxiYXNlQ3VyOm51bGwsb3ZlcmxheVBvczowLG92ZXJsYXlDdXI6bnVsbCxzdHJlYW1TZWVuOm51bGx9fSxjb3B5U3RhdGU6ZnVuY3Rpb24oYyl7cmV0dXJue2Jhc2U6eC5jb3B5U3RhdGUoYSxjLmJhc2UpLG92ZXJsYXk6eC5jb3B5U3RhdGUoYixjLm92ZXJsYXkpLGJhc2VQb3M6Yy5iYXNlUG9zLGJhc2VDdXI6bnVsbCxvdmVybGF5UG9zOmMub3ZlcmxheVBvcyxvdmVybGF5Q3VyOm51bGx9fSx0b2tlbjpmdW5jdGlvbih4LGQpe3JldHVybih4IT1kLnN0cmVhbVNlZW58fE1hdGgubWluKGQuYmFzZVBvcyxkLm92ZXJsYXlQb3MpPHguc3RhcnQpJiYoZC5zdHJlYW1TZWVuPXgsZC5iYXNlUG9zPWQub3ZlcmxheVBvcz14LnN0YXJ0KSx4LnN0YXJ0PT1kLmJhc2VQb3MmJihkLmJhc2VDdXI9YS50b2tlbih4LGQuYmFzZSksZC5iYXNlUG9zPXgucG9zKSx4LnN0YXJ0PT1kLm92ZXJsYXlQb3MmJih4LnBvcz14LnN0YXJ0LGQub3ZlcmxheUN1cj1iLnRva2VuKHgsZC5vdmVybGF5KSxkLm92ZXJsYXlQb3M9eC5wb3MpLHgucG9zPU1hdGgubWluKGQuYmFzZVBvcyxkLm92ZXJsYXlQb3MpLG51bGw9PWQub3ZlcmxheUN1cj9kLmJhc2VDdXI6bnVsbCE9ZC5iYXNlQ3VyJiZkLm92ZXJsYXkuY29tYmluZVRva2Vuc3x8YyYmbnVsbD09ZC5vdmVybGF5LmNvbWJpbmVUb2tlbnM/ZC5iYXNlQ3VyKyIgIitkLm92ZXJsYXlDdXI6ZC5vdmVybGF5Q3VyfSxpbmRlbnQ6YS5pbmRlbnQmJmZ1bmN0aW9uKHgsYil7cmV0dXJuIGEuaW5kZW50KHguYmFzZSxiKX0sZWxlY3RyaWNDaGFyczphLmVsZWN0cmljQ2hhcnMsaW5uZXJNb2RlOmZ1bmN0aW9uKHgpe3JldHVybntzdGF0ZTp4LmJhc2UsbW9kZTphfX0sYmxhbmtMaW5lOmZ1bmN0aW9uKHgpe2EuYmxhbmtMaW5lJiZhLmJsYW5rTGluZSh4LmJhc2UpLGIuYmxhbmtMaW5lJiZiLmJsYW5rTGluZSh4Lm92ZXJsYXkpfX19fX0oKTsJCgovKioKICoganF1ZXJ5Lkpjcm9wLm1pbi5qcyB2MC45LjEyIChidWlsZDoyMDEzMDIwMikKICogalF1ZXJ5IEltYWdlIENyb3BwaW5nIFBsdWdpbiAtIHJlbGVhc2VkIHVuZGVyIE1JVCBMaWNlbnNlCiAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEzIFRhcG1vZG8gSW50ZXJhY3RpdmUgTExDCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YXBtb2RvL0pjcm9wCiAqLwooZnVuY3Rpb24oYSl7YS5KY3JvcD1mdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGkoYSl7cmV0dXJuIE1hdGgucm91bmQoYSkrInB4In1mdW5jdGlvbiBqKGEpe3JldHVybiBkLmJhc2VDbGFzcysiLSIrYX1mdW5jdGlvbiBrKCl7cmV0dXJuIGEuZnguc3RlcC5oYXNPd25Qcm9wZXJ0eSgiYmFja2dyb3VuZENvbG9yIil9ZnVuY3Rpb24gbChiKXt2YXIgYz1hKGIpLm9mZnNldCgpO3JldHVybltjLmxlZnQsYy50b3BdfWZ1bmN0aW9uIG0oYSl7cmV0dXJuW2EucGFnZVgtZVswXSxhLnBhZ2VZLWVbMV1dfWZ1bmN0aW9uIG4oYil7dHlwZW9mIGIhPSJvYmplY3QiJiYoYj17fSksZD1hLmV4dGVuZChkLGIpLGEuZWFjaChbIm9uQ2hhbmdlIiwib25TZWxlY3QiLCJvblJlbGVhc2UiLCJvbkRibENsaWNrIl0sZnVuY3Rpb24oYSxiKXt0eXBlb2YgZFtiXSE9ImZ1bmN0aW9uIiYmKGRbYl09ZnVuY3Rpb24oKXt9KX0pfWZ1bmN0aW9uIG8oYSxiLGMpe2U9bChEKSxiYy5zZXRDdXJzb3IoYT09PSJtb3ZlIj9hOmErIi1yZXNpemUiKTtpZihhPT09Im1vdmUiKXJldHVybiBiYy5hY3RpdmF0ZUhhbmRsZXJzKHEoYiksdixjKTt2YXIgZD1fLmdldEZpeGVkKCksZj1yKGEpLGc9Xy5nZXRDb3JuZXIocihmKSk7Xy5zZXRQcmVzc2VkKF8uZ2V0Q29ybmVyKGYpKSxfLnNldEN1cnJlbnQoZyksYmMuYWN0aXZhdGVIYW5kbGVycyhwKGEsZCksdixjKX1mdW5jdGlvbiBwKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKCFkLmFzcGVjdFJhdGlvKXN3aXRjaChhKXtjYXNlImUiOmNbMV09Yi55MjticmVhaztjYXNlInciOmNbMV09Yi55MjticmVhaztjYXNlIm4iOmNbMF09Yi54MjticmVhaztjYXNlInMiOmNbMF09Yi54Mn1lbHNlIHN3aXRjaChhKXtjYXNlImUiOmNbMV09Yi55KzE7YnJlYWs7Y2FzZSJ3IjpjWzFdPWIueSsxO2JyZWFrO2Nhc2UibiI6Y1swXT1iLngrMTticmVhaztjYXNlInMiOmNbMF09Yi54KzF9Xy5zZXRDdXJyZW50KGMpLGJiLnVwZGF0ZSgpfX1mdW5jdGlvbiBxKGEpe3ZhciBiPWE7cmV0dXJuIGJkLndhdGNoS2V5cwooKSxmdW5jdGlvbihhKXtfLm1vdmVPZmZzZXQoW2FbMF0tYlswXSxhWzFdLWJbMV1dKSxiPWEsYmIudXBkYXRlKCl9fWZ1bmN0aW9uIHIoYSl7c3dpdGNoKGEpe2Nhc2UibiI6cmV0dXJuInN3IjtjYXNlInMiOnJldHVybiJudyI7Y2FzZSJlIjpyZXR1cm4ibnciO2Nhc2UidyI6cmV0dXJuIm5lIjtjYXNlIm5lIjpyZXR1cm4ic3ciO2Nhc2UibnciOnJldHVybiJzZSI7Y2FzZSJzZSI6cmV0dXJuIm53IjtjYXNlInN3IjpyZXR1cm4ibmUifX1mdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZC5kaXNhYmxlZD8hMTphPT09Im1vdmUiJiYhZC5hbGxvd01vdmU/ITE6KGU9bChEKSxXPSEwLG8oYSxtKGIpKSxiLnN0b3BQcm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKSwhMSl9fWZ1bmN0aW9uIHQoYSxiLGMpe3ZhciBkPWEud2lkdGgoKSxlPWEuaGVpZ2h0KCk7ZD5iJiZiPjAmJihkPWIsZT1iL2Eud2lkdGgoKSphLmhlaWdodCgpKSxlPmMmJmM+MCYmKGU9YyxkPWMvYS5oZWlnaHQoKSphLndpZHRoKCkpLFQ9YS53aWR0aCgpL2QsVT1hLmhlaWdodCgpL2UsYS53aWR0aChkKS5oZWlnaHQoZSl9ZnVuY3Rpb24gdShhKXtyZXR1cm57eDphLngqVCx5OmEueSpVLHgyOmEueDIqVCx5MjphLnkyKlUsdzphLncqVCxoOmEuaCpVfX1mdW5jdGlvbiB2KGEpe3ZhciBiPV8uZ2V0Rml4ZWQoKTtiLnc+ZC5taW5TZWxlY3RbMF0mJmIuaD5kLm1pblNlbGVjdFsxXT8oYmIuZW5hYmxlSGFuZGxlcygpLGJiLmRvbmUoKSk6YmIucmVsZWFzZSgpLGJjLnNldEN1cnNvcihkLmFsbG93U2VsZWN0PyJjcm9zc2hhaXIiOiJkZWZhdWx0Iil9ZnVuY3Rpb24gdyhhKXtpZihkLmRpc2FibGVkKXJldHVybiExO2lmKCFkLmFsbG93U2VsZWN0KXJldHVybiExO1c9ITAsZT1sKEQpLGJiLmRpc2FibGVIYW5kbGVzKCksYmMuc2V0Q3Vyc29yKCJjcm9zc2hhaXIiKTt2YXIgYj1tKGEpO3JldHVybiBfLnNldFByZXNzZWQoYiksYmIudXBkYXRlKCksYmMuYWN0aXZhdGVIYW5kbGVycyh4LHYsYS50eXBlLnN1YnN0cmluZwooMCw1KT09PSJ0b3VjaCIpLGJkLndhdGNoS2V5cygpLGEuc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpLCExfWZ1bmN0aW9uIHgoYSl7Xy5zZXRDdXJyZW50KGEpLGJiLnVwZGF0ZSgpfWZ1bmN0aW9uIHkoKXt2YXIgYj1hKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKGooInRyYWNrZXIiKSk7cmV0dXJuIGcmJmIuY3NzKHtvcGFjaXR5OjAsYmFja2dyb3VuZENvbG9yOiJ3aGl0ZSJ9KSxifWZ1bmN0aW9uIGJlKGEpe0cucmVtb3ZlQ2xhc3MoKS5hZGRDbGFzcyhqKCJob2xkZXIiKSkuYWRkQ2xhc3MoYSl9ZnVuY3Rpb24gYmYoYSxiKXtmdW5jdGlvbiB0KCl7d2luZG93LnNldFRpbWVvdXQodSxsKX12YXIgYz1hWzBdL1QsZT1hWzFdL1UsZj1hWzJdL1QsZz1hWzNdL1U7aWYoWClyZXR1cm47dmFyIGg9Xy5mbGlwQ29vcmRzKGMsZSxmLGcpLGk9Xy5nZXRGaXhlZCgpLGo9W2kueCxpLnksaS54MixpLnkyXSxrPWosbD1kLmFuaW1hdGlvbkRlbGF5LG09aFswXS1qWzBdLG49aFsxXS1qWzFdLG89aFsyXS1qWzJdLHA9aFszXS1qWzNdLHE9MCxyPWQuc3dpbmdTcGVlZDtjPWtbMF0sZT1rWzFdLGY9a1syXSxnPWtbM10sYmIuYW5pbU1vZGUoITApO3ZhciBzLHU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtxKz0oMTAwLXEpL3Isa1swXT1NYXRoLnJvdW5kKGMrcS8xMDAqbSksa1sxXT1NYXRoLnJvdW5kKGUrcS8xMDAqbiksa1syXT1NYXRoLnJvdW5kKGYrcS8xMDAqbyksa1szXT1NYXRoLnJvdW5kKGcrcS8xMDAqcCkscT49OTkuOCYmKHE9MTAwKSxxPDEwMD8oYmgoayksdCgpKTooYmIuZG9uZSgpLGJiLmFuaW1Nb2RlKCExKSx0eXBlb2YgYj09ImZ1bmN0aW9uIiYmYi5jYWxsKGJzKSl9fSgpO3QoKX1mdW5jdGlvbiBiZyhhKXtiaChbYVswXS9ULGFbMV0vVSxhWzJdL1QsYVszXS9VXSksZC5vblNlbGVjdC5jYWxsKGJzLHUoXy5nZXRGaXhlZCgpKSksYmIuZW5hYmxlSGFuZGxlcygpfWZ1bmN0aW9uIGJoKGEpe18uc2V0UHJlc3NlZChbYVswXSxhWzFdXSksXy5zZXRDdXJyZW50KFthWzJdLAphWzNdXSksYmIudXBkYXRlKCl9ZnVuY3Rpb24gYmkoKXtyZXR1cm4gdShfLmdldEZpeGVkKCkpfWZ1bmN0aW9uIGJqKCl7cmV0dXJuIF8uZ2V0Rml4ZWQoKX1mdW5jdGlvbiBiayhhKXtuKGEpLGJyKCl9ZnVuY3Rpb24gYmwoKXtkLmRpc2FibGVkPSEwLGJiLmRpc2FibGVIYW5kbGVzKCksYmIuc2V0Q3Vyc29yKCJkZWZhdWx0IiksYmMuc2V0Q3Vyc29yKCJkZWZhdWx0Iil9ZnVuY3Rpb24gYm0oKXtkLmRpc2FibGVkPSExLGJyKCl9ZnVuY3Rpb24gYm4oKXtiYi5kb25lKCksYmMuYWN0aXZhdGVIYW5kbGVycyhudWxsLG51bGwpfWZ1bmN0aW9uIGJvKCl7Ry5yZW1vdmUoKSxBLnNob3coKSxBLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKSxhKGIpLnJlbW92ZURhdGEoIkpjcm9wIil9ZnVuY3Rpb24gYnAoYSxiKXtiYi5yZWxlYXNlKCksYmwoKTt2YXIgYz1uZXcgSW1hZ2U7Yy5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT1jLndpZHRoLGY9Yy5oZWlnaHQsZz1kLmJveFdpZHRoLGg9ZC5ib3hIZWlnaHQ7RC53aWR0aChlKS5oZWlnaHQoZiksRC5hdHRyKCJzcmMiLGEpLEguYXR0cigic3JjIixhKSx0KEQsZyxoKSxFPUQud2lkdGgoKSxGPUQuaGVpZ2h0KCksSC53aWR0aChFKS5oZWlnaHQoRiksTS53aWR0aChFK0wqMikuaGVpZ2h0KEYrTCoyKSxHLndpZHRoKEUpLmhlaWdodChGKSxiYS5yZXNpemUoRSxGKSxibSgpLHR5cGVvZiBiPT0iZnVuY3Rpb24iJiZiLmNhbGwoYnMpfSxjLnNyYz1hfWZ1bmN0aW9uIGJxKGEsYixjKXt2YXIgZT1ifHxkLmJnQ29sb3I7ZC5iZ0ZhZGUmJmsoKSYmZC5mYWRlVGltZSYmIWM/YS5hbmltYXRlKHtiYWNrZ3JvdW5kQ29sb3I6ZX0se3F1ZXVlOiExLGR1cmF0aW9uOmQuZmFkZVRpbWV9KTphLmNzcygiYmFja2dyb3VuZENvbG9yIixlKX1mdW5jdGlvbiBicihhKXtkLmFsbG93UmVzaXplP2E/YmIuZW5hYmxlT25seSgpOmJiLmVuYWJsZUhhbmRsZXMoKTpiYi5kaXNhYmxlSGFuZGxlcygpLGJjLnNldEN1cnNvcihkLmFsbG93U2VsZWN0PyJjcm9zc2hhaXIiOiJkZWZhdWx0IiksYmIKLnNldEN1cnNvcihkLmFsbG93TW92ZT8ibW92ZSI6ImRlZmF1bHQiKSxkLmhhc093blByb3BlcnR5KCJ0cnVlU2l6ZSIpJiYoVD1kLnRydWVTaXplWzBdL0UsVT1kLnRydWVTaXplWzFdL0YpLGQuaGFzT3duUHJvcGVydHkoInNldFNlbGVjdCIpJiYoYmcoZC5zZXRTZWxlY3QpLGJiLmRvbmUoKSxkZWxldGUgZC5zZXRTZWxlY3QpLGJhLnJlZnJlc2goKSxkLmJnQ29sb3IhPU4mJihicShkLnNoYWRlP2JhLmdldFNoYWRlcygpOkcsZC5zaGFkZT9kLnNoYWRlQ29sb3J8fGQuYmdDb2xvcjpkLmJnQ29sb3IpLE49ZC5iZ0NvbG9yKSxPIT1kLmJnT3BhY2l0eSYmKE89ZC5iZ09wYWNpdHksZC5zaGFkZT9iYS5yZWZyZXNoKCk6YmIuc2V0QmdPcGFjaXR5KE8pKSxQPWQubWF4U2l6ZVswXXx8MCxRPWQubWF4U2l6ZVsxXXx8MCxSPWQubWluU2l6ZVswXXx8MCxTPWQubWluU2l6ZVsxXXx8MCxkLmhhc093blByb3BlcnR5KCJvdXRlckltYWdlIikmJihELmF0dHIoInNyYyIsZC5vdXRlckltYWdlKSxkZWxldGUgZC5vdXRlckltYWdlKSxiYi5yZWZyZXNoKCl9dmFyIGQ9YS5leHRlbmQoe30sYS5KY3JvcC5kZWZhdWx0cyksZSxmPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxnPS9tc2llLy50ZXN0KGYpLGg9L21zaWUgWzEtNl1cLi8udGVzdChmKTt0eXBlb2YgYiE9Im9iamVjdCImJihiPWEoYilbMF0pLHR5cGVvZiBjIT0ib2JqZWN0IiYmKGM9e30pLG4oYyk7dmFyIHo9e2JvcmRlcjoibm9uZSIsdmlzaWJpbGl0eToidmlzaWJsZSIsbWFyZ2luOjAscGFkZGluZzowLHBvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowfSxBPWEoYiksQj0hMDtpZihiLnRhZ05hbWU9PSJJTUciKXtpZihBWzBdLndpZHRoIT0wJiZBWzBdLmhlaWdodCE9MClBLndpZHRoKEFbMF0ud2lkdGgpLEEuaGVpZ2h0KEFbMF0uaGVpZ2h0KTtlbHNle3ZhciBDPW5ldyBJbWFnZTtDLnNyYz1BWzBdLnNyYyxBLndpZHRoKEMud2lkdGgpLEEuaGVpZ2h0KEMuaGVpZ2h0KX12YXIgRD1BLmNsb25lKCkucmVtb3ZlQXR0cigiaWQiKS4KY3NzKHopLnNob3coKTtELndpZHRoKEEud2lkdGgoKSksRC5oZWlnaHQoQS5oZWlnaHQoKSksQS5hZnRlcihEKS5oaWRlKCl9ZWxzZSBEPUEuY3NzKHopLnNob3coKSxCPSExLGQuc2hhZGU9PT1udWxsJiYoZC5zaGFkZT0hMCk7dChELGQuYm94V2lkdGgsZC5ib3hIZWlnaHQpO3ZhciBFPUQud2lkdGgoKSxGPUQuaGVpZ2h0KCksRz1hKCI8ZGl2IC8+Iikud2lkdGgoRSkuaGVpZ2h0KEYpLmFkZENsYXNzKGooImhvbGRlciIpKS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsYmFja2dyb3VuZENvbG9yOmQuYmdDb2xvcn0pLmluc2VydEFmdGVyKEEpLmFwcGVuZChEKTtkLmFkZENsYXNzJiZHLmFkZENsYXNzKGQuYWRkQ2xhc3MpO3ZhciBIPWEoIjxkaXYgLz4iKSxJPWEoIjxkaXYgLz4iKS53aWR0aCgiMTAwJSIpLmhlaWdodCgiMTAwJSIpLmNzcyh7ekluZGV4OjMxMCxwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4ifSksSj1hKCI8ZGl2IC8+Iikud2lkdGgoIjEwMCUiKS5oZWlnaHQoIjEwMCUiKS5jc3MoInpJbmRleCIsMzIwKSxLPWEoIjxkaXYgLz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjYwMH0pLmRibGNsaWNrKGZ1bmN0aW9uKCl7dmFyIGE9Xy5nZXRGaXhlZCgpO2Qub25EYmxDbGljay5jYWxsKGJzLGEpfSkuaW5zZXJ0QmVmb3JlKEQpLmFwcGVuZChJLEopO0ImJihIPWEoIjxpbWcgLz4iKS5hdHRyKCJzcmMiLEQuYXR0cigic3JjIikpLmNzcyh6KS53aWR0aChFKS5oZWlnaHQoRiksSS5hcHBlbmQoSCkpLGgmJksuY3NzKHtvdmVyZmxvd1k6ImhpZGRlbiJ9KTt2YXIgTD1kLmJvdW5kYXJ5LE09eSgpLndpZHRoKEUrTCoyKS5oZWlnaHQoRitMKjIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6aSgtTCksbGVmdDppKC1MKSx6SW5kZXg6MjkwfSkubW91c2Vkb3duKHcpLE49ZC5iZ0NvbG9yLE89ZC5iZ09wYWNpdHksUCxRLFIsUyxULFUsVj0hMCxXLFgsWTtlPWwoRCk7dmFyIFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dmFyIGE9e30sYj1bInRvdWNoc3RhcnQiCiwidG91Y2htb3ZlIiwidG91Y2hlbmQiXSxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ7dHJ5e2ZvcihkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07ZT0ib24iK2U7dmFyIGY9ZSBpbiBjO2Z8fChjLnNldEF0dHJpYnV0ZShlLCJyZXR1cm47IiksZj10eXBlb2YgY1tlXT09ImZ1bmN0aW9uIiksYVtiW2RdXT1mfXJldHVybiBhLnRvdWNoc3RhcnQmJmEudG91Y2hlbmQmJmEudG91Y2htb3ZlfWNhdGNoKGcpe3JldHVybiExfX1mdW5jdGlvbiBiKCl7cmV0dXJuIGQudG91Y2hTdXBwb3J0PT09ITB8fGQudG91Y2hTdXBwb3J0PT09ITE/ZC50b3VjaFN1cHBvcnQ6YSgpfXJldHVybntjcmVhdGVEcmFnZ2VyOmZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZC5kaXNhYmxlZD8hMTphPT09Im1vdmUiJiYhZC5hbGxvd01vdmU/ITE6KGU9bChEKSxXPSEwLG8oYSxtKFouY2ZpbHRlcihiKSksITApLGIuc3RvcFByb3BhZ2F0aW9uKCksYi5wcmV2ZW50RGVmYXVsdCgpLCExKX19LG5ld1NlbGVjdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gdyhaLmNmaWx0ZXIoYSkpfSxjZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhZ2VYPWEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCxhLnBhZ2VZPWEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSxhfSxpc1N1cHBvcnRlZDphLHN1cHBvcnQ6YigpfX0oKSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChkKXtkPW4oZCksYz1hPWRbMF0sZT1iPWRbMV19ZnVuY3Rpb24gaShhKXthPW4oYSksZj1hWzBdLWMsZz1hWzFdLWUsYz1hWzBdLGU9YVsxXX1mdW5jdGlvbiBqKCl7cmV0dXJuW2YsZ119ZnVuY3Rpb24gayhkKXt2YXIgZj1kWzBdLGc9ZFsxXTswPmErZiYmKGYtPWYrYSksMD5iK2cmJihnLT1nK2IpLEY8ZStnJiYoZys9Ri0oZStnKSksRTxjK2YmJihmKz1FLShjK2YpKSxhKz1mLGMrPWYsYis9ZyxlKz1nfWZ1bmN0aW9uIGwoYSl7dmFyIGI9bSgpO3N3aXRjaChhKXtjYXNlIm5lIjpyZXR1cm5bCmIueDIsYi55XTtjYXNlIm53IjpyZXR1cm5bYi54LGIueV07Y2FzZSJzZSI6cmV0dXJuW2IueDIsYi55Ml07Y2FzZSJzdyI6cmV0dXJuW2IueCxiLnkyXX19ZnVuY3Rpb24gbSgpe2lmKCFkLmFzcGVjdFJhdGlvKXJldHVybiBwKCk7dmFyIGY9ZC5hc3BlY3RSYXRpbyxnPWQubWluU2l6ZVswXS9ULGg9ZC5tYXhTaXplWzBdL1QsaT1kLm1heFNpemVbMV0vVSxqPWMtYSxrPWUtYixsPU1hdGguYWJzKGopLG09TWF0aC5hYnMoayksbj1sL20scixzLHQsdTtyZXR1cm4gaD09PTAmJihoPUUqMTApLGk9PT0wJiYoaT1GKjEwKSxuPGY/KHM9ZSx0PW0qZixyPWo8MD9hLXQ6dCthLHI8MD8ocj0wLHU9TWF0aC5hYnMoKHItYSkvZikscz1rPDA/Yi11OnUrYik6cj5FJiYocj1FLHU9TWF0aC5hYnMoKHItYSkvZikscz1rPDA/Yi11OnUrYikpOihyPWMsdT1sL2Yscz1rPDA/Yi11OmIrdSxzPDA/KHM9MCx0PU1hdGguYWJzKChzLWIpKmYpLHI9ajwwP2EtdDp0K2EpOnM+RiYmKHM9Rix0PU1hdGguYWJzKHMtYikqZixyPWo8MD9hLXQ6dCthKSkscj5hPyhyLWE8Zz9yPWErZzpyLWE+aCYmKHI9YStoKSxzPmI/cz1iKyhyLWEpL2Y6cz1iLShyLWEpL2YpOnI8YSYmKGEtcjxnP3I9YS1nOmEtcj5oJiYocj1hLWgpLHM+Yj9zPWIrKGEtcikvZjpzPWItKGEtcikvZikscjwwPyhhLT1yLHI9MCk6cj5FJiYoYS09ci1FLHI9RSksczwwPyhiLT1zLHM9MCk6cz5GJiYoYi09cy1GLHM9RikscShvKGEsYixyLHMpKX1mdW5jdGlvbiBuKGEpe3JldHVybiBhWzBdPDAmJihhWzBdPTApLGFbMV08MCYmKGFbMV09MCksYVswXT5FJiYoYVswXT1FKSxhWzFdPkYmJihhWzFdPUYpLFtNYXRoLnJvdW5kKGFbMF0pLE1hdGgucm91bmQoYVsxXSldfWZ1bmN0aW9uIG8oYSxiLGMsZCl7dmFyIGU9YSxmPWMsZz1iLGg9ZDtyZXR1cm4gYzxhJiYoZT1jLGY9YSksZDxiJiYoZz1kLGg9YiksW2UsZyxmLGhdfWZ1bmN0aW9uIHAoKXt2YXIgZD1jLWEsZj1lLWIsZztyZXR1cm4gUCYmTWF0aC5hYnMoZCk+UCYmKGM9ZD4wP2ErUDphLVApLFEmJk1hdGguYWJzCihmKT5RJiYoZT1mPjA/YitROmItUSksUy9VJiZNYXRoLmFicyhmKTxTL1UmJihlPWY+MD9iK1MvVTpiLVMvVSksUi9UJiZNYXRoLmFicyhkKTxSL1QmJihjPWQ+MD9hK1IvVDphLVIvVCksYTwwJiYoYy09YSxhLT1hKSxiPDAmJihlLT1iLGItPWIpLGM8MCYmKGEtPWMsYy09YyksZTwwJiYoYi09ZSxlLT1lKSxjPkUmJihnPWMtRSxhLT1nLGMtPWcpLGU+RiYmKGc9ZS1GLGItPWcsZS09ZyksYT5FJiYoZz1hLUYsZS09ZyxiLT1nKSxiPkYmJihnPWItRixlLT1nLGItPWcpLHEobyhhLGIsYyxlKSl9ZnVuY3Rpb24gcShhKXtyZXR1cm57eDphWzBdLHk6YVsxXSx4MjphWzJdLHkyOmFbM10sdzphWzJdLWFbMF0saDphWzNdLWFbMV19fXZhciBhPTAsYj0wLGM9MCxlPTAsZixnO3JldHVybntmbGlwQ29vcmRzOm8sc2V0UHJlc3NlZDpoLHNldEN1cnJlbnQ6aSxnZXRPZmZzZXQ6aixtb3ZlT2Zmc2V0OmssZ2V0Q29ybmVyOmwsZ2V0Rml4ZWQ6bX19KCksYmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGEsYil7ZS5sZWZ0LmNzcyh7aGVpZ2h0OmkoYil9KSxlLnJpZ2h0LmNzcyh7aGVpZ2h0OmkoYil9KX1mdW5jdGlvbiBnKCl7cmV0dXJuIGgoXy5nZXRGaXhlZCgpKX1mdW5jdGlvbiBoKGEpe2UudG9wLmNzcyh7bGVmdDppKGEueCksd2lkdGg6aShhLncpLGhlaWdodDppKGEueSl9KSxlLmJvdHRvbS5jc3Moe3RvcDppKGEueTIpLGxlZnQ6aShhLngpLHdpZHRoOmkoYS53KSxoZWlnaHQ6aShGLWEueTIpfSksZS5yaWdodC5jc3Moe2xlZnQ6aShhLngyKSx3aWR0aDppKEUtYS54Mil9KSxlLmxlZnQuY3NzKHt3aWR0aDppKGEueCl9KX1mdW5jdGlvbiBqKCl7cmV0dXJuIGEoIjxkaXYgLz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYmFja2dyb3VuZENvbG9yOmQuc2hhZGVDb2xvcnx8ZC5iZ0NvbG9yfSkuYXBwZW5kVG8oYyl9ZnVuY3Rpb24gaygpe2J8fChiPSEwLGMuaW5zZXJ0QmVmb3JlKEQpLGcoKSxiYi5zZXRCZ09wYWNpdHkoMSwwLDEpLEguaGlkZSgpLGwoZC5zaGFkZUNvbG9yfHxkLmJnQ29sb3IsMSksYmIuCmlzQXdha2UoKT9uKGQuYmdPcGFjaXR5LDEpOm4oMSwxKSl9ZnVuY3Rpb24gbChhLGIpe2JxKHAoKSxhLGIpfWZ1bmN0aW9uIG0oKXtiJiYoYy5yZW1vdmUoKSxILnNob3coKSxiPSExLGJiLmlzQXdha2UoKT9iYi5zZXRCZ09wYWNpdHkoZC5iZ09wYWNpdHksMSwxKTooYmIuc2V0QmdPcGFjaXR5KDEsMSwxKSxiYi5kaXNhYmxlSGFuZGxlcygpKSxicShHLDAsMSkpfWZ1bmN0aW9uIG4oYSxlKXtiJiYoZC5iZ0ZhZGUmJiFlP2MuYW5pbWF0ZSh7b3BhY2l0eToxLWF9LHtxdWV1ZTohMSxkdXJhdGlvbjpkLmZhZGVUaW1lfSk6Yy5jc3Moe29wYWNpdHk6MS1hfSkpfWZ1bmN0aW9uIG8oKXtkLnNoYWRlP2soKTptKCksYmIuaXNBd2FrZSgpJiZuKGQuYmdPcGFjaXR5KX1mdW5jdGlvbiBwKCl7cmV0dXJuIGMuY2hpbGRyZW4oKX12YXIgYj0hMSxjPWEoIjxkaXYgLz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjI0MCxvcGFjaXR5OjB9KSxlPXt0b3A6aigpLGxlZnQ6aigpLmhlaWdodChGKSxyaWdodDpqKCkuaGVpZ2h0KEYpLGJvdHRvbTpqKCl9O3JldHVybnt1cGRhdGU6Zyx1cGRhdGVSYXc6aCxnZXRTaGFkZXM6cCxzZXRCZ0NvbG9yOmwsZW5hYmxlOmssZGlzYWJsZTptLHJlc2l6ZTpmLHJlZnJlc2g6byxvcGFjaXR5Om59fSgpLGJiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gayhiKXt2YXIgYz1hKCI8ZGl2IC8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG9wYWNpdHk6ZC5ib3JkZXJPcGFjaXR5fSkuYWRkQ2xhc3MoaihiKSk7cmV0dXJuIEkuYXBwZW5kKGMpLGN9ZnVuY3Rpb24gbChiLGMpe3ZhciBkPWEoIjxkaXYgLz4iKS5tb3VzZWRvd24ocyhiKSkuY3NzKHtjdXJzb3I6YisiLXJlc2l6ZSIscG9zaXRpb246ImFic29sdXRlIix6SW5kZXg6Y30pLmFkZENsYXNzKCJvcmQtIitiKTtyZXR1cm4gWi5zdXBwb3J0JiZkLmJpbmQoInRvdWNoc3RhcnQuamNyb3AiLFouY3JlYXRlRHJhZ2dlcihiKSksSi5hcHBlbmQoZCksZH1mdW5jdGlvbiBtKGEpe3ZhciBiPWQuaGFuZGxlU2l6ZSxlPWwoYSxjKysKKS5jc3Moe29wYWNpdHk6ZC5oYW5kbGVPcGFjaXR5fSkuYWRkQ2xhc3MoaigiaGFuZGxlIikpO3JldHVybiBiJiZlLndpZHRoKGIpLmhlaWdodChiKSxlfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGwoYSxjKyspLmFkZENsYXNzKCJqY3JvcC1kcmFnYmFyIil9ZnVuY3Rpb24gbyhhKXt2YXIgYjtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWdbYVtiXV09bihhW2JdKX1mdW5jdGlvbiBwKGEpe3ZhciBiLGM7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyl7c3dpdGNoKGFbY10pe2Nhc2UibiI6Yj0iaGxpbmUiO2JyZWFrO2Nhc2UicyI6Yj0iaGxpbmUgYm90dG9tIjticmVhaztjYXNlImUiOmI9InZsaW5lIHJpZ2h0IjticmVhaztjYXNlInciOmI9InZsaW5lIn1lW2FbY11dPWsoYil9fWZ1bmN0aW9uIHEoYSl7dmFyIGI7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKylmW2FbYl1dPW0oYVtiXSl9ZnVuY3Rpb24gcihhLGIpe2Quc2hhZGV8fEguY3NzKHt0b3A6aSgtYiksbGVmdDppKC1hKX0pLEsuY3NzKHt0b3A6aShiKSxsZWZ0OmkoYSl9KX1mdW5jdGlvbiB0KGEsYil7Sy53aWR0aChNYXRoLnJvdW5kKGEpKS5oZWlnaHQoTWF0aC5yb3VuZChiKSl9ZnVuY3Rpb24gdigpe3ZhciBhPV8uZ2V0Rml4ZWQoKTtfLnNldFByZXNzZWQoW2EueCxhLnldKSxfLnNldEN1cnJlbnQoW2EueDIsYS55Ml0pLHcoKX1mdW5jdGlvbiB3KGEpe2lmKGIpcmV0dXJuIHgoYSl9ZnVuY3Rpb24geChhKXt2YXIgYz1fLmdldEZpeGVkKCk7dChjLncsYy5oKSxyKGMueCxjLnkpLGQuc2hhZGUmJmJhLnVwZGF0ZVJhdyhjKSxifHxBKCksYT9kLm9uU2VsZWN0LmNhbGwoYnMsdShjKSk6ZC5vbkNoYW5nZS5jYWxsKGJzLHUoYykpfWZ1bmN0aW9uIHooYSxjLGUpe2lmKCFiJiYhYylyZXR1cm47ZC5iZ0ZhZGUmJiFlP0QuYW5pbWF0ZSh7b3BhY2l0eTphfSx7cXVldWU6ITEsZHVyYXRpb246ZC5mYWRlVGltZX0pOkQuY3NzKCJvcGFjaXR5IixhKX1mdW5jdGlvbiBBKCl7Sy5zaG93KCksZC5zaGFkZT9iYS5vcGFjaXR5KE8pOnooTywhMCksYj0hMH1mdW5jdGlvbiBCCigpe0YoKSxLLmhpZGUoKSxkLnNoYWRlP2JhLm9wYWNpdHkoMSk6eigxKSxiPSExLGQub25SZWxlYXNlLmNhbGwoYnMpfWZ1bmN0aW9uIEMoKXtoJiZKLnNob3coKX1mdW5jdGlvbiBFKCl7aD0hMDtpZihkLmFsbG93UmVzaXplKXJldHVybiBKLnNob3coKSwhMH1mdW5jdGlvbiBGKCl7aD0hMSxKLmhpZGUoKX1mdW5jdGlvbiBHKGEpe2E/KFg9ITAsRigpKTooWD0hMSxFKCkpfWZ1bmN0aW9uIEwoKXtHKCExKSx2KCl9dmFyIGIsYz0zNzAsZT17fSxmPXt9LGc9e30saD0hMTtkLmRyYWdFZGdlcyYmYS5pc0FycmF5KGQuY3JlYXRlRHJhZ2JhcnMpJiZvKGQuY3JlYXRlRHJhZ2JhcnMpLGEuaXNBcnJheShkLmNyZWF0ZUhhbmRsZXMpJiZxKGQuY3JlYXRlSGFuZGxlcyksZC5kcmF3Qm9yZGVycyYmYS5pc0FycmF5KGQuY3JlYXRlQm9yZGVycykmJnAoZC5jcmVhdGVCb3JkZXJzKSxhKGRvY3VtZW50KS5iaW5kKCJ0b3VjaHN0YXJ0Lmpjcm9wLWlvcyIsZnVuY3Rpb24oYil7YShiLmN1cnJlbnRUYXJnZXQpLmhhc0NsYXNzKCJqY3JvcC10cmFja2VyIikmJmIuc3RvcFByb3BhZ2F0aW9uKCl9KTt2YXIgTT15KCkubW91c2Vkb3duKHMoIm1vdmUiKSkuY3NzKHtjdXJzb3I6Im1vdmUiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjM2MH0pO3JldHVybiBaLnN1cHBvcnQmJk0uYmluZCgidG91Y2hzdGFydC5qY3JvcCIsWi5jcmVhdGVEcmFnZ2VyKCJtb3ZlIikpLEkuYXBwZW5kKE0pLEYoKSx7dXBkYXRlVmlzaWJsZTp3LHVwZGF0ZTp4LHJlbGVhc2U6QixyZWZyZXNoOnYsaXNBd2FrZTpmdW5jdGlvbigpe3JldHVybiBifSxzZXRDdXJzb3I6ZnVuY3Rpb24oYSl7TS5jc3MoImN1cnNvciIsYSl9LGVuYWJsZUhhbmRsZXM6RSxlbmFibGVPbmx5OmZ1bmN0aW9uKCl7aD0hMH0sc2hvd0hhbmRsZXM6QyxkaXNhYmxlSGFuZGxlczpGLGFuaW1Nb2RlOkcsc2V0QmdPcGFjaXR5OnosZG9uZTpMfX0oKSxiYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYil7TS5jc3Moe3pJbmRleDo0NTB9KSxiP2EoZG9jdW1lbnQpLmJpbmQoInRvdWNobW92ZS5qY3JvcCIKLGspLmJpbmQoInRvdWNoZW5kLmpjcm9wIixsKTplJiZhKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUuamNyb3AiLGgpLmJpbmQoIm1vdXNldXAuamNyb3AiLGkpfWZ1bmN0aW9uIGcoKXtNLmNzcyh7ekluZGV4OjI5MH0pLGEoZG9jdW1lbnQpLnVuYmluZCgiLmpjcm9wIil9ZnVuY3Rpb24gaChhKXtyZXR1cm4gYihtKGEpKSwhMX1mdW5jdGlvbiBpKGEpe3JldHVybiBhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSxXJiYoVz0hMSxjKG0oYSkpLGJiLmlzQXdha2UoKSYmZC5vblNlbGVjdC5jYWxsKGJzLHUoXy5nZXRGaXhlZCgpKSksZygpLGI9ZnVuY3Rpb24oKXt9LGM9ZnVuY3Rpb24oKXt9KSwhMX1mdW5jdGlvbiBqKGEsZCxlKXtyZXR1cm4gVz0hMCxiPWEsYz1kLGYoZSksITF9ZnVuY3Rpb24gayhhKXtyZXR1cm4gYihtKFouY2ZpbHRlcihhKSkpLCExfWZ1bmN0aW9uIGwoYSl7cmV0dXJuIGkoWi5jZmlsdGVyKGEpKX1mdW5jdGlvbiBuKGEpe00uY3NzKCJjdXJzb3IiLGEpfXZhciBiPWZ1bmN0aW9uKCl7fSxjPWZ1bmN0aW9uKCl7fSxlPWQudHJhY2tEb2N1bWVudDtyZXR1cm4gZXx8TS5tb3VzZW1vdmUoaCkubW91c2V1cChpKS5tb3VzZW91dChpKSxELmJlZm9yZShNKSx7YWN0aXZhdGVIYW5kbGVyczpqLHNldEN1cnNvcjpufX0oKSxiZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtkLmtleVN1cHBvcnQmJihiLnNob3coKSxiLmZvY3VzKCkpfWZ1bmN0aW9uIGYoYSl7Yi5oaWRlKCl9ZnVuY3Rpb24gZyhhLGIsYyl7ZC5hbGxvd01vdmUmJihfLm1vdmVPZmZzZXQoW2IsY10pLGJiLnVwZGF0ZVZpc2libGUoITApKSxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBpKGEpe2lmKGEuY3RybEtleXx8YS5tZXRhS2V5KXJldHVybiEwO1k9YS5zaGlmdEtleT8hMDohMTt2YXIgYj1ZPzEwOjE7c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSAzNzpnKGEsLWIsMCk7YnJlYWs7Y2FzZSAzOTpnKGEsYiwwKTticmVhaztjYXNlIDM4OmcoYSwwLC1iKTticmVhazsKY2FzZSA0MDpnKGEsMCxiKTticmVhaztjYXNlIDI3OmQuYWxsb3dTZWxlY3QmJmJiLnJlbGVhc2UoKTticmVhaztjYXNlIDk6cmV0dXJuITB9cmV0dXJuITF9dmFyIGI9YSgnPGlucHV0IHR5cGU9InJhZGlvIiAvPicpLmNzcyh7cG9zaXRpb246ImZpeGVkIixsZWZ0OiItMTIwcHgiLHdpZHRoOiIxMnB4In0pLmFkZENsYXNzKCJqY3JvcC1rZXltZ3IiKSxjPWEoIjxkaXYgLz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsb3ZlcmZsb3c6ImhpZGRlbiJ9KS5hcHBlbmQoYik7cmV0dXJuIGQua2V5U3VwcG9ydCYmKGIua2V5ZG93bihpKS5ibHVyKGYpLGh8fCFkLmZpeGVkU3VwcG9ydD8oYi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTIwcHgifSksYy5hcHBlbmQoYikuaW5zZXJ0QmVmb3JlKEQpKTpiLmluc2VydEJlZm9yZShEKSkse3dhdGNoS2V5czplfX0oKTtaLnN1cHBvcnQmJk0uYmluZCgidG91Y2hzdGFydC5qY3JvcCIsWi5uZXdTZWxlY3Rpb24pLEouaGlkZSgpLGJyKCEwKTt2YXIgYnM9e3NldEltYWdlOmJwLGFuaW1hdGVUbzpiZixzZXRTZWxlY3Q6Ymcsc2V0T3B0aW9uczpiayx0ZWxsU2VsZWN0OmJpLHRlbGxTY2FsZWQ6Ymosc2V0Q2xhc3M6YmUsZGlzYWJsZTpibCxlbmFibGU6Ym0sY2FuY2VsOmJuLHJlbGVhc2U6YmIucmVsZWFzZSxkZXN0cm95OmJvLGZvY3VzOmJkLndhdGNoS2V5cyxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm5bRSpULEYqVV19LGdldFdpZGdldFNpemU6ZnVuY3Rpb24oKXtyZXR1cm5bRSxGXX0sZ2V0U2NhbGVGYWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm5bVCxVXX0sZ2V0T3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBkfSx1aTp7aG9sZGVyOkcsc2VsZWN0aW9uOkt9fTtyZXR1cm4gZyYmRy5iaW5kKCJzZWxlY3RzdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLEEuZGF0YSgiSmNyb3AiLGJzKSxic30sYS5mbi5KY3JvcD1mdW5jdGlvbihiLGMpe3ZhciBkO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihhKHRoaXMpLmRhdGEoIkpjcm9wIikpe2lmKApiPT09ImFwaSIpcmV0dXJuIGEodGhpcykuZGF0YSgiSmNyb3AiKTthKHRoaXMpLmRhdGEoIkpjcm9wIikuc2V0T3B0aW9ucyhiKX1lbHNlIHRoaXMudGFnTmFtZT09IklNRyI/YS5KY3JvcC5Mb2FkZXIodGhpcyxmdW5jdGlvbigpe2EodGhpcykuY3NzKHtkaXNwbGF5OiJibG9jayIsdmlzaWJpbGl0eToiaGlkZGVuIn0pLGQ9YS5KY3JvcCh0aGlzLGIpLGEuaXNGdW5jdGlvbihjKSYmYy5jYWxsKGQpfSk6KGEodGhpcykuY3NzKHtkaXNwbGF5OiJibG9jayIsdmlzaWJpbGl0eToiaGlkZGVuIn0pLGQ9YS5KY3JvcCh0aGlzLGIpLGEuaXNGdW5jdGlvbihjKSYmYy5jYWxsKGQpKX0pLHRoaXN9LGEuSmNyb3AuTG9hZGVyPWZ1bmN0aW9uKGIsYyxkKXtmdW5jdGlvbiBnKCl7Zi5jb21wbGV0ZT8oZS51bmJpbmQoIi5qY2xvYWRlciIpLGEuaXNGdW5jdGlvbihjKSYmYy5jYWxsKGYpKTp3aW5kb3cuc2V0VGltZW91dChnLDUwKX12YXIgZT1hKGIpLGY9ZVswXTtlLmJpbmQoImxvYWQuamNsb2FkZXIiLGcpLmJpbmQoImVycm9yLmpjbG9hZGVyIixmdW5jdGlvbihiKXtlLnVuYmluZCgiLmpjbG9hZGVyIiksYS5pc0Z1bmN0aW9uKGQpJiZkLmNhbGwoZil9KSxmLmNvbXBsZXRlJiZhLmlzRnVuY3Rpb24oYykmJihlLnVuYmluZCgiLmpjbG9hZGVyIiksYy5jYWxsKGYpKX0sYS5KY3JvcC5kZWZhdWx0cz17YWxsb3dTZWxlY3Q6ITAsYWxsb3dNb3ZlOiEwLGFsbG93UmVzaXplOiEwLHRyYWNrRG9jdW1lbnQ6ITAsYmFzZUNsYXNzOiJqY3JvcCIsYWRkQ2xhc3M6bnVsbCxiZ0NvbG9yOiJibGFjayIsYmdPcGFjaXR5Oi42LGJnRmFkZTohMSxib3JkZXJPcGFjaXR5Oi40LGhhbmRsZU9wYWNpdHk6LjUsaGFuZGxlU2l6ZTpudWxsLGFzcGVjdFJhdGlvOjAsa2V5U3VwcG9ydDohMCxjcmVhdGVIYW5kbGVzOlsibiIsInMiLCJlIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0sY3JlYXRlRHJhZ2JhcnM6WyJuIiwicyIsImUiLCJ3Il0sY3JlYXRlQm9yZGVyczpbIm4iLCJzIiwiZSIsInciXSxkcmF3Qm9yZGVyczohMCxkcmFnRWRnZXMKOiEwLGZpeGVkU3VwcG9ydDohMCx0b3VjaFN1cHBvcnQ6bnVsbCxzaGFkZTpudWxsLGJveFdpZHRoOjAsYm94SGVpZ2h0OjAsYm91bmRhcnk6MixmYWRlVGltZTo0MDAsYW5pbWF0aW9uRGVsYXk6MjAsc3dpbmdTcGVlZDozLG1pblNlbGVjdDpbMCwwXSxtYXhTaXplOlswLDBdLG1pblNpemU6WzAsMF0sb25DaGFuZ2U6ZnVuY3Rpb24oKXt9LG9uU2VsZWN0OmZ1bmN0aW9uKCl7fSxvbkRibENsaWNrOmZ1bmN0aW9uKCl7fSxvblJlbGVhc2U6ZnVuY3Rpb24oKXt9fX0pKGpRdWVyeSk7CQoKLypqcXVlcnkubmljZXNjcm9sbCAzLjYuOCBJbnVZYWtzYSovCiFmdW5jdGlvbih4KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLHgpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz14KHJlcXVpcmUoImpxdWVyeSIpKTp4KGpRdWVyeSl9KGZ1bmN0aW9uKHgpe3ZhciBhPSExLGI9ITEsYz0wLGQ9MmUzLGU9MCxmPVsid2Via2l0IiwibXMiLCJtb3oiLCJvIl0sZz13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwhMSxoPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8ITE7aWYoIWcpZm9yKHZhciBpIGluIGYpe3ZhciBqPWZbaV07aWYoZz13aW5kb3dbaisiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0pe2g9d2luZG93W2orIkNhbmNlbEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1tqKyJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXTticmVha319dmFyIGs9d2luZG93Lk11dGF0aW9uT2JzZXJ2ZXJ8fHdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyfHwhMSxsPXt6aW5kZXg6ImF1dG8iLGN1cnNvcm9wYWNpdHltaW46MCxjdXJzb3JvcGFjaXR5bWF4OjEsY3Vyc29yY29sb3I6IiM0MjQyNDIiLGN1cnNvcndpZHRoOiI1cHgiLGN1cnNvcmJvcmRlcjoiMXB4IHNvbGlkICNmZmYiLGN1cnNvcmJvcmRlcnJhZGl1czoiNXB4IixzY3JvbGxzcGVlZDo2MCxtb3VzZXNjcm9sbHN0ZXA6NzAsdG91Y2hiZWhhdmlvcjohMSxod2FjY2VsZXJhdGlvbjohMCx1c2V0cmFuc2l0aW9uOiEwLGJveHpvb206ITEsZGJsY2xpY2t6b29tOiEwLGdlc3R1cmV6b29tOiEwLGdyYWJjdXJzb3JlbmFibGVkOiEwLGF1dG9oaWRlbW9kZTohMCxiYWNrZ3JvdW5kOiIiLGlmcmFtZWF1dG9yZXNpemU6ITAsY3Vyc29ybWluaGVpZ2h0OjMyLHByZXNlcnZlbmF0aXZlc2Nyb2xsaW5nOiEwLHJhaWxvZmZzZXQ6ITEscmFpbGhvZmZzZXQ6ITEsYm91bmNlc2Nyb2xsOiEwLHNwYWNlYmFyZW5hYmxlZDohMCxyYWlscGFkZGluZzp7dG9wOjAscmlnaHQ6MCxsZWZ0OjAsYm90dG9tOjB9LGRpc2FibGVvdXRsaW5lOiEwLGhvcml6cmFpbGVuYWJsZWQ6ITAscmFpbGFsaWduOiJyaWdodCIscmFpbHZhbGlnbjoiYm90dG9tIixlbmFibGV0cmFuc2xhdGUzZDohMCxlbmFibGVtb3VzZXdoZWVsOiEwLGVuYWJsZWtleWJvYXJkOiEwLHNtb290aHNjcm9sbDohMCxzZW5zaXRpdmVyYWlsOiEwLGVuYWJsZW1vdXNlbG9ja2FwaTohMCxjdXJzb3JmaXhlZGhlaWdodDohMSxkaXJlY3Rpb25sb2NrZGVhZHpvbmU6NixoaWRlY3Vyc29yZGVsYXk6NDAwLG5hdGl2ZXBhcmVudHNjcm9sbGluZzohMCxlbmFibGVzY3JvbGxvbnNlbGVjdGlvbjohMCxvdmVyZmxvd3g6ITAsb3ZlcmZsb3d5OiEwLGN1cnNvcmRyYWdzcGVlZDouMyxydGxtb2RlOiJhdXRvIixjdXJzb3JkcmFnb250b3VjaDohMSxvbmVheGlzbW91c2Vtb2RlOiJhdXRvIixzY3JpcHRwYXRoOmZ1bmN0aW9uKCl7dmFyIHg7cmV0dXJuIDA8KHg9KHg9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKS5sZW5ndGg/eFt4Lmxlbmd0aC0xXS5zcmMuc3BsaXQoIj8iKVswXToiIikuc3BsaXQoIi8iKS5sZW5ndGg/eC5zcGxpdCgiLyIpLnNsaWNlKDAsLTEpLmpvaW4oIi8iKSsiLyI6IiJ9KCkscHJldmVudG11bHRpdG91Y2hzY3JvbGxpbmc6ITAsZGlzYWJsZW11dGF0aW9ub2JzZXJ2ZXI6ITF9LG09ITEsbj1mdW5jdGlvbigpe2lmKG0pcmV0dXJuIG07dmFyIHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksYT14LnN0eWxlLGI9bmF2aWdhdG9yLnVzZXJBZ2VudCxjPW5hdmlnYXRvci5wbGF0Zm9ybSxkPXtoYXNwb2ludGVybG9jazoicG9pbnRlckxvY2tFbGVtZW50ImluIGRvY3VtZW50fHwid2Via2l0UG9pbnRlckxvY2tFbGVtZW50ImluIGRvY3VtZW50fHwibW96UG9pbnRlckxvY2tFbGVtZW50ImluIGRvY3VtZW50fTtkLmlzb3BlcmE9Im9wZXJhImluIHdpbmRvdyxkLmlzb3BlcmExMj1kLmlzb3BlcmEmJiJnZXRVc2VyTWVkaWEiaW4gbmF2aWdhdG9yLGQuaXNvcGVyYW1pbmk9IltvYmplY3QgT3BlcmFNaW5pXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod2luZG93Lm9wZXJhbWluaSksZC5pc2llPSJhbGwiaW4gZG9jdW1lbnQmJiJhdHRhY2hFdmVudCJpbiB4JiYhZC5pc29wZXJhLGQuaXNpZW9sZD1kLmlzaWUmJiEoIm1zSW50ZXJwb2xhdGlvbk1vZGUiaW4gYSksZC5pc2llNz1kLmlzaWUmJiFkLmlzaWVvbGQmJighKCJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQpfHw3PT1kb2N1bWVudC5kb2N1bWVudE1vZGUpLGQuaXNpZTg9ZC5pc2llJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiY4PT1kb2N1bWVudC5kb2N1bWVudE1vZGUsZC5pc2llOT1kLmlzaWUmJiJwZXJmb3JtYW5jZSJpbiB3aW5kb3cmJjk9PWRvY3VtZW50LmRvY3VtZW50TW9kZSxkLmlzaWUxMD1kLmlzaWUmJiJwZXJmb3JtYW5jZSJpbiB3aW5kb3cmJjEwPT1kb2N1bWVudC5kb2N1bWVudE1vZGUsZC5pc2llMTE9Im1zUmVxdWVzdEZ1bGxzY3JlZW4iaW4geCYmMTE8PWRvY3VtZW50LmRvY3VtZW50TW9kZSxkLmlzaWVlZGdlMTI9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZVwvMTJcLi8pLGQuaXNpZWVkZ2U9Im1zT3ZlcmZsb3dTdHlsZSJpbiB4LGQuaXNtb2Rlcm5pZT1kLmlzaWUxMXx8ZC5pc2llZWRnZSxkLmlzaWU5bW9iaWxlPS9pZW1vYmlsZS45L2kudGVzdChiKSxkLmlzaWU5bW9iaWxlJiYoZC5pc2llOT0hMSksZC5pc2llN21vYmlsZT0hZC5pc2llOW1vYmlsZSYmZC5pc2llNyYmL2llbW9iaWxlL2kudGVzdChiKSxkLmlzbW96aWxsYT0iTW96QXBwZWFyYW5jZSJpbiBhLGQuaXN3ZWJraXQ9IldlYmtpdEFwcGVhcmFuY2UiaW4gYSxkLmlzY2hyb21lPSJjaHJvbWUiaW4gd2luZG93LGQuaXNjaHJvbWUzOD1kLmlzY2hyb21lJiYidG91Y2hBY3Rpb24iaW4gYSxkLmlzY2hyb21lMjI9IWQuaXNjaHJvbWUzOCYmZC5pc2Nocm9tZSYmZC5oYXNwb2ludGVybG9jayxkLmlzY2hyb21lMjY9IWQuaXNjaHJvbWUzOCYmZC5pc2Nocm9tZSYmInRyYW5zaXRpb24iaW4gYSxkLmNhbnRvdWNoPSJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwib250b3VjaHN0YXJ0ImluIHdpbmRvdyxkLmhhc3czY3RvdWNoPSEhd2luZG93LlBvaW50ZXJFdmVudCYmKDA8bmF2aWdhdG9yLk1heFRvdWNoUG9pbnRzfHwwPG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzKSxkLmhhc21zdG91Y2g9IWQuaGFzdzNjdG91Y2gmJih3aW5kb3cuTVNQb2ludGVyRXZlbnR8fCExKSxkLmlzbWFjPS9ebWFjJC9pLnRlc3QoYyksZC5pc2lvcz1kLmNhbnRvdWNoJiYvaXBob25lfGlwYWR8aXBvZC9pLnRlc3QoYyksZC5pc2lvczQ9ZC5pc2lvcyYmISgic2VhbCJpbiBPYmplY3QpLGQuaXNpb3M3PWQuaXNpb3MmJiJ3ZWJraXRIaWRkZW4iaW4gZG9jdW1lbnQsZC5pc2lvczg9ZC5pc2lvcyYmImhpZGRlbiJpbiBkb2N1bWVudCxkLmlzYW5kcm9pZD0vYW5kcm9pZC9pLnRlc3QoYiksZC5oYXNldmVudGxpc3RlbmVyPSJhZGRFdmVudExpc3RlbmVyImluIHgsZC50cnN0eWxlPSExLGQuaGFzdHJhbnNmb3JtPSExLGQuaGFzdHJhbnNsYXRlM2Q9ITEsZC50cmFuc2l0aW9uc3R5bGU9ITEsZC5oYXN0cmFuc2l0aW9uPSExLGQudHJhbnNpdGlvbmVuZD0hMSxjPVsidHJhbnNmb3JtIiwibXNUcmFuc2Zvcm0iLCJ3ZWJraXRUcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJPVHJhbnNmb3JtIl07Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKylpZih2b2lkIDAhPT1hW2NbYl1dKXtkLnRyc3R5bGU9Y1tiXTticmVha31kLmhhc3RyYW5zZm9ybT0hIWQudHJzdHlsZSxkLmhhc3RyYW5zZm9ybSYmKGFbZC50cnN0eWxlXT0idHJhbnNsYXRlM2QoMXB4LDJweCwzcHgpIixkLmhhc3RyYW5zbGF0ZTNkPS90cmFuc2xhdGUzZC8udGVzdChhW2QudHJzdHlsZV0pKSxkLnRyYW5zaXRpb25zdHlsZT0hMSxkLnByZWZpeHN0eWxlPSIiLGQudHJhbnNpdGlvbmVuZD0hMTtjPSJ0cmFuc2l0aW9uIHdlYmtpdFRyYW5zaXRpb24gbXNUcmFuc2l0aW9uIE1velRyYW5zaXRpb24gT1RyYW5zaXRpb24gT1RyYW5zaXRpb24gS2h0bWxUcmFuc2l0aW9uIi5zcGxpdCgiICIpO3ZhciBlPSIgLXdlYmtpdC0gLW1zLSAtbW96LSAtby0gLW8gLWtodG1sLSIuc3BsaXQoIiAiKSxmPSJ0cmFuc2l0aW9uZW5kIHdlYmtpdFRyYW5zaXRpb25FbmQgbXNUcmFuc2l0aW9uRW5kIHRyYW5zaXRpb25lbmQgb3RyYW5zaXRpb25lbmQgb1RyYW5zaXRpb25FbmQgS2h0bWxUcmFuc2l0aW9uRW5kIi5zcGxpdCgiICIpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspaWYoY1tiXWluIGEpe2QudHJhbnNpdGlvbnN0eWxlPWNbYl0sZC5wcmVmaXhzdHlsZT1lW2JdLGQudHJhbnNpdGlvbmVuZD1mW2JdO2JyZWFrfWQuaXNjaHJvbWUyNiYmKGQucHJlZml4c3R5bGU9ZVsxXSksZC5oYXN0cmFuc2l0aW9uPWQudHJhbnNpdGlvbnN0eWxlO3g6e2ZvcihiPVsiZ3JhYiIsIi13ZWJraXQtZ3JhYiIsIi1tb3otZ3JhYiJdLChkLmlzY2hyb21lJiYhZC5pc2Nocm9tZTM4fHxkLmlzaWUpJiYoYj1bXSksYz0wO2M8Yi5sZW5ndGg7YysrKWlmKGU9YltjXSxhLmN1cnNvcj1lLGEuY3Vyc29yPT1lKXthPWU7YnJlYWsgeH1hPSJ1cmwoLy9wYXRyaWNpYXBvcnRmb2xpby5nb29nbGVjb2RlLmNvbS9maWxlcy9vcGVuaGFuZC5jdXIpLG4tcmVzaXplIn1yZXR1cm4gZC5jdXJzb3JncmFidmFsdWU9YSxkLmhhc21vdXNlY2FwdHVyZT0ic2V0Q2FwdHVyZSJpbiB4LGQuaGFzTXV0YXRpb25PYnNlcnZlcj0hMSE9PWssbT1kfSxvPWZ1bmN0aW9uKGYsaSl7ZnVuY3Rpb24gaigpe3ZhciB4PXMuZG9jLmNzcyh2LnRyc3R5bGUpO3JldHVybiEoIXh8fCJtYXRyaXgiIT14LnN1YnN0cigwLDYpKSYmeC5yZXBsYWNlKC9eLipcKCguKilcKSQvZywiJDEiKS5yZXBsYWNlKC9weC9nLCIiKS5zcGxpdCgvLCArLyl9ZnVuY3Rpb24gbSgpe3ZhciB4PXMud2luO2lmKCJ6SW5kZXgiaW4geClyZXR1cm4geC56SW5kZXgoKTtmb3IoOzA8eC5sZW5ndGgmJjkhPXhbMF0ubm9kZVR5cGU7KXt2YXIgYT14LmNzcygiekluZGV4Iik7aWYoIWlzTmFOKGEpJiYwIT1hKXJldHVybiBwYXJzZUludChhKTt4PXgucGFyZW50KCl9cmV0dXJuITF9ZnVuY3Rpb24gbyh4LGEsYil7cmV0dXJuIGE9eC5jc3MoYSkseD1wYXJzZUZsb2F0KGEpLGlzTmFOKHgpPyhiPTM9PSh4PUFbYV18fDApP2I/cy53aW4ub3V0ZXJIZWlnaHQoKS1zLndpbi5pbm5lckhlaWdodCgpOnMud2luLm91dGVyV2lkdGgoKS1zLndpbi5pbm5lcldpZHRoKCk6MSxzLmlzaWU4JiZ4JiYoeCs9MSksYj94OjApOnh9ZnVuY3Rpb24gcSh4LGEsYixjKXtzLl9iaW5kKHgsYSxmdW5jdGlvbihjKXt2YXIgZD17b3JpZ2luYWw6Yz1jfHx3aW5kb3cuZXZlbnQsdGFyZ2V0OmMudGFyZ2V0fHxjLnNyY0VsZW1lbnQsdHlwZToid2hlZWwiLGRlbHRhTW9kZToiTW96TW91c2VQaXhlbFNjcm9sbCI9PWMudHlwZT8wOjEsZGVsdGFYOjAsZGVsdGFaOjAscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5wcmV2ZW50RGVmYXVsdD9jLnByZXZlbnREZWZhdWx0KCk6Yy5yZXR1cm5WYWx1ZT0hMSwhMX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7Yy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24/Yy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTpjLmNhbmNlbEJ1YmJsZT0hMH19O3JldHVybiJtb3VzZXdoZWVsIj09YT8oYy53aGVlbERlbHRhWCYmKGQuZGVsdGFYPS0uMDI1KmMud2hlZWxEZWx0YVgpLGMud2hlZWxEZWx0YVkmJihkLmRlbHRhWT0tLjAyNSpjLndoZWVsRGVsdGFZKSxkLmRlbHRhWXx8ZC5kZWx0YVh8fChkLmRlbHRhWT0tLjAyNSpjLndoZWVsRGVsdGEpKTpkLmRlbHRhWT1jLmRldGFpbCxiLmNhbGwoeCxkKX0sYyl9ZnVuY3Rpb24gcih4LGEsYil7dmFyIGMsZDtpZigwPT14LmRlbHRhTW9kZT8oYz0tTWF0aC5mbG9vcihzLm9wdC5tb3VzZXNjcm9sbHN0ZXAvNTQqeC5kZWx0YVgpLGQ9LU1hdGguZmxvb3Iocy5vcHQubW91c2VzY3JvbGxzdGVwLzU0KnguZGVsdGFZKSk6MT09eC5kZWx0YU1vZGUmJihjPS1NYXRoLmZsb29yKHguZGVsdGFYKnMub3B0Lm1vdXNlc2Nyb2xsc3RlcCksZD0tTWF0aC5mbG9vcih4LmRlbHRhWSpzLm9wdC5tb3VzZXNjcm9sbHN0ZXApKSxhJiZzLm9wdC5vbmVheGlzbW91c2Vtb2RlJiYwPT1jJiZkJiYoYz1kLGQ9MCxiJiYoMD5jP3MuZ2V0U2Nyb2xsTGVmdCgpPj1zLnBhZ2UubWF4dzowPj1zLmdldFNjcm9sbExlZnQoKSkmJihkPWMsYz0wKSkscy5pc3J0bG1vZGUmJihjPS1jKSxjJiYocy5zY3JvbGxtb20mJnMuc2Nyb2xsbW9tLnN0b3AoKSxzLmxhc3RkZWx0YXgrPWMscy5kZWJvdW5jZWQoIm1vdXNld2hlZWx4IixmdW5jdGlvbigpe3ZhciB4PXMubGFzdGRlbHRheDtzLmxhc3RkZWx0YXg9MCxzLnJhaWwuZHJhZ3x8cy5kb1Njcm9sbExlZnRCeSh4KX0sMTUpKSxkKXtpZihzLm9wdC5uYXRpdmVwYXJlbnRzY3JvbGxpbmcmJmImJiFzLmlzcGFnZSYmIXMuem9vbWFjdGl2ZSlpZigwPmQpe2lmKHMuZ2V0U2Nyb2xsVG9wKCk+PXMucGFnZS5tYXhoKXJldHVybiEwfWVsc2UgaWYoMD49cy5nZXRTY3JvbGxUb3AoKSlyZXR1cm4hMDtzLnNjcm9sbG1vbSYmcy5zY3JvbGxtb20uc3RvcCgpLHMubGFzdGRlbHRheSs9ZCxzLnN5bmNoZWQoIm1vdXNld2hlZWx5IixmdW5jdGlvbigpe3ZhciB4PXMubGFzdGRlbHRheTtzLmxhc3RkZWx0YXk9MCxzLnJhaWwuZHJhZ3x8cy5kb1Njcm9sbEJ5KHgpfSwxNSl9cmV0dXJuIHguc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkseC5wcmV2ZW50RGVmYXVsdCgpfXZhciBzPXRoaXM7aWYodGhpcy52ZXJzaW9uPSIzLjYuOCIsdGhpcy5uYW1lPSJuaWNlc2Nyb2xsIix0aGlzLm1lPWksdGhpcy5vcHQ9e2RvYzp4KCJib2R5Iiksd2luOiExfSx4LmV4dGVuZCh0aGlzLm9wdCxsKSx0aGlzLm9wdC5zbmFwYmFja3NwZWVkPTgwLGYpZm9yKHZhciB0IGluIHMub3B0KXZvaWQgMCE9PWZbdF0mJihzLm9wdFt0XT1mW3RdKTtpZihzLm9wdC5kaXNhYmxlbXV0YXRpb25vYnNlcnZlciYmKGs9ITEpLHRoaXMuaWRkb2M9KHRoaXMuZG9jPXMub3B0LmRvYykmJnRoaXMuZG9jWzBdJiZ0aGlzLmRvY1swXS5pZHx8IiIsdGhpcy5pc3BhZ2U9L15CT0RZfEhUTUwvLnRlc3Qocy5vcHQud2luP3Mub3B0LndpblswXS5ub2RlTmFtZTp0aGlzLmRvY1swXS5ub2RlTmFtZSksdGhpcy5oYXN3cmFwcGVyPSExIT09cy5vcHQud2luLHRoaXMud2luPXMub3B0Lndpbnx8KHRoaXMuaXNwYWdlP3god2luZG93KTp0aGlzLmRvYyksdGhpcy5kb2NzY3JvbGw9dGhpcy5pc3BhZ2UmJiF0aGlzLmhhc3dyYXBwZXI/eCh3aW5kb3cpOnRoaXMud2luLHRoaXMuYm9keT14KCJib2R5IiksdGhpcy5pZnJhbWU9dGhpcy5pc2ZpeGVkPXRoaXMudmlld3BvcnQ9ITEsdGhpcy5pc2lmcmFtZT0iSUZSQU1FIj09dGhpcy5kb2NbMF0ubm9kZU5hbWUmJiJJRlJBTUUiPT10aGlzLndpblswXS5ub2RlTmFtZSx0aGlzLmlzdGV4dGFyZWE9IlRFWFRBUkVBIj09dGhpcy53aW5bMF0ubm9kZU5hbWUsdGhpcy5mb3JjZXNjcmVlbj0hMSx0aGlzLmNhbnNob3dvbm1vdXNlZXZlbnQ9InNjcm9sbCIhPXMub3B0LmF1dG9oaWRlbW9kZSx0aGlzLnBhZ2U9dGhpcy52aWV3PXRoaXMub256b29tb3V0PXRoaXMub256b29taW49dGhpcy5vbnNjcm9sbGNhbmNlbD10aGlzLm9uc2Nyb2xsZW5kPXRoaXMub25zY3JvbGxzdGFydD10aGlzLm9uY2xpY2s9dGhpcy5vbmdlc3R1cmV6b29tPXRoaXMub25rZXlwcmVzcz10aGlzLm9ubW91c2V3aGVlbD10aGlzLm9ubW91c2Vtb3ZlPXRoaXMub25tb3VzZXVwPXRoaXMub25tb3VzZWRvd249ITEsdGhpcy5zY3JvbGw9e3g6MCx5OjB9LHRoaXMuc2Nyb2xscmF0aW89e3g6MCx5OjB9LHRoaXMuY3Vyc29yaGVpZ2h0PTIwLHRoaXMuc2Nyb2xsdmFsdWVtYXg9MCwiYXV0byI9PXRoaXMub3B0LnJ0bG1vZGUpe3ZhciB1PSh0PXRoaXMud2luWzBdPT13aW5kb3c/dGhpcy5ib2R5OnRoaXMud2luKS5jc3MoIndyaXRpbmctbW9kZSIpfHx0LmNzcygiLXdlYmtpdC13cml0aW5nLW1vZGUiKXx8dC5jc3MoIi1tcy13cml0aW5nLW1vZGUiKXx8dC5jc3MoIi1tb3otd3JpdGluZy1tb2RlIik7Imhvcml6b250YWwtdGIiPT11fHwibHItdGIiPT11fHwiIj09dT8odGhpcy5pc3J0bG1vZGU9InJ0bCI9PXQuY3NzKCJkaXJlY3Rpb24iKSx0aGlzLmlzdmVydGljYWw9ITEpOih0aGlzLmlzcnRsbW9kZT0idmVydGljYWwtcmwiPT11fHwidGIiPT11fHwidGItcmwiPT11fHwicmwtdGIiPT11LHRoaXMuaXN2ZXJ0aWNhbD0idmVydGljYWwtcmwiPT11fHwidGIiPT11fHwidGItcmwiPT11KX1lbHNlIHRoaXMuaXNydGxtb2RlPSEwPT09dGhpcy5vcHQucnRsbW9kZSx0aGlzLmlzdmVydGljYWw9ITE7dGhpcy5vYnNlcnZlcmJvZHk9dGhpcy5vYnNlcnZlcnJlbW92ZXI9dGhpcy5vYnNlcnZlcj10aGlzLnNjcm9sbG1vbT10aGlzLnNjcm9sbHJ1bm5pbmc9ITE7ZG97dGhpcy5pZD0iYXNjcmFpbCIrZCsrfXdoaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpKTt0aGlzLmhhc21vdXNlZm9jdXM9dGhpcy5oYXNmb2N1cz10aGlzLnpvb21hY3RpdmU9dGhpcy56b29tPXRoaXMuc2VsZWN0aW9uZHJhZz10aGlzLmN1cnNvcmZyZWV6ZWQ9dGhpcy5jdXJzb3I9dGhpcy5yYWlsPSExLHRoaXMudmlzaWJpbGl0eT0hMCx0aGlzLmhpZGRlbj10aGlzLmxvY2tlZD10aGlzLnJhaWxzbG9ja2VkPSExLHRoaXMuY3Vyc29yYWN0aXZlPSEwLHRoaXMud2hlZWxwcmV2ZW50ZWQ9ITEsdGhpcy5vdmVyZmxvd3g9cy5vcHQub3ZlcmZsb3d4LHRoaXMub3ZlcmZsb3d5PXMub3B0Lm92ZXJmbG93eSx0aGlzLm5hdGl2ZXNjcm9sbGluZ2FyZWE9ITEsdGhpcy5jaGVja2FyZWE9MCx0aGlzLmV2ZW50cz1bXSx0aGlzLnNhdmVkPXt9LHRoaXMuZGVsYXlsaXN0PXt9LHRoaXMuc3luY2xpc3Q9e30sdGhpcy5sYXN0ZGVsdGF5PXRoaXMubGFzdGRlbHRheD0wLHRoaXMuZGV0ZWN0ZWQ9bigpO3ZhciB2PXguZXh0ZW5kKHt9LHRoaXMuZGV0ZWN0ZWQpO3RoaXMuaXNod3Njcm9sbD0odGhpcy5jYW5od3Njcm9sbD12Lmhhc3RyYW5zZm9ybSYmcy5vcHQuaHdhY2NlbGVyYXRpb24pJiZzLmhhc3dyYXBwZXIsdGhpcy5oYXNyZXZlcnNlaHI9ISF0aGlzLmlzcnRsbW9kZSYmKHRoaXMuaXN2ZXJ0aWNhbD8hKHYuaXN3ZWJraXR8fHYuaXNpZXx8di5pc2llMTEpOiEodi5pc3dlYmtpdHx8di5pc2llJiYhdi5pc2llMTAmJiF2LmlzaWUxMSkpLHRoaXMuaXN0b3VjaGNhcGFibGU9ITEsKHYuY2FudG91Y2h8fCF2Lmhhc3czY3RvdWNoJiYhdi5oYXNtc3RvdWNoKSYmKCF2LmNhbnRvdWNofHx2LmlzaW9zfHx2LmlzYW5kcm9pZHx8IXYuaXN3ZWJraXQmJiF2LmlzbW96aWxsYSl8fCh0aGlzLmlzdG91Y2hjYXBhYmxlPSEwKSxzLm9wdC5lbmFibGVtb3VzZWxvY2thcGl8fCh2Lmhhc21vdXNlY2FwdHVyZT0hMSx2Lmhhc3BvaW50ZXJsb2NrPSExKSx0aGlzLmRlYm91bmNlZD1mdW5jdGlvbih4LGEsYil7cyYmKHMuZGVsYXlsaXN0W3hdfHwoYS5jYWxsKHMpLHMuZGVsYXlsaXN0W3hdPXtoOmcoZnVuY3Rpb24oKXtzLmRlbGF5bGlzdFt4XS5mbi5jYWxsKHMpLHMuZGVsYXlsaXN0W3hdPSExfSxiKX0pLHMuZGVsYXlsaXN0W3hdLmZuPWEpfTt2YXIgdz0hMTt0aGlzLnN5bmNoZWQ9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gcy5zeW5jbGlzdFt4XT1hLHd8fChnKGZ1bmN0aW9uKCl7aWYocylmb3IodmFyIHggaW4gdz0hMSxzLnN5bmNsaXN0KXt2YXIgYT1zLnN5bmNsaXN0W3hdO2EmJmEuY2FsbChzKSxzLnN5bmNsaXN0W3hdPSExfX0pLHc9ITApLHh9LHRoaXMudW5zeW5jaGVkPWZ1bmN0aW9uKHgpe3Muc3luY2xpc3RbeF0mJihzLnN5bmNsaXN0W3hdPSExKX0sdGhpcy5jc3M9ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIgaW4gYSlzLnNhdmVkLmNzcy5wdXNoKFt4LGIseC5jc3MoYildKSx4LmNzcyhiLGFbYl0pfSx0aGlzLnNjcm9sbFRvcD1mdW5jdGlvbih4KXtyZXR1cm4gdm9pZCAwPT09eD9zLmdldFNjcm9sbFRvcCgpOnMuc2V0U2Nyb2xsVG9wKHgpfSx0aGlzLnNjcm9sbExlZnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHZvaWQgMD09PXg/cy5nZXRTY3JvbGxMZWZ0KCk6cy5zZXRTY3JvbGxMZWZ0KHgpfTt2YXIgeT1mdW5jdGlvbih4LGEsYixjLGQsZSxmKXt0aGlzLnN0PXgsdGhpcy5lZD1hLHRoaXMuc3BkPWIsdGhpcy5wMT1jfHwwLHRoaXMucDI9ZHx8MSx0aGlzLnAzPWV8fDAsdGhpcy5wND1mfHwxLHRoaXMudHM9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5kZj10aGlzLmVkLXRoaXMuc3R9O2lmKHkucHJvdG90eXBlPXtCMjpmdW5jdGlvbih4KXtyZXR1cm4gMyp4KngqKDEteCl9LEIzOmZ1bmN0aW9uKHgpe3JldHVybiAzKngqKDEteCkqKDEteCl9LEI0OmZ1bmN0aW9uKHgpe3JldHVybigxLXgpKigxLXgpKigxLXgpfSxnZXROb3c6ZnVuY3Rpb24oKXt2YXIgeD0xLSgobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLnRzKS90aGlzLnNwZCxhPXRoaXMuQjIoeCkrdGhpcy5CMyh4KSt0aGlzLkI0KHgpO3JldHVybiAwPng/dGhpcy5lZDp0aGlzLnN0K01hdGgucm91bmQodGhpcy5kZiphKX0sdXBkYXRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuc3Q9dGhpcy5nZXROb3coKSx0aGlzLmVkPXgsdGhpcy5zcGQ9YSx0aGlzLnRzPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuZGY9dGhpcy5lZC10aGlzLnN0LHRoaXN9fSx0aGlzLmlzaHdzY3JvbGwpe3RoaXMuZG9jLnRyYW5zbGF0ZT17eDowLHk6MCx0eDoiMHB4Iix0eToiMHB4In0sdi5oYXN0cmFuc2xhdGUzZCYmdi5pc2lvcyYmdGhpcy5kb2MuY3NzKCItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiLCJoaWRkZW4iKSx0aGlzLmdldFNjcm9sbFRvcD1mdW5jdGlvbih4KXtpZigheCl7aWYoeD1qKCkpcmV0dXJuIDE2PT14Lmxlbmd0aD8teFsxM106LXhbNV07aWYocy50aW1lcnNjcm9sbCYmcy50aW1lcnNjcm9sbC5ieilyZXR1cm4gcy50aW1lcnNjcm9sbC5iei5nZXROb3coKX1yZXR1cm4gcy5kb2MudHJhbnNsYXRlLnl9LHRoaXMuZ2V0U2Nyb2xsTGVmdD1mdW5jdGlvbih4KXtpZigheCl7aWYoeD1qKCkpcmV0dXJuIDE2PT14Lmxlbmd0aD8teFsxMl06LXhbNF07aWYocy50aW1lcnNjcm9sbCYmcy50aW1lcnNjcm9sbC5iaClyZXR1cm4gcy50aW1lcnNjcm9sbC5iaC5nZXROb3coKX1yZXR1cm4gcy5kb2MudHJhbnNsYXRlLnh9LHRoaXMubm90aWZ5U2Nyb2xsRXZlbnQ9ZnVuY3Rpb24oeCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIlVJRXZlbnRzIik7YS5pbml0VUlFdmVudCgic2Nyb2xsIiwhMSwhMCx3aW5kb3csMSksYS5uaWNlZXZlbnQ9ITAseC5kaXNwYXRjaEV2ZW50KGEpfTt2YXIgej10aGlzLmlzcnRsbW9kZT8xOi0xO3YuaGFzdHJhbnNsYXRlM2QmJnMub3B0LmVuYWJsZXRyYW5zbGF0ZTNkPyh0aGlzLnNldFNjcm9sbFRvcD1mdW5jdGlvbih4LGEpe3MuZG9jLnRyYW5zbGF0ZS55PXgscy5kb2MudHJhbnNsYXRlLnR5PS0xKngrInB4IixzLmRvYy5jc3Modi50cnN0eWxlLCJ0cmFuc2xhdGUzZCgiK3MuZG9jLnRyYW5zbGF0ZS50eCsiLCIrcy5kb2MudHJhbnNsYXRlLnR5KyIsMHB4KSIpLGF8fHMubm90aWZ5U2Nyb2xsRXZlbnQocy53aW5bMF0pfSx0aGlzLnNldFNjcm9sbExlZnQ9ZnVuY3Rpb24oeCxhKXtzLmRvYy50cmFuc2xhdGUueD14LHMuZG9jLnRyYW5zbGF0ZS50eD14KnorInB4IixzLmRvYy5jc3Modi50cnN0eWxlLCJ0cmFuc2xhdGUzZCgiK3MuZG9jLnRyYW5zbGF0ZS50eCsiLCIrcy5kb2MudHJhbnNsYXRlLnR5KyIsMHB4KSIpLGF8fHMubm90aWZ5U2Nyb2xsRXZlbnQocy53aW5bMF0pfSk6KHRoaXMuc2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKHgsYSl7cy5kb2MudHJhbnNsYXRlLnk9eCxzLmRvYy50cmFuc2xhdGUudHk9LTEqeCsicHgiLHMuZG9jLmNzcyh2LnRyc3R5bGUsInRyYW5zbGF0ZSgiK3MuZG9jLnRyYW5zbGF0ZS50eCsiLCIrcy5kb2MudHJhbnNsYXRlLnR5KyIpIiksYXx8cy5ub3RpZnlTY3JvbGxFdmVudChzLndpblswXSl9LHRoaXMuc2V0U2Nyb2xsTGVmdD1mdW5jdGlvbih4LGEpe3MuZG9jLnRyYW5zbGF0ZS54PXgscy5kb2MudHJhbnNsYXRlLnR4PXgqeisicHgiLHMuZG9jLmNzcyh2LnRyc3R5bGUsInRyYW5zbGF0ZSgiK3MuZG9jLnRyYW5zbGF0ZS50eCsiLCIrcy5kb2MudHJhbnNsYXRlLnR5KyIpIiksYXx8cy5ub3RpZnlTY3JvbGxFdmVudChzLndpblswXSl9KX1lbHNlIHRoaXMuZ2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9jc2Nyb2xsLnNjcm9sbFRvcCgpfSx0aGlzLnNldFNjcm9sbFRvcD1mdW5jdGlvbih4KXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3MmJnMuZG9jc2Nyb2xsLnNjcm9sbFRvcCh4KX0sMSl9LHRoaXMuZ2V0U2Nyb2xsTGVmdD1mdW5jdGlvbigpe3JldHVybiBzLmhhc3JldmVyc2Vocj9zLmRldGVjdGVkLmlzbW96aWxsYT9zLnBhZ2UubWF4dy1NYXRoLmFicyhzLmRvY3Njcm9sbC5zY3JvbGxMZWZ0KCkpOnMucGFnZS5tYXh3LXMuZG9jc2Nyb2xsLnNjcm9sbExlZnQoKTpzLmRvY3Njcm9sbC5zY3JvbGxMZWZ0KCl9LHRoaXMuc2V0U2Nyb2xsTGVmdD1mdW5jdGlvbih4KXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2lmKHMpcmV0dXJuIHMuaGFzcmV2ZXJzZWhyJiYoeD1zLmRldGVjdGVkLmlzbW96aWxsYT8tKHMucGFnZS5tYXh3LXgpOnMucGFnZS5tYXh3LXgpLHMuZG9jc2Nyb2xsLnNjcm9sbExlZnQoeCl9LDEpfTt0aGlzLmdldFRhcmdldD1mdW5jdGlvbih4KXtyZXR1cm4hIXgmJih4LnRhcmdldD94LnRhcmdldDohIXguc3JjRWxlbWVudCYmeC5zcmNFbGVtZW50KX0sdGhpcy5oYXNQYXJlbnQ9ZnVuY3Rpb24oeCxhKXtpZigheClyZXR1cm4hMTtmb3IodmFyIGI9eC50YXJnZXR8fHguc3JjRWxlbWVudHx8eHx8ITE7YiYmYi5pZCE9YTspYj1iLnBhcmVudE5vZGV8fCExO3JldHVybiExIT09Yn07dmFyIEE9e3RoaW46MSxtZWRpdW06Myx0aGljazo1fTt0aGlzLmdldERvY3VtZW50U2Nyb2xsT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJue3RvcDp3aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsbGVmdDp3aW5kb3cucGFnZVhPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fX0sdGhpcy5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXtpZihzLmlzZml4ZWQpe3ZhciB4PXMud2luLm9mZnNldCgpLGE9cy5nZXREb2N1bWVudFNjcm9sbE9mZnNldCgpO3JldHVybiB4LnRvcC09YS50b3AseC5sZWZ0LT1hLmxlZnQseH1yZXR1cm4geD1zLndpbi5vZmZzZXQoKSxzLnZpZXdwb3J0PyhhPXMudmlld3BvcnQub2Zmc2V0KCkse3RvcDp4LnRvcC1hLnRvcCxsZWZ0OngubGVmdC1hLmxlZnR9KTp4fSx0aGlzLnVwZGF0ZVNjcm9sbEJhcj1mdW5jdGlvbih4KXt2YXIgYSxiLGM7aWYocy5pc2h3c2Nyb2xsKXMucmFpbC5jc3Moe2hlaWdodDpzLndpbi5pbm5lckhlaWdodCgpLShzLm9wdC5yYWlscGFkZGluZy50b3Arcy5vcHQucmFpbHBhZGRpbmcuYm90dG9tKX0pLHMucmFpbGgmJnMucmFpbGguY3NzKHt3aWR0aDpzLndpbi5pbm5lcldpZHRoKCktKHMub3B0LnJhaWxwYWRkaW5nLmxlZnQrcy5vcHQucmFpbHBhZGRpbmcucmlnaHQpfSk7ZWxzZXt2YXIgZD1zLmdldE9mZnNldCgpO2E9ZC50b3AsYj1kLmxlZnQtKHMub3B0LnJhaWxwYWRkaW5nLmxlZnQrcy5vcHQucmFpbHBhZGRpbmcucmlnaHQpLGErPW8ocy53aW4sImJvcmRlci10b3Atd2lkdGgiLCEwKSxiKz1zLnJhaWwuYWxpZ24/cy53aW4ub3V0ZXJXaWR0aCgpLW8ocy53aW4sImJvcmRlci1yaWdodC13aWR0aCIpLXMucmFpbC53aWR0aDpvKHMud2luLCJib3JkZXItbGVmdC13aWR0aCIpLChjPXMub3B0LnJhaWxvZmZzZXQpJiYoYy50b3AmJihhKz1jLnRvcCksYy5sZWZ0JiYoYis9Yy5sZWZ0KSkscy5yYWlsc2xvY2tlZHx8cy5yYWlsLmNzcyh7dG9wOmEsbGVmdDpiLGhlaWdodDooeD94Lmg6cy53aW4uaW5uZXJIZWlnaHQoKSktKHMub3B0LnJhaWxwYWRkaW5nLnRvcCtzLm9wdC5yYWlscGFkZGluZy5ib3R0b20pfSkscy56b29tJiZzLnpvb20uY3NzKHt0b3A6YSsxLGxlZnQ6MT09cy5yYWlsLmFsaWduP2ItMjA6YitzLnJhaWwud2lkdGgrNH0pLHMucmFpbGgmJiFzLnJhaWxzbG9ja2VkJiYoYT1kLnRvcCxiPWQubGVmdCwoYz1zLm9wdC5yYWlsaG9mZnNldCkmJihjLnRvcCYmKGErPWMudG9wKSxjLmxlZnQmJihiKz1jLmxlZnQpKSx4PXMucmFpbGguYWxpZ24/YStvKHMud2luLCJib3JkZXItdG9wLXdpZHRoIiwhMCkrcy53aW4uaW5uZXJIZWlnaHQoKS1zLnJhaWxoLmhlaWdodDphK28ocy53aW4sImJvcmRlci10b3Atd2lkdGgiLCEwKSxiKz1vKHMud2luLCJib3JkZXItbGVmdC13aWR0aCIpLHMucmFpbGguY3NzKHt0b3A6eC0ocy5vcHQucmFpbHBhZGRpbmcudG9wK3Mub3B0LnJhaWxwYWRkaW5nLmJvdHRvbSksbGVmdDpiLHdpZHRoOnMucmFpbGgud2lkdGh9KSl9fSx0aGlzLmRvUmFpbENsaWNrPWZ1bmN0aW9uKHgsYSxiKXt2YXIgYztzLnJhaWxzbG9ja2VkfHwocy5jYW5jZWxFdmVudCh4KSxhPyhhPWI/cy5kb1Njcm9sbExlZnQ6cy5kb1Njcm9sbFRvcCkoYz1iPyh4LnBhZ2VYLXMucmFpbGgub2Zmc2V0KCkubGVmdC1zLmN1cnNvcndpZHRoLzIpKnMuc2Nyb2xscmF0aW8ueDooeC5wYWdlWS1zLnJhaWwub2Zmc2V0KCkudG9wLXMuY3Vyc29yaGVpZ2h0LzIpKnMuc2Nyb2xscmF0aW8ueSk6KGE9Yj9zLmRvU2Nyb2xsTGVmdEJ5OnMuZG9TY3JvbGxCeSxjPWI/cy5zY3JvbGwueDpzLnNjcm9sbC55LHg9Yj94LnBhZ2VYLXMucmFpbGgub2Zmc2V0KCkubGVmdDp4LnBhZ2VZLXMucmFpbC5vZmZzZXQoKS50b3AsYj1iP3Mudmlldy53OnMudmlldy5oLGEoYz49eD9iOi1iKSkpfSxzLmhhc2FuaW1hdGlvbmZyYW1lPWcscy5oYXNjYW5jZWxhbmltYXRpb25mcmFtZT1oLHMuaGFzYW5pbWF0aW9uZnJhbWU/cy5oYXNjYW5jZWxhbmltYXRpb25mcmFtZXx8KGg9ZnVuY3Rpb24oKXtzLmNhbmNlbEFuaW1hdGlvbkZyYW1lPSEwfSk6KGc9ZnVuY3Rpb24oeCl7cmV0dXJuIHNldFRpbWVvdXQoeCwxNS1NYXRoLmZsb29yKCtuZXcgRGF0ZS8xZTMpJTE2KX0saD1jbGVhclRpbWVvdXQpLHRoaXMuaW5pdD1mdW5jdGlvbigpe2lmKHMuc2F2ZWQuY3NzPVtdLHYuaXNpZTdtb2JpbGV8fHYuaXNvcGVyYW1pbmkpcmV0dXJuITA7di5oYXNtc3RvdWNoJiZzLmNzcyhzLmlzcGFnZT94KCJodG1sIik6cy53aW4se190b3VjaGFjdGlvbjoibm9uZSJ9KTt2YXIgZD12LmlzbW9kZXJuaWV8fHYuaXNpZTEwP3siLW1zLW92ZXJmbG93LXN0eWxlIjoibm9uZSJ9Onsib3ZlcmZsb3cteSI6ImhpZGRlbiJ9O2lmKHMuemluZGV4PSJhdXRvIixzLnppbmRleD1zLmlzcGFnZXx8ImF1dG8iIT1zLm9wdC56aW5kZXg/cy5vcHQuemluZGV4Om0oKXx8ImF1dG8iLCFzLmlzcGFnZSYmImF1dG8iIT1zLnppbmRleCYmcy56aW5kZXg+ZSYmKGU9cy56aW5kZXgpLHMuaXNpZSYmMD09cy56aW5kZXgmJiJhdXRvIj09cy5vcHQuemluZGV4JiYocy56aW5kZXg9ImF1dG8iKSwhcy5pc3BhZ2V8fCF2LmNhbnRvdWNoJiYhdi5pc2llb2xkJiYhdi5pc2llOW1vYmlsZSl7dmFyIGY9cy5kb2NzY3JvbGw7cy5pc3BhZ2UmJihmPXMuaGFzd3JhcHBlcj9zLndpbjpzLmRvYyksdi5pc2llOW1vYmlsZXx8cy5jc3MoZixkKSxzLmlzcGFnZSYmdi5pc2llNyYmKCJCT0RZIj09cy5kb2NbMF0ubm9kZU5hbWU/cy5jc3MoeCgiaHRtbCIpLHsib3ZlcmZsb3cteSI6ImhpZGRlbiJ9KToiSFRNTCI9PXMuZG9jWzBdLm5vZGVOYW1lJiZzLmNzcyh4KCJib2R5IiksZCkpLCF2LmlzaW9zfHxzLmlzcGFnZXx8cy5oYXN3cmFwcGVyfHxzLmNzcyh4KCJib2R5IikseyItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyI6InRvdWNoIn0pO3ZhciBnPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2cuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDowLGZsb2F0OiJyaWdodCIsd2lkdGg6cy5vcHQuY3Vyc29yd2lkdGgsaGVpZ2h0OjAsImJhY2tncm91bmQtY29sb3IiOnMub3B0LmN1cnNvcmNvbG9yLGJvcmRlcjpzLm9wdC5jdXJzb3Jib3JkZXIsImJhY2tncm91bmQtY2xpcCI6InBhZGRpbmctYm94IiwiLXdlYmtpdC1ib3JkZXItcmFkaXVzIjpzLm9wdC5jdXJzb3Jib3JkZXJyYWRpdXMsIi1tb3otYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzLCJib3JkZXItcmFkaXVzIjpzLm9wdC5jdXJzb3Jib3JkZXJyYWRpdXN9KSxnLmhib3JkZXI9cGFyc2VGbG9hdChnLm91dGVySGVpZ2h0KCktZy5pbm5lckhlaWdodCgpKSxnLmFkZENsYXNzKCJuaWNlc2Nyb2xsLWN1cnNvcnMiKSxzLmN1cnNvcj1nLCh0PXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpKS5hdHRyKCJpZCIscy5pZCksdC5hZGRDbGFzcygibmljZXNjcm9sbC1yYWlscyBuaWNlc2Nyb2xsLXJhaWxzLXZyIik7dmFyIGgsaSxqLGwsbj1bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdO2ZvcihqIGluIG4paT1uW2pdLChoPXMub3B0LnJhaWxwYWRkaW5nW2ldKT90LmNzcygicGFkZGluZy0iK2ksaCsicHgiKTpzLm9wdC5yYWlscGFkZGluZ1tpXT0wO2lmKHQuYXBwZW5kKGcpLHQud2lkdGg9TWF0aC5tYXgocGFyc2VGbG9hdChzLm9wdC5jdXJzb3J3aWR0aCksZy5vdXRlcldpZHRoKCkpLHQuY3NzKHt3aWR0aDp0LndpZHRoKyJweCIsekluZGV4OnMuemluZGV4LGJhY2tncm91bmQ6cy5vcHQuYmFja2dyb3VuZCxjdXJzb3I6ImRlZmF1bHQifSksdC52aXNpYmlsaXR5PSEwLHQuc2Nyb2xsYWJsZT0hMCx0LmFsaWduPSJsZWZ0Ij09cy5vcHQucmFpbGFsaWduPzA6MSxzLnJhaWw9dCxnPXMucmFpbC5kcmFnPSExLCFzLm9wdC5ib3h6b29tfHxzLmlzcGFnZXx8di5pc2llb2xkfHwoZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxzLmJpbmQoZywiY2xpY2siLHMuZG9ab29tKSxzLmJpbmQoZywibW91c2VlbnRlciIsZnVuY3Rpb24oKXtzLnpvb20uY3NzKCJvcGFjaXR5IixzLm9wdC5jdXJzb3JvcGFjaXR5bWF4KX0pLHMuYmluZChnLCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3Muem9vbS5jc3MoIm9wYWNpdHkiLHMub3B0LmN1cnNvcm9wYWNpdHltaW4pfSkscy56b29tPXgoZykscy56b29tLmNzcyh7Y3Vyc29yOiJwb2ludGVyIix6SW5kZXg6cy56aW5kZXgsYmFja2dyb3VuZEltYWdlOiJ1cmwoIitzLm9wdC5zY3JpcHRwYXRoKyJ6b29taWNvLnBuZykiLGhlaWdodDoxOCx3aWR0aDoxOCxiYWNrZ3JvdW5kUG9zaXRpb246IjBweCAwcHgifSkscy5vcHQuZGJsY2xpY2t6b29tJiZzLmJpbmQocy53aW4sImRibGNsaWNrIixzLmRvWm9vbSksdi5jYW50b3VjaCYmcy5vcHQuZ2VzdHVyZXpvb20mJihzLm9uZ2VzdHVyZXpvb209ZnVuY3Rpb24oeCl7cmV0dXJuIDEuNTx4LnNjYWxlJiZzLmRvWm9vbUluKHgpLC44Pnguc2NhbGUmJnMuZG9ab29tT3V0KHgpLHMuY2FuY2VsRXZlbnQoeCl9LHMuYmluZChzLndpbiwiZ2VzdHVyZWVuZCIscy5vbmdlc3R1cmV6b29tKSkpLHMucmFpbGg9ITEscy5vcHQuaG9yaXpyYWlsZW5hYmxlZCYmKHMuY3NzKGYse292ZXJmbG93WDoiaGlkZGVuIn0pLChnPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsaGVpZ2h0OnMub3B0LmN1cnNvcndpZHRoLHdpZHRoOjAsYmFja2dyb3VuZENvbG9yOnMub3B0LmN1cnNvcmNvbG9yLGJvcmRlcjpzLm9wdC5jdXJzb3Jib3JkZXIsYmFja2dyb3VuZENsaXA6InBhZGRpbmctYm94IiwiLXdlYmtpdC1ib3JkZXItcmFkaXVzIjpzLm9wdC5jdXJzb3Jib3JkZXJyYWRpdXMsIi1tb3otYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzLCJib3JkZXItcmFkaXVzIjpzLm9wdC5jdXJzb3Jib3JkZXJyYWRpdXN9KSx2LmlzaWVvbGQmJmcuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLGcud2JvcmRlcj1wYXJzZUZsb2F0KGcub3V0ZXJXaWR0aCgpLWcuaW5uZXJXaWR0aCgpKSxnLmFkZENsYXNzKCJuaWNlc2Nyb2xsLWN1cnNvcnMiKSxzLmN1cnNvcmg9ZywobD14KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSkuYXR0cigiaWQiLHMuaWQrIi1ociIpLGwuYWRkQ2xhc3MoIm5pY2VzY3JvbGwtcmFpbHMgbmljZXNjcm9sbC1yYWlscy1ociIpLGwuaGVpZ2h0PU1hdGgubWF4KHBhcnNlRmxvYXQocy5vcHQuY3Vyc29yd2lkdGgpLGcub3V0ZXJIZWlnaHQoKSksbC5jc3Moe2hlaWdodDpsLmhlaWdodCsicHgiLHpJbmRleDpzLnppbmRleCxiYWNrZ3JvdW5kOnMub3B0LmJhY2tncm91bmR9KSxsLmFwcGVuZChnKSxsLnZpc2liaWxpdHk9ITAsbC5zY3JvbGxhYmxlPSEwLGwuYWxpZ249InRvcCI9PXMub3B0LnJhaWx2YWxpZ24/MDoxLHMucmFpbGg9bCxzLnJhaWxoLmRyYWc9ITEpLHMuaXNwYWdlPyh0LmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6MCxoZWlnaHQ6IjEwMCUifSksdC5hbGlnbj90LmNzcyh7cmlnaHQ6MH0pOnQuY3NzKHtsZWZ0OjB9KSxzLmJvZHkuYXBwZW5kKHQpLHMucmFpbGgmJihsLmNzcyh7cG9zaXRpb246ImZpeGVkIixsZWZ0OjAsd2lkdGg6IjEwMCUifSksbC5hbGlnbj9sLmNzcyh7Ym90dG9tOjB9KTpsLmNzcyh7dG9wOjB9KSxzLmJvZHkuYXBwZW5kKGwpKSk6KHMuaXNod3Njcm9sbD8oInN0YXRpYyI9PXMud2luLmNzcygicG9zaXRpb24iKSYmcy5jc3Mocy53aW4se3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSxmPSJIVE1MIj09cy53aW5bMF0ubm9kZU5hbWU/cy5ib2R5OnMud2luLHgoZikuc2Nyb2xsVG9wKDApLnNjcm9sbExlZnQoMCkscy56b29tJiYocy56b29tLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MSxyaWdodDowLCJtYXJnaW4tcmlnaHQiOnQud2lkdGgrNH0pLGYuYXBwZW5kKHMuem9vbSkpLHQuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowfSksdC5hbGlnbj90LmNzcyh7cmlnaHQ6MH0pOnQuY3NzKHtsZWZ0OjB9KSxmLmFwcGVuZCh0KSxsJiYobC5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDowLGJvdHRvbTowfSksbC5hbGlnbj9sLmNzcyh7Ym90dG9tOjB9KTpsLmNzcyh7dG9wOjB9KSxmLmFwcGVuZChsKSkpOihzLmlzZml4ZWQ9ImZpeGVkIj09cy53aW4uY3NzKCJwb3NpdGlvbiIpLGY9cy5pc2ZpeGVkPyJmaXhlZCI6ImFic29sdXRlIixzLmlzZml4ZWR8fChzLnZpZXdwb3J0PXMuZ2V0Vmlld3BvcnQocy53aW5bMF0pKSxzLnZpZXdwb3J0JiYocy5ib2R5PXMudmlld3BvcnQsMD09L2ZpeGVkfGFic29sdXRlLy50ZXN0KHMudmlld3BvcnQuY3NzKCJwb3NpdGlvbiIpKSYmcy5jc3Mocy52aWV3cG9ydCx7cG9zaXRpb246InJlbGF0aXZlIn0pKSx0LmNzcyh7cG9zaXRpb246Zn0pLHMuem9vbSYmcy56b29tLmNzcyh7cG9zaXRpb246Zn0pLHMudXBkYXRlU2Nyb2xsQmFyKCkscy5ib2R5LmFwcGVuZCh0KSxzLnpvb20mJnMuYm9keS5hcHBlbmQocy56b29tKSxzLnJhaWxoJiYobC5jc3Moe3Bvc2l0aW9uOmZ9KSxzLmJvZHkuYXBwZW5kKGwpKSksdi5pc2lvcyYmcy5jc3Mocy53aW4seyItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiOiJyZ2JhKDAsMCwwLDApIiwiLXdlYmtpdC10b3VjaC1jYWxsb3V0Ijoibm9uZSJ9KSx2LmlzaWUmJnMub3B0LmRpc2FibGVvdXRsaW5lJiZzLndpbi5hdHRyKCJoaWRlRm9jdXMiLCJ0cnVlIiksdi5pc3dlYmtpdCYmcy5vcHQuZGlzYWJsZW91dGxpbmUmJnMud2luLmNzcygib3V0bGluZSIsIm5vbmUiKSksITE9PT1zLm9wdC5hdXRvaGlkZW1vZGU/KHMuYXV0b2hpZGVkb209ITEscy5yYWlsLmNzcyh7b3BhY2l0eTpzLm9wdC5jdXJzb3JvcGFjaXR5bWF4fSkscy5yYWlsaCYmcy5yYWlsaC5jc3Moe29wYWNpdHk6cy5vcHQuY3Vyc29yb3BhY2l0eW1heH0pKTohMD09PXMub3B0LmF1dG9oaWRlbW9kZXx8ImxlYXZlIj09PXMub3B0LmF1dG9oaWRlbW9kZT8ocy5hdXRvaGlkZWRvbT14KCkuYWRkKHMucmFpbCksdi5pc2llOCYmKHMuYXV0b2hpZGVkb209cy5hdXRvaGlkZWRvbS5hZGQocy5jdXJzb3IpKSxzLnJhaWxoJiYocy5hdXRvaGlkZWRvbT1zLmF1dG9oaWRlZG9tLmFkZChzLnJhaWxoKSkscy5yYWlsaCYmdi5pc2llOCYmKHMuYXV0b2hpZGVkb209cy5hdXRvaGlkZWRvbS5hZGQocy5jdXJzb3JoKSkpOiJzY3JvbGwiPT1zLm9wdC5hdXRvaGlkZW1vZGU/KHMuYXV0b2hpZGVkb209eCgpLmFkZChzLnJhaWwpLHMucmFpbGgmJihzLmF1dG9oaWRlZG9tPXMuYXV0b2hpZGVkb20uYWRkKHMucmFpbGgpKSk6ImN1cnNvciI9PXMub3B0LmF1dG9oaWRlbW9kZT8ocy5hdXRvaGlkZWRvbT14KCkuYWRkKHMuY3Vyc29yKSxzLnJhaWxoJiYocy5hdXRvaGlkZWRvbT1zLmF1dG9oaWRlZG9tLmFkZChzLmN1cnNvcmgpKSk6ImhpZGRlbiI9PXMub3B0LmF1dG9oaWRlbW9kZSYmKHMuYXV0b2hpZGVkb209ITEscy5oaWRlKCkscy5yYWlsc2xvY2tlZD0hMSksdi5pc2llOW1vYmlsZSlzLnNjcm9sbG1vbT1uZXcgcChzKSxzLm9ubWFuZ290b3VjaD1mdW5jdGlvbigpe3ZhciB4PXMuZ2V0U2Nyb2xsVG9wKCksYT1zLmdldFNjcm9sbExlZnQoKTtpZih4PT1zLnNjcm9sbG1vbS5sYXN0c2Nyb2xseSYmYT09cy5zY3JvbGxtb20ubGFzdHNjcm9sbHgpcmV0dXJuITA7dmFyIGI9eC1zLm1hbmdvdG91Y2guc3ksYz1hLXMubWFuZ290b3VjaC5zeDtpZigwIT1NYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhjLDIpK01hdGgucG93KGIsMikpKSl7dmFyIGQ9MD5iPy0xOjEsZT0wPmM/LTE6MSxmPStuZXcgRGF0ZTtzLm1hbmdvdG91Y2gubGF6eSYmY2xlYXJUaW1lb3V0KHMubWFuZ290b3VjaC5sYXp5KSw4MDxmLXMubWFuZ290b3VjaC50bXx8cy5tYW5nb3RvdWNoLmRyeSE9ZHx8cy5tYW5nb3RvdWNoLmRyeCE9ZT8ocy5zY3JvbGxtb20uc3RvcCgpLHMuc2Nyb2xsbW9tLnJlc2V0KGEseCkscy5tYW5nb3RvdWNoLnN5PXgscy5tYW5nb3RvdWNoLmx5PXgscy5tYW5nb3RvdWNoLnN4PWEscy5tYW5nb3RvdWNoLmx4PWEscy5tYW5nb3RvdWNoLmRyeT1kLHMubWFuZ290b3VjaC5kcng9ZSxzLm1hbmdvdG91Y2gudG09Zik6KHMuc2Nyb2xsbW9tLnN0b3AoKSxzLnNjcm9sbG1vbS51cGRhdGUocy5tYW5nb3RvdWNoLnN4LWMscy5tYW5nb3RvdWNoLnN5LWIpLHMubWFuZ290b3VjaC50bT1mLGI9TWF0aC5tYXgoTWF0aC5hYnMocy5tYW5nb3RvdWNoLmx5LXgpLE1hdGguYWJzKHMubWFuZ290b3VjaC5seC1hKSkscy5tYW5nb3RvdWNoLmx5PXgscy5tYW5nb3RvdWNoLmx4PWEsMjxiJiYocy5tYW5nb3RvdWNoLmxhenk9c2V0VGltZW91dChmdW5jdGlvbigpe3MubWFuZ290b3VjaC5sYXp5PSExLHMubWFuZ290b3VjaC5kcnk9MCxzLm1hbmdvdG91Y2guZHJ4PTAscy5tYW5nb3RvdWNoLnRtPTAscy5zY3JvbGxtb20uZG9Nb21lbnR1bSgzMCl9LDEwMCkpKX19LHQ9cy5nZXRTY3JvbGxUb3AoKSxsPXMuZ2V0U2Nyb2xsTGVmdCgpLHMubWFuZ290b3VjaD17c3k6dCxseTp0LGRyeTowLHN4OmwsbHg6bCxkcng6MCxsYXp5OiExLHRtOjB9LHMuYmluZChzLmRvY3Njcm9sbCwic2Nyb2xsIixzLm9ubWFuZ290b3VjaCk7ZWxzZXtpZih2LmNhbnRvdWNofHxzLmlzdG91Y2hjYXBhYmxlfHxzLm9wdC50b3VjaGJlaGF2aW9yfHx2Lmhhc21zdG91Y2gpe3Muc2Nyb2xsbW9tPW5ldyBwKHMpLHMub250b3VjaHN0YXJ0PWZ1bmN0aW9uKGEpe2lmKGEucG9pbnRlclR5cGUmJjIhPWEucG9pbnRlclR5cGUmJiJ0b3VjaCIhPWEucG9pbnRlclR5cGUpcmV0dXJuITE7aWYocy5oYXNtb3Zpbmc9ITEsIXMucmFpbHNsb2NrZWQpe3ZhciBiO2lmKHYuaGFzbXN0b3VjaClmb3IoYj0hIWEudGFyZ2V0JiZhLnRhcmdldDtiOyl7aWYoMDwoYz14KGIpLmdldE5pY2VTY3JvbGwoKSkubGVuZ3RoJiZjWzBdLm1lPT1zLm1lKWJyZWFrO2lmKDA8Yy5sZW5ndGgpcmV0dXJuITE7aWYoIkRJViI9PWIubm9kZU5hbWUmJmIuaWQ9PXMuaWQpYnJlYWs7Yj0hIWIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlfWlmKHMuY2FuY2VsU2Nyb2xsKCksKGI9cy5nZXRUYXJnZXQoYSkpJiYvSU5QVVQvaS50ZXN0KGIubm9kZU5hbWUpJiYvcmFuZ2UvaS50ZXN0KGIudHlwZSkpcmV0dXJuIHMuc3RvcFByb3BhZ2F0aW9uKGEpO2lmKCEoImNsaWVudFgiaW4gYSkmJiJjaGFuZ2VkVG91Y2hlcyJpbiBhJiYoYS5jbGllbnRYPWEuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCxhLmNsaWVudFk9YS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZKSxzLmZvcmNlc2NyZWVuJiYoYz1hLChhPXtvcmlnaW5hbDphLm9yaWdpbmFsP2Eub3JpZ2luYWw6YX0pLmNsaWVudFg9Yy5zY3JlZW5YLGEuY2xpZW50WT1jLnNjcmVlblkpLHMucmFpbC5kcmFnPXt4OmEuY2xpZW50WCx5OmEuY2xpZW50WSxzeDpzLnNjcm9sbC54LHN5OnMuc2Nyb2xsLnksc3Q6cy5nZXRTY3JvbGxUb3AoKSxzbDpzLmdldFNjcm9sbExlZnQoKSxwdDoyLGRsOiExfSxzLmlzcGFnZXx8IXMub3B0LmRpcmVjdGlvbmxvY2tkZWFkem9uZSlzLnJhaWwuZHJhZy5kbD0iZiI7ZWxzZXt2YXIgYz14KHdpbmRvdykud2lkdGgoKSxkPXgod2luZG93KS5oZWlnaHQoKTtkPU1hdGgubWF4KDAsTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCktZCksYz1NYXRoLm1heCgwLE1hdGgubWF4KGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoKS1jKTtzLnJhaWwuZHJhZy5jaz0hcy5yYWlsLnNjcm9sbGFibGUmJnMucmFpbGguc2Nyb2xsYWJsZT8wPGQmJiJ2IjohKCFzLnJhaWwuc2Nyb2xsYWJsZXx8cy5yYWlsaC5zY3JvbGxhYmxlKSYmKDA8YyYmImgiKSxzLnJhaWwuZHJhZy5ja3x8KHMucmFpbC5kcmFnLmRsPSJmIil9aWYocy5vcHQudG91Y2hiZWhhdmlvciYmcy5pc2lmcmFtZSYmdi5pc2llJiYoYz1zLndpbi5wb3NpdGlvbigpLHMucmFpbC5kcmFnLngrPWMubGVmdCxzLnJhaWwuZHJhZy55Kz1jLnRvcCkscy5oYXNtb3Zpbmc9ITEscy5sYXN0bW91c2V1cD0hMSxzLnNjcm9sbG1vbS5yZXNldChhLmNsaWVudFgsYS5jbGllbnRZKSwhdi5jYW50b3VjaCYmIXRoaXMuaXN0b3VjaGNhcGFibGUmJiFhLnBvaW50ZXJUeXBlKXtpZighYnx8IS9JTlBVVHxTRUxFQ1R8VEVYVEFSRUEvaS50ZXN0KGIubm9kZU5hbWUpKXJldHVybiFzLmlzcGFnZSYmdi5oYXNtb3VzZWNhcHR1cmUmJmIuc2V0Q2FwdHVyZSgpLHMub3B0LnRvdWNoYmVoYXZpb3I/KGIub25jbGljayYmIWIuX29uY2xpY2smJihiLl9vbmNsaWNrPWIub25jbGljayxiLm9uY2xpY2s9ZnVuY3Rpb24oeCl7aWYocy5oYXNtb3ZpbmcpcmV0dXJuITE7Yi5fb25jbGljay5jYWxsKHRoaXMseCl9KSxzLmNhbmNlbEV2ZW50KGEpKTpzLnN0b3BQcm9wYWdhdGlvbihhKTsvU1VCTUlUfENBTkNFTHxCVVRUT04vaS50ZXN0KHgoYikuYXR0cigidHlwZSIpKSYmKHBjPXt0ZzpiLGNsaWNrOiExfSxzLnByZXZlbnRjbGljaz1wYyl9fX0scy5vbnRvdWNoZW5kPWZ1bmN0aW9uKHgpe2lmKCFzLnJhaWwuZHJhZylyZXR1cm4hMDtpZigyPT1zLnJhaWwuZHJhZy5wdCl7aWYoeC5wb2ludGVyVHlwZSYmMiE9eC5wb2ludGVyVHlwZSYmInRvdWNoIiE9eC5wb2ludGVyVHlwZSlyZXR1cm4hMTtpZihzLnNjcm9sbG1vbS5kb01vbWVudHVtKCkscy5yYWlsLmRyYWc9ITEscy5oYXNtb3ZpbmcmJihzLmxhc3Rtb3VzZXVwPSEwLHMuaGlkZUN1cnNvcigpLHYuaGFzbW91c2VjYXB0dXJlJiZkb2N1bWVudC5yZWxlYXNlQ2FwdHVyZSgpLCF2LmNhbnRvdWNoKSlyZXR1cm4gcy5jYW5jZWxFdmVudCh4KX1lbHNlIGlmKDE9PXMucmFpbC5kcmFnLnB0KXJldHVybiBzLm9ubW91c2V1cCh4KX07dmFyIG89cy5vcHQudG91Y2hiZWhhdmlvciYmcy5pc2lmcmFtZSYmIXYuaGFzbW91c2VjYXB0dXJlO3Mub250b3VjaG1vdmU9ZnVuY3Rpb24oYSxiKXtpZighcy5yYWlsLmRyYWd8fGEudGFyZ2V0VG91Y2hlcyYmcy5vcHQucHJldmVudG11bHRpdG91Y2hzY3JvbGxpbmcmJjE8YS50YXJnZXRUb3VjaGVzLmxlbmd0aHx8YS5wb2ludGVyVHlwZSYmMiE9YS5wb2ludGVyVHlwZSYmInRvdWNoIiE9YS5wb2ludGVyVHlwZSlyZXR1cm4hMTtpZigyPT1zLnJhaWwuZHJhZy5wdCl7aWYodi5jYW50b3VjaCYmdi5pc2lvcyYmdm9pZCAwPT09YS5vcmlnaW5hbClyZXR1cm4hMDtpZihzLmhhc21vdmluZz0hMCxzLnByZXZlbnRjbGljayYmIXMucHJldmVudGNsaWNrLmNsaWNrJiYocy5wcmV2ZW50Y2xpY2suY2xpY2s9cy5wcmV2ZW50Y2xpY2sudGcub25jbGlja3x8ITEscy5wcmV2ZW50Y2xpY2sudGcub25jbGljaz1zLm9ucHJldmVudGNsaWNrKSwiY2hhbmdlZFRvdWNoZXMiaW4oYT14LmV4dGVuZCh7b3JpZ2luYWw6YX0sYSkpJiYoYS5jbGllbnRYPWEuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCxhLmNsaWVudFk9YS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZKSxzLmZvcmNlc2NyZWVuKXt2YXIgYz1hOyhhPXtvcmlnaW5hbDphLm9yaWdpbmFsP2Eub3JpZ2luYWw6YX0pLmNsaWVudFg9Yy5zY3JlZW5YLGEuY2xpZW50WT1jLnNjcmVlbll9dmFyIGQ7Yz1kPTA7byYmIWImJihjPS0oZD1zLndpbi5wb3NpdGlvbigpKS5sZWZ0LGQ9LWQudG9wKTt2YXIgZT1hLmNsaWVudFkrZDtkPWUtcy5yYWlsLmRyYWcueTt2YXIgZixnPWEuY2xpZW50WCtjLGg9Zy1zLnJhaWwuZHJhZy54LGk9cy5yYWlsLmRyYWcuc3QtZDtpZihzLmlzaHdzY3JvbGwmJnMub3B0LmJvdW5jZXNjcm9sbD8wPmk/aT1NYXRoLnJvdW5kKGkvMik6aT5zLnBhZ2UubWF4aCYmKGk9cy5wYWdlLm1heGgrTWF0aC5yb3VuZCgoaS1zLnBhZ2UubWF4aCkvMikpOigwPmkmJihlPWk9MCksaT5zLnBhZ2UubWF4aCYmKGk9cy5wYWdlLm1heGgsZT0wKSkscy5yYWlsaCYmcy5yYWlsaC5zY3JvbGxhYmxlJiYoZj1zLmlzcnRsbW9kZT9oLXMucmFpbC5kcmFnLnNsOnMucmFpbC5kcmFnLnNsLWgscy5pc2h3c2Nyb2xsJiZzLm9wdC5ib3VuY2VzY3JvbGw/MD5mP2Y9TWF0aC5yb3VuZChmLzIpOmY+cy5wYWdlLm1heHcmJihmPXMucGFnZS5tYXh3K01hdGgucm91bmQoKGYtcy5wYWdlLm1heHcpLzIpKTooMD5mJiYoZz1mPTApLGY+cy5wYWdlLm1heHcmJihmPXMucGFnZS5tYXh3LGc9MCkpKSxjPSExLHMucmFpbC5kcmFnLmRsKWM9ITAsInYiPT1zLnJhaWwuZHJhZy5kbD9mPXMucmFpbC5kcmFnLnNsOiJoIj09cy5yYWlsLmRyYWcuZGwmJihpPXMucmFpbC5kcmFnLnN0KTtlbHNle2Q9TWF0aC5hYnMoZCk7aD1NYXRoLmFicyhoKTt2YXIgaj1zLm9wdC5kaXJlY3Rpb25sb2NrZGVhZHpvbmU7aWYoInYiPT1zLnJhaWwuZHJhZy5jayl7aWYoZD5qJiZoPD0uMypkKXJldHVybiBzLnJhaWwuZHJhZz0hMSwhMDtoPmomJihzLnJhaWwuZHJhZy5kbD0iZiIseCgiYm9keSIpLnNjcm9sbFRvcCh4KCJib2R5Iikuc2Nyb2xsVG9wKCkpKX1lbHNlIGlmKCJoIj09cy5yYWlsLmRyYWcuY2spe2lmKGg+aiYmZDw9LjMqaClyZXR1cm4gcy5yYWlsLmRyYWc9ITEsITA7ZD5qJiYocy5yYWlsLmRyYWcuZGw9ImYiLHgoImJvZHkiKS5zY3JvbGxMZWZ0KHgoImJvZHkiKS5zY3JvbGxMZWZ0KCkpKX19aWYocy5zeW5jaGVkKCJ0b3VjaG1vdmUiLGZ1bmN0aW9uKCl7cy5yYWlsLmRyYWcmJjI9PXMucmFpbC5kcmFnLnB0JiYocy5wcmVwYXJlVHJhbnNpdGlvbiYmcy5wcmVwYXJlVHJhbnNpdGlvbigwKSxzLnJhaWwuc2Nyb2xsYWJsZSYmcy5zZXRTY3JvbGxUb3AoaSkscy5zY3JvbGxtb20udXBkYXRlKGcsZSkscy5yYWlsaCYmcy5yYWlsaC5zY3JvbGxhYmxlPyhzLnNldFNjcm9sbExlZnQoZikscy5zaG93Q3Vyc29yKGksZikpOnMuc2hvd0N1cnNvcihpKSx2LmlzaWUxMCYmZG9jdW1lbnQuc2VsZWN0aW9uLmNsZWFyKCkpfSksdi5pc2Nocm9tZSYmcy5pc3RvdWNoY2FwYWJsZSYmKGM9ITEpLGMpcmV0dXJuIHMuY2FuY2VsRXZlbnQoYSl9ZWxzZSBpZigxPT1zLnJhaWwuZHJhZy5wdClyZXR1cm4gcy5vbm1vdXNlbW92ZShhKX19aWYocy5vbm1vdXNlZG93bj1mdW5jdGlvbih4LGEpe2lmKCFzLnJhaWwuZHJhZ3x8MT09cy5yYWlsLmRyYWcucHQpe2lmKHMucmFpbHNsb2NrZWQpcmV0dXJuIHMuY2FuY2VsRXZlbnQoeCk7cy5jYW5jZWxTY3JvbGwoKSxzLnJhaWwuZHJhZz17eDp4LmNsaWVudFgseTp4LmNsaWVudFksc3g6cy5zY3JvbGwueCxzeTpzLnNjcm9sbC55LHB0OjEsaHI6ISFhfTt2YXIgYj1zLmdldFRhcmdldCh4KTtyZXR1cm4hcy5pc3BhZ2UmJnYuaGFzbW91c2VjYXB0dXJlJiZiLnNldENhcHR1cmUoKSxzLmlzaWZyYW1lJiYhdi5oYXNtb3VzZWNhcHR1cmUmJihzLnNhdmVkLmNzc3BvaW50ZXJldmVudHM9cy5kb2MuY3NzKCJwb2ludGVyLWV2ZW50cyIpLHMuY3NzKHMuZG9jLHsicG9pbnRlci1ldmVudHMiOiJub25lIn0pKSxzLmhhc21vdmluZz0hMSxzLmNhbmNlbEV2ZW50KHgpfX0scy5vbm1vdXNldXA9ZnVuY3Rpb24oeCl7aWYocy5yYWlsLmRyYWcpcmV0dXJuIDEhPXMucmFpbC5kcmFnLnB0fHwodi5oYXNtb3VzZWNhcHR1cmUmJmRvY3VtZW50LnJlbGVhc2VDYXB0dXJlKCkscy5pc2lmcmFtZSYmIXYuaGFzbW91c2VjYXB0dXJlJiZzLmRvYy5jc3MoInBvaW50ZXItZXZlbnRzIixzLnNhdmVkLmNzc3BvaW50ZXJldmVudHMpLHMucmFpbC5kcmFnPSExLHMuaGFzbW92aW5nJiZzLnRyaWdnZXJTY3JvbGxFbmQoKSxzLmNhbmNlbEV2ZW50KHgpKX0scy5vbm1vdXNlbW92ZT1mdW5jdGlvbih4KXtpZihzLnJhaWwuZHJhZyl7aWYoMT09cy5yYWlsLmRyYWcucHQpe2lmKHYuaXNjaHJvbWUmJjA9PXgud2hpY2gpcmV0dXJuIHMub25tb3VzZXVwKHgpO2lmKHMuY3Vyc29yZnJlZXplZD0hMCxzLmhhc21vdmluZz0hMCxzLnJhaWwuZHJhZy5ocil7cy5zY3JvbGwueD1zLnJhaWwuZHJhZy5zeCsoeC5jbGllbnRYLXMucmFpbC5kcmFnLngpLDA+cy5zY3JvbGwueCYmKHMuc2Nyb2xsLng9MCk7dmFyIGE9cy5zY3JvbGx2YWx1ZW1heHc7cy5zY3JvbGwueD5hJiYocy5zY3JvbGwueD1hKX1lbHNlIHMuc2Nyb2xsLnk9cy5yYWlsLmRyYWcuc3krKHguY2xpZW50WS1zLnJhaWwuZHJhZy55KSwwPnMuc2Nyb2xsLnkmJihzLnNjcm9sbC55PTApLGE9cy5zY3JvbGx2YWx1ZW1heCxzLnNjcm9sbC55PmEmJihzLnNjcm9sbC55PWEpO3JldHVybiBzLnN5bmNoZWQoIm1vdXNlbW92ZSIsZnVuY3Rpb24oKXtzLnJhaWwuZHJhZyYmMT09cy5yYWlsLmRyYWcucHQmJihzLnNob3dDdXJzb3IoKSxzLnJhaWwuZHJhZy5ocj9zLmhhc3JldmVyc2Vocj9zLmRvU2Nyb2xsTGVmdChzLnNjcm9sbHZhbHVlbWF4dy1NYXRoLnJvdW5kKHMuc2Nyb2xsLngqcy5zY3JvbGxyYXRpby54KSxzLm9wdC5jdXJzb3JkcmFnc3BlZWQpOnMuZG9TY3JvbGxMZWZ0KE1hdGgucm91bmQocy5zY3JvbGwueCpzLnNjcm9sbHJhdGlvLngpLHMub3B0LmN1cnNvcmRyYWdzcGVlZCk6cy5kb1Njcm9sbFRvcChNYXRoLnJvdW5kKHMuc2Nyb2xsLnkqcy5zY3JvbGxyYXRpby55KSxzLm9wdC5jdXJzb3JkcmFnc3BlZWQpKX0pLHMuY2FuY2VsRXZlbnQoeCl9fWVsc2Ugcy5jaGVja2FyZWE9MH0sdi5jYW50b3VjaHx8cy5vcHQudG91Y2hiZWhhdmlvcilzLm9ucHJldmVudGNsaWNrPWZ1bmN0aW9uKHgpe2lmKHMucHJldmVudGNsaWNrKXJldHVybiBzLnByZXZlbnRjbGljay50Zy5vbmNsaWNrPXMucHJldmVudGNsaWNrLmNsaWNrLHMucHJldmVudGNsaWNrPSExLHMuY2FuY2VsRXZlbnQoeCl9LHMuYmluZChzLndpbiwibW91c2Vkb3duIixzLm9udG91Y2hzdGFydCkscy5vbmNsaWNrPSF2LmlzaW9zJiZmdW5jdGlvbih4KXtyZXR1cm4hcy5sYXN0bW91c2V1cHx8KHMubGFzdG1vdXNldXA9ITEscy5jYW5jZWxFdmVudCh4KSl9LHMub3B0LmdyYWJjdXJzb3JlbmFibGVkJiZ2LmN1cnNvcmdyYWJ2YWx1ZSYmKHMuY3NzKHMuaXNwYWdlP3MuZG9jOnMud2luLHtjdXJzb3I6di5jdXJzb3JncmFidmFsdWV9KSxzLmNzcyhzLnJhaWwse2N1cnNvcjp2LmN1cnNvcmdyYWJ2YWx1ZX0pKTtlbHNle3ZhciBxPWZ1bmN0aW9uKHgpe2lmKHMuc2VsZWN0aW9uZHJhZyl7aWYoeCl7dmFyIGE9cy53aW4ub3V0ZXJIZWlnaHQoKTswPCh4PXgucGFnZVktcy5zZWxlY3Rpb25kcmFnLnRvcCkmJng8YSYmKHg9MCkseD49YSYmKHgtPWEpLHMuc2VsZWN0aW9uZHJhZy5kZj14fTAhPXMuc2VsZWN0aW9uZHJhZy5kZiYmKHMuZG9TY3JvbGxCeSgyKi1NYXRoLmZsb29yKHMuc2VsZWN0aW9uZHJhZy5kZi82KSkscy5kZWJvdW5jZWQoImRvc2VsZWN0aW9uc2Nyb2xsIixmdW5jdGlvbigpe3EoKX0sNTApKX19O3MuaGFzVGV4dFNlbGVjdGVkPSJnZXRTZWxlY3Rpb24iaW4gZG9jdW1lbnQ/ZnVuY3Rpb24oKXtyZXR1cm4gMDxkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5yYW5nZUNvdW50fToic2VsZWN0aW9uImluIGRvY3VtZW50P2Z1bmN0aW9uKCl7cmV0dXJuIk5vbmUiIT1kb2N1bWVudC5zZWxlY3Rpb24udHlwZX06ZnVuY3Rpb24oKXtyZXR1cm4hMX0scy5vbnNlbGVjdGlvbnN0YXJ0PWZ1bmN0aW9uKHgpe3MuaXNwYWdlfHwocy5zZWxlY3Rpb25kcmFnPXMud2luLm9mZnNldCgpKX0scy5vbnNlbGVjdGlvbmVuZD1mdW5jdGlvbih4KXtzLnNlbGVjdGlvbmRyYWc9ITF9LHMub25zZWxlY3Rpb25kcmFnPWZ1bmN0aW9uKHgpe3Muc2VsZWN0aW9uZHJhZyYmcy5oYXNUZXh0U2VsZWN0ZWQoKSYmcy5kZWJvdW5jZWQoInNlbGVjdGlvbnNjcm9sbCIsZnVuY3Rpb24oKXtxKHgpfSwyNTApfX12Lmhhc3czY3RvdWNoPyhzLmNzcyhzLnJhaWwseyJ0b3VjaC1hY3Rpb24iOiJub25lIn0pLHMuY3NzKHMuY3Vyc29yLHsidG91Y2gtYWN0aW9uIjoibm9uZSJ9KSxzLmJpbmQocy53aW4sInBvaW50ZXJkb3duIixzLm9udG91Y2hzdGFydCkscy5iaW5kKGRvY3VtZW50LCJwb2ludGVydXAiLHMub250b3VjaGVuZCkscy5iaW5kKGRvY3VtZW50LCJwb2ludGVybW92ZSIscy5vbnRvdWNobW92ZSkpOnYuaGFzbXN0b3VjaD8ocy5jc3Mocy5yYWlsLHsiLW1zLXRvdWNoLWFjdGlvbiI6Im5vbmUifSkscy5jc3Mocy5jdXJzb3IseyItbXMtdG91Y2gtYWN0aW9uIjoibm9uZSJ9KSxzLmJpbmQocy53aW4sIk1TUG9pbnRlckRvd24iLHMub250b3VjaHN0YXJ0KSxzLmJpbmQoZG9jdW1lbnQsIk1TUG9pbnRlclVwIixzLm9udG91Y2hlbmQpLHMuYmluZChkb2N1bWVudCwiTVNQb2ludGVyTW92ZSIscy5vbnRvdWNobW92ZSkscy5iaW5kKHMuY3Vyc29yLCJNU0dlc3R1cmVIb2xkIixmdW5jdGlvbih4KXt4LnByZXZlbnREZWZhdWx0KCl9KSxzLmJpbmQocy5jdXJzb3IsImNvbnRleHRtZW51IixmdW5jdGlvbih4KXt4LnByZXZlbnREZWZhdWx0KCl9KSk6dGhpcy5pc3RvdWNoY2FwYWJsZSYmKHMuYmluZChzLndpbiwidG91Y2hzdGFydCIscy5vbnRvdWNoc3RhcnQpLHMuYmluZChkb2N1bWVudCwidG91Y2hlbmQiLHMub250b3VjaGVuZCkscy5iaW5kKGRvY3VtZW50LCJ0b3VjaGNhbmNlbCIscy5vbnRvdWNoZW5kKSxzLmJpbmQoZG9jdW1lbnQsInRvdWNobW92ZSIscy5vbnRvdWNobW92ZSkpLChzLm9wdC5jdXJzb3JkcmFnb250b3VjaHx8IXYuY2FudG91Y2gmJiFzLm9wdC50b3VjaGJlaGF2aW9yKSYmKHMucmFpbC5jc3Moe2N1cnNvcjoiZGVmYXVsdCJ9KSxzLnJhaWxoJiZzLnJhaWxoLmNzcyh7Y3Vyc29yOiJkZWZhdWx0In0pLHMuanFiaW5kKHMucmFpbCwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtpZighcy5pc3BhZ2UmJiFzLndpbi5pcygiOnZpc2libGUiKSlyZXR1cm4hMTtzLmNhbnNob3dvbm1vdXNlZXZlbnQmJnMuc2hvd0N1cnNvcigpLHMucmFpbC5hY3RpdmU9ITB9KSxzLmpxYmluZChzLnJhaWwsIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cy5yYWlsLmFjdGl2ZT0hMSxzLnJhaWwuZHJhZ3x8cy5oaWRlQ3Vyc29yKCl9KSxzLm9wdC5zZW5zaXRpdmVyYWlsJiYocy5iaW5kKHMucmFpbCwiY2xpY2siLGZ1bmN0aW9uKHgpe3MuZG9SYWlsQ2xpY2soeCwhMSwhMSl9KSxzLmJpbmQocy5yYWlsLCJkYmxjbGljayIsZnVuY3Rpb24oeCl7cy5kb1JhaWxDbGljayh4LCEwLCExKX0pLHMuYmluZChzLmN1cnNvciwiY2xpY2siLGZ1bmN0aW9uKHgpe3MuY2FuY2VsRXZlbnQoeCl9KSxzLmJpbmQocy5jdXJzb3IsImRibGNsaWNrIixmdW5jdGlvbih4KXtzLmNhbmNlbEV2ZW50KHgpfSkpLHMucmFpbGgmJihzLmpxYmluZChzLnJhaWxoLCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2lmKCFzLmlzcGFnZSYmIXMud2luLmlzKCI6dmlzaWJsZSIpKXJldHVybiExO3MuY2Fuc2hvd29ubW91c2VldmVudCYmcy5zaG93Q3Vyc29yKCkscy5yYWlsLmFjdGl2ZT0hMH0pLHMuanFiaW5kKHMucmFpbGgsIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cy5yYWlsLmFjdGl2ZT0hMSxzLnJhaWwuZHJhZ3x8cy5oaWRlQ3Vyc29yKCl9KSxzLm9wdC5zZW5zaXRpdmVyYWlsJiYocy5iaW5kKHMucmFpbGgsImNsaWNrIixmdW5jdGlvbih4KXtzLmRvUmFpbENsaWNrKHgsITEsITApfSkscy5iaW5kKHMucmFpbGgsImRibGNsaWNrIixmdW5jdGlvbih4KXtzLmRvUmFpbENsaWNrKHgsITAsITApfSkscy5iaW5kKHMuY3Vyc29yaCwiY2xpY2siLGZ1bmN0aW9uKHgpe3MuY2FuY2VsRXZlbnQoeCl9KSxzLmJpbmQocy5jdXJzb3JoLCJkYmxjbGljayIsZnVuY3Rpb24oeCl7cy5jYW5jZWxFdmVudCh4KX0pKSkpLHYuY2FudG91Y2h8fHMub3B0LnRvdWNoYmVoYXZpb3I/KHMuYmluZCh2Lmhhc21vdXNlY2FwdHVyZT9zLndpbjpkb2N1bWVudCwibW91c2V1cCIscy5vbnRvdWNoZW5kKSxzLmJpbmQoZG9jdW1lbnQsIm1vdXNlbW92ZSIscy5vbnRvdWNobW92ZSkscy5vbmNsaWNrJiZzLmJpbmQoZG9jdW1lbnQsImNsaWNrIixzLm9uY2xpY2spLHMub3B0LmN1cnNvcmRyYWdvbnRvdWNoPyhzLmJpbmQocy5jdXJzb3IsIm1vdXNlZG93biIscy5vbm1vdXNlZG93bikscy5iaW5kKHMuY3Vyc29yLCJtb3VzZXVwIixzLm9ubW91c2V1cCkscy5jdXJzb3JoJiZzLmJpbmQocy5jdXJzb3JoLCJtb3VzZWRvd24iLGZ1bmN0aW9uKHgpe3Mub25tb3VzZWRvd24oeCwhMCl9KSxzLmN1cnNvcmgmJnMuYmluZChzLmN1cnNvcmgsIm1vdXNldXAiLHMub25tb3VzZXVwKSk6KHMuYmluZChzLnJhaWwsIm1vdXNlZG93biIsZnVuY3Rpb24oeCl7eC5wcmV2ZW50RGVmYXVsdCgpfSkscy5yYWlsaCYmcy5iaW5kKHMucmFpbGgsIm1vdXNlZG93biIsZnVuY3Rpb24oeCl7eC5wcmV2ZW50RGVmYXVsdCgpfSkpKToocy5iaW5kKHYuaGFzbW91c2VjYXB0dXJlP3Mud2luOmRvY3VtZW50LCJtb3VzZXVwIixzLm9ubW91c2V1cCkscy5iaW5kKGRvY3VtZW50LCJtb3VzZW1vdmUiLHMub25tb3VzZW1vdmUpLHMub25jbGljayYmcy5iaW5kKGRvY3VtZW50LCJjbGljayIscy5vbmNsaWNrKSxzLmJpbmQocy5jdXJzb3IsIm1vdXNlZG93biIscy5vbm1vdXNlZG93bikscy5iaW5kKHMuY3Vyc29yLCJtb3VzZXVwIixzLm9ubW91c2V1cCkscy5yYWlsaCYmKHMuYmluZChzLmN1cnNvcmgsIm1vdXNlZG93biIsZnVuY3Rpb24oeCl7cy5vbm1vdXNlZG93bih4LCEwKX0pLHMuYmluZChzLmN1cnNvcmgsIm1vdXNldXAiLHMub25tb3VzZXVwKSksIXMuaXNwYWdlJiZzLm9wdC5lbmFibGVzY3JvbGxvbnNlbGVjdGlvbiYmKHMuYmluZChzLndpblswXSwibW91c2Vkb3duIixzLm9uc2VsZWN0aW9uc3RhcnQpLHMuYmluZChkb2N1bWVudCwibW91c2V1cCIscy5vbnNlbGVjdGlvbmVuZCkscy5iaW5kKHMuY3Vyc29yLCJtb3VzZXVwIixzLm9uc2VsZWN0aW9uZW5kKSxzLmN1cnNvcmgmJnMuYmluZChzLmN1cnNvcmgsIm1vdXNldXAiLHMub25zZWxlY3Rpb25lbmQpLHMuYmluZChkb2N1bWVudCwibW91c2Vtb3ZlIixzLm9uc2VsZWN0aW9uZHJhZykpLHMuem9vbSYmKHMuanFiaW5kKHMuem9vbSwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtzLmNhbnNob3dvbm1vdXNlZXZlbnQmJnMuc2hvd0N1cnNvcigpLHMucmFpbC5hY3RpdmU9ITB9KSxzLmpxYmluZChzLnpvb20sIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cy5yYWlsLmFjdGl2ZT0hMSxzLnJhaWwuZHJhZ3x8cy5oaWRlQ3Vyc29yKCl9KSkpLHMub3B0LmVuYWJsZW1vdXNld2hlZWwmJihzLmlzaWZyYW1lfHxzLm1vdXNld2hlZWwodi5pc2llJiZzLmlzcGFnZT9kb2N1bWVudDpzLndpbixzLm9ubW91c2V3aGVlbCkscy5tb3VzZXdoZWVsKHMucmFpbCxzLm9ubW91c2V3aGVlbCkscy5yYWlsaCYmcy5tb3VzZXdoZWVsKHMucmFpbGgscy5vbm1vdXNld2hlZWxocikpLHMuaXNwYWdlfHx2LmNhbnRvdWNofHwvSFRNTHxeQk9EWS8udGVzdChzLndpblswXS5ub2RlTmFtZSl8fChzLndpbi5hdHRyKCJ0YWJpbmRleCIpfHxzLndpbi5hdHRyKHt0YWJpbmRleDpjKyt9KSxzLmpxYmluZChzLndpbiwiZm9jdXMiLGZ1bmN0aW9uKHgpe2E9cy5nZXRUYXJnZXQoeCkuaWR8fCEwLHMuaGFzZm9jdXM9ITAscy5jYW5zaG93b25tb3VzZWV2ZW50JiZzLm5vdGljZUN1cnNvcigpfSkscy5qcWJpbmQocy53aW4sImJsdXIiLGZ1bmN0aW9uKHgpe2E9ITEscy5oYXNmb2N1cz0hMX0pLHMuanFiaW5kKHMud2luLCJtb3VzZWVudGVyIixmdW5jdGlvbih4KXtiPXMuZ2V0VGFyZ2V0KHgpLmlkfHwhMCxzLmhhc21vdXNlZm9jdXM9ITAscy5jYW5zaG93b25tb3VzZWV2ZW50JiZzLm5vdGljZUN1cnNvcigpfSkscy5qcWJpbmQocy53aW4sIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7Yj0hMSxzLmhhc21vdXNlZm9jdXM9ITEscy5yYWlsLmRyYWd8fHMuaGlkZUN1cnNvcigpfSkpfWlmKHMub25rZXlwcmVzcz1mdW5jdGlvbihjKXtpZihzLnJhaWxzbG9ja2VkJiYwPT1zLnBhZ2UubWF4aClyZXR1cm4hMDtjPWN8fHdpbmRvdy5lO3ZhciBkPXMuZ2V0VGFyZ2V0KGMpO2lmKGQmJi9JTlBVVHxURVhUQVJFQXxTRUxFQ1R8T1BUSU9OLy50ZXN0KGQubm9kZU5hbWUpJiYoIWQuZ2V0QXR0cmlidXRlKCJ0eXBlIikmJiFkLnR5cGV8fCEvc3VibWl0fGJ1dHRvbnxjYW5jZWwvaS50cCl8fHgoZCkuYXR0cigiY29udGVudGVkaXRhYmxlIikpcmV0dXJuITA7aWYocy5oYXNmb2N1c3x8cy5oYXNtb3VzZWZvY3VzJiYhYXx8cy5pc3BhZ2UmJiFhJiYhYil7aWYoZD1jLmtleUNvZGUscy5yYWlsc2xvY2tlZCYmMjchPWQpcmV0dXJuIHMuY2FuY2VsRXZlbnQoYyk7dmFyIGU9Yy5jdHJsS2V5fHwhMSxmPWMuc2hpZnRLZXl8fCExLGc9ITE7c3dpdGNoKGQpe2Nhc2UgMzg6Y2FzZSA2MzIzMzpzLmRvU2Nyb2xsQnkoNzIpLGc9ITA7YnJlYWs7Y2FzZSA0MDpjYXNlIDYzMjM1OnMuZG9TY3JvbGxCeSgtNzIpLGc9ITA7YnJlYWs7Y2FzZSAzNzpjYXNlIDYzMjMyOnMucmFpbGgmJihlP3MuZG9TY3JvbGxMZWZ0KDApOnMuZG9TY3JvbGxMZWZ0QnkoNzIpLGc9ITApO2JyZWFrO2Nhc2UgMzk6Y2FzZSA2MzIzNDpzLnJhaWxoJiYoZT9zLmRvU2Nyb2xsTGVmdChzLnBhZ2UubWF4dyk6cy5kb1Njcm9sbExlZnRCeSgtNzIpLGc9ITApO2JyZWFrO2Nhc2UgMzM6Y2FzZSA2MzI3NjpzLmRvU2Nyb2xsQnkocy52aWV3LmgpLGc9ITA7YnJlYWs7Y2FzZSAzNDpjYXNlIDYzMjc3OnMuZG9TY3JvbGxCeSgtcy52aWV3LmgpLGc9ITA7YnJlYWs7Y2FzZSAzNjpjYXNlIDYzMjczOnMucmFpbGgmJmU/cy5kb1Njcm9sbFBvcygwLDApOnMuZG9TY3JvbGxUbygwKSxnPSEwO2JyZWFrO2Nhc2UgMzU6Y2FzZSA2MzI3NTpzLnJhaWxoJiZlP3MuZG9TY3JvbGxQb3Mocy5wYWdlLm1heHcscy5wYWdlLm1heGgpOnMuZG9TY3JvbGxUbyhzLnBhZ2UubWF4aCksZz0hMDticmVhaztjYXNlIDMyOnMub3B0LnNwYWNlYmFyZW5hYmxlZCYmKGY/cy5kb1Njcm9sbEJ5KHMudmlldy5oKTpzLmRvU2Nyb2xsQnkoLXMudmlldy5oKSxnPSEwKTticmVhaztjYXNlIDI3OnMuem9vbWFjdGl2ZSYmKHMuZG9ab29tKCksZz0hMCl9aWYoZylyZXR1cm4gcy5jYW5jZWxFdmVudChjKX19LHMub3B0LmVuYWJsZWtleWJvYXJkJiZzLmJpbmQoZG9jdW1lbnQsdi5pc29wZXJhJiYhdi5pc29wZXJhMTI/ImtleXByZXNzIjoia2V5ZG93biIscy5vbmtleXByZXNzKSxzLmJpbmQoZG9jdW1lbnQsImtleWRvd24iLGZ1bmN0aW9uKHgpe3guY3RybEtleSYmKHMud2hlZWxwcmV2ZW50ZWQ9ITApfSkscy5iaW5kKGRvY3VtZW50LCJrZXl1cCIsZnVuY3Rpb24oeCl7eC5jdHJsS2V5fHwocy53aGVlbHByZXZlbnRlZD0hMSl9KSxzLmJpbmQod2luZG93LCJibHVyIixmdW5jdGlvbih4KXtzLndoZWVscHJldmVudGVkPSExfSkscy5iaW5kKHdpbmRvdywicmVzaXplIixzLmxhenlSZXNpemUpLHMuYmluZCh3aW5kb3csIm9yaWVudGF0aW9uY2hhbmdlIixzLmxhenlSZXNpemUpLHMuYmluZCh3aW5kb3csImxvYWQiLHMubGF6eVJlc2l6ZSksdi5pc2Nocm9tZSYmIXMuaXNwYWdlJiYhcy5oYXN3cmFwcGVyKXt2YXIgcj1zLndpbi5hdHRyKCJzdHlsZSIpLHQ9cGFyc2VGbG9hdChzLndpbi5jc3MoIndpZHRoIikpKzE7cy53aW4uY3NzKCJ3aWR0aCIsdCkscy5zeW5jaGVkKCJjaHJvbWVmaXgiLGZ1bmN0aW9uKCl7cy53aW4uYXR0cigic3R5bGUiLHIpfSl9cy5vbkF0dHJpYnV0ZUNoYW5nZT1mdW5jdGlvbih4KXtzLmxhenlSZXNpemUocy5pc2llb2xkPzI1MDozMCl9LHMuaXNpZTExfHwhMT09PWt8fChzLm9ic2VydmVyYm9keT1uZXcgayhmdW5jdGlvbihhKXtpZihhLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoImF0dHJpYnV0ZXMiPT1hLnR5cGUpcmV0dXJuIHgoImJvZHkiKS5oYXNDbGFzcygibW9kYWwtb3BlbiIpJiZ4KCJib2R5IikuaGFzQ2xhc3MoIm1vZGFsLWRpYWxvZyIpJiYheC5jb250YWlucyh4KCIubW9kYWwtZGlhbG9nIilbMF0scy5kb2NbMF0pP3MuaGlkZSgpOnMuc2hvdygpfSksZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQhPXMucGFnZS5tYXhoKXJldHVybiBzLmxhenlSZXNpemUoMzApfSkscy5vYnNlcnZlcmJvZHkub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxjaGFyYWN0ZXJEYXRhOiExLGF0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiY2xhc3MiXX0pKSxzLmlzcGFnZXx8cy5oYXN3cmFwcGVyfHwoITEhPT1rPyhzLm9ic2VydmVyPW5ldyBrKGZ1bmN0aW9uKHgpe3guZm9yRWFjaChzLm9uQXR0cmlidXRlQ2hhbmdlKX0pLHMub2JzZXJ2ZXIub2JzZXJ2ZShzLndpblswXSx7Y2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITEsYXR0cmlidXRlczohMCxzdWJ0cmVlOiExfSkscy5vYnNlcnZlcnJlbW92ZXI9bmV3IGsoZnVuY3Rpb24oeCl7eC5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKDA8eC5yZW1vdmVkTm9kZXMubGVuZ3RoKWZvcih2YXIgYSBpbiB4LnJlbW92ZWROb2RlcylpZihzJiZ4LnJlbW92ZWROb2Rlc1thXT09cy53aW5bMF0pcmV0dXJuIHMucmVtb3ZlKCl9KX0pLHMub2JzZXJ2ZXJyZW1vdmVyLm9ic2VydmUocy53aW5bMF0ucGFyZW50Tm9kZSx7Y2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITEsYXR0cmlidXRlczohMSxzdWJ0cmVlOiExfSkpOihzLmJpbmQocy53aW4sdi5pc2llJiYhdi5pc2llOT8icHJvcGVydHljaGFuZ2UiOiJET01BdHRyTW9kaWZpZWQiLHMub25BdHRyaWJ1dGVDaGFuZ2UpLHYuaXNpZTkmJnMud2luWzBdLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixzLm9uQXR0cmlidXRlQ2hhbmdlKSxzLmJpbmQocy53aW4sIkRPTU5vZGVSZW1vdmVkIixmdW5jdGlvbih4KXt4LnRhcmdldD09cy53aW5bMF0mJnMucmVtb3ZlKCl9KSkpLCFzLmlzcGFnZSYmcy5vcHQuYm94em9vbSYmcy5iaW5kKHdpbmRvdywicmVzaXplIixzLnJlc2l6ZVpvb20pLHMuaXN0ZXh0YXJlYSYmKHMuYmluZChzLndpbiwia2V5ZG93biIscy5sYXp5UmVzaXplKSxzLmJpbmQocy53aW4sIm1vdXNldXAiLHMubGF6eVJlc2l6ZSkpLHMubGF6eVJlc2l6ZSgzMCl9aWYoIklGUkFNRSI9PXRoaXMuZG9jWzBdLm5vZGVOYW1lKXt2YXIgdT1mdW5jdGlvbigpe3ZhciBhO3MuaWZyYW1leGQ9ITE7dHJ5e2E9ImNvbnRlbnREb2N1bWVudCJpbiB0aGlzP3RoaXMuY29udGVudERvY3VtZW50OnRoaXMuY29udGVudFdpbmRvdy5kb2N1bWVudH1jYXRjaCh4KXtzLmlmcmFtZXhkPSEwLGE9ITF9aWYocy5pZnJhbWV4ZClyZXR1cm4iY29uc29sZSJpbiB3aW5kb3cmJmNvbnNvbGUubG9nKCJOaWNlU2Nyb2xsIGVycm9yOiBwb2xpY3kgcmVzdHJpY2VkIGlmcmFtZSIpLCEwO2lmKHMuZm9yY2VzY3JlZW49ITAscy5pc2lmcmFtZSYmKHMuaWZyYW1lPXtkb2M6eChhKSxodG1sOnMuZG9jLmNvbnRlbnRzKCkuZmluZCgiaHRtbCIpWzBdLGJvZHk6cy5kb2MuY29udGVudHMoKS5maW5kKCJib2R5IilbMF19LHMuZ2V0Q29udGVudFNpemU9ZnVuY3Rpb24oKXtyZXR1cm57dzpNYXRoLm1heChzLmlmcmFtZS5odG1sLnNjcm9sbFdpZHRoLHMuaWZyYW1lLmJvZHkuc2Nyb2xsV2lkdGgpLGg6TWF0aC5tYXgocy5pZnJhbWUuaHRtbC5zY3JvbGxIZWlnaHQscy5pZnJhbWUuYm9keS5zY3JvbGxIZWlnaHQpfX0scy5kb2NzY3JvbGw9eChzLmlmcmFtZS5ib2R5KSksIXYuaXNpb3MmJnMub3B0LmlmcmFtZWF1dG9yZXNpemUmJiFzLmlzaWZyYW1lKXtzLndpbi5zY3JvbGxUb3AoMCkscy5kb2MuaGVpZ2h0KCIiKTt2YXIgYj1NYXRoLm1heChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF0uc2Nyb2xsSGVpZ2h0LGEuYm9keS5zY3JvbGxIZWlnaHQpO3MuZG9jLmhlaWdodChiKX1zLmxhenlSZXNpemUoMzApLHYuaXNpZTcmJnMuY3NzKHgocy5pZnJhbWUuaHRtbCksZCkscy5jc3MoeChzLmlmcmFtZS5ib2R5KSxkKSx2LmlzaW9zJiZzLmhhc3dyYXBwZXImJnMuY3NzKHgoYS5ib2R5KSx7Ii13ZWJraXQtdHJhbnNmb3JtIjoidHJhbnNsYXRlM2QoMCwwLDApIn0pLCJjb250ZW50V2luZG93ImluIHRoaXM/cy5iaW5kKHRoaXMuY29udGVudFdpbmRvdywic2Nyb2xsIixzLm9uc2Nyb2xsKTpzLmJpbmQoYSwic2Nyb2xsIixzLm9uc2Nyb2xsKSxzLm9wdC5lbmFibGVtb3VzZXdoZWVsJiZzLm1vdXNld2hlZWwoYSxzLm9ubW91c2V3aGVlbCkscy5vcHQuZW5hYmxla2V5Ym9hcmQmJnMuYmluZChhLHYuaXNvcGVyYT8ia2V5cHJlc3MiOiJrZXlkb3duIixzLm9ua2V5cHJlc3MpLCh2LmNhbnRvdWNofHxzLm9wdC50b3VjaGJlaGF2aW9yKSYmKHMuYmluZChhLCJtb3VzZWRvd24iLHMub250b3VjaHN0YXJ0KSxzLmJpbmQoYSwibW91c2Vtb3ZlIixmdW5jdGlvbih4KXtyZXR1cm4gcy5vbnRvdWNobW92ZSh4LCEwKX0pLHMub3B0LmdyYWJjdXJzb3JlbmFibGVkJiZ2LmN1cnNvcmdyYWJ2YWx1ZSYmcy5jc3MoeChhLmJvZHkpLHtjdXJzb3I6di5jdXJzb3JncmFidmFsdWV9KSkscy5iaW5kKGEsIm1vdXNldXAiLHMub250b3VjaGVuZCkscy56b29tJiYocy5vcHQuZGJsY2xpY2t6b29tJiZzLmJpbmQoYSwiZGJsY2xpY2siLHMuZG9ab29tKSxzLm9uZ2VzdHVyZXpvb20mJnMuYmluZChhLCJnZXN0dXJlZW5kIixzLm9uZ2VzdHVyZXpvb20pKX07dGhpcy5kb2NbMF0ucmVhZHlTdGF0ZSYmImNvbXBsZXRlIj09dGhpcy5kb2NbMF0ucmVhZHlTdGF0ZSYmc2V0VGltZW91dChmdW5jdGlvbigpe3UuY2FsbChzLmRvY1swXSwhMSl9LDUwMCkscy5iaW5kKHRoaXMuZG9jLCJsb2FkIix1KX19LHRoaXMuc2hvd0N1cnNvcj1mdW5jdGlvbih4LGEpe2lmKHMuY3Vyc29ydGltZW91dCYmKGNsZWFyVGltZW91dChzLmN1cnNvcnRpbWVvdXQpLHMuY3Vyc29ydGltZW91dD0wKSxzLnJhaWwpe2lmKHMuYXV0b2hpZGVkb20mJihzLmF1dG9oaWRlZG9tLnN0b3AoKS5jc3Moe29wYWNpdHk6cy5vcHQuY3Vyc29yb3BhY2l0eW1heH0pLHMuY3Vyc29yYWN0aXZlPSEwKSxzLnJhaWwuZHJhZyYmMT09cy5yYWlsLmRyYWcucHR8fCh2b2lkIDAhPT14JiYhMSE9PXgmJihzLnNjcm9sbC55PU1hdGgucm91bmQoMSp4L3Muc2Nyb2xscmF0aW8ueSkpLHZvaWQgMCE9PWEmJihzLnNjcm9sbC54PU1hdGgucm91bmQoMSphL3Muc2Nyb2xscmF0aW8ueCkpKSxzLmN1cnNvci5jc3Moe2hlaWdodDpzLmN1cnNvcmhlaWdodCx0b3A6cy5zY3JvbGwueX0pLHMuY3Vyc29yaCl7dmFyIGI9cy5oYXNyZXZlcnNlaHI/cy5zY3JvbGx2YWx1ZW1heHctcy5zY3JvbGwueDpzLnNjcm9sbC54OyFzLnJhaWwuYWxpZ24mJnMucmFpbC52aXNpYmlsaXR5P3MuY3Vyc29yaC5jc3Moe3dpZHRoOnMuY3Vyc29yd2lkdGgsbGVmdDpiK3MucmFpbC53aWR0aH0pOnMuY3Vyc29yaC5jc3Moe3dpZHRoOnMuY3Vyc29yd2lkdGgsbGVmdDpifSkscy5jdXJzb3JhY3RpdmU9ITB9cy56b29tJiZzLnpvb20uc3RvcCgpLmNzcyh7b3BhY2l0eTpzLm9wdC5jdXJzb3JvcGFjaXR5bWF4fSl9fSx0aGlzLmhpZGVDdXJzb3I9ZnVuY3Rpb24oeCl7cy5jdXJzb3J0aW1lb3V0fHwhcy5yYWlsfHwhcy5hdXRvaGlkZWRvbXx8cy5oYXNtb3VzZWZvY3VzJiYibGVhdmUiPT1zLm9wdC5hdXRvaGlkZW1vZGV8fChzLmN1cnNvcnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3MucmFpbC5hY3RpdmUmJnMuc2hvd29ubW91c2VldmVudHx8KHMuYXV0b2hpZGVkb20uc3RvcCgpLmFuaW1hdGUoe29wYWNpdHk6cy5vcHQuY3Vyc29yb3BhY2l0eW1pbn0pLHMuem9vbSYmcy56b29tLnN0b3AoKS5hbmltYXRlKHtvcGFjaXR5OnMub3B0LmN1cnNvcm9wYWNpdHltaW59KSxzLmN1cnNvcmFjdGl2ZT0hMSkscy5jdXJzb3J0aW1lb3V0PTB9LHh8fHMub3B0LmhpZGVjdXJzb3JkZWxheSkpfSx0aGlzLm5vdGljZUN1cnNvcj1mdW5jdGlvbih4LGEsYil7cy5zaG93Q3Vyc29yKGEsYikscy5yYWlsLmFjdGl2ZXx8cy5oaWRlQ3Vyc29yKHgpfSx0aGlzLmdldENvbnRlbnRTaXplPXMuaXNwYWdlP2Z1bmN0aW9uKCl7cmV0dXJue3c6TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgpLGg6TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCl9fTpzLmhhc3dyYXBwZXI/ZnVuY3Rpb24oKXtyZXR1cm57dzpzLmRvYy5vdXRlcldpZHRoKCkrcGFyc2VJbnQocy53aW4uY3NzKCJwYWRkaW5nTGVmdCIpKStwYXJzZUludChzLndpbi5jc3MoInBhZGRpbmdSaWdodCIpKSxoOnMuZG9jLm91dGVySGVpZ2h0KCkrcGFyc2VJbnQocy53aW4uY3NzKCJwYWRkaW5nVG9wIikpK3BhcnNlSW50KHMud2luLmNzcygicGFkZGluZ0JvdHRvbSIpKX19OmZ1bmN0aW9uKCl7cmV0dXJue3c6cy5kb2NzY3JvbGxbMF0uc2Nyb2xsV2lkdGgsaDpzLmRvY3Njcm9sbFswXS5zY3JvbGxIZWlnaHR9fSx0aGlzLm9uUmVzaXplPWZ1bmN0aW9uKHgsYSl7aWYoIXN8fCFzLndpbilyZXR1cm4hMTtpZighcy5oYXN3cmFwcGVyJiYhcy5pc3BhZ2Upe2lmKCJub25lIj09cy53aW4uY3NzKCJkaXNwbGF5IikpcmV0dXJuIHMudmlzaWJpbGl0eSYmcy5oaWRlUmFpbCgpLmhpZGVSYWlsSHIoKSwhMTtzLmhpZGRlbnx8cy52aXNpYmlsaXR5fHxzLnNob3dSYWlsKCkuc2hvd1JhaWxIcigpfXZhciBiPXMucGFnZS5tYXhoLGM9cy5wYWdlLm1heHcsZD1zLnZpZXcuaCxlPXMudmlldy53O2lmKHMudmlldz17dzpzLmlzcGFnZT9zLndpbi53aWR0aCgpOnBhcnNlSW50KHMud2luWzBdLmNsaWVudFdpZHRoKSxoOnMuaXNwYWdlP3Mud2luLmhlaWdodCgpOnBhcnNlSW50KHMud2luWzBdLmNsaWVudEhlaWdodCl9LHMucGFnZT1hfHxzLmdldENvbnRlbnRTaXplKCkscy5wYWdlLm1heGg9TWF0aC5tYXgoMCxzLnBhZ2UuaC1zLnZpZXcuaCkscy5wYWdlLm1heHc9TWF0aC5tYXgoMCxzLnBhZ2Uudy1zLnZpZXcudykscy5wYWdlLm1heGg9PWImJnMucGFnZS5tYXh3PT1jJiZzLnZpZXcudz09ZSYmcy52aWV3Lmg9PWQpe2lmKHMuaXNwYWdlKXJldHVybiBzO2lmKGI9cy53aW4ub2Zmc2V0KCkscy5sYXN0cG9zaXRpb24mJigoYz1zLmxhc3Rwb3NpdGlvbikudG9wPT1iLnRvcCYmYy5sZWZ0PT1iLmxlZnQpKXJldHVybiBzO3MubGFzdHBvc2l0aW9uPWJ9cmV0dXJuIDA9PXMucGFnZS5tYXhoPyhzLmhpZGVSYWlsKCkscy5zY3JvbGx2YWx1ZW1heD0wLHMuc2Nyb2xsLnk9MCxzLnNjcm9sbHJhdGlvLnk9MCxzLmN1cnNvcmhlaWdodD0wLHMuc2V0U2Nyb2xsVG9wKDApLHMucmFpbCYmKHMucmFpbC5zY3JvbGxhYmxlPSExKSk6KHMucGFnZS5tYXhoLT1zLm9wdC5yYWlscGFkZGluZy50b3Arcy5vcHQucmFpbHBhZGRpbmcuYm90dG9tLHMucmFpbC5zY3JvbGxhYmxlPSEwKSwwPT1zLnBhZ2UubWF4dz8ocy5oaWRlUmFpbEhyKCkscy5zY3JvbGx2YWx1ZW1heHc9MCxzLnNjcm9sbC54PTAscy5zY3JvbGxyYXRpby54PTAscy5jdXJzb3J3aWR0aD0wLHMuc2V0U2Nyb2xsTGVmdCgwKSxzLnJhaWxoJiYocy5yYWlsaC5zY3JvbGxhYmxlPSExKSk6KHMucGFnZS5tYXh3LT1zLm9wdC5yYWlscGFkZGluZy5sZWZ0K3Mub3B0LnJhaWxwYWRkaW5nLnJpZ2h0LHMucmFpbGgmJihzLnJhaWxoLnNjcm9sbGFibGU9cy5vcHQuaG9yaXpyYWlsZW5hYmxlZCkpLHMucmFpbHNsb2NrZWQ9cy5sb2NrZWR8fDA9PXMucGFnZS5tYXhoJiYwPT1zLnBhZ2UubWF4dyxzLnJhaWxzbG9ja2VkPyhzLmlzcGFnZXx8cy51cGRhdGVTY3JvbGxCYXIocy52aWV3KSwhMSk6KHMuaGlkZGVufHxzLnZpc2liaWxpdHk/IXMucmFpbGh8fHMuaGlkZGVufHxzLnJhaWxoLnZpc2liaWxpdHl8fHMuc2hvd1JhaWxIcigpOnMuc2hvd1JhaWwoKS5zaG93UmFpbEhyKCkscy5pc3RleHRhcmVhJiZzLndpbi5jc3MoInJlc2l6ZSIpJiYibm9uZSIhPXMud2luLmNzcygicmVzaXplIikmJihzLnZpZXcuaC09MjApLHMuY3Vyc29yaGVpZ2h0PU1hdGgubWluKHMudmlldy5oLE1hdGgucm91bmQocy52aWV3Lmgvcy5wYWdlLmgqcy52aWV3LmgpKSxzLmN1cnNvcmhlaWdodD1zLm9wdC5jdXJzb3JmaXhlZGhlaWdodD9zLm9wdC5jdXJzb3JmaXhlZGhlaWdodDpNYXRoLm1heChzLm9wdC5jdXJzb3JtaW5oZWlnaHQscy5jdXJzb3JoZWlnaHQpLHMuY3Vyc29yd2lkdGg9TWF0aC5taW4ocy52aWV3LncsTWF0aC5yb3VuZChzLnZpZXcudy9zLnBhZ2UudypzLnZpZXcudykpLHMuY3Vyc29yd2lkdGg9cy5vcHQuY3Vyc29yZml4ZWRoZWlnaHQ/cy5vcHQuY3Vyc29yZml4ZWRoZWlnaHQ6TWF0aC5tYXgocy5vcHQuY3Vyc29ybWluaGVpZ2h0LHMuY3Vyc29yd2lkdGgpLHMuc2Nyb2xsdmFsdWVtYXg9cy52aWV3Lmgtcy5jdXJzb3JoZWlnaHQtcy5jdXJzb3IuaGJvcmRlci0ocy5vcHQucmFpbHBhZGRpbmcudG9wK3Mub3B0LnJhaWxwYWRkaW5nLmJvdHRvbSkscy5yYWlsaCYmKHMucmFpbGgud2lkdGg9MDxzLnBhZ2UubWF4aD9zLnZpZXcudy1zLnJhaWwud2lkdGg6cy52aWV3Lncscy5zY3JvbGx2YWx1ZW1heHc9cy5yYWlsaC53aWR0aC1zLmN1cnNvcndpZHRoLXMuY3Vyc29yaC53Ym9yZGVyLShzLm9wdC5yYWlscGFkZGluZy5sZWZ0K3Mub3B0LnJhaWxwYWRkaW5nLnJpZ2h0KSkscy5pc3BhZ2V8fHMudXBkYXRlU2Nyb2xsQmFyKHMudmlldykscy5zY3JvbGxyYXRpbz17eDpzLnBhZ2UubWF4dy9zLnNjcm9sbHZhbHVlbWF4dyx5OnMucGFnZS5tYXhoL3Muc2Nyb2xsdmFsdWVtYXh9LHMuZ2V0U2Nyb2xsVG9wKCk+cy5wYWdlLm1heGg/cy5kb1Njcm9sbFRvcChzLnBhZ2UubWF4aCk6KHMuc2Nyb2xsLnk9TWF0aC5yb3VuZChzLmdldFNjcm9sbFRvcCgpKigxL3Muc2Nyb2xscmF0aW8ueSkpLHMuc2Nyb2xsLng9TWF0aC5yb3VuZChzLmdldFNjcm9sbExlZnQoKSooMS9zLnNjcm9sbHJhdGlvLngpKSxzLmN1cnNvcmFjdGl2ZSYmcy5ub3RpY2VDdXJzb3IoKSkscy5zY3JvbGwueSYmMD09cy5nZXRTY3JvbGxUb3AoKSYmcy5kb1Njcm9sbFRvKE1hdGguZmxvb3Iocy5zY3JvbGwueSpzLnNjcm9sbHJhdGlvLnkpKSxzKX0sdGhpcy5yZXNpemU9cy5vblJlc2l6ZSx0aGlzLmhsYXp5cmVzaXplPTAsdGhpcy5sYXp5UmVzaXplPWZ1bmN0aW9uKHgpe3JldHVybiBzLmhhc3dyYXBwZXJ8fHMuaGlkZSgpLHMuaGxhenlyZXNpemUmJmNsZWFyVGltZW91dChzLmhsYXp5cmVzaXplKSxzLmhsYXp5cmVzaXplPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtzJiZzLnNob3coKS5yZXNpemUoKX0sMjQwKSxzfSx0aGlzLmpxYmluZD1mdW5jdGlvbihhLGIsYyl7cy5ldmVudHMucHVzaCh7ZTphLG46YixmOmMscTohMH0pLHgoYSkuYmluZChiLGMpfSx0aGlzLm1vdXNld2hlZWw9ZnVuY3Rpb24oeCxhLGIpe2lmKHg9ImpxdWVyeSJpbiB4P3hbMF06eCwib253aGVlbCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSlzLl9iaW5kKHgsIndoZWVsIixhLGJ8fCExKTtlbHNle3ZhciBjPXZvaWQgMCE9PWRvY3VtZW50Lm9ubW91c2V3aGVlbD8ibW91c2V3aGVlbCI6IkRPTU1vdXNlU2Nyb2xsIjtxKHgsYyxhLGJ8fCExKSwiRE9NTW91c2VTY3JvbGwiPT1jJiZxKHgsIk1vek1vdXNlUGl4ZWxTY3JvbGwiLGEsYnx8ITEpfX0sdi5oYXNldmVudGxpc3RlbmVyPyh0aGlzLmJpbmQ9ZnVuY3Rpb24oeCxhLGIsYyl7cy5fYmluZCgianF1ZXJ5ImluIHg/eFswXTp4LGEsYixjfHwhMSl9LHRoaXMuX2JpbmQ9ZnVuY3Rpb24oeCxhLGIsYyl7cy5ldmVudHMucHVzaCh7ZTp4LG46YSxmOmIsYjpjLHE6ITF9KSx4LmFkZEV2ZW50TGlzdGVuZXIoYSxiLGN8fCExKX0sdGhpcy5jYW5jZWxFdmVudD1mdW5jdGlvbih4KXtyZXR1cm4hIXgmJigoeD14Lm9yaWdpbmFsP3gub3JpZ2luYWw6eCkuY2FuY2VsYWJsZSYmeC5wcmV2ZW50RGVmYXVsdCgpLHguc3RvcFByb3BhZ2F0aW9uKCkseC5wcmV2ZW50TWFuaXB1bGF0aW9uJiZ4LnByZXZlbnRNYW5pcHVsYXRpb24oKSwhMSl9LHRoaXMuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKHgpe3JldHVybiEheCYmKCh4PXgub3JpZ2luYWw/eC5vcmlnaW5hbDp4KS5zdG9wUHJvcGFnYXRpb24oKSwhMSl9LHRoaXMuX3VuYmluZD1mdW5jdGlvbih4LGEsYixjKXt4LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLGMpfSk6KHRoaXMuYmluZD1mdW5jdGlvbih4LGEsYixjKXt2YXIgZD0ianF1ZXJ5ImluIHg/eFswXTp4O3MuX2JpbmQoZCxhLGZ1bmN0aW9uKHgpe3JldHVybih4PXh8fHdpbmRvdy5ldmVudHx8ITEpJiZ4LnNyY0VsZW1lbnQmJih4LnRhcmdldD14LnNyY0VsZW1lbnQpLCJwYWdlWSJpbiB4fHwoeC5wYWdlWD14LmNsaWVudFgrZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQseC5wYWdlWT14LmNsaWVudFkrZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCksITEhPT1iLmNhbGwoZCx4KSYmITEhPT1jfHxzLmNhbmNlbEV2ZW50KHgpfSl9LHRoaXMuX2JpbmQ9ZnVuY3Rpb24oeCxhLGIsYyl7cy5ldmVudHMucHVzaCh7ZTp4LG46YSxmOmIsYjpjLHE6ITF9KSx4LmF0dGFjaEV2ZW50P3guYXR0YWNoRXZlbnQoIm9uIithLGIpOnhbIm9uIithXT1ifSx0aGlzLmNhbmNlbEV2ZW50PWZ1bmN0aW9uKHgpe3JldHVybiEhKHg9d2luZG93LmV2ZW50fHwhMSkmJih4LmNhbmNlbEJ1YmJsZT0hMCx4LmNhbmNlbD0hMCx4LnJldHVyblZhbHVlPSExKX0sdGhpcy5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oeCl7cmV0dXJuISEoeD13aW5kb3cuZXZlbnR8fCExKSYmKHguY2FuY2VsQnViYmxlPSEwLCExKX0sdGhpcy5fdW5iaW5kPWZ1bmN0aW9uKHgsYSxiLGMpe3guZGV0YWNoRXZlbnQ/eC5kZXRhY2hFdmVudCgib24iK2EsYik6eFsib24iK2FdPSExfSksdGhpcy51bmJpbmRBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIHg9MDt4PHMuZXZlbnRzLmxlbmd0aDt4Kyspe3ZhciBhPXMuZXZlbnRzW3hdO2EucT9hLmUudW5iaW5kKGEubixhLmYpOnMuX3VuYmluZChhLmUsYS5uLGEuZixhLmIpfX0sdGhpcy5zaG93UmFpbD1mdW5jdGlvbigpe3JldHVybiAwPT1zLnBhZ2UubWF4aHx8IXMuaXNwYWdlJiYibm9uZSI9PXMud2luLmNzcygiZGlzcGxheSIpfHwocy52aXNpYmlsaXR5PSEwLHMucmFpbC52aXNpYmlsaXR5PSEwLHMucmFpbC5jc3MoImRpc3BsYXkiLCJibG9jayIpKSxzfSx0aGlzLnNob3dSYWlsSHI9ZnVuY3Rpb24oKXtyZXR1cm4gcy5yYWlsaD8oMD09cy5wYWdlLm1heHd8fCFzLmlzcGFnZSYmIm5vbmUiPT1zLndpbi5jc3MoImRpc3BsYXkiKXx8KHMucmFpbGgudmlzaWJpbGl0eT0hMCxzLnJhaWxoLmNzcygiZGlzcGxheSIsImJsb2NrIikpLHMpOnN9LHRoaXMuaGlkZVJhaWw9ZnVuY3Rpb24oKXtyZXR1cm4gcy52aXNpYmlsaXR5PSExLHMucmFpbC52aXNpYmlsaXR5PSExLHMucmFpbC5jc3MoImRpc3BsYXkiLCJub25lIiksc30sdGhpcy5oaWRlUmFpbEhyPWZ1bmN0aW9uKCl7cmV0dXJuIHMucmFpbGg/KHMucmFpbGgudmlzaWJpbGl0eT0hMSxzLnJhaWxoLmNzcygiZGlzcGxheSIsIm5vbmUiKSxzKTpzfSx0aGlzLnNob3c9ZnVuY3Rpb24oKXtyZXR1cm4gcy5oaWRkZW49ITEscy5yYWlsc2xvY2tlZD0hMSxzLnNob3dSYWlsKCkuc2hvd1JhaWxIcigpfSx0aGlzLmhpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5oaWRkZW49ITAscy5yYWlsc2xvY2tlZD0hMCxzLmhpZGVSYWlsKCkuaGlkZVJhaWxIcigpfSx0aGlzLnRvZ2dsZT1mdW5jdGlvbigpe3JldHVybiBzLmhpZGRlbj9zLnNob3coKTpzLmhpZGUoKX0sdGhpcy5yZW1vdmU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gcy5zdG9wKCkscy5jdXJzb3J0aW1lb3V0JiZjbGVhclRpbWVvdXQocy5jdXJzb3J0aW1lb3V0KSxzLmRlbGF5bGlzdClzLmRlbGF5bGlzdFthXSYmaChzLmRlbGF5bGlzdFthXS5oKTtmb3Iocy5kb1pvb21PdXQoKSxzLnVuYmluZEFsbCgpLHYuaXNpZTkmJnMud2luWzBdLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixzLm9uQXR0cmlidXRlQ2hhbmdlKSwhMSE9PXMub2JzZXJ2ZXImJnMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpLCExIT09cy5vYnNlcnZlcnJlbW92ZXImJnMub2JzZXJ2ZXJyZW1vdmVyLmRpc2Nvbm5lY3QoKSwhMSE9PXMub2JzZXJ2ZXJib2R5JiZzLm9ic2VydmVyYm9keS5kaXNjb25uZWN0KCkscy5ldmVudHM9bnVsbCxzLmN1cnNvciYmcy5jdXJzb3IucmVtb3ZlKCkscy5jdXJzb3JoJiZzLmN1cnNvcmgucmVtb3ZlKCkscy5yYWlsJiZzLnJhaWwucmVtb3ZlKCkscy5yYWlsaCYmcy5yYWlsaC5yZW1vdmUoKSxzLnpvb20mJnMuem9vbS5yZW1vdmUoKSxhPTA7YTxzLnNhdmVkLmNzcy5sZW5ndGg7YSsrKXt2YXIgYj1zLnNhdmVkLmNzc1thXTtiWzBdLmNzcyhiWzFdLHZvaWQgMD09PWJbMl0/IiI6YlsyXSl9cy5zYXZlZD0hMSxzLm1lLmRhdGEoIl9fbmljZXNjcm9sbCIsIiIpO3ZhciBjPXgubmljZXNjcm9sbDtmb3IodmFyIGQgaW4gYy5lYWNoKGZ1bmN0aW9uKHgpe2lmKHRoaXMmJnRoaXMuaWQ9PT1zLmlkKXtkZWxldGUgY1t4XTtmb3IodmFyIGE9Kyt4O2E8Yy5sZW5ndGg7YSsrLHgrKyljW3hdPWNbYV07Yy5sZW5ndGgtLSxjLmxlbmd0aCYmZGVsZXRlIGNbYy5sZW5ndGhdfX0pLHMpc1tkXT1udWxsLGRlbGV0ZSBzW2RdO3M9bnVsbH0sdGhpcy5zY3JvbGxzdGFydD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5vbnNjcm9sbHN0YXJ0PXgsc30sdGhpcy5zY3JvbGxlbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMub25zY3JvbGxlbmQ9eCxzfSx0aGlzLnNjcm9sbGNhbmNlbD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5vbnNjcm9sbGNhbmNlbD14LHN9LHRoaXMuem9vbWluPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm9uem9vbWluPXgsc30sdGhpcy56b29tb3V0PWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm9uem9vbW91dD14LHN9LHRoaXMuaXNTY3JvbGxhYmxlPWZ1bmN0aW9uKGEpe2lmKCJPUFRJT04iPT0oYT1hLnRhcmdldD9hLnRhcmdldDphKS5ub2RlTmFtZSlyZXR1cm4hMDtmb3IoO2EmJjE9PWEubm9kZVR5cGUmJiEvXkJPRFl8SFRNTC8udGVzdChhLm5vZGVOYW1lKTspe3ZhciBiPShiPXgoYSkpLmNzcygib3ZlcmZsb3dZIil8fGIuY3NzKCJvdmVyZmxvd1giKXx8Yi5jc3MoIm92ZXJmbG93Iil8fCIiO2lmKC9zY3JvbGx8YXV0by8udGVzdChiKSlyZXR1cm4gYS5jbGllbnRIZWlnaHQhPWEuc2Nyb2xsSGVpZ2h0O2E9ISFhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZX1yZXR1cm4hMX0sdGhpcy5nZXRWaWV3cG9ydD1mdW5jdGlvbihhKXtmb3IoYT0hKCFhfHwhYS5wYXJlbnROb2RlKSYmYS5wYXJlbnROb2RlO2EmJjE9PWEubm9kZVR5cGUmJiEvXkJPRFl8SFRNTC8udGVzdChhLm5vZGVOYW1lKTspe3ZhciBiPXgoYSk7aWYoL2ZpeGVkfGFic29sdXRlLy50ZXN0KGIuY3NzKCJwb3NpdGlvbiIpKSlyZXR1cm4gYjt2YXIgYz1iLmNzcygib3ZlcmZsb3dZIil8fGIuY3NzKCJvdmVyZmxvd1giKXx8Yi5jc3MoIm92ZXJmbG93Iil8fCIiO2lmKC9zY3JvbGx8YXV0by8udGVzdChjKSYmYS5jbGllbnRIZWlnaHQhPWEuc2Nyb2xsSGVpZ2h0fHwwPGIuZ2V0TmljZVNjcm9sbCgpLmxlbmd0aClyZXR1cm4gYjthPSEhYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGV9cmV0dXJuITF9LHRoaXMudHJpZ2dlclNjcm9sbEVuZD1mdW5jdGlvbigpe2lmKHMub25zY3JvbGxlbmQpe3ZhciB4PXMuZ2V0U2Nyb2xsTGVmdCgpLGE9cy5nZXRTY3JvbGxUb3AoKTtzLm9uc2Nyb2xsZW5kLmNhbGwocyx7dHlwZToic2Nyb2xsZW5kIixjdXJyZW50Ont4OngseTphfSxlbmQ6e3g6eCx5OmF9fSl9fSx0aGlzLm9ubW91c2V3aGVlbD1mdW5jdGlvbih4KXtpZighcy53aGVlbHByZXZlbnRlZCl7aWYocy5yYWlsc2xvY2tlZClyZXR1cm4gcy5kZWJvdW5jZWQoImNoZWNrdW5sb2NrIixzLnJlc2l6ZSwyNTApLCEwO2lmKHMucmFpbC5kcmFnKXJldHVybiBzLmNhbmNlbEV2ZW50KHgpO2lmKCJhdXRvIj09cy5vcHQub25lYXhpc21vdXNlbW9kZSYmMCE9eC5kZWx0YVgmJihzLm9wdC5vbmVheGlzbW91c2Vtb2RlPSExKSxzLm9wdC5vbmVheGlzbW91c2Vtb2RlJiYwPT14LmRlbHRhWCYmIXMucmFpbC5zY3JvbGxhYmxlKXJldHVybiFzLnJhaWxofHwhcy5yYWlsaC5zY3JvbGxhYmxlfHxzLm9ubW91c2V3aGVlbGhyKHgpO3ZhciBhPStuZXcgRGF0ZSxiPSExO3JldHVybiBzLm9wdC5wcmVzZXJ2ZW5hdGl2ZXNjcm9sbGluZyYmcy5jaGVja2FyZWErNjAwPGEmJihzLm5hdGl2ZXNjcm9sbGluZ2FyZWE9cy5pc1Njcm9sbGFibGUoeCksYj0hMCkscy5jaGVja2FyZWE9YSxzLm5hdGl2ZXNjcm9sbGluZ2FyZWE/ITA6KCh4PXIoeCwhMSxiKSkmJihzLmNoZWNrYXJlYT0wKSx4KX19LHRoaXMub25tb3VzZXdoZWVsaHI9ZnVuY3Rpb24oeCl7aWYoIXMud2hlZWxwcmV2ZW50ZWQpe2lmKHMucmFpbHNsb2NrZWR8fCFzLnJhaWxoLnNjcm9sbGFibGUpcmV0dXJuITA7aWYocy5yYWlsLmRyYWcpcmV0dXJuIHMuY2FuY2VsRXZlbnQoeCk7dmFyIGE9K25ldyBEYXRlLGI9ITE7cmV0dXJuIHMub3B0LnByZXNlcnZlbmF0aXZlc2Nyb2xsaW5nJiZzLmNoZWNrYXJlYSs2MDA8YSYmKHMubmF0aXZlc2Nyb2xsaW5nYXJlYT1zLmlzU2Nyb2xsYWJsZSh4KSxiPSEwKSxzLmNoZWNrYXJlYT1hLCEhcy5uYXRpdmVzY3JvbGxpbmdhcmVhfHwocy5yYWlsc2xvY2tlZD9zLmNhbmNlbEV2ZW50KHgpOnIoeCwhMCxiKSl9fSx0aGlzLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gcy5jYW5jZWxTY3JvbGwoKSxzLnNjcm9sbG1vbiYmcy5zY3JvbGxtb24uc3RvcCgpLHMuY3Vyc29yZnJlZXplZD0hMSxzLnNjcm9sbC55PU1hdGgucm91bmQocy5nZXRTY3JvbGxUb3AoKSooMS9zLnNjcm9sbHJhdGlvLnkpKSxzLm5vdGljZUN1cnNvcigpLHN9LHRoaXMuZ2V0VHJhbnNpdGlvblNwZWVkPWZ1bmN0aW9uKHgpe3JldHVybiAyMDwoeD1NYXRoLm1pbihNYXRoLnJvdW5kKDEwKnMub3B0LnNjcm9sbHNwZWVkKSxNYXRoLnJvdW5kKHgvMjAqcy5vcHQuc2Nyb2xsc3BlZWQpKSk/eDowfSxzLm9wdC5zbW9vdGhzY3JvbGw/cy5pc2h3c2Nyb2xsJiZ2Lmhhc3RyYW5zaXRpb24mJnMub3B0LnVzZXRyYW5zaXRpb24mJnMub3B0LnNtb290aHNjcm9sbD8odGhpcy5wcmVwYXJlVHJhbnNpdGlvbj1mdW5jdGlvbih4LGEpe3ZhciBiPWE/MjA8eD94OjA6cy5nZXRUcmFuc2l0aW9uU3BlZWQoeCksYz1iP3YucHJlZml4c3R5bGUrInRyYW5zZm9ybSAiK2IrIm1zIGVhc2Utb3V0IjoiIjtyZXR1cm4gcy5sYXN0dHJhbnNpdGlvbnN0eWxlJiZzLmxhc3R0cmFuc2l0aW9uc3R5bGU9PWN8fChzLmxhc3R0cmFuc2l0aW9uc3R5bGU9YyxzLmRvYy5jc3Modi50cmFuc2l0aW9uc3R5bGUsYykpLGJ9LHRoaXMuZG9TY3JvbGxMZWZ0PWZ1bmN0aW9uKHgsYSl7dmFyIGI9cy5zY3JvbGxydW5uaW5nP3MubmV3c2Nyb2xseTpzLmdldFNjcm9sbFRvcCgpO3MuZG9TY3JvbGxQb3MoeCxiLGEpfSx0aGlzLmRvU2Nyb2xsVG9wPWZ1bmN0aW9uKHgsYSl7dmFyIGI9cy5zY3JvbGxydW5uaW5nP3MubmV3c2Nyb2xseDpzLmdldFNjcm9sbExlZnQoKTtzLmRvU2Nyb2xsUG9zKGIseCxhKX0sdGhpcy5kb1Njcm9sbFBvcz1mdW5jdGlvbih4LGEsYil7dmFyIGM9cy5nZXRTY3JvbGxUb3AoKSxkPXMuZ2V0U2Nyb2xsTGVmdCgpO3JldHVybigwPihzLm5ld3Njcm9sbHktYykqKGEtYyl8fDA+KHMubmV3c2Nyb2xseC1kKSooeC1kKSkmJnMuY2FuY2VsU2Nyb2xsKCksMD09cy5vcHQuYm91bmNlc2Nyb2xsJiYoMD5hP2E9MDphPnMucGFnZS5tYXhoJiYoYT1zLnBhZ2UubWF4aCksMD54P3g9MDp4PnMucGFnZS5tYXh3JiYoeD1zLnBhZ2UubWF4dykpLCghcy5zY3JvbGxydW5uaW5nfHx4IT1zLm5ld3Njcm9sbHh8fGEhPXMubmV3c2Nyb2xseSkmJihzLm5ld3Njcm9sbHk9YSxzLm5ld3Njcm9sbHg9eCxzLm5ld3Njcm9sbHNwZWVkPWJ8fCExLCFzLnRpbWVyJiYocy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGI9cy5nZXRTY3JvbGxUb3AoKSxjPXMuZ2V0U2Nyb2xsTGVmdCgpLGQ9TWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3coeC1jLDIpK01hdGgucG93KGEtYiwyKSkpO2Q9cy5uZXdzY3JvbGxzcGVlZCYmMTxzLm5ld3Njcm9sbHNwZWVkP3MubmV3c2Nyb2xsc3BlZWQ6cy5nZXRUcmFuc2l0aW9uU3BlZWQoZCk7cy5uZXdzY3JvbGxzcGVlZCYmMT49cy5uZXdzY3JvbGxzcGVlZCYmKGQqPXMubmV3c2Nyb2xsc3BlZWQpLHMucHJlcGFyZVRyYW5zaXRpb24oZCwhMCkscy50aW1lcnNjcm9sbCYmcy50aW1lcnNjcm9sbC50bSYmY2xlYXJJbnRlcnZhbChzLnRpbWVyc2Nyb2xsLnRtKSwwPGQmJighcy5zY3JvbGxydW5uaW5nJiZzLm9uc2Nyb2xsc3RhcnQmJnMub25zY3JvbGxzdGFydC5jYWxsKHMse3R5cGU6InNjcm9sbHN0YXJ0IixjdXJyZW50Ont4OmMseTpifSxyZXF1ZXN0Ont4OngseTphfSxlbmQ6e3g6cy5uZXdzY3JvbGx4LHk6cy5uZXdzY3JvbGx5fSxzcGVlZDpkfSksdi50cmFuc2l0aW9uZW5kP3Muc2Nyb2xsZW5kdHJhcHBlZHx8KHMuc2Nyb2xsZW5kdHJhcHBlZD0hMCxzLmJpbmQocy5kb2Msdi50cmFuc2l0aW9uZW5kLHMub25TY3JvbGxUcmFuc2l0aW9uRW5kLCExKSk6KHMuc2Nyb2xsZW5kdHJhcHBlZCYmY2xlYXJUaW1lb3V0KHMuc2Nyb2xsZW5kdHJhcHBlZCkscy5zY3JvbGxlbmR0cmFwcGVkPXNldFRpbWVvdXQocy5vblNjcm9sbFRyYW5zaXRpb25FbmQsZCkpLHMudGltZXJzY3JvbGw9e2J6Om5ldyB5KGIscy5uZXdzY3JvbGx5LGQsMCwwLC41OCwxKSxiaDpuZXcgeShjLHMubmV3c2Nyb2xseCxkLDAsMCwuNTgsMSl9LHMuY3Vyc29yZnJlZXplZHx8KHMudGltZXJzY3JvbGwudG09c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtzLnNob3dDdXJzb3Iocy5nZXRTY3JvbGxUb3AoKSxzLmdldFNjcm9sbExlZnQoKSl9LDYwKSkpLHMuc3luY2hlZCgiZG9TY3JvbGwtc2V0IixmdW5jdGlvbigpe3MudGltZXI9MCxzLnNjcm9sbGVuZHRyYXBwZWQmJihzLnNjcm9sbHJ1bm5pbmc9ITApLHMuc2V0U2Nyb2xsVG9wKHMubmV3c2Nyb2xseSkscy5zZXRTY3JvbGxMZWZ0KHMubmV3c2Nyb2xseCkscy5zY3JvbGxlbmR0cmFwcGVkfHxzLm9uU2Nyb2xsVHJhbnNpdGlvbkVuZCgpfSl9LDUwKSx2b2lkIDApKX0sdGhpcy5jYW5jZWxTY3JvbGw9ZnVuY3Rpb24oKXtpZighcy5zY3JvbGxlbmR0cmFwcGVkKXJldHVybiEwO3ZhciB4PXMuZ2V0U2Nyb2xsVG9wKCksYT1zLmdldFNjcm9sbExlZnQoKTtyZXR1cm4gcy5zY3JvbGxydW5uaW5nPSExLHYudHJhbnNpdGlvbmVuZHx8Y2xlYXJUaW1lb3V0KHYudHJhbnNpdGlvbmVuZCkscy5zY3JvbGxlbmR0cmFwcGVkPSExLHMuX3VuYmluZChzLmRvY1swXSx2LnRyYW5zaXRpb25lbmQscy5vblNjcm9sbFRyYW5zaXRpb25FbmQpLHMucHJlcGFyZVRyYW5zaXRpb24oMCkscy5zZXRTY3JvbGxUb3AoeCkscy5yYWlsaCYmcy5zZXRTY3JvbGxMZWZ0KGEpLHMudGltZXJzY3JvbGwmJnMudGltZXJzY3JvbGwudG0mJmNsZWFySW50ZXJ2YWwocy50aW1lcnNjcm9sbC50bSkscy50aW1lcnNjcm9sbD0hMSxzLmN1cnNvcmZyZWV6ZWQ9ITEscy5zaG93Q3Vyc29yKHgsYSksc30sdGhpcy5vblNjcm9sbFRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXtzLnNjcm9sbGVuZHRyYXBwZWQmJnMuX3VuYmluZChzLmRvY1swXSx2LnRyYW5zaXRpb25lbmQscy5vblNjcm9sbFRyYW5zaXRpb25FbmQpLHMuc2Nyb2xsZW5kdHJhcHBlZD0hMSxzLnByZXBhcmVUcmFuc2l0aW9uKDApLHMudGltZXJzY3JvbGwmJnMudGltZXJzY3JvbGwudG0mJmNsZWFySW50ZXJ2YWwocy50aW1lcnNjcm9sbC50bSkscy50aW1lcnNjcm9sbD0hMTt2YXIgeD1zLmdldFNjcm9sbFRvcCgpLGE9cy5nZXRTY3JvbGxMZWZ0KCk7aWYocy5zZXRTY3JvbGxUb3AoeCkscy5yYWlsaCYmcy5zZXRTY3JvbGxMZWZ0KGEpLHMubm90aWNlQ3Vyc29yKCExLHgsYSkscy5jdXJzb3JmcmVlemVkPSExLDA+eD94PTA6eD5zLnBhZ2UubWF4aCYmKHg9cy5wYWdlLm1heGgpLDA+YT9hPTA6YT5zLnBhZ2UubWF4dyYmKGE9cy5wYWdlLm1heHcpLHghPXMubmV3c2Nyb2xseXx8YSE9cy5uZXdzY3JvbGx4KXJldHVybiBzLmRvU2Nyb2xsUG9zKGEseCxzLm9wdC5zbmFwYmFja3NwZWVkKTtzLm9uc2Nyb2xsZW5kJiZzLnNjcm9sbHJ1bm5pbmcmJnMudHJpZ2dlclNjcm9sbEVuZCgpLHMuc2Nyb2xscnVubmluZz0hMX0pOih0aGlzLmRvU2Nyb2xsTGVmdD1mdW5jdGlvbih4LGEpe3ZhciBiPXMuc2Nyb2xscnVubmluZz9zLm5ld3Njcm9sbHk6cy5nZXRTY3JvbGxUb3AoKTtzLmRvU2Nyb2xsUG9zKHgsYixhKX0sdGhpcy5kb1Njcm9sbFRvcD1mdW5jdGlvbih4LGEpe3ZhciBiPXMuc2Nyb2xscnVubmluZz9zLm5ld3Njcm9sbHg6cy5nZXRTY3JvbGxMZWZ0KCk7cy5kb1Njcm9sbFBvcyhiLHgsYSl9LHRoaXMuZG9TY3JvbGxQb3M9ZnVuY3Rpb24oeCxhLGIpe2Z1bmN0aW9uIGMoKXtpZihzLmNhbmNlbEFuaW1hdGlvbkZyYW1lKXJldHVybiEwO2lmKHMuc2Nyb2xscnVubmluZz0hMCxrPTEtaylyZXR1cm4gcy50aW1lcj1nKGMpfHwxO3ZhciB4LGEsYj0wLGQ9YT1zLmdldFNjcm9sbFRvcCgpO3MuZHN0LmF5PygoMD4oeD0oZD1zLmJ6c2Nyb2xsP3MuZHN0LnB5K3MuYnpzY3JvbGwuZ2V0Tm93KCkqcy5kc3QuYXk6cy5uZXdzY3JvbGx5KS1hKSYmZDxzLm5ld3Njcm9sbHl8fDA8eCYmZD5zLm5ld3Njcm9sbHkpJiYoZD1zLm5ld3Njcm9sbHkpLHMuc2V0U2Nyb2xsVG9wKGQpLGQ9PXMubmV3c2Nyb2xseSYmKGI9MSkpOmI9MSxhPXg9cy5nZXRTY3JvbGxMZWZ0KCkscy5kc3QuYXg/KCgwPih4PShhPXMuYnpzY3JvbGw/cy5kc3QucHgrcy5ienNjcm9sbC5nZXROb3coKSpzLmRzdC5heDpzLm5ld3Njcm9sbHgpLXgpJiZhPHMubmV3c2Nyb2xseHx8MDx4JiZhPnMubmV3c2Nyb2xseCkmJihhPXMubmV3c2Nyb2xseCkscy5zZXRTY3JvbGxMZWZ0KGEpLGE9PXMubmV3c2Nyb2xseCYmKGIrPTEpKTpiKz0xLDI9PWI/KHMudGltZXI9MCxzLmN1cnNvcmZyZWV6ZWQ9ITEscy5ienNjcm9sbD0hMSxzLnNjcm9sbHJ1bm5pbmc9ITEsMD5kP2Q9MDpkPnMucGFnZS5tYXhoJiYoZD1NYXRoLm1heCgwLHMucGFnZS5tYXhoKSksMD5hP2E9MDphPnMucGFnZS5tYXh3JiYoYT1zLnBhZ2UubWF4dyksYSE9cy5uZXdzY3JvbGx4fHxkIT1zLm5ld3Njcm9sbHk/cy5kb1Njcm9sbFBvcyhhLGQpOnMub25zY3JvbGxlbmQmJnMudHJpZ2dlclNjcm9sbEVuZCgpKTpzLnRpbWVyPWcoYyl8fDF9aWYoYT12b2lkIDA9PT1hfHwhMT09PWE/cy5nZXRTY3JvbGxUb3AoITApOmEscy50aW1lciYmcy5uZXdzY3JvbGx5PT1hJiZzLm5ld3Njcm9sbHg9PXgpcmV0dXJuITA7cy50aW1lciYmaChzLnRpbWVyKSxzLnRpbWVyPTA7dmFyIGQ9cy5nZXRTY3JvbGxUb3AoKSxlPXMuZ2V0U2Nyb2xsTGVmdCgpOygwPihzLm5ld3Njcm9sbHktZCkqKGEtZCl8fDA+KHMubmV3c2Nyb2xseC1lKSooeC1lKSkmJnMuY2FuY2VsU2Nyb2xsKCkscy5uZXdzY3JvbGx5PWEscy5uZXdzY3JvbGx4PXgscy5ib3VuY2VzY3JvbGwmJnMucmFpbC52aXNpYmlsaXR5fHwoMD5zLm5ld3Njcm9sbHk/cy5uZXdzY3JvbGx5PTA6cy5uZXdzY3JvbGx5PnMucGFnZS5tYXhoJiYocy5uZXdzY3JvbGx5PXMucGFnZS5tYXhoKSkscy5ib3VuY2VzY3JvbGwmJnMucmFpbGgudmlzaWJpbGl0eXx8KDA+cy5uZXdzY3JvbGx4P3MubmV3c2Nyb2xseD0wOnMubmV3c2Nyb2xseD5zLnBhZ2UubWF4dyYmKHMubmV3c2Nyb2xseD1zLnBhZ2UubWF4dykpLHMuZHN0PXt9LHMuZHN0Lng9eC1lLHMuZHN0Lnk9YS1kLHMuZHN0LnB4PWUscy5kc3QucHk9ZDt2YXIgZj1NYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhzLmRzdC54LDIpK01hdGgucG93KHMuZHN0LnksMikpKTtzLmRzdC5heD1zLmRzdC54L2Yscy5kc3QuYXk9cy5kc3QueS9mO3ZhciBpPTAsaj1mO2lmKDA9PXMuZHN0Lng/KGk9ZCxqPWEscy5kc3QuYXk9MSxzLmRzdC5weT0wKTowPT1zLmRzdC55JiYoaT1lLGo9eCxzLmRzdC5heD0xLHMuZHN0LnB4PTApLGY9cy5nZXRUcmFuc2l0aW9uU3BlZWQoZiksYiYmMT49YiYmKGYqPWIpLHMuYnpzY3JvbGw9MDxmJiYocy5ienNjcm9sbD9zLmJ6c2Nyb2xsLnVwZGF0ZShqLGYpOm5ldyB5KGksaixmLDAsMSwwLDEpKSwhcy50aW1lcil7KGQ9PXMucGFnZS5tYXhoJiZhPj1zLnBhZ2UubWF4aHx8ZT09cy5wYWdlLm1heHcmJng+PXMucGFnZS5tYXh3KSYmcy5jaGVja0NvbnRlbnRTaXplKCk7dmFyIGs9MTtzLmNhbmNlbEFuaW1hdGlvbkZyYW1lPSExLHMudGltZXI9MSxzLm9uc2Nyb2xsc3RhcnQmJiFzLnNjcm9sbHJ1bm5pbmcmJnMub25zY3JvbGxzdGFydC5jYWxsKHMse3R5cGU6InNjcm9sbHN0YXJ0IixjdXJyZW50Ont4OmUseTpkfSxyZXF1ZXN0Ont4OngseTphfSxlbmQ6e3g6cy5uZXdzY3JvbGx4LHk6cy5uZXdzY3JvbGx5fSxzcGVlZDpmfSksYygpLChkPT1zLnBhZ2UubWF4aCYmYT49ZHx8ZT09cy5wYWdlLm1heHcmJng+PWUpJiZzLmNoZWNrQ29udGVudFNpemUoKSxzLm5vdGljZUN1cnNvcigpfX0sdGhpcy5jYW5jZWxTY3JvbGw9ZnVuY3Rpb24oKXtyZXR1cm4gcy50aW1lciYmaChzLnRpbWVyKSxzLnRpbWVyPTAscy5ienNjcm9sbD0hMSxzLnNjcm9sbHJ1bm5pbmc9ITEsc30pOih0aGlzLmRvU2Nyb2xsTGVmdD1mdW5jdGlvbih4LGEpe3ZhciBiPXMuZ2V0U2Nyb2xsVG9wKCk7cy5kb1Njcm9sbFBvcyh4LGIsYSl9LHRoaXMuZG9TY3JvbGxUb3A9ZnVuY3Rpb24oeCxhKXt2YXIgYj1zLmdldFNjcm9sbExlZnQoKTtzLmRvU2Nyb2xsUG9zKGIseCxhKX0sdGhpcy5kb1Njcm9sbFBvcz1mdW5jdGlvbih4LGEsYil7dmFyIGM9eD5zLnBhZ2UubWF4dz9zLnBhZ2UubWF4dzp4OzA+YyYmKGM9MCk7dmFyIGQ9YT5zLnBhZ2UubWF4aD9zLnBhZ2UubWF4aDphOzA+ZCYmKGQ9MCkscy5zeW5jaGVkKCJzY3JvbGwiLGZ1bmN0aW9uKCl7cy5zZXRTY3JvbGxUb3AoZCkscy5zZXRTY3JvbGxMZWZ0KGMpfSl9LHRoaXMuY2FuY2VsU2Nyb2xsPWZ1bmN0aW9uKCl7fSksdGhpcy5kb1Njcm9sbEJ5PWZ1bmN0aW9uKHgsYSl7dmFyIGI9MDtiPWE/TWF0aC5mbG9vcigocy5zY3JvbGwueS14KSpzLnNjcm9sbHJhdGlvLnkpOihzLnRpbWVyP3MubmV3c2Nyb2xseTpzLmdldFNjcm9sbFRvcCghMCkpLXg7aWYocy5ib3VuY2VzY3JvbGwpe3ZhciBjPU1hdGgucm91bmQocy52aWV3LmgvMik7YjwtYz9iPS1jOmI+cy5wYWdlLm1heGgrYyYmKGI9cy5wYWdlLm1heGgrYyl9cmV0dXJuIHMuY3Vyc29yZnJlZXplZD0hMSxjPXMuZ2V0U2Nyb2xsVG9wKCEwKSwwPmImJjA+PWM/cy5ub3RpY2VDdXJzb3IoKTpiPnMucGFnZS5tYXhoJiZjPj1zLnBhZ2UubWF4aD8ocy5jaGVja0NvbnRlbnRTaXplKCkscy5ub3RpY2VDdXJzb3IoKSk6KHMuZG9TY3JvbGxUb3AoYiksdm9pZCAwKX0sdGhpcy5kb1Njcm9sbExlZnRCeT1mdW5jdGlvbih4LGEpe3ZhciBiPTA7Yj1hP01hdGguZmxvb3IoKHMuc2Nyb2xsLngteCkqcy5zY3JvbGxyYXRpby54KToocy50aW1lcj9zLm5ld3Njcm9sbHg6cy5nZXRTY3JvbGxMZWZ0KCEwKSkteDtpZihzLmJvdW5jZXNjcm9sbCl7dmFyIGM9TWF0aC5yb3VuZChzLnZpZXcudy8yKTtiPC1jP2I9LWM6Yj5zLnBhZ2UubWF4dytjJiYoYj1zLnBhZ2UubWF4dytjKX1pZihzLmN1cnNvcmZyZWV6ZWQ9ITEsYz1zLmdldFNjcm9sbExlZnQoITApLDA+YiYmMD49Y3x8Yj5zLnBhZ2UubWF4dyYmYz49cy5wYWdlLm1heHcpcmV0dXJuIHMubm90aWNlQ3Vyc29yKCk7cy5kb1Njcm9sbExlZnQoYil9LHRoaXMuZG9TY3JvbGxUbz1mdW5jdGlvbih4LGEpe3MuY3Vyc29yZnJlZXplZD0hMSxzLmRvU2Nyb2xsVG9wKHgpfSx0aGlzLmNoZWNrQ29udGVudFNpemU9ZnVuY3Rpb24oKXt2YXIgeD1zLmdldENvbnRlbnRTaXplKCk7eC5oPT1zLnBhZ2UuaCYmeC53PT1zLnBhZ2Uud3x8cy5yZXNpemUoITEseCl9LHMub25zY3JvbGw9ZnVuY3Rpb24oeCl7cy5yYWlsLmRyYWd8fHMuY3Vyc29yZnJlZXplZHx8cy5zeW5jaGVkKCJzY3JvbGwiLGZ1bmN0aW9uKCl7cy5zY3JvbGwueT1NYXRoLnJvdW5kKHMuZ2V0U2Nyb2xsVG9wKCkqKDEvcy5zY3JvbGxyYXRpby55KSkscy5yYWlsaCYmKHMuc2Nyb2xsLng9TWF0aC5yb3VuZChzLmdldFNjcm9sbExlZnQoKSooMS9zLnNjcm9sbHJhdGlvLngpKSkscy5ub3RpY2VDdXJzb3IoKX0pfSxzLmJpbmQocy5kb2NzY3JvbGwsInNjcm9sbCIscy5vbnNjcm9sbCksdGhpcy5kb1pvb21Jbj1mdW5jdGlvbihhKXtpZighcy56b29tYWN0aXZlKXtzLnpvb21hY3RpdmU9ITAscy56b29tcmVzdG9yZT17c3R5bGU6e319O3ZhciBiLGM9InBvc2l0aW9uIHRvcCBsZWZ0IHpJbmRleCBiYWNrZ3JvdW5kQ29sb3IgbWFyZ2luVG9wIG1hcmdpbkJvdHRvbSBtYXJnaW5MZWZ0IG1hcmdpblJpZ2h0Ii5zcGxpdCgiICIpLGQ9cy53aW5bMF0uc3R5bGU7Zm9yKGIgaW4gYyl7dmFyIGY9Y1tiXTtzLnpvb21yZXN0b3JlLnN0eWxlW2ZdPXZvaWQgMCE9PWRbZl0/ZFtmXToiIn1yZXR1cm4gcy56b29tcmVzdG9yZS5zdHlsZS53aWR0aD1zLndpbi5jc3MoIndpZHRoIikscy56b29tcmVzdG9yZS5zdHlsZS5oZWlnaHQ9cy53aW4uY3NzKCJoZWlnaHQiKSxzLnpvb21yZXN0b3JlLnBhZGRpbmc9e3c6cy53aW4ub3V0ZXJXaWR0aCgpLXMud2luLndpZHRoKCksaDpzLndpbi5vdXRlckhlaWdodCgpLXMud2luLmhlaWdodCgpfSx2LmlzaW9zNCYmKHMuem9vbXJlc3RvcmUuc2Nyb2xsVG9wPXgod2luZG93KS5zY3JvbGxUb3AoKSx4KHdpbmRvdykuc2Nyb2xsVG9wKDApKSxzLndpbi5jc3Moe3Bvc2l0aW9uOnYuaXNpb3M0PyJhYnNvbHV0ZSI6ImZpeGVkIix0b3A6MCxsZWZ0OjAsekluZGV4OmUrMTAwLG1hcmdpbjowfSksKCIiPT0oYz1zLndpbi5jc3MoImJhY2tncm91bmRDb2xvciIpKXx8L3RyYW5zcGFyZW50fHJnYmFcKDAsIDAsIDAsIDBcKXxyZ2JhXCgwLDAsMCwwXCkvLnRlc3QoYykpJiZzLndpbi5jc3MoImJhY2tncm91bmRDb2xvciIsIiNmZmYiKSxzLnJhaWwuY3NzKHt6SW5kZXg6ZSsxMDF9KSxzLnpvb20uY3NzKHt6SW5kZXg6ZSsxMDJ9KSxzLnpvb20uY3NzKCJiYWNrZ3JvdW5kUG9zaXRpb24iLCIwcHggLTE4cHgiKSxzLnJlc2l6ZVpvb20oKSxzLm9uem9vbWluJiZzLm9uem9vbWluLmNhbGwocykscy5jYW5jZWxFdmVudChhKX19LHRoaXMuZG9ab29tT3V0PWZ1bmN0aW9uKGEpe2lmKHMuem9vbWFjdGl2ZSlyZXR1cm4gcy56b29tYWN0aXZlPSExLHMud2luLmNzcygibWFyZ2luIiwiIikscy53aW4uY3NzKHMuem9vbXJlc3RvcmUuc3R5bGUpLHYuaXNpb3M0JiZ4KHdpbmRvdykuc2Nyb2xsVG9wKHMuem9vbXJlc3RvcmUuc2Nyb2xsVG9wKSxzLnJhaWwuY3NzKHsiei1pbmRleCI6cy56aW5kZXh9KSxzLnpvb20uY3NzKHsiei1pbmRleCI6cy56aW5kZXh9KSxzLnpvb21yZXN0b3JlPSExLHMuem9vbS5jc3MoImJhY2tncm91bmRQb3NpdGlvbiIsIjBweCAwcHgiKSxzLm9uUmVzaXplKCkscy5vbnpvb21vdXQmJnMub256b29tb3V0LmNhbGwocykscy5jYW5jZWxFdmVudChhKX0sdGhpcy5kb1pvb209ZnVuY3Rpb24oeCl7cmV0dXJuIHMuem9vbWFjdGl2ZT9zLmRvWm9vbU91dCh4KTpzLmRvWm9vbUluKHgpfSx0aGlzLnJlc2l6ZVpvb209ZnVuY3Rpb24oKXtpZihzLnpvb21hY3RpdmUpe3ZhciBhPXMuZ2V0U2Nyb2xsVG9wKCk7cy53aW4uY3NzKHt3aWR0aDp4KHdpbmRvdykud2lkdGgoKS1zLnpvb21yZXN0b3JlLnBhZGRpbmcudysicHgiLGhlaWdodDp4KHdpbmRvdykuaGVpZ2h0KCktcy56b29tcmVzdG9yZS5wYWRkaW5nLmgrInB4In0pLHMub25SZXNpemUoKSxzLnNldFNjcm9sbFRvcChNYXRoLm1pbihzLnBhZ2UubWF4aCxhKSl9fSx0aGlzLmluaXQoKSx4Lm5pY2VzY3JvbGwucHVzaCh0aGlzKX0scD1mdW5jdGlvbih4KXt2YXIgYT10aGlzO3RoaXMubmM9eCx0aGlzLnN0ZXB0aW1lPXRoaXMubGFzdHRpbWU9dGhpcy5zcGVlZHk9dGhpcy5zcGVlZHg9dGhpcy5sYXN0eT10aGlzLmxhc3R4PTAsdGhpcy5zbmFweT10aGlzLnNuYXB4PSExLHRoaXMuZGVtdWx5PXRoaXMuZGVtdWx4PTAsdGhpcy5sYXN0c2Nyb2xseT10aGlzLmxhc3RzY3JvbGx4PS0xLHRoaXMudGltZXI9dGhpcy5jaGt5PXRoaXMuY2hreD0wLHRoaXMudGltZT1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sdGhpcy5yZXNldD1mdW5jdGlvbih4LGIpe2Euc3RvcCgpO3ZhciBjPWEudGltZSgpO2Euc3RlcHRpbWU9MCxhLmxhc3R0aW1lPWMsYS5zcGVlZHg9MCxhLnNwZWVkeT0wLGEubGFzdHg9eCxhLmxhc3R5PWIsYS5sYXN0c2Nyb2xseD0tMSxhLmxhc3RzY3JvbGx5PS0xfSx0aGlzLnVwZGF0ZT1mdW5jdGlvbih4LGIpe3ZhciBjPWEudGltZSgpO2Euc3RlcHRpbWU9Yy1hLmxhc3R0aW1lLGEubGFzdHRpbWU9YztjPWItYS5sYXN0eTt2YXIgZD14LWEubGFzdHgsZT0oZT1hLm5jLmdldFNjcm9sbFRvcCgpKStjLGY9KGY9YS5uYy5nZXRTY3JvbGxMZWZ0KCkpK2Q7YS5zbmFweD0wPmZ8fGY+YS5uYy5wYWdlLm1heHcsYS5zbmFweT0wPmV8fGU+YS5uYy5wYWdlLm1heGgsYS5zcGVlZHg9ZCxhLnNwZWVkeT1jLGEubGFzdHg9eCxhLmxhc3R5PWJ9LHRoaXMuc3RvcD1mdW5jdGlvbigpe2EubmMudW5zeW5jaGVkKCJkb21vbWVudHVtMmQiKSxhLnRpbWVyJiZjbGVhclRpbWVvdXQoYS50aW1lciksYS50aW1lcj0wLGEubGFzdHNjcm9sbHg9LTEsYS5sYXN0c2Nyb2xseT0tMX0sdGhpcy5kb1NuYXB5PWZ1bmN0aW9uKHgsYil7dmFyIGM9ITE7MD5iPyhiPTAsYz0hMCk6Yj5hLm5jLnBhZ2UubWF4aCYmKGI9YS5uYy5wYWdlLm1heGgsYz0hMCksMD54Pyh4PTAsYz0hMCk6eD5hLm5jLnBhZ2UubWF4dyYmKHg9YS5uYy5wYWdlLm1heHcsYz0hMCksYz9hLm5jLmRvU2Nyb2xsUG9zKHgsYixhLm5jLm9wdC5zbmFwYmFja3NwZWVkKTphLm5jLnRyaWdnZXJTY3JvbGxFbmQoKX0sdGhpcy5kb01vbWVudHVtPWZ1bmN0aW9uKHgpe3ZhciBiPWEudGltZSgpLGM9eD9iK3g6YS5sYXN0dGltZTt4PWEubmMuZ2V0U2Nyb2xsTGVmdCgpO3ZhciBkPWEubmMuZ2V0U2Nyb2xsVG9wKCksZT1hLm5jLnBhZ2UubWF4aCxmPWEubmMucGFnZS5tYXh3O2lmKGEuc3BlZWR4PTA8Zj9NYXRoLm1pbig2MCxhLnNwZWVkeCk6MCxhLnNwZWVkeT0wPGU/TWF0aC5taW4oNjAsYS5zcGVlZHkpOjAsYz1jJiY2MD49Yi1jLCgwPmR8fGQ+ZXx8MD54fHx4PmYpJiYoYz0hMSkseD0hKCFhLnNwZWVkeHx8IWMpJiZhLnNwZWVkeCxhLnNwZWVkeSYmYyYmYS5zcGVlZHl8fHgpe3ZhciBnPU1hdGgubWF4KDE2LGEuc3RlcHRpbWUpOzUwPGcmJih4PWcvNTAsYS5zcGVlZHgqPXgsYS5zcGVlZHkqPXgsZz01MCksYS5kZW11bHh5PTAsYS5sYXN0c2Nyb2xseD1hLm5jLmdldFNjcm9sbExlZnQoKSxhLmNoa3g9YS5sYXN0c2Nyb2xseCxhLmxhc3RzY3JvbGx5PWEubmMuZ2V0U2Nyb2xsVG9wKCksYS5jaGt5PWEubGFzdHNjcm9sbHk7dmFyIGg9YS5sYXN0c2Nyb2xseCxpPWEubGFzdHNjcm9sbHksaj1mdW5jdGlvbigpe3ZhciB4PTYwMDxhLnRpbWUoKS1iPy4wNDouMDI7YS5zcGVlZHgmJihoPU1hdGguZmxvb3IoYS5sYXN0c2Nyb2xseC1hLnNwZWVkeCooMS1hLmRlbXVseHkpKSxhLmxhc3RzY3JvbGx4PWgsMD5ofHxoPmYpJiYoeD0uMSksYS5zcGVlZHkmJihpPU1hdGguZmxvb3IoYS5sYXN0c2Nyb2xseS1hLnNwZWVkeSooMS1hLmRlbXVseHkpKSxhLmxhc3RzY3JvbGx5PWksMD5pfHxpPmUpJiYoeD0uMSksYS5kZW11bHh5PU1hdGgubWluKDEsYS5kZW11bHh5K3gpLGEubmMuc3luY2hlZCgiZG9tb21lbnR1bTJkIixmdW5jdGlvbigpe2Euc3BlZWR4JiYoYS5uYy5nZXRTY3JvbGxMZWZ0KCksYS5jaGt4PWgsYS5uYy5zZXRTY3JvbGxMZWZ0KGgpKSxhLnNwZWVkeSYmKGEubmMuZ2V0U2Nyb2xsVG9wKCksYS5jaGt5PWksYS5uYy5zZXRTY3JvbGxUb3AoaSkpLGEudGltZXJ8fChhLm5jLmhpZGVDdXJzb3IoKSxhLmRvU25hcHkoaCxpKSl9KSwxPmEuZGVtdWx4eT9hLnRpbWVyPXNldFRpbWVvdXQoaixnKTooYS5zdG9wKCksYS5uYy5oaWRlQ3Vyc29yKCksYS5kb1NuYXB5KGgsaSkpfTtqKCl9ZWxzZSBhLmRvU25hcHkoYS5uYy5nZXRTY3JvbGxMZWZ0KCksYS5uYy5nZXRTY3JvbGxUb3AoKSl9fSxxPXguZm4uc2Nyb2xsVG9wO3guY3NzSG9va3MucGFnZVlPZmZzZXQ9e2dldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuKGI9eC5kYXRhKGEsIl9fbmljZXNjcm9sbCIpfHwhMSkmJmIuaXNod3Njcm9sbD9iLmdldFNjcm9sbFRvcCgpOnEuY2FsbChhKX0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9eC5kYXRhKGEsIl9fbmljZXNjcm9sbCIpfHwhMTtyZXR1cm4gYyYmYy5pc2h3c2Nyb2xsP2Muc2V0U2Nyb2xsVG9wKHBhcnNlSW50KGIpKTpxLmNhbGwoYSxiKSx0aGlzfX0seC5mbi5zY3JvbGxUb3A9ZnVuY3Rpb24oYSl7aWYodm9pZCAwPT09YSl7dmFyIGI9dGhpc1swXSYmeC5kYXRhKHRoaXNbMF0sIl9fbmljZXNjcm9sbCIpfHwhMTtyZXR1cm4gYiYmYi5pc2h3c2Nyb2xsP2IuZ2V0U2Nyb2xsVG9wKCk6cS5jYWxsKHRoaXMpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj14LmRhdGEodGhpcywiX19uaWNlc2Nyb2xsIil8fCExO2ImJmIuaXNod3Njcm9sbD9iLnNldFNjcm9sbFRvcChwYXJzZUludChhKSk6cS5jYWxsKHgodGhpcyksYSl9KX07dmFyIHI9eC5mbi5zY3JvbGxMZWZ0O3guY3NzSG9va3MucGFnZVhPZmZzZXQ9e2dldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuKGI9eC5kYXRhKGEsIl9fbmljZXNjcm9sbCIpfHwhMSkmJmIuaXNod3Njcm9sbD9iLmdldFNjcm9sbExlZnQoKTpyLmNhbGwoYSl9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPXguZGF0YShhLCJfX25pY2VzY3JvbGwiKXx8ITE7cmV0dXJuIGMmJmMuaXNod3Njcm9sbD9jLnNldFNjcm9sbExlZnQocGFyc2VJbnQoYikpOnIuY2FsbChhLGIpLHRoaXN9fSx4LmZuLnNjcm9sbExlZnQ9ZnVuY3Rpb24oYSl7aWYodm9pZCAwPT09YSl7dmFyIGI9dGhpc1swXSYmeC5kYXRhKHRoaXNbMF0sIl9fbmljZXNjcm9sbCIpfHwhMTtyZXR1cm4gYiYmYi5pc2h3c2Nyb2xsP2IuZ2V0U2Nyb2xsTGVmdCgpOnIuY2FsbCh0aGlzKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9eC5kYXRhKHRoaXMsIl9fbmljZXNjcm9sbCIpfHwhMTtiJiZiLmlzaHdzY3JvbGw/Yi5zZXRTY3JvbGxMZWZ0KHBhcnNlSW50KGEpKTpyLmNhbGwoeCh0aGlzKSxhKX0pfTt2YXIgcz1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2lmKHRoaXMubGVuZ3RoPTAsdGhpcy5uYW1lPSJuaWNlc2Nyb2xsYXJyYXkiLHRoaXMuZWFjaD1mdW5jdGlvbihhKXtyZXR1cm4geC5lYWNoKGIsYSksYn0sdGhpcy5wdXNoPWZ1bmN0aW9uKHgpe2JbYi5sZW5ndGhdPXgsYi5sZW5ndGgrK30sdGhpcy5lcT1mdW5jdGlvbih4KXtyZXR1cm4gYlt4XX0sYSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9eC5kYXRhKGFbY10sIl9fbmljZXNjcm9sbCIpfHwhMTtkJiYodGhpc1t0aGlzLmxlbmd0aF09ZCx0aGlzLmxlbmd0aCsrKX1yZXR1cm4gdGhpc307IWZ1bmN0aW9uKHgsYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliKHgsYVtjXSl9KHMucHJvdG90eXBlLCJzaG93IGhpZGUgdG9nZ2xlIG9uUmVzaXplIHJlc2l6ZSByZW1vdmUgc3RvcCBkb1Njcm9sbFBvcyIuc3BsaXQoIiAiKSxmdW5jdGlvbih4LGEpe3hbYV09ZnVuY3Rpb24oKXt2YXIgeD1hcmd1bWVudHM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXNbYV0uYXBwbHkodGhpcyx4KX0pfX0pLHguZm4uZ2V0TmljZVNjcm9sbD1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9uZXcgcyh0aGlzKTp0aGlzW2FdJiZ4LmRhdGEodGhpc1thXSwiX19uaWNlc2Nyb2xsIil8fCExfSx4LmV4cHJbIjoiXS5uaWNlc2Nyb2xsPWZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDAhPT14LmRhdGEoYSwiX19uaWNlc2Nyb2xsIil9LHguZm4ubmljZVNjcm9sbD1mdW5jdGlvbihhLGIpe3ZvaWQgMCE9PWJ8fCJvYmplY3QiIT10eXBlb2YgYXx8ImpxdWVyeSJpbiBhfHwoYj1hLGE9ITEpLGI9eC5leHRlbmQoe30sYik7dmFyIGM9bmV3IHM7dm9pZCAwPT09YiYmKGI9e30pLGEmJihiLmRvYz14KGEpLGIud2luPXgodGhpcykpO3ZhciBkPSEoImRvYyJpbiBiKTtyZXR1cm4gZHx8IndpbiJpbiBifHwoYi53aW49eCh0aGlzKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9eCh0aGlzKS5kYXRhKCJfX25pY2VzY3JvbGwiKXx8ITE7YXx8KGIuZG9jPWQ/eCh0aGlzKTpiLmRvYyxhPW5ldyBvKGIseCh0aGlzKSkseCh0aGlzKS5kYXRhKCJfX25pY2VzY3JvbGwiLGEpKSxjLnB1c2goYSl9KSwxPT1jLmxlbmd0aD9jWzBdOmN9LHdpbmRvdy5OaWNlU2Nyb2xsPXtnZXRqUXVlcnk6ZnVuY3Rpb24oKXtyZXR1cm4geH19LHgubmljZXNjcm9sbHx8KHgubmljZXNjcm9sbD1uZXcgcyx4Lm5pY2VzY3JvbGwub3B0aW9ucz1sKX0pOwkKCi8qalF1ZXJ5IGxpc3QgMC44LCAoYykgZXJtb3V0aCovCiFmdW5jdGlvbih4KXt2YXIgYT1PYmplY3QsYj1hLmlzU3RyaW5nLGM9YS5pc0FycmF5LGQ9YS5pc09iamVjdCxlPWEuaXNGdW5jdGlvbixmPShhLmlzTnVtYmVyLHguZXh0ZW5kKSxnPSh4LnR5cGUse2h0bWw6ZnVuY3Rpb24oYSxjLGcpe3ZhciBoPSIiLGk9K2d8fDA7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGE/KGg9YShjLGcpLGIoaCkmJihoPXgoaCkpKTpiKGEpP2g9eChhLmFzc2lnbihmKHtfaTppLF9pMTppKzF9LGMpKSk6ZChhKSYmYS5qcXVlcnkmJihoPWUoeC50bXBsKSYmInRleHQveC1qcXVlcnktdG1wbCI9PWEuYXR0cigidHlwZSIpP2EudG1wbChjLHtfaTppLF9pMTppKzF9KTp4KChhLmh0bWwoKSsiIikuYXNzaWduKHguZXh0ZW5kKHtfaTppLF9pMTppKzF9LGMpKSkpLGh9LHNkYm1Db2RlOmZ1bmN0aW9uKHgpe2Zvcih2YXIgYT1KU09OLnN0cmluZ2lmeSh4KSxiPTAsYz0wO2M8YS5sZW5ndGg7YysrKWI9YS5jaGFyQ29kZUF0KGMpKyhiPDw2KSsoYjw8MTYpLWI7cmV0dXJuKDFlMTErYikudG9TdHJpbmcoMzYpfSxjYWNoZTpmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPVtdLGQ9Yi5zb3J0Qnk/eC5zb3J0QnkoYi5zb3J0QnkpOngsZT0wO2U8ZC5sZW5ndGg7ZSsrKWcuY2FjaGVSb3coZSxkW2VdLGMsYSxiKTtyZXR1cm4gY30sY2FjaGVSb3c6ZnVuY3Rpb24oeCxhLGIsYyxkKXt2YXIgZT1kLmlkKGEpLGY9ZC5oYXNoKGEpLGg9ZC50ZW1wbGF0ZTtjLmhhc2hbZV0mJmMuaGFzaFtlXT09Znx8KGMuJG9bZV09Yy4kb1tlXT9nLmh0bWwoaCxhLHgpLnJlcGxhY2VBbGwoYy4kb1tlXSk6Zy5odG1sKGgsYSx4KSxjLmhhc2hbZV09ZiksYlt4XT1lfSxldmVudDpmdW5jdGlvbihhLGIpe3ZhciBjPXgodGhpcyk7Yi5jYWxsKHRoaXMsYSxjLGMuZGF0YSgidmFsdWUiKXx8Yy50ZXh0KCkpfSxyZW5kZXI6ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQsZSxmPWEucGFyYW1zLGg9YixpPSJmdW5jdGlvbiI9PXR5cGVvZiBjP2M6ZnVuY3Rpb24oKXt9O2lmKCFmLmRlbGF5fHwhZi5jaHVua3x8Zi5jaHVuaz49aC5sZW5ndGgpe2Zvcih2YXIgaj0wO2o8aC5sZW5ndGg7aisrKW8oaik7aSh4KX1lbHNle3ZhciBrPWYuZGVsYXksbD1mLmNodW5rLG09Zy5zZGJtQ29kZShEYXRlLm5vdygpKTtmLnBvc2l0aW9uPTAsYS5jeWNsZT1tLG4oKX1yZXR1cm4geDtmdW5jdGlvbiBuKCl7aWYoYS5jeWNsZT09bSl7Zm9yKHZhciBiPWYucG9zaXRpb24sYz0hMSxkPWI7ZDxiK2w7ZCsrKXZvaWQgMCE9PWhbZF0/byhkKTpjPSEwO2YucG9zaXRpb249YitsLGM/aSh4KTpuLmRlbGF5KGspfX1mdW5jdGlvbiBvKGIpe2U9YS5jYWNoZS4kb1toW2JdXSxkPWI/ZC5sYXN0KCkubmV4dCgpLmlzKGUpP2U6ZS5pbnNlcnRBZnRlcihkLmxhc3QoKSk6eC5jaGlsZHJlbigpLmZpcnN0KCkuaXMoZSk/ZTplLnByZXBlbmRUbyh4KX19fSksaD17aW5pdDpmdW5jdGlvbihhKXtpZighZChhKXx8IWEudGVtcGxhdGV8fCFjKGEuZGF0YSkpcmV0dXJuIHRoaXM7dmFyIGI9dGhpcy5lcSgwKSxmPXguZXh0ZW5kKCEwLHtkZWxheTowLGNodW5rOjAscG9zaXRpb246MCxpZDpmdW5jdGlvbih4KXtyZXR1cm4gZy5zZGJtQ29kZSh4KX0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gZy5zZGJtQ29kZSh4KX0sc29ydEJ5Om51bGx9LGEpLGg9eyRvOnt9LGhhc2g6e319LGk9Zi5zb3J0Qnk/Zi5kYXRhLnNvcnRCeShmLnNvcnRCeSk6Zi5kYXRhLGo9e2xpc3Q6Zy5jYWNoZShpLGgsZiksY2FjaGU6aCxkYXRhOmkscGFyYW1zOmYsY3ljbGU6IiIsbG9jazohMX07aWYoYi5hZGRDbGFzcygibXktbGlzdCIpLmRhdGEoImxpc3QiLGopLmxpc3QoInJlZHJhdyIpLGYuZXZlbnRzKWZvcih2YXIgayBpbiBmLmV2ZW50cyl7dmFyIGw9Zi5ldmVudHNba107aWYoZChsKSlmb3IodmFyIG0gaW4gbCllKGxbbV0pJiZiLm9uKG0rIi5saXN0IixrLGcuZXZlbnQuZmlsbCh2b2lkIDAsbFttXSkpO2Vsc2UgZShsKSYmYi5vbigiY2xpY2subGlzdCIsayxnLmV2ZW50LmZpbGwodm9pZCAwLGwpKX1yZXR1cm4gYn0scm93OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5kYXRhKCJsaXN0IiksYz1iLnBhcmFtcy5pZCh4KSxkPWIubGlzdCxlPSthfHxkLmluZGV4T2YoYyk7cmV0dXJuLTE9PWU/bnVsbDooZT1lLmNsYW1wKDAsYi5saXN0Lmxlbmd0aCksZy5jYWNoZVJvdyhlLGIuZGF0YVtlXSxkLGIuY2FjaGUsYi5wYXJhbXMpLGIuY2FjaGUuJG9bY10pfSxkYXRhOmZ1bmN0aW9uKHgsYSl7dmFyIGIsZCxlLGYsaCxpPXRoaXMsaj1pLmRhdGEoImxpc3QiKTtpZighailyZXR1cm4gbnVsbDtpZihqLmxvY2t8fCFjKHgpKXJldHVybiBqLmRhdGE7aWYoIXgubGVuZ3RoKXJldHVybiBpLmh0bWwoIiIpLGoubGlzdD1bXSxqLmRhdGE9W107aWYoZj1qLmxpc3Quc2xpY2UoMCksYj1nLmNhY2hlKHgsai5jYWNoZSxqLnBhcmFtcyksaD1mLmxlbmd0aD09Yi5sZW5ndGgpZm9yKGQ9MDtkPGYubGVuZ3RoJiZoO2QrKyloPWZbZF09PWJbZF07aWYoIWgpe2ZvcihlPWYuc3VidHJhY3QoYi5pbnRlcnNlY3QoZikpLGouY3ljbGU9IiIsZD0wO2Q8ZS5sZW5ndGg7ZCsrKWouY2FjaGUuJG9bZVtkXV0uZGV0YWNoKCk7Zy5yZW5kZXIoaSxqLGIsYSl9cmV0dXJuIGoubGlzdD1iLGouZGF0YT14fSxyZWRyYXc6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhKCJsaXN0IiksYj1hLmNhY2hlLiRvO2lmKGEmJmEubGlzdCl7eC5odG1sKCIiKTtmb3IodmFyIGM9MCxkPWEubGlzdDtjPGQubGVuZ3RoO2MrKyliW2RbY11dLmFwcGVuZFRvKHgpfX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSgibGlzdCIpO2lmKCFhKXJldHVybiBudWxsO3gucmVtb3ZlQ2xhc3MoIm15LWxpc3QiKS5vZmYoIi5saXN0IiksZGVsZXRlIGEuY2FjaGUsYT1udWxsfX07eC5teXx8KHgubXk9e30pLHgubXkubGlzdD17ZjpnfSx4LmZuLmxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGhbYV0/aFthXS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk6Im9iamVjdCIhPXR5cGVvZiBhJiZhPyh4LmVycm9yKCJNZXRob2QgIithKyIgZG9lcyBub3QgZXhpc3Qgb24galF1ZXJ5Lmxpc3QiKSx2b2lkIDApOmguaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShqUXVlcnkpOwoKaWYgKCEoImN3IiBpbiB3aW5kb3cpKSB3aW5kb3cuY3c9e307CndpbmRvdy5jdy5sb2cgPSBmdW5jdGlvbigpe307CgovKmhvdGtleXMtanMgdjMuNy4zIChjKSBrZW5ueSB3b25nLCB3b3dvaG9vQHFxLmNvbSovCiFmdW5jdGlvbih4LGEpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YSgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGEpOih4PXh8fHNlbGYpLmhvdGtleXM9YSgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoYSl7cmV0dXJuKHg9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oeCl7cmV0dXJuIHR5cGVvZiB4fTpmdW5jdGlvbih4KXtyZXR1cm4geCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmeC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmeCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHh9KShhKX12YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKT4wO2Z1bmN0aW9uIGIoeCxhLGIpe3guYWRkRXZlbnRMaXN0ZW5lcj94LmFkZEV2ZW50TGlzdGVuZXIoYSxiLCExKTp4LmF0dGFjaEV2ZW50JiZ4LmF0dGFjaEV2ZW50KCJvbiIuY29uY2F0KGEpLGZ1bmN0aW9uKCl7Yih3aW5kb3cuZXZlbnQpfSl9ZnVuY3Rpb24gYyh4LGEpe2Zvcih2YXIgYj1hLnNsaWNlKDAsYS5sZW5ndGgtMSksYz0wO2M8Yi5sZW5ndGg7YysrKWJbY109eFtiW2NdLnRvTG93ZXJDYXNlKCldO3JldHVybiBifWZ1bmN0aW9uIGQoeCl7InN0cmluZyIhPXR5cGVvZiB4JiYoeD0iIik7Zm9yKHZhciBhPSh4PXgucmVwbGFjZSgvXHMvZywiIikpLnNwbGl0KCIsIiksYj1hLmxhc3RJbmRleE9mKCIiKTtiPj0wOylhW2ItMV0rPSIsIixhLnNwbGljZShiLDEpLGI9YS5sYXN0SW5kZXhPZigiIik7cmV0dXJuIGF9ZnVuY3Rpb24gZSh4LGEpe2Zvcih2YXIgYj14Lmxlbmd0aD49YS5sZW5ndGg/eDphLGM9eC5sZW5ndGg+PWEubGVuZ3RoP2E6eCxkPSEwLGU9MDtlPGIubGVuZ3RoO2UrKyktMT09PWMuaW5kZXhPZihiW2VdKSYmKGQ9ITEpO3JldHVybiBkfWZvcih2YXIgZj17YmFja3NwYWNlOjgsdGFiOjksY2xlYXI6MTIsZW50ZXI6MTMscmV0dXJuOjEzLGVzYzoyNyxlc2NhcGU6Mjcsc3BhY2U6MzIsbGVmdDozNyx1cDozOCxyaWdodDozOSxkb3duOjQwLGRlbDo0NixkZWxldGU6NDYsaW5zOjQ1LGluc2VydDo0NSxob21lOjM2LGVuZDozNSxwYWdldXA6MzMscGFnZWRvd246MzQsY2Fwc2xvY2s6MjAsIuKHqiI6MjAsIiwiOjE4OCwiLiI6MTkwLCIvIjoxOTEsImAiOjE5MiwiLSI6YT8xNzM6MTg5LCI9IjphPzYxOjE4NywiOyI6YT81OToxODYsIiciOjIyMiwiWyI6MjE5LCJdIjoyMjEsIlxcIjoyMjB9LGc9eyLih6ciOjE2LHNoaWZ0OjE2LCLijKUiOjE4LGFsdDoxOCxvcHRpb246MTgsIuKMgyI6MTcsY3RybDoxNyxjb250cm9sOjE3LCLijJgiOjkxLGNtZDo5MSxjb21tYW5kOjkxfSxoPXsxNjoic2hpZnRLZXkiLDE4OiJhbHRLZXkiLDE3OiJjdHJsS2V5Iiw5MToibWV0YUtleSIsc2hpZnRLZXk6MTYsY3RybEtleToxNyxhbHRLZXk6MTgsbWV0YUtleTo5MX0saT17MTY6ITEsMTg6ITEsMTc6ITEsOTE6ITF9LGo9e30saz0xO2s8MjA7aysrKWZbImYiLmNvbmNhdChrKV09MTExK2s7dmFyIGw9W10sbT0iYWxsIixuPVtdLG89ZnVuY3Rpb24oeCl7cmV0dXJuIGZbeC50b0xvd2VyQ2FzZSgpXXx8Z1t4LnRvTG93ZXJDYXNlKCldfHx4LnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKX07ZnVuY3Rpb24gcCh4KXttPXh8fCJhbGwifWZ1bmN0aW9uIHEoKXtyZXR1cm4gbXx8ImFsbCJ9ZnVuY3Rpb24gcigpe3JldHVybiBsLnNsaWNlKDApfWZ1bmN0aW9uIHMoeCl7dmFyIGE9eC50YXJnZXR8fHguc3JjRWxlbWVudCxiPWEudGFnTmFtZSxjPSEwO3JldHVybiFhLmlzQ29udGVudEVkaXRhYmxlJiYoIklOUFVUIiE9PWImJiJURVhUQVJFQSIhPT1ifHxhLnJlYWRPbmx5KXx8KGM9ITEpLGN9ZnVuY3Rpb24gdCh4KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHgmJih4PW8oeCkpLC0xIT09bC5pbmRleE9mKHgpfWZ1bmN0aW9uIHUoeCxhKXt2YXIgYixjO2Zvcih2YXIgZCBpbiB4fHwoeD1xKCkpLGopaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGosZCkpZm9yKGI9altkXSxjPTA7YzxiLmxlbmd0aDspYltjXS5zY29wZT09PXg/Yi5zcGxpY2UoYywxKTpjKys7cSgpPT09eCYmcChhfHwiYWxsIil9ZnVuY3Rpb24gdih4KXt2YXIgYT14LmtleUNvZGV8fHgud2hpY2h8fHguY2hhckNvZGUsYj1sLmluZGV4T2YoYSk7aWYoYj49MCYmbC5zcGxpY2UoYiwxKSx4LmtleSYmIm1ldGEiPT09eC5rZXkudG9Mb3dlckNhc2UoKSYmbC5zcGxpY2UoMCxsLmxlbmd0aCksOTMhPT1hJiYyMjQhPT1hfHwoYT05MSksYSBpbiBpKWZvcih2YXIgYyBpbiBpW2FdPSExLGcpZ1tjXT09PWEmJihDW2NdPSExKX1mdW5jdGlvbiB3KGEpe2lmKGEpe2lmKEFycmF5LmlzQXJyYXkoYSkpYS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3gua2V5JiZ5KHgpfSk7ZWxzZSBpZigib2JqZWN0Ij09PXgoYSkpYS5rZXkmJnkoYSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpe2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3RoLGM9bmV3IEFycmF5KGI+MT9iLTE6MCksZD0xO2Q8YjtkKyspY1tkLTFdPWFyZ3VtZW50c1tkXTt2YXIgZT1jWzBdLGY9Y1sxXTsiZnVuY3Rpb24iPT10eXBlb2YgZSYmKGY9ZSxlPSIiKSx5KHtrZXk6YSxzY29wZTplLG1ldGhvZDpmLHNwbGl0S2V5OiIrIn0pfX1lbHNlIE9iamVjdC5rZXlzKGopLmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIGRlbGV0ZSBqW3hdfSl9dmFyIHk9ZnVuY3Rpb24oeCl7dmFyIGE9eC5rZXksYj14LnNjb3BlLGY9eC5tZXRob2QsaD14LnNwbGl0S2V5LGk9dm9pZCAwPT09aD8iKyI6aDtkKGEpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9eC5zcGxpdChpKSxkPWEubGVuZ3RoLGg9YVtkLTFdLGs9IioiPT09aD8iKiI6byhoKTtpZihqW2tdKXtifHwoYj1xKCkpO3ZhciBsPWQ+MT9jKGcsYSk6W107altrXT1qW2tdLm1hcChmdW5jdGlvbih4KXtyZXR1cm4oIWZ8fHgubWV0aG9kPT09ZikmJnguc2NvcGU9PT1iJiZlKHgubW9kcyxsKT97fTp4fSl9fSl9O2Z1bmN0aW9uIHooeCxhLGIpe3ZhciBjO2lmKGEuc2NvcGU9PT1ifHwiYWxsIj09PWEuc2NvcGUpe2Zvcih2YXIgZCBpbiBjPWEubW9kcy5sZW5ndGg+MCxpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLGQpJiYoIWlbZF0mJmEubW9kcy5pbmRleE9mKCtkKT4tMXx8aVtkXSYmLTE9PT1hLm1vZHMuaW5kZXhPZigrZCkpJiYoYz0hMSk7KDAhPT1hLm1vZHMubGVuZ3RofHxpWzE2XXx8aVsxOF18fGlbMTddfHxpWzkxXSkmJiFjJiYiKiIhPT1hLnNob3J0Y3V0fHwhMT09PWEubWV0aG9kKHgsYSkmJih4LnByZXZlbnREZWZhdWx0P3gucHJldmVudERlZmF1bHQoKTp4LnJldHVyblZhbHVlPSExLHguc3RvcFByb3BhZ2F0aW9uJiZ4LnN0b3BQcm9wYWdhdGlvbigpLHguY2FuY2VsQnViYmxlJiYoeC5jYW5jZWxCdWJibGU9ITApKX19ZnVuY3Rpb24gQSh4KXt2YXIgYT1qWyIqIl0sYj14LmtleUNvZGV8fHgud2hpY2h8fHguY2hhckNvZGU7aWYoQy5maWx0ZXIuY2FsbCh0aGlzLHgpKXtpZig5MyE9PWImJjIyNCE9PWJ8fChiPTkxKSwtMT09PWwuaW5kZXhPZihiKSYmMjI5IT09YiYmbC5wdXNoKGIpLFsiY3RybEtleSIsImFsdEtleSIsInNoaWZ0S2V5IiwibWV0YUtleSJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9aFthXTt4W2FdJiYtMT09PWwuaW5kZXhPZihiKT9sLnB1c2goYik6IXhbYV0mJmwuaW5kZXhPZihiKT4tMSYmbC5zcGxpY2UobC5pbmRleE9mKGIpLDEpfSksYiBpbiBpKXtmb3IodmFyIGMgaW4gaVtiXT0hMCxnKWdbY109PT1iJiYoQ1tjXT0hMCk7aWYoIWEpcmV0dXJufWZvcih2YXIgZCBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLGQpJiYoaVtkXT14W2hbZF1dKTt2YXIgZT1xKCk7aWYoYSlmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKylhW2ZdLnNjb3BlPT09ZSYmKCJrZXlkb3duIj09PXgudHlwZSYmYVtmXS5rZXlkb3dufHwia2V5dXAiPT09eC50eXBlJiZhW2ZdLmtleXVwKSYmeih4LGFbZl0sZSk7aWYoYiBpbiBqKWZvcih2YXIgaz0wO2s8altiXS5sZW5ndGg7aysrKWlmKCgia2V5ZG93biI9PT14LnR5cGUmJmpbYl1ba10ua2V5ZG93bnx8ImtleXVwIj09PXgudHlwZSYmaltiXVtrXS5rZXl1cCkmJmpbYl1ba10ua2V5KXtmb3IodmFyIG09altiXVtrXSxuPW0uc3BsaXRLZXkscD1tLmtleS5zcGxpdChuKSxyPVtdLHM9MDtzPHAubGVuZ3RoO3MrKylyLnB1c2gobyhwW3NdKSk7ci5zb3J0KCkuam9pbigiIik9PT1sLnNvcnQoKS5qb2luKCIiKSYmeih4LG0sZSl9fX1mdW5jdGlvbiBCKHgpe3JldHVybiBuLmluZGV4T2YoeCk+LTF9ZnVuY3Rpb24gQyh4LGEsZSl7bD1bXTt2YXIgZj1kKHgpLGg9W10saT0iYWxsIixrPWRvY3VtZW50LG09MCxwPSExLHE9ITAscj0iKyI7Zm9yKHZvaWQgMD09PWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYoZT1hKSwiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSYmKGEuc2NvcGUmJihpPWEuc2NvcGUpLGEuZWxlbWVudCYmKGs9YS5lbGVtZW50KSxhLmtleXVwJiYocD1hLmtleXVwKSx2b2lkIDAhPT1hLmtleWRvd24mJihxPWEua2V5ZG93biksInN0cmluZyI9PXR5cGVvZiBhLnNwbGl0S2V5JiYocj1hLnNwbGl0S2V5KSksInN0cmluZyI9PXR5cGVvZiBhJiYoaT1hKTttPGYubGVuZ3RoO20rKyloPVtdLCh4PWZbbV0uc3BsaXQocikpLmxlbmd0aD4xJiYoaD1jKGcseCkpLCh4PSIqIj09PSh4PXhbeC5sZW5ndGgtMV0pPyIqIjpvKHgpKWluIGp8fChqW3hdPVtdKSxqW3hdLnB1c2goe2tleXVwOnAsa2V5ZG93bjpxLHNjb3BlOmksbW9kczpoLHNob3J0Y3V0OmZbbV0sbWV0aG9kOmUsa2V5OmZbbV0sc3BsaXRLZXk6cn0pO3ZvaWQgMCE9PWsmJiFCKGspJiZ3aW5kb3cmJihuLnB1c2goayksYihrLCJrZXlkb3duIixmdW5jdGlvbih4KXtBKHgpfSksYih3aW5kb3csImZvY3VzIixmdW5jdGlvbigpe2w9W119KSxiKGssImtleXVwIixmdW5jdGlvbih4KXtBKHgpLHYoeCl9KSl9dmFyIEQ9e3NldFNjb3BlOnAsZ2V0U2NvcGU6cSxkZWxldGVTY29wZTp1LGdldFByZXNzZWRLZXlDb2RlczpyLGlzUHJlc3NlZDp0LGZpbHRlcjpzLHVuYmluZDp3fTtmb3IodmFyIEUgaW4gRClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRCxFKSYmKENbRV09RFtFXSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpe3ZhciBGPXdpbmRvdy5ob3RrZXlzO0Mubm9Db25mbGljdD1mdW5jdGlvbih4KXtyZXR1cm4geCYmd2luZG93LmhvdGtleXM9PT1DJiYod2luZG93LmhvdGtleXM9RiksQ30sd2luZG93LmhvdGtleXM9Q31yZXR1cm4gQ30pOw==" }, "lib/sql2photon.js": { "content_type": "text/javascript", "data": "LyogCiogUGhvdG9uIDEuMjYgU1FMIHF1ZXJ5IG1vZGUgcmVsYXRlZCBsaWJzCiogIOKAlCBzcWx0b21hbmdvLCAoYykgR2x5bm4gQmlyZAoqICDigJQgQ29kZU1pcnJvciBTUUwgc3ludGF4LCAoYykgTWFyaWpuIEhhdmVyYmVrZQoqLwoKLypzcWx0b21hbmdvLCAoYykgZ2x5bm5iaXJkIC8gK3JsaWtlLGJldHdlZW4gbW9kIGVybW91dGgqLwohZnVuY3Rpb24oeCl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz14KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx4KTtlbHNleygidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpLnNxbDJtYW5nbz14KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB4KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7aWYoIWJbZl0pe2lmKCFhW2ZdKXt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZyYmaClyZXR1cm4gaChmLCEwKTtpZihlKXJldHVybiBlKGYsITApO3ZhciBpPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2YrIiciKTt0aHJvdyBpLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGl9dmFyIGo9YltmXT17ZXhwb3J0czp7fX07YVtmXVswXS5jYWxsKGouZXhwb3J0cyxmdW5jdGlvbih4KXt2YXIgYj1hW2ZdWzFdW3hdO3JldHVybiBkKGJ8fHgpfSxqLGouZXhwb3J0cyx4LGEsYixjKX1yZXR1cm4gYltmXS5leHBvcnRzfWZvcih2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxjLmxlbmd0aDtmKyspZChjW2ZdKTtyZXR1cm4gZH0oezE6W2Z1bmN0aW9uKHgsYSxiKXtjb25zdCBjPXgoIi4vc3FscGFyc2VyL2luZGV4LmpzIiksZD1mdW5jdGlvbih4KXtjb25zdCBhPXgudG9TdHJpbmcoKS5yZXBsYWNlKC9eW2AnXS8sIiIpLnJlcGxhY2UoL1tgJ10kLywiIik7aWYoYS5tYXRjaCgvYC8pKXRocm93IG5ldyBFcnJvcihhKyIgbm90IHN1cHBvcnRlZCIpO3JldHVybiBhfSxlPWZ1bmN0aW9uKHgpe2NvbnN0IGE9ZCh4KSxiPWEudG9VcHBlckNhc2UoKTtyZXR1cm4geC5xdW90ZVR5cGUmJlsiJyIsJyInXS5pbmNsdWRlcyh4LnF1b3RlVHlwZSk/YTphLm1hdGNoKC9eLT9bMC05Ll0rJC8pP2EubWF0Y2goL1wuLyk/cGFyc2VGbG9hdChhKTpwYXJzZUludChhKToiVFJVRSI9PT1ifHwiRkFMU0UiIT09YiYmYX0sZj1mdW5jdGlvbih4LGEpe2xldCBiPW51bGw7c3dpdGNoKGEub3BlcmF0aW9uLnRvVXBwZXJDYXNlKCkpe2Nhc2UiPSI6eFtkKGEubGVmdCldPXskZXE6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSIhPSI6eFtkKGEubGVmdCldPXskbmU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSI8Ijp4W2QoYS5sZWZ0KV09eyRsdDplKGEucmlnaHQpfTticmVhaztjYXNlIjw9Ijp4W2QoYS5sZWZ0KV09eyRsdGU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSI+Ijp4W2QoYS5sZWZ0KV09eyRndDplKGEucmlnaHQpfTticmVhaztjYXNlIj49Ijp4W2QoYS5sZWZ0KV09eyRndGU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSJSTElLRSI6Y2FzZSJSRUdFWFAiOnhbZChhLmxlZnQpXT17JHJlZ2V4OiIoKlVURjgpIitlKGEucmlnaHQpfTticmVhaztjYXNlIkxJS0UiOnhbZChhLmxlZnQpXT17JHJlZ2V4OiIoKlVURjgpXiIrKGUoYS5yaWdodCkrIiIpLnJlcGxhY2UoL18vZywiLiIpLnJlcGxhY2UoLyUrL2csIi4qIikrIiQifTticmVhaztjYXNlIklMSUtFIjp4W2QoYS5sZWZ0KV09eyRyZWdleDoiKCpVVEY4KSg/aSleIisoZShhLnJpZ2h0KSsiIikucmVwbGFjZSgvXy9nLCIuIikucmVwbGFjZSgvJSsvZywiLioiKSsiJCJ9O2JyZWFrO2Nhc2UiSU4iOnhbZChhLmxlZnQpXT17JGluOmEucmlnaHQudmFsdWUubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnZhbHVlfSl9O2JyZWFrO2Nhc2UiTk9UIElOIjp4W2QoYS5sZWZ0KV09eyRuaW46YS5yaWdodC52YWx1ZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgudmFsdWV9KX07YnJlYWs7Y2FzZSJCRVRXRUVOIjp4W2QoYS5sZWZ0KV09eyRndGU6YS5yaWdodC52YWx1ZVswXS52YWx1ZSwkbHRlOmEucmlnaHQudmFsdWVbMV0udmFsdWV9O2JyZWFrO2Nhc2UiTk9UIEJFVFdFRU4iOmI9ZChhLmxlZnQpLHguJG9yPVt7fSx7fV0seC4kb3JbMF1bYl09eyRsdDphLnJpZ2h0LnZhbHVlWzBdLnZhbHVlfSx4LiRvclsxXVtiXT17JGd0OmEucmlnaHQudmFsdWVbMV0udmFsdWV9O2JyZWFrO2Nhc2UiQU5EIjp4W2I9IiRhbmQiXT1bXSx4W2JdLnB1c2goZih7fSxhLmxlZnQpKSx4W2JdLnB1c2goZih7fSxhLnJpZ2h0KSk7YnJlYWs7Y2FzZSJPUiI6eFtiPSIkb3IiXT1bXSx4W2JdLnB1c2goZih7fSxhLmxlZnQpKSx4W2JdLnB1c2goZih7fSxhLnJpZ2h0KSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIFNRTCBvcGVyYXRpb24gIithLm9wZXJhdGlvbil9cmV0dXJuIHh9LGc9ZnVuY3Rpb24oeCl7aWYoInN0cmluZyIhPXR5cGVvZiB4KXRocm93IG5ldyBFcnJvcigicXVlcnkgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IGE9e30sYj1jLnBhcnNlKHgpO2lmKGEudGFibGU9Yi5zb3VyY2UubmFtZS52YWx1ZSxiLmRpc3RpbmN0KXRocm93IG5ldyBFcnJvcigiRElTVElOQ1Qgbm90IHN1cHBvcnRlZCIpO2lmKGIuam9pbnMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCJqb2lucyBub3Qgc3VwcG9ydGVkIik7aWYoYi51bmlvbnMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCJ1bmlvbnMgbm90IHN1cHBvcnRlZCIpO2lmKGIuZ3JvdXApdGhyb3cgbmV3IEVycm9yKCJHUk9VUCBub3Qgc3VwcG9ydGVkIik7aWYoYi5maWVsZHMmJiIqIiE9PWIuZmllbGRzLnRvU3RyaW5nKCkpe2EuZmllbGRzPVtdO2Zvcihjb25zdCB4IGluIGIuZmllbGRzKXtjb25zdCBjPWIuZmllbGRzW3hdO2lmKG51bGwhPT1jLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJhbGlhcyAiK2MudG9TdHJpbmcoKSsiIG5vdCBzdXBwb3J0ZWQiKTtpZighYy5maWVsZC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoYy50b1N0cmluZygpKyIgbm90IHN1cHBvcnRlZCIpO2EuZmllbGRzLnB1c2goZChjLmZpZWxkKSl9fWlmKGIud2hlcmUmJihhLnNlbGVjdG9yPWYoe30sYi53aGVyZS5jb25kaXRpb25zKSksYi5vcmRlciYmYi5vcmRlci5vcmRlcmluZ3Mpe2Euc29ydD1bXTtsZXQgeD1udWxsO2Zvcihjb25zdCBjIGluIGIub3JkZXIub3JkZXJpbmdzKXtjb25zdCBkPWIub3JkZXIub3JkZXJpbmdzW2NdLGU9e307aWYoZVtkLnZhbHVlLnZhbHVlXT0iREVTQyI9PT1kLmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpPyJkZXNjIjoiYXNjIixudWxsIT14JiZlW2QudmFsdWUudmFsdWVdIT09eCl0aHJvdyBuZXcgRXJyb3IoIk9SREVSIEJZIG11c3QgYmUgZWl0aGVyIGFsbCBBU0Mgb3IgYWxsIERFU0MsIG5vdCBtaXhlZCIpO3g9ZVtkLnZhbHVlLnZhbHVlXSxhLnNvcnQucHVzaChlKX19cmV0dXJuIGIubGltaXQmJihhLmxpbWl0PWIubGltaXQudmFsdWUudmFsdWUsYi5saW1pdC5vZmZzZXQmJihhLnNraXA9Yi5saW1pdC5vZmZzZXQudmFsdWUpKSxhfTthLmV4cG9ydHM9e3BhcnNlOmd9fSx7Ii4vc3FscGFyc2VyL2luZGV4LmpzIjoyfV0sMjpbZnVuY3Rpb24oeCxhLGIpe3NxbD14KCIuL2xpYi9zcWxfcGFyc2VyIik7Zm9yKGNvbnN0IHggaW4gc3FsKWJbeF09c3FsW3hdfSx7Ii4vbGliL3NxbF9wYXJzZXIiOjd9XSwzOltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKGMpeyhmdW5jdGlvbigpe3ZhciBkPWZ1bmN0aW9uKCl7dmFyIHg9ZnVuY3Rpb24oeCxhLGIsYyl7Zm9yKGI9Ynx8e30sYz14Lmxlbmd0aDtjLS07Ylt4W2NdXT1hKTtyZXR1cm4gYn0sYT1bMSw4XSxiPVs1LDI2XSxjPVsxLDE0XSxkPVsxLDEzXSxlPVs1LDI2LDMxLDQyXSxmPVsxLDE3XSxnPVs1LDI2LDMxLDQyLDQ1LDYyXSxoPVsxLDI3XSxpPVsxLDI5XSxqPVsxLDM5XSxrPVsxLDQzXSxsPVsxLDQ0XSxtPVsxLDQwXSxuPVsxLDQxXSxvPVsxLDM4XSxwPVsxLDQyXSxxPVsxLDI1XSxyPVs1LDI2LDMxXSxzPVs1LDI2LDMxLDQyLDQ1XSx0PVsxLDU2XSx1PVsxOCw0M10sdj1bMSw1OV0sdz1bMSw2MF0seT1bMSw2MV0sej1bMSw2Ml0sQT1bMSw2M10sQj1bNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NSw2Miw2NCw2NSw2Niw2Nyw2OCw3MF0sQz1bNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MV0sRD1bMSw2OV0sRT1bMiw4M10sRj1bMSw4M10sRz1bMSw4NF0sSD1bMSwxMDJdLEk9WzUsMjYsMzEsNDIsNDMsNDRdLEo9WzEsMTEwXSxLPVs1LDI2LDMxLDQyLDQzLDQ1LDY0XSxMPVs1LDI2LDMxLDQxLDQyLDQ1LDYyXSxNPVsxLDExM10sTj1bMSwxMTRdLE89WzEsMTE1XSxQPVs1LDI2LDMxLDM0LDM1LDM3LDM4LDQxLDQyLDQ1LDYyXSxRPVs1LDE4LDIzLDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQzLDQ1LDYyLDY0LDcwXSxSPVs1LDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQ1LDYyXSxTPVs1LDI2LDMxLDQyLDU2LDU4XSxUPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsUm9vdDozLFF1ZXJ5OjQsRU9GOjUsU2VsZWN0UXVlcnk6NixVbmlvbnM6NyxTZWxlY3RXaXRoTGltaXRRdWVyeTo4LEJhc2ljU2VsZWN0UXVlcnk6OSxTZWxlY3Q6MTAsT3JkZXJDbGF1c2U6MTEsR3JvdXBDbGF1c2U6MTIsTGltaXRDbGF1c2U6MTMsU2VsZWN0Q2xhdXNlOjE0LFdoZXJlQ2xhdXNlOjE1LFNFTEVDVDoxNixGaWVsZHM6MTcsRlJPTToxOCxUYWJsZToxOSxESVNUSU5DVDoyMCxKb2luczoyMSxMaXRlcmFsOjIyLEFTOjIzLExFRlRfUEFSRU46MjQsTGlzdDoyNSxSSUdIVF9QQVJFTjoyNixXSU5ET1c6MjcsV0lORE9XX0ZVTkNUSU9OOjI4LE51bWJlcjoyOSxVbmlvbjozMCxVTklPTjozMSxBTEw6MzIsSm9pbjozMyxKT0lOOjM0LE9OOjM1LEV4cHJlc3Npb246MzYsTEVGVDozNyxSSUdIVDozOCxJTk5FUjozOSxPVVRFUjo0MCxXSEVSRTo0MSxMSU1JVDo0MixTRVBBUkFUT1I6NDMsT0ZGU0VUOjQ0LE9SREVSOjQ1LEJZOjQ2LE9yZGVyQXJnczo0NyxPZmZzZXRDbGF1c2U6NDgsT3JkZXJBcmc6NDksVmFsdWU6NTAsRElSRUNUSU9OOjUxLE9mZnNldFJvd3M6NTIsRmV0Y2hDbGF1c2U6NTMsUk9XOjU0LFJPV1M6NTUsRkVUQ0g6NTYsRklSU1Q6NTcsT05MWTo1OCxORVhUOjU5LEdyb3VwQmFzaWNDbGF1c2U6NjAsSGF2aW5nQ2xhdXNlOjYxLEdST1VQOjYyLEFyZ3VtZW50TGlzdDo2MyxIQVZJTkc6NjQsTUFUSDo2NSxNQVRIX01VTFRJOjY2LE9QRVJBVE9SOjY3LEJFVFdFRU46NjgsQmV0d2VlbkV4cHJlc3Npb246NjksQ09ORElUSU9OQUw6NzAsU1VCX1NFTEVDVF9PUDo3MSxTdWJTZWxlY3RFeHByZXNzaW9uOjcyLFNVQl9TRUxFQ1RfVU5BUllfT1A6NzMsU3RyaW5nOjc0LEZ1bmN0aW9uOjc1LFVzZXJGdW5jdGlvbjo3NixCb29sZWFuOjc3LFBhcmFtZXRlcjo3OCxOVU1CRVI6NzksQk9PTEVBTjo4MCxQQVJBTUVURVI6ODEsU1RSSU5HOjgyLERCTFNUUklORzo4MyxMSVRFUkFMOjg0LERPVDo4NSxGVU5DVElPTjo4NixBZ2dyZWdhdGVBcmd1bWVudExpc3Q6ODcsRmllbGQ6ODgsU1RBUjo4OSwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiRU9GIiwxNjoiU0VMRUNUIiwxODoiRlJPTSIsMjA6IkRJU1RJTkNUIiwyMzoiQVMiLDI0OiJMRUZUX1BBUkVOIiwyNjoiUklHSFRfUEFSRU4iLDI3OiJXSU5ET1ciLDI4OiJXSU5ET1dfRlVOQ1RJT04iLDMxOiJVTklPTiIsMzI6IkFMTCIsMzQ6IkpPSU4iLDM1OiJPTiIsMzc6IkxFRlQiLDM4OiJSSUdIVCIsMzk6IklOTkVSIiw0MDoiT1VURVIiLDQxOiJXSEVSRSIsNDI6IkxJTUlUIiw0MzoiU0VQQVJBVE9SIiw0NDoiT0ZGU0VUIiw0NToiT1JERVIiLDQ2OiJCWSIsNTE6IkRJUkVDVElPTiIsNTQ6IlJPVyIsNTU6IlJPV1MiLDU2OiJGRVRDSCIsNTc6IkZJUlNUIiw1ODoiT05MWSIsNTk6Ik5FWFQiLDYyOiJHUk9VUCIsNjQ6IkhBVklORyIsNjU6Ik1BVEgiLDY2OiJNQVRIX01VTFRJIiw2NzoiT1BFUkFUT1IiLDY4OiJCRVRXRUVOIiw3MDoiQ09ORElUSU9OQUwiLDcxOiJTVUJfU0VMRUNUX09QIiw3MzoiU1VCX1NFTEVDVF9VTkFSWV9PUCIsNzk6Ik5VTUJFUiIsODA6IkJPT0xFQU4iLDgxOiJQQVJBTUVURVIiLDgyOiJTVFJJTkciLDgzOiJEQkxTVFJJTkciLDg0OiJMSVRFUkFMIiw4NToiRE9UIiw4NjoiRlVOQ1RJT04iLDg5OiJTVEFSIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFs0LDFdLFs0LDJdLFs2LDFdLFs2LDFdLFs5LDFdLFs5LDJdLFs5LDJdLFs5LDNdLFs4LDJdLFsxMCwxXSxbMTAsMl0sWzE0LDRdLFsxNCw1XSxbMTQsNV0sWzE0LDZdLFsxOSwxXSxbMTksMl0sWzE5LDNdLFsxOSwzXSxbMTksM10sWzE5LDRdLFsxOSw2XSxbNywxXSxbNywyXSxbMzAsMl0sWzMwLDNdLFsyMSwxXSxbMjEsMl0sWzMzLDRdLFszMyw1XSxbMzMsNV0sWzMzLDZdLFszMyw2XSxbMzMsNl0sWzMzLDZdLFsxNSwyXSxbMTMsMl0sWzEzLDRdLFsxMyw0XSxbMTEsM10sWzExLDRdLFs0NywxXSxbNDcsM10sWzQ5LDFdLFs0OSwyXSxbNDgsMl0sWzQ4LDNdLFs1MiwyXSxbNTIsMl0sWzUzLDRdLFs1Myw0XSxbMTIsMV0sWzEyLDJdLFs2MCwzXSxbNjEsMl0sWzM2LDNdLFszNiwzXSxbMzYsM10sWzM2LDNdLFszNiwzXSxbMzYsM10sWzM2LDVdLFszNiwzXSxbMzYsMl0sWzM2LDFdLFszNiwxXSxbNjksM10sWzcyLDNdLFs1MCwxXSxbNTAsMV0sWzUwLDFdLFs1MCwxXSxbNTAsMV0sWzUwLDFdLFs1MCwxXSxbMjUsMV0sWzI5LDFdLFs3NywxXSxbNzgsMV0sWzc0LDFdLFs3NCwxXSxbMjIsMV0sWzIyLDNdLFs3NSw0XSxbNzYsM10sWzc2LDRdLFs4NywxXSxbODcsMl0sWzYzLDFdLFs2MywzXSxbMTcsMV0sWzE3LDNdLFs4OCwxXSxbODgsMV0sWzg4LDNdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHgsYSxiLGMsZCxlLGYpe3ZhciBnPWUubGVuZ3RoLTE7c3dpdGNoKGQpe2Nhc2UgMTpyZXR1cm4gdGhpcy4kPWVbZy0xXTtjYXNlIDI6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSAxMTpjYXNlIDUzOmNhc2UgNjY6Y2FzZSA2NzpjYXNlIDcwOmNhc2UgNzE6Y2FzZSA3MjpjYXNlIDczOmNhc2UgNzQ6Y2FzZSA3NTpjYXNlIDc2OnRoaXMuJD1lW2ddO2JyZWFrO2Nhc2UgMzp0aGlzLiQ9KGVbZy0xXS51bmlvbnM9ZVtnXSxlW2ctMV0pO2JyZWFrO2Nhc2UgNzp0aGlzLiQ9KGVbZy0xXS5vcmRlcj1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSA4OnRoaXMuJD0oZVtnLTFdLmdyb3VwPWVbZ10sZVtnLTFdKTticmVhaztjYXNlIDk6dGhpcy4kPShlW2ctMl0uZ3JvdXA9ZVtnLTFdLGVbZy0yXS5vcmRlcj1lW2ddLGVbZy0yXSk7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9KGVbZy0xXS5saW1pdD1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9KGVbZy0xXS53aGVyZT1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9bmV3IGMuU2VsZWN0KGVbZy0yXSxlW2ddLCExKTticmVhaztjYXNlIDE0OnRoaXMuJD1uZXcgYy5TZWxlY3QoZVtnLTJdLGVbZ10sITApO2JyZWFrO2Nhc2UgMTU6dGhpcy4kPW5ldyBjLlNlbGVjdChlW2ctM10sZVtnLTFdLCExLGVbZ10pO2JyZWFrO2Nhc2UgMTY6dGhpcy4kPW5ldyBjLlNlbGVjdChlW2ctM10sZVtnLTFdLCEwLGVbZ10pO2JyZWFrO2Nhc2UgMTc6dGhpcy4kPW5ldyBjLlRhYmxlKGVbZ10pO2JyZWFrO2Nhc2UgMTg6dGhpcy4kPW5ldyBjLlRhYmxlKGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDE5OnRoaXMuJD1uZXcgYy5UYWJsZShlW2ctMl0sZVtnXSk7YnJlYWs7Y2FzZSAyMDpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTc6dGhpcy4kPWVbZy0xXTticmVhaztjYXNlIDIxOmNhc2UgNjk6dGhpcy4kPW5ldyBjLlN1YlNlbGVjdChlW2ctMV0pO2JyZWFrO2Nhc2UgMjI6dGhpcy4kPW5ldyBjLlN1YlNlbGVjdChlW2ctMl0sZVtnXSk7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9bmV3IGMuVGFibGUoZVtnLTVdLG51bGwsZVtnLTRdLGVbZy0zXSxlW2ctMV0pO2JyZWFrO2Nhc2UgMjQ6Y2FzZSAyODpjYXNlIDQzOmNhc2UgOTA6Y2FzZSA5Mjp0aGlzLiQ9W2VbZ11dO2JyZWFrO2Nhc2UgMjU6dGhpcy4kPWVbZy0xXS5jb25jYXQoZVskMDFdKTticmVhaztjYXNlIDI2OnRoaXMuJD1uZXcgYy5VbmlvbihlW2ddKTticmVhaztjYXNlIDI3OnRoaXMuJD1uZXcgYy5VbmlvbihlW2ddLCEwKTticmVhaztjYXNlIDI5OnRoaXMuJD1lW2ctMV0uY29uY2F0KGVbZ10pO2JyZWFrO2Nhc2UgMzA6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgMzE6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIkxFRlQiKTticmVhaztjYXNlIDMyOnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJSSUdIVCIpO2JyZWFrO2Nhc2UgMzM6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIkxFRlQiLCJJTk5FUiIpO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIlJJR0hUIiwiSU5ORVIiKTticmVhaztjYXNlIDM1OnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJMRUZUIiwiT1VURVIiKTticmVhaztjYXNlIDM2OnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJSSUdIVCIsIk9VVEVSIik7YnJlYWs7Y2FzZSAzNzp0aGlzLiQ9bmV3IGMuV2hlcmUoZVtnXSk7YnJlYWs7Y2FzZSAzODp0aGlzLiQ9bmV3IGMuTGltaXQoZVtnXSk7YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9bmV3IGMuTGltaXQoZVtnXSxlW2ctMl0pO2JyZWFrO2Nhc2UgNDA6dGhpcy4kPW5ldyBjLkxpbWl0KGVbZy0yXSxlW2ddKTticmVhaztjYXNlIDQxOnRoaXMuJD1uZXcgYy5PcmRlcihlW2ddKTticmVhaztjYXNlIDQyOnRoaXMuJD1uZXcgYy5PcmRlcihlW2ctMV0sZVtnXSk7YnJlYWs7Y2FzZSA0NDpjYXNlIDkxOmNhc2UgOTM6dGhpcy4kPWVbZy0yXS5jb25jYXQoZVtnXSk7YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9bmV3IGMuT3JkZXJBcmd1bWVudChlW2ddLCJBU0MiKTticmVhaztjYXNlIDQ2OnRoaXMuJD1uZXcgYy5PcmRlckFyZ3VtZW50KGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDQ3OnRoaXMuJD1uZXcgYy5PZmZzZXQoZVtnXSk7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9bmV3IGMuT2Zmc2V0KGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDU0OnRoaXMuJD0oZVtnLTFdLmhhdmluZz1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9bmV3IGMuR3JvdXAoZVtnXSk7YnJlYWs7Y2FzZSA1Njp0aGlzLiQ9bmV3IGMuSGF2aW5nKGVbZ10pO2JyZWFrO2Nhc2UgNTg6Y2FzZSA1OTpjYXNlIDYwOmNhc2UgNjE6Y2FzZSA2MjpjYXNlIDY0OnRoaXMuJD1uZXcgYy5PcChlW2ctMV0sZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgNjM6dGhpcy4kPW5ldyBjLk9wKGVbZy0zXSxlW2ctNF0sZVtnLTFdKTticmVhaztjYXNlIDY1OnRoaXMuJD1uZXcgYy5VbmFyeU9wKGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDY4OnRoaXMuJD1uZXcgYy5CZXR3ZWVuT3AoW2VbZy0yXSxlW2ddXSk7YnJlYWs7Y2FzZSA3Nzp0aGlzLiQ9bmV3IGMuTGlzdFZhbHVlKGVbZ10pO2JyZWFrO2Nhc2UgNzg6dGhpcy4kPW5ldyBjLk51bWJlclZhbHVlKGVbZ10pO2JyZWFrO2Nhc2UgNzk6dGhpcy4kPW5ldyBjLkJvb2xlYW5WYWx1ZShlW2ddKTticmVhaztjYXNlIDgwOnRoaXMuJD1uZXcgYy5QYXJhbWV0ZXJWYWx1ZShlW2ddKTticmVhaztjYXNlIDgxOnRoaXMuJD1uZXcgYy5TdHJpbmdWYWx1ZShlW2ddLCInIik7YnJlYWs7Y2FzZSA4Mjp0aGlzLiQ9bmV3IGMuU3RyaW5nVmFsdWUoZVtnXSwnIicpO2JyZWFrO2Nhc2UgODM6dGhpcy4kPW5ldyBjLkxpdGVyYWxWYWx1ZShlW2ddKTticmVhaztjYXNlIDg0OnRoaXMuJD1uZXcgYy5MaXRlcmFsVmFsdWUoZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgODU6dGhpcy4kPW5ldyBjLkZ1bmN0aW9uVmFsdWUoZVtnLTNdLGVbZy0xXSk7YnJlYWs7Y2FzZSA4Njp0aGlzLiQ9bmV3IGMuRnVuY3Rpb25WYWx1ZShlW2ctMl0sbnVsbCwhMCk7YnJlYWs7Y2FzZSA4Nzp0aGlzLiQ9bmV3IGMuRnVuY3Rpb25WYWx1ZShlW2ctM10sZVtnLTFdLCEwKTticmVhaztjYXNlIDg4OnRoaXMuJD1uZXcgYy5Bcmd1bWVudExpc3RWYWx1ZShlW2ddKTticmVhaztjYXNlIDg5OnRoaXMuJD1uZXcgYy5Bcmd1bWVudExpc3RWYWx1ZShlW2ddLCEwKTticmVhaztjYXNlIDk0OnRoaXMuJD1uZXcgYy5TdGFyO2JyZWFrO2Nhc2UgOTU6dGhpcy4kPW5ldyBjLkZpZWxkKGVbZ10pO2JyZWFrO2Nhc2UgOTY6dGhpcy4kPW5ldyBjLkZpZWxkKGVbZy0yXSxlW2ddKX19LHRhYmxlOlt7MzoxLDQ6Miw2OjMsODo0LDk6NSwxMDo2LDE0OjcsMTY6YX0sezE6WzNdfSx7NTpbMSw5XX0seChiLFsyLDJdLHs3OjEwLDEzOjExLDMwOjEyLDMxOmMsNDI6ZH0pLHgoZSxbMiw0XSkseChlLFsyLDVdKSx4KGUsWzIsNl0sezExOjE1LDEyOjE2LDYwOjE4LDQ1OmYsNjI6WzEsMTldfSkseChnLFsyLDExXSx7MTU6MjAsNDE6WzEsMjFdfSksezE3OjIyLDIwOlsxLDIzXSwyMjozMSwyNDpoLDI5OjMyLDM2OjI2LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4ODoyNCw4OTpxfSx7MTpbMiwxXX0seChiLFsyLDNdLHszMDo0NSwzMTpjfSkseChlLFsyLDEwXSkseChyLFsyLDI0XSksezI5OjQ2LDc5Omp9LHs2OjQ3LDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMzI6WzEsNDhdfSx4KGUsWzIsN10pLHgoZSxbMiw4XSx7MTE6NDksNDU6Zn0pLHs0NjpbMSw1MF19LHgocyxbMiw1M10sezYxOjUxLDY0OlsxLDUyXX0pLHs0NjpbMSw1M119LHgoZyxbMiwxMl0pLHsyMjozMSwyNDpoLDI5OjMyLDM2OjU0LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezE4OlsxLDU1XSw0Mzp0fSx7MTc6NTcsMjI6MzEsMjQ6aCwyOTozMiwzNjoyNiw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnAsODg6MjQsODk6cX0seCh1LFsyLDkyXSkseCh1LFsyLDk0XSkseCh1LFsyLDk1XSx7MjM6WzEsNThdLDY1OnYsNjY6dyw2Nzp5LDY4OnosNzA6QX0pLHs0OjY1LDY6Myw4OjQsOTo1LDEwOjYsMTQ6NywxNjphLDIyOjMxLDI0OmgsMjk6MzIsMzY6NjQsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx4KEIsWzIsNjddLHs3MTpbMSw2Nl19KSx7MjQ6WzEsNjhdLDcyOjY3fSx4KEIsWzIsNjZdKSx4KEMsWzIsNzBdLHs4NTpEfSkseChDLFsyLDcxXSkseChDLFsyLDcyXSkseChDLFsyLDczXSkseChDLFsyLDc0XSkseChDLFsyLDc1XSkseChDLFsyLDc2XSkseChbNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MSw4NV0sRSx7MjQ6WzEsNzBdfSkseChbNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw1NCw1NSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MV0sWzIsNzhdKSx4KEMsWzIsODFdKSx4KEMsWzIsODJdKSx7MjQ6WzEsNzFdfSx4KEMsWzIsNzldKSx4KEMsWzIsODBdKSx4KHIsWzIsMjVdKSx4KGUsWzIsMzhdLHs0MzpbMSw3Ml0sNDQ6WzEsNzNdfSkseChyLFsyLDI2XSx7MTM6MTEsNDI6ZH0pLHs2Ojc0LDg6NCw5OjUsMTA6NiwxNDo3LDE2OmF9LHgoZSxbMiw5XSksezIyOjMxLDI5OjMyLDQ3Ojc1LDQ5Ojc2LDUwOjc3LDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHgocyxbMiw1NF0pLHsyMjozMSwyNDpoLDI5OjMyLDM2Ojc4LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6ODAsNTA6MjgsNjM6NzksNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx4KGcsWzIsMzddLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx7MTk6ODEsMjI6ODIsMjQ6Riw4NDpHfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoyNiw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnAsODg6ODUsODk6cX0sezE4OlsxLDg2XSw0Mzp0fSx7MjI6ODcsODQ6R30sezIyOjMxLDI0OmgsMjk6MzIsMzY6ODgsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo4OSw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHsyMjozMSwyNDpoLDI5OjMyLDM2OjkwLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6OTIsNTA6MjgsNjk6OTEsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo5Myw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHsyNjpbMSw5NF0sNjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSx7MjY6WzEsOTVdfSx7MjQ6WzEsOTZdLDcyOjk3fSx4KEIsWzIsNjVdKSx7NDo2NSw2OjMsODo0LDk6NSwxMDo2LDE0OjcsMTY6YX0sezg0OlsxLDk4XX0sezIwOkgsMjI6MzEsMjQ6aCwyNjpbMSw5OV0sMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTAxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4NzoxMDB9LHsyMDpILDIyOjMxLDI0OmgsMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTAxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4NzoxMDN9LHsyOToxMDQsNzk6an0sezI5OjEwNSw3OTpqfSx4KHIsWzIsMjddLHsxMzoxMSw0MjpkfSkseChlLFsyLDQxXSx7NDg6MTA2LDQzOlsxLDEwN10sNDQ6WzEsMTA4XX0pLHgoSSxbMiw0M10pLHgoSSxbMiw0NV0sezUxOlsxLDEwOV19KSx4KHMsWzIsNTZdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx4KFs1LDI2LDMxLDQyLDQ1LDY0XSxbMiw1NV0sezQzOkp9KSx4KEssWzIsOTBdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx4KEwsWzIsMTNdLHsyMToxMTEsMzM6MTEyLDM0Ok0sMzc6TiwzODpPfSkseChQLFsyLDE3XSx7MjI6MTE2LDIzOlsxLDExN10sMjc6WzEsMTE4XSw4NDpHLDg1OkR9KSx7NDoxMjAsNjozLDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMjI6MzEsMjQ6aCwyNToxMTksMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTIxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChbNSwxOCwyMywyNiwyNywzMSwzNCwzNSwzNywzOCw0MSw0Miw0Myw0NSw2Miw4NCw4NV0sRSkseCh1LFsyLDkzXSksezE5OjEyMiwyMjo4MiwyNDpGLDg0Okd9LHgodSxbMiw5Nl0sezg1OkR9KSx4KFs1LDE4LDIzLDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQzLDQ1LDYyLDY0LDY1LDY3LDcwXSxbMiw1OF0sezY2OncsNjg6en0pLHgoWzUsMTgsMjMsMjYsMzEsMzQsMzcsMzgsNDEsNDIsNDMsNDUsNjIsNjQsNjUsNjYsNjcsNzBdLFsyLDU5XSx7Njg6en0pLHgoWzUsMTgsMjMsMjYsMzEsMzQsMzcsMzgsNDEsNDIsNDMsNDUsNjIsNjQsNjcsNzBdLFsyLDYwXSx7NjU6diw2Njp3LDY4Onp9KSx4KEIsWzIsNjFdKSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpbMSwxMjNdfSx4KFEsWzIsNjJdLHs2NTp2LDY2OncsNjc6eSw2ODp6fSkseChCLFsyLDU3XSkseChCLFsyLDY5XSksezQ6NjUsNjozLDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMjI6MzEsMjQ6aCwyNToxMjQsMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTIxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChCLFsyLDY0XSkseChbNSwxOCwyMywyNiwyNywzMSwzNCwzNSwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MSw4NCw4NV0sWzIsODRdKSx4KEMsWzIsODZdKSx7MjY6WzEsMTI1XX0sezI2OlsyLDg4XSw0MzpKfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo4MCw1MDoyOCw2MzoxMjYsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjY6WzEsMTI3XX0seChlLFsyLDM5XSkseChlLFsyLDQwXSkseChlLFsyLDQyXSksezIyOjMxLDI5OjMyLDQ5OjEyOCw1MDo3Nyw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7Mjk6MTMwLDUyOjEyOSw3OTpqfSx4KEksWzIsNDZdKSx7MjI6MzEsMjk6MzIsNTA6MTMxLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHgoTCxbMiwxNV0sezMzOjEzMiwzNDpNLDM3Ok4sMzg6T30pLHgoUixbMiwyOF0pLHsxOToxMzMsMjI6ODIsMjQ6Riw4NDpHfSx7MzQ6WzEsMTM0XSwzOTpbMSwxMzVdLDQwOlsxLDEzNl19LHszNDpbMSwxMzddLDM5OlsxLDEzOF0sNDA6WzEsMTM5XX0seChQLFsyLDE4XSx7ODU6RH0pLHsyMjoxNDAsODQ6R30sezI4OlsxLDE0MV19LHsyNjpbMSwxNDJdfSx7MjY6WzEsMTQzXX0sezI2OlsyLDc3XSw0MzpKfSx4KEwsWzIsMTRdLHszMzoxMTIsMjE6MTQ0LDM0Ok0sMzc6TiwzODpPfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTQ1LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezI2OlsxLDE0Nl19LHgoQyxbMiw4N10pLHsyNjpbMiw4OV0sNDM6Sn0seChDLFsyLDg1XSkseChJLFsyLDQ0XSkseChlLFsyLDQ3XSx7NTM6MTQ3LDU2OlsxLDE0OF19KSx7NTQ6WzEsMTQ5XSw1NTpbMSwxNTBdfSx4KEssWzIsOTFdKSx4KFIsWzIsMjldKSx7MzU6WzEsMTUxXX0sezE5OjE1MiwyMjo4MiwyNDpGLDg0Okd9LHszNDpbMSwxNTNdfSx7MzQ6WzEsMTU0XX0sezE5OjE1NSwyMjo4MiwyNDpGLDg0Okd9LHszNDpbMSwxNTZdfSx7MzQ6WzEsMTU3XX0seChQLFsyLDE5XSx7ODU6RH0pLHsyNDpbMSwxNThdfSx4KFAsWzIsMjBdKSx4KFAsWzIsMjFdLHsyMjoxNTksODQ6R30pLHgoTCxbMiwxNl0sezMzOjEzMiwzNDpNLDM3Ok4sMzg6T30pLHgoUSxbMiw2OF0sezY1OnYsNjY6dyw2Nzp5LDY4Onp9KSx4KEIsWzIsNjNdKSx4KGUsWzIsNDhdKSx7NTc6WzEsMTYwXSw1OTpbMSwxNjFdfSx4KFMsWzIsNDldKSx4KFMsWzIsNTBdKSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoxNjIsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MzU6WzEsMTYzXX0sezE5OjE2NCwyMjo4MiwyNDpGLDg0Okd9LHsxOToxNjUsMjI6ODIsMjQ6Riw4NDpHfSx7MzU6WzEsMTY2XX0sezE5OjE2NywyMjo4MiwyNDpGLDg0Okd9LHsxOToxNjgsMjI6ODIsMjQ6Riw4NDpHfSx7Mjk6MTY5LDc5Omp9LHgoUCxbMiwyMl0sezg1OkR9KSx7Mjk6MTMwLDUyOjE3MCw3OTpqfSx7Mjk6MTMwLDUyOjE3MSw3OTpqfSx4KFIsWzIsMzBdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoxNzIsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MzU6WzEsMTczXX0sezM1OlsxLDE3NF19LHsyMjozMSwyNDpoLDI5OjMyLDM2OjE3NSw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHszNTpbMSwxNzZdfSx7MzU6WzEsMTc3XX0sezI2OlsxLDE3OF19LHs1ODpbMSwxNzldfSx7NTg6WzEsMTgwXX0seChSLFsyLDMxXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgxLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgyLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChSLFsyLDMyXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgzLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6MTg0LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChQLFsyLDIzXSkseChlLFsyLDUxXSkseChlLFsyLDUyXSkseChSLFsyLDMzXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM1XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM0XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM2XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSldLGRlZmF1bHRBY3Rpb25zOns5OlsyLDFdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHgsYSl7aWYoIWEucmVjb3ZlcmFibGUpdGhyb3cgbmV3IEVycm9yKHgpO3RoaXMudHJhY2UoeCl9LHBhcnNlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1bMF0sYz1bbnVsbF0sZD1bXSxlPXRoaXMudGFibGUsZj0iIixnPTAsaD0wLGk9MCxqPTIsaz0xLGw9ZC5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxtPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksbj17eXk6e319O2Zvcih2YXIgbyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LG8pJiYobi55eVtvXT10aGlzLnl5W29dKTttLnNldElucHV0KHgsbi55eSksbi55eS5sZXhlcj1tLG4ueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09bS55eWxsb2MmJihtLnl5bGxvYz17fSk7dmFyIHA9bS55eWxsb2M7ZC5wdXNoKHApO3ZhciBxPW0ub3B0aW9ucyYmbS5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiByKCl7dmFyIHg7cmV0dXJuIm51bWJlciIhPXR5cGVvZih4PW0ubGV4KCl8fGspJiYoeD1hLnN5bWJvbHNfW3hdfHx4KSx4fSJmdW5jdGlvbiI9PXR5cGVvZiBuLnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPW4ueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBzLHQsdSx2LHcseSx6LEEsQixDPXt9Ozspe2lmKHU9YltiLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3VdP3Y9dGhpcy5kZWZhdWx0QWN0aW9uc1t1XToobnVsbD09cyYmKHM9cigpKSx2PWVbdV0mJmVbdV1bc10pLHZvaWQgMD09PXZ8fCF2Lmxlbmd0aHx8IXZbMF0pe3ZhciBEPSIiO2Zvcih5IGluIEI9W10sZVt1XSl0aGlzLnRlcm1pbmFsc19beV0mJnk+aiYmQi5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19beV0rIiciKTtEPW0uc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGcrMSkrIjpcbiIrbS5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitCLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bc118fHMpKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhnKzEpKyI6IFVuZXhwZWN0ZWQgIisocz09az8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tzXXx8cykrIiciKSx0aGlzLnBhcnNlRXJyb3IoRCx7dGV4dDptLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tzXXx8cyxsaW5lOm0ueXlsaW5lbm8sbG9jOnAsZXhwZWN0ZWQ6Qn0pfWlmKHZbMF1pbnN0YW5jZW9mIEFycmF5JiZ2Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdSsiLCB0b2tlbjogIitzKTtzd2l0Y2godlswXSl7Y2FzZSAxOmIucHVzaChzKSxjLnB1c2gobS55eXRleHQpLGQucHVzaChtLnl5bGxvYyksYi5wdXNoKHZbMV0pLHM9bnVsbCx0PyhzPXQsdD1udWxsKTooaD1tLnl5bGVuZyxmPW0ueXl0ZXh0LGc9bS55eWxpbmVubyxwPW0ueXlsbG9jLGk+MCYmaS0tKTticmVhaztjYXNlIDI6aWYoej10aGlzLnByb2R1Y3Rpb25zX1t2WzFdXVsxXSxDLiQ9Y1tjLmxlbmd0aC16XSxDLl8kPXtmaXJzdF9saW5lOmRbZC5sZW5ndGgtKHp8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpkW2QubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46ZFtkLmxlbmd0aC0oenx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpkW2QubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxxJiYoQy5fJC5yYW5nZT1bZFtkLmxlbmd0aC0oenx8MSldLnJhbmdlWzBdLGRbZC5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0odz10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoQyxbZixoLGcsbi55eSx2WzFdLGMsZF0uY29uY2F0KGwpKSkpcmV0dXJuIHc7eiYmKGI9Yi5zbGljZSgwLC0xKnoqMiksYz1jLnNsaWNlKDAsLTEqeiksZD1kLnNsaWNlKDAsLTEqeikpLGIucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1t2WzFdXVswXSksYy5wdXNoKEMuJCksZC5wdXNoKEMuXyQpLEE9ZVtiW2IubGVuZ3RoLTJdXVtiW2IubGVuZ3RoLTFdXSxiLnB1c2goQSk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19O2Z1bmN0aW9uIFUoKXt0aGlzLnl5PXt9fXJldHVybiBVLnByb3RvdHlwZT1ULFQuUGFyc2VyPVUsbmV3IFV9KCk7dm9pZCAwIT09eCYmdm9pZCAwIT09YiYmKGIucGFyc2VyPWQsYi5QYXJzZXI9ZC5QYXJzZXIsYi5wYXJzZT1mdW5jdGlvbigpe3JldHVybiBkLnBhcnNlLmFwcGx5KGQsYXJndW1lbnRzKX0sYi5tYWluPWZ1bmN0aW9uKHgpe3JldHVybiB4WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3hbMF0rIiBGSUxFIiksYy5leGl0KDEpKSxiLnBhcnNlci5wYXJzZShzb3VyY2UpfSx2b2lkIDAhPT1hJiZ4Lm1haW49PT1hJiZiLm1haW4oYy5hcmd2LnNsaWNlKDEpKSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHgoIl9wcm9jZXNzIikpfSx7X3Byb2Nlc3M6OH1dLDQ6W2Z1bmN0aW9uKHgsYSxiKXsoZnVuY3Rpb24oKXtsZXQgeDt4PWZ1bmN0aW9uKCl7bGV0IHgsYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2Z1bmN0aW9uIHIoeCxhKXtsZXQgYixjO2ZvcihudWxsPT1hJiYoYT17fSksdGhpcy5zcWw9eCx0aGlzLnByZXNlcnZlV2hpdGVzcGFjZT1hLnByZXNlcnZlV2hpdGVzcGFjZXx8ITEsdGhpcy50b2tlbnM9W10sdGhpcy5jdXJyZW50TGluZT0xLGM9MDt0aGlzLmNodW5rPXguc2xpY2UoYyk7KXtpZigoYj10aGlzLmtleXdvcmRUb2tlbigpfHx0aGlzLnN0YXJUb2tlbigpfHx0aGlzLmJvb2xlYW5Ub2tlbigpfHx0aGlzLmZ1bmN0aW9uVG9rZW4oKXx8dGhpcy53aW5kb3dFeHRlbnNpb24oKXx8dGhpcy5zb3J0T3JkZXJUb2tlbigpfHx0aGlzLnNlcGVyYXRvclRva2VuKCl8fHRoaXMub3BlcmF0b3JUb2tlbigpfHx0aGlzLm1hdGhUb2tlbigpfHx0aGlzLmRvdFRva2VuKCl8fHRoaXMuY29uZGl0aW9uYWxUb2tlbigpfHx0aGlzLmJldHdlZW5Ub2tlbigpfHx0aGlzLnN1YlNlbGVjdE9wVG9rZW4oKXx8dGhpcy5zdWJTZWxlY3RVbmFyeU9wVG9rZW4oKXx8dGhpcy5udW1iZXJUb2tlbigpfHx0aGlzLnN0cmluZ1Rva2VuKCl8fHRoaXMucGFyYW1ldGVyVG9rZW4oKXx8dGhpcy5wYXJlbnNUb2tlbigpfHx0aGlzLndoaXRlc3BhY2VUb2tlbigpfHx0aGlzLmxpdGVyYWxUb2tlbigpKTwxKXRocm93IG5ldyBFcnJvcigiTk9USElORyBDT05TVU1FRDogU3RvcHBlZCBhdCAtICciK3RoaXMuY2h1bmsuc2xpY2UoMCwzMCkrIiciKTtjKz1ifXRoaXMudG9rZW4oIkVPRiIsIiIpLHRoaXMucG9zdFByb2Nlc3MoKX1yZXR1cm4gci5wcm90b3R5cGUucG9zdFByb2Nlc3M9ZnVuY3Rpb24oKXtsZXQgeCxhLGIsYyxkLGUsZjtmb3IoZj1bXSx4PWM9MCxkPShlPXRoaXMudG9rZW5zKS5sZW5ndGg7YzxkO3g9KytjKSJTVEFSIj09PShiPWVbeF0pWzBdJiYiU0VQQVJBVE9SIiE9PShhPXRoaXMudG9rZW5zW3grMV0pWzBdJiYiRlJPTSIhPT1hWzBdP2YucHVzaChiWzBdPSJNQVRIX01VTFRJIik6Zi5wdXNoKHZvaWQgMCk7cmV0dXJuIGZ9LHIucHJvdG90eXBlLnRva2VuPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMudG9rZW5zLnB1c2goW3gsYSx0aGlzLmN1cnJlbnRMaW5lXSl9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbVJlZ2V4PWZ1bmN0aW9uKHgsYSxiLGMsZCl7bGV0IGUsZjtyZXR1cm4gbnVsbD09YiYmKGI9MCksbnVsbD09YyYmKGM9YiksbnVsbD09ZCYmKGQ9ITApLChlPWEuZXhlYyh0aGlzLmNodW5rKSk/KGY9ZVtiXSxkJiZ0aGlzLnRva2VuKHgsZiksZVtjXS5sZW5ndGgpOjB9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbVdvcmQ9ZnVuY3Rpb24oeCxhKXtsZXQgYixjO3JldHVybiBudWxsPT1hJiYoYT14KSxhPXRoaXMucmVnZXhFc2NhcGUoYSksKGI9KGM9L15cdyskLy50ZXN0KGEpP25ldyBSZWdFeHAoIl4oIithKyIpXFxiIiwiaWciKTpuZXcgUmVnRXhwKCJeKCIrYSsiKSIsImlnIikpLmV4ZWModGhpcy5jaHVuaykpPyh0aGlzLnRva2VuKHgsYlsxXSksYlsxXS5sZW5ndGgpOjB9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbUxpc3Q9ZnVuY3Rpb24oeCxhKXtsZXQgYixjLGQsZTtmb3IoYz0wLGQ9MCxlPWEubGVuZ3RoO2Q8ZSYmKGI9YVtkXSwhKChjPXRoaXMudG9rZW5pemVGcm9tV29yZCh4LGIpKT4wKSk7ZCsrKTtyZXR1cm4gY30sci5wcm90b3R5cGUua2V5d29yZFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tV29yZCgiU0VMRUNUIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiRElTVElOQ1QiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJGUk9NIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiV0hFUkUiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJHUk9VUCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIk9SREVSIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiQlkiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJIQVZJTkciKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJMSU1JVCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIkpPSU4iKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJMRUZUIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiUklHSFQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJJTk5FUiIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIk9VVEVSIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiT04iKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJBUyIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlVOSU9OIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiQUxMIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiTElNSVQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJPRkZTRVQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJGRVRDSCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlJPVyIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlJPV1MiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJPTkxZIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiTkVYVCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIkZJUlNUIil9LHIucHJvdG90eXBlLmRvdFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tV29yZCgiRE9UIiwiLiIpfSxyLnByb3RvdHlwZS5vcGVyYXRvclRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiT1BFUkFUT1IiLGspfSxyLnByb3RvdHlwZS5tYXRoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJNQVRIIixjKXx8dGhpcy50b2tlbml6ZUZyb21MaXN0KCJNQVRIX01VTFRJIixkKX0sci5wcm90b3R5cGUuY29uZGl0aW9uYWxUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbUxpc3QoIkNPTkRJVElPTkFMIixpKX0sci5wcm90b3R5cGUuYmV0d2VlblRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiQkVUV0VFTiIsaCl9LHIucHJvdG90eXBlLnN1YlNlbGVjdE9wVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJTVUJfU0VMRUNUX09QIixvKX0sci5wcm90b3R5cGUuc3ViU2VsZWN0VW5hcnlPcFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiU1VCX1NFTEVDVF9VTkFSWV9PUCIscCl9LHIucHJvdG90eXBlLmZ1bmN0aW9uVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJGVU5DVElPTiIsail9LHIucHJvdG90eXBlLnNvcnRPcmRlclRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiRElSRUNUSU9OIixsKX0sci5wcm90b3R5cGUuYm9vbGVhblRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiQk9PTEVBTiIseCl9LHIucHJvdG90eXBlLnN0YXJUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbVJlZ2V4KCJTVEFSIixtKX0sci5wcm90b3R5cGUuc2VwZXJhdG9yVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiU0VQQVJBVE9SIixnKX0sci5wcm90b3R5cGUubGl0ZXJhbFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIkxJVEVSQUwiLGIsMSwwKX0sci5wcm90b3R5cGUubnVtYmVyVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiTlVNQkVSIixlKX0sci5wcm90b3R5cGUucGFyYW1ldGVyVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiUEFSQU1FVEVSIixmKX0sci5wcm90b3R5cGUuc3RyaW5nVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiU1RSSU5HIixuLDEsMCl8fHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIkRCTFNUUklORyIsYSwxLDApfSxyLnByb3RvdHlwZS5wYXJlbnNUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbVJlZ2V4KCJMRUZUX1BBUkVOIiwvXlwoLyl8fHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIlJJR0hUX1BBUkVOIiwvXlwpLyl9LHIucHJvdG90eXBlLndpbmRvd0V4dGVuc2lvbj1mdW5jdGlvbigpe2xldCB4O3JldHVybih4PS9eXC4od2luKToobGVuZ3RofHRpbWUpL2kuZXhlYyh0aGlzLmNodW5rKSk/KHRoaXMudG9rZW4oIldJTkRPVyIseFsxXSksdGhpcy50b2tlbigiV0lORE9XX0ZVTkNUSU9OIix4WzJdKSx4WzBdLmxlbmd0aCk6MH0sci5wcm90b3R5cGUud2hpdGVzcGFjZVRva2VuPWZ1bmN0aW9uKCl7bGV0IHgsYSxiO3JldHVybih4PXEuZXhlYyh0aGlzLmNodW5rKSk/KGE9KGI9eFswXSkucmVwbGFjZSgvW15cbl0vLCIiKS5sZW5ndGgsdGhpcy5jdXJyZW50TGluZSs9YSx0aGlzLnByZXNlcnZlV2hpdGVzcGFjZSYmdGhpcy50b2tlbihuYW1lLGIpLGIubGVuZ3RoKTowfSxyLnByb3RvdHlwZS5yZWdleEVzY2FwZT1mdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsYWNlKC9bLVtcXXt9KCkqKz8uLFxcXiR8I1xzXS9nLCJcXCQmIil9LGo9WyJBVkciLCJDT1VOVCIsIk1JTiIsIk1BWCIsIlNVTSJdLGw9WyJBU0MiLCJERVNDIl0saz1bIj0iLCIhPSIsIj49IiwiPiIsIjw9IiwiPD4iLCI8IiwiTElLRSIsIklMSUtFIiwiUkxJS0UiLCJSRUdFWFAiLCJJUyBOT1QiLCJJUyJdLG89WyJJTiIsIk5PVCBJTiIsIkFOWSIsIkFMTCIsIlNPTUUiXSxwPVsiRVhJU1RTIl0saT1bIkFORCIsIk9SIl0saD1bIkJFVFdFRU4iLCJOT1QgQkVUV0VFTiJdLHg9WyJUUlVFIiwiRkFMU0UiLCJOVUxMIl0sYz1bIisiLCItIl0sZD1bIi8iLCIqIl0sbT0vXlwqLyxnPS9eLC8scT0vXlsgXG5ccl0rLyxiPS9eYD8oW2Etel9dW2EtejAtOV9dezAsfSlgPy9pLGY9L15cJFswLTldKy8sZT0vXlwtP1swLTldKyhcLlswLTldKyk/LyxuPS9eJyhbXlxcJ10qKD86XFwuW15cXCddKikqKScvLGE9L14iKFteXFwiXSooPzpcXC5bXlxcIl0qKSopIi8scn0oKSxiLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB4KGEsYikudG9rZW5zfX0pLmNhbGwodGhpcyl9LHt9XSw1OltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKCl7bGV0IHgsYSxjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyx5O3k9ZnVuY3Rpb24oeCl7bGV0IGE7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGIsYyxkLGU7Zm9yKGU9W10sYj0wLGM9KGQ9eC5zcGxpdCgiXG4iKSkubGVuZ3RoO2I8YztiKyspYT1kW2JdLGUucHVzaCgiICAiK2EpO3JldHVybiBlfSgpLmpvaW4oIlxuIil9LGIuU2VsZWN0PXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSxiLGMsZCl7dGhpcy5maWVsZHM9eCx0aGlzLnNvdXJjZT1hLHRoaXMuZGlzdGluY3Q9bnVsbCE9YiYmYix0aGlzLmpvaW5zPW51bGwhPWM/YzpbXSx0aGlzLnVuaW9ucz1udWxsIT1kP2Q6W10sdGhpcy5vcmRlcj1udWxsLHRoaXMuZ3JvdXA9bnVsbCx0aGlzLndoZXJlPW51bGwsdGhpcy5saW1pdD1udWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4LGEsYixjLGQsZSxmLGcsaDtmb3IoKGE9WyJTRUxFQ1QgIit0aGlzLmZpZWxkcy5qb2luKCIsICIpXSkucHVzaCh5KCJGUk9NICIrdGhpcy5zb3VyY2UpKSxjPTAsZT0oZz10aGlzLmpvaW5zKS5sZW5ndGg7YzxlO2MrKyl4PWdbY10sYS5wdXNoKHkoeC50b1N0cmluZygpKSk7Zm9yKHRoaXMud2hlcmUmJmEucHVzaCh5KHRoaXMud2hlcmUudG9TdHJpbmcoKSkpLHRoaXMuZ3JvdXAmJmEucHVzaCh5KHRoaXMuZ3JvdXAudG9TdHJpbmcoKSkpLHRoaXMub3JkZXImJmEucHVzaCh5KHRoaXMub3JkZXIudG9TdHJpbmcoKSkpLHRoaXMubGltaXQmJmEucHVzaCh5KHRoaXMubGltaXQudG9TdHJpbmcoKSkpLGQ9MCxmPShoPXRoaXMudW5pb25zKS5sZW5ndGg7ZDxmO2QrKyliPWhbZF0sYS5wdXNoKGIudG9TdHJpbmcoKSk7cmV0dXJuIGEuam9pbigiXG4iKX0seH0oKSxiLlN1YlNlbGVjdD1zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMuc2VsZWN0PXgsdGhpcy5uYW1lPW51bGwhPWE/YTpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4O3JldHVybih4PVtdKS5wdXNoKCIoIikseC5wdXNoKHkodGhpcy5zZWxlY3QudG9TdHJpbmcoKSkpLHgucHVzaCh0aGlzLm5hbWU/IikgIit0aGlzLm5hbWUudG9TdHJpbmcoKToiKSIpLHguam9pbigiXG4iKX0seH0oKSxiLkpvaW49Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhLGIsYyl7dGhpcy5yaWdodD14LHRoaXMuY29uZGl0aW9ucz1udWxsIT1hP2E6bnVsbCx0aGlzLnNpZGU9bnVsbCE9Yj9iOm51bGwsdGhpcy5tb2RlPW51bGwhPWM/YzpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4O3JldHVybiB4PSIiLG51bGwhPXRoaXMuc2lkZSYmKHgrPXRoaXMuc2lkZSsiICIpLG51bGwhPXRoaXMubW9kZSYmKHgrPXRoaXMubW9kZSsiICIpLHgrIkpPSU4gIit0aGlzLnJpZ2h0KyJcbiIreSgiT04gIit0aGlzLmNvbmRpdGlvbnMpfSx4fSgpLGIuVW5pb249dj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnF1ZXJ5PXgsdGhpcy5hbGw9bnVsbCE9YSYmYX1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtsZXQgeDtyZXR1cm4iVU5JT04iKyh4PXRoaXMuYWxsPyIgQUxMIjoiIikrIlxuIit0aGlzLnF1ZXJ5LnRvU3RyaW5nKCl9LHh9KCksYi5MaXRlcmFsVmFsdWU9aj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy52YWx1ZTI9bnVsbCE9YT9hOm51bGwsdGhpcy52YWx1ZTI/KHRoaXMubmVzdGVkPSEwLHRoaXMudmFsdWVzPXRoaXMudmFsdWUudmFsdWVzLHRoaXMudmFsdWVzLnB1c2goYSkpOih0aGlzLm5lc3RlZD0hMSx0aGlzLnZhbHVlcz1bdGhpcy52YWx1ZV0pfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJgIit0aGlzLnZhbHVlcy5qb2luKCIuIikrImAifSx4fSgpLGIuU3RyaW5nVmFsdWU9cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy5xdW90ZVR5cGU9bnVsbCE9YT9hOiInJyJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5xdW90ZVR5cGUrdGhpcy52YWx1ZSt0aGlzLnF1b3RlVHlwZX0seH0oKSxiLk51bWJlclZhbHVlPWo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMudmFsdWU9TnVtYmVyKHgpfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnRvU3RyaW5nKCl9LHh9KCksYi5MaXN0VmFsdWU9aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIoIit0aGlzLnZhbHVlLmpvaW4oIiwgIikrIikifSx4fSgpLGIuUGFyYW1ldGVyVmFsdWU9bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14LHRoaXMuaW5kZXg9cGFyc2VJbnQoeC5zdWJzdHIoMSksMTApLTF9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy52YWx1ZX0seH0oKSxiLkFyZ3VtZW50TGlzdFZhbHVlPXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy52YWx1ZT14LHRoaXMuZGlzdGluY3Q9bnVsbCE9YSYmYX1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXN0aW5jdD8iRElTVElOQ1QgIit0aGlzLnZhbHVlLmpvaW4oIiwgIik6IiIrdGhpcy52YWx1ZS5qb2luKCIsICIpfSx4fSgpLGIuQm9vbGVhblZhbHVlPWo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMudmFsdWU9ZnVuY3Rpb24oKXtzd2l0Y2goeC50b0xvd2VyQ2FzZSgpKXtjYXNlInRydWUiOnJldHVybiEwO2Nhc2UiZmFsc2UiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSgpfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLnZhbHVlP3RoaXMudmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpOiJOVUxMIn0seH0oKSxiLkZ1bmN0aW9uVmFsdWU9ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhLGIpe3RoaXMubmFtZT14LHRoaXMuYXJndW1lbnRzPW51bGwhPWE/YTpudWxsLHRoaXMudWRmPW51bGwhPWImJmJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzP3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpKyIoIit0aGlzLmFyZ3VtZW50cy50b1N0cmluZygpKyIpIjp0aGlzLm5hbWUudG9VcHBlckNhc2UoKSsiKCkifSx4fSgpLGIuT3JkZXI9bT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLm9yZGVyaW5ncz14LHRoaXMub2Zmc2V0PWF9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk9SREVSIEJZICIrdGhpcy5vcmRlcmluZ3Muam9pbigiLCAiKSsodGhpcy5vZmZzZXQ/IlxuIit0aGlzLm9mZnNldC50b1N0cmluZygpOiIiKX0seH0oKSxiLk9yZGVyQXJndW1lbnQ9bj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy5kaXJlY3Rpb249bnVsbCE9YT9hOiJBU0MifXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlKyIgIit0aGlzLmRpcmVjdGlvbn0seH0oKSxiLk9mZnNldD1rPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMucm93X2NvdW50PXgsdGhpcy5saW1pdD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJPRkZTRVQgIit0aGlzLnJvd19jb3VudCsiIFJPV1MiKyh0aGlzLmxpbWl0PyJcbkZFVENIIE5FWFQgIit0aGlzLmxpbWl0KyIgUk9XUyBPTkxZIjoiIil9LHh9KCksYi5MaW1pdD1oPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMudmFsdWU9eCx0aGlzLm9mZnNldD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJMSU1JVCAiK3RoaXMudmFsdWUrKHRoaXMub2Zmc2V0PyJcbk9GRlNFVCAiK3RoaXMub2Zmc2V0OiIiKX0seH0oKSxiLlRhYmxlPXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSxiLGMsZCl7dGhpcy5uYW1lPXgsdGhpcy5hbGlhcz1udWxsIT1hP2E6bnVsbCx0aGlzLndpbj1udWxsIT1iP2I6bnVsbCx0aGlzLndpbkZuPW51bGwhPWM/YzpudWxsLHRoaXMud2luQXJnPW51bGwhPWQ/ZDpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpbj90aGlzLm5hbWUrIi4iK3RoaXMud2luKyI6Iit0aGlzLndpbkZuKyIoIit0aGlzLndpbkFyZysiKSI6dGhpcy5hbGlhcz90aGlzLm5hbWUrIiBBUyAiK3RoaXMuYWxpYXM6dGhpcy5uYW1lLnRvU3RyaW5nKCl9LHh9KCksYi5Hcm91cD1lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4KXt0aGlzLmZpZWxkcz14LHRoaXMuaGF2aW5nPW51bGx9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHg7cmV0dXJuIHg9WyJHUk9VUCBCWSAiK3RoaXMuZmllbGRzLmpvaW4oIiwgIildLHRoaXMuaGF2aW5nJiZ4LnB1c2godGhpcy5oYXZpbmcudG9TdHJpbmcoKSkseC5qb2luKCJcbiIpfSx4fSgpLGIuV2hlcmU9dz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy5jb25kaXRpb25zPXh9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIldIRVJFICIrdGhpcy5jb25kaXRpb25zfSx4fSgpLGIuSGF2aW5nPWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMuY29uZGl0aW9ucz14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJIQVZJTkcgIit0aGlzLmNvbmRpdGlvbnN9LHh9KCksYi5PcD1sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEsYil7dGhpcy5vcGVyYXRpb249eCx0aGlzLmxlZnQ9YSx0aGlzLnJpZ2h0PWJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIigiK3RoaXMubGVmdCsiICIrdGhpcy5vcGVyYXRpb24udG9VcHBlckNhc2UoKSsiICIrdGhpcy5yaWdodCsiKSJ9LHh9KCksYi5VbmFyeU9wPXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy5vcGVyYXRvcj14LHRoaXMub3BlcmFuZD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIoIit0aGlzLm9wZXJhdG9yLnRvVXBwZXJDYXNlKCkrIiAiK3RoaXMub3BlcmFuZCsiKSJ9LHh9KCksYi5CZXR3ZWVuT3A9YT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIiK3RoaXMudmFsdWUuam9pbigiIEFORCAiKX0seH0oKSxiLkZpZWxkPWM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy5maWVsZD14LHRoaXMubmFtZT1udWxsIT1hP2E6bnVsbH1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lP3RoaXMuZmllbGQrIiBBUyAiK3RoaXMubmFtZTp0aGlzLmZpZWxkLnRvU3RyaW5nKCl9LHh9KCksYi5TdGFyPXE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KCl7bnVsbH1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iKiJ9LHgucHJvdG90eXBlLnN0YXI9ITAseH0oKX0pLmNhbGwodGhpcyl9LHt9XSw2OltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKCl7bGV0IGE7YT1mdW5jdGlvbigpe2xldCBhO3JldHVybihhPXgoIi4vY29tcGlsZWRfcGFyc2VyIikucGFyc2VyKS5sZXhlcj17bGV4OmZ1bmN0aW9uKCl7bGV0IHgsYTtyZXR1cm4geD0oYT10aGlzLnRva2Vuc1t0aGlzLnBvcysrXXx8WyIiXSlbMF0sdGhpcy55eXRleHQ9YVsxXSx0aGlzLnl5bGluZW5vPWFbMl0seH0sc2V0SW5wdXQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudG9rZW5zPXgsdGhpcy5wb3M9MH0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3JldHVybiIifX0sYS55eT14KCIuL25vZGVzIiksYX0sYi5wYXJzZXI9YSgpLGIucGFyc2U9ZnVuY3Rpb24oeCl7cmV0dXJuIGEoKS5wYXJzZSh4KX19KS5jYWxsKHRoaXMpfSx7Ii4vY29tcGlsZWRfcGFyc2VyIjozLCIuL25vZGVzIjo1fV0sNzpbZnVuY3Rpb24oeCxhLGIpeyhmdW5jdGlvbigpe2IubGV4ZXI9eCgiLi9sZXhlciIpLGIucGFyc2VyPXgoIi4vcGFyc2VyIiksYi5ub2Rlcz14KCIuL25vZGVzIiksYi5wYXJzZT1mdW5jdGlvbih4KXtyZXR1cm4gYi5wYXJzZXIucGFyc2UoYi5sZXhlci50b2tlbml6ZSh4KSl9fSkuY2FsbCh0aGlzKX0seyIuL2xleGVyIjo0LCIuL25vZGVzIjo1LCIuL3BhcnNlciI6Nn1dLDg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9YS5leHBvcnRzPXt9O2Z1bmN0aW9uIGYoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBnKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBoKHgpe2lmKGM9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHgsMCk7aWYoKGM9PT1mfHwhYykmJnNldFRpbWVvdXQpcmV0dXJuIGM9c2V0VGltZW91dCxzZXRUaW1lb3V0KHgsMCk7dHJ5e3JldHVybiBjKHgsMCl9Y2F0Y2goYSl7dHJ5e3JldHVybiBjLmNhbGwobnVsbCx4LDApfWNhdGNoKGEpe3JldHVybiBjLmNhbGwodGhpcyx4LDApfX19ZnVuY3Rpb24gaSh4KXtpZihkPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoeCk7aWYoKGQ9PT1nfHwhZCkmJmNsZWFyVGltZW91dClyZXR1cm4gZD1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHgpO3RyeXtyZXR1cm4gZCh4KX1jYXRjaChhKXt0cnl7cmV0dXJuIGQuY2FsbChudWxsLHgpfWNhdGNoKGEpe3JldHVybiBkLmNhbGwodGhpcyx4KX19fSFmdW5jdGlvbigpe3RyeXtjPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6Zn1jYXRjaCh4KXtjPWZ9dHJ5e2Q9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6Z31jYXRjaCh4KXtkPWd9fSgpO3ZhciBqLGs9W10sbD0hMSxtPS0xO2Z1bmN0aW9uIG4oKXtsJiZqJiYobD0hMSxqLmxlbmd0aD9rPWouY29uY2F0KGspOm09LTEsay5sZW5ndGgmJm8oKSl9ZnVuY3Rpb24gbygpe2lmKCFsKXt2YXIgeD1oKG4pO2w9ITA7Zm9yKHZhciBhPWsubGVuZ3RoO2E7KXtmb3Ioaj1rLGs9W107KyttPGE7KWomJmpbbV0ucnVuKCk7bT0tMSxhPWsubGVuZ3RofWo9bnVsbCxsPSExLGkoeCl9fWZ1bmN0aW9uIHAoeCxhKXt0aGlzLmZ1bj14LHRoaXMuYXJyYXk9YX1mdW5jdGlvbiBxKCl7fWUubmV4dFRpY2s9ZnVuY3Rpb24oeCl7dmFyIGE9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYVtiLTFdPWFyZ3VtZW50c1tiXTtrLnB1c2gobmV3IHAoeCxhKSksMSE9PWsubGVuZ3RofHxsfHxoKG8pfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxlLnRpdGxlPSJicm93c2VyIixlLmJyb3dzZXI9ITAsZS5lbnY9e30sZS5hcmd2PVtdLGUudmVyc2lvbj0iIixlLnZlcnNpb25zPXt9LGUub249cSxlLmFkZExpc3RlbmVyPXEsZS5vbmNlPXEsZS5vZmY9cSxlLnJlbW92ZUxpc3RlbmVyPXEsZS5yZW1vdmVBbGxMaXN0ZW5lcnM9cSxlLmVtaXQ9cSxlLnByZXBlbmRMaXN0ZW5lcj1xLGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1xLGUubGlzdGVuZXJzPWZ1bmN0aW9uKHgpe3JldHVybltdfSxlLmJpbmRpbmc9ZnVuY3Rpb24oeCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxlLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sZS5jaGRpcj1mdW5jdGlvbih4KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxlLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV19LHt9LFsxXSkoMSl9KTsJCQoKLypDb2RlTWlycm9yIFNRTCBzeW50YXggKyBSTElLRSwgKGMpIE1hcmlqbiBIYXZlcmJla2UqLwohZnVuY3Rpb24oeCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT94KHJlcXVpcmUoIi4uLy4uL2xpYi9jb2RlbWlycm9yIikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiLi4vLi4vbGliL2NvZGVtaXJyb3IiXSx4KTp4KENvZGVNaXJyb3IpfShmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7eC5kZWZpbmVNb2RlKCJzcWwiLGZ1bmN0aW9uKGQsZSl7dmFyIGY9ZS5jbGllbnR8fHt9LGc9ZS5hdG9tc3x8e2ZhbHNlOiEwLHRydWU6ITAsbnVsbDohMH0saD1lLmJ1aWx0aW58fGIoYyksaT1lLmtleXdvcmRzfHxiKGEpLGo9ZS5vcGVyYXRvckNoYXJzfHwvXlsqK1wtJTw+IT0mfH5eXC9dLyxrPWUuc3VwcG9ydHx8e30sbD1lLmhvb2tzfHx7fSxtPWUuZGF0ZVNRTHx8e2RhdGU6ITAsdGltZTohMCx0aW1lc3RhbXA6ITB9LG49ITEhPT1lLmJhY2tzbGFzaFN0cmluZ0VzY2FwZXMsbz1lLmJyYWNrZXRzfHwvXltce31cKFwpXFtcXV0vLHA9ZS5wdW5jdHVhdGlvbnx8L15bOy4sOl0vO2Z1bmN0aW9uIHEoeCxhKXt2YXIgYj14Lm5leHQoKTtpZihsW2JdKXt2YXIgYz1sW2JdKHgsYSk7aWYoITEhPT1jKXJldHVybiBjfWlmKGsuaGV4TnVtYmVyJiYoIjAiPT1iJiZ4Lm1hdGNoKC9eW3hYXVswLTlhLWZBLUZdKy8pfHwoIngiPT1ifHwiWCI9PWIpJiZ4Lm1hdGNoKC9eJ1swLTlhLWZBLUZdKicvKSkpcmV0dXJuIm51bWJlciI7aWYoay5iaW5hcnlOdW1iZXImJigoImIiPT1ifHwiQiI9PWIpJiZ4Lm1hdGNoKC9eJ1swMV0qJy8pfHwiMCI9PWImJngubWF0Y2goL15iWzAxXSsvKSkpcmV0dXJuIm51bWJlciI7aWYoYi5jaGFyQ29kZUF0KDApPjQ3JiZiLmNoYXJDb2RlQXQoMCk8NTgpcmV0dXJuIHgubWF0Y2goL15bMC05XSooXC5bMC05XSspPyhbZUVdWy0rXT9bMC05XSspPy8pLGsuZGVjaW1hbGxlc3NGbG9hdCYmeC5tYXRjaCgvXlwuKD8hXC4pLyksIm51bWJlciI7aWYoIj8iPT1iJiYoeC5lYXRTcGFjZSgpfHx4LmVvbCgpfHx4LmVhdCgiOyIpKSlyZXR1cm4idmFyaWFibGUtMyI7aWYoIiciPT1ifHwnIic9PWImJmsuZG91YmxlUXVvdGUpcmV0dXJuIGEudG9rZW5pemU9cihiKSxhLnRva2VuaXplKHgsYSk7aWYoKGsubkNoYXJDYXN0JiYoIm4iPT1ifHwiTiI9PWIpfHxrLmNoYXJzZXRDYXN0JiYiXyI9PWImJngubWF0Y2goL1thLXpdW2EtejAtOV0qL2kpKSYmKCInIj09eC5wZWVrKCl8fCciJz09eC5wZWVrKCkpKXJldHVybiJrZXl3b3JkIjtpZihrLmVzY2FwZUNvbnN0YW50JiYoImUiPT1ifHwiRSI9PWIpJiYoIiciPT14LnBlZWsoKXx8JyInPT14LnBlZWsoKSYmay5kb3VibGVRdW90ZSkpcmV0dXJuIGEudG9rZW5pemU9ZnVuY3Rpb24oeCxhKXtyZXR1cm4oYS50b2tlbml6ZT1yKHgubmV4dCgpLCEwKSkoeCxhKX0sImtleXdvcmQiO2lmKGsuY29tbWVudFNsYXNoU2xhc2gmJiIvIj09YiYmeC5lYXQoIi8iKSlyZXR1cm4geC5za2lwVG9FbmQoKSwiY29tbWVudCI7aWYoay5jb21tZW50SGFzaCYmIiMiPT1ifHwiLSI9PWImJnguZWF0KCItIikmJighay5jb21tZW50U3BhY2VSZXF1aXJlZHx8eC5lYXQoIiAiKSkpcmV0dXJuIHguc2tpcFRvRW5kKCksImNvbW1lbnQiO2lmKCIvIj09YiYmeC5lYXQoIioiKSlyZXR1cm4gYS50b2tlbml6ZT1zKDEpLGEudG9rZW5pemUoeCxhKTtpZigiLiIhPWIpe2lmKGoudGVzdChiKSlyZXR1cm4geC5lYXRXaGlsZShqKSwib3BlcmF0b3IiO2lmKG8udGVzdChiKSlyZXR1cm4iYnJhY2tldCI7aWYocC50ZXN0KGIpKXJldHVybiB4LmVhdFdoaWxlKHApLCJwdW5jdHVhdGlvbiI7aWYoInsiPT1iJiYoeC5tYXRjaCgvXiggKSooZHxEfHR8VHx0c3xUUykoICkqJ1teJ10qJyggKSp9Lyl8fHgubWF0Y2goL14oICkqKGR8RHx0fFR8dHN8VFMpKCApKiJbXiJdKiIoICkqfS8pKSlyZXR1cm4ibnVtYmVyIjt4LmVhdFdoaWxlKC9eW19cd1xkXS8pO3ZhciBkPXguY3VycmVudCgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG0uaGFzT3duUHJvcGVydHkoZCkmJih4Lm1hdGNoKC9eKCApKydbXiddKicvKXx8eC5tYXRjaCgvXiggKSsiW14iXSoiLykpPyJudW1iZXIiOmcuaGFzT3duUHJvcGVydHkoZCk/ImF0b20iOmguaGFzT3duUHJvcGVydHkoZCk/InR5cGUiOmkuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmYuaGFzT3duUHJvcGVydHkoZCk/ImJ1aWx0aW4iOm51bGx9cmV0dXJuIGsuemVyb2xlc3NGbG9hdCYmeC5tYXRjaCgvXig/OlxkKyg/OmVbKy1dP1xkKyk/KS9pKT8ibnVtYmVyIjp4Lm1hdGNoKC9eXC4rLyk/bnVsbDp4Lm1hdGNoKC9eW1x3XGRfJCNdKy8pPyJ2YXJpYWJsZS0yIjp2b2lkIDB9ZnVuY3Rpb24gcih4LGEpe3JldHVybiBmdW5jdGlvbihiLGMpe2Zvcih2YXIgZCxlPSExO251bGwhPShkPWIubmV4dCgpKTspe2lmKGQ9PXgmJiFlKXtjLnRva2VuaXplPXE7YnJlYWt9ZT0obnx8YSkmJiFlJiYiXFwiPT1kfXJldHVybiJzdHJpbmcifX1mdW5jdGlvbiBzKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPWEubWF0Y2goL14uKj8oXC9cKnxcKlwvKS8pO3JldHVybiBjPyIvKiI9PWNbMV0/Yi50b2tlbml6ZT1zKHgrMSk6Yi50b2tlbml6ZT14PjE/cyh4LTEpOnE6YS5za2lwVG9FbmQoKSwiY29tbWVudCJ9fWZ1bmN0aW9uIHQoeCxhLGIpe2EuY29udGV4dD17cHJldjphLmNvbnRleHQsaW5kZW50OnguaW5kZW50YXRpb24oKSxjb2w6eC5jb2x1bW4oKSx0eXBlOmJ9fWZ1bmN0aW9uIHUoeCl7eC5pbmRlbnQ9eC5jb250ZXh0LmluZGVudCx4LmNvbnRleHQ9eC5jb250ZXh0LnByZXZ9cmV0dXJue3N0YXJ0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57dG9rZW5pemU6cSxjb250ZXh0Om51bGx9fSx0b2tlbjpmdW5jdGlvbih4LGEpe2lmKHguc29sKCkmJmEuY29udGV4dCYmbnVsbD09YS5jb250ZXh0LmFsaWduJiYoYS5jb250ZXh0LmFsaWduPSExKSxhLnRva2VuaXplPT1xJiZ4LmVhdFNwYWNlKCkpcmV0dXJuIG51bGw7dmFyIGI9YS50b2tlbml6ZSh4LGEpO2lmKCJjb21tZW50Ij09YilyZXR1cm4gYjthLmNvbnRleHQmJm51bGw9PWEuY29udGV4dC5hbGlnbiYmKGEuY29udGV4dC5hbGlnbj0hMCk7dmFyIGM9eC5jdXJyZW50KCk7cmV0dXJuIigiPT1jP3QoeCxhLCIpIik6IlsiPT1jP3QoeCxhLCJdIik6YS5jb250ZXh0JiZhLmNvbnRleHQudHlwZT09YyYmdShhKSxifSxpbmRlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRleHQ7aWYoIWMpcmV0dXJuIHguUGFzczt2YXIgZT1iLmNoYXJBdCgwKT09Yy50eXBlO3JldHVybiBjLmFsaWduP2MuY29sKyhlPzA6MSk6Yy5pbmRlbnQrKGU/MDpkLmluZGVudFVuaXQpfSxibG9ja0NvbW1lbnRTdGFydDoiLyoiLGJsb2NrQ29tbWVudEVuZDoiKi8iLGxpbmVDb21tZW50OmsuY29tbWVudFNsYXNoU2xhc2g/Ii8vIjprLmNvbW1lbnRIYXNoPyIjIjoiLS0iLGNsb3NlQnJhY2tldHM6IigpW117fScnXCJcImBgIixjb25maWc6ZX19KTt2YXIgYT0iYWx0ZXIgYW5kIGFzIGFzYyBiZXR3ZWVuIGJ5IGNvdW50IGNyZWF0ZSBkZWxldGUgZGVzYyBkaXN0aW5jdCBkcm9wIGZyb20gZ3JvdXAgaGF2aW5nIGluIGluc2VydCBpbnRvIGlzIGpvaW4gcmVnZXhwIHJsaWtlIGlsaWtlIGxpa2Ugbm90IG9uIG9yIG9yZGVyIHNlbGVjdCBzZXQgdGFibGUgdW5pb24gdXBkYXRlIHZhbHVlcyB3aGVyZSBsaW1pdCAiO2Z1bmN0aW9uIGIoeCl7Zm9yKHZhciBhPXt9LGI9eC5zcGxpdCgiICIpLGM9MDtjPGIubGVuZ3RoOysrYylhW2JbY11dPSEwO3JldHVybiBhfXZhciBjPSJib29sIGJvb2xlYW4gYml0IGJsb2IgZW51bSBsb25nIGxvbmdibG9iIGxvbmd0ZXh0IG1lZGl1bSBtZWRpdW1ibG9iIG1lZGl1bWludCBtZWRpdW10ZXh0IHRpbWUgdGltZXN0YW1wIHRpbnlibG9iIHRpbnlpbnQgdGlueXRleHQgdGV4dCBiaWdpbnQgaW50IGludDEgaW50MiBpbnQzIGludDQgaW50OCBpbnRlZ2VyIGZsb2F0IGZsb2F0NCBmbG9hdDggZG91YmxlIGNoYXIgdmFyYmluYXJ5IHZhcmNoYXIgdmFyY2hhcmFjdGVyIHByZWNpc2lvbiByZWFsIGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25lZCBzaWduZWQgZGVjaW1hbCBudW1lcmljIjt4LmRlZmluZU1JTUUoInRleHQveC1zcWwiLHtuYW1lOiJzcWwiLGtleXdvcmRzOmIoYSsiYmVnaW4iKSxidWlsdGluOmIoYyksYXRvbXM6YigiZmFsc2UgdHJ1ZSBudWxsIHVua25vd24iKSxkYXRlU1FMOmIoImRhdGUgdGltZSB0aW1lc3RhbXAiKSxzdXBwb3J0OmIoImRvdWJsZVF1b3RlIGJpbmFyeU51bWJlciBoZXhOdW1iZXIiKX0pfSk7CQkK" }, "lib/streamsaver-ping.html": { "content_type": "text/html", "data": "PCEtLQoJU3RyZWFtU2F2ZXIgc2VydmljZSB3b3JrZXIgYm9vdHN0cmFwIHNjcmlwdC4KCVVzZWQgZm9yIHN0cmVhbSBkb3dubG9hZCBvZiBEQiBiYWNrdXBzLgoJUGFydCBvZiBTdHJlYW1TYXZlci5qcywgKGMpIEppbW15IFfDpHJ0aW5nCi0tPgo8c2NyaXB0PgpsZXQga2VlcEFsaXZlPSgpPT57a2VlcEFsaXZlPSgoKT0+e30pO3ZhciB4PWxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsbG9jYXRpb24uaHJlZi5sYXN0SW5kZXhPZigiLyIpKSsiL3BpbmciLGE9c2V0SW50ZXJ2YWwoKCk9Pntzdz9zdy5wb3N0TWVzc2FnZSgicGluZyIpOmZldGNoKHgpLnRoZW4oeD0+eC50ZXh0KCF4Lm9rJiZjbGVhckludGVydmFsKGEpKSl9LDFlNCl9LG1lc3NhZ2VzPVtdO3dpbmRvdy5vbm1lc3NhZ2U9KHg9Pm1lc3NhZ2VzLnB1c2goeCkpO2xldCBzdz1udWxsLHNjb3BlPSIiO2Z1bmN0aW9uIHJlZ2lzdGVyV29ya2VyKCl7cmV0dXJuIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbigiLi4vIikudGhlbih4PT54fHxuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic3RyZWFtc2F2ZXItc3cuanMiLHtzY29wZToiLi8ifSkpLnRoZW4oeD0+e2NvbnN0IGE9eC5pbnN0YWxsaW5nfHx4LndhaXRpbmc7cmV0dXJuIHNjb3BlPXguc2NvcGUsKHN3PXguYWN0aXZlKXx8bmV3IFByb21pc2UoYj0+e2EuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLGZuPSgoKT0+eyJhY3RpdmF0ZWQiPT09YS5zdGF0ZSYmKGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLGZuKSxzdz14LmFjdGl2ZSxiKCkpfSkpfSl9KX1mdW5jdGlvbiBvbk1lc3NhZ2UoeCl7bGV0e2RhdGE6YSxwb3J0czpiLG9yaWdpbjpjfT14O2lmKCFifHwhYi5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiW1N0cmVhbVNhdmVyXSBZb3UgZGlkbid0IHNlbmQgYSBtZXNzYWdlQ2hhbm5lbCIpO2lmKCJvYmplY3QiIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJbU3RyZWFtU2F2ZXJdIFlvdSBkaWRuJ3Qgc2VuZCBhIG9iamVjdCIpO2Eub3JpZ2luPWMsYS5yZWZlcnJlcj1hLnJlZmVycmVyfHxkb2N1bWVudC5yZWZlcnJlcnx8YyxhLnN0cmVhbVNhdmVyVmVyc2lvbj1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ2ZXJzaW9uIiksIjEuMi4wIj09PWEuc3RyZWFtU2F2ZXJWZXJzaW9uJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gcGxlYXNlIHVwZGF0ZSBzdHJlYW1zYXZlciIpLGEuaGVhZGVycz9uZXcgSGVhZGVycyhhLmhlYWRlcnMpOmNvbnNvbGUud2FybigiW1N0cmVhbVNhdmVyXSBwYXNzIGRhdGEuaGVhZGVycyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIHBhc3MgYWxvbmcgdG8gdGhlIHNlcnZpY2Ugd29ya2VyXG5pdCBzaG91bGQgYmUgYSAyRCBhcnJheSBvciBhIGtleS92YWwgb2JqZWN0IHRoYXQgZmV0Y2gncyBIZWFkZXJzIGFwaSBhY2NlcHRzIiksInN0cmluZyI9PXR5cGVvZiBhLmZpbGVuYW1lJiYoY29uc29sZS53YXJuKCJbU3RyZWFtU2F2ZXJdIFlvdSBzaG91bGRuJ3Qgc2VuZCBkYXRhLmZpbGVuYW1lIGFueW1vcmUuIEl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgb3B0aW9uIiksYS5maWxlbmFtZT1hLmZpbGVuYW1lLnJlcGxhY2UoL1wvL2csIjoiKSksYS5zaXplJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gWW91IHNob3VsZG4ndCBzZW5kIGRhdGEuc2l6ZSBhbnltb3JlLiBJdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBvcHRpb24iKSxhLnJlYWRhYmxlU3RyZWFtJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gWW91IHNob3VsZCBzZW5kIHRoZSByZWFkYWJsZVN0cmVhbSBpbiB0aGUgbWVzc2FnZUNoYW5uZWwsIG5vdCB0aHJvdWdodCBtaXRtIiksYS5wYXRobmFtZXx8KGNvbnNvbGUud2FybigiW1N0cmVhbVNhdmVyXSBQbGVhc2Ugc2VuZCBkYXRhLnBhdGhuYW1lIChlZzogL3BpY3R1cmVzL3N1bW1lci5qcGcpIiksYS5wYXRobmFtZT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoLTYpKyIvIithLmZpbGVuYW1lKSxhLnBhdGhuYW1lPWEucGF0aG5hbWUucmVwbGFjZSgvXlwvKy9nLCIiKTtsZXQgZD1jLnJlcGxhY2UoLyheXHcrOnxeKVwvXC8vLCIiKTtpZihhLnVybD1uZXcgVVJMKHNjb3BlK2QrIi8iK2EucGF0aG5hbWUpLnRvU3RyaW5nKCksIWEudXJsLnN0YXJ0c1dpdGgoc2NvcGUrZCsiLyIpKXRocm93IG5ldyBUeXBlRXJyb3IoIltTdHJlYW1TYXZlcl0gYmFkIGRhdGEucGF0aG5hbWUiKTtjb25zdCBlPWEucmVhZGFibGVTdHJlYW0/W2JbMF0sYS5yZWFkYWJsZVN0cmVhbV06W2JbMF1dO3JldHVybiBhLnJlYWRhYmxlU3RyZWFtfHxhLnRyYW5zZmVycmluZ1JlYWRhYmxlfHxrZWVwQWxpdmUoKSxzdy5wb3N0TWVzc2FnZShhLGUpfXdpbmRvdy5vcGVuZXImJndpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoIlN0cmVhbVNhdmVyOjpsb2FkZWRQb3B1cCIsIioiKSxuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcj9yZWdpc3RlcldvcmtlcigpLnRoZW4oKCk9Pnt3aW5kb3cub25tZXNzYWdlPW9uTWVzc2FnZSxtZXNzYWdlcy5mb3JFYWNoKHdpbmRvdy5vbm1lc3NhZ2UpfSk6a2VlcEFsaXZlKCk7ICAKPC9zY3JpcHQ+" }, "lib/streamsaver-sw.js": { "content_type": "text/javascript", "data": "LypTdHJlYW1TYXZlci5qcyBTZXJ2aWNlV29ya2VyLCAoYykgSmltbXkgV8OkcnRpbmcqLwpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImluc3RhbGwiLCgpPT57c2VsZi5za2lwV2FpdGluZygpfSksc2VsZi5hZGRFdmVudExpc3RlbmVyKCJhY3RpdmF0ZSIseD0+e3gud2FpdFVudGlsKHNlbGYuY2xpZW50cy5jbGFpbSgpKX0pO2NvbnN0IG1hcD1uZXcgTWFwO2Z1bmN0aW9uIGNyZWF0ZVN0cmVhbSh4KXtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydChhKXt4Lm9ubWVzc2FnZT0oKHtkYXRhOnh9KT0+ImVuZCI9PT14P2EuY2xvc2UoKToiYWJvcnQiPT09eD8oYS5lcnJvcigiQWJvcnRlZCB0aGUgZG93bmxvYWQiKSx2b2lkIDApOihhLmVucXVldWUoeCksdm9pZCAwKSl9LGNhbmNlbCgpe3gucG9zdE1lc3NhZ2UoInVzZXIgYWJvcnRlZCIpLGNvbnNvbGUubG9nKCJ1c2VyIGFib3J0ZWQiKX19KX1zZWxmLm9ubWVzc2FnZT0oeD0+e2lmKCJwaW5nIj09PXguZGF0YSlyZXR1cm47Y29uc3QgYT14LmRhdGEsYj1hLnVybHx8c2VsZi5yZWdpc3RyYXRpb24uc2NvcGUrTWF0aC5yYW5kb20oKSsiLyIrKCJzdHJpbmciPT10eXBlb2YgYT9hOmEuZmlsZW5hbWUpLGM9eC5wb3J0c1swXSxkPW5ldyBBcnJheSgzKTtkWzFdPWEsZFsyXT1jLHguZGF0YS5yZWFkYWJsZVN0cmVhbT9kWzBdPXguZGF0YS5yZWFkYWJsZVN0cmVhbTp4LmRhdGEudHJhbnNmZXJyaW5nUmVhZGFibGU/Yy5vbm1lc3NhZ2U9KHg9PntjLm9ubWVzc2FnZT1udWxsLGRbMF09eC5kYXRhLnJlYWRhYmxlU3RyZWFtfSk6ZFswXT1jcmVhdGVTdHJlYW0oYyksbWFwLnNldChiLGQpLGMucG9zdE1lc3NhZ2Uoe2Rvd25sb2FkOmJ9KX0pLHNlbGYub25mZXRjaD0oeD0+e2NvbnN0IGE9eC5yZXF1ZXN0LnVybDtpZihhLmVuZHNXaXRoKCIvcGluZyIpKXJldHVybiB4LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgicG9uZyIpKTtjb25zdCBiPW1hcC5nZXQoYSk7aWYoIWIpcmV0dXJuIG51bGw7Y29uc3RbYyxkLGVdPWI7bWFwLmRlbGV0ZShhKTtjb25zdCBmPW5ldyBIZWFkZXJzKHsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBjaGFyc2V0PXV0Zi04IiwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiOiJkZWZhdWx0LXNyYyAnbm9uZSciLCJYLUNvbnRlbnQtU2VjdXJpdHktUG9saWN5IjoiZGVmYXVsdC1zcmMgJ25vbmUnIiwiWC1XZWJLaXQtQ1NQIjoiZGVmYXVsdC1zcmMgJ25vbmUnIiwiWC1YU1MtUHJvdGVjdGlvbiI6IjE7IG1vZGU9YmxvY2sifSk7bGV0IGc9bmV3IEhlYWRlcnMoZC5oZWFkZXJzfHx7fSk7Zy5oYXMoIkNvbnRlbnQtTGVuZ3RoIikmJmYuc2V0KCJDb250ZW50LUxlbmd0aCIsZy5nZXQoIkNvbnRlbnQtTGVuZ3RoIikpLGcuaGFzKCJDb250ZW50LURpc3Bvc2l0aW9uIikmJmYuc2V0KCJDb250ZW50LURpc3Bvc2l0aW9uIixnLmdldCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSxkLnNpemUmJihjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQiKSxmLnNldCgiQ29udGVudC1MZW5ndGgiLGQuc2l6ZSkpO2xldCBoPSJzdHJpbmciPT10eXBlb2YgZD9kOmQuZmlsZW5hbWU7aCYmKGNvbnNvbGUud2FybigiRGVwcmljYXRlZCIpLGg9ZW5jb2RlVVJJQ29tcG9uZW50KGgpLnJlcGxhY2UoL1snKCldL2csZXNjYXBlKS5yZXBsYWNlKC9cKi9nLCIlMkEiKSxmLnNldCgiQ29udGVudC1EaXNwb3NpdGlvbiIsImF0dGFjaG1lbnQ7IGZpbGVuYW1lKj1VVEYtOCcnIitoKSkseC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UoYyx7aGVhZGVyczpmfSkpLGUucG9zdE1lc3NhZ2Uoe2RlYnVnOiJEb3dubG9hZCBzdGFydGVkIn0pfSk7" }, "lib/streamsaver.js": { "content_type": "text/javascript", "data": "LypTdHJlYW1TYXZlci5qcywgKGMpIEppbW15IFdhcnRpbmcqLwp3aW5kb3cuc3RyZWFtU2F2ZXI9ZnVuY3Rpb24oKXtsZXQgeD1udWxsLGE9ITE7Y29uc3QgYj14PT57dHJ5e3goKX1jYXRjaCh4KXt9fSxjPXdpbmRvdy5XZWJTdHJlYW1zUG9seWZpbGx8fHt9LGQ9d2luZG93LmlzU2VjdXJlQ29udGV4dDtsZXQgZT0vY29uc3RydWN0b3IvaS50ZXN0KHdpbmRvdy5IVE1MRWxlbWVudCl8fCEhd2luZG93LnNhZmFyaXx8ISF3aW5kb3cuV2ViS2l0UG9pbnQ7Y29uc3QgZj1kfHwiTW96QXBwZWFyYW5jZSJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGU/ImlmcmFtZSI6Im5hdmlnYXRlIixnPXtjcmVhdGVXcml0ZVN0cmVhbTprLFdyaXRhYmxlU3RyZWFtOndpbmRvdy5Xcml0YWJsZVN0cmVhbXx8Yy5Xcml0YWJsZVN0cmVhbSxzdXBwb3J0ZWQ6ITAsdmVyc2lvbjp7ZnVsbDoiMi4wLjAiLG1ham9yOjIsbWlub3I6MCxkb3Q6MH0sbWl0bToibGliL3N0cmVhbXNhdmVyLXBpbmcuaHRtbCJ9O2Z1bmN0aW9uIGgoeCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJtZWgiKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3JldHVybiBhLmhpZGRlbj0hMCxhLnNyYz14LGEubG9hZGVkPSExLGEubmFtZT0iaWZyYW1lIixhLmlzSWZyYW1lPSEwLGEucG9zdE1lc3NhZ2U9KCguLi54KT0+YS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKC4uLngpKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT57YS5sb2FkZWQ9ITB9LHtvbmNlOiEwfSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhfWZ1bmN0aW9uIGkoeCl7Y29uc3QgYT0id2lkdGg9MjAwLGhlaWdodD0xMDAiLGI9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGM9e2ZyYW1lOndpbmRvdy5vcGVuKHgsInBvcHVwIixhKSxsb2FkZWQ6ITEsaXNJZnJhbWU6ITEsaXNQb3B1cDohMCxyZW1vdmUoKXtjLmZyYW1lLmNsb3NlKCl9LGFkZEV2ZW50TGlzdGVuZXIoLi4ueCl7Yi5hZGRFdmVudExpc3RlbmVyKC4uLngpfSxkaXNwYXRjaEV2ZW50KC4uLngpe2IuZGlzcGF0Y2hFdmVudCguLi54KX0scmVtb3ZlRXZlbnRMaXN0ZW5lciguLi54KXtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoLi4ueCl9LHBvc3RNZXNzYWdlKC4uLngpe2MuZnJhbWUucG9zdE1lc3NhZ2UoLi4ueCl9fSxkPXg9Pnt4LnNvdXJjZT09PWMuZnJhbWUmJihjLmxvYWRlZD0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZCksYy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgibG9hZCIpKSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZCksY310cnl7bmV3IFJlc3BvbnNlKG5ldyBSZWFkYWJsZVN0cmVhbSksInNlcnZpY2VXb3JrZXIiaW4gbmF2aWdhdG9yfHwoZT0hMCl9Y2F0Y2goeCl7ZT0hMH1mdW5jdGlvbiBqKCl7eHx8KHg9ZD9oKGcubWl0bSk6aShnLm1pdG0pKX1mdW5jdGlvbiBrKGIsYyxkKXtsZXQgaT17c2l6ZTpudWxsLHBhdGhuYW1lOm51bGwsc2lnbmFsOmZ1bmN0aW9uKCl7fSx3cml0YWJsZVN0cmF0ZWd5OnZvaWQgMCxyZWFkYWJsZVN0cmF0ZWd5OnZvaWQgMH0saz0wLGw9bnVsbCxtPW51bGwsbj1udWxsO2lmKE51bWJlci5pc0Zpbml0ZShjKT8oW2QsY109W2MsZF0sY29uc29sZS53YXJuKCJbU3RyZWFtU2F2ZXJdIERlcHJpY2F0ZWQgcGFzcyBhbiBvYmplY3QgYXMgMm5kIGFyZ3VtZW50IHdoZW4gY3JlYXRpbmcgYSB3cml0ZSBzdHJlYW0iKSxpLnNpemU9ZCxpLndyaXRhYmxlU3RyYXRlZ3k9Yyk6YyYmYy5oaWdoV2F0ZXJNYXJrPyhjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gRGVwcmljYXRlZCBwYXNzIGFuIG9iamVjdCBhcyAybmQgYXJndW1lbnQgd2hlbiBjcmVhdGluZyBhIHdyaXRlIHN0cmVhbSIpLGkuc2l6ZT1kLGkud3JpdGFibGVTdHJhdGVneT1jKTppPU9iamVjdC5tZXJnZShpLGN8fHt9LCEwKSwhZSl7aigpLG09bmV3IE1lc3NhZ2VDaGFubmVsLGI9ZW5jb2RlVVJJQ29tcG9uZW50KGIucmVwbGFjZSgvXC8vZywiOiIpKS5yZXBsYWNlKC9bJygpXS9nLGVzY2FwZSkucmVwbGFjZSgvXCovZywiJTJBIik7Y29uc3QgYz17dHJhbnNmZXJyaW5nUmVhZGFibGU6YSxwYXRobmFtZTppLnBhdGhuYW1lfHxNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoLTYpKyIvIitiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IGNoYXJzZXQ9dXRmLTgiLCJDb250ZW50LURpc3Bvc2l0aW9uIjoiYXR0YWNobWVudDsgZmlsZW5hbWUqPVVURi04JyciK2J9fTtpLnNpemUmJihjLmhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl09aS5zaXplKTtjb25zdCBkPVtjLCIqIixbbS5wb3J0Ml1dO2lmKGEpe2NvbnN0IHg9ImlmcmFtZSI9PT1mP3ZvaWQgMDp7dHJhbnNmb3JtKHgsYSl7ays9eC5sZW5ndGgsYS5lbnF1ZXVlKHgpLGwmJihsb2NhdGlvbi5ocmVmPWwsbD1udWxsKX0sZmx1c2goKXtsJiYobG9jYXRpb24uaHJlZj1sKX19LGE9KG49bmV3IGcuVHJhbnNmb3JtU3RyZWFtKHgsaS53cml0YWJsZVN0cmF0ZWd5LGkucmVhZGFibGVTdHJhdGVneSkpLnJlYWRhYmxlO20ucG9ydDEucG9zdE1lc3NhZ2Uoe3JlYWRhYmxlU3RyZWFtOmF9LFthXSl9bS5wb3J0MS5vbm1lc3NhZ2U9KGE9PnthLmRhdGEuZG93bmxvYWQ/Im5hdmlnYXRlIj09PWY/KHgucmVtb3ZlKCkseD1udWxsLGs/bG9jYXRpb24uaHJlZj1hLmRhdGEuZG93bmxvYWQ6bD1hLmRhdGEuZG93bmxvYWQpOih4LmlzUG9wdXAmJih4LnJlbW92ZSgpLCJpZnJhbWUiPT09ZiYmaChnLm1pdG0pKSxoKGEuZGF0YS5kb3dubG9hZCkpOiJ1c2VyIGFib3J0ZWQiPT1hLmRhdGEmJmkuc2lnbmFsKCJ1c2VyIGFib3J0ZWQiKX0pLHgubG9hZGVkP3gucG9zdE1lc3NhZ2UoLi4uZCk6eC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+e3gucG9zdE1lc3NhZ2UoLi4uZCl9LHtvbmNlOiEwfSl9bGV0IG89W107cmV0dXJuIWUmJm4mJm4ud3JpdGFibGV8fG5ldyBnLldyaXRhYmxlU3RyZWFtKHt3cml0ZSh4KXtpZihlKXJldHVybiBvLnB1c2goeCksdm9pZCAwO20ucG9ydDEucG9zdE1lc3NhZ2UoeCksays9eC5sZW5ndGgsbCYmKGxvY2F0aW9uLmhyZWY9bCxsPW51bGwpfSxjbG9zZSgpe2lmKGUpe2NvbnN0IHg9bmV3IEJsb2Iobyx7dHlwZToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBjaGFyc2V0PXV0Zi04In0pLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2EuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKHgpLGEuZG93bmxvYWQ9YixhLmNsaWNrKCl9ZWxzZSBtLnBvcnQxLnBvc3RNZXNzYWdlKCJlbmQiKX0sYWJvcnQoKXtvPVtdLG0ucG9ydDEucG9zdE1lc3NhZ2UoImFib3J0IiksbS5wb3J0MS5vbm1lc3NhZ2U9bnVsbCxtLnBvcnQxLmNsb3NlKCksbS5wb3J0Mi5jbG9zZSgpLG09bnVsbH19LGkud3JpdGFibGVTdHJhdGVneSl9cmV0dXJuIGIoKCk9Pntjb25zdHtyZWFkYWJsZTp4fT1uZXcgVHJhbnNmb3JtU3RyZWFtLGI9bmV3IE1lc3NhZ2VDaGFubmVsO2IucG9ydDEucG9zdE1lc3NhZ2UoeCxbeF0pLGIucG9ydDEuY2xvc2UoKSxiLnBvcnQyLmNsb3NlKCksYT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZywiVHJhbnNmb3JtU3RyZWFtIix7Y29uZmlndXJhYmxlOiExLHdyaXRhYmxlOiExLHZhbHVlOlRyYW5zZm9ybVN0cmVhbX0pfSksZ30oKTs=" }, "lib/webstreams.js": { "content_type": "text/javascript", "data": "LyoqCiAqIE1pbmlmaWVkIGJ5IGpzRGVsaXZyIHVzaW5nIFRlcnNlciB2My4xNC4xLgogKiBPcmlnaW5hbCBmaWxlOiAvbnBtL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDIuMC4yL2Rpc3QvcG9ueWZpbGwuanMKICogCiAqLwohZnVuY3Rpb24oZSxyKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP3IoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0scik6cigoZT1lfHxzZWxmKS5XZWJTdHJlYW1zUG9seWZpbGw9e30pfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9TeW1ib2w6ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiK2UrIikifTt2YXIgdD1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGUpe3JldHVybiBlIT1lfTtmdW5jdGlvbiBvKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGUuc2xpY2UoKX1mdW5jdGlvbiBpKGUpe3JldHVybiExIT09ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXJldHVybiExO2lmKHQoZSkpcmV0dXJuITE7aWYoZTwwKXJldHVybiExO3JldHVybiEwfShlKSYmZSE9PTEvMH1mdW5jdGlvbiBhKGUscix0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHIsdCl9ZnVuY3Rpb24gcyhlLHIsdCxvKXt2YXIgbj1lW3JdO2lmKHZvaWQgMCE9PW4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IobisiIGlzIG5vdCBhIG1ldGhvZCIpO3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGwobixlLG8pfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciB0PVtyXS5jb25jYXQobyk7cmV0dXJuIGwobixlLHQpfX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX1mdW5jdGlvbiB1KGUscix0KXt2YXIgbz1lW3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIGEobyxlLHQpfWZ1bmN0aW9uIGwoZSxyLHQpe3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEoZSxyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gZihlKXtpZihlPU51bWJlcihlKSx0KGUpfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoImhpZ2hXYXRlck1hcmsgcHJvcGVydHkgb2YgYSBxdWV1aW5nIHN0cmF0ZWd5IG11c3QgYmUgbm9uLW5lZ2F0aXZlIGFuZCBub24tTmFOIik7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXtpZih2b2lkIDA9PT1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiAxfTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIHByb3BlcnR5IG9mIGEgcXVldWluZyBzdHJhdGVneSBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocil9fWZ1bmN0aW9uIF8oZSxyLHQpe2Zvcih2YXIgbz0hMSxuPWZ1bmN0aW9uKGUpeyExPT09byYmKG89ITAsdChlKSl9LGk9MCxhPTAscz1lLmxlbmd0aCx1PW5ldyBBcnJheShzKSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWk7IWZ1bmN0aW9uKGUscix0KXtQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwoZSxyLHQpfShlLGZ1bmN0aW9uKGUpe3VbdF09ZSwrK2E9PT1zJiZyKHUpfSxuKSwrK2l9LGM9MCxmPWU7YzxmLmxlbmd0aDtjKyspe2woZltjXSl9fXZhciBoPWZ1bmN0aW9uKCl7fSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX2N1cnNvcj0wLHRoaXMuX3NpemU9MCx0aGlzLl9mcm9udD17X2VsZW1lbnRzOltdLF9uZXh0OnZvaWQgMH0sdGhpcy5fYmFjaz10aGlzLl9mcm9udCx0aGlzLl9jdXJzb3I9MCx0aGlzLl9zaXplPTB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl9iYWNrLHQ9cjsxNjM4Mz09PXIuX2VsZW1lbnRzLmxlbmd0aCYmKHQ9e19lbGVtZW50czpbXSxfbmV4dDp2b2lkIDB9KSxyLl9lbGVtZW50cy5wdXNoKGUpLHQhPT1yJiYodGhpcy5fYmFjaz10LHIuX25leHQ9dCksKyt0aGlzLl9zaXplfSxlLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2Zyb250LHI9ZSx0PXRoaXMuX2N1cnNvcixvPXQrMSxuPWUuX2VsZW1lbnRzLGk9blt0XTtyZXR1cm4gMTYzODQ9PT1vJiYocj1lLl9uZXh0LG89MCksLS10aGlzLl9zaXplLHRoaXMuX2N1cnNvcj1vLGUhPT1yJiYodGhpcy5fZnJvbnQ9ciksblt0XT12b2lkIDAsaX0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXtmb3IodmFyIHI9dGhpcy5fY3Vyc29yLHQ9dGhpcy5fZnJvbnQsbz10Ll9lbGVtZW50czshKHI9PT1vLmxlbmd0aCYmdm9pZCAwPT09dC5fbmV4dHx8cj09PW8ubGVuZ3RoJiYocj0wLDA9PT0obz0odD10Ll9uZXh0KS5fZWxlbWVudHMpLmxlbmd0aCkpOyllKG9bcl0pLCsrcn0sZS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2Zyb250LHI9dGhpcy5fY3Vyc29yO3JldHVybiBlLl9lbGVtZW50c1tyXX0sZX0oKTtmdW5jdGlvbiBwKGUpe3ZhciByPWUuX3F1ZXVlLnNoaWZ0KCk7cmV0dXJuIGUuX3F1ZXVlVG90YWxTaXplLT1yLnNpemUsZS5fcXVldWVUb3RhbFNpemU8MCYmKGUuX3F1ZXVlVG90YWxTaXplPTApLHIudmFsdWV9ZnVuY3Rpb24gbShlLHIsdCl7aWYoIWkodD1OdW1iZXIodCkpKXRocm93IG5ldyBSYW5nZUVycm9yKCJTaXplIG11c3QgYmUgYSBmaW5pdGUsIG5vbi1OYU4sIG5vbi1uZWdhdGl2ZSBudW1iZXIuIik7ZS5fcXVldWUucHVzaCh7dmFsdWU6cixzaXplOnR9KSxlLl9xdWV1ZVRvdGFsU2l6ZSs9dH1mdW5jdGlvbiB5KGUpe2UuX3F1ZXVlPW5ldyBiLGUuX3F1ZXVlVG90YWxTaXplPTB9dmFyIHY9cigiW1tBYm9ydFN0ZXBzXV0iKSx3PXIoIltbRXJyb3JTdGVwc11dIiksZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxyKXt2b2lkIDA9PT1lJiYoZT17fSksdm9pZCAwPT09ciYmKHI9e30pLFIodGhpcyk7dmFyIHQ9ci5zaXplLG89ci5oaWdoV2F0ZXJNYXJrO2lmKHZvaWQgMCE9PWUudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpO3ZhciBuPWQodCk7dm9pZCAwPT09byYmKG89MSksZnVuY3Rpb24oZSxyLHQsbyl7dmFyIG49T2JqZWN0LmNyZWF0ZSh4LnByb3RvdHlwZSk7dmFyIGk9cyhyLCJ3cml0ZSIsMSxbbl0pLGE9cyhyLCJjbG9zZSIsMCxbXSksbD1zKHIsImFib3J0IiwxLFtdKTtEKGUsbixmdW5jdGlvbigpe3JldHVybiB1KHIsInN0YXJ0Iixbbl0pfSxpLGEsbCx0LG8pfSh0aGlzLGUsbz1mKG8pLG4pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxvY2tlZCIse2dldDpmdW5jdGlvbigpe2lmKCExPT09UCh0aGlzKSl0aHJvdyBHKCJsb2NrZWQiKTtyZXR1cm4gVCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PVAodGhpcyk/UHJvbWlzZS5yZWplY3QoRygiYWJvcnQiKSk6ITA9PT1UKHRoaXMpP1Byb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhYm9ydCBhIHN0cmVhbSB0aGF0IGFscmVhZHkgaGFzIGEgd3JpdGVyIikpOnEodGhpcyxlKX0sZS5wcm90b3R5cGUuZ2V0V3JpdGVyPWZ1bmN0aW9uKCl7aWYoITE9PT1QKHRoaXMpKXRocm93IEcoImdldFdyaXRlciIpO3JldHVybiBTKHRoaXMpfSxlfSgpO2Z1bmN0aW9uIFMoZSl7cmV0dXJuIG5ldyBrKGUpfWZ1bmN0aW9uIFIoZSl7ZS5fc3RhdGU9IndyaXRhYmxlIixlLl9zdG9yZWRFcnJvcj12b2lkIDAsZS5fd3JpdGVyPXZvaWQgMCxlLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXI9dm9pZCAwLGUuX3dyaXRlUmVxdWVzdHM9bmV3IGIsZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwLGUuX2Nsb3NlUmVxdWVzdD12b2lkIDAsZS5faW5GbGlnaHRDbG9zZVJlcXVlc3Q9dm9pZCAwLGUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q9dm9pZCAwLGUuX2JhY2twcmVzc3VyZT0hMX1mdW5jdGlvbiBQKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlciIpfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3dyaXRlcn1mdW5jdGlvbiBxKGUscil7dmFyIHQ9ZS5fc3RhdGU7aWYoImNsb3NlZCI9PT10fHwiZXJyb3JlZCI9PT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodm9pZCAwKTtpZih2b2lkIDAhPT1lLl9wZW5kaW5nQWJvcnRSZXF1ZXN0KXJldHVybiBlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0Ll9wcm9taXNlO3ZhciBvPSExOyJlcnJvcmluZyI9PT10JiYobz0hMCxyPXZvaWQgMCk7dmFyIG49bmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0PXtfcHJvbWlzZTp2b2lkIDAsX3Jlc29sdmU6dCxfcmVqZWN0Om4sX3JlYXNvbjpyLF93YXNBbHJlYWR5RXJyb3Jpbmc6b319KTtyZXR1cm4gZS5fcGVuZGluZ0Fib3J0UmVxdWVzdC5fcHJvbWlzZT1uLCExPT09byYmRShlLHIpLG59ZnVuY3Rpb24gaihlLHIpeyJ3cml0YWJsZSIhPT1lLl9zdGF0ZT9DKGUpOkUoZSxyKX1mdW5jdGlvbiBFKGUscil7dmFyIHQ9ZS5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyO2UuX3N0YXRlPSJlcnJvcmluZyIsZS5fc3RvcmVkRXJyb3I9cjt2YXIgbz1lLl93cml0ZXI7dm9pZCAwIT09byYmRihvLHIpLCExPT09ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZS5faW5GbGlnaHRXcml0ZVJlcXVlc3QmJnZvaWQgMD09PWUuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0KXJldHVybiExO3JldHVybiEwfShlKSYmITA9PT10Ll9zdGFydGVkJiZDKGUpfWZ1bmN0aW9uIEMoZSl7ZS5fc3RhdGU9ImVycm9yZWQiLGUuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlclt3XSgpO3ZhciByPWUuX3N0b3JlZEVycm9yO2lmKGUuX3dyaXRlUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbihlKXtlLl9yZWplY3Qocil9KSxlLl93cml0ZVJlcXVlc3RzPW5ldyBiLHZvaWQgMCE9PWUuX3BlbmRpbmdBYm9ydFJlcXVlc3Qpe3ZhciB0PWUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q7aWYoZS5fcGVuZGluZ0Fib3J0UmVxdWVzdD12b2lkIDAsITA9PT10Ll93YXNBbHJlYWR5RXJyb3JpbmcpcmV0dXJuIHQuX3JlamVjdChyKSx2b2lkIE8oZSk7ZS5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyW3ZdKHQuX3JlYXNvbikudGhlbihmdW5jdGlvbigpe3QuX3Jlc29sdmUoKSxPKGUpfSxmdW5jdGlvbihyKXt0Ll9yZWplY3QociksTyhlKX0pfWVsc2UgTyhlKX1mdW5jdGlvbiBBKGUpe3JldHVybiB2b2lkIDAhPT1lLl9jbG9zZVJlcXVlc3R8fHZvaWQgMCE9PWUuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0fWZ1bmN0aW9uIE8oZSl7dm9pZCAwIT09ZS5fY2xvc2VSZXF1ZXN0JiYoZS5fY2xvc2VSZXF1ZXN0Ll9yZWplY3QoZS5fc3RvcmVkRXJyb3IpLGUuX2Nsb3NlUmVxdWVzdD12b2lkIDApO3ZhciByPWUuX3dyaXRlcjt2b2lkIDAhPT1yJiYkKHIsZS5fc3RvcmVkRXJyb3IpfWZ1bmN0aW9uIFcoZSxyKXt2YXIgdD1lLl93cml0ZXI7dm9pZCAwIT09dCYmciE9PWUuX2JhY2twcmVzc3VyZSYmKCEwPT09cj9mdW5jdGlvbihlKXtyZShlKX0odCk6aWUodCkpLGUuX2JhY2twcmVzc3VyZT1yfXZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtpZighMT09PVAoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIHdpdGggYSBXcml0YWJsZVN0cmVhbSBpbnN0YW5jZSIpO2lmKCEwPT09VChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIHN0cmVhbSBoYXMgYWxyZWFkeSBiZWVuIGxvY2tlZCBmb3IgZXhjbHVzaXZlIHdyaXRpbmcgYnkgYW5vdGhlciB3cml0ZXIiKTt0aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtPWUsZS5fd3JpdGVyPXRoaXM7dmFyIHIsdD1lLl9zdGF0ZTtpZigid3JpdGFibGUiPT09dCkhMT09PUEoZSkmJiEwPT09ZS5fYmFja3ByZXNzdXJlP3JlKHRoaXMpOm9lKHRoaXMpLFgodGhpcyk7ZWxzZSBpZigiZXJyb3JpbmciPT09dCl0ZSh0aGlzLGUuX3N0b3JlZEVycm9yKSxYKHRoaXMpO2Vsc2UgaWYoImNsb3NlZCI9PT10KW9lKHRoaXMpLFgocj10aGlzKSxlZShyKTtlbHNle3ZhciBvPWUuX3N0b3JlZEVycm9yO3RlKHRoaXMsbyksWih0aGlzLG8pfX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjbG9zZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXoodGhpcyk/UHJvbWlzZS5yZWplY3QoSigiY2xvc2VkIikpOnRoaXMuX2Nsb3NlZFByb21pc2V9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXNpcmVkU2l6ZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09eih0aGlzKSl0aHJvdyBKKCJkZXNpcmVkU2l6ZSIpO2lmKHZvaWQgMD09PXRoaXMuX293bmVyV3JpdGFibGVTdHJlYW0pdGhyb3cgSygiZGVzaXJlZFNpemUiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSx0PXIuX3N0YXRlO2lmKCJlcnJvcmVkIj09PXR8fCJlcnJvcmluZyI9PT10KXJldHVybiBudWxsO2lmKCJjbG9zZWQiPT09dClyZXR1cm4gMDtyZXR1cm4gWShyLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXIpfSh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInJlYWR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITE9PT16KHRoaXMpP1Byb21pc2UucmVqZWN0KEooInJlYWR5IikpOnRoaXMuX3JlYWR5UHJvbWlzZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PXoodGhpcyk/UHJvbWlzZS5yZWplY3QoSigiYWJvcnQiKSk6dm9pZCAwPT09dGhpcy5fb3duZXJXcml0YWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChLKCJhYm9ydCIpKTpmdW5jdGlvbihlLHIpe3JldHVybiBxKGUuX293bmVyV3JpdGFibGVTdHJlYW0scil9KHRoaXMsZSl9LGUucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7aWYoITE9PT16KHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChKKCJjbG9zZSIpKTt2YXIgZT10aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtO3JldHVybiB2b2lkIDA9PT1lP1Byb21pc2UucmVqZWN0KEsoImNsb3NlIikpOiEwPT09QShlKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJjYW5ub3QgY2xvc2UgYW4gYWxyZWFkeS1jbG9zaW5nIHN0cmVhbSIpKTpCKHRoaXMpfSxlLnByb3RvdHlwZS5yZWxlYXNlTG9jaz1mdW5jdGlvbigpe2lmKCExPT09eih0aGlzKSl0aHJvdyBKKCJyZWxlYXNlTG9jayIpO3ZvaWQgMCE9PXRoaXMuX293bmVyV3JpdGFibGVTdHJlYW0mJkwodGhpcyl9LGUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3JldHVybiExPT09eih0aGlzKT9Qcm9taXNlLnJlamVjdChKKCJ3cml0ZSIpKTp2b2lkIDA9PT10aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtP1Byb21pc2UucmVqZWN0KEsoIndyaXRlIHRvIikpOk0odGhpcyxlKX0sZX0oKTtmdW5jdGlvbiB6KGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX293bmVyV3JpdGFibGVTdHJlYW0iKX1mdW5jdGlvbiBCKGUpe3ZhciByPWUuX293bmVyV3JpdGFibGVTdHJlYW0sdD1yLl9zdGF0ZTtpZigiY2xvc2VkIj09PXR8fCJlcnJvcmVkIj09PXQpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIlRoZSBzdHJlYW0gKGluICIrdCsiIHN0YXRlKSBpcyBub3QgaW4gdGhlIHdyaXRhYmxlIHN0YXRlIGFuZCBjYW5ub3QgYmUgY2xvc2VkIikpO3ZhciBvLG49bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgbz17X3Jlc29sdmU6ZSxfcmVqZWN0OnR9O3IuX2Nsb3NlUmVxdWVzdD1vfSk7cmV0dXJuITA9PT1yLl9iYWNrcHJlc3N1cmUmJiJ3cml0YWJsZSI9PT10JiZpZShlKSxtKG89ci5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyLCJjbG9zZSIsMCksSChvKSxufWZ1bmN0aW9uIEkoZSxyKXsicGVuZGluZyI9PT1lLl9jbG9zZWRQcm9taXNlU3RhdGU/JChlLHIpOmZ1bmN0aW9uKGUscil7WihlLHIpfShlLHIpfWZ1bmN0aW9uIEYoZSxyKXsicGVuZGluZyI9PT1lLl9yZWFkeVByb21pc2VTdGF0ZT9uZShlLHIpOmZ1bmN0aW9uKGUscil7dGUoZSxyKX0oZSxyKX1mdW5jdGlvbiBMKGUpe3ZhciByPWUuX293bmVyV3JpdGFibGVTdHJlYW0sdD1uZXcgVHlwZUVycm9yKCJXcml0ZXIgd2FzIHJlbGVhc2VkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgc3RyZWFtJ3MgY2xvc2VkbmVzcyIpO0YoZSx0KSxJKGUsdCksci5fd3JpdGVyPXZvaWQgMCxlLl9vd25lcldyaXRhYmxlU3RyZWFtPXZvaWQgMH1mdW5jdGlvbiBNKGUscil7dmFyIHQ9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSxvPXQuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlcixuPWZ1bmN0aW9uKGUscil7dHJ5e3JldHVybiBlLl9zdHJhdGVneVNpemVBbGdvcml0aG0ocil9Y2F0Y2gocil7cmV0dXJuIFUoZSxyKSwxfX0obyxyKTtpZih0IT09ZS5fb3duZXJXcml0YWJsZVN0cmVhbSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoSygid3JpdGUgdG8iKSk7dmFyIGk9dC5fc3RhdGU7aWYoImVycm9yZWQiPT09aSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodC5fc3RvcmVkRXJyb3IpO2lmKCEwPT09QSh0KXx8ImNsb3NlZCI9PT1pKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIGlzIGNsb3Npbmcgb3IgY2xvc2VkIGFuZCBjYW5ub3QgYmUgd3JpdHRlbiB0byIpKTtpZigiZXJyb3JpbmciPT09aSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodC5fc3RvcmVkRXJyb3IpO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLHQpe3ZhciBvPXtfcmVzb2x2ZTpyLF9yZWplY3Q6dH07ZS5fd3JpdGVSZXF1ZXN0cy5wdXNoKG8pfSl9KHQpO3JldHVybiBmdW5jdGlvbihlLHIsdCl7dmFyIG89e2NodW5rOnJ9O3RyeXttKGUsbyx0KX1jYXRjaChyKXtyZXR1cm4gdm9pZCBVKGUscil9dmFyIG49ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtO2lmKCExPT09QShuKSYmIndyaXRhYmxlIj09PW4uX3N0YXRlKXt2YXIgaT1WKGUpO1cobixpKX1IKGUpfShvLHIsbiksYX12YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCBleHBsaWNpdGx5Iil9cmV0dXJuIGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCExPT09ZnVuY3Rpb24oZSl7aWYoIW8oZSkpcmV0dXJuITE7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtIikpcmV0dXJuITE7cmV0dXJuITB9KHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIik7IndyaXRhYmxlIj09PXRoaXMuX2NvbnRyb2xsZWRXcml0YWJsZVN0cmVhbS5fc3RhdGUmJlEodGhpcyxlKX0sZS5wcm90b3R5cGVbdl09ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fYWJvcnRBbGdvcml0aG0oZSk7cmV0dXJuIE4odGhpcykscn0sZS5wcm90b3R5cGVbd109ZnVuY3Rpb24oKXt5KHRoaXMpfSxlfSgpO2Z1bmN0aW9uIEQoZSxyLHQsbyxuLGksYSxzKXtyLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW09ZSxlLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXI9cixyLl9xdWV1ZT12b2lkIDAsci5fcXVldWVUb3RhbFNpemU9dm9pZCAwLHkociksci5fc3RhcnRlZD0hMSxyLl9zdHJhdGVneVNpemVBbGdvcml0aG09cyxyLl9zdHJhdGVneUhXTT1hLHIuX3dyaXRlQWxnb3JpdGhtPW8sci5fY2xvc2VBbGdvcml0aG09bixyLl9hYm9ydEFsZ29yaXRobT1pO3ZhciB1PVYocik7VyhlLHUpO3ZhciBsPXQoKTtQcm9taXNlLnJlc29sdmUobCkudGhlbihmdW5jdGlvbigpe3IuX3N0YXJ0ZWQ9ITAsSChyKX0sZnVuY3Rpb24odCl7ci5fc3RhcnRlZD0hMCxqKGUsdCl9KS5jYXRjaChoKX1mdW5jdGlvbiBOKGUpe2UuX3dyaXRlQWxnb3JpdGhtPXZvaWQgMCxlLl9jbG9zZUFsZ29yaXRobT12b2lkIDAsZS5fYWJvcnRBbGdvcml0aG09dm9pZCAwLGUuX3N0cmF0ZWd5U2l6ZUFsZ29yaXRobT12b2lkIDB9ZnVuY3Rpb24gWShlKXtyZXR1cm4gZS5fc3RyYXRlZ3lIV00tZS5fcXVldWVUb3RhbFNpemV9ZnVuY3Rpb24gSChlKXt2YXIgcj1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW07aWYoITEhPT1lLl9zdGFydGVkJiZ2b2lkIDA9PT1yLl9pbkZsaWdodFdyaXRlUmVxdWVzdClpZigiZXJyb3JpbmciIT09ci5fc3RhdGUpe2lmKDAhPT1lLl9xdWV1ZS5sZW5ndGgpe3ZhciB0PWUuX3F1ZXVlLnBlZWsoKS52YWx1ZTsiY2xvc2UiPT09dD9mdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW07KGZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0PWUuX2Nsb3NlUmVxdWVzdCxlLl9jbG9zZVJlcXVlc3Q9dm9pZCAwfSkocikscChlKTt2YXIgdD1lLl9jbG9zZUFsZ29yaXRobSgpO04oZSksdC50aGVuKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0Ll9yZXNvbHZlKHZvaWQgMCksZS5faW5GbGlnaHRDbG9zZVJlcXVlc3Q9dm9pZCAwLCJlcnJvcmluZyI9PT1lLl9zdGF0ZSYmKGUuX3N0b3JlZEVycm9yPXZvaWQgMCx2b2lkIDAhPT1lLl9wZW5kaW5nQWJvcnRSZXF1ZXN0JiYoZS5fcGVuZGluZ0Fib3J0UmVxdWVzdC5fcmVzb2x2ZSgpLGUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q9dm9pZCAwKSksZS5fc3RhdGU9ImNsb3NlZCI7dmFyIHI9ZS5fd3JpdGVyO3ZvaWQgMCE9PXImJmVlKHIpfShyKX0sZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUscil7ZS5faW5GbGlnaHRDbG9zZVJlcXVlc3QuX3JlamVjdChyKSxlLl9pbkZsaWdodENsb3NlUmVxdWVzdD12b2lkIDAsdm9pZCAwIT09ZS5fcGVuZGluZ0Fib3J0UmVxdWVzdCYmKGUuX3BlbmRpbmdBYm9ydFJlcXVlc3QuX3JlamVjdChyKSxlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0PXZvaWQgMCksaihlLHIpfShyLGUpfSkuY2F0Y2goaCl9KGUpOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtOyhmdW5jdGlvbihlKXtlLl9pbkZsaWdodFdyaXRlUmVxdWVzdD1lLl93cml0ZVJlcXVlc3RzLnNoaWZ0KCl9KSh0KSxlLl93cml0ZUFsZ29yaXRobShyKS50aGVuKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0V3JpdGVSZXF1ZXN0Ll9yZXNvbHZlKHZvaWQgMCksZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwfSh0KTt2YXIgcj10Ll9zdGF0ZTtpZihwKGUpLCExPT09QSh0KSYmIndyaXRhYmxlIj09PXIpe3ZhciBvPVYoZSk7Vyh0LG8pfUgoZSl9LGZ1bmN0aW9uKHIpeyJ3cml0YWJsZSI9PT10Ll9zdGF0ZSYmTihlKSxmdW5jdGlvbihlLHIpe2UuX2luRmxpZ2h0V3JpdGVSZXF1ZXN0Ll9yZWplY3QociksZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwLGooZSxyKX0odCxyKX0pLmNhdGNoKGgpfShlLHQuY2h1bmspfX1lbHNlIEMocil9ZnVuY3Rpb24gVShlLHIpeyJ3cml0YWJsZSI9PT1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW0uX3N0YXRlJiZRKGUscil9ZnVuY3Rpb24gVihlKXtyZXR1cm4gWShlKTw9MH1mdW5jdGlvbiBRKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtO04oZSksRSh0LHIpfWZ1bmN0aW9uIEcoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgV3JpdGFibGVTdHJlYW0iKX1mdW5jdGlvbiBKKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIucHJvdG90eXBlLiIrZSsiIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIiKX1mdW5jdGlvbiBLKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJDYW5ub3QgIitlKyIgYSBzdHJlYW0gdXNpbmcgYSByZWxlYXNlZCB3cml0ZXIiKX1mdW5jdGlvbiBYKGUpe2UuX2Nsb3NlZFByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXtlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9cixlLl9jbG9zZWRQcm9taXNlX3JlamVjdD10LGUuX2Nsb3NlZFByb21pc2VTdGF0ZT0icGVuZGluZyJ9KX1mdW5jdGlvbiBaKGUscil7WChlKSwkKGUscil9ZnVuY3Rpb24gJChlLHIpe2UuX2Nsb3NlZFByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXt9KSxlLl9jbG9zZWRQcm9taXNlX3JlamVjdChyKSxlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlU3RhdGU9InJlamVjdGVkIn1mdW5jdGlvbiBlZShlKXtlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmUodm9pZCAwKSxlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlU3RhdGU9InJlc29sdmVkIn1mdW5jdGlvbiByZShlKXtlLl9yZWFkeVByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXtlLl9yZWFkeVByb21pc2VfcmVzb2x2ZT1yLGUuX3JlYWR5UHJvbWlzZV9yZWplY3Q9dH0pLGUuX3JlYWR5UHJvbWlzZVN0YXRlPSJwZW5kaW5nIn1mdW5jdGlvbiB0ZShlLHIpe3JlKGUpLG5lKGUscil9ZnVuY3Rpb24gb2UoZSl7cmUoZSksaWUoZSl9ZnVuY3Rpb24gbmUoZSxyKXtlLl9yZWFkeVByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXt9KSxlLl9yZWFkeVByb21pc2VfcmVqZWN0KHIpLGUuX3JlYWR5UHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9yZWFkeVByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9yZWFkeVByb21pc2VTdGF0ZT0icmVqZWN0ZWQifWZ1bmN0aW9uIGllKGUpe2UuX3JlYWR5UHJvbWlzZV9yZXNvbHZlKHZvaWQgMCksZS5fcmVhZHlQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX3JlYWR5UHJvbWlzZV9yZWplY3Q9dm9pZCAwLGUuX3JlYWR5UHJvbWlzZVN0YXRlPSJmdWxmaWxsZWQifXZhciBhZSxzZSx1ZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpJiZNYXRoLmZsb29yKGUpPT09ZX07InN5bWJvbCI9PXR5cGVvZiByLmFzeW5jSXRlcmF0b3ImJigoYWU9e30pW3IuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sc2U9YWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlLHIuYXN5bmNJdGVyYXRvcix7ZW51bWVyYWJsZTohMX0pKTt2YXIgbGU9cigiW1tDYW5jZWxTdGVwc11dIiksY2U9cigiW1tQdWxsU3RlcHNdXSIpLGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIpe3ZvaWQgMD09PWUmJihlPXt9KSx2b2lkIDA9PT1yJiYocj17fSksYmUodGhpcyk7dmFyIHQ9ci5zaXplLG89ci5oaWdoV2F0ZXJNYXJrLG49ZS50eXBlO2lmKCJieXRlcyI9PT1TdHJpbmcobikpe2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRoZSBzdHJhdGVneSBmb3IgYSBieXRlIHN0cmVhbSBjYW5ub3QgaGF2ZSBhIHNpemUgZnVuY3Rpb24iKTt2b2lkIDA9PT1vJiYobz0wKSxmdW5jdGlvbihlLHIsdCl7dmFyIG89T2JqZWN0LmNyZWF0ZShYZS5wcm90b3R5cGUpO3ZhciBuPXMociwicHVsbCIsMCxbb10pLGk9cyhyLCJjYW5jZWwiLDEsW10pLGE9ci5hdXRvQWxsb2NhdGVDaHVua1NpemU7aWYodm9pZCAwIT09YSYmKGE9TnVtYmVyKGEpLCExPT09dWUoYSl8fGE8PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJhdXRvQWxsb2NhdGVDaHVua1NpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTshZnVuY3Rpb24oZSxyLHQsbyxuLGksYSl7ci5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbT1lLHIuX3B1bGxBZ2Fpbj0hMSxyLl9wdWxsaW5nPSExLHIuX2J5b2JSZXF1ZXN0PXZvaWQgMCxyLl9xdWV1ZT1yLl9xdWV1ZVRvdGFsU2l6ZT12b2lkIDAseShyKSxyLl9jbG9zZVJlcXVlc3RlZD0hMSxyLl9zdGFydGVkPSExLHIuX3N0cmF0ZWd5SFdNPWYoaSksci5fcHVsbEFsZ29yaXRobT1vLHIuX2NhbmNlbEFsZ29yaXRobT1uLHIuX2F1dG9BbGxvY2F0ZUNodW5rU2l6ZT1hLHIuX3BlbmRpbmdQdWxsSW50b3M9bmV3IGIsZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyPXI7dmFyIHM9dCgpO1Byb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKCl7ci5fc3RhcnRlZD0hMCxlcihyKX0sZnVuY3Rpb24oZSl7ZHIocixlKX0pLmNhdGNoKGgpfShlLG8sZnVuY3Rpb24oKXtyZXR1cm4gdShyLCJzdGFydCIsW29dKX0sbixpLHQsYSl9KHRoaXMsZSxvPWYobykpfWVsc2V7aWYodm9pZCAwIT09bil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpO3ZhciBpPWQodCk7dm9pZCAwPT09byYmKG89MSksZnVuY3Rpb24oZSxyLHQsbyl7dmFyIG49T2JqZWN0LmNyZWF0ZShNZS5wcm90b3R5cGUpO3ZhciBpPXMociwicHVsbCIsMCxbbl0pLGE9cyhyLCJjYW5jZWwiLDEsW10pO0plKGUsbixmdW5jdGlvbigpe3JldHVybiB1KHIsInN0YXJ0Iixbbl0pfSxpLGEsdCxvKX0odGhpcyxlLG89ZihvKSxpKX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9ja2VkIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigibG9ja2VkIik7cmV0dXJuIG1lKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PXBlKHRoaXMpP1Byb21pc2UucmVqZWN0KGJyKCJjYW5jZWwiKSk6ITA9PT1tZSh0aGlzKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FuY2VsIGEgc3RyZWFtIHRoYXQgYWxyZWFkeSBoYXMgYSByZWFkZXIiKSk6U2UodGhpcyxlKX0sZS5wcm90b3R5cGUuZ2V0UmVhZGVyPWZ1bmN0aW9uKGUpe3ZhciByPSh2b2lkIDA9PT1lP3t9OmUpLm1vZGU7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigiZ2V0UmVhZGVyIik7aWYodm9pZCAwPT09cilyZXR1cm4gX2UodGhpcywhMCk7aWYoImJ5b2IiPT09KHI9U3RyaW5nKHIpKSlyZXR1cm4gZnVuY3Rpb24oZSxyKXt2b2lkIDA9PT1yJiYocj0hMSk7dmFyIHQ9bmV3IFdlKGUpO3JldHVybiB0Ll9mb3JBdXRob3JDb2RlPXIsdH0odGhpcywhMCk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiKX0sZS5wcm90b3R5cGUucGlwZVRocm91Z2g9ZnVuY3Rpb24oZSxyKXt2YXIgdD1lLndyaXRhYmxlLG89ZS5yZWFkYWJsZSxuPXZvaWQgMD09PXI/e306cixpPW4ucHJldmVudENsb3NlLGE9bi5wcmV2ZW50QWJvcnQscz1uLnByZXZlbnRDYW5jZWwsdT1uLnNpZ25hbDtpZighMT09PXBlKHRoaXMpKXRocm93IGJyKCJwaXBlVGhyb3VnaCIpO2lmKCExPT09UCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ3cml0YWJsZSBhcmd1bWVudCB0byBwaXBlVGhyb3VnaCBtdXN0IGJlIGEgV3JpdGFibGVTdHJlYW0iKTtpZighMT09PXBlKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoInJlYWRhYmxlIGFyZ3VtZW50IHRvIHBpcGVUaHJvdWdoIG11c3QgYmUgYSBSZWFkYWJsZVN0cmVhbSIpO2lmKGk9Qm9vbGVhbihpKSxhPUJvb2xlYW4oYSkscz1Cb29sZWFuKHMpLHZvaWQgMCE9PXUmJiFocih1KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gncyBzaWduYWwgb3B0aW9uIG11c3QgYmUgYW4gQWJvcnRTaWduYWwiKTtpZighMD09PW1lKHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBjYW5ub3QgYmUgdXNlZCBvbiBhIGxvY2tlZCBSZWFkYWJsZVN0cmVhbSIpO2lmKCEwPT09VCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggY2Fubm90IGJlIHVzZWQgb24gYSBsb2NrZWQgV3JpdGFibGVTdHJlYW0iKTtyZXR1cm4gdmUodGhpcyx0LGksYSxzLHUpLmNhdGNoKGZ1bmN0aW9uKCl7fSksb30sZS5wcm90b3R5cGUucGlwZVRvPWZ1bmN0aW9uKGUscil7dmFyIHQ9dm9pZCAwPT09cj97fTpyLG89dC5wcmV2ZW50Q2xvc2Usbj10LnByZXZlbnRBYm9ydCxpPXQucHJldmVudENhbmNlbCxhPXQuc2lnbmFsO3JldHVybiExPT09cGUodGhpcyk/UHJvbWlzZS5yZWplY3QoYnIoInBpcGVUbyIpKTohMT09PVAoZSk/UHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbydzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBXcml0YWJsZVN0cmVhbSIpKToobz1Cb29sZWFuKG8pLG49Qm9vbGVhbihuKSxpPUJvb2xlYW4oaSksdm9pZCAwPT09YXx8aHIoYSk/ITA9PT1tZSh0aGlzKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIGNhbm5vdCBiZSB1c2VkIG9uIGEgbG9ja2VkIFJlYWRhYmxlU3RyZWFtIikpOiEwPT09VChlKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIGNhbm5vdCBiZSB1c2VkIG9uIGEgbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOnZlKHRoaXMsZSxvLG4saSxhKTpQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvJ3Mgc2lnbmFsIG9wdGlvbiBtdXN0IGJlIGFuIEFib3J0U2lnbmFsIikpKX0sZS5wcm90b3R5cGUudGVlPWZ1bmN0aW9uKCl7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigidGVlIik7dmFyIGU9ZnVuY3Rpb24oZSxyKXt2YXIgdCxvLGksYSxzLHU9X2UoZSksbD0hMSxjPSExLGY9ITEsZD1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtzPWV9KTtmdW5jdGlvbiBfKCl7cmV0dXJuIExlKHUpLnRoZW4oZnVuY3Rpb24oZSl7aWYoITAhPT1sKXt2YXIgcj1lLmRvbmU7aWYoITA9PT1yKXJldHVybiExPT09YyYmSGUoaS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyKSwhMT09PWYmJkhlKGEuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciksdm9pZChsPSEwKTt2YXIgdD1lLnZhbHVlLG89dCxuPXQ7ITE9PT1jJiZVZShpLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsbyksITE9PT1mJiZVZShhLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsbil9fSl9ZnVuY3Rpb24gaCgpe31yZXR1cm4gaT1oZShoLF8sZnVuY3Rpb24ocil7aWYoYz0hMCx0PXIsITA9PT1mKXt2YXIgaT1uKFt0LG9dKSxhPVNlKGUsaSk7cyhhKX1yZXR1cm4gZH0pLGE9aGUoaCxfLGZ1bmN0aW9uKHIpe2lmKGY9ITAsbz1yLCEwPT09Yyl7dmFyIGk9bihbdCxvXSksYT1TZShlLGkpO3MoYSl9cmV0dXJuIGR9KSx1Ll9jbG9zZWRQcm9taXNlLmNhdGNoKGZ1bmN0aW9uKGUpe1ZlKGkuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcixlKSxWZShhLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsZSl9KSxbaSxhXX0odGhpcyk7cmV0dXJuIG4oZSl9LGUucHJvdG90eXBlLmdldEl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3ZhciByPSh2b2lkIDA9PT1lP3t9OmUpLnByZXZlbnRDYW5jZWw7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigiZ2V0SXRlcmF0b3IiKTt2YXIgdD1fZSh0aGlzKSxvPU9iamVjdC5jcmVhdGUoZGUpO3JldHVybiBvLl9hc3luY0l0ZXJhdG9yUmVhZGVyPXQsby5fcHJldmVudENhbmNlbD1Cb29sZWFuKHIpLG99LGV9KCksZGU9e25leHQ6ZnVuY3Rpb24oKXtpZighMT09PXllKHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChwcigibmV4dCIpKTt2YXIgZT10aGlzLl9hc3luY0l0ZXJhdG9yUmVhZGVyO3JldHVybiB2b2lkIDA9PT1lLl9vd25lclJlYWRhYmxlU3RyZWFtP1Byb21pc2UucmVqZWN0KG1yKCJpdGVyYXRlIikpOkxlKGUpLnRoZW4oZnVuY3Rpb24ocil7dmFyIHQ9ci5kb25lO3JldHVybiB0JiZGZShlKSxQZShyLnZhbHVlLHQsITApfSl9LHJldHVybjpmdW5jdGlvbihlKXtpZighMT09PXllKHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChwcigibmV4dCIpKTt2YXIgcj10aGlzLl9hc3luY0l0ZXJhdG9yUmVhZGVyO2lmKHZvaWQgMD09PXIuX293bmVyUmVhZGFibGVTdHJlYW0pcmV0dXJuIFByb21pc2UucmVqZWN0KG1yKCJmaW5pc2ggaXRlcmF0aW5nIikpO2lmKHIuX3JlYWRSZXF1ZXN0cy5sZW5ndGg+MClyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiVHJpZWQgdG8gcmVsZWFzZSBhIHJlYWRlciBsb2NrIHdoZW4gdGhhdCByZWFkZXIgaGFzIHBlbmRpbmcgcmVhZCgpIGNhbGxzIHVuLXNldHRsZWQiKSk7aWYoITE9PT10aGlzLl9wcmV2ZW50Q2FuY2VsKXt2YXIgdD1JZShyLGUpO3JldHVybiBGZShyKSx0LnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUGUoZSwhMCwhMCl9KX1yZXR1cm4gRmUociksUHJvbWlzZS5yZXNvbHZlKFBlKGUsITAsITApKX19O2Z1bmN0aW9uIF9lKGUscil7dm9pZCAwPT09ciYmKHI9ITEpO3ZhciB0PW5ldyBPZShlKTtyZXR1cm4gdC5fZm9yQXV0aG9yQ29kZT1yLHR9ZnVuY3Rpb24gaGUoZSxyLHQsbyxuKXt2b2lkIDA9PT1vJiYobz0xKSx2b2lkIDA9PT1uJiYobj1mdW5jdGlvbigpe3JldHVybiAxfSk7dmFyIGk9T2JqZWN0LmNyZWF0ZShmZS5wcm90b3R5cGUpO3JldHVybiBiZShpKSxKZShpLE9iamVjdC5jcmVhdGUoTWUucHJvdG90eXBlKSxlLHIsdCxvLG4pLGl9ZnVuY3Rpb24gYmUoZSl7ZS5fc3RhdGU9InJlYWRhYmxlIixlLl9yZWFkZXI9dm9pZCAwLGUuX3N0b3JlZEVycm9yPXZvaWQgMCxlLl9kaXN0dXJiZWQ9ITF9ZnVuY3Rpb24gcGUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfcmVhZGFibGVTdHJlYW1Db250cm9sbGVyIil9ZnVuY3Rpb24gbWUoZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3JlYWRlcn1mdW5jdGlvbiB5ZShlKXtyZXR1cm4hIW8oZSkmJiEhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIl9hc3luY0l0ZXJhdG9yUmVhZGVyIil9ZnVuY3Rpb24gdmUoZSxyLHQsbyxuLGkpe3ZhciBhPV9lKGUpLHM9UyhyKSx1PSExLGw9UHJvbWlzZS5yZXNvbHZlKCk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZil7dmFyIGQsYixwLG07aWYodm9pZCAwIT09aSl7aWYoZD1mdW5jdGlvbigpe3ZhciB0PW5ldyBET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIiksaT1bXTshMT09PW8mJmkucHVzaChmdW5jdGlvbigpe3JldHVybiJ3cml0YWJsZSI9PT1yLl9zdGF0ZT9xKHIsdCk6UHJvbWlzZS5yZXNvbHZlKCl9KSwhMT09PW4mJmkucHVzaChmdW5jdGlvbigpe3JldHVybiJyZWFkYWJsZSI9PT1lLl9zdGF0ZT9TZShlLHQpOlByb21pc2UucmVzb2x2ZSgpfSksZyhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHIsdCl7dmFyIG8sbjt2b2lkIDA9PT10JiYodD12b2lkIDApO3ZhciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUscil7bz1lLG49cn0pO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbihlKXt0aHJvdyBlfSksXyhlLGZ1bmN0aW9uKGUpe3RyeXt2YXIgdD1yKGUpO28odCl9Y2F0Y2goZSl7bihlKX19LGZ1bmN0aW9uKGUpe3RyeXt2YXIgcj10KGUpO28ocil9Y2F0Y2goZSl7bihlKX19KSxpfShpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSksZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX0sITAsdCl9LCEwPT09aS5hYm9ydGVkKXJldHVybiB2b2lkIGQoKTtpLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkKX1pZih3KGUsYS5fY2xvc2VkUHJvbWlzZSxmdW5jdGlvbihlKXshMT09PW8/ZyhmdW5jdGlvbigpe3JldHVybiBxKHIsZSl9LCEwLGUpOlMoITAsZSl9KSx3KHIscy5fY2xvc2VkUHJvbWlzZSxmdW5jdGlvbihyKXshMT09PW4/ZyhmdW5jdGlvbigpe3JldHVybiBTZShlLHIpfSwhMCxyKTpTKCEwLHIpfSksYj1lLHA9YS5fY2xvc2VkUHJvbWlzZSxtPWZ1bmN0aW9uKCl7ITE9PT10P2coZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSx0PXIuX3N0YXRlO3JldHVybiEwPT09QShyKXx8ImNsb3NlZCI9PT10P1Byb21pc2UucmVzb2x2ZSgpOiJlcnJvcmVkIj09PXQ/UHJvbWlzZS5yZWplY3Qoci5fc3RvcmVkRXJyb3IpOkIoZSl9KHMpfSk6UygpfSwiY2xvc2VkIj09PWIuX3N0YXRlP20oKTpwLnRoZW4obSkuY2F0Y2goaCksITA9PT1BKHIpfHwiY2xvc2VkIj09PXIuX3N0YXRlKXt2YXIgeT1uZXcgVHlwZUVycm9yKCJ0aGUgZGVzdGluYXRpb24gd3JpdGFibGUgc3RyZWFtIGNsb3NlZCBiZWZvcmUgYWxsIGRhdGEgY291bGQgYmUgcGlwZWQgdG8gaXQiKTshMT09PW4/ZyhmdW5jdGlvbigpe3JldHVybiBTZShlLHkpfSwhMCx5KTpTKCEwLHkpfWZ1bmN0aW9uIHYoKXt2YXIgZT1sO3JldHVybiBsLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZSE9PWw/digpOnZvaWQgMH0pfWZ1bmN0aW9uIHcoZSxyLHQpeyJlcnJvcmVkIj09PWUuX3N0YXRlP3QoZS5fc3RvcmVkRXJyb3IpOnIuY2F0Y2godCkuY2F0Y2goaCl9ZnVuY3Rpb24gZyhlLHQsbyl7ZnVuY3Rpb24gbigpe2UoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIFIodCxvKX0sZnVuY3Rpb24oZSl7cmV0dXJuIFIoITAsZSl9KS5jYXRjaChoKX0hMCE9PXUmJih1PSEwLCJ3cml0YWJsZSI9PT1yLl9zdGF0ZSYmITE9PT1BKHIpP3YoKS50aGVuKG4pOm4oKSl9ZnVuY3Rpb24gUyhlLHQpeyEwIT09dSYmKHU9ITAsIndyaXRhYmxlIj09PXIuX3N0YXRlJiYhMT09PUEocik/digpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUihlLHQpfSkuY2F0Y2goaCk6UihlLHQpKX1mdW5jdGlvbiBSKGUscil7TChzKSxGZShhKSx2b2lkIDAhPT1pJiZpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixkKSxlP2Yocik6Yyh2b2lkIDApfW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uIHQobyl7bz9lKCk6KCEwPT09dT9Qcm9taXNlLnJlc29sdmUoITApOnMuX3JlYWR5UHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIExlKGEpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZSx0PWUuZG9uZTtyZXR1cm4hMD09PXR8fChsPU0ocyxyKS5jYXRjaChmdW5jdGlvbigpe30pLCExKX0pfSkpLnRoZW4odCxyKX0oITEpfSkuY2F0Y2goaCl9KX1mdW5jdGlvbiB3ZShlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXt2YXIgbz17X3Jlc29sdmU6cixfcmVqZWN0OnR9O2UuX3JlYWRlci5fcmVhZEludG9SZXF1ZXN0cy5wdXNoKG8pfSl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsdCl7dmFyIG89e19yZXNvbHZlOnIsX3JlamVjdDp0fTtlLl9yZWFkZXIuX3JlYWRSZXF1ZXN0cy5wdXNoKG8pfSl9ZnVuY3Rpb24gU2UoZSxyKXtyZXR1cm4gZS5fZGlzdHVyYmVkPSEwLCJjbG9zZWQiPT09ZS5fc3RhdGU/UHJvbWlzZS5yZXNvbHZlKHZvaWQgMCk6ImVycm9yZWQiPT09ZS5fc3RhdGU/UHJvbWlzZS5yZWplY3QoZS5fc3RvcmVkRXJyb3IpOihSZShlKSxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJbbGVdKHIpLnRoZW4oZnVuY3Rpb24oKXt9KSl9ZnVuY3Rpb24gUmUoZSl7ZS5fc3RhdGU9ImNsb3NlZCI7dmFyIHI9ZS5fcmVhZGVyO3ZvaWQgMCE9PXImJih6ZShyKSYmKHIuX3JlYWRSZXF1ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuX3Jlc29sdmUoUGUodm9pZCAwLCEwLHIuX2ZvckF1dGhvckNvZGUpKX0pLHIuX3JlYWRSZXF1ZXN0cz1uZXcgYiksU3IocikpfWZ1bmN0aW9uIFBlKGUscix0KXt2YXIgbz1udWxsOyEwPT09dCYmKG89T2JqZWN0LnByb3RvdHlwZSk7dmFyIG49T2JqZWN0LmNyZWF0ZShvKTtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT1yLG59ZnVuY3Rpb24gVGUoZSxyKXtlLl9zdGF0ZT0iZXJyb3JlZCIsZS5fc3RvcmVkRXJyb3I9cjt2YXIgdD1lLl9yZWFkZXI7dm9pZCAwIT09dCYmKHplKHQpPyh0Ll9yZWFkUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbihlKXtlLl9yZWplY3Qocil9KSx0Ll9yZWFkUmVxdWVzdHM9bmV3IGIpOih0Ll9yZWFkSW50b1JlcXVlc3RzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5fcmVqZWN0KHIpfSksdC5fcmVhZEludG9SZXF1ZXN0cz1uZXcgYiksZ3IodCxyKSl9ZnVuY3Rpb24gcWUoZSxyLHQpe3ZhciBvPWUuX3JlYWRlcjtvLl9yZWFkUmVxdWVzdHMuc2hpZnQoKS5fcmVzb2x2ZShQZShyLHQsby5fZm9yQXV0aG9yQ29kZSkpfWZ1bmN0aW9uIGplKGUpe3JldHVybiBlLl9yZWFkZXIuX3JlYWRJbnRvUmVxdWVzdHMubGVuZ3RofWZ1bmN0aW9uIEVlKGUpe3JldHVybiBlLl9yZWFkZXIuX3JlYWRSZXF1ZXN0cy5sZW5ndGh9ZnVuY3Rpb24gQ2UoZSl7dmFyIHI9ZS5fcmVhZGVyO3JldHVybiB2b2lkIDAhPT1yJiYhIWtlKHIpfWZ1bmN0aW9uIEFlKGUpe3ZhciByPWUuX3JlYWRlcjtyZXR1cm4gdm9pZCAwIT09ciYmISF6ZShyKX12b2lkIDAhPT1zZSYmT2JqZWN0LnNldFByb3RvdHlwZU9mKGRlLHNlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZGUsIm5leHQiLHtlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlLCJyZXR1cm4iLHtlbnVtZXJhYmxlOiExfSksInN5bWJvbCI9PXR5cGVvZiByLmFzeW5jSXRlcmF0b3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShmZS5wcm90b3R5cGUsci5hc3luY0l0ZXJhdG9yLHt2YWx1ZTpmZS5wcm90b3R5cGUuZ2V0SXRlcmF0b3IsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe2lmKCExPT09cGUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIHdpdGggYSBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZSIpO2lmKCEwPT09bWUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhpcyBzdHJlYW0gaGFzIGFscmVhZHkgYmVlbiBsb2NrZWQgZm9yIGV4Y2x1c2l2ZSByZWFkaW5nIGJ5IGFub3RoZXIgcmVhZGVyIik7QmUodGhpcyxlKSx0aGlzLl9yZWFkUmVxdWVzdHM9bmV3IGJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY2xvc2VkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHplKHRoaXMpP3RoaXMuX2Nsb3NlZFByb21pc2U6UHJvbWlzZS5yZWplY3QoeXIoImNsb3NlZCIpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHplKHRoaXMpP3ZvaWQgMD09PXRoaXMuX293bmVyUmVhZGFibGVTdHJlYW0/UHJvbWlzZS5yZWplY3QobXIoImNhbmNlbCIpKTpJZSh0aGlzLGUpOlByb21pc2UucmVqZWN0KHlyKCJjYW5jZWwiKSl9LGUucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gemUodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigicmVhZCBmcm9tIikpOkxlKHRoaXMpOlByb21pc2UucmVqZWN0KHlyKCJyZWFkIikpfSxlLnByb3RvdHlwZS5yZWxlYXNlTG9jaz1mdW5jdGlvbigpe2lmKCF6ZSh0aGlzKSl0aHJvdyB5cigicmVsZWFzZUxvY2siKTtpZih2b2lkIDAhPT10aGlzLl9vd25lclJlYWRhYmxlU3RyZWFtKXtpZih0aGlzLl9yZWFkUmVxdWVzdHMubGVuZ3RoPjApdGhyb3cgbmV3IFR5cGVFcnJvcigiVHJpZWQgdG8gcmVsZWFzZSBhIHJlYWRlciBsb2NrIHdoZW4gdGhhdCByZWFkZXIgaGFzIHBlbmRpbmcgcmVhZCgpIGNhbGxzIHVuLXNldHRsZWQiKTtGZSh0aGlzKX19LGV9KCksV2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe2lmKCFwZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgd2l0aCBhIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlIGdpdmVuIGEgYnl0ZSBzb3VyY2UiKTtpZighMT09PVplKGUuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCBhIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBmb3IgYSBzdHJlYW0gbm90IGNvbnN0cnVjdGVkIHdpdGggYSBieXRlIHNvdXJjZSIpO2lmKG1lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoaXMgc3RyZWFtIGhhcyBhbHJlYWR5IGJlZW4gbG9ja2VkIGZvciBleGNsdXNpdmUgcmVhZGluZyBieSBhbm90aGVyIHJlYWRlciIpO0JlKHRoaXMsZSksdGhpcy5fcmVhZEludG9SZXF1ZXN0cz1uZXcgYn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjbG9zZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga2UodGhpcyk/dGhpcy5fY2xvc2VkUHJvbWlzZTpQcm9taXNlLnJlamVjdChScigiY2xvc2VkIikpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4ga2UodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigiY2FuY2VsIikpOkllKHRoaXMsZSk6UHJvbWlzZS5yZWplY3QoUnIoImNhbmNlbCIpKX0sZS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlKXtyZXR1cm4ga2UodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigicmVhZCBmcm9tIikpOkFycmF5QnVmZmVyLmlzVmlldyhlKT8oZS5idWZmZXIsMD09PWUuYnl0ZUxlbmd0aD9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJ2aWV3IG11c3QgaGF2ZSBub24temVybyBieXRlTGVuZ3RoIikpOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fb3duZXJSZWFkYWJsZVN0cmVhbTtpZih0Ll9kaXN0dXJiZWQ9ITAsImVycm9yZWQiPT09dC5fc3RhdGUpcmV0dXJuIFByb21pc2UucmVqZWN0KHQuX3N0b3JlZEVycm9yKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgdD1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLG89MTtyLmNvbnN0cnVjdG9yIT09RGF0YVZpZXcmJihvPXIuY29uc3RydWN0b3IuQllURVNfUEVSX0VMRU1FTlQpO3ZhciBuPXIuY29uc3RydWN0b3IsaT17YnVmZmVyOmMoci5idWZmZXIpLGJ5dGVPZmZzZXQ6ci5ieXRlT2Zmc2V0LGJ5dGVMZW5ndGg6ci5ieXRlTGVuZ3RoLGJ5dGVzRmlsbGVkOjAsZWxlbWVudFNpemU6byxjdG9yOm4scmVhZGVyVHlwZToiYnlvYiJ9O2lmKGUuX3BlbmRpbmdQdWxsSW50b3MubGVuZ3RoPjApcmV0dXJuIGUuX3BlbmRpbmdQdWxsSW50b3MucHVzaChpKSx3ZSh0KTtpZigiY2xvc2VkIj09PXQuX3N0YXRlKXt2YXIgYT1uZXcgbihpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsMCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShQZShhLCEwLHQuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfWlmKGUuX3F1ZXVlVG90YWxTaXplPjApe2lmKCEwPT09bnIoZSxpKSl7dmFyIHM9dHIoaSk7cmV0dXJuIGFyKGUpLFByb21pc2UucmVzb2x2ZShQZShzLCExLHQuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfWlmKCEwPT09ZS5fY2xvc2VSZXF1ZXN0ZWQpe3ZhciB1PW5ldyBUeXBlRXJyb3IoIkluc3VmZmljaWVudCBieXRlcyB0byBmaWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbiBidWZmZXIiKTtyZXR1cm4gZHIoZSx1KSxQcm9taXNlLnJlamVjdCh1KX19ZS5fcGVuZGluZ1B1bGxJbnRvcy5wdXNoKGkpO3ZhciBsPXdlKHQpO3JldHVybiBlcihlKSxsfSh0Ll9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIscil9KHRoaXMsZSkpOlByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoInZpZXcgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpKTpQcm9taXNlLnJlamVjdChScigicmVhZCIpKX0sZS5wcm90b3R5cGUucmVsZWFzZUxvY2s9ZnVuY3Rpb24oKXtpZigha2UodGhpcykpdGhyb3cgUnIoInJlbGVhc2VMb2NrIik7aWYodm9pZCAwIT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbSl7aWYodGhpcy5fcmVhZEludG9SZXF1ZXN0cy5sZW5ndGg+MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUcmllZCB0byByZWxlYXNlIGEgcmVhZGVyIGxvY2sgd2hlbiB0aGF0IHJlYWRlciBoYXMgcGVuZGluZyByZWFkKCkgY2FsbHMgdW4tc2V0dGxlZCIpO0ZlKHRoaXMpfX0sZX0oKTtmdW5jdGlvbiBrZShlKXtyZXR1cm4hIW8oZSkmJiEhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIl9yZWFkSW50b1JlcXVlc3RzIil9ZnVuY3Rpb24gemUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfcmVhZFJlcXVlc3RzIil9ZnVuY3Rpb24gQmUoZSxyKXtlLl9mb3JBdXRob3JDb2RlPSEwLGUuX293bmVyUmVhZGFibGVTdHJlYW09cixyLl9yZWFkZXI9ZSwicmVhZGFibGUiPT09ci5fc3RhdGU/dnIoZSk6ImNsb3NlZCI9PT1yLl9zdGF0ZT9mdW5jdGlvbihlKXt2cihlKSxTcihlKX0oZSk6d3IoZSxyLl9zdG9yZWRFcnJvcil9ZnVuY3Rpb24gSWUoZSxyKXtyZXR1cm4gU2UoZS5fb3duZXJSZWFkYWJsZVN0cmVhbSxyKX1mdW5jdGlvbiBGZShlKXsicmVhZGFibGUiPT09ZS5fb3duZXJSZWFkYWJsZVN0cmVhbS5fc3RhdGU/Z3IoZSxuZXcgVHlwZUVycm9yKCJSZWFkZXIgd2FzIHJlbGVhc2VkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgc3RyZWFtJ3MgY2xvc2VkbmVzcyIpKTpmdW5jdGlvbihlLHIpe3dyKGUscil9KGUsbmV3IFR5cGVFcnJvcigiUmVhZGVyIHdhcyByZWxlYXNlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSB1c2VkIHRvIG1vbml0b3IgdGhlIHN0cmVhbSdzIGNsb3NlZG5lc3MiKSksZS5fb3duZXJSZWFkYWJsZVN0cmVhbS5fcmVhZGVyPXZvaWQgMCxlLl9vd25lclJlYWRhYmxlU3RyZWFtPXZvaWQgMH1mdW5jdGlvbiBMZShlKXt2YXIgcj1lLl9vd25lclJlYWRhYmxlU3RyZWFtO3JldHVybiByLl9kaXN0dXJiZWQ9ITAsImNsb3NlZCI9PT1yLl9zdGF0ZT9Qcm9taXNlLnJlc29sdmUoUGUodm9pZCAwLCEwLGUuX2ZvckF1dGhvckNvZGUpKToiZXJyb3JlZCI9PT1yLl9zdGF0ZT9Qcm9taXNlLnJlamVjdChyLl9zdG9yZWRFcnJvcik6ci5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyW2NlXSgpfXZhciBNZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImRlc2lyZWRTaXplIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT14ZSh0aGlzKSl0aHJvdyBQcigiZGVzaXJlZFNpemUiKTtyZXR1cm4gUWUodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtpZighMT09PXhlKHRoaXMpKXRocm93IFByKCJjbG9zZSIpO2lmKCExPT09R2UodGhpcykpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIHN0cmVhbSBpcyBub3QgaW4gYSBzdGF0ZSB0aGF0IHBlcm1pdHMgY2xvc2UiKTtIZSh0aGlzKX0sZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlKXtpZighMT09PXhlKHRoaXMpKXRocm93IFByKCJlbnF1ZXVlIik7aWYoITE9PT1HZSh0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgcGVybWl0cyBlbnF1ZXVlIik7cmV0dXJuIFVlKHRoaXMsZSl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCExPT09eGUodGhpcykpdGhyb3cgUHIoImVycm9yIik7VmUodGhpcyxlKX0sZS5wcm90b3R5cGVbbGVdPWZ1bmN0aW9uKGUpe3kodGhpcyk7dmFyIHI9dGhpcy5fY2FuY2VsQWxnb3JpdGhtKGUpO3JldHVybiBZZSh0aGlzKSxyfSxlLnByb3RvdHlwZVtjZV09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb250cm9sbGVkUmVhZGFibGVTdHJlYW07aWYodGhpcy5fcXVldWUubGVuZ3RoPjApe3ZhciByPXAodGhpcyk7cmV0dXJuITA9PT10aGlzLl9jbG9zZVJlcXVlc3RlZCYmMD09PXRoaXMuX3F1ZXVlLmxlbmd0aD8oWWUodGhpcyksUmUoZSkpOkRlKHRoaXMpLFByb21pc2UucmVzb2x2ZShQZShyLCExLGUuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfXZhciB0PWdlKGUpO3JldHVybiBEZSh0aGlzKSx0fSxlfSgpO2Z1bmN0aW9uIHhlKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSIpfWZ1bmN0aW9uIERlKGUpeyExIT09TmUoZSkmJighMCE9PWUuX3B1bGxpbmc/KGUuX3B1bGxpbmc9ITAsZS5fcHVsbEFsZ29yaXRobSgpLnRoZW4oZnVuY3Rpb24oKXtlLl9wdWxsaW5nPSExLCEwPT09ZS5fcHVsbEFnYWluJiYoZS5fcHVsbEFnYWluPSExLERlKGUpKX0sZnVuY3Rpb24ocil7VmUoZSxyKX0pLmNhdGNoKGgpKTplLl9wdWxsQWdhaW49ITApfWZ1bmN0aW9uIE5lKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTtyZXR1cm4hMSE9PUdlKGUpJiYoITEhPT1lLl9zdGFydGVkJiYoITA9PT1tZShyKSYmRWUocik+MHx8UWUoZSk+MCkpfWZ1bmN0aW9uIFllKGUpe2UuX3B1bGxBbGdvcml0aG09dm9pZCAwLGUuX2NhbmNlbEFsZ29yaXRobT12b2lkIDAsZS5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtPXZvaWQgMH1mdW5jdGlvbiBIZShlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVTdHJlYW07ZS5fY2xvc2VSZXF1ZXN0ZWQ9ITAsMD09PWUuX3F1ZXVlLmxlbmd0aCYmKFllKGUpLFJlKHIpKX1mdW5jdGlvbiBVZShlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTtpZighMD09PW1lKHQpJiZFZSh0KT4wKXFlKHQsciwhMSk7ZWxzZXt2YXIgbz12b2lkIDA7dHJ5e289ZS5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtKHIpfWNhdGNoKHIpe3Rocm93IFZlKGUscikscn10cnl7bShlLHIsbyl9Y2F0Y2gocil7dGhyb3cgVmUoZSxyKSxyfX1EZShlKX1mdW5jdGlvbiBWZShlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsicmVhZGFibGUiPT09dC5fc3RhdGUmJih5KGUpLFllKGUpLFRlKHQscikpfWZ1bmN0aW9uIFFlKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbS5fc3RhdGU7cmV0dXJuImVycm9yZWQiPT09cj9udWxsOiJjbG9zZWQiPT09cj8wOmUuX3N0cmF0ZWd5SFdNLWUuX3F1ZXVlVG90YWxTaXplfWZ1bmN0aW9uIEdlKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbS5fc3RhdGU7cmV0dXJuITE9PT1lLl9jbG9zZVJlcXVlc3RlZCYmInJlYWRhYmxlIj09PXJ9ZnVuY3Rpb24gSmUoZSxyLHQsbyxuLGksYSl7ci5fY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtPWUsci5fcXVldWU9dm9pZCAwLHIuX3F1ZXVlVG90YWxTaXplPXZvaWQgMCx5KHIpLHIuX3N0YXJ0ZWQ9ITEsci5fY2xvc2VSZXF1ZXN0ZWQ9ITEsci5fcHVsbEFnYWluPSExLHIuX3B1bGxpbmc9ITEsci5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtPWEsci5fc3RyYXRlZ3lIV009aSxyLl9wdWxsQWxnb3JpdGhtPW8sci5fY2FuY2VsQWxnb3JpdGhtPW4sZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyPXI7dmFyIHM9dCgpO1Byb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKCl7ci5fc3RhcnRlZD0hMCxEZShyKX0sZnVuY3Rpb24oZSl7VmUocixlKX0pLmNhdGNoKGgpfXZhciBLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5Iil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmlldyIse2dldDpmdW5jdGlvbigpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInZpZXciKTtyZXR1cm4gdGhpcy5fdmlld30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5yZXNwb25kPWZ1bmN0aW9uKGUpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInJlc3BvbmQiKTtpZih2b2lkIDA9PT10aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIEJZT0IgcmVxdWVzdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCIpO3RoaXMuX3ZpZXcuYnVmZmVyLGZ1bmN0aW9uKGUscil7aWYoITE9PT1pKHI9TnVtYmVyKHIpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIG11c3QgYmUgYSBmaW5pdGUiKTtscihlLHIpfSh0aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcixlKX0sZS5wcm90b3R5cGUucmVzcG9uZFdpdGhOZXdWaWV3PWZ1bmN0aW9uKGUpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInJlc3BvbmQiKTtpZih2b2lkIDA9PT10aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIEJZT0IgcmVxdWVzdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCIpO2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IGNhbiBvbmx5IHJlc3BvbmQgd2l0aCBhcnJheSBidWZmZXIgdmlld3MiKTtlLmJ1ZmZlcixmdW5jdGlvbihlLHIpe3ZhciB0PWUuX3BlbmRpbmdQdWxsSW50b3MucGVlaygpO2lmKHQuYnl0ZU9mZnNldCt0LmJ5dGVzRmlsbGVkIT09ci5ieXRlT2Zmc2V0KXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgcmVnaW9uIHNwZWNpZmllZCBieSB2aWV3IGRvZXMgbm90IG1hdGNoIGJ5b2JSZXF1ZXN0Iik7aWYodC5ieXRlTGVuZ3RoIT09ci5ieXRlTGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgYnVmZmVyIG9mIHZpZXcgaGFzIGRpZmZlcmVudCBjYXBhY2l0eSB0aGFuIGJ5b2JSZXF1ZXN0Iik7dC5idWZmZXI9ci5idWZmZXIsbHIoZSxyLmJ5dGVMZW5ndGgpfSh0aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcixlKX0sZX0oKSxYZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5Iil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYnlvYlJlcXVlc3QiLHtnZXQ6ZnVuY3Rpb24oKXtpZighMT09PVplKHRoaXMpKXRocm93IHFyKCJieW9iUmVxdWVzdCIpO2lmKHZvaWQgMD09PXRoaXMuX2J5b2JSZXF1ZXN0JiZ0aGlzLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wKXt2YXIgZT10aGlzLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKSxyPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCtlLmJ5dGVzRmlsbGVkLGUuYnl0ZUxlbmd0aC1lLmJ5dGVzRmlsbGVkKSx0PU9iamVjdC5jcmVhdGUoS2UucHJvdG90eXBlKTshZnVuY3Rpb24oZSxyLHQpe2UuX2Fzc29jaWF0ZWRSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyPXIsZS5fdmlldz10fSh0LHRoaXMsciksdGhpcy5fYnlvYlJlcXVlc3Q9dH1yZXR1cm4gdGhpcy5fYnlvYlJlcXVlc3R9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXNpcmVkU2l6ZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09WmUodGhpcykpdGhyb3cgcXIoImRlc2lyZWRTaXplIik7cmV0dXJuIF9yKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7aWYoITE9PT1aZSh0aGlzKSl0aHJvdyBxcigiY2xvc2UiKTtpZighMD09PXRoaXMuX2Nsb3NlUmVxdWVzdGVkKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBzdHJlYW0gaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQ7IGRvIG5vdCBjbG9zZSBpdCBhZ2FpbiEiKTt2YXIgZT10aGlzLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtpZigicmVhZGFibGUiIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIChpbiAiK2UrIiBzdGF0ZSkgaXMgbm90IGluIHRoZSByZWFkYWJsZSBzdGF0ZSBhbmQgY2Fubm90IGJlIGNsb3NlZCIpOyFmdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtO2lmKGUuX3F1ZXVlVG90YWxTaXplPjApcmV0dXJuIHZvaWQoZS5fY2xvc2VSZXF1ZXN0ZWQ9ITApO2lmKGUuX3BlbmRpbmdQdWxsSW50b3MubGVuZ3RoPjApe3ZhciB0PWUuX3BlbmRpbmdQdWxsSW50b3MucGVlaygpO2lmKHQuYnl0ZXNGaWxsZWQ+MCl7dmFyIG89bmV3IFR5cGVFcnJvcigiSW5zdWZmaWNpZW50IGJ5dGVzIHRvIGZpbGwgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGJ1ZmZlciIpO3Rocm93IGRyKGUsbyksb319ZnIoZSksUmUocil9KHRoaXMpfSxlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUpe2lmKCExPT09WmUodGhpcykpdGhyb3cgcXIoImVucXVldWUiKTtpZighMD09PXRoaXMuX2Nsb3NlUmVxdWVzdGVkKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBpcyBjbG9zZWQgb3IgZHJhaW5pbmciKTt2YXIgcj10aGlzLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtpZigicmVhZGFibGUiIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIChpbiAiK3IrIiBzdGF0ZSkgaXMgbm90IGluIHRoZSByZWFkYWJsZSBzdGF0ZSBhbmQgY2Fubm90IGJlIGVucXVldWVkIHRvIik7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJZb3UgY2FuIG9ubHkgZW5xdWV1ZSBhcnJheSBidWZmZXIgdmlld3Mgd2hlbiB1c2luZyBhIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiKTtlLmJ1ZmZlcixmdW5jdGlvbihlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0sbz1yLmJ1ZmZlcixuPXIuYnl0ZU9mZnNldCxpPXIuYnl0ZUxlbmd0aCxhPWMobyk7aWYoITA9PT1BZSh0KSlpZigwPT09RWUodCkpb3IoZSxhLG4saSk7ZWxzZXt2YXIgcz1uZXcgVWludDhBcnJheShhLG4saSk7cWUodCxzLCExKX1lbHNlITA9PT1DZSh0KT8ob3IoZSxhLG4saSksdXIoZSkpOm9yKGUsYSxuLGkpO2VyKGUpfSh0aGlzLGUpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihlKXtpZighMT09PVplKHRoaXMpKXRocm93IHFyKCJlcnJvciIpO2RyKHRoaXMsZSl9LGUucHJvdG90eXBlW2xlXT1mdW5jdGlvbihlKXt0aGlzLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wJiYodGhpcy5fcGVuZGluZ1B1bGxJbnRvcy5wZWVrKCkuYnl0ZXNGaWxsZWQ9MCk7eSh0aGlzKTt2YXIgcj10aGlzLl9jYW5jZWxBbGdvcml0aG0oZSk7cmV0dXJuIGZyKHRoaXMpLHJ9LGUucHJvdG90eXBlW2NlXT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW07aWYodGhpcy5fcXVldWVUb3RhbFNpemU+MCl7dmFyIHI9dGhpcy5fcXVldWUuc2hpZnQoKTt0aGlzLl9xdWV1ZVRvdGFsU2l6ZS09ci5ieXRlTGVuZ3RoLGFyKHRoaXMpO3ZhciB0PXZvaWQgMDt0cnl7dD1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZShQZSh0LCExLGUuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfXZhciBvPXRoaXMuX2F1dG9BbGxvY2F0ZUNodW5rU2l6ZTtpZih2b2lkIDAhPT1vKXt2YXIgbj12b2lkIDA7dHJ5e249bmV3IEFycmF5QnVmZmVyKG8pfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX12YXIgaT17YnVmZmVyOm4sYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6byxieXRlc0ZpbGxlZDowLGVsZW1lbnRTaXplOjEsY3RvcjpVaW50OEFycmF5LHJlYWRlclR5cGU6ImRlZmF1bHQifTt0aGlzLl9wZW5kaW5nUHVsbEludG9zLnB1c2goaSl9dmFyIGE9Z2UoZSk7cmV0dXJuIGVyKHRoaXMpLGF9LGV9KCk7ZnVuY3Rpb24gWmUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbSIpfWZ1bmN0aW9uICRlKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX2Fzc29jaWF0ZWRSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIil9ZnVuY3Rpb24gZXIoZSl7ITEhPT1mdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtO2lmKCJyZWFkYWJsZSIhPT1yLl9zdGF0ZSlyZXR1cm4hMTtpZighMD09PWUuX2Nsb3NlUmVxdWVzdGVkKXJldHVybiExO2lmKCExPT09ZS5fc3RhcnRlZClyZXR1cm4hMTtpZighMD09PUFlKHIpJiZFZShyKT4wKXJldHVybiEwO2lmKCEwPT09Q2UocikmJmplKHIpPjApcmV0dXJuITA7aWYoX3IoZSk+MClyZXR1cm4hMDtyZXR1cm4hMX0oZSkmJighMCE9PWUuX3B1bGxpbmc/KGUuX3B1bGxpbmc9ITAsZS5fcHVsbEFsZ29yaXRobSgpLnRoZW4oZnVuY3Rpb24oKXtlLl9wdWxsaW5nPSExLCEwPT09ZS5fcHVsbEFnYWluJiYoZS5fcHVsbEFnYWluPSExLGVyKGUpKX0sZnVuY3Rpb24ocil7ZHIoZSxyKX0pLmNhdGNoKGgpKTplLl9wdWxsQWdhaW49ITApfWZ1bmN0aW9uIHJyKGUscil7dmFyIHQ9ITE7ImNsb3NlZCI9PT1lLl9zdGF0ZSYmKHQ9ITApO3ZhciBvPXRyKHIpOyJkZWZhdWx0Ij09PXIucmVhZGVyVHlwZT9xZShlLG8sdCk6ZnVuY3Rpb24oZSxyLHQpe3ZhciBvPWUuX3JlYWRlcjtvLl9yZWFkSW50b1JlcXVlc3RzLnNoaWZ0KCkuX3Jlc29sdmUoUGUocix0LG8uX2ZvckF1dGhvckNvZGUpKX0oZSxvLHQpfWZ1bmN0aW9uIHRyKGUpe3ZhciByPWUuYnl0ZXNGaWxsZWQsdD1lLmVsZW1lbnRTaXplO3JldHVybiBuZXcgZS5jdG9yKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxyL3QpfWZ1bmN0aW9uIG9yKGUscix0LG8pe2UuX3F1ZXVlLnB1c2goe2J1ZmZlcjpyLGJ5dGVPZmZzZXQ6dCxieXRlTGVuZ3RoOm99KSxlLl9xdWV1ZVRvdGFsU2l6ZSs9b31mdW5jdGlvbiBucihlLHIpe3ZhciB0PXIuZWxlbWVudFNpemUsbz1yLmJ5dGVzRmlsbGVkLXIuYnl0ZXNGaWxsZWQldCxuPU1hdGgubWluKGUuX3F1ZXVlVG90YWxTaXplLHIuYnl0ZUxlbmd0aC1yLmJ5dGVzRmlsbGVkKSxpPXIuYnl0ZXNGaWxsZWQrbixhPWktaSV0LHM9bix1PSExO2E+byYmKHM9YS1yLmJ5dGVzRmlsbGVkLHU9ITApO2Zvcih2YXIgbCxjLGYsZCxfLGg9ZS5fcXVldWU7cz4wOyl7dmFyIGI9aC5wZWVrKCkscD1NYXRoLm1pbihzLGIuYnl0ZUxlbmd0aCksbT1yLmJ5dGVPZmZzZXQrci5ieXRlc0ZpbGxlZDtsPXIuYnVmZmVyLGM9bSxmPWIuYnVmZmVyLGQ9Yi5ieXRlT2Zmc2V0LF89cCxuZXcgVWludDhBcnJheShsKS5zZXQobmV3IFVpbnQ4QXJyYXkoZixkLF8pLGMpLGIuYnl0ZUxlbmd0aD09PXA/aC5zaGlmdCgpOihiLmJ5dGVPZmZzZXQrPXAsYi5ieXRlTGVuZ3RoLT1wKSxlLl9xdWV1ZVRvdGFsU2l6ZS09cCxpcihlLHAscikscy09cH1yZXR1cm4gdX1mdW5jdGlvbiBpcihlLHIsdCl7c3IoZSksdC5ieXRlc0ZpbGxlZCs9cn1mdW5jdGlvbiBhcihlKXswPT09ZS5fcXVldWVUb3RhbFNpemUmJiEwPT09ZS5fY2xvc2VSZXF1ZXN0ZWQ/KGZyKGUpLFJlKGUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0pKTplcihlKX1mdW5jdGlvbiBzcihlKXt2b2lkIDAhPT1lLl9ieW9iUmVxdWVzdCYmKGUuX2J5b2JSZXF1ZXN0Ll9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcj12b2lkIDAsZS5fYnlvYlJlcXVlc3QuX3ZpZXc9dm9pZCAwLGUuX2J5b2JSZXF1ZXN0PXZvaWQgMCl9ZnVuY3Rpb24gdXIoZSl7Zm9yKDtlLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wOyl7aWYoMD09PWUuX3F1ZXVlVG90YWxTaXplKXJldHVybjt2YXIgcj1lLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKTshMD09PW5yKGUscikmJihjcihlKSxycihlLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLHIpKX19ZnVuY3Rpb24gbHIoZSxyKXt2YXIgdD1lLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKTtpZigiY2xvc2VkIj09PWUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0uX3N0YXRlKXtpZigwIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJieXRlc1dyaXR0ZW4gbXVzdCBiZSAwIHdoZW4gY2FsbGluZyByZXNwb25kKCkgb24gYSBjbG9zZWQgc3RyZWFtIik7IWZ1bmN0aW9uKGUscil7ci5idWZmZXI9YyhyLmJ1ZmZlcik7dmFyIHQ9ZS5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbTtpZighMD09PUNlKHQpKWZvcig7amUodCk+MDspcnIodCxjcihlKSl9KGUsdCl9ZWxzZSFmdW5jdGlvbihlLHIsdCl7aWYodC5ieXRlc0ZpbGxlZCtyPnQuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIG91dCBvZiByYW5nZSIpO2lmKGlyKGUscix0KSwhKHQuYnl0ZXNGaWxsZWQ8dC5lbGVtZW50U2l6ZSkpe2NyKGUpO3ZhciBvPXQuYnl0ZXNGaWxsZWQldC5lbGVtZW50U2l6ZTtpZihvPjApe3ZhciBuPXQuYnl0ZU9mZnNldCt0LmJ5dGVzRmlsbGVkLGk9dC5idWZmZXIuc2xpY2Uobi1vLG4pO29yKGUsaSwwLGkuYnl0ZUxlbmd0aCl9dC5idWZmZXI9Yyh0LmJ1ZmZlciksdC5ieXRlc0ZpbGxlZC09byxycihlLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLHQpLHVyKGUpfX0oZSxyLHQpO2VyKGUpfWZ1bmN0aW9uIGNyKGUpe3ZhciByPWUuX3BlbmRpbmdQdWxsSW50b3Muc2hpZnQoKTtyZXR1cm4gc3IoZSkscn1mdW5jdGlvbiBmcihlKXtlLl9wdWxsQWxnb3JpdGhtPXZvaWQgMCxlLl9jYW5jZWxBbGdvcml0aG09dm9pZCAwfWZ1bmN0aW9uIGRyKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbTsicmVhZGFibGUiPT09dC5fc3RhdGUmJighZnVuY3Rpb24oZSl7c3IoZSksZS5fcGVuZGluZ1B1bGxJbnRvcz1uZXcgYn0oZSkseShlKSxmcihlKSxUZSh0LHIpKX1mdW5jdGlvbiBfcihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtyZXR1cm4iZXJyb3JlZCI9PT1yP251bGw6ImNsb3NlZCI9PT1yPzA6ZS5fc3RyYXRlZ3lIV00tZS5fcXVldWVUb3RhbFNpemV9ZnVuY3Rpb24gaHIoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFib3J0U2lnbmFsLnByb3RvdHlwZSwiYWJvcnRlZCIpLmdldDt0cnl7cmV0dXJuIHIuY2FsbChlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gYnIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW0iKX1mdW5jdGlvbiBwcihlKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yLiIrZSsiIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBSZWFkYWJsZVN0ZWFtQXN5bmNJdGVyYXRvciIpfWZ1bmN0aW9uIG1yKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJDYW5ub3QgIitlKyIgYSBzdHJlYW0gdXNpbmcgYSByZWxlYXNlZCByZWFkZXIiKX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIil9ZnVuY3Rpb24gdnIoZSl7ZS5fY2xvc2VkUHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLHQpe2UuX2Nsb3NlZFByb21pc2VfcmVzb2x2ZT1yLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXR9KX1mdW5jdGlvbiB3cihlLHIpe3ZyKGUpLGdyKGUscil9ZnVuY3Rpb24gZ3IoZSxyKXtlLl9jbG9zZWRQcm9taXNlLmNhdGNoKGZ1bmN0aW9uKCl7fSksZS5fY2xvc2VkUHJvbWlzZV9yZWplY3QociksZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlX3JlamVjdD12b2lkIDB9ZnVuY3Rpb24gU3IoZSl7ZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlKHZvaWQgMCksZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlX3JlamVjdD12b2lkIDB9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciIpfWZ1bmN0aW9uIFByKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciIpfWZ1bmN0aW9uIFRyKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCIpfWZ1bmN0aW9uIHFyKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciIpfXZhciBqcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHI9ZS5oaWdoV2F0ZXJNYXJrO3RoaXMuaGlnaFdhdGVyTWFyaz1yfXJldHVybiBlLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVMZW5ndGh9LGV9KCksRXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciByPWUuaGlnaFdhdGVyTWFyazt0aGlzLmhpZ2hXYXRlck1hcms9cn1yZXR1cm4gZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxfSxlfSgpLENyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIsdCl7dm9pZCAwPT09ZSYmKGU9e30pLHZvaWQgMD09PXImJihyPXt9KSx2b2lkIDA9PT10JiYodD17fSk7dmFyIG89ci5zaXplLG49ci5oaWdoV2F0ZXJNYXJrLGk9dC5zaXplLGE9dC5oaWdoV2F0ZXJNYXJrO2lmKHZvaWQgMCE9PWUud3JpdGFibGVUeXBlKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHdyaXRhYmxlIHR5cGUgc3BlY2lmaWVkIik7dmFyIGM9ZChvKTtpZih2b2lkIDA9PT1uJiYobj0xKSxuPWYobiksdm9pZCAwIT09ZS5yZWFkYWJsZVR5cGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgcmVhZGFibGUgdHlwZSBzcGVjaWZpZWQiKTt2YXIgXyxoPWQoaSk7dm9pZCAwPT09YSYmKGE9MCksYT1mKGEpLGZ1bmN0aW9uKGUscix0LG8sbixpKXtmdW5jdGlvbiBhKCl7cmV0dXJuIHJ9ZS5fd3JpdGFibGU9ZnVuY3Rpb24oZSxyLHQsbyxuLGkpe3ZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PWkmJihpPWZ1bmN0aW9uKCl7cmV0dXJuIDF9KTt2YXIgYT1PYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTtyZXR1cm4gUihhKSxEKGEsT2JqZWN0LmNyZWF0ZSh4LnByb3RvdHlwZSksZSxyLHQsbyxuLGkpLGF9KGEsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fdHJhbnNmb3JtU3RyZWFtQ29udHJvbGxlcjtpZighMD09PWUuX2JhY2twcmVzc3VyZSl7dmFyIG89ZS5fYmFja3ByZXNzdXJlQ2hhbmdlUHJvbWlzZTtyZXR1cm4gby50aGVuKGZ1bmN0aW9uKCl7dmFyIG89ZS5fd3JpdGFibGUsbj1vLl9zdGF0ZTtpZigiZXJyb3JpbmciPT09bil0aHJvdyBvLl9zdG9yZWRFcnJvcjtyZXR1cm4gTHIodCxyKX0pfXJldHVybiBMcih0LHIpfShlLHIpfSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lLl9yZWFkYWJsZSx0PWUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIsbz10Ll9mbHVzaEFsZ29yaXRobSgpO3JldHVybiBJcih0KSxvLnRoZW4oZnVuY3Rpb24oKXtpZigiZXJyb3JlZCI9PT1yLl9zdGF0ZSl0aHJvdyByLl9zdG9yZWRFcnJvcjt2YXIgZT1yLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7ITA9PT1HZShlKSYmSGUoZSl9KS5jYXRjaChmdW5jdGlvbih0KXt0aHJvdyBPcihlLHQpLHIuX3N0b3JlZEVycm9yfSl9KGUpfSxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gT3IoZSxyKSxQcm9taXNlLnJlc29sdmUoKX0oZSxyKX0sdCxvKSxlLl9yZWFkYWJsZT1oZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBrcihlLCExKSxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlfShlKX0sZnVuY3Rpb24ocil7cmV0dXJuIFdyKGUsciksUHJvbWlzZS5yZXNvbHZlKCl9LG4saSksZS5fYmFja3ByZXNzdXJlPXZvaWQgMCxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlPXZvaWQgMCxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGtyKGUsITApLGUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXI9dm9pZCAwfSh0aGlzLG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe189ZX0pLG4sYyxhLGgpLGZ1bmN0aW9uKGUscil7dmFyIHQ9T2JqZWN0LmNyZWF0ZSh6ci5wcm90b3R5cGUpLG89ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBGcih0LGUpLFByb21pc2UucmVzb2x2ZSgpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19LG49ci50cmFuc2Zvcm07aWYodm9pZCAwIT09bil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidHJhbnNmb3JtIGlzIG5vdCBhIG1ldGhvZCIpO289ZnVuY3Rpb24oZSl7cmV0dXJuIGwobixyLFtlLHRdKX19dmFyIGk9cyhyLCJmbHVzaCIsMCxbdF0pOyFmdW5jdGlvbihlLHIsdCxvKXtyLl9jb250cm9sbGVkVHJhbnNmb3JtU3RyZWFtPWUsZS5fdHJhbnNmb3JtU3RyZWFtQ29udHJvbGxlcj1yLHIuX3RyYW5zZm9ybUFsZ29yaXRobT10LHIuX2ZsdXNoQWxnb3JpdGhtPW99KGUsdCxvLGkpfSh0aGlzLGUpO3ZhciBiPXUoZSwic3RhcnQiLFt0aGlzLl90cmFuc2Zvcm1TdHJlYW1Db250cm9sbGVyXSk7XyhiKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJyZWFkYWJsZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09QXIodGhpcykpdGhyb3cgeHIoInJlYWRhYmxlIik7cmV0dXJuIHRoaXMuX3JlYWRhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwid3JpdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtpZighMT09PUFyKHRoaXMpKXRocm93IHhyKCJ3cml0YWJsZSIpO3JldHVybiB0aGlzLl93cml0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfSgpO2Z1bmN0aW9uIEFyKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIiKX1mdW5jdGlvbiBPcihlLHIpe1ZlKGUuX3JlYWRhYmxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsciksV3IoZSxyKX1mdW5jdGlvbiBXcihlLHIpe0lyKGUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIpLFUoZS5fd3JpdGFibGUuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlcixyKSwhMD09PWUuX2JhY2twcmVzc3VyZSYma3IoZSwhMSl9ZnVuY3Rpb24ga3IoZSxyKXt2b2lkIDAhPT1lLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlJiZlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlX3Jlc29sdmUoKSxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpe2UuX2JhY2twcmVzc3VyZUNoYW5nZVByb21pc2VfcmVzb2x2ZT1yfSksZS5fYmFja3ByZXNzdXJlPXJ9dmFyIHpyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGluc3RhbmNlcyBjYW5ub3QgYmUgY3JlYXRlZCBkaXJlY3RseSIpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImRlc2lyZWRTaXplIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigiZGVzaXJlZFNpemUiKTtyZXR1cm4gUWUodGhpcy5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbS5fcmVhZGFibGUuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlKXtpZighMT09PUJyKHRoaXMpKXRocm93IE1yKCJlbnF1ZXVlIik7RnIodGhpcyxlKX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oZSl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigiZXJyb3IiKTt2YXIgcjtyPWUsT3IodGhpcy5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSxyKX0sZS5wcm90b3R5cGUudGVybWluYXRlPWZ1bmN0aW9uKCl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigidGVybWluYXRlIik7IWZ1bmN0aW9uKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRUcmFuc2Zvcm1TdHJlYW0sdD1yLl9yZWFkYWJsZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyOyEwPT09R2UodCkmJkhlKHQpO3ZhciBvPW5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbSB0ZXJtaW5hdGVkIik7V3IocixvKX0odGhpcyl9LGV9KCk7ZnVuY3Rpb24gQnIoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSIpfWZ1bmN0aW9uIElyKGUpe2UuX3RyYW5zZm9ybUFsZ29yaXRobT12b2lkIDAsZS5fZmx1c2hBbGdvcml0aG09dm9pZCAwfWZ1bmN0aW9uIEZyKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSxvPXQuX3JlYWRhYmxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7aWYoITE9PT1HZShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZSBzaWRlIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgcGVybWl0cyBlbnF1ZXVlIik7dHJ5e1VlKG8scil9Y2F0Y2goZSl7dGhyb3cgV3IodCxlKSx0Ll9yZWFkYWJsZS5fc3RvcmVkRXJyb3J9KGZ1bmN0aW9uKGUpe3JldHVybiEwIT09TmUoZSl9KShvKSE9PXQuX2JhY2twcmVzc3VyZSYma3IodCwhMCl9ZnVuY3Rpb24gTHIoZSxyKXtyZXR1cm4gZS5fdHJhbnNmb3JtQWxnb3JpdGhtKHIpLmNhdGNoKGZ1bmN0aW9uKHIpe3Rocm93IE9yKGUuX2NvbnRyb2xsZWRUcmFuc2Zvcm1TdHJlYW0scikscn0pfWZ1bmN0aW9uIE1yKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyIil9ZnVuY3Rpb24geHIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFRyYW5zZm9ybVN0cmVhbSIpfWUuUmVhZGFibGVTdHJlYW09ZmUsZS5Xcml0YWJsZVN0cmVhbT1nLGUuQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneT1qcixlLkNvdW50UXVldWluZ1N0cmF0ZWd5PUVyLGUuVHJhbnNmb3JtU3RyZWFtPUNyLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwoKaWYgKCEoJ1JlYWRhYmxlU3RyZWFtJyBpbiB3aW5kb3cpKSB3aW5kb3cuUmVhZGFibGVTdHJlYW0gPSBXZWJTdHJlYW1zUG9seWZpbGwuUmVhZGFibGVTdHJlYW07CmlmICghKCdXcml0YWJsZVN0cmVhbScgaW4gd2luZG93KSkgd2luZG93LldyaXRhYmxlU3RyZWFtID0gV2ViU3RyZWFtc1BvbHlmaWxsLldyaXRhYmxlU3RyZWFtOw==" }, "i/loader-bar2.gif": { "content_type": "image/gif", "data": "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" }, "i/apple-icon.png": { "content_type": "image/png", "data": "iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAIAAACyr5FlAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAGhdJREFUeNrsXWlQVNnZvr2wNXuzNPuOICo7AyogoIK7I6OjcUtmn68qNVVJpSqpVP7lV34klVQqlXz5JmNGx33HUZFFEVQEAQFp9h2UraHZQXq533tpbE5f0JHue3vjPHPtuffY9l3e577LOe95D4ckSQIDYzlw8SPAwOTAwOTAwOTAwOTAwOTAwOTAwOTAwOTAwOTAwOTAwMDkwMDkwMDkwGAR/FV1tyRJTkxMSqWjE5NT09PTU9THjFwuVygU8KEklXweBT6fb2lpIRAIbGGzFTg42gudna2sLDE5zIoKEslIX19/X/9AX//g0KBEOjoKJNDu1wQCG6HQWSRy8/QQeXqKvDw9gDfmTQ6OmSX7KJVkT+/L9vbOzs7uzq6emZlZ9s7l5uYS4O8XGOAXEhrk5OiAyWGkABLU1zc1NrU0t7SxSoi3ATRK2JqQtWvXBAb4c7kcTA7DY/b1a7G4saZW3NLSplAodX0WHAaehr293YYNEdGR6wIC/DA5DIOu7t7y8srqGrFMJnuf74Ob6eoqdHV1ETo7webo6ADeJvib4ElYWFrwKR+Up7JK876pYnb29fQU/Dc9OTkllY5JpdIR6ejgoGR8fOI9rxBO90FCbHxctJ2dLSaHPgByq655UVxS2t8/+BMxOpcLqh5eX39fH08vkbubK/BD9wuA6Abc21ev+lU+DcQ+P3kZkRsiUlM3+Xh7YnKwaEFKS589flw2/k55CIVOYWGh4WEhgYH+1lZWbF/V8LAUvJym5ta2to7Xr+fe8c3goIC0LZvDwkIwOZjE3JzsSWl50cPH8Na+7Tvu7q5RkeujItfBjqFUWmtbe02NGPzimdm3esR+fj5ZmemhIUGYHLrHpcryZ1V5+UVg+N/W9xAbE5mQEOPpITIew9fQ2FxWXtnS0v62ZwtaZO+eLC8vD0wOLdHa1pFzK/dtvoWPj1dKctKG9WvBkzTO65eOjpWVVT4tq1hW4UFklBAfvSNrqzG7q8ZIDtATN3PuQoC67DMNDw/dkrIpKMjfJDQz2MSKiufFj0pHRkaX/q21tdWundsSP4iD+8Lk+GlUVtbcun1v2bcNaJG1Pd3bBN1+hUJZWVVdUFg8Ojq29G8DA/0OZu9zc3PB5HiXwrh8NaehoXnpX/n7++7dnQneHGHKAHekrKwiv/DhUurz+bzduzI3b/oAk2MZNDW1Xrx8Y6nj6ejoAIo3JnoDYS4AZuQVFD19WgHuNl01hoV8fOhD4/FCDE8OpZLMzSssKnpMa+dyufAmZWVmWFpaEGaHvr4BUJO9va9o7cCM48cOBQX6Y3IQU1PTZ89faW3toLV7eLgfOrjf18eLMF/AW/Ho8dO8vAdzmiMAXC4HTAzEYquaHBCmfvffczQfDfx2eC4Q46kGO8weg0OS8xeuvXzZR2uPjYk8+NE+wz4Eg5GjpaX9zNlLs7Ov0UYHB/vDH39oKh2IzMUyint5Dx4WP6HJAozLyROHBQKb1UWOisrqK1dv0TwyiOiOHz1kb29HrErUNzRfvHSdlowC8e3nnx53dnZaLeR4/Ljs5q1cWmPy5kQwtDzeqk54lkhGvj9zYWBgiBavffnFSTdXF/Mnx4OiR3dzC2lRyYf7dyUlxhEY84PPP5y93NzcRgthvvz8JDjp5kyO+w9Kcu/dR1usrKyOHzsYtiYE0wJxQZQ3bt4uK69CG8Hz+J+vPhGJ3PR5JfpT448el9GYIRAIvvriJGYGDWBbP8reuzUjBW2cnp7597enh4dHzJAczyqe52j6GeB4fv3Vz33MuidDF2RlZuzcsRVtmZiY/N//Oz06Nm5W5AALevXaLVrI+vVXv/AQuWMSvAPpacl792ShLaOjY9+dOgt+iZmQo69/4MzZS0oliVqTzz87bhD32+SQkpyUlZmOtvT3D/7ww2XdU+0NT47JyanvTp1Dkyutra2AGVhnvD+2ZqSmpW3W0MQtbTm37po2OZRK5dlzV8YQGwlR6/Fjh0wxD9uw2LVjW0yMxrh06dOKispqEybHnbsFbe2daEv2gd1rQoOxsLXAoY/204Zqr12/vXRExjTIIa5vKi4pRVtSUzZ+kBCLxawd+HzeyROHhcLFfnS5XH7m7GVWnVNWyAFB15WrOWhLcHDArp3bsIx1gUBgc/L4YUuLxeyWkRHpzZy7pkQOkiQvXroxNTWtbnFycjz2s4PgcGAB6wgvL4/sA3vQlsrKmtrlMrGNlBxl5VXgTqsPORzOkcMHTHe+qLEhNjYyPi5aw/m4cftt83qMixxj4xN37uajLelpm40k6c1ssH/fTqHQWX04PT3DknFhmBw3bt5B83cgat2+LR2Lk1lYWVkePZKNmumaWnFDY7NRk6OhsUUsbkR7NQ4d3L/KUzRYgp+fD20ew42bdyF+MVJyKBSKH3+8h7akbdnk6SnCgmQJWZkZaIaYVDr6sLjUSMnx+En5kGRYfQhGcWvGFixC9mBpaZH94W605UFRyfvXltEfOWZmZwvvF6Mte3dnWljwsQhZRVhYyNrwUPXh3JwsL7/I6MhRUvIUzYwNCQ5cty4cC08P2LM7C61YVFFZPTwsNSJyQChV8qgU7digZSFgsAc3N5eNSfHqQ6VSWVD40IjIAcxAB+U3rF+L/VB9Ij0tGZ0xWvW8lqlsQl3JMV+T6RmqNrZvT8MC0yfs7e02JiWoD0mSLH701CjIUVHxHPU2oiLXidzdsMD0jLQtmy2QATkQyjvqp+mJHEtJmpq6CYtK/7C1FcTFRakPZTJ56dMKA5OjpbV9ZGTRNw4OCsBZXoZCavJGtHZU+bNK3Wck6dQVUa458SbZCKoGLAOlkpiYIMbGqM+ZmcXt9Wt4xQi5nNpg54svCIgJxWLi8WOCzydAS8MnbDY21CYQLHw6OBCOjtS+kcHVVbg2PLT+TV0kqXSspaV9zZpgw5BjcnJKXL84kuLgYI92yBiGBBIJMTREbbCj2oATk5PE+7xDqu/AP6mq+ukvA3WAJU5OEEqCWKgNdkQiws6Qs8ATE+PqkaJZZeWVBiNHTa0YTZBPiI/WdzrP7CzR1UX09lLby5dEXx/xfnXQGQCcaHiY2to0JrVSjPH2Xtj8/QkPD0KPzyRsTYijg/3Ymx50IMrM7KyNtbUByIEmIM1X1dRLfijIo7WVEkl7O0UIY6uTOT5ObQ0NC4cgmMBAIjiYCAqiPlkutw0vZ3x8dOH9EtWhQqGoFzehjqqeyDE2Nt7R2a0+9PXxQnNfGQY4B01NRH09tQ0OmpKXCLoNiKLiCjg0ISFERAS1+fgQ7BQejY7aoCbHvHavMwA56uoa0MOoqPXM3yj4CtXVlAcAzFAoCFMH3ALcCGzXrxP29kR0NBEXR6xZw6zdEYncRO5uA4MLFT6aW9p1sSxakqOxqRW1KZEbIph8juXlRGkp9RyVSsIsAXFTSQm1gQMbE0Ns3Up5JwwhMnJdfkHRGx9d2drSvkFb6WhDW5lMjs5W8vIUOeq8whnZ26vIeTObAZ4aqGJzZQZNO8LNglsNT6CnR1lYSM7o2rMZsXYNetjU3KpXs9Le3olmpOmyhgipUJDFxcqcHLKxEeJD7p49HFCzEBm2tKyiDixXahkQeAKKv/wFnFZOairvwAEOeLJawcvLw87OVp2P3tSkX3LQJjmGhWnTvUFOTSlzc5U3b1LdEur4EPZFIsJ9lU2zdqNGo8hXr1TeN5mfL8/P58TGcrOzuXErroYFVh5i2sqqmoXQYXxCIhlxdRXqyax0di3GKZaWFn6+Ky5JrmxokJ84ofz220VmqBgD0SlBMGiATQCqXlc1OdSPoqpK8Yc/yH/1Ky1+MiQk8G3yYpcccrkCLcrs6+OtTX752BixnHElu+dvw381zXN5c7PkvOdBfyB92kyVDvDXWJiys1Nf5Hj1qg9d1DkgwJfBB0WqXA2hcBVZlnAqn5KcnSV6epj6SRcXZ3SKYVdXr77I0dePHjK7zAVZU7Mwlhi7OubjczhUKAs3XlfHbHTm77/40g5JJNpNaVkxOfo019Xy9GTUPxgepsIWQHo6wV8FyetRUSodqXz0iNkf9kIyNZVKklb4li1y9PcNqPdtbKwZX8NdeecO9T9HR2L7djNnBrB//35V4EYWFTH72x6aKyL+5DK8zJBD3TU7fwXMewbk/fsLfvuePWC0zJkc2dmgeKn34epVgukaLLTlMgeG2Nccc3NzaHKiqwsLFQGVSsVf/0qCAebxiF/+0mzD2sxMIiODehk6OpRXrjD+80KhExpFSpdbfpBhctCWOGRpJJZ88UJ5+TK15+BA/PrXxNq1ZkULIP3Bg5TagDudm5P/6U9spKFwuVwHB/tFwUn1QA7Nc7C31IPy9GllQcECP775hjh2jHAxi7ql69cTv/sdsW2bihmKP/6RWK57gxnl4bxYw0OqFTlWFhFMaK4j7+TkyNZDBOPy5z+T09O8ffuoeC8lhdi0iRqNq6+ncnzGxzXeNnXKD+yo9lU76kNVlAj76h0I7ZZNA1iaPWRpSV3Astv8G7oQkao+1VkaaLqGQEAlFIaEEJGRaitJTk4CM8jaWvZ46Oi0GCtMTU1DzMLlclgkx/T0NHpoaytg9TVT/vOfZFUV75tvOEIhpY3htVvPUOIIkEAioaj28CGB9lurxRwfTyQlEQEBcJPM31d5ueJvfwMjzerTsxUIkNslZ2ZmViqvlZEDLQNHOz1LIMvK5J98ws3M5O7dy2EweAHxu7kRW7ZQOunePSIHqX0I9uuzz6jEPsbvRSYjKyogNiHFYoJ90KgwNT3NLjlmkAERDodjo3WG/opyP+fmlD/+CBvh7s5Zv57SIuCIoJocNlDvb3Y46kO1zkeVvMqy2NtzwsM5oO3hOzt3UqlZqu9Ay29+Q8xba6qvtqOD7OmBC6D/iNpmwa+RFFQ7i5/qExHzo82jo+TLl1Q3qL5q2s9bM4Gm1l9xpsjKyCGTyVF/WPuSTtplUA4OUr0gzDn0nLQ03pdfchwdieTkhcaohYxL5fPnin/9i+juJkwWtPV45bIV96CvTLpyxIkz+aU9wUO7f1/+zTfkkqRlZW6u4ve/N2lmUALi8TRlxzI5FMj4DY9nFuu+Dg5SUQNyX8qGBsXf/24O/Smag1MKuYJlciAjh2ZTkZhsbVXeXazjqfjHP8wjfZUWuCpXflMrEzCqqZRmlACsvHZtYaemhj6JzWRBW7CHu3JNvzJyoKaE8aqXhkR/Pznfq0Yyl3FjBOTQsCNa+Igr1ByIGVOYwUQjswbt7eWxrTnQ8jGgtcxKeZgd0EJt85GtJbvkWNLpNoNlYLRY0p1twy45BJonmNY8PYZRgTYQJlj5QNgKNYdmj+zk1BSWgdECXYQFwlotplOvrPvcwdEePZRKx7S7bk5ICO+3vzWuZznvr3FjYjhGdWEWFlr/U+noonTQxB+2yIHmjxDappBQ5HB15aSlGeHbxvH2hs08NAcqHe3SslZmVpycHNGSdSNSKYFhlJDJ5KhZob3VrGgOPp/nYG+nrjo1NCjR7tInCgt7v/4ai/CnbZ1QuKasTIt/KJEMo6Umtcv2XfHEIZHIXU2O/oEhLZLPKCgUpB4zG0wXWj+lPmR6kUpqrJsVgpritjghQi6XM1WDHYNZ9PVrkIM2jYU1cmiehjZ1FsNI8OpVP+IM8F1c9FKfw8tbY5aR1tP7MdgD2Prunl5U2Wtj+rUgh8jdzdp6sZ5mZ1cPFoaxob9/AB1YCfDXskzGiskBoay/ny96HXNzc1geRgWaOg8I8NMTOQjNgi0KhbK1rRPLw6jQ3NquIS+9aQ5AaIjGnI6mphYsD+OBQqFoa+tA3QB7ezv9kcPHxxsdnm3UoZghBuPo6OxGHQ5dCoFqQw5wfdeELq7VIJWO0qJqDAMCXTEeEB4WqldyUKfUXFoFXUEBw7BB7IsX9epDKytLrb1RQuva5xERYXw+T11WsKZGnJWZsYKQRyCwWFX1JLUFz2llYyIQp4wjlRDWRYTrMvdMS3JYW1mFrQkR1zepDiXDIz09L31933ew2y45ObSkBMuecTyvfoEeRkWt0+XXtJ+YRFtGo/xZFZaNYTE3N1dTW6c+tLGxDg0JNgw51kWEoV2l1TVi3BtmWIAIZmcXR3GjozfoOJ9Ze3JYWFjExkSqD1+/fl31/AWWkAFRVqaxlmxigq6FfnWa75r4gUZN/5JHpaSxLbq2mro3epCa9D7enl5eHoYkh6enyB8pbz00NNzQiHtLDYOHxU/Qw40bE3T/TV1nym/RXJ/84cPHWE76x+CQpAFZUdbOzjYmOtLw5IiICHdxcUaVW4vmqA+GHpCfX4Qa9M2bEhkpraMrObhcTmqKhvK4l/cAS0uf6O8frEV7RS0tNybFM/LLDBRgSYiPQQuSdnf3NjQ2Y5npDffy7qNqIzk5USCwMRZygAbbtjUVbfnxxzxcoEE/aG3rUPdTE9QS2FY0RW5gcgDiYqNRz2NIMvyk9BmWHNtQKsmcW7loCzDDxsbauMjB43F378pEWwoKH9JqYWMwjqdlFehCKo6ODltSNzL4+4wVfVu/LjwkeHFRwpmZ2Zs5d7H82MPY2HjuvUK0ZdfObRY6TLxmkRyAvXuz0Jm04EKj5hCDWVy/cRsdSfH3942J3sDsKZgkh6eHKDVlI+0GpnH1HxZQ9by2Hun14nK5Hx3Yw/hZGK4lmrk9TShc9EzHxyeuXM3BsmQWIyOjN27eQVvS05LZWFKNYXKAzTuYvRdtqRM34lQPRiMU5fmL11CD4u7mujUjhY1zMV+FOCQkMHlzItqSk5NLm/SNoTVy793vQmYZgkE5cvgAn51lVlkpUb1zxzZUy83JZN+fuQDxCxatjnhR11CkObSZlZnu4+PF0ulYIYeFBf9nR7JROoOZPHf+qjlVxNY/BgaGLl2+ibYEBwVsSd3M3hnZKm4PkUv2gd1oS1Nz603N7jyM98fExOR/Tp19jdRycXCwP3b0oHbT5w1MDkB8XHSS5vBgaemz4pJSLOmVYm5Odur786NIdUAej3vi+Md2drasnpfdZTH27dmBzroG3L6TDzE6lvf7Qy5XnP7hYi+SAgjYv28XmoNnkuTg83k/P3HEFSkrQ5IkGM66ugYs9fcMXM+dv9LcrLHKx5bUTUmJcXo4O+sL6tjaCj795BiaYQA3fPb8VZzz8T7MuHDpep3m3NcN69fu2rlNPxegj9WWXF2Fn/ziKLoenUKhOH3mEpq/hLHUmvxw7kp1dR3aGBTkf+RwNofDMR9yAMBAfvLzo7TlWiC4raisxjxYCplM9v3pCzTj6+frDc/QwoKvt8vQ3zptwcEBJ098jK42CmoT/I+CwmLMBhSTk1P/+vf3EPmjjV5eHp99etzKylKfV8LR8zQk8K2+P3NBprnGKQS9H2XvMZPlJnXD4KDkP6fO0orK+/p6f/7pcQZTvIyUHID29q5T/z33WnNibWCA3/Fjh7QuUGQeENc3Xbx0Y3Z2luZngDXRs84wGDkAELV/999zaOV2Yr7L7/jRg7oUGzHlwITML3hw/8EjmjjWrQs/eiSb2fwuYycHMV8s6rtT5wYGh9BGsCzbtm5JT0tmtVfY2DA6Nn7x4vW29k5ae0py0u5dmQZ8FBwDTn2emZ394ezllhb6DLnAQD8I2JyRuTBmjNpa8dXrt2dmNPLluFzuvr07NjEx39VUyaFSp3n590Gd0tqtra127tialBivt5he/5iYmLyZc3dpZw84XuB+BRqBeeUYQ9EEsbjx4uUbaHbTQu+Iv+/B7L0ikZuZ0QKe+bOK6tt38mkKQ+WYHzt6ULtVt8yTHMT8gmQXLl7r6KCX2QcFuzEpfvu2NKam+BkcXd29OTl3ezQH0ubvlAP+VkZ6CtyykVwqx3jKrYCJeVD0KL+gaGlOkK1AkJGRAlZGn/2DjEMiGckreFBTI176zF1cnH92ONuP/YFWUyWHCv0Dg1eu5HT3vFz6V6Bst2akJMTHMlJfQM+hWUFhcWVVzVLeg1OVmrIxc3uaoeJVUyKHSoU8KS2/l3eftuD2AkXs7TZvTgQtov8eQy3w6lX/w+InNbXiZVMkvb09P8re6+PtaZwXzzHaKl6Tk1O59wrBcVv2Cq2sLONioxIT47RboIptKBQK8LJLyyra3rKkhJ2d7Y6srfFx0cbco8Mx8hJvL1/23blb8I5qQb6+3gnxMRvWr7Vd+XLcLKmKque1YEGm3rKWO5iP5M2J6enJ1lZWRq72OCZR/6+9oysv7wF8vu0LPC43OCQwKnJdeFio/gdo4Bm+fNUPqqKmtg68zrd9jc/nQ+SVnpbMdu7n6iKHCm3tncXFT95dsBD8Oy9PUVhYaHBwgJ+vD6vjVeBmUjXQWtqbmltp40Q0gHsEThIoDNMaWeSYXOXQwUFJyaOnz6tr5+Zk7/4ml8v19HCH+NDT08PTU+QhcteRK6OjY339g/39A2DsOrt6xt+sr/sOuLm5bEpKSEiIsbS0JEwNHBMtKwuBTHVNXXl55dLepHcoFfBLhM5OQqGzo6MD7ANsBTYWlhY8Ho/PA9PEBUdSPv9nZnZ2enpmenoaVAJoiBHYRkZlMtl7ngssSGRkxAcJsUGBJrw4BMfUaw4PSYZra8UQK6I1bgwFIFlYWAi4PhFrwwySgYHJ8VaWNDW1Nja1tLd3yeVyfZ7a0cEevBygRWhokPHHIKuRHGrIZPLunt7Ozp6uru6u7l6WJnC7ugoD/P0CAnwDAvzc3VwJcwTH7EvZj46N9/UNgBc5OCSRjlDew9jY+Iru2sLCYt5ToZwVkcidEd8Wk8NIoVAowdOcov7MTM/MyOcBbqhSSYJXyudR/0FwAb6qymk1iX56NsBfhfcMDLC3t1vlyczvAy5+BBiYHBiYHBiYHBiYHBiYHBiYHBiYHBiYHBiYHBiYHBgYmBwYmBwYmBwYmBwYhsD/CzAASyIWME7alusAAAAASUVORK5CYII=" }, "css/foundation-icons.ttf": { "content_type": "application/octet-stream", "data": "AAEAAAAPAIAAAwBwRkZUTWi4HfYAAAD8AAAAHE9TLzJBOV7yAAABGAAAAGBjbWFwAA/1xQAAAXgAAAFCY3Z0IAAyADIAANRcAAAAFGZwZ22KCng5AADUcAAACZFnYXNwAAAAEAAA1FQAAAAIZ2x5ZvRq9EYAAAK8AAC8fmhlYWT9mbujAAC/PAAAADZoaGVhA/EC3QAAv3QAAAAkaG10eJ/0ADcAAL+YAAAEdmxvY2FRKCM8AADEEAAAAj5tYXhwAZ0KpwAAxlAAAAAgbmFtZUlnWKYAAMZwAAACqXBvc3RnrLJ7AADJHAAACzZwcmVw3OSS0gAA3gQAAACLAAAAAQAAAADMPaLPAAAAAM49PZMAAAAAzj09kwAEAXgB9AAFAAABTAFmAAAARwFMAWYAAAD1ABkAhAAAAgAGAwAAAAAAAAAAAAAQAAAAAAAAAAAAAABQZkVkAMDxAPIaAcD/wAAuAcAAQAAAAAEAAAAAAAAAAAAAACAAAQAAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAABAAEAAEAAPIa//8AAPEA//8PAwABAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABEAAACZAVUAAwAHAAAzETMRJzMRIxGId2ZmAVX+qxEBMwACAAAAFgFUAWoAKwBBAAABIxUzMh0BFCsBFTMyHQEUKwEVMzIdARQrARUUIyEiNRE0MyEyHQEzMh0BFAc1NC8BNjU0JiIGFRQXBwYdARQ7ATIBShgYCgoYGAoKGBgKChgQ/u4QEAESEBgKagY3FRgiGBY4BQmOCgEfHgoeCh0LHgodCx4KCRAQATQQEAkKHgqlLAYEGg0dFBwcFBwOGgMHLAsAAAMAAAAGAakBegAUABwALgAAJRYVFAYjISImNDcTMzYzMhcTFDIVJjI2NCYiBhQ3OQE0KwEiHQIxFDsBMTI1MQGnAgsI/nwICgS/AQYKDATBAdwWDw8WEDULIAoLHwsfBAMHCwoQBAFLCwn+sgEBBxAWDw8W2QoKAZALCwAEAAAADgFjAXIACwAXACMAMQAAATIdARQjISI9ATQzBRQrASI9ATQ7ATIVFzIdARQjISI9ATQzJRUUIzEjIj0BNDsBMTIBURIS/sAREQEnEukSEukSCBER/uMSEgEDEccREccRAXIREBEREBGHEREQERG7ERARERARVRARERARAAQAAAAPAWMBcQAMABkAJgAzAAABMh0BFAYjISI9ATQzBTIdARQGIyEiPQE0MwUyFh0BFCMhIj0BNDMFMhYdARQjISI9ATQzAVESCwf+wBERAUASCwf+wBERAUAHCxL+wBERAUAHCxL+wBERAXEREAgKEhARZREQBwsSEBFlCwcQEREQEmUKCBARERASAAAAAAQAAAAOAWMBcgALABgAJAAyAAABMh0BFCMhIj0BNDMVIj0BNDsBMhYdARQjFzIdARQjISI9ATQzNSI9ATQ7ATEyHQEUIzEBURIS/sARERER6gcLEjMSEv7jEREREccSEgFyERARERARmBEQEgsHEBGaERARERARNBEQEREQEQAABAAAAA4BYwFyAAsAFwAkADIAAAEyHQEUIyEiPQE0MwUyHQEUKwEiPQE0MxcyHQEUIyEiPQE0MyE3FRQjMSMiPQE0OwExMgFREhL+wBERAUASEukSEukSEv7jEREBHRISxxERxxIBchEQEREQEWYREBEREBHMERARERARVRARERARAAAAAgAA//sBiQGFAEIATAAAJRYVFCsBDgEiJicjIjU0PwE2Mh8BFhUUKwEWFzUjIj0BNDsBNSY1NDYyFhUUBxUzMh0BFCsBFTY3IyI1ND8BNjMyFyYyNjQmIyIGFRQBiAEIFRlZalkZFggCLwIKAjACCQwgLy4ICC4iIzIiIi8ICC8vIAwIAi4CBgUCoBoUFA0OFGgBAwgsNTUsCAMCUgUEVAICCCMJlggjCBsRJRkiIhklERsIIwiWCSMIAwJSBQRsFBwTFA0OAAACAAD//QGEAYMAHwArAAAlFhUUBiMiJyMGIyImNTQ3NSY1NDYzMhczNjMy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MEQHdW5pRjEwRQd1bmlGMTBGB3VuaUYxMTAHdW5pRjExMQd1bmlGMTEyB3VuaUYxMTMHdW5pRjExNAd1bmlGMTE1B3VuaUYxMTYHdW5pRjExNwd1bmlGMTE4B3VuaUYxMTkHdW5pRjExQQd1bmlGMTFCB3VuaUYxMUMHdW5pRjExRAd1bmlGMTFFB3VuaUYxMUYHdW5pRjEyMAd1bmlGMTIxB3VuaUYxMjIHdW5pRjEyMwd1bmlGMTI0B3VuaUYxMjUHdW5pRjEyNgd1bmlGMTI3B3VuaUYxMjgHdW5pRjEyOQd1bmlGMTJBB3VuaUYxMkIHdW5pRjEyQwd1bmlGMTJEB3VuaUYxMkUHdW5pRjEyRgd1bmlGMTMwB3VuaUYxMzEHdW5pRjEzMgd1bmlGMTMzB3VuaUYxMzQHdW5pRjEzNQd1bmlGMTM2B3VuaUYxMzcHdW5pRjEzOAd1bmlGMTM5B3VuaUYxM0EHdW5pRjEzQgd1bmlGMTNDB3VuaUYxM0QHdW5pRjEzRQd1bmlGMTNGB3VuaUYxNDAHdW5pRjE0MQd1bmlGMTQyB3VuaUYxNDMHdW5pRjE0NAd1bmlGMTQ1B3VuaUYxNDYHdW5pRjE0Nwd1bmlGMTQ4B3VuaUYxNDkHdW5pRjE0QQd1bmlGMTRCB3VuaUYxNEMHdW5pRjE0RAd1bmlGMTRFB3VuaUYxNEYHdW5pRjE1MAd1bmlGMTUxB3VuaUYxNTIHdW5pRjE1Mwd1bmlGMTU0B3VuaUYxNTUHdW5pRjE1Ngd1bmlGMTU3B3VuaUYxNTgHdW5pRjE1OQd1bmlGMTVBB3VuaUYxNUIHdW5pRjE1Qwd1bmlGMTVEB3VuaUYxNUUHdW5pRjE1Rgd1bmlGMTYwB3VuaUYxNjEHdW5pRjE2Mgd1bmlGMTYzB3VuaUYxNjQHdW5pRjE2NQd1bmlGMTY2B3VuaUYxNjcHdW5pRjE2OAd1bmlGMTY5B3VuaUYxNkEHdW5pRjE2Qgd1bmlGMTZDB3VuaUYxNkQHdW5pRjE2RQd1bmlGMTZGB3VuaUYxNzAHdW5pRjE3MQd1bmlGMTcyB3VuaUYxNzMHdW5pRjE3NAd1bmlGMTc1B3VuaUYxNzYHdW5pRjE3Nwd1bmlGMTc4B3VuaUYxNzkHdW5pRjE3QQd1bmlGMTdCB3VuaUYxN0MHdW5pRjE3RAd1bmlGMTdFB3VuaUYxN0YHdW5pRjE4MAd1bmlGMTgxB3VuaUYxODIHdW5pRjE4Mwd1bmlGMTg0B3VuaUYxODUHdW5pRjE4Ngd1bmlGMTg3B3VuaUYxODgHdW5pRjE4OQd1bmlGMThBB3VuaUYxOEIHdW5pRjE4Qwd1bmlGMThEB3VuaUYxOEUHdW5pRjE4Rgd1bmlGMTkwB3VuaUYxOTEHdW5pRjE5Mgd1bmlGMTkzB3VuaUYxOTQHdW5pRjE5NQd1bmlGMTk2B3VuaUYxOTcHdW5pRjE5OAd1bmlGMTk5B3VuaUYxOUEHdW5pRjE5Qgd1bmlGMTlDB3VuaUYxOUQHdW5pRjE5RQd1bmlGMTlGB3VuaUYxQTAHdW5pRjFBMQd1bmlGMUEyB3VuaUYxQTMHdW5pRjFBNAd1bmlGMUE1B3VuaUYxQTYHdW5pRjFBNwd1bmlGMUE4B3VuaUYxQTkHdW5pRjFBQQd1bmlGMUFCB3VuaUYxQUMHdW5pRjFBRAd1bmlGMUFFB3VuaUYxQUYHdW5pRjFCMAd1bmlGMUIxB3VuaUYxQjIHdW5pRjFCMwd1bmlGMUI0B3VuaUYxQjUHdW5pRjFCNgd1bmlGMUI3B3VuaUYxQjgHdW5pRjFCOQd1bmlGMUJBB3VuaUYxQkIHdW5pRjFCQwd1bmlGMUJEB3VuaUYxQkUHdW5pRjFCRgd1bmlGMUMwB3VuaUYxQzEHdW5pRjFDMgd1bmlGMUMzB3VuaUYxQzQHdW5pRjFDNQd1bmlGMUM2B3VuaUYxQzcHdW5pRjFDOAd1bmlGMUM5B3VuaUYxQ0EHdW5pRjFDQgd1bmlGMUNDB3VuaUYxQ0QHdW5pRjFDRQd1bmlGMUNGB3VuaUYxRDAHdW5pRjFEMQd1bmlGMUQyB3VuaUYxRDMHdW5pRjFENAd1bmlGMUQ1B3VuaUYxRDYHdW5pRjFENwd1bmlGMUQ4B3VuaUYxRDkHdW5pRjFEQQd1bmlGMURCB3VuaUYxREMHdW5pRjFERAd1bmlGMURFB3VuaUYxREYHdW5pRjFFMAd1bmlGMUUxB3VuaUYxRTIHdW5pRjFFMwd1bmlGMUU0B3VuaUYxRTUHdW5pRjFFNgd1bmlGMUU3B3VuaUYxRTgHdW5pRjFFOQd1bmlGMUVBB3VuaUYxRUIHdW5pRjFFQwd1bmlGMUVEB3VuaUYx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" }, "css/foundation-icons.woff": { "content_type": "application/font-woff", "data": "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" }, "css/cousine-regular.ttf": { "content_type": "application/octet-stream", "data": "AAEAAAASAQAABAAgRkZUTXvdAYQAAAEsAAAAHEdERUYAJwUEAAABSAAAAB5HUE9TDj8I4gAAAWgAAAU0R1NVQsxL0CUAAAacAAAAVE9TLzIAX7daAAAG8AAAAGBjbWFw9pTv5AAAB1AAAAQWY3Z0IGwXbZsAAAtoAAACsmZwZ21+YbYRAAAOHAAAB7RnYXNwABYAIwAAFdAAAAAQZ2x5ZgpAbGQAABXgAAH9cGhlYWQJNzoEAAITUAAAADZoaGVhCMIDgwACE4gAAAAkaG10eI6ECOAAAhOsAAAT6mxvY2GXtxfCAAInmAAACf5tYXhwCTQBsgACMZgAAAAgbmFtZcx46yQAAjG4AAAHQHBvc3QcdB2LAAI4+AAAKtJwcmVwyPOMjwACY8wAAAV6AAAAAQAAAADV7UW4AAAAAMhDeqcAAAAA3axBJAABAAAADAAAABYAAAACAAEAAQT9AAEABAAAAAIAAAAAAAEAAAAKAB4AOAABaGVicgAIAAQAAAAA//8AAQAAAAFtYXJrAAgAAAAHAAAAAQACAAMABAAFAAYABwAQAB4ALAA6AEgAXgB+AAgAAQAEAHgAlACwAMwACAABAAQA2gD2ARIBLgAIAAEABAE8AVgBdAGQAAgAAQAEAZ4BugHWAfIACAABAAgCAAIcAj4CYAKCAqQCxgLoAAgAAQANAu4DCgMmA0IDXgN6A5YDsgPOA+oEBgQiBD4ACAABAAIEOgRcAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAEAFAABABAAAQAYAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAEAFAABABAAAQAYAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwADABYAGgAeAAEAEgAAAAAAAQAAAAEAAAABAAAAAQAAAAMAAwAWABoAHgABABIAAAAAAAEAAAABAAAAAQAAAAEAAAADAAMAFgAaAB4AAQASAAAAAAABAAAAAQAAAAEAAAABAAAAAwADABYAGgAeAAEAEgAAAAAAAQAAAAEAAAABAAAAAQAAAAMAAwAWABoAHgABABIAAAAAAAEAAAABAAAAAQAAAAEAAAADAAMAFgAaAB4AAQASAAAAAAABAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAGgAeAAIAEgAWAAAAAAABAAAAAQAAAAEAAAABAAAAAwACABoAHgACABIAFgAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAKAB4ALAABaGVicgAIAAQAAAAA//8AAQAAAAFjY21wAAgAAAABAAAAAQAEAAYAAQABAAgAAwAAAAIAEAAUAAEAGAAAAAEAAAABAAAAAQAAAAMEzAGQAAUABAWaBTMAAAEdBZoFMwAA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NQArNTUAAAD//wBC/lcEiQW0EiYAXAAAEQYAdGsAABNACwEVESYBaxUYChElASs1ACs1AAACALn+VwRCBcwACwAgAD5AHx0GGhobABIbEiEiHAAaGxYUFAlQWRQWDA8PA1BZDxAAPysRADMYPysRADMYPz8REgE5OREzETMRMzMxMAE0JiMiBhUUFjMyNgE+ATMyEhEQISInIxYVESMRMxEUBwOIeoOXhoaVhXr96DKbfcbC/nj2VQUEtbQEAiLiwdve1cbKAk1pX/7v/uP9yrgInv5ZB3X+WUFcAP//AEL+VwSJBXsSJgBcAAARBgBpBQAAF0ANAgEVESYCAQUZFwoRJQErNTUAKzU1AP//AAAAAATMBl4SJgAkAAARBwH4AAIBCwATQAsCDgUmAgAPDgQHJQErNQArNQAAAP//AID/7ASIBVMSJgBEAAARBgH42wAAFbQCMBEmArj/9LQxMBofJQErNQArNQAAAP//AAAAAATMBqkSJgAkAAARBwH5AAAA9QATQAsCDgUmAgARGQQHJQErNQArNQAAAP//AID/7ASIBbQSJgBEAAARBgH57QAAE0ALAjARJgIHMzsaHyUBKzUAKzUA//8AAP5gBN8FRRImACQAABEHAfwByAALAAu2AhIWFgAAJQErNQAAAP//AID+VQSIBE4SJgBEAAARBwH8AXEAAAAOuQAC/8K0OTkCAiUBKzX//wBx/+wEdgaoEiYAJgAAEQcAdACEAPQAE0ALARcFJgF2FxoMByUBKzUAKzUAAAD//wCC/+wEOAW0EiYARgAAEQYAdGYAABNACwEbESYBbxseABQlASs1ACs1AP//AHH/7AR2BqkSJgAmAAARBwH2ABQA9QATQAsBGAUmAQYdFwwHJQErNQArNQAAAP//AIL/7AQ4BbQSJgBGAAARBgH2AAAAE0ALARwRJgEJIRsAFCUBKzUAKzUA//8Acf/sBHYGZhImACYAABEHAfoAHgCaABNACwEXBSYBERcZDAclASs1ACs1AAAA//8Agv/sBDgFzBImAEYAABEGAfoUAAATQAsBGxEmAR4bHQAUJQErNQArNQD//wBx/+wEdgapEiYAJgAAEQcB9wARAPUAE0ALARcFJgEDGR8MByUBKzUAKzUAAAD//wCC/+wEOAW0EiYARgAAEQYB9/wAABNACwEbESYBBR0jABQlASs1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XXErERIAORgvMysRADMYPzMREgE5ETMSOREzETMRMzMxMBMzFSEVIRUUBzM2MyAZASMRNCYjIgYVESMRIzUzubUBK/7VCQNp6gFetWlzfJ+0hIQFzJ2DhDuKzf6D/U0CmYiEtZv9qwSsgwAA//8AygAABAEGnhImACwAABEHAf0AAQD1ABNACwEMBSYBARYjAAElASs1ACs1AAAA//8AjwAABGUFqRImAPEAABEGAf0AAAAVtAEKESYBuP/stBQhAwElASs1ACs1AAAA//8AygAABAEGXhImACwAABEHAfgAAgELABNACwEMBSYBAQ0MAAElASs1ACs1AAAA//8AjwAABGUFUxImAPEAABEGAfgIAAAVtAEKESYBuP/ztAsKAwElASs1ACs1AAAA//8AygAABAEGqBImACwAABEHAfkAAAD0ABNACwEMBSYBAA8XAAElASs1ACs1AAAA//8AjwAABGUFtBImAPEAABEGAfkUAAATQAsBChEmAQANFQMBJQErNQArNQD//wDK/lUEAQVFEiYALAAAEQYB/A0AAA63AQEPEQwAASUBKzUANQAA//8Aj/5VBGUFzBImAEwAABEGAfw4AAAOtwICJhMOAwElASs1ADUAAP//AMoAAAQBBmYSJgAsAAARBwH6AAAAmgATQAsBDAUmAQEMDgABJQErNQArNQAAAAABAI8AAARlBDoACQAsQBYBAAAEBQULCggHUFkIDwAEAwRQWQMVAD8rEQAzGD8rERIBOREzMxEzMTAlIRUhNSERITUhAukBfPwqAab+wQHzjo6OAx6OAAAAAgBi/+wEhQVFAAMAFQA7QB4CAxMSBwwMEgMDFhcTEw8PBF9ZDxMKCV9ZAAoDAxIAPz8zKwAYPysRADMYLxESARc5ETMRMxEzMTATMxEjJTI2NREhNSERFAYjIiYnNx4BYr+/Ap5oX/7xAc3KvKi5JboUZwVF+ruHj4oDCZz8X9PlrcUfgXUAAAQA2P5XBCUFzAADAAcAFgAaAEhAKAQHBwICAxcaGhYKEAoDAxscDRNQWQ0bGAUXMARgBAKABAEEAxUIAA8APzI/L11xMy8zPysREgEXOREzMxEzETMRMxEzMTATMxEjAzUzFQUzERQGIyImJzUWMzI2NQM1MxXts7QUyAHRtODPT6QtlnuAihTIBDr7xgUMwMDS+6q70hoRjCKE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//8As/6/BEIFzBImAEUAABEHBNUC8gAAAA65AAL/4bQjJQoAJQErNf//AKL+vASABUUSJgAlAAARBwIIAoAAAAAOuQAD/++0ISIFACUBKzX//wCz/rwEQgXMEiYARQAAEQcCCAI3AAAADrkAAv+8tCQlCgAlASs1//8Acf5EBHYGmxImACYAABAnBPcBywAAEQcAeAFiAAAAHEASARcFJgIbIR0MByUBdhcaDAclASs1KzUAKzUAAP//AIL+RAQ4BbQSJgBGAAAQJwB0AKEAABEHAHgBUQAAABxAEgEbESYCISUhABQlAW8bHgAUJQErNSs1ACs1AAD//wCiAAAEZQZmEiYAJwAAEQcB+v/YAJoAFbQCFQUmArj/vLQTFQUAJQErNQArNQD//wCK/+YEGQXMEiYARwAAEQYB+rwAAAeyAiQAAD81AP//AKL+vwRlBUUSJgAnAAARBwTVAukAAAAOuQAC/8+0ExUFACUBKzX//wCK/r8EGQXMEiYARwAAEQcE1QLuAAAAC7YCBSQmBhIlASs1AAAA//8Aov68BGUFRRImACcAABEHAggCWAAAAA65AAL/1LQUFQUAJQErNf//AIr+vAQZBcwSJgBHAAARBwIIAlQAAAALtgICJSYGEiUBKzUAAAD//wCi/jkEZQVFEiYAJwAAEQcCBAJWAAAADrkAAv/QtBYbBQAlASs1//8Aiv45BBkFzBImAEcAABEHAgQCWAAAAAu2AgQnLAYSJQErNQAAAP//AKL+VwRlBUUSJgAnAAARBwIFAmAAAAAOuQAC/9i0GRMFACUBKzX//wCK/lcEGQXMEiYARwAAEQcCBQJcAAAAC7YCBSokBhIlASs1AAAA//8AogAABGIHKxImACgAABEHBN8CegAAABm2AgETBSYCAbj/+bQUFQELJQErNTUAKzU1AP//AIX/7ARGBscSJgBIAAAQJwBD/8MBExEGAfgCAAAXQA0DAiIRJgMCASIhDRMlASs1NQArNTUA//8AogAABGIHKxImACgAABEHBOAChAAAABdADQIBFQUmAgECFRQBCyUBKzU1ACs1NQAAAP//AIX/7ARGBscSJgBIAAAQJwB0AD0BExEGAfgCAAAXQA0DAiIRJgMCASIhDRMlASs1NQArNTUA//8Aov5XBGIFRRImACgAABEHAgUClgAAAAu2AQ8TDQELJQEr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BM0AjwTNAI8EzQCPBM0AfQTNALMEzQCCBM0AggTNAIIEzQCCBM0AggTNAHQEzQBuBM0AuQTNALkEzQC5BM0AuQTNAEIEzQC5BM0AQgTNAAAEzQCABM0AAATNAIAEzQAABM0AgATNAHEEzQCCBM0AcQTNAIIEzQBxBM0AggTNAHEEzQCCBM0AogTNAB8EzQAbBM0AigTNAKIEzQCFBM0AogTNAIUEzQCiBM0AhQTNAKIEzQCFBM0AogTNAIUEzQBxBM0AjwTNAHEEzQCPBM0AcQTNAI8EzQBxBM0AjwTNAKIEzQC5BM0AAgTNADUEzQDKBM0AjwTNAMoEzQCPBM0AygTNAI8EzQDKBM0AjwTNAMoEzQCPBM0AYgTNANgEzQCwBM0AdQTNAKIEzQDsBM0A7ATNAO0EzQCGBM0A7QTNAIYEzQDtBM0AVQTNAO0EzQCGBM0ANgTNAIYEzQCiBM0AswTNAKIEzQCzBM0AogTNALMEzQAFBM0AswTNALMEzQBmBM0AggTNAGYEzQCCBM0AZgTNAIIEzQAUBM0AHATNAKIEzQDyBM0AogTNAMsEzQCiBM0A8gTNAE8EzQCnBM0ATwTNAKcEzQBPBM0ApwTNAE8EzQCnBM0ATATNAL4EzQBMBM0AZQTNAEwEzQDIBM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0AAATNABUEzQAkBM0AQgTNACQEzQBJBM0AkwTNAEkEzQCTBM0ASQTNAJMEzQGQBM0AOgTN/90EzQCiBM0AswTNAAQEzQA5BM0AVwTNAGYEzQCCBM0AGwTN/90EzQA5BM0AigTNAIIEzQBrBM0AZwTNAF0Ezf/gBM0A6gTNAHEEzQAFBM0AaQTNAIYEzQDKBM0AogTNAOwEzQCGBM0AcgTNAFUEzf/LBM0AswTNAGYEzQBmBM0AggTNADIEzQAmBM3/3QTNALkEzQCiBM0AZATNAKkEzQBsBM0A3wTNAL4EzQAUBM0AvgTNAEwEzQCOBM0AtATNADoEzQCOBM0AAATNAEwEzQBJBM0AkwTNABcEzQBGBM0AgATNAJcEzQB7BM0AeATNAKAEzQCBBM0AuQTNAgwEzQFyBM0AggTNAgMEzQBZBM0AWQTNADIEzQBZBM0AWQTNAAAEzQBZBM0AWQTNAFMEzQAA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BM0AogTNAL8EzQBfBM0AmgTNAIEEzQBmBM0AhgTNAAAEzQCABM0AAATNAIAEzQABBM0AFATNAKIEzQCFBM0AaATNAIUEzQAABM0AAQTNAEMEzQCKBM0ATQTNAHoEzQCiBM0AuQTNAKIEzQC5BM0AZgTNAIIEzQBmBM0AggTNAGYEzQCCBM0AVwTNAHwEzQAUBM0AQgTNABQEzQBCBM0AFATNAEIEzQBfBM0AmgTNAOAEzQEJBM0AaQTNAGoEzQA3BM0AewTNACQEzQB9BM0AJATNAH0EzQAABM0AgATNAKIEzQCzBM0AogTNALMEzQCiBM0AswTNAHEEzQCCBM0AogTNAIoEzQCiBM0AigTNAKIEzQCKBM0AogTNAIoEzQCiBM0AigTNAKIEzQCFBM0AogTNAIUEzQCiBM0AhQTNAKIEzQCFBM0AogTNAIUEzQDCBM0AigTNAHEEzQCPBM0AogTNALkEzQCiBM0AuQTNAKIEzQC5BM0AiQTNAJUEzQCiBM0AuQTNAMoEzQCPBM0AygTNAI8EzQCiBM0A7ATNAKIEzQDsBM0AogTNAOwEzQDtBM0AhgTNAO0EzQCGBM0A7QTNAIYEzQDtBM0AhgTNAIEEzQBjBM0AgQTNAGMEzQCBBM0AYwTNAKIEzQDGBM0AogTNAMYEzQCiBM0AxgTNAKIEzQDGBM0AZgTNAIIEzQBmBM0AggTNAGYEzQCCBM0AZgTNAIIEzQCiBM0AswTNAKIEzQCzBM0AogTNAPIEzQCiBM0A8gTNAKIEzQDyBM0AogTNAHQEzQBPBM0ApwTNAE8EzQCnBM0ATwTNAKcEzQBPBM0ApwTNAE8EzQCnBM0ATATNAL4EzQBMBM0AvgTNAEwEzQC+BM0ATATNAL4EzQCOBM0AuQTNAI4EzQC5BM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0ACgTNAEUEzQAKBM0ARQTNAAAEzQAVBM0AAATNABUEzQAABM0AFQTNAAAEzQAVBM0AAATNABUEzQAkBM0AXgTNACQEzQBeBM0AJATNAEIEzQBJBM0AkwTNAEkEzQCTBM0ASQTNAJMEzQC5BM0AvgTNABUEzQBCBM0AgATNAZAEzQCWBM0AAATNAIAEzQAABM0AgATNAAAEzQCABM0AAATNAEAEzQAABM0AgATNAAAEzQCABM0AAATNAIAEzQAA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ZEJkXGSkZPhlWGWsZdJl9mYcZjZmZmaOZuJnFGdWZ4hnumfqaBRoNGhoaIposmjcaRRpKmlMaWpphmmQaZhp/mpiaoRqwGrYavhrSGtoa4BrzmxEbF5sZmxubIxs0mzabOJs6m1KbVJtWm2MbZRtnG3ibepuDm4WblxuZG5sbtZu3m8ob4Rvnm+4b85v5G/6cBBwKnCWcPxxQHGacgRyYHKgcvRzLnM2c4Zz0HQEdHh0gHTMdRh1dHW+df52PHaYdvR3PHekd7532HfueAR4GniUeRB5VnlieXx5hHnsemx6tnr+e0J7qnvifBx8hnyyfR59cn3Wfj5+iH7UfyB/moAGgGiA0oE6gZCB5oIygnCC0oM6g0KDSoNSg56D7IP0g/yEBIRAhIaE6ITwhQqFJIU8hVaFtoXOhkaGToZWhnCGeIbYhy6HeIeQh6iHwIf0h/yISIhQiFiIpoiuiSqJponkifyKSoqKipKKmoqiisaKzorWit6LKosyizqLbIuii9SMEoxYjKKM4I1ejb6OFI4cjoSO4o8Cj1CPWI/OkECQeJCOkNaREpFekZKRmpHAkciR0JH2kf6SXpJmkpqS0JMCkz6ThpPSlBKUhJTmlTSVTJVklcqV4pZWll6WZpZ+loaW5pc+l5SXqpfCl9iYCph+mNCZIplymeKaUJqcmuabSpusnBCccJzmnVqeFJ7GnxifZJ/QoDigdqC2oNCg6qFgodSiUKLMo4CkHqQypEqkkqTapS6lYqWUpbal2KYQps6npqgQqHaoyKkYqXSp8KoWqjyqdKqsqwirZKvwrHSs+K1+rdauMq6Qru6vSK+ir/KwQrCIsMyxBrFGsaayBLKEswCzarPmtBq0TrRWtI600LUYtWa1srXwtjC2cra2twK3UreIt5C3/LhmuNy5ULlYuXC5iLnqulC6nLrsuzq7irvMvBK8VryavPq9UL1YvW69hr2gvbq9wr3KveK9+L4Sviq+RL5cvna+jr7mvu6/Br8sv0a/Xr94v5C/6sBAwFrAcsCMwKTAvMDswQbBHsE4wVLBbMGEwbLB4MH6whLCasLAwxjDcsPExBrELsRExFzEaMR8xJDEpMS4xNjE+MUQxSDFNMVIxVzFcMWExZjFrMXAxdrF9sYQxizGQMZUxmjGfMaYxrLGyscixzrHiseix+zIAMgUyC7IgMiMyJjIrMjAyNTI6MkEyS7JRsmYyazJwMnUyejJ/MoQyibKcMqEypjKrMrAytjK8MsIyx7LMstGy17Last+y4rLnsuqy77LysvkzBzMOMxkzH7MuszUzRDNKM0+zVbNbM2EzZrNrs3CzdjOCs4ezjLOSs5gznTOiM6izrzO1s7wzwbPGs8yz0rPXs9yz4bPms+uz8LP1s/s0ADQFNAo0DzQVtCQ0KzQ6tEC0RjRLNFA0VjRcNGI0Z7RuNHQ0ejR/tIS0ibSPtJU0m7ShtKe0rTSzNLi0vbTCtMe0zLTRtNm037TltOu0+rUTNRg1HTUjNSk1L7U2NTy1QzVJtVA1VrVdNWQ1bTVztXo1gLWHNY21lDWataE1qDWvNbQ1uTW/NcU1yzXQtdc13bXkNeq18TX3tf42BLYMNhM2GTYfNiQ2KTYuNjM2OTY/NkW2TDZStlk2X7ZmNmy2czZ6NoE2hzaMtpK2mLaetqS2qrawtrW2ura/tsS2yrbQtta22rbgtuS26rbvNvU2+Tb+NwE3BzcNNxI3FTcbNyE3JzcstzI3QrdOt1o3XDdiN2g3bjd5t4G3ibeRt5m3pjeyN783wrfPt+U37bf5N/+4BrgPOBq4JrhSOFi4YjhmOHI4fjiOOJC4l7ioOLe4xDjLONO43zjruQW5KzlHuVo5fjmaOb657LoUujw6VDpYunk6jLqiutW68zsYOzS7VTuCu567tzvUu+U77rv/PAc8ErwvPD08Xjx4vIk8mbyqvK48xLzXPOA867z0PPy9DD0hPUG9Uz1YPWM9cD1+PY69nL2nPbs9xL3Pvdq95T34Pg2+Gb4nPjQ+RL5VPmm+gL6QPp++sz7Jvti+5777vxI/IT8wP0O/Wb9hv2m/dD9+v4g/lr+jP64AAAAAQAABP4AWgAIAFQABQACABAALwBcAAADuQDSAAMAAQAAABQA9gADAAEECQAAAGoAAAADAAEECQABAA4AagADAAEECQACAA4AeAADAAEECQADACQAhgADAAEECQAEAB4AqgADAAEECQAFABgAyAADAAEECQAGAA4A4AADAAEECQAHAKAA7gADAAEECQAIACgBjgADAAEECQAJABwBtgADAAEECQAKAsYB0gADAAEECQALADgEmAADAAEECQAMAFwE0AADAAEECQANAFwFLAADAAEECQAOAFQFiAADAAEECQDIABYF3AADAAEECQDJADAF8gADAAEECQDKAAgGIgADAAEECQDLAAYGKgADAAEECdkDABoGMABEAGkAZwBpAHQAaQB6AGUAZAAgAGQAYQB0AGEAIABjAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEAMAAgAEcAbwBvAGcAbABlACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AQwBvAHUAcwBpAG4AZQBSAGUAZwB1AGwAYQByAEEAcwBjAGUAbgBkAGUAcgAgAC0AIABDAG8AdQBzAGkAbgBlAEMAbwB1AHMAaQBuAGUAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMgAwAEMAbwB1AHMAaQBuAGUAQwBvAHUAcwBpAG4AZQAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlACAAYQBuAGQAIABtAGEAeQAgAGIAZQAgAHIAZQBnAGkAcwB0AGUAcgBlAGQAIABpAG4AIABjAGUAcgB0AGEAaQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAuAEEAcwBjAGUAbgBkAGUAcgAgAEMAbwByAHAAbwByAGEAdABpAG8AbgBTAHQAZQB2AGUAIABNAGEAdAB0AGUAcwBvAG4AQwBvAHUAcwBpAG4AZQAgAHcAYQBzACAAZABlAHMAaQBnAG4AZQBkACAAYgB5ACAAUwB0AGUAdgBlACAATQBhAHQAdABlAHMAbwBuACAAYQBzACAAYQBuACAAaQBuAG4AbwB2AGEAdABpAHYAZQAsACAAcgBlAGYAcgBlAHMAaABpAG4AZwAgAHMAYQBuAHMAIABzAGUAcgBpAGYAIABkAGUAcwBpAGcAbgAgAHQAaABhAHQAIABpAHMAIABtAGUAdAByAGkAYwBhAGwAbAB5ACAAYwBvAG0AcABhAHQAaQBiAGwAZQAgAHcAaQB0AGgAIABDAG8AdQByAGkAZQByACAATgBlAHchIgAuACAAQwBvAHUAcwBpAG4AZQAgAG8AZgBmAGUAcgBzACAAaQBtAHAAcgBvAHYAZQBkACAAbwBuAC0AcwBjAHIAZQBlAG4AIAByAGUAYQBkAGEAYgBpAGwAaQB0AHkAIABjAGgAYQByAGEAYwB0AGUAcgBpAHMAdABpAGMAcwAgAGEAbgBkACAAdABoAGUAIABwAGEAbgAtAEUAdQByAG8AcABlAGEAbgAgAFcARwBMACAAYwBoAGEAcgBhAGMAdABlAHIAIABzAGUAdAAgAGEAbgBkACAAcwBvAGwAdgBlAHMAIAB0AGgAZQAgAG4AZQBlAGQAcwAgAG8AZgAgAGQAZQB2AGUAbABvAHAAZQByAHMAIABsAG8AbwBrAGkAbgBnACAAZgBvAHIAIAB3AGkAZAB0AGgALQBjAG8AbQBwAGEAdABpAGIAbABlACAAZgBvAG4AdABzACAAdABvACAAYQBkAGQAcgBlAHMAcwAgAGQAbwBjAHUAbQBlAG4AdAAgAHAAbwByAHQAYQBiAGkAbABpAHQAeQAgAGEAYwByAG8AcwBzACAAcABsAGEAdABmAG8AcgBtAHMALgBoAHQAdABwADoALwAvAHcAdwB3AC4AYQBzAGMAZQBuAGQAZQByAGMAbwByAHAALgBjAG8AbQAvAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHMAYwBlAG4AZABlAHIAYwBvAHIAcAAuAGMAbwBtAC8AdAB5AHAAZQBkAGUAcwBpAGcAbgBlAHIAcwAuAGgAdABtAGwATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMABXAGUAYgBmAG8AbgB0ACAAMQAuADAAUwBhAHQAIABOAG8AdgAgACAANgAgADEANAA6ADIANgA6ADQANgAgADIAMAAyADEAawBlAGUAcABsAGUAbwBGAG8AbgB0ACAAUwBxAHUAaQByAHIAZQBsAAIAAAAAAAD9JwBUAAAAAAAAAAAAAAAAAAAAAAAAAAAE/gAAAQIBAwADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQAigDaAIMAkwEEAQUAjQCXAIgAwwDeAQYAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugEHAQgBCQEKAQsBDAD9AP4BDQEOAQ8BEAD/AQABEQESARMBAQEUARUBFgEXARgBGQEaARsBHAEdAR4BHwD4APkBIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwD6ANcBMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4A4gDjAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNALAAsQFOAU8BUAFRAVIBUwFUAVUBVgFXAPsA/ADkAOUBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQC7AW4BbwFwAXEA5gDnAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQApgGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInANgA4QIoANsA3ADdAOAA2QDfAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnEAmwJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpALIAswSqBKsAtgC3AMQErAC0ALUAxQStAIIAwgCHAKsErgSvBLAEsQSyAMYEswS0BLUAvgC/BLYEtwC8BLgEuQS6BLsEvAS9BL4EvwTABMEA9wTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wCMAJgAqACaAJkE1AClAJIAnACnAI8AlACVALkE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAZnbHlwaDEHdW5pMDAwRAd1bmkwMEIyB3VuaTAwQjMHdW5pMDBCOQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjYXJvbgZkY2Fyb24GRGNyb2F0B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3RhY2NlbnQHdW5pMDEyMgd1bmkwMTIzC0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIEaGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUGaWJyZXZlB0lvZ29uZWsHaW9nb25lawJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAd1bmkwMTM2B3VuaTAxMzcMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUHdW5pMDEzQgd1bmkwMTNDBkxjYXJvbgZsY2Fyb24ETGRvdARsZG90Bk5hY3V0ZQZuYWN1dGUHdW5pMDE0NQd1bmkwMTQ2Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQd1bmkwMTU2B3VuaTAxNTcGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4B3VuaTAxNjIHdW5pMDE2MwZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQFbG9uZ3MHdW5pMDE4MAd1bmkwMTgxB3VuaTAxODIHdW5pMDE4Mwd1bmkwMTg0B3VuaTAxODUHdW5pMDE4Ngd1bmkwMTg3B3VuaTAxODgHdW5pMDE4OQd1bmkwMThBB3VuaTAxOEIHdW5pMDE4Qwd1bmkwMThEB3VuaTAxOEUHdW5pMDE4Rgd1bmkwMTkwB3VuaTAxOTEHdW5pMDE5Mwd1bmkwMTk0B3VuaTAxOTUHdW5pMDE5Ngd1bmkwMTk3B3VuaTAxOTgHdW5pMDE5OQd1bmkwMTlBB3VuaTAxOUIHdW5pMDE5Qwd1bmkwMTlEB3VuaTAxOUUHdW5pMDE5RgVPaG9ybgVvaG9ybgd1bmkwMUEyB3VuaTAxQTMHdW5pMDFBNAd1bmkwMUE1B3VuaTAxQTYHdW5pMDFBNwd1bmkwMUE4B3VuaTAxQTkHdW5pMDFBQQd1bmkwMUFCB3VuaTAxQUMHdW5pMDFBRAd1bmkwMUFFBVVob3JuBXVob3JuB3VuaTAxQjEHdW5pMDFCMgd1bmkwMUIzB3VuaTAxQjQHdW5pMDFCNQd1bmkwMUI2B3VuaTAxQjcHdW5pMDFCOAd1bmkwMUI5B3VuaTAxQkEHdW5pMDFCQgd1bmkwMUJDB3VuaTAxQkQHdW5pMDFCRQd1bmkwMUJGB3VuaTAxQzAHdW5pMDFDMQd1bmkwMUMyB3VuaTAxQzMHdW5pMDFDNAd1bmkwMUM1B3VuaTAxQzYHdW5pMDFDNwd1bmkwMUM4B3VuaTAxQzkHdW5pMDFDQQd1bmkwMUNCB3VuaTAxQ0MHdW5pMDFDRAd1bmkwMUNFB3VuaTAxQ0YHdW5pMDFEMAd1bmkwMUQxB3VuaTAxRDIHdW5pMDFEMwd1bmkwMUQ0B3VuaTAxRDUHdW5pMDFENgd1bmkwMUQ3B3VuaTAxRDgHdW5pMDFEOQd1bmkwMURBB3VuaTAxREIHdW5pMDFEQwd1bmkwMUREB3VuaTAxREUHdW5pMDFERgd1bmkwMUUwB3VuaTAxRTEHdW5pMDFFMgd1bmkwMUUzB3VuaTAxRTQHdW5pMDFFNQZHY2Fyb24GZ2Nhcm9uB3VuaTAxRTgHdW5pMDFFOQd1bmkwMUVBB3VuaTAxRUIHdW5pMDFFQwd1bmkwMUVEB3VuaTAxRUUHdW5pMDFFRgd1bmkwMUYwB3VuaTAxRjEHdW5pMDFGMgd1bmkwMUYzB3VuaTAxRjQHdW5pMDFGNQd1bmkwMUY2B3VuaTAxRjcHdW5pMDFGOAd1bmkwMUY5CkFyaW5nYWN1dGUKYXJpbmdhY3V0ZQdBRWFjdXRlB2FlYWN1dGULT3NsYXNoYWN1dGULb3NsYXNoYWN1dGUHdW5pMDIwMAd1bmkwMjAxB3VuaTAyMDIHdW5pMDIwMwd1bmkwMjA0B3VuaTAyMDUHdW5pMDIwNgd1bmkwMjA3B3VuaTAyMDgHdW5pMDIwOQd1bmkwMjBBB3VuaTAyMEIHdW5pMDIwQwd1bmkwMjBEB3VuaTAyMEUHdW5pMDIwRgd1bmkwMjEwB3VuaTAyMTEHdW5pMDIxMgd1bmkwMjEzB3VuaTAyMTQHdW5pMDIxNQd1bmkwMjE2B3VuaTAyMTcHdW5pMDIxOAd1bmkwMjE5B3VuaTAyMUEHdW5pMDIxQgd1bmkwMjFDB3VuaTAyMUQHdW5pMDIxRQd1bmkwMjFGB3VuaTAyMjAHdW5pMDIyMQd1bmkwMjIyB3VuaTAyMjMHdW5pMDIyNAd1bmkwMjI1B3VuaTAyMjYHdW5pMDIyNwd1bmkwMjI4B3VuaTAyMjkHdW5pMDIyQQd1bmkwMjJCB3VuaTAyMkMHdW5pMDIyRAd1bmkwMjJFB3VuaTAyMkYHdW5pMDIzMAd1bmkwMjU0B3VuaTAyNTkHdW5pMDI3OAd1bmkwMjkyB3VuaTAyQkUHdW5pMDJDOQ1ob29rYWJvdmVjb21iB3VuaTAzMEYHdW5pMDMxMQd1bmkwMzI0B3VuaTAzMjUHdW5pMDMyNgd1bmkwMzJEB3VuaTAzMkUHdW5pMDMzMAd1bmkwMzMxB3VuaTAzNDUHdW5pMDM3NAd1bmkwMzc1B3VuaTAzN0EHdW5pMDM3Qgd1bmkwMzdDB3VuaTAzN0QFdG9ub3MNZGllcmVzaXN0b25vcwpBbHBoYXRvbm9zDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rvbm9zBUFscGhhBEJldGEFR2FtbWEHdW5pMDM5NAdFcHNpbG9uBFpldGEDRXRhBVRoZXRhBElvdGEFS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA1BoaQNDaGkDUHNpB3VuaTAzQTkMSW90YWRpZXJlc2lzD1Vwc2lsb25kaWVyZXNpcwphbHBoYXRvbm9zDGVwc2lsb250b25vcwhldGF0b25vcwlpb3RhdG9ub3MUdXBzaWxvbmRpZXJlc2lzdG9ub3MFYWxwaGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEFa2FwcGEGbGFtYmRhB3VuaTAzQkMCbnUCeGkHb21pY3JvbgNyaG8Gc2lnbWExBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNjaGkDcHNpBW9tZWdhDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpvbWVnYXRvbm9zB3VuaTAzRDAGdGhldGExCFVwc2lsb24xB3VuaTAzRDMHdW5pMDNENARwaGkxBm9tZWdhMQd1bmkwM0Q3B3VuaTAzRDgHdW5pMDNEOQd1bmkwM0RBB3VuaTAzREIHdW5pMDNEQwd1bmkwM0REB3VuaTAzREUHdW5pMDNERgd1bmkwM0UwB3VuaTAzRTEHdW5pMDNFMgd1bmkwM0UzB3VuaTAzRTQHdW5pMDNFNQd1bmkwM0U2B3VuaTAzRTcHdW5pMDNFOAd1bmkwM0U5B3VuaTAzRUEHdW5pMDNFQgd1bmkwM0VDB3VuaTAzRUQHdW5pMDNFRQd1bmkwM0VGB3VuaTAzRjAHdW5pMDNGMQd1bmkwM0YyB3VuaTAzRjMHdW5pMDNGNAd1bmkwM0Y1B3VuaTAzRjYHdW5pMDNGNwd1bmkwM0Y4B3VuaTAzRjkHdW5pMDNGQQd1bmkwM0ZCB3VuaTAzRkMHdW5pMDNGRAd1bmkwM0ZFB3VuaTAzRkYHdW5pMDQwMAd1bmkwNDAxB3VuaTA0MDIHdW5pMDQwMwd1bmkwNDA0B3VuaTA0MDUHdW5pMDQwNgd1bmkwNDA3B3VuaTA0MDgHdW5pMDQwOQd1bmkwNDBBB3VuaTA0MEIHdW5pMDQwQwd1bmkwNDBEB3VuaTA0MEUHdW5pMDQwRgd1bmkwNDEwB3VuaTA0MTEHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MTQHdW5pMDQxNQd1bmkwNDE2B3VuaTA0MTcHdW5pMDQxOAd1bmkwNDE5B3VuaTA0MUEHdW5pMDQxQgd1bmkwNDFDB3VuaTA0MUQHdW5pMDQxRQd1bmkwNDFGB3VuaTA0MjAHdW5pMDQyMQd1bmkwNDIyB3VuaTA0MjMHdW5pMDQyNAd1bmkwNDI1B3VuaTA0MjYHdW5pMDQyNwd1bmkwNDI4B3VuaTA0MjkHdW5pMDQyQQd1bmkwNDJCB3VuaTA0MkMHdW5pMDQyRAd1bmkwNDJFB3VuaTA0MkYHdW5pMDQzMAd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDM0B3VuaTA0MzUHdW5pMDQzNgd1bmkwNDM3B3VuaTA0MzgHdW5pMDQzOQd1bmkwNDNBB3VuaTA0M0IHdW5pMDQzQwd1bmkwNDNEB3VuaTA0M0UHdW5pMDQzRgd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mgd1bmkwNDQzB3VuaTA0NDQHdW5pMDQ0NQd1bmkwNDQ2B3VuaTA0NDcHdW5pMDQ0OAd1bmkwNDQ5B3VuaTA0NEEHdW5pMDQ0Qgd1bmkwNDRDB3VuaTA0NEQHdW5pMDQ0RQd1bmkwNDRGB3VuaTA0NTAHdW5pMDQ1MQd1bmkwNDUyB3VuaTA0NTMHdW5pMDQ1NAd1bmkwNDU1B3VuaTA0NTYHdW5pMDQ1Nwd1bmkwNDU4B3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDVCB3VuaTA0NUMHdW5pMDQ1RAd1bmkwNDVFB3VuaTA0NUYHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjIHdW5pMDQ2Mwd1bmkwNDY0B3VuaTA0NjUHdW5pMDQ2Ngd1bmkwNDY3B3VuaTA0NjgHdW5pMDQ2OQd1bmkwNDZBB3VuaTA0NkIHdW5pMDQ2Qwd1bmkwNDZEB3VuaTA0NkUHdW5pMDQ2Rgd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDc2B3VuaTA0NzcHdW5pMDQ3OAd1bmkwNDc5B3VuaTA0N0EHdW5pMDQ3Qgd1bmkwNDdDB3VuaTA0N0QHdW5pMDQ3RQd1bmkwNDdGB3VuaTA0ODAHdW5pMDQ4MQd1bmkwNDgyB3VuaTA0ODMHdW5pMDQ4NAd1bmkwNDg1B3VuaTA0ODYHdW5pMDQ4Nwd1bmkwNDg4B3VuaTA0ODkHdW5pMDQ4QQd1bmkwNDhCB3VuaTA0OEMHdW5pMDQ4RAd1bmkwNDhFB3VuaTA0OEYHdW5pMDQ5MAd1bmkwNDkxB3VuaTA0OTIHdW5pMDQ5Mwd1bmkwNDk0B3VuaTA0OTUHdW5pMDQ5Ngd1bmkwNDk3B3VuaTA0OTgHdW5pMDQ5OQd1bmkwNDlBB3VuaTA0OUIHdW5pMDQ5Qwd1bmkwNDlEB3VuaTA0OUUHdW5pMDQ5Rgd1bmkwNEEwB3VuaTA0QTEHdW5pMDRBMgd1bmkwNEEzB3VuaTA0QTQHdW5pMDRBNQd1bmkwNEE2B3VuaTA0QTcHdW5pMDRBOAd1bmkwNEE5B3VuaTA0QUEHdW5pMDRBQgd1bmkwNEFDB3VuaTA0QUQHdW5pMDRBRQd1bmkwNEFGB3VuaTA0QjAHdW5pMDRCMQd1bmkwNEIyB3VuaTA0QjMHdW5pMDRCNAd1bmkwNEI1B3VuaTA0QjYHdW5pMDRCNwd1bmkwNEI4B3VuaTA0QjkHdW5pMDRCQQd1bmkwNEJCB3VuaTA0QkMHdW5pMDRCRAd1bmkwNEJFB3VuaTA0QkYHdW5pMDRDMAd1bmkwNEMxB3VuaTA0QzIHdW5pMDRDMwd1bmkwNEM0B3VuaTA0QzUHdW5pMDRDNgd1bmkwNEM3B3VuaTA0QzgHdW5pMDRDOQd1bmkwNENBB3VuaTA0Q0IHdW5pMDRDQwd1bmkwNENEB3VuaTA0Q0UHdW5pMDRDRgd1bmkwNEQwB3VuaTA0RDEHdW5pMDREMgd1bmkwNEQzB3VuaTA0RDQHdW5pMDRENQd1bmkwNEQ2B3VuaTA0RDcHdW5pMDREQQd1bmkwNERCB3VuaTA0REMHdW5pMDRERAd1bmkwNERFB3VuaTA0REYHdW5pMDRFMAd1bmkwNEUxB3VuaTA0RTIHdW5pMDRFMwd1bmkwNEU0B3VuaTA0RTUHdW5pMDRFNgd1bmkwNEU3B3VuaTA0RTgHdW5pMDRFOQd1bmkwNEVBB3VuaTA0RUIHdW5pMDRFQwd1bmkwNEVEB3VuaTA0RUUHdW5pMDRFRgd1bmkwNEYwB3VuaTA0RjEHdW5pMDRGMgd1bmkwNEYzB3VuaTA0RjQHdW5pMDRGNQd1bmkwNEY2B3VuaTA0RjcHdW5pMDRGOAd1bmkwNEY5B3VuaTA0RkEHdW5pMDRGQgd1bmkwNEZDB3VuaTA0RkQHdW5pMDRGRQd1bmkwNEZGB3VuaTFFMDAHdW5pMUUwMQd1bmkxRTAyB3VuaTFFMDMHdW5pMUUwNAd1bmkxRTA1B3VuaTFFMDYHdW5pMUUwNwd1bmkxRTA4B3VuaTFFMDkHdW5pMUUwQQd1bmkxRTBCB3VuaTFFMEMHdW5pMUUwRAd1bmkxRTBFB3VuaTFFMEYHdW5pMUUxMAd1bmkxRTExB3VuaTFFMTIHdW5pMUUxMwd1bmkxRTE0B3VuaTFFMTUHdW5pMUUxNgd1bmkxRTE3B3VuaTFFMTgHdW5pMUUxOQd1bmkxRTFBB3VuaTFFMUIHdW5pMUUxQwd1bmkxRTFEB3VuaTFFMUUHdW5pMUUxRgd1bmkxRTIwB3VuaTFFMjEHdW5pMUUyMgd1bmkxRTIzB3VuaTFFMjQHdW5pMUUyNQd1bmkxRTI2B3VuaTFFMjcHdW5pMUUyOAd1bmkxRTI5B3VuaTFFMkEHdW5pMUUyQgd1bmkxRTJDB3VuaTFFMkQHdW5pMUUyRQd1bmkxRTJGB3VuaTFFMzAHdW5pMUUzMQd1bmkxRTMyB3VuaTFFMzMHdW5pMUUzNAd1bmkxRTM1B3VuaTFFMzYHdW5pMUUzNwd1bmkxRTM4B3VuaTFFMzkHdW5pMUUzQQd1bmkxRTNCB3VuaTFFM0MHdW5pMUUzRAd1bmkxRTNFB3VuaTFFM0YHdW5pMUU0MAd1bmkxRTQxB3VuaTFFNDIHdW5pMUU0Mwd1bmkxRTQ0B3VuaTFFNDUHdW5pMUU0Ngd1bmkxRTQ3B3VuaTFFNDgHdW5pMUU0OQd1bmkxRTRBB3VuaTFFNEIHdW5pMUU0Qwd1bmkxRTREB3VuaTFFNEUHdW5pMUU0Rgd1bmkxRTUwB3VuaTFFNTEHdW5pMUU1Mgd1bmkxRTUzB3VuaTFFNTQHdW5pMUU1NQd1bmkxRTU2B3VuaTFFNTcHdW5pMUU1OAd1bmkxRTU5B3VuaTFFNUEHdW5pMUU1Qgd1bmkxRTVDB3VuaTFFNUQHdW5pMUU1RQd1bmkxRTVGB3VuaTFFNjAHdW5pMUU2MQd1bmkxRTYyB3VuaTFFNjMHdW5pMUU2NAd1bmkxRTY1B3VuaTFFNjYHdW5pMUU2Nwd1bmkxRTY4B3VuaTFFNjkHdW5pMUU2QQd1bmkxRTZCB3VuaTFFNkMHdW5pMUU2RAd1bmkxRTZFB3VuaTFFNkYHdW5pMUU3MAd1bmkxRTcxB3VuaTFFNzIHdW5pMUU3Mwd1bmkxRTc0B3VuaTFFNzUHdW5pMUU3Ngd1bmkxRTc3B3VuaTFFNzgHdW5pMUU3OQd1bmkxRTdBB3VuaTFFN0IHdW5pMUU3Qwd1bmkxRTdEB3VuaTFFN0UHdW5pMUU3RgZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwd1bmkxRTg2B3VuaTFFODcHdW5pMUU4OAd1bmkxRTg5B3VuaTFFOEEHdW5pMUU4Qgd1bmkxRThDB3VuaTFFOEQHdW5pMUU4RQd1bmkxRThGB3VuaTFFOTAHdW5pMUU5MQd1bmkxRTkyB3VuaTFFOTMHdW5pMUU5NAd1bmkxRTk1B3VuaTFFOTYHdW5pMUU5Nwd1bmkxRTk4B3VuaTFFOTkHdW5pMUU5QQd1bmkxRTlCB3VuaTFFOUUHdW5pMUVBMAd1bmkxRUExB3VuaTFFQTIHdW5pMUVBMwd1bmkxRUE0B3VuaTFFQTUHdW5pMUVBNgd1bmkxRUE3B3VuaTFFQTgHdW5pMUVBOQd1bmkxRUFBB3VuaTFFQUIHdW5pMUVBQwd1bmkxRUFEB3VuaTFFQUUHdW5pMUVBRgd1bmkxRUIwB3VuaTFFQjEHdW5pMUVCMgd1bmkxRUIzB3VuaTFFQjQHdW5pMUVCNQd1bmkxRUI2B3VuaTFFQjcHdW5pMUVCOAd1bmkxRUI5B3VuaTFFQkEHdW5pMUVCQgd1bmkxRUJDB3VuaTFFQkQHdW5pMUVCRQd1bmkxRUJGB3VuaTFFQzAHdW5pMUVDMQd1bmkxRUMyB3VuaTFFQzMHdW5pMUVDNAd1bmkxRUM1B3VuaTFFQzYHdW5pMUVDNwd1bmkxRUM4B3VuaTFFQzkHdW5pMUVDQQd1bmkxRUNCB3VuaTFFQ0MHdW5pMUVDRAd1bmkxRUNFB3VuaTFFQ0YHdW5pMUVEMAd1bmkxRUQxB3VuaTFFRDIHdW5pMUVEMwd1bmkxRUQ0B3VuaTFFRDUHdW5pMUVENgd1bmkxRUQ3B3VuaTFFRDgHdW5pMUVEOQd1bmkxRURBB3VuaTFFREIHdW5pMUVEQwd1bmkxRUREB3VuaTFFREUHdW5pMUVERgd1bmkxRUUwB3VuaTFFRTEHdW5pMUVFMgd1bmkxRUUzB3VuaTFFRTQHdW5pMUVFNQd1bmkxRUU2B3VuaTFFRTcHdW5pMUVFOAd1bmkxRUU5B3VuaTFFRUEHdW5pMUVFQgd1bmkxRUVDB3VuaTFFRUQHdW5pMUVFRQd1bmkxRUVGB3VuaTFFRjAHdW5pMUVGMQZZZ3JhdmUGeWdyYXZlB3VuaTFFRjQHdW5pMUVGNQd1bmkxRUY2B3VuaTFFRjcHdW5pMUVGOAd1bmkxRUY5B3VuaTIwMEMHdW5pMjAwRAd1bmkyMDBFB3VuaTIwMEYKZmlndXJlZGFzaAd1bmkyMDE1DXVuZGVyc2NvcmVkYmwNcXVvdGVyZXZlcnNlZAd1bmkyMDFGB3VuaTIwMkEHdW5pMjAyQgd1bmkyMDJDB3VuaTIwMkQHdW5pMjAyRQZtaW51dGUGc2Vjb25kB3VuaTIwMzQJZXhjbGFtZGJsB3VuaTIwM0UHdW5pMjA1RQd1bmkyMDZBB3VuaTIwNkIHdW5pMjA2Qwd1bmkyMDZEB3VuaTIwNkUHdW5pMjA2Rgd1bmkyMEEwDWNvbG9ubW9uZXRhcnkHdW5pMjBBMgRsaXJhB3VuaTIwQTUHdW5pMjBBNgZwZXNldGEHdW5pMjBBOAd1bmkyMEE5B3VuaTIwQUEEZG9uZwRFdXJvB3VuaTIwQUQHdW5pMjBBRQd1bmkyMEFGB3VuaTIwQjAHdW5pMjBCMQd1bmkyMEIyB3VuaTIwQjMHdW5pMjBCNAd1bmkyMEI1B3VuaTIyMTkHdW5pMjVGQwd1bmlGQjAxB3VuaUZCMDIJZ2x5cGgxMjI5CWdseXBoMTIzMAlnbHlwaDEyMzEJZ2x5cGgxMjMyCWdseXBoMTIzMwlnbHlwaDEyMzQJZ2x5cGgxMjM1CWdseXBoMTIzNglnbHlwaDEyMzcJZ2x5cGgxMjM4CWdseXBoMTIzOQlnbHlwaDEyNDAJZ2x5cGgxMjQxCWdseXBoMTI0MglnbHlwaDEyNDMJZ2x5cGgxMjQ0CWdseXBoMTI0NQlnbHlwaDEyNDYJZ2x5cGgxMjQ3CWdseXBoMTI0OAlnbHlwaDEyNDkJZ2x5cGgxMjUwCWdseXBoMTI1MQlnbHlwaDEyNTIJZ2x5cGgxMjUzCWdseXBoMTI1NAlnbHlwaDEyNTUJZ2x5cGgxMjU2CWdseXBoMTI1NwlnbHlwaDEyNTgJZ2x5cGgxMjU5CWdseXBoMTI2MAlnbHlwaDEyNjEJZ2x5cGgxMjYyCWdseXBoMTI2MwlnbHlwaDEyNjQJZ2x5cGgxMjY1CWdseXBoMTI2NglnbHlwaDEyNjcJZ2x5cGgxMjY4CWdseXBoMTI2OQlnbHlwaDEyNzAJZ2x5cGgxMjcxCWdseXBoMTI3MglnbHlwaDEyNzMJZ2x5cGgxMjc0CWdseXBoMTI3NQlnbHlwaDEyNzYJZ2x5cGgxMjc3AABBJgFTAAEBTQBVAVIAAQFNAFUBVgFUABQAHwFVAVQAHwAfAU8AMwFOAFUBTAAzAU0AVQE9AD0BPABVATwAAQE6AFUBOwA9AToAVQE1ATSygB8AQS4BNAAQATQAAgE0AAIBLgBVATMASAEyAFUAgAEyAAEBMgACAS4AVQExAD0BMABVAA8BMAABATAAAgEuAFUBLwA9AS4AVQAgAS4AYAEuAAIAAAEuACABLgACAAkBLrIBAFW4AS2yPQBVuAEsswD/H3BBEQFEAAEBRAABAT4AVQFDAD0BQgBVAUIAAQE+AFUBPwA9AT5AZ1UA/QH1UCgf8kYoH/FGKh/wRjUfj+6f7q/uA2/vj+8Cv+8BoO8BH+9f72/vAwDsQOwCCutG/x/n5CYf5uQ9H+XkHh8P5AEd4+JGHw/iAUDiRhYf4eBGH7/gz+Df4ANA4DM2RuBGGB+8ARQAPgESAFUBE0AMPQNV3z3dVd493FUAQRIBFgABARYAAQEVAFUArwEVAAEAIAEVAFABFQACAA8BFQABARFAUwP/H90B3FUg3FDcgNyw3AQP3AHQFTMfX8Nvw3/DA7/CAcFQJh9wvgEgvjC+wL4DcL6AvgIPvB+8Ai+8P7xvvK+837wFua0mHyC4MLhQuHC4gLgFuP/AQBy4EylGELcBILdQt4C3sLcEgLWwtQIPsz+z77MDuAENQCuqSB+AsJCwArCwwLDQsAMvrz+vAqCtsK0CwK3QrQIvrD+sAp+rAcCq0KoCQQ0BDwAyAQ4AVQAAAQ4AEAEOACABDgADAA8BEEAVAVCcYJxwnAOZliYfmEYmHzCXQJcCuP/As5YWHEa4/8BACZYOEUahlDwfoEEJAUUAPAAfAUcBRQA8AB8BRgFFQChkH5Ub/x8PlK+Uv5QDQJQdMUZAlBYbRkCUDA9GD5Mvkz+Tf5PvkwUPugEMAG8BDEAgApKNJh+RU/8f35ABMJABH5AvkAJvkH+QAgCPEI8gjwO4/8BAII8YHEYgjjCOAk+NX41vjQMwjAEPjB+ML4wDQIwQE0YQvwELACABCwAwAQsAA//AAQuyFyBGuf/AAQtAUBAURouCJh+JSjwfiIc9H4eEPB+GSv8fn4UBEIQghDCEAzCDAX+CAUCCCQxGc1AmH29GNR9uRjUfGgEYVRkzGFUHMwNVBgP/H2BQJh9fUCYfuf/gAQeyHyZGuf/gAQdAHxMcRl5aSB9cRjEfW1pIH1pGMR8TMhJVBQEDVQQyA1W4AQi1GzwfDwMBuQEZARiyNR9AuAEYshcoRrgBCkAlUCYfUlAbH+9R/1ECQFE1OEZAUSUoRs9QAd9MAUxGHR9LRkgfULgBG0BiAUpGJh9JRjUfSEY1H0dGNR+vRgHfRu9GAoBGARcBFVUWMhVVEQEPVRAyD1UCAQBVAQD/HxwbZB8fDz8PXw9/DwQPDy8PTw9vD48P3w//Dwc/D38P7w8DbwABTwABoBYBBQG4AZCxVFMrK0u4B/9SS7AJUFuwAYiwJVOwAYiwQFFasAaIsABVWltYsQEBjlmFjY0AQh1LsDJTWLBgHVlLsGRTWLBAHVlLsIBTWLAQHbEWAEJZc3RzdHUrKysrKysrAXN0dSsrKytzACsrdHQrK3MrKysrcysrKysBKysrACsrKysrKysrKwErKwArAStzdHRzKysrKysrK3MAK3N0dHQrdXN0dHQrK3NzKysrcysrKysrASsrcysrAHN0cysBc3N0AHN0dHN0K3MBcwBzdCtzK3N0AXN0dQArcwF0ACtzcysrc3NzK3MrKysrASsrdCsrXnMrAF5zKysrAStecwBzc3N0cwErKysAK3MrKysrcysrK15zdCsrcysrcysrcysrKysrKysrKysYAAA=" } } }