# Name: msd_admin_colorpicker_plugin v2.4 # Type: Admin only plugin # Add a color picker to the custom 2 field in the write tab to associate a custom color with each article. # Author: Matthew S. Davis # URL: http://photographdaddy.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjI4OiJtc2RfYWRtaW5fY29sb3JwaWNrZXJfcGx1Z2luIjtz OjY6ImF1dGhvciI7czoxNjoiTWF0dGhldyBTLiBEYXZpcyI7czoxMDoiYXV0aG9yX3VyaSI7 czoyNzoiaHR0cDovL3Bob3RvZ3JhcGhkYWRkeS5jb20vIjtzOjc6InZlcnNpb24iO3M6Mzoi Mi40IjtzOjExOiJkZXNjcmlwdGlvbiI7czoxMDQ6IkFkZCBhIGNvbG9yIHBpY2tlciB0byB0 aGUgY3VzdG9tIDIgZmllbGQgaW4gdGhlIHdyaXRlIHRhYiB0byBhc3NvY2lhdGUgYSBjdXN0 b20gY29sb3Igd2l0aCBlYWNoIGFydGljbGUuIjtzOjQ6ImNvZGUiO3M6NDIyNzE6IiMjIyMj IyMjIyMjIyMjIyMjIw0KIw0KIwltc2RfYWRtaW5fY29sb3JwaWNrZXJfcGx1Z2luIGZvciBU ZXh0cGF0dGVybg0KIwl2ZXJzaW9uIDIuNA0KIwlieSBNYXR0IERhdmlzDQojCWh0dHA6Ly9w aG90b2dyYXBoZGFkZHkuY29tDQojDQojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojICAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5DQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQojICAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uDQojDQojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KIyAgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KIyAg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuDQojDQojICAgIEEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uDQojDQoj ICAgICAgICAgICAgIHYwLjUgLSBKdXN0IGNsZWFuZWQgdXAgdGhlIGNvZGUgYSBiaXQuIFJl bW92ZWQgbG90cyBvZiBpbmxpbmUgamF2YXNjcmlwdC4NCiMgICAgICAgICAgICAgdjEuMCAt IEFkZGVkIEV4dGVuc2lvbnMgdGFiIHRvIGFsbG93IGVhc3kgbW9kaWZpY2F0aW9uIG9mIGN1 c3RvbSBmaWVsZCB1c2VkIGFuZCBkZWZhdWx0IGNvbG9yLg0KIyAgICAgICAgICAgICB2MS4x IC0gQWRkZWQgTUxQIGNvZGUgc28gaXQgInNob3VsZCIgd29yayB3aXRoIE1MUC4NCiMgICAg ICAgICAgICAgdjEuMiAtIEZpeGVkIG1pc3Npbmcgc2F2ZSBidXR0b24gaW4gcHJlZmVyZW5j ZXMuDQojICAgICAgICAgICAgIHYyLjAgLSBSZXdyb3RlIHBsdWdpbi4gQWRkZWQgdG9nZ2xl IHRvIGN1c3RvbSBmaWVsZCB0byBkaXNwbGF5IGNvbG9ycGlja2VyLg0KIyAgICAgICAgICAg ICB2Mi4xIC0gRml4ZWQgWytdIHRvIHNob3cgd2hlbiBoaWRkZW4uIEl0IHdhcyBiYWNrd2Fy ZHMuDQojICAgICAgICAgICAgIHYyLjIgLSBjaGFuZ2UgaW5jbHVkZSBmb3IgdHhwX3ByZWZz IHRvIGluY2x1ZGVfb25jZS4NCiMgICAgICAgICAgICAgdjIuMyAtIGZpeGVkIG1pc3Npbmcg cHJlZiBpbnN0YWxsLg0KIyAgICAgICAgICAgICB2Mi40IC0gQWRkZWQgY29sb3JwaWNrZXIg dG8gdGhlIHByZWZlcmVuY2VzIHRhYi4NCiMNCiMjIyMjIyMjIyMjIyMjIyMjIyMNCm1zZF9h ZG1pbl9jb2xvcnBpY2tlcl9pbnN0YWxsKCk7DQpnbG9iYWwgJG1zZF9jb2xvcnBpY2tlcl9j dXN0b21maWVsZCwgJG1zZF9jb2xvcnBpY2tlcl9kZWZhdWx0X2NvbG9yOw0KCWRlZmluZSgg J01TRF9DT0xPUlBJQ0tFUl9QUkVGSVgnICwgJ21zZF9jbHJwaycgKTsvL0ZvciBNTFANCgkk bXNkX2NvbG9ycGlja2VyX3N0cmluZ3MgPSBhcnJheSggLy9Gb3IgTUxQDQoJCSdwcmVmZXJl bmNlcycJPT4gJ0NvbG9ycGlja2VyIFByZWZlcmVuY2VzJywNCgkJJ2luc3RydWN0aW9ucycJ PT4gJ1NldCBjdXN0b20gZmllbGQgdXNlZCBmb3IgYXNzb2NpYXRpbmcgYSBjb2xvciB3aXRo IGFydGljbGVzLicsDQoJCSdmaWVsZCcgPT4gJ0NvbG9yIEN1c3RvbSBGaWVsZCcsDQoJCSdj b2xvcicgPT4gJ0RlZmF1bHQgQ29sb3InDQoJKTsNCglyZWdpc3Rlcl9jYWxsYmFjayggJ21z ZF9jb2xvcnBpY2tlcl9lbnVtZXJhdGVfc3RyaW5ncycgLCAnbDEwbi5lbnVtZXJhdGVfc3Ry aW5ncycgKTsNCglhZGRfcHJpdnMoJ21zZF9hZG1pbl9jb2xvcnBpY2tlcl9vcHRpb25zJywg MSk7Ly9FeHRlbiB0YWINCglyZWdpc3Rlcl90YWIoImV4dGVuc2lvbnMiLCAibXNkX2FkbWlu X2NvbG9ycGlja2VyX29wdGlvbnMiLCAiQ29sb3JwaWNrZXIiKTsvL0V4dGVuIFRhYg0KCXJl Z2lzdGVyX2NhbGxiYWNrKCJtc2RfYWRtaW5fY29sb3JwaWNrZXJfb3B0aW9ucyIsICJtc2Rf YWRtaW5fY29sb3JwaWNrZXJfb3B0aW9ucyIpOy8vRXh0ZW4gVGFiDQoJcmVnaXN0ZXJfY2Fs bGJhY2soJ21zZF9hZG1pbl9jb2xvcnBpY2tlcicsICdhcnRpY2xlJyk7Ly9hZGQgamF2YXNj cmlwdCB0byBib3R0b20gb2YgcGFnZS4NCglyZWdpc3Rlcl9jYWxsYmFjaygnbXNkX2FkbWlu X2NvbG9ycGlja2VyX2NzcycsICdhZG1pbl9zaWRlJywgJ2hlYWRfZW5kJyk7IC8vQWRkIGNz cyB0byBhZG1pbiBzaWRlDQoNCg0Kc3dpdGNoKGdwcygnbXNkX2NscnBrcicpKSB7DQoJY2Fz ZSAnY29sb3JwaWNrZXJfanMnOg0KCQltc2RfYWRtaW5fY29sb3JwaWNrZXJfanMoKTsNCgkJ YnJlYWs7DQoJY2FzZSAnZmFyYnRhc3RpY19qcyc6DQoJCW1zZF9hZG1pbl9jb2xvcnBpY2tl cl9mYXJidGFzdGljKCk7DQoJCWJyZWFrOw0KCWNhc2UgJ3doZWVsJzoNCgkJbXNkX2FkbWlu X2NvbG9ycGlja2VyX3doZWVsKCk7DQoJCWJyZWFrOw0KCWNhc2UgJ21hc2snOg0KCQltc2Rf YWRtaW5fY29sb3JwaWNrZXJfbWFzaygpOw0KCQlicmVhazsNCgljYXNlICdtYXJrZXInOg0K CQltc2RfYWRtaW5fY29sb3JwaWNrZXJfbWFya2VyKCk7DQoJCWJyZWFrOw0KCWRlZmF1bHQ6 DQoJCWJyZWFrOw0KfQ0KDQpmdW5jdGlvbiBtc2RfYWRtaW5fY29sb3JwaWNrZXIoJGV2ZW50 LCAkc3RlcCkNCnsNCg0KCWVjaG8gIjxzY3JpcHQgc3JjPSciLmh1LiJ0ZXh0cGF0dGVybi9p bmRleC5waHA/bXNkX2NscnBrcj1mYXJidGFzdGljX2pzJyB0eXBlPSd0ZXh0L2phdmFzY3Jp cHQnPjwvc2NyaXB0PiI7DQoJZWNobyAiPHNjcmlwdCBzcmM9JyIuaHUuInRleHRwYXR0ZXJu L2luZGV4LnBocD9tc2RfY2xycGtyPWNvbG9ycGlja2VyX2pzJyB0eXBlPSd0ZXh0L2phdmFz Y3JpcHQnPjwvc2NyaXB0PiI7DQoNCn0NCmZ1bmN0aW9uIG1zZF9hZG1pbl9jb2xvcnBpY2tl cl9mYXJidGFzdGljKCkNCnsNCgl3aGlsZShAb2JfZW5kX2NsZWFuKCkpOw0KCWhlYWRlcigi Q29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiKTsNCgloZWFk ZXIoIkV4cGlyZXM6ICIuZGF0ZSgiciIsIHRpbWUoKSszNjAwKSk7DQoJaGVhZGVyKCJDYWNo ZS1Db250cm9sOiBwdWJsaWMiKTsNCgllY2hvIDw8PG1zZF9jb2xvcl9qcw0KLyoqDQogKiBG YXJidGFzdGljIENvbG9yIFBpY2tlciAxLjINCiAqIMOCwqkgMjAwOCBTdGV2ZW4gV2l0dGVu cw0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3INCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogKg0KICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiAqDQogKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KICog YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUNCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQ0KICovDQoNCmpRdWVyeS5mbi5m YXJidGFzdGljID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7DQogICQuZmFyYnRhc3RpYyh0aGlz LCBjYWxsYmFjayk7DQogIHJldHVybiB0aGlzOw0KfTsNCg0KalF1ZXJ5LmZhcmJ0YXN0aWMg PSBmdW5jdGlvbiAoY29udGFpbmVyLCBjYWxsYmFjaykgew0KICB2YXIgY29udGFpbmVyID0g JChjb250YWluZXIpLmdldCgwKTsNCiAgcmV0dXJuIGNvbnRhaW5lci5mYXJidGFzdGljIHx8 IChjb250YWluZXIuZmFyYnRhc3RpYyA9IG5ldyBqUXVlcnkuX2ZhcmJ0YXN0aWMoY29udGFp bmVyLCBjYWxsYmFjaykpOw0KfQ0KDQpqUXVlcnkuX2ZhcmJ0YXN0aWMgPSBmdW5jdGlvbiAo Y29udGFpbmVyLCBjYWxsYmFjaykgew0KICAvLyBTdG9yZSBmYXJidGFzdGljIG9iamVjdA0K ICB2YXIgZmIgPSB0aGlzOw0KDQogIC8vIEluc2VydCBtYXJrdXANCiAgJChjb250YWluZXIp Lmh0bWwoJzxkaXYgY2xhc3M9ImZhcmJ0YXN0aWMiPjxkaXYgY2xhc3M9ImNvbG9yIj48L2Rp dj48ZGl2IGNsYXNzPSJ3aGVlbCI+PC9kaXY+PGRpdiBjbGFzcz0ib3ZlcmxheSI+PC9kaXY+ PGRpdiBjbGFzcz0iaC1tYXJrZXIgbWFya2VyIj48L2Rpdj48ZGl2IGNsYXNzPSJzbC1tYXJr ZXIgbWFya2VyIj48L2Rpdj48L2Rpdj4nKTsNCiAgdmFyIGUgPSAkKCcuZmFyYnRhc3RpYycs IGNvbnRhaW5lcik7DQogIGZiLndoZWVsID0gJCgnLndoZWVsJywgY29udGFpbmVyKS5nZXQo MCk7DQogIC8vIERpbWVuc2lvbnMNCiAgZmIucmFkaXVzID0gODQ7DQogIGZiLnNxdWFyZSA9 IDEwMDsNCiAgZmIud2lkdGggPSAxOTQ7DQoNCiAgLy8gRml4IGJhY2tncm91bmQgUE5HcyBp biBJRTYNCiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9NU0lFIFswLTZdLi8p KSB7DQogICAgJCgnKicsIGUpLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKHRoaXMu Y3VycmVudFN0eWxlLmJhY2tncm91bmRJbWFnZSAhPSAnbm9uZScpIHsNCiAgICAgICAgdmFy IGltYWdlID0gdGhpcy5jdXJyZW50U3R5bGUuYmFja2dyb3VuZEltYWdlOw0KICAgICAgICBp bWFnZSA9IHRoaXMuY3VycmVudFN0eWxlLmJhY2tncm91bmRJbWFnZS5zdWJzdHJpbmcoNSwg aW1hZ2UubGVuZ3RoIC0gMik7DQogICAgICAgICQodGhpcykuY3NzKHsNCiAgICAgICAgICAn YmFja2dyb3VuZEltYWdlJzogJ25vbmUnLA0KICAgICAgICAgICdmaWx0ZXInOiAicHJvZ2lk OkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoZW5hYmxlZD10 cnVlLCBzaXppbmdNZXRob2Q9Y3JvcCwgc3JjPSciICsgaW1hZ2UgKyAiJykiDQogICAgICAg IH0pOw0KICAgICAgfQ0KICAgIH0pOw0KICB9DQoNCiAgLyoqDQogICAqIExpbmsgdG8gdGhl IGdpdmVuIGVsZW1lbnQocykgb3IgY2FsbGJhY2suDQogICAqLw0KICBmYi5saW5rVG8gPSBm dW5jdGlvbiAoY2FsbGJhY2spIHsNCiAgICAvLyBVbmJpbmQgcHJldmlvdXMgbm9kZXMNCiAg ICBpZiAodHlwZW9mIGZiLmNhbGxiYWNrID09ICdvYmplY3QnKSB7DQogICAgICAkKGZiLmNh bGxiYWNrKS51bmJpbmQoJ2tleXVwJywgZmIudXBkYXRlVmFsdWUpOw0KICAgIH0NCg0KICAg IC8vIFJlc2V0IGNvbG9yDQogICAgZmIuY29sb3IgPSBudWxsOw0KDQogICAgLy8gQmluZCBj YWxsYmFjayBvciBlbGVtZW50cw0KICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0 aW9uJykgew0KICAgICAgZmIuY2FsbGJhY2sgPSBjYWxsYmFjazsNCiAgICB9DQogICAgZWxz ZSBpZiAodHlwZW9mIGNhbGxiYWNrID09ICdvYmplY3QnIHx8IHR5cGVvZiBjYWxsYmFjayA9 PSAnc3RyaW5nJykgew0KICAgICAgZmIuY2FsbGJhY2sgPSAkKGNhbGxiYWNrKTsNCiAgICAg IGZiLmNhbGxiYWNrLmJpbmQoJ2tleXVwJywgZmIudXBkYXRlVmFsdWUpOw0KICAgICAgaWYg KGZiLmNhbGxiYWNrLmdldCgwKS52YWx1ZSkgew0KICAgICAgICBmYi5zZXRDb2xvcihmYi5j YWxsYmFjay5nZXQoMCkudmFsdWUpOw0KICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gdGhp czsNCiAgfQ0KICBmYi51cGRhdGVWYWx1ZSA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgIGlm ICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT0gZmIuY29sb3IpIHsNCiAgICAgIGZiLnNl dENvbG9yKHRoaXMudmFsdWUpOw0KICAgIH0NCiAgfQ0KDQogIC8qKg0KICAgKiBDaGFuZ2Ug Y29sb3Igd2l0aCBIVE1MIHN5bnRheCAjMTIzNDU2DQogICAqLw0KICBmYi5zZXRDb2xvciA9 IGZ1bmN0aW9uIChjb2xvcikgew0KICAgIHZhciB1bnBhY2sgPSBmYi51bnBhY2soY29sb3Ip Ow0KICAgIGlmIChmYi5jb2xvciAhPSBjb2xvciAmJiB1bnBhY2spIHsNCiAgICAgIGZiLmNv bG9yID0gY29sb3I7DQogICAgICBmYi5yZ2IgPSB1bnBhY2s7DQogICAgICBmYi5oc2wgPSBm Yi5SR0JUb0hTTChmYi5yZ2IpOw0KICAgICAgZmIudXBkYXRlRGlzcGxheSgpOw0KICAgIH0N CiAgICByZXR1cm4gdGhpczsNCiAgfQ0KDQogIC8qKg0KICAgKiBDaGFuZ2UgY29sb3Igd2l0 aCBIU0wgdHJpcGxldCBbMC4uMSwgMC4uMSwgMC4uMV0NCiAgICovDQogIGZiLnNldEhTTCA9 IGZ1bmN0aW9uIChoc2wpIHsNCiAgICBmYi5oc2wgPSBoc2w7DQogICAgZmIucmdiID0gZmIu SFNMVG9SR0IoaHNsKTsNCiAgICBmYi5jb2xvciA9IGZiLnBhY2soZmIucmdiKTsNCiAgICBm Yi51cGRhdGVEaXNwbGF5KCk7DQogICAgcmV0dXJuIHRoaXM7DQogIH0NCg0KICAvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogIC8q Kg0KICAgKiBSZXRyaWV2ZSB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGdpdmVuIGV2ZW50IHJl bGF0aXZlIHRvIHRoZSBjZW50ZXINCiAgICogb2YgdGhlIHdpZGdldC4NCiAgICovDQogIGZi LndpZGdldENvb3JkcyA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgIHZhciB4LCB5Ow0KICAg IHZhciBlbCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50Ow0KICAgIHZhciBy ZWZlcmVuY2UgPSBmYi53aGVlbDsNCg0KICAgIGlmICh0eXBlb2YgZXZlbnQub2Zmc2V0WCAh PSAndW5kZWZpbmVkJykgew0KICAgICAgLy8gVXNlIG9mZnNldCBjb29yZGluYXRlcyBhbmQg ZmluZCBjb21tb24gb2Zmc2V0UGFyZW50DQogICAgICB2YXIgcG9zID0geyB4OiBldmVudC5v ZmZzZXRYLCB5OiBldmVudC5vZmZzZXRZIH07DQoNCiAgICAgIC8vIFNlbmQgdGhlIGNvb3Jk aW5hdGVzIHVwd2FyZHMgdGhyb3VnaCB0aGUgb2Zmc2V0UGFyZW50IGNoYWluLg0KICAgICAg dmFyIGUgPSBlbDsNCiAgICAgIHdoaWxlIChlKSB7DQogICAgICAgIGUubW91c2VYID0gcG9z Lng7DQogICAgICAgIGUubW91c2VZID0gcG9zLnk7DQogICAgICAgIHBvcy54ICs9IGUub2Zm c2V0TGVmdDsNCiAgICAgICAgcG9zLnkgKz0gZS5vZmZzZXRUb3A7DQogICAgICAgIGUgPSBl Lm9mZnNldFBhcmVudDsNCiAgICAgIH0NCg0KICAgICAgLy8gTG9vayBmb3IgdGhlIGNvb3Jk aW5hdGVzIHN0YXJ0aW5nIGZyb20gdGhlIHdoZWVsIHdpZGdldC4NCiAgICAgIHZhciBlID0g cmVmZXJlbmNlOw0KICAgICAgdmFyIG9mZnNldCA9IHsgeDogMCwgeTogMCB9DQogICAgICB3 aGlsZSAoZSkgew0KICAgICAgICBpZiAodHlwZW9mIGUubW91c2VYICE9ICd1bmRlZmluZWQn KSB7DQogICAgICAgICAgeCA9IGUubW91c2VYIC0gb2Zmc2V0Lng7DQogICAgICAgICAgeSA9 IGUubW91c2VZIC0gb2Zmc2V0Lnk7DQogICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAg ICAgICAgb2Zmc2V0LnggKz0gZS5vZmZzZXRMZWZ0Ow0KICAgICAgICBvZmZzZXQueSArPSBl Lm9mZnNldFRvcDsNCiAgICAgICAgZSA9IGUub2Zmc2V0UGFyZW50Ow0KICAgICAgfQ0KDQog ICAgICAvLyBSZXNldCBzdG9yZWQgY29vcmRpbmF0ZXMNCiAgICAgIGUgPSBlbDsNCiAgICAg IHdoaWxlIChlKSB7DQogICAgICAgIGUubW91c2VYID0gdW5kZWZpbmVkOw0KICAgICAgICBl Lm1vdXNlWSA9IHVuZGVmaW5lZDsNCiAgICAgICAgZSA9IGUub2Zmc2V0UGFyZW50Ow0KICAg ICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIC8vIFVzZSBhYnNvbHV0ZSBjb29yZGlu YXRlcw0KICAgICAgdmFyIHBvcyA9IGZiLmFic29sdXRlUG9zaXRpb24ocmVmZXJlbmNlKTsN CiAgICAgIHggPSAoZXZlbnQucGFnZVggfHwgMCooZXZlbnQuY2xpZW50WCArICQoJ2h0bWwn KS5nZXQoMCkuc2Nyb2xsTGVmdCkpIC0gcG9zLng7DQogICAgICB5ID0gKGV2ZW50LnBhZ2VZ IHx8IDAqKGV2ZW50LmNsaWVudFkgKyAkKCdodG1sJykuZ2V0KDApLnNjcm9sbFRvcCkpIC0g cG9zLnk7DQogICAgfQ0KICAgIC8vIFN1YnRyYWN0IGRpc3RhbmNlIHRvIG1pZGRsZQ0KICAg IHJldHVybiB7IHg6IHggLSBmYi53aWR0aCAvIDIsIHk6IHkgLSBmYi53aWR0aCAvIDIgfTsN CiAgfQ0KDQogIC8qKg0KICAgKiBNb3VzZWRvd24gaGFuZGxlcg0KICAgKi8NCiAgZmIubW91 c2Vkb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgLy8gQ2FwdHVyZSBtb3VzZQ0KICAg IGlmICghZG9jdW1lbnQuZHJhZ2dpbmcpIHsNCiAgICAgICQoZG9jdW1lbnQpLmJpbmQoJ21v dXNlbW92ZScsIGZiLm1vdXNlbW92ZSkuYmluZCgnbW91c2V1cCcsIGZiLm1vdXNldXApOw0K ICAgICAgZG9jdW1lbnQuZHJhZ2dpbmcgPSB0cnVlOw0KICAgIH0NCg0KICAgIC8vIENoZWNr IHdoaWNoIGFyZWEgaXMgYmVpbmcgZHJhZ2dlZA0KICAgIHZhciBwb3MgPSBmYi53aWRnZXRD b29yZHMoZXZlbnQpOw0KICAgIGZiLmNpcmNsZURyYWcgPSBNYXRoLm1heChNYXRoLmFicyhw b3MueCksIE1hdGguYWJzKHBvcy55KSkgKiAyID4gZmIuc3F1YXJlOw0KDQogICAgLy8gUHJv Y2Vzcw0KICAgIGZiLm1vdXNlbW92ZShldmVudCk7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9 DQoNCiAgLyoqDQogICAqIE1vdXNlbW92ZSBoYW5kbGVyDQogICAqLw0KICBmYi5tb3VzZW1v dmUgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAvLyBHZXQgY29vcmRpbmF0ZXMgcmVsYXRp dmUgdG8gY29sb3IgcGlja2VyIGNlbnRlcg0KICAgIHZhciBwb3MgPSBmYi53aWRnZXRDb29y ZHMoZXZlbnQpOw0KDQogICAgLy8gU2V0IG5ldyBIU0wgcGFyYW1ldGVycw0KICAgIGlmIChm Yi5jaXJjbGVEcmFnKSB7DQogICAgICB2YXIgaHVlID0gTWF0aC5hdGFuMihwb3MueCwgLXBv cy55KSAvIDYuMjg7DQogICAgICBpZiAoaHVlIDwgMCkgaHVlICs9IDE7DQogICAgICBmYi5z ZXRIU0woW2h1ZSwgZmIuaHNsWzFdLCBmYi5oc2xbMl1dKTsNCiAgICB9DQogICAgZWxzZSB7 DQogICAgICB2YXIgc2F0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgLShwb3MueCAvIGZi LnNxdWFyZSkgKyAuNSkpOw0KICAgICAgdmFyIGx1bSA9IE1hdGgubWF4KDAsIE1hdGgubWlu KDEsIC0ocG9zLnkgLyBmYi5zcXVhcmUpICsgLjUpKTsNCiAgICAgIGZiLnNldEhTTChbZmIu aHNsWzBdLCBzYXQsIGx1bV0pOw0KICAgIH0NCiAgICByZXR1cm4gZmFsc2U7DQogIH0NCg0K ICAvKioNCiAgICogTW91c2V1cCBoYW5kbGVyDQogICAqLw0KICBmYi5tb3VzZXVwID0gZnVu Y3Rpb24gKCkgew0KICAgIC8vIFVuY2FwdHVyZSBtb3VzZQ0KICAgICQoZG9jdW1lbnQpLnVu YmluZCgnbW91c2Vtb3ZlJywgZmIubW91c2Vtb3ZlKTsNCiAgICAkKGRvY3VtZW50KS51bmJp bmQoJ21vdXNldXAnLCBmYi5tb3VzZXVwKTsNCiAgICBkb2N1bWVudC5kcmFnZ2luZyA9IGZh bHNlOw0KICB9DQoNCiAgLyoqDQogICAqIFVwZGF0ZSB0aGUgbWFya2VycyBhbmQgc3R5bGVz DQogICAqLw0KICBmYi51cGRhdGVEaXNwbGF5ID0gZnVuY3Rpb24gKCkgew0KICAgIC8vIE1h cmtlcnMNCiAgICB2YXIgYW5nbGUgPSBmYi5oc2xbMF0gKiA2LjI4Ow0KICAgICQoJy5oLW1h cmtlcicsIGUpLmNzcyh7DQogICAgICBsZWZ0OiBNYXRoLnJvdW5kKE1hdGguc2luKGFuZ2xl KSAqIGZiLnJhZGl1cyArIGZiLndpZHRoIC8gMikgKyAncHgnLA0KICAgICAgdG9wOiBNYXRo LnJvdW5kKC1NYXRoLmNvcyhhbmdsZSkgKiBmYi5yYWRpdXMgKyBmYi53aWR0aCAvIDIpICsg J3B4Jw0KICAgIH0pOw0KDQogICAgJCgnLnNsLW1hcmtlcicsIGUpLmNzcyh7DQogICAgICBs ZWZ0OiBNYXRoLnJvdW5kKGZiLnNxdWFyZSAqICguNSAtIGZiLmhzbFsxXSkgKyBmYi53aWR0 aCAvIDIpICsgJ3B4JywNCiAgICAgIHRvcDogTWF0aC5yb3VuZChmYi5zcXVhcmUgKiAoLjUg LSBmYi5oc2xbMl0pICsgZmIud2lkdGggLyAyKSArICdweCcNCiAgICB9KTsNCg0KICAgIC8v IFNhdHVyYXRpb24vTHVtaW5hbmNlIGdyYWRpZW50DQogICAgJCgnLmNvbG9yJywgZSkuY3Nz KCdiYWNrZ3JvdW5kQ29sb3InLCBmYi5wYWNrKGZiLkhTTFRvUkdCKFtmYi5oc2xbMF0sIDEs IDAuNV0pKSk7DQoNCiAgICAvLyBMaW5rZWQgZWxlbWVudHMgb3IgY2FsbGJhY2sNCiAgICBp ZiAodHlwZW9mIGZiLmNhbGxiYWNrID09ICdvYmplY3QnKSB7DQogICAgICAvLyBTZXQgYmFj a2dyb3VuZC9mb3JlZ3JvdW5kIGNvbG9yDQogICAgICAkKGZiLmNhbGxiYWNrKS5jc3Moew0K ICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZiLmNvbG9yLA0KICAgICAgICBjb2xvcjogZmIu aHNsWzJdID4gMC41ID8gJyMwMDAnIDogJyNmZmYnDQogICAgICB9KTsNCg0KICAgICAgLy8g Q2hhbmdlIGxpbmtlZCB2YWx1ZQ0KICAgICAgJChmYi5jYWxsYmFjaykuZWFjaChmdW5jdGlv bigpIHsNCiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPSBmYi5jb2xv cikgew0KICAgICAgICAgIHRoaXMudmFsdWUgPSBmYi5jb2xvcjsNCiAgICAgICAgfQ0KICAg ICAgfSk7DQogICAgfQ0KICAgIGVsc2UgaWYgKHR5cGVvZiBmYi5jYWxsYmFjayA9PSAnZnVu Y3Rpb24nKSB7DQogICAgICBmYi5jYWxsYmFjay5jYWxsKGZiLCBmYi5jb2xvcik7DQogICAg fQ0KICB9DQoNCiAgLyoqDQogICAqIEdldCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiBlbGVtZW50 DQogICAqLw0KICBmYi5hYnNvbHV0ZVBvc2l0aW9uID0gZnVuY3Rpb24gKGVsKSB7DQogICAg dmFyIHIgPSB7IHg6IGVsLm9mZnNldExlZnQsIHk6IGVsLm9mZnNldFRvcCB9Ow0KICAgIC8v IFJlc29sdmUgcmVsYXRpdmUgdG8gb2Zmc2V0UGFyZW50DQogICAgaWYgKGVsLm9mZnNldFBh cmVudCkgew0KICAgICAgdmFyIHRtcCA9IGZiLmFic29sdXRlUG9zaXRpb24oZWwub2Zmc2V0 UGFyZW50KTsNCiAgICAgIHIueCArPSB0bXAueDsNCiAgICAgIHIueSArPSB0bXAueTsNCiAg ICB9DQogICAgcmV0dXJuIHI7DQogIH07DQoNCiAgLyogVmFyaW91cyBjb2xvciB1dGlsaXR5 IGZ1bmN0aW9ucyAqLw0KICBmYi5wYWNrID0gZnVuY3Rpb24gKHJnYikgew0KICAgIHZhciBy ID0gTWF0aC5yb3VuZChyZ2JbMF0gKiAyNTUpOw0KICAgIHZhciBnID0gTWF0aC5yb3VuZChy Z2JbMV0gKiAyNTUpOw0KICAgIHZhciBiID0gTWF0aC5yb3VuZChyZ2JbMl0gKiAyNTUpOw0K ICAgIHJldHVybiAnIycgKyAociA8IDE2ID8gJzAnIDogJycpICsgci50b1N0cmluZygxNikg Kw0KICAgICAgICAgICAoZyA8IDE2ID8gJzAnIDogJycpICsgZy50b1N0cmluZygxNikgKw0K ICAgICAgICAgICAoYiA8IDE2ID8gJzAnIDogJycpICsgYi50b1N0cmluZygxNik7DQogIH0N Cg0KICBmYi51bnBhY2sgPSBmdW5jdGlvbiAoY29sb3IpIHsNCiAgICBpZiAoY29sb3IubGVu Z3RoID09IDcpIHsNCiAgICAgIHJldHVybiBbcGFyc2VJbnQoJzB4JyArIGNvbG9yLnN1YnN0 cmluZygxLCAzKSkgLyAyNTUsDQogICAgICAgIHBhcnNlSW50KCcweCcgKyBjb2xvci5zdWJz dHJpbmcoMywgNSkpIC8gMjU1LA0KICAgICAgICBwYXJzZUludCgnMHgnICsgY29sb3Iuc3Vi c3RyaW5nKDUsIDcpKSAvIDI1NV07DQogICAgfQ0KICAgIGVsc2UgaWYgKGNvbG9yLmxlbmd0 aCA9PSA0KSB7DQogICAgICByZXR1cm4gW3BhcnNlSW50KCcweCcgKyBjb2xvci5zdWJzdHJp bmcoMSwgMikpIC8gMTUsDQogICAgICAgIHBhcnNlSW50KCcweCcgKyBjb2xvci5zdWJzdHJp bmcoMiwgMykpIC8gMTUsDQogICAgICAgIHBhcnNlSW50KCcweCcgKyBjb2xvci5zdWJzdHJp bmcoMywgNCkpIC8gMTVdOw0KICAgIH0NCiAgfQ0KDQogIGZiLkhTTFRvUkdCID0gZnVuY3Rp b24gKGhzbCkgew0KICAgIHZhciBtMSwgbTIsIHIsIGcsIGI7DQogICAgdmFyIGggPSBoc2xb MF0sIHMgPSBoc2xbMV0sIGwgPSBoc2xbMl07DQogICAgbTIgPSAobCA8PSAwLjUpID8gbCAq IChzICsgMSkgOiBsICsgcyAtIGwqczsNCiAgICBtMSA9IGwgKiAyIC0gbTI7DQogICAgcmV0 dXJuIFt0aGlzLmh1ZVRvUkdCKG0xLCBtMiwgaCswLjMzMzMzKSwNCiAgICAgICAgdGhpcy5o dWVUb1JHQihtMSwgbTIsIGgpLA0KICAgICAgICB0aGlzLmh1ZVRvUkdCKG0xLCBtMiwgaC0w LjMzMzMzKV07DQogIH0NCg0KICBmYi5odWVUb1JHQiA9IGZ1bmN0aW9uIChtMSwgbTIsIGgp IHsNCiAgICBoID0gKGggPCAwKSA/IGggKyAxIDogKChoID4gMSkgPyBoIC0gMSA6IGgpOw0K ICAgIGlmIChoICogNiA8IDEpIHJldHVybiBtMSArIChtMiAtIG0xKSAqIGggKiA2Ow0KICAg IGlmIChoICogMiA8IDEpIHJldHVybiBtMjsNCiAgICBpZiAoaCAqIDMgPCAyKSByZXR1cm4g bTEgKyAobTIgLSBtMSkgKiAoMC42NjY2NiAtIGgpICogNjsNCiAgICByZXR1cm4gbTE7DQog IH0NCg0KICBmYi5SR0JUb0hTTCA9IGZ1bmN0aW9uIChyZ2IpIHsNCiAgICB2YXIgbWluLCBt YXgsIGRlbHRhLCBoLCBzLCBsOw0KICAgIHZhciByID0gcmdiWzBdLCBnID0gcmdiWzFdLCBi ID0gcmdiWzJdOw0KICAgIG1pbiA9IE1hdGgubWluKHIsIE1hdGgubWluKGcsIGIpKTsNCiAg ICBtYXggPSBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7DQogICAgZGVsdGEgPSBtYXgg LSBtaW47DQogICAgbCA9IChtaW4gKyBtYXgpIC8gMjsNCiAgICBzID0gMDsNCiAgICBpZiAo bCA+IDAgJiYgbCA8IDEpIHsNCiAgICAgIHMgPSBkZWx0YSAvIChsIDwgMC41ID8gKDIgKiBs KSA6ICgyIC0gMiAqIGwpKTsNCiAgICB9DQogICAgaCA9IDA7DQogICAgaWYgKGRlbHRhID4g MCkgew0KICAgICAgaWYgKG1heCA9PSByICYmIG1heCAhPSBnKSBoICs9IChnIC0gYikgLyBk ZWx0YTsNCiAgICAgIGlmIChtYXggPT0gZyAmJiBtYXggIT0gYikgaCArPSAoMiArIChiIC0g cikgLyBkZWx0YSk7DQogICAgICBpZiAobWF4ID09IGIgJiYgbWF4ICE9IHIpIGggKz0gKDQg KyAociAtIGcpIC8gZGVsdGEpOw0KICAgICAgaCAvPSA2Ow0KICAgIH0NCiAgICByZXR1cm4g W2gsIHMsIGxdOw0KICB9DQoNCiAgLy8gSW5zdGFsbCBtb3VzZWRvd24gaGFuZGxlciAodGhl IG90aGVycyBhcmUgc2V0IG9uIHRoZSBkb2N1bWVudCBvbi1kZW1hbmQpDQogICQoJyonLCBl KS5tb3VzZWRvd24oZmIubW91c2Vkb3duKTsNCg0KICAgIC8vIEluaXQgY29sb3INCiAgZmIu c2V0Q29sb3IoJyMwMDAwMDAnKTsNCg0KICAvLyBTZXQgbGlua2VkIGVsZW1lbnRzL2NhbGxi YWNrDQogIGlmIChjYWxsYmFjaykgew0KICAgIGZiLmxpbmtUbyhjYWxsYmFjayk7DQogIH0N Cn0NCm1zZF9jb2xvcl9qczsNCmV4aXQoKTsNCn0NCg0KZnVuY3Rpb24gbXNkX2FkbWluX2Nv bG9ycGlja2VyX2pzKCkNCnsNCmdsb2JhbCAkbXNkX2NvbG9ycGlja2VyX2N1c3RvbWZpZWxk LCRtc2RfY29sb3JwaWNrZXJfZGVmYXVsdF9jb2xvcjsNCgkkZGVidWcgPSBmYWxzZTsNCgl3 aGlsZShAb2JfZW5kX2NsZWFuKCkpOw0KCWhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2ph dmFzY3JpcHQ7IGNoYXJzZXQ9dXRmLTgiKTsNCgloZWFkZXIoIkV4cGlyZXM6ICIuZGF0ZSgi ciIsIHRpbWUoKSszNjAwKSk7DQoJaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMiKTsN CglpZiAoJGRlYnVnKSB7DQoNCgl9IGVsc2Ugew0KCWVjaG8gPDw8anMNCi8qPSo9Kj0qIHNj cmlwdCBnb2VzIGhlcmUgKi8NCi8qKg0KICogbXNkX2FkbWluX2NvbG9ycGlja2VyOiBBIFRl eHRwYXR0ZXJuIGFkbWluIHNpZGUgY29sb3JwaWNrZXINCiAqIEBhdXRob3IgTWF0dCBEYXZp cw0KICogQGxpbmsgaHR0cDovL3Bob3RvZ3JhcGhkYWRkeS5jb20vdHhwL21zZF9hZG1pbl9j b2xvcnBpY2tlcg0KICovDQp2YXIgZGVmYXVsdF9sYWJlbDsNCnZhciBsYWJlbDsNCiQoZG9j dW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KCWxhYmVsID0gJCgibGFiZWxbZm9yPSckbXNk X2NvbG9ycGlja2VyX2N1c3RvbWZpZWxkJ10iKTsNCglkZWZhdWx0X2xhYmVsPWxhYmVsLnRl eHQoKTsNCglsYWJlbC50ZXh0KGRlZmF1bHRfbGFiZWwrJyBbK10nKTsNCgkkKCcjJG1zZF9j b2xvcnBpY2tlcl9jdXN0b21maWVsZCcpLmFmdGVyKCc8ZGl2IGlkPSJjb2xvcnBpY2tlciI+ PC9kaXY+Jyk7DQoJJCgnI2NvbG9ycGlja2VyJykuZmFyYnRhc3RpYygnIyRtc2RfY29sb3Jw aWNrZXJfY3VzdG9tZmllbGQnKTsNCglpZiAoJCgnIyRtc2RfY29sb3JwaWNrZXJfY3VzdG9t ZmllbGQnKS52YWwoKT09Jycpew0KCQkkKCcjJG1zZF9jb2xvcnBpY2tlcl9jdXN0b21maWVs ZCcpLnZhbCgnJG1zZF9jb2xvcnBpY2tlcl9kZWZhdWx0X2NvbG9yJyk7DQoJfTsNCglsYWJl bC5jbGljayhmdW5jdGlvbigpew0KCSQoJyNjb2xvcnBpY2tlcicpLnRvZ2dsZSgpOw0KCWlm IChsYWJlbC50ZXh0KCk9PWRlZmF1bHRfbGFiZWwrJyBbK10nKXsNCgkJbGFiZWwudGV4dChk ZWZhdWx0X2xhYmVsKycgW8Oi4oKs4oCcXScpOw0KCX1lbHNlew0KCQlsYWJlbC50ZXh0KGRl ZmF1bHRfbGFiZWwrJyBbK10nKTsNCgl9DQoNCn0pOw0KJCgnI2NvbG9ycGlja2VyJykuaGlk ZSgpOw0KfSk7DQovKj0qPSo9KiBzY3JpcHQgZW5kcyBoZXJlICovDQpqczsNCn0NCglleGl0 KCk7DQp9DQoNCmZ1bmN0aW9uIG1zZF9hZG1pbl9jb2xvcnBpY2tlcl9jc3MoKQ0Kew0KCWVj aG8gPDw8Y3NzDQo8c3R5bGU+DQovKioNCiAqIEZhcmJ0YXN0aWMgQ29sb3IgUGlja2VyIDEu Mg0KICogw4LCqSAyMDA4IFN0ZXZlbiBXaXR0ZW5zDQogKg0KICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkN CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5DQogKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiAqDQogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQog KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLg0KICoNCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt MTMwMSAgVVNBDQogKi8NCi5mYXJidGFzdGljIHsNCnBvc2l0aW9uOiByZWxhdGl2ZTsNCn0N Ci5mYXJidGFzdGljICogew0KcG9zaXRpb246IGFic29sdXRlOw0KY3Vyc29yOiBjcm9zc2hh aXI7DQp9DQouZmFyYnRhc3RpYywgLmZhcmJ0YXN0aWMgLndoZWVsIHsNCndpZHRoOiAxOTVw eDsNCmhlaWdodDogMTk1cHg7DQp9DQouZmFyYnRhc3RpYyAuY29sb3IsIC5mYXJidGFzdGlj IC5vdmVybGF5IHsNCnRvcDogNDdweDsNCmxlZnQ6IDQ3cHg7DQp3aWR0aDogMTAxcHg7DQpo ZWlnaHQ6IDEwMXB4Ow0KfQ0KLmZhcmJ0YXN0aWMgLndoZWVsIHsNCmNzczsNCmVjaG8gImJh Y2tncm91bmQ6IHVybCgiLmh1LiJ0ZXh0cGF0dGVybi9pbmRleC5waHA/bXNkX2NscnBrcj13 aGVlbCkgbm8tcmVwZWF0OyI7DQplY2hvICA8PDxjc3MNCndpZHRoOiAxOTVweDsNCmhlaWdo dDogMTk1cHg7DQp9DQouZmFyYnRhc3RpYyAub3ZlcmxheSB7DQpjc3M7DQplY2hvICJiYWNr Z3JvdW5kOiB1cmwoIi5odS4idGV4dHBhdHRlcm4vaW5kZXgucGhwP21zZF9jbHJwa3I9bWFz aykgbm8tcmVwZWF0OyI7DQplY2hvIDw8PGNzcw0KfQ0KLmZhcmJ0YXN0aWMgLm1hcmtlciB7 DQp3aWR0aDogMTdweDsNCmhlaWdodDogMTdweDsNCm1hcmdpbjogLThweCAwIDAgLThweDsN Cm92ZXJmbG93OiBoaWRkZW47DQpjc3M7DQplY2hvICJiYWNrZ3JvdW5kOiB1cmwoIi5odS4i dGV4dHBhdHRlcm4vaW5kZXgucGhwP21zZF9jbHJwa3I9bWFya2VyKSBuby1yZXBlYXQ7IjsN CmVjaG8gPDw8Y3NzDQp9DQo8L3N0eWxlPg0KDQpjc3M7DQp9DQoNCmZ1bmN0aW9uIG1zZF9h ZG1pbl9jb2xvcnBpY2tlcl9vcHRpb25zKCRldmVudCwgJHN0ZXApew0KZ2xvYmFsICRtc2Rf Y29sb3JwaWNrZXJfY3VzdG9tZmllbGQsICRtc2RfY29sb3JwaWNrZXJfZGVmYXVsdF9jb2xv cjsNCglpbmNsdWRlX29uY2UgdHhwYXRoIC4gJy9pbmNsdWRlL3R4cF9wcmVmcy5waHAnOw0K DQogIGlmIChwcygic2F2ZSIpKSB7DQoJcHJlZnNfc2F2ZSgpOw0KCWhlYWRlcigiTG9jYXRp b246IGluZGV4LnBocD9ldmVudD1tc2RfYWRtaW5fY29sb3JwaWNrZXJfb3B0aW9ucyIpOw0K ICB9DQogIHBhZ2V0b3AoIkNvbG9ycGlja2VyIFByZWZlcmVuY2VzIik7DQogIGVjaG8gIjxz Y3JpcHQgc3JjPSciLmh1LiJ0ZXh0cGF0dGVybi9pbmRleC5waHA/bXNkX2NscnBrcj1mYXJi dGFzdGljX2pzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PiI7DQogIGVjaG8g Zm9ybShzdGFydFRhYmxlKCJsaXN0IikuDQogIHRyKHRkY3MoaGVkKG1zZF9jb2xvcnBpY2tl cl9nVHh0KCJDb2xvcnBpY2tlciBQcmVmZXJlbmNlcyIpLDEpLDIpKS4NCiAgdHIodGRjcyho ZWQobXNkX2NvbG9ycGlja2VyX2dUeHQoIlNldCBjdXN0b20gZmllbGQgdXNlZCBmb3IgYXNz b2NpYXRpbmcgYSBjb2xvciB3aXRoIGFydGljbGVzLiIpLDQpLDIpKS4NCiAgdHIodGRhKG1z ZF9jb2xvcnBpY2tlcl9nVHh0KCJDb2xvciBDdXN0b20gRmllbGQiKSwgJyBzdHlsZT0idGV4 dC1hbGlnbjpyaWdodDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUiJykudGQodGV4dF9pbnB1dCgi bXNkX2NvbG9ycGlja2VyX2N1c3RvbWZpZWxkIiwkbXNkX2NvbG9ycGlja2VyX2N1c3RvbWZp ZWxkLCcyMCcpKSkuDQogIHRyKHRkYShtc2RfY29sb3JwaWNrZXJfZ1R4dCgiRGVmYXVsdCBD b2xvciIpLCAnIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRs ZSInKS50ZCh0ZXh0X2lucHV0KCJtc2RfY29sb3JwaWNrZXJfZGVmYXVsdF9jb2xvciIsJG1z ZF9jb2xvcnBpY2tlcl9kZWZhdWx0X2NvbG9yLCcyMCcpKSkuDQoNCiAgdHIodGRhKGZJbnB1 dCgic3VibWl0Iiwic2F2ZSIsZ1R4dCgic2F2ZV9idXR0b24iKSwicHVibGlzaCIpLmVJbnB1 dCgibXNkX2FkbWluX2NvbG9ycGlja2VyX29wdGlvbnMiKS5zSW5wdXQoJ3NhdmVwcmVmcycp LCAiIGNvbHNwYW49JzInIGNsYXNzPSdub2xpbmUnIikpLg0KICBlbmRUYWJsZSgpKTsNCiAg ZWNobyAnPGRpdiBpZD0icGlja2VyIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7bGVmdDo4 MDBweDt0b3A6LTIwMHB4Ij48L2Rpdj4nOw0KICBlY2hvIDw8PEVPRg0KPHNjcmlwdCB0eXBl PSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsN CiAgJCgnI21zZF9jb2xvcnBpY2tlcl9kZWZhdWx0X2NvbG9yJykuYWRkQ2xhc3MoJ2NvbG9y d2VsbCcpOw0KICAgIHZhciBmID0gJC5mYXJidGFzdGljKCcjcGlja2VyJyk7DQogICAgdmFy IHAgPSAkKCcjcGlja2VyJykuY3NzKCdvcGFjaXR5JywgMC4yNSk7DQogICAgdmFyIHNlbGVj dGVkOw0KICAgICQoJy5jb2xvcndlbGwnKQ0KICAgICAgLmVhY2goZnVuY3Rpb24gKCkgeyBm LmxpbmtUbyh0aGlzKTsgJCh0aGlzKS5jc3MoJ29wYWNpdHknLCAwLjc1KTsgfSkNCiAgICAg IC5mb2N1cyhmdW5jdGlvbigpIHsNCiAgICAgICAgaWYgKHNlbGVjdGVkKSB7DQogICAgICAg ICAgJChzZWxlY3RlZCkuY3NzKCdvcGFjaXR5JywgMC43NSkucmVtb3ZlQ2xhc3MoJ2NvbG9y d2VsbC1zZWxlY3RlZCcpOw0KICAgICAgICB9DQogICAgICAgIGYubGlua1RvKHRoaXMpOw0K ICAgICAgICBwLmNzcygnb3BhY2l0eScsIDEpOw0KICAgICAgICAkKHNlbGVjdGVkID0gdGhp cykuY3NzKCdvcGFjaXR5JywgMSkuYWRkQ2xhc3MoJ2NvbG9yd2VsbC1zZWxlY3RlZCcpOw0K ICAgICAgfSk7DQogIH0pOw0KPC9zY3JpcHQ+DQpFT0Y7DQp9DQojDQojCU1QTCBTdXBwb3J0 DQojDQpmdW5jdGlvbiBtc2RfY29sb3JwaWNrZXJfZW51bWVyYXRlX3N0cmluZ3MoJGV2ZW50 ICwgJHN0ZXA9JycgLCAkcHJlPTApDQoJew0KCWdsb2JhbCAkbXNkX2NvbG9ycGlja2VyX3N0 cmluZ3M7DQoJJHIgPSBhcnJheQkoDQoJCQkJJ293bmVyJwk9PiAnbXNkX2FkbWluX2NvbG9y cGlja2VyJywJCSMJQ2hhbmdlIHRvIHlvdXIgcGx1Z2lucyBuYW1lDQoJCQkJJ3ByZWZpeCcJ PT4gTVNEX0NPTE9SUElDS0VSX1BSRUZJWCwJCSMJSXRzIHVuaXF1ZSBzdHJpbmcgcHJlZml4 DQoJCQkJJ2xhbmcnCT0+ICdlbi11cycsCQkJCQkjCVRoZSBsYW5ndWFnZSBvZiB0aGUgaW5p dGlhbCBzdHJpbmdzLg0KCQkJCSdldmVudCcJPT4gJ2FkbWluJywJCQkJCSMJcHVibGljL2Fk bWluL2NvbW1vbiA9IHdoaWNoIGludGVyZmFjZSB0aGUgc3RyaW5ncyB3aWxsIGJlIGxvYWRl ZCBpbnRvDQoJCQkJJ3N0cmluZ3MnCT0+ICRtc2RfY29sb3JwaWNrZXJfc3RyaW5ncywJCSMJ VGhlIHN0cmluZ3MgdGhlbXNlbHZlcy4NCgkJCQkpOw0KCXJldHVybiAkcjsNCgl9DQojDQoj CU1QTCBTdXBwb3J0DQojDQpmdW5jdGlvbiBtc2RfY29sb3JwaWNrZXJfZ1R4dCggJHdoYXQg LCAkYXJncyA9IGFycmF5KCkgKQ0KCXsNCglnbG9iYWwgJHRleHRhcnJheTsNCglnbG9iYWwg JG1zZF9jb2xvcnBpY2tlcl9zdHJpbmdzOw0KDQoJIw0KCSMJUHJlcGFyZSB0aGUgcHJlZml4 ZWQga2V5IGZvciB1c2UuLi4NCgkjDQoJJGtleSA9IE1TRF9DT0xPUlBJQ0tFUl9QUkVGSVgg LiAnLScgLiAkd2hhdDsNCgkka2V5ID0gc3RydG9sb3dlcigka2V5KTsNCg0KCSMNCgkjCUdy YWIgZnJvbSB0aGUgZ2xvYmFsIHRleHRhcnJheSAocG9zc2libHkgZWRpdGVkIGJ5IE1MUCkg aWYgd2UgY2FuLi4uDQoJIw0KCWlmKGlzc2V0KCR0ZXh0YXJyYXlbJGtleV0pKQ0KCQl7DQoJ CSRzdHIgPSAkdGV4dGFycmF5WyRrZXldOw0KCQl9DQoJZWxzZQ0KCQl7DQoJCSMNCgkJIwlU aGUgc3RyaW5nIGlzbnQgaW4gdGhlIGxvY2FsaXNlZCAkdGV4dGFycmF5IHNvIGZhbGxiYWNr IHRvIHVzaW5nDQoJCSMgdGhlIHN0cmluZyBhcnJheSBpbiB0aGUgcGx1Z2luICh3aGljaCBp cyBub3QgcHJlZml4ZWQuKQ0KCQkjDQoJCSRrZXkgPSBzdHJ0b2xvd2VyKCR3aGF0KTsNCg0K CQlpZiggaXNzZXQoICRtc2RfY29sb3JwaWNrZXJfc3RyaW5nc1ska2V5XSApICkNCgkJCSRz dHIgPSAkbXNkX2NvbG9ycGlja2VyX3N0cmluZ3NbJGtleV07DQoJCWVsc2UNCgkJCSMNCgkJ CSMJRmFsbGJhY2sgdG8gcmV0dXJuaW5nIHRoZSBrZXkgaWYgdGhlIHN0cmluZyBpcyBub3Qg cHJlc2VudC4uLg0KCQkJIw0KCQkJJHN0ciA9ICR3aGF0Ow0KCQl9DQoNCgkjDQoJIwlJZiBu ZWVkZWQsIHBlcmZvcm0gc3Vic3RpdHV0aW9ucy4uLg0KCSMNCglpZiggIWVtcHR5KCRhcmdz KSApDQoJCSRzdHIgPSBzdHJ0ciggJHN0ciAsICRhcmdzICk7DQoNCglyZXR1cm4gJHN0cjsN Cgl9DQoNCglmdW5jdGlvbiBtc2RfYWRtaW5fY29sb3JwaWNrZXJfaW5zdGFsbCgpDQoJew0K CQlnbG9iYWwgJHByZWZzOw0KDQoJCWlmICghaXNzZXQoJHByZWZzWydtc2RfY29sb3JwaWNr ZXJfY3VzdG9tZmllbGQnXSkpDQoJCXsNCgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMnLCAi DQoJCQkJbmFtZSA9ICdtc2RfY29sb3JwaWNrZXJfY3VzdG9tZmllbGQnLA0KCQkJCXZhbCA9 ICdjdXN0b20tMScsDQoJCQkJaHRtbCA9ICd0ZXh0X2lucHV0JywNCgkJCQlwcmVmc19pZCA9 IDEsDQoJCQkJdHlwZSA9IDIsDQoJCQkJZXZlbnQgPSAncHVibGlzaCcsDQoJCQkJcG9zaXRp b24gPSAwDQoJCQkiKTsNCgkJfQ0KCQlpZiAoIWlzc2V0KCRwcmVmc1snbXNkX2NvbG9ycGlj a2VyX2RlZmF1bHRfY29sb3InXSkpDQoJCXsNCgkJCXNhZmVfaW5zZXJ0KCd0eHBfcHJlZnMn LCAiDQoJCQkJbmFtZSA9ICdtc2RfY29sb3JwaWNrZXJfZGVmYXVsdF9jb2xvcicsDQoJCQkJ dmFsID0gJyNGRkYnLA0KCQkJCWh0bWwgPSAndGV4dF9pbnB1dCcsDQoJCQkJcHJlZnNfaWQg PSAxLA0KCQkJCXR5cGUgPSAyLA0KCQkJCWV2ZW50ID0gJ3B1Ymxpc2gnLA0KCQkJCXBvc2l0 aW9uID0gMA0KCQkJIik7DQoJCX0NCgl9DQoNCiMNCiNJbWFnZXMgdXNlZCBieSBGYXJidGFz dGljDQojDQpmdW5jdGlvbiBtc2RfYWRtaW5fY29sb3JwaWNrZXJfd2hlZWwoKQ0Kew0KCXdo aWxlKEBvYl9lbmRfY2xlYW4oKSk7DQoJaGVhZGVyKCJDb250ZW50LVR5cGU6IGltYWdlL3Bu ZyIpOw0KCWhlYWRlcigiRXhwaXJlczogIi5kYXRlKCJyIiwgdGltZSgpKzM2MDApKTsNCglo ZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHB1YmxpYyIpOw0KCWVjaG8gYmFzZTY0X2RlY29kZSgn aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1NQUFBRERDQVlBQUFBL2Y2V3FBQUFBQjNSSlRV VUgxZ2NPQ0RJb2pKcFRnZ0FBTFlsSlJFRlVlTnJ0blhtWUhVVzU4SDlWMVdkbU10bERRdGlq U1NES29yTG92UkFXQXdxeWlCSnVnb0NLNkNmcVJkU0xpdHlMa0lzaUY5U0l5cUlzUmhaQmx1 K1RLMEpFUUJCRlVFQUVaUTlMZ2tDQUJCUElKSm5NZEZkOWY1d3pNMmQ2cXJxcisvU1ptVXk2 bnFlZjA2ZTZ6OUxkNzYvZXBkNnFncktVcFN4bEtVdFp5bEtXc3BTbExHVnhGMUhlZ3VLTEFR bVRwMEpsT3VpdFFVK0JhSEoxMDVOQmo0Sm9ERVFLb2xZd294QW1RdEtCeEtCWWk2SVR4V29r SzFHc1FQSTZpbGNRTEVXeGpCZnBGR0RLdTEzQ01Cd0VYc0EyYlRCK0J6QTdRYmd6NkIwaG1n bDZHdWd4RUFHNnRrWDB2YS9mcjcwWEJoUWdxYjcyYkxiM2tnakZ5MGllUS9FVWlzY1FQRXJB by95TmxhTDZwV1VwWVdpYThDdjRsMjFCendZekc2SzlJSG83bUJhcmNQY1RmRzBCd1JPR05F RDY3eHNVeTVFOGdPU1BCTnlENW1IK1ZHcVJFb2FHaFgrL0tTRDNoK2o5RUwyMzF1SUx0K0Fu YVlBQ1ljZ0NpS0FEeForUjNJSGdObHA0akZ2cEt1RW9ZVWdCWUw4QTJtWUI4MEFmREdaWGlD cCtndThDd1hZOEFZYWlnSEFCSW5rSnlXK1IzTWdhN3VCdTFwWmdsRERVQUppbklKb09aaDVF UjBMMExqRFNMc2phUTlCVGhONVZsd1pERVVEMGh3SWtLMURjZ3VRNjF2TjdjVFByU2hnMlNl ZjNRK05oMUdHZ1B3RjZYOUNWL0syL3pnaENUaGdhQVVXbU91WExFUHdjeFpXOHdCSnhOMkVK dzRnM2c2YnRDT0xURU0wRFBkWGQ2dXNNVG5BVzA4aHhyQjRHbDNBSC9ZUjNZRjNQcSswOGwz WUlZdWNKdWxIOEhza2lXcmxKWEVSSENjT0lndUM0Tm1qYkI2S1RRQjhFdW1XZ0lPdU13cDBW am93dzJJQUlLTjZVa2dNMFJQMzdKVWd1SmVCS2ZzaHJJOTIzRUNNYmdoUGFJVGdNek1tZzMx T05CTGtFWDN1YVA0MUM0RGduRGtNUWE4SGpNS2lDd1pCT3Z3SVVLeEZjVHNBRkxPUWZJN1Vm UTR4TUNMNDhHc0xEZ0srQTNxTlAyTk5NSDkwa0NOTE1KZ2NNUGo2RUx4ZzJnUTg4WU9qL3Vn ckpJZ1FYME1ZTDRzeVJCWVVZV1JDYzFBcHRCd0ZuZ043ZEhRbktBNEdQbzV4VWx3SkxFZ3ha QkQ1d0NIMVdjeWxaVzZ4Q2NBa0IzeGRuOGtvSnc3Q0NZSUdFYUNjd1o0SStITFJ5aDBWOVdu MmRRNkMxcDRsVUFBeEpnR1F4cGRJaVRLN1h2bk9YWXZnR2E3aGVMR1R0eGk1SGN1TUg0VnRU UUo0TjhvOGdqd0NocW96WGI1S0JkU1FjYzIxZy8yNDVOTzJLNjI4SXk5OUp1d3dSdXd5Zld5 aDRDd0dMMkl4YnpEbnNiYTVIbFRBTWtVbGsrTlpjMFBlQStCcklzZW5Ta2Y1MC9RQndTZHd3 MVB1K2x5NDk5dXR2YS85ejlrTndHeS93UGZOdHRpaGhHRFFJRUlaenQ0ZHRMZ2Q1UGNnZHNr R1FaOE1pL0htK293bUNQUlNiRFJiSktBUmZvTUk5NWdmTU53dG9LMkZvcm0vUUJ1Y2REOEVm UUg0RXBISUx2M1M4NXRFT3ZzSmRNQmhadjZaNWd1N1dFdkUyU0RFRHlUVnN3VS9OaFd4Ynd0 QVVFSDZ3RFV5K0ZPU2xJS2ZhZExXL1ZwQU5Dbitqclg5QjVsV2pGbDZXV3lRVFhnZldLZUFq VkxqTC9JVER6QUtDRW9aQ0lKaW5ERC8rQUFSM2d2Z29TSmx1RnNrTTJzSDJIVVUxc3ptQlNQ dTQ3OC9KRElLZmRndlRicWUwdGtrekVOekFXem5IWE1URUVvYUdRTGk0SFE3OEtzai9DMnA3 MXgzUDFwVFp6b2ZHZlFodnFUWkFOOUFKcksxdGJ3SnJhdnZyZ0s1YXpOWDlkVVdZU2RJUlFV b3poNFNIVTkxM2JodVNMek9HWDVpcm1EWGM0dzNERklTZmJnRmlJVVJIVjlNb2pLVy9RSlBj c1phbkw4R3pYOEM1aFJGRTZ5RmNEM290Uk1zZ2VoN0NseUg4SjRTcklIb0Q5QnJvNnF5ZXoz cWdRa0FyQ29Wa0RBSGpVWXduWUJJQlV3aVlSc0FNRkp1aGFFUFJUa0NGQUpIWXY1Q2x2Nksr cjBLU3JXTk9wdXozWk1iQzUxRGNKdVpiWUM5aHNJRnd6YTZnTDROb043ZncrL1F1cHdIUVFD ZFpkZE1Rcm9Ob05VUlBRUGdnNkNlZyszblFTK0daNVlKaUg3cVp6bmdxYklka09oVm1vbmdI aW5lam1FckFXQUlxdVR2dXNpVDNKZVV5SlFQU0FmdzNhN2hRSEU5bkNZTTdXaVJoNTRNZ3ZB ejBWdW5DbjBjejVFbXI2TjBNaEowUXJZRG9mdEIzUWZnSXJIOU04TWpxSWJ0dit4SFF4VXdV TzZQWUU4WCtLS2FoR0VlQVN0UWFzZ0Vna2pURFFLMVFYNmNSWElUaGRIRUVxMHNZQm9Ed1lB V1dmUktpYjRNWmx3NUF4RURUcWRHMGJCY0EwVHFJWG9Eb0Z0Qy9nYlYvRWR5emF0aWFtUHNS VU9IdFZKaE5oYmxJM29WaUVnSEt5NFJLeTRMdEVlN0FBNElrczBsd000YlBpZy95VWdsREx3 ZzN0WU0rdGJaVjBrMmpwSHlqSkNpU3hpZ1BnS0FUd3VlckFFUzNRSFMvNE9hTmJsaWtBY0Zj WnFJNEFNbGNBblpITVlHZ0ZnQk5NNVY4L1FmYmU1bm9QL1RVUDRUZ28rSkFudGprWVREY05R WTZ6Z1o5WW5Yc2NTTVFaTWxHdFlLZ1FhK0U2RzRJcjRhT093VTNyV0dFRkFPU1k5aUpWbzVF TWcvRlRCUXRtZjBJSHhDVUZ3ZzlHbUlKQVVlSjkvTFhUUllHdyszam9mczhNSi9vUC9DbVp6 TWVwbElhQ0Y3YUlhcVpRZGZDaHFzRVZ6M0JDQy9tV01ZeGhrTlJuSURpM1FTMG8ycVJLVmZx dDh3QWh5OFE5WkVtd1RIc3gzMUROYUpPREIwSXQwNEM5U1BROC8zTW9pd09zN2RtaUVBL0I5 RmwwSFdWNEpMbGJHTEZ6S09GclppRDRvc0U3SXRrdE5PeDlrbno5bmVpYmR0eUpCOW5MMzQ3 RkVDSW9RSGg5dkdnTHFtQ1lBb0V3WHVFbWdhOURLSkZzUDR5d1VXdnNJa1hjd0lWSnZGK0pD ZlhJbEx0bVVGUUhqQ2tBL0VhQVVlS1BiaG54TU5nK05NNDZEb2Y5TWZ0NWxCZW44RXJnbVFn ZWhYMDVkQjVrZUI3LzZBcy9aL1BTYlF5bmtOcDRhdElka2ZWOVZ2NGhsaVR6S04wY3drRUw2 R1lMM2JqM2hFTGcrRTNvMkgwOThDY01CQUE0d0dBYWNBOEN0ZUN2aEhFdHdWbi9MMFUrNVJu OVRYR000R1BJamtaeVZ0N2U3b2JnY0VIaEQ0Z2xpR1pLOTdKUXlNT2htby9RdmhOTUtmME9j dkdBNGFzS1JnREhHWmQ3UlhXQzZEemw0SXp3MUxVTXp5M2J6TUR4UUlDamtUUm5qam5VcDYr QmpzSVBmdFAwOExCWWhiUGpSZ1lxajNMSC93Y21PK0REdXdBTkFLREU0UTN3RndGNjg0UmZQ MmxVclJ6UHIrTHFiQ0J1U2pPUVBFMlZLMlB3cWRIT3E5MjZBUGlIaFJ6eFE2czJPaGhxRTds K0pjUGdyZ2F6SmhrMDhqazFBb0RIR1lOMGVOVkxmVDZid1JubHVzVkZQRXN6MmNyV3ZnR0Fj ZWdHT1hWejVBOW9sU1ZTdFVQaUo4emhrK0xMWnM3NmNBZ3dQRDRiaEF0aG1pcW41L2dBMFJT eDF2WUNkRU5vRThUbkZnNnlNM1FFcTE4Rk1rQ0pOdjE5azM0UnBPeStBMTlHc0lnT0pkbG5D N21ORzhPV05GY0VKNmRDaHQrRFhwWGY3UElCd2huUk9rMTBOK0FzWmNLNW5lVm90dkVaM3M1 NzZDRkh4S3dOeExsQlVOV0VQcWJTeHNRZklwdHVVYUk1dlJCaU9hQjhHQTdqRjBFK3FnKzRm YUZJU3NRa1FIOUdJUmZFSHppcmxKVUJ3bUlxNWxNQzJlaE9BNUZXMktPVWg0UUJnNHRYWW5r RUxFVkR6VGplbVJ6UURBU0puNEo1RHo3bGFtTWR5SHhQQTN5VGxBZkxrRVkzQ0tPWlNVdjgw VWtaeUI1STVldzI2Zkh0NE9rbUl6Z0orYlY1a3hIMDZSaG55OGNBUEswNm5obG0xY2xQTzZL VjFNU2dyd081TkdDbzU4dHhYTUlnUGdpRy9nckN4R2NoT1RWMU1lbVVoNnpjb0xRRTg3ZEJj VjNqYUZsMkp0SmhxVmJncndMekN5M2FaU2x3ODFwR25YWGNvcE9FY3p2S01WeUdKaE50M0VJ a2grajJEWlJvUE9ZU2YzTnBZaUF6ekNPUlVYbU1NbGlRVEFWcUp3TGFsWnlnRm1RWDU5S1FH NEFkUjUwZmJrRVlSaHBpUU5aak9SalNKNUZZZ3FOTFBVWEpZWGdmMWpEVHNQWVRIcnRHRkJI dStjT1NSc0I0blZYMW9INEZuU2NMcGkvdmhUQllRYkUvdHlONFdnVWo2TmlRTGg2cTMzTnB2 N3Q2UlFDTGpDRzBjUE9UREw4Y3hyb2U2dGpsMDJDV1pRVVVUSXBwcEhlQU5IWklNNFd6Q25U S29henlYUS91eUs0RHNsTUpLS0JIdWlCblhEOVg3OUNoZThWRVc0VnhZQmdBbGg5T1poajdS QVlUeENpQlA4aDZnSnpMcng4Vms4ZmdqR203RmtlSWdYZ1BDQkU3ekh6QU84aDRPY29wanRH dUtYSFZVVEt2bUFWaXRsQ05ENXN0Q0FZM3Z3dzZCdUFZS0R3cHpuTlBzNnpDVUZmRE91K0lw alRPNzJJTWFack9Gei9FUDMyVUg3ZUN3WUE4ekQ3VStGcUpGdms2bHR3T2RLMVZ5UEFDQlpM bUNzRUc0WlVHQXh2YkFicVBqRGIyNFUvaTNhd3dSTHBhdXAxNS9HQ3ZmdU5SemJHckIzRWF4 Y0ZuQ01HK2Y4VTlkKzgvM3NjQmdEekdFZWh1QVRGdUxwVlJmMWlLbzc1WEkzb2U5V2dOUnpm S3JoeXlHQXdHQUZkM3dSOW1sc1QyTFNFQzRxNG1SU1o2dm9MK2tqQmJnT3lGbzB4cXhvUU5O RUVZUlZEQ0VxenJqOVRuUlVHRUR6RFNRak83ZGRUN2FzWjdOb2dMbGxMdStBOTQwVCs3TllH WWVqY0VlUjkxWG1Pa2t3akh5MWgxUTdQQUljS2RuemErdnZHck1od1RXSVFJUkdEOVBzKzV6 YjcrMFRNVEpMMlowWEFVaFlTY0dKdkxwTXRVelZobHU4ZWJhQ0ZzNG45emhqNFdsNW5XdVFI d1FUQTlhQ1BTSVlneVR4S05KbFdnVDVHOExaYm5mL0JtSmN5UHN5R0gzWk9ZUk1iMGZmbitT NlJCZ09BV2NrNHVyZ0J3ZnY3UlpnOHpDUFRaeElOa0txNi9ZNFFaazhTL0cxUVllakdIQ3po Sm9FSnFsK1NWeXRZMDdpN1FQOG56RGd2cVlmUkdMTTA2Y0VVOFhCemZHZVc4MFdELzZWWnY1 UDdzMGt3QUpnWG1Fa3JpMUZzN3dWQjdkdmkyaURCQVAvVkpEaENpT3h6M0lxY1dxSFNCWGRL MkxzbjNiejZaWWI4VHJTcDl4T3VoNjdqQkRza1JnZU1NVXN5Q0U4UklPUVZIRkhROFdZSnRp aXFMZzBHQVBNYWgxTGhXaVJqWEg1Q3pFRk9CYUZPb2tJRmN5YUo3TE5yNUlLaEUzT29nWnNr eVA1VDladmUxK3dhb2ZjelMyRDkrd1F6WGtpOXFjWThudkdCTnlxQUlpZDhSUWxlb1lMcjhl cHpMRHNNQnNFYXprVndjaTIxWWdBSUJuOFFMRkFzbmdxSFo5VU9JbzlXV0F0M2lwcFdzSzls VWE4cE1tbUl0YUNQRld6eFM2Ly9Zc3dqT1lSQkRKSmdGZm01SXM5MWZkYW5FVWw2OVlZQndL eGlBaTNjZ21MUEh2L0I1U0JuQWFGV0Z4cllmMnZCSDdMSWR1YTF0dDZFQTRHOTZnRXdkU0JV OTBWZDBwT3FRVkYvcG82OUNxcWhZbkU1WFBpclRLNUw5cGFzYUlISktyQjVmeXVQZ01iUE5Z NzM4ZjM2M3pFcGRmV2Y5MitGSjdMYXJPVmtKTDlHTWRGWVRLS3NFTlRWQnhyKzB4aitLQVM2 S1pyQllOUXF1RjNBSEo4bGhXWE1mRXJXQ3RIVEVPd25HT005dTUweDVyNk0yaURQYTE0end4 ZTBQTjhsTXY1bjM5OU5xM01kcjNlZ015Mk1iZ3huYVRqVmdHb0VCRXRkR01Mc0dZTDdtNkla VnNCZUF2WjFhWVg2T3Rudm1LZ0JJZXUwUkQrdHNBSFUxd1h0V2FkNTdNN1EwbWNSd3F5Q2x1 WHozb0xsY2N6MzkwMUtuVStqYVN6MzFoUVFtZnl1aGtNMDdPb2JlelIrWUFUQWZ4akRNYjc5 RHQ0d0xNQklBeWViYXRjSVdBQ29oOEpsT29uYXZ1Zzd5NEJjREMwMzVvcndOaTZrYVFMckMx YlM3K2VCUVdUOGZ0dDdFOXRQT202RHhuaVlUQTBWSVZqZGFUakR3UFVhUnVrY0VMaE1KZ01m ZmdwbUFVOFdhaVl0eCt4azRDRUJMVm1XRFhhdnZkbnJaUDhUNVA0QzhVaG1aOTZZVzV1aDZu RXZLaXN5QWlSU2hEZnR1L04rbjBpNWJ0L1BDcy8vVnU5QXErelBFZFVCMXhvNFVsZGJ4OFR3 cVFjRXZjZUJDOTRtT0tsUXpSRENjUzRRNGsyTVROQVVmYThDQVZvaEZ1VUJJYVlac2dwOVZp SDBGVEFmT0xLKzl4WEdySUlzUFp6ak5JZTVrS3hmSVlqV0dNNk1ZSDhOa3p4Q3AxN21VbTM3 eU5PRzAzWVF2RmtJREM5aDJydmhXTjgxdG8wSEpMWFhWemZBRHhxNGo5MDVXLzltdHFKNVc5 d3MvNjIrVHViOGo5b1JaUklwUG9Ncmd0UVFHR01GajY0d1hHUGdSQlBURG5tMFF0MDJlVDBj QVZ5UjloKzhZc0tkVlFkbnF5eXJJU2V0dFJsVk5ZME80WkxSaUJjYmhDRnRDeFBlaDNWYnQy UGZ0blVuMU1VdWMwQmQ1Rm5uTTBPQ3NmVmFXdXBNaGpyWGh1VVZoek9kcTJqNHZvYVZQc3RQ K2l4TldYZHhuMXhnMG1VOWxXYURFYy9BelFJT3lib0FmWEs0bFpjRTdEWVc4VnJlbTJlTStW bUR0cnBQblNpb3RaYzVmenZ0UEpuaHM4M2FlcTh0ajgvUXp3b3hMTlR3SHozYXdhWVJ5S1la YWxZKzc5eE44SGhEWnRLVHNLV0FBN0xlY2Vrd25VeGZKK01WRXhzQW9WYTZDaFRXTEFMbys5 bjY0OXJ6dkt5MzJ1UVVYaFA3dlViNnBncnpIOWJEanl2d1NRTVRzb1JVaVlGQy8rT0JnWThB WnpSa0prVXdWME9yenpLQk9rRjl4ZXBXR2Jpa2dIdlhuV05MTTNmQ2xNLzRtbEtoeFV4eTFV VTVOOThweXhPVHdWTE1wYmdKRkQ5V3FLazBVN0FrZ3Y4WGdrbGFtTmhuY1lMWU52OTZnOHF0 R1F4R1BBcnpvaHpPc25CckJpUGd1aW1JWlFYQUVHWU1TK1pwL1gxYjg2VHYwSTQ2bXhiUUhv cldkY3R0WFVEeHZsQml2eUZqVHJVY2FNb1BpRHpGSGVoQ3g1SUx1RUREUnpTTXp1RXdENkM0 OXZrZHRvSmRnUWR6d2ZBSXZFWEFualFnTVphbnRsN0NUd3U2YjkwWjQrQ05Dci9NNEErazFh V1pUdEtqblpFT2dkY092MEo3MU5tQU1JNEllVk5NcGJmQUkwL0NIelVjYUhKQTROZ0VjRlJ1 R0NJNFRFREZOL2FYOUxUcUROUy9iRTFoNjNSMWVRaXFMeFRTNDdoTytXelN1Y0locEdrMnZj aHdqc3ZmTUF4TUx0WUptaUVPaEltQkVCZCtVNlIyRUFMenFPRUtBM00wVkJxQklHYlhmY2dZ VG5HbFp5VEFZSVNCZzR5ajZaVVdNR3dTRVh0YW9ZRkZBcUVMMUF4WlcrOGlJaTh5UTRzdkUw d1hGeHc2QlJqcE1JbXdkTzJrUVUwS0VNTGlJOFRybWpIbHprMGh2R3hnV2g0QXRDVVdiR0RH SGJBOThIUW1HQjZFVVJIczQ5SUVKcVd1M3Npc2V5S3ZBVGNXZU1PNk05andQblV5SXhCNHRQ QVJmaGtyTG5QSU9EU0NzZmdDQm52T3BJeDFzc1hOSkN5YUFJY1RMWXJXQkxheXM2RGpMNFpy SWppVnVqQnIxczZRMkRHcDRmMlpZZWlDdllCeGNTM2dlcDhFUnQzK3IzZEF2RkhnUFF1YkhH T1huc2RkTGJtMjdNdVlBKzBqK1BIMzhkQm8vSGJMbUJZd2xzY1UxeFJ4aFU2ZDd5b0h3enl5 bU9rM2F2aVNnVkcrcHBBanRGb1B5WUhBaFpsZ2lPQjlPTFNBU2RFSVdKNHcwQ1hnZnd1K1gx MkRKUGhKcGs3YXNBNlJBSUYyUUNVVFFMQWxCVXNHWnM5TGgya1ViOGZpWnBFTGdEZ0VKbVl1 RlE3R1VuaG9LM2dXMk5uREgzQnBnL2orZm9zTnJZZFladDhMWFA1Q0JQdmt5VHd6N3FaNkpW RDB5anJkQmRyNVdUU0NmYlJyOG5IdGNheGVxSFZDSjVrcnVpTXRvVThiRkRKbUh0bnFmR1dz YVpwaHZpRDZnK0VYR25icTZaSEd3MGV3bVV4MXg4ZHJlQmZ3Wnk4WWZnUHRHbmJ6U2NLMzNY MkhsN3A0ZDhUYVlRQ0RTR2psczlTNW5GOWJLKzhLWHdySHZxN1REalp6eFdZeXhmMkd0RG9Y RU1iUzJydnFiQjF5aFpZUWZtWGdxOVRHT3ZqQVFMcDIyTnNiQmdGN2FHaHpBZUJyTXRWSGtU VGMwWVRHbzV2aUhOMUdXbjdYZXhjSXdtTFgyMXA5YmRFQTJxRWRiRUp2WXZ1cVRtNndkTlRW RDA0bkJxZ0xDTkZrTGZGd0JLOEFiOVgrcGxDYVF6MGJXQmovSVZjNnh0NitYZUVKM2QvMStR YnJnTjgxQ1FhZmJGVmJtb1V0L1NJcEpTTkwra1ZheWtaU3RtcEljcHFHTFJsWWs1N3g2bHAw MnpYczJLZmp0eW5hb0w3TUVZUWgzT0Z6TTlMcTYyN1dYcllzMXNDaG10NXRhL21UNmxMOGkw ZG5JMTRkSXMyUTFmengwUjZTOUFGOU9zRWswckZ6amVPNFRRdTRXbjFqQ1kvYWVwSnREYUMw YUF6ZktHYlRwL1hYOERzRHg5ZkdOWHM1MFpDWVhMWDVESmdHUEo4Q2d4RWFkckdaUlhGVjR2 SWJMSEQ4c1VuM3FTZ1lwS2Y1SXpQQUlSTUFTMXErTHkyNlkxS085ZFFwaXdBbkpXYkd2OThY aktacmh4RHVOOVhJWWVEakpKTUNScldUbTExU1lWZ01ZN3VyT1VrRGhENXRpZ1RIRkJLaGhE ODFFWVlzem5DYVJpQW1uSGdLYzJTcGl3dXN5NEdXRnFmWkp1ejFBaDczSCtMUFhhYVl3Ulkz c1orZkVBZkwxZ3M5S0NBQUhBN1AvZ0tXQXpPU1duMFBqVkQvZmhmZ3BrUVl1bUZIWFhjVDA3 U0NTSUZCUU9mNmhPU29nbURJNitTS2xOYmJ0K1gzZVhVdHlKVFUwdHZNSk9sd2tsWHNOYTAx dDJtR0pDalN2cWRwVUFpQnVkNXdYeHlHSk1IWGpqOVdWNzl6cXMvUUJidTRKaDh5RGhoU3pL a1hEb2QvRExLWkpHa3NXbFNFOE1zRVB5SXU3UEhsT1hRQ0xFbW1UMWFOWU5NT3RraVd0c0RC WUpwTEVkd3I0SmllaGpwTjhFMUN6TGQyTWVrd0dOaGU0emNIWWhJTWRkcmk3M1g5SlVNQlE1 TDVrMFg0WFg2QXpaeVNIcjZCeTBld1FTQkpueFZGWmRRRWNlV3VVNEF3R2VTdDhHTGdxYkFh WVd2Sm9RVUcvTGtRWmk0d3lEUHJwcDhNTE03S2ROZElEaXloQStrNFZ2dThNU1NQT3gwRU15 bEorTlBNcEVZMVJCb0l0Z1ZlWFZEVUg3T2RCOTZaekU2N1AybEd3cXdUQkJTdEdaNk9xcy9i RzRZVVd0dTJocTJBRjUwd2FKaHVQSVdmQkdoMDd6WDR6V2FXczNRNWhOUlgrTWtoOEZraVEy bXR2ODBrc2tXTmtqclM2aCtGSXR1UVROc3MwRWtBSkdtS3BwYVB3VXMvZ1ZWUVhRVGRWejNw aEpzZ1lYb2lEQkZNVDFvWUlHbCtRWXM1RlpwWStLb0ptc0ZYK0gzTW4wWWQ0cVNsK1JUSlMz MjcxckdKYXdSWE5vSjArSlF1ZVVsYWNVZzZ6Q1dSWW5vMXJ3aE1aRmdDYkpPaDlVLzA5SFVW aHQ5YllmZ3Bab0tHY1NJaDNFQ0MxckRNUUJVS2VLR0p0eWdrZXhLZHpPRXdaeldGYkZCb1M1 MUowQmhKR2tIRzRMQkZsZXIzU1hoVXJuVHplSmRSbmdoVjBaMXZ6eG1ZWXp5RlBVa2wxZ2gv aTlPQjdvYk5sYU5Ic1NlWW5oR0d0Ujl2VHM5eldqOURIaTJSeGZ4cHhEZUl3NUNrR1d5K2dj clErdnRHa2JBSXZ3OEFnNm9od2lvTS9YcTlqUjBhTHh2UndCUW5EQm8yY3pVaFVjcGR0TUZn bWhkU1RmSVpmTklsbWdtRHpGQ1hwQkhpeDVWRk94aUhscWp2YzNBNXVxN0hsemJtMnFTRWU1 dlo4cjBvK29JSmlhMitjVWVsNnZjM1M0Smhpa2x1NloxMzBtWktHWGk5eVRCMEYrQW41REdS ZlB5RXREcWZUVm42Rk9KMVBtYVJTZEVNUGhEWWhIOVFpNEZWMmdNR2wzYXdoTkRjbWlHRUtm RUJ0RmxBSUJhU1lPaGd5R01hNVFtUnBxeGwzL0JtVXVxVUJZSTBjOGs0MmprWENQRnhHVExG Ukd2bXcxNHQ2dVRjcEFoODJwL1NTVEFJR09QekpjTGplQTJtZnpiZmpNemtNOGlNbXNLblRu bjZETXB5WEZtTys4SVFkNTVWZ3Fhb041bUlXYjF4UzlnMmUwZlM0SjlCQzdHR3NFcDZ3cENt SFdwbFRKSm1hQmQrUXU3bGxRMENERjBaUXFaSkhXbDVvMGV1cER0Zi95QWVNcTJIUXFYQVlO TUlxZ0VIdWg0S1llbURpSGNBRG5ybld4ZXNydFJrM1BlSFVocjNkaWNNVVcweEV0ZWR5bnFs QmxZUEl6TXByL0JualJqWld2azBiUkRWN1J1SDh5eGpFT0FBSXdrU20wa1UxV2tMMTFpTUxE TzBOTE84R1RiNE96RWJzdFVKZ3dFVjc1RXhCZjN3UmdoREkwQm96d2hSdklkWnhMU0Z6Vnd5 anFoU0hKS2VmZVZXM0FQZzBIVlFSSFYxOVZ0OHhyMUI4eG5XZ1dtbHVORkVKblp2NHRHa3NV WDJrV2hZT3d4Z2FEU3ZLQ2xhbE9RZmlEcWh0dFc1SURFT0FKS2lTMWdpVEdtQ3FpeW1VUklJ cm1HZ2cxYmFZVzAzNkFLL010Rm5LS3dJaXYzWDF0OFExV2txalRIQzBjcTZKZ28zanRiWU5u QW0zaG9MMG1lT2lNY1pYSW05Tm9FU09icDAwcGE1MGlraFUrRnBHaEVEZ3NFR0ltcmlkOGQ5 aG80Q3YxdFNTNnJheU11Z2pQTXRpNWVaTk5ya0c2dmhLbXVTektSUURBWHVaU21MUitrRUVS VDBYY0lTZlkzRDBGV1VNMXc3ZjBMNUNNdFNZQm5YWFIzTW4xbFZPMnpQRFVrd3JETitRcDU2 VG0yYlZENi9zaFFZTFprZ2EyYVNhQUNDdW1QclVuMkdSb0NJZVlRbERHVXBySVF3VVlJVUhv SU85bFhmWTdMYTRZUWhoQlcrd1dQakFZT3daTUdXcFN3TlJESW1SSFV3SkFGaEczSVExeGdH VmpoaE1MQWkvZ1U2SXd5eDhhZ2xER1VwckdpWVNDeWFKTnlDN21NMnJVanlHVjdQa2gvdU1j UnUyL0lSbHFXbzBnWGJLQThZcEtmL0VCOWlJR00rdzJ0UjNmcTc4Vmxzc3k1TUhNTG9UMkdt bG8reExBVnBodWtoaUx3TFpsdnFWamhoK0FGaXRZWTNmUmFoVGxzZ3ZiWUZFcllySDJOWkNu S2dwNGY1aEg3QWUxUGRYNXFvVVNKNHJqNFJ4V2Y2Yjl2YzZyWDlJSVMzbG8reExBVjR6Nkpu Z3JzMElOSkFxSnVhL2ptbnowRGZDYnU2L0FDVDdEREgvUWNGdksxOGttVnB0SHdBdGc1aG91 L004TGIzOGM0NjVRTkRtbU9jWVdvL0FleFlQc3F5TkZvRTdCQkNSVnFFM0RYTFFkTE1rRURu TEhnNUVZWUlsdVRRQUU1SURPd0NSalJ4dnRXeWJCSldFck0wQk1ZVEJrSHlGS2tDbnFtZlo5 WGxNL3pkWm11WkRMNURiTnZ1c0RMRVdwYkdJMGw3aFNEekxHT2xMVDVEQ0kvR2Y4TTI4ZkRq b200a1U1b1dTQnNJcTZFdGdEMW83c3g2WlJuaHpuTUVlOXEwUU5vczhIRnRJZnJrY2dBTUF6 VEQxYkJHdzFKZkxaQVVhdTJKS0VYd3IrVVRMVXZlc2kvTURHSEx5RE9TcEQwMGg0Ry9wMm9H RUVaai9tNWlzM0g3YWdUSHZJZXp5MGRhbHJ3bGduY0xhUEZZTzNDQUJuRFVtZEFDZzNUOCtB TzJ0VktUMWxwTjZYL1llZit5SjdvcytXRjRyNjVhR0Y1WkVUWlpqZFc5ZGpzczg0S2hHKzdK MjhYdE9LOWR3SHZMeDFxV0hQNUNFTUg3ZkhxZU02UU4zWXNZbUlOcWhXRXRQS2loMDBWWEdv bVdMZER3dnZMSmxpVnIyUlhlRmNFV0VmNWF3T1hMMXNtbmRTbG1Ld3kzdzdvSUh0SWVQNWdo eEhySU96Q2p5OGRibGl3bGhBOUcwSlkzTWM4R1J3ajNlTU5RZGFMNWcyL1NrNmMzUDNrMHpD a2ZiMWt5bUVoS3c5eklrcW1xTThoa1REdTg4UW84bkFFR0NPR09QRm9od1p4cTBmRGg4Z21Y eGJmc0FMdHBtT0hyQzZUSmFPMzkzYytJL2hNQnBNS3dFdTROYStuY09vWEtESTdMd2J0anhw ZVB1U3crUmNNUmNSTXBUZFowU3VQY0RiZTVmczhKdzE5Z3ZZWS9wTmxmYVpHbFdCUmc4eENP S0I5eldkTEtGTU9ZQ0k2SkVnYnpKRFhFRGkyaHUrRDJ6RENBTUJIOEpnc0FPajM2RkVUd0tU Q3lmTnhsU1NxdGNIZ0VXMlZ4bUQzazg5bS8xUkpSTThJQUdtN1cwSzA5UWxnWlBQM2Rac0Z1 NWVNdVM0TGpMRFFjRjBFbDd4QlBXOE1jd2k4UjdrbGZFbUg0QXl3TjRiNUdRcXFXUHpWS3cv SGxFeStMMDBTQ2Q0WXdPMHRPWEpLNVZOdU1nZXVTZmpmRlhCRkd3dzA1K2hTU0hCc1J3VkZ2 d1V3ckgzdFpiQ1dFejJ0bzkwblA5b0drZHV6cFIrR3ZEY0FBRytBWEVXeHcrUVJwdVVzT1dp ZHFPS0Y4N0dXSmw3R0c3UTBjbWRhM2tMVWhEdUY2UlBLTTlxa3cvQldXUi9CYm44aFJCbk5L Um5EY1ZNem01ZU12UzM5M2djOUdNRDdKMUhiSlhFSmlYbWpnMnJUZjlvanFDS1BocDBrLzZt TzNXZXEyQlA2OWZQeGw2WTBnR1dhRThERU5JcTFUMXdXSXRvTnk3elB3WkFFd3dLdXdPSVNY ZmJTRFQxSmY3WmpVY01Ja3pEYWxHSlNsNWl0OFNjUGtMQU4xZk1MN0lTeXlaYW5tZ21FNVlw MkdxM1dDTnZESlViSmMyRlFOWHl6Rm9Dd1lkdGF4VHJhMGNjeWVmV0FyMThLTlBuOUIrdjlY cm9pZ0swMUZhVDhJNm4ySFQ3WmozbGxLd3lZTmdnS3h3TURFUE9ObVVocm9hLzhwZUxOUUdK NkFKelFzVG5KZWZIdW5MWkdsQldDQ1VpbzIxYUlPQm5Vb0tFSE5udEdlMW9VbXNjT3RzeHN1 OVAwWEdkSWloSTVnWVFSUlh0UElFWFVTR2c1UlpjN1NwcW9WSmtEbEc2QkcxYThLYkdwUVJC bWdzSUR4djYvRFUwMkFBWjZEK3d6ODNpY25KQ2tjWm9HajFjQlpZTFlvcFdOVEsyTy9BdW9k VlFqaVczNG9OSVRkY0Y1UytrVkRNSUNJdW1HaHJpNTQ3a1dvOWdSRXcwd0VYeStUK0RZbHJU RDJYMEQ5T3loVkQ4REFOZVBGZ0ltdzAweDBEYmUvQ1E5bStUdVpCZThsdUUzRHZRbEVlbmVV OUU0UExnQ0ZSUEVKV3ZoZ0tTV2JBZ2pqSjBEcjkwQk42QTlCMHRZZmlvU0dPT3lDLy9FSnB6 WUVBNGp1TGpnbmltbUh0RTRRMnpGRHJDRlFqRWJ4SGRwTXVhYkR5UFlUQkl6NkwxRC9VbDJp emFVVmxPTlY5RTUzNnJCRWJ1dUVlN1ArclZ3bXljbzY3WkJtRnJtQVFGaXV1N3JOcE1LM3di U1dVak5TeTlhSGdQcGNuM2trR1FpRVNnR2lDb1ZGM3NLb3FoV2lRWUVCUkhjRVoyc0lQWE5E ZWwrTnNGeGIvMnNYS0k1Z0lwK3ZuVjJXRWFVVnRwa0p3WG1neGd6VUFESUhFSDFRMUdSc2NR ajM1ZmxydVozVlZYQjdCTC95QmFGWEc3aXV0Mzk5Q3dHbk1ZV0RTdWtaU1NETUhBZWpMb1Jn NXNCV1VHWTBsZFFBTFdHZ3c4RHBlYlJDUXpDQUNEVjh2WDROT0JjSUE3U0JkSnBJOWR0RUFz NW5LN05ES1VVandrOElJUGdteUFQNi9BVHBFR3dmRUd6bmlCOWhtVU4xRUdDQURuZ2loUE5k RG5Tdmc1eDBIUXAzSXhFd2c0REwyTUpNS2FWcFkzZVlkemtSMUFrZ2xidDFsd252VTAybHBX QytrNlZmb1ZBWVFKZ05jRjRFUzV3bWtYUUFyeEx1UlgvL1lUYWorUkd6ek5oU3FqYldzdXQ4 a044QTFlYldDSzc5SkVIcS9SNE5hZ0dpLzFLMmd3d0RnSGhkd3lrOXpuU2lOdkFCWU9COWtV ZytCSnpETk5OV0N0YkdwaFhlc3orbzcwTXdMdGxPVG1vMVUwT3R0MExuZFExTGNrRlhIQUNY SXppMkYyVFhxeHdRQ1BBQUg1QjBJVG1YaUxONFhIU1ZVcll4Z1BDdjd3SHhjOURUazNOTGV6 YmoySzkvYjJMN2VoVkVzeEVkVHpUNmR3dEtmUkFoY0JxU2wxT2RmNVZpTXJuOENFVUxrbE5v NDlReXczVmpBR0hmWGFIeU0xQnZkYmY4TXFOMnNHa0p2Z1VkVHhZaXhZWGVnSW81RHNsbENJ SUJyYjVvU0N2VWIrdFFuTU1hemkwMXhIQUY0WUIzZzc0Y3pOdEJDL2RRTUpPaUhWemFvdmYx YmxoeEtJSzF3dzhHVElWV2ZvTGlZMDZocnplYlZBb2M3a0REQmlRL0lPSy8rWk5ZWDByZmNB TGhBL3VCL2dtWTZSQUpQL1BJeDFTS2d4Q3RBUFpIdlBwb1VYKzkrQjdlZHJNbGtydVF6TElD SUhOdUF6VmxONHBMMFh5TnUwVkhLWVhEQVlSRER3RitESHBidjZrajh2b01Pb0xvTTdCOFVT T2gxQ2I1REhWbG5WaU81Q1FrNjV3OTdBby9NektwajBKU1FYSUNMVnpDQjhwK2lLR0ZBSW1a K3pHb0xBSzFyWjh2a0dZUGk2UmoxOEx5cTRvRW9UbWFvWHAzSkpNNEZjazNrVWp2YUpKS01L SGM3eldLdTlCOGhsdkZzNlZrRHJwWjFBcmp2d0Q2TklqR0p3L1ZyMi9sWFQ2RFR2SVJBUDEz aUE1RUxIdWw2RXRwWWlLY2FXZHpmb0xrSTRsK2dmQnNRSkw3Smd5U3h3ajRBcjhRZDVVU09s Z2dIRDBaMUZrUUhnZW1MWGxtclNqRlVmWXltVlpDZUFqaStRZWFjVG5OelFyZDNFeEY4V3NV dTJhS0lQbUFZRGVmWGtQeURlQlNiaWdqVGMwRjRWUHZnT2lIb1BlR1NQa0JrQVdJQVRCc0FQ MHBlT3Fhb3MyandZRUJZRXV6R3dHTFVVek5CWU1yZjh2ZE1kbUo0Z1lxbk1ibDRoK2wxQllO d1FrVjRLTmdGa0MwWFRWMEdua0t2eThRQStvTVJPZkNFNmNqQ0p0MWFjMGZiN3ljdndJbklP akk1RThsZ1pEOG1UWWt4MkpZelBIbTRISk1kWkVnbkxnVlZINEU2a0tRMDZyWnA0MnFlYThP cUd1aGNsWXpRUmdjemREalVNL2djMGkrajZ4MXlDa1BMWkVsb2RGdU9yMUJ3RlVZenVGaThW SXB6WTFvZ3pGeklUb2Q5TnRCUy9jOEZUN2gxRFR0VVA4K3VnZk1YTVRESzVwOW1ZTTRrc3hV bU1VM1VaeUNST1RxZ2ZhQllXRHFoMGJ4QkpJRlBNSXZ1VnVFcFhSbmVXeGZtUUZxQWVnaklX cFBYcmZKZDFwcWI0ZjVhZEFISXg1OGJqQXVkWENIVlU0MW81bk1RaFNmeWVRN3BDVTdwdVZC VmZmWElya1J3WGY0cnZoYktlVnBFSHh0UExSK0ZQVEpFTDIxcnpjNWJVRmtueFU4MG1EUWdG a0dHK1lpL3ZMUVlGM3k0STh4bm1uR01acnprWHk4S1RBa2dhRXdLRjVGY2dWd0lkOHFIZXlC RVB5Z0ZUb09oZWlyb0hjSFhVbWQ4TjFyMzNpWVQ3MnBGaTlDZEJUaXZuc0g4OUtIWnNEOTdt WThjQW1TK1EwNTBUNnY5akVqbW9CbEtCYlJ5bVdjSWw0cEliaTRBaDN2aCtoa2lQYXNta1Er ay83b0hCb2ljWHNOdW85RS9QR2V3YjRGUXpmN3hJNW1FbVA0RVNvQkNJVi9lb2JLQUVQZkZx RjREc2xsR0g3RzE4VExteDRFQzFwZzhoelFYd1M5TDBTams5ZGo4bGtaUEM4STBYS0lQZ2Ev dTdOWmZRbkRFNFllRGRISzkxQWMzK3RVWjh0UHlxWVZKQkJZejRrSStBZUthNUZjeVluaWla RVB3Y1hqUVI0SzBRbWc5Nmc1eHlMZEpFb3psOUk2M0Z3ZGJkRXlNTWNnYnJ0M3FHN0owTTlM dEo4WmcrRnNKQ2ZXaG5qbTh4M1NodGJXdytBYVZCU2drYnlPNG5jRVhJM21UdjZQV0RPQ3RJ Q0U3WGNDY3lTRTgwSFBnS2pGYjdXK1BQNUNVaWkxWDI3U0VnaVBRdHo2MTZHOFBjTmprcTdk VFR2ak9SWEpxU2dxRGFkbHBEdlMvZXZzZ0hRUzhEeUtXMmpoRmxxNW44UEZ1bzBQQUFUOGFp WjBId0RoWEFoM0J6MEJJcG0rSUpTUHY1QWxIOG02UFFUUnNZaWJueHpxV3pWOFpxemIzVlNZ eENlUmZKdUFjZGJzVmQvVWpDd2dwRzhHeFRvVUx4QndDeFZ1dy9BZ2g0bFZ3eGVBdXdJSTN3 N2RlNE0rQXFKM2daNEVvZkpiQjhkM3hiUXNacEp0aEZ0ME0yejRMT0tXWWRFaE9zeW1ielNT Z3prSXlXVW90dkxXQ0Q0OTBrRUtJR2xiMEF0R0o0b1ZWSGdBeVYwRVBJemdjZllaUWpqTVhR R01uUW5yZHdHOUowUnpRRStEYUZ3VmdLekxpbWZSQ0xrNjJ6VG9pOEI4SFhIREc4TkYrb2Ju WEthSG0xMFJYSVppdDk2MERaWERmMGdQc2JvY2Foc0l0anBkMHhwdkVQQUVBUThnZUJMSmM3 U3psTzFaamhCUnNZTC83SGhnTytpY0RucDdDTjhCK3QwUWJnN2hXSWdxL1FVMXhIc3hZbnlY RnZUUkRNNzZEb2dXd01zWEllN3VIRTVpTjN3bjlqM0ViTUVvRnFJNHVsK2tLVzl2ZEpwamJS Tjg2WUFoU0FRbVF0RkpoWFcxWHU5bEtKNm5oWmVSL0pPQVZTamVvTUlhSkowRVJGUllEOTBW b0xXYUR0MDF0dHFxTXg3Q1NSQk9nWEFhUkRNZzJneDBHNFR0TmNFWC9ZVTZKQjhNV2NPb2Vm b1ZvbVhRL1Rub3ZnMXhRelRjUkc1NHozSjltR2xuTkNjaE9SM0Y2Tnd6RVBvQW9SSjhpOEJU YXdRSndGVG9XNWtwSUt5RmM2UGF1UkZTaTVwVEs2QTdBSzJxWUVRSlF1MXpMS3Rma0JZOXl0 dnJIUDJ1Nmg5Yy9kUndGYmZobmQ1OHMxaUg1cnNvL2czQkV1ZkVBajRUbDlYWHhldGRtODg1 OVp1cnVSSDkzZ3VnZ3FBTndXZ0VvNEZ4d0ZoZ05OQU9vcVdHVHNJWDJZNzViRExqY2RlTlRk dnZQYjhUeEVMb25EdWNRUmorTUFEY0lDSitKbTVGc3orQ255SFFxYzhyNmJuTGpMTGhDNERy T3d0WDJQRWZMd3FTTERjbkRZTGV1bWRCem9PblRrVmNzMnE0aTlyR00vRGxhdkVpaGs4aitU U0NWMVBIaEFqUEJpMU4wUFBJa0krc2kwYUFpSitUOTZKa3hndE1hb1g2SFl1cU0xaEVjeEFY M295NGU2TkltOSs0Um9GZElUcTVsSjhDK3lDNEZrSG9wYW1GQnhCcFdpU1RJQ2ZJck1qNndT d2ZFZ1Z0UGpmSzJjbzhBK0lZV0gwODRrY2JWVmJ3Umpna1VoZ3VGa3RRZkFMRFVjRFRUbTJR MTB6T29pRmtncThoaXpDWjZoK1ZhOHVyMmlqb0prbEFyZ2Z4UXpEN0lCWmVqN2lpYzJPVHJJ MTNmUEQ1WWdNWGlGOFFzVGR3TG9JMWRyTzF5VDdDOEc0NEN0WVlUclY3TjVnRDRabVRFZC9k YU5QaE4vN0I4dWVMRll6bXY0RFp0WkZzVWFZR3JTaS9ZVmdJZnBLTjUzdWhNb3YyV0FybWs5 QnhLT0piOXd6SHZvT1IwOCtRdFp4a1dwbkFnUVNjZ1dTUDFNeFduekVQUGtsK2VmS2VCbnd1 Uzg1UVdrZVp6M0ZYejdKWFo5b3FpQzZCNkR6RWFhK09GUEVabVV2TGZ0bU1aaEtISXZrcWtq MVMwelR5SlBWbHpXK1NSY0dneVpkZzEwaWFSVlFIZ1Y0RTBmblE4US9FbVhva2ljM0lYbWQ1 Z1dsbkZJZFI0V1FrNzBIVjBqcDhZWkFGZ1dGTEV2U0dJUTBDbjlaZmU5UWxRckFTd3N0aHd3 VWpFWUpOQTRZK0tOcVl5RDRvVGtKeVVHMFZJUDkwamF4cDRFbGF3QW1VVDFwRW94QWtuV2VG WVFtWVMySGRsZkRGMXhEQ2pHUXgyVFJnNklNaVlITjJwTUtuZ1hrRVRFMWNpbGZHV25KSnRv RkNTYmxOTWcwRzNZQWZrUFpkdHZONjg0aTZRZDlkTlljNmZvWDQvQ2F6OXNXbUJVTnZNWUx6 R004NERpUGdFeWoyN1IxaDU1dmxha3YvbHA1YUlCV0dOQkI4dFVnbXYyQVpSRDhIY1NVOHVR Ung1aVkzMmRvbUNrTmR1ZDRvdXBtT1pCNktJMUc4QzRuTTVVTms5U2xrVmhpUzZ2T2tZRWNy SUxvRnpIVlErVDNpOEhXYnNpaVVNTlNYdTB6QVNtWlI0ZCtRSEZ3YlhGVEpQQVZObmpxcEcy ejVmYVo3akFEOUlvUjNncmtSMXQ0Qjg5YU9kRitnaEtGaFM4cElibUlLbzlnZndmdVJ6RUV4 RFlYSVBHQ29LVEI0ajAvdWdPalBZRzZIN3R0ZzFXTXd2M3NvNWlVcVlSaEo1dFFVdHFYQ2JD U3pVZXlGNU8wb1dnb0JJaEVHN2VzZ0c5RExRZDhQMGIxZzdvSG9ZZGl6czJ6OVN4aWFxVGtF UzJsbEZiTlE3RVRBemtoMlJES3pwa0hHWkFKRWFnOE4wSHNzQXYweVJNK0JmZ3E2SHdQektJ U1B3bzByUjJvL1FBbkR4bXBpTFdNcU1KMVd0Z2Ftb0ppTVlqS1N5UVNNUWpJR2hVTFFocUlO cGFQcVlIbHRJRm9MVVNkRXE2c2RYdEVLMEs5RDlBcVlwUkF0UTJ4WHJuOWRscktVcFN4bEtV dFp5bEtXd1NqL0h5SGwvZVBzYWdYQ0FBQUFBRWxGVGtTdVFtQ0MnKTsNCn0NCmZ1bmN0aW9u IG1zZF9hZG1pbl9jb2xvcnBpY2tlcl9tYXNrKCkNCnsNCgl3aGlsZShAb2JfZW5kX2NsZWFu KCkpOw0KCWhlYWRlcigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmciKTsNCgloZWFkZXIoIkV4 cGlyZXM6ICIuZGF0ZSgiciIsIHRpbWUoKSszNjAwKSk7DQoJaGVhZGVyKCJDYWNoZS1Db250 cm9sOiBwdWJsaWMiKTsNCgllY2hvIGJhc2U2NF9kZWNvZGUoJ2lWQk9SdzBLR2dvQUFBQU5T VWhFVWdBQUFHVUFBQUJsQ0FZQUFBQlVmQzNQQUFBQUIzUkpUVVVIMWdjT0NETUxOK1lUc1FB QUI1aEpSRUZVZU5ydFhkdFM1RG9NYktrRy92K0xqL2NKQ2diYjZwYmtaRGpGVkZITHhqZXBX emM3bVFEOGZWN3VZMy82L0NseFVnNzd2eEJxTHpUWEhlUHR4ZnBmRGtSMzN5djdYRWJJWFFL ZGFMdDYzdkYwdlJWSE93andydjFLMGpySFhMRkd1NUs3UG5ady9ReUlZOUp1aDJTUjVyVUdZ S3ZDc1hOVzF1N3FjOG0xeDRGRW53SGdKR2dueVQyaTExMEMybUhsbjhNVG8rZkw2SE1uK0s4 Q1F0Um1UeFZYWkFDenNaSk1xZ1ZsbGJWa2Z3UnpLT0NPalV5RG5OZUt4a2VOVjBpNVFxQ3Ix NmlNdDhDQVZrWmhDNit6WGFKWE5rVjIwZThtZUUwWEFhd2NMUG5PeXZBNHNFK3dvcmN4ZlR0 Q1k4WVQ3QUM1cHBDQ2pnVUtTbmF1V1FIWkRoaGZtUlFqaEdYQVZJRlhDY3EweldRY216NHFV WmJwazlrOG1oQzZXb1JNekp1WjN4YS9vM0hORkNtVm8veVR3TDNDM0NmbC9QYXZOVmw4bDZL V0NEMi8rZDlwMjFkUFdlMVkwYlhZaTR6TkdNcEptYmVrTUVjTkRGRlhneGoxTmFMWXNFU2tP RWJXaXBUblk0Y1JLRmdsUzBtNlJzN3hkY01XWFl2YXN2cWs1bmdFaEtpN1dpWUVzSlpiVVhB bWp3ZlhUbmhENnBxeWVSd0ZnTHF0U1NVbThrcUZTQ09LRXFzWVdYVDJ4WmJMcWlkQUJIcFZK WHFTaEt6eDdQcXJ4a21SRXVVSlZoZ2xwTEViT1lXc0NDQ2ZrRHJMSng2UVh3SGVNdUhMZ3FQ cEFlMEdtU3E4SlVPQkp5eTVJaU1LdnkvblljT1hFV2RaVm1qTHRMTms3aW9zMzVBNjg1NE1X ZXIvdzBTZmZRaEJBVGlyU0FZWWhnUWppYWg2L25LT3pPWXhLb250NG11MnlBVjN5UVRSc0l3 bEpRdCtWQmljSUlRcENqeTRacUlYMHZraG81Y2F2bFpBZzdUaWpHS1p0c3A0Rnl6OGhFRjlr bEo5SmpnNkgxTkp0QVpTUEFESUMrU3BaRWxFclk1Wm1Nb0pEY240Q2tBeXBMQnlaandqbFA4 UlZFMkRLQUtZSElJRGhQaFR4WlJOckZWU3VrSXZuZWgzbHFBY1hVUktRQ0FPVFI3a0I4RXZr WHppd1FsbVU0aEdxMFF4ZDFSL3ZxNWpEV3RKRDA0TWNyUEluR3VwSWEwS0dMTk9CdFFqaEQ4 SWNGUXZRaEp3Tk16UjhlTko4cDhKV2hIbWszRXBUekhTRTZyQVlxUEFLcUg3QkJSZktIeWFs SW9oZk9ydzJKVER6RDVEQ1dOVjByQ0k0VXFJWWF6M0ZISDBmQS9CSXdCK2x3NGhqck43b0dq WDNXbkpmb2dRWi9CNFRMeGs5UmgvZENPSjlhem85aXViZTN3WEFoWWd6T0orMVNNNnZjeWpr cGdwZ1MxUlZWVVNPQk82VnVSV3dNdVFseWI4UVpTckk3bnBPMVU5dVZDT2VqSTBNY1E2a2JU Vk9lWE40d2hPanBXYlhPejkrNTN3RUNxMENrR3prT2VpOWJ0QzlDTlJHVEgzM3RYaTRPUnhp Q2ZEa2lldmVTRW5VYVF3WHdnMXdsT1VlKzFPSHZIc2tuWkhqR2YrajRWWGVZWFlTQ0VuWXk2 cmdDZkJVNnh4cHdzYTU0dmtjektFVFhQS1k4TnNWaUFyQU9VTlljUURNRTdvMlJFbVAvY3Bi NHNKdmxvMmttQTVXZG1vbFk0VHlUbXFlQ3I1cE10QXB3WEtqcFRUQ1JBaU1JNzhmc0tKRTJF V1VFK1cweXpaRkNrb1dzYXV4TXlVbHBrU3R1c1l4UXR5QThJeHk1c0lycktZQjlXU1F6K2Y2 aVlTalpFQXdwcStJK1dkcUJUUWJCV08yamxSZGZ6cXJLeHI3MUtTNmNOVEtxZWEzY2ZkSzRO d29YLzNLYTgzNjdmTFo5UHdoU1pRTzQrN00wZnZTQkRXQ1haVzNoRjVDcU5vZEZTU0JRSEUr aWlRZHRkdFpUQjNIdDh1ZU9MamxOSVpVbkFSS1ZiMWxPeDlhZnY3YWJzUDlQbHVHSWFVcUFw VExSUEVNWHNuRUhjUXdEd1hzSDN1NjIyU0NMRWhwYlJnY1h3SENWVWpVNytPb2VhdzhaeFRJ RllSYUhpd1FYM0NFSW0rdU1ETHVwN1NuQ2I2VGdYUURBQ2paRGRSbWVlaW5aUVhLMUxla3lH ZzQyc0pwNzcyZ0J1TkNjSHQ2TWo0UHowRm04TklDTUtoNE9KVlVwRDBtbTZQUkhIdDhYR1Rx d29ra21PWlVJS0NRV1RHWW5GUXF1S0FMSmFya2hnRTJDaUVFelNGSWxTVVB4QW1PMGpaSHJO QVVDaXJNSWlLcW52dGpGNWVrQU9iUjNSbkwwLzRrZWk3WHBjeHEwWVlVaURLVUNVdVkrbWVm RUtVOWFMbDBUMklNSVltTjBiQi9TRUFYdkgrampaMnZXbjRRdEthVkNXeEtSTTcxZ1JSV0tq ektnOG4rdVladUYzYkQwOUJ3Wkk3eDFhQjczelRFSXI2cWJKTlMrTHNRZ0QvVHEyT2w2UXA0 NUFJZngyR0Zubk0wbFBlRXdJcEFyQXZhYXNBZ2FJT3loZ21CSmF1cmNLWG5WeFVhTHRDSHBZ SXUwakdvZVFVRkFDc0VwQnA2elFTUlc0ZzkwcmRvNlRnd0Z6ZDgxNzJpdlJFbjVBVUZCYnFC a1lOUWV6WWpBd245Uit6UkorWkdBMGdkMWxxNTd3Vmc4d2F3TlJUdWdIdEFvUE5JUjNFUDMv UGN3Z0dVY1VDei9zVWtFcDNrWUlEeHRCTnZob3hxcko5QzE4WnBSbExpOGJ1WEg3VmZ5UVVI MktZVm9HUGNoRDlOd1MrZWtyR2FycXNyOXVLTSsyakdCYTd4bng2U3BkaUhlMjdoSm41aXhX NzY1MzZLRExzakdCS0NrUlhYUUhIZ01pdTI5SHZ0L3orSTN4ZEJVVFgrSlVCN0x4cjkyZXVt TGY5Z1F5Qkk2bi90N092YUNEaml0Z2tXS1dOSVFXRnNXemJIV3VNWjFJaTVhTUtadGRYR1lz Q0FWV2dWZVBjZWVMSXpEOGpwY042aGlENEIySFBJU2NMV0FkcHA4WXdmYWI3RkhheW5XVm5C ZTVVOW9RZUZablphMk9XNk5VWVBvZ2NrMUVLTHpJSEcxTGJaRjU1U2tXbzN6em1GZVRiZWtw bDRpdmFUNDNkQVR5dXdPWHI1ckVpZkZUYXN2UHZ3dDVvSVBudWZremZFWkVTNVE5bXdVR1dv U0RXWU9Xb0FuZm5PQ3A4WFNuUXlmbXNZZXk0UU4reDJxZTg0c2R1TUlZN1BzTUEvSWUvejB0 OS9nSEtPWFBsWmM4MVd3QUFBQUJKUlU1RXJrSmdnZz09Jyk7DQp9DQpmdW5jdGlvbiBtc2Rf YWRtaW5fY29sb3JwaWNrZXJfbWFya2VyKCkNCnsNCgl3aGlsZShAb2JfZW5kX2NsZWFuKCkp Ow0KCWhlYWRlcigiQ29udGVudC1UeXBlOiBpbWFnZS9wbmciKTsNCgloZWFkZXIoIkV4cGly ZXM6ICIuZGF0ZSgiciIsIHRpbWUoKSszNjAwKSk7DQoJaGVhZGVyKCJDYWNoZS1Db250cm9s OiBwdWJsaWMiKTsNCgllY2hvIGJhc2U2NF9kZWNvZGUoJ2lWQk9SdzBLR2dvQUFBQU5TVWhF VWdBQUFHVUFBQUJsQ0FZQUFBQlVmQzNQQUFBQUIzUkpUVVVIMWdjT0NETUxOK1lUc1FBQUI1 aEpSRUZVZU5ydFhkdFM1RG9NYktrRy92K0xqL2NKQ2diYjZwYmtaRGpGVkZITHhqZXBXemM3 bVFEOGZWN3VZMy82L0NseFVnNzd2eEJxTHpUWEhlUHR4ZnBmRGtSMzN5djdYRWJJWFFLZGFM dDYzdkYwdlJWSE93andydjFLMGpySFhMRkd1NUs3UG5ady9ReUlZOUp1aDJTUjVyVUdZS3ZD c1hOVzF1N3FjOG0xeDRGRW53SGdKR2dueVQyaTExMEMybUhsbjhNVG8rZkw2SE1uK0s4Q1F0 Um1UeFZYWkFDenNaSk1xZ1ZsbGJWa2Z3UnpLT0NPalV5RG5OZUt4a2VOVjBpNVFxQ3IxNmlN dDhDQVZrWmhDNit6WGFKWE5rVjIwZThtZUUwWEFhd2NMUG5PeXZBNHNFK3dvcmN4ZlR0Q1k4 WVQ3QUM1cHBDQ2pnVUtTbmF1V1FIWkRoaGZtUlFqaEdYQVZJRlhDY3EweldRY216NHFVWmJw azlrOG1oQzZXb1JNekp1WjN4YS9vM0hORkNtVm8veVR3TDNDM0NmbC9QYXZOVmw4bDZLV0NE Mi8rZDlwMjFkUFdlMVkwYlhZaTR6TkdNcEptYmVrTUVjTkRGRlhneGoxTmFMWXNFU2tPRWJX aXBUblk0Y1JLRmdsUzBtNlJzN3hkY01XWFl2YXN2cWs1bmdFaEtpN1dpWUVzSlpiVVhBbWp3 ZlhUbmhENnBxeWVSd0ZnTHF0U1NVbThrcUZTQ09LRXFzWVdYVDJ4WmJMcWlkQUJIcFZKWHFT aEt6eDdQcXJ4a21SRXVVSlZoZ2xwTEViT1lXc0NDQ2ZrRHJMSng2UVh3SGVNdUhMZ3FQcEFl MEdtU3E4SlVPQkp5eTVJaU1LdnkvblljT1hFV2RaVm1qTHRMTms3aW9zMzVBNjg1NE1XZXIv dzBTZmZRaEJBVGlyU0FZWWhnUWppYWg2L25LT3pPWXhLb250NG11MnlBVjN5UVRSc0l3bEpR dCtWQmljSUlRcENqeTRacUlYMHZraG81Y2F2bFpBZzdUaWpHS1p0c3A0Rnl6OGhFRjlrbEo5 SmpnNkgxTkp0QVpTUEFESUMrU3BaRWxFclk1Wm1Nb0pEY240Q2tBeXBMQnlaandqbFA4UlZF MkRLQUtZSElJRGhQaFR4WlJOckZWU3VrSXZuZWgzbHFBY1hVUktRQ0FPVFI3a0I4RXZrWHpp d1FsbVU0aEdxMFF4ZDFSL3ZxNWpEV3RKRDA0TWNyUEluR3VwSWEwS0dMTk9CdFFqaEQ4SWNG UXZRaEp3Tk16UjhlTko4cDhKV2hIbWszRXBUekhTRTZyQVlxUEFLcUg3QkJSZktIeWFsSW9o Zk9ydzJKVER6RDVEQ1dOVjByQ0k0VXFJWWF6M0ZISDBmQS9CSXdCK2x3NGhqck43b0dqWDNX bkpmb2dRWi9CNFRMeGs5UmgvZENPSjlhem85aXViZTN3WEFoWWd6T0orMVNNNnZjeWprcGdw Z1MxUlZWVVNPQk82VnVSV3dNdVFseWI4UVpTckk3bnBPMVU5dVZDT2VqSTBNY1E2a2JUVk9l WE40d2hPanBXYlhPejkrNTN3RUNxMENrR3prT2VpOWJ0QzlDTlJHVEgzM3RYaTRPUnhpQ2ZE a2lldmVTRW5VYVF3WHdnMXdsT1VlKzFPSHZIc2tuWkhqR2YrajRWWGVZWFlTQ0VuWXk2cmdD ZkJVNnh4cHdzYTU0dmtjektFVFhQS1k4TnNWaUFyQU9VTlljUURNRTdvMlJFbVAvY3BiNHNK dmxvMmttQTVXZG1vbFk0VHlUbXFlQ3I1cE10QXB3WEtqcFRUQ1JBaU1JNzhmc0tKRTJFV1VF K1cweXpaRkNrb1dzYXV4TXlVbHBrU3R1c1l4UXR5QThJeHk1c0lycktZQjlXU1F6K2Y2aVlT alpFQXdwcStJK1dkcUJUUWJCV08yamxSZGZ6cXJLeHI3MUtTNmNOVEtxZWEzY2ZkSzROd29Y LzNLYTgzNjdmTFo5UHdoU1pRTzQrN00wZnZTQkRXQ1haVzNoRjVDcU5vZEZTU0JRSEUraWlR ZHRkdFpUQjNIdDh1ZU9MamxOSVpVbkFSS1ZiMWxPeDlhZnY3YWJzUDlQbHVHSWFVcUFwVExS UEVNWHNuRUhjUXdEd1hzSDN1NjIyU0NMRWhwYlJnY1h3SENWVWpVNytPb2VhdzhaeFRJRllS YUhpd1FYM0NFSW0rdU1ETHVwN1NuQ2I2VGdYUURBQ2paRGRSbWVlaW5aUVhLMUxla3lHZzQy c0pwNzcyZ0J1TkNjSHQ2TWo0UHowRm04TklDTUtoNE9KVlVwRDBtbTZQUkhIdDhYR1Rxd29r a21PWlVJS0NRV1RHWW5GUXF1S0FMSmFya2hnRTJDaUVFelNGSWxTVVB4QW1PMGpaSHJOQVVD aXJNSWlLcW52dGpGNWVrQU9iUjNSbkwwLzRrZWk3WHBjeHEwWVlVaURLVUNVdVkrbWVmRUtV OWFMbDBUMklNSVltTjBiQi9TRUFYdkgrampaMnZXbjRRdEthVkNXeEtSTTcxZ1JSV0tqektn OG4rdVladUYzYkQwOUJ3Wkk3eDFhQjczelRFSXI2cWJKTlMrTHNRZ0QvVHEyT2w2UXA0NUFJ ZngyR0Zubk0wbFBlRXdJcEFyQXZhYXNBZ2FJT3loZ21CSmF1cmNLWG5WeFVhTHRDSHBZSXUw akdvZVFVRkFDc0VwQnA2elFTUlc0ZzkwcmRvNlRnd0Z6ZDgxNzJpdlJFbjVBVUZCYnFCa1lO UWV6WWpBd245Uit6UkorWkdBMGdkMWxxNTd3Vmc4d2F3TlJUdWdIdEFvUE5JUjNFUDMvUGN3 Z0dVY1VDei9zVWtFcDNrWUlEeHRCTnZob3hxcko5QzE4WnBSbExpOGJ1WEg3VmZ5UVVIMktZ Vm9HUGNoRDlOd1MrZWtyR2FycXNyOXVLTSsyakdCYTd4bng2U3BkaUhlMjdoSm41aXhXNzY1 MzZLRExzakdCS0NrUlhYUUhIZ01pdTI5SHZ0L3orSTN4ZEJVVFgrSlVCN0x4cjkyZXVtTGY5 Z1F5Qkk2bi90N092YUNEaml0Z2tXS1dOSVFXRnNXemJIV3VNWjFJaTVhTUtadGRYR1lzQ0FW V2dWZVBjZWVMSXpEOGpwY042aGlENEIySFBJU2NMV0FkcHA4WXdmYWI3RkhheW5XVm5CZTVV OW9RZUZablphMk9XNk5VWVBvZ2NrMUVLTHpJSEcxTGJaRjU1U2tXbzN6em1GZVRiZWtwbDRp dmFUNDNkQVR5dXdPWHI1ckVpZkZUYXN2UHZ3dDVvSVBudWZremZFWkVTNVE5bXdVR1dvU0RX WU9Xb0FuZm5PQ3A4WFNuUXlmbXNZZXk0UU4reDJxZTg0c2R1TUlZN1BzTUEvSWUvejB0OS9n SEtPWFBsWmM4MVd3QUFBQUJKUlU1RXJrSmdnZz09Jyk7DQp9DQoiO3M6NDoidHlwZSI7czox OiIzIjtzOjQ6ImhlbHAiO3M6MTI1MzoiPGgxPkNvbG9yIFBpY2tlciBmb3IgdXNlIHdpdGgg PGEgaHJlZj0iaHR0cDovL2phbWVzbXVzcHJhdHQuY29tL3dpZGVzY3JlZW4vIj5XaWRlc2Ny ZWVuIFRlbXBsYXRlPC9hPiBieSA8YSBocmVmPSJodHRwOi8vd3d3LmphbWVzbXVzcHJhdHQu Y29tIj5KYW1lcyBNdXNwcmF0dDwvYT4gb3IgYW55IHRpbWUgeW91IHdhbnQgYSAgY3VzdG9t IGNvbG9yIGFzc29jaWF0ZWQgd2l0aCBhbiBhcnRpY2xlLjwvaDE+DQogICAgPHVsPjxsaT5j b2xvciBwaWNrZXIgamF2YXNjcmlwdCBieSA8YSBocmVmPSJodHRwOi8vYWNrby5uZXQvZGV2 L2ZhcmJ0YXN0aWMiPlN0ZXZlbiBXaXR0ZW5zPC9hPjwvbGk+PC91bD4NCjxoMT5IaXN0b3J5 OjwvaDE+DQo8dWw+PGxpPlByaW9yIHZlcnNpb24gdXNlZCBtb290b29scyBhbmQgbW9vUmFp bmJvdyBjb2xvcnBpY2tlciBieSBEamFtaWwgTGVnYXRvLiBBdCB0aGUgc3VnZ2VzdGlvbiBv ZiA8YSBocmVmPSJodHRwOi8vam1kZWxkaW4uY29tLyI+Sm9uLU1pY2hhZWwgRGVsZGluPC9h PiB0aGlzIHdhcyByZXBsYWNlZCBieSBhIGpxdWVyeSB2ZXJzaW9uIGJ5IDxhIGhyZWY9Imh0 dHA6Ly9hY2tvLm5ldC9kZXYvZmFyYnRhc3RpYyI+U3RldmVuIFdpdHRlbnM8L2E+LjwvbGk+ PC91bD4NCjxoMT5UbyB1c2U6PC9oMT4NCjxvbD4NCjxsaT5JbnN0YWxsIHVzaW5nIHRleHRw YXR0ZXJuJ3MgcGx1Z2luIHRhYi48L2xpPg0KPGxpPkFjdGl2YXRlIHRoZSBwbHVnaW48L2xp Pg0KPC9vbD4NCjxwPkJ5IGRlZmF1bHQgdGhpcyBwbHVnaW4gYWRkcyBhIGNvbG9yd2hlZWwg dG8gdGhlIGN1c3RvbS0xIGZpZWxkIGluIHRoZSB3cml0ZSB0YWIuIFlvdSBjYW4gY2hhbmdl IHdoaWNoIGN1c3RvbSBmaWVsZCBpcyB1c2VkIGluIHRoZSBvcHRpb25zIHRhYiB1bmRlciBF eHRlbnN0aW9ucy4gPC9wPg0KPHA+VGhhbmsgeW91IHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cu amFtZXNtdXNwcmF0dC5jb20iPkphbWVzIE11c3ByYXR0PC9hPiBmb3IgaGlzIHdvbmRlcmZ1 bCA8YSBocmVmPSJodHRwOi8vamFtZXNtdXNwcmF0dC5jb20vd2lkZXNjcmVlbi8iPldpZGVz Y3JlZW4gVGVtcGxhdGU8L2E+LCA8YSBocmVmPSJodHRwOi8vYWNrby5uZXQvZGV2L2ZhcmJ0 YXN0aWMiPlN0ZXZlbiBXaXR0ZW5zPC9hPiBmb3IgdGhlIGZhcmJ0YXN0aWMgY29sb3IgcGlj a2VyIGFuZCB0byA8YSBocmVmPSJodHRwOi8vam1kZWxkaW4uY29tLyI+Sm9uLU1pY2hhZWwg RGVsZGluPC9hPiBmb3IgaGlzIHN1Z2dlc3Rpb25zLjwvcD4iO3M6NToib3JkZXIiO3M6MToi NSI7czozOiJtZDUiO3M6MzI6ImM3NTNjY2I4MjA1ZWZiMzA3MTU4OTYzNTkyYzk2OGM1Ijt9