# pnh_mf v1.2 # Tags for embedding Microformats in page templates and content. # Chris Casciano # http://placenamehere.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMS4yIjtzOjY6ImF1dGhvciI7czoxNDoiQ2hyaXMg Q2FzY2lhbm8iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjU6Imh0dHA6Ly9wbGFjZW5hbWVoZXJl LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjYyOiJUYWdzIGZvciBlbWJlZGRpbmcgTWlj cm9mb3JtYXRzIGluIHBhZ2UgdGVtcGxhdGVzIGFuZCBjb250ZW50LiI7czo0OiJ0eXBlIjtp OjE7czo0OiJuYW1lIjtzOjY6InBuaF9tZiI7czo0OiJoZWxwIjtzOjM1ODM6Igk8cD4KVXNh Z2UgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHBuaF9tZiB0ZXh0cGF0dGVybiBtaWNyb2Zvcm1h dCBwbHVnaW48L3A+CgoJPGgxPltwbmhfbWZdIE1pY3JvZm9ybWF0IFBsdWdpbiBIZWxwPC9o MT4KCgk8cD5UaGlzIHBsdWdpbiBwcm92aWRlcyB0YWdzIGZvciBlbWJlZGRpbmcgTWljcm9m b3JtYXRzIGluIHBhZ2UgdGVtcGxhdGVzLCBmb3JtcyBhbmQgY29udGVudC4gVGFncyBhdmFp bGFibGUgaW4gdGhpcyB2ZXJzaW9uOjwvcD4KCgk8dWw+CgkJPGxpPnR4cDpwbmhfbWZfeGZu PC9saT4KCQk8bGk+dHhwOnBuaF9tZl9oY2FyZDwvbGk+CgkJPGxpPnR4cDpwbmhfbWZfYWRy PC9saT4KCQk8bGk+dHhwOnBuaF9tZl9oY2FsZW5kYXI8L2xpPgoJCTxsaT50eHA6cG5oX21m X2hyZXZpZXc8L2xpPgoJCTxsaT50eHA6cG5oX21mX3RhZzwvbGk+CgkJPGxpPnR4cDpwbmhf bWZfbGljZW5zZTwvbGk+CgkJPGxpPnR4cDpwbmhfbWZfZ2VvPC9saT4KCTwvdWw+CgoJPHA+ QWxsIG9mIHRoZXNlIHRhZ3MgY2FuIGJlIHVzZWQgaW4gZWl0aGVyIHRlbXBsYXRlcyAoJiM4 MjE2O3BhZ2VzJiM4MjE3OyksIHNuaXBwZXRzICgmIzgyMTY7Zm9ybXMmIzgyMTc7KSBvciBp biBhcnRpY2xlIGJvZGllcywgYnV0IGNhbm5vdCBiZSB1c2VkIGluIGNvbW1lbnRzLjwvcD4K Cgk8aDI+dHhwOnBuaF9tZl94Zm48L2gyPgoKCTxwPlVzYWdlOiA8Y29kZT4mIzYwO3R4cDpw bmhfbWZfeGZuJiM2MjsmIzYwOy90eHA6cG5oX21mX3hmbiYjNjI7PC9jb2RlPjwvcD4KCgk8 aDM+QXR0cmlidXRlcyAmIENvbnRlbnQ8L2gzPgoKCTx1bD4KCQk8bGk+cmVsPC9saT4KCQk8 bGk+aHJlZjwvbGk+CgkJPGxpPmlkPC9saT4KCQk8bGk+Y2xhc3M8L2xpPgoJCTxsaT50aXRs ZTwvbGk+CgkJPGxpPm5hbWUgKGNvbnRlbnQpPC9saT4KCTwvdWw+CgoJPGgyPnR4cDpwbmhf bWZfaGNhcmQ8L2gyPgoKCTxwPlVzYWdlOiA8Y29kZT4mIzYwO3R4cDpwbmhfbWZfaGNhcmQg LyYjNjI7PC9jb2RlPjxiciAvPgpVc2FnZTogPGNvZGU+JiM2MDt0eHA6cG5oX21mX2hjYXJk JiM2MjsmIzYwO3R4cDpwbmhfbWZfYWRyIC8mIzYyOyYjNjA7L3R4cDpwbmhfbWZfaGNhcmQm IzYyOzwvY29kZT48L3A+CgoJPGgzPkF0dHJpYnV0ZXMgJiBDb250ZW50PC9oMz4KCgk8dWw+ CgkJPGxpPm5hbWU8L2xpPgoJCTxsaT5ocmVmPC9saT4KCQk8bGk+b3JnPC9saT4KCQk8bGk+ b3JnaHJlZjwvbGk+CgkJPGxpPnBob3RvPC9saT4KCQk8bGk+ZW1haWw8L2xpPgoJCTxsaT53 b3JrdGVsPC9saT4KCQk8bGk+aG9tZXRlbDwvbGk+CgkJPGxpPmNlbGx0ZWw8L2xpPgoJCTxs aT53b3JrZmF4PC9saT4KCQk8bGk+YWRkcmVzcyhlcykgKGNvbnRlbnQsIHVzaW5nIHBuaF9t Zl9hZHIpPC9saT4KCTwvdWw+CgoJPGgyPnR4cDpwbmhfbWZfYWRyPC9oMj4KCgk8cD5Vc2Fn ZTogPGNvZGU+JiM2MDt0eHA6cG5oX21mX2FkciAvJiM2Mjs8L2NvZGU+PC9wPgoKCTxoMz5B dHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPnR5cGU8L2xpPgoJCTxsaT5wb3N0b2ZmaWNl Ym94PC9saT4KCQk8bGk+c3RyZWV0YWRkcmVzczwvbGk+CgkJPGxpPmV4dGVuZGVkYWRkcmVz czwvbGk+CgkJPGxpPmxvY2FsaXR5PC9saT4KCQk8bGk+cmVnaW9uPC9saT4KCQk8bGk+cG9z dGFsY29kZTwvbGk+CgkJPGxpPmNvdW50cnk8L2xpPgoJPC91bD4KCgk8aDI+dHhwOnBuaF9t Zl9oY2FsZW5kYXI8L2gyPgoKCTxwPlVzYWdlOiA8Y29kZT4mIzYwO3R4cDpwbmhfbWZfaGNh bGVuZGFyJiM2MjsmIzYwOy90eHA6cG5oX21mX2hjYWxlbmRhciYjNjI7PC9jb2RlPjwvcD4K Cgk8aDM+QXR0cmlidXRlcyAmIENvbnRlbnQ8L2gzPgoKCTx1bD4KCQk8bGk+c3VtbWFyeTwv bGk+CgkJPGxpPmxvY2F0aW9uPC9saT4KCQk8bGk+aHJlZjwvbGk+CgkJPGxpPmR0c3RhcnQg KG1hY2hpbmUgZm9ybWF0dGVkIHN0YXJ0KTwvbGk+CgkJPGxpPnN0YXJ0IChodW1hbiByZWFk YWJsZSBzdGFydCk8L2xpPgoJCTxsaT5kdGVuZCAobWFjaGluZSBmb3JtYXR0ZWQgZW5kKTwv bGk+CgkJPGxpPmVuZCAoaHVtYW4gcmVhZGFibGUgZW5kKTwvbGk+CgkJPGxpPmRlc2NyaXB0 aW9uIChjb250ZW50KTwvbGk+Cgk8L3VsPgoKCTxwPk5PVEU6IFJlYWQgZm9yIGh0dHA6Ly9t aWNyb2Zvcm1hdHMub3JnL3dpa2kvaGNhbGVuZGFyIHByb3BlciBkYXRlIHVzYWdlLiBWYWx1 ZSB1c2VkIGluIHRhZyBpcyBpbiBleHBlY3RlZCBtYWNoaW5lIHJlYWRhYmxlIGZvcm1hdC48 L3A+CgoJPGgyPnR4cDpwbmhfbWZfaHJldmlldzwvaDI+CgoJPHA+VXNhZ2U6IDxjb2RlPiYj NjA7dHhwOnBuaF9tZl9ocmV2aWV3JiM2MjsmIzYwOy90eHA6cG5oX21mX2hyZXZpZXcmIzYy OzwvY29kZT48L3A+CgoJPGgzPkF0dHJpYnV0ZXMgJiBDb250ZW50PC9oMz4KCgk8dWw+CgkJ PGxpPnN1bW1hcnk8L2xpPgoJCTxsaT50eXBlIChzZWxlY3Rpb24pPC9saT4KCQk8bGk+cmF0 aW5nICgxLTUpPC9saT4KCQk8bGk+aXRlbSArIGRlc2NyaXB0aW9uIChjb250ZW50KTwvbGk+ Cgk8L3VsPgoKCTxwPk5PVEU6IFRoZSBtZXRob2Qgb2YgZGVmaW5pbmcgdGhlIGl0ZW0gdG8g YmUgcmV2aWV3ZWQgaXMgZGVwZW5kZW50IG9uIHRoZSBpdGVtIHR5cGUgc2VsZWN0ZWQgKGV2 ZW50LCBidXNpbmVzcywgcHJvZHVjdCwgZXRjLikuIFRoZSB0YWcgaGVscGVyIG91dHB1dCBz cGVjaWZpZXMgd2hhdCBvdGhlciBpbmZvcm1hdGlvbiBpcyBuZWVkZWQuIFJlYWQgaHR0cDov L21pY3JvZm9ybWF0cy5vcmcvd2lraS9ocmV2aWV3IGZvciBwcm9wZXIgdXNhZ2UuPC9wPgoK CTxoMj50eHA6cG5oX21mX3RhZzwvaDI+CgoJPHA+VXNhZ2U6IDxjb2RlPiYjNjA7dHhwOnBu aF9tZl90YWcmIzYyOyYjNjA7L3R4cDpwbmhfbWZfdGFnJiM2Mjs8L2NvZGU+PC9wPgoKCTxo Mz5BdHRyaWJ1dGVzICYgQ29udGVudDwvaDM+CgoJPHVsPgoJCTxsaT5ocmVmIChpZiBub3Qg cHJvdmlkZWQgdXNlcyB0ZWNobm9yYXRpKTwvbGk+CgkJPGxpPmlkPC9saT4KCQk8bGk+Y2xh c3M8L2xpPgoJCTxsaT50aXRsZTwvbGk+CgkJPGxpPnRhZyAoY29udGVudCk8L2xpPgoJPC91 bD4KCgk8aDI+dHhwOnBuaF9tZl9saWNlbnNlPC9oMj4KCgk8cD5Vc2FnZTogPGNvZGU+JiM2 MDt0eHA6cG5oX21mX2xpY2Vuc2UmIzYyOyYjNjA7L3R4cDpwbmhfbWZfbGljZW5zZSYjNjI7 PC9jb2RlPjwvcD4KCgk8aDM+QXR0cmlidXRlcyAmIENvbnRlbnQ8L2gzPgoKCTx1bD4KCQk8 bGk+aHJlZjwvbGk+CgkJPGxpPmlkPC9saT4KCQk8bGk+Y2xhc3M8L2xpPgoJCTxsaT50aXRs ZTwvbGk+CgkJPGxpPmxpbmsgdGV4dCAoY29udGVudCk8L2xpPgoJPC91bD4KCgk8aDI+dHhw OnBuaF9tZl9nZW88L2gyPgoKCTxwPlVzYWdlOiA8Y29kZT4mIzYwO3R4cDpwbmhfbWZfZ2Vv IC8mIzYyOzwvY29kZT48L3A+CgoJPGgzPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+ bGF0PC9saT4KCQk8bGk+bG9uZzwvbGk+Cgk8L3VsPgoKCTxwPkZvciBtb3JlIGRldGFpbGVk IGV4YW1wbGVzIGFuZCB1cGRhdGVzIHBsZWFzZSBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9w bGFjZW5hbWVoZXJlLmNvbS9UWFAvcG5oX21mLyI+cGx1Z2luJiM4MjE3O3MgaG9tZSBwYWdl PC9hPi48L3A+CgoiO3M6NDoiY29kZSI7czoyMTA3NToiCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUHVibGljIHNpZGUgdGFn cwoKCS8vIEEgdGFnIGZvciB0aGUgWEZOIG1pY3JvZm9ybWF0CgkvLyA8dHhwOnBuaF9tZl94 Zm4gcmVsPSJjb250YWN0IiBocmVmPSJodHRwOi8vcGxhY2VuYW1laGVyZS5jb20vIj5DaHJp czwvdHhwOnBuaF9tZl94Zm4+CgkvLyBhbHNvIGFjY2VwdHMgc3RhbmRhcmQgPGE+IGF0dHJp YnV0ZXM6IGlkLCBjbGFzcywgdGl0bGUKCglmdW5jdGlvbiBwbmhfbWZfeGZuKCRhdHRzLCR0 ZXh0PScnKSB7CgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ3JlbCcgID0+ICcnLAoJCQkn aHJlZicgID0+ICcnLAoJCSksJGF0dHMpKTsKCgkJLy8gVGhlIHJldHVybmVkIHZhbHVlIHdp bGwgcmVwbGFjZSB0aGUgdGFnIG9uIHRoZSBwYWdlCgkJJG1hcmt1cCA9ICc8YSBocmVmPSIn LiRocmVmLiciJzsKCQkkbWFya3VwIC49ICcgcmVsPSInLiRyZWwuJyInOwoKCQlpZiAoaXNz ZXQoJGNsYXNzKSkgeyAkbWFya3VwIC49ICcgY2xhc3M9IicuJGNsYXNzLiciJzsgfQoJCWlm IChpc3NldCgkaWQpKSB7ICRtYXJrdXAgLj0gJyBpZD0iJy4kaWQuJyInOyB9CgoJCWlmIChp c3NldCgkdGl0bGUpKSB7ICRtYXJrdXAgLj0gJyB0aXRsZT0iJy4kdGl0bGUuJyInOyB9CgkJ JG1hcmt1cCAuPSAnPicuJHRleHQuJzwvYT4nOwoJCXJldHVybiAkbWFya3VwOwoJfQoKCS8v IEEgdGFnIGZvciB0aGUgcmVsVGFnIG1pY3JvZm9ybWF0CgkvLyBkZWZhdWx0IGJlaGF2aW9y IGlzIHRvIGxpbmsgdG8gdGVjaG5vcmF0aQoJLy8gPHR4cDpwbmhfbWZfdGFnPnRlY2g8L3R4 cDpwbmhfbWZfdGFnPgoJLy8gPHR4cDpwbmhfbWZfdGFnIGhyZWY9Imh0dHA6Ly9kZWwuaWNp by51cy90YWcvdGVjaCI+dGVjaDwvdHhwOnBuaF9tZl90YWc+CgkvLyBhbHNvIGFjY2VwdHMg c3RhbmRhcmQgPGE+IGF0dHJpYnV0ZXM6IGlkLCBjbGFzcywgdGl0bGUKCgoJZnVuY3Rpb24g cG5oX21mX3RhZygkYXR0cywkdGV4dD0nJykgewoJCWV4dHJhY3QoJGF0dHMpOwoKCQkvLyBp ZiB0aGVyZSB3YXMgbm8gZXhwbGljaXQgdXJsIGdpdmVuLCB1c2UgdGVjaG5vcmF0aQoJCWlm ICghaXNzZXQoJGhyZWYpKSB7CgkJCSRocmVmID0gJ2h0dHA6Ly90ZWNobm9yYXRpLmNvbS90 YWcvJy4kdGV4dDsKCQl9CgoJCS8vIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlcGxhY2Ug dGhlIHRhZyBvbiB0aGUgcGFnZQoJCSRtYXJrdXAgPSAnPGEgaHJlZj0iJy4kaHJlZi4nIic7 CgkJJG1hcmt1cCAuPSAnIHJlbD0idGFnIic7CgkJaWYgKGlzc2V0KCRpZCkpIHsgJG1hcmt1 cCAuPSAnIGlkPSInLiRpZC4nIic7IH0KCQlpZiAoaXNzZXQoJGNsYXNzKSkgeyAkbWFya3Vw IC49ICcgY2xhc3M9IicuJGNsYXNzLiciJzsgfQoJCWlmIChpc3NldCgkdGl0bGUpKSB7ICRt YXJrdXAgLj0gJyB0aXRsZT0iJy4kdGl0bGUuJyInOyB9CgkJJG1hcmt1cCAuPSAnPicuJHRl eHQuJzwvYT4nOwoJCXJldHVybiAkbWFya3VwOwoJfQoKCS8vIEEgdGFnIGZvciB0aGUgZ2Vv IG1pY3JvZm9ybWF0CgkvLyA8dHhwOnBuaF9tZl9nZW8gbGF0PSIiIGxvbmc9IiIgLz4KCgoJ ZnVuY3Rpb24gcG5oX21mX2dlbygkYXR0cykgewoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJ CSdsYXQnICA9PiAnMCcsCgkJCSdsb25nJyAgPT4gJzAnLAoJCSksJGF0dHMpKTsKCgkJJG1h cmt1cCA9ICc8c3BhbiBjbGFzcz0iZ2VvIj4nOwoJCSRtYXJrdXAgLj0gJzxzcGFuIGNsYXNz PSJsYXRpdHVkZSI+Jy4kbGF0Lic8L3NwYW4+ICc7CgkJJG1hcmt1cCAuPSAnPHNwYW4gY2xh c3M9ImxvbmdpdHVkZSI+Jy4kbG9uZy4nPC9zcGFuPic7CgkJJG1hcmt1cCAuPSAnPC9zcGFu Pic7CgoJCXJldHVybiAkbWFya3VwOwoJfQoKCS8vIEEgdGFnIGZvciB0aGUgaENhbGVuZGFy IG1pY3JvZm9ybWF0CgkvLyBtYXJrdXAgdGVtcGxhdGUgb3JpZ2luYWxseSB0YWtlbiBmcm9t OiBodHRwOi8vbWljcm9mb3JtYXRzLm9yZy9jb2RlL2hjYWxlbmRhci9jcmVhdG9yCgkvLyA8 dHhwOnBuaF9tZl9oY2FsZW5kYXIgc3VtbWFyeT0iIiBsb2NhdGlvbj0iIiBocmVmPSIiIHN0 YXJ0PSIiIGVuZD0iIj5EZXNjcmlwdGlvbjwvdHhwOnBuaF9tZl9oY2FsZW5kYXI+CgoJZnVu Y3Rpb24gcG5oX21mX2hjYWxlbmRhcigkYXR0cywkdGV4dD0nJykgewoJCWV4dHJhY3QoJGF0 dHMpOwoKCQkvLyBmb3JtYXQgaHVtYW4gcmVhZGFibGUgZGF0ZXMKCQkvLyRzdGFydF90aW1l ID0gc3RydG90aW1lKCRkdHN0YXJ0KTsKCQkvLyRlbmRfZW5kID0gc3RydG90aW1lKCRkdHN0 YXJ0KTsKCgkJLy8gVGhlIHJldHVybmVkIHZhbHVlIHdpbGwgcmVwbGFjZSB0aGUgdGFnIG9u IHRoZSBwYWdlCgoJCSRtYXJrdXAgPSAnPGRpdiBjbGFzcz0idmV2ZW50Ij4nOwoJCWlmIChp c3NldCgkaHJlZikpIHsgJG1hcmt1cCAuPSAnPGEgY2xhc3M9InVybCIgaHJlZj0iJy4kaHJl Zi4nIj4nOyB9CgoJCWlmIChpc3NldCgkZHRzdGFydCkpIHsKCQkJJG1hcmt1cCAuPSAnPGFi YnIgY2xhc3M9ImR0c3RhcnQiIHRpdGxlPSInLiRkdHN0YXJ0LiciPic7CgkJCWlmIChpc3Nl dCgkc3RhcnQpKSB7CgkJCQkkbWFya3VwIC49ICRzdGFydDsKCQkJfSBlbHNlIHsKCQkJCWxp c3QoJGQsJHQpID0gZXhwbG9kZSgiVCIsJGR0c3RhcnQpOwoJCQkJJG1hcmt1cCAuPSBkYXRl KCdNLiBqLCBZJyxzdHJ0b3RpbWUoJGQpKS4nICcuJHQ7CgkJCX0KCQkJJG1hcmt1cCAuPSAn PC9hYmJyPic7CgkJfQoJCWlmIChpc3NldCgkZHRlbmQpKSB7CgkJCSRtYXJrdXAgLj0gJyAt IDxhYmJyIGNsYXNzPSJkdGVuZCIgdGl0bGU9IicuJGR0ZW5kLiciPic7CgkJCWlmIChpc3Nl dCgkZW5kKSkgewoJCQkJJG1hcmt1cCAuPSAkZW5kOwoJCQl9IGVsc2UgewoJCQkJbGlzdCgk ZCwkdCkgPSBleHBsb2RlKCJUIiwkZHRlbmQpOwoJCQkJaWYgKGlzc2V0KCR0KSkgewoJCQkJ CSRtYXJrdXAgLj0gZGF0ZSgnTS4gaiwgWScsc3RydG90aW1lKCRkKSkuJyAnLiR0OwoJCQkJ fSBlbHNlIHsKCQkJCQkkbWFya3VwIC49IGRhdGUoJ00uIGosIFknLChzdHJ0b3RpbWUoJGQp LTg2NDAwKSk7CgkJCQl9CgkJCX0KCQkJJG1hcmt1cCAuPSAnPC9hYmJyPic7IH0KCQlpZiAo aXNzZXQoJHN1bW1hcnkpKSB7ICRtYXJrdXAgLj0gJyAtIDxzcGFuIGNsYXNzPSJzdW1tYXJ5 Ij4nLiRzdW1tYXJ5Lic8L3NwYW4+JzsgfQoJCWlmIChpc3NldCgkbG9jYXRpb24pKSB7ICRt YXJrdXAgLj0gJyAtIDxzcGFuIGNsYXNzPSJsb2NhdGlvbiI+Jy4kbG9jYXRpb24uJzwvc3Bh bj4nOyB9CgkJaWYgKGlzc2V0KCRocmVmKSkgeyAkbWFya3VwIC49ICc8L2E+JzsgfQoKCQkk bWFya3VwIC49ICc8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Jy4kdGV4dC4nPC9kaXY+JzsK CgkJJG1hcmt1cCAuPSAnPC9kaXY+JzsKCQlyZXR1cm4gJG1hcmt1cDsKCX0KCgkvLyBBIHRh ZyBmb3IgdGhlIGhSZXZpZXcgbWljcm9mb3JtYXQKCS8vIDx0eHA6cG5oX21mX2hyZXZpZXcg c3VtbWFyeT0iIiB0eXBlPSIiIHJhdGluZz0iIj5JdGVtPC90eHA6cG5oX21mX2hyZXZpZXc+ RGVzY3JpcHRpb248dHhwOnBuaF9tZl9ocmV2aWV3X2VuZCAvPgoKCWZ1bmN0aW9uIHBuaF9t Zl9ocmV2aWV3KCRhdHRzLCR0ZXh0PScnKSB7CgkJZXh0cmFjdCgkYXR0cyk7CgoJCS8vIFRo ZSByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoKCQkk bWFya3VwID0gJzxkaXYgY2xhc3M9ImhyZXZpZXciPic7CgkJLy8gc3VtbWFyeQoJCSRtYXJr dXAgLj0gJzxwIGNsYXNzPSJzdW1tYXJ5Ij4nLiRzdW1tYXJ5Lic8L3A+JzsKCgkJLy8gcmF0 aW5nCgkJaWYgKGlzc2V0KCRyYXRpbmcpKSB7CgkJCSRtYXJrdXAgLj0gJzxkaXY+UmF0aW5n OiA8YWJiciBjbGFzcz0icmF0aW5nIiB0aXRsZT0iJy4kcmF0aW5nLiciPic7CgkJCWZvciAo JHg9MTskeDw9JHJhdGluZzskeCsrKXsKCQkJCSRtYXJrdXAgLj0gJyonOwoJCQl9CgkJCSRt YXJrdXAgLj0gJzwvYWJicj48L2Rpdj4nOwoKCQl9CgoJCS8vIHR5cGUKCQkkbWFya3VwIC49 ICc8IS0tPHNwYW4gY2xhc3M9InR5cGUiPicuJHR5cGUuJzwvc3Bhbj4tLT4nOwoJCSRtYXJr dXAgLj0gJzxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uIGl0ZW0iPicuJHRleHQuJzwvZGl2Pic7 CgoJCSRtYXJrdXAgLj0gJzwvZGl2Pic7CgkJcmV0dXJuICRtYXJrdXA7Cgl9CgoKCS8vIEEg dGFnIGZvciB0aGUgcmVsTGljZW5zZSBtaWNyb2Zvcm1hdAoJLy8gPHR4cDpwbmhfbWZfbGlj ZW5zZSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8yLjAv Ij5jYyBieSAyLjA8L3R4cDpwbmhfbWZfbGljZW5zZT4KCS8vIGFsc28gYWNjZXB0cyBzdGFu ZGFyZCA8YT4gYXR0cmlidXRlczogaWQsIGNsYXNzLCB0aXRsZQoKCWZ1bmN0aW9uIHBuaF9t Zl9saWNlbnNlKCRhdHRzLCR0ZXh0PScnKSB7CgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJ J2hyZWYnICA9PiAnJywKCQkpLCRhdHRzKSk7CgoJCS8vIFRoZSByZXR1cm5lZCB2YWx1ZSB3 aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0aGUgcGFnZQoJCSRtYXJrdXAgPSAnPGEgaHJlZj0i Jy4kaHJlZi4nIic7CgkJJG1hcmt1cCAuPSAnIHJlbD0ibGljZW5zZSInOwoJCWlmIChpc3Nl dCgkaWQpKSB7ICRtYXJrdXAgLj0gJyBpZD0iJy4kaWQuJyInOyB9CgkJaWYgKGlzc2V0KCRj bGFzcykpIHsgJG1hcmt1cCAuPSAnIGNsYXNzPSInLiRjbGFzcy4nIic7IH0KCQlpZiAoaXNz ZXQoJHRpdGxlKSkgeyAkbWFya3VwIC49ICcgdGl0bGU9IicuJHRpdGxlLiciJzsgfQoJCSRt YXJrdXAgLj0gJz4nLiR0ZXh0Lic8L2E+JzsKCQlyZXR1cm4gJG1hcmt1cDsKCX0KCgkvLyBB IHRhZyBmb3IgdGhlIGhjYXJkIG1pY3JvZm9ybWF0CgkvLyBtYXJrdXAgdGVtcGxhdGUgb3Jp Z2luYWxseSB0YWtlbiBmcm9tOiBodHRwOi8vdGFudGVrLmNvbS9taWNyb2Zvcm1hdHMvaGNh cmQtY3JlYXRvci5odG1sCgkvLyA8dHhwOnBuaF9tZl9oY2FyZCBuYW1lPSIiIHN0cmVldGFk ZHJlc3M9IiIgZXh0ZW5kZWRhZGRyZXNzPSIiIGxvY2FsaXR5PSIiIHJlZ2lvbj0iIiBwb3N0 YWxjb2RlPSIiIGNvdW50cnluYW1lPSIiIC8+TmFtZTwvdHhwOnBuaF9tZl9oY2FyZD4KCglm dW5jdGlvbiBwbmhfbWZfaGNhcmQoJGF0dHMsJHRleHQ9JycpIHsKCQlleHRyYWN0KCRhdHRz KTsKCgoJCS8vIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIHJlcGxhY2UgdGhlIHRhZyBvbiB0 aGUgcGFnZQoJCSRtYXJrdXAgPSAnPGRpdiBjbGFzcz0idmNhcmQiPic7CgoJCWlmIChpc3Nl dCgkcGhvdG8pKSB7ICRtYXJrdXAgLj0gJzxpbWcgc3JjPSInLiRwaG90by4nIiBhbHQ9InBo b3RvIiBjbGFzcz0icGhvdG8iIC8+JzsgfQoJCWlmIChpc3NldCgkaHJlZikpIHsKCQkJJG1h cmt1cCAuPSAnPGEgY2xhc3M9InVybCBmbiIgaHJlZj0iJy4kaHJlZi4nIj4nLiRuYW1lLic8 L2E+JzsKCQl9IGVsc2UgewoJCQkkbWFya3VwIC49ICc8c3BhbiBjbGFzcz0iZm4iPicuJG5h bWUuJzwvc3Bhbj4nOwoJCX0KCgkJaWYgKGlzc2V0KCRvcmcpKSB7CgkJCWlmIChpc3NldCgk b3JnaHJlZikpIHsKCQkJCSRtYXJrdXAgLj0gJzxkaXY+PGEgaHJlZj0iJy4kb3JnaHJlZi4n IiBjbGFzcz0ib3JnIj4nLiRvcmcuJzwvYT48L2Rpdj4nOwoJCQl9IGVsc2UgewoJCQkJJG1h cmt1cCAuPSAnPGRpdiBjbGFzcz0ib3JnIj4nLiRvcmcuJzwvZGl2Pic7CgkJCX0KCQl9CgoK CgkJLy8gd29ya3RlbAoJCWlmIChpc3NldCgkd29ya3RlbCkpIHsgJG1hcmt1cCAuPSAnPGRp diBjbGFzcz0idGVsIj48c3BhbiBjbGFzcz0idHlwZSI+V29yazwvc3Bhbj46IDxzcGFuIGNs YXNzPSJ2YWx1ZSI+Jy4kd29ya3RlbC4nPC9zcGFuPjwvZGl2Pic7IH0KCQkvLyBob21ldGVs CgkJaWYgKGlzc2V0KCRob21ldGVsKSkgeyAkbWFya3VwIC49ICc8ZGl2IGNsYXNzPSJ0ZWwi PjxzcGFuIGNsYXNzPSJ0eXBlIj5Ib21lPC9zcGFuPjogPHNwYW4gY2xhc3M9InZhbHVlIj4n LiRob21ldGVsLic8L3NwYW4+PC9kaXY+JzsgfQoJCS8vIGNlbGx0ZWwKCQlpZiAoaXNzZXQo JGNlbGx0ZWwpKSB7ICRtYXJrdXAgLj0gJzxkaXYgY2xhc3M9InRlbCI+PHNwYW4gY2xhc3M9 InR5cGUiPkNlbGw8L3NwYW4+OiA8c3BhbiBjbGFzcz0idmFsdWUiPicuJGNlbGx0ZWwuJzwv c3Bhbj48L2Rpdj4nOyB9CgkJLy8gd29ya2ZheAoJCWlmIChpc3NldCgkd29ya2ZheCkpIHsg JG1hcmt1cCAuPSAnPGRpdiBjbGFzcz0idGVsIj48c3BhbiBjbGFzcz0idHlwZSI+RmF4PC9z cGFuPjogPHNwYW4gY2xhc3M9InZhbHVlIj4nLiR3b3JrZmF4Lic8L3NwYW4+PC9kaXY+Jzsg fQoJCS8vIGltIC0gbmVlZCB1cmwsIHNlcnZpY2UgJiBzY3JlZW4gbmFtZT8KCQkvLyBlbWFp bAoJCWlmIChpc3NldCgkZW1haWwpKSB7ICRtYXJrdXAgLj0gJzxkaXY+PGEgY2xhc3M9ImVt YWlsIiBocmVmPSJtYWlsdG86Jy4kZW1haWwuJyI+Jy4kZW1haWwuJzwvYT48L2Rpdj4nOyB9 CgoJCSRtYXJrdXAgLj0gJHRleHQ7IC8vIGFueSBhZGRyZXNzZXMKCgkJJG1hcmt1cCAuPSAn PC9kaXY+JzsKCQlyZXR1cm4gJG1hcmt1cDsKCX0KCgoJLy8gQSB0YWcgZm9yIHRoZSBhZHIg bWljcm9mb3JtYXQKCS8vIGNhdXRpb246IHRoaXMgbWljcm9mb3JtYXQgaXMgc3RpbGwgaW4g ZHJhZnQgbW9kZQoJLy8gPHR4cDpwbmhfbWZfYWRyIHN0cmVldGFkZHJlc3M9IiIgZXh0ZW5k ZWRhZGRyZXNzPSIiIGxvY2FsaXR5PSIiIHJlZ2lvbj0iIiBwb3N0YWxjb2RlPSIiIGNvdW50 cnk9IiIgLz4KCglmdW5jdGlvbiBwbmhfbWZfYWRyKCRhdHRzKSB7CgkJZXh0cmFjdCgkYXR0 cyk7CgoKCgkJLy8gVGhlIHJldHVybmVkIHZhbHVlIHdpbGwgcmVwbGFjZSB0aGUgdGFnIG9u IHRoZSBwYWdlCgkJJG1hcmt1cCA9ICc8ZGl2IGNsYXNzPSJhZHIiPic7CgoJCWlmIChpc3Nl dCgkdHlwZSkpIHsgJG1hcmt1cCAuPSAnPGRpdj48c3BhbiBjbGFzcz0idHlwZSI+Jy4kdHlw ZS4nPC9zcGFuPiBBZGRyZXNzPC9kaXY+JzsgfQoJCWlmIChpc3NldCgkcG9zdG9mZmljZWJv eCkpIHsgJG1hcmt1cCAuPSAnPGRpdiBjbGFzcz0icG9zdC1vZmZpY2UtYm94Ij4nLiRwb3N0 b2ZmaWNlYm94Lic8L2Rpdj4nOyB9CgkJaWYgKGlzc2V0KCRzdHJlZXRhZGRyZXNzKSkgeyAk bWFya3VwIC49ICc8ZGl2IGNsYXNzPSJzdHJlZXQtYWRkcmVzcyI+Jy4kc3RyZWV0YWRkcmVz cy4nPC9kaXY+JzsgfQoJCWlmIChpc3NldCgkZXh0ZW5kZWRhZGRyZXNzKSkgeyAkbWFya3Vw IC49ICc8ZGl2IGNsYXNzPSJleHRlbmRlZC1hZGRyZXNzIj4nLiRleHRlbmRlZGFkZHJlc3Mu JzwvZGl2Pic7IH0KCQlpZiAoaXNzZXQoJGxvY2FsaXR5KSkgeyAkbWFya3VwIC49ICc8c3Bh biBjbGFzcz0ibG9jYWxpdHkiPicuJGxvY2FsaXR5Lic8L3NwYW4+LCAnOyB9CgkJaWYgKGlz c2V0KCRyZWdpb24pKSB7ICRtYXJrdXAgLj0gJzxzcGFuIGNsYXNzPSJyZWdpb24iPicuJHJl Z2lvbi4nPC9zcGFuPic7IH0KCQlpZiAoaXNzZXQoJHBvc3RhbGNvZGUpKSB7ICRtYXJrdXAg Lj0gJyA8c3BhbiBjbGFzcz0icG9zdGFsLWNvZGUiPicuJHBvc3RhbGNvZGUuJzwvc3Bhbj4n OyB9CgkJaWYgKGlzc2V0KCRjb3VudHJ5KSkgeyAkbWFya3VwIC49ICc8ZGl2IGNsYXNzPSJj b3VudHJ5LW5hbWUiPicuJGNvdW50cnkuJzwvZGl2Pic7IH0KCgkJJG1hcmt1cCAuPSAnPC9k aXY+JzsKCQlyZXR1cm4gJG1hcmt1cDsKCX0KCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEV4YW1wbGUgYWRtaW4gc2lkZSBw bHVnaW4KCglpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7CgkJZ2xvYmFsICR0ZXh0 YXJyYXk7CgkgICAgLy9yZWdpc3Rlcl9jYWxsYmFjaygicG5oX21mX3RhZ2dlbmhlbHBlcnMi LCAidGFnIiwgJycsIDEpOwoJICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJwbmhfbWZfcGFnZWhl bHBlcnMiLCAicGFnZSIpOwoJICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJwbmhfbWZfZm9ybWhl bHBlcnMiLCAiZm9ybSIpOwoJICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCJwbmhfbWZfYXJ0aWNs ZWhlbHBlcnMiLCAiYXJ0aWNsZSIpOwoKCQkkdGV4dGFycmF5W3N0cnRvbG93ZXIoJ3RhZ19w bmhfbWZfeGZuJyldID0gJ1hGTic7CgkJJHRleHRhcnJheVtzdHJ0b2xvd2VyKCd0YWdfcG5o X21mX2hjYXJkJyldID0gJ2hDYXJkJzsKCQkkdGV4dGFycmF5W3N0cnRvbG93ZXIoJ3RhZ19w bmhfbWZfYWRyJyldID0gJ2Fkcic7CgkJJHRleHRhcnJheVtzdHJ0b2xvd2VyKCd0YWdfcG5o X21mX2hjYWxlbmRhcicpXSA9ICdoQ2FsZW5kYXInOwoJCSR0ZXh0YXJyYXlbc3RydG9sb3dl cigndGFnX3BuaF9tZl9ocmV2aWV3JyldID0gJ2hSZXZpZXcnOwoJCSR0ZXh0YXJyYXlbc3Ry dG9sb3dlcigndGFnX3BuaF9tZl90YWcnKV0gPSAncmVsLXRhZyc7CgkJJHRleHRhcnJheVtz dHJ0b2xvd2VyKCd0YWdfcG5oX21mX2xpY2Vuc2UnKV0gPSAncmVsLWxpY2Vuc2UnOwoJCSR0 ZXh0YXJyYXlbc3RydG9sb3dlcigndGFnX3BuaF9tZl9nZW8nKV0gPSAnZ2VvJzsKCgl9CgoJ ZnVuY3Rpb24gdGFnX3BuaF9tZl94Zm4oKQoJewoJCWdsb2JhbCAkc3RlcCwkZW5kZm9ybSwk dGFnX25hbWU7CgkJJGxhYmVsID0gZ3BzKCdsYWJlbCcpOwoJCSRpbnZhcnMgPSBncHNhKGFy cmF5KCdyZWwnLCdocmVmJykpOwoJCWV4dHJhY3QoJGludmFycyk7CgkJJGxhYmVsID0gKCEk bGFiZWwpID8gJ05hbWUnIDogJGxhYmVsOwoJCSRvdXQgPSBmb3JtKHN0YXJ0VGFibGUoJ2xp c3QnKS4KCQkJdHIodGRjcyhoZWQoZ1R4dCgndGFnX3BuaF9tZl94Zm4nKSwzKSwyKSApIC4K CQkJdGFnUm93KCdyZWwnLGZJbnB1dCgndGV4dCcsJ3JlbCcsJHJlbCwnZWRpdCcsJycsJycs MjUpKSAuCgkJCXRhZ1JvdygnaHJlZicsIGZJbnB1dCgndGV4dCcsJ2hyZWYnLCRocmVmLCdl ZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ25hbWUnLCBmSW5wdXQoJ3RleHQnLCdsYWJl bCcsJGxhYmVsLCdlZGl0JywnJywnJywyNSkpLgoJCQkkZW5kZm9ybQoJCSk7CgkJJG91dCAu PSAoJHN0ZXA9PSdidWlsZCcpID8gdGRiKHRiKCR0YWdfbmFtZSwgJGludmFycywgJGxhYmVs KSkgOiAnJzsKCQlyZXR1cm4gJG91dDsKCX0KCWZ1bmN0aW9uIHRhZ19wbmhfbWZfaGNhcmQo KQoJewoJCWdsb2JhbCAkc3RlcCwkZW5kZm9ybSwkdGFnX25hbWU7CgkJJG5hbWUgPSBncHMo J25hbWUnKTsgLy8gYXZvaWQgY29sbGlzaW9uIHdpdGggdHhwcyB1c2Ugb2YgbmFtZT8KCQkk YWRkcmVzcyA9IGdwcygnYWRkcmVzcycpOwoJCSRpbnZhcnMgPSBncHNhKGFycmF5KCdocmVm Jywnb3JnJywnb3JnaHJlZicsJ3Bob3RvJywnZW1haWwnLCd3b3JrdGVsJywnaG9tZXRlbCcs J2NlbGx0ZWwnLCd3b3JrZmF4JykpOwoJCWV4dHJhY3QoJGludmFycyk7CgkJJG91dCA9IGZv cm0oc3RhcnRUYWJsZSgnbGlzdCcpLgoJCQl0cih0ZGNzKGhlZChnVHh0KCd0YWdfcG5oX21m X2hjYXJkJyksMyksMikgKSAuCgkJCXRhZ1JvdygncGVyc29uXCdzIG5hbWUnLCBmSW5wdXQo J3RleHQnLCduYW1lJywkbmFtZSwnZWRpdCcsJycsJycsMjUpKS4KCQkJdGFnUm93KCdocmVm JywgZklucHV0KCd0ZXh0JywnaHJlZicsJGhyZWYsJ2VkaXQnLCcnLCcnLDI1KSkuCgkJCXRh Z1Jvdygnb3JnYW5pemF0aW9uJyxmSW5wdXQoJ3RleHQnLCdvcmcnLCRvcmcsJ2VkaXQnLCcn LCcnLDI1KSkgLgoJCQl0YWdSb3coJ29yZ1wncyBocmVmJyxmSW5wdXQoJ3RleHQnLCdvcmdo cmVmJywkb3JnaHJlZiwnZWRpdCcsJycsJycsMjUpKSAuCgkJCXRhZ1JvdygncGhvdG8gaHJl ZicsIGZJbnB1dCgndGV4dCcsJ3Bob3RvJywkcGhvdG8sJ2VkaXQnLCcnLCcnLDI1KSkuCgkJ CXRhZ1JvdygnZW1haWwnLGZJbnB1dCgndGV4dCcsJ2VtYWlsJywkZW1haWwsJ2VkaXQnLCcn LCcnLDI1KSkgLgoJCQl0YWdSb3coJ3dvcmsgcGhvbmUnLCBmSW5wdXQoJ3RleHQnLCd3b3Jr dGVsJywkd29ya3RlbCwnZWRpdCcsJycsJycsMjUpKS4KCQkJdGFnUm93KCdob21lIHBob25l JyxmSW5wdXQoJ3RleHQnLCdob21ldGVsJywkaG9tZXRlbCwnZWRpdCcsJycsJycsMjUpKSAu CgkJCXRhZ1JvdygnY2VsbCcsIGZJbnB1dCgndGV4dCcsJ2NlbGx0ZWwnLCRjZWxsdGVsLCdl ZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ3dvcmsgZmF4JywgZklucHV0KCd0ZXh0Jywn d29ya2ZheCcsJHdvcmtmYXgsJ2VkaXQnLCcnLCcnLDI1KSkuCgkJCXRhZ1JvdygnaGFzIGFk ZHJlc3M/JywgeWVzbm9fcG9wKCdhZGRyZXNzJywkYWRkcmVzcykpLgoJCQkkZW5kZm9ybQoJ CSk7CgkJaWYgKCRzdGVwPT0nYnVpbGQnKSB7CgkJCSRpbnZhcnNbJ25hbWUnXSA9ICRuYW1l OwoJCQkkb3V0IC49ICgkYWRkcmVzcz09J3knKSA/IHRkYih0YigkdGFnX25hbWUsICRpbnZh cnMsICc8IS0tcmVwbGFjZSB3aXRoIGFkci0tPicpKSA6IHRkYih0YigkdGFnX25hbWUsICRp bnZhcnMpKTsKCQl9CgkJcmV0dXJuICRvdXQ7Cgl9CglmdW5jdGlvbiB0YWdfcG5oX21mX2Fk cigpCgl7CgkJZ2xvYmFsICRzdGVwLCRlbmRmb3JtLCR0YWdfbmFtZTsKCQkkaW52YXJzID0g Z3BzYShhcnJheSgndHlwZScsJ3Bvc3RvZmZpY2Vib3gnLCdzdHJlZXRhZGRyZXNzJywnZXh0 ZW5kZWRhZGRyZXNzJywnbG9jYWxpdHknLCdyZWdpb24nLCdwb3N0YWxjb2RlJywnY291bnRy eScpKTsKCQlleHRyYWN0KCRpbnZhcnMpOwoJCSRvdXQgPSBmb3JtKHN0YXJ0VGFibGUoJ2xp c3QnKS4KCQkJdHIodGRjcyhoZWQoZ1R4dCgndGFnX3BuaF9tZl9hZHInKSwzKSwyKSApIC4K CQkJdGFnUm93KCd0eXBlJyxmSW5wdXQoJ3RleHQnLCd0eXBlJywkdHlwZSwnZWRpdCcsJycs JycsMjUpKSAuCgkJCXRhZ1JvdygncG9zdG9mZmljZWJveCcsIGZJbnB1dCgndGV4dCcsJ3Bv c3RvZmZpY2Vib3gnLCRwb3N0b2ZmaWNlYm94LCdlZGl0JywnJywnJywyNSkpLgoJCQl0YWdS b3coJ3N0cmVldGFkZHJlc3MnLCBmSW5wdXQoJ3RleHQnLCdzdHJlZXRhZGRyZXNzJywkc3Ry ZWV0YWRkcmVzcywnZWRpdCcsJycsJycsMjUpKS4KCQkJdGFnUm93KCdleHRlbmRlZGFkZHJl c3MnLGZJbnB1dCgndGV4dCcsJ2V4dGVuZGVkYWRkcmVzcycsJGV4dGVuZGVkYWRkcmVzcywn ZWRpdCcsJycsJycsMjUpKSAuCgkJCXRhZ1JvdygnbG9jYWxpdHknLCBmSW5wdXQoJ3RleHQn LCdsb2NhbGl0eScsJGxvY2FsaXR5LCdlZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ3Jl Z2lvbicsIGZJbnB1dCgndGV4dCcsJ3JlZ2lvbicsJHJlZ2lvbiwnZWRpdCcsJycsJycsMjUp KS4KCQkJdGFnUm93KCdwb3N0YWxjb2RlJyxmSW5wdXQoJ3RleHQnLCdwb3N0YWxjb2RlJywk cG9zdGFsY29kZSwnZWRpdCcsJycsJycsMjUpKSAuCgkJCXRhZ1JvdygnY291bnRyeScsIGZJ bnB1dCgndGV4dCcsJ2NvdW50cnknLCRjb3VudHJ5LCdlZGl0JywnJywnJywyNSkpLgoJCQkk ZW5kZm9ybQoJCSk7CgkJJG91dCAuPSAoJHN0ZXA9PSdidWlsZCcpID8gdGRiKHRiKCR0YWdf bmFtZSwgJGludmFycykpIDogJyc7CgkJcmV0dXJuICRvdXQ7Cgl9CglmdW5jdGlvbiB0YWdf cG5oX21mX2hjYWxlbmRhcigpCgl7CgkJZ2xvYmFsICRzdGVwLCRlbmRmb3JtLCR0YWdfbmFt ZTsKCQkkbGFiZWwgPSBncHMoJ2xhYmVsJyk7CgkJJGludmFycyA9IGdwc2EoYXJyYXkoJ3N1 bW1hcnknLCdsb2NhdGlvbicsJ2hyZWYnLCdkdHN0YXJ0Jywnc3RhcnQnLCdkdGVuZCcsJ2Vu ZCcpKTsKCQlleHRyYWN0KCRpbnZhcnMpOwoJCSRsYWJlbCA9ICghJGxhYmVsKSA/ICdEZXNj cmlwdGlvbicgOiAkbGFiZWw7CgkJJG91dCA9IGZvcm0oc3RhcnRUYWJsZSgnbGlzdCcpLgoJ CQl0cih0ZGNzKGhlZChnVHh0KCd0YWdfcG5oX21mX2hjYWxlbmRhcicpLDMpLDIpICkgLgoJ CQl0YWdSb3coJ3N1bW1hcnknLCBmSW5wdXQoJ3RleHQnLCdzdW1tYXJ5Jywkc3VtbWFyeSwn ZWRpdCcsJycsJycsMjUpKS4KCQkJdGFnUm93KCdsb2NhdGlvbicsIGZJbnB1dCgndGV4dCcs J2xvY2F0aW9uJywkbG9jYXRpb24sJ2VkaXQnLCcnLCcnLDI1KSkuCgkJCXRhZ1JvdygnaHJl ZicsIGZJbnB1dCgndGV4dCcsJ2hyZWYnLCRocmVmLCdlZGl0JywnJywnJywyNSkpLgoJCQl0 YWdSb3coJ2R0c3RhcnQnLCBmSW5wdXQoJ3RleHQnLCdkdHN0YXJ0JywkZHRzdGFydCwnZWRp dCcsJycsJycsMjUpKS4KCQkJdGFnUm93KCdzdGFydCcsIGZJbnB1dCgndGV4dCcsJ3N0YXJ0 Jywkc3RhcnQsJ2VkaXQnLCcnLCcnLDI1KSkuCgkJCXRhZ1JvdygnZHRlbmQnLCBmSW5wdXQo J3RleHQnLCdkdGVuZCcsJGR0ZW5kLCdlZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ2Vu ZCcsIGZJbnB1dCgndGV4dCcsJ2VuZCcsJGVuZCwnZWRpdCcsJycsJycsMjUpKS4KCQkJdGFn Um93KCdkZXNjcmlwdGlvbicsIGZJbnB1dCgndGV4dCcsJ2xhYmVsJywkbGFiZWwsJ2VkaXQn LCcnLCcnLDI1KSkuCgkJCSRlbmRmb3JtCgkJKTsKCQkkb3V0IC49ICgkc3RlcD09J2J1aWxk JykgPyB0ZGIodGIoJHRhZ19uYW1lLCAkaW52YXJzLCAkbGFiZWwpKSA6ICcnOwoJCXJldHVy biAkb3V0OwoJfQoJZnVuY3Rpb24gdGFnX3BuaF9tZl9ocmV2aWV3KCkKCXsKCQlnbG9iYWwg JHN0ZXAsJGVuZGZvcm0sJHRhZ19uYW1lOwoJCSRsYWJlbCA9IGdwcygnbGFiZWwnKTsKCQkk aW52YXJzID0gZ3BzYShhcnJheSgnc3VtbWFyeScsJ3R5cGUnLCdyYXRpbmcnKSk7CgkJZXh0 cmFjdCgkaW52YXJzKTsKCQlpZiAoKCR0eXBlPT0icGVyc29uIil8fCgkdHlwZT09ImJ1c2lu ZXNzIikpIHsKCQkJJGxhYmVsID0gIlxuICIuJzwhLS1SZXBsYWNlIHdpdGggaENhcmQtLS0+ Jy4iXG4iLidSZXZpZXcgQ29udGVudCcuIlxuIjsKCQl9IGVsc2VpZiAoKCR0eXBlPT0iZXZl bnQiKSkgewoJCQkkbGFiZWwgPSAiXG4gIi4nPCEtLVJlcGxhY2Ugd2l0aCBoQ2FsZW5kYXIt LT4nLiJcbiIuJ1JldmlldyBDb250ZW50Jy4iXG4iOwoJCX0gZWxzZSB7CgkJCSRsYWJlbCA9 ICJcbiAiLic8YSBjbGFzcz0iZm4gdXJsIiBocmVmPSJFRElUVEhJUyI+RURJVFRISVM8L2E+ PGJyIC8+Jy4iXG4iLidSZXZpZXcgQ29udGVudCcuIlxuIjsKCQl9CgoJCSRvdXQgPSBmb3Jt KHN0YXJ0VGFibGUoJ2xpc3QnKS4KCQkJdHIodGRjcyhoZWQoZ1R4dCgndGFnX3BuaF9tZl9o cmV2aWV3JyksMyksMikgKSAuCgkJCXRhZ1Jvdygnc3VtbWFyeScsIGZJbnB1dCgndGV4dCcs J3N1bW1hcnknLCRzdW1tYXJ5LCdlZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ3R5cGUn LCBzZWxlY3RJbnB1dCgndHlwZScsYXJyYXkoJ3Byb2R1Y3QnPT4ncHJvZHVjdCcsJ2J1c2lu ZXNzJz0+J2J1c2luZXNzJywnZXZlbnQnPT4nZXZlbnQnLCdwZXJzb24nPT4ncGVyc29uJywn cGxhY2UnPT4ncGxhY2UnLCd3ZWJzaXRlJz0+J3dlYnNpdGUnLCd1cmwnPT4ndXJsJyksJycs MSkpLgoJCQl0YWdSb3coJ3JhdGluZycsIHNlbGVjdElucHV0KCdyYXRpbmcnLGFycmF5KDE9 PjEsMj0+MiwzPT4zLDQ9PjQsNT0+NSksJycsMSkpLgovLwkJCXRhZ1JvdygnZGVzY3JpcHRp b24nLCBmSW5wdXQoJ3RleHQnLCdkZXNjcmlwdGlvbicsJGRlc2NyaXB0aW9uLCdlZGl0Jywn JywnJywyNSkpLgoJCQkkZW5kZm9ybQoJCSk7CgkJJG91dCAuPSAoJHN0ZXA9PSdidWlsZCcp ID8gdGRiKHRiKCR0YWdfbmFtZSwgJGludmFycywgJGxhYmVsKSkgOiAnJzsKCQlyZXR1cm4g JG91dDsKCX0KCWZ1bmN0aW9uIHRhZ19wbmhfbWZfdGFnKCkKCXsKCQlnbG9iYWwgJHN0ZXAs JGVuZGZvcm0sJHRhZ19uYW1lOwoJCSRsYWJlbCA9IGdwcygnbGFiZWwnKTsKCQkkaW52YXJz ID0gZ3BzYShhcnJheSgnaHJlZicpKTsKCQlleHRyYWN0KCRpbnZhcnMpOwoJCSRsYWJlbCA9 ICghJGxhYmVsKSA/ICdUYWcnIDogJGxhYmVsOwoJCSRvdXQgPSBmb3JtKHN0YXJ0VGFibGUo J2xpc3QnKS4KCQkJdHIodGRjcyhoZWQoZ1R4dCgndGFnX3BuaF9tZl90YWcnKSwzKSwyKSAp IC4KCQkJdGFnUm93KCdocmVmJywgZklucHV0KCd0ZXh0JywnaHJlZicsJGhyZWYsJ2VkaXQn LCcnLCcnLDI1KSkuCgkJCXRhZ1JvdygndGFnJywgZklucHV0KCd0ZXh0JywnbGFiZWwnLCRs YWJlbCwnZWRpdCcsJycsJycsMjUpKS4KCQkJJGVuZGZvcm0KCQkpOwoJCSRvdXQgLj0gKCRz dGVwPT0nYnVpbGQnKSA/IHRkYih0YigkdGFnX25hbWUsICRpbnZhcnMsICRsYWJlbCkpIDog Jyc7CgkJcmV0dXJuICRvdXQ7Cgl9CglmdW5jdGlvbiB0YWdfcG5oX21mX2xpY2Vuc2UoKQoJ ewoJCWdsb2JhbCAkc3RlcCwkZW5kZm9ybSwkdGFnX25hbWU7CgkJJGxhYmVsID0gZ3BzKCds YWJlbCcpOwoJCSRpbnZhcnMgPSBncHNhKGFycmF5KCdocmVmJykpOwoJCWV4dHJhY3QoJGlu dmFycyk7CgkJJGxhYmVsID0gKCEkbGFiZWwpID8gJ0xpY2Vuc2UnIDogJGxhYmVsOwoJCSRv dXQgPSBmb3JtKHN0YXJ0VGFibGUoJ2xpc3QnKS4KCQkJdHIodGRjcyhoZWQoZ1R4dCgndGFn X3BuaF9tZl9saWNlbnNlJyksMyksMikgKSAuCgkJCXRhZ1JvdygnaHJlZicsIGZJbnB1dCgn dGV4dCcsJ2hyZWYnLCRocmVmLCdlZGl0JywnJywnJywyNSkpLgoJCQl0YWdSb3coJ2xpY2Vu c2UnLCBmSW5wdXQoJ3RleHQnLCdsYWJlbCcsJGxhYmVsLCdlZGl0JywnJywnJywyNSkpLgoJ CQkkZW5kZm9ybQoJCSk7CgkJJG91dCAuPSAoJHN0ZXA9PSdidWlsZCcpID8gdGRiKHRiKCR0 YWdfbmFtZSwgJGludmFycywgJGxhYmVsKSkgOiAnJzsKCQlyZXR1cm4gJG91dDsKCX0KCWZ1 bmN0aW9uIHRhZ19wbmhfbWZfZ2VvKCkKCXsKCQlnbG9iYWwgJHN0ZXAsJGVuZGZvcm0sJHRh Z19uYW1lOwoJCSRpbnZhcnMgPSBncHNhKGFycmF5KCdsYXQnLCdsb25nJykpOwoJCWV4dHJh Y3QoJGludmFycyk7CgkJJG91dCA9IGZvcm0oc3RhcnRUYWJsZSgnbGlzdCcpLgoJCQl0cih0 ZGNzKGhlZChnVHh0KCd0YWdfcG5oX21mX2dlbycpLDMpLDIpICkgLgoJCQl0YWdSb3coJ2xh dCcsZklucHV0KCd0ZXh0JywnbGF0JywkbGF0LCdlZGl0JywnJywnJywyNSkpIC4KCQkJdGFn Um93KCdsb25nJywgZklucHV0KCd0ZXh0JywnbG9uZycsJGxvbmcsJ2VkaXQnLCcnLCcnLDI1 KSkuCgkJCSRlbmRmb3JtCgkJKTsKCQkkb3V0IC49ICgkc3RlcD09J2J1aWxkJykgPyB0ZGIo dGIoJHRhZ19uYW1lLCAkaW52YXJzKSkgOiAnJzsKCQlyZXR1cm4gJG91dDsKCX0KCgkvLyBQ YWdlIGVkaXRvciBoZWxwZXIgdGFncwoJLy8gSW5zZXJ0cyB0YWcgaGVscGVycyBpbiBsZWZ0 IGNvbHVtbiB2aWEgRE9NIG1hbmlwdWxhdGlvbgoJZnVuY3Rpb24gcG5oX21mX3BhZ2VoZWxw ZXJzKCkgewogICAgZWNobzw8PEVPRgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi Pgo8IS0tCgppZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUpIHsKCgkvLyBUaGlz IGlzIHNvbWUgYXdmdWwgbG9naWMgdG8gZmluZCB0aGUgdGFibGUgY2VsbCBJIHdhbnQKCXZh ciB0YmxjZWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2gyJylbMF0ucGFy ZW50Tm9kZTsKCgl2YXIgbmV3aGVscGVycyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1An KTsKCW5ld2hlbHBlcnMuY2xhc3NOYW1lID0gJ2NvbHVtbic7CgluZXdoZWxwZXJzLmlubmVy SFRNTCA9ICdNaWNyb2Zvcm1hdHM8YnIgLz48c21hbGw+PGEgdGFyZ2V0PSJfYmxhbmsiIGhy ZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl94Zm4iIG9uY2xpY2s9IndpbmRv dy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9 NDAwLHNjcm9sbGJhcnMscmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5YRk48L2E+PGJy IC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBu aF9tZl9oY2FyZCIgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVwd2lu ZG93XCcsIFwnd2lkdGg9NDAwLGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVcJyk7 IHJldHVybiBmYWxzZTsiPmhDYXJkPC9hPjxiciAvPjxhIHRhcmdldD0iX2JsYW5rIiBocmVm PSI/ZXZlbnQ9dGFnJiMzODt0YWdfbmFtZT1wbmhfbWZfaHJldmlldyIgb25jbGljaz0id2lu ZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVwd2luZG93XCcsIFwnd2lkdGg9NDAwLGhlaWdo dD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVcJyk7IHJldHVybiBmYWxzZTsiPmhSZXZpZXc8 L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19u YW1lPXBuaF9tZl9hZHIiIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1 cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxl XCcpOyByZXR1cm4gZmFsc2U7Ij5hZHI8L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhy ZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl9oY2FsZW5kYXIiIG9uY2xpY2s9 IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxo ZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5oQ2Fs ZW5kYXI8L2E+PGJyIC8+PGEgaHJlZj0iP2V2ZW50PXRhZyYjMzg7dGFnX25hbWU9cG5oX21m X3RhZyIgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVwd2luZG93XCcs IFwnd2lkdGg9NDAwLGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVcJyk7IHJldHVy biBmYWxzZTsiPnJlbC10YWc8L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9l dmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl9saWNlbnNlIiBvbmNsaWNrPSJ3aW5kb3cu b3Blbih0aGlzLmhyZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3aWR0aD00MDAsaGVpZ2h0PTQw MCxzY3JvbGxiYXJzLHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZhbHNlOyI+cmVsLWxpY2Vuc2U8 L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19u YW1lPXBuaF9tZl9nZW8iIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1 cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxl XCcpOyByZXR1cm4gZmFsc2U7Ij5nZW88L2E+PC9zbWFsbD4nOwoJdGJsY2VsbC5hcHBlbmRD aGlsZChuZXdoZWxwZXJzKTsKfQoKCi0tPgo8L3NjcmlwdD4KRU9GOwoJfQoKCS8vIEZvcm0g ZWRpdG9yIGhlbHBlciB0YWdzCgkvLyBJbnNlcnRzIHRhZyBoZWxwZXJzIGluIGxlZnQgY29s dW1uIHZpYSBET00gbWFuaXB1bGF0aW9uCglmdW5jdGlvbiBwbmhfbWZfZm9ybWhlbHBlcnMo KSB7CiAgICBlY2hvPDw8RU9GCgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cjwh LS0KCmlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSkgewoKCS8vIFRoaXMgaXMg c29tZSBhd2Z1bCBsb2dpYyB0byBmaW5kIHRoZSB0YWJsZSBjZWxsIEkgd2FudAoJdmFyIHRi bGNlbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDInKVswXS5wYXJlbnRO b2RlOwoKCXZhciBuZXdoZWxwZXJzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnUCcpOwoJ bmV3aGVscGVycy5pbm5lckhUTUwgPSAnTWljcm9mb3JtYXRzPGJyIC8+PGEgdGFyZ2V0PSJf YmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl94Zm4iIG9uY2xp Y2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQw MCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5Y Rk48L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3Rh Z19uYW1lPXBuaF9tZl9oY2FyZCIgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBc J3BvcHVwd2luZG93XCcsIFwnd2lkdGg9NDAwLGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNp emFibGVcJyk7IHJldHVybiBmYWxzZTsiPmhDYXJkPC9hPjxiciAvPjxhIHRhcmdldD0iX2Js YW5rIiBocmVmPSI/ZXZlbnQ9dGFnJiMzODt0YWdfbmFtZT1wbmhfbWZfaHJldmlldyIgb25j bGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVwd2luZG93XCcsIFwnd2lkdGg9 NDAwLGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVcJyk7IHJldHVybiBmYWxzZTsi PmhSZXZpZXc8L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcm IzM4O3RhZ19uYW1lPXBuaF9tZl9hZHIiIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJl ZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMs cmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5hZHI8L2E+PGJyIC8+PGEgdGFyZ2V0PSJf YmxhbmsiIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl9oY2FsZW5kYXIi IG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dp ZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxlXCcpOyByZXR1cm4gZmFs c2U7Ij5oQ2FsZW5kYXI8L2E+PGJyIC8+PGEgaHJlZj0iP2V2ZW50PXRhZyYjMzg7dGFnX25h bWU9cG5oX21mX3RhZyIgb25jbGljaz0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVw d2luZG93XCcsIFwnd2lkdGg9NDAwLGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVc Jyk7IHJldHVybiBmYWxzZTsiPnJlbC10YWc8L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsi IGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19uYW1lPXBuaF9tZl9saWNlbnNlIiBvbmNsaWNr PSJ3aW5kb3cub3Blbih0aGlzLmhyZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3aWR0aD00MDAs aGVpZ2h0PTQwMCxzY3JvbGxiYXJzLHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZhbHNlOyI+cmVs LWxpY2Vuc2U8L2E+PGJyIC8+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9ldmVudD10YWcm IzM4O3RhZ19uYW1lPXBuaF9tZl9nZW8iIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJl ZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMs cmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5nZW88L2E+JzsKCXRibGNlbGwuYXBwZW5k Q2hpbGQobmV3aGVscGVycyk7Cn0KCi0tPgo8L3NjcmlwdD4KRU9GOwoJfQoKCS8vIGFydGlj bGUgZWRpdG9yIGhlbHBlciB0YWdzCgkvLyBJbnNlcnRzIHRhZyBoZWxwZXJzIGluIGxlZnQg Y29sdW1uIHZpYSBET00gbWFuaXB1bGF0aW9uCglmdW5jdGlvbiBwbmhfbWZfYXJ0aWNsZWhl bHBlcnMoKSB7CiAgICBlY2hvPDw8RU9GCgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCI+CjwhLS0KCmlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCkgewoKCS8vIFRoaXMgaXMg c29tZSBhd2Z1bCBsb2dpYyB0byBmaW5kIHRoZSB0YWJsZSBjZWxsIEkgd2FudAoJdmFyIHRi bGNlbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGlsZV9oZWxwJykucGFyZW50 Tm9kZTsKCgl2YXIgbmV3aGVscGVycyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1AnKTsK CW5ld2hlbHBlcnMuaW5uZXJIVE1MID0gJ01pY3JvZm9ybWF0czxiciAvPjxhIHRhcmdldD0i X2JsYW5rIiBocmVmPSI/ZXZlbnQ9dGFnJiMzODt0YWdfbmFtZT1wbmhfbWZfeGZuIiBvbmNs aWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3aWR0aD00 MDAsaGVpZ2h0PTQwMCxzY3JvbGxiYXJzLHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZhbHNlOyI+ WEZOPC9hPjxiciAvPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI/ZXZlbnQ9dGFnJiMzODt0 YWdfbmFtZT1wbmhfbWZfaGNhcmQiIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwg XCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVz aXphYmxlXCcpOyByZXR1cm4gZmFsc2U7Ij5oQ2FyZDwvYT48YnIgLz48YSB0YXJnZXQ9Il9i bGFuayIgaHJlZj0iP2V2ZW50PXRhZyYjMzg7dGFnX25hbWU9cG5oX21mX2hyZXZpZXciIG9u Y2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1cHdpbmRvd1wnLCBcJ3dpZHRo PTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxlXCcpOyByZXR1cm4gZmFsc2U7 Ij5oUmV2aWV3PC9hPjxiciAvPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI/ZXZlbnQ9dGFn JiMzODt0YWdfbmFtZT1wbmhfbWZfYWRyIiBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhy ZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3aWR0aD00MDAsaGVpZ2h0PTQwMCxzY3JvbGxiYXJz LHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZhbHNlOyI+YWRyPC9hPjxiciAvPjxhIHRhcmdldD0i X2JsYW5rIiBocmVmPSI/ZXZlbnQ9dGFnJiMzODt0YWdfbmFtZT1wbmhfbWZfaGNhbGVuZGFy IiBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhyZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3 aWR0aD00MDAsaGVpZ2h0PTQwMCxzY3JvbGxiYXJzLHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZh bHNlOyI+aENhbGVuZGFyPC9hPjxiciAvPjxhIGhyZWY9Ij9ldmVudD10YWcmIzM4O3RhZ19u YW1lPXBuaF9tZl90YWciIG9uY2xpY2s9IndpbmRvdy5vcGVuKHRoaXMuaHJlZiwgXCdwb3B1 cHdpbmRvd1wnLCBcJ3dpZHRoPTQwMCxoZWlnaHQ9NDAwLHNjcm9sbGJhcnMscmVzaXphYmxl XCcpOyByZXR1cm4gZmFsc2U7Ij5yZWwtdGFnPC9hPjxiciAvPjxhIHRhcmdldD0iX2JsYW5r IiBocmVmPSI/ZXZlbnQ9dGFnJiMzODt0YWdfbmFtZT1wbmhfbWZfbGljZW5zZSIgb25jbGlj az0id2luZG93Lm9wZW4odGhpcy5ocmVmLCBcJ3BvcHVwd2luZG93XCcsIFwnd2lkdGg9NDAw LGhlaWdodD00MDAsc2Nyb2xsYmFycyxyZXNpemFibGVcJyk7IHJldHVybiBmYWxzZTsiPnJl bC1saWNlbnNlPC9hPjxiciAvPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSI/ZXZlbnQ9dGFn JiMzODt0YWdfbmFtZT1wbmhfbWZfZ2VvIiBvbmNsaWNrPSJ3aW5kb3cub3Blbih0aGlzLmhy ZWYsIFwncG9wdXB3aW5kb3dcJywgXCd3aWR0aD00MDAsaGVpZ2h0PTQwMCxzY3JvbGxiYXJz LHJlc2l6YWJsZVwnKTsgcmV0dXJuIGZhbHNlOyI+Z2VvPC9hPic7Cgl0YmxjZWxsLmFwcGVu ZENoaWxkKG5ld2hlbHBlcnMpOwp9CgotLT4KPC9zY3JpcHQ+CkVPRjsKCX0KCgoKIjtzOjM6 Im1kNSI7czozMjoiZjhhMGNiYjc0MTU1YzIzZjlhNjE1MWZiYjE5MDkyNmIiO30=