{"id":6487,"date":"2026-07-11T12:15:00","date_gmt":"2026-07-11T12:15:00","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-13-test-1-speaking\/"},"modified":"2026-07-12T03:16:13","modified_gmt":"2026-07-12T03:16:13","slug":"celpip-set-13-test-1-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-13-test-1-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 13 \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(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0IjoxMywidGVzdCI6MSwidGl0bGUiOiJDRUxQSVAgU3BlYWtpbmcgXHUyMDE0IFNldCAxMyBcdTAwYjcgUHJhY3RpY2UgVGVzdCAxIiwiaGVhZGVyIjoiUHJhY3RpY2UgVGVzdCAxIiwiaW1ncyI6eyJzY2VuZSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zMTN0MS1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MxM3QxLW9wdC1hLmpwZyIsIm9wdEIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDEtb3B0LWIuanBnIiwib3B0T3RoZXIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDEtb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEzdDEtdW51c3VhbC5qcGcifSwib3RoZXJVcmwiOiIvY2VscGlwLXNldC0xMy10ZXN0LTItc3BlYWtpbmcvIiwidGFza3MiOlt7ImsiOiJ3IiwibnVtIjowLCJ0eXBlRW4iOiJTcGVha2luZyBQcmFjdGljZSBUYXNrIiwicHJlcCI6MzAsInJlYyI6NjAsIndhcm11cCI6dHJ1ZSwicHJvbXB0IjoiVGFsayBhYm91dCBvbmUgb2YgeW91ciBiZXN0IGZyaWVuZHMuIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhlIFByYWN0aWNlIFRhc2sgKHdhcm0tdXApIGlzIE5PVCBzY29yZWQgXHUyMDE0IGl0IGlzIGhlcmUgdG8gaGVscCB5b3UgZ2V0IHVzZWQgdG8gdGhlIGNvbnRyb2xzIGFuZCB3YXJtIHVwIHlvdXIgdm9pY2UuIiwiU3BlYWsgbmF0dXJhbGx5IGFib3V0IGEgYmVzdCBmcmllbmQ6IHRoZWlyIG5hbWUsIGhvdyB5b3UgbWV0LCB0aGVpciBwZXJzb25hbGl0eSwgYSBtZW1vcnkgeW91IHNoYXJlLiIsIlVzZSBpdCB0byBhZGp1c3QgeW91ciBwb3N0dXJlLCBtaWNyb3Bob25lIGRpc3RhbmNlLCBhbmQgc3BlYWtpbmcgcGFjZS4iXSwicGhyYXNlcyI6WyJNeSBiZXN0IGZyaWVuZCdzIG5hbWUgaXNcdTIwMjYiLCJXZSBtZXQgd2hlblx1MjAyNiIsIldoYXQgSSBsaWtlIG1vc3QgYWJvdXQgaGltL2hlciBpc1x1MjAyNiJdfSwiczYiOm51bGwsInM5IjpudWxsfSx7ImsiOiJ0MSIsIm51bSI6MSwidHlwZUVuIjoiR2l2aW5nIEFkdmljZSIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJZb3VyIGZyaWVuZCBzdGFydGVkIGEgbmV3IGpvYiBhbmQgaXMgYSB2ZXJ5IHNoeSBwZXJzb24uIFNoZSB3b3VsZCBsaWtlIHRvIGdldCB0byBrbm93IGhlciBjby13b3JrZXJzLiBBZHZpc2UgaGVyIGFib3V0IGRpZmZlcmVudCB3YXlzIHRvIG1ha2UgZnJpZW5kcyBhdCB3b3JrLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIk9wZW5pbmc6IGdyZWV0IHlvdXIgZnJpZW5kIGFuZCByZXN0YXRlIHRoZSBzaXR1YXRpb24gaW4gb25lIHNlbnRlbmNlLiIsIkJvZHk6IGdpdmUgMlx1MjAxMzMgcGllY2VzIG9mIGFkdmljZSwgZWFjaCB3aXRoIGEgcmVhc29uIG9yIGV4YW1wbGUgKEZpcnN0XHUyMDI2LCBiZWNhdXNlXHUyMDI2OyBBbm90aGVyIGlkZWEgaXNcdTIwMjYpLiIsIkNsb3Npbmc6IGVuY291cmFnZSB0aGVtIGFuZCB3aXNoIHRoZW0gbHVjay4iLCJBZHZpc2UgeW91ciBzaHkgZnJpZW5kIG9uIHNpbXBsZSwgbG93LXByZXNzdXJlIHdheXMgdG8gZ2V0IHRvIGtub3cgaGVyIG5ldyBjby13b3JrZXJzOiBzdGFydCBzbWFsbCB3aXRoIGEgc21pbGUgYW5kIGEgZnJpZW5kbHkgJ2dvb2QgbW9ybmluZyc7IHVzZSBjb2ZmZWUgYnJlYWtzLCBsdW5jaCBhbmQgdGhlIGxpZnQgZm9yIGVhc3kgc21hbGwgdGFsazsgYXNrIHBlb3BsZSBhYm91dCB0aGVtc2VsdmVzLCBzaW5jZSBtb3N0IGxvdmUgdG8gdGFsayBhYm91dCB0aGVpciBvd24gd29yayBhbmQgaG9iYmllczsgc2F5IHllcyB0byB0ZWFtIGx1bmNoZXMgYW5kIGFmdGVyLXdvcmsgaW52aXRhdGlvbnMgZXZlbiB3aGVuIHNoZSBmZWVscyBuZXJ2b3VzOyBhbmQgd2luIHBlb3BsZSBvdmVyIHdpdGggc21hbGwga2luZG5lc3NlcyBsaWtlIHNoYXJpbmcgc25hY2tzIG9yIGhlbHBpbmcgd2l0aCBhIHRhc2suIFJlbWluZCBoZXIgdGhhdCBmcmllbmRzaGlwcyBncm93IHNsb3dseSwgc28gc2hlIHNob3VsZCBiZSBwYXRpZW50IGFuZCBqdXN0IGJlIGhlcnNlbGYuIl0sInBocmFzZXMiOlsiSWYgSSB3ZXJlIHlvdSwgSSdkXHUyMDI2IiwiWW91IHNob3VsZCBkZWZpbml0ZWx5XHUyMDI2IiwiQW5vdGhlciBvcHRpb24gaXMgdG9cdTIwMjYiLCJUcnVzdCBtZSwgeW91IHdvbid0IHJlZ3JldCBpdC4iXX0sInM2IjoiSGkgQW5uYSwgY29uZ3JhdHVsYXRpb25zIG9uIHlvdXIgbmV3IGpvYiEgSSBrbm93IHlvdSBhcmUgc2h5LCBzbyBtYWtpbmcgZnJpZW5kcyBhdCB3b3JrIGZlZWxzIHNjYXJ5LCBidXQgZG8gbm90IHdvcnJ5LCBJIGhhdmUgc29tZSBlYXN5IHRpcHMgZm9yIHlvdS4gRmlyc3QsIHN0YXJ0IHNtYWxsLiBZb3UgZG8gbm90IG5lZWQgdG8gZ2l2ZSBhIGJpZyBzcGVlY2guIEp1c3Qgc21pbGUgYW5kIHNheSAnR29vZCBtb3JuaW5nJyB0byBwZW9wbGUgZXZlcnkgZGF5LiBBIHNtaWxlIGlzIHZlcnkgcG93ZXJmdWwuIFNlY29uZCwgdXNlIHRoZSBjb2ZmZWUgYW5kIGx1bmNoIGJyZWFrcy4gVGhpcyBpcyB0aGUgYmVzdCB0aW1lIHRvIHRhbGsuIFNpdCB3aXRoIHlvdXIgY28td29ya2VycywgYW5kIGFzayB0aGVtIHNpbXBsZSBxdWVzdGlvbnMsIGxpa2UgJ0hvdyB3YXMgeW91ciB3ZWVrZW5kPycgUGVvcGxlIGxvdmUgdG8gdGFsayBhYm91dCB0aGVtc2VsdmVzLCBzbyBqdXN0IGxpc3RlbiBhbmQgc2hvdyBpbnRlcmVzdC4gVGhpcmQsIHNheSB5ZXMgdG8gaW52aXRhdGlvbnMuIElmIHRoZXkgaW52aXRlIHlvdSBmb3IgbHVuY2ggb3IgZHJpbmtzIGFmdGVyIHdvcmssIGdvLCBldmVuIGlmIHlvdSBmZWVsIG5lcnZvdXMuIFRoaXMgaXMgaG93IHlvdSBiZWNvbWUgcGFydCBvZiB0aGUgZ3JvdXAuIEZvdXJ0aCwgYmUgaGVscGZ1bC4gSWYgeW91IHNlZSBzb21lb25lIGJ1c3ksIG9mZmVyIHRvIGhlbHAgdGhlbS4gU21hbGwga2luZCBhY3Rpb25zIG1ha2UgcGVvcGxlIGxpa2UgeW91LiBBbHNvLCB0cnkgdG8gbGVhcm4gcGVvcGxlJ3MgbmFtZXMgcXVpY2tseSBhbmQgdXNlIHRoZW0gd2hlbiB5b3Ugc2F5IGhlbGxvLCBiZWNhdXNlIGV2ZXJ5b25lIGxvdmVzIHRvIGhlYXIgdGhlaXIgb3duIG5hbWUuIEFuZCBsYXN0LCBiZSBwYXRpZW50LiBHb29kIGZyaWVuZHMgZG8gbm90IGhhcHBlbiBpbiBvbmUgZGF5LiBKdXN0IGJlIHlvdXJzZWxmLCByZWxheCwgYW5kIHNsb3dseSB5b3Ugd2lsbCBtYWtlIGZyaWVuZHMuIFlvdSBjYW4gZG8gaXQsIEFubmEhIEdvb2QgbHVjayEiLCJzOSI6IkFubmEsIGNvbmdyYXR1bGF0aW9ucyBvbiB0aGUgbmV3IGpvYiEgSSBrbm93IHRoYXQgd2Fsa2luZyBpbnRvIGEgbmV3IG9mZmljZSBpcyBpbnRpbWlkYXRpbmcgZm9yIHNvbWVvbmUgd2hvIGlzIG5hdHVyYWxseSBzaHksIHNvIGxldCBtZSBnaXZlIHlvdSBhIGZldyBwcmFjdGljYWwsIGxvdy1wcmVzc3VyZSB3YXlzIHRvIGdldCB0byBrbm93IHlvdXIgY28td29ya2Vycy4gRmlyc3QsIHN0YXJ0IHJpZGljdWxvdXNseSBzbWFsbC4gWW91IGRvIG5vdCBoYXZlIHRvIGJlIHRoZSBsaWZlIG9mIHRoZSBwYXJ0eTsgYSB3YXJtIHNtaWxlIGFuZCBhIGdlbnVpbmUgJ2dvb2QgbW9ybmluZycgZXZlcnkgZGF5IGFscmVhZHkgc2lnbmFscyB0aGF0IHlvdSBhcmUgZnJpZW5kbHkgYW5kIGFwcHJvYWNoYWJsZS4gU2Vjb25kLCBtYWtlIHRoZSBtb3N0IG9mIHRoZSBuYXR1cmFsIGdhdGhlcmluZyBwb2ludHMsIHRoZSBjb2ZmZWUgbWFjaGluZSwgdGhlIGx1bmNoIHJvb20sIHRoZSBsaWZ0LCBhbmQgdXNlIHRoZW0gZm9yIGEgbGl0dGxlIGxpZ2h0IHNtYWxsIHRhbGsuIFRoZSB0cmljayBpcyB0byBhc2sgcGVvcGxlIGFib3V0IHRoZW1zZWx2ZXM6IGhvdyB0aGVpciB3ZWVrZW5kIHdlbnQsIHdoYXQgdGhleSBhcmUgd29ya2luZyBvbiwgd2hldGhlciB0aGV5IGhhdmUgYW55IHRpcHMgZm9yIGEgbmV3Y29tZXIuIE1vc3QgcGVvcGxlIGxvdmUgdGFsa2luZyBhYm91dCB0aGVpciBvd24gbGl2ZXMsIHNvIHlvdSBiYXJlbHkgaGF2ZSB0byBzYXkgYW55dGhpbmcsIHlvdSBqdXN0IGxpc3RlbiBhbmQgcmVhY3QuIFRoaXJkLCBhbmQgdGhpcyBpcyB0aGUgYmlnIG9uZSwgc2F5IHllcyB0byBpbnZpdGF0aW9ucy4gV2hlbiBzb21lb25lIGFza3MgeW91IHRvIGpvaW4gdGhlbSBmb3IgbHVuY2ggb3IgZm9yIGRyaW5rcyBhZnRlciB3b3JrLCBmb3JjZSB5b3Vyc2VsZiB0byBnbyBldmVuIHRob3VnaCB5b3VyIGluc3RpbmN0IGlzIHRvIGRlY2xpbmUsIGJlY2F1c2UgdGhvc2UgaW5mb3JtYWwgbW9tZW50cyBhcmUgd2hlcmUgcmVhbCBmcmllbmRzaGlwcyBmb3JtLiBGb3VydGgsIGJlIHRoZSBoZWxwZnVsIG9uZTogb2ZmZXIgdG8gY292ZXIgYSBzbWFsbCB0YXNrLCBicmluZyBpbiBzb21lIHNuYWNrcyB0byBzaGFyZSwgb3IgbGVuZCBhIGhhbmQgd2hlbiBzb21lb25lIGlzIHN3YW1wZWQuIFF1aWV0IGtpbmRuZXNzIGdldHMgbm90aWNlZCBhbmQgcmVtZW1iZXJlZC4gRmluYWxseSwgYmUgcGF0aWVudCBhbmQgYmUgeW91cnNlbGYuIEZyaWVuZHNoaXBzIGF0IHdvcmsgZ3JvdyBvdmVyIHdlZWtzIGFuZCBtb250aHMsIG5vdCBpbiBhIHNpbmdsZSBhZnRlcm5vb24sIHNvIGRvIG5vdCBmb3JjZSBpdCBvciBwcmV0ZW5kIHRvIGJlIHNvbWVvbmUgeW91IGFyZSBub3QuIEp1c3Qga2VlcCBzaG93aW5nIHVwIHdhcm1seSwgYW5kIHRoZSBjb25uZWN0aW9ucyB3aWxsIGNvbWUuIFlvdSBoYXZlIGdvdCB0aGlzLiJ9LHsiayI6InQyIiwibnVtIjoyLCJ0eXBlRW4iOiJUYWxraW5nIGFib3V0IGEgUGVyc29uYWwgRXhwZXJpZW5jZSIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJUYWxrIGFib3V0IGEgdGltZSB3aGVuIHlvdSBzcG9rZSBpbiBmcm9udCBvZiBhIGdyb3VwIG9mIHBlb3BsZS4gTWF5YmUgeW91IGNhbiB0YWxrIGFib3V0IGEgcHJlc2VudGF0aW9uIHlvdSBnYXZlIGluIGNsYXNzLCBhIHJlcG9ydCB5b3UgZGVsaXZlcmVkIGF0IHdvcmssIG9yIGEgc3BlZWNoIHlvdSBtYWRlIGF0IGEgd2VkZGluZy4gV2hlcmUgZGlkIGl0IGhhcHBlbiwgd2hhdCBkaWQgeW91IHNheSwgYW5kIGhvdyBkaWQgaXQgbWFrZSB5b3UgZmVlbD8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIHRocmVlIHBhcnRzOiB3aGVyZSBpdCBoYXBwZW5lZCwgd2hhdCB5b3Ugc2FpZCwgYW5kIGhvdyBpdCBtYWRlIHlvdSBmZWVsLiBUaGUgc2FtcGxlcyBkZXNjcmliZSBnaXZpbmcgYSBtYWlkLW9mLWhvbm91ciBzcGVlY2ggYXQgeW91ciBvbGRlciBzaXN0ZXIncyB3ZWRkaW5nLCBzdGFuZGluZyBiZWZvcmUgYSBodW5kcmVkIGd1ZXN0cyB3aXRoIHNoYWtpbmcgaGFuZHMgYW5kIGEgZHJ5IG1vdXRoLCBvcGVuaW5nIHdpdGggYSBmdW5ueSBjaGlsZGhvb2Qgc3RvcnkgYW5kIGNsb3Npbmcgd2l0aCBhIGhlYXJ0ZmVsdCBtZXNzYWdlLiBQaWNrIG9uZSByZWFsIHRpbWUgeW91IHNwb2tlIGluIHB1YmxpYyBhbmQgaW5jbHVkZSB2aXZpZCBwaHlzaWNhbCBkZXRhaWxzIHBsdXMgdGhlIHJlbGllZiBhbmQgcHJpZGUgeW91IGZlbHQgYXQgdGhlIGVuZC4iXSwicGhyYXNlcyI6WyJUaGlzIGhhcHBlbmVkIGFib3V0IHR3byB5ZWFycyBhZ29cdTIwMjYiLCJBdCBmaXJzdFx1MjAyNiwgYnV0IHRoZW5cdTIwMjYiLCJXaGF0IG1hZGUgaXQgdW5mb3JnZXR0YWJsZSB3YXNcdTIwMjYiLCJMb29raW5nIGJhY2ssIFx1MjAyNiJdfSwiczYiOiJJIHdhbnQgdG8gdGFsayBhYm91dCB0aGUgdGltZSBJIGdhdmUgYSBzcGVlY2ggYXQgbXkgb2xkZXIgc2lzdGVyJ3Mgd2VkZGluZy4gSXQgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnbywgaW4gYSBiaWcgaG90ZWwsIGFuZCB0aGVyZSB3ZXJlIG1heWJlIG9uZSBodW5kcmVkIGd1ZXN0cy4gSSB3YXMgdGhlIG1haWQgb2YgaG9ub3VyLCBzbyBJIGhhZCB0byBtYWtlIGEgc3BlZWNoLiBJIHdhcyBzbyBuZXJ2b3VzISBCZWZvcmUgaXQgc3RhcnRlZCwgbXkgaGVhcnQgd2FzIGJlYXRpbmcgdmVyeSBmYXN0LCBteSBoYW5kcyB3ZXJlIHNoYWtpbmcsIGFuZCBteSBtb3V0aCB3YXMgY29tcGxldGVseSBkcnkuIFdoZW4gdGhleSBnYXZlIG1lIHRoZSBtaWNyb3Bob25lLCBJIHRvb2sgYSBkZWVwIGJyZWF0aC4gRmlyc3QsIEkgdG9sZCBhIGZ1bm55IHN0b3J5IGZyb20gb3VyIGNoaWxkaG9vZCwgYWJvdXQgaG93IG15IHNpc3RlciBhbHdheXMgZHJlc3NlZCBtZSB1cCBsaWtlIGEgZG9sbC4gRXZlcnlib2R5IGxhdWdoZWQsIGFuZCB0aGF0IGxhdWdoaW5nIG1hZGUgbWUgZmVlbCBtb3JlIHJlbGF4ZWQuIFRoZW4sIEkgc2FpZCBzb21ldGhpbmcgZnJvbSBteSBoZWFydC4gSSB0b2xkIG15IHNpc3RlciBob3cgcHJvdWQgSSBhbSBvZiBoZXIsIGFuZCBob3cgaGFwcHkgSSBhbSBmb3IgaGVyIGFuZCBoZXIgbmV3IGh1c2JhbmQuIEkgYWxtb3N0IGNyaWVkIGF0IHRoZSBlbmQsIGFuZCBzbyBkaWQgc2hlLiBXaGVuIEkgZmluaXNoZWQsIGV2ZXJ5b25lIGNsYXBwZWQgbG91ZGx5LCBhbmQgbXkgc2lzdGVyIHJhbiB0byBodWcgbWUuIEhvdyBkaWQgaXQgZmVlbD8gQXQgdGhlIHN0YXJ0LCBpdCB3YXMgdGVycmlmeWluZy4gQnV0IGF0IHRoZSBlbmQsIEkgZmVsdCBzbyBwcm91ZCBhbmQgaGFwcHksIGxpa2UgYSBiaWcgd2VpZ2h0IHdhcyBnb25lLiBJdCBpcyBhIG1vbWVudCBJIHdpbGwgbmV2ZXIgZm9yZ2V0LiIsInM5IjoiVGhlIHRpbWUgdGhhdCBqdW1wcyB0byBtaW5kIGlzIHRoZSBtYWlkLW9mLWhvbm91ciBzcGVlY2ggSSBnYXZlIGF0IG15IG9sZGVyIHNpc3RlcidzIHdlZGRpbmcsIGFib3V0IHR3byB5ZWFycyBhZ28uIEl0IHdhcyBoZWxkIGluIHRoZSBiYWxscm9vbSBvZiBhIGJpZyBob3RlbCwgd2l0aCBzb21ld2hlcmUgYXJvdW5kIGEgaHVuZHJlZCBndWVzdHMsIGZhbWlseSwgZnJpZW5kcyBhbmQgYSBsb3Qgb2YgZmFjZXMgSSBoYWQgbmV2ZXIgbWV0LCBhbGwgc2VhdGVkIGF0IHJvdW5kIHRhYmxlcyBzdGFyaW5nIHVwIGF0IG1lLiBJIGhhdmUgbmV2ZXIgYmVlbiBjb21mb3J0YWJsZSB3aXRoIHB1YmxpYyBzcGVha2luZywgYW5kIGluIHRoZSBtaW51dGVzIGJlZm9yZSBJIHN0b29kIHVwIG15IGhlYXJ0IHdhcyBoYW1tZXJpbmcsIG15IHBhbG1zIHdlcmUgc3dlYXR5LCBhbmQgbXkgbW91dGggd2VudCBjb21wbGV0ZWx5IGRyeS4gV2hlbiB0aGUgREogaGFuZGVkIG1lIHRoZSBtaWNyb3Bob25lLCBJIHRvb2sgb25lIHNsb3csIGRlZXAgYnJlYXRoIGFuZCBqdXN0IHN0YXJ0ZWQuIEkgb3BlbmVkIHdpdGggYSBmdW5ueSBzdG9yeSBmcm9tIG91ciBjaGlsZGhvb2QsIGhvdyBteSBzaXN0ZXIgdXNlZCB0byBkcmVzcyBtZSB1cCBsaWtlIGEgbGl2aW5nIGRvbGwgYW5kIHBhcmFkZSBtZSBhcm91bmQgdGhlIGhvdXNlLCBhbmQgdG8gbXkgZW5vcm1vdXMgcmVsaWVmIHRoZSB3aG9sZSByb29tIGJ1cnN0IG91dCBsYXVnaGluZy4gVGhhdCBsYXVnaHRlciBsb29zZW5lZCBzb21ldGhpbmcgaW4gbWUsIGFuZCBzdWRkZW5seSB0aGUgbmVydmVzIG1lbHRlZCBpbnRvIHNvbWV0aGluZyBjbG9zZXIgdG8gZXhjaXRlbWVudC4gRnJvbSB0aGVyZSBJIHN3aXRjaGVkIHRvIHRoZSBoZWFydGZlbHQgcGFydDogSSB0b2xkIG15IHNpc3RlciBob3cgZmllcmNlbHkgcHJvdWQgb2YgaGVyIEkgYW0sIGhvdyBtdWNoIHNoZSBoYXMgYWx3YXlzIGxvb2tlZCBhZnRlciBtZSwgYW5kIGhvdyBnZW51aW5lbHkgaGFwcHkgSSB3YXMgdG8gd2VsY29tZSBoZXIgaHVzYmFuZCBpbnRvIG91ciBmYW1pbHkuIEJ5IHRoZSBsYXN0IGxpbmUgbXkgdm9pY2Ugd2FzIGNyYWNraW5nIGFuZCB0aGVyZSB3ZXJlIHRlYXJzIGluIGhlciBleWVzLCBhbmQgbWluZS4gV2hlbiBJIGZpbmlzaGVkLCB0aGUgYXBwbGF1c2Ugd2FzIGxvdWQgYW5kIHdhcm0sIGFuZCBteSBzaXN0ZXIgcnVzaGVkIG92ZXIgdG8gaHVnIG1lLiBIb25lc3RseSwgdGhlIHdob2xlIHRoaW5nIHdhcyBhIHJvbGxlcmNvYXN0ZXI6IHB1cmUgdGVycm9yIGF0IHRoZSBzdGFydCwgdGhlbiByZWxpZWYsIGFuZCBmaW5hbGx5IGEgZGVlcCwgZ2xvd2luZyBwcmlkZS4gSXQgdGF1Z2h0IG1lIHRoYXQgSSBjYW4gZG8gaGFyZCB0aGluZ3MsIGFuZCBpdCBpcyBhIG1lbW9yeSBJIHdpbGwgdHJlYXN1cmUgZm9yZXZlci4ifSx7ImsiOiJ0MyIsIm51bSI6MywidHlwZUVuIjoiRGVzY3JpYmluZyBhIFNjZW5lIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkRlc2NyaWJlIHNvbWUgdGhpbmdzIHRoYXQgYXJlIGhhcHBlbmluZyBpbiB0aGUgcGljdHVyZSBiZWxvdyBhcyB3ZWxsIGFzIHlvdSBjYW4uIFRoZSBwZXJzb24gd2l0aCB3aG9tIHlvdSBhcmUgc3BlYWtpbmcgY2Fubm90IHNlZSB0aGUgcGljdHVyZS4iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJGaXJzdCBzZW50ZW5jZTogZ2l2ZSB0aGUgb3ZlcnZpZXcgKHdoZXJlIGl0IGlzLCB3aGF0IHRoZSBhdG1vc3BoZXJlIGlzIGxpa2UpLiIsIkRlc2NyaWJlIDRcdTIwMTM2IGRldGFpbHMgYnkgbG9jYXRpb246IGluIHRoZSBmb3JlZ3JvdW5kIC8gb24gdGhlIGxlZnQgLyBhdCB0aGUgYmFja1x1MjAyNjsgdXNlIHRoZSBwcmVzZW50IGNvbnRpbnVvdXMuIiwiVGhlIGxpc3RlbmVyIENBTk5PVCBzZWUgdGhlIHBpY3R1cmUgXHUyMDE0IGJlIHNwZWNpZmljOyB3aGVuIHVuc3VyZSwgdXNlIHNlZW1zIC8gYXBwZWFycyAvIGxvb2tzIGxpa2UuIiwiQSBidXN5LCBjaGFvdGljIGNvbnN0cnVjdGlvbiBzaXRlIGluIGZyb250IG9mIGEgY2l0eSBza3lsaW5lLiBHbyBpbiBvcmRlcjogdGhlIHRhbGwgeWVsbG93IHRvd2VyIGNyYW5lIG9uIHRoZSBsZWZ0IHdpdGggaXRzIGVtcHR5IGhvb2ssIHRoZW4gYSBncmVlbiBkdW1wIHRydWNrIHRpcHBpbmcgb3V0IGEgbG9hZCBvZiBkaXJ0IHdoaWxlIGEgd29ya2VyIGluIGFuIG9yYW5nZSB2ZXN0IGhvbGRzIHVwIGEgcmVkIFNUT1Agc2lnbiB0byB0aGUgcmVkIGNhcnMgd2FpdGluZyBiZWhpbmQgaXQ7IHR3byB3b3JrZXJzIHB1c2hpbmcgYSB3aGVlbGJhcnJvdyBhdCB0aGUgZnJvbnQgYW5kIGEgc21hbGwgeWVsbG93IGZyb250LWxvYWRlciBkaWdnZXIgd2l0aCBhIGRyaXZlciBpbiB0aGUgbWlkZGxlOyBhIHdlbGRlciBzaXR0aW5nIG9uIGEgc3RlZWwgYmVhbSBzZW5kaW5nIG91dCBvcmFuZ2Ugc3BhcmtzLCBhbmQgYSBtYW4gY2xpbWJpbmcgdGhlIGNyYW5lIGxhZGRlcjsgdGhlbiwgb24gdGhlIHJpZ2h0LCB0aGUgc3RlZWwtYW5kLXdvb2QgZnJhbWUgb2YgdGhlIG5ldyBidWlsZGluZywgd2hlcmUgdHdvIHdvcmtlcnMgc2l0IGNoYXR0aW5nIG9uIGEgaGlnaCBiZWFtLCBhbmQgYmVsb3cgdGhlbSBhIG1hbiBpbiBhIHN1aXQgYW5kIHJlZCBoYXJkIGhhdCBzdHVkaWVzIHRoZSBibHVlcHJpbnRzIHdpdGggYSB3b3JrZXIgaW4gYW4gb3JhbmdlIHZlc3QsIHBsdXMgb25lIG1vcmUgd29ya2VyIHBvaW50aW5nIGF0IHRoZSBib3R0b20tcmlnaHQuIE1lbnRpb24gdGhhdCBldmVyeW9uZSBpcyB3ZWFyaW5nIGEgaGFyZCBoYXQgYW5kIHNhZmV0eSB2ZXN0LiJdLCJwaHJhc2VzIjpbIkluIHRoZSBmb3JlZ3JvdW5kLCBcdTIwMjYiLCJPbiB0aGUgcmlnaHQtaGFuZCBzaWRlLCBcdTIwMjYiLCJJdCBsb29rcyBsaWtlXHUyMDI2IiwiVGhlIHdob2xlIHBsYWNlIGZlZWxzXHUyMDI2Il19LCJzNiI6IlRoaXMgcGljdHVyZSBzaG93cyBhIHZlcnkgYnVzeSBjb25zdHJ1Y3Rpb24gc2l0ZSwgYW5kIGJlaGluZCBpdCBJIGNhbiBzZWUgdGhlIHRhbGwgYnVpbGRpbmdzIG9mIGEgY2l0eS4gT24gdGhlIGxlZnQsIHRoZXJlIGlzIGEgYmlnIHllbGxvdyBjcmFuZSwgYW5kIGl0cyBob29rIGlzIGhhbmdpbmcgZG93biwgZW1wdHkuIFVuZGVyIHRoZSBjcmFuZSwgYSBncmVlbiBkdW1wIHRydWNrIGlzIHRpcHBpbmcgb3V0IGEgYmlnIGxvYWQgb2YgZGlydCBvciBzYW5kLiBBIHdvcmtlciBpbiBhbiBvcmFuZ2Ugc2FmZXR5IHZlc3QgaXMgaG9sZGluZyB1cCBhIHJlZCAnU1RPUCcgc2lnbiwgYmVjYXVzZSB0aGVyZSBhcmUgc29tZSByZWQgY2FycyB3YWl0aW5nIG9uIHRoZSByb2FkIGJlaGluZCB0aGUgdHJ1Y2suIEluIHRoZSBmcm9udCwgdHdvIHdvcmtlcnMgYXJlIHB1c2hpbmcgYSB3aGVlbGJhcnJvdywgYW5kIGluIHRoZSBtaWRkbGUgdGhlcmUgaXMgYSBzbWFsbCB5ZWxsb3cgZGlnZ2VyIHdpdGggYSBkcml2ZXIgaW5zaWRlIGl0LiBJIGNhbiBhbHNvIHNlZSBhIG1hbiBzaXR0aW5nIG9uIGEgbWV0YWwgYmVhbSwgYW5kIGhlIGlzIHdlbGRpbmcsIHNvIHRoZXJlIGFyZSBvcmFuZ2Ugc3BhcmtzIGZseWluZy4gQW5vdGhlciBtYW4gaXMgY2xpbWJpbmcgYSBsYWRkZXIgb24gdGhlIGNyYW5lLiBPbiB0aGUgcmlnaHQgc2lkZSwgdGhlcmUgaXMgdGhlIG1ldGFsIGFuZCB3b29kIGZyYW1lIG9mIGEgbmV3IGJ1aWxkaW5nLiBUd28gd29ya2VycyBhcmUgc2l0dGluZyBoaWdoIHVwIG9uIGEgYmVhbSwgdGFraW5nIGEgYnJlYWsgYW5kIHRhbGtpbmcuIEJlbG93IHRoZW0sIGEgbWFuIGluIGEgc3VpdCB3aXRoIGEgcmVkIGhhcmQgaGF0IGlzIGxvb2tpbmcgYXQgdGhlIGJ1aWxkaW5nIHBsYW5zIHdpdGggYW5vdGhlciB3b3JrZXIuIEV2ZXJ5b25lIGluIHRoZSBwaWN0dXJlIGlzIHdlYXJpbmcgYSBoYXJkIGhhdCBhbmQgYSBzYWZldHkgdmVzdCwgYmVjYXVzZSBzYWZldHkgaXMgdmVyeSBpbXBvcnRhbnQgb24gYSBzaXRlIGxpa2UgdGhpcy4gSXQgbG9va3Mgbm9pc3kgYW5kIGZ1bGwgb2YgYWN0aW9uISIsInM5IjoiVGhpcyBpcyBhIGJ1c3RsaW5nIGNvbnN0cnVjdGlvbiBzaXRlIHNldCBhZ2FpbnN0IHRoZSBiYWNrZHJvcCBvZiBhIGNpdHkgc2t5bGluZSwgYW5kIHRoZXJlIGlzIGFjdGl2aXR5IGluIGV2ZXJ5IGNvcm5lci4gRG9taW5hdGluZyB0aGUgbGVmdCBpcyBhIHRhbGwgeWVsbG93IHRvd2VyIGNyYW5lLCBpdHMgaG9vayBkYW5nbGluZyBlbXB0eSBmb3IgdGhlIG1vbWVudC4gRGlyZWN0bHkgYmVuZWF0aCBpdCwgYSBncmVlbiBkdW1wIHRydWNrIGhhcyB0aWx0ZWQgaXRzIGJlZCBhbmQgaXMgcG91cmluZyBvdXQgYSBoZWFwIG9mIGVhcnRoLCB3aGlsZSBhIHdvcmtlciBpbiBhbiBvcmFuZ2UgaGlnaC12aXNpYmlsaXR5IHZlc3QgaG9sZHMgdXAgYSByZWQgJ1NUT1AnIHNpZ24gdG8gaG9sZCBiYWNrIGEgY291cGxlIG9mIHJlZCBjYXJzIHF1ZXVpbmcgb24gdGhlIHJvYWQgYmVoaW5kLiBJbiB0aGUgZm9yZWdyb3VuZCwgdHdvIGxhYm91cmVycyBhcmUgYnVzeSB3aXRoIGEgd2hlZWxiYXJyb3csIGFuZCByaWdodCBpbiB0aGUgbWlkZGxlIGEgY29tcGFjdCB5ZWxsb3cgZnJvbnQtbG9hZGVyIHRydW5kbGVzIGFsb25nIHdpdGggaXRzIG9wZXJhdG9yIHBlcmNoZWQgaW4gdGhlIGNhYi4gTXkgZXllIGlzIHRoZW4gZHJhd24gdG8gYSB3ZWxkZXIgc2l0dGluZyBhc3RyaWRlIGEgc3RlZWwgYmVhbSwgc2VuZGluZyBhIHNob3dlciBvZiBicmlnaHQgb3JhbmdlIHNwYXJrcyBpbnRvIHRoZSBhaXIsIGFuZCBiZXNpZGUgaGltIGEgbWFuIGlzIGNhcmVmdWxseSBjbGltYmluZyBvbmUgb2YgdGhlIGNyYW5lJ3MgbGFkZGVycy4gT3ZlciBvbiB0aGUgcmlnaHQgcmlzZXMgdGhlIHN0ZWVsLWFuZC10aW1iZXIgc2tlbGV0b24gb2YgdGhlIGJ1aWxkaW5nIGl0c2VsZi4gSGlnaCB1cCBvbiBhIGhvcml6b250YWwgYmVhbSwgdHdvIHdvcmtlcnMgaGF2ZSBzZXR0bGVkIGRvd24gZm9yIGEgY2hhdCBhbmQgYSByZXN0LCBzZWVtaW5nbHkgdW5ib3RoZXJlZCBieSB0aGUgaGVpZ2h0LCB3aGlsZSBhdCBncm91bmQgbGV2ZWwgYmVsb3cgdGhlbSBhIG1hbiBpbiBhIHNtYXJ0IHN1aXQgYW5kIGEgcmVkIGhhcmQgaGF0IHBvcmVzIG92ZXIgYSBzZXQgb2YgYmx1ZXByaW50cyB3aXRoIGEgY29sbGVhZ3VlIGluIGFuIG9yYW5nZSB2ZXN0LCBjbGVhcmx5IHRoZSBmb3JlbWFuIGFuZCB0aGUgYXJjaGl0ZWN0IGRpc2N1c3NpbmcgdGhlIHBsYW5zLiBEb3duIGluIHRoZSBib3R0b20tcmlnaHQgY29ybmVyLCB5ZXQgYW5vdGhlciB3b3JrZXIgZ2VzdHVyZXMgYXQgc29tZXRoaW5nIG9mZiB0byB0aGUgc2lkZS4gRXZlcnkgc2luZ2xlIHBlcnNvbiBpcyBraXR0ZWQgb3V0IGluIGEgaGFyZCBoYXQgYW5kIHNhZmV0eSB2ZXN0LCBhIHJlbWluZGVyIG9mIGhvdyBoYXphcmRvdXMgdGhlIHNpdGUgaXMuIFRoZSBvdmVyYWxsIGltcHJlc3Npb24gaXMgb2Ygb3JnYW5pc2VkLCBub2lzeSwgcHVycG9zZWZ1bCBjaGFvcy4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUgY29uc3RydWN0aW9uIHNpdGUgYXMgVGFzayAzLCBub3cgcHJlZGljdCB3aGF0IGhhcHBlbnMgbmV4dDogdGhlIGNyYW5lIHdpbGwgc3dpbmcgb3ZlciwgbG93ZXIgaXRzIGhvb2sgYW5kIGxpZnQgYSBzdGVlbCBiZWFtIHVwIHRvIHRoZSBmcmFtZTsgdGhlIGR1bXAgdHJ1Y2sgd2lsbCBmaW5pc2ggZW1wdHlpbmcgaXRzIGxvYWQgYW5kIGRyaXZlIG9mZiwgYW5kIHRoZSB3b3JrZXIgd2l0aCB0aGUgU1RPUCBzaWduIHdpbGwgd2F2ZSB0aGUgcmVkIGNhcnMgdGhyb3VnaDsgdGhlIGxpdHRsZSB5ZWxsb3cgZGlnZ2VyIHdpbGwgc2Nvb3AgdXAgdGhlIGZyZXNoIHBpbGUgb2YgZGlydDsgdGhlIHdlbGRlciB3aWxsIGZpbmlzaCBoaXMgam9pbnQgYW5kIGNsaW1iIGRvd247IHRoZSB0d28gd29ya2VycyByZXN0aW5nIG9uIHRoZSBoaWdoIGJlYW0gd2lsbCBnZXQgYmFjayB0byB3b3JrOyBhbmQgdGhlIGZvcmVtYW4gaW4gdGhlIHN1aXQgd2lsbCBmb2xkIHVwIHRoZSBibHVlcHJpbnRzIGFuZCBnaXZlIHRoZSBjcmV3IHRoZWlyIG5leHQgaW5zdHJ1Y3Rpb25zLiBFbmQgd2l0aCBhbiBvdmVyYWxsIHByZWRpY3Rpb24gdGhhdCB0aGUgZnJhbWUgd2lsbCBzbG93bHkgcmlzZSwgYmVhbSBieSBiZWFtIGFuZCBmbG9vciBieSBmbG9vci4iXSwicGhyYXNlcyI6WyJcdTIwMjZpcyBhYm91dCB0b1x1MjAyNiIsIkhlJ2xsIG1vc3QgbGlrZWx5XHUyMDI2IiwiSnVkZ2luZyBieVx1MjAyNiwgSSBleHBlY3RcdTIwMjYiLCJXaXRoaW4gbWludXRlcywgXHUyMDI2Il19LCJzNiI6IkkgdGhpbmsgaW4gdGhlIG5leHQgZmV3IG1pbnV0ZXMsIHRoaXMgY29uc3RydWN0aW9uIHNpdGUgd2lsbCBnZXQgZXZlbiBidXNpZXIuIEZpcnN0LCB0aGF0IGJpZyB5ZWxsb3cgY3JhbmUgd2lsbCBzdGFydCB0byBtb3ZlLiBJdCB3aWxsIHN3aW5nIG92ZXIsIGxvd2VyIGl0cyBob29rLCBwaWNrIHVwIG9uZSBvZiB0aGUgaGVhdnkgc3RlZWwgYmVhbXMsIGFuZCBsaWZ0IGl0IHVwIGhpZ2ggdG8gdGhlIHdvcmtlcnMgd2hvIGFyZSBidWlsZGluZyB0aGUgZnJhbWUuIFRoZSBncmVlbiBkdW1wIHRydWNrIGlzIGFsbW9zdCBlbXB0eSwgc28gaXQgd2lsbCBmaW5pc2ggZHJvcHBpbmcgaXRzIGxvYWQgYW5kIHRoZW4gZHJpdmUgYXdheSB0byBnZXQgbW9yZSBkaXJ0LiBBZnRlciB0aGUgdHJ1Y2sgbGVhdmVzLCB0aGUgd29ya2VyIHdpdGggdGhlIHJlZCAnU1RPUCcgc2lnbiB3aWxsIHdhdmUsIGFuZCB0aGUgcmVkIGNhcnMgd2lsbCBmaW5hbGx5IGJlIGFsbG93ZWQgdG8gZHJpdmUgdGhyb3VnaC4gTmV4dCwgdGhlIGxpdHRsZSB5ZWxsb3cgZGlnZ2VyIGluIHRoZSBtaWRkbGUgd2lsbCBtb3ZlIGZvcndhcmQgYW5kIHNjb29wIHVwIHRoYXQgZnJlc2ggcGlsZSBvZiBkaXJ0IHRvIGNsZWFyIHRoZSBncm91bmQuIFRoZSBtYW4gd2hvIGlzIHdlbGRpbmcgd2lsbCBmaW5pc2ggaGlzIHdvcmssIHR1cm4gb2ZmIHRoZSBzcGFya3MsIGFuZCBjbGltYiBkb3duIHRvIGJlIHNhZmUuIFRoZSB0d28gd29ya2VycyB3aG8gYXJlIHJlc3Rpbmcgb24gdGhlIGhpZ2ggYmVhbSB3aWxsIHN0YW5kIHVwIGFuZCBnbyBiYWNrIHRvIHdvcmsuIEFuZCB0aGUgbWFuIGluIHRoZSBzdWl0IHdpdGggdGhlIHBsYW5zIHdpbGwgcHJvYmFibHkgZm9sZCB1cCBoaXMgYmx1ZXByaW50cyBhbmQgdGVsbCB0aGUgd29ya2VycyB3aGF0IHRvIGRvIG5leHQuIFNvIHN0ZXAgYnkgc3RlcCwgdGhlIG5ldyBidWlsZGluZyB3aWxsIHNsb3dseSBncm93IHRhbGxlciwgZmxvb3IgYnkgZmxvb3IuIEl0IGlzIGdvaW5nIHRvIGJlIGEgbG9uZywgaGFyZCBkYXkgZm9yIGV2ZXJ5b25lISIsInM5IjoiR2l2ZSB0aGlzIGNvbnN0cnVjdGlvbiBzaXRlIGEgZmV3IG1vcmUgbWludXRlcyBhbmQgdGhlIHdob2xlIG9wZXJhdGlvbiB3aWxsIGNyYW5rIGludG8gaXRzIG5leHQgcGhhc2UuIFRoZSBtb3N0IG9idmlvdXMgbW92ZSBpcyB0aGUgY3JhbmU6IEkgZXhwZWN0IGl0IHRvIHN3aW5nIGFjcm9zcywgbG93ZXIgdGhhdCBlbXB0eSBob29rLCBob2lzdCBvbmUgb2YgdGhlIGhlYXZ5IHN0ZWVsIGJlYW1zIG9mZiB0aGUgZ3JvdW5kLCBhbmQgbGlmdCBpdCBoaWdoIHVwIHRvIHRoZSBjcmV3IGFzc2VtYmxpbmcgdGhlIGZyYW1lLCB3aG8gd2lsbCBndWlkZSBpdCBpbnRvIHBsYWNlIGFuZCBzdGFydCBib2x0aW5nIGl0IGRvd24uIFRoZSBncmVlbiBkdW1wIHRydWNrLCBub3cgbmVhcmx5IGVtcHR5LCB3aWxsIGZpbmlzaCBzaGVkZGluZyBpdHMgbG9hZCBvZiBlYXJ0aCBhbmQgcnVtYmxlIG9mZiB0byBmZXRjaCBhbm90aGVyLCBhbmQgb25jZSBpdCBpcyBjbGVhciB0aGUgd29ya2VyIGhvbGRpbmcgdGhlIHJlZCAnU1RPUCcgc2lnbiB3aWxsIGxvd2VyIGl0IGFuZCB3YXZlIHRoZSB3YWl0aW5nIHJlZCBjYXJzIHNhZmVseSB0aHJvdWdoLiBUaGF0IGZyZXNoIG1vdW5kIG9mIGRpcnQgd2lsbCBub3Qgc2l0IHRoZXJlIGxvbmcsIHRoZSBsaXR0bGUgeWVsbG93IGZyb250LWxvYWRlciBpbiB0aGUgbWlkZGxlIHdpbGwgdHJ1bmRsZSBvdmVyIGFuZCBzdGFydCBzY29vcGluZyBpdCB1cCB0byBsZXZlbCB0aGUgc2l0ZS4gVGhlIHdlbGRlciBwZXJjaGVkIG9uIHRoZSBiZWFtIHdpbGwgZmluaXNoIGhpcyBqb2ludCwgZmxpcCB1cCBoaXMgbWFzaywgYW5kIGNhcmVmdWxseSBjbGltYiBkb3duIGZvciBhIGJyZWFrLCB3aGlsZSB0aGUgdHdvIHdvcmtlcnMgbG91bmdpbmcgb24gdGhlIGhpZ2ggYmVhbSB3aWxsIHJlbHVjdGFudGx5IGdldCB0byB0aGVpciBmZWV0IGFuZCByZXR1cm4gdG8gdGhlaXIgdGFza3MuIE1lYW53aGlsZSwgdGhlIGZvcmVtYW4gaW4gdGhlIHN1aXQgYW5kIHJlZCBoYXJkIGhhdCB3aWxsIHJvbGwgdXAgaGlzIGJsdWVwcmludHMsIHR1cm4gdG8gaGlzIGNvbGxlYWd1ZSwgYW5kIHN0YXJ0IGlzc3VpbmcgdGhlIG5leHQgc2V0IG9mIGluc3RydWN0aW9ucy4gWm9vbSBvdXQsIGFuZCB0aGUgc2FmZXN0IG92ZXJhbGwgcHJlZGljdGlvbiBpcyBzaW1wbHkgc3RlYWR5IHByb2dyZXNzOiBiZWFtIGJ5IGJlYW0gYW5kIGZsb29yIGJ5IGZsb29yLCB0aGF0IHN0ZWVsIHNrZWxldG9uIGlzIGdvaW5nIHRvIGtlZXAgY2xpbWJpbmcgdG93YXJkcyB0aGUgY2l0eSBza3lsaW5lIGJlaGluZCBpdCwgdW50aWwga25vY2stb2ZmIHRpbWUgZmluYWxseSBzZW5kcyBldmVyeW9uZSBob21lLiJ9LHsiayI6InQ1IiwibnVtIjo1LCJ0eXBlRW4iOiJDb21wYXJpbmcgYW5kIFBlcnN1YWRpbmciLCJwaGFzZWQiOnRydWUsImNob29zZSI6eyJwcmVwIjo2MCwic2l0dWF0aW9uIjoiWW91ciBmcmllbmQgaXMgZ29pbmcgdG8gYSBmbG93ZXIgc2hvcCB0byBidXkgYSBiaXJ0aGRheSBnaWZ0IGZvciBoaXMgc2lzdGVyIGFuZCBoYXMgYXNrZWQgeW91IHRvIGhlbHAgaGltIGNob29zZSBzb21ldGhpbmcuIFlvdSBmaW5kIHR3byBzdWl0YWJsZSBib3VxdWV0cyB0aGF0IHlvdSB0aGluayBoaXMgc2lzdGVyIHdvdWxkIGxpa2UuIFVzaW5nIHRoZSBwaWN0dXJlcyBhbmQgaW5mb3JtYXRpb24gYmVsb3csIGNob29zZSB0aGUgb3B0aW9uIHRoYXQgeW91IHByZWZlci4gSW4gdGhlIG5leHQgc2VjdGlvbiwgeW91IHdpbGwgbmVlZCB0byBwZXJzdWFkZSB5b3VyIGZyaWVuZCB0aGF0IHlvdXIgY2hvaWNlIGlzIHRoZSBiZXR0ZXIgY2hvaWNlLiIsIm5vdGUiOiJJZiB5b3UgZG8gbm90IGNob29zZSBhbiBvcHRpb24sIHRoZSBjb21wdXRlciB3aWxsIGNob29zZSBvbmUgZm9yIHlvdS4gWW91IGRvIG5vdCBuZWVkIHRvIHNwZWFrIGZvciB0aGlzIHBhcnQuIiwib3B0aW9ucyI6W3sidGl0bGUiOiJWZW51cyBGbHl0cmFwIiwiaW1nIjoib3B0QSIsImJ1bGxldHMiOlsiY29zdHMgJDM1IiwiTm8gc2NlbnQgYXQgYWxsIiwiQ2FuIGNhcHR1cmUgaW5zZWN0cyJdfSx7InRpdGxlIjoiTWl4ZWQgQm91cXVldCIsImltZyI6Im9wdEIiLCJidWxsZXRzIjpbImNvc3RzICQzNSIsIlN0cm9uZyBzY2VudCIsIk1peCBvZiBjb2xvdXJmdWwgZmxvd2VycyB3aXRoIGdyZWVuIGxlYXZlcyJdfV19LCJzcGVhayI6eyJwcmVwIjo2MCwicmVjIjo2MCwicHJvbXB0IjoiWW91ciBmcmllbmQgaXMgc3VnZ2VzdGluZyBhbm90aGVyIGdpZnQuIFBlcnN1YWRlIHlvdXIgZnJpZW5kIHRoYXQgdGhlIG9wdGlvbiB5b3UgY2hvc2UgaXMgbW9yZSBzdWl0YWJsZSBieSBjb21wYXJpbmcgdGhlIHR3by4iLCJvdGhlckxhYmVsIjoiWW91ciBGcmllbmQncyBDaG9pY2UiLCJvdGhlciI6eyJ0aXRsZSI6IklyaXMgQm91cXVldCIsImltZyI6Im9wdE90aGVyIiwiYnVsbGV0cyI6WyJjb3N0cyAkMTUiLCJMaWdodCwgc3VidGxlIHNjZW50IiwiUHVycGxlIGlyaXNlcyB3aXRoIGxvbmcgc3RlbXMiXX19LCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RydWN0dXJlOiBhY2tub3dsZWRnZSB0aGUgb3RoZXIgcGVyc29uJ3MgY2hvaWNlIFx1MjE5MiBnaXZlIDJcdTIwMTMzIGFkdmFudGFnZXMgb2YgeW91cnMgKGRpcmVjdCBjb21wYXJpc29uKSBcdTIxOTIgd3JhcCB1cC4iLCJDb21wYXJlIHVzaW5nIHRoZSBudW1iZXJzIG9uIHRoZSBjYXJkczogcHJpY2UsIGR1cmF0aW9uLCBjYXBhY2l0eSwgZXhwZXJpZW5jZS4iLCJZb3UgZG8gTk9UIG5lZWQgdG8gc3BlYWsgZHVyaW5nIHRoZSBjaG9vc2luZyBzdGVwIFx1MjAxNCBqdXN0IGNsaWNrIGFuIG9wdGlvbi4iLCJUaGUgc2FtcGxlcyBjaG9vc2UgdGhlIE1peGVkIEJvdXF1ZXQgKCQzNSwgYSBiaWcgYXJyYW5nZW1lbnQgb2YgY29sb3VyZnVsIGZsb3dlcnMsIHJlZCwgeWVsbG93LCBwdXJwbGUsIHBpbmsgYW5kIHdoaXRlLCB3aXRoIGdyZWVuIGxlYXZlcywgYW5kIGEgc3Ryb25nLCBsb3ZlbHkgc2NlbnQpLiBGb3IgYSBzaXN0ZXIncyBiaXJ0aGRheSBpdCBpcyB0aGUgbW9zdCBmZXN0aXZlLCBjZWxlYnJhdG9yeSBnaWZ0LCBmYXIgbW9yZSBjaGVlcmZ1bCBhbmQgaW1wcmVzc2l2ZSB0aGFuIHlvdXIgZnJpZW5kJ3MgSXJpcyBCb3VxdWV0LCB3aGljaCBpcyBjaGVhcGVyIGF0ICQxNSBidXQgaXMgb25seSBwbGFpbiBwdXJwbGUgaXJpc2VzIHdpdGggYSBmYWludCBzY2VudC4gVGhlIFZlbnVzIEZseXRyYXAsIHRoZSBvdGhlciBvcHRpb24sIGlzIGEgZnVuIG5vdmVsdHkgYXQgJDM1IGJ1dCBhIGJ1Zy1lYXRpbmcgcGxhbnQgaXMgYSBzdHJhbmdlLCB1bnJvbWFudGljIGJpcnRoZGF5IGdpZnQuIEFyZ3VlIHRoYXQgZmxvd2VycyBzYXkgJ2hhcHB5IGJpcnRoZGF5JyBhbmQgdGhlIG1peGVkIGJvdXF1ZXQgaGFzIHRoZSBiZXN0IGNvbG91ciwgc2NlbnQgYW5kIHdvdy1mYWN0b3IgZm9yIHRoZSBtb25leS4gSWYgeW91IHByZWZlciBhIGRpZmZlcmVudCBvcHRpb24sIHN0cmVzcyBpdHMgb3duIHN0cmVuZ3RocyAodGhlIGZseXRyYXAgbGFzdHMgZmFyIGxvbmdlciB0aGFuIGN1dCBmbG93ZXJzOyB0aGUgaXJpcyBib3VxdWV0IHNhdmVzIG1vbmV5KS4iXSwicGhyYXNlcyI6WyJJIHNlZSB3aHkgeW91IGxpa2VcdTIwMjYsIGJ1dFx1MjAyNiIsIkNvbXBhcmVkIHRvXHUyMDI2LCB0aGlzIG9uZVx1MjAyNiIsIkl0J3MgYmV0dGVyIHZhbHVlOiBcdTIwMjYgdmVyc3VzIFx1MjAyNiIsIklmIHRoZSBnb2FsIGlzXHUyMDI2LCB0aGUgY2hvaWNlIGlzIGNsZWFyLiJdfSwiczYiOiJPa2F5LCBzbyB5b3Ugd2FudCB0byBidXkgYSBuaWNlIGJpcnRoZGF5IGdpZnQgZm9yIHlvdXIgc2lzdGVyLiBJIHNhdyB5b3Ugd2VyZSBsb29raW5nIGF0IHRoZSBJcmlzIEJvdXF1ZXQsIGFuZCBpdCBpcyBwcmV0dHksIGJ1dCBwbGVhc2UgbGlzdGVuLCBJIHJlYWxseSB0aGluayB0aGUgTWl4ZWQgQm91cXVldCBpcyB0aGUgYmV0dGVyIGNob2ljZS4gTGV0IG1lIHRlbGwgeW91IHdoeS4gRmlyc3QsIGxvb2sgYXQgdGhlIGNvbG91cnMuIFlvdXIgSXJpcyBCb3VxdWV0IGlzIG9ubHkgcHVycGxlLCBvbmUgc2luZ2xlIGNvbG91ci4gQnV0IHRoZSBNaXhlZCBCb3VxdWV0IGlzIGZ1bGwgb2YgbWFueSBicmlnaHQgY29sb3VycywgcmVkLCB5ZWxsb3csIHBpbmssIHB1cnBsZSwgYW5kIHdoaXRlLCB3aXRoIG5pY2UgZ3JlZW4gbGVhdmVzLiBJdCBsb29rcyBzbyBoYXBweSBhbmQgZmVzdGl2ZSwgcGVyZmVjdCBmb3IgYSBiaXJ0aGRheSBwYXJ0eSEgU2Vjb25kLCB0aGluayBhYm91dCB0aGUgc21lbGwuIFRoZSBpcmlzIGZsb3dlcnMgaGF2ZSBvbmx5IGEgbGlnaHQsIHdlYWsgc2NlbnQsIGJ1dCB0aGUgTWl4ZWQgQm91cXVldCBoYXMgYSBzdHJvbmcsIGJlYXV0aWZ1bCBzbWVsbCB0aGF0IHdpbGwgZmlsbCBoZXIgd2hvbGUgcm9vbS4gWWVzLCB0aGUgbWl4ZWQgb25lIGNvc3RzIHRoaXJ0eS1maXZlIGRvbGxhcnMgYW5kIHRoZSBpcmlzIG9uZSBpcyBvbmx5IGZpZnRlZW4sIGJ1dCBpdCBpcyBoZXIgYmlydGhkYXksIHNvIGl0IGlzIHdvcnRoIHNwZW5kaW5nIGEgbGl0dGxlIG1vcmUgdG8gbWFrZSBoZXIgc21pbGUuIEFuZCBmb3JnZXQgYWJvdXQgdGhhdCBWZW51cyBGbHl0cmFwLCBJIGtub3cgaXQgbG9va3MgY29vbCwgYnV0IGl0IGVhdHMgaW5zZWN0cyEgVGhhdCBpcyBhIHN0cmFuZ2UgZ2lmdCBmb3IgYSBiaXJ0aGRheSwgbm90IHJvbWFudGljIGF0IGFsbC4gRmxvd2VycyBzYXkgJ0hhcHB5IEJpcnRoZGF5JyBtdWNoIGJldHRlci4gU28gdHJ1c3QgbWUsIGJ1eSB0aGUgYmlnLCBjb2xvdXJmdWwgTWl4ZWQgQm91cXVldC4gWW91ciBzaXN0ZXIgd2lsbCBsb3ZlIGl0ISIsInM5IjoiSSBrbm93IHlvdSB3ZXJlIGxlYW5pbmcgdG93YXJkcyB0aGUgSXJpcyBCb3VxdWV0LCBhbmQgaXQgaXMgcGVyZmVjdGx5IG5pY2UsIGJ1dCBsZXQgbWUgbWFrZSB0aGUgY2FzZSBmb3IgdGhlIE1peGVkIEJvdXF1ZXQsIGJlY2F1c2UgZm9yIHlvdXIgc2lzdGVyJ3MgYmlydGhkYXkgSSBob25lc3RseSB0aGluayBpdCBpcyB0aGUgd2lubmVyLiBTdGFydCB3aXRoIHRoZSB2aXN1YWwgaW1wYWN0LiBZb3VyIGlyaXNlcyBhcmUgZWxlZ2FudCwgYnV0IHRoZXkgYXJlIGEgc2luZ2xlIHNoYWRlIG9mIHB1cnBsZSwgd2hlcmVhcyB0aGUgTWl4ZWQgQm91cXVldCBpcyBhbiBleHBsb3Npb24gb2YgY29sb3VyLCByZWRzLCB5ZWxsb3dzLCBwaW5rcywgcHVycGxlcyBhbmQgd2hpdGVzIGFsbCBidW5kbGVkIHRvZ2V0aGVyIHdpdGggbHVzaCBncmVlbiBmb2xpYWdlLiBUaGF0IGlzIGV4YWN0bHkgdGhlIHNvcnQgb2Ygam95ZnVsLCBjZWxlYnJhdG9yeSBsb29rIHlvdSB3YW50IGZvciBhIGJpcnRoZGF5OyBpdCBwcmFjdGljYWxseSBzaG91dHMgJ2NvbmdyYXR1bGF0aW9ucycuIFRoZW4gdGhlcmUgaXMgdGhlIHNjZW50LiBUaGUgaXJpc2VzIGhhdmUgb25seSBhIGxpZ2h0LCBzdWJ0bGUgZnJhZ3JhbmNlLCBidXQgdGhlIG1peGVkIGFycmFuZ2VtZW50IGhhcyBhIHJpY2gsIHN0cm9uZyBwZXJmdW1lIHRoYXQgd2lsbCBicmlnaHRlbiBoZXIgd2hvbGUgcm9vbSB0aGUgbW9tZW50IHNoZSB3YWxrcyBpbi4gSSBrbm93IHRoZSBwcmljZSBpcyBhIGZhY3RvciwgdGhlIG1peGVkIGJ1bmNoIGlzIHRoaXJ0eS1maXZlIGRvbGxhcnMgYWdhaW5zdCBqdXN0IGZpZnRlZW4gZm9yIHRoZSBpcmlzZXMsIGJ1dCB0aGlzIGlzIHlvdXIgc2lzdGVyJ3MgYmlydGhkYXksIGFuZCB0aGUgZXh0cmEgdHdlbnR5IGRvbGxhcnMgYnV5cyBhIGZhciBtb3JlIGltcHJlc3NpdmUsIG1lbW9yYWJsZSBnaWZ0LiBBcyBmb3IgdGhlIFZlbnVzIEZseXRyYXAsIEkgZ2V0IHRoYXQgaXQgaXMgcXVpcmt5IGFuZCBmdW4sIGFuZCB5ZXMsIGl0IHdvdWxkIGxhc3QgbG9uZ2VyIHRoYW4gY3V0IGZsb3dlcnMsIGJ1dCBsZXQncyBiZSBob25lc3QsIGEgY2Fybml2b3JvdXMgcGxhbnQgdGhhdCBzbmFwcyB1cCBpbnNlY3RzIGlzIGEgYml6YXJyZSwgc2xpZ2h0bHkgY3JlZXB5IHByZXNlbnQgZm9yIGEgYmlydGhkYXksIGFuZCBpdCBzZW5kcyBjb21wbGV0ZWx5IHRoZSB3cm9uZyBtZXNzYWdlLiBGbG93ZXJzIHNheSAnSSBhbSBjZWxlYnJhdGluZyB5b3UnLCBhbmQgbm8gYnVuY2ggZG9lcyB0aGF0IGJldHRlciB0aGFuIHRoaXMgYmlnLCBmcmFncmFudCwgY29sb3VyZnVsIG9uZS4gSG9uZXN0bHksIGZvciBhIGJpcnRoZGF5IHlvdSByZWFsbHkgY2Fubm90IGdvIHdyb25nIHdpdGggYSBiaWcsIGJlYXV0aWZ1bCBidW5jaCBvZiBmcmVzaCBmbG93ZXJzLiBMZXQncyBnZXQgdGhlIE1peGVkIEJvdXF1ZXQsIHNoZSB3aWxsIGJlIHRocmlsbGVkLiJ9LHsiayI6InQ2IiwibnVtIjo2LCJ0eXBlRW4iOiJEZWFsaW5nIHdpdGggYSBEaWZmaWN1bHQgU2l0dWF0aW9uIiwicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IllvdXIgYmVzdCBmcmllbmQgaXMgdmlzaXRpbmcgeW91ciBjaXR5IGZvciAxIHdlZWsgYW5kIGhhcyBhc2tlZCB0byBzdGF5IHdpdGggeW91IGFuZCB5b3VyIHJvb21tYXRlLiBTaGUgZG9lc24ndCB3YW50IHRvIHN0YXkgYXQgYSBob3RlbCBiZWNhdXNlIGl0IGlzIHZlcnkgZXhwZW5zaXZlLiBZb3VyIHJvb21tYXRlIGRvZXMgbm90IHdhbnQgaGVyIHRvIHN0YXkgYXQgeW91ciBwbGFjZSBiZWNhdXNlIHlvdXIgZnJpZW5kIGlzIHZlcnkgbWVzc3kuIiwiY2hvb3NlT25lIjpbIlRhbGsgdG8geW91ciBiZXN0IGZyaWVuZC4gRXhwbGFpbiB3aHkgeW91IGNhbm5vdCBsZXQgaGVyIHN0YXkgYXQgeW91ciBwbGFjZS4iLCJUYWxrIHRvIHlvdXIgcm9vbW1hdGUuIEV4cGxhaW4gd2h5IHlvdSBzaG91bGQgbGV0IHlvdXIgZnJpZW5kIHN0YXkgYXQgeW91ciBwbGFjZS4iXSwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiUGljayBPTkUgb3B0aW9uIChFSVRIRVIgb3IgT1IpIGltbWVkaWF0ZWx5IFx1MjAxNCBkb24ndCB3YXN0ZSB0aW1lIGRlY2lkaW5nLiIsIlN0cnVjdHVyZTogb3BlbiBwb2xpdGVseSBcdTIxOTIgZXhwbGFpbiB5b3VyIHJlYXNvbnMvZXZpZGVuY2UgXHUyMTkyIHByb3Bvc2UgYSBzb2x1dGlvbiBcdTIxOTIgc21vb3RoIHRoaW5ncyBvdmVyLiIsIlN0YXkgY2FsbSBhbmQgcmVzcGVjdGZ1bCBcdTIwMTQgaG93IHlvdSBoYW5kbGUgdGhlIHNpdHVhdGlvbiBpcyBwYXJ0IG9mIHdoYXQncyBiZWluZyByYXRlZCAoTGlzdGVuYWJpbGl0eSkuIiwiVGhlIHNhbXBsZXMgcGljayBvcHRpb24gMiwgdGFsa2luZyB0byB5b3VyIHJvb21tYXRlIHRvIGV4cGxhaW4gd2h5IHlvdXIgYmVzdCBmcmllbmQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc3RheS4gQWNrbm93bGVkZ2UgdGhlIHJvb21tYXRlJ3MgZmFpciBjb25jZXJuIGFib3V0IHRoZSBtZXNzIGZpcnN0LCB0aGVuIHBlcnN1YWRlOiBpdCBpcyBvbmx5IGZvciBvbmUgd2VlaywgYSBob3RlbCBpcyBnZW51aW5lbHkgdG9vIGV4cGVuc2l2ZSBmb3IgeW91ciBmcmllbmQsIGFuZCBzaGUgbWVhbnMgYSBncmVhdCBkZWFsIHRvIHlvdS4gT2ZmZXIgY29uY3JldGUgZ3VhcmFudGVlcywgeW91IHdpbGwgcGVyc29uYWxseSBtYWtlIHN1cmUgdGhlIGZsYXQgc3RheXMgdGlkeSwgeW91IHdpbGwgbGF5IGRvd24gY2xlYXIgZ3JvdW5kIHJ1bGVzIHdpdGggeW91ciBmcmllbmQgYWJvdXQgY2xlYW5pbmcgdXAgYWZ0ZXIgaGVyc2VsZiwgYW5kIHlvdSB3aWxsIHRha2UgZnVsbCByZXNwb25zaWJpbGl0eSBmb3IgYW55IG1lc3MuIFN0YXkgY2FsbSwgcmVzcGVjdGZ1bCBhbmQgc29sdXRpb24tZm9jdXNlZC4iXSwicGhyYXNlcyI6WyJDb3VsZCBJIGp1bXAgaW4gZm9yIGEgbW9tZW50PyIsIkkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4sIGJ1dFx1MjAyNiIsIkhvdyBhYm91dCB3ZVx1MjAyNj8iLCJJJ2xsIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMuIl19LCJzNiI6IkhleSBKYXNvbiwgY2FuIHdlIHRhbGsgZm9yIGEgbWludXRlIGFib3V0IG15IGZyaWVuZCBMaXNhIHZpc2l0aW5nIG5leHQgd2Vlaz8gSSBrbm93IHlvdSBhcmUgd29ycmllZCwgYW5kIEkgdW5kZXJzdGFuZC4gWW91IHJlbWVtYmVyIHNoZSBjYW4gYmUgYSBiaXQgbWVzc3ksIGFuZCB5b3UgbGlrZSBvdXIgYXBhcnRtZW50IHRvIGJlIGNsZWFuIGFuZCB0aWR5LiBUaGF0IGlzIHRvdGFsbHkgZmFpciwgYW5kIEkgcmVzcGVjdCB0aGF0LiBCdXQgcGxlYXNlLCBsZXQgbWUgZXhwbGFpbiB3aHkgSSByZWFsbHkgd2FudCBoZXIgdG8gc3RheSBoZXJlIHdpdGggdXMuIEZpcnN0LCBpdCBpcyBvbmx5IGZvciBvbmUgd2Vlaywgc2V2ZW4gZGF5cywgYW5kIHRoZW4gc2hlIGlzIGdvbmUuIEl0IGlzIG5vdCBmb3JldmVyLiBTZWNvbmQsIGEgaG90ZWwgaW4gb3VyIGNpdHkgaXMgc28gZXhwZW5zaXZlLCBhbmQgTGlzYSBjYW5ub3QgYWZmb3JkIGl0LiBTaGUgaXMgbXkgYmVzdCBmcmllbmQsIGFuZCBzaGUgbWVhbnMgc28gbXVjaCB0byBtZSwgc28gSSByZWFsbHkgd2FudCB0byBoZWxwIGhlci4gTm93LCBoZXJlIGlzIG15IHByb21pc2UgdG8gZml4IHlvdXIgd29ycnkuIEkgd2lsbCBtYWtlIHN1cmUgdGhlIGFwYXJ0bWVudCBzdGF5cyBjbGVhbi4gSSB3aWxsIHRhbGsgdG8gTGlzYSBiZWZvcmUgc2hlIGNvbWVzIGFuZCBnaXZlIGhlciBjbGVhciBydWxlcywgbGlrZSBhbHdheXMgY2xlYW4gdXAgYWZ0ZXIgeW91cnNlbGYgYW5kIGtlZXAgeW91ciB0aGluZ3MgaW4gbXkgcm9vbS4gQW5kIGlmIHNoZSBtYWtlcyBhbnkgbWVzcywgSSBwcm9taXNlIEkgd2lsbCBjbGVhbiBpdCBteXNlbGYuIFlvdSB3aWxsIG5vdCBoYXZlIHRvIGRvIGFueXRoaW5nLiBJdCBpcyBteSByZXNwb25zaWJpbGl0eS4gU28gd2hhdCBkbyB5b3UgdGhpbms\/IENhbiB3ZSBsZXQgaGVyIHN0YXksIGp1c3QgZm9yIG9uZSB3ZWVrPyBJdCB3b3VsZCBtZWFuIHRoZSB3b3JsZCB0byBtZS4gVGhhbmsgeW91LCBKYXNvbi4iLCJzOSI6Ikphc29uLCBkbyB5b3UgaGF2ZSBhIG1pbnV0ZT8gSSB3YW50ZWQgdG8gdGFsayB0byB5b3UgcHJvcGVybHkgYWJvdXQgTGlzYSBjb21pbmcgdG8gc3RheSBuZXh0IHdlZWssIGJlY2F1c2UgSSBrbm93IHlvdSBoYXZlIHJlc2VydmF0aW9ucyBhbmQgSSBjb21wbGV0ZWx5IHVuZGVyc3RhbmQgdGhlbS4gWW91IGFyZSByaWdodCB0aGF0IHNoZSBjYW4gYmUgbWVzc3ksIGFuZCB5b3UgdGFrZSByZWFsIHByaWRlIGluIGtlZXBpbmcgb3VyIHBsYWNlIGNsZWFuIGFuZCB0aWR5LCBzbyBpdCBpcyBmYWlyIGZvciB5b3UgdG8gYmUgd29ycmllZC4gSSBhbSBub3QgZ29pbmcgdG8gcHJldGVuZCB0aGF0IGNvbmNlcm4gaXMgdW5yZWFzb25hYmxlLiBCdXQgbGV0IG1lIGV4cGxhaW4gd2h5IHRoaXMgbWF0dGVycyBzbyBtdWNoIHRvIG1lIGFuZCBob3cgSSBwbGFuIHRvIG1ha2UgaXQgd29yay4gRmlyc3QsIGl0IHJlYWxseSBpcyBqdXN0IGZvciBvbmUgd2Vlaywgc2V2ZW4gZGF5cyBhbmQgdGhlbiBzaGUgZmxpZXMgaG9tZSwgc28gd2UgYXJlIG5vdCB0YWxraW5nIGFib3V0IGEgcGVybWFuZW50IGFycmFuZ2VtZW50LiBTZWNvbmQsIGhvdGVscyBoZXJlIGhhdmUgYmVjb21lIGFic3VyZGx5IGV4cGVuc2l2ZSwgYW5kIGhvbmVzdGx5IExpc2Egc2ltcGx5IGNhbm5vdCBhZmZvcmQgb25lOyBzaGUgaXMgbXkgb2xkZXN0IGFuZCBjbG9zZXN0IGZyaWVuZCwgYW5kIEkgd291bGQgZmVlbCB0ZXJyaWJsZSB0dXJuaW5nIGhlciBhd2F5IHdoZW4gSSBjb3VsZCBoZWxwLiBOb3csIGhlcmUgaXMgdGhlIGltcG9ydGFudCBwYXJ0LCBteSBwbGFuIHRvIHByb3RlY3QgeW91ciBwZWFjZSBvZiBtaW5kLiBCZWZvcmUgc2hlIGV2ZW4gYXJyaXZlcywgSSB3aWxsIHNpdCBkb3duIHdpdGggaGVyIGFuZCBzZXQgc29tZSBjbGVhciBncm91bmQgcnVsZXM6IGNsZWFuIHVwIGFmdGVyIGhlcnNlbGYgc3RyYWlnaHQgYXdheSwga2VlcCBhbGwgaGVyIGJlbG9uZ2luZ3MgaW4gbXkgcm9vbSwgYW5kIG5ldmVyIGxlYXZlIGEgbWVzcyBpbiB0aGUgc2hhcmVkIHNwYWNlcy4gQW5kIEkgd2FudCB0byBiZSBjcnlzdGFsIGNsZWFyLCBpZiBzaGUgZG9lcyBzbGlwIHVwLCBJIHdpbGwgdGFrZSBmdWxsIHJlc3BvbnNpYmlsaXR5IGFuZCBjbGVhbiBpdCBteXNlbGYsIHNvIHlvdSB3aWxsIG5vdCBoYXZlIHRvIGxpZnQgYSBmaW5nZXIgb3IgZmVlbCB0aGUgcGxhY2Ugc2xpcHBpbmcuIEl0IGlzIGVudGlyZWx5IG9uIG1lLiBDb3VsZCB3ZSBnaXZlIGl0IGEgdHJ5LCBqdXN0IGZvciB0aGlzIG9uZSB3ZWVrPyBJdCB3b3VsZCBnZW51aW5lbHkgbWVhbiB0aGUgd29ybGQgdG8gbWUsIGFuZCBJIHByb21pc2UgSSB3aWxsIG5vdCBsZXQgaXQgZGlzcnVwdCB5b3VyIGhvbWUuIn0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHRoYXQgbWF0dXJlIHN0dWRlbnRzLCB0aG9zZSByZXR1cm5pbmcgdG8gdW5pdmVyc2l0eSBhZnRlciB0aW1lIGluIHRoZSB3b3JrZm9yY2UsIHNob3VsZCBnZXQgdGhlIHNhbWUgc3BlY2lhbCBkaXNjb3VudHMgb24gdHJhdmVsLCBlbnRlcnRhaW5tZW50LCBhbmQgcHJvZHVjdHMgYXMgeW91bmdlciBzdHVkZW50cz8gRXhwbGFpbiB5b3VyIHJlYXNvbnMuIiwicHJvbXB0TGVhZCI6IkFuc3dlciB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlN0YXRlIHlvdXIgcG9zaXRpb24gY2xlYXJseSBpbiB0aGUgZmlyc3Qgc2VudGVuY2UgKHBpY2tpbmcgb25lIHNpZGUgaXMgZWFzaWVyIHRvIGRldmVsb3AgdGhhbiBzdGF5aW5nIG5ldXRyYWwpLiIsIkdpdmUgMlx1MjAxMzMgcmVhc29ucywgZWFjaCBkZXZlbG9wZWQgb3ZlciAyXHUyMDEzMyBzZW50ZW5jZXMgd2l0aCBhbiBleGFtcGxlOyA5MCBzZWNvbmRzIGlzIGxvbmcgXHUyMDE0IGRvbid0IHN0b3AgZWFybHkuIiwiQWNrbm93bGVkZ2UgdGhlIG90aGVyIHNpZGUgaW4gb25lIHNlbnRlbmNlIChUaGF0IHNhaWQsIFx1MjAyNikgdGhlbiBjb25jbHVkZSBcdTIwMTQgaXQgc2hvd3MgYmFsYW5jZWQgdGhpbmtpbmcuIiwiVGhlIHNhbXBsZXMgYXJndWUgWUVTLCBtYXR1cmUgc3R1ZGVudHMgcmV0dXJuaW5nIHRvIHN0dWR5IHNob3VsZCBnZXQgZXhhY3RseSB0aGUgc2FtZSBkaXNjb3VudHMgYXMgeW91bmdlciBzdHVkZW50cy4gUmVhc29uczogYSBzdHVkZW50IGlzIGEgc3R1ZGVudCwgdGhleSBwYXkgdGhlIHNhbWUgdHVpdGlvbiBhbmQgYnV5IHRoZSBzYW1lIGJvb2tzLCBhbmQgYWdlIHNob3VsZCBiZSBpcnJlbGV2YW50OyBtYXR1cmUgc3R1ZGVudHMgYXJlIG9mdGVuIG9uIGEgcmVkdWNlZCBvciB6ZXJvIGluY29tZSB3aGlsZSBzdHVkeWluZywgc28gdGhlIGRpc2NvdW50cyBhcmUgYSByZWFsIGhlbHAsIG5vdCBhIGx1eHVyeTsgYW5kIHJlZnVzaW5nIHRoZW0gcHVyZWx5IGJlY2F1c2Ugb2YgYWdlIGlzIHNpbXBseSB1bmZhaXIsIGFyZ3VhYmx5IGFnZSBkaXNjcmltaW5hdGlvbi4gQ29uY2VkZSB0aGF0IHNvbWVvbmUgY29tZm9ydGFibHkgcmV0aXJlZCBvbiBhIHBlbnNpb24gaXMgYSBkaWZmZXJlbnQgY2FzZSwgdGhlbiByZWFmZmlybSB0aGF0IGVucm9sbGVkIHN0dWRlbnRzIHNob3VsZCBhbGwgYmUgdHJlYXRlZCBlcXVhbGx5LiJdLCJwaHJhc2VzIjpbIklmIEkgaGFkIHRvIGNob29zZSwgSSdkIHNheVx1MjAyNiIsIk15IG1haW4gcmVhc29uIGlzXHUyMDI2IiwiRm9yIGV4YW1wbGUsIFx1MjAyNiIsIlRoYXQgc2FpZCwgXHUyMDI2IiwiQWxsIHRoaW5ncyBjb25zaWRlcmVkLCBcdTIwMjYiXX0sInM2IjoiWWVzLCBJIHN0cm9uZ2x5IGJlbGlldmUgdGhhdCBtYXR1cmUgc3R1ZGVudHMgc2hvdWxkIGdldCBleGFjdGx5IHRoZSBzYW1lIGRpc2NvdW50cyBhcyB5b3VuZ2VyIHN0dWRlbnRzLiBMZXQgbWUgZXhwbGFpbiBteSByZWFzb25zLiBNeSBmaXJzdCByZWFzb24gaXMgdmVyeSBzaW1wbGU6IGEgc3R1ZGVudCBpcyBhIHN0dWRlbnQuIEl0IGRvZXMgbm90IG1hdHRlciBpZiB5b3UgYXJlIGVpZ2h0ZWVuIG9yIGZvcnR5LWVpZ2h0LiBJZiB5b3UgYXJlIHN0dWR5aW5nIGF0IHRoZSB1bml2ZXJzaXR5LCB5b3UgcGF5IHRoZSBzYW1lIHR1aXRpb24gZmVlcywgeW91IGJ1eSB0aGUgc2FtZSBleHBlbnNpdmUgYm9va3MsIGFuZCB5b3Ugc2l0IGluIHRoZSBzYW1lIGNsYXNzcm9vbS4gU28gd2h5IHNob3VsZCB5b3Ugbm90IGdldCB0aGUgc2FtZSBzdHVkZW50IGRpc2NvdW50PyBTZWNvbmQsIG1hdHVyZSBzdHVkZW50cyBvZnRlbiBoYXZlIGxlc3MgbW9uZXksIG5vdCBtb3JlLiBNYW55IG9mIHRoZW0gc3RvcHBlZCB3b3JraW5nIHRvIGdvIGJhY2sgdG8gc2Nob29sLCBzbyBub3cgdGhleSBoYXZlIGxpdHRsZSBvciBubyBzYWxhcnksIGJ1dCB0aGV5IHN0aWxsIGhhdmUgYmlsbHMgdG8gcGF5LCBhbmQgbWF5YmUgZXZlbiBhIGZhbWlseSB0byBmZWVkLiBUaGVzZSBkaXNjb3VudHMgb24gdGhlIGJ1cywgb24gbW92aWVzLCBhbmQgb24gcHJvZHVjdHMgcmVhbGx5IGhlbHAgdGhlbSBzdXJ2aXZlLiBUaGlyZCwgSSB0aGluayBpdCBpcyBqdXN0IG5vdCBmYWlyIHRvIHNheSBubyB0byBzb21lb25lIG9ubHkgYmVjYXVzZSBvZiB0aGVpciBhZ2UuIFRoYXQgZmVlbHMgbGlrZSBhZ2UgZGlzY3JpbWluYXRpb24sIGFuZCB0aGF0IGlzIHdyb25nLiBBZ2Ugc2hvdWxkIG5vdCBkZWNpZGUgd2hvIGdldHMgaGVscC4gT2YgY291cnNlLCBzb21lb25lIHdobyBpcyByZXRpcmVkIHdpdGggYSBiaWcgcGVuc2lvbiBpcyBhIGRpZmZlcmVudCBzdG9yeS4gQnV0IGEgcmVhbCwgZnVsbC10aW1lIHN0dWRlbnQgd2hvIGlzIHN0cnVnZ2xpbmcgd2l0aCBtb25leSBkZXNlcnZlcyB0aGUgc2FtZSBzdXBwb3J0IGFzIGV2ZXJ5b25lIGVsc2UuIFNvIHllcywgdHJlYXQgYWxsIHN0dWRlbnRzIGVxdWFsbHkuIEl0IGlzIHRoZSBmYWlyIHRoaW5nIHRvIGRvLiIsInM5IjoiTXkgYW5zd2VyIGlzIGFuIGVtcGhhdGljIHllczogbWF0dXJlIHN0dWRlbnRzIHJldHVybmluZyB0byB1bml2ZXJzaXR5IGRlc2VydmUgcHJlY2lzZWx5IHRoZSBzYW1lIGRpc2NvdW50cyBhcyB0aGVpciB5b3VuZ2VyIGNsYXNzbWF0ZXMuIExldCBtZSBsYXkgb3V0IHdoeS4gTXkgZmlyc3QgYW5kIHNpbXBsZXN0IHJlYXNvbiBpcyB0aGF0IGEgc3R1ZGVudCBpcyBhIHN0dWRlbnQsIGZ1bGwgc3RvcC4gV2hldGhlciB5b3UgYXJlIGVpZ2h0ZWVuIG9yIGZvcnR5LWVpZ2h0LCBpZiB5b3UgYXJlIGVucm9sbGVkIGF0IHRoZSB1bml2ZXJzaXR5IHlvdSBwYXkgdGhlIHNhbWUgdHVpdGlvbiwgYnV5IHRoZSBzYW1lIG92ZXJwcmljZWQgdGV4dGJvb2tzLCBhbmQgc2l0IGluIHRoZSBzYW1lIGxlY3R1cmUgaGFsbHMuIFRoZSBkaXNjb3VudCBpcyB0aWVkIHRvIGJlaW5nIGEgc3R1ZGVudCwgbm90IHRvIGJlaW5nIHlvdW5nLCBzbyBhZ2Ugc2hvdWxkIGJlIGlycmVsZXZhbnQuIFNlY29uZCwgbWF0dXJlIHN0dWRlbnRzIGFyZSBvZnRlbiBpbiBhIHRpZ2h0ZXIgZmluYW5jaWFsIHBvc2l0aW9uLCBub3QgYSBsb29zZXIgb25lLiBNYW55IGhhdmUgcXVpdCBvciBzY2FsZWQgYmFjayB0aGVpciBqb2JzIHRvIHN0dWR5LCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaXZpbmcgb24gc2F2aW5ncywgbG9hbnMgb3IgYSBkcmFzdGljYWxseSByZWR1Y2VkIGluY29tZSwgZnJlcXVlbnRseSB3aGlsZSBzdGlsbCBzaG91bGRlcmluZyBhZHVsdCByZXNwb25zaWJpbGl0aWVzIGxpa2UgcmVudCwgYmlsbHMgYW5kIGV2ZW4gY2hpbGRyZW4uIENoZWFwZXIgdHJhbnNpdCBwYXNzZXMsIGVudGVydGFpbm1lbnQgYW5kIGV2ZXJ5ZGF5IHByb2R1Y3RzIGFyZSBub3QgYSBsdXh1cnkgZm9yIHRoZW07IHRoZXkgYXJlIGEgZ2VudWluZSBoZWxwIHRoYXQgbGV0cyB0aGVtIHN0YXkgYWZsb2F0IGFuZCBjb25jZW50cmF0ZSBvbiB0aGVpciBzdHVkaWVzLiBUaGlyZCwgcmVmdXNpbmcgdGhlbSB0aGVzZSBwZXJrcyBwdXJlbHkgYmVjYXVzZSBvZiB0aGVpciBhZ2Ugc3RyaWtlcyBtZSBhcyBwbGFpbiB1bmZhaXIsIGFyZ3VhYmx5IGEgZm9ybSBvZiBhZ2UgZGlzY3JpbWluYXRpb24sIGFuZCBpdCB3b3VsZCBhbHNvIGRpc2NvdXJhZ2UgZXhhY3RseSB0aGUga2luZCBvZiBsaWZlbG9uZyBsZWFybmluZyB0aGF0IHNvY2lldHkgY2xhaW1zIHRvIHZhbHVlLiBJIHdpbGwgZ3JhbnQgb25lIGRpc3RpbmN0aW9uOiBzb21lb25lIHdobyBpcyBjb21mb3J0YWJseSByZXRpcmVkIG9uIGEgZ2VuZXJvdXMgcGVuc2lvbiBhbmQgbWVyZWx5IHRha2luZyBhIGNvdXJzZSBmb3IgZnVuIGlzIGEgZGlmZmVyZW50IGNhc2UuIEJ1dCBhIHNlcmlvdXMsIGVucm9sbGVkIHN0dWRlbnQgd2hvIGlzIHN0cnVnZ2xpbmcgdG8gbWFrZSBlbmRzIG1lZXQgZGVzZXJ2ZXMgdGhlIHNhbWUgc3VwcG9ydCBhcyBhbnlvbmUgZWxzZSBvbiBjYW1wdXMuIER1cmluZyB0aGVpciBzdHVkaWVzLCBhbGwgc3R1ZGVudHMgc2hvdWxkIHNpbXBseSBiZSB0cmVhdGVkIGVxdWFsbHksIGFuZCB0aGF0IGlzIHRoZSBmYWlyIGFuZCBzZW5zaWJsZSBwb2xpY3kuIn0seyJrIjoidDgiLCJudW0iOjgsInR5cGVFbiI6IkRlc2NyaWJpbmcgYW4gVW51c3VhbCBTaXR1YXRpb24iLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiWW91IGFyZSBhdCBhIHNob2Ugc3RvcmUgYW5kIHlvdSBzZWUgYSBwYWlyIG9mIGludGVyZXN0aW5nIHNob2VzIHRoYXQgeW91ciBzaXN0ZXIsIEpvc2llLCBtaWdodCBsaWtlLiBDYWxsIEpvc2llIGFuZCBkZXNjcmliZSBpbiBkZXRhaWwgd2hhdCB0aGUgc2hvZXMgbG9vayBsaWtlLiBBc2sgaGVyIGlmIHNoZSB3b3VsZCBsaWtlIHRvIGJ1eSB0aGVtLiIsImltZyI6InVudXN1YWwiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhpcyBpcyBhIFBIT05FIENBTEw6IGdyZWV0IHRoZSByaWdodCBwZXJzb24gKHRoZSBwb2xpY2UgLyB5b3VyIGZyaWVuZCksIHRoZW4gc2F5IHdoZXJlIHlvdSBhcmUuIiwiRGVzY3JpYmUgZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljOyB0aGUgcGljdHVyZSBpcyBtZWFudCB0byBiZSBzdHJhbmdlIFx1MjAxNCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IHNlZSwgdXNpbmcgJ0l0IGxvb2tzIGxpa2UgLyBhcyBpZlx1MjAyNicuIiwiRW5kIHdpdGggYSByZXF1ZXN0IGZvciBhY3Rpb24gKHNlbmQgYSBwYXRyb2wgLyBhc2sgd2hlcmUgdG8gYnV5KS4iLCJUaGlzIGlzIGEgcGhvbmUgY2FsbCB0byB5b3VyIHNpc3RlciBKb3NpZSBhYm91dCBhIHdpbGQgcGFpciBvZiBzaG9lcyB5b3UgaGF2ZSBzcG90dGVkIGluIGEgc2hvZSBzdG9yZS4gRGVzY3JpYmUgdGhlIGFjdHVhbCBzaG9lIG9uIGl0cyBsaXR0bGUgcmVkIHBlZGVzdGFsOiBpdCBpcyBhIGhpZ2ggaGVlbCBsaWtlIG5vdGhpbmcgeW91IGhhdmUgc2VlbiwgZG9uZSBpbiBhIHN0ZWFtcHVuayBzdHlsZSwgY292ZXJlZCBpbiBzaGlueSBjb3BwZXIgYW5kIGJyb256ZSBnZWFycyBhbmQgY29ncyB0aGF0IGxvb2sgbGlrZSB0aGV5IGNvdWxkIGFjdHVhbGx5IHR1cm4sIHdpdGggYSBjdXJ2ZWQgZ29sZCBib2R5LCBzcGxhc2hlcyBvZiBicmlnaHQgcGluaywgZ3JlZW4gYW5kIG9yYW5nZSwgYW5kIGEgZ2xpdHRlcnkgbWFnZW50YSBzb2xlLiBBcm91bmQgaXQgeW91IGNhbiBzZWUgbW9yZSBvcmRpbmFyeSBzaG9lcywgYmxhY2sgaGlnaCBoZWVscyBhbmQgZGFyayByZWQgcHVtcHMgb24gdGhlIHNoZWx2ZXMuIFRlbGwgaGVyIGl0IGlzIHF1aXJreSwgb25lLW9mLWEta2luZCBhbmQgdG90YWxseSBoZXIgc3R5bGUsIGFuZCBhc2sgaWYgc2hlIHdhbnRzIHlvdSB0byBidXkgdGhlbS4iXSwicGhyYXNlcyI6WyJJJ20gY2FsbGluZyB0byByZXBvcnRcdTIwMjYiLCJQaWN0dXJlIHRoaXM6IFx1MjAyNiIsIkl0IGxvb2tzIGFzIGlmXHUyMDI2IiwiQ291bGQgeW91IHNlbmRcdTIwMjYgLyBEbyB5b3Uga25vdyB3aGVyZVx1MjAyNj8iXX0sInM2IjoiSGV5IEpvc2llLCBpdCdzIG1lISBJIGFtIGluIGEgc2hvZSBzdG9yZSByaWdodCBub3csIGFuZCBJIGZvdW5kIHRoZSBjcmF6aWVzdCwgY29vbGVzdCBwYWlyIG9mIHNob2VzLCBhbmQgSSB0aG91Z2h0IG9mIHlvdSBpbW1lZGlhdGVseS4gWW91IGhhdmUgdG8gaGVhciB0aGlzLiBJdCBpcyBvbmUgc2hvZSBvbiBhIGxpdHRsZSByZWQgc3RhbmQsIGxpa2UgaXQgaXMgYSBwaWVjZSBvZiBhcnQuIEl0IGlzIGEgaGlnaCBoZWVsLCBidXQgbm90IGEgbm9ybWFsIG9uZSBhdCBhbGwuIEl0IGxvb2tzIGxpa2UgYSBzdGVhbXB1bmsgbWFjaGluZSEgVGhlIHdob2xlIHNob2UgaXMgY292ZXJlZCBpbiBzaGlueSBtZXRhbCBnZWFycyBhbmQgY29ncywgaW4gY29wcGVyIGFuZCBicm9uemUgY29sb3VycywgYW5kIHRoZXkgbG9vayBsaWtlIHRoZXkgY2FuIHJlYWxseSB0dXJuIGFyb3VuZC4gVGhlIGJvZHkgb2YgdGhlIHNob2UgaXMgY3VydmVkIGFuZCBnb2xkZW4sIGFuZCB0aGVyZSBhcmUgYnJpZ2h0IHNwbGFzaGVzIG9mIGNvbG91ciBvbiBpdCwgcGluaywgZ3JlZW4sIGFuZCBvcmFuZ2UuIEFuZCB0aGUgYm90dG9tLCB0aGUgc29sZSwgaXMgYSBzcGFya2x5IHBpbmsgY29sb3VyISBJdCBpcyBzbyB1bnVzdWFsIGFuZCBhcnRpc3RpYy4gQXJvdW5kIGl0LCBJIGNhbiBzZWUgdGhlIG5vcm1hbCBzaG9lcywgc29tZSBibGFjayBoaWdoIGhlZWxzIGFuZCBzb21lIGRhcmsgcmVkIG9uZXMsIGJ1dCB0aGlzIGNyYXp5IG9uZSBpcyB0aGUgc3Rhci4gSSBrbm93IGhvdyBtdWNoIHlvdSBsb3ZlIHVuaXF1ZSwgb25lLW9mLWEta2luZCBmYXNoaW9uLCBhbmQgdGhpcyBpcyB0b3RhbGx5IHlvdXIgc3R5bGUuIE5vYm9keSBlbHNlIHdvdWxkIGhhdmUgc2hvZXMgbGlrZSB0aGVzZSEgU28sIGRvIHlvdSB3YW50IHRoZW0\/IFNob3VsZCBJIGJ1eSB0aGlzIGFtYXppbmcgcGFpciBmb3IgeW91IHJpZ2h0IG5vdz8gSnVzdCBzYXkgeWVzIGFuZCB0aGV5IGFyZSB5b3VycyEiLCJzOSI6Ikpvc2llLCBpdCdzIG1lLCB5b3UgYXJlIG5vdCBnb2luZyB0byBiZWxpZXZlIHdoYXQgSSBhbSBsb29raW5nIGF0ISBJIGFtIGluIGEgc2hvZSBzdG9yZSwgYW5kIHRoZXJlIGlzIGEgcGFpciBvZiBzaG9lcyBoZXJlIHNvIHdpbGQgYW5kIHNvIHlvdSB0aGF0IEkgaGFkIHRvIGNhbGwgYmVmb3JlIEkgZGlkIGFueXRoaW5nLiBQaWN0dXJlIHRoaXM6IGl0IGlzIGRpc3BsYXllZCBhbGwgb24gaXRzIG93biBvbiBhIGxpdHRsZSByZWQgcGVkZXN0YWwsIGxpa2UgYSBzY3VscHR1cmUgaW4gYSBnYWxsZXJ5IHJhdGhlciB0aGFuIHNvbWV0aGluZyB5b3Ugd291bGQgYWN0dWFsbHkgd2Vhci4gSXQgaXMgYSBoaWdoIGhlZWwsIGJ1dCB1bmxpa2UgYW55IGhlZWwgeW91IGhhdmUgZXZlciBzZWVuLCBpdCBpcyBwdXJlIHN0ZWFtcHVuay4gVGhlIGVudGlyZSBzaG9lIGlzIGVuY3J1c3RlZCB3aXRoIHNoaW55IG1ldGFsIGdlYXJzIGFuZCBjb2dzIGluIHdhcm0gY29wcGVyIGFuZCBicm9uemUgdG9uZXMsIGFuZCBJIHN3ZWFyIHRoZXkgbG9vayBsaWtlIHRoZXkgY291bGQgZ2VudWluZWx5IHNwaW4uIFRoZSBib2R5IGN1cnZlcyB1cCBpbiBnbGVhbWluZyBnb2xkLCBhbmQgaXQgaXMgc3BsYXNoZWQgd2l0aCBmbGFzaGVzIG9mIGJyaWdodCBwaW5rLCBncmVlbiBhbmQgb3JhbmdlLCB3aGlsZSB0aGUgc29sZSB1bmRlcm5lYXRoIGdsaXR0ZXJzIGluIGEgYm9sZCBtYWdlbnRhLiBJdCBpcyBwYXJ0IHNob2UsIHBhcnQgbWFjaGluZSwgcGFydCB3b3JrIG9mIGFydCwgYW5kIHlvdSBjYW4gZXZlbiBzcG90IHRpbnkgY29sb3VyZWQgd2lyZXMgYW5kIHNwcmluZ3MgcGVla2luZyBvdXQgYmV0d2VlbiB0aGUgZ2VhcnMuIEFsbCBhcm91bmQgaXQgb24gdGhlIHNoZWx2ZXMgc2l0IHRoZSBub3JtYWwgb3B0aW9ucywgc2Vuc2libGUgYmxhY2sgaGlnaCBoZWVscywgYSBmZXcgZGFyayByZWQgcHVtcHMsIGJ1dCB0aGV5IGxvb2sgdXR0ZXJseSBib3JpbmcgbmV4dCB0byB0aGlzIHRoaW5nLiBJdCBpcyBleGFjdGx5IHlvdXIga2luZCBvZiBzdGF0ZW1lbnQgcGllY2U6IHF1aXJreSwgb25lLW9mLWEta2luZCwgYW5kIGd1YXJhbnRlZWQgdG8gbWFrZSBldmVyeW9uZSBhc2sgd2hlcmUgeW91IGdvdCB0aGVtLiBJIGdlbnVpbmVseSBjYW5ub3QgdGhpbmsgb2YgYW55b25lIGVsc2Ugd2hvIGNvdWxkIHB1bGwgdGhlc2Ugb2ZmLiBTbyBoZXJlIGlzIHRoZSBiaWcgcXVlc3Rpb246IGRvIHlvdSB3YW50IHRoZW0\/IFNheSB0aGUgd29yZCBhbmQgSSB3aWxsIHRha2UgdGhlbSBzdHJhaWdodCB0byB0aGUgdGlsbCBhbmQgdGhleSBhcmUgeW91cnMuIFNoYWxsIEkgZ3JhYiB0aGVtPyJ9XSwidWkiOnsic3RhcnRUZXN0IjoiU3RhcnQgdGhlIHRlc3QiLCJtaWNFbmFibGUiOiJFbmFibGUgbWljcm9waG9uZSIsIm1pY1JlYWR5IjoiTWljcm9waG9uZSByZWFkeSIsIm1pY0Jsb2NrZWQiOiJNaWNyb3Bob25lIGlzIGJsb2NrZWQgb3IgdW5hdmFpbGFibGUgXHUyMDE0IHRoZSBwYWdlIHdpbGwgcnVuIGluIHRpbWVyLW9ubHkgbW9kZSAoeW91IGNhbiBzdGlsbCBwcmFjdGlzZSBzcGVha2luZyBhbG9uZyB3aXRoIHRoZSB0aW1lcnMpLiIsIm1pY05vdGUiOiJSZWNvcmRpbmdzIGFyZSBzdG9yZWQgdGVtcG9yYXJpbHkgaW4geW91ciBicm93c2VyIG9ubHkgXHUyMDE0IG5vdGhpbmcgaXMgdXBsb2FkZWQgdG8gYW55IHNlcnZlci4gVGhleSBhcmUgbG9zdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFnZSwgc28gZG93bmxvYWQgYW55IHlvdSB3YW50IHRvIGtlZXAuIiwicHJlcFRpdGxlIjoiUHJlcGFyYXRpb24gVGltZSIsInJlY1RpdGxlIjoiUmVjb3JkaW5nIiwic3RhcnRQcmVwIjoiXHUyNWI2IFN0YXJ0IHByZXBhcmF0aW9uIiwic2tpcFByZXAiOiJTa2lwIFx1MjAxNCByZWNvcmQgbm93IFx1MDBiYiIsInN0b3BSZWMiOiJcdTI1YTAgU3RvcCByZWNvcmRpbmciLCJyZWNvcmRlZCI6IlJlY29yZGVkIiwicmVSZWNvcmQiOiJcdTIxYmIgUmVjb3JkIGFnYWluIiwiZG93bmxvYWQiOiJcdTJiMDcgRG93bmxvYWQiLCJ0aW1lck9ubHkiOiJUaW1lci1vbmx5IG1vZGUgKG5vdCByZWNvcmRpbmcpIiwic3BlYWtOb3ciOiJTUEVBSyBOT1cgXHUyMDE0IHJlY29yZGluZyBzdG9wcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGltZSBpcyB1cCIsIm5leHQiOiJORVhUIiwiY2hvb3NlSGludCI6IkNsaWNrIHRvIGNob29zZSBvbmUgb3B0aW9uIFx1MjAxNCBpZiB0aGUgNjAgc2Vjb25kcyBydW4gb3V0LCB0aGUgc3lzdGVtIGNob29zZXMgZm9yIHlvdSIsImNvbmZpcm1DaG9pY2UiOiJDb25maXJtIGNob2ljZSAmIGNvbnRpbnVlIFx1MDBiYiIsInlvdXJDaG9pY2UiOiJZb3VyIENob2ljZSIsInRpcHNUb2dnbGUiOiJcdWQ4M2RcdWRjYTEgVGlwcyAmIHNhbXBsZSBhbnN3ZXJzIChvcGVuIGFmdGVyIHlvdSBmaW5pc2ggc3BlYWtpbmcpIiwidGFiVGlwcyI6Ik91dGxpbmUgJiBwaHJhc2VzIiwidGFiUzYiOiJTYW1wbGUgQ0xCIDYiLCJ0YWJTOSI6IlNhbXBsZSBDTEIgOSIsInRhYlJ1YnJpYyI6IlNlbGYtYXNzZXNzbWVudCIsInJ1YnJpY05vdGUiOiJMaXN0ZW4gdG8geW91ciByZWNvcmRpbmcsIHRoZW4gcmF0ZSB5b3Vyc2VsZiAxXHUyMDEzNSBvbiBlYWNoIGNyaXRlcmlvbiAodGhlIDQgb2ZmaWNpYWwgQ0VMUElQIHJhdGluZyBkaW1lbnNpb25zKToiLCJydWJyaWNDcml0IjpbIkNvbnRlbnQgJiBDb2hlcmVuY2UgXHUyMDE0IGNvbXBsZXRlIGlkZWFzLCBsb2dpY2FsIGZsb3ciLCJWb2NhYnVsYXJ5IFx1MjAxNCByYW5nZSBhbmQgcHJlY2lzaW9uIiwiTGlzdGVuYWJpbGl0eSBcdTIwMTQgcHJvbnVuY2lhdGlvbiwgaW50b25hdGlvbiwgZmx1ZW5jeSIsIlRhc2sgRnVsZmlsbG1lbnQgXHUyMDE0IGFkZHJlc3NlcyB0aGUgdGFzaywgYXBwcm9wcmlhdGUgbGVuZ3RoIl0sImVzdGltYXRlIjoiRXN0aW1hdGVkIGxldmVsIChmb3IgcmVmZXJlbmNlKToiLCJlc3REaXNjbGFpbWVyIjoiU2VsZi1hc3Nlc3NtZW50IGlzIGEgcm91Z2ggZ3VpZGUgb25seSBcdTIwMTQgaXQgZG9lcyBub3QgcmVwbGFjZSBhbiBvZmZpY2lhbCBzY29yZS4iLCJ1c2VmdWxQaHJhc2VzIjoiVXNlZnVsIHBocmFzZXMiLCJlbmRUaXRsZSI6IlNwZWFraW5nIHRlc3QgY29tcGxldGUhIiwiZW5kU3ViIjoiUmVwbGF5IGVhY2ggdGFzaywgY29tcGFyZSB5b3VyIGFuc3dlcnMgd2l0aCB0aGUgQ0xCIDYgLyBDTEIgOSBzYW1wbGVzLCB0aGVuIHJhdGUgeW91cnNlbGYuIiwiZW5kTm9SZWMiOiJub3QgcmVjb3JkZWQiLCJlbmRSZWRvIjoiXHUyMWJiIFN0YXJ0IG92ZXIiLCJlbmRUMiI6IkNvbnRpbnVlIHRvIFByYWN0aWNlIFRlc3QiLCJlbmRIdWIiOiJcdTIxOTAgQmFjayB0byBDRUxQSVAgSHViIiwid2FybXVwQmFkZ2UiOiJXYXJtLXVwIFx1MjAxNCBub3Qgc2NvcmVkIiwiaW50cm9Ob3RlcyI6WyJBbiBhY2N1cmF0ZSBzaW11bGF0aW9uIG9mIHRoZSByZWFsIENFTFBJUCBHZW5lcmFsIFNwZWFraW5nIHRlc3Q6IDEgcHJhY3RpY2UgKHdhcm0tdXApIHRhc2sgKyA4IHNjb3JlZCB0YXNrcywgYWJvdXQgMjAgbWludXRlcyBpbiB0b3RhbC4iLCJFYWNoIHRhc2s6IHJlYWQgdGhlIHByb21wdCBcdTIxOTIgPGI+UHJlcGFyYXRpb248L2I+IGNvdW50ZG93biBcdTIxOTIgc3dpdGNoZXMgYXV0b21hdGljYWxseSB0byA8Yj5SZWNvcmRpbmc8L2I+ICh3aXRoIGEgYmVlcCkgXHUyMTkyIHN0b3BzIHdoZW4gdGltZSBpcyB1cC4iLCJPbiB0aGUgcmVhbCB0ZXN0IHlvdSBjYW5ub3QgZ28gYmFjayB0byBhIHByZXZpb3VzIHRhc2suIEluIHByYWN0aWNlIG1vZGUsIHlvdSBjYW4gY2xpY2sgdGhlIG51bWJlcmVkIGNoaXBzIGFib3ZlIHRvIHJldmlzaXQgYW55IHRhc2suIiwiQWZ0ZXIgc3BlYWtpbmcgb24gZWFjaCB0YXNrLCBvcGVuIDxiPlRpcHMgJiBzYW1wbGUgYW5zd2VyczwvYj4gdG8gY29tcGFyZSB5b3VyIHJlc3BvbnNlIHdpdGggdGhlIENMQiA2IGFuZCBDTEIgOSBzYW1wbGVzLiJdLCJoZXJvVGFnIjoiQ0VMUElQIEdlbmVyYWwgXHUyMDE0IFNwZWFraW5nIiwiaGVyb01ldGEiOlsiOCB0YXNrcyArIHdhcm0tdXAiLCJ+MjAgbWludXRlcyIsIlJlY29yZCAmIHJlcGxheSIsIkNMQiA2IC8gQ0xCIDkgc2FtcGxlcyJdfX07Ci8qIENFTFBJUCBTcGVha2luZyBFbmdpbmUgdjEuMCAtIEFsbEVuZ2xpc2g0VSAtIHZhbmlsbGEgSlMsIHByZWZpeCBjbHAtc3BrICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CnZhciBEID0gd2luZG93LkNMUFNQS19EQVRBLCBVID0gRC51aTsKdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwLXNway1yb290Iik7CmlmKCFyb290KSByZXR1cm47CgovKiAtLS0tLS0tLS0tIHN0eWxlIC0tLS0tLS0tLS0gKi8KdmFyIENTUyA9ICIiKwoiLmNscC1zcGstd3JhcHttYXgtd2lkdGg6MTE0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowIDE0cHggNjBweDtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMyMzI3MmQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0iKwoiLmNscC1zcGstd3JhcCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0iKwoiLmNscC1zcGstaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdmMWQxZCAwJSwjYjkxYzFjIDU1JSwjZGMyNjI2IDEwMCUpO2JvcmRlci1yYWRpdXM6MThweDtjb2xvcjojZmZmO3BhZGRpbmc6MzBweCAzMHB4IDI2cHg7bWFyZ2luOjE4cHggMCAyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstaGVybzphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi02MHB4O3RvcDotNjBweDt3aWR0aDoyMjBweDtoZWlnaHQ6MjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9IisKIi5jbHAtc3BrLWhlcm8gLnRhZ3tkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE2KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjM1KTtwYWRkaW5nOjNweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouNnB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstaGVybyBoMXttYXJnaW46MTBweCAwIDZweDtmb250LXNpemU6MjdweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGF7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDoxMnB4fSIrCiIuY2xwLXNway1oZXJvIC5tZXRhIHNwYW57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yMik7cGFkZGluZzo0cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHh9IisKIi5jbHAtc3BrLWNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbjowIDAgMTRweH0iKwoiLmNscC1zcGstY2hpcHttaW4td2lkdGg6MzhweDtoZWlnaHQ6MzRweDtib3JkZXItcmFkaXVzOjlweDtib3JkZXI6MS41cHggc29saWQgI2QzZDhkZjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzViNjU3MjtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMTBweH0iKwoiLmNscC1zcGstY2hpcC5jdXJ7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWNoaXAuZG9uZXtiYWNrZ3JvdW5kOiNlNmY0ZWE7Ym9yZGVyLWNvbG9yOiM3YmMzOTQ7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstcGFuZWx7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDMwLDQwLDYwLC4wNil9IisKIi5jbHAtc3BrLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2JhY2tncm91bmQ6I2VjZWNlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDVkNWQ4O3BhZGRpbmc6OXB4IDE0cHg7ZmxleC13cmFwOndyYXB9IisKIi5jbHAtc3BrLWJhciAudHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojM2M0MDQ2fSIrCiIuY2xwLXNway1iYXIgLm17bWFyZ2luLWxlZnQ6YXV0bztmb250LXNpemU6MTIuNXB4O2NvbG9yOiM1NTU7d2hpdGUtc3BhY2U6bm93cmFwfSIrCiIuY2xwLXNway1iYXIgLm0gYntjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1uZXh0e2JhY2tncm91bmQ6IzE0NjdjNjtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi44cHg7cGFkZGluZzo3cHggMThweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstbmV4dDpob3ZlcntiYWNrZ3JvdW5kOiMwZjU3YWJ9IisKIi5jbHAtc3BrLWJvZHl7cGFkZGluZzoxOHB4IDIwcHggMjJweH0iKwoiLmNscC1zcGstcHJvbXB0e2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNS41cHg7bGluZS1oZWlnaHQ6MS41fSIrCiIuY2xwLXNway1wcm9tcHQgLml7ZmxleDowIDAgYXV0bzt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6IzJjN2NiMDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoycHh9IisKIi5jbHAtc3BrLWxlYWR7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo0cHh9IisKIi5jbHAtc3BrLWNob29zZTF7bWFyZ2luOjE0cHggMCAwO3BhZGRpbmc6MTJweCAxNnB4O2JhY2tncm91bmQ6I2Y1ZjdmYTtib3JkZXI6MXB4IHNvbGlkICNkZmU0ZWE7Ym9yZGVyLXJhZGl1czo5cHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjU1fSIrCiIuY2xwLXNway1jaG9vc2UxIC5le2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojOGExZjFmO2xldHRlci1zcGFjaW5nOi40cHh9IisKIi5jbHAtc3BrLWltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDo1NDBweDt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2NmZDRkYTtib3JkZXItcmFkaXVzOjhweDttYXJnaW46MTZweCAwIDRweH0iKwoiLmNscC1zcGstbm90ZXtmb250LXNpemU6MTJweDtjb2xvcjojOGE5MjljO21hcmdpbi10b3A6NnB4fSIrCiIuY2xwLXNway10aW1lcnJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MjBweCAwIDZweH0iKwoiLmNscC1zcGstdGltZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDtiYWNrZ3JvdW5kOiNlOWVjZWY7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMjZweDttaW4td2lkdGg6MzAwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIgLmlje3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIycHh9IisKIi5jbHAtc3BrLXRpbWVyIC5sYntmb250LXdlaWdodDo3MDA7Y29sb3I6IzMzMzgzZjtmb250LXNpemU6MTVweH0iKwoiLmNscC1zcGstdGltZXIgLm57Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMwYjU3ZDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO21pbi13aWR0aDo1MnB4O3RleHQtYWxpZ246Y2VudGVyfSIrCiIuY2xwLXNway10aW1lci5yZWN7YmFja2dyb3VuZDojZmRlY2ViO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway10aW1lci5yZWMgLm57Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstdGltZXIucmVjIC5pY3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLWRvdHt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2U1MzkzNTtkaXNwbGF5OmlubGluZS1ibG9jazthbmltYXRpb246Y2xwYmxpbmsgMXMgaW5maW5pdGV9IisKIkBrZXlmcmFtZXMgY2xwYmxpbmt7MCUsMTAwJXtvcGFjaXR5OjF9NTAle29wYWNpdHk6LjI1fX0iKwoiLmNscC1zcGstY3Rye2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjoxNHB4IDAgMnB4fSIrCiIuY2xwLXNway1idG57Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzM4M2Y7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzo5cHggMThweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYnRuOmhvdmVye2JvcmRlci1jb2xvcjojOWFhM2FkfSIrCiIuY2xwLXNway1idG4ucHJpe2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1idG4ucHJpOmhvdmVye2JhY2tncm91bmQ6IzBhNGNiNX0iKwoiLmNscC1zcGstYnRuLndhcm57YmFja2dyb3VuZDojYzYyODI4O2JvcmRlci1jb2xvcjojYzYyODI4O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXNwZWFrbm93e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNjNjI4Mjg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6OHB4O2xldHRlci1zcGFjaW5nOi4zcHh9IisKIi5jbHAtc3BrLXJldmlld3ttYXJnaW46MTZweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2YyZjlmMztib3JkZXI6MXB4IHNvbGlkICNiZmUzYzY7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxOHB4fSIrCiIuY2xwLXNway1yZXZpZXcgLm9re2NvbG9yOiMxZTdiM2U7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNC41cHh9IisKIi5jbHAtc3BrLXJldmlldyBhdWRpb3t3aWR0aDoxMDAlO21hcmdpbjoxMHB4IDAgOHB4fSIrCiIuY2xwLXNway1taWN7bWFyZ2luOjEycHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmZmY4ZTY7Ym9yZGVyOjFweCBzb2xpZCAjZWNkOWEwO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MTNweDtjb2xvcjojN2E1YjEyfSIrCiIuY2xwLXNway1vcHRze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTZweDttYXJnaW46MThweCAwIDRweH0iKwoiLmNscC1zcGstY2FyZHtib3JkZXI6MnB4IHNvbGlkICNkNWRhZTA7Ym9yZGVyLXJhZGl1czoxMXB4O3BhZGRpbmc6MTNweCAxNXB4IDE1cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmZmO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9IisKIi5jbHAtc3BrLWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM4ZmI0ZTh9IisKIi5jbHAtc3BrLWNhcmQuc2Vse2JvcmRlci1jb2xvcjojMmU5ZTRmO2JhY2tncm91bmQ6I2VlZjlmMH0iKwoiLmNscC1zcGstY2FyZC5wbGFpbntjdXJzb3I6ZGVmYXVsdH0iKwoiLmNscC1zcGstY2FyZCAuaGR7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzZiNzQ4MDtsZXR0ZXItc3BhY2luZzouM3B4O21hcmdpbi1ib3R0b206OHB4fSIrCiIuY2xwLXNway1jYXJkIGltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6N3B4O2JvcmRlcjoxcHggc29saWQgI2UyZTZlYX0iKwoiLmNscC1zcGstY2FyZCAudHR7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjoxMHB4IDAgNnB4O2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLWNhcmQgdWx7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE4cHg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOiMzYzQzNGJ9IisKIi5jbHAtc3BrLWNhcmQgLnBpY2t7bWFyZ2luLXRvcDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMmU5ZTRmO2ZvbnQtc2l6ZToxM3B4O21pbi1oZWlnaHQ6MThweH0iKwoiLmNscC1zcGstaGludHt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojNmI3NDgwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstYWNje21hcmdpbi10b3A6MjJweDtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMXB4O292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstYWNjPmJ1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjA7cGFkZGluZzoxMnB4IDE2cHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMzYzQwNDY7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpub25lO3BhZGRpbmc6MTRweCAxNnB4IDE4cHg7YmFja2dyb3VuZDojZmZmfSIrCiIuY2xwLXNway1hY2Mub3BlbiAuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnN7ZGlzcGxheTpmbGV4O2dhcDo2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMnB4fSIrCiIuY2xwLXNway10YWJ7Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTVweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNGE1MjVjfSIrCiIuY2xwLXNway10YWIub257YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXRhYnBhbmV7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42NX0iKwoiLmNscC1zcGstdGFicGFuZS5vbntkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJwYW5lIHVse3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbjo4cHggMH0iKwoiLmNscC1zcGstdGFicGFuZSBsaXttYXJnaW46NXB4IDB9IisKIi5jbHAtc3BrLXNhbXBsZXtiYWNrZ3JvdW5kOiNmOGY5ZmI7Ym9yZGVyOjFweCBzb2xpZCAjZTNlN2VjO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMGI1N2QwO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTNweCAxNnB4O3doaXRlLXNwYWNlOnByZS13cmFwfSIrCiIuY2xwLXNway1zYW1wbGUuczZ7Ym9yZGVyLWxlZnQtY29sb3I6I2U4YTEzY30iKwoiLmNscC1zcGstcGhye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstcGhyIHNwYW57YmFja2dyb3VuZDojZWVmM2ZiO2JvcmRlcjoxcHggc29saWQgI2NkZGRmNTtjb2xvcjojMTc0YTljO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo0cHggMTJweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstcnVie2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLXJ1YiB0ZHtwYWRkaW5nOjdweCA2cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZjBmM30iKwoiLmNscC1zcGstc3RhcntjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTlweDtjb2xvcjojYzljZmQ2O3BhZGRpbmc6MCAxcHg7dXNlci1zZWxlY3Q6bm9uZX0iKwoiLmNscC1zcGstc3Rhci5vbntjb2xvcjojZjBhNzFifSIrCiIuY2xwLXNway1lc3R7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZThkNDhiO2NvbG9yOiM3YTViMTI7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMTJweDttYXJnaW4tYm90dG9tOjEwcHh9IisKIi5jbHAtc3BrLWludHJvIHVse2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS43O3BhZGRpbmctbGVmdDoyMHB4fSIrCiIuY2xwLXNway1pbnRybyBsaXttYXJnaW46N3B4IDB9IisKIi5jbHAtc3BrLW1pY3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MXB4IHNvbGlkICNlMGU0ZTk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweCAxNnB4O21hcmdpbjoxNnB4IDB9IisKIi5jbHAtc3BrLW1pY3N0e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1taWNzdC5va3tjb2xvcjojMWU3YjNlfS5jbHAtc3BrLW1pY3N0LmJhZHtjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway1lbmQgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjE0cHh9IisKIi5jbHAtc3BrLWVuZCB0ZCwuY2xwLXNway1lbmQgdGh7cGFkZGluZzo5cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VmZjI7dGV4dC1hbGlnbjpsZWZ0fSIrCiIuY2xwLXNway1lbmQgYXVkaW97aGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjIzMHB4fSIrCiJAbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsuY2xwLXNway1vcHRze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNscC1zcGstYmFyIC5te29yZGVyOjM7bWFyZ2luLWxlZnQ6MDt3aWR0aDoxMDAlfS5jbHAtc3BrLWhlcm8gaDF7Zm9udC1zaXplOjIycHh9LmNscC1zcGstYm9keXtwYWRkaW5nOjE0cHggMTJweCAxOHB4fX0iOwp2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CgovKiAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0gKi8KdmFyIFMgPSB7CiAgY3VyOiAtMSwgICAgICAgICAgICAvKiAtMSBpbnRybywgMC4uOCB0YXNrcywgOTkgZW5kICovCiAgbWljU3RhdGU6ICJpZGxlIiwgICAvKiBpZGxlfG9rfGJhZCAqLwogIHN0cmVhbTogbnVsbCwgcmVjb3JkZXI6IG51bGwsIGNodW5rczogW10sCiAgdGltZXI6IG51bGwsIHBoYXNlOiB7fSwgdDVjaG9pY2U6IHt9LCByZWNzOiB7fSwgcnVicmljOiB7fSwKICBtaW1lOiAiIiwgZXh0OiAid2VibSIKfTsKRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZCA\/ICJjaG9vc2UtaWRsZSIgOiAiaWRsZSI7IH0pOwoKZnVuY3Rpb24gcGlja01pbWUoKXsKICBpZighd2luZG93Lk1lZGlhUmVjb3JkZXIpIHJldHVybiBudWxsOwogIHZhciBjYW5kcyA9IFtbImF1ZGlvL3dlYm07Y29kZWNzPW9wdXMiLCJ3ZWJtIl0sWyJhdWRpby93ZWJtIiwid2VibSJdLFsiYXVkaW8vbXA0IiwibTRhIl0sWyJhdWRpby9vZ2c7Y29kZWNzPW9wdXMiLCJvZ2ciXV07CiAgZm9yKHZhciBpPTA7aTxjYW5kcy5sZW5ndGg7aSsrKXsgdHJ5eyBpZihNZWRpYVJlY29yZGVyLmlzVHlwZVN1cHBvcnRlZChjYW5kc1tpXVswXSkpIHJldHVybiBjYW5kc1tpXTsgfWNhdGNoKGUpe30gfQogIHJldHVybiBbIiIsIndlYm0iXTsKfQpmdW5jdGlvbiBlbnN1cmVNaWMoY2IpewogIGlmKFMubWljU3RhdGU9PT0ib2siKSByZXR1cm4gY2IodHJ1ZSk7CiAgaWYoUy5taWNTdGF0ZT09PSJiYWQiKSByZXR1cm4gY2IoZmFsc2UpOwogIGlmKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fCAhd2luZG93Lk1lZGlhUmVjb3JkZXIpeyBTLm1pY1N0YXRlPSJiYWQiOyByZXR1cm4gY2IoZmFsc2UpOyB9CiAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGZ1bmN0aW9uKHN0cmVhbSl7CiAgICBTLnN0cmVhbSA9IHN0cmVhbTsgdmFyIG0gPSBwaWNrTWltZSgpOyBTLm1pbWUgPSBtWzBdOyBTLmV4dCA9IG1bMV07IFMubWljU3RhdGU9Im9rIjsgY2IodHJ1ZSk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXsgUy5taWNTdGF0ZT0iYmFkIjsgY2IoZmFsc2UpOyB9KTsKfQpmdW5jdGlvbiBiZWVwKG4pewogIHRyeXsKICAgIHZhciBjdHggPSB3aW5kb3cuX19jbHBBQyA9IHdpbmRvdy5fX2NscEFDIHx8IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkoKTsKICAgIHZhciB0MCA9IGN0eC5jdXJyZW50VGltZTsKICAgIGZvcih2YXIgaT0wO2k8bjtpKyspewogICAgICB2YXIgbyA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCksIGcgPSBjdHguY3JlYXRlR2FpbigpOwogICAgICBvLmZyZXF1ZW5jeS52YWx1ZSA9IDg4MDsgby5jb25uZWN0KGcpOyBnLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTsKICAgICAgZy5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUpOyBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjE4LHQwK2kqMC4yNSswLjAyKTsKICAgICAgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSswLjE4KTsKICAgICAgby5zdGFydCh0MCtpKjAuMjUpOyBvLnN0b3AodDAraSowLjI1KzAuMik7CiAgICB9CiAgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBzdG9wVGltZXIoKXsgaWYoUy50aW1lcil7IGNsZWFySW50ZXJ2YWwoUy50aW1lcik7IFMudGltZXI9bnVsbDsgfSB9CmZ1bmN0aW9uIGNvdW50ZG93bihzZWNzLCBvblRpY2ssIG9uRW5kKXsKICBzdG9wVGltZXIoKTsKICB2YXIgZW5kID0gRGF0ZS5ub3coKSArIHNlY3MqMTAwMDsKICBvblRpY2soc2Vjcyk7CiAgUy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGVuZC1EYXRlLm5vdygpKS8xMDAwKSk7CiAgICBvblRpY2sobGVmdCk7CiAgICBpZihsZWZ0PD0wKXsgc3RvcFRpbWVyKCk7IG9uRW5kKCk7IH0KICB9LCAyNTApOwp9CmZ1bmN0aW9uIHN0b3BSZWNvcmRpbmcoKXsKICBpZihTLnJlY29yZGVyICYmIFMucmVjb3JkZXIuc3RhdGUhPT0iaW5hY3RpdmUiKXsgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpe30gfQogIFMucmVjb3JkZXIgPSBudWxsOwp9CmZ1bmN0aW9uIGxlYXZlQ2xlYW51cCgpeyBzdG9wVGltZXIoKTsgc3RvcFJlY29yZGluZygpOyB9CgovKiAtLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQpmdW5jdGlvbiBmbXRNZXRhKHQpewogIGlmKHQucGhhc2VkKSByZXR1cm4gIiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gdGFza1RpdGxlKHQpewogIGlmKHQud2FybXVwKSByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFByYWN0aWNlIFRhc2siOwogIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgVGFzayAiK3QubnVtKyI6ICIrdC50eXBlRW47Cn0KZnVuY3Rpb24gZXN0VGV4dChhdmcpewogIGlmKGF2Zz49NC41KSByZXR1cm4gIkNMQiA5KyI7IGlmKGF2Zz49My41KSByZXR1cm4gIkNMQiA3XHUyMDEzOCI7IGlmKGF2Zz49Mi41KSByZXR1cm4gIkNMQiA1XHUyMDEzNiI7IHJldHVybiAiQ0xCIDQgb3IgYmVsb3ciOwp9CgovKiAtLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHJlbmRlcigpewogIGxlYXZlQ2xlYW51cCgpOwogIHJvb3QuaW5uZXJIVE1MID0gIiI7CiAgdmFyIHdyYXAgPSBlbCgiZGl2IiwiY2xwLXNway13cmFwIik7CiAgd3JhcC5hcHBlbmRDaGlsZChoZXJvKCkpOwogIGlmKFMuY3VyPj0wICYmIFMuY3VyPEQudGFza3MubGVuZ3RoKSB3cmFwLmFwcGVuZENoaWxkKGNoaXBzKCkpOwogIGlmKFMuY3VyPT09LTEpIHdyYXAuYXBwZW5kQ2hpbGQoaW50cm8oKSk7CiAgZWxzZSBpZihTLmN1cj09PTk5KSB3cmFwLmFwcGVuZENoaWxkKGVuZFNjcmVlbigpKTsKICBlbHNlIHdyYXAuYXBwZW5kQ2hpbGQodGFza1BhbmVsKEQudGFza3NbUy5jdXJdKSk7CiAgcm9vdC5hcHBlbmRDaGlsZCh3cmFwKTsKICB0cnl7IHdpbmRvdy5zY3JvbGxUbyh7dG9wOiByb290Lm9mZnNldFRvcC0xMCwgYmVoYXZpb3I6InNtb290aCJ9KTsgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBoZXJvKCl7CiAgdmFyIGggPSBlbCgiZGl2IiwiY2xwLXNway1oZXJvIik7CiAgaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsInRhZyIsVS5oZXJvVGFnKSk7CiAgaC5hcHBlbmRDaGlsZChlbCgiaDEiLG51bGwsRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gPyAiU3BlYWtpbmcgXHUyMDE0IitELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA6IEQudGl0bGUpKTsKICB2YXIgbSA9IGVsKCJkaXYiLCJtZXRhIik7CiAgVS5oZXJvTWV0YS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBtLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgaC5hcHBlbmRDaGlsZChtKTsKICByZXR1cm4gaDsKfQpmdW5jdGlvbiBjaGlwcygpewogIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hpcHMiKTsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciBiID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKGk9PT1TLmN1cj8iIGN1ciI6KFMucmVjc1t0LmtdPyIgZG9uZSI6IiIpKSwgdC53YXJtdXA\/IlciOlN0cmluZyh0Lm51bSkpOwogICAgYi50aXRsZSA9IHQudHlwZUVuOwogICAgYi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICBjLmFwcGVuZENoaWxkKGIpOwogIH0pOwogIHZhciBlID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKFMuY3VyPT09OTk\/IiBjdXIiOiIiKSwiXHVkODNjXHVkZmMxIik7CiAgZS50aXRsZSA9ICJGaW5pc2giOyBlLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj05OTsgcmVuZGVyKCk7IH07CiAgYy5hcHBlbmRDaGlsZChlKTsKICByZXR1cm4gYzsKfQpmdW5jdGlvbiBpbnRybygpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1pbnRybyIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmciKSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsgbnguc3R5bGUubWFyZ2luTGVmdD0iYXV0byI7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7IHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLCJTcGVha2luZyBUZXN0IEluc3RydWN0aW9ucyIpKTsKICBiLmFwcGVuZENoaWxkKHByKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBVLmludHJvTm90ZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYi5hcHBlbmRDaGlsZCh1bCk7CiAgdmFyIG1pY3JvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLW1pY3JvdyIpOwogIHZhciBtYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5taWNFbmFibGUpOwogIHZhciBtc3QgPSBlbCgic3BhbiIsImNscC1zcGstbWljc3QiLCIiKTsKICBtYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgbWJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24ob2spewogICAgICBtc3QuY2xhc3NOYW1lID0gImNscC1zcGstbWljc3QgIisob2s\/Im9rIjoiYmFkIik7CiAgICAgIG1zdC5pbm5lckhUTUwgPSBvayA\/ICJcdTI3MTQgIitVLm1pY1JlYWR5IDogIlx1MjcxNiAiK1UubWljQmxvY2tlZDsKICAgICAgaWYoIW9rKSBtYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICB9KTsKICB9OwogIG1pY3Jvdy5hcHBlbmRDaGlsZChtYnRuKTsgbWljcm93LmFwcGVuZENoaWxkKG1zdCk7CiAgYi5hcHBlbmRDaGlsZChtaWNyb3cpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5taWNOb3RlKSk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRUZXN0KyIgXHUyNWI2Iik7CiAgZ28uc3R5bGUuZm9udFNpemU9IjE1cHgiOyBnby5zdHlsZS5wYWRkaW5nPSIxMnB4IDI2cHgiOwogIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBjdHIuYXBwZW5kQ2hpbGQoZ28pOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiAtLS0tLS0tLS0tIHRhc2sgcGFuZWwgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0YXNrUGFuZWwodCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0Iix0YXNrVGl0bGUodCkpKTsKICB2YXIgbWV0YSA9IGVsKCJzcGFuIiwibSIsIHQucGhhc2VkID8gcGhhc2VkTWV0YSh0KSA6IGZtdE1ldGEodCkpOwogIGJhci5hcHBlbmRDaGlsZChtZXRhKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1ciA9IChTLmN1cisxIDwgRC50YXNrcy5sZW5ndGgpID8gUy5jdXIrMSA6IDk5OyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBpZih0Lndhcm11cCkgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1iYWRnZSIsVS53YXJtdXBCYWRnZSkpOwogIGlmKHQucGhhc2VkKSByZW5kZXJUNSh0LGIsbWV0YSk7CiAgZWxzZSByZW5kZXJTdGQodCxiKTsKICBpZih0LnRpcHMpIGIuYXBwZW5kQ2hpbGQoYWNjb3JkaW9uKHQpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CmZ1bmN0aW9uIHBoYXNlZE1ldGEodCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdfHwiIjsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5jaG9vc2UucHJlcCsiIHNlY29uZHM8L2I+IjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3Quc3BlYWsucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnNwZWFrLnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiBwcm9tcHRSb3codGV4dCwgbGVhZCl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihsZWFkKXsgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWxlYWQiLGxlYWQpKTsgfQogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsdGV4dCkpOwogIGJveC5hcHBlbmRDaGlsZChwcik7CiAgcmV0dXJuIGJveDsKfQpmdW5jdGlvbiByZW5kZXJTdGQodCxiKXsKICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnByb21wdCwgdC5wcm9tcHRMZWFkKSk7CiAgaWYodC5jaG9vc2VPbmUpewogICAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaG9vc2UxIiwiPGRpdiBjbGFzcz0nZSc+Q2hvb3NlIE9ORTo8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPkVJVEhFUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVswXSsiPC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5PUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVsxXSsiPC9kaXY+Iik7CiAgICBiLmFwcGVuZENoaWxkKGMpOwogIH0KICBpZih0LmltZyAmJiBELmltZ3NbdC5pbWddKXsKICAgIHZhciBpbSA9IGVsKCJpbWciLCJjbHAtc3BrLWltZyIpOyBpbS5zcmMgPSBELmltZ3NbdC5pbWddOyBpbS5hbHQgPSB0LnR5cGVFbjsKICAgIGIuYXBwZW5kQ2hpbGQoaW0pOwogIH0KICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnByZXAsIHQucmVjLCAidCIpKTsKfQpmdW5jdGlvbiByZW5kZXJUNSh0LGIsbWV0YUVsKXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua107CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKXsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuY2hvb3NlLnNpdHVhdGlvbikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIix0LmNob29zZS5ub3RlKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHQuY2hvb3NlLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvLGlkeCl7CiAgICAgIHZhciBjYXJkID0gZWwoImRpdiIsImNscC1zcGstY2FyZCIrKFMudDVjaG9pY2VbdC5rXT09PWlkeD8iIHNlbCI6IiIpKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMobykpOwogICAgICB2YXIgcGsgPSBlbCgiZGl2IiwicGljayIsIFMudDVjaG9pY2VbdC5rXT09PWlkeCA\/ICJcdTI3MTQgU2VsZWN0ZWQiIDogIiIpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHBrKTsKICAgICAgY2FyZC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICBTLnQ1Y2hvaWNlW3Qua10gPSBpZHg7CiAgICAgICAgZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1jYXJkIikuZm9yRWFjaChmdW5jdGlvbihjZCxqKXsKICAgICAgICAgIGNkLmNsYXNzTmFtZSA9ICJjbHAtc3BrLWNhcmQiKyhqPT09aWR4PyIgc2VsIjoiIik7CiAgICAgICAgICBjZC5xdWVyeVNlbGVjdG9yKCIucGljayIpLnRleHRDb250ZW50ID0gKGo9PT1pZHgpPyJcdTI3MTQgU2VsZWN0ZWQiOiIiOwogICAgICAgIH0pOwogICAgICAgIGNidG4uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwogICAgICB9OwogICAgICBncmlkLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1oaW50IixVLmNob29zZUhpbnQpKTsKICAgIC8qIGNvdW50ZG93biBmb3IgY2hvb3NlIHBoYXNlICovCiAgICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogICAgdG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpKTsKICAgIHZhciBsYiA9IGVsKCJkaXYiKTsgbGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSkpOwogICAgdG0uYXBwZW5kQ2hpbGQobGIpOwogICAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyh0LmNob29zZS5wcmVwKSk7CiAgICB0bS5hcHBlbmRDaGlsZChuKTsKICAgIHRyb3cuYXBwZW5kQ2hpbGQodG0pOwogICAgYi5hcHBlbmRDaGlsZCh0cm93KTsKICAgIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHZhciBjYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmNvbmZpcm1DaG9pY2UpOwogICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gKFMudDVjaG9pY2VbdC5rXSE9bnVsbCk\/ImlubGluZS1ibG9jayI6Im5vbmUiOwogICAgdmFyIGdvU3BlYWsgPSBmdW5jdGlvbigpewogICAgICBzdG9wVGltZXIoKTsKICAgICAgaWYoUy50NWNob2ljZVt0LmtdPT1udWxsKSBTLnQ1Y2hvaWNlW3Qua10gPSAwOwogICAgICBTLnBoYXNlW3Qua10gPSAic3BlYWsiOwogICAgICByZW5kZXIoKTsKICAgIH07CiAgICBzdGFydC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBTLnBoYXNlW3Qua10gPSAiY2hvb3NlLXJ1biI7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9OwogICAgY2J0bi5vbmNsaWNrID0gZ29TcGVhazsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7IGN0ci5hcHBlbmRDaGlsZChjYnRuKTsKICAgIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICAgIGlmKFMucGhhc2VbdC5rXT09PSJjaG9vc2UtcnVuIil7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50PVN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9CiAgfSBlbHNlIHsKICAgIG1ldGFFbC5pbm5lckhUTUwgPSBwaGFzZWRNZXRhKHQpOwogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5zcGVhay5wcm9tcHQpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdmFyIG90aGVyID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiIpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIix0LnNwZWFrLm90aGVyTGFiZWwpKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyh0LnNwZWFrLm90aGVyKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG90aGVyKTsKICAgIHZhciBjaG9zZW4gPSB0LmNob29zZS5vcHRpb25zW1MudDVjaG9pY2VbdC5rXSE9bnVsbCA\/IFMudDVjaG9pY2VbdC5rXSA6IDBdOwogICAgdmFyIG1pbmUgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIHNlbCIpOwogICAgbWluZS5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLFUueW91ckNob2ljZSkpOwogICAgbWluZS5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMoY2hvc2VuKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG1pbmUpOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQuc3BlYWsucHJlcCwgdC5zcGVhay5yZWMsICJ0NXMiKSk7CiAgfQp9CmZ1bmN0aW9uIGltZ1RpdGxlQnVsbGV0cyhvKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKG8uaW1nICYmIEQuaW1nc1tvLmltZ10peyB2YXIgaW0gPSBlbCgiaW1nIik7IGltLnNyYyA9IEQuaW1nc1tvLmltZ107IGltLmFsdCA9IG8udGl0bGU7IGJveC5hcHBlbmRDaGlsZChpbSk7IH0KICBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsInR0IixvLnRpdGxlKSk7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgby5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGJveC5hcHBlbmRDaGlsZCh1bCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSBwcmVwL3JlY29yZCBibG9jayAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRpbWVyQmxvY2soa2V5LCBwcmVwU2VjcywgcmVjU2VjcywgbW9kZSl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICB2YXIgaWMgPSBlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIik7CiAgdmFyIGxiID0gZWwoImRpdiIpOyB2YXIgbGJ0ID0gZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSk7IGxiLmFwcGVuZENoaWxkKGxidCk7CiAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyhwcmVwU2VjcykpOwogIHRtLmFwcGVuZENoaWxkKGljKTsgdG0uYXBwZW5kQ2hpbGQobGIpOyB0bS5hcHBlbmRDaGlsZChuKTsKICB0cm93LmFwcGVuZENoaWxkKHRtKTsgYm94LmFwcGVuZENoaWxkKHRyb3cpOwogIHZhciBzcGVha25vdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXNwZWFrbm93IiwiIik7IGJveC5hcHBlbmRDaGlsZChzcGVha25vdyk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOyBib3guYXBwZW5kQ2hpbGQoY3RyKTsKICB2YXIgcmV2aWV3U2xvdCA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKHJldmlld1Nsb3QpOwogIHZhciBtaWNub3RlID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQobWljbm90ZSk7CgogIGZ1bmN0aW9uIHNob3dJZGxlKCl7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7IHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciI7IGxidC50ZXh0Q29udGVudCA9IFUucHJlcFRpdGxlOyBpYy50ZXh0Q29udGVudCA9ICJcdWQ4M2RcdWRkNTIiOyBuLnRleHRDb250ZW50ID0gU3RyaW5nKHByZXBTZWNzKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBzdGFydFByZXA7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOwogICAgaWYoUy5yZWNzW2tleV0pIHNob3dSZXZpZXcoZmFsc2UpOwogIH0KICBmdW5jdGlvbiBzdGFydFByZXAoKXsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbigpewogICAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICAgIHZhciBza2lwID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLnNraXBQcmVwKTsKICAgICAgc2tpcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgc3RvcFRpbWVyKCk7IHN0YXJ0UmVjKCk7IH07CiAgICAgIGN0ci5hcHBlbmRDaGlsZChza2lwKTsKICAgICAgY291bnRkb3duKHByZXBTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZnVuY3Rpb24oKXsgc3RhcnRSZWMoKTsgfSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc3RhcnRSZWMoKXsKICAgIGJlZXAoMik7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciByZWMiOwogICAgaWMuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdjbHAtc3BrLWRvdCc+PC9zcGFuPiI7CiAgICBuLnRleHRDb250ZW50ID0gU3RyaW5nKHJlY1NlY3MpOwogICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKICAgIHZhciBoYXZlTWljID0gKFMubWljU3RhdGU9PT0ib2siICYmIFMuc3RyZWFtKTsKICAgIGxidC50ZXh0Q29udGVudCA9IGhhdmVNaWMgPyBVLnJlY1RpdGxlIDogVS50aW1lck9ubHk7CiAgICBzcGVha25vdy50ZXh0Q29udGVudCA9IFUuc3BlYWtOb3c7CiAgICBtaWNub3RlLmlubmVySFRNTCA9IGhhdmVNaWMgPyAiIiA6ICI8ZGl2IGNsYXNzPSdjbHAtc3BrLW1pYyc+IitVLm1pY0Jsb2NrZWQrIjwvZGl2PiI7CiAgICB2YXIgdDAgPSBEYXRlLm5vdygpOwogICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uKCl7CiAgICAgIGlmKHN0b3BwZWQpIHJldHVybjsgc3RvcHBlZCA9IHRydWU7CiAgICAgIHN0b3BUaW1lcigpOyBiZWVwKDEpOwogICAgICBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgICB2YXIgc2VjcyA9IE1hdGgubWluKHJlY1NlY3MsIE1hdGgucm91bmQoKERhdGUubm93KCktdDApLzEwMDApKTsKICAgICAgaWYoaGF2ZU1pYyAmJiBTLnJlY29yZGVyKXsKICAgICAgICBTLnJlY29yZGVyLm9uc3RvcCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFMuY2h1bmtzLCBTLm1pbWU\/e3R5cGU6Uy5taW1lfTp1bmRlZmluZWQpOwogICAgICAgICAgaWYoUy5yZWNzW2tleV0gJiYgUy5yZWNzW2tleV0udXJsKXsgdHJ5eyBVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trZXldLnVybCk7IH1jYXRjaChlKXt9IH0KICAgICAgICAgIFMucmVjc1trZXldID0geyBibG9iOiBibG9iLCB1cmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIHNlY3M6IHNlY3MgfTsKICAgICAgICAgIFMucmVjb3JkZXIgPSBudWxsOwogICAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgICB9OwogICAgICAgIHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXsgUy5yZWNzW2tleV0gPSB7YmxvYjpudWxsLHVybDpudWxsLHNlY3M6c2Vjc307IHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7IH0KICAgICAgfSBlbHNlIHsKICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjpudWxsLCB1cmw6bnVsbCwgc2Vjczogc2VjcyB9OwogICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgIH0KICAgIH07CiAgICBpZihoYXZlTWljKXsKICAgICAgUy5jaHVua3MgPSBbXTsKICAgICAgdHJ5ewogICAgICAgIFMucmVjb3JkZXIgPSBTLm1pbWUgPyBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSx7bWltZVR5cGU6Uy5taW1lfSkgOiBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSk7CiAgICAgICAgUy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBmdW5jdGlvbihldil7IGlmKGV2LmRhdGEgJiYgZXYuZGF0YS5zaXplKSBTLmNodW5rcy5wdXNoKGV2LmRhdGEpOyB9OwogICAgICAgIFMucmVjb3JkZXIuc3RhcnQoKTsKICAgICAgfWNhdGNoKGUpeyBTLnJlY29yZGVyID0gbnVsbDsgaGF2ZU1pYyA9IGZhbHNlOyBsYnQudGV4dENvbnRlbnQgPSBVLnRpbWVyT25seTsgfQogICAgfQogICAgdmFyIHN0b3AgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gd2FybiIsVS5zdG9wUmVjKTsKICAgIHN0b3Aub25jbGljayA9IGZpbmlzaDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdG9wKTsKICAgIGNvdW50ZG93bihyZWNTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZmluaXNoKTsKICB9CiAgZnVuY3Rpb24gc2hvd1JldmlldyhzY3JvbGxUbyl7CiAgICB2YXIgciA9IFMucmVjc1trZXldOyBpZighcikgcmV0dXJuOwogICAgcmV2aWV3U2xvdC5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBydiA9IGVsKCJkaXYiLCJjbHAtc3BrLXJldmlldyIpOwogICAgcnYuYXBwZW5kQ2hpbGQoZWwoImRpdiIsIm9rIiwiXHUyNzE0ICIrVS5yZWNvcmRlZCsiICgiK3Iuc2VjcysicykiKSk7CiAgICBpZihyLnVybCl7CiAgICAgIHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOwogICAgICBydi5hcHBlbmRDaGlsZChhdSk7CiAgICAgIHZhciByb3cgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgICAgdmFyIGRsID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5kb3dubG9hZCk7CiAgICAgIGRsLmhyZWYgPSByLnVybDsgZGwuZG93bmxvYWQgPSAiY2VscGlwLXMiK0Quc2V0KyJ0IitELnRlc3QrIi10YXNrIisoa2V5PT09InciPyIwIjprZXkucmVwbGFjZSgidCIsIiIpKSsiLiIrUy5leHQ7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkbCk7CiAgICAgIHJ2LmFwcGVuZENoaWxkKHJvdyk7CiAgICB9CiAgICByZXZpZXdTbG90LmFwcGVuZENoaWxkKHJ2KTsKICAgIGlmKHNjcm9sbFRvKXsgdHJ5eyBydi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KTsgfWNhdGNoKGUpe30gfQogIH0KICBzaG93SWRsZSgpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gdGlwcy9zYW1wbGVzIGFjY29yZGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGFjY29yZGlvbih0KXsKICB2YXIgYWNjID0gZWwoImRpdiIsImNscC1zcGstYWNjIik7CiAgdmFyIGJ0biA9IGVsKCJidXR0b24iLG51bGwsVS50aXBzVG9nZ2xlKTsKICBidG4ub25jbGljayA9IGZ1bmN0aW9uKCl7IGFjYy5jbGFzc05hbWUgPSBhY2MuY2xhc3NOYW1lLmluZGV4T2YoIm9wZW4iKT4tMSA\/ICJjbHAtc3BrLWFjYyIgOiAiY2xwLXNway1hY2Mgb3BlbiI7IH07CiAgYWNjLmFwcGVuZENoaWxkKGJ0bik7CiAgdmFyIGJvZHkgPSBlbCgiZGl2IiwiY2xwLXNway1hY2Nib2R5Iik7CiAgdmFyIHRhYnMgPSBlbCgiZGl2IiwiY2xwLXNway10YWJzIik7CiAgdmFyIHBhbmVzID0gW107CiAgZnVuY3Rpb24gYWRkVGFiKGxhYmVsLCBwYW5lQnVpbGRlcil7CiAgICB2YXIgaSA9IHBhbmVzLmxlbmd0aDsKICAgIHZhciB0YiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLXRhYiIrKGk9PT0wPyIgb24iOiIiKSxsYWJlbCk7CiAgICB2YXIgcG4gPSBlbCgiZGl2IiwiY2xwLXNway10YWJwYW5lIisoaT09PTA\/IiBvbiI6IiIpKTsKICAgIHBhbmVCdWlsZGVyKHBuKTsKICAgIHRiLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICB0YWJzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYiIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWIiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgICBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYnBhbmUiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFicGFuZSIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICB9OwogICAgdGFicy5hcHBlbmRDaGlsZCh0Yik7IHBhbmVzLnB1c2gocG4pOwogIH0KICBhZGRUYWIoVS50YWJUaXBzLCBmdW5jdGlvbihwbil7CiAgICB2YXIgdWwgPSBlbCgidWwiKTsKICAgIHQudGlwcy5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodWwpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLnVzZWZ1bFBocmFzZXMrIjo8L2I+IikpOwogICAgdmFyIHBoID0gZWwoImRpdiIsImNscC1zcGstcGhyIik7CiAgICB0LnRpcHMucGhyYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBwaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQocGgpOwogIH0pOwogIGlmKHQuczYpIGFkZFRhYihVLnRhYlM2LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSBzNiIsdC5zNikpOyB9KTsKICBpZih0LnM5KSBhZGRUYWIoVS50YWJTOSwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUiLHQuczkpKTsgfSk7CiAgaWYoIXQud2FybXVwKSBhZGRUYWIoVS50YWJSdWJyaWMsIGZ1bmN0aW9uKHBuKXsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsVS5ydWJyaWNOb3RlKSk7CiAgICB2YXIgdGIgPSBlbCgidGFibGUiLCJjbHAtc3BrLXJ1YiIpOwogICAgaWYoIVMucnVicmljW3Qua10pIFMucnVicmljW3Qua10gPSBbMCwwLDAsMF07CiAgICB2YXIgZXN0RCA9IGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsIiIpOwogICAgVS5ydWJyaWNDcml0LmZvckVhY2goZnVuY3Rpb24oY3IsY2kpewogICAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLGNyKSk7CiAgICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOyB0ZC5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7IHRkLnN0eWxlLnRleHRBbGlnbiA9ICJyaWdodCI7CiAgICAgIGZvcih2YXIgczI9MTtzMjw9NTtzMisrKXsKICAgICAgICAoZnVuY3Rpb24oc3YpewogICAgICAgICAgdmFyIHNwID0gZWwoInNwYW4iLCJjbHAtc3BrLXN0YXIiKyhTLnJ1YnJpY1t0LmtdW2NpXT49c3Y\/IiBvbiI6IiIpLCJcdTI2MDUiKTsKICAgICAgICAgIHNwLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgICAgICBTLnJ1YnJpY1t0LmtdW2NpXSA9IHN2OwogICAgICAgICAgICB0ZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1zdGFyIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXN0YXIiKyhqPHN2PyIgb24iOiIiKTsgfSk7CiAgICAgICAgICAgIHVwZCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHNwKTsKICAgICAgICB9KShzMik7CiAgICAgIH0KICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgICB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHRiKTsKICAgIHBuLmFwcGVuZENoaWxkKGVzdEQpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgICBmdW5jdGlvbiB1cGQoKXsKICAgICAgdmFyIGFyciA9IFMucnVicmljW3Qua107IHZhciBkb25lID0gYXJyLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSk7CiAgICAgIGVzdEQudGV4dENvbnRlbnQgPSBkb25lID8gKFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXJyLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2I7fSwwKS80KSkgOiAiIjsKICAgIH0KICAgIHVwZCgpOwogIH0pOwogIGJvZHkuaW5zZXJ0QmVmb3JlKHRhYnMsIGJvZHkuZmlyc3RDaGlsZCk7CiAgcGFuZXMuZm9yRWFjaChmdW5jdGlvbihwbil7IGJvZHkuYXBwZW5kQ2hpbGQocG4pOyB9KTsKICBhY2MuYXBwZW5kQ2hpbGQoYm9keSk7CiAgcmV0dXJuIGFjYzsKfQoKLyogLS0tLS0tLS0tLSBlbmQgc2NyZWVuIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZW5kU2NyZWVuKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWVuZCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmcgXHUyMDE0ICIrVS5lbmRUaXRsZSkpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS5lbmRUaXRsZSsiPC9iPiAiK1UuZW5kU3ViKSk7CiAgdmFyIHRiID0gZWwoInRhYmxlIik7CiAgdmFyIHRociA9IGVsKCJ0ciIpOyBbIlRhc2siLCJUeXBlIiwiUmVjb3JkaW5nIiwiIl0uZm9yRWFjaChmdW5jdGlvbihoKXsgdGhyLmFwcGVuZENoaWxkKGVsKCJ0aCIsbnVsbCxoKSk7IH0pOwogIHRiLmFwcGVuZENoaWxkKHRocik7CiAgdmFyIG5yZWMgPSAwOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIHRyID0gZWwoInRyIik7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsIjxiPiIrKHQud2FybXVwPyJXIjp0Lm51bSkrIjwvYj4iKSk7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsdC50eXBlRW4pKTsKICAgIHZhciByID0gUy5yZWNzW3Qua107CiAgICB2YXIgdGQgPSBlbCgidGQiKTsKICAgIGlmKHIgJiYgci51cmwpeyBucmVjKys7IHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOyB0ZC5hcHBlbmRDaGlsZChhdSk7IH0KICAgIGVsc2UgaWYocil7IG5yZWMrKzsgdGQudGV4dENvbnRlbnQgPSByLnNlY3MrInMgKCIrVS50aW1lck9ubHkrIikiOyB9CiAgICBlbHNlIHRkLmlubmVySFRNTCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6I2M2MjgyOCc+IitVLmVuZE5vUmVjKyI8L3NwYW4+IjsKICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgIHZhciB0ZDIgPSBlbCgidGQiKTsKICAgIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsIlx1MjE5MiIpOwogICAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgdGQyLmFwcGVuZENoaWxkKGdvKTsKICAgIHRyLmFwcGVuZENoaWxkKHRkMik7CiAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgfSk7CiAgYi5hcHBlbmRDaGlsZCh0Yik7CiAgLyogcnVicmljIGF2ZyAqLwogIHZhciB2YWxzID0gW107CiAgT2JqZWN0LmtleXMoUy5ydWJyaWMpLmZvckVhY2goZnVuY3Rpb24oayl7IHZhciBhPVMucnVicmljW2tdOyBpZihhICYmIGEuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KSkgdmFscy5wdXNoKGEucmVkdWNlKGZ1bmN0aW9uKHgseSl7cmV0dXJuIHgreTt9LDApLzQpOyB9KTsKICBpZih2YWxzLmxlbmd0aCl7CiAgICB2YXIgYXZnID0gdmFscy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYStjO30sMCkvdmFscy5sZW5ndGg7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhdmcpKyIgKCIrdmFscy5sZW5ndGgrIiB0YXNrKHMpIHNlbGYtcmF0ZWQpIikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICB9CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciByZWRvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmVuZFJlZG8pOwogIHJlZG8ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBPYmplY3Qua2V5cyhTLnJlY3MpLmZvckVhY2goZnVuY3Rpb24oayl7IGlmKFMucmVjc1trXSYmUy5yZWNzW2tdLnVybCl7IHRyeXtVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trXS51cmwpO31jYXRjaChlKXt9IH0gfSk7CiAgICBTLnJlY3MgPSB7fTsgUy5ydWJyaWMgPSB7fTsgUy50NWNob2ljZSA9IHt9OwogICAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZD8iY2hvb3NlLWlkbGUiOiJpZGxlIjsgfSk7CiAgICBTLmN1ciA9IC0xOyByZW5kZXIoKTsKICB9OwogIHZhciB0MiA9IGVsKCJhIiwiY2xwLXNway1idG4gcHJpIixVLmVuZFQyKyIgIisoRC50ZXN0PT09MT8yOjEpKyIgXHUyMTkyIik7IHQyLmhyZWYgPSBELm90aGVyVXJsOwogIHZhciBodWIgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmVuZEh1Yik7IGh1Yi5ocmVmID0gIi9jZWxwaXAvIjsKICBjdHIuYXBwZW5kQ2hpbGQocmVkbyk7IGN0ci5hcHBlbmRDaGlsZCh0Mik7IGN0ci5hcHBlbmRDaGlsZChodWIpOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW1pYyIsVS5taWNOb3RlKSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogZXhwb3NlIGZvciB0ZXN0cyAqLwp3aW5kb3cuQ0xQU1BLID0geyBzdGF0ZTogUywgZGF0YTogRCwgZ290bzogZnVuY3Rpb24oaSl7IFMuY3VyPWk7IHJlbmRlcigpOyB9LCByZW5kZXI6IHJlbmRlciB9OwpyZW5kZXIoKTsKfSkoKTsK\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 13 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-6487","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6487","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=6487"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6487\/revisions"}],"predecessor-version":[{"id":6505,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6487\/revisions\/6505"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}