{"id":6347,"date":"2026-07-10T15:24:25","date_gmt":"2026-07-10T15:24:25","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-6-test-1-speaking\/"},"modified":"2026-07-12T03:16:25","modified_gmt":"2026-07-12T03:16:25","slug":"celpip-set-6-test-1-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-6-test-1-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 6 \u00b7 Practice Test 1"},"content":{"rendered":"<div id=\"clp-spk-root\" style=\"min-height:300px\">\n<p style=\"text-align:center;padding:40px 0;color:#888\">Loading CELPIP Speaking\u2026<\/p>\n<\/div>\n<p><script>eval(atob(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0Ijo2LCJ0ZXN0IjoxLCJ0aXRsZSI6IkNFTFBJUCBTcGVha2luZyBcdTIwMTQgU2V0IDYgXHUwMGI3IFByYWN0aWNlIFRlc3QgMSIsImhlYWRlciI6IlByYWN0aWNlIFRlc3QgMSIsImltZ3MiOnsic2NlbmUiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczZ0MS1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M2dDEtb3B0LWEuanBnIiwib3B0QiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zNnQxLW9wdC1iLmpwZyIsIm9wdE90aGVyIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M2dDEtb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczZ0MS11bnVzdWFsLmpwZyJ9LCJvdGhlclVybCI6Ii9jZWxwaXAtc2V0LTYtdGVzdC0yLXNwZWFraW5nLyIsInRhc2tzIjpbeyJrIjoidyIsIm51bSI6MCwidHlwZUVuIjoiU3BlYWtpbmcgUHJhY3RpY2UgVGFzayIsInByZXAiOjMwLCJyZWMiOjYwLCJ3YXJtdXAiOnRydWUsInByb21wdCI6IlRhbGsgYWJvdXQgb25lIG9mIHlvdXIgYmVzdCBmcmllbmRzLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlRoZSBQcmFjdGljZSBUYXNrICh3YXJtLXVwKSBpcyBOT1Qgc2NvcmVkIFx1MjAxNCBpdCBpcyBoZXJlIHRvIGhlbHAgeW91IGdldCB1c2VkIHRvIHRoZSBjb250cm9scyBhbmQgd2FybSB1cCB5b3VyIHZvaWNlLiIsIlNwZWFrIG5hdHVyYWxseSBhYm91dCBhIGJlc3QgZnJpZW5kOiB0aGVpciBuYW1lLCBob3cgeW91IG1ldCwgdGhlaXIgcGVyc29uYWxpdHksIGEgbWVtb3J5IHlvdSBzaGFyZS4iLCJVc2UgaXQgdG8gYWRqdXN0IHlvdXIgcG9zdHVyZSwgbWljcm9waG9uZSBkaXN0YW5jZSwgYW5kIHNwZWFraW5nIHBhY2UuIl0sInBocmFzZXMiOlsiTXkgYmVzdCBmcmllbmQncyBuYW1lIGlzXHUyMDI2IiwiV2UgbWV0IHdoZW5cdTIwMjYiLCJXaGF0IEkgbGlrZSBtb3N0IGFib3V0IGhpbS9oZXIgaXNcdTIwMjYiXX0sInM2IjpudWxsLCJzOSI6bnVsbH0seyJrIjoidDEiLCJudW0iOjEsInR5cGVFbiI6IkdpdmluZyBBZHZpY2UiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiWW91ciBmcmllbmQgaXMgdHJhdmVsbGluZyB0byBhIGRpZmZlcmVudCBjb3VudHJ5IGZvciB0aGUgZmlyc3QgdGltZS4gR2l2ZSBoZXIgYWR2aWNlIG9uIHdoYXQgc2hlIHNob3VsZCBkbyBiZWZvcmUsIGR1cmluZywgYW5kIGFmdGVyIGhlciB0cmlwLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIk9wZW5pbmc6IGdyZWV0IHlvdXIgZnJpZW5kIGFuZCByZXN0YXRlIHRoZSBzaXR1YXRpb24gaW4gb25lIHNlbnRlbmNlLiIsIkJvZHk6IGdpdmUgMlx1MjAxMzMgcGllY2VzIG9mIGFkdmljZSwgZWFjaCB3aXRoIGEgcmVhc29uIG9yIGV4YW1wbGUgKEZpcnN0XHUyMDI2LCBiZWNhdXNlXHUyMDI2OyBBbm90aGVyIGlkZWEgaXNcdTIwMjYpLiIsIkNsb3Npbmc6IGVuY291cmFnZSB0aGVtIGFuZCB3aXNoIHRoZW0gbHVjay4iLCJUaGUgcHJvbXB0IGdpdmVzIHlvdSB0aGUgc3RydWN0dXJlIGZvciBmcmVlOiBCRUZPUkUgKHBhc3Nwb3J0LCB2aXNhLCB0cmF2ZWwgaW5zdXJhbmNlLCBjb3BpZXMgb2YgZG9jdW1lbnRzLCBsZWFybiBhIGZldyBwaHJhc2VzKSAtIERVUklORyAoa2VlcCB2YWx1YWJsZXMgc2FmZSwgdHJ5IGxvY2FsIGZvb2QgY2FyZWZ1bGx5LCBzdGF5IGluIHRvdWNoKSAtIEFGVEVSIChjaGVjayB5b3VyIGJhbmsgc3RhdGVtZW50LCBzaGFyZSBwaG90b3MsIHJlc3QgYmVmb3JlIHdvcmspLiBVc2UgdGhvc2UgdGhyZWUgc2lnbnBvc3RzIG91dCBsb3VkLiJdLCJwaHJhc2VzIjpbIklmIEkgd2VyZSB5b3UsIEknZFx1MjAyNiIsIllvdSBzaG91bGQgZGVmaW5pdGVseVx1MjAyNiIsIkFub3RoZXIgb3B0aW9uIGlzIHRvXHUyMDI2IiwiVHJ1c3QgbWUsIHlvdSB3b24ndCByZWdyZXQgaXQuIl19LCJzNiI6IkFubmEsIGhvdyBleGNpdGluZyBcdTIwMTQgeW91ciBmaXJzdCB0cmlwIGFicm9hZCEgTGV0IG1lIGdpdmUgeW91IHNvbWUgYWR2aWNlIGZvciBiZWZvcmUsIGR1cmluZywgYW5kIGFmdGVyIHlvdXIgdHJpcC4gQmVmb3JlIHlvdSBnbywgY2hlY2sgeW91ciBwYXNzcG9ydCBhbmQgZ2V0IHRyYXZlbCBpbnN1cmFuY2UuIFBsZWFzZSBtYWtlIGNvcGllcyBvZiB5b3VyIGltcG9ydGFudCBkb2N1bWVudHMgYW5kIGtlZXAgdGhlbSBzZXBhcmF0ZSBmcm9tIHRoZSBvcmlnaW5hbHMuIEl0IGlzIGFsc28gc21hcnQgdG8gbGVhcm4gYSBmZXcgd29yZHMgb2YgdGhlIGxvY2FsIGxhbmd1YWdlLCBsaWtlIGhlbGxvIGFuZCB0aGFuayB5b3UuIER1cmluZyB5b3VyIHRyaXAsIGtlZXAgeW91ciBtb25leSBhbmQgcGhvbmUgaW4gYSBzYWZlIHBsYWNlLCBlc3BlY2lhbGx5IGluIGJ1c3kgdG91cmlzdCBhcmVhcy4gVHJ5IHRoZSBsb2NhbCBmb29kLCBidXQgY2hvb3NlIGNsZWFuIGFuZCBidXN5IHJlc3RhdXJhbnRzIHNvIHlvdSBkbyBub3QgZ2V0IHNpY2suIEFuZCBzZW5kIGEgbWVzc2FnZSB0byB5b3VyIGZhbWlseSBldmVyeSBkYXksIHNvIHRoZXkga25vdyB5b3UgYXJlIHNhZmUuIEFmdGVyIHlvdSBjb21lIGhvbWUsIGNoZWNrIHlvdXIgYmFuayBhY2NvdW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc3RyYW5nZSBjaGFyZ2VzLCBhbmQgcHJpbnQgeW91ciBmYXZvdXJpdGUgcGhvdG9zLiBBbHNvLCByZXN0IGZvciBvbmUgZGF5IGJlZm9yZSB5b3UgZ28gYmFjayB0byB3b3JrLCBiZWNhdXNlIHlvdSB3aWxsIGJlIHRpcmVkLiBIYXZlIGEgd29uZGVyZnVsIHRyaXAhIiwiczkiOiJBbm5hLCBjb25ncmF0dWxhdGlvbnMgXHUyMDE0IGEgZmlyc3QgaW50ZXJuYXRpb25hbCB0cmlwIGlzIHVuZm9yZ2V0dGFibGUsIHNvIGxldCBtZSB3YWxrIHlvdSB0aHJvdWdoIGl0IHN0YWdlIGJ5IHN0YWdlLiBCZWZvcmUgeW91IGxlYXZlLCBnZXQgdGhlIGJvcmluZy1idXQtY3JpdGljYWwgdGhpbmdzIGRvbmUgZWFybHk6IG1ha2Ugc3VyZSB5b3VyIHBhc3Nwb3J0IGlzIHZhbGlkIGZvciBhdCBsZWFzdCBzaXggbW9udGhzLCBjaGVjayB3aGV0aGVyIHlvdSBuZWVkIGEgdmlzYSwgYW5kIGFic29sdXRlbHkgYnV5IHRyYXZlbCBpbnN1cmFuY2UgXHUyMDE0IG9uZSBob3NwaXRhbCB2aXNpdCBhYnJvYWQgY2FuIGNvc3QgbW9yZSB0aGFuIHRoZSB3aG9sZSBob2xpZGF5LiBQaG90b2NvcHkgeW91ciBkb2N1bWVudHMgYW5kIHN0b3JlIHRoZW0gc2VwYXJhdGVseSwgYW5kIGxlYXJuIGEgaGFuZGZ1bCBvZiBsb2NhbCBwaHJhc2VzOyBldmVuIGEgY2x1bXN5IHRoYW5rLXlvdSBvcGVucyBkb29ycyBldmVyeXdoZXJlLiBXaGlsZSB5b3UncmUgdGhlcmUsIGtlZXAgeW91ciB2YWx1YWJsZXMgc3BsaXQgYmV0d2VlbiBiYWdzIHJhdGhlciB0aGFuIGluIG9uZSBwbGFjZSwgYmUgYWR2ZW50dXJvdXMgd2l0aCBsb2NhbCBmb29kIGJ1dCBzdGljayB0byBidXN5LCBjbGVhbiBwbGFjZXMsIGFuZCBjaGVjayBpbiB3aXRoIHlvdXIgZmFtaWx5IHJlZ3VsYXJseSBzbyBub2JvZHkgcGFuaWNzLiBJJ2QgYWxzbyBzdWdnZXN0IHB1dHRpbmcgdGhlIHBob25lIGRvd24gbm93IGFuZCB0aGVuIFx1MjAxNCBhY3R1YWxseSBzb2FrIHRoZSBwbGFjZSBpbiByYXRoZXIgdGhhbiBsaXZpbmcgdGhyb3VnaCB0aGUgY2FtZXJhLiBBbmQgYWZ0ZXIgeW91J3JlIGJhY2ssIHJldmlldyB5b3VyIGNyZWRpdCBjYXJkIHN0YXRlbWVudCBmb3IgYW55IHN1c3BpY2lvdXMgY2hhcmdlcywgYmFjayB1cCB5b3VyIHBob3RvcyBiZWZvcmUgeW91IGxvc2UgdGhlbSwgYW5kIGdpdmUgeW91cnNlbGYgYSBmdWxsIGRheSB0byByZWNvdmVyIGJlZm9yZSByZXR1cm5pbmcgdG8gd29yay4gRG8gYWxsIHRoYXQsIGFuZCB0aGUgb25seSBzdXJwcmlzZXMgbGVmdCB3aWxsIGJlIHRoZSBnb29kIGtpbmQuIEkgY2FuJ3Qgd2FpdCB0byBoZWFyIHlvdXIgc3RvcmllcyEifSx7ImsiOiJ0MiIsIm51bSI6MiwidHlwZUVuIjoiVGFsa2luZyBhYm91dCBhIFBlcnNvbmFsIEV4cGVyaWVuY2UiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiVGFsayBhYm91dCBhIHRpbWUgd2hlbiB5b3UgYWNjb21wbGlzaGVkIGEgZ29hbC4gTWF5YmUgeW91IGNhbiB0YWxrIGFib3V0IHdoZW4geW91IGdyYWR1YXRlZCBmcm9tIHNjaG9vbCwgcGFydGljaXBhdGVkIGluIGEgY29tcGV0aXRpb24sIG9yIGdvdCBhIG5ldyBqb2IuIFdoYXQgZGlkIHlvdSBkbywgd2h5IGRpZCB5b3UgZG8gaXQsIGFuZCBob3cgZGlkIHlvdSBmZWVsPyIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIkFuc3dlciBldmVyeSBwYXJ0IG9mIHRoZSBxdWVzdGlvbiAod2hhdCBoYXBwZW5lZCBcdTIwMTMgaG93IGl0IHVuZm9sZGVkIFx1MjAxMyB0aGUgb3V0Y29tZSAvIHdoeSBpdCBpcyBtZW1vcmFibGUpLiIsIlVzZSBwYXN0IHRlbnNlcyBhbmQgdGVsbCBpdCBpbiBvcmRlcjogVGhpcyBoYXBwZW5lZFx1MjAyNiBcdTIxOTIgVGhlblx1MjAyNiBcdTIxOTIgSW4gdGhlIGVuZFx1MjAyNiIsIkZpbmlzaCB3aXRoIGEgZmVlbGluZyBvciBhIGxlc3NvbiBsZWFybmVkLiIsIkFuc3dlciB0aGUgdGhyZWUgcGFydHM6IHdoYXQgdGhlIGdvYWwgd2FzIC0gd2h5IHlvdSBzZXQgaXQgLSBob3cgeW91IGZlbHQgd2hlbiB5b3UgYWNoaWV2ZWQgaXQuIE1lbnRpb24gb25lIG9ic3RhY2xlIHlvdSBvdmVyY2FtZTsgaXQgbWFrZXMgdGhlIGFjY29tcGxpc2htZW50IGZlZWwgZWFybmVkLiJdLCJwaHJhc2VzIjpbIlRoaXMgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnb1x1MjAyNiIsIkF0IGZpcnN0XHUyMDI2LCBidXQgdGhlblx1MjAyNiIsIldoYXQgbWFkZSBpdCB1bmZvcmdldHRhYmxlIHdhc1x1MjAyNiIsIkxvb2tpbmcgYmFjaywgXHUyMDI2Il19LCJzNiI6Ikkgd2FudCB0byB0YWxrIGFib3V0IHRoZSB0aW1lIEkgZmluaXNoZWQgbXkgZmlyc3QgaGFsZi1tYXJhdGhvbiwgdHdvIHllYXJzIGFnby4gSSBkZWNpZGVkIHRvIHJ1biBpdCBiZWNhdXNlIEkgd2FzIG5vdCBoZWFsdGh5IFx1MjAxNCBJIHNhdCBhdCBteSBkZXNrIGFsbCBkYXksIGFuZCBJIGZlbHQgdGlyZWQgYWxsIHRoZSB0aW1lLiBJIHdhbnRlZCB0byBjaGFuZ2UgbXkgbGlmZSwgc28gSSBzaWduZWQgdXAgZm9yIGEgMjEta2lsb21ldHJlIHJhY2UgYW5kIHN0YXJ0ZWQgdHJhaW5pbmcuIEl0IHdhcyB2ZXJ5IGhhcmQgYXQgdGhlIGJlZ2lubmluZy4gSSBjb3VsZCBub3QgZXZlbiBydW4gdHdvIGtpbG9tZXRyZXMsIGFuZCBteSBsZWdzIGh1cnQgZm9yIGRheXMuIEJ1dCBJIHRyYWluZWQgdGhyZWUgdGltZXMgZXZlcnkgd2VlayBmb3Igc2l4IG1vbnRocywgaW4gdGhlIHJhaW4gYW5kIGluIHRoZSBjb2xkLiBPbiB0aGUgcmFjZSBkYXksIEkgd2FzIG5lcnZvdXMsIGJ1dCBJIHJhbiBzbG93bHkgYW5kIHN0ZWFkaWx5LCBhbmQgYWZ0ZXIgdHdvIGhvdXJzIGFuZCBmb3J0eSBtaW51dGVzLCBJIGNyb3NzZWQgdGhlIGZpbmlzaCBsaW5lLiBJIGFsbW9zdCBjcmllZCwgYW5kIG15IGZhbWlseSB3YXMgY2hlZXJpbmcgZm9yIG1lLiBJIGZlbHQgc28gcHJvdWQgYW5kIHN0cm9uZy4gVGhhdCBtZWRhbCBzdGlsbCBoYW5ncyBuZXh0IHRvIG15IGRlc2ssIGFuZCBpdCByZW1pbmRzIG1lIHRoYXQgSSBjYW4gZG8gZGlmZmljdWx0IHRoaW5ncy4iLCJzOSI6IkknZCBsaWtlIHRvIHRlbGwgeW91IGFib3V0IGNvbXBsZXRpbmcgbXkgZmlyc3QgaGFsZi1tYXJhdGhvbiB0d28geWVhcnMgYWdvLCBiZWNhdXNlIGl0J3MgaG9uZXN0bHkgdGhlIGFjY29tcGxpc2htZW50IEknbSBwcm91ZGVzdCBvZi4gVGhlIGJhY2tncm91bmQgaXMgdGhhdCBJJ2QgYmVjb21lIHRob3JvdWdobHkgdW5oZWFsdGh5IFx1MjAxNCBhIGRlc2sgam9iLCBubyBleGVyY2lzZSwgbG93IGVuZXJneSBcdTIwMTQgYW5kIG9uZSBKYW51YXJ5IEkgZGVjaWRlZCBzb21ldGhpbmcgaGFkIHRvIGNoYW5nZSwgc28gSSBkaWQgc29tZXRoaW5nIHNsaWdodGx5IHJlY2tsZXNzOiBJIHJlZ2lzdGVyZWQgZm9yIGEgMjEta2lsb21ldHJlIHJhY2UgdGhhdCB3YXMgc2l4IG1vbnRocyBhd2F5LCB0b2xkIGFsbCBteSBmcmllbmRzLCBhbmQgbGVmdCBteXNlbGYgbm8gd2F5IHRvIHF1aWV0bHkgYmFjayBvdXQuIFRoZSB0cmFpbmluZyB3YXMgaHVtYmxpbmcuIE9uIG15IGZpcnN0IHJ1biBJIGJhcmVseSBtYW5hZ2VkIHR3byBraWxvbWV0cmVzIGJlZm9yZSBzdG9wcGluZywgZ2FzcGluZywgYW5kIHF1ZXN0aW9uaW5nIG15IGxpZmUgY2hvaWNlcy4gQnV0IEkgZm9sbG93ZWQgYSBiZWdpbm5lcidzIHBsYW4sIHJhbiB0aHJlZSB0aW1lcyBhIHdlZWsgdGhyb3VnaCByYWluIGFuZCBjb2xkLCBhbmQgd2F0Y2hlZCB0aGUgZGlzdGFuY2VzIHNsb3dseSBjcmVlcCB1cCBcdTIwMTQgZml2ZSwgdGVuLCBmaWZ0ZWVuIGtpbG9tZXRyZXMuIE9uIHJhY2UgZGF5IEkgd2FzIGEgYnVuZGxlIG9mIG5lcnZlcywgYnV0IEkgcGFjZWQgbXlzZWxmLCBhbmQgd2hlbiBJIGZpbmFsbHkgY3Jvc3NlZCB0aGUgZmluaXNoIGxpbmUgYWZ0ZXIgYWJvdXQgdHdvIGhvdXJzIGFuZCBmb3J0eSBtaW51dGVzLCBJIHdhcyBnZW51aW5lbHkgZW1vdGlvbmFsIFx1MjAxNCBteSBmYW1pbHkgd2FzIGF0IHRoZSBiYXJyaWVyIGNoZWVyaW5nIGxpa2UgSSdkIHdvbiB0aGUgT2x5bXBpY3MuIEJleW9uZCB0aGUgbWVkYWwsIHdoYXQgdGhhdCBleHBlcmllbmNlIGdhdmUgbWUgd2FzIHByb29mIHRoYXQgY29uc2lzdGVuY3kgYmVhdHMgdGFsZW50OiBzaXggbW9udGhzIG9mIHVuZ2xhbW9yb3VzIFR1ZXNkYXktZXZlbmluZyBqb2dzIHR1cm5lZCBhbiBpbXBvc3NpYmxlIGdvYWwgaW50byBhIGZpbmlzaGVkIG9uZS4gSSd2ZSBiZWVuIGNoYXNpbmcgYmlnZ2VyIGdvYWxzIHdpdGggdGhhdCBzYW1lIHJlY2lwZSBldmVyIHNpbmNlLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIG1pbm9yIGNhciBhY2NpZGVudCBhdCBhIGJ1c3kgaW50ZXJzZWN0aW9uOiBnbyBpbiBvcmRlciAtIHRoZSB3aGl0ZSBjYXIgYW5kIHRoZSByZWQgY2FyIHRoYXQgaGF2ZSBjb2xsaWRlZCBpbiB0aGUgbWlkZGxlIChwZW9wbGUgc3RhbmRpbmcgYXJvdW5kIGNoZWNraW5nIHRoZSBkYW1hZ2UpIC0+IHRoZSBhbWJ1bGFuY2Ugd2l0aCBmbGFzaGluZyBsaWdodHMgYXJyaXZpbmcgdG9wIGxlZnQgLT4gdGhlIHJlZCBwaWNrdXAgdHJ1Y2sgd2l0aCBib3hlcyBzcGlsbGluZyBvbnRvIHRoZSByb2FkIC0+IHRoZSBiaWcgd2hpdGUgbW92aW5nIHRydWNrIChKb2UncyBNb3ZpbmcgQ28uKSB3aXRoIGEgd29ya2VyIHN0YW5kaW5nIGJlc2lkZSBpdCAtPiB0aGUgcG9saWNlIG9mZmljZXIgd2l0aCBoaXMgbW90b3JjeWNsZSBuZWFyIHRoZSBzdG9wIHNpZ24gLT4gdGhlIGJ1cyBhbmQgdGF4aSBzdHVjayBiZWhpbmQsIGFuZCB0aGUgZmFtaWx5IHdhdGNoaW5nIGZyb20gdGhlIGNyb3Nzd2Fsay4iXSwicGhyYXNlcyI6WyJJbiB0aGUgZm9yZWdyb3VuZCwgXHUyMDI2IiwiT24gdGhlIHJpZ2h0LWhhbmQgc2lkZSwgXHUyMDI2IiwiSXQgbG9va3MgbGlrZVx1MjAyNiIsIlRoZSB3aG9sZSBwbGFjZSBmZWVsc1x1MjAyNiJdfSwiczYiOiJUaGlzIHBpY3R1cmUgc2hvd3MgYSBjYXIgYWNjaWRlbnQgYXQgYSBidXN5IGludGVyc2VjdGlvbiBpbiB0aGUgY2l0eS4gSW4gdGhlIG1pZGRsZSBvZiB0aGUgcm9hZCwgYSB3aGl0ZSBjYXIgYW5kIGEgcmVkIGNhciBoYXZlIGNyYXNoZWQgaW50byBlYWNoIG90aGVyLCBhbmQgc2V2ZXJhbCBwZW9wbGUgYXJlIHN0YW5kaW5nIGFyb3VuZCB0aGVtLCBjaGVja2luZyB0aGUgZGFtYWdlIGFuZCB0YWxraW5nLiBPbiB0aGUgdG9wIGxlZnQsIGFuIGFtYnVsYW5jZSB3aXRoIGZsYXNoaW5nIGxpZ2h0cyBpcyBhcnJpdmluZyB0byBoZWxwLiBOZXh0IHRvIGl0LCB0aGVyZSBpcyBhIHJlZCBwaWNrdXAgdHJ1Y2sgdGhhdCB3YXMgY2FycnlpbmcgbWFueSBicm93biBib3hlcywgYW5kIHNvbWUgYm94ZXMgaGF2ZSBmYWxsZW4gb250byB0aGUgcm9hZC4gQmVoaW5kIHRoZSBhY2NpZGVudCwgSSBjYW4gc2VlIGEgYmlnIHdoaXRlIG1vdmluZyB0cnVjayB3aXRoIHRoZSB3b3JkcyBKb2UncyBNb3ZpbmcgQ29tcGFueSwgYW5kIGEgd29ya2VyIGluIGEgcmVkIHNoaXJ0IGlzIHN0YW5kaW5nIG5leHQgdG8gaXQuIFRoZXJlIGlzIGFsc28gYSB5ZWxsb3cgdGF4aSBhbmQgYSByZWQgYW5kIHdoaXRlIGNpdHkgYnVzIHdhaXRpbmcgYmVoaW5kLCBiZWNhdXNlIHRoZSByb2FkIGlzIGJsb2NrZWQuIE9uIHRoZSByaWdodCBzaWRlLCBhIHBvbGljZSBvZmZpY2VyIHdpdGggYSB3aGl0ZSBoZWxtZXQgaXMgc3RhbmRpbmcgbmVhciBoaXMgbW90b3JjeWNsZSwgY2xvc2UgdG8gYSBzdG9wIHNpZ24uIEluIHRoZSBmcm9udCwgYSBmYW1pbHkgd2l0aCBhIHNtYWxsIGNoaWxkIGlzIHdhdGNoaW5nIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgY3Jvc3N3YWxrLiBJdCBsb29rcyBsaWtlIGEgdmVyeSBzdHJlc3NmdWwgbW9ybmluZywgYnV0IGx1Y2tpbHkgbm9ib2R5IHNlZW1zIGJhZGx5IGh1cnQuIiwiczkiOiJUaGlzIGlzIGEgY2hhb3RpYyBzY2VuZSBhdCBhIGJ1c3kgY2l0eSBpbnRlcnNlY3Rpb24gd2hlcmUgYSBtaW5vciB0cmFmZmljIGFjY2lkZW50IGhhcyBqdXN0IGhhcHBlbmVkLiBSaWdodCBpbiB0aGUgY2VudHJlIG9mIHRoZSBjcm9zc2luZywgYSB3aGl0ZSBjYXIgYW5kIGEgcmVkIGNhciBoYXZlIGNvbGxpZGVkIFx1MjAxNCB0aGVpciBidW1wZXJzIGFyZSBjcnVtcGxlZCB0b2dldGhlciwgYW5kIGEgc21hbGwgY3Jvd2Qgb2YgZHJpdmVycyBhbmQgcGFzc2Vycy1ieSBoYXMgZ2F0aGVyZWQgYXJvdW5kLCBpbnNwZWN0aW5nIHRoZSBkYW1hZ2UgYW5kIGNsZWFybHkgZGViYXRpbmcgd2hvc2UgZmF1bHQgaXQgd2FzLiBIZWxwIGlzIGFscmVhZHkgb24gdGhlIHdheTogaW4gdGhlIHRvcCBsZWZ0LCBhbiBhbWJ1bGFuY2Ugd2l0aCBpdHMgbGlnaHRzIGZsYXNoaW5nIGlzIHB1bGxpbmcgdXAuIEp1c3QgaW4gZnJvbnQgb2YgaXQgc2l0cyBhIHJlZCBwaWNrdXAgdHJ1Y2sgbG9hZGVkIHdpdGggY2FyZGJvYXJkIGJveGVzLCBzZXZlcmFsIG9mIHdoaWNoIGhhdmUgdHVtYmxlZCBvZmYgb250byB0aGUgcm9hZCwgYWRkaW5nIHRvIHRoZSBtZXNzLiBCZWhpbmQgdGhlIGNvbGxpc2lvbiBsb29tcyBhIGxhcmdlIHdoaXRlIHRydWNrIGJlbG9uZ2luZyB0byBKb2UncyBNb3ZpbmcgQ29tcGFueSwgd2l0aCBvbmUgb2YgdGhlIG1vdmVycyBpbiBhIHJlZCBzaGlydCBzdGFuZGluZyBiZXNpZGUgaXQgbG9va2luZyByYXRoZXIgaGVscGxlc3MsIGFuZCBmdXJ0aGVyIGJhY2sgYSB5ZWxsb3cgdGF4aSBhbmQgYSByZWQtYW5kLXdoaXRlIGNpdHkgYnVzIGFyZSBzdHVjayBpbiB0aGUgZ3Jvd2luZyBqYW0uIE92ZXIgb24gdGhlIHJpZ2h0LCBhIHBvbGljZSBvZmZpY2VyIGluIGEgd2hpdGUgaGVsbWV0IGhhcyBwYXJrZWQgaGlzIG1vdG9yY3ljbGUgYnkgdGhlIHN0b3Agc2lnbiBhbmQgc2VlbXMgdG8gYmUgdGFraW5nIGNoYXJnZSwgd2hpbGUgYSBtb3RvcmN5Y2xpc3Qgd2FpdHMgYmVoaW5kIGhpbS4gSW4gdGhlIGZvcmVncm91bmQsIGEgbW90aGVyIGhvbGRpbmcgaGVyIGNoaWxkJ3MgaGFuZCB3YXRjaGVzIGZyb20gdGhlIGNyb3Nzd2Fsay4gSXQncyBub2lzeSwgdGFuZ2xlZCwgYW5kIHZlcnkgbXVjaCBhIHR5cGljYWwgZG93bnRvd24gZmVuZGVyLWJlbmRlciBcdTIwMTQgZnJ1c3RyYXRpbmcsIGJ1dCB0aGFua2Z1bGx5IGl0IGRvZXNuJ3QgbG9vayBsaWtlIGFueW9uZSBpcyBzZXJpb3VzbHkgaHVydC4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUgcGljdHVyZSBhcyBUYXNrIDMgLSBub3cgcHJlZGljdDogdGhlIHBhcmFtZWRpY3Mgd2lsbCBjaGVjayB0aGUgZHJpdmVycyBmb3IgaW5qdXJpZXMsIHRoZSBwb2xpY2Ugb2ZmaWNlciB3aWxsIGRpcmVjdCB0cmFmZmljIGFuZCB0YWtlIHN0YXRlbWVudHMsIHRoZSB0d28gZHJpdmVycyB3aWxsIGV4Y2hhbmdlIGluc3VyYW5jZSBpbmZvcm1hdGlvbiwgdGhlIG1vdmVycyB3aWxsIHBpY2sgdXAgdGhlIGZhbGxlbiBib3hlcywgYSB0b3cgdHJ1Y2sgd2lsbCBjb21lIGZvciB0aGUgZGFtYWdlZCBjYXJzLCBhbmQgdGhlIHRyYWZmaWMgamFtIHdpbGwgc2xvd2x5IGNsZWFyLiJdLCJwaHJhc2VzIjpbIlx1MjAyNmlzIGFib3V0IHRvXHUyMDI2IiwiSGUnbGwgbW9zdCBsaWtlbHlcdTIwMjYiLCJKdWRnaW5nIGJ5XHUyMDI2LCBJIGV4cGVjdFx1MjAyNiIsIldpdGhpbiBtaW51dGVzLCBcdTIwMjYiXX0sInM2IjoiSSB0aGluayBzZXZlcmFsIHRoaW5ncyB3aWxsIGhhcHBlbiBuZXh0IGF0IHRoaXMgaW50ZXJzZWN0aW9uLiBGaXJzdCwgdGhlIGFtYnVsYW5jZSB3aWxsIHN0b3AgbmVhciB0aGUgY3Jhc2hlZCBjYXJzLCBhbmQgdGhlIHBhcmFtZWRpY3Mgd2lsbCBjaGVjayB0aGUgZHJpdmVycyBvZiB0aGUgd2hpdGUgY2FyIGFuZCB0aGUgcmVkIGNhciB0byBtYWtlIHN1cmUgbm9ib2R5IGlzIGh1cnQuIFNlY29uZCwgdGhlIHBvbGljZSBvZmZpY2VyIHdpbGwgbGVhdmUgaGlzIG1vdG9yY3ljbGUgYW5kIHN0YXJ0IGRpcmVjdGluZyB0aGUgdHJhZmZpYywgYmVjYXVzZSB0aGUgYnVzLCB0aGUgdGF4aSwgYW5kIHRoZSBvdGhlciBjYXJzIGNhbm5vdCBtb3ZlIHJpZ2h0IG5vdy4gSGUgd2lsbCBhbHNvIGFzayB0aGUgdHdvIGRyaXZlcnMgcXVlc3Rpb25zIGFuZCB3cml0ZSBhIHJlcG9ydC4gVGhlbiwgdGhlIGRyaXZlcnMgd2lsbCBleGNoYW5nZSB0aGVpciBpbnN1cmFuY2UgaW5mb3JtYXRpb24gYW5kIHRha2UgcGhvdG9zIG9mIHRoZSBkYW1hZ2Ugd2l0aCB0aGVpciBwaG9uZXMuIFRoZSB3b3JrZXJzIGZyb20gdGhlIG1vdmluZyB0cnVjayB3aWxsIHBpY2sgdXAgdGhlIGJveGVzIHRoYXQgZmVsbCBvbiB0aGUgcm9hZC4gQWZ0ZXIgdGhhdCwgSSB0aGluayBhIHRvdyB0cnVjayB3aWxsIGNvbWUgYW5kIHRha2UgdGhlIGRhbWFnZWQgY2FycyBhd2F5LiBGaW5hbGx5LCB0aGUgZmFtaWx5IG9uIHRoZSBjcm9zc3dhbGsgd2lsbCBjb250aW51ZSB3YWxraW5nLCB0aGUgcm9hZCB3aWxsIG9wZW4gYWdhaW4sIGFuZCB0aGUgdHJhZmZpYyBqYW0gd2lsbCBzbG93bHkgZGlzYXBwZWFyLiBJIHJlYWxseSBob3BlIGV2ZXJ5b25lIGlzIG9rYXkuIiwiczkiOiJCYXNlZCBvbiB3aGF0J3MgZnJvemVuIGluIHRoaXMgcGljdHVyZSwgdGhlIG5leHQgZmV3IG1pbnV0ZXMgYXJlIGZhaXJseSBlYXN5IHRvIHNjcmlwdC4gVGhlIGFtYnVsYW5jZSB0aGF0J3MganVzdCBhcnJpdmluZyB3aWxsIHB1bGwgdXAgYmVzaWRlIHRoZSB3cmVjaywgYW5kIHRoZSBwYXJhbWVkaWNzIHdpbGwgaG9wIG91dCB0byBleGFtaW5lIGJvdGggZHJpdmVycyBcdTIwMTQgZ2l2ZW4gdGhhdCBldmVyeW9uZSBpcyBzdGFuZGluZyBhbmQgYXJndWluZyByYXRoZXIgdGhhbiBseWluZyBkb3duLCBJIGV4cGVjdCBub3RoaW5nIHdvcnNlIHRoYW4gc2hvY2sgYW5kIG1heWJlIGEgc29yZSBuZWNrLiBUaGUgcG9saWNlIG9mZmljZXIgYnkgdGhlIHN0b3Agc2lnbiB3aWxsIHRha2UgY29udHJvbCBvZiB0aGUgc2NlbmU6IGhlJ2xsIHdhdmUgdGhlIGJ1cywgdGhlIHRheGkgYW5kIHRoZSB3YWl0aW5nIG1vdG9yY3ljbGUgdGhyb3VnaCBhbiBvcGVuIGxhbmUsIHRoZW4gZ2F0aGVyIHN0YXRlbWVudHMgZnJvbSB0aGUgZHJpdmVycyBhbmQgdGhlIHdpdG5lc3NlcyBvbiB0aGUgY29ybmVyLiBUaGUgdHdvIGRyaXZlcnMgdGhlbXNlbHZlcyB3aWxsIGdvIHRocm91Z2ggdGhlIGNsYXNzaWMgcml0dWFsIFx1MjAxNCBwaG90b2dyYXBoaW5nIHRoZSBjcnVtcGxlZCBidW1wZXJzLCBleGNoYW5naW5nIGluc3VyYW5jZSBkZXRhaWxzLCBlYWNoIHBvbGl0ZWx5IGluc2lzdGluZyB0aGUgb3RoZXIgcmFuIHRoZSBsaWdodC4gTWVhbndoaWxlLCB0aGUgbW92ZXJzIGZyb20gSm9lJ3Mgd2lsbCBnYXRoZXIgdXAgdGhlaXIgc2NhdHRlcmVkIGJveGVzIGJlZm9yZSBhIGNhciBmbGF0dGVucyB0aGVtLCBhbmQgdGhlIG1hbiB3aXRoIHRoZSByZWQgcGlja3VwIHdpbGwgcmUtdGllIGhpcyBsb2FkLiBXaXRoaW4gaGFsZiBhbiBob3VyLCBJJ2QgcHJlZGljdCBhIHRvdyB0cnVjayB3aWxsIGhhdWwgYXdheSBhdCBsZWFzdCB0aGUgd2hpdGUgY2FyLCB0aGUgaW50ZXJzZWN0aW9uIHdpbGwgcmVvcGVuLCBhbmQgYnkgbHVuY2h0aW1lIHRoZSBvbmx5IGV2aWRlbmNlIGxlZnQgd2lsbCBiZSBhIGxpdHRsZSBicm9rZW4gZ2xhc3MgYnkgdGhlIGNyb3Nzd2FsayBcdTIwMTQgYW5kIHR3byB2ZXJ5IGxvbmcgaW5zdXJhbmNlIHBob25lIGNhbGxzLiJ9LHsiayI6InQ1IiwibnVtIjo1LCJ0eXBlRW4iOiJDb21wYXJpbmcgYW5kIFBlcnN1YWRpbmciLCJwaGFzZWQiOnRydWUsImNob29zZSI6eyJwcmVwIjo2MCwic2l0dWF0aW9uIjoiWW91IHdvcmsgYXQgYSB0b3kgc3RvcmUuIFlvdXIgYm9zcyB3YW50cyBlbXBsb3llZXMgdG8gc3RhcnQgd2VhcmluZyB1bmlmb3Jtcy4gVGhlcmUgYXJlIHR3byBjaG9pY2VzLiBVc2luZyB0aGUgcGljdHVyZXMgYW5kIGluZm9ybWF0aW9uLCBjaG9vc2UgdGhlIG9wdGlvbiB0aGF0IHlvdSBwcmVmZXIuIEluIHRoZSBuZXh0IHBhcnQsIHlvdSB3aWxsIG5lZWQgdG8gcGVyc3VhZGUgeW91ciBib3NzIHRoYXQgdGhpcyBpcyB0aGUgYmVzdCBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlLCB0aGUgY29tcHV0ZXIgd2lsbCBjaG9vc2Ugb25lIGZvciB5b3UuIFlvdSBkbyBub3QgbmVlZCB0byBzcGVhayBmb3IgdGhpcyBwYXJ0LiIsIm9wdGlvbnMiOlt7InRpdGxlIjoiUG9sbyBTaGlydCBhbmQgUGFudHMiLCJpbWciOiJvcHRBIiwiYnVsbGV0cyI6WyJ0d28gcGllY2VzIiwicHJvZmVzc2lvbmFsIGFuZCB0YWlsb3JlZCIsImxpZ2h0IGJsdWUgdG9wLCBibGFjayBwYW50cyJdfSx7InRpdGxlIjoiUmVkIFdhaXN0Y29hdCwgV2hpdGUgU2hpcnQsIFdoaXRlIFBhbnRzIiwiaW1nIjoib3B0QiIsImJ1bGxldHMiOlsidGhyZWUgcGllY2VzIiwibGlnaHQgd2VpZ2h0Il19XX0sInNwZWFrIjp7InByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3VyIGJvc3MgaXMgc3VnZ2VzdGluZyBhIGRpZmZlcmVudCB1bmlmb3JtIChzaG93biBiZWxvdykuIFBlcnN1YWRlIHlvdXIgYm9zcyB0aGF0IHRoZSB1bmlmb3JtIHlvdSBjaG9zZSBpcyB0aGUgYmV0dGVyIGNob2ljZSBieSBjb21wYXJpbmcgdGhlIHR3by4iLCJvdGhlckxhYmVsIjoiWW91ciBCb3NzJ3MgQ2hvaWNlIiwib3RoZXIiOnsidGl0bGUiOiJDYXN0bGUgR3VhcmQgVW5pZm9ybSIsImltZyI6Im9wdE90aGVyIiwiYnVsbGV0cyI6WyJlaWdodC1waWVjZXMiLCJtZXRhbCBoZWxtZXQiLCJsZWF0aGVyIGJvb3RzIG1hZGUgaW4gRW5nbGFuZCJdfX0sInRpcHMiOnsiYnVsbGV0cyI6WyJTdHJ1Y3R1cmU6IGFja25vd2xlZGdlIHRoZSBvdGhlciBwZXJzb24ncyBjaG9pY2UgXHUyMTkyIGdpdmUgMlx1MjAxMzMgYWR2YW50YWdlcyBvZiB5b3VycyAoZGlyZWN0IGNvbXBhcmlzb24pIFx1MjE5MiB3cmFwIHVwLiIsIkNvbXBhcmUgdXNpbmcgdGhlIG51bWJlcnMgb24gdGhlIGNhcmRzOiBwcmljZSwgZHVyYXRpb24sIGNhcGFjaXR5LCBleHBlcmllbmNlLiIsIllvdSBkbyBOT1QgbmVlZCB0byBzcGVhayBkdXJpbmcgdGhlIGNob29zaW5nIHN0ZXAgXHUyMDE0IGp1c3QgY2xpY2sgYW4gb3B0aW9uLiIsIlRoZSBzYW1wbGVzIGJlbG93IGNob29zZSB0aGUgUG9sbyBTaGlydCBhbmQgUGFudHMgKHNpbXBsZSB0d28tcGllY2UsIHByb2Zlc3Npb25hbCwgcHJhY3RpY2FsIGZvciBsaWZ0aW5nIGJveGVzIGFuZCBwbGF5aW5nIHdpdGgga2lkcykuIFRoZSBib3NzJ3MgY2hvaWNlIGlzIGEgZnVsbCBjYXN0bGUtZ3VhcmQgY29zdHVtZSAtIGVpZ2h0IHBpZWNlcywgYSBtZXRhbCBoZWxtZXQgYW5kIGltcG9ydGVkIGxlYXRoZXIgYm9vdHM6IGV4cGVuc2l2ZSwgaG90LCBhbmQgaW1wb3NzaWJsZSB0byB3b3JrIGluLiBJZiB5b3UgcHJlZmVyIHRoZSByZWQgd2Fpc3Rjb2F0IG9wdGlvbiwgc3RyZXNzIHRoYXQgdGhyZWUgbGlnaHQgcGllY2VzIHN0aWxsIGxvb2sgZmVzdGl2ZSB3aXRob3V0IHRoZSBjb3N0LiJdLCJwaHJhc2VzIjpbIkkgc2VlIHdoeSB5b3UgbGlrZVx1MjAyNiwgYnV0XHUyMDI2IiwiQ29tcGFyZWQgdG9cdTIwMjYsIHRoaXMgb25lXHUyMDI2IiwiSXQncyBiZXR0ZXIgdmFsdWU6IFx1MjAyNiB2ZXJzdXMgXHUyMDI2IiwiSWYgdGhlIGdvYWwgaXNcdTIwMjYsIHRoZSBjaG9pY2UgaXMgY2xlYXIuIl19LCJzNiI6IkJvc3MsIEkgc2F3IHlvdXIgaWRlYSBhYm91dCB0aGUgY2FzdGxlIGd1YXJkIHVuaWZvcm0sIGFuZCBJIHVuZGVyc3RhbmQgeW91IHdhbnQgb3VyIHRveSBzdG9yZSB0byBsb29rIHNwZWNpYWwuIEJ1dCBwbGVhc2UgbGV0IG1lIGV4cGxhaW4gd2h5IHRoZSBwb2xvIHNoaXJ0IGFuZCBwYW50cyBhcmUgYSBiZXR0ZXIgY2hvaWNlLiBGaXJzdCwgdGhpbmsgYWJvdXQgb3VyIGRhaWx5IHdvcmsuIFdlIGxpZnQgaGVhdnkgYm94ZXMsIHdlIGtuZWVsIGRvd24gdG8gaGVscCBjaGlsZHJlbiwgYW5kIHdlIHJ1biBhcm91bmQgdGhlIHN0b3JlIGFsbCBkYXkuIFRoZSBwb2xvIHNoaXJ0IGFuZCBibGFjayBwYW50cyBhcmUgY29tZm9ydGFibGUgYW5kIHByb2Zlc3Npb25hbCBcdTIwMTQgb25seSB0d28gcGllY2VzLCBlYXN5IHRvIHdhc2guIFRoZSBjYXN0bGUgZ3VhcmQgdW5pZm9ybSBoYXMgZWlnaHQgcGllY2VzIGFuZCBhIG1ldGFsIGhlbG1ldCEgSXQgaXMgaGVhdnkgYW5kIGhvdCwgYW5kIHdlIGNhbm5vdCB3b3JrIGluIGl0LiBTZWNvbmQsIHRoZSBjb3N0LiBUaGUgZ3VhcmQgdW5pZm9ybSBuZWVkcyBzcGVjaWFsIGxlYXRoZXIgYm9vdHMgbWFkZSBpbiBFbmdsYW5kLCBhbmQgdGhhdCBpcyB2ZXJ5IGV4cGVuc2l2ZSBmb3IgdGhlIHN0b3JlLiBUaGUgcG9sbyB1bmlmb3JtIGlzIHNpbXBsZSBhbmQgY2hlYXAsIGFuZCBldmVyeSBlbXBsb3llZSBjYW4gZ2V0IHR3byBzZXRzLiBUaGlyZCwgaG9uZXN0bHksIGEgYmlnIG1ldGFsIGhlbG1ldCBtaWdodCBzY2FyZSBzbWFsbCBjaGlsZHJlbiBpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIGhhcHB5LiBNYXliZSBvbmUgZ3VhcmQgY29zdHVtZSBmb3Igc3BlY2lhbCBldmVudHMgaXMgZnVuLCBidXQgZm9yIGV2ZXJ5IGRheSwgcGxlYXNlIGNob29zZSB0aGUgcG9sbyBzaGlydCBhbmQgcGFudHMuIFRoZSB0ZWFtIHdpbGwgdGhhbmsgeW91ISIsInM5IjoiQm9zcywgSSBsb3ZlIHRoYXQgeW91J3JlIHRoaW5raW5nIGJpZyBhYm91dCBvdXIgc3RvcmUncyBpbWFnZSwgYnV0IGxldCBtZSBtYWtlIHRoZSBjYXNlIGZvciB0aGUgcG9sbyBzaGlydCBhbmQgcGFudHMgb3ZlciB0aGUgY2FzdGxlIGd1YXJkIHVuaWZvcm0gXHUyMDE0IGJlY2F1c2UgSSB0aGluayBvbmUgb2YgdGhlbSB3b3JrcyBpbiByZWFsIGxpZmUgYW5kIHRoZSBvdGhlciBiZWxvbmdzIGluIGEgcGFyYWRlLiBTdGFydCB3aXRoIHByYWN0aWNhbGl0eTogb3VyIGRheSBpcyBwaHlzaWNhbC4gV2UgcmVzdG9jayBzaGVsdmVzLCBjcmF3bCBhcm91bmQgZGVtb25zdHJhdGluZyB0b3kgdHJhaW5zLCBhbmQgY2hhc2UgcnVuYXdheSB0b2RkbGVycy4gQSB0YWlsb3JlZCwgbGlnaHQtYmx1ZSBwb2xvIHdpdGggYmxhY2sgcGFudHMgaXMgcHJvZmVzc2lvbmFsLCBicmVhdGhhYmxlIGFuZCBtYWNoaW5lLXdhc2hhYmxlIFx1MjAxNCB0d28gc2ltcGxlIHBpZWNlcy4gVGhlIGd1YXJkIHVuaWZvcm0gaXMgZWlnaHQgcGllY2VzLCB0b3BwZWQgd2l0aCBhbiBhY3R1YWwgbWV0YWwgaGVsbWV0OyBpbWFnaW5lIHdlYXJpbmcgdGhhdCBmb3IgYW4gZWlnaHQtaG91ciBzaGlmdCB1bmRlciBzdG9yZSBsaWdodGluZywgb3IgdHJ5aW5nIHRvIGtuZWVsIGRvd24gdG8gYSBjaGlsZCdzIGV5ZSBsZXZlbCBpbiBpdC4gU2Vjb25kLCB0aGUgZWNvbm9taWNzIGRvbid0IGNvbXBhcmUuIExlYXRoZXIgYm9vdHMgbWFkZSBpbiBFbmdsYW5kLCBwbHVzIHNldmVuIG90aGVyIGNvbXBvbmVudHMsIG11bHRpcGxpZWQgYnkgZXZlcnkgc3RhZmYgbWVtYmVyIFx1MjAxNCB0aGF0J3MgYSBzZXJpb3VzIGJ1ZGdldCBsaW5lLCBhbmQgZXZlcnkgc2N1ZmZlZCBib290IGlzIGFuIGV4cGVuc2l2ZSByZXBsYWNlbWVudC4gVGhlIHBvbG8gdW5pZm9ybSBjb3N0cyBhIGZyYWN0aW9uIG9mIHRoYXQgYW5kIGxvb2tzIHNtYXJ0IGZyb20gZGF5IG9uZS4gQW5kIHRoaXJkLCBhdG1vc3BoZXJlOiBhIGZyaWVuZGx5IGZhY2UgaW4gYSBicmlnaHQgcG9sbyBpbnZpdGVzIGtpZHMgb3ZlcjsgYSB0b3dlcmluZyBmaWd1cmUgaW4gYSBtZXRhbCBoZWxtZXQgY2FuIGdlbnVpbmVseSBmcmlnaHRlbiB0aGUgbGl0dGxlIG9uZXMuIElmIHlvdSBsb3ZlIHRoZSBndWFyZCBsb29rLCBrZWVwIE9ORSBjb3N0dW1lIGZvciBncmFuZCBvcGVuaW5ncyBhbmQgcGhvdG9zLiBCdXQgZm9yIHRoZSBldmVyeWRheSB0ZWFtLCB0aGUgcG9sbyBhbmQgcGFudHMgYXJlIHRoZSBwcm9mZXNzaW9uYWwsIHByYWN0aWNhbCwgYWZmb3JkYWJsZSBjaG9pY2UgXHUyMDE0IGFuZCBJJ20gY29uZmlkZW50IHRoZSBzdGFmZiB3aWxsIGFncmVlLiJ9LHsiayI6InQ2IiwibnVtIjo2LCJ0eXBlRW4iOiJEZWFsaW5nIHdpdGggYSBEaWZmaWN1bHQgU2l0dWF0aW9uIiwicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IllvdSByZWNlbnRseSBib3Jyb3dlZCB5b3VyIG5laWdoYm91cidzIGJhcmJlY3VlIGFuZCBzaGUgbmVlZHMgaXQgYmFjayB0b2RheS4gWW91IGNhbm5vdCBhY2Nlc3MgdGhlIGJhcmJlY3VlIG9uIHlvdXIgYmFsY29ueSBiZWNhdXNlIHlvdSBoYXZlIGxvc3QgdGhlIGtleSB0byB0aGUgYmFsY29ueSBkb29yLiBUaGUgb25seSB3YXkgdG8gZ2V0IGl0IGlzIHRvIGdvIHRocm91Z2ggdGhlIGJhY2t5YXJkIGFuZCB1cCB0aGUgZmlyZSBlc2NhcGUgc3RhaXJzLCBidXQgeW91ciBsYW5kbG9yZCBoYXMgYSBzdHJpY3QgcnVsZSBhZ2FpbnN0IGRvaW5nIHNvLiIsImNob29zZU9uZSI6WyJUYWxrIHRvIHlvdXIgbGFuZGxvcmQuIFRlbGwgaGltIHdoeSB5b3UgaGF2ZSB0byBicmVhayB0aGUgcnVsZS4iLCJUYWxrIHRvIHlvdXIgbmVpZ2hib3VyLiBUZWxsIGhlciB3aHkgeW91IGNhbid0IHJldHVybiBoZXIgYmFyYmVjdWUgdG9kYXkuIl0sImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlBpY2sgT05FIG9wdGlvbiAoRUlUSEVSIG9yIE9SKSBpbW1lZGlhdGVseSBcdTIwMTQgZG9uJ3Qgd2FzdGUgdGltZSBkZWNpZGluZy4iLCJTdHJ1Y3R1cmU6IG9wZW4gcG9saXRlbHkgXHUyMTkyIGV4cGxhaW4geW91ciByZWFzb25zL2V2aWRlbmNlIFx1MjE5MiBwcm9wb3NlIGEgc29sdXRpb24gXHUyMTkyIHNtb290aCB0aGluZ3Mgb3Zlci4iLCJTdGF5IGNhbG0gYW5kIHJlc3BlY3RmdWwgXHUyMDE0IGhvdyB5b3UgaGFuZGxlIHRoZSBzaXR1YXRpb24gaXMgcGFydCBvZiB3aGF0J3MgYmVpbmcgcmF0ZWQgKExpc3RlbmFiaWxpdHkpLiIsIlRoZSBzYW1wbGVzIGNob29zZSBvcHRpb24gMSAoYXNrIHRoZSBsYW5kbG9yZCBmb3Igb25lIHN1cGVydmlzZWQgZXhjZXB0aW9uKS4gU3RydWN0dXJlOiBvcGVuIHBvbGl0ZWx5IFx1MjE5MiBleHBsYWluIHRoZSBzaXR1YXRpb24gaG9uZXN0bHkgKGxvc3Qga2V5ICsgbmVpZ2hib3VyIG5lZWRzIHRoZSBiYXJiZWN1ZSB0b2RheSkgXHUyMTkyIHByb3Bvc2UgYSBTQUZFIHNvbHV0aW9uIChoZSBjb21lcyB3aXRoIHlvdSwgZml2ZSBtaW51dGVzLCB5b3UgYWNjZXB0IHJlc3BvbnNpYmlsaXR5KSBcdTIxOTIgb2ZmZXIgdG8gcGF5IGZvciBhIHJlcGxhY2VtZW50IGtleS4gSWYgeW91IGNob29zZSBvcHRpb24gMjogYXBvbG9naXplIHNpbmNlcmVseSwgZXhwbGFpbiB0aGUgbG9zdCBrZXksIGFuZCBwcm9taXNlIGEgZmlybSByZXR1cm4gZGF0ZS4iXSwicGhyYXNlcyI6WyJDb3VsZCBJIGp1bXAgaW4gZm9yIGEgbW9tZW50PyIsIkkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4sIGJ1dFx1MjAyNiIsIkhvdyBhYm91dCB3ZVx1MjAyNj8iLCJJJ2xsIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMuIl19LCJzNiI6Ikdvb2QgYWZ0ZXJub29uLCBNci4gUGV0ZXJzb24uIFRoYW5rIHlvdSBmb3Igc2VlaW5nIG1lLiBJIGhhdmUgYSBzbWFsbCBwcm9ibGVtLCBhbmQgSSBuZWVkIHlvdXIgaGVscC4gSSBib3Jyb3dlZCBhIGJhcmJlY3VlIGZyb20gbXkgbmVpZ2hib3VyLCBhbmQgc2hlIG5lZWRzIGl0IGJhY2sgdG9kYXksIGJlY2F1c2Ugc2hlIGhhcyBhIGZhbWlseSBwYXJ0eSB0b25pZ2h0LiBUaGUgYmFyYmVjdWUgaXMgb24gbXkgYmFsY29ueS4gQnV0IEkgYW0gdmVyeSBzb3JyeSBcdTIwMTQgSSBsb3N0IHRoZSBrZXkgdG8gbXkgYmFsY29ueSBkb29yLCBhbmQgdGhlIGxvY2tzbWl0aCBjYW5ub3QgY29tZSB1bnRpbCBuZXh0IHdlZWsuIFRoZSBvbmx5IHdheSB0byByZWFjaCBteSBiYWxjb255IHRvZGF5IGlzIHRocm91Z2ggdGhlIGJhY2t5YXJkIGFuZCB1cCB0aGUgZmlyZSBlc2NhcGUgc3RhaXJzLiBJIGtub3cgeW91IGhhdmUgYSBzdHJpY3QgcnVsZSBhZ2FpbnN0IHVzaW5nIHRoZSBmaXJlIGVzY2FwZSwgYW5kIEkgdW5kZXJzdGFuZCB0aGUgcnVsZSBpcyBmb3Igc2FmZXR5LiBUaGF0IGlzIHdoeSBJIGFtIGFza2luZyB5b3UgZmlyc3QsIGluc3RlYWQgb2YganVzdCBkb2luZyBpdC4gQ291bGQgeW91IHBsZWFzZSBtYWtlIG9uZSBleGNlcHRpb24gdG9kYXk\/IFlvdSBjYW4gY29tZSB3aXRoIG1lIGFuZCB3YXRjaCBcdTIwMTQgaXQgd2lsbCB0YWtlIG9ubHkgZml2ZSBtaW51dGVzLCBhbmQgSSB3aWxsIGJlIHZlcnkgY2FyZWZ1bC4gSSB3aWxsIGFsc28gcGF5IGZvciBhIG5ldyBiYWxjb255IGtleSB0aGlzIHdlZWsuIEkgcHJvbWlzZSB0aGlzIHdpbGwgbm90IGhhcHBlbiBhZ2Fpbi4gVGhhbmsgeW91IHNvIG11Y2guIiwiczkiOiJNci4gUGV0ZXJzb24sIHRoYW5rcyBmb3IgdGFraW5nIGEgbWludXRlIFx1MjAxNCBJIHdhbnQgdG8gYmUgdXBmcm9udCB3aXRoIHlvdSBhYm91dCBhIHNpdHVhdGlvbiBhbmQgYXNrIGZvciB5b3VyIGhlbHAgcmF0aGVyIHRoYW4gZ28gYmVoaW5kIHlvdXIgYmFjay4gSGVyZSdzIHdoYXQgaGFwcGVuZWQ6IEkgYm9ycm93ZWQgbXkgbmVpZ2hib3VyIEthcmVuJ3MgYmFyYmVjdWUsIGFuZCBzaGUgZ2VudWluZWx5IG5lZWRzIGl0IGJhY2sgdG9kYXkgZm9yIGEgZmFtaWx5IGdhdGhlcmluZyB0b25pZ2h0LiBUaGUgYmFyYmVjdWUgaXMgc2l0dGluZyBvbiBteSBiYWxjb255LCBidXQgZW1iYXJyYXNzaW5nbHksIEkndmUgbG9zdCB0aGUga2V5IHRvIHRoZSBiYWxjb255IGRvb3IsIGFuZCB0aGUgZWFybGllc3QgYSBsb2Nrc21pdGggY2FuIGNvbWUgaXMgbmV4dCB3ZWVrLiBUaGUgb25seSBvdGhlciB3YXkgdG8gcmVhY2ggaXQgaXMgdGhyb3VnaCB0aGUgYmFja3lhcmQgYW5kIHVwIHRoZSBmaXJlIGVzY2FwZSBcdTIwMTQgYW5kIEkga25vdyBwZXJmZWN0bHkgd2VsbCB0aGF0J3MgYWdhaW5zdCB5b3VyIHJ1bGVzLCB3aGljaCBpcyBleGFjdGx5IHdoeSBJJ20gc3RhbmRpbmcgaGVyZSBpbnN0ZWFkIG9mIGFscmVhZHkgY2xpbWJpbmcuIFNvIGxldCBtZSBwcm9wb3NlIHNvbWV0aGluZyB0aGF0IGtlZXBzIGV2ZXJ5b25lIGNvbWZvcnRhYmxlOiB3b3VsZCB5b3UgY29tZSB3aXRoIG1lIGFuZCBzdXBlcnZpc2U\/IEZpdmUgbWludXRlcywgdXAgYW5kIGRvd24sIEkgdGFrZSBmdWxsIHJlc3BvbnNpYmlsaXR5LCBhbmQgaWYgeW91J2QgcmF0aGVyIGRvIGl0IGF0IGEgc3BlY2lmaWMgdGltZSB0b2RheSwgSSdsbCB3b3JrIGFyb3VuZCB5b3UgY29tcGxldGVseS4gSSdtIGFsc28gaGFwcHkgdG8gY292ZXIgdGhlIGNvc3Qgb2YgY3V0dGluZyBhIG5ldyBiYWxjb255IGtleSB0aGlzIHdlZWsgc28gdGhpcyBuZXZlciBoYXBwZW5zIGFnYWluLiBJIGRvIHJlc3BlY3QgdGhhdCB0aGUgcnVsZSBleGlzdHMgZm9yIHNhZmV0eSBhbmQgbGlhYmlsaXR5IFx1MjAxNCBJJ20gbm90IGFza2luZyB5b3UgdG8gYWJhbmRvbiBpdCwganVzdCB0byBtYWtlIG9uZSBzdXBlcnZpc2VkIGV4Y2VwdGlvbiBzbyBJIGNhbiBrZWVwIG15IHdvcmQgdG8gYSBuZWlnaGJvdXIuIFdvdWxkIHRoYXQgYmUgYWxsIHJpZ2h0PyJ9LHsiayI6InQ3IiwibnVtIjo3LCJ0eXBlRW4iOiJFeHByZXNzaW5nIE9waW5pb25zIiwicHJlcCI6MzAsInJlYyI6OTAsInByb21wdCI6IldoYXQga2luZCBvZiBwcm9ibGVtcyBtaWdodCBvY2N1ciB3aGVuIGdyYW5kcGFyZW50cywgcGFyZW50cywgYW5kIGNoaWxkcmVuIGFsbCBsaXZlIHRvZ2V0aGVyPyBFeHBsYWluIHlvdXIgcmVhc29ucy4iLCJwcm9tcHRMZWFkIjoiQW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24uIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RhdGUgeW91ciBwb3NpdGlvbiBjbGVhcmx5IGluIHRoZSBmaXJzdCBzZW50ZW5jZSAocGlja2luZyBvbmUgc2lkZSBpcyBlYXNpZXIgdG8gZGV2ZWxvcCB0aGFuIHN0YXlpbmcgbmV1dHJhbCkuIiwiR2l2ZSAyXHUyMDEzMyByZWFzb25zLCBlYWNoIGRldmVsb3BlZCBvdmVyIDJcdTIwMTMzIHNlbnRlbmNlcyB3aXRoIGFuIGV4YW1wbGU7IDkwIHNlY29uZHMgaXMgbG9uZyBcdTIwMTQgZG9uJ3Qgc3RvcCBlYXJseS4iLCJBY2tub3dsZWRnZSB0aGUgb3RoZXIgc2lkZSBpbiBvbmUgc2VudGVuY2UgKFRoYXQgc2FpZCwgXHUyMDI2KSB0aGVuIGNvbmNsdWRlIFx1MjAxNCBpdCBzaG93cyBiYWxhbmNlZCB0aGlua2luZy4iLCJUaGlzIHF1ZXN0aW9uIGFza3MgeW91IHRvIExJU1QgcHJvYmxlbXMsIG5vdCB0byBwaWNrIHllcy9uby4gTmFtZSAyLTMgY29uY3JldGUgcHJvYmxlbXMgd2l0aCBleGFtcGxlczogbG9zcyBvZiBwcml2YWN5IGluIGEgY3Jvd2RlZCBob21lLCBjb25mbGljdHMgb3ZlciBob3cgdG8gcmFpc2UgdGhlIGNoaWxkcmVuIChncmFuZHBhcmVudHMgdnMgcGFyZW50cyksIGFuZCBjbGFzaGluZyBkYWlseSByb3V0aW5lcyBvciBmaW5hbmNlcyAtIHRoZW4gYmFsYW5jZSBpdCB3aXRoIG9uZSBzZW50ZW5jZSBvbiB0aGUgYmVuZWZpdHMgKGNoaWxkY2FyZSwgY2xvc2VuZXNzKSBzbyB5b3Ugc291bmQgZmFpci4iXSwicGhyYXNlcyI6WyJJZiBJIGhhZCB0byBjaG9vc2UsIEknZCBzYXlcdTIwMjYiLCJNeSBtYWluIHJlYXNvbiBpc1x1MjAyNiIsIkZvciBleGFtcGxlLCBcdTIwMjYiLCJUaGF0IHNhaWQsIFx1MjAyNiIsIkFsbCB0aGluZ3MgY29uc2lkZXJlZCwgXHUyMDI2Il19LCJzNiI6IldoZW4gdGhyZWUgZ2VuZXJhdGlvbnMgbGl2ZSB0b2dldGhlciBpbiBvbmUgaG91c2UsIEkgdGhpbmsgc2V2ZXJhbCBwcm9ibGVtcyBjYW4gaGFwcGVuLiBUaGUgZmlyc3QgcHJvYmxlbSBpcyBwcml2YWN5LiBUaGUgaG91c2UgaXMgY3Jvd2RlZCwgYW5kIGV2ZXJ5b25lIGNhbiBoZWFyIGV2ZXJ5dGhpbmcuIFBhcmVudHMgY2Fubm90IGhhdmUgYSBxdWlldCBjb252ZXJzYXRpb24sIHRlZW5hZ2VycyBjYW5ub3QgYnJpbmcgdGhlaXIgZnJpZW5kcyBob21lIGNvbWZvcnRhYmx5LCBhbmQgZ3JhbmRwYXJlbnRzIGNhbm5vdCByZXN0IHdoZW4gc21hbGwgY2hpbGRyZW4gYXJlIHJ1bm5pbmcgYW5kIHNob3V0aW5nLiBUaGUgc2Vjb25kIHByb2JsZW0sIGFuZCBtYXliZSB0aGUgYmlnZ2VzdCBvbmUsIGlzIGRpZmZlcmVudCBpZGVhcyBhYm91dCByYWlzaW5nIGNoaWxkcmVuLiBGb3IgZXhhbXBsZSwgdGhlIHBhcmVudHMgc2F5IG5vIGNhbmR5IGJlZm9yZSBkaW5uZXIsIGJ1dCB0aGUgZ3JhbmRtb3RoZXIgc2VjcmV0bHkgZ2l2ZXMgdGhlIGNoaWxkcmVuIGNob2NvbGF0ZSBiZWNhdXNlIHNoZSBsb3ZlcyB0aGVtLiBUaGVuIHRoZSBjaGlsZHJlbiBsZWFybiB0byBhc2sgZ3JhbmRtYSBldmVyeSB0aW1lLCBhbmQgdGhlIHBhcmVudHMgZ2V0IGFuZ3J5LiBUaGUgdGhpcmQgcHJvYmxlbSBpcyBkaWZmZXJlbnQgZGFpbHkgc2NoZWR1bGVzLiBHcmFuZHBhcmVudHMgd2FrZSB1cCB2ZXJ5IGVhcmx5IGFuZCBnbyB0byBiZWQgZWFybHksIGJ1dCB5b3VuZyBwZW9wbGUgd2F0Y2ggbW92aWVzIGxhdGUgYXQgbmlnaHQsIHNvIHNvbWVib2R5IGlzIGFsd2F5cyBkaXN0dXJiZWQuIE1vbmV5IGNhbiBhbHNvIGNhdXNlIHN0cmVzcyBpZiBvbmx5IG9uZSBwZXJzb24gcGF5cyBmb3IgZXZlcnl0aGluZy4gT2YgY291cnNlLCBsaXZpbmcgdG9nZXRoZXIgYWxzbyBoYXMgZ29vZCBzaWRlcywgbGlrZSBmcmVlIGJhYnlzaXR0aW5nIGFuZCBmYW1pbHkgbG92ZSwgYnV0IHRoZXNlIHByb2JsZW1zIGFyZSByZWFsLCBhbmQgZmFtaWxpZXMgbmVlZCBjbGVhciBydWxlcyBhbmQgYSBsb3Qgb2YgcGF0aWVuY2UuIiwiczkiOiJNdWx0aS1nZW5lcmF0aW9uYWwgaG91c2Vob2xkcyBoYXZlIHJlYWwgYmVuZWZpdHMsIGJ1dCB0aGUgcXVlc3Rpb24gYXNrcyBhYm91dCB0aGUgcHJvYmxlbXMsIGFuZCBJJ2QgcG9pbnQgdG8gdGhyZWUgYmlnIG9uZXMuIFRoZSBmaXJzdCBpcyB0aGUgZXJvc2lvbiBvZiBwcml2YWN5LiBXaXRoIGdyYW5kcGFyZW50cywgcGFyZW50cyBhbmQgY2hpbGRyZW4gdW5kZXIgb25lIHJvb2YsIHBlcnNvbmFsIHNwYWNlIHByYWN0aWNhbGx5IGRpc2FwcGVhcnMgXHUyMDE0IHRoZSBwYXJlbnRzIGNhbid0IGhhdmUgYSBwcml2YXRlIGRpc2FncmVlbWVudCB3aXRob3V0IGFuIGF1ZGllbmNlLCB0ZWVuYWdlcnMgZmVlbCB3YXRjaGVkLCBhbmQgdGhlIGdyYW5kcGFyZW50cyB0aGVtc2VsdmVzIGdldCBubyBwZWFjZSB3aGVuIHRvZGRsZXJzIGFyZSBzdGFtcGVkaW5nIGRvd24gdGhlIGhhbGx3YXkuIFNtYWxsIGlycml0YXRpb25zIHRoYXQgd291bGQgZXZhcG9yYXRlIGluIHNlcGFyYXRlIGhvbWVzIGFjY3VtdWxhdGUgZGFpbHkuIFRoZSBzZWNvbmQsIGFuZCBpbiBteSBleHBlcmllbmNlIHRoZSBtb3N0IGV4cGxvc2l2ZSwgaXMgY29uZmxpY3RpbmcgcGhpbG9zb3BoaWVzIG9mIGNoaWxkLXJhaXNpbmcuIEdyYW5kcGFyZW50cyByYWlzZWQgdGhlaXIga2lkcyBpbiBhIGRpZmZlcmVudCBlcmE6IHBlcmhhcHMgdGhleSBiZWxpZXZlIGluIHN0cmljdGVyIGRpc2NpcGxpbmUsIG9yIHRoZSBvcHBvc2l0ZSBcdTIwMTQgdGhleSBzcG9pbCB0aGUgZ3JhbmRjaGlsZHJlbiB3aXRoIHN3ZWV0cyBhbmQgc2NyZWVuIHRpbWUgdGhlIG1vbWVudCB0aGUgcGFyZW50cyBsZWF2ZSB0aGUgcm9vbS4gVGhlIGNoaWxkcmVuIHF1aWNrbHkgbGVhcm4gdG8gcGxheSBvbmUgYXV0aG9yaXR5IGFnYWluc3QgdGhlIG90aGVyLCBhbmQgc3VkZGVubHkgdGhlIGFkdWx0cyBhcmUgYXJndWluZyBhYm91dCB3aG8gaXMgYWN0dWFsbHkgaW4gY2hhcmdlLiBUaGUgdGhpcmQgaXMgdGhlIGNvbGxpc2lvbiBvZiByb3V0aW5lcyBhbmQgZmluYW5jZXM6IGVhcmx5LWJpcmQgZ3JhbmRwYXJlbnRzIHZlcnN1cyBuaWdodC1vd2wgdGVlbmFnZXJzLCBkaWZmZXJlbnQgZGlldHMsIGRpZmZlcmVudCBub2lzZSB0b2xlcmFuY2UsIGFuZCBhd2t3YXJkIHF1ZXN0aW9ucyBhYm91dCB3aG8gcGF5cyB0aGUgYmlsbHMgb3Igb3ducyB0aGUgaG91c2UgXHUyMDE0IG1vbmV5IG1peGVkIHdpdGggZmFtaWx5IGlzIGFsd2F5cyBkZWxpY2F0ZS4gVGhhdCBzYWlkLCBJJ2xsIGNvbmNlZGUgdGhlIG90aGVyIHNpZGU6IGJ1aWx0LWluIGNoaWxkY2FyZSwgc2hhcmVkIGNvc3RzIGFuZCBncmFuZGNoaWxkcmVuIGdyb3dpbmcgdXAgY2xvc2UgdG8gdGhlaXIgZ3JhbmRwYXJlbnRzIGFyZSBnZW51aW5lbHkgcHJlY2lvdXMuIFRoZSBmYW1pbGllcyB0aGF0IG1ha2UgaXQgd29yayB0ZW5kIHRvIHNldCBleHBsaWNpdCBydWxlcyBlYXJseSBcdTIwMTQgYnV0IHdpdGhvdXQgdGhvc2UsIGFsbCB0aHJlZSBwcm9ibGVtcyBmbGFyZSB1cCByZW1hcmthYmx5IGZhc3QuIn0seyJrIjoidDgiLCJudW0iOjgsInR5cGVFbiI6IkRlc2NyaWJpbmcgYW4gVW51c3VhbCBTaXR1YXRpb24iLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiWW91IHdvcmsgYXQgdGhlIExvc3QgYW5kIEZvdW5kIGRlc2suIEEgcGFzc2VuZ2VyIGNhbGxlZCBpbiBhc2tpbmcgYWJvdXQgYSBsb3N0IGJsdWUgc3dlYXRlci4gWW91IGhhdmUgdGhyZWUgc2ltaWxhciBibHVlIHN3ZWF0ZXJzLiBEZXNjcmliZSB0aGUgZGlmZmVyZW5jZXMgaW4gZGV0YWlsIGFuZCBoZWxwIHRoZSBwYXNzZW5nZXIgaWRlbnRpZnkgd2hpY2ggb25lIGlzIGhpcy4iLCJpbWciOiJ1bnVzdWFsIiwidGlwcyI6eyJidWxsZXRzIjpbIlRoaXMgaXMgYSBQSE9ORSBDQUxMOiBncmVldCB0aGUgcmlnaHQgcGVyc29uICh0aGUgcG9saWNlIC8geW91ciBmcmllbmQpLCB0aGVuIHNheSB3aGVyZSB5b3UgYXJlLiIsIkRlc2NyaWJlIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYzsgdGhlIHBpY3R1cmUgaXMgbWVhbnQgdG8gYmUgc3RyYW5nZSBcdTIwMTQganVzdCBkZXNjcmliZSB3aGF0IHlvdSBzZWUsIHVzaW5nICdJdCBsb29rcyBsaWtlIC8gYXMgaWZcdTIwMjYnLiIsIkVuZCB3aXRoIGEgcmVxdWVzdCBmb3IgYWN0aW9uIChzZW5kIGEgcGF0cm9sIC8gYXNrIHdoZXJlIHRvIGJ1eSkuIiwiVGhpcyBpcyBhIHBob25lIGNhbGwgYXQgdGhlIExvc3QgYW5kIEZvdW5kIGRlc2suIERlc2NyaWJlIGVhY2ggc3dlYXRlciBpbiB0dXJuOiAoMSkgYSBMSUdIVCBCTFVFIGxvbmcgY2FyZGlnYW4gd2l0aCBhbiBvcGVuIGZyb250LCBhIGRlY29yYXRlZCBjb2xsYXIgd2l0aCBkYXJrIGVtYnJvaWRlcnksIGFuZCBkaWFtb25kIHNoYXBlcyBhbG9uZyB0aGUgcG9pbnRlZCBoZW07ICgyKSBhIE5BVlkgYmx1ZSBsb29zZSBwdWxsb3ZlciBibG91c2UgY292ZXJlZCBpbiBzbWFsbCBzcGVja2xlZCBzcXVhcmVzLCBnYXRoZXJlZCBhdCBhIGxpZ2h0ZXIgcmliYmVkIGNvbGxhcjsgKDMpIGEgVEVBTCBncmVlbiBidXR0b24tdXAgY2FyZGlnYW4gd2l0aCB0aHJlZSBsYXJnZSBsaWdodC1ibHVlIGRpYW1vbmQgcGFuZWxzIGRvd24gdGhlIGZyb250LiBFbmQgYnkgYXNraW5nIHdoaWNoIG9mIHRoZXNlIG1hdGNoZXMgaGlzIHN3ZWF0ZXIuIl0sInBocmFzZXMiOlsiSSdtIGNhbGxpbmcgdG8gcmVwb3J0XHUyMDI2IiwiUGljdHVyZSB0aGlzOiBcdTIwMjYiLCJJdCBsb29rcyBhcyBpZlx1MjAyNiIsIkNvdWxkIHlvdSBzZW5kXHUyMDI2IC8gRG8geW91IGtub3cgd2hlcmVcdTIwMjY\/Il19LCJzNiI6Ikdvb2QgYWZ0ZXJub29uLCBzaXIuIFRoaXMgaXMgdGhlIExvc3QgYW5kIEZvdW5kIGRlc2suIFllcywgeW91IGFyZSBsdWNreSBcdTIwMTQgd2UgaGF2ZSB0aHJlZSBibHVlIHN3ZWF0ZXJzIGhlcmUsIGJ1dCB0aGV5IGFyZSBhbGwgZGlmZmVyZW50LCBzbyBsZXQgbWUgZGVzY3JpYmUgdGhlbSwgYW5kIHBsZWFzZSB0ZWxsIG1lIHdoaWNoIG9uZSBpcyB5b3Vycy4gVGhlIGZpcnN0IG9uZSBpcyBsaWdodCBibHVlLCBsaWtlIHRoZSBza3kuIEl0IGlzIGEgbG9uZyBjYXJkaWdhbiB3aXRoIGFuIG9wZW4gZnJvbnQsIHNvIGl0IGhhcyBubyBidXR0b25zLiBJdCBoYXMgYSBiZWF1dGlmdWwgY29sbGFyIHdpdGggZGFyayBlbWJyb2lkZXJlZCBmbG93ZXJzLCBhbmQgYWxvbmcgdGhlIGJvdHRvbSB0aGVyZSBhcmUgc21hbGwgZGlhbW9uZCBzaGFwZXMuIFRoZSBib3R0b20gaXMgbm90IHN0cmFpZ2h0IFx1MjAxNCBpdCBoYW5ncyBkb3duIGluIHR3byBsb25nIHBvaW50cy4gVGhlIHNlY29uZCBzd2VhdGVyIGlzIGRhcmsgbmF2eSBibHVlLiBJdCBpcyBhIGxvb3NlLCBzb2Z0IHB1bGxvdmVyLCBhbmQgaXQgaXMgY292ZXJlZCB3aXRoIG1hbnkgc21hbGwgbGlnaHQgc3F1YXJlcywgbGlrZSBsaXR0bGUgZG90cyBldmVyeXdoZXJlLiBUaGUgY29sbGFyIGlzIGxpZ2h0ZXIgYmx1ZSBhbmQgZ2F0aGVyZWQsIGxpa2Ugc21hbGwgZm9sZHMuIFRoZSB0aGlyZCBvbmUgaXMgbm90IHJlYWxseSBibHVlIFx1MjAxNCBpdCBpcyBtb3JlIHRlYWwgZ3JlZW4uIEl0IGlzIGEgY2FyZGlnYW4gd2l0aCBidXR0b25zLCBhbmQgb24gdGhlIGZyb250IGl0IGhhcyB0aHJlZSBiaWcgbGlnaHQtYmx1ZSBkaWFtb25kIHBhdHRlcm5zLCBvbmUgdW5kZXIgYW5vdGhlci4gU28gc2lyLCB3aGljaCBvbmUgc291bmRzIGxpa2UgeW91ciBzd2VhdGVyIFx1MjAxNCB0aGUgbG9uZyBsaWdodC1ibHVlIG9uZSwgdGhlIGRvdHRlZCBuYXZ5IG9uZSwgb3IgdGhlIGdyZWVuIG9uZSB3aXRoIGRpYW1vbmRzPyIsInM5IjoiR29vZCBhZnRlcm5vb24sIHNpciwgdGhhbmsgeW91IGZvciBjYWxsaW5nIHRoZSBMb3N0IGFuZCBGb3VuZCBkZXNrLiBZb3UncmUgaW4gbHVjayBcdTIwMTQgdGhyZWUgYmx1ZSBzd2VhdGVycyB3ZXJlIGhhbmRlZCBpbiB0aGlzIHdlZWssIGJ1dCB0aGV5J3JlIHF1aXRlIGRpc3RpbmN0LCBzbyBpZiB5b3UgYmVhciB3aXRoIG1lIHdoaWxlIEkgZGVzY3JpYmUgdGhlbSwgSSdtIHN1cmUgd2UgY2FuIGlkZW50aWZ5IHlvdXJzLiBUaGUgZmlyc3QgaXMgYSBwYWxlLCBza3ktYmx1ZSBjYXJkaWdhbiwgcXVpdGUgbG9uZywgd2l0aCBhbiBvcGVuIHdhdGVyZmFsbCBmcm9udCBhbmQgbm8gYnV0dG9ucyBhdCBhbGwuIEl0cyBtb3N0IGRpc3RpbmN0aXZlIGZlYXR1cmUgaXMgdGhlIHdpZGUgY29sbGFyLCB3aGljaCBpcyBkZWNvcmF0ZWQgd2l0aCBkYXJrIGVtYnJvaWRlcmVkIGZsb3dlcnMsIGFuZCB0aGUgaGVtIGZhbGxzIGludG8gdHdvIGxvbmcgcG9pbnRzIHdpdGggYSByb3cgb2Ygc21hbGwgZGlhbW9uZCBzaGFwZXMgc3RpdGNoZWQgYWxvbmcgdGhlIGVkZ2VzIFx1MjAxNCBxdWl0ZSBhbiBlbGVnYW50LCBmbG93aW5nIHBpZWNlLiBUaGUgc2Vjb25kIGlzIGEgbXVjaCBkYXJrZXIgbmF2eSBibHVlLiBJdCdzIGEgbG9vc2UsIHJlbGF4ZWQgcHVsbG92ZXIgYmxvdXNlIHJhdGhlciB0aGFuIGEgY2FyZGlnYW4sIGFuZCB0aGUgd2hvbGUgZmFicmljIGlzIHNwZWNrbGVkIHdpdGggdGlueSBsaWdodGVyIHNxdWFyZXMgXHUyMDE0IGFsbW9zdCBsaWtlIGNvbmZldHRpIFx1MjAxNCBnYXRoZXJlZCBpbnRvIGEgc29mdCwgcmliYmVkIGNvbGxhciBpbiBhIGxpZ2h0ZXIgc2hhZGUgb2YgYmx1ZS4gVGhlIHRoaXJkLCBob25lc3RseSwgaXMgY2xvc2VyIHRvIHRlYWwgZ3JlZW4gdGhhbiB0cnVlIGJsdWU6IGEgZml0dGVkIGJ1dHRvbi11cCBjYXJkaWdhbiB3aXRoIHRocmVlIGxhcmdlLCBsaWdodC1ibHVlIGRpYW1vbmQtc2hhcGVkIHBhbmVscyBydW5uaW5nIHN0cmFpZ2h0IGRvd24gdGhlIGZyb250IGJldHdlZW4gdGhlIGJ1dHRvbnMsIGFuZCBhIHBhdHRlcm5lZCB0cmltIGFyb3VuZCB0aGUgbmVja2xpbmUuIFNvLCBzaXIgXHUyMDE0IGRvZXMgeW91cnMgc291bmQgbGlrZSB0aGUgbG9uZyBwYWxlLWJsdWUgb25lIHdpdGggdGhlIGVtYnJvaWRlcmVkIGNvbGxhciwgdGhlIHNwZWNrbGVkIG5hdnkgcHVsbG92ZXIsIG9yIHRoZSB0ZWFsIGNhcmRpZ2FuIHdpdGggdGhlIGJpZyBkaWFtb25kcz8gSWYgeW91IGNhbiB0ZWxsIG1lIHRoZSBzaXplIG9yIGFueSBkZXRhaWwgZnJvbSB0aGUgbGFiZWwsIEknbGwgc2V0IGl0IGFzaWRlIGZvciB5b3UgcmlnaHQgYXdheS4ifV0sInVpIjp7InN0YXJ0VGVzdCI6IlN0YXJ0IHRoZSB0ZXN0IiwibWljRW5hYmxlIjoiRW5hYmxlIG1pY3JvcGhvbmUiLCJtaWNSZWFkeSI6Ik1pY3JvcGhvbmUgcmVhZHkiLCJtaWNCbG9ja2VkIjoiTWljcm9waG9uZSBpcyBibG9ja2VkIG9yIHVuYXZhaWxhYmxlIFx1MjAxNCB0aGUgcGFnZSB3aWxsIHJ1biBpbiB0aW1lci1vbmx5IG1vZGUgKHlvdSBjYW4gc3RpbGwgcHJhY3Rpc2Ugc3BlYWtpbmcgYWxvbmcgd2l0aCB0aGUgdGltZXJzKS4iLCJtaWNOb3RlIjoiUmVjb3JkaW5ncyBhcmUgc3RvcmVkIHRlbXBvcmFyaWx5IGluIHlvdXIgYnJvd3NlciBvbmx5IFx1MjAxNCBub3RoaW5nIGlzIHVwbG9hZGVkIHRvIGFueSBzZXJ2ZXIuIFRoZXkgYXJlIGxvc3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhZ2UsIHNvIGRvd25sb2FkIGFueSB5b3Ugd2FudCB0byBrZWVwLiIsInByZXBUaXRsZSI6IlByZXBhcmF0aW9uIFRpbWUiLCJyZWNUaXRsZSI6IlJlY29yZGluZyIsInN0YXJ0UHJlcCI6Ilx1MjViNiBTdGFydCBwcmVwYXJhdGlvbiIsInNraXBQcmVwIjoiU2tpcCBcdTIwMTQgcmVjb3JkIG5vdyBcdTAwYmIiLCJzdG9wUmVjIjoiXHUyNWEwIFN0b3AgcmVjb3JkaW5nIiwicmVjb3JkZWQiOiJSZWNvcmRlZCIsInJlUmVjb3JkIjoiXHUyMWJiIFJlY29yZCBhZ2FpbiIsImRvd25sb2FkIjoiXHUyYjA3IERvd25sb2FkIiwidGltZXJPbmx5IjoiVGltZXItb25seSBtb2RlIChub3QgcmVjb3JkaW5nKSIsInNwZWFrTm93IjoiU1BFQUsgTk9XIFx1MjAxNCByZWNvcmRpbmcgc3RvcHMgYXV0b21hdGljYWxseSB3aGVuIHRpbWUgaXMgdXAiLCJuZXh0IjoiTkVYVCIsImNob29zZUhpbnQiOiJDbGljayB0byBjaG9vc2Ugb25lIG9wdGlvbiBcdTIwMTQgaWYgdGhlIDYwIHNlY29uZHMgcnVuIG91dCwgdGhlIHN5c3RlbSBjaG9vc2VzIGZvciB5b3UiLCJjb25maXJtQ2hvaWNlIjoiQ29uZmlybSBjaG9pY2UgJiBjb250aW51ZSBcdTAwYmIiLCJ5b3VyQ2hvaWNlIjoiWW91ciBDaG9pY2UiLCJ0aXBzVG9nZ2xlIjoiXHVkODNkXHVkY2ExIFRpcHMgJiBzYW1wbGUgYW5zd2VycyAob3BlbiBhZnRlciB5b3UgZmluaXNoIHNwZWFraW5nKSIsInRhYlRpcHMiOiJPdXRsaW5lICYgcGhyYXNlcyIsInRhYlM2IjoiU2FtcGxlIENMQiA2IiwidGFiUzkiOiJTYW1wbGUgQ0xCIDkiLCJ0YWJSdWJyaWMiOiJTZWxmLWFzc2Vzc21lbnQiLCJydWJyaWNOb3RlIjoiTGlzdGVuIHRvIHlvdXIgcmVjb3JkaW5nLCB0aGVuIHJhdGUgeW91cnNlbGYgMVx1MjAxMzUgb24gZWFjaCBjcml0ZXJpb24gKHRoZSA0IG9mZmljaWFsIENFTFBJUCByYXRpbmcgZGltZW5zaW9ucyk6IiwicnVicmljQ3JpdCI6WyJDb250ZW50ICYgQ29oZXJlbmNlIFx1MjAxNCBjb21wbGV0ZSBpZGVhcywgbG9naWNhbCBmbG93IiwiVm9jYWJ1bGFyeSBcdTIwMTQgcmFuZ2UgYW5kIHByZWNpc2lvbiIsIkxpc3RlbmFiaWxpdHkgXHUyMDE0IHByb251bmNpYXRpb24sIGludG9uYXRpb24sIGZsdWVuY3kiLCJUYXNrIEZ1bGZpbGxtZW50IFx1MjAxNCBhZGRyZXNzZXMgdGhlIHRhc2ssIGFwcHJvcHJpYXRlIGxlbmd0aCJdLCJlc3RpbWF0ZSI6IkVzdGltYXRlZCBsZXZlbCAoZm9yIHJlZmVyZW5jZSk6IiwiZXN0RGlzY2xhaW1lciI6IlNlbGYtYXNzZXNzbWVudCBpcyBhIHJvdWdoIGd1aWRlIG9ubHkgXHUyMDE0IGl0IGRvZXMgbm90IHJlcGxhY2UgYW4gb2ZmaWNpYWwgc2NvcmUuIiwidXNlZnVsUGhyYXNlcyI6IlVzZWZ1bCBwaHJhc2VzIiwiZW5kVGl0bGUiOiJTcGVha2luZyB0ZXN0IGNvbXBsZXRlISIsImVuZFN1YiI6IlJlcGxheSBlYWNoIHRhc2ssIGNvbXBhcmUgeW91ciBhbnN3ZXJzIHdpdGggdGhlIENMQiA2IC8gQ0xCIDkgc2FtcGxlcywgdGhlbiByYXRlIHlvdXJzZWxmLiIsImVuZE5vUmVjIjoibm90IHJlY29yZGVkIiwiZW5kUmVkbyI6Ilx1MjFiYiBTdGFydCBvdmVyIiwiZW5kVDIiOiJDb250aW51ZSB0byBQcmFjdGljZSBUZXN0IiwiZW5kSHViIjoiXHUyMTkwIEJhY2sgdG8gQ0VMUElQIEh1YiIsIndhcm11cEJhZGdlIjoiV2FybS11cCBcdTIwMTQgbm90IHNjb3JlZCIsImludHJvTm90ZXMiOlsiQW4gYWNjdXJhdGUgc2ltdWxhdGlvbiBvZiB0aGUgcmVhbCBDRUxQSVAgR2VuZXJhbCBTcGVha2luZyB0ZXN0OiAxIHByYWN0aWNlICh3YXJtLXVwKSB0YXNrICsgOCBzY29yZWQgdGFza3MsIGFib3V0IDIwIG1pbnV0ZXMgaW4gdG90YWwuIiwiRWFjaCB0YXNrOiByZWFkIHRoZSBwcm9tcHQgXHUyMTkyIDxiPlByZXBhcmF0aW9uPC9iPiBjb3VudGRvd24gXHUyMTkyIHN3aXRjaGVzIGF1dG9tYXRpY2FsbHkgdG8gPGI+UmVjb3JkaW5nPC9iPiAod2l0aCBhIGJlZXApIFx1MjE5MiBzdG9wcyB3aGVuIHRpbWUgaXMgdXAuIiwiT24gdGhlIHJlYWwgdGVzdCB5b3UgY2Fubm90IGdvIGJhY2sgdG8gYSBwcmV2aW91cyB0YXNrLiBJbiBwcmFjdGljZSBtb2RlLCB5b3UgY2FuIGNsaWNrIHRoZSBudW1iZXJlZCBjaGlwcyBhYm92ZSB0byByZXZpc2l0IGFueSB0YXNrLiIsIkFmdGVyIHNwZWFraW5nIG9uIGVhY2ggdGFzaywgb3BlbiA8Yj5UaXBzICYgc2FtcGxlIGFuc3dlcnM8L2I+IHRvIGNvbXBhcmUgeW91ciByZXNwb25zZSB3aXRoIHRoZSBDTEIgNiBhbmQgQ0xCIDkgc2FtcGxlcy4iXSwiaGVyb1RhZyI6IkNFTFBJUCBHZW5lcmFsIFx1MjAxNCBTcGVha2luZyIsImhlcm9NZXRhIjpbIjggdGFza3MgKyB3YXJtLXVwIiwifjIwIG1pbnV0ZXMiLCJSZWNvcmQgJiByZXBsYXkiLCJDTEIgNiAvIENMQiA5IHNhbXBsZXMiXX19OwovKiBDRUxQSVAgU3BlYWtpbmcgRW5naW5lIHYxLjAgLSBBbGxFbmdsaXNoNFUgLSB2YW5pbGxhIEpTLCBwcmVmaXggY2xwLXNwayAqLwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwp2YXIgRCA9IHdpbmRvdy5DTFBTUEtfREFUQSwgVSA9IEQudWk7CnZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscC1zcGstcm9vdCIpOwppZighcm9vdCkgcmV0dXJuOwoKLyogLS0tLS0tLS0tLSBzdHlsZSAtLS0tLS0tLS0tICovCnZhciBDU1MgPSAiIisKIi5jbHAtc3BrLXdyYXB7bWF4LXdpZHRoOjExNDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAxNHB4IDYwcHg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMjMyNzJkOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9IisKIi5jbHAtc3BrLXdyYXAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IisKIi5jbHAtc3BrLWhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCM3ZjFkMWQgMCUsI2I5MWMxYyA1NSUsI2RjMjYyNiAxMDAlKTtib3JkZXItcmFkaXVzOjE4cHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjMwcHggMzBweCAyNnB4O21hcmdpbjoxOHB4IDAgMjBweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWhlcm86YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNjBweDt0b3A6LTYwcHg7d2lkdGg6MjIwcHg7aGVpZ2h0OjIyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpfSIrCiIuY2xwLXNway1oZXJvIC50YWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4zNSk7cGFkZGluZzozcHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjZweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLWhlcm8gaDF7bWFyZ2luOjEwcHggMCA2cHg7Zm9udC1zaXplOjI3cHg7bGluZS1oZWlnaHQ6MS4yNTtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1oZXJvIC5tZXRhe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi10b3A6MTJweH0iKwoiLmNscC1zcGstaGVybyAubWV0YSBzcGFue2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMjIpO3BhZGRpbmc6NHB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4fSIrCiIuY2xwLXNway1jaGlwc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW46MCAwIDE0cHh9IisKIi5jbHAtc3BrLWNoaXB7bWluLXdpZHRoOjM4cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyOjEuNXB4IHNvbGlkICNkM2Q4ZGY7YmFja2dyb3VuZDojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2NvbG9yOiM1YjY1NzI7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowIDEwcHh9IisKIi5jbHAtc3BrLWNoaXAuY3Vye2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1jaGlwLmRvbmV7YmFja2dyb3VuZDojZTZmNGVhO2JvcmRlci1jb2xvcjojN2JjMzk0O2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgzMCw0MCw2MCwuMDYpfSIrCiIuY2xwLXNway1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtiYWNrZ3JvdW5kOiNlY2VjZWU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Q1ZDVkODtwYWRkaW5nOjlweCAxNHB4O2ZsZXgtd3JhcDp3cmFwfSIrCiIuY2xwLXNway1iYXIgLnR7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzNjNDA0Nn0iKwoiLmNscC1zcGstYmFyIC5te21hcmdpbi1sZWZ0OmF1dG87Zm9udC1zaXplOjEyLjVweDtjb2xvcjojNTU1O3doaXRlLXNwYWNlOm5vd3JhcH0iKwoiLmNscC1zcGstYmFyIC5tIGJ7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstbmV4dHtiYWNrZ3JvdW5kOiMxNDY3YzY7Y29sb3I6I2ZmZjtib3JkZXI6MDtib3JkZXItcmFkaXVzOjRweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouOHB4O3BhZGRpbmc6N3B4IDE4cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLW5leHQ6aG92ZXJ7YmFja2dyb3VuZDojMGY1N2FifSIrCiIuY2xwLXNway1ib2R5e3BhZGRpbmc6MThweCAyMHB4IDIycHh9IisKIi5jbHAtc3BrLXByb21wdHtkaXNwbGF5OmZsZXg7Z2FwOjlweDtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTUuNXB4O2xpbmUtaGVpZ2h0OjEuNX0iKwoiLmNscC1zcGstcHJvbXB0IC5pe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMyYzdjYjA7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo4MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MnB4fSIrCiIuY2xwLXNway1sZWFke2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NHB4fSIrCiIuY2xwLXNway1jaG9vc2Uxe21hcmdpbjoxNHB4IDAgMDtwYWRkaW5nOjEycHggMTZweDtiYWNrZ3JvdW5kOiNmNWY3ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZGZlNGVhO2JvcmRlci1yYWRpdXM6OXB4O2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS41NX0iKwoiLmNscC1zcGstY2hvb3NlMSAuZXtmb250LXdlaWdodDo4MDA7Y29sb3I6IzhhMWYxZjtsZXR0ZXItc3BhY2luZzouNHB4fSIrCiIuY2xwLXNway1pbWd7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6NTQwcHg7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNjZmQ0ZGE7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luOjE2cHggMCA0cHh9IisKIi5jbHAtc3BrLW5vdGV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzhhOTI5YzttYXJnaW4tdG9wOjZweH0iKwoiLmNscC1zcGstdGltZXJyb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjIwcHggMCA2cHh9IisKIi5jbHAtc3BrLXRpbWVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHg7YmFja2dyb3VuZDojZTllY2VmO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNnB4IDI2cHg7bWluLXdpZHRoOjMwMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyIC5pY3t3aWR0aDo0NHB4O2hlaWdodDo0NHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2Y4ZjlmYTtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToyMnB4fSIrCiIuY2xwLXNway10aW1lciAubGJ7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMzMzM4M2Y7Zm9udC1zaXplOjE1cHh9IisKIi5jbHAtc3BrLXRpbWVyIC5ue2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMGI1N2QwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczttaW4td2lkdGg6NTJweDt0ZXh0LWFsaWduOmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIucmVje2JhY2tncm91bmQ6I2ZkZWNlYjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstdGltZXIucmVjIC5ue2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAuaWN7YmFja2dyb3VuZDojZmZmO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway1kb3R7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNlNTM5MzU7ZGlzcGxheTppbmxpbmUtYmxvY2s7YW5pbWF0aW9uOmNscGJsaW5rIDFzIGluZmluaXRlfSIrCiJAa2V5ZnJhbWVzIGNscGJsaW5rezAlLDEwMCV7b3BhY2l0eToxfTUwJXtvcGFjaXR5Oi4yNX19IisKIi5jbHAtc3BrLWN0cntkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW46MTRweCAwIDJweH0iKwoiLmNscC1zcGstYnRue2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzODNmO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6OXB4IDE4cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWJ0bjpob3Zlcntib3JkZXItY29sb3I6IzlhYTNhZH0iKwoiLmNscC1zcGstYnRuLnByaXtiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstYnRuLnByaTpob3ZlcntiYWNrZ3JvdW5kOiMwYTRjYjV9IisKIi5jbHAtc3BrLWJ0bi53YXJue2JhY2tncm91bmQ6I2M2MjgyODtib3JkZXItY29sb3I6I2M2MjgyODtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1zcGVha25vd3t0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYzYyODI4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjhweDtsZXR0ZXItc3BhY2luZzouM3B4fSIrCiIuY2xwLXNway1yZXZpZXd7bWFyZ2luOjE2cHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmMmY5ZjM7Ym9yZGVyOjFweCBzb2xpZCAjYmZlM2M2O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMThweH0iKwoiLmNscC1zcGstcmV2aWV3IC5va3tjb2xvcjojMWU3YjNlO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTQuNXB4fSIrCiIuY2xwLXNway1yZXZpZXcgYXVkaW97d2lkdGg6MTAwJTttYXJnaW46MTBweCAwIDhweH0iKwoiLmNscC1zcGstbWlje21hcmdpbjoxMnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZmZmOGU2O2JvcmRlcjoxcHggc29saWQgI2VjZDlhMDtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzdhNWIxMn0iKwoiLmNscC1zcGstb3B0c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7bWFyZ2luOjE4cHggMCA0cHh9IisKIi5jbHAtc3BrLWNhcmR7Ym9yZGVyOjJweCBzb2xpZCAjZDVkYWUwO2JvcmRlci1yYWRpdXM6MTFweDtwYWRkaW5nOjEzcHggMTVweCAxNXB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzfSIrCiIuY2xwLXNway1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjojOGZiNGU4fSIrCiIuY2xwLXNway1jYXJkLnNlbHtib3JkZXItY29sb3I6IzJlOWU0ZjtiYWNrZ3JvdW5kOiNlZWY5ZjB9IisKIi5jbHAtc3BrLWNhcmQucGxhaW57Y3Vyc29yOmRlZmF1bHR9IisKIi5jbHAtc3BrLWNhcmQgLmhke3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM2Yjc0ODA7bGV0dGVyLXNwYWNpbmc6LjNweDttYXJnaW4tYm90dG9tOjhweH0iKwoiLmNscC1zcGstY2FyZCBpbWd7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjdweDtib3JkZXI6MXB4IHNvbGlkICNlMmU2ZWF9IisKIi5jbHAtc3BrLWNhcmQgLnR0e2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTVweDttYXJnaW46MTBweCAwIDZweDtjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1jYXJkIHVse21hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjojM2M0MzRifSIrCiIuY2xwLXNway1jYXJkIC5waWNre21hcmdpbi10b3A6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo4MDA7Y29sb3I6IzJlOWU0Zjtmb250LXNpemU6MTNweDttaW4taGVpZ2h0OjE4cHh9IisKIi5jbHAtc3BrLWhpbnR7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzZiNzQ4MDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLWFjY3ttYXJnaW4tdG9wOjIycHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTFweDtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWFjYz5idXR0b257d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjowO3BhZGRpbmc6MTJweCAxNnB4O2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTRweDtjb2xvcjojM2M0MDQ2O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjE0cHggMTZweCAxOHB4O2JhY2tncm91bmQ6I2ZmZn0iKwoiLmNscC1zcGstYWNjLm9wZW4gLmNscC1zcGstYWNjYm9keXtkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJze2Rpc3BsYXk6ZmxleDtnYXA6NnB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTJweH0iKwoiLmNscC1zcGstdGFie2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NnB4IDE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzRhNTI1Y30iKwoiLmNscC1zcGstdGFiLm9ue2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway10YWJwYW5le2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjV9IisKIi5jbHAtc3BrLXRhYnBhbmUub257ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFicGFuZSB1bHtwYWRkaW5nLWxlZnQ6MjBweDttYXJnaW46OHB4IDB9IisKIi5jbHAtc3BrLXRhYnBhbmUgbGl7bWFyZ2luOjVweCAwfSIrCiIuY2xwLXNway1zYW1wbGV7YmFja2dyb3VuZDojZjhmOWZiO2JvcmRlcjoxcHggc29saWQgI2UzZTdlYztib3JkZXItbGVmdDo0cHggc29saWQgIzBiNTdkMDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEzcHggMTZweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0iKwoiLmNscC1zcGstc2FtcGxlLnM2e2JvcmRlci1sZWZ0LWNvbG9yOiNlOGExM2N9IisKIi5jbHAtc3BrLXBocntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLXBociBzcGFue2JhY2tncm91bmQ6I2VlZjNmYjtib3JkZXI6MXB4IHNvbGlkICNjZGRkZjU7Y29sb3I6IzE3NGE5Yztib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NHB4IDEycHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLXJ1Yntib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1ydWIgdGR7cGFkZGluZzo3cHggNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWYwZjN9IisKIi5jbHAtc3BrLXN0YXJ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE5cHg7Y29sb3I6I2M5Y2ZkNjtwYWRkaW5nOjAgMXB4O3VzZXItc2VsZWN0Om5vbmV9IisKIi5jbHAtc3BrLXN0YXIub257Y29sb3I6I2YwYTcxYn0iKwoiLmNscC1zcGstZXN0e21hcmdpbi10b3A6MTBweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstYmFkZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2U4ZDQ4Yjtjb2xvcjojN2E1YjEyO2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDEycHg7bWFyZ2luLWJvdHRvbToxMHB4fSIrCiIuY2xwLXNway1pbnRybyB1bHtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNztwYWRkaW5nLWxlZnQ6MjBweH0iKwoiLmNscC1zcGstaW50cm8gbGl7bWFyZ2luOjdweCAwfSIrCiIuY2xwLXNway1taWNyb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtmbGV4LXdyYXA6d3JhcDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjFweCBzb2xpZCAjZTBlNGU5O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEzcHggMTZweDttYXJnaW46MTZweCAwfSIrCiIuY2xwLXNway1taWNzdHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstbWljc3Qub2t7Y29sb3I6IzFlN2IzZX0uY2xwLXNway1taWNzdC5iYWR7Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstZW5kIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNHB4fSIrCiIuY2xwLXNway1lbmQgdGQsLmNscC1zcGstZW5kIHRoe3BhZGRpbmc6OXB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlZmYyO3RleHQtYWxpZ246bGVmdH0iKwoiLmNscC1zcGstZW5kIGF1ZGlve2hlaWdodDozNHB4O21heC13aWR0aDoyMzBweH0iKwoiQG1lZGlhKG1heC13aWR0aDo3MDBweCl7LmNscC1zcGstb3B0c3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5jbHAtc3BrLWJhciAubXtvcmRlcjozO21hcmdpbi1sZWZ0OjA7d2lkdGg6MTAwJX0uY2xwLXNway1oZXJvIGgxe2ZvbnQtc2l6ZToyMnB4fS5jbHAtc3BrLWJvZHl7cGFkZGluZzoxNHB4IDEycHggMThweH19IjsKdmFyIHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsgc3QudGV4dENvbnRlbnQgPSBDU1M7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpOwoKLyogLS0tLS0tLS0tLSBzdGF0ZSAtLS0tLS0tLS0tICovCnZhciBTID0gewogIGN1cjogLTEsICAgICAgICAgICAgLyogLTEgaW50cm8sIDAuLjggdGFza3MsIDk5IGVuZCAqLwogIG1pY1N0YXRlOiAiaWRsZSIsICAgLyogaWRsZXxva3xiYWQgKi8KICBzdHJlYW06IG51bGwsIHJlY29yZGVyOiBudWxsLCBjaHVua3M6IFtdLAogIHRpbWVyOiBudWxsLCBwaGFzZToge30sIHQ1Y2hvaWNlOiB7fSwgcmVjczoge30sIHJ1YnJpYzoge30sCiAgbWltZTogIiIsIGV4dDogIndlYm0iCn07CkQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQgPyAiY2hvb3NlLWlkbGUiIDogImlkbGUiOyB9KTsKCmZ1bmN0aW9uIHBpY2tNaW1lKCl7CiAgaWYoIXdpbmRvdy5NZWRpYVJlY29yZGVyKSByZXR1cm4gbnVsbDsKICB2YXIgY2FuZHMgPSBbWyJhdWRpby93ZWJtO2NvZGVjcz1vcHVzIiwid2VibSJdLFsiYXVkaW8vd2VibSIsIndlYm0iXSxbImF1ZGlvL21wNCIsIm00YSJdLFsiYXVkaW8vb2dnO2NvZGVjcz1vcHVzIiwib2dnIl1dOwogIGZvcih2YXIgaT0wO2k8Y2FuZHMubGVuZ3RoO2krKyl7IHRyeXsgaWYoTWVkaWFSZWNvcmRlci5pc1R5cGVTdXBwb3J0ZWQoY2FuZHNbaV1bMF0pKSByZXR1cm4gY2FuZHNbaV07IH1jYXRjaChlKXt9IH0KICByZXR1cm4gWyIiLCJ3ZWJtIl07Cn0KZnVuY3Rpb24gZW5zdXJlTWljKGNiKXsKICBpZihTLm1pY1N0YXRlPT09Im9rIikgcmV0dXJuIGNiKHRydWUpOwogIGlmKFMubWljU3RhdGU9PT0iYmFkIikgcmV0dXJuIGNiKGZhbHNlKTsKICBpZighbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyB8fCAhbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgfHwgIXdpbmRvdy5NZWRpYVJlY29yZGVyKXsgUy5taWNTdGF0ZT0iYmFkIjsgcmV0dXJuIGNiKGZhbHNlKTsgfQogIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihmdW5jdGlvbihzdHJlYW0pewogICAgUy5zdHJlYW0gPSBzdHJlYW07IHZhciBtID0gcGlja01pbWUoKTsgUy5taW1lID0gbVswXTsgUy5leHQgPSBtWzFdOyBTLm1pY1N0YXRlPSJvayI7IGNiKHRydWUpOwogIH0pLmNhdGNoKGZ1bmN0aW9uKCl7IFMubWljU3RhdGU9ImJhZCI7IGNiKGZhbHNlKTsgfSk7Cn0KZnVuY3Rpb24gYmVlcChuKXsKICB0cnl7CiAgICB2YXIgY3R4ID0gd2luZG93Ll9fY2xwQUMgPSB3aW5kb3cuX19jbHBBQyB8fCBuZXcgKHdpbmRvdy5BdWRpb0NvbnRleHR8fHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQpKCk7CiAgICB2YXIgdDAgPSBjdHguY3VycmVudFRpbWU7CiAgICBmb3IodmFyIGk9MDtpPG47aSsrKXsKICAgICAgdmFyIG8gPSBjdHguY3JlYXRlT3NjaWxsYXRvcigpLCBnID0gY3R4LmNyZWF0ZUdhaW4oKTsKICAgICAgby5mcmVxdWVuY3kudmFsdWUgPSA4ODA7IG8uY29ubmVjdChnKTsgZy5jb25uZWN0KGN0eC5kZXN0aW5hdGlvbik7CiAgICAgIGcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KTsgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4xOCx0MCtpKjAuMjUrMC4wMik7CiAgICAgIGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUrMC4xOCk7CiAgICAgIG8uc3RhcnQodDAraSowLjI1KTsgby5zdG9wKHQwK2kqMC4yNSswLjIpOwogICAgfQogIH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gc3RvcFRpbWVyKCl7IGlmKFMudGltZXIpeyBjbGVhckludGVydmFsKFMudGltZXIpOyBTLnRpbWVyPW51bGw7IH0gfQpmdW5jdGlvbiBjb3VudGRvd24oc2Vjcywgb25UaWNrLCBvbkVuZCl7CiAgc3RvcFRpbWVyKCk7CiAgdmFyIGVuZCA9IERhdGUubm93KCkgKyBzZWNzKjEwMDA7CiAgb25UaWNrKHNlY3MpOwogIFMudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChlbmQtRGF0ZS5ub3coKSkvMTAwMCkpOwogICAgb25UaWNrKGxlZnQpOwogICAgaWYobGVmdDw9MCl7IHN0b3BUaW1lcigpOyBvbkVuZCgpOyB9CiAgfSwgMjUwKTsKfQpmdW5jdGlvbiBzdG9wUmVjb3JkaW5nKCl7CiAgaWYoUy5yZWNvcmRlciAmJiBTLnJlY29yZGVyLnN0YXRlIT09ImluYWN0aXZlIil7IHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXt9IH0KICBTLnJlY29yZGVyID0gbnVsbDsKfQpmdW5jdGlvbiBsZWF2ZUNsZWFudXAoKXsgc3RvcFRpbWVyKCk7IHN0b3BSZWNvcmRpbmcoKTsgfQoKLyogLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZWwodGFnLCBjbHMsIGh0bWwpeyB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7IGlmKGNscyllLmNsYXNzTmFtZT1jbHM7IGlmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDsgcmV0dXJuIGU7IH0KZnVuY3Rpb24gZm10TWV0YSh0KXsKICBpZih0LnBoYXNlZCkgcmV0dXJuICIiOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3QucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHRhc2tUaXRsZSh0KXsKICBpZih0Lndhcm11cCkgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBQcmFjdGljZSBUYXNrIjsKICByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFRhc2sgIit0Lm51bSsiOiAiK3QudHlwZUVuOwp9CmZ1bmN0aW9uIGVzdFRleHQoYXZnKXsKICBpZihhdmc+PTQuNSkgcmV0dXJuICJDTEIgOSsiOyBpZihhdmc+PTMuNSkgcmV0dXJuICJDTEIgN1x1MjAxMzgiOyBpZihhdmc+PTIuNSkgcmV0dXJuICJDTEIgNVx1MjAxMzYiOyByZXR1cm4gIkNMQiA0IG9yIGJlbG93IjsKfQoKLyogLS0tLS0tLS0tLSByZW5kZXIgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXIoKXsKICBsZWF2ZUNsZWFudXAoKTsKICByb290LmlubmVySFRNTCA9ICIiOwogIHZhciB3cmFwID0gZWwoImRpdiIsImNscC1zcGstd3JhcCIpOwogIHdyYXAuYXBwZW5kQ2hpbGQoaGVybygpKTsKICBpZihTLmN1cj49MCAmJiBTLmN1cjxELnRhc2tzLmxlbmd0aCkgd3JhcC5hcHBlbmRDaGlsZChjaGlwcygpKTsKICBpZihTLmN1cj09PS0xKSB3cmFwLmFwcGVuZENoaWxkKGludHJvKCkpOwogIGVsc2UgaWYoUy5jdXI9PT05OSkgd3JhcC5hcHBlbmRDaGlsZChlbmRTY3JlZW4oKSk7CiAgZWxzZSB3cmFwLmFwcGVuZENoaWxkKHRhc2tQYW5lbChELnRhc2tzW1MuY3VyXSkpOwogIHJvb3QuYXBwZW5kQ2hpbGQod3JhcCk7CiAgdHJ5eyB3aW5kb3cuc2Nyb2xsVG8oe3RvcDogcm9vdC5vZmZzZXRUb3AtMTAsIGJlaGF2aW9yOiJzbW9vdGgifSk7IH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gaGVybygpewogIHZhciBoID0gZWwoImRpdiIsImNscC1zcGstaGVybyIpOwogIGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0YWciLFUuaGVyb1RhZykpOwogIGguYXBwZW5kQ2hpbGQoZWwoImgxIixudWxsLEQudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdID8gIlNwZWFraW5nIFx1MjAxNCIrRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gOiBELnRpdGxlKSk7CiAgdmFyIG0gPSBlbCgiZGl2IiwibWV0YSIpOwogIFUuaGVyb01ldGEuZm9yRWFjaChmdW5jdGlvbih4KXsgbS5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogIGguYXBwZW5kQ2hpbGQobSk7CiAgcmV0dXJuIGg7Cn0KZnVuY3Rpb24gY2hpcHMoKXsKICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNoaXBzIik7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgYiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhpPT09Uy5jdXI\/IiBjdXIiOihTLnJlY3NbdC5rXT8iIGRvbmUiOiIiKSksIHQud2FybXVwPyJXIjpTdHJpbmcodC5udW0pKTsKICAgIGIudGl0bGUgPSB0LnR5cGVFbjsKICAgIGIub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgYy5hcHBlbmRDaGlsZChiKTsKICB9KTsKICB2YXIgZSA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhTLmN1cj09PTk5PyIgY3VyIjoiIiksIlx1ZDgzY1x1ZGZjMSIpOwogIGUudGl0bGUgPSAiRmluaXNoIjsgZS5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9OTk7IHJlbmRlcigpOyB9OwogIGMuYXBwZW5kQ2hpbGQoZSk7CiAgcmV0dXJuIGM7Cn0KZnVuY3Rpb24gaW50cm8oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstaW50cm8iKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIikpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7IG54LnN0eWxlLm1hcmdpbkxlZnQ9ImF1dG8iOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOyBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCwiU3BlYWtpbmcgVGVzdCBJbnN0cnVjdGlvbnMiKSk7CiAgYi5hcHBlbmRDaGlsZChwcik7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgVS5pbnRyb05vdGVzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGIuYXBwZW5kQ2hpbGQodWwpOwogIHZhciBtaWNyb3cgPSBlbCgiZGl2IiwiY2xwLXNway1taWNyb3ciKTsKICB2YXIgbWJ0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUubWljRW5hYmxlKTsKICB2YXIgbXN0ID0gZWwoInNwYW4iLCJjbHAtc3BrLW1pY3N0IiwiIik7CiAgbWJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIG1idG4uZGlzYWJsZWQgPSB0cnVlOwogICAgZW5zdXJlTWljKGZ1bmN0aW9uKG9rKXsKICAgICAgbXN0LmNsYXNzTmFtZSA9ICJjbHAtc3BrLW1pY3N0ICIrKG9rPyJvayI6ImJhZCIpOwogICAgICBtc3QuaW5uZXJIVE1MID0gb2sgPyAiXHUyNzE0ICIrVS5taWNSZWFkeSA6ICJcdTI3MTYgIitVLm1pY0Jsb2NrZWQ7CiAgICAgIGlmKCFvaykgbWJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgfSk7CiAgfTsKICBtaWNyb3cuYXBwZW5kQ2hpbGQobWJ0bik7IG1pY3Jvdy5hcHBlbmRDaGlsZChtc3QpOwogIGIuYXBwZW5kQ2hpbGQobWljcm93KTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUubWljTm90ZSkpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0VGVzdCsiIFx1MjViNiIpOwogIGdvLnN0eWxlLmZvbnRTaXplPSIxNXB4IjsgZ28uc3R5bGUucGFkZGluZz0iMTJweCAyNnB4IjsKICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgY3RyLmFwcGVuZENoaWxkKGdvKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogLS0tLS0tLS0tLSB0YXNrIHBhbmVsIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGFza1BhbmVsKHQpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsdGFza1RpdGxlKHQpKSk7CiAgdmFyIG1ldGEgPSBlbCgic3BhbiIsIm0iLCB0LnBoYXNlZCA\/IHBoYXNlZE1ldGEodCkgOiBmbXRNZXRhKHQpKTsKICBiYXIuYXBwZW5kQ2hpbGQobWV0YSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXIgPSAoUy5jdXIrMSA8IEQudGFza3MubGVuZ3RoKSA\/IFMuY3VyKzEgOiA5OTsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgaWYodC53YXJtdXApIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstYmFkZ2UiLFUud2FybXVwQmFkZ2UpKTsKICBpZih0LnBoYXNlZCkgcmVuZGVyVDUodCxiLG1ldGEpOwogIGVsc2UgcmVuZGVyU3RkKHQsYik7CiAgaWYodC50aXBzKSBiLmFwcGVuZENoaWxkKGFjY29yZGlvbih0KSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQpmdW5jdGlvbiBwaGFzZWRNZXRhKHQpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXXx8IiI7CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKSByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QuY2hvb3NlLnByZXArIiBzZWNvbmRzPC9iPiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnNwZWFrLnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5zcGVhay5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gcHJvbXB0Um93KHRleHQsIGxlYWQpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYobGVhZCl7IGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1sZWFkIixsZWFkKSk7IH0KICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHRleHQpKTsKICBib3guYXBwZW5kQ2hpbGQocHIpOwogIHJldHVybiBib3g7Cn0KZnVuY3Rpb24gcmVuZGVyU3RkKHQsYil7CiAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5wcm9tcHQsIHQucHJvbXB0TGVhZCkpOwogIGlmKHQuY2hvb3NlT25lKXsKICAgIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hvb3NlMSIsIjxkaXYgY2xhc3M9J2UnPkNob29zZSBPTkU6PC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5FSVRIRVI8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMF0rIjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+T1I8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMV0rIjwvZGl2PiIpOwogICAgYi5hcHBlbmRDaGlsZChjKTsKICB9CiAgaWYodC5pbWcgJiYgRC5pbWdzW3QuaW1nXSl7CiAgICB2YXIgaW0gPSBlbCgiaW1nIiwiY2xwLXNway1pbWciKTsgaW0uc3JjID0gRC5pbWdzW3QuaW1nXTsgaW0uYWx0ID0gdC50eXBlRW47CiAgICBiLmFwcGVuZENoaWxkKGltKTsKICB9CiAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5wcmVwLCB0LnJlYywgInQiKSk7Cn0KZnVuY3Rpb24gcmVuZGVyVDUodCxiLG1ldGFFbCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCl7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LmNob29zZS5zaXR1YXRpb24pKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsdC5jaG9vc2Uubm90ZSkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB0LmNob29zZS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24obyxpZHgpewogICAgICB2YXIgY2FyZCA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQiKyhTLnQ1Y2hvaWNlW3Qua109PT1pZHg\/IiBzZWwiOiIiKSk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKG8pKTsKICAgICAgdmFyIHBrID0gZWwoImRpdiIsInBpY2siLCBTLnQ1Y2hvaWNlW3Qua109PT1pZHggPyAiXHUyNzE0IFNlbGVjdGVkIiA6ICIiKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChwayk7CiAgICAgIGNhcmQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgUy50NWNob2ljZVt0LmtdID0gaWR4OwogICAgICAgIGdyaWQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstY2FyZCIpLmZvckVhY2goZnVuY3Rpb24oY2Qsail7CiAgICAgICAgICBjZC5jbGFzc05hbWUgPSAiY2xwLXNway1jYXJkIisoaj09PWlkeD8iIHNlbCI6IiIpOwogICAgICAgICAgY2QucXVlcnlTZWxlY3RvcigiLnBpY2siKS50ZXh0Q29udGVudCA9IChqPT09aWR4KT8iXHUyNzE0IFNlbGVjdGVkIjoiIjsKICAgICAgICB9KTsKICAgICAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICAgfTsKICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjYXJkKTsKICAgIH0pOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstaGludCIsVS5jaG9vc2VIaW50KSk7CiAgICAvKiBjb3VudGRvd24gZm9yIGNob29zZSBwaGFzZSAqLwogICAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogICAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICAgIHRtLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKSk7CiAgICB2YXIgbGIgPSBlbCgiZGl2Iik7IGxiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpKTsKICAgIHRtLmFwcGVuZENoaWxkKGxiKTsKICAgIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcodC5jaG9vc2UucHJlcCkpOwogICAgdG0uYXBwZW5kQ2hpbGQobik7CiAgICB0cm93LmFwcGVuZENoaWxkKHRtKTsKICAgIGIuYXBwZW5kQ2hpbGQodHJvdyk7CiAgICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICB2YXIgY2J0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5jb25maXJtQ2hvaWNlKTsKICAgIGNidG4uc3R5bGUuZGlzcGxheSA9IChTLnQ1Y2hvaWNlW3Qua10hPW51bGwpPyJpbmxpbmUtYmxvY2siOiJub25lIjsKICAgIHZhciBnb1NwZWFrID0gZnVuY3Rpb24oKXsKICAgICAgc3RvcFRpbWVyKCk7CiAgICAgIGlmKFMudDVjaG9pY2VbdC5rXT09bnVsbCkgUy50NWNob2ljZVt0LmtdID0gMDsKICAgICAgUy5waGFzZVt0LmtdID0gInNwZWFrIjsKICAgICAgcmVuZGVyKCk7CiAgICB9OwogICAgc3RhcnQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgUy5waGFzZVt0LmtdID0gImNob29zZS1ydW4iOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfTsKICAgIGNidG4ub25jbGljayA9IGdvU3BlYWs7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOyBjdHIuYXBwZW5kQ2hpbGQoY2J0bik7CiAgICBiLmFwcGVuZENoaWxkKGN0cik7CiAgICBpZihTLnBoYXNlW3Qua109PT0iY2hvb3NlLXJ1biIpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudD1TdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfQogIH0gZWxzZSB7CiAgICBtZXRhRWwuaW5uZXJIVE1MID0gcGhhc2VkTWV0YSh0KTsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuc3BlYWsucHJvbXB0KSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHZhciBvdGhlciA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4iKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsdC5zcGVhay5vdGhlckxhYmVsKSk7CiAgICBvdGhlci5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHModC5zcGVhay5vdGhlcikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChvdGhlcik7CiAgICB2YXIgY2hvc2VuID0gdC5jaG9vc2Uub3B0aW9uc1tTLnQ1Y2hvaWNlW3Qua10hPW51bGwgPyBTLnQ1Y2hvaWNlW3Qua10gOiAwXTsKICAgIHZhciBtaW5lID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiBzZWwiKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIixVLnlvdXJDaG9pY2UpKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKGNob3NlbikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChtaW5lKTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnNwZWFrLnByZXAsIHQuc3BlYWsucmVjLCAidDVzIikpOwogIH0KfQpmdW5jdGlvbiBpbWdUaXRsZUJ1bGxldHMobyl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihvLmltZyAmJiBELmltZ3Nbby5pbWddKXsgdmFyIGltID0gZWwoImltZyIpOyBpbS5zcmMgPSBELmltZ3Nbby5pbWddOyBpbS5hbHQgPSBvLnRpdGxlOyBib3guYXBwZW5kQ2hpbGQoaW0pOyB9CiAgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJ0dCIsby50aXRsZSkpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIG8uYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBib3guYXBwZW5kQ2hpbGQodWwpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gcHJlcC9yZWNvcmQgYmxvY2sgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0aW1lckJsb2NrKGtleSwgcHJlcFNlY3MsIHJlY1NlY3MsIG1vZGUpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgdmFyIGljID0gZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpOwogIHZhciBsYiA9IGVsKCJkaXYiKTsgdmFyIGxidCA9IGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpOyBsYi5hcHBlbmRDaGlsZChsYnQpOwogIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcocHJlcFNlY3MpKTsKICB0bS5hcHBlbmRDaGlsZChpYyk7IHRtLmFwcGVuZENoaWxkKGxiKTsgdG0uYXBwZW5kQ2hpbGQobik7CiAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7IGJveC5hcHBlbmRDaGlsZCh0cm93KTsKICB2YXIgc3BlYWtub3cgPSBlbCgiZGl2IiwiY2xwLXNway1zcGVha25vdyIsIiIpOyBib3guYXBwZW5kQ2hpbGQoc3BlYWtub3cpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsgYm94LmFwcGVuZENoaWxkKGN0cik7CiAgdmFyIHJldmlld1Nsb3QgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChyZXZpZXdTbG90KTsKICB2YXIgbWljbm90ZSA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKG1pY25vdGUpOwoKICBmdW5jdGlvbiBzaG93SWRsZSgpewogICAgY3RyLmlubmVySFRNTCA9ICIiOyBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIiOyBsYnQudGV4dENvbnRlbnQgPSBVLnByZXBUaXRsZTsgaWMudGV4dENvbnRlbnQgPSAiXHVkODNkXHVkZDUyIjsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhwcmVwU2Vjcyk7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICBzdGFydC5vbmNsaWNrID0gc3RhcnRQcmVwOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsKICAgIGlmKFMucmVjc1trZXldKSBzaG93UmV2aWV3KGZhbHNlKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRQcmVwKCl7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24oKXsKICAgICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgICB2YXIgc2tpcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5za2lwUHJlcCk7CiAgICAgIHNraXAub25jbGljayA9IGZ1bmN0aW9uKCl7IHN0b3BUaW1lcigpOyBzdGFydFJlYygpOyB9OwogICAgICBjdHIuYXBwZW5kQ2hpbGQoc2tpcCk7CiAgICAgIGNvdW50ZG93bihwcmVwU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZ1bmN0aW9uKCl7IHN0YXJ0UmVjKCk7IH0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UmVjKCl7CiAgICBiZWVwKDIpOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIgcmVjIjsKICAgIGljLmlubmVySFRNTCA9ICI8c3BhbiBjbGFzcz0nY2xwLXNway1kb3QnPjwvc3Bhbj4iOwogICAgbi50ZXh0Q29udGVudCA9IFN0cmluZyhyZWNTZWNzKTsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBzdG9wcGVkID0gZmFsc2U7CiAgICB2YXIgaGF2ZU1pYyA9IChTLm1pY1N0YXRlPT09Im9rIiAmJiBTLnN0cmVhbSk7CiAgICBsYnQudGV4dENvbnRlbnQgPSBoYXZlTWljID8gVS5yZWNUaXRsZSA6IFUudGltZXJPbmx5OwogICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSBVLnNwZWFrTm93OwogICAgbWljbm90ZS5pbm5lckhUTUwgPSBoYXZlTWljID8gIiIgOiAiPGRpdiBjbGFzcz0nY2xwLXNway1taWMnPiIrVS5taWNCbG9ja2VkKyI8L2Rpdj4iOwogICAgdmFyIHQwID0gRGF0ZS5ub3coKTsKICAgIHZhciBmaW5pc2ggPSBmdW5jdGlvbigpewogICAgICBpZihzdG9wcGVkKSByZXR1cm47IHN0b3BwZWQgPSB0cnVlOwogICAgICBzdG9wVGltZXIoKTsgYmVlcCgxKTsKICAgICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgICAgdmFyIHNlY3MgPSBNYXRoLm1pbihyZWNTZWNzLCBNYXRoLnJvdW5kKChEYXRlLm5vdygpLXQwKS8xMDAwKSk7CiAgICAgIGlmKGhhdmVNaWMgJiYgUy5yZWNvcmRlcil7CiAgICAgICAgUy5yZWNvcmRlci5vbnN0b3AgPSBmdW5jdGlvbigpewogICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihTLmNodW5rcywgUy5taW1lP3t0eXBlOlMubWltZX06dW5kZWZpbmVkKTsKICAgICAgICAgIGlmKFMucmVjc1trZXldICYmIFMucmVjc1trZXldLnVybCl7IHRyeXsgVVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba2V5XS51cmwpOyB9Y2F0Y2goZSl7fSB9CiAgICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjogYmxvYiwgdXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCBzZWNzOiBzZWNzIH07CiAgICAgICAgICBTLnJlY29yZGVyID0gbnVsbDsKICAgICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgICAgfTsKICAgICAgICB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7IFMucmVjc1trZXldID0ge2Jsb2I6bnVsbCx1cmw6bnVsbCxzZWNzOnNlY3N9OyBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOyB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6bnVsbCwgdXJsOm51bGwsIHNlY3M6IHNlY3MgfTsKICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICB9CiAgICB9OwogICAgaWYoaGF2ZU1pYyl7CiAgICAgIFMuY2h1bmtzID0gW107CiAgICAgIHRyeXsKICAgICAgICBTLnJlY29yZGVyID0gUy5taW1lID8gbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0se21pbWVUeXBlOlMubWltZX0pIDogbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0pOwogICAgICAgIFMucmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gZnVuY3Rpb24oZXYpeyBpZihldi5kYXRhICYmIGV2LmRhdGEuc2l6ZSkgUy5jaHVua3MucHVzaChldi5kYXRhKTsgfTsKICAgICAgICBTLnJlY29yZGVyLnN0YXJ0KCk7CiAgICAgIH1jYXRjaChlKXsgUy5yZWNvcmRlciA9IG51bGw7IGhhdmVNaWMgPSBmYWxzZTsgbGJ0LnRleHRDb250ZW50ID0gVS50aW1lck9ubHk7IH0KICAgIH0KICAgIHZhciBzdG9wID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHdhcm4iLFUuc3RvcFJlYyk7CiAgICBzdG9wLm9uY2xpY2sgPSBmaW5pc2g7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RvcCk7CiAgICBjb3VudGRvd24ocmVjU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZpbmlzaCk7CiAgfQogIGZ1bmN0aW9uIHNob3dSZXZpZXcoc2Nyb2xsVG8pewogICAgdmFyIHIgPSBTLnJlY3Nba2V5XTsgaWYoIXIpIHJldHVybjsKICAgIHJldmlld1Nsb3QuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgcnYgPSBlbCgiZGl2IiwiY2xwLXNway1yZXZpZXciKTsKICAgIHJ2LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJvayIsIlx1MjcxNCAiK1UucmVjb3JkZWQrIiAoIityLnNlY3MrInMpIikpOwogICAgaWYoci51cmwpewogICAgICB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsKICAgICAgcnYuYXBwZW5kQ2hpbGQoYXUpOwogICAgICB2YXIgcm93ID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICAgIHZhciBkbCA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZG93bmxvYWQpOwogICAgICBkbC5ocmVmID0gci51cmw7IGRsLmRvd25sb2FkID0gImNlbHBpcC1zIitELnNldCsidCIrRC50ZXN0KyItdGFzayIrKGtleT09PSJ3Ij8iMCI6a2V5LnJlcGxhY2UoInQiLCIiKSkrIi4iK1MuZXh0OwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGwpOwogICAgICBydi5hcHBlbmRDaGlsZChyb3cpOwogICAgfQogICAgcmV2aWV3U2xvdC5hcHBlbmRDaGlsZChydik7CiAgICBpZihzY3JvbGxUbyl7IHRyeXsgcnYuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSk7IH1jYXRjaChlKXt9IH0KICB9CiAgc2hvd0lkbGUoKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHRpcHMvc2FtcGxlcyBhY2NvcmRpb24gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBhY2NvcmRpb24odCl7CiAgdmFyIGFjYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjYyIpOwogIHZhciBidG4gPSBlbCgiYnV0dG9uIixudWxsLFUudGlwc1RvZ2dsZSk7CiAgYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBhY2MuY2xhc3NOYW1lID0gYWNjLmNsYXNzTmFtZS5pbmRleE9mKCJvcGVuIik+LTEgPyAiY2xwLXNway1hY2MiIDogImNscC1zcGstYWNjIG9wZW4iOyB9OwogIGFjYy5hcHBlbmRDaGlsZChidG4pOwogIHZhciBib2R5ID0gZWwoImRpdiIsImNscC1zcGstYWNjYm9keSIpOwogIHZhciB0YWJzID0gZWwoImRpdiIsImNscC1zcGstdGFicyIpOwogIHZhciBwYW5lcyA9IFtdOwogIGZ1bmN0aW9uIGFkZFRhYihsYWJlbCwgcGFuZUJ1aWxkZXIpewogICAgdmFyIGkgPSBwYW5lcy5sZW5ndGg7CiAgICB2YXIgdGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway10YWIiKyhpPT09MD8iIG9uIjoiIiksbGFiZWwpOwogICAgdmFyIHBuID0gZWwoImRpdiIsImNscC1zcGstdGFicGFuZSIrKGk9PT0wPyIgb24iOiIiKSk7CiAgICBwYW5lQnVpbGRlcihwbik7CiAgICB0Yi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgdGFicy5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFiIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgICAgYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWJwYW5lIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYnBhbmUiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgfTsKICAgIHRhYnMuYXBwZW5kQ2hpbGQodGIpOyBwYW5lcy5wdXNoKHBuKTsKICB9CiAgYWRkVGFiKFUudGFiVGlwcywgZnVuY3Rpb24ocG4pewogICAgdmFyIHVsID0gZWwoInVsIik7CiAgICB0LnRpcHMuYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHVsKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS51c2VmdWxQaHJhc2VzKyI6PC9iPiIpKTsKICAgIHZhciBwaCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBociIpOwogICAgdC50aXBzLnBocmFzZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgcGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHBoKTsKICB9KTsKICBpZih0LnM2KSBhZGRUYWIoVS50YWJTNiwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUgczYiLHQuczYpKTsgfSk7CiAgaWYodC5zOSkgYWRkVGFiKFUudGFiUzksIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIix0LnM5KSk7IH0pOwogIGlmKCF0Lndhcm11cCkgYWRkVGFiKFUudGFiUnVicmljLCBmdW5jdGlvbihwbil7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLFUucnVicmljTm90ZSkpOwogICAgdmFyIHRiID0gZWwoInRhYmxlIiwiY2xwLXNway1ydWIiKTsKICAgIGlmKCFTLnJ1YnJpY1t0LmtdKSBTLnJ1YnJpY1t0LmtdID0gWzAsMCwwLDBdOwogICAgdmFyIGVzdEQgPSBlbCgiZGl2IiwiY2xwLXNway1lc3QiLCIiKTsKICAgIFUucnVicmljQ3JpdC5mb3JFYWNoKGZ1bmN0aW9uKGNyLGNpKXsKICAgICAgdmFyIHRyID0gZWwoInRyIik7CiAgICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCxjcikpOwogICAgICB2YXIgdGQgPSBlbCgidGQiKTsgdGQuc3R5bGUud2hpdGVTcGFjZSA9ICJub3dyYXAiOyB0ZC5zdHlsZS50ZXh0QWxpZ24gPSAicmlnaHQiOwogICAgICBmb3IodmFyIHMyPTE7czI8PTU7czIrKyl7CiAgICAgICAgKGZ1bmN0aW9uKHN2KXsKICAgICAgICAgIHZhciBzcCA9IGVsKCJzcGFuIiwiY2xwLXNway1zdGFyIisoUy5ydWJyaWNbdC5rXVtjaV0+PXN2PyIgb24iOiIiKSwiXHUyNjA1Iik7CiAgICAgICAgICBzcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgUy5ydWJyaWNbdC5rXVtjaV0gPSBzdjsKICAgICAgICAgICAgdGQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstc3RhciIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway1zdGFyIisoajxzdj8iIG9uIjoiIik7IH0pOwogICAgICAgICAgICB1cGQoKTsKICAgICAgICAgIH07CiAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChzcCk7CiAgICAgICAgfSkoczIpOwogICAgICB9CiAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogICAgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh0Yik7CiAgICBwbi5hcHBlbmRDaGlsZChlc3REKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogICAgZnVuY3Rpb24gdXBkKCl7CiAgICAgIHZhciBhcnIgPSBTLnJ1YnJpY1t0LmtdOyB2YXIgZG9uZSA9IGFyci5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pOwogICAgICBlc3RELnRleHRDb250ZW50ID0gZG9uZSA\/IChVLmVzdGltYXRlKyIgIitlc3RUZXh0KGFyci5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStiO30sMCkvNCkpIDogIiI7CiAgICB9CiAgICB1cGQoKTsKICB9KTsKICBib2R5Lmluc2VydEJlZm9yZSh0YWJzLCBib2R5LmZpcnN0Q2hpbGQpOwogIHBhbmVzLmZvckVhY2goZnVuY3Rpb24ocG4peyBib2R5LmFwcGVuZENoaWxkKHBuKTsgfSk7CiAgYWNjLmFwcGVuZENoaWxkKGJvZHkpOwogIHJldHVybiBhY2M7Cn0KCi8qIC0tLS0tLS0tLS0gZW5kIHNjcmVlbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVuZFNjcmVlbigpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1lbmQiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIFx1MjAxNCAiK1UuZW5kVGl0bGUpKTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UuZW5kVGl0bGUrIjwvYj4gIitVLmVuZFN1YikpOwogIHZhciB0YiA9IGVsKCJ0YWJsZSIpOwogIHZhciB0aHIgPSBlbCgidHIiKTsgWyJUYXNrIiwiVHlwZSIsIlJlY29yZGluZyIsIiJdLmZvckVhY2goZnVuY3Rpb24oaCl7IHRoci5hcHBlbmRDaGlsZChlbCgidGgiLG51bGwsaCkpOyB9KTsKICB0Yi5hcHBlbmRDaGlsZCh0aHIpOwogIHZhciBucmVjID0gMDsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLCI8Yj4iKyh0Lndhcm11cD8iVyI6dC5udW0pKyI8L2I+IikpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLHQudHlwZUVuKSk7CiAgICB2YXIgciA9IFMucmVjc1t0LmtdOwogICAgdmFyIHRkID0gZWwoInRkIik7CiAgICBpZihyICYmIHIudXJsKXsgbnJlYysrOyB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsgdGQuYXBwZW5kQ2hpbGQoYXUpOyB9CiAgICBlbHNlIGlmKHIpeyBucmVjKys7IHRkLnRleHRDb250ZW50ID0gci5zZWNzKyJzICgiK1UudGltZXJPbmx5KyIpIjsgfQogICAgZWxzZSB0ZC5pbm5lckhUTUwgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOiNjNjI4MjgnPiIrVS5lbmROb1JlYysiPC9zcGFuPiI7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICB2YXIgdGQyID0gZWwoInRkIik7CiAgICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLCJcdTIxOTIiKTsKICAgIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIHRkMi5hcHBlbmRDaGlsZChnbyk7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZDIpOwogICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogIH0pOwogIGIuYXBwZW5kQ2hpbGQodGIpOwogIC8qIHJ1YnJpYyBhdmcgKi8KICB2YXIgdmFscyA9IFtdOwogIE9iamVjdC5rZXlzKFMucnVicmljKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyB2YXIgYT1TLnJ1YnJpY1trXTsgaWYoYSAmJiBhLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSkpIHZhbHMucHVzaChhLnJlZHVjZShmdW5jdGlvbih4LHkpe3JldHVybiB4K3k7fSwwKS80KTsgfSk7CiAgaWYodmFscy5sZW5ndGgpewogICAgdmFyIGF2ZyA9IHZhbHMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErYzt9LDApL3ZhbHMubGVuZ3RoOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1lc3QiLFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXZnKSsiICgiK3ZhbHMubGVuZ3RoKyIgdGFzayhzKSBzZWxmLXJhdGVkKSIpKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgfQogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgcmVkbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5lbmRSZWRvKTsKICByZWRvLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgT2JqZWN0LmtleXMoUy5yZWNzKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBpZihTLnJlY3Nba10mJlMucmVjc1trXS51cmwpeyB0cnl7VVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba10udXJsKTt9Y2F0Y2goZSl7fSB9IH0pOwogICAgUy5yZWNzID0ge307IFMucnVicmljID0ge307IFMudDVjaG9pY2UgPSB7fTsKICAgIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQ\/ImNob29zZS1pZGxlIjoiaWRsZSI7IH0pOwogICAgUy5jdXIgPSAtMTsgcmVuZGVyKCk7CiAgfTsKICB2YXIgdDIgPSBlbCgiYSIsImNscC1zcGstYnRuIHByaSIsVS5lbmRUMisiICIrKEQudGVzdD09PTE\/MjoxKSsiIFx1MjE5MiIpOyB0Mi5ocmVmID0gRC5vdGhlclVybDsKICB2YXIgaHViID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5lbmRIdWIpOyBodWIuaHJlZiA9ICIvY2VscGlwLyI7CiAgY3RyLmFwcGVuZENoaWxkKHJlZG8pOyBjdHIuYXBwZW5kQ2hpbGQodDIpOyBjdHIuYXBwZW5kQ2hpbGQoaHViKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1taWMiLFUubWljTm90ZSkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIGV4cG9zZSBmb3IgdGVzdHMgKi8Kd2luZG93LkNMUFNQSyA9IHsgc3RhdGU6IFMsIGRhdGE6IEQsIGdvdG86IGZ1bmN0aW9uKGkpeyBTLmN1cj1pOyByZW5kZXIoKTsgfSwgcmVuZGVyOiByZW5kZXIgfTsKcmVuZGVyKCk7Cn0pKCk7Cg==\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 6 Practice Test 1: all 8 official-style tasks with on-screen prep and recording timers, sample responses and self-assessment tips. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6347","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6347"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6347\/revisions"}],"predecessor-version":[{"id":6523,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6347\/revisions\/6523"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}