{"id":6407,"date":"2026-07-11T01:11:25","date_gmt":"2026-07-11T01:11:25","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-8-test-2-reading\/"},"modified":"2026-07-12T03:24:30","modified_gmt":"2026-07-12T03:24:30","slug":"celpip-set-8-test-2-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-8-test-2-reading\/","title":{"rendered":"CELPIP Reading \u2014 Set 8 \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 8<\/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(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMiAoU2V0IDEpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAyIFNldCAxIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDIiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkRlYXIgR2VtbWEsPC9wPjxwPkl0IHdhcyBhIHBsZWFzdXJlIG1lZXRpbmcgeW91IGF0IFBhcmVudHMmcnNxdW87IE5pZ2h0IGxhc3Qgd2VlayBhdCB0aGUgc2Nob29sLiBJdCZyc3F1bztzIGdyZWF0IHRoYXQgeW91IGFuZCB5b3VyIGNoaWxkcmVuLCBKYWNrIGFuZCBCZXRoLCB3aWxsIGpvaW4gdXMgZm9yIG91ciBGdW4gRGF5IGF0IFdldCBXb3JsZCBBbXVzZW1lbnQgUGFyay4gSW4gdGVybXMgb2YgdGhlIG51bWJlciBvZiBhdHRyYWN0aW9ucyBhdmFpbGFibGUgdG8gZW5qb3ksIFdldCBXb3JsZCBpcyB0aGUgbGFyZ2VzdCBwYXJrIG9mIGl0cyBraW5kIGluIG91ciBwcm92aW5jZS4gQXMgb2YgdG9kYXksIHdlIGhhdmUgYSBkb3plbiBwYXJlbnRzIGFuZCBhbiBlcXVhbCBudW1iZXIgb2YgY2hpbGRyZW4gcGxhbm5pbmcgdG8gYXR0ZW5kLiBUaGF0IGluY2x1ZGVzIHlvdSB0aHJlZSE8L3A+PHA+V2Ugd2lsbCBtZWV0IGF0IDg6MDAgYS5tLiBhdCBSZWQgT2FrcyBTY2hvb2wuIFRoZSBidXMgd2lsbCBwaWNrIHVzIHVwIGFuZCB0YWtlIHVzIGFsbCB0byBXZXQgV29ybGQgQW11c2VtZW50IFBhcmsmbWRhc2g7anVzdCB1bmRlciBhbiBob3VyIGZyb20gdGhlIHNjaG9vbCB0byB0aGUgcGFyayBnYXRlLiBBbGwgdGhlIGNoaWxkcmVuIHNob3VsZCB3ZWFyIHllbGxvdyBULXNoaXJ0cyBhbmQgcmVkIGJhc2ViYWxsIGNhcHMuIFRoaXMgd2F5IHRoZXkgd2lsbCBiZSBlYXNpZXIgdG8gc2VlLCBlc3BlY2lhbGx5IGlmIHRoZSBvbGRlciBvbmVzIHdhbnQgdG8gZ28gb2ZmIGFuZCBleHBsb3JlIG9uIHRoZWlyIG93biEgSSZyc3F1bzt2ZSBib3VnaHQgYWxsIHRoZSBhZG1pc3Npb24gdGlja2V0cyB0byB0aGUgcGFyay4gVGhlIHRpY2tldHMgZG9uJnJzcXVvO3QgaW5jbHVkZSBmb29kIGJ1dCBkbyBnaXZlIHRoZSBjaGlsZHJlbiBhZG1pc3Npb24gdG8gdGhlIHJpZGVzIGFuZCB3YXRlciBwYXJrLjwvcD48cD5QYXJrIHNhZmV0eSBydWxlcyBzdGF0ZSB0aGF0IGNoaWxkcmVuIHVuZGVyIDEyIHllYXJzIG9sZCBjYW5ub3QgcmlkZSB0aGUgbGFyZ2Ugcm9sbGVyIGNvYXN0ZXIgYW5kIHNvbWUgb2YgdGhlIG90aGVyIHJpZGVzLiBDZXJ0YWluIG9wdGlvbmFsIHNwZWNpYWwgZXZlbnRzIGFyZSBhdmFpbGFibGUgZm9yIGNoaWxkcmVuIHVuZGVyIDEyIGF0IGEgcmVkdWNlZCBjb3N0LiBUaGV5IGNhbiBlbmpveSBhY3Rpdml0aWVzIGRlc2lnbmVkIGp1c3QgZm9yIHRoZWlyIGFnZSBncm91cDogd2F0Y2hpbmcgY2FydG9vbnMgaW4gYSB0aGVhdHJlLCBvciBhdHRlbmRpbmcgYSAxLWhvdXIgbWFnaWMgc2hvdyBpbiB0aGUgYWZ0ZXJub29uLiBUaGUgb2xkZXIgY2hpbGRyZW4gYW5kIHRlZW5zIGNhbiB2aXNpdCB0aGUgc2NpZW5jZSBjZW50cmUgdG8gc2VlIHJvYm90cyBhbmQgYSBmb3NzaWwgZGlzcGxheS4gT3IgdGhleSBjYW4ganVzdCB0YWtlIGl0IGVhc3kgYnkgdGhlIHdhdmUgcG9vbCBiZWZvcmUgaGVhZGluZyBiYWNrIHRvIHRoZSByb2xsZXIgY29hc3RlciE8L3A+PHA+V2UmcnNxdW87bGwgbWVldCBhdCB0aGUgUGFya3NpZGUgUmVzdGF1cmFudCBpbiB0aGUgZm9vZCBhcmVhIGZvciBsdW5jaCBhdCBoYWxmIHBhc3Qgbm9vbi4gWW91IGNhbiBqb2luIHVzIHRoZXJlIGlmIHlvdSZyc3F1bztkIGxpa2UuIFRoZSBwYXJrIGFsc28gYWxsb3dzIGJyaW5naW5nIGluIHBhY2tlZCBsdW5jaGVzIGZyb20gaG9tZS4gV2V0IFdvcmxkIGhhcyBzZXZlcmFsIGRpZmZlcmVudCBraW5kcyBvZiByZXN0YXVyYW50cywgYnV0IHlvdSBtYXkgaGF2ZSB0byB3YWl0IGZvciBhIHBsYWNlIHRvIHNpdC4gTGlrZSBtb3N0IGFtdXNlbWVudCBwYXJrcywgdGhlaXIgZm9vZCBwcmljZXMgYXJlIHByb2JhYmx5IGEgYml0IGhpZ2guPC9wPjxwPkZpbmFsbHksIEkmcnNxdW87dmUgaGVhcmQgd2Ugd2lsbCBzZWUgYSByZWNvcmQgaGlnaCB0ZW1wZXJhdHVyZSBvbiBTYXR1cmRheSwgc28gcGxlYXNlIHBhY2sgYWNjb3JkaW5nbHkhPC9wPjxwPkkgbG9vayBmb3J3YXJkIHRvIHNlZWluZyB5b3UgYW5kIHlvdXIga2lkcyBvbiBTYXR1cmRheSwgR2VtbWEhPC9wPjxwPkJlc3Qgd2lzaGVzLDxicj5Nb2lyYTwvcD4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IlVzaW5nIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKSwgY2hvb3NlIHRoZSBiZXN0IG9wdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGluZm9ybWF0aW9uIGdpdmVuIGluIHRoZSBtZXNzYWdlLiIsIml0ZW1zIjpbeyJuIjoxLCJwcmUiOiJXaHkgaXMgTW9pcmEgd3JpdGluZyB0byBHZW1tYT8iLCJvcHRpb25zIjpbInRvIGludml0ZSBoZXIgY2hpbGRyZW4gdG8gYW4gZXZlbnQiLCJ0byBzaGFyZSBkZXRhaWxzIGFib3V0IGEgc2Nob29sIHRyaXAiLCJ0byBhc2sgaGVyIHRvIGJlIGEgdm9sdW50ZWVyIiwidG8gZ2V0IGhlciBvcGluaW9uIGFib3V0IGFuIGlkZWEiXSwia2V5IjoyfSx7Im4iOjIsInByZSI6IldoYXQgbXVzdCBhbGwgdGhlIGNoaWxkcmVuIGRvPyIsIm9wdGlvbnMiOlsic3RheSB3aXRoIHRoZWlyIHBhcmVudHMiLCJicmluZyBtb25leSBmb3IgbHVuY2giLCJ3ZWFyIHJlZCBhbmQgeWVsbG93IiwicGF5IGF0IHRoZSBwYXJrIGdhdGUiXSwia2V5IjozfSx7Im4iOjMsInByZSI6IldoYXQgaGFzIE1vaXJhIGRvbmUgYWxyZWFkeT8iLCJvcHRpb25zIjpbImJvdWdodCBtYWdpYyBzaG93IHRpY2tldHMiLCJwYWlkIHRoZSBwYXJrIGVudHJhbmNlIGZlZSIsInB1cmNoYXNlZCB5ZWxsb3cgVC1zaGlydHMiLCJvcmRlcmVkIGx1bmNoIGZvciB0aGUga2lkcyJdLCJrZXkiOjJ9LHsibiI6NCwicHJlIjoiV2hhdCBjYW4gdGhlIHlvdW5nZXIgY2hpbGRyZW4gZG8gYXQgdGhlIHBhcms\/Iiwib3B0aW9ucyI6WyJ2aWV3IHRoZSBtYWdpYyBzaG93IiwicmlkZSB0aGUgcm9sbGVyIGNvYXN0ZXIiLCJsb29rIGF0IHRoZSByb2JvdCBkaXNwbGF5IiwiZ28gdG8gdGhlIHNjaWVuY2UgY2VudHJlIl0sImtleSI6MX0seyJuIjo1LCJwcmUiOiJGb3Igb2xkZXIgY2hpbGRyZW4sIHRoZXJlIGlzIiwib3B0aW9ucyI6WyJhIGNoZWFwZXIgcHJpY2UuIiwiYSBzcGVjaWFsIHRoZWF0cmUuIiwiYSBtYWdpYyBkaXNwbGF5LiIsImFuIGV4Y2l0aW5nIHJpZGUuIl0sImtleSI6NH0seyJuIjo2LCJwcmUiOiJXaGF0IGRvZXMgTW9pcmEgc3VnZ2VzdCBhYm91dCB0aGUgcmVzdGF1cmFudHM\/Iiwib3B0aW9ucyI6WyJUaGV5IGFyZSBub3Qgb3BlbiBiZWZvcmUgbm9vbi4iLCJUaGV5IGFyZSBleHBlbnNpdmUgYW5kIGJ1c3kuIiwiVGhleSBhcmUgbm90IG1lYW50IGZvciBraWRzLiIsIlRoZXkgYXJlIGluY2x1ZGVkIGluIHRoZSB0aWNrZXQuIl0sImtleSI6Mn1dfSx7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiSGVyZSBpcyBhIHJlc3BvbnNlIHRvIHRoZSBtZXNzYWdlLiBDb21wbGV0ZSB0aGUgcmVzcG9uc2UgYnkgZmlsbGluZyBpbiB0aGUgYmxhbmtzLiBTZWxlY3QgdGhlIGJlc3QgY2hvaWNlIGZvciBlYWNoIGJsYW5rIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLiIsImJvZHkiOlsiRGVhciBNb2lyYSxcblxuVGhhbmtzIGZvciB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEZ1biBEYXkgdGhpcyBTYXR1cmRheS4gSXQgc291bmRzIGxpa2UgaXRcdTIwMTlzIGdvaW5nIHRvIGJlIGEgc3VwZXIgdGltZSwgYW5kIGl0XHUyMDE5cyBnb29kIHRvIGhlYXIgdGhhdCB0aGVyZSB3aWxsIGJlICIseyJiIjo3LCJvcHRpb25zIjpbInR3ZWx2ZSBwYXJlbnRzIGF0dGVuZGluZyIsInR3ZW50eS1mb3VyIGNoaWxkcmVuIGluIGFsbCIsInRoZSBzYW1lIG51bWJlciBhcyBsYXN0IHllYXIiLCJtb3JlIGFkdWx0cyB0aGFuIGNoaWxkcmVuIl0sImtleSI6MX0sIi5cblxuV2VcdTIwMTlyZSBleGNpdGVkIGJlY2F1c2Ugd2VcdTIwMTl2ZSBuZXZlciBiZWVuIHRvIGFuIGFtdXNlbWVudCBwYXJrIGxpa2UgV2V0IFdvcmxkLiBXaGF0IGlzIGdyZWF0IGFib3V0IFdldCBXb3JsZCBpcyB0aGF0IGl0IGhhcyAiLHsiYiI6OCwib3B0aW9ucyI6WyJhIGJpZyBlbXB0eSBzcGFjZSBmb3IgZWF0aW5nIiwidW5kZXJ3YXRlciByb2xsZXIgY29hc3RlcnMiLCJhIHN3aW1taW5nIHBvb2wgZm9yIGFkdWx0cyIsImF0dHJhY3Rpb25zIGZvciBkaWZmZXJlbnQgYWdlcyJdLCJrZXkiOjR9LCIuXG5cblRoYW5rcyBmb3IgdGhlIGRldGFpbHMgYWJvdXQgdGhlIHRyYW5zcG9ydGF0aW9uIGFycmFuZ2VtZW50cy4gSXRcdTIwMTlzIGdvb2QgdG8ga25vdyB0aGUgYnVzIHdpbGwgIix7ImIiOjksIm9wdGlvbnMiOlsiYmUgZHJpdmVuIGJ5IGEgcmVzcG9uc2libGUgcGFyZW50IiwidGFrZSBsZXNzIHRoYW4gYW4gaG91ciB0byBnZXQgdGhlcmUiLCJiZSBlcXVpcHBlZCB3aXRoIHNhZmV0eSBiZWx0cyIsInRha2UgdGhlIGZhc3Rlc3QgcG9zc2libGUgcm91dGUiXSwia2V5IjoyfSwiLlxuXG5PbiBhbm90aGVyIG5vdGUsIHdlXHUyMDE5bGwgYmUgbWFraW5nIG91ciBvd24gYXJyYW5nZW1lbnRzIGZvciBsdW5jaCwgc28gSVx1MjAxOW0gc29ycnkgd2Ugd29uXHUyMDE5dCBiZSBtZWV0aW5nIHVwIHdpdGggeW91IGF0ICIseyJiIjoxMCwib3B0aW9ucyI6WyIxMTozMCIsIjEyOjAwIiwiMTI6MzAiLCIxOjAwIl0sImtleSI6M30sIi5cblxuUmVzdCBhc3N1cmVkLCB3ZVx1MjAxOWxsIGNvbWUgcHJlcGFyZWQgZm9yIHRoZSB3ZWF0aGVyLiBJLCB0b28sIGhhdmUgaGVhcmQgdGhhdCBpdCB3aWxsIGJlIGEgIix7ImIiOjExLCJvcHRpb25zIjpbImhvdCIsImNsb3VkeSIsImNvb2wiLCJ3ZXQiXSwia2V5IjoxfSwiIGRheSFcblxuU2VlIHlvdSBzb29uLFxuXG5HZW1tYSJdfV19LHsiaWQiOjIsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMjogUmVhZGluZyB0byBBcHBseSBhIERpYWdyYW0iLCJ0aW1lIjoiOCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGRpYWdyYW0uIiwiaHRtbCI6IjxzdHlsZT4uYWUtd2Nie2JvcmRlcjoxcHggc29saWQgI2NiZDVlMTtib3JkZXItcmFkaXVzOjhweDtvdmVyZmxvdzpoaWRkZW47Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZDojZmZmfS5hZS13Y2JoZWFke2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjMWUyOTNiLCMzMzQxNTUgNTUlLCMzZjYyMTIpO2NvbG9yOiNmZmY7cGFkZGluZzoxOHB4IDE2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmFlLXdjYmhlYWQgaDN7bWFyZ2luOjA7Y29sb3I6I2ZmZjtmb250LXNpemU6MjRweDtsZXR0ZXItc3BhY2luZzoycHh9LmFlLXdjYmhlYWQgcHttYXJnaW46NHB4IDAgMDtjb2xvcjojZTJlOGYwO2ZvbnQtc2l6ZToxNXB4O2xldHRlci1zcGFjaW5nOjFweH0uYWUtd2NiYm9keXtwYWRkaW5nOjEycHggMTRweH0uYWUtd2NiYm9keSAuYWUtd2NiaW50cm97bWFyZ2luOjAgMCAxMHB4O2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41fS5hZS13Y2Jjb2xze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS40ZnIgMWZyO2dhcDoxMnB4O2FsaWduLWl0ZW1zOnN0YXJ0fS5hZS13Y2J1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjV9LmFlLXdjYnVsIGxpe21hcmdpbi1ib3R0b206N3B4fS5hZS13Y2JwcmljZXtiYWNrZ3JvdW5kOiNkYmVhZmU7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoxMHB4IDEycHh9LmFlLXdjYnByaWNlIGg0e21hcmdpbjowIDAgNnB4O2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzFlMjkzYn0uYWUtd2NicHJpY2UgdWx7bWFyZ2luOjAgMCA4cHg7cGFkZGluZy1sZWZ0OjE4cHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41fS5hZS13Y2JwcmljZSBsaXttYXJnaW4tYm90dG9tOjZweH0uYWUtd2NidHNoe2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEzLjVweDttYXJnaW46MH0uYWUtd2NiZm9vdHtwYWRkaW5nOjEwcHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXN0eWxlOml0YWxpYztmb250LXNpemU6MTNweDtib3JkZXItdG9wOjFweCBzb2xpZCAjY2JkNWUxfUBtZWRpYShtYXgtd2lkdGg6NTYwcHgpey5hZS13Y2Jjb2xze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9fTwvc3R5bGU+PGRpdiBjbGFzcz1cImFlLXdjYlwiPjxkaXYgY2xhc3M9XCJhZS13Y2JoZWFkXCI+PGgzPldlc3QgQ29hc3QgQnVuZ2VlPC9oMz48cD5UaGUgVWx0aW1hdGUgQWRyZW5hbGluZSBSdXNoPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS13Y2Jib2R5XCI+PHAgY2xhc3M9XCJhZS13Y2JpbnRyb1wiPk9wZW5lZCBpbiAyMDAzLCBXZXN0IENvYXN0IEJ1bmdlZSBpcyBhbiBleGhpbGFyYXRpbmcgYW5kIGFkcmVuYWxpbmUtZmlsbGVkIGV4cGVyaWVuY2UuIFdlIGhhdmUgYmVlbiB2b3RlZCBhcyB0aGUgcmVnaW9uJnJzcXVvO3MgYmVzdCBhY3Rpdml0eSBmb3IgdGhyaWxsLXNlZWtlcnMgZml2ZSB5ZWFycyBpbiBhIHJvdyBhbmQgaGF2ZSBtYWludGFpbmVkIGEgcGVyZmVjdCBzYWZldHkgcmVjb3JkLjwvcD48ZGl2IGNsYXNzPVwiYWUtd2NiY29sc1wiPjx1bCBjbGFzcz1cImFlLXdjYnVsXCI+PGxpPkVuam95IGFuIHVuZm9yZ2V0dGFibGUgZXhwZXJpZW5jZSBieSBqdW1waW5nIG1vcmUgdGhhbiA1MCBtZXRyZXMgKDE2MCBmdCkgZnJvbSB0aGUgQ2FwaWxhbm8gQnJpZGdlIG92ZXIgdGhlIE90aGVsbG8gUml2ZXIuPC9saT48bGk+U3Vycm91bmRlZCBieSBzdGVlcCBjbGlmZnMgYW5kIG9sZCBncm93dGggZm9yZXN0LCBjb21iaW5lZCB3aXRoIGEgYnJlYXRodGFraW5nIHZpZXcgb2YgdGhlIENhbmFkaWFuIENhc2NhZGUgTW91bnRhaW5zLCBXZXN0IENvYXN0IEJ1bmdlZSBpcyByZWNvZ25pemVkIGFzIG9uZSBvZiB0aGUgbW9zdCB2aXN1YWxseSBzdHVubmluZyBidW5nZWUganVtcGluZyBzaXRlcyBpbiB0aGUgd29ybGQuPC9saT48bGk+V2UgYXJlIG9wZW4gYWxsIHllYXIgcm91bmQgd2l0aCByZWR1Y2VkIGhvdXJzIGR1cmluZyB0aGUgYXV0dW1uIGFuZCB3aW50ZXIgc2Vhc29ucy48L2xpPjxsaT5BbGwgY3VzdG9tZXJzIGFyZSByZXF1aXJlZCB0byBmaWxsIG91dCBhIGxpYWJpbGl0eSB3YWl2ZXIsIGFuZCB0aG9zZSB1bmRlciB0aGUgYWdlIG9mIDE5IG11c3QgaGF2ZSBhIHBhcmVudCBvciBndWFyZGlhbiBzaWduIHRoZSB3YWl2ZXIuPC9saT48bGk+QWxsIGp1bXBzIG11c3QgYmUgYm9va2VkIGluIGFkdmFuY2UgYW5kIGFyZSBkZXBlbmRlbnQgb24gd2VhdGhlciBjb25kaXRpb25zLjwvbGk+PGxpPlBob3RvcyBhdmFpbGFibGUgdXBvbiByZXF1ZXN0LjwvbGk+PC91bD48ZGl2IGNsYXNzPVwiYWUtd2NicHJpY2VcIj48aDQ+UHJpY2luZyBJbmZvcm1hdGlvbjwvaDQ+PHVsPjxsaT5JbmRpdmlkdWFsIGp1bXAgLSAkMTMwIHBlciBwZXJzb248L2xpPjxsaT5UYW5kZW0ganVtcCAtICQxMjAgcGVyIHBlcnNvbjwvbGk+PGxpPkdyb3VwIGp1bXBzIC0gJDEwNSBwZXIgcGVyc29uIHdoZW4geW91IG9yZ2FuaXplIGEgZ3JvdXAgb2YgMTAgb3IgbW9yZTwvbGk+PGxpPjUwJSBvZmYgc2Vjb25kIGp1bXA8L2xpPjwvdWw+PHAgY2xhc3M9XCJhZS13Y2J0c2hcIj5GcmVlIFQtc2hpcnQgd2l0aCBldmVyeSBqdW1wITwvcD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtd2NiZm9vdFwiPkNvbnRhY3QgdXMgYXQgNjA0LTU1NS0wOTMyIG9yIDx1PmJvb2tpbmdAd2VzdGNvYXN0YnVuZ2VlLmNvbTwvdT4gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIGJvb2sgeW91ciBqdW1wITwvZGl2PjwvZGl2PiJ9LCJibG9ja3MiOlt7InR5cGUiOiJjbG96ZSIsImluc3RyIjoiUmVhZCB0aGUgZm9sbG93aW5nIGVtYWlsIG1lc3NhZ2UgYWJvdXQgdGhlIGRpYWdyYW0gb24gdGhlIGxlZnQuIENvbXBsZXRlIHRoZSBlbWFpbCBieSBmaWxsaW5nIGluIHRoZSBibGFua3MuIFNlbGVjdCB0aGUgYmVzdCBjaG9pY2UgZm9yIGVhY2ggYmxhbmsgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICkuIiwiYm9keSI6WyJTdWJqZWN0OiBCdW5nZWUgSnVtcGluZyBCb29raW5nIElucXVpcnlcblRvOiBXZXN0IENvYXN0IEJ1bmdlZSA8Ym9va2luZ0B3ZXN0Y29hc3RidW5nZWUuY29tPlxuRnJvbTogSm9obiBBbmRlcnNvbiA8SmFuZGVyc29uQGR1bmRyZXBoLmNvbT5cblxuVG8gd2hvbSBpdCBtYXkgY29uY2VybixcblxuSVx1MjAxOW0gaW50ZXJlc3RlZCBpbiBtYWtpbmcgYSByZXNlcnZhdGlvbiBmb3IgYSBncm91cCBvZiAxMCBhcyBwYXJ0IG9mIGEgc3VycHJpc2UgZm9yIG15IHNvblx1MjAxOXMgMTZ0aCBiaXJ0aGRheS4gSGUgYW5kIGhpcyBmcmllbmRzIHJlYWQgdGhhdCB5b3Ugd2VyZSBjaG9zZW4gYXMgdGhlIGFyZWFcdTIwMTlzIG1vc3QgIix7ImIiOjEsIm9wdGlvbnMiOlsiYWR2ZW50dXJvdXMiLCJjb3N0LWVmZmVjdGl2ZSIsIm1lbW9yYWJsZSIsImFtdXNpbmciXSwia2V5IjoxfSwiIGFjdGl2aXR5LCBhbmQgdGhleSBoYXZlIHdhbnRlZCB0byB0cnkgaXQgZXZlciBzaW5jZS4gSVx1MjAxOXZlIHNob3BwZWQgYXJvdW5kIGFuZCBhbSBpbXByZXNzZWQgYnkgeW91ciBjb21wYW55XHUyMDE5cyBpbXBlY2NhYmxlIHNhZmV0eSByZWNvcmQuIEl0IHdvdWxkIGFsc28gYmUgZ3JlYXQgdG8gYnVuZ2VlIGp1bXAgaW4gYSBsb2NhdGlvbiBrbm93biB3b3JsZHdpZGUgZm9yIGl0cyAiLHsiYiI6Miwib3B0aW9ucyI6WyJiZWF1dGlmdWwgc2NlbmVyeSIsImhpc3RvcmljIGJyaWRnZSIsImluY3JlZGlibGUganVtcCBoZWlnaHQiLCJpY3kgd2ludGVyIGp1bXBzIl0sImtleSI6MX0sIi4gSVx1MjAxOWQgbGlrZSB0byBib29rIGEgd2Vla2VuZCBpbiBsYXRlIFNlcHRlbWJlci4gSSBkb25cdTIwMTl0IGtub3cgaWYgdGhhdCB3b3VsZCBiZSBjb25zaWRlcmVkIG9mZi1zZWFzb24sIHNvIEkgYW0gd29uZGVyaW5nIGFib3V0IHlvdXIgIix7ImIiOjMsIm9wdGlvbnMiOlsiY2xvc3VyZSIsImRpc2NvdW50cyIsImhvdXJzIiwicHJvbW90aW9ucyJdLCJrZXkiOjN9LCIuIEFsc28sIEkgYmVsaWV2ZSB0aGF0IGJlY2F1c2Ugb2Ygb3VyIG51bWJlcnMsIHdlIHF1YWxpZnkgZm9yICIseyJiIjo0LCJvcHRpb25zIjpbImZyZWUgVC1zaGlydHMiLCJyZWR1Y2VkIGp1bXAgZmVlcyIsImRpc2NvdW50ZWQgc2Vjb25kIGp1bXBzIiwiY29tcGxpbWVudGFyeSBwaG90b3MiXSwia2V5IjoyfSwiLiBGaW5hbGx5LCBlaWdodCBtZW1iZXJzIG9mIHRoZSBncm91cCBhcmUgbWlub3JzLCBzbyBJIGJlbGlldmUgdGhleSByZXF1aXJlICIseyJiIjo1LCJvcHRpb25zIjpbImFuIGV4dHJhIGRlcG9zaXQiLCJhIGd1YXJkaWFuIHByZXNlbnQiLCJwYXJlbnRhbCBjb25zZW50IiwiYWRkaXRpb25hbCBnZWFyIl0sImtleSI6M30sIi4gSXMgdGhhdCBjb3JyZWN0P1xuXG5JIGxvb2sgZm9yd2FyZCB0byBoZWFyaW5nIGZyb20geW91LFxuXG5Kb2huIEFuZGVyc29uIl19LHsidHlwZSI6InN0ZW1saXN0IiwiaW5zdHIiOiJVc2luZyB0aGUgZHJvcC1kb3duIG1lbnUgKCAmIzk2NjI7ICksIGNob29zZSB0aGUgYmVzdCBvcHRpb24uIiwiaXRlbXMiOlt7Im4iOjYsInByZSI6IlRoZSBwdXJwb3NlIG9mIHRoZSBlbWFpbCBpcyB0byIsIm9wdGlvbnMiOlsiY29uZmlybSBhIHBhcnR5IHJlc2VydmF0aW9uLiIsImNsYXJpZnkgc29tZSBxdWVzdGlvbnMuIiwiZ2V0IGRldGFpbHMgb24gdGhlIGxvY2F0aW9uLiIsInJlcXVlc3Qgc29tZSBsaWFiaWxpdHkgZm9ybXMuIl0sImtleSI6Mn0seyJuIjo3LCJwcmUiOiJKb2huIGhhcyIsIm9wdGlvbnMiOlsicmVzZWFyY2hlZCBzaW1pbGFyIGNvbXBhbmllcy4iLCJjb250YWN0ZWQgdGhlIGNvbXBhbnkgYmVmb3JlLiIsImdvdHRlbiB0aGUgcmVxdWlyZWQgZm9ybXMgc2lnbmVkLiIsInByZXZpb3VzbHkgdHJpZWQgdGhlIGFjdGl2aXR5LiJdLCJrZXkiOjF9LHsibiI6OCwicHJlIjoiSm9oblx1MjAxOXMgc29uIGlzIiwib3B0aW9ucyI6WyJzY2FyZWQgb2YgZXh0cmVtZSBzcG9ydHMuIiwiZ3JhZHVhdGluZyBoaWdoIHNjaG9vbC4iLCJhIGZhbiBvZiBza3lkaXZpbmcuIiwidW5hd2FyZSBvZiB0aGUgcGxhbi4iXSwia2V5Ijo0fV19XX0seyJpZCI6MywibmFtZSI6IlJlYWRpbmcgUGFydCAzOiBSZWFkaW5nIGZvciBJbmZvcm1hdGlvbiIsInRpbWUiOiI5IG1pbnV0ZXMiLCJwYXNzYWdlIjp7InR5cGUiOiJ0ZXh0IiwibGFiZWwiOiJSZWFkIHRoZSBmb2xsb3dpbmcgcGFzc2FnZS4iLCJodG1sIjoiPHA+PHN0cm9uZz5BLjwvc3Ryb25nPiBIYXZlIHlvdSBldmVyIHJ1biBhIG1hcmF0aG9uPyBBY2NvcmRpbmcgdG8gcmVjZW50IHN0YXRpc3RpY3MsIG1hcmF0aG9ucyBhcmUgYmVjb21pbmcgaW5jcmVhc2luZ2x5IHBvcHVsYXIuIEluIGZhY3QsIHRoZSBudW1iZXIgb2YgcGVvcGxlIGluIE5vcnRoIEFtZXJpY2Egd2hvIGhhdmUgcnVuIHRoZSB0cmFkaXRpb25hbCBtYXJhdGhvbiBkaXN0YW5jZSBvZiA0Mi4yIGttIChvciAyNi42IG1pbGVzKSBoYXMgaW5jcmVhc2VkIHR3ZW50eWZvbGQgb3ZlciB0aGUgbGFzdCA0MCB5ZWFycy4gSW4gcmVjZW50IHllYXJzLCBhbG1vc3QgaGFsZiB0aGUgcnVubmVycyBoYXZlIGJlZW4gd29tZW4uIEEgc3RhZ2dlcmluZyA3NDYgZGlmZmVyZW50IG1hcmF0aG9ucyB3ZXJlIHNjaGVkdWxlZCBhY3Jvc3MgTm9ydGggQW1lcmljYSBpbiAyMDE0LiBPbmUgb2YgdGhlIG1vc3QgcG9wdWxhciwgdGhlIEJvc3RvbiBNYXJhdGhvbiwgaGFkIG1vcmUgdGhhbiAzNSwwMDAgb2ZmaWNpYWwgcnVubmVycyBpbiAyMDE0LCBvZiB3aGljaCBtb3JlIHRoYW4gMzEsMDAwIGZpbmlzaGVkIHRoZSByYWNlLiBIb3dldmVyLCBydW5uaW5nIGEgbWFyYXRob24gaXMgbm90IGEgc2ltcGxlIGZlYXQuPC9wPjxwPjxzdHJvbmc+Qi48L3N0cm9uZz4gVHJhaW5pbmcgZm9yIGEgbWFyYXRob24gZGVtYW5kcyBhIGdyZWF0IGRlYWwgb2YgdGltZSBhbmQgZGVkaWNhdGlvbi4gT24gYXZlcmFnZSwgdHJhaW5lZXMgbmVlZCB0byBkZWRpY2F0ZSA1IGRheXMgYSB3ZWVrIHRvIHJ1bm5pbmcsIHdpdGggb25lIG9mIHRoZXNlIGRheXMgZGV2b3RlZCB0byBhIGxvbmcgcnVuLiBUaGUgbG9uZyBydW4gY2FuIHJhbmdlIGFueXdoZXJlIGZyb20gMTYga20gYXQgdGhlIHN0YXJ0IG9mIGEgdHJhaW5pbmcgcHJvZ3JhbSB0byAzMiBrbSBpbiBsYXRlciB3ZWVrcy4gSXQgaXMgdHlwaWNhbCBmb3IgYSBwZXJzb24gdG8gcnVuIHVwIHRvIDgwIGttIGluIGEgc2luZ2xlIHdlZWsgd2hpbGUgdHJhaW5pbmcuIER1cmluZyB0cmFpbmluZywgcnVubmVycyBuZWVkIHRvIHBheSBzdHJpY3QgYXR0ZW50aW9uIHRvIHRoZWlyIGRpZXQgYW5kIGluY2x1ZGUgaGlnaC1xdWFsaXR5IGZvb2RzIHN1Y2ggYXMgd2hvbGUgZ3JhaW5zLCBsZWFuIG1lYXRzLCB2ZWdldGFibGVzLCBhbmQgZnJ1aXRzLjwvcD48cD48c3Ryb25nPkMuPC9zdHJvbmc+IEV2ZW4gdGhvdWdoIHRyYWluaW5nIGZvciBhIG1hcmF0aG9uIGlzIHJpZ29yb3VzIGFuZCByZXF1aXJlcyBmaXJtIGNvbW1pdG1lbnQsIG1hbnkgcGVvcGxlIGFyZSBlbmpveWluZyB0aGUgZXhwZXJpZW5jZS4gT25lIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0LCBpbmNyZWFzaW5nbHksIHJ1bm5pbmcgaXMgdmlld2VkIGFzIGEgd2F5IHRvIGJlY29tZSBwaHlzaWNhbGx5IGZpdCBhbmQgbWFpbnRhaW4gYSBoZWFsdGh5IGxpZmVzdHlsZS4gUnVubmVycyB3aG8gcmVndWxhcmx5IHRyYWluIGZvciBtYXJhdGhvbnMgY2FuIGV4cGVyaWVuY2UgaGVhbHRoIGJlbmVmaXRzIHN1Y2ggYXMgYW4gaW5jcmVhc2VkIG1ldGFib2xpc20gYW5kIHN0cmVuZ3RoZW5lZCBoZWFydCBhbmQgbHVuZ3MuIEFub3RoZXIgcmVhc29uIGlzIHRoYXQgcnVubmluZyBpcyBpbmV4cGVuc2l2ZSBhbmQgY2FuIGJlIGRvbmUganVzdCBhYm91dCBhbnl3aGVyZTsgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHB1dCBvbiBhIHBhaXIgb2Ygc25lYWtlcnMgYW5kIHN0ZXAgb3V0c2lkZS4gU29tZSBwZW9wbGUgYWxzbyByZXBvcnQgZXhwZXJpZW5jaW5nIGEgcnVubmVyJnJzcXVvO3MgaGlnaCB3aGljaCBoYXMgYmVlbiBkZWZpbmVkIGFzIGEgZmVlbGluZyBvZiBleHRyZW1lIGV1cGhvcmlhIG9yIGhhcHBpbmVzcy48L3A+PHA+PHN0cm9uZz5ELjwvc3Ryb25nPiBTb21lIGV4cGVydHMgYmVsaWV2ZSB0aGF0IHJ1bm5pbmcgYSBtYXJhdGhvbiBpcyB0b28gZXh0cmVtZSB0byBiZSBoZWFsdGh5LiBUaGUgcmVhc29uIHdoeSBhIG1hcmF0aG9uIGlzIDQyLjIga20gaXMgYmVjYXVzZSBhIG1hbiBpbiBhbmNpZW50IEdyZWVjZSByYW4gdGhlIGRpc3RhbmNlIGZyb20gTWFyYXRob24gdG8gQXRoZW5zIHRvIHNoYXJlIHRoZSBuZXdzIG9mIGEgdmljdG9yeS4gQXBwYXJlbnRseSwgaGUgZGllZCBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgaGlzIGFubm91bmNlbWVudC4gRXZlbiBub3csIHNldmVyYWwgcGVvcGxlIGRpZSBlYWNoIHllYXIgYWZ0ZXIgcnVubmluZyBhIG1hcmF0aG9uLiBTZXJpb3VzIGhlYWx0aCByaXNrcyBjYW4gaW5jbHVkZSBkZWh5ZHJhdGlvbiBvciB3YXRlciBpbnRveGljYXRpb24uIFNjaWVudGlzdHMgYmVsaWV2ZSwgaG93ZXZlciwgdGhhdCB0aGUgcmVhc29ucyBhcmUgbm90IGFsd2F5cyByZWxhdGVkIHRvIHJ1bm5pbmcuIFNvbWUgZGVhdGhzLCBmb3IgZXhhbXBsZSwgYXJlIGF0dHJpYnV0YWJsZSB0byBwcmUtZXhpc3RpbmcgaGVhcnQgY29uZGl0aW9ucy4gTWFyYXRob24gcnVubmVycyBuZWVkIHRvIGJlIGZ1bGx5IGludm9sdmVkIGluIGRlc2lnbmluZyB0aGVpciBvd24gaGVhbHRoeSB0cmFpbmluZyBwcm9ncmFtLjwvcD48cD48c3Ryb25nPkUuPC9zdHJvbmc+IE5vdCBnaXZlbiBpbiBhbnkgb2YgdGhlIGFib3ZlIHBhcmFncmFwaHMuPC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJtYXRjaCIsImluc3RyIjoiRGVjaWRlIHdoaWNoIHBhcmFncmFwaCwgQSB0byBELCBoYXMgdGhlIGluZm9ybWF0aW9uIGdpdmVuIGluIGVhY2ggc3RhdGVtZW50IGJlbG93LiBTZWxlY3QgRSBpZiB0aGUgaW5mb3JtYXRpb24gaXMgbm90IGdpdmVuIGluIGFueSBvZiB0aGUgcGFyYWdyYXBocy4iLCJsZXR0ZXJzIjpbIkEiLCJCIiwiQyIsIkQiLCJFIl0sIml0ZW1zIjpbeyJuIjoxLCJ0ZXh0IjoiRm9sbG93aW5nIGEgcmlnb3JvdXMgcm91dGluZSBpcyBlc3NlbnRpYWwgdG8gcnVubmluZyBhIHN1Y2Nlc3NmdWwgbWFyYXRob24uIiwia2V5IjoyfSx7Im4iOjIsInRleHQiOiJOdW1lcm91cyBmYWN0b3JzIG1ha2UgcnVubmluZyBhbiBhdHRyYWN0aXZlIHBhc3RpbWUuIiwia2V5IjozfSx7Im4iOjMsInRleHQiOiJBIGhpc3RvcmljYWwgZXZlbnQgZGV0ZXJtaW5lZCB0aGUgbGVuZ3RoIG9mIGEgbWFyYXRob24uIiwia2V5Ijo0fSx7Im4iOjQsInRleHQiOiJNYXJhdGhvbiBydW5uaW5nIG1heSBpbmNyZWFzZSB0aGUgcmlzayBvZiBoZWFydCBkaXNlYXNlLiIsImtleSI6NX0seyJuIjo1LCJ0ZXh0IjoiRGVzcGl0ZSB0aGUgY2hhbGxlbmdlcyBpdCBwcmVzZW50cywgbWFyYXRob24gcnVubmluZyBpcyBhdHRyYWN0aW5nIG1vcmUgaW50ZXJlc3QuIiwia2V5IjoxfSx7Im4iOjYsInRleHQiOiJSdW5uaW5nIGEgbWFyYXRob24gY2FuIHRyaWdnZXIgaW50ZW5zZSBlbW90aW9uLiIsImtleSI6M30seyJuIjo3LCJ0ZXh0IjoiVGhlIG51bWJlciBvZiBtZW4gcnVubmluZyBpbiBtYXJhdGhvbnMgaGFzIGRlY3JlYXNlZC4iLCJrZXkiOjV9LHsibiI6OCwidGV4dCI6IlRoZXJlIGlzIGEgZ29vZCBnZW5kZXIgYmFsYW5jZSBhbW9uZyBtYXJhdGhvbiBwYXJ0aWNpcGFudHMuIiwia2V5IjoxfSx7Im4iOjksInRleHQiOiJUaGUgcGh5c2ljYWwgZGVtYW5kcyBvZiBydW5uaW5nIGEgbWFyYXRob24gY2FuIHJlc3VsdCBpbiB1bmZvcnR1bmF0ZSBjb25zZXF1ZW5jZXMuIiwia2V5Ijo0fV19XX0seyJpZCI6NCwibmFtZSI6IlJlYWRpbmcgUGFydCA0OiBSZWFkaW5nIGZvciBWaWV3cG9pbnRzIiwidGltZSI6IjEyIG1pbnV0ZXMiLCJwYXNzYWdlIjp7InR5cGUiOiJ0ZXh0IiwibGFiZWwiOiJSZWFkIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmcm9tIGEgd2Vic2l0ZS4iLCJodG1sIjoiPHA+UHJvZHVjaW5nIGdyYWR1YXRlcyB3aG8gYXJlIHByZXBhcmVkIGZvciBzY2llbmNlLCB0ZWNobm9sb2d5LCBlbmdpbmVlcmluZywgYW5kIG1hdGhlbWF0aWNzIChTVEVNKSBjYXJlZXJzIGhhcyBiZWVuIGEgbWFqb3IgY29uY2VybiBmb3IgaW50ZXJuYXRpb25hbCBjb3Jwb3JhdGlvbnMgYW5kIGdvdmVybm1lbnQgYWdlbmNpZXMuIEhvd2V2ZXIsIHRoZSBiZWxpZWYgdGhhdCB0aGlzIGZvY3VzIGNvdWxkIGhhcm0gdGhlIGNyZWF0aXZpdHkgcmVxdWlyZWQgdG8gdHJhaW4gU1RFTSBncmFkcyB3aG8gY2FuIHRoaW5rIG91dHNpZGUgdGhlIGJveCBpcyBiZWNvbWluZyBpbmNyZWFzaW5nbHkgY29tbW9uLjwvcD48cD5CdXNpbmVzcyBhbmFseXN0IEVkdWFyZG8gR29tZXogY29udGVuZHMgdGhhdCB3aXRob3V0IGEgbGliZXJhbCBhcnRzIGVkdWNhdGlvbiwgYW4gZXNzZW50aWFsIGNvbXBvbmVudCBmb3IgYWR2YW5jZW1lbnQgd291bGQgYmUgbG9zdC4gQWNjb3JkaW5nIHRvIEdvbWV6LCBtYW55IG9mIHRvZGF5JnJzcXVvO3Mgc3R1ZGVudHMgYXJlIHVuZGVyIGludGVuc2UgcHJlc3N1cmUgZnJvbSBwYXJlbnRzIG9wcG9zZWQgdG8gdGhlIGxpYmVyYWwgYXJ0cy4gVGhlc2UgJmxkcXVvO2hlbGljb3B0ZXIgcGFyZW50cyZyZHF1bzsgZ28gc28gZmFyIGFzIHRvIGRldGVybWluZSB0aGVpciBjaGlsZHJlbiZyc3F1bztzIGNob2ljZSBvZiBzY2hvb2wsIHByb2dyYW0sIGFuZCBmdXR1cmUgU1RFTSBjYXJlZXIuIFNvbWUgeW91bmcgcGVvcGxlIHJlc3BvbmQgdG8gdGhpcyBhdXRob3JpdGF0aXZlIGJlaGF2aW91ciB0aHJvdWdoIHByZS1wcm9mZXNzaW9uYWxpc20mbWRhc2g7bGVhcm5pbmcgZWxlbWVudHMgb2YgdGhlaXIgZnV0dXJlIHByb2Zlc3Npb24gYXMgZWFybHkgYXMgc2Vjb25kYXJ5IHNjaG9vbC4gJmxkcXVvO0kgYmVsaWV2ZSB0aGF0IGEgU1RFTSBkZWdyZWUgb24gaXRzIG93biBpcyBhbiBpbnN1ZmZpY2llbnQgdG9vbCB0byBhY2Nlc3Mgb25lJnJzcXVvO3MgY2FwYWNpdHkgZm9yIGlubm92YXRpb24sJnJkcXVvOyBzYXlzIEdvbWV6LiAmbGRxdW87SXQgc2hvdWxkIGJlIG1hbmRhdG9yeSBmb3IgU1RFTSBncmFkcyB0byBjb21wbGV0ZSBhIHByZWRldGVybWluZWQgbnVtYmVyIG9mIGhvdXJzIGluIHRoZSBsaWJlcmFsIGFydHMgc3RyZWFtLiZyZHF1bzs8L3A+PHA+RmluYW5jaWFsIGFkdmlzb3IgTmFvbWkgWXVrYXdhIGlzIHNrZXB0aWNhbCBvZiBHb21leiZyc3F1bztzIGFwcHJvYWNoLiAmbGRxdW87RXh0cmEgY3JlZGl0IGhvdXJzIGFyZSBjb3N0bHkgYW5kIGNhbiByZXN1bHQgaW4gc3R1ZGVudHMgbWlzc2luZyB0aGUgZWNvbm9taWMgYm9hdCBhcyB0aGV5IGVudGVyIHRoZSB3b3JrZm9yY2Ugd2l0aCBpbnN1cm1vdW50YWJsZSBkZWJ0LiZyZHF1bzsgU2hlIGNpdGVzIGNhdXRpb25hcnkgc3RhdGlzdGljcyBmcm9tIHRoZSBDYW5hZGEgU3R1ZGVudCBMb2FucyBQcm9ncmFtIG9mIGdyYWR1YXRlcyB3aXRoIGFuIGF2ZXJhZ2Ugb2Ygb3ZlciAkMjUsMDAwIGluIGRlYnQgbGFzdCB5ZWFyLCBhbmQgcGxlYWRzIGZvciBzdHVkZW50cyB0byB0cmVhdCB0aGVpciBjdXJyZW50IHVuZGVyZ3JhZHVhdGUgeWVhcnMgYXMgYSBmdXR1cmUgZWNvbm9taWMgaW52ZXN0bWVudCBieSBtaW5pbWl6aW5nIGRlYnQgYWNjdW11bGF0aW9uLjwvcD48cD5GZWFycyBvZiBmYWxsaW5nIG9mZiB0aGUgZWNvbm9taWMgbGFkZGVyJm1kYXNoO29mdGVuIHBlcnBldHVhdGVkIGJ5IHdlbGwtbWVhbmluZyBmYW1pbHkgbWVtYmVycyZtZGFzaDttZWFuIHRoYXQgc3R1ZGVudHMgb2Z0ZW4gZGlzbWlzcyBjYXJlZXIgZXhwbG9yYXRpb24gdGhyb3VnaCBkb3VibGUgbWFqb3JzIGFzIGFuIHVuYWZmb3JkYWJsZSBsdXh1cnkuIFZpY3RvciBLbGVpbiwgYW4gYWR2aXNvciBhdCBhbiBpbm5vdmF0aXZlIHVuaXZlcnNpdHkgZm9jdXNlZCBvbiB0aGUgY3VsdGl2YXRpb24gb2YgYnJvYWQga25vd2xlZGdlLCB3YW50cyB0byBxdWVsbCB0aGlzIGZpbmFuY2lhbCBhbnhpZXR5LiAmbGRxdW87QWR2YW5jZSBVbml2ZXJzaXR5IGlzIENhbmFkYSZyc3F1bztzIGZpcnN0IGluZGVwZW5kZW50IHVuaXZlcnNpdHkgYW5kIG9mZmVycyBvbmx5IG9uZSB0eXBlIG9mIGRlZ3JlZTogYSBCYWNoZWxvciBvZiBBcnRzIGFuZCBTY2llbmNlcy4mcmRxdW87IEtsZWluIGluc2lzdHMgZW1wbG95ZXJzIGFyZSBzZWFyY2hpbmcgZm9yIGNhbmRpZGF0ZXMgd2l0aCB0aGUgYWJpbGl0eSB0byB0aGluayBjcml0aWNhbGx5IGFuZCBhbmFseXplIGxvZ2ljYWxseSZtZGFzaDt0aGUgZXhhY3QgcXVhbGl0aWVzIHRoYXQgYSBsaWJlcmFsIGFydHMgZWR1Y2F0aW9uIGlzIG1lYW50IHRvIGRldmVsb3AuPC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gb24gdGhlIHdlYnNpdGUuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IldoYXQgaXMgdGhlIGF1dGhvclx1MjAxOXMgcHVycG9zZSBpbiB3cml0aW5nIHRoaXMgYXJ0aWNsZT8iLCJvcHRpb25zIjpbInRvIHN1Z2dlc3QgYSBzb2x1dGlvbiB0byByZXZpdmUgbGliZXJhbCBhcnRzIGVkdWNhdGlvbiIsInRvIGFkdm9jYXRlIGZvciBhIGhvbGlzdGljIGVkdWNhdGlvbiBwYXRod2F5IiwidG8gZGlzbWlzcyB0aGUgaW1wb3J0YW5jZSBvZiBTVEVNIGNhcmVlcnMiLCJ0byBhZHZpc2Ugc3R1ZGVudHMgaW4gdGhlaXIgcG9zdC1zZWNvbmRhcnkgZW5kZWF2b3VycyJdLCJrZXkiOjJ9LHsibiI6MiwicHJlIjoiSG93IHdvdWxkIEdvbWV6IGRlc2NyaWJlIFx1MjAxY2hlbGljb3B0ZXIgcGFyZW50c1x1MjAxZD8iLCJvcHRpb25zIjpbIlRoZXkgc3VwcG9ydCBzdHVkZW50c1x1MjAxOSBjYXJlZXIgY2hvaWNlcy4iLCJUaGV5IGVuY291cmFnZSBzdHVkZW50c1x1MjAxOSBpbm5vdmF0aW9ucy4iLCJUaGV5IGNvbnN0cmFpbiBzdHVkZW50c1x1MjAxOSBpbmRpdmlkdWFsaXR5LiIsIlRoZXkgZGVjaWRlIHN0dWRlbnRzXHUyMDE5IGxlYXJuaW5nIGhhYml0cy4iXSwia2V5IjozfSx7Im4iOjMsInByZSI6IldoYXQgZG9lcyBHb21leiBzdWdnZXN0IGFzIGFuIG91dGNvbWUgb2YgaW5jbHVkaW5nIGxpYmVyYWwgYXJ0cyBjbGFzc2VzIGluIGVkdWNhdGlvbj8iLCJvcHRpb25zIjpbImluY3JlYXNlZCBsZWFkaW5nLWVkZ2UgZGlzY292ZXJpZXMiLCJhIGRlY2xpbmUgaW4gU1RFTSBjYXJlZXJzIiwiZGVjcmVhc2VkIHBhcmVudGFsIGludm9sdmVtZW50IiwiYSBib29zdCBpbiBwcmUtcHJvZmVzc2lvbmFsaXNtIl0sImtleSI6MX0seyJuIjo0LCJwcmUiOiJXaGF0IGlzIFl1a2F3YVx1MjAxOXMgYWR2aWNlIGZvciBzdHVkZW50cz8iLCJvcHRpb25zIjpbInN0YXJ0IHdvcmtpbmcgYWZ0ZXIgZ3JhZHVhdGlvbiIsInJlZHVjZSBzcGVuZGluZyBvbiBlZHVjYXRpb24iLCJpbnZlc3QgaW4gdW5pdmVyc2l0eSBjb3Vyc2VzIiwicGF5IG9mZiBzdHVkZW50IGRlYnQgcXVpY2tseSJdLCJrZXkiOjJ9LHsibiI6NSwicHJlIjoiSG93IHdvdWxkIEtsZWluIGRlc2NyaWJlIEFkdmFuY2UgVW5pdmVyc2l0eSBzdHVkZW50cz8iLCJvcHRpb25zIjpbIlRoZXkgcmVmdXNlIHRvIHNlZWsgb3RoZXIgY2FyZWVyIHBhdGhzLiIsIlRoZXkgY2FuIGFmZm9yZCBjb21wcmVoZW5zaXZlIGNvdXJzZXMuIiwiVGhleSBwcmVmZXIgYSBmb2N1c2VkIHVuaXZlcnNpdHkgZGVncmVlLiIsIlRoZXkgYXJlIGxpa2VseSB0byBleGNlbCBpbiBhbnkgY2FyZWVyLiJdLCJrZXkiOjR9XX0seyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IlRoZSBmb2xsb3dpbmcgaXMgYSBjb21tZW50IGJ5IGEgdmlzaXRvciB0byB0aGUgd2Vic2l0ZSBwYWdlLiBDb21wbGV0ZSB0aGUgY29tbWVudCBieSBjaG9vc2luZyB0aGUgYmVzdCBvcHRpb24gdG8gZmlsbCBpbiBlYWNoIGJsYW5rLiIsImJvZHkiOlsiQXMgYSBjb2xsZWdlIHByb2Zlc3NvciwgSSBoYXZlIGVuY291bnRlcmVkIGVuZGxlc3MgdW5kZXJncmFkdWF0ZXMgaW4gbXkgaHVtYW5pdGllcyBjbGFzc2VzIHdobyB3ZXJlIGRlY2lkZWQgU1RFTSBtYWpvcnMuIE1hbnkgb2YgdGhlbSwgYXMgR29tZXogc3VnZ2VzdHMsIHNlbGVjdGVkIG1ham9ycyAiLHsiYiI6Niwib3B0aW9ucyI6WyJiYXNlZCBvbiBhY2N1bXVsYXRpbmcgcGVyc29uYWwgd2VhbHRoIiwidGhhdCBkbyBub3QgcmVmbGVjdCB0aGVpciBwZXJzb25hbCBkZXNpcmVzIiwiYWZ0ZXIgc29tZSB0aW1lIGluIHRoZSBsaWJlcmFsIGFydHMgc3RyZWFtIiwid2l0aG91dCBwcm9wZXJseSBjb25zaWRlcmluZyBjYXJlZXIgb3B0aW9ucyJdLCJrZXkiOjJ9LCIuIEkgYXBwcmVjaWF0ZSBHb21leiBoaWdobGlnaHRpbmcgdGhlIG5lZWQgZm9yIHN0dWRlbnRzIHRvICIseyJiIjo3LCJvcHRpb25zIjpbImJyb2FkZW4gdGhlaXIgYWNhZGVtaWMgaG9yaXpvbnMiLCJmb2N1cyBvbiB0aGVpciBmdXR1cmUgcHJvc3BlY3RzIiwiY29tcGxldGUgdGhlaXIgZGVncmVlcyBxdWlja2x5IiwiZGlzcmVnYXJkIHRoZWlyIGZhbWlsaWVzXHUyMDE5IGFkdmljZSJdLCJrZXkiOjF9LCIuIEFzIHRoZSBhcnRpY2xlIGluZGljYXRlcywgdGhlIHNraWxscyByZWZpbmVkIHdpdGhpbiBhIGxpYmVyYWwgYXJ0cyBwcm9ncmFtIGFyZSAiLHsiYiI6OCwib3B0aW9ucyI6WyJiZXlvbmQgY29tcGFyZSIsInN1ZmZpY2llbnQiLCJldmlkZW5jZS1iYXNlZCIsImluIGRlbWFuZCJdLCJrZXkiOjR9LCIuIFl1a2F3YVx1MjAxOXMgcmVtYXJrcyBhbHNvIHJlc29uYXRlIHdpdGggbWUgd2hlbiBzaGUgaW5zaXN0cyB0aGF0ICIseyJiIjo5LCJvcHRpb25zIjpbInBhcmVudGFsIGFkdmljZSIsImNhcmVlciBjaG9pY2VzIiwibG9uZy10ZXJtIGltcGFjdHMiLCJhbGFybWluZyBzdGF0aXN0aWNzIl0sImtleSI6M30sIiBzaG91bGQgYmUgYXQgdGhlIGZvcmVmcm9udCBvZiBzdHVkZW50c1x1MjAxOSByZWFzb25pbmcgd2hlbiBtYWtpbmcgY2hvaWNlcyByZWdhcmRpbmcgdGhlaXIgZWR1Y2F0aW9uLiBJIGFsc28gYWdyZWUgd2l0aCBBZHZhbmNlIFVuaXZlcnNpdHlcdTIwMTlzIG1hbmRhdGVcdTIwMTR0aGF0IGVkdWNhdGlvbmFsIHByb2dyYW1zIHNob3VsZCBiZSAiLHsiYiI6MTAsIm9wdGlvbnMiOlsic3Vic2lkaXplZCIsImNvbXByZWhlbnNpdmUiLCJjb25jZW50cmF0ZWQiLCJpbmRpdmlkdWFsaXplZCJdLCJrZXkiOjJ9LCIuIEl0IGlzIHBlcnRpbmVudCBmb3IgcGFyZW50cyB0byByZW1lbWJlciB0aGF0IHRoZSB3b3JsZCBpcyBhIGR5bmFtaWMgcGxhY2UgdGhhdCByZXF1aXJlcyBjcmVhdGl2ZSBhcnRzIHNjaG9sYXJzLiJdfV19XX07CgpmdW5jdGlvbiBjbGJFc3RpbWF0ZVIocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDEwXHUyMDEzMTInLCBub3RlOidBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDknLCAgbm90ZTonRWZmZWN0aXZlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjcpIHJldHVybiB7IGxldmVsOidDRUxQSVAgOCcsICBub3RlOidHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOidDRUxQSVAgNycsICBub3RlOidBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDYnLCAgbm90ZTonRGV2ZWxvcGluZyBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDExKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDUnLCAgbm90ZTonQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiB7IGxldmVsOidDRUxQSVAgNCBvciBiZWxvdycsIG5vdGU6J0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCihmdW5jdGlvbigpewogIC8qIC0tLS0gaW5qZWN0IHNjb3BlZCBDU1MgKFdvcmRQcmVzcy1zYWZlOiA8c3R5bGU+IGluIGNvbnRlbnQgY2FuIGJlIHN0cmlwcGVkKSAtLS0tICovCiAgdmFyIENTUyA9IGAKLmNscHItd3JhcHstLW5hdnk6IzA1MEUyMDstLWI5MDA6IzBEMjM1MjstLWI3MDA6IzEyNDVBODstLWI1MDA6IzI1NjNFQjstLWI0MDA6IzNCODJGNjstLWIyMDA6IzkzQzVGRDstLWIxMDA6I0RCRUFGRTstLWI1MDojRUZGNkZGOy0tdGVhbDojMEQ5NDg4Oy0tY3lhbjojMDZCNkQ0Oy0tZ3JlZW46IzEwQjk4MTstLWdyZWVuNTA6I0VDRkRGNTstLXJvc2U6I0Y0M0Y1RTstLXRleHQ6IzBGMTcyQTstLW11dGVkOiM0NzU1Njk7LS1zdWJ0bGU6Izk0QTNCODstLWJvcmRlcjojRTJFOEYwOy0tYmFyLWJnOiNFOEVCRUY7LS1iYXItYm9yZGVyOiNEM0Q5RTA7LS1iYXItdGV4dDojMUYyOTM3Oy0tcGFuZWwtcC1iZzojRjRGNUY3Oy0tcGFuZWwtcC1ib3JkZXI6I0UzRTZFQTstLXBhbmVsLXEtYmc6I0U5RjRGNzstLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7LS1kZC1vcGVuLWJnOiNDQkVCRjQ7Zm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTttYXgtd2lkdGg6MTE4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoxNnB4IDE2cHggNTZweDtsaW5lLWhlaWdodDoxLjU7Zm9udC1zaXplOjE2cHg7fQouY2xwci13cmFwICosLmNscHItd3JhcCAqOjpiZWZvcmUsLmNscHItd3JhcCAqOjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7fQouY2xwci13cmFwIGJ1dHRvbntmb250LWZhbWlseTppbmhlcml0O2N1cnNvcjpwb2ludGVyO30KLmNscHItd3JhcCBoMSwuY2xwci13cmFwIGgyLC5jbHByLXdyYXAgaDMsLmNscHItd3JhcCBwe21hcmdpbjowO30KLmNscHItaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6dmFyKC0tbmF2eSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjM0cHggMzhweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxM3B4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Ym94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KTt9Ci5jbHByLWF1cm9yYXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3BvaW50ZXItZXZlbnRzOm5vbmU7fQouY2xwci1hdXJvcmEgc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO2ZpbHRlcjpibHVyKDQ2cHgpO29wYWNpdHk6LjU1O30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpe3dpZHRoOjQyMHB4O2hlaWdodDo0MjBweDtsZWZ0Oi0xMjBweDt0b3A6LTIwMHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7d2lkdGg6MzgwcHg7aGVpZ2h0OjM4MHB4O3JpZ2h0Oi04MHB4O3RvcDotMTYwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXt3aWR0aDozNDBweDtoZWlnaHQ6MzQwcHg7cmlnaHQ6MjIlO2JvdHRvbTotMjQwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTt9Ci5jbHByLWhlcm8tYmFkZ2Vze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fQouY2xwci1iYWRnZS1icmFuZHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tYjkwMCk7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6NHB4IDExcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtsZXR0ZXItc3BhY2luZzouMDFlbTt9Ci5jbHByLWJhZGdlLXNldHtjb2xvcjp2YXIoLS1iMjAwKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7fQouY2xwci1oZXJvIGgxe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2xpbmUtaGVpZ2h0OjEuMTI7fQouY2xwci1oZXJvLXN1Yntwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjojQzdEMkUzO2ZvbnQtc2l6ZToxNC41cHg7bWF4LXdpZHRoOjc2MHB4O30KLmNscHItaGVyby1jaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtwb3NpdGlvbjpyZWxhdGl2ZTt9Ci5jbHByLWNoaXB7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDA7Y29sb3I6I0U1RUVGQjtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA4KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE2KTtwYWRkaW5nOjVweCAxMXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7fQouY2xwci1jdGF7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDo2cHg7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTVweDtwYWRkaW5nOjEycHggMjJweDtib3JkZXItcmFkaXVzOjEycHg7Ym94LXNoYWRvdzowIDEycHggMjRweCAtMTBweCByZ2JhKDM3LDk5LDIzNSwuOCk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyxiYWNrZ3JvdW5kIC4xNXM7fQouY2xwci1jdGE6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7YmFja2dyb3VuZDp2YXIoLS1iNDAwKTt9Ci5jbHByLXRvb2xiYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW4tdG9wOjE4cHg7cGFkZGluZzoxMHB4IDE0cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE0cHg7Ym94LXNoYWRvdzowIDZweCAxOHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI1KTtwb3NpdGlvbjpzdGlja3k7dG9wOjhweDt6LWluZGV4OjMwO30KLmNscHItdG9vbGJhcltoaWRkZW5de2Rpc3BsYXk6bm9uZTt9Ci5jbHByLXRvb2xiYXItc3BhY2Vye2ZsZXg6MTt9Ci5jbHByLXNjb3JlLWNoaXB7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDt9Ci5jbHByLXRidG57YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7cGFkZGluZzo4cHggMTVweDtib3JkZXItcmFkaXVzOjEwcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjEycyxib3gtc2hhZG93IC4xMnM7fQouY2xwci10YnRuOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO2JveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpO30KLmNscHItdGJ0bi1jaGVja3tiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7fQouY2xwci10YnRuLWNoZWNrOmhvdmVye2JhY2tncm91bmQ6IzBjYTY3ODt9Ci5jbHByLXRidG5bZGlzYWJsZWRde29wYWNpdHk6LjU7Y3Vyc29yOm5vdC1hbGxvd2VkO3RyYW5zZm9ybTpub25lO2JveC1zaGFkb3c6bm9uZTt9Ci5jbHByLXNpbXttYXJnaW4tdG9wOjE2cHg7fQouY2xwci1zaW1baGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci1kb3Rze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O21hcmdpbjowIDAgMTJweCAycHg7ZmxleC13cmFwOndyYXA7fQouY2xwci1kb3R7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjdweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgLjE1czt9Ci5jbHByLWRvdCBie2Rpc3BsYXk6aW5saW5lLWZsZXg7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWIxMDApO2NvbG9yOnZhcigtLWI5MDApO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O30KLmNscHItZG90LmNscHItY3Vye2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7fQouY2xwci1kb3QuY2xwci1jdXIgYntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjI1KTtjb2xvcjojZmZmO30KLmNscHItZG90LmNscHItZG9uZSBie2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7fQouY2xwci1jYXR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjQpO30KLmNscHItYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxMXB4IDE2cHg7YmFja2dyb3VuZDp2YXIoLS1iYXItYmcpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItYmFyLXRpdGxle2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iYXItdGV4dCk7ZmxleDoxO21pbi13aWR0aDowO30KLmNscHItYmFyLXRpbWVye2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLWJhci10ZXh0KTt3aGl0ZS1zcGFjZTpub3dyYXA7fQouY2xwci1iYXItdGltZXIgYntmb250LXdlaWdodDo4MDA7fQouY2xwci1jb2xze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MDt9Ci5jbHByLXBhc3NhZ2V7cGFkZGluZzoyMHB4IDIycHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbC1wLWJnKTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXAtYm9yZGVyKTttYXgtaGVpZ2h0OjEyMDBweDtvdmVyZmxvdzphdXRvO30KLmNscHItcWNvbHtwYWRkaW5nOjE4cHggMjJweDtiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpO21heC1oZWlnaHQ6MTIwMHB4O292ZXJmbG93OmF1dG87fQouY2xwci1wbGFiZWwsLmNscHItaW5zdHJ7ZGlzcGxheTpmbGV4O2dhcDo5cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYjkwMCk7bWFyZ2luLWJvdHRvbToxMnB4O30KLmNscHItcGxhYmVsOjpiZWZvcmUsLmNscHItaW5zdHI6OmJlZm9yZXtjb250ZW50OiJpIjtmbGV4Om5vbmU7d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc3R5bGU6aXRhbGljO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjFweDt9Ci5jbHByLXBhc3NhZ2UgcHtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMxZTJhM2E7bWFyZ2luLWJvdHRvbToxMXB4O2xpbmUtaGVpZ2h0OjEuNzI7fQouY2xwci1waW1ne3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6YmxvY2s7fQouY2xwci1ibG9ja3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweCAxNnB4O21hcmdpbi1ib3R0b206MTZweDt9Ci5jbHByLXN0ZW17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO2ZvbnQtc2l6ZToxNXB4O2NvbG9yOnZhcigtLXRleHQpO3BhZGRpbmc6OXB4IDA7bGluZS1oZWlnaHQ6MS43O30KLmNscHItc3RlbSArIC5jbHByLXN0ZW17Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNFNkVERjE7fQouY2xwci1zbnVte2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1iNzAwKTt9Ci5jbHByLWNsb3ple2ZvbnQtc2l6ZToxNXB4O2NvbG9yOnZhcigtLXRleHQpO2xpbmUtaGVpZ2h0OjIuMTU7fQouY2xwci1jbG96ZSAuY2xwci1wYXJhe21hcmdpbi1ib3R0b206MTJweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt9Ci5jbHByLW1hdGNoLXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTJweDtwYWRkaW5nOjExcHggMDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjt9Ci5jbHByLW1hdGNoLXJvdyArIC5jbHByLW1hdGNoLXJvd3tib3JkZXItdG9wOjFweCBkYXNoZWQgI0U2RURGMTt9Ci5jbHByLW1hdGNoLXJvdyAuY2xwci1zbnVte21hcmdpbi10b3A6NXB4O30KLyogZHJvcGRvd24gd2lkZ2V0ICovCi5jbHByLWRke3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWZsZXg7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbjoycHggMnB4O30KLmNscHItZGQtYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWluLXdpZHRoOjY0cHg7bWF4LXdpZHRoOjM0MHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNCN0MyQ0U7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzo1cHggOXB4O2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6dmFyKC0tdGV4dCk7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOmxlZnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnMsYm9yZGVyLWNvbG9yIC4xMnM7fQouY2xwci1kZC1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9Ci5jbHByLWRkLmNscHItb3BlbiAuY2xwci1kZC1idG57YmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fQouY2xwci1kZC10eHR7ZmxleDoxO21pbi13aWR0aDowO30KLmNscHItZGQtdHh0LmNscHItZW1wdHl7Y29sb3I6dmFyKC0tc3VidGxlKTtsZXR0ZXItc3BhY2luZzozcHg7fQouY2xwci1kZC1jYXJldHtmb250LXNpemU6OXB4O2NvbG9yOnZhcigtLWI3MDApO2ZsZXg6bm9uZTt9Ci5jbHByLWRkLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo2MDt0b3A6Y2FsYygxMDAlICsgNHB4KTtsZWZ0OjA7bWluLXdpZHRoOjI0MHB4O21heC13aWR0aDozNjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjQzZEMERBO2JvcmRlci1yYWRpdXM6OHB4O2JveC1zaGFkb3c6MCAxNnB4IDM0cHggLTEycHggcmdiYSgxNSwyMyw0MiwuNCk7cGFkZGluZzo1cHg7ZGlzcGxheTpub25lO30KLmNscHItZGQuY2xwci1vcGVuIC5jbHByLWRkLW1lbnV7ZGlzcGxheTpibG9jazt9Ci5jbHByLWRkLW9wdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OXB4O3BhZGRpbmc6OHB4IDlweDtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLXRleHQpO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjEuNDt9Ci5jbHByLWRkLW9wdDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWI1MCk7fQouY2xwci1kZC1vcHQgLmNscHItcmFkaW97ZmxleDpub25lO3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjEuNXB4IHNvbGlkICM5QUE3QjQ7bWFyZ2luLXRvcDoxcHg7fQouY2xwci1kZC1vcHQuY2xwci1zZWwgLmNscHItcmFkaW97Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDQyJSwjZmZmIDQ3JSk7fQouY2xwci1kZC5jbHByLXJpZ2h0IC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO2NvbG9yOiMwNDc4NTc7fQouY2xwci1kZC5jbHByLXdyb25nIC5jbHByLWRkLWJ0bntiYWNrZ3JvdW5kOiNGRkYxRjI7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTtjb2xvcjojQkUxMjNDO30KLmNscHItc29sdmVke2Rpc3BsYXk6bm9uZTttYXJnaW4tbGVmdDo3cHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzA0Nzg1Nzt9Ci5jbHByLWRkLmNscHItd3JvbmcgLmNscHItc29sdmVke2Rpc3BsYXk6aW5saW5lO30KLmNscHItbmF2e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE0cHggMThweDtiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1uYXZidG57YmFja2dyb3VuZDp2YXIoLS1iOTAwKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O3BhZGRpbmc6OXB4IDIwcHg7Ym9yZGVyLXJhZGl1czo5cHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjEycyxiYWNrZ3JvdW5kIC4xMnM7fQouY2xwci1uYXZidG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNzAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTt9Ci5jbHByLW5hdmJ0bi5jbHByLWdob3N0e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLW5hdmJ0bltkaXNhYmxlZF17b3BhY2l0eTouNDtjdXJzb3I6bm90LWFsbG93ZWQ7dHJhbnNmb3JtOm5vbmU7fQouY2xwci1yZXN1bHRze21hcmdpbi10b3A6MThweDt9Ci5jbHByLXJlc3VsdHNbaGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci1yZXMtY2FyZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI0cHggMjZweDtib3gtc2hhZG93OjAgMTZweCA0MHB4IC0yMnB4IHJnYmEoMTUsMjMsNDIsLjQpO30KLmNscHItcmVzLXRvcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoyMHB4O2ZsZXgtd3JhcDp3cmFwO30KLmNscHItcmVzLXNjb3Jle2ZvbnQtc2l6ZTo0NHB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjp2YXIoLS1iNzAwKTtsaW5lLWhlaWdodDoxO30KLmNscHItcmVzLXNjb3JlIHNwYW57Zm9udC1zaXplOjIwcHg7Y29sb3I6dmFyKC0tc3VidGxlKTt9Ci5jbHByLXJlcy1jbGJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTBweCAxNnB4O30KLmNscHItcmVzLWNsYiBie2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE4cHg7Y29sb3I6dmFyKC0tYjkwMCk7fQouY2xwci1yZXMtY2xiIHNtYWxse2NvbG9yOnZhcigtLW11dGVkKTt9Ci5jbHByLXJlcy1icmVha3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNnB4O30KLmNscHItcmVzLXBpbGx7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKTtiYWNrZ3JvdW5kOiNGMUY1Rjk7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxM3B4O30KLmNscHItcmVzLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi10b3A6MThweDtmbGV4LXdyYXA6d3JhcDt9CkBtZWRpYShtYXgtd2lkdGg6ODIwcHgpey5jbHByLWNvbHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9LmNscHItcGFzc2FnZXtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7bWF4LWhlaWdodDpub25lO30uY2xwci1xY29se21heC1oZWlnaHQ6bm9uZTt9fQpgOwogIHZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7IHN0LnRleHRDb250ZW50ID0gQ1NTOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKICB2YXIgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByV3JhcCcpOwogIHZhciBzdGFydEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU3RhcnQnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByVG9vbGJhcicpOwogIHZhciBzaW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclNpbScpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckRvdHMnKTsKICB2YXIgY2F0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckNhdCcpOwogIHZhciByZXN1bHRzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTY29yZUNoaXAnKTsKICB2YXIgY2hlY2tCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwckNoZWNrJyk7CiAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXNldCcpOwoKICB2YXIgUSA9IFtdOwogIHZhciBjdXJQYXJ0ID0gMDsKICB2YXIgY2hlY2tlZCA9IGZhbHNlOwoKICBmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQoKICAvKiBCdWlsZCB0aGUgcGVyc2lzdGVudCBxdWVzdGlvbiBsaXN0IE9OQ0U7IGF0dGFjaCAuX3EgdG8gZWFjaCBpdGVtL2JsYW5rIHNvCiAgICAgcmUtcmVuZGVyaW5nIGEgcGFydCByZXVzZXMgdGhlIHNhbWUgc3RhdGUgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdC4gKi8KICBmdW5jdGlvbiBpbml0UXVlc3Rpb25zKCl7CiAgICBRID0gW107CiAgICBSREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpewogICAgICBwYXJ0LmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uKGJsayl7CiAgICAgICAgaWYoYmxrLnR5cGU9PT0nY2xvemUnKXsKICAgICAgICAgIGJsay5ib2R5LmZvckVhY2goZnVuY3Rpb24odG9rKXsgaWYodHlwZW9mIHRvaz09PSdvYmplY3QnKXsgdG9rLl9xPXtzZWw6bnVsbCxrZXk6dG9rLmtleSxuOnRvay5iLHBhcnQ6cGFydC5pZH07IFEucHVzaCh0b2suX3EpOyB9IH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBibGsuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7IGl0Ll9xPXtzZWw6bnVsbCxrZXk6aXQua2V5LG46aXQubixwYXJ0OnBhcnQuaWR9OyBRLnB1c2goaXQuX3EpOyB9KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBtYWtlRHJvcGRvd24ob3B0aW9ucywgcXJlZil7CiAgICB2YXIgZGQgPSBlbCgnc3BhbicsJ2NscHItZGQnKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywnY2xwci1kZC1idG4nKTsKICAgIHZhciB0eHQgPSBlbCgnc3BhbicsJ2NscHItZGQtdHh0IGNscHItZW1wdHknLCcgICAnKTsKICAgIHZhciBjYXJldCA9IGVsKCdzcGFuJywnY2xwci1kZC1jYXJldCcsJ1x1MjViZScpOwogICAgYnRuLmFwcGVuZENoaWxkKHR4dCk7IGJ0bi5hcHBlbmRDaGlsZChjYXJldCk7CiAgICB2YXIgc29sdmVkID0gZWwoJ3NwYW4nLCdjbHByLXNvbHZlZCcsJycpOwogICAgdmFyIG1lbnUgPSBlbCgnc3BhbicsJ2NscHItZGQtbWVudScpOwogICAgb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgaSl7CiAgICAgIHZhciBvID0gZWwoJ3NwYW4nLCdjbHByLWRkLW9wdCcpOwogICAgICBvLmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1yYWRpbycpKTsKICAgICAgby5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCxvcHQpKTsKICAgICAgby5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZihjaGVja2VkKSByZXR1cm47CiAgICAgICAgcXJlZi5zZWwgPSBpKzE7CiAgICAgICAgdHh0LnRleHRDb250ZW50ID0gb3B0OyB0eHQuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7CiAgICAgICAgbWVudS5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC1vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnY2xwci1zZWwnKTt9KTsKICAgICAgICBvLmNsYXNzTGlzdC5hZGQoJ2NscHItc2VsJyk7CiAgICAgICAgY2xvc2VBbGwoKTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgfSk7CiAgICAgIG1lbnUuYXBwZW5kQ2hpbGQobyk7CiAgICB9KTsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGlmKGNoZWNrZWQpIHJldHVybjsKICAgICAgdmFyIHdhc09wZW4gPSBkZC5jbGFzc0xpc3QuY29udGFpbnMoJ2NscHItb3BlbicpOwogICAgICBjbG9zZUFsbCgpOwogICAgICBpZighd2FzT3BlbikgZGQuY2xhc3NMaXN0LmFkZCgnY2xwci1vcGVuJyk7CiAgICB9KTsKICAgIGRkLmFwcGVuZENoaWxkKGJ0bik7IGRkLmFwcGVuZENoaWxkKHNvbHZlZCk7IGRkLmFwcGVuZENoaWxkKG1lbnUpOwogICAgcXJlZi5kZEVsID0gZGQ7IHFyZWYudHh0RWwgPSB0eHQ7IHFyZWYuc29sdmVkRWwgPSBzb2x2ZWQ7IHFyZWYub3B0aW9ucyA9IG9wdGlvbnM7CiAgICBpZihxcmVmLnNlbCE9bnVsbCl7CiAgICAgIHR4dC50ZXh0Q29udGVudCA9IG9wdGlvbnNbcXJlZi5zZWwtMV07IHR4dC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsKICAgICAgdmFyIHNvID0gbWVudS5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwci1kZC1vcHQnKVtxcmVmLnNlbC0xXTsgaWYoc28pIHNvLmNsYXNzTGlzdC5hZGQoJ2NscHItc2VsJyk7CiAgICB9CiAgICByZXR1cm4gZGQ7CiAgfQogIGZ1bmN0aW9uIGNsb3NlQWxsKCl7IHdyYXAucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQuY2xwci1vcGVuJykuZm9yRWFjaChmdW5jdGlvbihkKXtkLmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItb3BlbicpO30pOyB9CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUFsbCk7CgogIGZ1bmN0aW9uIGJ1aWxkUGFydChwaSl7CiAgICB2YXIgcGFydCA9IFJEQVRBLnBhcnRzW3BpXTsKICAgIGNhdEVsLmlubmVySFRNTD0nJzsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywnY2xwci1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1iYXItdGl0bGUnLCAnUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyAnK3BhcnQubmFtZSkpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdkaXYnLCdjbHByLWJhci10aW1lcicsJ1N1Z2dlc3RlZCB0aW1lOiA8Yj4nK3BhcnQudGltZSsnPC9iPicpKTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKGJhcik7CiAgICB2YXIgY29scyA9IGVsKCdkaXYnLCdjbHByLWNvbHMnKTsKICAgIHZhciBsZWZ0ID0gZWwoJ2RpdicsJ2NscHItcGFzc2FnZScpOwogICAgbGVmdC5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1wbGFiZWwnLCBwYXJ0LnBhc3NhZ2UubGFiZWwpKTsKICAgIGlmKHBhcnQucGFzc2FnZS50eXBlPT09J2ltYWdlJyl7CiAgICAgIHZhciBpbWcgPSBlbCgnaW1nJywnY2xwci1waW1nJyk7IGltZy5zcmMgPSBwYXJ0LnBhc3NhZ2Uuc3JjOyBpbWcuYWx0ID0gcGFydC5wYXNzYWdlLmFsdHx8Jyc7IGxlZnQuYXBwZW5kQ2hpbGQoaW1nKTsKICAgIH0gZWxzZSB7CiAgICAgIGxlZnQuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsbnVsbCwgcGFydC5wYXNzYWdlLmh0bWwpKTsKICAgIH0KICAgIHZhciByaWdodCA9IGVsKCdkaXYnLCdjbHByLXFjb2wnKTsKICAgIHBhcnQuYmxvY2tzLmZvckVhY2goZnVuY3Rpb24oYmxvY2speyByaWdodC5hcHBlbmRDaGlsZChidWlsZEJsb2NrKGJsb2NrLCBwYXJ0KSk7IH0pOwogICAgY29scy5hcHBlbmRDaGlsZChsZWZ0KTsgY29scy5hcHBlbmRDaGlsZChyaWdodCk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChjb2xzKTsKICAgIHZhciBuYXYgPSBlbCgnZGl2JywnY2xwci1uYXYnKTsKICAgIHZhciBwcmV2ID0gZWwoJ2J1dHRvbicsJ2NscHItbmF2YnRuIGNscHItZ2hvc3QnLCdcdTIxOTAgUHJldmlvdXMgcGFydCcpOwogICAgdmFyIG5leHQgPSBlbCgnYnV0dG9uJywnY2xwci1uYXZidG4nLCdOZXh0IHBhcnQgXHUyMTkyJyk7CiAgICBwcmV2LmRpc2FibGVkID0gKHBpPT09MCk7IG5leHQuZGlzYWJsZWQgPSAocGk9PT1SREFUQS5wYXJ0cy5sZW5ndGgtMSk7CiAgICBwcmV2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgaWYocGk+MCkgZ28ocGktMSk7IH0pOwogICAgbmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGlmKHBpPFJEQVRBLnBhcnRzLmxlbmd0aC0xKSBnbyhwaSsxKTsgfSk7CiAgICBuYXYuYXBwZW5kQ2hpbGQocHJldik7IG5hdi5hcHBlbmRDaGlsZChuZXh0KTsKICAgIGNhdEVsLmFwcGVuZENoaWxkKG5hdik7CiAgICBpZihjaGVja2VkKSBhcHBseU1hcmtzKCk7CiAgfQoKICBmdW5jdGlvbiBidWlsZEJsb2NrKGJsb2NrLCBwYXJ0KXsKICAgIHZhciB3cmFwQiA9IGVsKCdkaXYnLCdjbHByLWJsb2NrJyk7CiAgICB3cmFwQi5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1pbnN0cicsIGJsb2NrLmluc3RyKSk7CiAgICBpZihibG9jay50eXBlPT09J3N0ZW1saXN0Jyl7CiAgICAgIGJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpewogICAgICAgIHZhciByb3cgPSBlbCgnZGl2JywnY2xwci1zdGVtJyk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywnY2xwci1zbnVtJywgaXQubisnLicpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsIGl0LnByZSsnICcpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKGl0Lm9wdGlvbnMsIGl0Ll9xKSk7CiAgICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgfSk7CiAgICB9IGVsc2UgaWYoYmxvY2sudHlwZT09PSdjbG96ZScpewogICAgICB2YXIgYm94ID0gZWwoJ2RpdicsJ2NscHItY2xvemUnKTsKICAgICAgYmxvY2suYm9keS5mb3JFYWNoKGZ1bmN0aW9uKHRvayl7CiAgICAgICAgaWYodHlwZW9mIHRvaz09PSdzdHJpbmcnKXsKICAgICAgICAgIHZhciBzZWdzID0gdG9rLnNwbGl0KCdcblxuJyk7CiAgICAgICAgICBzZWdzLmZvckVhY2goZnVuY3Rpb24oc2VnLCBpZHgpewogICAgICAgICAgICBpZihpZHg+MCl7IGJveC5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwnPGJyPjxicj4nKSk7IH0KICAgICAgICAgICAgYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlZykpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24odG9rLm9wdGlvbnMsIHRvay5fcSkpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHdyYXBCLmFwcGVuZENoaWxkKGJveCk7CiAgICB9IGVsc2UgaWYoYmxvY2sudHlwZT09PSdtYXRjaCcpewogICAgICBibG9jay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKICAgICAgICB2YXIgcm93ID0gZWwoJ2RpdicsJ2NscHItbWF0Y2gtcm93Jyk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bihibG9jay5sZXR0ZXJzLCBpdC5fcSkpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItc251bScsIGl0Lm4rJy4nKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCBpdC50ZXh0KSk7CiAgICAgICAgd3JhcEIuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gd3JhcEI7CiAgfQoKICBmdW5jdGlvbiBidWlsZERvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUw9Jyc7CiAgICBSREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCdjbHByLWRvdCcrKGk9PT1jdXJQYXJ0PycgY2xwci1jdXInOicnKSk7CiAgICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ2InLG51bGwsKGkrMSkpKTsKICAgICAgZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCxbJ0NvcnJlc3BvbmRlbmNlJywnQXBwbHkgYSBEaWFncmFtJywnSW5mb3JtYXRpb24nLCdWaWV3cG9pbnRzJ11baV0pKTsKICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGdvKGkpOyB9KTsKICAgICAgZG90c0VsLmFwcGVuZENoaWxkKGQpOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGdvKHBpKXsgY3VyUGFydD1waTsgYnVpbGREb3RzKCk7IGJ1aWxkUGFydChwaSk7IGNhdEVsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7IH0KCiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICB2YXIgYW5zID0gUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsIT1udWxsO30pLmxlbmd0aDsKICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9IGNoZWNrZWQgPyAoUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsPT09cS5rZXk7fSkubGVuZ3RoKycgLyAnK1EubGVuZ3RoKycgY29ycmVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGFucysnIC8gJytRLmxlbmd0aCsnIGFuc3dlcmVkJyk7CiAgfQoKICBmdW5jdGlvbiBhcHBseU1hcmtzKCl7CiAgICBRLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICAgIGlmKCFxLmRkRWwpIHJldHVybjsKICAgICAgcS5kZEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItcmlnaHQnLCdjbHByLXdyb25nJyk7CiAgICAgIGlmKHEuc2VsPT09cS5rZXkpeyBxLmRkRWwuY2xhc3NMaXN0LmFkZCgnY2xwci1yaWdodCcpOyB9CiAgICAgIGVsc2UgewogICAgICAgIHEuZGRFbC5jbGFzc0xpc3QuYWRkKCdjbHByLXdyb25nJyk7CiAgICAgICAgaWYocS5zb2x2ZWRFbCkgcS5zb2x2ZWRFbC50ZXh0Q29udGVudCA9ICdcdTI3MTMgJytxLm9wdGlvbnNbcS5rZXktMV07CiAgICAgICAgaWYocS5zZWw9PW51bGwgJiYgcS50eHRFbCl7IHEudHh0RWwudGV4dENvbnRlbnQ9JyhubyBhbnN3ZXIpJzsgcS50eHRFbC5jbGFzc05hbWU9J2NscHItZGQtdHh0JzsgfQogICAgICB9CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGRvQ2hlY2soKXsKICAgIGNoZWNrZWQgPSB0cnVlOwogICAgYXBwbHlNYXJrcygpOwogICAgdmFyIGNvcnJlY3QgPSBRLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4gcS5zZWw9PT1xLmtleTt9KS5sZW5ndGg7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIGNoZWNrQnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIHZhciBieVBhcnQgPSB7fTsKICAgIFEuZm9yRWFjaChmdW5jdGlvbihxKXsgYnlQYXJ0W3EucGFydF09YnlQYXJ0W3EucGFydF18fHtjOjAsdDowfTsgYnlQYXJ0W3EucGFydF0udCsrOyBpZihxLnNlbD09PXEua2V5KWJ5UGFydFtxLnBhcnRdLmMrKzsgfSk7CiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGVSKGNvcnJlY3QpOwogICAgdmFyIHBpbGxzID0gUkRBVEEucGFydHMubWFwKGZ1bmN0aW9uKHApeyB2YXIgYj1ieVBhcnRbcC5pZF18fHtjOjAsdDowfTsgcmV0dXJuICc8c3BhbiBjbGFzcz0iY2xwci1yZXMtcGlsbCI+UGFydCAnK3AuaWQrJzogJytiLmMrJy8nK2IudCsnPC9zcGFuPic7IH0pLmpvaW4oJycpOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1jYXJkIj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLXRvcCI+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1zY29yZSI+Jytjb3JyZWN0Kyc8c3Bhbj4vJytRLmxlbmd0aCsnPC9zcGFuPjwvZGl2PicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtY2xiIj48Yj4nK2VzdC5sZXZlbCsnPC9iPjxzbWFsbD4nK2VzdC5ub3RlKycgJm1pZGRvdDsgZXN0aW1hdGVkIFJlYWRpbmcgYmFuZDwvc21hbGw+PC9kaXY+JwogICAgICArICc8L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWJyZWFrIj4nK3BpbGxzKyc8L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWFjdGlvbnMiPjxidXR0b24gY2xhc3M9ImNscHItbmF2YnRuIGNscHItZ2hvc3QiIGlkPSJjbHByUmV2aWV3Ij5SZXZpZXcgYW5zd2VycyBpbiBlYWNoIHBhcnQ8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJjbHByLW5hdmJ0biIgaWQ9ImNscHJSZXRyeSI+VHJ5IGFnYWluPC9idXR0b24+PC9kaXY+JwogICAgICArICc8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpIj5Fc3RpbWF0ZWQgYmFuZCBpcyBhIHN0dWR5IGd1aWRlIG9ubHksIG5vdCBhbiBvZmZpY2lhbCBDRUxQSVAgc2NvcmUuIENvcnJlY3QgYW5zd2VycyBhcmUgc2hvd24gd2l0aCBhIGdyZWVuIGNoZWNrIG9uIGVhY2ggZHJvcC1kb3duIHlvdSBhbnN3ZXJlZCBpbmNvcnJlY3RseS48L3A+JwogICAgICArICc8L2Rpdj4nOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IGZhbHNlOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXRyeScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXRBbGwpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXZpZXcnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGdvKDApOyB9KTsKICAgIHJlc3VsdHNFbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogIH0KCiAgZnVuY3Rpb24gcmVzZXRBbGwoKXsKICAgIGNoZWNrZWQ9ZmFsc2U7IGluaXRRdWVzdGlvbnMoKTsgY3VyUGFydD0wOwogICAgY2hlY2tCdG4uZGlzYWJsZWQ9ZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuPXRydWU7IHJlc3VsdHNFbC5pbm5lckhUTUw9Jyc7CiAgICBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KDApOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBzaW0uc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICB9CgogIHN0YXJ0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHdyYXAucXVlcnlTZWxlY3RvcignLmNscHItaGVybycpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgdG9vbGJhci5oaWRkZW49ZmFsc2U7IHNpbS5oaWRkZW49ZmFsc2U7CiAgICBpbml0UXVlc3Rpb25zKCk7IGN1clBhcnQ9MDsgY2hlY2tlZD1mYWxzZTsKICAgIGJ1aWxkRG90cygpOyBidWlsZFBhcnQoMCk7IHVwZGF0ZVNjb3JlQ2hpcCgpOwogIH0pOwogIGNoZWNrQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZG9DaGVjayk7CiAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEFsbCk7Cn0pKCk7\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 8 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-6407","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6407","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=6407"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6407\/revisions"}],"predecessor-version":[{"id":6555,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6407\/revisions\/6555"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}