{"id":6401,"date":"2026-07-11T01:11:04","date_gmt":"2026-07-11T01:11:04","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-5-test-2-reading\/"},"modified":"2026-07-12T03:24:36","modified_gmt":"2026-07-12T03:24:36","slug":"celpip-set-5-test-2-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-5-test-2-reading\/","title":{"rendered":"CELPIP Reading \u2014 Set 5 \u00b7 Practice Test 2"},"content":{"rendered":"<div class=\"clpr-wrap\" id=\"clprWrap\">\n<section class=\"clpr-hero\">\n<div class=\"clpr-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clpr-hero-badges\"> <span class=\"clpr-badge-brand\">AllEnglish4U<\/span> <span class=\"clpr-badge-set\">CELPIP General &middot; Set 5<\/span> <\/div>\n<h1>Reading Practice Test 2<\/h1>\n<p class=\"clpr-hero-sub\">4 parts &middot; 38 questions &middot; about 55 minutes. Read each passage and choose the best option for every drop-down. Official Paragon question set with verified answer key.<\/p>\n<div class=\"clpr-hero-chips\"> <span class=\"clpr-chip\">Part 1 &middot; Correspondence<\/span> <span class=\"clpr-chip\">Part 2 &middot; Apply a Diagram<\/span> <span class=\"clpr-chip\">Part 3 &middot; Information<\/span> <span class=\"clpr-chip\">Part 4 &middot; Viewpoints<\/span> <\/div>\n<p> <button class=\"clpr-cta\" id=\"clprStart\">Start the Reading Test<\/button> <\/section>\n<div class=\"clpr-toolbar\" id=\"clprToolbar\" hidden> <span class=\"clpr-score-chip\" id=\"clprScoreChip\">0 \/ 38 answered<\/span> <span class=\"clpr-toolbar-spacer\"><\/span> <button class=\"clpr-tbtn\" id=\"clprReset\">Reset<\/button> <button class=\"clpr-tbtn clpr-tbtn-check\" id=\"clprCheck\">Check answers<\/button> <\/div>\n<div class=\"clpr-sim\" id=\"clprSim\" hidden>\n<div class=\"clpr-dots\" id=\"clprDots\"><\/div>\n<div class=\"clpr-cat\" id=\"clprCat\"><\/div>\n<\/p><\/div>\n<div class=\"clpr-results\" id=\"clprResults\" hidden><\/div>\n<\/p><\/div>\n<p><script>eval(atob(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMiAoU2V0IDEpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAyIFNldCAxIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDIiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkZyb206ICZsdDtzLnN5Y2hvdkBlbWFpbC5jb20mZ3Q7PGJyPlRvOiAmbHQ7cGFtLndpbGtlc0BkZnNiLmNhJmd0Ozxicj5TdWJqZWN0OiBSZXF1ZXN0aW5nIEV4dHJhIEhlbHAgZm9yIEZyZW5jaDwvcD48cD5EZWFyIE1zLiBXaWxrZXMsPC9wPjxwPk15IG5hbWUgaXMgU2VyZ2l5IFN5Y2hvdiwgYW5kIEkgYW0gTmFkaWEmcnNxdW87cyBmYXRoZXIuIEFsdGhvdWdoIEkgaGF2ZSBkcml2ZW4gZnJvbSB3b3JrIHRvIHRoZSBzY2hvb2wgdG8gZ2V0IE5hZGlhIGEgZmV3IHRpbWVzLCB3ZSBoYXZlIG5vdCB5ZXQgaGFkIGEgY2hhbmNlIHRvIGZvcm1hbGx5IG1lZXQuIE5hZGlhIGhhcyBzcG9rZW4gdmVyeSBoaWdobHkgb2YgeW91IHNpbmNlIHRoZSBmaXJzdCBkYXkgb2Ygc2Nob29sLiBFdmVyeSBldmVuaW5nIGF0IGRpbm5lciwgc2hlIHRlbGxzIHVzICZsZHF1bzthIE1zLiBXaWxrZXMgc3RvcnkuJnJkcXVvOyBUaGUgc3RvcmllcyBhcmUgdXN1YWxseSBhYm91dCBzb21ldGhpbmcgZnVubnkgeW91IHRvbGQgdGhlIGNsYXNzIG9yIGFuIGludGVyZXN0aW5nIHdheSB5b3UgdGVhY2gsIHN1Y2ggYXMgaGF2aW5nIHRoZSBzdHVkZW50cyBzaW5nIGEgc29uZyBpbiBvcmRlciB0byBsZWFybiBvbmUgb2YgeW91ciBtYXRoIGxlc3NvbnMuIEkgdGhpbmsgc2hlIGlzIHlvdXIgYmlnZ2VzdCBmYW4hPC9wPjxwPlRoZSByZWFzb24gSSBhbSB3cml0aW5nIHRvIHlvdSBpcyB0aGF0IEkgYW0gd29ycmllZCBhYm91dCBOYWRpYSBrZWVwaW5nIHVwIGluIEZyZW5jaCBjbGFzcy4gT3VyIGZhbWlseSBpbW1pZ3JhdGVkIHRvIENhbmFkYSBmcm9tIHRoZSBVa3JhaW5lIGp1c3QgbGFzdCB5ZWFyLiBOYWRpYSBoYXMgZG9uZSB2ZXJ5IHdlbGwgd2l0aCBsZWFybmluZyBFbmdsaXNoIHNpbmNlIHdlIGFycml2ZWQsIGJ1dCB3ZSBhcmUgY29uY2VybmVkIGFib3V0IGhlciBGcmVuY2guIFlvdSBrbm93IHdoYXQgdGhleSBzYXkmbWRhc2g7a2lkcyBhcmUgbGlrZSBzcG9uZ2VzIHdoZW4gaXQgY29tZXMgdG8gbGVhcm5pbmcgbGFuZ3VhZ2VzISBCdXQsIGFzIEZyZW5jaCBpcyBoZXIgdGhpcmQgbGFuZ3VhZ2UsIEkgd29uZGVyIGlmIHNoZSBpcyBzdHJ1Z2dsaW5nIG1vcmUgdGhhbiB0aGUgb3RoZXIga2lkcy4gV2hlbiB3ZSBhc2sgaGVyIGFib3V0IEZyZW5jaCBjbGFzcywgc2hlIHVzdWFsbHkgbG93ZXJzIGhlciBoZWFkIGFuZCBzYXlzIHNoZSBkb2VzbiZyc3F1bzt0IHdhbnQgdG8gdGFsayBhYm91dCBpdC48L3A+PHA+SSBoYXZlIGNhbGxlZCB0aGUgc2Nob29sJnJzcXVvO3MgbWFpbiBvZmZpY2UgYW5kIHNwb2tlbiB3aXRoIHNvbWVvbmUsIGJ1dCwgc2luY2UgSSBkb24mcnNxdW87dCBrbm93IHRoZSBGcmVuY2ggdGVhY2hlciZyc3F1bztzIG5hbWUsIEkmcnNxdW87bSBob3BpbmcgeW91IGNhbiB0ZWxsIG1lIGhvdyB0byBnZXQgaW4gdG91Y2ggd2l0aCBoZXIuIEFsc28sIHNpbmNlIHlvdSBhcmUgY2xlYXJseSBhIHBhc3Npb25hdGUgZWR1Y2F0b3IsIEkgd291bGQgYmUgdmVyeSBncmF0ZWZ1bCBpZiB5b3UgaGFkIGFueSBzdWdnZXN0aW9ucyBmb3IgdXMgdG8gbWFrZSBzdXJlIE5hZGlhIGRvZXNuJnJzcXVvO3QgZmFsbCBiZWhpbmQuIEkga25vdyB0aGF0IHRoZSBzY2hvb2wgeWVhciBpcyBqdXN0IGdldHRpbmcgc3RhcnRlZCwgYnV0IEkgZG9uJnJzcXVvO3Qgd2FudCB0byB3YWl0IHVudGlsIGl0IGlzIHRvbyBsYXRlIGZvciBoZXIgdG8gY2F0Y2ggdXAuIEkgaGF2ZSBoZWFyZCB0aGF0IHNvbWUgZmFtaWxpZXMgaGlyZSBwcml2YXRlIHR1dG9ycyBvciBzaWduIHRoZWlyIGtpZHMgdXAgZm9yIGFmdGVyLXNjaG9vbCBsZXNzb25zLiBXb3VsZCB5b3UgYmUgYWJsZSB0byByZWNvbW1lbmQgZWl0aGVyIGEgY2xhc3Mgb3IgYSB0dXRvcj8gU2hlIGNvdWxkIHVzZSBzb21lIGhlbHAgaW4gc2NpZW5jZSBhcyB3ZWxsLjwvcD48cD5UaGFuayB5b3UgZm9yIGFueSBoZWxwIHlvdSBjYW4gZ2l2ZSB1cy4gSWYgeW91IHRoaW5rIGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhLCBJIHdvdWxkIGJlIGhhcHB5IHRvIG1lZXQgd2l0aCB5b3Ugb3IgdGhlIEZyZW5jaCB0ZWFjaGVyIHNvbWV0aW1lIHRoaXMgd2VlayB0byB0YWxrIGFib3V0IE5hZGlhLjwvcD48cD5TaW5jZXJlbHksPGJyPlNlcmdpeSBTeWNob3Y8L3A+In0sImJsb2NrcyI6W3sidHlwZSI6InN0ZW1saXN0IiwiaW5zdHIiOiJVc2luZyB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICksIGNob29zZSB0aGUgYmVzdCBvcHRpb24gYWNjb3JkaW5nIHRvIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBpbiB0aGUgbWVzc2FnZS4iLCJpdGVtcyI6W3sibiI6MSwicHJlIjoiU2VyZ2l5IGFuZCBNcy4gV2lsa2VzIiwib3B0aW9ucyI6WyJib3RoIHNwZWFrIGhpZ2hseSBvZiBlYWNoIG90aGVyLiIsImRvIG5vdCBwZXJzb25hbGx5IGtub3cgZWFjaCBvdGhlci4iLCJoYXZlIGFuIGFwcG9pbnRtZW50IHRvIG1lZXQgc29vbi4iLCJrbm93IHRoZSBnaXJsJ3Mgb3RoZXIgdGVhY2hlcnMuIl0sImtleSI6Mn0seyJuIjoyLCJwcmUiOiJXZSBrbm93IGZvciBzdXJlIHRoYXQgTXMuIFdpbGtlcyB0ZWFjaGVzIiwib3B0aW9ucyI6WyJtYXRoLiIsIkVuZ2xpc2guIiwiRnJlbmNoLiIsInNjaWVuY2UuIl0sImtleSI6MX0seyJuIjozLCJwcmUiOiJUaGUgZW1haWwgaW5kaWNhdGVzIHRoYXQgTmFkaWEiLCJvcHRpb25zIjpbImlzIGdvb2QgYXQgbGVhcm5pbmcgbWF0aGVtYXRpY3MuIiwicGF5cyBhdHRlbnRpb24gaW4gTXMuIFdpbGtlcycgY2xhc3MuIiwiY2FuIHNpbmcgZnVubnkgc29uZ3MgaW4gRnJlbmNoLiIsIndhbnRzIE1zLiBXaWxrZXMgYXMgYSBwcml2YXRlIHR1dG9yLiJdLCJrZXkiOjJ9LHsibiI6NCwicHJlIjoiU2VyZ2l5IGlzIGxpa2VseSB3cml0aW5nIHRoaXMgZW1haWwiLCJvcHRpb25zIjpbImR1cmluZyB0aGUgc3VtbWVyIGhvbGlkYXlzLiIsImF0IHRoZSBlbmQgb2YgdGhlIHNjaG9vbCB5ZWFyLiIsIm5lYXIgdGhlIERlY2VtYmVyIGhvbGlkYXkuIiwibmVhciB0aGUgc3RhcnQgb2YgdGhlIHNjaG9vbCB5ZWFyLiJdLCJrZXkiOjR9LHsibiI6NSwicHJlIjoiTmFkaWEgc2VlbXMgdG8iLCJvcHRpb25zIjpbImxvb2sgZm9yd2FyZCB0byBGcmVuY2ggY2xhc3MuIiwiYmUgdW5jb21mb3J0YWJsZSBhYm91dCBGcmVuY2ggY2xhc3MuIiwicGFydGljaXBhdGUgb2Z0ZW4gaW4gRnJlbmNoIGNsYXNzLiIsInRhbGsgb2Z0ZW4gYWJvdXQgRnJlbmNoIGNsYXNzLiJdLCJrZXkiOjJ9LHsibiI6NiwicHJlIjoiU2VyZ2l5XHUyMDE5cyBtYWluIHB1cnBvc2UgZm9yIHdyaXRpbmcgdGhlIGVtYWlsIGlzIHRvIiwib3B0aW9ucyI6WyJhc2sgd2hhdCB3b3JrIE5hZGlhIGhhcyBtaXNzZWQuIiwiY29tcGxpbWVudCBhbiBlZmZlY3RpdmUgdGVhY2hlci4iLCJmaW5kIG91dCB3aHkgTmFkaWEgZGlzbGlrZXMgRnJlbmNoLiIsIm9idGFpbiBpbmZvcm1hdGlvbiBhbmQgYWR2aWNlLiJdLCJrZXkiOjR9XX0seyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IkhlcmUgaXMgYSByZXNwb25zZSB0byB0aGUgbWVzc2FnZS4gQ29tcGxldGUgdGhlIHJlc3BvbnNlIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4gU2VsZWN0IHRoZSBiZXN0IGNob2ljZSBmb3IgZWFjaCBibGFuayBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKS4iLCJib2R5IjpbIkZyb206PHBhbS53aWxrZXNAZGZzYi5jYT5cblRvOjxzLnN5Y2hvdkBlbWFpbC5jb20+XG5TdWJqZWN0OiBSZTogUmVxdWVzdGluZyBFeHRyYSBIZWxwIGZvciBGcmVuY2hcblxuSGVsbG8gTXIuIFN5Y2hvdixcblxuSSBkaWQgbm90IHJlYWxpemUgdGhhdCBOYWRpYSBpcyBzdWNoICIseyJiIjo3LCJvcHRpb25zIjpbImEgcmVjZW50IiwiYSByZWx1Y3RhbnQiLCJhbiB1bmhhcHB5IiwiYW4gYW54aW91cyJdLCJrZXkiOjF9LCIgbmV3Y29tZXIhIEFzIHlvdSBzYXksIGhlciBFbmdsaXNoIGlzICIseyJiIjo4LCJvcHRpb25zIjpbImNoYWxsZW5naW5nIiwiZmx1ZW50IiwiaW50ZXJtZWRpYXRlIiwibmF0aXZlIl0sImtleSI6Mn0sIi4gV2l0aCByZWdhcmQgdG8gTmFkaWFcdTIwMTlzIEZyZW5jaCwgSSBhcHByZWNpYXRlIHRoYXQgeW91IGFyZSB3aWxsaW5nIHRvICIseyJiIjo5LCJvcHRpb25zIjpbImNoYW5nZSBzY2hvb2xzIiwic3BlbmQgbW9uZXkiLCJkcml2ZSBzb21lIGRpc3RhbmNlIiwidGFrZSB0aW1lIG9mZiB3b3JrIl0sImtleSI6Mn0sIiB0byBnZXQgaGVyIHNvbWUgZXh0cmEgaGVscCwgYnV0IHRoYXQgbWF5IG5vdCBiZSBuZWNlc3NhcnkuIExldFx1MjAxOXMgZXhwbG9yZSBvdGhlciBvcHRpb25zIGZpcnN0LiBJXHUyMDE5bSBzdXJwcmlzZWQgb3VyIG1haW4gb2ZmaWNlIGhhcyAiLHsiYiI6MTAsIm9wdGlvbnMiOlsibm90IGJlZW4gdmVyeSBoZWxwZnVsIiwiYmVlbiBjbG9zZWQgd2hlbiB5b3UgY2FsbGVkIiwiZ2l2ZW4geW91IHRoZSB3cm9uZyBpbmZvcm1hdGlvbiIsImRpc2NvdXJhZ2VkIGEgbWVldGluZyJdLCJrZXkiOjF9LCIuIE91ciBGcmVuY2ggdGVhY2hlclx1MjAxOXMgbmFtZSBpcyBTeWx2aWUgR2Fnbm9uLCBhbmQgc2hlIGNhbiBiZSByZWFjaGVkIGF0IHN5bHZpZS5nYWdub25AZGZzYi5jYS4gSWYgSSBjYW4gYmUgb2YgYW55IGFzc2lzdGFuY2UsIGxldCBtZSBrbm93LlxuXG5JbiB0aGUgbWVhbnRpbWUsIEkgdGhhbmsgeW91IGZvciAiLHsiYiI6MTEsIm9wdGlvbnMiOlsiYnJpbmdpbmcgdG8gbXkgYXR0ZW50aW9uIE5hZGlhJ3MgbG92ZSBmb3IgbXVzaWMgdGhlb3J5IiwieW91ciBraW5kIHdvcmRzIGFib3V0IG15IGVmZm9ydHMgdG8gZW5nYWdlIHRoZSBjbGFzcyIsInNoYXJpbmcgTmFkaWEncyByZWNlbnQgbGFuZ3VhZ2UgdGVzdCByZXN1bHRzIHdpdGggbWUiLCJ5b3VyIHN1Z2dlc3Rpb25zIGFib3V0IHRlYWNoaW5nIHRocm91Z2ggc3Rvcnl0ZWxsaW5nIl0sImtleSI6Mn0sIiFcblxuWW91cnMgdHJ1bHksXG5cbk1zLiBQYW0gV2lsa2VzIl19XX0seyJpZCI6MiwibmFtZSI6IlJlYWRpbmcgUGFydCAyOiBSZWFkaW5nIHRvIEFwcGx5IGEgRGlhZ3JhbSIsInRpbWUiOiI4IG1pbnV0ZXMiLCJwYXNzYWdlIjp7InR5cGUiOiJ0ZXh0IiwibGFiZWwiOiJSZWFkIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbS4iLCJodG1sIjoiPHN0eWxlPi5hZS1iZXZ7Ym9yZGVyOjFweCBzb2xpZCAjY2JkNWUxO2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU7YmFja2dyb3VuZDojZmZmfS5hZS1iZXZoZWFke3BhZGRpbmc6MTJweCAxNHB4IDRweDt0ZXh0LWFsaWduOmNlbnRlcn0uYWUtYmV2aGVhZCBoM3ttYXJnaW46MCAwIDZweDtmb250LXNpemU6MjBweDtjb2xvcjojMjIyfS5hZS1iZXZoZWFkIHB7bWFyZ2luOjA7Zm9udC1zaXplOjEyLjVweH0uYWUtYmV2cm93e21hcmdpbjoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMHB4IDEycHh9LmFlLWJldnJvdyBoNHttYXJnaW46MCAwIDZweDtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMyMjJ9LmFlLWJldnJvdyB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweH0uYWUtYmV2cm93IGxpe21hcmdpbjowIDAgNHB4fS5hZS1iZXYxe2JhY2tncm91bmQ6I2RjZTlmNztib3JkZXI6MXB4IHNvbGlkICM5ZGJhZGZ9LmFlLWJldjJ7YmFja2dyb3VuZDojZmRmM2QxO2JvcmRlcjoxcHggc29saWQgI2U4Y2Y4Mn0uYWUtYmV2M3tiYWNrZ3JvdW5kOiNlMmVmZDk7Ym9yZGVyOjFweCBzb2xpZCAjYTljZjk1fS5hZS1iZXY0e2JhY2tncm91bmQ6I2ZiZTRkNTtib3JkZXI6MXB4IHNvbGlkICNlOGIyOTR9PC9zdHlsZT48ZGl2IGNsYXNzPVwiYWUtYmV2XCI+PGRpdiBjbGFzcz1cImFlLWJldmhlYWRcIj48aDM+V2hhdCBhcmUgQ2FuYWRpYW5zIERyaW5raW5nIGluIDIwMTY\/PC9oMz48cD5XZSBhc2tlZCAxMCwwMDAgQ2FuYWRpYW5zIHRvIHRlbGwgdXMgd2hhdCB0aGV5IGFyZSBkcmlua2luZyBpbiAyMDE2LiBUaGVuLCBvdXIgaW4taG91c2UgYW5hbHlzdHMgY29tcGFyZWQgdGhlaXIgYW5zd2VycyB3aXRoIGRhdGEgZnJvbSB0aGUgbGFzdCAxMCB5ZWFycy4gQnkgZG9pbmcgdGhpcywgd2UgZm91bmQgc29tZSBpbnRlcmVzdGluZyB0cmVuZHMhIFJlYWQgb24gdG8gZmluZCBvdXQgbW9yZSE8L3A+PC9kaXY+PGRpdiBjbGFzcz1cImFlLWJldnJvdyBhZS1iZXYxXCI+PGg0Pkh5ZHJhdGlvbiBOYXRpb248L2g0Pjx1bD48bGk+NTYlIG9mIENhbmFkaWFucyBzYXkgdGhleSB0dXJuIHRvIHdhdGVyIGFzIHRoZWlyIGJldmVyYWdlIG9mIGNob2ljZS48L2xpPjxsaT5UaGlzIGNob2ljZSB3YXMgc2VsZWN0ZWQgYnkgNTMlIG9mIHBhcnRpY2lwYW50cyBsYXN0IHllYXIuPC9saT48bGk+SGVhbHRoIGFuZCBmaW5hbmNpYWwgYmVuZWZpdHMgd2VyZSBuYW1lZCBhcyB0b3AgcmVhc29ucyBieSByZXNwb25kZW50cy48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImFlLWJldnJvdyBhZS1iZXYyXCI+PGg0PkNhZmZlaW5hdGVkIENhbnVja3M8L2g0Pjx1bD48bGk+Q29mZmVlIGNvbnN1bXB0aW9uIGlzIHN0aWxsIG9uIHRoZSByaXNlIHdpdGggMjYlIG9mIHVzIGNob29zaW5nIGl0IG92ZXIgb3RoZXJzIGZvciBvdXIgZGFpbHkgZHJpbmsuPC9saT48bGk+QXZhaWxhYmlsaXR5IGFuZCBjb3N0IGFyZSB0aG91Z2h0IHRvIGJlIGtleSBncm93dGggZmFjdG9ycyBmb3IgdGhpcyB0cmVuZC48L2xpPjxsaT5UaGlzIHJlcHJlc2VudHMgYSA1JSBpbmNyZWFzZSBmcm9tIDIwMTUsIGFuZCBhIDIwJSByaXNlIG92ZXIgdGhlIHBhc3QgZGVjYWRlLjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtYmV2cm93IGFlLWJldjNcIj48aDQ+U3RpbGwgTm90IFRlYSBUaW1lPC9oND48dWw+PGxpPlRlYSBkcmlua2VycyBhcmUgZG93biA1JSBhZ2FpbiB0aGlzIHllYXIuPC9saT48bGk+MTUlIG9mIHRvdGFsIHJlc3BvbmRlbnRzIG5hbWVkIGl0IGFzIHRoZWlyIGZpcnN0IGNob2ljZS48L2xpPjxsaT5IZXJiYWwgdmFyaWV0aWVzIHN1Y2ggYXMgZnJ1aXQgYW5kIGdyZWVuIHRlYXMgY29udGludWUgdG8gYmUgbGVzcyBwb3B1bGFyIHRoYW4gdHJhZGl0aW9uYWwgYmxhY2sgdGVhcy48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz1cImFlLWJldnJvdyBhZS1iZXY0XCI+PGg0PlBvcHBlZCBCdWJibGU\/PC9oND48dWw+PGxpPk9ubHkgYSBoYW5kZnVsIG9mIENhbmFkaWFucyBub3cgc2F5IHRoZXkgcmVhY2ggZm9yIGJvdHRsZWQgcG9wIGFuZCBqdWljZSB0byBxdWVuY2ggdGhlaXIgdGhpcnN0LjwvbGk+PGxpPkhlYWx0aCBjb25jZXJucyB3ZXJlIGNpdGVkIGJ5IG1vc3QgcmVzcG9uZGVudHMsIGZvbGxvd2VkIGJ5IGVudmlyb25tZW50YWwgaW1wYWN0IGFuZCBjb3N0LCBpbiBzZWNvbmQgYW5kIHRoaXJkIHBsYWNlLCByZXNwZWN0aXZlbHkuPC9saT48L3VsPjwvZGl2PjwvZGl2PiJ9LCJibG9ja3MiOlt7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiUmVhZCB0aGUgZm9sbG93aW5nIGVtYWlsIG1lc3NhZ2UgYWJvdXQgdGhlIGRpYWdyYW0gb24gdGhlIGxlZnQuIENvbXBsZXRlIHRoZSBlbWFpbCBieSBmaWxsaW5nIGluIHRoZSBibGFua3MuIFNlbGVjdCB0aGUgYmVzdCBjaG9pY2UgZm9yIGVhY2ggYmxhbmsgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICkuIiwiYm9keSI6WyJGcm9tOiA8dGllQHNtYWlsLmNhPlxuVG86IDxrZXY4OEBuY2tjb2xsZWdlLmNhPlxuU3ViamVjdDogSW5mb2dyYXBoaWNcblxuSGV5IEtldmluLFxuXG5Ib3cncyB5b3VyIHdlZWtlbmQgZ29pbmc\/XG5cbkkgY2FtZSBhY3Jvc3MgdGhpcyBpbmZvZ3JhcGhpYyBvbiBhIG1hZ2F6aW5lJ3Mgd2Vic2l0ZSB0b2RheSBhbmQgdGhvdWdodCB5b3UgbWlnaHQgd2FudCB0byB0YWtlIGEgbG9vay4gVGhlIHJlc2VhcmNoIHJldmVhbGVkICIseyJiIjoxLCJvcHRpb25zIjpbImNoYW5nZXMgaW4ganVuayBmb29kIGNvbnN1bXB0aW9uIiwicGF0dGVybnMgaW4gYmV2ZXJhZ2UgY2hvaWNlcyIsIm9wdGlvbnMgZm9yIHBlb3BsZSB3b3JyaWVkIGFib3V0IHRoZWlyIGhlYWx0aCIsInJlYXNvbnMgZm9yIGdyb3d0aCBpbiBiZXZlcmFnZSBzYWxlcyJdLCJrZXkiOjJ9LCIuIEkgdGhpbmsgdGhlIGZhY3QgdGhhdCAiLHsiYiI6Miwib3B0aW9ucyI6WyJjb2ZmZWUgaXMgaW4gdGhpcmQgcGxhY2UiLCJzYWxlcyBvZiBibGFjayB0ZWEgYXJlIGxvdyIsInN3ZWV0IGRyaW5rcyBhcmUgdGhlIGxlYXN0IHBvcHVsYXIiLCJ3YXRlciBjb25zdW1wdGlvbiBpcyBkZWNsaW5pbmciXSwia2V5IjozfSwiIHJlYWxseSBzYXlzIHNvbWV0aGluZyBhYm91dCBvdXIgY291bnRyeVx1MjAxOXMgdHJlbmQgdG93YXJkcyBoZWFsdGhpZXIgY2hvaWNlcyBpbiBnZW5lcmFsLiBBbm90aGVyIHBvaW50IEkgZm91bmQgaW50ZXJlc3Rpbmcgd2FzIHRoYXQgdGhyZWUgb2YgdGhlIGJldmVyYWdlIGNob2ljZXMgbWVudGlvbiAiLHsiYiI6Mywib3B0aW9ucyI6WyJoZWFsdGgiLCJtb25leSIsImNhZmZlaW5lIiwic3VnYXIiXSwia2V5IjoyfSwiIGluIHRoZWlyIGV4cGxhbmF0aW9ucy4gSG93ZXZlciwgSSBndWVzcyB0aGF0IGluZm9ybWF0aW9uIGlzIG1vcmUgcmVsZXZhbnQgaW4gUHJvZmVzc29yIFRhbGViaVx1MjAxOXMgY2xhc3MhXG5cbkFsdGhvdWdoIHRoZSBpbmZvcm1hdGlvbiBtYXkgYmUgd3JpdHRlbiBhIGxpdHRsZSAiLHsiYiI6NCwib3B0aW9ucyI6WyJpbmZvcm1hbGx5Iiwic2VyaW91c2x5Iiwic2VudGltZW50YWxseSIsImdsb29taWx5Il0sImtleSI6MX0sIiwgSSB3YXMgd29uZGVyaW5nIGlmIHlvdSB0aG91Z2h0IHRoaXMgaW5mb2dyYXBoaWMgY291bGQgYmUgdXNlZnVsIGZvciBvdXIgZ3JvdXAgcHJlc2VudGF0aW9uIG5leHQgd2VlayBpbiBOdXRyaXRpb24gMTAxLiBEbyB5b3UgdGhpbmsgaXQgaXMgT0sgdG8gdXNlIHNvbWV0aGluZyB0aGF0IGlzIGJhc2VkIG9uICIseyJiIjo1LCJvcHRpb25zIjpbImEgc3VydmV5IG9mIGluZGl2aWR1YWwgQ2FuYWRpYW5zIiwiYW4gaW50ZXJ2aWV3IHdpdGggYSBidXNpbmVzcyBleHBlcnQiLCJhbiBhcHByb2FjaCB0aGF0IGlnbm9yZXMgaGlzdG9yaWNhbCBkYXRhIiwiYSBzZXQgb2YgYXNzdW1wdGlvbnMgYWJvdXQgQ2FuYWRpYW4gaGFiaXRzIl0sImtleSI6MX0sIj9cblxuQ2FuIHlvdSBsZXQgbWUga25vdyBiZWZvcmUgdGhpcyBUaHVyc2RheVx1MjAxOXMgY2xhc3M\/XG5cblRoYW5rcyxcblxuVGllIl19LHsidHlwZSI6InN0ZW1saXN0IiwiaW5zdHIiOiJVc2luZyB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICksIGNob29zZSB0aGUgYmVzdCBvcHRpb24uIiwiaXRlbXMiOlt7Im4iOjYsInByZSI6IlRpZSBtb3N0IGxpa2VseSB3cm90ZSB0aGlzIGVtYWlsIG9uIGEiLCJvcHRpb25zIjpbIlNhdHVyZGF5LiIsIldlZG5lc2RheS4iLCJUaHVyc2RheS4iLCJGcmlkYXkuIl0sImtleSI6MX0seyJuIjo3LCJwcmUiOiJUaWUgd291bGQgbGlrZSBLZXZpbidzIiwib3B0aW9ucyI6WyJhY2NlcHRhbmNlLiIsInBlcm1pc3Npb24uIiwiYXNzaXN0YW5jZS4iLCJvcGluaW9uLiJdLCJrZXkiOjR9LHsibiI6OCwicHJlIjoiSG93IGRvZXMgVGllIGZlZWwgYWJvdXQgdXNpbmcgdGhlIGluZm9ncmFwaGljIGluIHRoZSBwcmVzZW50YXRpb24\/Iiwib3B0aW9ucyI6WyJleGNpdGVkIiwiZGlzYXBwb2ludGVkIiwiY29uZmlkZW50IiwidW5zdXJlIl0sImtleSI6NH1dfV19LHsiaWQiOjMsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMzogUmVhZGluZyBmb3IgSW5mb3JtYXRpb24iLCJ0aW1lIjoiOSBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIHBhc3NhZ2UuIiwiaHRtbCI6IjxwPjxzdHJvbmc+QS48L3N0cm9uZz4gVGhlIFJveWFsIE9udGFyaW8gTXVzZXVtIChST00pLCBlc3RhYmxpc2hlZCBpbiAxOTEyIGluIFRvcm9udG8sIGlzIHRoZSBsYXJnZXN0IG11c2V1bSBpbiBDYW5hZGEuIEVhY2ggeWVhciwgb3ZlciBhIG1pbGxpb24gcGVvcGxlIHZpc2l0IGl0cyBnYWxsZXJpZXMgYW5kIHBhcnRpY2lwYXRlIGluIGl0cyBtYW55IHByb2dyYW1zLCB3aGljaCBpbmNsdWRlIGxlY3R1cmVzLCBmaWxtcywgZGVtb25zdHJhdGlvbnMsIGNvbmNlcnRzLCBhbmQgZHJhbWF0aWMgcGVyZm9ybWFuY2VzLiBUaGUgbXVzZXVtIGlzIGFsc28gQ2FuYWRhJ3MgbGFyZ2VzdCBmaWVsZC1yZXNlYXJjaCBpbnN0aXR1dGlvbiwgY29uZHVjdGluZyB3b3JsZHdpZGUgcmVzZWFyY2ggYW5kIGNvbnNlcnZhdGlvbiBhY3Rpdml0aWVzLiBJbml0aWFsbHkgYWRtaW5pc3RlcmVkIGJ5IHRoZSBuZWFyYnkgVW5pdmVyc2l0eSBvZiBUb3JvbnRvLCB0aGUgbXVzZXVtIGlzIG5vdyBhbiBpbmRlcGVuZGVudCBjb3Jwb3JhdGlvbiBvZiB0aGUgR292ZXJubWVudCBvZiBPbnRhcmlvLjwvcD48cD48c3Ryb25nPkIuPC9zdHJvbmc+IFRoZSBtdXNldW0gY2FtZSB0byBleGlzdCBsYXJnZWx5IGR1ZSB0byB0aGUgZWZmb3J0cyBvZiBDaGFybGVzIEN1cnJlbGx5LCBhIG1pbmlzdGVyLXR1cm5lZC1hcmNoYWVvbG9naXN0LCBhbmQgRWRtdW5kIFdhbGtlciwgYSBiYW5rZXIgd2l0aCBwaGlsYW50aHJvcGljIGludGVyZXN0cy4gVGhlIGZvcm1lciB3YW50ZWQgdG8gZXN0YWJsaXNoIGFuIGFyY2hhZW9sb2dpY2FsIG11c2V1bSBpbiBPbnRhcmlvOyB0aGUgbGF0dGVyIHdhbnRlZCB0byBlc3RhYmxpc2ggYW4gaW5zdGl0dXRpb24gaW4gQ2FuYWRhIHNpbWlsYXIgdG8gdGhlIGltcHJlc3NpdmUgZ2FsbGVyaWVzIGFuZCBtdXNldW1zIGluIE5ldyBZb3JrLiBBbHRob3VnaCBXYWxrZXIgd2FzIGluaXRpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBuYXR1cmFsIHdvcmxkJm1kYXNoO2hlIGNvbGxlY3RlZCBmb3NzaWxzIGFuZCBhcnJhbmdlZCBmdW5kaW5nIGZvciBkaW5vc2F1ciBkaWdzIGluIEFsYmVydGEmbWRhc2g7aGUgZXZlbnR1YWxseSBiZWNhbWUgaW50ZXJlc3RlZCBpbiB0aGUgY3VsdHVyYWwgd29ybGQgYXMgd2VsbC4gVGh1cywgb24gaGlzIGRlYXRoLCBoZSBkb25hdGVkIGEgY29sbGVjdGlvbiBvZiBKYXBhbmVzZSB3b29kYmxvY2sgcHJpbnRzIHRvIHRoZSBtdXNldW0uIFRvIHRoaXMgZGF5LCB0aGUgbXVzZXVtIGV4cGxvcmVzIGJvdGggd29ybGRzIGFuZCBpcywgZm9yIHRoYXQgcmVhc29uLCBvbmUgb2YgYSBraW5kIGFtb25nIHRoZSB3b3JsZCdzIG11c2V1bXMuPC9wPjxwPjxzdHJvbmc+Qy48L3N0cm9uZz4gVGhlIG11c2V1bSdzIE5hdHVyYWwgSGlzdG9yeSBkZXBhcnRtZW50IGhvbGRpbmdzIGluY2x1ZGUgYW1waGliaWFucywgcmVwdGlsZXMsIG1hbW1hbHMsIGJpcmRzLCBhbmQgb25lIG9mIHRoZSBiZXN0IGJhdCBjb2xsZWN0aW9ucyBvbiB0aGUgY29udGluZW50LiBJdCBhbHNvIGluY2x1ZGVzIHdvcmxkLWNsYXNzIGNvbGxlY3Rpb25zIG9mIG1pbmVyYWxzLCBnZW1zLCByb2NrcywgYW5kIG1ldGVvcml0ZXMsIGFuZCBhIHdvcmxkLXJlbm93bmVkIGNvbGxlY3Rpb24gb2YgZGlub3NhdXIgc2tlbGV0b25zLiBUaGUgV29ybGQgQ3VsdHVyZXMgZGVwYXJ0bWVudCBjb250YWlucyBldGhub2xvZ2ljYWwgY29sbGVjdGlvbnMgZmVhdHVyaW5nIGFydGlmYWN0cyBmcm9tIHRoZSBDYW5hZGlhbiBOb3J0aHdlc3QgQ29hc3QsIFBsYWlucywgSW51aXQsIGFuZCBXb29kbGFuZHMgY3VsdHVyZXMuIEl0IGFsc28gZmVhdHVyZXMgYXJ0aWZhY3RzIGZyb20gTmVhciBFYXN0ZXJuIGFuZCBBc2lhbiBjb2xsZWN0aW9ucywgd2hpY2ggaW5jbHVkZSB0b21iIGZpZ3VyaW5lcyBmcm9tIHRoZSBUYW5nIGR5bmFzdHk7IENhbmFkYSdzIGxhcmdlc3QgdGV4dGlsZSBhbmQgY29zdHVtZSBjb2xsZWN0aW9uOyBHcmVlaywgUm9tYW4sIGFuZCBCeXphbnRpbmUgY29sbGVjdGlvbnM7IGFuZCBzZXZlcmFsIEV1cm9wZWFuIGFuZCBlYXJseSBDYW5hZGlhbiBkZWNvcmF0aXZlIGFydHMgY29sbGVjdGlvbnMuPC9wPjxwPjxzdHJvbmc+RC48L3N0cm9uZz4gQW5vdGhlciB1bmlxdWUgZmVhdHVyZSBvZiB0aGUgbXVzZXVtIGlzIHRoZSBNaWNoYWVsIExlZS1DaGluIENyeXN0YWwsIHdoaWNoIGNvbnNpc3RzIG9mIGZpdmUgaW50ZXJsb2NraW5nIHByaXNtYXRpYyBzdHJ1Y3R1cmVzIGF0IHRoZSBlbnRyYW5jZSBvZiB0aGUgbXVzZXVtLiBUaGUgQ3J5c3RhbCdzIGFuZ2xlZCB3YWxscyBkbyBub3QgYWN0dWFsbHkgdG91Y2ggdGhlIG11c2V1bSdzIG9yaWdpbmFsIGJ1aWxkaW5nIGFuZCBwcm92aWRlIGEgc3RhcmsgY29udHJhc3Qgd2l0aCBpdHMgTmVvLVJvbWFuZXNxdWUgYXJjaGl0ZWN0dXJlLiBCb3RoIGhhcnNobHkgY3JpdGljaXplZCBhbmQgZW50aHVzaWFzdGljYWxseSBjZWxlYnJhdGVkLCB0aGUgQ3J5c3RhbCB3YXMgYnV0IG9uZSBhc3BlY3Qgb2YgdGhlIGhpZ2hseSBzdWNjZXNzZnVsIFwiUmVuYWlzc2FuY2VcIiBwcm9qZWN0LCBzdGFydGVkIGluIDIwMDIgdG8gYm9vc3QgdGhlIG11c2V1bSdzIHRpY2tldCBzYWxlcyBhbmQgY2FwYWNpdHkuIFRoZSBwcm9qZWN0IGFsc28gcmVzdWx0ZWQgaW4gbmV3IGFuZCByZW5vdmF0ZWQgZ2FsbGVyeSBzcGFjZXMgYWxsb3dpbmcgdHdpY2UgYXMgbWFueSBhcnRpZmFjdHMgYW5kIHNwZWNpbWVucyB0byBiZSBkaXNwbGF5ZWQsIGEgZGlnaXRhbCBnYWxsZXJ5IGVuYWJsaW5nIGFuIGludGVyYWN0aXZlIG11bHRpbWVkaWEgZXhwZXJpZW5jZSwgYW5kIGFkZGl0aW9uYWwgcmVzdGF1cmFudCBhbmQgcmV0YWlsIHNwYWNlLjwvcD48cD48c3Ryb25nPkUuPC9zdHJvbmc+IE5vdCBnaXZlbiBpbiBhbnkgb2YgdGhlIGFib3ZlIHBhcmFncmFwaHMuPC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJtYXRjaCIsImluc3RyIjoiRGVjaWRlIHdoaWNoIHBhcmFncmFwaCwgQSB0byBELCBoYXMgdGhlIGluZm9ybWF0aW9uIGdpdmVuIGluIGVhY2ggc3RhdGVtZW50IGJlbG93LiBTZWxlY3QgRSBpZiB0aGUgaW5mb3JtYXRpb24gaXMgbm90IGdpdmVuIGluIGFueSBvZiB0aGUgcGFyYWdyYXBocy4iLCJsZXR0ZXJzIjpbIkEiLCJCIiwiQyIsIkQiLCJFIl0sIml0ZW1zIjpbeyJuIjoxLCJ0ZXh0IjoiVGhlIG11c2V1bVx1MjAxOXMgc3BlY2lmaWMgY29sbGVjdGlvbnMgYXJlIHZlcnkgZGl2ZXJzZS4iLCJrZXkiOjN9LHsibiI6MiwidGV4dCI6IlRoZSBtdXNldW1cdTIwMTlzIGNvbGxlY3Rpb24gb2YgYXNzZW1ibGVkIGRpbm9zYXVyIGJvbmVzIGlzIGludGVybmF0aW9uYWxseSBmYW1vdXMuIiwia2V5IjozfSx7Im4iOjMsInRleHQiOiJUaGUgXHUyMDFjUmVuYWlzc2FuY2VcdTIwMWQgcHJvamVjdCB3YXMgbWVhbnQgdG8gaW5jcmVhc2UgbXVzZXVtIGF0dGVuZGFuY2UuIiwia2V5Ijo0fSx7Im4iOjQsInRleHQiOiJNdXNpY2FsIHBlcmZvcm1hbmNlcyBhcmUgc29tZXRpbWVzIHByZXNlbnRlZCBhdCB0aGUgbXVzZXVtLiIsImtleSI6MX0seyJuIjo1LCJ0ZXh0IjoiVGhlIFJveWFsIE9udGFyaW8gTXVzZXVtIHdhcyBhdCBmaXJzdCBlbnZpc2lvbmVkIGFzIG9uZSB0aGF0IHdvdWxkIGVtdWxhdGUgY2VydGFpbiBBbWVyaWNhbiBtdXNldW1zLiIsImtleSI6Mn0seyJuIjo2LCJ0ZXh0IjoiVGhlIFJPTSB1bmlxdWVseSBicmluZ3MgdG9nZXRoZXIgdGhlIGN1bHR1cmFsIGFuZCBzY2llbnRpZmljIHJlYWxtcy4iLCJrZXkiOjJ9LHsibiI6NywidGV4dCI6Ik5vd2FkYXlzLCB1bml2ZXJzaXR5IHNjaG9sYXJzIGZyb20gT250YXJpbywgQWxiZXJ0YSwgYW5kIENoaW5hIGNvbGxhYm9yYXRlIG9uIHNvbWUgUk9NIHJlc2VhcmNoIHByb2plY3RzLiIsImtleSI6NX0seyJuIjo4LCJ0ZXh0IjoiQSBjb250cm92ZXJzaWFsIGFyY2hpdGVjdHVyYWwgY29uZmlndXJhdGlvbiB3YXMgZXJlY3RlZCBuZWFyIHRoZSBST01cdTIwMTlzIGZyb250IGRvb3IuIiwia2V5Ijo0fSx7Im4iOjksInRleHQiOiJCZWZvcmUgYmVjb21pbmcgYSBzY2llbnRpc3QsIEN1cnJlbGx5IHNlcnZlZCB0aGUgY2h1cmNoLiIsImtleSI6Mn1dfV19LHsiaWQiOjQsIm5hbWUiOiJSZWFkaW5nIFBhcnQgNDogUmVhZGluZyBmb3IgVmlld3BvaW50cyIsInRpbWUiOiIxMiBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGFydGljbGUgZnJvbSBhIHdlYnNpdGUuIiwiaHRtbCI6IjxwPk9uIHNvY2lhbCBtZWRpYSBhbmQgYmxvZ3MsIG1hbnkgcGVvcGxlIHRocm93IGNhdXRpb24gdG8gdGhlIHdpbmQgd2hlbiBpdCBjb21lcyB0byBwcml2YWN5Jm1kYXNoO25vdCBqdXN0IHRoZWlyIG93biBidXQgdGhhdCBvZiB0aGVpciBmYW1pbHkgbWVtYmVycyBhcyB3ZWxsLiBTb2NpYWwgbWVkaWEgc2l0ZXMgZG8gaGF2ZSBjb21tdW5pdHkgc3RhbmRhcmRzLCBidXQsIGV4Y2VwdCBpbiBleHRyZW1lIGNhc2VzLCB0aGVyZSZyc3F1bztzIGxpdHRsZSBjb25zZW5zdXMgb24gd2hhdCZyc3F1bztzIHNvY2lhbGx5IGFwcHJvcHJpYXRlIHRvIHBvc3QgYW5kIHdoYXQgaXNuJnJzcXVvO3QuIEZvciB0aGlzIHJlYXNvbiwgbWFueSBiZWxpZXZlIHRoYXQgcGFyZW50cyBzaG91bGQgZXhlcmNpc2Ugc29tZSByZXN0cmFpbnQgaW4gb3JkZXIgdG8gcHJvdGVjdCB0aGVpciBjaGlsZHJlbiBmcm9tIGZ1dHVyZSBzaGFtZSBvciByaWRpY3VsZSBzdGVtbWluZyBmcm9tIG9ubGluZSBwb3N0aW5ncyBvZiB0aGVpciB0b2RkbGVyIHBpY3R1cmVzLjwvcD48cD5EdXJpbmcgdGhlIGxhc3QgZGVjYWRlLCBhIGdyb3dpbmcgbnVtYmVyIG9mIHByb3VkIHBhcmVudHMgaGF2ZSBzaGFyZWQgZGV0YWlscyBhYm91dCB0aGVpciBiYWJpZXMgYW5kIHlvdW5nIGNoaWxkcmVuIG9uIGJsb2dzLiBBbXkgU21pdGgsIGEgVG9yb250byBzdGF5LWF0LWhvbWUgbW90aGVyIG9mIHR3by15ZWFyLW9sZCB0d2lucywgc2F5cyBzaGUgYmxvZ3MgYmVjYXVzZSBpdCZyc3F1bztzICZsZHF1bzthIHdheSBvZiBzaGFyaW5nIG15IHdvcnJpZXMgYW5kIGdldHRpbmcgYWR2aWNlLiBJdCZyc3F1bztzIGxvbmVseSBhbmQgc2NhcnkgYmVpbmcgYSBuZXcgbW9tLiZyZHF1bzsgU2hlIHZhbHVlcyB0aGUgdmlydHVhbCBjb25uZWN0aW9uIHdpdGggbW9tcyBhbGwgb3ZlciB0aGUgd29ybGQgaW4gc2ltaWxhciBzaXR1YXRpb25zLiBFZG1vbnRvbmlhbiBKZW5uIE9ha2xleSwgYSBzb2Z0d2FyZSBkZXZlbG9wZXIgb24gbWF0ZXJuaXR5IGxlYXZlLCBhZG1pdHMgdGhhdCBibG9nZ2luZyBzZXJ2ZXMgYXMgYSBmYW1pbGlhciBhY3Rpdml0eSB0aGF0IG9mZnNldHMgdGhlIGludGVuc2UgY2hhbGxlbmdlcyBvZiBwYXJlbnRob29kLiAmbGRxdW87SSBmZWVsIGNvbXBldGVudCBkb2luZyBhbnl0aGluZyBvbiB0aGUgY29tcHV0ZXIsJnJkcXVvOyBzaGUgc2F5cywgJmxkcXVvO2J1dCBJIGZlZWwgbGlrZSBhIHN0cnVnZ2xpbmcgbmV3YmllIGJlaW5nIGEgbW90aGVyLiZyZHF1bzs8L3A+PHA+QmxvZ2dpbmcgbWF5IGJlIGEgcmVmcmVzaGluZyByZWxpZWYgZnJvbSBjaGFuZ2luZyBkaWFwZXJzIGFuZCBsYXVuZGVyaW5nIGJpYnMsIGJ1dCBWYW5jb3V2ZXIgcHN5Y2hvbG9naXN0IEphbmljZSBLaW1tZWwgd2FybnMgdGhhdCBwYXJlbnRzIG5lZWQgdG8gc3RvcCBhbmQgdGhpbmsgYmVmb3JlIHB1YmxpY2x5IHNoYXJpbmcgdGhlIGRldGFpbHMgb2YgdGhlaXIgY2hpbGRyZW4mcnNxdW87cyBsaXZlcy4gJmxkcXVvO0EgYmxvZyBpcyBmb3JldmVyLCZyZHF1bzsgc2hlIHNheXMuICZsZHF1bztPbmNlIHRoZXkmcnNxdW87cmUgYWRvbGVzY2VudHMsIGtpZHMgdGVuZCB0byBiZSBtb3J0aWZpZWQgaWYgdGhleSBmaW5kIHRoZWlyIGJhYnkgcGljdHVyZXMgb3IgdG9kZGxlciBtaXNhZHZlbnR1cmUgdGFsZXMgb25saW5lLiZyZHF1bzsgSGFsaWZheCBldmVudCBwbGFubmVyIERvcmlzIEpvbmVzIHdhcyBzaG9ja2VkIHRvIGxlYXJuIGZyb20gaGVyIHRlbi15ZWFyLW9sZCB0aGF0IGhpcyBmcmllbmRzIHdlcmUgbW9ja2luZyBoaW0gYWJvdXQgYSBwaWN0dXJlIHRoZXkmcnNxdW87ZCBmb3VuZCBvbiBoZXIgYmxvZy4gJmxkcXVvO0l0IHdhcyBhbiBpbm5vY2VudCBwaWN0dXJlIG9mIG15IHNvbiBhbmQgaGlzIHNpc3RlciBpbiB0aGUgYmF0aHR1YiB3aGVuIHRoZXkgd2VyZSB0b2RkbGVycy4gVGhlcmUgYXJlIG1pbGxpb25zIG9mIHBob3RvcyBsaWtlIHRoaXMgb24gdGhlIG5ldCwgYnV0IHN0aWxsIG15IHNvbiZyc3F1bztzIGJlZW4gdGhlIGJ1dHQgb2Ygam9rZXMgYWxsIHllYXIgYXQgc2Nob29sLiZyZHF1bzsgSmFuaWNlIEtpbW1lbCBpc24mcnNxdW87dCBzdXJwcmlzZWQuICZsZHF1bztXZSBtdXN0IHJlc3BlY3Qgb3VyIGNoaWxkcmVuJnJzcXVvO3MgcHJpdmFjeSwmcmRxdW87IHNoZSBjYXV0aW9ucy4gJmxkcXVvO0JlZm9yZSB5b3UgcG9zdCwgdGhpbmsgYWJvdXQgeW91ciBjaGlsZCZyc3F1bztzIGZ1dHVyZS4mcmRxdW87PC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gb24gdGhlIHdlYnNpdGUuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IldoaWNoIHN0YXRlbWVudCB3b3VsZCBTbWl0aCBhbmQgT2FrbGV5IGFncmVlIHdpdGg\/Iiwib3B0aW9ucyI6WyJCbG9nZ2luZyBhYm91dCBhIGJhYnkgaXMgaGFyZGVyIHRoYW4gcmFpc2luZyBhIGJhYnkuIiwiQmxvZ2dpbmcgaGVscHMgcmVkdWNlcyB0aGUgc3RyZXNzIG9mIHN1ZGRlbiBsaWZlc3R5bGUgY2hhbmdlcy4iLCJQYXJlbnRzIHNob3VsZCBhY2NlcHQgc29tZSBpc29sYXRpb24gYXMgdW5hdm9pZGFibGUuIiwiUGFyZW50cyBzaG91bGQga2VlcCB0aGVpciBwYXJlbnRpbmcgc3RvcmllcyBwcml2YXRlLiJdLCJrZXkiOjJ9LHsibiI6MiwicHJlIjoiV2hhdCBjYW4gd2UgbW9zdCByZWFzb25hYmx5IGNvbmNsdWRlIGZyb20gdGhlIGFydGljbGU\/Iiwib3B0aW9ucyI6WyJCbG9nZ2VycyBzaG91bGQgdXNlIGEgbmFtZSB0aGF0IGhpZGVzIHRoZWlyIHRydWUgaWRlbnRpdHkuIiwiQ2hpbGRjYXJlIHNraWxscyBkbyBub3QgY29tZSBuYXR1cmFsbHkgdG8gYWxsIHdvbWVuLiIsIktpZHMgYXJlIHNhZmVyIGlmIHN0cmFuZ2VycyBkb25cdTIwMTl0IGtub3cgYWJvdXQgdGhlaXIgbGl2ZXMuIiwiUGFyZW50cyBzaG91bGQgdGhpbmsgYmVmb3JlIHNoYXJpbmcgc29tZSBkZXRhaWxzIG9ubGluZS4iXSwia2V5Ijo0fSx7Im4iOjMsInByZSI6IldoaWNoIHRpdGxlIGJlc3QgY2FwdHVyZXMgdGhlIE1BSU4gaWRlYT8iLCJvcHRpb25zIjpbIkJsb2dzIENvbWZvcnQgTW9tcyBidXQgUmlzayBLaWRzXHUyMDE5IFByaXZhY3kiLCJOZXdiaWUgUGFyZW50cyBEaXNwZWwgRmVhcnMgYnkgQmxvZ2dpbmciLCJQYXJlbnRhbCBCbG9nZ2luZyBpcyBhIEZhc3QgR3Jvd2luZyBUcmVuZCIsIlNvZnR3YXJlIERldmVsb3BlciBUdXJucyBNb21teSBCbG9nZ2VyIl0sImtleSI6MX0seyJuIjo0LCJwcmUiOiJXaG8gd291bGQgYmUgbW9zdCBpbnRlcmVzdGVkIGluIHJlYWRpbmcgdGhpcyBhcnRpY2xlPyIsIm9wdGlvbnMiOlsiaGlnaCBzY2hvb2wgc3R1ZGVudHMgd2l0aCB5b3VuZ2VyIHNpYmxpbmdzIiwiZmlyc3QtdGltZSBzdGF5LWF0LWhvbWUgbW90aGVycyIsInBzeWNob2xvZ2lzdHMgc3BlY2lhbGl6aW5nIGluIGNoaWxkIGFidXNlIiwic29jaWFsIG1lZGlhIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMiXSwia2V5IjoyfSx7Im4iOjUsInByZSI6IldlIGNhbiBjb25jbHVkZSB0aGF0IHBhcmVudGluZyBibG9ncyBhcmUgYSIsIm9wdGlvbnMiOlsiYmVuZWZpdCB0byBmYW1pbGllcy4iLCJjb250ZW50aW91cyBpc3N1ZS4iLCJuby13aW4gc2l0dWF0aW9uLiIsInRocmVhdCB0byB0b2RkbGVycy4iXSwia2V5IjoyfV19LHsidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJUaGUgZm9sbG93aW5nIGlzIGEgY29tbWVudCBieSBhIHZpc2l0b3IgdG8gdGhlIHdlYnNpdGUgcGFnZS4gQ29tcGxldGUgdGhlIGNvbW1lbnQgYnkgY2hvb3NpbmcgdGhlIGJlc3Qgb3B0aW9uIHRvIGZpbGwgaW4gZWFjaCBibGFuay4iLCJib2R5IjpbIkkgd2lzaCBwYXJlbnQgYmxvZ3MgaGFkIGJlZW4gYXJvdW5kIHdoZW4gbXkga2lkcyB3ZXJlIGxpdHRsZS4gSSB0b3RhbGx5IGFncmVlIHRoYXQgdGhleSAiLHsiYiI6Niwib3B0aW9ucyI6WyJpbnN0cnVjdCBtb21zIGluIHRoZSBwcm9wZXIgd2F5IG9mIiwicHJvdmlkZSBlYXN5IGVudGVydGFpbm1lbnQgd2hlbiIsInJlZHVjZSB0aGUgd29ya2xvYWQgaW52b2x2ZWQgaW4iLCJyZWxpZXZlIHNvbWUgb2YgdGhlIHN0cmVzcyBvZiJdLCJrZXkiOjR9LCIgY2FyaW5nIGZvciBhIGJhYnkuIEZvciB0aGUgc3RheS1hdC1ob21lIG5ldyBtb21zIHlvdSBwcm9maWxlLCAiLHsiYiI6Nywib3B0aW9ucyI6WyJmZWVsaW5nIGNhcGFibGUgaW4iLCJrZWVwaW5nIGJ1c3kgd2l0aCIsIm9mZmVyaW5nIGFkdmljZSBvbiIsInBvc3RpbmcgcGhvdG9zIG9mIl0sImtleSI6MX0sIiBhdCBsZWFzdCBvbmUgcGFyZW50LXJlbGF0ZWQgYWN0aXZpdHkgaXMgY2xlYXJseSB2ZXJ5IGltcG9ydGFudC5cblxuTGlrZSB0aGUgYXV0aG9yLCBJIHRoaW5rIHRoYXQgbW9tcyBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBibG9ncyBhcmUgIix7ImIiOjgsIm9wdGlvbnMiOlsiYm9yaW5nIHRvIHJlYWRlcnMiLCJwdWJsaWMgYW5kIGV2ZXJsYXN0aW5nIiwiZmFyIHRvbyB0aW1lIGNvbnN1bWluZyIsInRvbyBoYXJtZnVsIHRvIGNoaWxkcmVuIl0sImtleSI6Mn0sIi4gTGlrZSBEb3JpcyBKb25lc1x1MjAxOSB0ZW4teWVhci1vbGQsIEkgd291bGQgY2VydGFpbmx5IGZlZWwgIix7ImIiOjksIm9wdGlvbnMiOlsiYW11c2VkIiwiZW1iYXJyYXNzZWQiLCJvZmZlbmRlZCIsInVuc2FmZSJdLCJrZXkiOjJ9LCIgaWYgSSBmb3VuZCBhbiBvbmxpbmUgcGhvdG8gb2YgbXlzZWxmIGFzIGEgZmF0IGxpdHRsZSB0b2RkbGVyIHNwbGFzaGluZyBhdSBuYXR1cmVsIGluIHRoZSB3YXRlci4gVGhhdCB3b3VsZCBiZSBteSBtb3RoZXJcdTIwMTlzIGZhdm91cml0ZSBwaWN0dXJlLCBidXQgc2hlXHUyMDE5ZCBrZWVwIGl0IGluIGhlciB3YWxsZXQsIGZvciBoZXIgZXllcyBvbmx5LiBJZiBibG9nZ2VycyByZW1lbWJlcmVkIGhvdyBhbmQgd2hlcmUgdGhlaXIgb3duIG1vbXMgZGlzcGxheWVkIHRoZWlyIGJhYnkgcGljdHVyZXMsIG1heWJlIHRoZXJlXHUyMDE5ZCBiZSBtb3JlICIseyJiIjoxMCwib3B0aW9ucyI6WyJlYWdlcm5lc3MiLCJkaXNjcmV0aW9uIiwibW9kZXN0eSIsInNhZmV0eSJdLCJrZXkiOjJ9LCIuIl19XX1dfTsKCmZ1bmN0aW9uIGNsYkVzdGltYXRlUihyYXcpewogIGlmIChyYXcgPj0gMzUpIHJldHVybiB7IGxldmVsOidDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6J0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOidDRUxQSVAgOScsICBub3RlOidFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA4JywgIG5vdGU6J0dvb2QgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyMikgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA3JywgIG5vdGU6J0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNicsICBub3RlOidEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNScsICBub3RlOidBY3F1aXJpbmcgcHJvZmljaWVuY3knIH07CiAgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA0IG9yIGJlbG93Jywgbm90ZTonS2VlcCBwcmFjdGljaW5nIScgfTsKfQoKKGZ1bmN0aW9uKCl7CiAgLyogLS0tLSBpbmplY3Qgc2NvcGVkIENTUyAoV29yZFByZXNzLXNhZmU6IDxzdHlsZT4gaW4gY29udGVudCBjYW4gYmUgc3RyaXBwZWQpIC0tLS0gKi8KICB2YXIgQ1NTID0gYAouY2xwci13cmFwey0tbmF2eTojMDUwRTIwOy0tYjkwMDojMEQyMzUyOy0tYjcwMDojMTI0NUE4Oy0tYjUwMDojMjU2M0VCOy0tYjQwMDojM0I4MkY2Oy0tYjIwMDojOTNDNUZEOy0tYjEwMDojREJFQUZFOy0tYjUwOiNFRkY2RkY7LS10ZWFsOiMwRDk0ODg7LS1jeWFuOiMwNkI2RDQ7LS1ncmVlbjojMTBCOTgxOy0tZ3JlZW41MDojRUNGREY1Oy0tcm9zZTojRjQzRjVFOy0tdGV4dDojMEYxNzJBOy0tbXV0ZWQ6IzQ3NTU2OTstLXN1YnRsZTojOTRBM0I4Oy0tYm9yZGVyOiNFMkU4RjA7LS1iYXItYmc6I0U4RUJFRjstLWJhci1ib3JkZXI6I0QzRDlFMDstLWJhci10ZXh0OiMxRjI5Mzc7LS1wYW5lbC1wLWJnOiNGNEY1Rjc7LS1wYW5lbC1wLWJvcmRlcjojRTNFNkVBOy0tcGFuZWwtcS1iZzojRTlGNEY3Oy0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDstLWRkLW9wZW4tYmc6I0NCRUJGNDtmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO21heC13aWR0aDoxMTgwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjE2cHggMTZweCA1NnB4O2xpbmUtaGVpZ2h0OjEuNTtmb250LXNpemU6MTZweDt9Ci5jbHByLXdyYXAgKiwuY2xwci13cmFwICo6OmJlZm9yZSwuY2xwci13cmFwICo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDt9Ci5jbHByLXdyYXAgYnV0dG9ue2ZvbnQtZmFtaWx5OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7fQouY2xwci13cmFwIGgxLC5jbHByLXdyYXAgaDIsLmNscHItd3JhcCBoMywuY2xwci13cmFwIHB7bWFyZ2luOjA7fQouY2xwci1oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjIycHg7YmFja2dyb3VuZDp2YXIoLS1uYXZ5KTtjb2xvcjojZmZmO3BhZGRpbmc6MzRweCAzOHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEzcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpO30KLmNscHItYXVyb3Jhe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt9Ci5jbHByLWF1cm9yYSBzcGFue3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7ZmlsdGVyOmJsdXIoNDZweCk7b3BhY2l0eTouNTU7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7d2lkdGg6NDIwcHg7aGVpZ2h0OjQyMHB4O2xlZnQ6LTEyMHB4O3RvcDotMjAwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXt3aWR0aDozODBweDtoZWlnaHQ6MzgwcHg7cmlnaHQ6LTgwcHg7dG9wOi0xNjBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpe3dpZHRoOjM0MHB4O2hlaWdodDozNDBweDtyaWdodDoyMiU7Ym90dG9tOi0yNDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItaGVyby1iYWRnZXN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9Ci5jbHByLWJhZGdlLWJyYW5ke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1iOTAwKTtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7cGFkZGluZzo0cHggMTFweDtib3JkZXItcmFkaXVzOjk5OXB4O2xldHRlci1zcGFjaW5nOi4wMWVtO30KLmNscHItYmFkZ2Utc2V0e2NvbG9yOnZhcigtLWIyMDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDt9Ci5jbHByLWhlcm8gaDF7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpO2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07bGluZS1oZWlnaHQ6MS4xMjt9Ci5jbHByLWhlcm8tc3Vie3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiNDN0QyRTM7Zm9udC1zaXplOjE0LjVweDttYXgtd2lkdGg6NzYwcHg7fQouY2xwci1oZXJvLWNoaXBze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30KLmNscHItY2hpcHtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojRTVFRUZCO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMTYpO3BhZGRpbmc6NXB4IDExcHg7Ym9yZGVyLXJhZGl1czo5OTlweDt9Ci5jbHByLWN0YXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjZweDtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNXB4O3BhZGRpbmc6MTJweCAyMnB4O2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OjAgMTJweCAyNHB4IC0xMHB4IHJnYmEoMzcsOTksMjM1LC44KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzLGJhY2tncm91bmQgLjE1czt9Ci5jbHByLWN0YTpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtiYWNrZ3JvdW5kOnZhcigtLWI0MDApO30KLmNscHItdG9vbGJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21hcmdpbi10b3A6MThweDtwYWRkaW5nOjEwcHggMTRweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTRweDtib3gtc2hhZG93OjAgNnB4IDE4cHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjUpO3Bvc2l0aW9uOnN0aWNreTt0b3A6OHB4O3otaW5kZXg6MzA7fQouY2xwci10b29sYmFyW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItdG9vbGJhci1zcGFjZXJ7ZmxleDoxO30KLmNscHItc2NvcmUtY2hpcHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O30KLmNscHItdGJ0bntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtwYWRkaW5nOjhweCAxNXB4O2JvcmRlci1yYWRpdXM6MTBweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTJzLGJveC1zaGFkb3cgLjEyczt9Ci5jbHByLXRidG46aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7Ym94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7fQouY2xwci10YnRuLWNoZWNre2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2JvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjt9Ci5jbHByLXRidG4tY2hlY2s6aG92ZXJ7YmFja2dyb3VuZDojMGNhNjc4O30KLmNscHItdGJ0bltkaXNhYmxlZF17b3BhY2l0eTouNTtjdXJzb3I6bm90LWFsbG93ZWQ7dHJhbnNmb3JtOm5vbmU7Ym94LXNoYWRvdzpub25lO30KLmNscHItc2lte21hcmdpbi10b3A6MTZweDt9Ci5jbHByLXNpbVtoaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLWRvdHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2luOjAgMCAxMnB4IDJweDtmbGV4LXdyYXA6d3JhcDt9Ci5jbHByLWRvdHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmFsbCAuMTVzO30KLmNscHItZG90IGJ7ZGlzcGxheTppbmxpbmUtZmxleDt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjEwMCk7Y29sb3I6dmFyKC0tYjkwMCk7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjExcHg7fQouY2xwci1kb3QuY2xwci1jdXJ7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjt9Ci5jbHByLWRvdC5jbHByLWN1ciBie2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMjUpO2NvbG9yOiNmZmY7fQouY2xwci1kb3QuY2xwci1kb25lIGJ7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjt9Ci5jbHByLWNhdHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuNCk7fQouY2xwci1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjExcHggMTZweDtiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1iYXItdGl0bGV7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWJhci10ZXh0KTtmbGV4OjE7bWluLXdpZHRoOjA7fQouY2xwci1iYXItdGltZXJ7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tYmFyLXRleHQpO3doaXRlLXNwYWNlOm5vd3JhcDt9Ci5jbHByLWJhci10aW1lciBie2ZvbnQtd2VpZ2h0OjgwMDt9Ci5jbHByLWNvbHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDowO30KLmNscHItcGFzc2FnZXtwYWRkaW5nOjIwcHggMjJweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXAtYmcpO2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO21heC1oZWlnaHQ6MTIwMHB4O292ZXJmbG93OmF1dG87fQouY2xwci1xY29se3BhZGRpbmc6MThweCAyMnB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7bWF4LWhlaWdodDoxMjAwcHg7b3ZlcmZsb3c6YXV0bzt9Ci5jbHByLXBsYWJlbCwuY2xwci1pbnN0cntkaXNwbGF5OmZsZXg7Z2FwOjlweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTttYXJnaW4tYm90dG9tOjEycHg7fQouY2xwci1wbGFiZWw6OmJlZm9yZSwuY2xwci1pbnN0cjo6YmVmb3Jle2NvbnRlbnQ6ImkiO2ZsZXg6bm9uZTt3aWR0aDoxN3B4O2hlaWdodDoxN3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo4MDA7Zm9udC1zdHlsZTppdGFsaWM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MXB4O30KLmNscHItcGFzc2FnZSBwe2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzFlMmEzYTttYXJnaW4tYm90dG9tOjExcHg7bGluZS1oZWlnaHQ6MS43Mjt9Ci5jbHByLXBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmZmY7ZGlzcGxheTpibG9jazt9Ci5jbHByLWJsb2Nre2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNnB4IDE2cHg7bWFyZ2luLWJvdHRvbToxNnB4O30KLmNscHItc3RlbXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXA7Zm9udC1zaXplOjE1cHg7Y29sb3I6dmFyKC0tdGV4dCk7cGFkZGluZzo5cHggMDtsaW5lLWhlaWdodDoxLjc7fQouY2xwci1zdGVtICsgLmNscHItc3RlbXtib3JkZXItdG9wOjFweCBkYXNoZWQgI0U2RURGMTt9Ci5jbHByLXNudW17Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOnZhcigtLWI3MDApO30KLmNscHItY2xvemV7Zm9udC1zaXplOjE1cHg7Y29sb3I6dmFyKC0tdGV4dCk7bGluZS1oZWlnaHQ6Mi4xNTt9Ci5jbHByLWNsb3plIC5jbHByLXBhcmF7bWFyZ2luLWJvdHRvbToxMnB4O3doaXRlLXNwYWNlOnByZS13cmFwO30KLmNscHItbWF0Y2gtcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTFweCAwO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42O30KLmNscHItbWF0Y2gtcm93ICsgLmNscHItbWF0Y2gtcm93e2JvcmRlci10b3A6MXB4IGRhc2hlZCAjRTZFREYxO30KLmNscHItbWF0Y2gtcm93IC5jbHByLXNudW17bWFyZ2luLXRvcDo1cHg7fQovKiBkcm9wZG93biB3aWRnZXQgKi8KLmNscHItZGR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjJweCAycHg7fQouY2xwci1kZC1idG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttaW4td2lkdGg6NjRweDttYXgtd2lkdGg6MzQwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0I3QzJDRTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjVweCA5cHg7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS10ZXh0KTtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246bGVmdDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjEycyxib3JkZXItY29sb3IgLjEyczt9Ci5jbHByLWRkLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30KLmNscHItZGQuY2xwci1vcGVuIC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9Ci5jbHByLWRkLXR4dHtmbGV4OjE7bWluLXdpZHRoOjA7fQouY2xwci1kZC10eHQuY2xwci1lbXB0eXtjb2xvcjp2YXIoLS1zdWJ0bGUpO2xldHRlci1zcGFjaW5nOjNweDt9Ci5jbHByLWRkLWNhcmV0e2ZvbnQtc2l6ZTo5cHg7Y29sb3I6dmFyKC0tYjcwMCk7ZmxleDpub25lO30KLmNscHItZGQtbWVudXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjYwO3RvcDpjYWxjKDEwMCUgKyA0cHgpO2xlZnQ6MDttaW4td2lkdGg6MjQwcHg7bWF4LXdpZHRoOjM2MHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNDNkQwREE7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDE2cHggMzRweCAtMTJweCByZ2JhKDE1LDIzLDQyLC40KTtwYWRkaW5nOjVweDtkaXNwbGF5Om5vbmU7fQouY2xwci1kZC5jbHByLW9wZW4gLmNscHItZGQtbWVudXtkaXNwbGF5OmJsb2NrO30KLmNscHItZGQtb3B0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo5cHg7cGFkZGluZzo4cHggOXB4O2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tdGV4dCk7Y3Vyc29yOnBvaW50ZXI7bGluZS1oZWlnaHQ6MS40O30KLmNscHItZGQtb3B0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjUwKTt9Ci5jbHByLWRkLW9wdCAuY2xwci1yYWRpb3tmbGV4Om5vbmU7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MS41cHggc29saWQgIzlBQTdCNDttYXJnaW4tdG9wOjFweDt9Ci5jbHByLWRkLW9wdC5jbHByLXNlbCAuY2xwci1yYWRpb3tib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgNDIlLCNmZmYgNDclKTt9Ci5jbHByLWRkLmNscHItcmlnaHQgLmNscHItZGQtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7Y29sb3I6IzA0Nzg1Nzt9Ci5jbHByLWRkLmNscHItd3JvbmcgLmNscHItZGQtYnRue2JhY2tncm91bmQ6I0ZGRjFGMjtib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpO2NvbG9yOiNCRTEyM0M7fQouY2xwci1zb2x2ZWR7ZGlzcGxheTpub25lO21hcmdpbi1sZWZ0OjdweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDQ3ODU3O30KLmNscHItZGQuY2xwci13cm9uZyAuY2xwci1zb2x2ZWR7ZGlzcGxheTppbmxpbmU7fQouY2xwci1uYXZ7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTRweCAxOHB4O2JhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLW5hdmJ0bntiYWNrZ3JvdW5kOnZhcigtLWI5MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7cGFkZGluZzo5cHggMjBweDtib3JkZXItcmFkaXVzOjlweDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTJzLGJhY2tncm91bmQgLjEyczt9Ci5jbHByLW5hdmJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI3MDApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO30KLmNscHItbmF2YnRuLmNscHItZ2hvc3R7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItbmF2YnRuW2Rpc2FibGVkXXtvcGFjaXR5Oi40O2N1cnNvcjpub3QtYWxsb3dlZDt0cmFuc2Zvcm06bm9uZTt9Ci5jbHByLXJlc3VsdHN7bWFyZ2luLXRvcDoxOHB4O30KLmNscHItcmVzdWx0c1toaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLXJlcy1jYXJke2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxOHB4O3BhZGRpbmc6MjRweCAyNnB4O2JveC1zaGFkb3c6MCAxNnB4IDQwcHggLTIycHggcmdiYSgxNSwyMyw0MiwuNCk7fQouY2xwci1yZXMtdG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjIwcHg7ZmxleC13cmFwOndyYXA7fQouY2xwci1yZXMtc2NvcmV7Zm9udC1zaXplOjQ0cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOnZhcigtLWI3MDApO2xpbmUtaGVpZ2h0OjE7fQouY2xwci1yZXMtc2NvcmUgc3Bhbntmb250LXNpemU6MjBweDtjb2xvcjp2YXIoLS1zdWJ0bGUpO30KLmNscHItcmVzLWNsYntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxMHB4IDE2cHg7fQouY2xwci1yZXMtY2xiIGJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MThweDtjb2xvcjp2YXIoLS1iOTAwKTt9Ci5jbHByLXJlcy1jbGIgc21hbGx7Y29sb3I6dmFyKC0tbXV0ZWQpO30KLmNscHItcmVzLWJyZWFre2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjE2cHg7fQouY2xwci1yZXMtcGlsbHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2JhY2tncm91bmQ6I0YxRjVGOTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NnB4IDEzcHg7fQouY2xwci1yZXMtYWN0aW9uc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLXRvcDoxOHB4O2ZsZXgtd3JhcDp3cmFwO30KQG1lZGlhKG1heC13aWR0aDo4MjBweCl7LmNscHItY29sc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uY2xwci1wYXNzYWdle2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTttYXgtaGVpZ2h0Om5vbmU7fS5jbHByLXFjb2x7bWF4LWhlaWdodDpub25lO319CmA7CiAgdmFyIHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsgc3QudGV4dENvbnRlbnQgPSBDU1M7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpOwogIHZhciB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJXcmFwJyk7CiAgdmFyIHN0YXJ0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTdGFydCcpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJUb29sYmFyJyk7CiAgdmFyIHNpbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU2ltJyk7CiAgdmFyIGRvdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByRG90cycpOwogIHZhciBjYXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByQ2F0Jyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmVzdWx0cycpOwogIHZhciBzY29yZUNoaXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclNjb3JlQ2hpcCcpOwogIHZhciBjaGVja0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByQ2hlY2snKTsKICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJlc2V0Jyk7CgogIHZhciBRID0gW107CiAgdmFyIGN1clBhcnQgPSAwOwogIHZhciBjaGVja2VkID0gZmFsc2U7CgogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCBodG1sKXsgdmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOyBpZihjbHMpZS5jbGFzc05hbWU9Y2xzOyBpZihodG1sIT1udWxsKWUuaW5uZXJIVE1MPWh0bWw7IHJldHVybiBlOyB9CgogIC8qIEJ1aWxkIHRoZSBwZXJzaXN0ZW50IHF1ZXN0aW9uIGxpc3QgT05DRTsgYXR0YWNoIC5fcSB0byBlYWNoIGl0ZW0vYmxhbmsgc28KICAgICByZS1yZW5kZXJpbmcgYSBwYXJ0IHJldXNlcyB0aGUgc2FtZSBzdGF0ZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0LiAqLwogIGZ1bmN0aW9uIGluaXRRdWVzdGlvbnMoKXsKICAgIFEgPSBbXTsKICAgIFJEQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCl7CiAgICAgIHBhcnQuYmxvY2tzLmZvckVhY2goZnVuY3Rpb24oYmxrKXsKICAgICAgICBpZihibGsudHlwZT09PSdjbG96ZScpewogICAgICAgICAgYmxrLmJvZHkuZm9yRWFjaChmdW5jdGlvbih0b2speyBpZih0eXBlb2YgdG9rPT09J29iamVjdCcpeyB0b2suX3E9e3NlbDpudWxsLGtleTp0b2sua2V5LG46dG9rLmIscGFydDpwYXJ0LmlkfTsgUS5wdXNoKHRvay5fcSk7IH0gfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJsay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsgaXQuX3E9e3NlbDpudWxsLGtleTppdC5rZXksbjppdC5uLHBhcnQ6cGFydC5pZH07IFEucHVzaChpdC5fcSk7IH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIG1ha2VEcm9wZG93bihvcHRpb25zLCBxcmVmKXsKICAgIHZhciBkZCA9IGVsKCdzcGFuJywnY2xwci1kZCcpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCdjbHByLWRkLWJ0bicpOwogICAgdmFyIHR4dCA9IGVsKCdzcGFuJywnY2xwci1kZC10eHQgY2xwci1lbXB0eScsJyAgICcpOwogICAgdmFyIGNhcmV0ID0gZWwoJ3NwYW4nLCdjbHByLWRkLWNhcmV0JywnXHUyNWJlJyk7CiAgICBidG4uYXBwZW5kQ2hpbGQodHh0KTsgYnRuLmFwcGVuZENoaWxkKGNhcmV0KTsKICAgIHZhciBzb2x2ZWQgPSBlbCgnc3BhbicsJ2NscHItc29sdmVkJywnJyk7CiAgICB2YXIgbWVudSA9IGVsKCdzcGFuJywnY2xwci1kZC1tZW51Jyk7CiAgICBvcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBpKXsKICAgICAgdmFyIG8gPSBlbCgnc3BhbicsJ2NscHItZGQtb3B0Jyk7CiAgICAgIG8uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXJhZGlvJykpOwogICAgICBvLmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLG9wdCkpOwogICAgICBvLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGlmKGNoZWNrZWQpIHJldHVybjsKICAgICAgICBxcmVmLnNlbCA9IGkrMTsKICAgICAgICB0eHQudGV4dENvbnRlbnQgPSBvcHQ7IHR4dC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsKICAgICAgICBtZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLW9wdCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLXNlbCcpO30pOwogICAgICAgIG8uY2xhc3NMaXN0LmFkZCgnY2xwci1zZWwnKTsKICAgICAgICBjbG9zZUFsbCgpOwogICAgICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgICB9KTsKICAgICAgbWVudS5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgaWYoY2hlY2tlZCkgcmV0dXJuOwogICAgICB2YXIgd2FzT3BlbiA9IGRkLmNsYXNzTGlzdC5jb250YWlucygnY2xwci1vcGVuJyk7CiAgICAgIGNsb3NlQWxsKCk7CiAgICAgIGlmKCF3YXNPcGVuKSBkZC5jbGFzc0xpc3QuYWRkKCdjbHByLW9wZW4nKTsKICAgIH0pOwogICAgZGQuYXBwZW5kQ2hpbGQoYnRuKTsgZGQuYXBwZW5kQ2hpbGQoc29sdmVkKTsgZGQuYXBwZW5kQ2hpbGQobWVudSk7CiAgICBxcmVmLmRkRWwgPSBkZDsgcXJlZi50eHRFbCA9IHR4dDsgcXJlZi5zb2x2ZWRFbCA9IHNvbHZlZDsgcXJlZi5vcHRpb25zID0gb3B0aW9uczsKICAgIGlmKHFyZWYuc2VsIT1udWxsKXsKICAgICAgdHh0LnRleHRDb250ZW50ID0gb3B0aW9uc1txcmVmLnNlbC0xXTsgdHh0LmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOwogICAgICB2YXIgc28gPSBtZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLW9wdCcpW3FyZWYuc2VsLTFdOyBpZihzbykgc28uY2xhc3NMaXN0LmFkZCgnY2xwci1zZWwnKTsKICAgIH0KICAgIHJldHVybiBkZDsKICB9CiAgZnVuY3Rpb24gY2xvc2VBbGwoKXsgd3JhcC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC5jbHByLW9wZW4nKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1vcGVuJyk7fSk7IH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlQWxsKTsKCiAgZnVuY3Rpb24gYnVpbGRQYXJ0KHBpKXsKICAgIHZhciBwYXJ0ID0gUkRBVEEucGFydHNbcGldOwogICAgY2F0RWwuaW5uZXJIVE1MPScnOwogICAgdmFyIGJhciA9IGVsKCdkaXYnLCdjbHByLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWJhci10aXRsZScsICdQcmFjdGljZSBUZXN0IDIgXHUyMDEzICcrcGFydC5uYW1lKSk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItYmFyLXRpbWVyJywnU3VnZ2VzdGVkIHRpbWU6IDxiPicrcGFydC50aW1lKyc8L2I+JykpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQoYmFyKTsKICAgIHZhciBjb2xzID0gZWwoJ2RpdicsJ2NscHItY29scycpOwogICAgdmFyIGxlZnQgPSBlbCgnZGl2JywnY2xwci1wYXNzYWdlJyk7CiAgICBsZWZ0LmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLXBsYWJlbCcsIHBhcnQucGFzc2FnZS5sYWJlbCkpOwogICAgaWYocGFydC5wYXNzYWdlLnR5cGU9PT0naW1hZ2UnKXsKICAgICAgdmFyIGltZyA9IGVsKCdpbWcnLCdjbHByLXBpbWcnKTsgaW1nLnNyYyA9IHBhcnQucGFzc2FnZS5zcmM7IGltZy5hbHQgPSBwYXJ0LnBhc3NhZ2UuYWx0fHwnJzsgbGVmdC5hcHBlbmRDaGlsZChpbWcpOwogICAgfSBlbHNlIHsKICAgICAgbGVmdC5hcHBlbmRDaGlsZChlbCgnZGl2JyxudWxsLCBwYXJ0LnBhc3NhZ2UuaHRtbCkpOwogICAgfQogICAgdmFyIHJpZ2h0ID0gZWwoJ2RpdicsJ2NscHItcWNvbCcpOwogICAgcGFydC5ibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibG9jayl7IHJpZ2h0LmFwcGVuZENoaWxkKGJ1aWxkQmxvY2soYmxvY2ssIHBhcnQpKTsgfSk7CiAgICBjb2xzLmFwcGVuZENoaWxkKGxlZnQpOyBjb2xzLmFwcGVuZENoaWxkKHJpZ2h0KTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKGNvbHMpOwogICAgdmFyIG5hdiA9IGVsKCdkaXYnLCdjbHByLW5hdicpOwogICAgdmFyIHByZXYgPSBlbCgnYnV0dG9uJywnY2xwci1uYXZidG4gY2xwci1naG9zdCcsJ1x1MjE5MCBQcmV2aW91cyBwYXJ0Jyk7CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCdjbHByLW5hdmJ0bicsJ05leHQgcGFydCBcdTIxOTInKTsKICAgIHByZXYuZGlzYWJsZWQgPSAocGk9PT0wKTsgbmV4dC5kaXNhYmxlZCA9IChwaT09PVJEQVRBLnBhcnRzLmxlbmd0aC0xKTsKICAgIHByZXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBpZihwaT4wKSBnbyhwaS0xKTsgfSk7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgaWYocGk8UkRBVEEucGFydHMubGVuZ3RoLTEpIGdvKHBpKzEpOyB9KTsKICAgIG5hdi5hcHBlbmRDaGlsZChwcmV2KTsgbmF2LmFwcGVuZENoaWxkKG5leHQpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQobmF2KTsKICAgIGlmKGNoZWNrZWQpIGFwcGx5TWFya3MoKTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkQmxvY2soYmxvY2ssIHBhcnQpewogICAgdmFyIHdyYXBCID0gZWwoJ2RpdicsJ2NscHItYmxvY2snKTsKICAgIHdyYXBCLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWluc3RyJywgYmxvY2suaW5zdHIpKTsKICAgIGlmKGJsb2NrLnR5cGU9PT0nc3RlbWxpc3QnKXsKICAgICAgYmxvY2suaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7CiAgICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCdjbHByLXN0ZW0nKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXNudW0nLCBpdC5uKycuJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwgaXQucHJlKycgJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24oaXQub3B0aW9ucywgaXQuX3EpKTsKICAgICAgICB3cmFwQi5hcHBlbmRDaGlsZChyb3cpOwogICAgICB9KTsKICAgIH0gZWxzZSBpZihibG9jay50eXBlPT09J2Nsb3plJyl7CiAgICAgIHZhciBib3ggPSBlbCgnZGl2JywnY2xwci1jbG96ZScpOwogICAgICBibG9jay5ib2R5LmZvckVhY2goZnVuY3Rpb24odG9rKXsKICAgICAgICBpZih0eXBlb2YgdG9rPT09J3N0cmluZycpewogICAgICAgICAgdmFyIHNlZ3MgPSB0b2suc3BsaXQoJ1xuXG4nKTsKICAgICAgICAgIHNlZ3MuZm9yRWFjaChmdW5jdGlvbihzZWcsIGlkeCl7CiAgICAgICAgICAgIGlmKGlkeD4wKXsgYm94LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCc8YnI+PGJyPicpKTsgfQogICAgICAgICAgICBib3guYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2VnKSk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYm94LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bih0b2sub3B0aW9ucywgdG9rLl9xKSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQoYm94KTsKICAgIH0gZWxzZSBpZihibG9jay50eXBlPT09J21hdGNoJyl7CiAgICAgIGJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpewogICAgICAgIHZhciByb3cgPSBlbCgnZGl2JywnY2xwci1tYXRjaC1yb3cnKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKGJsb2NrLmxldHRlcnMsIGl0Ll9xKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1zbnVtJywgaXQubisnLicpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsIGl0LnRleHQpKTsKICAgICAgICB3cmFwQi5hcHBlbmRDaGlsZChyb3cpOwogICAgICB9KTsKICAgIH0KICAgIHJldHVybiB3cmFwQjsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkRG90cygpewogICAgZG90c0VsLmlubmVySFRNTD0nJzsKICAgIFJEQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCwgaSl7CiAgICAgIHZhciBkID0gZWwoJ2J1dHRvbicsJ2NscHItZG90JysoaT09PWN1clBhcnQ\/JyBjbHByLWN1cic6JycpKTsKICAgICAgZC5hcHBlbmRDaGlsZChlbCgnYicsbnVsbCwoaSsxKSkpOwogICAgICBkLmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLFsnQ29ycmVzcG9uZGVuY2UnLCdBcHBseSBhIERpYWdyYW0nLCdJbmZvcm1hdGlvbicsJ1ZpZXdwb2ludHMnXVtpXSkpOwogICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgZ28oaSk7IH0pOwogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gZ28ocGkpeyBjdXJQYXJ0PXBpOyBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KHBpKTsgY2F0RWwuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsgfQoKICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIHZhciBhbnMgPSBRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWwhPW51bGw7fSkubGVuZ3RoOwogICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gY2hlY2tlZCA\/IChRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWw9PT1xLmtleTt9KS5sZW5ndGgrJyAvICcrUS5sZW5ndGgrJyBjb3JyZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoYW5zKycgLyAnK1EubGVuZ3RoKycgYW5zd2VyZWQnKTsKICB9CgogIGZ1bmN0aW9uIGFwcGx5TWFya3MoKXsKICAgIFEuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgaWYoIXEuZGRFbCkgcmV0dXJuOwogICAgICBxLmRkRWwuY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1yaWdodCcsJ2NscHItd3JvbmcnKTsKICAgICAgaWYocS5zZWw9PT1xLmtleSl7IHEuZGRFbC5jbGFzc0xpc3QuYWRkKCdjbHByLXJpZ2h0Jyk7IH0KICAgICAgZWxzZSB7CiAgICAgICAgcS5kZEVsLmNsYXNzTGlzdC5hZGQoJ2NscHItd3JvbmcnKTsKICAgICAgICBpZihxLnNvbHZlZEVsKSBxLnNvbHZlZEVsLnRleHRDb250ZW50ID0gJ1x1MjcxMyAnK3Eub3B0aW9uc1txLmtleS0xXTsKICAgICAgICBpZihxLnNlbD09bnVsbCAmJiBxLnR4dEVsKXsgcS50eHRFbC50ZXh0Q29udGVudD0nKG5vIGFuc3dlciknOyBxLnR4dEVsLmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOyB9CiAgICAgIH0KICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gZG9DaGVjaygpewogICAgY2hlY2tlZCA9IHRydWU7CiAgICBhcHBseU1hcmtzKCk7CiAgICB2YXIgY29ycmVjdCA9IFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbD09PXEua2V5O30pLmxlbmd0aDsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgY2hlY2tCdG4uZGlzYWJsZWQgPSB0cnVlOwogICAgdmFyIGJ5UGFydCA9IHt9OwogICAgUS5mb3JFYWNoKGZ1bmN0aW9uKHEpeyBieVBhcnRbcS5wYXJ0XT1ieVBhcnRbcS5wYXJ0XXx8e2M6MCx0OjB9OyBieVBhcnRbcS5wYXJ0XS50Kys7IGlmKHEuc2VsPT09cS5rZXkpYnlQYXJ0W3EucGFydF0uYysrOyB9KTsKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZVIoY29ycmVjdCk7CiAgICB2YXIgcGlsbHMgPSBSREFUQS5wYXJ0cy5tYXAoZnVuY3Rpb24ocCl7IHZhciBiPWJ5UGFydFtwLmlkXXx8e2M6MCx0OjB9OyByZXR1cm4gJzxzcGFuIGNsYXNzPSJjbHByLXJlcy1waWxsIj5QYXJ0ICcrcC5pZCsnOiAnK2IuYysnLycrYi50Kyc8L3NwYW4+JzsgfSkuam9pbignJyk7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImNscHItcmVzLWNhcmQiPicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtdG9wIj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLXNjb3JlIj4nK2NvcnJlY3QrJzxzcGFuPi8nK1EubGVuZ3RoKyc8L3NwYW4+PC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1jbGIiPjxiPicrZXN0LmxldmVsKyc8L2I+PHNtYWxsPicrZXN0Lm5vdGUrJyAmbWlkZG90OyBlc3RpbWF0ZWQgUmVhZGluZyBiYW5kPC9zbWFsbD48L2Rpdj4nCiAgICAgICsgJzwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtYnJlYWsiPicrcGlsbHMrJzwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtYWN0aW9ucyI+PGJ1dHRvbiBjbGFzcz0iY2xwci1uYXZidG4gY2xwci1naG9zdCIgaWQ9ImNscHJSZXZpZXciPlJldmlldyBhbnN3ZXJzIGluIGVhY2ggcGFydDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImNscHItbmF2YnRuIiBpZD0iY2xwclJldHJ5Ij5UcnkgYWdhaW48L2J1dHRvbj48L2Rpdj4nCiAgICAgICsgJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjEycHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXRlZCkiPkVzdGltYXRlZCBiYW5kIGlzIGEgc3R1ZHkgZ3VpZGUgb25seSwgbm90IGFuIG9mZmljaWFsIENFTFBJUCBzY29yZS4gQ29ycmVjdCBhbnN3ZXJzIGFyZSBzaG93biB3aXRoIGEgZ3JlZW4gY2hlY2sgb24gZWFjaCBkcm9wLWRvd24geW91IGFuc3dlcmVkIGluY29ycmVjdGx5LjwvcD4nCiAgICAgICsgJzwvZGl2Pic7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJldHJ5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEFsbCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJldmlldycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgZ28oMCk7IH0pOwogICAgcmVzdWx0c0VsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgfQoKICBmdW5jdGlvbiByZXNldEFsbCgpewogICAgY2hlY2tlZD1mYWxzZTsgaW5pdFF1ZXN0aW9ucygpOyBjdXJQYXJ0PTA7CiAgICBjaGVja0J0bi5kaXNhYmxlZD1mYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW49dHJ1ZTsgcmVzdWx0c0VsLmlubmVySFRNTD0nJzsKICAgIGJ1aWxkRG90cygpOyBidWlsZFBhcnQoMCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNpbS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogIH0KCiAgc3RhcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgd3JhcC5xdWVyeVNlbGVjdG9yKCcuY2xwci1oZXJvJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICB0b29sYmFyLmhpZGRlbj1mYWxzZTsgc2ltLmhpZGRlbj1mYWxzZTsKICAgIGluaXRRdWVzdGlvbnMoKTsgY3VyUGFydD0wOyBjaGVja2VkPWZhbHNlOwogICAgYnVpbGREb3RzKCk7IGJ1aWxkUGFydCgwKTsgdXBkYXRlU2NvcmVDaGlwKCk7CiAgfSk7CiAgY2hlY2tCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBkb0NoZWNrKTsKICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKfSkoKTs=\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 5 Practice Test 2: 4 parts, 38 questions in the real exam format with instant scoring and answer key. About 55 minutes. 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-6401","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6401","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=6401"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6401\/revisions"}],"predecessor-version":[{"id":6561,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6401\/revisions\/6561"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}