{"id":6241,"date":"2026-07-10T01:06:52","date_gmt":"2026-07-10T01:06:52","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-1-test-2-writing\/"},"modified":"2026-07-12T03:24:58","modified_gmt":"2026-07-12T03:24:58","slug":"celpip-set-1-test-2-writing","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-1-test-2-writing\/","title":{"rendered":"CELPIP Set 1 Test 2 \u2013 Writing Practice Test"},"content":{"rendered":"<div class=\"clpw-wrap\" id=\"clpwApp\"><\/div>\n<p><script>eval(atob(\"dmFyIFdEQVRBID0geyJtZXRhIjogeyJicmFuZCI6ICJDRUxQSVAiLCAic2V0IjogIlNldCAxIFx1MDBiNyBQcmFjdGljZSBUZXN0IDIiLCAidGl0bGUiOiAiQ0VMUElQIFdyaXRpbmcgUHJhY3RpY2UgVGVzdCIsICJ0b3RhbE1pbiI6IDUzfSwgInRhc2tzIjogW3siaWQiOiAxLCAiYmFyVGl0bGUiOiAiUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBXcml0aW5nIFRhc2sgMTogV3JpdGluZyBhbiBFbWFpbCIsICJuYW1lIjogIldyaXRpbmcgYW4gRW1haWwiLCAibWludXRlcyI6IDI3LCAid29yZEFpbSI6ICIxNTBcdTIwMTMyMDAgd29yZHMiLCAicmVhZEhlYWQiOiAiUmVhZCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiIsICJzY2VuYXJpbyI6ICJZb3UgaGF2ZSByZWdpc3RlcmVkIGZvciBhIHNpeC1tb250aCBjb21wdXRlciB0cmFpbmluZyBwcm9ncmFtIGF0IFNhbWJybyBDb21tdW5pdHkgQ29sbGVnZS4gWW91IHdhbnQgdG8gcmVudCBhIHJvb20gZnJvbSBTYW1icm8gSG91c2luZyBBZ2VuY3kuIiwgInByb21wdEhlYWQiOiAiV3JpdGUgYW4gZW1haWwgdG8gdGhlIGFnZW5jeSBpbiBhYm91dCAxNTBcdTIwMTMyMDAgd29yZHMuIFlvdXIgZW1haWwgc2hvdWxkIGRvIHRoZSBmb2xsb3dpbmcgdGhpbmdzOiIsICJidWxsZXRzIjogWyJFeHBsYWluIHdoZW4geW91IG5lZWQgdG8gcmVudCB0aGUgcm9vbS4iLCAiRGVzY3JpYmUgeW91ciByZXF1aXJlbWVudHMgZm9yIHRoZSByb29tLiIsICJBc2sgYWJvdXQgY29zdHMgYW5kIHRoZSBhcHBsaWNhdGlvbiBwcm9jZXNzLiJdLCAib3B0aW9ucyI6IG51bGwsICJzYW1Ob3RlIjogIlRoZXNlIGFyZSBvZmZpY2lhbCBDRUxQSVAgc2FtcGxlIHJlc3BvbnNlcyB0byBhIGRpZmZlcmVudCBUYXNrIDEgZW1haWwgcHJvbXB0IChhIG5vaXNlIGNvbXBsYWludCB0byB0aGUgbG9jYWwgZ292ZXJubWVudCksIHNob3duIGF0IHRocmVlIHNjb3JlIGxldmVscyBzbyB5b3UgY2FuIHNlZSB3aGF0IENFTFBJUCA0Jm5kYXNoOzUsIDcmbmRhc2g7OCBhbmQgMTAmbmRhc2g7MTIgd3JpdGluZyBsb29rcyBsaWtlLiBMb3dlci1sZXZlbCBzYW1wbGVzIGtlZXAgdGhlaXIgb3JpZ2luYWwgbWlzdGFrZXMgb24gcHVycG9zZS4iLCAic2FtcGxlcyI6IFt7ImxldmVsIjogIkNFTFBJUCA0XHUyMDEzNSBSZXNwb25zZSIsICJub3RlIjogIkdldHMgdGhlIG1lc3NhZ2UgYWNyb3NzIGJ1dCB3aXRoIGZyZXF1ZW50IGdyYW1tYXIgYW5kIHNwZWxsaW5nIGVycm9ycywgYSB2ZXJ5IGluZm9ybWFsIHRvbmUsIGFuZCBsb29zZWx5IGNvbm5lY3RlZCBpZGVhcyB0aGF0IHNsb3cgdGhlIHJlYWRlci4iLCAidGV4dCI6ICJEZWFyIFNpci9tYWRhbSxcblxuSSBhbSBTaW1vbiBGaWVsZGluZywgbGl2aW5nIGF0IDE3QSBOb3J0aCBSYWlscm9hZCBTdC4gUmVkIFJpdmVyLCBBYiwgWjFTIDFHOS4gQW5kIGl0cyBuZWFyIHRvIHRoZSBwYXJrLkhhdmUgYSBwbGVhc2FudCBkYXkuIExhc3QgbmlnaHQgYXJvdW5kIDExcG0gaW4gYSBwYXJrIG5lYXIgdG8gb3VyIGhvdXNlLCB0aGVyZXMgYSBsb3Qgb2YgdGVlbmFnZXJzIGhhdmluZyB0aGVpciBtZWV0aW5nLiBUaGVpciB0YWxraW5nIHRvIGxvdWQgYW5kIGxvdWdoaW5nIGFuZCBzb21lIG9mIHRoZW0gdGhyb3dpbmcgdGhlaXIgdGhpbmdzIHRvIHRoZWlyIGZyaWVuZHMuXG5cblRoZXkgZ2l2ZSB1cyBwcm9ibGVtIGF0IG5pZ2h0IGVzcGVjaWFsbHkgcmlnaHQgbm93IHdlIGhhdmUgYSBuZXcgYm9ybiBiYWJ5IGFuZCBteSB3aWZlIHN0aWxsIGluIHdheXMgb2Ygc29yZS4gT3VyIGJhYnkgaXMganVzdCBvbmx5IDIgd2Vla3Mgb2xkIGFuZCBzaGUnIHdva2UgdXAgd2hlbiBzaGUgaGVhcnMgc29tZSBub2lzZXMgYW5kIHdoZW4gb3VyIGJhYnkgY3J5aW5nIGJlY2F1c2Ugb2YgdGhlbSBvdXIgbmVpZ2hib3Igd2FrZSB0b28uIFNvIHdlIGRvbnQgd2FudCB0byBoYXBwZW4gdGhhdCBzaXR1YXRpb24uIEFuZCBvZiBJIGhhdmUgd29yayBlYXJseSBtb3JuaW5nLi5cblxuSSB3b3VsZCByYXRoZXIgc3VnZ2VzdCB0aGF0IGNvbWUgaW4gb3VyIHBsYWNlIGF0IHRoZSBuaWdodCB0aW1lIGFyb3VuZCAxMXBtLiBUaGUgdGltZSB0aGV5IGFsbGwgdGhlcmUgd2hpbGUgaGF2aW5nIG5vaXN5IHRoZW4gdGhleSBkb250IGhhdmUgZXhjdXNlIHRoYXQgdGhleSBkaWRudCBkbyB0aGF0LiBBbmQgcGxlYXNlIHRhbGsgdG8gdGhlbSB0aGF0IHRoZXkgZ2F2ZSB1cyBzb21lIHByb2JsZW1zLi5UaGFuayBZb3UgYW5kIEdvZGJsZXNzLlxuXG5TaW5jZXJlbHkgWW91cnMsXG5cblNpbW9uIEZpZWxkaW5nIn0sIHsibGV2ZWwiOiAiQ0VMUElQIDdcdTIwMTM4IFJlc3BvbnNlIiwgIm5vdGUiOiAiQ2xlYXIgc3RydWN0dXJlIGFuZCBhIHNwZWNpZmljLCB3ZWxsLWRldmVsb3BlZCBjb21wbGFpbnQ7IHZvY2FidWxhcnkgaXMgc29saWQgYW5kIHRoZSBmZXcgZXJyb3JzIHJhcmVseSBibG9jayBtZWFuaW5nLiIsICJ0ZXh0IjogIlRvIHdob20gaXQgbWF5IGNvbmNlcm4gYXQgdGhlIGdvdmVybm1lbnQgZGVwYXJ0bWVudCxcblxuVGhpcyBsZXR0ZXIgaXMgcmVnYXJkaW5nIHRvIHRoZSBub2lzZSBpc3N1ZSB0aGF0IEkgaGF2ZSBiZWVuIGV4cGVyaWVuY2luZyBsYXRlbHkuXG5cbkkgYW0gbGl2aW5nIGF0IGFuIGFwYXJ0bWVudCBidWlsZGluZyBuZXh0IHRvIE1hY0RvbmFsZCBQYXJrIGluIEtpbmdzdG9uIE9udGFyaW8uIFNpbmNlIEFwcmlsLCBhIGxvdCBvZiB0ZWVuYWdlcnMgaGF2ZSBiZWVuIG1lZXRpbmcgaW4gTWFjRG9uYWxkIFBhcmsgZXZlcnkgbmlnaHQgdG8gc2thdGVib2FyZC4gVGhleSB1c3VhbGx5IHR1cm4gdXAgdGhlIG11c2ljIGFuZCBJIGNhbiBoZWFyIGl0IGF0IG15IGFwYXJ0bWVudCBhdCBsZXZlbCB0d2VsdmUuIE9jY2FzaW9uYWxseSwgSSBoZWFyIGZpcmV3b3JrcyB0b28uIFRoZSBub2lzZSB0aGV5IHByb2R1Y2VkIGhhcyBiZWVuIHNlcmlvdXNseSBhZmZlY3RpbmcgdGhlIHF1YWxpdHkgb2YgbXkgc2xlZXAuIEkgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIGdldCBhIGdvb2Qgc2xlZXAgZm9yIGEgbW9udGggYW5kIEkgaGFkIHRvIHRha2Ugc2xlZXBpbmcgcGlsbHMuIFRoZSBsYWNrIG9mIHNsZWVwIG5vdCBvbmx5IG5lZ2F0aXZlbHkgYWZmZWN0cyBteSB3b3JrIHBlcmZvcm1hbmNlIGR1cmluZyB0aGUgZGF5LCBidXQgYWxzbyBteSBoZWFsdGggYW5kIHN0cmVzcyBsZXZlbC5cblxuSSBzdHJvbmdseSByZWNvbW1lbmQgdGhlIGxvY2FsIGdvdmVybm1lbnQgdG8gY29uc2lkZXIgcmVzdHJpY3RpbmcgdGhlIG9wZW5pbmcgaG91cnMgb2YgTWFjRG9uYWxkIFBhcmsuIFRoZSBwYXJrIHNob3VsZCBiZSBjbG9zZWQgYnkgbmluZSBhdCBuaWdodC4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIG5laWdoYm91cmhvb2QgYmV0dGVyIGxpdmluZyBlbnZpcm9ubWVudCBhbmQgYXZvaWQgdW5uZWNlc3Nhcnkgbm9pc2UgY29tcGxhaW50cy5cblxuVGhhbmsgeW91LlxuXG5CZXN0IHJlZ2FyZHMsXG5CZW4gSi4gRm9udGFpbmUifSwgeyJsZXZlbCI6ICJDRUxQSVAgMTBcdTIwMTMxMiBSZXNwb25zZSIsICJub3RlIjogIkZsdWVudCwgbmF0dXJhbCBhbmQgYWxtb3N0IGVycm9yLWZyZWU7IGNvbmNyZXRlIGRldGFpbHMsIHRvbmUgYW5kIGEgY2xlYXIgc3VnZ2VzdGVkIHNvbHV0aW9uIGFyZSB3b3ZlbiB0b2dldGhlciBzbW9vdGhseS4iLCAidGV4dCI6ICJUbyB3aG9tIGl0IG1heSBjb25jZXJuLFxuXG5JIHdvdWxkIGxpa2UgdG8gcmVnaXN0ZXIgYSBjb21wbGFpbnQuIEkgY3VycmVudGx5IGxpdmUgaW4gV2hpc3RsZXIsIGEgc21hbGwgMyBiZWRyb29tIGhvdXNlIG92ZXJsb29raW5nIHRoZSB2aWxsYWdlIGdyZWVuLiBXZSBtb3ZlZCBoZXJlIGluIHRoZSBmYWxsIG9mIDIwMTMgaG93ZXZlciBzaW5jZSB0aGVuIHNvbWUgb2YgdGhlIGxvY2FsIGtpZHMgaGF2ZSBzdGFydGVkIG1lZXRpbmcgdXAgaW4gdGhlIHBhcmsgYXQgbmlnaHQgYW5kIGNhdXNpbmcgYSBsb3Qgb2Ygbm9pc2UuXG5cbldoaWxlIEkgZmVlbCB0aGlzIHdvdWxkIGJlIGZpbmUgaW4gdGhlIGVhcmx5IGV2ZW5pbmcsIGl0IGJlY29tZXMgYSBwcm9ibGVtIHdoZW4gaXQgY2FycmllcyBvbiB1bnRpbCBtaWRuaWdodC4gU29tZXRpbWVzIGV2ZW4gbGF0ZXIgdGhhbiB0aGF0IVxuXG5NeSBqb2IgcmVxdWlyZXMgbWUgdG8gd29yayBlYXJseSBtb3JuaW5ncywgSSBuZWVkIHRvIGJlIGFsZXJ0IGFuZCBmcmllbmRseSB0aHJvdWdob3V0IHRoZSBkYXkuIEJlaW5nIHdva2VuIHVwIHNldmVyYWwgdGltZXMgdGhyb3VnaG91dCB0aGUgbmlnaHQgaXMgZGVmaW5pdGVseSBoYXZpbmcgYSBuZWdhdGl2ZSBpbXBhY3Qgb24gbXkgd29yayBwZXJmb3JtYW5jZS5cblxuV2hpbGUgSSBoYXZlIHRyaWVkIHRvIGFzayB0aGVtIHRvIGtlZXAgdGhlIG5vaXNlIGRvd24gb24gbnVtZXJvdXMgb2NjYXNpb25zIGl0IGhhcyBiZWVuIHRvIG5vIGF2YWlsLiBJIGZlZWwgSSBoYXZlIG5vIHJlY291cnNlIGJ1dCB0byBjb250YWN0IHlvdSBub3cgaW4gdGhlIGhvcGVzIHRoYXQgeW91IGNvdWxkIGVuZm9yY2Ugc29tZSBmb3JtIG9mIGN1cmZldyBvbiB0aGUgcGFyay4gSSB3b3VsZCBzdWdnZXN0IG5vIGxvdWQgbm9pc2VzIGFmdGVyIG1heWJlIDlwbSBvciAxMHBtLiBUaGUgbG9jYWwgcmVzaWRlbnRzIGFuZCBteXNlbGYgd291bGQgbXVjaCBhcHByZWNpYXRlIHlvdXIgY29uc2lkZXJhdGlvbiBvbiB0aGlzIG1hdHRlci5cblxuUmVnYXJkc1xuR3dlbiBULiBBbGRlcmlkZ2UifV19LCB7ImlkIjogMiwgImJhclRpdGxlIjogIlByYWN0aWNlIFRlc3QgMiBcdTIwMTMgV3JpdGluZyBUYXNrIDI6IFJlc3BvbmRpbmcgdG8gU3VydmV5IFF1ZXN0aW9ucyIsICJuYW1lIjogIlJlc3BvbmRpbmcgdG8gU3VydmV5IFF1ZXN0aW9ucyIsICJtaW51dGVzIjogMjYsICJ3b3JkQWltIjogIjE1MFx1MjAxMzIwMCB3b3JkcyIsICJyZWFkSGVhZCI6ICJSZWFkIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIiwgInNjZW5hcmlvSGVhZCI6ICJXb3JrLWZyb20tSG9tZSBTdXJ2ZXkiLCAic2NlbmFyaW8iOiAiWW91ciBjb21wYW55IHdhbnRzIHRvIGFsbG93IHNvbWUgZW1wbG95ZWVzIHRvIHdvcmsgZnJvbSBob21lLiBOb3QgZXZlcnlvbmUgY2FuIGhhdmUgdGhpcyBjaG9pY2UgYmVjYXVzZSBzb21lIGpvYnMgbXVzdCBiZSBkb25lIGF0IHRoZSBvZmZpY2UuIFRoZSBjb21wYW55IHdhbnRzIHRvIGtub3cgaWYgdGhpcyBpcyBmYWlyIGJ5IHN1cnZleWluZyB5b3VyIG9waW5pb24gYWJvdXQgd29ya2luZyBmcm9tIGhvbWUuIiwgInByb21wdEhlYWQiOiAiQ2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBXaHkgZG8geW91IHByZWZlciB5b3VyIGNob2ljZT8gRXhwbGFpbiB0aGUgcmVhc29ucyBmb3IgeW91ciBjaG9pY2UuIFdyaXRlIGFib3V0IDE1MFx1MjAxMzIwMCB3b3Jkcy4iLCAiYnVsbGV0cyI6IFtdLCAib3B0aW9ucyI6IFt7ImtleSI6ICJBIiwgImxhYmVsIjogIk9wdGlvbiBBOiBBIHdvcmstZnJvbS1ob21lIGNob2ljZSBpcyBmYWlyLiJ9LCB7ImtleSI6ICJCIiwgImxhYmVsIjogIk9wdGlvbiBCOiBBIHdvcmstZnJvbS1ob21lIGNob2ljZSBpcyBub3QgZmFpci4ifV0sICJzYW1Ob3RlIjogIlRoZXNlIGFyZSBvZmZpY2lhbCBDRUxQSVAgc2FtcGxlIHJlc3BvbnNlcyB0byBhIGRpZmZlcmVudCBUYXNrIDIgc3VydmV5IHByb21wdCAoc2Nob29sIGZpZWxkLXRyaXAgdHJhbnNwb3J0OiBwdWJsaWMgdHJhbnNpdCB2cyBzY2hvb2wgYnVzZXMpLCBzaG93biBhdCB0aHJlZSBzY29yZSBsZXZlbHMuIExvd2VyLWxldmVsIHNhbXBsZXMga2VlcCB0aGVpciBvcmlnaW5hbCBtaXN0YWtlcyBvbiBwdXJwb3NlLiIsICJzYW1wbGVzIjogW3sibGV2ZWwiOiAiQ0VMUElQIDRcdTIwMTM1IFJlc3BvbnNlIiwgIm5vdGUiOiAiU3RhdGVzIGEgcG9zaXRpb24gYnV0IGRyaWZ0cyBiZXR3ZWVuIGlkZWFzOyBmcmVxdWVudCBncmFtbWFyIGVycm9ycyBhbmQgYXdrd2FyZCBwaHJhc2luZyByZWR1Y2UgY2xhcml0eS4iLCAidGV4dCI6ICJNeSBvcGluaW9uIGlzIHRoZSBjaGlsZHJlbiBzaG91bGQgbm90IGJlIHVzZSB0aGUgcHVibGljIHRyYW5zcG9ydGF0aW9uLlxuXG5JIGFncmVlIHdpdGggdGhlIGZpZWxkIHRyaXAgYW5kIHRoZSBtdXNldW1zLCBwYXJrcyBwbGFucyBiZWNhdXNlIHRoZSBjaGlsZHJlbiBuZWVkIHRvIGxlYXJuIHNvbWV0aGluZyBuZXcgdGhpbmdzIG91dCBvZiB0aGUgc2Nob29sLlxuXG5JIGhvcGUgdGhlIHBhcmVudHMgd2lsbCBiZSBjaG9vc2UgdGhlIHNjaG9vbCBidXNlcyBvcHRpb24sIGJlY2F1c2Ugb3VyIGtpZHMgaGF2ZSB0byBiZSBzYWZldHkuXG5cblRoZSBwdWJsaWMgdHJhbnNwb3J0YXRpb24gbm90IHJlYWxseSBzYWZldHkgZm9yIHRoZSBjbGFzc2VzIG9yIGdyb3Vwcy5cblxuRXZlcnkga2lkIGlzIGRpZmZlcmVudCwgZm9yIGV4YW1wbGUgbXkgc29uIG1hbnkgdGltZSBsb29zZSBoaW0gc3RhZmYsIHNvIGlmIHRoZXkgdXNlIHRoZSBwdWJsaWMgYnVzZXMgd2UgY2Fubm90IGZvdW5kLiBJZiB3ZSB3aWxsIHVzZSB0aGUgc2Nob29sIGJ1cyBhbGwgdGhlIGtpZHMgc3RhZmYgY2FuIGxlYXZlIGl0IG9uIHRoZSBidXMsIGFuZCBhZnRlciB0aGUgdHJpcCBldmVyeSBwYXJlbnRzIGNhbiBoZWxwaW5nIG91dCBwYWNraW5nIHRoZSBraWRzIHN0YWZmLCBhbmQgbm90aGluZyBsb29zZS4gU2Vjb25kbHkgdGhlIGNoaWxkcmVuIGFyZSBpbnRlcmVzdGVkIGZvciBldmVyeXRoaW5nLCBhbmQgSSB3b3JyeSBhYm91dC4gTXkga2lkIHN0YXJ0IHRhbGtpbmcgd2l0aCBvdGhlciBwZW9wbGUgZnJvbSB0aGUgcHVibGljIGJ1cy4uLkkgdGhpbmssIG15IHNvbiBub3QgcmVhbGx5IGtub3cgd2hvIGlzIHRoZSBiYWQgb3IgZ29vZCBwZXJzb24uXG5cbkhvcGVmdWxseSB0aGUgcGFyZW50cyB1bmRlcnN0YW5kIHRoaXMgYW5kIHdlIHdpbGwgY2hvb3NlIHRoZSBzY2hvb2wgYnVzZXMgb3B0aW9ucyJ9LCB7ImxldmVsIjogIkNFTFBJUCA3XHUyMDEzOCBSZXNwb25zZSIsICJub3RlIjogIlRha2VzIGEgY2xlYXIgc3RhbmNlIChzY2hvb2wgYnVzZXMpIHdpdGggb3JnYW5pemVkLCBkZXZlbG9wZWQgcmVhc29uaW5nOyBnb29kIHZvY2FidWxhcnkgd2l0aCBzb21lIHNsaXBzIHRoYXQgZG9uJ3QgYmxvY2sgbWVhbmluZy4iLCAidGV4dCI6ICJJdCBoYXMgY29tZSB0byBteSBub3RpY2UgdGhhdCBzb21lIHBhcmVudHMgd2hvbSB0aGVpciBraWRzIGF0dGVuZCBzY2hvb2xzIHdoZXJlIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiBoYXMgYmVlbiB1c2VkIGluIGNvbnZleWluZyB0aGVpciBraWRzIGZvciBmaWVsZCB0cmlwcyB0byBkaWZmZXJlbnQgcGFya3MgYW5kIG11c2V1bXMgYWNyb3NzIHRoZSBjaXR5IGhhdmUgZWNob2VkIHRoZWlyIGRpc3BsZWFzdXJlIG9uIHN1Y2ggcHJhY3RpY2VzLlxuXG5JbiBteSBvd24gb3BpbmlvbiwgaSBzdHJvbmdseSBzdXBwb3J0IHRoZSB1c2Ugb2Ygc2Nob29sIGJ1c2VzIGZvciBzdWNoIHRyaXBzIGFzIGl0IHB1dHMgdGhlIHNhZmV0eSBvZiB0aG9zZSBraWRzIGluIHRoZSBoYW5kcyBvZiB0aGUgc2Nob29sIGF1dGhvcml0aWVzLiBMb29raW5nIGF0IHRoZSBpc3N1ZSBmcm9tIG15IG93biBwb2ludCBvZiB2aWV3LCBhc3N1bWluZyBhbiBhY2NpZGVudCBvY2N1cnMgZHVyaW5nIG9uZSBvZiBzdWNoIHJvYWQgdHJpcHMsIHRoZSBzY2hvb2wgbWFuYWdlbWVudCB3aWxsIGJsYW1lIHRoZSBkcml2ZXIgb2YgdGhlIHB1YmxpYyB0cmFuc2l0IG9yIHRoZSBjb21wYW55IHRoYXQgcHJvdmlkZWQgdGhlIGJ1cyBmb3IgbmVnbGVjdCwgd2l0aG91dCB0YWtpbmcgYW55IG9mIHRoZSBibGFtZS5cblxuQnkgdXNpbmcgdGhlIHNjaG9vbCBidXMgaW4gbGlmdGluZyB0aG9zZSBraWRzLCB0aGUgc2FmZXR5IGFuZCB0aGUgZHJpdmVycyBza2lsbCB3aWxsIG5ldmVyIGJlIHF1ZXN0aW9uZWQuIEl0IHdpbGwgYmUgdGhlIGR1dHkgZm9yIHRoZSBzY2hvb2xzIG1hbmFnZW1lbnQgaW4gZW5zdXJpbmcgdGhhdCB0aGVpciBkcml2ZXJzIGFyZSB3ZWxsIHRyYWluZWQgdG8gaGFuZGxlIGFueSBzaXR1YXRpb24gdGhhdCBtaWdodCBjYXVzZSByb2FkIGFjY2lkZW50IGR1cmluZyBhbnkgcm9hZCB0cmlwLiBUaGlzIHdpbGwgYWxzbyBzYXZlIG1vbmV5IGZvciB0aGUgc2Nob29sIGJ5IHVzaW5nIHRoZWlyIG93biB0cmFuc3BvcnRhdGlvbi4gQXQgdGhlIGxvbmcgcnVuLCB0aGUgc2Nob29sIHdpbGwgYmVuZWZpdCBmcm9tIHN1Y2ggcG9saWN5LiJ9LCB7ImxldmVsIjogIkNFTFBJUCAxMFx1MjAxMzEyIFJlc3BvbnNlIiwgIm5vdGUiOiAiQ29uZmlkZW50LCBudWFuY2VkIGFyZ3VtZW50IChwdWJsaWMgdHJhbnNpdCkgaW4gZmx1ZW50LCBhY2N1cmF0ZSBFbmdsaXNoLCB3aXRoIGEgYmFsYW5jZWQgbm9kIHRvIHRoZSBkb3duc2lkZS4iLCAidGV4dCI6ICJJIHBlcnNvbmFsbHkgdGhpbmsgdGhhdCBpdCBpcyBhbHJpZ2h0IGZvciBjaGlsZHJlbiB0byB0cmF2ZWwgb24gdGhlIHB1YmxpYyB0cmFuc2l0LCBzaW5jZSB0aGVyZSBhcmUgYWx3YXlzIHRlYWNoZXJzIHdobyBhY2NvbXBhbnkgdGhlbSBmb3IgZmllbGQgdHJpcHMuIFRoZXkgd2lsbCBoZW5jZSBiZSBtb25pdG9yZWQgYXQgYWxsIHRpbWVzLiBJIHRoaW5rIHRoYXQgYW4gZWR1Y2F0aW9uIHN5c3RlbSBpcyBub3QgdGhlcmUgb25seSBmb3IgdGhlIGFjYWRlbWljIGRldmVsb3BtZW50IG9mIGEgY2hpbGQuIEFuIGVkdWNhdGlvbiBzeXN0ZW0gaXMgbWVhbnQgdG8gYmUgYSBjb21wbGV0ZSBlZHVjYXRpb24gcGFja2FnZSB0aGF0IGhlbHBzIGluIGdldHRpbmcgYSBjaGlsZCByZWFkeSB0byBzdGVwIGluIHRoZSB3b3JsZCBhZnRlciB0aGUgc2Nob29sIHllYXJzIGFyZSBkb25lLiBJIGJlbGlldmUgdGhhdCB3aGVuIHRha2luZyB0aGUgY2hpbGRyZW4gb3V0IGZvciBhIGZpZWxkIHRyaXAgYnkgdGFraW5nIHRoZSBwdWJsaWMgdHJhbnNpdCwgdGhlIHRlYWNoZXJzIGFsc28gZ2V0IGEgY2hhbmNlIHRvIHRlYWNoIHRoZW0gd2hhdCB0byBiZSBjYXJlZnVsIGFib3V0LCBmb3IgZXhhbXBsZSwgdGhleSB3aWxsIGJlIHRhdWdodCBub3QgdG8gYWNjZXB0IGdpZnRzIGZyb20gc3RyYW5nZXJzLCBvciBub3QgdG8gZm9sbG93IGEgc3RyYW5nZXIuIFRoZXNlIGFyZSBpbXBvcnRhbnQgbGlmZSBsZXNzb25zIHRoYXQgYSBjaGlsZCBzaG91bGQgYmUgdGF1Z2h0LlxuXG5VbmZvcnR1bmF0ZWx5LCBJIHRoaW5rIHRoYXQgaWYgdGhlIGNoaWxkcmVuIGFsd2F5cyB0cmF2ZWwgb24gc2Nob29sIGJ1c2VzLCB0aGV5IHdpbGwgYmUgb3Zlci1wcm90ZWN0ZWQuIEluIHRoZSBsb25nIHJ1biwgaXQgb25seSBtYWtlcyBsaWZlIGhhcmRlciBmb3IgdGhlbXNlbHZlcyB3aGVuIGl0J3MgdGltZSBmb3IgdGhlbSB0byBzdGVwIGluIHRoZSByZWFsIHdvcmxkLCBhZnRlciBzY2hvb2wgZGF5cy4ifV19XSwgInJ1YnJpYyI6IFt7ImsiOiAiQ29udGVudCAvIENvaGVyZW5jZSIsICJkIjogIkFsbCByZXF1aXJlZCBwb2ludHMgYXJlIGNvdmVyZWQgYW5kIGRldmVsb3BlZCB3aXRoIGNsZWFyLCBsb2dpY2FsbHkgY29ubmVjdGVkIGlkZWFzIGFuZCBwYXJhZ3JhcGhzLiJ9LCB7ImsiOiAiVm9jYWJ1bGFyeSIsICJkIjogIldvcmQgY2hvaWNlIGlzIHZhcmllZCwgcHJlY2lzZSBhbmQgc3VpdHMgdGhlIHRvbmUgKGEgc2VtaS1mb3JtYWwgZW1haWwgLyBhIHJlYXNvbmVkIG9waW5pb24pLiJ9LCB7ImsiOiAiUmVhZGFiaWxpdHkiLCAiZCI6ICJHcmFtbWFyLCBzcGVsbGluZyBhbmQgcHVuY3R1YXRpb24gYXJlIGFjY3VyYXRlIGVub3VnaCB0aGF0IHRoZSByZWFkZXIgaXMgbmV2ZXIgc2xvd2VkIGRvd24uIn0sIHsiayI6ICJUYXNrIEZ1bGZpbGxtZW50IiwgImQiOiAiVGhlIHJlc3BvbnNlIGZpdHMgdGhlIHB1cnBvc2UgYW5kIGF1ZGllbmNlLCBrZWVwcyB0aGUgMTUwXHUyMDEzMjAwIHdvcmQgbGVuZ3RoLCBhbmQgcmVhZHMgbGlrZSBhIHJlYWwgZW1haWwgLyBzdXJ2ZXkgYW5zd2VyLiJ9XSwgInNjb3JpbmdOb3RlIjogIkNFTFBJUCBXcml0aW5nIGlzIHJhdGVkIGJ5IGh1bWFuIHJhdGVycyBvbiBhIHNjYWxlIGZyb20gTSB0byAxMiB0aGF0IG1hcHMgMToxIHRvIHRoZSBDYW5hZGlhbiBMYW5ndWFnZSBCZW5jaG1hcmtzIChDTEIpLiBFYWNoIHRhc2sgaXMganVkZ2VkIGhvbGlzdGljYWxseSBvbiBmb3VyIGRpbWVuc2lvbnMgXHUyMDE0IENvbnRlbnQvQ29oZXJlbmNlLCBWb2NhYnVsYXJ5LCBSZWFkYWJpbGl0eSBhbmQgVGFzayBGdWxmaWxsbWVudC4gVGhlcmUgaXMgbm8gc2luZ2xlICdjb3JyZWN0JyBhbnN3ZXIsIHNvIHVzZSB0aGUgc2FtcGxlIHJlc3BvbnNlcyBhbmQgdGhlIHNlbGYtY2hlY2sgYmVsb3cgdG8gc2VlIHdoZXJlIHlvdXIgd3JpdGluZyBzaXRzIGFuZCB3aGF0IHRvIGltcHJvdmUuIn07CihmdW5jdGlvbigpewogICJ1c2Ugc3RyaWN0IjsKICBpZih3aW5kb3cuX19jbHB3SW5pdCkgcmV0dXJuOyB3aW5kb3cuX19jbHB3SW5pdCA9IHRydWU7CgogIHZhciBMUyA9ICJhZTR1X2NscHdfczF0MV92MSI7CiAgdmFyIHN0YXRlID0geyBhY3RpdmU6MSwgc2FtcGxlczp7MTpmYWxzZSwyOmZhbHNlfSwgdGFiOnsxOjAsMjowfSwgb3B0Om51bGwsCiAgICAgICAgICAgICAgICB0ZXh0OnsxOiIiLDI6IiJ9LCBydWJyaWM6ezE6e30sMjp7fX0sCiAgICAgICAgICAgICAgICB0aW1lcjp7MTp7cmVtOldEQVRBLnRhc2tzWzBdLm1pbnV0ZXMqNjAscnVuOmZhbHNlLGl2Om51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAyOntyZW06V0RBVEEudGFza3NbMV0ubWludXRlcyo2MCxydW46ZmFsc2UsaXY6bnVsbH19IH07CgogIC8vIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gZXNjKHMpeyByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKTsgfQogIGZ1bmN0aW9uIHdjKHMpeyB2YXIgbT0oc3x8IiIpLnRyaW0oKS5tYXRjaCgvXFMrL2cpOyByZXR1cm4gbT9tLmxlbmd0aDowOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHNlYz1NYXRoLm1heCgwLHNlY3wwKTsgdmFyIG09TWF0aC5mbG9vcihzZWMvNjApLCBzPXNlYyU2MDsgcmV0dXJuIChtPDEwPyIwIjoiIikrbSsiOiIrKHM8MTA\/IjAiOiIiKStzOyB9CiAgZnVuY3Rpb24gbG9hZCgpeyB0cnl7IHZhciBvPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTFMpKTsgaWYobyYmdHlwZW9mIG89PT0ib2JqZWN0Iil7CiAgICAgICAgc3RhdGUudGV4dFsxXT1vLnQxfHwiIjsgc3RhdGUudGV4dFsyXT1vLnQyfHwiIjsgc3RhdGUub3B0PW8ub3B0fHxudWxsOwogICAgICAgIHN0YXRlLnJ1YnJpY1sxXT1vLnIxfHx7fTsgc3RhdGUucnVicmljWzJdPW8ucjJ8fHt9OyB9IH1jYXRjaChlKXt9IH0KICBmdW5jdGlvbiBzYXZlKCl7IHRyeXsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTFMsIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICB0MTpzdGF0ZS50ZXh0WzFdLCB0MjpzdGF0ZS50ZXh0WzJdLCBvcHQ6c3RhdGUub3B0LCByMTpzdGF0ZS5ydWJyaWNbMV0sIHIyOnN0YXRlLnJ1YnJpY1syXSB9KSk7IH1jYXRjaChlKXt9CiAgICAgICAgZmxhc2hTYXZlZCgpOyB9CiAgdmFyIHNhdmVkVE89bnVsbDsKICBmdW5jdGlvbiBmbGFzaFNhdmVkKCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1NhdmVkIik7IGlmKCFlbCkgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoImNscHctc2F2ZWQtb24iKTsgaWYoc2F2ZWRUTykgY2xlYXJUaW1lb3V0KHNhdmVkVE8pOwogICAgICAgIHNhdmVkVE89c2V0VGltZW91dChmdW5jdGlvbigpeyBlbC5jbGFzc0xpc3QucmVtb3ZlKCJjbHB3LXNhdmVkLW9uIik7IH0sMTIwMCk7IH0KCiAgLy8gLS0tLS0tLS0tLSBDU1MgLS0tLS0tLS0tLQogIHZhciBDU1MgPSAiIgogICsiLmNscHctd3JhcHstLW5hdnk6IzA1MEUyMDstLWI5MDA6IzBEMjM1MjstLWI3MDA6IzEyNDVBODstLWI1MDA6IzI1NjNFQjstLWI0MDA6IzNCODJGNjstLWIyMDA6IzkzQzVGRDstLWIxMDA6I0RCRUFGRTstLWI1MDojRUZGNkZGOy0tdGVhbDojMEQ5NDg4Oy0tZ3JlZW46IzEwQjk4MTstLWdyZWVuNTA6I0VDRkRGNTstLXJvc2U6I0Y0M0Y1RTstLXJvc2U1MDojRkZGMUYzOy0tb3JhbmdlOiNGOTczMTY7LS1hbWJlcjUwOiNGRkZCRUI7LS10ZXh0OiMwRjE3MkE7LS1tdXRlZDojNDc1NTY5Oy0tc3VidGxlOiM5NEEzQjg7LS1ib3JkZXI6I0UyRThGMDstLWNyaW1zb246I0I0MkIzQzstLXBhZ2U6I0Y4RkFGRjtmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjE2cHggMTZweCA1NnB4O2xpbmUtaGVpZ2h0OjEuNTU7Zm9udC1zaXplOjE2cHg7fSIKICArIi5jbHB3LXdyYXAgKiwuY2xwdy13cmFwICo6OmJlZm9yZSwuY2xwdy13cmFwICo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IgogICsiLmNscHctd3JhcCBidXR0b257Zm9udC1mYW1pbHk6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt9IgogICsiLmNscHctd3JhcCBoMSwuY2xwdy13cmFwIGgyLC5jbHB3LXdyYXAgaDMsLmNscHctd3JhcCBwe21hcmdpbjowO30iCiAgLy8gaGVybwogICsiLmNscHctaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6dmFyKC0tbmF2eSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjM0cHggMzhweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxM3B4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Ym94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTt9IgogICsiLmNscHctYXVyb3Jhe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt9IgogICsiLmNscHctYXVyb3JhIHNwYW57cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7ZmlsdGVyOmJsdXIoNjBweCk7b3BhY2l0eTouNTthbmltYXRpb246Y2xwd0Zsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7fSIKICArIi5jbHB3LWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXt3aWR0aDo0MjBweDtoZWlnaHQ6NDIwcHg7bGVmdDotMTIwcHg7dG9wOi0yMDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpO30iCiAgKyIuY2xwdy1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7d2lkdGg6MzgwcHg7aGVpZ2h0OjM4MHB4O3JpZ2h0Oi04MHB4O3RvcDotMTYwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTthbmltYXRpb24tZGVsYXk6LTRzO30iCiAgKyIuY2xwdy1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7d2lkdGg6MzQwcHg7aGVpZ2h0OjM0MHB4O3JpZ2h0OjIyJTtib3R0b206LTI0MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7YW5pbWF0aW9uLWRlbGF5Oi04czt9IgogICsiQGtleWZyYW1lcyBjbHB3RmxvYXR7ZnJvbXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpO310b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpO319IgogICsiLmNscHctaGJhZGdlc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30iCiAgKyIuY2xwdy1iYnJhbmR7YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTJweDtsZXR0ZXItc3BhY2luZzouMTJlbTtwYWRkaW5nOjVweCAxMnB4O2JvcmRlci1yYWRpdXM6NnB4O30iCiAgKyIuY2xwdy1ic2V0e2NvbG9yOnZhcigtLWIyMDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDt9IgogICsiLmNscHctaGVybyBoMXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTtsaW5lLWhlaWdodDoxLjEyO30iCiAgKyIuY2xwdy1oZXJvLXN1Yntwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjojQzdEMkU4O2ZvbnQtc2l6ZToxNXB4O21heC13aWR0aDo2MGNoO30iCiAgKyIuY2xwdy1oY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fSIKICArIi5jbHB3LWNoaXB7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7Y29sb3I6I0RCRUFGRTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjMycHg7YmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsYmFja2dyb3VuZCAuMjVzIGVhc2U7fSIKICArIi5jbHB3LWNoaXA6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7fSIKICArIi5jbHB3LWN0YXtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjEzcHggMzRweDttYXJnaW4tdG9wOjJweDtib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsYm94LXNoYWRvdyAuMjJzIGVhc2UsYmFja2dyb3VuZCAuMjJzIGVhc2U7fSIKICArIi5jbHB3LWN0YTpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtiYWNrZ3JvdW5kOnZhcigtLWI0MDApO2JveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpO30iCiAgLy8gdG9vbGJhcgogICsiLmNscHctdG9vbHN7cG9zaXRpb246c3RpY2t5O3RvcDo4cHg7ei1pbmRleDo2MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTMpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjhweCAxMnB4O21hcmdpbjoxOHB4IDAgMDtib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTttaW4taGVpZ2h0OjUycHg7fSIKICArIi5jbHB3LXdjb3VudHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tYjkwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6N3B4IDE0cHg7fSIKICArIi5jbHB3LXNwYWNlcntmbGV4OjE7fSIKICArIi5jbHB3LXNhdmVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZTt9IgogICsiLmNscHctc2F2ZWQtb257b3BhY2l0eToxO30iCiAgKyIuY2xwdy10YnRue2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzo5cHggMTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTttaW4taGVpZ2h0OjQwcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsYm94LXNoYWRvdyAuMnMgZWFzZSxiYWNrZ3JvdW5kIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10YnRuOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO2JveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpO30iCiAgLy8gZG90cwogICsiLmNscHctc2lte21hcmdpbi10b3A6MThweDt9IgogICsiLmNscHctZG90c3tkaXNwbGF5OmZsZXg7Z2FwOjZweDttYXJnaW46MCAwIDEwcHggMnB4O30iCiAgKyIuY2xwdy1kb3R7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1zdWJ0bGUpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItcmFkaXVzOjMycHg7cGFkZGluZzo1cHggMTRweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLGNvbG9yIC4yNXMgZWFzZTt9IgogICsiLmNscHctZG90Lm9ue2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7fSIKICArIi5jbHB3LWRvdC5maWxsZWR7YmFja2dyb3VuZDp2YXIoLS1iMTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICAvLyBjYXQgY2FyZAogICsiLmNscHctY2F0e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI0QzRDlFMDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmZmO2JveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO30iCiAgKyIuY2xwdy10YXNre2Rpc3BsYXk6bm9uZTt9IgogICsiLmNscHctdGFzay5vbntkaXNwbGF5OmJsb2NrO30iCiAgKyIuY2xwdy1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtiYWNrZ3JvdW5kOiNFOEVCRUY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0QzRDlFMDtib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7cGFkZGluZzo5cHggMTRweDttaW4taGVpZ2h0OjQ0cHg7fSIKICArIi5jbHB3LWJhci10e2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUYyOTM3O2ZsZXg6MTttaW4td2lkdGg6MDt9IgogICsiLmNscHctYmFyLXRpbWV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzFGMjkzNzt3aGl0ZS1zcGFjZTpub3dyYXA7fSIKICArIi5jbHB3LWJhci10aW1lIGJ7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczt9IgogICsiLmNscHctYmFyLXRpbWUubG93IGJ7Y29sb3I6dmFyKC0tcm9zZSk7fSIKICAvLyBzcGxpdAogICsiLmNscHctc3BsaXR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMjIwcHgsMjkwcHgpIDFmcjt9IgogICsiLmNscHctcmVhZHtiYWNrZ3JvdW5kOiNGNEY2Rjg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRTNFNkVBO3BhZGRpbmc6MTZweCAxNnB4IDE4cHg7fSIKICArIi5jbHB3LXdyaXRle2JhY2tncm91bmQ6I0VBRjRGNztwYWRkaW5nOjE2cHggMThweCAxOHB4O30iCiAgKyIuY2xwdy1yaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4O30iCiAgKyIuY2xwdy1pbmZve2ZsZXg6bm9uZTt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjExcHg7Zm9udC1zdHlsZTppdGFsaWM7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO30iCiAgKyIuY2xwdy1yaGVhZCBwe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctc2NlbmFyaW8taHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo4MDA7Y29sb3I6IzMzNDE1NTttYXJnaW4tYm90dG9tOjRweDt9IgogICsiLmNscHctc2NlbmFyaW97Zm9udC1zaXplOjEzLjVweDtjb2xvcjojMzM0MTU1O2xpbmUtaGVpZ2h0OjEuNjt9IgogICsiLmNscHctc2FtdG9nZ2xle21hcmdpbi10b3A6MTRweDt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MS41cHggc29saWQgdmFyKC0tY3JpbXNvbik7Y29sb3I6dmFyKC0tY3JpbXNvbik7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMXB4IDEycHg7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLGNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy1zYW10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtjb2xvcjojZmZmO30iCiAgKyIuY2xwdy1wcm9tcHRyb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweDt9IgogICsiLmNscHctcHJvbXB0cm93IHB7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1idWxsZXRze21hcmdpbjowIDAgMTJweCAwO3BhZGRpbmctbGVmdDoyMHB4O2NvbG9yOiMzMzQxNTU7Zm9udC1zaXplOjEzLjVweDt9IgogICsiLmNscHctYnVsbGV0cyBsaXttYXJnaW46M3B4IDA7fSIKICArIi5jbHB3LW9wdHN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21hcmdpbjowIDAgMTJweDt9IgogICsiLmNscHctb3B0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo5cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0Q2RThFRDtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjEwcHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTMuNXB4O2NvbG9yOiMzMzQxNTU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGVhc2UsYmFja2dyb3VuZCAuMnMgZWFzZTt9IgogICsiLmNscHctb3B0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9IgogICsiLmNscHctb3B0LnNlbHtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO30iCiAgKyIuY2xwdy1vcHQgaW5wdXR7bWFyZ2luLXRvcDozcHg7YWNjZW50LWNvbG9yOnZhcigtLWI1MDApO2ZsZXg6bm9uZTt9IgogICsiLmNscHctdGF7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI2MHB4O3Jlc2l6ZTp2ZXJ0aWNhbDtib3JkZXI6MXB4IHNvbGlkICNDOUQ2RGM7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxM3B4IDE0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojMEYxNzJBO2JhY2tncm91bmQ6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDE1LDIzLDQyLC4wNSk7fSIKICArIi5jbHB3LXRhOmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSg1OSwxMzAsMjQ2LC4xNSk7fSIKICArIi5jbHB3LXdtZXRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6OXB4O30iCiAgKyIuY2xwdy13cGlsbHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7fSIKICArIi5jbHB3LXdwaWxsLmxvd3tjb2xvcjp2YXIoLS1tdXRlZCk7fSIKICArIi5jbHB3LXdwaWxsLmdvb2R7Y29sb3I6IzA0Nzg1NztiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApO2JvcmRlci1jb2xvcjojQTdGM0QwO30iCiAgKyIuY2xwdy13cGlsbC5vdmVye2NvbG9yOiNCNDUzMDk7YmFja2dyb3VuZDp2YXIoLS1hbWJlcjUwKTtib3JkZXItY29sb3I6I0ZERTY4QTt9IgogICsiLmNscHctd3BpbGwubWF4e2NvbG9yOiNCRTEyM0M7YmFja2dyb3VuZDp2YXIoLS1yb3NlNTApO2JvcmRlci1jb2xvcjojRkVDREQzO30iCiAgKyIuY2xwdy10bXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbi1sZWZ0OmF1dG87fSIKICArIi5jbHB3LXRtci1idG57Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo3cHggMTJweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsY29sb3IgLjJzIGVhc2UsYm9yZGVyLWNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10bXItYnRuOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTtjb2xvcjp2YXIoLS1iNzAwKTt9IgogICsiLmNscHctdG1yLWJ0bi5ydW57YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjt9IgogIC8vIHNhbXBsZSBwYW5lbAogICsiLmNscHctc2FtcGxlc3ttYXJnaW4tdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNEM0Q5RTA7cGFkZGluZzoxNnB4IDE4cHggMjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O30iCiAgKyIuY2xwdy1zYW1wbGVzW2hpZGRlbl17ZGlzcGxheTpub25lO30iCiAgKyIuY2xwdy1zYW1ub3Rle2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTJweDt9IgogICsiLmNscHctdGFic3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEycHg7fSIKICArIi5jbHB3LXRhYntib3JkZXI6MXB4IHNvbGlkICNEOURFRTU7YmFja2dyb3VuZDojRjFGM0Y2O2NvbG9yOiM0NzU1Njk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OXB4IDE2cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLGNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10YWIub257YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtib3JkZXItY29sb3I6dmFyKC0tY3JpbXNvbik7Y29sb3I6I2ZmZjt9IgogICsiLmNscHctc2FtYm9keXtiYWNrZ3JvdW5kOiNGN0Y4RkE7Ym9yZGVyOjFweCBzb2xpZCAjRTdFQUVFO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMThweDt9IgogICsiLmNscHctc2FtbHZse2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6dmFyKC0tY3JpbXNvbik7bWFyZ2luLWJvdHRvbTo4cHg7fSIKICArIi5jbHB3LXNhbXRleHR7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzFGMjkzNztsaW5lLWhlaWdodDoxLjc7d2hpdGUtc3BhY2U6cHJlLXdyYXA7fSIKICArIi5jbHB3LXNhbWhpbnR7bWFyZ2luLXRvcDoxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzQ3NTU2OTtiYWNrZ3JvdW5kOiNFRUYyRkY7Ym9yZGVyOjFweCBzb2xpZCAjREJFM0ZGO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OXB4IDEycHg7fSIKICArIi5jbHB3LXNhbWhpbnQgYntjb2xvcjp2YXIoLS1iOTAwKTt9IgogIC8vIHJ1YnJpYyAvIHNjb3JpbmcKICArIi5jbHB3LXBhbmVse21hcmdpbi10b3A6MThweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjIwcHggMjJweDtib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjIpO30iCiAgKyIuY2xwdy1wYW5lbCBoMntmb250LXNpemU6MTlweDtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjkwMCk7bWFyZ2luLWJvdHRvbTo0cHg7fSIKICArIi5jbHB3LXBhbmVsIC5jbHB3LWxlYWR7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNHB4O30iCiAgKyIuY2xwdy1ydWJncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTBweDt9IgogICsiLmNscHctcnVie2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjExcHg7cGFkZGluZzoxMnB4IDE0cHg7YmFja2dyb3VuZDojRkNGREZGO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBlYXNlLGJhY2tncm91bmQgLjJzIGVhc2U7fSIKICArIi5jbHB3LXJ1Yjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fSIKICArIi5jbHB3LXJ1Yi5kb25le2JvcmRlci1jb2xvcjojQTdGM0QwO2JhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7fSIKICArIi5jbHB3LXJ1YiBpbnB1dHttYXJnaW4tdG9wOjNweDthY2NlbnQtY29sb3I6dmFyKC0tZ3JlZW4pO2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O30iCiAgKyIuY2xwdy1ydWIta3tmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctcnViLWR7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi10b3A6MnB4O30iCiAgKyIuY2xwdy1zY29yZWJveHttYXJnaW4tdG9wOjE0cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzMzNDE1NTtsaW5lLWhlaWdodDoxLjY7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTRweCAxNnB4O30iCiAgKyIuY2xwdy1zY29yZWJveCBie2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1jbGJyb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxMnB4O30iCiAgKyIuY2xwdy1jbGJ0YWd7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI3MDApO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MzJweDtwYWRkaW5nOjZweCAxM3B4O30iCiAgKyIuY2xwdy1mb290e21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWJ0bGUpO3RleHQtYWxpZ246Y2VudGVyO30iCiAgKyJAbWVkaWEobWF4LXdpZHRoOjgyMHB4KXsuY2xwdy1zcGxpdHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uY2xwdy1yZWFke2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFM0U2RUE7fS5jbHB3LXJ1YmdyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9LmNscHctaGVyb3twYWRkaW5nOjI2cHggMjJweDt9fSIKICA7CgogIGZ1bmN0aW9uIGluamVjdENTUygpeyBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1N0eWxlIikpIHJldHVybjsKICAgIHZhciBzdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC5pZD0iY2xwd1N0eWxlIjsgc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoQ1NTKSk7CiAgICAoZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChzdCk7IH0KCiAgLy8gLS0tLS0tLS0tLSBidWlsZCAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gdGFza0hUTUwodCl7CiAgICB2YXIgZD1XREFUQS50YXNrc1t0LTFdOyB2YXIgaD0iIjsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXRhc2snKyh0PT09c3RhdGUuYWN0aXZlPycgb24nOicnKSsnIiBkYXRhLXRhc2s9IicrdCsnIiBpZD0iY2xwd1Rhc2snK3QrJyI+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1iYXIiPjxzcGFuIGNsYXNzPSJjbHB3LWJhci10Ij4nK2VzYyhkLmJhclRpdGxlKSsnPC9zcGFuPicKICAgICAgICsnPHNwYW4gY2xhc3M9ImNscHctYmFyLXRpbWUiIGlkPSJjbHB3QmFyVGltZScrdCsnIj5UaW1lIHJlbWFpbmluZzogPGI+JytmbXQoc3RhdGUudGltZXJbdF0ucmVtKSsnPC9iPjwvc3Bhbj4nCiAgICAgICArJzxidXR0b24gY2xhc3M9ImNscHctdG1yLWJ0biIgZGF0YS10bmV4dD0iJyt0KyciPicrKHQ8V0RBVEEudGFza3MubGVuZ3RoPydORVhUJzonRE9ORScpKyc8L2J1dHRvbj48L2Rpdj4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LXNwbGl0Ij4nOwogICAgLy8gbGVmdAogICAgaCs9ICAnPGRpdiBjbGFzcz0iY2xwdy1yZWFkIj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctcmhlYWQiPjxzcGFuIGNsYXNzPSJjbHB3LWluZm8iPmk8L3NwYW4+PHA+Jytlc2MoZC5yZWFkSGVhZCkrJzwvcD48L2Rpdj4nOwogICAgaWYoZC5zY2VuYXJpb0hlYWQpeyBoKz0nPGRpdiBjbGFzcz0iY2xwdy1zY2VuYXJpby1oIj4nK2VzYyhkLnNjZW5hcmlvSGVhZCkrJzwvZGl2Pic7IH0KICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXNjZW5hcmlvIj4nK2VzYyhkLnNjZW5hcmlvKSsnPC9kaXY+JzsKICAgIGgrPSAgICc8YnV0dG9uIGNsYXNzPSJjbHB3LXNhbXRvZ2dsZSIgZGF0YS1zYW10b2dnbGU9IicrdCsnIj5DbGljayBoZXJlIHRvIHZpZXcgc2FtcGxlIHJlc3BvbnNlczwvYnV0dG9uPic7CiAgICBoKz0gICc8L2Rpdj4nOwogICAgLy8gcmlnaHQKICAgIGgrPSAgJzxkaXYgY2xhc3M9ImNscHctd3JpdGUiPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1wcm9tcHRyb3ciPjxzcGFuIGNsYXNzPSJjbHB3LWluZm8iPmk8L3NwYW4+PHA+Jytlc2MoZC5wcm9tcHRIZWFkKSsnPC9wPjwvZGl2Pic7CiAgICBpZihkLmJ1bGxldHMgJiYgZC5idWxsZXRzLmxlbmd0aCl7IGgrPSc8dWwgY2xhc3M9ImNscHctYnVsbGV0cyI+JzsgZC5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IGgrPSc8bGk+Jytlc2MoYikrJzwvbGk+JzsgfSk7IGgrPSc8L3VsPic7IH0KICAgIGlmKGQub3B0aW9ucyl7IGgrPSc8ZGl2IGNsYXNzPSJjbHB3LW9wdHMiPic7IGQub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8bGFiZWwgY2xhc3M9ImNscHctb3B0Jysoc3RhdGUub3B0PT09by5rZXk\/JyBzZWwnOicnKSsnIiBkYXRhLW9wdHdyYXA9Iicrby5rZXkrJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjbHB3T3B0IiB2YWx1ZT0iJytvLmtleSsnIicrKHN0YXRlLm9wdD09PW8ua2V5PycgY2hlY2tlZCc6JycpKyc+PHNwYW4+Jytlc2Moby5sYWJlbCkrJzwvc3Bhbj48L2xhYmVsPic7IH0pOwogICAgICAgIGgrPSc8L2Rpdj4nOyB9CiAgICBoKz0gICAnPHRleHRhcmVhIGNsYXNzPSJjbHB3LXRhIiBpZD0iY2xwd1RhJyt0KyciIGRhdGEtdGE9IicrdCsnIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIHJlc3BvbnNlIGhlcmUuLi4iPicrZXNjKHN0YXRlLnRleHRbdF0pKyc8L3RleHRhcmVhPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy13bWV0ZXIiPic7CiAgICBoKz0gICAgICc8c3BhbiBjbGFzcz0iY2xwdy13cGlsbCIgaWQ9ImNscHdXcGlsbCcrdCsnIj4wIHdvcmRzPC9zcGFuPic7CiAgICBoKz0gICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjVweDtjb2xvcjojNjQ3NDhCOyI+YWltICcrZXNjKGQud29yZEFpbSkrJzwvc3Bhbj4nOwogICAgaCs9ICAgICAnPHNwYW4gY2xhc3M9ImNscHctdG1yIj4nCiAgICAgICAgICAgICArJzxidXR0b24gY2xhc3M9ImNscHctdG1yLWJ0biIgZGF0YS10c3RhcnQ9IicrdCsnIj5TdGFydCB0aW1lcjwvYnV0dG9uPicKICAgICAgICAgICAgICsnPGJ1dHRvbiBjbGFzcz0iY2xwdy10bXItYnRuIiBkYXRhLXRyZXNldD0iJyt0KyciPlJlc2V0PC9idXR0b24+PC9zcGFuPic7CiAgICBoKz0gICAnPC9kaXY+JzsKICAgIGgrPSAgJzwvZGl2Pic7CiAgICBoKz0gJzwvZGl2Pic7IC8vIHNwbGl0CiAgICAvLyBzYW1wbGVzCiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctc2FtcGxlcyIgaWQ9ImNscHdTYW0nK3QrJyIgaGlkZGVuPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1zYW1ub3RlIj4nKyhkLnNhbU5vdGU\/ZC5zYW1Ob3RlOidUaGVzZSBhcmUgdGhlIG9mZmljaWFsIHByYWN0aWNlIHNhbXBsZSByZXNwb25zZXMgYXQgdGhyZWUgc2NvcmUgbGV2ZWxzLiBMb3dlci1sZXZlbCBzYW1wbGVzIGtlZXAgdGhlaXIgb3JpZ2luYWwgbWlzdGFrZXMgb24gcHVycG9zZSAmbWRhc2g7IHN0dWR5IHdoYXQgY2hhbmdlcyBhcyB0aGUgc2NvcmUgcmlzZXMuJykrJzwvZGl2Pic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy10YWJzIiBpZD0iY2xwd1RhYnMnK3QrJyI+JzsKICAgIGQuc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKHMsaSl7IGgrPSc8YnV0dG9uIGNsYXNzPSJjbHB3LXRhYicrKGk9PT0wPycgb24nOicnKSsnIiBkYXRhLXRhYj0iJyt0KyciIGRhdGEtaT0iJytpKyciPicrZXNjKHMubGV2ZWwpKyc8L2J1dHRvbj4nOyB9KTsKICAgIGgrPSAgICc8L2Rpdj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctc2FtYm9keSIgaWQ9ImNscHdTYW1Cb2R5Jyt0KyciPjwvZGl2Pic7CiAgICBoKz0gJzwvZGl2Pic7CiAgICBoKz0nPC9kaXY+JzsKICAgIHJldHVybiBoOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgcm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0FwcCIpOyBpZighcm9vdCkgcmV0dXJuOwogICAgdmFyIG09V0RBVEEubWV0YSwgaD0iIjsKICAgIC8vIGhlcm8KICAgIGgrPSc8c2VjdGlvbiBjbGFzcz0iY2xwdy1oZXJvIj48ZGl2IGNsYXNzPSJjbHB3LWF1cm9yYSI+PHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1oYmFkZ2VzIj48c3BhbiBjbGFzcz0iY2xwdy1iYnJhbmQiPicrZXNjKG0uYnJhbmQpKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctYnNldCI+Jytlc2MobS5zZXQpKyc8L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGgxPicrZXNjKG0udGl0bGUpKyc8L2gxPic7CiAgICBoKz0gJzxwIGNsYXNzPSJjbHB3LWhlcm8tc3ViIj5Xcml0ZSB5b3VyIHJlc3BvbnNlLCB0aW1lIHlvdXJzZWxmLCB0aGVuIGNvbXBhcmUgaXQgd2l0aCBvZmZpY2lhbCBzYW1wbGUgYW5zd2VycyBhdCB0aHJlZSBzY29yZSBsZXZlbHMgJm1kYXNoOyBDRUxQSVAgNCZuZGFzaDs1LCA3Jm5kYXNoOzggYW5kIDEwJm5kYXNoOzEyLjwvcD4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LWhjaGlwcyI+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+MiB0YXNrczwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj5+JyttLnRvdGFsTWluKycgbWludXRlczwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj4xNTAmbmRhc2g7MjAwIHdvcmRzIGVhY2g8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+U2FtcGxlIGFuc3dlcnMgaW5jbHVkZWQ8L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGJ1dHRvbiBjbGFzcz0iY2xwdy1jdGEiIGlkPSJjbHB3U3RhcnQiPlN0YXJ0IHdyaXRpbmc8L2J1dHRvbj4nOwogICAgaCs9Jzwvc2VjdGlvbj4nOwogICAgLy8gdG9vbGJhcgogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctdG9vbHMiPjxzcGFuIGNsYXNzPSJjbHB3LXdjb3VudCIgaWQ9ImNscHdUb3RXb3JkcyI+V29yZHMgJm1kYXNoOyBUYXNrIDE6IDAgJm1pZGRvdDsgVGFzayAyOiAwPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXNhdmVkIiBpZD0iY2xwd1NhdmVkIj5EcmFmdCBzYXZlZCAmIzEwMDAzOzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1zcGFjZXIiPjwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjbHB3LXRidG4iIGlkPSJjbHB3UmVzZXRBbGwiPlJlc2V0IGFsbDwvYnV0dG9uPjwvZGl2Pic7CiAgICAvLyBzaW0KICAgIGgrPSc8c2VjdGlvbiBjbGFzcz0iY2xwdy1zaW0iPjxkaXYgY2xhc3M9ImNscHctZG90cyIgaWQ9ImNscHdEb3RzIj4nOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgaCs9JzxidXR0b24gY2xhc3M9ImNscHctZG90IiBkYXRhLWRvdD0iJytkLmlkKyciPlRhc2sgJytkLmlkKycgJm1pZGRvdDsgJytlc2MoZC5uYW1lKSsnPC9idXR0b24+JzsgfSk7CiAgICBoKz0nPC9kaXY+PGRpdiBjbGFzcz0iY2xwdy1jYXQiIGlkPSJjbHB3Q2F0Ij4nOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgaCs9dGFza0hUTUwoZC5pZCk7IH0pOwogICAgaCs9JzwvZGl2Pjwvc2VjdGlvbj4nOwogICAgLy8gcnVicmljIHBhbmVsCiAgICBoKz0nPHNlY3Rpb24gY2xhc3M9ImNscHctcGFuZWwiPjxoMj5TY29yZSB5b3VyIG93biB3cml0aW5nPC9oMj48cCBjbGFzcz0iY2xwdy1sZWFkIj5UaGVyZSBpcyBubyBhbnN3ZXIga2V5IGZvciBXcml0aW5nLiBSYXRlIGVhY2ggcmVzcG9uc2UgYWdhaW5zdCB0aGUgZm91ciBvZmZpY2lhbCBDRUxQSVAgZGltZW5zaW9ucy48L3A+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXJ1YmdyaWQiIGlkPSJjbHB3UnViR3JpZCI+PC9kaXY+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXNjb3JlYm94Ij4nK2VzYyhXREFUQS5zY29yaW5nTm90ZSkrJzxkaXYgY2xhc3M9ImNscHctY2xicm93Ij48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPk08L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2xidGFnIj5DTEIgNCZuZGFzaDs1ICZyYXJyOyBkZXZlbG9waW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNsYnRhZyI+Q0xCIDcmbmRhc2g7OCAmcmFycjsgYWRlcXVhdGUmbmRhc2g7Z29vZDwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPkNMQiA5Jm5kYXNoOzEyICZyYXJyOyBzdHJvbmc8L3NwYW4+PC9kaXY+PC9kaXY+JzsKICAgIGgrPSc8L3NlY3Rpb24+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LWZvb3QiPkFsbEVuZ2xpc2g0VSAmbWlkZG90OyBDRUxQSVAgV3JpdGluZyBQcmFjdGljZSAmbWlkZG90OyBTZXQgMSAmbWlkZG90OyBUZXN0IDI8L2Rpdj4nOwogICAgcm9vdC5pbm5lckhUTUw9aDsKICAgIGJ1aWxkUnVicmljKCk7CiAgICBXREFUQS50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKGQpeyByZW5kZXJTYW1wbGUoZC5pZCk7IHVwZGF0ZVdDKGQuaWQpOyB9KTsKICAgIHdpcmVFdmVudHMoKTsKICAgIHJlZnJlc2hEb3RzKCk7CiAgICB1cGRhdGVUb3RhbHMoKTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkUnVicmljKCl7CiAgICB2YXIgZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1J1YkdyaWQiKTsgaWYoIWcpIHJldHVybjsgdmFyIGg9IiI7CiAgICBXREFUQS5ydWJyaWMuZm9yRWFjaChmdW5jdGlvbihyLGkpewogICAgICB2YXIgb24gPSBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXSAmJiBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXVtpXTsKICAgICAgaCs9JzxsYWJlbCBjbGFzcz0iY2xwdy1ydWInKyhvbj8nIGRvbmUnOicnKSsnIiBkYXRhLXJ1YndyYXA9IicraSsnIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtcnViPSInK2krJyInKyhvbj8nIGNoZWNrZWQnOicnKSsnPjxzcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXJ1Yi1rIj4nK2VzYyhyLmspKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctcnViLWQiPicrZXNjKHIuZCkrJzwvc3Bhbj48L3NwYW4+PC9sYWJlbD4nOwogICAgfSk7CiAgICBnLmlubmVySFRNTD1oOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyU2FtcGxlKHQpewogICAgdmFyIGQ9V0RBVEEudGFza3NbdC0xXSwgaT1zdGF0ZS50YWJbdF0sIHM9ZC5zYW1wbGVzW2ldOwogICAgdmFyIGJvZHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTYW1Cb2R5Iit0KTsgaWYoIWJvZHkpIHJldHVybjsKICAgIGJvZHkuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJjbHB3LXNhbWx2bCI+Jytlc2Mocy5sZXZlbCkrJzwvZGl2PjxkaXYgY2xhc3M9ImNscHctc2FtdGV4dCI+Jytlc2Mocy50ZXh0KSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9ImNscHctc2FtaGludCI+PGI+V2hhdCBzZXRzIHRoaXMgbGV2ZWwgYXBhcnQ6PC9iPiAnK2VzYyhzLm5vdGUpKyc8L2Rpdj4nOwogICAgdmFyIHRhYnM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdUYWJzIit0KTsgaWYodGFicyl7IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGFicy5jaGlsZHJlbixmdW5jdGlvbihiLGJpKXsgYi5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsYmk9PT1pKTsgfSk7IH0KICB9CgogIGZ1bmN0aW9uIHVwZGF0ZVdDKHQpewogICAgdmFyIG49d2Moc3RhdGUudGV4dFt0XSk7IHZhciBwaWxsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3V3BpbGwiK3QpOyBpZighcGlsbCkgcmV0dXJuOwogICAgcGlsbC50ZXh0Q29udGVudD1uKyhuPT09MT8iIHdvcmQiOiIgd29yZHMiKTsKICAgIHBpbGwuY2xhc3NOYW1lPSJjbHB3LXdwaWxsICIrKG48MTUwPyJsb3ciOihuPD0yMDA\/Imdvb2QiOihuPD0yNTA\/Im92ZXIiOiJtYXgiKSkpOwogICAgdXBkYXRlVG90YWxzKCk7CiAgfQogIGZ1bmN0aW9uIHVwZGF0ZVRvdGFscygpewogICAgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3VG90V29yZHMiKTsgaWYoZWwpIGVsLmlubmVySFRNTD0iV29yZHMgJm1kYXNoOyBUYXNrIDE6ICIrd2Moc3RhdGUudGV4dFsxXSkrIiAmbWlkZG90OyBUYXNrIDI6ICIrd2Moc3RhdGUudGV4dFsyXSk7CiAgfQoKICBmdW5jdGlvbiByZWZyZXNoRG90cygpewogICAgdmFyIGRvdHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdEb3RzIik7IGlmKCFkb3RzKSByZXR1cm47CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvdHMuY2hpbGRyZW4sZnVuY3Rpb24oYil7IHZhciBpZD0rYi5nZXRBdHRyaWJ1dGUoImRhdGEtZG90Iik7CiAgICAgIGIuY2xhc3NMaXN0LnRvZ2dsZSgib24iLGlkPT09c3RhdGUuYWN0aXZlKTsKICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCJmaWxsZWQiLCBpZCE9PXN0YXRlLmFjdGl2ZSAmJiB3YyhzdGF0ZS50ZXh0W2lkXSk+MCk7IH0pOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3VGFzayIrZC5pZCk7IGlmKGVsKSBlbC5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsZC5pZD09PXN0YXRlLmFjdGl2ZSk7IH0pOwogIH0KCiAgZnVuY3Rpb24gc3dpdGNoVGFzayh0KXsgc3RhdGUuYWN0aXZlPXQ7IHJlZnJlc2hEb3RzKCk7IGJ1aWxkUnVicmljKCk7CiAgICB2YXIgY2F0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3Q2F0Iik7IGlmKGNhdCYmY2F0LnNjcm9sbEludG9WaWV3KSBjYXQuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTsgfQoKICAvLyB0aW1lcnMKICBmdW5jdGlvbiB0aWNrKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgaWYoVC5yZW08PTApeyBzdG9wVGltZXIodCk7IHJldHVybjsgfSBULnJlbS0tOyBwYWludFRpbWUodCk7IGlmKFQucmVtPD0wKSBzdG9wVGltZXIodCk7IH0KICBmdW5jdGlvbiBwYWludFRpbWUodCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0JhclRpbWUiK3QpOyB2YXIgVD1zdGF0ZS50aW1lclt0XTsKICAgIGlmKGVsKXsgZWwuaW5uZXJIVE1MPSJUaW1lIHJlbWFpbmluZzogPGI+IitmbXQoVC5yZW0pKyI8L2I+IjsgZWwuY2xhc3NMaXN0LnRvZ2dsZSgibG93IixULnJlbTw9MTIwKTsgfQogICAgdmFyIGJ0bj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10c3RhcnQ9IicrdCsnIl0nKTsgaWYoYnRuKXsgYnRuLnRleHRDb250ZW50PVQucnVuPyJQYXVzZSB0aW1lciI6KFQucmVtPD0wPyJUaW1lIHVwIjoiU3RhcnQgdGltZXIiKTsgYnRuLmNsYXNzTGlzdC50b2dnbGUoInJ1biIsVC5ydW4pOyB9IH0KICBmdW5jdGlvbiBzdGFydFRpbWVyKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgaWYoVC5yZW08PTApIHJldHVybjsgVC5ydW49dHJ1ZTsgaWYoVC5pdikgY2xlYXJJbnRlcnZhbChULml2KTsgVC5pdj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RpY2sodCk7fSwxMDAwKTsgcGFpbnRUaW1lKHQpOyB9CiAgZnVuY3Rpb24gc3RvcFRpbWVyKHQpeyB2YXIgVD1zdGF0ZS50aW1lclt0XTsgVC5ydW49ZmFsc2U7IGlmKFQuaXYpeyBjbGVhckludGVydmFsKFQuaXYpOyBULml2PW51bGw7IH0gcGFpbnRUaW1lKHQpOyB9CiAgZnVuY3Rpb24gdG9nZ2xlVGltZXIodCl7IHN0YXRlLnRpbWVyW3RdLnJ1bj9zdG9wVGltZXIodCk6c3RhcnRUaW1lcih0KTsgfQogIGZ1bmN0aW9uIHJlc2V0VGltZXIodCl7IHN0b3BUaW1lcih0KTsgc3RhdGUudGltZXJbdF0ucmVtPVdEQVRBLnRhc2tzW3QtMV0ubWludXRlcyo2MDsgcGFpbnRUaW1lKHQpOyB9CgogIC8vIC0tLS0tLS0tLS0gZXZlbnRzIC0tLS0tLS0tLS0KICBmdW5jdGlvbiB3aXJlRXZlbnRzKCl7CiAgICB2YXIgcm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0FwcCIpOwogICAgdmFyIHN0YXJ0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3U3RhcnQiKTsKICAgIGlmKHN0YXJ0KSBzdGFydC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3dpdGNoVGFzaygxKTsgc3RhcnRUaW1lcigxKTsgfSk7CiAgICB2YXIgcmVzZXRBbGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdSZXNldEFsbCIpOwogICAgaWYocmVzZXRBbGwpIHJlc2V0QWxsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogICAgICBpZighY29uZmlybSgiQ2xlYXIgYm90aCBkcmFmdHMsIHNlbGVjdGVkIG9wdGlvbiBhbmQgdGltZXJzIG9uIHRoaXMgZGV2aWNlPyIpKSByZXR1cm47CiAgICAgIHN0YXRlLnRleHRbMV09IiI7c3RhdGUudGV4dFsyXT0iIjtzdGF0ZS5vcHQ9bnVsbDtzdGF0ZS5ydWJyaWM9ezE6e30sMjp7fX07CiAgICAgIHJlc2V0VGltZXIoMSk7cmVzZXRUaW1lcigyKTsgc2F2ZSgpOyByZW5kZXIoKTsgfSk7CgogICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7CiAgICAgIHZhciBlbD1lLnRhcmdldC5jbG9zZXN0KCJbZGF0YS1kb3RdLFtkYXRhLXNhbXRvZ2dsZV0sW2RhdGEtdGFiXSxbZGF0YS10c3RhcnRdLFtkYXRhLXRyZXNldF0sW2RhdGEtdG5leHRdIik7IGlmKCFlbCkgcmV0dXJuOwogICAgICBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtZG90IikpeyBzd2l0Y2hUYXNrKCtlbC5nZXRBdHRyaWJ1dGUoImRhdGEtZG90IikpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXNhbXRvZ2dsZSIpKXsgdmFyIHQ9K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS1zYW10b2dnbGUiKTsgdmFyIHA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTYW0iK3QpOwogICAgICAgIGlmKHApeyBwLmhpZGRlbj0hcC5oaWRkZW47IGVsLnRleHRDb250ZW50PXAuaGlkZGVuPyJDbGljayBoZXJlIHRvIHZpZXcgc2FtcGxlIHJlc3BvbnNlcyI6IkhpZGUgc2FtcGxlIHJlc3BvbnNlcyI7IGlmKCFwLmhpZGRlbikgcmVuZGVyU2FtcGxlKHQpOyB9IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtdGFiIikpeyB2YXIgdHQ9K2VsLmdldEF0dHJpYnV0ZSgiZGF0YS10YWIiKTsgc3RhdGUudGFiW3R0XT0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKTsgcmVuZGVyU2FtcGxlKHR0KTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10c3RhcnQiKSl7IHRvZ2dsZVRpbWVyKCtlbC5nZXRBdHRyaWJ1dGUoImRhdGEtdHN0YXJ0IikpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXRyZXNldCIpKXsgcmVzZXRUaW1lcigrZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRyZXNldCIpKTsgfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10bmV4dCIpKXsgdmFyIGN1cj0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRuZXh0Iik7IGlmKGN1cjxXREFUQS50YXNrcy5sZW5ndGgpeyBzd2l0Y2hUYXNrKGN1cisxKTsgfSB9CiAgICB9KTsKCiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbihlKXsgdmFyIHRhPWUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXRhXSIpOyBpZighdGEpIHJldHVybjsKICAgICAgdmFyIHQ9K3RhLmdldEF0dHJpYnV0ZSgiZGF0YS10YSIpOyBzdGF0ZS50ZXh0W3RdPXRhLnZhbHVlOyB1cGRhdGVXQyh0KTsgcmVmcmVzaERvdHMoKTsgc2F2ZSgpOyB9KTsKCiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZnVuY3Rpb24oZSl7CiAgICAgIHZhciBvcHQ9ZS50YXJnZXQuY2xvc2VzdCgnaW5wdXRbbmFtZT0iY2xwd09wdCJdJyk7CiAgICAgIGlmKG9wdCl7IHN0YXRlLm9wdD1vcHQudmFsdWU7IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtb3B0d3JhcF0iKSxmdW5jdGlvbihsKXsgbC5jbGFzc0xpc3QudG9nZ2xlKCJzZWwiLGwuZ2V0QXR0cmlidXRlKCJkYXRhLW9wdHdyYXAiKT09PXN0YXRlLm9wdCk7IH0pOyBzYXZlKCk7IHJldHVybjsgfQogICAgICB2YXIgcnViPWUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJ1Yl0iKTsKICAgICAgaWYocnViKXsgdmFyIGk9K3J1Yi5nZXRBdHRyaWJ1dGUoImRhdGEtcnViIik7IGlmKCFzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXSkgc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV09e307IHN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdW2ldPXJ1Yi5jaGVja2VkOwogICAgICAgIHZhciB3cmFwPXJ1Yi5jbG9zZXN0KCJbZGF0YS1ydWJ3cmFwXSIpOyBpZih3cmFwKSB3cmFwLmNsYXNzTGlzdC50b2dnbGUoImRvbmUiLHJ1Yi5jaGVja2VkKTsgc2F2ZSgpOyB9CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGJvb3QoKXsgbG9hZCgpOyBpbmplY3RDU1MoKTsgcmVuZGVyKCk7IH0KICBpZihkb2N1bWVudC5yZWFkeVN0YXRlPT09ImxvYWRpbmciKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixib290KTsgZWxzZSBib290KCk7Cn0pKCk7Cg==\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Writing Set 1 Practice Test 2: Task 1 (email) and Task 2 (survey response) with timers and word counter, plus a self-assessment guide. 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-6241","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6241","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=6241"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6241\/revisions"}],"predecessor-version":[{"id":6585,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6241\/revisions\/6585"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}